403Webshell
Server IP : 46.105.57.169  /  Your IP : 216.73.217.35
Web Server : Apache
System : Linux webm002.cluster120.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User : verseaumee ( 152031)
PHP Version : 8.5.7
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/verseaumee/123click/assets/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/verseaumee/123click/assets/elementor-pro.tar
modules/role-manager/module.php000064400000004700150755004300012563 0ustar00<?php
namespace ElementorPro\Modules\RoleManager;

use ElementorPro\Plugin;
use ElementorPro\Base\Module_Base;
use Elementor\Core\RoleManager\Role_Manager as RoleManagerBase;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	const ROLE_MANAGER_OPTION_NAME = 'role-manager';

	public function get_role_manager_options() {
		return get_option( 'elementor_' . self::ROLE_MANAGER_OPTION_NAME, [] );
	}

	public function get_name() {
		return 'role-manager';
	}

	public function save_advanced_options( $input ) {
		return $input;
	}

	public function get_user_restrictions() {
		return $this->get_role_manager_options();
	}

	public function display_role_controls( $role_slug, $role_data ) {
		static $options = false;
		if ( ! $options ) {
			$options = [
				'excluded_options' => Plugin::elementor()->role_manager->get_role_manager_options(),
				'advanced_options' => $this->get_role_manager_options(),
			];
		}
		$id = self::ROLE_MANAGER_OPTION_NAME . '_' . $role_slug . '_design';
		$name = 'elementor_' . self::ROLE_MANAGER_OPTION_NAME . '[' . $role_slug . '][]';
		$checked = isset( $options['advanced_options'][ $role_slug ] ) ? $options['advanced_options'][ $role_slug ] : [];

		?>
		<label for="<?php echo esc_attr( $id ); ?>">
			<input type="checkbox" name="<?php echo esc_attr( $name ); ?>" id="<?php echo esc_attr( $id ); ?>" value="design" <?php checked( in_array( 'design', $checked ), true ); ?>>
			<?php esc_html_e( 'Access to edit content only', 'elementor-pro' ); ?>
		</label>
		<?php
	}

	public function register_admin_fields( RoleManagerBase $role_manager ) {
		$role_manager->add_section( 'general', 'advanced-role-manager', [
			'fields' => [
				self::ROLE_MANAGER_OPTION_NAME => [
					'field_args' => [
						'type' => 'raw_html',
						'html' => '',
					],
					'setting_args' => [
						'sanitize_callback' => [ $this, 'save_advanced_options' ],
					],
				],
			],
		] );
	}

	public function __construct() {
		parent::__construct();
		if ( is_admin() ) {
			add_action( 'elementor/admin/after_create_settings/' . RoleManagerBase::PAGE_ID, [ $this, 'register_admin_fields' ], 100 );
		}
		remove_action( 'elementor/role/restrictions/controls', [ Plugin::elementor()->role_manager, 'get_go_pro_link_html' ] );
		add_action( 'elementor/role/restrictions/controls', [ $this, 'display_role_controls' ], 10, 2 );
		add_filter( 'elementor/editor/user/restrictions', [ $this, 'get_user_restrictions' ] );
	}
}
modules/scroll-snap/module.php000064400000007714150755004300012457 0ustar00<?php
namespace ElementorPro\Modules\ScrollSnap;

use Elementor\Core\DocumentTypes\PageBase;
use Elementor\Controls_Manager;
use ElementorPro\Base\Module_Base;
use Elementor\Controls_Stack;
use Elementor\Core\Experiments\Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function __construct() {
		parent::__construct();

		$this->add_actions();
	}

	public function get_name() {
		return 'scroll-snap';
	}

	public static function get_experimental_data() {
		return [
			'name' => 'e_scroll_snap',
			'title' => esc_html__( 'Scroll Snap', 'elementor-pro' ),
			'description' => esc_html__( 'Customize how visitors scroll through your site. Scroll Snap makes the viewport stop or pause on a specific position of a section when scrolling ends.', 'elementor-pro' )
				. ' <a href="https://go.elementor.com/wp-dash-scroll-snap" target="_blank">'
				. esc_html__( 'Learn More', 'elementor-pro' ) . '</a>',
			'release_status' => Manager::RELEASE_STATUS_BETA,
			'new_site' => [
				'default_active' => true,
				'minimum_installation_version' => '3.5.0-beta',
			],
		];
	}

	public function register_controls( Controls_Stack $controls_stack, $section_id ) {

		if ( ! $controls_stack instanceof PageBase || 'section_custom_css_pro' !== $section_id ) {
			return;
		}

		$scroll_snap_children = '.elementor-section:not(.elementor-inner-section), .elementor-location-header, .elementor-location-footer, .page-header, .site-header, .elementor-add-section';

		$controls_stack->start_controls_section(
			'section_scroll_snap',
			[
				'label' => esc_html__( 'Scroll Snap', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_ADVANCED,
			]
		);

		$controls_stack->add_control(
			'scroll_snap',
			[
				'label' => esc_html__( 'Scroll Snap', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'description' => esc_html__( 'Scroll Snap makes the viewport stop on a specific position of a section when scrolling ends.', 'elementor-pro' ),
				'selectors' => [
					'html' => 'height: 100vh; margin: 0; overflow: hidden;',
					'body' => 'height: 100vh; overflow: auto; scroll-snap-type: y mandatory;',
				],
				'frontend_available' => true,
			]
		);

		$controls_stack->add_responsive_control(
			'scroll_snap_position',
			[
				'label' => esc_html__( 'Snap Position', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'Top', 'elementor-pro' ),
					'center' => esc_html__( 'Center', 'elementor-pro' ),
					'end' => esc_html__( 'Bottom', 'elementor-pro' ),
				],
				'selectors_dictionary' => [
					'' => 'start',
				],
				'condition' => [
					'scroll_snap!' => '',
				],
				'selectors' => [
					$scroll_snap_children => 'scroll-snap-align: {{VALUE}}',
				],
			]
		);

		$controls_stack->add_responsive_control(
			'scroll_snap_padding',
			[
				'label' => esc_html__( 'Scroll Padding', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 200,
					],
				],
				'condition' => [
					'scroll_snap!' => '',
				],
				'selectors' => [
					'body' => 'scroll-padding: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$controls_stack->add_responsive_control(
			'force_stop',
			[
				'label' => esc_html__( 'Scroll Snap Stop', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'Normal', 'elementor-pro' ),
					'always' => esc_html__( 'Always', 'elementor-pro' ),
				],
				'selectors_dictionary' => [
					'' => 'normal',
				],
				'condition' => [
					'scroll_snap!' => '',
				],
				'selectors' => [
					$scroll_snap_children => 'scroll-snap-stop: {{VALUE}}',
				],
			]
		);

		$controls_stack->end_controls_section();
	}

	private function add_actions() {
		add_action( 'elementor/element/after_section_end', [ $this, 'register_controls' ], 10, 2 );
	}
}
modules/flip-box/widgets/flip-box.php000064400000120432150755004300013634 0ustar00<?php
namespace ElementorPro\Modules\FlipBox\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Background;
use Elementor\Group_Control_Css_Filter;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Image_Size;
use Elementor\Group_Control_Typography;
use Elementor\Icons_Manager;
use Elementor\Utils;
use ElementorPro\Base\Base_Widget;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Flip_Box extends Base_Widget {

	public function get_name() {
		return 'flip-box';
	}

	public function get_title() {
		return esc_html__( 'Flip Box', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-flip-box';
	}

	protected function register_controls() {

		$this->start_controls_section(
			'section_side_a_content',
			[
				'label' => esc_html__( 'Front', 'elementor-pro' ),
			]
		);

		$this->start_controls_tabs( 'side_a_content_tabs' );

		$this->start_controls_tab( 'side_a_content_tab', [ 'label' => esc_html__( 'Content', 'elementor-pro' ) ] );

		$this->add_control(
			'graphic_element',
			[
				'label' => esc_html__( 'Graphic Element', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'none' => [
						'title' => esc_html__( 'None', 'elementor-pro' ),
						'icon' => 'eicon-ban',
					],
					'image' => [
						'title' => esc_html__( 'Image', 'elementor-pro' ),
						'icon' => 'fa fa-picture-o',
					],
					'icon' => [
						'title' => esc_html__( 'Icon', 'elementor-pro' ),
						'icon' => 'eicon-star',
					],
				],
				'default' => 'icon',
			]
		);

		$this->add_control(
			'image',
			[
				'label' => esc_html__( 'Choose Image', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
				'default' => [
					'url' => Utils::get_placeholder_image_src(),
				],
				'dynamic' => [
					'active' => true,
				],
				'condition' => [
					'graphic_element' => 'image',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Image_Size::get_type(),
			[
				'name' => 'image', // Actually its `image_size`
				'default' => 'thumbnail',
				'condition' => [
					'graphic_element' => 'image',
				],
			]
		);

		$this->add_control(
			'selected_icon',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'fa4compatibility' => 'icon',
				'default' => [
					'value' => 'fas fa-star',
					'library' => 'fa-solid',
				],
				'condition' => [
					'graphic_element' => 'icon',
				],
			]
		);

		$this->add_control(
			'icon_view',
			[
				'label' => esc_html__( 'View', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'default' => esc_html__( 'Default', 'elementor-pro' ),
					'stacked' => esc_html__( 'Stacked', 'elementor-pro' ),
					'framed' => esc_html__( 'Framed', 'elementor-pro' ),
				],
				'default' => 'default',
				'condition' => [
					'graphic_element' => 'icon',
				],
			]
		);

		$this->add_control(
			'icon_shape',
			[
				'label' => esc_html__( 'Shape', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'circle' => esc_html__( 'Circle', 'elementor-pro' ),
					'square' => esc_html__( 'Square', 'elementor-pro' ),
				],
				'default' => 'circle',
				'condition' => [
					'icon_view!' => 'default',
					'graphic_element' => 'icon',
				],
			]
		);

		$this->add_control(
			'title_text_a',
			[
				'label' => esc_html__( 'Title & Description', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'This is the heading', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Enter your title', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
				'label_block' => true,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'description_text_a',
			[
				'label' => esc_html__( 'Description', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'default' => esc_html__( 'Lorem ipsum dolor sit amet consectetur adipiscing elit dolor', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Enter your description', 'elementor-pro' ),
				'separator' => 'none',
				'dynamic' => [
					'active' => true,
				],
				'rows' => 10,
				'show_label' => false,
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'side_a_background_tab', [ 'label' => esc_html__( 'Background', 'elementor-pro' ) ] );

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'background_a',
				'types' => [ 'classic', 'gradient' ],
				'selector' => '{{WRAPPER}} .elementor-flip-box__front',
			]
		);

		$this->add_control(
			'background_overlay_a',
			[
				'label' => esc_html__( 'Background Overlay', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__overlay' => 'background-color: {{VALUE}};',
				],
				'separator' => 'before',
				'condition' => [
					'background_a_image[id]!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Css_Filter::get_type(),
			[
				'name' => 'background_overlay_a_filters',
				'selector' => '{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__overlay',
				'condition' => [
					'background_overlay_a!' => '',
				],
			]
		);

		$this->add_control(
			'background_overlay_a_blend_mode',
			[
				'label' => esc_html__( 'Blend Mode', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'Normal', 'elementor-pro' ),
					'multiply' => 'Multiply',
					'screen' => 'Screen',
					'overlay' => 'Overlay',
					'darken' => 'Darken',
					'lighten' => 'Lighten',
					'color-dodge' => 'Color Dodge',
					'color-burn' => 'Color Burn',
					'hue' => 'Hue',
					'saturation' => 'Saturation',
					'color' => 'Color',
					'exclusion' => 'Exclusion',
					'luminosity' => 'Luminosity',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__overlay' => 'mix-blend-mode: {{VALUE}}',
				],
				'condition' => [
					'background_overlay_a!' => '',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();

		$this->start_controls_section(
			'section_side_b_content',
			[
				'label' => esc_html__( 'Back', 'elementor-pro' ),
			]
		);

		$this->start_controls_tabs( 'side_b_content_tabs' );

		$this->start_controls_tab( 'side_b_content_tab', [ 'label' => esc_html__( 'Content', 'elementor-pro' ) ] );

		$this->add_control(
			'title_text_b',
			[
				'label' => esc_html__( 'Title & Description', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'This is the heading', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Enter your title', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
				'label_block' => true,
			]
		);

		$this->add_control(
			'description_text_b',
			[
				'label' => esc_html__( 'Description', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'default' => esc_html__( 'Lorem ipsum dolor sit amet consectetur adipiscing elit dolor', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Enter your description', 'elementor-pro' ),
				'separator' => 'none',
				'dynamic' => [
					'active' => true,
				],
				'rows' => 10,
				'show_label' => false,
			]
		);

		$this->add_control(
			'button_text',
			[
				'label' => esc_html__( 'Button Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Click Here', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'link',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'link_click',
			[
				'label' => esc_html__( 'Apply Link On', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'box' => esc_html__( 'Whole Box', 'elementor-pro' ),
					'button' => esc_html__( 'Button Only', 'elementor-pro' ),
				],
				'default' => 'button',
				'condition' => [
					'link[url]!' => '',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'side_b_background_tab', [ 'label' => esc_html__( 'Background', 'elementor-pro' ) ] );

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'background_b',
				'types' => [ 'classic', 'gradient' ],
				'selector' => '{{WRAPPER}} .elementor-flip-box__back',
			]
		);

		$this->add_control(
			'background_overlay_b',
			[
				'label' => esc_html__( 'Background Overlay', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__overlay' => 'background-color: {{VALUE}};',
				],
				'separator' => 'before',
				'condition' => [
					'background_b_image[id]!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Css_Filter::get_type(),
			[
				'name' => 'background_overlay_b_filters',
				'selector' => '{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__overlay',
				'condition' => [
					'background_overlay_b!' => '',
				],
			]
		);

		$this->add_control(
			'background_overlay_b_blend_mode',
			[
				'label' => esc_html__( 'Blend Mode', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'Normal', 'elementor-pro' ),
					'multiply' => 'Multiply',
					'screen' => 'Screen',
					'overlay' => 'Overlay',
					'darken' => 'Darken',
					'lighten' => 'Lighten',
					'color-dodge' => 'Color Dodge',
					'color-burn' => 'Color Burn',
					'hue' => 'Hue',
					'saturation' => 'Saturation',
					'color' => 'Color',
					'exclusion' => 'Exclusion',
					'luminosity' => 'Luminosity',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__overlay' => 'mix-blend-mode: {{VALUE}}',
				],
				'condition' => [
					'background_overlay_b!' => '',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();

		$this->start_controls_section(
			'section_box_settings',
			[
				'label' => esc_html__( 'Settings', 'elementor-pro' ),
			]
		);

		$this->add_responsive_control(
			'height',
			[
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 100,
						'max' => 1000,
					],
					'vh' => [
						'min' => 10,
						'max' => 100,
					],
				],
				'size_units' => [ 'px', 'vh' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box' => 'height: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 200,
					],
				],
				'separator' => 'after',
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__layer, {{WRAPPER}} .elementor-flip-box__layer__overlay' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'flip_effect',
			[
				'label' => esc_html__( 'Flip Effect', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'flip',
				'options' => [
					'flip' => 'Flip',
					'slide' => 'Slide',
					'push' => 'Push',
					'zoom-in' => 'Zoom In',
					'zoom-out' => 'Zoom Out',
					'fade' => 'Fade',
				],
				'prefix_class' => 'elementor-flip-box--effect-',
			]
		);

		$this->add_control(
			'flip_direction',
			[
				'label' => esc_html__( 'Flip Direction', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'up',
				'options' => [
					'left' => esc_html__( 'Left', 'elementor-pro' ),
					'right' => esc_html__( 'Right', 'elementor-pro' ),
					'up' => esc_html__( 'Up', 'elementor-pro' ),
					'down' => esc_html__( 'Down', 'elementor-pro' ),
				],
				'condition' => [
					'flip_effect!' => [
						'fade',
						'zoom-in',
						'zoom-out',
					],
				],
				'prefix_class' => 'elementor-flip-box--direction-',
			]
		);

		$this->add_control(
			'flip_3d',
			[
				'label' => esc_html__( '3D Depth', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'return_value' => 'elementor-flip-box--3d',
				'default' => '',
				'prefix_class' => '',
				'condition' => [
					'flip_effect' => 'flip',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_a',
			[
				'label' => esc_html__( 'Front', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'padding_a',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__overlay' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'alignment_a',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'default' => 'center',
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__overlay' => 'text-align: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'vertical_position_a',
			[
				'label' => esc_html__( 'Vertical Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'top' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'middle' => [
						'title' => esc_html__( 'Middle', 'elementor-pro' ),
						'icon' => 'eicon-v-align-middle',
					],
					'bottom' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'selectors_dictionary' => [
					'top' => 'flex-start',
					'middle' => 'center',
					'bottom' => 'flex-end',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__overlay' => 'justify-content: {{VALUE}}',
				],
				'separator' => 'after',
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'border_a',
				'selector' => '{{WRAPPER}} .elementor-flip-box__front',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'heading_image_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Image', 'elementor-pro' ),
				'condition' => [
					'graphic_element' => 'image',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'image_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__image' => 'margin-bottom: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'graphic_element' => 'image',
				],
			]
		);

		$this->add_control(
			'image_width',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ) . ' (%)',
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ '%' ],
				'default' => [
					'unit' => '%',
				],
				'range' => [
					'%' => [
						'min' => 5,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__image img' => 'width: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'graphic_element' => 'image',
				],
			]
		);

		$this->add_control(
			'image_opacity',
			[
				'label' => esc_html__( 'Opacity', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 1,
				],
				'range' => [
					'px' => [
						'max' => 1,
						'min' => 0.10,
						'step' => 0.01,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__image' => 'opacity: {{SIZE}};',
				],
				'condition' => [
					'graphic_element' => 'image',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'image_border',
				'selector' => '{{WRAPPER}} .elementor-flip-box__image img',
				'condition' => [
					'graphic_element' => 'image',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'image_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 200,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__image img' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'graphic_element' => 'image',
				],
			]
		);

		$this->add_control(
			'heading_icon_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'condition' => [
					'graphic_element' => 'icon',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'icon_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-icon-wrapper' => 'margin-bottom: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'graphic_element' => 'icon',
				],
			]
		);

		$this->add_control(
			'icon_primary_color',
			[
				'label' => esc_html__( 'Primary Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-view-stacked .elementor-icon' => 'background-color: {{VALUE}}',
					'{{WRAPPER}} .elementor-view-stacked .elementor-icon svg' => 'stroke: {{VALUE}}',
					'{{WRAPPER}} .elementor-view-framed .elementor-icon, {{WRAPPER}} .elementor-view-default .elementor-icon' => 'color: {{VALUE}}; border-color: {{VALUE}}',
					'{{WRAPPER}} .elementor-view-framed .elementor-icon svg, {{WRAPPER}} .elementor-view-default .elementor-icon svg' => 'fill: {{VALUE}}; border-color: {{VALUE}}',
				],
				'condition' => [
					'graphic_element' => 'icon',
				],
			]
		);

		$this->add_control(
			'icon_secondary_color',
			[
				'label' => esc_html__( 'Secondary Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'condition' => [
					'graphic_element' => 'icon',
					'icon_view!' => 'default',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-view-framed .elementor-icon' => 'background-color: {{VALUE}};',
					'{{WRAPPER}} .elementor-view-framed .elementor-icon svg' => 'stroke: {{VALUE}};',
					'{{WRAPPER}} .elementor-view-stacked .elementor-icon' => 'color: {{VALUE}};',
					'{{WRAPPER}} .elementor-view-stacked .elementor-icon svg' => 'fill: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'icon_size',
			[
				'label' => esc_html__( 'Icon Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 6,
						'max' => 300,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-icon' => 'font-size: {{SIZE}}{{UNIT}};',
					'{{WRAPPER}} .elementor-icon svg' => 'width: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'graphic_element' => 'icon',
				],
			]
		);

		$this->add_control(
			'icon_padding',
			[
				'label' => esc_html__( 'Icon Padding', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-icon' => 'padding: {{SIZE}}{{UNIT}};',
				],
				'range' => [
					'em' => [
						'min' => 0,
						'max' => 5,
					],
				],
				'condition' => [
					'graphic_element' => 'icon',
					'icon_view!' => 'default',
				],
			]
		);

		$this->add_control(
			'icon_rotate',
			[
				'label' => esc_html__( 'Icon Rotate', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 0,
					'unit' => 'deg',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-icon i' => 'transform: rotate({{SIZE}}{{UNIT}});',
					'{{WRAPPER}} .elementor-icon svg' => 'transform: rotate({{SIZE}}{{UNIT}});',
				],
				'condition' => [
					'graphic_element' => 'icon',
				],
			]
		);

		$this->add_control(
			'icon_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-icon' => 'border-width: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'graphic_element' => 'icon',
					'icon_view' => 'framed',
				],
			]
		);

		$this->add_control(
			'icon_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'graphic_element' => 'icon',
					'icon_view!' => 'default',
				],
			]
		);

		$this->add_control(
			'heading_title_style_a',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'separator' => 'before',
				'condition' => [
					'title_text_a!' => '',
				],
			]
		);

		$this->add_control(
			'title_spacing_a',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__title' => 'margin-bottom: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'description_text_a!' => '',
					'title_text_a!' => '',
				],
			]
		);

		$this->add_control(
			'title_color_a',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__title' => 'color: {{VALUE}}',

				],
				'condition' => [
					'title_text_a!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'title_typography_a',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__title',
				'condition' => [
					'title_text_a!' => '',
				],
			]
		);

		$this->add_control(
			'heading_description_style_a',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Description', 'elementor-pro' ),
				'separator' => 'before',
				'condition' => [
					'description_text_a!' => '',
				],
			]
		);

		$this->add_control(
			'description_color_a',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__description' => 'color: {{VALUE}}',

				],
				'condition' => [
					'description_text_a!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'description_typography_a',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
				'selector' => '{{WRAPPER}} .elementor-flip-box__front .elementor-flip-box__layer__description',
				'condition' => [
					'description_text_a!' => '',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_b',
			[
				'label' => esc_html__( 'Back', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'padding_b',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__overlay' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'alignment_b',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'default' => 'center',
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__overlay' => 'text-align: {{VALUE}}',
					'{{WRAPPER}} .elementor-flip-box__button' => 'margin-{{VALUE}}: 0',
				],
			]
		);

		$this->add_control(
			'vertical_position_b',
			[
				'label' => esc_html__( 'Vertical Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'top' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'middle' => [
						'title' => esc_html__( 'Middle', 'elementor-pro' ),
						'icon' => 'eicon-v-align-middle',
					],
					'bottom' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'selectors_dictionary' => [
					'top' => 'flex-start',
					'middle' => 'center',
					'bottom' => 'flex-end',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__overlay' => 'justify-content: {{VALUE}}',
				],
				'separator' => 'after',
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'border_b',
				'selector' => '{{WRAPPER}} .elementor-flip-box__back',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'heading_title_style_b',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'separator' => 'before',
				'condition' => [
					'title_text_b!' => '',
				],
			]
		);

		$this->add_control(
			'title_spacing_b',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__title' => 'margin-bottom: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'title_text_b!' => '',
				],
			]
		);

		$this->add_control(
			'title_color_b',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__title' => 'color: {{VALUE}}',

				],
				'condition' => [
					'title_text_b!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'title_typography_b',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__title',
				'condition' => [
					'title_text_b!' => '',
				],
			]
		);

		$this->add_control(
			'heading_description_style_b',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Description', 'elementor-pro' ),
				'separator' => 'before',
				'condition' => [
					'description_text_b!' => '',
				],
			]
		);

		$this->add_control(
			'description_spacing_b',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__description' => 'margin-bottom: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'description_text_b!' => '',
					'button_text!' => '',
				],
			]
		);

		$this->add_control(
			'description_color_b',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__description' => 'color: {{VALUE}}',

				],
				'condition' => [
					'description_text_b!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'description_typography_b',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
				'selector' => '{{WRAPPER}} .elementor-flip-box__back .elementor-flip-box__layer__description',
				'condition' => [
					'description_text_b!' => '',
				],
			]
		);

		$this->add_control(
			'heading_button',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Button', 'elementor-pro' ),
				'separator' => 'before',
				'condition' => [
					'button_text!' => '',
				],
			]
		);

		$this->add_control(
			'button_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'sm',
				'options' => [
					'xs' => esc_html__( 'Extra Small', 'elementor-pro' ),
					'sm' => esc_html__( 'Small', 'elementor-pro' ),
					'md' => esc_html__( 'Medium', 'elementor-pro' ),
					'lg' => esc_html__( 'Large', 'elementor-pro' ),
					'xl' => esc_html__( 'Extra Large', 'elementor-pro' ),
				],
				'condition' => [
					'button_text!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'button_typography',
				'selector' => '{{WRAPPER}} .elementor-flip-box__button',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
				'condition' => [
					'button_text!' => '',
				],
			]
		);

		$this->start_controls_tabs( 'button_tabs' );

		$this->start_controls_tab( 'normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
				'condition' => [
					'button_text!' => '',
				],
			]
		);

		$this->add_control(
			'button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__button' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'button_background',
				'types' => [ 'classic', 'gradient' ],
				'exclude' => [ 'image' ],
				'selector' => '{{WRAPPER}} .elementor-flip-box__button',
				'fields_options' => [
					'background' => [
						'default' => 'classic',
					],
				],
			]
		);

		$this->add_control(
			'button_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__button' => 'border-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
				'condition' => [
					'button_text!' => '',
				],
			]
		);

		$this->add_control(
			'button_hover_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__button:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'button_hover_background',
				'types' => [ 'classic', 'gradient' ],
				'exclude' => [ 'image' ],
				'selector' => '{{WRAPPER}} .elementor-flip-box__button:hover',
				'fields_options' => [
					'background' => [
						'default' => 'classic',
					],
				],
			]
		);

		$this->add_control(
			'button_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__button:hover' => 'border-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'button_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 20,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__button' => 'border-width: {{SIZE}}{{UNIT}};',
				],
				'separator' => 'before',
				'condition' => [
					'button_text!' => '',
				],
			]
		);

		$this->add_control(
			'button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-flip-box__button' => 'border-radius: {{SIZE}}{{UNIT}};',
				],
				'separator' => 'after',
				'condition' => [
					'button_text!' => '',
				],
			]
		);

		$this->end_controls_section();

	}

	protected function render() {
		$settings = $this->get_settings_for_display();
		$wrapper_tag = 'div';
		$button_tag = 'a';
		$migration_allowed = Icons_Manager::is_migration_allowed();
		$this->add_render_attribute( 'button', 'class', [
			'elementor-flip-box__button',
			'elementor-button',
			'elementor-size-' . $settings['button_size'],
		] );

		$this->add_render_attribute( 'wrapper', 'class', 'elementor-flip-box__layer elementor-flip-box__back' );

		if ( ! empty( $settings['link']['url'] ) ) {
			$link_element = 'button';

			if ( 'box' === $settings['link_click'] ) {
				$wrapper_tag = 'a';
				$button_tag = 'span';
				$link_element = 'wrapper';
			}

			$this->add_link_attributes( $link_element, $settings['link'] );
		}

		if ( 'icon' === $settings['graphic_element'] ) {
			$this->add_render_attribute( 'icon-wrapper', 'class', 'elementor-icon-wrapper' );
			$this->add_render_attribute( 'icon-wrapper', 'class', 'elementor-view-' . $settings['icon_view'] );
			if ( 'default' != $settings['icon_view'] ) {
				$this->add_render_attribute( 'icon-wrapper', 'class', 'elementor-shape-' . $settings['icon_shape'] );
			}

			if ( ! isset( $settings['icon'] ) && ! $migration_allowed ) {
				// add old default
				$settings['icon'] = 'fa fa-star';
			}

			if ( ! empty( $settings['icon'] ) ) {
				$this->add_render_attribute( 'icon', 'class', $settings['icon'] );
			}
		}

		$has_icon = ! empty( $settings['icon'] ) || ! empty( $settings['selected_icon'] );
		$migrated = isset( $settings['__fa4_migrated']['selected_icon'] );
		$is_new = empty( $settings['icon'] ) && $migration_allowed;

		?>
		<div class="elementor-flip-box">
			<div class="elementor-flip-box__layer elementor-flip-box__front">
				<div class="elementor-flip-box__layer__overlay">
					<div class="elementor-flip-box__layer__inner">
						<?php if ( 'image' === $settings['graphic_element'] && ! empty( $settings['image']['url'] ) ) : ?>
							<div class="elementor-flip-box__image">
								<?php Group_Control_Image_Size::print_attachment_image_html( $settings ); ?>
							</div>
						<?php elseif ( 'icon' === $settings['graphic_element'] && $has_icon ) : ?>
							<div <?php $this->print_render_attribute_string( 'icon-wrapper' ); ?>>
								<div class="elementor-icon">
									<?php if ( $is_new || $migrated ) :
										Icons_Manager::render_icon( $settings['selected_icon'] );
									else : ?>
										<i <?php $this->print_render_attribute_string( 'icon' ); ?>></i>
									<?php endif; ?>
								</div>
							</div>
						<?php endif; ?>

						<?php if ( ! empty( $settings['title_text_a'] ) ) : ?>
							<h3 class="elementor-flip-box__layer__title">
								<?php $this->print_unescaped_setting( 'title_text_a' ); ?>
							</h3>
						<?php endif; ?>

						<?php if ( ! empty( $settings['description_text_a'] ) ) : ?>
							<div class="elementor-flip-box__layer__description">
								<?php $this->print_unescaped_setting( 'description_text_a' ); ?>
							</div>
						<?php endif; ?>
					</div>
				</div>
			</div>
			<<?php Utils::print_validated_html_tag( $wrapper_tag ); ?> <?php $this->print_render_attribute_string( 'wrapper' ); ?>>
			<div class="elementor-flip-box__layer__overlay">
				<div class="elementor-flip-box__layer__inner">
					<?php if ( ! empty( $settings['title_text_b'] ) ) : ?>
						<h3 class="elementor-flip-box__layer__title">
							<?php $this->print_unescaped_setting( 'title_text_b' ); ?>
						</h3>
					<?php endif; ?>

					<?php if ( ! empty( $settings['description_text_b'] ) ) : ?>
						<div class="elementor-flip-box__layer__description">
							<?php $this->print_unescaped_setting( 'description_text_b' ); ?>
						</div>
					<?php endif; ?>

					<?php if ( ! empty( $settings['button_text'] ) ) : ?>
						<<?php Utils::print_validated_html_tag( $button_tag ); ?> <?php $this->print_render_attribute_string( 'button' ); ?>>
							<?php $this->print_unescaped_setting( 'button_text' ); ?>
						</<?php Utils::print_validated_html_tag( $button_tag ); ?>>
					<?php endif; ?>
			</div>
		</div>
		</<?php Utils::print_validated_html_tag( $wrapper_tag ); ?>>
		</div>
		<?php
	}

	/**
	 * Render Flip Box widget output in the editor.
	 *
	 * Written as a Backbone JavaScript template and used to generate the live preview.
	 *
	 * @since 2.9.0
	 * @access protected
	 */
	protected function content_template() {
		?>
		<#
		var btnClasses = 'elementor-flip-box__button elementor-button elementor-size-' + settings.button_size;

		if ( 'image' === settings.graphic_element && '' !== settings.image.url ) {
			var image = {
				id: settings.image.id,
				url: settings.image.url,
				size: settings.image_size,
				dimension: settings.image_custom_dimension,
				model: view.getEditModel()
			};

			var imageUrl = elementor.imagesManager.getImageUrl( image );
		}

		var wrapperTag = 'div',
		buttonTag = 'a';

		if ( 'box' === settings.link_click ) {
			wrapperTag = 'a';
			buttonTag = 'span';
		}

		if ( 'icon' === settings.graphic_element ) {
			var iconWrapperClasses = 'elementor-icon-wrapper';
			iconWrapperClasses += ' elementor-view-' + settings.icon_view;
			if ( 'default' !== settings.icon_view ) {
				iconWrapperClasses += ' elementor-shape-' + settings.icon_shape;
			}
		}
		var hasIcon = settings.icon || settings.selected_icon,
			iconHTML = elementor.helpers.renderIcon( view, settings.selected_icon, { 'aria-hidden': true }, 'i' , 'object' ),
			migrated = elementor.helpers.isIconMigrated( settings, 'selected_icon' );
		#>

		<div class="elementor-flip-box">
			<div class="elementor-flip-box__layer elementor-flip-box__front">
				<div class="elementor-flip-box__layer__overlay">
					<div class="elementor-flip-box__layer__inner">
						<# if ( 'image' === settings.graphic_element && '' !== settings.image.url ) { #>
						<div class="elementor-flip-box__image">
							<img src="{{ imageUrl }}">
						</div>
						<#  } else if ( 'icon' === settings.graphic_element && hasIcon ) { #>
						<div class="{{ iconWrapperClasses }}" >
							<div class="elementor-icon">
								<# if ( iconHTML && iconHTML.rendered && ( ! settings.icon || migrated ) ) { #>
									{{{ iconHTML.value }}}
								<# } else { #>
									<i class="{{ settings.icon }}"></i>
								<# } #>
							</div>
						</div>
						<# } #>

						<# if ( settings.title_text_a ) { #>
						<h3 class="elementor-flip-box__layer__title">{{{ settings.title_text_a }}}</h3>
						<# } #>

						<# if ( settings.description_text_a ) { #>
						<div class="elementor-flip-box__layer__description">{{{ settings.description_text_a }}}</div>
						<# } #>
					</div>
				</div>
			</div>
			<{{ wrapperTag }} class="elementor-flip-box__layer elementor-flip-box__back">
			<div class="elementor-flip-box__layer__overlay">
				<div class="elementor-flip-box__layer__inner">
					<# if ( settings.title_text_b ) { #>
					<h3 class="elementor-flip-box__layer__title">{{{ settings.title_text_b }}}</h3>
					<# } #>

					<# if ( settings.description_text_b ) { #>
					<div class="elementor-flip-box__layer__description">{{{ settings.description_text_b }}}</div>
					<# } #>

					<# if ( settings.button_text ) { #>
					<{{ buttonTag }} href="#" class="{{ btnClasses }}">{{{ settings.button_text }}}</{{ buttonTag }}>
				<# } #>
			</div>
		</div>
		</{{ wrapperTag }}>
		</div>
		<?php
	}
}
modules/flip-box/module.php000064400000000472150755004300011734 0ustar00<?php
namespace ElementorPro\Modules\FlipBox;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function get_widgets() {
		return [
			'Flip_Box',
		];
	}

	public function get_name() {
		return 'flip-box';
	}
}
modules/gallery/module.php000064400000000706150755004300011653 0ustar00<?php

namespace ElementorPro\Modules\Gallery;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {
	/**
	 * Get module name.
	 *
	 * Retrieve the module name.
	 *
	 * @since  2.7.0
	 * @access public
	 *
	 * @return string Module name.
	 */
	public function get_name() {
		return 'gallery';
	}

	public function get_widgets() {
		return [
			'gallery',
		];
	}
}
modules/gallery/widgets/gallery.php000064400000116540150755004300013477 0ustar00<?php

namespace ElementorPro\Modules\Gallery\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Breakpoints\Manager as Breakpoints_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Background;
use Elementor\Group_Control_Css_Filter;
use Elementor\Group_Control_Image_Size;
use Elementor\Group_Control_Typography;
use Elementor\Repeater;
use Elementor\Utils;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Gallery extends Base_Widget {

	/**
	 * Get element name.
	 *
	 * Retrieve the element name.
	 *
	 * @return string The name.
	 * @since 2.7.0
	 * @access public
	 *
	 */
	public function get_name() {
		return 'gallery';
	}

	public function get_title() {
		return esc_html__( 'Gallery', 'elementor-pro' );
	}

	public function get_script_depends() {
		return [ 'elementor-gallery' ];
	}

	public function get_style_depends() {
		return [ 'elementor-gallery' ];
	}

	public function get_icon() {
		return 'eicon-gallery-justified';
	}

	public function get_inline_css_depends() {
		if ( 'multiple' === $this->get_settings_for_display( 'gallery_type' ) ) {
			return [ 'nav-menu' ];
		}

		return [];
	}

	protected function register_controls() {
		$this->start_controls_section( 'settings', [ 'label' => esc_html__( 'Settings', 'elementor-pro' ) ] );

		$this->add_control(
			'gallery_type',
			[
				'type' => Controls_Manager::SELECT,
				'label' => esc_html__( 'Type', 'elementor-pro' ),
				'default' => 'single',
				'options' => [
					'single' => esc_html__( 'Single', 'elementor-pro' ),
					'multiple' => esc_html__( 'Multiple', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'gallery',
			[
				'type' => Controls_Manager::GALLERY,
				'condition' => [
					'gallery_type' => 'single',
				],
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$repeater = new Repeater();

		$repeater->add_control(
			'gallery_title',
			[
				'type' => Controls_Manager::TEXT,
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'default' => esc_html__( 'New Gallery', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$repeater->add_control(
			'multiple_gallery',
			[
				'type' => Controls_Manager::GALLERY,
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_control(
			'galleries',
			[
				'type' => Controls_Manager::REPEATER,
				'label' => esc_html__( 'Galleries', 'elementor-pro' ),
				'fields' => $repeater->get_controls(),
				'title_field' => '{{{ gallery_title }}}',
				'default' => [
					[
						'gallery_title' => esc_html__( 'New Gallery', 'elementor-pro' ),
					],
				],
				'condition' => [
					'gallery_type' => 'multiple',
				],
			]
		);

		$this->add_control(
			'order_by',
			[
				'type' => Controls_Manager::SELECT,
				'label' => esc_html__( 'Order By', 'elementor-pro' ),
				'options' => [
					'' => esc_html__( 'Default', 'elementor-pro' ),
					'random' => esc_html__( 'Random', 'elementor-pro' ),
				],
				'default' => '',
			]
		);

		$this->add_control(
			'lazyload',
			[
				'type' => Controls_Manager::SWITCHER,
				'label' => esc_html__( 'Lazy Load', 'elementor-pro' ),
				'return_value' => 'yes',
				'default' => 'yes',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'gallery_layout',
			[
				'type' => Controls_Manager::SELECT,
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'default' => 'grid',
				'options' => [
					'grid' => esc_html__( 'Grid', 'elementor-pro' ),
					'justified' => esc_html__( 'Justified', 'elementor-pro' ),
					'masonry' => esc_html__( 'Masonry', 'elementor-pro' ),
				],
				'separator' => 'before',
				'frontend_available' => true,
			]
		);

		$this->add_responsive_control(
			'columns',
			[
				'label' => esc_html__( 'Columns', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 4,
				'tablet_default' => 2,
				'mobile_default' => 1,
				'min' => 1,
				'max' => 24,
				'condition' => [
					'gallery_layout!' => 'justified',
				],
				'render_type' => 'none',
				'frontend_available' => true,
			]
		);

		$active_breakpoints = Plugin::elementor()->breakpoints->get_active_breakpoints();
		$ideal_row_height_device_args = [];
		$gap_device_args = [];

		// Add default values for all active breakpoints.
		foreach ( $active_breakpoints as $breakpoint_name => $breakpoint_instance ) {
			if ( 'widescreen' !== $breakpoint_name ) {
				$ideal_row_height_device_args[ $breakpoint_name ] = [
					'default' => [
						'size' => 150,
					],
				];

				$gap_device_args[ $breakpoint_name ] = [
					'default' => [
						'size' => 10,
					],
				];
			}
		}

		$this->add_responsive_control(
			'ideal_row_height',
			[
				'label' => esc_html__( 'Row Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 50,
						'max' => 500,
					],
				],
				'default' => [
					'size' => 200,
				],
				'device_args' => $ideal_row_height_device_args,
				'condition' => [
					'gallery_layout' => 'justified',
				],
				'required' => true,
				'render_type' => 'none',
				'frontend_available' => true,
			]
		);

		$this->add_responsive_control(
			'gap',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 10,
				],
				'device_args' => $gap_device_args,
				'required' => true,
				'render_type' => 'none',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'link_to',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'file',
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'file' => esc_html__( 'Media File', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom URL', 'elementor-pro' ),
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'url',
			[
				'label' => esc_html__( 'URL', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'condition' => [
					'link_to' => 'custom',
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'aspect_ratio',
			[
				'type' => Controls_Manager::SELECT,
				'label' => esc_html__( 'Aspect Ratio', 'elementor-pro' ),
				'default' => '3:2',
				'options' => [
					'1:1' => '1:1',
					'3:2' => '3:2',
					'4:3' => '4:3',
					'9:16' => '9:16',
					'16:9' => '16:9',
					'21:9' => '21:9',
				],
				'condition' => [
					'gallery_layout' => 'grid',
				],
				'render_type' => 'none',
				'frontend_available' => true,
			]
		);

		$this->add_group_control(
			Group_Control_Image_Size::get_type(),
			[
				'name' => 'thumbnail_image',
				'default' => 'medium',
			]
		);

		$this->end_controls_section(); // settings

		$this->start_controls_section(
			'section_filter_bar_content',
			[
				'label' => esc_html__( 'Filter Bar', 'elementor-pro' ),
				'condition' => [
					'gallery_type' => 'multiple',
				],
			]
		);

		$this->add_control(
			'show_all_galleries',
			[
				'type' => Controls_Manager::SWITCHER,
				'label' => esc_html__( '"All" Filter', 'elementor-pro' ),
				'default' => 'yes',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'show_all_galleries_label',
			[
				'type' => Controls_Manager::TEXT,
				'label' => esc_html__( '"All" Filter Label', 'elementor-pro' ),
				'default' => esc_html__( 'All', 'elementor-pro' ),
				'condition' => [
					'show_all_galleries' => 'yes',
				],
			]
		);

		$this->add_control(
			'pointer',
			[
				'label' => esc_html__( 'Pointer', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'underline',
				'options' => [
					'none' => esc_html__( 'None', 'elementor-pro' ),
					'underline' => esc_html__( 'Underline', 'elementor-pro' ),
					'overline' => esc_html__( 'Overline', 'elementor-pro' ),
					'double-line' => esc_html__( 'Double Line', 'elementor-pro' ),
					'framed' => esc_html__( 'Framed', 'elementor-pro' ),
					'background' => esc_html__( 'Background', 'elementor-pro' ),
					'text' => esc_html__( 'Text', 'elementor-pro' ),
				],
				'style_transfer' => true,
			]
		);

		$this->add_control(
			'animation_line',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'fade',
				'options' => [
					'fade' => 'Fade',
					'slide' => 'Slide',
					'grow' => 'Grow',
					'drop-in' => 'Drop In',
					'drop-out' => 'Drop Out',
					'none' => 'None',
				],
				'condition' => [
					'pointer' => [ 'underline', 'overline', 'double-line' ],
				],
			]
		);

		$this->add_control(
			'animation_framed',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'fade',
				'options' => [
					'fade' => 'Fade',
					'grow' => 'Grow',
					'shrink' => 'Shrink',
					'draw' => 'Draw',
					'corners' => 'Corners',
					'none' => 'None',
				],
				'condition' => [
					'pointer' => 'framed',
				],
			]
		);

		$this->add_control(
			'animation_background',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'fade',
				'options' => [
					'fade' => 'Fade',
					'grow' => 'Grow',
					'shrink' => 'Shrink',
					'sweep-left' => 'Sweep Left',
					'sweep-right' => 'Sweep Right',
					'sweep-up' => 'Sweep Up',
					'sweep-down' => 'Sweep Down',
					'shutter-in-vertical' => 'Shutter In Vertical',
					'shutter-out-vertical' => 'Shutter Out Vertical',
					'shutter-in-horizontal' => 'Shutter In Horizontal',
					'shutter-out-horizontal' => 'Shutter Out Horizontal',
					'none' => 'None',
				],
				'condition' => [
					'pointer' => 'background',
				],
			]
		);

		$this->add_control(
			'animation_text',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'grow',
				'options' => [
					'grow' => 'Grow',
					'shrink' => 'Shrink',
					'sink' => 'Sink',
					'float' => 'Float',
					'skew' => 'Skew',
					'rotate' => 'Rotate',
					'none' => 'None',
				],
				'condition' => [
					'pointer' => 'text',
				],
			]
		);

		$this->end_controls_section(); // settings

		$this->start_controls_section( 'overlay', [ 'label' => esc_html__( 'Overlay', 'elementor-pro' ) ] );

		$this->add_control(
			'overlay_background',
			[
				'label' => esc_html__( 'Background', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'overlay_title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '',
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'title' => esc_html__( 'Title', 'elementor-pro' ),
					'caption' => esc_html__( 'Caption', 'elementor-pro' ),
					'alt' => esc_html__( 'Alt', 'elementor-pro' ),
					'description' => esc_html__( 'Description', 'elementor-pro' ),
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'overlay_description',
			[
				'label' => esc_html__( 'Description', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '',
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'title' => esc_html__( 'Title', 'elementor-pro' ),
					'caption' => esc_html__( 'Caption', 'elementor-pro' ),
					'alt' => esc_html__( 'Alt', 'elementor-pro' ),
					'description' => esc_html__( 'Description', 'elementor-pro' ),
				],
				'frontend_available' => true,
			]
		);

		$this->end_controls_section(); // overlay

		$this->start_controls_section(
			'image_style',
			[
				'label' => esc_html__( 'Image', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->start_controls_tabs( 'image_tabs' );

		$this->start_controls_tab(
			'image_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'image_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--image-border-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'image_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}' => '--image-border-width: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'image_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--image-border-radius: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Css_Filter::get_type(),
			[
				'name' => 'image_css_filters',
				'selector' => '{{WRAPPER}} .e-gallery-image',
			]
		);

		$this->end_controls_tab(); // overlay_background normal

		$this->start_controls_tab(
			'image_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'image_border_color_hover',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-gallery-item:hover' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'image_border_radius_hover',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-gallery-item:hover' => 'border-radius: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Css_Filter::get_type(),
			[
				'name' => 'image_css_filters_hover',
				'selector' => '{{WRAPPER}} .e-gallery-item:hover .e-gallery-image',
			]
		);

		$this->end_controls_tab(); // overlay_background normal

		$this->end_controls_tabs();// overlay_background tabs

		$this->add_control(
			'image_hover_animation',
			[
				'label' => esc_html__( 'Hover Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => 'None',
					'grow' => 'Zoom In',
					'shrink-contained' => 'Zoom Out',
					'move-contained-left' => 'Move Left',
					'move-contained-right' => 'Move Right',
					'move-contained-top' => 'Move Up',
					'move-contained-bottom' => 'Move Down',
				],
				'separator' => 'before',
				'default' => '',
				'frontend_available' => true,
				'render_type' => 'ui',
			]
		);

		$this->add_control(
			'image_animation_duration',
			[
				'label' => esc_html__( 'Animation Duration', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 800,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 3000,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--image-transition-duration: {{SIZE}}ms',
				],
			]
		);

		$this->end_controls_section(); // overlay_background

		$this->start_controls_section(
			'overlay_style',
			[
				'label' => esc_html__( 'Overlay', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'overlay_background' => 'yes',
				],
			]
		);

		$this->start_controls_tabs( 'overlay_background_tabs' );

		$this->start_controls_tab(
			'overlay_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'overlay_background',
				'types' => [ 'classic', 'gradient' ],
				'exclude' => [ 'image' ],
				'selector' => '{{WRAPPER}} .elementor-gallery-item__overlay',
				'fields_options' => [
					'background' => [
						'label' => esc_html__( 'Overlay', 'elementor-pro' ),
					],
				],
			]
		);

		$this->end_controls_tab(); // overlay_background normal

		$this->start_controls_tab(
			'overlay_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'overlay_background_hover',
				'types' => [ 'classic', 'gradient' ],
				'selector' => '{{WRAPPER}} .e-gallery-item:hover .elementor-gallery-item__overlay',
				'exclude' => [ 'image' ],
				'fields_options' => [
					'background' => [
						'default' => 'classic',
					],
					'color' => [
						'default' => 'rgba(0,0,0,0.5)',
					],
				],
			]
		);

		$this->end_controls_tab(); // overlay_background normal

		$this->end_controls_tabs();// overlay_background tabs

		$this->add_control(
			'image_blend_mode',
			[
				'label' => esc_html__( 'Blend Mode', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '',
				'options' => [
					'' => esc_html__( 'Normal', 'elementor-pro' ),
					'multiply' => 'Multiply',
					'screen' => 'Screen',
					'overlay' => 'Overlay',
					'darken' => 'Darken',
					'lighten' => 'Lighten',
					'color-dodge' => 'Color Dodge',
					'color-burn' => 'Color Burn',
					'hue' => 'Hue',
					'saturation' => 'Saturation',
					'color' => 'Color',
					'exclusion' => 'Exclusion',
					'luminosity' => 'Luminosity',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--overlay-mix-blend-mode: {{VALUE}}',
				],
				'separator' => 'before',
				'render_type' => 'ui',
			]
		);

		$this->add_control(
			'background_overlay_hover_animation',
			[
				'label' => esc_html__( 'Hover Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'groups' => [
					[
						'label' => esc_html__( 'None', 'elementor-pro' ),
						'options' => [
							'' => esc_html__( 'None', 'elementor-pro' ),
						],
					],
					[
						'label' => esc_html__( 'Entrance', 'elementor-pro' ),
						'options' => [
							'enter-from-right' => 'Slide In Right',
							'enter-from-left' => 'Slide In Left',
							'enter-from-top' => 'Slide In Up',
							'enter-from-bottom' => 'Slide In Down',
							'enter-zoom-in' => 'Zoom In',
							'enter-zoom-out' => 'Zoom Out',
							'fade-in' => 'Fade In',
						],
					],
					[
						'label' => esc_html__( 'Exit', 'elementor-pro' ),
						'options' => [
							'exit-to-right' => 'Slide Out Right',
							'exit-to-left' => 'Slide Out Left',
							'exit-to-top' => 'Slide Out Up',
							'exit-to-bottom' => 'Slide Out Down',
							'exit-zoom-in' => 'Zoom In',
							'exit-zoom-out' => 'Zoom Out',
							'fade-out' => 'Fade Out',
						],
					],
				],
				'separator' => 'before',
				'default' => '',
				'frontend_available' => true,
				'render_type' => 'ui',
			]
		);

		$this->add_control(
			'background_overlay_animation_duration',
			[
				'label' => esc_html__( 'Animation Duration', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 800,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 3000,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--overlay-transition-duration: {{SIZE}}ms',
				],
			]
		);

		$this->end_controls_section(); // overlay_background

		$this->start_controls_section(
			'overlay_content_style',
			[
				'label' => esc_html__( 'Content', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				//TODO: add conditions for this section
			]
		);

		$this->add_control(
			'content_alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'default' => 'center',
				'selectors' => [
					'{{WRAPPER}}' => '--content-text-align: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'content_vertical_position',
			[
				'label' => esc_html__( 'Vertical Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'top' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'middle' => [
						'title' => esc_html__( 'Middle', 'elementor-pro' ),
						'icon' => 'eicon-v-align-middle',
					],
					'bottom' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'selectors_dictionary' => [
					'top' => 'flex-start',
					'middle' => 'center',
					'bottom' => 'flex-end',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--content-justify-content: {{VALUE}}',
				],
			]
		);

		$this->add_responsive_control(
			'content_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em', '%' ],
				'default' => [
					'size' => 20,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--content-padding: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'heading_title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'overlay_title!' => '',
				],
			]
		);

		$this->add_control(
			'title_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--title-text-color: {{VALUE}}',
				],
				'condition' => [
					'overlay_title!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'title_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-gallery-item__title',
				'condition' => [
					'overlay_title!' => '',
				],
			]
		);

		$this->add_control(
			'title_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--description-margin-top: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'overlay_title!' => '',
				],
			]
		);

		$this->add_control(
			'heading_description',
			[
				'label' => esc_html__( 'Description', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'overlay_description!' => '',
				],
			]
		);

		$this->add_control(
			'description_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--description-text-color: {{VALUE}}',
				],
				'condition' => [
					'overlay_description!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'description_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
				'selector' => '{{WRAPPER}} .elementor-gallery-item__description',
				'condition' => [
					'overlay_description!' => '',
				],
			]
		);

		$this->add_control(
			'content_hover_animation',
			[
				'label' => esc_html__( 'Hover Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'groups' => [
					[
						'label' => esc_html__( 'None', 'elementor-pro' ),
						'options' => [
							'' => esc_html__( 'None', 'elementor-pro' ),
						],
					],
					[
						'label' => esc_html__( 'Entrance', 'elementor-pro' ),
						'options' => [
							'enter-from-right' => 'Slide In Right',
							'enter-from-left' => 'Slide In Left',
							'enter-from-top' => 'Slide In Up',
							'enter-from-bottom' => 'Slide In Down',
							'enter-zoom-in' => 'Zoom In',
							'enter-zoom-out' => 'Zoom Out',
							'fade-in' => 'Fade In',
						],
					],
					[
						'label' => esc_html__( 'Reaction', 'elementor-pro' ),
						'options' => [
							'grow' => 'Grow',
							'shrink' => 'Shrink',
							'move-right' => 'Move Right',
							'move-left' => 'Move Left',
							'move-up' => 'Move Up',
							'move-down' => 'Move Down',
						],
					],
					[
						'label' => esc_html__( 'Exit', 'elementor-pro' ),
						'options' => [
							'exit-to-right' => 'Slide Out Right',
							'exit-to-left' => 'Slide Out Left',
							'exit-to-top' => 'Slide Out Up',
							'exit-to-bottom' => 'Slide Out Down',
							'exit-zoom-in' => 'Zoom In',
							'exit-zoom-out' => 'Zoom Out',
							'fade-out' => 'Fade Out',
						],
					],
				],
				'default' => 'fade-in',
				'separator' => 'before',
				'render_type' => 'ui',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'content_animation_duration',
			[
				'label' => esc_html__( 'Animation Duration', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 800,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 3000,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--content-transition-duration: {{SIZE}}ms; --content-transition-delay: {{SIZE}}ms;',
				],
				'condition' => [
					'content_hover_animation!' => '',
				],
			]
		);

		$this->add_control(
			'content_sequenced_animation',
			[
				'label' => esc_html__( 'Sequenced Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'condition' => [
					'content_hover_animation!' => '',
				],
				'frontend_available' => true,
				'render_type' => 'ui',
			]
		);

		$this->end_controls_section(); // overlay_content

		$this->start_controls_section(
			'filter_bar_style',
			[
				'label' => esc_html__( 'Filter Bar', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'gallery_type' => 'multiple',
				],
			]
		);

		$this->add_control(
			'align_filter_bar_items',
			[
				'label' => esc_html__( 'Align', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'prefix_class' => 'elementor-gallery--filter-align-',
				'selectors_dictionary' => [
					'left' => 'flex-start',
					'right' => 'flex-end',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--titles-container-justify-content: {{VALUE}}',
				],
			]
		);

		$this->start_controls_tabs( 'filter_bar_colors' );

		$this->start_controls_tab( 'filter_bar_colors_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'galleries_title_color_normal',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_PRIMARY,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--galleries-title-color-normal: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'galleries_titles_typography',
				'selector' => '{{WRAPPER}} .elementor-gallery-title',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
			]
		);

		$this->end_controls_tab();// filter_bar_colors_normal

		$this->start_controls_tab( 'filter_bar_colors_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'galleries_title_color_hover',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--galleries-title-color-hover: {{VALUE}}',
				],
				'condition' => [
					'pointer!' => 'background',
				],
			]
		);

		/*
		When the pointer style = background, users could need a different text color.
		The control handles the title color in hover state, only when the pointer style is background.
		*/
		$this->add_control(
			'galleries_title_color_hover_pointer_bg',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#fff',
				'selectors' => [
					'{{WRAPPER}}' => '--galleries-title-color-hover: {{VALUE}}',
				],
				'condition' => [
					'pointer' => 'background',
				],
			]
		);

		$this->add_control(
			'galleries_pointer_color_hover',
			[
				'label' => esc_html__( 'Pointer Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--galleries-pointer-bg-color-hover: {{VALUE}}',
				],
				'condition' => [
					'pointer!' => [ 'none', 'text' ],
				],
			]
		);

		$this->end_controls_tab();// filter_bar_colors_hover

		$this->start_controls_tab( 'filter_bar_colors_active',
			[
				'label' => esc_html__( 'Active', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'galleries_title_color_active',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--gallery-title-color-active: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'galleries_pointer_color_active',
			[
				'label' => esc_html__( 'Pointer Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--galleries-pointer-bg-color-active: {{VALUE}}',
				],
				'condition' => [
					'pointer!' => [ 'none', 'text' ],
				],

			]
		);

		$this->end_controls_tab();// filter_bar_colors_active

		$this->end_controls_tabs(); // filter_bar_colors

		$this->add_control(
			'pointer_width',
			[
				'label' => esc_html__( 'Pointer Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'devices' => [ Breakpoints_Manager::BREAKPOINT_KEY_DESKTOP, Breakpoints_Manager::BREAKPOINT_KEY_TABLET ],
				'range' => [
					'px' => [
						'max' => 30,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--galleries-pointer-border-width: {{SIZE}}{{UNIT}}',
				],
				'separator' => 'before',
				'condition' => [
					'pointer' => [ 'underline', 'overline', 'double-line', 'framed' ],
				],
			]
		);

		$this->add_control(
			'galleries_titles_space_between',
			[
				'label' => esc_html__( 'Space Between', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-gallery-title' => '--space-between: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'galleries_titles_gap',
			[
				'label' => esc_html__( 'Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-gallery__titles-container' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section(); // filter_bar_style
	}

	protected function render_static() {
		$settings = $this->get_settings_for_display();

		$is_multiple = 'multiple' === $settings['gallery_type'] && ! empty( $settings['galleries'] );

		$is_single = 'single' === $settings['gallery_type'] && ! empty( $settings['gallery'] );

		$gap = $settings['gap']['size'] . $settings['gap']['unit'];
		$ratio_percentage = '75';
		$columns = 4;

		if ( $settings['columns'] ) {
			$columns = $settings['columns'];
		}

		if ( $settings['aspect_ratio'] ) {
			$ratio_array = explode( ':', $settings['aspect_ratio'] );

			$ratio_percentage = ( $ratio_array[1] / $ratio_array[0] ) * 100;
		}

		$this->add_render_attribute(
			'gallery_container',
			[
				'style' => "--columns: {$columns}; --aspect-ratio: {$ratio_percentage}%; --hgap: {$gap}; --vgap: {$gap};",
				'class' => 'e-gallery-grid',
			]
		);

		$galleries = [];

		if ( $is_multiple ) {
			foreach ( array_values( $settings['galleries'] ) as $multi_gallery ) {
				if ( ! $multi_gallery['multiple_gallery'] ) {
					continue;
				}

				$galleries[] = $multi_gallery['multiple_gallery'];
			}
		} elseif ( $is_single ) {
			$galleries[0] = $settings['gallery'];
		}

		foreach ( $galleries as $gallery ) {
			foreach ( $gallery as $item ) {
				$image_src = wp_get_attachment_image_src( $item['id'] );

				$this->add_render_attribute( 'gallery_item_image_' . $item['id'], [
					'style' => "background-image: url('{$image_src[0]}');",
				] );
			}
		}

		$this->render();
	}

	/**
	 *
	 */
	protected function render() {
		$settings = $this->get_settings_for_display();

		$is_multiple = 'multiple' === $settings['gallery_type'] && ! empty( $settings['galleries'] );

		$is_single = 'single' === $settings['gallery_type'] && ! empty( $settings['gallery'] );

		$has_description = ! empty( $settings['overlay_description'] );

		$has_title = ! empty( $settings['overlay_title'] );

		$has_animation = ! empty( $settings['image_hover_animation'] ) || ! empty( $settings['content_hover_animation'] ) || ! empty( $settings['background_overlay_hover_animation'] );

		$gallery_item_tag = ! empty( $settings['link_to'] ) ? 'a' : 'div';

		$galleries = [];

		if ( $is_multiple ) {
			$this->add_render_attribute( 'titles-container', 'class', 'elementor-gallery__titles-container' );

			if ( $settings['pointer'] ) {
				$this->add_render_attribute( 'titles-container', 'class', 'e--pointer-' . $settings['pointer'] );

				foreach ( $settings as $key => $value ) {
					if ( 0 === strpos( $key, 'animation' ) && $value ) {
						$this->add_render_attribute( 'titles-container', 'class', 'e--animation-' . $value );
						break;
					}
				}
			} ?>
			<div <?php $this->print_render_attribute_string( 'titles-container' ); ?>>
				<?php if ( $settings['show_all_galleries'] ) { ?>
					<a data-gallery-index="all" class="elementor-item elementor-gallery-title">
						<?php $this->print_unescaped_setting( 'show_all_galleries_label' ); ?>
					</a>
				<?php } ?>

				<?php foreach ( $settings['galleries'] as $index => $gallery ) :
					if ( ! $gallery['multiple_gallery'] ) {
						continue;
					}

					$galleries[ $index ] = $gallery['multiple_gallery'];
					?>
					<a data-gallery-index="<?php echo esc_attr( $index ); ?>" class="elementor-item elementor-gallery-title">
						<?php $this->print_unescaped_setting( 'gallery_title', 'galleries', $index ); ?>
					</a>
					<?php
				endforeach; ?>
			</div>
			<?php
		} elseif ( $is_single ) {
			$galleries[0] = $settings['gallery'];
		} elseif ( Plugin::elementor()->editor->is_edit_mode() ) { ?>
			<i class="elementor-widget-empty-icon eicon-gallery-justified"></i>
		<?php }

		$this->add_render_attribute( 'gallery_container', 'class', 'elementor-gallery__container' );

		if ( $has_title || $has_description ) {
			$this->add_render_attribute( 'gallery_item_content', 'class', 'elementor-gallery-item__content' );

			if ( $has_title ) {
				$this->add_render_attribute( 'gallery_item_title', 'class', 'elementor-gallery-item__title' );
			}

			if ( $has_description ) {
				$this->add_render_attribute( 'gallery_item_description', 'class', 'elementor-gallery-item__description' );
			}
		}

		$this->add_render_attribute( 'gallery_item_background_overlay', [ 'class' => 'elementor-gallery-item__overlay' ] );

		$gallery_items = [];
		$thumbnail_size = $settings['thumbnail_image_size'];
		foreach ( $galleries as $gallery_index => $gallery ) {
			foreach ( $gallery as $index => $item ) {
				if ( in_array( $item['id'], array_keys( $gallery_items ), true ) ) {
					$gallery_items[ $item['id'] ][] = $gallery_index;
				} else {
					$gallery_items[ $item['id'] ] = [ $gallery_index ];
				}
			}
		}

		if ( 'random' === $settings['order_by'] ) {
			$shuffled_items = [];
			$keys = array_keys( $gallery_items );
			shuffle( $keys );
			foreach ( $keys as $key ) {
				$shuffled_items[ $key ] = $gallery_items[ $key ];
			}
			$gallery_items = $shuffled_items;
		}

		if ( ! empty( $galleries ) ) { ?>
		<div <?php $this->print_render_attribute_string( 'gallery_container' ); ?>>
			<?php
			foreach ( $gallery_items as $id => $tags ) :
				$unique_index = $id; //$gallery_index . '_' . $index;
				$image_src = wp_get_attachment_image_src( $id, $thumbnail_size );
				if ( ! $image_src ) {
					continue;
				}
				$attachment = get_post( $id );
				$image_data = [
					'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
					'media' => wp_get_attachment_image_src( $id, 'full' )['0'],
					'src' => $image_src['0'],
					'width' => $image_src['1'],
					'height' => $image_src['2'],
					'caption' => $attachment->post_excerpt,
					'description' => $attachment->post_content,
					'title' => $attachment->post_title,
				];

				$this->add_render_attribute( 'gallery_item_' . $unique_index, [
					'class' => [
						'e-gallery-item',
						'elementor-gallery-item',
					],
				] );

				if ( $has_animation ) {
					$this->add_render_attribute( 'gallery_item_' . $unique_index, [ 'class' => 'elementor-animated-content' ] );
				}

				if ( $is_multiple ) {
					$this->add_render_attribute( 'gallery_item_' . $unique_index, [ 'data-e-gallery-tags' => implode( ',', $tags ) ] );
				}

				if ( 'a' === $gallery_item_tag ) {
					if ( 'file' === $settings['link_to'] ) {
						$href = $image_data['media'];

						$this->add_render_attribute( 'gallery_item_' . $unique_index, [
							'href' => $href,
						] );

						$this->add_lightbox_data_attributes( 'gallery_item_' . $unique_index, $id, 'yes', 'all-' . $this->get_id() );
					} elseif ( 'custom' === $settings['link_to'] ) {
						$this->add_link_attributes( 'gallery_item_' . $unique_index, $settings['url'] );
					}
				}

				$this->add_render_attribute( 'gallery_item_image_' . $unique_index,
					[
						'class' => [
							'e-gallery-image',
							'elementor-gallery-item__image',
						],
						'data-thumbnail' => $image_data['src'],
						'data-width' => $image_data['width'],
						'data-height' => $image_data['height'],
						'alt' => $image_data['alt'],
					]
				);?>
				<<?php Utils::print_validated_html_tag( $gallery_item_tag ); ?> <?php $this->print_render_attribute_string( 'gallery_item_' . $unique_index ); ?>>
					<div <?php $this->print_render_attribute_string( 'gallery_item_image_' . $unique_index ); ?> ></div>
					<?php if ( ! empty( $settings['overlay_background'] ) ) : ?>
						<div <?php $this->print_render_attribute_string( 'gallery_item_background_overlay' ); ?>></div>
					<?php endif; ?>
					<?php if ( $has_title || $has_description ) : ?>
					<div <?php $this->print_render_attribute_string( 'gallery_item_content' ); ?>>
						<?php if ( $has_title ) :
							$title = $image_data[ $settings['overlay_title'] ];
							if ( ! empty( $title ) ) : ?>
								<div <?php $this->print_render_attribute_string( 'gallery_item_title' ); ?>>
									<?php // PHPCS - the main text of a widget should not be escaped. ?>
									<?php echo $title; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
								</div>
							<?php endif;
						endif;
						if ( $has_description ) :
							$description = $image_data[ $settings['overlay_description'] ];
							if ( ! empty( $description ) ) :?>
								<div <?php $this->print_render_attribute_string( 'gallery_item_description' ); ?>>
									<?php // PHPCS - the main text of a widget should not be escaped. ?>
									<?php echo $description; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
								</div>
							<?php endif;
						endif; ?>
					</div>
					<?php endif; ?>
				</<?php Utils::print_validated_html_tag( $gallery_item_tag ); ?>>
			<?php endforeach;
			//endforeach; ?>
		</div>
	<?php }
	}
}
modules/animated-headline/widgets/animated-headline.php000064400000037467150755004300017275 0ustar00<?php
namespace ElementorPro\Modules\AnimatedHeadline\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;
use Elementor\Modules\DynamicTags\Module as TagsModule;
use Elementor\Utils;
use ElementorPro\Base\Base_Widget;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Animated_Headline extends Base_Widget {

	public function get_name() {
		return 'animated-headline';
	}

	public function get_title() {
		return esc_html__( 'Animated Headline', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-animated-headline';
	}

	public function get_keywords() {
		return [ 'headline', 'heading', 'animation', 'title', 'text' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'text_elements',
			[
				'label' => esc_html__( 'Headline', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'headline_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'highlight',
				'options' => [
					'highlight' => esc_html__( 'Highlighted', 'elementor-pro' ),
					'rotate' => esc_html__( 'Rotating', 'elementor-pro' ),
				],
				'prefix_class' => 'elementor-headline--style-',
				'render_type' => 'template',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'animation_type',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'typing' => 'Typing',
					'clip' => 'Clip',
					'flip' => 'Flip',
					'swirl' => 'Swirl',
					'blinds' => 'Blinds',
					'drop-in' => 'Drop-in',
					'wave' => 'Wave',
					'slide' => 'Slide',
					'slide-down' => 'Slide Down',
				],
				'default' => 'typing',
				'condition' => [
					'headline_style' => 'rotate',
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'marker',
			[
				'label' => esc_html__( 'Shape', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'circle',
				'options' => [
					'circle' => _x( 'Circle', 'Shapes', 'elementor-pro' ),
					'curly' => _x( 'Curly', 'Shapes', 'elementor-pro' ),
					'underline' => _x( 'Underline', 'Shapes', 'elementor-pro' ),
					'double' => _x( 'Double', 'Shapes', 'elementor-pro' ),
					'double_underline' => _x( 'Double Underline', 'Shapes', 'elementor-pro' ),
					'underline_zigzag' => _x( 'Underline Zigzag', 'Shapes', 'elementor-pro' ),
					'diagonal' => _x( 'Diagonal', 'Shapes', 'elementor-pro' ),
					'strikethrough' => _x( 'Strikethrough', 'Shapes', 'elementor-pro' ),
					'x' => 'X',
				],
				'render_type' => 'template',
				'condition' => [
					'headline_style' => 'highlight',
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'before_text',
			[
				'label' => esc_html__( 'Before Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
					'categories' => [
						TagsModule::TEXT_CATEGORY,
					],
				],
				'default' => esc_html__( 'This page is', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Enter your headline', 'elementor-pro' ),
				'label_block' => true,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'highlighted_text',
			[
				'label' => esc_html__( 'Highlighted Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
					'categories' => [
						TagsModule::TEXT_CATEGORY,
					],
				],
				'default' => esc_html__( 'Amazing', 'elementor-pro' ),
				'label_block' => true,
				'condition' => [
					'headline_style' => 'highlight',
				],
				'separator' => 'none',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'rotating_text',
			[
				'label' => esc_html__( 'Rotating Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'placeholder' => esc_html__( 'Enter each word in a separate line', 'elementor-pro' ),
				'separator' => 'none',
				'default' => "Better\nBigger\nFaster",
				'dynamic' => [
					'active' => true,
					'categories' => [
						TagsModule::TEXT_CATEGORY,
					],
				],
				'condition' => [
					'headline_style' => 'rotate',
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'after_text',
			[
				'label' => esc_html__( 'After Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
					'categories' => [
						TagsModule::TEXT_CATEGORY,
					],
				],
				'placeholder' => esc_html__( 'Enter your headline', 'elementor-pro' ),
				'label_block' => true,
				'separator' => 'none',
			]
		);

		$this->add_control(
			'loop',
			[
				'label' => esc_html__( 'Infinite Loop', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'render_type' => 'template',
				'frontend_available' => true,
				'selectors' => [
					'{{WRAPPER}}' => '--iteration-count: infinite',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'highlight_animation_duration',
			[
				'label' => esc_html__( 'Duration', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::NUMBER,
				'default' => 1200,
				'render_type' => 'template',
				'frontend_available' => true,
				'selectors' => [
					'{{WRAPPER}}' => '--animation-duration: {{VALUE}}ms',
				],
				'condition' => [
					'headline_style' => 'highlight',
				],
			]
		);

		$this->add_control(
			'highlight_iteration_delay',
			[
				'label' => esc_html__( 'Delay', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::NUMBER,
				'default' => 8000,
				'render_type' => 'template',
				'frontend_available' => true,
				'condition' => [
					'headline_style' => 'highlight',
					'loop' => 'yes',
				],
			]
		);

		$this->add_control(
			'rotate_iteration_delay',
			[
				'label' => esc_html__( 'Duration', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::NUMBER,
				'default' => 2500,
				'render_type' => 'template',
				'frontend_available' => true,
				'condition' => [
					'headline_style' => 'rotate',
				],
			]
		);

		$this->add_control(
			'link',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'dynamic' => [
					'active' => true,
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'default' => 'center',
				'selectors' => [
					'{{WRAPPER}} .elementor-headline' => 'text-align: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'tag',
			[
				'label' => esc_html__( 'HTML Tag', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'h1' => 'H1',
					'h2' => 'H2',
					'h3' => 'H3',
					'h4' => 'H4',
					'h5' => 'H5',
					'h6' => 'H6',
					'div' => 'div',
					'span' => 'span',
					'p' => 'p',
				],
				'default' => 'h3',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_marker',
			[
				'label' => esc_html__( 'Shape', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'headline_style' => 'highlight',
				],
			]
		);

		$this->add_control(
			'marker_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-headline-dynamic-wrapper path' => 'stroke: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'stroke_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 1,
						'max' => 20,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-headline-dynamic-wrapper path' => 'stroke-width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'above_content',
			[
				'label' => esc_html__( 'Bring to Front', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'selectors' => [
					'{{WRAPPER}} .elementor-headline-dynamic-wrapper svg' => 'z-index: 2',
					'{{WRAPPER}} .elementor-headline-dynamic-text' => 'z-index: auto',
				],
			]
		);

		$this->add_control(
			'rounded_edges',
			[
				'label' => esc_html__( 'Rounded Edges', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'selectors' => [
					'{{WRAPPER}} .elementor-headline-dynamic-wrapper path' => 'stroke-linecap: round; stroke-linejoin: round',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_text',
			[
				'label' => esc_html__( 'Headline', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'title_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-headline-plain-text' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'title_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-headline',
			]
		);

		$this->add_control(
			'heading_words_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Animated Text', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'words_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--dynamic-text-color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'words_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-headline-dynamic-text',
				'exclude' => [ 'font_size' ],
			]
		);

		$this->add_control(
			'typing_animation_highlight_colors',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Selected Text', 'elementor-pro' ),
				'separator' => 'before',
				'condition' => [
					'headline_style' => 'rotate',
					'animation_type' => 'typing',
				],
			]
		);

		$this->add_control(
			'highlighted_text_background_color',
			[
				'label' => esc_html__( 'Selection Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--typing-selected-bg-color: {{VALUE}}',
				],
				'condition' => [
					'headline_style' => 'rotate',
					'animation_type' => 'typing',
				],
			]
		);

		$this->add_control(
			'highlighted_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--typing-selected-color: {{VALUE}}',
				],
				'condition' => [
					'headline_style' => 'rotate',
					'animation_type' => 'typing',
				],
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		$settings = $this->get_settings_for_display();

		$tag = Utils::validate_html_tag( $settings['tag'] );

		$this->add_render_attribute( 'headline', 'class', 'elementor-headline' );

		if ( 'rotate' === $settings['headline_style'] ) {
			$this->add_render_attribute( 'headline', 'class', 'elementor-headline-animation-type-' . $settings['animation_type'] );

			$is_letter_animation = in_array( $settings['animation_type'], [ 'typing', 'swirl', 'blinds', 'wave' ] );

			if ( $is_letter_animation ) {
				$this->add_render_attribute( 'headline', 'class', 'elementor-headline-letters' );
			}
		}

		if ( ! empty( $settings['link']['url'] ) ) {
			$this->add_link_attributes( 'url', $settings['link'] );
			?>
			<a <?php $this->print_render_attribute_string( 'url' ); ?>>

			<?php
		}

		?>
		<<?php Utils::print_validated_html_tag( $tag ); ?> <?php $this->print_render_attribute_string( 'headline' ); ?>>
		<?php if ( ! empty( $settings['before_text'] ) ) : ?>
			<span class="elementor-headline-plain-text elementor-headline-text-wrapper"><?php $this->print_unescaped_setting( 'before_text' ); ?></span>
		<?php endif; ?>
		<span class="elementor-headline-dynamic-wrapper elementor-headline-text-wrapper">
		<?php if ( 'rotate' === $settings['headline_style'] && $settings['rotating_text'] ) :
			$rotating_text = explode( "\n", $settings['rotating_text'] );
			foreach ( $rotating_text as $key => $text ) : ?>
			<span class="elementor-headline-dynamic-text<?php echo 1 > $key ? ' elementor-headline-text-active' : ''; ?>">
				<?php Utils::print_unescaped_internal_string( str_replace( ' ', '&nbsp;', $text ) ); ?>
			</span>
		<?php endforeach; ?>
		<?php elseif ( 'highlight' === $settings['headline_style'] && ! empty( $settings['highlighted_text'] ) ) : ?>
			<span class="elementor-headline-dynamic-text elementor-headline-text-active"><?php $this->print_unescaped_setting( 'highlighted_text' ); ?></span>
		<?php endif ?>
		</span>
		<?php if ( ! empty( $settings['after_text'] ) ) : ?>
			<span class="elementor-headline-plain-text elementor-headline-text-wrapper"><?php $this->print_unescaped_setting( 'after_text' ); ?></span>
			<?php endif; ?>
		</<?php Utils::print_validated_html_tag( $tag ); ?>>
		<?php

		if ( ! empty( $settings['link']['url'] ) ) {
			echo '</a>';
		}
	}

	/**
	 * Render Animated Headline widget output in the editor.
	 *
	 * Written as a Backbone JavaScript template and used to generate the live preview.
	 *
	 * @since 2.9.0
	 * @access protected
	 */
	protected function content_template() {
		?>
		<#
		var headlineClasses = 'elementor-headline',
			tag = elementorPro.validateHTMLTag( settings.tag );

		if ( 'rotate' === settings.headline_style ) {
			headlineClasses += ' elementor-headline-animation-type-' + settings.animation_type;

			var isLetterAnimation = -1 !== [ 'typing', 'swirl', 'blinds', 'wave' ].indexOf( settings.animation_type );

			if ( isLetterAnimation ) {
				headlineClasses += ' elementor-headline-letters';
			}
		}

		if ( settings.link.url ) { #>
			<a href="#">
		<# } #>
				<{{{ tag }}} class="{{{ headlineClasses }}}">
					<# if ( settings.before_text ) { #>
						<span class="elementor-headline-plain-text elementor-headline-text-wrapper">{{{ settings.before_text }}}</span>
					<# } #>

					<# if ( settings.rotating_text ) { #>
						<span class="elementor-headline-dynamic-wrapper elementor-headline-text-wrapper">
						<# if ( 'rotate' === settings.headline_style && settings.rotating_text ) {
							var rotatingText = ( settings.rotating_text || '' ).split( '\n' );
							for ( var i = 0; i < rotatingText.length; i++ ) {
								var statusClass = 0 === i ? 'elementor-headline-text-active' : ''; #>
								<span class="elementor-headline-dynamic-text {{ statusClass }}">
									{{{ rotatingText[ i ].replace( ' ', '&nbsp;' ) }}}
								</span>
							<# }
						}

						else if ( 'highlight' === settings.headline_style && settings.highlighted_text ) { #>
							<span class="elementor-headline-dynamic-text elementor-headline-text-active">{{{ settings.highlighted_text }}}</span>
						<# } #>
						</span>
					<# } #>

					<# if ( settings.after_text ) { #>
						<span class="elementor-headline-plain-text elementor-headline-text-wrapper">{{{ settings.after_text }}}</span>
					<# } #>
				</{{{ tag }}}>
		<# if ( settings.link.url ) { #>
			</a>
		<# } #>
		<?php
	}
}
modules/animated-headline/module.php000064400000000525150755004300013544 0ustar00<?php
namespace ElementorPro\Modules\AnimatedHeadline;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function get_widgets() {
		return [
			'Animated_Headline',
		];
	}

	public function get_name() {
		return 'animated-headline';
	}
}
modules/popup/module.php000064400000011400150755004300011350 0ustar00<?php
namespace ElementorPro\Modules\Popup;

use Elementor\Core\Common\Modules\Ajax\Module as Ajax;
use Elementor\Core\Documents_Manager;
use Elementor\Core\DynamicTags\Manager as DynamicTagsManager;
use Elementor\TemplateLibrary\Source_Local;
use ElementorPro\Base\Module_Base;
use ElementorPro\Modules\ThemeBuilder\Classes\Locations_Manager;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {
	const DOCUMENT_TYPE = 'popup';

	public function __construct() {
		parent::__construct();

		add_action( 'elementor/documents/register', [ $this, 'register_documents' ] );
		add_action( 'elementor/theme/register_locations', [ $this, 'register_location' ] );
		add_action( 'elementor/dynamic_tags/register_tags', [ $this, 'register_tag' ] );
		add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] );

		add_action( 'admin_menu', [ $this, 'admin_menu' ] );
		add_action( 'wp_footer', [ $this, 'print_popups' ] );
		add_action( 'elementor_pro/init', [ $this, 'add_form_action' ] );

		add_filter( 'elementor_pro/editor/localize_settings', [ $this, 'localize_settings' ] );
		add_filter( 'elementor/finder/categories', [ $this, 'add_finder_items' ] );
	}

	public function get_name() {
		return 'popup';
	}

	public function add_form_action() {
		$this->add_component( 'form-action', new Form_Action() );
	}

	public static function add_popup_to_location( $popup_id ) {
		/** @var \ElementorPro\Modules\ThemeBuilder\Module $theme_builder */
		$theme_builder = Plugin::instance()->modules_manager->get_modules( 'theme-builder' );

		$theme_builder->get_locations_manager()->add_doc_to_location( Document::get_property( 'location' ), $popup_id );
	}

	public function register_documents( Documents_Manager $documents_manager ) {
		$documents_manager->register_document_type( self::DOCUMENT_TYPE, Document::get_class_full_name() );
	}

	public function register_location( Locations_Manager $location_manager ) {
		$location_manager->register_location(
			'popup',
			[
				'label' => esc_html__( 'Popup', 'elementor-pro' ),
				'multiple' => true,
				'public' => false,
				'edit_in_content' => false,
			]
		);
	}

	public function print_popups() {
		elementor_theme_do_location( 'popup' );
	}

	public function register_tag( DynamicTagsManager $dynamic_tags ) {
		$dynamic_tags->register_tag( __NAMESPACE__ . '\Tag' );
	}

	public function register_ajax_actions( Ajax $ajax ) {
		$ajax->register_ajax_action( 'pro_popup_save_display_settings', [ $this, 'save_display_settings' ] );
	}

	public function localize_settings( array $settings ) {
		$settings = array_replace_recursive( $settings, [
			'i18n' => [
				'popups' => esc_html__( 'Popups', 'elementor-pro' ),
				'triggers' => esc_html__( 'Triggers', 'elementor-pro' ),
				'timing' => esc_html__( 'Advanced Rules', 'elementor-pro' ),
				'popup_publish_screen_triggers_description' => esc_html__( 'What action the user needs to do for the popup to open.', 'elementor-pro' ),
				'popup_publish_screen_timing_description' => esc_html__( 'Requirements that have to be met for the popup to open.', 'elementor-pro' ),
				'popup_settings_introduction_title' => esc_html__( 'Please Note', 'elementor-pro' ),
				'popup_settings_introduction_message' => esc_html__( 'Popup settings are accessed via the settings icon in the bottom menu', 'elementor-pro' ),
			],
		] );

		return $settings;
	}

	public function save_display_settings( $data ) {
		/** @var Document $popup_document */
		$popup_document = Plugin::elementor()->documents->get( $data['editor_post_id'] );

		$popup_document->save_display_settings_data( $data['settings'] );
	}

	/**
	 * Add New item to admin menu.
	 *
	 * Fired by `admin_menu` action.
	 *
	 * @since 2.4.0
	 * @access public
	 */
	public function admin_menu() {
		add_submenu_page( Source_Local::ADMIN_MENU_SLUG, '', esc_html__( 'Popups', 'elementor-pro' ), 'publish_posts', $this->get_admin_url( true ) );
	}

	public function add_finder_items( array $categories ) {
		$categories['general']['items']['popups'] = [
			'title' => esc_html__( 'Popups', 'elementor-pro' ),
			'icon' => 'library-save',
			'url' => $this->get_admin_url(),
			'keywords' => [ 'template', 'popup', 'library' ],
		];

		$categories['create']['items']['popups'] = [
			'title' => esc_html__( 'Add New Popup', 'elementor-pro' ),
			'icon' => 'plus-circle-o',
			'url' => $this->get_admin_url() . '#add_new',
			'keywords' => [ 'template', 'theme', 'popup', 'new', 'create' ],
		];

		return $categories;

	}

	private function get_admin_url( $relative = false ) {
		$base_url = Source_Local::ADMIN_MENU_SLUG;
		if ( ! $relative ) {
			$base_url = admin_url( $base_url );
		}

		return add_query_arg(
			[
				'tabs_group' => 'popup',
				'elementor_library_type' => 'popup',
			],
			$base_url
		);
	}
}
modules/popup/tag.php000064400000005762150755004300010654 0ustar00<?php
namespace ElementorPro\Modules\Popup;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag as DynamicTagsTag;
use ElementorPro\Modules\DynamicTags\Module as DynamicTagsModule;
use ElementorPro\Modules\QueryControl\Module as QueryControlModule;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Tag extends DynamicTagsTag {

	public function get_name() {
		return 'popup';
	}

	public function get_title() {
		return esc_html__( 'Popup', 'elementor-pro' );
	}

	public function get_group() {
		return DynamicTagsModule::ACTION_GROUP;
	}

	public function get_categories() {
		return [ DynamicTagsModule::URL_CATEGORY ];
	}

	public function register_controls() {
		$this->add_control(
			'action',
			[
				'label' => esc_html__( 'Action', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'open',
				'options' => [
					'open' => esc_html__( 'Open Popup', 'elementor-pro' ),
					'close' => esc_html__( 'Close Popup', 'elementor-pro' ),
					'toggle' => esc_html__( 'Toggle Popup', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'popup',
			[
				'label' => esc_html__( 'Popup', 'elementor-pro' ),
				'type' => QueryControlModule::QUERY_CONTROL_ID,
				'autocomplete' => [
					'object' => QueryControlModule::QUERY_OBJECT_LIBRARY_TEMPLATE,
					'query' => [
						'posts_per_page' => 20,
						'post_status' => [ 'publish', 'private' ],
						'meta_query' => [
							[
								'key' => Document::TYPE_META_KEY,
								'value' => 'popup',
							],
						],
					],
				],
				'label_block' => true,
				'condition' => [
					'action' => [ 'open', 'toggle' ],
				],
			]
		);

		$this->add_control(
			'do_not_show_again',
			[
				'label' => esc_html__( 'Don\'t Show Again', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'condition' => [
					'action' => 'close',
				],
			]
		);
	}

	public function render() {
		$settings = $this->get_active_settings();

		if ( 'close' === $settings['action'] ) {
			$this->print_close_popup_link( $settings );

			return;
		}

		$this->print_open_popup_link( $settings );
	}

	// Keep Empty to avoid default advanced section
	protected function register_advanced_section() {}

	private function print_open_popup_link( array $settings ) {
		if ( ! $settings['popup'] ) {
			return;
		}

		$link_action_url = Plugin::elementor()->frontend->create_action_hash( 'popup:open', [
			'id' => $settings['popup'],
			'toggle' => 'toggle' === $settings['action'],
		] );

		Module::add_popup_to_location( $settings['popup'] );

		// PHPCS - `create_action_hash` is safe.
		echo $link_action_url; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}

	private function print_close_popup_link( array $settings ) {
		// PHPCS - `create_action_hash` is safe.
		echo Plugin::elementor()->frontend->create_action_hash( 'popup:close', [ 'do_not_show_again' => $settings['do_not_show_again'] ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}
}
modules/popup/document.php000064400000046376150755004300011725 0ustar00<?php
namespace ElementorPro\Modules\Popup;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Background;
use ElementorPro\Modules\Popup\DisplaySettings\Base;
use ElementorPro\Modules\Popup\DisplaySettings\Timing;
use ElementorPro\Modules\Popup\DisplaySettings\Triggers;
use ElementorPro\Modules\ThemeBuilder\Documents\Theme_Section_Document;
use ElementorPro\Modules\ThemeBuilder\Module as ThemeBuilderModule;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Document extends Theme_Section_Document {

	const DISPLAY_SETTINGS_META_KEY = '_elementor_popup_display_settings';

	/**
	 * @var Base[]
	 */
	private $display_settings;

	public static function get_properties() {
		$properties = parent::get_properties();

		$properties['admin_tab_group'] = 'popup';
		$properties['location'] = 'popup';
		$properties['support_kit'] = true;
		$properties['support_site_editor'] = false;

		return $properties;
	}

	public static function get_title() {
		return esc_html__( 'Popup', 'elementor-pro' );
	}

	public static function get_plural_title() {
		return esc_html__( 'Popups', 'elementor-pro' );
	}

	public function get_display_settings() {
		if ( ! $this->display_settings ) {
			$settings = $this->get_display_settings_data();

			if ( ! $settings ) {
				$settings = [
					'triggers' => [],
					'timing' => [],
				];
			}

			$id = $this->get_main_id();

			$this->display_settings = [
				'triggers' => new Triggers( [
					'id' => $id,
					'settings' => $settings['triggers'],
				] ),
				'timing' => new Timing( [
					'id' => $id,
					'settings' => $settings['timing'],
				] ),
			];
		}

		return $this->display_settings;
	}

	public function get_initial_config() {
		$config = parent::get_initial_config();

		$display_settings = $this->get_display_settings();

		$config['displaySettings'] = [
			'triggers' => [
				'controls' => $display_settings['triggers']->get_controls(),
				'settings' => $display_settings['triggers']->get_settings(),
			],
			'timing' => [
				'controls' => $display_settings['timing']->get_controls(),
				'settings' => $display_settings['timing']->get_settings(),
			],
		];

		$config['container'] = '.elementor-popup-modal .dialog-widget-content';

		return $config;
	}

	public function get_name() {
		return 'popup';
	}

	public function get_css_wrapper_selector() {
		return '#elementor-popup-modal-' . $this->get_main_id();
	}

	public function get_display_settings_data() {
		return $this->get_main_meta( self::DISPLAY_SETTINGS_META_KEY );
	}

	public function save_display_settings_data( $display_settings_data ) {
		$this->update_main_meta( self::DISPLAY_SETTINGS_META_KEY, $display_settings_data );
	}

	public function get_frontend_settings() {
		$settings = parent::get_frontend_settings();

		$display_settings = $this->get_display_settings();

		// Disable triggers if the popup is not printed by the theme builder conditions.
		// avoid auto show the popup if it's enqueued by a dynamic tag and etc.)
		$popups_by_condition = ThemeBuilderModule::instance()->get_conditions_manager()->get_documents_for_location( 'popup' );

		if ( $popups_by_condition && isset( $popups_by_condition[ $this->get_main_id() ] ) ) {
			$settings['triggers'] = $display_settings['triggers']->get_frontend_settings();
		}

		$settings['timing'] = $display_settings['timing']->get_frontend_settings();

		return $settings;
	}

	public function get_export_data() {
		$data = parent::get_export_data();

		$display_settings = $this->get_display_settings();

		$data['display_settings'] = [
			'triggers' => $display_settings['triggers']->get_frontend_settings(),
			'timing' => $display_settings['timing']->get_frontend_settings(),
		];

		return $data;
	}

	public function import( array $data ) {
		parent::import( $data );

		$this->save_display_settings_data( $data['display_settings'] );
	}

	protected function register_controls() {
		$this->start_controls_section(
			'popup_layout',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_SETTINGS,
			]
		);

		$this->add_responsive_control(
			'width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 100,
						'max' => 1000,
					],
					'vh' => [
						'min' => 10,
						'max' => 100,
					],
				],
				'size_units' => [ 'px', 'vw' ],
				'default' => [
					'size' => 640,
				],
				'selectors' => [
					'{{WRAPPER}} .dialog-message' => 'width: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'height_type',
			[
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'auto',
				'options' => [
					'auto' => esc_html__( 'Fit To Content', 'elementor-pro' ),
					'fit_to_screen' => esc_html__( 'Fit To Screen', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'selectors_dictionary' => [
					'fit_to_screen' => '100vh',
				],
				'selectors' => [
					'{{WRAPPER}} .dialog-message' => 'height: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'height',
			[
				'label' => esc_html__( 'Custom Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 100,
						'max' => 1000,
					],
					'vh' => [
						'min' => 10,
						'max' => 100,
					],
				],
				'size_units' => [ 'px', 'vh' ],
				'condition' => [
					'height_type' => 'custom',
				],
				'default' => [
					'size' => 380,
				],
				'selectors' => [
					'{{WRAPPER}} .dialog-message' => 'height: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'content_position',
			[
				'label' => esc_html__( 'Content Position', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'top',
				'options' => [
					'top' => esc_html__( 'Top', 'elementor-pro' ),
					'center' => esc_html__( 'Center', 'elementor-pro' ),
					'bottom' => esc_html__( 'Bottom', 'elementor-pro' ),
				],
				'condition' => [
					'height_type!' => 'auto',
				],
				'selectors_dictionary' => [
					'top' => 'flex-start',
					'bottom' => 'flex-end',
				],
				'selectors' => [
					'{{WRAPPER}} .dialog-message' => 'align-items: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'position_heading',
			[
				'label' => esc_html__( 'Position', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'horizontal_position',
			[
				'label' => esc_html__( 'Horizontal', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'toggle' => false,
				'default' => 'center',
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-h-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => 'justify-content: {{VALUE}}',
				],
				'selectors_dictionary' => [
					'left' => 'flex-start',
					'right' => 'flex-end',
				],
			]
		);

		$this->add_responsive_control(
			'vertical_position',
			[
				'label' => esc_html__( 'Vertical', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'toggle' => false,
				'default' => 'center',
				'options' => [
					'top' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-v-align-middle',
					],
					'bottom' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => 'align-items: {{VALUE}}',
				],
				'selectors_dictionary' => [
					'top' => 'flex-start',
					'bottom' => 'flex-end',
				],
			]
		);

		$this->add_control(
			'overlay',
			[
				'label' => esc_html__( 'Overlay', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'default' => 'yes',
				'selectors' => [
					'{{WRAPPER}}' => 'pointer-events: all',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'close_button',
			[
				'label' => esc_html__( 'Close Button', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'default' => 'yes',
				'selectors' => [
					// Using flex to make sure that each icon type (i or SVG) will be vertically aligned.
					'{{WRAPPER}} .dialog-close-button' => 'display: flex',
				],
			]
		);

		$this->add_responsive_control(
			'entrance_animation',
			[
				'label' => esc_html__( 'Entrance Animation', 'elementor-pro' ),
				'type' => Controls_Manager::ANIMATION,
				'frontend_available' => true,
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'exit_animation',
			[
				'label' => esc_html__( 'Exit Animation', 'elementor-pro' ),
				'type' => Controls_Manager::EXIT_ANIMATION,
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'entrance_animation_duration',
			[
				'label' => esc_html__( 'Animation Duration', 'elementor-pro' ) . ' (sec)',
				'type' => Controls_Manager::SLIDER,
				'frontend_available' => true,
				'default' => [
					'size' => 1.2,
				],
				'range' => [
					'px' => [
						'min' => 0.1,
						'max' => 5,
						'step' => 0.1,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .dialog-widget-content' => 'animation-duration: {{SIZE}}s',
				],
				'conditions' => [
					'relation' => 'or',
					'terms' => [
						[
							'name' => 'entrance_animation',
							'operator' => '!==',
							'value' => '',
						],
						[
							'name' => 'exit_animation',
							'operator' => '!==',
							'value' => '',
						],
					],
				],
			]
		);

		$this->end_controls_section();

		parent::register_controls();

		$this->start_controls_section(
			'section_page_style',
			[
				'label' => esc_html__( 'Popup', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name'  => 'background',
				'selector' => '{{WRAPPER}} .dialog-widget-content',
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name'  => 'border',
				'selector' => '{{WRAPPER}} .dialog-widget-content',
			]
		);

		$this->add_responsive_control(
			'border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .dialog-widget-content' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'box_shadow',
				'selector' => '{{WRAPPER}} .dialog-widget-content',
				'fields_options' => [
					'box_shadow_type' => [
						'default' => 'yes',
					],
					'box_shadow' => [
						'default' => [
							'horizontal' => 2,
							'vertical' => 8,
							'blur' => 23,
							'spread' => 3,
							'color' => 'rgba(0,0,0,0.2)',
						],
					],
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_overlay',
			[
				'label' => esc_html__( 'Overlay', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'overlay' => 'yes',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'overlay_background',
				'types' => [ 'classic', 'gradient' ],
				'selector' => '{{WRAPPER}}',
				'fields_options' => [
					'background' => [
						'default' => 'classic',
					],
					'color' => [
						'default' => 'rgba(0,0,0,.8)',
					],
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_close_button',
			[
				'label' => esc_html__( 'Close Button', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'close_button!' => '',
				],
			]
		);

		$this->add_control(
			'close_button_position',
			[
				'label' => esc_html__( 'Position', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'Inside', 'elementor-pro' ),
					'outside' => esc_html__( 'Outside', 'elementor-pro' ),
				],
				'frontend_available' => true,
			]
		);

		$this->add_responsive_control(
			'close_button_vertical',
			[
				'label' => esc_html__( 'Vertical Position', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ '%', 'px' ],
				'range' => [
					'%' => [
						'max' => 100,
						'min' => 0,
						'step' => 0.1,
					],
					'px' => [
						'max' => 500,
						'min' => -500,
					],
				],
				'default' => [
					'unit' => '%',
				],
				'tablet_default' => [
					'unit' => '%',
				],
				'mobile_default' => [
					'unit' => '%',
				],
				'selectors' => [
					'{{WRAPPER}} .dialog-close-button' => 'top: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'close_button_horizontal',
			[
				'label' => esc_html__( 'Horizontal Position', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ '%', 'px' ],
				'range' => [
					'%' => [
						'max' => 100,
						'min' => 0,
						'step' => 0.1,
					],
					'px' => [
						'max' => 500,
						'min' => -500,
					],
				],
				'default' => [
					'unit' => '%',
				],
				'tablet_default' => [
					'unit' => '%',
				],
				'mobile_default' => [
					'unit' => '%',
				],
				'selectors' => [
					'body:not(.rtl) {{WRAPPER}} .dialog-close-button' => 'right: {{SIZE}}{{UNIT}}',
					'body.rtl {{WRAPPER}} .dialog-close-button' => 'left: {{SIZE}}{{UNIT}}',
				],
				'separator' => 'after',
			]
		);

		$this->start_controls_tabs( 'close_button_style_tabs' );

		$this->start_controls_tab(
			'tab_x_button_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'close_button_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .dialog-close-button i' => 'color: {{VALUE}}',
					'{{WRAPPER}} .dialog-close-button svg' => 'fill: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'close_button_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .dialog-close-button' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_x_button_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'close_button_hover_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .dialog-close-button:hover i' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'close_button_hover_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .dialog-close-button:hover' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_responsive_control(
			'icon_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .dialog-close-button' => 'font-size: {{SIZE}}{{UNIT}}',
				],
				'separator' => 'before',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_advanced',
			[
				'label' => esc_html__( 'Advanced', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_ADVANCED,
			]
		);

		$this->add_control(
			'close_button_delay',
			[
				'label' => esc_html__( 'Show Close Button After', 'elementor-pro' ) . ' (sec)',
				'type' => Controls_Manager::NUMBER,
				'min' => 0.1,
				'max' => 60,
				'step' => 0.1,
				'condition' => [
					'close_button' => 'yes',
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'close_automatically',
			[
				'label' => esc_html__( 'Automatically Close After', 'elementor-pro' ) . ' (sec)',
				'type' => Controls_Manager::NUMBER,
				'min' => 0.1,
				'max' => 60,
				'step' => 0.1,
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'prevent_close_on_background_click',
			[
				'label' => esc_html__( 'Prevent Closing on Overlay', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'prevent_close_on_esc_key',
			[
				'label' => esc_html__( 'Prevent Closing on ESC key', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'prevent_scroll',
			[
				'label' => esc_html__( 'Disable Page Scrolling', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'avoid_multiple_popups',
			[
				'label' => esc_html__( 'Avoid Multiple Popups', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'description' => esc_html__( 'If the user has seen another popup on the page hide this popup', 'elementor-pro' ),
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'open_selector',
			[
				'label' => esc_html__( 'Open By Selector', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => esc_html__( '#id, .class', 'elementor-pro' ),
				'description' => esc_html__( 'In order to open a popup on selector click, please set your Popup Conditions', 'elementor-pro' ),
				'frontend_available' => true,
			]
		);

		$this->add_responsive_control(
			'margin',
			[
				'label' => esc_html__( 'Margin', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'separator' => 'before',
				'selectors' => [
					'{{WRAPPER}} .dialog-widget-content' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .dialog-message' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'classes',
			[
				'label' => esc_html__( 'CSS Classes', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'title' => esc_html__( 'Add your custom class WITHOUT the dot. e.g: my-class', 'elementor-pro' ),
				'frontend_available' => true,
			]
		);

		$this->end_controls_section();

		Plugin::elementor()->controls_manager->add_custom_css_controls( $this );
	}

	protected function get_remote_library_config() {
		$config = parent::get_remote_library_config();
		$config['type'] = 'popup';
		$config['default_route'] = 'templates/popups';
		$config['autoImportSettings'] = true;

		return $config;
	}
}
modules/popup/form-action.php000064400000006712150755004300012313 0ustar00<?php
namespace ElementorPro\Modules\Popup;

use Elementor\Controls_Manager;
use ElementorPro\Modules\Forms\Classes\Action_Base;
use ElementorPro\Modules\QueryControl\Module as QueryControlModule;
use ElementorPro\Modules\Forms\Module as FormsModule;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Form_Action extends Action_Base {

	public function get_name() {
		return 'popup';
	}

	public function get_label() {
		return esc_html__( 'Popup', 'elementor-pro' );
	}

	public function register_settings_section( $widget ) {
		$widget->start_controls_section(
			'section_popup',
			[
				'label' => esc_html__( 'Popup', 'elementor-pro' ),
				'condition' => [
					'submit_actions' => $this->get_name(),
				],
			]
		);

		$widget->add_control(
			'popup_action',
			[
				'label' => esc_html__( 'Action', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'Choose', 'elementor-pro' ),
					'open' => esc_html__( 'Open Popup', 'elementor-pro' ),
					'close' => esc_html__( 'Close Popup', 'elementor-pro' ),
				],
			]
		);

		$widget->add_control(
			'popup_action_popup_id',
			[
				'label' => esc_html__( 'Popup', 'elementor-pro' ),
				'type' => QueryControlModule::QUERY_CONTROL_ID,
				'label_block' => true,
				'autocomplete' => [
					'object' => QueryControlModule::QUERY_OBJECT_LIBRARY_TEMPLATE,
					'query' => [
						'posts_per_page' => 20,
						'meta_query' => [
							[
								'key' => Document::TYPE_META_KEY,
								'value' => 'popup',
							],
						],
					],
				],
				'condition' => [
					'popup_action' => 'open',
				],
			]
		);

		$widget->add_control(
			'popup_action_do_not_show_again',
			[
				'label' => esc_html__( 'Don\'t Show Again', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'condition' => [
					'popup_action' => 'close',
				],
			]
		);

		$widget->end_controls_section();
	}

	public function on_export( $element ) {
		unset(
			$element['settings']['popup_action'],
			$element['settings']['popup_action_popup_id'],
			$element['settings']['popup_action_do_not_show_again']
		);

		return $element;
	}

	public function run( $record, $ajax_handler ) {
		$popup_action = $record->get_form_settings( 'popup_action' );

		if ( empty( $popup_action ) ) {
			return;
		}

		$action_settings = [
			'action' => $popup_action,
		];

		if ( 'open' === $popup_action ) {
			$popup_id = $record->get_form_settings( 'popup_action_popup_id' );

			if ( empty( $popup_id ) ) {
				return;
			}

			$action_settings['id'] = $popup_id;
		} else {
			$action_settings['do_not_show_again'] = $record->get_form_settings( 'popup_action_do_not_show_again' );
		}

		$ajax_handler->add_response_data( 'popup', $action_settings );
	}

	public function maybe_print_popup( $settings, $widget ) {
		if ( ! is_array( $settings['submit_actions'] ) || ! in_array( 'popup', $settings['submit_actions'] ) ) {
			return;
		}

		$has_valid_settings = ( ! empty( $settings['popup_action'] ) && 'open' === $settings['popup_action'] && ! empty( $settings['popup_action_popup_id'] ) );
		if ( ! $has_valid_settings ) {
			return;
		}

		Module::add_popup_to_location( $settings['popup_action_popup_id'] );
	}

	public function __construct() {
		/** @var FormsModule $forms_module */
		$forms_module = FormsModule::instance();

		// Register popup form action
		$forms_module->actions_registrar->register( $this );

		add_action( 'elementor-pro/forms/pre_render', [ $this, 'maybe_print_popup' ], 10, 2 );
	}
}
modules/popup/assets/images/triggers/page_load.svg000064400000010412150755004300016405 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g transform="translate(12.631579, 6.315789)">
            <path d="M11.5165481,10.1825079 L14.6635031,13.043376 C14.715123,13.0903032 14.7189272,13.1701914 14.672,13.2218113 C14.6480603,13.2481449 14.6141227,13.2631579 14.5785339,13.2631579 L8.28462403,13.2631579 C8.21486174,13.2631579 8.15830824,13.2066044 8.15830824,13.1368421 C8.15830824,13.1012533 8.17332122,13.0673156 8.19965483,13.043376 L11.3466098,10.1825079 C11.3947893,10.1387083 11.4683686,10.1387083 11.5165481,10.1825079 Z" fill="#71D7F7" transform="translate(11.431579, 11.684211) scale(1, -1) translate(-11.431579, -11.684211) "></path>
            <path d="M10.8021641,22.6684287 L11.9744991,22.7395718 C12.0381545,22.7434348 12.0889464,22.7941398 12.0929183,22.8577884 L12.1662104,24.0322737 C12.1705554,24.1019005 12.1176339,24.1618665 12.0480071,24.1662115 C12.0430315,24.166522 12.0380419,24.1665377 12.0330645,24.1662584 L10.8515719,24.0999751 C10.787295,24.096369 10.7360137,24.0449997 10.7325179,23.9807167 L10.6683833,22.8013717 C10.6645951,22.7317123 10.7179943,22.6721713 10.7876536,22.6683831 C10.7924873,22.6681203 10.7973322,22.6681355 10.8021641,22.6684287 Z" fill="#71D7F7" transform="translate(11.417327, 23.417327) rotate(-45.000000) translate(-11.417327, -23.417327) "></path>
            <path d="M9.91795361,25.0684287 L11.0902886,25.1395718 C11.1539439,25.1434348 11.2047359,25.1941398 11.2087078,25.2577884 L11.2819999,26.4322737 C11.2863448,26.5019005 11.2334234,26.5618665 11.1637966,26.5662115 C11.158821,26.566522 11.1538314,26.5665377 11.1488539,26.5662584 L9.96736139,26.4999751 C9.90308452,26.496369 9.85180314,26.4449997 9.84830733,26.3807167 L9.7841728,25.2013717 C9.78038462,25.1317123 9.83378376,25.0721713 9.90344311,25.0683831 C9.90827682,25.0681203 9.91312165,25.0681355 9.91795361,25.0684287 Z" fill="#71D7F7" transform="translate(10.533116, 25.817327) rotate(-45.000000) translate(-10.533116, -25.817327) "></path>
            <path d="M12.4442694,24.1842182 L13.6166044,24.2553613 C13.6802597,24.2592242 13.7310517,24.3099293 13.7350236,24.3735779 L13.8083157,25.5480632 C13.8126606,25.61769 13.7597392,25.677656 13.6901124,25.682001 C13.6851368,25.6823115 13.6801472,25.6823271 13.6751697,25.6820479 L12.4936772,25.6157645 C12.4294003,25.6121585 12.3781189,25.5607891 12.3746231,25.4965062 L12.3104886,24.3171611 C12.3067004,24.2475018 12.3600995,24.1879608 12.4297589,24.1841726 C12.4345926,24.1839098 12.4394374,24.183925 12.4442694,24.1842182 Z" fill="#71D7F7" transform="translate(13.059432, 24.933116) rotate(-45.000000) translate(-13.059432, -24.933116) "></path>
            <rect stroke="#A4AFB7" stroke-width="1.64210526" x="0.821052632" y="0.821052632" width="21.0947368" height="2.77894737" rx="1.38947368"></rect>
            <rect stroke="#A4AFB7" stroke-width="1.64210526" x="0.821052632" y="31.1368421" width="21.0947368" height="2.77894737" rx="1.38947368"></rect>
            <path d="M11.3684211,17.2475329 C12.6070668,16.1489688 14.1638359,14.7028853 16.0387284,12.9092825 C17.7228201,11.298208 21.1087068,8.44856945 21.1087068,6.35826994 C21.1087068,5.47191262 20.6428865,4.55283881 19.7112459,3.60104852 L11.3684211,3.60490337 L2.81303968,3.61392373 C1.90391139,4.62138713 1.44934725,5.51915645 1.44934725,6.3072317 C1.44934725,8.79014416 3.91089805,10.7299086 6.03592722,12.4897975 C7.80360659,13.9537395 9.58110454,15.5396513 11.3684211,17.2475329 Z" stroke="#A4AFB7" stroke-width="1.64210526"></path>
            <path d="M11.3684211,31.1422697 C12.6070668,30.0437056 14.1638359,28.5976221 16.0387284,26.8040193 C17.7228201,25.1929449 21.1087068,22.3433063 21.1087068,20.2530068 C21.1087068,19.3666495 20.6428865,18.4475757 19.7112459,17.4957854 L11.3684211,17.4996402 L2.81303968,17.5086606 C1.90391139,18.516124 1.44934725,19.4138933 1.44934725,20.2019685 C1.44934725,22.684881 3.91089805,24.6246454 6.03592722,26.3845343 C7.80360659,27.8484763 9.58110454,29.4343881 11.3684211,31.1422697 Z" stroke="#A4AFB7" stroke-width="1.64210526" transform="translate(11.279027, 24.319028) scale(1, -1) translate(-11.279027, -24.319028) "></path>
        </g>
    </g>
</svg>modules/popup/assets/images/triggers/inactivity.svg000064400000013514150755004300016663 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <rect fill="#F1F3F5" x="10.1052632" y="7.57894737" width="6.66517357" height="2.49944009"></rect>
        <path d="M25.3186678,42.3006785 C24.8010525,41.3110006 24.7121853,40.4483361 25.0520662,39.712685 C25.6807782,38.3518769 26.5975305,36.8659868 27.1774381,35.0601576 C27.8719631,32.8974101 28.3464828,30.3724405 28.6009971,27.4852488 C28.9074977,30.1189962 29.0145127,32.1891523 28.9220424,33.6957171 C28.741071,36.6441768 28.7205863,38.9432812 28.2358655,40.098787 C27.9154382,40.8626405 27.7952182,41.5755825 27.8752056,42.2376131 L25.3186678,42.3006785 Z" fill="#F1F3F5"></path>
        <path d="M24.8251433,18.1361878 C24.8605358,17.2525967 24.8728664,16.3013138 24.8621351,15.2823391 C24.8485006,13.9877009 25.0038305,13.2610302 25.2854488,12.3004997 C25.6335695,11.1131457 26.4007105,10.3412569 26.7212843,9.34299163 C27.4158093,7.18024415 28.0972837,3.76399013 28.7657075,-0.905770441 C29.2830044,4.55016489 29.4954177,8.03141495 29.4029473,9.53797974 C29.328075,10.7578289 28.2053933,11.6228079 27.822112,13.5156409 C27.6658918,14.2871335 27.6717905,15.800602 27.8398082,18.0560463 L24.8251433,18.1361878 Z" fill="#F1F3F5" transform="translate(27.124563, 8.615209) scale(1, -1) rotate(-270.000000) translate(-27.124563, -8.615209) "></path>
        <path d="M8.05125367,11.3684211 L18.1916632,11.3815275 L18.3145559,19.1666324 L14.7274385,19.8003701 C15.6628796,15.7037943 14.9509532,13.6796438 12.5916591,13.7279185 C10.232365,13.7761933 9.59572096,15.9341768 10.6817269,20.201869 L8.12618215,20.775185 L8.05125367,11.3684211 Z" fill="#71D7F7"></path>
        <path d="M7.85362112,20.0526316 L7.85362112,12.4210526 C7.85362112,11.5785263 8.54253645,10.8947368 9.39137856,10.8947368 L17.0801657,10.8947368 C17.9290078,10.8947368 18.6179232,11.5785263 18.6179232,12.4210526 L18.6179232,18.4622105" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M20.1556806,15.4736842 L20.1556806,17" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M6.31586369,7.84210526 L21.5442756,7.84210526 C23.0651177,6.85610526 24.9119644,6.31578947 26.8664541,6.31578947 L36.3021337,6.31578947 C37.5769346,6.31578947 38.6087699,7.33994737 38.6087699,8.60526316 C38.6087699,9.87057895 37.5769346,10.8947368 36.3021337,10.8947368 L37.8398911,10.8947368 C39.1146921,10.8947368 40.1465273,11.9188947 40.1465273,13.1842105 C40.1465273,14.4495263 39.1146921,15.4736842 37.8398911,15.4736842 L37.0710124,15.4736842 L39.3776486,15.4736842 C40.6524495,15.4736842 41.6842847,16.4978421 41.6842847,17.7631579 C41.6842847,19.0284737 40.6524495,20.0526316 39.3776486,20.0526316 L35.533255,20.0526316 L37.8398911,20.0526316 C39.1146921,20.0526316 40.1465273,21.0767895 40.1465273,22.3421053 C40.1465273,23.6074211 39.1146921,24.6315789 37.8398911,24.6315789 L31.9349026,24.6315789 L35.533255,24.6315789 L33.8986188,26.2540526 C33.5003397,26.6493684 33.0051818,27.0523158 32.4577401,27.4277895" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M9.39137856,10.8947368 L9.39137856,7.84210526" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M17.0801657,10.8947368 L17.0801657,7.84210526" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M27.8444678,41.4210526 L27.8444678,40.0427895 C28.8378591,38.5332632 29.3822252,36.7001579 29.3822252,34.7602105 L29.3822252,26.9210526 C29.3822252,25.6557368 28.35039,24.6315789 27.0755891,24.6315789 C25.8007882,24.6315789 24.7689529,25.6557368 24.7689529,26.9210526 L24.7689529,25.3947368 C24.7689529,24.1294211 23.7371177,23.1052632 22.4623168,23.1052632 C21.1875159,23.1052632 20.1556806,24.1294211 20.1556806,25.3947368 L20.1556806,26.1578947 L20.1556806,23.8684211 C20.1556806,22.6031053 19.1238454,21.5789474 17.8490445,21.5789474 C16.5742435,21.5789474 15.5424083,22.6031053 15.5424083,23.8684211 L15.5424083,26.1578947 L15.5424083,16.2368421 C15.5424083,14.9715263 14.5105731,13.9473684 13.2357722,13.9473684 C11.9609712,13.9473684 10.929136,14.9715263 10.929136,16.2368421 L10.929136,32.2631579 L10.929136,26.1578947 L9.29449984,27.7788421 C7.84747009,29.2166316 6.32816574,31.8815789 6.31586369,33.7894737 C6.30356163,35.7278947 7.82286597,38.4340526 9.29449984,39.8947368 C9.76812913,40.3358421 10.1479552,40.8563158 10.421676,41.4256316" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M27.8444678,41.4210526 L27.8444678,40.0427895 C28.8378591,38.5332632 29.3822252,36.7001579 29.3822252,34.7602105 L29.3822252,26.9210526 C29.3822252,25.6557368 28.35039,24.6315789 27.0755891,24.6315789 C25.8007882,24.6315789 24.7689529,25.6557368 24.7689529,26.9210526 L24.7689529,25.3947368 C24.7689529,24.1294211 23.7371177,23.1052632 22.4623168,23.1052632 C21.1875159,23.1052632 20.1556806,24.1294211 20.1556806,25.3947368 L20.1556806,23.8684211 C20.1556806,22.6031053 19.1238454,21.5789474 17.8490445,21.5789474 C16.5742435,21.5789474 15.5424083,22.6031053 15.5424083,23.8684211 L15.5424083,16.2368421 C15.5424083,14.9715263 14.5105731,13.9473684 13.2357722,13.9473684 C11.9609712,13.9473684 10.929136,14.9715263 10.929136,16.2368421 L10.929136,26.1578947 L9.29449984,27.7788421 C7.84747009,29.2166316 6.32816574,31.8815789 6.31586369,33.7894737 C6.30356163,35.7278947 7.82286597,38.4340526 9.29449984,39.8947368 C9.76812913,40.3358421 10.1479552,40.8563158 10.421676,41.4256316" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
    </g>
</svg>modules/popup/assets/images/triggers/exit_intent.svg000064400000003473150755004300017035 0ustar00<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
	.st0{fill:#F1F3F5;}
	.st1{fill:none;stroke:#A4AFB7;stroke-width:1.6421;stroke-linecap:round;stroke-linejoin:round;}
	.st2{fill-rule:evenodd;clip-rule:evenodd;fill:#A4AFB7;}
	.st3{fill:none;stroke:#71D7F7;stroke-width:1.6421;stroke-linecap:round;stroke-linejoin:round;}
</style>
<g id="On-Page-Exit-Intent-Copy">
	<g id="Group-2" transform="translate(5.000000, 7.000000)">
		<polygon id="Rectangle-Copy-7" class="st0" points="36.5,6.9 36.5,33 10.2,33 		"/>
		<path id="Stroke-14" class="st1" d="M37.2,30.7c0,1.8-1.4,3.2-3.2,3.2H4c-1.7,0-3.2-1.4-3.2-3.2V3.3c0-1.8,1.4-3.2,3.2-3.2h30
			c1.7,0,3.2,1.4,3.2,3.2V30.7L37.2,30.7z"/>
		<path id="Stroke-16" class="st1" d="M0.8,6.6h36.3"/>
		<path id="Fill-18" class="st2" d="M4.8,3.3c0,0.4-0.4,0.8-0.8,0.8S3.2,3.8,3.2,3.3S3.6,2.5,4,2.5S4.8,2.9,4.8,3.3"/>
		<path id="Fill-20" class="st2" d="M7.9,3.3c0,0.4-0.4,0.8-0.8,0.8S6.4,3.8,6.4,3.3s0.4-0.8,0.8-0.8S7.9,2.9,7.9,3.3"/>
		<path id="Fill-22" class="st2" d="M11.1,3.3c0,0.4-0.4,0.8-0.8,0.8c-0.4,0-0.8-0.4-0.8-0.8s0.4-0.8,0.8-0.8
			C10.8,2.5,11.1,2.9,11.1,3.3"/>
		<g id="Group" transform="translate(3.000000, 9.000000)">
			<path id="Stroke-9-Copy-2" class="st3" d="M1.1,3.1l2.7-2.7"/>
			<path id="Stroke-9-Copy" class="st3" d="M1.1,0.5l2.7,2.7"/>
		</g>
		<g id="Group-79" transform="translate(11.000000, 16.000000)">
			<path id="Stroke-822" class="st1" d="M12.7,12.8L0.1,0.2"/>
			<polyline id="Stroke-823" class="st1" points="6.4,0.2 0.1,0.2 0.1,6.5 			"/>
		</g>
	</g>
</g>
</svg>
modules/popup/assets/images/triggers/scrolling_to.svg000064400000004701150755004300017174 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <polygon fill="#F1F3F5" points="41.5194508 13.8947368 41.5194508 40 15.1578947 40"></polygon>
        <g transform="translate(5.052632, 6.315789)">
            <path d="M37.1052632,31.3492823 C37.1052632,33.1257416 35.6921053,34.5645933 33.9473684,34.5645933 L3.94736842,34.5645933 C2.20263158,34.5645933 0.789473684,33.1257416 0.789473684,31.3492823 L0.789473684,4.01913876 C0.789473684,2.24267943 2.20263158,0.803827751 3.94736842,0.803827751 L33.9473684,0.803827751 C35.6921053,0.803827751 37.1052632,2.24267943 37.1052632,4.01913876 L37.1052632,31.3492823 L37.1052632,31.3492823 Z" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M0.789473684,7.23444976 L37.1052632,7.23444976" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M4.73684211,4.01913876 C4.73684211,4.46285167 4.38315789,4.82296651 3.94736842,4.82296651 C3.51157895,4.82296651 3.15789474,4.46285167 3.15789474,4.01913876 C3.15789474,3.57542584 3.51157895,3.215311 3.94736842,3.215311 C4.38315789,3.215311 4.73684211,3.57542584 4.73684211,4.01913876" fill="#A4AFB7"></path>
            <path d="M7.89473684,4.01913876 C7.89473684,4.46285167 7.54105263,4.82296651 7.10526316,4.82296651 C6.66947368,4.82296651 6.31578947,4.46285167 6.31578947,4.01913876 C6.31578947,3.57542584 6.66947368,3.215311 7.10526316,3.215311 C7.54105263,3.215311 7.89473684,3.57542584 7.89473684,4.01913876" fill="#A4AFB7"></path>
            <path d="M11.0526316,4.01913876 C11.0526316,4.46285167 10.6989474,4.82296651 10.2631579,4.82296651 C9.82736842,4.82296651 9.47368421,4.46285167 9.47368421,4.01913876 C9.47368421,3.57542584 9.82736842,3.215311 10.2631579,3.215311 C10.6989474,3.215311 11.0526316,3.57542584 11.0526316,4.01913876" fill="#A4AFB7"></path>
            <polyline stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" points="11.8421053 15.2727273 16.5789474 20.0956938 11.8421053 24.9186603"></polyline>
            <path d="M19.7368421,23.3110048 L27.6315789,23.3110048" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        </g>
    </g>
</svg>modules/popup/assets/images/triggers/scrolling.svg000064400000006072150755004300016475 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <path d="M21.5384457,33.1173417 C21.8647967,33.5218169 22.4883799,33.943468 23.4091953,34.382295 C28.4935214,36.8052992 33.1450966,34.723273 34.3050987,33.5822368 C36.2697707,31.649687 37.5449557,27.6240394 38.1306538,21.505294 C39.2211897,29.0517423 38.5032517,33.8998321 35.9768397,36.0495633 C34.7666236,37.0793398 30.220758,38.4559025 26.5808843,37.6373854 C25.0336203,37.2894442 23.3528075,35.782763 21.5384457,33.1173417 Z" fill="#F1F3F5"></path>
        <g transform="translate(8.842105, 3.789474)" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.64210526">
            <g transform="translate(5.052632, 1.263158)">
                <path d="M16.570279,20.7631579 L19.8203107,18.6010263 C21.3948603,17.5561974 23.5144463,17.9185658 24.6489294,19.4264211 C25.2323202,20.2014868 25.1778166,21.2805395 24.5217543,21.9952105 L16.3522644,30.8833026 C15.2036507,32.1314605 13.5846907,32.8421053 11.8870033,32.8421053 L8.49566579,32.8421053 C4.03646067,32.8421053 0.421052632,29.2365395 0.421052632,24.7894737 L0.421052632,16.7368421 C0.421052632,15.6255789 1.32540931,14.7236842 2.43970592,14.7236842 C3.55400254,14.7236842 4.45835921,15.6255789 4.45835921,16.7368421 L4.45835921,17.7434211 L4.45835921,14.7236842 C4.45835921,13.6124211 5.36271589,12.7105263 6.4770125,12.7105263 C7.59130912,12.7105263 8.49566579,13.6124211 8.49566579,14.7236842 L8.49566579,17.7434211 L8.49566579,12.7105263 C8.49566579,11.5992632 9.40002247,10.6973684 10.5143191,10.6973684 C11.6286157,10.6973684 12.5329724,11.5992632 12.5329724,12.7105263 L12.5329724,17.7434211 L12.5329724,6.67105263 C12.5329724,5.55978947 13.437329,4.65789474 14.5516257,4.65789474 C15.6659223,4.65789474 16.570279,5.55978947 16.570279,6.67105263 L16.570279,20.7631579" stroke="#A4AFB7" transform="translate(12.736842, 18.750000) scale(-1, 1) translate(-12.736842, -18.750000) "></path>
                <path d="M15.8344421,7.83606041 C15.9557053,7.38395973 16.0421053,6.91648146 16.0421053,6.42593684 C16.0421053,3.45345172 13.6668632,1.04378581 10.7368421,1.04378581 C7.80682105,1.04378581 5.43157895,3.45345172 5.43157895,6.42593684 C5.43157895,7.37473318 5.69381053,8.25279268 6.11974737,9.02782243" stroke="#71D7F7"></path>
            </g>
            <g transform="translate(0.000000, 27.789474)" stroke="#A4AFB7">
                <path d="M3.78947368,0.768878719 L3.78947368,13.0709382"></path>
                <polyline points="6.82105263 9.99542334 3.78947368 13.0709382 0.757894737 9.99542334"></polyline>
            </g>
            <g transform="translate(3.789474, 6.947368) scale(1, -1) translate(-3.789474, -6.947368) " stroke="#A4AFB7">
                <path d="M3.78947368,0.768878719 L3.78947368,13.0709382"></path>
                <polyline points="6.82105263 9.99542334 3.78947368 13.0709382 0.757894737 9.99542334"></polyline>
            </g>
        </g>
    </g>
</svg>modules/popup/assets/images/triggers/click.svg000064400000007212150755004300015563 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g transform="translate(12.631579, 16.421053)">
            <path d="M7.64370888,24.2752364 C7.97005988,24.6797116 8.59364306,25.1013627 9.51445843,25.5401897 C14.5987846,27.9631939 19.2503598,25.8811678 20.4103618,24.7401316 C22.3750338,22.8075817 23.6502188,18.7819341 24.2359169,12.6631887 C25.3264528,20.209637 24.6085148,25.0577268 22.0821029,27.2074581 C20.8718867,28.2372345 16.3260212,29.6137973 12.6861474,28.7952801 C11.1388835,28.4473389 9.45807064,26.9406577 7.64370888,24.2752364 Z" fill="#F1F3F5"></path>
            <path d="M16.570279,16.9736842 L19.8203107,14.8115526 C21.3948603,13.7667237 23.5144463,14.1290921 24.6489294,15.6369474 C25.2323202,16.4120132 25.1778166,17.4910658 24.5217543,18.2057368 L16.3522644,27.0938289 C15.2036507,28.3419868 13.5846907,29.0526316 11.8870033,29.0526316 L8.49566579,29.0526316 C4.03646067,29.0526316 0.421052632,25.4470658 0.421052632,21 L0.421052632,12.9473684 C0.421052632,11.8361053 1.32540931,10.9342105 2.43970592,10.9342105 C3.55400254,10.9342105 4.45835921,11.8361053 4.45835921,12.9473684 L4.45835921,13.9539474 L4.45835921,10.9342105 C4.45835921,9.82294737 5.36271589,8.92105263 6.4770125,8.92105263 C7.59130912,8.92105263 8.49566579,9.82294737 8.49566579,10.9342105 L8.49566579,13.9539474 L8.49566579,8.92105263 C8.49566579,7.80978947 9.40002247,6.90789474 10.5143191,6.90789474 C11.6286157,6.90789474 12.5329724,7.80978947 12.5329724,8.92105263 L12.5329724,13.9539474 L12.5329724,2.88157895 C12.5329724,1.77031579 13.437329,0.868421053 14.5516257,0.868421053 C15.6659223,0.868421053 16.570279,1.77031579 16.570279,2.88157895 L16.570279,16.9736842" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(12.736842, 14.960526) scale(-1, 1) translate(-12.736842, -14.960526) "></path>
        </g>
        <path d="M18.0631579,18.8842105 C18.0631579,15.9190526 20.5135439,13.5157895 23.5368421,13.5157895 C26.5601404,13.5157895 29.0105263,15.9190526 29.0105263,18.8842105" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(23.536842, 16.200000) scale(-1, 1) translate(-23.536842, -16.200000) "></path>
        <path d="M21.1578947,2.52631579 L21.1578947,6.55263158" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(22.526316, 4.539474) scale(-1, 1) translate(-22.526316, -4.539474) "></path>
        <path d="M7.57894737,18.6315789 L11.6842105,18.6315789" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(9.631579, 19.973684) scale(-1, 1) translate(-9.631579, -19.973684) "></path>
        <path d="M40.4210526,18.6315789 L36.3157895,18.6315789" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(38.368421, 19.973684) scale(-1, 1) translate(-38.368421, -19.973684) "></path>
        <path d="M11.6842105,10.5789474 L14.4210526,6.55263158" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(13.052632, 8.565789) scale(-1, 1) translate(-13.052632, -8.565789) "></path>
        <path d="M36.3157895,10.5789474 L33.5789474,6.55263158" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(34.947368, 8.565789) scale(-1, 1) translate(-34.947368, -8.565789) "></path>
    </g>
</svg>modules/popup/assets/images/triggers-tab.svg000064400000007077150755004300015253 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g  stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <path d="M20.2752878,40.6962891 C20.6016388,41.1007643 21.225222,41.5224154 22.1460374,41.9612424 C27.2303635,44.3842466 31.8819387,42.3022204 33.0419408,41.1611842 C35.0066128,39.2286343 36.2817978,35.2029867 36.8674959,29.0842414 C37.9580318,36.6306896 37.2400938,41.4787794 34.7136818,43.6285107 C33.5034657,44.6582871 28.9576001,46.0348499 25.3177264,45.2163328 C23.7704624,44.8683916 22.0896496,43.3617103 20.2752878,40.6962891 Z" fill="#F1F3F5" fill-rule="nonzero"></path>
        <path d="M29.2018579,33.3947368 L32.4518897,31.2326053 C34.0264393,30.1877763 36.1460252,30.5501447 37.2805084,32.058 C37.8638992,32.8330658 37.8093955,33.9121184 37.1533332,34.6267895 L28.9838433,43.5148816 C27.8352296,44.7630395 26.2162697,45.4736842 24.5185823,45.4736842 L21.1272447,45.4736842 C16.6680396,45.4736842 13.0526316,41.8681184 13.0526316,37.4210526 L13.0526316,29.3684211 C13.0526316,28.2571579 13.9569883,27.3552632 15.0712849,27.3552632 C16.1855815,27.3552632 17.0899382,28.2571579 17.0899382,29.3684211 L17.0899382,30.375 L17.0899382,27.3552632 C17.0899382,26.244 17.9942948,25.3421053 19.1085914,25.3421053 C20.2228881,25.3421053 21.1272447,26.244 21.1272447,27.3552632 L21.1272447,30.375 L21.1272447,25.3421053 C21.1272447,24.2308421 22.0316014,23.3289474 23.145898,23.3289474 C24.2601946,23.3289474 25.1645513,24.2308421 25.1645513,25.3421053 L25.1645513,30.375 L25.1645513,19.3026316 C25.1645513,18.1913684 26.068908,17.2894737 27.1832046,17.2894737 C28.2975012,17.2894737 29.2018579,18.1913684 29.2018579,19.3026316 L29.2018579,33.3947368" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(25.368421, 31.381579) scale(-1, 1) translate(-25.368421, -31.381579) "></path>
        <path d="M18.0631579,18.8842105 C18.0631579,15.9190526 20.5135439,13.5157895 23.5368421,13.5157895 C26.5601404,13.5157895 29.0105263,15.9190526 29.0105263,18.8842105" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(23.536842, 16.200000) scale(-1, 1) translate(-23.536842, -16.200000) "></path>
        <path d="M21.1578947,2.52631579 L21.1578947,6.55263158" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(22.526316, 4.539474) scale(-1, 1) translate(-22.526316, -4.539474) "></path>
        <path d="M7.57894737,18.6315789 L11.6842105,18.6315789" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(9.631579, 19.973684) scale(-1, 1) translate(-9.631579, -19.973684) "></path>
        <path d="M40.4210526,18.6315789 L36.3157895,18.6315789" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(38.368421, 19.973684) scale(-1, 1) translate(-38.368421, -19.973684) "></path>
        <path d="M11.6842105,10.5789474 L14.4210526,6.55263158" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(13.052632, 8.565789) scale(-1, 1) translate(-13.052632, -8.565789) "></path>
        <path d="M36.3157895,10.5789474 L33.5789474,6.55263158" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(34.947368, 8.565789) scale(-1, 1) translate(-34.947368, -8.565789) "></path>
    </g>
</svg>modules/popup/assets/images/timing/sources.svg000064400000006142150755004300015623 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <path d="M10.1052632,10.1052632 C10.1052632,10.4538947 9.82231579,10.7368421 9.47368421,10.7368421 C9.12505263,10.7368421 8.84210526,10.4538947 8.84210526,10.1052632 C8.84210526,9.75663158 9.12505263,9.47368421 9.47368421,9.47368421 C9.82231579,9.47368421 10.1052632,9.75663158 10.1052632,10.1052632" fill="#A4AFB7"></path>
        <path d="M12.6315789,10.1052632 C12.6315789,10.4538947 12.3486316,10.7368421 12,10.7368421 C11.6513684,10.7368421 11.3684211,10.4538947 11.3684211,10.1052632 C11.3684211,9.75663158 11.6513684,9.47368421 12,9.47368421 C12.3486316,9.47368421 12.6315789,9.75663158 12.6315789,10.1052632" fill="#A4AFB7"></path>
        <path d="M15.1578947,10.1052632 C15.1578947,10.4538947 14.8749474,10.7368421 14.5263158,10.7368421 C14.1776842,10.7368421 13.8947368,10.4538947 13.8947368,10.1052632 C13.8947368,9.75663158 14.1776842,9.47368421 14.5263158,9.47368421 C14.8749474,9.47368421 15.1578947,9.75663158 15.1578947,10.1052632" fill="#A4AFB7"></path>
        <polygon fill="#F1F3F5" points="37.3894737 12.6315789 37.3894737 26.1408306 26.1058285 26.323088 26.2751336 39.2321111 6.69473684 39.2321111"></polygon>
        <path d="M29.7416268,37.5915212 L37.5915212,29.7416268" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(33.666574, 33.666574) scale(-1, 1) translate(-33.666574, -33.666574) "></path>
        <polyline stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(31.980861, 31.980861) scale(-1, 1) translate(-31.980861, -31.980861) " points="29.7416268 29.7416268 34.2200957 29.7416268 34.2200957 34.2200957"></polyline>
        <rect stroke="#A4AFB7" stroke-width="1.64210526" x="26.0842105" y="26.0842105" width="14.7789474" height="14.7789474" rx="1.54385965"></rect>
        <path d="M25.5683887,39.1578947 L9.32330827,39.1578947 C7.66165414,39.1578947 6.31578947,37.8120301 6.31578947,36.1503759 L6.31578947,10.5864662 C6.31578947,8.92481203 7.66165414,7.57894737 9.32330827,7.57894737 L34.887218,7.57894737 C36.5488722,7.57894737 37.8947368,8.92481203 37.8947368,10.5864662 L37.8947368,25.4839387" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M6.31578947,12.6315789 L37.8947368,12.6315789" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M34.2947368,26.0842105 L26.5263158,26.0842105 C26.2821478,26.0842105 26.0842105,26.2821478 26.0842105,26.5263158 L26.0842105,36.1894737 L10.9894737,36.1894737 C10.3964943,36.1894737 9.91578947,35.7087689 9.91578947,35.1157895 L9.91578947,16.6736842 C9.91578947,16.0807048 10.3964943,15.6 10.9894737,15.6 L33.2210526,15.6 C33.814032,15.6 34.2947368,16.0807048 34.2947368,16.6736842 L34.2947368,26.0842105 Z" stroke="#A4AFB7" stroke-width="1.64210526"></path>
    </g>
</svg>modules/popup/assets/images/timing/logged_in.svg000064400000007120150755004300016064 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g id="Hide-for-logged-in-users-Copy" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="Group-2" transform="translate(5.684211, 8.842105)">
            <path d="M17.4166207,30.2731577 L17.4166207,17.0123577 C17.4586316,17.0115729 17.500738,17.0111788 17.5429365,17.0111788 C21.2054564,17.0111788 24.1745154,19.9802378 24.1745154,23.6427577 C24.1745154,27.3052776 21.2054564,30.2743367 17.5429365,30.2743367 C17.500738,30.2743367 17.4586316,30.2739425 17.4166207,30.2731577 Z" id="Combined-Shape" fill="#F1F3F5" fill-rule="nonzero" transform="translate(20.795568, 23.642758) rotate(-319.000000) translate(-20.795568, -23.642758) "></path>
            <path d="M22.2315789,4.79317895 C22.2315789,7.30484211 20.1958737,9.34054737 17.6842105,9.34054737 C15.1725474,9.34054737 13.1368421,7.30484211 13.1368421,4.79317895 C13.1368421,2.28151579 15.1725474,0.245810526 17.6842105,0.245810526 C20.1958737,0.245810526 22.2315789,2.28151579 22.2315789,4.79317895 Z" id="Stroke-6293" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M32.3522087,9.34054737 C32.3522087,11.0154947 30.9955771,12.3721263 29.3206297,12.3721263 C27.6456824,12.3721263 26.2890508,11.0154947 26.2890508,9.34054737 C26.2890508,7.6656 27.6456824,6.30896842 29.3206297,6.30896842 C30.9955771,6.30896842 32.3522087,7.6656 32.3522087,9.34054737 Z" id="Stroke-6294" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M4.10448879,9.34054737 C4.10448879,11.0154947 5.46112037,12.3721263 7.13606773,12.3721263 C8.80949931,12.3721263 10.1676467,11.0154947 10.1676467,9.34054737 C10.1676467,7.6656 8.80949931,6.30896842 7.13606773,6.30896842 C5.46112037,6.30896842 4.10448879,7.6656 4.10448879,9.34054737 Z" id="Stroke-6295" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M8.7696,21.4668632 C8.7696,16.4435368 13.0475314,12.3721263 18.3256641,12.3721263 C23.6037968,12.3721263 27.8817281,16.4435368 27.8817281,21.4668632" id="Stroke-6296" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M26.17613,16.2784674 C27.1381071,15.7236884 28.2673153,15.4038568 29.4745648,15.4038568 C32.992789,15.4038568 35.8452741,18.1186358 35.8452741,21.4670147" id="Stroke-6297" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M10.4751982,16.2784674 C9.51322105,15.7236884 8.38401281,15.4038568 7.17676339,15.4038568 C3.65853913,15.4038568 0.806054005,18.1186358 0.806054005,21.4670147" id="Stroke-6298" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <circle id="Oval" stroke="#A4AFB7" stroke-width="1.64210526" fill-rule="nonzero" cx="18.3789474" cy="21.7894737" r="6.63157895"></circle>
            <g id="Group" transform="translate(15.157895, 18.694737)" fill-rule="nonzero" stroke="#71D7F7" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.64210526">
                <path d="M0.569968357,5.98433388 L5.40776964,0.378947368" id="Path-23"></path>
                <path d="M0.569968357,5.98433388 L5.40776964,0.378947368" id="Path-23-Copy" transform="translate(2.988869, 3.181641) scale(-1, 1) translate(-2.988869, -3.181641) "></path>
            </g>
        </g>
    </g>
</svg>modules/popup/assets/images/timing/times.svg000064400000007314150755004300015263 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g transform="translate(3.789474, 6.315789)">
            <path d="M33.4317434,7.57894737 L33.4317434,20.5701069 C31.4454047,20.3902772 30.000195,20.4573516 29.0961143,20.7713302 C28.3366647,21.0350797 27.468801,21.6433163 26.4925232,22.5960398 L26.4925256,22.5960423 C26.1200958,22.9594865 25.8265126,23.3957422 25.6300727,23.8776208 C24.8116366,25.8852924 24.3871113,27.4130304 24.3564967,28.4608347 C24.3224188,29.6271726 24.7443452,31.2964777 25.6222759,33.46875 L8.84210526,33.46875 L1.06224301,33.3438528 L33.4317434,7.57894737 Z" fill="#F1F3F5"></path>
            <path d="M26.3853824,34.2425629 L3.91578947,34.2425629 C2.18501053,34.2425629 0.783157895,32.8171167 0.783157895,31.0572082 L0.783157895,3.98169336 C0.783157895,2.2217849 2.18501053,0.796338673 3.91578947,0.796338673 L30.5431579,0.796338673 C32.2739368,0.796338673 33.6757895,2.2217849 33.6757895,3.98169336 L33.6757895,20.2136102" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M0.783157895,7.16704805 L33.6757895,7.16704805" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M4.69894737,3.98169336 C4.69894737,4.42127231 4.34809263,4.77803204 3.91578947,4.77803204 C3.48348632,4.77803204 3.13263158,4.42127231 3.13263158,3.98169336 C3.13263158,3.54211442 3.48348632,3.18535469 3.91578947,3.18535469 C4.34809263,3.18535469 4.69894737,3.54211442 4.69894737,3.98169336" fill="#A4AFB7"></path>
            <path d="M7.83157895,3.98169336 C7.83157895,4.42127231 7.48072421,4.77803204 7.04842105,4.77803204 C6.61611789,4.77803204 6.26526316,4.42127231 6.26526316,3.98169336 C6.26526316,3.54211442 6.61611789,3.18535469 7.04842105,3.18535469 C7.48072421,3.18535469 7.83157895,3.54211442 7.83157895,3.98169336" fill="#A4AFB7"></path>
            <path d="M10.9642105,3.98169336 C10.9642105,4.42127231 10.6133558,4.77803204 10.1810526,4.77803204 C9.74874947,4.77803204 9.39789474,4.42127231 9.39789474,3.98169336 C9.39789474,3.54211442 9.74874947,3.18535469 10.1810526,3.18535469 C10.6133558,3.18535469 10.9642105,3.54211442 10.9642105,3.98169336" fill="#A4AFB7"></path>
            <path d="M34.1365169,26.8708134 C34.1365169,28.1503607 33.1068012,29.187435 31.8363329,29.187435 C30.5658646,29.187435 29.5361489,28.1503607 29.5361489,26.8708134 C29.5361489,25.5912661 30.5658646,24.5541918 31.8363329,24.5541918 C33.1068012,24.5541918 34.1365169,25.5912661 34.1365169,26.8708134 Z" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M27.2359646,34.2998327 C27.2359646,31.7407381 29.295396,29.6665896 31.8363327,29.6665896 C34.3772693,29.6665896 36.4367007,31.7407381 36.4367007,34.2998327" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <ellipse stroke="#A4AFB7" stroke-width="1.64210526" cx="31.8315789" cy="28.173913" rx="7.83157895" ry="7.96338673"></ellipse>
            <path d="M30.3157904,20.3595706 C26.7159377,21.07743 24,24.3031628 24,28.173913 C24,28.9159512 24.0998118,29.6342848 24.2865285,30.3157895 L4.7313528,30.3157895 C4.59182823,30.3157895 4.47872122,30.2026825 4.47872122,30.0631579 L4.47872122,11.6210459 C4.47872122,11.4815214 4.59182823,11.3684144 4.7313528,11.3684144 L30.0631588,11.3684144 C30.2026834,11.3684144 30.3157904,11.4815214 30.3157904,11.6210459 L30.3157904,20.3595706 Z" stroke="#A4AFB7" stroke-width="1.64210526"></path>
        </g>
    </g>
</svg>modules/popup/assets/images/timing/devices.svg000064400000010756150755004300015570 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <path d="M39.7894737,7.57894737 L39.7894737,17.1749075 L33.9867507,17.8006645 C32.7935306,17.9293396 31.8555283,18.8797332 31.7425229,20.0745391 L30.7739001,30.3157895 L13.8947368,30.3157895 L39.7894737,7.57894737 Z" fill="#F1F3F5"></path>
        <path d="M43.4054367,22.5173455 L43.4054367,33.8857666 C43.4054367,35.2810123 42.2743666,36.4120824 40.8791209,36.4120824 L31.4054367,36.4120824 L43.4054367,22.5173455 Z" fill="#F1F3F5"></path>
        <path d="M5.53846154,25.2845767 L5.53846154,32.1649428 C5.53846154,33.9232586 6.9314332,35.3502975 8.64777328,35.3502975 L36.6315789,35.3502975 C38.347919,35.3502975 39.7408907,33.9232586 39.7408907,32.1649428 L39.7408907,20.5791172 L39.7408907,9.86745995 C39.7408907,8.10914416 38.347919,6.68210526 36.6315789,6.68210526 L15.2496629,6.68210526" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(22.639676, 21.016201) scale(-1, -1) translate(-22.639676, -21.016201) "></path>
        <path d="M33.5222672,41.7210069 L28.8696862,41.7210069 L21.456794,41.7210069 L11.757085,41.7210069 C11.757085,39.9626911 13.1500567,38.5356522 14.8663968,38.5356522 L23.9963942,38.5356522 L30.4129555,38.5356522" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M5.53846154,30.5722654 L30.3935223,30.5722654" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M21.0850202,38.5356522 L21.0850202,35.3502975" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M24.194332,38.5356522 L24.194332,35.3502975" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M40.8874494,41.6997712 L33.891498,41.6997712 C32.2354563,41.6997712 30.8932331,40.2737941 30.8932331,38.5144165 L30.8932331,20.4640732 C30.8932331,18.7046957 32.2354563,17.2787185 33.891498,17.2787185 L40.8874494,17.2787185 C42.543491,17.2787185 43.8857143,18.7046957 43.8857143,20.4640732 L43.8857143,38.5144165 C43.8857143,40.2737941 42.543491,41.6997712 40.8874494,41.6997712 L40.8874494,41.6997712 Z" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M30.8932331,21.5258581 L43.8857143,21.5258581" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M30.8932331,36.3908467 L43.8857143,36.3908467" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M37.8891845,39.0453089 C37.8891845,39.3383616 37.6653141,39.5762014 37.3894737,39.5762014 C37.1136333,39.5762014 36.8897629,39.3383616 36.8897629,39.0453089 C36.8897629,38.7522563 37.1136333,38.5144165 37.3894737,38.5144165 C37.6653141,38.5144165 37.8891845,38.7522563 37.8891845,39.0453089 L37.8891845,39.0453089 Z" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M23.7362637,32.7782151 C23.7362637,33.0712677 23.5123933,33.3091076 23.2365529,33.3091076 C22.9607126,33.3091076 22.7368421,33.0712677 22.7368421,32.7782151 C22.7368421,32.4851625 22.9607126,32.2473227 23.2365529,32.2473227 C23.5123933,32.2473227 23.7362637,32.4851625 23.7362637,32.7782151 L23.7362637,32.7782151 Z" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M35.8903412,19.4022883 L38.8886061,19.4022883" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
        <path d="M15.2433572,12.1894737 L10.9263158,21.3830128 L10.9263158,24.9824561 C10.9263158,25.3816514 11.2499275,25.7052632 11.6491228,25.7052632 L33.8245614,25.7052632 C34.2237567,25.7052632 34.5473684,25.3816514 34.5473684,24.9824561 L34.5473684,12.9122807 C34.5473684,12.5130854 34.2237567,12.1894737 33.8245614,12.1894737 L15.2433572,12.1894737 Z" stroke="#A4AFB7" stroke-width="1.64210526" transform="translate(22.736842, 18.947368) scale(-1, -1) translate(-22.736842, -18.947368) "></path>
        <rect stroke="#A4AFB7" stroke-width="1.64210526" x="34.2947368" y="24.8210526" width="5.93684211" height="8.46315789" rx="1.54385965"></rect>
    </g>
</svg>modules/popup/assets/images/timing/visits.svg000064400000007314150755004300015463 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g transform="translate(3.789474, 6.315789)">
            <path d="M33.4317434,7.57894737 L33.4317434,20.5701069 C31.4454047,20.3902772 30.000195,20.4573516 29.0961143,20.7713302 C28.3366647,21.0350797 27.468801,21.6433163 26.4925232,22.5960398 L26.4925256,22.5960423 C26.1200958,22.9594865 25.8265126,23.3957422 25.6300727,23.8776208 C24.8116366,25.8852924 24.3871113,27.4130304 24.3564967,28.4608347 C24.3224188,29.6271726 24.7443452,31.2964777 25.6222759,33.46875 L8.84210526,33.46875 L1.06224301,33.3438528 L33.4317434,7.57894737 Z" fill="#F1F3F5"></path>
            <path d="M26.3853824,34.2425629 L3.91578947,34.2425629 C2.18501053,34.2425629 0.783157895,32.8171167 0.783157895,31.0572082 L0.783157895,3.98169336 C0.783157895,2.2217849 2.18501053,0.796338673 3.91578947,0.796338673 L30.5431579,0.796338673 C32.2739368,0.796338673 33.6757895,2.2217849 33.6757895,3.98169336 L33.6757895,20.2136102" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M0.783157895,7.16704805 L33.6757895,7.16704805" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M4.69894737,3.98169336 C4.69894737,4.42127231 4.34809263,4.77803204 3.91578947,4.77803204 C3.48348632,4.77803204 3.13263158,4.42127231 3.13263158,3.98169336 C3.13263158,3.54211442 3.48348632,3.18535469 3.91578947,3.18535469 C4.34809263,3.18535469 4.69894737,3.54211442 4.69894737,3.98169336" fill="#A4AFB7"></path>
            <path d="M7.83157895,3.98169336 C7.83157895,4.42127231 7.48072421,4.77803204 7.04842105,4.77803204 C6.61611789,4.77803204 6.26526316,4.42127231 6.26526316,3.98169336 C6.26526316,3.54211442 6.61611789,3.18535469 7.04842105,3.18535469 C7.48072421,3.18535469 7.83157895,3.54211442 7.83157895,3.98169336" fill="#A4AFB7"></path>
            <path d="M10.9642105,3.98169336 C10.9642105,4.42127231 10.6133558,4.77803204 10.1810526,4.77803204 C9.74874947,4.77803204 9.39789474,4.42127231 9.39789474,3.98169336 C9.39789474,3.54211442 9.74874947,3.18535469 10.1810526,3.18535469 C10.6133558,3.18535469 10.9642105,3.54211442 10.9642105,3.98169336" fill="#A4AFB7"></path>
            <path d="M34.1365169,26.8708134 C34.1365169,28.1503607 33.1068012,29.187435 31.8363329,29.187435 C30.5658646,29.187435 29.5361489,28.1503607 29.5361489,26.8708134 C29.5361489,25.5912661 30.5658646,24.5541918 31.8363329,24.5541918 C33.1068012,24.5541918 34.1365169,25.5912661 34.1365169,26.8708134 Z" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M27.2359646,34.2998327 C27.2359646,31.7407381 29.295396,29.6665896 31.8363327,29.6665896 C34.3772693,29.6665896 36.4367007,31.7407381 36.4367007,34.2998327" stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <ellipse stroke="#A4AFB7" stroke-width="1.64210526" cx="31.8315789" cy="28.173913" rx="7.83157895" ry="7.96338673"></ellipse>
            <path d="M30.3157904,20.3595706 C26.7159377,21.07743 24,24.3031628 24,28.173913 C24,28.9159512 24.0998118,29.6342848 24.2865285,30.3157895 L4.7313528,30.3157895 C4.59182823,30.3157895 4.47872122,30.2026825 4.47872122,30.0631579 L4.47872122,11.6210459 C4.47872122,11.4815214 4.59182823,11.3684144 4.7313528,11.3684144 L30.0631588,11.3684144 C30.2026834,11.3684144 30.3157904,11.4815214 30.3157904,11.6210459 L30.3157904,20.3595706 Z" stroke="#A4AFB7" stroke-width="1.64210526"></path>
        </g>
    </g>
</svg>modules/popup/assets/images/timing/browsers.svg000064400000016602150755004300016010 0ustar00<svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<rect width="34" height="34" fill="url(#pattern0)"/>
<defs>
<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
<use xlink:href="#image0" transform="scale(0.00694444)"/>
</pattern>
<image id="image0" width="144" height="144" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAkKADAAQAAAABAAAAkAAAAAA/PwqIAAAUOklEQVR4Ae1dCZQcxXmu6pk9hC4sBDIStoUwWoGCiR09G4wPFiTtSkZ7IGst7SrIQQQbB2LQgSMHc0dg4YBxYnxg+zlBuxJLZO3sKqvdFWKxHk8WiRJeAkIXVgAdGHTuzn10V75aaUbdPT07PbPdMz0z1e/Nm6rqv6r++vrrqr+q/u4mRBwCAYGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYFAjhGgVtbX3b1rnC96+tKo4hplZbnFVFaZiw1cPLb8g+rq6lAxtGtEBOruPlhxOvLHbwCIOsLIbEbY+GIAJRdtoJQeZoR2S5Rsaq6v2ZaLOu2oIysCMcZoW0ff7YSyhxD+hB2KlVKZlNA/ULfr/uYFc14rtHZnTCCP57WxPsX3W/Q2txZaYx2ur0Ik8sDS+nlPOFxPjXoZEai9v39M5Ez494Swz2lKERHLEEBv9LOWxtrvWFagzQWZJhCGKqmto9eDnueWlDpR+j7OHQHBgillSvwEAB9PGJ0GHCekgkKSyMrm+nlPpzrvpHTTBGrr6LlDYex5I+VhELYRl/Rwy4K5B43OizQtAkM3Y2ffl5jCnjHuzWmUuqWZhYCnW9s041hvb+/o40HlMf1ZSskJJkm3tdTVbNWfE/HUCOCGU3B2Rztjn4909K4Ejk+CVKqbmZURWVkHmcbUpTjjjGRGjZMh2ohp+sf1spRIty8V5NHDYjreRKm8tLF2HajzrEGm+g2evskG6Y5KMkUghcnJMy4q/aK5oabLUa0pUGUmlF3xd+iV9qjV5z0Sfg3qNCeGVd1mavXWb+45hrH6UrWEu7ysavHXZh9Qp7V29N7HiHIHZeSURKXvLWmo2ak+z8OtXX1XkpiCO45dQSjpnDy+cg1WZWNJch0930faXzJC/kQZXdXSWPNfepliird6eu9iivKcrk1+DG8djEhd5ZeM7Wz64hcdNzlJ2wNhnHbhYk/SNoye1JNnfWfvPMaUpzHUXY2L/iUY3F1dXbsv0OZDSTHlJcxA5kFmOmNk1bGByD16mbbOnibcff+A3wzC2I2Q7zqrh16yeOIuiSXdbGjdaGDUQpiyMfrR4DvrPT3fdhoOaQnk7uu7CA3Ry32kv3SSQq5Vp/FpalA5rlml5o3HHTVTI8cUTT5+junKQsqlrt7eS9T5ii1c4SrzDdcm3EyTicJ+Fu3o6Wvr6p84nGwuz+mJkVR3LFaeJAMS8FmE5pDcZAvGw0g8ETJvkrrad+Jx/s+NRvRQneo06qKb1XEelgjtRFlyIp2SXQtraz9IxIswEGWS30yz0HPfxOTwf27q6dGYFGby2iGTRI5sK1l8S81bkuS6AXbNP+HiPzJqTFn1EGF0BU6+sKKFL5TxFVeQrLalrtajEyGwnV6HDfUVyPwzlcgPyke7a/UypRxHbzQ1FCSGJkKucTG1DmRWqSX1c3dDlv9SHufcGNKusp4zwI3sgpRlF90JSt/Bzfgq2rUcpEHw/AET4S+8yolHkbLqfGruQ5b1QLlXvfhrBGPCLQ21fy0xdhOm+e/qW4yV7Htat7w8TZ+ey7ggUC7RzrKuJY3zXqXUXY8hP6wuAvZQOYvJ31an5TosCJRrxLOsr7l+9v+CQHxtTHNQpiQv8mok7I1oxlWjqtr/vf/jkUioqGdARu12RBqV9i5tqLk6rkv7nj3lkYPvH8dMdlw8jf+DWN2ESb8bdQHpurWmJmmJRS1rdVj0QFYjamF52MvQrH01zZwZAXne01eBxcb52AH4VTCovI/Fxmfau3dcrJexK56WQJVuSTjI24V+mnKxG5aMPYyhVNlApAosNt4bjfjfbvX0VKeSszI9LYFCMcVx+y9WAuDksmBfBJL1Yx8mp2lTQKSJINK21o6e27RnrI+lZPNwVWFKGUNXOjicjDiXIQJYNcVaz8e0uVxJ9gzE3sUakFbMIAYJF8R+hZ7ocEt9bb+BiCVJWREINe+H3+6fWaKBKIT4fKG5/nDwH7ft2KUjkJKeKcAPRvRv4SbbCGKN18LJyphCN+J5vSvnz7/Olhs+7RCmVUjErERgIBD4wqAv0C8zuRfDVdY3JJ4t21w5ilyFkaEjWT92yanI6TXJ6dakCAJZg2NGpQyGwzMGvYF2IrNdGLZuzChzCmG+2YwHFBeCiK/oReBPdXd/f3+lPt2KuCCQFSiaLCMQCEwZ9AZ/TqLyWxhuFpnMZloMPZBSWVG5DEPaaXUm1DXmg4HIHHWaVeFsbSCr6i+Jcrhx7PUHVscUci/Wa0aZsIHP4sLI9PUdWzWLuCCDZhFRD+DC+dVH2jb3/hz1aIYthbKbIGu5C7IgkP4KWBgHcUZ5/cG/gZ3DtyBgIJuyiRMagCxlyJL0MENC4FyAUddodRrWj15BPg2B4Nl5mVrGqrAgkFVIqsoBcVzeQGgZyPMowlNUp+wJKrFp6oLLiPtYhETVSVgjSE9ETQaTEUEgk0CZFRv0+xu8vuAT6D1mmM0zUjmJSIfVZURdSpToHlOAN5Et19qWQtWNKZWw1xu8EUPHk/DR+UKmQ9VIMUK9Z0ZaRrb5BYGyRe5cPp8vcq1ComsVpszP0MRJWzNmVXuqLpv4WbXggaMnn1cUZZk6LZ9hQaAs0Q8Gg5dHZfaIQmJLsfeE5Rd7jlmzZmmMGexvZWaJ26NWolRBoAQU5gJeL1wsaPD7IM9dMJDLzeUqXilBIJPXFmQZ6wuE7lOU4GpMiceYzFb0YoJAaS4x72V8vuCdXl/gQYwdOXPUSqOW5jQe0nsGQ9sjiURZyVnPKAiUQF0bAHEkvz+0eNAffByzqsu1Z/MZo5P1szw8yYt1oDSmkVgHyt1Fg3tFLbYefgjj+DO5q9VcTSB2livK9EJzNWQmJXogFV5wr7gOD18/CfeKr6qSHRWUKB3Aiysy1glrRba8l1rsxuNSeMPhq+BesQnuFX/ACrJjyTPEGkoOZMweZMCFPpJNvnR5SroHgnvFZTGZPcii8u0gDl5j4/wDQ1hS9+NibDmRXNsS2rvZVDnKdiTiCCCTbnNDfTb7cEkSCNcA7hXB78G94rsAthLT8uwRdEJOFz2xpL4msR+Gl3jBeez8y03sVLGkCATicPeKe+BewV0dbDEq7bxYTiy7JAgE4rjhXvFNkOcRhDENFodVCBQ9gbyBwK1wr1gLG6fKKtBEOecRKFoCwb2iGm6cTyoy+/z55oqQ1QgUHYH8/shnY2zIvaI23eKs1WCWYnlFQ6BQKDQtHFMek1lsCYhjm3tFKZJkuDYXPIF8PjZJpsEHIjHlW5iOlxX4hHy4a+XIcwVLIMymxmI6vlomwRV4kcBoJxJHwZPJ4Qjc22NR3VITO4UFzEM4/xEl7DTCA/5ggC/0/a2GJYxUtm7u+3N1Gh7XmaCO87Ci0MvVcooifzJXXXDBEQjEKccO+V1wr3gA2E3UXRk9tnmJH/3wOHn38FFyZsALbhtSm5MgiQh6ZTFzvAILgm9o0g2Kg9yP1QuHQ59y0WSyL1IwBAJxpEF/qAXkeRSkmWqAo30omSz5xOkz5O0Dh8iAd9h3hpssrTDECoJAA/7Q1+Be8QSM42ucCivvdd54c69zJ342vY7H0QQaDASux5bOD5kif9mJPU6czH5/gPzPnv3OJQ8UhRvIS3F9rfx3JIHgXnE1i8hrmczqrWysXWUdePcwvg+X9PUHvpYgs7MvCz8GOyVZIEuF8PKECXjvOPdM5E9svIdfkq8Pf5AQb+WYgt8g3vb/E7y541+yrG7YbI4iENwrPhFT2MNwr1gGwAvCvYKj++Hxk0kg45muFyvLK1bxlx0knSyiBEcQCAbyBGx0roF7xd2YtMAVwckDlvbqR6MxTNO1rjb4ZsgZd92cloX84zIOP1YdjF6vyLG78fXJsEsiT62bXrE3E5Xz6pEI4lww6AuuwXrOIYRX4WfLS5AyASRTWTyRmpQF3007avShmSTBPCes2hduUmLyDty0zWjHX8Vk5bU1B1lGT57khUAgitvr99+JmdU7AHstcNS92y/PyJZA9UPkYawVpkJiFEK/PyGsRG7KpPmJzJlkylYWxKF4xurrcK94HMpOz7YckW9kCBiRJ1GiRLlRbvpI2wO5K2TNs9lDJWPPyXQN5wRBnJuxCPgfCmHtYL0gT6YAWiQ/HHlg+P/66SvLd2VSVVoCNd588ylMRyPaQulk3pto04xjcK/43IDP3ysz5WWsIM8ylhKpuUBgxb7wImytaIatRL2UvDCuquLORNxkIC2BwEo+JdJMRdGDjNno6bt+uDrgXnHFgC+wAe4VuzGpmjucrDhnPwKcPLiB29Q2T6JWkGd8VeU3H8ZLOhNpJgNpCcTLAYm268uD1b4WvVBSfu5eMeAN/BTuFVjXZ4vN9lT68kXcOgTsIg/XMIkARmqDtZv06eiWvrrB03d/PB1EGTfg9T8G94o/Yh3nO4hnbCfFyxL/1iFgJ3m4lqYI1Fxfuw3L51q3AmTGFPzxNk/vulNnBlfDvQLEIQ8gUfPGUF6JOPKDgN3k4a0yRSAMYQrGsZV6GNALufC6tdW/f/2/17139E8TA6Ew+MNNJnHkG4HhyIPOYH22No++XaZmUvFM6/k7aBh7MB43+udGN35Gp4oyjTdVlhVNg9H+PfhYbtbfvhgpUOnIM66qclk2BrORXhktJC5tqH2o1bN1ClbvlxsVxtO40Sx6oVTo2J+eS/Lw1pgawtTNbqmfd4dE6H24y7Q7iGohEc4LArkmD29kxgTimZoba3/scrs+AxJtwk8YPRyULI7794WqVuwPrVi5P9zAe+4sikhkWfl26Lvo+zcYrfNwm8fKYStRKQIjUpoX1N7Ze3lUURagqOUAQftGL0qxDWLPi43Ujchn+OyHBrUfQDFjA63eF70hRuTtGPMrhvSn1DO+qqIJtolu1T9961bujTytUOVelJV0Pe0kD9csqcL06hpLtHX1zlD44qHqQOERSXJft6R+TtISgEqsoINGn0U3Q6D79oVewgX/urrxIOOWcTMqFmZConySh+ue1RCmbnQ83LygZh/4qCEQxrZyWZFb23fuTP76cDxjif5jppG0SY3h55bBfeFND5t8//Rw5JEk6UW7hi31JbOMQEOFSuQZdeFnw+yqyEeD3a1bXp6WfK6EU9yup9BTJfsymyTRcOSBB/3esdPLm62aqg93lSwlUHldzW8w5r6ZVCH/rGM0+lbr5p4fbOzejoflxAG3iTdcLlKfDYmGJQ8lh45Mr7gmF+ThV9EyGyhOibbOnpl4ZHcnduBTflkPlcqw9xQisSDG/YF43kL8BwEkrMZPUetuxgaKy68+GJory8SDCUiSO6+RTZSWPFWV018axhcb9Uibt2//2K2zZyc/CRBXKoN/ywnE697Y1TdXjskdsIFK0vbJhEAcL7MkGil58A35atzYG0CiSRgpdpe5yhuaFtx8lOuQ7WHpEBZXYvGCuX2Yfd0Adr4XTxP/qRF46srKvnTD2Yr9kZ+kmqpjHDl0JE3Pw2sHcV7g5DkbJrOicnRtaq3MnbGFQLxqPnUvG+O+FnfjWkKp35w6pSuVjkR4Ovceo3Ues+Rp795xMXofzVALSmm+RZYN+rYRiCvTNGfOADYV/15yVUx1SdJyNHYzkjP2esumYYWYZzgSGbbHZM8zlJfJBg9q4pnVER4ZbaZmW1fzguoTyPsb/sOO/lbcSbWaspj0i/FlF63QpBVIJMj8kyJy4JBV6nISwSaql2VqaFgn6smEPIlM1gdyQiCN2pT8Dl2plkBU+dYAO+lZWlezVSNbABGsRAetfqd3WhI5hDz88oy4C8v0Gk8ou/BFGNfH9fmoovzrBs/WOn16qcbjwxnsR1mDgYPIw/XKOYHmz79ukEjSQxpQEIEj40RZIZ7Wjq3tbZ6XtZuyeuESiQ+RyO2ai6t0GMtNPuC2xcxsK5fw5H4IQ+vK6ub+MurpuQWkma9vLNIWYZto0frNPSfhKXIU8bBexknxaDRsK4Y/+nTZK2jvJ53UZrUutjZeXZE6zF880N7f/43oQIg/2J9iKskuwrmL1PmcGMa6ipFaE40SizEt50NYHMSm6mpf2fjKr2Bq/2/xtGL5B6fGFktb0rUjbwTiinESLW2Ytwh7PrfBWPy/dMoW0PmMncIKqG0aVfNKoLgmLY21L8y4bGIVlrWakLYee7wfYAXbcGyI53HyP/aZPnSyflbqlhcbyKgBs2bN4g5W/EWQQy+D7O/vdx/3KZMUF39jmXMPeBVMlCPhXToNS+aBA8cQSHcBSHV1Nb8II9op1pdpRxwLiX7tQo0dtTi3TEcMYc6FJ71mMXynQC8F11Rb3GT09WQSd7nCtugkCJTJVTCQdX/60tNIVtSnMCmYvr5j2zXqtHyH8dT5wiQdGON7lCM6bGHliDQqwMxY9IQbL9M+ykyJFw95P89ctB8vbD4mxyQNyXLSTLdSjqnIVEUmeGEsX6DV9owg+rOYwNw7El0cawONpFG5zosJ4/NY+3lWUy/WgjCUrYDz7oqzFnUeLCVUHB9fDdY7FUZdv9bonEVEDGFZgKbPMnl85XNYx3pdn+7kuCTRHy1tmJP8AESGSgsCZQiYkTifMZZXYl+PEv103kg8/2mUPLekroZ/+nzEh7CBRgzh+QJgY0htnX1L8AW4RzF0TDt/xiEhSl91S641i+vmWEZ0QSAbru3u3bvL9h87MR8G7JfxVtRPwVi9MB9Te9TLza+TMIT24Ws925c01Oy0obmiSIGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYGAQEAgIBAQCAgEBAICAYFAPhH4fz6oDd9HdKX/AAAAAElFTkSuQmCC"/>
</defs>
</svg>
modules/popup/assets/images/timing/page_views.svg000064400000017210150755004300016267 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <!-- Generator: Sketch 52.5 (67469) - http://www.bohemiancoding.com/sketch -->
    <title>After X page views Copy</title>
    <desc>Created with Sketch.</desc>
    <g id="After-X-page-views-Copy" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g id="Group" transform="translate(5.052632, 7.578947)">
            <path d="M30.7894737,3.78947368 C32.5342105,3.78947368 33.9473684,5.14610526 33.9473684,6.82105263 L33.9473684,16.4639186" id="Stroke-1029" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M24.1677632,26.5263158 L7.10526316,26.5263158 C5.36052632,26.5263158 3.94736842,25.1696842 3.94736842,23.4947368" id="Stroke-1029-Copy" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M25.5400905,29.5578947 L10.2631579,29.5578947 C8.51842105,29.5578947 7.10526316,28.2012632 7.10526316,26.5263158" id="Stroke-1031" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M33.9473684,6.82105263 C35.6921053,6.82105263 37.1052632,8.17768421 37.1052632,9.85263158 L37.1052632,18.1301398" id="Stroke-1031-Copy" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M33.9473684,9.85263158 L30.7894737,9.85263158" id="Stroke-1033" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M37.1052632,12.8842105 L33.9473684,12.8842105" id="Stroke-1035" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M31.0028783,7.09786184 L31.0961181,16.7097039 L26.9511032,18.2432286 C26.2899982,18.4878166 25.7102175,18.9119527 25.2769314,19.4679619 L22.5416324,22.9780016 L1.3541324,22.9780016 L31.0028783,7.09786184 Z" id="Rectangle" fill="#F1F3F5" fill-rule="nonzero"></path>
            <path d="M23.9015589,23.4947368 L3.94736842,23.4947368 C2.20263158,23.4947368 0.789473684,22.1381053 0.789473684,20.4631579 L0.789473684,3.78947368 C0.789473684,2.11452632 2.20263158,0.757894737 3.94736842,0.757894737 L27.6315789,0.757894737 C29.3763158,0.757894737 30.7894737,2.11452632 30.7894737,3.78947368 L30.7894737,16.2588405" id="Stroke-1019" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <ellipse id="Oval-Copy-4" stroke="#A4AFB7" stroke-width="1.64210526" fill-rule="nonzero" cx="31.8315789" cy="24.3734554" rx="7.83157895" ry="7.96338673"></ellipse>
            <path d="M0.789473684,6.82105263 L30.7894737,6.82105263" id="Stroke-1021" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M4.73684211,3.78947368 C4.73684211,4.20783158 4.38315789,4.54736842 3.94736842,4.54736842 C3.51157895,4.54736842 3.15789474,4.20783158 3.15789474,3.78947368 C3.15789474,3.37111579 3.51157895,3.03157895 3.94736842,3.03157895 C4.38315789,3.03157895 4.73684211,3.37111579 4.73684211,3.78947368" id="Fill-1023" fill="#A4AFB7"></path>
            <path d="M7.89473684,3.78947368 C7.89473684,4.20783158 7.54105263,4.54736842 7.10526316,4.54736842 C6.66947368,4.54736842 6.31578947,4.20783158 6.31578947,3.78947368 C6.31578947,3.37111579 6.66947368,3.03157895 7.10526316,3.03157895 C7.54105263,3.03157895 7.89473684,3.37111579 7.89473684,3.78947368" id="Fill-1025" fill="#A4AFB7"></path>
            <path d="M11.0526316,3.78947368 C11.0526316,4.20783158 10.6989474,4.54736842 10.2631579,4.54736842 C9.82736842,4.54736842 9.47368421,4.20783158 9.47368421,3.78947368 C9.47368421,3.37111579 9.82736842,3.03157895 10.2631579,3.03157895 C10.6989474,3.03157895 11.0526316,3.37111579 11.0526316,3.78947368" id="Fill-1027" fill="#A4AFB7"></path>
            <path d="M34.0984786,27.2097039 C34.0984786,27.4798533 34.0475951,27.7333459 33.9458265,27.9701891 C33.8440579,28.2070324 33.7043594,28.4142672 33.526727,28.5918997 C33.3490945,28.7695321 33.1418597,28.9092306 32.9050164,29.0109992 C32.6681732,29.1127678 32.4146806,29.1636513 32.1445312,29.1636513 L31.8059211,29.1636513 C31.5357717,29.1636513 31.281354,29.1127678 31.0426604,29.0109992 C30.8039667,28.9092306 30.5958068,28.7695321 30.4181743,28.5918997 C30.2405419,28.4142672 30.1008434,28.2070324 29.9990748,27.9701891 C29.8973062,27.7333459 29.8464227,27.4798533 29.8464227,27.2097039 L29.8464227,27.0043174 L30.5625,26.8932977 L30.5625,27.2097039 C30.5625,27.3873364 30.5958056,27.5529392 30.6624178,27.7065173 C30.7290299,27.8600953 30.8206203,27.995168 30.9371916,28.1117393 C31.0537629,28.2283106 31.1888356,28.319901 31.3424137,28.3865132 C31.4959917,28.4531253 31.6615945,28.4864309 31.839227,28.4864309 L32.1112253,28.4864309 C32.2888578,28.4864309 32.4544606,28.4531253 32.6080387,28.3865132 C32.7616167,28.319901 32.8957642,28.2283106 33.0104852,28.1117393 C33.1252062,27.995168 33.2158714,27.8600953 33.2824836,27.7065173 C33.3490957,27.5529392 33.3824013,27.3873364 33.3824013,27.2097039 L33.3824013,26.5491365 C33.3824013,26.371504 33.3490957,26.2059013 33.2824836,26.0523232 C33.2158714,25.8987451 33.1252062,25.7645976 33.0104852,25.6498766 C32.8957642,25.5351557 32.7616167,25.4444905 32.6080387,25.3778783 C32.4544606,25.3112661 32.2888578,25.2779605 32.1112253,25.2779605 L31.5783306,25.2779605 L31.5783306,24.5951891 L32.1112253,24.5951891 C32.2888578,24.5951891 32.4544606,24.5618836 32.6080387,24.4952714 C32.7616167,24.4286592 32.8957642,24.337994 33.0104852,24.223273 C33.1252062,24.1085521 33.2158714,23.9744046 33.2824836,23.8208265 C33.3490957,23.6672484 33.3824013,23.5016456 33.3824013,23.3240132 L33.3824013,22.9354441 C33.3824013,22.7578116 33.3490957,22.5922088 33.2824836,22.4386308 C33.2158714,22.2850527 33.1252062,22.1509052 33.0104852,22.0361842 C32.8957642,21.9214632 32.7616167,21.830798 32.6080387,21.7641859 C32.4544606,21.6975737 32.2888578,21.6642681 32.1112253,21.6642681 L31.839227,21.6642681 C31.6615945,21.6642681 31.4959917,21.6975737 31.3424137,21.7641859 C31.1888356,21.830798 31.0537629,21.9214632 30.9371916,22.0361842 C30.8206203,22.1509052 30.7290299,22.2850527 30.6624178,22.4386308 C30.5958056,22.5922088 30.5625,22.7578116 30.5625,22.9354441 L30.5625,23.2574013 L29.8464227,23.1408306 L29.8464227,22.9354441 C29.8464227,22.6652947 29.8973062,22.4118022 29.9990748,22.1749589 C30.1008434,21.9381156 30.2405419,21.7308808 30.4181743,21.5532484 C30.5958068,21.3756159 30.8039667,21.2359174 31.0426604,21.1341488 C31.281354,21.0323802 31.5357717,20.9814967 31.8059211,20.9814967 L32.1445312,20.9814967 C32.4146806,20.9814967 32.6681732,21.0323802 32.9050164,21.1341488 C33.1418597,21.2359174 33.3490945,21.3756159 33.526727,21.5532484 C33.7043594,21.7308808 33.8440579,21.9381156 33.9458265,22.1749589 C34.0475951,22.4118022 34.0984786,22.6652947 34.0984786,22.9354441 L34.0984786,23.2074424 C34.0984786,23.3961769 34.0734994,23.5765822 34.0235403,23.7486637 C33.9735812,23.9207451 33.9032694,24.080797 33.8126028,24.228824 C33.7219362,24.3768511 33.6136931,24.5109986 33.4878701,24.6312706 C33.3620471,24.7515425 33.2214235,24.8542348 33.0659951,24.9393503 C33.2214235,25.0207652 33.3620471,25.1216071 33.4878701,25.2418791 C33.6136931,25.3621511 33.7219362,25.4962986 33.8126028,25.6443257 C33.9032694,25.7923527 33.9735812,25.9524046 34.0235403,26.124486 C34.0734994,26.2965675 34.0984786,26.4769727 34.0984786,26.6657072 L34.0984786,27.2097039 Z" id="3" stroke="#71D7F7" stroke-width="0.884210526" fill="#71D7F7" stroke-linecap="round" stroke-linejoin="round"></path>
        </g>
    </g>
</svg>modules/popup/assets/images/timing/url.svg000064400000006337150755004300014750 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <path d="M40.5473684,12.5697941 L40.5473684,28.9908467 C40.5473684,31.0837152 38.8507633,32.7803204 36.7578947,32.7803204 L17.1789474,32.7803204 L40.5473684,12.5697941 Z" fill="#F1F3F5"></path>
        <g transform="translate(3.789474, 5.052632)">
            <path d="M4.73684211,3.94736842 C4.73684211,4.38315789 4.38315789,4.73684211 3.94736842,4.73684211 C3.51157895,4.73684211 3.15789474,4.38315789 3.15789474,3.94736842 C3.15789474,3.51157895 3.51157895,3.15789474 3.94736842,3.15789474 C4.38315789,3.15789474 4.73684211,3.51157895 4.73684211,3.94736842" fill="#A4AFB7"></path>
            <path d="M7.89473684,3.94736842 C7.89473684,4.38315789 7.54105263,4.73684211 7.10526316,4.73684211 C6.66947368,4.73684211 6.31578947,4.38315789 6.31578947,3.94736842 C6.31578947,3.51157895 6.66947368,3.15789474 7.10526316,3.15789474 C7.54105263,3.15789474 7.89473684,3.51157895 7.89473684,3.94736842" fill="#A4AFB7"></path>
            <path d="M11.0526316,3.94736842 C11.0526316,4.38315789 10.6989474,4.73684211 10.2631579,4.73684211 C9.82736842,4.73684211 9.47368421,4.38315789 9.47368421,3.94736842 C9.47368421,3.51157895 9.82736842,3.15789474 10.2631579,3.15789474 C10.6989474,3.15789474 11.0526316,3.51157895 11.0526316,3.94736842" fill="#A4AFB7"></path>
            <path d="M16.5789474,27.6315789 L33.9473684,27.6315789 C35.6921053,27.6315789 37.1052632,26.2184211 37.1052632,24.4736842 L37.1052632,3.94736842 C37.1052632,2.20263158 35.6921053,0.789473684 33.9473684,0.789473684 L3.94736842,0.789473684 C2.20263158,0.789473684 0.789473684,2.20263158 0.789473684,3.94736842 L0.789473684,24.4736842 C0.789473684,26.2184211 2.20263158,27.6315789 3.94736842,27.6315789 L7.10526316,27.6315789 L16.5789474,27.6315789 L16.5789474,27.6315789 Z" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <path d="M0.789473684,7.10526316 L37.1052632,7.10526316" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
            <polygon stroke="#71D7F7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(33.315789, 35.526316) scale(-1, 1) translate(-33.315789, -35.526316) " points="27 37.1052632 39.6315789 37.1052632 39.6315789 33.9473684 27 33.9473684"></polygon>
            <path d="M19.1052632,30.7894737 L31.7368421,18.1578947" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(25.421053, 24.473684) scale(-1, 1) translate(-25.421053, -24.473684) "></path>
            <polyline stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round" transform="translate(22.263158, 21.315789) scale(-1, 1) translate(-22.263158, -21.315789) " points="19.1052632 18.1578947 25.4210526 18.1578947 25.4210526 24.4736842"></polyline>
            <rect stroke="#A4AFB7" stroke-width="1.64210526" x="0.821052632" y="7.13684211" width="14.7789474" height="8.46315789" rx="1.54385965"></rect>
        </g>
    </g>
</svg>modules/popup/assets/images/timing/sessions.svg000064400000010006150755004300016000 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <g transform="translate(6.315789, 6.315789)">
            <polygon fill="#F1F3F5" points="34.6949013 7.57894737 34.6949013 21.2039428 34.6199225 34.7319079 9.14569952 34.7319079 1.06224301 34.600917"></polygon>
            <g transform="translate(0.000000, 1.894737)">
                <path d="M0.783157895,4.64073227 L33.6757895,4.64073227" stroke="#A4AFB7" stroke-width="1.64210526" stroke-linecap="round" stroke-linejoin="round"></path>
                <path d="M4.69894737,1.45537757 C4.69894737,1.89495652 4.34809263,2.25171625 3.91578947,2.25171625 C3.48348632,2.25171625 3.13263158,1.89495652 3.13263158,1.45537757 C3.13263158,1.01579863 3.48348632,0.659038902 3.91578947,0.659038902 C4.34809263,0.659038902 4.69894737,1.01579863 4.69894737,1.45537757" fill="#A4AFB7"></path>
                <path d="M7.83157895,1.45537757 C7.83157895,1.89495652 7.48072421,2.25171625 7.04842105,2.25171625 C6.61611789,2.25171625 6.26526316,1.89495652 6.26526316,1.45537757 C6.26526316,1.01579863 6.61611789,0.659038902 7.04842105,0.659038902 C7.48072421,0.659038902 7.83157895,1.01579863 7.83157895,1.45537757" fill="#A4AFB7"></path>
                <path d="M10.9642105,1.45537757 C10.9642105,1.89495652 10.6133558,2.25171625 10.1810526,2.25171625 C9.74874947,2.25171625 9.39789474,1.89495652 9.39789474,1.45537757 C9.39789474,1.01579863 9.74874947,0.659038902 10.1810526,0.659038902 C10.6133558,0.659038902 10.9642105,1.01579863 10.9642105,1.45537757" fill="#A4AFB7"></path>
            </g>
            <path d="M4.7313528,11.3684144 L30.0631588,11.3684144 C30.2026834,11.3684144 30.3157904,11.4815214 30.3157904,11.6210459 L30.3157904,30.0631579 C30.3157904,30.2026825 30.2026834,30.3157895 30.0631588,30.3157895 L4.7313528,30.3157895 C4.59182823,30.3157895 4.47872122,30.2026825 4.47872122,30.0631579 L4.47872122,11.6210459 C4.47872122,11.4815214 4.59182823,11.3684144 4.7313528,11.3684144 Z" stroke="#A4AFB7" stroke-width="1.64210526"></path>
            <g transform="translate(10.736842, 15.157895)" stroke="#71D7F7" stroke-linecap="round" stroke-width="1.64210526">
                <path d="M13.8947368,7.51225891 C13.8947368,7.51225891 10.6720954,11.5928763 7.15648653,11.5928763 C3.64087768,11.5928763 0.418236226,7.51225891 0.418236226,7.51225891 C0.418236226,7.51225891 3.64087768,3.43164149 7.15648653,3.43164149 C11.2580302,3.43164149 13.8947368,7.51225891 13.8947368,7.51225891 Z" stroke-linejoin="round"></path>
                <path d="M9.7644291,6.40705234 C9.7644291,8.05032926 8.52479407,9.3824632 6.9956208,9.3824632 C5.46644752,9.3824632 4.22681249,8.05032926 4.22681249,6.40705234 C4.22681249,4.76377543 5.46644752,3.43164149 6.9956208,3.43164149 C8.52479407,3.43164149 9.7644291,4.76377543 9.7644291,6.40705234 Z" stroke-linejoin="round"></path>
                <path d="M6.01776171,6.39250865 C6.01776171,5.94917985 6.36191258,5.39213647 6.70606345,5.39213647" stroke-linejoin="round"></path>
                <path d="M4.93900502,1.17642338 L5.61541758,3.26256795" transform="translate(5.277211, 2.219496) rotate(10.000000) translate(-5.277211, -2.219496) "></path>
                <path d="M10.7605478,2.14111291 L11.9318492,3.69631077" transform="translate(11.346198, 2.918712) scale(-1, 1) rotate(10.000000) translate(-11.346198, -2.918712) "></path>
                <path d="M8.41251985,0.623095916 L8.43887134,2.84424076" transform="translate(8.425696, 1.733668) rotate(10.000000) translate(-8.425696, -1.733668) "></path>
                <path d="M2.37802785,2.45370182 L2.24270012,4.60849176" transform="translate(2.310364, 3.531097) scale(-1, 1) rotate(-329.000000) translate(-2.310364, -3.531097) "></path>
            </g>
            <rect stroke="#A4AFB7" stroke-width="1.64210526" x="0.189473684" y="-2.18491891e-13" width="34.3578947" height="34.7115789" rx="3.78947368"></rect>
        </g>
    </g>
</svg>modules/popup/assets/images/timing-tab.svg000064400000003355150755004300014707 0ustar00<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
<style type="text/css">
	.st0{fill:#F1F3F5;}
	.st1{fill:none;stroke:#71D7F7;stroke-width:1.64;stroke-linecap:round;stroke-linejoin:round;}
	.st2{fill:none;stroke:#A4AFB7;stroke-width:1.64;stroke-linecap:round;stroke-linejoin:round;}
</style>
<g>
	<path class="st0" d="M27.2,14l2.2,0.8c0.7-0.8,1.7-1.2,3-1.3s2.5,1.8,3.7,5.8L33,21.8c2.9-1.5,2.8-1-0.3,1.4
		c-1.8,1.4-6.8,0.6-10,5.2c-1,1.4,1.2,8.2-0.1,9.3c-0.6,0.5-2.6-0.5-3.2,0c-0.4,0.3-0.8-1.1-1.1-4.2l-1.6-0.8l2.2-3.8l3.5,0.8
		c1.1-1.7,2.1-2.9,2.8-3.6s2-1.7,3.6-2.8c-0.5-1.3-0.9-2.3-1.3-3s-1.1-1.6-2.1-2.8L27.2,14z"/>
	<polygon class="st1" points="30.8,34.7 27.8,36.4 28.5,33 26.1,30.6 29.1,30.2 30.8,27.1 32.4,30.2 
		35.4,30.6 33.1,33 33.7,36.4 	"/>
	<path class="st2" d="M22.2,32c0-4.7,3.8-8.6,8.6-8.6s8.6,3.8,8.6,8.6s-3.8,8.6-8.6,8.6S22.2,36.8,22.2,32L22.2,32z
		"/>
	<path class="st2" d="M22.5,29.8c-0.1,0-0.1,0-0.2,0c-3.6,0-6.6-3-6.6-6.6s3-6.6,6.6-6.6s6.6,3,6.6,6.6
		c0,0.1,0,0.4,0,0.5c0.8-0.2,1.9-0.3,2.8-0.2c0.7,0,1.1,0.2,1.6,0.3c0-0.1,0-0.1,0-0.1c0-0.5-0.1-1.4-0.1-1.9l3.1-2.4
		c0.3-0.2,0.3-0.6,0.2-0.9l-2.9-5c-0.2-0.3-0.6-0.4-0.9-0.3l-3.6,1.5c-0.8-0.6-1.6-1.1-2.5-1.4l-0.6-3.8c0-0.3-0.3-0.6-0.7-0.6h-5.8
		c-0.4,0-0.7,0.3-0.7,0.6L18,13.1c-0.9,0.4-1.7,0.9-2.5,1.4L12,13.1c-0.3-0.1-0.7,0-0.9,0.3l-2.9,5c-0.2,0.3-0.1,0.7,0.2,0.9
		l3.1,2.4c-0.1,0.5-0.1,0.9-0.1,1.4s0,1,0.1,1.4L8.3,27c-0.3,0.2-0.3,0.6-0.2,0.9l2.9,5c0.2,0.3,0.6,0.4,0.9,0.3l3.6-1.5
		c0.8,0.6,1.6,1.1,2.5,1.4l0.6,3.8c0,0.3,0.3,0.6,0.7,0.6h4.6c-1-1.5-1.7-3.3-1.7-5.3C22.2,31.5,22.2,30.6,22.5,29.8z"/>
</g>
</svg>modules/popup/display-settings/base.php000064400000002427150755004300014311 0ustar00<?php

namespace ElementorPro\Modules\Popup\DisplaySettings;

use Elementor\Controls_Manager;
use Elementor\Controls_Stack;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Base extends Controls_Stack {

	private $current_group;

	protected function start_settings_group( $group_name, $group_title ) {
		$this->current_group = $group_name;

		$args = [
			'type' => Controls_Manager::HEADING,
			'label' => $group_title,
		];

		$this->add_control( $group_name . '_heading', $args );
	}

	protected function end_settings_group() {
		$this->add_control(
			$this->current_group,
			[
				'type' => Controls_Manager::SWITCHER,
				'classes' => 'elementor-popup__display-settings__group-toggle',
				'frontend_available' => true,
			]
		);

		$this->current_group = null;
	}

	protected function add_settings_group_control( $id, array $args ) {
		$id = $this->current_group . '_' . $id;

		$args['frontend_available'] = true;

		if ( ! empty( $args['condition'] ) ) {
			$args['condition'] = array_combine(
				array_map( function( $key ) {
					return $this->current_group . '_' . $key;
				}, array_keys( $args['condition'] ) ),
				$args['condition']
			);
		}

		$args['condition'][ $this->current_group ] = 'yes';

		return $this->add_control( $id, $args );
	}
}
modules/popup/display-settings/timing.php000064400000012266150755004300014670 0ustar00<?php

namespace ElementorPro\Modules\Popup\DisplaySettings;

use Elementor\Controls_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Timing extends Base {

	/**
	 * Get element name.
	 *
	 * Retrieve the element name.
	 *
	 * @since  2.4.0
	 * @access public
	 *
	 * @return string The name.
	 */
	public function get_name() {
		return 'popup_timing';
	}

	protected function register_controls() {
		$this->start_controls_section( 'timing' );

		$this->start_settings_group( 'page_views', esc_html__( 'Show after X page views', 'elementor-pro' ) );

		$this->add_settings_group_control(
			'views',
			[
				'type' => Controls_Manager::NUMBER,
				'label' => esc_html__( 'Page Views', 'elementor-pro' ),
				'default' => 3,
				'min' => 1,
			]
		);

		$this->end_settings_group();

		$this->start_settings_group( 'sessions', esc_html__( 'Show after X sessions', 'elementor-pro' ) );

		$this->add_settings_group_control(
			'sessions',
			[
				'type' => Controls_Manager::NUMBER,
				'label' => esc_html__( 'Sessions', 'elementor-pro' ),
				'default' => 2,
				'min' => 1,
			]
		);

		$this->end_settings_group();

		$this->start_settings_group( 'times', esc_html__( 'Show up to X times', 'elementor-pro' ) );

		$this->add_settings_group_control(
			'times',
			[
				'type' => Controls_Manager::NUMBER,
				'label' => esc_html__( 'Times', 'elementor-pro' ),
				'default' => 3,
				'min' => 1,
			]
		);

		$this->add_settings_group_control(
			'count',
			[
				'type' => Controls_Manager::SELECT,
				'label' => esc_html__( 'Count', 'elementor-pro' ),
				'options' => [
					'' => esc_html__( 'On Open', 'elementor-pro' ),
					'close' => esc_html__( 'On Close', 'elementor-pro' ),
				],
			]
		);

		$this->end_settings_group();

		$this->start_settings_group( 'url', esc_html__( 'When arriving from specific URL', 'elementor-pro' ) );

		$this->add_settings_group_control(
			'action',
			[
				'type' => Controls_Manager::SELECT,
				'default' => 'show',
				'options' => [
					'show' => esc_html__( 'Show', 'elementor-pro' ),
					'hide' => esc_html__( 'Hide', 'elementor-pro' ),
					'regex' => esc_html__( 'Regex', 'elementor-pro' ),
				],
			]
		);

		$this->add_settings_group_control(
			'url',
			[
				'type' => Controls_Manager::TEXT,
				'placeholder' => esc_html__( 'URL', 'elementor-pro' ),
			]
		);

		$this->end_settings_group();

		$this->start_settings_group( 'sources', esc_html__( 'Show when arriving from', 'elementor-pro' ) );

		$this->add_settings_group_control(
			'sources',
			[
				'type' => Controls_Manager::SELECT2,
				'multiple' => true,
				'default' => [ 'search', 'external', 'internal' ],
				'options' => [
					'search' => esc_html__( 'Search Engines', 'elementor-pro' ),
					'external' => esc_html__( 'External Links', 'elementor-pro' ),
					'internal' => esc_html__( 'Internal Links', 'elementor-pro' ),
				],
			]
		);

		$this->end_settings_group();

		$this->start_settings_group( 'logged_in', esc_html__( 'Hide for logged in users', 'elementor-pro' ) );

		$this->add_settings_group_control(
			'users',
			[
				'type' => Controls_Manager::SELECT,
				'default' => 'all',
				'options' => [
					'all' => esc_html__( 'All Users', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
			]
		);

		global $wp_roles;

		$roles = array_map( function( $role ) {
			return $role['name'];
		}, $wp_roles->roles );

		$this->add_settings_group_control(
			'roles',
			[
				'type' => Controls_Manager::SELECT2,
				'multiple' => true,
				'default' => [],
				'options' => $roles,
				'select2options' => [
					'placeholder' => esc_html__( 'Select Roles', 'elementor-pro' ),
				],
				'condition' => [
					'users' => 'custom',
				],
			]
		);

		$this->end_settings_group();

		$this->start_settings_group( 'devices', esc_html__( 'Show on devices', 'elementor-pro' ) );

		$this->add_settings_group_control(
			'devices',
			[
				'type' => Controls_Manager::SELECT2,
				'multiple' => true,
				'default' => [ 'desktop', 'tablet', 'mobile' ],
				'options' => [
					'desktop' => esc_html__( 'Desktop', 'elementor-pro' ),
					'tablet' => esc_html__( 'Tablet', 'elementor-pro' ),
					'mobile' => esc_html__( 'Mobile', 'elementor-pro' ),
				],
			]
		);

		$this->end_settings_group();

		$this->start_settings_group( 'browsers', esc_html__( 'Show on browsers', 'elementor-pro' ) );

		$this->add_settings_group_control(
			'browsers',
			[
				'type' => Controls_Manager::SELECT,
				'default' => 'all',
				'options' => [
					'all' => esc_html__( 'All Browsers', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
			]
		);

		$this->add_settings_group_control(
			'browsers_options',
			[
				'type' => Controls_Manager::SELECT2,
				'multiple' => true,
				'default' => [],
				'options' => [
					'ie' => esc_html__( 'Internet Explorer', 'elementor-pro' ),
					'chrome' => esc_html__( 'Chrome', 'elementor-pro' ),
					'edge' => esc_html__( 'Edge', 'elementor-pro' ),
					'firefox' => esc_html__( 'Firefox', 'elementor-pro' ),
					'safari' => esc_html__( 'Safari', 'elementor-pro' ),
				],
				'condition' => [
					'browsers' => 'custom',
				],
			]
		);

		$this->end_settings_group();

		$this->end_controls_section();
	}
}
modules/popup/display-settings/triggers.php000064400000005277150755004300015233 0ustar00<?php

namespace ElementorPro\Modules\Popup\DisplaySettings;

use Elementor\Controls_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Triggers extends Base {

	/**
	 * Get element name.
	 *
	 * Retrieve the element name.
	 *
	 * @since  2.4.0
	 * @access public
	 *
	 * @return string The name.
	 */
	public function get_name() {
		return 'popup_triggers';
	}

	protected function register_controls() {
		$this->start_controls_section( 'triggers' );

		$this->start_settings_group( 'page_load', esc_html__( 'On Page Load', 'elementor-pro' ) );

		$this->add_settings_group_control(
			'delay',
			[
				'type' => Controls_Manager::NUMBER,
				'label' => esc_html__( 'Within', 'elementor-pro' ) . ' (sec)',
				'default' => 0,
				'min' => 0,
				'step' => 0.1,
			]
		);

		$this->end_settings_group();

		$this->start_settings_group( 'scrolling', esc_html__( 'On Scroll', 'elementor-pro' ) );

		$this->add_settings_group_control(
			'direction',
			[
				'type' => Controls_Manager::SELECT,
				'label' => esc_html__( 'Direction', 'elementor-pro' ),
				'default' => 'down',
				'options' => [
					'down' => esc_html__( 'Down', 'elementor-pro' ),
					'up' => esc_html__( 'Up', 'elementor-pro' ),
				],
			]
		);

		$this->add_settings_group_control(
			'offset',
			[
				'type' => Controls_Manager::NUMBER,
				'label' => esc_html__( 'Within', 'elementor-pro' ) . ' (%)',
				'default' => 50,
				'min' => 1,
				'max' => 100,
				'condition' => [
					'direction' => 'down',
				],
			]
		);

		$this->end_settings_group();

		$this->start_settings_group( 'scrolling_to', esc_html__( 'On Scroll To Element', 'elementor-pro' ) );

		$this->add_settings_group_control(
			'selector',
			[
				'type' => Controls_Manager::TEXT,
				'label' => esc_html__( 'Selector', 'elementor-pro' ),
				'placeholder' => '.my-class',
			]
		);

		$this->end_settings_group();

		$this->start_settings_group( 'click', esc_html__( 'On Click', 'elementor-pro' ) );

		$this->add_settings_group_control(
			'times',
			[
				'label' => esc_html__( 'Clicks', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 1,
				'min' => 1,
			]
		);

		$this->end_settings_group();

		$this->start_settings_group( 'inactivity', esc_html__( 'After Inactivity', 'elementor-pro' ) );

		$this->add_settings_group_control(
			'time',
			[
				'type' => Controls_Manager::NUMBER,
				'label' => esc_html__( 'Within', 'elementor-pro' ) . ' (sec)',
				'default' => 30,
				'min' => 1,
				'step' => 0.1,
			]
		);

		$this->end_settings_group();

		$this->start_settings_group( 'exit_intent', esc_html__( 'On Page Exit Intent', 'elementor-pro' ) );

		$this->end_settings_group();

		$this->end_controls_section();
	}
}
modules/share-buttons/module.php000064400000003734150755004300013016 0ustar00<?php
namespace ElementorPro\Modules\ShareButtons;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	private static $networks = [
		'facebook' => [
			'title' => 'Facebook',
			'has_counter' => true,
		],
		'twitter' => [
			'title' => 'Twitter',
		],
		'linkedin' => [
			'title' => 'LinkedIn',
			'has_counter' => true,
		],
		'pinterest' => [
			'title' => 'Pinterest',
			'has_counter' => true,
		],
		'reddit' => [
			'title' => 'Reddit',
			'has_counter' => true,
		],
		'vk' => [
			'title' => 'VK',
			'has_counter' => true,
		],
		'odnoklassniki' => [
			'title' => 'OK',
			'has_counter' => true,
		],
		'tumblr' => [
			'title' => 'Tumblr',
		],
		'digg' => [
			'title' => 'Digg',
		],
		'skype' => [
			'title' => 'Skype',
		],
		'stumbleupon' => [
			'title' => 'StumbleUpon',
			'has_counter' => true,
		],
		'mix' => [
			'title' => 'Mix',
		],
		'telegram' => [
			'title' => 'Telegram',
		],
		'pocket' => [
			'title' => 'Pocket',
			'has_counter' => true,
		],
		'xing' => [
			'title' => 'XING',
			'has_counter' => true,
		],
		'whatsapp' => [
			'title' => 'WhatsApp',
		],
		'email' => [
			'title' => 'Email',
		],
		'print' => [
			'title' => 'Print',
		],
	];

	public static function get_networks( $network_name = null ) {
		if ( $network_name ) {
			return isset( self::$networks[ $network_name ] ) ? self::$networks[ $network_name ] : null;
		}

		return self::$networks;
	}

	public function get_widgets() {
		return [
			'Share_Buttons',
		];
	}

	public function get_name() {
		return 'share-buttons';
	}

	public function add_localize_data( $settings ) {
		$settings['shareButtonsNetworks'] = self::$networks;

		return $settings;
	}

	public function __construct() {
		parent::__construct();

		add_filter( 'elementor_pro/frontend/localize_settings', [ $this, 'add_localize_data' ] );

		add_filter( 'elementor_pro/editor/localize_settings', [ $this, 'add_localize_data' ] );

	}
}
modules/share-buttons/widgets/share-buttons.php000064400000042335150755004300015775 0ustar00<?php
namespace ElementorPro\Modules\ShareButtons\Widgets;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Typography;
use Elementor\Icons_Manager;
use Elementor\Repeater;
use Elementor\Utils;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Modules\ShareButtons\Module;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Share_Buttons extends Base_Widget {

	private static $networks_class_dictionary = [
		'pocket' => [
			'value' => 'fa fa-get-pocket',
		],
		'email' => [
			'value' => 'fa fa-envelope',
		],
	];

	private static $networks_icon_mapping = [
		'pocket' => [
			'value' => 'fab fa-get-pocket',
			'library' => 'fa-brands',
		],
		'email' => [
			'value' => 'fas fa-envelope',
			'library' => 'fa-solid',
		],
		'print' => [
			'value' => 'fas fa-print',
			'library' => 'fa-solid',
		],
	];

	public function get_style_depends() {
		if ( Icons_Manager::is_migration_allowed() ) {
			return [
				'elementor-icons-fa-solid',
				'elementor-icons-fa-brands',
			];
		}
		return [];
	}

	private static function get_network_icon_data( $network_name ) {
		$prefix = 'fa ';
		$library = '';

		if ( Icons_Manager::is_migration_allowed() ) {
			if ( isset( self::$networks_icon_mapping[ $network_name ] ) ) {
				return self::$networks_icon_mapping[ $network_name ];
			}
			$prefix = 'fab ';
			$library = 'fa-brands';
		}
		if ( isset( self::$networks_class_dictionary[ $network_name ] ) ) {
			return self::$networks_class_dictionary[ $network_name ];
		}

		return [
			'value' => $prefix . 'fa-' . $network_name,
			'library' => $library,
		];
	}

	public function get_name() {
		return 'share-buttons';
	}

	public function get_title() {
		return esc_html__( 'Share Buttons', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-share';
	}

	public function get_keywords() {
		return [ 'sharing', 'social', 'icon', 'button', 'like' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_buttons_content',
			[
				'label' => esc_html__( 'Share Buttons', 'elementor-pro' ),
			]
		);

		$repeater = new Repeater();

		$networks = Module::get_networks();

		$networks_names = array_keys( $networks );

		$repeater->add_control(
			'button',
			[
				'label' => esc_html__( 'Network', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => array_reduce( $networks_names, function( $options, $network_name ) use ( $networks ) {
					$options[ $network_name ] = $networks[ $network_name ]['title'];

					return $options;
				}, [] ),
				'default' => 'facebook',
			]
		);

		$repeater->add_control(
			'text',
			[
				'label' => esc_html__( 'Custom Label', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$this->add_control(
			'share_buttons',
			[
				'type' => Controls_Manager::REPEATER,
				'fields' => $repeater->get_controls(),
				'default' => [
					[
						'button' => 'facebook',
					],
					[
						'button' => 'twitter',
					],
					[
						'button' => 'linkedin',
					],
				],
				'title_field' => '<i class="{{ elementorPro.modules.shareButtons.getNetworkClass( button ) }}" aria-hidden="true"></i> {{{ elementorPro.modules.shareButtons.getNetworkTitle( obj ) }}}',
			]
		);

		$this->add_control(
			'view',
			[
				'label' => esc_html__( 'View', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'icon-text' => 'Icon & Text',
					'icon' => 'Icon',
					'text' => 'Text',
				],
				'default' => 'icon-text',
				'separator' => 'before',
				'prefix_class' => 'elementor-share-buttons--view-',
				'render_type' => 'template',
			]
		);

		$this->add_control(
			'show_label',
			[
				'label' => esc_html__( 'Label', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
				'condition' => [
					'view' => 'icon-text',
				],
			]
		);

		$this->add_control(
			'skin',
			[
				'label' => esc_html__( 'Skin', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'gradient' => esc_html__( 'Gradient', 'elementor-pro' ),
					'minimal' => esc_html__( 'Minimal', 'elementor-pro' ),
					'framed' => esc_html__( 'Framed', 'elementor-pro' ),
					'boxed' => esc_html__( 'Boxed Icon', 'elementor-pro' ),
					'flat' => esc_html__( 'Flat', 'elementor-pro' ),
				],
				'default' => 'gradient',
				'prefix_class' => 'elementor-share-buttons--skin-',
			]
		);

		$this->add_control(
			'shape',
			[
				'label' => esc_html__( 'Shape', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'square' => esc_html__( 'Square', 'elementor-pro' ),
					'rounded' => esc_html__( 'Rounded', 'elementor-pro' ),
					'circle' => esc_html__( 'Circle', 'elementor-pro' ),
				],
				'default' => 'square',
				'prefix_class' => 'elementor-share-buttons--shape-',
			]
		);

		$this->add_responsive_control(
			'columns',
			[
				'label' => esc_html__( 'Columns', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '0',
				'options' => [
					'0' => 'Auto',
					'1' => '1',
					'2' => '2',
					'3' => '3',
					'4' => '4',
					'5' => '5',
					'6' => '6',
				],
				'prefix_class' => 'elementor-grid%s-',
			]
		);

		$this->add_responsive_control(
			'alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Justify', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				/* TODO: `prefix_class` is redundant since v3.1.0
				 * It is only here for backwards compatibility reasons.
				 * It should be removed in the future.
				 */
				'prefix_class' => 'elementor-share-buttons%s--align-',
				/*---------------------------------------------------*/
				'condition' => [
					'columns' => '0',
				],
				/* `selectors` was added on v3.1.0 as a superior alternative to the previous `prefix_class` solution */
				'selectors' => [
					'{{WRAPPER}}' => '--alignment: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'share_url_type',
			[
				'label' => esc_html__( 'Target URL', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'current_page' => esc_html__( 'Current Page', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'default' => 'current_page',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'share_url',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'options' => false,
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
				'condition' => [
					'share_url_type' => 'custom',
				],
				'show_label' => false,
				'frontend_available' => true,
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_buttons_style',
			[
				'label' => esc_html__( 'Share Buttons', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'column_gap',
			[
				'label' => esc_html__( 'Columns Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 10,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--grid-side-margin: {{SIZE}}{{UNIT}}; --grid-column-gap: {{SIZE}}{{UNIT}}; --grid-row-gap: {{SIZE}}{{UNIT}}',
					'(tablet) {{WRAPPER}}' => '--grid-side-margin: {{SIZE}}{{UNIT}}; --grid-column-gap: {{SIZE}}{{UNIT}}',
					'(mobile) {{WRAPPER}}' => '--grid-side-margin: {{SIZE}}{{UNIT}}; --grid-column-gap: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'row_gap',
			[
				'label' => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 10,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--grid-row-gap: {{SIZE}}{{UNIT}}; --grid-bottom-margin: {{SIZE}}{{UNIT}}',
					'(tablet) {{WRAPPER}}' => '--grid-row-gap: {{SIZE}}{{UNIT}}; --grid-bottom-margin: {{SIZE}}{{UNIT}}',
					'(mobile) {{WRAPPER}}' => '--grid-row-gap: {{SIZE}}{{UNIT}}; --grid-bottom-margin: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'button_size',
			[
				'label' => esc_html__( 'Button Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0.5,
						'max' => 2,
						'step' => 0.05,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-share-btn' => 'font-size: calc({{SIZE}}{{UNIT}} * 10);',
				],
			]
		);

		$this->add_responsive_control(
			'icon_size',
			[
				'label' => esc_html__( 'Icon Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'em' => [
						'min' => 0.5,
						'max' => 4,
						'step' => 0.1,
					],
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [
					'unit' => 'em',
				],
				'tablet_default' => [
					'unit' => 'em',
				],
				'mobile_default' => [
					'unit' => 'em',
				],
				'size_units' => [ 'em', 'px' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-share-btn__icon' => '--e-share-buttons-icon-size: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'view!' => 'text',
				],
			]
		);

		$this->add_responsive_control(
			'button_height',
			[
				'label' => esc_html__( 'Button Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'em' => [
						'min' => 1,
						'max' => 7,
						'step' => 0.1,
					],
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [
					'unit' => 'em',
				],
				'tablet_default' => [
					'unit' => 'em',
				],
				'mobile_default' => [
					'unit' => 'em',
				],
				'size_units' => [ 'em', 'px' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-share-btn' => 'height: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'border_size',
			[
				'label' => esc_html__( 'Border Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'default' => [
					'size' => 2,
				],
				'range' => [
					'px' => [
						'min' => 1,
						'max' => 20,
					],
					'em' => [
						'max' => 2,
						'step' => 0.1,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-share-btn' => 'border-width: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'skin' => [ 'framed', 'boxed' ],
				],
			]
		);

		$this->add_control(
			'color_source',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'official' => esc_html__( 'Official', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'default' => 'official',
				'prefix_class' => 'elementor-share-buttons--color-',
				'separator' => 'before',
			]
		);

		$this->start_controls_tabs(
			'tabs_button_style',
			[
				'condition' => [
					'color_source' => 'custom',
				],
			]
		);

		$this->start_controls_tab(
			'tab_button_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'primary_color',
			[
				'label' => esc_html__( 'Primary Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}}' => '--e-share-buttons-primary-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'secondary_color',
			[
				'label' => esc_html__( 'Secondary Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--e-share-buttons-secondary-color: {{VALUE}}',
				],
				'separator' => 'after',
				'condition' => [
					'skin!' => 'framed',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_button_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'primary_color_hover',
			[
				'label' => esc_html__( 'Primary Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-share-btn:hover' => '--e-share-buttons-primary-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'secondary_color_hover',
			[
				'label' => esc_html__( 'Secondary Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-share-btn:hover' => '--e-share-buttons-secondary-color: {{VALUE}}',
				],
				'separator' => 'after',
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'typography',
				'selector' => '{{WRAPPER}} .elementor-share-btn__title',
				'exclude' => [ 'line_height' ],
			]
		);

		$this->add_control(
			'text_padding',
			[
				'label' => esc_html__( 'Text Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} a.elementor-button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'separator' => 'before',
				'condition' => [
					'view' => 'text',
				],
			]
		);

		$this->end_controls_section();

	}

	protected function render() {
		$settings = $this->get_active_settings();

		if ( empty( $settings['share_buttons'] ) ) {
			return;
		}

		$button_classes = 'elementor-share-btn';

		$show_text = 'text' === $settings['view'] || 'yes' === $settings['show_label'];
		?>
		<div class="elementor-grid">
			<?php
			$networks_data = Module::get_networks();

			foreach ( $settings['share_buttons'] as $button ) {
				$network_name = $button['button'];

				// A deprecated network.
				if ( ! isset( $networks_data[ $network_name ] ) ) {
					continue;
				}

				$social_network_class = ' elementor-share-btn_' . $network_name;
				?>
					<div class="elementor-grid-item">
						<div class="<?php echo esc_attr( $button_classes . $social_network_class ); ?>">
							<?php if ( 'icon' === $settings['view'] || 'icon-text' === $settings['view'] ) : ?>
								<span class="elementor-share-btn__icon">
								<?php self::render_share_icon( $network_name ); ?>
								<span
									class="elementor-screen-only"><?php echo sprintf( esc_html__( 'Share on %s', 'elementor-pro' ), esc_html( $network_name ) ); ?></span>
							</span>
							<?php endif; ?>
							<?php if ( $show_text ) : ?>
								<div class="elementor-share-btn__text">
									<?php if ( 'yes' === $settings['show_label'] || 'text' === $settings['view'] ) : ?>
										<span class="elementor-share-btn__title">
										<?php
										// PHPCS - the main text of a widget should not be escaped.
										echo $button['text'] ? $button['text'] : $networks_data[ $network_name ]['title']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
										?>
									</span>
									<?php endif; ?>
								</div>
							<?php endif; ?>
						</div>
					</div>
				<?php
			}
			?>
		</div>
		<?php
	}

	/**
	 * Render Share Buttons widget output in the editor.
	 *
	 * Written as a Backbone JavaScript template and used to generate the live preview.
	 *
	 * @since 2.9.0
	 * @access protected
	 */
	protected function content_template() {
		?>
		<#
			var shareButtonsEditorModule = elementorPro.modules.shareButtons,
				buttonClass = 'elementor-share-btn';

			var showText = 'icon-text' === settings.view ? 'yes' === settings.show_label : 'text' === settings.view;
		#>
		<div class="elementor-grid">
			<#
				_.each( settings.share_buttons, function( button ) {
					// A deprecated network.
					if ( ! shareButtonsEditorModule.getNetworkData( button ) ) {
						return;
					}

					var networkName = button.button,
						socialNetworkClass = 'elementor-share-btn_' + networkName;
					#>
					<div class="elementor-grid-item">
						<div class="{{ buttonClass }} {{ socialNetworkClass }}">
							<# if ( 'icon' === settings.view || 'icon-text' === settings.view ) { #>
							<span class="elementor-share-btn__icon">
								<i class="{{ shareButtonsEditorModule.getNetworkClass( networkName ) }}" aria-hidden="true"></i>
								<span class="elementor-screen-only">Share on {{{ networkName }}}</span>
							</span>
							<# } #>
							<# if ( showText ) { #>
								<div class="elementor-share-btn__text">
									<# if ( 'yes' === settings.show_label || 'text' === settings.view ) { #>
										<span class="elementor-share-btn__title">{{{ shareButtonsEditorModule.getNetworkTitle( button ) }}}</span>
									<# } #>
								</div>
							<# } #>
						</div>
					</div>
			<#  } ); #>
		</div>
		<?php
	}

	private static function render_share_icon( $network_name ) {
		$network_icon_data = self::get_network_icon_data( $network_name );

		if ( Plugin::elementor()->experiments->is_feature_active( 'e_font_icon_svg' ) ) {
			$icon = Icons_Manager::render_font_icon( $network_icon_data );
		} else {
			$icon = sprintf( '<i class="%s" aria-hidden="true"></i>', $network_icon_data['value'] );
		}

		Utils::print_unescaped_internal_string( $icon );
	}
}
modules/hotspot/widgets/hotspot.php000064400000100646150755004300013601 0ustar00<?php

namespace ElementorPro\Modules\Hotspot\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;
use Elementor\Group_Control_Image_Size;
use Elementor\Repeater;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Icons_Manager;
use Elementor\Utils;
use Elementor\Widget_Image;
use ElementorPro\Base\Base_Widget_Trait;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Hotspot extends Widget_Image {
	use Base_Widget_Trait;

	public function get_name() {
		return 'hotspot';
	}

	public function get_title() {
		return esc_html__( 'Hotspot', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-image-hotspot';
	}

	public function get_keywords() {
		return [ 'image', 'tooltip', 'CTA', 'dot' ];
	}

	protected function register_controls() {
		parent::register_controls();

		/**
		 * Image Section
		 */

		$this->remove_control( 'caption_source' );
		$this->remove_control( 'caption' );
		$this->remove_control( 'link_to' );
		$this->remove_control( 'link' );
		$this->remove_control( 'open_lightbox' );

		/**
		 * Section Hotspot
		 */
		$this->start_controls_section(
			'hotspot_section',
			[
				'label' => esc_html__( 'Hotspot', 'elementor-pro' ),
			]
		);

		$repeater = new Repeater();

		$repeater->start_controls_tabs( 'hotspot_repeater' );

		$repeater->start_controls_tab(
			'hotspot_content_tab',
			[
				'label' => esc_html__( 'Content', 'elementor-pro' ),
			]
		);

		$repeater->add_control(
			'hotspot_label',
			[
				'label' => esc_html__( 'Label', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => '',
				'label_block' => true,
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$repeater->add_control(
			'hotspot_link',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
			]
		);

		$repeater->add_control(
			'hotspot_icon',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'skin' => 'inline',
				'label_block' => false,
			]
		);

		$repeater->add_control(
			'hotspot_icon_position',
			[
				'label' => esc_html__( 'Icon Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Icon Start', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'end' => [
						'title' => esc_html__( 'Icon End', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'selectors_dictionary' => [
					'start' => 'grid-column: 1;',
					'end' => 'grid-column: 2;',
				],
				'condition' => [
					'hotspot_icon[value]!' => '',
					'hotspot_label[value]!' => '',
				],
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}} .e-hotspot__icon' => '{{VALUE}}',
				],
				'default' => 'start',
			]
		);

		$repeater->add_control(
			'hotspot_icon_spacing',
			[
				'label' => esc_html__( 'Icon Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [
					'size' => '5',
					'unit' => 'px',
				],
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}} .e-hotspot__button' =>
							'grid-gap: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'hotspot_icon[value]!' => '',
					'hotspot_label[value]!' => '',
				],
			]
		);

		$repeater->add_control(
			'hotspot_custom_size',
			[
				'label' => esc_html__( 'Custom Hotspot Size', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'default' => 'no',
				'description' => esc_html__( 'Set custom Hotspot size that will only affect this specific hotspot.', 'elementor-pro' ),
			]
		);

		$repeater->add_control('hotspot_width',
			[
				'label' => esc_html__( 'Min Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 1000,
						'step' => 1,
					],
				],
				'size_units' => [ 'px' ],
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}}' => '--hotspot-min-width: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'hotspot_custom_size' => 'yes',
				],
			]
		);

		$repeater->add_control(
			'hotspot_height',
			[
				'label' => esc_html__( 'Min Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 1000,
						'step' => 1,
					],
				],
				'size_units' => [ 'px' ],
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}}' => '--hotspot-min-height: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'hotspot_custom_size' => 'yes',
				],
			]
		);

		$repeater->add_control(
			'hotspot_tooltip_content',
			[
				'render_type' => 'template',
				'label' => esc_html__( 'Tooltip Content', 'elementor-pro' ),
				'type' => Controls_Manager::WYSIWYG,
				'default' => esc_html__( 'Add Your Tooltip Text Here', 'elementor-pro' ),
			]
		);

		$repeater->end_controls_tab();

		$repeater->start_controls_tab(
			'hotspot_position_tab',
			[
				'label' => esc_html__( 'POSITION', 'elementor-pro' ),
			]
		);

		$repeater->add_control(
			'hotspot_horizontal',
			[
				'label' => esc_html__( 'Horizontal Orientation', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'default' => is_rtl() ? 'right' : 'left',
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'toggle' => false,
			]
		);

		$repeater->add_responsive_control(
			'hotspot_offset_x',
			[
				'label' => esc_html__( 'Offset', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ '%' ],
				'default' => [
					'unit' => '%',
					'size' => '50',
				],
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}}' =>
							'{{hotspot_horizontal.VALUE}}: {{SIZE}}%; --hotspot-translate-x: {{SIZE}}%;',
				],
			]
		);

		$repeater->add_control(
			'hotspot_vertical',
			[
				'label' => esc_html__( 'Vertical Orientation', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'top' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'bottom' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'default' => 'top',
				'toggle' => false,
			]
		);

		$repeater->add_responsive_control(
			'hotspot_offset_y',
			[
				'label' => esc_html__( 'Offset', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ '%' ],
				'default' => [
					'unit' => '%',
					'size' => '50',
				],
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}}' =>
							'{{hotspot_vertical.VALUE}}: {{SIZE}}%; --hotspot-translate-y: {{SIZE}}%;',
				],
			]
		);

		$repeater->add_control(
			'hotspot_tooltip_position',
			[
				'label' => esc_html__( 'Custom Tooltip Properties', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'default' => 'no',
				'description' => sprintf( esc_html__( 'Set custom Tooltip opening that will only affect this specific hotspot.', 'elementor-pro' ), '<code>|</code>' ),
			]
		);

		$repeater->add_control(
			'hotspot_heading',
			[
				'label' => esc_html__( 'Box', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'condition' => [
					'hotspot_tooltip_position' => 'yes',
				],
			]
		);

		$repeater->add_responsive_control(
			'hotspot_position',
			[
				'label' => esc_html__( 'Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'right' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'bottom' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'left' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
					'top' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}} .e-hotspot--tooltip-position' => 'right: initial;bottom: initial;left: initial;top: initial;{{VALUE}}: calc(100% + 5px );',
				],
				'condition' => [
					'hotspot_tooltip_position' => 'yes',
				],
				'render_type' => 'template',
			]
		);

		$repeater->add_responsive_control(
			'hotspot_tooltip_width',
			[
				'label' => esc_html__( 'Min Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 2000,
						'step' => 1,
					],
				],
				'size_units' => [ 'px' ],
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}} .e-hotspot__tooltip' => 'min-width: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'hotspot_tooltip_position' => 'yes',
				],
			]
		);

		$repeater->add_control(
			'hotspot_tooltip_text_wrap',
			[
				'label' => esc_html__( 'Text Wrap', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}}' => '--white-space: normal',
				],
				'condition' => [
					'hotspot_tooltip_position' => 'yes',
				],
			]
		);

		$repeater->end_controls_tab();

		$repeater->end_controls_tabs();

		$this->add_control(
			'hotspot',
			[
				'label' => esc_html__( 'Hotspot', 'elementor-pro' ),
				'type' => Controls_Manager::REPEATER,
				'fields' => $repeater->get_controls(),
				'title_field' => '{{{ hotspot_label }}}',
				'default' => [
					[
						// Default #1 circle
					],
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'hotspot_animation',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'e-hotspot--soft-beat' => esc_html__( 'Soft Beat', 'elementor-pro' ),
					'e-hotspot--expand' => esc_html__( 'Expand', 'elementor-pro' ),
					'e-hotspot--overlay' => esc_html__( 'Overlay', 'elementor-pro' ),
					'' => esc_html__( 'None', 'elementor-pro' ),
				],
				'default' => 'e-hotspot--expand',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'hotspot_sequenced_animation',
			[
				'label' => esc_html__( 'Sequenced Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'default' => 'no',
				'frontend_available' => true,
				'render_type' => 'none',
			]
		);

		$this->add_control(
			'hotspot_sequenced_animation_duration',
			[
				'label' => esc_html__( 'Sequence Duration (ms)', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 100,
						'max' => 20000,
					],
				],
				'condition' => [
					'hotspot_sequenced_animation' => 'yes',
				],
				'frontend_available' => true,
				'render_type' => 'ui',
			]
		);

		$this->end_controls_section();

		/**
		 * Tooltip Section
		 */
		$this->start_controls_section(
			'tooltip_section',
			[
				'label' => esc_html__( 'Tooltip', 'elementor-pro' ),
			]
		);

		$this->add_responsive_control(
			'tooltip_position',
			[
				'label' => esc_html__( 'Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'default' => 'top',
				'toggle' => false,
				'options' => [
					'right' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'bottom' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'left' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
					'top' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'selectors' => [
					'{{WRAPPER}} .e-hotspot--tooltip-position' => 'right: initial;bottom: initial;left: initial;top: initial;{{VALUE}}: calc(100% + 5px );',
				],
				'frontend_available' => true,
			]
		);

		$this->add_responsive_control(
			'tooltip_trigger',
			[
				'label' => esc_html__( 'Trigger', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'mouseenter' => esc_html__( 'Hover', 'elementor-pro' ),
					'click' => esc_html__( 'Click', 'elementor-pro' ),
					'none' => esc_html__( 'None', 'elementor-pro' ),
				],
				'default' => 'click',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'tooltip_animation',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'e-hotspot--fade-in-out' => esc_html__( 'Fade In/Out', 'elementor-pro' ),
					'e-hotspot--fade-grow' => esc_html__( 'Fade Grow', 'elementor-pro' ),
					'e-hotspot--fade-direction' => esc_html__( 'Fade By Direction', 'elementor-pro' ),
					'e-hotspot--slide-direction' => esc_html__( 'Slide By Direction', 'elementor-pro' ),
				],
				'default' => 'e-hotspot--fade-in-out',
				'placeholder' => esc_html__( 'Enter your image caption', 'elementor-pro' ),
				'condition' => [
					'tooltip_trigger!' => 'none',
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'tooltip_animation_duration',
			[
				'label' => esc_html__( 'Duration (ms)', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 10000,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--tooltip-transition-duration: {{SIZE}}ms;',
				],
				'condition' => [
					'tooltip_trigger!' => 'none',
				],
			]
		);

		$this->end_controls_section();

		/*************
		 * Style Tab
		 ************/
		/**
		 * Section Style Image
		 */

		$this->remove_control( 'section_style_caption' );

		$this->remove_control( 'caption_align' );

		$this->remove_control( 'text_color' );

		$this->remove_control( 'caption_background_color' );

		$this->remove_control( 'caption_typography' );

		$this->remove_control( 'caption_text_shadow' );

		$this->remove_control( 'caption_space' );

		$this->update_control( 'align', [
			'options' => [
				'flex-start' => [
					'title' => esc_html__( 'Start', 'elementor-pro' ),
					'icon' => 'eicon-text-align-left',
				],
				'center' => [
					'title' => esc_html__( 'Center', 'elementor-pro' ),
					'icon' => 'eicon-text-align-center',
				],
				'flex-end' => [
					'title' => esc_html__( 'End', 'elementor-pro' ),
					'icon' => 'eicon-text-align-right',
				],
			],
			'selectors' => [
				'{{WRAPPER}}' => '--background-align: {{VALUE}};',
			],
		] );

		$this->update_control(
			'width',
			[
				'selectors' => [
					'{{WRAPPER}}' => '--container-width: {{SIZE}}{{UNIT}}; --image-width: 100%;',
				],
			]
		);

		$this->update_control(
			'space',
			[
				'selectors' => [
					'{{WRAPPER}}' => '--container-max-width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->update_control(
			'height',
			[
				'selectors' => [
					'{{WRAPPER}}' => '--container-height: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->remove_control( 'hover_animation' );

		$this->update_control(
			'opacity',
			[
				'selectors' => [
					'{{WRAPPER}}' => '--opacity: {{SIZE}};',
				],
			]
		);

		$this->update_control(
			'opacity_hover',
			[
				'selectors' => [
					'{{WRAPPER}} .elementor-widget-container>img:hover' => '--opacity: {{SIZE}};',
				],
			]
		);

		/**
		 * Section Style Hotspot
		 */
		$this->start_controls_section(
			'section_style_hotspot',
			[
				'label' => esc_html__( 'Hotspot', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'style_hotspot_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--hotspot-color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_PRIMARY,
				],
			]
		);

		$this->add_responsive_control(
			'style_hotspot_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'%' => [
						'min' => 0,
						'max' => 100,
					],
					'px' => [
						'min' => 0,
						'max' => 300,
						'step' => 1,
					],
				],
				'size_units' => [ 'px', '%' ],
				'default' => [
					'unit' => 'px',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--hotspot-size: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'style_typography',
				'selector' => '{{WRAPPER}} .e-hotspot__label',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
			]
		);

		$this->add_responsive_control(
			'style_hotspot_width',
			[
				'label' => esc_html__( 'Min Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 1000,
						'step' => 1,
					],
				],
				'size_units' => [ 'px' ],
				'selectors' => [
					'{{WRAPPER}}' => '--hotspot-min-width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'style_hotspot_height',
			[
				'label' => esc_html__( 'Min Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 1000,
						'step' => 1,
					],
				],
				'size_units' => [ 'px' ],
				'selectors' => [
					'{{WRAPPER}}' => '--hotspot-min-height: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'style_hotspot_box_color',
			[
				'label' => esc_html__( 'Box Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--hotspot-box-color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
			]
		);

		$this->add_responsive_control(
			'style_hotspot_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'em' => [
						'min' => 0,
						'max' => 100,
					],
					'px' => [
						'min' => 0,
						'max' => 100,
						'step' => 1,
					],
				],
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}' => '--hotspot-padding: {{SIZE}}{{UNIT}};',
				],
				'default' => [
					'unit' => 'px',
				],
			]
		);

		$this->add_control(
			'style_hotspot_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--hotspot-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'default' => [
					'unit' => 'px',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'style_hotspot_box_shadow',
				'selector' => '
					{{WRAPPER}} .e-hotspot:not(.e-hotspot--circle) .e-hotspot__button,
					{{WRAPPER}} .e-hotspot.e-hotspot--circle .e-hotspot__button .e-hotspot__outer-circle
				',
			]
		);

		$this->end_controls_section();

		/**
		 * Section Style Tooltip
		 */
		$this->start_controls_section(
			'section_style_tooltip',
			[
				'label' => esc_html__( 'Tooltip', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'style_tooltip_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--tooltip-text-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'style_tooltip_typography',
				'selector' => '{{WRAPPER}} .e-hotspot__tooltip',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_SECONDARY,
				],
			]
		);

		$this->add_responsive_control(
			'style_tooltip_align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Justified', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--tooltip-align: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'style_tooltip_heading',
			[
				'label' => esc_html__( 'Box', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'style_tooltip_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 2000,
						'step' => 1,
					],
				],
				'size_units' => [ 'px' ],
				'selectors' => [
					'{{WRAPPER}}' => '--tooltip-min-width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'style_tooltip_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'default' => [
					'unit' => 'px',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--tooltip-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'style_tooltip_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--tooltip-color: {{VALUE}}',
				],
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
			]
		);

		$this->add_control(
			'style_tooltip_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--tooltip-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'style_tooltip_box_shadow',
				'selector' => '{{WRAPPER}} .e-hotspot__tooltip',
			]
		);

		$this->end_controls_section();
	}


	protected function render() {
		$settings = $this->get_settings_for_display();

		$is_tooltip_direction_animation = 'e-hotspot--slide-direction' === $settings['tooltip_animation'] || 'e-hotspot--fade-direction' === $settings['tooltip_animation'];
		$show_tooltip = 'none' === $settings['tooltip_trigger'];
		$sequenced_animation_class = 'yes' === $settings['hotspot_sequenced_animation'] ? 'e-hotspot--sequenced' : '';

		// Main Image
		Group_Control_Image_Size::print_attachment_image_html( $settings, 'image', 'image' );

		// Hotspot
		foreach ( $settings['hotspot'] as $key => $hotspot ) :
			$is_circle = ! $hotspot['hotspot_label'] && ! $hotspot['hotspot_icon']['value'];
			$is_only_icon = ! $hotspot['hotspot_label'] && $hotspot['hotspot_icon']['value'];
			$hotspot_position_x = '%' === $hotspot['hotspot_offset_x']['unit'] ? 'e-hotspot--position-' . $hotspot['hotspot_horizontal'] : '';
			$hotspot_position_y = '%' === $hotspot['hotspot_offset_y']['unit'] ? 'e-hotspot--position-' . $hotspot['hotspot_vertical'] : '';
			$is_hotspot_link = ! empty( $hotspot['hotspot_link']['url'] );
			$hotspot_element_tag = $is_hotspot_link ? 'a' : 'div';

			// hotspot attributes
			$hotspot_repeater_setting_key = $this->get_repeater_setting_key( 'hotspot', 'hotspots', $key );
			$this->add_render_attribute(
				$hotspot_repeater_setting_key, [
					'class' => [
						'e-hotspot',
						'elementor-repeater-item-' . $hotspot['_id'],
						$sequenced_animation_class,
						$hotspot_position_x,
						$hotspot_position_y,
						$is_hotspot_link ? 'e-hotspot--link' : '',
						( 'click' === $settings['tooltip_trigger'] && $is_hotspot_link ) ? 'e-hotspot--no-tooltip' : '',
					],
				]
			);
			if ( $is_circle ) {
				$this->add_render_attribute( $hotspot_repeater_setting_key, 'class', 'e-hotspot--circle' );
			}
			if ( $is_only_icon ) {
				$this->add_render_attribute( $hotspot_repeater_setting_key, 'class', 'e-hotspot--icon' );
			}

			if ( $is_hotspot_link ) {
				$this->add_link_attributes( $hotspot_repeater_setting_key, $hotspot['hotspot_link'] );
			}

			// hotspot trigger attributes
			$trigger_repeater_setting_key = $this->get_repeater_setting_key( 'trigger', 'hotspots', $key );
			$this->add_render_attribute(
				$trigger_repeater_setting_key, [
					'class' => [
						'e-hotspot__button',
						$settings['hotspot_animation'],
					],
				]
			);

			//direction mask attributes
			$direction_mask_repeater_setting_key = $this->get_repeater_setting_key( 'e-hotspot__direction-mask', 'hotspots', $key );
			$this->add_render_attribute(
				$direction_mask_repeater_setting_key, [
					'class' => [
						'e-hotspot__direction-mask',
						( $is_tooltip_direction_animation ) ? 'e-hotspot--tooltip-position' : '',
					],
				]
			);

			//tooltip attributes
			$tooltip_custom_position = ( $is_tooltip_direction_animation && $hotspot['hotspot_tooltip_position'] && $hotspot['hotspot_position'] ) ? 'e-hotspot--override-tooltip-animation-from-' . $hotspot['hotspot_position'] : '';
			$tooltip_repeater_setting_key = $this->get_repeater_setting_key( 'tooltip', 'hotspots', $key );
			$this->add_render_attribute(
				$tooltip_repeater_setting_key, [
					'class' => [
						'e-hotspot__tooltip',
						( $show_tooltip ) ? 'e-hotspot--show-tooltip' : '',
						( ! $is_tooltip_direction_animation ) ? 'e-hotspot--tooltip-position' : '',
						( ! $show_tooltip ) ? $settings['tooltip_animation'] : '',
						$tooltip_custom_position,
					],
				]
			); ?>

			<?php // Hotspot ?>
			<<?php Utils::print_validated_html_tag( $hotspot_element_tag ); ?> <?php $this->print_render_attribute_string( $hotspot_repeater_setting_key ); ?>>

				<?php // Hotspot Trigger ?>
				<div <?php $this->print_render_attribute_string( $trigger_repeater_setting_key ); ?>>
					<?php if ( $is_circle ) : ?>
						<div class="e-hotspot__outer-circle"></div>
						<div class="e-hotspot__inner-circle"></div>
					<?php else : ?>
						<?php if ( $hotspot['hotspot_icon']['value'] ) : ?>
							<div class="e-hotspot__icon"><?php Icons_Manager::render_icon( $hotspot['hotspot_icon'] ); ?></div>
						<?php endif; ?>
						<?php if ( $hotspot['hotspot_label'] ) : ?>
							<div class="e-hotspot__label"><?php
								// PHPCS - the main text of a widget should not be escaped.
								echo $hotspot['hotspot_label']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
							?></div>
						<?php endif; ?>
					<?php endif; ?>
				</div>

				<?php // Hotspot Tooltip ?>
				<?php if ( $hotspot['hotspot_tooltip_content'] && ! ( 'click' === $settings['tooltip_trigger'] && $is_hotspot_link ) ) : ?>
					<?php if ( $is_tooltip_direction_animation ) : ?>
						<div <?php $this->print_render_attribute_string( $direction_mask_repeater_setting_key ); ?>>
					<?php endif; ?>
					<div <?php $this->print_render_attribute_string( $tooltip_repeater_setting_key ); ?> >
						<?php
						// PHPCS - the main text of a widget should not be escaped.
						echo $hotspot['hotspot_tooltip_content']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
						?>
					</div>
					<?php if ( $is_tooltip_direction_animation ) : ?>
						</div>
					<?php endif; ?>
				<?php endif; ?>

			</<?php Utils::print_validated_html_tag( $hotspot_element_tag ); ?>>

	<?php endforeach; ?>

		<?php
	}

	/**
	 * Render Hotspot widget output in the editor.
	 *
	 * Written as a Backbone JavaScript template and used to generate the live preview.
	 *
	 * @since  2.9.0
	 * @access protected
	 */
	protected function content_template() {         ?>
		<#
		const image = {
			id: settings.image.id,
			url: settings.image.url,
			size: settings.image_size,
			dimension: settings.image_custom_dimension,
			model: view.getEditModel()
		};

		const imageUrl = elementor.imagesManager.getImageUrl( image );

		#>
		<img src="{{ imageUrl }}" title="" alt="">
		<#
		const isTooltipDirectionAnimation = (settings.tooltip_animation==='e-hotspot--slide-direction' || settings.tooltip_animation==='e-hotspot--fade-direction' ) ? true : false;
		const showTooltip = ( settings.tooltip_trigger === 'none' );

		_.each( settings.hotspot, ( hotspot, index ) => {
			const iconHTML = elementor.helpers.renderIcon( view, hotspot.hotspot_icon, {}, 'i' , 'object' );

			const isCircle = !hotspot.hotspot_label && !hotspot.hotspot_icon.value;
			const isOnlyIcon = !hotspot.hotspot_label && hotspot.hotspot_icon.value;
			const hotspotPositionX = '%' === hotspot.hotspot_offset_x.unit ? 'e-hotspot--position-' + hotspot.hotspot_horizontal : '';
			const hotspotPositionY = '%' === hotspot.hotspot_offset_y.unit ? 'e-hotspot--position-' + hotspot.hotspot_vertical : '';
			const hotspotLink = hotspot.hotspot_link.url;
			const hotspotElementTag = hotspotLink ? 'a': 'div';

			// hotspot attributes
			const hotspotRepeaterSettingKey = view.getRepeaterSettingKey( 'hotspot', 'hotspots', index );
			view.addRenderAttribute( hotspotRepeaterSettingKey, {
				'class' : [
					'e-hotspot',
					'elementor-repeater-item-' + hotspot._id,
					hotspotPositionX,
					hotspotPositionY,
					hotspotLink ? 'e-hotspot--link' : '',,
				]
			});

			if ( isCircle ) {
				view.addRenderAttribute( hotspotRepeaterSettingKey, 'class', 'e-hotspot--circle' );
			}

			if ( isOnlyIcon ) {
				view.addRenderAttribute( hotspotRepeaterSettingKey, 'class', 'e-hotspot--icon' );
			}

			// hotspot trigger attributes
			const triggerRepeaterSettingKey = view.getRepeaterSettingKey( 'trigger', 'hotspots', index );
			view.addRenderAttribute(triggerRepeaterSettingKey, {
				'class' : [
					'e-hotspot__button',
					settings.hotspot_animation,
					//'hotspot-trigger-' + hotspot.hotspot_icon_position
				]
			});

			//direction mask attributes
			const directionMaskRepeaterSettingKey = view.getRepeaterSettingKey( 'e-hotspot__direction-mask', 'hotspots', index );
			view.addRenderAttribute(directionMaskRepeaterSettingKey, {
				'class' : [
					'e-hotspot__direction-mask',
					( isTooltipDirectionAnimation ) ? 'e-hotspot--tooltip-position' : ''
				]
			});

			//tooltip attributes
			const tooltipCustomPosition = ( isTooltipDirectionAnimation && hotspot.hotspot_tooltip_position && hotspot.hotspot_position ) ? 'e-hotspot--override-tooltip-animation-from-' + hotspot.hotspot_position : '';
			const tooltipRepeaterSettingKey = view.getRepeaterSettingKey('tooltip', 'hotspots', index);
			view.addRenderAttribute( tooltipRepeaterSettingKey, {
				'class': [
					'e-hotspot__tooltip',
					( showTooltip ) ? 'e-hotspot--show-tooltip' : '',
					( !isTooltipDirectionAnimation ) ? 'e-hotspot--tooltip-position' : '',
					( !showTooltip ) ? settings.tooltip_animation : '',
					tooltipCustomPosition
				],
			});

			#>
			<{{{ hotspotElementTag }}} {{{ view.getRenderAttributeString( hotspotRepeaterSettingKey ) }}}>

					<?php // Hotspot Trigger ?>
					<div {{{ view.getRenderAttributeString( triggerRepeaterSettingKey ) }}}>
						<# if ( isCircle ) { #>
						<div class="e-hotspot__outer-circle"></div>
						<div class="e-hotspot__inner-circle"></div>
						<# } else { #>
						<# if (hotspot.hotspot_icon.value){ #>
						<div class="e-hotspot__icon">{{{ iconHTML.value }}}</div>
						<# } #>
						<# if ( hotspot.hotspot_label ){ #>
						<div class="e-hotspot__label">{{{ hotspot.hotspot_label }}}</div>
						<# } #>
						<# } #>
					</div>

					<?php // Hotspot Tooltip ?>
					<# if( hotspot.hotspot_tooltip_content && ! ( 'click' === settings.tooltip_trigger && hotspotLink ) ){ #>
					<# if( isTooltipDirectionAnimation ){ #>
					<div {{{ view.getRenderAttributeString( directionMaskRepeaterSettingKey ) }}}>
						<# } #>
						<div {{{ view.getRenderAttributeString( tooltipRepeaterSettingKey ) }}}>
							{{{ hotspot.hotspot_tooltip_content }}}
						</div>
						<# if( isTooltipDirectionAnimation ){ #>
					</div>
					<# } #>
					<# } #>

			</{{{ hotspotElementTag }}}>
		<# }); #>
		<?php
	}
}
modules/hotspot/module.php000064400000000470150755004300011712 0ustar00<?php
namespace ElementorPro\Modules\Hotspot;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function get_widgets() {
		return [
			'Hotspot',
		];
	}

	public function get_name() {
		return 'hotspot';
	}
}
modules/dynamic-tags/acf/tags/acf-image.php000064400000004166150755004300014613 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\ACF\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\ACF\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class ACF_Image extends Data_Tag {

	public function get_name() {
		return 'acf-image';
	}

	public function get_title() {
		return esc_html__( 'ACF', 'elementor-pro' ) . ' ' . esc_html__( 'Image Field', 'elementor-pro' );
	}

	public function get_group() {
		return Module::ACF_GROUP;
	}

	public function get_categories() {
		return [ Module::IMAGE_CATEGORY ];
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	public function get_value( array $options = [] ) {
		$image_data = [
			'id' => null,
			'url' => '',
		];

		list( $field, $meta_key ) = Module::get_tag_value_field( $this );

		if ( $field && is_array( $field ) ) {
			$field['return_format'] = isset( $field['save_format'] ) ? $field['save_format'] : $field['return_format'];
			switch ( $field['return_format'] ) {
				case 'object':
				case 'array':
					$value = $field['value'];
					break;
				case 'url':
					$value = [
						'id' => 0,
						'url' => $field['value'],
					];
					break;
				case 'id':
					$src = wp_get_attachment_image_src( $field['value'], $field['preview_size'] );
					$value = [
						'id' => $field['value'],
						'url' => $src[0],
					];
					break;
			}
		}

		if ( ! isset( $value ) ) {
			// Field settings has been deleted or not available.
			$value = get_field( $meta_key );
		}

		if ( empty( $value ) && $this->get_settings( 'fallback' ) ) {
			$value = $this->get_settings( 'fallback' );
		}

		if ( ! empty( $value ) && is_array( $value ) ) {
			$image_data['id'] = $value['id'];
			$image_data['url'] = $value['url'];
		}

		return $image_data;
	}

	protected function register_controls() {
		Module::add_key_control( $this );

		$this->add_control(
			'fallback',
			[
				'label' => esc_html__( 'Fallback', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
			]
		);
	}

	public function get_supported_fields() {
		return [
			'image',
		];
	}
}
modules/dynamic-tags/acf/tags/acf-file.php000064400000001063150755004300014441 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\ACF\Tags;

use ElementorPro\Modules\DynamicTags\ACF\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class ACF_File extends ACF_Image {

	public function get_name() {
		return 'acf-file';
	}

	public function get_title() {
		return esc_html__( 'ACF', 'elementor-pro' ) . ' ' . esc_html__( 'File Field', 'elementor-pro' );
	}

	public function get_categories() {
		return [
			Module::MEDIA_CATEGORY,
		];
	}

	public function get_supported_fields() {
		return [
			'file',
		];
	}
}
modules/dynamic-tags/acf/tags/acf-number.php000064400000002324150755004300015013 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\ACF\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\ACF\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class ACF_Number extends Tag {

	public function get_name() {
		return 'acf-number';
	}

	public function get_title() {
		return esc_html__( 'ACF', 'elementor-pro' ) . ' ' . esc_html__( 'Number', 'elementor-pro' ) . ' ' . esc_html__( 'Field', 'elementor-pro' );
	}

	public function get_group() {
		return Module::ACF_GROUP;
	}

	public function get_categories() {
		return [
			Module::NUMBER_CATEGORY,
			Module::POST_META_CATEGORY,
		];
	}

	public function render() {
		list( $field, $meta_key ) = Module::get_tag_value_field( $this );

		if ( $field && ! empty( $field['type'] ) ) {
			$value = $field['value'];
		} else {
			// Field settings has been deleted or not available.
			$value = get_field( $meta_key );
		} // End if().

		echo wp_kses_post( $value );
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	protected function register_controls() {
		Module::add_key_control( $this );
	}

	public function get_supported_fields() {
		return [
			'number',
		];
	}
}
modules/dynamic-tags/acf/tags/acf-text.php000064400000005450150755004300014512 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\ACF\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\ACF\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class ACF_Text extends Tag {

	public function get_name() {
		return 'acf-text';
	}

	public function get_title() {
		return esc_html__( 'ACF', 'elementor-pro' ) . ' ' . esc_html__( 'Field', 'elementor-pro' );
	}

	public function get_group() {
		return Module::ACF_GROUP;
	}

	public function get_categories() {
		return [
			Module::TEXT_CATEGORY,
			Module::POST_META_CATEGORY,
		];
	}

	public function render() {
		list( $field, $meta_key ) = Module::get_tag_value_field( $this );

		if ( $field && ! empty( $field['type'] ) ) {
			$value = $field['value'];

			switch ( $field['type'] ) {
				case 'radio':
					if ( isset( $field['choices'][ $value ] ) ) {
						$value = $field['choices'][ $value ];
					}
					break;
				case 'select':
					// Use as array for `multiple=true` or `return_format=array`.
					$values = (array) $value;

					foreach ( $values as $key => $item ) {
						if ( isset( $field['choices'][ $item ] ) ) {
							$values[ $key ] = $field['choices'][ $item ];
						}
					}

					$value = implode( ', ', $values );

					break;
				case 'checkbox':
					$value = (array) $value;
					$values = [];
					foreach ( $value as $item ) {
						if ( isset( $field['choices'][ $item ] ) ) {
							$values[] = $field['choices'][ $item ];
						} else {
							$values[] = $item;
						}
					}

					$value = implode( ', ', $values );

					break;
				case 'oembed':
					// Get from db without formatting.
					$value = $this->get_queried_object_meta( $meta_key );
					break;
				case 'google_map':
					$meta = $this->get_queried_object_meta( $meta_key );
					$value = isset( $meta['address'] ) ? $meta['address'] : '';
					break;
			} // End switch().
		} else {
			// Field settings has been deleted or not available.
			$value = get_field( $meta_key );
		} // End if().

		echo wp_kses_post( $value );
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	protected function register_controls() {
		Module::add_key_control( $this );
	}

	public function get_supported_fields() {
		return [
			'text',
			'textarea',
			'number',
			'email',
			'password',
			'wysiwyg',
			'select',
			'checkbox',
			'radio',
			'true_false',

			// Pro
			'oembed',
			'google_map',
			'date_picker',
			'time_picker',
			'date_time_picker',
			'color_picker',
		];
	}

	private function get_queried_object_meta( $meta_key ) {
		$value = '';
		if ( is_singular() ) {
			$value = get_post_meta( get_the_ID(), $meta_key, true );
		} elseif ( is_tax() || is_category() || is_tag() ) {
			$value = get_term_meta( get_queried_object_id(), $meta_key, true );
		}

		return $value;
	}
}
modules/dynamic-tags/acf/tags/acf-color.php000064400000002355150755004300014645 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\ACF\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\ACF\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class ACF_COLOR extends Data_Tag {

	public function get_name() {
		return 'acf-color';
	}

	public function get_title() {
		return esc_html__( 'ACF', 'elementor-pro' ) . ' ' . esc_html__( 'Color Picker Field', 'elementor-pro' );
	}

	public function get_group() {
		return Module::ACF_GROUP;
	}

	public function get_categories() {
		return [ Module::COLOR_CATEGORY ];
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	public function get_value( array $options = [] ) {
		list( $field, $meta_key ) = Module::get_tag_value_field( $this );

		if ( $field ) {
			$value = $field['value'];
		} else {
			// Field settings has been deleted or not available.
			$value = get_field( $meta_key );
		}

		if ( empty( $value ) && $this->get_settings( 'fallback' ) ) {
			$value = $this->get_settings( 'fallback' );
		}

		return $value;
	}

	protected function register_controls() {
		Module::add_key_control( $this );
	}

	public function get_supported_fields() {
		return [
			'color_picker',
		];
	}
}
modules/dynamic-tags/acf/tags/acf-gallery.php000064400000002432150755004300015162 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\ACF\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\ACF\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class ACF_Gallery extends Data_Tag {

	public function get_name() {
		return 'acf-gallery';
	}

	public function get_title() {
		return esc_html__( 'ACF', 'elementor-pro' ) . ' ' . esc_html__( 'Gallery Field', 'elementor-pro' );
	}

	public function get_categories() {
		return [ Module::GALLERY_CATEGORY ];
	}

	public function get_group() {
		return Module::ACF_GROUP;
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	public function get_value( array $options = [] ) {
		$images = [];

		list( $field, $meta_key ) = Module::get_tag_value_field( $this );

		if ( $field ) {
			$value = $field['value'];
		} else {
			// Field settings has been deleted or not available.
			$value = get_field( $meta_key );
		}

		if ( is_array( $value ) && ! empty( $value ) ) {
			foreach ( $value as $image ) {
				$images[] = [
					'id' => $image['ID'],
				];
			}
		}

		return $images;
	}

	protected function register_controls() {
		Module::add_key_control( $this );
	}

	public function get_supported_fields() {
		return [
			'gallery',
		];
	}
}
modules/dynamic-tags/acf/tags/acf-url.php000064400000004746150755004300014337 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\ACF\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\ACF\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class ACF_URL extends Data_Tag {

	public function get_name() {
		return 'acf-url';
	}

	public function get_title() {
		return esc_html__( 'ACF', 'elementor-pro' ) . ' ' . esc_html__( 'URL Field', 'elementor-pro' );
	}

	public function get_group() {
		return Module::ACF_GROUP;
	}

	public function get_categories() {
		return [ Module::URL_CATEGORY ];
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	public function get_value( array $options = [] ) {
		list( $field, $meta_key ) = Module::get_tag_value_field( $this );

		if ( $field ) {
			$value = $field['value'];

			if ( is_array( $value ) && isset( $value[0] ) ) {
				$value = $value[0];
			}

			if ( $value ) {
				if ( ! isset( $field['return_format'] ) ) {
					$field['return_format'] = isset( $field['save_format'] ) ? $field['save_format'] : '';
				}

				switch ( $field['type'] ) {
					case 'email':
						if ( $value ) {
							$value = 'mailto:' . $value;
						}
						break;
					case 'image':
					case 'file':
						switch ( $field['return_format'] ) {
							case 'array':
							case 'object':
								$value = $value['url'];
								break;
							case 'id':
								if ( 'image' === $field['type'] ) {
									$src = wp_get_attachment_image_src( $value, 'full' );
									$value = $src[0];
								} else {
									$value = wp_get_attachment_url( $value );
								}
								break;
						}
						break;
					case 'post_object':
					case 'relationship':
						$value = get_permalink( $value );
						break;
					case 'taxonomy':
						$value = get_term_link( $value, $field['taxonomy'] );
						break;
				} // End switch().
			}
		} else {
			// Field settings has been deleted or not available.
			$value = get_field( $meta_key );
		} // End if().

		if ( empty( $value ) && $this->get_settings( 'fallback' ) ) {
			$value = $this->get_settings( 'fallback' );
		}

		return wp_kses_post( $value );
	}

	protected function register_controls() {
		Module::add_key_control( $this );

		$this->add_control(
			'fallback',
			[
				'label' => esc_html__( 'Fallback', 'elementor-pro' ),
			]
		);
	}

	public function get_supported_fields() {
		return [
			'text',
			'email',
			'image',
			'file',
			'page_link',
			'post_object',
			'relationship',
			'taxonomy',
			'url',
		];
	}
}
modules/dynamic-tags/acf/module.php000064400000006603150755004300013327 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\ACF;

use Elementor\Controls_Manager;
use Elementor\Core\DynamicTags\Base_Tag;
use Elementor\Modules\DynamicTags;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends DynamicTags\Module {

	const ACF_GROUP = 'acf';

	/**
	 * @param array $types
	 *
	 * @return array
	 */
	public static function get_control_options( $types ) {
		// ACF >= 5.0.0
		if ( function_exists( 'acf_get_field_groups' ) ) {
			$acf_groups = acf_get_field_groups();
		} else {
			$acf_groups = apply_filters( 'acf/get_field_groups', [] );
		}

		$groups = [];

		$options_page_groups_ids = [];

		if ( function_exists( 'acf_options_page' ) ) {
			$pages = acf_options_page()->get_pages();
			foreach ( $pages as $slug => $page ) {
				$options_page_groups = acf_get_field_groups( [
					'options_page' => $slug,
				] );

				foreach ( $options_page_groups as $options_page_group ) {
					$options_page_groups_ids[] = $options_page_group['ID'];
				}
			}
		}

		foreach ( $acf_groups as $acf_group ) {
			// ACF >= 5.0.0
			if ( function_exists( 'acf_get_fields' ) ) {
				if ( isset( $acf_group['ID'] ) && ! empty( $acf_group['ID'] ) ) {
					$fields = acf_get_fields( $acf_group['ID'] );
				} else {
					$fields = acf_get_fields( $acf_group );
				}
			} else {
				$fields = apply_filters( 'acf/field_group/get_fields', [], $acf_group['id'] );
			}

			$options = [];

			if ( ! is_array( $fields ) ) {
				continue;
			}

			$has_option_page_location = in_array( $acf_group['ID'], $options_page_groups_ids, true );
			$is_only_options_page = $has_option_page_location && 1 === count( $acf_group['location'] );

			foreach ( $fields as $field ) {
				if ( ! in_array( $field['type'], $types, true ) ) {
					continue;
				}

				// Use group ID for unique keys
				if ( $has_option_page_location ) {
					$key = 'options:' . $field['name'];
					$options[ $key ] = esc_html__( 'Options', 'elementor-pro' ) . ':' . $field['label'];
					if ( $is_only_options_page ) {
						continue;
					}
				}

				$key = $field['key'] . ':' . $field['name'];
				$options[ $key ] = $field['label'];
			}

			if ( empty( $options ) ) {
				continue;
			}

			if ( 1 === count( $options ) ) {
				$options = [ -1 => ' -- ' ] + $options;
			}

			$groups[] = [
				'label' => $acf_group['title'],
				'options' => $options,
			];
		} // End foreach().

		return $groups;
	}

	public static function add_key_control( Base_Tag $tag ) {
		$tag->add_control(
			'key',
			[
				'label' => esc_html__( 'Key', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'groups' => self::get_control_options( $tag->get_supported_fields() ),
			]
		);
	}

	public function get_tag_classes_names() {
		return [
			'ACF_Text',
			'ACF_Image',
			'ACF_URL',
			'ACF_Gallery',
			'ACF_File',
			'ACF_Number',
			'ACF_Color',
		];
	}

	// For use by ACF tags
	public static function get_tag_value_field( Base_Tag $tag ) {
		$key = $tag->get_settings( 'key' );

		if ( ! empty( $key ) ) {
			list( $field_key, $meta_key ) = explode( ':', $key );

			if ( 'options' === $field_key ) {
				$field = get_field_object( $meta_key, $field_key );
			} else {
				$field = get_field_object( $field_key, get_queried_object() );
			}

			return [ $field, $meta_key ];
		}

		return [];
	}

	public function get_groups() {
		return [
			self::ACF_GROUP => [
				'title' => esc_html__( 'ACF', 'elementor-pro' ),
			],
		];
	}
}
modules/dynamic-tags/tags/post-title.php000064400000001147150755004300014351 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Title extends Tag {
	public function get_name() {
		return 'post-title';
	}

	public function get_title() {
		return esc_html__( 'Post Title', 'elementor-pro' );
	}

	public function get_group() {
		return Module::POST_GROUP;
	}

	public function get_categories() {
		return [ Module::TEXT_CATEGORY ];
	}

	public function render() {
		echo wp_kses_post( get_the_title() );
	}
}
modules/dynamic-tags/tags/post-custom-field.php000064400000003611150755004300015621 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Custom_Field extends Tag {

	public function get_name() {
		return 'post-custom-field';
	}

	public function get_title() {
		return esc_html__( 'Post Custom Field', 'elementor-pro' );
	}

	public function get_group() {
		return Module::POST_GROUP;
	}

	public function get_categories() {
		return [
			Module::TEXT_CATEGORY,
			Module::URL_CATEGORY,
			Module::POST_META_CATEGORY,
			Module::COLOR_CATEGORY,
		];
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	public function is_settings_required() {
		return true;
	}

	protected function register_controls() {
		$this->add_control(
			'key',
			[
				'label' => esc_html__( 'Key', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_keys_array(),
			]
		);

		$this->add_control(
			'custom_key',
			[
				'label' => esc_html__( 'Custom Key', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => 'key',
				'condition' => [
					'key' => '',
				],
			]
		);

	}

	public function render() {
		$key = $this->get_settings( 'key' );

		if ( empty( $key ) ) {
			$key = $this->get_settings( 'custom_key' );
		}

		if ( empty( $key ) ) {
			return;
		}

		$value = get_post_meta( get_the_ID(), $key, true );

		echo wp_kses_post( $value );
	}

	private function get_custom_keys_array() {
		$custom_keys = get_post_custom_keys();
		$options = [
			'' => esc_html__( 'Select...', 'elementor-pro' ),
		];

		if ( ! empty( $custom_keys ) ) {
			foreach ( $custom_keys as $custom_key ) {
				if ( '_' !== substr( $custom_key, 0, 1 ) ) {
					$options[ $custom_key ] = $custom_key;
				}
			}
		}

		return $options;
	}
}
modules/dynamic-tags/tags/site-url.php000064400000001161150755004300014005 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Site_URL extends Data_Tag {

	public function get_name() {
		return 'site-url';
	}

	public function get_title() {
		return esc_html__( 'Site URL', 'elementor-pro' );
	}

	public function get_group() {
		return Module::SITE_GROUP;
	}

	public function get_categories() {
		return [ Module::URL_CATEGORY ];
	}

	public function get_value( array $options = [] ) {
		return home_url();
	}
}

modules/dynamic-tags/tags/comments-url.php000064400000001211150755004300014662 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Comments_URL extends Data_Tag {

	public function get_name() {
		return 'comments-url';
	}

	public function get_title() {
		return esc_html__( 'Comments URL', 'elementor-pro' );
	}

	public function get_group() {
		return Module::COMMENTS_GROUP;
	}

	public function get_categories() {
		return [ Module::URL_CATEGORY ];
	}

	public function get_value( array $options = [] ) {
		return get_comments_link();
	}
}
modules/dynamic-tags/tags/current-date-time.php000064400000005450150755004300015577 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Current_Date_Time extends Tag {
	public function get_name() {
		return 'current-date-time';
	}

	public function get_title() {
		return esc_html__( 'Current Date Time', 'elementor-pro' );
	}

	public function get_group() {
		return Module::SITE_GROUP;
	}

	public function get_categories() {
		return [ Module::TEXT_CATEGORY ];
	}

	protected function register_controls() {
		$this->add_control(
			'date_format',
			[
				'label' => esc_html__( 'Date Format', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'default' => esc_html__( 'Default', 'elementor-pro' ),
					'' => esc_html__( 'None', 'elementor-pro' ),
					'F j, Y' => gmdate( 'F j, Y' ),
					'Y-m-d' => gmdate( 'Y-m-d' ),
					'm/d/Y' => gmdate( 'm/d/Y' ),
					'd/m/Y' => gmdate( 'd/m/Y' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'default' => 'default',
			]
		);

		$this->add_control(
			'time_format',
			[
				'label' => esc_html__( 'Time Format', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'default' => esc_html__( 'Default', 'elementor-pro' ),
					'' => esc_html__( 'None', 'elementor-pro' ),
					'g:i a' => gmdate( 'g:i a' ),
					'g:i A' => gmdate( 'g:i A' ),
					'H:i' => gmdate( 'H:i' ),
				],
				'default' => 'default',
				'condition' => [
					'date_format!' => 'custom',
				],
			]
		);

		$this->add_control(
			'custom_format',
			[
				'label' => esc_html__( 'Custom Format', 'elementor-pro' ),
				'default' => get_option( 'date_format' ) . ' ' . get_option( 'time_format' ),
				'description' => sprintf( '<a href="https://go.elementor.com/wordpress-date-time/" target="_blank">%s</a>', esc_html__( 'Documentation on date and time formatting', 'elementor-pro' ) ),
				'condition' => [
					'date_format' => 'custom',
				],
			]
		);
	}

	public function render() {
		$settings = $this->get_settings();

		if ( 'custom' === $settings['date_format'] ) {
			$format = $settings['custom_format'];
		} else {
			$date_format = $settings['date_format'];
			$time_format = $settings['time_format'];
			$format = '';

			if ( 'default' === $date_format ) {
				$date_format = get_option( 'date_format' );
			}

			if ( 'default' === $time_format ) {
				$time_format = get_option( 'time_format' );
			}

			if ( $date_format ) {
				$format = $date_format;
				$has_date = true;
			} else {
				$has_date = false;
			}

			if ( $time_format ) {
				if ( $has_date ) {
					$format .= ' ';
				}
				$format .= $time_format;
			}
		}

		$value = date_i18n( $format );

		echo wp_kses_post( $value );
	}
}
modules/dynamic-tags/tags/contact-url.php000064400000026345150755004300014507 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Contact_URL extends Tag {

	public function get_name() {
		return 'contact-url';
	}

	public function get_title() {
		return esc_html__( 'Contact URL', 'elementor-pro' );
	}

	public function get_group() {
		return Module::ACTION_GROUP;
	}

	public function get_categories() {
		return [ Module::URL_CATEGORY ];
	}

	protected function register_controls() {
		$this->add_control(
			'link_type',
			[
				'label' => esc_html__( 'Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => '— ' . esc_html__( 'Select', 'elementor-pro' ) . ' —',
					'email' => esc_html__( 'Email', 'elementor-pro' ),
					'tel' => esc_html__( 'Tel', 'elementor-pro' ),
					'sms' => esc_html__( 'SMS', 'elementor-pro' ),
					'whatsapp' => esc_html__( 'WhatsApp', 'elementor-pro' ),
					'skype' => esc_html__( 'Skype', 'elementor-pro' ),
					'messenger' => esc_html__( 'Messenger', 'elementor-pro' ),
					'viber' => esc_html__( 'Viber', 'elementor-pro' ),
					'waze' => esc_html__( 'Waze', 'elementor-pro' ),
					'google_calendar' => esc_html__( 'Google Calendar', 'elementor-pro' ),
					'outlook_calendar' => esc_html__( 'Outlook Calendar', 'elementor-pro' ),
					'yahoo_calendar' => esc_html__( 'Yahoo Calendar', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'mail_to',
			[
				'label' => esc_html__( 'Email', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'condition' => [
					'link_type' => 'email',
				],
			]
		);

		$this->add_control(
			'mail_subject',
			[
				'label' => esc_html__( 'Subject', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'label_block' => 'true',
				'condition' => [
					'link_type' => 'email',
				],
			]
		);

		$this->add_control(
			'mail_body',
			[
				'label' => esc_html__( 'Message', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'condition' => [
					'link_type' => 'email',
				],
			]
		);

		$this->add_control(
			'tel_number',
			[
				'label' => esc_html__( 'Number', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'condition' => [
					'link_type' => [
						'tel',
						'sms',
						'whatsapp',
						'viber',
					],
				],
			]
		);

		$this->add_control(
			'username',
			[
				'label' => esc_html__( 'Username', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'condition' => [
					'link_type' => [ 'skype', 'messenger' ],
				],
			]
		);

		$this->add_control(
			'viber_action',
			[
				'label' => esc_html__( 'Action', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'contact' => esc_html__( 'Contact', 'elementor-pro' ),
					'add' => esc_html__( 'Add', 'elementor-pro' ),
				],
				'default' => 'contact',
				'condition' => [
					'link_type' => 'viber',
				],
			]
		);

		$this->add_control(
			'skype_action',
			[
				'label' => esc_html__( 'Action', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'call' => esc_html__( 'Call', 'elementor-pro' ),
					'chat' => esc_html__( 'Chat', 'elementor-pro' ),
					'userinfo' => esc_html__( 'Show Profile', 'elementor-pro' ),
					'add' => esc_html__( 'Add to Contacts', 'elementor-pro' ),
					'voicemail' => esc_html__( 'Send Voice Mail', 'elementor-pro' ),
				],
				'default' => 'call',
				'condition' => [
					'link_type' => 'skype',
				],
			]
		);

		$this->add_control(
			'waze_address',
			[
				'label' => esc_html__( 'Location', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'label_block' => 'true',
				'condition' => [
					'link_type' => 'waze',
				],
			]
		);

		$this->add_control(
			'event_title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'label_block' => 'true',
				'condition' => [
					'link_type' => [
						'google_calendar',
						'outlook_calendar',
						'yahoo_calendar',
					],
				],
			]
		);

		$this->add_control(
			'event_description',
			[
				'label' => esc_html__( 'Description', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'condition' => [
					'link_type' => [
						'google_calendar',
						'outlook_calendar',
						'yahoo_calendar',
					],
				],
			]
		);

		$this->add_control(
			'event_location',
			[
				'label' => esc_html__( 'Location', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'label_block' => 'true',
				'condition' => [
					'link_type' => [
						'google_calendar',
						'outlook_calendar',
						'yahoo_calendar',
					],
				],
			]
		);

		$this->add_control(
			'event_start_date',
			[
				'label' => esc_html__( 'Start', 'elementor-pro' ),
				'type' => Controls_Manager::DATE_TIME,
				'condition' => [
					'link_type' => [
						'google_calendar',
						'outlook_calendar',
						'yahoo_calendar',
					],
				],
			]
		);

		$this->add_control(
			'event_end_date',
			[
				'label' => esc_html__( 'End', 'elementor-pro' ),
				'type' => Controls_Manager::DATE_TIME,
				'condition' => [
					'link_type' => [
						'google_calendar',
						'outlook_calendar',
						'yahoo_calendar',
					],
				],
			]
		);
	}

	protected function register_advanced_section() {}

	private function build_mail_to_link( $settings ) {
		if ( empty( $settings['mail_to'] ) ) {
			return '';
		}

		$link = 'mailto:' . $settings['mail_to'] . '?';

		$build_parts = [];

		if ( ! empty( $settings['mail_subject'] ) ) {
			$build_parts['subject'] = $this->escape_space_in_url( $settings['mail_subject'] );
		}

		if ( ! empty( $settings['mail_body'] ) ) {
			$build_parts['body'] = $this->escape_space_in_url( $settings['mail_body'] );
		}

		return add_query_arg( $build_parts, $link );
	}

	private function build_sms_link( $settings ) {
		if ( empty( $settings['tel_number'] ) ) {
			return '';
		}

		$value = 'sms:' . $settings['tel_number'];
		return $value;
	}

	private function build_whatsapp_link( $settings ) {
		if ( empty( $settings['tel_number'] ) ) {
			return '';
		}

		return 'https://api.whatsapp.com/send?phone=' . $settings['tel_number'];
	}

	private function build_skype_link( $settings ) {
		if ( empty( $settings['username'] ) ) {
			return '';
		}

		$action = 'call';
		if ( ! empty( $settings['skype_action'] ) ) {
			$action = $settings['skype_action'];
		}
		$link = 'skype:' . $settings['username'] . '?' . $action;
		return $link;
	}

	private function build_waze_link( $settings ) {
		$link = 'https://waze.com/ul?';

		$build_parts = [
			'q' => $settings['waze_address'],
			'z' => 10,
			'navigate' => 'yes',
		];

		return add_query_arg( $build_parts, $link );
	}

	private function date_to_iso( $date, $all_day = false ) {
		$time = strtotime( $date );

		if ( $all_day ) {
			return gmdate( 'Ymd\/Ymd', $time );
		}

		return gmdate( 'Ymd\THis', $time );
	}

	private function date_to_ics( $date ) {
		$time = strtotime( $date );
		return gmdate( 'Y-m-d\Th:i:s', $time );
	}

	private function escape_space_in_url( $url ) {
		return str_replace( ' ', '%20', $url );
	}

	private function build_google_calendar_link( $settings ) {
		$dates = '';
		if ( ! empty( $settings['event_start_date'] ) ) {
			if ( empty( $settings['event_end_date'] ) ) {
				$dates = $this->date_to_iso( $settings['event_start_date'], true );
			} else {
				$dates = $this->date_to_iso( $settings['event_start_date'] ) . '/' . $this->date_to_iso( $settings['event_end_date'] );
			}
		}
		$link = 'https://www.google.com/calendar/render?action=TEMPLATE&';
		$build_parts = [
			'text' => empty( $settings['event_title'] ) ? '' : $this->escape_space_in_url( $settings['event_title'] ),
			'details' => empty( $settings['event_description'] ) ? '' : $this->escape_space_in_url( $settings['event_description'] ),
			'dates' => $dates,
			'location' => empty( $settings['event_location'] ) ? '' : $this->escape_space_in_url( $settings['event_location'] ),
		];

		return add_query_arg( $build_parts, $link );
	}

	private function build_outlook_calendar_link( $settings ) {
		$link = 'https://outlook.office.com/owa/?path=/calendar/action/compose&';
		$build_parts = [
			'subject' => empty( $settings['event_title'] ) ? '' : urlencode( $settings['event_title'] ),
			'body' => empty( $settings['event_description'] ) ? '' : urlencode( $settings['event_description'] ),
			'location' => empty( $settings['event_location'] ) ? '' : urlencode( $settings['event_location'] ),
		];

		if ( ! empty( $settings['event_start_date'] ) ) {
			$build_parts['startdt'] = urlencode( $this->date_to_ics( $settings['event_start_date'] ) );
		}

		if ( ! empty( $settings['event_end_date'] ) ) {
			$build_parts['enddt'] = urlencode( $this->date_to_ics( $settings['event_end_date'] ) );
		}

		return add_query_arg( $build_parts, $link );
	}

	private function build_messenger_link( $settings ) {
		if ( empty( $settings['username'] ) ) {
			return '';
		}
		return 'https://m.me/' . $settings['username'];
	}

	private function build_yahoo_calendar_link( $settings ) {
		$link = 'https://calendar.yahoo.com/?v=60&view=d&type=20';
		$build_parts = [
			'title' => empty( $settings['event_title'] ) ? '' : urlencode( $settings['event_title'] ),
			'desc' => empty( $settings['event_description'] ) ? '' : urlencode( $settings['event_description'] ),
			'in_loc' => empty( $settings['event_location'] ) ? '' : urlencode( $settings['event_location'] ),
		];

		if ( ! empty( $settings['event_start_date'] ) ) {
			$build_parts['st'] = urlencode( gmdate( 'Ymd\This', strtotime( $settings['event_start_date'] ) ) );
		}

		if ( ! empty( $settings['event_end_date'] ) ) {
			$build_parts['et'] = urlencode( gmdate( 'Ymd\This', strtotime( $settings['event_end_date'] ) ) );
		}

		return add_query_arg( $build_parts, $link );
	}

	public function build_viber_link( $settings ) {
		if ( empty( $settings['tel_number'] ) ) {
			return '';
		}
		$action = 'contact';
		if ( ! empty( $settings['viber_action'] ) ) {
			$action = $settings['viber_action'];
		}
		return add_query_arg( [
			'number' => urlencode( $settings['tel_number'] ),
		], 'viber://' . $action );
	}

	public function render() {
		$settings = $this->get_settings();

		if ( empty( $settings['link_type'] ) ) {
			return '';
		}

		$value = '';
		switch ( $settings['link_type'] ) {
			case 'email':
				$value = $this->build_mail_to_link( $settings );
				break;
			case 'tel':
				$value = ( empty( $settings['tel_number'] ) ? '' : 'tel:' . $settings['tel_number'] );
				break;
			case 'sms':
				$value = $this->build_sms_link( $settings );
				break;
			case 'messenger':
				$value = $this->build_messenger_link( $settings );
				break;
			case 'whatsapp':
				$value = $this->build_whatsapp_link( $settings );
				break;
			case 'skype':
				$value = $this->build_skype_link( $settings );
				break;
			case 'waze':
				$value = $this->build_waze_link( $settings );
				break;
			case 'google_calendar':
				$value = $this->build_google_calendar_link( $settings );
				break;
			case 'outlook_calendar':
				$value = $this->build_outlook_calendar_link( $settings );
				break;
			case 'yahoo_calendar':
				$value = $this->build_yahoo_calendar_link( $settings );
				break;
			case 'viber':
				$value = $this->build_viber_link( $settings );
				break;
		}
		echo esc_html( $value );
	}
}

modules/dynamic-tags/tags/author-url.php000064400000002531150755004300014345 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Author_URL extends Data_Tag {

	public function get_name() {
		return 'author-url';
	}

	public function get_group() {
		return Module::AUTHOR_GROUP;
	}

	public function get_categories() {
		return [ Module::URL_CATEGORY ];
	}

	public function get_title() {
		return esc_html__( 'Author URL', 'elementor-pro' );
	}

	public function get_panel_template_setting_key() {
		return 'url';
	}

	public function get_value( array $options = [] ) {
		$value = '';

		if ( 'archive' === $this->get_settings( 'url' ) ) {
			global $authordata;

			if ( $authordata ) {
				$value = get_author_posts_url( $authordata->ID, $authordata->user_nicename );
			}
		} else {
			$value = get_the_author_meta( 'url' );
		}

		return $value;
	}

	protected function register_controls() {
		$this->add_control(
			'url',
			[
				'label' => esc_html__( 'URL', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'archive',
				'options' => [
					'archive' => esc_html__( 'Author Archive', 'elementor-pro' ),
					'website' => esc_html__( 'Author Website', 'elementor-pro' ),
				],
			]
		);
	}
}
modules/dynamic-tags/tags/featured-image-data.php000064400000004076150755004300016037 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Featured_Image_Data extends Tag {

	public function get_name() {
		return 'featured-image-data';
	}

	public function get_group() {
		return Module::MEDIA_GROUP;
	}

	public function get_categories() {
		return [
			Module::TEXT_CATEGORY,
			Module::URL_CATEGORY,
			Module::POST_META_CATEGORY,
		];
	}

	public function get_title() {
		return esc_html__( 'Featured Image Data', 'elementor-pro' );
	}

	private function get_attacment() {
		$id = get_post_thumbnail_id();

		if ( ! $id ) {
			return false;
		}

		return get_post( $id );
	}

	public function render() {
		$settings = $this->get_settings();
		$attachment = $this->get_attacment();

		if ( ! $attachment ) {
			return;
		}

		$value = '';

		switch ( $settings['attachment_data'] ) {
			case 'alt':
				$value = get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true );
				break;
			case 'caption':
				$value = $attachment->post_excerpt;
				break;
			case 'description':
				$value = $attachment->post_content;
				break;
			case 'href':
				$value = get_permalink( $attachment->ID );
				break;
			case 'src':
				$value = $attachment->guid;
				break;
			case 'title':
				$value = $attachment->post_title;
				break;
		}

		echo wp_kses_post( $value );
	}

	protected function register_controls() {

		$this->add_control(
			'attachment_data',
			[
				'label' => esc_html__( 'Data', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'title',
				'options' => [
					'title' => esc_html__( 'Title', 'elementor-pro' ),
					'alt' => esc_html__( 'Alt', 'elementor-pro' ),
					'caption' => esc_html__( 'Caption', 'elementor-pro' ),
					'description' => esc_html__( 'Description', 'elementor-pro' ),
					'src' => esc_html__( 'File URL', 'elementor-pro' ),
					'href' => esc_html__( 'Attachment URL', 'elementor-pro' ),
				],
			]
		);
	}
}
modules/dynamic-tags/tags/page-title.php000064400000003213150755004300014274 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Core\Utils;
use ElementorPro\Modules\DynamicTags\Module;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Page_Title extends Tag {
	public function get_name() {
		return 'page-title';
	}

	public function get_title() {
		return esc_html__( 'Page Title', 'elementor-pro' );
	}

	public function get_group() {
		return Module::SITE_GROUP;
	}

	public function get_categories() {
		return [ Module::TEXT_CATEGORY ];
	}

	public function render() {
		if ( is_home() && 'yes' !== $this->get_settings( 'show_home_title' ) ) {
			return;
		}

		if ( Plugin::elementor()->common ) {
			$current_action_data = Plugin::elementor()->common->get_component( 'ajax' )->get_current_action_data();

			if ( $current_action_data && 'render_tags' === $current_action_data['action'] ) {
				// Override the global $post for the render.
				query_posts(
					[
						'p' => get_the_ID(),
						'post_type' => 'any',
					]
				);
			}
		}

		$include_context = 'yes' === $this->get_settings( 'include_context' );

		$title = Utils::get_page_title( $include_context );

		echo wp_kses_post( $title );
	}

	protected function register_controls() {
		$this->add_control(
			'include_context',
			[
				'label' => esc_html__( 'Include Context', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
			]
		);

		$this->add_control(
			'show_home_title',
			[
				'label' => esc_html__( 'Show Home Title', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
			]
		);
	}
}
modules/dynamic-tags/tags/post-excerpt.php000064400000001466150755004300014706 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Excerpt extends Tag {
	public function get_name() {
		return 'post-excerpt';
	}

	public function get_title() {
		return esc_html__( 'Post Excerpt', 'elementor-pro' );
	}

	public function get_group() {
		return Module::POST_GROUP;
	}

	public function get_categories() {
		return [ Module::TEXT_CATEGORY ];
	}

	public function render() {
		// Allow only a real `post_excerpt` and not the trimmed `post_content` from the `get_the_excerpt` filter
		$post = get_post();

		if ( ! $post || empty( $post->post_excerpt ) ) {
			return;
		}

		echo wp_kses_post( $post->post_excerpt );
	}
}
modules/dynamic-tags/tags/post-date.php000064400000005123150755004300014143 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Date extends Tag {
	public function get_name() {
		return 'post-date';
	}

	public function get_title() {
		return esc_html__( 'Post Date', 'elementor-pro' );
	}

	public function get_group() {
		return Module::POST_GROUP;
	}

	public function get_categories() {
		return [ Module::TEXT_CATEGORY ];
	}

	protected function register_controls() {
		$this->add_control(
			'type',
			[
				'label' => esc_html__( 'Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'post_date_gmt' => esc_html__( 'Post Published', 'elementor-pro' ),
					'post_modified_gmt' => esc_html__( 'Post Modified', 'elementor-pro' ),
				],
				'default' => 'post_date_gmt',
			]
		);

		$this->add_control(
			'format',
			[
				'label' => esc_html__( 'Format', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'default' => esc_html__( 'Default', 'elementor-pro' ),
					'F j, Y' => gmdate( 'F j, Y' ),
					'Y-m-d' => gmdate( 'Y-m-d' ),
					'm/d/Y' => gmdate( 'm/d/Y' ),
					'd/m/Y' => gmdate( 'd/m/Y' ),
					'human' => esc_html__( 'Human Readable', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'default' => 'default',
			]
		);

		$this->add_control(
			'custom_format',
			[
				'label' => esc_html__( 'Custom Format', 'elementor-pro' ),
				'default' => '',
				'description' => sprintf( '<a href="https://go.elementor.com/wordpress-date-time/" target="_blank">%s</a>', esc_html__( 'Documentation on date and time formatting', 'elementor-pro' ) ),
				'condition' => [
					'format' => 'custom',
				],
			]
		);
	}

	public function render() {
		$date_type = $this->get_settings( 'type' );
		$format = $this->get_settings( 'format' );

		if ( 'human' === $format ) {
			/* translators: %s: Human readable date/time. */
			$value = sprintf( esc_html__( '%s ago', 'elementor-pro' ), human_time_diff( strtotime( get_post()->{$date_type} ) ) );
		} else {
			switch ( $format ) {
				case 'default':
					$date_format = '';
					break;
				case 'custom':
					$date_format = $this->get_settings( 'custom_format' );
					break;
				default:
					$date_format = $format;
					break;
			}

			if ( 'post_date_gmt' === $date_type ) {
				$value = get_the_date( $date_format );
			} else {
				$value = get_the_modified_date( $date_format );
			}
		}
		echo wp_kses_post( $value );
	}
}
modules/dynamic-tags/tags/post-featured-image.php000064400000002165150755004300016110 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Featured_Image extends Data_Tag {

	public function get_name() {
		return 'post-featured-image';
	}

	public function get_group() {
		return Module::POST_GROUP;
	}

	public function get_categories() {
		return [ Module::IMAGE_CATEGORY ];
	}

	public function get_title() {
		return esc_html__( 'Featured Image', 'elementor-pro' );
	}

	public function get_value( array $options = [] ) {
		$thumbnail_id = get_post_thumbnail_id();

		if ( $thumbnail_id ) {
			$image_data = [
				'id' => $thumbnail_id,
				'url' => wp_get_attachment_image_src( $thumbnail_id, 'full' )[0],
			];
		} else {
			$image_data = $this->get_settings( 'fallback' );
		}

		return $image_data;
	}

	protected function register_controls() {
		$this->add_control(
			'fallback',
			[
				'label' => esc_html__( 'Fallback', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
			]
		);
	}
}
modules/dynamic-tags/tags/lightbox.php000064400000006171150755004300014067 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;
use Elementor\Controls_Manager;
use Elementor\Embed;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}


class Lightbox extends Tag {

	public function get_name() {
		return 'lightbox';
	}

	public function get_title() {
		return esc_html__( 'Lightbox', 'elementor-pro' );
	}

	public function get_group() {
		return Module::ACTION_GROUP;
	}

	public function get_categories() {
		return [ Module::URL_CATEGORY ];
	}

	// Keep Empty to avoid default advanced section
	protected function register_advanced_section() {}

	public function register_controls() {
		$this->add_control(
			'type',
			[
				'label' => esc_html__( 'Type', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'video' => [
						'title' => esc_html__( 'Video', 'elementor-pro' ),
						'icon' => 'eicon-video-camera',
					],
					'image' => [
						'title' => esc_html__( 'Image', 'elementor-pro' ),
						'icon' => 'eicon-image-bold',
					],
				],
			]
		);

		$this->add_control(
			'image',
			[
				'label' => esc_html__( 'Image', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
				'condition' => [
					'type' => 'image',
				],
			]
		);

		$this->add_control(
			'video_url',
			[
				'label' => esc_html__( 'Video URL', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'label_block' => true,
				'condition' => [
					'type' => 'video',
				],
			]
		);
	}

	private function get_image_settings( $settings ) {
		$image_settings = [
			'url' => $settings['image']['url'],
			'type' => 'image',
		];

		$image_id = $settings['image']['id'];

		if ( $image_id ) {
			$lightbox_image_attributes = Plugin::elementor()->images_manager->get_lightbox_image_attributes( $image_id );
			$image_settings = array_merge( $image_settings, $lightbox_image_attributes );
		}

		return $image_settings;
	}

	private function get_video_settings( $settings ) {
		$video_properties = Embed::get_video_properties( $settings['video_url'] );
		$video_url = null;
		if ( ! $video_properties ) {
			$video_type = 'hosted';
			$video_url = $settings['video_url'];
		} else {
			$video_type = $video_properties['provider'];
			$video_url = Embed::get_embed_url( $settings['video_url'] );
		}

		if ( null === $video_url ) {
			return '';
		}

		return [
			'type' => 'video',
			'videoType' => $video_type,
			'url' => $video_url,
		];
	}

	public function render() {
		$settings = $this->get_settings();

		$value = [];

		if ( ! $settings['type'] ) {
			return;
		}

		if ( 'image' === $settings['type'] && $settings['image'] ) {
			$value = $this->get_image_settings( $settings );
		} elseif ( 'video' === $settings['type'] && $settings['video_url'] ) {
			$value = $this->get_video_settings( $settings );
		}

		if ( ! $value ) {
			return;
		}

		// PHPCS - the method Plugin::elementor()->frontend->create_action_hash is safe.
		echo Plugin::elementor()->frontend->create_action_hash( 'lightbox', $value ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}
}
modules/dynamic-tags/tags/author-name.php000064400000001156150755004300014465 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Author_Name extends Tag {

	public function get_name() {
		return 'author-name';
	}

	public function get_title() {
		return esc_html__( 'Author Name', 'elementor-pro' );
	}

	public function get_group() {
		return Module::AUTHOR_GROUP;
	}

	public function get_categories() {
		return [ Module::TEXT_CATEGORY ];
	}

	public function render() {
		echo wp_kses_post( get_the_author() );
	}
}
modules/dynamic-tags/tags/archive-title.php000064400000002024150755004300015000 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Core\Utils;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Archive_Title extends Tag {
	public function get_name() {
		return 'archive-title';
	}

	public function get_title() {
		return esc_html__( 'Archive Title', 'elementor-pro' );
	}

	public function get_group() {
		return Module::ARCHIVE_GROUP;
	}

	public function get_categories() {
		return [ Module::TEXT_CATEGORY ];
	}

	public function render() {
		$include_context = 'yes' === $this->get_settings( 'include_context' );

		$title = Utils::get_page_title( $include_context );

		echo wp_kses_post( $title );
	}

	protected function register_controls() {
		$this->add_control(
			'include_context',
			[
				'label' => esc_html__( 'Include Context', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
			]
		);
	}
}
modules/dynamic-tags/tags/post-time.php000064400000004376150755004300014175 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Time extends Tag {
	public function get_name() {
		return 'post-time';
	}

	public function get_title() {
		return esc_html__( 'Post Time', 'elementor-pro' );
	}

	public function get_group() {
		return Module::POST_GROUP;
	}

	public function get_categories() {
		return [ Module::TEXT_CATEGORY ];
	}

	protected function register_controls() {
		$this->add_control(
			'type',
			[
				'label' => esc_html__( 'Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'post_date_gmt' => esc_html__( 'Post Published', 'elementor-pro' ),
					'post_modified_gmt' => esc_html__( 'Post Modified', 'elementor-pro' ),
				],
				'default' => 'post_date_gmt',
			]
		);

		$this->add_control(
			'format',
			[
				'label' => esc_html__( 'Format', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'default' => esc_html__( 'Default', 'elementor-pro' ),
					'g:i a' => gmdate( 'g:i a' ),
					'g:i A' => gmdate( 'g:i A' ),
					'H:i' => gmdate( 'H:i' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'default' => 'default',
			]
		);

		$this->add_control(
			'custom_format',
			[
				'label' => esc_html__( 'Custom Format', 'elementor-pro' ),
				'default' => '',
				'description' => sprintf( '<a href="https://go.elementor.com/wordpress-date-time/" target="_blank">%s</a>', esc_html__( 'Documentation on date and time formatting', 'elementor-pro' ) ),
				'condition' => [
					'format' => 'custom',
				],
			]
		);
	}

	public function render() {
		$time_type = $this->get_settings( 'type' );
		$format = $this->get_settings( 'format' );

		switch ( $format ) {
			case 'default':
				$date_format = '';
				break;
			case 'custom':
				$date_format = $this->get_settings( 'custom_format' );
				break;
			default:
				$date_format = $format;
				break;
		}

		if ( 'post_date_gmt' === $time_type ) {
			$value = get_the_time( $date_format );
		} else {
			$value = get_the_modified_time( $date_format );
		}

		echo wp_kses_post( $value );
	}
}
modules/dynamic-tags/tags/post-id.php000064400000001155150755004300013623 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_ID extends Tag {
	public function get_name() {
		return 'post-id';
	}

	public function get_title() {
		return esc_html__( 'Post ID', 'elementor-pro' );
	}

	public function get_group() {
		return Module::POST_GROUP;
	}

	public function get_categories() {
		return [
			Module::TEXT_CATEGORY,
			Module::NUMBER_CATEGORY,
		];
	}

	public function render() {
		echo get_the_ID();
	}
}
modules/dynamic-tags/tags/post-terms.php000064400000005106150755004300014361 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;
use ElementorPro\Core\Utils;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Terms extends Tag {
	public function get_name() {
		return 'post-terms';
	}

	public function get_title() {
		return esc_html__( 'Post Terms', 'elementor-pro' );
	}

	public function get_group() {
		return Module::POST_GROUP;
	}

	public function get_categories() {
		return [ Module::TEXT_CATEGORY ];
	}

	protected function register_controls() {
		$taxonomy_filter_args = [
			'show_in_nav_menus' => true,
			'object_type' => [ get_post_type() ],
		];

		/**
		 * Dynamic tags taxonomy args.
		 *
		 * Filters the taxonomy arguments used to retrieve the registered taxonomies
		 * displayed in the taxonomy dynamic tag.
		 *
		 * @since 2.0.0
		 *
		 * @param array $taxonomy_filter_args An array of `key => value` arguments to
		 *                                    match against the taxonomy objects inside
		 *                                    the `get_taxonomies()` function.
		 */
		$taxonomy_filter_args = apply_filters( 'elementor_pro/dynamic_tags/post_terms/taxonomy_args', $taxonomy_filter_args );

		$taxonomies = Utils::get_taxonomies( $taxonomy_filter_args, 'objects' );

		$options = [];

		foreach ( $taxonomies as $taxonomy => $object ) {
			$options[ $taxonomy ] = $object->label;
		}

		$this->add_control(
			'taxonomy',
			[
				'label' => esc_html__( 'Taxonomy', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $options,
				'default' => 'post_tag',
			]
		);

		$this->add_control(
			'separator',
			[
				'label' => esc_html__( 'Separator', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => ', ',
			]
		);

		$this->add_control(
			'link',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
			]
		);
	}

	public function render() {
		$settings = $this->get_settings();

		if ( 'yes' === $settings['link'] ) {
			$value = get_the_term_list( get_the_ID(), $settings['taxonomy'], '', $settings['separator'] );
		} else {
			$terms = get_the_terms( get_the_ID(), $settings['taxonomy'] );

			if ( is_wp_error( $terms ) || empty( $terms ) ) {
				return '';
			}

			$term_names = [];

			foreach ( $terms as $term ) {
				$term_names[] = '<span>' . $term->name . '</span>';
			}

			$value = implode( $settings['separator'], $term_names );
		}

		echo wp_kses_post( $value );
	}
}
modules/dynamic-tags/tags/user-profile-picture.php000064400000000754150755004300016335 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class User_Profile_Picture extends Author_Profile_Picture {
	public function get_name() {
		return 'user-profile-picture';
	}
	public function get_title() {
		return esc_html__( 'User Profile Picture', 'elementor-pro' );
	}
	public function get_value( array $options = [] ) {
		return [
			'id' => '',
			'url' => get_avatar_url( get_current_user_id() ),
		];
	}
}
modules/dynamic-tags/tags/site-logo.php000064400000001605150755004300014146 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use Elementor\Utils;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Site_Logo extends Data_Tag {
	public function get_name() {
		return 'site-logo';
	}

	public function get_title() {
		return esc_html__( 'Site Logo', 'elementor-pro' );
	}

	public function get_group() {
		return Module::SITE_GROUP;
	}

	public function get_categories() {
		return [ Module::IMAGE_CATEGORY ];
	}

	public function get_value( array $options = [] ) {
		$custom_logo_id = get_theme_mod( 'custom_logo' );

		if ( $custom_logo_id ) {
			$url = wp_get_attachment_image_src( $custom_logo_id, 'full' )[0];
		} else {
			$url = Utils::get_placeholder_image_src();
		}

		return [
			'id' => $custom_logo_id,
			'url' => $url,
		];
	}
}
modules/dynamic-tags/tags/site-tagline.php000064400000001173150755004300014631 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Site_Tagline extends Tag {
	public function get_name() {
		return 'site-tagline';
	}

	public function get_title() {
		return esc_html__( 'Site Tagline', 'elementor-pro' );
	}

	public function get_group() {
		return Module::SITE_GROUP;
	}

	public function get_categories() {
		return [ Module::TEXT_CATEGORY ];
	}

	public function render() {
		echo wp_kses_post( get_bloginfo( 'description' ) );
	}
}
modules/dynamic-tags/tags/comments-number.php000064400000004175150755004300015364 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Comments_Number extends Tag {

	public function get_name() {
		return 'comments-number';
	}

	public function get_title() {
		return esc_html__( 'Comments Number', 'elementor-pro' );
	}

	public function get_group() {
		return Module::COMMENTS_GROUP;
	}

	public function get_categories() {
		return [
			Module::TEXT_CATEGORY,
			Module::NUMBER_CATEGORY,
		];
	}

	protected function register_controls() {
		$this->add_control(
			'format_no_comments',
			[
				'label' => esc_html__( 'No Comments Format', 'elementor-pro' ),
				'default' => esc_html__( 'No Responses', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'format_one_comments',
			[
				'label' => esc_html__( 'One Comment Format', 'elementor-pro' ),
				'default' => esc_html__( 'One Response', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'format_many_comments',
			[
				'label' => esc_html__( 'Many Comment Format', 'elementor-pro' ),
				'default' => esc_html__( '{number} Responses', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'link_to',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '',
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'comments_link' => esc_html__( 'Comments Link', 'elementor-pro' ),
				],
			]
		);
	}

	public function render() {
		$settings = $this->get_settings();

		$comments_number = get_comments_number();

		if ( ! $comments_number ) {
			$count = $settings['format_no_comments'];
		} elseif ( 1 === $comments_number ) {
			$count = $settings['format_one_comments'];
		} else {
			$count = strtr( $settings['format_many_comments'], [
				'{number}' => number_format_i18n( $comments_number ),
			] );
		}

		if ( 'comments_link' === $this->get_settings( 'link_to' ) ) {
			$count = sprintf( '<a href="%s">%s</a>', get_comments_link(), $count );
		}

		echo wp_kses_post( $count );
	}
}
modules/dynamic-tags/tags/archive-description.php000064400000001224150755004300016203 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Archive_Description extends Tag {

	public function get_name() {
		return 'archive-description';
	}

	public function get_title() {
		return esc_html__( 'Archive Description', 'elementor-pro' );
	}

	public function get_group() {
		return Module::ARCHIVE_GROUP;
	}

	public function get_categories() {
		return [ Module::TEXT_CATEGORY ];
	}

	public function render() {
		echo wp_kses_post( get_the_archive_description() );
	}
}
modules/dynamic-tags/tags/author-profile-picture.php000064400000001451150755004300016654 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Core\Utils;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Author_Profile_Picture extends Data_Tag {

	public function get_name() {
		return 'author-profile-picture';
	}

	public function get_title() {
		return esc_html__( 'Author Profile Picture', 'elementor-pro' );
	}

	public function get_group() {
		return Module::AUTHOR_GROUP;
	}

	public function get_categories() {
		return [ Module::IMAGE_CATEGORY ];
	}

	public function get_value( array $options = [] ) {
		Utils::set_global_authordata();

		return [
			'id' => '',
			'url' => get_avatar_url( (int) get_the_author_meta( 'ID' ) ),
		];
	}
}
modules/dynamic-tags/tags/base/tag-trait.php000064400000000427150755004300015053 0ustar00<?php

namespace ElementorPro\Modules\DynamicTags\Tags\Base;

use ElementorPro\License\API as License_API;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

trait Tag_Trait {

	public function is_editable() {
		return License_API::is_license_active();
	}
}
modules/dynamic-tags/tags/base/tag.php000064400000000357150755004300013734 0ustar00<?php

namespace ElementorPro\Modules\DynamicTags\Tags\Base;

use Elementor\Core\DynamicTags\Tag as Base_Tag;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Tag extends Base_Tag {

	use Tag_Trait;
}
modules/dynamic-tags/tags/base/data-tag.php000064400000000403150755004300014633 0ustar00<?php

namespace ElementorPro\Modules\DynamicTags\Tags\Base;

use Elementor\Core\DynamicTags\Data_Tag as Base_Data_Tag;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Data_Tag extends Base_Data_Tag {

	use Tag_Trait;
}
modules/dynamic-tags/tags/site-title.php000064400000001146150755004300014327 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Site_Title extends Tag {
	public function get_name() {
		return 'site-title';
	}

	public function get_title() {
		return esc_html__( 'Site Title', 'elementor-pro' );
	}

	public function get_group() {
		return Module::SITE_GROUP;
	}

	public function get_categories() {
		return [ Module::TEXT_CATEGORY ];
	}

	public function render() {
		echo wp_kses_post( get_bloginfo() );
	}
}
modules/dynamic-tags/tags/user-info.php000064400000004526150755004300014160 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class User_Info extends Tag {

	public function get_name() {
		return 'user-info';
	}

	public function get_title() {
		return esc_html__( 'User Info', 'elementor-pro' );
	}

	public function get_group() {
		return Module::SITE_GROUP;
	}

	public function get_categories() {
		return [ Module::TEXT_CATEGORY ];
	}

	public function render() {
		$type = $this->get_settings( 'type' );
		$user = wp_get_current_user();
		if ( empty( $type ) || 0 === $user->ID ) {
			return;
		}

		$value = '';
		switch ( $type ) {
			case 'login':
			case 'email':
			case 'url':
			case 'nicename':
				$field = 'user_' . $type;
				$value = isset( $user->$field ) ? $user->$field : '';
				break;
			case 'id':
				$value = $user->ID;
				break;
			case 'description':
			case 'first_name':
			case 'last_name':
			case 'display_name':
				$value = isset( $user->$type ) ? $user->$type : '';
				break;
			case 'meta':
				$key = $this->get_settings( 'meta_key' );
				if ( ! empty( $key ) ) {
					$value = get_user_meta( $user->ID, $key, true );
				}
				break;
		}

		echo wp_kses_post( $value );
	}

	public function get_panel_template_setting_key() {
		return 'type';
	}

	protected function register_controls() {
		$this->add_control(
			'type',
			[
				'label' => esc_html__( 'Field', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'Choose', 'elementor-pro' ),
					'id' => esc_html__( 'ID', 'elementor-pro' ),
					'display_name' => esc_html__( 'Display Name', 'elementor-pro' ),
					'login' => esc_html__( 'Username', 'elementor-pro' ),
					'first_name' => esc_html__( 'First Name', 'elementor-pro' ),
					'last_name' => esc_html__( 'Last Name', 'elementor-pro' ),
					'description' => esc_html__( 'Bio', 'elementor-pro' ),
					'email' => esc_html__( 'Email', 'elementor-pro' ),
					'url' => esc_html__( 'Website', 'elementor-pro' ),
					'meta' => esc_html__( 'User Meta', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'meta_key',
			[
				'label' => esc_html__( 'Meta Key', 'elementor-pro' ),
				'condition' => [
					'type' => 'meta',
				],
			]
		);
	}
}
modules/dynamic-tags/tags/post-gallery.php000064400000001427150755004300014670 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Gallery extends Data_Tag {

	public function get_name() {
		return 'post-gallery';
	}

	public function get_title() {
		return esc_html__( 'Post Image Attachments', 'elementor-pro' );
	}

	public function get_categories() {
		return [ Module::GALLERY_CATEGORY ];
	}

	public function get_group() {
		return Module::POST_GROUP;
	}

	public function get_value( array $options = [] ) {
		$images = get_attached_media( 'image' );

		$value = [];

		foreach ( $images as $image ) {
			$value[] = [
				'id' => $image->ID,
			];
		}

		return $value;
	}
}
modules/dynamic-tags/tags/archive-url.php000064400000001361150755004300014464 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Core\Utils;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Archive_URL extends Data_Tag {

	public function get_name() {
		return 'archive-url';
	}

	public function get_group() {
		return Module::ARCHIVE_GROUP;
	}

	public function get_categories() {
		return [ Module::URL_CATEGORY ];
	}

	public function get_title() {
		return esc_html__( 'Archive URL', 'elementor-pro' );
	}

	public function get_panel_template() {
		return ' ({{ url }})';
	}

	public function get_value( array $options = [] ) {
		return Utils::get_the_archive_url();
	}
}

modules/dynamic-tags/tags/post-url.php000064400000001166150755004300014033 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}


class Post_URL extends Data_Tag {

	public function get_name() {
		return 'post-url';
	}

	public function get_title() {
		return esc_html__( 'Post URL', 'elementor-pro' );
	}

	public function get_group() {
		return Module::POST_GROUP;
	}

	public function get_categories() {
		return [ Module::URL_CATEGORY ];
	}

	public function get_value( array $options = [] ) {
		return get_permalink();
	}
}
modules/dynamic-tags/tags/internal-url.php000064400000006476150755004300014673 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\Module;
use ElementorPro\Modules\QueryControl\Module as QueryModule;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Internal_URL extends Data_Tag {

	public function get_name() {
		return 'internal-url';
	}

	public function get_group() {
		return Module::SITE_GROUP;
	}

	public function get_categories() {
		return [ Module::URL_CATEGORY ];
	}

	public function get_title() {
		return esc_html__( 'Internal URL', 'elementor-pro' );
	}

	public function get_panel_template() {
		return ' ({{ url }})';
	}

	public function get_value( array $options = [] ) {
		$settings = $this->get_settings();

		$type = $settings['type'];
		$url = '';

		if ( 'post' === $type && ! empty( $settings['post_id'] ) ) {
			$url = get_permalink( (int) $settings['post_id'] );
		} elseif ( 'taxonomy' === $type && ! empty( $settings['taxonomy_id'] ) ) {
			$url = get_term_link( (int) $settings['taxonomy_id'] );
		} elseif ( 'attachment' === $type && ! empty( $settings['attachment_id'] ) ) {
			$url = get_attachment_link( (int) $settings['attachment_id'] );
		} elseif ( 'author' === $type && ! empty( $settings['author_id'] ) ) {
			$url = get_author_posts_url( (int) $settings['author_id'] );
		}

		if ( ! is_wp_error( $url ) ) {
			return $url;
		}

		return '';
	}

	protected function register_controls() {
		$this->add_control( 'type', [
			'label' => esc_html__( 'Type', 'elementor-pro' ),
			'type' => Controls_Manager::SELECT,
			'options' => [
				'post' => esc_html__( 'Content', 'elementor-pro' ),
				'taxonomy' => esc_html__( 'Taxonomy', 'elementor-pro' ),
				'attachment' => esc_html__( 'Media', 'elementor-pro' ),
				'author' => esc_html__( 'Author', 'elementor-pro' ),
			],
		] );

		$this->add_control( 'post_id', [
			'label' => esc_html__( 'Search & Select', 'elementor-pro' ),
			'type' => QueryModule::QUERY_CONTROL_ID,
			'options' => [],
			'label_block' => true,
			'autocomplete' => [
				'object' => QueryModule::QUERY_OBJECT_POST,
				'display' => 'detailed',
				'query' => [
					'post_type' => 'any',
				],
			],
			'condition' => [
				'type' => 'post',
			],
		] );

		$this->add_control( 'taxonomy_id', [
			'label' => esc_html__( 'Search & Select', 'elementor-pro' ),
			'type' => QueryModule::QUERY_CONTROL_ID,
			'options' => [],
			'label_block' => true,
			'autocomplete' => [
				'object' => QueryModule::QUERY_OBJECT_TAX,
				'display' => 'detailed',
			],
			'condition' => [
				'type' => 'taxonomy',
			],
		] );

		$this->add_control( 'attachment_id', [
			'label' => esc_html__( 'Search & Select', 'elementor-pro' ),
			'type' => QueryModule::QUERY_CONTROL_ID,
			'options' => [],
			'label_block' => true,
			'autocomplete' => [
				'object' => QueryModule::QUERY_OBJECT_ATTACHMENT,
				'display' => 'detailed',
			],
			'condition' => [
				'type' => 'attachment',
			],
		] );

		$this->add_control( 'author_id', [
			'label' => esc_html__( 'Search & Select', 'elementor-pro' ),
			'type' => QueryModule::QUERY_CONTROL_ID,
			'options' => [],
			'label_block' => true,
			'autocomplete' => [
				'object' => QueryModule::QUERY_OBJECT_AUTHOR,
				'display' => 'detailed',
			],
			'condition' => [
				'type' => 'author',
			],
		] );
	}
}
modules/dynamic-tags/tags/author-info.php000064400000002350150755004300014475 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Author_Info extends Tag {

	public function get_name() {
		return 'author-info';
	}

	public function get_title() {
		return esc_html__( 'Author Info', 'elementor-pro' );
	}

	public function get_group() {
		return Module::AUTHOR_GROUP;
	}

	public function get_categories() {
		return [ Module::TEXT_CATEGORY ];
	}

	public function render() {
		$key = $this->get_settings( 'key' );

		if ( empty( $key ) ) {
			return;
		}

		$value = get_the_author_meta( $key );

		echo wp_kses_post( $value );
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	protected function register_controls() {
		$this->add_control(
			'key',
			[
				'label' => esc_html__( 'Field', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'description',
				'options' => [
					'description' => esc_html__( 'Bio', 'elementor-pro' ),
					'email' => esc_html__( 'Email', 'elementor-pro' ),
					'url' => esc_html__( 'Website', 'elementor-pro' ),
				],
			]
		);
	}
}
modules/dynamic-tags/tags/archive-meta.php000064400000002272150755004300014612 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Archive_Meta extends Tag {

	public function get_name() {
		return 'archive-meta';
	}

	public function get_title() {
		return esc_html__( 'Archive Meta', 'elementor-pro' );
	}

	public function get_group() {
		return Module::ARCHIVE_GROUP;
	}

	public function get_categories() {
		return [ Module::TEXT_CATEGORY ];
	}

	public function get_panel_template() {
		return ' ({{{ key }}})';
	}

	public function render() {
		$key = $this->get_settings( 'key' );

		if ( empty( $key ) ) {
			return;
		}

		$value = '';

		if ( is_category() || is_tax() ) {
			$value = get_term_meta( get_queried_object_id(), $key, true );
		} elseif ( is_author() ) {
			$value = get_user_meta( get_queried_object_id(), $key, true );
		}

		echo wp_kses_post( $value );
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	protected function register_controls() {
		$this->add_control(
			'key',
			[
				'label' => esc_html__( 'Meta Key', 'elementor-pro' ),
			]
		);
	}
}
modules/dynamic-tags/tags/author-meta.php000064400000001674150755004300014500 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Author_Meta extends Tag {

	public function get_name() {
		return 'author-meta';
	}

	public function get_title() {
		return esc_html__( 'Author Meta', 'elementor-pro' );
	}

	public function get_group() {
		return Module::AUTHOR_GROUP;
	}

	public function get_categories() {
		return [ Module::TEXT_CATEGORY ];
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	public function render() {
		$key = $this->get_settings( 'key' );
		if ( empty( $key ) ) {
			return;
		}

		$value = get_the_author_meta( $key );

		echo wp_kses_post( $value );
	}

	protected function register_controls() {
		$this->add_control(
			'key',
			[
				'label' => esc_html__( 'Meta Key', 'elementor-pro' ),
			]
		);
	}
}
modules/dynamic-tags/tags/shortcode.php000064400000003004150755004300014231 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Shortcode extends Tag {
	public function get_name() {
		return 'shortcode';
	}

	public function get_title() {
		return esc_html__( 'Shortcode', 'elementor-pro' );
	}

	public function get_group() {
		return Module::SITE_GROUP;
	}

	public function get_categories() {
		return [
			Module::TEXT_CATEGORY,
			Module::NUMBER_CATEGORY,
			Module::URL_CATEGORY,
			Module::POST_META_CATEGORY,
		];
	}

	protected function register_controls() {
		$this->add_control(
			'shortcode',
			[
				'label' => esc_html__( 'Shortcode', 'elementor-pro' ),
				'type'  => Controls_Manager::TEXTAREA,
			]
		);
	}

	public function render() {
		$settings = $this->get_settings();

		if ( empty( $settings['shortcode'] ) ) {
			return;
		}

		$shortcode_string = $settings['shortcode'];

		$value = do_shortcode( $shortcode_string );

		/**
		 * Should Escape.
		 *
		 * Used to allow 3rd party to avoid shortcode dynamic from escaping
		 *
		 * @since 2.2.1
		 *
		 * @param bool defaults to true
		 */
		$should_escape = apply_filters( 'elementor_pro/dynamic_tags/shortcode/should_escape', true );

		if ( $should_escape ) {
			$value = wp_kses_post( $value );
		}
		// PHPCS - the variable $value is safe.
		echo $value; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}
}
modules/dynamic-tags/tags/request-parameter.php000064400000004040150755004300015706 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Request_Parameter extends Tag {
	public function get_name() {
		return 'request-arg';
	}

	public function get_title() {
		return esc_html__( 'Request Parameter', 'elementor-pro' );
	}

	public function get_group() {
		return Module::SITE_GROUP;
	}

	public function get_categories() {
		return [
			Module::TEXT_CATEGORY,
			Module::POST_META_CATEGORY,
		];
	}

	public function render() {
		$settings = $this->get_settings();
		$request_type = isset( $settings['request_type'] ) ? strtoupper( $settings['request_type'] ) : false;
		$param_name = isset( $settings['param_name'] ) ? $settings['param_name'] : false;
		$value = '';

		if ( ! $param_name || ! $request_type ) {
			return '';
		}

		switch ( $request_type ) {
			case 'POST':
				if ( ! isset( $_POST[ $param_name ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
					return '';
				}
				$value = $_POST[ $param_name ]; // phpcs:ignore WordPress.Security.NonceVerification.Missing
				break;
			case 'GET':
				if ( ! isset( $_GET[ $param_name ] ) ) { // phpcs:ignore
					return '';
				}
				$value = $_GET[ $param_name ]; // phpcs:ignore
				break;
			case 'QUERY_VAR':
				$value = get_query_var( $param_name );
				break;
		}
		echo htmlentities( wp_kses_post( $value ) );  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}

	protected function register_controls() {
		$this->add_control(
			'request_type',
			[
				'label'   => esc_html__( 'Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'get',
				'options' => [
					'get' => 'Get',
					'post' => 'Post',
					'query_var' => 'Query Var',
				],
			]
		);
		$this->add_control(
			'param_name',
			[
				'label'   => esc_html__( 'Parameter Name', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);
	}
}
modules/dynamic-tags/pods/tags/pods-text.php000064400000002063150755004300015137 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Pods\Tags;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Pods_Text extends Pods_Base {

	public function get_name() {
		return 'pods-text';
	}

	public function get_title() {
		return esc_html__( 'Pods', 'elementor-pro' ) . ' ' . esc_html__( 'Field', 'elementor-pro' );
	}

	public function render() {
		$field_data = $this->get_field();
		$field = $field_data['field'];
		$value = empty( $field_data['value'] ) ? '' : $field_data['value'];

		if ( ! empty( $field['type'] ) ) {
			switch ( $field['type'] ) {
				case 'paragraph':
					$value = $field_data['display'];
					break;
				case 'pick':
					$value = $field_data['display'];
					if ( is_array( $value ) ) {
						$value = implode( ', ', $value );
					}
					break;
			}
		}

		echo wp_kses_post( $value );
	}

	protected function get_supported_fields() {
		return [
			'text',
			'phone',
			'paragraph',
			'relationship',
			'pick',
			'numeric',
			'email',
			'oembed',
			'google_address',
			'wysiwyg',
			'time',
		];
	}
}
modules/dynamic-tags/pods/tags/pods-base.php000064400000002416150755004300015067 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Pods\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Pods\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Pods_Base extends Tag {

	public function get_group() {
		return Module::PODS_GROUP;
	}

	public function get_field() {
		$key = $this->get_settings( 'key' );
		if ( empty( $key ) ) {
			return false;
		}

		list( $pod_name, $pod_id, $meta_key ) = explode( ':', $key );
		/**
		 * @var \Pods
		 */
		$pod = pods( $pod_name, get_the_ID() );

		if ( false === $pod ) {
			return [];
		}

		return [
			'field' => $pod->fields[ $meta_key ],
			'value' => $pod->field( $meta_key ),
			'display' => $pod->display( $meta_key ),
			'pod' => $pod,
			'key' => $meta_key,
		];
	}

	public function get_categories() {
		return [
			Module::TEXT_CATEGORY,
			Module::POST_META_CATEGORY,
		];
	}

	protected function register_controls() {
		$this->add_control(
			'key',
			[
				'label' => esc_html__( 'Key', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'groups' => Module::get_control_options( $this->get_supported_fields() ),
			]
		);
	}

	protected function get_supported_fields() {
		return [];
	}
}
modules/dynamic-tags/pods/tags/pods-image.php000064400000003435150755004300015241 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Pods\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\Pods\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Pods_Image extends Data_Tag {

	public function get_name() {
		return 'pods-image';
	}

	public function get_title() {
		return esc_html__( 'Pods', 'elementor-pro' ) . ' ' . esc_html__( 'Image Field', 'elementor-pro' );
	}

	public function get_group() {
		return Module::PODS_GROUP;
	}

	public function get_categories() {
		return [ Module::IMAGE_CATEGORY ];
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	public function get_value( array $options = [] ) {
		$key = $this->get_settings( 'key' );

		$image_data = $this->get_settings( 'fallback' );

		if ( empty( $key ) ) {
			return $image_data;
		}

		list( $pod_name, $pod_id, $meta_key ) = explode( ':', $key );
		/**
		 * @var \Pods
		 */
		$pod = pods( $pod_name, get_the_ID() );

		if ( false === $pod ) {
			return [];
		}

		$image = $pod->field( $meta_key );

		$image_data = [
			'id' => empty( $image['ID'] ) ? $image_data['id'] : $image['ID'],
			'url' => empty( $image['guid'] ) ? $image_data['url'] : $image['guid'],
		];

		return $image_data;
	}

	protected function register_controls() {
		$this->add_control(
			'key',
			[
				'label' => esc_html__( 'Key', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'groups' => Module::get_control_options( $this->get_supported_fields() ),
			]
		);

		$this->add_control(
			'fallback',
			[
				'label' => esc_html__( 'Fallback', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
			]
		);
	}

	protected function get_supported_fields() {
		return [
			'pods_image',
		];
	}
}
modules/dynamic-tags/pods/tags/pods-url.php000064400000003750150755004300014761 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Pods\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\Pods\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Pods_URL extends Data_Tag {

	public function get_name() {
		return 'Pods-url';
	}

	public function get_title() {
		return esc_html__( 'Pods', 'elementor-pro' ) . ' ' . esc_html__( 'URL Field', 'elementor-pro' );
	}

	public function get_group() {
		return Module::PODS_GROUP;
	}

	public function get_categories() {
		return [ Module::URL_CATEGORY ];
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	public function get_value( array $options = [] ) {
		$key = $this->get_settings( 'key' );
		if ( empty( $key ) ) {
			return false;
		}

		list( $pod_name, $pod_id, $meta_key ) = explode( ':', $key );
		/**
		 * @var \Pods
		 */
		$pod = pods( $pod_name, get_the_ID() );

		if ( false === $pod ) {
			return [];
		}

		$field = $pod->fields[ $meta_key ];
		$value = $pod->field( $meta_key );
		if ( $field && ! empty( $field['type'] ) ) {

			switch ( $field['type'] ) {
				case 'phone':
					$value = 'tel:' . $value;
					break;
				case 'file':
					$value = empty( $value['guid'] ) ? '' : $value['guid'];
					break;
				case 'email':
					$value = 'mailto:' . $value;
					break;
			} // End switch().
		}

		if ( empty( $value ) && $this->get_settings( 'fallback' ) ) {
			$value = $this->get_settings( 'fallback' );
		}

		return wp_kses_post( $value );
	}

	protected function register_controls() {
		$this->add_control(
			'key',
			[
				'label' => esc_html__( 'Key', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'groups' => Module::get_control_options( $this->get_supported_fields() ),
			]
		);

		$this->add_control(
			'fallback',
			[
				'label' => esc_html__( 'Fallback', 'elementor-pro' ),
			]
		);
	}

	protected function get_supported_fields() {
		return [ 'pods_url' ];
	}
}
modules/dynamic-tags/pods/tags/pods-gallery.php000064400000003175150755004300015617 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Pods\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\Pods\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Pods_Gallery extends Data_Tag {

	public function get_name() {
		return 'pods-gallery';
	}

	public function get_title() {
		return esc_html__( 'Pods', 'elementor-pro' ) . ' ' . esc_html__( 'Gallery Field', 'elementor-pro' );
	}

	public function get_categories() {
		return [ Module::GALLERY_CATEGORY ];
	}

	public function get_group() {
		return Module::PODS_GROUP;
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	public function get_value( array $options = [] ) {
		$key = $this->get_settings( 'key' );
		if ( empty( $key ) ) {
			return false;
		}

		$images = [];

		list( $pod_name, $pod_id, $meta_key ) = explode( ':', $key );
		/**
		 * @var \Pods
		 */
		$pod = pods( $pod_name, get_the_ID() );

		if ( false === $pod ) {
			return [];
		}

		$galley_images = $pod->field( $meta_key );

		if ( empty( $galley_images ) || ! is_array( $galley_images ) ) {
			return $images;
		}

		foreach ( $galley_images as $image ) {
			$images[] = [
				'id' => $image['ID'],
			];
		}

		return $images;
	}

	protected function register_controls() {
		$this->add_control(
			'key',
			[
				'label' => esc_html__( 'Key', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'groups' => Module::get_control_options( $this->get_supported_fields() ),
			]
		);
	}

	protected function get_supported_fields() {
		return [
			'pods_gallery',
		];
	}
}
modules/dynamic-tags/pods/tags/pods-date.php000064400000004456150755004300015100 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Pods\Tags;

use Elementor\Controls_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Pods_Date extends Pods_Base {

	public function get_name() {
		return 'pods-date';
	}

	public function get_title() {
		return esc_html__( 'Pods', 'elementor-pro' ) . ' ' . esc_html__( 'Date Field', 'elementor-pro' );
	}

	public function render() {
		$field_data = $this->get_field();
		$field = $field_data['field'];
		$value = empty( $field_data['value'] ) ? '' : $field_data['value'];

		if ( $field && ! empty( $field['type'] ) && in_array( $field['type'], [ 'date', 'datetime' ] ) ) {

			$format = $this->get_settings( 'format' );

			$timestamp = strtotime( $value );

			if ( 'human' === $format ) {
				$value = human_time_diff( $timestamp );
			} else {
				switch ( $format ) {
					case 'default':
						$date_format = get_option( 'date_format' );
						break;
					case 'custom':
						$date_format = $this->get_settings( 'custom_format' );
						break;
					default:
						$date_format = $format;
						break;
				}

				$value = gmdate( $date_format, $timestamp );
			}
		}
		echo wp_kses_post( $value );
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	protected function register_controls() {
		parent::register_controls();

		$this->add_control(
			'format',
			[
				'label' => esc_html__( 'Format', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'default' => esc_html__( 'Default', 'elementor-pro' ),
					'F j, Y' => gmdate( 'F j, Y' ),
					'Y-m-d' => gmdate( 'Y-m-d' ),
					'm/d/Y' => gmdate( 'm/d/Y' ),
					'd/m/Y' => gmdate( 'd/m/Y' ),
					'human' => esc_html__( 'Human Readable', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'default' => 'default',
			]
		);

		$this->add_control(
			'custom_format',
			[
				'label' => esc_html__( 'Custom Format', 'elementor-pro' ),
				'default' => '',
				'description' => sprintf( '<a href="https://go.elementor.com/wordpress-date-time/" target="_blank">%s</a>', esc_html__( 'Documentation on date and time formatting', 'elementor-pro' ) ),
				'condition' => [
					'format' => 'custom',
				],
			]
		);
	}

	protected function get_supported_fields() {
		return [
			'datetime',
			'date',
		];
	}
}
modules/dynamic-tags/pods/tags/pods-numeric.php000064400000001542150755004300015616 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Pods\Tags;

use ElementorPro\Modules\DynamicTags\Pods\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Pods_Numeric extends Pods_Base {

	public function get_name() {
		return 'pods-numeric';
	}

	public function get_title() {
		return esc_html__( 'Pods', 'elementor-pro' ) . ' ' . esc_html__( 'Numeric', 'elementor-pro' ) . ' ' . esc_html__( 'Field', 'elementor-pro' );
	}

	public function get_categories() {
		return [
			Module::NUMBER_CATEGORY,
			Module::POST_META_CATEGORY,
		];
	}

	public function render() {
		$field_data = $this->get_field();
		$value = ! empty( $field_data['value'] ) && is_numeric( $field_data['value'] ) ? $field_data['value'] : '';

		echo wp_kses_post( $value );
	}

	protected function get_supported_fields() {
		return [
			'numeric',
		];
	}
}
modules/dynamic-tags/pods/module.php000064400000005250150755004300013540 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Pods;

use Elementor\Modules\DynamicTags;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends DynamicTags\Module {

	const PODS_GROUP = 'Pods';

	/**
	 * @param array $types
	 *
	 * @return array
	 */
	public static function get_control_options( $types ) {
		$all_pods = pods_api()->load_pods( [
			'table_info' => true,
			'fields' => true,
		] );

		$groups = [];

		foreach ( $all_pods as $group ) {
			$options = [];

			foreach ( $group['fields'] as $field ) {
				if ( ! self::valid_field_type( $types, $field ) ) {
					continue;
				}

				// Use pods ID for unique keys
				$key = $group['name'] . ':' . $field['pod_id'] . ':' . $field['name'];
				$options[ $key ] = $field['label'];
			}

			if ( empty( $options ) ) {
				continue;
			}

			if ( 1 === count( $options ) ) {
				$options = [ -1 => ' -- ' ] + $options;
			}

			$groups[] = [
				'label' => $group['name'],
				'options' => $options,
			];
		}

		return $groups;
	}

	public static function valid_field_type( $types, $field ) {
		// Only file field with single image value
		if ( in_array( 'pods_image', $types, true ) && self::pods_image_mapping( $field ) ) {
			return true;
		}
		if ( in_array( 'pods_url', $types, true ) && in_array( $field['type'], [ 'email', 'file', 'website', 'phone' ] ) ) {
			// Only file with single value allowed
			if ( 'file' === $field['type'] && ! self::pods_file_mapping( $field ) ) {
				return false;
			}

			return true;
		}
		// Only file with multiple images allowed
		if ( in_array( 'pods_gallery', $types, true ) && self::pods_image_mapping( $field, false ) ) {
			return true;
		}
		// Any other type
		if ( in_array( $field['type'], $types, true ) ) {
			return true;
		}

		return false;
	}

	public static function pods_file_mapping( $field, $single = true ) {
		if ( 'file' !== $field['type'] ) {
			return false;
		}

		$limit = $single ? 'single' : 'multi';
		if ( $limit !== $field['options']['file_format_type'] ) {
			return false;
		}

		return true;
	}

	public static function pods_image_mapping( $field, $single = true ) {
		if ( ! isset( $field['options'] ) || ! isset( $field['options']['file_type'] ) ) {
			return false;
		}
		if ( 'images' !== $field['options']['file_type'] ) {
			return false;
		}
		if ( ! self::pods_file_mapping( $field, $single ) ) {
			return false;
		}

		return true;
	}

	public function get_tag_classes_names() {
		return [
			'Pods_Text',
			'Pods_Date',
			'Pods_Image',
			'Pods_Gallery',
			'Pods_URL',
			'Pods_Numeric',
		];
	}

	public function get_groups() {
		return [
			self::PODS_GROUP => [
				'title' => esc_html__( 'Pods', 'elementor-pro' ),
			],
		];
	}
}
modules/dynamic-tags/module.php000064400000004651150755004300012577 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags;

use Elementor\Modules\DynamicTags\Module as TagsModule;
use ElementorPro\Modules\DynamicTags\ACF;
use ElementorPro\Modules\DynamicTags\Toolset;
use ElementorPro\Modules\DynamicTags\Pods;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends TagsModule {

	const AUTHOR_GROUP = 'author';

	const POST_GROUP = 'post';

	const COMMENTS_GROUP = 'comments';

	const SITE_GROUP = 'site';

	const ARCHIVE_GROUP = 'archive';

	const MEDIA_GROUP = 'media';

	const ACTION_GROUP = 'action';

	public function __construct() {
		parent::__construct();

		// ACF 5 and up
		if ( class_exists( '\acf' ) && function_exists( 'acf_get_field_groups' ) ) {
			$this->add_component( 'acf', new ACF\Module() );
		}

		if ( function_exists( 'wpcf_admin_fields_get_groups' ) ) {
			$this->add_component( 'toolset', new Toolset\Module() );
		}

		if ( function_exists( 'pods' ) ) {
			$this->add_component( 'pods', new Pods\Module() );
		}
	}

	public function get_name() {
		return 'tags';
	}

	public function get_tag_classes_names() {
		return [
			'Archive_Description',
			'Archive_Meta',
			'Archive_Title',
			'Archive_URL',
			'Author_Info',
			'Author_Meta',
			'Author_Name',
			'Author_Profile_Picture',
			'Author_URL',
			'Comments_Number',
			'Comments_URL',
			'Page_Title',
			'Post_Custom_Field',
			'Post_Date',
			'Post_Excerpt',
			'Post_Featured_Image',
			'Post_Gallery',
			'Post_ID',
			'Post_Terms',
			'Post_Time',
			'Post_Title',
			'Post_URL',
			'Site_Logo',
			'Site_Tagline',
			'Site_Title',
			'Site_URL',
			'Internal_URL',
			'Current_Date_Time',
			'Request_Parameter',
			'Lightbox',
			'Featured_Image_Data',
			'Shortcode',
			'Contact_URL',
			'User_Info',
			'User_Profile_Picture',
		];
	}

	public function get_groups() {
		return [
			self::POST_GROUP => [
				'title' => esc_html__( 'Post', 'elementor-pro' ),
			],
			self::ARCHIVE_GROUP => [
				'title' => esc_html__( 'Archive', 'elementor-pro' ),
			],
			self::SITE_GROUP => [
				'title' => esc_html__( 'Site', 'elementor-pro' ),
			],
			self::MEDIA_GROUP => [
				'title' => esc_html__( 'Media', 'elementor-pro' ),
			],
			self::ACTION_GROUP => [
				'title' => esc_html__( 'Actions', 'elementor-pro' ),
			],
			self::AUTHOR_GROUP => [
				'title' => esc_html__( 'Author', 'elementor-pro' ),
			],
			self::COMMENTS_GROUP => [
				'title' => esc_html__( 'Comments', 'elementor-pro' ),
			],
		];
	}
}
modules/dynamic-tags/toolset/module.php000064400000004354150755004300014270 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Toolset;

use Elementor\Modules\DynamicTags;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends DynamicTags\Module {

	const TOOLSET_GROUP = 'Toolset';

	/**
	 * @param array $types
	 *
	 * @return array
	 */
	public static function get_control_options( $types ) {
		$toolset_groups = wpcf_admin_fields_get_groups();

		$groups = [];

		foreach ( $toolset_groups as $group ) {

			$options = [];

			$fields = wpcf_admin_fields_get_fields_by_group( $group['id'] );

			if ( ! is_array( $fields ) ) {
				continue;
			}

			foreach ( $fields as $field_key => $field ) {
				if ( ! is_array( $field ) || empty( $field['type'] ) ) {
					continue;
				}

				if ( ! self::valid_field_type( $types, $field ) ) {
					continue;
				}

				// Use group ID for unique keys
				$key = $group['slug'] . ':' . $field_key;
				$options[ $key ] = $field['name'];
			}

			if ( empty( $options ) ) {
				continue;
			}

			if ( 1 === count( $options ) ) {
				$options = [ -1 => ' -- ' ] + $options;
			}

			$groups[] = [
				'label' => $group['name'],
				'options' => $options,
			];
		}

		return $groups;
	}

	public static function toolset_image_mapping( $field, $single = true ) {
		if ( 'image' !== $field['type'] ) {
			return false;
		}

		$limit = $single ? '0' : '1';
		if ( empty( $field['data'] ) || $limit !== $field['data']['repetitive'] ) {
			return false;
		}

		return true;
	}

	public static function valid_field_type( $types, $field ) {
		// Only file field with single image value
		if ( in_array( 'toolset_image', $types, true ) && self::toolset_image_mapping( $field ) ) {
			return true;
		}

		// Only file with multiple images allowed
		if ( in_array( 'toolset_gallery', $types, true ) && self::toolset_image_mapping( $field, false ) ) {
			return true;
		}

		// Any other type
		if ( in_array( $field['type'], $types, true ) ) {
			return true;
		}

		return false;
	}

	public function get_tag_classes_names() {
		return [
			'Toolset_Text',
			'Toolset_Date',
			'Toolset_Image',
			'Toolset_URL',
			'Toolset_Gallery',
		];
	}

	public function get_groups() {
		return [
			self::TOOLSET_GROUP => [
				'title' => esc_html__( 'Toolset', 'elementor-pro' ),
			],
		];
	}
}
modules/dynamic-tags/toolset/tags/toolset-text.php000064400000002776150755004300016422 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Toolset\Tags;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Toolset_Text extends Toolset_Base {

	public function get_name() {
		return 'toolset-text';
	}

	public function get_title() {
		return esc_html__( 'Toolset', 'elementor-pro' ) . ' ' . esc_html__( 'Field', 'elementor-pro' );
	}

	public function render() {
		// Toolset Embedded version loads its bootstrap later
		if ( ! function_exists( 'types_render_field' ) ) {
			return;
		}

		$key = $this->get_settings( 'key' );
		if ( empty( $key ) ) {
			return;
		}

		list( $field_group, $field_key ) = explode( ':', $key );

		$field = wpcf_admin_fields_get_field( $field_key );

		if ( $field && ! empty( $field['type'] ) ) {
			$value = '';
			switch ( $field['type'] ) {
				case 'google_address':
					$value = types_render_field( $field_key, [ 'format' => 'FIELD_ADDRESS' ] );
					break;
				case 'email':
				case 'embed':
					$value = types_render_field( $field_key, [ 'output' => 'raw' ] );
					break;
				default:
					$value = types_render_field( $field_key );
					break;
			} // End switch().
		} else {
			// Field settings has been deleted or not available.
			$value = types_render_field( $field_key );
		} // End if().

		echo wp_kses_post( $value );
	}

	protected function get_supported_fields() {
		return [
			'textfield',
			'phone',
			'textarea',
			'checkbox',
			'select',
			'numeric',
			'email',
			'embed',
			'google_address',
			'wysiwyg',
			'radio',
		];
	}
}
modules/dynamic-tags/toolset/tags/toolset-base.php000064400000001467150755004300016344 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Toolset\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\DynamicTags\Toolset\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Toolset_Base extends Tag {

	public function get_group() {
		return Module::TOOLSET_GROUP;
	}

	public function get_categories() {
		return [
			Module::TEXT_CATEGORY,
			Module::POST_META_CATEGORY,
		];
	}

	protected function register_controls() {
		$this->add_control(
			'key',
			[
				'label' => esc_html__( 'Key', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'groups' => Module::get_control_options( $this->get_supported_fields() ),
			]
		);
	}

	protected function get_supported_fields() {
		return [];
	}
}
modules/dynamic-tags/toolset/tags/toolset-image.php000064400000003650150755004300016510 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Toolset\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\Toolset\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Toolset_Image extends Data_Tag {

	public function get_name() {
		return 'toolset-image';
	}

	public function get_title() {
		return esc_html__( 'Toolset', 'elementor-pro' ) . ' ' . esc_html__( 'Image Field', 'elementor-pro' );
	}

	public function get_group() {
		return Module::TOOLSET_GROUP;
	}

	public function get_categories() {
		return [ Module::IMAGE_CATEGORY ];
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	public function get_value( array $options = [] ) {
		// Toolset Embedded version loads its bootstrap later
		if ( ! function_exists( 'types_render_field' ) ) {
			return [];
		}

		$key = $this->get_settings( 'key' );
		$image_data = $this->get_settings( 'fallback' );
		if ( empty( $key ) ) {
			return $image_data;
		}

		list( $field_group, $field_key ) = explode( ':', $key );

		$field = wpcf_admin_fields_get_field( $field_key );

		if ( $field && ! empty( $field['type'] ) ) {

			$url = types_render_field( $field_key, [ 'url' => true ] );

			if ( empty( $url ) ) {
				return $image_data;
			}

			$image_data = [
				'id' => attachment_url_to_postid( $url ),
				'url' => $url,
			];
		}

		return $image_data;
	}

	protected function register_controls() {
		$this->add_control(
			'key',
			[
				'label' => esc_html__( 'Key', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'groups' => Module::get_control_options( $this->get_supported_fields() ),
			]
		);

		$this->add_control(
			'fallback',
			[
				'label' => esc_html__( 'Fallback', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
			]
		);
	}

	protected function get_supported_fields() {
		return [
			'toolset_image',
		];
	}
}
modules/dynamic-tags/toolset/tags/toolset-url.php000064400000004163150755004300016230 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Toolset\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\Toolset\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Toolset_URL extends Data_Tag {

	public function get_name() {
		return 'toolset-url';
	}

	public function get_title() {
		return esc_html__( 'Toolset', 'elementor-pro' ) . ' ' . esc_html__( 'URL Field', 'elementor-pro' );
	}

	public function get_group() {
		return Module::TOOLSET_GROUP;
	}

	public function get_categories() {
		return [ Module::URL_CATEGORY ];
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	public function get_value( array $options = [] ) {
		// Toolset Embedded version loads its bootstrap later
		if ( ! function_exists( 'types_render_field' ) ) {
			return;
		}

		$key = $this->get_settings( 'key' );
		if ( empty( $key ) ) {
			return;
		}

		list( $field_group, $field_key ) = explode( ':', $key );

		$field = wpcf_admin_fields_get_field( $field_key );

		if ( $field && ! empty( $field['type'] ) ) {
			$value = '';
			switch ( $field['type'] ) {
				case 'email':
					$value = 'mailto:' . types_render_field( $field_key, [ 'output' => 'raw' ] );
					break;
				case 'image':
					$value = types_render_field( $field_key, [ 'url' => true ] );
					break;
				default:
					$value = types_render_field( $field_key, [ 'output' => 'raw' ] );
			} // End switch().
		}

		if ( empty( $value ) && $this->get_settings( 'fallback' ) ) {
			$value = $this->get_settings( 'fallback' );
		}

		return wp_kses_post( $value );
	}

	protected function register_controls() {
		$this->add_control(
			'key',
			[
				'label' => esc_html__( 'Key', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'groups' => Module::get_control_options( $this->get_supported_fields() ),
			]
		);

		$this->add_control(
			'fallback',
			[
				'label' => esc_html__( 'Fallback', 'elementor-pro' ),
			]
		);
	}

	protected function get_supported_fields() {
		return [
			'email',
			'image',
			'file',
			'audio',
			'url',
		];
	}
}
modules/dynamic-tags/toolset/tags/toolset-gallery.php000064400000004630150755004300017064 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Toolset\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\DynamicTags\Toolset\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Toolset_Gallery extends Data_Tag {

	public function get_name() {
		return 'toolset-gallery';
	}

	public function get_title() {
		return esc_html__( 'Toolset', 'elementor-pro' ) . ' ' . esc_html__( 'Gallery Field', 'elementor-pro' );
	}

	public function get_categories() {
		return [ Module::GALLERY_CATEGORY ];
	}

	public function get_group() {
		return Module::TOOLSET_GROUP;
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	public function get_value( array $options = [] ) {
		// Toolset Embedded version loads its bootstrap later
		if ( ! function_exists( 'types_render_field' ) ) {
			return [];
		}

		$key = $this->get_settings( 'key' );
		if ( empty( $key ) ) {
			return [];
		}

		$images = [];

		list( $field_group, $field_key ) = explode( ':', $key );

		$field = wpcf_admin_fields_get_field( $field_key );

		if ( $field && ! empty( $field['type'] ) ) {

			$galley_images = types_render_field( $field_key, [
				'separator' => '|',
				'url' => true,
			] );
			$galley_images = explode( '|', $galley_images );
			foreach ( $galley_images as $image_url ) {
				$images[] = [
					'id' => $this->get_cached_attachment_url_to_post_id( $image_url ),
					'url' => $image_url,
				];
			}
		}

		return $images;
	}

	protected function register_controls() {
		$this->add_control(
			'key',
			[
				'label' => esc_html__( 'Key', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'groups' => Module::get_control_options( $this->get_supported_fields() ),
			]
		);
	}

	protected function get_supported_fields() {
		return [
			'toolset_gallery',
		];
	}

	/**
	 * @param $attachment_url
	 *
	 * @return false|int|mixed
	 */
	private function get_cached_attachment_url_to_post_id( $attachment_url ) {
		$id = wp_cache_get( $attachment_url, __CLASS__ );

		if ( false === $id ) {
			$id = attachment_url_to_postid( $attachment_url );

			wp_cache_set( $attachment_url, $id, __CLASS__ );
		}

		return $id;
	}

	/**
	 * Toolset_Gallery constructor.
	 *
	 * @param array $data
	 */
	public function __construct( array $data = [] ) {
		parent::__construct( $data );

		wp_cache_add_non_persistent_groups( __CLASS__ );
	}
}
modules/dynamic-tags/toolset/tags/toolset-date.php000064400000005206150755004300016342 0ustar00<?php
namespace ElementorPro\Modules\DynamicTags\Toolset\Tags;

use Elementor\Controls_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Toolset_Date extends Toolset_Base {

	public function get_name() {
		return 'toolset-date';
	}

	public function get_title() {
		return esc_html__( 'Toolset', 'elementor-pro' ) . ' ' . esc_html__( 'Date Field', 'elementor-pro' );
	}

	public function render() {
		// Toolset Embedded version loads its bootstrap later
		if ( ! function_exists( 'types_render_field' ) ) {
			return;
		}

		$key = $this->get_settings( 'key' );
		if ( empty( $key ) ) {
			return;
		}

		list( $field_group, $field_key ) = explode( ':', $key );

		$field = wpcf_admin_fields_get_field( $field_key );
		$value = '';

		if ( $field && ! empty( $field['type'] ) && 'date' === $field['type'] ) {

			$format = $this->get_settings( 'format' );

			$timestamp = types_render_field( $field_key, [
				'output' => 'raw',
				'style' => 'text',
			] );

			if ( empty( $timestamp ) ) {
				return $value;
			}

			if ( 'human' === $format ) {
				/* translators: %s: Human readable date/time. */
				$value = human_time_diff( $timestamp );
			} else {
				switch ( $format ) {
					case 'default':
						$date_format = get_option( 'date_format' );
						break;
					case 'custom':
						$date_format = $this->get_settings( 'custom_format' );
						break;
					default:
						$date_format = $format;
						break;
				}

				$value = date_i18n( $date_format, $timestamp );
			}
		}
		echo wp_kses_post( $value );
	}

	public function get_panel_template_setting_key() {
		return 'key';
	}

	protected function register_controls() {
		parent::register_controls();

		$this->add_control(
			'format',
			[
				'label' => esc_html__( 'Format', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'default' => esc_html__( 'Default', 'elementor-pro' ),
					'F j, Y' => gmdate( 'F j, Y' ),
					'Y-m-d' => gmdate( 'Y-m-d' ),
					'm/d/Y' => gmdate( 'm/d/Y' ),
					'd/m/Y' => gmdate( 'd/m/Y' ),
					'human' => esc_html__( 'Human Readable', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'default' => 'default',
			]
		);

		$this->add_control(
			'custom_format',
			[
				'label' => esc_html__( 'Custom Format', 'elementor-pro' ),
				'default' => '',
				'description' => sprintf( '<a href="https://go.elementor.com/wordpress-date-time/" target="_blank">%s</a>', esc_html__( 'Documentation on date and time formatting', 'elementor-pro' ) ),
				'condition' => [
					'format' => 'custom',
				],
			]
		);
	}

	protected function get_supported_fields() {
		return [ 'date' ];
	}
}
modules/video-playlist/widgets/video-playlist.php000064400000200370150755004300016306 0ustar00<?php
namespace ElementorPro\Modules\VideoPlaylist\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Image_Size;
use Elementor\Group_Control_Text_Shadow;
use Elementor\Group_Control_Typography;
use Elementor\Repeater;
use Elementor\Utils;
use ElementorPro\Base\Base_Widget;
use Elementor\Modules\DynamicTags\Module as TagsModule;
use Elementor\Icons_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Video_Playlist extends Base_Widget {

	public function get_name() {
		return 'video-playlist';
	}

	public function get_title() {
		return esc_html__( 'Video Playlist', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-video-playlist';
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_playlist',
			[
				'label' => esc_html__( 'Playlist', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'tabs_direction',
			[
				'label' => esc_html__( 'Position', 'elementor-pro' ),
				'type' => Controls_Manager::HIDDEN,
				'default' => 'vertical',
				'options' => [
					'horizontal' => esc_html__( 'Horizontal', 'elementor-pro' ),
					'vertical' => esc_html__( 'Vertical', 'elementor-pro' ),
				],
				'prefix_class' => 'e-tabs-view-',
			]
		);

		$this->add_control(
			'playlist_title',
			[
				'label' => esc_html__( 'Playlist Name', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Playlist', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Playlist', 'elementor-pro' ),
				'frontend_available' => true,
			]
		);

		$repeater = new Repeater();

		$repeater->add_control(
			'type',
			[
				'label' => esc_html__( 'Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'youtube',
				'options' => [
					'youtube' => esc_html__( 'YouTube', 'elementor-pro' ),
					'vimeo' => esc_html__( 'Vimeo', 'elementor-pro' ),
					'hosted' => esc_html__( 'Self Hosted', 'elementor-pro' ),
					'section' => esc_html__( 'Section', 'elementor-pro' ),
				],
			]
		);

		$repeater->add_control(
			'youtube_url',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => esc_html__( 'Paste URL', 'elementor-pro' ) . ' (YouTube)',
				'label_block' => true,
				'condition' => [
					'type' => 'youtube',
				],
			]
		);

		$repeater->add_control(
			'vimeo_url',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
					'categories' => [
						TagsModule::POST_META_CATEGORY,
						TagsModule::URL_CATEGORY,
					],
				],
				'placeholder' => esc_html__( 'Enter your URL', 'elementor-pro' ) . ' (Vimeo)',
				'default' => 'https://vimeo.com/235215203',
				'label_block' => true,
				'condition' => [
					'type' => 'vimeo',
				],
			]
		);

		$repeater->add_control(
			'vimeo_fetch_data',
			[
				'type' => Controls_Manager::BUTTON,
				'label_block' => true,
				'text' => esc_html__( 'Get Video Data', 'elementor-pro' ),
				'separator' => 'none',
				'event' => 'elementorPlaylistWidget:fetchVideoData',
				'condition' => [
					'type' => [ 'youtube', 'vimeo' ],
				],
			]
		);

		$repeater->add_control(
			'is_external_url',
			[
				'label' => esc_html__( 'External URL', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'condition' => [
					'type' => 'hosted',
				],
			]
		);

		$repeater->add_control(
			'hosted_url',
			[
				'label' => esc_html__( 'Choose File', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
				'dynamic' => [
					'active' => true,
					'categories' => [
						TagsModule::MEDIA_CATEGORY,
					],
				],
				'media_type' => 'video',
				'condition' => [
					'type' => 'hosted',
					'is_external_url' => '',
				],
			]
		);

		$repeater->add_control(
			'external_url',
			[
				'label' => esc_html__( 'URL', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'autocomplete' => false,
				'options' => false,
				'label_block' => true,
				'show_label' => false,
				'dynamic' => [
					'active' => true,
					'categories' => [
						TagsModule::POST_META_CATEGORY,
						TagsModule::URL_CATEGORY,
					],
				],
				'media_type' => 'video',
				'placeholder' => esc_html__( 'Enter your URL', 'elementor-pro' ),
				'condition' => [
					'type' => 'hosted',
					'is_external_url' => 'yes',
				],
			]
		);

		$repeater->add_control(
			'title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'default' => esc_html__( 'Title', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Add Your Text Here', 'elementor-pro' ),
				'label_block' => true,
			]
		);

		$repeater->add_control(
			'duration',
			[
				'label' => esc_html__( 'Duration', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => '1:05',
				'default' => '',
				'condition' => [
					'type!' => 'section',
				],
			]
		);

		$repeater->add_control(
			'thumbnail',
			[
				'label' => esc_html__( 'Thumbnail', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
				'dynamic' => [
					'active' => true,
				],
				'default' => [
					'url' => Utils::get_placeholder_image_src(),
				],
				'condition' => [
					'type!' => 'section',
				],
			]
		);

		$repeater->add_control(
			'inner_tab_is_content_visible',
			[
				'label' => esc_html__( 'Contents Tabs ', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'return_value' => 'show',
				'default' => '',
				'condition' => [
					'type' => [ 'youtube', 'hosted', 'vimeo' ],
				],
			]
		);

		$repeater->start_controls_tabs( 'video_tabs' );

		$repeater->start_controls_tab(
			'inner_tab_1',
			[
				'label' => esc_html__( 'Tab #1', 'elementor-pro' ),
				'condition' => [
					'type' => [ 'youtube', 'hosted', 'vimeo' ],
					'inner_tab_is_content_visible' => 'show',
				],
			]
		);

		$repeater->add_control(
			'inner_tab_content_1',
			[
				'label' => '',
				'type' => Controls_Manager::WYSIWYG,
				'default' => '<p>' . esc_html__( 'Add some content for each one of your videos, like a description, transcript or external links.To add, remove or edit tab names, go to Tabs.', 'elementor-pro' ) . '</p>',
				'condition' => [
					'type' => [ 'youtube', 'hosted', 'vimeo' ],
					'inner_tab_is_content_visible' => 'show',
				],
			]
		);

		$repeater->end_controls_tab();

		$repeater->start_controls_tab(
			'inner_tab_2',
			[
				'label' => esc_html__( 'Tab #2', 'elementor-pro' ),
				'condition' => [
					'type' => [ 'youtube', 'hosted', 'vimeo' ],
					'inner_tab_is_content_visible' => 'show',
				],
			]
		);

		$repeater->add_control(
			'inner_tab_content_2',
			[
				'label' => '',
				'type' => Controls_Manager::WYSIWYG,
				'condition' => [
					'type' => [ 'youtube', 'hosted', 'vimeo' ],
					'inner_tab_is_content_visible' => 'show',
				],
			]
		);

		$repeater->end_controls_tab();

		$repeater->end_controls_tabs();

		$this->add_control(
			'tabs',
			[
				'label' => esc_html__( 'Playlist Items', 'elementor-pro' ),
				'type' => Controls_Manager::REPEATER,
				'fields' => $repeater->get_controls(),
				'default' => [
					[
						'title' => esc_html__( 'Sample Video', 'elementor-pro' ),
						'youtube_url' => 'https://www.youtube.com/watch?v=XHOmBV4js_E',
						'duration' => '0:16',
						'thumbnail' => [ 'url' => 'http://img.youtube.com/vi/XHOmBV4js_E/maxresdefault.jpg' ],

					],
					[
						'title' => esc_html__( 'Sample Video', 'elementor-pro' ),
						'youtube_url' => 'https://www.youtube.com/watch?v=XHOmBV4js_E',
						'duration' => '0:16',
						'thumbnail' => [ 'url' => 'http://img.youtube.com/vi/XHOmBV4js_E/maxresdefault.jpg' ],

					],
					[
						'title' => esc_html__( 'Sample Video', 'elementor-pro' ),
						'youtube_url' => 'https://www.youtube.com/watch?v=XHOmBV4js_E',
						'duration' => '0:16',
						'thumbnail' => [ 'url' => 'http://img.youtube.com/vi/XHOmBV4js_E/maxresdefault.jpg' ],

					],
				],
				'frontend_available' => true,
				'title_field' => '{{{ title }}}',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_inner_tab',
			[
				'label' => esc_html__( 'Tabs', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'inner_tab_title_1',
			[
				'label' => esc_html__( 'Tab 1 Name', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Tab #1', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => esc_html__( 'Name', 'elementor-pro' ),
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'inner_tab_title_2',
			[
				'label' => esc_html__( 'Tab 2 Name', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Tab #2', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => esc_html__( 'Name', 'elementor-pro' ),
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'inner_tab_is_content_collapsible',
			[
				'label' => esc_html__( 'Collapsible', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'return_value' => 'collapsible',
				'default' => '',
				'separator' => 'before',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'inner_tab_label_show_more',
			[
				'label' => esc_html__( 'Read More Label', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => esc_html__( 'Show More', 'elementor-pro' ),
				'default' => esc_html__( 'Show More', 'elementor-pro' ),
				'condition' => [
					'inner_tab_is_content_collapsible' => 'collapsible',
				],
			]
		);

		$this->add_control(
			'inner_tab_label_show_less',
			[
				'label' => esc_html__( 'Read Less Label', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => esc_html__( 'Show Less', 'elementor-pro' ),
				'default' => esc_html__( 'Show Less', 'elementor-pro' ),
				'condition' => [
					'inner_tab_is_content_collapsible' => 'collapsible',
				],
			]
		);

		$this->add_responsive_control(
			'inner_tab_collapsible_height',
			[
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => '54',
				],
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 54,
						'max' => 500,
					],
				],
				'render_type' => 'template',
				'selectors' => [
					'{{WRAPPER}} .collapsible .e-inner-tab-text' => 'height: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'inner_tab_is_content_collapsible' => 'collapsible',
				],
				'frontend_available' => true,
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_image_overlay',
			[
				'label' => esc_html__( 'Image Overlay', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'show_image_overlay',
			[
				'label' => esc_html__( 'Image Overlay', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'image_overlay',
			[
				'label' => esc_html__( 'Choose Image', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
				'default' => [
					'url' => Utils::get_placeholder_image_src(),
				],
				'dynamic' => [
					'active' => true,
				],
				'condition' => [
					'show_image_overlay' => 'yes',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Image_Size::get_type(),
			[
				'name' => 'image_overlay',
				'default' => 'full',
				'separator' => 'none',
				'condition' => [
					'show_image_overlay' => 'yes',
				],
			]
		);

		$this->add_control(
			'show_play_icon',
			[
				'label' => esc_html__( 'Play Icon', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'fa4compatibility' => 'icon',
				'default' => [
					'value' => 'far fa-play-circle',
					'library' => 'fa-regular',
				],
				'label_block' => false,
				'skin' => 'inline',
				'condition' => [
					'show_image_overlay' => 'yes',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_additional_options',
			[
				'label' => esc_html__( 'Additional Options', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'tabs_alignment',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'default' => 'right',
				'options' => [
					'start' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'end' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'prefix_class' => 'elementor-layout-',
			]
		);

		$this->add_control(
			'heading_autoplay',
			[
				'label' => esc_html__( 'Autoplay', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'autoplay_on_load',
			[
				'label' => esc_html__( 'On Load', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'frontend_available' => true,
			]
		);
		$this->add_control(
			'autoplay_next',
			[
				'label' => esc_html__( 'Next Up', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'show_watched_indication',
			[
				'label' => esc_html__( 'Indicate Watched', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'separator' => 'before',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'show_video_count',
			[
				'label' => esc_html__( 'Video Count', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
			]
		);

		$this->add_control(
			'show_duration',
			[
				'label' => esc_html__( 'Duration', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
			]
		);

		$this->add_control(
			'show_thumbnail',
			[
				'label' => esc_html__( 'Thumbnails', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
			]
		);

		$this->add_control(
			'play_icon',
			[
				'label' => esc_html__( 'Play Icon', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'fa4compatibility' => 'icon',
				'default' => [
					'value' => 'fas fa-play-circle',
					'library' => 'fa-solid',
				],
				'label_block' => false,
				'skin' => 'inline',
			]
		);

		$this->add_control(
			'watched_icon',
			[
				'label' => esc_html__( 'Watched Icon', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'fa4compatibility' => 'icon',
				'default' => [
					'value' => 'fas fa-check-circle',
					'library' => 'fa-solid',
				],
				'label_block' => false,
				'skin' => 'inline',
			]
		);

		$this->add_control(
			'lazy_load',
			[
				'label' => esc_html__( 'Lazy Load', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'separator' => 'before',
				'return_value' => true,
				'frontend_available' => true,
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_layout',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'tab'   => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'layout_height',
			[
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'vh', 'vw' ],
				'range' => [
					'px' => [
						'min' => 200,
						'max' => 1200,
					],
					'vh' => [
						'min' => 10,
						'max' => 100,
					],
					'vw' => [
						'min' => 10,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .e-tabs .e-tabs-main-area' => 'height: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_top_bar',
			[
				'label' => esc_html__( 'Top Bar', 'elementor-pro' ),
				'tab'   => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'heading_playlist_name',
			[
				'label' => esc_html__( 'Playlist Name', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'playlist_name_background',
			[
				'label' => esc_html__( 'Background', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tabs-header' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'playlist_name_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .e-tabs-header .e-tabs-title' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'playlist_name_typography',
				'selector' => '{{WRAPPER}} .e-tabs-header .e-tabs-title',
			]
		);

		$this->add_control(
			'heading_videos_amount',
			[
				'label' => esc_html__( 'Video Count', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'videos_amount_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .e-tabs-header .e-tabs-videos-count' => 'color: {{VALUE}};',
					'{{WRAPPER}} .e-tabs-header .e-tabs-header-right-side i' => 'color: {{VALUE}};',
					'{{WRAPPER}} .e-tabs-header .e-tabs-header-right-side svg' => 'fill: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'videos_amount_typography',
				'selector' => '{{WRAPPER}} .e-tabs-header .e-tabs-videos-count',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_videos',
			[
				'label' => esc_html__( 'Videos', 'elementor-pro' ),
				'tab'   => Controls_Manager::TAB_STYLE,
			]
		);

		$this->start_controls_tabs( 'playlist_tabs' );

		$this->start_controls_tab(
			'playlist_tabs_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'heading_tab_normal',
			[
				'label' => esc_html__( 'Item', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'normal_background',
			[
				'label' => esc_html__( 'Background', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tab-title' => 'background-color: {{VALUE}};',
					'{{WRAPPER}} .e-tabs-items-wrapper' => 'background-color: {{VALUE}};',
					'{{WRAPPER}} .e-tabs-items-wrapper .shadow-bottom' => 'background: linear-gradient(180deg, transparent 0%, {{VALUE}} 100%)',
					'{{WRAPPER}} .e-tabs-items-wrapper .shadow-top' => 'background: linear-gradient(0deg, transparent 0%, {{VALUE}} 100%);',
				],
			]
		);

		$this->add_control(
			'normal_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tab-title .e-tab-title-text' => 'color: {{VALUE}};',
					'{{WRAPPER}} .e-tab-title .e-tab-title-text a' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'normal_typography',
				'selector' => '{{WRAPPER}} .e-tab-title .e-tab-title-text',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->add_control(
			'heading_duration_normal',
			[
				'label' => esc_html__( 'Duration', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'normal_duration_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tab-title .e-tab-duration' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'normal_duration_typography',
				'selector' => '{{WRAPPER}} .e-tab-title .e-tab-duration',
			]
		);

		$this->add_control(
			'heading_icon_normal',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'normal_icon_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tab-title i' => 'color: {{VALUE}};',
					'{{WRAPPER}} .e-tab-title svg' => 'fill: {{VALUE}};',
					'{{WRAPPER}} .e-tab-title svg path' => 'fill: {{VALUE}};',
				],
			]
		);

		// Default shadow values for the icon.
		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'normal_icon_top_text_shadow',
				'fields_options' => [
					'text_shadow_type' => [
						'label' => _x( 'Shadow', 'Text Shadow Control', 'elementor-pro' ),
					],
					'text_shadow' => [
						'selectors' => [
							'{{WRAPPER}} .e-tab-title i' => 'text-shadow: {{HORIZONTAL}}px {{VERTICAL}}px {{BLUR}}px {{COLOR}};',
							'{{WRAPPER}} .e-tab-title svg' => 'filter: drop-shadow({{HORIZONTAL}}px {{VERTICAL}}px {{BLUR}}px {{COLOR}});',
						],
					],
				],
			]
		);

		$this->add_responsive_control(
			'normal_icon_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'min' => 10,
					'max' => 30,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--playlist-item-icon-size: {{SIZE}}px',
					'{{WRAPPER}}' => '--playlist-item-icon-size: {{SIZE}}px',
				],
			]
		);

		$this->add_control(
			'heading_separator_normal',
			[
				'label' => esc_html__( 'Separator', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'normal_separator_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '',
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'solid' => _x( 'Solid', 'Border Control', 'elementor-pro' ),
					'double' => _x( 'Double', 'Border Control', 'elementor-pro' ),
					'dotted' => _x( 'Dotted', 'Border Control', 'elementor-pro' ),
					'dashed' => _x( 'Dashed', 'Border Control', 'elementor-pro' ),
					'groove' => _x( 'Groove', 'Border Control', 'elementor-pro' ),
				],
				'selectors' => [
					'{{WRAPPER}} .e-tab-title' => 'border-style: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'normal_separator_weight',
			[
				'label' => esc_html__( 'Weight', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'min' => 0,
					'max' => 10,
				],
				'selectors' => [
					'{{WRAPPER}} .e-tab-title' => 'border-width: 0 0 {{SIZE}}px 0;',
				],
				'condition' => [
					'normal_separator_style!' => '',
				],
			]
		);

		$this->add_control(
			'normal_separator_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tab-title' => 'border-color: {{VALUE}};',
				],
				'condition' => [
					'normal_separator_style!' => '',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'playlist_tabs_active',
			[
				'label' => esc_html__( 'Active', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'heading_tab_active',
			[
				'label' => esc_html__( 'Item', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'active_background',
			[
				'label' => esc_html__( 'Background', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tabs-items-wrapper .e-tabs-items .e-tab-title:where( .e-active, :hover )' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'active_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#556068',
				'selectors' => [
					'{{WRAPPER}} .e-tabs-items-wrapper .e-tab-title:where( .e-active, :hover ) .e-tab-title-text' => 'color: {{VALUE}};',
					'{{WRAPPER}} .e-tabs-items-wrapper .e-tab-title:where( .e-active, :hover ) .e-tab-title-text a' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'active_typography',
				'selector' => '{{WRAPPER}} .e-tabs-items-wrapper .e-tab-title:where( .e-active, :hover ) .e-tab-title-text',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->add_control(
			'heading_duration_active',
			[
				'label' => esc_html__( 'Duration', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'active_duration_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .e-tabs-items-wrapper .e-tab-title:where( .e-active, :hover ) .e-tab-duration' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'active_duration_typography',
				'selector' => '{{WRAPPER}} .e-tabs-items-wrapper .e-tab-title:where( .e-active, :hover ) .e-tab-duration',
			]
		);

		$this->add_control(
			'heading_icon_active',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'active_icon_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tabs-items-wrapper .e-tab-title:where( .e-active, :hover ) i' => 'color: {{VALUE}};',
					'{{WRAPPER}} .e-tabs-items-wrapper .e-tab-title:where( .e-active, :hover ) svg' => 'color: {{VALUE}};',
					'{{WRAPPER}} .e-tabs-items-wrapper .e-tab-title:where( .e-active, :hover ) svg path' => 'fill: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'active_icon_top_text_shadow',
				'fields_options' => [
					'text_shadow_type' => [
						'label' => _x( 'Shadow', 'Text Shadow Control', 'elementor-pro' ),
					],
				],
				'selector' => '{{WRAPPER}} .e-tab-title:where( .e-active, :hover ) i, {{WRAPPER}} .e-tab-title:where( .e-active, :hover ) svg',
			]
		);

		$this->add_responsive_control(
			'active_icon_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'min' => 10,
					'max' => 30,
				],
				'selectors' => [
					'{{WRAPPER}} .e-tab-title:where( .e-active, :hover ) span i' => 'font-size: {{SIZE}}px',
					'{{WRAPPER}} .e-tab-title:where( .e-active, :hover ) span svg' => 'width: {{SIZE}}px; height: {{SIZE}}px;',
				],
			]
		);

		$this->add_control(
			'heading_separator_active',
			[
				'label' => esc_html__( 'Separator', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'active_separator_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '',
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'solid' => _x( 'Solid', 'Border Control', 'elementor-pro' ),
					'double' => _x( 'Double', 'Border Control', 'elementor-pro' ),
					'dotted' => _x( 'Dotted', 'Border Control', 'elementor-pro' ),
					'dashed' => _x( 'Dashed', 'Border Control', 'elementor-pro' ),
					'groove' => _x( 'Groove', 'Border Control', 'elementor-pro' ),
				],
				'selectors' => [
					'{{WRAPPER}} .e-tabs-items-wrapper .e-tab-title.e-active' => 'border-style: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'active_separator_weight',
			[
				'label' => esc_html__( 'Weight', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'min' => 0,
					'max' => 10,
				],
				'selectors' => [
					'{{WRAPPER}} .e-tabs-items-wrapper .e-tab-title.e-active' => 'border-width: 0 0 {{SIZE}}px 0;',
				],
				'condition' => [
					'active_separator_style!' => '',
				],
			]
		);

		$this->add_control(
			'active_separator_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tabs-items-wrapper .e-tabs-items .e-tab-title.e-active' => 'border-color: {{VALUE}};',
				],
				'condition' => [
					'active_separator_style!' => '',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_sections',
			[
				'label' => esc_html__( 'Sections', 'elementor-pro' ),
				'tab'   => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'heading_section',
			[
				'label' => esc_html__( 'Section', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'section_background',
			[
				'label' => esc_html__( 'Background', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tabs-items-wrapper .e-section-title' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'section_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .e-tabs-items-wrapper .e-section-title' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'section_typography',
				'selector' => '{{WRAPPER}} .e-tabs-items-wrapper .e-section-title',
			]
		);

		$this->add_control(
			'section_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'solid',
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'solid' => _x( 'Solid', 'Border Control', 'elementor-pro' ),
					'double' => _x( 'Double', 'Border Control', 'elementor-pro' ),
					'dotted' => _x( 'Dotted', 'Border Control', 'elementor-pro' ),
					'dashed' => _x( 'Dashed', 'Border Control', 'elementor-pro' ),
					'groove' => _x( 'Groove', 'Border Control', 'elementor-pro' ),
				],
				'selectors' => [
					'{{WRAPPER}} .e-tabs-items-wrapper .e-section-title' => 'border-style: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'section_border_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-tabs-items-wrapper .e-section-title' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'section_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tabs-items-wrapper .e-section-title' => 'border-color: {{VALUE}};',
				],
			]
		);
		$this->end_controls_section();

		$this->start_controls_section(
			'section_inner_tab_style',
			[
				'label' => esc_html__( 'Tabs', 'elementor-pro' ),
				'tab'   => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'inner_tab_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'min' => 0,
					'max' => 10,
				],
				'selectors' => [
					'{{WRAPPER}} .e-tabs-inner-tabs .e-inner-tabs-wrapper' => '--inner-tabs-border-height: {{SIZE}}px;',
					'{{WRAPPER}} .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active' => 'border-width: 0 0 {{SIZE}}px 0;',
				],
			]
		);

		$this->add_control(
			'inner_tab_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tabs-inner-tabs .e-inner-tabs-wrapper' => '--inner-tabs-border-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'inner_tab_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-active' => 'background-color: {{VALUE}};',
					'{{WRAPPER}} .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content' => 'background-color: {{VALUE}};',
					'{{WRAPPER}} .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-title' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'heading_inner_tab_title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'inner_tab_title_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title a' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'inner_tab_active_title_color',
			[
				'label' => esc_html__( 'Active Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active a' => 'color: {{VALUE}};',
					'{{WRAPPER}} .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active' => 'border-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'inner_tab_title_typography',
				'selector' => '{{WRAPPER}} .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title a',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->add_control(
			'heading_inner_tab_content',
			[
				'label' => esc_html__( 'Content', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'inner_tab_content_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-text' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'inner_tab_content_typography',
				'selector' => '{{WRAPPER}} .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-text',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->add_responsive_control(
			'inner_tab_content_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'heading_inner_tab_show_more',
			[
				'label' => esc_html__( 'Show More', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->start_controls_tabs( 'inner_tab_show_more_color' );

		$this->start_controls_tab(
			'inner_tab_normal_show_more',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'inner_tab_normal_show_more_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content button' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'inner_tab_hover_show_more',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'inner_tab_hover_show_more_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content button:hover' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'inner_tab_show_more_typography',
				'selector' => '{{WRAPPER}} .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content button',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
			]
		);

		$this->end_controls_section();
	}

	private function create_playlist_item_tabs_array( $playlist_item, $playlist_item_index, $tab_1_title, $tab_2_title ) {
		$playlist_item_tabs_array = [];
		$is_already_activated_tab = false;

		$playlist_item_tabs_content = [
			$playlist_item['inner_tab_content_1'],
			$playlist_item['inner_tab_content_2'],
		];

		$playlist_item_tabs_title = [
			$tab_1_title,
			$tab_2_title,
		];

		foreach ( $playlist_item_tabs_content as $index => $playlist_item_tab_content ) {
			$playlist_item_tab_content_object = new \stdClass();
			$playlist_item_tab_content_object->tab_title = $playlist_item_tabs_title[ $index ];
			$playlist_item_tab_content_object->tab_content = $playlist_item_tab_content;

			$tab_index = $index + 1;
			$playlist_item_tab_content_object->tab_content_setting_key = $this->get_repeater_setting_key( 'inner_tab_content_' . $tab_index, 'tabs', $playlist_item_index );

			if ( $playlist_item_tab_content ) {
				$playlist_item_tab_content_object->tab_attribute = ! $is_already_activated_tab ? '' : 'hidden';
				$playlist_item_tab_content_object->tab_class = ! $is_already_activated_tab ? 'e-inner-tab-active' : '';
				$is_already_activated_tab = true;
			}

			$playlist_item_tabs_array [] = $playlist_item_tab_content_object;
		}

		return $playlist_item_tabs_array;
	}

	private function create_playlist_item_video_attributes( $index, $id_int, $playlist_item, $video_url = '' ) {
		$html_attributes_object = new \stdClass();
		$tab_count = $index + 1;

		// The first tab will be activated and not hidden like the second tab.
		$hidden = 1 === $tab_count ? false : 'hidden';

		$html_attributes_object->attributes = [
			'id' => 'e-tab-content-' . $id_int . $tab_count,
			'class' => [ 'e-tab-content', 'elementor-clearfix' ],
			'data-tab' => $tab_count,
			'role' => 'tabpanel',
			'aria-labelledby' => 'e-tab-title-' . $id_int . $tab_count,
			'tabindex' => '0',
			'data-video-url' => $video_url,
			'data-video-type' => $playlist_item['type'],
			'data-video-title' => $playlist_item['title'],
			'data-video-duration' => $playlist_item['duration'],
		];

		if ( $hidden ) {
			$html_attributes_object->attributes['hidden'] = $hidden;
		}

		return $html_attributes_object;
	}

	private function create_playlist_item_title_attributes( $index, $id_int ) {
		$html_attributes_object = new \stdClass();
		$tab_count = $index + 1;

		$html_attributes_object->attributes = [
			'id' => 'e-tab-title-' . $id_int . $tab_count,
			'class' => [ 'e-tab-title', 'e-tab-desktop-title' ],
			'aria-selected' => 1 === $tab_count ? 'true' : 'false',
			'data-tab' => $tab_count,
			'role' => 'tab',
			'tabindex' => 1 === $tab_count ? '0' : '-1',
			'aria-controls' => 'e-tab-content-' . $id_int . $tab_count,
		];

		return $html_attributes_object;
	}

	private function create_playlist_items_array( $playlist_items ) {
		$playlist_items_array = array();
		$id_int = substr( $this->get_id_int(), 0, 3 );

		foreach ( $playlist_items as $index => $playlist_item ) {
			$playlist_item_object = new \stdClass();
			$playlist_item_object->video_url = '';
			$playlist_item_object->show_overlay_image = false;
			$playlist_item_object->is_inner_tabs_visible = $playlist_item['inner_tab_is_content_visible'];

			switch ( $playlist_item['type'] ) {
				case 'youtube':
				case 'vimeo':
				case 'hosted':
					$playlist_item_object->type = $playlist_item['type'];
					$playlist_item_object->video_title = $playlist_item['title'];

					if ( $playlist_item['youtube_url'] && 'youtube' === $playlist_item['type'] ) {
						$playlist_item_object->video_url = $playlist_item['youtube_url'];
					} elseif ( $playlist_item['vimeo_url'] && 'vimeo' === $playlist_item['type'] ) {
						$playlist_item_object->video_url = $playlist_item['vimeo_url'];
					} elseif ( $playlist_item['external_url'] && 'hosted' === $playlist_item['type'] && 'yes' === $playlist_item['is_external_url'] ) {
						$playlist_item_object->video_url = $playlist_item['external_url']['url'];
					} elseif ( $playlist_item['hosted_url'] && 'hosted' === $playlist_item['type'] && 'yes' !== $playlist_item['is_external_url'] ) {
						$playlist_item_object->video_url = $playlist_item['hosted_url']['url'];
					}

					$playlist_item_object->tab_collapsible = $this->get_settings_for_display( 'inner_tab_is_content_collapsible' );
					$playlist_item_object->read_more_label = $this->get_settings_for_display( 'inner_tab_label_show_more' );
					$playlist_item_object->read_less_label = $this->get_settings_for_display( 'inner_tab_label_show_less' );

					$playlist_item_object->video_duration = '';
					if ( $this->get_settings_for_display( 'show_duration' ) ) {
						$playlist_item_object->video_duration = $playlist_item['duration'];
					}

					$playlist_item_object->video_thumbnail = '';
					if ( $this->get_settings_for_display( 'show_thumbnail' ) ) {
						$playlist_item_object->video_thumbnail = $playlist_item['thumbnail']['url'];
					}

					$playlist_item_object->html_attributes_title = $this->create_playlist_item_title_attributes( $index, $id_int );

					$playlist_item_object->tabs = [];
					if ( $playlist_item['inner_tab_content_1'] || $playlist_item['inner_tab_content_2'] ) {
						$tab_1_title = $this->get_settings_for_display( 'inner_tab_title_1' );
						$tab_2_title = $this->get_settings_for_display( 'inner_tab_title_2' );
						if ( $playlist_item_object->is_inner_tabs_visible ) {
							$playlist_item_object->tabs = $this->create_playlist_item_tabs_array( $playlist_item, $index, $tab_1_title, $tab_2_title );
						}
					}

					if ( 0 === $index && 'yes' !== $this->get_settings_for_display( 'autoplay_on_load' ) && $this->get_settings_for_display( 'show_image_overlay' ) ) {
						$playlist_item_object->show_overlay_image = true;
					}

					break;
				case 'section':
					$playlist_item_object->type = $playlist_item['type'];
					$playlist_item_object->section_title = $playlist_item['title'];
					$playlist_item_object->video_title = '';
					break;
			}

			$playlist_item_object->html_attributes_video = $this->create_playlist_item_video_attributes( $index, $id_int, $playlist_item, $playlist_item_object->video_url );

			$playlist_items_array [] = $playlist_item_object;
		}

		return $playlist_items_array;
	}

	private function count_video_items( $playlist_items ) {
		$filtered_playlist_items = $playlist_items;
		foreach ( $filtered_playlist_items as $key => $tab ) {
			if ( 'section' === $tab['type'] ) {
				unset( $filtered_playlist_items[ $key ] );
			}
		}
		return count( $filtered_playlist_items );
	}

	private function prepare_video_playlist_data_object() {
		$settings = $this->get_settings_for_display();
		$playlist_items = $settings['tabs'];

		$playlist_object = new \stdClass();
		$playlist_object->playlist_name = $settings['playlist_title'];
		$playlist_object->is_show_video_count = $settings['show_video_count'];

		if ( $playlist_object->is_show_video_count ) {
			$playlist_object->video_count = $this->count_video_items( $playlist_items );
		}

		$playlist_object->show_thumbnails = $settings['show_thumbnail'];
		$playlist_object->play_icon = $settings['play_icon'];
		$playlist_object->watched_icon = $settings['watched_icon'];
		$playlist_object->playlist_items = $this->create_playlist_items_array( $playlist_items );
		$playlist_object->is_image_overlay = $settings['show_image_overlay'];
		$playlist_object->image_overlay_icon = $settings['show_play_icon'];

		$image_overlay = $settings['image_overlay'];
		if ( ! empty( $image_overlay['url'] ) ) {
			$playlist_object->image_overlay_image = Group_Control_Image_Size::get_attachment_image_src( $image_overlay['id'], 'image_overlay', $settings );
			if ( ! $playlist_object->image_overlay_image[1] ) {
				$playlist_object->image_overlay_image = $image_overlay['url'];
			}
		}

		return $playlist_object;
	}

	protected function render() {
		$playlist_object = $this->prepare_video_playlist_data_object();
		?>

		<div class="e-tabs">
			<div class="e-tabs-main-area">
				<div class="e-tabs-wrapper">
					<div class="e-tabs-header">
						<?php // PHPCS - the main text of a widget should not be escaped. ?>
						<h2 class="e-tabs-title"><?php echo $playlist_object->playlist_name; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></h2>
						<div class="e-tabs-header-right-side">
							<?php if ( $playlist_object->is_show_video_count ) : ?>
								<span class="e-tabs-videos-count"><?php echo esc_attr( $playlist_object->video_count ); ?> <?php echo esc_html__( 'Videos', 'elementor-pro' ); ?></span>
							<?php endif; ?>
							<?php
								Icons_Manager::render_icon(
									[
										'library' => 'eicons',
										'value' => 'eicon-caret-down',
									],
									[
										'aria-hidden' => 'true',
										'class' => [
											'e-tabs-toggle-videos-display-button',
											'rotate-down',
										],
									]
								);
							?>
						</div>
					</div>
					<div class="e-tabs-items-wrapper">
						<div class="e-tabs-items" role="tablist">
							<?php
							foreach ( $playlist_object->playlist_items as $item ) : ?>
								<?php if ( 'section' === $item->type ) : ?>
									<h3 class="e-section-title">
										<?php // PHPCS - the main text of a widget should not be escaped. ?>
										<?php echo $item->section_title; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
									</h3>
								<?php else : ?>
									<div <?php Utils::print_html_attributes( $item->html_attributes_title->attributes ); ?>>
										<?php if ( $playlist_object->show_thumbnails ) : ?>
											<div class="e-tab-thumbnail">
												<?php if ( $item->video_thumbnail ) : ?>
													<img src="<?php echo esc_url( $item->video_thumbnail ); ?>" />
												<?php endif; ?>
												<span class="icon-play"><?php Icons_Manager::render_icon( $playlist_object->play_icon, [ 'aria-hidden' => 'true' ] ); ?></span>
												<span class="icon-watched"><?php Icons_Manager::render_icon( $playlist_object->watched_icon, [ 'aria-hidden' => 'true' ] ); ?></span>
											</div>
										<?php else : ?>
											<span class="icon-play"><?php Icons_Manager::render_icon( $playlist_object->play_icon, [ 'aria-hidden' => 'true' ] ); ?></span>
											<span class="icon-watched"><?php Icons_Manager::render_icon( $playlist_object->watched_icon, [ 'aria-hidden' => 'true' ] ); ?></span>
										<?php endif; ?>
										<h4 class="e-tab-title-text" title="<?php echo esc_attr( $item->video_title ); ?>">
											<a href="">
												<?php // PHPCS - the main text of a widget should not be escaped. ?>
												<?php echo $item->video_title; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
											</a>
										</h4>
										<?php if ( $item->video_duration ) : ?>
											<span class="e-tab-duration"><?php echo esc_html( $item->video_duration ); ?></span>
										<?php endif; ?>
									</div>
								<?php endif; ?>
							<?php endforeach; ?>
						</div>
						<div class="shadow shadow-top" aria-hidden="true"></div>
						<div class="shadow shadow-bottom" aria-hidden="true"></div>
					</div>
				</div>

				<div class="e-tabs-content-wrapper" role="tablist" aria-orientation="vertical">
					<?php foreach ( $playlist_object->playlist_items as $item ) : ?>
						<div <?php Utils::print_html_attributes( $item->html_attributes_video->attributes ); ?>>
							<div></div>
							<?php if ( $item->show_overlay_image ) : ?>
								<div class="elementor-custom-embed-image-overlay elementor-clickable" style="background-image: url('<?php echo esc_url( $playlist_object->image_overlay_image ); ?>');">
									<?php if ( ! empty( $playlist_object->image_overlay_icon['value'] ) ) : ?>
										<div class="elementor-custom-embed-play" role="button">
											<?php Icons_Manager::render_icon( $playlist_object->image_overlay_icon, [ 'aria-hidden' => 'true' ] ); ?>
											<span class="elementor-screen-only"><?php echo esc_html__( 'Play Video', 'elementor-pro' ); ?></span>
										</div>
									<?php endif; ?>
								</div>
							<?php endif; ?>
						</div>
					<?php endforeach; ?>
				</div>
			</div>

			<div class="e-tabs-inner-tabs" >
				<?php foreach ( $playlist_object->playlist_items as $item ) : ?>
					<?php if ( $item->is_inner_tabs_visible ) : ?>
						<div <?php Utils::print_html_attributes( $item->html_attributes_video->attributes ); ?>>
							<?php if ( count( $item->tabs ) > 0 ) : ?>
								<div class="e-inner-tabs-wrapper">
									<?php foreach ( $item->tabs as $tab ) :
										if ( $tab->tab_content ) { ?>
											<div class="e-inner-tab-title <?php Utils::print_unescaped_internal_string( $tab->tab_class ); ?>">
												<a class="e-inner-tab-title-text" href=""><?php Utils::print_unescaped_internal_string( $tab->tab_title ); ?></a>
											</div>
										<?php } ?>
									<?php endforeach; ?>
								</div>
								<div class="e-inner-tabs-content-wrapper">
									<?php foreach ( $item->tabs as $tab ) :
										if ( $tab->tab_content ) { ?>
											<div class="e-inner-tab-title e-tab-mobile-title <?php Utils::print_unescaped_internal_string( $tab->tab_class ); ?>">
												<?php // PHPCS - the main text of a widget should not be escaped. ?>
												<?php echo $tab->tab_title; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
											</div>
											<div <?php Utils::print_unescaped_internal_string( $tab->tab_attribute ); ?> class="e-inner-tab-content <?php Utils::print_unescaped_internal_string( $tab->tab_class ); ?> <?php echo esc_attr( $item->tab_collapsible ); ?>">
												<div class="e-inner-tab-text">
													<?php $this->add_inline_editing_attributes( $tab->tab_content_setting_key, 'advanced' ); ?>
													<div <?php $this->print_render_attribute_string( $tab->tab_content_setting_key ); ?>>
														<?php // PHPCS - the main text of a widget should not be escaped. ?>
														<?php echo $this->parse_text_editor( $tab->tab_content ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
													</div>
												</div>
												<div class="e-inner-tab-buttons">
													<?php // PHPCS - the main text of a widget should not be escaped. ?>
													<button class="show-button"><?php echo $item->read_more_label; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></button>
													<button><?php echo $item->read_less_label; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></button>
												</div>
											</div>
										<?php } ?>
									<?php endforeach; ?>
								</div>
							<?php endif; ?>
						</div>
					<?php endif; ?>
				<?php endforeach; ?>
			</div>
		</div>
		<?php
	}

	protected function content_template() {
		?>
		<#

		function createPlaylistItemTabsArray( playlistItem, playlistItemIndex, tab1Title, tab2Title ) {
			var playlistItemTabsArray = [];
			var isAlreadyActivatedTab = false;

			var playlistItemTabsContent = [
				playlistItem.inner_tab_content_1,
				playlistItem.inner_tab_content_2,
			];

			var playlistItemTabsTitle = [
				tab1Title,
				tab2Title,
			];

			playlistItemTabsContent.forEach( function( playlistItemTabContent, index ) {
				var playlistItemTabContentObject = {};
				playlistItemTabContentObject.tab_title = playlistItemTabsTitle[ index ];
				playlistItemTabContentObject.tab_content = playlistItemTabContent;

				var tabIndex = index + 1;
				playlistItemTabContentObject.tabContentSettingKey = view.getRepeaterSettingKey( 'inner_tab_content_' + tabIndex, 'tabs', playlistItemIndex );

				if ( playlistItemTabContent ) {
					playlistItemTabContentObject.tabAttribute = ! isAlreadyActivatedTab ? '' : 'hidden';
					playlistItemTabContentObject.tabClass = ! isAlreadyActivatedTab ? 'e-inner-tab-active' : '';
					isAlreadyActivatedTab = true;
				}

				playlistItemTabsArray.push(playlistItemTabContentObject);
			} );

			return playlistItemTabsArray;
		}

		function createPlaylistItemVideoAttributes( index, id, playlistItem, videoUrl ) {
			var videoUrl = videoUrl ? videoUrl : '';
			var htmlAttributesObject = {};
			var tabCount = index + 1;

			// The first tab will be activated and not hidden like the second tab.
			var hidden = 1 === tabCount ? false : 'hidden';

			htmlAttributesObject.attributes = {
				'id' : 'e-tab-content-' + id + tabCount,
				'class' : [ 'e-tab-content', 'elementor-clearfix' ],
				'data-tab' : tabCount,
				'role' : 'tabpanel',
				'aria-labelledby' : 'e-tab-title-' + id + tabCount,
				'tabindex' : '0',
				'data-video-url' : videoUrl,
				'data-video-type' : playlistItem.type,
				'data-video-title' : playlistItem.title,
				'data-video-duration' : playlistItem.duration,
			};

			if ( hidden ) {
				htmlAttributesObject.attributes.hidden = hidden;
			}

			return htmlAttributesObject;
		}

		function createPlaylistItemTitleAttributes( index, id ) {
			var htmlAttributesObject = {};
			var tabCount = index + 1;

			htmlAttributesObject.attributes = {
				'id' : 'e-tab-title-' + id + tabCount,
				'class' : [ 'e-tab-title', 'e-tab-desktop-title' ],
				'aria-selected' : 1 === tabCount ? 'true' : 'false',
				'data-tab' : tabCount,
				'role' : 'tab',
				'tabindex' : 1 === tabCount ? '0' : '-1',
				'aria-controls' : 'e-tab-content-' + id + tabCount,
			};

			return htmlAttributesObject;
		}

		function createPlaylistItemsArray( playlistItems ) {
			var playlistItemsArray = [];
			id = view.getIDInt().toString().substr( 0, 3 )

			playlistItems.forEach( function( playlistItem, index ) {
				var playlistItemObject = {};
				playlistItemObject.videoUrl = '';
				playlistItemObject.showOverlayImage = false;
				playlistItemObject.isInnerTabsVisible = playlistItem.inner_tab_is_content_visible;

				switch ( playlistItem.type ) {
					case 'youtube':
					case 'vimeo':
					case 'hosted':
						playlistItemObject.type = playlistItem.type;
						playlistItemObject.videoTitle = playlistItem.title;

						if ( playlistItem.youtube_url && 'youtube' === playlistItem.type ) {
							playlistItemObject.videoUrl = playlistItem.youtube_url;
						} else if ( playlistItem.vimeo_url && 'vimeo' === playlistItem.type ) {
							playlistItemObject.videoUrl = playlistItem.vimeo_url;
						} else if ( playlistItem.external_url && 'hosted' === playlistItem.type && 'yes' === playlistItem.is_external_url ) {
							playlistItemObject.videoUrl = playlistItem.external_url.url;
						} else if ( playlistItem.hosted_url && 'hosted' === playlistItem.type && 'yes' !== playlistItem.is_external_url ) {
							playlistItemObject.videoUrl = playlistItem.hosted_url.url;
						}

						playlistItemObject.tabCollapsible = settings.inner_tab_is_content_collapsible;
						playlistItemObject.readMoreLabel = settings.inner_tab_label_show_more;
						playlistItemObject.readLessLabel = settings.inner_tab_label_show_less;

						playlistItemObject.videoDuration = '';
						if ( settings.show_duration ) {
							playlistItemObject.videoDuration = playlistItem.duration;
						}

						playlistItemObject.videoThumbnail = '';
						if ( settings.show_thumbnail ) {
							playlistItemObject.videoThumbnail = playlistItem.thumbnail.url;
						}

						playlistItemObject.htmlAttributesTitle = createPlaylistItemTitleAttributes( index, id );

						playlistItemObject.tabs = [];
						if ( playlistItem.inner_tab_content_1 || playlistItem.inner_tab_content_2 ) {
							var tab1Title = settings.inner_tab_title_1;
							var tab2Title = settings.inner_tab_title_2;
							if ( playlistItemObject.isInnerTabsVisible ) {
								playlistItemObject.tabs = createPlaylistItemTabsArray( playlistItem, index, tab1Title, tab2Title );
							}
						}

						if ( (0 === index) && (settings.autoplay_on_load !== 'yes') && settings.show_image_overlay ) {
							playlistItemObject.showOverlayImage = true;
						}

					break;
					case 'section':
						playlistItemObject.type = playlistItem.type;
						playlistItemObject.sectionTitle = playlistItem.title;
					break;
				}

				playlistItemObject.htmlAttributesVideo = createPlaylistItemVideoAttributes( index, id, playlistItem, playlistItemObject.videoUrl );

				playlistItemsArray.push(playlistItemObject);
			} );

			return playlistItemsArray;
		}

		function countVideoItems( playlistItems ) {
			var filteredPlaylistItems = playlistItems.filter(function(playlistItem) {
				return 'section' !== playlistItem.type
			});

			return filteredPlaylistItems.length;
		}

		function prepare_video_playlist_data_object() {
			var playlistItems = settings.tabs

			playlistObject = {};
			playlistObject.playlistName = settings.playlist_title;
			playlistObject.isShowVideoCount = settings.show_video_count;

			if( playlistObject.isShowVideoCount ) {
				playlistObject.videoCount = countVideoItems( playlistItems );
			}

			playlistObject.showThumbnails = settings.show_thumbnail;
			playlistObject.playIcon = settings.play_icon;
			playlistObject.watchedIcon = settings.watched_icon;
			playlistObject.playlistItems = createPlaylistItemsArray( playlistItems );
			playlistObject.isImageOverlay = !settings.autoplay_on_load && settings.show_image_overlay ? true : false;
			playlistObject.imageOverlayIcon = settings.show_play_icon;

			playlistObject.imageOverlayImage = '';
			imageOverlay = settings.image_overlay;
			if ( imageOverlay.url && settings.image_overlay.id && playlistObject.isImageOverlay ) {
				var image_overlay_object = {
				id: settings.image_overlay.id,
				url: settings.image_overlay.url,
				size: settings.image_overlay_size,
				dimension: settings.image_overlay_custom_dimension,
				model: view.getEditModel()
				};

				playlistObject.imageOverlayImage = elementor.imagesManager.getImageUrl( image_overlay_object );
			} else {
				playlistObject.imageOverlayImage = imageOverlay.url;
			}

			return playlistObject;
		}

		var playlistObject = prepare_video_playlist_data_object();

		var watchedIconHTML = elementor.helpers.renderIcon( view, playlistObject.watchedIcon, { 'aria-hidden': true }, 'i' , 'object' );
		var playIconHTML = elementor.helpers.renderIcon( view, playlistObject.playIcon, { 'aria-hidden': true }, 'i' , 'object' );
		var overlayImagePlayIconHTML = elementor.helpers.renderIcon( view, playlistObject.imageOverlayIcon, { 'aria-hidden': true }, 'i' , 'object' );
		#>
		<div class="e-tabs" role="tablist" aria-orientation="vertical">
			<div class="e-tabs-main-area">
				<div class="e-tabs-wrapper">
					<div class="e-tabs-header">
						<h2 class="e-tabs-title">{{{ playlistObject.playlistName }}}</h2>
						<div class="e-tabs-header-right-side">
							<# if ( playlistObject.isShowVideoCount ) { #>
								<span class="e-tabs-videos-count">{{{ playlistObject.videoCount }}} Videos</span>
							<# } #>
							<i class="e-tabs-toggle-videos-display-button eicon-caret-down rotate-down" aria-hidden="true"></i>
						</div>
					</div>
					<div class="e-tabs-items-wrapper">
						<div class="e-tabs-items" role="tablist">
							<# _.each( playlistObject.playlistItems, function( item, index ) { #>
								<# if ( 'section' === item.type ) { #>
									<h3 class="e-section-title">
										{{{ item.sectionTitle }}}
									</h3>
								<# } else { #>
									<#
										var tabTitleKey = item.htmlAttributesTitle.attributes.id;
										view.addRenderAttribute(tabTitleKey, item.htmlAttributesTitle.attributes);
									#>
									<div {{{ view.getRenderAttributeString( tabTitleKey ) }}}>
										<# if ( playlistObject.showThumbnails ) { #>
											<div class="e-tab-thumbnail">
												<# if ( item.videoThumbnail ) { #>
													<img src="{{{ item.videoThumbnail }}}" />
												<# } #>
												<span class="icon-play">{{{ playIconHTML.value }}}</span>
												<span class="icon-watched">{{{ watchedIconHTML.value }}}</span>
											</div>
										<# } else { #>
										<span class="icon-play">{{{ playIconHTML.value }}}</span>
										<span class="icon-watched">{{{ watchedIconHTML.value }}}</span>
										<# } #>
										<h4 class="e-tab-title-text" title="{{{ item.videoTitle }}}">
											<a href="">{{{ item.videoTitle }}}</a>
										</h4>
										<# if ( item.videoDuration ) { #>
										<span class="e-tab-duration">{{{ item.videoDuration }}}</span>
										<# } #>
									</div>
								<# } #>
							<# } ); #>
						</div>
						<div class="shadow shadow-top" aria-hidden="true"></div>
						<div class="shadow shadow-bottom" aria-hidden="true"></div>
					</div>
				</div>

				<div class="e-tabs-content-wrapper">
					<# _.each( playlistObject.playlistItems, function( item, index ) { #>
					<div class="e-tab-title e-tab-mobile-title" role="tab">{{{ item.title }}}</div>
					<#
						var tabContentKey = view.getRepeaterSettingKey( 'tab_content', 'tabs', index );
						view.addRenderAttribute(tabContentKey, item.htmlAttributesVideo.attributes);
					#>
					<div {{{ view.getRenderAttributeString( tabContentKey ) }}}>
						<div></div>
						<# if ( item.showOverlayImage ) { #>
						<div class="elementor-custom-embed-image-overlay elementor-clickable" style="background-image: url( {{ playlistObject.imageOverlayImage }} );">
							<# if ( playlistObject.imageOverlayIcon.value ) { #>
							<div class="elementor-custom-embed-play" role="button">
								{{{ overlayImagePlayIconHTML.value }}}
							</div>
							<# } #>
						</div>
						<# } #>
					</div>
					<# } ); #>
				</div>
			</div>

			<div class="e-tabs-inner-tabs">
				<# _.each( playlistObject.playlistItems, function( item, index ) { #>
					<# if ( item.isInnerTabsVisible ) { #>
					<#
						var tabContentKey = view.getRepeaterSettingKey( 'tab_content', 'inner-tabs', index );
						view.addRenderAttribute(tabContentKey, item.htmlAttributesVideo.attributes);
					#>
						<div {{{ view.getRenderAttributeString( tabContentKey ) }}}>
							<# if ( item.tabs.length > 0 ) { #>
								<div class="e-inner-tabs-wrapper">
									<# _.each( item.tabs, function( tab ) { #>
										<# if ( tab.tab_content ) { #>
											<div class="e-inner-tab-title {{{ tab.tabClass }}}">
												<a class="e-inner-tab-title-text" href=""> {{{ tab.tab_title }}} </a>
											</div>
										<# } #>
									<# }); #>
								</div>
								<div class="e-inner-tabs-content-wrapper">
									<# _.each( item.tabs, function( tab ) { #>
										<div class="e-inner-tab-title e-tab-mobile-title {{{ tab.tabClass }}}">
											{{{ tab.tab_title }}}
										</div>
										<div {{{ tab.tabAttribute }}} class="e-inner-tab-content {{{ tab.tabClass }}} {{{ item.tabCollapsible }}}">
											<div class="e-inner-tab-text">
												<# view.addInlineEditingAttributes( tab.tabContentSettingKey, 'advanced' ); #>
												<div {{{ view.getRenderAttributeString( tab.tabContentSettingKey ) }}}>
													{{{ tab.tab_content }}}
												</div>
											</div>
											<div class="e-inner-tab-buttons">
												<button class="show-button">{{{ item.readMoreLabel }}}</button>
												<button>{{{ item.readLessLabel }}}</button>
											</div>
										</div>
									<# } ); #>
								</div>
							<# } #>
						</div>
					<# } #>
				<# } ); #>
			</div>
		</div>
		<?php
	}
}
modules/video-playlist/module.php000064400000000616150755004300013161 0ustar00<?php
namespace ElementorPro\Modules\VideoPlaylist;

use ElementorPro\Base\Module_Base;
use Elementor\Core\Experiments\Manager;
use ElementorPro\Plugin;


if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Module extends Module_Base {
	public function get_name() {
		return 'video-playlist';
	}

	public function get_widgets() {
		return [
			'Video_Playlist',
		];
	}
}
modules/screenshots/render-mode-screenshot.php000064400000003425150755004300015644 0ustar00<?php
namespace ElementorPro\Modules\Screenshots;

use Elementor\Core\Frontend\RenderModes\Render_Mode_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Render_Mode_Screenshot extends Render_Mode_Base {
	const ENQUEUE_SCRIPTS_PRIORITY = 1000;

	public static function get_name() {
		return 'screenshot';
	}

	public function prepare_render() {
		parent::prepare_render();

		show_admin_bar( false );

		remove_filter(
			'the_content',
			[ \ElementorPro\Modules\ThemeBuilder\Module::instance()->get_locations_manager(), 'builder_wrapper' ],
			9999999
		);

		add_filter( 'template_include', [ $this, 'filter_template' ] );
	}

	public function filter_template() {
		return ELEMENTOR_PATH . 'modules/page-templates/templates/canvas.php';
	}

	public function is_static() {
		return true;
	}

	public function enqueue_scripts() {
		$suffix = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG || defined( 'ELEMENTOR_TESTS' ) && ELEMENTOR_PRO_TESTS ) ? '' : '.min';

		wp_enqueue_script(
			'dom-to-image',
			ELEMENTOR_PRO_ASSETS_URL . "/lib/dom-to-image/js/dom-to-image{$suffix}.js",
			[],
			'2.6.0',
			true
		);

		wp_enqueue_script(
			'html2canvas',
			ELEMENTOR_PRO_ASSETS_URL . "/lib/html2canvas/js/html2canvas{$suffix}.js",
			[],
			'1.0.0-rc.5',
			true
		);

		wp_enqueue_script(
			'elementor-screenshot',
			ELEMENTOR_PRO_ASSETS_URL . "/js/screenshot{$suffix}.js",
			[ 'dom-to-image', 'html2canvas' ],
			ELEMENTOR_PRO_VERSION,
			true
		);

		$config = [
			'selector' => '.elementor-' . $this->post_id,
			'nonce' => wp_create_nonce( Module::SCREENSHOT_PROXY_NONCE_ACTION ),
			'home_url' => home_url(),
			'post_id' => $this->post_id,
		];

		wp_add_inline_script( 'elementor-screenshot', 'var ElementorScreenshotConfig = ' . wp_json_encode( $config ) . ';' );
	}
}
modules/screenshots/module.php000064400000013331150755004300012552 0ustar00<?php
namespace ElementorPro\Modules\Screenshots;

use ElementorPro\Base\Module_Base;
use Elementor\Core\Frontend\Render_Mode_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Module extends Module_Base {
	const SCREENSHOT_PROXY_NONCE_ACTION = 'screenshot_proxy';

	/**
	 * Module name.
	 *
	 * @return string
	 */
	public function get_name() {
		return 'screenshots';
	}

	/**
	 * Creates proxy for css and images,
	 * dom to image libraries cannot load content from another origin.
	 *
	 * @param $url
	 *
	 * @return string
	 */
	public function get_proxy_data( $url ) {
		$response = wp_remote_get( utf8_decode( $url ) );

		if ( is_wp_error( $response ) ) {
			return '';
		}

		$content_type = wp_remote_retrieve_headers( $response )->offsetGet( 'content-type' );

		header( 'content-type: ' . $content_type );

		return wp_remote_retrieve_body( $response );
	}

	/**
	 * Save screenshot and attached it to the post.
	 *
	 * @param $data
	 *
	 * @return bool|string
	 * @throws \Exception
	 */
	public function ajax_save( $data ) {
		if ( empty( $data['screenshot'] ) || empty( $data['post_id'] ) ) {
			return false;
		}

		$screenshot = new Screenshot( $data['post_id'], $data['screenshot'] );

		$screenshot
			->create_dir()
			->upload()
			->remove_old_attachment()
			->create_new_attachment()
			->unmark_as_failed();

		return $screenshot->get_screenshot_url();
	}

	/**
	 * Remove the screenshot image and the attachment data.
	 *
	 * @param $data
	 *
	 * @return bool
	 */
	public function ajax_delete( $data ) {
		if ( empty( $data['post_id'] ) ) {
			return false;
		}

		$screenshot = new Screenshot( $data['post_id'] );

		$screenshot
			->remove_old_attachment()
			->remove_old_post_meta()
			->unmark_as_failed();

		return true;
	}

	/**
	 * Mark screenshot as failed.
	 *
	 * @param $data
	 *
	 * @return bool
	 */
	public function ajax_screenshot_failed( $data ) {
		if ( empty( $data['post_id'] ) ) {
			return false;
		}

		$screenshot = new Screenshot( $data['post_id'] );

		$screenshot->mark_as_failed();

		return true;
	}

	/**
	 * Extends the json of the templates.
	 * sets a screenshot as a thumbnail if exists, and if not will add a url to generate screenshot for
	 * the specific template.
	 *
	 * @param array $template
	 *
	 * @return array
	 */
	public function extend_templates_json_structure( $template ) {

		if ( ! empty( $template['thumbnail'] ) ) {
			return $template;
		}

		$attachment_data = get_post_meta( $template['id'], Screenshot::POST_META_KEY, true );

		if ( isset( $attachment_data['url'] ) ) {
			$template['thumbnail'] = $attachment_data['url'];

			return $template;
		}

		$failed_to_create_screenshot = get_post_meta( $template['id'], Screenshot::FAILED_POST_META_KEY, true );

		// If it failed to create screenshot before, it should not set screenshot_url, and should not try
		// to create another screenshot until the next edit of the template.
		if ( ! $failed_to_create_screenshot ) {
			$template['screenshot_url'] = Render_Mode_Screenshot::get_url( $template['id'] );
		}

		return $template;
	}

	/**
	 * @param \WP_Query $query
	 */
	public function filter_screenshots_from_attachments_query( \WP_Query $query ) {
		global $pagenow, $typenow;

		if ( 'upload.php' !== $pagenow || 'attachment' !== $typenow ) {
			return;
		}

		$query->query_vars['meta_query'] = [
			[
				'key' => Screenshot::IS_SCREENSHOT_POST_META_KEY,
				'compare' => 'NOT EXISTS',
			],
		];
	}

	public function filter_screenshots_from_ajax_attachments_query( $query ) {
		$query['meta_query'][] = [
			'key' => Screenshot::IS_SCREENSHOT_POST_META_KEY,
			'compare' => 'NOT EXISTS',
		];

		return $query;
	}

	/**
	 * Register screenshots action.
	 *
	 * @param \Elementor\Core\Common\Modules\Ajax\Module $ajax_manager
	 */
	public function register_ajax_actions( $ajax_manager ) {
		$ajax_manager->register_ajax_action( 'screenshot_save', [ $this, 'ajax_save' ] );
		$ajax_manager->register_ajax_action( 'screenshot_delete', [ $this, 'ajax_delete' ] );
		$ajax_manager->register_ajax_action( 'screenshot_failed', [ $this, 'ajax_screenshot_failed' ] );
	}

	/**
	 * @param Render_Mode_Manager $manager
	 *
	 * @throws \Exception
	 */
	public function register_render_mode( Render_Mode_Manager $manager ) {
		$manager->register_render_mode( Render_Mode_Screenshot::class );
	}

	/**
	 * Check and validate proxy mode.
	 *
	 * @param array $query_params
	 *
	 * @return bool
	 * @throws \Requests_Exception_HTTP_400
	 * @throws \Requests_Exception_HTTP_403
	 */
	protected function is_screenshot_proxy_mode( array $query_params ) {
		$is_proxy = isset( $query_params['screenshot_proxy'] );

		if ( $is_proxy ) {
			if ( ! wp_verify_nonce( $query_params['nonce'], self::SCREENSHOT_PROXY_NONCE_ACTION ) ) {
				throw new \Requests_Exception_HTTP_403();
			}

			if ( ! $query_params['href'] ) {
				throw new \Requests_Exception_HTTP_400();
			}
		}

		return $is_proxy;
	}

	/**
	 * Module constructor.
	 *
	 * @throws \Requests_Exception_HTTP_400
	 * @throws \Requests_Exception_HTTP_403
	 */
	public function __construct() {
		parent::__construct();

		if ( $this->is_screenshot_proxy_mode( $_GET ) ) { // phpcs:ignore -- Checking nonce inside the method.
			echo $this->get_proxy_data( $_GET['href'] ); // phpcs:ignore -- Nonce was checked on the above method
			die;
		}

		add_action( 'elementor/frontend/render_mode/register', [ $this, 'register_render_mode' ] );
		add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] );
		add_action( 'parse_query', [ $this, 'filter_screenshots_from_attachments_query' ] );
		add_filter( 'ajax_query_attachments_args', [ $this, 'filter_screenshots_from_ajax_attachments_query' ] );
		add_filter( 'elementor-pro/site-editor/data/template', [ $this, 'extend_templates_json_structure' ] );
	}
}
modules/screenshots/screenshot.php000064400000012121150755004300013436 0ustar00<?php
namespace ElementorPro\Modules\Screenshots;

use Elementor\Utils;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Screenshot {

	const POST_META_KEY = '_elementor_screenshot';
	const IS_SCREENSHOT_POST_META_KEY = '_elementor_is_screenshot';
	const FAILED_POST_META_KEY = '_elementor_screenshot_failed';

	const SCREENSHOT_DIR = 'elementor/screenshots';

	/**
	 * @var int
	 */
	protected $post_id;

	/**
	 * @var string
	 */
	protected $base64_image;

	/**
	 * @var string
	 */
	protected $file_name;

	/**
	 * @var array
	 */
	protected $upload_bits;

	/**
	 * Screenshot constructor.
	 *
	 * @param int $post_id
	 * @param string $base64_image
	 */
	public function __construct( $post_id, $base64_image = null ) {
		$this->post_id = $post_id;
		$this->base64_image = $base64_image;
	}

	/**
	 * Creates the directory if needed + add index.html file for security reasons.
	 *
	 * @return $this
	 */
	public function create_dir() {
		$dir = wp_upload_dir()['basedir'] . '/' . self::SCREENSHOT_DIR;
		$html_file = $dir . '/index.html';

		if ( file_exists( $html_file ) ) {
			return $this;
		};

		if ( ! file_exists( $dir ) ) {
			wp_mkdir_p( $dir );
		}

		touch( $html_file );

		return $this;
	}

	/**
	 * Uploads the base64 image it self.
	 *
	 * TODO: Use Upload Manager when ready.
	 *
	 * @return $this
	 * @throws \Exception
	 */
	public function upload() {
		if ( ! $this->base64_image ) {
			throw new \Exception( 'Cannot upload an image with out base64_image' );
		}

		$file_content = substr( $this->base64_image, strlen( 'data:image/png;base64,' ) );

		add_filter( 'wp_unique_filename', [ $this, 'get_file_name' ] );
		add_filter( 'upload_dir', [ $this, 'extend_upload_dirs_array' ] );

		$this->upload_bits = wp_upload_bits(
			$this->get_file_name(),
			null,
			base64_decode( $file_content )
		);

		remove_filter( 'wp_unique_filename', [ $this, 'get_file_name' ] );
		remove_filter( 'upload_dir', [ $this, 'extend_upload_dirs_array' ] );

		return $this;
	}

	/**
	 * Removes the old attachment if there is an old screenshot image.
	 *
	 * @return $this
	 */
	public function remove_old_attachment() {
		$post_meta = get_post_meta( $this->post_id, self::POST_META_KEY, true );

		if ( ! $post_meta ) {
			return $this;
		}

		wp_delete_attachment( $post_meta['id'] );

		return $this;
	}

	/**
	 * Removes the old post meta of the current post.
	 *
	 * @return $this
	 */
	public function remove_old_post_meta() {
		delete_post_meta( $this->post_id, self::POST_META_KEY );

		return $this;
	}

	/**
	 * Creates an attachment to the new screenshot and attach it to the original post
	 * via post_meta.
	 *
	 * @return $this
	 * @throws \Exception
	 */
	public function create_new_attachment() {
		$upload_bits = $this->get_upload_bits();

		$info = wp_check_filetype( $upload_bits['file'] );
		$post_mime_type = null;

		if ( $info ) {
			$post_mime_type = $info['type'];
		}

		$attachment_id = wp_insert_attachment(
			[
				'post_title' => $this->get_file_name(),
				'guid' => $upload_bits['url'],
				'post_mime_type' => $post_mime_type,
				'meta_input' => [
					self::IS_SCREENSHOT_POST_META_KEY => true,
				],
			],
			$upload_bits['file'],
			$this->post_id
		);

		update_post_meta( $this->post_id, self::POST_META_KEY, [
			'id' => $attachment_id,
			'url' => $upload_bits['url'],
		] );

		return $this;
	}

	/**
	 * Mark the post that the screenshot capture was failed.
	 *
	 * @return $this
	 */
	public function mark_as_failed() {
		update_post_meta(
			$this->post_id,
			self::FAILED_POST_META_KEY,
			( new \DateTime() )->format( 'Y-m-d H:i:s' )
		);

		return $this;
	}

	/**
	 * Remove the failed_screenshot post meta.
	 *
	 * @return $this
	 */
	public function unmark_as_failed() {
		delete_post_meta( $this->post_id, self::FAILED_POST_META_KEY );

		return $this;
	}

	/**
	 * Get the file name,
	 * if not exists will generate it.
	 *
	 * @return string
	 */
	public function get_file_name() {
		if ( ! $this->file_name ) {
			$now = ( new \DateTime() )->format( 'Y-m-d-H-i-s' );
			$random_str = Utils::generate_random_string();

			$this->file_name = "Elementor-post-screenshot_{$this->post_id}_{$now}_{$random_str}.png";
		}

		return $this->file_name;
	}

	/**
	 * Extend and change the upload_dirs original method
	 * to update the current screenshot to custom directory.
	 *
	 * @param $upload_dirs
	 *
	 * @return array
	 */
	public function extend_upload_dirs_array( $upload_dirs ) {
		return array_merge( $upload_dirs, [
			'subdir' => $subdir = self::SCREENSHOT_DIR,
			'path' => "{$upload_dirs['basedir']}/{$subdir}",
			'url' => "{$upload_dirs['baseurl']}/{$subdir}",
		] );
	}

	/**
	 * Get wp_upload_bits result.
	 *
	 * This method will be throw an exception if was called before actually upload a screenshot.
	 *
	 * @return array
	 * @throws \Exception
	 */
	protected function get_upload_bits() {
		if ( ! $this->upload_bits ) {
			throw new \Exception( 'File was not uploaded yet' );
		}

		return $this->upload_bits;
	}

	/**
	 * Get the url of the screenshot.
	 *
	 * @return string
	 * @throws \Exception
	 */
	public function get_screenshot_url() {
		return $this->get_upload_bits()['url'];
	}
}
modules/woocommerce/documents/product-post.php000064400000002461150755004300015712 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Documents;

use Elementor\Core\DocumentTypes\Post;
use Elementor\Utils;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Post extends Post {

	public static function get_properties() {
		$properties = parent::get_properties();

		$properties['cpt'] = [
			'product',
		];

		return $properties;
	}

	/**
	 * @since  2.0.0
	 * @access public
	 */
	public function get_name() {
		return 'product-post';
	}

	/**
	 * @since  2.0.0
	 * @access public
	 * @static
	 */
	public static function get_title() {
		return esc_html__( 'Product Post', 'elementor-pro' );
	}

	public static function get_plural_title() {
		return esc_html__( 'Product Posts', 'elementor-pro' );
	}

	protected static function get_editor_panel_categories() {
		$categories = parent::get_editor_panel_categories();

		unset( $categories['theme-elements-single'] );

		$categories = Utils::array_inject(
			$categories,
			'theme-elements',
			[
				'woocommerce-elements-single' => [
					'title' => esc_html__( 'Product', 'elementor-pro' ),
					'active' => false,
				],
			]
		);

		return $categories;
	}

	protected function get_remote_library_config() {
		$config = parent::get_remote_library_config();

		$config['category'] = 'single product';

		return $config;
	}
}
modules/woocommerce/documents/product-archive.php000064400000011421150755004300016342 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Documents;

use ElementorPro\Modules\ThemeBuilder\Documents\Archive;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Archive extends Archive {

	public static function get_properties() {
		$properties = parent::get_properties();

		$properties['location'] = 'archive';
		$properties['condition_type'] = 'product_archive';

		return $properties;
	}

	public static function get_type() {
		return 'product-archive';
	}

	public static function get_title() {
		return esc_html__( 'Products Archive', 'elementor-pro' );
	}

	public static function get_plural_title() {
		return esc_html__( 'Products Archives', 'elementor-pro' );
	}

	protected static function get_site_editor_icon() {
		return 'eicon-products';
	}

	/**
	 * Fix for thumbnail name that is different from editor type.
	 *
	 * @return string
	 */
	protected static function get_site_editor_thumbnail_url() {
		return ELEMENTOR_ASSETS_URL . 'images/app/site-editor/products.svg';
	}

	protected static function get_site_editor_tooltip_data() {
		return [
			'title' => esc_html__( 'What is a Products Archive Template?', 'elementor-pro' ),
			'content' => esc_html__( 'A products archive template allows you to easily design the layout and style of your WooCommerce shop page or other product archive pages - those pages that show a list of products, which may be filtered by terms such as categories, tags, etc.', 'elementor-pro' ),
			'tip' => esc_html__( 'You can create multiple products archive templates, and assign each to different categories of products. This gives you the freedom to customize the appearance for each type of product being shown.', 'elementor-pro' ),
			'docs' => 'https://go.elementor.com/app-theme-builder-products-archive',
			'video_url' => 'https://www.youtube.com/embed/cQLeirgkguA',
		];
	}

	public function enqueue_scripts() {
		// In preview mode it's not a real Woocommerce page - enqueue manually.
		if ( Plugin::elementor()->preview->is_preview_mode( $this->get_main_id() ) ) {
			wp_enqueue_script( 'woocommerce' );
		}
	}

	public function get_container_attributes() {
		$attributes = parent::get_container_attributes();

		$attributes['class'] .= ' product';

		return $attributes;
	}

	public function filter_body_classes( $body_classes ) {
		$body_classes = parent::filter_body_classes( $body_classes );

		if ( get_the_ID() === $this->get_main_id() || Plugin::elementor()->preview->is_preview_mode( $this->get_main_id() ) ) {
			$body_classes[] = 'woocommerce';
		}

		return $body_classes;
	}

	public static function get_preview_as_default() {
		return 'post_type_archive/product';
	}

	public static function get_preview_as_options() {
		$post_type_archives = [];
		$taxonomies = [];
		$post_type = 'product';

		$post_type_object = get_post_type_object( $post_type );

		$post_type_archives[ 'post_type_archive/' . $post_type ] = $post_type_object->label . ' ' . esc_html__( 'Archive', 'elementor-pro' );

		$post_type_taxonomies = get_object_taxonomies( $post_type, 'objects' );

		$post_type_taxonomies = wp_filter_object_list( $post_type_taxonomies, [
			'public' => true,
			'show_in_nav_menus' => true,
		] );

		foreach ( $post_type_taxonomies as $slug => $object ) {
			$taxonomies[ 'taxonomy/' . $slug ] = $object->label . ' ' . esc_html__( 'Archive', 'elementor-pro' );
		}

		$options = [
			'search' => esc_html__( 'Search Results', 'elementor-pro' ),
		];

		$options += $taxonomies + $post_type_archives;

		return [
			'archive' => [
				'label' => esc_html__( 'Archive', 'elementor-pro' ),
				'options' => $options,
			],
		];
	}

	public function __construct( array $data = [] ) {
		parent::__construct( $data );

		add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_scripts' ], 11 );
	}

	protected static function get_editor_panel_categories() {
		$categories = [
			'woocommerce-elements-archive' => [
				'title' => esc_html__( 'Product Archive', 'elementor-pro' ),
			],
			// Move to top as active.
			'woocommerce-elements' => [
				'title' => esc_html__( 'WooCommerce', 'elementor-pro' ),
				'active' => true,
			],
		];

		$categories += parent::get_editor_panel_categories();

		unset( $categories['theme-elements-archive'] );

		return $categories;
	}

	public static function get_editor_panel_config() {
		$config = parent::get_editor_panel_config();
		$config['widgets_settings']['theme-archive-title']['categories'][] = 'woocommerce-elements-archive';

		return $config;
	}

	protected function register_controls() {
		parent::register_controls();

		$this->update_control(
			'preview_type',
			[
				'default' => 'post_type_archive/product',
			]
		);
	}

	protected function get_remote_library_config() {
		$config = parent::get_remote_library_config();

		$config['category'] = 'product archive';

		return $config;
	}
}
modules/woocommerce/documents/product.php000064400000012174150755004300014731 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Documents;

use Elementor\Controls_Manager;
use ElementorPro\Modules\ThemeBuilder\Documents\Single_Base;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product extends Single_Base {

	public static function get_properties() {
		$properties = parent::get_properties();

		$properties['location'] = 'single';
		$properties['condition_type'] = 'product';

		return $properties;
	}

	public static function get_type() {
		return 'product';
	}

	public static function get_title() {
		return esc_html__( 'Single Product', 'elementor-pro' );
	}

	public static function get_plural_title() {
		return esc_html__( 'Single Products', 'elementor-pro' );
	}

	protected static function get_site_editor_icon() {
		return 'eicon-single-product';
	}

	protected static function get_site_editor_tooltip_data() {
		return [
			'title' => esc_html__( 'What is a Single Product Template?', 'elementor-pro' ),
			'content' => esc_html__( 'A single product template allows you to easily design the layout and style of WooCommerce single product pages, and apply that template to various conditions that you assign.', 'elementor-pro' ),
			'tip' => esc_html__( 'You can create multiple single product templates, and assign each to different types of products, enabling a custom design for each group of similar products.', 'elementor-pro' ),
			'docs' => 'https://go.elementor.com/app-theme-builder-product',
			'video_url' => 'https://www.youtube.com/embed/PjhoB1RWkBM',
		];
	}

	public static function get_editor_panel_config() {
		$config = parent::get_editor_panel_config();
		$config['widgets_settings']['woocommerce-product-content'] = [
			'show_in_panel' => true,
		];

		return $config;
	}

	public function enqueue_scripts() {
		// In preview mode it's not a real Product page - enqueue manually.
		if ( Plugin::elementor()->preview->is_preview_mode( $this->get_main_id() ) ) {
			global $product;

			if ( is_singular( 'product' ) ) {
				$product = wc_get_product();
			}

			if ( current_theme_supports( 'wc-product-gallery-zoom' ) ) {
				wp_enqueue_script( 'zoom' );
			}
			if ( current_theme_supports( 'wc-product-gallery-slider' ) ) {
				wp_enqueue_script( 'flexslider' );
			}
			if ( current_theme_supports( 'wc-product-gallery-lightbox' ) ) {
				wp_enqueue_script( 'photoswipe-ui-default' );
				wp_enqueue_style( 'photoswipe-default-skin' );
				add_action( 'wp_footer', 'woocommerce_photoswipe' );
			}
			wp_enqueue_script( 'wc-single-product' );

			wp_enqueue_style( 'photoswipe' );
			wp_enqueue_style( 'photoswipe-default-skin' );
			wp_enqueue_style( 'photoswipe-default-skin' );
			wp_enqueue_style( 'woocommerce_prettyPhoto_css' );
		}
	}

	public function get_depended_widget() {
		return Plugin::elementor()->widgets_manager->get_widget_types( 'woocommerce-product-data-tabs' );
	}

	public function get_container_attributes() {
		$attributes = parent::get_container_attributes();

		$attributes['class'] .= ' product';

		return $attributes;
	}

	public function filter_body_classes( $body_classes ) {
		$body_classes = parent::filter_body_classes( $body_classes );

		if ( get_the_ID() === $this->get_main_id() || Plugin::elementor()->preview->is_preview_mode( $this->get_main_id() ) ) {
			$body_classes[] = 'woocommerce';
		}

		return $body_classes;
	}

	public function before_get_content() {
		parent::before_get_content();

		global $product;
		if ( ! is_object( $product ) ) {
			$product = wc_get_product( get_the_ID() );
		}

		do_action( 'woocommerce_before_single_product' );
	}

	public function after_get_content() {
		parent::after_get_content();

		do_action( 'woocommerce_after_single_product' );
	}

	public function print_content() {
		if ( post_password_required() ) {
			// PHPCS - It's a safe WP template function
			echo get_the_password_form(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			return;
		}

		parent::print_content();
	}

	public function __construct( array $data = [] ) {
		parent::__construct( $data );

		add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_scripts' ], 11 );
	}

	protected static function get_editor_panel_categories() {
		$categories = [
			'woocommerce-elements-single' => [
				'title' => esc_html__( 'Product', 'elementor-pro' ),

			],
			// Move to top as active.
			'woocommerce-elements' => [
				'title' => esc_html__( 'WooCommerce', 'elementor-pro' ),
				'active' => true,
			],
		];

		$categories += parent::get_editor_panel_categories();

		unset( $categories['theme-elements-single'] );

		return $categories;
	}

	protected function register_controls() {
		parent::register_controls();

		$this->update_control(
			'preview_type',
			[
				'type' => Controls_Manager::HIDDEN,
				'default' => 'single/product',
			]
		);

		$latest_posts = get_posts( [
			'posts_per_page' => 1,
			'post_type' => 'product',
		] );

		if ( ! empty( $latest_posts ) ) {
			$this->update_control(
				'preview_id',
				[
					'default' => $latest_posts[0]->ID,
				]
			);
		}
	}

	protected function get_remote_library_config() {
		$config = parent::get_remote_library_config();

		$config['category'] = 'single product';

		return $config;
	}
}
modules/woocommerce/widgets/categories.php000064400000023460150755004300015043 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Typography;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Categories extends Base_Widget {

	protected $_has_template_content = false;

	public function get_name() {
		return 'wc-categories';
	}

	public function get_title() {
		return esc_html__( 'Product Categories', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-product-categories';
	}

	public function get_keywords() {
		return [ 'woocommerce-elements', 'shop', 'store', 'categories', 'product' ];
	}

	public function get_categories() {
		return [
			'woocommerce-elements',
		];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_layout',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$this->add_columns_responsive_control();

		$this->add_control(
			'number',
			[
				'label' => esc_html__( 'Categories Count', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => '4',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_filter',
			[
				'label' => esc_html__( 'Query', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$this->add_control(
			'source',
			[
				'label' => esc_html__( 'Source', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'Show All', 'elementor-pro' ),
					'by_id' => esc_html__( 'Manual Selection', 'elementor-pro' ),
					'by_parent' => esc_html__( 'By Parent', 'elementor-pro' ),
					'current_subcategories' => esc_html__( 'Current Subcategories', 'elementor-pro' ),
				],
				'label_block' => true,
			]
		);

		$categories = get_terms( 'product_cat' );

		$options = [];
		foreach ( $categories as $category ) {
			$options[ $category->term_id ] = $category->name;
		}

		$this->add_control(
			'categories',
			[
				'label' => esc_html__( 'Categories', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'options' => $options,
				'default' => [],
				'label_block' => true,
				'multiple' => true,
				'condition' => [
					'source' => 'by_id',
				],
			]
		);

		$parent_options = [ '0' => esc_html__( 'Only Top Level', 'elementor-pro' ) ] + $options;
		$this->add_control(
			'parent',
			[
				'label' => esc_html__( 'Parent', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '0',
				'options' => $parent_options,
				'condition' => [
					'source' => 'by_parent',
				],
			]
		);

		$this->add_control(
			'hide_empty',
			[
				'label' => esc_html__( 'Hide Empty', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'label_on' => 'Hide',
				'label_off' => 'Show',
			]
		);

		$this->add_control(
			'orderby',
			[
				'label' => esc_html__( 'Order By', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'name',
				'options' => [
					'name' => esc_html__( 'Name', 'elementor-pro' ),
					'slug' => esc_html__( 'Slug', 'elementor-pro' ),
					'description' => esc_html__( 'Description', 'elementor-pro' ),
					'count' => esc_html__( 'Count', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'order',
			[
				'label' => esc_html__( 'Order', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'desc',
				'options' => [
					'asc' => esc_html__( 'ASC', 'elementor-pro' ),
					'desc' => esc_html__( 'DESC', 'elementor-pro' ),
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_products_style',
			[
				'label' => esc_html__( 'Products', 'elementor-pro' ),
				'tab'   => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'wc_style_warning',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'The style of this widget is often affected by your theme and plugins. If you experience any such issue, try to switch to a basic theme and deactivate related plugins.', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$this->add_control(
			'products_class',
			[
				'type' => Controls_Manager::HIDDEN,
				'default' => 'wc-products',
				'prefix_class' => 'elementor-products-grid elementor-',
			]
		);

		$this->add_control(
			'column_gap',
			[
				'label'     => esc_html__( 'Columns Gap', 'elementor-pro' ),
				'type'      => Controls_Manager::SLIDER,
				'default'   => [
					'size' => 20,
				],
				'range'     => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products  ul.products' => 'grid-column-gap: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'row_gap',
			[
				'label'     => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type'      => Controls_Manager::SLIDER,
				'default'   => [
					'size' => 40,
				],
				'range'     => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products  ul.products' => 'grid-row-gap: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'align',
			[
				'label'     => esc_html__( 'Alignment', 'elementor-pro' ),
				'type'      => Controls_Manager::CHOOSE,
				'options'   => [
					'left'   => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon'  => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon'  => 'eicon-text-align-center',
					],
					'right'  => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon'  => 'eicon-text-align-right',
					],
				],
				'prefix_class' => 'elementor-product-loop-item--align-',
				'selectors' => [
					'{{WRAPPER}} .product' => 'text-align: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'heading_image_style',
			[
				'label'     => esc_html__( 'Image', 'elementor-pro' ),
				'type'      => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name'     => 'image_border',
				'selector' => '{{WRAPPER}} a > img',
			]
		);

		$this->add_responsive_control(
			'image_border_radius',
			[
				'label'      => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type'       => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors'  => [
					'{{WRAPPER}} a > img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'image_spacing',
			[
				'label'      => esc_html__( 'Spacing', 'elementor-pro' ),
				'type'       => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors'  => [
					'{{WRAPPER}} a > img' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'heading_title_style',
			[
				'label'     => esc_html__( 'Title', 'elementor-pro' ),
				'type'      => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'title_color',
			[
				'label'     => esc_html__( 'Color', 'elementor-pro' ),
				'type'      => Controls_Manager::COLOR,
				'global'    => [
					'default' => Global_Colors::COLOR_PRIMARY,
				],
				'selectors' => [
					'{{WRAPPER}} .woocommerce .woocommerce-loop-category__title' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name'     => 'title_typography',
				'global'    => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .woocommerce .woocommerce-loop-category__title',
			]
		);

		$this->add_control(
			'heading_count_style',
			[
				'label'     => esc_html__( 'Count', 'elementor-pro' ),
				'type'      => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'count_color',
			[
				'label'     => esc_html__( 'Color', 'elementor-pro' ),
				'type'      => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-loop-category__title .count' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name'     => 'count_typography',
				'global'    => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .woocommerce-loop-category__title .count',
			]
		);

		$this->end_controls_section();
	}

	private function get_shortcode() {
		$settings = $this->get_settings();

		$attributes = [
			'number' => $settings['number'],
			'columns' => $settings['columns'],
			'hide_empty' => ( 'yes' === $settings['hide_empty'] ) ? 1 : 0,
			'orderby' => $settings['orderby'],
			'order' => $settings['order'],
		];

		if ( 'by_id' === $settings['source'] ) {
			$attributes['ids'] = implode( ',', $settings['categories'] );
		} elseif ( 'by_parent' === $settings['source'] ) {
			$attributes['parent'] = $settings['parent'];
		} elseif ( 'current_subcategories' === $settings['source'] ) {
			$attributes['parent'] = get_queried_object_id();
		}

		$this->add_render_attribute( 'shortcode', $attributes );

		$shortcode = sprintf( '[product_categories %s]', $this->get_render_attribute_string( 'shortcode' ) );

		return $shortcode;
	}

	public function render() {
		$product_categories_html = do_shortcode( $this->get_shortcode() );

		if ( $product_categories_html ) {
			$product_categories_html = str_replace( '<ul class="products', '<ul class="products elementor-grid', $product_categories_html );

			echo wp_kses_post( $product_categories_html );
		}
	}

	public function render_plain_content() {
		echo wp_kses_post( $this->get_shortcode() );
	}
}
modules/woocommerce/widgets/product-stock.php000064400000004002150755004300015506 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Typography;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Stock extends Base_Widget {

	public function get_name() {
		return 'woocommerce-product-stock';
	}

	public function get_title() {
		return esc_html__( 'Product Stock', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-product-stock';
	}

	public function get_keywords() {
		return [ 'woocommerce', 'shop', 'store', 'stock', 'quantity', 'product' ];
	}

	protected function register_controls() {

		$this->start_controls_section(
			'section_product_stock_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'wc_style_warning',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'The style of this widget is often affected by your theme and plugins. If you experience any such issue, try to switch to a basic theme and deactivate related plugins.', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$this->add_control(
			'text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .stock' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'text_typography',
				'label' => esc_html__( 'Typography', 'elementor-pro' ),
				'selector' => '.woocommerce {{WRAPPER}} .stock',
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		global $product;
		$product = wc_get_product();

		if ( empty( $product ) ) {
			return;
		}

		// PHPCS - the method wc_get_stock_html is safe.
		echo wc_get_stock_html( $product ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/product-price.php000064400000010300150755004300015463 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Price extends Base_Widget {

	public function get_name() {
		return 'woocommerce-product-price';
	}

	public function get_title() {
		return esc_html__( 'Product Price', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-product-price';
	}

	public function get_keywords() {
		return [ 'woocommerce', 'shop', 'store', 'price', 'product', 'sale' ];
	}

	protected function register_controls() {

		$this->start_controls_section(
			'section_price_style',
			[
				'label' => esc_html__( 'Price', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'wc_style_warning',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'The style of this widget is often affected by your theme and plugins. If you experience any such issue, try to switch to a basic theme and deactivate related plugins.', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$this->add_responsive_control(
			'text_align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => 'text-align: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'price_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_PRIMARY,
				],
				'selectors' => [
					'.woocommerce {{WRAPPER}} .price' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '.woocommerce {{WRAPPER}} .price',
			]
		);

		$this->add_control(
			'sale_heading',
			[
				'label' => esc_html__( 'Sale Price', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'sale_price_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .price ins' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'sale_price_typography',
				'selector' => '.woocommerce {{WRAPPER}} .price ins',
			]
		);

		$this->add_control(
			'price_block',
			[
				'label' => esc_html__( 'Stacked', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'return_value' => 'yes',
				'prefix_class' => 'elementor-product-price-block-',
			]
		);

		$this->add_responsive_control(
			'sale_price_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'range' => [
					'em' => [
						'min' => 0,
						'max' => 5,
						'step' => 0.1,
					],
				],
				'selectors' => [
					'body:not(.rtl) {{WRAPPER}}:not(.elementor-product-price-block-yes) del' => 'margin-right: {{SIZE}}{{UNIT}}',
					'body.rtl {{WRAPPER}}:not(.elementor-product-price-block-yes) del' => 'margin-left: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}}.elementor-product-price-block-yes del' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		global $product;
		$product = wc_get_product();

		if ( empty( $product ) ) {
			return;
		}

		wc_get_template( '/single-product/price.php' );
	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/elements.php000064400000007557150755004300014543 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use ElementorPro\Modules\QueryControl\Module as QueryModule;
use ElementorPro\Modules\Woocommerce\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Elements extends Base_Widget {

	public function get_name() {
		return 'wc-elements';
	}

	public function get_title() {
		return esc_html__( 'WooCommerce Pages', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-product-pages';
	}

	public function on_export( $element ) {
		unset( $element['settings']['product_id'] );

		return $element;
	}

	public function get_keywords() {
		return [
			'woocommerce',
			'shop',
			'store',
			'cart',
			'checkout',
			'account',
			'order tracking',
			'shortcode',
			'product',
		];
	}

	public function get_categories() {
		return [
			'woocommerce-elements',
		];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_product',
			[
				'label' => esc_html__( 'Element', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'element',
			[
				'label' => esc_html__( 'Page', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => '— ' . esc_html__( 'Select', 'elementor-pro' ) . ' —',
					'woocommerce_cart' => esc_html__( 'Cart Page', 'elementor-pro' ),
					'product_page' => esc_html__( 'Single Product Page', 'elementor-pro' ),
					'woocommerce_checkout' => esc_html__( 'Checkout Page', 'elementor-pro' ),
					'woocommerce_order_tracking' => esc_html__( 'Order Tracking Form', 'elementor-pro' ),
					'woocommerce_my_account' => esc_html__( 'My Account', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'product_id',
			[
				'label' => esc_html__( 'Product', 'elementor-pro' ),
				'type' => QueryModule::QUERY_CONTROL_ID,
				'options' => [],
				'label_block' => true,
				'autocomplete' => [
					'object' => QueryModule::QUERY_OBJECT_POST,
					'query' => [
						'post_type' => [ 'product' ],
					],
				],
				'condition' => [
					'element' => [ 'product_page' ],
				],
			]
		);

		$this->end_controls_section();
	}

	private function get_shortcode() {
		$settings = $this->get_settings();

		switch ( $settings['element'] ) {
			case '':
				return '';
				break;

			case 'product_page':
				if ( ! empty( $settings['product_id'] ) ) {
					$product_data = get_post( $settings['product_id'] );
					$product = ! empty( $product_data ) && in_array( $product_data->post_type, [ 'product', 'product_variation' ] ) ? wc_setup_product_data( $product_data ) : false;
				}

				if ( empty( $product ) && current_user_can( 'manage_options' ) ) {
					return esc_html__( 'Please set a valid product', 'elementor-pro' );
				}

				$this->add_render_attribute( 'shortcode', 'id', $settings['product_id'] );
				break;

			case 'woocommerce_cart':
			case 'woocommerce_checkout':
			case 'woocommerce_order_tracking':
				break;
		}

		$shortcode = sprintf(
			'[%s %s]',
			esc_html( $settings['element'] ),
			$this->get_render_attribute_string( 'shortcode' )
		);

		return $shortcode;
	}

	protected function render() {
		$shortcode = $this->get_shortcode();

		if ( empty( $shortcode ) ) {
			return;
		}

		Module::instance()->add_products_post_class_filter();

		$html = do_shortcode( $shortcode );

		if ( 'woocommerce_checkout' === $this->get_settings( 'element' ) && '<div class="woocommerce"></div>' === $html ) {
			$html = '<div class="woocommerce">' . esc_html__( 'Your cart is currently empty.', 'elementor-pro' ) . '</div>';
		}

		// PHPCS - Woocommerce output
		echo $html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped

		Module::instance()->remove_products_post_class_filter();
	}

	public function render_plain_content() {
		// PHPCS - Already escaped in get_shortcode
		echo $this->get_shortcode(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}
}
modules/woocommerce/widgets/products.php000064400000013203150755004300014553 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use ElementorPro\Modules\QueryControl\Controls\Group_Control_Query;
use ElementorPro\Modules\Woocommerce\Classes\Products_Renderer;
use ElementorPro\Modules\Woocommerce\Classes\Current_Query_Renderer;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Products extends Products_Base {

	public function get_name() {
		return 'woocommerce-products';
	}

	public function get_title() {
		return esc_html__( 'Products', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-products';
	}

	public function get_keywords() {
		return [ 'woocommerce', 'shop', 'store', 'product', 'archive' ];
	}

	public function get_categories() {
		return [
			'woocommerce-elements',
		];
	}

	protected function register_query_controls() {
		$this->start_controls_section(
			'section_query',
			[
				'label' => esc_html__( 'Query', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$this->add_group_control(
			Group_Control_Query::get_type(),
			[
				'name' => Products_Renderer::QUERY_CONTROL_NAME,
				'post_type' => 'product',
				'presets' => [ 'include', 'exclude', 'order' ],
				'fields_options' => [
					'post_type' => [
						'default' => 'product',
						'options' => [
							'current_query' => esc_html__( 'Current Query', 'elementor-pro' ),
							'product' => esc_html__( 'Latest Products', 'elementor-pro' ),
							'sale' => esc_html__( 'Sale', 'elementor-pro' ),
							'featured' => esc_html__( 'Featured', 'elementor-pro' ),
							'by_id' => _x( 'Manual Selection', 'Posts Query Control', 'elementor-pro' ),
						],
					],
					'orderby' => [
						'default' => 'date',
						'options' => [
							'date' => esc_html__( 'Date', 'elementor-pro' ),
							'title' => esc_html__( 'Title', 'elementor-pro' ),
							'price' => esc_html__( 'Price', 'elementor-pro' ),
							'popularity' => esc_html__( 'Popularity', 'elementor-pro' ),
							'rating' => esc_html__( 'Rating', 'elementor-pro' ),
							'rand' => esc_html__( 'Random', 'elementor-pro' ),
							'menu_order' => esc_html__( 'Menu Order', 'elementor-pro' ),
						],
					],
					'exclude' => [
						'options' => [
							'current_post' => esc_html__( 'Current Post', 'elementor-pro' ),
							'manual_selection' => esc_html__( 'Manual Selection', 'elementor-pro' ),
							'terms' => esc_html__( 'Term', 'elementor-pro' ),
						],
					],
					'include' => [
						'options' => [
							'terms' => esc_html__( 'Term', 'elementor-pro' ),
						],
					],
				],
				'exclude' => [
					'posts_per_page',
					'exclude_authors',
					'authors',
					'offset',
					'related_fallback',
					'related_ids',
					'query_id',
					'avoid_duplicates',
					'ignore_sticky_posts',
				],
			]
		);

		$this->end_controls_section();
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_content',
			[
				'label' => esc_html__( 'Content', 'elementor-pro' ),
			]
		);

		$this->add_columns_responsive_control();

		$this->add_control(
			'rows',
			[
				'label' => esc_html__( 'Rows', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => Products_Renderer::DEFAULT_COLUMNS_AND_ROWS,
				'render_type' => 'template',
				'range' => [
					'px' => [
						'max' => 20,
					],
				],
			]
		);

		$this->add_control(
			'paginate',
			[
				'label' => esc_html__( 'Pagination', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
			]
		);

		$this->add_control(
			'allow_order',
			[
				'label' => esc_html__( 'Allow Order', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'condition' => [
					'paginate' => 'yes',
				],
			]
		);

		$this->add_control(
			'wc_notice_frontpage',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'Ordering is not available if this widget is placed in your front page. Visible on frontend only.', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
				'condition' => [
					'paginate' => 'yes',
					'allow_order' => 'yes',
				],
			]
		);

		$this->add_control(
			'show_result_count',
			[
				'label' => esc_html__( 'Show Result Count', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'condition' => [
					'paginate' => 'yes',
				],
			]
		);

		$this->end_controls_section();

		$this->register_query_controls();

		parent::register_controls();
	}

	protected function get_shortcode_object( $settings ) {
		if ( 'current_query' === $settings[ Products_Renderer::QUERY_CONTROL_NAME . '_post_type' ] ) {
			$type = 'current_query';
			return new Current_Query_Renderer( $settings, $type );
		}
		$type = 'products';
		return new Products_Renderer( $settings, $type );
	}

	protected function render() {

		if ( WC()->session ) {
			wc_print_notices();
		}

		// For Products_Renderer.
		if ( ! isset( $GLOBALS['post'] ) ) {
			$GLOBALS['post'] = null; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
		}

		$settings = $this->get_settings();

		$shortcode = $this->get_shortcode_object( $settings );

		$content = $shortcode->get_content();

		if ( $content ) {
			$content = str_replace( '<ul class="products', '<ul class="products elementor-grid', $content );

			// PHPCS - Woocommerce output
			echo $content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		} elseif ( $this->get_settings( 'nothing_found_message' ) ) {
			echo '<div class="elementor-nothing-found elementor-products-nothing-found">' . esc_html( $this->get_settings( 'nothing_found_message' ) ) . '</div>';
		}
	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/product-meta.php000064400000030216150755004300015317 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Group_Control_Typography;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Meta extends Base_Widget {

	public function get_name() {
		return 'woocommerce-product-meta';
	}

	public function get_title() {
		return esc_html__( 'Product Meta', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-product-meta';
	}

	public function get_keywords() {
		return [ 'woocommerce', 'shop', 'store', 'meta', 'data', 'product' ];
	}

	protected function register_controls() {

		$this->start_controls_section(
			'section_product_meta_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'wc_style_warning',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'The style of this widget is often affected by your theme and plugins. If you experience any such issue, try to switch to a basic theme and deactivate related plugins.', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$this->add_control(
			'view',
			[
				'label' => esc_html__( 'View', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'inline',
				'options' => [
					'table' => esc_html__( 'Table', 'elementor-pro' ),
					'stacked' => esc_html__( 'Stacked', 'elementor-pro' ),
					'inline' => esc_html__( 'Inline', 'elementor-pro' ),
				],
				'prefix_class' => 'elementor-woo-meta--view-',
			]
		);

		$this->add_responsive_control(
			'space_between',
			[
				'label' => esc_html__( 'Space Between', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}}:not(.elementor-woo-meta--view-inline) .product_meta .detail-container:not(:last-child)' => 'padding-bottom: calc({{SIZE}}{{UNIT}}/2)',
					'{{WRAPPER}}:not(.elementor-woo-meta--view-inline) .product_meta .detail-container:not(:first-child)' => 'margin-top: calc({{SIZE}}{{UNIT}}/2)',
					'{{WRAPPER}}.elementor-woo-meta--view-inline .product_meta .detail-container' => 'margin-right: calc({{SIZE}}{{UNIT}}/2); margin-left: calc({{SIZE}}{{UNIT}}/2)',
					'{{WRAPPER}}.elementor-woo-meta--view-inline .product_meta' => 'margin-right: calc(-{{SIZE}}{{UNIT}}/2); margin-left: calc(-{{SIZE}}{{UNIT}}/2)',
					'body:not(.rtl) {{WRAPPER}}.elementor-woo-meta--view-inline .detail-container:after' => 'right: calc( (-{{SIZE}}{{UNIT}}/2) + (-{{divider_weight.SIZE}}px/2) )',
					'body:not.rtl {{WRAPPER}}.elementor-woo-meta--view-inline .detail-container:after' => 'left: calc( (-{{SIZE}}{{UNIT}}/2) - ({{divider_weight.SIZE}}px/2) )',
				],
			]
		);

		$this->add_control(
			'divider',
			[
				'label' => esc_html__( 'Divider', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'selectors' => [
					'{{WRAPPER}} .product_meta .detail-container:not(:last-child):after' => 'content: ""',
				],
				'return_value' => 'yes',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'divider_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'solid' => esc_html__( 'Solid', 'elementor-pro' ),
					'double' => esc_html__( 'Double', 'elementor-pro' ),
					'dotted' => esc_html__( 'Dotted', 'elementor-pro' ),
					'dashed' => esc_html__( 'Dashed', 'elementor-pro' ),
				],
				'default' => 'solid',
				'condition' => [
					'divider' => 'yes',
				],
				'selectors' => [
					'{{WRAPPER}}:not(.elementor-woo-meta--view-inline) .product_meta .detail-container:not(:last-child):after' => 'border-top-style: {{VALUE}}',
					'{{WRAPPER}}.elementor-woo-meta--view-inline .product_meta .detail-container:not(:last-child):after' => 'border-left-style: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'divider_weight',
			[
				'label' => esc_html__( 'Weight', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 1,
				],
				'range' => [
					'px' => [
						'min' => 1,
						'max' => 20,
					],
				],
				'condition' => [
					'divider' => 'yes',
				],
				'selectors' => [
					'{{WRAPPER}}:not(.elementor-woo-meta--view-inline) .product_meta .detail-container:not(:last-child):after' => 'border-top-width: {{SIZE}}{{UNIT}}; margin-bottom: calc(-{{SIZE}}{{UNIT}}/2)',
					'{{WRAPPER}}.elementor-woo-meta--view-inline .product_meta .detail-container:not(:last-child):after' => 'border-left-width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'divider_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ '%', 'px' ],
				'default' => [
					'unit' => '%',
				],
				'condition' => [
					'divider' => 'yes',
					'view!' => 'inline',
				],
				'selectors' => [
					'{{WRAPPER}} .product_meta .detail-container:not(:last-child):after' => 'width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'divider_height',
			[
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ '%', 'px' ],
				'default' => [
					'unit' => '%',
				],
				'range' => [
					'px' => [
						'min' => 1,
						'max' => 100,
					],
					'%' => [
						'min' => 1,
						'max' => 100,
					],
				],
				'condition' => [
					'divider' => 'yes',
					'view' => 'inline',
				],
				'selectors' => [
					'{{WRAPPER}} .product_meta .detail-container:not(:last-child):after' => 'height: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'divider_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#ddd',
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'condition' => [
					'divider' => 'yes',
				],
				'selectors' => [
					'{{WRAPPER}} .product_meta .detail-container:not(:last-child):after' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'heading_text_style',
			[
				'label' => esc_html__( 'Text', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'text_typography',
				'selector' => '{{WRAPPER}}',
			]
		);

		$this->add_control(
			'text_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'heading_link_style',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'link_typography',
				'selector' => '{{WRAPPER}} a',
			]
		);

		$this->add_control(
			'link_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} a' => 'color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_product_meta_captions',
			[
				'label' => esc_html__( 'Captions', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'heading_category_caption',
			[
				'label' => esc_html__( 'Category', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'category_caption_single',
			[
				'label' => esc_html__( 'Singular', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => esc_html__( 'Category', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'category_caption_plural',
			[
				'label' => esc_html__( 'Plural', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => esc_html__( 'Categories', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'heading_tag_caption',
			[
				'label' => esc_html__( 'Tag', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'tag_caption_single',
			[
				'label' => esc_html__( 'Singular', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => esc_html__( 'Tag', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'tag_caption_plural',
			[
				'label' => esc_html__( 'Plural', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => esc_html__( 'Tags', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'heading_sku_caption',
			[
				'label' => esc_html__( 'SKU', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'sku_caption',
			[
				'label' => esc_html__( 'SKU', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => esc_html__( 'SKU', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'sku_missing_caption',
			[
				'label' => esc_html__( 'Missing', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => esc_html__( 'N/A', 'elementor-pro' ),
			]
		);

		$this->end_controls_section();
	}

	private function get_plural_or_single( $single, $plural, $count ) {
		return 1 === $count ? $single : $plural;
	}

	protected function render() {
		global $product;

		$product = wc_get_product();

		if ( empty( $product ) ) {
			return;
		}

		$sku = esc_html( $product->get_sku() );

		$settings = $this->get_settings_for_display();
		$sku_caption = ! empty( $settings['sku_caption'] ) ? esc_html( $settings['sku_caption'] ) : esc_html__( 'SKU', 'elementor-pro' );
		$sku_missing = ! empty( $settings['sku_missing_caption'] ) ? esc_html( $settings['sku_missing_caption'] ) : esc_html__( 'N/A', 'elementor-pro' );
		$category_caption_single = ! empty( $settings['category_caption_single'] ) ? $settings['category_caption_single'] : esc_html__( 'Category', 'elementor-pro' );
		$category_caption_plural = ! empty( $settings['category_caption_plural'] ) ? $settings['category_caption_plural'] : esc_html__( 'Categories', 'elementor-pro' );
		$tag_caption_single = ! empty( $settings['tag_caption_single'] ) ? $settings['tag_caption_single'] : esc_html__( 'Tag', 'elementor-pro' );
		$tag_caption_plural = ! empty( $settings['tag_caption_plural'] ) ? $settings['tag_caption_plural'] : esc_html__( 'Tags', 'elementor-pro' );
		?>
		<div class="product_meta">

			<?php do_action( 'woocommerce_product_meta_start' ); ?>

			<?php if ( wc_product_sku_enabled() && ( $sku || $product->is_type( 'variable' ) ) ) : ?>
				<span class="sku_wrapper detail-container">
					<span class="detail-label">
						<?php // PHPCS - the $sku_caption variable is safe. ?>
						<?php echo $sku_caption; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
					</span>
					<span class="sku">
						<?php // PHPCS - the $sku && $sku_missing variables are safe. ?>
						<?php echo $sku ? $sku : $sku_missing; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
					</span>
				</span>
			<?php endif; ?>

			<?php if ( count( $product->get_category_ids() ) ) : ?>
				<span class="posted_in detail-container"><span class="detail-label"><?php echo esc_html( $this->get_plural_or_single( $category_caption_single, $category_caption_plural, count( $product->get_category_ids() ) ) ); ?></span> <span class="detail-content"><?php echo get_the_term_list( $product->get_id(), 'product_cat', '', ', ' ); ?></span></span>
			<?php endif; ?>

			<?php if ( count( $product->get_tag_ids() ) ) : ?>
				<span class="tagged_as detail-container"><span class="detail-label"><?php echo esc_html( $this->get_plural_or_single( $tag_caption_single, $tag_caption_plural, count( $product->get_tag_ids() ) ) ); ?></span> <span class="detail-content"><?php echo get_the_term_list( $product->get_id(), 'product_tag', '', ', ' ); ?></span></span>
			<?php endif; ?>

			<?php do_action( 'woocommerce_product_meta_end' ); ?>

		</div>
		<?php
	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/archive-products-deprecated.php000064400000006710150755004300020275 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Class Archive_Products_Deprecated
 * @deprecated 2.4.1 use Archive_Products
 */
class Archive_Products_Deprecated extends Products {

	public function get_name() {
		return 'woocommerce-archive-products';
	}

	public function get_title() {
		return esc_html__( 'Archive Products (deprecated)', 'elementor-pro' );
	}

	public function get_categories() {
		return [
			'woocommerce-elements-archive',
		];
	}

	/* Deprecated Widget */
	public function show_in_panel() {
		return false;
	}

	protected function register_controls() {
		$this->deprecated_notice( Plugin::get_title(), '2.5.0', '', esc_html__( 'Archive Products', 'elementor-pro' ) );

		parent::register_controls();

		$this->start_injection( [
			'at' => 'before',
			'of' => 'columns',
		] );

		$this->add_control(
			'wc_notice_do_not_use_customizer',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'Note that these layout settings will override settings made in Appearance > Customize', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$this->end_injection();

		$this->update_control(
			'rows',
			[
				'default' => 4,
			],
			[
				'recursive' => true,
			]
		);

		$this->update_control(
			'paginate',
			[
				'default' => 'yes',
			]
		);

		$this->update_control(
			'section_query',
			[
				'type' => 'hidden',
			]
		);

		$this->update_control(
			'query_post_type',
			[
				'default' => 'current_query',
			]
		);

		$this->start_controls_section(
			'section_advanced',
			[
				'label' => esc_html__( 'Advanced', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'nothing_found_message',
			[
				'label' => esc_html__( 'Nothing Found Message', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'default' => esc_html__( 'It seems we can\'t find what you\'re looking for.', 'elementor-pro' ),
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_nothing_found_style',
			[
				'tab' => Controls_Manager::TAB_STYLE,
				'label' => esc_html__( 'Nothing Found Message', 'elementor-pro' ),
				'condition' => [
					'nothing_found_message!' => '',
				],
			]
		);

		$this->add_control(
			'nothing_found_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-products-nothing-found' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'nothing_found_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
				'selector' => '{{WRAPPER}} .elementor-products-nothing-found',
			]
		);

		$this->end_controls_section();
	}

	public function render_no_results() {
		echo '<div class="elementor-nothing-found elementor-products-nothing-found">' . esc_html( $this->get_settings( 'nothing_found_message' ) ) . '</div>';
	}

	protected function render() {
		add_action( 'woocommerce_shortcode_products_loop_no_results', [ $this, 'render_no_results' ] );

		parent::render();
	}
}
modules/woocommerce/widgets/single-elements.php000064400000007317150755004300016014 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Single_Elements extends Base_Widget {

	public function get_name() {
		return 'wc-single-elements';
	}

	public function get_title() {
		return esc_html__( 'Woo - Single Elements', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-woocommerce';
	}

	/* Deprecated Widget */
	public function show_in_panel() {
		return false;
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_product',
			[
				'label' => esc_html__( 'Element', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'element',
			[
				'label' => esc_html__( 'Element', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => '— ' . esc_html__( 'Select', 'elementor-pro' ) . ' —',
					'woocommerce_output_product_data_tabs' => esc_html__( 'Data Tabs', 'elementor-pro' ),
					'woocommerce_template_single_title' => esc_html__( 'Title', 'elementor-pro' ),
					'woocommerce_template_single_rating' => esc_html__( 'Rating', 'elementor-pro' ),
					'woocommerce_template_single_price' => esc_html__( 'Price', 'elementor-pro' ),
					'woocommerce_template_single_excerpt' => esc_html__( 'Excerpt', 'elementor-pro' ),
					'woocommerce_template_single_meta' => esc_html__( 'Meta', 'elementor-pro' ),
					'woocommerce_template_single_sharing' => esc_html__( 'Sharing', 'elementor-pro' ),
					'woocommerce_show_product_sale_flash' => esc_html__( 'Sale Flash', 'elementor-pro' ),
					'woocommerce_product_additional_information_tab' => esc_html__( 'Additional Information Tab', 'elementor-pro' ),
					'woocommerce_upsell_display' => esc_html__( 'Upsell', 'elementor-pro' ),
					'wc_get_stock_html' => esc_html__( 'Stock Status', 'elementor-pro' ),
				],
			]
		);

		$this->end_controls_section();
	}

	public function remove_description_tab( $tabs ) {
		unset( $tabs['description'] );

		return $tabs;
	}

	private function get_element() {
		global $product;
		$product = wc_get_product();
		$settings = $this->get_settings();
		$html = '';

		switch ( $settings['element'] ) {
			case '':
				break;

			case 'wc_get_stock_html':
				$html = wc_get_stock_html( $product );
				break;

			case 'woocommerce_output_product_data_tabs':
				add_filter( 'woocommerce_product_tabs', [ $this, 'remove_description_tab' ], 11 /* after default tabs*/ );
				ob_start();
				woocommerce_output_product_data_tabs();
				// Wrap with the internal woocommerce `product` class
				$html = '<div class="product">' . ob_get_clean() . '</div>';
				remove_filter( 'woocommerce_product_tabs', [ $this, 'remove_description_tab' ], 11 );
				break;

			case 'woocommerce_template_single_rating':
				$is_edit_mode = Plugin::elementor()->editor->is_edit_mode();

				if ( 'no' === get_option( 'woocommerce_enable_review_rating' ) ) {
					if ( $is_edit_mode ) {
						$html = esc_html__( 'Admin Notice:', 'elementor-pro' ) . ' ' . esc_html__( 'Please enable the Review Rating', 'elementor-pro' );
					}
					break;
				}

				ob_start();
				woocommerce_template_single_rating();
				$html = ob_get_clean();
				if ( '' === $html && $is_edit_mode ) {
					$html = esc_html__( 'Admin Notice:', 'elementor-pro' ) . ' ' . esc_html__( 'No Rating Reviews', 'elementor-pro' );
				}
				break;

			default:
				if ( is_callable( $settings['element'] ) ) {
					$html = call_user_func( $settings['element'] );
				}
		}

		return $html;
	}

	protected function render() {
		// PHPCS - the method get_content is safe.
		echo $this->get_element(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/product-rating.php000064400000010363150755004300015656 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Typography;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Rating extends Base_Widget {

	public function get_name() {
		return 'woocommerce-product-rating';
	}

	public function get_title() {
		return esc_html__( 'Product Rating', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-product-rating';
	}

	public function get_keywords() {
		return [ 'woocommerce', 'shop', 'store', 'rating', 'review', 'comments', 'stars', 'product' ];
	}

	protected function register_controls() {

		$this->start_controls_section(
			'section_product_rating_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'wc_style_warning',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'The style of this widget is often affected by your theme and plugins. If you experience any such issue, try to switch to a basic theme and deactivate related plugins.', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$this->add_control(
			'star_color',
			[
				'label' => esc_html__( 'Star Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .star-rating' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'empty_star_color',
			[
				'label' => esc_html__( 'Empty Star Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .star-rating::before' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'link_color',
			[
				'label' => esc_html__( 'Link Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .woocommerce-review-link' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'text_typography',
				'selector' => '.woocommerce {{WRAPPER}} .woocommerce-review-link',
			]
		);

		$this->add_control(
			'star_size',
			[
				'label' => esc_html__( 'Star Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'unit' => 'em',
				],
				'range' => [
					'em' => [
						'min' => 0,
						'max' => 4,
						'step' => 0.1,
					],
				],
				'selectors' => [
					'.woocommerce {{WRAPPER}} .star-rating' => 'font-size: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'space_between',
			[
				'label' => esc_html__( 'Space Between', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'default' => [
					'unit' => 'em',
				],
				'range' => [
					'em' => [
						'min' => 0,
						'max' => 4,
						'step' => 0.1,
					],
					'px' => [
						'min' => 0,
						'max' => 50,
						'step' => 1,
					],
				],
				'selectors' => [
					'.woocommerce:not(.rtl) {{WRAPPER}} .star-rating' => 'margin-right: {{SIZE}}{{UNIT}}',
					'.woocommerce.rtl {{WRAPPER}} .star-rating' => 'margin-left: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Justified', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				'prefix_class' => 'elementor-product-rating--align-',
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		if ( ! post_type_supports( 'product', 'comments' ) ) {
			return;
		}

		global $product;
		$product = wc_get_product();

		if ( empty( $product ) ) {
			return;
		}

		wc_get_template( 'single-product/rating.php' );
	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/cart.php000064400000174347150755004300013662 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use ElementorPro\Plugin;
use Elementor\Controls_Manager;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Typography;
use Elementor\Group_Control_Text_Shadow;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Background;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Cart extends Base_Widget {

	public function get_name() {
		return 'woocommerce-cart';
	}

	public function get_title() {
		return esc_html__( 'Cart', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-woo-cart';
	}

	public function get_keywords() {
		return [ 'woocommerce', 'cart' ];
	}

	public function get_categories() {
		return [ 'theme-elements', 'woocommerce-elements' ];
	}

	public function get_script_depends() {
		return [
			'wc-cart',
			'selectWoo',
		];
	}

	public function get_style_depends() {
		return [ 'select2' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_content',
			[
				'label' => esc_html__( 'General', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'cart_layout',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'two-column' => esc_html__( 'Two columns', 'elementor-pro' ),
					'one-column' => esc_html__( 'One column', 'elementor-pro' ),
				],
				'default' => 'two-column',
				'prefix_class' => 'e-cart-layout-',
			]
		);

		$this->add_control(
			'sticky_right_column',
			[
				'label' => esc_html__( 'Sticky Right Column', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Yes', 'elementor-pro' ),
				'label_off' => esc_html__( 'No', 'elementor-pro' ),
				'description' => esc_html__( 'This option will allow the right column (e.g, Cart Totals) to be sticky while scrolling.', 'elementor-pro' ),
				'frontend_available' => true,
				'render_type' => 'none',
				'condition' => [
					'cart_layout!' => 'one-column',
				],
			]
		);

		$this->add_control(
			'sticky_right_column_offset',
			[
				'label' => esc_html__( 'Offset', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'frontend_available' => true,
				'conditions' => [
					'relation' => 'and',
					'terms' => [
						[
							'name' => 'sticky_right_column',
							'operator' => '!==',
							'value' => '',
						],
						[
							'name' => 'cart_layout',
							'operator' => '!==',
							'value' => 'one-column',
						],
					],
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_order_summary',
			[
				'label' => esc_html__( 'Order Summary', 'elementor-pro' ),
				'condition' => [
					'update_cart_automatically' => '',
				],
			]
		);

		$this->add_control(
			'update_cart_button_heading',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Update Cart Button', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'update_cart_button_text',
			[
				'label' => esc_html__( 'Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => esc_html__( 'Update Cart', 'elementor-pro' ),
				'default' => esc_html__( 'Update Cart', 'elementor-pro' ),
			]
		);

		$this->end_controls_section();

		if ( $this->is_wc_feature_active( 'coupons' ) ) {

			$this->start_controls_section(
				'section_coupon',
				[
					'label' => esc_html__( 'Coupon', 'elementor-pro' ),
				]
			);

			$this->add_control(
				'apply_coupon_heading',
				[
					'type' => Controls_Manager::HEADING,
					'label' => esc_html__( 'Apply Coupon Button', 'elementor-pro' ),
				]
			);

			$this->add_control(
				'apply_coupon_button_text',
				[
					'label' => esc_html__( 'Text', 'elementor-pro' ),
					'type' => Controls_Manager::TEXT,
					'dynamic' => [
						'active' => true,
					],
					'placeholder' => esc_html__( 'Apply coupon', 'elementor-pro' ),
					'default' => esc_html__( 'Apply coupon', 'elementor-pro' ),
				]
			);

			$this->end_controls_section();
		}

		$this->start_controls_section(
			'section_totals',
			[
				'label' => esc_html__( 'Totals', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'totals_section_title',
			[
				'label' => esc_html__( 'Section Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => esc_html__( 'Cart Totals', 'elementor-pro' ),
				'default' => esc_html__( 'Cart Totals', 'elementor-pro' ),
			]
		);

		$this->add_responsive_control(
			'totals_section_title_alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Start', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'end' => [
						'title' => esc_html__( 'End', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--totals-title-alignment: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'update_shipping_button_heading',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Update Shipping Button', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'update_shipping_button_text',
			[
				'label' => esc_html__( 'Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => esc_html__( 'Update', 'elementor-pro' ),
				'default' => esc_html__( 'Update', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'checkout_button_heading',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Checkout Button', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'checkout_button_text',
			[
				'label' => esc_html__( 'Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => esc_html__( 'Proceed to Checkout', 'elementor-pro' ),
				'default' => esc_html__( 'Proceed to Checkout', 'elementor-pro' ),
			]
		);

		$this->add_responsive_control(
			'checkout_button_alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Start', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'end' => [
						'title' => esc_html__( 'End', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Justify', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				'selectors' => [
					'{{WRAPPER}} .wc-proceed-to-checkout' => '{{VALUE}};',
				],
				'selectors_dictionary' => [
					'start' => '--place-order-title-alignment: flex-start; --checkout-button-width: fit-content;',
					'center' => '--place-order-title-alignment: center; --checkout-button-width: fit-content;',
					'end' => '--place-order-title-alignment: flex-end; --checkout-button-width: fit-content;',
					'justify' => '--place-order-title-alignment: stretch; --checkout-button-width: 100%;',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_additional_options',
			[
				'label' => esc_html__( 'Additional Options', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'update_cart_automatically',
			[
				'label' => esc_html__( 'Update Cart Automatically', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Yes', 'elementor-pro' ),
				'label_off' => esc_html__( 'No', 'elementor-pro' ),
				'selectors' => [
					'{{WRAPPER}}' => '{{VALUE}};',
				],
				'selectors_dictionary' => [
					'yes' => '--update-cart-automatically-display: none;',
				],
				'frontend_available' => true,
				'render_type' => 'template',
			]
		);

		$this->add_control(
			'update_cart_automatically_description',
			[
				'raw' => esc_html__( 'Changes to the cart will update automatically.', 'elementor-pro' ),
				'type' => Controls_Manager::RAW_HTML,
				'content_classes' => 'elementor-descriptor',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_cart_tabs_style',
			[
				'label' => esc_html__( 'Sections', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'sections_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--sections-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'section_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .e-cart-section',
			]
		);

		$this->add_control(
			'sections_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}}' => '--sections-border-type: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'sections_border_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-cart-section' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'sections_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'sections_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--sections-border-color: {{VALUE}};',
				],
				'condition' => [
					'sections_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'sections_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--sections-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'sections_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--sections-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'sections_margin',
			[
				'label' => esc_html__( 'Margin', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--sections-margin: {{BOTTOM}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_cart_tabs_typography',
			[
				'label' => esc_html__( 'Typography', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'sections_typography',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Titles', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'sections_title_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--sections-title-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'sections_titles_typography',
				'selector' => '{{WRAPPER}} .cart_totals h2',
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'sections_titles_text_shadow',
				'label' => esc_html__( 'Text Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .cart_totals h2',
			]
		);

		$this->add_responsive_control(
			'sections_title_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--sections-title-spacing: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'sections_descriptions_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Descriptions', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'sections_descriptions_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} ' => '--sections-descriptions-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'sections_descriptions_typography',
				'selector' => '{{WRAPPER}} .e-cart-content, {{WRAPPER}} .woocommerce-shipping-destination, {{WRAPPER}} .shipping-calculator-button',
			]
		);

		$this->add_responsive_control(
			'sections_descriptions_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--sections-descriptions-spacing: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'sections_links_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Links', 'elementor-pro' ),
			]
		);

		$this->start_controls_tabs( 'links_colors' );

		$this->start_controls_tab( 'links_normal_colors', [ 'label' => esc_html__( 'Normal', 'elementor-pro' ) ] );

		$this->add_control(
			'links_normal_color',
			[
				'label' => esc_html__( 'Link Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--links-normal-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'links_hover_colors', [ 'label' => esc_html__( 'Hover', 'elementor-pro' ) ] );

		$this->add_control(
			'links_hover_color',
			[
				'label' => esc_html__( 'Link Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--links-hover-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'sections_radio_buttons_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Radio Buttons', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'sections_radio_buttons_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--sections-radio-buttons-color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'sections_radio_buttons_typography',
				'selector' => '{{WRAPPER}} #shipping_method li label',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_cart_tabs_forms',
			[
				'label' => esc_html__( 'Forms', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'forms_rows_gap',
			[
				'label' => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-rows-gap: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'forms_field_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Field', 'elementor-pro' ),
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'forms_field_typography',
				'selector' => '{{WRAPPER}} .coupon .input-text, {{WRAPPER}} .cart-collaterals .input-text, {{WRAPPER}} select, {{WRAPPER}} .select2-selection--single',
			]
		);

		$this->start_controls_tabs( 'forms_fields_styles' );

		$this->start_controls_tab( 'forms_fields_normal_styles', [ 'label' => esc_html__( 'Normal', 'elementor-pro' ) ] );

		$this->add_control(
			'forms_fields_normal_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-normal-color: {{VALUE}};',
					'.e-woo-select2-wrapper .select2-results__option' => 'color: {{VALUE}};',
					// style select2 arrow
					'{{WRAPPER}} .select2-container--default .select2-selection--single .select2-selection__arrow b' => 'border-color: {{VALUE}} transparent transparent transparent;',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'forms_fields_normal_background',
				'selector' => '{{WRAPPER}} .coupon .input-text, {{WRAPPER}} .e-cart-totals .input-text, {{WRAPPER}} select, {{WRAPPER}} .select2-selection--single',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'forms_fields_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .coupon .input-text, {{WRAPPER}} .e-cart-totals .input-text, {{WRAPPER}} select, {{WRAPPER}} .select2-selection--single',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'forms_fields_focus_styles', [ 'label' => esc_html__( 'Focus', 'elementor-pro' ) ] );

		$this->add_control(
			'forms_fields_focus_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-focus-color: {{VALUE}}',
					'.e-woo-select2-wrapper .select2-results__option:focus' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'forms_fields_focus_background',
				'selector' => '{{WRAPPER}} .coupon .input-text:focus, {{WRAPPER}} .e-cart-totals .input-text:focus, {{WRAPPER}} select:focus, {{WRAPPER}} .select2-selection--single:focus',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'forms_fields_focus_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .coupon .input-text:focus, {{WRAPPER}} .e-cart-totals .input-text:focus, {{WRAPPER}} select:focus, {{WRAPPER}} .select2-selection--single:focus',
			]
		);

		$this->add_control(
			'forms_fields_focus_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-focus-border-color: {{VALUE}}',
				],
				'condition' => [
					'forms_fields_border_border!' => '',
				],
			]
		);

		$this->add_control(
			'forms_fields_focus_transition_duration',
			[
				'label' => esc_html__( 'Transition Duration', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-focus-transition-duration: {{SIZE}}ms',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 3000,
					],
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'forms_fields_border',
				'selector' => '{{WRAPPER}} .coupon .input-text, {{WRAPPER}} .cart-collaterals .input-text, {{WRAPPER}} select, {{WRAPPER}} .select2-selection--single',
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'forms_fields_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'forms_fields_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} ' => '--forms-fields-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
					// style select2
					'{{WRAPPER}} .select2-container--default .select2-selection--single .select2-selection__rendered' => 'line-height: calc( ({{TOP}}{{UNIT}}*2) + 16px ); padding-left: {{LEFT}}{{UNIT}}; padding-right: {{RIGHT}}{{UNIT}};',
					'{{WRAPPER}} .select2-container--default .select2-selection--single .select2-selection__arrow' => 'height: calc( ({{TOP}}{{UNIT}}*2) + 16px ); right: {{RIGHT}}{{UNIT}};',
					'{{WRAPPER}} .select2-container--default .select2-selection--single' => 'height: auto;',
				],
				'separator' => 'after',
			]
		);

		$this->add_control(
			'forms_button_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Buttons', 'elementor-pro' ),
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'forms_button_typography',
				'selector' => '{{WRAPPER}} .shop_table .button',
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'forms_button_text_shadow',
				'label' => esc_html__( 'Text Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .shop_table .button',
			]
		);

		$this->start_controls_tabs( 'forms_buttons_styles' );

		$this->start_controls_tab( 'forms_buttons_normal_styles', [ 'label' => esc_html__( 'Normal', 'elementor-pro' ) ] );

		$this->add_control(
			'forms_buttons_normal_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-normal-text-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'forms_buttons_normal_background',
				'selector' => '{{WRAPPER}} .shop_table .button',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'forms_buttons_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .shop_table .button',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'forms_buttons_hover_styles', [ 'label' => esc_html__( 'Hover', 'elementor-pro' ) ] );

		$this->add_control(
			'forms_buttons_hover_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-hover-text-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'forms_buttons_hover_background',
				'selector' => '{{WRAPPER}} .shop_table .button:hover, {{WRAPPER}} .shop_table .button:disabled[disabled]:hover',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'forms_buttons_focus_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .shop_table .button:hover',
			]
		);

		$this->add_control(
			'forms_buttons_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-hover-border-color: {{VALUE}}',
				],
				'condition' => [
					'forms_buttons_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'forms_buttons_hover_transition_duration',
			[
				'label' => esc_html__( 'Transition Duration', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-hover-transition-duration: {{SIZE}}ms',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 3000,
					],
				],
			]
		);

		$this->add_control(
			'forms_buttons_hover_animation',
			[
				'label' => esc_html__( 'Hover Animation', 'elementor-pro' ),
				'type' => Controls_Manager::HOVER_ANIMATION,
				'frontend_available' => true,
				'render_type' => 'template',
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'forms_buttons_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-border-type: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'forms_buttons_border_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .shop_table .button' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'forms_buttons_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'forms_buttons_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-border-color: {{VALUE}};',
				],
				'condition' => [
					'forms_buttons_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'forms_buttons_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'forms_buttons_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; --forms-buttons-width: auto;',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'tabs_order_summary',
			[
				'label' => esc_html__( 'Order Summary', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'order_summary_rows_gap',
			[
				'label' => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-rows-gap-top: calc( {{SIZE}}{{UNIT}}/2 ); --order-summary-rows-gap-bottom: calc( {{SIZE}}{{UNIT}}/2 );',
				],
				'separator' => 'after',
			]
		);

		$this->add_control(
			'order_summary_titles_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Titles', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'order_summary_title_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-cart-form' => '--order-summary-title-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'order_summary_title_typography',
				'selector' => '{{WRAPPER}} .e-shop-table .cart th, {{WRAPPER}} .e-shop-table .cart td:before',
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'order_summary_title_text_shadow',
				'label' => esc_html__( 'Text Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .e-shop-table .cart th, {{WRAPPER}} .e-shop-table .cart td:before',
			]
		);

		$this->add_responsive_control(
			'order_summary_title_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-title-spacing: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'order_summary_items_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Items', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'order_summary_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'order_summary_items_typography',
				'selector' => '{{WRAPPER}} .cart td span, {{WRAPPER}} .cart td, {{WRAPPER}} .input-text.qty',
			]
		);

		$this->add_control(
			'order_summary_variations_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Variations', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'order_summary_variations_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-variations-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'order_summary_variations_typography',
				'selector' => '{{WRAPPER}} .product-name .variation',
			]
		);

		$this->add_control(
			'order_summary_product_link_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Product Link', 'elementor-pro' ),
			]
		);

		$this->start_controls_tabs( 'order_summary' );

		$this->start_controls_tab( 'order_summary_normal', [ 'label' => esc_html__( 'Normal', 'elementor-pro' ) ] );

		$this->add_control(
			'product_link_normal_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--product-link-normal-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'order_summary_hover', [ 'label' => esc_html__( 'Hover', 'elementor-pro' ) ] );

		$this->add_control(
			'product_link_hover_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--product-link-hover-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'order_summary_divider_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Dividers', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'order_summary_items_divider_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-items-divider-color: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'order_summary_items_divider_weight',
			[
				'label' => esc_html__( 'Weight', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-items-divider-weight: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'order_summary_quantity_border_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Quantity Borders', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'order_summary_quantity_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-quantity-border-color: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'order_summary_quantity_border_weight',
			[
				'label' => esc_html__( 'Weight', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-quantity-border-weight: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'order_summary_remove_icon_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Remove icon', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->start_controls_tabs( 'order_summary_remove_icon' );

		$this->start_controls_tab( 'order_summary_remove_icon_normal', [ 'label' => esc_html__( 'Normal', 'elementor-pro' ) ] );

		$this->add_control(
			'order_summary_remove_icon_normal_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-remove-icon-normal-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'order_summary_remove_icon_hover', [ 'label' => esc_html__( 'Hover', 'elementor-pro' ) ] );

		$this->add_control(
			'order_summary_remove_icon_hover_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-remove-icon-hover-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();

		$this->start_controls_section(
			'section_cart_totals',
			[
				'label' => esc_html__( 'Totals', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'totals_rows_gap',
			[
				'label' => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--totals-rows-gap-top: calc( {{SIZE}}{{UNIT}}/2 ); --totals-rows-gap-bottom: calc( {{SIZE}}{{UNIT}}/2 );',
				],
				'separator' => 'after',
			]
		);

		$this->add_control(
			'totals_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Titles & Totals', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'totals_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--totals-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'totals_typography',
				'selector' => '{{WRAPPER}} .cart_totals .shop_table td:before, {{WRAPPER}} .cart_totals .shop_table td .woocommerce-Price-amount',
			]
		);

		$this->add_control(
			'totals_divider_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Divider Total', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'totals_divider_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--totals-divider-color: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'totals_divider_weight',
			[
				'label' => esc_html__( 'Weight', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}' => '--totals-divider-weight: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_cart_tabs_checkout_button',
			[
				'label' => esc_html__( 'Checkout Button', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'checkout_button_typography',
				'selector' => '{{WRAPPER}} .checkout-button',
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'checkout_button_text_shadow',
				'label' => esc_html__( 'Text Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .checkout-button',
			]
		);

		$this->start_controls_tabs( 'checkout_button_styles' );

		$this->start_controls_tab( 'checkout_button_normal_styles', [ 'label' => esc_html__( 'Normal', 'elementor-pro' ) ] );

		$this->add_control(
			'checkout_button_normal_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--checkout-button-normal-text-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'checkout_button_normal_background',
				'selector' => '{{WRAPPER}} .checkout-button',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'checkout_button_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .checkout-button',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'checkout_button_hover_styles', [ 'label' => esc_html__( 'Hover', 'elementor-pro' ) ] );

		$this->add_control(
			'checkout_button_hover_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--checkout-button-hover-text-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'checkout_button_hover_background',
				'selector' => '{{WRAPPER}} .checkout-button:hover',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'checkout_button_hover_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .checkout-button:hover',
			]
		);

		$this->add_control(
			'checkout_button_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--checkout-button-hover-border-color: {{VALUE}}',
				],
				'condition' => [
					'checkout_button_border_border!' => '',
				],
			]
		);

		$this->add_control(
			'checkout_button_hover_transition_duration',
			[
				'label' => esc_html__( 'Transition Duration', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}}' => '--checkout-button-hover-transition-duration: {{SIZE}}ms',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 3000,
					],
				],
			]
		);

		$this->add_control(
			'checkout_button_hover_animation',
			[
				'label' => esc_html__( 'Hover Animation', 'elementor-pro' ),
				'type' => Controls_Manager::HOVER_ANIMATION,
				'frontend_available' => true,
				'render_type' => 'template',
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'checkout_button_border',
				'selector' => '{{WRAPPER}} .checkout-button',
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'checkout_button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--checkout-button-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'checkout_button_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--checkout-button-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; --checkout-button-width: fit-content;',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_cart_tabs_customize',
			[
				'label' => esc_html__( 'Customize', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$customize_options = [];

		$customize_options += [
			'customize_order_summary' => esc_html__( 'Order Summary', 'elementor-pro' ),
		];

		if ( $this->is_wc_feature_active( 'coupons' ) ) {
			$customize_options += [
				'customize_coupon' => esc_html__( 'Coupon', 'elementor-pro' ),
			];
		}

		$customize_options += [
			'customize_totals' => esc_html__( 'Totals', 'elementor-pro' ),
		];

		$this->add_control(
			'section_cart_show_customize_elements',
			[
				'label' => esc_html__( 'Select sections of the cart to customize:', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'multiple' => true,
				'options' => $customize_options,
				'render_type' => 'ui',
				'label_block' => true,
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_cart_tabs_customize_order_summary',
			[
				'label' => esc_html__( 'Customize: Order Summary', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'section_cart_show_customize_elements' => 'customize_order_summary',
				],
			]
		);

		$this->add_control(
			'order_summary_section_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Section', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'order_summary_section_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-shop-table' => '--sections-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'order_summary_section_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .e-shop-table',
				'separator' => 'after',
			]
		);

		$this->add_control(
			'order_summary_section_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}} .e-shop-table' => '--sections-border-type: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'order_summary_section_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-shop-table' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'order_summary_section_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'order_summary_section_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-shop-table' => '--sections-border-color: {{VALUE}};',
				],
				'condition' => [
					'order_summary_section_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'order_summary_section_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-shop-table' => '--sections-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'order_summary_section_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-shop-table' => '--sections-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'order_summary_section_margin',
			[
				'label' => esc_html__( 'Margin', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-shop-table' => '--sections-margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'separator' => 'after',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_cart_tabs_customize_totals',
			[
				'label' => esc_html__( 'Customize: Totals', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'section_cart_show_customize_elements' => 'customize_totals',
				],
			]
		);

		$this->add_control(
			'customize_totals_section_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Section', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'sections_totals_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-cart-totals' => '--sections-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'totals_section_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .e-cart-totals',
			]
		);

		$this->add_control(
			'totals_section_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}} .e-cart-totals' => '--sections-border-type: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'totals_section_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-cart-totals' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'totals_section_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'totals_section_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-cart-totals' => '--sections-border-color: {{VALUE}};',
				],
				'condition' => [
					'totals_section_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'totals_section_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-cart-totals' => '--sections-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'checkout_sections_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-cart-totals' => '--sections-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'totals_section_margin',
			[
				'label' => esc_html__( 'Margin', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-cart-totals' => '--sections-margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'separator' => 'after',
			]
		);

		$this->add_control(
			'totals_section_titles_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Title', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'totals_section_titles_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .cart_totals' => '--sections-title-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'totals_section_titles_typography',
				'selector' => '{{WRAPPER}} .cart_totals h2',
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'totals_section_titles_text_shadow',
				'label' => esc_html__( 'Text Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .cart_totals h2',
				'separator' => 'after',
			]
		);

		$this->add_control(
			'totals_section_content_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Description', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'totals_section_content_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-cart-totals' => '--sections-descriptions-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'totals_section_content_typography',
				'selector' => '{{WRAPPER}} .e-cart-totals .e-cart-content, {{WRAPPER}} .e-cart-totals .woocommerce-shipping-destination, {{WRAPPER}} .e-cart-totals .shipping-calculator-button',
			]
		);

		$this->add_control(
			'totals_section_link_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Link', 'elementor-pro' ),
			]
		);

		$this->start_controls_tabs( 'totals_section_links_colors' );

		$this->start_controls_tab( 'totals_section_links_normal_colors', [ 'label' => esc_html__( 'Normal', 'elementor-pro' ) ] );

		$this->add_control(
			'totals_section_links_normal_color',
			[
				'label' => esc_html__( 'Link Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-cart-totals' => '--links-normal-color: {{VALUE}} !important;',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'totals_section_links_hover_colors', [ 'label' => esc_html__( 'Hover', 'elementor-pro' ) ] );

		$this->add_control(
			'totals_section_links_hover_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-cart-totals' => '--links-hover-color: {{VALUE}} !important;',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();

		$this->start_controls_section(
			'section_cart_tabs_customize_coupon',
			[
				'label' => esc_html__( 'Customize: Coupon', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'section_cart_show_customize_elements' => 'customize_coupon',
				],
			]
		);

		$this->add_control(
			'coupon_section_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Section', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'customize_coupon_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .coupon' => '--sections-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'customize_coupon_section_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .coupon',
			]
		);

		$this->add_control(
			'customize_coupon_section_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}} .coupon' => '--sections-border-type: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'customize_coupon_section_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .coupon' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'customize_coupon_section_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'customize_coupon_section_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .coupon' => '--sections-border-color: {{VALUE}};',
				],
				'condition' => [
					'customize_coupon_section_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'customize_coupon_section_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .coupon' => '--sections-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'customize_coupon_section_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .coupon' => '--sections-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'customize_coupon_section_margin',
			[
				'label' => esc_html__( 'Margin', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .coupon' => '--sections-margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
					'{{WRAPPER}} .e-cart__container' => 'grid-row-gap: {{BOTTOM}}{{UNIT}};',
				],
				'separator' => 'after',
			]
		);

		$this->end_controls_section();
	}

	/**
	 * Init Gettext Modifications
	 *
	 * Sets the `$gettext_modifications` property used with the `filter_gettext()` in the extended Base_Widget.
	 *
	 * @since 3.5.0
	 */
	protected function init_gettext_modifications() {
		$instance = $this->get_settings_for_display();

		$this->gettext_modifications = [
			'Update cart' => isset( $instance['update_cart_button_text'] ) ? $instance['update_cart_button_text'] : '',
			'Cart totals' => isset( $instance['totals_section_title'] ) ? $instance['totals_section_title'] : '',
			'Proceed to checkout' => isset( $instance['checkout_button_text'] ) ? $instance['checkout_button_text'] : '',
			'Update' => isset( $instance['update_shipping_button_text'] ) ? $instance['update_shipping_button_text'] : '',
			'Apply coupon' => isset( $instance['apply_coupon_button_text'] ) ? $instance['apply_coupon_button_text'] : '',
		];
	}

	/**
	 * Render Woocommerce Cart Coupon Form
	 *
	 * A custom function to render a coupon form on the Cart widget. The default WC coupon form
	 * was removed in this file's render() method.
	 *
	 * We are doing this in order to match the placement of the coupon form to the provided design.
	 *
	 * @since 3.5.0
	 */
	private function render_woocommerce_cart_coupon_form() {
		$settings = $this->get_settings_for_display();
		$button_classes = [ 'button', 'e-apply-coupon' ];
		if ( $settings['forms_buttons_hover_animation'] ) {
			$button_classes[] = 'elementor-animation-' . $settings['forms_buttons_hover_animation'];
		}
		$this->add_render_attribute(
			'button_coupon', [
				'class' => $button_classes,
				'name' => 'apply_coupon',
				'type' => 'submit',
			]
		);
		?>
		<div class="coupon e-cart-section shop_table">
			<div class="form-row coupon-col">
				<div class="coupon-col-start">
					<input type="text" name="coupon_code" class="input-text" id="coupon_code" value="" placeholder="<?php esc_attr_e( 'Coupon code', 'elementor-pro' ); ?>" />
				</div>
				<div class="coupon-col-end">
					<button <?php $this->print_render_attribute_string( 'button_coupon' ); ?> value="<?php esc_attr_e( 'Apply coupon', 'elementor-pro' ); ?>"><?php esc_attr_e( 'Apply coupon', 'elementor-pro' ); ?></button>
				</div>
				<?php do_action( 'woocommerce_cart_coupon' ); ?>
			</div>
		</div>
		<?php
	}

	public function hide_coupon_field_on_cart( $enabled ) {
		return is_cart() ? false : $enabled;
	}

	/**
	 * Woocommerce Before Cart
	 *
	 * Output containing elements. Callback function for the woocommerce_before_cart hook
	 *
	 * This eliminates the need for template overrides.
	 *
	 * @since 3.5.0
	 */
	public function woocommerce_before_cart() {
		?>
		<div class="e-cart__container">
						<!--open container-->
						<div class="e-cart__column e-cart__column-start">
							<!--open column-1-->
		<?php
	}

	/**
	 * Woocommerce Before Cart Table
	 *
	 * Output containing elements. Callback function for the woocommerce_before_cart_table hook
	 *
	 * This eliminates the need for template overrides.
	 *
	 * @since 3.5.0
	 */
	public function woocommerce_before_cart_table() {
		?>
		<div class="e-shop-table e-cart-section">
						<!--open shop table div -->
		<?php
	}

	/**
	 * Woocommerce After Cart Table
	 *
	 * Output containing elements. Callback function for the woocommerce_after_cart_table hook
	 *
	 * This eliminates the need for template overrides.
	 *
	 * @since 3.5.0
	 */
	public function woocommerce_after_cart_table() {
		?>
						</div>
					<!--close shop table div -->
					<div class="e-clear"></div>
		<?php
		if ( $this->is_wc_feature_active( 'coupons' ) ) {
			$this->render_woocommerce_cart_coupon_form();
		}
	}

	/**
	 * Woocommerce Before Cart Collaterals
	 *
	 * Output containing elements. * Callback function for the woocommerce_before_cart_collaterals hook
	 *
	 * This eliminates the need for template overrides.
	 *
	 * @since 3.5.0
	 */
	public function woocommerce_before_cart_collaterals() {
		?>
						<!--close column-1-->
						</div>
						<div class="e-cart__column e-cart__column-end">
							<!--open column-2-->
								<div class="e-cart__column-inner e-sticky-right-column">
									<!--open column-inner-->
									<div class="e-cart-totals e-cart-section">
										<!--open cart-totals-->
		<?php
	}

	/**
	 * Woocommerce After Cart
	 *
	 * Output containing elements. Callback function for the woocommerce_after_cart hook.
	 *
	 * This eliminates the need for template overrides.
	 *
	 * @since 3.5.0
	 */
	public function woocommerce_after_cart() {
		?>
									<!--close cart-totals-->
									</div>
									<!--close column-inner-->
								</div>
							<!--close column-2-->
						</div>
						<!--close container-->
					</div>
		<?php
	}

	/**
	 * WooCommerce Get Remove URL.
	 *
	 * When in the Editor or (wp preview) and the uer clicks to remove an item from the cart, WooCommerce uses
	 * the`_wp_http_referer` url during the ajax call to genrate the new cart html. So when we're in the Editor
	 * or (wp preview) we modify the `_wp_http_referer` to use the `get_wp_preview_url()` which will have
	 * the new cart content.
	 *
	 * @since 3.5.0
	 *
	 * @param $url
	 * @return string
	 */
	public function woocommerce_get_remove_url( $url ) {
		$url_components = wp_parse_url( $url );

		if ( ! isset( $url_components['query'] ) ) {
			return $url;
		}

		$params = [];
		parse_str( html_entity_decode( $url_components['query'] ), $params );

		$params['_wp_http_referer'] = rawurlencode( Plugin::elementor()->documents->get_current()->get_wp_preview_url() );

		return add_query_arg( $params, get_site_url() );
	}

	/**
	 * The following disabling of cart coupon needs to be done this way so that
	 * we only disable the display of coupon interface in our cart widget and
	 * `wc_coupons_enabled()` can still be reliably used elsewhere.
	 */
	public function disable_cart_coupon() {
		add_filter( 'woocommerce_coupons_enabled', [ $this, 'cart_coupon_return_false' ], 90 );
	}
	public function enable_cart_coupon() {
		remove_filter( 'woocommerce_coupons_enabled', [ $this, 'cart_coupon_return_false' ], 90 );
	}
	public function cart_coupon_return_false() {
		return false;
	}

	protected function render() {
		$is_editor = Plugin::elementor()->editor->is_edit_mode();
		$is_preview = (
			isset( $_GET['preview'] )
			&& isset( $_GET['preview_id'] )
			&& isset( $_GET['preview_nonce'] )
			&& wp_verify_nonce( $_GET['preview_nonce'], 'post_preview_' . $_GET['preview_id'] )
		);

		/**
		 * Add actions & filters before displaying our Widget.
		 */
		add_filter( 'gettext', [ $this, 'filter_gettext' ], 20, 3 );

		add_action( 'woocommerce_before_cart', [ $this, 'woocommerce_before_cart' ] );
		add_action( 'woocommerce_after_cart_table', [ $this, 'woocommerce_after_cart_table' ] );
		add_action( 'woocommerce_before_cart_table', [ $this, 'woocommerce_before_cart_table' ] );
		add_action( 'woocommerce_before_cart_collaterals', [ $this, 'woocommerce_before_cart_collaterals' ] );
		add_action( 'woocommerce_after_cart', [ $this, 'woocommerce_after_cart' ] );
		// The following disabling of cart coupon needs to be done this way so that
		// we only disable the display of coupon interface in our cart widget and
		// `wc_coupons_enabled()` can still be reliably used elsewhere.
		add_action( 'woocommerce_cart_contents', [ $this, 'disable_cart_coupon' ] );
		add_action( 'woocommerce_after_cart_contents', [ $this, 'enable_cart_coupon' ] );

		if ( $is_editor || $is_preview ) {
			add_filter( 'woocommerce_get_remove_url', [ $this, 'woocommerce_get_remove_url' ] );
		}

		// Remove cross-sells in cart.
		remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cross_sell_display' );

		/**
		 * Display our Widget.
		 */
		echo do_shortcode( '[woocommerce_cart]' );

		/**
		 * Remove actions & filters after displaying our Widget.
		 */
		remove_filter( 'gettext', [ $this, 'filter_gettext' ], 20 );

		remove_action( 'woocommerce_before_cart', [ $this, 'woocommerce_before_cart' ] );
		remove_action( 'woocommerce_after_cart_table', [ $this, 'woocommerce_after_cart_table' ] );
		remove_action( 'woocommerce_before_cart_table', [ $this, 'woocommerce_before_cart_table' ] );
		remove_action( 'woocommerce_before_cart_collaterals', [ $this, 'woocommerce_before_cart_collaterals' ] );
		remove_action( 'woocommerce_after_cart', [ $this, 'woocommerce_after_cart' ] );
		remove_filter( 'woocommerce_coupons_enabled', [ $this, 'hide_coupon_field_on_cart' ] );
		remove_filter( 'woocommerce_get_remove_url', [ $this, 'woocommerce_get_remove_url' ] );
		remove_action( 'woocommerce_cart_contents', [ $this, 'disable_cart_coupon' ] );
		remove_action( 'woocommerce_after_cart_contents', [ $this, 'enable_cart_coupon' ] );
		add_action( 'woocommerce_cart_collaterals', 'woocommerce_cross_sell_display' );
	}
}
modules/woocommerce/widgets/product-add-to-cart.php000064400000032134150755004300016471 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Typography;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Add_To_Cart extends Base_Widget {

	public function get_name() {
		return 'woocommerce-product-add-to-cart';
	}

	public function get_title() {
		return esc_html__( 'Add To Cart', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-product-add-to-cart';
	}

	public function get_keywords() {
		return [ 'woocommerce', 'shop', 'store', 'cart', 'product', 'button', 'add to cart' ];
	}

	protected function render() {
		global $product;

		$product = wc_get_product();

		if ( empty( $product ) ) {
			return;
		}

		?>

		<div class="elementor-add-to-cart elementor-product-<?php echo esc_attr( wc_get_product()->get_type() ); ?>">
			<?php woocommerce_template_single_add_to_cart(); ?>
		</div>

		<?php
	}

	protected function register_controls() {

		$this->start_controls_section(
			'section_atc_button_style',
			[
				'label' => esc_html__( 'Button', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'wc_style_warning',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'The style of this widget is often affected by your theme and plugins. If you experience any such issue, try to switch to a basic theme and deactivate related plugins.', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$this->add_responsive_control(
			'alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Justified', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				'prefix_class' => 'elementor-add-to-cart%s--align-',
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'button_typography',
				'selector' => '{{WRAPPER}} .cart button',
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'button_border',
				'selector' => '{{WRAPPER}} .cart button',
				'exclude' => [ 'color' ],
			]
		);

		$this->add_control(
			'button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'selectors' => [
					'{{WRAPPER}} .cart button' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'button_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}} .cart button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->start_controls_tabs( 'button_style_tabs' );

		$this->start_controls_tab( 'button_style_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .cart button' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'button_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .cart button' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'button_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .cart button' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'button_style_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_text_color_hover',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .cart button:hover' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'button_bg_color_hover',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .cart button:hover' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'button_border_color_hover',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .cart button:hover' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'button_transition',
			[
				'label' => esc_html__( 'Transition Duration', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 0.2,
				],
				'range' => [
					'px' => [
						'max' => 2,
						'step' => 0.1,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .cart button' => 'transition: all {{SIZE}}s',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();

		$this->start_controls_section(
			'section_atc_quantity_style',
			[
				'label' => esc_html__( 'Quantity', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'body:not(.rtl) {{WRAPPER}} .quantity + .button' => 'margin-left: {{SIZE}}{{UNIT}}',
					'body.rtl {{WRAPPER}} .quantity + .button' => 'margin-right: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'quantity_typography',
				'selector' => '{{WRAPPER}} .quantity .qty',
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'quantity_border',
				'selector' => '{{WRAPPER}} .quantity .qty',
				'exclude' => [ 'color' ],
			]
		);

		$this->add_control(
			'quantity_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'selectors' => [
					'{{WRAPPER}} .quantity .qty' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'quantity_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}} .quantity .qty' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->start_controls_tabs( 'quantity_style_tabs' );

		$this->start_controls_tab( 'quantity_style_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'quantity_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .quantity .qty' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'quantity_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .quantity .qty' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'quantity_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .quantity .qty' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'quantity_style_focus',
			[
				'label' => esc_html__( 'Focus', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'quantity_text_color_focus',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .quantity .qty:focus' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'quantity_bg_color_focus',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .quantity .qty:focus' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'quantity_border_color_focus',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .quantity .qty:focus' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'quantity_transition',
			[
				'label' => esc_html__( 'Transition Duration', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 0.2,
				],
				'range' => [
					'px' => [
						'max' => 2,
						'step' => 0.1,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .quantity .qty' => 'transition: all {{SIZE}}s',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();

		$this->start_controls_section(
			'section_atc_variations_style',
			[
				'label' => esc_html__( 'Variations', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'variations_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ '%' ],
				'default' => [
					'unit' => '%',
				],
				'selectors' => [
					'.woocommerce {{WRAPPER}} form.cart .variations' => 'width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'variations_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'.woocommerce {{WRAPPER}} form.cart .variations' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'variations_space_between',
			[
				'label' => esc_html__( 'Space Between', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'.woocommerce {{WRAPPER}} form.cart table.variations tr:not(:last-child)' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'heading_variations_label_style',
			[
				'label' => esc_html__( 'Label', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'variations_label_color_focus',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} form.cart table.variations label' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'variations_label_typography',
				'selector' => '.woocommerce {{WRAPPER}} form.cart table.variations label',
			]
		);

		$this->add_control(
			'heading_variations_select_style',
			[
				'label' => esc_html__( 'Select field', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'variations_select_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} form.cart table.variations td.value select' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'variations_select_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} form.cart table.variations td.value:before' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'variations_select_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} form.cart table.variations td.value:before' => 'border: 1px solid {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'variations_select_typography',
				'selector' => '.woocommerce {{WRAPPER}} form.cart table.variations td.value select, .woocommerce div.product.elementor{{WRAPPER}} form.cart table.variations td.value:before',
			]
		);

		$this->add_control(
			'variations_select_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'.woocommerce {{WRAPPER}} form.cart table.variations td.value:before' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section();
	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/product-images.php000064400000011140150755004300015631 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Border;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Images extends Base_Widget {

	public function get_name() {
		return 'woocommerce-product-images';
	}

	public function get_title() {
		return esc_html__( 'Product Images', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-product-images';
	}

	public function get_keywords() {
		return [ 'woocommerce', 'shop', 'store', 'image', 'product', 'gallery', 'lightbox' ];
	}

	protected function register_controls() {

		$this->start_controls_section(
			'section_product_gallery_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'wc_style_warning',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'The style of this widget is often affected by your theme and plugins. If you experience any such issue, try to switch to a basic theme and deactivate related plugins.', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$this->add_control(
			'sale_flash',
			[
				'label' => esc_html__( 'Sale Flash', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'render_type' => 'template',
				'return_value' => 'yes',
				'default' => 'yes',
				'prefix_class' => '',
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'image_border',
				'selector' => '.woocommerce {{WRAPPER}} .woocommerce-product-gallery__trigger + .woocommerce-product-gallery__wrapper,
				.woocommerce {{WRAPPER}} .flex-viewport, .woocommerce {{WRAPPER}} .flex-control-thumbs img',
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'image_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'.woocommerce {{WRAPPER}} .woocommerce-product-gallery__trigger + .woocommerce-product-gallery__wrapper,
					.woocommerce {{WRAPPER}} .flex-viewport' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'.woocommerce {{WRAPPER}} .flex-viewport:not(:last-child)' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'heading_thumbs_style',
			[
				'label' => esc_html__( 'Thumbnails', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'thumbs_border',
				'selector' => '.woocommerce {{WRAPPER}} .flex-control-thumbs img',
			]
		);

		$this->add_responsive_control(
			'thumbs_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'.woocommerce {{WRAPPER}} .flex-control-thumbs img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'spacing_thumbs',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'.woocommerce {{WRAPPER}} .flex-control-thumbs li' => 'padding-right: calc({{SIZE}}{{UNIT}} / 2); padding-left: calc({{SIZE}}{{UNIT}} / 2); padding-bottom: {{SIZE}}{{UNIT}}',
					'.woocommerce {{WRAPPER}} .flex-control-thumbs' => 'margin-right: calc(-{{SIZE}}{{UNIT}} / 2); margin-left: calc(-{{SIZE}}{{UNIT}} / 2)',
				],
			]
		);

		$this->end_controls_section();
	}

	public function render() {
		$settings = $this->get_settings_for_display();
		global $product;

		$product = wc_get_product();

		if ( empty( $product ) ) {
			return;
		}

		if ( 'yes' === $settings['sale_flash'] ) {
			wc_get_template( 'loop/sale-flash.php' );
		}
		wc_get_template( 'single-product/product-image.php' );

		// On render widget from Editor - trigger the init manually.
		if ( wp_doing_ajax() ) {
			?>
			<script>
				jQuery( '.woocommerce-product-gallery' ).each( function() {
					jQuery( this ).wc_product_gallery();
				} );
			</script>
			<?php
		}
	}
}
modules/woocommerce/widgets/products-deprecated.php000064400000015040150755004300016652 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use ElementorPro\Plugin;
use ElementorPro\Modules\QueryControl\Controls\Group_Control_Posts;
use ElementorPro\Modules\QueryControl\Module;
use ElementorPro\Modules\Woocommerce\Skins;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Products_Deprecated extends Products_Base {

	/**
	 * @var \WP_Query
	 */
	private $query = null;

	protected $_has_template_content = false;

	public function get_name() {
		return 'wc-products';
	}

	public function get_categories() {
		return [
			'woocommerce-elements',
		];
	}

	public function get_title() {
		return esc_html__( 'Woo - Products-', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-products';
	}

	public function get_keywords() {
		return [ 'woocommerce', 'shop', 'store', 'loop', 'query', 'product' ];
	}

	/* Deprecated Widget */
	public function show_in_panel() {
		return false;
	}

	public function on_export( $element ) {
		$element = Group_Control_Posts::on_export_remove_setting_from_element( $element, 'posts' );

		return $element;
	}

	public function get_query() {
		return $this->query;
	}

	protected function register_skins() {
		$this->add_skin( new Skins\Skin_Classic( $this ) );
	}

	protected function register_controls() {
		$this->deprecated_notice( Plugin::get_title(), '2.0.10', '', esc_html__( 'Products', 'elementor-pro' ) );

		$this->start_controls_section(
			'section_layout',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$this->add_control(
			'posts_per_page',
			[
				'label' => esc_html__( 'Products Count', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => '4',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_filter',
			[
				'label' => esc_html__( 'Query', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$this->add_group_control(
			Group_Control_Posts::get_type(),
			[
				'name' => 'posts',
				'post_type' => 'product',
			]
		);

		$this->add_control(
			'advanced',
			[
				'label' => esc_html__( 'Advanced', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'filter_by',
			[
				'label' => esc_html__( 'Filter By', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '',
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'featured' => esc_html__( 'Featured', 'elementor-pro' ),
					'sale' => esc_html__( 'Sale', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'orderby',
			[
				'label' => esc_html__( 'Order By', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'date',
				'options' => [
					'date' => esc_html__( 'Date', 'elementor-pro' ),
					'title' => esc_html__( 'Title', 'elementor-pro' ),
					'price' => esc_html__( 'Price', 'elementor-pro' ),
					'popularity' => esc_html__( 'Popularity', 'elementor-pro' ),
					'rating' => esc_html__( 'Rating', 'elementor-pro' ),
					'rand' => esc_html__( 'Random', 'elementor-pro' ),
					'menu_order' => esc_html__( 'Menu Order', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'order',
			[
				'label' => esc_html__( 'Order', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'desc',
				'options' => [
					'asc' => esc_html__( 'ASC', 'elementor-pro' ),
					'desc' => esc_html__( 'DESC', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'exclude',
			[
				'label' => esc_html__( 'Exclude', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'multiple' => true,
				'options' => [
					'current_post' => esc_html__( 'Current Post', 'elementor-pro' ),
					'manual_selection' => esc_html__( 'Manual Selection', 'elementor-pro' ),
				],
				'label_block' => true,
			]
		);

		$this->add_control(
			'exclude_ids',
			[
				'label' => esc_html__( 'Search & Select', 'elementor-pro' ),
				'type' => Module::QUERY_CONTROL_ID,
				'autocomplete' => [
					'object' => Module::QUERY_OBJECT_POST,
				],
				'options' => [],
				'label_block' => true,
				'multiple' => true,
				'condition' => [
					'exclude' => 'manual_selection',
				],
			]
		);

		$this->add_control(
			'avoid_duplicates',
			[
				'label' => esc_html__( 'Avoid Duplicates', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'description' => esc_html__( 'Set to Yes to avoid duplicate posts from showing up on the page. This only affects the frontend.', 'elementor-pro' ),
			]
		);

		$this->end_controls_section();

		parent::register_controls();
	}

	public function query_posts() {
		$settings = $this->get_settings();
		/** @var Module $query_module */
		$query_module = Module::instance();
		$query_args = $query_module->get_query_args( 'posts', $settings );

		// Default ordering args
		$ordering_args = WC()->query->get_catalog_ordering_args( $settings['orderby'], $settings['order'] );

		$query_args['orderby'] = $ordering_args['orderby'];
		$query_args['order'] = $ordering_args['order'];

		if ( ! empty( $ordering_args['meta_key'] ) ) {
			$query_args['meta_key'] = $ordering_args['meta_key'];
		}

		if ( 'sale' === $settings['filter_by'] ) {
			// From WooCommerce `sale_products` shortcode
			$query_args['post__in'] = array_merge( [ 0 ], wc_get_product_ids_on_sale() );
		}

		if ( version_compare( WC()->version, '3.0.0', '>=' ) ) {
			$query_args = $this->get_wc_visibility_parse_query( $query_args );
		} else {
			$query_args = $this->get_wc_legacy_visibility_parse_query( $query_args );
		}

		$this->query = new \WP_Query( $query_args );
	}

	private function get_wc_visibility_parse_query( $query_args ) {
		$settings = $this->get_settings();
		$product_visibility_term_ids = wc_get_product_visibility_term_ids();

		if ( 'featured' === $settings['filter_by'] ) {
			$query_args['tax_query'][] = [
				'taxonomy' => 'product_visibility',
				'field' => 'term_taxonomy_id',
				'terms' => $product_visibility_term_ids['featured'],
			];
		}

		return $query_args;
	}

	private function get_wc_legacy_visibility_parse_query( $query_args ) {
		$settings = $this->get_settings();

		$query_args['meta_query'] = [
			[
				'key' => '_visibility',
				'value' => [ 'catalog', 'visible' ],
				'compare' => 'IN',
			],
		];

		if ( 'featured' === $settings['filter_by'] ) {
			// From WooCommerce `featured_products` shortcode
			$query_args['meta_query'][] = [
				'key' => '_featured',
				'value' => 'yes',
			];
		}

		return $query_args;
	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/archive-products.php000064400000010010150755004300016163 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;
use ElementorPro\Modules\Woocommerce\Classes\Products_Renderer;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Archive_Products extends Products {

	public function get_name() {
		return 'wc-archive-products';
	}

	public function get_title() {
		return esc_html__( 'Archive Products', 'elementor-pro' );
	}

	public function get_categories() {
		return [
			'woocommerce-elements-archive',
		];
	}

	protected function register_controls() {
		parent::register_controls();

		$this->remove_responsive_control( 'columns' );
		$this->remove_responsive_control( 'rows' );
		$this->remove_control( 'orderby' );
		$this->remove_control( 'order' );

		$this->update_control(
			'products_class',
			[
				'prefix_class' => 'elementor-products-grid elementor-',
			]
		);

		// Should be kept as hidden since required for "allow_order"
		$this->update_control(
			'paginate',
			[
				'type' => 'hidden',
				'default' => 'yes',
			]
		);

		$this->update_control(
			'allow_order',
			[
				'default' => 'yes',
			]
		);

		$this->start_injection( [
			'at' => 'before',
			'of' => 'allow_order',
		] );

		if ( ! get_theme_support( 'woocommerce' ) ) {
			$this->add_control(
				'wc_notice_wc_not_supported',
				[
					'type' => Controls_Manager::RAW_HTML,
					'raw' => esc_html__( 'Looks like you are using WooCommerce, while your theme does not support it. Please consider switching themes.', 'elementor-pro' ),
					'content_classes' => 'elementor-panel-alert elementor-panel-alert-warning',
				]
			);
		}

		$this->add_control(
			'wc_notice_use_customizer',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'To change the Products Archive’s layout, go to Appearance > Customize.', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$this->add_control(
			'wc_notice_wrong_data',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'The editor preview might look different from the live site. Please make sure to check the frontend.', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$this->end_injection();

		$this->update_control(
			'show_result_count',
			[
				'default' => 'yes',
			]
		);

		$this->update_control(
			'section_query',
			[
				'type' => 'hidden',
			]
		);

		$this->update_control(
			Products_Renderer::QUERY_CONTROL_NAME . '_post_type',
			[
				'default' => 'current_query',
			]
		);

		$this->start_controls_section(
			'section_advanced',
			[
				'label' => esc_html__( 'Advanced', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'nothing_found_message',
			[
				'label' => esc_html__( 'Nothing Found Message', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'default' => esc_html__( 'It seems we can\'t find what you\'re looking for.', 'elementor-pro' ),
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_nothing_found_style',
			[
				'tab' => Controls_Manager::TAB_STYLE,
				'label' => esc_html__( 'Nothing Found Message', 'elementor-pro' ),
				'condition' => [
					'nothing_found_message!' => '',
				],
			]
		);

		$this->add_control(
			'nothing_found_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-products-nothing-found' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'nothing_found_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
				'selector' => '{{WRAPPER}} .elementor-products-nothing-found',
			]
		);

		$this->end_controls_section();
	}
}
modules/woocommerce/widgets/my-account.php000064400000152773150755004300015007 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use ElementorPro\Plugin;
use Elementor\Controls_Manager;
use Elementor\Repeater;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Typography;
use Elementor\Group_Control_Text_Shadow;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Background;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class My_Account extends Base_Widget {

	public function get_name() {
		return 'woocommerce-my-account';
	}

	public function get_title() {
		return esc_html__( 'My Account', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-my-account';
	}

	public function get_categories() {
		return [ 'theme-elements', 'woocommerce-elements' ];
	}

	protected function register_controls() {

		$this->start_controls_section(
			'section_menu_icon_content',
			[
				'label' => esc_html__( 'Tabs', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'tabs_layout',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'vertical' => esc_html__( 'Vertical', 'elementor-pro' ),
					'horizontal' => esc_html__( 'Horizontal', 'elementor-pro' ),
				],
				'default' => 'vertical',
				'render_type' => 'template',
				'prefix_class' => 'e-my-account-tabs-',
			]
		);

		$this->add_responsive_control(
			'tabs_content_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--tab-content-spacing: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'tabs_position',
			[
				'label' => esc_html__( 'Tabs Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Start', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-h-align-center',
					],
					'end' => [
						'title' => esc_html__( 'End', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
					'stretch' => [
						'title' => esc_html__( 'Stretch', 'elementor-pro' ),
						'icon' => 'eicon-h-align-stretch',
					],
				],
				'condition' => [
					'tabs_layout' => 'horizontal',
				],
				'selectors' => [
					'{{WRAPPER}}' => '{{VALUE}}',
				],
				'selectors_dictionary' => [
					'start' => '--tabs-container-justify-content: flex-start; --tab-width: auto',
					'center' => '--tabs-container-justify-content: center; --tab-width: auto',
					'end' => '--tabs-container-justify-content: flex-end; --tab-width: auto',
					'stretch' => '--tabs-container-justify-content: space-between; --tab-width: 100%',
				],
			]
		);

		$repeater = new Repeater();

		$repeater->add_control(
			'tab_name',
			[
				'label' => esc_html__( 'Tab Name', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$repeater->add_control(
			'order_display_description',
			[
				'raw' => esc_html__( 'Note: By default, only your last order is displayed while editing the orders section. You can see other orders on your live site or in the WooCommerce orders section', 'elementor-pro' ),
				'type' => Controls_Manager::RAW_HTML,
				'content_classes' => 'elementor-descriptor',
				'condition' => [
					'field_key' => 'orders',
				],
			]
		);

		$this->add_control(
			'tabs',
			[
				'label' => '',
				'type' => Controls_Manager::REPEATER,
				'fields' => $repeater->get_controls(),
				'item_actions' => [
					'add' => false,
					'duplicate' => false,
					'remove' => false,
					'sort' => false,
				],
				'default' => [
					[
						'field_key' => 'dashboard',
						'field_label' => esc_html__( 'Dashboard', 'elementor-pro' ),
						'tab_name' => esc_html__( 'Dashboard', 'elementor-pro' ),
					],
					[
						'field_key' => 'orders',
						'field_label' => esc_html__( 'Orders', 'elementor-pro' ),
						'tab_name' => esc_html__( 'Orders', 'elementor-pro' ),
					],
					[
						'field_key' => 'downloads',
						'field_label' => esc_html__( 'Downloads', 'elementor-pro' ),
						'tab_name' => esc_html__( 'Downloads', 'elementor-pro' ),
					],
					[
						'field_key' => 'edit-address',
						'field_label' => esc_html__( 'Addresses', 'elementor-pro' ),
						'tab_name' => esc_html__( 'Addresses', 'elementor-pro' ),
					],
					[
						'field_key' => 'edit-account',
						'field_label' => esc_html__( 'Account Details', 'elementor-pro' ),
						'tab_name' => esc_html__( 'Account Details', 'elementor-pro' ),
					],
					[
						'field_key' => 'customer-logout',
						'field_label' => esc_html__( 'Logout', 'elementor-pro' ),
						'tab_name' => esc_html__( 'Logout', 'elementor-pro' ),
					],
				],
				'title_field' => '{{{ tab_name }}}',
			]
		);

		$this->add_responsive_control(
			'tabs_alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Start', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'end' => [
						'title' => esc_html__( 'End', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--tabs-alignment: {{VALUE}};',
				],
				'conditions' => [
					'relation' => 'and',
					'terms' => [
						[
							'name' => 'tabs_position',
							'operator' => '!==',
							'value' => 'start',
						],
						[
							'name' => 'tabs_position',
							'operator' => '!==',
							'value' => 'center',
						],
						[
							'name' => 'tabs_position',
							'operator' => '!==',
							'value' => 'end',
						],
					],
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'tabs_style',
			[
				'label' => esc_html__( 'Tabs', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'tabs_typography',
				'selector' => '{{WRAPPER}} .woocommerce-MyAccount-navigation ul li a',
			]
		);

		$this->start_controls_tabs( 'tabs_section' );

		$this->start_controls_tab( 'tabs_normal', [ 'label' => esc_html__( 'Normal', 'elementor-pro' ) ] );

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'tabs_normal_background',
				'selector' => '{{WRAPPER}} .woocommerce-MyAccount-navigation ul li a',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'tabs_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .woocommerce-MyAccount-navigation ul li a',
			]
		);

		$this->add_control(
			'tabs_normal_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--tabs-normal-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'tabs_hover', [ 'label' => esc_html__( 'Hover', 'elementor-pro' ) ] );

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'tabs_hover_background',
				'selector' => '{{WRAPPER}} .woocommerce-MyAccount-navigation ul li a:hover',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'tabs_hover_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .woocommerce-MyAccount-navigation ul li a:hover',
			]
		);

		$this->add_control(
			'tabs_hover_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--tabs-hover-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'tabs_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--tabs-hover-border-color: {{VALUE}}',
				],
				'condition' => [
					'tabs_border_type!' => '',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'tabs_active', [ 'label' => esc_html__( 'Active', 'elementor-pro' ) ] );

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'tabs_active_background',
				'selector' => '{{WRAPPER}} .woocommerce-MyAccount-navigation ul li.is-active a',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'tabs_active_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .woocommerce-MyAccount-navigation ul li.is-active a',
			]
		);

		$this->add_control(
			'tabs_active_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--tabs-active-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'tabs_active_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--tabs-active-border-color: {{VALUE}}',
				],
				'condition' => [
					'tabs_border_type!' => '',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'tabs_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}}' => '--tabs-border-type: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'tabs_border_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .woocommerce-MyAccount-navigation ul li a' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'tabs_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'tabs_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--tabs-border-color: {{VALUE}};',
				],
				'condition' => [
					'tabs_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'tabs_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--tabs-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'tabs_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--tabs-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'tabs_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--tabs-spacing: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'tabs_divider_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Dividers', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'tabs_divider_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--tabs-divider-color: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'tabs_divider_weight',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}' => '--tabs-divider-weight: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'sections_title',
			[
				'label' => esc_html__( 'Sections', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'my_account_sections_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--sections-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'my_account_sections_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, {{WRAPPER}} .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, {{WRAPPER}} .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, {{WRAPPER}} address, {{WRAPPER}} .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper, {{WRAPPER}} .e-my-account-tab__view-order .order_details, {{WRAPPER}} .woocommerce-form-login, {{WRAPPER}} .woocommerce-form-register, {{WRAPPER}} .woocommerce-ResetPassword',
			]
		);

		$this->add_control(
			'sections_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}}' => '--sections-border-type: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'sections_border_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, {{WRAPPER}} .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, {{WRAPPER}} .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, {{WRAPPER}} address, {{WRAPPER}} .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper, {{WRAPPER}} .e-my-account-tab__view-order .order_details, {{WRAPPER}} .woocommerce-form-login, {{WRAPPER}} .woocommerce-form-register, {{WRAPPER}} .woocommerce-ResetPassword, {{WRAPPER}} .e-my-account-tab__edit-address .woocommerce-address-fields' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'sections_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'sections_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--sections-border-color: {{VALUE}};',
				],
				'condition' => [
					'sections_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'sections_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--sections-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'sections_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--sections-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; --edit-link-margin-top: {{TOP}}{{UNIT}}; --edit-link-margin-start: {{LEFT}}{{UNIT}};',
					'{{WRAPPER}} .e-my-account-tab__edit-address .woocommerce-Address address' => 'padding-top: calc( {{TOP}}{{UNIT}} + 40px );',
					'{{WRAPPER}} .woocommerce-pagination' => 'padding-bottom: {{BOTTOM}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'typography_title',
			[
				'label' => esc_html__( 'Typography', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'typography_titles',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Section Titles', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'typography_section_titles_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--typography-section-titles-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'section_titles_typography',
				'selector' => '{{WRAPPER}} h2, {{WRAPPER}} h3',
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'section_titles_typography_text_shadow',
				'label' => esc_html__( 'Text Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} h2, {{WRAPPER}} h3',
			]
		);

		$this->add_responsive_control(
			'section_title_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%', 'vw' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--section-title-spacing: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'typography_secondary_titles',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'General Text', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'general_text_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--general-text-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'general_text_typography',
				'selector' => '{{WRAPPER}} .woocommerce-MyAccount-content > div > p, {{WRAPPER}} address, {{WRAPPER}} .woocommerce-EditAccountForm fieldset legend, {{WRAPPER}} .woocommerce-ResetPassword p:nth-child(1), {{WRAPPER}} .woocommerce-OrderUpdate',
			]
		);

		$this->add_control(
			'typography_login_messages_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Login Messages', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'login_messages_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--login-messages-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'login_messages_typography',
				'selector' => '{{WRAPPER}} .woocommerce-privacy-policy-text, {{WRAPPER}} em, {{WRAPPER}} .register p',
			]
		);

		$this->add_control(
			'checkboxes_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Checkboxes', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'checkboxes_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--checkboxes-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'checkboxes_typography',
				'selector' => '{{WRAPPER}} .woocommerce-form__label-for-checkbox span',
			]
		);

		$this->add_control(
			'links_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Links', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->start_controls_tabs( 'links_colors' );

		$this->start_controls_tab( 'links_normal_colors', [ 'label' => esc_html__( 'Normal', 'elementor-pro' ) ] );

		$this->add_control(
			'links_normal_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--links-normal-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'links_hover_colors', [ 'label' => esc_html__( 'Hover', 'elementor-pro' ) ] );

		$this->add_control(
			'links_hover_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--links-hover-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();

		$this->start_controls_section(
			'forms_section',
			[
				'label' => esc_html__( 'Forms', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'forms_columns_gap',
			[
				'label' => esc_html__( 'Columns Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-columns-gap-padding-right: calc( {{SIZE}}{{UNIT}}/2 ); --forms-columns-gap-padding-left: calc( {{SIZE}}{{UNIT}}/2 ); --forms-columns-gap-margin-left: calc( -{{SIZE}}{{UNIT}}/2 ); --forms-columns-gap-margin-right: calc( -{{SIZE}}{{UNIT}}/2 );',
				],
			]
		);

		$this->add_responsive_control(
			'forms_rows_gap',
			[
				'label' => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-rows-gap: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'forms_label_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Labels', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'forms_label_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-labels-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'forms_label_typography',
				'selector' => '{{WRAPPER}} .woocommerce-form-row label',
			]
		);

		$this->add_responsive_control(
			'forms_label_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-label-spacing: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'forms_field_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Fields', 'elementor-pro' ),
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'forms_field_typography',
				'selector' => '{{WRAPPER}} .input-text, {{WRAPPER}} select, {{WRAPPER}} ::placeholder, {{WRAPPER}} .select2-container--default .select2-selection--single, .select2-results__option',

			]
		);

		$this->start_controls_tabs( 'forms_fields_styles' );

		$this->start_controls_tab( 'forms_fields_normal_styles', [ 'label' => esc_html__( 'Normal', 'elementor-pro' ) ] );

		$this->add_control(
			'forms_fields_normal_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-normal-color: {{VALUE}};',
					'.e-woo-select2-wrapper .select2-results__option' => 'color: {{VALUE}};',
					// style select2 arrow
					'{{WRAPPER}} .select2-container--default .select2-selection--single .select2-selection__arrow b' => 'border-color: {{VALUE}} transparent transparent transparent;',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'forms_fields_normal_background',
				'selector' => '{{WRAPPER}} .input-text, {{WRAPPER}} select, {{WRAPPER}} .select2-container--default .select2-selection--single, .select2-results__option',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'forms_fields_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .input-text, {{WRAPPER}} select, {{WRAPPER}} .select2-container--default .select2-selection--single',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'forms_fields_focus_styles', [ 'label' => esc_html__( 'Focus', 'elementor-pro' ) ] );

		$this->add_control(
			'forms_fields_focus_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-focus-color: {{VALUE}}',
					'.e-woo-select2-wrapper .select2-results__option:focus' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'forms_fields_focus_background',
				'selector' => '{{WRAPPER}} .input-text:focus, {{WRAPPER}} select:focus, {{WRAPPER}} .select2-container--default .select2-selection--single:focus',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'forms_fields_focus_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .input-text:focus, {{WRAPPER}} select:focus, {{WRAPPER}} .select2-container--default .select2-selection--single:focus',
			]
		);

		$this->add_control(
			'forms_fields_focus_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-focus-border-color: {{VALUE}}',
				],
				'condition' => [
					'forms_fields_border_border!' => '',
				],
			]
		);

		$this->add_control(
			'forms_fields_focus_transition_duration',
			[
				'label' => esc_html__( 'Transition Duration', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-focus-transition-duration: {{SIZE}}ms',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 3000,
					],
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'forms_fields_border',
				'selector' => '{{WRAPPER}} .input-text, {{WRAPPER}} select, {{WRAPPER}} .select2-container--default .select2-selection--single, .select2-results__option',
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'forms_fields_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'forms_fields_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
					// style select2
					'{{WRAPPER}} .select2-container--default .select2-selection--single .select2-selection__rendered' => 'line-height: calc( ({{TOP}}{{UNIT}}*2) + 16px ); padding-left: {{LEFT}}{{UNIT}}; padding-right: {{RIGHT}}{{UNIT}};',
					'{{WRAPPER}} .select2-container--default .select2-selection--single .select2-selection__arrow' => 'height: calc( ({{TOP}}{{UNIT}}*2) + 16px ); right: {{RIGHT}}{{UNIT}};',
					'{{WRAPPER}} .select2-container--default .select2-selection--single' => 'height: auto;',
				],
			]
		);

		$this->add_control(
			'forms_button_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Buttons', 'elementor-pro' ),
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'forms_button_typography',
				'selector' => '{{WRAPPER}} button.button',
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'forms_button_text_shadow',
				'label' => esc_html__( 'Text Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} button.button',
			]
		);

		$this->start_controls_tabs( 'forms_buttons_styles' );

		$this->start_controls_tab( 'forms_buttons_normal_styles', [ 'label' => esc_html__( 'Normal', 'elementor-pro' ) ] );

		$this->add_control(
			'forms_buttons_normal_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-normal-text-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'forms_buttons_background',
				'selector' => '{{WRAPPER}} button.button',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'forms_buttons_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} button.button',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'forms_buttons_hover_styles', [ 'label' => esc_html__( 'Hover', 'elementor-pro' ) ] );

		$this->add_control(
			'forms_buttons_hover_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-hover-text-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'forms_buttons_hover_background',
				'selector' => '{{WRAPPER}} button.button:hover',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'forms_buttons_focus_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} button.button:hover',
			]
		);

		$this->add_control(
			'forms_buttons_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} button.button:hover' => 'border-color: {{VALUE}}',
				],
				'condition' => [
					'forms_buttons_border_border!' => '',
				],
			]
		);

		$this->add_control(
			'forms_buttons_hover_transition_duration',
			[
				'label' => esc_html__( 'Transition Duration', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-hover-transition-duration: {{SIZE}}ms',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 3000,
					],
				],
			]
		);

		$this->add_control(
			'forms_buttons_hover_animation',
			[
				'label' => esc_html__( 'Hover Animation', 'elementor-pro' ),
				'type' => Controls_Manager::HOVER_ANIMATION,
				'frontend_available' => true,
				'render_type' => 'template',
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'forms_buttons_border',
				'selector' => '{{WRAPPER}} button.button',
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'forms_buttons_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'forms_buttons_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'tables_section',
			[
				'label' => esc_html__( 'Order Details', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'tables_rows_gap',
			[
				'label' => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-rows-gap-top: calc( {{SIZE}}{{UNIT}}/2 ); --order-summary-rows-gap-bottom: calc( {{SIZE}}{{UNIT}}/2 );',
				],
				'separator' => 'after',
			]
		);

		$this->add_control(
			'tables_titles',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Titles &amp; Totals', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'tables_title_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--tables-title-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'tables_titles_typography',
				'selector' => '{{WRAPPER}} .order_details thead th, {{WRAPPER}} .order_details tfoot td, {{WRAPPER}} .order_details tfoot th, {{WRAPPER}} .nobr',
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'tables_titles_text_shadow',
				'label' => esc_html__( 'Text Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .order_details thead th, {{WRAPPER}} .order_details tfoot td, {{WRAPPER}} .order_details tfoot th, {{WRAPPER}} .nobr',
			]
		);

		$this->add_control(
			'tables_items_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Items', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'tables_items_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--tables-items-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'tables_items_typography',
				'selector' => '{{WRAPPER}} .e-my-account-tab__orders tbody td, {{WRAPPER}} .e-my-account-tab__downloads tbody td, {{WRAPPER}} .product-quantity, {{WRAPPER}} .woocommerce-table--order-downloads tbody td, {{WRAPPER}} .woocommerce-table--order-details td a, {{WRAPPER}} td.product-total',
			]
		);

		$this->add_control(
			'variations_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Variations', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'variations_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--variations-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'variations_typography',
				'selector' => '{{WRAPPER}} .wc-item-meta',
			]
		);

		$this->add_control(
			'sections_links_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Product Link', 'elementor-pro' ),
			]
		);

		$this->start_controls_tabs( 'tables_links_colors' );

		$this->start_controls_tab( 'tables_links_normal_colors', [ 'label' => esc_html__( 'Normal', 'elementor-pro' ) ] );

		$this->add_control(
			'tables_links_normal_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--tables-links-normal-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'tables_links_hover_colors', [ 'label' => esc_html__( 'Hover', 'elementor-pro' ) ] );

		$this->add_control(
			'tables_links_hover_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--tables-links-hover-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'tables_divider_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Dividers', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'tables_divider_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}}' => '--tables-divider-border-type: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'tables_divider_border_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--tables-divider-border-width: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'tables_divider_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'tables_divider_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--tables-divider-border-color: {{VALUE}};',
				],
				'condition' => [
					'tables_divider_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'tables_button_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Buttons', 'elementor-pro' ),
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'tables_button_typography',
				'selector' => '{{WRAPPER}} .shop_table .button, {{WRAPPER}} .order-again .button, {{WRAPPER}} .woocommerce-pagination .button',
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'tables_button_text_shadow',
				'label' => esc_html__( 'Text Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .shop_table .button, {{WRAPPER}} .order-again .button, {{WRAPPER}} .woocommerce-pagination .button',
			]
		);

		$this->start_controls_tabs( 'tables_button_styles' );

		$this->start_controls_tab( 'tables_button_styles_normal', [ 'label' => esc_html__( 'Normal', 'elementor-pro' ) ] );

		$this->add_control(
			'tables_button_normal_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--tables-button-normal-text-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'tables_button_normal_background',
				'selector' => '{{WRAPPER}} .shop_table .button, {{WRAPPER}} .order-again .button, {{WRAPPER}} .woocommerce-pagination .button',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'tables_button_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .shop_table .button, {{WRAPPER}} .order-again .button, {{WRAPPER}} .woocommerce-pagination .button',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'tables_button_styles_hover', [ 'label' => esc_html__( 'Hover', 'elementor-pro' ) ] );

		$this->add_control(
			'tables_button_hover_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--tables-button-hover-text-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'tables_button_hover_background',
				'selector' => '{{WRAPPER}} .shop_table .button:hover, {{WRAPPER}} .order-again .button:hover, {{WRAPPER}} .woocommerce-pagination .button:hover',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'tables_button_hover_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .shop_table .button:hover, {{WRAPPER}} .order-again .button:hover, {{WRAPPER}} .woocommerce-pagination .button:hover',
			]
		);

		$this->add_control(
			'tables_button_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .shop_table .button:hover, {{WRAPPER}} .order-again .button:hover, {{WRAPPER}} .woocommerce-pagination .button:hover' => 'border-color: {{VALUE}}',
				],
				'condition' => [
					'tables_button_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'tables_button_hover_transition_duration',
			[
				'label' => esc_html__( 'Transition Duration', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}}' => '--tables-button-hover-transition-duration: {{SIZE}}ms',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 3000,
					],
				],
			]
		);

		$this->add_control(
			'tables_button_hover_animation',
			[
				'label' => esc_html__( 'Hover Animation', 'elementor-pro' ),
				'type' => Controls_Manager::HOVER_ANIMATION,
				'frontend_available' => true,
				'render_type' => 'template',
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'tables_button_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}}' => '--tables-buttons-border-type: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'tables_button_border_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .shop_table .button, {{WRAPPER}} .order-again .button, {{WRAPPER}} .woocommerce-pagination .button' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'tables_button_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'tables_button_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} ' => '--tables-buttons-border-color: {{VALUE}};',
				],
				'condition' => [
					'tables_button_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'tables_button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--tables-button-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'tables_button_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}' => '--tables-button-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();
	}

	public function modify_menu_items( $items, $endpoints ) {
		$settings = $this->get_settings_for_display();

		if ( ! empty( $settings['tabs'] ) ) {
			foreach ( $settings['tabs'] as $tab ) {
				if ( isset( $tab['tab_name'] ) && isset( $items[ $tab['field_key'] ] ) ) {
					$items[ $tab['field_key'] ] = $tab['tab_name'];
				}
			}
		}

		return $items;
	}

	/**
	 * WooCommerce Get My Account Page Permalink
	 *
	 * Modify the permalinks of the My Account menu items. By default the permalinks will go to the
	 * set WooCommerce My Account Page, even if the widget is on a different page. This function will override
	 * the permalinks to use the widget page URL as the base URL instead.
	 *
	 * This is a callback function for the woocommerce_get_myaccount_page_permalink filter.
	 *
	 * @since 3.5.0
	 *
	 * @return string
	 */
	public function woocommerce_get_myaccount_page_permalink( $bool ) {
		return get_permalink();
	}

	/**
	 * WooCommerce Logout Default Redirect URL
	 *
	 * Modify the permalink of the My Account Logout menu item. We add this so that we can add custom
	 * parameters to the URL, which we can later access to log the user out and redirect back to the widget
	 * page. Without this WooCommerce would have always just redirect back to the set My Account Page
	 * after log out.
	 *
	 * This is a callback function for the woocommerce_logout_default_redirect_url filter.
	 *
	 * @since 3.5.0
	 *
	 * @return string
	 */
	public function woocommerce_logout_default_redirect_url( $redirect ) {
		return $redirect . '?elementor_wc_logout=true&elementor_my_account_redirect=' . esc_url( get_permalink() );
	}

	protected function render() {

		// Add actions & filters before displaying our Widget.
		add_action( 'woocommerce_account_navigation', [ $this, 'woocommerce_account_navigation' ], 1 );
		add_filter( 'woocommerce_account_menu_items', [ $this, 'modify_menu_items' ], 10, 2 );
		add_action( 'woocommerce_account_content', [ $this, 'before_account_content' ], 2 );
		add_action( 'woocommerce_account_content', [ $this, 'after_account_content' ], 95 );
		add_filter( 'woocommerce_get_myaccount_page_permalink', [ $this, 'woocommerce_get_myaccount_page_permalink' ], 10, 1 );
		add_filter( 'woocommerce_logout_default_redirect_url', [ $this, 'woocommerce_logout_default_redirect_url' ], 10, 1 );

		// Display our Widget.
		if ( ! Plugin::elementor()->editor->is_edit_mode() ) {
			$this->render_html_front_end();
		} else {
			$this->render_html_editor();
		}

		// Remove actions & filters after displaying our Widget.
		remove_action( 'woocommerce_account_navigation', [ $this, 'woocommerce_account_navigation' ], 2 );
		remove_action( 'woocommerce_account_menu_items', [ $this, 'modify_menu_items' ], 10 );
		remove_action( 'woocommerce_account_content', [ $this, 'before_account_content' ], 5 );
		remove_action( 'woocommerce_account_content', [ $this, 'after_account_content' ], 95 );
		remove_filter( 'woocommerce_get_myaccount_page_permalink', [ $this, 'woocommerce_get_myaccount_page_permalink' ], 10, 1 );
		remove_filter( 'woocommerce_logout_default_redirect_url', [ $this, 'woocommerce_logout_default_redirect_url' ], 10, 1 );
	}

	/**
	 * Get Account Pages
	 *
	 * Get all the pages that would render on the My Account page.
	 * We will use this array to be able to render all these pages' content when the editor loads.
	 * We will then switch between the pages via JS as all the content is already on the page.
	 *
	 * @since 3.5.0
	 *
	 * @return array
	 */
	private function get_account_pages() {
		$pages = [
			'dashboard' => '',
			'orders' => '',
			'downloads' => '',
			'edit-address' => '',
		];

		// Check if payment gateways support add new payment methods.
		$support_payment_methods = false;
		foreach ( WC()->payment_gateways->get_available_payment_gateways() as $gateway ) {
			if ( $gateway->supports( 'add_payment_method' ) || $gateway->supports( 'tokenization' ) ) {
				$support_payment_methods = true;
				break;
			}
		}

		if ( $support_payment_methods ) {
			$pages['payment-methods'] = '';
		}

		// Edit account.
		$pages['edit-account'] = '';

		// Get the latest order (if there is one) for view-order (order preview) page.
		$recent_order = wc_get_orders( [
			'limit' => 1,
			'orderby'  => 'date',
			'order'    => 'DESC',
		] );

		if ( ! empty( $recent_order ) ) {
			$pages['view-order'] = $recent_order[0]->get_id();
		}

		return $pages;
	}

	/**
	 * Get Current Endpoint
	 *
	 * Used to determine which page Account Page the user is on currently.
	 * This is used so we can add a unique wrapper class around the page's content.
	 *
	 * @since 3.5.0
	 *
	 * @return string
	 */
	private function get_current_endpoint() {
		global $wp_query;
		$current = '';

		$pages = $this->get_account_pages();

		foreach ( $pages as $page => $val ) {
			if ( isset( $wp_query->query[ $page ] ) ) {
				$current = $page;
				break;
			}
		}

		if ( '' === $current && isset( $wp_query->query_vars['page'] ) ) {
			$current = 'dashboard'; // Dashboard is not an endpoint so it needs a custom check.
		}

		return $current;
	}

	/**
	 * Render HTML Front End
	 *
	 * This function will output the content on the front-end.
	 *
	 * @since 3.5.0
	 */
	private function render_html_front_end() {
		$current_endpoint = $this->get_current_endpoint();
		?>
		<div class="e-my-account-tab e-my-account-tab__<?php echo sanitize_html_class( $current_endpoint ); ?>">
			<span class="elementor-hidden">[[woocommerce_my_account]]</span>
			<?php echo do_shortcode( '[woocommerce_my_account]' ); ?>
		</div>
		<?php
	}

	/**
	 * Render HTML Editor
	 *
	 * This function will output the content in the Editor.
	 * One navigation will be rendered and the content for all pages will be rendered.
	 * Only the dashboard page's content will show on page load as the other pages' content
	 * will be hidden with CSS and toggled via JS when the user clicks on the menu items.
	 *
	 * @since 3.5.0
	 */
	private function render_html_editor() {
		$settings = $this->get_settings_for_display();
		// Add .e-my-account-tab__dashboard as the default class when the editor loads.
		// This class will be replaced with JS when tabs are switched.
		?>
		<div class="e-my-account-tab e-my-account-tab__dashboard">
			<span class="elementor-hidden">[[woocommerce_my_account]]</span>
			<div class="woocommerce">
			<?php
			if ( 'horizontal' === $settings['tabs_layout'] ) {
				?>
				<div class="e-wc-account-tabs-nav">
					<?php wc_get_template( 'myaccount/navigation.php' ); ?>
				</div>
				<?php
			} else {
				wc_get_template( 'myaccount/navigation.php' );
			}

			// In the editor, output all the tabs in order to allow for switching between them via JS.
			$pages = $this->get_account_pages();

			global $wp_query;
			foreach ( $pages as $page => $page_value ) {
				foreach ( $pages as $unset_tab => $unset_tab_value ) {
					unset( $wp_query->query_vars[ $unset_tab ] );
				}
				$wp_query->query_vars[ $page ] = $page_value;

				$wrapper_class = $this->get_account_content_wrapper( [
					'context' => 'editor',
					'page' => $page,
				] );
				?>
				<div class="woocommerce-MyAccount-content" <?php echo $page ? 'e-my-account-page="' . esc_attr( $page ) . '"' : ''; ?>>
					<div class="<?php echo sanitize_html_class( $wrapper_class ); ?>">
						<?php
						if ( 'dashboard' === $page ) {
							wc_get_template(
								'myaccount/dashboard.php',
								[
									'current_user' => get_user_by( 'id', get_current_user_id() ),
								]
							);
						} else {
							do_action( 'woocommerce_account_' . $page . '_endpoint', $page_value );
						}
						?>
					</div>
				</div>
			<?php } ?>
			</div>
		</div>
		<?php
	}

	/**
	 * Woocommerce Account Navigation
	 *
	 * Output a horizontal menu if the setting was selected. The default vertical menu will be hidden with CSS
	 * and this menu will show. We wrap this menu with a class '.e-wc-account-tabs-nav' so that we
	 * can manipulate the display for this menu with CSS (make it horizontal).
	 *
	 * Callback function for the woocommerce_account_navigation hook.
	 *
	 * This eliminates the need for template overrides.
	 *
	 * @since 3.5.0
	 */
	public function woocommerce_account_navigation() {
		$settings = $this->get_settings_for_display();

		if ( 'horizontal' === $settings['tabs_layout'] ) {
			?>
			<div class="e-wc-account-tabs-nav">
				<?php wc_get_template( 'myaccount/navigation.php' ); ?>
			</div>
			<?php
		}
	}

	/**
	 * Get Account Content Wrapper
	 *
	 * This function will determine the wrapper class around the main content.
	 * There are different wrappers depending on if orders/downloads exist or not.
	 *
	 * @since 3.5.0
	 *
	 * @return string
	 */
	private function get_account_content_wrapper( $args ) {
		$user_id = get_current_user_id();
		$num_orders = wc_get_customer_order_count( $user_id );
		$num_downloads = count( wc_get_customer_available_downloads( $user_id ) );
		$class = 'woocommerce-MyAccount-content-wrapper';

		/* we need to render a different css class if there are no orders/downloads to display
		 * as the no orders/downloads screen should not have the default padding and border
		 * around it but show the 'no orders/downloads' notification only
		 */
		if ( 'frontend' === $args['context'] ) { // Front-end display
			global $wp_query;
			if ( ( 0 === $num_orders && isset( $wp_query->query_vars['orders'] ) ) || ( 0 === $num_downloads && isset( $wp_query->query_vars['downloads'] ) ) ) {
				$class .= '-no-data';
			}
		} else { // Editor display
			if ( ( 0 === $num_orders && 'orders' === $args['page'] ) || ( 0 === $num_downloads && 'downloads' === $args['page'] ) ) {
				$class .= '-no-data';
			}
		}

		return $class;
	}

	/**
	 * Before Account Content
	 *
	 * Output containing elements. Callback function for the woocommerce_account_content hook.
	 *
	 * This eliminates the need for template overrides.
	 *
	 * @since 3.5.0
	 */
	public function before_account_content() {
		$wrapper_class = $this->get_account_content_wrapper( [ 'context' => 'frontend' ] );

		echo '<div class="' . sanitize_html_class( $wrapper_class ) . '">';
	}

	/**
	 * After Account Content
	 *
	 * Output containing elements. Callback function for the woocommerce_account_content hook.
	 *
	 * This eliminates the need for template overrides.
	 *
	 * @since 3.5.0
	 */
	public function after_account_content() {
		echo '</div>';
	}
}
modules/woocommerce/widgets/product-related.php000064400000013704150755004300016014 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Related extends Products_Base {

	public function get_name() {
		return 'woocommerce-product-related';
	}

	public function get_title() {
		return esc_html__( 'Product Related', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-product-related';
	}

	public function get_keywords() {
		return [ 'woocommerce', 'shop', 'store', 'related', 'similar', 'product' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_related_products_content',
			[
				'label' => esc_html__( 'Related Products', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'posts_per_page',
			[
				'label' => esc_html__( 'Products Per Page', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 4,
				'range' => [
					'px' => [
						'max' => 20,
					],
				],
			]
		);

		$this->add_columns_responsive_control();

		$this->add_control(
			'orderby',
			[
				'label' => esc_html__( 'Order By', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'date',
				'options' => [
					'date' => esc_html__( 'Date', 'elementor-pro' ),
					'title' => esc_html__( 'Title', 'elementor-pro' ),
					'price' => esc_html__( 'Price', 'elementor-pro' ),
					'popularity' => esc_html__( 'Popularity', 'elementor-pro' ),
					'rating' => esc_html__( 'Rating', 'elementor-pro' ),
					'rand' => esc_html__( 'Random', 'elementor-pro' ),
					'menu_order' => esc_html__( 'Menu Order', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'order',
			[
				'label' => esc_html__( 'Order', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'desc',
				'options' => [
					'asc' => esc_html__( 'ASC', 'elementor-pro' ),
					'desc' => esc_html__( 'DESC', 'elementor-pro' ),
				],
			]
		);

		$this->end_controls_section();

		parent::register_controls();

		$this->start_injection( [
			'at' => 'before',
			'of' => 'section_design_box',
		] );

		$this->start_controls_section(
			'section_heading_style',
			[
				'label' => esc_html__( 'Heading', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'show_heading',
			[
				'label' => esc_html__( 'Heading', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'default' => 'yes',
				'return_value' => 'yes',
				'prefix_class' => 'show-heading-',
			]
		);

		$this->add_control(
			'heading_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_PRIMARY,
				],
				'selectors' => [
					'.woocommerce {{WRAPPER}}.elementor-wc-products .products > h2' => 'color: {{VALUE}}',
				],
				'condition' => [
					'show_heading!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'heading_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '.woocommerce {{WRAPPER}}.elementor-wc-products .products > h2',
				'condition' => [
					'show_heading!' => '',
				],
			]
		);

		$this->add_responsive_control(
			'heading_text_align',
			[
				'label' => esc_html__( 'Text Align', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'.woocommerce {{WRAPPER}}.elementor-wc-products .products > h2' => 'text-align: {{VALUE}}',
				],
				'condition' => [
					'show_heading!' => '',
				],
			]
		);

		$this->add_responsive_control(
			'heading_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'.woocommerce {{WRAPPER}}.elementor-wc-products .products > h2' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'show_heading!' => '',
				],
			]
		);

		$this->end_controls_section();

		$this->end_injection();
	}

	protected function render() {
		global $product;

		$product = wc_get_product();

		if ( ! $product ) {
			return;
		}

		$settings = $this->get_settings_for_display();

		$args = [
			'posts_per_page' => 4,
			'columns' => 4,
			'orderby' => $settings['orderby'],
			'order' => $settings['order'],
		];

		if ( ! empty( $settings['posts_per_page'] ) ) {
			$args['posts_per_page'] = $settings['posts_per_page'];
		}

		if ( ! empty( $settings['columns'] ) ) {
			$args['columns'] = $settings['columns'];
		}

		// Get visible related products then sort them at random.
		$args['related_products'] = array_filter( array_map( 'wc_get_product', wc_get_related_products( $product->get_id(), $args['posts_per_page'], $product->get_upsell_ids() ) ), 'wc_products_array_filter_visible' );

		// Handle orderby.
		$args['related_products'] = wc_products_array_orderby( $args['related_products'], $args['orderby'], $args['order'] );

		ob_start();

		wc_get_template( 'single-product/related.php', $args );

		$related_products_html = ob_get_clean();

		if ( $related_products_html ) {
			$related_products_html = str_replace( '<ul class="products', '<ul class="products elementor-grid', $related_products_html );

			echo wp_kses_post( $related_products_html );
		}

	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/archive-description.php000064400000005350150755004300016656 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Typography;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Archive_Description extends Base_Widget {

	public function get_name() {
		return 'woocommerce-archive-description';
	}

	public function get_title() {
		return esc_html__( 'Archive Description', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-product-description';
	}

	public function get_keywords() {
		return [ 'woocommerce', 'shop', 'store', 'text', 'description', 'category', 'product', 'archive' ];
	}

	public function get_categories() {
		return [
			'woocommerce-elements-archive',
		];
	}

	protected function register_controls() {

		$this->start_controls_section(
			'section_product_description_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'wc_style_warning',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'The style of this widget is often affected by your theme and plugins. If you experience any such issue, try to switch to a basic theme and deactivate related plugins.', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$this->add_responsive_control(
			'text_align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Justified', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => 'text-align: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .term-description' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'text_typography',
				'label' => esc_html__( 'Typography', 'elementor-pro' ),
				'selector' => '.woocommerce {{WRAPPER}} .term-description',
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		do_action( 'woocommerce_archive_description' );
	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/category-image.php000064400000002241150755004300015605 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Widgets;

use Elementor\Widget_Image;
use ElementorPro\Base\Base_Widget_Trait;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Category_Image extends Widget_Image {

	use Base_Widget_Trait;

	public function get_name() {
		return 'woocommerce-category-image';
	}

	public function get_title() {
		return esc_html__( 'Category Image', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-featured-image';
	}

	public function get_categories() {
		return [ 'woocommerce-elements', 'woocommerce-elements-single' ];
	}

	public function get_keywords() {
		return [ 'woocommerce', 'category', 'image', 'thumbnail' ];
	}

	protected function register_controls() {
		parent::register_controls();

		$this->update_control(
			'image',
			[
				'dynamic' => [
					'default' => Plugin::elementor()->dynamic_tags->tag_data_to_tag_text( null, 'woocommerce-category-image-tag' ),
				],
			],
			[
				'recursive' => true,
			]
		);
	}

	protected function get_html_wrapper_class() {
		return parent::get_html_wrapper_class() . ' elementor-widget-' . parent::get_name();
	}
}
modules/woocommerce/widgets/breadcrumb.php000064400000005420150755004300015020 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Typography;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Breadcrumb extends Base_Widget {

	public function get_name() {
		return 'woocommerce-breadcrumb';
	}

	public function get_title() {
		return esc_html__( 'WooCommerce Breadcrumbs', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-product-breadcrumbs';
	}

	public function get_keywords() {
		return [ 'woocommerce-elements', 'shop', 'store', 'breadcrumbs', 'internal links', 'product' ];
	}

	public function get_categories() {
		return [ 'woocommerce-elements', 'woocommerce-elements-single' ];
	}

	protected function register_controls() {

		$this->start_controls_section(
			'section_product_rating_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'wc_style_warning',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'The style of this widget is often affected by your theme and plugins. If you experience any such issue, try to switch to a basic theme and deactivate related plugins.', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$this->add_control(
			'text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-breadcrumb' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'link_color',
			[
				'label' => esc_html__( 'Link Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-breadcrumb > a' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'text_typography',
				'selector' => '{{WRAPPER}} .woocommerce-breadcrumb',
			]
		);

		$this->add_responsive_control(
			'alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}} .woocommerce-breadcrumb' => 'text-align: {{VALUE}}',
				],
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		woocommerce_breadcrumb();
	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/checkout.php000064400000347317150755004300014535 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use ElementorPro\Plugin;
use Elementor\Controls_Manager;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Typography;
use Elementor\Group_Control_Text_Shadow;
use Elementor\Group_Control_Border;
use Elementor\Repeater;
use Elementor\Group_Control_Background;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Checkout extends Base_Widget {

	private $reformatted_form_fields;

	public function get_name() {
		return 'woocommerce-checkout-page';
	}

	public function get_title() {
		return esc_html__( 'Checkout', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-checkout';
	}

	public function get_keywords() {
		return [ 'woocommerce', 'checkout' ];
	}

	public function get_categories() {
		return [ 'theme-elements', 'woocommerce-elements' ];
	}

	public function get_help_url() {
		return 'https://go.elementor.com/widget-woocommerce-checkout';
	}

	public function get_script_depends() {
		return [
			'wc-checkout',
			'wc-password-strength-meter',
			'selectWoo',
		];
	}

	public function get_style_depends() {
		return [ 'select2' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_content',
			[
				'label' => esc_html__( 'General', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'checkout_layout',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'two-column' => esc_html__( 'Two columns', 'elementor-pro' ),
					'one-column' => esc_html__( 'One column', 'elementor-pro' ),
				],
				'default' => 'two-column',
				'prefix_class' => 'e-checkout-layout-',
			]
		);

		$this->add_control(
			'sticky_right_column',
			[
				'label' => esc_html__( 'Sticky Right Column', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Yes', 'elementor-pro' ),
				'label_off' => esc_html__( 'No', 'elementor-pro' ),
				'return_value' => 'yes',
				'description' => esc_html__( 'The Order Summary and Payment sections will remain in place while scrolling.', 'elementor-pro' ),
				'frontend_available' => true,
				'render_type' => 'none',
				'condition' => [
					'checkout_layout' => 'two-column',
				],
			]
		);

		$this->add_control(
			'sticky_right_column_offset',
			[
				'label' => esc_html__( 'Offset', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'frontend_available' => true,
				'conditions' => [
					'relation' => 'and',
					'terms' => [
						[
							'name' => 'sticky_right_column',
							'operator' => '!==',
							'value' => '',
						],
						[
							'name' => 'checkout_layout',
							'operator' => '=',
							'value' => 'two-column',
						],
					],
				],
			]
		);

		$this->end_controls_section();

		if ( $this->is_wc_feature_active( 'checkout_login_reminder' ) ) {
			$this->add_checkout_login_reminder_controls();
		}

		$this->start_controls_section(
			'billing_details_section',
			[
				'label' => $this->is_wc_feature_active( 'ship_to_billing_address_only' ) ? esc_html__( 'Billing and Shipping Details', 'elementor-pro' ) : esc_html__( 'Billing Details', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'billing_details_section_title',
			[
				'label' => esc_html__( 'Section Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => $this->is_wc_feature_active( 'ship_to_billing_address_only' ) ? esc_html__( 'Billing and Shipping Details', 'elementor-pro' ) : esc_html__( 'Billing Details', 'elementor-pro' ),
				'default' => $this->is_wc_feature_active( 'ship_to_billing_address_only' ) ? esc_html__( 'Billing and Shipping Details', 'elementor-pro' ) : esc_html__( 'Billing Details', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_responsive_control(
			'billing_details_alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Start', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'end' => [
						'title' => esc_html__( 'End', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--billing-details-title-alignment: {{VALUE}};',
				],
			]
		);

		$repeater = new Repeater();

		$repeater->start_controls_tabs( 'tabs', [
			'condition' => [
				'repeater_state' => '',
			],
		] );

		$repeater->start_controls_tab( 'content_tab', [
			'label' => esc_html__( 'Content', 'elementor-pro' ),
		] );

		$repeater->add_control(
			'label',
			[
				'label' => esc_html__( 'Label', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$repeater->add_control(
			'placeholder',
			[
				'label' => esc_html__( 'Placeholder', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$repeater->end_controls_tab();

		$repeater->start_controls_tab( 'advanced_tab', [
			'label' => esc_html__( 'Advanced', 'elementor-pro' ),
		] );

		$repeater->add_control(
			'default',
			[
				'label' => esc_html__( 'Default Value', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$repeater->end_controls_tab();

		$repeater->end_controls_tabs();

		$repeater->add_control(
			'repeater_state',
			[
				'label' => esc_html__( 'Repeater State - hidden', 'elementor-pro' ),
				'type' => Controls_Manager::HIDDEN,
			]
		);

		$repeater->add_control(
			'locale_notice',
			[
				'raw' => __( 'Note: This content cannot be changed due to local regulations.', 'elementor-pro' ),
				'type' => Controls_Manager::RAW_HTML,
				'content_classes' => 'elementor-descriptor',
				'condition' => [
					'repeater_state' => 'locale',
				],
			]
		);

		$repeater->add_control(
			'from_billing_notice',
			[
				'raw' => __( 'Note: This label and placeholder are taken from the Billing section. You can change it there.', 'elementor-pro' ),
				'type' => Controls_Manager::RAW_HTML,
				'content_classes' => 'elementor-descriptor',
				'condition' => [
					'repeater_state' => 'from_billing',
				],
			]
		);

		$this->add_control(
			'billing_details_form_fields',
			[
				'label' => esc_html__( 'Form Items', 'elementor-pro' ),
				'type' => Controls_Manager::REPEATER,
				'fields' => $repeater->get_controls(),
				'item_actions' => [
					'add' => false,
					'duplicate' => false,
					'remove' => false,
					'sort' => false,
				],
				'default' => $this->get_billing_field_defaults(),
				'title_field' => '{{{ label }}}',
			]
		);

		$this->end_controls_section();

		if ( $this->is_wc_feature_active( 'shipping' ) && ! $this->is_wc_feature_active( 'ship_to_billing_address_only' ) ) {
			$this->add_shipping_controls();
		}

		$this->start_controls_section(
			'additional_information_section',
			[
				'label' => esc_html__( 'Additional Information', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'additional_information_active',
			[
				'label' => esc_html__( 'Additional Information', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
				'selectors' => [
					'{{WRAPPER}}' => '--additional-information-display: block;',
				],
			]
		);

		if ( $this->is_wc_feature_active( 'additional_options' ) ) {
			$this->add_control(
				'additional_information_section_title',
				[
					'label' => esc_html__( 'Section Title', 'elementor-pro' ),
					'type' => Controls_Manager::TEXT,
					'placeholder' => esc_html__( 'Additional Information', 'elementor-pro' ),
					'default' => esc_html__( 'Additional Information', 'elementor-pro' ),
					'dynamic' => [
						'active' => true,
					],
					'condition' => [
						'additional_information_active!' => '',
					],
				]
			);

			$this->add_responsive_control(
				'additional_information_alignment',
				[
					'label' => esc_html__( 'Alignment', 'elementor-pro' ),
					'type' => Controls_Manager::CHOOSE,
					'options' => [
						'start' => [
							'title' => esc_html__( 'Start', 'elementor-pro' ),
							'icon' => 'eicon-text-align-left',
						],
						'center' => [
							'title' => esc_html__( 'Center', 'elementor-pro' ),
							'icon' => 'eicon-text-align-center',
						],
						'end' => [
							'title' => esc_html__( 'End', 'elementor-pro' ),
							'icon' => 'eicon-text-align-right',
						],
					],
					'selectors' => [
						'{{WRAPPER}}' => '--additional-fields-title-alignment: {{VALUE}};',
					],
					'condition' => [
						'additional_information_active!' => '',
					],
				]
			);
		}

		$repeater = new Repeater();

		$repeater->start_controls_tabs( 'additional_information_form_fields_tabs' );

		$repeater->start_controls_tab( 'additional_information_form_fields_content_tab', [
			'label' => esc_html__( 'Content', 'elementor-pro' ),
		] );

		$repeater->add_control(
			'label',
			[
				'label' => esc_html__( 'Label', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$repeater->add_control(
			'placeholder',
			[
				'label' => esc_html__( 'Placeholder', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$repeater->end_controls_tab();

		$repeater->start_controls_tab( 'additional_information_form_fields_advanced_tab', [
			'label' => esc_html__( 'Advanced', 'elementor-pro' ),
		] );

		$repeater->add_control(
			'default',
			[
				'label' => esc_html__( 'Default Value', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$repeater->end_controls_tab();

		$repeater->end_controls_tabs();

		$this->add_control(
			'additional_information_form_fields',
			[
				'label' => esc_html__( 'Items', 'elementor-pro' ),
				'type' => Controls_Manager::REPEATER,
				'fields' => $repeater->get_controls(),
				'item_actions' => [
					'add' => false,
					'duplicate' => false,
					'remove' => false,
					'sort' => false,
				],
				'default' => [
					[
						'field_key' => 'order_comments',
						'field_label' => esc_html__( 'Order Notes', 'elementor-pro' ),
						'label' => esc_html__( 'Order Notes', 'elementor-pro' ),
						'placeholder' => esc_html__( 'Notes about your order, e.g. special notes for delivery.', 'elementor-pro' ),
					],
				],
				'title_field' => '{{{ label }}}',
				'condition' => [
					'additional_information_active!' => '',
				],
			]
		);

		$this->end_controls_section();

		if ( $this->is_wc_feature_active( 'signup_and_login_from_checkout' ) ) {
			$this->add_signup_and_login_from_checkout_controls();
		}

		$this->start_controls_section(
			'order_summary_section',
			[
				'label' => esc_html__( 'Your Order', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'order_summary_section_title',
			[
				'label' => esc_html__( 'Section Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Your Order', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_responsive_control(
			'order_summary_alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Start', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'end' => [
						'title' => esc_html__( 'End', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--order-review-title-alignment: {{VALUE}};',
				],
			]
		);

		$this->end_controls_section();

		if ( $this->is_wc_feature_active( 'coupons' ) ) {
			$this->add_coupon_controls();
		}

		$this->start_controls_section(
			'payment_section',
			[
				'label' => esc_html__( 'Payment', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'terms_conditions_heading',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Terms &amp; Conditions', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'terms_conditions_message_text',
			[
				'label' => esc_html__( 'Message', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'label_block' => true,
				'default' => esc_html__( 'I have read and agree to the website', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_control(
			'terms_conditions_link_text',
			[
				'label' => esc_html__( 'Link Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'label_block' => true,
				'default' => esc_html__( 'terms and conditions', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_control(
			'purchase_buttom_heading',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Purchase Button', 'elementor-pro' ),
			]
		);

		$this->add_responsive_control(
			'purchase_button_alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Start', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'end' => [
						'title' => esc_html__( 'End', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Justify', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				'selectors' => [
					'{{WRAPPER}} .woocommerce-checkout' => '{{VALUE}}',
				],
				'selectors_dictionary' => [
					'start' => '--place-order-title-alignment: flex-start; --purchase-button-width: fit-content;',
					'center' => '--place-order-title-alignment: center; --purchase-button-width: fit-content;',
					'end' => '--place-order-title-alignment: flex-end; --purchase-button-width: fit-content;',
					'justify' => '--place-order-title-alignment: stretch; --purchase-button-width: 100%;',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_checkout_tabs_style',
			[
				'label' => esc_html__( 'Sections', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'sections_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--sections-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'section_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => $this->get_main_woocommerce_sections_selectors(),
			]
		);

		$this->add_control(
			'sections_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}}' => '--sections-border-type: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'sections_border_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					$this->get_main_woocommerce_sections_selectors() => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'sections_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'sections_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--sections-border-color: {{VALUE}};',
				],
				'condition' => [
					'sections_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'sections_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--sections-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'sections_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--sections-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
					// move the 'Ship to a different address?' checkbox
					'{{WRAPPER}} .woocommerce-shipping-fields' => '--shipping-heading-padding-start: {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'sections_margin',
			[
				'label' => esc_html__( 'Margin', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--sections-margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_checkout_tabs_typography',
			[
				'label' => esc_html__( 'Typography', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'sections_typography',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Titles', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'sections_title_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--sections-title-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'sections_titles_typography',
				'selector' => $this->get_main_woocommerce_sections_title_selectors(),
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'sections_titles_text_shadow',
				'label' => esc_html__( 'Text Shadow', 'elementor-pro' ),
				'selector' => $this->get_main_woocommerce_sections_title_selectors(),
			]
		);

		$this->add_responsive_control(
			'sections_title_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--sections-title-spacing: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'sections_secondary_typography',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Secondary Titles', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'sections_secondary_title_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--sections-secondary-title-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'sections_secondary_titles_typography',
				'selector' => '{{WRAPPER}} .e-checkout-secondary-title',
			]
		);

		$this->add_responsive_control(
			'sections_secondary_title_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--sections-secondary-title-spacing: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'sections_descriptions_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Descriptions', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'sections_descriptions_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--sections-descriptions-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'sections_descriptions_typography',
				'selector' => '{{WRAPPER}} .e-description',
			]
		);

		$this->add_responsive_control(
			'sections_descriptions_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--sections-descriptions-spacing: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'sections_messages_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Messages', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'sections_messages_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--sections-messages-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'sections_messages_typography',
				'selector' => '{{WRAPPER}} .woocommerce-checkout #payment .payment_box, {{WRAPPER}} .woocommerce-privacy-policy-text p, {{WRAPPER}} .e-checkout-message',
			]
		);

		$this->add_control(
			'sections_checkboxes_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Checkboxes', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'sections_checkboxes_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--sections-checkboxes-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'sections_checkboxes_typography',
				'selector' => '{{WRAPPER}} .woocommerce-form__label-for-checkbox span',
			]
		);

		$this->add_control(
			'sections_radio_buttons_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Radio Buttons', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'sections_radio_buttons_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--sections-radio-buttons-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'sections_radio_buttons_typography',
				'selector' => '{{WRAPPER}} .wc_payment_method label, {{WRAPPER}} #shipping_method li label',
			]
		);

		// Links
		$this->add_control(
			'sections_links_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Links', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->start_controls_tabs( 'links_colors' );

		$this->start_controls_tab( 'links_normal_colors', [
			'label' => esc_html__( 'Normal', 'elementor-pro' ),
		] );

		$this->add_control(
			'links_normal_color',
			[
				'label' => esc_html__( 'Link Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--links-normal-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'links_hover_colors', [
			'label' => esc_html__( 'Hover', 'elementor-pro' ),
		] );

		$this->add_control(
			'links_hover_color',
			[
				'label' => esc_html__( 'Link Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--links-hover-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();

		$this->start_controls_section(
			'section_checkout_tabs_forms',
			[
				'label' => esc_html__( 'Forms', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'forms_columns_gap',
			[
				'label' => esc_html__( 'Columns Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-columns-gap-padding: calc( {{SIZE}}{{UNIT}}/2 ); --forms-columns-gap-margin: calc( -{{SIZE}}{{UNIT}}/2 );',
				],
			]
		);

		$this->add_responsive_control(
			'forms_rows_gap',
			[
				'label' => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-rows-gap: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'forms_label_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Labels', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'forms_label_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-labels-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'forms_label_typography',
				'selector' => '{{WRAPPER}} .woocommerce-billing-fields .form-row label, {{WRAPPER}} .woocommerce-shipping-fields .form-row label, {{WRAPPER}} .woocommerce-additional-fields .form-row label, {{WRAPPER}} .e-woocommerce-login-anchor .form-row label, {{WRAPPER}} .e-coupon-anchor-description',
			]
		);

		$this->add_responsive_control(
			'forms_label_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-label-spacing: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'forms_field_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Fields', 'elementor-pro' ),
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'forms_field_typography',
				'selector' => '{{WRAPPER}} #customer_details .input-text, {{WRAPPER}} #customer_details .form-row textarea, {{WRAPPER}} #customer_details .form-row select, {{WRAPPER}} .e-woocommerce-login-anchor .input-text, {{WRAPPER}} #coupon_code, {{WRAPPER}} ::placeholder, {{WRAPPER}} .select2-container--default .select2-selection--single, .select2-results__option',
			]
		);

		$this->start_controls_tabs( 'forms_fields_styles' );

		$this->start_controls_tab( 'forms_fields_normal_styles', [
			'label' => esc_html__( 'Normal', 'elementor-pro' ),
		] );

		$this->add_control(
			'forms_fields_normal_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-normal-color: {{VALUE}};',
					'.e-woo-select2-wrapper .select2-results__option' => 'color: {{VALUE}};',
					// style select2 arrow
					'{{WRAPPER}} .select2-container--default .select2-selection--single .select2-selection__arrow b' => 'border-color: {{VALUE}} transparent transparent transparent;',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'forms_fields_normal_background',
				'selector' => '{{WRAPPER}} #customer_details .input-text, {{WRAPPER}}  #customer_details .form-row textarea, {{WRAPPER}} .woocommerce form #customer_details select, {{WRAPPER}} .e-woocommerce-login-anchor .input-text, {{WRAPPER}} #coupon_code, {{WRAPPER}} .select2-container--default .select2-selection--single, {{WRAPPER}} #payment .payment_box',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'forms_fields_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} #customer_details .input-text, {{WRAPPER}}  #customer_details .form-row textarea, {{WRAPPER}} .woocommerce form #customer_details select, {{WRAPPER}} .e-woocommerce-login-anchor .input-text, {{WRAPPER}} #coupon_code, {{WRAPPER}} .select2-container--default .select2-selection--single',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'forms_fields_focus_styles', [
			'label' => esc_html__( 'Focus', 'elementor-pro' ),
		] );

		$this->add_control(
			'forms_fields_focus_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-focus-color: {{VALUE}}',
					'.e-woo-select2-wrapper .select2-results__option:focus' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'forms_fields_focus_background',
				'selector' => '{{WRAPPER}} #customer_details .input-text:focus, {{WRAPPER}} #customer_details textarea:focus, {{WRAPPER}} #customer_details select:focus, {{WRAPPER}} .e-woocommerce-login-anchor .input-text:focus, {{WRAPPER}} #coupon_code:focus, {{WRAPPER}} .select2-container--default .select2-selection--single:focus',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'forms_fields_focus_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} #customer_details .input-text:focus, {{WRAPPER}} #customer_details textarea:focus, {{WRAPPER}} #customer_details select:focus, {{WRAPPER}} .e-woocommerce-login-anchor .input-text:focus, {{WRAPPER}} #coupon_code:focus, {{WRAPPER}} .select2-container--default .select2-selection--single:focus',
			]
		);

		$this->add_control(
			'forms_fields_focus_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-focus-border-color: {{VALUE}}',
				],
				'condition' => [
					'forms_fields_border_border!' => '',
				],
			]
		);

		$this->add_control(
			'forms_fields_focus_transition_duration',
			[
				'label' => esc_html__( 'Transition Duration', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-focus-transition-duration: {{SIZE}}ms',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 3000,
					],
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'forms_fields_border',
				'selector' => '{{WRAPPER}} #customer_details .input-text, {{WRAPPER}} #customer_details textarea, {{WRAPPER}} #customer_details select, {{WRAPPER}} .e-woocommerce-login-anchor .input-text, {{WRAPPER}} #coupon_code, {{WRAPPER}} .select2-container--default .select2-selection--single',
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'forms_fields_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'forms_fields_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-fields-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
					// style select2
					'{{WRAPPER}} .select2-container--default .select2-selection--single .select2-selection__rendered' => 'line-height: calc( ({{TOP}}{{UNIT}}*2) + 16px ); padding-left: {{LEFT}}{{UNIT}}; padding-right: {{RIGHT}}{{UNIT}};',
					'{{WRAPPER}} .select2-container--default .select2-selection--single .select2-selection__arrow' => 'height: calc( ({{TOP}}{{UNIT}}*2) + 16px ); right: {{RIGHT}}{{UNIT}};',
					'{{WRAPPER}} .select2-container--default .select2-selection--single' => 'height: auto;',
				],
				'separator' => 'after',
			]
		);

		$this->add_control(
			'forms_button_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Button', 'elementor-pro' ),
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'forms_button_typography',
				'selector' => '{{WRAPPER}} .woocommerce-button',
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'forms_button_text_shadow',
				'label' => esc_html__( 'Text Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .woocommerce-button',
			]
		);

		$this->start_controls_tabs( 'forms_buttons_styles' );

		$this->start_controls_tab( 'forms_buttons_normal_styles', [
			'label' => esc_html__( 'Normal', 'elementor-pro' ),
		] );

		$this->add_control(
			'forms_buttons_normal_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-normal-text-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'forms_buttons_normal_background',
				'selector' => '{{WRAPPER}} .woocommerce-button',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'forms_buttons_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .woocommerce-button',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'forms_buttons_hover_styles', [
			'label' => esc_html__( 'Hover', 'elementor-pro' ),
		] );

		$this->add_control(
			'forms_buttons_hover_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-hover-text-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'forms_buttons_hover_background',
				'selector' => '{{WRAPPER}} .woocommerce-button:hover',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'forms_buttons_focus_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .woocommerce-button:hover',
			]
		);

		$this->add_control(
			'forms_buttons_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-apply-coupon:hover, {{WRAPPER}} .woocommerce-form-login__submit:hover' => 'border-color: {{VALUE}}',
				],
				'condition' => [
					'forms_buttons_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'forms_buttons_hover_transition_duration',
			[
				'label' => esc_html__( 'Transition Duration', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-hover-transition-duration: {{SIZE}}ms',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 3000,
					],
				],
			]
		);

		$this->add_control(
			'forms_buttons_hover_animation',
			[
				'label' => esc_html__( 'Hover Animation', 'elementor-pro' ),
				'type' => Controls_Manager::HOVER_ANIMATION,
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'forms_buttons_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-border-type: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'forms_buttons_border_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-apply-coupon, {{WRAPPER}} .woocommerce-form-login__submit' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'forms_buttons_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'forms_buttons_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} ' => '--forms-buttons-border-color: {{VALUE}};',
				],
				'condition' => [
					'forms_buttons_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'forms_buttons_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--forms-buttons-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'forms_buttons_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}} .woocommerce-button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; width: auto;',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_checkout_tabs_order_summary',
			[
				'label' => esc_html__( 'Order Summary', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'order_summary_rows_gap',
			[
				'label' => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'default' => [ 'px' => 0 ],
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-rows-gap-top: calc( {{SIZE}}{{UNIT}}/2 ); --order-summary-rows-gap-bottom: calc( {{SIZE}}{{UNIT}}/2 );',
				],
			]
		);

		$this->add_control(
			'order_summary_items_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Items', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'order_summary_items_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-items-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'order_summary_items_typography',
				'selector' => '{{WRAPPER}} .woocommerce-checkout-review-order-table .cart_item td',
			]
		);

		$this->add_control(
			'order_summary_variations_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Variations', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'order_summary_variations_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-variations-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'order_summary_variations_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
				'selector' => '{{WRAPPER}} .product-name .variation',
			]
		);

		$this->add_control(
			'order_summary_items_divider_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Dividers', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'order_summary_items_divider_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-items-divider-color: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'order_summary_items_divider_weight',
			[
				'label' => esc_html__( 'Weight', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-items-divider-weight: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'order_summary_totals_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Titles & Totals', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'order_summary_totals_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-totals-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'order_summary_totals_typography',
				'selector' => '{{WRAPPER}} .woocommerce-checkout-review-order-table thead, {{WRAPPER}} .woocommerce-checkout-review-order-table tfoot',
			]
		);

		$this->add_control(
			'order_summary_dividers_total_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Divider Total', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'order_summary_totals_divider_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-totals-divider-color: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'order_summary_totals_divider_weight',
			[
				'label' => esc_html__( 'Weight', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}' => '--order-summary-totals-divider-weight: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_checkout_tabs_purchase_button',
			[
				'label' => esc_html__( 'Purchase Button', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'purchase_button_typography',
				'selector' => '{{WRAPPER}} .woocommerce #payment #place_order',
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'purchase_button_text_shadow',
				'label' => esc_html__( 'Text Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .woocommerce #payment #place_order',
			]
		);

		$this->start_controls_tabs( 'purchase_button_styles' );

		$this->start_controls_tab( 'purchase_button_normal_styles', [
			'label' => esc_html__( 'Normal', 'elementor-pro' ),
		] );

		$this->add_control(
			'purchase_button_normal_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--purchase-button-normal-text-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'purchase_button_normal_background',
				'selector' => '{{WRAPPER}} #payment #place_order',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'purchase_button_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} #place_order',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'purchase_button_hover_styles', [
			'label' => esc_html__( 'Hover', 'elementor-pro' ),
		] );

		$this->add_control(
			'purchase_button_hover_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--purchase-button-hover-text-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'purchase_button_hover_background',
				'selector' => '{{WRAPPER}} #payment #place_order:hover',
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'purchase_button_hover_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} #place_order:hover',
			]
		);

		$this->add_control(
			'purchase_button_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--purchase-button-hover-border-color: {{VALUE}}',
				],
				'condition' => [
					'purchase_button_border_border!' => '',
				],
			]
		);

		$this->add_control(
			'purchase_button_hover_transition_duration',
			[
				'label' => esc_html__( 'Transition Duration', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}}' => '--purchase-button-hover-transition-duration: {{SIZE}}ms',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 3000,
					],
				],
			]
		);

		$this->add_control(
			'purchase_button_hover_animation',
			[
				'label' => esc_html__( 'Hover Animation', 'elementor-pro' ),
				'type' => Controls_Manager::HOVER_ANIMATION,
				'frontend_available' => true,
				'render_type' => 'template',
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'purchase_button_border',
				'selector' => '{{WRAPPER}} #place_order',
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'purchase_button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--purchase-button-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'purchase_button_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}' => '--purchase-button-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; --purchase-button-width: fit-content;',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_checkout_tabs_customize',
			[
				'label' => esc_html__( 'Customize', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$customize_options = [];

		if ( $this->is_wc_feature_active( 'checkout_login_reminder' ) ) {
			$customize_options += [
				'customize_returning_customer' => esc_html__( 'Returning Customer', 'elementor-pro' ),
			];
		}

		$customize_options += [
			'customize_billing_details' => esc_html__( 'Billing Details', 'elementor-pro' ),
			'customize_additional_info' => esc_html__( 'Additional Information', 'elementor-pro' ),
		];

		if ( $this->is_wc_feature_active( 'shipping' ) ) {
			$customize_options += [
				'customize_shipping_address' => esc_html__( 'Shipping Address', 'elementor-pro' ),
			];
		}

		$customize_options += [
			'customize_order_summary' => esc_html__( 'Order Summary', 'elementor-pro' ),
		];

		if ( $this->is_wc_feature_active( 'coupons' ) ) {
			$customize_options += [
				'customize_coupon' => esc_html__( 'Coupon', 'elementor-pro' ),
			];
		}

		$customize_options += [
			'customize_payment' => esc_html__( 'Payment', 'elementor-pro' ),
		];

		$this->add_control(
			'section_checkout_show_customize_elements',
			[
				'label' => esc_html__( 'Select sections of the checkout to customize:', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'multiple' => true,
				'options' => $customize_options,
				'render_type' => 'ui',
				'label_block' => true,
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_checkout_tabs_customize_returning_customer',
			[
				'label' => esc_html__( 'Customize: Returning Customer', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'section_checkout_show_customize_elements' => 'customize_returning_customer',
				],
			]
		);

		$this->add_control(
			'returning_customers_section_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Section', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'customize_returning_customer_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-woocommerce-login-section' => '--sections-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'returning_customers_section_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .e-woocommerce-login-section',
			]
		);

		$this->add_control(
			'returning_customers_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}} .e-woocommerce-login-section' => '--sections-border-type: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'returning_customers_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-woocommerce-login-section' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'returning_customers_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'returning_customers_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-woocommerce-login-section' => '--sections-border-color: {{VALUE}};',
				],
				'condition' => [
					'returning_customers_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'returning_customers_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-woocommerce-login-section' => '--sections-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'returning_customers_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-woocommerce-login-section' => '--sections-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'returning_customers_margin',
			[
				'label' => esc_html__( 'Margin', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-woocommerce-login-section' => '--sections-margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'separator' => 'after',
			]
		);

		$this->add_control(
			'returning_customers_secondary_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Secondary Title', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'returning_customers_secondary_title_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-form-login-toggle' => '--sections-secondary-title-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'returning_customers_content_typography',
				'selector' => '{{WRAPPER}} .woocommerce-form-login-toggle',
			]
		);

		$this->add_control(
			'returning_customers_description_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Description', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'returning_customers_description_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-woocommerce-login-nudge' => '--sections-descriptions-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'returning_customers_description_typography',
				'selector' => '{{WRAPPER}} .e-woocommerce-login-nudge.e-description',
			]
		);

		$this->add_control(
			'returning_customers_checkboxes_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Checkbox', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'returning_customers_checkboxes_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-woocommerce-login-section' => '--sections-checkboxes-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'returning_customers_checkboxes_typography',
				'selector' => '{{WRAPPER}} .e-woocommerce-login-section .woocommerce-form__label-for-checkbox span',
			]
		);

		$this->add_control(
			'returning_customers_link_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Link', 'elementor-pro' ),
			]
		);

		$this->start_controls_tabs( 'returning_customers_links' );

		$this->start_controls_tab( 'returning_customers_normal_links', [
			'label' => esc_html__( 'Normal', 'elementor-pro' ),
		] );

		$this->add_control(
			'returning_customers_normal_links_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-woocommerce-login-section' => '--links-normal-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'returning_customers_hover_links', [
			'label' => esc_html__( 'Hover', 'elementor-pro' ),
		] );

		$this->add_control(
			'returning_customers_hover_links_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-woocommerce-login-section' => '--links-hover-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();

		$this->start_controls_section(
			'section_checkout_tabs_customize_billing_details',
			[
				'label' => esc_html__( 'Customize: Billing Details', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'section_checkout_show_customize_elements' => 'customize_billing_details',
				],
			]
		);

		$this->add_control(
			'customize_billing_details_section_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Section', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'customize_billing_details_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .col2-set .col-1' => '--sections-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'billing_details_section_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .e-checkout__column-start .col2-set .col-1',
			]
		);

		$this->add_control(
			'billing_details_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}} .col2-set .col-1' => '--sections-border-type: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'billing_details_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-checkout__column-start #customer_details .col-1' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'billing_details_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'billing_details_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .col2-set .col-1' => '--sections-border-color: {{VALUE}}',
				],
				'condition' => [
					'billing_details_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'billing_details_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .col2-set .col-1' => '--sections-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'billing_details_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .col2-set .col-1' => '--sections-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'billing_details_margin',
			[
				'label' => esc_html__( 'Margin', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .col2-set .col-1' => '--sections-margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'separator' => 'after',
			]
		);

		$this->add_control(
			'billing_details_titles_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Title', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'billing_details_titles_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .col2-set .col-1' => '--sections-title-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'billing_details_titles_typography',
				'selector' => '{{WRAPPER}} .woocommerce-billing-fields h3',
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'billing_details_titles_text_shadow',
				'label' => esc_html__( 'Text Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .woocommerce-billing-fields h3',
			]
		);

		$this->add_control(
			'billing_details_checkboxes_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Checkbox', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'billing_details_checkboxes_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .col2-set .col-1' => '--sections-checkboxes-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'billing_details_checkboxes_typography',
				'selector' => '{{WRAPPER}} .col2-set .col-1 .woocommerce-form__label-for-checkbox span',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_checkout_tabs_customize_additional_info',
			[
				'label' => esc_html__( 'Customize: Additional Information', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'section_checkout_show_customize_elements' => 'customize_additional_info',
				],
			]
		);

		$this->add_control(
			'customize_additional_information_section_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Section', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'customize_additional_information_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-additional-fields' => '--sections-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'additional_information_section_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .woocommerce-additional-fields',
			]
		);

		$this->add_control(
			'additional_information_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}} .woocommerce-additional-fields' => '--sections-border-type: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'additional_information_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .woocommerce-additional-fields' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'additional_information_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'additional_information_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-additional-fields' => '--sections-border-color: {{VALUE}};',
				],
				'condition' => [
					'additional_information_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'additional_information_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .woocommerce-additional-fields' => '--sections-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'additional_information_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}} .woocommerce-additional-fields' => '--sections-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'additional_information_margin',
			[
				'label' => esc_html__( 'Margin', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .woocommerce-additional-fields' => '--sections-margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
					'{{WRAPPER}}.e-checkout-layout-one-column .e-checkout__container' => 'grid-row-gap: {{BOTTOM}}{{UNIT}};',
				],
				'separator' => 'after',
			]
		);

		$this->add_control(
			'additional_information_titles_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Title', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'additional_information_titles_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-additional-fields' => '--sections-title-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'additional_information_titles_typography',
				'selector' => '{{WRAPPER}} .woocommerce-additional-fields h3',
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'additional_information_titles_text_shadow',
				'label' => esc_html__( 'Text Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .woocommerce-additional-fields h3',
			]
		);

		$this->end_controls_section();

		if ( $this->is_wc_feature_active( 'shipping' ) ) {
			$this->add_shipping_style_controls();
		}

		if ( $this->is_wc_feature_active( 'coupons' ) ) {
			$this->add_coupons_style_controls();
		}

		$this->start_controls_section(
			'section_checkout_tabs_customize_order_summary',
			[
				'label' => esc_html__( 'Customize: Order Summary', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'section_checkout_show_customize_elements' => 'customize_order_summary',
				],
			]
		);

		$this->add_control(
			'customize_order_summary_section_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Section', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'customize_order_summary_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-checkout__order_review' => '--sections-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'order_summary_section_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .e-checkout__order_review',
			]
		);

		$this->add_control(
			'order_summary_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}} .e-checkout__order_review' => '--sections-border-type: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'order_summary_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-checkout__order_review' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'order_summary_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'order_summary_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-checkout__order_review' => '--sections-border-color: {{VALUE}}',
				],
				'condition' => [
					'order_summary_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'order_summary_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-checkout__order_review' => '--sections-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'order_summary_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-checkout__order_review' => '--sections-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'order_summary_margin',
			[
				'label' => esc_html__( 'Margin', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-checkout__order_review' => '--sections-margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'separator' => 'after',
			]
		);

		$this->add_control(
			'order_summary_titles_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Title', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'order_summary_titles_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-checkout__order_review' => '--sections-title-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'order_summary_titles_typography',
				'selector' => '{{WRAPPER}} h3#order_review_heading',
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'order_summary_titles_text_shadow',
				'label' => esc_html__( 'Text Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} h3#order_review_heading',
			]
		);

		$this->add_control(
			'order_summary_descriptions_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Message', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'order_summary_descriptions_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-checkout__order_review' => '--sections-descriptions-color: {{VALUE}}; --sections-messages-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'order_summary_descriptions_typography',
				'selector' => '{{WRAPPER}} .woocommerce-no-shipping-available-html.e-description, {{WRAPPER}} .woocommerce-no-shipping-available-html.e-checkout-message',
			]
		);

		$this->add_control(
			'order_summary_radios_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Radio Button', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'order_summary_radios_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-checkout__order_review' => '--sections-radio-buttons-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'order_summary_radio_typography',
				'selector' => '{{WRAPPER}} .woocommerce .e-checkout__order_review ul#shipping_method li label',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_checkout_tabs_customize_payment',
			[
				'label' => esc_html__( 'Customize: Payment', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'section_checkout_show_customize_elements' => 'customize_payment',
				],
			]
		);

		$this->add_control(
			'customize_payment_section_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Section', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'customize_payment_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-checkout #payment' => '--sections-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'payment_section_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .woocommerce-checkout #payment',
			]
		);

		$this->add_control(
			'payment_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}} .woocommerce-checkout #payment' => '--sections-border-type: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'payment_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .woocommerce-checkout #payment' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'payment_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'payment_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-checkout #payment' => '--sections-border-color: {{VALUE}};',
				],
				'condition' => [
					'payment_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'payment_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .woocommerce-checkout #payment' => '--sections-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'payment_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .woocommerce-checkout #payment' => '--sections-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'payment_margin',
			[
				'label' => esc_html__( 'Margin', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .woocommerce-checkout #payment' => '--sections-margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'separator' => 'after',
			]
		);

		$this->add_control(
			'payment_info_box_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Info Box', 'elementor-pro' ),
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'payment_info_box_title_background',
				'selector' => '{{WRAPPER}} #payment .payment_box',
			]
		);

		$this->add_control(
			'payment_description_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Description', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'payment_description_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-checkout-payment' => '--sections-descriptions-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'payment_description_typography',
				'selector' => '{{WRAPPER}} .woocommerce-checkout-payment .e-description',
			]
		);

		$this->add_control(
			'payment_messages_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Message', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'payment_messages_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-checkout-payment' => '--sections-messages-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'payment_messages_typography',
				'selector' => '{{WRAPPER}} .woocommerce-checkout #payment .payment_box, {{WRAPPER}} .woocommerce-privacy-policy-text p',
			]
		);

		$this->add_control(
			'payment_checkboxes_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Checkbox', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'payment_checkboxes_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-terms-and-conditions-wrapper' => '--sections-checkboxes-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'payment_checkboxes_typography',
				'selector' => '{{WRAPPER}} .woocommerce-terms-and-conditions-wrapper .woocommerce-form__label-for-checkbox span',
			]
		);

		$this->add_control(
			'payment_radio_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Radio Button', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'payment_radio_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-checkout-payment' => '--sections-radio-buttons-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'payment_radio_typography',
				'selector' => '{{WRAPPER}} .woocommerce-checkout-payment .wc_payment_method label',
			]
		);

		$this->add_control(
			'payment_links_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Links', 'elementor-pro' ),
			]
		);

		$this->start_controls_tabs( 'payment_colors' );

		$this->start_controls_tab( 'payment_normal_colors', [
			'label' => esc_html__( 'Normal', 'elementor-pro' ),
		] );

		$this->add_control(
			'payment_normal_color',
			[
				'label' => esc_html__( 'Link Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-checkout-payment' => '--links-normal-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'payment_hover_colors', [
			'label' => esc_html__( 'Hover', 'elementor-pro' ),
		] );

		$this->add_control(
			'payment_hover_color',
			[
				'label' => esc_html__( 'Link Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-checkout-payment' => '--links-hover-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();
	}

	private function add_checkout_login_reminder_controls() {
		$this->start_controls_section(
			'returning_customer_heading',
			[
				'label' => esc_html__( 'Returning Customer', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'returning_customer_section_title',
			[
				'label' => esc_html__( 'Section Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Returning customer?', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_control(
			'returning_customer_link_text',
			[
				'label' => esc_html__( 'Link Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Click here to login', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_responsive_control(
			'returning_customer_title_alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Start', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'end' => [
						'title' => esc_html__( 'End', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--login-title-alignment: {{VALUE}};',
				],
			]
		);

		$this->end_controls_section();
	}

	private function add_shipping_controls() {
		$this->start_controls_section(
			'shipping_details_section',
			[
				'label' => esc_html__( 'Shipping Details', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'shipping_details_section_title',
			[
				'label' => esc_html__( 'Section Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Ship to a different address?', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$repeater = new Repeater();

		$repeater->add_control(
			'repeater_state',
			[
				'label' => esc_html__( 'Repeater State - hidden', 'elementor-pro' ),
				'type' => Controls_Manager::HIDDEN,
			]
		);

		$repeater->add_control(
			'label_placeholder_notification',
			[
				'raw' => __( 'Note: This label and placeholder are taken from the Billing section. You can change it there.', 'elementor-pro' ),
				'type' => Controls_Manager::RAW_HTML,
				'content_classes' => 'elementor-descriptor',
				'condition' => [
					'repeater_state' => 'from_billing',
				],
			]
		);

		$repeater->start_controls_tabs( 'tabs', [
			'condition' => [
				'repeater_state' => '',
			],
		] );

		$repeater->start_controls_tab( 'content_tab', [
			'label' => esc_html__( 'Content', 'elementor-pro' ),
		] );

		$repeater->add_control(
			'label',
			[
				'label' => esc_html__( 'Label', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$repeater->add_control(
			'placeholder',
			[
				'label' => esc_html__( 'Placeholder', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$repeater->end_controls_tab();

		$repeater->start_controls_tab( 'advanced_tab', [
			'label' => esc_html__( 'Advanced', 'elementor-pro' ),
		] );

		$repeater->add_control(
			'default',
			[
				'label' => esc_html__( 'Default Value', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$repeater->end_controls_tab();

		$repeater->end_controls_tabs();

		$repeater->add_control(
			'locale_notice',
			[
				'raw' => __( 'Note: This content cannot be changed due to local regulations.', 'elementor-pro' ),
				'type' => Controls_Manager::RAW_HTML,
				'content_classes' => 'elementor-descriptor',
				'condition' => [
					'repeater_state' => 'locale',
				],
			]
		);

		$repeater->add_control(
			'from_billing_notice',
			[
				'raw' => __( 'Note: This label and placeholder are taken from the Billing section. You can change it there.', 'elementor-pro' ),
				'type' => Controls_Manager::RAW_HTML,
				'content_classes' => 'elementor-descriptor',
				'condition' => [
					'repeater_state' => 'from_billing',
				],
			]
		);

		$this->add_control(
			'shipping_details_form_fields',
			[
				'label' => esc_html__( 'Form Items', 'elementor-pro' ),
				'type' => Controls_Manager::REPEATER,
				'fields' => $repeater->get_controls(),
				'item_actions' => [
					'add' => false,
					'duplicate' => false,
					'remove' => false,
					'sort' => false,
				],
				'default' => $this->get_shipping_field_defaults(),
				'title_field' => '{{{ label }}}',
			]
		);

		$this->end_controls_section();
	}

	private function add_signup_and_login_from_checkout_controls() {
		$this->start_controls_section(
			'create_account_section',
			[
				'label' => esc_html__( 'Create an Account', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'create_account_text',
			[
				'label' => esc_html__( 'Section Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Create an account?', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->end_controls_section();
	}

	private function add_coupon_controls() {
		$this->start_controls_section(
			'coupon_section',
			[
				'label' => esc_html__( 'Coupon', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'coupon_section_title_text',
			[
				'label' => esc_html__( 'Section Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Have a coupon?', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_control(
			'coupon_section_title_link_text',
			[
				'label' => esc_html__( 'Link Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Click here to enter your coupon code', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_responsive_control(
			'coupon_alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Start', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'end' => [
						'title' => esc_html__( 'End', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--coupon-title-alignment: {{VALUE}};',
				],
			]
		);

		$this->end_controls_section();
	}

	private function add_shipping_style_controls() {
		$this->start_controls_section(
			'section_checkout_tabs_customize_shipping_address',
			[
				'label' => esc_html__( 'Customize: Shipping Address', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'section_checkout_show_customize_elements' => 'customize_shipping_address',
				],
			]
		);

		$this->add_control(
			'shipping_address_section_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Section', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'customize_shipping_address_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-shipping-fields .shipping_address' => '--sections-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'shipping_address_section_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .woocommerce-shipping-fields .shipping_address',
			]
		);

		$this->add_control(
			'shipping_address_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}} .woocommerce-shipping-fields .shipping_address' => '--sections-border-type: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'shipping_address_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .woocommerce-shipping-fields .shipping_address' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'shipping_address_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'shipping_address_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-shipping-fields .shipping_address' => '--sections-border-color: {{VALUE}}',
				],
				'condition' => [
					'shipping_address_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'shipping_address_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .woocommerce-shipping-fields .shipping_address' => '--sections-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'shipping_address_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .woocommerce-shipping-fields .shipping_address' => '--sections-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'shipping_address_margin',
			[
				'label' => esc_html__( 'Margin', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .woocommerce-shipping-fields .shipping_address' => '--sections-margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'separator' => 'after',
			]
		);

		$this->add_control(
			'shipping_address_checkboxes_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Checkboxes', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'shipping_address_checkboxes_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .woocommerce-shipping-fields' => '--sections-checkboxes-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'shipping_address_checkboxes_typography',
				'selector' => '{{WRAPPER}} .woocommerce-shipping-fields .woocommerce-form__label-for-checkbox span',
			]
		);

		$this->end_controls_section();
	}

	private function add_coupons_style_controls() {
		$this->start_controls_section(
			'section_checkout_tabs_customize_coupon',
			[
				'label' => esc_html__( 'Customize: Coupon', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'section_checkout_show_customize_elements' => 'customize_coupon',
				],
			]
		);

		$this->add_control(
			'customize_coupon_section_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Section', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'customize_coupon_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-coupon-box' => '--sections-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'coupon_section_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .e-coupon-box',
			]
		);

		$this->add_control(
			'coupon_border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->get_custom_border_type_options(),
				'selectors' => [
					'{{WRAPPER}} .e-coupon-box' => '--sections-border-type: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'coupon_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-coupon-box' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'coupon_border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'coupon_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-coupon-box' => '--sections-border-color: {{VALUE}};',
				],
				'condition' => [
					'coupon_border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'coupon_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-coupon-box' => '--sections-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'coupon_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-coupon-box' => '--sections-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'coupon_margin',
			[
				'label' => esc_html__( 'Margin', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .e-coupon-box' => '--sections-margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'separator' => 'after',
			]
		);

		$this->add_control(
			'coupon_secondary_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Secondary Title', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'coupon_secondary_title_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-woocommerce-coupon-nudge' => '--sections-secondary-title-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'coupon_content_typography',
				'selector' => '{{WRAPPER}} .e-woocommerce-coupon-nudge.e-checkout-secondary-title',
			]
		);

		$this->add_control(
			'coupon_link_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Link', 'elementor-pro' ),
			]
		);

		$this->start_controls_tabs( 'coupon_links' );

		$this->start_controls_tab( 'coupon_normal_links', [
			'label' => esc_html__( 'Normal', 'elementor-pro' ),
		] );

		$this->add_control(
			'coupon_normal_links_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-coupon-box' => '--links-normal-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'coupon_hover_links', [
			'label' => esc_html__( 'Hover', 'elementor-pro' ),
		] );

		$this->add_control(
			'coupon_hover_links_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .e-coupon-box' => '--links-hover-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();
	}

	/**
	 * Get Billing Field Defaults
	 *
	 * Get defaults used for the billing details repeater control.
	 *
	 * @since 3.5.0
	 *
	 * @return array
	 */
	private function get_billing_field_defaults() {
		$fields = [
			'billing_first_name' => [
				'label' => esc_html__( 'First Name', 'elementor-pro' ),
				'repeater_state' => '',
			],
			'billing_last_name' => [
				'label' => esc_html__( 'Last Name', 'elementor-pro' ),
				'repeater_state' => '',
			],
			'billing_company' => [
				'label' => esc_html__( 'Company Name', 'elementor-pro' ),
				'repeater_state' => '',
			],
			'billing_country' => [
				'label' => esc_html__( 'Country / Region', 'elementor-pro' ),
				'repeater_state' => 'locale',
			],
			'billing_address_1' => [
				'label' => esc_html__( 'Street Address', 'elementor-pro' ),
				'repeater_state' => 'locale',
			],
			'billing_postcode' => [
				'label' => esc_html__( 'Post Code', 'elementor-pro' ),
				'repeater_state' => 'locale',
			],
			'billing_city' => [
				'label' => esc_html__( 'Town / City', 'elementor-pro' ),
				'repeater_state' => 'locale',
			],
			'billing_state' => [
				'label' => esc_html__( 'State', 'elementor-pro' ),
				'repeater_state' => 'locale',
			],
			'billing_phone' => [
				'label' => esc_html__( 'Phone', 'elementor-pro' ),
				'repeater_state' => '',
			],
			'billing_email' => [
				'label' => esc_html__( 'Email Address', 'elementor-pro' ),
				'repeater_state' => '',
			],
		];

		return $this->reformat_address_field_defaults( $fields );
	}

	/**
	 * Get Shipping Field Defaults
	 *
	 * Get defaults used for the shipping details repeater control.
	 *
	 * @since 3.5.0
	 *
	 * @return array
	 */
	private function get_shipping_field_defaults() {
		$fields = [
			'shipping_first_name' => [
				'label' => esc_html__( 'First Name', 'elementor-pro' ),
				'repeater_state' => '',
			],
			'shipping_last_name' => [
				'label' => esc_html__( 'Last Name', 'elementor-pro' ),
				'repeater_state' => '',
			],
			'shipping_company' => [
				'label' => esc_html__( 'Company Name', 'elementor-pro' ),
				'repeater_state' => '',
			],
			'shipping_country' => [
				'label' => esc_html__( 'Country / Region', 'elementor-pro' ),
				'repeater_state' => 'locale',
			],
			'shipping_address_1' => [
				'label' => esc_html__( 'Street Address', 'elementor-pro' ),
				'repeater_state' => 'locale',
			],
			'shipping_postcode' => [
				'label' => esc_html__( 'Post Code', 'elementor-pro' ),
				'repeater_state' => 'locale',
			],
			'shipping_city' => [
				'label' => esc_html__( 'Town / City', 'elementor-pro' ),
				'repeater_state' => 'locale',
			],
			'shipping_state' => [
				'label' => esc_html__( 'State', 'elementor-pro' ),
				'repeater_state' => 'locale',
			],
		];

		return $this->reformat_address_field_defaults( $fields );
	}

	/**
	 * Reformat Address Field Defaults
	 *
	 * Used with the `get_..._field_defaults()` methods.
	 * Takes the address array and converts it into the format expected by the repeater controls.
	 *
	 * @since 3.5.0
	 *
	 * @param $address
	 * @return array
	 */
	private function reformat_address_field_defaults( $address ) {
		$defaults = [];
		foreach ( $address as $key => $value ) {
			$defaults[] = [
				'field_key' => $key,
				'field_label' => $value['label'],
				'label' => $value['label'],
				'placeholder' => $value['label'],
				'repeater_state' => $value['repeater_state'],
			];
		}

		return $defaults;
	}

	/**
	 * Get Main Woocommerce Sections Selectors
	 *
	 * Get all the 'Sections' selectors. There are numerous controls that need these selectors so it was easier
	 * to consolidate them into one function. Especially when updates need to be made.
	 *
	 * @since 3.5.0
	 *
	 * @return string
	 */
	private function get_main_woocommerce_sections_selectors() {
		$selector = '{{WRAPPER}} .e-woocommerce-login-section, {{WRAPPER}} .woocommerce-checkout #customer_details .col-1, {{WRAPPER}} .woocommerce-additional-fields, {{WRAPPER}} .e-checkout__order_review, {{WRAPPER}} .e-coupon-box, {{WRAPPER}} .woocommerce-checkout #payment';
		if ( $this->is_wc_feature_active( 'shipping' ) ) {
			$selector .= ', {{WRAPPER}} .woocommerce-shipping-fields .shipping_address';
		}
		return $selector;
	}

	/**
	 * Get Main Woocommerce Sections Title Selectors
	 *
	 * Get all the 'Title' selectors. There are numerous controls that need these selectors so it was easier to
	 * consolidate them into one function. Especially when updates need to be made.
	 *
	 * @since 3.5.0
	 *
	 * @return string
	 */
	private function get_main_woocommerce_sections_title_selectors() {
		return '{{WRAPPER}} h3#order_review_heading, {{WRAPPER}} .woocommerce-billing-fields h3, {{WRAPPER}} .woocommerce-additional-fields h3';
	}

	/**
	 * Init Gettext Modifications
	 *
	 * Sets the `$gettext_modifications` property used with the `filter_gettext()` in the extended Base_Widget.
	 *
	 * @since 3.5.0
	 */
	protected function init_gettext_modifications() {
		$instance = $this->get_settings_for_display();

		$this->gettext_modifications = [
			'Billing details' => isset( $instance['billing_details_section_title'] ) ? $instance['billing_details_section_title'] : '',
			'Billing &amp; Shipping' => isset( $instance['billing_details_section_title'] ) ? $instance['billing_details_section_title'] : '',
			'Ship to a different address?' => isset( $instance['shipping_details_section_title'] ) ? $instance['shipping_details_section_title'] : '',
			'Additional information' => isset( $instance['additional_information_section_title'] ) ? $instance['additional_information_section_title'] : '',
			'Your order' => isset( $instance['order_summary_section_title'] ) ? $instance['order_summary_section_title'] : '',
			'Have a coupon?' => isset( $instance['coupon_section_title_text'] ) ? $instance['coupon_section_title_text'] : '',
			'Click here to enter your coupon code' => isset( $instance['coupon_section_title_link_text'] ) ? $instance['coupon_section_title_link_text'] : '',
			'Returning customer?' => isset( $instance['returning_customer_section_title'] ) ? $instance['returning_customer_section_title'] : '',
			'Click here to login' => isset( $instance['returning_customer_link_text'] ) ? $instance['returning_customer_link_text'] : '',
			'Create an account?' => isset( $instance['create_account_text'] ) ? $instance['create_account_text'] : '',
		];
	}

	/**
	 * WooCommerce Terms and Conditions Checkbox Text.
	 *
	 * WooCommerce filter is used to apply widget settings to Checkout Terms & Conditions text and link text.
	 *
	 * @since 3.5.0
	 *
	 * @param string $text
	 * @return string
	 */
	public function woocommerce_terms_and_conditions_checkbox_text( $text ) {
		$instance = $this->get_settings_for_display();

		if ( ! isset( $instance['terms_conditions_message_text'] ) || ! isset( $instance['terms_conditions_link_text'] ) ) {
			return $text;
		}

		$message = $instance['terms_conditions_message_text'];
		$link = $instance['terms_conditions_link_text'];

		$terms_page_id = wc_terms_and_conditions_page_id();
		if ( $terms_page_id ) {
			$message .= ' <a href="' . esc_url( get_permalink( $terms_page_id ) ) . '" class="woocommerce-terms-and-conditions-link" target="_blank">' . $link . '</a>';
		}

		return $message;
	}

	/**
	 * Modify Form Field.
	 *
	 * WooCommerce filter is used to apply widget settings to the Checkout forms address fields
	 * from the Billing and Shipping Details widget sections, e.g. label, placeholder, default.
	 *
	 * @since 3.5.0
	 *
	 * @param array $args
	 * @param string $key
	 * @param string $value
	 * @return array
	 */
	public function modify_form_field( $args, $key, $value ) {
		$reformatted_form_fields = $this->get_reformatted_form_fields();

		// Check if we need to modify the args of this form field.
		if ( isset( $reformatted_form_fields[ $key ] ) ) {
			$apply_fields = [
				'label',
				'placeholder',
				'default',
			];

			foreach ( $apply_fields as $field ) {
				if ( ! empty( $reformatted_form_fields[ $key ][ $field ] ) ) {
					$args[ $field ] = $reformatted_form_fields[ $key ][ $field ];
				}
			}
		}

		return $args;
	}

	/**
	 * Get Reformatted Form Fields.
	 *
	 * Combines the 3 relevant repeater settings arrays into a one level deep associative array
	 * with the keys that match those that WooCommerce uses for its form fields.
	 *
	 * The result is cached so the conversion only ever happens once.
	 *
	 * @since 3.5.0
	 *
	 * @return array
	 */
	private function get_reformatted_form_fields() {
		if ( ! isset( $this->reformatted_form_fields ) ) {
			$instance = $this->get_settings_for_display();

			// Reformat form repeater field into one usable array.
			$repeater_fields = [
				'billing_details_form_fields',
				'shipping_details_form_fields',
				'additional_information_form_fields',
			];

			$this->reformatted_form_fields = [];

			// Apply other modifications to inputs.
			foreach ( $repeater_fields as $repeater_field ) {
				if ( isset( $instance[ $repeater_field ] ) ) {
					foreach ( $instance[ $repeater_field ] as $item ) {
						if ( ! isset( $item['field_key'] ) ) {
							continue;
						}
						$this->reformatted_form_fields[ $item['field_key'] ] = $item;
					}
				}
			}
		}

		return $this->reformatted_form_fields;
	}

	/**
	 * Render Woocommerce Checkout Login Form
	 *
	 * A custom function to render a login form on the Checkout widget. The default WC Login form
	 * was removed in this file's render() method with:
	 * remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_login_form' );
	 *
	 * And then we are adding this form into the widget at the
	 * 'woocommerce_checkout_before_customer_details' hook.
	 *
	 * We are doing this in order to match the placement of the Login form to the provided design.
	 * WC places these forms ABOVE the checkout form section where as we needed to place them inside the
	 * checkout form section. So we removed the default login form and added our own form.
	 *
	 * @since 3.5.0
	 */
	private function render_woocommerce_checkout_login_form() {
		$settings = $this->get_settings_for_display();
		$button_classes = [ 'woocommerce-button', 'button', 'woocommerce-form-login__submit', 'e-woocommerce-form-login-submit' ];
		if ( $settings['forms_buttons_hover_animation'] ) {
			$button_classes[] = 'elementor-animation-' . $settings['forms_buttons_hover_animation'];
		}
		$this->add_render_attribute(
			'button_login', [
				'class' => $button_classes,
				'name' => 'login',
				'type' => 'submit',
			]
		);
		?>
		<div class="e-woocommerce-login-section">
			<div class="elementor-woocommerce-login-messages"></div>
			<div class="woocommerce-form-login-toggle e-checkout-secondary-title">
				<?php echo esc_html__( 'Returning customer?', 'elementor-pro' ) . ' <a href="#" class="e-show-login">' . esc_html__( 'Click here to login', 'elementor-pro' ) . '</a>'; ?>
			</div>
			<div class="e-woocommerce-login-anchor" style="display:none;">
				<p class="e-woocommerce-login-nudge e-description"><?php echo esc_html__( 'If you have shopped with us before, please enter your details below. If you are a new customer, please proceed to the Billing section.', 'elementor-pro' ); ?></p>

				<div class="e-login-wrap">
					<div class="e-login-wrap-start">
						<p class="form-row form-row-first">
							<label for="username"><?php esc_html_e( 'Email', 'elementor-pro' ); ?> <span class="required">*</span></label>
							<input type="text" class="input-text" name="username" id="username" autocomplete="username" />
						</p>
						<p class="form-row form-row-last">
							<label for="password"><?php esc_html_e( 'Password', 'elementor-pro' ); ?> <span class="required">*</span></label>
							<input class="input-text" type="password" name="password" id="password" autocomplete="current-password" />
						</p>
						<div class="clear"></div>
					</div>

					<div class="e-login-wrap-end">
						<p class="form-row">
							<label for="login" class="e-login-label">&nbsp;</label>
							<?php wp_nonce_field( 'woocommerce-login', 'woocommerce-login-nonce' ); ?>
							<input type="hidden" name="redirect" value="<?php echo esc_url( get_permalink() ); ?>" />
							<button <?php $this->print_render_attribute_string( 'button_login' ); ?> value="<?php esc_attr_e( 'Login', 'elementor-pro' ); ?>"><?php esc_html_e( 'Login', 'elementor-pro' ); ?></button>
						</p>
						<div class="clear"></div>
					</div>
				</div>

				<div class="e-login-actions-wrap">
					<div class="e-login-actions-wrap-start">
						<label class="woocommerce-form__label woocommerce-form__label-for-checkbox woocommerce-form-login__rememberme">
							<input class="woocommerce-form__input woocommerce-form__input-checkbox" name="rememberme" type="checkbox" id="rememberme" value="forever" /> <span class="elementor-woocomemrce-login-rememberme"><?php esc_html_e( 'Remember me', 'elementor-pro' ); ?></span>
						</label>
					</div>

					<div class="e-login-actions-wrap-end">
						<p class="lost_password">
							<a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php esc_html_e( 'Lost your password?', 'elementor-pro' ); ?></a>
						</p>
					</div>
				</div>

			</div>
		</div>
		<?php
	}

	/**
	 * Render Woocommerce Checkout Coupon Form
	 *
	 * A custom function to render a coupon form on the Checkout widget. The default WC coupon form
	 * was removed in this file's render() method with:
	 * remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_login_form' );
	 *
	 * And then we are adding this form into the widget at the
	 * 'woocommerce_checkout_order_review' hook.
	 *
	 * We are doing this in order to match the placement of the coupon form to the provided design.
	 * WC places these forms ABOVE the checkout form section where as we needed to place them inside the
	 * checkout form section. So we removed the default coupon form and added our own form.
	 *
	 * @since 3.5.0
	 */
	private function render_woocommerce_checkout_coupon_form() {
		$settings = $this->get_settings_for_display();
		$button_classes = [ 'woocommerce-button', 'button', 'e-apply-coupon' ];
		if ( $settings['forms_buttons_hover_animation'] ) {
			$button_classes[] = 'elementor-animation-' . $settings['forms_buttons_hover_animation'];
		}
		$this->add_render_attribute(
			'button_coupon', [
				'class' => $button_classes,
				'name' => 'apply_coupon',
				'type' => 'submit',
			]
		);
		?>
		<div class="e-coupon-box">
			<p class="e-woocommerce-coupon-nudge e-checkout-secondary-title"><?php esc_html_e( 'Have a coupon?', 'elementor-pro' ); ?> <a href="#" class="e-show-coupon-form"><?php esc_html_e( 'Click here to enter your coupon code', 'elementor-pro' ); ?></a></p>
			<div class="e-coupon-anchor" style="display:none">
				<label class="e-coupon-anchor-description"><?php esc_html_e( 'If you have a coupon code, please apply it below.', 'elementor-pro' ); ?></label>
				<div class="form-row">
					<div class="coupon-container-grid">
						<div class="col coupon-col-1 ">
							<input type="text" name="coupon_code" class="input-text" placeholder="<?php esc_attr_e( 'Coupon code', 'elementor-pro' ); ?>" id="coupon_code" value="" />
						</div>
						<div class="col coupon-col-2">
							<button <?php $this->print_render_attribute_string( 'button_coupon' ); ?>><?php esc_html_e( 'Apply', 'elementor-pro' ); ?></button>
						</div>
					</div>
				</div>
				<div class="clear"></div>
			</div>
		</div>
		<?php
	}

	/**
	 * Should Render Login
	 *
	 * Decide if the login form should be rendered.
	 * The login form should be rendered if:
	 * 1) The WooCommerce setting is enabled
	 * 2) AND: a logged out user is viewing the page, OR the Editor is open
	 *
	 * @since 3.5.0
	 *
	 * @return boolean
	 */
	private function should_render_login() {
		return 'no' !== get_option( 'woocommerce_enable_checkout_login_reminder' ) && ( ! is_user_logged_in() || Plugin::elementor()->editor->is_edit_mode() );
	}

	/**
	 * Should Render Coupon
	 *
	 * Decide if the coupon form should be rendered.
	 * The coupon form should be rendered if:
	 * 1) The WooCommerce setting is enabled
	 * 2) AND: a payment is needed, OR the Editor is open
	 *
	 * @since 3.5.0
	 *
	 * @return boolean
	 */
	private function should_render_coupon() {
		return ( WC()->cart->needs_payment() || Plugin::elementor()->editor->is_edit_mode() ) && wc_coupons_enabled();
	}

	/**
	 * WooCommerce Checkout Before Customer Details
	 *
	 * Callback function for the woocommerce_checkout_before_customer_details hook that outputs elements
	 *
	 * This eliminates the need for template overrides.
	 *
	 * @since 3.5.0
	 */
	public function woocommerce_checkout_before_customer_details() {
		?>
		<div class="e-checkout__container">
			<!--open container-->
			<div class="e-checkout__column e-checkout__column-start">
				<!--open column-1-->
		<?php
		if ( $this->should_render_login() ) {
			$this->render_woocommerce_checkout_login_form();
		}
	}

	/**
	 * Woocommerce Checkout After Customer Details
	 *
	 * Output containing elements. Callback function for the woocommerce_checkout_after_customer_details hook.
	 *
	 * This eliminates the need for template overrides.
	 *
	 * @since 3.5.0
	 */
	public function woocommerce_checkout_after_customer_details() {
		?>
					<!--close column-1-->
				</div>
		<?php
	}

	/**
	 * Woocommerce Checkout Before Order Review Heading 1
	 *
	 * Output containing elements. Callback function for the woocommerce_checkout_before_order_review_heading hook.
	 *
	 * This eliminates the need for template overrides.
	 *
	 * @since 3.5.0
	 */
	public function woocommerce_checkout_before_order_review_heading_1() {
		?>
				<div class="e-checkout__column e-checkout__column-end">
					<!--open column-2-->
						<div class="e-checkout__column-inner e-sticky-right-column">
							<!--open column-inner-->
		<?php
	}

	/**
	 * Woocommerce Checkout Before Order Review Heading 2
	 *
	 * Output containing elements. Callback function for the woocommerce_checkout_before_order_review_heading hook.
	 *
	 * This eliminates the need for template overrides.
	 *
	 * @since 3.5.0
	 */
	public function woocommerce_checkout_before_order_review_heading_2() {
		?>
							<div class="e-checkout__order_review">
								<!--open order_review-->
		<?php
	}

	/**
	 * Woocommerce Checkout Order Review
	 *
	 * Output containing elements. Callback function for the woocommerce_checkout_order_review hook.
	 *
	 * This eliminates the need for template overrides.
	 *
	 * @since 3.5.0
	 */
	public function woocommerce_checkout_order_review() {
		?>
									<!--close wc_order_review-->
								</div>
								<!--close order_review-->
							</div>
		<?php
		if ( $this->should_render_coupon() ) {
			$this->render_woocommerce_checkout_coupon_form();
		}
		?>
							<div class="e-checkout__order_review-2">
								<!--reopen wc_order_review-2-->
		<?php
	}

	/**
	 * Woocommerce Checkout After Order Review
	 *
	 * Output containing elements. Callback function for the woocommerce_checkout_after_order_review hook.
	 *
	 * This eliminates the need for template overrides.
	 *
	 * @since 3.5.0
	 */
	public function woocommerce_checkout_after_order_review() {
		?>
										<!--close wc_order_review-2-->
						<!--close column-inner-->
					</div>
					<!--close column-2-->
				</div>
				<!--close container-->
			</div>
		<?php
	}

	/**
	 * Add Render Hooks
	 *
	 * Add actions & filters before displaying our widget.
	 *
	 * @since 3.5.0
	 */
	public function add_render_hooks() {
		add_filter( 'woocommerce_form_field_args', [ $this, 'modify_form_field' ], 70, 3 );
		add_filter( 'woocommerce_get_terms_and_conditions_checkbox_text', [ $this, 'woocommerce_terms_and_conditions_checkbox_text' ], 10, 1 );

		add_filter( 'gettext', [ $this, 'filter_gettext' ], 20, 3 );

		add_action( 'woocommerce_checkout_before_customer_details', [ $this, 'woocommerce_checkout_before_customer_details' ], 5 );
		add_action( 'woocommerce_checkout_after_customer_details', [ $this, 'woocommerce_checkout_after_customer_details' ], 95 );
		add_action( 'woocommerce_checkout_before_order_review_heading', [ $this, 'woocommerce_checkout_before_order_review_heading_1' ], 5 );
		add_action( 'woocommerce_checkout_before_order_review_heading', [ $this, 'woocommerce_checkout_before_order_review_heading_2' ], 95 );
		add_action( 'woocommerce_checkout_order_review', [ $this, 'woocommerce_checkout_order_review' ], 15 );
		add_action( 'woocommerce_checkout_after_order_review', [ $this, 'woocommerce_checkout_after_order_review' ], 95 );

		// remove the default login & coupon form because we'll be adding our own forms
		remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form' );
		remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_login_form' );
	}

	/**
	 * Remove Render Hooks
	 *
	 * Remove actions & filters after displaying our widget.
	 *
	 * @since 3.5.0
	 */
	public function remove_render_hooks() {
		remove_filter( 'woocommerce_form_field_args', [ $this, 'modify_form_field' ], 70 );
		remove_filter( 'woocommerce_get_terms_and_conditions_checkbox_text', [ $this, 'woocommerce_terms_and_conditions_checkbox_text' ], 10 );

		remove_filter( 'gettext', [ $this, 'filter_gettext' ], 20 );

		remove_action( 'woocommerce_checkout_before_customer_details', [ $this, 'woocommerce_checkout_before_customer_details' ], 5 );
		remove_action( 'woocommerce_checkout_after_customer_details', [ $this, 'woocommerce_checkout_after_customer_details' ], 95 );
		remove_action( 'woocommerce_checkout_before_order_review_heading', [ $this, 'woocommerce_checkout_before_order_review_heading_1' ], 5 );
		remove_action( 'woocommerce_checkout_before_order_review_heading', [ $this, 'woocommerce_checkout_before_order_review_heading_2' ], 95 );
		remove_action( 'woocommerce_checkout_order_review', [ $this, 'woocommerce_checkout_order_review' ], 15 );
		remove_action( 'woocommerce_checkout_after_order_review', [ $this, 'woocommerce_checkout_after_order_review' ], 95 );
	}

	protected function render() {
		$is_editor = Plugin::elementor()->editor->is_edit_mode();

		// Simulate a logged out user so that all WooCommerce sections will render in the Editor
		if ( $is_editor ) {
			$store_current_user = wp_get_current_user()->ID;
			wp_set_current_user( 0 );
		}

		// Add actions & filters before displaying our Widget.
		$this->add_render_hooks();

		// Display our Widget.
		echo do_shortcode( '[woocommerce_checkout]' );

		// Remove actions & filters after displaying our Widget.
		$this->remove_render_hooks();

		// Return to existing logged-in user after widget is rendered.
		if ( $is_editor ) {
			wp_set_current_user( $store_current_user );
		}
	}
}
modules/woocommerce/widgets/product-short-description.php000064400000005447150755004300020061 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Typography;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Short_Description extends Base_Widget {

	public function get_name() {
		return 'woocommerce-product-short-description';
	}

	public function get_title() {
		return esc_html__( 'Short Description', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-product-description';
	}

	public function get_keywords() {
		return [ 'woocommerce', 'shop', 'store', 'text', 'description', 'product' ];
	}

	protected function register_controls() {

		$this->start_controls_section(
			'section_product_description_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'wc_style_warning',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'The style of this widget is often affected by your theme and plugins. If you experience any such issue, try to switch to a basic theme and deactivate related plugins.', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$this->add_responsive_control(
			'text_align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Justified', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => 'text-align: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .woocommerce-product-details__short-description' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'text_typography',
				'label' => esc_html__( 'Typography', 'elementor-pro' ),
				'selector' => '.woocommerce {{WRAPPER}} .woocommerce-product-details__short-description',
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		global $product;
		$product = wc_get_product();

		if ( empty( $product ) ) {
			return;
		}

		wc_get_template( 'single-product/short-description.php' );
	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/menu-cart.php000064400000153237150755004300014617 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Typography;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Background;
use ElementorPro\Modules\Woocommerce\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Menu_Cart extends Base_Widget {

	public function get_name() {
		return 'woocommerce-menu-cart';
	}

	public function get_title() {
		return esc_html__( 'Menu Cart', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-cart';
	}

	public function get_categories() {
		return [ 'theme-elements', 'woocommerce-elements' ];
	}

	protected function register_controls() {

		$this->start_controls_section(
			'section_menu_icon_content',
			[
				'label' => esc_html__( 'Menu Icon', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'icon',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'cart-light' => esc_html__( 'Cart', 'elementor-pro' ) . ' ' . esc_html__( 'Light', 'elementor-pro' ),
					'cart-medium' => esc_html__( 'Cart', 'elementor-pro' ) . ' ' . esc_html__( 'Medium', 'elementor-pro' ),
					'cart-solid' => esc_html__( 'Cart', 'elementor-pro' ) . ' ' . esc_html__( 'Solid', 'elementor-pro' ),
					'basket-light' => esc_html__( 'Basket', 'elementor-pro' ) . ' ' . esc_html__( 'Light', 'elementor-pro' ),
					'basket-medium' => esc_html__( 'Basket', 'elementor-pro' ) . ' ' . esc_html__( 'Medium', 'elementor-pro' ),
					'basket-solid' => esc_html__( 'Basket', 'elementor-pro' ) . ' ' . esc_html__( 'Solid', 'elementor-pro' ),
					'bag-light' => esc_html__( 'Bag', 'elementor-pro' ) . ' ' . esc_html__( 'Light', 'elementor-pro' ),
					'bag-medium' => esc_html__( 'Bag', 'elementor-pro' ) . ' ' . esc_html__( 'Medium', 'elementor-pro' ),
					'bag-solid' => esc_html__( 'Bag', 'elementor-pro' ) . ' ' . esc_html__( 'Solid', 'elementor-pro' ),
				],
				'default' => 'cart-medium',
				'prefix_class' => 'toggle-icon--',
			]
		);

		$this->add_control(
			'items_indicator',
			[
				'label' => esc_html__( 'Items Indicator', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'none' => esc_html__( 'None', 'elementor-pro' ),
					'bubble' => esc_html__( 'Bubble', 'elementor-pro' ),
					'plain' => esc_html__( 'Plain', 'elementor-pro' ),
				],
				'prefix_class' => 'elementor-menu-cart--items-indicator-',
				'default' => 'bubble',
			]
		);

		$this->add_control(
			'hide_empty_indicator',
			[
				'label' => esc_html__( 'Hide Empty', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Yes', 'elementor-pro' ),
				'label_off' => esc_html__( 'No', 'elementor-pro' ),
				'return_value' => 'hide',
				'prefix_class' => 'elementor-menu-cart--empty-indicator-',
				'condition' => [
					'items_indicator!' => 'none',
				],
			]
		);

		$this->add_control(
			'show_subtotal',
			[
				'label' => esc_html__( 'Subtotal', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'return_value' => 'yes',
				'default' => 'yes',
				'prefix_class' => 'elementor-menu-cart--show-subtotal-',
			]
		);

		$this->add_responsive_control(
			'alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--main-alignment: {{VALUE}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_cart',
			[
				'label' => esc_html__( 'Cart', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'cart_type',
			[
				'label' => esc_html__( 'Cart Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'side-cart' => esc_html__( 'Side Cart', 'elementor-pro' ),
					'mini-cart' => esc_html__( 'Mini Cart', 'elementor-pro' ),
				],
				'default' => 'side-cart',
				'prefix_class' => 'elementor-menu-cart--cart-type-',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'open_cart',
			[
				'label' => esc_html__( 'Open Cart', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'click' => esc_html__( 'On Click', 'elementor-pro' ),
					'mouseover' => esc_html__( 'On Hover', 'elementor-pro' ),
				],
				'default' => 'click',
				'frontend_available' => true,
				'render_type' => 'template',
			]
		);

		$this->add_responsive_control(
			'side_cart_alignment',
			[
				'label' => esc_html__( 'Cart Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'end' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'condition' => [
					'cart_type' => 'side-cart',
				],
				'selectors' => [
					'{{WRAPPER}}' => '{{VALUE}}',
				],
				'selectors_dictionary' => [
					'start' => '--side-cart-alignment-transform: translateX(-100%); --side-cart-alignment-right: auto; --side-cart-alignment-left: 0;',
					'end' => '--side-cart-alignment-transform: translateX(100%); --side-cart-alignment-left: auto; --side-cart-alignment-right: 0;',
				],
			]
		);

		$this->add_responsive_control(
			'mini_cart_alignment',
			[
				'label' => esc_html__( 'Cart Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-h-align-center',
					],
					'end' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'condition' => [
					'cart_type' => 'mini-cart',
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container' => '{{VALUE}}',
				],
				'selectors_dictionary' => [
					'start' => 'left: 0; right: auto; transform: none;',
					'center' => 'left: 50%; right: auto; transform: translateX(-50%);',
					'end' => 'right: 0; left: auto; transform: none;',
				],
			]
		);

		$this->add_responsive_control(
			'mini_cart_spacing',
			[
				'label' => esc_html__( 'Distance', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ '%', 'px' ],
				'range' => [
					'px' => [
						'min' => -300,
						'max' => 300,
					],
					'%' => [
						'min' => -100,
						'max' => 100,
					],
				],
				'condition' => [
					'cart_type' => 'mini-cart',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--mini-cart-spacing: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'heading_close_cart_button',
			[
				'label' => esc_html__( 'Close Cart', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'close_cart_button_show',
			[
				'label' => esc_html__( 'Close Icon', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'return_value' => 'yes',
				'default' => 'yes',
				'selectors' => [
					'{{WRAPPER}} .elementor-menu-cart__close-button' => '{{VALUE}}',
				],
				'selectors_dictionary' => [
					'' => 'display: none;',
				],
			]
		);

		$this->add_control(
			'close_cart_button_alignment',
			[
				'label' => esc_html__( 'Icon Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'end' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'condition' => [
					'close_cart_button_show!' => '',
				],
				'selectors_dictionary' => [
					'start' => 'margin-right: auto',
					'end' => 'margin-left: auto',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-menu-cart__close-button' => '{{VALUE}};',
				],
			]
		);

		$this->add_control(
			'heading_remove_item_button',
			[
				'label' => esc_html__( 'Remove Item', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'show_remove_icon',
			[
				'label' => esc_html__( 'Remove Item Icon', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'return_value' => 'yes',
				'default' => 'yes',
				'prefix_class' => 'elementor-menu-cart--show-remove-button-',
			]
		);

		$this->add_control(
			'remove_item_button_position',
			[
				'label' => esc_html__( 'Icon Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'top' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'middle' => [
						'title' => esc_html__( 'Middle', 'elementor-pro' ),
						'icon' => 'eicon-v-align-middle',
					],
					'bottom' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'default' => '',
				'prefix_class' => 'remove-item-position--',
				'condition' => [
					'show_remove_icon!' => '',
				],
			]
		);

		$this->add_control(
			'heading_price_quantity',
			[
				'label' => esc_html__( 'Price and Quantity', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'price_quantity_position',
			[
				'label' => esc_html__( 'Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'top' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'bottom' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '{{VALUE}}',
				],
				'selectors_dictionary' => [
					'top' => '--price-quantity-position--grid-template-rows: auto 75%; --price-quantity-position--align-self: start;',
					'bottom' => '',
				],
			]
		);

		$this->add_control(
			'show_divider',
			[
				'label' => esc_html__( 'Cart Dividers', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'separator' => 'before',
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'return_value' => 'yes',
				'default' => 'yes',
				'selectors' => [
					'{{WRAPPER}}' => '--divider-style: {{VALUE}}; --subtotal-divider-style: {{VALUE}};',
				],
				'selectors_dictionary' => [
					'' => 'none',
					'yes' => 'solid',
				],
			]
		);

		$this->add_control(
			'heading_buttons',
			[
				'label' => esc_html__( 'Buttons', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'view_cart_button_show',
			[
				'label' => esc_html__( 'View Cart', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'return_value' => 'yes',
				'default' => 'yes',
				'selectors' => [
					'{{WRAPPER}}' => '{{VALUE}}',
				],
				'selectors_dictionary' => [
					'' => '--view-cart-button-display: none; --cart-footer-layout: 1fr;',
				],
			]
		);

		$this->add_control(
			'view_cart_button_alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'end' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Justify', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				'condition' => [
					'view_cart_button_show!' => '',
					'checkout_button_show' => '',
				],
				'selectors' => [
					'{{WRAPPER}}' => '{{VALUE}}',
				],
				'selectors_dictionary' => [
					'start' => '--cart-footer-buttons-alignment-display: block; --cart-footer-buttons-alignment-text-align: left; --cart-footer-buttons-alignment-button-width: auto;',
					'center' => '--cart-footer-buttons-alignment-display: block; --cart-footer-buttons-alignment-text-align: center; --cart-footer-buttons-alignment-button-width: auto;',
					'end' => '--cart-footer-buttons-alignment-display: block; --cart-footer-buttons-alignment-text-align: right; --cart-footer-buttons-alignment-button-width: auto;',
					'justify' => '--cart-footer-layout: 1fr;',
				],
			]
		);

		$this->add_control(
			'checkout_button_show',
			[
				'label' => esc_html__( 'Checkout', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'return_value' => 'yes',
				'default' => 'yes',
				'selectors' => [
					'{{WRAPPER}}' => '{{VALUE}}',
				],
				'selectors_dictionary' => [
					'' => '--checkout-button-display: none; --cart-footer-layout: 1fr;',
				],
			]
		);

		$this->add_control(
			'checkout_button_alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'end' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Justify', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				'condition' => [
					'checkout_button_show!' => '',
					'view_cart_button_show' => '',
				],
				'selectors' => [
					'{{WRAPPER}}' => '{{VALUE}}',
				],
				'selectors_dictionary' => [
					'start' => '--cart-footer-buttons-alignment-display: block; --cart-footer-buttons-alignment-text-align: left; --cart-footer-buttons-alignment-button-width: auto;',
					'center' => '--cart-footer-buttons-alignment-display: block; --cart-footer-buttons-alignment-text-align: center; --cart-footer-buttons-alignment-button-width: auto;',
					'end' => '--cart-footer-buttons-alignment-display: block; --cart-footer-buttons-alignment-text-align: right; --cart-footer-buttons-alignment-button-width: auto;',
					'justify' => '--cart-footer-layout: 1fr;',
				],
			]
		);

		$this->add_control(
			'checkout_button_display',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::HIDDEN,
				'condition' => [
					'checkout_button_show' => '',
					'view_cart_button_show' => '',
				],
				'default' => '--cart-footer-buttons-alignment-display: none;',
				'selectors' => [
					'{{WRAPPER}}' => '{{VALUE}}',
				],
			]
		);

		$this->add_control(
			'buttons_position',
			[
				'label' => esc_html__( 'Vertical Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'top' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'bottom' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'default' => '',
				'condition' => [
					'cart_type' => 'side-cart',
				],
				'conditions' => [
					'relation' => 'or',
					'terms' => [
						[
							'name' => 'view_cart_button_show',
							'operator' => '!=',
							'value' => '',
						],
						[
							'name' => 'checkout_button_show',
							'operator' => '!=',
							'value' => '',
						],
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '{{VALUE}}',
				],
				'selectors_dictionary' => [
					'bottom' => '--cart-buttons-position-margin: auto;',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_additional_options',
			[
				'label' => esc_html__( 'Additional Options', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'heading_additional_options',
			[
				'label' => esc_html__( 'Cart', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'automatically_open_cart',
			[
				'label' => esc_html__( 'Automatically Open Cart', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'description' => esc_html__( 'Open the cart every time an item is added.', 'elementor-pro' ),
				'label_on' => esc_html__( 'Yes', 'elementor-pro' ),
				'label_off' => esc_html__( 'No', 'elementor-pro' ),
				'return_value' => 'yes',
				'default' => 'no',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'automatically_update_cart',
			[
				'label' => esc_html__( 'Automatically Update Cart', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Yes', 'elementor-pro' ),
				'label_off' => esc_html__( 'No', 'elementor-pro' ),
				'return_value' => 'yes',
				'default' => 'yes',
				'description' => esc_html__( 'Updates to the cart (e.g., a removed item) via Ajax. The cart will update without refreshing the whole page.', 'elementor-pro' ),
				'selectors' => [
					'{{WRAPPER}}' => '{{VALUE}}',
				],
				'selectors_dictionary' => [
					'yes' => '--elementor-remove-from-cart-button: none; --remove-from-cart-button: block;',
					''    => '--elementor-remove-from-cart-button: block; --remove-from-cart-button: none;',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_toggle_style',
			[
				'label' => esc_html__( 'Menu Icon', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->start_controls_tabs( 'toggle_button_colors' );

		$this->start_controls_tab( 'toggle_button_normal_colors', [ 'label' => esc_html__( 'Normal', 'elementor-pro' ) ] );

		$this->add_control(
			'toggle_button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--toggle-button-text-color: {{VALUE}};',
				],
				'condition' => [
					'show_subtotal!' => '',
				],
			]
		);

		$this->add_control(
			'toggle_button_icon_color',
			[
				'label' => esc_html__( 'Icon Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--toggle-button-icon-color: {{VALUE}};',
				],
				'condition' => [
					'icon!' => 'custom',
				],
			]
		);

		$this->add_control(
			'toggle_button_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--toggle-button-background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'toggle_button_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--toggle-button-border-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'toggle_button_normal_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .elementor-menu-cart__toggle .elementor-button',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'toggle_button_hover_colors', [ 'label' => esc_html__( 'Hover', 'elementor-pro' ) ] );

		$this->add_control(
			'toggle_button_hover_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--toggle-button-hover-text-color: {{VALUE}};',
				],
				'condition' => [
					'show_subtotal!' => '',
				],
			]
		);

		$this->add_control(
			'toggle_button_hover_icon_color',
			[
				'label' => esc_html__( 'Icon Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--toggle-button-icon-hover-color: {{VALUE}};',
				],
				'condition' => [
					'icon!' => 'custom',
				],
			]
		);

		$this->add_control(
			'toggle_button_hover_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--toggle-button-hover-background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'toggle_button_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--toggle-button-hover-border-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'toggle_button_hover_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .elementor-menu-cart__toggle .elementor-button:hover',
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'toggle_button_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 20,
					],
				],
				'separator' => 'before',
				'selectors' => [
					'{{WRAPPER}}' => '--toggle-button-border-width: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'toggle_button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--toggle-button-border-radius: {{SIZE}}{{UNIT}}',
				],

			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'toggle_button_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-menu-cart__toggle .elementor-button',
				'separator' => 'before',
				'condition' => [
					'show_subtotal!' => '',
				],
			]
		);

		$this->add_control(
			'heading_icon_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'toggle_icon_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 50,
					],
				],
				'size_units' => [ '%', 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}' => '--toggle-icon-size: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'toggle_icon_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 50,
					],
				],
				'size_units' => [ 'em', 'px' ],
				'selectors' => [
					'body:not(.rtl) {{WRAPPER}} .elementor-menu-cart__toggle .elementor-button-text' => 'margin-right: {{SIZE}}{{UNIT}};',
					'body.rtl {{WRAPPER}} .elementor-menu-cart__toggle .elementor-button-text' => 'margin-left: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'show_subtotal!' => '',
				],
			]
		);

		$this->add_responsive_control(
			'toggle_button_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--toggle-icon-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'items_indicator_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Items Indicator', 'elementor-pro' ),
				'separator' => 'before',
				'condition' => [
					'items_indicator!' => 'none',
				],
			]
		);
		$this->add_control(
			'items_indicator_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--items-indicator-text-color: {{VALUE}};',
				],
				'condition' => [
					'items_indicator!' => 'none',
				],
			]
		);

		$this->add_control(
			'items_indicator_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--items-indicator-background-color: {{VALUE}};',
				],
				'condition' => [
					'items_indicator' => 'bubble',
				],
			]
		);

		$this->add_responsive_control(
			'items_indicator_distance',
			[
				'label' => esc_html__( 'Distance', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ '%', 'px' ],
				'range' => [
					'em' => [
						'min' => 0,
						'max' => 4,
						'step' => 0.1,
					],
				],
				'selectors' => [
					'body:not(.rtl) {{WRAPPER}} .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before' => 'right: -{{SIZE}}{{UNIT}}; top: -{{SIZE}}{{UNIT}};',
					'body.rtl {{WRAPPER}} .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before' => 'right: {{SIZE}}{{UNIT}}; top: -{{SIZE}}{{UNIT}}; left: auto;',
				],
				'condition' => [
					'items_indicator' => 'bubble',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_cart_style',
			[
				'label' => esc_html__( 'Cart', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--cart-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'border_type',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'none' => esc_html__( 'None', 'elementor-pro' ),
					'solid' => esc_html__( 'Solid', 'elementor-pro' ),
					'double' => esc_html__( 'Double', 'elementor-pro' ),
					'dotted' => esc_html__( 'Dotted', 'elementor-pro' ),
					'dashed' => esc_html__( 'Dashed', 'elementor-pro' ),
					'groove' => esc_html__( 'Groove', 'elementor-pro' ),
				],
				'selectors' => [
					'{{WRAPPER}}' => '--cart-border-style: {{VALUE}};',
				],
				'default' => 'none',
			]
		);

		$this->add_responsive_control(
			'border_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-menu-cart__main' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'border_type!' => 'none',
				],
			]
		);

		$this->add_control(
			'border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--cart-border-color: {{VALUE}};',
				],
				'condition' => [
					'border_type!' => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--cart-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'cart_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .elementor-menu-cart__main',
			]
		);

		$this->add_responsive_control(
			'cart_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--cart-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'heading_close',
			[
				'label' => esc_html__( 'Close Cart', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'condition' => [
					'close_cart_button_show!' => '',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'close_cart_icon_size',
			[
				'label' => esc_html__( 'Icon Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ '%', 'px' ],
				'selectors' => [
					'{{WRAPPER}}' => '--cart-close-icon-size: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'close_cart_button_show!' => '',
				],
			]
		);

		$this->start_controls_tabs( 'cart_icon_style' );

		$this->start_controls_tab(
			'icon_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
				'condition' => [
					'close_cart_button_show!' => '',
				],
			]
		);

		$this->add_control(
			'close_cart_icon_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--cart-close-button-color: {{VALUE}};',
				],
				'condition' => [
					'close_cart_button_show!' => '',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'icon_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
				'condition' => [
					'close_cart_button_show!' => '',
				],
			]
		);

		$this->add_control(
			'close_cart_icon_hover_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--cart-close-button-hover-color: {{VALUE}};',
				],
				'condition' => [
					'close_cart_button_show!' => '',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'heading_remove_item_button_style',
			[
				'label' => esc_html__( 'Remove Item', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'show_remove_icon!' => '',
				],
			]
		);

		$this->add_responsive_control(
			'remove_item_button_size',
			[
				'label' => esc_html__( 'Icon Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'selectors' => [
					'{{WRAPPER}}' => '--remove-item-button-size: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'show_remove_icon!' => '',
				],
			]
		);

		$this->start_controls_tabs(
			'cart_remove_item_button_style',
			[
				'condition' => [
					'show_remove_icon!' => '',
				],
			]
		);

		$this->start_controls_tab(
			'remove_item_button_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
				'condition' => [
					'show_remove_icon!' => '',
				],
			]
		);

		$this->add_control(
			'remove_item_button_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--remove-item-button-color: {{VALUE}}',
				],
				'condition' => [
					'show_remove_icon!' => '',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'remove_item_button_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
				'condition' => [
					'show_remove_icon!' => '',
				],
			]
		);

		$this->add_control(
			'remove_item_button_hover_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--remove-item-button-hover-color: {{VALUE}};',
				],
				'condition' => [
					'show_remove_icon!' => '',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'heading_subtotal_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Subtotal', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'subtotal_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--menu-cart-subtotal-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'subtotal_typography',
				'selector' => '{{WRAPPER}} .elementor-menu-cart__subtotal',
			]
		);

		$this->add_responsive_control(
			'subtotal_alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--menu-cart-subtotal-text-align: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'subtotal_divider_style',
			[
				'label' => esc_html__( 'Divider Style', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'solid' => esc_html__( 'Solid', 'elementor-pro' ),
					'double' => esc_html__( 'Double', 'elementor-pro' ),
					'dotted' => esc_html__( 'Dotted', 'elementor-pro' ),
					'dashed' => esc_html__( 'Dashed', 'elementor-pro' ),
					'groove' => esc_html__( 'Groove', 'elementor-pro' ),
				],
				'selectors' => [
					'{{WRAPPER}} .widget_shopping_cart_content' => '{{VALUE}}',
				],
				'selectors_dictionary' => [
					'' => '--subtotal-divider-left-width: 0; --subtotal-divider-right-width: 0;',
					'solid' => '--subtotal-divider-style: solid;',
					'double' => '--subtotal-divider-style: double;',
					'dotted' => '--subtotal-divider-style: dotted;',
					'dashed' => '--subtotal-divider-style: dashed;',
					'groove' => '--subtotal-divider-style: groove;',
				],
			]
		);

		$this->add_responsive_control(
			'subtotal_divider_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .widget_shopping_cart_content' => '--subtotal-divider-top-width: {{TOP}}{{UNIT}}; --subtotal-divider-right-width: {{RIGHT}}{{UNIT}}; --subtotal-divider-bottom-width: {{BOTTOM}}{{UNIT}}; --subtotal-divider-left-width: {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'subtotal_divider_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .widget_shopping_cart_content' => '--subtotal-divider-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_product_tabs_style',
			[
				'label' => esc_html__( 'Products', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'heading_product_title_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Product Title', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'product_title_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-menu-cart__product-name a',
			]
		);

		$this->start_controls_tabs( 'product_title_colors' );

		$this->start_controls_tab( 'product_title_normal_colors', [ 'label' => esc_html__( 'Normal', 'elementor-pro' ) ] );

		$this->add_control(
			'product_title_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-menu-cart__product-name a' => 'color: {{VALUE}};',

				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'product_title_hover_colors', [ 'label' => esc_html__( 'Hover', 'elementor-pro' ) ] );

		$this->add_control(
			'product_title_hover_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-menu-cart__product-name a:hover' => 'color: {{VALUE}};',

				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'heading_product_price_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Product Price', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'product_price_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--product-price-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'product_price_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-menu-cart__product-price',
			]
		);

		$this->add_control(
			'heading_quantity_title_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Quantity', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'product_quantity_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-menu-cart__product-price .product-quantity' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'product_quantity_typography',
				'selector' => '{{WRAPPER}} .elementor-menu-cart__product-price .product-quantity',
			]
		);

		$this->add_control(
			'heading_product_divider_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Divider', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'divider_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'solid' => esc_html__( 'Solid', 'elementor-pro' ),
					'double' => esc_html__( 'Double', 'elementor-pro' ),
					'dotted' => esc_html__( 'Dotted', 'elementor-pro' ),
					'dashed' => esc_html__( 'Dashed', 'elementor-pro' ),
					'groove' => esc_html__( 'Groove', 'elementor-pro' ),
				],
				'selectors' => [
					'{{WRAPPER}}' => '--divider-style: {{VALUE}}; --subtotal-divider-style: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'divider_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--divider-color: {{VALUE}}; --subtotal-divider-color: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'divider_width',
			[
				'label' => esc_html__( 'Weight', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 10,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--divider-width: {{SIZE}}{{UNIT}}; --subtotal-divider-top-width: {{SIZE}}{{UNIT}}; --subtotal-divider-right-width: {{SIZE}}{{UNIT}}; --subtotal-divider-bottom-width: {{SIZE}}{{UNIT}}; --subtotal-divider-left-width: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'divider_gap',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 50,
					],
				],
				'size_units' => [ '%', 'px' ],
				'selectors' => [
					'{{WRAPPER}}' => '--product-divider-gap: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_buttons',
			[
				'label' => esc_html__( 'Buttons', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'conditions' => [
					'relation' => 'or',
					'terms' => [
						[
							'name' => 'view_cart_button_show',
							'operator' => '!=',
							'value' => '',
						],
						[
							'name' => 'checkout_button_show',
							'operator' => '!=',
							'value' => '',
						],
					],
				],
			]
		);

		$this->add_responsive_control(
			'buttons_layout',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'inline' => esc_html__( 'Inline', 'elementor-pro' ),
					'stacked' => esc_html__( 'Stacked', 'elementor-pro' ),
				],
				'default' => 'inline',
				'devices' => [ 'desktop', 'tablet', 'mobile' ],
				'condition' => [
					'view_cart_button_show!' => '',
					'checkout_button_show!' => '',
				],
				'selectors' => [
					'{{WRAPPER}}' => '{{VALUE}}',
				],
				'selectors_dictionary' => [
					'inline' => '--cart-footer-layout: 1fr 1fr;',
					'stacked' => '--cart-footer-layout: 1fr;',
				],
			]
		);

		$this->add_responsive_control(
			'space_between_buttons',
			[
				'label' => esc_html__( 'Space Between', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--space-between-buttons: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'view_cart_button_show!' => '',
					'checkout_button_show!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'product_buttons_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-menu-cart__footer-buttons .elementor-button',
			]
		);

		$this->add_control(
			'button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--cart-footer-buttons-border-radius: {{SIZE}}{{UNIT}};',
				],
				'separator' => 'after',
			]
		);

		$this->add_control(
			'heading_view_cart_button_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'View Cart', 'elementor-pro' ),
				'condition' => [
					'view_cart_button_show!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'view_cart_buttons_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-menu-cart__footer-buttons a.elementor-button--view-cart',
				'separator' => 'before',
				'condition' => [
					'view_cart_button_show!' => '',
				],
			]
		);

		$this->start_controls_tabs(
			'view_cart_button_text_colors',
			[
				'condition' => [
					'view_cart_button_show!' => '',
				],
			]
		);

		$this->start_controls_tab(
			'heading_view_cart_button_normal_style',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
				'condition' => [
					'view_cart_button_show!' => '',
				],
			]
		);

		$this->add_control(
			'view_cart_button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--view-cart-button-text-color: {{VALUE}};',
				],
				'condition' => [
					'view_cart_button_show!' => '',
				],
			]
		);

		$this->add_control(
			'view_cart_button_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--view-cart-button-background-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'heading_view_cart_button_hover_style',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
				'condition' => [
					'view_cart_button_show!' => '',
				],
			]
		);

		$this->add_control(
			'view_cart_button_hover_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--view-cart-button-hover-text-color: {{VALUE}};',
				],
				'condition' => [
					'view_cart_button_show!' => '',
				],
			]
		);

		$this->add_control(
			'view_cart_button_hover_background',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--view-cart-button-hover-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'view_cart_button_border_hover_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover' => 'border-color: {{VALUE}};',
				],
				'condition' => [
					'view_cart_border_border!' => '',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'view_cart_border',
				'selector' => '{{WRAPPER}} .elementor-button--view-cart',
				'separator' => 'before',
				'condition' => [
					'view_cart_button_show!' => '',
				],
			]
		);

		$this->add_responsive_control(
			'view_cart_button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-menu-cart__footer-buttons a.elementor-button--view-cart' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'view_cart_button_show!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'view_cart_button_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .elementor-button--view-cart',
				'condition' => [
					'view_cart_button_show!' => '',
				],
			]
		);

		$this->add_responsive_control(
			'view_cart_button_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--view-cart-button-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'view_cart_button_show!' => '',
				],
				'separator' => 'after',
			]
		);

		$this->add_control(
			'heading_checkout_button_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Checkout', 'elementor-pro' ),
				'condition' => [
					'checkout_button_show!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'cart_checkout_button_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-menu-cart__footer-buttons a.elementor-button--checkout',
				'separator' => 'before',
				'condition' => [
					'checkout_button_show!' => '',
				],
			]
		);

		$this->start_controls_tabs(
			'cart_checkout_button_text_colors',
			[
				'condition' => [
					'checkout_button_show!' => '',
				],
			]
		);

		$this->start_controls_tab(
			'heading_cart_checkout_button_normal_style',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
				'condition' => [
					'checkout_button_show!' => '',
				],
			]
		);

		$this->add_control(
			'checkout_button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--checkout-button-text-color: {{VALUE}};',
				],
				'condition' => [
					'checkout_button_show!' => '',
				],
			]
		);

		$this->add_control(
			'checkout_button_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--checkout-button-background-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'heading_cart_checkout_button_hover_style',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
				'condition' => [
					'checkout_button_show!' => '',
				],
			]
		);

		$this->add_control(
			'checkout_button_hover_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--checkout-button-hover-text-color: {{VALUE}};',
				],
				'condition' => [
					'checkout_button_show!' => '',
				],
			]
		);

		$this->add_control(
			'checkout_button_hover_background',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--checkout-button-hover-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'checkout_button_border_hover_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-menu-cart__footer-buttons .elementor-button--checkout:hover' => 'border-color: {{VALUE}};',
				],
				'condition' => [
					'checkout_border_border!' => '',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'checkout_border',
				'selector' => '{{WRAPPER}} .elementor-button--checkout',
				'separator' => 'before',
				'condition' => [
					'checkout_button_show!' => '',
				],
			]
		);

		$this->add_responsive_control(
			'view_checkout_button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-menu-cart__footer-buttons a.elementor-button--checkout' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'checkout_button_show!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'view_checkout_button_box_shadow',
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .elementor-button--checkout',
				'condition' => [
					'checkout_button_show!' => '',
				],
			]
		);

		$this->add_responsive_control(
			'view_checkout_button_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--checkout-button-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'checkout_button_show!' => '',
				],
				'separator' => 'after',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_messages',
			[
				'label' => esc_html__( 'Messages', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'cart_empty_message_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .woocommerce-mini-cart__empty-message',
			]
		);

		$this->add_control(
			'empty_message_color',
			[
				'label' => esc_html__( 'Empty Cart Message Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--empty-message-color: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'empty_message_alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Justified', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--empty-message-alignment: {{VALUE}};',
				],
			]
		);

		$this->end_controls_section();
	}

	/**
	 * Check if user did not explicitly disabled the use of our mini-cart template and set the option accordingly.
	 * The option value is later used by Module::woocommerce_locate_template().
	 */
	private function maybe_use_mini_cart_template() {
		$option_value = get_option( 'elementor_' . Module::OPTION_NAME_USE_MINI_CART, '' );
		if ( empty( $option_value ) || 'initial' === $option_value ) {
			update_option( 'elementor_' . Module::OPTION_NAME_USE_MINI_CART, 'yes' );
		}
	}

	protected function render() {
		$this->maybe_use_mini_cart_template();
		Module::render_menu_cart();
	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/product-title.php000064400000003460150755004300015513 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Widget_Heading;
use ElementorPro\Base\Base_Widget_Trait;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Title extends Widget_Heading {

	use Base_Widget_Trait;

	public function get_name() {
		return 'woocommerce-product-title';
	}

	public function get_title() {
		return esc_html__( 'Product Title', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-product-title';
	}

	public function get_categories() {
		return [ 'woocommerce-elements-single' ];
	}

	public function get_keywords() {
		return [ 'woocommerce', 'shop', 'store', 'title', 'heading', 'product' ];
	}

	protected function register_controls() {
		parent::register_controls();

		$this->update_control(
			'title',
			[
				'dynamic' => [
					'default' => Plugin::elementor()->dynamic_tags->tag_data_to_tag_text( null, 'woocommerce-product-title-tag' ),
				],
			],
			[
				'recursive' => true,
			]
		);

		$this->update_control(
			'header_size',
			[
				'default' => 'h1',
			]
		);
	}

	protected function get_html_wrapper_class() {
		return parent::get_html_wrapper_class() . ' elementor-page-title elementor-widget-' . parent::get_name();
	}

	protected function render() {
		$this->add_render_attribute( 'title', 'class', [ 'product_title', 'entry-title' ] );
		parent::render();
	}

	/**
	 * Render Woocommerce Product Title output in the editor.
	 *
	 * Written as a Backbone JavaScript template and used to generate the live preview.
	 *
	 * @since 2.9.0
	 * @access protected
	 */
	protected function content_template() {
		?>
		<# view.addRenderAttribute( 'title', 'class', [ 'product_title', 'entry-title' ] ); #>
		<?php
		parent::content_template();
	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/product-data-tabs.php000064400000017256150755004300016242 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Typography;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Data_Tabs extends Base_Widget {

	public function get_name() {
		return 'woocommerce-product-data-tabs';
	}

	public function get_title() {
		return esc_html__( 'Product Data Tabs', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-product-tabs';
	}

	public function get_keywords() {
		return [ 'woocommerce', 'shop', 'store', 'data', 'product', 'tabs' ];
	}

	protected function register_controls() {

		$this->start_controls_section(
			'section_product_tabs_style',
			[
				'label' => esc_html__( 'Tabs', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'wc_style_warning',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'The style of this widget is often affected by your theme and plugins. If you experience any such issue, try to switch to a basic theme and deactivate related plugins.', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$this->start_controls_tabs( 'tabs_style' );

		$this->start_controls_tab( 'normal_tabs_style',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'tab_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .woocommerce-tabs ul.wc-tabs li a' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'tab_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'alpha' => false,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .woocommerce-tabs ul.wc-tabs li' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'tabs_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .woocommerce-tabs .woocommerce-Tabs-panel' => 'border-color: {{VALUE}}',
					'.woocommerce {{WRAPPER}} .woocommerce-tabs ul.wc-tabs li' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'active_tabs_style',
			[
				'label' => esc_html__( 'Active', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'active_tab_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .woocommerce-tabs ul.wc-tabs li.active a' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'active_tab_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'alpha' => false,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .woocommerce-tabs .woocommerce-Tabs-panel, .woocommerce {{WRAPPER}} .woocommerce-tabs ul.wc-tabs li.active' => 'background-color: {{VALUE}}',
					'.woocommerce {{WRAPPER}} .woocommerce-tabs ul.wc-tabs li.active' => 'border-bottom-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'active_tabs_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .woocommerce-tabs .woocommerce-Tabs-panel' => 'border-color: {{VALUE}}',
					'.woocommerce {{WRAPPER}} .woocommerce-tabs ul.wc-tabs li.active' => 'border-color: {{VALUE}} {{VALUE}} {{active_tab_bg_color.VALUE}} {{VALUE}}',
					'.woocommerce {{WRAPPER}} .woocommerce-tabs ul.wc-tabs li:not(.active)' => 'border-bottom-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'separator_tabs_style',
			[
				'type' => Controls_Manager::DIVIDER,
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'tab_typography',
				'label' => esc_html__( 'Typography', 'elementor-pro' ),
				'selector' => '.woocommerce {{WRAPPER}} .woocommerce-tabs ul.wc-tabs li a',
			]
		);

		$this->add_control(
			'tab_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .woocommerce-tabs ul.wc-tabs li' => 'border-radius: {{SIZE}}{{UNIT}} {{SIZE}}{{UNIT}} 0 0',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_product_panel_style',
			[
				'label' => esc_html__( 'Panel', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .woocommerce-Tabs-panel' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'content_typography',
				'label' => esc_html__( 'Typography', 'elementor-pro' ),
				'selector' => '.woocommerce {{WRAPPER}} .woocommerce-tabs .woocommerce-Tabs-panel',
			]
		);

		$this->add_control(
			'heading_panel_heading_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Heading', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'heading_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .woocommerce-Tabs-panel h2' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'content_heading_typography',
				'label' => esc_html__( 'Typography', 'elementor-pro' ),
				'selector' => '.woocommerce {{WRAPPER}} .woocommerce-tabs .woocommerce-Tabs-panel h2',
			]
		);

		$this->add_control(
			'separator_panel_style',
			[
				'type' => Controls_Manager::DIVIDER,
			]
		);

		$this->add_control(
			'panel_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .woocommerce-tabs .woocommerce-Tabs-panel' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}; margin-top: -{{TOP}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'panel_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .woocommerce-tabs .woocommerce-Tabs-panel' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
					'.woocommerce {{WRAPPER}} .woocommerce-tabs ul.wc-tabs' => 'margin-left: {{TOP}}{{UNIT}}; margin-right: {{RIGHT}}{{UNIT}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'panel_box_shadow',
				'selector' => '.woocommerce {{WRAPPER}} .woocommerce-tabs .woocommerce-Tabs-panel',
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		global $product;

		$product = wc_get_product();

		if ( empty( $product ) ) {
			return;
		}

		setup_postdata( $product->get_id() );

		wc_get_template( 'single-product/tabs/tabs.php' );

		// On render widget from Editor - trigger the init manually.
		if ( wp_doing_ajax() ) {
			?>
			<script>
				jQuery( '.wc-tabs-wrapper, .woocommerce-tabs, #rating' ).trigger( 'init' );
			</script>
			<?php
		}
	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/base-widget.php000064400000010565150755004300015113 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Controls_Stack;
use Elementor\Core\Breakpoints\Manager as Breakpoints_Manager;
use ElementorPro\Modules\Woocommerce\Classes\Products_Renderer;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

abstract class Base_Widget extends \ElementorPro\Base\Base_Widget {

	protected $gettext_modifications;

	public function get_categories() {
		return [ 'woocommerce-elements-single' ];
	}

	protected function get_devices_default_args() {
		$devices_required = [];

		// Make sure device settings can inherit from larger screen sizes' breakpoint settings.
		foreach ( Breakpoints_Manager::get_default_config() as $breakpoint_name => $breakpoint_config ) {
			$devices_required[ $breakpoint_name ] = [
				'required' => false,
			];
		}

		return $devices_required;
	}

	protected function add_columns_responsive_control() {
		$this->add_responsive_control(
			'columns',
			[
				'label' => esc_html__( 'Columns', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'prefix_class' => 'elementor-grid%s-',
				'min' => 1,
				'max' => 12,
				'default' => Products_Renderer::DEFAULT_COLUMNS_AND_ROWS,
				'tablet_default' => '3',
				'mobile_default' => '2',
				'required' => true,
				'device_args' => $this->get_devices_default_args(),
				'min_affected_device' => [
					Controls_Stack::RESPONSIVE_DESKTOP => Controls_Stack::RESPONSIVE_TABLET,
					Controls_Stack::RESPONSIVE_TABLET => Controls_Stack::RESPONSIVE_TABLET,
				],
			]
		);
	}

	/**
	 * Is WooCommerce Feature Active.
	 *
	 * Checks whether a specific WooCommerce feature is active. These checks can sometimes look at multiple WooCommerce
	 * settings at once so this simplifies and centralizes the checking.
	 *
	 * @since 3.5.0
	 *
	 * @param string $feature
	 * @return bool
	 */
	protected function is_wc_feature_active( $feature ) {
		switch ( $feature ) {
			case 'checkout_login_reminder':
				return 'yes' === get_option( 'woocommerce_enable_checkout_login_reminder' );
			case 'shipping':
				if ( class_exists( 'WC_Shipping_Zones' ) ) {
					$all_zones = \WC_Shipping_Zones::get_zones();
					if ( count( $all_zones ) > 0 ) {
						return true;
					}
				}
				break;
			case 'coupons':
				return function_exists( 'wc_coupons_enabled' ) && wc_coupons_enabled();
			case 'signup_and_login_from_checkout':
				return 'yes' === get_option( 'woocommerce_enable_signup_and_login_from_checkout' );
			case 'additional_options':
				return ! wc_ship_to_billing_address_only();
			case 'ship_to_billing_address_only':
				return wc_ship_to_billing_address_only();
		}

		return false;
	}

	/**
	 * Get Custom Border Type Options
	 *
	 * Return a set of border options to be used in different WooCommerce widgets.
	 *
	 * This will be used in cases where the Group Border Control could not be used.
	 *
	 * @since 3.5.0
	 *
	 * @return array
	 */
	public static function get_custom_border_type_options() {
		return [
			'none' => esc_html__( 'None', 'elementor-pro' ),
			'solid' => esc_html__( 'Solid', 'elementor-pro' ),
			'double' => esc_html__( 'Double', 'elementor-pro' ),
			'dotted' => esc_html__( 'Dotted', 'elementor-pro' ),
			'dashed' => esc_html__( 'Dashed', 'elementor-pro' ),
			'groove' => esc_html__( 'Groove', 'elementor-pro' ),
		];
	}

	/**
	 * Init Gettext Modifications
	 *
	 * Should be overridden by a method in the Widget class.
	 *
	 * @since 3.5.0
	 */
	protected function init_gettext_modifications() {
		$this->gettext_modifications = [];
	}

	/**
	 * Filter Gettext.
	 *
	 * Filter runs when text is output to the page using the translation functions (`_e()`, `__()`, etc.)
	 * used to apply text changes from the widget settings.
	 *
	 * This allows us to make text changes without having to ovveride WooCommerce templates, which would
	 * lead to dev tax to keep all the templates up to date with each future WC release.
	 *
	 * @since 3.5.0
	 *
	 * @param string $translation
	 * @param string $text
	 * @param string $domain
	 * @return string
	 */
	public function filter_gettext( $translation, $text, $domain ) {
		if ( 'woocommerce' !== $domain && 'elementor-pro' !== $domain ) {
			return $translation;
		}

		if ( ! isset( $this->gettext_modifications ) ) {
			$this->init_gettext_modifications();
		}

		return array_key_exists( $text, $this->gettext_modifications ) ? $this->gettext_modifications[ $text ] : $translation;
	}
}
modules/woocommerce/widgets/add-to-cart.php000064400000013145150755004300015014 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Widget_Button;
use ElementorPro\Base\Base_Widget_Trait;
use ElementorPro\Modules\QueryControl\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Add_To_Cart extends Widget_Button {

	use Base_Widget_Trait;

	public function get_name() {
		return 'wc-add-to-cart';
	}

	public function get_title() {
		return esc_html__( 'Custom Add To Cart', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-woocommerce';
	}

	public function get_categories() {
		return [ 'woocommerce-elements' ];
	}

	public function get_keywords() {
		return [ 'woocommerce', 'shop', 'store', 'cart', 'product', 'button', 'add to cart' ];
	}

	public function on_export( $element ) {
		unset( $element['settings']['product_id'] );

		return $element;
	}

	public function unescape_html( $safe_text, $text ) {
		return $text;
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_product',
			[
				'label' => esc_html__( 'Product', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'product_id',
			[
				'label' => esc_html__( 'Product', 'elementor-pro' ),
				'type' => Module::QUERY_CONTROL_ID,
				'options' => [],
				'label_block' => true,
				'autocomplete' => [
					'object' => Module::QUERY_OBJECT_POST,
					'query' => [
						'post_type' => [ 'product' ],
					],
				],
			]
		);

		$this->add_control(
			'show_quantity',
			[
				'label' => esc_html__( 'Show Quantity', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'description' => esc_html__( 'Please note that switching on this option will disable some of the design controls.', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'quantity',
			[
				'label' => esc_html__( 'Quantity', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 1,
				'condition' => [
					'show_quantity' => '',
				],
			]
		);

		$this->end_controls_section();

		parent::register_controls();

		$this->update_control(
			'link',
			[
				'type' => Controls_Manager::HIDDEN,
				'default' => [
					'url' => '',
				],
			]
		);

		$this->update_control(
			'text',
			[
				'default' => esc_html__( 'Add to Cart', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Add to Cart', 'elementor-pro' ),
			]
		);

		$this->update_control(
			'selected_icon',
			[
				'default' => [
					'value' => 'fas fa-shopping-cart',
					'library' => 'fa-solid',
				],
			]
		);

		$this->update_control(
			'size',
			[
				'condition' => [
					'show_quantity' => '',
				],
			]
		);
	}

	protected function render() {
		$settings = $this->get_settings_for_display();

		if ( ! empty( $settings['product_id'] ) ) {
			$product_id = $settings['product_id'];
		} elseif ( wp_doing_ajax() ) {
			// PHPCS - No nonce is required.
			$product_id = $_POST['post_id']; // phpcs:ignore WordPress.Security.NonceVerification.Missing
		} else {
			$product_id = get_queried_object_id();
		}

		global $product;
		$product = wc_get_product( $product_id );

		if ( 'yes' === $settings['show_quantity'] ) {
			$this->render_form_button( $product );
		} else {
			$this->render_ajax_button( $product );
		}
	}

	/**
	 * @param \WC_Product $product
	 */
	private function render_ajax_button( $product ) {
		$settings = $this->get_settings_for_display();

		if ( $product ) {
			if ( version_compare( WC()->version, '3.0.0', '>=' ) ) {
				$product_type = $product->get_type();
			} else {
				$product_type = $product->product_type;
			}

			$class = implode( ' ', array_filter( [
				'product_type_' . $product_type,
				$product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '',
				$product->supports( 'ajax_add_to_cart' ) ? 'ajax_add_to_cart' : '',
			] ) );

			$this->add_render_attribute( 'button',
				[
					'rel' => 'nofollow',
					'href' => $product->add_to_cart_url(),
					'data-quantity' => ( isset( $settings['quantity'] ) ? $settings['quantity'] : 1 ),
					'data-product_id' => $product->get_id(),
					'class' => $class,
				]
			);

		} elseif ( current_user_can( 'manage_options' ) ) {
			$settings['text'] = esc_html__( 'Please set a valid product', 'elementor-pro' );
			$this->set_settings( $settings );
		}

		parent::render();
	}

	private function render_form_button( $product ) {
		if ( ! $product && current_user_can( 'manage_options' ) ) {
			echo esc_html__( 'Please set a valid product', 'elementor-pro' );

			return;
		}

		$text_callback = function() {
			ob_start();
			$this->render_text();

			return ob_get_clean();
		};

		add_filter( 'woocommerce_get_stock_html', '__return_empty_string' );
		add_filter( 'woocommerce_product_single_add_to_cart_text', $text_callback );
		add_filter( 'esc_html', [ $this, 'unescape_html' ], 10, 2 );

		ob_start();
		woocommerce_template_single_add_to_cart();
		$form = ob_get_clean();
		$form = str_replace( 'single_add_to_cart_button', 'single_add_to_cart_button elementor-button', $form );

		// PHPCS - The HTML from 'woocommerce_template_single_add_to_cart' is safe.
		echo $form; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped

		remove_filter( 'woocommerce_product_single_add_to_cart_text', $text_callback );
		remove_filter( 'woocommerce_get_stock_html', '__return_empty_string' );
		remove_filter( 'esc_html', [ $this, 'unescape_html' ] );
	}

	/**
	 * Written as a Backbone JavaScript template and used to generate the live preview.
	 *
	 * @since 2.9.0
	 * @access protected
	 */
	// Force remote render
	protected function content_template() {}
}
modules/woocommerce/widgets/products-base.php000064400000063626150755004300015501 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Typography;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Products_Base extends Base_Widget {


	protected function register_controls() {

		$this->start_controls_section(
			'section_products_style',
			[
				'label' => esc_html__( 'Products', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'wc_style_warning',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'The style of this widget is often affected by your theme and plugins. If you experience any such issue, try to switch to a basic theme and deactivate related plugins.', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$this->add_control(
			'products_class',
			[
				'type' => Controls_Manager::HIDDEN,
				'default' => 'wc-products',
				'prefix_class' => 'elementor-products-grid elementor-',
			]
		);

		$this->add_responsive_control(
			'column_gap',
			[
				'label' => esc_html__( 'Columns Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 20,
				],
				'tablet_default' => [
					'size' => 20,
				],
				'mobile_default' => [
					'size' => 20,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products  ul.products' => 'grid-column-gap: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'row_gap',
			[
				'label' => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 40,
				],
				'tablet_default' => [
					'size' => 40,
				],
				'mobile_default' => [
					'size' => 40,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products  ul.products' => 'grid-row-gap: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'prefix_class' => 'elementor-product-loop-item--align-',
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product' => 'text-align: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'heading_image_style',
			[
				'label' => esc_html__( 'Image', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'image_border',
				'selector' => '{{WRAPPER}}.elementor-wc-products .attachment-woocommerce_thumbnail',
			]
		);

		$this->add_responsive_control(
			'image_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products .attachment-woocommerce_thumbnail' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'image_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products .attachment-woocommerce_thumbnail' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'heading_title_style',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'title_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_PRIMARY,
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .woocommerce-loop-product__title' => 'color: {{VALUE}}',
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .woocommerce-loop-category__title' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'title_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}}.elementor-wc-products ul.products li.product .woocommerce-loop-product__title, ' .
								'{{WRAPPER}}.elementor-wc-products ul.products li.product .woocommerce-loop-category__title',

			]
		);

		$this->add_responsive_control(
			'title_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'range' => [
					'em' => [
						'min' => 0,
						'max' => 5,
						'step' => 0.1,
					],
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .woocommerce-loop-product__title' => 'margin-bottom: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .woocommerce-loop-category__title' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'heading_rating_style',
			[
				'label' => esc_html__( 'Rating', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'star_color',
			[
				'label' => esc_html__( 'Star Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .star-rating' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'empty_star_color',
			[
				'label' => esc_html__( 'Empty Star Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .star-rating::before' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'star_size',
			[
				'label' => esc_html__( 'Star Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'unit' => 'em',
				],
				'range' => [
					'em' => [
						'min' => 0,
						'max' => 4,
						'step' => 0.1,
					],
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .star-rating' => 'font-size: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'rating_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'range' => [
					'em' => [
						'min' => 0,
						'max' => 5,
						'step' => 0.1,
					],
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .star-rating' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'heading_price_style',
			[
				'label' => esc_html__( 'Price', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'price_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_PRIMARY,
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .price' => 'color: {{VALUE}}',
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .price ins' => 'color: {{VALUE}}',
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .price ins .amount' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'price_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}}.elementor-wc-products ul.products li.product .price',
			]
		);

		$this->add_control(
			'heading_old_price_style',
			[
				'label' => esc_html__( 'Regular Price', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'old_price_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_PRIMARY,
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .price del' => 'color: {{VALUE}}',
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .price del .amount' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'old_price_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}}.elementor-wc-products ul.products li.product .price del .amount  ',
				'selector' => '{{WRAPPER}}.elementor-wc-products ul.products li.product .price del ',
			]
		);

		$this->add_control(
			'heading_button_style',
			[
				'label' => esc_html__( 'Button', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->start_controls_tabs( 'tabs_button_style' );

		$this->start_controls_tab(
			'tab_button_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .button' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'button_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .button' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'button_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .button' => 'border-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'button_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
				'selector' => '{{WRAPPER}}.elementor-wc-products ul.products li.product .button',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_button_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_hover_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .button:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'button_hover_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .button:hover' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'button_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .button:hover' => 'border-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_group_control(
			Group_Control_Border::get_type(), [
				'name' => 'button_border',
				'exclude' => [ 'color' ],
				'selector' => '{{WRAPPER}}.elementor-wc-products ul.products li.product .button',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .button' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'button_text_padding',
			[
				'label' => esc_html__( 'Text Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'button_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product .button' => 'margin-top: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'heading_view_cart_style',
			[
				'label' => esc_html__( 'View Cart', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'view_cart_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products .added_to_cart' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'view_cart_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
				'selector' => '{{WRAPPER}}.elementor-wc-products .added_to_cart',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_design_box',
			[
				'label' => esc_html__( 'Box', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'box_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product' => 'border-style: solid; border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'box_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 200,
					],
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'box_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
				],
			]
		);

		$this->start_controls_tabs( 'box_style_tabs' );

		$this->start_controls_tab( 'classic_style_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'box_shadow',
				'selector' => '{{WRAPPER}}.elementor-wc-products ul.products li.product',
			]
		);

		$this->add_control(
			'box_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'box_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'classic_style_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'box_shadow_hover',
				'selector' => '{{WRAPPER}}.elementor-wc-products ul.products li.product:hover',
			]
		);

		$this->add_control(
			'box_bg_color_hover',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product:hover' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'box_border_color_hover',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product:hover' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();

		$this->start_controls_section(
			'section_pagination_style',
			[
				'label' => esc_html__( 'Pagination', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'paginate' => 'yes',
				],
			]
		);

		$this->add_control(
			'pagination_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} nav.woocommerce-pagination' => 'margin-top: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'show_pagination_border',
			[
				'label' => esc_html__( 'Border', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'default' => 'yes',
				'return_value' => 'yes',
				'prefix_class' => 'elementor-show-pagination-border-',
			]
		);

		$this->add_control(
			'pagination_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} nav.woocommerce-pagination ul' => 'border-color: {{VALUE}}',
					'{{WRAPPER}} nav.woocommerce-pagination ul li' => 'border-right-color: {{VALUE}}; border-left-color: {{VALUE}}',
				],
				'condition' => [
					'show_pagination_border' => 'yes',
				],
			]
		);

		$this->add_control(
			'pagination_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'em' => [
						'min' => 0,
						'max' => 2,
						'step' => 0.1,
					],
				],
				'size_units' => [ 'em' ],
				'selectors' => [
					'{{WRAPPER}} nav.woocommerce-pagination ul li a, {{WRAPPER}} nav.woocommerce-pagination ul li span' => 'padding: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'pagination_typography',
				'selector' => '{{WRAPPER}} nav.woocommerce-pagination',
			]
		);

		$this->start_controls_tabs( 'pagination_style_tabs' );

		$this->start_controls_tab( 'pagination_style_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'pagination_link_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} nav.woocommerce-pagination ul li a' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'pagination_link_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} nav.woocommerce-pagination ul li a' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'pagination_style_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'pagination_link_color_hover',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} nav.woocommerce-pagination ul li a:hover' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'pagination_link_bg_color_hover',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} nav.woocommerce-pagination ul li a:hover' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'pagination_style_active',
			[
				'label' => esc_html__( 'Active', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'pagination_link_color_active',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} nav.woocommerce-pagination ul li span.current' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'pagination_link_bg_color_active',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} nav.woocommerce-pagination ul li span.current' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();

		$this->start_controls_section(
			'sale_flash_style',
			[
				'label' => esc_html__( 'Sale Flash', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'show_onsale_flash',
			[
				'label' => esc_html__( 'Sale Flash', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'separator' => 'before',
				'default' => 'yes',
				'return_value' => 'yes',
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product span.onsale' => 'display: block',
				],
			]
		);

		$this->add_control(
			'onsale_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product span.onsale' => 'color: {{VALUE}}',
				],
				'condition' => [
					'show_onsale_flash' => 'yes',
				],
			]
		);

		$this->add_control(
			'onsale_text_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product span.onsale' => 'background-color: {{VALUE}}',
				],
				'condition' => [
					'show_onsale_flash' => 'yes',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'onsale_typography',
				'selector' => '{{WRAPPER}}.elementor-wc-products ul.products li.product span.onsale',
				'condition' => [
					'show_onsale_flash' => 'yes',
				],
			]
		);

		$this->add_control(
			'onsale_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product span.onsale' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'show_onsale_flash' => 'yes',
				],
			]
		);

		$this->add_control(
			'onsale_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product span.onsale' => 'min-width: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'show_onsale_flash' => 'yes',
				],
			]
		);

		$this->add_control(
			'onsale_height',
			[
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product span.onsale' => 'min-height: {{SIZE}}{{UNIT}}; line-height: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'show_onsale_flash' => 'yes',
				],
			]
		);

		$this->add_control(
			'onsale_horizontal_position',
			[
				'label' => esc_html__( 'Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product span.onsale' => '{{VALUE}}',
				],
				'selectors_dictionary' => [
					'left' => 'right: auto; left: 0',
					'right' => 'left: auto; right: 0',
				],
				'condition' => [
					'show_onsale_flash' => 'yes',
				],
			]
		);

		$this->add_control(
			'onsale_distance',
			[
				'label' => esc_html__( 'Distance', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'range' => [
					'px' => [
						'min' => -20,
						'max' => 20,
					],
					'em' => [
						'min' => -2,
						'max' => 2,
					],
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products ul.products li.product span.onsale' => 'margin: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'show_onsale_flash' => 'yes',
				],
			]
		);

		$this->end_controls_section();
	}
}
modules/woocommerce/widgets/product-upsell.php000064400000012070150755004300015673 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Upsell extends Products_Base {

	public function get_name() {
		return 'woocommerce-product-upsell';
	}

	public function get_title() {
		return esc_html__( 'Upsells', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-product-upsell';
	}

	public function get_keywords() {
		return [ 'woocommerce', 'shop', 'store', 'upsell', 'product' ];
	}

	protected function register_controls() {

		$this->start_controls_section(
			'section_upsell_content',
			[
				'label' => esc_html__( 'Upsells', 'elementor-pro' ),
			]
		);

		$this->add_columns_responsive_control();

		$this->add_control(
			'orderby',
			[
				'label' => esc_html__( 'Order By', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'date',
				'options' => [
					'date' => esc_html__( 'Date', 'elementor-pro' ),
					'title' => esc_html__( 'Title', 'elementor-pro' ),
					'price' => esc_html__( 'Price', 'elementor-pro' ),
					'popularity' => esc_html__( 'Popularity', 'elementor-pro' ),
					'rating' => esc_html__( 'Rating', 'elementor-pro' ),
					'rand' => esc_html__( 'Random', 'elementor-pro' ),
					'menu_order' => esc_html__( 'Menu Order', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'order',
			[
				'label' => esc_html__( 'Order', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'desc',
				'options' => [
					'asc' => esc_html__( 'ASC', 'elementor-pro' ),
					'desc' => esc_html__( 'DESC', 'elementor-pro' ),
				],
			]
		);

		$this->end_controls_section();

		parent::register_controls();

		$this->start_injection( [
			'at' => 'before',
			'of' => 'section_design_box',
		] );

		$this->start_controls_section(
			'section_heading_style',
			[
				'label' => esc_html__( 'Heading', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'show_heading',
			[
				'label' => esc_html__( 'Heading', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'default' => 'yes',
				'return_value' => 'yes',
				'prefix_class' => 'show-heading-',
			]
		);

		$this->add_control(
			'heading_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_PRIMARY,
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products .products > h2' => 'color: {{VALUE}}',
				],
				'condition' => [
					'show_heading!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'heading_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}}.elementor-wc-products .products > h2',
				'condition' => [
					'show_heading!' => '',
				],
			]
		);

		$this->add_responsive_control(
			'heading_text_align',
			[
				'label' => esc_html__( 'Text Align', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products .products > h2' => 'text-align: {{VALUE}}',
				],
				'condition' => [
					'show_heading!' => '',
				],
			]
		);

		$this->add_responsive_control(
			'heading_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}.elementor-wc-products .products > h2' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'show_heading!' => '',
				],
			]
		);

		$this->end_controls_section();

		$this->end_injection();
	}

	protected function render() {
		$settings = $this->get_settings_for_display();
		$limit = '-1';
		$columns = 4;
		$orderby = 'rand';
		$order = 'desc';

		if ( ! empty( $settings['columns'] ) ) {
			$columns = $settings['columns'];
		}

		if ( ! empty( $settings['orderby'] ) ) {
			$orderby = $settings['orderby'];
		}

		if ( ! empty( $settings['order'] ) ) {
			$order = $settings['order'];
		}

		ob_start();

		woocommerce_upsell_display( $limit, $columns, $orderby, $order );

		$upsells_html = ob_get_clean();

		if ( $upsells_html ) {
			$upsells_html = str_replace( '<ul class="products', '<ul class="products elementor-grid', $upsells_html );

			echo wp_kses_post( $upsells_html );
		}
	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/product-additional-information.php000064400000004734150755004300021032 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Typography;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Additional_Information extends Base_Widget {

	public function get_name() {
		return 'woocommerce-product-additional-information';
	}

	public function get_title() {
		return esc_html__( 'Additional Information', 'elementor-pro' );
	}

	public function get_icon() {
		return ' eicon-product-info';
	}

	protected function register_controls() {

		$this->start_controls_section( 'section_additional_info_style', [
			'label' => esc_html__( 'General', 'elementor-pro' ),
			'tab' => Controls_Manager::TAB_STYLE,
		] );

		$this->add_control(
			'show_heading',
			[
				'label' => esc_html__( 'Heading', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'render_type' => 'ui',
				'return_value' => 'yes',
				'default' => 'yes',
				'prefix_class' => 'elementor-show-heading-',
			]
		);

		$this->add_control(
			'heading_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} h2' => 'color: {{VALUE}}',
				],
				'condition' => [
					'show_heading!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'heading_typography',
				'label' => esc_html__( 'Typography', 'elementor-pro' ),
				'selector' => '.woocommerce {{WRAPPER}} h2',
				'condition' => [
					'show_heading!' => '',
				],
			]
		);

		$this->add_control(
			'content_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'.woocommerce {{WRAPPER}} .shop_attributes' => 'color: {{VALUE}}',
				],
				'separator' => 'before',
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'content_typography',
				'label' => esc_html__( 'Typography', 'elementor-pro' ),
				'selector' => '.woocommerce {{WRAPPER}} .shop_attributes',
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		global $product;
		$product = wc_get_product();

		if ( empty( $product ) ) {
			return;
		}

		wc_get_template( 'single-product/tabs/additional-information.php' );
	}

	public function render_plain_content() {}
}
modules/woocommerce/widgets/product-content.php000064400000001073150755004300016042 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;

use ElementorPro\Modules\ThemeBuilder\Widgets\Post_Content;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Content extends Post_Content {

	public function get_name() {
		return 'woocommerce-product-content';
	}

	public function get_title() {
		return esc_html__( 'Product Content', 'elementor-pro' );
	}

	public function get_categories() {
		return [ 'woocommerce-elements-single' ];
	}

	public function get_keywords() {
		return [ 'content', 'post', 'product' ];
	}
}
modules/woocommerce/module.php000064400000051012150755004300012527 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce;

use ElementorPro\Plugin;
use ElementorPro\Base\Module_Base;
use ElementorPro\Modules\ThemeBuilder\Classes\Conditions_Manager;
use ElementorPro\Modules\Woocommerce\Conditions\Woocommerce;
use ElementorPro\Modules\Woocommerce\Documents\Product;
use ElementorPro\Modules\Woocommerce\Documents\Product_Post;
use ElementorPro\Modules\Woocommerce\Documents\Product_Archive;
use Elementor\Utils;
use Elementor\Core\Documents_Manager;
use Elementor\Settings;
use Elementor\Core\Common\Modules\Ajax\Module as Ajax;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Module extends Module_Base {

	const WOOCOMMERCE_GROUP = 'woocommerce';
	const TEMPLATE_MINI_CART = 'cart/mini-cart.php';
	const OPTION_NAME_USE_MINI_CART = 'use_mini_cart_template';

	protected $docs_types = [];
	protected $use_mini_cart_template;

	public static function is_active() {
		return class_exists( 'woocommerce' );
	}

	public static function is_product_search() {
		return is_search() && 'product' === get_query_var( 'post_type' );
	}

	public function get_name() {
		return 'woocommerce';
	}

	public function get_widgets() {
		return [
			'Archive_Products',
			'Archive_Products_Deprecated',
			'Archive_Description',
			'Products',
			'Products_Deprecated',

			'Breadcrumb',
			'Add_To_Cart',
			'Elements',
			'Single_Elements',
			'Categories',
			'Menu_Cart',

			'Product_Title',
			'Product_Images',
			'Product_Price',
			'Product_Add_To_Cart',
			'Product_Rating',
			'Product_Stock',
			'Product_Meta',
			'Product_Short_Description',
			'Product_Content',
			'Product_Data_Tabs',
			'Product_Additional_Information',
			'Product_Related',
			'Product_Upsell',

			'Checkout',
			'Cart',
			'My_Account',
		];
	}

	public function add_product_post_class( $classes ) {
		$classes[] = 'product';

		return $classes;
	}

	public function add_products_post_class_filter() {
		add_filter( 'post_class', [ $this, 'add_product_post_class' ] );
	}

	public function remove_products_post_class_filter() {
		remove_filter( 'post_class', [ $this, 'add_product_post_class' ] );
	}

	public function register_tags() {
		$tags = [
			'Product_Gallery',
			'Product_Image',
			'Product_Price',
			'Product_Rating',
			'Product_Sale',
			'Product_Short_Description',
			'Product_SKU',
			'Product_Stock',
			'Product_Terms',
			'Product_Title',
			'Category_Image',
		];

		/** @var \Elementor\Core\DynamicTags\Manager $module */
		$module = Plugin::elementor()->dynamic_tags;

		$module->register_group( self::WOOCOMMERCE_GROUP, [
			'title' => esc_html__( 'WooCommerce', 'elementor-pro' ),
		] );

		foreach ( $tags as $tag ) {
			$module->register_tag( 'ElementorPro\\Modules\\Woocommerce\\tags\\' . $tag );
		}
	}

	public function register_wc_hooks() {
		wc()->frontend_includes();
	}

	/**
	 * @param Conditions_Manager $conditions_manager
	 */
	public function register_conditions( $conditions_manager ) {
		$woocommerce_condition = new Woocommerce();

		$conditions_manager->get_condition( 'general' )->register_sub_condition( $woocommerce_condition );
	}

	/**
	 * @param Documents_Manager $documents_manager
	 */
	public function register_documents( $documents_manager ) {
		$this->docs_types = [
			'product-post' => Product_Post::get_class_full_name(),
			'product' => Product::get_class_full_name(),
			'product-archive' => Product_Archive::get_class_full_name(),
		];

		foreach ( $this->docs_types as $type => $class_name ) {
			$documents_manager->register_document_type( $type, $class_name );
		}
	}

	public static function render_menu_cart_toggle_button() {
		if ( null === WC()->cart ) {
			return;
		}
		$product_count = WC()->cart->get_cart_contents_count();
		$sub_total = WC()->cart->get_cart_subtotal();
		$counter_attr = 'data-counter="' . $product_count . '"';
		?>
		<div class="elementor-menu-cart__toggle elementor-button-wrapper">
			<a id="elementor-menu-cart__toggle_button" href="#" class="elementor-menu-cart__toggle_button elementor-button elementor-size-sm" aria-expanded="false">
				<span class="elementor-button-text"><?php echo $sub_total; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
				<span class="elementor-button-icon" <?php echo $counter_attr; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
					<i class="eicon"></i>
					<span class="elementor-screen-only"><?php esc_html_e( 'Cart', 'elementor-pro' ); ?></span>
				</span>
			</a>
		</div>
		<?php
	}

	/**
	 * Render menu cart.
	 * The `widget_shopping_cart_content` div will be populated by woocommerce js.
	 */
	public static function render_menu_cart() {
		if ( null === WC()->cart ) {
			return;
		}

		$widget_cart_is_hidden = apply_filters( 'woocommerce_widget_cart_is_hidden', false );
		?>
		<div class="elementor-menu-cart__wrapper">
			<?php if ( ! $widget_cart_is_hidden ) : ?>
				<div class="elementor-menu-cart__toggle_wrapper">
					<div class="elementor-menu-cart__container elementor-lightbox" aria-hidden="true">
						<div class="elementor-menu-cart__main" aria-hidden="true">
							<div class="elementor-menu-cart__close-button"></div>
							<div class="widget_shopping_cart_content">
								<?php woocommerce_mini_cart(); ?>
							</div>
						</div>
					</div>
					<?php self::render_menu_cart_toggle_button(); ?>
				</div>
			<?php endif; ?>
		</div> <!-- close elementor-menu-cart__wrapper -->
		<?php
	}

	/**
	 * Refresh the Menu Cart button and items counter.
	 * The mini-cart itself will be rendered by WC functions.
	 *
	 * @param $fragments
	 *
	 * @return array
	 */
	public function menu_cart_fragments( $fragments ) {
		$has_cart = is_a( WC()->cart, 'WC_Cart' );
		if ( ! $has_cart || ! $this->use_mini_cart_template ) {
			return $fragments;
		}

		ob_start();
		self::render_menu_cart_toggle_button();
		$menu_cart_toggle_button_html = ob_get_clean();

		if ( ! empty( $menu_cart_toggle_button_html ) ) {
			$fragments['body div.elementor-widget.elementor-widget-woocommerce-menu-cart div.elementor-menu-cart__toggle'] = $menu_cart_toggle_button_html;
		}

		return $fragments;
	}

	public function maybe_init_cart() {
		$has_cart = is_a( WC()->cart, 'WC_Cart' );

		if ( ! $has_cart ) {
			$session_class = apply_filters( 'woocommerce_session_handler', 'WC_Session_Handler' );
			WC()->session = new $session_class();
			WC()->session->init();
			WC()->cart = new \WC_Cart();
			WC()->customer = new \WC_Customer( get_current_user_id(), true );
		}
	}

	public function localized_settings_frontend( $settings ) {
		$has_cart = is_a( WC()->cart, 'WC_Cart' );

		if ( $has_cart ) {
			$settings['menu_cart'] = [
				'cart_page_url' => wc_get_cart_url(),
				'checkout_page_url' => wc_get_checkout_url(),
			];
		}
		return $settings;
	}

	public function theme_template_include( $need_override_location, $location ) {
		if ( is_product() && 'single' === $location ) {
			$need_override_location = true;
		}

		return $need_override_location;
	}

	/**
	 * Add plugin path to wc template search path.
	 * Based on: https://www.skyverge.com/blog/override-woocommerce-template-file-within-a-plugin/
	 * @param $template
	 * @param $template_name
	 * @param $template_path
	 *
	 * @return string
	 */
	public function woocommerce_locate_template( $template, $template_name, $template_path ) {

		if ( self::TEMPLATE_MINI_CART !== $template_name ) {
			return $template;
		}

		if ( ! $this->use_mini_cart_template ) {
			return $template;
		}

		$plugin_path = plugin_dir_path( __DIR__ ) . 'woocommerce/wc-templates/';

		if ( file_exists( $plugin_path . $template_name ) ) {
			$template = $plugin_path . $template_name;
		}

		return $template;
	}

	/**
	 * WooCommerce/WordPress widget(s), some of the widgets have css classes that used by final selectors.
	 * before this filter, all those widgets were warped by `.elementor-widget-container` without chain original widget
	 * classes, now they will be warped by div with the original css classes.
	 *
	 * @param array $default_widget_args
	 * @param \Elementor\Widget_WordPress $widget
	 *
	 * @return array $default_widget_args
	 */
	public function woocommerce_wordpress_widget_css_class( $default_widget_args, $widget ) {
		$widget_instance = $widget->get_widget_instance();

		if ( ! empty( $widget_instance->widget_cssclass ) ) {
			$default_widget_args['before_widget'] .= '<div class="' . $widget_instance->widget_cssclass . '">';
			$default_widget_args['after_widget'] .= '</div>';
		}

		return $default_widget_args;
	}

	public function register_admin_fields( Settings $settings ) {
		$settings->add_section( Settings::TAB_INTEGRATIONS, 'woocommerce', [
			'callback' => function() {
				echo '<hr><h2>' . esc_html__( 'WooCommerce', 'elementor-pro' ) . '</h2>';
			},
			'fields' => [
				self::OPTION_NAME_USE_MINI_CART => [
					'label' => esc_html__( 'Mini Cart Template', 'elementor-pro' ),
					'field_args' => [
						'type' => 'select',
						'std' => 'initial',
						'options' => [
							'initial' => '', // Relevant until either menu-cart widget is used or option is explicitly set to 'no'.
							'no' => esc_html__( 'Disable', 'elementor-pro' ),
							'yes' => esc_html__( 'Enable', 'elementor-pro' ),
						],
						'desc' => esc_html__( 'Set to `Disable` in order to use your Theme\'s or WooCommerce\'s mini-cart template instead of Elementor\'s.', 'elementor-pro' ),
					],
				],
			],
		] );
	}

	/**
	 * Load Widget Before WooCommerce Ajax.
	 *
	 * When outputting the complex WooCommerce shortcodes (which we use in our widgets) e.g. Checkout, Cart, etc. WC
	 * immediately does more ajax calls and retrieves updated html fragments based on the data in the forms that may
	 * be autofilled by the current user's browser e.g. the Payment section holding the "Place order" button.
	 *
	 * This function can be hooked before any of these ajax calls and will look for the `elementorPostId` and
	 * `elementorWidgetId` querysring we've appended to the forms `_wp_http_referer` url field and load the related
	 * Elementor Widget before it starts to compile the html to be returned and added to the page.
	 *
	 * This is necessary for example in the Checkout Payment section where we modify the Terms & Conditions text
	 * using settings from the widget.
	 *
	 * @since 3.5.0
	 */
	public function load_widget_before_wc_ajax() {
		check_ajax_referer( 'update-order-review', 'security' );

		$post_id = false;
		$element_id = false;

		if ( isset( $_POST['post_data'] ) ) {
			parse_str( $_POST['post_data'], $post_data );

			if ( isset( $post_data['_wp_http_referer'] ) ) {
				$wp_http_referer = wp_unslash( $post_data['_wp_http_referer'] );

				$wp_http_referer_query_string = wp_parse_url( $wp_http_referer, PHP_URL_QUERY );
				parse_str( $wp_http_referer_query_string, $wp_http_referer_query_string );

				if ( isset( $wp_http_referer_query_string['elementorPostId'] ) ) {
					$post_id = $wp_http_referer_query_string['elementorPostId'];
				}

				if ( isset( $wp_http_referer_query_string['elementorWidgetId'] ) ) {
					$element_id = $wp_http_referer_query_string['elementorWidgetId'];
				}
			}
		}

		if ( ! $post_id || ! $element_id ) {
			return;
		}

		$document = Plugin::elementor()->documents->get( $post_id );

		if ( $document ) {
			$widget = Utils::find_element_recursive( $document->get_elements_data(), $element_id );

			if ( $widget ) {
				$widget = Plugin::elementor()->elements_manager->create_element_instance( $widget );
				$widget->get_raw_data( false );
				if ( method_exists( $widget, 'add_render_hooks' ) ) {
					$widget->add_render_hooks();
				}
			}
		}
	}

	/**
	 * Elementor Woocommerce Checkout Login User
	 *
	 * Handle the Ajax call for the custom login form on the Checkout Widget
	 *
	 * @since 3.5.0
	 */
	public function elementor_woocommerce_checkout_login_user() {
		if ( is_user_logged_in() ) {
			wp_logout();
		}

		$error = false;
		$error_message = '';

		if ( ! wp_verify_nonce( $_POST['nonce'], 'woocommerce-login' ) ) {
			$error = true;
			/* translators: %s: Error. */
			$error_message = sprintf( esc_html__( '%s Sorry, the nonce security check didn’t pass. Please reload the page and try again. You may want to try clearing your browser cache as a last attempt.', 'elementor-pro' ), '<strong>Error:</strong>' );
		} else {
			$info = [
				'user_login' => trim( $_POST['username'] ),
				'user_password' => trim( $_POST['password'] ),
				'remember' => $_POST['remember'],
			];

			$user_signon = wp_signon( $info, false );

			if ( is_wp_error( $user_signon ) ) {
				$error = true;
				$error_message = $user_signon->get_error_message();
			}
		}

		if ( $error ) {
			wc_add_notice(
				$error_message,
				'error'
			);
			$response = [
				'logged_in' => false,
				'message' => wc_print_notices( true ),
			];
		} else {
			$response = [ 'logged_in' => true ];
		}

		echo wp_json_encode( $response );
		wp_die();
	}

	/**
	 * Print Woocommerce Shipping Message
	 *
	 * Format the shipping messages that will be displayed on the Cart and Checkout Widgets.
	 * This will add extra classes to those messages so that we can target certain messages
	 * with certain style controls.
	 *
	 * @since 3.5.0
	 *
	 * @param string $html the original HTML from WC
	 * @param string $classes the classes we will surround $html with
	 * @return string the final formatted HTML that will be rendered
	 */
	private function print_woocommerce_shipping_message( $html, $classes ) {
		return '<span class="' . wp_sprintf( '%s', $classes ) . '">' . $html . '</span>';
	}

	/**
	 * Register Ajax Actions.
	 *
	 * Registers ajax action used by the Editor js.
	 *
	 * @since 3.5.0
	 *
	 * @param Ajax $ajax
	 */
	public function register_ajax_actions( Ajax $ajax ) {
		// `woocommerce_update_page_option` is called in the editor save-show-modal.js.
		$ajax->register_ajax_action( 'pro_woocommerce_update_page_option', [ $this, 'update_page_option' ] );
	}

	/**
	 * Update Page Option.
	 *
	 * Ajax action can be used to update any WooCommerce option.
	 *
	 * @since 3.5.0
	 *
	 * @param array $data
	 */
	public function update_page_option( $data ) {
		update_option( $data['option_name'], $data['editor_post_id'] );
	}

	public function init_site_settings( \Elementor\Core\Kits\Documents\Kit $kit ) {
		$kit->register_tab( 'settings-woocommerce', \ElementorPro\Modules\Woocommerce\Settings\Settings_Woocommerce::class );
	}

	/**
	 * Add Update Kit Settings Hooks
	 *
	 * Add hooks that update the corresponding kit setting when the WooCommerce option is updated.
	 */
	public function add_update_kit_settings_hooks() {
		add_action( 'update_option_woocommerce_cart_page_id', function( $old_value, $value ) {
			Plugin::elementor()->kits_manager->update_kit_settings_based_on_option( 'woocommerce_cart_page_id', $value );
		}, 10, 2 );

		add_action( 'update_option_woocommerce_checkout_page_id', function( $old_value, $value ) {
			Plugin::elementor()->kits_manager->update_kit_settings_based_on_option( 'woocommerce_checkout_page_id', $value );
		}, 10, 2 );

		add_action( 'update_option_woocommerce_myaccount_page_id', function( $old_value, $value ) {
			Plugin::elementor()->kits_manager->update_kit_settings_based_on_option( 'woocommerce_myaccount_page_id', $value );
		}, 10, 2 );

		add_action( 'update_option_woocommerce_terms_page_id', function( $old_value, $value ) {
			Plugin::elementor()->kits_manager->update_kit_settings_based_on_option( 'woocommerce_terms_page_id', $value );
		}, 10, 2 );
	}

	/**
	 * Elementor WC My Account Logout
	 *
	 * Programatically log out if $_REQUEST['elementor_wc_logout'] is set.
	 * The $_REQUEST variables we have generated a custom logout URL for in the My Account menu.
	 *
	 * @since 3.5.0
	 */
	public function elementor_wc_my_account_logout() {
		if ( ! empty( $_REQUEST['elementor_wc_logout'] ) && ! empty( $_REQUEST['_wpnonce'] ) && wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), 'customer-logout' ) ) {
			wp_logout(); // Log the user out Programatically.
			wp_safe_redirect( esc_url( $_REQUEST['elementor_my_account_redirect'] ) ); // Redirect back to the widget page.
			exit;
		}
	}

	/**
	 * Add Localize Data
	 *
	 * Makes `woocommercePages` available with the page name and the associated post ID for use with the various
	 * widgets site settings modal.
	 *
	 * @param $settings
	 * @return array
	 */
	public function add_localize_data( $settings ) {
		$settings['woocommercePages'] = [
			'checkout' => wc_get_page_id( 'checkout' ),
			'cart' => wc_get_page_id( 'cart' ),
			'myaccount' => wc_get_page_id( 'myaccount' ),
		];

		return $settings;
	}

	public function __construct() {
		parent::__construct();

		add_action( 'elementor/kit/register_tabs', [ $this, 'init_site_settings' ], 1, 40 );
		$this->add_update_kit_settings_hooks();

		$this->use_mini_cart_template = 'yes' === get_option( 'elementor_' . self::OPTION_NAME_USE_MINI_CART, 'no' );

		if ( is_admin() ) {
			add_action( 'elementor/admin/after_create_settings/' . Settings::PAGE_ID, [ $this, 'register_admin_fields' ], 15 );
		}

		add_action( 'elementor/editor/before_enqueue_scripts', [ $this, 'maybe_init_cart' ] );
		add_action( 'elementor/dynamic_tags/register_tags', [ $this, 'register_tags' ] );
		add_action( 'elementor/documents/register', [ $this, 'register_documents' ] );
		add_action( 'elementor/theme/register_conditions', [ $this, 'register_conditions' ] );

		add_action( 'wp_ajax_elementor_woocommerce_checkout_login_user', [ $this, 'elementor_woocommerce_checkout_login_user' ] );
		add_action( 'wp_ajax_nopriv_elementor_woocommerce_checkout_login_user', [ $this, 'elementor_woocommerce_checkout_login_user' ] );

		add_filter( 'elementor/theme/need_override_location', [ $this, 'theme_template_include' ], 10, 2 );

		add_filter( 'elementor_pro/frontend/localize_settings', [ $this, 'localized_settings_frontend' ] );

		// Load our widget Before WooCommerce Ajax. See the variable's PHPDoc for details.
		add_action( 'woocommerce_checkout_update_order_review', [ $this, 'load_widget_before_wc_ajax' ] );

		// On Editor - Register WooCommerce frontend hooks before the Editor init.
		// Priority = 5, in order to allow plugins remove/add their wc hooks on init.
		if ( ! empty( $_REQUEST['action'] ) && 'elementor' === $_REQUEST['action'] && is_admin() ) {
			add_action( 'init', [ $this, 'register_wc_hooks' ], 5 );
		}

		// Allow viewing of Checkout page in the Editor with an empty cart.
		if (
			( ! empty( $_REQUEST['action'] ) && 'elementor' === $_REQUEST['action'] && is_admin() ) // Elementor Editor
			|| ! empty( $_REQUEST['elementor-preview'] ) // Elementor Editor Preview
			|| ( ! empty( $_REQUEST['action'] ) && 'elementor_ajax' === $_REQUEST['action'] ) // Elementor Editor Preview - Ajax Render Widget
		) {
			add_filter( 'woocommerce_checkout_redirect_empty_cart', '__return_false', 5 );
		}

		if ( $this->use_mini_cart_template ) {
			add_filter( 'woocommerce_add_to_cart_fragments', [ $this, 'menu_cart_fragments' ] );
			add_filter( 'woocommerce_locate_template', [ $this, 'woocommerce_locate_template' ], 10, 3 );
		}

		add_filter( 'elementor/widgets/wordpress/widget_args', [ $this, 'woocommerce_wordpress_widget_css_class' ], 10, 2 );

		add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] );

		// Make the Logout redirect go to our my account widget page instead of the set My Account Page.
		add_action( 'init', [ $this, 'elementor_wc_my_account_logout' ], 5 );

		add_filter( 'elementor_pro/editor/localize_settings', [ $this, 'add_localize_data' ] );

		// Filters for messages on the Shipping calculator
		add_filter( 'woocommerce_shipping_may_be_available_html', function ( $html ) {
			return $this->print_woocommerce_shipping_message( $html, 'woocommerce-shipping-may-be-available-html e-checkout-message e-cart-content' );
		}, 10, 1 );

		add_filter( 'woocommerce_shipping_not_enabled_on_cart_html', function ( $html ) {
			return $this->print_woocommerce_shipping_message( $html, 'woocommerce-shipping-not_enabled-on-cart-html e-checkout-message e-cart-content' );
		}, 10, 1 );

		add_filter( 'woocommerce_shipping_estimate_html', function ( $html ) {
			return $this->print_woocommerce_shipping_message( $html, 'woocommerce-shipping-estimate-html e-checkout-message e-cart-content' );
		}, 10, 1 );

		add_filter( 'woocommerce_cart_no_shipping_available_html', function ( $html ) {
			return $this->print_woocommerce_shipping_message( $html, 'woocommerce-cart-no-shipping-available-html e-checkout-message e-cart-content' );
		}, 10, 1 );

		add_filter( 'woocommerce_no_available_payment_methods_message', function ( $html ) {
			return $this->print_woocommerce_shipping_message( $html, 'woocommerce-no-available-payment-methods-message e-description' );
		}, 10, 1 );

		add_filter( 'woocommerce_no_shipping_available_html', function ( $html ) {
			return $this->print_woocommerce_shipping_message( $html, 'woocommerce-no-shipping-available-html e-checkout-message' );
		}, 10, 1 );
	}
}
modules/woocommerce/conditions/shop-page.php000064400000001102150755004300015271 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Conditions;

use ElementorPro\Modules\ThemeBuilder as ThemeBuilder;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Shop_Page extends ThemeBuilder\Conditions\Condition_Base {

	public static function get_type() {
		return 'singular';
	}

	public function get_name() {
		return 'shop_page';
	}

	public static function get_priority() {
		return 40;
	}

	public function get_label() {
		return esc_html__( 'Shop Page', 'elementor-pro' );
	}

	public function check( $args ) {
		return is_shop();
	}
}
modules/woocommerce/conditions/woocommerce.php000064400000001746150755004300015743 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Conditions;

use ElementorPro\Modules\ThemeBuilder as ThemeBuilder;
use ElementorPro\Modules\Woocommerce\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Woocommerce extends ThemeBuilder\Conditions\Condition_Base {

	public static function get_type() {
		return 'woocommerce';
	}

	public function get_name() {
		return 'woocommerce';
	}

	public function get_label() {
		return esc_html__( 'WooCommerce', 'elementor-pro' );
	}

	public function get_all_label() {
		return esc_html__( 'Entire Shop', 'elementor-pro' );
	}

	public function register_sub_conditions() {
		$product_archive = new Product_Archive();

		$product_single = new ThemeBuilder\Conditions\Post( [
			'post_type' => 'product',
		] );

		$this->register_sub_condition( $product_archive );
		$this->register_sub_condition( $product_single );
	}

	public function check( $args ) {
		return is_woocommerce() || Module::is_product_search();
	}
}
modules/woocommerce/conditions/product-search.php000064400000001217150755004300016340 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Conditions;

use ElementorPro\Modules\ThemeBuilder as ThemeBuilder;
use ElementorPro\Modules\Woocommerce\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Search extends ThemeBuilder\Conditions\Condition_Base {

	public static function get_type() {
		return 'archive';
	}

	public function get_name() {
		return 'product_search';
	}

	public static function get_priority() {
		return 40;
	}

	public function get_label() {
		return esc_html__( 'Search Results', 'elementor-pro' );
	}

	public function check( $args ) {
		return Module::is_product_search();
	}
}
modules/woocommerce/conditions/product-archive.php000064400000002736150755004300016523 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Conditions;

use ElementorPro\Modules\ThemeBuilder as ThemeBuilder;
use ElementorPro\Modules\Woocommerce\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Archive extends ThemeBuilder\Conditions\Condition_Base {

	private $post_type = 'product';
	private $post_taxonomies;

	public function __construct( array $data = [] ) {
		$taxonomies = get_object_taxonomies( $this->post_type, 'objects' );
		$this->post_taxonomies = wp_filter_object_list( $taxonomies, [
			'public' => true,
			'show_in_nav_menus' => true,
		] );

		parent::__construct( $data );
	}

	public static function get_type() {
		return 'archive';
	}

	public function get_name() {
		return 'product_archive';
	}

	public static function get_priority() {
		return 40;
	}

	public function get_label() {
		return esc_html__( 'Product Archive', 'elementor-pro' );
	}

	public function get_all_label() {
		return esc_html__( 'All Product Archives', 'elementor-pro' );
	}

	public function register_sub_conditions() {
		$this->register_sub_condition( new Shop_page() );
		$this->register_sub_condition( new Product_Search() );

		foreach ( $this->post_taxonomies as $slug => $object ) {
			$condition = new ThemeBuilder\Conditions\Taxonomy( [
				'object' => $object,
			] );
			$this->register_sub_condition( $condition );
		}
	}

	public function check( $args ) {
		return is_shop() || is_product_taxonomy() || Module::is_product_search();
	}
}
modules/woocommerce/wc-templates/cart/mini-cart.php000064400000011617150755004300016472 0ustar00<?php

defined( 'ABSPATH' ) || exit;

if ( ! function_exists( 'elementor_pro_render_mini_cart_item' ) ) {
	function elementor_pro_render_mini_cart_item( $cart_item_key, $cart_item ) {
		$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
		$is_product_visible = ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_widget_cart_item_visible', true, $cart_item, $cart_item_key ) );

		if ( ! $is_product_visible ) {
			return;
		}

		$product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );
		$product_price = apply_filters( 'woocommerce_cart_item_price', WC()->cart->get_product_price( $_product ), $cart_item, $cart_item_key );
		$product_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '', $cart_item, $cart_item_key );
		?>
		<div class="elementor-menu-cart__product woocommerce-cart-form__cart-item <?php echo esc_attr( apply_filters( 'woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key ) ); ?>">

			<div class="elementor-menu-cart__product-image product-thumbnail">
				<?php
				$thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key );

				if ( ! $product_permalink ) :
					echo wp_kses_post( $thumbnail );
				else :
					printf( '<a href="%s">%s</a>', esc_url( $product_permalink ), wp_kses_post( $thumbnail ) );
				endif;
				?>
			</div>

			<div class="elementor-menu-cart__product-name product-name" data-title="<?php esc_attr_e( 'Product', 'elementor-pro' ); ?>">
				<?php
				if ( ! $product_permalink ) :
					echo wp_kses_post( apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key ) . '&nbsp;' );
				else :
					echo wp_kses_post( apply_filters( 'woocommerce_cart_item_name', sprintf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $_product->get_name() ), $cart_item, $cart_item_key ) );
				endif;

				do_action( 'woocommerce_after_cart_item_name', $cart_item, $cart_item_key );

				// Meta data.
				echo wc_get_formatted_cart_item_data( $cart_item ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				?>
			</div>

			<div class="elementor-menu-cart__product-price product-price" data-title="<?php esc_attr_e( 'Price', 'elementor-pro' ); ?>">
				<?php echo apply_filters( 'woocommerce_widget_cart_item_quantity', '<span class="quantity">' . sprintf( '<span class="product-quantity">%s &times;</span> %s', $cart_item['quantity'], $product_price ) . '</span>', $cart_item, $cart_item_key ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
			</div>

			<div class="elementor-menu-cart__product-remove product-remove">
				<?php foreach ( [ 'elementor_remove_from_cart_button', 'remove_from_cart_button' ] as $class ) {
					echo apply_filters( 'woocommerce_cart_item_remove_link', sprintf( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
						'<a href="%s" class="%s" aria-label="%s" data-product_id="%s" data-cart_item_key="%s" data-product_sku="%s"></a>',
						esc_url( wc_get_cart_remove_url( $cart_item_key ) ),
						$class,
						__( 'Remove this item', 'elementor-pro' ),
						esc_attr( $product_id ),
						esc_attr( $cart_item_key ),
						esc_attr( $_product->get_sku() )
					), $cart_item_key );
				} ?>
			</div>
		</div>
		<?php
	}
}

$cart_items = WC()->cart->get_cart();

if ( empty( $cart_items ) ) { ?>
	<div class="woocommerce-mini-cart__empty-message"><?php esc_attr_e( 'No products in the cart.', 'elementor-pro' ); ?></div>
<?php } else { ?>
	<div class="elementor-menu-cart__products woocommerce-mini-cart cart woocommerce-cart-form__contents">
		<?php
		do_action( 'woocommerce_before_mini_cart_contents' );

		foreach ( $cart_items as $cart_item_key => $cart_item ) {
			elementor_pro_render_mini_cart_item( $cart_item_key, $cart_item );
		}

		do_action( 'woocommerce_mini_cart_contents' );
		?>
	</div>

	<div class="elementor-menu-cart__subtotal">
		<strong><?php echo esc_html__( 'Subtotal', 'woocommerce' ); // phpcs:ignore WordPress.WP.I18n ?>:</strong>
		<?php echo WC()->cart->get_cart_subtotal(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
	</div>
	<div class="elementor-menu-cart__footer-buttons">
		<a href="<?php echo esc_url( wc_get_cart_url() ); ?>" class="elementor-button elementor-button--view-cart elementor-size-md">
			<span class="elementor-button-text"><?php echo esc_html__( 'View cart', 'woocommerce' ); // phpcs:ignore WordPress.WP.I18n ?></span>
		</a>
		<a href="<?php echo esc_url( wc_get_checkout_url() ); ?>" class="elementor-button elementor-button--checkout elementor-size-md">
			<span class="elementor-button-text"><?php echo esc_html__( 'Checkout', 'woocommerce' ); // phpcs:ignore WordPress.WP.I18n ?></span>
		</a>
	</div>
	<?php
} // empty( $cart_items )

?>
modules/woocommerce/tags/product-short-description.php000064400000001312150755004300017334 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Tags;

use ElementorPro\Modules\Woocommerce\Tags\Traits\Tag_Product_Id;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Short_Description extends Base_Tag {
	public function get_name() {
		return 'woocommerce-product-short-description-tag';
	}

	public function get_title() {
		return esc_html__( 'Product Short Description', 'elementor-pro' );
	}

	protected function register_controls() {
		$this->add_product_id_control();
	}

	public function render() {
		$product = wc_get_product( $this->get_settings( 'product_id' ) );
		if ( ! $product ) {
			return;
		}

		echo wp_kses_post( $product->get_short_description() );
	}
}
modules/woocommerce/tags/product-price.php000064400000003002150755004300014754 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\Woocommerce\Tags\Traits\Tag_Product_Id;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Price extends Base_Tag {
	public function get_name() {
		return 'woocommerce-product-price-tag';
	}

	public function get_title() {
		return esc_html__( 'Product Price', 'elementor-pro' );
	}

	protected function register_controls() {
		$this->add_control( 'format', [
			'label' => esc_html__( 'Format', 'elementor-pro' ),
			'type' => Controls_Manager::SELECT,
			'options' => [
				'both' => esc_html__( 'Both', 'elementor-pro' ),
				'original' => esc_html__( 'Original', 'elementor-pro' ),
				'sale' => esc_html__( 'Sale', 'elementor-pro' ),
			],
			'default' => 'both',
		] );

		$this->add_product_id_control();
	}

	public function render() {
		$product = wc_get_product( $this->get_settings( 'product_id' ) );
		if ( ! $product ) {
			return '';
		}

		$format = $this->get_settings( 'format' );
		$value = '';
		switch ( $format ) {
			case 'both':
				$value = $product->get_price_html();
				break;
			case 'original':
				$value = wc_price( $product->get_regular_price() ) . $product->get_price_suffix();
				break;
			case 'sale' && $product->is_on_sale():
				$value = wc_price( $product->get_sale_price() ) . $product->get_price_suffix();
				break;
		}

		// PHPCS - Just passing WC price as is
		echo $value; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}
}
modules/woocommerce/tags/product-stock.php000064400000002400150755004300014776 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\Woocommerce\Tags\Traits\Tag_Product_Id;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Stock extends Base_Tag {
	public function get_name() {
		return 'woocommerce-product-stock-tag';
	}

	public function get_title() {
		return esc_html__( 'Product Stock', 'elementor-pro' );
	}

	public function render() {
		$product = wc_get_product( $this->get_settings( 'product_id' ) );
		if ( ! $product ) {
			return;
		}

		if ( 'yes' === $this->get_settings( 'show_text' ) ) {
			$value = wc_get_stock_html( $product );
		} else {
			$value = (int) $product->get_stock_quantity();
		}

		// PHPCS - `wc_get_stock_html` is safe, and `get_stock_quantity` protected with (int).
		echo $value; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}

	protected function register_controls() {
		$this->add_control(
			'show_text',
			[
				'label' => esc_html__( 'Show Text', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
			]
		);

		$this->add_product_id_control();
	}
}
modules/woocommerce/tags/base-tag.php000064400000001021150755004300013656 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Tag;
use ElementorPro\Modules\Woocommerce\Module;
use ElementorPro\Modules\Woocommerce\Tags\Traits\Tag_Product_Id;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Base_Tag extends Tag {
	use Tag_Product_Id;

	public function get_group() {
		return Module::WOOCOMMERCE_GROUP;
	}

	public function get_categories() {
		return [ \Elementor\Modules\DynamicTags\Module::TEXT_CATEGORY ];
	}
}
modules/woocommerce/tags/product-sale.php000064400000001704150755004300014605 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\Woocommerce\Tags\Traits\Tag_Product_Id;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Sale extends Base_Tag {
	public function get_name() {
		return 'woocommerce-product-sale-tag';
	}

	public function get_title() {
		return esc_html__( 'Product Sale', 'elementor-pro' );
	}

	protected function register_controls() {
		$this->add_control( 'text', [
			'label' => esc_html__( 'Text', 'elementor-pro' ),
			'type' => Controls_Manager::TEXT,
			'default' => esc_html__( 'Sale!', 'elementor-pro' ),
		] );

		$this->add_product_id_control();
	}

	public function render() {
		$product = wc_get_product( $this->get_settings( 'product_id' ) );
		if ( ! $product ) {
			return;
		}

		$value = '';

		if ( $product->is_on_sale() ) {
			$value = $this->get_settings( 'text' );
		}

		echo wp_kses_post( $value );
	}
}
modules/woocommerce/tags/category-image.php000064400000002273150755004300015102 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Tags;

use ElementorPro\Modules\Woocommerce\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Category_Image extends Base_Data_Tag {
	public function get_name() {
		return 'woocommerce-category-image-tag';
	}

	public function get_title() {
		return esc_html__( 'Category Image', 'elementor-pro' );
	}

	public function get_group() {
		return Module::WOOCOMMERCE_GROUP;
	}

	public function get_categories() {
		return [ \Elementor\Modules\DynamicTags\Module::IMAGE_CATEGORY ];
	}

	public function get_value( array $options = [] ) {
		$category_id = 0;

		if ( is_product_category() ) {
			$category_id = get_queried_object_id();
		} elseif ( is_product() ) {
			$product = wc_get_product();
			if ( $product ) {
				$category_ids = $product->get_category_ids();
				if ( ! empty( $category_ids ) ) {
					$category_id = $category_ids[0];
				}
			}
		}

		if ( $category_id ) {
			$image_id = get_term_meta( $category_id, 'thumbnail_id', true );
		}

		if ( empty( $image_id ) ) {
			return [];
		}

		$src = wp_get_attachment_image_src( $image_id, 'full' );

		return [
			'id' => $image_id,
			'url' => $src[0],
		];
	}
}
modules/woocommerce/tags/product-image.php000064400000002115150755004300014740 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Tags;

use ElementorPro\Modules\Woocommerce\Module;
use ElementorPro\Modules\Woocommerce\Tags\Traits\Tag_Product_Id;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Image extends Base_Data_Tag {
	use Tag_Product_Id;

	public function get_name() {
		return 'woocommerce-product-image-tag';
	}

	public function get_title() {
		return esc_html__( 'Product Image', 'elementor-pro' );
	}

	protected function register_controls() {
		$this->add_product_id_control();
	}

	public function get_group() {
		return Module::WOOCOMMERCE_GROUP;
	}

	public function get_categories() {
		return [ \Elementor\Modules\DynamicTags\Module::IMAGE_CATEGORY ];
	}

	public function get_value( array $options = [] ) {
		$product = wc_get_product( $this->get_settings( 'product_id' ) );

		if ( ! $product ) {
			return [];
		}

		$image_id = $product->get_image_id();

		if ( ! $image_id ) {
			return [];
		}

		$src = wp_get_attachment_image_src( $image_id, 'full' );

		return [
			'id' => $image_id,
			'url' => $src[0],
		];
	}
}
modules/woocommerce/tags/product-terms.php000064400000003245150755004300015015 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\Woocommerce\Tags\Traits\Tag_Product_Id;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Terms extends Base_Tag {
	public function get_name() {
		return 'woocommerce-product-terms-tag';
	}

	public function get_title() {
		return esc_html__( 'Product Terms', 'elementor-pro' );
	}

	protected function register_advanced_section() {
		parent::register_advanced_section();

		$this->update_control(
			'before',
			[
				'default' => esc_html__( 'Categories', 'elementor-pro' ) . ': ',
			]
		);
	}

	protected function register_controls() {
		$taxonomy_filter_args = [
			'show_in_nav_menus' => true,
			'object_type' => [ 'product' ],
		];

		$taxonomies = get_taxonomies( $taxonomy_filter_args, 'objects' );

		$options = [];

		foreach ( $taxonomies as $taxonomy => $object ) {
			$options[ $taxonomy ] = $object->label;
		}

		$this->add_control(
			'taxonomy',
			[
				'label' => esc_html__( 'Taxonomy', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $options,
				'default' => 'product_cat',
			]
		);

		$this->add_control(
			'separator',
			[
				'label' => esc_html__( 'Separator', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => ', ',
			]
		);

		$this->add_product_id_control();
	}

	public function render() {
		$settings = $this->get_settings();

		$product = wc_get_product( $settings['product_id'] );
		if ( ! $product ) {
			return;
		}

		$value = get_the_term_list( $product->get_id(), $settings['taxonomy'], '', $settings['separator'] );

		echo wp_kses_post( $value );
	}
}
modules/woocommerce/tags/product-rating.php000064400000002723150755004300015147 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Tags;

use Elementor\Controls_Manager;
use ElementorPro\Modules\Woocommerce\Tags\Traits\Tag_Product_Id;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Rating extends Base_Tag {
	public function get_name() {
		return 'woocommerce-product-rating-tag';
	}

	public function get_title() {
		return esc_html__( 'Product Rating', 'elementor-pro' );
	}

	protected function register_controls() {
		$this->add_control( 'field', [
			'label' => esc_html__( 'Format', 'elementor-pro' ),
			'type' => Controls_Manager::SELECT,
			'options' => [
				'average_rating' => esc_html__( 'Average Rating', 'elementor-pro' ),
				'rating_count' => esc_html__( 'Rating Count', 'elementor-pro' ),
				'review_count' => esc_html__( 'Review Count', 'elementor-pro' ),
			],
			'default' => 'average_rating',
		] );

		$this->add_product_id_control();
	}

	public function render() {
		$product = wc_get_product( $this->get_settings( 'product_id' ) );
		if ( ! $product ) {
			return '';
		}

		$field = $this->get_settings( 'field' );
		$value = '';
		switch ( $field ) {
			case 'average_rating':
				$value = $product->get_average_rating();
				break;
			case 'rating_count':
				$value = $product->get_rating_count();
				break;
			case 'review_count':
				$value = $product->get_review_count();
				break;
		}

		// PHPCS - Safe WC data
		echo $value; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}
}
modules/woocommerce/tags/product-gallery.php000064400000001576150755004300015327 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Tags;

use ElementorPro\Modules\Woocommerce\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Gallery extends Base_Data_Tag {
	public function get_name() {
		return 'woocommerce-product-gallery-tag';
	}

	public function get_title() {
		return esc_html__( 'Product Gallery', 'elementor-pro' );
	}

	public function get_group() {
		return Module::WOOCOMMERCE_GROUP;
	}

	public function get_categories() {
		return [ \Elementor\Modules\DynamicTags\Module::GALLERY_CATEGORY ];
	}

	public function get_value( array $options = [] ) {
		$product = wc_get_product();
		if ( ! $product ) {
			return [];
		}
		$value = [];

		$attachment_ids = $product->get_gallery_image_ids();

		foreach ( $attachment_ids as $attachment_id ) {
			$value[] = [
				'id' => $attachment_id,
			];
		}

		return $value;
	}
}
modules/woocommerce/tags/product-title.php000064400000001232150755004300014776 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Tags;

use ElementorPro\Modules\Woocommerce\Tags\Traits\Tag_Product_Id;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_Title extends Base_Tag {
	public function get_name() {
		return 'woocommerce-product-title-tag';
	}

	public function get_title() {
		return esc_html__( 'Product Title', 'elementor-pro' );
	}

	protected function register_controls() {
		$this->add_product_id_control();
	}

	public function render() {
		$product = wc_get_product( $this->get_settings( 'product_id' ) );
		if ( ! $product ) {
			return;
		}

		echo wp_kses_post( $product->get_title() );
	}
}
modules/woocommerce/tags/traits/tag-product-id.php000064400000001503150755004300016331 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Tags\Traits;

use ElementorPro\Modules\QueryControl\Module as QueryControlModule;

trait Tag_Product_Id {
	public function add_product_id_control() {
		$this->add_control(
			'product_id',
			[
				'label' => esc_html__( 'Product', 'elementor-pro' ),
				'type' => QueryControlModule::QUERY_CONTROL_ID,
				'options' => [],
				'label_block' => true,
				'autocomplete' => [
					'object' => QueryControlModule::QUERY_OBJECT_POST,
					'query' => [
						'post_type' => [ 'product' ],
					],
				],
				// Since we're using the `wc_get_product` method to retrieve products, when no product selected manually
				// by the dynamic tag - the default should be `false` so the method will use the product id given in the
				// http request instead.
				'default' => false,
			]
		);
	}
}
modules/woocommerce/tags/base-data-tag.php000064400000000537150755004300014600 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Tags;

use ElementorPro\Modules\DynamicTags\Tags\Base\Data_Tag;
use ElementorPro\Modules\Woocommerce\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Base_Data_Tag extends Data_Tag {

	public function get_group() {
		return Module::WOOCOMMERCE_GROUP;
	}
}
modules/woocommerce/tags/product-sku.php000064400000001326150755004300014463 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Tags;

use ElementorPro\Modules\Woocommerce\Tags\Traits\Tag_Product_Id;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Product_SKU extends Base_Tag {
	public function get_name() {
		return 'woocommerce-product-sku-tag';
	}

	public function get_title() {
		return esc_html__( 'Product SKU', 'elementor-pro' );
	}

	protected function register_controls() {
		$this->add_product_id_control();
	}

	public function render() {
		$product = wc_get_product( $this->get_settings( 'product_id' ) );
		if ( ! $product ) {
			return;
		}

		$value = '';

		if ( $product->get_sku() ) {
			$value = $product->get_sku();
		}

		echo esc_html( $value );
	}
}
modules/woocommerce/settings/settings-woocommerce.php000064400000010117150755004300017260 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Settings;

use Elementor\Core\Base\Document;
use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Tab_Base;
use ElementorPro\Plugin;
use ElementorPro\Modules\QueryControl\Module as QueryModule;


if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Settings_Woocommerce extends Tab_Base {

	public function get_id() {
		return 'settings-woocommerce';
	}

	public function get_title() {
		return esc_html__( 'WooCommerce', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-woo-settings';
	}

	public function get_group() {
		return 'settings';
	}

	public function get_help_url() {
		return 'https://go.elementor.com/global-woocommerce';
	}

	protected function register_tab_controls() {

		$this->start_controls_section(
			'section_woocommerce_pages',
			[
				'label' => esc_html__( 'WooCommerce Pages', 'elementor-pro' ),
				'tab' => $this->get_id(),
			]
		);

		$this->add_control(
			'woocommerce_pages_intro',
			[
				'raw' => esc_html__( 'Select the pages you want to use as your default WooCommerce shop pages', 'elementor-pro' ),
				'type' => Controls_Manager::RAW_HTML,
				'content_classes' => 'elementor-descriptor',
			]
		);

		$autocomplete = [
			'object' => QueryModule::QUERY_OBJECT_POST,
			'query' => [
				'post_type' => [ 'page' ],
			],
		];

		$this->add_control(
			'woocommerce_cart_page_id',
			[
				'label' => esc_html__( 'Cart', 'elementor-pro' ),
				'type' => QueryModule::QUERY_CONTROL_ID,
				'select2options' => [
					'placeholder' => esc_html__( 'Select a page', 'elementor-pro' ),
				],
				'autocomplete' => $autocomplete,
				'default' => get_option( 'woocommerce_cart_page_id' ),
			]
		);

		$this->add_control(
			'woocommerce_checkout_page_id',
			[
				'label' => esc_html__( 'Checkout', 'elementor-pro' ),
				'type' => QueryModule::QUERY_CONTROL_ID,
				'select2options' => [
					'placeholder' => esc_html__( 'Select a page', 'elementor-pro' ),
				],
				'autocomplete' => $autocomplete,
				'default' => get_option( 'woocommerce_checkout_page_id' ),
			]
		);

		$this->add_control(
			'woocommerce_myaccount_page_id',
			[
				'label' => esc_html__( 'My Account', 'elementor-pro' ),
				'type' => QueryModule::QUERY_CONTROL_ID,
				'select2options' => [
					'placeholder' => esc_html__( 'Select a page', 'elementor-pro' ),
				],
				'autocomplete' => $autocomplete,
				'default' => get_option( 'woocommerce_myaccount_page_id' ),
			]
		);

		$this->add_control(
			'woocommerce_terms_page_id',
			[
				'label' => esc_html__( 'Terms & Conditions', 'elementor-pro' ),
				'type' => QueryModule::QUERY_CONTROL_ID,
				'select2options' => [
					'placeholder' => esc_html__( 'Select a page', 'elementor-pro' ),
				],
				'autocomplete' => $autocomplete,
				'default' => get_option( 'woocommerce_terms_page_id' ),
			]
		);

		$this->add_control(
			'woocommerce_pages_notice',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'Note: Changes you make here will also be reflected in the WooCommerce settings on your WP dashboard', 'elementor-pro' ),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$this->end_controls_section();
	}

	public function on_save( $data ) {
		if (
			! isset( $data['settings']['post_status'] ) ||
			Document::STATUS_PUBLISH !== $data['settings']['post_status'] ||
			// Should check for the current action to avoid infinite loop
			// when updating options like: "blogname" and "blogdescription".
			strpos( current_action(), 'update_option_' ) === 0
		) {
			return;
		}

		$ec_wc_key_mapping = [
			'woocommerce_cart_page_id' => 'woocommerce_cart_page_id',
			'woocommerce_checkout_page_id' => 'woocommerce_checkout_page_id',
			'woocommerce_myaccount_page_id' => 'woocommerce_myaccount_page_id',
			'woocommerce_terms_page_id' => 'woocommerce_terms_page_id',
		];
		foreach ( $ec_wc_key_mapping as $ec_key => $wc_key ) {
			if ( array_key_exists( $ec_key, $data['settings'] ) ) {
				$value = $data['settings'][ $ec_key ] ? $data['settings'][ $ec_key ] : '';
				update_option( $wc_key, $value );
			}
		}
	}
}
modules/woocommerce/classes/base-products-renderer.php000064400000000771150755004300017264 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Classes;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Base_Products_Renderer extends \WC_Shortcode_Products {

	/**
	 * Override original `get_content` that returns an HTML wrapper even if no results found.
	 *
	 * @return string Products HTML
	 */
	public function get_content() {
		$result = $this->get_query_results();

		if ( empty( $result->total ) ) {
			return '';
		}

		return parent::get_content();
	}
}
modules/woocommerce/classes/products-renderer.php000064400000017264150755004300016361 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Classes;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Products_Renderer extends Base_Products_Renderer {

	private $settings = [];
	private $is_added_product_filter = false;
	const QUERY_CONTROL_NAME = 'query'; //Constraint: the class that uses the renderer, must use the same name
	const DEFAULT_COLUMNS_AND_ROWS = 4;

	public function __construct( $settings = [], $type = 'products' ) {
		$this->settings = $settings;
		$this->type = $type;
		$this->attributes = $this->parse_attributes( [
			'columns' => $settings['columns'],
			'rows' => $settings['rows'],
			'paginate' => $settings['paginate'],
			'cache' => false,
		] );
		$this->query_args = $this->parse_query_args();
	}

	/**
	 * Override the original `get_query_results`
	 * with modifications that:
	 * 1. Remove `pre_get_posts` action if `is_added_product_filter`.
	 *
	 * @return bool|mixed|object
	 */

	protected function get_query_results() {
		$results = parent::get_query_results();
		// Start edit.
		if ( $this->is_added_product_filter ) {
			remove_action( 'pre_get_posts', [ wc()->query, 'product_query' ] );
		}
		// End edit.

		return $results;
	}

	protected function parse_query_args() {
		$prefix = self::QUERY_CONTROL_NAME . '_';
		$settings = &$this->settings;

		$query_args = [
			'post_type' => 'product',
			'post_status' => 'publish',
			'ignore_sticky_posts' => true,
			'no_found_rows' => false === wc_string_to_bool( $this->attributes['paginate'] ),
			'orderby' => $settings[ $prefix . 'orderby' ],
			'order' => strtoupper( $settings[ $prefix . 'order' ] ),
		];

		$query_args['meta_query'] = WC()->query->get_meta_query();
		$query_args['tax_query'] = [];

		$front_page = is_front_page();
		if ( 'yes' === $settings['paginate'] && 'yes' === $settings['allow_order'] && ! $front_page ) {
			$ordering_args = WC()->query->get_catalog_ordering_args();
		} else {
			$ordering_args = WC()->query->get_catalog_ordering_args( $query_args['orderby'], $query_args['order'] );
		}

		$query_args['orderby'] = $ordering_args['orderby'];
		$query_args['order'] = $ordering_args['order'];
		if ( $ordering_args['meta_key'] ) {
			$query_args['meta_key'] = $ordering_args['meta_key'];
		}

		// Visibility.
		$this->set_visibility_query_args( $query_args );

		//Featured.
		$this->set_featured_query_args( $query_args );

		//Sale.
		$this->set_sale_products_query_args( $query_args );

		// IDs.
		$this->set_ids_query_args( $query_args );

		// Set specific types query args.
		if ( method_exists( $this, "set_{$this->type}_query_args" ) ) {
			$this->{"set_{$this->type}_query_args"}( $query_args );
		}

		// Categories & Tags
		$this->set_terms_query_args( $query_args );

		//Exclude.
		$this->set_exclude_query_args( $query_args );

		if ( 'yes' === $settings['paginate'] ) {
			$page = absint( empty( $_GET['product-page'] ) ? 1 : $_GET['product-page'] );

			if ( 1 < $page ) {
				$query_args['paged'] = $page;
			}

			if ( 'yes' !== $settings['allow_order'] || $front_page ) {
				remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );
			}

			if ( 'yes' !== $settings['show_result_count'] ) {
				remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
			}
		}
		// fallback to the widget's default settings in case settings was left empty:
		$rows = ! empty( $settings['rows'] ) ? $settings['rows'] : self::DEFAULT_COLUMNS_AND_ROWS;
		$columns = ! empty( $settings['columns'] ) ? $settings['columns'] : self::DEFAULT_COLUMNS_AND_ROWS;
		$query_args['posts_per_page'] = intval( $columns * $rows );

		$query_args = apply_filters( 'woocommerce_shortcode_products_query', $query_args, $this->attributes, $this->type );

		// Always query only IDs.
		$query_args['fields'] = 'ids';

		return $query_args;
	}

	protected function set_ids_query_args( &$query_args ) {
		$prefix = self::QUERY_CONTROL_NAME . '_';

		switch ( $this->settings[ $prefix . 'post_type' ] ) {
			case 'by_id':
				$post__in = $this->settings[ $prefix . 'posts_ids' ];
				break;
			case 'sale':
				$post__in = wc_get_product_ids_on_sale();
				break;
		}

		if ( ! empty( $post__in ) ) {
			$query_args['post__in'] = $post__in;
			remove_action( 'pre_get_posts', [ wc()->query, 'product_query' ] );
		}
	}

	private function set_terms_query_args( &$query_args ) {
		$prefix = self::QUERY_CONTROL_NAME . '_';

		$query_type = $this->settings[ $prefix . 'post_type' ];

		if ( 'by_id' === $query_type || 'current_query' === $query_type ) {
			return;
		}

		if ( empty( $this->settings[ $prefix . 'include' ] ) || empty( $this->settings[ $prefix . 'include_term_ids' ] ) || ! in_array( 'terms', $this->settings[ $prefix . 'include' ], true ) ) {
			return;
		}

		$terms = [];
		foreach ( $this->settings[ $prefix . 'include_term_ids' ] as $id ) {
			$term_data = get_term_by( 'term_taxonomy_id', $id );
			$taxonomy = $term_data->taxonomy;
			$terms[ $taxonomy ][] = $id;
		}
		$tax_query = [];
		foreach ( $terms as $taxonomy => $ids ) {
			$query = [
				'taxonomy' => $taxonomy,
				'field' => 'term_taxonomy_id',
				'terms' => $ids,
			];

			$tax_query[] = $query;
		}

		if ( ! empty( $tax_query ) ) {
			$query_args['tax_query'] = array_merge( $query_args['tax_query'], $tax_query );
		}
	}

	protected function set_featured_query_args( &$query_args ) {
		$prefix = self::QUERY_CONTROL_NAME . '_';
		if ( 'featured' === $this->settings[ $prefix . 'post_type' ] ) {
			$product_visibility_term_ids = wc_get_product_visibility_term_ids();

			$query_args['tax_query'][] = [
				'taxonomy' => 'product_visibility',
				'field' => 'term_taxonomy_id',
				'terms' => [ $product_visibility_term_ids['featured'] ],
			];
		}
	}

	protected function set_sale_products_query_args( &$query_args ) {
		$prefix = self::QUERY_CONTROL_NAME . '_';
		if ( 'sale' === $this->settings[ $prefix . 'post_type' ] ) {
			parent::set_sale_products_query_args( $query_args );
		}
	}

	protected function set_exclude_query_args( &$query_args ) {
		$prefix = self::QUERY_CONTROL_NAME . '_';

		if ( empty( $this->settings[ $prefix . 'exclude' ] ) ) {
			return;
		}
		$post__not_in = [];
		if ( in_array( 'current_post', $this->settings[ $prefix . 'exclude' ] ) ) {
			if ( is_singular() ) {
				$post__not_in[] = get_queried_object_id();
			}
		}

		if ( in_array( 'manual_selection', $this->settings[ $prefix . 'exclude' ] ) && ! empty( $this->settings[ $prefix . 'exclude_ids' ] ) ) {
			$post__not_in = array_merge( $post__not_in, $this->settings[ $prefix . 'exclude_ids' ] );
		}

		$query_args['post__not_in'] = empty( $query_args['post__not_in'] ) ? $post__not_in : array_merge( $query_args['post__not_in'], $post__not_in );

		/**
		 * WC populates `post__in` with the ids of the products that are on sale.
		 * Since WP_Query ignores `post__not_in` once `post__in` exists, the ids are filtered manually, using `array_diff`.
		 */
		if ( 'sale' === $this->settings[ $prefix . 'post_type' ] ) {
			$query_args['post__in'] = array_diff( $query_args['post__in'], $query_args['post__not_in'] );
		}

		if ( in_array( 'terms', $this->settings[ $prefix . 'exclude' ] ) && ! empty( $this->settings[ $prefix . 'exclude_term_ids' ] ) ) {
			$terms = [];
			foreach ( $this->settings[ $prefix . 'exclude_term_ids' ] as $to_exclude ) {
				$term_data = get_term_by( 'term_taxonomy_id', $to_exclude );
				$terms[ $term_data->taxonomy ][] = $to_exclude;
			}
			$tax_query = [];
			foreach ( $terms as $taxonomy => $ids ) {
				$tax_query[] = [
					'taxonomy' => $taxonomy,
					'field' => 'term_id',
					'terms' => $ids,
					'operator' => 'NOT IN',
				];
			}
			if ( empty( $query_args['tax_query'] ) ) {
				$query_args['tax_query'] = $tax_query;
			} else {
				$query_args['tax_query']['relation'] = 'AND';
				$query_args['tax_query'][] = $tax_query;
			}
		}
	}
}
modules/woocommerce/classes/current-query-renderer.php000064400000004375150755004300017342 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Classes;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Current_Query_Renderer extends Base_Products_Renderer {

	private $settings = [];

	public function __construct( $settings = [], $type = 'products' ) {
		$this->settings = $settings;
		$this->type = $type;
		$this->attributes = $this->parse_attributes( [
			'paginate' => $settings['paginate'],
			'cache' => false,
		] );
		$this->query_args = $this->parse_query_args();
	}

	/**
	 * Override the original `get_query_results`
	 * with modifications that:
	 * 1. Remove `pre_get_posts` action if `is_added_product_filter`.
	 *
	 * @return bool|mixed|object
	 */
	protected function get_query_results() {
		$query = $GLOBALS['wp_query'];

		$paginated = ! $query->get( 'no_found_rows' );

		// Check is_object to indicate it's called the first time.
		if ( ! empty( $query->posts ) && is_object( $query->posts[0] ) ) {
			$query->posts = array_map( function ( $post ) {
				return $post->ID;
			}, $query->posts );
		}

		$results = (object) array(
			'ids'          => wp_parse_id_list( $query->posts ),
			'total'        => $paginated ? (int) $query->found_posts : count( $query->posts ),
			'total_pages'  => $paginated ? (int) $query->max_num_pages : 1,
			'per_page'     => (int) $query->get( 'posts_per_page' ),
			'current_page' => $paginated ? (int) max( 1, $query->get( 'paged', 1 ) ) : 1,
		);

		return $results;
	}

	protected function parse_query_args() {
		$settings = &$this->settings;

		if ( ! is_page( wc_get_page_id( 'shop' ) ) ) {
			$query_args = $GLOBALS['wp_query']->query_vars;
		}

		add_action( "woocommerce_shortcode_before_{$this->type}_loop", function () {
			wc_set_loop_prop( 'is_shortcode', false );
		} );

		if ( 'yes' === $settings['paginate'] ) {
			$page = get_query_var( 'paged', 1 );

			if ( 1 < $page ) {
				$query_args['paged'] = $page;
			}

			if ( 'yes' !== $settings['allow_order'] ) {
				remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );
			}

			if ( 'yes' !== $settings['show_result_count'] ) {
				remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
			}
		}

		// Always query only IDs.
		$query_args['fields'] = 'ids';

		return $query_args;
	}

}
modules/woocommerce/skins/skin-classic.php000064400000003567150755004300014770 0ustar00<?php
namespace ElementorPro\Modules\Woocommerce\Skins;

use Elementor\Controls_Manager;
use Elementor\Skin_Base;
use Elementor\Widget_Base;
use ElementorPro\Modules\Woocommerce\Module;
use ElementorPro\Modules\Woocommerce\Widgets\Products;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Class Skin_Classic
 * @property Products $parent
 */
class Skin_Classic extends Skin_Base {

	public function get_id() {
		return 'classic';
	}

	public function get_title() {
		return esc_html__( 'Classic', 'elementor-pro' );
	}

	protected function _register_controls_actions() {
		add_action( 'elementor/element/wc-products/section_layout/after_section_start', [ $this, 'register_controls' ] );
	}

	public function register_controls( Widget_Base $widget ) {
		$this->parent = $widget;

		$this->add_control(
			'columns',
			[
				'label' => esc_html__( 'Columns', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'1' => '1',
					'2' => '2',
					'3' => '3',
					'4' => '4',
					'5' => '5',
					'6' => '6',
				],
				'default' => '4',
			]
		);
	}

	public function render() {
		$this->parent->query_posts();

		/** @var \WP_Query $query */
		$query = $this->parent->get_query();

		if ( ! $query->have_posts() ) {
			return;
		}

		global $woocommerce_loop;

		$woocommerce_loop['columns'] = (int) $this->get_instance_value( 'columns' );

		Module::instance()->add_products_post_class_filter();

		echo '<div class="woocommerce columns-' . esc_attr( $woocommerce_loop['columns'] ) . '">';

		woocommerce_product_loop_start();

		while ( $query->have_posts() ) {
			$query->the_post();

			wc_get_template_part( 'content', 'product' );
		}

		woocommerce_product_loop_end();

		woocommerce_reset_loop();

		wp_reset_postdata();

		echo '</div>';

		Module::instance()->remove_products_post_class_filter();
	}

	public function render_amp() {

	}
}
modules/global-widget/data/controller.php000064400000002003150755004300014534 0ustar00<?php
namespace ElementorPro\Modules\GlobalWidget\Data;

use Elementor\Data\Base\Controller as Controller_Base;
use ElementorPro\Plugin;

class Controller extends Controller_Base {

	public function get_name() {
		return 'global-widget/templates';
	}

	public function register_endpoints() {} // No endpoints.

	// TODO: After merging with 'REST API V2' add `get_collection_params`.
	public function get_items( $request ) {
		$result = [];
		$ids = $request->get_param( 'ids' );

		if ( ! empty( $ids ) ) {
			// TODO: This logic should be handled at REST API.
			$ids = explode( ',', $ids );

			foreach ( $ids as $template_id ) {
				$template_data = Plugin::elementor()->templates_manager->get_template_data( [
					'source' => 'local',
					'template_id' => $template_id,
				] );

				if ( ! empty( $template_data ) ) {
					$result[ $template_id ] = $template_data['content'][0];
				}
			}
		}

		return $result;
	}

	public function get_permission_callback( $request ) {
		return current_user_can( 'edit_posts' );
	}
}
modules/global-widget/views/panel-template.php000064400000004767150755004300015530 0ustar00<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}
?>

<script type="text/template" id="tmpl-elementor-panel-global-widget">
	<div id="elementor-global-widget-locked-header" class="elementor-nerd-box elementor-panel-nerd-box">
		<img class="elementor-nerd-box-icon" src="<?php echo ELEMENTOR_ASSETS_URL . 'images/information.svg'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>" />
		<div class="elementor-nerd-box-title elementor-panel-nerd-box-title"><?php echo esc_html__( 'Your Widget is Now Locked', 'elementor-pro' ); ?></div>
		<div class="elementor-nerd-box-message elementor-panel-nerd-box-message"><?php echo esc_html__( 'Edit this global widget to simultaneously update every place you used it, or unlink it so it gets back to being regular widget.', 'elementor-pro' ); ?></div>
	</div>
	<div id="elementor-global-widget-locked-tools">
		<div id="elementor-global-widget-locked-edit" class="elementor-global-widget-locked-tool">
			<div class="elementor-global-widget-locked-tool-description"><?php echo esc_html__( 'Edit global widget', 'elementor-pro' ); ?></div>
			<button class="elementor-button elementor-button-success"><?php echo esc_html__( 'Edit', 'elementor-pro' ); ?></button>
		</div>
		<div id="elementor-global-widget-locked-unlink" class="elementor-global-widget-locked-tool">
			<div class="elementor-global-widget-locked-tool-description"><?php echo esc_html__( 'Unlink from global', 'elementor-pro' ); ?></div>
			<button class="elementor-button elementor-button-danger"><?php echo esc_html__( 'Unlink', 'elementor-pro' ); ?></button>
		</div>
	</div>
	<div id="elementor-global-widget-loading" class="elementor-hidden">
		<i class="eicon-loading eicon-animation-spin" aria-hidden="true"></i>
		<span class="elementor-screen-only"><?php echo esc_html__( 'Loading', 'elementor-pro' ); ?></span>
	</div>
</script>

<script type="text/template" id="tmpl-elementor-panel-global-widget-no-templates">
	<img src="<?php echo ELEMENTOR_ASSETS_URL . 'images/information.svg'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>" alt="Elementor Information Nerd Icon" />
	<div class="elementor-nerd-box-title elementor-panel-nerd-box-title"><?php echo esc_html__( 'Save Your First Global Widget', 'elementor-pro' ); ?></div>
	<div class="elementor-nerd-box-message elementor-panel-nerd-box-message"><?php echo esc_html__( 'Save a widget as global, then add it to multiple areas. All areas will be editable from one single place.', 'elementor-pro' ); ?></div>
</script>
modules/global-widget/module.php000064400000021030150755004300012726 0ustar00<?php
namespace ElementorPro\Modules\GlobalWidget;

use Elementor\Core\Documents_Manager;
use Elementor\Element_Base;
use Elementor\TemplateLibrary\Source_Local;
use ElementorPro\Base\Module_Base;
use ElementorPro\Modules\GlobalWidget\Documents\Widget;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	const TEMPLATE_TYPE = 'widget';

	const WIDGET_TYPE_META_KEY = '_elementor_template_widget_type';

	const INCLUDED_POSTS_LIST_META_KEY = '_elementor_global_widget_included_posts';

	public function __construct() {
		parent::__construct();

		$this->add_hooks();

		Plugin::elementor()->data_manager->register_controller_instance( new Data\Controller() );
	}

	public function get_widgets() {
		return [
			'Global_Widget',
		];
	}

	public function get_name() {
		return 'global-widget';
	}

	public function add_templates_localize_data( $settings ) {
		$elementor = Plugin::elementor();

		$templates_manager = $elementor->templates_manager;

		$widgets_types = $elementor->widgets_manager->get_widget_types();

		$widget_templates = array_filter( $templates_manager->get_source( 'local' )->get_items( [ 'type' => self::TEMPLATE_TYPE ] ), function( $template ) use ( $widgets_types ) {
			if ( empty( $template['widgetType'] ) || empty( $widgets_types[ $template['widgetType'] ] ) ) {
				return false;
			}

			// Open the stack in order to include the widget controls in initial editor config
			$widgets_types[ $template['widgetType'] ]->get_stack( false );

			return true;
		} );

		$widget_templates_content = [];

		foreach ( $widget_templates as $widget_template ) {
			$widget_templates_content[ $widget_template['template_id'] ] = [
				'elType' => 'widget',
				'title' => $widget_template['title'],
				'widgetType' => $widget_template['widgetType'],
			];
		}

		$settings = array_replace_recursive( $settings, [
			'widget_templates' => $widget_templates_content,
			'i18n' => [
				'unlink' => esc_html__( 'Unlink', 'elementor-pro' ),
				'cancel' => esc_html__( 'Cancel', 'elementor-pro' ),
				'unlink_widget' => esc_html__( 'Unlink Widget', 'elementor-pro' ),
				'global' => esc_html__( 'Global', 'elementor-pro' ),
				'dialog_confirm_unlink' => esc_html__( 'This will make the widget stop being global. It\'ll be reverted into being just a regular widget.', 'elementor-pro' ),
				'global_widget_save_title' => esc_html__( 'Save your widget as a global widget', 'elementor-pro' ),
				'global_widget_save_description' => esc_html__( 'You\'ll be able to add this global widget to multiple areas on your site, and edit it from one single place.', 'elementor-pro' ),
				'linked_to_global' => esc_html__( 'Linked to Global', 'elementor-pro' ),
			],
		] );

		return $settings;
	}

	public function set_template_widget_type_meta( $post_id, $template_data ) {
		if ( self::TEMPLATE_TYPE === $template_data['type'] ) {
			update_post_meta( $post_id, self::WIDGET_TYPE_META_KEY, $template_data['content'][0]['widgetType'] );
		}
	}

	public function on_template_update( $template_id, $template_data ) {
		if ( self::TEMPLATE_TYPE !== $template_data['type'] ) {
			return;
		}

		$this->delete_included_posts_css( $template_id );
	}

	public function filter_template_data( $data ) {
		if ( self::TEMPLATE_TYPE === $data['type'] ) {
			$data['widgetType'] = get_post_meta( $data['template_id'], self::WIDGET_TYPE_META_KEY, true );
		}

		return $data;
	}

	public function get_element_child_type( Element_Base $default_child_type, array $element_data ) {
		if ( isset( $element_data['templateID'] ) ) {
			$template_post = get_post( $element_data['templateID'] );

			if ( ! $template_post || 'trash' === $template_post->post_status ) {
				return false;
			}
		}

		return $default_child_type;
	}

	public function is_post_type_support_elementor( $is_supported, $post_id, $post_type ) {
		if ( ! $is_supported || Source_Local::CPT !== $post_type ) {
			return $is_supported;
		}

		$is_widget_template = $this->is_widget_template( $post_id );

		// FIX ME: Change `get_current_screen()` condition to better way.
		if ( $is_widget_template && function_exists( 'get_current_screen' ) ) {
			$screen = get_current_screen();

			if ( ! empty( $screen->id ) && in_array( $screen->id, [ 'elementor_library', 'edit-elementor_library' ] ) ) {
				$is_supported = false;
			}
		}

		return $is_supported;
	}

	public function is_template_supports_export( $default_value, $template_id ) {
		return $default_value && ! $this->is_widget_template( $template_id );
	}

	/**
	 * Remove user edit capabilities.
	 *
	 * Filters the user capabilities to disable editing in admin.
	 *
	 * @param array $allcaps An array of all the user's capabilities.
	 * @param array $caps    Actual capabilities for meta capability.
	 * @param array $args    Optional parameters passed to has_cap(), typically object ID.
	 *
	 * @return array
	 * @deprecated 3.1.0
	 */
	public function remove_user_edit_cap( $allcaps, $caps, $args ) {
		Plugin::elementor()->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '3.1.0', 'Plugin::elementor()->documents->remove_user_edit_cap()' );

		return Plugin::elementor()->documents->remove_user_edit_cap( $allcaps, $caps, $args );
	}

	public function is_widget_template( $template_id ) {
		$template_type = Source_Local::get_template_type( $template_id );

		return self::TEMPLATE_TYPE === $template_type;
	}

	public function set_global_widget_included_posts_list( $post_id, $editor_data ) {
		$global_widget_ids = [];

		Plugin::elementor()->db->iterate_data( $editor_data, function( $element_data ) use ( &$global_widget_ids ) {
			if ( isset( $element_data['templateID'] ) ) {
				$global_widget_ids[] = $element_data['templateID'];
			}
		} );

		foreach ( $global_widget_ids as $widget_id ) {
			$included_posts = get_post_meta( $widget_id, self::INCLUDED_POSTS_LIST_META_KEY, true );

			if ( ! is_array( $included_posts ) ) {
				$included_posts = [];
			}

			$included_posts[ $post_id ] = true;

			update_post_meta( $widget_id, self::INCLUDED_POSTS_LIST_META_KEY, $included_posts );
		}
	}

	private function delete_included_posts_css( $template_id ) {
		$including_post_ids = (array) get_post_meta( $template_id, self::INCLUDED_POSTS_LIST_META_KEY, true );

		if ( empty( $including_post_ids ) ) {
			return;
		}

		foreach ( array_keys( $including_post_ids ) as $post_id ) {
			delete_post_meta( $post_id, '_elementor_css' );
		}
	}

	/**
	 * @param Documents_Manager $documents_manager
	 */
	public function register_documents( $documents_manager ) {
		$documents_manager->register_document_type( self::TEMPLATE_TYPE, Documents\Widget::get_class_full_name() );
	}

	public function on_elementor_editor_init() {
		Plugin::elementor()->common->add_template( __DIR__ . '/views/panel-template.php' );
	}

	/**
	 * Get document data.
	 *
	 * Used to manipulate data of global widgets.
	 *
	 * @param $data
	 * @param $document
	 *
	 * @return array
	 */
	private function get_document_data( $data, $document ) {
		// If not a global widget template document or does not have elements.
		if ( ! ( $document instanceof Widget ) && ! empty( $data['elements'] ) ) {
			$data['elements'] = Plugin::elementor()->db->iterate_data( $data['elements'], function( $element ) {
				if ( ! empty( $element['templateID'] ) ) {
					$element['originalWidgetType'] = $element['widgetType'];
					$element['widgetType'] = 'global';
				}

				return $element;
			} );
		}

		return $data;
	}

	private function add_hooks() {
		add_action( 'elementor/documents/register', [ $this, 'register_documents' ] );
		add_action( 'elementor/template-library/after_save_template', [ $this, 'set_template_widget_type_meta' ], 10, 2 );
		add_action( 'elementor/template-library/after_update_template', [ $this, 'on_template_update' ], 10, 2 );
		add_action( 'elementor/editor/init', [ $this, 'on_elementor_editor_init' ] );
		add_action( 'elementor/editor/after_save', [ $this, 'set_global_widget_included_posts_list' ], 10, 2 );

		add_filter( 'elementor_pro/editor/localize_settings', [ $this, 'add_templates_localize_data' ] );
		add_filter( 'elementor/template-library/get_template', [ $this, 'filter_template_data' ] );
		add_filter( 'elementor/element/get_child_type', [ $this, 'get_element_child_type' ], 10, 2 );
		add_filter( 'elementor/utils/is_post_support', [ $this, 'is_post_type_support_elementor' ], 10, 3 );

		add_filter( 'elementor/template_library/is_template_supports_export', [ $this, 'is_template_supports_export' ], 10, 2 );
		add_filter( 'elementor/document/save/data', function ( $data, $document ) {
			return $this->get_document_data( $data, $document );
		}, 10, 2 );
	}
}
modules/global-widget/documents/widget.php000064400000002672150755004300014740 0ustar00<?php
namespace ElementorPro\Modules\GlobalWidget\Documents;

use Elementor\Core\Base\Document;
use Elementor\Modules\Library\Documents\Library_Document;
use Elementor\User;
use ElementorPro\Modules\GlobalWidget\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Widget extends Library_Document {

	public static function get_properties() {
		$properties = parent::get_properties();

		$properties['admin_tab_group'] = 'library';
		$properties['show_in_library'] = false;
		$properties['is_editable'] = false;

		// Since, created in the editor environment.
		$properties['show_in_finder'] = false;

		return $properties;
	}

	public function get_name() {
		return 'widget';
	}

	public static function get_title() {
		return esc_html__( 'Global Widget', 'elementor-pro' );
	}

	public static function get_plural_title() {
		return esc_html__( 'Global Widgets', 'elementor-pro' );
	}

	public function is_editable_by_current_user() {
		return User::is_current_user_can_edit( $this->get_main_id() );
	}

	public function import( array $data ) {
		parent::import( $data );

		$this->update_main_meta( Module::WIDGET_TYPE_META_KEY, $data['content'][0]['widgetType'] );
	}

	public function save( $data ) {
		// Since the method of 'modules/usage::before_document_save' will remove from global if new_status is the same as old.
		$data['settings'] = [ 'post_status' => Document::STATUS_PUBLISH ];

		return parent::save( $data );
	}
}
modules/global-widget/widgets/global-widget.php000064400000014367150755004300015647 0ustar00<?php
namespace ElementorPro\Modules\GlobalWidget\Widgets;

use Elementor\Core\Base\Document;
use Elementor\Widget_Base;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Global_Widget extends Base_Widget {
	/**
	 * @var Widget_Base
	 */
	private $original_element_instance;

	/**
	 * @var array
	 */
	private $template_data;

	/**
	 * @var array
	 */
	private $data;

	/**
	 * @var Widget_Base
	 */
	private $original_widget_type;

	public function __construct( $data = [], $args = null ) {
		if ( $data && ! empty( $data['templateID'] ) ) {
			$template_data = Plugin::elementor()->templates_manager->get_template_data( [
				'source' => 'local',
				'template_id' => $data['templateID'],
			] );

			if ( is_wp_error( $template_data ) ) {
				throw new \Exception( $template_data->get_error_message() );
			}

			if ( empty( $template_data['content'] ) ) {
				throw new \Exception( 'Template content not found.' );
			}

			$this->set_template_data( $template_data );

			$template_widget_type = $this->get_template_widget_type();
			$original_widget_type = Plugin::elementor()->widgets_manager->get_widget_types(
				$template_widget_type
			);

			if ( ! $original_widget_type ) {
				throw new \Exception( 'Original Widget Type not found.' );
			}

			// If it saved as draft it already have the recent settings.
			if ( empty( $data['draft'] ) ) {
				if ( empty( $data['originalWidgetType'] ) ) {
					// If: `$data['originalWidgetType']` exists it means that the data was manipulated in saving process, from the backend.
					// so `widgetType` is 'global' and have to be changed.
					$data['widgetType'] = $template_widget_type;
				}

				if ( ! $this->is_draft_or_autosave_process() ) {
					// If its not 'draft saving process' then settings should be according the template.
					// Since draft saving process, already have the recent settings to save.
					$data['settings'] = $this->get_template_settings();
				}
			}

			$this->original_widget_type = $original_widget_type;
			$this->data = $data;
		}

		parent::__construct( $data, $args );
	}

	public function show_in_panel() {
		return false;
	}

	public function get_raw_data( $with_html_content = false ) {
		$raw_data = parent::get_raw_data( $with_html_content );

		// Save 'templateID' in all situations.
		$raw_data['templateID'] = $this->get_data( 'templateID' );

		if ( $this->is_draft_or_autosave_process() ) {
			$raw_data['draft'] = true;

			// Keep the current snapshot, just mark it as a draft.
			return $raw_data;
		}

		if ( $this->is_saved_as_draft() ) {
			// If: Item saved as draft
			// Then: the the `$raw_data` hold recently saved draft template, with original widget type.
			$raw_data['widgetType'] = $this->get_template_widget_type();

			return $raw_data;
		}

		return $raw_data;
	}

	public function render_content() {
		$this->get_original_element_instance()->render_content();
	}

	public function get_unique_selector() {
		return '.elementor-global-' . $this->get_data( 'templateID' );
	}

	public function get_name() {
		return 'global';
	}

	public function get_title() {
		return esc_html__( 'Global', 'elementor-pro' );
	}

	public function get_script_depends() {
		if ( $this->is_type_instance() ) {
			return [];
		}

		return $this->get_original_element_instance()->get_script_depends();
	}

	public function get_style_depends() {
		if ( $this->is_type_instance() ) {
			return [];
		}

		return $this->get_original_element_instance()->get_style_depends();
	}

	public function get_controls( $control_id = null ) {
		if ( $this->is_type_instance() ) {
			return [];
		}

		return $this->get_original_element_instance()->get_controls();
	}

	public function get_original_element_instance() {
		if ( ! $this->original_element_instance ) {
			$this->init_original_element_instance();
		}

		return $this->original_element_instance;
	}

	public function on_export() {
		return $this->get_template_content();
	}

	public function render_plain_content() {
		$this->get_original_element_instance()->render_plain_content();
	}

	protected function add_render_attributes() {
		// Never called from editor, this method is used only for frontend/preview.
		parent::add_render_attributes();

		$skin_type = $this->get_settings( '_skin' );

		$original_widget_type = $this->get_original_element_instance()->get_data( 'widgetType' );

		$this->set_render_attribute( '_wrapper', 'data-widget_type', $original_widget_type . '.' . ( $skin_type ? $skin_type : 'default' ) );

		$this->add_render_attribute( '_wrapper', [
			'class' => [
				'elementor-global-' . $this->get_data( 'templateID' ),
				'elementor-widget-' . $original_widget_type,
			],
		] );
	}

	private function init_original_element_instance() {
		$widget_class = $this->original_widget_type->get_class_name();

		$template_content = $this->get_template_or_draft_content();
		$template_content['id'] = $this->get_id();

		$this->original_element_instance = new $widget_class(
			$template_content,
			$this->original_widget_type->get_default_args()
		);
	}

	private function is_draft_or_autosave_process() {
		/**
		 * `Plugin::elementor()->common` is not available for guest/logged out users.
		 */
		if ( ! Plugin::elementor()->common ) {
			return false;
		}

		$ajax = Plugin::elementor()->common->get_component( 'ajax' );
		$ajax_data = $ajax->get_current_action_data();

		// Is draft or autosave?
		return $ajax_data && 'save_builder' === $ajax_data['action'] && in_array( $ajax_data['data']['status'], [
			Document::STATUS_DRAFT,
			Document::STATUS_AUTOSAVE,
		], true );
	}

	private function is_saved_as_draft() {
		return $this->get_data( 'draft' );
	}

	private function set_template_data( $template_data ) {
		$this->template_data = $template_data;
	}

	private function get_template_widget_type() {
		return $this->template_data['content'][0]['widgetType'];
	}

	private function get_template_settings() {
		return $this->template_data['content'][0]['settings'];
	}

	private function get_template_content() {
		return $this->template_data['content'][0];
	}

	private function get_template_or_draft_content() {
		if ( $this->is_saved_as_draft() ) {
			$draft_data = $this->data;
			$draft_data['widgetType'] = $this->get_template_widget_type();

			return $draft_data;
		}

		return $this->get_template_content();
	}
}
modules/posts/module.php000064400000005703150755004300011366 0ustar00<?php
namespace ElementorPro\Modules\Posts;

use Elementor\Utils;
use ElementorPro\Base\Module_Base;
use ElementorPro\Modules\Posts\Data\Controller;
use ElementorPro\Modules\Posts\Widgets\Posts_Base;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function get_name() {
		return 'posts';
	}

	public function get_widgets() {
		return [
			'Posts',
			'Portfolio',
		];
	}

	/**
	 * Fix WP 5.5 pagination issue.
	 *
	 * Return true to mark that it's handled and avoid WP to set it as 404.
	 *
	 * @see https://github.com/elementor/elementor/issues/12126
	 * @see https://core.trac.wordpress.org/ticket/50976
	 *
	 * Based on the logic at \WP::handle_404.
	 *
	 * @param $handled - Default false.
	 * @param $wp_query
	 *
	 * @return bool
	 */
	public function allow_posts_widget_pagination( $handled, $wp_query ) {
		// Check it's not already handled and it's a single paged query.
		if ( $handled || empty( $wp_query->query_vars['page'] ) || ! is_singular() || empty( $wp_query->post ) ) {
			return $handled;
		}

		$document = Plugin::elementor()->documents->get( $wp_query->post->ID );

		return $this->is_valid_pagination( $document->get_elements_data(), $wp_query->query_vars['page'] );
	}

	/**
	 * Checks a set of elements if there is a posts/archive widget that may be paginated to a specific page number.
	 *
	 * @param array $elements
	 * @param       $current_page
	 *
	 * @return bool
	 */
	public function is_valid_pagination( array $elements, $current_page ) {
		$is_valid = false;

		// Get all widgets that may add pagination.
		$widgets = Plugin::elementor()->widgets_manager->get_widget_types();
		$posts_widgets = [];
		foreach ( $widgets as $widget ) {
			if ( $widget instanceof Posts_Base ) {
				$posts_widgets[] = $widget->get_name();
			}
		}

		Plugin::elementor()->db->iterate_data( $elements, function( $element ) use ( &$is_valid, $posts_widgets, $current_page ) {
			if ( isset( $element['widgetType'] ) && in_array( $element['widgetType'], $posts_widgets, true ) ) {
				// Has pagination.
				if ( ! empty( $element['settings']['pagination_type'] ) ) {
					$using_ajax_pagination = in_array( $element['settings']['pagination_type'], [
						Posts_Base::LOAD_MORE_ON_CLICK,
						Posts_Base::LOAD_MORE_INFINITE_SCROLL,
					], true);

					// No max pages limits or in load more mode.
					if ( empty( $element['settings']['pagination_page_limit'] ) || $using_ajax_pagination ) {
						$is_valid = true;
					} elseif ( (int) $current_page <= (int) $element['settings']['pagination_page_limit'] ) {
						// Has page limit but current page is less than or equal to max page limit.
						$is_valid = true;
					}
				}
			}
		} );

		return $is_valid;
	}

	public function __construct() {
		parent::__construct();

		Plugin::elementor()->data_manager->register_controller( Controller::class );

		add_filter( 'pre_handle_404', [ $this, 'allow_posts_widget_pagination' ], 10, 2 );
	}

}

modules/posts/skins/skin-classic.php000064400000010506150755004300013610 0ustar00<?php
namespace ElementorPro\Modules\Posts\Skins;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Box_Shadow;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Skin_Classic extends Skin_Base {

	protected function _register_controls_actions() {
		parent::_register_controls_actions();

		add_action( 'elementor/element/posts/classic_section_design_layout/after_section_end', [ $this, 'register_additional_design_controls' ] );
	}

	public function get_id() {
		return 'classic';
	}

	public function get_title() {
		return esc_html__( 'Classic', 'elementor-pro' );
	}

	public function register_additional_design_controls() {
		$this->start_controls_section(
			'section_design_box',
			[
				'label' => esc_html__( 'Box', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'box_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post' => 'border-style: solid; border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'box_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 200,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'box_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'content_padding',
			[
				'label' => esc_html__( 'Content Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__text' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
				],
				'separator' => 'after',
			]
		);

		$this->start_controls_tabs( 'bg_effects_tabs' );

		$this->start_controls_tab( 'classic_style_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'box_shadow',
				'selector' => '{{WRAPPER}} .elementor-post',
			]
		);

		$this->add_control(
			'box_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-post' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'box_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-post' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'classic_style_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'box_shadow_hover',
				'selector' => '{{WRAPPER}} .elementor-post:hover',
			]
		);

		$this->add_control(
			'box_bg_color_hover',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-post:hover' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'box_border_color_hover',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-post:hover' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();
	}
}
modules/posts/skins/skin-full-content.php000064400000000374150755004300014603 0ustar00<?php
namespace ElementorPro\Modules\Posts\Skins;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Skin_Full_Content extends Skin_Classic {
	use Skin_Content_Base;

	public function get_id() {
		return 'full_content';
	}
}
modules/posts/skins/skin-cards.php000064400000035731150755004300013272 0ustar00<?php
namespace ElementorPro\Modules\Posts\Skins;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Image_Size;
use Elementor\Group_Control_Typography;
use Elementor\Utils;
use Elementor\Widget_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Skin_Cards extends Skin_Base {

	protected function _register_controls_actions() {
		parent::_register_controls_actions();

		add_action( 'elementor/element/posts/cards_section_design_image/before_section_end', [ $this, 'register_additional_design_image_controls' ] );
	}

	public function get_id() {
		return 'cards';
	}

	public function get_title() {
		return esc_html__( 'Cards', 'elementor-pro' );
	}

	public function start_controls_tab( $id, $args ) {
		$args['condition']['_skin'] = $this->get_id();
		$this->parent->start_controls_tab( $this->get_control_id( $id ), $args );
	}

	public function end_controls_tab() {
		$this->parent->end_controls_tab();
	}

	public function start_controls_tabs( $id ) {
		$args['condition']['_skin'] = $this->get_id();
		$this->parent->start_controls_tabs( $this->get_control_id( $id ) );
	}

	public function end_controls_tabs() {
		$this->parent->end_controls_tabs();
	}

	public function register_controls( Widget_Base $widget ) {
		$this->parent = $widget;

		$this->register_columns_controls();
		$this->register_post_count_control();
		$this->register_thumbnail_controls();
		$this->register_title_controls();
		$this->register_excerpt_controls();
		$this->register_meta_data_controls();
		$this->register_read_more_controls();
		$this->register_link_controls();
		$this->register_badge_controls();
		$this->register_avatar_controls();
	}

	public function register_design_controls() {
		$this->register_design_layout_controls();
		$this->register_design_card_controls();
		$this->register_design_image_controls();
		$this->register_design_content_controls();
	}

	protected function register_thumbnail_controls() {
		parent::register_thumbnail_controls();
		$this->remove_responsive_control( 'image_width' );
		$this->update_control(
			'thumbnail',
			[
				'label' => esc_html__( 'Show Image', 'elementor-pro' ),
				'options' => [
					'top' => esc_html__( 'Yes', 'elementor-pro' ),
					'none' => esc_html__( 'No', 'elementor-pro' ),
				],
				'render_type' => 'template',
			]
		);
	}

	protected function register_meta_data_controls() {
		parent::register_meta_data_controls();
		$this->update_control(
			'meta_separator',
			[
				'default' => '•',
			]
		);
	}

	public function register_additional_design_image_controls() {
		$this->update_control(
			'image_spacing',
			[
				'selectors' => [
					'{{WRAPPER}} .elementor-post__text' => 'margin-top: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					$this->get_control_id( 'thumbnail!' ) => 'none',
				],
			]
		);

		$this->remove_control( 'img_border_radius' );

		$this->add_control(
			'heading_badge_style',
			[
				'label' => esc_html__( 'Badge', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					$this->get_control_id( 'show_badge' ) => 'yes',
				],
			]
		);

		$this->add_control(
			'badge_position',
			[
				'label' => 'Badge Position',
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'default' => 'right',
				'selectors' => [
					'{{WRAPPER}} .elementor-post__badge' => '{{VALUE}}: 0',
				],
				'condition' => [
					$this->get_control_id( 'show_badge' ) => 'yes',
				],
			]
		);

		$this->add_control(
			'badge_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-post__card .elementor-post__badge' => 'background-color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'condition' => [
					$this->get_control_id( 'show_badge' ) => 'yes',
				],
			]
		);

		$this->add_control(
			'badge_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-post__card .elementor-post__badge' => 'color: {{VALUE}};',
				],
				'condition' => [
					$this->get_control_id( 'show_badge' ) => 'yes',
				],
			]
		);

		$this->add_control(
			'badge_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__card .elementor-post__badge' => 'border-radius: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					$this->get_control_id( 'show_badge' ) => 'yes',
				],
			]
		);

		$this->add_control(
			'badge_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 5,
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__card .elementor-post__badge' => 'font-size: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					$this->get_control_id( 'show_badge' ) => 'yes',
				],
			]
		);

		$this->add_control(
			'badge_margin',
			[
				'label' => esc_html__( 'Margin', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 50,
					],
				],
				'default' => [
					'size' => 20,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__card .elementor-post__badge' => 'margin: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					$this->get_control_id( 'show_badge' ) => 'yes',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'badge_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
				'selector' => '{{WRAPPER}} .elementor-post__card .elementor-post__badge',
				'exclude' => [ 'font_size', 'line-height' ],
				'condition' => [
					$this->get_control_id( 'show_badge' ) => 'yes',
				],
			]
		);

		$this->add_control(
			'heading_avatar_style',
			[
				'label' => esc_html__( 'Avatar', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					$this->get_control_id( 'thumbnail!' ) => 'none',
					$this->get_control_id( 'show_avatar' ) => 'show-avatar',
				],
			]
		);

		$this->add_control(
			'avatar_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 20,
						'max' => 90,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__avatar' => 'top: calc(-{{SIZE}}{{UNIT}} / 2);',
					'{{WRAPPER}} .elementor-post__avatar img' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};',
					'{{WRAPPER}} .elementor-post__thumbnail__link' => 'margin-bottom: calc({{SIZE}}{{UNIT}} / 2)',
				],
				'condition' => [
					$this->get_control_id( 'show_avatar' ) => 'show-avatar',
				],
			]
		);
	}

	public function register_badge_controls() {
		$this->add_control(
			'show_badge',
			[
				'label' => esc_html__( 'Badge', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'badge_taxonomy',
			[
				'label' => esc_html__( 'Badge Taxonomy', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'label_block' => true,
				'default' => 'category',
				'options' => $this->get_taxonomies(),
				'condition' => [
					$this->get_control_id( 'show_badge' ) => 'yes',
				],
			]
		);
	}

	public function register_avatar_controls() {
		$this->add_control(
			'show_avatar',
			[
				'label' => esc_html__( 'Avatar', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'return_value' => 'show-avatar',
				'default' => 'show-avatar',
				'separator' => 'before',
				'prefix_class' => 'elementor-posts--',
				'render_type' => 'template',
				'condition' => [
					$this->get_control_id( 'thumbnail!' ) => 'none',
				],
			]
		);
	}

	public function register_design_card_controls() {
		$this->start_controls_section(
			'section_design_card',
			[
				'label' => esc_html__( 'Card', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'card_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-post__card' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'card_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-post__card' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'card_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 15,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__card' => 'border-width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'card_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 200,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__card' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'card_padding',
			[
				'label' => esc_html__( 'Horizontal Padding', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__text' => 'padding: 0 {{SIZE}}{{UNIT}}',
					'{{WRAPPER}} .elementor-post__meta-data' => 'padding: 10px {{SIZE}}{{UNIT}}',
					'{{WRAPPER}} .elementor-post__avatar' => 'padding-right: {{SIZE}}{{UNIT}}; padding-left: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'card_vertical_padding',
			[
				'label' => esc_html__( 'Vertical Padding', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__card' => 'padding-top: {{SIZE}}{{UNIT}}; padding-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'box_shadow_box_shadow_type', // The name of this control is like that, for future extensibility to group_control box shadow.
			[
				'label' => esc_html__( 'Box Shadow', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'prefix_class' => 'elementor-card-shadow-',
				'default' => 'yes',
			]
		);

		$this->add_control(
			'hover_effect',
			[
				'label' => esc_html__( 'Hover Effect', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'label_block' => false,
				'options' => [
					'none' => esc_html__( 'None', 'elementor-pro' ),
					'gradient' => esc_html__( 'Gradient', 'elementor-pro' ),
					//'zoom-in' => esc_html__( 'Zoom In', 'elementor-pro' ),
					//'zoom-out' => esc_html__( 'Zoom Out', 'elementor-pro' ),
				],
				'default' => 'gradient',
				'separator' => 'before',
				'prefix_class' => 'elementor-posts__hover-',
			]
		);

		$this->add_control(
			'meta_border_color',
			[
				'label' => esc_html__( 'Meta Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'separator' => 'before',
				'selectors' => [
					'{{WRAPPER}} .elementor-post__card .elementor-post__meta-data' => 'border-top-color: {{VALUE}}',
				],
				'condition' => [
					$this->get_control_id( 'meta_data!' ) => [],
				],
			]
		);

		$this->end_controls_section();
	}

	protected function register_design_content_controls() {
		parent::register_design_content_controls();

		$this->remove_control( 'meta_spacing' );

		$this->update_control(
			'read_more_spacing',
			[
				'selectors' => [
					'{{WRAPPER}} .elementor-post__read-more' => 'margin-bottom: {{SIZE}}{{UNIT}};',
				],
			],
			[
				'recursive' => true,
			]
		);
	}

	protected function get_taxonomies() {
		$taxonomies = get_taxonomies( [ 'show_in_nav_menus' => true ], 'objects' );

		$options = [ '' => '' ];

		foreach ( $taxonomies as $taxonomy ) {
			$options[ $taxonomy->name ] = $taxonomy->label;
		}

		return $options;
	}

	protected function render_post_header() {
		?>
		<article <?php post_class( [ 'elementor-post elementor-grid-item' ] ); ?>>
			<div class="elementor-post__card">
		<?php
	}

	protected function render_post_footer() {
		?>
			</div>
		</article>
		<?php
	}

	protected function render_avatar() {
		?>
		<div class="elementor-post__avatar">
			<?php echo get_avatar( get_the_author_meta( 'ID' ), 128, '', get_the_author_meta( 'display_name' ) ); ?>
		</div>
		<?php
	}

	protected function render_badge() {
		$taxonomy = $this->get_instance_value( 'badge_taxonomy' );
		if ( empty( $taxonomy ) || ! taxonomy_exists( $taxonomy ) ) {
			return;
		}

		$terms = get_the_terms( get_the_ID(), $taxonomy );
		if ( empty( $terms[0] ) ) {
			return;
		}
		?>
		<div class="elementor-post__badge"><?php echo esc_html( $terms[0]->name ); ?></div>
		<?php
	}

	protected function render_thumbnail() {
		if ( 'none' === $this->get_instance_value( 'thumbnail' ) ) {
			return;
		}

		$settings = $this->parent->get_settings();
		$setting_key = $this->get_control_id( 'thumbnail_size' );
		$settings[ $setting_key ] = [
			'id' => get_post_thumbnail_id(),
		];
		$thumbnail_html = Group_Control_Image_Size::get_attachment_image_html( $settings, $setting_key );

		if ( empty( $thumbnail_html ) ) {
			return;
		}

		$optional_attributes_html = $this->get_optional_link_attributes_html();

		?>
		<a class="elementor-post__thumbnail__link" href="<?php echo esc_url( get_permalink() ); ?>" <?php Utils::print_unescaped_internal_string( $optional_attributes_html ); ?>><div class="elementor-post__thumbnail"><?php Utils::print_unescaped_internal_string( $thumbnail_html ); ?></div></a>
		<?php
		if ( $this->get_instance_value( 'show_badge' ) ) {
			$this->render_badge();
		}

		if ( $this->get_instance_value( 'show_avatar' ) ) {
			$this->render_avatar();
		}
	}

	protected function render_post() {
		$this->render_post_header();
		$this->render_thumbnail();
		$this->render_text_header();
		$this->render_title();
		$this->render_excerpt();
		$this->render_read_more();
		$this->render_text_footer();
		$this->render_meta_data();
		$this->render_post_footer();
	}
}
modules/posts/skins/skin-base.php000064400000072401150755004300013103 0ustar00<?php
namespace ElementorPro\Modules\Posts\Skins;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Css_Filter;
use Elementor\Group_Control_Image_Size;
use Elementor\Group_Control_Typography;
use Elementor\Icons_Manager;
use Elementor\Skin_Base as Elementor_Skin_Base;
use Elementor\Widget_Base;
use Elementor\Utils;
use ElementorPro\Modules\Posts\Traits\Button_Widget_Trait;
use ElementorPro\Plugin;
use ElementorPro\Modules\Posts\Widgets\Posts_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Skin_Base extends Elementor_Skin_Base {
	use Button_Widget_Trait;

	/**
	 * @var string Save current permalink to avoid conflict with plugins the filters the permalink during the post render.
	 */
	protected $current_permalink;

	protected function _register_controls_actions() {
		add_action( 'elementor/element/posts/section_layout/before_section_end', [ $this, 'register_controls' ] );
		add_action( 'elementor/element/posts/section_query/after_section_end', [ $this, 'register_style_sections' ] );
	}

	public function register_style_sections( Widget_Base $widget ) {
		$this->parent = $widget;

		$this->register_design_controls();
	}

	public function register_controls( Widget_Base $widget ) {
		$this->parent = $widget;

		$this->register_columns_controls();
		$this->register_post_count_control();
		$this->register_thumbnail_controls();
		$this->register_title_controls();
		$this->register_excerpt_controls();
		$this->register_meta_data_controls();
		$this->register_read_more_controls();
		$this->register_link_controls();
	}

	public function register_design_controls() {
		$this->register_design_layout_controls();
		$this->register_design_image_controls();
		$this->register_design_content_controls();
	}

	protected function register_thumbnail_controls() {
		$this->add_control(
			'thumbnail',
			[
				'label' => esc_html__( 'Image Position', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'top',
				'options' => [
					'top' => esc_html__( 'Top', 'elementor-pro' ),
					'left' => esc_html__( 'Left', 'elementor-pro' ),
					'right' => esc_html__( 'Right', 'elementor-pro' ),
					'none' => esc_html__( 'None', 'elementor-pro' ),
				],
				'prefix_class' => 'elementor-posts--thumbnail-',
			]
		);

		$this->add_control(
			'masonry',
			[
				'label' => esc_html__( 'Masonry', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'condition' => [
					$this->get_control_id( 'columns!' ) => '1',
					$this->get_control_id( 'thumbnail' ) => 'top',
				],
				'render_type' => 'ui',
				'frontend_available' => true,
			]
		);

		$this->add_group_control(
			Group_Control_Image_Size::get_type(),
			[
				'name' => 'thumbnail_size',
				'default' => 'medium',
				'exclude' => [ 'custom' ],
				'condition' => [
					$this->get_control_id( 'thumbnail!' ) => 'none',
				],
				'prefix_class' => 'elementor-posts--thumbnail-size-',
			]
		);

		$this->add_responsive_control(
			'item_ratio',
			[
				'label' => esc_html__( 'Image Ratio', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 0.66,
				],
				'tablet_default' => [
					'size' => '',
				],
				'mobile_default' => [
					'size' => 0.5,
				],
				'range' => [
					'px' => [
						'min' => 0.1,
						'max' => 2,
						'step' => 0.01,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-posts-container .elementor-post__thumbnail' => 'padding-bottom: calc( {{SIZE}} * 100% );',
					'{{WRAPPER}}:after' => 'content: "{{SIZE}}";',
				],
				'condition' => [
					$this->get_control_id( 'thumbnail!' ) => 'none',
					$this->get_control_id( 'masonry' ) => '',
				],
			]
		);

		$this->add_responsive_control(
			'image_width',
			[
				'label' => esc_html__( 'Image Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'%' => [
						'min' => 10,
						'max' => 100,
					],
					'px' => [
						'min' => 10,
						'max' => 600,
					],
				],
				'default' => [
					'size' => 100,
					'unit' => '%',
				],
				'tablet_default' => [
					'size' => '',
					'unit' => '%',
				],
				'mobile_default' => [
					'size' => 100,
					'unit' => '%',
				],
				'size_units' => [ '%', 'px' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__thumbnail__link' => 'width: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					$this->get_control_id( 'thumbnail!' ) => 'none',
				],
			]
		);
	}

	protected function register_columns_controls() {
		$this->add_responsive_control(
			'columns',
			[
				'label' => esc_html__( 'Columns', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '3',
				'tablet_default' => '2',
				'mobile_default' => '1',
				'options' => [
					'1' => '1',
					'2' => '2',
					'3' => '3',
					'4' => '4',
					'5' => '5',
					'6' => '6',
				],
				'prefix_class' => 'elementor-grid%s-',
				'frontend_available' => true,
			]
		);
	}

	protected function register_post_count_control() {
		$this->add_control(
			'posts_per_page',
			[
				'label' => esc_html__( 'Posts Per Page', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 6,
			]
		);
	}

	protected function register_title_controls() {
		$this->add_control(
			'show_title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'title_tag',
			[
				'label' => esc_html__( 'Title HTML Tag', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'h1' => 'H1',
					'h2' => 'H2',
					'h3' => 'H3',
					'h4' => 'H4',
					'h5' => 'H5',
					'h6' => 'H6',
					'div' => 'div',
					'span' => 'span',
					'p' => 'p',
				],
				'default' => 'h3',
				'condition' => [
					$this->get_control_id( 'show_title' ) => 'yes',
				],
			]
		);

	}

	protected function register_excerpt_controls() {
		$this->add_control(
			'show_excerpt',
			[
				'label' => esc_html__( 'Excerpt', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
			]
		);

		$this->add_control(
			'excerpt_length',
			[
				'label' => esc_html__( 'Excerpt Length', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				/** This filter is documented in wp-includes/formatting.php */
				'default' => apply_filters( 'excerpt_length', 25 ),
				'condition' => [
					$this->get_control_id( 'show_excerpt' ) => 'yes',
				],
			]
		);
	}

	protected function register_read_more_controls() {
		$this->add_control(
			'show_read_more',
			[
				'label' => esc_html__( 'Read More', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'read_more_text',
			[
				'label' => esc_html__( 'Read More Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Read More »', 'elementor-pro' ),
				'condition' => [
					$this->get_control_id( 'show_read_more' ) => 'yes',
				],
			]
		);
	}

	protected function register_link_controls() {
		$this->add_control(
			'open_new_tab',
			[
				'label' => esc_html__( 'Open in new window', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Yes', 'elementor-pro' ),
				'label_off' => esc_html__( 'No', 'elementor-pro' ),
				'default' => 'no',
				'render_type' => 'none',
			]
		);
	}

	protected function get_optional_link_attributes_html() {
		$settings = $this->parent->get_settings();
		$new_tab_setting_key = $this->get_control_id( 'open_new_tab' );
		$optional_attributes_html = 'yes' === $settings[ $new_tab_setting_key ] ? 'target="_blank"' : '';

		return $optional_attributes_html;
	}

	protected function register_meta_data_controls() {
		$this->add_control(
			'meta_data',
			[
				'label' => esc_html__( 'Meta Data', 'elementor-pro' ),
				'label_block' => true,
				'type' => Controls_Manager::SELECT2,
				'default' => [ 'date', 'comments' ],
				'multiple' => true,
				'options' => [
					'author' => esc_html__( 'Author', 'elementor-pro' ),
					'date' => esc_html__( 'Date', 'elementor-pro' ),
					'time' => esc_html__( 'Time', 'elementor-pro' ),
					'comments' => esc_html__( 'Comments', 'elementor-pro' ),
					'modified' => esc_html__( 'Date Modified', 'elementor-pro' ),
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'meta_separator',
			[
				'label' => esc_html__( 'Separator Between', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => '///',
				'selectors' => [
					'{{WRAPPER}} .elementor-post__meta-data span + span:before' => 'content: "{{VALUE}}"',
				],
				'condition' => [
					$this->get_control_id( 'meta_data!' ) => [],
				],
			]
		);
	}

	/**
	 * Style Tab
	 */
	protected function register_design_layout_controls() {
		$this->start_controls_section(
			'section_design_layout',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'column_gap',
			[
				'label' => esc_html__( 'Columns Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 30,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--grid-column-gap: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'row_gap',
			[
				'label' => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 35,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'frontend_available' => true,
				'selectors' => [
					'{{WRAPPER}}' => '--grid-row-gap: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'prefix_class' => 'elementor-posts--align-',
			]
		);

		$this->end_controls_section();
	}

	protected function register_design_image_controls() {
		$this->start_controls_section(
			'section_design_image',
			[
				'label' => esc_html__( 'Image', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					$this->get_control_id( 'thumbnail!' ) => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'img_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__thumbnail' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					$this->get_control_id( 'thumbnail!' ) => 'none',
				],
			]
		);

		$this->add_responsive_control(
			'image_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-posts--thumbnail-left .elementor-post__thumbnail__link' => 'margin-right: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}}.elementor-posts--thumbnail-right .elementor-post__thumbnail__link' => 'margin-left: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}}.elementor-posts--thumbnail-top .elementor-post__thumbnail__link' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
				'default' => [
					'size' => 20,
				],
				'condition' => [
					$this->get_control_id( 'thumbnail!' ) => 'none',
				],
			]
		);

		$this->start_controls_tabs( 'thumbnail_effects_tabs' );

		$this->start_controls_tab( 'normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_group_control(
			Group_Control_Css_Filter::get_type(),
			[
				'name' => 'thumbnail_filters',
				'selector' => '{{WRAPPER}} .elementor-post__thumbnail img',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_group_control(
			Group_Control_Css_Filter::get_type(),
			[
				'name' => 'thumbnail_hover_filters',
				'selector' => '{{WRAPPER}} .elementor-post:hover .elementor-post__thumbnail img',
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();
	}

	protected function register_design_content_controls() {
		$this->start_controls_section(
			'section_design_content',
			[
				'label' => esc_html__( 'Content', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'heading_title_style',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'condition' => [
					$this->get_control_id( 'show_title' ) => 'yes',
				],
			]
		);

		$this->add_control(
			'title_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__title, {{WRAPPER}} .elementor-post__title a' => 'color: {{VALUE}};',
				],
				'condition' => [
					$this->get_control_id( 'show_title' ) => 'yes',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'title_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-post__title, {{WRAPPER}} .elementor-post__title a',
				'condition' => [
					$this->get_control_id( 'show_title' ) => 'yes',
				],
			]
		);

		$this->add_responsive_control(
			'title_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__title' => 'margin-bottom: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					$this->get_control_id( 'show_title' ) => 'yes',
				],
			]
		);

		$this->add_control(
			'heading_meta_style',
			[
				'label' => esc_html__( 'Meta', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					$this->get_control_id( 'meta_data!' ) => [],
				],
			]
		);

		$this->add_control(
			'meta_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-post__meta-data' => 'color: {{VALUE}};',
				],
				'condition' => [
					$this->get_control_id( 'meta_data!' ) => [],
				],
			]
		);

		$this->add_control(
			'meta_separator_color',
			[
				'label' => esc_html__( 'Separator Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-post__meta-data span:before' => 'color: {{VALUE}};',
				],
				'condition' => [
					$this->get_control_id( 'meta_data!' ) => [],
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'meta_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_SECONDARY,
				],
				'selector' => '{{WRAPPER}} .elementor-post__meta-data',
				'condition' => [
					$this->get_control_id( 'meta_data!' ) => [],
				],
			]
		);

		$this->add_responsive_control(
			'meta_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__meta-data' => 'margin-bottom: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					$this->get_control_id( 'meta_data!' ) => [],
				],
			]
		);

		$this->add_control(
			'heading_excerpt_style',
			[
				'label' => esc_html__( 'Excerpt', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					$this->get_control_id( 'show_excerpt' ) => 'yes',
				],
			]
		);

		$this->add_control(
			'excerpt_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-post__excerpt p' => 'color: {{VALUE}};',
				],
				'condition' => [
					$this->get_control_id( 'show_excerpt' ) => 'yes',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'excerpt_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
				'selector' => '{{WRAPPER}} .elementor-post__excerpt p',
				'condition' => [
					$this->get_control_id( 'show_excerpt' ) => 'yes',
				],
			]
		);

		$this->add_responsive_control(
			'excerpt_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__excerpt' => 'margin-bottom: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					$this->get_control_id( 'show_excerpt' ) => 'yes',
				],
			]
		);

		$this->add_control(
			'heading_readmore_style',
			[
				'label' => esc_html__( 'Read More', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					$this->get_control_id( 'show_read_more' ) => 'yes',
				],
			]
		);

		$this->add_control(
			'read_more_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__read-more' => 'color: {{VALUE}};',
				],
				'condition' => [
					$this->get_control_id( 'show_read_more' ) => 'yes',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'read_more_typography',
				'selector' => '{{WRAPPER}} .elementor-post__read-more',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
				'condition' => [
					$this->get_control_id( 'show_read_more' ) => 'yes',
				],
			]
		);

		$this->add_responsive_control(
			'read_more_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__text' => 'margin-bottom: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					$this->get_control_id( 'show_read_more' ) => 'yes',
				],
			]
		);

		$this->end_controls_section();
	}

	public function render() {
		$this->parent->query_posts();

		/** @var \WP_Query $query */
		$query = $this->parent->get_query();

		if ( ! $query->found_posts ) {
			return;
		}

		$this->render_loop_header();

		// It's the global `wp_query` it self. and the loop was started from the theme.
		if ( $query->in_the_loop ) {
			$this->current_permalink = get_permalink();
			$this->render_post();
		} else {
			while ( $query->have_posts() ) {
				$query->the_post();

				$this->current_permalink = get_permalink();
				$this->render_post();
			}
		}

		wp_reset_postdata();

		$this->render_loop_footer();

	}

	public function filter_excerpt_length() {
		return $this->get_instance_value( 'excerpt_length' );
	}

	public function filter_excerpt_more( $more ) {
		return '';
	}

	public function get_container_class() {
		return 'elementor-posts--skin-' . $this->get_id();
	}

	protected function render_thumbnail() {
		$thumbnail = $this->get_instance_value( 'thumbnail' );

		if ( 'none' === $thumbnail && ! Plugin::elementor()->editor->is_edit_mode() ) {
			return;
		}

		$settings = $this->parent->get_settings();
		$setting_key = $this->get_control_id( 'thumbnail_size' );
		$settings[ $setting_key ] = [
			'id' => get_post_thumbnail_id(),
		];
		$thumbnail_html = Group_Control_Image_Size::get_attachment_image_html( $settings, $setting_key );

		if ( empty( $thumbnail_html ) ) {
			return;
		}

		$optional_attributes_html = $this->get_optional_link_attributes_html();

		?>
		<a class="elementor-post__thumbnail__link" href="<?php echo esc_attr( $this->current_permalink ); ?>" <?php echo esc_attr( $optional_attributes_html ); ?>>
			<div class="elementor-post__thumbnail"><?php echo wp_kses_post( $thumbnail_html ); ?></div>
		</a>
		<?php
	}

	protected function render_title() {
		if ( ! $this->get_instance_value( 'show_title' ) ) {
			return;
		}

		$optional_attributes_html = $this->get_optional_link_attributes_html();

		$tag = $this->get_instance_value( 'title_tag' );
		?>
		<<?php Utils::print_validated_html_tag( $tag ); ?> class="elementor-post__title">
			<a href="<?php echo esc_attr( $this->current_permalink ); ?>" <?php echo esc_attr( $optional_attributes_html ); ?>>
				<?php the_title(); ?>
			</a>
		</<?php Utils::print_validated_html_tag( $tag ); ?>>
		<?php
	}

	protected function render_excerpt() {
		add_filter( 'excerpt_more', [ $this, 'filter_excerpt_more' ], 20 );
		add_filter( 'excerpt_length', [ $this, 'filter_excerpt_length' ], 20 );

		if ( ! $this->get_instance_value( 'show_excerpt' ) ) {
			return;
		}

		add_filter( 'excerpt_more', [ $this, 'filter_excerpt_more' ], 20 );
		add_filter( 'excerpt_length', [ $this, 'filter_excerpt_length' ], 20 );

		?>
		<div class="elementor-post__excerpt">
			<?php the_excerpt(); ?>
		</div>
		<?php

		remove_filter( 'excerpt_length', [ $this, 'filter_excerpt_length' ], 20 );
		remove_filter( 'excerpt_more', [ $this, 'filter_excerpt_more' ], 20 );
	}

	protected function render_read_more() {
		if ( ! $this->get_instance_value( 'show_read_more' ) ) {
			return;
		}

		$optional_attributes_html = $this->get_optional_link_attributes_html();

		?>
			<a class="elementor-post__read-more" href="<?php echo $this->current_permalink; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>" <?php Utils::print_unescaped_internal_string( $optional_attributes_html ); ?>>
				<?php
				echo esc_html( $this->get_instance_value( 'read_more_text' ) );
				?>
			</a>
		<?php
	}

	protected function render_post_header() {
		?>
		<article <?php post_class( [ 'elementor-post elementor-grid-item' ] ); ?>>
		<?php
	}

	protected function render_post_footer() {
		?>
		</article>
		<?php
	}

	protected function render_text_header() {
		?>
		<div class="elementor-post__text">
		<?php
	}

	protected function render_text_footer() {
		?>
		</div>
		<?php
	}

	protected function render_loop_header() {
		$classes = [
			'elementor-posts-container',
			'elementor-posts',
			$this->get_container_class(),
		];

		/** @var \WP_Query $wp_query */
		$wp_query = $this->parent->get_query();

		// Use grid only if found posts.
		if ( $wp_query->found_posts ) {
			$classes[] = 'elementor-grid';
		}

		$this->parent->add_render_attribute( 'container', [
			'class' => $classes,
		] );

		?>
		<div <?php $this->parent->print_render_attribute_string( 'container' ); ?>>
		<?php
	}

	protected function render_message() {
		$settings = $this->parent->get_settings();
		?>
		<div class="e-load-more-message"><?php echo esc_html( $settings['load_more_no_posts_custom_message'] ); ?></div>
		<?php
	}

	protected function render_loop_footer() {
		$parent_settings = $this->parent->get_settings();
		$using_ajax_pagination = in_array( $parent_settings['pagination_type'], [
			Posts_Base::LOAD_MORE_ON_CLICK,
			Posts_Base::LOAD_MORE_INFINITE_SCROLL,
		], true);
		?>
		</div>


		<?php if ( $using_ajax_pagination && ! empty( $parent_settings['load_more_spinner']['value'] ) ) : ?>
			<span class="e-load-more-spinner">
				<?php Icons_Manager::render_icon( $parent_settings['load_more_spinner'], [ 'aria-hidden' => 'true' ] ); ?>
			</span>
		<?php endif; ?>

		<?php

		if ( '' === $parent_settings['pagination_type'] ) {
			return;
		}

		$page_limit = $this->parent->get_query()->max_num_pages;

		// Page limit control should not effect in load more mode.
		if ( '' !== $parent_settings['pagination_page_limit'] && ! $using_ajax_pagination ) {
			$page_limit = min( $parent_settings['pagination_page_limit'], $page_limit );
		}

		if ( 2 > $page_limit ) {
			return;
		}

		$this->parent->add_render_attribute( 'pagination', 'class', 'elementor-pagination' );

		$has_numbers = in_array( $parent_settings['pagination_type'], [ 'numbers', 'numbers_and_prev_next' ] );
		$has_prev_next = in_array( $parent_settings['pagination_type'], [ 'prev_next', 'numbers_and_prev_next' ] );

		$load_more_type = $parent_settings['pagination_type'];

		$current_page = $this->parent->get_current_page();
		$next_page = intval( $current_page ) + 1;

		$this->parent->add_render_attribute( 'load_more_anchor', [
			'data-page' => $current_page,
			'data-max-page' => $this->parent->get_query()->max_num_pages,
			'data-next-page' => $this->parent->get_wp_link_page( $next_page ),
		] );

		?>
		<div class="e-load-more-anchor" <?php $this->parent->print_render_attribute_string( 'load_more_anchor' ); ?>></div>
		<?php

		if ( $using_ajax_pagination ) {
			if ( 'load_more_on_click' === $load_more_type ) {
				// The link-url control is hidden, so default value is added to keep the same style like button widget.
				$this->parent->set_settings( 'link', [ 'url' => '#' ] );

				$this->render_button( $this->parent );
			}

			$this->render_message();
			return;
		}

		$links = [];

		if ( $has_numbers ) {
			$paginate_args = [
				'type' => 'array',
				'current' => $this->parent->get_current_page(),
				'total' => $page_limit,
				'prev_next' => false,
				'show_all' => 'yes' !== $parent_settings['pagination_numbers_shorten'],
				'before_page_number' => '<span class="elementor-screen-only">' . esc_html__( 'Page', 'elementor-pro' ) . '</span>',
			];

			if ( is_singular() && ! is_front_page() ) {
				global $wp_rewrite;
				if ( $wp_rewrite->using_permalinks() ) {
					$paginate_args['base'] = trailingslashit( get_permalink() ) . '%_%';
					$paginate_args['format'] = user_trailingslashit( '%#%', 'single_paged' );
				} else {
					$paginate_args['format'] = '?page=%#%';
				}
			}

			$links = paginate_links( $paginate_args );
		}

		if ( $has_prev_next ) {
			$prev_next = $this->parent->get_posts_nav_link( $page_limit );
			array_unshift( $links, $prev_next['prev'] );
			$links[] = $prev_next['next'];
		}

		// PHPCS - Seems that `$links` is safe.
		?>
		<nav class="elementor-pagination" role="navigation" aria-label="<?php esc_attr_e( 'Pagination', 'elementor-pro' ); ?>">
			<?php echo implode( PHP_EOL, $links ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
		</nav>
		<?php
	}

	protected function render_meta_data() {
		/** @var array $settings e.g. [ 'author', 'date', ... ] */
		$settings = $this->get_instance_value( 'meta_data' );
		if ( empty( $settings ) ) {
			return;
		}
		?>
		<div class="elementor-post__meta-data">
			<?php
			if ( in_array( 'author', $settings ) ) {
				$this->render_author();
			}

			if ( in_array( 'date', $settings ) ) {
				$this->render_date_by_type();
			}

			if ( in_array( 'time', $settings ) ) {
				$this->render_time();
			}

			if ( in_array( 'comments', $settings ) ) {
				$this->render_comments();
			}
			if ( in_array( 'modified', $settings ) ) {
				$this->render_date_by_type( 'modified' );
			}
			?>
		</div>
		<?php
	}

	protected function render_author() {
		?>
		<span class="elementor-post-author">
			<?php the_author(); ?>
		</span>
		<?php
	}

	/**
	 * @deprecated since 3.0.0 Use `Skin_Base::render_date_by_type()` instead
	 */
	protected function render_date() {
		// _deprecated_function( __METHOD__, '3.0.0', 'Skin_Base::render_date_by_type()' );
		$this->render_date_by_type();
	}

	protected function render_date_by_type( $type = 'publish' ) {
		?>
		<span class="elementor-post-date">
			<?php
			switch ( $type ) :
				case 'modified':
					$date = get_the_modified_date();
					break;
				default:
					$date = get_the_date();
			endswitch;
			/** This filter is documented in wp-includes/general-template.php */
			// PHPCS - The date is safe.
			echo apply_filters( 'the_date', $date, get_option( 'date_format' ), '', '' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			?>
		</span>
		<?php
	}

	protected function render_time() {
		?>
		<span class="elementor-post-time">
			<?php the_time(); ?>
		</span>
		<?php
	}

	protected function render_comments() {
		?>
		<span class="elementor-post-avatar">
			<?php comments_number(); ?>
		</span>
		<?php
	}

	protected function render_post() {
		$this->render_post_header();
		$this->render_thumbnail();
		$this->render_text_header();
		$this->render_title();
		$this->render_meta_data();
		$this->render_excerpt();
		$this->render_read_more();
		$this->render_text_footer();
		$this->render_post_footer();
	}

	public function render_amp() {

	}
}
modules/posts/skins/skin-content-base.php000064400000022025150755004300014550 0ustar00<?php
namespace ElementorPro\Modules\Posts\Skins;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Image_Size;
use Elementor\Utils;
use Elementor\Widget_Base;
use ElementorPro\Modules\ThemeBuilder\Module as ThemeBuilder;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

trait Skin_Content_Base {
	protected function _register_controls_actions() {
		$widget_name = $this->parent->get_name();
		add_action( 'elementor/element/' . $widget_name . '/section_layout/before_section_end', [ $this, 'register_skin_controls' ] );

		if ( 'archive-posts' === $widget_name ) {
			add_action( 'elementor/element/archive-posts/section_layout/after_section_end', [ $this, 'register_style_sections' ] );
		} else {
			add_action( 'elementor/element/posts/section_query/after_section_end', [ $this, 'register_style_sections' ] );
		}
	}

	public function get_title() {
		return esc_html__( 'Full Content', 'elementor-pro' );
	}

	public function register_skin_controls( Widget_Base $widget ) {
		$this->parent = $widget;
		$this->register_post_count_control();
		$this->register_row_gap_control();
		$this->register_thumbnail_controls();
		$this->register_title_controls();
		$this->register_meta_data_controls();
		$this->register_link_controls();
	}

	public function register_thumbnail_controls() {
		$this->add_control(
			'thumbnail',
			[
				'label' => esc_html__( 'Show Thumbnail', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'return_value' => 'thumbnail',
				'prefix_class' => 'elementor-posts--show-',
				'separator' => 'before',
			]
		);

		$this->add_group_control(
			Group_Control_Image_Size::get_type(),
			[
				'name' => 'thumbnail_size',
				'default' => 'medium',
				'exclude' => [ 'custom' ],
				'condition' => [
					$this->get_control_id( 'thumbnail!' ) => '',
				],
				'prefix_class' => 'elementor-posts--thumbnail-size-',
			]
		);

		$this->add_responsive_control(
			'item_ratio',
			[
				'label' => esc_html__( 'Image Ratio', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 0.66,
				],
				'tablet_default' => [
					'size' => '',
				],
				'mobile_default' => [
					'size' => 0.5,
				],
				'range' => [
					'px' => [
						'min' => 0.1,
						'max' => 2,
						'step' => 0.01,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-posts-container .elementor-post__thumbnail' => 'padding-bottom: calc( {{SIZE}} * 100% );',
					'{{WRAPPER}}:after' => 'content: "{{SIZE}}"; position: absolute; color: transparent;',
				],
				'condition' => [
					$this->get_control_id( 'thumbnail!' ) => '',
				],
			]
		);

		$this->add_responsive_control(
			'image_width',
			[
				'label' => esc_html__( 'Image Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'%' => [
						'min' => 10,
						'max' => 100,
					],
					'px' => [
						'min' => 10,
						'max' => 600,
					],
				],
				'default' => [
					'size' => 100,
					'unit' => '%',
				],
				'tablet_default' => [
					'size' => '',
					'unit' => '%',
				],
				'mobile_default' => [
					'size' => 100,
					'unit' => '%',
				],
				'size_units' => [ '%', 'px' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__thumbnail__link' => 'width: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					$this->get_control_id( 'thumbnail!' ) => '',
				],
			]
		);
	}

	public function register_design_controls() {
		$this->register_additional_design_controls();
		$this->register_design_image_controls();
		$this->register_design_content_controls();
		$this->update_image_spacing_control();
	}

	public function register_row_gap_control() {
		$this->add_control(
			'row_gap',
			[
				'label' => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 35,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'frontend_available' => true,
				'selectors' => [
					'{{WRAPPER}} .elementor-posts-container article' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);
	}

	// Update selectors for full content
	public function update_image_spacing_control() {
		$image_spacing_control = [
			'selectors' => [
				'{{WRAPPER}} .elementor-posts--skin-full_content a.elementor-post__thumbnail__link' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				'{{WRAPPER}} .elementor-posts--skin-archive_full_content a.elementor-post__thumbnail__link' => 'margin-bottom: {{SIZE}}{{UNIT}}',
			],
		];
		$this->update_control( 'image_spacing', $image_spacing_control );
	}

	protected function render_thumbnail() {
		$thumbnail = $this->get_instance_value( 'thumbnail' );

		// In edit mode we render thumbnail to avoid server side rendering on each change.
		if ( empty( $thumbnail ) && ! Plugin::elementor()->editor->is_edit_mode() ) {
			return;
		}

		$settings = $this->parent->get_settings();
		$setting_key = $this->get_control_id( 'thumbnail_size' );
		$settings[ $setting_key ] = [
			'id' => get_post_thumbnail_id(),
		];
		$thumbnail_html = Group_Control_Image_Size::get_attachment_image_html( $settings, $setting_key );

		if ( empty( $thumbnail_html ) ) {
			return;
		}

		$optional_attributes_html = $this->get_optional_link_attributes_html();

		// PHPCS - `get_permalink` is safe.
		?>
		<a class="elementor-post__thumbnail__link" href="<?php echo $this->current_permalink; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>" <?php Utils::print_unescaped_internal_string( $optional_attributes_html ); ?>>
		<div class="elementor-post__thumbnail"><?php echo wp_kses_post( $thumbnail_html ); ?></div>
		</a>
		<?php
	}

	public function render_post_content( $with_wrapper = false ) {
		static $did_posts = [];
		static $level = 0;

		$post = get_post();

		if ( post_password_required( $post->ID ) ) {
			// PHPCS - `get_the_password_form`. is safe.
			echo get_the_password_form( $post->ID ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			return;
		}

		// Avoid recursion
		if ( isset( $did_posts[ $post->ID ] ) ) {
			return;
		}

		$level++;
		$did_posts[ $post->ID ] = true;
		// End avoid recursion

		$editor = Plugin::elementor()->editor;
		$is_edit_mode = $editor->is_edit_mode();

		if ( Plugin::elementor()->preview->is_preview_mode( $post->ID ) ) {
			$content = Plugin::elementor()->preview->builder_wrapper( '' ); // XSS ok
		} else {
			/**
			 * @var ThemeBuilder ThemeBuilder
			 */
			$document = ThemeBuilder::instance()->get_document( $post->ID );
			// On view theme document show it's preview content.
			if ( $document ) {
				$preview_type = $document->get_settings( 'preview_type' );
				$preview_id = $document->get_settings( 'preview_id' );

				if ( 0 === strpos( $preview_type, 'single' ) && ! empty( $preview_id ) ) {
					$post = get_post( $preview_id );

					if ( ! $post ) {
						$level--;

						return;
					}
				}
			}

			// Set edit mode as false, so don't render settings and etc. use the $is_edit_mode to indicate if we need the CSS inline
			$editor->set_edit_mode( false );

			// Print manually (and don't use `the_content()`) because it's within another `the_content` filter, and the Elementor filter has been removed to avoid recursion.
			$content = Plugin::elementor()->frontend->get_builder_content( $post->ID, true );

			Plugin::elementor()->frontend->remove_content_filter();

			if ( empty( $content ) ) {
				// Split to pages.
				setup_postdata( $post );

				/** This filter is documented in wp-includes/post-template.php */
				// PHPCS - `get_the_content` is safe.
				echo apply_filters( 'the_content', get_the_content() ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped

				wp_link_pages( [
					'before' => '<div class="page-links elementor-page-links"><span class="page-links-title elementor-page-links-title">' . esc_html__( 'Pages:', 'elementor-pro' ) . '</span>',
					'after' => '</div>',
					'link_before' => '<span>',
					'link_after' => '</span>',
					'pagelink' => '<span class="screen-reader-text">' . esc_html__( 'Page', 'elementor-pro' ) . ' </span>%',
					'separator' => '<span class="screen-reader-text">, </span>',
				] );

				Plugin::elementor()->frontend->add_content_filter();

				$level--;

				// Restore edit mode state
				Plugin::elementor()->editor->set_edit_mode( $is_edit_mode );

				return;
			} else {
				Plugin::elementor()->frontend->remove_content_filters();
				$content = apply_filters( 'the_content', $content );
				Plugin::elementor()->frontend->restore_content_filters();
			}
		} // End if().

		// Restore edit mode state
		Plugin::elementor()->editor->set_edit_mode( $is_edit_mode );

		if ( $with_wrapper ) {
			echo '<div class="elementor-post__content">' . balanceTags( $content, true ) . '</div>';  // XSS ok.
		} else {
			echo $content; // XSS ok.
		}

		$level--;

		if ( 0 === $level ) {
			$did_posts = [];
		}
	}

	protected function render_post() {
		$this->render_post_header();
		$this->render_thumbnail();
		$this->render_text_header();
		$this->render_title();
		$this->render_meta_data();
		$this->render_post_content( true );
		$this->render_text_footer();
		$this->render_post_footer();
	}
}
modules/posts/data/controller.php000064400000002700150755004300013167 0ustar00<?php
namespace ElementorPro\Modules\Posts\Data;

use Elementor\Utils;
use ElementorPro\Data\Base\Controller as Controller_Base;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Controller extends Controller_Base {

	public function get_name() {
		return 'posts-widget';
	}

	public function register_endpoints() {
		// There is only get items end point
	}

	public function get_items( $request ) {
		$document = Plugin::elementor()->documents->get( $request->get_param( 'post_id' ) );

		if ( ! $document ) {
			return new \WP_Error(
				'document_not_exist',
				__( 'Document doesn\'t exist', 'elementor-pro' ),
				[ 'status' => 404 ]
			);
		}

		$element_data = $document->get_elements_data();
		$posts_widget = Utils::find_element_recursive( $element_data, $request->get_param( 'element_id' ) );

		if ( empty( $posts_widget ) ) {
			return new \WP_Error(
				'Element_not_exist',
				__( 'Posts widget doesn\'t exist', 'elementor-pro' ),
				[ 'status' => 404 ]
			);
		}

		set_query_var( 'paged', $request->get_param( 'page' ) );

		/** @var \ElementorPro\Modules\Posts\Widgets\Posts $element_instance */
		$element_instance = Plugin::elementor()->elements_manager->create_element_instance( $posts_widget );

		ob_start();
		$element_instance->render_content();
		$html = ob_get_clean();

		return [
			'content' => $html,
		];
	}

	public function get_permission_callback( $request ) {
		return true;
	}
}
modules/posts/traits/button-widget-trait.php000064400000034057150755004300015330 0ustar00<?php
// @TODO: Use the button trait from core when it will be added.

namespace ElementorPro\Modules\Posts\Traits;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Background;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Text_Shadow;
use Elementor\Group_Control_Typography;
use Elementor\Icons_Manager;
use Elementor\Utils;
use Elementor\Widget_Base;

trait Button_Widget_Trait {
	/**
	 * Get button sizes.
	 *
	 * Retrieve an array of button sizes for the button widget.
	 *
	 * @since 3.4.0
	 * @access public
	 * @static
	 *
	 * @return array An array containing button sizes.
	 */
	public static function get_button_sizes() {
		return [
			'xs' => esc_html__( 'Extra Small', 'elementor-pro' ),
			'sm' => esc_html__( 'Small', 'elementor-pro' ),
			'md' => esc_html__( 'Medium', 'elementor-pro' ),
			'lg' => esc_html__( 'Large', 'elementor-pro' ),
			'xl' => esc_html__( 'Extra Large', 'elementor-pro' ),
		];
	}

	protected function register_button_content_controls( $args = [] ) {
		$default_args = [
			'section_condition' => [],
			'button_text' => esc_html__( 'Click here', 'elementor-pro' ),
			'control_label_name' => esc_html__( 'Text', 'elementor-pro' ),
			'prefix_class' => 'elementor%s-align-',
			'alignment_default' => '',
			'exclude_inline_options' => [],
		];

		$args = wp_parse_args( $args, $default_args );

		$this->add_control(
			'button_type',
			[
				'label' => esc_html__( 'Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '',
				'options' => [
					'' => esc_html__( 'Default', 'elementor-pro' ),
					'info' => esc_html__( 'Info', 'elementor-pro' ),
					'success' => esc_html__( 'Success', 'elementor-pro' ),
					'warning' => esc_html__( 'Warning', 'elementor-pro' ),
					'danger' => esc_html__( 'Danger', 'elementor-pro' ),
				],
				'prefix_class' => 'elementor-button-',
				'condition' => $args['section_condition'],
			]
		);

		$this->add_control(
			'text',
			[
				'label' => $args['control_label_name'],
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'default' => $args['button_text'],
				'placeholder' => $args['button_text'],
				'condition' => $args['section_condition'],
			]
		);

		$this->add_control(
			'link',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
				'default' => [
					'url' => '#',
				],
				'condition' => $args['section_condition'],
			]
		);

		$this->add_responsive_control(
			'align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start'    => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'end' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Justified', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				'prefix_class' => $args['prefix_class'],
				'default' => $args['alignment_default'],
				'condition' => $args['section_condition'],
			]
		);

		$this->add_control(
			'size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'sm',
				'options' => self::get_button_sizes(),
				'style_transfer' => true,
				'condition' => $args['section_condition'],
			]
		);

		$this->add_control(
			'selected_icon',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'fa4compatibility' => 'icon',
				'skin' => 'inline',
				'label_block' => false,
				'condition' => $args['section_condition'],
				'exclude_inline_options' => $args['exclude_inline_options'],
			]
		);

		$this->add_control(
			'icon_align',
			[
				'label' => esc_html__( 'Icon Position', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'left',
				'options' => [
					'left' => esc_html__( 'Before', 'elementor-pro' ),
					'right' => esc_html__( 'After', 'elementor-pro' ),
				],
				'condition' => array_merge( $args['section_condition'], [ 'selected_icon[value]!' => '' ] ),
			]
		);

		$this->add_control(
			'icon_indent',
			[
				'label' => esc_html__( 'Icon Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-button .elementor-align-icon-right' => 'margin-left: {{SIZE}}{{UNIT}};',
					'{{WRAPPER}} .elementor-button .elementor-align-icon-left' => 'margin-right: {{SIZE}}{{UNIT}};',
				],
				'condition' => $args['section_condition'],
			]
		);

		$this->add_control(
			'view',
			[
				'label' => esc_html__( 'View', 'elementor-pro' ),
				'type' => Controls_Manager::HIDDEN,
				'default' => 'traditional',
				'condition' => $args['section_condition'],
			]
		);

		$this->add_control(
			'button_css_id',
			[
				'label' => esc_html__( 'Button ID', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'default' => '',
				'title' => esc_html__( 'Add your custom id WITHOUT the Pound key. e.g: my-id', 'elementor-pro' ),
				'description' => esc_html__( 'Please make sure the ID is unique and not used elsewhere on the page this form is displayed. This field allows `A-z 0-9` & underscore chars without spaces.', 'elementor-pro' ),
				'separator' => 'before',
				'condition' => $args['section_condition'],
			]
		);
	}

	protected function register_button_style_controls( $args = [] ) {
		$default_args = [
			'section_condition' => [],
		];

		$args = wp_parse_args( $args, $default_args );

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
				'selector' => '{{WRAPPER}} .elementor-button',
				'condition' => $args['section_condition'],
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'text_shadow',
				'selector' => '{{WRAPPER}} .elementor-button',
				'condition' => $args['section_condition'],
			]
		);

		$this->start_controls_tabs( 'tabs_button_style', [
			'condition' => $args['section_condition'],
		] );

		$this->start_controls_tab(
			'tab_button_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
				'condition' => $args['section_condition'],
			]
		);

		$this->add_control(
			'button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-button' => 'fill: {{VALUE}}; color: {{VALUE}};',
				],
				'condition' => $args['section_condition'],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'background',
				'label' => esc_html__( 'Background', 'elementor-pro' ),
				'types' => [ 'classic', 'gradient' ],
				'exclude' => [ 'image' ],
				'selector' => '{{WRAPPER}} .elementor-button',
				'fields_options' => [
					'background' => [
						'default' => 'classic',
					],
					'color' => [
						'global' => [
							'default' => Global_Colors::COLOR_ACCENT,
						],
					],
				],
				'condition' => $args['section_condition'],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_button_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
				'condition' => $args['section_condition'],
			]
		);

		$this->add_control(
			'hover_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-button:hover, {{WRAPPER}} .elementor-button:focus' => 'color: {{VALUE}};',
					'{{WRAPPER}} .elementor-button:hover svg, {{WRAPPER}} .elementor-button:focus svg' => 'fill: {{VALUE}};',
				],
				'condition' => $args['section_condition'],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'button_background_hover',
				'label' => esc_html__( 'Background', 'elementor-pro' ),
				'types' => [ 'classic', 'gradient' ],
				'exclude' => [ 'image' ],
				'selector' => '{{WRAPPER}} .elementor-button:hover, {{WRAPPER}} .elementor-button:focus',
				'fields_options' => [
					'background' => [
						'default' => 'classic',
					],
				],
				'condition' => $args['section_condition'],
			]
		);

		$this->add_control(
			'button_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'condition' => [
					'border_border!' => '',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-button:hover, {{WRAPPER}} .elementor-button:focus' => 'border-color: {{VALUE}};',
				],
				'condition' => $args['section_condition'],
			]
		);

		$this->add_control(
			'hover_animation',
			[
				'label' => esc_html__( 'Hover Animation', 'elementor-pro' ),
				'type' => Controls_Manager::HOVER_ANIMATION,
				'condition' => $args['section_condition'],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'border',
				'selector' => '{{WRAPPER}} .elementor-button',
				'separator' => 'before',
				'condition' => $args['section_condition'],
			]
		);

		$this->add_control(
			'border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%', 'em' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-button' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => $args['section_condition'],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'button_box_shadow',
				'selector' => '{{WRAPPER}} .elementor-button',
				'condition' => $args['section_condition'],
			]
		);

		$this->add_responsive_control(
			'text_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'separator' => 'before',
				'condition' => $args['section_condition'],
			]
		);
	}

	/**
	 * Render button widget output on the frontend.
	 *
	 * Written in PHP and used to generate the final HTML.
	 *
	 * @param \Elementor\Widget_Base|null $instance
	 *
	 * @since  3.4.0
	 * @access protected
	 */
	protected function render_button( Widget_Base $instance = null ) {
		if ( empty( $instance ) ) {
			$instance = $this;
		}

		$settings = $instance->get_settings();
		$instance->add_render_attribute( 'wrapper', 'class', 'elementor-button-wrapper' );

		if ( ! empty( $settings['link']['url'] ) ) {
			$instance->add_link_attributes( 'button', $settings['link'] );
			$instance->add_render_attribute( 'button', 'class', 'elementor-button-link' );
		}

		$instance->add_render_attribute( 'button', 'class', 'elementor-button' );
		$instance->add_render_attribute( 'button', 'role', 'button' );

		if ( ! empty( $settings['button_css_id'] ) ) {
			$instance->add_render_attribute( 'button', 'id', $settings['button_css_id'] );
		}

		if ( ! empty( $settings['size'] ) ) {
			$instance->add_render_attribute( 'button', 'class', 'elementor-size-' . $settings['size'] );
		}

		if ( $settings['hover_animation'] ) {
			$instance->add_render_attribute( 'button', 'class', 'elementor-animation-' . $settings['hover_animation'] );
		}
		?>
		<div <?php $instance->print_render_attribute_string( 'wrapper' ); ?>>
			<a <?php $instance->print_render_attribute_string( 'button' ); ?>>
				<?php $this->render_text( $instance ); ?>
			</a>
		</div>
		<?php
	}

	/**
	 * Render button text.
	 *
	 * Render button widget text.
	 *
	 * @param \Elementor\Widget_Base $instance
	 *
	 * @since  3.4.0
	 * @access protected
	 */
	protected function render_text( Widget_Base $instance ) {
		$settings = $instance->get_settings();

		$migrated = isset( $settings['__fa4_migrated']['selected_icon'] );
		$is_new = empty( $settings['icon'] ) && Icons_Manager::is_migration_allowed();

		if ( ! $is_new && empty( $settings['icon_align'] ) ) {
			// @todo: remove when deprecated
			// added as bc in 2.6
			//old default
			$settings['icon_align'] = $instance->get_settings( 'icon_align' );
		}

		$instance->add_render_attribute( [
			'content-wrapper' => [
				'class' => 'elementor-button-content-wrapper',
			],
			'icon-align' => [
				'class' => [
					'elementor-button-icon',
					'elementor-align-icon-' . $settings['icon_align'],
				],
			],
			'text' => [
				'class' => 'elementor-button-text',
			],
		] );

		// TODO: replace the protected with public
		//$instance->add_inline_editing_attributes( 'text', 'none' );
		?>
		<span <?php $instance->print_render_attribute_string( 'content-wrapper' ); ?>>
			<?php if ( ! empty( $settings['icon'] ) || ! empty( $settings['selected_icon']['value'] ) ) : ?>
				<span <?php $instance->print_render_attribute_string( 'icon-align' ); ?>>
				<?php if ( $is_new || $migrated ) :
					Icons_Manager::render_icon( $settings['selected_icon'], [ 'aria-hidden' => 'true' ] );
				else : ?>
					<i class="<?php echo esc_attr( $settings['icon'] ); ?>" aria-hidden="true"></i>
				<?php endif; ?>
			</span>
			<?php endif; ?>
			<span <?php $instance->print_render_attribute_string( 'text' ); ?>><?php
				// Todo: Make $instance->print_unescaped_setting public.
				Utils::print_unescaped_internal_string( $settings['text'] );
			?></span>
		</span>
		<?php
	}

	public function on_import( $element ) {
		return Icons_Manager::on_import_migration( $element, 'icon', 'selected_icon' );
	}
}
modules/posts/widgets/portfolio.php000064400000036647150755004300013577 0ustar00<?php
namespace ElementorPro\Modules\Posts\Widgets;

use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Image_Size;
use Elementor\Group_Control_Typography;
use Elementor\Utils;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Modules\QueryControl\Module as Module_Query;
use ElementorPro\Modules\QueryControl\Controls\Group_Control_Related;
use Elementor\Controls_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Class Portfolio
 */
class Portfolio extends Base_Widget {

	/**
	 * @var \WP_Query
	 */
	private $_query = null;

	protected $_has_template_content = false;

	public function get_name() {
		return 'portfolio';
	}

	public function get_title() {
		return esc_html__( 'Portfolio', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-gallery-grid';
	}

	public function get_keywords() {
		return [ 'posts', 'cpt', 'item', 'loop', 'query', 'portfolio', 'custom post type' ];
	}

	public function get_script_depends() {
		return [ 'imagesloaded' ];
	}

	public function on_import( $element ) {
		if ( isset( $element['settings']['posts_post_type'] ) && ! get_post_type_object( $element['settings']['posts_post_type'] ) ) {
			$element['settings']['posts_post_type'] = 'post';
		}

		return $element;
	}

	public function get_query() {
		return $this->_query;
	}

	protected function register_controls() {
		$this->register_query_section_controls();
	}

	private function register_query_section_controls() {
		$this->start_controls_section(
			'section_layout',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$this->add_responsive_control(
			'columns',
			[
				'label' => esc_html__( 'Columns', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '3',
				'tablet_default' => '2',
				'mobile_default' => '1',
				'options' => [
					'1' => '1',
					'2' => '2',
					'3' => '3',
					'4' => '4',
					'5' => '5',
					'6' => '6',
				],
				'prefix_class' => 'elementor-grid%s-',
				'frontend_available' => true,
				'selectors' => [
					'.elementor-msie {{WRAPPER}} .elementor-portfolio-item' => 'width: calc( 100% / {{SIZE}} )',
				],
			]
		);

		$this->add_control(
			'posts_per_page',
			[
				'label' => esc_html__( 'Posts Per Page', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 6,
			]
		);

		$this->add_group_control(
			Group_Control_Image_Size::get_type(),
			[
				'name' => 'thumbnail_size',
				'exclude' => [ 'custom' ],
				'default' => 'medium',
				'prefix_class' => 'elementor-portfolio--thumbnail-size-',
			]
		);

		$this->add_control(
			'masonry',
			[
				'label' => esc_html__( 'Masonry', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'condition' => [
					'columns!' => '1',
				],
				'render_type' => 'ui',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'item_ratio',
			[
				'label' => esc_html__( 'Item Ratio', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 0.66,
				],
				'range' => [
					'px' => [
						'min' => 0.1,
						'max' => 2,
						'step' => 0.01,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post__thumbnail__link' => 'padding-bottom: calc( {{SIZE}} * 100% )',
					'{{WRAPPER}}:after' => 'content: "{{SIZE}}"; position: absolute; color: transparent;',
				],
				'condition' => [
					'masonry' => '',
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'show_title',
			[
				'label' => esc_html__( 'Show Title', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'title_tag',
			[
				'label' => esc_html__( 'Title HTML Tag', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'h1' => 'H1',
					'h2' => 'H2',
					'h3' => 'H3',
					'h4' => 'H4',
					'h5' => 'H5',
					'h6' => 'H6',
					'div' => 'div',
					'span' => 'span',
					'p' => 'p',
				],
				'default' => 'h3',
				'condition' => [
					'show_title' => 'yes',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_query',
			[
				'label' => esc_html__( 'Query', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$this->add_group_control(
			Group_Control_Related::get_type(),
			[
				'name' => 'posts',
				'presets' => [ 'full' ],
				'exclude' => [
					'posts_per_page', //use the one from Layout section
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'filter_bar',
			[
				'label' => esc_html__( 'Filter Bar', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$this->add_control(
			'show_filter_bar',
			[
				'label' => esc_html__( 'Show', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'taxonomy',
			[
				'label' => esc_html__( 'Taxonomy', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'label_block' => true,
				'default' => [],
				'options' => $this->get_taxonomies(),
				'condition' => [
					'show_filter_bar' => 'yes',
					'posts_post_type!' => 'by_id',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_design_layout',
			[
				'label' => esc_html__( 'Items', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		/*
		 * The `item_gap` control is replaced by `column_gap` and `row_gap` controls since v 2.1.6
		 * It is left (hidden) in the widget, to provide compatibility with older installs
		 */

		$this->add_control(
			'item_gap',
			[
				'label' => esc_html__( 'Item Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}}' => '--grid-row-gap: {{SIZE}}{{UNIT}}; --grid-column-gap: {{SIZE}}{{UNIT}};',
				],
				'frontend_available' => true,
				'classes' => 'elementor-hidden',
			]
		);

		$this->add_control(
			'column_gap',
			[
				'label' => esc_html__( 'Columns Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => ' --grid-column-gap: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'row_gap',
			[
				'label' => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'frontend_available' => true,
				'selectors' => [
					'{{WRAPPER}}' => '--grid-row-gap: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-portfolio-item__img, {{WRAPPER}} .elementor-portfolio-item__overlay' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_design_overlay',
			[
				'label' => esc_html__( 'Item Overlay', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'color_background',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'selectors' => [
					'{{WRAPPER}} a .elementor-portfolio-item__overlay' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'color_title',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'separator' => 'before',
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} a .elementor-portfolio-item__title' => 'color: {{VALUE}};',
				],
				'condition' => [
					'show_title' => 'yes',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'typography_title',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-portfolio-item__title',
				'condition' => [
					'show_title' => 'yes',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_design_filter',
			[
				'label' => esc_html__( 'Filter Bar', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'show_filter_bar' => 'yes',
				],
			]
		);

		$this->add_control(
			'color_filter',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-portfolio__filter' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'color_filter_active',
			[
				'label' => esc_html__( 'Active Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_PRIMARY,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-portfolio__filter.elementor-active' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'typography_filter',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-portfolio__filter',
			]
		);

		$this->add_control(
			'filter_item_spacing',
			[
				'label' => esc_html__( 'Space Between', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 10,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-portfolio__filter:not(:last-child)' => 'margin-right: calc({{SIZE}}{{UNIT}}/2)',
					'{{WRAPPER}} .elementor-portfolio__filter:not(:first-child)' => 'margin-left: calc({{SIZE}}{{UNIT}}/2)',
				],
			]
		);

		$this->add_control(
			'filter_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 10,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-portfolio__filters' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section();
	}

	protected function get_taxonomies() {
		$taxonomies = get_taxonomies( [ 'show_in_nav_menus' => true ], 'objects' );

		$options = [ '' => '' ];

		foreach ( $taxonomies as $taxonomy ) {
			$options[ $taxonomy->name ] = $taxonomy->label;
		}

		return $options;
	}

	protected function get_posts_tags() {
		$taxonomy = $this->get_settings( 'taxonomy' );

		foreach ( $this->_query->posts as $post ) {
			if ( ! $taxonomy ) {
				$post->tags = [];

				continue;
			}

			$tags = wp_get_post_terms( $post->ID, $taxonomy );

			$tags_slugs = [];

			foreach ( $tags as $tag ) {
				$tags_slugs[ $tag->term_id ] = $tag;
			}

			$post->tags = $tags_slugs;
		}
	}

	public function query_posts() {

		$query_args = [
			'posts_per_page' => $this->get_settings( 'posts_per_page' ),
		];

		/** @var Module_Query $elementor_query */
		$elementor_query = Module_Query::instance();
		$this->_query = $elementor_query->get_query( $this, 'posts', $query_args, [] );
	}

	public function render() {
		$this->query_posts();

		$wp_query = $this->get_query();

		if ( ! $wp_query->found_posts ) {
			return;
		}

		$this->get_posts_tags();

		$this->render_loop_header();

		while ( $wp_query->have_posts() ) {
			$wp_query->the_post();

			$this->render_post();
		}

		$this->render_loop_footer();

		wp_reset_postdata();
	}

	protected function render_thumbnail() {
		$settings = $this->get_settings();

		$settings['thumbnail_size'] = [
			'id' => get_post_thumbnail_id(),
		];
		?>
		<div class="elementor-portfolio-item__img elementor-post__thumbnail">
			<?php Group_Control_Image_Size::print_attachment_image_html( $settings, 'thumbnail_size' ); ?>
		</div>
		<?php
	}

	protected function render_filter_menu() {
		$taxonomy = $this->get_settings( 'taxonomy' );

		if ( ! $taxonomy ) {
			return;
		}

		$terms = [];

		foreach ( $this->_query->posts as $post ) {
			$terms += $post->tags;
		}

		if ( empty( $terms ) ) {
			return;
		}

		usort( $terms, function( $a, $b ) {
			return strcmp( $a->name, $b->name );
		} );

		?>
		<ul class="elementor-portfolio__filters">
			<li class="elementor-portfolio__filter elementor-active" data-filter="__all"><?php echo esc_html__( 'All', 'elementor-pro' ); ?></li>
			<?php foreach ( $terms as $term ) { ?>
				<li class="elementor-portfolio__filter" data-filter="<?php echo esc_attr( $term->term_id ); ?>"><?php echo esc_html( $term->name ); ?></li>
			<?php } ?>
		</ul>
		<?php
	}

	protected function render_title() {
		if ( ! $this->get_settings( 'show_title' ) ) {
			return;
		}

		$tag = $this->get_settings( 'title_tag' );
		?>
		<<?php Utils::print_validated_html_tag( $tag ); ?> class="elementor-portfolio-item__title">
		<?php the_title(); ?>
		</<?php Utils::print_validated_html_tag( $tag ); ?>>
		<?php
	}

	protected function render_categories_names() {
		global $post;

		if ( ! $post->tags ) {
			return;
		}

		$separator = '<span class="elementor-portfolio-item__tags__separator"></span>';

		$tags_array = [];

		foreach ( $post->tags as $tag ) {
			$tags_array[] = '<span class="elementor-portfolio-item__tags__tag">' . esc_html( $tag->name ) . '</span>';
		}

		?>
		<div class="elementor-portfolio-item__tags">
			<?php // PHPCS - `$separator`, `$separator` is safe. ?>
			<?php echo implode( $separator, $tags_array ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
		</div>
		<?php
	}

	protected function render_post_header() {
		global $post;

		$tags_classes = array_map( function( $tag ) {
			return 'elementor-filter-' . $tag->term_id;
		}, $post->tags );

		$classes = [
			'elementor-portfolio-item',
			'elementor-post',
			implode( ' ', $tags_classes ),
		];

		// PHPCS - `get_permalink` is safe.
		?>
		<article <?php post_class( $classes ); ?>>
			<a class="elementor-post__thumbnail__link" href="<?php echo get_permalink(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>">
		<?php
	}

	protected function render_post_footer() {
		?>
		</a>
		</article>
		<?php
	}

	protected function render_overlay_header() {
		?>
		<div class="elementor-portfolio-item__overlay">
		<?php
	}

	protected function render_overlay_footer() {
		?>
		</div>
		<?php
	}

	protected function render_loop_header() {
		if ( $this->get_settings( 'show_filter_bar' ) ) {
			$this->render_filter_menu();
		}
		?>
		<div class="elementor-portfolio elementor-grid elementor-posts-container">
		<?php
	}

	protected function render_loop_footer() {
		?>
		</div>
		<?php
	}

	protected function render_post() {
		$this->render_post_header();
		$this->render_thumbnail();
		$this->render_overlay_header();
		$this->render_title();
		// $this->render_categories_names();
		$this->render_overlay_footer();
		$this->render_post_footer();
	}

	public function render_plain_content() {}

	public function get_group_name() {
		return 'posts';
	}
}
modules/posts/widgets/posts-base.php000064400000040525150755004300013630 0ustar00<?php
namespace ElementorPro\Modules\Posts\Widgets;

use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;
use ElementorPro\Base\Base_Widget;
use Elementor\Controls_Manager;
use ElementorPro\Modules\Posts\Traits\Button_Widget_Trait;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Class Posts
 */
abstract class Posts_Base extends Base_Widget {
	use Button_Widget_Trait;

	const LOAD_MORE_ON_CLICK = 'load_more_on_click';
	const LOAD_MORE_INFINITE_SCROLL = 'load_more_infinite_scroll';

	/**
	 * @var \WP_Query
	 */
	protected $query = null;

	protected $_has_template_content = false;

	public function get_icon() {
		return 'eicon-post-list';
	}

	public function get_script_depends() {
		return [ 'imagesloaded' ];
	}

	public function get_query() {
		return $this->query;
	}

	public function render() {}

	public function register_load_more_button_style_controls() {
		$this->add_control(
			'heading_load_more_style_button',
			[
				'label' => esc_html__( 'Button', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'condition' => [
					'pagination_type' => 'load_more_on_click',
				],
			]
		);

		$this->register_button_style_controls( [
			'section_condition' => [
				'pagination_type' => 'load_more_on_click',
			],
		] );
	}

	public function register_load_more_message_style_controls() {
		$this->add_control(
			'heading_load_more_on_click_no_posts_message',
			[
				'label' => esc_html__( 'No More Posts Message', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'pagination_type' => 'load_more_on_click',
				],
			]
		);

		$this->add_control(
			'heading_load_more_on_click_infinity_scroll_no_posts_message',
			[
				'label' => esc_html__( 'No More Posts Message', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'condition' => [
					'pagination_type' => 'load_more_infinite_scroll',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'load_more_no_posts_message',
				'selector' => '{{WRAPPER}} .e-load-more-message',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_SECONDARY,
				],
			]
		);

		$this->add_control(
			'load_more_no_posts_message_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}}' => '--load-more-message-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'load_more_spinner_color',
			[
				'label' => esc_html__( 'Spinner Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}}' => '--load-more-spinner-color: {{VALUE}};',
				],
				'separator' => 'before',
				'condition' => [
					'load_more_spinner[value]!' => '',
				],
			]
		);

		$this->add_responsive_control(
			'load_more_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--load-more—spacing: {{SIZE}}{{UNIT}};',
				],
				'separator' => 'before',
			]
		);
	}

	public function register_pagination_section_controls() {
		$this->start_controls_section(
			'section_pagination',
			[
				'label' => esc_html__( 'Pagination', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'pagination_type',
			[
				'label' => esc_html__( 'Pagination', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '',
				'options' => $this->get_pagination_type_options(),
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'pagination_page_limit',
			[
				'label' => esc_html__( 'Page Limit', 'elementor-pro' ),
				'default' => '5',
				'condition' => [
					'pagination_type!' => [
						'load_more_on_click',
						'load_more_infinite_scroll',
						'',
					],
				],
			]
		);

		$this->add_control(
			'pagination_numbers_shorten',
			[
				'label' => esc_html__( 'Shorten', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'condition' => [
					'pagination_type' => [
						'numbers',
						'numbers_and_prev_next',
					],
				],
			]
		);

		$this->add_control(
			'pagination_prev_label',
			[
				'label' => esc_html__( 'Previous Label', 'elementor-pro' ),
				'default' => esc_html__( '&laquo; Previous', 'elementor-pro' ),
				'condition' => [
					'pagination_type' => [
						'prev_next',
						'numbers_and_prev_next',
					],
				],
			]
		);

		$this->add_control(
			'pagination_next_label',
			[
				'label' => esc_html__( 'Next Label', 'elementor-pro' ),
				'default' => esc_html__( 'Next &raquo;', 'elementor-pro' ),
				'condition' => [
					'pagination_type' => [
						'prev_next',
						'numbers_and_prev_next',
					],
				],
			]
		);

		$this->add_control(
			'pagination_align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'default' => 'center',
				'selectors' => [
					'{{WRAPPER}} .elementor-pagination' => 'text-align: {{VALUE}};',
				],
				'condition' => [
					'pagination_type!' => [
						'load_more_on_click',
						'load_more_infinite_scroll',
						'',
					],
				],
			]
		);

		$this->add_control(
			'load_more_spinner',
			[
				'label' => esc_html__( 'Spinner', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'fa4compatibility' => 'icon',
				'default' => [
					'value' => 'fas fa-spinner',
					'library' => 'fa-solid',
				],
				'exclude_inline_options' => [ 'svg' ],
				'recommended' => [
					'fa-solid' => [
						'spinner',
						'cog',
						'sync',
						'sync-alt',
						'asterisk',
						'circle-notch',
					],
				],
				'skin' => 'inline',
				'label_block' => false,
				'condition' => [
					'pagination_type' => [
						'load_more_on_click',
						'load_more_infinite_scroll',
					],
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'heading_load_more_button',
			[
				'label' => esc_html__( 'Button', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'pagination_type' => 'load_more_on_click',
				],
			]
		);

		$this->register_button_content_controls( [
			'button_text' => esc_html__( 'Load More', 'elementor-pro' ),
			'control_label_name' => esc_html__( 'Button Text', 'elementor-pro' ),
			'prefix_class' => 'load-more-align-',
			'alignment_default' => 'center',
			'section_condition' => [
				'pagination_type' => 'load_more_on_click',
			],
			'exclude_inline_options' => [ 'svg' ],
		] );

		$this->remove_control( 'button_type' );
		$this->remove_control( 'link' );
		$this->remove_control( 'size' );

		$this->add_control(
			'heading_load_more_no_posts_message',
			[
				'label' => esc_html__( 'No More Posts Message', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'pagination_type' => [
						'load_more_on_click',
						'load_more_infinite_scroll',
					],
				],
			]
		);

		$this->add_responsive_control(
			'load_more_no_posts_message_align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left'    => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Justified', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--load-more-message-alignment: {{VALUE}};',
				],
				'condition' => [
					'pagination_type' => [
						'load_more_on_click',
						'load_more_infinite_scroll',
					],
				],
			]
		);

		$this->add_control(
			'load_more_no_posts_message_switcher',
			[
				'label' => esc_html__( 'Custom Messages', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'condition' => [
					'pagination_type' => [
						'load_more_on_click',
						'load_more_infinite_scroll',
					],
				],
			]
		);

		$this->add_control(
			'load_more_no_posts_custom_message',
			[
				'label' => esc_html__( 'No more posts message', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'No more posts to show', 'elementor-pro' ),
				'condition' => [
					'pagination_type' => [
						'load_more_on_click',
						'load_more_infinite_scroll',
					],
					'load_more_no_posts_message_switcher' => 'yes',
				],
				'label_block' => true,
			]
		);

		$this->end_controls_section();

		// Pagination style controls for prev/next and numbers pagination.
		$this->start_controls_section(
			'section_pagination_style',
			[
				'label' => esc_html__( 'Pagination', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'pagination_type!' => [
						'load_more_on_click',
						'load_more_infinite_scroll',
						'',
					],
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'pagination_typography',
				'selector' => '{{WRAPPER}} .elementor-pagination',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_SECONDARY,
				],
			]
		);

		$this->add_control(
			'pagination_color_heading',
			[
				'label' => esc_html__( 'Colors', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->start_controls_tabs( 'pagination_colors' );

		$this->start_controls_tab(
			'pagination_color_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'pagination_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-pagination .page-numbers:not(.dots)' => 'color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'pagination_color_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'pagination_hover_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-pagination a.page-numbers:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'pagination_color_active',
			[
				'label' => esc_html__( 'Active', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'pagination_active_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-pagination .page-numbers.current' => 'color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_responsive_control(
			'pagination_spacing',
			[
				'label' => esc_html__( 'Space Between', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'separator' => 'before',
				'default' => [
					'size' => 10,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'body:not(.rtl) {{WRAPPER}} .elementor-pagination .page-numbers:not(:first-child)' => 'margin-left: calc( {{SIZE}}{{UNIT}}/2 );',
					'body:not(.rtl) {{WRAPPER}} .elementor-pagination .page-numbers:not(:last-child)' => 'margin-right: calc( {{SIZE}}{{UNIT}}/2 );',
					'body.rtl {{WRAPPER}} .elementor-pagination .page-numbers:not(:first-child)' => 'margin-right: calc( {{SIZE}}{{UNIT}}/2 );',
					'body.rtl {{WRAPPER}} .elementor-pagination .page-numbers:not(:last-child)' => 'margin-left: calc( {{SIZE}}{{UNIT}}/2 );',
				],
			]
		);

		$this->add_responsive_control(
			'pagination_spacing_top',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-pagination' => 'margin-top: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section();

		// Pagination style controls for on-load pagination with type on-click/infinity-scroll.
		$this->start_controls_section(
			'section_style',
			[
				'label' => esc_html__( 'Pagination', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'pagination_type' => [
						'load_more_on_click',
						'load_more_infinite_scroll',
					],
				],
			]
		);

		$this->register_load_more_button_style_controls();

		$this->register_load_more_message_style_controls();

		$this->end_controls_section();
	}

	abstract public function query_posts();

	public function get_current_page() {
		if ( '' === $this->get_settings( 'pagination_type' ) ) {
			return 1;
		}

		return max( 1, get_query_var( 'paged' ), get_query_var( 'page' ) );
	}

	public function get_wp_link_page( $i ) {
		if ( ! is_singular() || is_front_page() ) {
			return get_pagenum_link( $i );
		}

		// Based on wp-includes/post-template.php:957 `_wp_link_page`.
		global $wp_rewrite;
		$post = get_post();
		$query_args = [];
		$url = get_permalink();

		if ( $i > 1 ) {
			if ( '' === get_option( 'permalink_structure' ) || in_array( $post->post_status, [ 'draft', 'pending' ] ) ) {
				$url = add_query_arg( 'page', $i, $url );
			} elseif ( get_option( 'show_on_front' ) === 'page' && (int) get_option( 'page_on_front' ) === $post->ID ) {
				$url = trailingslashit( $url ) . user_trailingslashit( "$wp_rewrite->pagination_base/" . $i, 'single_paged' );
			} else {
				$url = trailingslashit( $url ) . user_trailingslashit( $i, 'single_paged' );
			}
		}

		if ( is_preview() ) {
			if ( ( 'draft' !== $post->post_status ) && isset( $_GET['preview_id'], $_GET['preview_nonce'] ) ) {
				$query_args['preview_id'] = wp_unslash( $_GET['preview_id'] );
				$query_args['preview_nonce'] = wp_unslash( $_GET['preview_nonce'] );
			}

			$url = get_preview_post_link( $post, $query_args, $url );
		}

		return $url;
	}

	public function get_posts_nav_link( $page_limit = null ) {
		if ( ! $page_limit ) {
			$page_limit = $this->query->max_num_pages;
		}

		$return = [];

		$paged = $this->get_current_page();

		$link_template = '<a class="page-numbers %s" href="%s">%s</a>';
		$disabled_template = '<span class="page-numbers %s">%s</span>';

		if ( $paged > 1 ) {
			$next_page = intval( $paged ) - 1;
			if ( $next_page < 1 ) {
				$next_page = 1;
			}

			$return['prev'] = sprintf( $link_template, 'prev', $this->get_wp_link_page( $next_page ), $this->get_settings( 'pagination_prev_label' ) );
		} else {
			$return['prev'] = sprintf( $disabled_template, 'prev', $this->get_settings( 'pagination_prev_label' ) );
		}

		$next_page = intval( $paged ) + 1;

		if ( $next_page <= $page_limit ) {
			$return['next'] = sprintf( $link_template, 'next', $this->get_wp_link_page( $next_page ), $this->get_settings( 'pagination_next_label' ) );
		} else {
			$return['next'] = sprintf( $disabled_template, 'next', $this->get_settings( 'pagination_next_label' ) );
		}

		return $return;
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_layout',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$this->end_controls_section();
	}

	protected function get_pagination_type_options() {
		return [
			'' => esc_html__( 'None', 'elementor-pro' ),
			'numbers' => esc_html__( 'Numbers', 'elementor-pro' ),
			'prev_next' => esc_html__( 'Previous/Next', 'elementor-pro' ),
			'numbers_and_prev_next' => esc_html__( 'Numbers', 'elementor-pro' ) . ' + ' . esc_html__( 'Previous/Next', 'elementor-pro' ),
			self::LOAD_MORE_ON_CLICK => esc_html__( 'Load on Click', 'elementor-pro' ),
			self::LOAD_MORE_INFINITE_SCROLL => esc_html__( 'Infinite Scroll', 'elementor-pro' ),
		];
	}

	public function render_plain_content() {}
}
modules/posts/widgets/posts.php000064400000004116150755004300012714 0ustar00<?php
namespace ElementorPro\Modules\Posts\Widgets;

use Elementor\Controls_Manager;
use ElementorPro\Modules\QueryControl\Module as Module_Query;
use ElementorPro\Modules\QueryControl\Controls\Group_Control_Related;
use ElementorPro\Modules\Posts\Skins;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Class Posts
 */
class Posts extends Posts_Base {

	public function get_name() {
		return 'posts';
	}

	public function get_title() {
		return esc_html__( 'Posts', 'elementor-pro' );
	}

	public function get_keywords() {
		return [ 'posts', 'cpt', 'item', 'loop', 'query', 'cards', 'custom post type' ];
	}

	public function on_import( $element ) {
		if ( isset( $element['settings']['posts_post_type'] ) && ! get_post_type_object( $element['settings']['posts_post_type'] ) ) {
			$element['settings']['posts_post_type'] = 'post';
		}

		return $element;
	}

	protected function register_skins() {
		$this->add_skin( new Skins\Skin_Classic( $this ) );
		$this->add_skin( new Skins\Skin_Cards( $this ) );
		$this->add_skin( new Skins\Skin_Full_Content( $this ) );
	}

	protected function register_controls() {
		parent::register_controls();

		$this->register_query_section_controls();
		$this->register_pagination_section_controls();
	}

	public function query_posts() {

		$query_args = [
			'posts_per_page' => $this->get_current_skin()->get_instance_value( 'posts_per_page' ),
			'paged' => $this->get_current_page(),
		];

		/** @var Module_Query $elementor_query */
		$elementor_query = Module_Query::instance();
		$this->query = $elementor_query->get_query( $this, 'posts', $query_args, [] );
	}

	protected function register_query_section_controls() {
		$this->start_controls_section(
			'section_query',
			[
				'label' => esc_html__( 'Query', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$this->add_group_control(
			Group_Control_Related::get_type(),
			[
				'name' => $this->get_name(),
				'presets' => [ 'full' ],
				'exclude' => [
					'posts_per_page', //use the one from Layout section
				],
			]
		);

		$this->end_controls_section();
	}

}
modules/nav-menu/module.php000064400000000472150755004300011742 0ustar00<?php
namespace ElementorPro\Modules\NavMenu;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function get_widgets() {
		return [
			'Nav_Menu',
		];
	}

	public function get_name() {
		return 'nav-menu';
	}
}
modules/nav-menu/widgets/nav-menu.php000064400000113034150755004300013650 0ustar00<?php
namespace ElementorPro\Modules\NavMenu\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Typography;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Plugin;
use Elementor\Icons_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Nav_Menu extends Base_Widget {

	protected $nav_menu_index = 1;

	public function get_name() {
		return 'nav-menu';
	}

	public function get_title() {
		return esc_html__( 'Nav Menu', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-nav-menu';
	}

	public function get_categories() {
		return [ 'pro-elements', 'theme-elements' ];
	}

	public function get_keywords() {
		return [ 'menu', 'nav', 'button' ];
	}

	public function get_script_depends() {
		return [ 'smartmenus' ];
	}

	public function on_export( $element ) {
		unset( $element['settings']['menu'] );

		return $element;
	}

	protected function get_nav_menu_index() {
		return $this->nav_menu_index++;
	}

	private function get_available_menus() {
		$menus = wp_get_nav_menus();

		$options = [];

		foreach ( $menus as $menu ) {
			$options[ $menu->slug ] = $menu->name;
		}

		return $options;
	}

	protected function register_controls() {

		$this->start_controls_section(
			'section_layout',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
			]
		);

		$menus = $this->get_available_menus();

		if ( ! empty( $menus ) ) {
			$this->add_control(
				'menu',
				[
					'label' => esc_html__( 'Menu', 'elementor-pro' ),
					'type' => Controls_Manager::SELECT,
					'options' => $menus,
					'default' => array_keys( $menus )[0],
					'save_default' => true,
					'separator' => 'after',
					'description' => sprintf(
						esc_html__( 'Go to the %1$sMenus screen%2$s to manage your menus.', 'elementor-pro' ),
						sprintf( '<a href="%s" target="_blank">', admin_url( 'nav-menus.php' ) ),
						'</a>'
					),
				]
			);
		} else {
			$this->add_control(
				'menu',
				[
					'type' => Controls_Manager::RAW_HTML,
					'raw' => '<strong>' . esc_html__( 'There are no menus in your site.', 'elementor-pro' ) . '</strong><br>' .
							sprintf(
								/* translators: 1: Link open tag, 2: Link closing tag. */
								esc_html__( 'Go to the %1$sMenus screen%2$s to create one.', 'elementor-pro' ),
								sprintf( '<a href="%s" target="_blank">', admin_url( 'nav-menus.php?action=edit&menu=0' ) ),
								'</a>'
							),
					'separator' => 'after',
					'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
				]
			);
		}

		$this->add_control(
			'layout',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'horizontal',
				'options' => [
					'horizontal' => esc_html__( 'Horizontal', 'elementor-pro' ),
					'vertical' => esc_html__( 'Vertical', 'elementor-pro' ),
					'dropdown' => esc_html__( 'Dropdown', 'elementor-pro' ),
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'align_items',
			[
				'label' => esc_html__( 'Align', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-h-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Stretch', 'elementor-pro' ),
						'icon' => 'eicon-h-align-stretch',
					],
				],
				'prefix_class' => 'elementor-nav-menu__align-',
				'condition' => [
					'layout!' => 'dropdown',
				],
			]
		);

		$this->add_control(
			'pointer',
			[
				'label' => esc_html__( 'Pointer', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'underline',
				'options' => [
					'none' => esc_html__( 'None', 'elementor-pro' ),
					'underline' => esc_html__( 'Underline', 'elementor-pro' ),
					'overline' => esc_html__( 'Overline', 'elementor-pro' ),
					'double-line' => esc_html__( 'Double Line', 'elementor-pro' ),
					'framed' => esc_html__( 'Framed', 'elementor-pro' ),
					'background' => esc_html__( 'Background', 'elementor-pro' ),
					'text' => esc_html__( 'Text', 'elementor-pro' ),
				],
				'style_transfer' => true,
				'condition' => [
					'layout!' => 'dropdown',
				],
			]
		);

		$this->add_control(
			'animation_line',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'fade',
				'options' => [
					'fade' => 'Fade',
					'slide' => 'Slide',
					'grow' => 'Grow',
					'drop-in' => 'Drop In',
					'drop-out' => 'Drop Out',
					'none' => 'None',
				],
				'condition' => [
					'layout!' => 'dropdown',
					'pointer' => [ 'underline', 'overline', 'double-line' ],
				],
			]
		);

		$this->add_control(
			'animation_framed',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'fade',
				'options' => [
					'fade' => 'Fade',
					'grow' => 'Grow',
					'shrink' => 'Shrink',
					'draw' => 'Draw',
					'corners' => 'Corners',
					'none' => 'None',
				],
				'condition' => [
					'layout!' => 'dropdown',
					'pointer' => 'framed',
				],
			]
		);

		$this->add_control(
			'animation_background',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'fade',
				'options' => [
					'fade' => 'Fade',
					'grow' => 'Grow',
					'shrink' => 'Shrink',
					'sweep-left' => 'Sweep Left',
					'sweep-right' => 'Sweep Right',
					'sweep-up' => 'Sweep Up',
					'sweep-down' => 'Sweep Down',
					'shutter-in-vertical' => 'Shutter In Vertical',
					'shutter-out-vertical' => 'Shutter Out Vertical',
					'shutter-in-horizontal' => 'Shutter In Horizontal',
					'shutter-out-horizontal' => 'Shutter Out Horizontal',
					'none' => 'None',
				],
				'condition' => [
					'layout!' => 'dropdown',
					'pointer' => 'background',
				],
			]
		);

		$this->add_control(
			'animation_text',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'grow',
				'options' => [
					'grow' => 'Grow',
					'shrink' => 'Shrink',
					'sink' => 'Sink',
					'float' => 'Float',
					'skew' => 'Skew',
					'rotate' => 'Rotate',
					'none' => 'None',
				],
				'condition' => [
					'layout!' => 'dropdown',
					'pointer' => 'text',
				],
			]
		);

		$icon_prefix = Icons_Manager::is_migration_allowed() ? 'fas ' : 'fa ';

		$this->add_control(
			'submenu_icon',
			[
				'label' => esc_html__( 'Submenu Indicator', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'separator' => 'before',
				'default' => [
					'value' => $icon_prefix . 'fa-caret-down',
					'library' => 'fa-solid',
				],
				'recommended' => [
					'fa-solid' => [
						'chevron-down',
						'angle-down',
						'caret-down',
						'plus',
					],
				],
				'label_block' => false,
				'skin' => 'inline',
				'exclude_inline_options' => [ 'svg' ],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'heading_mobile_dropdown',
			[
				'label' => esc_html__( 'Mobile Dropdown', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'layout!' => 'dropdown',
				],
			]
		);

		// TODO: For Pro 3.6.0, convert this to the breakpoints utility method introduced in core 3.5.0.
		$breakpoints = Plugin::elementor()->breakpoints->get_active_breakpoints();
		$dropdown_options = [];
		$excluded_breakpoints = [
			'laptop',
			'widescreen',
		];

		foreach ( $breakpoints as $breakpoint_key => $breakpoint_instance ) {
			// Do not include laptop and widscreen in the options since this feature is for mobile devices.
			if ( in_array( $breakpoint_key, $excluded_breakpoints, true ) ) {
				continue;
			}

			$dropdown_options[ $breakpoint_key ] = sprintf(
				/* translators: 1: Breakpoint label, 2: `>` character, 3: Breakpoint value */
				esc_html__( '%1$s (%2$s %3$dpx)', 'elementor-pro' ),
				$breakpoint_instance->get_label(),
				'>',
				$breakpoint_instance->get_value()
			);
		}

		$dropdown_options['none'] = esc_html__( 'None', 'elementor-pro' );

		$this->add_control(
			'dropdown',
			[
				'label' => esc_html__( 'Breakpoint', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'tablet',
				'options' => $dropdown_options,
				'prefix_class' => 'elementor-nav-menu--dropdown-',
				'condition' => [
					'layout!' => 'dropdown',
				],
			]
		);

		$this->add_control(
			'full_width',
			[
				'label' => esc_html__( 'Full Width', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'description' => esc_html__( 'Stretch the dropdown of the menu to full width.', 'elementor-pro' ),
				'prefix_class' => 'elementor-nav-menu--',
				'return_value' => 'stretch',
				'frontend_available' => true,
				'condition' => [
					'dropdown!' => 'none',
				],
			]
		);

		$this->add_control(
			'text_align',
			[
				'label' => esc_html__( 'Align', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'aside',
				'options' => [
					'aside' => esc_html__( 'Aside', 'elementor-pro' ),
					'center' => esc_html__( 'Center', 'elementor-pro' ),
				],
				'prefix_class' => 'elementor-nav-menu__text-align-',
				'condition' => [
					'dropdown!' => 'none',
				],
			]
		);

		$this->add_control(
			'toggle',
			[
				'label' => esc_html__( 'Toggle Button', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'burger',
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'burger' => esc_html__( 'Hamburger', 'elementor-pro' ),
				],
				'prefix_class' => 'elementor-nav-menu--toggle elementor-nav-menu--',
				'render_type' => 'template',
				'frontend_available' => true,
				'condition' => [
					'dropdown!' => 'none',
				],
			]
		);

		$this->add_control(
			'toggle_align',
			[
				'label' => esc_html__( 'Toggle Align', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'default' => 'center',
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-h-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'selectors_dictionary' => [
					'left' => 'margin-right: auto',
					'center' => 'margin: 0 auto',
					'right' => 'margin-left: auto',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-menu-toggle' => '{{VALUE}}',
				],
				'condition' => [
					'toggle!' => '',
					'dropdown!' => 'none',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_main-menu',
			[
				'label' => esc_html__( 'Main Menu', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'layout!' => 'dropdown',
				],

			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'menu_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-nav-menu .elementor-item',
			]
		);

		$this->start_controls_tabs( 'tabs_menu_item_style' );

		$this->start_controls_tab(
			'tab_menu_item_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'color_menu_item',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--main .elementor-item' => 'color: {{VALUE}}; fill: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_menu_item_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'color_menu_item_hover',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--main .elementor-item:hover,
					{{WRAPPER}} .elementor-nav-menu--main .elementor-item.elementor-item-active,
					{{WRAPPER}} .elementor-nav-menu--main .elementor-item.highlighted,
					{{WRAPPER}} .elementor-nav-menu--main .elementor-item:focus' => 'color: {{VALUE}}; fill: {{VALUE}};',
				],
				'condition' => [
					'pointer!' => 'background',
				],
			]
		);

		$this->add_control(
			'color_menu_item_hover_pointer_bg',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#fff',
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--main .elementor-item:hover,
					{{WRAPPER}} .elementor-nav-menu--main .elementor-item.elementor-item-active,
					{{WRAPPER}} .elementor-nav-menu--main .elementor-item.highlighted,
					{{WRAPPER}} .elementor-nav-menu--main .elementor-item:focus' => 'color: {{VALUE}}',
				],
				'condition' => [
					'pointer' => 'background',
				],
			]
		);

		$this->add_control(
			'pointer_color_menu_item_hover',
			[
				'label' => esc_html__( 'Pointer Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--main:not(.e--pointer-framed) .elementor-item:before,
					{{WRAPPER}} .elementor-nav-menu--main:not(.e--pointer-framed) .elementor-item:after' => 'background-color: {{VALUE}}',
					'{{WRAPPER}} .e--pointer-framed .elementor-item:before,
					{{WRAPPER}} .e--pointer-framed .elementor-item:after' => 'border-color: {{VALUE}}',
				],
				'condition' => [
					'pointer!' => [ 'none', 'text' ],
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_menu_item_active',
			[
				'label' => esc_html__( 'Active', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'color_menu_item_active',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--main .elementor-item.elementor-item-active' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'pointer_color_menu_item_active',
			[
				'label' => esc_html__( 'Pointer Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--main:not(.e--pointer-framed) .elementor-item.elementor-item-active:before,
					{{WRAPPER}} .elementor-nav-menu--main:not(.e--pointer-framed) .elementor-item.elementor-item-active:after' => 'background-color: {{VALUE}}',
					'{{WRAPPER}} .e--pointer-framed .elementor-item.elementor-item-active:before,
					{{WRAPPER}} .e--pointer-framed .elementor-item.elementor-item-active:after' => 'border-color: {{VALUE}}',
				],
				'condition' => [
					'pointer!' => [ 'none', 'text' ],
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$divider_condition = [
			'nav_menu_divider' => 'yes',
			'layout' => 'horizontal',
		];

		$this->add_control(
			'nav_menu_divider',
			[
				'label' => esc_html__( 'Divider', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'condition' => [
					'layout' => 'horizontal',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--e-nav-menu-divider-content: "";',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'nav_menu_divider_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'solid' => esc_html__( 'Solid', 'elementor-pro' ),
					'double' => esc_html__( 'Double', 'elementor-pro' ),
					'dotted' => esc_html__( 'Dotted', 'elementor-pro' ),
					'dashed' => esc_html__( 'Dashed', 'elementor-pro' ),
				],
				'default' => 'solid',
				'condition' => $divider_condition,
				'selectors' => [
					'{{WRAPPER}}' => '--e-nav-menu-divider-style: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'nav_menu_divider_weight',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 1,
						'max' => 20,
					],
				],
				'condition' => $divider_condition,
				'selectors' => [
					'{{WRAPPER}}' => '--e-nav-menu-divider-width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'nav_menu_divider_height',
			[
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ '%', 'px' ],
				'range' => [
					'px' => [
						'min' => 1,
						'max' => 100,
					],
					'%' => [
						'min' => 1,
						'max' => 100,
					],
				],
				'condition' => $divider_condition,
				'selectors' => [
					'{{WRAPPER}}' => '--e-nav-menu-divider-height: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'nav_menu_divider_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'condition' => $divider_condition,
				'selectors' => [
					'{{WRAPPER}}' => '--e-nav-menu-divider-color: {{VALUE}}',
				],
			]
		);

		/* This control is required to handle with complicated conditions */
		$this->add_control(
			'hr',
			[
				'type' => Controls_Manager::DIVIDER,
			]
		);

		$this->add_responsive_control(
			'pointer_width',
			[
				'label' => esc_html__( 'Pointer Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 30,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .e--pointer-framed .elementor-item:before' => 'border-width: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}} .e--pointer-framed.e--animation-draw .elementor-item:before' => 'border-width: 0 0 {{SIZE}}{{UNIT}} {{SIZE}}{{UNIT}}',
					'{{WRAPPER}} .e--pointer-framed.e--animation-draw .elementor-item:after' => 'border-width: {{SIZE}}{{UNIT}} {{SIZE}}{{UNIT}} 0 0',
					'{{WRAPPER}} .e--pointer-framed.e--animation-corners .elementor-item:before' => 'border-width: {{SIZE}}{{UNIT}} 0 0 {{SIZE}}{{UNIT}}',
					'{{WRAPPER}} .e--pointer-framed.e--animation-corners .elementor-item:after' => 'border-width: 0 {{SIZE}}{{UNIT}} {{SIZE}}{{UNIT}} 0',
					'{{WRAPPER}} .e--pointer-underline .elementor-item:after,
					 {{WRAPPER}} .e--pointer-overline .elementor-item:before,
					 {{WRAPPER}} .e--pointer-double-line .elementor-item:before,
					 {{WRAPPER}} .e--pointer-double-line .elementor-item:after' => 'height: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'pointer' => [ 'underline', 'overline', 'double-line', 'framed' ],
				],
			]
		);

		$this->add_responsive_control(
			'padding_horizontal_menu_item',
			[
				'label' => esc_html__( 'Horizontal Padding', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--main .elementor-item' => 'padding-left: {{SIZE}}{{UNIT}}; padding-right: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'padding_vertical_menu_item',
			[
				'label' => esc_html__( 'Vertical Padding', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--main .elementor-item' => 'padding-top: {{SIZE}}{{UNIT}}; padding-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'menu_space_between',
			[
				'label' => esc_html__( 'Space Between', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--e-nav-menu-horizontal-menu-item-margin: calc( {{SIZE}}{{UNIT}} / 2 );',
					'{{WRAPPER}} .elementor-nav-menu--main:not(.elementor-nav-menu--layout-horizontal) .elementor-nav-menu > li:not(:last-child)' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'border_radius_menu_item',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-item:before' => 'border-radius: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}} .e--animation-shutter-in-horizontal .elementor-item:before' => 'border-radius: {{SIZE}}{{UNIT}} {{SIZE}}{{UNIT}} 0 0',
					'{{WRAPPER}} .e--animation-shutter-in-horizontal .elementor-item:after' => 'border-radius: 0 0 {{SIZE}}{{UNIT}} {{SIZE}}{{UNIT}}',
					'{{WRAPPER}} .e--animation-shutter-in-vertical .elementor-item:before' => 'border-radius: 0 {{SIZE}}{{UNIT}} {{SIZE}}{{UNIT}} 0',
					'{{WRAPPER}} .e--animation-shutter-in-vertical .elementor-item:after' => 'border-radius: {{SIZE}}{{UNIT}} 0 0 {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'pointer' => 'background',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_dropdown',
			[
				'label' => esc_html__( 'Dropdown', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'dropdown_description',
			[
				'raw' => esc_html__( 'On desktop, this will affect the submenu. On mobile, this will affect the entire menu.', 'elementor-pro' ),
				'type' => Controls_Manager::RAW_HTML,
				'content_classes' => 'elementor-descriptor',
			]
		);

		$this->start_controls_tabs( 'tabs_dropdown_item_style' );

		$this->start_controls_tab(
			'tab_dropdown_item_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'color_dropdown_item',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--dropdown a, {{WRAPPER}} .elementor-menu-toggle' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'background_color_dropdown_item',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--dropdown' => 'background-color: {{VALUE}}',
				],
				'separator' => 'none',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_dropdown_item_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'color_dropdown_item_hover',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--dropdown a:hover,
					{{WRAPPER}} .elementor-nav-menu--dropdown a.elementor-item-active,
					{{WRAPPER}} .elementor-nav-menu--dropdown a.highlighted,
					{{WRAPPER}} .elementor-menu-toggle:hover' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'background_color_dropdown_item_hover',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--dropdown a:hover,
					{{WRAPPER}} .elementor-nav-menu--dropdown a.elementor-item-active,
					{{WRAPPER}} .elementor-nav-menu--dropdown a.highlighted' => 'background-color: {{VALUE}}',
				],
				'separator' => 'none',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_dropdown_item_active',
			[
				'label' => esc_html__( 'Active', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'color_dropdown_item_active',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--dropdown a.elementor-item-active' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'background_color_dropdown_item_active',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--dropdown a.elementor-item-active' => 'background-color: {{VALUE}}',
				],
				'separator' => 'none',
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'dropdown_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
				'exclude' => [ 'line_height' ],
				'selector' => '{{WRAPPER}} .elementor-nav-menu--dropdown .elementor-item, {{WRAPPER}} .elementor-nav-menu--dropdown  .elementor-sub-item',
				'separator' => 'before',
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'dropdown_border',
				'selector' => '{{WRAPPER}} .elementor-nav-menu--dropdown',
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'dropdown_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--dropdown' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
					'{{WRAPPER}} .elementor-nav-menu--dropdown li:first-child a' => 'border-top-left-radius: {{TOP}}{{UNIT}}; border-top-right-radius: {{RIGHT}}{{UNIT}};',
					'{{WRAPPER}} .elementor-nav-menu--dropdown li:last-child a' => 'border-bottom-right-radius: {{BOTTOM}}{{UNIT}}; border-bottom-left-radius: {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'dropdown_box_shadow',
				'exclude' => [
					'box_shadow_position',
				],
				'selector' => '{{WRAPPER}} .elementor-nav-menu--main .elementor-nav-menu--dropdown, {{WRAPPER}} .elementor-nav-menu__container.elementor-nav-menu--dropdown',
			]
		);

		$this->add_responsive_control(
			'padding_horizontal_dropdown_item',
			[
				'label' => esc_html__( 'Horizontal Padding', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--dropdown a' => 'padding-left: {{SIZE}}{{UNIT}}; padding-right: {{SIZE}}{{UNIT}}',
				],
				'separator' => 'before',

			]
		);

		$this->add_responsive_control(
			'padding_vertical_dropdown_item',
			[
				'label' => esc_html__( 'Vertical Padding', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--dropdown a' => 'padding-top: {{SIZE}}{{UNIT}}; padding-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'heading_dropdown_divider',
			[
				'label' => esc_html__( 'Divider', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'dropdown_divider',
				'selector' => '{{WRAPPER}} .elementor-nav-menu--dropdown li:not(:last-child)',
				'exclude' => [ 'width' ],
			]
		);

		$this->add_control(
			'dropdown_divider_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--dropdown li:not(:last-child)' => 'border-bottom-width: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'dropdown_divider_border!' => '',
				],
			]
		);

		$this->add_responsive_control(
			'dropdown_top_distance',
			[
				'label' => esc_html__( 'Distance', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => -100,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-nav-menu--main > .elementor-nav-menu > li > .elementor-nav-menu--dropdown, {{WRAPPER}} .elementor-nav-menu__container.elementor-nav-menu--dropdown' => 'margin-top: {{SIZE}}{{UNIT}} !important',
				],
				'separator' => 'before',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section( 'style_toggle',
			[
				'label' => esc_html__( 'Toggle Button', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'toggle!' => '',
					'dropdown!' => 'none',
				],
			]
		);

		$this->start_controls_tabs( 'tabs_toggle_style' );

		$this->start_controls_tab(
			'tab_toggle_style_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'toggle_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} div.elementor-menu-toggle' => 'color: {{VALUE}}', // Harder selector to override text color control
					'{{WRAPPER}} div.elementor-menu-toggle svg' => 'fill: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'toggle_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-menu-toggle' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_toggle_style_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'toggle_color_hover',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} div.elementor-menu-toggle:hover' => 'color: {{VALUE}}', // Harder selector to override text color control
				],
			]
		);

		$this->add_control(
			'toggle_background_color_hover',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-menu-toggle:hover' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_responsive_control(
			'toggle_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 15,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-menu-toggle' => 'font-size: {{SIZE}}{{UNIT}}',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'toggle_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 10,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-menu-toggle' => 'border-width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'toggle_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-menu-toggle' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section();
	}

	public function get_frontend_settings() {
		$frontend_settings = parent::get_frontend_settings();

		// If the saved value is FA4, but the user has upgraded to FA5, the value needs to be converted to FA5.
		if ( 'fa ' === substr( $frontend_settings['submenu_icon']['value'], 0, 3 ) && Icons_Manager::is_migration_allowed() ) {
			$frontend_settings['submenu_icon']['value'] = str_replace( 'fa ', 'fas ', $frontend_settings['submenu_icon']['value'] );
		}

		// Determine the submenu icon markup.
		if ( Plugin::elementor()->experiments->is_feature_active( 'e_font_icon_svg' ) ) {
			$icon_classes = [];

			if ( false !== strpos( $frontend_settings['submenu_icon']['value'], 'chevron-down' ) ) {
				$icon_classes['class'] = 'fa-svg-chevron-down';
			}

			$icon_content = Icons_Manager::render_font_icon( $frontend_settings['submenu_icon'], $icon_classes );
		} else {
			$icon_content = sprintf( '<i class="%s"></i>', $frontend_settings['submenu_icon']['value'] );
		}

		// Passing the entire icon markup to the frontend settings because it can be either <i> or <svg> tag.
		$frontend_settings['submenu_icon']['value'] = $icon_content;

		return $frontend_settings;
	}

	protected function render() {
		$available_menus = $this->get_available_menus();

		if ( ! $available_menus ) {
			return;
		}

		$settings = $this->get_active_settings();

		$args = [
			'echo' => false,
			'menu' => $settings['menu'],
			'menu_class' => 'elementor-nav-menu',
			'menu_id' => 'menu-' . $this->get_nav_menu_index() . '-' . $this->get_id(),
			'fallback_cb' => '__return_empty_string',
			'container' => '',
		];

		if ( 'vertical' === $settings['layout'] ) {
			$args['menu_class'] .= ' sm-vertical';
		}

		// Add custom filter to handle Nav Menu HTML output.
		add_filter( 'nav_menu_link_attributes', [ $this, 'handle_link_classes' ], 10, 4 );
		add_filter( 'nav_menu_link_attributes', [ $this, 'handle_link_tabindex' ], 10, 4 );
		add_filter( 'nav_menu_submenu_css_class', [ $this, 'handle_sub_menu_classes' ] );
		add_filter( 'nav_menu_item_id', '__return_empty_string' );

		// General Menu.
		$menu_html = wp_nav_menu( $args );

		// Dropdown Menu.
		$args['menu_id'] = 'menu-' . $this->get_nav_menu_index() . '-' . $this->get_id();
		$args['menu_type'] = 'dropdown';
		$dropdown_menu_html = wp_nav_menu( $args );

		// Remove all our custom filters.
		remove_filter( 'nav_menu_link_attributes', [ $this, 'handle_link_classes' ] );
		remove_filter( 'nav_menu_link_attributes', [ $this, 'handle_link_tabindex' ] );
		remove_filter( 'nav_menu_submenu_css_class', [ $this, 'handle_sub_menu_classes' ] );
		remove_filter( 'nav_menu_item_id', '__return_empty_string' );

		if ( empty( $menu_html ) ) {
			return;
		}

		$this->add_render_attribute( 'menu-toggle', [
			'class' => 'elementor-menu-toggle',
			'role' => 'button',
			'tabindex' => '0',
			'aria-label' => esc_html__( 'Menu Toggle', 'elementor-pro' ),
			'aria-expanded' => 'false',
		] );

		if ( Plugin::elementor()->editor->is_edit_mode() ) {
			$this->add_render_attribute( 'menu-toggle', [
				'class' => 'elementor-clickable',
			] );
		}

		$is_migrated = isset( $settings['__fa4_migrated']['submenu_icon'] );

		$this->add_render_attribute( 'main-menu', [
			'migration_allowed' => Icons_Manager::is_migration_allowed() ? '1' : '0',
			'migrated' => $is_migrated ? '1' : '0',
			// Accessibility
			'role' => 'navigation',
		] );

		if ( 'dropdown' !== $settings['layout'] ) :
			$this->add_render_attribute( 'main-menu', 'class', [
				'elementor-nav-menu--main',
				'elementor-nav-menu__container',
				'elementor-nav-menu--layout-' . $settings['layout'],
			] );

			if ( $settings['pointer'] ) :
				$this->add_render_attribute( 'main-menu', 'class', 'e--pointer-' . $settings['pointer'] );

				foreach ( $settings as $key => $value ) :
					if ( 0 === strpos( $key, 'animation' ) && $value ) :
						$this->add_render_attribute( 'main-menu', 'class', 'e--animation-' . $value );

						break;
					endif;
				endforeach;
			endif; ?>
			<nav <?php $this->print_render_attribute_string( 'main-menu' ); ?>>
				<?php
					// PHPCS - escaped by WordPress with "wp_nav_menu"
					echo $menu_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				?>
			</nav>
			<?php
		endif;
		?>
		<div <?php $this->print_render_attribute_string( 'menu-toggle' ); ?>>
			<?php
				Icons_Manager::render_icon(
					[
						'library' => 'eicons',
						'value' => 'eicon-menu-bar',
					],
					[
						'aria-hidden' => 'true',
						'role' => 'presentation',
						'class' => 'elementor-menu-toggle__icon--open',
					]
				);

				Icons_Manager::render_icon(
					[
						'library' => 'eicons',
						'value' => 'eicon-close',
					],
					[
						'aria-hidden' => 'true',
						'role' => 'presentation',
						'class' => 'elementor-menu-toggle__icon--close',
					]
				);
			?>
			<span class="elementor-screen-only"><?php echo esc_html__( 'Menu', 'elementor-pro' ); ?></span>
		</div>
			<nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" role="navigation" aria-hidden="true">
				<?php
					// PHPCS - escaped by WordPress with "wp_nav_menu"
					echo $dropdown_menu_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				?>
			</nav>
		<?php
	}

	public function handle_link_classes( $atts, $item, $args, $depth ) {
		$classes = $depth ? 'elementor-sub-item' : 'elementor-item';
		$is_anchor = false !== strpos( $atts['href'], '#' );

		if ( ! $is_anchor && in_array( 'current-menu-item', $item->classes ) ) {
			$classes .= ' elementor-item-active';
		}

		if ( $is_anchor ) {
			$classes .= ' elementor-item-anchor';
		}

		if ( empty( $atts['class'] ) ) {
			$atts['class'] = $classes;
		} else {
			$atts['class'] .= ' ' . $classes;
		}

		return $atts;
	}

	public function handle_link_tabindex( $atts, $item, $args ) {
		$settings = $this->get_active_settings();

		// Add `tabindex = -1` to the links if it's a dropdown, for A11y.
		$is_dropdown = 'dropdown' === $settings['layout'];
		$is_dropdown = $is_dropdown || ( isset( $args->menu_type ) && 'dropdown' === $args->menu_type );

		if ( $is_dropdown ) {
			$atts['tabindex'] = '-1';
		}

		return $atts;
	}

	public function handle_sub_menu_classes( $classes ) {
		$classes[] = 'elementor-nav-menu--dropdown';

		return $classes;
	}

	public function render_plain_content() {}
}
modules/custom-code/document.php000064400000004757150755004300013001 0ustar00<?php
namespace ElementorPro\Modules\CustomCode;

use ElementorPro\Modules\ThemeBuilder\Documents\Theme_Document;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Document extends Theme_Document {
	private static $applied_options = [];

	public static function get_properties() {
		$properties = parent::get_properties();
		$properties['cpt'] = [ Module::CPT ];

		$properties['admin_tab_group'] = '';
		$properties['show_in_library'] = false;
		$properties['support_site_editor'] = false;

		return $properties;
	}

	public static function get_title() {
		return esc_html__( 'Custom Code', 'elementor-pro' );
	}

	public function get_name() {
		return Module::DOCUMENT_TYPE;
	}

	public function print_content() {
		$content = get_post_meta( $this->post->ID, '_elementor_' . Custom_Code_Metabox::FIELD_CODE, true ) . PHP_EOL;
		$user_has_permission = current_user_can( Module::CAPABILITY );

		$this->apply_snippet_options( get_post_meta( $this->get_id(), '_elementor_' . Custom_Code_Metabox::FILED_EXTRA_OPTIONS, true ) );

		if ( $user_has_permission ) {
			$this->print_snippet_with_elementor_comment( $content );
		} else {
			// PHPCS - the main content of custom code
			echo $content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		}
	}

	private function print_snippet_with_elementor_comment( $content ) {
		echo implode( PHP_EOL, [
			'',
			'<!--',
			'Title: ' . esc_html( $this->post->post_title ),
			'Type: ' . Module::CPT, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			'Author: ' . esc_html( get_the_author_meta( 'display_name', $this->post->post_author ) ),
			'Last edited: ' . esc_html( $this->post->post_modified ),
			'--- The comment is visible only for administrators ---',
			'-->',
			'',
		] );

		// PHPCS - the main content of custom code
		echo $content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped

		echo PHP_EOL . '<!-- End of snippet -->' . PHP_EOL;
	}

	private function apply_snippet_options( $options ) {
		if ( ! is_array( $options ) || ! count( $options ) ) {
			return;
		}

		foreach ( $options as $option ) {
			if ( ! empty( self::$applied_options[ $option ] ) ) {
				continue;
			}

			switch ( $option ) {
				case Custom_Code_Metabox::INPUT_OPTION_ENSURE_JQUERY:
					wp_enqueue_script( 'jquery' );

					// Ensure jQuery will be first in order.
					if ( 'wp_footer' === current_filter() ) {
						wp_print_footer_scripts();
					}
					break;
			}

			self::$applied_options[ $option ] = true;
		}
	}
}
modules/custom-code/custom-code-metabox.php000064400000026520150755004300015032 0ustar00<?php
namespace ElementorPro\Modules\CustomCode;

use Elementor\Utils;
use ElementorPro\Modules\AssetsManager\Classes\Assets_Base;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Custom_Code_Metabox extends Assets_Base {
	const FIELD_LOCATION = 'location';
	const FIELD_PRIORITY = 'priority';
	const FILED_EXTRA_OPTIONS = 'extra_options';
	const FIELD_CODE = 'code';

	const OPTION_LOCATION_HEAD = 'elementor_head';
	const OPTION_LOCATION_BODY_START = 'elementor_body_start';
	const OPTION_LOCATION_BODY_END = 'elementor_body_end';

	const OPTION_PRIORITY_LENGTH = 10;

	const INPUT_OPTION_ENSURE_JQUERY = 'ensure_jquery';

	const INPUT_FIELDS = [
		self::FIELD_LOCATION,
		self::FIELD_PRIORITY,
		self::FIELD_CODE,
		self::FILED_EXTRA_OPTIONS,
	];

	const INPUT_OPTIONS = [
		self::INPUT_OPTION_ENSURE_JQUERY,
	];

	public function get_name() {
		return Module::MODULE_NAME;
	}

	public function get_type() {
		return Module::CPT;
	}

	public function get_field_label( $field ) {
		$label = parent::get_field_label( $field );

		if ( ! empty( $field['info'] ) ) {
			$label = '<p class="elementor-field-label"><i data-info="' . $field['info'] . '" class="eicon-info-circle"></i>' . $label . '</p>';
		}

		return $label;
	}

	public function get_location_labels() {
		return [
			self::OPTION_LOCATION_HEAD => esc_html__( 'Head', 'elementor-pro' ),
			self::OPTION_LOCATION_BODY_START => esc_html__( 'Body Start', 'elementor-pro' ),
			self::OPTION_LOCATION_BODY_END => esc_html__( 'Body End', 'elementor-pro' ),
		];
	}

	public function get_location_options() {
		return [
			self::OPTION_LOCATION_HEAD => '<head>',
			self::OPTION_LOCATION_BODY_START => sprintf(
			/* translators: %s: Body open tag. */
				esc_html__( '%s - Start', 'elementor-pro' ), '<body>'
			),
			self::OPTION_LOCATION_BODY_END => sprintf(
			/* translators: %s: Body end tag. */
				esc_html__( '%s - End', 'elementor-pro' ), '</body>'
			),
		];
	}

	public function get_priority_options() {
		$start = 1;
		$result = range( $start, self::OPTION_PRIORITY_LENGTH );

		$result = array_combine( $result, $result );

		return $result;
	}

	/**
	 * Add script integrity.
	 *
	 * This is method is public, since its has to remove its own filter.
	 *
	 * @param string $html
	 * @param mixed $handle
	 *
	 * @return string
	 */
	public function add_script_integrity( $html, $handle ) {
		if ( 'jshint' === $handle ) {
			$html = str_replace( '></script>', ' integrity="sha512-qcoitUjhkmNyPmbIOlUV/zd8MJvrVcKrNqnveMWS3C6MYOl5+HLwliRKUm/Ae/dfIok6+E54hjgVrAeS+sBAGA==" crossorigin="anonymous"></script>', $html );

			remove_filter( 'script_loader_tag', [ $this, 'add_script_integrity' ] );
		}

		return $html;
	}

	protected function actions() {
		add_action( 'add_meta_boxes_' . Module::CPT, function () {
			$this->add_meta_boxes();
		} );

		add_action( 'save_post_' . Module::CPT, function( $post_id, $post, $update ) {
			return $this->save_post_meta( $post_id, $post );
		}, 10, 3 );

		add_action('post_submitbox_misc_actions', function ( $post ) {
			$this->add_meta_publish_options( $post );
		} );
	}

	private function get_fields() {
		return [
			[
				'id' => 'open-div-meta-box',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'attributes' => [
					'class' => 'elementor-custom-code-meta-box',
				],
			],
			[
				'id' => 'open-div-panel',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'attributes' => [
					'class' => 'elementor-custom-code-panel',
				],
			],
			[
				'id' => 'open-div-placement',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'attributes' => [
					'class' => 'elementor-custom-code-panel-placement',
				],
			],
			[
				'id' => self::FIELD_LOCATION,
				'field_type' => 'select',
				'label' => esc_html__( 'Location', 'elementor-pro' ) . ':',
				'options' => $this->get_location_options(),
				'info' => esc_html__( 'Define where the Custom Code will appear', 'elementor-pro' ),
			],
			[
				'id' => 'open-div-placement',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'attributes' => [
					'class' => 'elementor-custom-code-options-placement',
				],
			],
			[
				'id' => self::FILED_EXTRA_OPTIONS,
				'field_type' => 'checkbox',
				'options' => [
					self::INPUT_OPTION_ENSURE_JQUERY => esc_html__( 'Always load jQuery', 'elementor-pro' ),
				],
				'info' => esc_html__( 'If your snippet includes jQuery, this will ensure it will work for all visitors. It may have a minor impact on loading speed.', 'elementor-pro' ),
			],
			[
				'id' => 'close-div-placement',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'close' => true,
			],
			[
				'id' => self::FIELD_PRIORITY,
				'field_type' => 'select',
				'label' => esc_html__( 'Priority', 'elementor-pro' ) . ':',
				'options' => $this->get_priority_options(),
				'info' => esc_html__( 'Define in which order the Custom Code will appear', 'elementor-pro' ),
			],
			[
				'id' => 'close-div-placement',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'close' => true,
			],
			[
				'id' => 'close-div-panel',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'close' => true,
			],
			[
				'id' => 'close-div-meta-box',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'close' => true,
			],
			[
				'id' => 'open-div-code-mirror-holder',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'attributes' => [
					'class' => 'elementor-custom-code-codemirror-holder',
				],
			],
			[
				'id' => 'open-div-code-mirror',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'attributes' => [
					'class' => 'elementor-custom-code-codemirror',
				],
			],
			[
				'id' => self::FIELD_CODE,
				'field_type' => 'textarea',
				'label' => '',
				'extra_attributes' => [
					'class' => 'hidden',
				],
			],
			[
				'id' => 'close-div-code-mirror',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'close' => true,
			],
			[
				'id' => 'close-div-code-mirror-holder',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'close' => true,
			],
		];
	}

	private function get_code_editor_settings() {
		// TODO: Handle `enqueue_code_editor_scripts` to work with `lint => 'true'`.
		return [
			'type' => 'text/html',
			'codemirror' => [
				'indentUnit' => 2,
				'tabSize' => 2,
				'gutters' => [ 'CodeMirror-lint-markers' ],
			],
		];
	}

	private function enqueue_code_editor_scripts( $field_code_id ) {
		// Add integrity attribute to jshint.
		add_filter( 'script_loader_tag', [ $this, 'add_script_integrity' ], 10, 2 );

		wp_enqueue_script( 'htmlhint' );
		wp_enqueue_script( 'csslint' );

		wp_deregister_script( 'jshint' );

		wp_enqueue_script( 'jshint',
			'https://cdnjs.cloudflare.com/ajax/libs/jshint/2.12.0/jshint.min.js',
			[],
			'2.12.0'
		);

		/**
		 * Some of the plugins may load 'code-editor' for their needs and change the default behavior, so it should
		 * re-initialize the code editor with 'custom code' settings.
		 */
		if ( wp_script_is( 'code-editor' ) ) {
			wp_add_inline_script( 'custom-code-metabox', sprintf( 'wp.codeEditor.initialize( jQuery( "#%s"), %s );', $field_code_id, wp_json_encode( wp_get_code_editor_settings( $this->get_code_editor_settings() ) ) ) );
		} else {
			wp_enqueue_code_editor( $this->get_code_editor_settings() );

			wp_add_inline_script( 'code-editor', sprintf( 'wp.codeEditor.initialize( jQuery( "#%s") );', $field_code_id ) );
		}
	}

	private function render_meta_box() {
		$fields = $this->get_fields();

		if ( ! empty( $_REQUEST['action'] ) && 'edit' == $_REQUEST['action'] ) {
			$post = get_post( $_REQUEST['post'] );

			foreach ( self::INPUT_FIELDS as $input_field ) {
				$field_meta = get_post_meta( $post->ID, "_elementor_$input_field", true );

				if ( ! empty( $field_meta ) ) {
					$key = array_search( $input_field, array_column( $fields, 'id' ) );
					if ( false !== $key ) {
						$fields[ $key ]['saved'] = $field_meta;
					}
				}
			}
		}

		// The method, support fields only.
		$this->print_metabox( $fields );

		// Render before enqueue, since enqueue depends on render handlers.
		do_action( 'elementor-pro/metabox/render', $this, get_the_ID() );

		// Init codemirror.
		$this->enqueue_code_editor_scripts( self::FIELD_CODE );
	}

	private function save_post_meta( $post_id, $post ) {
		if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
			return $post_id;
		}

		// Check the user's permissions.
		if ( ! current_user_can( 'edit_post', $post_id ) ) {
			return $post_id;
		}

		if ( get_post_status( $post->ID ) === 'auto-draft' ) {
			return $post_id;
		}

		// PHPCS - Should not validate for nonce (already done in WordPress save_post).
		$post_data = $_POST; // phpcs:ignore WordPress.Security.NonceVerification.Missing

		foreach ( self::INPUT_FIELDS as $field ) {
			if ( isset( $post_data[ $field ] ) && ! Utils::is_empty( $post_data[ $field ] ) ) {
				if ( self::FIELD_CODE === $field ) {
					$post_meta = $post_data[ $field ];
				} else {
					$post_meta = sanitize_text_field( $post_data[ $field ] );
				}

				if ( ! current_user_can( 'unfiltered_html' ) ) {
					$post_meta = wp_kses_post( $post_meta );
				}
				update_post_meta( $post->ID, "_elementor_$field", $post_meta );

				/** @var \ElementorPro\Modules\ThemeBuilder\Module $theme_builder */
				$theme_builder = Plugin::instance()->modules_manager->get_modules( 'theme-builder' );
				$theme_builder->get_conditions_manager()->get_cache()->regenerate();
			} elseif ( self::FILED_EXTRA_OPTIONS === $field ) {
				$input_options = [];

				foreach ( self::INPUT_OPTIONS as $input_option ) {
					$key = self::FILED_EXTRA_OPTIONS . '_' . $input_option;
					// PHP - The request is safe.
					$input_option_value = ! empty( $_POST[ $key ] ) ? $_POST[ $key ] : null; // phpcs:ignore WordPress.Security.NonceVerification.Missing

					if ( 'on' === $input_option_value ) {
						$input_options [] = $input_option;
					}
				}

				update_post_meta( $post->ID, "_elementor_$field", $input_options );
			}
		}

		// Temporary workaround for applying conditions for draft custom code post.
		if ( ! empty( $post_data['_conditions'] ) ) {
			$conditions = (array) json_decode( wp_unslash( $post_data['_conditions'] ) );

			foreach ( $conditions as $key => $item ) {
				$item_assoc_array = (array) $item;

				$conditions[ $key ] = [
					$item_assoc_array['type'],
					$item_assoc_array['name'],
					$item_assoc_array['sub'],
					$item_assoc_array['subId'],
				];
			}

			/** @var \ElementorPro\Modules\ThemeBuilder\Module $theme_builder */
			$theme_builder = Plugin::instance()->modules_manager->get_modules( 'theme-builder' );

			$theme_builder->get_conditions_manager()->save_conditions( $post_id, $conditions );
		}
	}

	private function add_meta_boxes() {
		add_meta_box(
			'elementor-custom-code',
			__( 'Custom code', 'elementor-pro' ),
			function() {
				$this->render_meta_box();
			},
			module::CPT,
			'normal',
			'default'
		);
	}

	private function add_meta_publish_options( $post ) {
		if ( Module::CPT === $post->post_type ) {
			?>
			<div class="misc-pub-section misc-pub-post-conditions">
				<i class="dashicons dashicons-networking" aria-hidden="true"></i>
				<?php echo esc_html__( 'Conditions:', 'elementor-pro' ); ?>
				<span class="post-conditions"></span>
			</div>
			<?php
		}
	}
}
modules/custom-code/module.php000064400000030672150755004300012443 0ustar00<?php
namespace ElementorPro\Modules\CustomCode;

use Elementor\Core\Documents_Manager;
use ElementorPro\Plugin;
use Elementor\Settings;
use Elementor\TemplateLibrary\Source_Local;
use Elementor\Utils;
use ElementorPro\Base\Module_Base;
use ElementorPro\Modules\ThemeBuilder\Classes\Conditions_Manager;
use ElementorPro\Modules\ThemeBuilder\Classes\Locations_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {
	const CAPABILITY = 'manage_options';
	const CPT = 'elementor_snippet';
	const MODULE_NAME = 'custom_code';
	const DOCUMENT_TYPE = 'code_snippet';

	const ADDITIONAL_COLUMN_INSTANCES = 'instances';

	/**
	 * @var \ElementorPro\Modules\CustomCode\Custom_Code_Metabox
	 */
	public $meta_box;

	public function __construct() {
		parent::__construct();

		$this->meta_box = new Custom_Code_Metabox();

		$this->actions();
		$this->register_custom_post_type();
		$this->register_metabox();
	}

	public function get_name() {
		return 'custom-code';
	}

	private function actions() {
		add_action( 'elementor/documents/register', function ( $documents_manager ) {
			return $this->register_documents( $documents_manager );
		} );

		add_action( 'elementor/theme/register_locations', function ( $location_manager ) {
			return $this->register_location( $location_manager );
		} );

		add_action( 'admin_menu', function () {
			return $this->add_admin_menu();
		}, /* After custom icons */  51 );

		add_action( 'current_screen', function () {
			if ( ! is_admin() ) {
				return;
			}

			$current_screen = get_current_screen();

			if ( 'edit-' . self::CPT === $current_screen->id ) {
				$this->admin_ui_actions();
			} elseif ( self::CPT === $current_screen->id ) {
				// Enqueue assets.
				add_action( 'admin_enqueue_scripts', function () {
					$this->enqueue_assets();
				}, 0 /* elementor-app-base styles should be loaded in early stages */ );
			}
		} );

		$this->frontend_actions();
	}

	private function admin_ui_actions() {
		// Show blank 'custom code' snippets list.
		add_action( 'manage_posts_extra_tablenav', function ( $which ) {
			return $this->maybe_render_blank_state( $which );
		} );

		// Mange post columns.
		add_filter( 'manage_posts_columns', function ( $columns ) {
			return $this->manage_posts_columns( $columns );
		} );

		add_action( 'manage_posts_custom_column', function ( $column_name, $post_id ) {
			return $this->manage_posts_custom_column( $column_name, $post_id );
		}, 10, 2 );
	}

	private function frontend_actions() {
		// Print snippets.
		add_action( 'wp_head', function () {
			$this->print_snippets( Custom_Code_Metabox::OPTION_LOCATION_HEAD );
		} );

		add_action( 'wp_body_open', function () {
			$this->print_snippets( Custom_Code_Metabox::OPTION_LOCATION_BODY_START );
		} );

		add_action( 'wp_footer', function () {
			$this->print_snippets( Custom_Code_Metabox::OPTION_LOCATION_BODY_END );
		}, 21 /* After 'wp_print_footer_scripts' */ );
	}

	private function register_custom_post_type() {
		$labels = [
			'name' => esc_html__( 'Custom Code', 'elementor-pro' ),
			'singular_name' => esc_html__( 'Custom Code', 'elementor-pro' ),
			'add_new' => esc_html__( 'Add new', 'elementor-pro' ),
			'add_new_item' => esc_html__( 'New code', 'elementor-pro' ),
			'edit_item' => esc_html__( 'Edit code', 'elementor-pro' ),
		];

		register_post_type( self::CPT, [
			'labels' => $labels,
			'public' => false,
			'rewrite' => false,
			'show_ui' => true,
			'show_in_menu' => false,
			'show_in_nav_menus' => false,
			'exclude_from_search' => true,
			'capability_type' => 'post',
			'hierarchical' => false,
			'supports' => [ 'title', 'author' ],
			'capabilities' => [
				'publish_posts' => 'manage_options',
				'edit_posts' => 'manage_options',
				'edit_others_posts' => 'manage_options',
				'delete_posts' => 'manage_options',
				'delete_others_posts' => 'manage_options',
				'read_private_posts' => 'manage_options',
				'edit_post' => 'manage_options',
				'delete_post' => 'manage_options',
				'read_post' => 'manage_options',
			],
		] );

		// Handling custom post type messages.
		add_filter( 'post_updated_messages', function( $messages ) {
			if ( self::CPT === get_post_type() ) {
				$post = get_post();

				// Thanks 'WooCommerce' for the example.
				$messages[ self::CPT ] = [
					'', // Not in use.
					__( 'Custom code updated.', 'elementor-pro' ),
					__( 'Custom field updated.', 'elementor-pro' ),
					__( 'Custom field deleted.', 'elementor-pro' ),
					__( 'Custom code updated.', 'elementor-pro' ),
					__( 'Revision restored.', 'elementor-pro' ),
					__( 'Custom code published.', 'elementor-pro' ),
					__( 'Custom code saved.', 'elementor-pro' ),
					__( 'Custom code submitted.', 'elementor-pro' ),
					sprintf(
						__( 'Custom code scheduled for: %1$s.', 'elementor-pro' ),
						'<strong>' . date_i18n( esc_html__( 'M j, Y @ G:i', 'elementor-pro' ), strtotime( $post->post_date ) ) . '</strong>'
					),
					__( 'Custom code draft updated.', 'elementor-pro' ),
				];
			}

			return $messages;
		} );

		add_filter( 'bulk_post_updated_messages', function ( $messages, $counters ) {
			$current_screen = get_current_screen();

			if ( $current_screen && self::CPT === $current_screen->post_type ) {
				$messages[ self::CPT ] = [
					'updated' => _n( '%s custom code updated.', '%s custom codes updated.', $counters['updated'], 'elementor-pro' ),
					'locked' => _n( '%s custom code cannot be not updated, someone else is editing it.', '%s custom codes cannot be not updated, someone else is editing them.', $counters['locked'], 'elementor-pro' ),
					'deleted' => _n( '%s custom code permanently deleted.', '%s custom codes permanently deleted.', $counters['deleted'], 'elementor-pro' ),
					'trashed' => _n( '%s custom code moved to trash.', '%s custom codes moved to trash.', $counters['trashed'], 'elementor-pro' ),
					'untrashed' => _n( '%s custom code restored.', '%s custom code restored.', $counters['untrashed'], 'elementor-pro' ),
				];
			}

			return $messages;
		}, 10, 12 );
	}

	/**
	 * Function register metabox.
	 *
	 * Add meta box for custom-code post.
	 */
	private function register_metabox() {
		if ( ! is_admin() ) {
			return;
		}
		// Remove 'author' meta_box from 'add-new.php', 'author' is required only in list ( enabled via 'supports' arg ).
		add_action( 'add_meta_boxes_' . self::CPT, function () {
			remove_meta_box( 'authordiv', self::CPT, 'normal' );
		} );
	}

	private function enqueue_assets() {
		wp_enqueue_style( 'elementor-app-base', $this->get_css_assets_url( 'app-base', null, 'default', true ), [
			'elementor-icons',
			'select2',
		], ELEMENTOR_VERSION );

		wp_register_style(
			'select2',
			$this->get_css_assets_url( 'e-select2', 'assets/lib/e-select2/css/' ),
			[],
			'4.0.6-rc.1'
		);

		wp_register_script(
			'select2',
			$this->get_js_assets_url( 'e-select2.full', 'assets/lib/e-select2/js/' ),
			[
				'jquery',
			],
			'4.0.6-rc.1',
			true
		);

		wp_register_style(
			'elementor-icons',
			$this->get_css_assets_url( 'elementor-icons', 'assets/lib/eicons/css/' ),
			[],
			'5.6.2'
		);

		wp_enqueue_script( 'react' );
		wp_enqueue_script( 'react-dom' );

		wp_enqueue_script(
			'elementor-app-packages',
			$this->get_js_assets_url( 'app-packages' ),
			[
				'wp-i18n',
				'react',
			],
			ELEMENTOR_VERSION,
			true
		);

		add_action( 'elementor-pro/metabox/render', function ( $metabox, $post_id ) {
			$min_suffix = Utils::is_script_debug() ? '' : '.min';

			wp_enqueue_script(
				'tipsy',
				ELEMENTOR_ASSETS_URL . 'lib/tipsy/tipsy' . $min_suffix . '.js',
				[
					'jquery',
				],
				'1.0.0',
				true
			);

			$direction_suffix = is_rtl() ? '-rtl' : '';
			wp_enqueue_style(
				'custom-code',
				ELEMENTOR_PRO_ASSETS_URL . 'css/modules/custom-code' . $direction_suffix . $min_suffix . '.css',
				[
					'elementor-app-base',
				],
				ELEMENTOR_PRO_VERSION
			);

			// Load 'admin.js` module JS entry.
			wp_enqueue_script(
				'custom-code-metabox',
				ELEMENTOR_PRO_ASSETS_URL . 'js/custom-code' . $min_suffix . '.js',
				[
					'react',
					'select2',
				],
				ELEMENTOR_PRO_VERSION
			);

			$post = [
				'ID' => $post_id,
				'post_status' => get_post_status( $post_id ),
			];

			wp_add_inline_script( 'custom-code-metabox', sprintf( 'elementorProAdmin.customCode.post = %s;', wp_json_encode( $post ) ) );
		}, 10, 2 );
	}

	private function add_admin_menu() {
		$menu_title = esc_html__( 'Custom Code', 'elementor-pro' );
		add_submenu_page(
			Settings::PAGE_ID,
			$menu_title,
			$menu_title,
			self::CAPABILITY,
			'edit.php?post_type=' . self::CPT
		);
	}

	private function register_documents( Documents_Manager $documents_manager ) {
		$documents_manager->register_document_type( self::DOCUMENT_TYPE, Document::get_class_full_name() );
	}

	private function register_location( Locations_Manager $location_manager ) {
		foreach ( array_keys( $this->meta_box->get_location_options() ) as $location ) {
			$location_manager->register_location( $location, [
				'multiple' => true,
				'public' => false,
				'edit_in_content' => false,
			] );
		}
	}

	private function maybe_render_blank_state( $which ) {
		$counts = (array) wp_count_posts( self::CPT );
		unset( $counts['auto-draft'] );

		if ( ! array_sum( $counts ) ) {
			/** @var Source_Local $source */
			$source = Plugin::elementor()->templates_manager->get_source( 'local' );

			$source->maybe_render_blank_state( $which, [
				'post_type' => self::DOCUMENT_TYPE,
				'cpt' => self::CPT,
				'description' => esc_html__( 'Add pixels, meta tags and any other scripts to your site.', 'elementor-pro' ) . sprintf( '<br><a target="_blank" href="https://go.elementor.com/wp-dash-custom-code">%s</a>', esc_html__( 'Learn more about adding custom code', 'elementor-pro' ) ),
				'href' => esc_url( admin_url( '/post-new.php?post_type=' . self::CPT ) ),
			] );
		}
	}

	private function manage_posts_columns( $columns ) {
		$new = [
			self::ADDITIONAL_COLUMN_INSTANCES => esc_html__( 'Instances', 'elementor-pro' ),
			Custom_Code_Metabox::FIELD_LOCATION => esc_html__( 'Location', 'elementor-pro' ),
			Custom_Code_Metabox::FIELD_PRIORITY => esc_html__( 'Priority', 'elementor-pro' ),
		];

		// Insert after 'author'.
		$keys = array_keys( $columns );
		$pos = array_search( 'author', $keys ) + 1;
		$columns = array_merge( array_slice( $columns, 0, $pos ), $new, array_slice( $columns, $pos ) );

		return $columns;
	}

	private function manage_posts_custom_column( $column_name, $post_id ) {
		if ( in_array( $column_name, Custom_Code_Metabox::INPUT_FIELDS ) ) {
			$value = get_post_meta( $post_id, '_elementor_' . $column_name, true );

			if ( Custom_Code_Metabox::FIELD_LOCATION === $column_name ) {
				$location_labels = $this->meta_box->get_location_labels();

				if ( isset( $location_labels[ $value ] ) ) {
					$value = $location_labels[ $value ];
				}
			}

			echo esc_html( $value );
		} else if ( self::ADDITIONAL_COLUMN_INSTANCES === $column_name ) {
			/** @var Conditions_Manager $conditions_manager */
			$conditions_manager = Plugin::instance()->modules_manager->get_modules( 'theme-builder' )->get_conditions_manager();

			echo esc_html( implode( ', ', $conditions_manager->get_document_instances( $post_id ) ) );
		}
	}

	private function get_snippets_by_location( $location ) {
		return get_posts( [
			'numberposts' => -1,
			'post_type' => self::CPT,
			'meta_query' => [
				[
					'key' => '_elementor_' . Custom_Code_Metabox::FIELD_LOCATION,
					'value' => $location,
				],
			],
			// Order.
			'order' => 'ASC',
			'orderby' => 'meta_value_num',
			'meta_key' => '_elementor_' . Custom_Code_Metabox::FIELD_PRIORITY,
		] );
	}

	private function print_snippets( $location ) {
		// Do not print snippets on safe mode.
		if ( isset( $_REQUEST['elementor-mode'] ) && 'safe' === $_REQUEST['elementor-mode'] ) {
			return;
		}

		$snippets = $this->get_snippets_by_location( $location );

		/** @var \ElementorPro\Modules\ThemeBuilder\Module $theme_builder */
		$theme_builder = Plugin::instance()->modules_manager->get_modules( 'theme-builder' );
		$documents_by_conditions = $theme_builder->get_conditions_manager()->get_documents_for_location( $location );
		$location_manager = $theme_builder->get_locations_manager();

		foreach ( $snippets as $snippet ) {
			// Add snippet to location.
			// Also handling situation without conditions, bind current snippet id with current location.
			if ( isset( $documents_by_conditions[ $snippet->ID ] ) || ! get_post_meta( $snippet->ID, '_elementor_conditions', true ) ) {
				$location_manager->add_doc_to_location( $location, $snippet->ID );
			}
		}

		elementor_theme_do_location( $location );
	}
}
modules/social/module.php000064400000001334150755004300011464 0ustar00<?php
namespace ElementorPro\Modules\Social;

use ElementorPro\Base\Module_Base;
use ElementorPro\Modules\Social\Classes\Facebook_SDK_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {
	const URL_TYPE_CURRENT_PAGE = 'current_page';
	const URL_TYPE_CUSTOM = 'custom';
	const URL_FORMAT_PLAIN = 'plain';
	const URL_FORMAT_PRETTY = 'pretty';

	public function get_widgets() {
		return [
			'Facebook_Button',
			'Facebook_Comments',
			'Facebook_Embed',
			'Facebook_Page',
		];
	}

	public function get_name() {
		return 'social';
	}

	public function __construct() {
		parent::__construct();

		$this->add_component( 'facebook_sdk', new Facebook_SDK_Manager() );
	}
}
modules/social/classes/facebook-sdk-manager.php000064400000012254150755004300015577 0ustar00<?php
namespace ElementorPro\Modules\Social\Classes;

use Elementor\Controls_Manager;
use Elementor\Settings;
use Elementor\Widget_Base;
use ElementorPro\Modules\Social\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Integration with Facebook SDK
 */
class Facebook_SDK_Manager {

	const OPTION_NAME_APP_ID = 'elementor_pro_facebook_app_id';

	public static function get_app_id() {
		return get_option( self::OPTION_NAME_APP_ID, '' );
	}

	public static function get_lang() {
		return get_locale();
	}

	public static function enqueue_meta_app_id() {
		$app_id = self::get_app_id();
		if ( $app_id ) {
			printf( '<meta property="fb:app_id" content="%s" />', esc_attr( $app_id ) );
		}
	}

	/**
	 * @param Widget_Base $widget
	 */
	public static function add_app_id_control( $widget ) {
		if ( ! self::get_app_id() ) {
			/* translators: 1: Setting Page link open tag, 2: Link closing tag. */
			$html = sprintf(
				esc_html__( 'Set your Facebook App ID in the %1$sIntegrations Settings%2$s', 'elementor-pro' ),
				sprintf( '<a href="%s" target="_blank">', Settings::get_url() . '#tab-integrations' ),
				'</a>'
			);
			$content_classes = 'elementor-panel-alert elementor-panel-alert-warning';
		} else {
			/* translators: 1: App ID, 2: Setting Page link open tag, 3: Link closing tag. */
			$html = sprintf(
				esc_html__( 'You are connected to Facebook App %1$s, %2$sChange App%3$s', 'elementor-pro' ),
				self::get_app_id(),
				sprintf( '<a href="%s" target="_blank">', Settings::get_url() . '#tab-integrations' ),
				'</a>'
			);
			$content_classes = 'elementor-panel-alert elementor-panel-alert-info';
		}

		$widget->add_control(
			'app_id',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => $html,
				'content_classes' => $content_classes,
			]
		);
	}

	public function localize_settings( $settings ) {
		$settings['facebook_sdk'] = [
			'lang' => self::get_lang(),
			'app_id' => self::get_app_id(),
		];

		return $settings;
	}

	public function __construct() {
		add_action( 'wp_head', [ __CLASS__, 'enqueue_meta_app_id' ] );
		add_filter( 'elementor_pro/frontend/localize_settings', [ $this, 'localize_settings' ] );

		// The nonce already validated on the options page,
		if ( ! empty( $_POST['option_page'] ) && 'elementor' === $_POST['option_page'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
			$this->validate_sdk();
		}

		if ( is_admin() ) {
			add_action( 'elementor/admin/after_create_settings/' . Settings::PAGE_ID, [ $this, 'register_admin_fields' ] );
		}
	}

	public static function get_permalink( $settings = [] ) {
		$post_id = get_the_ID();

		if ( isset( $settings['url_format'] ) && Module::URL_FORMAT_PRETTY === $settings['url_format'] ) {
			return get_permalink( $post_id );
		}

		// Use plain url to avoid losing comments after change the permalink.
		return add_query_arg( 'p', $post_id, home_url() );
	}

	public function register_admin_fields( Settings $settings ) {
		$settings->add_section( Settings::TAB_INTEGRATIONS, 'facebook_sdk', [
			'callback' => function() {
				echo '<hr><h2>' . esc_html__( 'Facebook SDK', 'elementor-pro' ) . '</h2>';

				echo sprintf(
					/* translators: 1: Link open tag, 2: Link closing tag. */
					esc_html__( 'Facebook SDK lets you connect to your %1$sdedicated application%2$s so you can track the Facebook Widgets analytics on your site.', 'elementor-pro' ),
					'<a href="https://developers.facebook.com/docs/apps/register/" target="_blank">',
					'</a>'
				);
				echo '<br><br>';

				echo esc_html__( 'If you are using the Facebook Comments Widget, you can add moderating options through your application. Note that this option will not work on local sites and on domains that don\'t have public access.', 'elementor-pro' );
			},
			'fields' => [
				'pro_facebook_app_id' => [
					'label' => esc_html__( 'App ID', 'elementor-pro' ),
					'field_args' => [
						'type' => 'text',
						/* translators: 1: Link open tag, 2: Link closing tag. */
						'desc' => sprintf(
							esc_html__( 'Remember to add the domain to your %1$sApp Domains%2$s', 'elementor-pro' ),
							sprintf( '<a href="%s" target="_blank">', $this->get_app_settings_url() ),
							'</a>'
						),
					],
				],
			],
		] );
	}

	private function get_app_settings_url() {
		$app_id = self::get_app_id();
		if ( $app_id ) {
			return sprintf( 'https://developers.facebook.com/apps/%d/settings/', $app_id );
		} else {
			return 'https://developers.facebook.com/apps/';
		}
	}

	private function validate_sdk() {
		$errors = [];

		if ( ! empty( $_POST['elementor_pro_facebook_app_id'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
			$response = wp_remote_get( 'https://graph.facebook.com/' . $_POST['elementor_pro_facebook_app_id'] ); // phpcs:ignore WordPress.Security.NonceVerification.Missing

			if ( is_wp_error( $response ) || 200 !== (int) wp_remote_retrieve_response_code( $response ) ) {
				$errors[] = esc_html__( 'Facebook App ID is not valid', 'elementor-pro' );
			}
		}

		$message = implode( '<br>', $errors );

		if ( ! empty( $errors ) ) {
			wp_die( $message, esc_html__( 'Facebook SDK', 'elementor-pro' ), [ 'back_link' => true ] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		}
	}
}
modules/social/widgets/facebook-embed.php000064400000013725150755004300014477 0ustar00<?php
namespace ElementorPro\Modules\Social\Widgets;

use Elementor\Controls_Manager;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Modules\Social\Classes\Facebook_SDK_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Facebook_Embed extends Base_Widget {

	public function get_name() {
		return 'facebook-embed';
	}

	public function get_title() {
		return esc_html__( 'Facebook Embed', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-fb-embed';
	}

	public function get_categories() {
		return [ 'pro-elements' ];
	}

	public function get_keywords() {
		return [ 'facebook', 'social', 'embed', 'video', 'post', 'comment' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_content',
			[
				'label' => esc_html__( 'Embed', 'elementor-pro' ),
			]
		);

		Facebook_SDK_Manager::add_app_id_control( $this );

		$this->add_control(
			'type',
			[
				'label' => esc_html__( 'Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'post',
				'options' => [
					'post' => esc_html__( 'Post', 'elementor-pro' ),
					'video' => esc_html__( 'Video', 'elementor-pro' ),
					'comment' => esc_html__( 'Comment', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'post_url',
			[
				'label' => esc_html__( 'URL', 'elementor-pro' ),
				'default' => 'https://www.facebook.com/elemntor/posts/2624214124556197',
				'dynamic' => [
					'active' => true,
				],
				'label_block' => true,
				'condition' => [
					'type' => 'post',
				],
				'description' => esc_html__( 'Hover over the date next to the post, and copy its link address.', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'video_url',
			[
				'label' => esc_html__( 'URL', 'elementor-pro' ),
				'default' => 'https://www.facebook.com/elemntor/videos/1683988961912056/',
				'dynamic' => [
					'active' => true,
				],
				'label_block' => true,
				'condition' => [
					'type' => 'video',
				],
				'description' => esc_html__( 'Hover over the date next to the video, and copy its link address.', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'comment_url',
			[
				'label' => esc_html__( 'URL', 'elementor-pro' ),
				'default' => 'https://www.facebook.com/elemntor/videos/1811703749140576/?comment_id=1812873919023559',
				'dynamic' => [
					'active' => true,
				],
				'label_block' => true,
				'condition' => [
					'type' => 'comment',
				],
				'description' => esc_html__( 'Hover over the date next to the comment, and copy its link address.', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'include_parent',
			[
				'label' => esc_html__( 'Parent Comment', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'description' => esc_html__( 'Set to include parent comment (if URL is a reply).', 'elementor-pro' ),
				'condition' => [
					'type' => 'comment',
				],
			]
		);

		$this->add_control(
			'show_text',
			[
				'label' => esc_html__( 'Full Post', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'description' => esc_html__( 'Show the full text of the post', 'elementor-pro' ),
				'condition' => [
					'type' => [ 'post', 'video' ],
				],
			]
		);

		$this->add_control(
			'video_allowfullscreen',
			[
				'label' => esc_html__( 'Allow Full Screen', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'condition' => [
					'type' => 'video',
				],
			]
		);

		$this->add_control(
			'video_autoplay',
			[
				'label' => esc_html__( 'Autoplay', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'condition' => [
					'type' => 'video',
				],
			]
		);

		$this->add_control(
			'video_show_captions',
			[
				'label' => esc_html__( 'Captions', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'description' => esc_html__( 'Show captions if available (only on desktop).', 'elementor-pro' ),
				'condition' => [
					'type' => 'video',
				],
			]
		);
	}

	public function render() {
		$settings = $this->get_settings_for_display();

		if ( empty( $settings['type'] ) ) {
			esc_html_e( 'Please set the embed type', 'elementor-pro' );

			return;
		}

		if ( 'comment' === $settings['type'] && empty( $settings['comment_url'] ) || 'post' === $settings['type'] && empty( $settings['post_url'] ) || 'video' === $settings['type'] && empty( $settings['video_url'] ) ) {
			esc_html_e( 'Please enter a valid URL', 'elementor-pro' );

			return;
		}

		$attributes = [
			// The style prevent's the `widget.handleEmptyWidget` to set it as an empty widget
			'style' => 'min-height: 1px',
		];

		switch ( $settings['type'] ) {
			case 'comment':
				$attributes['class'] = 'elementor-facebook-widget fb-comment-embed';
				$attributes['data-href'] = esc_url( $settings['comment_url'] );
				$attributes['data-include-parent'] = 'yes' === $settings['include_parent'] ? 'true' : 'false';
				break;
			case 'post':
				$attributes['class'] = 'elementor-facebook-widget fb-post';
				$attributes['data-href'] = esc_url( $settings['post_url'] );
				$attributes['data-show-text'] = 'yes' === $settings['show_text'] ? 'true' : 'false';
				break;
			case 'video':
				$attributes['class'] = 'elementor-facebook-widget fb-video';
				$attributes['data-href'] = esc_url( $settings['video_url'] );
				$attributes['data-show-text'] = 'yes' === $settings['show_text'] ? 'true' : 'false';
				$attributes['data-allowfullscreen'] = 'yes' === $settings['video_allowfullscreen'] ? 'true' : 'false';
				$attributes['data-autoplay'] = 'yes' === $settings['video_autoplay'] ? 'true' : 'false';
				$attributes['data-show-captions'] = 'yes' === $settings['video_show_captions'] ? 'true' : 'false';
				break;
		}

		$this->add_render_attribute( 'embed_div', $attributes );

		echo '<div ' . $this->get_render_attribute_string( 'embed_div' ) . '></div>'; // XSS ok.
	}

	public function render_plain_content() {}

	public function get_group_name() {
		return 'social';
	}
}
modules/social/widgets/facebook-comments.php000064400000007461150755004300015250 0ustar00<?php
namespace ElementorPro\Modules\Social\Widgets;

use Elementor\Controls_Manager;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Modules\Social\Classes\Facebook_SDK_Manager;
use ElementorPro\Modules\Social\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Facebook_Comments extends Base_Widget {

	public function get_name() {
		return 'facebook-comments';
	}

	public function get_title() {
		return esc_html__( 'Facebook Comments', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-facebook-comments';
	}

	public function get_keywords() {
		return [ 'facebook', 'comments', 'embed' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_content',
			[
				'label' => esc_html__( 'Comments Box', 'elementor-pro' ),
			]
		);

		Facebook_SDK_Manager::add_app_id_control( $this );

		$this->add_control(
			'comments_number',
			[
				'label' => esc_html__( 'Comment Count', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'min' => 5,
				'max' => 100,
				'default' => '10',
				'description' => esc_html__( 'Minimum number of comments: 5', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'order_by',
			[
				'label' => esc_html__( 'Order By', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'social',
				'options' => [
					'social' => esc_html__( 'Social', 'elementor-pro' ),
					'reverse_time' => esc_html__( 'Reverse Time', 'elementor-pro' ),
					'time' => esc_html__( 'Time', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'url_type',
			[
				'label' => esc_html__( 'Target URL', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					Module::URL_TYPE_CURRENT_PAGE => esc_html__( 'Current Page', 'elementor-pro' ),
					Module::URL_TYPE_CUSTOM => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'default' => Module::URL_TYPE_CURRENT_PAGE,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'url_format',
			[
				'label' => esc_html__( 'URL Format', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					Module::URL_FORMAT_PLAIN => esc_html__( 'Plain Permalink', 'elementor-pro' ),
					Module::URL_FORMAT_PRETTY => esc_html__( 'Pretty Permalink', 'elementor-pro' ),
				],
				'default' => Module::URL_FORMAT_PLAIN,
				'condition' => [
					'url_type' => Module::URL_TYPE_CURRENT_PAGE,
				],
			]
		);

		$this->add_control(
			'url',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
				'label_block' => true,
				'condition' => [
					'url_type' => Module::URL_TYPE_CUSTOM,
				],
			]
		);

		$this->end_controls_section();
	}

	public function render() {
		$settings = $this->get_settings();

		if ( Module::URL_TYPE_CURRENT_PAGE === $settings['url_type'] ) {
			$permalink = Facebook_SDK_Manager::get_permalink( $settings );
		} else {
			if ( ! filter_var( $settings['url'], FILTER_VALIDATE_URL ) ) {
				echo $this->get_title() . ': ' . esc_html__( 'Please enter a valid URL', 'elementor-pro' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped

				return;
			}

			$permalink = esc_url( $settings['url'] );
		}

		$attributes = [
			'class' => 'elementor-facebook-widget fb-comments',
			'data-href' => $permalink,
			'data-width' => '100%',
			'data-numposts' => $settings['comments_number'],
			'data-order-by' => $settings['order_by'],
			// The style prevent's the `widget.handleEmptyWidget` to set it as an empty widget
			'style' => 'min-height: 1px',
		];

		$this->add_render_attribute( 'embed_div', $attributes );
		?>
		<div <?php $this->print_render_attribute_string( 'embed_div' ); ?>></div>
		<?php
	}

	public function render_plain_content() {}

	public function get_group_name() {
		return 'social';
	}
}
modules/social/widgets/facebook-page.php000064400000007624150755004300014340 0ustar00<?php
namespace ElementorPro\Modules\Social\Widgets;

use Elementor\Controls_Manager;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Modules\Social\Classes\Facebook_SDK_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Facebook_Page extends Base_Widget {

	public function get_name() {
		return 'facebook-page';
	}

	public function get_title() {
		return esc_html__( 'Facebook Page', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-fb-feed';
	}

	public function get_keywords() {
		return [ 'facebook', 'social', 'embed', 'page' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_content',
			[
				'label' => esc_html__( 'Page', 'elementor-pro' ),
			]
		);

		Facebook_SDK_Manager::add_app_id_control( $this );

		$this->add_control(
			'url',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'placeholder' => 'https://www.facebook.com/your-page/',
				'default' => 'https://www.facebook.com/elemntor/',
				'label_block' => true,
				'description' => esc_html__( 'Paste the URL of the Facebook page.', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'tabs',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'multiple' => true,
				'label_block' => true,
				'default' => [
					'timeline',
				],
				'options' => [
					'timeline' => esc_html__( 'Timeline', 'elementor-pro' ),
					'events' => esc_html__( 'Events', 'elementor-pro' ),
					'messages' => esc_html__( 'Messages', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'small_header',
			[
				'label' => esc_html__( 'Small Header', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
			]
		);

		$this->add_control(
			'show_cover',
			[
				'label' => esc_html__( 'Cover Photo', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
			]
		);

		$this->add_control(
			'show_facepile',
			[
				'label' => esc_html__( 'Profile Photos', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
			]
		);

		$this->add_control(
			'show_cta',
			[
				'label' => esc_html__( 'Custom CTA Button', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
			]
		);

		$this->add_control(
			'height',
			[
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'unit' => 'px',
					'size' => 500,
				],
				'range' => [
					'px' => [
						'min' => 70,
						'max' => 1000,
					],
				],
				'size_units' => [ 'px' ],
			]
		);

		$this->end_controls_section();
	}

	public function render() {
		$settings = $this->get_settings();

		if ( empty( $settings['url'] ) ) {
			echo $this->get_title() . ': ' . esc_html__( 'Please enter a valid URL', 'elementor-pro' ); // XSS ok.

			return;
		}

		$height = $settings['height']['size'] . $settings['height']['unit'];

		$attributes = [
			'class' => 'elementor-facebook-widget fb-page',
			'data-href' => $settings['url'],
			'data-tabs' => implode( ',', $settings['tabs'] ),
			'data-height' => $height,
			'data-width' => '500px', // Try the max possible width
			'data-small-header' => $settings['small_header'] ? 'true' : 'false',
			'data-hide-cover' => $settings['show_cover'] ? 'false' : 'true', // if `show` - don't hide.
			'data-show-facepile' => $settings['show_facepile'] ? 'true' : 'false',
			'data-hide-cta' => $settings['show_cta'] ? 'false' : 'true', // if `show` - don't hide.
			// The style prevent's the `widget.handleEmptyWidget` to set it as an empty widget.
			'style' => 'min-height: 1px;height:' . $height,
		];

		$this->add_render_attribute( 'embed_div', $attributes );

		echo '<div ' . $this->get_render_attribute_string( 'embed_div' ) . '></div>'; // XSS ok.
	}

	public function render_plain_content() {}

	public function get_group_name() {
		return 'social';
	}
}
modules/social/widgets/facebook-button.php000064400000012735150755004300014736 0ustar00<?php
namespace ElementorPro\Modules\Social\Widgets;

use Elementor\Controls_Manager;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Modules\Social\Classes\Facebook_SDK_Manager;
use ElementorPro\Modules\Social\Module;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Facebook_Button extends Base_Widget {

	public function get_name() {
		return 'facebook-button';
	}

	public function get_title() {
		return esc_html__( 'Facebook Button', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-facebook-like-box';
	}

	public function get_keywords() {
		return [ 'facebook', 'social', 'embed', 'button', 'like', 'share', 'recommend', 'follow' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_content',
			[
				'label' => esc_html__( 'Button', 'elementor-pro' ),
			]
		);

		Facebook_SDK_Manager::add_app_id_control( $this );

		$this->add_control(
			'type',
			[
				'label' => esc_html__( 'Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'like',
				'options' => [
					'like' => esc_html__( 'Like', 'elementor-pro' ),
					'recommend' => esc_html__( 'Recommend', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'layout',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'standard',
				'options' => [
					'standard' => esc_html__( 'Standard', 'elementor-pro' ),
					'button' => esc_html__( 'Button', 'elementor-pro' ),
					'button_count' => esc_html__( 'Button Count', 'elementor-pro' ),
					'box_count' => esc_html__( 'Box Count', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'small',
				'options' => [
					'small' => esc_html__( 'Small', 'elementor-pro' ),
					'large' => esc_html__( 'Large', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'color_scheme',
			[
				'label' => esc_html__( 'Color Scheme', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'light',
				'options' => [
					'light' => esc_html__( 'Light', 'elementor-pro' ),
					'dark' => esc_html__( 'Dark', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'show_share',
			[
				'label' => esc_html__( 'Share Button', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'condition' => [
					'type!' => 'follow',
				],
			]
		);

		$this->add_control(
			'show_faces',
			[
				'label' => esc_html__( 'Faces', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
			]
		);

		$this->add_control(
			'url_type',
			[
				'label' => esc_html__( 'Target URL', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					Module::URL_TYPE_CURRENT_PAGE => esc_html__( 'Current Page', 'elementor-pro' ),
					Module::URL_TYPE_CUSTOM => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'default' => Module::URL_TYPE_CURRENT_PAGE,
				'separator' => 'before',
				'condition' => [
					'type' => [ 'like', 'recommend' ],
				],
			]
		);

		$this->add_control(
			'url_format',
			[
				'label' => esc_html__( 'URL Format', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					Module::URL_FORMAT_PLAIN => esc_html__( 'Plain Permalink', 'elementor-pro' ),
					Module::URL_FORMAT_PRETTY => esc_html__( 'Pretty Permalink', 'elementor-pro' ),
				],
				'default' => Module::URL_FORMAT_PLAIN,
				'condition' => [
					'url_type' => Module::URL_TYPE_CURRENT_PAGE,
				],
			]
		);

		$this->add_control(
			'url',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
				'label_block' => true,
				'condition' => [
					'type' => [ 'like', 'recommend' ],
					'url_type' => Module::URL_TYPE_CUSTOM,
				],
			]
		);

		$this->end_controls_section();
	}

	public function render() {
		$settings = $this->get_settings();

		// Validate URL
		switch ( $settings['type'] ) {
			case 'like':
			case 'recommend':
				if ( Module::URL_TYPE_CUSTOM === $settings['url_type'] && ! filter_var( $settings['url'], FILTER_VALIDATE_URL ) ) {
					if ( Plugin::elementor()->editor->is_edit_mode() ) {
						echo $this->get_title() . ': ' . esc_html__( 'Please enter a valid URL', 'elementor-pro' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
					}

					return;
				}
				break;
		}

		$attributes = [
			'data-layout' => $settings['layout'],
			'data-colorscheme' => $settings['color_scheme'],
			'data-size' => $settings['size'],
			'data-show-faces' => $settings['show_faces'] ? 'true' : 'false',
		];

		switch ( $settings['type'] ) {
			case 'like':
			case 'recommend':
				if ( Module::URL_TYPE_CURRENT_PAGE === $settings['url_type'] ) {
					$permalink = Facebook_SDK_Manager::get_permalink( $settings );
				} else {
					$permalink = esc_url( $settings['url'] );
				}

				$attributes['class'] = 'elementor-facebook-widget fb-like';
				$attributes['data-href'] = $permalink;
				$attributes['data-share'] = $settings['show_share'] ? 'true' : 'false';
				$attributes['data-action'] = $settings['type'];
				break;
		}

		$this->add_render_attribute( 'embed_div', $attributes );
		?>
		<div <?php $this->print_render_attribute_string( 'embed_div' ); ?>></div>
		<?php
	}

	public function render_plain_content() {}

	public function get_group_name() {
		return 'social';
	}
}
modules/payments/classes/payment-button.php000064400000035741150755004300015221 0ustar00<?php
namespace ElementorPro\Modules\Payments\Classes;

use Elementor\Utils;
use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;
use Elementor\Modules\DynamicTags\Module as TagsModule;
use Elementor\Widget_Button;
use ElementorPro\Base\Base_Widget_Trait;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Payment_Button extends Widget_Button {
	use Base_Widget_Trait;

	// Payment types.
	const PAYMENT_TYPE_CHECKOUT = 'checkout';
	const PAYMENT_TYPE_SUBSCRIPTION = 'subscription';
	const PAYMENT_TYPE_DONATION = 'donation';

	// Billing cycles.
	const BILLING_CYCLE_DAYS = 'days';
	const BILLING_CYCLE_WEEKS = 'weeks';
	const BILLING_CYCLE_MONTHS = 'months';
	const BILLING_CYCLE_YEARS = 'years';

	// Donation types.
	const DONATION_TYPE_ANY = 'any';
	const DONATION_TYPE_FIXED = 'fixed';

	// Error messages.
	const ERROR_MESSAGE_GLOBAL = 'global';
	const ERROR_MESSAGE_PAYMENT_METHOD = 'payment';

	// Retrieve the merchant display name.
	abstract protected function get_merchant_name();

	// Account details section.
	abstract protected function register_account_section();

	// Custom sandbox controls.
	abstract protected function register_sandbox_controls();

	public function get_group_name() {
		return 'payments';
	}

	// Render custom controls after product type.
	protected function after_product_type() { }

	// Return an array of supported currencies.
	protected function get_currencies() {
		return [
			'AUD' => _x( 'AUD', 'Currency', 'elementor-pro' ),
			'CAD' => _x( 'CAD', 'Currency', 'elementor-pro' ),
			'CZK' => _x( 'CZK', 'Currency', 'elementor-pro' ),
			'DKK' => _x( 'DKK', 'Currency', 'elementor-pro' ),
			'EUR' => _x( 'EUR', 'Currency', 'elementor-pro' ),
			'HKD' => _x( 'HKD', 'Currency', 'elementor-pro' ),
			'HUF' => _x( 'HUF', 'Currency', 'elementor-pro' ),
			'ILS' => _x( 'ILS', 'Currency', 'elementor-pro' ),
			'JPY' => _x( 'JPY', 'Currency', 'elementor-pro' ),
			'MXN' => _x( 'MXN', 'Currency', 'elementor-pro' ),
			'NOK' => _x( 'NOK', 'Currency', 'elementor-pro' ),
			'NZD' => _x( 'NZD', 'Currency', 'elementor-pro' ),
			'PHP' => _x( 'PHP', 'Currency', 'elementor-pro' ),
			'PLN' => _x( 'PLN', 'Currency', 'elementor-pro' ),
			'GBP' => _x( 'GBP', 'Currency', 'elementor-pro' ),
			'RUB' => _x( 'RUB', 'Currency', 'elementor-pro' ),
			'SGD' => _x( 'SGD', 'Currency', 'elementor-pro' ),
			'SEK' => _x( 'SEK', 'Currency', 'elementor-pro' ),
			'CHF' => _x( 'CHF', 'Currency', 'elementor-pro' ),
			'TWD' => _x( 'TWD', 'Currency', 'elementor-pro' ),
			'THB' => _x( 'THB', 'Currency', 'elementor-pro' ),
			'TRY' => _x( 'TRY', 'Currency', 'elementor-pro' ),
			'USD' => _x( 'USD', 'Currency', 'elementor-pro' ),
		];
	}

	// Return an array of default error messages.
	protected function get_default_error_messages() {
		return [
			self::ERROR_MESSAGE_GLOBAL => esc_html__( 'An error occurred.', 'elementor-pro' ),
			self::ERROR_MESSAGE_PAYMENT_METHOD => esc_html__( 'No payment method connected. Contact seller.', 'elementor-pro' ),
		];
	}

	// Get message text by id (`error_message_$id`).
	protected function get_custom_message( $id ) {
		$message = $this->get_settings_for_display( 'error_message_' . $id );

		// Return the user-defined message.
		if ( ! empty( $message ) ) {
			return $message;
		}

		// Return the default message.
		$error_messages = $this->get_default_error_messages();

		return ( ! empty( $error_messages[ $id ] ) ) ? $error_messages[ $id ] : esc_html__( 'Unknown error.', 'elementor-pro' );
	}

	// Product details section.
	protected function register_product_controls() {
		$this->add_control(
			'type',
			[
				'label' => esc_html__( 'Transaction Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'checkout',
				'options' => [
					self::PAYMENT_TYPE_CHECKOUT => esc_html__( 'Checkout', 'elementor-pro' ),
					self::PAYMENT_TYPE_DONATION => esc_html__( 'Donation', 'elementor-pro' ),
					self::PAYMENT_TYPE_SUBSCRIPTION => esc_html__( 'Subscription', 'elementor-pro' ),
				],
				'separator' => 'before',
			]
		);

		$this->after_product_type();

		$this->add_control(
			'product_name',
			[
				'label' => esc_html__( 'Item Name', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'label_block' => true,
			]
		);

		$this->add_control(
			'product_sku',
			[
				'label' => esc_html__( 'SKU', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_control(
			'product_price',
			[
				'label' => esc_html__( 'Price', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => '0.00',
				'dynamic' => [
					'active' => true,
				],
				'condition' => [
					'type!' => self::PAYMENT_TYPE_DONATION,
				],
			]
		);

		$this->add_control(
			'donation_type',
			[
				'label' => esc_html__( 'Donation Amount', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => self::DONATION_TYPE_FIXED,
				'options' => [
					self::DONATION_TYPE_ANY => esc_html__( 'Any Amount', 'elementor-pro' ),
					self::DONATION_TYPE_FIXED => esc_html__( 'Fixed', 'elementor-pro' ),
				],
				'condition' => [
					'type' => self::PAYMENT_TYPE_DONATION,
				],
			]
		);

		$this->add_control(
			'donation_amount',
			[
				'label' => esc_html__( 'Amount', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => '1',
				'dynamic' => [
					'active' => true,
				],
				'condition' => [
					'type' => self::PAYMENT_TYPE_DONATION,
					'donation_type' => self::DONATION_TYPE_FIXED,
				],
			]
		);

		$this->add_control(
			'currency',
			[
				'label' => esc_html__( 'Currency', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'USD',
				'options' => $this->get_currencies(),
			]
		);

		$this->add_control(
			'billing_cycle',
			[
				'label' => esc_html__( 'Billing Cycle', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => self::BILLING_CYCLE_MONTHS,
				'options' => [
					self::BILLING_CYCLE_DAYS => esc_html__( 'Daily', 'elementor-pro' ),
					self::BILLING_CYCLE_WEEKS => esc_html__( 'Weekly', 'elementor-pro' ),
					self::BILLING_CYCLE_MONTHS => esc_html__( 'Monthly', 'elementor-pro' ),
					self::BILLING_CYCLE_YEARS => esc_html__( 'Yearly', 'elementor-pro' ),
				],
				'condition' => [
					'type' => self::PAYMENT_TYPE_SUBSCRIPTION,
				],
			]
		);

		$this->add_control(
			'auto_renewal',
			[
				'type' => Controls_Manager::SWITCHER,
				'label' => esc_html__( 'Auto Renewal', 'elementor-pro' ),
				'default' => 'yes',
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'condition' => [
					'type' => self::PAYMENT_TYPE_SUBSCRIPTION,
				],
			]
		);

		$this->add_control(
			'quantity',
			[
				'label' => esc_html__( 'Quantity', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 1,
				'condition' => [
					'type' => self::PAYMENT_TYPE_CHECKOUT,
				],
			]
		);

		$this->add_control(
			'shipping_price',
			[
				'label' => esc_html__( 'Shipping Price', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 0,
				'dynamic' => [
					'active' => true,
				],
				'condition' => [
					'type' => self::PAYMENT_TYPE_CHECKOUT,
				],
			]
		);

		$this->add_control(
			'tax_type',
			[
				'label' => esc_html__( 'Tax', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '',
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'percentage' => esc_html__( 'Percentage', 'elementor-pro' ),
				],
				'condition' => [
					'type' => self::PAYMENT_TYPE_CHECKOUT,
				],
			]
		);

		$this->add_control(
			'tax_rate',
			[
				'label' => esc_html__( 'Tax Percentage', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => '0',
				'dynamic' => [
					'active' => true,
				],
				'condition' => [
					'type' => self::PAYMENT_TYPE_CHECKOUT,
					'tax_type' => 'percentage',
				],
			]
		);
	}

	// Submission settings section.
	protected function register_settings_section() {
		$this->start_controls_section(
			'section_settings',
			[
				'label' => esc_html__( 'Additional Options', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'redirect_after_success',
			[
				'label' => esc_html__( 'Redirect After Success', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'options' => false,
				'placeholder' => esc_html__( 'Paste URL or type', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
				'label_block' => true,
				'render_type' => 'none',
			]
		);

		$this->add_control(
			'sandbox_mode',
			[
				'type' => Controls_Manager::SWITCHER,
				'label' => esc_html__( 'Sandbox', 'elementor-pro' ),
				'default' => 'no',
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
			]
		);

		$this->register_sandbox_controls();

		$this->add_control(
			'open_in_new_window',
			[
				'type' => Controls_Manager::SWITCHER,
				'label' => sprintf( esc_html__( 'Open %s In New Tab', 'elementor-pro' ), $this->get_merchant_name() ),
				'default' => 'yes',
				'label_off' => esc_html__( 'No', 'elementor-pro' ),
				'label_on' => esc_html__( 'Yes', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'custom_messages',
			[
				'label' => esc_html__( 'Custom Messages', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
			]
		);

		$error_messages = $this->get_default_error_messages();

		$this->add_control(
			'error_message_' . self::ERROR_MESSAGE_GLOBAL,
			[
				'label' => esc_html__( 'Error Message', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => $error_messages[ self::ERROR_MESSAGE_GLOBAL ],
				'placeholder' => $error_messages[ self::ERROR_MESSAGE_GLOBAL ],
				'label_block' => true,
				'condition' => [
					'custom_messages!' => '',
				],
			]
		);

		$this->add_control(
			'error_message_' . self::ERROR_MESSAGE_PAYMENT_METHOD,
			[
				'label' => sprintf( esc_html__( '%s Not Connected', 'elementor-pro' ), $this->get_merchant_name() ),
				'type' => Controls_Manager::TEXT,
				'default' => $error_messages[ self::ERROR_MESSAGE_PAYMENT_METHOD ],
				'placeholder' => $error_messages[ self::ERROR_MESSAGE_PAYMENT_METHOD ],
				'label_block' => true,
				'condition' => [
					'custom_messages!' => '',
				],
			]
		);

		$this->end_controls_section();
	}

	// Customize the default button controls.
	protected function register_button_controls() {
		parent::register_controls();

		$this->remove_control( 'button_type' );

		$this->remove_control( 'link' );

		$this->remove_control( 'size' );

		$this->update_control( 'selected_icon', [
			'default' => [
				'value' => 'fab fa-paypal',
				'library' => 'fa-brands',
			],
		] );

		$this->update_control( 'text', [
			'default' => 'Buy Now',
		] );

		$this->update_control( 'button_text_color', [
			'default' => '#FFF',
		] );

		$this->update_control( 'background_color', [
			'default' => '#032E82',
		] );
	}

	// Add typography settings for custom messages.
	protected function register_messages_style_section() {
		$this->start_controls_section(
			'section_messages_style',
			[
				'label' => esc_html__( 'Messages', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'message_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
				'selector' => '{{WRAPPER}} .elementor-message',
			]
		);

		$this->add_control(
			'message_color_' . self::ERROR_MESSAGE_GLOBAL,
			[
				'label' => esc_html__( 'Error Message Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-message.elementor-error-message-' . self::ERROR_MESSAGE_GLOBAL => 'color: {{COLOR}};',
				],
			]
		);

		$this->add_control(
			'message_color_' . self::ERROR_MESSAGE_PAYMENT_METHOD,
			[
				'label' => sprintf( esc_html__( '%s Not Connected Color', 'elementor-pro' ), $this->get_merchant_name() ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-message.elementor-error-message-' . self::ERROR_MESSAGE_PAYMENT_METHOD => 'color: {{COLOR}};',
				],
			]
		);

		$this->end_controls_section();
	}

	// Register widget controls.
	protected function register_controls() {
		$this->register_account_section();
		$this->register_button_controls();
		$this->register_settings_section();
		$this->register_messages_style_section();
	}

	// Render the checkout button.
	protected function render_button( $tag = 'a' ) {
		$this->add_render_attribute( 'button', 'class', 'elementor-payment-button' );

		?>
		<<?php Utils::print_validated_html_tag( $tag ); ?> <?php $this->print_render_attribute_string( 'button' ); ?>>
			<?php $this->render_text(); ?>
		</<?php Utils::print_validated_html_tag( $tag ); ?>>
		<?php
	}

	// Render the widget.
	protected function render() {
		$settings = $this->get_settings_for_display();

		$this->add_render_attribute( 'wrapper', 'class', 'elementor-button-wrapper' );
		$this->add_render_attribute( 'button', 'class', 'elementor-button' );
		$this->add_render_attribute( 'button', 'role', 'button' );

		if ( ! empty( $settings['button_css_id'] ) ) {
			$this->add_render_attribute( 'button', 'id', $settings['button_css_id'] );
		}

		if ( ! empty( $settings['size'] ) ) {
			$this->add_render_attribute( 'button', 'class', 'elementor-size-' . $settings['size'] );
		}

		if ( $settings['hover_animation'] ) {
			$this->add_render_attribute( 'button', 'class', 'elementor-animation-' . $settings['hover_animation'] );
		}

		?>
		<div <?php $this->print_render_attribute_string( 'wrapper' ); ?>>
			<?php $this->render_button(); ?>
		</div>
		<?php
	}

	protected function content_template() {
		return;
		?>
		<#
		view.addRenderAttribute( 'text', 'class', 'elementor-button-text' );
		view.addInlineEditingAttributes( 'text', 'none' );
		var iconHTML = elementor.helpers.renderIcon( view, settings.selected_icon, { 'aria-hidden': true }, 'i' , 'object' ),
		migrated = elementor.helpers.isIconMigrated( settings, 'selected_icon' );
		#>
		<div class="elementor-button-wrapper">
			<a id="{{ settings.button_css_id }}" class="elementor-button elementor-size-{{ settings.size }} elementor-animation-{{ settings.hover_animation }}" href="#" role="button">
				<span class="elementor-button-content-wrapper">
					<# if ( settings.icon || settings.selected_icon ) { #>
					<span class="elementor-button-icon elementor-align-icon-{{ settings.icon_align }}">
						<# if ( ( migrated || ! settings.icon ) && iconHTML.rendered ) { #>
							{{{ iconHTML.value }}}
						<# } else { #>
							<i class="{{ settings.icon }}" aria-hidden="true"></i>
						<# } #>
					</span>
					<# } #>
					<span {{{ view.getRenderAttributeString( 'text' ) }}}>{{{ settings.text }}}</span>
				</span>
			</a>
		</div>
		<?php
	}

	// Check if it's sandbox mode.
	protected function is_sandbox() {
		return 'yes' === $this->get_settings_for_display( 'sandbox_mode' );
	}
}
modules/payments/widgets/paypal-button.php000064400000024417150755004300015041 0ustar00<?php
namespace ElementorPro\Modules\Payments\Widgets;

use Elementor\Controls_Manager;
use Elementor\Plugin;
use Elementor\Utils;
use ElementorPro\Modules\Payments\Classes\Payment_Button;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Paypal_Button extends Payment_Button {

	// API integration types.
	const API_TYPE_SIMPLE = 'simple';
	const API_TYPE_ADVANCED = 'advanced';

	// PayPal constants.
	const PROD_URL = 'https://www.paypal.com/cgi-bin/webscr';
	const SANDBOX_URL = 'https://sandbox.paypal.com/cgi-bin/webscr';
	const CMD_CHECKOUT = '_xclick';
	const CMD_DONATION = '_donations';
	const CMD_SUBSCRIPTION = '_xclick-subscriptions';

	const BILLING_CYCLE_TYPES = [
		self::BILLING_CYCLE_DAYS => 'D',
		self::BILLING_CYCLE_WEEKS => 'W',
		self::BILLING_CYCLE_MONTHS => 'M',
		self::BILLING_CYCLE_YEARS => 'Y',
	];

	public function get_name() {
		return 'paypal-button';
	}

	public function get_title() {
		return esc_html__( 'PayPal Button', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-paypal-button';
	}

	public function get_keywords() {
		return [ 'paypal', 'payment', 'sell', 'donate' ];
	}

	protected function get_merchant_name() {
		return 'PayPal';
	}

	// Retrieve a numerical field from settings, and default to $min if it's too small.
	protected function get_numeric_setting( $key, $min = 0 ) {
		$num = doubleval( $this->get_settings_for_display( $key ) );

		return ( $min > $num ) ? $min : $num;
	}

	// Print a numerical field from settings, using `get_numeric_setting`.
	protected function print_numeric_setting( $key, $min = 0 ) {
		// PHPCS - the get_numeric_setting function is safe.
		echo $this->get_numeric_setting( $key, $min ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}

	// Get the currently selected API communication method ( legacy / SDK ).
	protected function get_api_method() {
		$settings = $this->get_settings_for_display();

		return ( self::API_TYPE_ADVANCED === $settings['merchant_account'] ) ? 'sdk' : 'legacy';
	}

	// Get validation errors.
	protected function get_errors( $squash_errors = true ) {
		$settings = $this->get_settings_for_display();
		$errors = [];

		// Don't render errors in the editor.
		if ( Plugin::instance()->editor->is_edit_mode() ) {
			return $errors;
		}

		// No payment method provided.
		if ( 'legacy' === $this->get_api_method() ) {
			$empty_email = empty( $settings['email'] );
			$empty_sandbox_email = $this->is_sandbox() && empty( $settings['sandbox_email'] );

			if ( $empty_email || $empty_sandbox_email ) {
				$errors[ self::ERROR_MESSAGE_PAYMENT_METHOD ] = $this->get_custom_message( self::ERROR_MESSAGE_PAYMENT_METHOD );
			}
		}

		// Other errors.
		$empty_product_price = ( self::PAYMENT_TYPE_DONATION !== $settings['type'] && empty( $settings['product_price'] ) );
		$empty_donation_amount = ( self::DONATION_TYPE_FIXED === $settings['donation_type'] && empty( $settings['donation_amount'] ) );
		$empty_tax = ( ! empty( $settings['tax_type'] ) && empty( $settings['tax_rate'] ) );

		if ( $empty_product_price || $empty_donation_amount || $empty_tax ) {
			$errors[ self::ERROR_MESSAGE_GLOBAL ] = $this->get_custom_message( self::ERROR_MESSAGE_GLOBAL );
		}

		// Squash errors to show only a global error.
		if ( $squash_errors && 1 < count( $errors ) ) {
			return [
				self::ERROR_MESSAGE_GLOBAL => $this->get_custom_message( self::ERROR_MESSAGE_GLOBAL ),
			];
		}

		return $errors;
	}

	// Render PayPal's legacy checkout form.
	protected function render_legacy_form() {
		$settings = $this->get_settings_for_display();

		// Handle sandbox mode.
		if ( ! $this->is_sandbox() ) {
			$form_action = self::PROD_URL;
			$email = $settings['email'];
		} else {
			$form_action = self::SANDBOX_URL;
			$email = $settings['sandbox_email'];
			$this->add_render_attribute( 'button', 'class', 'elementor-payment-sandbox-mode' );
		}

		if ( 'yes' === $settings['open_in_new_window'] ) {
			$target = '_blank';
		} else {
			$target = '_top';
		}

		// Set PayPal payment settings by payment type.
		switch ( $settings['type'] ) {
			case self::PAYMENT_TYPE_CHECKOUT:
				$cmd = self::CMD_CHECKOUT;
				$price_field = [
					'name' => 'amount',
					'value' => $settings['product_price'],
				];
				break;

			case self::PAYMENT_TYPE_DONATION:
				$cmd = self::CMD_DONATION;
				$donation_amount = '';

				// phpcs:ignore
				if ( self::DONATION_TYPE_FIXED === $settings['donation_type'] ) {
					$donation_amount = $settings['donation_amount'];
				}

				$price_field = [
					'name' => 'amount',
					'value' => $donation_amount,
				];
				break;

			case self::PAYMENT_TYPE_SUBSCRIPTION:
				$cmd = self::CMD_SUBSCRIPTION;
				$price_field = [
					'name' => 'a3',
					'value' => $settings['product_price'],
				];
				$auto_renewal = ( 'yes' === $settings['auto_renewal'] ) ? 1 : 0;
				$billing_cycle = self::BILLING_CYCLE_TYPES[ $settings['billing_cycle'] ];
				break;
		}

		// PayPal HTML reference:
		// https://developer.paypal.com/docs/paypal-payments-standard/integration-guide/html-reference-landing/

		?>
		<form action="<?php echo esc_attr( $form_action ); ?>" method="post" target="<?php echo esc_attr( $target ); ?>">
			<input type="hidden" name="cmd" value="<?php echo esc_attr( $cmd ); ?>" />
			<input type="hidden" name="business" value="<?php echo esc_attr( $email ); ?>" />
			<input type="hidden" name="lc" value="US" />
			<input type="hidden" name="item_name" value="<?php echo esc_attr( $settings['product_name'] ); ?>" />
			<input type="hidden" name="item_number" value="<?php echo esc_attr( $settings['product_sku'] ); ?>" />
			<input type="hidden" name="currency_code" value="<?php echo esc_attr( $settings['currency'] ); ?>" />
			<input type="hidden" name="<?php echo esc_attr( $price_field['name'] ); ?>" value="<?php echo esc_attr( $price_field['value'] ); ?>" />
			<input type="hidden" name="no_note" value="1">

			<?php if ( self::PAYMENT_TYPE_CHECKOUT === $settings['type'] ) { ?>
				<input type="hidden" name="shipping" value="<?php $this->print_numeric_setting( 'shipping_price' ); ?>" />
				<input type="hidden" name="tax_rate" value="<?php $this->print_numeric_setting( 'tax_rate' ); ?>" />
				<input type="hidden" name="quantity" value="<?php $this->print_numeric_setting( 'quantity', 1 ); ?>" />
				<?php
			} elseif ( self::PAYMENT_TYPE_SUBSCRIPTION === $settings['type'] ) { ?>
				<?php // PHPCS - the $auto_renewal variable is a safe. ?>
				<input type="hidden" name="src" value="<?php echo $auto_renewal; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>" />
				<input type="hidden" name="p3" value="1" />
				<?php // PHPCS - the $billing_cycle variable is a constant value from self::BILLING_CYCLE_TYPES. ?>
				<input type="hidden" name="t3" value="<?php echo $billing_cycle; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>" />
				<input type="hidden" name="no-shipping" value="1" />
				<?php
			}

			if ( ! empty( $settings['redirect_after_success']['url'] ) ) { ?>
				<input type="hidden" name="return" value="<?php echo esc_url( $settings['redirect_after_success']['url'] ); ?>">
				<?php
			}

			$this->add_render_attribute( 'button', 'type', 'submit' );
			$this->add_render_attribute( 'button', 'class', 'elementor-paypal-legacy' );
			parent::render_button( 'button' );

			foreach ( $this->get_errors() as $type => $message ) {
				?>
				<div class="elementor-message elementor-message-danger elementor-hidden elementor-error-message-<?php Utils::print_unescaped_internal_string( $type ); ?>">
					<?php echo esc_html( $message ); ?>
				</div>
				<?php
			}
			?>
		</form>
		<?php
	}

	// Render the payment button.
	protected function render_button( $tag = 'a' ) {
		switch ( $this->get_api_method() ) {
			case 'legacy':
				$this->render_legacy_form();
				break;
		}
	}

	// Account details section.
	protected function register_account_section() {
		$this->start_controls_section(
			'section_account',
			[
				'label' => esc_html__( 'Pricing & Payments', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'merchant_account',
			[
				'label' => esc_html__( 'Merchant Account', 'elementor-pro' ),
				'type' => Controls_Manager::HIDDEN,
				'default' => self::API_TYPE_SIMPLE,
				'options' => [
					self::API_TYPE_SIMPLE => esc_html__( 'Default (Simple)', 'elementor-pro' ),
					self::API_TYPE_ADVANCED => esc_html__( 'Custom (Advanced)', 'elementor-pro' ),
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'email',
			[
				'label' => esc_html__( 'PayPal Account', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'description' => esc_html__( 'Transactions made through your PayPal button will be registered under this account.', 'elementor-pro' ),
				'label_block' => true,
				'condition' => [
					'merchant_account' => self::API_TYPE_SIMPLE,
				],
				'placeholder' => 'yours@email.com',
			]
		);

		$this->add_control(
			'sdk_token',
			[
				'label' => esc_html__( 'SDK Token', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'label_block' => true,
				'condition' => [
					'merchant_account' => self::API_TYPE_ADVANCED,
				],
			]
		);

		$this->register_product_controls();

		$this->end_controls_section();
	}

	// Custom sandbox controls.
	protected function register_sandbox_controls() {
		$this->add_control(
			'sandbox_email',
			[
				'label' => esc_html__( 'Sandbox Email Account', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'description' => esc_html__( 'This is the address given to you by PayPal when you set up a sandbox with your developer account. You can use the sandbox to test your purchase flow.', 'elementor-pro' ),
				'label_block' => true,
				'condition' => [
					'sandbox_mode' => 'yes',
				],
			]
		);
	}

	// This widget extends the button core widget and therefore needs to overwrite the widget-base core CSS config.
	public function get_css_config() {
		$widget_name = 'payments';

		$direction = is_rtl() ? '-rtl' : '';

		$css_file_path = 'css/widget-' . $widget_name . $direction . '.min.css';

		return [
			'key' => $widget_name,
			'version' => ELEMENTOR_PRO_VERSION,
			'file_path' => ELEMENTOR_PRO_ASSETS_PATH . $css_file_path,
			'data' => [
				'file_url' => ELEMENTOR_PRO_ASSETS_URL . $css_file_path,
			],
		];
	}
}
modules/payments/module.php000064400000000500150755004300012044 0ustar00<?php
namespace ElementorPro\Modules\Payments;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function get_widgets() {
		return [
			'Paypal_Button',
		];
	}

	public function get_name() {
		return 'payments';
	}
}
modules/theme-builder/theme-support/safe-mode-theme-support.php000064400000001604150755004300020741 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\ThemeSupport;

use ElementorPro\Modules\ThemeBuilder\Classes\Locations_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Safe_Mode_Theme_Support {

	/**
	 * @param Locations_Manager $manager
	 */
	public function register_locations( $manager ) {
		$manager->register_core_location( 'header' );
		$manager->register_core_location( 'footer' );
	}

	public function do_header() {
		elementor_theme_do_location( 'header' );
	}

	public function do_footer() {
		elementor_theme_do_location( 'footer' );
	}

	public function __construct() {
		add_action( 'elementor/theme/register_locations', [ $this, 'register_locations' ] );

		add_action( 'elementor/page_templates/canvas/before_content', [ $this, 'do_header' ], 0 );
		add_action( 'elementor/page_templates/canvas/after_content', [ $this, 'do_footer' ], 0 );
	}
}
modules/theme-builder/theme-support/generate-press-theme-support.php000064400000003513150755004300022026 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\ThemeSupport;

use Elementor\TemplateLibrary\Source_Local;
use ElementorPro\Modules\ThemeBuilder\Classes\Locations_Manager;
use ElementorPro\Modules\ThemeBuilder\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class GeneratePress_Theme_Support {

	/**
	 * @param Locations_Manager $manager
	 */
	public function register_locations( $manager ) {
		$manager->register_core_location( 'header' );
		$manager->register_core_location( 'footer' );
	}

	public function metabox_capability( $capability ) {
		if ( Source_Local::CPT === get_post_type() ) {
			$capability = 'do_not_allow';
		}

		return $capability;
	}

	public function do_header() {
		$did_location = Module::instance()->get_locations_manager()->do_location( 'header' );
		if ( $did_location ) {
			remove_action( 'generate_header', 'generate_construct_header' );
			remove_action( 'generate_after_header', 'generate_add_navigation_after_header', 5 );
		}
	}

	public function do_footer() {
		$did_location = Module::instance()->get_locations_manager()->do_location( 'footer' );
		if ( $did_location ) {
			remove_action( 'generate_footer', 'generate_construct_footer' );
			remove_action( 'generate_footer', 'generate_construct_footer_widgets', 5 );
		}
	}

	public function body_classes( $classes ) {
		if ( in_array( 'elementor-template-full-width', $classes ) ) {
			$classes[] = 'full-width-content';
		}

		return $classes;
	}

	public function __construct() {
		add_action( 'elementor/theme/register_locations', [ $this, 'register_locations' ] );
		add_filter( 'generate_metabox_capability', [ $this, 'metabox_capability' ] );

		add_action( 'generate_header', [ $this, 'do_header' ], 0 );
		add_action( 'generate_footer', [ $this, 'do_footer' ], 0 );

		add_filter( 'body_class', [ $this, 'body_classes' ], 11 );
	}
}
modules/theme-builder/api.php000064400000001263150755004300012225 0ustar00<?php

use ElementorPro\Modules\ThemeBuilder\Module as Theme_Builder_Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

function elementor_theme_do_location( $location ) {
	/** @var Theme_Builder_Module $theme_builder_module */
	$theme_builder_module = Theme_Builder_Module::instance();

	return $theme_builder_module->get_locations_manager()->do_location( $location );
}

function elementor_location_exits( $location, $check_match = false ) {
	/** @var Theme_Builder_Module $theme_builder_module */
	$theme_builder_module = Theme_Builder_Module::instance();

	return $theme_builder_module->get_locations_manager()->location_exits( $location, $check_match );
}
modules/theme-builder/widgets/title-widget-base.php000064400000002473150755004300016440 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Widgets;

use Elementor\Widget_Heading;
use Elementor\Plugin;
use ElementorPro\Base\Base_Widget_Trait;
use ElementorPro\Plugin as ProPlugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

abstract class Title_Widget_Base extends Widget_Heading {

	use Base_Widget_Trait;

	abstract protected function get_dynamic_tag_name();

	protected function should_show_page_title() {
		$current_doc = Plugin::instance()->documents->get( get_the_ID() );
		if ( $current_doc && 'yes' === $current_doc->get_settings( 'hide_title' ) ) {
			return false;
		}

		return true;
	}

	protected function register_controls() {
		parent::register_controls();

		$dynamic_tag_name = $this->get_dynamic_tag_name();

		$this->update_control(
			'title',
			[
				'dynamic' => [
					'default' => ProPlugin::elementor()->dynamic_tags->tag_data_to_tag_text( null, $dynamic_tag_name ),
				],
			],
			[
				'recursive' => true,
			]
		);

		$this->update_control(
			'header_size',
			[
				'default' => 'h1',
			]
		);
	}

	protected function get_html_wrapper_class() {
		return parent::get_html_wrapper_class() . ' elementor-page-title elementor-widget-' . parent::get_name();
	}

	public function render() {
		if ( $this->should_show_page_title() ) {
			return parent::render();
		}
	}
}
modules/theme-builder/widgets/post-excerpt.php000064400000005701150755004300015560 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Excerpt extends Base_Widget {

	public function get_name() {
		// `theme` prefix is to avoid conflicts with a dynamic-tag with same name.
		return 'theme-post-excerpt';
	}

	public function get_title() {
		return esc_html__( 'Post Excerpt', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-post-excerpt';
	}

	public function get_categories() {
		return [ 'theme-elements-single' ];
	}

	public function get_keywords() {
		return [ 'post', 'excerpt', 'description' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_content',
			[
				'label' => esc_html__( 'Content', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'excerpt',
			[
				'type' => Controls_Manager::TEXT,
				'label_block' => true,
				'dynamic' => [
					'active' => true,
					'default' => Plugin::elementor()->dynamic_tags->tag_data_to_tag_text( null, 'post-excerpt' ),
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Justified', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-widget-container' => 'text-align: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'title_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-widget-container' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
				'selector' => '{{WRAPPER}} .elementor-widget-container',
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		$this->print_unescaped_setting( 'excerpt' );
	}
}
modules/theme-builder/widgets/archive-title.php000064400000001316150755004310015662 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Widgets;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Archive_Title extends Title_Widget_Base {

	protected function get_dynamic_tag_name() {
		return 'archive-title';
	}

	public function get_name() {
		// `theme` prefix is to avoid conflicts with a dynamic-tag with same name.
		return 'theme-archive-title';
	}

	public function get_title() {
		return esc_html__( 'Archive Title', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-archive-title';
	}

	public function get_categories() {
		return [ 'theme-elements-archive' ];
	}

	public function get_keywords() {
		return [ 'title', 'heading', 'archive' ];
	}
}
modules/theme-builder/widgets/archive-posts.php000064400000007141150755004310015713 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;
use ElementorPro\Modules\Posts\Widgets\Posts_Base;
use ElementorPro\Modules\ThemeBuilder\Skins;
use ElementorPro\Modules\QueryControl\Module as Query_Control;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Class Posts
 */
class Archive_Posts extends Posts_Base {

	public function get_name() {
		return 'archive-posts';
	}

	public function get_title() {
		return esc_html__( 'Archive Posts', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-archive-posts';
	}

	public function get_categories() {
		return [ 'theme-elements-archive' ];
	}

	public function get_keywords() {
		return [ 'posts', 'cpt', 'archive', 'loop', 'query', 'cards', 'custom post type' ];
	}

	public function get_inline_css_depends() {
		return [ 'posts' ];
	}

	protected function register_skins() {
		$this->add_skin( new Skins\Posts_Archive_Skin_Classic( $this ) );
		$this->add_skin( new Skins\Posts_Archive_Skin_Cards( $this ) );
		$this->add_skin( new Skins\Posts_Archive_Skin_Full_Content( $this ) );
	}

	protected function register_controls() {
		parent::register_controls();

		$this->register_pagination_section_controls();

		$this->register_advanced_section_controls();

		$this->update_control(
			'pagination_type',
			[
				'default' => 'numbers',
			]
		);
	}

	public function register_advanced_section_controls() {
		$this->start_controls_section(
			'section_advanced',
			[
				'label' => esc_html__( 'Advanced', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'nothing_found_message',
			[
				'label' => esc_html__( 'Nothing Found Message', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'default' => esc_html__( 'It seems we can\'t find what you\'re looking for.', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_nothing_found_style',
			[
				'tab' => Controls_Manager::TAB_STYLE,
				'label' => esc_html__( 'Nothing Found Message', 'elementor-pro' ),
				'condition' => [
					'nothing_found_message!' => '',
				],
			]
		);

		$this->add_control(
			'nothing_found_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-posts-nothing-found' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'nothing_found_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
				'selector' => '{{WRAPPER}} .elementor-posts-nothing-found',
			]
		);

		$this->end_controls_section();
	}

	public function query_posts() {
		global $wp_query;

		$query_vars = $wp_query->query_vars;

		/**
		 * Posts archive query vars.
		 *
		 * Filters the post query variables when the theme loads the posts archive page.
		 *
		 * @since 2.0.0
		 *
		 * @param array $query_vars The query variables for the `WP_Query`.
		 */
		$query_vars = apply_filters( 'elementor/theme/posts_archive/query_posts/query_vars', $query_vars );

		if ( $query_vars !== $wp_query->query_vars ) {
			$this->query = new \WP_Query( $query_vars ); // SQL_CALC_FOUND_ROWS is used.
		} else {
			$this->query = $wp_query;
		}

		Query_Control::add_to_avoid_list( wp_list_pluck( $this->query->posts, 'ID' ) );
	}
}
modules/theme-builder/widgets/site-logo.php000064400000003555150755004310015033 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Widgets;

use Elementor\Widget_Image;
use ElementorPro\Base\Base_Widget_Trait;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Site_Logo extends Widget_Image {

	use Base_Widget_Trait;

	public function get_name() {
		// `theme` prefix is to avoid conflicts with a dynamic-tag with same name.
		return 'theme-site-logo';
	}

	public function get_title() {
		return esc_html__( 'Site Logo', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-site-logo';
	}

	public function get_categories() {
		return [ 'theme-elements' ];
	}

	public function get_keywords() {
		return [ 'site', 'logo', 'branding' ];
	}

	protected function register_controls() {
		parent::register_controls();

		$this->update_control(
			'image',
			[
				'dynamic' => [
					'default' => Plugin::elementor()->dynamic_tags->tag_data_to_tag_text( null, 'site-logo' ),
				],
			],
			[
				'recursive' => true,
			]
		);

		$this->update_control(
			'image_size',
			[
				'default' => 'full',
			]
		);

		$this->update_control(
			'link_to',
			[
				'default' => 'custom',
			]
		);

		$this->update_control(
			'link',
			[
				'dynamic' => [
					'default' => Plugin::elementor()->dynamic_tags->tag_data_to_tag_text( null, 'site-url' ),
				],
			],
			[
				'recursive' => true,
			]
		);

		$this->update_control(
			'caption_source',
			[
				'options' => $this->get_caption_source_options(),
			]
		);

		$this->remove_control( 'caption' );
	}

	protected function get_html_wrapper_class() {
		return parent::get_html_wrapper_class() . ' elementor-widget-' . parent::get_name();
	}

	private function get_caption_source_options() {
		$caption_source_options = $this->get_controls( 'caption_source' )['options'];

		unset( $caption_source_options['custom'] );

		return $caption_source_options;
	}
}
modules/theme-builder/widgets/site-title.php000064400000002534150755004310015210 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Widgets;

use Elementor\Widget_Heading;
use ElementorPro\Base\Base_Widget_Trait;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Site_Title extends Widget_Heading {

	use Base_Widget_Trait;

	public function get_name() {
		// `theme` prefix is to avoid conflicts with a dynamic-tag with same name.
		return 'theme-site-title';
	}

	public function get_title() {
		return esc_html__( 'Site Title', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-site-title';
	}

	public function get_categories() {
		return [ 'theme-elements' ];
	}

	public function get_keywords() {
		return [ 'site', 'title', 'name' ];
	}

	protected function register_controls() {
		parent::register_controls();

		$this->update_control(
			'title',
			[
				'dynamic' => [
					'default' => Plugin::elementor()->dynamic_tags->tag_data_to_tag_text( null, 'site-title' ),
				],
			],
			[
				'recursive' => true,
			]
		);

		$this->update_control(
			'link',
			[
				'dynamic' => [
					'default' => Plugin::elementor()->dynamic_tags->tag_data_to_tag_text( null, 'site-url' ),
				],
			],
			[
				'recursive' => true,
			]
		);
	}

	protected function get_html_wrapper_class() {
		return parent::get_html_wrapper_class() . ' elementor-widget-' . parent::get_name();
	}
}
modules/theme-builder/widgets/post-content.php000064400000005114150755004310015557 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Modules\Posts\Skins\Skin_Content_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Content extends Base_Widget {
	use Skin_Content_Base;
	public function get_name() {
		// `theme` prefix is to avoid conflicts with a dynamic-tag with same name.
		return 'theme-post-content';
	}

	public function get_title() {
		return esc_html__( 'Post Content', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-post-content';
	}

	public function get_categories() {
		return [ 'theme-elements-single' ];
	}

	public function get_keywords() {
		return [ 'content', 'post' ];
	}

	public function show_in_panel() {
		// By default don't show.
		return false;
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Justified', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => 'text-align: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}}' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		$this->render_post_content();
	}

	public function render_plain_content() {}
}
modules/theme-builder/widgets/page-title.php000064400000001267150755004310015162 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Widgets;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Page_Title extends Title_Widget_Base {

	protected function get_dynamic_tag_name() {
		return 'page-title';
	}

	public function get_name() {
		// `theme` prefix is to avoid conflicts with a dynamic-tag with same name.
		return 'theme-page-title';
	}

	public function get_title() {
		return esc_html__( 'Page Title', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-archive-title';
	}

	public function get_categories() {
		return [ 'theme-elements' ];
	}

	public function get_keywords() {
		return [ 'title', 'heading', 'page' ];
	}
}
modules/theme-builder/widgets/post-featured-image.php000064400000002272150755004310016766 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Widgets;

use Elementor\Widget_Image;
use ElementorPro\Base\Base_Widget_Trait;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Featured_Image extends Widget_Image {

	use Base_Widget_Trait;

	public function get_name() {
		// `theme` prefix is to avoid conflicts with a dynamic-tag with same name.
		return 'theme-post-featured-image';
	}

	public function get_title() {
		return esc_html__( 'Featured Image', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-featured-image';
	}

	public function get_categories() {
		return [ 'theme-elements-single' ];
	}

	public function get_keywords() {
		return [ 'image', 'featured', 'thumbnail' ];
	}

	protected function register_controls() {
		parent::register_controls();

		$this->update_control(
			'image',
			[
				'dynamic' => [
					'default' => Plugin::elementor()->dynamic_tags->tag_data_to_tag_text( null, 'post-featured-image' ),
				],
			],
			[
				'recursive' => true,
			]
		);
	}

	protected function get_html_wrapper_class() {
		return parent::get_html_wrapper_class() . ' elementor-widget-' . parent::get_name();
	}
}
modules/theme-builder/widgets/post-title.php000064400000001461150755004310015227 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Widgets;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Title extends Title_Widget_Base {

	public function get_name() {
		// `theme` prefix is to avoid conflicts with a dynamic-tag with same name.
		return 'theme-post-title';
	}

	public function get_title() {
		return esc_html__( 'Post Title', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-post-title';
	}

	public function get_categories() {
		return [ 'theme-elements-single' ];
	}

	public function get_keywords() {
		return [ 'title', 'heading', 'post' ];
	}

	protected function get_dynamic_tag_name() {
		return 'post-title';
	}

	public function get_common_args() {
		return [
			'_css_classes' => [
				'default' => 'entry-title',
			],
		];
	}
}
modules/theme-builder/documents/search-results.php000064400000003323150755004310016421 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Documents;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Search_Results extends Archive {

	public function get_name() {
		return 'search-results';
	}

	public static function get_sub_type() {
		return 'search';
	}

	public static function get_title() {
		return esc_html__( 'Search Results', 'elementor-pro' );
	}

	public static function get_plural_title() {
		return esc_html__( 'Search Results', 'elementor-pro' );
	}

	protected static function get_site_editor_icon() {
		return 'eicon-search-results';
	}

	protected static function get_site_editor_tooltip_data() {
		return [
			'title' => esc_html__( 'What is a Search Results Template?', 'elementor-pro' ),
			'content' => esc_html__( 'You can easily control the layout and design of the Search Results page with the Search Results template, which is simply a special archive template just for displaying search results.', 'elementor-pro' ),
			'tip' => esc_html__( 'You can customize the message if there are no results for the search term.', 'elementor-pro' ),
			'docs' => 'https://go.elementor.com/app-theme-builder-search-results',
			'video_url' => 'https://www.youtube.com/embed/KKkIU_L5sDo',
		];
	}

	public static function get_preview_as_default() {
		return 'search';
	}

	public static function get_preview_as_options() {
		$options = [
			'search' => esc_html__( 'Search Results', 'elementor-pro' ),
		];

		return [
			'archive' => [
				'label' => esc_html__( 'Archive', 'elementor-pro' ),
				'options' => $options,
			],
		];
	}

	protected function get_remote_library_config() {
		$config = parent::get_remote_library_config();

		$config['category'] = 'archive';

		return $config;
	}
}
modules/theme-builder/documents/error-404.php000064400000003062150755004310015113 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Documents;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Error_404 extends Single_Base {

	public static function get_type() {
		return 'error-404';
	}

	public static function get_sub_type() {
		return 'not_found404';
	}

	public static function get_title() {
		return esc_html__( 'Error 404', 'elementor-pro' );
	}

	public static function get_plural_title() {
		return esc_html__( 'Error 404', 'elementor-pro' );
	}

	protected static function get_site_editor_icon() {
		return 'eicon-error-404';
	}

	protected static function get_site_editor_tooltip_data() {
		return [
			'title' => esc_html__( 'What is a 404 Page Template?', 'elementor-pro' ),
			'content' => esc_html__( 'A 404 page template allows you to easily design the layout and style of the page that is displayed when a visitor arrives at a page that does not exist.', 'elementor-pro' ),
			'tip' => esc_html__( 'Keep your site\'s visitors happy when they get lost by displaying your recent posts, a search bar, or any information that might help the user find what they were looking for.', 'elementor-pro' ),
			'docs' => 'https://go.elementor.com/app-theme-builder-error-404',
			'video_url' => 'https://www.youtube.com/embed/ACCNp9tBMQg',
		];
	}

	public static function get_preview_as_options() {
		return [
			'page/404' => esc_html__( '404', 'elementor-pro' ),
		];
	}

	protected function get_remote_library_config() {
		$config = parent::get_remote_library_config();

		$config['category'] = '404 page';

		return $config;
	}
}
modules/theme-builder/documents/header.php000064400000002403150755004310014703 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Documents;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Header extends Header_Footer_Base {

	public static function get_properties() {
		$properties = parent::get_properties();

		$properties['location'] = 'header';

		return $properties;
	}

	public static function get_type() {
		return 'header';
	}

	public static function get_title() {
		return esc_html__( 'Header', 'elementor-pro' );
	}

	public static function get_plural_title() {
		return esc_html__( 'Headers', 'elementor-pro' );
	}

	protected static function get_site_editor_icon() {
		return 'eicon-header';
	}

	protected static function get_site_editor_tooltip_data() {
		return [
			'title' => esc_html__( 'What is a Header Template?', 'elementor-pro' ),
			'content' => esc_html__( 'The header template allows you to easily design and edit custom WordPress headers so you are no longer constrained by your theme’s header design limitations.', 'elementor-pro' ),
			'tip' => esc_html__( 'You can create multiple headers, and assign each to different areas of your site.', 'elementor-pro' ),
			'docs' => 'https://go.elementor.com/app-theme-builder-header',
			'video_url' => 'https://www.youtube.com/embed/HHy5RK6W-6I',
		];
	}
}
modules/theme-builder/documents/archive-single-base.php000064400000002621150755004310017265 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Documents;

use ElementorPro\Modules\ThemeBuilder\Module as ThemeBuilderModule;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Archive_Single_Base extends Theme_Page_Document {

	/**
	 * Document sub type meta key.
	 */
	const REMOTE_CATEGORY_META_KEY = '_elementor_template_sub_type';

	public static function get_sub_type() {
		return '';
	}

	public static function get_create_url() {
		$create_url = parent::get_create_url();

		$sub_type = static::get_sub_type();

		if ( $sub_type ) {
			$create_url = add_query_arg( static::REMOTE_CATEGORY_META_KEY, static::get_sub_type(), $create_url );
		}

		return $create_url;
	}

	/**
	 * @access public
	 */
	public function save_template_type() {
		parent::save_template_type();

		$this->save_sub_type_condition();
	}

	private function save_sub_type_condition() {
		$conditions_manager = ThemeBuilderModule::instance()->get_conditions_manager();

		if ( ! empty( $_REQUEST[ self::REMOTE_CATEGORY_META_KEY ] ) ) {
			$sub_type = $_REQUEST[ self::REMOTE_CATEGORY_META_KEY ];

			if ( $conditions_manager->get_condition( $sub_type ) ) {
				$this->update_meta( self::REMOTE_CATEGORY_META_KEY, $sub_type );

				$conditions_manager->save_conditions( $this->post->ID, [
					[
						'include',
						$this->get_property( 'condition_type' ),
						$sub_type,
					],
				] );
			}
		}
	}
}
modules/theme-builder/documents/single.php000064400000002023150755004310014732 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Documents;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Single extends Single_Base {

	public static function get_type() {
		return 'single';
	}

	public static function get_title() {
		return esc_html__( 'Single', 'elementor-pro' );
	}

	public static function get_plural_title() {
		return esc_html__( 'Singles', 'elementor-pro' );
	}

	protected function get_remote_library_config() {
		$config = parent::get_remote_library_config();

		// Fallback for old multipurpose `single` documents.
		$category = $this->get_meta( self::REMOTE_CATEGORY_META_KEY );

		if ( $category ) {
			if ( 'not_found404' === $category ) {
				$category = '404 page';
			} else {
				$category = 'single ' . $category;
			}

			$config['category'] = $category;
		} else {
			$config['category'] = 'single post';
		}

		return $config;
	}

	protected static function get_site_editor_thumbnail_url() {
		return ELEMENTOR_ASSETS_URL . 'images/app/site-editor/single-post.svg';
	}
}
modules/theme-builder/documents/single-page.php000064400000002537150755004310015656 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Documents;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Single_Page extends Single_Base {
	public static function get_type() {
		return 'single-page';
	}

	public static function get_sub_type() {
		return 'page';
	}

	public static function get_title() {
		return esc_html__( 'Single Page', 'elementor-pro' );
	}

	public static function get_plural_title() {
		return esc_html__( 'Single Pages', 'elementor-pro' );
	}

	protected static function get_site_editor_icon() {
		return 'eicon-single-page';
	}

	protected static function get_site_editor_tooltip_data() {
		return [
			'title' => esc_html__( 'What is a Single Page Template?', 'elementor-pro' ),
			'content' => esc_html__( 'A single page template allows you to easily create the layout and style of pages, ensuring design consistency across all the pages of your site.', 'elementor-pro' ),
			'tip' => esc_html__( 'You can create multiple single page templates, and assign each to different areas of your site.', 'elementor-pro' ),
			'docs' => 'https://go.elementor.com/app-theme-builder-page',
			'video_url' => 'https://www.youtube.com/embed/_y5eZ60lVoY',
		];
	}

	protected function get_remote_library_config() {
		$config = parent::get_remote_library_config();

		$config['category'] = 'single page';

		return $config;
	}
}
modules/theme-builder/documents/theme-document.php000064400000041252150755004310016376 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Documents;

use Elementor\Controls_Manager;
use Elementor\Core\App\Modules\ImportExport\Module as Import_Export_Module;
use Elementor\Modules\Library\Documents\Library_Document;
use Elementor\TemplateLibrary\Source_Local;
use Elementor\Utils;
use ElementorPro\Modules\QueryControl\Module as QueryModule;
use ElementorPro\Modules\ThemeBuilder\Module;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Theme_Document extends Library_Document {

	const LOCATION_META_KEY = '_elementor_location';

	public static function get_properties() {
		$properties = parent::get_properties();

		$properties['admin_tab_group'] = Module::ADMIN_LIBRARY_TAB_GROUP;
		$properties['support_kit'] = true;
		$properties['support_site_editor'] = true;
		$properties['support_conditions'] = true;

		return $properties;
	}

	protected static function get_site_editor_route() {
		return '/site-editor/templates/' . static::get_type();
	}

	protected static function get_site_editor_icon() {
		return 'eicon eicon-custom';
	}

	protected static function get_site_editor_layout() {
		return 'grid';
	}

	protected static function get_site_editor_thumbnail_url() {
		return ELEMENTOR_ASSETS_URL . 'images/app/site-editor/' . static::get_type() . '.svg';
	}

	public static function get_site_editor_config() {
		return [
			'type' => static::get_type(),
			'icon' => static::get_site_editor_icon(),
			'title' => static::get_title(),
			'page_title' => static::get_title(),
			'page_layout' => static::get_site_editor_layout(),

			// Todo: Remove. Core plugin should use `urls.route`.
			'url' => static::get_site_editor_route(),

			'urls' => [
				'route' => static::get_site_editor_route(),
				'create' => static::get_create_url(),
				'thumbnail' => static::get_site_editor_thumbnail_url(),
			],
			'tooltip_data' => static::get_site_editor_tooltip_data(),
		];
	}

	public static function get_editor_panel_config() {
		$panel_config = parent::get_editor_panel_config();
		$document_config = static::get_properties();

		if ( true === $document_config['support_site_editor'] ) {
			$panel_config['messages']['publish_notification'] = esc_html__( 'Congrats! Your Site Part is Live', 'elementor-pro' );
		}

		return $panel_config;
	}

	protected function get_have_a_look_url() {
		$document_config = static::get_properties();

		if ( true === $document_config['support_site_editor'] ) {
			return '';
		}

		return parent::get_have_a_look_url();
	}

	public static function get_create_url() {
		$base_create_url = Plugin::elementor()->documents->get_create_new_post_url( Source_Local::CPT );

		return add_query_arg( [ 'template_type' => static::get_type() ], $base_create_url );
	}

	protected static function get_site_editor_tooltip_data() {
		return [
			'title' => '',
			'content' => '',
			'tip' => '',
			'video_url' => '',
		];
	}

	public function get_name() {
		return static::get_type();
	}

	public function get_location_label() {
		$location = $this->get_location();
		$locations_settings = Module::instance()->get_locations_manager()->get_location( $location );
		$label = '';
		$is_section_doc_type = 'section' === $this->get_name();

		if ( $location ) {
			if ( $is_section_doc_type ) {
				$label .= isset( $locations_settings['label'] ) ? $locations_settings['label'] : $location;
			}
		}

		$supported = true;

		if ( $is_section_doc_type ) {
			if ( $location && ! $locations_settings ) {
				$supported = false;
			}
		} elseif ( ! $location || ! $locations_settings ) {
			$supported = false;
		}

		if ( ! $supported ) {
			$label .= ' (' . esc_html__( 'Unsupported', 'elementor-pro' ) . ')';
		}

		return $label;
	}

	public function before_get_content() {
		$preview_manager = Module::instance()->get_preview_manager();
		$preview_manager->switch_to_preview_query();
	}

	public function after_get_content() {
		$preview_manager = Module::instance()->get_preview_manager();
		$preview_manager->restore_current_query();
	}

	public function get_content( $with_css = false ) {
		$this->before_get_content();

		$content = parent::get_content( $with_css );

		$this->after_get_content();

		return $content;
	}

	public function print_content() {
		$plugin = Plugin::elementor();

		if ( $plugin->preview->is_preview_mode( $this->get_main_id() ) ) {
			// PHPCS - the method builder_wrapper is safe.
			echo $plugin->preview->builder_wrapper( '' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		} else {
			// PHPCS - the method get_content is safe.
			echo $this->get_content(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		}
	}

	public static function get_preview_as_default() {
		return '';
	}

	public static function get_preview_as_options() {
		return [];
	}

	public function get_container_attributes() {
		$attributes = parent::get_container_attributes();

		$location = Module::instance()->get_locations_manager()->get_current_location();

		if ( $location ) {
			$attributes['class'] .= ' elementor-location-' . $location;
		}

		return $attributes;
	}

	/**
	 * @static
	 * @since  2.0.0
	 * @access public
	 *
	 * @return string
	 */
	public function get_edit_url() {
		$url = parent::get_edit_url();

		if ( isset( $_GET['action'] ) && 'elementor_new_post' === $_GET['action'] ) {
			$url .= '#library';
		}

		return $url;

	}

	public function get_export_summary() {
		$summary = parent::get_export_summary();

		$summary['location'] = $this->get_location();

		$theme_builder = Plugin::instance()->modules_manager->get_modules( 'theme-builder' );

		$conditions = $theme_builder->get_conditions_manager()->get_document_conditions( $this );

		foreach ( $conditions as $condition ) {
			if ( 'include' === $condition['type'] && ! $condition['sub_id'] ) {
				$summary['conditions'][] = $condition;

				break;
			}
		}

		return $summary;
	}

	public function import( array $data ) {
		parent::import( $data );

		/** @var Module $theme_builder */
		$theme_builder = Plugin::instance()->modules_manager->get_modules( 'theme-builder' );

		$condition = $data['import_settings']['conditions'][0];

		$condition = rtrim( implode( '/', $condition ), '/' );

		$conflicts = $theme_builder->get_conditions_manager()->get_conditions_conflicts_by_location( $condition, $this->get_location() );

		if ( $conflicts ) {
			/** @var Import_Export_Module $import_export_module */
			$import_export_module = Plugin::elementor()->app->get_component( 'import-export' );

			$override_conditions = $import_export_module->import->get_settings( 'overrideConditions' );

			if ( ! $override_conditions || ! in_array( $data['id'], $override_conditions, true ) ) {
				return;
			}

			foreach ( $conflicts as $template ) {
				/** @var Theme_Document $template_document */
				$template_document = Plugin::elementor()->documents->get( $template['template_id'] );

				$template_conditions = $theme_builder->get_conditions_manager()->get_document_conditions( $template_document );

				foreach ( $template_conditions as $index => $template_condition ) {
					if ( ! $template_conditions['sub_id'] && ! $template_conditions['sub_name'] ) {
						unset( $template_conditions[ $index ] );
					}
				}

				$theme_builder->get_conditions_manager()->save_conditions( $template_document->get_main_id(), $template_conditions );
			}
		}

		$theme_builder->get_conditions_manager()->save_conditions( $this->get_main_id(), $data['import_settings']['conditions'] );
	}

	protected function register_controls() {
		parent::register_controls();

		$this->start_controls_section(
			'preview_settings',
			[
				'label' => esc_html__( 'Preview Settings', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_SETTINGS,
			]
		);

		$this->add_control(
			'preview_type',
			[
				'label' => esc_html__( 'Preview Dynamic Content as', 'elementor-pro' ),
				'label_block' => true,
				'type' => Controls_Manager::SELECT,
				'default' => $this::get_preview_as_default(),
				'groups' => $this::get_preview_as_options(),
				'export' => false,
			]
		);

		$this->add_control(
			'preview_id',
			[
				'type' => QueryModule::QUERY_CONTROL_ID,
				'label_block' => true,
				'autocomplete' => [
					'object' => QueryModule::QUERY_OBJECT_JS,
				],
				'separator' => 'none',
				'export' => false,
				'condition' => [
					'preview_type!' => [
						'',
						'search',
					],
				],
			]
		);

		$this->add_control(
			'preview_search_term',
			[
				'label' => esc_html__( 'Search Term', 'elementor-pro' ),
				'export' => false,
				'condition' => [
					'preview_type' => 'search',
				],
			]
		);

		$this->add_control(
			'apply_preview',
			[
				'type' => Controls_Manager::BUTTON,
				'label' => esc_html__( 'Apply & Preview', 'elementor-pro' ),
				'label_block' => true,
				'show_label' => false,
				'text' => esc_html__( 'Apply & Preview', 'elementor-pro' ),
				'separator' => 'none',
				'event' => 'elementorThemeBuilder:ApplyPreview',
			]
		);

		$this->end_controls_section();

		$this->inject_html_tag_control();
	}

	/**
	 * @since 2.9.0
	 *
	 * If the implementing document uses optional wrapper HTML tags, this method injects the control to choose the tag
	 */
	private function inject_html_tag_control() {
		$wrapper_tags = $this->get_wrapper_tags();

		// Only proceed if the implementing document has optional wrapper HTML tags to replace 'div'
		if ( ! $wrapper_tags ) {
			return;
		}

		// Add 'div' to the beginning of the list of wrapper tags
		array_unshift( $wrapper_tags, 'div' );

		/**
		 * Inject the control that sets the HTML tag for the header/footer wrapper element
		 */
		$this->start_injection( [
			'of' => 'post_status',
			'fallback' => [
				'of' => 'post_title',
			],
		] );

		$this->add_control(
			'content_wrapper_html_tag',
			[
				'label' => esc_html__( 'HTML Tag', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'div',
				'options' => array_combine( $wrapper_tags, $wrapper_tags ),
			]
		);

		$this->end_injection();
	}

	/**
	 * @param null $elements_data
	 * @since 2.9.0
	 * @access public
	 *
	 * Overwrite method from document.php to check for user-selected tags to use as the document wrapper element
	 */
	public function print_elements_with_wrapper( $elements_data = null ) {
		// Check if the implementing document has optional wrapper tags
		$has_wrapper_tags = $this->get_wrapper_tags();
		$settings = $this->get_settings_for_display();
		$wrapper_tag = 'div';

		// Only proceed if the inheriting document has optional wrapper HTML tags to replace 'div'
		if ( $has_wrapper_tags ) {
			$wrapper_tag = $settings['content_wrapper_html_tag'];
		}

		if ( ! $elements_data ) {
			$elements_data = $this->get_elements_data();
		}
		?>
		<<?php Utils::print_validated_html_tag( $wrapper_tag ); ?> <?php Utils::print_html_attributes( $this->get_container_attributes() ); ?>>
		<div class="elementor-section-wrap">
			<?php $this->print_elements( $elements_data ); ?>
		</div>
		</<?php Utils::print_validated_html_tag( $wrapper_tag ); ?>>
		<?php
	}

	public function get_wrapper_tags() {
		// 'div' is added later, no need to include it in this list
		return [
			'main',
			'article',
			'header',
			'footer',
			'section',
			'aside',
			'nav',
		];
	}

	public function get_elements_raw_data( $data = null, $with_html_content = false ) {
		$preview_manager = Module::instance()->get_preview_manager();

		$preview_manager->switch_to_preview_query();

		$editor_data = parent::get_elements_raw_data( $data, $with_html_content );

		$preview_manager->restore_current_query();

		return $editor_data;
	}

	public function render_element( $data ) {
		$preview_manager = Module::instance()->get_preview_manager();

		$preview_manager->switch_to_preview_query();

		$render_html = parent::render_element( $data );

		$preview_manager->restore_current_query();

		return $render_html;
	}

	public function get_wp_preview_url() {
		// Ajax request from editor.
		// PHPCS - the method is safe - just retrieving a value.
		if ( ! empty( $_POST['initial_document_id'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
			return parent::get_wp_preview_url();
		}

		$preview_id = (int) $this->get_settings( 'preview_id' );
		$post_id = $this->get_main_id();

		list( $preview_category, $preview_object_type ) = array_pad( explode( '/', $this->get_settings( 'preview_type' ) ), 2, '' );

		$home_url = trailingslashit( home_url() );

		switch ( $preview_category ) {
			case 'archive':
				switch ( $preview_object_type ) {
					case 'author':
						if ( empty( $preview_id ) ) {
							$preview_id = get_current_user_id();
						}
						$preview_url = get_author_posts_url( $preview_id );
						break;
					case 'date':
						$preview_url = add_query_arg( 'year', gmdate( 'Y' ), $home_url );
						break;
				}
				break;
			case 'search':
				$preview_url = add_query_arg( 's', $this->get_settings( 'preview_search_term' ), $home_url );
				break;
			case 'taxonomy':
				$term = get_term( $preview_id );

				if ( $term && ! is_wp_error( $term ) ) {
					$preview_url = get_term_link( $preview_id );
				}

				break;
			case 'page':
				switch ( $preview_object_type ) {
					case 'home':
						$preview_url = get_post_type_archive_link( 'post' );
						break;
					case 'front':
						$preview_url = $home_url;
						break;
					case '404':
						$preview_url = add_query_arg( 'p', '-1', $home_url );
						break;
				}
				break;
			case 'post_type_archive':
				$post_type = $preview_object_type;
				if ( post_type_exists( $post_type ) ) {
					$preview_url = get_post_type_archive_link( $post_type );
				}
				break;
			case 'single':
				$post = get_post( $preview_id );
				if ( $post ) {
					$preview_url = get_permalink( $post );
				}
				break;
		} // End switch().

		if ( empty( $preview_url ) ) {
			$preview_url = $this->get_permalink();
		}

		$query_args = [
			'preview' => true,
			'preview_nonce' => wp_create_nonce( 'post_preview_' . $post_id ),
			'theme_template_id' => $post_id,
		];

		$preview_url = set_url_scheme( add_query_arg( $query_args, $preview_url ) );

		/**
		 * Document "WordPress preview" URL.
		 *
		 * Filters the WordPress preview URL.
		 *
		 * @since 2.0.0
		 *
		 * @param Theme_Document $this An instance of the theme document.
		 */
		$preview_url = apply_filters( 'elementor/document/wp_preview_url', $preview_url, $this );

		return $preview_url;
	}

	public function get_preview_as_query_args() {
		$preview_id = (int) $this->get_settings( 'preview_id' );

		list( $preview_category, $preview_object_type ) = array_pad( explode( '/', $this->get_settings( 'preview_type' ) ), 2, '' );

		switch ( $preview_category ) {
			case 'archive':
				switch ( $preview_object_type ) {
					case 'author':
						if ( empty( $preview_id ) ) {
							$preview_id = get_current_user_id();
						}

						$query_args = [
							'author' => $preview_id,
						];
						break;
					case 'date':
						$query_args = [
							'year' => gmdate( 'Y' ),
						];
						break;
					case 'recent_posts':
						$query_args = [
							'post_type' => 'post',
						];
						break;
				}
				break;
			case 'search':
				$query_args = [
					's' => $this->get_settings( 'preview_search_term' ),
				];
				break;
			case 'taxonomy':
				$term = get_term( $preview_id );

				if ( $term && ! is_wp_error( $term ) ) {
					$query_args = [
						'tax_query' => [
							[
								'taxonomy' => $term->taxonomy,
								'terms' => [ $preview_id ],
								'field' => 'id',
							],
						],
					];
				}
				break;
			case 'page':
				switch ( $preview_object_type ) {
					case 'home':
						$query_args = [];
						break;
					case 'front':
						$query_args = [
							'p' => get_option( 'page_on_front' ),
							'post_type' => 'page',
						];
						break;
					case '404':
						$query_args = [
							'p' => -1,
						];
						break;
				}
				break;
			case 'post_type_archive':
				$post_type = $preview_object_type;
				if ( post_type_exists( $post_type ) ) {
					$query_args = [
						'post_type' => $post_type,
					];
				}
				break;
			case 'single':
				$post = get_post( $preview_id );
				if ( ! $post ) {
					break;
				}

				$query_args = [
					'p' => $post->ID,
					'post_type' => $post->post_type,
				];
		} // End switch().

		if ( empty( $query_args ) ) {
			$query_args = [
				'p' => $this->get_main_id(),
				'post_type' => $this->get_main_post()->post_type,
			];
		}

		return $query_args;
	}

	public function after_preview_switch_to_query() {
		global $wp_query;
		if ( 'archive/recent_posts' === $this->get_settings( 'preview_type' ) ) {
			$wp_query->is_archive = true;
		}
	}

	public function get_location() {
		$value = self::get_property( 'location' );
		if ( ! $value ) {
			$value = $this->get_main_meta( self::LOCATION_META_KEY );
		}

		return $value;
	}

	public function get_initial_config() {
		$config = parent::get_initial_config();

		$config['support_site_editor'] = static::get_property( 'support_site_editor' );

		return $config;
	}
}
modules/theme-builder/documents/section.php000064400000005016150755004310015122 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Documents;

use Elementor\Controls_Manager;
use ElementorPro\Modules\ThemeBuilder\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Section extends Theme_Section_Document {

	public function get_name() {
		return 'section';
	}

	public static function get_type() {
		return 'section';
	}

	public static function get_title() {
		return esc_html__( 'Section', 'elementor-pro' );
	}

	public static function get_plural_title() {
		return esc_html__( 'Sections', 'elementor-pro' );
	}

	public static function get_properties() {
		$properties = parent::get_properties();

		$properties['admin_tab_group'] = 'library';
		$properties['support_site_editor'] = false;

		return $properties;
	}

	protected function register_controls() {
		parent::register_controls();

		Module::instance()->get_locations_manager()->register_locations();

		$locations = Module::instance()->get_locations_manager()->get_locations( [
			'public' => true,
		] );

		if ( empty( $locations ) ) {
			return;
		}

		$this->start_controls_section(
			'location_settings',
			[
				'label' => esc_html__( 'Location Settings', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_SETTINGS,
			]
		);

		$options = [
			'' => esc_html__( 'Select', 'elementor-pro' ),
		];

		foreach ( $locations as $location => $settings ) {
			$options[ $location ] = $settings['label'];
		}

		$this->add_control(
			'location',
			[
				'label' => esc_html__( 'Location', 'elementor-pro' ),
				'label_block' => true,
				'type' => Controls_Manager::SELECT,
				'default' => $this->get_location(),
				'save_default' => true,
				'options' => $options,
			]
		);

		$this->add_control(
			'apply_location',
			[
				'type' => Controls_Manager::BUTTON,
				'label' => '',
				'text' => esc_html__( 'Apply', 'elementor-pro' ),
				'separator' => 'none',
				'event' => 'elementorThemeBuilder:ApplyPreview',
			]
		);

		$this->end_controls_section();
	}

	public function get_export_data() {
		$data = parent::get_export_data();

		$data['location'] = $this->get_location();

		return $data;
	}

	public function save_settings( $settings ) {
		if ( isset( $settings['location'] ) ) {
			if ( empty( $settings['location'] ) ) {
				$this->delete_main_meta( '_elementor_location' );
			} else {
				$this->update_main_meta( '_elementor_location', $settings['location'] );
				unset( $settings['location'] );
			}
			Module::instance()->get_conditions_manager()->get_cache()->regenerate();
		}

		parent::save_settings( $settings );
	}
}
modules/theme-builder/documents/single-post.php000064400000002446150755004310015726 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Documents;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Single_Post extends Single_Base {

	public static function get_type() {
		return 'single-post';
	}

	public static function get_title() {
		return esc_html__( 'Single Post', 'elementor-pro' );
	}

	public static function get_plural_title() {
		return esc_html__( 'Single Posts', 'elementor-pro' );
	}

	protected static function get_site_editor_icon() {
		return 'eicon-single-post';
	}

	protected static function get_site_editor_tooltip_data() {
		return [
			'title' => esc_html__( 'What is a Single Post Template?', 'elementor-pro' ),
			'content' => esc_html__( 'A single post template allows you to easily design the layout and style of posts, ensuring a design consistency throughout all your blog posts, for example.', 'elementor-pro' ),
			'tip' => esc_html__( 'You can create multiple single post templates, and assign each to a different category.', 'elementor-pro' ),
			'docs' => 'https://go.elementor.com/app-theme-builder-post',
			'video_url' => 'https://www.youtube.com/embed/8Fk-Edu7DL0',
		];
	}

	protected function get_remote_library_config() {
		$config = parent::get_remote_library_config();

		$config['category'] = 'single post';

		return $config;
	}
}
modules/theme-builder/documents/archive.php000064400000006276150755004310015110 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Documents;

use ElementorPro\Modules\ThemeBuilder\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Archive extends Archive_Single_Base {

	public static function get_properties() {
		$properties = parent::get_properties();

		$properties['location'] = 'archive';
		$properties['condition_type'] = 'archive';

		return $properties;
	}

	public static function get_type() {
		return 'archive';
	}

	public static function get_title() {
		return esc_html__( 'Archive', 'elementor-pro' );
	}

	public static function get_plural_title() {
		return esc_html__( 'Archives', 'elementor-pro' );
	}

	protected static function get_site_editor_icon() {
		return 'eicon-archive';
	}

	protected static function get_site_editor_tooltip_data() {
		return [
			'title' => esc_html__( 'What is an Archive Template?', 'elementor-pro' ),
			'content' => esc_html__( 'An archive template allows you to easily design the layout and style of archive pages - those pages that show a list of posts (e.g. a blog’s list of recent posts), which may be filtered by terms such as authors, categories, tags, search results, etc.', 'elementor-pro' ),
			'tip' => esc_html__( 'If you’d like a different style for a specific category, it’s easy to create a separate archive template whose condition is to only display when users are viewing that category’s list of posts.', 'elementor-pro' ),
			'docs' => 'https://go.elementor.com/app-theme-builder-archive',
			'video_url' => 'https://www.youtube.com/embed/wxElpEh9bfA',
		];
	}

	protected static function get_editor_panel_categories() {
		$categories = [
			'theme-elements-archive' => [
				'title' => esc_html__( 'Archive', 'elementor-pro' ),
			],
		];

		return $categories + parent::get_editor_panel_categories();
	}

	public static function get_preview_as_default() {
		return 'archive/recent_posts';
	}

	public static function get_preview_as_options() {
		$post_type_archives = [];

		$taxonomies = [];

		$post_types = Module::get_public_post_types();

		foreach ( $post_types as $post_type => $label ) {
			$post_type_object = get_post_type_object( $post_type );

			if ( $post_type_object->has_archive ) {
				$post_type_archives[ 'post_type_archive/' . $post_type ] = sprintf( esc_html__( '%s Archive', 'elementor-pro' ), $post_type_object->label );
			}

			$post_type_taxonomies = get_object_taxonomies( $post_type, 'objects' );

			$post_type_taxonomies = wp_filter_object_list( $post_type_taxonomies, [
				'public' => true,
				'show_in_nav_menus' => true,
			] );

			foreach ( $post_type_taxonomies as $slug => $object ) {
				$taxonomies[ 'taxonomy/' . $slug ] = sprintf( esc_html__( '%s Archive', 'elementor-pro' ), $object->label );
			}
		}

		$options = [
			'archive/recent_posts' => esc_html__( 'Recent Posts', 'elementor-pro' ),
			'archive/date' => esc_html__( 'Date Archive', 'elementor-pro' ),
			'archive/author' => esc_html__( 'Author Archive', 'elementor-pro' ),
			'search' => esc_html__( 'Search Results', 'elementor-pro' ),
		];

		$options += $taxonomies + $post_type_archives;

		return [
			'archive' => [
				'label' => esc_html__( 'Archive', 'elementor-pro' ),
				'options' => $options,
			],
		];
	}
}
modules/theme-builder/documents/single-base.php000064400000012002150755004310015640 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Documents;

use Elementor\DB;
use ElementorPro\Modules\ThemeBuilder\Module;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Single_Base extends Archive_Single_Base {

	public static function get_properties() {
		$properties = parent::get_properties();

		$properties['location'] = 'single';
		$properties['condition_type'] = 'singular';

		return $properties;
	}

	public static function get_title() {
		return esc_html__( 'Single', 'elementor-pro' );
	}

	public static function get_plural_title() {
		return esc_html__( 'Singles', 'elementor-pro' );
	}

	public static function get_editor_panel_config() {
		$config = parent::get_editor_panel_config();

		$config['widgets_settings']['theme-post-content'] = [
			'show_in_panel' => true,
		];

		return $config;
	}

	protected static function get_editor_panel_categories() {
		$categories = [
			'theme-elements-single' => [
				'title' => esc_html__( 'Single', 'elementor-pro' ),
			],
		];

		return $categories + parent::get_editor_panel_categories();
	}

	public function before_get_content() {
		parent::before_get_content();

		// For `loop_start` hook.
		if ( have_posts() ) {
			the_post();
		}
	}

	public function after_get_content() {
		wp_reset_postdata();

		parent::after_get_content();
	}

	public function get_container_attributes() {
		$attributes = parent::get_container_attributes();

		if ( is_singular() /* Not 404 */ ) {
			$post_classes = get_post_class( '', get_the_ID() );
			$attributes['class'] .= ' ' . implode( ' ', $post_classes );
		}

		return $attributes;
	}

	public function print_content() {
		$requested_post_id = get_the_ID();
		if ( $requested_post_id !== $this->post->ID ) {
			$requested_document = Module::instance()->get_document( $requested_post_id );

			/**
			 * if current requested document is theme-document & it's not a content type ( like header/footer/sidebar )
			 * show a placeholder instead of content.
			 */
			if ( $requested_document && ! $requested_document instanceof Section && $requested_document->get_location() !== $this->get_location() ) {
				echo '<div class="elementor-theme-builder-content-area">' . esc_html__( 'Content Area', 'elementor-pro' ) . '</div>';

				return;
			}
		}

		parent::print_content();
	}

	protected function register_controls() {
		parent::register_controls();

		$post_type = $this->get_main_meta( self::REMOTE_CATEGORY_META_KEY );

		$latest_posts = get_posts( [
			'posts_per_page' => 1,
			'post_type' => $post_type,
		] );

		if ( ! empty( $latest_posts ) ) {
			$this->update_control(
				'preview_type',
				[
					'default' => 'single/' . $post_type,
				]
			);

			$this->update_control(
				'preview_id',
				[
					'default' => $latest_posts[0]->ID,
				]
			);
		}
	}

	public static function get_preview_as_options() {
		$post_types = Module::get_public_post_types();

		$post_types['attachment'] = get_post_type_object( 'attachment' )->label;
		$post_types_options = [];

		foreach ( $post_types as $post_type => $label ) {
			$post_types_options[ 'single/' . $post_type ] = get_post_type_object( $post_type )->labels->singular_name;
		}

		return [
			'single' => [
				'label' => esc_html__( 'Single', 'elementor-pro' ),
				'options' => $post_types_options,
			],
			'page/404' => esc_html__( '404', 'elementor-pro' ),
		];
	}

	public function get_depended_widget() {
		return Plugin::elementor()->widgets_manager->get_widget_types( 'theme-post-content' );
	}

	public function get_elements_data( $status = DB::STATUS_PUBLISH ) {
		$data = parent::get_elements_data();

		if ( Plugin::elementor()->preview->is_preview_mode() && self::get_property( 'location' ) === Module::instance()->get_locations_manager()->get_current_location() ) {
			$has_the_content = false;

			$depended_widget = $this->get_depended_widget();

			Plugin::elementor()->db->iterate_data( $data, function( $element ) use ( &$has_the_content, $depended_widget ) {
				if ( isset( $element['widgetType'] ) && $depended_widget->get_name() === $element['widgetType'] ) {
					$has_the_content = true;
				}
			} );

			if ( ! $has_the_content ) {
				add_action( 'wp_footer', [ $this, 'preview_error_handler' ] );
			}
		}

		return $data;
	}

	public function preview_error_handler() {
		$depended_widget_title = $this->get_depended_widget()->get_title();

		wp_localize_script( 'elementor-frontend', 'elementorPreviewErrorArgs', [
			/* translators: %s: is the widget name. */
			'headerMessage' => sprintf( esc_html__( 'The %s Widget was not found in your template.', 'elementor-pro' ), $depended_widget_title ),
			/* translators: %1$s: is the widget name. %2$s: is the template name.  */
			'message' => sprintf( esc_html__( 'You must include the %1$s Widget in your template (%2$s), in order for Elementor to work on this page.', 'elementor-pro' ), $depended_widget_title, '<strong>' . static::get_title() . '</strong>' ),
			'strings' => [
				'confirm' => esc_html__( 'Edit Template', 'elementor-pro' ),
			],
			'confirmURL' => $this->get_edit_url(),
		] );
	}
}
modules/theme-builder/documents/footer.php000064400000002364150755004310014757 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Documents;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Footer extends Header_Footer_Base {

	public static function get_properties() {
		$properties = parent::get_properties();

		$properties['location'] = 'footer';

		return $properties;
	}

	public static function get_type() {
		return 'footer';
	}

	public static function get_title() {
		return esc_html__( 'Footer', 'elementor-pro' );
	}

	public static function get_plural_title() {
		return esc_html__( 'Footers', 'elementor-pro' );
	}

	protected static function get_site_editor_icon() {
		return 'eicon-footer';
	}

	protected static function get_site_editor_tooltip_data() {
		return [
			'title' => esc_html__( 'What is a Footer Template?', 'elementor-pro' ),
			'content' => esc_html__( 'The footer template allows you to easily design and edit custom WordPress footers without the limits of your theme’s footer design constraints', 'elementor-pro' ),
			'tip' => esc_html__( 'You can create multiple footers, and assign each to different areas of your site.', 'elementor-pro' ),
			'docs' => 'https://go.elementor.com/app-theme-builder-footer',
			'video_url' => 'https://www.youtube.com/embed/xa8DoR4tQrY',
		];
	}
}
modules/theme-builder/documents/theme-page-document.php000064400000007027150755004310017312 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Documents;

use Elementor\Controls_Manager;
use Elementor\Core\DocumentTypes\Post;
use Elementor\Modules\PageTemplates\Module as PageTemplatesModule;
use Elementor\TemplateLibrary\Source_Local;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Theme_Page_Document extends Theme_Document {

	/**
	 * Document sub type meta key.
	 */
	const REMOTE_CATEGORY_META_KEY = '_elementor_template_sub_type';

	public function get_css_wrapper_selector() {
		return 'body.elementor-page-' . $this->get_main_id();
	}

	public static function get_properties() {
		$properties = parent::get_properties();

		$properties['support_wp_page_templates'] = true;

		return $properties;
	}

	protected function register_controls() {
		parent::register_controls();

		$this->start_injection( [
			'of' => 'post_status',
			'fallback' => [
				'of' => 'post_title',
			],
		] );

		$this->add_control(
			'page_template',
			[
				'label' => esc_html__( 'Page Layout', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'Default', 'elementor-pro' ),
					PageTemplatesModule::TEMPLATE_CANVAS => esc_html__( 'Elementor Canvas', 'elementor-pro' ),
					PageTemplatesModule::TEMPLATE_HEADER_FOOTER => esc_html__( 'Elementor Full Width', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'page_template_default_description',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'Default Page Template from your theme', 'elementor-pro' ),
				'separator' => 'none',
				'content_classes' => 'elementor-descriptor',
				'condition' => [
					'page_template' => 'default',
				],
			]
		);

		$this->add_control(
			'page_template_canvas_description',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'No header, no footer, just Elementor', 'elementor-pro' ),
				'separator' => 'none',
				'content_classes' => 'elementor-descriptor',
				'condition' => [
					'page_template' => PageTemplatesModule::TEMPLATE_CANVAS,
				],
			]
		);

		$this->add_control(
			'page_template_header_footer_description',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'This template includes the header, full-width content and footer', 'elementor-pro' ),
				'separator' => 'none',
				'content_classes' => 'elementor-descriptor',
				'condition' => [
					'page_template' => PageTemplatesModule::TEMPLATE_HEADER_FOOTER,
				],
			]
		);

		$this->end_injection();

		Post::register_style_controls( $this );
	}

	/**
	 * Add body classes.
	 *
	 * Add the body classes for the `style` controls selector.
	 *
	 * @param $body_classes
	 *
	 * @return array
	 */
	public function filter_body_classes( $body_classes ) {
		// Indicator for edit/preview an `archive` document, so it's a `single` elementor_library post - but need a behavior like an archive.
		$is_archive_template = 'archive' === Source_Local::get_template_type( get_the_ID() );

		$add_body_class = false;

		if ( $this instanceof Archive && ( is_archive() || is_search() || is_home() || $is_archive_template ) ) {
			$add_body_class = true;
		} elseif ( $this instanceof Single_Base && ( is_singular() || is_404() ) && ! $is_archive_template ) {
			$add_body_class = true;
		}

		if ( $add_body_class ) {
			$body_classes[] = 'elementor-page-' . $this->get_main_id();
		}

		return $body_classes;
	}

	public function __construct( array $data = [] ) {
		if ( $data ) {
			add_filter( 'body_class', [ $this, 'filter_body_classes' ] );
		}

		parent::__construct( $data );
	}
}
modules/theme-builder/documents/header-footer-base.php000064400000002006150755004310017106 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Documents;

use Elementor\Core\DocumentTypes\Post;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Header_Footer_Base extends Theme_Section_Document {

	public function get_css_wrapper_selector() {
		return '.elementor-' . $this->get_main_id();
	}

	protected static function get_editor_panel_categories() {
		// Move to top as active.
		$categories = [
			'theme-elements' => [
				'title' => esc_html__( 'Site', 'elementor-pro' ),
				'active' => true,
			],
		];

		return $categories + parent::get_editor_panel_categories();
	}

	protected function register_controls() {
		parent::register_controls();

		Post::register_style_controls( $this );

		$this->update_control(
			'section_page_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
			]
		);
	}

	protected function get_remote_library_config() {
		$config = parent::get_remote_library_config();

		$config['category'] = $this->get_name();

		return $config;
	}
}
modules/theme-builder/documents/theme-section-document.php000064400000001550150755004310020035 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Documents;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Theme_Section_Document extends Theme_Document {

	public static function get_properties() {
		$properties = parent::get_properties();

		$properties['condition_type'] = 'general';

		return $properties;
	}

	protected static function get_site_editor_layout() {
		return 'strip';
	}

	public static function get_preview_as_default() {
		return '';
	}

	public static function get_preview_as_options() {
		return array_merge(
			[
				'' => esc_html__( 'Select...', 'elementor-pro' ),
			],
			Archive::get_preview_as_options(),
			Single::get_preview_as_options()
		);
	}

	protected function get_remote_library_config() {
		$config = parent::get_remote_library_config();

		$config['category'] = '';

		return $config;
	}
}
modules/theme-builder/skins/posts-archive-skin-classic.php000064400000001636150755004310017760 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Skins;

use ElementorPro\Modules\Posts\Skins\Skin_Classic;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Posts_Archive_Skin_Classic extends Skin_Classic {
	use Posts_Archive_Skin_Base;

	protected function _register_controls_actions() {
		add_action( 'elementor/element/archive-posts/section_layout/before_section_end', [ $this, 'register_controls' ] );
		add_action( 'elementor/element/archive-posts/section_layout/after_section_end', [ $this, 'register_style_sections' ] );
	}

	public function get_id() {
		return 'archive_classic';
	}

	public function get_title() {
		return esc_html__( 'Classic', 'elementor-pro' );
	}

	public function get_container_class() {
		// Use parent class and parent css.
		return 'elementor-posts--skin-classic';
	}

	/* Remove `posts_per_page` control */
	protected function register_post_count_control(){}
}
modules/theme-builder/skins/posts-archive-skin-base.php000064400000001606150755004310017246 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Skins;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

trait Posts_Archive_Skin_Base {

	public function render() {
		$this->parent->query_posts();

		$wp_query = $this->parent->get_query();

		if ( ! $wp_query->found_posts ) {
			$this->render_loop_header();

			$should_escape = apply_filters( 'elementor_pro/theme_builder/archive/escape_nothing_found_message', true );

			$message = $this->parent->get_settings_for_display( 'nothing_found_message' );
			if ( $should_escape ) {
				$message = esc_html( $message );
			}

			?>
				<div class="elementor-posts-nothing-found">
					<?php
						// PHPCS - escaped before if should escape
						echo $message; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
					?>
				</div>
			<?php

			$this->render_loop_footer();

			return;
		}

		parent::render();
	}
}
modules/theme-builder/skins/posts-archive-skin-cards.php000064400000002063150755004310017426 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Skins;

use ElementorPro\Modules\Posts\Skins\Skin_Cards;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Posts_Archive_Skin_Cards extends Skin_Cards {
	use Posts_Archive_Skin_Base;

	protected function _register_controls_actions() {
		add_action( 'elementor/element/archive-posts/section_layout/before_section_end', [ $this, 'register_controls' ] );
		add_action( 'elementor/element/archive-posts/section_layout/after_section_end', [ $this, 'register_style_sections' ] );
		add_action( 'elementor/element/archive-posts/archive_cards_section_design_image/before_section_end', [ $this, 'register_additional_design_image_controls' ] );
	}

	public function get_id() {
		return 'archive_cards';
	}

	public function get_title() {
		return esc_html__( 'Cards', 'elementor-pro' );
	}

	public function get_container_class() {
		// Use parent class and parent css.
		return 'elementor-posts--skin-cards';
	}

	/* Remove `posts_per_page` control */
	protected function register_post_count_control(){}
}
modules/theme-builder/skins/post-comments-skin-classic.php000064400000030274150755004310020001 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Skins;

use Elementor\Skin_Base;
use Elementor\Controls_Manager;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Typography;
use Elementor\Core\Schemes\Color;
use Elementor\Core\Schemes\Typography;
use Elementor\Utils;
use ElementorPro\Modules\ThemeBuilder\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Comments_Skin_Classic extends Skin_Base {

	public function get_id() {
		return 'skin-classic';
	}

	public function get_title() {
		return 'Skin Classic';
	}

	protected function _register_controls_actions() {
		add_action( 'elementor/element/post-comments/section_content/after_section_end', [ $this, 'register_controls' ] );
	}

	public function register_controls() {
		$this->start_controls_section(
			'section_title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'default' => '[field id="comment-count"]',
				'label_block' => true,
				'dynamic' => [
					'types' => [
						'text',
					],
					'apply_on' => 'value',
					'allow_free_text' => true,
					'allow_multiple' => true,
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_content',
			[
				'label' => esc_html__( 'Content', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'show_gravatar',
			[
				'label' => esc_html__( 'Gravatar', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style',
			[
				'label' => esc_html__( 'Comments', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'row_gap',
			[
				'label' => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => '10',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-comment' => 'margin-bottom: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'row_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#ffffff',
				'selectors' => [
					'{{WRAPPER}} .elementor-comment' => 'background-color: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'row_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-comment' => 'border-color: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'row_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'placeholder' => '1',
				'size_units' => [ 'px' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-comment' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'row_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-comment' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_meta_style',
			[
				'label' => esc_html__( 'Meta', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'meta_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => '0',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-comment .comment-meta' => 'padding-bottom: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'meta_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-comment .comment-meta' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'meta_typography',
				'selector' => '{{WRAPPER}} .elementor-comment .comment-meta',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_content_style',
			[
				'label' => esc_html__( 'Content', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'content_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-comment .comment-content' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'content__typography',
				'selector' => '{{WRAPPER}} .elementor-comment .comment-content',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_reply_button_style',
			[
				'label' => esc_html__( 'Reply Button', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->start_controls_tabs( 'tabs_reply_button_style' );

		$this->start_controls_tab(
			'tab_reply_button_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'reply_button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-comment .comment-reply-link' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'reply_button_typography',
				'label' => esc_html__( 'Typography', 'elementor-pro' ),
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
				'selector' => '{{WRAPPER}} .elementor-comment .comment-reply-link',
			]
		);

		$this->add_control(
			'reply_button_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-comment .comment-reply-link' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(), [
				'name' => 'reply_button_border',
				'label' => esc_html__( 'Border', 'elementor-pro' ),
				'placeholder' => '1px',
				'default' => '1px',
				'selector' => '{{WRAPPER}} .elementor-comment .comment-reply-link',
			]
		);

		$this->add_control(
			'reply_button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-comment .comment-reply-link' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'reply_button_text_padding',
			[
				'label' => esc_html__( 'Text Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-comment .comment-reply-link' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_reply_button_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_hover_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-comment .comment-reply-link:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'reply_button_background_hover_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-comment .comment-reply-link:hover' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'reply_button_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-comment .comment-reply-link:hover' => 'border-color: {{VALUE}};',
				],
				'condition' => [
					$this->get_control_id( 'reply_button_border_border!' ) => '',
				],
			]
		);

		$this->add_control(
			'reply_button_hover_animation',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::HOVER_ANIMATION,
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();
	}

	public function render() {

		Module::instance()->get_preview_manager()->switch_to_preview_query();

		// Hack to remove template comment form
		$comments_template_callback = function() {
			return __DIR__ . '/../views/comments-template.php';
		};

		add_filter( 'comments_template', $comments_template_callback );

		// The `comments_template` doesn't has an API to pass current widget instance, so make it global
		$GLOBALS['post_comment_skin_classic'] = $this;

		comments_template();

		remove_filter( 'comments_template', $comments_template_callback );

		unset( $GLOBALS['post_comment_skin_classic'] );

		Module::instance()->get_preview_manager()->restore_current_query();
	}

	public function comment_callback( $comment, $args, $depth ) {
		$tag = ( 'div' === $args['style'] ) ? 'div' : 'li';
		$class = 'elementor-comment';
		if ( ! empty( $args['has_children'] ) ) {
			$class .= ' parent';
		}
		?>
		<<?php Utils::print_validated_html_tag( $tag ); ?> id="comment-<?php comment_ID(); ?>" <?php comment_class( $class, $comment ); ?>>
		<article id="div-comment-<?php comment_ID(); ?>" class="comment-body">
			<footer class="comment-meta">
				<div class="comment-author vcard">
					<?php
					if ( 0 < $args['avatar_size'] ) {
						echo get_avatar( $comment, $args['avatar_size'] );
					}
					?>
					<?php
					printf(
						/* translators: 1: Comment author link, 2: Span open tag, 3: Span closing tag. */
						esc_html__( '%1$s %2$ssays:%3$s', 'elementor-pro' ),
						sprintf( '<b class="fn">%s</b>', get_comment_author_link( $comment ) ),
						'<span class="says">',
						'</span>'
					);
					?>
				</div><!-- .comment-author -->

				<div class="comment-metadata">
					<a href="<?php echo esc_url( get_comment_link( $comment, $args ) ); ?>">
						<time datetime="<?php comment_time( 'c' ); ?>">
							<?php
							/* translators: 1: Comment date, 2: Comment time. */
							wp_kses_post( sprintf( esc_html__( '%1$s at %2$s', 'elementor-pro' ), get_comment_date( '', $comment ), get_comment_time() ) );
							?>
						</time>
					</a>
					<?php edit_comment_link( esc_html__( 'Edit', 'elementor-pro' ), '<span class="edit-link">', '</span>' ); ?>
				</div><!-- .comment-metadata -->

				<?php if ( '0' == $comment->comment_approved ) : ?>
					<p class="comment-awaiting-moderation"><?php esc_html_e( 'Your comment is awaiting moderation.', 'elementor-pro' ); ?></p>
				<?php endif; ?>
			</footer><!-- .comment-meta -->

			<div class="comment-content">
				<?php comment_text(); ?>
			</div><!-- .comment-content -->

			<?php
			comment_reply_link( array_merge( $args, [
				'add_below' => 'div-comment',
				'depth' => $depth,
				'max_depth' => $args['max_depth'],
				'before' => '<div class="reply">',
				'after' => '</div>',
			] ) );
			?>
		</article><!-- .comment-body -->
		</<?php Utils::print_validated_html_tag( $tag ); ?>>
		<?php
	}
}
modules/theme-builder/skins/posts-archive-skin-full-content.php000064400000001011150755004310020734 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Skins;

use ElementorPro\Modules\Posts\Skins\Skin_Full_Content;
use ElementorPro\Modules\Posts\Skins\Skin_Content_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Posts_Archive_Skin_Full_Content extends Skin_Full_Content {
	use Skin_Content_Base;
	use Posts_Archive_Skin_Base;

	public function get_id() {
		return 'archive_full_content';
	}

	/* Remove `posts_per_page` control */
	protected function register_post_count_control(){}
}
modules/theme-builder/assets/images/conditions-tab.svg000064400000005437150755004310017160 0ustar00<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
        <path d="M31.6255378,12.1221401 L31.6341569,18.93599 C31.6350386,19.6330181 31.071146,20.1990205 30.3741195,20.2007419 L19.4952319,20.2276087 C19.0068974,20.2288147 18.6100464,19.833919 18.6088404,19.3455845 C18.6080727,19.0347203 18.770606,18.7462889 19.0369148,18.5859244 L30.6681498,11.5818844 C30.966966,11.4019447 31.3550743,11.4983132 31.5350139,11.7971294 C31.5941018,11.8952534 31.6253929,12.0075989 31.6255378,12.1221401 Z" fill="#F1F3F5"></path>
        <path d="M41.7191752,32.3361377 L41.7277943,39.1499877 C41.728676,39.8470158 41.1647835,40.4130181 40.4677569,40.4147395 L29.5888693,40.4416063 C29.1005348,40.4428123 28.7036838,40.0479166 28.7024778,39.5595821 C28.7017101,39.2487179 28.8642435,38.9602865 29.1305522,38.799922 L40.7617872,31.795882 C41.0606034,31.6159423 41.4487117,31.7123108 41.6286514,32.011127 C41.6877392,32.109251 41.7190304,32.2215966 41.7191752,32.3361377 Z" fill="#F1F3F5"></path>
        <path d="M21.5086489,32.3361377 L21.517268,39.1499877 C21.5181497,39.8470158 20.9542571,40.4130181 20.2572306,40.4147395 L9.378343,40.4416063 C8.8900085,40.4428123 8.49315752,40.0479166 8.49195151,39.5595821 C8.49118379,39.2487179 8.65371715,38.9602865 8.9200259,38.799922 L20.5512609,31.795882 C20.8500771,31.6159423 21.2381854,31.7123108 21.4181251,32.011127 C21.4772129,32.109251 21.508504,32.2215966 21.5086489,32.3361377 Z" fill="#F1F3F5"></path>
        <path d="M18.9473684,11.2421053 L30.3157895,11.2421053" stroke="#71D7F7" stroke-width="1.64210526"></path>
        <rect stroke="#A4AFB7" stroke-width="1.64210526" x="18.5052632" y="9.66315789" width="12.2526316" height="9.72631579" rx="1.26315789"></rect>
        <path d="M8.84210526,31.4526316 L20.2105263,31.4526316" stroke="#71D7F7" stroke-width="1.64210526"></path>
        <rect stroke="#A4AFB7" stroke-width="1.64210526" x="8.4" y="29.8736842" width="12.2526316" height="9.72631579" rx="1.26315789"></rect>
        <path d="M29.0526316,31.4526316 L40.4210526,31.4526316" stroke="#71D7F7" stroke-width="1.64210526"></path>
        <rect stroke="#A4AFB7" stroke-width="1.64210526" x="28.6105263" y="29.8736842" width="12.2526316" height="9.72631579" rx="1.26315789"></rect>
        <path d="M14.5263158,30.3157895 L14.5263158,25.8947368 C14.5263158,25.197114 15.0918508,24.6315789 15.7894737,24.6315789 L33.4736842,24.6315789 C34.1713071,24.6315789 34.7368421,25.197114 34.7368421,25.8947368 L34.7368421,30.3157895" stroke="#A4AFB7" stroke-width="1.64210526"></path>
        <path d="M24.6315789,18.9473684 L24.6315789,24" stroke="#A4AFB7" stroke-width="1.64210526"></path>
    </g>
</svg>modules/theme-builder/classes/theme-support.php000064400000007076150755004310015736 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Classes;

use ElementorPro\Modules\ThemeBuilder\Module;
use ElementorPro\Modules\ThemeBuilder\ThemeSupport\GeneratePress_Theme_Support;
use ElementorPro\Modules\ThemeBuilder\ThemeSupport\Safe_Mode_Theme_Support;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Theme_Support {

	public function __construct() {
		add_action( 'init', [ $this, 'init' ] );
	}

	public function init() {
		$theme = wp_get_theme();

		switch ( $theme->get_template() ) {
			case 'generatepress':
				new GeneratePress_Theme_Support();
				break;
			case 'elementor-safe':
				new Safe_Mode_Theme_Support();
				break;
		}

		add_action( 'elementor/theme/register_locations', [ $this, 'after_register_locations' ], 99 );
	}

	/**
	 * @param Locations_Manager $location_manager
	 */
	public function after_register_locations( $location_manager ) {
		$core_locations = $location_manager->get_core_locations();
		$overwrite_header_location = false;
		$overwrite_footer_location = false;

		foreach ( $core_locations as $location => $settings ) {
			if ( ! $location_manager->get_location( $location ) ) {
				if ( 'header' === $location ) {
					$overwrite_header_location = true;
				} elseif ( 'footer' === $location ) {
					$overwrite_footer_location = true;
				}
				$location_manager->register_core_location( $location, [
					'overwrite' => true,
				] );
			}
		}

		if ( $overwrite_header_location || $overwrite_footer_location ) {
			/** @var Module $theme_builder_module */
			$theme_builder_module = Module::instance();

			$conditions_manager = $theme_builder_module->get_conditions_manager();

			$headers = $conditions_manager->get_documents_for_location( 'header' );
			$footers = $conditions_manager->get_documents_for_location( 'footer' );

			if ( ! empty( $headers ) || ! empty( $footers ) ) {
				add_action( 'get_header', [ $this, 'get_header' ] );
				add_action( 'get_footer', [ $this, 'get_footer' ] );
				add_filter( 'show_admin_bar', [ $this, 'filter_admin_bar_from_body_open' ] );
			}
		}
	}

	public function get_header( $name ) {
		require __DIR__ . '/../views/theme-support-header.php';

		$templates = [];
		$name = (string) $name;
		if ( '' !== $name ) {
			$templates[] = "header-{$name}.php";
		}

		$templates[] = 'header.php';

		// Avoid running wp_head hooks again
		remove_all_actions( 'wp_head' );
		ob_start();
		// It cause a `require_once` so, in the get_header it self it will not be required again.
		locate_template( $templates, true );
		ob_get_clean();
	}

	/**
	 * Don't show admin bar on `wp_body_open` because the theme header HTML is ignored via `$this->get_header()`.
	 *
	 * @param bool $show_admin_bar
	 *
	 * @return bool
	 */
	public function filter_admin_bar_from_body_open( $show_admin_bar ) {
		global $wp_current_filter;

		// A flag to mark if $show_admin_bar is switched to false during this filter,
		// if so, it needed to switch back on the next filter (wp_footer).
		static $switched = false;

		if ( $show_admin_bar && in_array( 'wp_body_open', $wp_current_filter ) ) {
			$show_admin_bar = false;
			$switched = true;
		} elseif ( $switched ) {
			$show_admin_bar = true;
		}

		return $show_admin_bar;
	}

	public function get_footer( $name ) {
		require __DIR__ . '/../views/theme-support-footer.php';

		$templates = [];
		$name = (string) $name;
		if ( '' !== $name ) {
			$templates[] = "footer-{$name}.php";
		}

		$templates[] = 'footer.php';

		ob_start();
		// It cause a `require_once` so, in the get_header it self it will not be required again.
		locate_template( $templates, true );
		ob_get_clean();
	}
}
modules/theme-builder/classes/preview-manager.php000064400000004417150755004310016207 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Classes;

use ElementorPro\Modules\ThemeBuilder\Documents\Theme_Document;
use ElementorPro\Modules\ThemeBuilder\Module;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Preview_Manager {

	public function __construct() {
		add_filter( 'elementor/query/get_query_args/current_query', [ $this, 'filter_query_control_args' ] );
		add_filter( 'elementor/theme/posts_archive/query_posts/query_vars', [ $this, 'filter_query_control_args' ] );
		add_filter( 'elementor_pro/dynamic_tags/post_terms/taxonomy_args', [ $this, 'filter_post_terms_taxonomy_arg' ] );

		add_action( 'elementor/template-library/before_get_source_data', [ $this, 'switch_to_preview_query' ] );
		add_action( 'elementor/template-library/after_get_source_data', [ $this, 'restore_current_query' ] );
		add_action( 'elementor/dynamic_tags/before_render', [ $this, 'switch_to_preview_query' ] );
		add_action( 'elementor/dynamic_tags/after_render', [ $this, 'restore_current_query' ] );
	}

	public function filter_post_terms_taxonomy_arg( $taxonomy_args ) {
		$current_post_id = get_the_ID();
		$document = Module::instance()->get_document( $current_post_id );

		if ( $document ) {
			// Show all taxonomies
			unset( $taxonomy_args['object_type'] );
		}

		return $taxonomy_args;
	}

	/**
	 * @access public
	 *
	 * @param $query_vars array
	 *
	 * @return array
	 */
	public function filter_query_control_args( $query_vars ) {
		$document = Plugin::elementor()->documents->get_doc_or_auto_save( get_the_ID() );

		if ( $document && $document instanceof Theme_Document ) {
			$query_vars = $document->get_preview_as_query_args();
		}

		return $query_vars;
	}

	/**
	 * @access public
	 */
	public function switch_to_preview_query() {
		$current_post_id = get_the_ID();
		$document = Plugin::elementor()->documents->get_doc_or_auto_save( $current_post_id );

		if ( ! $document || ! $document instanceof Theme_Document ) {
			return;
		}

		$new_query_vars = $document->get_preview_as_query_args();

		Plugin::elementor()->db->switch_to_query( $new_query_vars, true );

		$document->after_preview_switch_to_query();
	}

	/**
	 * @access public
	 */
	public function restore_current_query() {
		Plugin::elementor()->db->restore_current_query();
	}
}
modules/theme-builder/classes/conditions-cache.php000064400000005421150755004310016324 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Classes;

use Elementor\TemplateLibrary\Source_Local;
use ElementorPro\Modules\ThemeBuilder\Documents\Theme_Document;
use ElementorPro\Modules\ThemeBuilder\Module;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Conditions_Cache {

	const OPTION_NAME = 'elementor_pro_theme_builder_conditions';

	protected $conditions = [];

	public function __construct() {
		$this->refresh();
	}

	/**
	 * @param Theme_Document $document
	 * @param array          $conditions
	 *
	 * @return $this
	 */
	public function add( Theme_Document $document, array $conditions ) {
		$location = $document->get_location();
		if ( $location ) {
			if ( ! isset( $this->conditions[ $location ] ) ) {
				$this->conditions[ $location ] = [];
			}
			$this->conditions[ $location ][ $document->get_main_id() ] = $conditions;
		}

		return $this;
	}

	/**
	 * @param int $post_id
	 *
	 * @return $this
	 */
	public function remove( $post_id ) {
		$post_id = absint( $post_id );

		foreach ( $this->conditions as $location => $templates ) {
			foreach ( $templates as $id => $template ) {
				if ( $post_id === $id ) {
					unset( $this->conditions[ $location ][ $id ] );
				}
			}
		}

		return $this;
	}

	/**
	 * @param Theme_Document $document
	 * @param array          $conditions
	 *
	 * @return $this
	 */
	public function update( $document, $conditions ) {
		return $this->remove( $document->get_main_id() )->add( $document, $conditions );
	}

	public function save() {
		return update_option( self::OPTION_NAME, $this->conditions );
	}

	public function refresh() {
		$this->conditions = get_option( self::OPTION_NAME, [] );

		return $this;
	}

	public function clear() {
		$this->conditions = [];

		return $this;
	}

	public function get_by_location( $location ) {
		if ( isset( $this->conditions[ $location ] ) ) {
			return $this->conditions[ $location ];
		}

		return [];
	}

	public function regenerate() {
		$this->clear();

		$document_types = Plugin::elementor()->documents->get_document_types();

		$post_types = [
			Source_Local::CPT,
		];

		foreach ( $document_types as $document_type ) {
			if ( $document_type::get_property( 'support_conditions' ) && $document_type::get_property( 'cpt' ) ) {
				$post_types = array_merge( $post_types, $document_type::get_property( 'cpt' ) );
			}
		}

		$query = new \WP_Query( [
			'posts_per_page' => -1,
			'post_type' => $post_types,
			'fields' => 'ids',
			'meta_key' => '_elementor_conditions',
		] );

		foreach ( $query->posts as $post_id ) {
			$document = Module::instance()->get_document( $post_id );

			if ( $document ) {
				$conditions = $document->get_meta( '_elementor_conditions' );
				$this->add( $document, $conditions );
			}
		}

		$this->save();

		return $this;
	}
}
modules/theme-builder/classes/conditions-manager.php000064400000034114150755004310016674 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Classes;

use Elementor\Core\Common\Modules\Ajax\Module as Ajax;
use Elementor\Core\Utils\Exceptions;
use Elementor\TemplateLibrary\Source_Local;
use ElementorPro\Modules\ThemeBuilder\Documents\Theme_Document;
use ElementorPro\Modules\ThemeBuilder\Module;
use ElementorPro\Modules\ThemeBuilder\Conditions\Condition_Base;


if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Conditions_Manager {

	/**
	 * @var Condition_Base[]
	 */
	private $conditions = [];

	/**
	 * @var Conditions_Cache
	 */
	private $cache;

	private $location_cache = [];

	public function __construct() {
		$this->cache = new Conditions_Cache();

		add_action( 'wp_loaded', [ $this, 'register_conditions' ] ); // After Plugins Registered CPT.
		add_action( 'wp_trash_post', [ $this, 'purge_post_from_cache' ] );
		add_action( 'untrashed_post', [ $this, 'on_untrash_post' ] );
		add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] );

		add_action( 'manage_' . Source_Local::CPT . '_posts_columns', [ $this, 'admin_columns_headers' ] );
		add_action( 'manage_' . Source_Local::CPT . '_posts_custom_column', [ $this, 'admin_columns_content' ], 10, 2 );
	}

	public function on_untrash_post( $post_id ) {
		/** @var Module $theme_builder_module */
		$theme_builder_module = Module::instance();

		$document = $theme_builder_module->get_document( $post_id );

		if ( $document ) {
			$conditions = $document->get_meta( '_elementor_conditions' );

			if ( $conditions ) {
				$this->cache->add( $document, $conditions )->save();
			}
		}
	}

	public function admin_columns_headers( $posts_columns ) {
		$offset = 3;

		$posts_columns = array_slice( $posts_columns, 0, $offset, true ) + [
			'instances' => esc_html__( 'Instances', 'elementor-pro' ),
		] + array_slice( $posts_columns, $offset, null, true );

		return $posts_columns;
	}

	public function admin_columns_content( $column_name, $post_id ) {
		if ( 'instances' !== $column_name ) {
			return;
		}

		$instances = $this->get_document_instances( $post_id );

		if ( ! empty( $instances ) ) {
			// PHPCS - the method get_document_instances is safe.
			echo implode( '<br />', $instances ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		} else {
			echo esc_html__( 'None', 'elementor-pro' );
		}
	}

	/**
	 * @access public
	 *
	 * @param Ajax $ajax_manager
	 */
	public function register_ajax_actions( $ajax_manager ) {
		$ajax_manager->register_ajax_action( 'pro_theme_builder_save_conditions', [ $this, 'ajax_save_theme_template_conditions' ] );
		$ajax_manager->register_ajax_action( 'pro_theme_builder_conditions_check_conflicts', [ $this, 'ajax_check_conditions_conflicts' ] );
	}

	public function ajax_check_conditions_conflicts( $request ) {
		$post_id = intval( $request['editor_post_id'] );
		$condition = $request['condition'];

		unset( $condition['_id'] );

		$condition = rtrim( implode( '/', $condition ), '/' );

		$conflicted = array_map( function ( $conflict ) {
			return sprintf(
				'<a href="%s" target="_blank">%s</a>', $conflict['edit_url'], $conflict['template_title']
			);
		}, $this->get_conditions_conflicts( $post_id, $condition ) );

		if ( empty( $conflicted ) ) {
			return '';
		}

		return esc_html__( 'Elementor recognized that you have set this location for other templates: ', 'elementor-pro' ) .
			' ' .
			implode( ', ', $conflicted );
	}

	public function get_conditions_conflicts_by_location( $condition, $location, $ignore_post_id = null ) {
		/** @var Module $theme_builder_module */
		$theme_builder_module = Module::instance();

		$location_settings = $theme_builder_module->get_locations_manager()->get_location( $location );

		if ( ! empty( $location_settings['multiple'] ) ) {
			return [];
		}

		$conditions_groups = $this->cache->get_by_location( $location );

		$conflicted = [];

		if ( ! empty( $conditions_groups ) ) {
			foreach ( $conditions_groups as $template_id => $conditions ) {
				if ( ! get_post( $template_id ) ) {
					$this->purge_post_from_cache( $template_id );
				}

				if ( $ignore_post_id === $template_id ) {
					continue;
				}

				if ( false !== array_search( $condition, $conditions, true ) ) {
					$edit_url = $theme_builder_module->get_document( $template_id )->get_edit_url();

					$conflicted[] = [
						'template_id' => $template_id,
						'template_title' => esc_html( get_the_title( $template_id ) ),
						'edit_url' => $edit_url,
					];
				}
			}
		}

		return $conflicted;
	}

	public function get_conditions_conflicts( $post_id, $condition ) {
		/** @var Module $theme_builder_module */
		$theme_builder_module = Module::instance();

		$document = $theme_builder_module->get_document( $post_id );

		return $this->get_conditions_conflicts_by_location( $condition, $document->get_location(), $post_id );
	}

	public function ajax_save_theme_template_conditions( $request ) {
		if ( ! isset( $request['conditions'] ) ) {
			$request['conditions'] = [];
		}
		$is_saved = $this->save_conditions( $request['editor_post_id'], $request['conditions'] );

		if ( ! $is_saved ) {
			throw new \Exception( 'Error while saving conditions.', Exceptions::INTERNAL_SERVER_ERROR );
		}
	}

	private function register_condition( $id, $args = [] ) {
		if ( isset( $this->conditions[ $id ] ) ) {
			return;
		}

		$class_name = ucfirst( $id );
		$class_name = '\\ElementorPro\\Modules\\ThemeBuilder\\Conditions\\' . $class_name;
		/** @var Condition_Base $condition */
		$condition = new $class_name( $args );
		$this->register_condition_instance( $condition );

		foreach ( $condition->get_sub_conditions() as $key => $val ) {
			if ( is_numeric( $key ) ) {
				$id = $val;
				$args = [];
			} else {
				$id = $key;
				$args = $val;
			}
			$this->register_condition( $id, $args );
		}
	}

	/**
	 * @param Condition_Base $instance
	 */
	public function register_condition_instance( $instance ) {
		$this->conditions[ $instance->get_name() ] = $instance;
	}

	/**
	 * @param $id
	 *
	 * @return Condition_Base|bool
	 */
	public function get_condition( $id ) {
		return isset( $this->conditions[ $id ] ) ? $this->conditions[ $id ] : false;
	}

	public function get_conditions_config() {
		$config = [];

		foreach ( $this->conditions as $condition ) {
			$config[ $condition->get_name() ] = $condition->get_config();
		}

		return $config;
	}

	public function get_document_instances( $post_id ) {
		/** @var Module $theme_builder_module */
		$theme_builder_module = Module::instance();

		$document = $theme_builder_module->get_document( $post_id );

		$summary = [];

		if ( ! $document ) {
			return $summary;
		}

		$document_conditions = $this->get_document_conditions( $document );

		if ( ! empty( $document_conditions ) ) {
			foreach ( $document_conditions as $document_condition ) {
				if ( 'exclude' === $document_condition['type'] ) {
					continue;
				}

				$condition_name = ! empty( $document_condition['sub_name'] ) ? $document_condition['sub_name'] : $document_condition['name'];

				$condition = $this->get_condition( $condition_name );
				if ( ! $condition ) {
					continue;
				}

				if ( ! empty( $document_condition['sub_id'] ) ) {
					$instance_label = $condition->get_label() . " #{$document_condition['sub_id']}";
				} else {
					$instance_label = $condition->get_all_label();
				}

				$summary[ $condition->get_name() ] = $instance_label;
			}
		}

		return $summary;
	}

	public function register_conditions() {
		$this->register_condition( 'general' );

		do_action( 'elementor/theme/register_conditions', $this );
	}

	public function save_conditions( $post_id, $conditions ) {
		$conditions_to_save = [];

		foreach ( $conditions as $condition ) {
			unset( $condition['_id'] );
			$conditions_to_save[] = rtrim( implode( '/', $condition ), '/' );
		}

		/** @var Module $theme_builder_module */
		$theme_builder_module = Module::instance();

		$document = $theme_builder_module->get_document( $post_id );

		if ( empty( $conditions_to_save ) ) {
			// TODO: $document->delete_meta.
			$is_saved = delete_post_meta( $post_id, '_elementor_conditions' );
		} else {
			$is_saved = $document->update_meta( '_elementor_conditions', $conditions_to_save );
		}

		$this->cache->regenerate();

		return $is_saved;
	}

	public function get_location_templates( $location ) {
		$conditions_priority = [];

		$conditions_groups = $this->cache->get_by_location( $location );

		if ( empty( $conditions_groups ) ) {
			return $conditions_priority;
		}

		/** @var Module $theme_builder_module */
		$theme_builder_module = Module::instance();

		$location_manager = $theme_builder_module->get_locations_manager();
		$excludes = [];

		foreach ( $conditions_groups as $theme_template_id => $conditions ) {
			$theme_template_id = apply_filters( 'elementor/theme/get_location_templates/template_id', $theme_template_id );

			foreach ( $conditions as $condition ) {
				$parsed_condition = $this->parse_condition( $condition );

				$include = $parsed_condition['type'];
				$name = $parsed_condition['name'];
				$sub_name = $parsed_condition['sub_name'];
				$sub_id = $parsed_condition['sub_id'];

				$is_include = 'include' === $include;
				$condition_instance = $this->get_condition( $name );

				if ( ! $condition_instance ) {
					continue;
				}

				$condition_pass = $condition_instance->check( [] );
				$sub_condition_instance = null;

				if ( $condition_pass && $sub_name ) {
					$sub_condition_instance = $this->get_condition( $sub_name );
					if ( ! $sub_condition_instance ) {
						continue;
					}

					$args = [
						'id' => apply_filters( 'elementor/theme/get_location_templates/condition_sub_id', $sub_id, $parsed_condition ),
					];

					$condition_pass = $sub_condition_instance->check( $args );
				}

				if ( $condition_pass ) {

					$post_status = get_post_status( $theme_template_id );

					if ( 'publish' !== $post_status ) {
						$location_manager->inspector_log( [
							'location' => $location,
							'document' => $theme_builder_module->get_document( $theme_template_id ),
							'description' => 'Skipped, is not Published',
						] );
						continue;
					}

					if ( $is_include ) {
						$conditions_priority[ $theme_template_id ] = $this->get_condition_priority( $condition_instance, $sub_condition_instance, $sub_id );
					} else {
						$excludes[] = $theme_template_id;
					}
				}
			} // End foreach().
		} // End foreach().

		foreach ( $excludes as $exclude_id ) {
			unset( $conditions_priority[ $exclude_id ] );
		}

		asort( $conditions_priority );

		return $conditions_priority;
	}

	public function get_theme_templates_ids( $location ) {
		/** @var Module $theme_builder_module */
		$theme_builder_module = Module::instance();

		$location_manager = $theme_builder_module->get_locations_manager();

		// In case the user want to preview any page with a theme_template_id,
		// like http://domain.com/any-post/?preview=1&theme_template_id=6453
		if ( ! empty( $_GET['theme_template_id'] ) ) {
			$force_template_id = $_GET['theme_template_id'];
			$document = $theme_builder_module->get_document( $force_template_id );
			// e.g. header / header
			if ( $document && $location === $document->get_location() ) {
				$location_manager->inspector_log( [
					'location' => $location,
					'document' => $document,
					'description' => 'Force Template by URL param',
				] );

				return [
					$force_template_id => 1,
				];
			}
		}

		$current_post_id = get_the_ID();
		$document = $theme_builder_module->get_document( $current_post_id );
		if ( $document && $location === $document->get_location() ) {
			$location_manager->inspector_log( [
				'location' => $location,
				'document' => $document,
				'description' => 'Current Edited Template',
			] );

			return [
				$current_post_id => 1,
			];
		}

		$templates = $this->get_location_templates( $location );

		return $templates;
	}

	/**
	 * @param Condition_Base $condition_instance
	 * @param Condition_Base $sub_condition_instance
	 * @param int            $sub_id
	 *
	 * @return mixed
	 * @throws \Exception
	 */
	private function get_condition_priority( $condition_instance, $sub_condition_instance, $sub_id ) {
		$priority = $condition_instance::get_priority();

		if ( $sub_condition_instance ) {
			if ( $sub_condition_instance::get_priority() < $priority ) {
				$priority = $sub_condition_instance::get_priority();
			}

			$priority -= 10;

			if ( $sub_id ) {
				$priority -= 10;
			} elseif ( 0 === count( $sub_condition_instance->get_sub_conditions() ) ) {
				// if no sub conditions - it's more specific.
				$priority -= 5;
			}
		}

		return $priority;
	}

	/**
	 * @param Theme_Document $document
	 *
	 * @return array
	 */
	public function get_document_conditions( $document ) {
		$saved_conditions = $document->get_main_meta( '_elementor_conditions' );
		$conditions = [];

		if ( is_array( $saved_conditions ) ) {
			foreach ( $saved_conditions as $condition ) {
				$conditions[] = $this->parse_condition( $condition );
			}
		}

		return $conditions;
	}

	protected function parse_condition( $condition ) {
		list ( $type, $name, $sub_name, $sub_id ) = array_pad( explode( '/', $condition ), 4, '' );

		return compact( 'type', 'name', 'sub_name', 'sub_id' );
	}

	/**
	 * @param $location
	 *
	 * @return Theme_Document[]
	 */
	public function get_documents_for_location( $location ) {
		if ( isset( $this->location_cache[ $location ] ) ) {
			return $this->location_cache[ $location ];
		}

		$theme_templates_ids = $this->get_theme_templates_ids( $location );

		/** @var Module $theme_builder_module */
		$theme_builder_module = Module::instance();

		$location_settings = $theme_builder_module->get_locations_manager()->get_location( $location );

		$documents = [];

		foreach ( $theme_templates_ids as $theme_template_id => $priority ) {
			$document = $theme_builder_module->get_document( $theme_template_id );
			if ( $document ) {
				$documents[ $theme_template_id ] = $document;
			}

			if ( empty( $location_settings['multiple'] ) ) {
				break;
			}
		}

		$this->location_cache[ $location ] = $documents;

		return $documents;
	}

	public function purge_post_from_cache( $post_id ) {
		return $this->cache->remove( $post_id )->save();
	}

	public function get_cache() {
		return $this->cache;
	}

	public function clear_location_cache() {
		$this->location_cache = [];
	}
}
modules/theme-builder/classes/conditions-repeater.php000064400000003155150755004310017072 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Classes;

use Elementor\Control_Repeater;
use Elementor\Controls_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Conditions_Repeater extends Control_Repeater {

	const CONTROL_TYPE = 'conditions_repeater';

	public function get_type() {
		return self::CONTROL_TYPE;
	}

	protected function get_default_settings() {
		return array_merge( parent::get_default_settings(), [
			'render_type' => 'none',
			'fields' => [
				[
					'name' => 'type',
					'type' => Controls_Manager::SELECT,
					'default' => 'include',
					'options' => [
						'include' => esc_html__( 'Include', 'elementor-pro' ),
						'exclude' => esc_html__( 'Exclude', 'elementor-pro' ),
					],
				],
				[
					'name' => 'name',
					'type' => Controls_Manager::SELECT,
					'default' => 'general',
					'groups' => [
						[
							'label' => esc_html__( 'General', 'elementor-pro' ),
							'options' => [],
						],
					],
				],
				[
					'name' => 'sub_name',
					'type' => Controls_Manager::SELECT,
					'options' => [
						'' => esc_html__( 'All', 'elementor-pro' ),
					],
					'conditions' => [
						'terms' => [
							[
								'name' => 'name',
								'operator' => '!==',
								'value' => '',
							],
						],
					],
				],
				[
					'name' => 'sub_id',
					'type' => Controls_Manager::SELECT,
					'options' => [
						'' => esc_html__( 'All', 'elementor-pro' ),
					],
					'conditions' => [
						'terms' => [
							[
								'name' => 'sub_name',
								'operator' => '!==',
								'value' => '',
							],
						],
					],
				],
			],
		] );
	}
}
modules/theme-builder/classes/locations-manager.php000064400000037526150755004310016530 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Classes;

use Elementor\Core\Files\CSS\Post as Post_CSS;
use ElementorPro\Core\Utils;
use ElementorPro\Modules\ThemeBuilder\Documents\Theme_Document;
use ElementorPro\Modules\ThemeBuilder\Module;
use ElementorPro\Plugin;
use Elementor\Modules\PageTemplates\Module as PageTemplatesModule;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Locations_Manager {

	protected $core_locations = [];
	protected $locations = [];
	protected $did_locations = [];
	protected $current_location;
	protected $current_page_template = '';
	protected $locations_queue = [];
	protected $locations_printed = [];
	protected $locations_skipped = [];

	public function __construct() {
		$this->set_core_locations();

		add_filter( 'the_content', [ $this, 'builder_wrapper' ], 9999999 ); // 9999999 = after preview->builder_wrapper
		add_filter( 'template_include', [ $this, 'template_include' ], 11 ); // 11 = after WooCommerce.
		add_action( 'template_redirect', [ $this, 'register_locations' ] );

		add_filter( 'elementor/admin/create_new_post/meta', [ $this, 'filter_add_location_meta_on_create_new_post' ] );

		if ( ! Module::is_preview() ) {
			add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_styles' ] );
		}
	}

	public function register_locations() {
		// Run Once.
		if ( ! did_action( 'elementor/theme/register_locations' ) ) {
			/**
			 * Register theme locations.
			 *
			 * Fires after template files where included but before locations
			 * have been registered.
			 *
			 * This is where Elementor theme locations are registered by
			 * external themes.
			 *
			 * @since 2.0.0
			 *
			 * @param Locations_Manager $this An instance of locations manager.
			 */
			do_action( 'elementor/theme/register_locations', $this );
		}
	}

	public function enqueue_styles() {
		$locations = $this->get_locations();

		if ( empty( $locations ) ) {
			return;
		}

		if ( ! empty( $this->current_page_template ) ) {
			$locations = $this->filter_page_template_locations( $locations );
		}

		$current_post_id = get_the_ID();

		/** @var Post_CSS[] $css_files */
		$css_files = [];

		foreach ( $locations as $location => $settings ) {
			$documents = Module::instance()->get_conditions_manager()->get_documents_for_location( $location );
			foreach ( $documents as $document ) {
				$post_id = $document->get_post()->ID;

				// Don't enqueue current post here (let the  preview/frontend components to handle it)
				if ( $current_post_id !== $post_id ) {
					$css_file = new Post_CSS( $post_id );
					$css_files[] = $css_file;
				}
			}
		}

		if ( ! empty( $css_files ) ) {
			// Enqueue the frontend styles manually also for pages that don't built with Elementor.
			Plugin::elementor()->frontend->enqueue_styles();

			// Enqueue after the frontend styles to override them.
			foreach ( $css_files as $css_file ) {
				$css_file->enqueue();
			}
		}
	}

	public function template_include( $template ) {
		$location = '';

		if ( is_singular() ) {
			$document = Plugin::elementor()->documents->get_doc_for_frontend( get_the_ID() );
			if ( $document && $document::get_property( 'support_wp_page_templates' ) ) {
				$wp_page_template = $document->get_meta( '_wp_page_template' );
				if ( $wp_page_template && 'default' !== $wp_page_template ) {
					$this->inspector_log( [
						'template' => $template,
						'description' => 'Template File: WP Page Template',
					] );
					$this->current_page_template = $wp_page_template;
					return $template;
				}
			}
		} else {
			$document = false;
		}

		if ( $document && $document instanceof Theme_Document ) {
			// For editor preview iframe.
			$location = $document->get_location();
		} elseif ( function_exists( 'is_shop' ) && is_shop() ) {
			$location = 'archive';
		} elseif ( is_archive() || is_tax() || is_home() || is_search() ) {
			$location = 'archive';
		} elseif ( is_singular() || is_404() ) {
			$location = 'single';
		}

		if ( $location ) {
			$location_settings = $this->get_location( $location );
			$location_documents = Module::instance()->get_conditions_manager()->get_documents_for_location( $location );
			if ( empty( $location_documents ) ) {
				$this->inspector_log( [
					'template' => $template,
					'description' => 'Template File: No Templates for condition',
				] );

				return $template;
			}

			if ( 'single' === $location || 'archive' === $location ) {
				$first_key = key( $location_documents );
				$theme_document = $location_documents[ $first_key ];

				if ( Module::is_preview() && $theme_document->get_autosave_id() ) {
					$theme_document = $theme_document->get_autosave();
				}

				$document_page_template = $theme_document->get_settings( 'page_template' );
				if ( $document_page_template ) {
					$page_template = $document_page_template;
					$this->inspector_log( [
						'document' => $theme_document,
						'template' => $template,
						'description' => 'Template File: Document Page Template',
					] );
				}
			}
		}

		/**
		 * @var \Elementor\Modules\PageTemplates\Module $page_templates_module
		 */
		$page_templates_module = Plugin::elementor()->modules_manager->get_modules( 'page-templates' );

		// If is a `content` document or the theme is not support the document location (top header/ sidebar and etc.).
		$location_exist = ! empty( $location_settings );
		$is_header_footer = 'header' === $location || 'footer' === $location;
		$need_override_location = ! empty( $location_settings['overwrite'] ) && ! $is_header_footer;

		$need_override_location = apply_filters( 'elementor/theme/need_override_location', $need_override_location, $location, $this );

		if ( $location && empty( $page_template ) && ( ! $location_exist || $need_override_location ) ) {
			$page_template = $page_templates_module::TEMPLATE_HEADER_FOOTER;
		}

		if ( ! empty( $page_template ) ) {
			$template_path = $page_templates_module->get_template_path( $page_template );

			if ( $template_path ) {
				$page_templates_module->set_print_callback( function() use ( $location ) {
					Module::instance()->get_locations_manager()->do_location( $location );
				} );

				$this->inspector_log( [
					'location' => $location,
					'template' => $template_path,
					'description' => $location_exist ? 'Template File: Location Settings (Override)' : 'Template File: Location not exit',
				] );

				$template = $template_path;
			}
		}

		return $template;
	}

	/**
	 * @param string $location
	 * @param integer $document_id
	 */
	public function add_doc_to_location( $location, $document_id ) {
		if ( isset( $this->locations_skipped[ $location ][ $document_id ] ) ) {
			// Don't re-add skipped documents.
			return;
		}

		if ( ! isset( $this->locations_queue[ $location ] ) ) {
			$this->locations_queue[ $location ] = [];
		}

		$this->locations_queue[ $location ][ $document_id ] = $document_id;
	}

	public function remove_doc_from_location( $location, $document_id ) {
		unset( $this->locations_queue[ $location ][ $document_id ] );
	}

	public function skip_doc_in_location( $location, $document_id ) {
		$this->remove_doc_from_location( $location, $document_id );

		if ( ! isset( $this->locations_skipped[ $location ] ) ) {
			$this->locations_skipped[ $location ] = [];
		}

		$this->locations_skipped[ $location ][ $document_id ] = $document_id;
	}

	public function is_printed( $location, $document_id ) {
		return isset( $this->locations_printed[ $location ][ $document_id ] );
	}

	public function set_is_printed( $location, $document_id ) {
		if ( ! isset( $this->locations_printed[ $location ] ) ) {
			$this->locations_printed[ $location ] = [];
		}

		$this->locations_printed[ $location ][ $document_id ] = $document_id;
		$this->remove_doc_from_location( $location, $document_id );
	}

	public function do_location( $location ) {
		/** @var Theme_Document[] $documents_by_conditions */
		$documents_by_conditions = Module::instance()->get_conditions_manager()->get_documents_for_location( $location );

		foreach ( $documents_by_conditions as $document_id => $document ) {
			$this->add_doc_to_location( $location, $document_id );
		}

		// Locations Queue can contain documents that added manually.
		if ( empty( $this->locations_queue[ $location ] ) ) {
			return false;
		}

		if ( is_singular() ) {
			Utils::set_global_authordata();
		}

		/**
		 * Before location content printed.
		 *
		 * Fires before Elementor location was printed.
		 *
		 * The dynamic portion of the hook name, `$location`, refers to the location name.
		 *
		 * @since 2.0.0
		 *
		 * @param Locations_Manager $this An instance of locations manager.
		 */
		do_action( "elementor/theme/before_do_{$location}", $this );

		while ( ! empty( $this->locations_queue[ $location ] ) ) {
			$document_id = key( $this->locations_queue[ $location ] );
			$document = Module::instance()->get_document( $document_id );

			if ( ! $document || $this->is_printed( $location, $document_id ) ) {
				$this->skip_doc_in_location( $location, $document_id );
				continue;
			}

			// `$documents_by_conditions` can pe current post even if it's a draft.
			if ( empty( $documents_by_conditions[ $document_id ] ) ) {

				$post_status = get_post_status( $document_id );

				if ( 'publish' !== $post_status ) {
					$this->inspector_log( [
						'location' => $location,
						'document' => $document,
						'description' => 'Added manually but skipped because is not Published',
					] );

					$this->skip_doc_in_location( $location, $document_id );
					continue;
				}
			}

			$this->inspector_log( [
				'location' => $location,
				'document' => $document,
				'description' => isset( $documents_by_conditions[ $document_id ] ) ? 'Added By Condition' : 'Added Manually',

			] );

			$this->current_location = $location;
			$document->print_content();
			$this->did_locations[] = $this->current_location;
			$this->current_location = null;

			$this->set_is_printed( $location, $document_id );
		}

		/**
		 * After location content printed.
		 *
		 * Fires after Elementor location was printed.
		 *
		 * The dynamic portion of the hook name, `$location`, refers to the location name.
		 *
		 * @since 2.0.0
		 *
		 * @param Locations_Manager $this An instance of locations manager.
		 */
		do_action( "elementor/theme/after_do_{$location}", $this );

		return true;
	}

	public function did_location( $location ) {
		return in_array( $location, $this->did_locations, true );
	}

	public function get_current_location() {
		return $this->current_location;
	}

	public function builder_wrapper( $content ) {
		$post_id = get_the_ID();

		if ( $post_id ) {
			$document = Module::instance()->get_document( $post_id );
			if ( $document ) {
				$document_location = $document->get_location();
				$location_settings = $this->get_location( $document_location );
				// If is a `content` document or the theme is not support the document location (header/footer and etc.).
				if ( $location_settings && ! $location_settings['edit_in_content'] ) {
					$content = '<div class="elementor-theme-builder-content-area">' . esc_html__( 'Content Area', 'elementor-pro' ) . '</div>';
				}
			}
		}

		return $content;
	}

	public function get_locations( $filter_args = [] ) {
		$this->register_locations();

		if ( is_string( $filter_args ) ) {
			_deprecated_argument( __FUNCTION__, '2.4.0', 'Passing a location name is deprecated. Use `get_location` instead.' );
			return $this->get_location( $filter_args );
		}

		return wp_list_filter( $this->locations, $filter_args );
	}

	public function get_location( $location ) {
		$locations = $this->get_locations();

		if ( isset( $locations[ $location ] ) ) {
			$location_config = $locations[ $location ];
		} else {
			$location_config = [];
		}

		return $location_config;
	}

	public function get_doc_location( $post_id ) {
		/** @var Theme_Document $document */
		$document = Plugin::elementor()->documents->get( $post_id );

		return $document->get_location();
	}

	public function get_core_locations() {
		return $this->core_locations;
	}

	public function register_all_core_location() {
		foreach ( $this->core_locations as $location => $settings ) {
			$this->register_location( $location, $settings );
		}
	}

	public function register_location( $location, $args = [] ) {
		$args = wp_parse_args( $args, [
			'label' => $location,
			'multiple' => false,
			'public' => true,
			'edit_in_content' => true,
			'hook' => 'elementor/theme/' . $location,
		] );

		$this->locations[ $location ] = $args;

		add_action( $args['hook'], function() use ( $location, $args ) {
			$did_location = Module::instance()->get_locations_manager()->do_location( $location );

			if ( $did_location && ! empty( $args['remove_hooks'] ) ) {
				foreach ( $args['remove_hooks'] as $item ) {
					remove_action( $args['hook'], $item );
				}
			}
		}, 5 );
	}

	public function register_core_location( $location, $args = [] ) {
		if ( ! isset( $this->core_locations[ $location ] ) ) {
			/* translators: %s: Location name. */
			wp_die( esc_html( sprintf( esc_html__( 'Location \'%s\' is not a core location.', 'elementor-pro' ), $location ) ) );
		}

		$args = array_replace_recursive( $this->core_locations[ $location ], $args );

		$this->register_location( $location, $args );
	}

	public function location_exits( $location = '', $check_match = false ) {
		$location_exits = ! ! $this->get_location( $location );

		if ( $location_exits && $check_match ) {
			$location_exits = ! ! Module::instance()->get_conditions_manager()->get_documents_for_location( $location );
		}

		return $location_exits;
	}

	public function filter_add_location_meta_on_create_new_post( $meta ) {
		if ( ! empty( $_GET['meta_location'] ) ) {
			$meta[ Theme_Document::LOCATION_META_KEY ] = $_GET['meta_location'];
		}

		return $meta;
	}

	private function set_core_locations() {
		$this->core_locations = [
			'header' => [
				'is_core' => true,
				'public' => false,
				'label' => esc_html__( 'Header', 'elementor-pro' ),
				'edit_in_content' => false,
			],
			'footer' => [
				'is_core' => true,
				'public' => false,
				'label' => esc_html__( 'Footer', 'elementor-pro' ),
				'edit_in_content' => false,
			],
			'archive' => [
				'is_core' => true,
				'public' => false,
				'overwrite' => true,
				'label' => esc_html__( 'Archive', 'elementor-pro' ),
				'edit_in_content' => true,
			],
			'single' => [
				'is_core' => true,
				'public' => false,
				'label' => esc_html__( 'Single', 'elementor-pro' ),
				'edit_in_content' => true,
			],
		];
	}

	public function inspector_log( $args ) {
		$inspector_enabled = method_exists( Plugin::elementor()->inspector, 'is_enabled' ) && Plugin::elementor()->inspector->is_enabled();
		if ( ! $inspector_enabled ) {
			return;
		}

		$title = [];
		$url = '';

		if ( isset( $args['location'] ) ) {
			$location_settings = $this->get_location( $args['location'] );
			if ( $location_settings ) {
				$args['location'] = $location_settings['label'];
			}
			$title[] = 'Location: ' . $args['location'];
		}

		if ( isset( $args['description'] ) ) {
			$title[] = $args['description'];
		}

		if ( ! empty( $args['document'] ) ) {
			$title[] = esc_html( $args['document']->get_post()->post_title );
			$url = $args['document']->get_edit_url();
		}

		if ( isset( $args['template'] ) ) {
			$title[] = Plugin::elementor()->inspector->parse_template_path( $args['template'] );
		}

		$title = implode( ' > ', $title );

		Plugin::elementor()->inspector->add_log( 'Theme', $title, $url );
	}

	private function filter_page_template_locations( array $locations ) {
		$templates_to_filter = [
			PageTemplatesModule::TEMPLATE_CANVAS,
			PageTemplatesModule::TEMPLATE_HEADER_FOOTER,
		];

		if ( ! in_array( $this->current_page_template, $templates_to_filter, true ) ) {
			return $locations;
		}

		if ( PageTemplatesModule::TEMPLATE_CANVAS === $this->current_page_template ) {
			$allowed_core = [];
		} else {
			$allowed_core = [ 'header', 'footer' ];
		}

		foreach ( $locations as $location => $settings ) {
			if ( ! empty( $settings['is_core'] ) && ! in_array( $location, $allowed_core, true ) ) {
				unset( $locations[ $location ] );
			}
		}

		return $locations;
	}
}
modules/theme-builder/classes/template-conditions.php000064400000000753150755004310017077 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Classes;

use Elementor\Controls_Stack;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Template_Conditions extends Controls_Stack {

	public function get_name() {
		return 'template-conditions';
	}

	protected function register_controls() {
		parent::register_controls();

		$this->add_control(
			'conditions',
			[
				'section' => 'settings',
				'type' => Conditions_Repeater::CONTROL_TYPE,
			]
		);
	}
}
modules/theme-builder/classes/templates-types-manager.php000064400000003021150755004310017654 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Classes;

use ElementorPro\Modules\ThemeBuilder\Documents;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Templates_Types_Manager {
	private $docs_types = [];

	public function __construct() {
		add_action( 'elementor/documents/register', [ $this, 'register_documents' ] );
	}

	public function get_types_config( $args = [] ) {
		$config = [];

		$document_types = Plugin::elementor()->documents->get_document_types( $args );

		foreach ( $document_types as $type => $document_type ) {
			$properties = $document_type::get_properties();

			if ( ( new $document_type() ) instanceof Documents\Theme_Document ) {
				$config[ $type ] = $properties;
			}
		}

		return $config;
	}

	public function register_documents() {
		$this->docs_types = [
			'section' => Documents\Section::get_class_full_name(),
			'header' => Documents\Header::get_class_full_name(),
			'footer' => Documents\Footer::get_class_full_name(),
			'single' => Documents\Single::get_class_full_name(),
			'single-post' => Documents\Single_Post::get_class_full_name(),
			'single-page' => Documents\Single_Page::get_class_full_name(),
			'archive' => Documents\Archive::get_class_full_name(),
			'search-results' => Documents\Search_Results::get_class_full_name(),
			'error-404' => Documents\Error_404::get_class_full_name(),
		];

		foreach ( $this->docs_types as $type => $class_name ) {
			Plugin::elementor()->documents->register_document_type( $type, $class_name );
		}
	}
}
modules/theme-builder/conditions/child-of.php000064400000002414150755004310015312 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

use ElementorPro\Modules\QueryControl\Module as QueryModule;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Child_Of extends Condition_Base {

	public static function get_type() {
		return 'singular';
	}

	public static function get_priority() {
		return 40;
	}

	public function get_name() {
		return 'child_of';
	}

	public function get_label() {
		return esc_html__( 'Direct Child Of', 'elementor-pro' );
	}

	public function check( $args ) {
		if ( ! is_singular() ) {
			return false;
		}

		$id = (int) $args['id'];
		$parent_id = wp_get_post_parent_id( get_the_ID() );

		return ( ( 0 === $id && 0 < $parent_id ) || ( $parent_id === $id ) );
	}

	protected function register_controls() {
		$hierarchical_post_types = get_post_types( [
			'hierarchical' => true,
			'public' => true,
		] );

		$this->add_control(
			'parent_id',
			[
				'section' => 'settings',
				'type' => QueryModule::QUERY_CONTROL_ID,
				'select2options' => [
					'dropdownCssClass' => 'elementor-conditions-select2-dropdown',
				],
				'autocomplete' => [
					'object' => QueryModule::QUERY_OBJECT_POST,
					'query' => [
						'post_type' => array_keys( $hierarchical_post_types ),
					],
				],
			]
		);
	}
}
modules/theme-builder/conditions/author.php000064400000001651150755004310015131 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

use ElementorPro\Modules\QueryControl\Module as QueryModule;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Author extends Condition_Base {

	public static function get_type() {
		return 'archive';
	}

	public static function get_priority() {
		return 70;
	}

	public function get_name() {
		return 'author';
	}

	public function get_label() {
		return esc_html__( 'Author Archive', 'elementor-pro' );
	}

	public function check( $args = null ) {
		return is_author( $args['id'] );
	}

	protected function register_controls() {
		$this->add_control(
			'author_id',
			[
				'section' => 'settings',
				'type' => QueryModule::QUERY_CONTROL_ID,
				'select2options' => [
					'dropdownCssClass' => 'elementor-conditions-select2-dropdown',
				],
				'autocomplete' => [
					'object' => QueryModule::QUERY_OBJECT_AUTHOR,
				],
			]
		);
	}
}
modules/theme-builder/conditions/front-page.php000064400000000774150755004310015676 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Front_Page extends Condition_Base {

	public static function get_type() {
		return 'singular';
	}

	public static function get_priority() {
		return 30;
	}

	public function get_name() {
		return 'front_page';
	}

	public function get_label() {
		return esc_html__( 'Front Page', 'elementor-pro' );
	}

	public function check( $args ) {
		return is_front_page();
	}
}
modules/theme-builder/conditions/taxonomy.php000064400000002443150755004310015505 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

use ElementorPro\Modules\QueryControl\Module as QueryModule;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Taxonomy extends Condition_Base {

	private $taxonomy;

	public static function get_type() {
		return 'archive';
	}

	public static function get_priority() {
		return 70;
	}

	public function __construct( $data ) {
		parent::__construct();

		$this->taxonomy = $data['object'];
	}

	public function get_name() {
		return $this->taxonomy->name;
	}

	public function get_label() {
		return $this->taxonomy->label;
	}

	public function check( $args ) {
		$taxonomy = $this->get_name();
		$id = (int) $args['id'];

		if ( 'category' === $taxonomy ) {
			return is_category( $id );
		}

		if ( 'post_tag' === $taxonomy ) {
			return is_tag( $id );
		}

		return is_tax( $taxonomy, $id );
	}

	protected function register_controls() {
		$this->add_control(
			'taxonomy',
			[
				'section' => 'settings',
				'type' => QueryModule::QUERY_CONTROL_ID,
				'options' => [
					'' => esc_html__( 'All', 'elementor-pro' ),
				],
				'autocomplete' => [
					'object' => QueryModule::QUERY_OBJECT_TAX,
					'by_field' => 'term_id',
					'query' => [
						'taxonomy' => $this->taxonomy->name,
					],
				],
			]
		);
	}
}
modules/theme-builder/conditions/not-found404.php000064400000000767150755004310015777 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Not_Found404 extends Condition_Base {

	public static function get_type() {
		return 'singular';
	}

	public static function get_priority() {
		return 20;
	}

	public function get_name() {
		return 'not_found404';
	}

	public function get_label() {
		return esc_html__( '404 Page', 'elementor-pro' );
	}

	public function check( $args ) {
		return is_404();
	}
}
modules/theme-builder/conditions/any-child-of.php000064400000001070150755004310016074 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Any_Child_Of extends Child_Of {

	public function get_name() {
		return 'any_child_of';
	}

	public function get_label() {
		return esc_html__( 'Any Child Of', 'elementor-pro' );
	}

	public function check( $args ) {
		if ( ! is_singular() ) {
			return false;
		}

		$id = (int) $args['id'];
		$parents = get_post_ancestors( get_the_ID() );

		return ( ( 0 === $id && ! empty( $parents ) ) || in_array( $id, $parents ) );
	}
}
modules/theme-builder/conditions/singular.php000064400000002363150755004310015454 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

use ElementorPro\Modules\ThemeBuilder\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Singular extends Condition_Base {

	protected $sub_conditions = [
		'front_page',
	];

	public static function get_type() {
		return 'singular';
	}

	public function get_name() {
		return 'singular';
	}

	public static function get_priority() {
		return 60;
	}

	public function get_label() {
		return esc_html__( 'Singular', 'elementor-pro' );
	}

	public function get_all_label() {
		return esc_html__( 'All Singular', 'elementor-pro' );
	}

	public function register_sub_conditions() {
		$post_types = Module::get_public_post_types();

		$post_types['attachment'] = get_post_type_object( 'attachment' )->label;

		foreach ( $post_types as $post_type => $label ) {
			$condition = new Post( [
				'post_type' => $post_type,
			] );

			$this->register_sub_condition( $condition );
		}

		$this->sub_conditions[] = 'child_of';

		$this->sub_conditions[] = 'any_child_of';

		$this->sub_conditions[] = 'by_author';

		// Last condition.
		$this->sub_conditions[] = 'not_found404';
	}

	public function check( $args ) {
		return ( is_singular() && ! is_embed() ) || is_404();
	}
}
modules/theme-builder/conditions/date.php000064400000000753150755004310014546 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Date extends Condition_Base {

	public static function get_type() {
		return 'archive';
	}

	public static function get_priority() {
		return 70;
	}

	public function get_name() {
		return 'date';
	}

	public function get_label() {
		return esc_html__( 'Date Archive', 'elementor-pro' );
	}

	public function check( $args ) {
		return is_date();
	}
}
modules/theme-builder/conditions/archive.php000064400000002403150755004310015244 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

use ElementorPro\Modules\ThemeBuilder\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Archive extends Condition_Base {

	protected $sub_conditions = [
		'author',
		'date',
		'search',
	];

	public static function get_type() {
		return 'archive';
	}

	public static function get_priority() {
		return 80;
	}

	public function get_name() {
		return 'archive';
	}

	public function get_label() {
		return esc_html__( 'Archives', 'elementor-pro' );
	}

	public function get_all_label() {
		return esc_html__( 'All Archives', 'elementor-pro' );
	}

	public function register_sub_conditions() {
		$post_types = Module::get_public_post_types();

		foreach ( $post_types as $post_type => $label ) {
			if ( ! get_post_type_archive_link( $post_type ) ) {
				continue;
			}

			$condition = new Post_Type_Archive( [
				'post_type' => $post_type,
			] );

			$this->register_sub_condition( $condition );
		}
	}

	public function check( $args ) {
		$is_archive = is_archive() || is_home() || is_search();

		// WooCommerce is handled by `woocommerce` module.
		if ( $is_archive && class_exists( 'woocommerce' ) && is_woocommerce() ) {
			$is_archive = false;
		}

		return $is_archive;
	}
}
modules/theme-builder/conditions/in-sub-term.php000064400000001556150755004310015775 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class In_Sub_Term extends In_Taxonomy {

	/**
	 * @var \WP_Taxonomy
	 */
	private $taxonomy;

	public function __construct( $data ) {
		parent::__construct( $data );

		$this->taxonomy = $data['object'];
	}

	public function get_name() {
		return 'in_' . $this->taxonomy->name . '_children';
	}

	public function get_label() {
		/* translators: %s: Taxonomy label. */
		return sprintf( esc_html__( 'In Child %s', 'elementor-pro' ), $this->taxonomy->labels->name );
	}

	public function check( $args ) {
		$id = (int) $args['id'];
		if ( ! is_singular() || ! $id ) {
			return false;
		}
		$child_terms = get_term_children( $id, $this->taxonomy->name );

		return ! empty( $child_terms ) && has_term( $child_terms, $this->taxonomy->name );
	}
}
modules/theme-builder/conditions/in-taxonomy.php000064400000002533150755004310016111 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

use ElementorPro\Modules\QueryControl\Module as QueryModule;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class In_Taxonomy extends Condition_Base {


	/**
	 * @var \WP_Taxonomy
	 */
	private $taxonomy;

	public static function get_type() {
		return 'singular';
	}

	public static function get_priority() {
		return 40;
	}

	public function __construct( $data ) {
		parent::__construct();

		$this->taxonomy = $data['object'];
	}

	public function get_name() {
		return 'in_' . $this->taxonomy->name;
	}

	public function get_label() {
		/* translators: %s: Taxonomy label. */
		return sprintf( esc_html__( 'In %s', 'elementor-pro' ), $this->taxonomy->labels->singular_name );
	}

	public function check( $args ) {
		return is_singular() && has_term( (int) $args['id'], $this->taxonomy->name );
	}

	protected function register_controls() {
		$this->add_control(
			'taxonomy',
			[
				'section' => 'settings',
				'type' => QueryModule::QUERY_CONTROL_ID,
				'select2options' => [
					'dropdownCssClass' => 'elementor-conditions-select2-dropdown',
				],
				'autocomplete' => [
					'object' => QueryModule::QUERY_OBJECT_TAX,
					'display' => 'detailed',
					'by_field' => 'term_id',
					'query' => [
						'taxonomy' => $this->taxonomy->name,
					],
				],
			]
		);
	}
}
modules/theme-builder/conditions/post-type-by-author.php000064400000002270150755004310017501 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

use ElementorPro\Modules\QueryControl\Module as QueryModule;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Type_By_Author extends Condition_Base {

	private $post_type;

	public static function get_type() {
		return 'singular';
	}

	public static function get_priority() {
		return 40;
	}

	public function __construct( $post_type ) {
		parent::__construct();

		$this->post_type = $post_type;
	}

	public function get_name() {
		return $this->post_type->name . '_by_author';
	}

	public function get_label() {
		return sprintf( esc_html__( '%s By Author', 'elementor-pro' ), $this->post_type->label );
	}

	public function check( $args = null ) {
		return is_singular( $this->post_type->name ) && get_post_field( 'post_author' ) === $args['id'];
	}

	protected function register_controls() {
		$this->add_control(
			'author_id',
			[
				'section' => 'settings',
				'type' => QueryModule::QUERY_CONTROL_ID,
				'select2options' => [
					'dropdownCssClass' => 'elementor-conditions-select2-dropdown',
				],
				'autocomplete' => [
					'object' => QueryModule::QUERY_OBJECT_AUTHOR,
				],
			]
		);
	}
}
modules/theme-builder/conditions/child-of-term.php000064400000001571150755004310016262 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Child_Of_Term extends Taxonomy {

	private $taxonomy;

	public function get_name() {
		return 'child_of_' . $this->taxonomy->name;
	}

	public function get_label() {
		return sprintf( esc_html__( 'Direct Child %s Of', 'elementor-pro' ), $this->taxonomy->labels->singular_name );
	}

	public function __construct( $data ) {
		parent::__construct( $data );

		$this->taxonomy = $data['object'];
	}

	public function is_term() {
		$taxonomy = $this->taxonomy->name;
		$current = get_queried_object();
		return ( $current && isset( $current->taxonomy ) && $taxonomy === $current->taxonomy );
	}

	public function check( $args ) {
		$id = (int) $args['id'];
		$current = get_queried_object();

		return $this->is_term() && $id === $current->parent;
	}
}
modules/theme-builder/conditions/post.php000064400000004156150755004310014617 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

use ElementorPro\Modules\QueryControl\Module as QueryModule;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post extends Condition_Base {

	private $post_type;
	private $post_taxonomies;

	public static function get_type() {
		return 'singular';
	}

	public static function get_priority() {
		return 40;
	}

	public function __construct( $data ) {
		$this->post_type = get_post_type_object( $data['post_type'] );
		$taxonomies = get_object_taxonomies( $data['post_type'], 'objects' );
		$this->post_taxonomies = wp_filter_object_list( $taxonomies, [
			'public' => true,
			'show_in_nav_menus' => true,
		] );

		parent::__construct();
	}

	public function get_name() {
		return $this->post_type->name;
	}

	public function get_label() {
		return $this->post_type->labels->singular_name;
	}

	public function get_all_label() {
		/* translators: %s: Post type label. */
		return $this->post_type->label;
	}

	public function check( $args ) {
		if ( isset( $args['id'] ) ) {
			$id = (int) $args['id'];
			if ( $id ) {
				return is_singular() && get_queried_object_id() === $id;
			}
		}

		return is_singular( $this->post_type->name );
	}

	public function register_sub_conditions() {
		foreach ( $this->post_taxonomies as $slug => $object ) {
			$in_taxonomy = new In_Taxonomy( [
				'object' => $object,
			] );
			$this->register_sub_condition( $in_taxonomy );

			if ( $object->hierarchical ) {
				$in_sub_term = new In_Sub_Term( [
					'object' => $object,
				] );
				$this->register_sub_condition( $in_sub_term );
			}
		}

		$by_author = new Post_Type_By_Author( $this->post_type );
		$this->register_sub_condition( $by_author );

	}

	protected function register_controls() {
		$this->add_control(
			'post_id',
			[
				'section' => 'settings',
				'type' => QueryModule::QUERY_CONTROL_ID,
				'select2options' => [
					'dropdownCssClass' => 'elementor-conditions-select2-dropdown',
				],
				'autocomplete' => [
					'object' => QueryModule::QUERY_OBJECT_POST,
					'query' => [
						'post_type' => $this->get_name(),
					],
				],
			]
		);
	}
}
modules/theme-builder/conditions/condition-base.php000064400000003037150755004310016525 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

use Elementor\Controls_Stack;
use Elementor\Core\Utils\Exceptions;
use ElementorPro\Modules\ThemeBuilder\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Condition_Base extends Controls_Stack {

	protected $sub_conditions = [];

	public static function get_priority() {
		return 100;
	}

	abstract public function get_label();

	public function get_unique_name() {
		return 'condition_' . $this->get_name();
	}

	public static function get_type() {
		throw new \Exception( 'Please overwrite the method', Exceptions::INTERNAL_SERVER_ERROR );
	}

	public function check( $args ) {
		return false;
	}

	public function get_sub_conditions() {
		return $this->sub_conditions;
	}

	public function get_all_label() {
		return $this->get_label();
	}

	protected function get_initial_config() {
		$config = parent::get_initial_config();

		$config['label'] = $this->get_label();
		$config['sub_conditions'] = $this->get_sub_conditions();
		$config['all_label'] = $this->get_all_label();

		return $config;
	}

	public function register_sub_conditions() {}

	/**
	 * @param self $condition
	 */
	public function register_sub_condition( $condition ) {
		$conditions_manager = Module::instance()->get_conditions_manager();
		$conditions_manager->register_condition_instance( $condition );
		$this->sub_conditions[] = $condition->get_name();
	}

	public function __construct( array $data = [] ) {
		parent::__construct( $data );

		$this->register_sub_conditions();
	}
}
modules/theme-builder/conditions/any-child-of-term.php000064400000001715150755004310017047 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Any_Child_Of_Term extends Child_Of_Term {

	private $taxonomy;

	public function get_name() {
		return 'any_child_of_' . $this->taxonomy->name;
	}

	public function get_label() {
		return sprintf( esc_html__( 'Any Child %s Of', 'elementor-pro' ), $this->taxonomy->labels->singular_name );
	}

	public function __construct( $data ) {
		parent::__construct( $data );

		$this->taxonomy = $data['object'];
	}

	public function check( $args ) {
		$id = (int) $args['id'];
		/**
		 * @var \WP_Term $current
		 */
		$current = get_queried_object();
		if ( ! $this->is_term() || 0 === $current->parent ) {
			return false;
		}

		while ( $current->parent > 0 ) {
			if ( $id === $current->parent ) {
				return true;
			}
			$current = get_term_by( 'id', $current->parent, $current->taxonomy );
		}

		return $id === $current->parent;
	}
}
modules/theme-builder/conditions/general.php000064400000001112150755004310015234 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class General extends Condition_Base {

	protected $sub_conditions = [
		'archive',
		'singular',
	];

	public static function get_type() {
		return 'general';
	}

	public function get_name() {
		return 'general';
	}

	public function get_label() {
		return esc_html__( 'General', 'elementor-pro' );
	}

	public function get_all_label() {
		return esc_html__( 'Entire Site', 'elementor-pro' );
	}

	public function check( $args ) {
		return true;
	}
}
modules/theme-builder/conditions/by-author.php000064400000001723150755004310015541 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

use ElementorPro\Modules\QueryControl\Module as QueryModule;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class By_Author extends Condition_Base {

	public static function get_type() {
		return 'singular';
	}

	public static function get_priority() {
		return 40;
	}

	public function get_name() {
		return 'by_author';
	}

	public function get_label() {
		return esc_html__( 'By Author', 'elementor-pro' );
	}

	public function check( $args = null ) {
		return is_singular() && get_post_field( 'post_author' ) === $args['id'];
	}

	protected function register_controls() {
		$this->add_control(
			'author_id',
			[
				'section' => 'settings',
				'type' => QueryModule::QUERY_CONTROL_ID,
				'select2options' => [
					'dropdownCssClass' => 'elementor-conditions-select2-dropdown',
				],
				'autocomplete' => [
					'object' => QueryModule::QUERY_OBJECT_AUTHOR,
				],
			]
		);
	}
}
modules/theme-builder/conditions/search.php000064400000000763150755004310015077 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Search extends Condition_Base {

	public static function get_type() {
		return 'archive';
	}

	public static function get_priority() {
		return 70;
	}

	public function get_name() {
		return 'search';
	}

	public function get_label() {
		return esc_html__( 'Search Results', 'elementor-pro' );
	}

	public function check( $args ) {
		return is_search();
	}
}
modules/theme-builder/conditions/post-type-archive.php000064400000003275150755004310017216 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder\Conditions;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Type_Archive extends Condition_Base {

	private $post_type;
	private $post_taxonomies;

	public static function get_type() {
		return 'archive';
	}

	public static function get_priority() {
		return 70;
	}

	public function __construct( $data ) {
		$this->post_type = get_post_type_object( $data['post_type'] );
		$taxonomies = get_object_taxonomies( $data['post_type'], 'objects' );
		$this->post_taxonomies = wp_filter_object_list( $taxonomies, [
			'public' => true,
			'show_in_nav_menus' => true,
		] );

		parent::__construct();
	}

	public function get_name() {
		return $this->post_type->name . '_archive';
	}

	public function get_label() {
		return sprintf( esc_html__( '%s Archive', 'elementor-pro' ), $this->post_type->label );
	}

	public function get_all_label() {
		return sprintf( esc_html__( '%s Archive', 'elementor-pro' ), $this->post_type->label );
	}

	public function register_sub_conditions() {
		foreach ( $this->post_taxonomies as $slug => $object ) {
			$condition = new Taxonomy( [
				'object' => $object,
			] );

			$this->register_sub_condition( $condition );

			if ( ! $object->hierarchical ) {
				continue;
			}

			$sub_conditions = [
				'Child_Of_Term',
				'Any_Child_Of_Term',
			];

			foreach ( $sub_conditions as $class_name ) {
				$full_class_name = __NAMESPACE__ . '\\' . $class_name;
				$this->register_sub_condition( new $full_class_name( [ 'object' => $object ] ) );
			}
		}
	}

	public function check( $args ) {
		return is_post_type_archive( $this->post_type->name ) || ( 'post' === $this->post_type->name && is_home() );
	}
}
modules/theme-builder/module.php000064400000032547150755004310012753 0ustar00<?php
namespace ElementorPro\Modules\ThemeBuilder;

use Elementor\Core\Admin\Admin_Notices;
use Elementor\Core\App\App;
use Elementor\Core\Base\Document;
use Elementor\TemplateLibrary\Source_Local;
use ElementorPro\Base\Module_Base;
use ElementorPro\Core\Utils;
use ElementorPro\Modules\ThemeBuilder\Classes;
use ElementorPro\Modules\ThemeBuilder\Documents\Single;
use ElementorPro\Modules\ThemeBuilder\Documents\Theme_Document;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	const ADMIN_LIBRARY_TAB_GROUP = 'theme';

	public static function is_preview() {
		return Plugin::elementor()->preview->is_preview_mode() || is_preview();
	}

	public static function get_public_post_types( $args = [] ) {
		$post_types = Utils::get_public_post_types( $args );

		// Product form WooCommerce are handled separately.
		if ( class_exists( 'woocommerce' ) ) {
			unset( $post_types['product'] );
		}

		return $post_types;
	}

	public function get_name() {
		return 'theme-builder';
	}

	public function get_widgets() {
		$widgets = [
			'Site_Logo',
			'Site_Title',
			'Page_Title',
			'Post_Title',
			'Post_Excerpt',
			'Post_Content',
			'Post_Featured_Image',
			'Archive_Title',
		];

		if ( class_exists( '\ElementorPro\Modules\Posts\Widgets\Posts' ) ) {
			$widgets[] = 'Archive_Posts';
		}

		return $widgets;
	}

	/**
	 * @return Classes\Conditions_Manager
	 */
	public function get_conditions_manager() {
		return $this->get_component( 'conditions' );
	}

	/**
	 * @return Classes\Locations_Manager
	 */
	public function get_locations_manager() {
		return $this->get_component( 'locations' );
	}

	/**
	 * @return Classes\Preview_Manager
	 */
	public function get_preview_manager() {
		return $this->get_component( 'preview' );
	}

	/**
	 * @return Classes\Templates_Types_Manager
	 */
	public function get_types_manager() {
		return $this->get_component( 'templates_types' );
	}

	/**
	 * @param $post_id
	 *
	 * @return Theme_Document
	 */
	public function get_document( $post_id ) {
		$document = null;

		try {
			$document = Plugin::elementor()->documents->get( $post_id );
		} catch ( \Exception $e ) {
			// Do nothing.
			unset( $e );
		}

		if ( ! empty( $document ) && ! $document instanceof Theme_Document ) {
			$document = null;
		}

		return $document;
	}

	public function localize_settings( $settings ) {
		$settings = array_replace_recursive( $settings, [
			'i18n' => [
				'publish_settings' => esc_html__( 'Publish Settings', 'elementor-pro' ),
				'conditions' => esc_html__( 'Conditions', 'elementor-pro' ),
				'display_conditions' => esc_html__( 'Display Conditions', 'elementor-pro' ),
				'choose' => esc_html__( 'Choose', 'elementor-pro' ),
				'add_condition' => esc_html__( 'Add Condition', 'elementor-pro' ),
				'conditions_title' => esc_html__( 'Where Do You Want to Display Your %s?', 'elementor-pro' ),
				'conditions_description' => esc_html__( 'Set the conditions that determine where your %s is used throughout your site.', 'elementor-pro' ) . '<br>' . esc_html__( 'For example, choose \'Entire Site\' to display the template across your site.', 'elementor-pro' ),
				'conditions_publish_screen_description' => esc_html__( 'Apply current template to these pages.', 'elementor-pro' ),
				'save_and_close' => esc_html__( 'Save & Close', 'elementor-pro' ),
				'open_site_editor' => esc_html__( 'Open Site Editor', 'elementor-pro' ),
				'view_live_site' => esc_html__( 'View Live Site', 'elementor-pro' ),
			],
		] );

		return $settings;
	}

	public function document_config( $config, $post_id ) {
		$document = $this->get_document( $post_id );

		if ( ! $document ) {
			return $config;
		}

		$types_manager = $this->get_types_manager();
		$conditions_manager = $this->get_conditions_manager();
		$template_type = $this->get_template_type( $post_id );

		$config = array_replace_recursive( $config, [
			'theme_builder' => [
				'types' => $types_manager->get_types_config(),
				'conditions' => $conditions_manager->get_conditions_config(),
				'template_conditions' => ( new Classes\Template_Conditions() )->get_config(),
				'is_theme_template' => $this->is_theme_template( $post_id ),
				'settings' => [
					'template_type' => $template_type,
					'location' => $document->get_location(),
					'conditions' => $conditions_manager->get_document_conditions( $document ),
				],
			],
		] );

		return $config;
	}

	public function register_controls() {
		$controls_manager = Plugin::elementor()->controls_manager;

		$controls_manager->register_control( Classes\Conditions_Repeater::CONTROL_TYPE, new Classes\Conditions_Repeater() );
	}

	public function create_new_dialog_types( $types ) {
		/**
		 * @var Theme_Document[] $document_types
		 */
		foreach ( $types as $type => $label ) {
			$document_type = Plugin::elementor()->documents->get_document_type( $type );
			$instance = new $document_type();

			if ( $instance instanceof Theme_Document && 'section' !== $type ) {
				$types[ $type ] .= $instance->get_location_label();
			}

			if ( Single::class === $document_type ) {
				unset( $types[ $type ] );
			}
		}

		return $types;
	}

	public function print_location_field() {
		$locations = $this->get_locations_manager()->get_locations( [
			'public' => true,
		] );

		if ( empty( $locations ) ) {
			return;
		}
		?>
		<div id="elementor-new-template__form__location__wrapper" class="elementor-form-field">
			<label for="elementor-new-template__form__location" class="elementor-form-field__label">
				<?php echo esc_html__( 'Select a Location', 'elementor-pro' ); ?>
			</label>
			<div class="elementor-form-field__select__wrapper">
				<select id="elementor-new-template__form__location" class="elementor-form-field__select" name="meta_location">
					<option value="">
						<?php echo esc_html__( 'Select...', 'elementor-pro' ); ?>
					</option>
					<?php

					foreach ( $locations as $location => $settings ) {
						echo sprintf( '<option value="%1$s">%2$s</option>', esc_html( $location ), esc_html( $settings['label'] ) );
					}
					?>
				</select>
			</div>
		</div>
		<?php
	}

	public function print_post_type_field() {
		$post_types = self::get_public_post_types( [
			'exclude_from_search' => false,
		] );

		if ( empty( $post_types ) ) {
			return;
		}
		?>
		<div id="elementor-new-template__form__post-type__wrapper" class="elementor-form-field">
			<label for="elementor-new-template__form__post-type" class="elementor-form-field__label">
				<?php echo esc_html__( 'Select Post Type', 'elementor-pro' ); ?>
			</label>
			<div class="elementor-form-field__select__wrapper">
				<select
					id="elementor-new-template__form__post-type"
					class="elementor-form-field__select"
					name="<?php echo Single::REMOTE_CATEGORY_META_KEY; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>"
				>
					<option value="">
						<?php echo esc_html__( 'Select', 'elementor-pro' ); ?>...
					</option>
					<?php

					foreach ( $post_types as $post_type => $label ) {
						$doc_type = Plugin::elementor()->documents->get_document_type( $post_type );
						$doc_class = new $doc_type();

						$is_base_page = $doc_class instanceof \Elementor\Core\DocumentTypes\PageBase;

						if ( $is_base_page ) {
							$post_type_object = get_post_type_object( $post_type );
							echo sprintf( '<option value="%1$s">%2$s</option>', esc_html( $post_type ), esc_html( $post_type_object->labels->singular_name ) );
						}
					}

					// 404.
					echo sprintf( '<option value="%1$s">%2$s</option>', 'not_found404', esc_html__( '404 Page', 'elementor-pro' ) );

					?>
				</select>
			</div>
		</div>
		<?php
	}

	public function admin_head() {
		$current_screen = get_current_screen();
		if ( $current_screen && in_array( $current_screen->id, [ 'elementor_library', 'edit-elementor_library' ] ) ) {
			// For column type (Supported/Unsupported) & for `print_location_field`.
			$this->get_locations_manager()->register_locations();
		}
	}

	/**
	 * An hack to hide the app menu on before render without remove the app page from system.
	 *
	 * @param $menu
	 *
	 * @return mixed
	 */
	public function hide_admin_app_submenu( $menu ) {
		remove_submenu_page( Source_Local::ADMIN_MENU_SLUG, App::PAGE_ID );

		return $menu;
	}

	public function admin_columns_content( $column_name, $post_id ) {
		if ( 'elementor_library_type' === $column_name ) {
			/** @var Document $document */
			$document = Plugin::elementor()->documents->get( $post_id );

			if ( $document instanceof Theme_Document ) {
				$location_label = $document->get_location_label();

				if ( $location_label ) {
					echo ' - ' . esc_html( $location_label );
				}
			}
		}
	}

	public function get_template_type( $post_id ) {
		return Source_local::get_template_type( $post_id );
	}

	public function is_theme_template( $post_id ) {
		$document = Plugin::elementor()->documents->get( $post_id );

		return $document instanceof Theme_Document;
	}

	public function on_elementor_editor_init() {
		Plugin::elementor()->common->add_template( __DIR__ . '/views/panel-template.php' );
	}

	public function add_finder_items( array $categories ) {
		$categories['create']['items']['theme-template'] = [
			'title' => esc_html__( 'Add New Theme Template', 'elementor-pro' ),
			'icon' => 'plus-circle-o',
			'url' => $this->get_admin_templates_url() . '#add_new',
			'keywords' => [ 'template', 'theme', 'new', 'create' ],
		];

		return $categories;
	}

	/**
	 * Add New item to admin menu.
	 *
	 * Fired by `admin_menu` action.
	 *
	 * @since 2.4.0
	 * @access public
	 */
	public function admin_menu() {
		add_submenu_page(
			Source_Local::ADMIN_MENU_SLUG,
			'',
			esc_html__( 'Theme Builder', 'elementor-pro' ),
			'publish_posts',
			$this->get_admin_templates_url( true )
		);
	}

	public function print_new_theme_builder_promotion( $views ) {
		/** @var Source_Local $source */
		$source = Plugin::elementor()->templates_manager->get_source( 'local' );

		$current_tab_group = $source->get_current_tab_group();

		if ( self::ADMIN_LIBRARY_TAB_GROUP === $current_tab_group ) {
			/**
			 * @var Admin_Notices $admin_notices
			 */
			$admin_notices = Plugin::elementor()->admin->get_component( 'admin-notices' );

			$admin_notices->print_admin_notice( [
				'title' => esc_html__( 'Meet the New Theme Builder: More Intuitive and Visual Than Ever', 'elementor-pro' ),
				'description' => esc_html__( 'With the new Theme Builder you can visually manage every part of your site intuitively, making the task of designing a complete website that much easier', 'elementor-pro' ),
				'button' => [
					'text' => esc_html__( 'Try it Now', 'elementor-pro' ),
					'class' => 'elementor-button elementor-button-success',
					'url' => Plugin::elementor()->app->get_settings( 'menu_url' ),
				],
			] );
		}

		return $views;
	}

	private function get_admin_templates_url( $relative = false ) {
		$base_url = Source_Local::ADMIN_MENU_SLUG;

		if ( ! $relative ) {
			$base_url = admin_url( $base_url );
		}

		return add_query_arg( 'tabs_group', self::ADMIN_LIBRARY_TAB_GROUP, $base_url );
	}

	private function add_conflicts_to_import_result( array $result ) {
		$manifest_data = $result['manifest'];

		if ( empty( $manifest_data['templates'] ) ) {
			return $result;
		}

		foreach ( $manifest_data['templates'] as $template_id => $template ) {
			if ( empty( $template['conditions'] ) ) {
				continue;
			}

			foreach ( $template['conditions'] as $condition ) {
				$condition = rtrim( implode( '/', $condition ), '/' );
				$conflicts = $this->get_conditions_manager()->get_conditions_conflicts_by_location( $condition, $template['location'] );

				if ( $conflicts ) {
					$result['conflicts'][ $template_id ] = $conflicts;
				}
			}
		}

		return $result;
	}

	public function __construct() {
		parent::__construct();

		require __DIR__ . '/api.php';

		$this->add_component( 'theme_support', new Classes\Theme_Support() );
		$this->add_component( 'conditions', new Classes\Conditions_Manager() );
		$this->add_component( 'templates_types', new Classes\Templates_Types_Manager() );
		$this->add_component( 'preview', new Classes\Preview_Manager() );
		$this->add_component( 'locations', new Classes\Locations_Manager() );

		add_action( 'elementor/controls/controls_registered', [ $this, 'register_controls' ] );

		// Editor
		add_action( 'elementor/editor/init', [ $this, 'on_elementor_editor_init' ] );
		add_filter( 'elementor_pro/editor/localize_settings', [ $this, 'localize_settings' ] );
		add_filter( 'elementor/document/config', [ $this, 'document_config' ], 10, 2 );

		// Admin
		add_action( 'admin_head', [ $this, 'admin_head' ] );
		add_action( 'admin_menu', [ $this, 'admin_menu' ], 22 /* After core promotion menu */ );
		add_filter( 'add_menu_classes', [ $this, 'hide_admin_app_submenu' ], 9 /* Before core submenu fixes */ );
		add_action( 'manage_' . Source_Local::CPT . '_posts_custom_column', [ $this, 'admin_columns_content' ], 10, 2 );
		add_action( 'elementor/template-library/create_new_dialog_fields', [ $this, 'print_location_field' ] );
		add_action( 'elementor/template-library/create_new_dialog_fields', [ $this, 'print_post_type_field' ] );
		add_filter( 'elementor/template-library/create_new_dialog_types', [ $this, 'create_new_dialog_types' ] );
		add_filter( 'views_edit-' . Source_Local::CPT, [ $this, 'print_new_theme_builder_promotion' ], 9 );
		add_filter( 'elementor/import/stage_1/result', function( array $result ) {
			return $this->add_conflicts_to_import_result( $result );
		} );

		// Common
		add_filter( 'elementor/finder/categories', [ $this, 'add_finder_items' ] );
	}
}
modules/theme-builder/views/comments-template.php000064400000002476150755004310016257 0ustar00<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/** @var \ElementorPro\Modules\ThemeBuilder\Skins\Post_Comments_Skin_Classic $skin */
$skin = $GLOBALS['post_comment_skin_classic'];

if ( post_password_required() ) { ?>
	<p class="nocomments"><?php esc_html_e( 'This post is password protected. Enter the password to view comments.', 'elementor-pro' ); ?></p>
	<?php
	return;
}
?>

<?php

$comment_count = get_comment_count();

if ( $comment_count ) :
	?>
	<h3 id="comments">
		<?php echo esc_html( $skin->get_instance_value( 'title' ) ); ?>
	</h3>

	<div class="navigation">
		<div class="alignleft"><?php previous_comments_link(); ?></div>
		<div class="alignright"><?php next_comments_link(); ?></div>
	</div>

	<ol class="commentlist">
		<?php
		wp_list_comments( [
			'callback' => [ $skin, 'comment_callback' ],
		] );
		?>
	</ol>

	<div class="navigation">
		<div class="alignleft"><?php previous_comments_link(); ?></div>
		<div class="alignright"><?php next_comments_link(); ?></div>
	</div>
<?php else : ?>

	<?php if ( comments_open() ) : ?>
		<p class="nocomments"><?php echo esc_html( $skin->get_instance_value( 'title' ) ); ?></p>

	<?php else : ?>
		<!-- If comments are closed. -->
		<p class="nocomments"><?php esc_html_e( 'Comments are closed.', 'elementor-pro' ); ?></p>
		<?php
	endif;
endif;
modules/theme-builder/views/panel-template.php000064400000007627150755004310015534 0ustar00<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

// TODO: Remove after moving to Route API
?>
<script type="text/template" id="tmpl-elementor-publish">
	<# if ( screens.length > 1 ) { #>
	<div id="elementor-publish__tabs" class="elementor-templates-modal__sidebar">
		<# screens.forEach( function( screen ) { #>
		<div class="elementor-publish__tab" data-screen="{{ screen.name }}">
			<div class="elementor-publish__tab__image">
				<img src="{{ screen.image }}">
			</div>
			<div class="elementor-publish__tab__content">
				<div class="elementor-publish__tab__title">{{{ screen.title }}}</div>
				<div class="elementor-publish__tab__description">{{{ screen.description }}}</div>
			</div>
		</div>
		<# } ); #>
	</div>
	<# } #>
	<div id="elementor-publish__screen" class="elementor-templates-modal__content"></div>
</script>

<script type="text/template" id="tmpl-elementor-component-publish">
	<# if ( Object.keys( tabs ).length > 1 ) { #>
	<div id="elementor-publish__tabs" class="elementor-templates-modal__sidebar">
		<# jQuery.each( tabs, ( tab, args ) => { #>
		<div class="elementor-component-tab elementor-publish__tab" data-tab="{{ tab }}">
			<div class="elementor-publish__tab__image">
				<img src="{{ args.image }}">
			</div>
			<div class="elementor-publish__tab__content">
				<div class="elementor-publish__tab__title">{{{ args.title }}}</div>
				<div class="elementor-publish__tab__description">{{{ args.description }}}</div>
			</div>
		</div>
		<# } ); #>
	</div>
	<# } #>
	<div id="elementor-publish__screen" class="elementor-templates-modal__content"></div>
</script>

<script type="text/template" id="tmpl-elementor-theme-builder-conditions-view">
	<div class="elementor-template-library-blank-icon">
		<img src="<?php echo ELEMENTOR_PRO_MODULES_URL; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>theme-builder/assets/images/conditions-tab.svg">
	</div>
	<div class="elementor-template-library-blank-title">{{{ elementorPro.translate( 'conditions_title', [ elementor.config.document.post_type_title ] ) }}}</div>
	<div class="elementor-template-library-blank-message">{{{ elementorPro.translate( 'conditions_description', [ elementor.config.document.post_type_title ] ) }}}</div>
	<div id="elementor-theme-builder-conditions">
		<div id="elementor-theme-builder-conditions-controls"></div>
	</div>
</script>

<script type="text/template" id="tmpl-elementor-theme-builder-conditions-repeater-row">
	<div class="elementor-theme-builder-conditions-repeater-row-controls"></div>
	<div class="elementor-repeater-row-tool elementor-repeater-tool-remove">
		<i class="eicon-close" aria-hidden="true"></i>
		<span class="elementor-screen-only"><?php esc_html_e( 'Remove this item', 'elementor-pro' ); ?></span>
	</div>
</script>

<script type="text/template" id="tmpl-elementor-theme-builder-button-preview">
	<i class="eicon-preview-medium tooltip-target" aria-hidden="true"  data-tooltip="<?php esc_attr_e( 'Preview Changes', 'elementor-pro' ); ?>"></i>
	<span class="elementor-screen-only">
		<?php esc_attr_e( 'Preview Changes', 'elementor-pro' ); ?>
	</span>
	<div class="elementor-panel-footer-sub-menu-wrapper">
		<div class="elementor-panel-footer-sub-menu">
			<div onclick="$e.run( 'theme-builder-publish/preview-settings' );" id="elementor-panel-footer-theme-builder-button-preview-settings" class="elementor-panel-footer-sub-menu-item">
				<i class="eicon-wrench" aria-hidden="true"></i>
				<span class="elementor-title"><?php esc_html_e( 'Settings', 'elementor-pro' ); ?></span>
			</div>
			<div onclick="$e.run( 'editor/documents/preview', { id: elementor.documents.getCurrent().id, force: true } );" id="elementor-panel-footer-theme-builder-button-open-preview" class="elementor-panel-footer-sub-menu-item">
				<i class="eicon-editor-external-link" aria-hidden="true"></i>
				<span class="elementor-title"><?php esc_html_e( 'Preview', 'elementor-pro' ); ?></span>
			</div>
		</div>
	</div>
</script>
modules/theme-builder/views/theme-support-header.php000064400000001526150755004310016656 0ustar00<?php
use ElementorPro\Modules\ThemeBuilder\Module;
use Elementor\Utils;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

$location_manager = Module::instance()->get_locations_manager();
?>
<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
	<meta charset="<?php bloginfo( 'charset' ); ?>">
	<?php
		// PHPCS - not a user input.
		echo Utils::get_meta_viewport( 'theme-builder' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	?>
	<?php if ( ! current_theme_supports( 'title-tag' ) ) : ?>
		<title>
			<?php
				// PHPCS - already escaped by WordPress.
				echo wp_get_document_title(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			?>
		</title>
	<?php endif; ?>
	<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>

<?php $location_manager->do_location( 'header' ); ?>
modules/theme-builder/views/theme-support-footer.php000064400000000425150755004310016721 0ustar00<?php
use ElementorPro\Modules\ThemeBuilder\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

$location_manager = Module::instance()->get_locations_manager();
$location_manager->do_location( 'footer' ); ?>

<?php wp_footer(); ?>

</body>
</html>
modules/query-control/classes/elementor-post-query.php000064400000027163150755004310017336 0ustar00<?php
namespace ElementorPro\Modules\QueryControl\Classes;

use Elementor\Widget_Base;
use ElementorPro\Modules\QueryControl\Module;
use ElementorPro\Core\Utils;

/**
 * Class Elementor_Post_Query
 * Wrapper for WP_Query.
 * Used by the various widgets for generating the query, according to the controls added using Group_Control_Query.
 * Each class instance is associated with the specific widget that is passed in the class constructor.
 */
class Elementor_Post_Query {
	/** @var Widget_Base */
	protected $widget;
	protected $query_args;
	protected $prefix;
	protected $widget_settings;

	/**
	 * Elementor_Post_Query constructor.
	 *
	 * @param Widget_Base $widget
	 * @param string $group_query_name
	 * @param array $query_args
	 */
	public function __construct( $widget, $group_query_name, $query_args = [] ) {
		$this->widget = $widget;
		$this->prefix = $group_query_name . '_';
		$this->query_args = $query_args;

		$settings = $this->widget->get_settings();
		$defaults = $this->get_query_defaults();

		$this->widget_settings = wp_parse_args( $settings, $defaults );
	}

	/**
	 * 1) build query args
	 * 2) invoke callback to fine-tune query-args
	 * 3) generate WP_Query object
	 * 4) if no results & fallback is set, generate a new WP_Query with fallback args
	 * 5) return WP_Query
	 *
	 * @return \WP_Query
	 */
	public function get_query() {
		$this->get_query_args();

		$offset_control = $this->get_widget_settings( 'offset' );

		$query_id = $this->get_widget_settings( 'query_id' );
		if ( ! empty( $query_id ) ) {
			add_action( 'pre_get_posts', [ $this, 'pre_get_posts_query_filter' ] );
		}

		$post_type = $this->get_widget_settings( 'post_type' );

		if ( 'by_id' !== $post_type && 0 < $offset_control ) {
			add_action( 'pre_get_posts', [ $this, 'fix_query_offset' ], 1 );
			add_filter( 'found_posts', [ $this, 'fix_query_found_posts' ], 1, 2 );
		}

		$query = new \WP_Query( $this->query_args );// SQL_CALC_FOUND_ROWS is used.

		remove_action( 'pre_get_posts', [ $this, 'pre_get_posts_query_filter' ] );
		remove_action( 'pre_get_posts', [ $this, 'fix_query_offset' ], 1 );
		remove_filter( 'found_posts', [ $this, 'fix_query_found_posts' ], 1 );

		Module::add_to_avoid_list( wp_list_pluck( $query->posts, 'ID' ) );

		do_action( 'elementor/query/query_results', $query, $this->widget );

		return $query;
	}

	protected function get_query_defaults() {
		$defaults = [
			$this->prefix . 'post_type' => 'post',
			$this->prefix . 'posts_ids' => [],
			$this->prefix . 'orderby' => 'date',
			$this->prefix . 'order' => 'desc',
			$this->prefix . 'offset' => 0,
			$this->prefix . 'posts_per_page' => 3,
		];

		return $defaults;
	}

	public function get_query_args() {
		$post_type = $this->get_widget_settings( 'post_type' );

		if ( 'current_query' === $post_type ) {
			$current_query_vars = $GLOBALS['wp_query']->query_vars;

			/**
			 * Current query variables.
			 *
			 * Filters the query variables for the current query.
			 *
			 * @since 1.0.0
			 *
			 * @param array $current_query_vars Current query variables.
			 */
			$current_query_vars = apply_filters_deprecated( 'elementor_pro/query_control/get_query_args/current_query', [ $current_query_vars ], '2.5.0', 'elementor/query/get_query_args/current_query' );
			$current_query_vars = apply_filters( 'elementor/query/get_query_args/current_query', $current_query_vars );
			$this->query_args = $current_query_vars;
			return $current_query_vars;
		}

		$this->set_common_args();
		$this->set_order_args();
		$this->set_pagination_args();
		$this->set_post_include_args();

		if ( 'by_id' !== $post_type ) {

			$this->set_post_exclude_args();
			$this->set_avoid_duplicates();
			$this->set_terms_args();
			$this->set_author_args();
			$this->set_date_args();
		}

		$this->query_args = apply_filters( 'elementor/query/query_args', $this->query_args, $this->widget );

		return $this->query_args;
	}

	protected function set_pagination_args() {
		$this->set_query_arg( 'posts_per_page', $this->get_widget_settings( 'posts_per_page' ) );
		$sticky_post = $this->get_widget_settings( 'ignore_sticky_posts' ) ? true : false;
		$this->set_query_arg( 'ignore_sticky_posts', $sticky_post );
	}

	protected function set_common_args() {
		$this->query_args['post_status'] = 'publish'; // Hide drafts/private posts for admins

		$post_type = $this->get_widget_settings( 'post_type' );
		if ( 'by_id' === $post_type ) {
			$post_types = Utils::get_public_post_types();
			$this->query_args['post_type'] = array_keys( $post_types );
		} else {
			$this->query_args['post_type'] = $post_type;
		}
	}

	protected function set_post_include_args() {

		if ( 'by_id' === $this->get_widget_settings( 'post_type' ) ) {

			$this->set_query_arg( 'post__in', $this->get_widget_settings( 'posts_ids' ) );

			if ( empty( $this->query_args['post__in'] ) ) {
				// If no selection - return an empty query
				$this->query_args['post__in'] = [ 0 ];
			}
		}
	}

	protected function set_post_exclude_args() {

		$exclude = $this->get_widget_settings( 'exclude' );

		if ( empty( $exclude ) ) {
			return;
		}

		$post__not_in = [];

		if ( $this->maybe_in_array( 'current_post', $exclude ) ) {
			if ( is_singular() ) {
				$post__not_in[] = get_queried_object_id();
			}
		}

		$exclude_ids = $this->get_widget_settings( 'exclude_ids' );
		if ( $this->maybe_in_array( 'manual_selection', $exclude ) && ! empty( $exclude_ids ) ) {
			$post__not_in = array_merge( $post__not_in, $exclude_ids );
		}

		$this->set_query_arg( 'post__not_in', $post__not_in );
	}

	protected function set_avoid_duplicates() {
		if ( 'yes' === $this->get_widget_settings( 'avoid_duplicates' ) ) {
			$post__not_in = isset( $this->query_args['post__not_in'] ) ? $this->query_args['post__not_in'] : [];
			$post__not_in = array_merge( $post__not_in, Module::$displayed_ids );
			$this->set_query_arg( 'post__not_in', $post__not_in, true );
		}
	}

	protected function set_terms_args() {

		$post_type = $this->get_widget_settings( 'post_type' );

		if ( 'by_id' === $post_type ) {
			return;
		}
		$this->build_terms_query_include( 'include_term_ids' );
		$this->build_terms_query_exclude( 'exclude_term_ids' );
	}

	protected function build_terms_query_include( $control_id ) {
		$this->build_terms_query( 'include', $control_id );
	}

	protected function build_terms_query_exclude( $control_id ) {
		$this->build_terms_query( 'exclude', $control_id, true );
	}

	protected function build_terms_query( $tab_id, $control_id, $exclude = false ) {
		$tab_id = $this->get_widget_settings( $tab_id );
		$settings_terms = $this->get_widget_settings( $control_id );
		if ( empty( $tab_id ) || empty( $settings_terms ) || ! $this->maybe_in_array( 'terms', $tab_id ) ) {
			return;
		}

		$terms = [];

		// Switch to term_id in order to get all term children (sub-categories):
		foreach ( $settings_terms as $id ) {
			$term_data = get_term_by( 'term_taxonomy_id', $id );
			if ( false !== $term_data ) {
				$taxonomy = $term_data->taxonomy;
				$terms[ $taxonomy ][] = $id;
			}
		}
		$this->insert_tax_query( $terms, $exclude );
	}

	protected function insert_tax_query( $terms, $exclude ) {
		$tax_query = [];
		foreach ( $terms as $taxonomy => $ids ) {
			$query = [
				'taxonomy' => $taxonomy,
				'field' => 'term_taxonomy_id',
				'terms' => $ids,
			];

			if ( $exclude ) {
				$query['operator'] = 'NOT IN';
			}

			$tax_query[] = $query;
		}

		if ( empty( $tax_query ) ) {
			return;
		}

		if ( empty( $this->query_args['tax_query'] ) ) {
			$this->query_args['tax_query'] = $tax_query;
		} else {
			$this->query_args['tax_query']['relation'] = 'AND';
			$this->query_args['tax_query'][] = $tax_query;
		}
	}

	protected function set_author_args() {

		$include_authors = $this->get_widget_settings( 'include_authors' );
		if ( ! empty( $include_authors ) && $this->maybe_in_array( 'authors', $this->get_widget_settings( 'include' ) ) ) {
			$this->set_query_arg( 'author__in', $include_authors );
		}

		$exclude_authors = $this->get_widget_settings( 'exclude_authors' );
		if ( ! empty( $exclude_authors ) && $this->maybe_in_array( 'authors', $this->get_widget_settings( 'exclude' ) ) ) {
			//exclude only if not explicitly included
			if ( empty( $this->query_args['author__in'] ) ) {
				$this->set_query_arg( 'author__not_in', $exclude_authors );
			}
		}
	}

	protected function set_order_args() {
		$order = $this->get_widget_settings( 'order' );
		if ( ! empty( $order ) ) {
			$this->set_query_arg( 'orderby', $this->get_widget_settings( 'orderby' ) );
			$this->set_query_arg( 'order', $this->get_widget_settings( 'order' ) );
		}
	}

	protected function set_date_args() {

		$select_date = $this->get_widget_settings( 'select_date' );
		if ( ! empty( $select_date ) ) {
			$date_query = [];
			switch ( $select_date ) {
				case 'today':
					$date_query['after'] = '-1 day';
					break;
				case 'week':
					$date_query['after'] = '-1 week';
					break;
				case 'month':
					$date_query['after'] = '-1 month';
					break;
				case 'quarter':
					$date_query['after'] = '-3 month';
					break;
				case 'year':
					$date_query['after'] = '-1 year';
					break;
				case 'exact':
					$after_date = $this->get_widget_settings( 'date_after' );
					if ( ! empty( $after_date ) ) {
						$date_query['after'] = $after_date;
					}
					$before_date = $this->get_widget_settings( 'date_before' );
					if ( ! empty( $before_date ) ) {
						$date_query['before'] = $before_date;
					}
					$date_query['inclusive'] = true;
					break;
			}

			$this->set_query_arg( 'date_query', $date_query );
		}
	}

	/**\
	 * @param string $control_name
	 *
	 * @return mixed|null
	 */
	protected function get_widget_settings( $control_name ) {
		$control_name = $this->prefix . $control_name;
		return isset( $this->widget_settings[ $control_name ] ) ? $this->widget_settings[ $control_name ] : null;
	}

	/**
	 * @param       $key
	 * @param       $value
	 * @param false $override
	 *
	 */
	protected function set_query_arg( $key, $value, $override = false ) {
		if ( ! isset( $this->query_args[ $key ] ) || $override ) {
			$this->query_args[ $key ] = $value;
		}
	}

	/**
	 * @param string    $value
	 * @param mixed     $maybe_array
	 *
	 * @return bool
	 */
	protected function maybe_in_array( $value, $maybe_array ) {
		return is_array( $maybe_array ) ? in_array( $value, $maybe_array, true ) : $value === $maybe_array;
	}

	/**
	 * @param \WP_Query $wp_query
	 */
	public function pre_get_posts_query_filter( $wp_query ) {
		if ( $this->widget ) {
			$query_id = $this->get_widget_settings( 'query_id' );
			$widget_name = $this->widget->get_name();
			/**
			 * Elementor Pro posts widget Query args.
			 *
			 * It allows developers to alter individual posts widget queries.
			 *
			 * The dynamic portions of the hook name, `$widget_name` & `$query_id`, refers to the Widget name and Query ID respectively.
			 *
			 * @since 2.1.0
			 *
			 * @param \WP_Query     $wp_query
			 * @param Widget_Base   $this->current_widget
			 */
			do_action_deprecated( "elementor_pro/{$widget_name}/query/{$query_id}", [ $wp_query, $this->widget ], '2.5.0', "elementor/query/{$query_id}" );
			do_action( "elementor/query/{$query_id}", $wp_query, $this->widget );
		}
	}

	/**
	 * @param \WP_Query $query
	 */
	public function fix_query_offset( &$query ) {
		$offset = $this->get_widget_settings( 'offset' );

		if ( $offset && $query->is_paged ) {
			$query->query_vars['offset'] = $offset + ( ( $query->query_vars['paged'] - 1 ) * $query->query_vars['posts_per_page'] );
		} else {
			$query->query_vars['offset'] = $offset;
		}
	}

	/**
	 * @param int       $found_posts
	 * @param \WP_Query $query
	 *
	 * @return int
	 */
	public function fix_query_found_posts( $found_posts, $query ) {
		$offset = $this->get_widget_settings( 'offset' );

		if ( $offset ) {
			$found_posts -= $offset;
		}

		return $found_posts;
	}
}
modules/query-control/classes/elementor-related-query.php000064400000011560150755004310017763 0ustar00<?php
namespace ElementorPro\Modules\QueryControl\Classes;

use Elementor\Widget_Base;
use ElementorPro\Core\Utils;

class Elementor_Related_Query extends Elementor_Post_Query {
	private $fallback_args;
	private $related_post_id;

	/**
	 * Elementor_Post_Query constructor.
	 *
	 * @param Widget_Base $widget
	 * @param string $group_query_name
	 * @param array $query_args
	 * @param array $fallback_args
	 */
	public function __construct( $widget, $group_query_name, $query_args = [], $fallback_args = [] ) {
		parent::__construct( $widget, $group_query_name, $query_args );
		$this->related_post_id = -1;
		$this->fallback_args = $fallback_args;
	}

	/**
	 * 1) build query args
	 * 2) invoke callback to fine-tune query-args
	 * 3) generate WP_Query object
	 * 4) if no results & fallback is set, generate a new WP_Query with fallback args
	 * 5) return WP_Query
	 *
	 * @return \WP_Query
	 */
	public function get_query() {
		$query = parent::get_query();

		if ( ! $query->post_count && $this->is_valid_fallback() ) {
			$query = $this->get_fallback_query( $query );
		}

		return $query;
	}

	protected function get_fallback_query( $original_query ) {
		$this->set_fallback_query_args();
		$this->set_fallback_arg_by_settings( 'posts_per_page', $original_query->query_vars['posts_per_page'] );
		$this->fallback_args = apply_filters( 'elementor/query/fallback_query_args', $this->fallback_args, $this->widget );

		$this->fallback_args['no_found_rows'] = true;

		return new \WP_Query( $this->fallback_args );
	}

	private function is_valid_fallback() {
		$related_callback = $this->get_widget_settings( 'related_fallback' );
		if ( empty( $related_callback ) ) {
			return false;
		}
		$valid = false;
		switch ( $this->get_widget_settings( 'related_fallback' ) ) {
			case 'fallback_recent':
				$valid = true;
				break;
			case 'fallback_by_id':
				$fallback_id = $this->get_widget_settings( 'fallback_ids' );
				if ( ! empty( $fallback_id ) ) {
					$valid = true;
				}
				break;
		}

		return $valid;
	}

	protected function set_common_args() {
		parent::set_common_args();
		$post_id = get_queried_object_id();
		$this->related_post_id = is_singular() && ( 0 !== $post_id ) ? $post_id : null;
		$this->query_args['post_type'] = get_post_type( $this->related_post_id );
	}

	protected function set_post_exclude_args() {
		parent::set_post_exclude_args();

		if ( $this->related_post_id ) {
			$post_not_in = isset( $this->query_args['post__not_in'] ) ? $this->query_args['post__not_in'] : [];
			$post_not_in[] = $this->related_post_id;
			$this->query_args['post__not_in'] = $post_not_in;
		}
	}

	protected function build_terms_query_include( $control_id ) {
		/**
		 * Build tax_query for the "related posts" query:
		 * 1) find the list of taxonomies associated with the current-post
		 * 2) extract the ids for each taxonomy
		 * 3) build tax_query array accordingly
		 *
		 */
		if ( null === $this->get_widget_settings( 'include' ) || null === $this->get_widget_settings( 'related_taxonomies' ) || ! $this->maybe_in_array( 'terms', $this->get_widget_settings( 'include' ) ) ) {
			return;
		}

		$taxonomies = $this->get_widget_settings( 'related_taxonomies' );
		$terms = [];
		if ( is_string( $taxonomies ) ) {
			$terms[ $taxonomies ] = wp_get_post_terms( $this->related_post_id, $taxonomies, [ 'fields' => 'tt_ids' ] );
		} else {
			foreach ( $taxonomies as $taxonomy ) {
				$terms[ $taxonomy ] = wp_get_post_terms( $this->related_post_id, $taxonomy, [ 'fields' => 'tt_ids' ] );
			}
		}

		$this->insert_tax_query( $terms, false );
	}

	protected function set_author_args() {
		if ( ! $this->maybe_in_array( 'authors', $this->get_widget_settings( 'include' ) ) ) {
			return;
		}

		$this->query_args['author__in'] = get_post_field( 'post_author', $this->related_post_id );
	}

	/**
	 * @param string $key
	 * @param mixed  $value
	 * @param string $control_name
	 */
	private function set_fallback_arg_by_settings( $key, $value, $control_name = '' ) {
		if ( empty( $this->fallback_args[ $key ] ) ) {
			$settings = $this->widget->get_settings();
			$this->fallback_args[ $key ] = ( '' === $control_name || empty( $settings[ $this->prefix . $control_name ] ) ) ? $value : $settings[ $this->prefix . $control_name ];
		}
	}

	protected function set_fallback_query_args() {
		$this->set_fallback_arg_by_settings( 'ignore_sticky_posts', true );
		$this->set_fallback_arg_by_settings( 'post_status', 'publish' );

		$post_types = Utils::get_public_post_types();
		$post_types = array_keys( $post_types );

		$this->set_fallback_arg_by_settings( 'post_type', $post_types );

		if ( 'fallback_by_id' === $this->get_widget_settings( 'related_fallback' ) ) {
			$this->set_fallback_arg_by_settings( 'post__in', [ 0 ], 'fallback_ids' );
			$this->set_fallback_arg_by_settings( 'orderby', 'rand' );
		} else { //recent posts
			$this->set_fallback_arg_by_settings( 'orderby', 'date' );
			$this->set_fallback_arg_by_settings( 'order', 'DESC' );
		}
	}
}
modules/query-control/controls/group-control-related.php000064400000007316150755004310017652 0ustar00<?php
namespace ElementorPro\Modules\QueryControl\Controls;

use Elementor\Controls_Manager;
use ElementorPro\Core\Utils;
use ElementorPro\Modules\QueryControl\Module as Query_Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Group_Control_Related extends Group_Control_Query {

	public static function get_type() {
		return 'related-query';
	}

	/**
	 * Build the group-controls array
	 * Note: this method completely overrides any settings done in Group_Control_Posts
	 * @param string $name
	 *
	 * @return array
	 */
	protected function init_fields_by_name( $name ) {
		$fields = parent::init_fields_by_name( $name );

		$tabs_wrapper = $name . '_query_args';
		$include_wrapper = $name . '_query_include';

		$fields['post_type']['options']['related'] = esc_html__( 'Related', 'elementor-pro' );
		$fields['include_term_ids']['condition']['post_type!'][] = 'related';
		$fields['related_taxonomies']['condition']['post_type'][] = 'related';
		$fields['include_authors']['condition']['post_type!'][] = 'related';
		$fields['exclude_authors']['condition']['post_type!'][] = 'related';
		$fields['avoid_duplicates']['condition']['post_type!'][] = 'related';
		$fields['offset']['condition']['post_type!'][] = 'related';

		$related_taxonomies = [
			'label' => esc_html__( 'Term', 'elementor-pro' ),
			'type' => Controls_Manager::SELECT2,
			'options' => $this->get_supported_taxonomies(),
			'label_block' => true,
			'multiple' => true,
			'condition' => [
				'include' => 'terms',
				'post_type' => [
					'related',
				],
			],
			'tabs_wrapper' => $tabs_wrapper,
			'inner_tab' => $include_wrapper,
		];

		$related_fallback = [
			'label' => esc_html__( 'Fallback', 'elementor-pro' ),
			'type' => Controls_Manager::SELECT,
			'options' => [
				'fallback_none' => esc_html__( 'None', 'elementor-pro' ),
				'fallback_by_id' => esc_html__( 'Manual Selection', 'elementor-pro' ),
				'fallback_recent' => esc_html__( 'Recent Posts', 'elementor-pro' ),
			],
			'default' => 'fallback_none',
			'description' => esc_html__( 'Displayed if no relevant results are found. Manual selection display order is random', 'elementor-pro' ),
			'condition' => [
				'post_type' => 'related',
			],
			'separator' => 'before',
		];

		$fallback_ids = [
			'label' => esc_html__( 'Search & Select', 'elementor-pro' ),
			'type' => Query_Module::QUERY_CONTROL_ID,
			'options' => [],
			'label_block' => true,
			'multiple' => true,
			'autocomplete' => [
				'object' => Query_Module::QUERY_OBJECT_POST,
			],
			'condition' => [
				'post_type' => 'related',
				'related_fallback' => 'fallback_by_id',
			],
			'export' => false,
		];

		$fields = \Elementor\Utils::array_inject( $fields, 'include_term_ids', [ 'related_taxonomies' => $related_taxonomies ] );
		$fields = \Elementor\Utils::array_inject( $fields, 'offset', [ 'related_fallback' => $related_fallback ] );
		$fields = \Elementor\Utils::array_inject( $fields, 'related_fallback', [ 'fallback_ids' => $fallback_ids ] );

		return $fields;
	}

	protected function get_supported_taxonomies() {
		$supported_taxonomies = [];

		$public_types = Utils::get_public_post_types();

		foreach ( $public_types as $type => $title ) {
			$taxonomies = get_object_taxonomies( $type, 'objects' );
			foreach ( $taxonomies as $key => $tax ) {
				if ( ! array_key_exists( $key, $supported_taxonomies ) ) {
					$label = $tax->label;
					if ( in_array( $tax->label, $supported_taxonomies ) ) {
						$label = $tax->label . ' (' . $tax->name . ')';
					}
					$supported_taxonomies[ $key ] = $label;
				}
			}
		}

		return $supported_taxonomies;
	}

	protected static function init_presets() {
		parent::init_presets();
		static::$presets['related'] = [
			'related_fallback',
			'fallback_ids',
		];
	}
}
modules/query-control/controls/query.php000064400000001002150755004310014551 0ustar00<?php
namespace ElementorPro\Modules\QueryControl\Controls;

use Elementor\Control_Select2;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Query extends Control_Select2 {

	public function get_type() {
		return 'query';
	}

	/**
	 * 'query' can be used for passing query args in the structure and format used by WP_Query.
	 * @return array
	 */
	protected function get_default_settings() {
		return array_merge(
			parent::get_default_settings(), [
				'query' => '',
			]
		);
	}
}
modules/query-control/controls/group-control-query.php000064400000033733150755004310017401 0ustar00<?php
namespace ElementorPro\Modules\QueryControl\Controls;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Base;
use ElementorPro\Core\Utils;
use ElementorPro\Modules\QueryControl\Module as Query_Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Group_Control_Query extends Group_Control_Base {

	protected static $presets;
	protected static $fields;

	public static function get_type() {
		return 'query-group';
	}

	protected function init_args( $args ) {
		parent::init_args( $args );
		$args = $this->get_args();
		static::$fields = $this->init_fields_by_name( $args['name'] );
	}

	protected function init_fields() {
		$args = $this->get_args();

		return $this->init_fields_by_name( $args['name'] );
	}

	/**
	 * Build the group-controls array
	 * Note: this method completely overrides any settings done in Group_Control_Posts
	 * @param string $name
	 *
	 * @return array
	 */
	protected function init_fields_by_name( $name ) {
		$fields = [];

		$name .= '_';

		$fields['post_type'] = [
			'label' => esc_html__( 'Source', 'elementor-pro' ),
			'type' => Controls_Manager::SELECT,
			'options' => [
				'by_id' => esc_html__( 'Manual Selection', 'elementor-pro' ),
				'current_query' => esc_html__( 'Current Query', 'elementor-pro' ),
			],
		];

		$fields['query_args'] = [
			'type' => Controls_Manager::TABS,
		];

		$tabs_wrapper = $name . 'query_args';
		$include_wrapper = $name . 'query_include';
		$exclude_wrapper = $name . 'query_exclude';

		$fields['query_include'] = [
			'type' => Controls_Manager::TAB,
			'label' => esc_html__( 'Include', 'elementor-pro' ),
			'tabs_wrapper' => $tabs_wrapper,
			'condition' => [
				'post_type!' => [
					'current_query',
					'by_id',
				],
			],
		];

		$fields['posts_ids'] = [
			'label' => esc_html__( 'Search & Select', 'elementor-pro' ),
			'type' => Query_Module::QUERY_CONTROL_ID,
			'options' => [],
			'label_block' => true,
			'multiple' => true,
			'autocomplete' => [
				'object' => Query_Module::QUERY_OBJECT_POST,
			],
			'condition' => [
				'post_type' => 'by_id',
			],
			'tabs_wrapper' => $tabs_wrapper,
			'inner_tab' => $include_wrapper,
			'export' => false,
		];

		$fields['include'] = [
			'label' => esc_html__( 'Include By', 'elementor-pro' ),
			'type' => Controls_Manager::SELECT2,
			'multiple' => true,
			'options' => [
				'terms' => esc_html__( 'Term', 'elementor-pro' ),
				'authors' => esc_html__( 'Author', 'elementor-pro' ),
			],
			'condition' => [
				'post_type!' => [
					'by_id',
					'current_query',
				],
			],
			'label_block' => true,
			'tabs_wrapper' => $tabs_wrapper,
			'inner_tab' => $include_wrapper,
		];

		$fields['include_term_ids'] = [
			'label' => esc_html__( 'Term', 'elementor-pro' ),
			'description' => esc_html__( 'Terms are items in a taxonomy. The available taxonomies are: Categories, Tags, Formats and custom taxonomies.', 'elementor-pro' ),
			'type' => Query_Module::QUERY_CONTROL_ID,
			'options' => [],
			'label_block' => true,
			'multiple' => true,
			'autocomplete' => [
				'object' => Query_Module::QUERY_OBJECT_CPT_TAX,
				'display' => 'detailed',
			],
			'group_prefix' => $name,
			'condition' => [
				'include' => 'terms',
				'post_type!' => [
					'by_id',
					'current_query',
				],
			],
			'tabs_wrapper' => $tabs_wrapper,
			'inner_tab' => $include_wrapper,
		];

		$fields['include_authors'] = [
			'label' => esc_html__( 'Author', 'elementor-pro' ),
			'label_block' => true,
			'type' => Query_Module::QUERY_CONTROL_ID,
			'multiple' => true,
			'default' => [],
			'options' => [],
			'autocomplete' => [
				'object' => Query_Module::QUERY_OBJECT_AUTHOR,
			],
			'condition' => [
				'include' => 'authors',
				'post_type!' => [
					'by_id',
					'current_query',
				],
			],
			'tabs_wrapper' => $tabs_wrapper,
			'inner_tab' => $include_wrapper,
			'export' => false,
		];

		$fields['query_exclude'] = [
			'type' => Controls_Manager::TAB,
			'label' => esc_html__( 'Exclude', 'elementor-pro' ),
			'tabs_wrapper' => $tabs_wrapper,
			'condition' => [
				'post_type!' => [
					'by_id',
					'current_query',
				],
			],
		];

		$fields['exclude'] = [
			'label' => esc_html__( 'Exclude By', 'elementor-pro' ),
			'type' => Controls_Manager::SELECT2,
			'multiple' => true,
			'options' => [
				'current_post' => esc_html__( 'Current Post', 'elementor-pro' ),
				'manual_selection' => esc_html__( 'Manual Selection', 'elementor-pro' ),
				'terms' => esc_html__( 'Term', 'elementor-pro' ),
				'authors' => esc_html__( 'Author', 'elementor-pro' ),
			],
			'condition' => [
				'post_type!' => [
					'by_id',
					'current_query',
				],
			],
			'label_block' => true,
			'tabs_wrapper' => $tabs_wrapper,
			'inner_tab' => $exclude_wrapper,
		];

		$fields['exclude_ids'] = [
			'label' => esc_html__( 'Search & Select', 'elementor-pro' ),
			'type' => Query_Module::QUERY_CONTROL_ID,
			'options' => [],
			'label_block' => true,
			'multiple' => true,
			'autocomplete' => [
				'object' => Query_Module::QUERY_OBJECT_POST,
			],
			'condition' => [
				'exclude' => 'manual_selection',
				'post_type!' => [
					'by_id',
					'current_query',
				],
			],
			'tabs_wrapper' => $tabs_wrapper,
			'inner_tab' => $exclude_wrapper,
			'export' => false,
		];

		$fields['exclude_term_ids'] = [
			'label' => esc_html__( 'Term', 'elementor-pro' ),
			'type' => Query_Module::QUERY_CONTROL_ID,
			'options' => [],
			'label_block' => true,
			'multiple' => true,
			'autocomplete' => [
				'object' => Query_Module::QUERY_OBJECT_CPT_TAX,
				'display' => 'detailed',
			],
			'group_prefix' => $name,
			'condition' => [
				'exclude' => 'terms',
				'post_type!' => [
					'by_id',
					'current_query',
				],
			],
			'tabs_wrapper' => $tabs_wrapper,
			'inner_tab' => $exclude_wrapper,
			'export' => false,
		];

		$fields['exclude_authors'] = [
			'label' => esc_html__( 'Author', 'elementor-pro' ),
			'type' => Query_Module::QUERY_CONTROL_ID,
			'options' => [],
			'label_block' => true,
			'multiple' => true,
			'autocomplete' => [
				'object' => Query_Module::QUERY_OBJECT_AUTHOR,
				'display' => 'detailed',
			],
			'condition' => [
				'exclude' => 'authors',
				'post_type!' => [
					'by_id',
					'current_query',
				],
			],
			'tabs_wrapper' => $tabs_wrapper,
			'inner_tab' => $exclude_wrapper,
			'export' => false,
		];

		$fields['avoid_duplicates'] = [
			'label' => esc_html__( 'Avoid Duplicates', 'elementor-pro' ),
			'type' => Controls_Manager::SWITCHER,
			'default' => '',
			'description' => esc_html__( 'Set to Yes to avoid duplicate posts from showing up. This only effects the frontend.', 'elementor-pro' ),
			'tabs_wrapper' => $tabs_wrapper,
			'inner_tab' => $exclude_wrapper,
			'condition' => [
				'post_type!' => [
					'by_id',
					'current_query',
				],
			],
		];

		$fields['offset'] = [
			'label' => esc_html__( 'Offset', 'elementor-pro' ),
			'type' => Controls_Manager::NUMBER,
			'default' => 0,
			'condition' => [
				'post_type!' => [
					'by_id',
					'current_query',
				],
			],
			'description' => esc_html__( 'Use this setting to skip over posts (e.g. \'2\' to skip over 2 posts).', 'elementor-pro' ),
			'tabs_wrapper' => $tabs_wrapper,
			'inner_tab' => $exclude_wrapper,
		];

		$fields['select_date'] = [
			'label' => esc_html__( 'Date', 'elementor-pro' ),
			'type' => Controls_Manager::SELECT,
			'post_type' => '',
			'options' => [
				'anytime' => esc_html__( 'All', 'elementor-pro' ),
				'today' => esc_html__( 'Past Day', 'elementor-pro' ),
				'week' => esc_html__( 'Past Week', 'elementor-pro' ),
				'month'  => esc_html__( 'Past Month', 'elementor-pro' ),
				'quarter' => esc_html__( 'Past Quarter', 'elementor-pro' ),
				'year' => esc_html__( 'Past Year', 'elementor-pro' ),
				'exact' => esc_html__( 'Custom', 'elementor-pro' ),
			],
			'default' => 'anytime',
			'multiple' => false,
			'condition' => [
				'post_type!' => [
					'by_id',
					'current_query',
				],
			],
			'separator' => 'before',
		];

		$fields['date_before'] = [
			'label' => esc_html__( 'Before', 'elementor-pro' ),
			'type' => Controls_Manager::DATE_TIME,
			'post_type' => '',
			'label_block' => false,
			'multiple' => false,
			'placeholder' => esc_html__( 'Choose', 'elementor-pro' ),
			'condition' => [
				'select_date' => 'exact',
				'post_type!' => [
					'by_id',
					'current_query',
				],
			],
			'description' => esc_html__( 'Setting a ‘Before’ date will show all the posts published until the chosen date (inclusive).', 'elementor-pro' ),
		];

		$fields['date_after'] = [
			'label' => esc_html__( 'After', 'elementor-pro' ),
			'type' => Controls_Manager::DATE_TIME,
			'post_type' => '',
			'label_block' => false,
			'multiple' => false,
			'placeholder' => esc_html__( 'Choose', 'elementor-pro' ),
			'condition' => [
				'select_date' => 'exact',
				'post_type!' => [
					'by_id',
					'current_query',
				],
			],
			'description' => esc_html__( 'Setting an ‘After’ date will show all the posts published since the chosen date (inclusive).', 'elementor-pro' ),
		];

		$fields['orderby'] = [
			'label' => esc_html__( 'Order By', 'elementor-pro' ),
			'type' => Controls_Manager::SELECT,
			'default' => 'post_date',
			'options' => [
				'post_date' => esc_html__( 'Date', 'elementor-pro' ),
				'post_title' => esc_html__( 'Title', 'elementor-pro' ),
				'menu_order' => esc_html__( 'Menu Order', 'elementor-pro' ),
				'rand' => esc_html__( 'Random', 'elementor-pro' ),
			],
			'condition' => [
				'post_type!' => 'current_query',
			],
		];

		$fields['order'] = [
			'label' => esc_html__( 'Order', 'elementor-pro' ),
			'type' => Controls_Manager::SELECT,
			'default' => 'desc',
			'options' => [
				'asc' => esc_html__( 'ASC', 'elementor-pro' ),
				'desc' => esc_html__( 'DESC', 'elementor-pro' ),
			],
			'condition' => [
				'post_type!' => 'current_query',
			],
		];

		$fields['posts_per_page'] = [
			'label' => esc_html__( 'Posts Per Page', 'elementor-pro' ),
			'type' => Controls_Manager::NUMBER,
			'default' => 3,
			'condition' => [
				'post_type!' => 'current_query',
			],
		];

		$fields['ignore_sticky_posts'] = [
			'label' => esc_html__( 'Ignore Sticky Posts', 'elementor-pro' ),
			'type' => Controls_Manager::SWITCHER,
			'default' => 'yes',
			'condition' => [
				'post_type' => 'post',
			],
			'description' => esc_html__( 'Sticky-posts ordering is visible on frontend only', 'elementor-pro' ),
		];

		$fields['query_id'] = [
			'label' => esc_html__( 'Query ID', 'elementor-pro' ),
			'type' => Controls_Manager::TEXT,
			'default' => '',
			'description' => esc_html__( 'Give your Query a custom unique id to allow server side filtering', 'elementor-pro' ),
			'separator' => 'before',
		];

		static::init_presets();

		return $fields;
	}

	/**
	 * Presets: filter controls subsets to be be used by the specific Group_Control_Query instance.
	 *
	 * Possible values:
	 * 'full' : (default) all presets
	 * 'include' : the 'include' tab - by id, by taxonomy, by author
	 * 'exclude': the 'exclude' tab - by id, by taxonomy, by author
	 * 'advanced_exclude': extend the 'exclude' preset with 'avoid-duplicates' & 'offset'
	 * 'date': date query controls
	 * 'pagination': posts per-page
	 * 'order': sort & ordering controls
	 * 'query_id': allow saving a specific query for future usage.
	 *
	 * Usage:
	 * full: build a Group_Controls_Query with all possible controls,
	 * when 'full' is passed, the Group_Controls_Query will ignore all other preset values.
	 * $this->add_group_control(
	 * Group_Control_Query::get_type(),
	 * [
	 * ...
	 * 'presets' => [ 'full' ],
	 *  ...
	 *  ] );
	 *
	 * Subset: build a Group_Controls_Query with subset of the controls,
	 * in the following example, the Query controls will set only the 'include' & 'date' query args.
	 * $this->add_group_control(
	 * Group_Control_Query::get_type(),
	 * [
	 * ...
	 * 'presets' => [ 'include', 'date' ],
	 *  ...
	 *  ] );
	 */
	protected static function init_presets() {

		$tabs = [
			'query_args',
			'query_include',
			'query_exclude',
		];

		static::$presets['include'] = array_merge( $tabs, [
			'include',
			'include_ids',
			'include_term_ids',
			'include_authors',
		] );

		static::$presets['exclude'] = array_merge( $tabs, [
			'exclude',
			'exclude_ids',
			'exclude_term_ids',
			'exclude_authors',
		] );

		static::$presets['advanced_exclude'] = array_merge( static::$presets['exclude'], [
			'avoid_duplicates',
			'offset',
		] );

		static::$presets['date'] = [
			'select_date',
			'date_before',
			'date_after',
		];

		static::$presets['pagination'] = [
			'posts_per_page',
			'ignore_sticky_posts',
		];

		static::$presets['order'] = [
			'orderby',
			'order',
		];

		static::$presets['query_id'] = [
			'query_id',
		];
	}

	private function filter_by_presets( $presets, $fields ) {

		if ( in_array( 'full', $presets, true ) ) {
			return $fields;
		}

		$control_ids = [];
		foreach ( static::$presets as $key => $preset ) {
			$control_ids = array_merge( $control_ids, $preset );
		}

		foreach ( $presets as $preset ) {
			if ( array_key_exists( $preset, static::$presets ) ) {
				$control_ids = array_diff( $control_ids, static::$presets[ $preset ] );
			}
		}

		foreach ( $control_ids as $remove ) {
			unset( $fields[ $remove ] );
		}

		return $fields;

	}

	protected function prepare_fields( $fields ) {

		$args = $this->get_args();

		if ( ! empty( $args['presets'] ) ) {
			$fields = $this->filter_by_presets( $args['presets'], $fields );
		}

		$post_type_args = [];
		if ( ! empty( $args['post_type'] ) ) {
			$post_type_args['post_type'] = $args['post_type'];
		}

		$post_types = Utils::get_public_post_types( $post_type_args );

		$fields['post_type']['options'] = array_merge( $post_types, $fields['post_type']['options'] );
		$fields['post_type']['default'] = key( $post_types );
		$fields['posts_ids']['object_type'] = array_keys( $post_types );

		//skip parent, go directly to grandparent
		return Group_Control_Base::prepare_fields( $fields );
	}

	protected function get_child_default_args() {
		$args = parent::get_child_default_args();
		$args['presets'] = [ 'full' ];

		return $args;
	}

	protected function get_default_options() {
		return [
			'popover' => false,
		];
	}
}
modules/query-control/controls/group-control-posts.php000064400000020217150755004310017375 0ustar00<?php
namespace ElementorPro\Modules\QueryControl\Controls;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Base;
use ElementorPro\Core\Utils;
use ElementorPro\Modules\QueryControl\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Class Group_Control_Posts
 * @deprecated since 2.5.0, use class Group_Control_Query and Elementor_Post_Query
 */
class Group_Control_Posts extends Group_Control_Base {

	const INLINE_MAX_RESULTS = 15;

	protected static $fields;

	public static function get_type() {
		return 'posts';
	}

	/**
	 * @deprecated since 2.4.0 using Control's settings 'export' = false
	 *
	 * @param $element
	 * @param $control_id
	 *
	 * @return mixed
	 */
	public static function on_export_remove_setting_from_element( $element, $control_id ) {
		_deprecated_function( __METHOD__, '2.4.0' );

		unset( $element['settings'][ $control_id . '_posts_ids' ] );
		unset( $element['settings'][ $control_id . '_authors' ] );

		foreach ( Utils::get_public_post_types() as $post_type => $label ) {
			$taxonomy_filter_args = [
				'show_in_nav_menus' => true,
				'object_type' => [ $post_type ],
			];

			$taxonomies = get_taxonomies( $taxonomy_filter_args, 'objects' );

			foreach ( $taxonomies as $taxonomy => $object ) {
				unset( $element['settings'][ $control_id . '_' . $taxonomy . '_ids' ] );
			}
		}

		return $element;
	}

	protected function init_fields() {
		$fields = [];

		$fields['post_type'] = [
			'label' => esc_html__( 'Source', 'elementor-pro' ),
			'type' => Controls_Manager::SELECT,
		];

		$fields['posts_ids'] = [
			'label' => esc_html__( 'Search & Select', 'elementor-pro' ),
			'type' => Module::QUERY_CONTROL_ID,
			'post_type' => '',
			'options' => [],
			'label_block' => true,
			'multiple' => true,
			'filter_type' => 'by_id',
			'condition' => [
				'post_type' => 'by_id',
			],
			'export' => false,
		];

		$fields['authors'] = [
			'label' => esc_html__( 'Author', 'elementor-pro' ),
			'label_block' => true,
			'type' => Module::QUERY_CONTROL_ID,
			'multiple' => true,
			'default' => [],
			'options' => [],
			'filter_type' => 'author',
			'condition' => [
				'post_type!' => [
					'by_id',
					'current_query',
				],
			],
			'export' => false,
		];

		return $fields;
	}

	protected function prepare_fields( $fields ) {
		$args = $this->get_args();

		$post_type_args = [];
		if ( ! empty( $args['post_type'] ) ) {
			$post_type_args['post_type'] = $args['post_type'];
		}

		$post_types = Utils::get_public_post_types( $post_type_args );

		$post_types_options = $post_types;

		$post_types_options['by_id'] = esc_html__( 'Manual Selection', 'elementor-pro' );
		$post_types_options['current_query'] = esc_html__( 'Current Query', 'elementor-pro' );

		$fields['post_type']['options'] = $post_types_options;

		$fields['post_type']['default'] = key( $post_types );

		$fields['posts_ids']['object_type'] = array_keys( $post_types );

		$taxonomy_filter_args = [
			'show_in_nav_menus' => true,
		];

		$taxonomies = get_taxonomies( $taxonomy_filter_args, 'objects' );

		// bypass bug in WP_List_Util::filter() causing wrong array comparison
		// when a taxonomy belongs to several post-types (e.g. when using woocommerce-product-add-ons)
		// ( using simple '==' rather than in_array() or array_intersect() ).
		$filtered_taxonomies = [];
		if ( ! empty( $args['post_type'] ) ) {
			foreach ( $taxonomies as $taxonomy => $obj ) {
				$tax_array = (array) $obj;
				if ( in_array( $args['post_type'], $tax_array['object_type'] ) ) {
					$filtered_taxonomies[ $taxonomy ] = $obj;
				}
			}
		} else {
			$filtered_taxonomies = $taxonomies;
		}

		foreach ( $filtered_taxonomies as $taxonomy => $object ) {
			$taxonomy_args = [
				'label' => $object->label,
				'type' => Module::QUERY_CONTROL_ID,
				'label_block' => true,
				'multiple' => true,
				'object_type' => $taxonomy,
				'options' => [],
				'condition' => [
					'post_type' => $object->object_type,
				],
				'export' => false,
			];

			$count = wp_count_terms( $taxonomy );

			$options = [];

			// For large websites, use Ajax to search
			if ( $count > self::INLINE_MAX_RESULTS ) {
				$taxonomy_args['type'] = Module::QUERY_CONTROL_ID;

				$taxonomy_args['filter_type'] = 'taxonomy';
			} else {
				$taxonomy_args['type'] = Controls_Manager::SELECT2;

				$terms = get_terms( [
					'taxonomy' => $taxonomy,
					'hide_empty' => false,
				] );

				foreach ( $terms as $term ) {
					$options[ $term->term_id ] = $term->name;
				}

				$taxonomy_args['options'] = $options;
			}

			$fields[ $taxonomy . '_ids' ] = $taxonomy_args;
		}

		return parent::prepare_fields( $fields );
	}

	protected function get_default_options() {
		return [
			'popover' => false,
		];
	}

	protected function fix_offset( $query_args, $settings, $prefix = '' ) {
		if ( 0 < $settings[ $prefix . 'offset' ] ) {
			/**
			 * Due to a WordPress bug, the offset will be set later, in $this->fix_query_offset()
			 * @see https://codex.wordpress.org/Making_Custom_Queries_using_Offset_and_Pagination
			 */
			$query_args['offset_to_fix'] = $settings[ $prefix . 'offset' ];
		}

		return $query_args;
	}

	protected function build_query_args( $settings, $control_id_prefix ) {

		$prefix = $control_id_prefix . '_';

		$post_type = $settings[ $prefix . 'post_type' ];

		$query_args = [
			'orderby' => $settings['orderby'],
			'order' => $settings['order'],
			'ignore_sticky_posts' => 1,
			'post_status' => 'publish', // Hide drafts/private posts for admins
		];

		if ( 'by_id' === $post_type ) {
			$post_types = Utils::get_public_post_types();

			$query_args['post_type'] = array_keys( $post_types );
			$query_args['posts_per_page'] = -1;

			$query_args['post__in'] = $settings[ $prefix . 'posts_ids' ];

			if ( empty( $query_args['post__in'] ) ) {
				// If no selection - return an empty query
				$query_args['post__in'] = [ 0 ];
			}
		} else {
			$query_args['post_type'] = $post_type;
			$query_args['posts_per_page'] = $settings['posts_per_page'];
			$query_args['tax_query'] = [];

			$query_args = $this->fix_offset( $query_args, $settings );

			$taxonomies = get_object_taxonomies( $post_type, 'objects' );

			foreach ( $taxonomies as $object ) {
				$setting_key = $prefix . $object->name . '_ids';

				if ( ! empty( $settings[ $setting_key ] ) ) {
					$query_args['tax_query'][] = [
						'taxonomy' => $object->name,
						'field' => 'term_id',
						'terms' => $settings[ $setting_key ],
					];
				}
			}
		}

		if ( ! empty( $settings[ $prefix . 'authors' ] ) ) {
			$query_args['author__in'] = $settings[ $prefix . 'authors' ];
		}

		$post__not_in = [];
		if ( ! empty( $settings['exclude'] ) ) {
			if ( in_array( 'current_post', $settings['exclude'], true ) ) {
				if ( wp_doing_ajax() && ! empty( $_REQUEST['post_id'] ) ) {
					$post__not_in[] = $_REQUEST['post_id'];
				} elseif ( is_singular() ) {
					$post__not_in[] = get_queried_object_id();
				}
			}

			if ( in_array( 'manual_selection', $settings['exclude'], true ) && ! empty( $settings['exclude_ids'] ) ) {
				$post__not_in = array_merge( $post__not_in, $settings['exclude_ids'] );
			}
		}

		if ( ! empty( $settings['avoid_duplicates'] ) && 'yes' === $settings['avoid_duplicates'] ) {
			$post__not_in = array_merge( $post__not_in, Module::$displayed_ids );
		}

		$query_args['post__not_in'] = $post__not_in;

		return $query_args;
	}

	public function get_query_args( $control_id_prefix, $settings ) {

		$defaults = [
			$control_id_prefix . '_post_type' => 'post',
			$control_id_prefix . '_posts_ids' => [],
			'orderby' => 'date',
			'order' => 'desc',
			'posts_per_page' => 3,
			'offset' => 0,
		];

		$settings = wp_parse_args( $settings, $defaults );

		$post_type = $settings[ $control_id_prefix . '_post_type' ];

		if ( 'current_query' === $post_type ) {
			$current_query_vars = $GLOBALS['wp_query']->query_vars;

			/**
			 * Current query variables.
			 *
			 * Filters the query variables for the current query.
			 *
			 * @since 1.0.0
			 *
			 * @param array $current_query_vars Current query variables.
			 */
			$current_query_vars = apply_filters( 'elementor_pro/query_control/get_query_args/current_query', $current_query_vars );

			return $current_query_vars;
		}

		return $this->build_query_args( $settings, $control_id_prefix );
	}
}
modules/query-control/module.php000064400000071653150755004310013051 0ustar00<?php
namespace ElementorPro\Modules\QueryControl;

use Elementor\Controls_Manager;
use Elementor\Core\Common\Modules\Ajax\Module as Ajax;
use Elementor\TemplateLibrary\Source_Local;
use Elementor\Widget_Base;
use ElementorPro\Base\Module_Base;
use ElementorPro\Modules\QueryControl\Classes\Elementor_Post_Query;
use ElementorPro\Modules\QueryControl\Classes\Elementor_Related_Query;
use ElementorPro\Modules\QueryControl\Controls\Group_Control_Posts;
use ElementorPro\Modules\QueryControl\Controls\Group_Control_Query;
use ElementorPro\Modules\QueryControl\Controls\Group_Control_Related;
use ElementorPro\Modules\QueryControl\Controls\Query;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	const QUERY_CONTROL_ID = 'query';
	const AUTOCOMPLETE_ERROR_CODE = 'QueryControlAutocomplete';
	const GET_TITLES_ERROR_CODE = 'QueryControlGetTitles';

	// Supported objects for query:
	const QUERY_OBJECT_POST = 'post';
	const QUERY_OBJECT_TAX = 'tax';
	const QUERY_OBJECT_AUTHOR = 'author';
	const QUERY_OBJECT_USER = 'user';
	const QUERY_OBJECT_LIBRARY_TEMPLATE = 'library_template';
	const QUERY_OBJECT_ATTACHMENT = 'attachment';

	// Objects that are manipulated by js (not sent in AJAX):
	const QUERY_OBJECT_CPT_TAX = 'cpt_tax';
	const QUERY_OBJECT_JS = 'js';

	public static $displayed_ids = [];

	private static $supported_objects_for_query = [
		self::QUERY_OBJECT_POST,
		self::QUERY_OBJECT_TAX,
		self::QUERY_OBJECT_AUTHOR,
		self::QUERY_OBJECT_USER,
		self::QUERY_OBJECT_LIBRARY_TEMPLATE,
		self::QUERY_OBJECT_ATTACHMENT,
	];

	public function __construct() {
		parent::__construct();

		$this->add_actions();
	}

	public static function add_to_avoid_list( $ids ) {
		self::$displayed_ids = array_unique( array_merge( self::$displayed_ids, $ids ) );
	}

	public static function get_avoid_list_ids() {
		return self::$displayed_ids;
	}

	/**
	 * @deprecated use Group_Control_Query capabilities
	 *
	 * @param Widget_Base $widget
	 */
	public static function add_exclude_controls( $widget ) {
		Plugin::elementor()->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '2.5.0', 'class Group_Control_Query' );

		$widget->add_control(
			'exclude',
			[
				'label' => esc_html__( 'Exclude', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'multiple' => true,
				'options' => [
					'current_post' => esc_html__( 'Current Post', 'elementor-pro' ),
					'manual_selection' => esc_html__( 'Manual Selection', 'elementor-pro' ),
				],
				'label_block' => true,
			]
		);

		$widget->add_control(
			'exclude_ids',
			[
				'label' => esc_html__( 'Search & Select', 'elementor-pro' ),
				'type' => self::QUERY_CONTROL_ID,
				'autocomplete' => [
					'object' => self::QUERY_OBJECT_POST,
				],
				'options' => [],
				'label_block' => true,
				'multiple' => true,
				'condition' => [
					'exclude' => 'manual_selection',
				],
			]
		);

		$widget->add_control(
			'avoid_duplicates',
			[
				'label' => esc_html__( 'Avoid Duplicates', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'description' => esc_html__( 'Set to Yes to avoid duplicate posts from showing up on the page. This only affects the frontend.', 'elementor-pro' ),
			]
		);

	}

	public function get_name() {
		return 'query-control';
	}

	private function search_taxonomies( $query_params, $query_data, $data ) {
		$by_field = $query_data['query']['by_field'];
		$terms = get_terms( $query_params );

		$results = [];

		foreach ( $terms as $term ) {
			$results[] = [
				'id' => $term->{$by_field},
				'text' => $this->get_term_name( $term, $query_data['display'], $data ),
			];
		}

		return $results;

	}

	/**
	 * 'autocomplete' => [
	 *    'object' => 'post|tax|user|library_template|attachment|js', // required
	 *    'display' => 'minimal(default)|detailed|custom_filter_name',
	 *    'by_field' => 'term_taxonomy_id(default)|term_id', // relevant only if `object` is tax|cpt_tax
	 *    'query' => [
	 *        'post_type' => 'any|post|page|custom-post-type', // can be an array for multiple post types.
	 *                                                         // 'any' should not be used if 'object' is 'tax' or 'cpt_tax'.
	 *         ...
	 *    ],
	 * ],
	 *
	 * 'object' (required):    the queried object.
	 *      supported values:
	 *      'post'              : will use WP_Query(), if query['post_type'] is empty or missing, will default to 'any'.
	 *      'tax'               : will use get_terms().
	 *                            When 'post_type' is provided, will first use get_object_taxonomies() to build 'taxonomy'
	 *                            args then invoke get_terms().
	 *                            When both 'taxonomy' and 'post_type' are provided, 'post_type' is ignored.
	 *      'cpt_tax'           : Used in frontend only, will be replaced to 'tax' by js.
	 *                            Will use get_object_taxonomies() to build 'taxonomy' args then use get_terms().
	 *      'user'              : will use WP_User_Query() with the args defined in 'query'.
	 *      'author'            : will use WP_User_Query() with pre-defined args.
	 *      'library_template'  : will use WP_Query() with post_type = Source_Local::CPT.
	 *      'attachment'        : will use WP_Query() with post_type = attachment.
	 *      'js'                : Query data is populated by JavaScript.
	 *                            By the time the data is sent to the server,
	 *                            the 'object' value should be replaced with one of the other valid 'object' values and
	 *                            the Query array populated accordingly.
	 *      user_defined        : will invoke apply_filters() using the user_defined value as filter name,
	 *                            `elementor/query/[get_value_titles|get_autocomplete]/{user_defined}`.
	 *
	 * 'display':   output format
	 *      supported values:
	 *      'minimal' (default) : name only
	 *      'detailed'          : for Post & Taxonomies -> `[Taxonomy|Post-Type] : [parent] ... [parent] > name`
	 *                            for Users & Authors -> `name [email]`
	 *      user_defined        : will invoke apply_filters using the user_defined value as filter name,
	 *                            `elementor/query/[get_value_titles|get_autocomplete]/display/{user_defined}`
	 *
	 * `by_field`:  value of 'id' field in taxonomy query. Relevant only if `object` is tax|cpt_tax
	 *      supported values:
	 *      'term_taxonomy_id'(default)
	 *      'term_id'
	 *
	 * 'query': array of args to be passed "as-is" to the relevant query function (see 'object').
	 *
	 **
	 *
	 * @param array $data
	 *
	 * @return array | \WP_Error
	 */
	private function autocomplete_query_data( $data ) {
		if ( empty( $data['autocomplete'] ) || empty( $data['q'] ) || empty( $data['autocomplete']['object'] ) ) {
			return new \WP_Error( self::AUTOCOMPLETE_ERROR_CODE, 'Empty or incomplete data' );
		}

		$autocomplete = $data['autocomplete'];

		if ( in_array( $autocomplete['object'], self::$supported_objects_for_query, true ) ) {
			$method_name = 'autocomplete_query_for_' . $autocomplete['object'];
			if ( empty( $autocomplete['display'] ) ) {
				$autocomplete['display'] = 'minimal';
				$data['autocomplete'] = $autocomplete;
			}
			$query = $this->$method_name( $data );
			if ( is_wp_error( $query ) ) {
				return $query;
			}
			$autocomplete['query'] = $query;
		}

		return $autocomplete;
	}

	private function autocomplete_query_for_post( $data ) {
		if ( ! isset( $data['autocomplete']['query'] ) ) {
			return new \WP_Error( self::AUTOCOMPLETE_ERROR_CODE, 'Missing autocomplete[`query`] data' );
		}
		$query = $data['autocomplete']['query'];
		if ( empty( $query['post_type'] ) ) {
			$query['post_type'] = 'any';
		}
		$query['posts_per_page'] = -1;
		$query['s'] = $data['q'];

		return $query;
	}

	private function autocomplete_query_for_library_template( $data ) {
		$query = $data['autocomplete']['query'];

		$query['post_type'] = Source_Local::CPT;
		$query['orderby'] = 'meta_value';
		$query['order'] = 'ASC';

		if ( empty( $query['posts_per_page'] ) ) {
			$query['posts_per_page'] = -1;
		}
		$query['s'] = $data['q'];

		return $query;
	}

	private function autocomplete_query_for_attachment( $data ) {
		$query = $this->autocomplete_query_for_post( $data );
		if ( is_wp_error( $query ) ) {
			return $query;
		}
		$query['post_type'] = 'attachment';
		$query['post_status'] = 'inherit';

		return $query;
	}

	private function autocomplete_query_for_tax( $data ) {
		$query = $data['autocomplete']['query'];

		if ( empty( $query['taxonomy'] ) && ! empty( $query['post_type'] ) ) {
			$query['taxonomy'] = get_object_taxonomies( $query['post_type'] );
		}
		$query['search'] = $data['q'];
		$query['hide_empty'] = false;
		return $query;
	}

	private function autocomplete_query_for_author( $data ) {
		$query = $this->autocomplete_query_for_user( $data );
		if ( is_wp_error( $query ) ) {
			return $query;
		}
		$query['who'] = 'authors';
		return $query;
	}

	private function autocomplete_query_for_user( $data ) {
		$query = $data['autocomplete']['query'];
		if ( ! empty( $query ) ) {
			return $query;
		}

		$query = [
			'fields' => [
				'ID',
				'display_name',
			],
			'search' => '*' . $data['q'] . '*',
			'search_columns' => [
				'user_login',
				'user_nicename',
			],
		];
		if ( 'detailed' === $data['autocomplete']['display'] ) {
			$query['fields'][] = 'user_email';
		}
		return $query;
	}

	private function get_titles_query_data( $data ) {
		if ( empty( $data['get_titles'] ) || empty( $data['id'] ) || empty( $data['get_titles']['object'] ) ) {
			return new \WP_Error( self::GET_TITLES_ERROR_CODE, 'Empty or incomplete data' );
		}

		$get_titles = $data['get_titles'];
		if ( empty( $get_titles['query'] ) ) {
			$get_titles['query'] = [];
		}

		if ( in_array( $get_titles['object'], self::$supported_objects_for_query, true ) ) {
			$method_name = 'get_titles_query_for_' . $get_titles['object'];
			$query = $this->$method_name( $data );
			if ( is_wp_error( $query ) ) {
				return $query;
			}
			$get_titles['query'] = $query;
		}

		if ( empty( $get_titles['display'] ) ) {
			$get_titles['display'] = 'minimal';
		}

		return $get_titles;
	}

	private function get_titles_query_for_post( $data ) {
		$query = $data['get_titles']['query'];
		if ( empty( $query['post_type'] ) ) {
			$query['post_type'] = 'any';
		}
		$query['posts_per_page'] = -1;
		$query['post__in'] = (array) $data['id'];

		return $query;
	}

	private function get_titles_query_for_attachment( $data ) {
		$query = $this->get_titles_query_for_post( $data );
		$query['post_type'] = 'attachment';
		$query['post_status'] = 'inherit';

		return $query;
	}

	private function get_titles_query_for_tax( $data ) {
		$by_field = empty( $data['get_titles']['by_field'] ) ? 'term_taxonomy_id' : $data['get_titles']['by_field'];
		return [
			$by_field => (array) $data['id'],
			'hide_empty' => false,
		];
	}


	private function get_titles_query_for_library_template( $data ) {
		$query = $data['get_titles']['query'];

		$query['post_type'] = Source_Local::CPT;
		$query['orderby'] = 'meta_value';
		$query['order'] = 'ASC';

		if ( empty( $query['posts_per_page'] ) ) {
			$query['posts_per_page'] = -1;
		}

		return $query;
	}

	private function get_titles_query_for_author( $data ) {
		$query = $this->get_titles_query_for_user( $data );
		$query['who'] = 'authors';
		$query['has_published_posts'] = true;
		return $query;
	}

	private function get_titles_query_for_user( $data ) {
		$query = $data['get_titles']['query'];
		if ( ! empty( $query ) ) {
			return $query;
		}
		$query = [
			'fields' => [
				'ID',
				'display_name',
			],
			'include' => (array) $data['id'],
		];
		if ( 'detailed' === $data['get_titles']['display'] ) {
			$query['fields'][] = 'user_email';
		}
		return $query;
	}

	/**
	 * @deprecated 2.6.0 use new `autocomplete` format
	 *
	 * @param $data
	 *
	 * @return mixed
	 */
	private function extract_post_type( $data ) {

		if ( ! empty( $data['query'] ) && ! empty( $data['query']['post_type'] ) ) {
			return $data['query']['post_type'];
		}

		return $data['object_type'];
	}

	/**
	 * @deprecated 2.6.0 use new `autocomplete` format
	 *
	 * @param $data
	 *
	 * @return array
	 * @throws \Exception
	 */
	public function ajax_posts_filter_autocomplete_deprecated( $data ) {
		if ( empty( $data['filter_type'] ) || empty( $data['q'] ) ) {
			throw new \Exception( 'Bad Request' );
		}

		$results = [];

		switch ( $data['filter_type'] ) {
			case 'taxonomy':
				$query_params = [
					'taxonomy' => $this->extract_post_type( $data ),
					'search' => $data['q'],
					'hide_empty' => false,
				];

				$terms = get_terms( $query_params );
				if ( is_wp_error( $terms ) ) {
					break;
				}

				global $wp_taxonomies;

				foreach ( $terms as $term ) {
					$term_name = $this->get_term_name_with_parents( $term );
					if ( ! empty( $data['include_type'] ) ) {
						$text = $wp_taxonomies[ $term->taxonomy ]->labels->name . ': ' . $term_name;
					} else {
						$text = $term_name;
					}

					$results[] = [
						'id' => $term->term_taxonomy_id,
						'text' => $text,
					];
				}

				break;

			case 'by_id':
			case 'post':
				$query_params = [
					'post_type' => $this->extract_post_type( $data ),
					's' => $data['q'],
					'posts_per_page' => -1,
				];

				if ( 'attachment' === $query_params['post_type'] ) {
					$query_params['post_status'] = 'inherit';
				}

				$query = new \WP_Query( $query_params );

				foreach ( $query->posts as $post ) {
					$post_type_obj = get_post_type_object( $post->post_type );
					if ( ! empty( $data['include_type'] ) ) {
						$text = $post_type_obj->labels->name . ': ' . $post->post_title;
					} else {
						$text = ( $post_type_obj->hierarchical ) ? $this->get_post_name_with_parents( $post ) : $post->post_title;
					}

					$results[] = [
						'id' => $post->ID,
						'text' => esc_html( $text ),
					];
				}
				break;

			case 'author':
				$query_params = [
					'who' => 'authors',
					'has_published_posts' => true,
					'fields' => [
						'ID',
						'display_name',
					],
					'search' => '*' . $data['q'] . '*',
					'search_columns' => [
						'user_login',
						'user_nicename',
					],
				];

				$user_query = new \WP_User_Query( $query_params );

				foreach ( $user_query->get_results() as $author ) {
					$results[] = [
						'id' => $author->ID,
						'text' => $author->display_name,
					];
				}
				break;
			default:
				$results = apply_filters_deprecated( 'elementor_pro/query_control/get_autocomplete/' . $data['filter_type'], $data, '3.0.0', 'elementor/query/get_autocomplete/' . $data['filter_type'] );
				$results = apply_filters( 'elementor/query/get_autocomplete/' . $data['filter_type'], [], $data );
		}

		return [
			'results' => $results,
		];
	}

	/**
	 * @param array $data
	 *
	 * @return array
	 * @throws \Exception
	 */
	public function ajax_posts_filter_autocomplete( array $data ) {
		$query_data = $this->autocomplete_query_data( $data );
		if ( is_wp_error( $query_data ) ) {
			/** @var \WP_Error $query_data */
			throw new \Exception( $query_data->get_error_code() . ':' . $query_data->get_error_message() );
		}

		$results = [];
		$display = $query_data['display'];
		$query_args = $query_data['query'];
		$query_args['no_found_rows'] = true;

		switch ( $query_data['object'] ) {
			case self::QUERY_OBJECT_TAX:
				$by_field = ! empty( $query_data['by_field'] ) ? $query_data['by_field'] : 'term_taxonomy_id';
				$terms = get_terms( $query_args );
				if ( is_wp_error( $terms ) ) {
					break;
				}
				foreach ( $terms as $term ) {
					if ( apply_filters( "elementor/query/get_autocomplete/tax/{$display}", true, $term, $data ) ) {
						$results[] = [
							'id' => $term->{$by_field},
							'text' => $this->get_term_name( $term, $display, $data ),
						];
					}
				}
				break;
			case self::QUERY_OBJECT_ATTACHMENT:
			case self::QUERY_OBJECT_POST:
				$query = new \WP_Query( $query_args );

				foreach ( $query->posts as $post ) {
					if ( apply_filters( "elementor/query/get_autocomplete/custom/{$display}", true, $post, $data ) ) {
						$text = $this->format_post_for_display( $post, $display, $data );
						$results[] = [
							'id' => $post->ID,
							'text' => $text,
						];
					}
				}
				break;
			case self::QUERY_OBJECT_LIBRARY_TEMPLATE:
				$query = new \WP_Query( $query_args );

				foreach ( $query->posts as $post ) {
					$document = Plugin::elementor()->documents->get( $post->ID );
					if ( $document ) {
						$text = esc_html( $post->post_title ) . ' (' . $document->get_post_type_title() . ')';
						$results[] = [
							'id' => $post->ID,
							'text' => $text,
						];
					}
				}
				break;
			case self::QUERY_OBJECT_USER:
			case self::QUERY_OBJECT_AUTHOR:
				$user_query = new \WP_User_Query( $query_args );

				foreach ( $user_query->get_results() as $user ) {
					if ( apply_filters( "elementor/query/get_autocomplete/user/{$display}", true, $user, $data ) ) {
						$results[] = [
							'id' => $user->ID,
							'text' => $this->format_user_for_display( $user, $display, $data ),
						];
					}
				}
				break;
			default:
				$results = apply_filters( 'elementor/query/get_autocomplete/' . $query_data['filter_type'], $results, $data );
		}

		return [
			'results' => $results,
		];
	}

	/**
	 * @deprecated 2.6.0 use new `autocomplete` format
	 *
	 * @param $request
	 *
	 * @return array
	 */
	public function ajax_posts_control_value_titles_deprecated( $request ) {
		$ids = (array) $request['id'];

		$results = [];

		switch ( $request['filter_type'] ) {
			case 'taxonomy':
				$terms = get_terms(
					[
						'term_taxonomy_id' => $ids,
						'hide_empty' => false,
					]
				);
				if ( is_wp_error( $terms ) ) {
					break;
				}

				global $wp_taxonomies;
				foreach ( $terms as $term ) {
					$term_name = $this->get_term_name_with_parents( $term );
					if ( ! empty( $request['include_type'] ) ) {
						$text = $wp_taxonomies[ $term->taxonomy ]->labels->name . ': ' . $term_name;
					} else {
						$text = $term_name;
					}
					$results[ $term->{$by_field} ] = $text;
				}
				break;

			case 'by_id':
			case 'post':
				$query = new \WP_Query(
					[
						'post_type' => 'any',
						'post__in' => $ids,
						'posts_per_page' => -1,
					]
				);

				foreach ( $query->posts as $post ) {
					$results[ $post->ID ] = esc_html( $post->post_title );
				}
				break;

			case 'author':
				$query_params = [
					'who' => 'authors',
					'has_published_posts' => true,
					'fields' => [
						'ID',
						'display_name',
					],
					'include' => $ids,
				];

				$user_query = new \WP_User_Query( $query_params );

				foreach ( $user_query->get_results() as $author ) {
					$results[ $author->ID ] = $author->display_name;
				}
				break;
			default:
				$results = apply_filters_deprecated( 'elementor_pro/query_control/get_value_titles/' . $request['filter_type'], $request, '3.0.0', 'elementor/query/get_value_titles/' . $request['filter_type'] );
				$results = apply_filters( 'elementor/query/get_value_titles/' . $request['filter_type'], [], $request );
		}

		return $results;
	}

	public function ajax_posts_control_value_titles( $request ) {
		$query_data = $this->get_titles_query_data( $request );
		if ( is_wp_error( $query_data ) ) {
			return [];
		}
		$display = $query_data['display'];
		$query_args = $query_data['query'];
		$query_args['no_found_rows'] = true;

		$results = [];
		switch ( $query_data['object'] ) {
			case self::QUERY_OBJECT_TAX:
				$by_field = ! empty( $query_data['by_field'] ) ? $query_data['by_field'] : 'term_taxonomy_id';
				$terms = get_terms( $query_args );

				if ( is_wp_error( $terms ) ) {
					break;
				}
				foreach ( $terms as $term ) {
					if ( apply_filters( "elementor/query/get_value_titles/tax/{$display}", true, $term, $request ) ) {
						$results[ $term->{$by_field} ] = $this->get_term_name( $term, $display, $request, 'get_value_titles' );
					}
				}
				break;

			case self::QUERY_OBJECT_ATTACHMENT:
			case self::QUERY_OBJECT_POST:
				$query = new \WP_Query( $query_args );

				foreach ( $query->posts as $post ) {
					if ( apply_filters( "elementor/query/get_value_titles/custom/{$display}", true, $post, $request ) ) {
						$results[ $post->ID ] = $this->format_post_for_display( $post, $display, $request, 'get_value_titles' );
					}
				}
				break;
			case self::QUERY_OBJECT_LIBRARY_TEMPLATE:
				$query = new \WP_Query( $query_args );

				foreach ( $query->posts as $post ) {
					$document = Plugin::elementor()->documents->get( $post->ID );
					if ( $document ) {
						$results[ $post->ID ] = esc_html( $post->post_title ) . ' (' . $document->get_post_type_title() . ')';
					}
				}
				break;
			case self::QUERY_OBJECT_AUTHOR:
			case self::QUERY_OBJECT_USER:
				$user_query = new \WP_User_Query( $query_args );

				foreach ( $user_query->get_results() as $user ) {
					if ( apply_filters( "elementor/query/get_value_titles/user/{$display}", true, $user, $request ) ) {
						$results[ $user->ID ] = $this->format_user_for_display( $user, $display, $request, 'get_value_titles' );
					}
				}
				break;
			default:
				$results = apply_filters( "elementor/query/get_value_titles/{$query_data['filter_type']}", $results, $request );
		}

		return $results;
	}

	private function get_term_name( $term, $display, $request, $filter_name = 'get_autocomplete' ) {
		global $wp_taxonomies;
		$term_name = $this->get_term_name_with_parents( $term );
		switch ( $display ) {
			case 'detailed':
				$text = $wp_taxonomies[ $term->taxonomy ]->labels->name . ': ' . $term_name;
				break;
			case 'minimal':
				$text = $term_name;
				break;
			default:
				$text = apply_filters( "elementor/query/{$filter_name}/display/{$display}", $term_name, $request );
				break;
		}
		return $text;
	}

	/**
	 * @param \WP_Post $post
	 * @param string $display
	 * @param array $data
	 * @param string $filter_name
	 *
	 * @return mixed|string|void
	 */
	private function format_post_for_display( $post, $display, $data, $filter_name = 'get_autocomplete' ) {
		$post_type_obj = get_post_type_object( $post->post_type );
		switch ( $display ) {
			case 'minimal':
				$text = ( $post_type_obj->hierarchical ) ? $this->get_post_name_with_parents( $post ) : $post->post_title;
				break;
			case 'detailed':
				$text = $post_type_obj->labels->name . ': ' . ( $post_type_obj->hierarchical ) ? $this->get_post_name_with_parents( $post ) : $post->post_title;
				break;
			default:
				$text = apply_filters( "elementor/query/{$filter_name}/display/{$display}", $post->post_title, $post->ID, $data );
				break;
		}

		return esc_html( $text );
	}

	/**
	 * @param \WP_User $user
	 * @param string $display
	 * @param array $data
	 * @param string $filter_name
	 *
	 * @return string
	 */
	private function format_user_for_display( $user, $display, $data, $filter_name = 'get_autocomplete' ) {
		switch ( $display ) {
			case 'minimal':
				$text = $user->display_name;
				break;
			case 'detailed':
				$text = sprintf( '%s (%s)', $user->display_name, $user->user_email );
				break;
			default:
				$text = apply_filters( "elementor/query/{$filter_name}/display/{$display}", $user, $data );
				break;
		}

		return $text;
	}

	private function query_data_compatibility( $data ) {
		if ( isset( $data['query']['filter_type'] ) ) {
			$data['filter_type'] = $data['query']['filter_type'];
		}
		if ( isset( $data['query']['object_type'] ) ) {
			$data['object_type'] = $data['query']['object_type'];
		}
		if ( isset( $data['query']['include_type'] ) ) {
			$data['include_type'] = $data['query']['include_type'];
		}
		if ( isset( $data['query']['post_type'] ) ) {
			$data['post_type'] = $data['query']['post_type'];
		}
		return $data;
	}

	public function register_controls() {
		$controls_manager = Plugin::elementor()->controls_manager;

		$controls_manager->add_group_control( Group_Control_Posts::get_type(), new Group_Control_Posts() );

		$controls_manager->add_group_control( Group_Control_Query::get_type(), new Group_Control_Query() );

		$controls_manager->add_group_control( Group_Control_Related::get_type(), new Group_Control_Related() );

		$controls_manager->register_control( self::QUERY_CONTROL_ID, new Query() );
	}

	/**
	 * get_term_name_with_parents
	 * @param \WP_Term $term
	 * @param int $max
	 *
	 * @return string
	 */
	private function get_term_name_with_parents( \WP_Term $term, $max = 3 ) {
		if ( 0 === $term->parent ) {
			return $term->name;
		}
		$separator = is_rtl() ? ' < ' : ' > ';
		$test_term = $term;
		$names = [];
		while ( $test_term->parent > 0 ) {
			$test_term = get_term( $test_term->parent );
			if ( ! $test_term ) {
				break;
			}
			$names[] = $test_term->name;
		}

		$names = array_reverse( $names );
		if ( count( $names ) < ( $max ) ) {
			return implode( $separator, $names ) . $separator . $term->name;
		}

		$name_string = '';
		for ( $i = 0; $i < ( $max - 1 ); $i++ ) {
			$name_string .= $names[ $i ] . $separator;
		}
		return $name_string . '...' . $separator . $term->name;
	}

	/**
	 * get post name with parents
	 * @param \WP_Post $post
	 * @param int $max
	 *
	 * @return string
	 */
	private function get_post_name_with_parents( $post, $max = 3 ) {
		if ( 0 === $post->post_parent ) {
			return $post->post_title;
		}
		$separator = is_rtl() ? ' < ' : ' > ';
		$test_post = $post;
		$names = [];
		while ( $test_post->post_parent > 0 ) {
			$test_post = get_post( $test_post->post_parent );
			if ( ! $test_post ) {
				break;
			}
			$names[] = $test_post->post_title;
		}

		$names = array_reverse( $names );
		if ( count( $names ) < ( $max ) ) {
			return implode( $separator, $names ) . $separator . $post->post_title;
		}

		$name_string = '';
		for ( $i = 0; $i < ( $max - 1 ); $i++ ) {
			$name_string .= $names[ $i ] . $separator;
		}
		return $name_string . '...' . $separator . $post->post_title;
	}

	/**
	 * @deprecated use Elementor_Post_Query capabilities
	 *
	 * @param string $control_id
	 * @param array $settings
	 *
	 * @return array
	 */
	public function get_query_args( $control_id, $settings ) {
		Plugin::elementor()->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function( __METHOD__, '2.5.0', 'class Elementor_Post_Query' );

		$controls_manager = Plugin::elementor()->controls_manager;

		/** @var Group_Control_Posts $posts_query */
		$posts_query = $controls_manager->get_control_groups( Group_Control_Posts::get_type() );

		return $posts_query->get_query_args( $control_id, $settings );
	}

	/**
	 * @param \ElementorPro\Base\Base_Widget $widget
	 * @param string $name
	 * @param array $query_args
	 * @param array $fallback_args
	 *
	 * @return \WP_Query
	 */
	public function get_query( $widget, $name, $query_args = [], $fallback_args = [] ) {
		$prefix = $name . '_';
		$post_type = $widget->get_settings( $prefix . 'post_type' );
		if ( 'related' === $post_type ) {
			$elementor_query = new Elementor_Related_Query( $widget, $name, $query_args, $fallback_args );
		} else {
			$elementor_query = new Elementor_Post_Query( $widget, $name, $query_args );
		}
		return $elementor_query->get_query();
	}

	/**
	 * @deprecated 2.5.0
	 * @param \WP_Query &$query
	 */
	public function fix_query_offset( &$query ) {
		if ( ! empty( $query->query_vars['offset_to_fix'] ) ) {
			if ( $query->is_paged ) {
				$query->query_vars['offset'] = $query->query_vars['offset_to_fix'] + ( ( $query->query_vars['paged'] - 1 ) * $query->query_vars['posts_per_page'] );
			} else {
				$query->query_vars['offset'] = $query->query_vars['offset_to_fix'];
			}
		}
	}

	/**
	 * @deprecated 2.5.0
	 *
	 * @param int       $found_posts
	 * @param \WP_Query $query
	 *
	 * @return mixed
	 */
	public static function fix_query_found_posts( $found_posts, $query ) {
		$offset_to_fix = $query->get( 'offset_to_fix' );

		if ( $offset_to_fix ) {
			$found_posts -= $offset_to_fix;
		}

		return $found_posts;
	}

	/**
	 * @param Ajax $ajax_manager
	 */
	public function register_ajax_actions( $ajax_manager ) {
		$ajax_manager->register_ajax_action( 'query_control_value_titles', [ $this, 'ajax_posts_control_value_titles' ] );
		$ajax_manager->register_ajax_action( 'pro_panel_posts_control_filter_autocomplete', [ $this, 'ajax_posts_filter_autocomplete' ] );
		/**
		 * @deprecated 2.6.0 use new `autocomplete` format
		 */
		$ajax_manager->register_ajax_action( 'query_control_value_titles_deprecated', [ $this, 'ajax_posts_control_value_titles_deprecated' ] );
		$ajax_manager->register_ajax_action( 'pro_panel_posts_control_filter_autocomplete_deprecated', [ $this, 'ajax_posts_filter_autocomplete_deprecated' ] );
	}

	public function localize_settings( $settings ) {
		$settings = array_replace_recursive( $settings, [
			'i18n' => [
				'all' => esc_html__( 'All', 'elementor-pro' ),
			],
		] );

		return $settings;
	}

	protected function add_actions() {
		add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] );
		add_action( 'elementor/controls/controls_registered', [ $this, 'register_controls' ] );

		add_filter( 'elementor_pro/editor/localize_settings', [ $this, 'localize_settings' ] );

		/**
		 * @see https://codex.wordpress.org/Making_Custom_Queries_using_Offset_and_Pagination
		 */
		add_action( 'pre_get_posts', [ $this, 'fix_query_offset' ], 1 );
		add_filter( 'found_posts', [ $this, 'fix_query_found_posts' ], 1, 2 );
	}
}
modules/code-highlight/widgets/code-highlight.php000064400000016015150755004310016134 0ustar00<?php
namespace ElementorPro\Modules\CodeHighlight\Widgets;

use Elementor\Modules\DynamicTags\Module as TagsModule;
use Elementor\Controls_Manager;
use ElementorPro\Plugin;
use ElementorPro\Base\Base_Widget;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Code_Highlight extends Base_Widget {

	public function get_name() {
		return 'code-highlight';
	}

	public function get_title() {
		return esc_html__( 'Code Highlight', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-code-highlight';
	}

	public function get_keywords() {
		return [ 'code', 'highlight', 'syntax', 'highlighter', 'javascript', 'css', 'php', 'html', 'java', 'js' ];
	}

	public function get_style_depends() {
		return [ 'prismjs_style' ];
	}

	public function get_script_depends() {
		$depends = [
			'prismjs_core' => true,
			'prismjs_loader' => true,
			'prismjs_normalize' => true,
			'highlight_handler' => true,
			'prismjs_line_numbers' => true,
			'prismjs_line_highlight' => true,
			'prismjs_copy_to_clipboard' => true,
		];

		if ( ! Plugin::elementor()->preview->is_preview_mode() ) {
			$settings = $this->get_settings_for_display();

			if ( ! $settings['line_numbers'] ) {
				unset( $depends['prismjs_line_numbers'] );
			}

			if ( ! $settings['highlight_lines'] ) {
				unset( $depends['prismjs_line_highlight'] );
			}

			if ( ! $settings['copy_to_clipboard'] ) {
				unset( $depends['prismjs_copy_to_clipboard'] );
			}
		}

		return array_keys( $depends );
	}

	public function get_css_config() {
		// This widget is loading its own CSS using get_style_depends.
		return [
			'key' => $this->get_group_name(),
			'version' => ELEMENTOR_PRO_VERSION,
			'file_path' => '',
			'data' => [],
		];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_content',
			[
				'label' => esc_html__( 'Code Highlight', 'elementor-pro' ),
			]
		);

		$language_option = [
			'markup' => 'Markup',
			'html' => 'HTML',
			'css' => 'CSS',
			'sass' => 'Sass (Sass)',
			'scss' => 'Sass (Scss)',
			'less' => 'Less',
			'javascript' => 'JavaScript',
			'typescript' => 'TypeScript',
			'jsx' => 'React JSX',
			'tsx' => 'React TSX',
			'php' => 'PHP',
			'ruby' => 'Ruby',
			'json' => 'JSON + Web App Manifest',
			'http' => 'HTTP',
			'xml' => 'XML',
			'svg' => 'SVG',
			'rust' => 'Rust',
			'csharp' => 'C#',
			'dart' => 'Dart',
			'git' => 'Git',
			'java' => 'Java',
			'sql' => 'SQL',
			'go' => 'Go',
			'kotlin' => 'Kotlin + Kotlin Script',
			'julia' => 'Julia',
			'python' => 'Python',
			'swift' => 'Swift',
			'bash' => 'Bash + Shell',
			'scala' => 'Scala',
			'haskell' => 'Haskell',
			'perl' => 'Perl',
			'objectivec' => 'Objective-C',
			'visual-basic,' => 'Visual Basic + VBA',
			'r' => 'R',
			'c' => 'C',
			'cpp' => 'C++',
			'aspnet' => 'ASP.NET (C#)',
		];

		$this->add_control(
			'language',
			[
				'label' => esc_html__( 'Language', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'multiple' => false,
				'options' => apply_filters( 'elementor_pro/code_highlight/languages', $language_option ),
				'default' => 'javascript',
			]
		);

		$this->add_control(
			'code',
			[
				'label' => esc_html__( 'Code', 'elementor-pro' ),
				'type' => Controls_Manager::CODE,
				'default' => 'console.log( \'Code is Poetry\' );',
				'dynamic' => [
					'active' => true,
					'categories' => [
						TagsModule::TEXT_CATEGORY,
					],
				],
			]
		);

		$this->add_control(
			'line_numbers',
			[
				'label' => esc_html__( 'Line Numbers', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'return_value' => 'line-numbers',
				'default' => 'line-numbers',
			]
		);

		$this->add_control(
			'copy_to_clipboard',
			[
				'label' => esc_html__( 'Copy to Clipboard', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'return_value' => 'copy-to-clipboard',
				'default' => 'copy-to-clipboard',
			]
		);

		$this->add_control(
			'highlight_lines',
			[
				'label' => esc_html__( 'Highlight Lines', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => '',
				'placeholder' => '1, 3-6',
			]
		);

		$this->add_control(
			'word_wrap',
			[
				'label' => esc_html__( 'Word Wrap', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'return_value' => 'word-wrap',
				'default' => '',
			]
		);

		$this->add_control(
			'theme',
			[
				'label' => esc_html__( 'Theme', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'default',
				'options' => [
					'default'  => 'Solid',
					'dark' => 'Dark',
					'okaidia' => 'Okaidia',
					'solarizedlight' => 'Solarizedlight',
					'tomorrow' => 'Tomorrow',
					'twilight' => 'Twilight',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'height',
			[
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'vh', 'em' ],
				'range' => [
					'px' => [
						'min' => 115,
						'max' => 1000,
					],
					'em' => [
						'min' => 6,
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .highlight-height' => 'height: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'font_size',
			[
				'label' => esc_html__( 'Font Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em', 'rem', 'vw' ],
				'range' => [
					'px' => [
						'min' => 1,
						'max' => 200,
					],
					'vw' => [
						'min' => 0.1,
						'max' => 10,
						'step' => 0.1,
					],
				],
				'responsive' => true,
				'selectors' => [
					'{{WRAPPER}} pre, {{WRAPPER}} code, {{WRAPPER}} .line-numbers .line-numbers-rows' => 'font-size: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		$settings = $this->get_settings_for_display();
		?>
		<div class="<?php echo 'prismjs-' . esc_attr( $settings['theme'] ); ?> <?php echo esc_attr( $settings['copy_to_clipboard'] ); ?> <?php echo esc_attr( $settings['word_wrap'] ); ?>">
			<pre data-line="<?php echo esc_attr( $settings['highlight_lines'] ); ?>" class="highlight-height language-<?php echo esc_attr( $settings['language'] ); ?> <?php echo esc_attr( $settings['line_numbers'] ); ?>">
				<code readonly="true" class="language-<?php echo esc_attr( $settings['language'] ); ?>">
					<xmp><?php $this->print_unescaped_setting( 'code' ); ?></xmp>
				</code>
			</pre>
		</div>
		<?php
	}

	protected function content_template() {
		?>
		<div class="prismjs-{{{ settings.theme }}} {{{settings.copy_to_clipboard}}} {{{settings.word_wrap}}}">
			<pre data-line="{{{settings.highlight_lines }}}" class="highlight-height language-{{{ settings.language }}} {{{ settings.line_numbers }}}">
				<code readonly="true" class="language-{{{ settings.language }}}">
					<xmp>{{{ settings.code }}}</xmp>
				</code>
			</pre>
		</div>
		<?php
	}
}
modules/code-highlight/module.php000064400000003336150755004310013076 0ustar00<?php
namespace ElementorPro\Modules\CodeHighlight;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function get_name() {
		return 'code-highlight';
	}

	public function get_widgets() {
		return [
			'Code_Highlight',
		];
	}

	public function register_frontend_scripts() {
		$base_url = 'https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0';
		wp_register_script( 'prismjs_core', $base_url . '/components/prism-core.min.js', [], '1.23.0', true );
		wp_register_script( 'prismjs_loader', $base_url . '/plugins/autoloader/prism-autoloader.min.js', [ 'prismjs_core' ], '1.23.0', true );
		wp_register_script( 'prismjs_normalize', $base_url . '/plugins/normalize-whitespace/prism-normalize-whitespace.min.js', [ 'prismjs_core' ], '1.23.0', true );
		wp_register_script( 'prismjs_line_numbers', $base_url . '/plugins/line-numbers/prism-line-numbers.min.js', [ 'prismjs_normalize' ], '1.23.0', true );
		wp_register_script( 'prismjs_line_highlight', $base_url . '/plugins/line-highlight/prism-line-highlight.min.js', [ 'prismjs_normalize' ], '1.23.0', true );
		wp_register_script( 'prismjs_toolbar', $base_url . '/plugins/toolbar/prism-toolbar.min.js', [ 'prismjs_normalize' ], '1.23.0', true );
		wp_register_script( 'prismjs_copy_to_clipboard', $base_url . '/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js', [ 'prismjs_toolbar' ], '1.23.0', true );

		wp_register_style( 'prismjs_style', ELEMENTOR_PRO_URL . 'assets/css/modules/code-highlight.min.css', [], '1.23.0', false );
	}

	public function __construct() {
		parent::__construct();

		add_action( 'elementor/frontend/before_register_scripts', [ $this, 'register_frontend_scripts' ] );
	}
}
modules/custom-css/module.php000064400000010363150755004310012315 0ustar00<?php
namespace ElementorPro\Modules\CustomCss;

use Elementor\Controls_Manager;
use Elementor\Controls_Stack;
use Elementor\Core\DynamicTags\Dynamic_CSS;
use Elementor\Core\Files\CSS\Post;
use Elementor\Element_Base;
use ElementorPro\Base\Module_Base;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function __construct() {
		parent::__construct();

		$this->add_actions();
	}

	public function get_name() {
		return 'custom-css';
	}

	/**
	 * @param $element    Controls_Stack
	 * @param $section_id string
	 */
	public function register_controls( Controls_Stack $element, $section_id ) {
		// Remove Custom CSS Banner (From free version)
		if ( 'section_custom_css_pro' !== $section_id ) {
			return;
		}

		$this->replace_go_pro_custom_css_controls( $element );
	}

	/**
	 * @param $post_css Post
	 * @param $element  Element_Base
	 */
	public function add_post_css( $post_css, $element ) {
		if ( $post_css instanceof Dynamic_CSS ) {
			return;
		}

		$element_settings = $element->get_settings();

		if ( empty( $element_settings['custom_css'] ) ) {
			return;
		}

		$css = trim( $element_settings['custom_css'] );

		if ( empty( $css ) ) {
			return;
		}
		$css = str_replace( 'selector', $post_css->get_element_unique_selector( $element ), $css );

		// Add a css comment
		$css = sprintf( '/* Start custom CSS for %s, class: %s */', $element->get_name(), $element->get_unique_selector() ) . $css . '/* End custom CSS */';

		$post_css->get_stylesheet()->add_raw_css( $css );
	}

	/**
	 * @param $post_css Post
	 */
	public function add_page_settings_css( $post_css ) {
		$document = Plugin::elementor()->documents->get( $post_css->get_post_id() );
		$custom_css = $document->get_settings( 'custom_css' );

		$custom_css = trim( $custom_css );

		if ( empty( $custom_css ) ) {
			return;
		}

		$custom_css = str_replace( 'selector', $document->get_css_wrapper_selector(), $custom_css );

		// Add a css comment
		$custom_css = '/* Start custom CSS */' . $custom_css . '/* End custom CSS */';

		$post_css->get_stylesheet()->add_raw_css( $custom_css );
	}

	/**
	 * @param Controls_Stack $controls_stack
	 */
	public function replace_go_pro_custom_css_controls( $controls_stack ) {
		$old_section = Plugin::elementor()->controls_manager->get_control_from_stack( $controls_stack->get_unique_name(), 'section_custom_css_pro' );

		Plugin::elementor()->controls_manager->remove_control_from_stack( $controls_stack->get_unique_name(), [ 'section_custom_css_pro', 'custom_css_pro' ] );

		$controls_stack->start_controls_section(
			'section_custom_css',
			[
				'label' => esc_html__( 'Custom CSS', 'elementor-pro' ),
				'tab' => $old_section['tab'],
			]
		);

		$controls_stack->add_control(
			'custom_css_title',
			[
				'raw' => esc_html__( 'Add your own custom CSS here', 'elementor-pro' ),
				'type' => Controls_Manager::RAW_HTML,
			]
		);

		$controls_stack->add_control(
			'custom_css',
			[
				'type' => Controls_Manager::CODE,
				'label' => esc_html__( 'Custom CSS', 'elementor-pro' ),
				'language' => 'css',
				'render_type' => 'ui',
				'show_label' => false,
				'separator' => 'none',
			]
		);

		$controls_stack->add_control(
			'custom_css_description',
			[
				'raw' => sprintf(
				/* translators: 1: Break line tag. */
					esc_html__( 'Use "selector" to target wrapper element. Examples:%1$sselector {color: red;} // For main element%1$sselector .child-element {margin: 10px;} // For child element%1$s.my-class {text-align: center;} // Or use any custom selector', 'elementor-pro' ),
					'<br>'
				),
				'type' => Controls_Manager::RAW_HTML,
				'content_classes' => 'elementor-descriptor',
			]
		);

		$controls_stack->end_controls_section();
	}

	public function localize_settings( array $settings ) {
		$settings['i18n']['custom_css'] = esc_html__( 'Custom CSS', 'elementor-pro' );

		return $settings;
	}

	protected function add_actions() {
		add_action( 'elementor/element/after_section_end', [ $this, 'register_controls' ], 10, 2 );
		add_action( 'elementor/element/parse_css', [ $this, 'add_post_css' ], 10, 2 );
		add_action( 'elementor/css-file/post/parse', [ $this, 'add_page_settings_css' ] );

		add_filter( 'elementor_pro/editor/localize_settings', [ $this, 'localize_settings' ] );
	}
}
modules/sticky/module.php000064400000011676150755004310011533 0ustar00<?php
namespace ElementorPro\Modules\Sticky;

use Elementor\Controls_Manager;
use Elementor\Element_Base;
use Elementor\Element_Section;
use Elementor\Widget_Base;
use ElementorPro\Base\Module_Base;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function __construct() {
		parent::__construct();

		$this->add_actions();
	}

	public function get_name() {
		return 'sticky';
	}

	/**
	 * Check if `$element` is an instance of a class in the `$types` array.
	 *
	 * @param $element
	 * @param $types
	 *
	 * @return bool
	 */
	private function is_instance_of( $element, array $types ) {
		foreach ( $types as $type ) {
			if ( $element instanceof $type ) {
				return true;
			}
		}

		return false;
	}

	public function register_controls( Element_Base $element ) {
		$element->add_control(
			'sticky',
			[
				'label' => esc_html__( 'Sticky', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'top' => esc_html__( 'Top', 'elementor-pro' ),
					'bottom' => esc_html__( 'Bottom', 'elementor-pro' ),
				],
				'separator' => 'before',
				'render_type' => 'none',
				'frontend_available' => true,
				'assets' => $this->get_asset_conditions_data(),
			]
		);

		// TODO: In Pro 3.5.0, get the active devices using Breakpoints/Manager::get_active_devices_list().
		$active_breakpoint_instances = Plugin::elementor()->breakpoints->get_active_breakpoints();
		// Devices need to be ordered from largest to smallest.
		$active_devices = array_reverse( array_keys( $active_breakpoint_instances ) );

		// Add desktop in the correct position.
		if ( in_array( 'widescreen', $active_devices, true ) ) {
			$active_devices = array_merge( array_slice( $active_devices, 0, 1 ), [ 'desktop' ], array_slice( $active_devices, 1 ) );
		} else {
			$active_devices = array_merge( [ 'desktop' ], $active_devices );
		}

		$sticky_device_options = [];

		foreach ( $active_devices as $device ) {
			$label = 'desktop' === $device ? esc_html__( 'Desktop', 'elementor-pro' ) : $active_breakpoint_instances[ $device ]->get_label();
			$sticky_device_options[ $device ] = $label;
		}

		$element->add_control(
			'sticky_on',
			[
				'label' => esc_html__( 'Sticky On', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'multiple' => true,
				'label_block' => true,
				'default' => $active_devices,
				'options' => $sticky_device_options,
				'condition' => [
					'sticky!' => '',
				],
				'render_type' => 'none',
				'frontend_available' => true,
			]
		);

		$element->add_responsive_control(
			'sticky_offset',
			[
				'label' => esc_html__( 'Offset', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 0,
				'min' => 0,
				'max' => 500,
				'required' => true,
				'condition' => [
					'sticky!' => '',
				],
				'render_type' => 'none',
				'frontend_available' => true,
			]
		);

		$element->add_responsive_control(
			'sticky_effects_offset',
			[
				'label' => esc_html__( 'Effects Offset', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 0,
				'min' => 0,
				'max' => 1000,
				'required' => true,
				'condition' => [
					'sticky!' => '',
				],
				'render_type' => 'none',
				'frontend_available' => true,
			]
		);

		// Add `Stay In Column` only to the following types:
		$types = [
			Element_Section::class,
			Widget_Base::class,
		];

		if ( $this->is_instance_of( $element, $types ) ) {
			$conditions = [
				'sticky!' => '',
			];

			// Target only inner sections.
			// Checking for `$element->get_data( 'isInner' )` in both editor & frontend causes it to work properly on the frontend but
			// break on the editor, because the inner section is created in JS and not rendered in PHP.
			// So this is a hack to force the editor to show the `sticky_parent` control, and still make it work properly on the frontend.
			if ( $element instanceof Element_Section && Plugin::elementor()->editor->is_edit_mode() ) {
				$conditions['isInner'] = true;
			}

			$element->add_control(
				'sticky_parent',
				[
					'label' => esc_html__( 'Stay In Column', 'elementor-pro' ),
					'type' => Controls_Manager::SWITCHER,
					'condition' => $conditions,
					'render_type' => 'none',
					'frontend_available' => true,
				]
			);
		}

		$element->add_control(
			'sticky_divider',
			[
				'type' => Controls_Manager::DIVIDER,
			]
		);
	}

	private function get_asset_conditions_data() {
		return [
			'scripts' => [
				[
					'name' => 'e-sticky',
					'conditions' => [
						'terms' => [
							[
								'name' => 'sticky',
								'operator' => '!==',
								'value' => '',
							],
						],
					],
				],
			],
		];
	}

	private function add_actions() {
		add_action( 'elementor/element/section/section_effects/after_section_start', [ $this, 'register_controls' ] );
		add_action( 'elementor/element/common/section_effects/after_section_start', [ $this, 'register_controls' ] );
	}
}
modules/slides/module.php000064400000000465150755004310011502 0ustar00<?php
namespace ElementorPro\Modules\Slides;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function get_name() {
		return 'slides';
	}

	public function get_widgets() {
		return [
			'Slides',
		];
	}
}
modules/slides/widgets/slides.php000064400000106013150755004310013142 0ustar00<?php
namespace ElementorPro\Modules\Slides\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Background;
use Elementor\Group_Control_Text_Shadow;
use Elementor\Group_Control_Typography;
use Elementor\Icons_Manager;
use Elementor\Repeater;
use Elementor\Utils;
use ElementorPro\Base\Base_Widget;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Slides extends Base_Widget {

	public function get_name() {
		return 'slides';
	}

	public function get_title() {
		return esc_html__( 'Slides', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-slides';
	}

	public function get_keywords() {
		return [ 'slides', 'carousel', 'image', 'title', 'slider' ];
	}

	public function get_script_depends() {
		return [ 'imagesloaded' ];
	}

	public static function get_button_sizes() {
		return [
			'xs' => esc_html__( 'Extra Small', 'elementor-pro' ),
			'sm' => esc_html__( 'Small', 'elementor-pro' ),
			'md' => esc_html__( 'Medium', 'elementor-pro' ),
			'lg' => esc_html__( 'Large', 'elementor-pro' ),
			'xl' => esc_html__( 'Extra Large', 'elementor-pro' ),
		];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_slides',
			[
				'label' => esc_html__( 'Slides', 'elementor-pro' ),
			]
		);

		$repeater = new Repeater();

		$repeater->start_controls_tabs( 'slides_repeater' );

		$repeater->start_controls_tab( 'background', [ 'label' => esc_html__( 'Background', 'elementor-pro' ) ] );

		$repeater->add_control(
			'background_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#bbbbbb',
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}} .swiper-slide-bg' => 'background-color: {{VALUE}}',
				],
			]
		);

		$repeater->add_control(
			'background_image',
			[
				'label' => _x( 'Image', 'Background Control', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}} .swiper-slide-bg' => 'background-image: url({{URL}})',
				],
			]
		);

		$repeater->add_control(
			'background_size',
			[
				'label' => _x( 'Size', 'Background Control', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'cover',
				'options' => [
					'cover' => _x( 'Cover', 'Background Control', 'elementor-pro' ),
					'contain' => _x( 'Contain', 'Background Control', 'elementor-pro' ),
					'auto' => _x( 'Auto', 'Background Control', 'elementor-pro' ),
				],
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}} .swiper-slide-bg' => 'background-size: {{VALUE}}',
				],
				'conditions' => [
					'terms' => [
						[
							'name' => 'background_image[url]',
							'operator' => '!=',
							'value' => '',
						],
					],
				],
			]
		);

		$repeater->add_control(
			'background_ken_burns',
			[
				'label' => esc_html__( 'Ken Burns Effect', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'conditions' => [
					'terms' => [
						[
							'name' => 'background_image[url]',
							'operator' => '!=',
							'value' => '',
						],
					],
				],
			]
		);

		$repeater->add_control(
			'zoom_direction',
			[
				'label' => esc_html__( 'Zoom Direction', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'in',
				'options' => [
					'in' => esc_html__( 'In', 'elementor-pro' ),
					'out' => esc_html__( 'Out', 'elementor-pro' ),
				],
				'conditions' => [
					'terms' => [
						[
							'name' => 'background_ken_burns',
							'operator' => '!=',
							'value' => '',
						],
					],
				],
			]
		);

		$repeater->add_control(
			'background_overlay',
			[
				'label' => esc_html__( 'Background Overlay', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'conditions' => [
					'terms' => [
						[
							'name' => 'background_image[url]',
							'operator' => '!=',
							'value' => '',
						],
					],
				],
			]
		);

		$repeater->add_control(
			'background_overlay_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => 'rgba(0,0,0,0.5)',
				'conditions' => [
					'terms' => [
						[
							'name' => 'background_overlay',
							'value' => 'yes',
						],
					],
				],
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}} .elementor-background-overlay' => 'background-color: {{VALUE}}',
				],
			]
		);

		$repeater->add_control(
			'background_overlay_blend_mode',
			[
				'label' => esc_html__( 'Blend Mode', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'Normal', 'elementor-pro' ),
					'multiply' => 'Multiply',
					'screen' => 'Screen',
					'overlay' => 'Overlay',
					'darken' => 'Darken',
					'lighten' => 'Lighten',
					'color-dodge' => 'Color Dodge',
					'color-burn' => 'Color Burn',
					'hue' => 'Hue',
					'saturation' => 'Saturation',
					'color' => 'Color',
					'exclusion' => 'Exclusion',
					'luminosity' => 'Luminosity',
				],
				'conditions' => [
					'terms' => [
						[
							'name' => 'background_overlay',
							'value' => 'yes',
						],
					],
				],
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}} .elementor-background-overlay' => 'mix-blend-mode: {{VALUE}}',
				],
			]
		);

		$repeater->end_controls_tab();

		$repeater->start_controls_tab( 'content', [ 'label' => esc_html__( 'Content', 'elementor-pro' ) ] );

		$repeater->add_control(
			'heading',
			[
				'label' => esc_html__( 'Title & Description', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Slide Heading', 'elementor-pro' ),
				'label_block' => true,
			]
		);

		$repeater->add_control(
			'description',
			[
				'label' => esc_html__( 'Description', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'default' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor-pro' ),
				'show_label' => false,
			]
		);

		$repeater->add_control(
			'button_text',
			[
				'label' => esc_html__( 'Button Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Click Here', 'elementor-pro' ),
			]
		);

		$repeater->add_control(
			'link',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
			]
		);

		$repeater->add_control(
			'link_click',
			[
				'label' => esc_html__( 'Apply Link On', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'slide' => esc_html__( 'Whole Slide', 'elementor-pro' ),
					'button' => esc_html__( 'Button Only', 'elementor-pro' ),
				],
				'default' => 'slide',
				'conditions' => [
					'terms' => [
						[
							'name' => 'link[url]',
							'operator' => '!=',
							'value' => '',
						],
					],
				],
			]
		);

		$repeater->end_controls_tab();

		$repeater->start_controls_tab( 'style', [ 'label' => esc_html__( 'Style', 'elementor-pro' ) ] );

		$repeater->add_control(
			'custom_style',
			[
				'label' => esc_html__( 'Custom', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'description' => esc_html__( 'Set custom style that will only affect this specific slide.', 'elementor-pro' ),
			]
		);

		$repeater->add_control(
			'horizontal_position',
			[
				'label' => esc_html__( 'Horizontal Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-h-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}} .swiper-slide-contents' => '{{VALUE}}',
				],
				'selectors_dictionary' => [
					'left' => 'margin-right: auto',
					'center' => 'margin: 0 auto',
					'right' => 'margin-left: auto',
				],
				'conditions' => [
					'terms' => [
						[
							'name' => 'custom_style',
							'value' => 'yes',
						],
					],
				],
			]
		);

		$repeater->add_control(
			'vertical_position',
			[
				'label' => esc_html__( 'Vertical Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'top' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'middle' => [
						'title' => esc_html__( 'Middle', 'elementor-pro' ),
						'icon' => 'eicon-v-align-middle',
					],
					'bottom' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}} .swiper-slide-inner' => 'align-items: {{VALUE}}',
				],
				'selectors_dictionary' => [
					'top' => 'flex-start',
					'middle' => 'center',
					'bottom' => 'flex-end',
				],
				'conditions' => [
					'terms' => [
						[
							'name' => 'custom_style',
							'value' => 'yes',
						],
					],
				],
			]
		);

		$repeater->add_control(
			'text_align',
			[
				'label' => esc_html__( 'Text Align', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}} .swiper-slide-inner' => 'text-align: {{VALUE}}',
				],
				'conditions' => [
					'terms' => [
						[
							'name' => 'custom_style',
							'value' => 'yes',
						],
					],
				],
			]
		);

		$repeater->add_control(
			'content_color',
			[
				'label' => esc_html__( 'Content Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}} .swiper-slide-inner .elementor-slide-heading' => 'color: {{VALUE}}',
					'{{WRAPPER}} {{CURRENT_ITEM}} .swiper-slide-inner .elementor-slide-description' => 'color: {{VALUE}}',
					'{{WRAPPER}} {{CURRENT_ITEM}} .swiper-slide-inner .elementor-slide-button' => 'color: {{VALUE}}; border-color: {{VALUE}}',
				],
				'conditions' => [
					'terms' => [
						[
							'name' => 'custom_style',
							'value' => 'yes',
						],
					],
				],
			]
		);

		$repeater->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'repeater_text_shadow',
				'selector' => '{{WRAPPER}} {{CURRENT_ITEM}} .swiper-slide-contents',
				'conditions' => [
					'terms' => [
						[
							'name' => 'custom_style',
							'value' => 'yes',
						],
					],
				],
			]
		);

		$repeater->end_controls_tab();

		$repeater->end_controls_tabs();

		$this->add_control(
			'slides',
			[
				'label' => esc_html__( 'Slides', 'elementor-pro' ),
				'type' => Controls_Manager::REPEATER,
				'show_label' => true,
				'fields' => $repeater->get_controls(),
				'default' => [
					[
						'heading' => esc_html__( 'Slide 1 Heading', 'elementor-pro' ),
						'description' => esc_html__( 'Lorem ipsum dolor sit amet consectetur adipiscing elit dolor', 'elementor-pro' ),
						'button_text' => esc_html__( 'Click Here', 'elementor-pro' ),
						'background_color' => '#833ca3',
					],
					[
						'heading' => esc_html__( 'Slide 2 Heading', 'elementor-pro' ),
						'description' => esc_html__( 'Lorem ipsum dolor sit amet consectetur adipiscing elit dolor', 'elementor-pro' ),
						'button_text' => esc_html__( 'Click Here', 'elementor-pro' ),
						'background_color' => '#4054b2',
					],
					[
						'heading' => esc_html__( 'Slide 3 Heading', 'elementor-pro' ),
						'description' => esc_html__( 'Lorem ipsum dolor sit amet consectetur adipiscing elit dolor', 'elementor-pro' ),
						'button_text' => esc_html__( 'Click Here', 'elementor-pro' ),
						'background_color' => '#1abc9c',
					],
				],
				'title_field' => '{{{ heading }}}',
			]
		);

		$this->add_responsive_control(
			'slides_height',
			[
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 100,
						'max' => 1000,
					],
					'vh' => [
						'min' => 10,
						'max' => 100,
					],
				],
				'default' => [
					'size' => 400,
				],
				'size_units' => [ 'px', 'vh', 'em' ],
				'selectors' => [
					'{{WRAPPER}} .swiper-slide' => 'height: {{SIZE}}{{UNIT}};',
				],
				'separator' => 'before',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_slider_options',
			[
				'label' => esc_html__( 'Slider Options', 'elementor-pro' ),
				'type' => Controls_Manager::SECTION,
			]
		);

		$this->add_control(
			'navigation',
			[
				'label' => esc_html__( 'Navigation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'both',
				'options' => [
					'both' => esc_html__( 'Arrows and Dots', 'elementor-pro' ),
					'arrows' => esc_html__( 'Arrows', 'elementor-pro' ),
					'dots' => esc_html__( 'Dots', 'elementor-pro' ),
					'none' => esc_html__( 'None', 'elementor-pro' ),
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'autoplay',
			[
				'label' => esc_html__( 'Autoplay', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'pause_on_hover',
			[
				'label' => esc_html__( 'Pause on Hover', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'render_type' => 'none',
				'frontend_available' => true,
				'condition' => [
					'autoplay!' => '',
				],
			]
		);

		$this->add_control(
			'pause_on_interaction',
			[
				'label' => esc_html__( 'Pause on Interaction', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'render_type' => 'none',
				'frontend_available' => true,
				'condition' => [
					'autoplay!' => '',
				],
			]
		);

		$this->add_control(
			'autoplay_speed',
			[
				'label' => esc_html__( 'Autoplay Speed', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 5000,
				'condition' => [
					'autoplay' => 'yes',
				],
				'selectors' => [
					'{{WRAPPER}} .swiper-slide' => 'transition-duration: calc({{VALUE}}ms*1.2)',
				],
				'render_type' => 'none',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'infinite',
			[
				'label' => esc_html__( 'Infinite Loop', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'transition',
			[
				'label' => esc_html__( 'Transition', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'slide',
				'options' => [
					'slide' => esc_html__( 'Slide', 'elementor-pro' ),
					'fade' => esc_html__( 'Fade', 'elementor-pro' ),
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'transition_speed',
			[
				'label' => esc_html__( 'Transition Speed', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::NUMBER,
				'default' => 500,
				'render_type' => 'none',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'content_animation',
			[
				'label' => esc_html__( 'Content Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'fadeInUp',
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'fadeInDown' => esc_html__( 'Down', 'elementor-pro' ),
					'fadeInUp' => esc_html__( 'Up', 'elementor-pro' ),
					'fadeInRight' => esc_html__( 'Right', 'elementor-pro' ),
					'fadeInLeft' => esc_html__( 'Left', 'elementor-pro' ),
					'zoomIn' => esc_html__( 'Zoom', 'elementor-pro' ),
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_slides',
			[
				'label' => esc_html__( 'Slides', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'content_max_width',
			[
				'label' => esc_html__( 'Content Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 1000,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'size_units' => [ '%', 'px' ],
				'default' => [
					'size' => '66',
					'unit' => '%',
				],
				'tablet_default' => [
					'unit' => '%',
				],
				'mobile_default' => [
					'unit' => '%',
				],
				'selectors' => [
					'{{WRAPPER}} .swiper-slide-contents' => 'max-width: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'slides_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .swiper-slide-inner' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'slides_horizontal_position',
			[
				'label' => esc_html__( 'Horizontal Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'default' => 'center',
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-h-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'prefix_class' => 'elementor--h-position-',
			]
		);

		$this->add_control(
			'slides_vertical_position',
			[
				'label' => esc_html__( 'Vertical Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'default' => 'middle',
				'options' => [
					'top' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'middle' => [
						'title' => esc_html__( 'Middle', 'elementor-pro' ),
						'icon' => 'eicon-v-align-middle',
					],
					'bottom' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'prefix_class' => 'elementor--v-position-',
			]
		);

		$this->add_control(
			'slides_text_align',
			[
				'label' => esc_html__( 'Text Align', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'default' => 'center',
				'selectors' => [
					'{{WRAPPER}} .swiper-slide-inner' => 'text-align: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'text_shadow',
				'selector' => '{{WRAPPER}} .swiper-slide-contents',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'heading_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .swiper-slide-inner .elementor-slide-heading:not(:last-child)' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'heading_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-slide-heading' => 'color: {{VALUE}}',

				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'heading_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-slide-heading',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_description',
			[
				'label' => esc_html__( 'Description', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'description_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .swiper-slide-inner .elementor-slide-description:not(:last-child)' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'description_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-slide-description' => 'color: {{VALUE}}',

				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'description_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_SECONDARY,
				],
				'selector' => '{{WRAPPER}} .elementor-slide-description',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_button',
			[
				'label' => esc_html__( 'Button', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'button_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'sm',
				'options' => self::get_button_sizes(),
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'button_typography',
				'selector' => '{{WRAPPER}} .elementor-slide-button',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
			]
		);

		$this->add_control(
			'button_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 20,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-slide-button' => 'border-width: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-slide-button' => 'border-radius: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->start_controls_tabs( 'button_tabs' );

		$this->start_controls_tab( 'normal', [ 'label' => esc_html__( 'Normal', 'elementor-pro' ) ] );

		$this->add_control(
			'button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-slide-button' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'button_background',
				'types' => [ 'classic', 'gradient' ],
				'exclude' => [ 'image' ],
				'selector' => '{{WRAPPER}} .elementor-slide-button',
				'fields_options' => [
					'background' => [
						'default' => 'classic',
					],
				],
			]
		);

		$this->add_control(
			'button_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-slide-button' => 'border-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'hover', [ 'label' => esc_html__( 'Hover', 'elementor-pro' ) ] );

		$this->add_control(
			'button_hover_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-slide-button:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'button_hover_background',
				'types' => [ 'classic', 'gradient' ],
				'exclude' => [ 'image' ],
				'selector' => '{{WRAPPER}} .elementor-slide-button:hover',
				'fields_options' => [
					'background' => [
						'default' => 'classic',
					],
				],
			]
		);

		$this->add_control(
			'button_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-slide-button:hover' => 'border-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_navigation',
			[
				'label' => esc_html__( 'Navigation', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'navigation' => [ 'arrows', 'dots', 'both' ],
				],
			]
		);

		$this->add_control(
			'heading_style_arrows',
			[
				'label' => esc_html__( 'Arrows', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'navigation' => [ 'arrows', 'both' ],
				],
			]
		);

		$this->add_control(
			'arrows_position',
			[
				'label' => esc_html__( 'Arrows Position', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'inside',
				'options' => [
					'inside' => esc_html__( 'Inside', 'elementor-pro' ),
					'outside' => esc_html__( 'Outside', 'elementor-pro' ),
				],
				'prefix_class' => 'elementor-arrows-position-',
				'condition' => [
					'navigation' => [ 'arrows', 'both' ],
				],
			]
		);

		$this->add_control(
			'arrows_size',
			[
				'label' => esc_html__( 'Arrows Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 20,
						'max' => 60,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-swiper-button' => 'font-size: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'navigation' => [ 'arrows', 'both' ],
				],
			]
		);

		$this->add_control(
			'arrows_color',
			[
				'label' => esc_html__( 'Arrows Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-swiper-button' => 'color: {{VALUE}}',
					'{{WRAPPER}} .elementor-swiper-button svg' => 'fill: {{VALUE}}',
				],
				'condition' => [
					'navigation' => [ 'arrows', 'both' ],
				],
			]
		);

		$this->add_control(
			'heading_style_dots',
			[
				'label' => esc_html__( 'Dots', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'navigation' => [ 'dots', 'both' ],
				],
			]
		);

		$this->add_control(
			'dots_position',
			[
				'label' => esc_html__( 'Dots Position', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'inside',
				'options' => [
					'outside' => esc_html__( 'Outside', 'elementor-pro' ),
					'inside' => esc_html__( 'Inside', 'elementor-pro' ),
				],
				'prefix_class' => 'elementor-pagination-position-',
				'condition' => [
					'navigation' => [ 'dots', 'both' ],
				],
			]
		);

		$this->add_control(
			'dots_size',
			[
				'label' => esc_html__( 'Dots Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 5,
						'max' => 15,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .swiper-pagination-bullet' => 'height: {{SIZE}}{{UNIT}}; width: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}} .swiper-container-horizontal .swiper-pagination-progressbar' => 'height: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}} .swiper-pagination-fraction' => 'font-size: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'navigation' => [ 'dots', 'both' ],
				],
			]
		);

		$this->add_control(
			'dots_color',
			[
				'label' => esc_html__( 'Dots Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .swiper-pagination-bullet-active' => 'background-color: {{VALUE}};',
				],
				'condition' => [
					'navigation' => [ 'dots', 'both' ],
				],
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		$settings = $this->get_settings();

		if ( empty( $settings['slides'] ) ) {
			return;
		}

		$this->add_render_attribute( 'button', 'class', [ 'elementor-button', 'elementor-slide-button' ] );

		if ( ! empty( $settings['button_size'] ) ) {
			$this->add_render_attribute( 'button', 'class', 'elementor-size-' . $settings['button_size'] );
		}

		$slides = [];
		$slide_count = 0;

		foreach ( $settings['slides'] as $slide ) {
			$slide_html = '';
			$btn_attributes = '';
			$slide_attributes = '';
			$slide_element = 'div';
			$btn_element = 'div';

			if ( ! empty( $slide['link']['url'] ) ) {
				$this->add_link_attributes( 'slide_link' . $slide_count, $slide['link'] );

				if ( 'button' === $slide['link_click'] ) {
					$btn_element = 'a';
					$btn_attributes = $this->get_render_attribute_string( 'slide_link' . $slide_count );
				} else {
					$slide_element = 'a';
					$slide_attributes = $this->get_render_attribute_string( 'slide_link' . $slide_count );
				}
			}

			$slide_html .= '<' . $slide_element . ' class="swiper-slide-inner" ' . $slide_attributes . '>';

			$slide_html .= '<div class="swiper-slide-contents">';

			if ( $slide['heading'] ) {
				$slide_html .= '<div class="elementor-slide-heading">' . $slide['heading'] . '</div>';
			}

			if ( $slide['description'] ) {
				$slide_html .= '<div class="elementor-slide-description">' . $slide['description'] . '</div>';
			}

			if ( $slide['button_text'] ) {
				$slide_html .= '<' . $btn_element . ' ' . $btn_attributes . ' ' . $this->get_render_attribute_string( 'button' ) . '>' . $slide['button_text'] . '</' . $btn_element . '>';
			}

			$slide_html .= '</div></' . $slide_element . '>';

			if ( 'yes' === $slide['background_overlay'] ) {
				$slide_html = '<div class="elementor-background-overlay"></div>' . $slide_html;
			}

			$ken_class = '';

			if ( $slide['background_ken_burns'] ) {
				$ken_class = ' elementor-ken-burns elementor-ken-burns--' . $slide['zoom_direction'];
			}

			$slide_html = '<div class="swiper-slide-bg' . $ken_class . '"></div>' . $slide_html;

			$slides[] = '<div class="elementor-repeater-item-' . $slide['_id'] . ' swiper-slide">' . $slide_html . '</div>';
			$slide_count++;
		}

		$direction = is_rtl() ? 'rtl' : 'ltr';

		$show_dots = ( in_array( $settings['navigation'], [ 'dots', 'both' ] ) );
		$show_arrows = ( in_array( $settings['navigation'], [ 'arrows', 'both' ] ) );

		$slides_count = count( $settings['slides'] );
		?>
		<div class="elementor-swiper">
			<div class="elementor-slides-wrapper elementor-main-swiper swiper-container" dir="<?php Utils::print_unescaped_internal_string( $direction ); ?>" data-animation="<?php $this->print_render_attribute_string( $settings['content_animation'] ); ?>">
				<div class="swiper-wrapper elementor-slides">
					<?php // PHPCS - Slides for each is safe. ?>
					<?php echo implode( '', $slides ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
				</div>
				<?php if ( 1 < $slides_count ) : ?>
					<?php if ( $show_dots ) : ?>
						<div class="swiper-pagination"></div>
					<?php endif; ?>
					<?php if ( $show_arrows ) : ?>
						<div class="elementor-swiper-button elementor-swiper-button-prev">
							<?php $this->render_swiper_button( 'previous' ); ?>
							<span class="elementor-screen-only"><?php echo esc_html__( 'Previous', 'elementor-pro' ); ?></span>
						</div>
						<div class="elementor-swiper-button elementor-swiper-button-next">
							<?php $this->render_swiper_button( 'next' ); ?>
							<span class="elementor-screen-only"><?php echo esc_html__( 'Next', 'elementor-pro' ); ?></span>
						</div>
					<?php endif; ?>
				<?php endif; ?>
			</div>
		</div>
		<?php
	}

	/**
	 * Render Slides widget output in the editor.
	 *
	 * Written as a Backbone JavaScript template and used to generate the live preview.
	 *
	 * @since 2.9.0
	 * @access protected
	 */
	protected function content_template() {
		?>
		<#
			var direction        = elementorFrontend.config.is_rtl ? 'rtl' : 'ltr',
				next             = elementorFrontend.config.is_rtl ? 'left' : 'right',
				prev             = elementorFrontend.config.is_rtl ? 'right' : 'left',
				navi             = settings.navigation,
				showDots         = ( 'dots' === navi || 'both' === navi ),
				showArrows       = ( 'arrows' === navi || 'both' === navi ),
				buttonSize       = settings.button_size;
		#>
		<div class="elementor-swiper">
			<div class="elementor-slides-wrapper elementor-main-swiper swiper-container" dir="{{ direction }}" data-animation="{{ settings.content_animation }}">
				<div class="swiper-wrapper elementor-slides">
					<# jQuery.each( settings.slides, function( index, slide ) { #>
						<div class="elementor-repeater-item-{{ slide._id }} swiper-slide">
							<#
							var kenClass = '';

							if ( '' != slide.background_ken_burns ) {
								kenClass = ' elementor-ken-burns elementor-ken-burns--' + slide.zoom_direction;
							}
							#>
							<div class="swiper-slide-bg{{ kenClass }}"></div>
							<# if ( 'yes' === slide.background_overlay ) { #>
							<div class="elementor-background-overlay"></div>
							<# } #>
							<div class="swiper-slide-inner">
								<div class="swiper-slide-contents">
									<# if ( slide.heading ) { #>
										<div class="elementor-slide-heading">{{{ slide.heading }}}</div>
									<# }
									if ( slide.description ) { #>
										<div class="elementor-slide-description">{{{ slide.description }}}</div>
									<# }
									if ( slide.button_text ) { #>
										<div class="elementor-button elementor-slide-button elementor-size-{{ buttonSize }}">{{{ slide.button_text }}}</div>
									<# } #>
								</div>
							</div>
						</div>
					<# } ); #>
				</div>
				<# if ( 1 < settings.slides.length ) { #>
					<# if ( showDots ) { #>
						<div class="swiper-pagination"></div>
					<# } #>
					<# if ( showArrows ) { #>
						<div class="elementor-swiper-button elementor-swiper-button-prev">
							<i class="eicon-chevron-{{ prev }}" aria-hidden="true"></i>
							<span class="elementor-screen-only"><?php echo esc_html__( 'Previous', 'elementor-pro' ); ?></span>
						</div>
						<div class="elementor-swiper-button elementor-swiper-button-next">
							<i class="eicon-chevron-{{ next }}" aria-hidden="true"></i>
							<span class="elementor-screen-only"><?php echo esc_html__( 'Next', 'elementor-pro' ); ?></span>
						</div>
					<# } #>
				<# } #>
			</div>
		</div>
		<?php
	}

	private function render_swiper_button( $type ) {
		$direction = 'next' === $type ? 'right' : 'left';

		if ( is_rtl() ) {
			$direction = 'right' === $direction ? 'left' : 'right';
		}

		$icon_value = 'eicon-chevron-' . $direction;

		Icons_Manager::render_icon( [
			'library' => 'eicons',
			'value' => $icon_value,
		], [ 'aria-hidden' => 'true' ] );
	}
}
modules/call-to-action/widgets/call-to-action.php000064400000135435150755004310016022 0ustar00<?php
namespace ElementorPro\Modules\CallToAction\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Css_Filter;
use Elementor\Group_Control_Image_Size;
use Elementor\Group_Control_Typography;
use Elementor\Icons_Manager;
use Elementor\Utils;
use ElementorPro\Base\Base_Widget;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Call_To_Action extends Base_Widget {

	public function get_name() {
		return 'call-to-action';
	}

	public function get_title() {
		return esc_html__( 'Call to Action', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-image-rollover';
	}

	public function get_keywords() {
		return [ 'call to action', 'cta', 'button' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_main_image',
			[
				'label' => esc_html__( 'Image', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'skin',
			[
				'label' => esc_html__( 'Skin', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'classic' => esc_html__( 'Classic', 'elementor-pro' ),
					'cover' => esc_html__( 'Cover', 'elementor-pro' ),
				],
				'render_type' => 'template',
				'prefix_class' => 'elementor-cta--skin-',
				'default' => 'classic',
			]
		);

		$this->add_responsive_control(
			'layout',
			[
				'label' => esc_html__( 'Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'above' => [
						'title' => esc_html__( 'Above', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'prefix_class' => 'elementor-cta-%s-layout-image-',
				'condition' => [
					'skin!' => 'cover',
				],
			]
		);

		$this->add_control(
			'bg_image',
			[
				'label' => esc_html__( 'Choose Image', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
				'dynamic' => [
					'active' => true,
				],
				'default' => [
					'url' => Utils::get_placeholder_image_src(),
				],
			]
		);

		$this->add_group_control(
			Group_Control_Image_Size::get_type(),
			[
				'name' => 'bg_image', // Actually its `image_size`
				'label' => esc_html__( 'Image Resolution', 'elementor-pro' ),
				'default' => 'large',
				'condition' => [
					'bg_image[id]!' => '',
				],
				'separator' => 'none',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_content',
			[
				'label' => esc_html__( 'Content', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'graphic_element',
			[
				'label' => esc_html__( 'Graphic Element', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'none' => [
						'title' => esc_html__( 'None', 'elementor-pro' ),
						'icon' => 'eicon-ban',
					],
					'image' => [
						'title' => esc_html__( 'Image', 'elementor-pro' ),
						'icon' => 'fa fa-picture-o',
					],
					'icon' => [
						'title' => esc_html__( 'Icon', 'elementor-pro' ),
						'icon' => 'eicon-star',
					],
				],
				'default' => 'none',
			]
		);

		$this->add_control(
			'graphic_image',
			[
				'label' => esc_html__( 'Choose Image', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
				'dynamic' => [
					'active' => true,
				],
				'default' => [
					'url' => Utils::get_placeholder_image_src(),
				],
				'condition' => [
					'graphic_element' => 'image',
				],
				'show_label' => false,
			]
		);

		$this->add_group_control(
			Group_Control_Image_Size::get_type(),
			[
				'name' => 'graphic_image', // Actually its `image_size`
				'default' => 'thumbnail',
				'condition' => [
					'graphic_element' => 'image',
					'graphic_image[id]!' => '',
				],
			]
		);

		$this->add_control(
			'selected_icon',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'fa4compatibility' => 'icon',
				'default' => [
					'value' => 'fas fa-star',
					'library' => 'fa-solid',
				],
				'condition' => [
					'graphic_element' => 'icon',
				],
			]
		);

		$this->add_control(
			'icon_view',
			[
				'label' => esc_html__( 'View', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'default' => esc_html__( 'Default', 'elementor-pro' ),
					'stacked' => esc_html__( 'Stacked', 'elementor-pro' ),
					'framed' => esc_html__( 'Framed', 'elementor-pro' ),
				],
				'default' => 'default',
				'condition' => [
					'graphic_element' => 'icon',
				],
			]
		);

		$this->add_control(
			'icon_shape',
			[
				'label' => esc_html__( 'Shape', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'circle' => esc_html__( 'Circle', 'elementor-pro' ),
					'square' => esc_html__( 'Square', 'elementor-pro' ),
				],
				'default' => 'circle',
				'condition' => [
					'icon_view!' => 'default',
					'graphic_element' => 'icon',
				],
			]
		);

		$this->add_control(
			'title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'default' => esc_html__( 'This is the heading', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Enter your title', 'elementor-pro' ),
				'label_block' => true,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'description',
			[
				'label' => esc_html__( 'Description', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'dynamic' => [
					'active' => true,
				],
				'default' => esc_html__( 'Lorem ipsum dolor sit amet consectetur adipiscing elit dolor', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Enter your description', 'elementor-pro' ),
				'separator' => 'none',
				'rows' => 5,
			]
		);

		$this->add_control(
			'title_tag',
			[
				'label' => esc_html__( 'Title HTML Tag', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'h1' => 'H1',
					'h2' => 'H2',
					'h3' => 'H3',
					'h4' => 'H4',
					'h5' => 'H5',
					'h6' => 'H6',
					'div' => 'div',
					'span' => 'span',
				],
				'default' => 'h2',
				'condition' => [
					'title!' => '',
				],
			]
		);

		$this->add_control(
			'button',
			[
				'label' => esc_html__( 'Button Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'default' => esc_html__( 'Click Here', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'link',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),

			]
		);

		$this->add_control(
			'link_click',
			[
				'label' => esc_html__( 'Apply Link On', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'box' => esc_html__( 'Whole Box', 'elementor-pro' ),
					'button' => esc_html__( 'Button Only', 'elementor-pro' ),
				],
				'default' => 'button',
				'separator' => 'none',
				'condition' => [
					'link[url]!' => '',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_ribbon',
			[
				'label' => esc_html__( 'Ribbon', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'ribbon_title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_control(
			'ribbon_horizontal_position',
			[
				'label' => esc_html__( 'Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'condition' => [
					'ribbon_title!' => '',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'box_style',
			[
				'label' => esc_html__( 'Box', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'min-height',
			[
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 100,
						'max' => 1000,
					],
					'vh' => [
						'min' => 10,
						'max' => 100,
					],
				],
				'size_units' => [ 'px', 'vh' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__content' => 'min-height: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'default' => 'center',
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__content' => 'text-align: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'vertical_position',
			[
				'label' => esc_html__( 'Vertical Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'top' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'middle' => [
						'title' => esc_html__( 'Middle', 'elementor-pro' ),
						'icon' => 'eicon-v-align-middle',
					],
					'bottom' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'prefix_class' => 'elementor-cta--valign-',
				'separator' => 'none',
			]
		);

		$this->add_responsive_control(
			'padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'heading_bg_image_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Image', 'elementor-pro' ),
				'condition' => [
					'bg_image[url]!' => '',
					'skin' => 'classic',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'image_min_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 500,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__bg-wrapper' => 'min-width: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'skin' => 'classic',
					'layout!' => 'above',
				],
			]
		);

		$this->add_responsive_control(
			'image_min_height',
			[
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 500,
					],
					'vh' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'size_units' => [ 'px', 'vh' ],

				'selectors' => [
					'{{WRAPPER}} .elementor-cta__bg-wrapper' => 'min-height: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'skin' => 'classic',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'graphic_element_style',
			[
				'label' => esc_html__( 'Graphic Element', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'graphic_element!' => [
						'none',
						'',
					],
				],
			]
		);

		$this->add_control(
			'graphic_image_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__image' => 'margin-bottom: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'graphic_element' => 'image',
				],
			]
		);

		$this->add_control(
			'graphic_image_width',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ) . ' (%)',
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ '%' ],
				'default' => [
					'unit' => '%',
				],
				'range' => [
					'%' => [
						'min' => 5,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__image img' => 'width: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'graphic_element' => 'image',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'graphic_image_border',
				'selector' => '{{WRAPPER}} .elementor-cta__image img',
				'condition' => [
					'graphic_element' => 'image',
				],
			]
		);

		$this->add_control(
			'graphic_image_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 200,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__image img' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'graphic_element' => 'image',
				],
			]
		);

		$this->add_control(
			'icon_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-icon-wrapper' => 'margin-bottom: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'graphic_element' => 'icon',
				],
			]
		);

		$this->add_control(
			'icon_primary_color',
			[
				'label' => esc_html__( 'Primary Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-view-stacked .elementor-icon' => 'background-color: {{VALUE}}',
					'{{WRAPPER}} .elementor-view-stacked .elementor-icon svg' => 'stroke: {{VALUE}}',
					'{{WRAPPER}} .elementor-view-framed .elementor-icon, {{WRAPPER}} .elementor-view-default .elementor-icon' => 'color: {{VALUE}}; border-color: {{VALUE}}',
					'{{WRAPPER}} .elementor-view-framed .elementor-icon, {{WRAPPER}} .elementor-view-default .elementor-icon svg' => 'fill: {{VALUE}};',
				],
				'condition' => [
					'graphic_element' => 'icon',
				],
			]
		);

		$this->add_control(
			'icon_secondary_color',
			[
				'label' => esc_html__( 'Secondary Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'condition' => [
					'graphic_element' => 'icon',
					'icon_view!' => 'default',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-view-framed .elementor-icon' => 'background-color: {{VALUE}};',
					'{{WRAPPER}} .elementor-view-framed .elementor-icon svg' => 'stroke: {{VALUE}};',
					'{{WRAPPER}} .elementor-view-stacked .elementor-icon' => 'color: {{VALUE}};',
					'{{WRAPPER}} .elementor-view-stacked .elementor-icon svg' => 'fill: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'icon_size',
			[
				'label' => esc_html__( 'Icon Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 6,
						'max' => 300,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-icon' => 'font-size: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'graphic_element' => 'icon',
				],
			]
		);

		$this->add_control(
			'icon_padding',
			[
				'label' => esc_html__( 'Icon Padding', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-icon' => 'padding: {{SIZE}}{{UNIT}};',
				],
				'range' => [
					'em' => [
						'min' => 0,
						'max' => 5,
					],
				],
				'condition' => [
					'graphic_element' => 'icon',
					'icon_view!' => 'default',
				],
			]
		);

		$this->add_control(
			'icon_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-icon' => 'border-width: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'graphic_element' => 'icon',
					'icon_view' => 'framed',
				],
			]
		);

		$this->add_control(
			'icon_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'graphic_element' => 'icon',
					'icon_view!' => 'default',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_content_style',
			[
				'label' => esc_html__( 'Content', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'conditions' => [
					'relation' => 'or',
					'terms' => [
						[
							'name' => 'title',
							'operator' => '!==',
							'value' => '',
						],
						[
							'name' => 'description',
							'operator' => '!==',
							'value' => '',
						],
					],
				],
			]
		);

		$this->add_control(
			'heading_style_title',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'condition' => [
					'title!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'title_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-cta__title',
				'condition' => [
					'title!' => '',
				],
			]
		);

		$this->add_responsive_control(
			'title_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__title:not(:last-child)' => 'margin-bottom: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'title!' => '',
				],
			]
		);

		$this->add_control(
			'heading_style_description',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Description', 'elementor-pro' ),
				'separator' => 'before',
				'condition' => [
					'description!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'description_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
				'selector' => '{{WRAPPER}} .elementor-cta__description',
				'condition' => [
					'description!' => '',
				],
			]
		);

		$this->add_responsive_control(
			'description_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__description:not(:last-child)' => 'margin-bottom: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'description!' => '',
				],
			]
		);

		$this->add_control(
			'heading_content_colors',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Colors', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->start_controls_tabs( 'color_tabs' );

		$this->start_controls_tab( 'colors_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'content_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__content' => 'background-color: {{VALUE}}',
				],
				'condition' => [
					'skin' => 'classic',
				],
			]
		);

		$this->add_control(
			'title_color',
			[
				'label' => esc_html__( 'Title Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__title' => 'color: {{VALUE}}',
				],
				'condition' => [
					'title!' => '',
				],
			]
		);

		$this->add_control(
			'description_color',
			[
				'label' => esc_html__( 'Description Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__description' => 'color: {{VALUE}}',
				],
				'condition' => [
					'description!' => '',
				],
			]
		);

		$this->add_control(
			'button_color',
			[
				'label' => esc_html__( 'Button Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__button' => 'color: {{VALUE}}; border-color: {{VALUE}}',
				],
				'condition' => [
					'button!' => '',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'colors_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'content_bg_color_hover',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta:hover .elementor-cta__content' => 'background-color: {{VALUE}}',
				],
				'condition' => [
					'skin' => 'classic',
				],
			]
		);

		$this->add_control(
			'title_color_hover',
			[
				'label' => esc_html__( 'Title Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta:hover .elementor-cta__title' => 'color: {{VALUE}}',
				],
				'condition' => [
					'title!' => '',
				],
			]
		);

		$this->add_control(
			'description_color_hover',
			[
				'label' => esc_html__( 'Description Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta:hover .elementor-cta__description' => 'color: {{VALUE}}',
				],
				'condition' => [
					'description!' => '',
				],
			]
		);

		$this->add_control(
			'button_color_hover',
			[
				'label' => esc_html__( 'Button Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta:hover .elementor-cta__button' => 'color: {{VALUE}}; border-color: {{VALUE}}',
				],
				'condition' => [
					'button!' => '',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();

		$this->start_controls_section(
			'button_style',
			[
				'label' => esc_html__( 'Button', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'button!' => '',
				],
			]
		);

		$this->add_control(
			'button_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'sm',
				'options' => [
					'xs' => esc_html__( 'Extra Small', 'elementor-pro' ),
					'sm' => esc_html__( 'Small', 'elementor-pro' ),
					'md' => esc_html__( 'Medium', 'elementor-pro' ),
					'lg' => esc_html__( 'Large', 'elementor-pro' ),
					'xl' => esc_html__( 'Extra Large', 'elementor-pro' ),
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'button_typography',
				'label' => esc_html__( 'Typography', 'elementor-pro' ),
				'selector' => '{{WRAPPER}} .elementor-cta__button',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
			]
		);

		$this->start_controls_tabs( 'button_tabs' );

		$this->start_controls_tab( 'button_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__button' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'button_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__button' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'button_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__button' => 'border-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'button-hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_hover_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__button:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'button_hover_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__button:hover' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'button_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__button:hover' => 'border-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'button_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 20,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__button' => 'border-width: {{SIZE}}{{UNIT}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__button' => 'border-radius: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_ribbon_style',
			[
				'label' => esc_html__( 'Ribbon', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'show_label' => false,
				'condition' => [
					'ribbon_title!' => '',
				],
			]
		);

		$this->add_control(
			'ribbon_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-ribbon-inner' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'ribbon_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-ribbon-inner' => 'color: {{VALUE}}',
				],
			]
		);

		$ribbon_distance_transform = is_rtl() ? 'translateY(-50%) translateX({{SIZE}}{{UNIT}}) rotate(-45deg)' : 'translateY(-50%) translateX(-50%) translateX({{SIZE}}{{UNIT}}) rotate(-45deg)';

		$this->add_responsive_control(
			'ribbon_distance',
			[
				'label' => esc_html__( 'Distance', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-ribbon-inner' => 'margin-top: {{SIZE}}{{UNIT}}; transform: ' . $ribbon_distance_transform,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'ribbon_typography',
				'selector' => '{{WRAPPER}} .elementor-ribbon-inner',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'box_shadow',
				'selector' => '{{WRAPPER}} .elementor-ribbon-inner',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'hover_effects',
			[
				'label' => esc_html__( 'Hover Effects', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'content_hover_heading',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Content', 'elementor-pro' ),
				'condition' => [
					'skin' => 'cover',
				],
			]
		);

		$this->add_control(
			'content_animation',
			[
				'label' => esc_html__( 'Hover Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'groups' => [
					[
						'label' => esc_html__( 'None', 'elementor-pro' ),
						'options' => [
							'' => esc_html__( 'None', 'elementor-pro' ),
						],
					],
					[
						'label' => esc_html__( 'Entrance', 'elementor-pro' ),
						'options' => [
							'enter-from-right' => 'Slide In Right',
							'enter-from-left' => 'Slide In Left',
							'enter-from-top' => 'Slide In Up',
							'enter-from-bottom' => 'Slide In Down',
							'enter-zoom-in' => 'Zoom In',
							'enter-zoom-out' => 'Zoom Out',
							'fade-in' => 'Fade In',
						],
					],
					[
						'label' => esc_html__( 'Reaction', 'elementor-pro' ),
						'options' => [
							'grow' => 'Grow',
							'shrink' => 'Shrink',
							'move-right' => 'Move Right',
							'move-left' => 'Move Left',
							'move-up' => 'Move Up',
							'move-down' => 'Move Down',
						],
					],
					[
						'label' => esc_html__( 'Exit', 'elementor-pro' ),
						'options' => [
							'exit-to-right' => 'Slide Out Right',
							'exit-to-left' => 'Slide Out Left',
							'exit-to-top' => 'Slide Out Up',
							'exit-to-bottom' => 'Slide Out Down',
							'exit-zoom-in' => 'Zoom In',
							'exit-zoom-out' => 'Zoom Out',
							'fade-out' => 'Fade Out',
						],
					],
				],
				'default' => 'grow',
				'condition' => [
					'skin' => 'cover',
				],
			]
		);

		/*
		 *
		 * Add class 'elementor-animated-content' to widget when assigned content animation
		 *
		 */
		$this->add_control(
			'animation_class',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::HIDDEN,
				'default' => 'animated-content',
				'prefix_class' => 'elementor-',
				'condition' => [
					'content_animation!' => '',
				],
			]
		);

		$this->add_control(
			'content_animation_duration',
			[
				'label' => esc_html__( 'Animation Duration', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::SLIDER,
				'render_type' => 'template',
				'default' => [
					'size' => 1000,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 3000,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__content-item' => 'transition-duration: {{SIZE}}ms',
					'{{WRAPPER}}.elementor-cta--sequenced-animation .elementor-cta__content-item:nth-child(2)' => 'transition-delay: calc( {{SIZE}}ms / 3 )',
					'{{WRAPPER}}.elementor-cta--sequenced-animation .elementor-cta__content-item:nth-child(3)' => 'transition-delay: calc( ( {{SIZE}}ms / 3 ) * 2 )',
					'{{WRAPPER}}.elementor-cta--sequenced-animation .elementor-cta__content-item:nth-child(4)' => 'transition-delay: calc( ( {{SIZE}}ms / 3 ) * 3 )',
				],
				'condition' => [
					'content_animation!' => '',
					'skin' => 'cover',
				],
			]
		);

		$this->add_control(
			'sequenced_animation',
			[
				'label' => esc_html__( 'Sequenced Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'return_value' => 'elementor-cta--sequenced-animation',
				'prefix_class' => '',
				'condition' => [
					'content_animation!' => '',

				],
			]
		);

		$this->add_control(
			'background_hover_heading',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Background', 'elementor-pro' ),
				'separator' => 'before',
				'condition' => [
					'skin' => 'cover',
				],
			]
		);

		$this->add_control(
			'transformation',
			[
				'label' => esc_html__( 'Hover Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => 'None',
					'zoom-in' => 'Zoom In',
					'zoom-out' => 'Zoom Out',
					'move-left' => 'Move Left',
					'move-right' => 'Move Right',
					'move-up' => 'Move Up',
					'move-down' => 'Move Down',
				],
				'default' => 'zoom-in',
				'prefix_class' => 'elementor-bg-transform elementor-bg-transform-',
			]
		);

		$this->start_controls_tabs( 'bg_effects_tabs' );

		$this->start_controls_tab( 'normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'overlay_color',
			[
				'label' => esc_html__( 'Overlay Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta:not(:hover) .elementor-cta__bg-overlay' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Css_Filter::get_type(),
			[
				'name' => 'bg_filters',
				'selector' => '{{WRAPPER}} .elementor-cta__bg',
			]
		);

		$this->add_control(
			'overlay_blend_mode',
			[
				'label' => esc_html__( 'Blend Mode', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'Normal', 'elementor-pro' ),
					'multiply' => 'Multiply',
					'screen' => 'Screen',
					'overlay' => 'Overlay',
					'darken' => 'Darken',
					'lighten' => 'Lighten',
					'color-dodge' => 'Color Dodge',
					'color-burn' => 'Color Burn',
					'hue' => 'Hue',
					'saturation' => 'Saturation',
					'color' => 'Color',
					'exclusion' => 'Exclusion',
					'luminosity' => 'Luminosity',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-cta__bg-overlay' => 'mix-blend-mode: {{VALUE}}',
				],
				'separator' => 'none',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab( 'hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'overlay_color_hover',
			[
				'label' => esc_html__( 'Overlay Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-cta:hover .elementor-cta__bg-overlay' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Css_Filter::get_type(),
			[
				'name' => 'bg_filters_hover',
				'selector' => '{{WRAPPER}} .elementor-cta:hover .elementor-cta__bg',
			]
		);

		$this->add_control(
			'effect_duration',
			[
				'label' => esc_html__( 'Transition Duration', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'render_type' => 'template',
				'default' => [
					'size' => 1500,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 3000,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-cta .elementor-cta__bg, {{WRAPPER}} .elementor-cta .elementor-cta__bg-overlay' => 'transition-duration: {{SIZE}}ms',
				],
				'separator' => 'before',
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();
	}

	protected function render() {
		$settings = $this->get_settings_for_display();

		$wrapper_tag = 'div';
		$button_tag = 'a';
		$bg_image = '';
		$content_animation = $settings['content_animation'];
		$animation_class = '';
		$print_bg = true;
		$print_content = true;

		if ( ! empty( $settings['bg_image']['id'] ) ) {
			$bg_image = Group_Control_Image_Size::get_attachment_image_src( $settings['bg_image']['id'], 'bg_image', $settings );
		} elseif ( ! empty( $settings['bg_image']['url'] ) ) {
			$bg_image = $settings['bg_image']['url'];
		}

		if ( empty( $bg_image ) && 'classic' == $settings['skin'] ) {
			$print_bg = false;
		}

		if ( empty( $settings['title'] ) && empty( $settings['description'] ) && empty( $settings['button'] ) && 'none' == $settings['graphic_element'] ) {
			$print_content = false;
		}

		$this->add_render_attribute( 'wrapper', 'class', 'elementor-cta' );

		$this->add_render_attribute( 'background_image', 'style', [
			'background-image: url(' . $bg_image . ');',
		] );

		$this->add_render_attribute( 'title', 'class', [
			'elementor-cta__title',
			'elementor-cta__content-item',
			'elementor-content-item',
		] );

		$this->add_render_attribute( 'description', 'class', [
			'elementor-cta__description',
			'elementor-cta__content-item',
			'elementor-content-item',
		] );

		$this->add_render_attribute( 'button', 'class', [
			'elementor-cta__button',
			'elementor-button',
			'elementor-size-' . $settings['button_size'],
		] );

		$this->add_render_attribute( 'graphic_element', 'class',
			[
				'elementor-content-item',
				'elementor-cta__content-item',
			]
		);

		if ( 'icon' === $settings['graphic_element'] ) {
			$this->add_render_attribute( 'graphic_element', 'class',
				[
					'elementor-icon-wrapper',
					'elementor-cta__icon',
				]
			);
			$this->add_render_attribute( 'graphic_element', 'class', 'elementor-view-' . $settings['icon_view'] );
			if ( 'default' != $settings['icon_view'] ) {
				$this->add_render_attribute( 'graphic_element', 'class', 'elementor-shape-' . $settings['icon_shape'] );
			}

			if ( ! isset( $settings['icon'] ) && ! Icons_Manager::is_migration_allowed() ) {
				// add old default
				$settings['icon'] = 'fa fa-star';
			}

			if ( ! empty( $settings['icon'] ) ) {
				$this->add_render_attribute( 'icon', 'class', $settings['icon'] );
			}
		} elseif ( 'image' === $settings['graphic_element'] && ! empty( $settings['graphic_image']['url'] ) ) {
			$this->add_render_attribute( 'graphic_element', 'class', 'elementor-cta__image' );
		}

		if ( ! empty( $content_animation ) && 'cover' == $settings['skin'] ) {

			$animation_class = 'elementor-animated-item--' . $content_animation;

			$this->add_render_attribute( 'title', 'class', $animation_class );

			$this->add_render_attribute( 'graphic_element', 'class', $animation_class );

			$this->add_render_attribute( 'description', 'class', $animation_class );

		}

		if ( ! empty( $settings['link']['url'] ) ) {
			$link_element = 'button';

			if ( 'box' === $settings['link_click'] ) {
				$wrapper_tag = 'a';
				$button_tag = 'span';
				$link_element = 'wrapper';
			}

			$this->add_link_attributes( $link_element, $settings['link'] );
		}

		$this->add_inline_editing_attributes( 'title' );
		$this->add_inline_editing_attributes( 'description' );
		$this->add_inline_editing_attributes( 'button' );

		$migrated = isset( $settings['__fa4_migrated']['selected_icon'] );
		$is_new = empty( $settings['icon'] ) && Icons_Manager::is_migration_allowed();

		?>
		<<?php Utils::print_validated_html_tag( $wrapper_tag ); ?> <?php $this->print_render_attribute_string( 'wrapper' ); ?>>
		<?php if ( $print_bg ) : ?>
			<div class="elementor-cta__bg-wrapper">
				<div class="elementor-cta__bg elementor-bg" <?php $this->print_render_attribute_string( 'background_image' ); ?>></div>
				<div class="elementor-cta__bg-overlay"></div>
			</div>
		<?php endif; ?>
		<?php if ( $print_content ) : ?>
			<div class="elementor-cta__content">
				<?php if ( 'image' === $settings['graphic_element'] && ! empty( $settings['graphic_image']['url'] ) ) : ?>
					<div <?php $this->print_render_attribute_string( 'graphic_element' ); ?>>
						<?php Group_Control_Image_Size::print_attachment_image_html( $settings, 'graphic_image' ); ?>
					</div>
				<?php elseif ( 'icon' === $settings['graphic_element'] && ( ! empty( $settings['icon'] ) || ! empty( $settings['selected_icon'] ) ) ) : ?>
					<div <?php $this->print_render_attribute_string( 'graphic_element' ); ?>>
						<div class="elementor-icon">
							<?php if ( $is_new || $migrated ) :
								Icons_Manager::render_icon( $settings['selected_icon'], [ 'aria-hidden' => 'true' ] );
							else : ?>
								<i <?php $this->print_render_attribute_string( 'icon' ); ?>></i>
							<?php endif; ?>
						</div>
					</div>
				<?php endif; ?>

				<?php
				if ( ! empty( $settings['title'] ) ) :
					$title_tag = Utils::validate_html_tag( $settings['title_tag'] );

					echo '<' . $title_tag . ' ' . $this->get_render_attribute_string( 'title' ) . '>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
					$this->print_unescaped_setting( 'title' );
					echo '</' . $title_tag . '>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				endif;
				?>

				<?php if ( ! empty( $settings['description'] ) ) : ?>
					<div <?php $this->print_render_attribute_string( 'description' ); ?>>
						<?php $this->print_unescaped_setting( 'description' ); ?>
					</div>
				<?php endif; ?>

				<?php if ( ! empty( $settings['button'] ) ) : ?>
					<div class="elementor-cta__button-wrapper elementor-cta__content-item elementor-content-item <?php echo esc_attr( $animation_class ); ?>">
					<<?php Utils::print_validated_html_tag( $button_tag ); ?> <?php $this->print_render_attribute_string( 'button' ); ?>>
						<?php $this->print_unescaped_setting( 'button' ); ?>
					</<?php Utils::print_unescaped_internal_string( $button_tag ); ?>>
					</div>
				<?php endif; ?>
			</div>
		<?php endif; ?>
		<?php
		if ( ! empty( $settings['ribbon_title'] ) ) :
			$this->add_render_attribute( 'ribbon-wrapper', 'class', 'elementor-ribbon' );

			if ( ! empty( $settings['ribbon_horizontal_position'] ) ) {
				$this->add_render_attribute( 'ribbon-wrapper', 'class', 'elementor-ribbon-' . $settings['ribbon_horizontal_position'] );
			}
			?>
			<div <?php $this->print_render_attribute_string( 'ribbon-wrapper' ); ?>>
				<div class="elementor-ribbon-inner"><?php $this->print_unescaped_setting( 'ribbon_title' ); ?></div>
			</div>
		<?php endif; ?>
		</<?php Utils::print_validated_html_tag( $wrapper_tag ); ?>>
		<?php
	}

	/**
	 * Render Call to Action widget output in the editor.
	 *
	 * Written as a Backbone JavaScript template and used to generate the live preview.
	 *
	 * @since 2.9.0
	 * @access protected
	 */
	protected function content_template() {
		?>
		<#
			var wrapperTag = 'div',
				buttonTag = 'a',
				contentAnimation = settings.content_animation,
				animationClass,
				btnSizeClass = 'elementor-size-' + settings.button_size,
				printBg = true,
				printContent = true,
				iconHTML = elementor.helpers.renderIcon( view, settings.selected_icon, { 'aria-hidden': true }, 'i' , 'object' ),
				migrated = elementor.helpers.isIconMigrated( settings, 'selected_icon' );

			if ( 'box' === settings.link_click ) {
				wrapperTag = 'a';
				buttonTag = 'span';
				view.addRenderAttribute( 'wrapper', 'href', '#' );
			}

			if ( '' !== settings.bg_image.url ) {
				var bg_image = {
					id: settings.bg_image.id,
					url: settings.bg_image.url,
					size: settings.bg_image_size,
					dimension: settings.bg_image_custom_dimension,
					model: view.getEditModel()
				};

				var bgImageUrl = elementor.imagesManager.getImageUrl( bg_image );
			}

			if ( ! bg_image && 'classic' == settings.skin ) {
				printBg = false;
			}

			if ( ! settings.title && ! settings.description && ! settings.button && 'none' == settings.graphic_element ) {
				printContent = false;
			}

			if ( 'icon' === settings.graphic_element ) {
				var iconWrapperClasses = 'elementor-icon-wrapper';
					iconWrapperClasses += ' elementor-cta__image';
					iconWrapperClasses += ' elementor-view-' + settings.icon_view;
				if ( 'default' !== settings.icon_view ) {
					iconWrapperClasses += ' elementor-shape-' + settings.icon_shape;
				}
				view.addRenderAttribute( 'graphic_element', 'class', iconWrapperClasses );

			} else if ( 'image' === settings.graphic_element && '' !== settings.graphic_image.url ) {
				var image = {
					id: settings.graphic_image.id,
					url: settings.graphic_image.url,
					size: settings.graphic_image_size,
					dimension: settings.graphic_image_custom_dimension,
					model: view.getEditModel()
				};

				var imageUrl = elementor.imagesManager.getImageUrl( image );
				view.addRenderAttribute( 'graphic_element', 'class', 'elementor-cta__image' );
			}

			if ( contentAnimation && 'cover' === settings.skin ) {

				var animationClass = 'elementor-animated-item--' + contentAnimation;

				view.addRenderAttribute( 'title', 'class', animationClass );

				view.addRenderAttribute( 'description', 'class', animationClass );

				view.addRenderAttribute( 'graphic_element', 'class', animationClass );
			}

			view.addRenderAttribute( 'background_image', 'style', 'background-image: url(' + bgImageUrl + ');' );
			view.addRenderAttribute( 'title', 'class', [ 'elementor-cta__title', 'elementor-cta__content-item', 'elementor-content-item' ] );
			view.addRenderAttribute( 'description', 'class', [ 'elementor-cta__description', 'elementor-cta__content-item', 'elementor-content-item' ] );
			view.addRenderAttribute( 'button', 'class', [ 'elementor-cta__button', 'elementor-button', btnSizeClass ] );
			view.addRenderAttribute( 'graphic_element', 'class', [ 'elementor-cta__content-item', 'elementor-content-item' ] );


			view.addInlineEditingAttributes( 'title' );
			view.addInlineEditingAttributes( 'description' );
			view.addInlineEditingAttributes( 'button' );
		#>

		<{{ wrapperTag }} class="elementor-cta" {{{ view.getRenderAttributeString( 'wrapper' ) }}}>

		<# if ( printBg ) { #>
			<div class="elementor-cta__bg-wrapper">
				<div class="elementor-cta__bg elementor-bg" {{{ view.getRenderAttributeString( 'background_image' ) }}}></div>
				<div class="elementor-cta__bg-overlay"></div>
			</div>
		<# } #>
		<# if ( printContent ) { #>
			<div class="elementor-cta__content">
				<# if ( 'image' === settings.graphic_element && '' !== settings.graphic_image.url ) { #>
					<div {{{ view.getRenderAttributeString( 'graphic_element' ) }}}>
						<img src="{{ imageUrl }}">
					</div>
				<#  } else if ( 'icon' === settings.graphic_element && ( settings.icon || settings.selected_icon ) ) { #>
					<div {{{ view.getRenderAttributeString( 'graphic_element' ) }}}>
						<div class="elementor-icon">
							<# if ( iconHTML && iconHTML.rendered && ( ! settings.icon || migrated ) ) { #>
								{{{ iconHTML.value }}}
							<# } else { #>
								<i class="{{ settings.icon }}"></i>
							<# } #>
						</div>
					</div>
				<# } #>
				<# if ( settings.title ) { #>
					<# var titleTag = elementorPro.validateHTMLTag( settings.title_tag ) #>
					<{{ titleTag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{{ settings.title }}}</{{ titleTag }}>
				<# } #>

				<# if ( settings.description ) { #>
					<div {{{ view.getRenderAttributeString( 'description' ) }}}>{{{ settings.description }}}</div>
				<# } #>

				<# if ( settings.button ) { #>
					<div class="elementor-cta__button-wrapper elementor-cta__content-item elementor-content-item {{ animationClass }}">
						<{{ buttonTag }} href="#" {{{ view.getRenderAttributeString( 'button' ) }}}>{{{ settings.button }}}</{{ buttonTag }}>
					</div>
				<# } #>
			</div>
		<# } #>
		<# if ( settings.ribbon_title ) {
			var ribbonClasses = 'elementor-ribbon';

			if ( settings.ribbon_horizontal_position ) {
				ribbonClasses += ' elementor-ribbon-' + settings.ribbon_horizontal_position;
			} #>
			<div class="{{ ribbonClasses }}">
				<div class="elementor-ribbon-inner">{{{ settings.ribbon_title }}}</div>
			</div>
		<# } #>
		</{{ wrapperTag }}>
		<?php
	}
}
modules/call-to-action/module.php000064400000000514150755004310013020 0ustar00<?php
namespace ElementorPro\Modules\CallToAction;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Module extends Module_Base {

	public function get_widgets() {
		return [
			'Call_To_Action',
		];
	}

	public function get_name() {
		return 'call-to-action';
	}
}
modules/admin-top-bar/module.php000064400000001703150755004310012645 0ustar00<?php

namespace ElementorPro\Modules\AdminTopBar;

use ElementorPro\Plugin;
use ElementorPro\Base\Module_Base;
use ElementorPro\Core\Connect\Apps\Activate;
use ElementorPro\License\API;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function get_name() {
		return 'admin-top-bar';
	}

	/**
	 * Module constructor.
	 */
	public function __construct() {
		parent::__construct();

		add_action( 'elementor/admin-top-bar/init', function ( $module ) {
			$settings = $module->get_settings();

			/** @var Activate $activate */
			$activate = Plugin::elementor()->common->get_component( 'connect' )->get_app( 'activate' );

			$settings['is_user_connected'] = $settings['is_user_connected'] && API::is_license_active();
			$settings['connect_url'] = ! API::is_license_active() ? $activate->get_admin_url( 'authorize' ) : $settings['connect_url'];

			$module->set_settings( $settings );
		} );
	}
}
modules/assets-manager/asset-types/icons/font-awesome-pro.php000064400000011625150755004310020442 0ustar00<?php
namespace ElementorPro\Modules\AssetsManager\AssetTypes\Icons;

use ElementorPro\Modules\AssetsManager\Classes\Assets_Base;
use Elementor\Settings;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Font_Awesome_Pro extends  Assets_Base {

	const FA_KIT_ID_OPTION_NAME = 'font_awesome_pro_kit_id';

	const FA_KIT_SCRIPT_LINK = 'https://kit.fontawesome.com/%s.js';

	public function get_name() {
		return esc_html__( 'Font Awesome Pro', 'elementor-pro' );
	}

	public function get_type() {
		return 'font-awesome-pro';
	}

	private function get_kit_id() {
		return get_option( 'elementor_' . self::FA_KIT_ID_OPTION_NAME, false );
	}

	public function replace_font_awesome_pro( $settings ) {
		$json_url = ELEMENTOR_PRO_ASSETS_URL . 'lib/font-awesome-pro/%s.js';
		$icons['fa-regular'] = [
			'name' => 'fa-regular',
			'label' => esc_html__( 'Font Awesome - Regular Pro', 'elementor-pro' ),
			'url' => false,
			'enqueue' => false,
			'prefix' => 'fa-',
			'displayPrefix' => 'far',
			'labelIcon' => 'fab fa-font-awesome-alt',
			'ver' => '5.15.1-pro',
			'fetchJson' => sprintf( $json_url, 'regular' ),
			'native' => true,
		];
		$icons['fa-solid'] = [
			'name' => 'fa-solid',
			'label' => esc_html__( 'Font Awesome - Solid Pro', 'elementor-pro' ),
			'url' => false,
			'enqueue' => false,
			'prefix' => 'fa-',
			'displayPrefix' => 'fas',
			'labelIcon' => 'fab fa-font-awesome',
			'ver' => '5.15.1-pro',
			'fetchJson' => sprintf( $json_url, 'solid' ),
			'native' => true,
		];
		$icons['fa-brands'] = [
			'name' => 'fa-brands',
			'label' => esc_html__( 'Font Awesome - Brands Pro', 'elementor-pro' ),
			'url' => false,
			'enqueue' => false,
			'prefix' => 'fa-',
			'displayPrefix' => 'fab',
			'labelIcon' => 'fab fa-font-awesome-flag',
			'ver' => '5.15.1-pro',
			'fetchJson' => sprintf( $json_url, 'brands' ),
			'native' => true,
		];
		$icons['fa-light'] = [
			'name' => 'fa-light',
			'label' => esc_html__( 'Font Awesome - Light Pro', 'elementor-pro' ),
			'url' => false,
			'enqueue' => false,
			'prefix' => 'fa-',
			'displayPrefix' => 'fal',
			'labelIcon' => 'fal fa-flag',
			'ver' => '5.15.1-pro',
			'fetchJson' => sprintf( $json_url, 'light' ),
			'native' => true,
		];
		$icons['fa-duotone'] = [
			'name' => 'fa-duotone',
			'label' => esc_html__( 'Font Awesome - Duotone Pro', 'elementor-pro' ),
			'url' => false,
			'enqueue' => false,
			'prefix' => 'fa-',
			'displayPrefix' => 'fad',
			'labelIcon' => 'fad fa-flag',
			'ver' => '5.15.1-pro',
			'fetchJson' => sprintf( $json_url, 'duotone' ),
			'native' => true,
		];
		// remove Free
		unset(
			$settings['fa-solid'],
			$settings['fa-regular'],
			$settings['fa-brands']
		);
		return array_merge( $icons, $settings );
	}

	public function register_admin_fields( Settings $settings ) {
		$settings->add_section( Settings::TAB_INTEGRATIONS, 'font_awesome_pro', [
			'callback' => function() {
				echo '<hr><h2>' . esc_html__( 'Font Awesome Pro', 'elementor-pro' ) . '</h2>';
				esc_html_e( 'Font Awesome, the web\'s most popular icon set and toolkit, Pro Integration', 'elementor-pro' );
			},
			'fields' => [
				self::FA_KIT_ID_OPTION_NAME => [
					'label' => esc_html__( 'Kit ID', 'elementor-pro' ),
					'field_args' => [
						'type' => 'text',
						'desc' => sprintf(
							/* translators: 1: Link open tag, 2: Link closing tag. */
							esc_html__( 'Enter Your %1$sFont Awesome Pro Kit ID%2$s.', 'elementor-pro' ),
							'<a href="https://fontawesome.com/kits" target="_blank">',
							'</a>'
						),
					],
					'setting_args' => [
						'sanitize_callback' => [ $this, 'sanitize_kit_id_settings' ],
					],
				],
				'validate_api_data' => [
					'field_args' => [
						'type' => 'raw_html',
						'html' => sprintf( '<button data-action="%s" data-nonce="%s" class="button elementor-button-spinner" id="elementor_pro_fa_pro_validate_button">%s</button><br><p><span class="elementor-pro-fa_pro_data hidden"></span></p>',
							self::FA_KIT_ID_OPTION_NAME . '_fetch',
							wp_create_nonce( self::FA_KIT_ID_OPTION_NAME ),
							__( 'Validate Kit ID', 'elementor-pro' )
						),
					],
				],
			],
		] );
	}

	public function enqueue_kit_js() {
		wp_enqueue_script( 'font-awesome-pro', sprintf( self::FA_KIT_SCRIPT_LINK, $this->get_kit_id() ), [], ELEMENTOR_PRO_VERSION );
	}

	public function sanitize_kit_id_settings( $input ) {
		if ( empty( $input ) ) {
			delete_option( 'elementor_' . self::FA_KIT_ID_OPTION_NAME );
		}

		return $input;
	}

	protected function actions() {
		parent::actions();

		if ( is_admin() ) {
			add_action( 'elementor/admin/after_create_settings/' . Settings::PAGE_ID, [ $this, 'register_admin_fields' ], 100 );
		}

		if ( $this->get_kit_id() ) {
			add_filter( 'elementor/icons_manager/native', [ $this, 'replace_font_awesome_pro' ] );
			add_action( 'elementor/editor/after_enqueue_scripts', [ $this, 'enqueue_kit_js' ] );
			add_action( 'elementor/frontend/after_enqueue_scripts', [ $this, 'enqueue_kit_js' ] );
		}
	}
}
modules/assets-manager/asset-types/icons/icon-sets/fontastic.php000064400000004111150755004310021126 0ustar00<?php
namespace ElementorPro\Modules\AssetsManager\AssetTypes\Icons\IconSets;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Fontastic extends Icon_Set_Base {

	protected $data = '';
	protected $data_file = 'icons-reference.html';
	protected $stylesheet_file = 'styles.css';
	protected $allowed_zipped_files = [ 'icons-reference.html', 'styles.css', 'fonts/' ];
	protected $allowed_webfont_extensions = [ 'woff', 'ttf', 'svg', 'eot' ];

	protected function prepare() {
		$this->data = file_get_contents( $this->directory . $this->stylesheet_file );
	}

	public function get_type() {
		return esc_html__( 'Fontastic', 'elementor-pro' );
	}

	public function is_valid() {
		if ( ! file_exists( $this->directory . $this->data_file ) ) {
			return false; // missing data file
		}
		return true;
	}

	protected function extract_icon_list() {
		$pattern = '/\.' . $this->get_prefix() . '(.*)\:before\s\{/';
		preg_match_all( $pattern, $this->data, $icons_matches );
		if ( empty( $icons_matches[1] ) ) {
			return false; //  missing icons list
		}
		$icons = [];
		foreach ( $icons_matches[1] as $icon ) {
			$icons[] = $icon;
		}
		return $icons;
	}

	protected function get_url( $filename = '' ) {
		return $this->get_file_url( $this->dir_name . $filename );
	}

	protected function get_prefix() {
		static $set_prefix = null;
		if ( null === $set_prefix ) {
			$pattern = '/class\^="(.*)?"/';
			preg_match_all( $pattern, $this->data, $prefix );
			if ( ! isset( $prefix[1][0] ) ) {
				return false; //  missing css_prefix_text
			}
			$set_prefix = $prefix[1][0];
		}
		return $set_prefix;
	}

	public function get_name() {
		static $set_name = null;
		if ( null === $set_name ) {
			$pattern = '/font-family: "(.*)"/';
			preg_match_all( $pattern, $this->data, $name );
			if ( ! isset( $name[1][0] ) ) {
				return false; //  missing name
			}
			$set_name = $name[1][0];
		}
		return $set_name;
	}

	protected function get_stylesheet() {
		$name = $this->get_name();
		if ( ! $name ) {
			return false; //  missing name
		}
		return $this->get_url() . '/' . $this->stylesheet_file;
	}
}
modules/assets-manager/asset-types/icons/icon-sets/icomoon.php000064400000004120150755004310020577 0ustar00<?php
namespace ElementorPro\Modules\AssetsManager\AssetTypes\Icons\IconSets;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Icomoon extends Icon_Set_Base {

	protected $data_file = 'selection.json';
	protected $stylesheet_file = 'style.css';
	protected $allowed_zipped_files = [ 'selection.json', 'demo.html', 'Read Mw.txt', 'demo-files/', 'fonts/' ];
	protected $allowed_webfont_extensions = [ 'woff', 'ttf', 'svg', 'eot' ];

	protected function prepare() {
		return [];
	}

	public function get_type() {
		return esc_html__( 'Icomoon', 'elementor-pro' );
	}

	public function is_valid() {
		if ( ! file_exists( $this->directory . $this->data_file ) ) {
			return false; // missing data file
		}
		return true;
	}

	private function get_json() {
		return json_decode( file_get_contents( $this->directory . $this->data_file ) );
	}

	protected function extract_icon_list() {
		$config = $this->get_json();
		if ( ! isset( $config->icons ) ) {
			return false; //  missing icons list
		}
		$icons = [];
		foreach ( $config->icons as $icon ) {
			$icons[] = $icon->properties->name;
		}
		return $icons;
	}

	protected function get_url( $filename = '' ) {
		return $this->get_file_url( $this->get_name() . $filename );
	}

	protected function get_prefix() {
		$config = $this->get_json();
		if ( ! isset( $config->preferences->fontPref->prefix ) ) {
			return false; //  missing css_prefix_text
		}
		return $config->preferences->fontPref->prefix;
	}

	protected function get_display_prefix() {
		$config = $this->get_json();
		if ( ! isset( $config->preferences->fontPref->classSelector ) ) {
			return false; //  missing css_prefix_text
		}
		return str_replace( '.', '', $config->preferences->fontPref->classSelector );
	}

	public function get_name() {
		$config = $this->get_json();
		if ( ! isset( $config->metadata->name ) ) {
			return false; //  missing name
		}
		return $config->metadata->name;
	}

	protected function get_stylesheet() {
		$name = $this->get_name();
		if ( ! $name ) {
			return false; //  missing name
		}
		return $this->get_url( '/' . $this->stylesheet_file );
	}
}
modules/assets-manager/asset-types/icons/icon-sets/icon-set-base.php000064400000014255150755004310021577 0ustar00<?php
namespace ElementorPro\Modules\AssetsManager\AssetTypes\Icons\IconSets;

use ElementorPro\Core\Utils;
use ElementorPro\Modules\AssetsManager\AssetTypes\Icons\Custom_Icons;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

abstract class Icon_Set_Base {

	protected $dir_name = '';
	protected $directory = '';
	protected $data_file = '';
	protected $stylesheet_file = '';
	protected $allowed_zipped_files = [];
	protected $files_to_save = [];
	/**
	 * Webfont extensions.
	 *
	 * @var array
	 */
	protected $allowed_webfont_extensions = [ 'woff', 'woff2', 'ttf', 'svg', 'otf', 'eot' ];

	abstract protected function extract_icon_list();

	abstract protected function prepare();

	abstract protected function get_type();

	abstract public function get_name();

	private function is_path_dir( $path ) {
		return '/' === substr( $path, -1 );
	}

	private function is_file_allowed( $path_name ) {
		$check = $this->directory . $path_name;
		if ( ! file_exists( $check ) ) {
			return false;
		}
		if ( $this->is_path_dir( $path_name ) ) {
			return is_dir( $check );
		}
		return true;
	}

	/**
	 * is icon set
	 *
	 * validate that the current uploaded zip is in this icon set format
	 * @return bool
	 */
	public function is_icon_set() {
		foreach ( $this->allowed_zipped_files as $file ) {
			if ( ! $this->is_file_allowed( $file ) ) {
				return false;
			}
		}
		return true;
	}

	public function is_valid() {
		return false;
	}

	protected function get_display_prefix() {
		return '';
	}

	protected function get_prefix() {
		return '';
	}

	public function handle_new_icon_set() {
		return $this->prepare();
	}

	/**
	 * cleanup_temp_files
	 * @param \WP_Filesystem_Base $wp_filesystem
	 */
	protected function cleanup_temp_files( $wp_filesystem ) {
		$wp_filesystem->rmdir( $this->directory, true );
	}

	/**
	 * Gets the URL to uploaded file.
	 *
	 * @param $file_name
	 *
	 * @return string
	 */
	protected function get_file_url( $file_name ) {
		$wp_upload_dir = wp_upload_dir();
		$url = $wp_upload_dir['baseurl'] . '/elementor/custom-icons/' . $file_name;

		/**
		 * Upload file URL.
		 *
		 * Filters the URL to a file uploaded using Elementor forms.
		 *
		 * @since 1.0.0
		 *
		 * @param string $url       File URL.
		 * @param string $file_name File name.
		 */
		$url = apply_filters( 'elementor_pro/icons_manager/custom_icons/url', $url, $file_name );

		return $url;
	}

	protected function get_icon_sets_dir() {
		$wp_upload_dir = wp_upload_dir();
		$path = $wp_upload_dir['basedir'] . '/elementor/custom-icons';

		/**
		 * Upload file path.
		 *
		 * Filters the path for custom icons file uploads using custom icons.
		 *
		 * @param string $path .
		 */
		$path = apply_filters( 'elementor_pro/icons_manager/custom_icons/dir', $path );
		Utils::get_ensure_upload_dir( $path );
		return $path;
	}

	protected function get_ensure_upload_dir( $dir = '' ) {
		$path = $this->get_icon_sets_dir();
		if ( ! empty( $dir ) ) {
			$path .= '/' . $dir;
		}
		return Utils::get_ensure_upload_dir( $path );
	}

	public function move_files( $post_id ) {
		// @todo: save only needed files
		$wp_filesystem = Custom_Icons::get_wp_filesystem();
		$unique_name = $this->get_unique_name();
		$to = $this->get_ensure_upload_dir( $unique_name ) . '/';

		foreach ( $wp_filesystem->dirlist( $this->directory, false, true ) as $file ) {
			$full_path = $this->directory . $file['name'];
			if ( $wp_filesystem->is_dir( $full_path ) ) {
				$wp_filesystem->mkdir( $to . $file['name'] );

				foreach ( $file['files'] as $filename => $sub_file ) {
					$new_path = $to . $file['name'] . DIRECTORY_SEPARATOR . $filename;
					$wp_filesystem->move( $full_path . DIRECTORY_SEPARATOR . $filename, $new_path );
					$this->insert_attachment( $this->get_url() . '/' . $file['name'] . '/' . $filename, $new_path, $post_id );
				}
			} else {
				$new_path = $to . $file['name'];
				$wp_filesystem->move( $full_path, $new_path );
				$this->insert_attachment( $this->get_url() . '/' . $file['name'], $new_path, $post_id );
			}
		}

		$this->cleanup_temp_files( $wp_filesystem );
		update_post_meta( $post_id, '_elementor_icon_set_path', $to );
		$this->dir_name = $unique_name;
		$this->directory = $to;
	}

	private function insert_attachment( $file_url, $filename, $post_id = 0 ) {
		$attachment = [
			'file' => $filename,
			'guid' => $file_url,
			'post_parent' => $post_id,
			'post_type' => 'attachment',
		];
		$id = wp_insert_attachment( $attachment );
		return $id;
	}

	public function get_unique_name() {
		$name = $this->get_name();
		$basename = $name;
		$counter = 1;
		while ( ! $this->is_name_unique( $name ) ) {
			$name = $basename . '-' . $counter;
			$counter++;
		}
		return $name;
	}

	private function is_name_unique( $name ) {
		return ! is_dir( $this->get_icon_sets_dir() . '/' . $name );
	}

	abstract protected function get_url( $filename = '' );

	protected function get_stylesheet() {
		return '';
	}

	protected function get_version() {
		return '1.0.0';
	}

	protected function get_enqueue() {
		return false;
	}

	public function build_config() {
		$name = $this->get_name();
		$icon_set_config = [
			'name' => $name,
			'label' => ucwords( str_replace( [ '-', '_' ], ' ', $name ) ),
			'url' => $this->get_stylesheet(),
			'enqueue' => $this->get_enqueue(),
			'prefix' => $this->get_prefix(),
			'displayPrefix' => $this->get_display_prefix(),
			'labelIcon' => 'eicon eicon-folder',
			'ver' => $this->get_version(),
			'custom_icon_type' => $this->get_type(),
		];

		$icons = $this->extract_icon_list();
		$icon_set_config['count'] = count( $icons );
		$icon_set_config['icons'] = $icons;

		if ( 25 < $icon_set_config['count'] ) {
			$icon_set_config['fetchJson'] = $this->store_icon_list_json( $icons );
		}

		return $icon_set_config;
	}

	private function store_icon_list_json( $icons ) {
		$wp_filesystem = Custom_Icons::get_wp_filesystem();
		$json_file = $this->get_ensure_upload_dir( $this->dir_name ) . '/e_icons.js';
		$wp_filesystem->put_contents( $json_file, json_encode( [ 'icons' => $icons ] ) );
		return $this->get_url() . '/e_icons.js';
	}

	/**
	 * Icon Set Base constructor.
	 *
	 * @param $directory
	 */
	public function __construct( $directory ) {
		$this->directory = $directory;
		return $this->is_icon_set() ? $this : false;
	}
}
modules/assets-manager/asset-types/icons/icon-sets/fontello.php000064400000004126150755004310020764 0ustar00<?php
namespace ElementorPro\Modules\AssetsManager\AssetTypes\Icons\IconSets;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Fontello extends Icon_Set_Base {

	protected $data_file = 'config.json';
	protected $stylesheet_file = '';
	protected $allowed_zipped_files = [ 'config.json', 'demo.html', 'README.txt', 'LICENSE.txt', 'css/', 'font/' ];
	protected $allowed_webfont_extensions = [ 'woff', 'woff2', 'ttf', 'svg', 'otf' ];

	protected function prepare() {
		$this->remove_fontello_styling();
	}

	public function get_type() {
		return esc_html__( 'Fontello', 'elementor-pro' );
	}

	public function is_valid() {
		if ( ! file_exists( $this->directory . $this->data_file ) ) {
			return false; // missing data file
		}
		return true;
	}

	private function remove_fontello_styling() {
		$filename = $this->directory . 'css/' . $this->get_name() . '.css';
		$stylesheet = file_get_contents( $filename );
		$stylesheet = str_replace( [ 'margin-left: .2em;', 'margin-right: .2em;' ], [ '', '' ], $stylesheet );
		file_put_contents( $filename, $stylesheet );
	}

	private function get_json() {
		return json_decode( file_get_contents( $this->directory . $this->data_file ) );
	}

	protected function extract_icon_list() {
		$config = $this->get_json();
		if ( ! isset( $config->glyphs ) ) {
			return false; //  missing icons list
		}
		$icons = [];
		foreach ( $config->glyphs as $icon ) {
			$icons[] = $icon->css;
		}
		return $icons;
	}

	protected function get_url( $filename = '' ) {
		return $this->get_file_url( $this->dir_name . $filename );
	}

	protected function get_prefix() {
		$config = $this->get_json();
		if ( ! isset( $config->css_prefix_text ) ) {
			return false; //  missing css_prefix_text
		}
		return $config->css_prefix_text;
	}

	public function get_name() {
		$config = $this->get_json();
		if ( ! isset( $config->name ) ) {
			return false; //  missing name
		}
		return $config->name;
	}

	protected function get_stylesheet() {
		$name = $this->get_name();
		if ( ! $name ) {
			return false; //  missing name
		}
		return $this->get_url() . '/css/' . $name . '.css';
	}
}
modules/assets-manager/asset-types/icons/custom-icons.php000064400000033436150755004310017667 0ustar00<?php
namespace ElementorPro\Modules\AssetsManager\AssetTypes\Icons;

use Elementor\Core\Utils\Exceptions;
use ElementorPro\Modules\AssetsManager\Classes\Assets_Base;
use ElementorPro\Modules\AssetsManager\AssetTypes\Icons_Manager;
use Elementor\Core\Common\Modules\Ajax\Module as Ajax;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Custom_Icons extends  Assets_Base {

	const META_KEY = 'elementor_custom_icon_set_config';
	const OPTION_NAME = 'elementor_custom_icon_sets_config';

	public $current_post_id = 0;

	public function get_name() {
		return esc_html__( 'Custom Icons', 'elementor-pro' );
	}

	public function get_type() {
		return 'custom-icons';
	}

	public function add_meta_box() {
		add_meta_box(
			'elementor-custom-icons-metabox',
			__( 'Icon Set', 'elementor-pro' ),
			[ $this, 'render_metabox' ],
			Icons_Manager::CPT,
			'normal',
			'default'
		);
	}

	public static function get_icon_set_config( $id ) {
		return get_post_meta( $id, self::META_KEY, true );
	}

	public function render_metabox( $post ) {
		wp_enqueue_media();

		$save_data = self::get_icon_set_config( $post->ID );

		$fields = [
			[
				'id' => 'open_div',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'attributes' => [
					'class' => 'elementor-custom-icons-metabox',
				],
			],
			[
				'id' => 'zip_upload',
				'field_type' => 'dropzone',
				'accept' => 'zip,application/octet-stream,application/zip,application/x-zip,application/x-zip-compressed',
				'label' => false,
				'sub-label' => esc_html__( 'Your Fontello, IcoMoon or Fontastic .zip file', 'elementor-pro' ),
			],
			[
				'id' => 'close_div',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'close' => true,
			],
			[
				'id' => self::META_KEY,
				'name' => self::META_KEY,
				'field_type' => 'input',
				'input_type' => 'hidden',
				'label' => false,
				'value' => $save_data,
				'saved' => $save_data,
			],
			[
				'id' => Icons_Manager::CPT . '_nonce',
				'name' => Icons_Manager::CPT . '_nonce',
				'field_type' => 'input',
				'input_type' => 'hidden',
				'label' => false,
				'value' => wp_create_nonce( Icons_Manager::CPT ),
			],
		];

		foreach ( $fields as $field ) {
			$field['saved'] = isset( $field['saved'] ) ? $field['saved'] : '';
		}

		$this->print_metabox( $fields );
	}

	public function save_post_meta( $post_id, $post, $update ) {
		// If this is an autosave, our form has not been submitted,
		// so we don't want to do anything.
		if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
			return $post_id;
		}

		// Check the user's permissions.
		if ( ! current_user_can( 'edit_post', $post_id ) ) {
			return $post_id;
		}

		// Check if our nonce is set.
		if ( ! isset( $_POST[ Icons_Manager::CPT . '_nonce' ] ) ) {
			return $post_id;
		}

		// Verify that the nonce is valid.
		if ( ! wp_verify_nonce( $_POST[ Icons_Manager::CPT . '_nonce' ], Icons_Manager::CPT ) ) {
			return $post_id;
		}

		if ( ! isset( $_POST[ self::META_KEY ] ) ) {
			return delete_post_meta( $post_id, self::META_KEY );
		}

		// Sanitize a little
		$json = json_decode( stripslashes_deep( $_POST[ self::META_KEY ] ), true );
		foreach ( $json as $property => $value ) {
			$json[ $property ] = $this->sanitize_text_field_recursive( $value );
		}

		// All good save the files array
		update_post_meta( $post_id, self::META_KEY, json_encode( $json ) );

		// Force refresh of list in Options Table
		self::clear_icon_list_option();
	}

	public static function get_supported_icon_sets() {
		$icon_sets = [
			'fontastic' => __NAMESPACE__ . '\IconSets\Fontastic',
			'fontello' => __NAMESPACE__ . '\IconSets\Fontello',
			'icomoon' => __NAMESPACE__ . '\IconSets\Icomoon',
		];
		return array_merge( apply_filters( 'elementor_pro/icons_manager/custom_icons/additional_supported_types', [] ), $icon_sets );
	}

	private function get_active_icon_sets() {
		$icons = new \WP_Query( [
			'post_type' => Icons_Manager::CPT,
			'posts_per_page' => -1,
		] );
		$custom_icon_sets = [];
		foreach ( $icons->posts as $icon_set ) {
			$set_config = json_decode( self::get_icon_set_config( $icon_set->ID ), true );
			$set_config['custom_icon_post_id'] = $icon_set->ID;
			$set_config['label'] = $icon_set->post_title;
			$custom_icon_sets[ $set_config['name'] ] = $set_config;
		}
		return $custom_icon_sets;
	}

	/**
	 * get_wp_filesystem
	 * @return \WP_Filesystem_Base
	 */
	public static function get_wp_filesystem() {
		global $wp_filesystem;
		if ( empty( $wp_filesystem ) ) {
			require_once ABSPATH . '/wp-admin/includes/file.php';
			WP_Filesystem();
		}
		return $wp_filesystem;
	}

	private function upload() {
		$file = $_FILES['zip_upload'];
		$filename = $_FILES['zip_upload']['name'];
		$ext = pathinfo( $filename, PATHINFO_EXTENSION );
		if ( 'zip' !== $ext ) {
			unlink( $_FILES['zip_upload']['name'] );
			return new \WP_Error( 'unsupported_file', esc_html__( 'Only zip files are allowed', 'elementor-pro' ) );
		}
		if ( ! function_exists( 'wp_handle_upload' ) ) {
			require_once ABSPATH . 'wp-admin/includes/file.php';
		}
		// Handler upload archive file.
		$upload_result = wp_handle_upload( $file, [ 'test_form' => false ] );
		if ( isset( $upload_result['error'] ) ) {
			unlink( $_FILES['zip_upload']['name'] );
			return new \WP_Error( 'upload_error', $upload_result['error'] );
		}
		return $upload_result['file'];
	}

	private function extract_zip( $file, $to ) {
		// TODO: Move to core as a util.
		$valid_field_types = [
			'css',
			'eot',
			'html',
			'json',
			'otf',
			'svg',
			'ttf',
			'txt',
			'woff',
			'woff2',
		];

		$zip = new \ZipArchive();

		$zip->open( $file );

		$valid_entries = [];

		// phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
		for ( $i = 0; $i < $zip->numFiles; $i++ ) {
			$zipped_file_name = $zip->getNameIndex( $i );
			$dirname = pathinfo( $zipped_file_name, PATHINFO_DIRNAME );

			// Skip the OS X-created __MACOSX directory.
			if ( '__MACOSX/' === substr( $dirname, 0, 9 ) ) {
				continue;
			}

			$zipped_extension = pathinfo( $zipped_file_name, PATHINFO_EXTENSION );

			if ( in_array( $zipped_extension, $valid_field_types, true ) ) {
				$valid_entries[] = $zipped_file_name;
			}
		}

		$unzip_result = false;

		if ( ! empty( $valid_entries ) ) {
			$unzip_result = $zip->extractTo( $to, $valid_entries );
		}

		if ( ! $unzip_result ) {
			$unzip_result = new \WP_Error( 'error', esc_html__( 'Could not unzip or empty archive.', 'elementor-pro' ) );
		}

		@unlink( $file );

		return $unzip_result; // TRUE | WP_Error instance.
	}

	private function upload_and_extract_zip() {
		$zip_file = $this->upload();
		if ( is_wp_error( $zip_file ) ) {
			return $zip_file;
		}
		$filesystem = self::get_wp_filesystem();
		$extract_to = trailingslashit( get_temp_dir() . pathinfo( $zip_file, PATHINFO_FILENAME ) );

		$unzipped = $this->extract_zip( $zip_file, $extract_to );
		if ( is_wp_error( $unzipped ) ) {
			return $unzipped;
		}

		// Find the right folder.
		$source_files = array_keys( $filesystem->dirlist( $extract_to ) );
		if ( count( $source_files ) === 0 ) {
			return new \WP_Error( 'incompatible_archive', esc_html__( 'Incompatible archive', 'elementor-pro' ) );
		}

		if ( 1 === count( $source_files ) && $filesystem->is_dir( $extract_to . $source_files[0] ) ) {
			$directory = $extract_to . trailingslashit( $source_files[0] );
		} else {
			$directory = $extract_to;
		}
		return [
			'directory' => $directory,
			'extracted_to' => $extract_to,
		];
	}

	public function custom_icons_upload_handler( $data ) {
		if ( ! current_user_can( Icons_Manager::CAPABILITY ) ) {
			return new \WP_Error( Exceptions::FORBIDDEN, 'Access denied.' );
		}

		$this->current_post_id = $data['post_id'];
		$results = $this->upload_and_extract_zip();
		if ( is_wp_error( $results ) ) {
			return $results;
		}
		$supported_icon_sets = self::get_supported_icon_sets();
		foreach ( $supported_icon_sets as $key => $handler ) {
			/**
			 * @var IconSets\Icon_Set_Base $icon_set_handler
			 */
			$icon_set_handler = new $handler( $results['directory'] );

			if ( ! $icon_set_handler ) {
				continue;
			}
			if ( ! $icon_set_handler->is_valid() ) {
				continue;
			}
			$icon_set_handler->handle_new_icon_set();
			$name = $icon_set_handler->get_name();
			$icon_set_handler->move_files( $this->current_post_id );
			$config = $icon_set_handler->build_config();

			// Notify about duplicate prefix
			if ( self::icon_set_prefix_exists( $config['prefix'] ) ) {
				$config['duplicate_prefix'] = true;
			}
			return [
				'config' => $config,
			];
		}
		return new \WP_Error( 'unsupported_zip_format', esc_html__( 'The zip file provided is not supported!', 'elementor-pro' ) );
	}

	public function handle_delete_icon_set( $post_id ) {
		if ( Icons_Manager::CPT !== get_post_type( $post_id ) ) {
			return;
		}

		// remove all assets related to this icon set
		$attachments = get_attached_media( '', $post_id );

		foreach ( $attachments as $attachment ) {
			wp_delete_attachment( $attachment->ID, 'true' );
		}

		// remove icon set assets directory
		$icon_set_dir = get_post_meta( $post_id, '_elementor_icon_set_path', true );
		if ( ! empty( $icon_set_dir ) && is_dir( $icon_set_dir ) ) {
			$this::get_wp_filesystem()->rmdir( $icon_set_dir, true );
		}

		// Force refresh of list in Options Table
		self::clear_icon_list_option();
	}

	public static function clear_icon_list_option() {
		delete_option( self::OPTION_NAME );
	}

	public function display_post_states( $post_states, $post ) {
		if ( 'publish' !== $post->post_status || Icons_Manager::CPT !== $post->post_type ) {
			return $post_states;
		}

		$data = json_decode( self::get_icon_set_config( $post->ID ) );
		if ( ! empty( $data->count ) ) {
			echo sprintf( '<span class="font-variations-count">%d</span>', esc_html( $data->count ) );
		}

		return $post_states;
	}

	/**
	 * Render preview column in font manager admin listing
	 *
	 * @param $column
	 * @param $post_id
	 */
	public function render_columns( $column, $post_id ) {
		if ( 'icons_prefix' === $column ) {
			$data = json_decode( self::get_icon_set_config( $post_id ) );
			if ( ! empty( $data->prefix ) ) {
				echo '<pre>' . esc_html( '.' . $data->prefix ) . '</pre>';
			}
		}
	}

	/**
	 * Define which columns to display in font manager admin listing
	 *
	 * @param $columns
	 *
	 * @return array
	 */
	public function manage_columns( $columns ) {
		return [
			'cb' => '<input type="checkbox" />',
			'title' => esc_html__( 'Icon Set', 'elementor-pro' ),
			'icons_prefix' => esc_html__( 'CSS Prefix', 'elementor-pro' ),
		];
	}

	public function update_enter_title_here( $title, $post ) {
		if ( isset( $post->post_type ) && Icons_Manager::CPT === $post->post_type ) {
			return esc_html__( 'Enter Icon Set Name', 'elementor-pro' );
		}

		return $title;
	}

	public function register_ajax_actions( Ajax $ajax ) {
		$ajax->register_ajax_action( 'pro_assets_manager_custom_icon_upload', [ $this, 'custom_icons_upload_handler' ] );
	}

	public function register_icon_libraries_control( $additional_sets ) {
		return array_merge( $additional_sets, self::get_custom_icons_config() );
	}

	public function add_custom_icon_templates( $current_screen ) {
		if ( 'elementor_icons' !== $current_screen->id || 'post' !== $current_screen->base ) {
			return;
		}
		Plugin::elementor()->common->add_template( __DIR__ . '/templates.php' );
	}

	public function add_custom_icons_url( $config ) {
		$config['customIconsURL'] = admin_url( 'edit.php?post_type=' . Icons_Manager::CPT );
		return $config;
	}

	public static function get_custom_icons_config() {
		$config = get_option( self::OPTION_NAME, false );
		if ( false === $config ) {
			$icons = new \WP_Query( [
				'post_type' => Icons_Manager::CPT,
				'posts_per_page' => -1,
				'post_status' => 'publish',
			] );
			$config = [];
			foreach ( $icons->posts as $icon_set ) {
				$set_config = json_decode( self::get_icon_set_config( $icon_set->ID ), true );
				$set_config['custom_icon_post_id'] = $icon_set->ID;
				$set_config['label'] = $icon_set->post_title;
				if ( isset( $set_config['fetchJson'] ) ) {
					unset( $set_config['icons'] );
				}
				$config[ $set_config['name'] ] = $set_config;
			}
			update_option( self::OPTION_NAME, $config );
		}
		return $config;
	}

	public static function icon_set_prefix_exists( $prefix ) {
		$config = self::get_custom_icons_config();
		if ( empty( $config ) ) {
			return false;
		}
		foreach ( $config as $icon_set_name => $icon_config ) {
			if ( $prefix === $icon_config['prefix'] ) {
				return true;
			}
		}
		return false;
	}

	public function transition_post_status( $new_status, $old_status, $post ) {
		if ( Icons_Manager::CPT !== $post->post_type ) {
			return;
		}

		if ( 'publish' === $old_status && 'publish' !== $new_status ) {
			$this->clear_icon_list_option();
		}
	}

	protected function actions() {

		parent::actions();
		if ( is_admin() ) {
			add_action( 'add_meta_boxes_' . Icons_Manager::CPT, [ $this, 'add_meta_box' ] );
			add_action( 'save_post_' . Icons_Manager::CPT, [ $this, 'save_post_meta' ], 10, 3 );
			add_filter( 'display_post_states', [ $this, 'display_post_states' ], 10, 2 );
			add_action( 'manage_' . Icons_Manager::CPT . '_posts_custom_column', [ $this, 'render_columns' ], 10, 2 );
			add_filter( 'enter_title_here', [ $this, 'update_enter_title_here' ], 10, 2 );
			add_filter( 'manage_' . Icons_Manager::CPT . '_posts_columns', [ $this, 'manage_columns' ], 100 );
			add_action( 'current_screen', [ $this, 'add_custom_icon_templates' ] );
		}

		add_action( 'transition_post_status', [ $this, 'transition_post_status' ], 10, 3 );
		add_action( 'before_delete_post', [ $this, 'handle_delete_icon_set' ] );
		add_filter( 'elementor/icons_manager/additional_tabs', [ $this, 'register_icon_libraries_control' ] );
		add_filter( 'elementor/editor/localize_settings', [ $this, 'add_custom_icons_url' ] );

		// Ajax.
		add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] );
	}
}
modules/assets-manager/asset-types/icons/templates.php000064400000002506150755004310017234 0ustar00<?php

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}
?>
<script type="text/template" id="elementor-custom-icons-template-footer">
	<div class="elementor-icon-set-footer"><?php echo esc_html__( 'Created on', 'elementor-pro' ); ?>: {{day}}/{{mm}}/{{year}}, {{hour}}:{{minute}}</div>
</script>

<script type="text/template" id="elementor-custom-icons-template-header">
	<div class="elementor-icon-set-header">
		<div><span class="elementor-icon-set-header-meta"><?php echo esc_html__( 'Name', 'elementor-pro' ); ?>: </span><span class="elementor-icon-set-header-meta-value">{{name}}</span></div>
		<div><span class="elementor-icon-set-header-meta"><?php echo esc_html__( 'CSS Prefix', 'elementor-pro' ); ?>: </span><span class="elementor-icon-set-header-meta-value">{{prefix}}</span></div>
		<div><span class="elementor-icon-set-header-meta"><?php echo esc_html__( 'Icons Count', 'elementor-pro' ); ?>: </span><span class="elementor-icon-set-header-meta-value">{{count}}</span></div>
	</div>
</script>

<script type="text/template" id="elementor-custom-icons-template-duplicate-prefix">
	<div class="elementor-icon-set-duplicate-prefix"><?php echo esc_html__( 'The Icon Set prefix already exists in your site. In order to avoid conflicts we recommend to use a unique prefix per Icon Set.', 'elementor-pro' ); ?></div>
</script>
modules/assets-manager/asset-types/fonts/typekit-fonts.php000064400000017071150755004310020077 0ustar00<?php
namespace ElementorPro\Modules\AssetsManager\AssetTypes\Fonts;

use ElementorPro\Modules\AssetsManager\Classes\Font_Base;
use Elementor\Settings;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Typekit_Fonts extends Font_Base {

	const TYPEKIT_KIT_ID_OPTION_NAME = 'typekit-kit-id';

	const TYPEKIT_FONTS_OPTION_NAME = 'elementor_typekit-data';

	const TYPEKIT_FONTS_LINK = 'https://use.typekit.net/%s.css';

	protected $kit_enqueued = false;

	protected $error = '';

	private $api_base = 'https://typekit.com/api/v1/json/kits';

	private function get_typekit_fonts() {
		return get_option( self::TYPEKIT_FONTS_OPTION_NAME, false );
	}

	private function get_typekit_kit_id() {
		return get_option( 'elementor_' . self::TYPEKIT_KIT_ID_OPTION_NAME, false );
	}

	public function get_name() {
		return esc_html__( 'Adobe Fonts (TypeKit)', 'elementor-pro' );
	}

	public function get_type() {
		return 'typekit';
	}

	private function fetch_typekit_data() {
		$kit_id = $this->get_typekit_kit_id();
		if ( ! $kit_id ) {
			return false;
		}

		$response = wp_remote_get( $this->api_base . '/' . $kit_id . '/published' );

		// Response is a WP_Error object
		if ( is_wp_error( $response ) ) {
			return false;
		}

		// Response code is not success
		$response_code = (int) wp_remote_retrieve_response_code( $response );
		$response_body = json_decode( wp_remote_retrieve_body( $response ) );
		if ( 200 !== $response_code ) {
			switch ( $response_code ) {
				case 404:
					$this->error = esc_html__( 'Project not found.', 'elementor-pro' );
					break;
				default:
					$this->error = $response_code;
					if ( isset( $response_body->errors ) ) {
						$this->error .= ': ' . implode( ', ', $response_body->errors );
					}
					break;
			}

			return false;
		}

		if ( ! $response_body ) {
			$this->error = esc_html__( 'No project data was returned.', 'elementor-pro' );

			return false;
		}

		/*
		 * Expected Json response example
		 * {
		 *    "kit": {
		 *        "id": "nmm7qvq",
		 *        "families": [
		 *             {
		 *                 "id": "hmqz",
		 *                 "name": "Adobe Caslon Pro",
		 *                 "slug": "adobe-caslon-pro",
		 *	               "css_names": [
		 *                    "adobe-caslon-pro"
		 * 	                ],
		 *                 "css_stack": "\"adobe-caslon-pro\",serif",
		 *                 "variations": [ "n6","i6","i7" ]
		 * 	            }
		 * 	        ]
		 * 	    }
		 * 	}
		 */
		if ( ! is_object( $response_body ) || ! isset( $response_body->kit ) || ! isset( $response_body->kit->families ) || ! is_array( $response_body->kit->families ) ) {
			return false;
		}

		$families = [];
		foreach ( $response_body->kit->families as $font_family ) {
			$font_css = isset( $font_family->css_names[0] ) ? $font_family->css_names[0] : $font_family->slug;
			$families[ $font_css ] = $this->get_type();
		}
		update_option( self::TYPEKIT_FONTS_OPTION_NAME, $families );

		return $families;
	}

	private function get_kit_fonts() {
		$typekit_fonts = $this->get_typekit_fonts();
		if ( ! $typekit_fonts ) {
			$typekit_fonts = $this->fetch_typekit_data();
		}

		return $typekit_fonts;
	}

	/**
	 * @param array $data
	 *
	 * @return array
	 * @throws \Exception
	 */
	public function handle_panel_request( array $data ) {
		$font_family = sanitize_text_field( $data['font'] );

		$typekit_fonts = $this->get_kit_fonts();

		if ( ! $typekit_fonts || ! is_array( $typekit_fonts ) ) {
			throw new \Exception( esc_html__( 'Error with TypeKit fonts', 'elementor-pro' ) );
		}

		if ( ! in_array( $font_family, array_keys( $typekit_fonts ) ) ) {
			throw new \Exception( esc_html__( 'Font missing in Project', 'elementor-pro' ) );
		}

		$kit_id = $this->get_typekit_kit_id();

		return [ 'font_url' => sprintf( self::TYPEKIT_FONTS_LINK, $kit_id ) ];
	}

	public function sanitize_kit_id_settings( $input ) {
		if ( empty( $input ) ) {
			delete_option( self::TYPEKIT_FONTS_OPTION_NAME );
		}

		return $input;
	}

	public function register_admin_fields( Settings $settings ) {
		$fonts = $this->get_typekit_fonts();
		$button_label = esc_html__( 'Get Project ID', 'elementor-pro' );
		$found_label = '<span class="elementor-pro-typekit-count">{{count}}</span> ' . esc_html__( 'Fonts Families Found in project. Please note that typekit takes a few minutes to sync once you publish or update a project.', 'elementor-pro' );
		if ( $fonts && is_array( $fonts ) ) {
			$button_label = esc_html__( 'Sync Project', 'elementor-pro' );
		}
		$settings->add_section( Settings::TAB_INTEGRATIONS, 'typekit', [
			'callback' => function() {
				echo '<hr><h2>' . esc_html__( 'Adobe Fonts (TypeKit)', 'elementor-pro' ) . '</h2>';
				esc_html_e( 'TypeKit partners with the world’s leading type foundries to bring thousands of beautiful fonts to designers every day.', 'elementor-pro' );
			},
			'fields' => [
				self::TYPEKIT_KIT_ID_OPTION_NAME => [
					'label' => esc_html__( 'Project ID', 'elementor-pro' ),
					'field_args' => [
						'type' => 'text',
						'desc' => sprintf(
							/* translators: 1: Link open tag, 2: Link closing tag. */
							esc_html__( 'Enter Your %1$sTypeKit Project ID%2$s.', 'elementor-pro' ),
							'<a href="https://fonts.adobe.com/typekit" target="_blank">',
							'</a>'
						),
					],
					'setting_args' => [
						'sanitize_callback' => [ $this, 'sanitize_kit_id_settings' ],
					],
				],
				'validate_api_data' => [
					'field_args' => [
						'type' => 'raw_html',
						'html' => sprintf( '<button data-found="%s" data-action="%s" data-nonce="%s" class="button elementor-button-spinner" id="elementor_pro_typekit_validate_button">%s</button><br><p><span class="elementor-pro-typekit-data hidden"></span></p>',
							esc_html( $found_label ),
							self::TYPEKIT_KIT_ID_OPTION_NAME . '_fetch',
							wp_create_nonce( self::TYPEKIT_KIT_ID_OPTION_NAME ),
							$button_label
						),
					],
				],
			],
		] );
	}

	public function register_fonts_in_control( $fonts ) {
		$typekit_fonts = $this->get_kit_fonts();
		if ( $typekit_fonts ) {
			return array_merge( $typekit_fonts, $fonts );
		}

		return $fonts;
	}

	public function print_font_link( $font ) {
		if ( $this->kit_enqueued ) {
			return;
		}
		if ( $this->is_font_in_kit( $font ) ) {
			$kit_url = sprintf( self::TYPEKIT_FONTS_LINK, $this->get_typekit_kit_id() );
			echo '<link rel="stylesheet" type="text/css" href="' . esc_url( $kit_url ) . '">';
			$this->kit_enqueued = true;
		}
	}

	private function is_font_in_kit( $font ) {
		$kit_fonts = $this->get_kit_fonts();
		if ( ! $kit_fonts || ! is_array( $kit_fonts ) ) {
			return false;
		}

		return in_array( $font, array_keys( $kit_fonts ) );
	}

	public function integrations_admin_ajax_handler() {
		check_ajax_referer( self::TYPEKIT_KIT_ID_OPTION_NAME, '_nonce' );
		if ( ! isset( $_POST['kit_id'] ) ) {
			wp_send_json_error();
		}
		$fonts = [];
		try {
			update_option( 'elementor_' . self::TYPEKIT_KIT_ID_OPTION_NAME, sanitize_text_field( $_POST['kit_id'] ) );
			$fonts = $this->fetch_typekit_data();
		} catch ( \Exception $exception ) {
			wp_send_json_error();
		}
		wp_send_json_success( [
			'fonts' => $fonts,
			'count' => count( $fonts ),
		] );
	}

	protected function actions() {
		parent::actions();
		if ( is_admin() ) {
			add_action( 'elementor/admin/after_create_settings/' . Settings::PAGE_ID, [ $this, 'register_admin_fields' ], 100 );
		}
		add_filter( 'elementor/fonts/additional_fonts', [ $this, 'register_fonts_in_control' ] );
		add_action( 'elementor/fonts/print_font_links/' . $this->get_type(), [ $this, 'print_font_link' ] );
		add_action( 'wp_ajax_elementor_pro_admin_fetch_fonts', [ $this, 'integrations_admin_ajax_handler' ] );
	}
}
modules/assets-manager/asset-types/fonts/custom-fonts.php000064400000033203150755004310017713 0ustar00<?php
namespace ElementorPro\Modules\AssetsManager\AssetTypes\Fonts;

use Elementor\Core\Files\Assets\Files_Upload_Handler;
use Elementor\Core\Files\CSS\Base;
use ElementorPro\Modules\AssetsManager\Classes;
use ElementorPro\Modules\AssetsManager\AssetTypes\Fonts_Manager;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Custom_Fonts extends Classes\Font_Base {

	const FONT_META_KEY = 'elementor_font_files';
	const FONT_FACE_META_KEY = 'elementor_font_face';

	public function get_name() {
		return esc_html__( 'Custom Fonts', 'elementor-pro' );
	}

	public function get_type() {
		return 'custom';
	}

	private function get_file_types() {
		return [
			'woff' => 'font/woff|application/font-woff|application/x-font-woff|application/octet-stream',
			'woff2' => 'font/woff2|application/octet-stream|font/x-woff2',
			'ttf' => 'application/x-font-ttf|application/octet-stream|font/ttf',
			'svg' => 'image/svg+xml|application/octet-stream|image/x-svg+xml',
			'eot' => 'application/vnd.ms-fontobject|application/octet-stream|application/x-vnd.ms-fontobject',
		];
	}

	public function add_meta_box() {
		add_meta_box(
			'elementor-font-' . $this->get_type() . 'metabox',
			__( 'Manage Your Font Files', 'elementor-pro' ),
			[ $this, 'render_metabox' ],
			Fonts_Manager::CPT,
			'normal',
			'default'
		);
	}

	public function render_metabox( $post ) {
		wp_enqueue_media();

		$fields = [
			[
				'id' => 'open_div',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'attributes' => [
					'class' => 'repeater-content-top',
				],
			],
			[
				'id' => 'font_weight',
				'field_type' => 'select',
				'label' => esc_html__( 'Weight', 'elementor-pro' ) . ':',
				'extra_attributes' => [
					'class' => 'font_weight',
				],
				'options' => $this->get_font_weight_options(),
			],
			[
				'id' => 'font_style',
				'field_type' => 'select',
				'label' => esc_html__( 'Style', 'elementor-pro' ) . ':',
				'extra_attributes' => [
					'class' => 'font_style',
				],
				'options' => $this->get_font_style_options(),
			],
			[
				'id' => 'preview_label',
				'field_type' => 'html',
				'label' => false,
				'raw_html' => sprintf( '<div class="inline-preview">%s</div>', esc_html__( 'Elementor Is Making the Web Beautiful!!!', 'elementor-pro' ) ),
			],
			[
				'id' => 'toolbar',
				'field_type' => 'toolbar',
				'label' => false,
			],
			[
				'id' => 'close_div',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'close' => true,
			],
			[
				'id' => 'open_div',
				'field_type' => 'html_tag',
				'label' => false,
				'tag' => 'div',
				'attributes' => [
					'class' => 'repeater-content-bottom',
				],
			],
		];

		foreach ( $this->get_file_types() as $type => $mine ) {
			$fields[] = [
				'id' => $type,
				'field_type' => 'file',
				'mine' => str_replace( '|', ',', $mine ),
				'ext' => $type,
				/* translators: %s: Font file format. */
				'label' => sprintf( esc_html__( '%s File', 'elementor-pro' ), strtoupper( $type ) ),
				/* translators: %s: Font file format. */
				'box_title' => sprintf( esc_html__( 'Upload font .%s file', 'elementor-pro' ), $type ),
				/* translators: %s: Font file format. */
				'box_action' => sprintf( esc_html__( 'Select .%s file', 'elementor-pro' ), $type ),
				'preview_anchor' => 'none',
				'description' => $this->get_file_type_description( $type ),
			];
		}

		$fields[] = [
			'id' => 'close_div',
			'field_type' => 'html_tag',
			'label' => false,
			'tag' => 'div',
			'close' => true,
		];

		$font_data = get_post_meta( $post->ID, self::FONT_META_KEY, true );

		$repeater = [
			'fields' => $fields,
			'id' => 'font_face',
			'label' => false,
			'add_label' => esc_html__( 'Add Font Variation', 'elementor-pro' ),
			'toggle_title' => esc_html__( 'Edit', 'elementor-pro' ),
			'remove_title' => esc_html__( 'Delete', 'elementor-pro' ),
			'field_type' => 'repeater',
			'row_label' => [
				'default' => 'Settings',
				'selector' => '.font_weight',
			],
			'saved' => $font_data,
		];

		$this->print_metabox( [ $repeater ] );

		// PHPCS - Dedicated for CSS.
		printf( '<style>%s</style>', get_post_meta( $post->ID, self::FONT_FACE_META_KEY, true ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}

	public function save_meta( $post_id, $data ) {
		if ( ! isset( $data['font_face'] ) || ! is_array( $data['font_face'] ) ) {
			return;
		}

		// Sanitize a little
		$font_face = [];
		foreach ( $data['font_face'] as $font_data ) {
			$font_face[] = $this->sanitize_text_field_recursive( $font_data );
		}

		// All good save the files array
		update_post_meta( $post_id, self::FONT_META_KEY, $font_face );

		// Save font face
		update_post_meta( $post_id, self::FONT_FACE_META_KEY, $this->generate_font_face( $post_id ) );
	}

	public function upload_mimes( $mine_types ) {
		if ( current_user_can( Fonts_Manager::CAPABILITY ) && $this->is_elementor_font_upload() ) {
			foreach ( $this->get_file_types() as $type => $mine ) {
				if ( ! isset( $mine_types[ $type ] ) ) {
					$mine_types[ $type ] = $mine;
				}
			}
		}

		return $mine_types;
	}

	public function wp_handle_upload_prefilter( $file ) {
		if ( ! $this->is_elementor_font_upload() ) {
			return $file;
		}

		$ext = pathinfo( $file['name'], PATHINFO_EXTENSION );

		if ( 'svg' !== $ext ) {
			return $file;
		}

		/**
		 * @var \Elementor\Core\Files\Assets\Svg\Svg_Handler $svg_handler;
		 */
		$svg_handler = Plugin::elementor()->assets_manager->get_asset( 'svg-handler' );

		if ( Files_Upload_Handler::file_sanitizer_can_run() && ! $svg_handler->sanitize_svg( $file['tmp_name'] ) ) {
			$file['error'] = esc_html__( 'Invalid SVG Format, file not uploaded for security reasons', 'elementor-pro' );
		}

		return $file;
	}

	private function is_elementor_font_upload() {
		return isset( $_POST['uploadTypeCaller'] ) && 'elementor-admin-font-upload' === $_POST['uploadTypeCaller']; // phpcs:ignore
	}

	/**
	 * A workaround for upload validation which relies on a PHP extension (fileinfo) with inconsistent reporting behaviour.
	 * ref: https://core.trac.wordpress.org/ticket/39550
	 * ref: https://core.trac.wordpress.org/ticket/40175
	 */
	public function filter_fix_wp_check_filetype_and_ext( $data, $file, $filename, $mimes ) {
		if ( ! empty( $data['ext'] ) && ! empty( $data['type'] ) ) {
			return $data;
		}

		$registered_file_types = $this->get_file_types();
		$filetype = wp_check_filetype( $filename, $mimes );

		if ( ! isset( $registered_file_types[ $filetype['ext'] ] ) ) {
			return $data;
		}
		// Fix incorrect file mime type
		$filetype['type'] = explode( '|', $filetype['type'] )[0];

		return [
			'ext' => $filetype['ext'],
			'type' => $filetype['type'],
			'proper_filename' => $data['proper_filename'],
		];
	}

	public function generate_font_face( $post_id ) {
		$saved = get_post_meta( $post_id, self::FONT_META_KEY, true );
		if ( ! is_array( $saved ) ) {
			return false;
		}

		$font_family = get_the_title( $post_id );
		$font_face = '';

		foreach ( $saved as $font_data ) {
			$font_face .= $this->get_font_face_from_data( $font_family, $font_data ) . PHP_EOL;
		}

		return $font_face;
	}

	public function get_font_face_from_data( $font_family, $data ) {
		$src = [];
		foreach ( [ 'eot', 'woff2', 'woff', 'ttf', 'svg' ] as $type ) {
			if ( ! isset( $data[ $type ] ) || ! isset( $data[ $type ]['url'] ) || empty( $data[ $type ]['url'] ) ) {
				continue;
			}

			if ( 'svg' === $type ) {
				$data[ $type ]['url'] .= '#' . str_replace( ' ', '', $font_family );
			}

			$src[] = $this->get_font_src_per_type( $type, $data[ $type ]['url'] );
		}

		$font_face = '@font-face {' . PHP_EOL;
		$font_face .= "\tfont-family: '" . $font_family . "';" . PHP_EOL;
		$font_face .= "\tfont-style: " . $data['font_style'] . ';' . PHP_EOL;
		$font_face .= "\tfont-weight: " . $data['font_weight'] . ';' . PHP_EOL;
		$font_face .= "\tfont-display: " . apply_filters( 'elementor_pro/custom_fonts/font_display', 'auto', $font_family, $data ) . ';' . PHP_EOL;

		if ( isset( $data['eot'] ) && isset( $data['eot']['url'] ) && ! empty( $data['eot']['url'] ) ) {
			$font_face .= "\tsrc: url('" . esc_attr( $data['eot']['url'] ) . "');" . PHP_EOL;
		}

		$font_face .= "\tsrc: " . implode( ',' . PHP_EOL . "\t\t", $src ) . ';' . PHP_EOL . '}';

		return $font_face;
	}

	private function get_font_src_per_type( $type, $url ) {
		$src = 'url(\'' . esc_attr( $url ) . '\') ';
		switch ( $type ) {
			case 'woff':
			case 'woff2':
			case 'svg':
				$src .= 'format(\'' . $type . '\')';
				break;

			case 'ttf':
				$src .= 'format(\'truetype\')';
				break;

			case 'eot':
				$src = 'url(\'' . esc_attr( $url ) . '?#iefix\') format(\'embedded-opentype\')';
				break;
		}

		return $src;
	}

	public function get_fonts( $force = false ) {
		$fonts = get_option( self::FONTS_OPTION_NAME, false );
		if ( $fonts && ! $force ) {
			return $fonts;
		}

		add_filter( 'posts_fields', [ $this, 'posts_fields' ] );
		$fonts = new \WP_Query( [
			'post_type' => Fonts_Manager::CPT,
			'posts_per_page' => -1,
		] );
		remove_filter( 'posts_fields', [ $this, 'posts_fields' ] );

		$new_fonts = [];
		foreach ( $fonts->posts as $font ) {
			$new_fonts[ $font->post_title ] = 'custom';
		}

		update_option( self::FONTS_OPTION_NAME, $new_fonts );

		return $new_fonts;
	}

	private function get_font_face_by_font_family( $font_family ) {
		global $wpdb;

		$id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type = %s LIMIT 1", $font_family, Fonts_Manager::CPT ) );

		if ( $id ) {
			return get_post_meta( $id, self::FONT_FACE_META_KEY, true );
		}

		return '';
	}

	public function render_preview_column( $post_id ) {
		$font_face = get_post_meta( $post_id, self::FONT_FACE_META_KEY, true );

		if ( ! $font_face ) {
			return;
		}

		// PHPCS - the variable $font_face is CSS. the property $this->font_preview_phrase is safe.
		printf( '<style>%s</style><span style="font-family: \'%s\';">%s</span>', $font_face, esc_html( get_the_title( $post_id ) ), $this->font_preview_phrase ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}

	public function get_font_family_type( $post_id, $post_title ) {
		return [
			$post_title => $this->get_type(),
		];
	}

	public function get_font_data( $post_id, $post_title ) {
		return [
			$post_title => [
				'font_face' => $this->generate_font_face( $post_id ),
				'post_id' => $post_id,
			],
		];
	}

	public function get_font_variations_count( $post_id ) {
		$data = get_post_meta( $post_id, self::FONT_META_KEY, true );
		if ( ! empty( $data ) && count( $data ) > 0 ) {
			echo sprintf( '<span class="font-variations-count">%d</span>', count( $data ) );
		}
	}

	/**
	 * @param string $font_family
	 * @param array  $font_data
	 * @param Base   $post_css
	 */
	public function enqueue_font( $font_family, $font_data, $post_css ) {
		$font_faces = isset( $font_data['font_face'] ) ? $font_data['font_face'] : $this->get_font_face_by_font_family( $font_family );
		// Add a css comment
		$custom_css = '/* Start Custom Fonts CSS */' . $font_faces . '/* End Custom Fonts CSS */';
		$post_css->get_stylesheet()->add_raw_css( $custom_css );
	}

	/**
	 * @param array $data
	 *
	 * @return array
	 * @throws \Exception
	 */
	public function handle_panel_request( array $data ) {
		$font_family = sanitize_text_field( $data['font'] );

		$font_face = $this->get_font_face_by_font_family( $font_family );

		if ( empty( $font_face ) ) {
			/* translators: %s: Font family. */
			$error_message = sprintf( esc_html__( 'Font %s was not found.', 'elementor-pro' ), $font_family );

			throw new \Exception( $error_message );
		}

		return [
			'font_face' => $font_face,
		];
	}

	private function get_font_style_options() {
		return [
			'normal' => esc_html__( 'Normal', 'elementor-pro' ),
			'italic' => esc_html__( 'Italic', 'elementor-pro' ),
			'oblique' => esc_html__( 'Oblique', 'elementor-pro' ),
		];
	}

	private function get_font_weight_options() {
		return [
			'normal' => esc_html__( 'Normal', 'elementor-pro' ),
			'bold' => esc_html__( 'Bold', 'elementor-pro' ),
			'100' => '100',
			'200' => '200',
			'300' => '300',
			'400' => '400',
			'500' => '500',
			'600' => '600',
			'700' => '700',
			'800' => '800',
			'900' => '900',
		];
	}

	private function get_file_type_description( $file_type ) {
		$descriptions = [
			'eot' => esc_html__( 'Embedded OpenType, Used by IE6-IE9 Browsers', 'elementor-pro' ),
			'woff2' => esc_html__( 'The Web Open Font Format 2, Used by Super Modern Browsers', 'elementor-pro' ),
			'woff' => esc_html__( 'The Web Open Font Format, Used by Modern Browsers', 'elementor-pro' ),
			'ttf' => esc_html__( 'TrueType Fonts, Used for better supporting Safari, Android, iOS', 'elementor-pro' ),
			'svg' => esc_html__( 'SVG fonts allow SVG to be used as glyphs when displaying text, Used by Legacy iOS', 'elementor-pro' ),
		];

		return isset( $descriptions[ $file_type ] ) ? $descriptions[ $file_type ] : '';
	}

	private function replace_urls( $rows_affected, $from, $to ) {
		global $wpdb;

		$rows_affected = $wpdb->query(
			"UPDATE {$wpdb->postmeta} " .
			$wpdb->prepare( 'SET `meta_value` = REPLACE(`meta_value`, %s, %s) ', $from, $to ) .
			'WHERE `meta_key` = \'' . self::FONT_FACE_META_KEY . '\''
		);

		return $rows_affected;
	}

	protected function actions() {
		parent::actions();

		add_filter( 'elementor/tools/replace-urls', function( $rows_affected, $from, $to ) {
			return $this->replace_urls( $rows_affected, $from, $to );
		}, 10, 3 );
		add_filter( 'wp_check_filetype_and_ext', [ $this, 'filter_fix_wp_check_filetype_and_ext' ], 10, 4 );
		add_filter( 'wp_handle_upload_prefilter', [ $this, 'wp_handle_upload_prefilter' ] );
		add_filter( 'upload_mimes', [ $this, 'upload_mimes' ] );
		add_action( 'add_meta_boxes_' . Fonts_Manager::CPT, [ $this, 'add_meta_box' ] );
	}
}
modules/assets-manager/asset-types/icons-manager.php000064400000013504150755004310016646 0ustar00<?php
namespace ElementorPro\Modules\AssetsManager\AssetTypes;

use ElementorPro\Modules\AssetsManager\Classes;
use Elementor\Settings;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Icons_Manager {

	const CAPABILITY = 'manage_options';

	const CPT = 'elementor_icons';

	const FONTS_OPTION_NAME = 'elementor_fonts_manager_fonts';

	const FONTS_NAME_TYPE_OPTION_NAME = 'elementor_fonts_manager_font_types';

	private $post_type_object;

	private $enqueued_fonts = [];

	protected $icon_types = [];

	/**
	 * get a font type object for a given type
	 *
	 * @param null $type
	 *
	 * @return array|bool|\ElementorPro\Modules\AssetsManager\Classes\Font_Base
	 */
	public function get_icon_type_object( $type = null ) {
		if ( null === $type ) {
			return $this->icon_types;
		}

		if ( isset( $this->icon_types[ $type ] ) ) {
			return $this->icon_types[ $type ];
		}

		return false;
	}

	/**
	 * Add a font type to the font manager
	 *
	 * @param string            $icon_type
	 * @param Classes\Assets_Base $instance
	 */
	public function add_icon_type( $icon_type, $instance ) {
		$this->icon_types[ $icon_type ] = $instance;
	}

	/**
	 * Register elementor icon set custom post type
	 */
	public function register_post_type() {
		$labels = [
			'name' => _x( 'Custom Icons', 'CPT Name', 'elementor-pro' ),
			'singular_name' => _x( 'Icon Set', 'CPT Singular Name', 'elementor-pro' ),
			'add_new' => esc_html__( 'Add New', 'elementor-pro' ),
			'add_new_item' => esc_html__( 'Add New Icon Set', 'elementor-pro' ),
			'edit_item' => esc_html__( 'Edit Icon Set', 'elementor-pro' ),
			'new_item' => esc_html__( 'New Icon Set', 'elementor-pro' ),
			'all_items' => esc_html__( 'All Icons', 'elementor-pro' ),
			'view_item' => esc_html__( 'View Icon', 'elementor-pro' ),
			'search_items' => esc_html__( 'Search Icon Set', 'elementor-pro' ),
			'not_found' => esc_html__( 'No icons found', 'elementor-pro' ),
			'not_found_in_trash' => esc_html__( 'No icons found in trash', 'elementor-pro' ),
			'parent_item_colon' => '',
			'menu_name' => _x( 'Custom Icons', 'CPT Menu Name', 'elementor-pro' ),
		];

		$args = [
			'labels' => $labels,
			'public' => false,
			'rewrite' => false,
			'show_ui' => true,
			'show_in_menu' => false,
			'show_in_nav_menus' => false,
			'exclude_from_search' => true,
			'capability_type' => 'post',
			'hierarchical' => false,
			'supports' => [ 'title' ],
		];

		$this->post_type_object = register_post_type( self::CPT, $args );
	}

	public function post_updated_messages( $messages ) {
		$messages[ self::CPT ] = [
			0 => '', // Unused. Messages start at index 1.
			1 => esc_html__( 'Icon Set updated.', 'elementor-pro' ),
			2 => esc_html__( 'Custom field updated.', 'elementor-pro' ),
			3 => esc_html__( 'Custom field deleted.', 'elementor-pro' ),
			4 => esc_html__( 'Icon Set updated.', 'elementor-pro' ),
			/* translators: %s: date and time of the revision */
			5 => isset( $_GET['revision'] ) ? sprintf( esc_html__( 'Icon Set restored to revision from %s', 'elementor-pro' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
			6 => esc_html__( 'Icon Set saved.', 'elementor-pro' ),
			7 => esc_html__( 'Icon Set saved.', 'elementor-pro' ),
			8 => esc_html__( 'Icon Set submitted.', 'elementor-pro' ),
			9 => esc_html__( 'Icon Set updated.', 'elementor-pro' ),
			10 => esc_html__( 'Icon Set draft updated.', 'elementor-pro' ),
		];

		return $messages;
	}

	/**
	 * Add Font manager link to admin menu
	 */
	public function register_admin_menu() {
		$menu_title = _x( 'Custom Icons', 'Elementor Font', 'elementor-pro' );
		add_submenu_page(
			Settings::PAGE_ID,
			$menu_title,
			$menu_title,
			self::CAPABILITY,
			'edit.php?post_type=' . self::CPT
		);
	}

	public function redirect_admin_old_page_to_new() {
		if ( ! empty( $_GET['page'] ) && 'elementor_custom_icons' === $_GET['page'] ) {
			wp_safe_redirect( admin_url( 'edit.php?post_type=' . self::CPT ) );
			die;
		}
	}

	/**
	 * Clean up admin Font manager admin listing
	 */
	public function clean_admin_listing_page() {
		global $typenow;

		if ( self::CPT !== $typenow ) {
			return;
		}

		add_filter( 'months_dropdown_results', '__return_empty_array' );
		add_filter( 'screen_options_show_screen', '__return_false' );
	}

	public function post_row_actions( $actions, $post ) {
		if ( self::CPT !== $post->post_type ) {
			return $actions;
		}

		unset( $actions['inline hide-if-no-js'] );

		return $actions;
	}

	public function add_finder_item( array $categories ) {
		$categories['settings']['items']['custom-icons'] = [
			'title' => esc_html__( 'Custom Icons', 'elementor-pro' ),
			'icon' => 'favorite',
			'url' => admin_url( 'edit.php?post_type=' . self::CPT ),
			'keywords' => [ 'custom', 'icons', 'elementor' ],
		];

		return $categories;
	}

	/**
	 * Register Font Manager action and filter hooks
	 */
	protected function actions() {
		add_action( 'init', [ $this, 'register_post_type' ] );

		if ( is_admin() ) {
			add_action( 'init', [ $this, 'redirect_admin_old_page_to_new' ] );
			add_action( 'admin_menu', [ $this, 'register_admin_menu' ], 50 );
			add_action( 'admin_head', [ $this, 'clean_admin_listing_page' ] );
		}

		add_filter( 'post_updated_messages', [ $this, 'post_updated_messages' ] );
		add_filter( 'post_row_actions', [ $this, 'post_row_actions' ], 10, 2 );

		add_filter( 'elementor/finder/categories', [ $this, 'add_finder_item' ] );

		/**
		 * Elementor icons manager loaded.
		 *
		 * Fires after the icons manager was fully loaded and instantiated.
		 *
		 * @since 2.0.0
		 *
		 * @param Fonts_Manager $this An instance of icons manager.
		 */
		do_action( 'elementor_pro/icons_manager_loaded', $this );
	}

	/**
	 * Fonts_Manager constructor.
	 */
	public function __construct() {
		$this->actions();
		$this->add_icon_type( 'custom', new Icons\Custom_Icons() );
		$this->add_icon_type( 'font-awesome-pro', new Icons\Font_Awesome_Pro() );
	}
}
modules/assets-manager/asset-types/fonts-manager.php000064400000037131150755004310016666 0ustar00<?php
namespace ElementorPro\Modules\AssetsManager\AssetTypes;

use Elementor\Utils;
use Elementor\Core\Common\Modules\Ajax\Module as Ajax;
use ElementorPro\Modules\AssetsManager\Classes;
use Elementor\Settings;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Fonts_Manager {

	const CAPABILITY = 'manage_options';

	const CPT = 'elementor_font';

	const TAXONOMY = 'elementor_font_type';

	const FONTS_OPTION_NAME = 'elementor_fonts_manager_fonts';

	const FONTS_NAME_TYPE_OPTION_NAME = 'elementor_fonts_manager_font_types';

	private $post_type_object;

	private $taxonomy_object;

	private $enqueued_fonts = [];

	protected $font_types = [];

	/**
	 * get a font type object for a given type
	 *
	 * @param null $type
	 *
	 * @return array|bool|\ElementorPro\Modules\AssetsManager\Classes\Font_Base
	 */
	public function get_font_type_object( $type = null ) {
		if ( null === $type ) {
			return $this->font_types;
		}

		if ( isset( $this->font_types[ $type ] ) ) {
			return $this->font_types[ $type ];
		}

		return false;
	}

	/**
	 * Add a font type to the font manager
	 *
	 * @param string            $font_type
	 * @param Classes\Font_Base $instance
	 */
	public function add_font_type( $font_type, $instance ) {
		$this->font_types[ $font_type ] = $instance;
	}

	/**
	 * Register elementor font custom post type and elementor font type custom taxonomy
	 */
	public function register_post_type_and_tax() {
		$labels = [
			'name' => _x( 'Custom Fonts', 'CPT Name', 'elementor-pro' ),
			'singular_name' => _x( 'Font', 'CPT Singular Name', 'elementor-pro' ),
			'add_new' => esc_html__( 'Add New', 'elementor-pro' ),
			'add_new_item' => esc_html__( 'Add New Font', 'elementor-pro' ),
			'edit_item' => esc_html__( 'Edit Font', 'elementor-pro' ),
			'new_item' => esc_html__( 'New Font', 'elementor-pro' ),
			'all_items' => esc_html__( 'All Fonts', 'elementor-pro' ),
			'view_item' => esc_html__( 'View Font', 'elementor-pro' ),
			'search_items' => esc_html__( 'Search Font', 'elementor-pro' ),
			'not_found' => esc_html__( 'No fonts found', 'elementor-pro' ),
			'not_found_in_trash' => esc_html__( 'No fonts found in trash', 'elementor-pro' ),
			'parent_item_colon' => '',
			'menu_name' => _x( 'Custom Fonts', 'CPT Menu Name', 'elementor-pro' ),
		];

		$args = [
			'labels' => $labels,
			'public' => false,
			'rewrite' => false,
			'show_ui' => true,
			'show_in_menu' => false,
			'show_in_nav_menus' => false,
			'exclude_from_search' => true,
			'capability_type' => 'post',
			'hierarchical' => false,
			'supports' => [ 'title' ],
		];

		$this->post_type_object = register_post_type( self::CPT, $args );

		$taxonomy_labels = [
			'name' => _x( 'Font Types', 'Font type taxonomy general name', 'elementor-pro' ),
			'singular_name' => _x( 'Font Type', 'Font type singular name', 'elementor-pro' ),
			'search_items' => esc_html__( 'Search Font Types', 'elementor-pro' ),
			'popular_items' => esc_html__( 'Popular Font Types', 'elementor-pro' ),
			'all_items' => esc_html__( 'All Font Types', 'elementor-pro' ),
			'edit_item' => esc_html__( 'Edit Font Type', 'elementor-pro' ),
			'update_item' => esc_html__( 'Update Font Type', 'elementor-pro' ),
			'add_new_item' => esc_html__( 'Add New Font Type', 'elementor-pro' ),
			'new_item_name' => esc_html__( 'New Font Type Name', 'elementor-pro' ),
			'separate_items_with_commas' => esc_html__( 'Separate Font Types with commas', 'elementor-pro' ),
			'add_or_remove_items' => esc_html__( 'Add or remove Font Types', 'elementor-pro' ),
			'choose_from_most_used' => esc_html__( 'Choose from the most used Font Types', 'elementor-pro' ),
			'not_found' => esc_html__( 'No Font Types found.', 'elementor-pro' ),
			'menu_name' => esc_html__( 'Font Types', 'elementor-pro' ),
		];

		$taxonomy_args = [
			'labels' => $taxonomy_labels,
			'hierarchical' => false,
			'show_ui' => true,
			'show_in_nav_menus' => false,
			'query_var' => is_admin(),
			'rewrite' => false,
			'public' => false,
			'meta_box_cb' => [ $this, 'print_taxonomy_metabox' ],
		];

		$this->taxonomy_object = register_taxonomy( self::TAXONOMY, self::CPT, $taxonomy_args );
	}

	public function post_updated_messages( $messages ) {
		$messages[ self::CPT ] = [
			0 => '', // Unused. Messages start at index 1.
			1 => esc_html__( 'Font updated.', 'elementor-pro' ),
			2 => esc_html__( 'Custom field updated.', 'elementor-pro' ),
			3 => esc_html__( 'Custom field deleted.', 'elementor-pro' ),
			4 => esc_html__( 'Font updated.', 'elementor-pro' ),
			/* translators: %s: date and time of the revision */
			5 => isset( $_GET['revision'] ) ? sprintf( esc_html__( 'Font restored to revision from %s', 'elementor-pro' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
			6 => esc_html__( 'Font saved.', 'elementor-pro' ),
			7 => esc_html__( 'Font saved.', 'elementor-pro' ),
			8 => esc_html__( 'Font submitted.', 'elementor-pro' ),
			9 => esc_html__( 'Font updated.', 'elementor-pro' ),
			10 => esc_html__( 'Font draft updated.', 'elementor-pro' ),
		];

		return $messages;
	}

	/**
	 * Print Font Type metabox
	 *
	 * @param $post
	 * @param $box
	 */
	public function print_taxonomy_metabox( $post, $box ) {
		wp_nonce_field( self::CPT, self::CPT . '_nonce' );
		$name = self::TAXONOMY;
		?>
		<div id="taxonomy-<?php echo esc_attr( $name ); ?>" class="categorydiv">
			<?php
			$term_obj = wp_get_object_terms( $post->ID, $name );
			$slug = false;
			if ( is_array( $term_obj ) && isset( $term_obj[0] ) ) {
				$slug = $term_obj[0]->slug;
			}
			$options = '';
			foreach ( $this->font_types as $type => $instance ) {
				$options .= sprintf( '<option value="%s"%s>%s</option>' . "\n", $type, selected( $slug, $type, false ), $instance->get_name() );
			}
			?>
			<select class="widefat" name="<?php echo esc_attr( $name ); ?>">
				<?php Utils::print_unescaped_internal_string( $options ); ?>
			</select>
		</div>
		<?php
	}

	/**
	 * Add Font manager link to admin menu
	 */
	public function register_admin_menu() {
		$menu_title = _x( 'Custom Fonts', 'Elementor Font', 'elementor-pro' );
		add_submenu_page(
			Settings::PAGE_ID,
			$menu_title,
			$menu_title,
			self::CAPABILITY,
			'edit.php?post_type=' . self::CPT
		);
	}

	public function redirect_admin_old_page_to_new() {
		if ( ! empty( $_GET['page'] ) && 'elementor_custom_fonts' === $_GET['page'] ) {
			wp_safe_redirect( admin_url( 'edit.php?post_type=' . self::CPT ) );
			die;
		}
	}

	/**
	 * Render preview column in font manager admin listing
	 *
	 * @param $column
	 * @param $post_id
	 */
	public function render_columns( $column, $post_id ) {
		if ( 'font_preview' === $column ) {
			$font_type = $this->get_font_type_by_post_id( $post_id, true );

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

			$font_type->render_preview_column( $post_id );
		}
	}

	/**
	 * Handle editor request to embed/link font CSS per font type
	 *
	 * @param array $data
	 *
	 * @return array
	 * @throws \Exception
	 */
	public function assets_manager_panel_action_data( array $data ) {
		if ( empty( $data['type'] ) ) {
			throw new \Exception( 'font_type_is_required' );
		}

		if ( empty( $data['font'] ) ) {
			throw new \Exception( 'font_is_required' );
		}

		$asset = $this->get_font_type_object( $data['type'] );

		if ( ! $asset ) {
			throw new \Exception( 'font_type_not_found' );
		}

		try {
			return $asset->handle_panel_request( $data );

		} catch ( \Exception $exception ) {
			throw $exception;
		}
	}

	/**
	 * Clean up admin Font manager admin listing
	 */
	public function clean_admin_listing_page() {
		global $typenow;

		if ( self::CPT !== $typenow ) {
			return;
		}

		add_filter( 'months_dropdown_results', '__return_empty_array' );
		add_action( 'manage_' . self::CPT . '_posts_custom_column', [ $this, 'render_columns' ], 10, 2 );
		add_filter( 'display_post_states', [ $this, 'display_post_states' ], 10, 2 );
		add_filter( 'screen_options_show_screen', '__return_false' );
	}

	public function update_enter_title_here( $title, $post ) {
		if ( isset( $post->post_type ) && self::CPT === $post->post_type ) {
			return esc_html__( 'Enter Font Family', 'elementor-pro' );
		}

		return $title;
	}

	public function post_row_actions( $actions, $post ) {
		if ( self::CPT !== $post->post_type ) {
			return $actions;
		}

		unset( $actions['inline hide-if-no-js'] );

		return $actions;
	}

	public function display_post_states( $post_states, $post ) {
		$font_type = $this->get_font_type_by_post_id( $post->ID, true );

		if ( false !== $font_type ) {
			$font_type->get_font_variations_count( $post->ID );
		}

		return $post_states;
	}

	/**
	 * Define which columns to display in font manager admin listing
	 *
	 * @param $columns
	 *
	 * @return array
	 */
	public function manage_columns( $columns ) {
		return [
			'cb' => '<input type="checkbox" />',
			'title' => esc_html__( 'Font Family', 'elementor-pro' ),
			'font_preview' => esc_html__( 'Preview', 'elementor-pro' ),
		];
	}

	public function register_fonts_in_control( $fonts ) {
		$custom_fonts = $this->get_font_types();
		if ( empty( $custom_fonts ) ) {
			$this->generate_fonts_list();
			$custom_fonts = $this->get_font_types();
		}

		return array_merge( $custom_fonts, $fonts );
	}

	public function register_fonts_groups( $font_groups ) {
		$new_groups = [];

		foreach ( $this->get_font_type_object() as $type => $instance ) {
			$new_groups[ $type ] = $instance->get_name();
		}

		return array_merge( $new_groups, $font_groups );
	}

	/**
	 * Gets a Font type for any given post id
	 *
	 * @param      $post_id
	 * @param bool $return_object
	 *
	 * @return array|bool|Classes\Font_Base
	 */
	private function get_font_type_by_post_id( $post_id, $return_object = false ) {
		$term_obj = get_the_terms( $post_id, self::TAXONOMY );

		if ( is_array( $term_obj ) ) {
			$type_obj = array_shift( $term_obj );

			if ( false === $return_object ) {
				return $type_obj->slug;
			}

			return $this->get_font_type_object( $type_obj->slug );
		}

		return false;
	}

	/**
	 * Get font manager fonts as font family => font type array
	 * @return array
	 */
	private function get_font_types() {
		static $font_types = false;

		if ( ! $font_types ) {
			$font_types = get_option( self::FONTS_NAME_TYPE_OPTION_NAME, [] );
		}

		return $font_types;
	}

	/**
	 * Generates a list of all Font Manager fonts and stores it in the options table
	 * @return array
	 */
	private function generate_fonts_list() {
		$fonts = new \WP_Query( [
			'post_type' => self::CPT,
			'posts_per_page' => -1,
		] );

		$new_fonts = [];
		$font_types = [];
		foreach ( $fonts->posts as $font ) {
			$font_type = $this->get_font_type_by_post_id( $font->ID, true );
			if ( false === $font_type ) {
				continue;
			}
			$font_types = array_merge( $font_types, $font_type->get_font_family_type( $font->ID, $font->post_title ) );
			$new_fonts = array_merge( $new_fonts, $font_type->get_font_data( $font->ID, $font->post_title ) );
		}

		update_option( self::FONTS_NAME_TYPE_OPTION_NAME, $font_types );
		update_option( self::FONTS_OPTION_NAME, $new_fonts );

		return $new_fonts;
	}

	/**
	 * runs on Elementor font post save and calls the font type handler save meta method
	 *
	 * @param int      $post_id
	 * @param \WP_Post $post
	 * @param bool     $update
	 *
	 * @return mixed
	 */
	public function save_post_meta( $post_id, $post, $update ) {
		// If this is an autosave, our form has not been submitted,
		// so we don't want to do anything.
		if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
			return $post_id;
		}

		// Check the user's permissions.
		if ( ! current_user_can( 'edit_post', $post_id ) ) {
			return $post_id;
		}

		// Check if our nonce is set.
		if ( ! isset( $_POST[ self::CPT . '_nonce' ] ) ) {
			return $post_id;
		}

		// Verify that the nonce is valid.
		if ( ! wp_verify_nonce( $_POST[ self::CPT . '_nonce' ], self::CPT ) ) {
			return $post_id;
		}

		// Save font type
		// only custom for now
		$custom_font = $this->get_font_type_object( 'custom' );

		wp_set_object_terms( $post_id, $custom_font->get_type(), self::TAXONOMY );

		// Let Font type handle saving
		$custom_font->save_meta( $post_id, $_POST );
	}

	/**
	 * Helper to clean font list on save/update
	 */
	public function clear_fonts_list() {
		delete_option( self::FONTS_OPTION_NAME );
		delete_option( self::FONTS_NAME_TYPE_OPTION_NAME );
	}

	/**
	 * Get fonts array form the database or generate a new list if $force is set to true
	 *
	 * @param bool $force
	 *
	 * @return array|bool|mixed
	 */
	public function get_fonts() {
		static $fonts = false;

		if ( false !== $fonts ) {
			return $fonts;
		}

		$fonts = $this->generate_fonts_list();

		$fonts = get_option( self::FONTS_OPTION_NAME, false );

		return $fonts;
	}

	/**
	 * Enqueue fonts css
	 *
	 * @param $post_css
	 */
	public function enqueue_fonts( $post_css ) {
		$used_fonts = $post_css->get_fonts();
		$font_manager_fonts = $this->get_fonts();
		$font_types = $this->get_font_types();

		foreach ( $used_fonts as $font_family ) {
			if ( ! isset( $font_types[ $font_family ] ) || in_array( $font_family, $this->enqueued_fonts ) ) {
				continue;
			}

			$font_type = $this->get_font_type_object( $font_types[ $font_family ] );
			if ( ! $font_type ) {
				continue;
			}

			$font_data = [];
			if ( isset( $font_manager_fonts[ $font_family ] ) ) {
				$font_data = $font_manager_fonts[ $font_family ];
			}
			$font_type->enqueue_font( $font_family, $font_data, $post_css );

			$this->enqueued_fonts[] = $font_family;
		}
	}

	public function register_ajax_actions( Ajax $ajax ) {
		$ajax->register_ajax_action( 'pro_assets_manager_panel_action_data', [ $this, 'assets_manager_panel_action_data' ] );
	}

	public function add_finder_item( array $categories ) {
		$categories['settings']['items']['custom-fonts'] = [
			'title' => esc_html__( 'Custom Fonts', 'elementor-pro' ),
			'icon' => 'typography',
			'url' => admin_url( 'edit.php?post_type=' . self::CPT ),
			'keywords' => [ 'custom', 'fonts', 'elementor' ],
		];

		return $categories;
	}

	/**
	 * Register Font Manager action and filter hooks
	 */
	protected function actions() {
		add_action( 'init', [ $this, 'register_post_type_and_tax' ] );

		if ( is_admin() ) {
			add_action( 'init', [ $this, 'redirect_admin_old_page_to_new' ] );
			add_action( 'admin_menu', [ $this, 'register_admin_menu' ], 50 );
			add_action( 'admin_head', [ $this, 'clean_admin_listing_page' ] );
		}

		add_filter( 'post_row_actions', [ $this, 'post_row_actions' ], 10, 2 );
		add_filter( 'manage_' . self::CPT . '_posts_columns', [ $this, 'manage_columns' ], 100 );
		add_action( 'save_post_' . self::CPT, [ $this, 'save_post_meta' ], 10, 3 );
		add_action( 'save_post_' . self::CPT, [ $this, 'clear_fonts_list' ], 100 );

		add_filter( 'elementor/fonts/groups', [ $this, 'register_fonts_groups' ] );
		add_filter( 'elementor/fonts/additional_fonts', [ $this, 'register_fonts_in_control' ] );
		add_filter( 'elementor/finder/categories', [ $this, 'add_finder_item' ] );
		add_action( 'elementor/css-file/post/parse', [ $this, 'enqueue_fonts' ] );
		add_action( 'elementor/css-file/global/parse', [ $this, 'enqueue_fonts' ] );
		add_filter( 'post_updated_messages', [ $this, 'post_updated_messages' ] );
		add_filter( 'enter_title_here', [ $this, 'update_enter_title_here' ], 10, 2 );

		// Ajax.
		add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] );

		/**
		 * Elementor fonts manager loaded.
		 *
		 * Fires after the fonts manager was fully loaded and instantiated.
		 *
		 * @since 2.0.0
		 *
		 * @param Fonts_Manager $this An instance of fonts manager.
		 */
		do_action( 'elementor_pro/fonts_manager_loaded', $this );
	}

	/**
	 * Fonts_Manager constructor.
	 */
	public function __construct() {
		$this->actions();
		$this->add_font_type( 'custom', new Fonts\Custom_Fonts() );
		$this->add_font_type( 'typekit', new Fonts\Typekit_Fonts() );
	}
}
modules/assets-manager/classes/assets-base.php000064400000030306150755004310015510 0ustar00<?php
namespace ElementorPro\Modules\AssetsManager\Classes;

use Elementor\Utils;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

abstract class Assets_Base {

	abstract public function get_name();

	abstract public function get_type();

	protected function actions() { }

	public function print_metabox( $fields ) {
		?>
		<div class="elementor-metabox-content">
			<?php
			foreach ( $fields as $field ) :
				$field['saved'] = isset( $field['saved'] ) ? $field['saved'] : '';
				// PHPCS - admin fields
				echo $this->get_metabox_field_html( $field, $field['saved'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			endforeach;
			?>
		</div>
		<?php
	}

	public function get_metabox_field_html( $field, $saved ) {
		$html = '';

		switch ( $field['field_type'] ) {
			case 'html':
				$html = $this->get_html_field( $field );

				return $html;
				break;

			case 'html_tag':
				$html = $this->get_html_tag( $field );

				return $html;
				break;

			case 'toolbar':
				$html = $this->get_repeater_tools( $field );
				break;

			case 'input':
				$html = $this->get_input_field( $field );
				break;

			case 'select':
				$html = $this->get_select_field( $field, $saved );
				break;

			case 'textarea':
				$html = $this->get_textarea_field( $field, $saved );
				break;

			case 'file':
				$html = $this->get_file_field( $field, $saved );
				break;

			case 'repeater':
				$html = $this->get_repeater_field( $field, $saved );
				break;

			case 'dropzone':
				$html = $this->get_dropzone_field( $field, $saved );
				break;

			case 'checkbox':
				return $this->get_checkbox_field( $field, $saved );

			default:
				$method = 'get_' . $field['field_type'] . 'field';
				if ( method_exists( $this, $method ) ) {
					$html = call_user_func( [ $this, $method ], $field, $saved );
				}
				break;
		}

		return $this->get_field_row( $field, $html );
	}

	public function get_field_label( $field ) {
		if ( ! isset( $field['label'] ) || false === $field['label'] ) {
			return '';
		}
		$id = $field['id'];
		if ( 'file' === $field['field_type'] ) {
			$id .= $field['field_type'];
		}

		return '<p class="elementor-field-label"><label for="' . esc_attr( $id ) . '">' . $field['label'] . '</label></p>';
	}

	public function get_input_field( $attributes ) {
		if ( isset( $attributes['input_type'] ) ) {
			$attributes['type'] = $attributes['input_type'];
			unset( $attributes['input_type'] );
		}
		$input = '<input ' . $this->get_attribute_string( $attributes ) . '>';

		return $input;
	}

	public function get_attribute_string( $attributes, $field = [] ) {
		if ( isset( $field['extra_attributes'] ) && is_array( $field['extra_attributes'] ) ) {
			$attributes = array_merge( $attributes, $field['extra_attributes'] );
		}
		$attributes_array = [];
		foreach ( $attributes as $name => $value ) {
			$attributes_array[] = sprintf( '%s="%s"', $name, esc_attr( $value ) );
		}

		return implode( ' ', $attributes_array );
	}

	public function get_select_field( $field, $selected = '' ) {
		$input = '<select ';
		$input .= $this->get_attribute_string( [
			'name' => $field['id'],
			'id' => $field['id'],
		], $field );

		$input .= '>' . "\n";
		foreach ( $field['options'] as $value => $label ) {
			$input .= '<option value="' . $value . '" ' . selected( $selected, $value, false ) . '>' . esc_attr( $label ) . '</option>' . PHP_EOL;
		}

		return $input . '</select>';
	}

	public function get_textarea_field( $field, $html ) {
		$input = '<textarea ';
		$input .= $this->get_attribute_string( [
			'name' => $field['id'],
			'id' => $field['id'],
		], $field );

		$input .= '>' . esc_textarea( $html ) . '</textarea>';

		return $input;
	}

	public function get_file_field( $field, $saved ) {
		$value = [
			'id' => '',
			'url' => '',
		];

		if ( isset( $saved['id'] ) && isset( $saved['url'] ) ) {
			$value = $saved;
		}

		$html = '<ul></ul>';
		$html .= $this->get_input_field(
			[
				'type' => 'hidden',
				'name' => $field['id'] . '[id]',
				'value' => $value['id'],
			]
		);

		$html .= $this->get_input_field(
			[
				'type' => 'text',
				'name' => $field['id'] . '[url]',
				'value' => $value['url'],
				'placeholder' => $field['description'],
				'class' => 'elementor-field-input',
			]
		);

		$html .= $this->get_input_field(
			[
				'type' => 'button',
				'class' => 'button elementor-button elementor-upload-btn',
				'name' => $field['id'],
				'id' => $field['id'],
				'value' => '',
				'data-preview_anchor' => isset( $field['preview_anchor'] ) ? $field['preview_anchor'] : 'none',
				'data-mime_type' => isset( $field['mine'] ) ? $field['mine'] : '',
				'data-ext' => isset( $field['ext'] ) ? $field['ext'] : '',
				'data-upload_text' => esc_html__( 'Upload', 'elementor-pro' ),
				'data-remove_text' => esc_html__( 'Delete', 'elementor-pro' ),
				'data-box_title' => isset( $field['box_title'] ) ? $field['box_title'] : '',
				'data-box_action' => isset( $field['box_action'] ) ? $field['box_action'] : '',
			]
		);

		return $html;
	}

	public function get_html_field( $field ) {
		return $field['raw_html'];
	}

	public function get_dropzone_field( $field ) {
		ob_start();
		$input_attributes = [
			'type' => 'file',
			'name' => $field['id'],
			'id' => $field['id'],
			'accept' => $field['accept'],
			'class' => 'box__file',
		];
		if ( ! empty( $field['multiple'] ) ) {
			$input_attributes['multiple'] = true;
		}
		$input_html = $this->get_input_field( $input_attributes );
		$field['label'] = '<h4><span class="box__dragndrop">' . esc_html__( 'Drag & Drop to Upload', 'elementor-pro' ) . '</span></h4>';
		if ( ! empty( $field['sub-label'] ) ) {
			$field['label'] .= '<h5>' . $field['sub-label'] . '</h5>';
		}
		?>
		<div class="elementor-dropzone-field">
			<div class="box__input">
				<div class="elementor--dropzone--upload__icon">
					<i class="eicon-library-upload"></i>
				</div>
				<?php echo $input_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
				<?php echo $this->get_field_label( $field ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
				<div class="elementor-button elementor--dropzone--upload__browse">
					<span><?php esc_html_e( 'Click here to browse', 'elementor-pro' ); ?></span>
				</div>
			</div>
			<div class="box__uploading"><?php esc_html_e( 'Uploading&hellip;', 'elementor-pro' ); ?></div>
			<div class="box__success"><?php esc_html_e( 'Done!', 'elementor-pro' ); ?></div>
			<div class="box__error"><?php esc_html_e( 'Error!', 'elementor-pro' ); ?> <span></span>.</div>
		</div>
		<?php
		return ob_get_clean();
	}

	public function get_repeater_field( $field, $saved ) {
		$id = $field['id'];
		$js_id = 'repeater_' . Utils::generate_random_string();
		$add_label = isset( $field['add_label'] ) ? $field['add_label'] : esc_html__( 'Add item', 'elementor-pro' );
		$row_label = isset( $field['row_label'] ) ? $field['row_label'] : esc_html__( 'Row', 'elementor-pro' );
		$row_label_html_args = [
			'id' => 'row_label_' . $js_id,
			'class' => 'repeater-title hidden',
		];

		if ( is_array( $row_label ) ) {
			$label = $row_label['default'];
			$row_label_html_args['data-default'] = $row_label['default'];
			$row_label_html_args['data-selector'] = $row_label['selector'];
		} else {
			$label = $row_label;
			$row_label_html_args['data-default'] = $row_label;
		}

		$row_label_html = '<span ' . $this->get_attribute_string( $row_label_html_args ) . '>' . $label . '</span>';
		ob_start();
		?>
		<script type="text/template" id="<?php echo esc_attr( $js_id . '_block' ); ?>">
			<div class="repeater-block block-visible">
				<?php
				echo $row_label_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				echo $this->get_repeater_tools( $field ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				?>
				<div class="repeater-content form-table">
					<?php
					foreach ( $field['fields'] as $sub_field ) {
						$sub_field['real_id'] = $id;
						$sub_field['id'] = $id . '[__counter__][' . $sub_field['id'] . ']';
						echo $this->get_metabox_field_html( $sub_field, '' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
					}
					?>
				</div>
			</div>
		</script>
		<?php
		$counter = 0;
		$row_label_html_args['class'] = 'repeater-title';

		$row_label_html = '<span ' . $this->get_attribute_string( $row_label_html_args ) . '>' . $label . '</span>';
		if ( is_array( $saved ) && count( $saved ) > 0 ) {
			foreach ( (array) $saved as $key => $item ) {
				echo '<div class="repeater-block">';
				echo $row_label_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				echo $this->get_repeater_tools( $field ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				echo '<div class="repeater-content hidden form-table">';
				foreach ( $field['fields'] as $sub_field ) {
					$default = isset( $sub_field['default'] ) ? $sub_field['default'] : '';
					$item_meta = isset( $item[ $sub_field['id'] ] ) ? $item[ $sub_field['id'] ] : $default;
					$sub_field['real_id'] = $sub_field['id'];
					$sub_field['id'] = $id . '[' . $counter . '][' . $sub_field['id'] . ']';
					echo $this->get_metabox_field_html( $sub_field, $item_meta ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				}
				echo '</div>'; // end table
				echo '</div>';
				$counter++;
			}
		}
		echo '<input type="button" class="button elementor-button add-repeater-row" value="' . esc_attr( $add_label ) . '" data-template-id="' . esc_html( $js_id ) . '_block">';

		return ob_get_clean();
	}

	public function get_checkbox_field( $field, $saved ) {
		Utils::print_unescaped_internal_string( $this->get_field_row( $field, '' ) );

		echo '<div id="' . esc_attr( $field['id'] ) . '" class="elementor-field-checkboxes">';

		foreach ( $field['options'] as $checkbox_key => $label ) {
			$name = $field['id'] . '_' . $checkbox_key;

			$checked = ! empty( $saved ) && in_array( $checkbox_key, $saved, true ) ? 'checked' : '';

			echo '<input name="' . esc_attr( $name ) . '" type="checkbox" ' . esc_attr( $checked ) . '><span class="label">' . esc_html( $label ) . '</span></input>';
		}

		echo '</div>';
	}

	private function get_html_tag( $field ) {
		$tag = isset( $field['tag'] ) ? $field['tag'] : 'div';
		if ( isset( $field['close'] ) && true === $field['close'] ) {
			return '</' . $tag . '>';
		}

		return '<' . $tag . ' ' . $this->get_attribute_string( $field['attributes'] ) . '>';
	}

	private function get_repeater_tools( $field ) {
		$confirm = isset( $field['confirm'] ) ? $field['confirm'] : esc_html__( 'Are you sure?', 'elementor-pro' );
		$remove_title = isset( $field['remove_title'] ) ? $field['remove_title'] : esc_html__( 'Delete', 'elementor-pro' );
		$toggle_title = isset( $field['toggle_title'] ) ? $field['toggle_title'] : esc_html__( 'Edit', 'elementor-pro' );
		$close_title = isset( $field['close_title'] ) ? $field['close_title'] : esc_html__( 'Close', 'elementor-pro' );

		return '<span class="elementor-repeater-tool-btn close-repeater-row" title="' . esc_attr( $close_title ) . '">
                    <i class="eicon-times" aria-hidden="true"></i>' . $close_title . '
                </span>
                <span class="elementor-repeater-tool-btn toggle-repeater-row" title="' . esc_attr( $toggle_title ) . '">
                    <i class="eicon-edit" aria-hidden="true"></i>' . $toggle_title . '
                </span>
                <span class="elementor-repeater-tool-btn remove-repeater-row" data-confirm="' . $confirm . '" title="' . esc_attr( $remove_title ) . '">
                    <i class="eicon-trash" aria-hidden="true"></i>' . $remove_title . '
                </span>';
	}

	public function get_field_row( $field, $field_html ) {
		$description = '';
		$css_id = isset( $field['id'] ) ? ' ' . $field['id'] : '';

		if ( isset( $field['real_id'] ) ) {
			$css_id = ' ' . $field['real_id'];
		}

		$css_id .= ' elementor-field-' . $field['field_type'];

		return '<div class="elementor-field' . $css_id . '">' . $this->get_field_label( $field ) . $field_html . $description . '</div>';
	}

	public function sanitize_text_field_recursive( $data ) {
		if ( is_array( $data ) ) {
			foreach ( $data as $key => $value ) {
				$data[ $key ] = $this->sanitize_text_field_recursive( $value );
			}

			return $data;
		}

		return sanitize_text_field( $data );
	}

	public function __construct() {
		$this->actions();
	}
}
modules/assets-manager/classes/font-base.php000064400000002040150755004310015146 0ustar00<?php
namespace ElementorPro\Modules\AssetsManager\Classes;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}


class Font_Base extends Assets_Base {

	const FONTS_OPTION_NAME = 'elementor_fonts_manager_fonts';

	protected $font_preview_phrase = '';

	protected function actions() {}

	public function __construct() {
		parent::__construct();

		$this->font_preview_phrase = esc_html__( 'Elementor Is Making the Web Beautiful!!!', 'elementor-pro' );
	}

	public function get_name() {
		return '';
	}

	public function get_type() {
		return '';
	}

	public function handle_panel_request( array $data ) {
		return [];
	}

	public function get_fonts( $force = false ) {}

	public function enqueue_font( $font_family, $font_data, $post_css ) {}

	public function get_font_family_type( $post_id, $post_title ) {}

	public function get_font_data( $post_id, $post_title ) {}

	public function render_preview_column( $post_id ) {}

	public function get_font_variations_count( $post_id ) {}

	public function save_meta( $post_id, $data ) {}
}
modules/assets-manager/module.php000064400000002643150755004310013131 0ustar00<?php
namespace ElementorPro\Modules\AssetsManager;

use ElementorPro\Base\Module_Base;
use ElementorPro\Modules\AssetsManager\AssetTypes;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	private $asset_managers = [];

	public function get_name() {
		return 'assets-manager';
	}

	public function add_asset_manager( $name, $instance ) {
		$this->asset_managers[ $name ] = $instance;
	}

	public function get_assets_manager( $id = null ) {
		if ( $id ) {
			if ( ! isset( $this->asset_managers[ $id ] ) ) {
				return null;
			}

			return $this->asset_managers[ $id ];
		}

		return $this->asset_managers;
	}

	// Add translation string for the modal that appears when a user tries
	// to publish a new font "post" without uploading/choosing one
	public function localize_settings( $settings ) {
		$settings = array_replace_recursive( $settings, [
			'i18n' => [
				'fontsUploadEmptyNotice' => esc_html__( 'Choose a font to publish.', 'elementor-pro' ),
				'iconsUploadEmptyNotice' => esc_html__( 'Upload an icon set to publish.', 'elementor-pro' ),
			],
		] );

		return $settings;
	}

	public function __construct() {
		parent::__construct();

		add_filter( 'elementor_pro/admin/localize_settings', [ $this, 'localize_settings' ] );
		$this->add_asset_manager( 'font', new AssetTypes\Fonts_Manager() );
		$this->add_asset_manager( 'icon', new AssetTypes\Icons_Manager() );
	}
}
modules/custom-attributes/module.php000064400000007074150755004310013720 0ustar00<?php
namespace ElementorPro\Modules\CustomAttributes;

use Elementor\Controls_Stack;
use Elementor\Controls_Manager;
use Elementor\Element_Base;
use Elementor\Utils;
use ElementorPro\Base\Module_Base;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function __construct() {
		parent::__construct();

		$this->add_actions();
	}

	public function get_name() {
		return 'custom-attributes';
	}

	private function get_black_list_attributes() {
		static $black_list = null;

		if ( null === $black_list ) {
			$black_list = [ 'id', 'class', 'data-id', 'data-settings', 'data-element_type', 'data-widget_type', 'data-model-cid' ];

			/**
			 * Elementor attributes black list.
			 *
			 * Filters the attributes that won't be rendered in the wrapper element.
			 *
			 * By default Elementor doesn't render some attributes to prevent things
			 * from breaking down. But this list of attributes can be changed.
			 *
			 * @since 2.2.0
			 *
			 * @param array $black_list A black list of attributes.
			 */
			$black_list = apply_filters( 'elementor_pro/element/attributes/black_list', $black_list );
		}

		return $black_list;
	}

	/**
	 * @param Element_Base $element
	 */
	public function replace_go_pro_custom_attributes_controls( Element_Base $element ) {
		Plugin::elementor()->controls_manager->remove_control_from_stack( $element->get_unique_name(), [ 'section_custom_attributes_pro', 'custom_attributes_pro' ] );

		$this->register_custom_attributes_controls( $element );
	}

	public function register_custom_attributes_controls( Element_Base $element ) {
		$element_name = $element->get_name();

		$element->start_controls_section(
			'_section_attributes',
			[
				'label' => esc_html__( 'Attributes', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_ADVANCED,
			]
		);

		$element->add_control(
			'_attributes',
			[
				'label' => esc_html__( 'Custom Attributes', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => esc_html__( 'key|value', 'elementor-pro' ),
				'description' => sprintf( esc_html__( 'Set custom attributes for the wrapper element. Each attribute in a separate line. Separate attribute key from the value using %s character.', 'elementor-pro' ), '<code>|</code>' ),
				'classes' => 'elementor-control-direction-ltr',
			]
		);

		$element->end_controls_section();
	}

	/**
	 * @param $element    Controls_Stack
	 * @param $section_id string
	 */
	public function register_controls( Controls_Stack $element, $section_id ) {
		if ( ! $element instanceof Element_Base ) {
			return;
		}

		// Remove Custom CSS Banner (From free version)
		if ( 'section_custom_attributes_pro' === $section_id ) {
			$this->replace_go_pro_custom_attributes_controls( $element );
		}
	}

	/**
	 * @param $element Element_Base
	 */
	public function render_attributes( Element_Base $element ) {
		$settings = $element->get_settings_for_display();

		if ( ! empty( $settings['_attributes'] ) ) {
			$attributes = Utils::parse_custom_attributes( $settings['_attributes'], "\n" );

			$black_list = $this->get_black_list_attributes();

			foreach ( $attributes as $attribute => $value ) {
				if ( ! in_array( $attribute, $black_list, true ) ) {
					$element->add_render_attribute( '_wrapper', $attribute, $value );
				}
			}
		}
	}

	protected function add_actions() {
		add_action( 'elementor/element/after_section_end', [ $this, 'register_controls' ], 10, 2 );
		add_action( 'elementor/element/after_add_attributes', [ $this, 'render_attributes' ] );
	}
}
modules/usage/module.php000064400000010340150755004310011314 0ustar00<?php
namespace ElementorPro\Modules\Usage;

use Elementor\Core\Base\Module as BaseModule;
use ElementorPro\Modules\AssetsManager\AssetTypes\Fonts\Custom_Fonts;
use ElementorPro\Modules\AssetsManager\AssetTypes\Icons\Custom_Icons;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/**
 * Elementor usage module.
 * @method static Module instance()
 */
class Module extends BaseModule {
	/**
	 * Get module name.
	 *
	 * Retrieve the usage module name.
	 *
	 * @access public
	 *
	 * @return string Module name.
	 */
	public function get_name() {
		return 'usage';
	}

	/**
	 * Get integrations usage.
	 *
	 * Check all integrations in settings tab, find out who are in use.
	 *
	 * @return array
	 */
	public function get_integrations_usage() {
		$usage = [];

		$settings_tab = Plugin::elementor()->settings->get_tabs();
		$integrations = $settings_tab['integrations']['sections'];

		foreach ( $integrations as $integration_name => $integration_data ) {
			$integration_options = [];
			$integration_fields_count = count( $integration_data['fields'] );

			foreach ( $integration_data['fields'] as $field_name => $field_data ) {
				$integration_options [] = get_option( 'elementor_' . $field_name );
			}
			/**
			 * array_filter will clear all empty array values.
			 * if all the values filled then the count should be the same.
			 */
			if ( count( array_filter( $integration_options ) ) === $integration_fields_count ) {
				$usage[ $integration_name ] = true;
			}
		}

		return $usage;
	}

	/**
	 * Get fonts usage.
	 *
	 * Retrieve the number of Elementor fonts variants saved.
	 *
	 * @access public
	 * @static
	 *
	 * @return array The number of Elementor fonts variants.
	 */
	public static function get_fonts_usage() {
		$usage = [];
		$query = new \WP_Query( [
			'posts_per_page' => -1,
			'post_type' => 'elementor_font',
		] );

		$post_index = 0;
		foreach ( $query->get_posts() as $post ) {
			$elementor_font_files = get_post_meta( $post->ID, Custom_Fonts::FONT_META_KEY );

			if ( ! empty( $elementor_font_files ) ) {
				foreach ( $elementor_font_files as $elementor_font_index => $elementor_font_file ) {
					$current = & $usage[ $post_index ];

					foreach ( $elementor_font_file as $elementor_font_variant_index => $elementor_font_variant ) {
						$current_variant = & $current[ 'variant_' . $elementor_font_variant_index ];

						foreach ( [ 'weight', 'style' ] as $font_prop ) {
							$current_variant[ $font_prop ] = $elementor_font_variant[ 'font_' . $font_prop ];
						}

						$current_variant['types'] = [];
						foreach ( [ 'woff', 'woff2', 'ttf', 'svg', 'eot' ] as $font_ext ) {
							if ( isset( $elementor_font_variant[ $font_ext ] ) && strlen( $elementor_font_variant[ $font_ext ]['url'] ) ) {
								$current_variant['types'][] = $font_ext;
							}
						}
					}
				}

				$post_index++;
			}
		}

		return $usage;
	}

	/**
	 * Get icons usage.
	 *
	 * Retrieve the number of Elementor icons saved.
	 *
	 * @access public
	 * @static
	 *
	 * @return array The number of Elementor icons.
	 */
	public static function get_icons_usage() {
		$usage = [];
		$query = new \WP_Query( [
			'posts_per_page' => -1,
			'post_type' => 'elementor_icons',
		] );

		$index = 0;
		foreach ( $query->get_posts() as $post ) {
			$elementor_custom_icon_set_config = get_post_meta( $post->ID, Custom_Icons::META_KEY );

			if ( isset( $elementor_custom_icon_set_config[0] ) ) {
				$elementor_custom_icon_set_config = json_decode( $elementor_custom_icon_set_config[0] );

				$usage[ $index ] = (int) $elementor_custom_icon_set_config->count;

				$index++;
			}
		}

		return $usage;
	}

	/**
	 * Add's tracking data.
	 *
	 * Called on elementor/tracker/send_tracking_data_params.
	 *
	 * @param array $params
	 *
	 * @return array
	 */
	public function add_tracking_data( $params ) {
		$params['usages']['integrations'] = $this->get_integrations_usage();
		$params['usages']['icons'] = $this->get_icons_usage();
		$params['usages']['fonts'] = $this->get_fonts_usage();

		return $params;
	}

	/**
	 * Usage module constructor.
	 *
	 * Initializing Elementor usage module.
	 *
	 * @access public
	 */
	public function __construct() {
		add_filter( 'elementor/tracker/send_tracking_data_params', [ $this, 'add_tracking_data' ] );
	}
}
modules/progress-tracker/module.php000064400000000521150755004310013505 0ustar00<?php
namespace ElementorPro\Modules\ProgressTracker;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function get_widgets() {
		return [
			'ProgressTracker',
		];
	}

	public function get_name() {
		return 'progress-tracker';
	}
}
modules/progress-tracker/widgets/progress-tracker.php000064400000040364150755004310017174 0ustar00<?php

namespace ElementorPro\Modules\ProgressTracker\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Background;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Text_Shadow;
use Elementor\Group_Control_Typography;
use Elementor\Modules\PageTemplates\Module as PageTemplatesModule;
use ElementorPro\Base\Base_Widget;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class ProgressTracker extends Base_Widget {

	public function get_name() {
		return 'progress-tracker';
	}

	public function get_title() {
		return esc_html__( 'Progress Tracker', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-progress-tracker';
	}

	public function get_categories() {
		return [ 'pro-elements', 'theme-elements-single' ];
	}

	public function get_keywords() {
		return [ 'progress', 'tracker', 'read', 'scroll' ];
	}

	private function register_content_controls() {
		$this->start_controls_section(
			'section_content_scrolling_tracker',
			[
				'label' => esc_html__( 'Progress Tracker', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$this->add_control(
			'type',
			[
				'label' => esc_html__( 'Tracker Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'frontend_available' => true,
				'options' => [
					'horizontal' => esc_html__( 'Horizontal', 'elementor-pro' ),
					'circular' => esc_html__( 'Circular', 'elementor-pro' ),
				],
				'default' => 'horizontal',
			]
		);

		$this->add_control(
			'relative_to',
			[
				'label' => esc_html__( 'Progress relative to', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'frontend_available' => true,
				'options' => [
					'entire_page' => esc_html__( 'Entire Page', 'elementor-pro' ),
					'post_content' => esc_html__( 'Post Content', 'elementor-pro' ),
					'selector' => esc_html__( 'Selector', 'elementor-pro' ),
				],
				'default' => 'entire_page',
			]
		);

		$this->add_control(
			'selector',
			[
				'label' => esc_html__( 'Selector', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'description' => esc_html__( 'Add the CSS ID or Class of a specific element on this page to track its progress separately', 'elementor-pro' ),
				'frontend_available' => true,
				'condition' => [
					'relative_to' => 'selector',
				],
				'placeholder' => '#id, .class',
			]
		);

		$this->add_control(
			'relative_to_description',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => esc_html__( 'Note: You can only track progress relative to Post Content on a single post template.', 'elementor-pro' ),
				'separator' => 'none',
				'content_classes' => 'elementor-descriptor',
				'condition' => [
					'relative_to' => 'post_content',
				],
			]
		);

		$this->add_control(
			'direction',
			[
				'label' => esc_html__( 'Direction', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'ltr' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'rtl' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'render_type' => 'template',
				'frontend_available' => true,
				'selectors' => [
					'{{WRAPPER}}' => '--direction: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'percentage',
			[
				'label' => esc_html__( 'Percentage', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'no',
				'frontend_available' => true,
			]
		);

		$this->add_responsive_control(
			'percentage_position',
			[
				'label' => esc_html__( 'Percentage Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'rtl' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'ltr' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'condition' => [
					'type' => 'horizontal',
					'percentage' => 'yes',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--text-direction: {{VALUE}};',
				],
			]
		);

		$this->end_controls_section();
	}

	private function register_tracker_style_controls() {
		$this->start_controls_section(
			'section_style_scrolling_tracker',
			[
				'label' => esc_html__( 'Tracker', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'circular_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 200,
					],
				],
				'size_units' => [ 'px' ],
				'selectors' => [
					'{{WRAPPER}}' => '--circular-width: {{SIZE}}{{UNIT}}; --circular-height: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'type' => 'circular',
				],
			]
		);

		$this->add_control(
			'heading_progress_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Progress Indicator', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'circular_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--circular-color: {{VALUE}}',
				],
				'condition' => [
					'type' => 'circular',
				],
			]
		);

		$this->add_responsive_control(
			'circular_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 400,
					],
				],
				'size_units' => [ 'px' ],
				'selectors' => [
					'{{WRAPPER}}' => '--circular-progress-width: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'type' => 'circular',
				],
			]
		);

		$this->add_responsive_control(
			'align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'condition' => [
					'type' => 'circular',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'horizontal_color',
				'types' => [ 'classic', 'gradient' ],
				'exclude' => [ 'image' ],
				'selector' => '{{WRAPPER}} .current-progress',
				'condition' => [
					'type' => 'horizontal',
				],
				'fields_options' => [
					'background' => [
						'label' => esc_html__( 'Progress Color', 'elementor-pro' ),
					],
				],
			]
		);

		$this->add_control(
			'horizontal_border_style',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'none',
				'options' => [
					'none' => esc_html__( 'None', 'elementor-pro' ),
					'solid' => _x( 'Solid', 'Border Control', 'elementor-pro' ),
					'double' => _x( 'Double', 'Border Control', 'elementor-pro' ),
					'dotted' => _x( 'Dotted', 'Border Control', 'elementor-pro' ),
					'dashed' => _x( 'Dashed', 'Border Control', 'elementor-pro' ),
					'groove' => _x( 'Groove', 'Border Control', 'elementor-pro' ),
				],
				'selectors' => [
					'{{WRAPPER}}' => '--horizontal-progress-border: {{VALUE}};',
				],
				'condition' => [
					'type' => 'horizontal',
				],
			]
		);

		$this->add_responsive_control(
			'horizontal_border_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--horizontal-progress-border-top-width: {{TOP}}{{UNIT}}; --horizontal-progress-border-right-width: {{RIGHT}}{{UNIT}}; --horizontal-progress-border-bottom-width: {{BOTTOM}}{{UNIT}}; --horizontal-progress-border-left-width: {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'horizontal_border_style!' => 'none',
					'type' => 'horizontal',
				],
			]
		);

		$this->add_control(
			'horizontal_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--horizontal-progress-border-color: {{VALUE}}',
				],
				'condition' => [
					'horizontal_border_style!' => 'none',
					'type' => 'horizontal',
				],
			]
		);

		$this->add_responsive_control(
			'horizontal_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%', 'em' ],
				'selectors' => [
					'{{WRAPPER}}' => '--progress-border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'type' => 'horizontal',
				],
			]
		);

		$this->add_control(
			'heading_tracker_background_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Tracker Background', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'circular_background_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--circular-background-color: {{VALUE}}',
				],
				'condition' => [
					'type' => 'circular',
				],
			]
		);

		$this->add_responsive_control(
			'circular_background_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 400,
					],
				],
				'size_units' => [ 'px' ],
				'selectors' => [
					'{{WRAPPER}}' => '--circular-background-width: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'type' => 'circular',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'horizontal_background_color',
				'types' => [ 'classic', 'gradient' ],
				'exclude' => [ 'image' ],
				'selector' => '{{WRAPPER}} .elementor-scrolling-tracker-horizontal',
				'fields_options' => [
					'background' => [
						'label' => esc_html__( 'Background Color', 'elementor-pro' ),
					],
				],
				'condition' => [
					'type' => 'horizontal',
				],
			]
		);

		$this->add_responsive_control(
			'horizontal_height',
			[
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
					'vh' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'size_units' => [ 'px', 'vh' ],
				'selectors' => [
					'{{WRAPPER}}' => '--horizontal-height: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'type' => 'horizontal',
				],
			]
		);

		$this->add_control(
			'horizontal_tracker_border_style',
			[
				'label' => esc_html__( 'Border Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'none',
				'options' => [
					'none' => esc_html__( 'None', 'elementor-pro' ),
					'solid' => _x( 'Solid', 'Border Control', 'elementor-pro' ),
					'double' => _x( 'Double', 'Border Control', 'elementor-pro' ),
					'dotted' => _x( 'Dotted', 'Border Control', 'elementor-pro' ),
					'dashed' => _x( 'Dashed', 'Border Control', 'elementor-pro' ),
					'groove' => _x( 'Groove', 'Border Control', 'elementor-pro' ),
				],
				'selectors' => [
					'{{WRAPPER}}' => '--horizontal-border-style: {{VALUE}};',
				],
				'condition' => [
					'type' => 'horizontal',
				],
			]
		);

		$this->add_responsive_control(
			'horizontal_tracker_border_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}}' => '--horizontal-border-top-width: {{TOP}}{{UNIT}}; --horizontal-border-right-width: {{RIGHT}}{{UNIT}}; --horizontal-border-bottom-width: {{BOTTOM}}{{UNIT}}; --horizontal-border-left-width: {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'horizontal_tracker_border_style!' => 'none',
					'type' => 'horizontal',
				],
			]
		);

		$this->add_control(
			'horizontal_tracker_border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--horizontal-border-color: {{VALUE}}',
				],
				'condition' => [
					'horizontal_tracker_border_style!' => 'none',
					'type' => 'horizontal',
				],
			]
		);

		$this->add_responsive_control(
			'horizontal_tracker_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%', 'em' ],
				'selectors' => [
					'{{WRAPPER}}' => '--border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'type' => 'horizontal',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'box_shadow',
				'selector' => '{{WRAPPER}} .elementor-scrolling-tracker',
				'condition' => [
					'type' => 'horizontal',
				],
			]
		);

		$this->add_responsive_control(
			'horizontal_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%', 'em' ],
				'selectors' => [
					'{{WRAPPER}}' => '--tracker-padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'condition' => [
					'type' => 'horizontal',
				],
			]
		);

		$this->end_controls_section();
	}

	private function register_content_style_controls() {
		$this->start_controls_section(
			'section__content_style_scrolling_tracker',
			[
				'label' => esc_html__( 'Content', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'percentage' => 'yes',
				],
			]
		);

		$this->add_control(
			'heading_percentage_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Percentage', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'percentage_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--percentage-color: {{VALUE}}',
				],
				'frontend_available' => true,
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'percentage_typography',
				'selector' => '{{WRAPPER}} .current-progress-percentage',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'percentage_text_shadow',
				'selector' => '{{WRAPPER}} .current-progress-percentage',
				'fields_options' => [
					'text_shadow_type' => [
						'label' => esc_html__( 'Text Shadow', 'elementor-pro' ),
					],
				],
			]
		);
	}

	protected function register_controls() {
		$this->register_content_controls();
		$this->register_tracker_style_controls();
		$this->register_content_style_controls();
	}

	public function render_plain_content() {}

	protected function render() {
		$settings = $this->get_settings_for_display();
		$horizontal = 'horizontal' === $settings['type'];
		$this->add_render_attribute( 'scrolling-percentage', 'class', 'current-progress-percentage' );
		$this->add_render_attribute( 'scrolling-tracker', 'class', [
			'elementor-scrolling-tracker',
			'elementor-scrolling-tracker-' . $settings['type'],
			'elementor-scrolling-tracker-alignment-' . $settings['align'],
		] ); ?>

		<div <?php $this->print_render_attribute_string( 'scrolling-tracker' ); ?>>
		<?php if ( $horizontal ) : ?>
				<div class="current-progress">
					<div <?php $this->print_render_attribute_string( 'scrolling-percentage' ); ?>></div>
				</div>
		<?php else : ?>
				<svg
						width="100%"
						height="100%">
					<circle class="circle"
							r="40%"
							cx="50%"
							cy="50%"/>

					<circle class="current-progress"
							r="40%"
							cx="50%"
							cy="50%"/>
				</svg>
				<div <?php $this->print_render_attribute_string( 'scrolling-percentage' ); ?>></div>
		<?php endif; ?>
		</div>
		<?php
	}
}
modules/lottie/assets/animations/default.json000064400000334253150755004310015511 0ustar00{"v":"5.5.7","meta":{"g":"LottieFiles AE ","a":"","k":"","d":"","tc":""},"fr":25,"ip":0,"op":125,"w":1920,"h":1080,"nm":"InLogo 3","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Shape Layer 14","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[862,408,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[28.7,53,100],"ix":6}},"ao":0,"ef":[{"ty":5,"nm":"Turbulent Displace","np":16,"mn":"ADBE Turbulent Displace","ix":1,"en":1,"ef":[{"ty":7,"nm":"Displacement","mn":"ADBE Turbulent Displace-0001","ix":1,"v":{"a":0,"k":1,"ix":1}},{"ty":0,"nm":"Amount","mn":"ADBE Turbulent Displace-0002","ix":2,"v":{"a":0,"k":33,"ix":2}},{"ty":0,"nm":"Size","mn":"ADBE Turbulent Displace-0003","ix":3,"v":{"a":0,"k":90,"ix":3}},{"ty":3,"nm":"Offset (Turbulence)","mn":"ADBE Turbulent Displace-0004","ix":4,"v":{"a":0,"k":[960,540],"ix":4}},{"ty":0,"nm":"Complexity","mn":"ADBE Turbulent Displace-0005","ix":5,"v":{"a":0,"k":1,"ix":5}},{"ty":0,"nm":"Evolution","mn":"ADBE Turbulent Displace-0006","ix":6,"v":{"a":0,"k":0,"ix":6}},{"ty":6,"nm":"Evolution Options","mn":"ADBE Turbulent Displace-0007","ix":7,"v":0},{"ty":7,"nm":"Cycle Evolution","mn":"ADBE Turbulent Displace-0008","ix":8,"v":{"a":0,"k":0,"ix":8}},{"ty":0,"nm":"Cycle (in Revolutions)","mn":"ADBE Turbulent Displace-0009","ix":9,"v":{"a":0,"k":1,"ix":9}},{"ty":0,"nm":"Random Seed","mn":"ADBE Turbulent Displace-0010","ix":10,"v":{"a":0,"k":0,"ix":10}},{"ty":6,"nm":"Random Seed","mn":"ADBE Turbulent Displace-0011","ix":11,"v":0},{"ty":7,"nm":"Pinning","mn":"ADBE Turbulent Displace-0012","ix":12,"v":{"a":0,"k":3,"ix":12}},{"ty":7,"nm":"Resize Layer","mn":"ADBE Turbulent Displace-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":7,"nm":"Antialiasing for Best Quality","mn":"ADBE Turbulent Displace-0014","ix":14,"v":{"a":0,"k":1,"ix":14}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":66.833,"s":[{"i":[[4.75,0.75],[1,-1.25],[-8,-0.25]],"o":[[-4.75,-0.75],[-1,1.25],[8,0.25]],"v":[[346.5,-0.25],[334.25,0.5],[341.75,4.25]],"c":true}],"h":1},{"t":68.5003255208333,"s":[{"i":[[1.286,0.48],[0.271,-0.799],[-2.167,-0.16]],"o":[[-1.286,-0.48],[-0.271,0.799],[2.167,0.16]],"v":[[352.589,0.471],[349.271,0.951],[351.302,3.348]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":66,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":66.833,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69.333,"s":[100]},{"t":70.1663411458333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 13","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":70.166,"s":[{"i":[[4.18,-0.372],[0.022,-1.823],[-6.574,0.303],[0.536,2.784]],"o":[[-4.18,0.372],[-0.03,2.442],[6.574,-0.303],[-0.604,-3.14]],"v":[[-510.668,-7.313],[-517.525,-0.891],[-508.861,4.275],[-501.457,-3.208]],"c":true}],"h":1},{"t":71.833,"s":[{"i":[[1.998,-0.14],[-0.044,-1.297],[-3.151,0.02],[0.341,1.997]],"o":[[-1.998,0.14],[0.058,1.737],[3.151,-0.02],[-0.384,-2.252]],"v":[[-518.552,-4.632],[-521.656,-0.268],[-517.355,3.533],[-511.502,-1.693]],"c":true}],"h":1},{"t":73.5003255208333,"s":[{"i":[[1.184,-0.136],[-0.026,-0.772],[-2.27,0.176],[0.203,1.189]],"o":[[-2.219,0.255],[0.035,1.034],[1.87,-0.145],[-0.229,-1.341]],"v":[[-521.063,-2.58],[-523.443,0.073],[-520.398,2.327],[-517.399,-0.776]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[830.5,-2.125],"ix":2},"a":{"a":0,"k":[-502,1],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":187.253,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69.333,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":70.166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":74.333,"s":[100]},{"t":75.1663411458333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 12","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":68.5,"s":[{"i":[[8.475,-4.457],[-1.556,-3.859],[-13.577,6.419],[3.576,5.392]],"o":[[-8.475,4.457],[2.084,5.169],[13.577,-6.419],[-4.034,-6.081]],"v":[[-523.509,-12.882],[-532.302,6.668],[-509.517,9.93],[-500.504,-12.337]],"c":true}],"h":1},{"t":70.166,"s":[{"i":[[2.779,-0.194],[-0.061,-1.804],[-4.383,0.027],[0.474,2.778]],"o":[[-2.779,0.194],[0.081,2.416],[4.383,-0.027],[-0.535,-3.133]],"v":[[-531.232,-4.697],[-535.55,1.374],[-529.567,6.662],[-521.425,-0.608]],"c":true}],"h":1},{"t":71.8333333333333,"s":[{"i":[[1.516,-0.174],[-0.033,-0.988],[-2.905,0.226],[0.26,1.521]],"o":[[-2.841,0.327],[0.044,1.323],[2.393,-0.186],[-0.293,-1.716]],"v":[[-538.976,-1.008],[-542.022,2.387],[-538.125,5.273],[-534.286,1.301]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[758.5,-2.125],"ix":2},"a":{"a":0,"k":[-502,1],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":187.253,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":67.666,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":68.5,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":72.666,"s":[100]},{"t":73.5003255208333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 11","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":66.833,"s":[{"i":[[5.552,-0.494],[0.03,-2.422],[-8.733,0.403],[0.712,3.698]],"o":[[-5.552,0.494],[-0.04,3.244],[8.733,-0.403],[-0.803,-4.171]],"v":[[-518.497,-8.318],[-527.605,0.213],[-516.128,6.827],[-499.303,-3.636]],"c":true}],"h":1},{"t":68.5,"s":[{"i":[[2.779,-0.194],[-0.061,-1.804],[-4.383,0.027],[0.474,2.778]],"o":[[-2.779,0.194],[0.081,2.416],[4.383,-0.027],[-0.535,-3.133]],"v":[[-531.232,-4.697],[-535.55,1.374],[-529.567,6.662],[-521.425,-0.608]],"c":true}],"h":1},{"t":70.1663411458333,"s":[{"i":[[1.516,-0.174],[-0.033,-0.988],[-2.905,0.226],[0.26,1.521]],"o":[[-2.841,0.327],[0.044,1.323],[2.393,-0.186],[-0.293,-1.716]],"v":[[-538.976,-1.008],[-542.022,2.387],[-538.125,5.273],[-534.286,1.301]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[638,-2],"ix":2},"a":{"a":0,"k":[-502,1],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":187.253,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":66,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":66.833,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":71,"s":[100]},{"t":71.8333333333333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 10","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":66.833,"s":[{"i":[[5.552,-0.494],[0.03,-2.422],[-8.733,0.403],[0.712,3.698]],"o":[[-5.552,0.494],[-0.04,3.244],[8.733,-0.403],[-0.803,-4.171]],"v":[[-517.685,-5.901],[-527.515,-1.059],[-517.499,3.978],[-494.807,-3.956]],"c":true}],"h":1},{"t":68.5,"s":[{"i":[[2.327,-0.154],[-0.063,-1.604],[-3.672,-0.005],[0.416,2.473]],"o":[[-2.327,0.154],[0.084,2.149],[3.672,0.005],[-0.469,-2.789]],"v":[[-526.191,-3.085],[-530.187,-0.183],[-525.805,3.467],[-516.479,-1.084]],"c":true}],"h":1},{"t":70.1663411458333,"s":[{"i":[[0.793,-0.028],[-0.057,-0.821],[-1.256,-0.083],[0.196,1.272]],"o":[[-0.793,0.028],[0.076,1.099],[1.256,0.083],[-0.221,-1.435]],"v":[[-530.305,-0.876],[-531.609,0.52],[-530.03,2.479],[-526.94,0.358]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[542,-2],"ix":2},"a":{"a":0,"k":[-502,1],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":187.253,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":66,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":66.833,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":71,"s":[100]},{"t":71.8333333333333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 9","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":71.833,"s":[{"i":[[3.776,0.019],[-1.805,-0.357],[0.815,1.363]],"o":[[-1.825,-0.009],[1.641,0.325],[0.065,-0.538]],"v":[[-461.744,-1.505],[-461.964,0.088],[-452.414,-0.453]],"c":true}],"h":1},{"t":73.5003255208333,"s":[{"i":[[1.518,-0.096],[-0.453,-0.638],[-0.713,0.267]],"o":[[-0.734,0.046],[0.453,0.638],[0.713,-0.267]],"v":[[-465.108,-1.338],[-467.09,-0.546],[-461.402,-0.46]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-341.688,1.75],"ix":2},"a":{"a":0,"k":[-455.313,-0.938],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":178.598,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":71,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":71.833,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":74.333,"s":[100]},{"t":75.1663411458333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 8","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":70.166,"s":[{"i":[[3.776,0.019],[-1.031,-1.318],[0.815,1.363]],"o":[[-1.825,-0.009],[1.031,1.318],[0.065,-0.538]],"v":[[-461.237,-1.805],[-466.254,-0.892],[-449.162,-0.498]],"c":true}],"h":1},{"t":71.8333333333333,"s":[{"i":[[1.521,0],[-0.412,-0.665],[-0.729,0.222]],"o":[[-0.735,0],[0.412,0.665],[0.729,-0.222]],"v":[[-465.182,-1.777],[-467.21,-1.112],[-461.538,-0.668]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-382.875,1.25],"ix":2},"a":{"a":0,"k":[-455.313,-0.938],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":178.598,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69.333,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":70.166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":72.666,"s":[100]},{"t":73.5003255208333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":68.5,"s":[{"i":[[3,0],[-0.813,-1.313],[-1.438,0.438]],"o":[[-1.45,0],[0.813,1.313],[1.438,-0.438]],"v":[[-456.438,-2.188],[-460.438,-0.875],[-449.25,0]],"c":true}],"h":1},{"t":70.1663411458333,"s":[{"i":[[1.521,0],[-0.412,-0.665],[-0.729,0.222]],"o":[[-0.735,0],[0.412,0.665],[0.729,-0.222]],"v":[[-455.498,-1.54],[-457.526,-0.875],[-451.854,-0.431]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-421.625,1.125],"ix":2},"a":{"a":0,"k":[-455.375,-1.063],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-183.942,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":67.666,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":68.5,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":71,"s":[100]},{"t":71.8333333333333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":66.833,"s":[{"i":[[4.25,-0.125],[0.477,-1.343],[-17.974,-0.972],[-17.25,-1.25],[-0.226,6.325],[9.25,-0.75]],"o":[[-4.25,0.125],[-1.375,3.875],[18.5,1],[12.53,0.908],[0.25,-7],[-9.25,0.75]],"v":[[-455.25,-3.125],[-490.125,-1.625],[-454,3.75],[-411.25,5.25],[-374.25,0.75],[-414.75,-5.25]],"c":true}],"h":1},{"t":68.5,"s":[{"i":[[4.086,-0.081],[0.458,-0.874],[-5.769,-0.163],[-16.585,-0.814],[-0.217,4.118],[8.893,-0.488]],"o":[[-4.086,0.081],[-1.322,2.523],[17.797,0.502],[12.046,0.591],[0.24,-4.557],[-8.893,0.488]],"v":[[-435.501,-2.216],[-446.678,-0.832],[-437.905,2.748],[-397.063,4.062],[-367.24,0.632],[-399.178,-3.774]],"c":true}],"h":1},{"t":70.166,"s":[{"i":[[2.531,-0.05],[0.284,-0.542],[-3.573,-0.101],[-3.522,-0.193],[-0.135,2.55],[5.508,-0.302]],"o":[[-2.531,0.05],[-0.819,1.562],[11.022,0.311],[7.458,0.409],[0.149,-2.822],[-5.508,0.302]],"v":[[-392.395,-1.267],[-399.317,-0.41],[-393.884,1.807],[-378.731,2.904],[-365.138,0.47],[-379.886,-2.8]],"c":true}],"h":1},{"t":71.833,"s":[{"i":[[1.313,-0.257],[-0.001,-0.413],[-1.873,-0.146],[-1.851,0.065],[0.075,1.157],[2.532,0.118]],"o":[[-1.138,0.223],[-0.031,0.658],[2.76,0.215],[1.761,-0.062],[-0.059,-0.909],[-2.16,-0.101]],"v":[[-371.104,-1.254],[-374.278,0.212],[-371.197,1.838],[-365.507,2.199],[-362.637,0.385],[-365.818,-1.488]],"c":true}],"h":1},{"t":73.5003255208333,"s":[{"i":[[0.895,-0.155],[-0.001,-0.249],[-1.275,-0.088],[-1.26,0.039],[0.051,0.698],[1.724,0.072]],"o":[[-0.775,0.135],[-0.021,0.397],[1.88,0.13],[1.2,-0.037],[-0.04,-0.549],[-1.471,-0.061]],"v":[[-363.818,-0.623],[-365.979,0.262],[-363.88,1.243],[-360.005,1.461],[-358.051,0.366],[-360.217,-0.764]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-384.5,2],"ix":2},"a":{"a":0,"k":[-433,1],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":66,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":66.833,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":74.333,"s":[100]},{"t":75.1663411458333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 7","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[430.984,2.882],"ix":2},"a":{"a":0,"k":[-383.766,1.382],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":4,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":65.166,"s":[{"i":[[5.552,-0.494],[0.03,-2.422],[-8.733,0.403],[1.951,2.164]],"o":[[-5.552,0.494],[-0.04,3.244],[8.733,-0.403],[-1.951,-2.164]],"v":[[-513.027,-2.965],[-524.904,1.633],[-513.464,5.984],[-492.197,-1.265]],"c":true}],"h":1},{"t":66.833,"s":[{"i":[[1.933,-0.356],[-0.386,-1.859],[-3.102,0.273],[1.062,1.668]],"o":[[-1.933,0.356],[0.517,2.489],[3.102,-0.273],[-1.062,-1.668]],"v":[[-522.22,-1.02],[-527.341,3.093],[-521.05,6.088],[-515.846,1.385]],"c":true}],"h":1},{"t":68.5003255208333,"s":[{"i":[[0.928,-0.039],[-0.058,-0.895],[-1.47,-0.077],[0.387,0.851]],"o":[[-0.928,0.039],[0.077,1.199],[1.47,0.077],[-0.387,-0.851]],"v":[[-526.389,1.435],[-529.058,3.02],[-526.312,4.838],[-523.566,2.982]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[221,-2],"ix":2},"a":{"a":0,"k":[-502,1],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":187.253,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":64.333,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":65.166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69.333,"s":[100]},{"t":70.1663411458333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 8","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":65.166,"s":[{"i":[[2.487,-0.104],[-0.155,-2.399],[-3.938,-0.207],[1.036,2.28]],"o":[[-2.487,0.104],[0.207,3.213],[3.938,0.207],[-1.036,-2.28]],"v":[[-504.58,-4.041],[-509.655,-0.308],[-504.157,4.8],[-495.002,-0.908]],"c":true}],"h":1},{"t":66.833,"s":[{"i":[[1.933,-0.356],[-0.386,-1.859],[-3.102,0.273],[1.062,1.668]],"o":[[-1.933,0.356],[0.517,2.489],[3.102,-0.273],[-1.062,-1.668]],"v":[[-502.876,-3.482],[-507.998,0.631],[-501.706,3.626],[-496.502,-1.077]],"c":true}],"h":1},{"t":68.5003255208333,"s":[{"i":[[0.928,-0.039],[-0.058,-0.895],[-1.47,-0.077],[0.387,0.851]],"o":[[-0.928,0.039],[0.077,1.199],[1.47,0.077],[-0.387,-0.851]],"v":[[-502.085,-1.659],[-504.754,-0.073],[-502.008,1.745],[-499.262,-0.112]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[23,0],"ix":2},"a":{"a":0,"k":[-502,1],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":187.253,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":64.333,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":65.166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69.333,"s":[100]},{"t":70.1663411458333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 7","np":3,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":65.166,"s":[{"i":[[3,-0.125],[-0.187,-2.893],[-4.75,-0.25],[1.25,2.75]],"o":[[-3,0.125],[0.25,3.875],[4.75,0.25],[-1.25,-2.75]],"v":[[-502.625,-5.5],[-511.25,-0.375],[-502.375,5.5],[-493.5,-0.5]],"c":true}],"h":1},{"t":66.833,"s":[{"i":[[1.964,-0.082],[-0.122,-1.894],[-3.11,-0.164],[0.818,1.8]],"o":[[-1.964,0.082],[0.164,2.537],[3.11,0.164],[-0.818,-1.8]],"v":[[-502.355,-3.579],[-508.002,-0.224],[-502.191,3.622],[-496.381,-0.306]],"c":true}],"h":1},{"t":68.5003255208333,"s":[{"i":[[0.928,-0.039],[-0.058,-0.895],[-1.47,-0.077],[0.387,0.851]],"o":[[-0.928,0.039],[0.077,1.199],[1.47,0.077],[-0.387,-0.851]],"v":[[-502.085,-1.659],[-504.754,-0.073],[-502.008,1.745],[-499.262,-0.112]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-296,0],"ix":2},"a":{"a":0,"k":[-502,1],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":171.987,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":64.333,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":65.166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69.333,"s":[100]},{"t":70.1663411458333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6","np":3,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":65.166,"s":[{"i":[[4.875,1.125],[1,-4],[-3,1.125]],"o":[[-4.7,-1.085],[-1,4],[9.843,-3.691]],"v":[[-238.125,-1.125],[-265.5,3.125],[-229.125,6.375]],"c":true}],"h":1},{"t":66.833,"s":[{"i":[[3.438,0.793],[0.705,-2.821],[-2.116,0.793]],"o":[[-3.314,-0.765],[-0.705,2.821],[6.941,-2.603]],"v":[[-232.569,0.075],[-247.202,2.984],[-228.691,5.187]],"c":true}],"h":1},{"t":68.5003255208333,"s":[{"i":[[1.056,0.411],[0.217,-1.463],[-0.65,0.411]],"o":[[-1.019,-0.397],[-0.217,1.463],[2.133,-1.35]],"v":[[-227.556,1.312],[-232.053,2.821],[-226.364,3.964]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[88,-3],"ix":2},"a":{"a":0,"k":[-241,1],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":64.333,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":65.166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69.333,"s":[100]},{"t":70.1663411458333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5","np":3,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":65.166,"s":[{"i":[[3.375,3.25],[1,-4],[-10.5,-0.5]],"o":[[-6.918,-6.662],[-1,4],[10.5,0.5]],"v":[[-220.5,1],[-264.5,2],[-230,6]],"c":true}],"h":1},{"t":66.833,"s":[{"i":[[1.463,1.5],[0.55,-2.933],[-5.754,0.611]],"o":[[-4.478,-4.592],[-0.55,2.933],[5.688,-0.604]],"v":[[-219.4,1],[-243.6,1.733],[-224.625,4.667]],"c":true}],"h":1},{"t":68.5003255208333,"s":[{"i":[[0.571,0.861],[0.186,-1.867],[-1.309,0.229]],"o":[[-1.7,-2.563],[-0.186,1.867],[1.937,-0.339]],"v":[[-218.987,0.375],[-226.98,1.467],[-220.566,3.333]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":64.333,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":65.166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69.333,"s":[100]},{"t":70.1663411458333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4","np":3,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":70.166,"s":[{"i":[[3,0],[-0.813,-1.313],[-1.438,0.438]],"o":[[-1.45,0],[0.813,1.313],[1.438,-0.438]],"v":[[-456.438,-2.188],[-460.438,-0.875],[-449.25,0]],"c":true}],"h":1},{"t":71.8333333333333,"s":[{"i":[[1.521,0],[-0.412,-0.665],[-0.729,0.222]],"o":[[-0.735,0],[0.412,0.665],[0.729,-0.222]],"v":[[-455.498,-1.54],[-457.526,-0.875],[-451.854,-0.431]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-350.375,1],"ix":2},"a":{"a":0,"k":[-455.313,-0.938],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":178.598,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69.333,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":70.166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":72.666,"s":[100]},{"t":73.5003255208333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":70.166,"s":[{"i":[[3,0],[-0.813,-1.313],[-1.438,0.438]],"o":[[-1.45,0],[0.813,1.313],[1.438,-0.438]],"v":[[-456.438,-2.188],[-460.438,-0.875],[-449.25,0]],"c":true}],"h":1},{"t":71.8333333333333,"s":[{"i":[[1.521,0],[-0.412,-0.665],[-0.729,0.222]],"o":[[-0.735,0],[0.412,0.665],[0.729,-0.222]],"v":[[-455.498,-1.54],[-457.526,-0.875],[-451.854,-0.431]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-394.5,-0.25],"ix":2},"a":{"a":0,"k":[-455.375,-1.063],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69.333,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":70.166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":72.666,"s":[100]},{"t":73.5003255208333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":65.166,"s":[{"i":[[4.25,-0.125],[4.002,-4.002],[-17.974,-0.972],[-17.25,-1.25],[1,6.25],[9.25,-0.75]],"o":[[-4.25,0.125],[-5.375,5.375],[18.5,1],[12.53,0.908],[-1.644,-10.274],[-9.25,0.75]],"v":[[-453.25,-2.625],[-490.125,-2.375],[-454,3.75],[-409,5.75],[-386.75,-0.75],[-420.5,-5.25]],"c":true}],"h":1},{"t":66.833,"s":[{"i":[[3.669,-0.106],[3.455,-3.4],[-15.518,-0.826],[-11.428,-1.229],[0.458,5.361],[7.986,-0.637]],"o":[[-3.669,0.106],[-4.64,4.567],[15.972,0.85],[10.782,1.159],[-0.637,-7.456],[-7.986,0.637]],"v":[[-440.274,-3.388],[-475.86,-2.425],[-441.922,2.029],[-406.322,3.979],[-386.613,-1.044],[-414.751,-4.618]],"c":true}],"h":1},{"t":68.5003255208333,"s":[{"i":[[2.858,-0.084],[2.774,-2.606],[-7.473,0.19],[-12.303,-2.034],[3.317,2.746],[6.221,-0.504]],"o":[[-2.858,0.084],[-4.23,3.973],[10.762,-0.273],[8.336,1.378],[-3.744,-3.1],[-6.221,0.504]],"v":[[-429.443,-1.916],[-451.964,-2.289],[-431.274,1.139],[-399.548,3.122],[-390.339,-1.364],[-414.612,-1.376]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-384.5,2],"ix":2},"a":{"a":0,"k":[-433,1],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":64.333,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":65.166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69.333,"s":[100]},{"t":70.1663411458333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 7","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-121.266,2.382],"ix":2},"a":{"a":0,"k":[-383.766,1.382],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-3.726,-0.489],[0.33,0.9],[1.837,-0.574]],"o":[[1.667,0.219],[-0.408,-1.112],[-4.387,1.372]],"v":[[-416.513,1.844],[-414.744,0.325],[-418.558,-1.419]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":67.666,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":68.5,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69.333,"s":[100]},{"t":70.1663411458333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 10","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":70.166,"s":[{"i":[[3,0],[-0.813,-1.313],[-1.438,0.438]],"o":[[-1.45,0],[0.813,1.313],[1.438,-0.438]],"v":[[-456.438,-2.188],[-460.438,-0.875],[-449.25,0]],"c":true}],"h":1},{"t":71.8333333333333,"s":[{"i":[[1.521,0],[-0.412,-0.665],[-0.729,0.222]],"o":[[-0.735,0],[0.412,0.665],[0.729,-0.222]],"v":[[-455.498,-1.54],[-457.526,-0.875],[-451.854,-0.431]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-350.375,1],"ix":2},"a":{"a":0,"k":[-455.313,-0.938],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":178.598,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69.333,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":70.166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":72.666,"s":[100]},{"t":73.5003255208333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 9","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":70.166,"s":[{"i":[[3,0],[-0.813,-1.313],[-1.438,0.438]],"o":[[-1.45,0],[0.813,1.313],[1.438,-0.438]],"v":[[-456.438,-2.188],[-460.438,-0.875],[-449.25,0]],"c":true}],"h":1},{"t":71.8333333333333,"s":[{"i":[[1.521,0],[-0.412,-0.665],[-0.729,0.222]],"o":[[-0.735,0],[0.412,0.665],[0.729,-0.222]],"v":[[-455.498,-1.54],[-457.526,-0.875],[-451.854,-0.431]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-394.5,-0.25],"ix":2},"a":{"a":0,"k":[-455.375,-1.063],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69.333,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":70.166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":72.666,"s":[100]},{"t":73.5003255208333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 8","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":65.166,"s":[{"i":[[4.25,-0.125],[3.792,-4.202],[-17.974,-0.972],[-17.25,-1.25],[8.5,6],[9.25,-0.75]],"o":[[-4.25,0.125],[-4.625,5.125],[18.5,1],[12.53,0.908],[-8.5,-6],[-9.25,0.75]],"v":[[-446.75,-3.875],[-485,-1.25],[-449,6.75],[-397.75,7],[-388.25,-3],[-424,-4.5]],"c":true}],"h":1},{"t":66,"s":[{"i":[[4.25,-0.125],[3.792,-4.202],[-17.974,-0.972],[-17.25,-1.25],[8.5,6],[9.25,-0.75]],"o":[[-4.25,0.125],[-4.625,5.125],[18.5,1],[12.53,0.908],[-8.5,-6],[-9.25,0.75]],"v":[[-446.75,-3.875],[-487.5,-1],[-449,6.75],[-397.75,7],[-388.25,-3],[-424,-4.5]],"c":true}],"h":1},{"t":66.833,"s":[{"i":[[3.672,-0.108],[3.564,-3.348],[-15.551,0.11],[-15.606,-1.602],[4.32,3.456],[7.992,-0.648]],"o":[[-3.672,0.108],[-5.433,5.104],[14.923,-0.106],[10.797,1.108],[-7.019,-5.615],[-7.992,0.648]],"v":[[-437.551,-2.315],[-474.355,-2.294],[-438.896,3.136],[-399.435,4.442],[-387.32,-1.606],[-419.071,-3.334]],"c":true}],"h":1},{"t":68.5003255208333,"s":[{"i":[[2.858,-0.084],[0.597,-3.759],[-7.473,0.19],[-12.303,-2.034],[3.317,2.746],[6.221,-0.504]],"o":[[-2.858,0.084],[-0.661,4.164],[10.762,-0.273],[8.336,1.378],[-3.744,-3.1],[-6.221,0.504]],"v":[[-429.443,-1.916],[-454.339,-1.539],[-431.274,1.139],[-399.548,3.122],[-390.339,-1.364],[-414.612,-1.376]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[48.5,1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":64.333,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":65.166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69.333,"s":[100]},{"t":70.1663411458333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-362.658,1.059],"ix":2},"a":{"a":0,"k":[-372.408,1.059],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":4,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":65.166,"s":[{"i":[[3,-0.125],[-0.187,-2.893],[-4.75,-0.25],[1.25,2.75]],"o":[[-3,0.125],[0.25,3.875],[4.75,0.25],[-1.25,-2.75]],"v":[[-502.625,-5.5],[-511.25,-0.375],[-502.375,5.5],[-493.5,-0.5]],"c":true}],"h":1},{"t":66.833,"s":[{"i":[[1.964,-0.082],[-0.122,-1.894],[-3.11,-0.164],[0.818,1.8]],"o":[[-1.964,0.082],[0.164,2.537],[3.11,0.164],[-0.818,-1.8]],"v":[[-502.355,-3.579],[-508.002,-0.224],[-502.191,3.622],[-496.381,-0.306]],"c":true}],"h":1},{"t":68.5003255208333,"s":[{"i":[[0.928,-0.039],[-0.058,-0.895],[-1.47,-0.077],[0.387,0.851]],"o":[[-0.928,0.039],[0.077,1.199],[1.47,0.077],[-0.387,-0.851]],"v":[[-502.085,-1.659],[-504.754,-0.073],[-502.008,1.745],[-499.262,-0.112]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[46,1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":64.333,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":65.166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":69.333,"s":[100]},{"t":70.1663411458333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3","np":3,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":65.166,"s":[{"i":[[2.299,0],[-0.143,-2.356],[-2.244,0],[0.115,1.897]],"o":[[-2.36,0],[0.136,2.24],[1.9,0],[-0.139,-2.295]],"v":[[-527.5,-4],[-532.75,0.75],[-527,4.25],[-522.5,0.75]],"c":true}],"h":1},{"t":66.8333333333333,"s":[{"i":[[0.826,0],[-0.051,-0.847],[-0.807,0],[0.041,0.682]],"o":[[-0.848,0],[0.049,0.805],[0.683,0],[-0.05,-0.825]],"v":[[-527.589,-1.358],[-529.477,0.35],[-527.409,1.608],[-525.791,0.35]],"c":true}],"h":1}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[40.25,1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":64.333,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":65.166,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":67.666,"s":[100]},{"t":68.5003255208333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"t":56.833,"s":[{"i":[[20,0],[1,-19],[-18.998,-0.576],[0.5,25]],"o":[[-17.007,0],[-1,19],[16.5,0.5],[-0.5,-25]],"v":[[-833,-32.5],[-865,0.5],[-830,34.5],[-796.5,0.5]],"c":true}],"h":1},{"t":58.5,"s":[{"i":[[20,0],[1,-19],[-18.998,-0.576],[0.5,25]],"o":[[-17.007,0],[-1,19],[16.5,0.5],[-0.5,-25]],"v":[[-717,-32.5],[-865,0.5],[-714,33],[-668,0.5]],"c":true}],"h":1},{"t":60.166,"s":[{"i":[[20,0],[1,-19],[-18.998,-0.462],[0.5,25]],"o":[[-17.007,0],[-1,19],[16.5,0.402],[-0.5,-25]],"v":[[149,-27],[-862,0],[152,25.598],[198,-0.5]],"c":true}],"h":1},{"t":61.833,"s":[{"i":[[20,0],[1,-19],[-18.998,-0.349],[-0.45,18.001]],"o":[[-17.007,0],[-1,19],[16.5,0.303],[0.5,-20]],"v":[[559,-20.5],[-798,0],[562,19.197],[608,-0.5]],"c":true}],"h":1},{"t":63.5,"s":[{"i":[[73,0.658],[30.5,-6.5],[-19.002,-0.276],[0.5,25]],"o":[[-17.006,-0.153],[58,16.5],[68,0.987],[-0.5,-25]],"v":[[673,-22.08],[-589.5,0],[676,21.013],[776,0]],"c":true}],"h":1},{"t":65.166,"s":[{"i":[[19.987,-0.708],[221,-12],[-229,-13],[0.5,25]],"o":[[-127,4.5],[114,15],[16.481,0.936],[-0.5,-25]],"v":[[797,-26.5],[282,0],[797,26.5],[846,-0.5]],"c":true}],"h":1},{"t":66.833,"s":[{"i":[[20,0],[1,-19],[-18.998,-0.576],[0.5,25]],"o":[[-17.007,0],[-1,19],[16.5,0.5],[-0.5,-25]],"v":[[819,-33.5],[722,0],[822,32],[868,-0.5]],"c":true}],"h":1},{"t":68.5,"s":[{"i":[[18.242,0.223],[-0.24,-17.143],[-18.057,-0.023],[0.516,15.75]],"o":[[-17.559,-0.215],[0.217,15.55],[17.043,0.022],[-0.664,-20.262]],"v":[[852.508,-30.223],[821.533,-0.05],[854.057,28.773],[883.484,-0.5]],"c":true}],"h":1},{"t":70.166,"s":[{"i":[[14.169,0.174],[-0.186,-13.316],[-14.026,-0.018],[0.401,12.234]],"o":[[-13.639,-0.167],[0.169,12.078],[13.238,0.017],[-0.516,-15.738]],"v":[[871.289,-23.659],[847.229,-0.222],[872.492,22.166],[895.349,-0.572]],"c":true}],"h":1},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":71.833,"s":[{"i":[[11.26,0.138],[-0.148,-10.582],[-11.146,-0.014],[0.319,9.722]],"o":[[-10.839,-0.133],[0.134,9.598],[10.52,0.013],[-0.41,-12.507]],"v":[[882.561,-18.97],[863.441,-0.345],[883.517,17.446],[901.681,-0.623]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":73.5,"s":[{"i":[[8.06,0.099],[-0.106,-7.575],[-7.978,-0.01],[0.228,6.959]],"o":[[-7.758,-0.095],[0.096,6.871],[7.53,0.01],[-0.293,-8.953]],"v":[[891.585,-13.813],[877.899,-0.481],[892.27,12.255],[905.272,-0.68]],"c":true}]},{"t":76.8333333333333,"s":[{"i":[[2.64,0.056],[-0.035,-4.335],[-2.613,-0.006],[0.075,3.982]],"o":[[-2.541,-0.054],[0.031,3.932],[2.466,0.005],[-0.096,-5.123]],"v":[[907.017,-8.256],[902.535,-0.627],[907.241,6.661],[911.499,-0.74]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":56.833,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":76.833,"s":[100]},{"t":77.6663411458333,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false}],"ip":61,"op":81.8333333333333,"st":56.8333333333333,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 13","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"a":0,"k":[779.346,392,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[43.7,48,100],"ix":6}},"ao":0,"ef":[{"ty":5,"nm":"Turbulent Displace","np":16,"mn":"ADBE Turbulent Displace","ix":1,"en":1,"ef":[{"ty":7,"nm":"Displacement","mn":"ADBE Turbulent Displace-0001","ix":1,"v":{"a":0,"k":1,"ix":1}},{"ty":0,"nm":"Amount","mn":"ADBE Turbulent Displace-0002","ix":2,"v":{"a":0,"k":33,"ix":2}},{"ty":0,"nm":"Size","mn":"ADBE Turbulent Displace-0003","ix":3,"v":{"a":0,"k":90,"ix":3}},{"ty":3,"nm":"Offset (Turbulence)","mn":"ADBE Turbulent Displace-0004","ix":4,"v":{"a":0,"k":[960,540],"ix":4}},{"ty":0,"nm":"Complexity","mn":"ADBE Turbulent Displace-0005","ix":5,"v":{"a":0,"k":1,"ix":5}},{"ty":0,"nm":"Evolution","mn":"ADBE Turbulent Displace-0006","ix":6,"v":{"a":0,"k":0,"ix":6}},{"ty":6,"nm":"Evolution Options","mn":"ADBE Turbulent Displace-0007","ix":7,"v":0},{"ty":7,"nm":"Cycle Evolution","mn":"ADBE Turbulent Displace-0008","ix":8,"v":{"a":0,"k":0,"ix":8}},{"ty":0,"nm":"Cycle (in Revolutions)","mn":"ADBE Turbulent Displace-0009","ix":9,"v":{"a":0,"k":1,"ix":9}},{"ty":0,"nm":"Random Seed","mn":"ADBE Turbulent Displace-0010","ix":10,"v":{"a":0,"k":0,"ix":10}},{"ty":6,"nm":"Random Seed","mn":"ADBE Turbulent Displace-0011","ix":11,"v":0},{"ty":7,"nm":"Pinning","mn":"ADBE Turbulent Displace-0012","ix":12,"v":{"a":0,"k":3,"ix":12}},{"ty":7,"nm":"Resize Layer","mn":"ADBE Turbulent Displace-0013","ix":13,"v":{"a":0,"k":0,"ix":13}},{"ty":7,"nm":"Antialiasing for Best Quality","mn":"ADBE Turbulent Displace-0014","ix":14,"v":{"a":0,"k":1,"ix":14}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":56.833,"s":[{"i":[[11.322,0],[0.345,-0.017],[0,-10.973],[-11.159,-0.189],[-0.118,0],[0,11.322]],"o":[[-0.349,0],[-10.838,0.542],[0,11.204],[0.118,0.002],[11.322,0],[0,-11.322]],"v":[[1.25,-21.25],[0.208,-21.224],[-19.25,-0.75],[0.896,19.747],[1.25,19.75],[21.75,-0.75]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":57.666,"s":[{"i":[[16.482,-0.109],[0.514,-0.021],[0.053,-10.972],[-16.369,-0.081],[-0.172,0.001],[-0.054,11.321]],"o":[[-0.508,0.003],[-16.137,0.649],[-0.054,11.203],[0.173,0.001],[16.482,-0.109],[0.054,-11.321]],"v":[[16.806,-21.487],[15.273,-21.451],[-19.303,-0.751],[16.093,19.51],[16.61,19.51],[40.383,-1.145]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":58.5,"s":[{"i":[[15.609,-0.124],[1.007,-0.027],[0.06,-10.971],[-21.26,-0.005],[-0.163,0.001],[-0.062,11.321]],"o":[[-0.482,0.004],[-31.615,0.837],[-0.061,11.203],[0.224,0],[15.609,-0.124],[0.062,-11.321]],"v":[[294.52,-15.545],[292.279,-15.499],[-19.31,-0.751],[293.715,25.453],[294.296,25.452],[316.829,4.775]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":59.333,"s":[{"i":[[22.713,0],[1.996,-0.02],[0,-10.973],[-36.822,-0.163],[-0.237,0],[0,11.322]],"o":[[-0.701,0],[-62.69,0.615],[0,11.204],[0.388,0.002],[22.713,0],[0,-11.322]],"v":[[732.113,-7.432],[728.047,-7.403],[-19.25,-0.75],[731.174,33.565],[732.113,33.568],[764.738,13.068]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60.166,"s":[{"i":[[22.713,0],[2.143,-0.019],[0,-10.973],[-38.457,-0.168],[-0.237,0],[0,11.322]],"o":[[-0.701,0],[-67.327,0.6],[0,11.204],[0.405,0.002],[22.713,0],[0,-11.322]],"v":[[878.053,-4.043],[873.763,-4.014],[-4.25,-1.5],[877.088,36.954],[878.053,36.957],[910.678,16.457]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61,"s":[{"i":[[13.629,-4.561],[86.652,-5.975],[0,-10.358],[-53.446,1.16],[-22.24,8.602],[2.444,23.969]],"o":[[-9.862,3.3],[-80.243,5.533],[0,10.857],[46.354,-1.006],[18.302,-7.078],[-1.149,-11.263]],"v":[[1074.284,-36.077],[963.177,-3.705],[190.576,4.925],[941.208,34.747],[1057.908,19.478],[1102.693,-22.181]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61.833,"s":[{"i":[[25.734,-14.458],[57.535,0.433],[0,-10.358],[-53.458,-0.289],[-28.449,20.495],[16.742,10.948]],"o":[[-45.444,25.531],[-80.43,-0.606],[0,10.857],[97.834,0.528],[20.653,-14.879],[-26.837,-17.549]],"v":[[1072.672,-29.604],[937.627,-1.065],[432.522,10.148],[956.717,34.381],[1120.036,-15.944],[1150.156,-76.861]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":62.666,"s":[{"i":[[23.815,-17.439],[60.087,-2.523],[0,-10.358],[-53.395,2.605],[-27.04,22.321],[16.742,10.948]],"o":[[-61.791,45.249],[-80.362,3.374],[0,10.857],[115.945,-5.656],[30.862,-25.477],[-26.837,-17.549]],"v":[[1107.611,-54.498],[937.531,4.434],[656.485,14.205],[956.813,28.882],[1139.838,-33.101],[1191.46,-122.647]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":63.5,"s":[{"i":[[18.893,-22.679],[60.087,-2.523],[-0.009,-7.129],[-53.457,0.418],[-28.313,20.683],[27.034,12.374]],"o":[[-49.538,59.465],[-80.362,3.374],[0.014,10.931],[106.359,-0.832],[43.474,-31.758],[-19.486,-8.919]],"v":[[1132.449,-73.568],[950.977,7.678],[819.989,15.441],[962.338,27.487],[1135.304,-31.18],[1210.331,-172.326]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":64.333,"s":[{"i":[[11.856,-27.032],[56.914,-19.432],[-1.357,-6.999],[-58.312,21.909],[-22.064,27.25],[29.714,1.04]],"o":[[-31.29,71.344],[-44.492,15.191],[2.081,10.731],[33.919,-12.744],[45.923,-56.717],[-24.377,-0.853]],"v":[[1179.204,-142.321],[1032.438,-3.447],[944.982,17.633],[1072.983,5.804],[1169.801,-60.084],[1218.771,-211.834]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65.166,"s":[{"i":[[14.53,-35.892],[30.675,-23.851],[5.099,-4.983],[-50.58,36.358],[-16.698,30.832],[29.683,1.694]],"o":[[-19.208,47.446],[-37.115,28.858],[-11.962,11.69],[28.617,-20.57],[23.405,-43.217],[-25.543,-1.458]],"v":[[1178.34,-146.817],[1108.748,-47.775],[1041.305,6.278],[1128.594,-38.743],[1209.941,-137.785],[1216.557,-246.794]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":66,"s":[{"i":[[6.463,-38.179],[26.105,-35.723],[3.462,-6.232],[-38.476,48.988],[-6.091,22.999],[28.929,-6.861]],"o":[[-2.665,15.742],[-27.739,37.959],[-8.122,14.621],[16.705,-21.269],[12.583,-47.51],[-24.895,5.904]],"v":[[1195.756,-182.445],[1160.966,-93.998],[1108.528,-35.694],[1176.987,-93.916],[1220.9,-173.321],[1205.693,-274.264]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":66.833,"s":[{"i":[[-3.967,-38.518],[14.738,-41.718],[2.805,-6.554],[-17.135,35.515],[3.642,44.481],[5.311,-9.959]],"o":[[1.636,15.882],[-10.128,28.668],[-4.058,9.483],[11.752,-24.358],[-4.01,-48.984],[-7.603,14.257]],"v":[[1203.101,-232.396],[1185.56,-129.169],[1153.419,-77.434],[1199.41,-126.896],[1227.572,-246.524],[1191.203,-296.143]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":67.666,"s":[{"i":[[-6.517,-18.867],[6.536,-33.775],[1.403,-5.363],[-9.315,43.217],[8.841,20.883],[2.939,-8.269]],"o":[[4.053,11.734],[-4.492,23.21],[-2.03,7.758],[4.43,-20.556],[-14.898,-35.19],[-4.207,11.838]],"v":[[1193.273,-271.965],[1203.312,-170.863],[1184.545,-127.384],[1220.176,-196.608],[1217.473,-286.022],[1181.171,-312.54]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":68.5,"s":[{"i":[[-9.304,-14.906],[-0.873,-44.41],[0.562,-4.797],[-0.324,53.603],[11.725,14.991],[1.63,-7.53]],"o":[[5.786,9.27],[0.403,20.504],[-0.813,6.94],[0.11,-18.265],[-20.528,-26.245],[-2.334,10.78]],"v":[[1182.667,-295.219],[1206.787,-226.586],[1201.598,-166.302],[1220.883,-246.831],[1203.141,-311.834],[1169.962,-323.009]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":69.333,"s":[{"i":[[-9.304,-14.906],[-6.738,-23.509],[0.562,-4.797],[3.138,27.16],[11.278,15.331],[4.942,-5.911]],"o":[[5.786,9.27],[5.651,19.714],[-0.813,6.94],[-2.096,-18.145],[-13.204,-17.949],[-5.257,6.287]],"v":[[1174.843,-305.357],[1208.609,-245.057],[1211.646,-197.632],[1218.662,-262.872],[1195.807,-321.463],[1166.646,-333.568]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":70.166,"s":[{"i":[[-11.178,-13.557],[-7.335,-18.018],[0.562,-4.797],[7.715,22.739],[11.278,15.331],[4.942,-5.911]],"o":[[9.466,11.481],[7.732,18.994],[-0.813,6.94],[-5.869,-17.297],[-13.204,-17.949],[-5.257,6.287]],"v":[[1164.993,-314.03],[1200.968,-265.693],[1214.144,-226.092],[1209.987,-281.526],[1186.957,-330.119],[1157.769,-340.724]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":71,"s":[{"i":[[-5.68,-5.275],[-6.615,-5.699],[-5.996,-9.279],[4.449,11.328],[8.129,7.475],[4.963,-6.237]],"o":[[9.337,8.672],[7.612,6.558],[4.077,-17.869],[-3.896,-9.921],[-10.024,-9.217],[-4.807,6.041]],"v":[[1156.32,-325.652],[1174.022,-308.569],[1196.611,-282.346],[1192.558,-321.685],[1176.913,-343.998],[1153.575,-346.545]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":71.833,"s":[{"i":[[-4.618,-4.412],[-5.383,-4.772],[-4.833,-7.713],[3.536,9.381],[6.61,6.253],[4.158,-5.076]],"o":[[7.591,7.253],[6.195,5.492],[3.56,-14.665],[-3.097,-8.217],[-8.152,-7.711],[-4.028,4.917]],"v":[[1150.562,-334.187],[1164.948,-319.907],[1183.255,-298.042],[1180.363,-330.484],[1167.73,-349.046],[1148.538,-351.424]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":72.666,"s":[{"i":[[-4.207,-3.771],[-4.886,-4.078],[-4.552,-6.589],[3.511,8.013],[6.019,5.343],[3.352,-4.333]],"o":[[6.916,6.198],[5.623,4.693],[2.372,-12.522],[-3.075,-7.019],[-7.422,-6.589],[-3.247,4.197]],"v":[[1147.89,-337.464],[1161.022,-325.261],[1177.911,-306.579],[1173.845,-334.286],[1162.023,-350.145],[1145.308,-352.186]],"c":true}]},{"t":73.5003255208333,"s":[{"i":[[-3.787,-3.137],[-4.403,-3.357],[-4.057,-5.786],[3.081,7.256],[5.419,4.439],[3.136,-4.492]],"o":[[6.225,5.157],[5.067,3.863],[2.373,-12.188],[-2.698,-6.355],[-6.682,-5.475],[-3.038,4.351]],"v":[[1146.958,-339.941],[1158.771,-329.735],[1173.915,-313.763],[1170.646,-339.723],[1160.09,-353.554],[1144.835,-353.689]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-721,85],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-1,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":66.833,"s":[{"i":[[-1.848,-1.875],[-1.957,2.875],[-0.435,6],[5,-6]],"o":[[1.848,1.875],[1.957,-2.875],[0.435,-6],[-5,6]],"v":[[404.456,17.75],[410.543,14.375],[419.348,4.625],[410.869,6.875]],"c":true}]},{"t":71.0003255208333,"s":[{"i":[[-0.708,-0.483],[-0.42,0.573],[0.389,0.655],[0.499,-1.177]],"o":[[1.05,0.716],[0.992,-1.354],[-0.735,-1.237],[-0.242,0.571]],"v":[[433.253,-14.046],[435.614,-14.589],[436.296,-17.576],[433.331,-16.399]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":66,"s":[0],"h":1},{"t":66.833,"s":[100],"h":1},{"t":71.8333333333333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 11","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":66,"s":[{"i":[[5.332,-4.406],[10.05,-7.572],[1.148,-0.821],[-8.315,4.877],[-3.93,2.126]],"o":[[-3.121,2.579],[-3.833,2.888],[2.727,2.148],[6.731,-3.948],[8.785,-4.751]],"v":[[321.037,36.094],[290.353,57.89],[284.11,64.219],[302.203,53.915],[319.584,46.207]],"c":true}]},{"t":71.0003255208333,"s":[{"i":[[1.425,0.375],[0.516,-1.431],[0.049,-0.343],[-0.554,-0.143],[-0.279,0.334]],"o":[[-1.228,-0.324],[-0.141,0.391],[-0.06,0.416],[0.573,0.148],[0.944,-1.131]],"v":[[333.77,22.361],[330.951,24.963],[330.662,26.083],[331.622,26.966],[333.142,26.736]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[331.087,62.625],"ix":2},"a":{"a":0,"k":[283.928,58.982],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-0.198,"ix":6},"o":{"a":1,"k":[{"t":65.166,"s":[1],"h":1},{"t":66,"s":[100],"h":1},{"t":71.8333333333333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 10","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65.166,"s":[{"i":[[6.001,-3.438],[4.622,-1.369],[-9.463,3.193]],"o":[[-4.853,2.78],[-6.364,1.884],[9.463,-3.193]],"v":[[287.03,54.981],[272.713,60.955],[289.158,61.059]],"c":true}]},{"t":68.5003255208333,"s":[{"i":[[1.379,-0.683],[-0.18,-1.043],[-1.179,0.646]],"o":[[-1.734,0.859],[0.188,1.086],[1.764,-0.966]],"v":[[307.257,48.925],[305.837,51.696],[308.931,52.026]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[293.913,77.25],"ix":2},"a":{"a":0,"k":[283.928,58.982],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":-0.198,"ix":6},"o":{"a":1,"k":[{"t":64.333,"s":[1],"h":1},{"t":65.166,"s":[100],"h":1},{"t":69.3333333333333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 9","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65.166,"s":[{"i":[[2.875,-0.125],[-8.035,-2.12],[-6.725,1.978]],"o":[[-2.875,0.125],[9,2.375],[8.5,-2.5]],"v":[[239.75,63.5],[218.75,70.625],[240.375,70]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":66,"s":[{"i":[[2.876,0.091],[-3.613,-2.264],[-3,1.66]],"o":[[-2.876,-0.091],[4.677,2.93],[7.752,-4.291]],"v":[[248.185,61.363],[234.385,66.845],[249.523,68.399]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":66.833,"s":[{"i":[[2.781,-0.74],[-1.488,-1.369],[-1.507,2.224]],"o":[[-2.781,0.74],[2.644,2.433],[1.864,-2.752]],"v":[[250.348,60.068],[244.863,65.494],[254.886,64.877]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":67.666,"s":[{"i":[[1.649,-0.439],[-0.882,-0.811],[-0.893,1.319]],"o":[[-1.649,0.439],[1.568,1.442],[1.105,-1.632]],"v":[[252.991,59.068],[251.221,62.433],[255.681,61.919]],"c":true}]},{"t":68.5003255208333,"s":[{"i":[[1.256,-0.334],[-0.672,-0.618],[-0.68,1.004]],"o":[[-1.256,0.334],[1.194,1.098],[0.842,-1.243]],"v":[[254.502,58.588],[253.154,61.152],[256.551,60.76]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[17.826,16],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":64.333,"s":[0],"h":1},{"t":65.166,"s":[100],"h":1},{"t":69.3333333333333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 8","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":64.333,"s":[{"i":[[0,0],[6.25,-5.25],[-8,2.5],[8.5,2.5]],"o":[[0,0],[-6.25,5.25],[8,-2.5],[-8.5,-2.5]],"v":[[101,65.25],[80.75,66.75],[111.75,74.25],[125.5,66.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65.166,"s":[{"i":[[0,0],[-3.699,-2.367],[-3.884,2.019],[4.127,2.019]],"o":[[0,0],[2.367,1.514],[3.884,-2.019],[-4.127,-2.019]],"v":[[118.172,64.837],[113.256,70.894],[123.39,72.106],[130.066,65.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":66,"s":[{"i":[[0,0],[-1.235,-2.726],[-2.801,1.026],[1.549,1.158]],"o":[[0,0],[0.71,1.566],[2.801,-1.026],[-2.508,-1.874]],"v":[[126.435,64.519],[123.517,68.184],[130.262,69.992],[132.951,65.48]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":66.833,"s":[{"i":[[0,0],[-0.755,-1.666],[-1.712,0.627],[0.947,0.708]],"o":[[0,0],[0.434,0.957],[1.712,-0.627],[-1.533,-1.145]],"v":[[129.695,64.355],[127.912,66.595],[132.034,67.7],[133.678,64.942]],"c":true}]},{"t":67.6663411458333,"s":[{"i":[[0,0],[-0.438,-0.966],[-0.993,0.364],[0.549,0.41]],"o":[[0,0],[0.251,0.555],[0.993,-0.364],[-0.889,-0.664]],"v":[[131.885,64.447],[130.852,65.746],[133.242,66.386],[134.195,64.788]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[55.12,18.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":63.5,"s":[0],"h":1},{"t":64.333,"s":[100],"h":1},{"t":68.5003255208333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 7","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":63.5,"s":[{"i":[[0,0],[6.25,-5.25],[-8,2.5],[8.5,2.5]],"o":[[0,0],[-6.25,5.25],[8,-2.5],[-8.5,-2.5]],"v":[[101,65.25],[80.75,66.75],[111.75,74.25],[125.5,66.25]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":64.333,"s":[{"i":[[0,0],[-3.699,-2.367],[-3.884,2.019],[4.127,2.019]],"o":[[0,0],[2.367,1.514],[3.884,-2.019],[-4.127,-2.019]],"v":[[118.172,64.837],[113.256,70.894],[123.391,72.106],[130.066,65.644]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65.166,"s":[{"i":[[0,0],[-1.235,-2.726],[-2.801,1.026],[1.549,1.158]],"o":[[0,0],[0.71,1.566],[2.801,-1.026],[-2.508,-1.874]],"v":[[125.685,65.769],[122.767,69.434],[129.512,71.242],[132.201,66.73]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":66,"s":[{"i":[[0,0],[-0.755,-1.666],[-1.712,0.627],[0.947,0.708]],"o":[[0,0],[0.434,0.957],[1.712,-0.627],[-1.533,-1.145]],"v":[[129.445,66.855],[127.662,69.095],[131.784,70.2],[133.428,67.442]],"c":true}]},{"t":66.8333333333333,"s":[{"i":[[0,0],[-0.438,-0.966],[-0.993,0.364],[0.549,0.41]],"o":[[0,0],[0.251,0.555],[0.993,-0.364],[-0.889,-0.664]],"v":[[132.073,67.572],[131.039,68.871],[133.429,69.511],[134.382,67.913]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-31.304,15],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":62.666,"s":[0],"h":1},{"t":63.5,"s":[100],"h":1},{"t":67.6663411458333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":64.333,"s":[{"i":[[4.652,3.866],[0.317,-3.123],[-4.812,-0.938]],"o":[[-4.652,-3.866],[-0.317,3.123],[4.812,0.938]],"v":[[-513.42,73.625],[-538.679,74.835],[-515.78,80.171]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65.166,"s":[{"i":[[2.816,2.132],[0.154,-2.732],[-2.47,0.079]],"o":[[-3.241,-2.454],[-0.154,2.732],[2.974,-0.095]],"v":[[-511.191,74.099],[-521.346,75.103],[-512.006,79.608]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":66,"s":[{"i":[[1.529,1.464],[0.083,-1.876],[-1.341,0.054]],"o":[[-1.759,-1.685],[-0.083,1.876],[1.615,-0.065]],"v":[[-509.154,74.587],[-514.667,75.277],[-511.012,78.358]],"c":true}]},{"t":66.8333333333333,"s":[{"i":[[1.046,1.002],[0.057,-1.284],[-0.917,0.037]],"o":[[-1.204,-1.153],[-0.057,1.284],[1.105,-0.045]],"v":[[-508.046,74.925],[-511.818,75.397],[-509.318,77.505]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[126.25,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":63.5,"s":[0],"h":1},{"t":64.333,"s":[100],"h":1},{"t":67.6663411458333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 8","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":64.333,"s":[{"i":[[3.694,2.428],[-0.025,-2.294],[-3.572,-0.288]],"o":[[-3.694,-2.428],[0.025,2.294],[3.572,0.288]],"v":[[-567.944,74.515],[-577.502,78.021],[-570.185,82.462]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65.166,"s":[{"i":[[2.581,1.696],[-0.018,-1.603],[-2.496,-0.201]],"o":[[-2.581,-1.696],[0.018,1.603],[2.496,0.201]],"v":[[-564.081,75.39],[-570.76,77.839],[-565.647,80.943]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":66,"s":[{"i":[[1.886,1.239],[-0.013,-1.171],[-1.823,-0.147]],"o":[[-1.886,-1.239],[0.013,1.171],[1.823,0.147]],"v":[[-562.761,75.937],[-567.64,77.726],[-563.905,79.993]],"c":true}]},{"t":66.8333333333333,"s":[{"i":[[1.329,0.736],[-0.009,-0.696],[-1.285,-0.087]],"o":[[-1.329,-0.736],[0.009,0.696],[1.285,0.087]],"v":[[-559.329,76.538],[-562.768,77.601],[-560.136,78.949]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[126.25,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":63.5,"s":[0],"h":1},{"t":64.333,"s":[100],"h":1},{"t":67.6663411458333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 7","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.908,0.183],[-0.035,-4.015],[-4.965,-0.504],[-10.464,0.985],[-4.133,0.503],[-0.107,1.024],[13.717,0.931]],"o":[[-6.653,-0.42],[0.035,4.015],[1.388,0.141],[5.467,-0.515],[4.596,-0.559],[0.152,-1.445],[-10.969,-0.745]],"v":[[-566.295,72.587],[-589.833,78.972],[-559.661,83.746],[-536.761,81.379],[-521.818,79.944],[-514.015,77.696],[-533.468,70.031]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[126.25,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":62.666,"s":[0],"h":1},{"t":63.5,"s":[100],"h":1},{"t":64.3333333333333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-4.701,82.841],"ix":2},"a":{"a":0,"k":[-424.093,76.841],"ix":1},"s":{"a":0,"k":[100,-77.71],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":63.5,"s":[{"i":[[4.652,3.866],[0.317,-3.123],[-4.812,-0.938]],"o":[[-4.652,-3.866],[-0.317,3.123],[4.812,0.938]],"v":[[-513.42,73.625],[-538.679,74.835],[-515.78,80.171]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":64.333,"s":[{"i":[[2.816,2.132],[0.154,-2.732],[-2.47,0.079]],"o":[[-3.241,-2.454],[-0.154,2.732],[2.974,-0.095]],"v":[[-511.191,74.099],[-521.346,75.103],[-512.006,79.608]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65.166,"s":[{"i":[[1.529,1.464],[0.083,-1.876],[-1.341,0.054]],"o":[[-1.759,-1.685],[-0.083,1.876],[1.615,-0.065]],"v":[[-509.154,74.587],[-514.667,75.277],[-511.012,78.358]],"c":true}]},{"t":66.0003255208333,"s":[{"i":[[1.046,1.002],[0.057,-1.284],[-0.917,0.037]],"o":[[-1.204,-1.153],[-0.057,1.284],[1.105,-0.045]],"v":[[-508.046,74.925],[-511.818,75.397],[-509.318,77.505]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[126.25,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":62.666,"s":[0],"h":1},{"t":63.5,"s":[100],"h":1},{"t":66.8333333333333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 8","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":63.5,"s":[{"i":[[3.694,2.428],[-0.025,-2.294],[-3.572,-0.288]],"o":[[-3.694,-2.428],[0.025,2.294],[3.572,0.288]],"v":[[-567.944,74.515],[-577.502,78.021],[-570.185,82.462]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":64.333,"s":[{"i":[[2.581,1.696],[-0.018,-1.603],[-2.496,-0.201]],"o":[[-2.581,-1.696],[0.018,1.603],[2.496,0.201]],"v":[[-564.081,75.39],[-570.76,77.839],[-565.647,80.943]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65.166,"s":[{"i":[[1.886,1.239],[-0.013,-1.171],[-1.823,-0.147]],"o":[[-1.886,-1.239],[0.013,1.171],[1.823,0.147]],"v":[[-562.761,75.937],[-567.64,77.726],[-563.905,79.993]],"c":true}]},{"t":66.0003255208333,"s":[{"i":[[1.329,0.736],[-0.009,-0.696],[-1.285,-0.087]],"o":[[-1.329,-0.736],[0.009,0.696],[1.285,0.087]],"v":[[-559.329,76.538],[-562.768,77.601],[-560.136,78.949]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[126.25,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":62.666,"s":[0],"h":1},{"t":63.5,"s":[100],"h":1},{"t":66.8333333333333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 7","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.908,0.183],[-0.035,-4.015],[-4.965,-0.504],[-10.464,0.985],[-4.133,0.503],[-0.107,1.024],[13.717,0.931]],"o":[[-6.653,-0.42],[0.035,4.015],[1.388,0.141],[5.467,-0.515],[4.596,-0.559],[0.152,-1.445],[-10.969,-0.745]],"v":[[-566.295,72.587],[-589.833,78.972],[-559.661,83.746],[-536.761,81.379],[-521.818,79.944],[-514.015,77.696],[-533.468,70.031]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[126.25,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":61.833,"s":[0],"h":1},{"t":62.666,"s":[100],"h":1},{"t":63.5003255208333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-115.701,82.841],"ix":2},"a":{"a":0,"k":[-424.093,76.841],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61.833,"s":[{"i":[[14.298,-0.054],[0.036,-3.288],[-10.012,-0.052]],"o":[[-10.607,0.04],[-0.043,3.974],[11.703,0.061]],"v":[[-545.673,75.118],[-590.957,80.579],[-545.703,86.128]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":62.666,"s":[{"i":[[9.143,-0.038],[0.023,-2.29],[-6.402,-0.036]],"o":[[-6.782,0.028],[-0.028,2.768],[7.483,0.043]],"v":[[-534.518,76.79],[-563.472,80.593],[-534.537,84.457]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":63.5,"s":[{"i":[[6.887,-0.028],[0.017,-1.725],[-4.822,-0.027]],"o":[[-5.109,0.021],[-0.021,2.085],[5.637,0.032]],"v":[[-530.637,77.694],[-538.229,80.567],[-530.651,83.469]],"c":true}]},{"t":64.3333333333333,"s":[{"i":[[1.84,-0.014],[0.005,-0.823],[-1.289,-0.013]],"o":[[-1.365,0.01],[-0.006,0.994],[1.506,0.015]],"v":[[-525.59,79.206],[-527.619,80.576],[-525.594,81.96]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[50,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":61,"s":[0],"h":1},{"t":61.833,"s":[100],"h":1},{"t":65.1663411458333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61.833,"s":[{"i":[[4.869,1.745],[-0.033,-1.648],[-4.708,-0.207]],"o":[[-4.869,-1.745],[0.033,1.648],[4.708,0.207]],"v":[[-621.244,79.457],[-632.592,82.226],[-622.948,85.418]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":62.666,"s":[{"i":[[2.36,1.324],[-0.016,-1.251],[-2.281,-0.157]],"o":[[-2.36,-1.324],[0.016,1.251],[2.281,0.157]],"v":[[-618.235,79.99],[-623.734,82.092],[-619.06,84.515]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":63.5,"s":[{"i":[[1.686,0.946],[-0.012,-0.894],[-1.629,-0.112]],"o":[[-1.686,-0.946],[0.012,0.894],[1.629,0.112]],"v":[[-615.436,80.47],[-619.363,81.971],[-616.025,83.701]],"c":true}]},{"t":64.3333333333333,"s":[{"i":[[0.974,0.547],[-0.007,-0.516],[-0.941,-0.065]],"o":[[-0.974,-0.547],[0.007,0.516],[0.941,0.065]],"v":[[-613.099,80.976],[-615.368,81.843],[-613.44,82.843]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":61,"s":[0],"h":1},{"t":61.833,"s":[100],"h":1},{"t":65.1663411458333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61.833,"s":[{"i":[[10.353,2.306],[-0.07,-2.179],[-10.009,-0.274]],"o":[[-10.353,-2.306],[0.07,2.179],[10.009,0.274]],"v":[[-580.173,78.536],[-606.957,81.865],[-586.453,86.084]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":62.666,"s":[{"i":[[2.976,1.724],[-0.02,-1.629],[-2.877,-0.205]],"o":[[-2.976,-1.724],[0.02,1.629],[2.877,0.205]],"v":[[-574.601,79.232],[-582.3,81.721],[-576.406,84.876]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":63.5,"s":[{"i":[[1.661,0.651],[-0.012,-0.944],[-1.667,-0.119]],"o":[[-1.855,-0.727],[0.012,0.944],[1.667,0.119]],"v":[[-573.599,80.037],[-576.621,81.52],[-574.27,83.369]],"c":true}]},{"t":64.3333333333333,"s":[{"i":[[0.865,0.339],[-0.006,-0.492],[-0.868,-0.062]],"o":[[-0.966,-0.378],[0.006,0.491],[0.868,0.062]],"v":[[-571.428,80.689],[-573.002,81.462],[-571.777,82.425]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":60.166,"s":[0],"h":1},{"t":61,"s":[100],"h":1},{"t":65.1663411458333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-284.543,85.184],"ix":2},"a":{"a":0,"k":[-567.935,80.684],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61.833,"s":[{"i":[[4.652,3.866],[0.317,-3.123],[-4.812,-0.938]],"o":[[-4.652,-3.866],[-0.317,3.123],[4.812,0.938]],"v":[[-513.42,73.625],[-538.679,74.835],[-515.78,80.171]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":62.666,"s":[{"i":[[2.816,2.132],[0.154,-2.732],[-2.47,0.079]],"o":[[-3.241,-2.454],[-0.154,2.732],[2.974,-0.095]],"v":[[-511.191,74.099],[-521.346,75.103],[-512.006,79.608]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":63.5,"s":[{"i":[[1.529,1.464],[0.083,-1.876],[-1.341,0.054]],"o":[[-1.759,-1.685],[-0.083,1.876],[1.615,-0.065]],"v":[[-509.154,74.587],[-514.667,75.277],[-511.012,78.358]],"c":true}]},{"t":64.3333333333333,"s":[{"i":[[1.046,1.002],[0.057,-1.284],[-0.917,0.037]],"o":[[-1.204,-1.153],[-0.057,1.284],[1.105,-0.045]],"v":[[-508.046,74.925],[-511.818,75.397],[-509.318,77.505]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[126.25,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":61,"s":[0],"h":1},{"t":61.833,"s":[100],"h":1},{"t":65.1663411458333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 8","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61.833,"s":[{"i":[[3.694,2.428],[-0.025,-2.294],[-3.572,-0.288]],"o":[[-3.694,-2.428],[0.025,2.294],[3.572,0.288]],"v":[[-567.944,74.515],[-577.502,78.021],[-570.185,82.462]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":62.666,"s":[{"i":[[2.581,1.696],[-0.018,-1.603],[-2.496,-0.201]],"o":[[-2.581,-1.696],[0.018,1.603],[2.496,0.201]],"v":[[-564.081,75.39],[-570.76,77.839],[-565.647,80.943]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":63.5,"s":[{"i":[[1.886,1.239],[-0.013,-1.171],[-1.823,-0.147]],"o":[[-1.886,-1.239],[0.013,1.171],[1.823,0.147]],"v":[[-562.761,75.937],[-567.64,77.726],[-563.905,79.993]],"c":true}]},{"t":64.3333333333333,"s":[{"i":[[1.329,0.736],[-0.009,-0.696],[-1.285,-0.087]],"o":[[-1.329,-0.736],[0.009,0.696],[1.285,0.087]],"v":[[-559.329,76.538],[-562.768,77.601],[-560.136,78.949]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[126.25,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":61,"s":[0],"h":1},{"t":61.833,"s":[100],"h":1},{"t":65.1663411458333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 7","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.908,0.183],[-0.035,-4.015],[-4.965,-0.504],[-10.464,0.985],[-4.133,0.503],[-0.107,1.024],[13.717,0.931]],"o":[[-6.653,-0.42],[0.035,4.015],[1.388,0.141],[5.467,-0.515],[4.596,-0.559],[0.152,-1.445],[-10.969,-0.745]],"v":[[-566.295,72.587],[-589.833,78.972],[-559.661,83.746],[-536.761,81.379],[-521.818,79.944],[-514.015,77.696],[-533.468,70.031]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[126.25,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":60.166,"s":[0],"h":1},{"t":61,"s":[100],"h":1},{"t":61.8333333333333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-426.701,87.841],"ix":2},"a":{"a":0,"k":[-424.093,76.841],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61,"s":[{"i":[[14.298,-0.054],[0.036,-3.288],[-10.012,-0.052]],"o":[[-10.607,0.04],[-0.043,3.974],[11.703,0.061]],"v":[[-571.673,75.179],[-590.957,80.579],[-571.703,86.189]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61.833,"s":[{"i":[[7.176,-0.042],[0.018,-2.549],[-5.025,-0.041]],"o":[[-5.323,0.031],[-0.022,3.081],[5.873,0.047]],"v":[[-563.301,77.667],[-572.978,81.853],[-563.316,86.203]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":62.666,"s":[{"i":[[3.284,0.186],[0.006,-1.479],[-1.743,-0.063]],"o":[[-1.845,-0.105],[-0.008,1.788],[3.229,0.116]],"v":[[-559.482,79.432],[-562.17,81.888],[-559.487,84.384]],"c":true}]},{"t":63.5003255208333,"s":[{"i":[[2.54,0.144],[0.005,-1.144],[-1.348,-0.048]],"o":[[-1.427,-0.081],[-0.006,1.382],[2.497,0.09]],"v":[[-556.29,79.994],[-558.369,81.894],[-556.294,83.824]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.935,-4.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":60.166,"s":[0],"h":1},{"t":61,"s":[100],"h":1},{"t":64.3333333333333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61,"s":[{"i":[[-3.416,-2.174],[0.023,2.053],[3.303,0.258]],"o":[[3.416,2.174],[-0.023,-2.053],[-3.303,-0.258]],"v":[[-622.236,85.018],[-613.398,81.88],[-620.164,77.904]],"c":true}]},{"t":61.8333333333333,"s":[{"i":[[2.025,1.288],[-0.014,-1.217],[-1.958,-0.153]],"o":[[-2.025,-1.288],[0.014,1.217],[1.958,0.153]],"v":[[-609.15,80.128],[-614.389,81.988],[-610.378,84.345]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-4.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":60.166,"s":[0],"h":1},{"t":61,"s":[100],"h":1},{"t":62.6663411458333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61,"s":[{"i":[[10.353,2.306],[-0.07,-2.179],[-10.009,-0.274]],"o":[[-10.353,-2.306],[0.07,2.179],[10.009,0.274]],"v":[[-580.173,78.536],[-606.957,81.865],[-586.453,86.084]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61.833,"s":[{"i":[[2.976,1.724],[-0.02,-1.629],[-2.877,-0.205]],"o":[[-2.976,-1.724],[0.02,1.629],[2.877,0.205]],"v":[[-574.601,79.232],[-582.3,81.721],[-576.406,84.876]],"c":true}]},{"t":62.6663411458333,"s":[{"i":[[1.661,0.651],[-0.012,-0.944],[-1.667,-0.119]],"o":[[-1.855,-0.727],[0.012,0.944],[1.667,0.119]],"v":[[-573.599,80.037],[-576.621,81.52],[-574.27,83.369]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,-4.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":60.166,"s":[0],"h":1},{"t":61,"s":[100],"h":1},{"t":63.5003255208333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-570.543,87.684],"ix":2},"a":{"a":0,"k":[-567.935,80.684],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.49,1.863],[0,0],[-7.181,0.153]],"o":[[-7.49,-1.863],[0,0],[7.181,-0.153]],"v":[[-661.49,79.935],[-687.038,82.701],[-668.091,85.619]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.047058868408,0,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[21.739,1.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"t":60.166,"s":[0],"h":1},{"t":61,"s":[100],"h":1},{"t":61.8333333333333,"s":[0],"h":1}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false}],"ip":61,"op":75.1666666666667,"st":56.8333333333333,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 11","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[960,539.5,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0,0,0.667],"y":[1,1,1]},"o":{"x":[0,0,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":13,"s":[971,971,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[7.456,0],[0,-7.456],[-7.456,0],[0,7.456]],"o":[[-7.456,0],[0,7.456],[7.456,0],[0,-7.456]],"v":[[0.75,-10.75],[-12.75,2.75],[0.75,16.25],[14.25,2.75]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0],"y":[0]},"t":0,"s":[41]},{"t":23.8974609375,"s":[0]}],"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0.5,2.5],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":23,"st":-2,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 9","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[960,540,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-29],[1104,-195.999]],"o":[[0,0],[0,770],[0,0.001]],"v":[[-117.997,-146.999],[-118,146],[0,-0.001]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":35,"s":[48]},{"t":56,"s":[-41]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 2","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":25,"s":[0]},{"t":26.09375,"s":[4]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":25,"s":[296]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":45,"s":[182.4]},{"t":66,"s":[44]}],"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":57.7,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":25,"op":57,"st":25,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 7","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[960,540,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-118,1028]],"o":[[0,0],[762,0],[0,-36]],"v":[[-30,117],[146,117],[0,0]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":27,"s":[48]},{"t":48,"s":[-41]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 2","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":17,"s":[0]},{"t":18.09375,"s":[4]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":17,"s":[296]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":37,"s":[182.4]},{"t":61,"s":[44]}],"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":60,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":17,"op":49,"st":17,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Shape Layer 6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[960,540,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[30,0],[34.001,998]],"o":[[0,0],[-934,0],[0,-340]],"v":[[144,0],[-30,0],[0,0]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":19,"s":[48]},{"t":40,"s":[-41]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 2","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":9,"s":[0]},{"t":10.09375,"s":[4]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":9,"s":[296]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":29.227,"s":[182.4]},{"t":48,"s":[44]}],"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":60,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":9,"op":39,"st":9,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[960,540,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,-1040]],"o":[[0,0],[898,0],[0,1172]],"v":[[-30,-118],[146,-118],[0,0]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":0,"k":100,"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":9,"s":[48]},{"t":30,"s":[-41]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 2","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":-1,"s":[0]},{"t":0.09375,"s":[4]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":-1,"s":[296]},{"i":{"x":[0],"y":[1]},"o":{"x":[1],"y":[0]},"t":19.227,"s":[182.4]},{"t":43,"s":[44]}],"ix":3},"m":1,"ix":3,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":60,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":5,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":-1,"op":31,"st":-1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"E-SideLine Outlines 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[842,539.5,0],"ix":2},"a":{"a":0,"k":[30,147.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0,"y":0},"t":56,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-29.319,146.595],[29.319,146.595],[29.638,148.405],[-29,148.405]],"c":true}]},{"i":{"x":0.45,"y":1},"o":{"x":0.792,"y":0},"t":61,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-29.319,146.595],[29.319,146.595],[29.319,-276.595],[-29.319,-276.595]],"c":true}]},{"i":{"x":0.353,"y":1},"o":{"x":0.766,"y":0},"t":68,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-29.319,146.595],[29.319,146.595],[29.479,-64.095],[-29.16,-64.095]],"c":true}]},{"i":{"x":0.329,"y":1},"o":{"x":0.699,"y":0},"t":75,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-29.319,146.595],[29.319,146.595],[29.387,-185.524],[-29.251,-185.524]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":81,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-29.319,146.595],[29.319,146.595],[29.44,-116.136],[-29.199,-116.136]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":87,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-29.319,146.595],[29.319,146.595],[29.414,-150.83],[-29.225,-150.83]],"c":true}]},{"t":93,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-29.319,146.595],[29.319,146.595],[29.319,-146.595],[-29.319,-146.595]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.223,295.033],"ix":2},"a":{"a":0,"k":[0,147.516],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":57,"op":13182,"st":55,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"E-1rdLine Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0,"y":0},"t":47,"s":[1068.739,656.907,0],"to":[0,0,0],"ti":[0,0,0]},{"t":76,"s":[928.739,656.907,0]}],"ix":2},"a":{"a":0,"k":[89,30,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0,"y":0},"t":47,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[87.958,-29.319],[90.042,-29.731],[90.042,28.907],[87.958,29.319]],"c":true}]},{"t":66,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[87.958,-29.319],[-87.958,-29.319],[-87.958,29.319],[87.958,29.319]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[269.119,29.774],"ix":2},"a":{"a":0,"k":[89.1,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":49,"op":13174,"st":47,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"E-2ndLine Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0,"y":0},"t":38,"s":[918,539.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":66,"s":[1018,539.5,0]}],"ix":2},"a":{"a":0,"k":[89,30.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0,"y":0},"t":38,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-87.042,-29.638],[-87.958,-29.319],[-87.958,29.319],[-87.042,29]],"c":true}]},{"t":56,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[87.958,-29.319],[-87.958,-29.319],[-87.958,29.319],[87.958,29.319]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89.119,30.497],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":39,"op":13164,"st":37,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"E-1stLine Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0,"y":0},"t":28,"s":[1158,422,0],"to":[0,0,0],"ti":[0,0,0]},{"t":57,"s":[1018,422,0]}],"ix":2},"a":{"a":0,"k":[89,30,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":0,"y":0},"t":28,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[87.958,-29.319],[88.042,-28.319],[88.042,30.319],[87.958,29.319]],"c":true}]},{"t":47,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[87.958,-29.319],[-87.958,-29.319],[-87.958,29.319],[87.958,29.319]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.482352941176,0.898039215686,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[89.119,30.221],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":31,"op":13155,"st":28,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"Circle Outlines 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[959.5,539.5,0],"ix":2},"a":{"a":0,"k":[352.5,352.5,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.994,0.994,0.667],"y":[1,1,1]},"o":{"x":[1,1,0.333],"y":[0,0,0]},"t":29,"s":[0,0,100]},{"t":40,"s":[100,100,100]}],"ix":6,"x":"var $bm_rt;\nvar damping, elasticity, speedLimit, tempsClefProx, tempsDebut, tempsDebut, temps, spring, spring;\nvar fx = effect('Transform Spring');\ndamping = fx(2).value;\nelasticity = fx(1).value;\n$bm_rt = speedLimit = 0.1;\nif (numKeys > 1 && elasticity != 0) {\n    if (nearestKey(time).index == 1) {\n        $bm_rt = value;\n    } else {\n        if (length(velocity) <= speedLimit) {\n            tempsClefProx = nearestKey(time).time;\n            if (tempsClefProx <= time) {\n                tempsDebut = tempsClefProx;\n            } else {\n                tempsDebut = key($bm_sub(nearestKey(time).index, 1)).time;\n            }\n            temps = $bm_sub(time, tempsDebut);\n            spring = $bm_mul(velocityAtTime($bm_sub(tempsDebut, thisComp.frameDuration)), $bm_div($bm_mul($bm_div(0.15, elasticity), Math.sin($bm_mul($bm_mul($bm_mul(elasticity, temps), 2), Math.PI))), Math.exp($bm_mul(temps, damping))));\n            if (speedLimit > 0)\n                spring = $bm_mul(spring, $bm_sub(1, $bm_div(length(velocity), speedLimit)));\n            $bm_rt = $bm_sum(valueAtTime(tempsDebut), spring);\n        } else {\n            $bm_rt = value;\n        }\n    }\n} else {\n    $bm_rt = value;\n}"}},"ao":0,"ef":[{"ty":5,"nm":"Transform Spring","np":4,"mn":"Pseudo/DUIK multid spring","ix":1,"en":1,"ef":[{"ty":0,"nm":"Elasticity","mn":"Pseudo/DUIK multid spring-0001","ix":1,"v":{"a":0,"k":2.68,"ix":1}},{"ty":0,"nm":"Damping","mn":"Pseudo/DUIK multid spring-0002","ix":2,"v":{"a":0,"k":5.2,"ix":2}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-194.308],[-194.308,0],[0,194.308],[194.308,0]],"o":[[0,194.308],[194.308,0],[0,-194.308],[-194.308,0]],"v":[[-351.829,0],[0,351.829],[351.829,0],[0,-351.829]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.572549019608,0,0.23137254902,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[352.5,352.5],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":29,"op":13156,"st":29,"bm":0}],"markers":[]}modules/lottie/widgets/lottie.php000064400000050014150755004310013173 0ustar00<?php

namespace ElementorPro\Modules\Lottie\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Css_Filter;
use Elementor\Group_Control_Typography;
use ElementorPro\Base\Base_Widget;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Lottie extends Base_Widget {

	/**
	 * Get element name.
	 *
	 * Retrieve the element name.
	 *
	 * @return string The name.
	 * @since 2.7.0
	 * @access public
	 *
	 */
	public function get_name() {
		return 'lottie';
	}

	public function get_title() {
		return esc_html__( 'Lottie', 'elementor-pro' );
	}

	public function get_script_depends() {
		return [ 'lottie' ];
	}

	public function get_style_depends() {
		return [ 'e-lottie' ];
	}

	public function get_icon() {
		return 'eicon-lottie';
	}

	protected function register_controls() {
		$this->start_controls_section( 'lottie', [
			'label' => esc_html__( 'Lottie', 'elementor-pro' ),
		] );

		$this->add_control(
			'source',
			[
				'label' => esc_html__( 'Source', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'media_file',
				'options' => [
					'media_file' => esc_html__( 'Media File', 'elementor-pro' ),
					'external_url' => esc_html__( 'External URL', 'elementor-pro' ),
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'source_external_url',
			[
				'label' => esc_html__( 'External URL', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'condition' => [
					'source' => 'external_url',
				],
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => esc_html__( 'Enter your URL', 'elementor-pro' ),
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'source_json',
			[
				'label' => esc_html__( 'Upload JSON File', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
				'media_type' => 'application/json',
				'frontend_available' => true,
				'condition' => [
					'source' => 'media_file',
				],
			]
		);

		$this->add_responsive_control(
			'align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left'    => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'prefix_class' => 'elementor%s-align-',
				'default' => 'center',
			]
		);

		$this->add_control(
			'caption_source',
			[
				'label' => esc_html__( 'Caption', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'none',
				'options' => [
					'none' => esc_html__( 'None', 'elementor-pro' ),
					'title' => esc_html__( 'Title', 'elementor-pro' ),
					'caption' => esc_html__( 'Caption', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'condition' => [
					'source!' => 'external_url',
					'source_json[url]!' => '',
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'caption',
			[
				'label' => esc_html__( 'Custom Caption', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'render_type' => 'none',
				'conditions' => [
					'relation' => 'or',
					'terms' => [
						[
							'name' => 'caption_source',
							'value' => 'custom',
						],
						[
							'name' => 'source',
							'value' => 'external_url',
						],
					],
				],
				'dynamic' => [
					'active' => true,
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'link_to',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'render_type' => 'none',
				'default' => 'none',
				'options' => [
					'none' => esc_html__( 'None', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom URL', 'elementor-pro' ),
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'custom_link',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'render_type' => 'none',
				'placeholder' => esc_html__( 'Enter your URL', 'elementor-pro' ),
				'condition' => [
					'link_to' => 'custom',
				],
				'dynamic' => [
					'active' => true,
				],
				'default' => [
					'url' => '',
				],
				'show_label' => false,
				'frontend_available' => true,
			]
		);

		// lottie.
		$this->end_controls_section();

		$this->start_controls_section( 'settings', [
			'label' => esc_html__( 'Settings', 'elementor-pro' ),
		] );

		$this->add_control(
			'trigger',
			[
				'label' => esc_html__( 'Trigger', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'arriving_to_viewport',
				'options' => [
					'arriving_to_viewport' => esc_html__( 'Viewport', 'elementor-pro' ),
					'on_click' => esc_html__( 'On Click', 'elementor-pro' ),
					'on_hover' => esc_html__( 'On Hover', 'elementor-pro' ),
					'bind_to_scroll' => esc_html__( 'Scroll', 'elementor-pro' ),
					'none' => esc_html__( 'None', 'elementor-pro' ),
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'viewport',
			[
				'label' => esc_html__( 'Viewport', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'render_type' => 'none',
				'conditions' => [
					'relation' => 'or',
					'terms' => [
						[
							'name' => 'trigger',
							'operator' => '===',
							'value' => 'arriving_to_viewport',
						],
						[
							'name' => 'trigger',
							'operator' => '===',
							'value' => 'bind_to_scroll',
						],
					],
				],
				'default' => [
					'sizes' => [
						'start' => 0,
						'end' => 100,
					],
					'unit' => '%',
				],
				'labels' => [
					__( 'Bottom', 'elementor-pro' ),
					__( 'Top', 'elementor-pro' ),
				],
				'scales' => 1,
				'handles' => 'range',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'effects_relative_to',
			[
				'label' => esc_html__( 'Effects Relative To', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'render_type' => 'none',
				'condition' => [
					'trigger' => 'bind_to_scroll',
				],
				'default' => 'viewport',
				'options' => [
					'viewport' => esc_html__( 'Viewport', 'elementor-pro' ),
					'page' => esc_html__( 'Entire Page', 'elementor-pro' ),
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'loop',
			[
				'label' => esc_html__( 'Loop', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'render_type' => 'none',
				'condition' => [
					'trigger!' => 'bind_to_scroll',
				],
				'return_value' => 'yes',
				'default' => '',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'number_of_times',
			[
				'label' => esc_html__( 'Times', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'render_type' => 'none',
				'conditions' => [
					'relation' => 'and',
					'terms' => [
						[
							'name' => 'trigger',
							'operator' => '!==',
							'value' => 'bind_to_scroll',
						],
						[
							'name' => 'loop',
							'operator' => '===',
							'value' => 'yes',
						],
					],
				],
				'min' => 0,
				'step' => 1,
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'link_timeout',
			[
				'label' => esc_html__( 'Link Timeout', 'elementor-pro' ) . ' (ms)',
				'type' => Controls_Manager::NUMBER,
				'render_type' => 'none',
				'conditions' => [
					'relation' => 'and',
					'terms' => [
						[
							'name' => 'link_to',
							'operator' => '===',
							'value' => 'custom',
						],
						[
							'name' => 'trigger',
							'operator' => '===',
							'value' => 'on_click',
						],
						[
							'name' => 'custom_link[url]',
							'operator' => '!==',
							'value' => '',
						],
					],
				],
				'description' => esc_html__( 'Redirect to link after selected timeout', 'elementor-pro' ),
				'min' => 0,
				'max' => 5000,
				'step' => 1,
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'on_hover_out',
			[
				'label' => esc_html__( 'On Hover Out', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'render_type' => 'none',
				'condition' => [
					'trigger' => 'on_hover',
				],
				'default' => 'default',
				'options' => [
					'default' => esc_html__( 'Default', 'elementor-pro' ),
					'reverse' => esc_html__( 'Reverse', 'elementor-pro' ),
					'pause' => esc_html__( 'Pause', 'elementor-pro' ),
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'hover_area',
			[
				'label' => esc_html__( 'Hover Area', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'render_type' => 'none',
				'condition' => [
					'trigger' => 'on_hover',
				],
				'default' => 'animation',
				'options' => [
					'animation' => esc_html__( 'Animation', 'elementor-pro' ),
					'column' => esc_html__( 'Column', 'elementor-pro' ),
					'section' => esc_html__( 'Section', 'elementor-pro' ),
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'play_speed',
			[
				'label' => esc_html__( 'Play Speed', 'elementor-pro' ) . ' (x)',
				'type' => Controls_Manager::SLIDER,
				'render_type' => 'none',
				'condition' => [
					'trigger!' => 'bind_to_scroll',
				],
				'default' => [
					'unit' => 'px',
					'size' => 1,
				],
				'range' => [
					'px' => [
						'min' => 0.1,
						'max' => 5,
						'step' => 0.1,
					],
				],
				'size_units' => [ 'px' ],
				'dynamic' => [
					'active' => true,
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'start_point',
			[
				'label' => esc_html__( 'Start Point', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'frontend_available' => true,
				'render_type' => 'none',
				'default' => [
					'size' => '0',
					'unit' => '%',
				],
				'size_units' => [ '%' ],
			]
		);

		$this->add_control(
			'end_point',
			[
				'label' => esc_html__( 'End Point', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'frontend_available' => true,
				'render_type' => 'none',
				'default' => [
					'size' => '100',
					'unit' => '%',
				],
				'size_units' => [ '%' ],
			]
		);

		$this->add_control(
			'reverse_animation',
			[
				'label' => esc_html__( 'Reverse', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'render_type' => 'none',
				'conditions' => [
					'relation' => 'and',
					'terms' => [
						[
							'name' => 'trigger',
							'operator' => '!==',
							'value' => 'bind_to_scroll',
						],
						[
							'name' => 'trigger',
							'operator' => '!==',
							'value' => 'on_hover',
						],
					],
				],
				'return_value' => 'yes',
				'default' => '',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'renderer',
			[
				'label' => esc_html__( 'Renderer', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'svg',
				'options' => [
					'svg' => esc_html__( 'SVG', 'elementor-pro' ),
					'canvas' => esc_html__( 'Canvas', 'elementor-pro' ),
				],
				'separator' => 'before',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'lazyload',
			[
				'label' => esc_html__( 'Lazy Load', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'return_value' => 'yes',
				'default' => '',
				'frontend_available' => true,
			]
		);

		// Settings.
		$this->end_controls_section();

		$this->start_controls_section(
			'style',
			[
				'label' => esc_html__( 'Lottie', 'elementor-pro' ),
				'tab'   => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'unit' => '%',
				],
				'tablet_default' => [
					'unit' => '%',
				],
				'mobile_default' => [
					'unit' => '%',
				],
				'size_units' => [ '%', 'px', 'vw' ],
				'range' => [
					'%' => [
						'min' => 1,
						'max' => 100,
					],
					'px' => [
						'min' => 1,
						'max' => 1000,
					],
					'vw' => [
						'min' => 1,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--lottie-container-width: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'space',
			[
				'label' => esc_html__( 'Max Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'unit' => '%',
				],
				'tablet_default' => [
					'unit' => '%',
				],
				'mobile_default' => [
					'unit' => '%',
				],
				'size_units' => [ '%', 'px', 'vw' ],
				'range' => [
					'%' => [
						'min' => 1,
						'max' => 100,
					],
					'px' => [
						'min' => 1,
						'max' => 1000,
					],
					'vw' => [
						'min' => 1,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--lottie-container-max-width: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'separator_panel_style',
			[
				'type' => Controls_Manager::DIVIDER,
				'style' => 'thick',
			]
		);

		$this->start_controls_tabs( 'image_effects' );

			$this->start_controls_tab( 'normal',
				[
					'label' => esc_html__( 'Normal', 'elementor-pro' ),
				]
			);

			$this->add_control(
				'opacity',
				[
					'label' => esc_html__( 'Opacity', 'elementor-pro' ),
					'type' => Controls_Manager::SLIDER,
					'range' => [
						'px' => [
							'max' => 1,
							'min' => 0.10,
							'step' => 0.01,
						],
					],
					'selectors' => [
						'{{WRAPPER}}' => '--lottie-container-opacity: {{SIZE}};',
					],
				]
			);

			$this->add_group_control(
				Group_Control_Css_Filter::get_type(),
				[
					'name' => 'css_filters',
					'selector' => '{{WRAPPER}} .e-lottie__container',
				]
			);

			// Normal.
			$this->end_controls_tab();

			$this->start_controls_tab( 'hover',
				[
					'label' => esc_html__( 'Hover', 'elementor-pro' ),
				]
			);

			$this->add_control(
				'opacity_hover',
				[
					'label' => esc_html__( 'Opacity', 'elementor-pro' ),
					'type' => Controls_Manager::SLIDER,
					'range' => [
						'px' => [
							'max' => 1,
							'min' => 0.10,
							'step' => 0.01,
						],
					],
					'selectors' => [
						'{{WRAPPER}}' => '--lottie-container-opacity-hover: {{SIZE}};',
					],
				]
			);

			$this->add_group_control(
				Group_Control_Css_Filter::get_type(),
				[
					'name' => 'css_filters_hover',
					'selector' => '{{WRAPPER}} .e-lottie__container:hover',
				]
			);

			$this->add_control(
				'background_hover_transition',
				[
					'label' => esc_html__( 'Transition Duration', 'elementor-pro' ),
					'type' => Controls_Manager::SLIDER,
					'range' => [
						'px' => [
							'max' => 3,
							'step' => 0.1,
						],
					],
					'selectors' => [
						'{{WRAPPER}}' => '--lottie-container-transition-duration-hover: {{SIZE}}s',
					],
				]
			);

			// Hover.
			$this->end_controls_tab();

		// Image effects.
		$this->end_controls_tabs();

		// lottie style.
		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_caption',
			[
				'label' => esc_html__( 'Caption', 'elementor-pro' ),
				'tab'   => Controls_Manager::TAB_STYLE,
				'condition' => [
					'caption_source!' => 'none',
				],
			]
		);

		$this->add_control(
			'caption_align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'default' => 'center',
				'selectors' => [
					'{{WRAPPER}}' => '--caption-text-align: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}}' => '--caption-color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'caption_typography',
				'selector' => '{{WRAPPER}} .e-lottie__caption',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->add_responsive_control(
			'caption_space',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--caption-margin-top: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();
	}

	private function get_caption( $settings ) {
		$is_media_file_caption = $this->is_media_file_caption( $settings );
		$is_external_url_caption = $this->is_external_url_caption( $settings );

		if ( ( $is_media_file_caption && 'custom' === $settings['caption_source'] ) || $is_external_url_caption ) {
			return $settings['caption'];
		} else if ( 'caption' === $settings['caption_source'] ) {
			return wp_get_attachment_caption( $settings['source_json']['id'] );
		} else if ( 'title' === $settings['caption_source'] ) {
			return get_the_title( $settings['source_json']['id'] );
		}

		return '';
	}

	private function is_media_file_caption( $settings ) {
		return 'media_file' === $settings['source'] && 'none' !== $settings['caption_source'];
	}

	private function is_external_url_caption( $settings ) {
		return 'external_url' === $settings['source'] && '' !== $settings['caption'];
	}

	protected function render() {
		$settings = $this->get_settings_for_display();
		$caption = $this->get_caption( $settings );
		$widget_caption = $caption ? '<p class="e-lottie__caption"> ' . esc_html( $caption ) . '</p>' : '';
		$widget_container = '<div class="e-lottie__container"><div class="e-lottie__animation"></div>' . $widget_caption . '</div>';

		if ( ! empty( $settings['custom_link']['url'] ) && 'custom' === $settings['link_to'] ) {
			$this->add_link_attributes( 'url', $settings['custom_link'] );
			$widget_container = sprintf( '<a class="e-lottie__container__link" %1$s>%2$s</a>', $this->get_render_attribute_string( 'url' ), $widget_container );
		}

		// PHPCS - XSS ok. Everything that should be escaped in the way is escaped.
		echo $widget_container; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}

	protected function content_template() {
		?>
		<#
		var ensureAttachmentData = function( id, type ) {
			if ( 'caption' === type || 'title' === type ) {
				if ( 'undefined' === typeof wp.media.attachment( id ).get( type ) ) {
					wp.media.attachment( id ).fetch().then( function( data ) {
						view.render();
					} );
				}
			}
		};

		var getAttachmentData = function( id, type ) {
			if ( id && ( 'caption' === type || 'title' === type ) ) {
				ensureAttachmentData( id, type );
				return wp.media.attachment( id ).get( type );
			}

			return '';
		};

		var getCaption = function() {
			if ( ( isMediaFileCaption() && 'custom' === settings.caption_source ) || isExternalUrlCaption() ) {
				return settings.caption;
			} else if ( 'caption' === settings.caption_source || 'title' === settings.caption_source ) {
				return getAttachmentData( settings.source_json.id, settings.caption_source );
			}

			return '';
		};

		var isMediaFileCaption = function() {
			return 'media_file' === settings.source && 'none' !== settings.caption_source;
		};

		var isExternalUrlCaption = function() {
			return 'external_url' === settings.source && '' !== settings.caption;
		};

		var widget_caption = getCaption() ? '<p class="e-lottie__caption">' + getCaption() + '</p>' : '';
		var widget_container = '<div class="e-lottie__container"><div class="e-lottie__animation"></div>' + widget_caption + '</div>';

		if ( settings.custom_link.url && 'custom' === settings.link_to ) {
			widget_container = '<a class="e-lottie__container__link" href="' + settings.custom_link.url + '">' + widget_container + '</a>';
		}

		print( widget_container );
		#>
		<?php
	}
}
modules/lottie/module.php000064400000003213150755004310011511 0ustar00<?php

namespace ElementorPro\Modules\Lottie;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {
	public function __construct() {
		parent::__construct();

		add_filter( 'wp_check_filetype_and_ext', [ $this, 'handle_file_type' ], 10, 3 );

		add_filter( 'elementor_pro/frontend/localize_settings', [ $this, 'localize_settings' ] );

		add_action( 'elementor/frontend/before_register_scripts', [ $this, 'register_frontend_scripts' ] );
	}

	/**
	 * Get module name.
	 *
	 * Retrieve the module name.
	 *
	 * @since  2.7.0
	 * @access public
	 *
	 * @return string Module name.
	 */
	public function get_name() {
		return 'lottie';
	}

	public function get_widgets() {
		return [
			'lottie',
		];
	}

	// Fixing wordpress problem when `finfo_file()` returns wrong file type
	public function handle_file_type( $file_data, $file, $filename ) {
		if ( $file_data['ext'] && $file_data['type'] ) {
			return $file_data;
		}

		$filetype = wp_check_filetype( $filename );

		if ( 'json' === $filetype['ext'] ) {
			$file_data['ext'] = 'json';
			$file_data['type'] = 'application/json';
		}

		return $file_data;
	}

	public function register_frontend_scripts() {
		$suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';

		wp_register_script(
			'lottie',
			ELEMENTOR_PRO_URL . 'assets/lib/lottie/lottie' . $suffix . '.js',
			[
				'jquery',
			],
			'5.6.6',
			true
		);
	}

	public function localize_settings( array $settings ) {
		$settings['lottie']['defaultAnimationUrl'] = ELEMENTOR_PRO_MODULES_URL . 'lottie/assets/animations/default.json';

		return $settings;
	}
}
modules/carousel/widgets/media-carousel.php000064400000044206150755004310015110 0ustar00<?php
namespace ElementorPro\Modules\Carousel\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Embed;
use Elementor\Group_Control_Text_Shadow;
use Elementor\Group_Control_Typography;
use Elementor\Icons_Manager;
use Elementor\Repeater;
use Elementor\Utils;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Media_Carousel extends Base {

	/**
	 * @var int
	 */
	private $lightbox_slide_index;

	public function get_name() {
		return 'media-carousel';
	}

	public function get_title() {
		return esc_html__( 'Media Carousel', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-media-carousel';
	}

	public function get_keywords() {
		return [ 'media', 'carousel', 'image', 'video', 'lightbox' ];
	}

	protected function render() {
		$settings = $this->get_active_settings();

		if ( $settings['overlay'] ) {
			$this->add_render_attribute( 'image-overlay', 'class', [
				'elementor-carousel-image-overlay',
				'e-overlay-animation-' . $settings['overlay_animation'],
			] );
		}

		$this->print_slider();

		if ( 'slideshow' !== $settings['skin'] || count( $settings['slides'] ) <= 1 ) {
			return;
		}

		$settings['thumbs_slider'] = true;
		$settings['container_class'] = 'elementor-thumbnails-swiper';
		$settings['show_arrows'] = false;

		$this->print_slider( $settings );
	}

	protected function register_controls() {
		parent::register_controls();

		$this->start_controls_section(
			'section_lightbox_style',
			[
				'label' => esc_html__( 'Lightbox', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'lightbox_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'#elementor-lightbox-slideshow-{{ID}}' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'lightbox_ui_color',
			[
				'label' => esc_html__( 'UI Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'#elementor-lightbox-slideshow-{{ID}} .dialog-lightbox-close-button, #elementor-lightbox-slideshow-{{ID}} .elementor-swiper-button' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'lightbox_ui_hover_color',
			[
				'label' => esc_html__( 'UI Hover Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'#elementor-lightbox-slideshow-{{ID}} .dialog-lightbox-close-button:hover, #elementor-lightbox-slideshow-{{ID}} .elementor-swiper-button:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'lightbox_video_width',
			[
				'label' => esc_html__( 'Video Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'unit' => '%',
				],
				'range' => [
					'%' => [
						'min' => 50,
					],
				],
				'selectors' => [
					'#elementor-lightbox-slideshow-{{ID}} .elementor-video-container' => 'width: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->add_injections();

		$this->update_controls();
	}

	protected function add_repeater_controls( Repeater $repeater ) {
		$repeater->add_control(
			'type',
			[
				'type' => Controls_Manager::CHOOSE,
				'label' => esc_html__( 'Type', 'elementor-pro' ),
				'default' => 'image',
				'options' => [
					'image' => [
						'title' => esc_html__( 'Image', 'elementor-pro' ),
						'icon' => 'eicon-image-bold',
					],
					'video' => [
						'title' => esc_html__( 'Video', 'elementor-pro' ),
						'icon' => 'eicon-video-camera',
					],
				],
				'toggle' => false,
			]
		);

		$repeater->add_control(
			'image',
			[
				'label' => esc_html__( 'Image', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
			]
		);

		$repeater->add_control(
			'image_link_to_type',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'file' => esc_html__( 'Media File', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom URL', 'elementor-pro' ),
				],
				'condition' => [
					'type' => 'image',
				],
			]
		);

		$repeater->add_control(
			'image_link_to',
			[
				'type' => Controls_Manager::URL,
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
				'show_external' => 'true',
				'condition' => [
					'type' => 'image',
					'image_link_to_type' => 'custom',
				],
				'separator' => 'none',
				'show_label' => false,
			]
		);

		$repeater->add_control(
			'video',
			[
				'label' => esc_html__( 'Video Link', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'placeholder' => esc_html__( 'Enter your video link', 'elementor-pro' ),
				'description' => esc_html__( 'YouTube or Vimeo link', 'elementor-pro' ),
				'options' => false,
				'condition' => [
					'type' => 'video',
				],
			]
		);
	}

	protected function get_default_slides_count() {
		return 5;
	}

	protected function get_repeater_defaults() {
		$placeholder_image_src = Utils::get_placeholder_image_src();

		return array_fill( 0, $this->get_default_slides_count(), [
			'image' => [
				'url' => $placeholder_image_src,
			],
		] );
	}

	protected function get_image_caption( $slide ) {
		$caption_type = $this->get_settings( 'caption' );

		if ( empty( $caption_type ) ) {
			return '';
		}

		$attachment_post = get_post( $slide['image']['id'] );

		if ( 'caption' === $caption_type ) {
			return $attachment_post->post_excerpt;
		}

		if ( 'title' === $caption_type ) {
			return $attachment_post->post_title;
		}

		return $attachment_post->post_content;
	}

	protected function get_image_link_to( $slide ) {
		if ( ! empty( $slide['video']['url'] ) ) {
			return $slide['image']['url'] ? $slide['image']['url'] : '#';
		}

		if ( ! $slide['image_link_to_type'] ) {
			return '';
		}

		if ( 'custom' === $slide['image_link_to_type'] ) {
			return $slide['image_link_to']['url'];
		}

		return $slide['image']['url'];
	}

	protected function print_slider( array $settings = null ) {
		$this->lightbox_slide_index = 0;

		parent::print_slider( $settings );
	}

	protected function print_slide( array $slide, array $settings, $element_key ) {
		if ( ! empty( $settings['thumbs_slider'] ) ) {
			$settings['video_play_icon'] = false;

			$this->add_render_attribute( $element_key . '-image', 'class', 'elementor-fit-aspect-ratio' );
		}

		$this->add_render_attribute( $element_key . '-image', [
			'class' => 'elementor-carousel-image',
			'style' => 'background-image: url(' . $this->get_slide_image_url( $slide, $settings ) . ')',
		] );

		$image_link_to = $this->get_image_link_to( $slide );

		if ( $image_link_to && empty( $settings['thumbs_slider'] ) ) {
			if ( 'custom' === $slide['image_link_to_type'] ) {
				$this->add_link_attributes( $element_key . '_link', $slide['image_link_to'] );
			} else {
				$this->add_render_attribute( $element_key . '_link', 'href', $image_link_to );

				$this->add_lightbox_data_attributes( $element_key . '_link', $slide['image']['id'], 'yes', $this->get_id() );

				if ( Plugin::elementor()->editor->is_edit_mode() ) {
					$this->add_render_attribute( $element_key . '_link', 'class', 'elementor-clickable' );
				}

				$this->lightbox_slide_index++;
			}

			if ( 'video' === $slide['type'] && $slide['video']['url'] ) {
				$embed_url_params = [
					'autoplay' => 1,
					'rel' => 0,
					'controls' => 0,
				];

				$this->add_render_attribute( $element_key . '_link', 'data-elementor-lightbox-video', Embed::get_embed_url( $slide['video']['url'], $embed_url_params ) );
			}

			// PHPCS - the method get_render_attribute_string is safe.
			echo '<a ' . $this->get_render_attribute_string( $element_key . '_link' ) . '>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		}

		$this->print_slide_image( $slide, $element_key, $settings );

		if ( $image_link_to ) {
			echo '</a>';
		}
	}

	protected function print_slide_image( array $slide, $element_key, array $settings ) {
		?>
		<div <?php $this->print_render_attribute_string( $element_key . '-image' ); ?>>
			<?php if ( 'video' === $slide['type'] && $settings['video_play_icon'] ) : ?>
				<div class="elementor-custom-embed-play">
					<?php
						Icons_Manager::render_icon( [
							'library' => 'eicons',
							'value' => 'eicon-play',
						], [ 'aria-hidden' => 'true' ] );
					?>
					<span class="elementor-screen-only"><?php echo esc_html__( 'Play', 'elementor-pro' ); ?></span>
				</div>
			<?php endif; ?>
		</div>
		<?php if ( $settings['overlay'] ) : ?>
			<div <?php $this->print_render_attribute_string( 'image-overlay' ); ?>>
				<?php
				if ( 'text' === $settings['overlay'] ) {
					echo wp_kses_post( $this->get_image_caption( $slide ) );
				} else {
					$this->render_overlay_icon( $settings['icon'] );
				}
				?>
			</div>
			<?php
		endif;
	}

	private function add_injections() {
		$this->start_injection( [
			'type' => 'section',
			'at' => 'start',
			'of' => 'section_slides',
		] );

		$this->add_control(
			'skin',
			[
				'label' => esc_html__( 'Skin', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'carousel',
				'options' => [
					'carousel' => esc_html__( 'Carousel', 'elementor-pro' ),
					'slideshow' => esc_html__( 'Slideshow', 'elementor-pro' ),
					'coverflow' => esc_html__( 'Coverflow', 'elementor-pro' ),
				],
				'prefix_class' => 'elementor-skin-',
				'render_type' => 'template',
				'frontend_available' => true,
			]
		);

		$this->end_injection();

		$this->start_injection( [
			'of' => 'image_size_custom_dimension',
		] );

		$this->add_control(
			'image_fit',
			[
				'label' => esc_html__( 'Image Fit', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '',
				'options' => [
					'' => esc_html__( 'Cover', 'elementor-pro' ),
					'contain' => esc_html__( 'Contain', 'elementor-pro' ),
					'auto' => esc_html__( 'Auto', 'elementor-pro' ),
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-main-swiper .elementor-carousel-image' => 'background-size: {{VALUE}}',
				],
			]
		);

		$this->end_injection();

		$this->start_injection( [
			'of' => 'pagination_color',
		] );

		$this->add_control(
			'play_icon_title',
			[
				'label' => esc_html__( 'Play Icon', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'play_icon_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-custom-embed-play i' => 'color: {{VALUE}}',
					'{{WRAPPER}} .elementor-custom-embed-play svg' => 'fill: {{VALUE}}',
				],
			]
		);

		$this->add_responsive_control(
			'play_icon_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 20,
						'max' => 150,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-custom-embed-play i' => 'font-size: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Text_Shadow::get_type(),
			[
				'name' => 'play_icon_text_shadow',
				'selector' => '{{WRAPPER}} .elementor-custom-embed-play i',
				'fields_options' => [
					'text_shadow_type' => [
						'label' => _x( 'Shadow', 'Text Shadow Control', 'elementor-pro' ),
					],
				],
			]
		);

		$this->end_injection();

		$this->start_injection( [
			'of' => 'pause_on_interaction',
		] );

		$this->add_control(
			'overlay',
			[
				'label' => esc_html__( 'Overlay', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '',
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'text' => esc_html__( 'Text', 'elementor-pro' ),
					'icon' => esc_html__( 'Icon', 'elementor-pro' ),
				],
				'condition' => [
					'skin!' => 'slideshow',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'caption',
			[
				'label' => esc_html__( 'Caption', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'title',
				'options' => [
					'title' => esc_html__( 'Title', 'elementor-pro' ),
					'caption' => esc_html__( 'Caption', 'elementor-pro' ),
					'description' => esc_html__( 'Description', 'elementor-pro' ),
				],
				'condition' => [
					'skin!' => 'slideshow',
					'overlay' => 'text',
				],
			]
		);

		$this->add_control(
			'icon',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'default' => 'search-plus',
				'options' => [
					'search-plus' => [
						'icon' => 'eicon-search-bold',
					],
					'plus-circle' => [
						'icon' => 'eicon-plus-circle',
					],
					'eye' => [
						'icon' => 'eicon-preview-medium',
					],
					'link' => [
						'icon' => 'eicon-link',
					],
				],
				'condition' => [
					'skin!' => 'slideshow',
					'overlay' => 'icon',
				],
			]
		);

		$this->add_control(
			'overlay_animation',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'fade',
				'options' => [
					'fade' => 'Fade',
					'slide-up' => 'Slide Up',
					'slide-down' => 'Slide Down',
					'slide-right' => 'Slide Right',
					'slide-left' => 'Slide Left',
					'zoom-in' => 'Zoom In',
				],
				'condition' => [
					'skin!' => 'slideshow',
					'overlay!' => '',
				],
			]
		);

		$this->end_injection();

		$this->start_injection( [
			'type' => 'section',
			'of' => 'section_navigation',
		] );

		$this->start_controls_section(
			'section_overlay',
			[
				'label' => esc_html__( 'Overlay', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'skin!' => 'slideshow',
					'overlay!' => '',
				],
			]
		);

		$this->add_control(
			'overlay_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-carousel-image-overlay' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'overlay_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-carousel-image-overlay' => '--e-carousel-image-overlay-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'caption_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
				'selector' => '{{WRAPPER}} .elementor-carousel-image-overlay',
				'condition' => [
					'overlay' => 'text',
				],
			]
		);

		$this->add_control(
			'icon_size',
			[
				'label' => esc_html__( 'Icon Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-carousel-image-overlay' => '--e-carousel-image-overlay-icon-size: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'overlay' => 'icon',
				],
			]
		);

		$this->end_controls_section();

		$this->end_injection();

		// Slideshow

		$this->start_injection( [
			'of' => 'effect',
		] );

		$this->add_responsive_control(
			'slideshow_height',
			[
				'type' => Controls_Manager::SLIDER,
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'range' => [
					'px' => [
						'min' => 20,
						'max' => 1000,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-main-swiper' => 'height: {{SIZE}}{{UNIT}};',
				],
				'condition' => [
					'skin' => 'slideshow',
				],
			]
		);

		$this->add_control(
			'thumbs_title',
			[
				'label' => esc_html__( 'Thumbnails', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'condition' => [
					'skin' => 'slideshow',
				],
			]
		);

		$this->end_injection();

		$this->start_injection( [
			'of' => 'slides_per_view',
		] );

		$this->add_control(
			'thumbs_ratio',
			[
				'label' => esc_html__( 'Ratio', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '219',
				'options' => [
					'169' => '16:9',
					'219' => '21:9',
					'43' => '4:3',
					'11' => '1:1',
				],
				'prefix_class' => 'elementor-aspect-ratio-',
				'condition' => [
					'skin' => 'slideshow',
				],
			]
		);

		$this->add_control(
			'centered_slides',
			[
				'label' => esc_html__( 'Centered Slides', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'condition' => [
					'skin' => 'slideshow',
				],
				'frontend_available' => true,
			]
		);

		$this->end_injection();

		$this->start_injection( [
			'of' => 'slides_per_view',
		] );

		$slides_per_view = range( 1, 10 );

		$slides_per_view = array_combine( $slides_per_view, $slides_per_view );

		$this->add_responsive_control(
			'slideshow_slides_per_view',
			[
				'type' => Controls_Manager::SELECT,
				'label' => esc_html__( 'Slides Per View', 'elementor-pro' ),
				'options' => [ '' => esc_html__( 'Default', 'elementor-pro' ) ] + $slides_per_view,
				'condition' => [
					'skin' => 'slideshow',
				],
				'frontend_available' => true,
			]
		);

		$this->end_injection();
	}

	private function update_controls() {
		$carousel_controls = [
			'slides_to_scroll',
			'pagination',
			'heading_pagination',
			'pagination_size',
			'pagination_position',
			'pagination_color',
		];

		$carousel_responsive_controls = [
			'width',
			'height',
			'slides_per_view',
		];

		foreach ( $carousel_controls as $control_id ) {
			$this->update_control(
				$control_id,
				[
					'condition' => [
						'skin!' => 'slideshow',
					],
				],
				[ 'recursive' => true ]
			);
		}

		foreach ( $carousel_responsive_controls as $control_id ) {
			$this->update_responsive_control(
				$control_id,
				[
					'condition' => [
						'skin!' => 'slideshow',
					],
				],
				[ 'recursive' => true ]
			);
		}

		$this->update_responsive_control(
			'space_between',
			[
				'selectors' => [
					'{{WRAPPER}}.elementor-skin-slideshow .elementor-main-swiper' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
				'render_type' => 'ui',
			]
		);

		$this->update_control(
			'effect',
			[
				'condition' => [
					'skin!' => 'coverflow',
				],
			]
		);
	}

	public function get_group_name() {
		return 'carousel';
	}

	private function render_overlay_icon( $icon_name ) {
		$icon_value = 'fas fa-' . $icon_name;

		$icon = [
			'library' => 'fa-solid',
			'value' => $icon_value,
		];

		Icons_Manager::render_icon( $icon );
	}
}
modules/carousel/widgets/reviews.php000064400000051606150755004310013704 0ustar00<?php
namespace ElementorPro\Modules\Carousel\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;
use Elementor\Icons_Manager;
use Elementor\Repeater;
use Elementor\Utils;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Reviews extends Base {

	public function get_name() {
		return 'reviews';
	}

	public function get_title() {
		return esc_html__( 'Reviews', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-review';
	}

	public function get_keywords() {
		return [ 'reviews', 'social', 'rating', 'testimonial', 'carousel' ];
	}

	public function get_inline_css_depends() {
		$slides = $this->get_settings_for_display( 'slides' );

		foreach ( $slides as $slide ) {
			if ( $slide['rating'] ) {
				return [
					[
						'name' => 'star-rating',
						'is_core_dependency' => true,
					],
				];
			}
		}

		return [];
	}

	protected function register_controls() {
		parent::register_controls();

		$this->update_control(
			'slide_padding',
			[
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__header' => 'padding-top: {{TOP}}{{UNIT}}; padding-left: {{LEFT}}{{UNIT}}; padding-right: {{RIGHT}}{{UNIT}};',
					'{{WRAPPER}} .elementor-testimonial__content' => 'padding-bottom: {{BOTTOM}}{{UNIT}}; padding-left: {{LEFT}}{{UNIT}}; padding-right: {{RIGHT}}{{UNIT}};',
				],
			]
		);

		$this->start_injection( [
			'of' => 'slide_padding',
		] );

		$this->add_control(
			'heading_header',
			[
				'label' => esc_html__( 'Header', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'header_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__header' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_responsive_control(
			'content_gap',
			[
				'label' => esc_html__( 'Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__header' => 'padding-bottom: calc({{SIZE}}{{UNIT}} / 2)',
					'{{WRAPPER}} .elementor-testimonial__content' => 'padding-top: calc({{SIZE}}{{UNIT}} / 2)',
				],
			]
		);

		$this->add_control(
			'show_separator',
			[
				'label' => esc_html__( 'Separator', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'default' => 'has-separator',
				'return_value' => 'has-separator',
				'prefix_class' => 'elementor-review--',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'separator_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__header' => 'border-bottom-color: {{VALUE}}',
				],
				'condition' => [
					'show_separator!' => '',
				],
			]
		);

		$this->add_control(
			'separator_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 20,
					],
				],
				'condition' => [
					'show_separator!' => '',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__header' => 'border-bottom-width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_injection();

		$this->start_injection( [
			'at' => 'before',
			'of' => 'section_navigation',
		] );

		$this->start_controls_section(
			'section_content_style',
			[
				'label' => esc_html__( 'Text', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'name_title_style',
			[
				'label' => esc_html__( 'Name', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'name_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__name' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'name_typography',
				'selector' => '{{WRAPPER}} .elementor-testimonial__header, {{WRAPPER}} .elementor-testimonial__name',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
			]
		);

		$this->add_control(
			'heading_title_style',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'title_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__title' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'title_typography',
				'selector' => '{{WRAPPER}} .elementor-testimonial__title',
			]
		);

		$this->add_control(
			'heading_review_style',
			[
				'label' => esc_html__( 'Review', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'content_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__text' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'content_typography',
				'selector' => '{{WRAPPER}} .elementor-testimonial__text',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_image_style',
			[
				'label' => esc_html__( 'Image', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'image_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 70,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__image img' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'image_gap',
			[
				'label' => esc_html__( 'Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'body:not(.rtl) {{WRAPPER}} .elementor-testimonial__image + cite' => 'margin-left: {{SIZE}}{{UNIT}}; margin-right: 0;',
					'body.rtl {{WRAPPER}} .elementor-testimonial__image + cite' => 'margin-right: {{SIZE}}{{UNIT}}; margin-left:0;',
				],
			]
		);

		$this->add_control(
			'image_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__image img' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_icon_style',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'icon_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'default',
				'options' => [
					'default' => esc_html__( 'Official', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'icon_custom_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'condition' => [
					'icon_color' => 'custom',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__icon:not(.elementor-testimonial__rating)' => 'color: {{VALUE}};',
					'{{WRAPPER}} .elementor-testimonial__icon:not(.elementor-testimonial__rating) svg' => 'fill: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'icon_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__icon' => 'font-size: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}} .elementor-testimonial__icon svg' => 'width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_rating_style',
			[
				'label' => esc_html__( 'Rating', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'star_style',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'star_fontawesome' => 'Font Awesome',
					'star_unicode' => 'Unicode',
				],
				'default' => 'star_fontawesome',
				'render_type' => 'template',
				'prefix_class' => 'elementor--star-style-',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'unmarked_star_style',
			[
				'label' => esc_html__( 'Unmarked Style', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'solid' => [
						'title' => esc_html__( 'Solid', 'elementor-pro' ),
						'icon' => 'eicon-star',
					],
					'outline' => [
						'title' => esc_html__( 'Outline', 'elementor-pro' ),
						'icon' => 'eicon-star-o',
					],
				],
				'default' => 'solid',
			]
		);

		$this->add_control(
			'star_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-star-rating' => 'font-size: {{SIZE}}{{UNIT}}',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'star_space',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 50,
					],
				],
				'selectors' => [
					'body:not(.rtl) {{WRAPPER}} .elementor-star-rating i:not(:last-of-type)' => 'margin-right: {{SIZE}}{{UNIT}}',
					'body.rtl {{WRAPPER}} .elementor-star-rating i:not(:last-of-type)' => 'margin-left: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'stars_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-star-rating i:before' => 'color: {{VALUE}}',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'stars_unmarked_color',
			[
				'label' => esc_html__( 'Unmarked Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-star-rating i' => 'color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_section();

		$this->end_injection();

		$this->update_responsive_control(
			'width',
			[
				'selectors' => [
					'{{WRAPPER}}.elementor-arrows-yes .elementor-main-swiper' => 'width: calc( {{SIZE}}{{UNIT}} - 40px )',
					'{{WRAPPER}} .elementor-main-swiper' => 'width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->update_responsive_control(
			'slides_per_view',
			[
				'condition' => null,
			]
		);

		$this->update_control(
			'slides_to_scroll',
			[
				'condition' => null,
			]
		);

		$this->remove_control( 'effect' );
		$this->remove_responsive_control( 'height' );
		$this->remove_control( 'pagination_position' );
	}

	protected function add_repeater_controls( Repeater $repeater ) {
		$repeater->add_control(
			'image',
			[
				'label' => esc_html__( 'Image', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
				'default' => [
					'url' => Utils::get_placeholder_image_src(),
				],
			]
		);

		$repeater->add_control(
			'name',
			[
				'label' => esc_html__( 'Name', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'John Doe', 'elementor-pro' ),
			]
		);

		$repeater->add_control(
			'title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => '@username',
			]
		);

		$repeater->add_control(
			'rating',
			[
				'label' => esc_html__( 'Rating', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'min' => 0,
				'max' => 5,
				'step' => 0.1,
			]
		);

		$repeater->add_control(
			'selected_social_icon',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'fa4compatibility' => 'social_icon',
				'default' => [
					'value' => 'fab fa-twitter',
					'library' => 'fa-brands',
				],
				'recommended' => [
					'fa-solid' => [
						'rss',
						'shopping-cart',
						'thumbtack',
					],
					'fa-brands' => [
						'android',
						'apple',
						'behance',
						'bitbucket',
						'codepen',
						'delicious',
						'digg',
						'dribbble',
						'envelope',
						'facebook',
						'flickr',
						'foursquare',
						'github',
						'google-plus',
						'houzz',
						'instagram',
						'jsfiddle',
						'linkedin',
						'medium',
						'meetup',
						'mix',
						'mixcloud',
						'odnoklassniki',
						'pinterest',
						'product-hunt',
						'reddit',
						'skype',
						'slideshare',
						'snapchat',
						'soundcloud',
						'spotify',
						'stack-overflow',
						'steam',
						'telegram',
						'tripadvisor',
						'tumblr',
						'twitch',
						'twitter',
						'vimeo',
						'fa-vk',
						'weibo',
						'weixin',
						'whatsapp',
						'wordpress',
						'xing',
						'yelp',
						'youtube',
						'500px',
					],
				],
			]
		);

		$repeater->add_control(
			'link',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'dynamic' => [
					'active' => true,
				],
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),

			]
		);

		$repeater->add_control(
			'content',
			[
				'label' => esc_html__( 'Review', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'default' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor-pro' ),
			]
		);
	}

	protected function get_repeater_defaults() {
		$placeholder_image_src = Utils::get_placeholder_image_src();

		return [
			[
				'content' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor-pro' ),
				'name' => esc_html__( 'John Doe', 'elementor-pro' ),
				'title' => '@username',
				'image' => [
					'url' => $placeholder_image_src,
				],
			],
			[
				'content' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor-pro' ),
				'name' => esc_html__( 'John Doe', 'elementor-pro' ),
				'title' => '@username',
				'image' => [
					'url' => $placeholder_image_src,
				],
			],
			[
				'content' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor-pro' ),
				'name' => esc_html__( 'John Doe', 'elementor-pro' ),
				'title' => '@username',
				'image' => [
					'url' => $placeholder_image_src,
				],
			],
		];
	}

	private function print_cite( $slide, $settings ) {
		if ( empty( $slide['name'] ) && empty( $slide['title'] ) ) {
			return '';
		}

		$html = '<cite class="elementor-testimonial__cite">';

		if ( ! empty( $slide['name'] ) ) {
			$html .= '<span class="elementor-testimonial__name">' . $slide['name'] . '</span>';
		}

		if ( ! empty( $slide['rating'] ) ) {
			$html .= $this->render_stars( $slide, $settings );
		}

		if ( ! empty( $slide['title'] ) ) {
			$html .= '<span class="elementor-testimonial__title">' . $slide['title'] . '</span>';
		}
		$html .= '</cite>';

		echo wp_kses_post( $html );
	}

	protected function render_stars( $slide, $settings ) {
		$icon = '&#xE934;';

		if ( 'star_fontawesome' === $settings['star_style'] ) {
			if ( 'outline' === $settings['unmarked_star_style'] ) {
				$icon = '&#xE933;';
			}
		} elseif ( 'star_unicode' === $settings['star_style'] ) {
			$icon = '&#9733;';

			if ( 'outline' === $settings['unmarked_star_style'] ) {
				$icon = '&#9734;';
			}
		}

		$rating = (float) $slide['rating'] > 5 ? 5 : $slide['rating'];
		$floored_rating = (int) $rating;
		$stars_html = '';

		for ( $stars = 1; $stars <= 5; $stars++ ) {
			if ( $stars <= $floored_rating ) {
				$stars_html .= '<i class="elementor-star-full">' . $icon . '</i>';
			} elseif ( $floored_rating + 1 === $stars && $rating !== $floored_rating ) {
				$stars_html .= '<i class="elementor-star-' . ( $rating - $floored_rating ) * 10 . '">' . $icon . '</i>';
			} else {
				$stars_html .= '<i class="elementor-star-empty">' . $icon . '</i>';
			}
		}

		return '<div class="elementor-star-rating">' . $stars_html . '</div>';
	}

	private function print_icon( $slide, $element_key ) {
		$migration_allowed = Icons_Manager::is_migration_allowed();
		if ( ! isset( $slide['social_icon'] ) && ! $migration_allowed ) {
			// add old default
			$slide['social_icon'] = 'fa fa-twitter';
		}

		if ( empty( $slide['social_icon'] ) && empty( $slide['selected_social_icon'] ) ) {
			return '';
		}

		$migrated = isset( $slide['__fa4_migrated']['selected_social_icon'] );
		$is_new = empty( $slide['social_icon'] ) && $migration_allowed;
		$social = '';

		if ( $is_new || $migrated ) {
			ob_start();
			Icons_Manager::render_icon( $slide['selected_social_icon'], [ 'aria-hidden' => 'true' ] );
			$icon = ob_get_clean();
		} else {
			$icon = '<i class="' . esc_attr( $slide['social_icon'] ) . '" aria-hidden="true"></i>';
		}

		if ( ! empty( $slide['social_icon'] ) ) {
			$social = str_replace( 'fa fa-', '', $slide['social_icon'] );
		}

		if ( ( $is_new || $migrated ) && 'svg' !== $slide['selected_social_icon']['library'] ) {
			$social = explode( ' ', $slide['selected_social_icon']['value'], 2 );
			if ( empty( $social[1] ) ) {
				$social = '';
			} else {
				$social = str_replace( 'fa-', '', $social[1] );
			}
		}
		if ( 'svg' === $slide['selected_social_icon']['library'] ) {
			$social = '';
		}

		$this->add_render_attribute( 'icon_wrapper_' . $element_key, 'class', 'elementor-testimonial__icon elementor-icon' );

		$icon .= '<span class="elementor-screen-only">' . esc_html__( 'Read More', 'elementor-pro' ) . '</span>';
		$this->add_render_attribute( 'icon_wrapper_' . $element_key, 'class', 'elementor-icon-' . $social );

		// Icon is escaped above, get_render_attribute_string() is safe
		echo '<div ' . $this->get_render_attribute_string( 'icon_wrapper_' . $element_key ) . '>' . $icon . '</div>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}

	protected function print_slide( array $slide, array $settings, $element_key ) {
		$this->add_render_attribute( $element_key . '-testimonial', [
			'class' => 'elementor-testimonial',
		] );

		$this->add_render_attribute( $element_key . '-testimonial', [
			'class' => 'elementor-repeater-item-' . $slide['_id'],
		] );

		if ( ! empty( $slide['image']['url'] ) ) {
			$this->add_render_attribute( $element_key . '-image', [
				'src' => $this->get_slide_image_url( $slide, $settings ),
				'alt' => ! empty( $slide['name'] ) ? $slide['name'] : '',
			] );
		}

		?>
		<div <?php $this->print_render_attribute_string( $element_key . '-testimonial' ); ?>>
			<?php if ( $slide['image']['url'] || ! empty( $slide['name'] ) || ! empty( $slide['title'] ) ) :

				$link_url = empty( $slide['link']['url'] ) ? false : $slide['link']['url'];
				$header_tag = ! empty( $link_url ) ? 'a' : 'div';
				$header_element = 'header_' . $slide['_id'];

				$this->add_render_attribute( $header_element, 'class', 'elementor-testimonial__header' );

				if ( ! empty( $link_url ) ) {
					$this->add_link_attributes( $header_element, $slide['link'] );
				}
				?>
				<<?php Utils::print_validated_html_tag( $header_tag ); ?> <?php $this->print_render_attribute_string( $header_element ); ?>>
					<?php if ( $slide['image']['url'] ) : ?>
						<div class="elementor-testimonial__image">
							<img <?php $this->print_render_attribute_string( $element_key . '-image' ); ?>>
						</div>
					<?php endif; ?>
					<?php $this->print_cite( $slide, $settings ); ?>
					<?php $this->print_icon( $slide, $element_key ); ?>
				</<?php Utils::print_validated_html_tag( $header_tag ); ?>>
			<?php endif; ?>
			<?php if ( $slide['content'] ) : ?>
				<div class="elementor-testimonial__content">
					<div class="elementor-testimonial__text">
						<?php
						// Main content allowed
						echo $slide['content']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
					</div>
				</div>
			<?php endif; ?>
		</div>
		<?php
	}

	protected function render() {
		$this->print_slider();
	}

	public function get_group_name() {
		return 'carousel';
	}
}
modules/carousel/widgets/base.php000064400000034365150755004310013135 0ustar00<?php
namespace ElementorPro\Modules\Carousel\Widgets;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Image_Size;
use Elementor\Icons_Manager;
use Elementor\Repeater;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Base extends Base_Widget {

	private $slide_prints_count = 0;

	public function get_script_depends() {
		return [ 'imagesloaded' ];
	}

	abstract protected function add_repeater_controls( Repeater $repeater );

	abstract protected function get_repeater_defaults();

	abstract protected function print_slide( array $slide, array $settings, $element_key );

	protected function register_controls() {
		$this->start_controls_section(
			'section_slides',
			[
				'label' => esc_html__( 'Slides', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$repeater = new Repeater();

		$this->add_repeater_controls( $repeater );

		$this->add_control(
			'slides',
			[
				'label' => esc_html__( 'Slides', 'elementor-pro' ),
				'type' => Controls_Manager::REPEATER,
				'fields' => $repeater->get_controls(),
				'default' => $this->get_repeater_defaults(),
				'separator' => 'after',
			]
		);

		$this->add_control(
			'effect',
			[
				'type' => Controls_Manager::SELECT,
				'label' => esc_html__( 'Effect', 'elementor-pro' ),
				'default' => 'slide',
				'options' => [
					'slide' => esc_html__( 'Slide', 'elementor-pro' ),
					'fade' => esc_html__( 'Fade', 'elementor-pro' ),
					'cube' => esc_html__( 'Cube', 'elementor-pro' ),
				],
				'frontend_available' => true,
			]
		);

		$slides_per_view = range( 1, 10 );
		$slides_per_view = array_combine( $slides_per_view, $slides_per_view );

		$this->add_responsive_control(
			'slides_per_view',
			[
				'type' => Controls_Manager::SELECT,
				'label' => esc_html__( 'Slides Per View', 'elementor-pro' ),
				'options' => [ '' => esc_html__( 'Default', 'elementor-pro' ) ] + $slides_per_view,
				'inherit_placeholders' => false,
				'condition' => [
					'effect' => 'slide',
				],
				'frontend_available' => true,
			]
		);

		$this->add_responsive_control(
			'slides_to_scroll',
			[
				'type' => Controls_Manager::SELECT,
				'label' => esc_html__( 'Slides to Scroll', 'elementor-pro' ),
				'description' => esc_html__( 'Set how many slides are scrolled per swipe.', 'elementor-pro' ),
				'options' => [ '' => esc_html__( 'Default', 'elementor-pro' ) ] + $slides_per_view,
				'inherit_placeholders' => false,
				'condition' => [
					'effect' => 'slide',
				],
				'frontend_available' => true,
			]
		);

		$this->add_responsive_control(
			'height',
			[
				'type' => Controls_Manager::SLIDER,
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'size_units' => [ 'px', 'vh' ],
				'range' => [
					'px' => [
						'min' => 100,
						'max' => 1000,
					],
					'vh' => [
						'min' => 20,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-main-swiper' => 'height: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'width',
			[
				'type' => Controls_Manager::SLIDER,
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'range' => [
					'px' => [
						'min' => 100,
						'max' => 1140,
					],
					'%' => [
						'min' => 50,
					],
				],
				'size_units' => [ '%', 'px' ],
				'default' => [
					'unit' => '%',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-main-swiper' => 'width: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_additional_options',
			[
				'label' => esc_html__( 'Additional Options', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'show_arrows',
			[
				'type' => Controls_Manager::SWITCHER,
				'label' => esc_html__( 'Arrows', 'elementor-pro' ),
				'default' => 'yes',
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'prefix_class' => 'elementor-arrows-',
				'render_type' => 'template',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'pagination',
			[
				'label' => esc_html__( 'Pagination', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'bullets',
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'bullets' => esc_html__( 'Dots', 'elementor-pro' ),
					'fraction' => esc_html__( 'Fraction', 'elementor-pro' ),
					'progressbar' => esc_html__( 'Progress', 'elementor-pro' ),
				],
				'prefix_class' => 'elementor-pagination-type-',
				'render_type' => 'template',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'speed',
			[
				'label' => esc_html__( 'Transition Duration', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 500,
				'render_type' => 'none',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'autoplay',
			[
				'label' => esc_html__( 'Autoplay', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'separator' => 'before',
				'render_type' => 'none',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'autoplay_speed',
			[
				'label' => esc_html__( 'Autoplay Speed', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 5000,
				'condition' => [
					'autoplay' => 'yes',
				],
				'render_type' => 'none',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'loop',
			[
				'label' => esc_html__( 'Infinite Loop', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'pause_on_hover',
			[
				'label' => esc_html__( 'Pause on Hover', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'condition' => [
					'autoplay' => 'yes',
				],
				'render_type' => 'none',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'pause_on_interaction',
			[
				'label' => esc_html__( 'Pause on Interaction', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'condition' => [
					'autoplay' => 'yes',
				],
				'render_type' => 'none',
				'frontend_available' => true,
			]
		);

		$this->add_group_control(
			Group_Control_Image_Size::get_type(),
			[
				'name' => 'image_size',
				'default' => 'full',
				'separator' => 'before',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_slides_style',
			[
				'label' => esc_html__( 'Slides', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$space_between_config = [
			'label' => esc_html__( 'Space Between', 'elementor-pro' ),
			'type' => Controls_Manager::SLIDER,
			'range' => [
				'px' => [
					'max' => 50,
				],
			],
			'render_type' => 'none',
			'frontend_available' => true,
		];

		// TODO: Once Core 3.4.0 is out, get the active devices using Breakpoints/Manager::get_active_devices_list().
		$active_breakpoint_instances = Plugin::elementor()->breakpoints->get_active_breakpoints();
		// Devices need to be ordered from largest to smallest.
		$active_devices = array_reverse( array_keys( $active_breakpoint_instances ) );

		// Add desktop in the correct position.
		if ( in_array( 'widescreen', $active_devices, true ) ) {
			$active_devices = array_merge( array_slice( $active_devices, 0, 1 ), [ 'desktop' ], array_slice( $active_devices, 1 ) );
		} else {
			$active_devices = array_merge( [ 'desktop' ], $active_devices );
		}

		foreach ( $active_devices as $active_device ) {
			$space_between_config[ $active_device . '_default' ] = [
				'size' => 10,
			];
		}

		$this->add_responsive_control(
			'space_between',
			$space_between_config
		);

		$this->add_control(
			'slide_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-main-swiper .swiper-slide' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'slide_border_size',
			[
				'label' => esc_html__( 'Border Size', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'selectors' => [
					'{{WRAPPER}} .elementor-main-swiper .swiper-slide' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'slide_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'range' => [
					'%' => [
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-main-swiper .swiper-slide' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'slide_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-main-swiper .swiper-slide' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'slide_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%', 'em' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-main-swiper .swiper-slide' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
				],
				'separator' => 'before',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_navigation',
			[
				'label' => esc_html__( 'Navigation', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'heading_arrows',
			[
				'label' => esc_html__( 'Arrows', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'none',
			]
		);

		$this->add_control(
			'arrows_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 20,
				],
				'range' => [
					'px' => [
						'min' => 10,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-swiper-button' => 'font-size: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'arrows_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-swiper-button' => 'color: {{VALUE}}',
					'{{WRAPPER}} .elementor-swiper-button svg' => 'fill: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'heading_pagination',
			[
				'label' => esc_html__( 'Pagination', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'condition' => [
					'pagination!' => '',
				],
			]
		);

		$this->add_control(
			'pagination_position',
			[
				'label' => esc_html__( 'Position', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'outside',
				'options' => [
					'outside' => esc_html__( 'Outside', 'elementor-pro' ),
					'inside' => esc_html__( 'Inside', 'elementor-pro' ),
				],
				'prefix_class' => 'elementor-pagination-position-',
				'condition' => [
					'pagination!' => '',
				],
			]
		);

		$this->add_control(
			'pagination_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 20,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .swiper-pagination-bullet' => 'height: {{SIZE}}{{UNIT}}; width: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}} .swiper-container-horizontal .swiper-pagination-progressbar' => 'height: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}} .swiper-pagination-fraction' => 'font-size: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'pagination!' => '',
				],
			]
		);

		$this->add_control(
			'pagination_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .swiper-pagination-bullet-active, {{WRAPPER}} .swiper-pagination-progressbar-fill' => 'background-color: {{VALUE}}',
					'{{WRAPPER}} .swiper-pagination-fraction' => 'color: {{VALUE}}',
				],
				'condition' => [
					'pagination!' => '',
				],
			]
		);

		$this->end_controls_section();
	}

	protected function print_slider( array $settings = null ) {
		if ( null === $settings ) {
			$settings = $this->get_settings_for_display();
		}

		$default_settings = [
			'container_class' => 'elementor-main-swiper',
			'video_play_icon' => true,
		];

		$settings = array_merge( $default_settings, $settings );

		$slides_count = count( $settings['slides'] );
		?>
		<div class="elementor-swiper">
			<div class="<?php echo esc_attr( $settings['container_class'] ); ?> swiper-container">
				<div class="swiper-wrapper">
					<?php
					foreach ( $settings['slides'] as $index => $slide ) :
						$this->slide_prints_count++;
						?>
						<div class="swiper-slide">
							<?php $this->print_slide( $slide, $settings, 'slide-' . $index . '-' . $this->slide_prints_count ); ?>
						</div>
					<?php endforeach; ?>
				</div>
				<?php if ( 1 < $slides_count ) : ?>
					<?php if ( $settings['pagination'] ) : ?>
						<div class="swiper-pagination"></div>
					<?php endif; ?>
					<?php if ( $settings['show_arrows'] ) : ?>
						<div class="elementor-swiper-button elementor-swiper-button-prev">
							<?php $this->render_swiper_button( 'previous' ); ?>
							<span class="elementor-screen-only"><?php echo esc_html__( 'Previous', 'elementor-pro' ); ?></span>
						</div>
						<div class="elementor-swiper-button elementor-swiper-button-next">
							<?php $this->render_swiper_button( 'next' ); ?>
							<span class="elementor-screen-only"><?php echo esc_html__( 'Next', 'elementor-pro' ); ?></span>
						</div>
					<?php endif; ?>
				<?php endif; ?>
			</div>
		</div>
		<?php
	}

	protected function get_slide_image_url( $slide, array $settings ) {
		$image_url = Group_Control_Image_Size::get_attachment_image_src( $slide['image']['id'], 'image_size', $settings );

		if ( ! $image_url ) {
			$image_url = $slide['image']['url'];
		}

		return $image_url;
	}

	private function render_swiper_button( $type ) {
		$direction = 'next' === $type ? 'right' : 'left';

		if ( is_rtl() ) {
			$direction = 'right' === $direction ? 'left' : 'right';
		}

		$icon_value = 'eicon-chevron-' . $direction;

		Icons_Manager::render_icon( [
			'library' => 'eicons',
			'value' => $icon_value,
		], [ 'aria-hidden' => 'true' ] );
	}
}
modules/carousel/widgets/testimonial-carousel.php000064400000051413150755004310016357 0ustar00<?php
namespace ElementorPro\Modules\Carousel\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;
use Elementor\Repeater;
use Elementor\Utils;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Testimonial_Carousel extends Base {

	public function get_name() {
		return 'testimonial-carousel';
	}

	public function get_title() {
		return esc_html__( 'Testimonial Carousel', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-testimonial-carousel';
	}

	public function get_keywords() {
		return [ 'testimonial', 'carousel', 'image' ];
	}

	protected function register_controls() {
		parent::register_controls();

		$this->start_injection( [
			'of' => 'slides',
		] );

		$this->add_control(
			'skin',
			[
				'label' => esc_html__( 'Skin', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'default',
				'options' => [
					'default' => esc_html__( 'Default', 'elementor-pro' ),
					'bubble' => esc_html__( 'Bubble', 'elementor-pro' ),
				],
				'prefix_class' => 'elementor-testimonial--skin-',
				'render_type' => 'template',
			]
		);

		$this->add_control(
			'layout',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'image_inline',
				'options' => [
					'image_inline' => esc_html__( 'Image Inline', 'elementor-pro' ),
					'image_stacked' => esc_html__( 'Image Stacked', 'elementor-pro' ),
					'image_above' => esc_html__( 'Image Above', 'elementor-pro' ),
					'image_left' => esc_html__( 'Image Left', 'elementor-pro' ),
					'image_right' => esc_html__( 'Image Right', 'elementor-pro' ),
				],
				'prefix_class' => 'elementor-testimonial--layout-',
				'render_type' => 'template',
			]
		);

		$this->add_responsive_control(
			'alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'default' => 'center',
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'prefix_class' => 'elementor-testimonial--align-',
			]
		);

		$this->end_injection();

		$this->start_controls_section(
			'section_skin_style',
			[
				'label' => esc_html__( 'Bubble', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'skin' => 'bubble',
				],
			]
		);

		$this->add_control(
			'background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'alpha' => false,
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__content, {{WRAPPER}} .elementor-testimonial__content:after' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_responsive_control(
			'text_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%', 'em' ],
				'default' => [
					'top' => '20',
					'bottom' => '20',
					'left' => '20',
					'right' => '20',
					'unit' => 'px',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
					'{{WRAPPER}}.elementor-testimonial--layout-image_left .elementor-testimonial__footer,
					{{WRAPPER}}.elementor-testimonial--layout-image_right .elementor-testimonial__footer' => 'padding-top: {{TOP}}{{UNIT}}',
					'{{WRAPPER}}.elementor-testimonial--layout-image_above .elementor-testimonial__footer,
					{{WRAPPER}}.elementor-testimonial--layout-image_inline .elementor-testimonial__footer,
					{{WRAPPER}}.elementor-testimonial--layout-image_stacked .elementor-testimonial__footer' => 'padding: 0 {{RIGHT}}{{UNIT}} 0 {{LEFT}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%', 'em' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__content' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'border',
			[
				'label' => esc_html__( 'Border', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__content, {{WRAPPER}} .elementor-testimonial__content:after' => 'border-style: solid',
				],
			]
		);

		$this->add_control(
			'border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#000',
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__content' => 'border-color: {{VALUE}}',
					'{{WRAPPER}} .elementor-testimonial__content:after' => 'border-color: transparent {{VALUE}} {{VALUE}} transparent',
				],
				'condition' => [
					'border' => 'yes',
				],
			]
		);

		$this->add_responsive_control(
			'border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 20,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__content, {{WRAPPER}} .elementor-testimonial__content:after' => 'border-width: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}}.elementor-testimonial--layout-image_stacked .elementor-testimonial__content:after,
					{{WRAPPER}}.elementor-testimonial--layout-image_inline .elementor-testimonial__content:after' => 'margin-top: -{{SIZE}}{{UNIT}}',
					'{{WRAPPER}}.elementor-testimonial--layout-image_above .elementor-testimonial__content:after' => 'margin-bottom: -{{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'border' => 'yes',
				],
			]
		);

		$this->end_controls_section();

		$this->start_injection( [
			'at' => 'before',
			'of' => 'section_navigation',
		] );

		$this->start_controls_section(
			'section_content_style',
			[
				'label' => esc_html__( 'Content', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'content_gap',
			[
				'label' => esc_html__( 'Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}}.elementor-testimonial--layout-image_inline .elementor-testimonial__footer,
					{{WRAPPER}}.elementor-testimonial--layout-image_stacked .elementor-testimonial__footer' => 'margin-top: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}}.elementor-testimonial--layout-image_above .elementor-testimonial__footer' => 'margin-bottom: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}}.elementor-testimonial--layout-image_left .elementor-testimonial__footer' => 'padding-right: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}}.elementor-testimonial--layout-image_right .elementor-testimonial__footer' => 'padding-left: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'content_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__text' => 'color: {{VALUE}}',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'content_typography',
				'selector' => '{{WRAPPER}} .elementor-testimonial__text',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->add_control(
			'name_title_style',
			[
				'label' => esc_html__( 'Name', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'name_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__name' => 'color: {{VALUE}}',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'name_typography',
				'selector' => '{{WRAPPER}} .elementor-testimonial__name',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
			]
		);

		$this->add_control(
			'heading_title_style',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'title_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__title' => 'color: {{VALUE}}',
				],
				'global' => [
					'default' => Global_Colors::COLOR_PRIMARY,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'title_typography',
				'selector' => '{{WRAPPER}} .elementor-testimonial__title',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_SECONDARY,
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_image_style',
			[
				'label' => esc_html__( 'Image', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'image_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 200,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__image img' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}}.elementor-testimonial--layout-image_left .elementor-testimonial__content:after,
					 {{WRAPPER}}.elementor-testimonial--layout-image_right .elementor-testimonial__content:after' => 'top: calc( {{text_padding.TOP}}{{text_padding.UNIT}} + ({{SIZE}}{{UNIT}} / 2) - 8px );',

					'body:not(.rtl) {{WRAPPER}}.elementor-testimonial--layout-image_stacked:not(.elementor-testimonial--align-center):not(.elementor-testimonial--align-right) .elementor-testimonial__content:after,
					 body:not(.rtl) {{WRAPPER}}.elementor-testimonial--layout-image_inline:not(.elementor-testimonial--align-center):not(.elementor-testimonial--align-right) .elementor-testimonial__content:after,
					 {{WRAPPER}}.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-left .elementor-testimonial__content:after,
					 {{WRAPPER}}.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__content:after' => 'left: calc( {{text_padding.LEFT}}{{text_padding.UNIT}} + ({{SIZE}}{{UNIT}} / 2) - 8px ); right:auto;',

					'body.rtl {{WRAPPER}}.elementor-testimonial--layout-image_stacked:not(.elementor-testimonial--align-center):not(.elementor-testimonial--align-left) .elementor-testimonial__content:after,
					 body.rtl {{WRAPPER}}.elementor-testimonial--layout-image_inline:not(.elementor-testimonial--align-center):not(.elementor-testimonial--align-left) .elementor-testimonial__content:after,
					 {{WRAPPER}}.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-right .elementor-testimonial__content:after,
					 {{WRAPPER}}.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__content:after' => 'right: calc( {{text_padding.RIGHT}}{{text_padding.UNIT}} + ({{SIZE}}{{UNIT}} / 2) - 8px ); left:auto;',

					'body:not(.rtl) {{WRAPPER}}.elementor-testimonial--layout-image_above:not(.elementor-testimonial--align-center):not(.elementor-testimonial--align-right) .elementor-testimonial__content:after,
					 {{WRAPPER}}.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__content:after' => 'left: calc( {{text_padding.LEFT}}{{text_padding.UNIT}} + ({{SIZE}}{{UNIT}} / 2) - 8px ); right:auto;',

					'body.rtl {{WRAPPER}}.elementor-testimonial--layout-image_above:not(.elementor-testimonial--align-center):not(.elementor-testimonial--align-left) .elementor-testimonial__content:after,
					 {{WRAPPER}}.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__content:after' => 'right: calc( {{text_padding.RIGHT}}{{text_padding.UNIT}} + ({{SIZE}}{{UNIT}} / 2) - 8px ); left:auto;',
				],
			]
		);

		$this->add_responsive_control(
			'image_gap',
			[
				'label' => esc_html__( 'Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'body.rtl {{WRAPPER}}.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__image + cite,
					 body.rtl {{WRAPPER}}.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__image + cite,
					 body:not(.rtl) {{WRAPPER}}.elementor-testimonial--layout-image_inline .elementor-testimonial__image + cite,
					 body:not(.rtl) {{WRAPPER}}.elementor-testimonial--layout-image_above .elementor-testimonial__image + cite' => 'margin-left: {{SIZE}}{{UNIT}}; margin-right: 0;',

					'body:not(.rtl) {{WRAPPER}}.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__image + cite,
					 body:not(.rtl) {{WRAPPER}}.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__image + cite,
					 body.rtl {{WRAPPER}}.elementor-testimonial--layout-image_inline .elementor-testimonial__image + cite,
					 body.rtl {{WRAPPER}}.elementor-testimonial--layout-image_above .elementor-testimonial__image + cite' => 'margin-right: {{SIZE}}{{UNIT}}; margin-left:0;',

					'{{WRAPPER}}.elementor-testimonial--layout-image_stacked .elementor-testimonial__image + cite,
					 {{WRAPPER}}.elementor-testimonial--layout-image_left .elementor-testimonial__image + cite,
					 {{WRAPPER}}.elementor-testimonial--layout-image_right .elementor-testimonial__image + cite' => 'margin-top: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'image_border',
			[
				'label' => esc_html__( 'Border', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__image img' => 'border-style: solid',
				],
			]
		);

		$this->add_control(
			'image_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#000',
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__image img' => 'border-color: {{VALUE}}',
				],
				'condition' => [
					'image_border' => 'yes',
				],
			]
		);

		$this->add_responsive_control(
			'image_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 20,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__image img' => 'border-width: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'image_border' => 'yes',
				],
			]
		);

		$this->add_control(
			'image_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-testimonial__image img' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section();

		$this->end_injection();

		$this->update_responsive_control(
			'width',
			[
				'selectors' => [
					'{{WRAPPER}}.elementor-arrows-yes .elementor-main-swiper' => 'width: calc( {{SIZE}}{{UNIT}} - 40px )',
					'{{WRAPPER}} .elementor-main-swiper' => 'width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->update_responsive_control(
			'slides_per_view',
			[
				'condition' => null,
			]
		);

		$this->update_responsive_control(
			'slides_to_scroll',
			[
				'condition' => null,
			]
		);

		$this->remove_control( 'effect' );
		$this->remove_responsive_control( 'height' );
		$this->remove_control( 'pagination_position' );
	}

	protected function add_repeater_controls( Repeater $repeater ) {
		$repeater->add_control(
			'content',
			[
				'label' => esc_html__( 'Content', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$repeater->add_control(
			'image',
			[
				'label' => esc_html__( 'Image', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$repeater->add_control(
			'name',
			[
				'label' => esc_html__( 'Name', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'John Doe', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$repeater->add_control(
			'title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'CEO', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);
	}

	protected function get_repeater_defaults() {
		$placeholder_image_src = Utils::get_placeholder_image_src();

		return [
			[
				'content' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor-pro' ),
				'name' => esc_html__( 'John Doe', 'elementor-pro' ),
				'title' => esc_html__( 'CEO', 'elementor-pro' ),
				'image' => [
					'url' => $placeholder_image_src,
				],
			],
			[
				'content' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor-pro' ),
				'name' => esc_html__( 'John Doe', 'elementor-pro' ),
				'title' => esc_html__( 'CEO', 'elementor-pro' ),
				'image' => [
					'url' => $placeholder_image_src,
				],
			],
			[
				'content' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor-pro' ),
				'name' => esc_html__( 'John Doe', 'elementor-pro' ),
				'title' => esc_html__( 'CEO', 'elementor-pro' ),
				'image' => [
					'url' => $placeholder_image_src,
				],
			],
		];
	}

	private function print_cite( $slide, $location ) {
		if ( empty( $slide['name'] ) && empty( $slide['title'] ) ) {
			return '';
		}

		$skin = $this->get_settings( 'skin' );
		$layout = 'bubble' === $skin ? 'image_inline' : $this->get_settings( 'layout' );
		$locations_outside = [ 'image_above', 'image_right', 'image_left' ];
		$locations_inside = [ 'image_inline', 'image_stacked' ];

		$print_outside = ( 'outside' === $location && in_array( $layout, $locations_outside ) );
		$print_inside = ( 'inside' === $location && in_array( $layout, $locations_inside ) );

		$html = '';
		if ( $print_outside || $print_inside ) {
			$html = '<cite class="elementor-testimonial__cite">';
			if ( ! empty( $slide['name'] ) ) {
				$html .= '<span class="elementor-testimonial__name">' . $slide['name'] . '</span>';
			}
			if ( ! empty( $slide['title'] ) ) {
				$html .= '<span class="elementor-testimonial__title">' . $slide['title'] . '</span>';
			}
			$html .= '</cite>';
		}

		// PHPCS - the main text of a widget should not be escaped.
		echo $html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}

	protected function print_slide( array $slide, array $settings, $element_key ) {
		$this->add_render_attribute( $element_key . '-testimonial', [
			'class' => 'elementor-testimonial',
		] );

		if ( ! empty( $slide['image']['url'] ) ) {
			$this->add_render_attribute( $element_key . '-image', [
				'src' => $this->get_slide_image_url( $slide, $settings ),
				'alt' => ! empty( $slide['name'] ) ? $slide['name'] : '',
			] );
		}

		?>
		<div <?php $this->print_render_attribute_string( $element_key . '-testimonial' ); ?>>
			<?php if ( $slide['content'] ) : ?>
				<div class="elementor-testimonial__content">
					<div class="elementor-testimonial__text">
						<?php // PHPCS - the main text of a widget should not be escaped.
						echo $slide['content']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
					</div>
					<?php $this->print_cite( $slide, 'outside' ); ?>
				</div>
			<?php endif; ?>
			<div class="elementor-testimonial__footer">
				<?php if ( $slide['image']['url'] ) : ?>
					<div class="elementor-testimonial__image">
						<img <?php $this->print_render_attribute_string( $element_key . '-image' ); ?>>
					</div>
				<?php endif; ?>
				<?php $this->print_cite( $slide, 'inside' ); ?>
			</div>
		</div>
		<?php
	}

	protected function render() {
		$this->print_slider();
	}

	public function get_group_name() {
		return 'carousel';
	}
}
modules/carousel/module.php000064400000000552150755004310012031 0ustar00<?php
namespace ElementorPro\Modules\Carousel;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function get_widgets() {
		return [
			'Media_Carousel',
			'Testimonial_Carousel',
			'Reviews',
		];
	}

	public function get_name() {
		return 'carousel';
	}
}
modules/motion-fx/module.php000064400000006642150755004310012142 0ustar00<?php

namespace ElementorPro\Modules\MotionFX;

use Elementor\Element_Base;
use Elementor\Element_Column;
use Elementor\Element_Section;
use ElementorPro\Base\Module_Base;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function __construct() {
		parent::__construct();

		$this->add_actions();
	}
	/**
	 * Get module name.
	 *
	 * Retrieve the module name.
	 *
	 * @since  2.5.0
	 * @access public
	 *
	 * @return string Module name.
	 */
	public function get_name() {
		return 'motion-fx';
	}

	public function register_controls_group() {
		Plugin::elementor()->controls_manager->add_group_control( Controls_Group::get_type(), new Controls_Group() );
	}

	public function add_controls_group_to_element( Element_Base $element ) {
		$exclude = [];

		$selector = '{{WRAPPER}}';

		if ( $element instanceof Element_Section ) {
			$exclude[] = 'motion_fx_mouse';
		} elseif ( $element instanceof Element_Column ) {
			$selector .= ' > .elementor-widget-wrap';
		} else {
			$selector .= ' > .elementor-widget-container';
		}

		$element->add_group_control(
			Controls_Group::get_type(),
			[
				'name' => 'motion_fx',
				'selector' => $selector,
				'exclude' => $exclude,
			]
		);
	}

	public function add_controls_group_to_element_background( Element_Base $element ) {
		$element->start_injection( [
			'of' => 'background_bg_width_mobile',
		] );

		$element->add_group_control(
			Controls_Group::get_type(),
			[
				'name' => 'background_motion_fx',
				'exclude' => [
					'rotateZ_effect',
					'tilt_effect',
					'transform_origin_x',
					'transform_origin_y',
				],
			]
		);

		$options = [
			'separator' => 'before',
			'conditions' => [
				'relation' => 'or',
				'terms' => [
					[
						'name' => 'background_background',
						'value' => 'classic',
					],
					[
						'terms' => [
							[
								'name' => 'background_background',
								'value' => 'gradient',
							],
							[
								'name' => 'background_color',
								'operator' => '!==',
								'value' => '',
							],
							[
								'name' => 'background_color_b',
								'operator' => '!==',
								'value' => '',
							],
						],
					],
				],
			],
		];

		$element->update_control( 'background_motion_fx_motion_fx_scrolling', $options );

		$element->update_control( 'background_motion_fx_motion_fx_mouse', $options );

		$element->end_injection();
	}

	public function localize_settings( array $settings ) {
		$settings['i18n']['motion_effects'] = esc_html__( 'Motion Effects', 'elementor-pro' );

		return $settings;
	}

	private function add_actions() {
		add_action( 'elementor/controls/controls_registered', [ $this, 'register_controls_group' ] );

		add_action( 'elementor/element/section/section_effects/after_section_start', [ $this, 'add_controls_group_to_element' ] );
		add_action( 'elementor/element/column/section_effects/after_section_start', [ $this, 'add_controls_group_to_element' ] );
		add_action( 'elementor/element/common/section_effects/after_section_start', [ $this, 'add_controls_group_to_element' ] );

		add_action( 'elementor/element/section/section_background/before_section_end', [ $this, 'add_controls_group_to_element_background' ] );
		add_action( 'elementor/element/column/section_style/before_section_end', [ $this, 'add_controls_group_to_element_background' ] );

		add_filter( 'elementor_pro/editor/localize_settings', [ $this, 'localize_settings' ] );
	}
}
modules/motion-fx/controls-group.php000064400000035001150755004310013641 0ustar00<?php

namespace ElementorPro\Modules\MotionFX;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Base;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Controls_Group extends Group_Control_Base {

	protected static $fields;

	/**
	 * Get group control type.
	 *
	 * Retrieve the group control type.
	 *
	 * @since  2.5.0
	 * @access public
	 * @static
	 */
	public static function get_type() {
		return 'motion_fx';
	}

	/**
	 * Init fields.
	 *
	 * Initialize group control fields.
	 *
	 * @since  2.5.0
	 * @access protected
	 */
	protected function init_fields() {
		$fields = [
			'motion_fx_scrolling' => [
				'label' => esc_html__( 'Scrolling Effects', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'render_type' => 'ui',
				'frontend_available' => true,
			],
		];

		$this->prepare_effects( 'scrolling', $fields );

		$transform_origin_conditions = [
			'terms' => [
				[
					'name' => 'motion_fx_scrolling',
					'value' => 'yes',
				],
				[
					'relation' => 'or',
					'terms' => [
						[
							'name' => 'rotateZ_effect',
							'value' => 'yes',
						],
						[
							'name' => 'scale_effect',
							'value' => 'yes',
						],
					],
				],
			],
		];

		if ( version_compare( ELEMENTOR_VERSION, '3.5.0', '>=' ) ) {

			$css_transform_controls = [
				[
					'name' => 'transform_x_anchor_point',
					'value' => '',
				],
				[
					'name' => 'transform_y_anchor_point',
					'value' => '',
				],
			];

			$transform_origin_conditions['terms'] = array_merge( $transform_origin_conditions['terms'], $css_transform_controls );
		}

		$fields['transform_origin_x'] = [
			'label' => esc_html__( 'X Anchor Point', 'elementor-pro' ),
			'type' => Controls_Manager::CHOOSE,
			'default' => 'center',
			'options' => [
				'left' => [
					'title' => esc_html__( 'Left', 'elementor-pro' ),
					'icon' => 'eicon-h-align-left',
				],
				'center' => [
					'title' => esc_html__( 'Center', 'elementor-pro' ),
					'icon' => 'eicon-h-align-center',
				],
				'right' => [
					'title' => esc_html__( 'Right', 'elementor-pro' ),
					'icon' => 'eicon-h-align-right',
				],
			],
			'conditions' => $transform_origin_conditions,
			'toggle' => false,
			'render_type' => 'ui',
			'selectors' => [
				'{{SELECTOR}}' => '--e-transform-origin-x: {{VALUE}}',
			],
		];

		$fields['transform_origin_y'] = [
			'label' => esc_html__( 'Y Anchor Point', 'elementor-pro' ),
			'type' => Controls_Manager::CHOOSE,
			'default' => 'center',
			'options' => [
				'top' => [
					'title' => esc_html__( 'Top', 'elementor-pro' ),
					'icon' => 'eicon-v-align-top',
				],
				'center' => [
					'title' => esc_html__( 'Center', 'elementor-pro' ),
					'icon' => 'eicon-v-align-middle',
				],
				'bottom' => [
					'title' => esc_html__( 'Bottom', 'elementor-pro' ),
					'icon' => 'eicon-v-align-bottom',
				],
			],
			'conditions' => $transform_origin_conditions,
			'selectors' => [
				'{{SELECTOR}}' => '--e-transform-origin-y: {{VALUE}}',
			],
			'toggle' => false,
		];

		// TODO: Once Core 3.4.0 is out, get the active devices using Breakpoints/Manager::get_active_devices_list().
		$active_breakpoint_instances = Plugin::elementor()->breakpoints->get_active_breakpoints();
		// Devices need to be ordered from largest to smallest.
		$active_devices = array_reverse( array_keys( $active_breakpoint_instances ) );

		// Add desktop in the correct position.
		if ( in_array( 'widescreen', $active_devices, true ) ) {
			$active_devices = array_merge( array_slice( $active_devices, 0, 1 ), [ 'desktop' ], array_slice( $active_devices, 1 ) );
		} else {
			$active_devices = array_merge( [ 'desktop' ], $active_devices );
		}

		$devices_options = [];

		foreach ( $active_devices as $device_key ) {
			$device_label = 'desktop' === $device_key ? esc_html__( 'Desktop', 'elementor-pro' ) : $active_breakpoint_instances[ $device_key ]->get_label();

			$devices_options[ $device_key ] = $device_label;
		}

		$fields['devices'] = [
			'label' => esc_html__( 'Apply Effects On', 'elementor-pro' ),
			'type' => Controls_Manager::SELECT2,
			'multiple' => true,
			'label_block' => true,
			'default' => $active_devices,
			'options' => $devices_options,
			'condition' => [
				'motion_fx_scrolling' => 'yes',
			],
			'render_type' => 'none',
			'frontend_available' => true,
		];

		$fields['range'] = [
			'label' => esc_html__( 'Effects Relative To', 'elementor-pro' ),
			'type' => Controls_Manager::SELECT,
			'options' => [
				'' => esc_html__( 'Default', 'elementor-pro' ),
				'viewport' => esc_html__( 'Viewport', 'elementor-pro' ),
				'page' => esc_html__( 'Entire Page', 'elementor-pro' ),
			],
			'condition' => [
				'motion_fx_scrolling' => 'yes',
			],
			'render_type' => 'none',
			'frontend_available' => true,
		];

		$fields['motion_fx_mouse'] = [
			'label' => esc_html__( 'Mouse Effects', 'elementor-pro' ),
			'type' => Controls_Manager::SWITCHER,
			'label_off' => esc_html__( 'Off', 'elementor-pro' ),
			'label_on' => esc_html__( 'On', 'elementor-pro' ),
			'separator' => 'before',
			'render_type' => 'none',
			'frontend_available' => true,
		];

		$this->prepare_effects( 'mouse', $fields );

		return $fields;
	}

	protected function get_default_options() {
		return [
			'popover' => false,
		];
	}

	private function get_scrolling_effects() {
		return [
			'translateY' => [
				'label' => esc_html__( 'Vertical Scroll', 'elementor-pro' ),
				'fields' => [
					'direction' => [
						'label' => esc_html__( 'Direction', 'elementor-pro' ),
						'type' => Controls_Manager::SELECT,
						'options' => [
							'' => esc_html__( 'Up', 'elementor-pro' ),
							'negative' => esc_html__( 'Down', 'elementor-pro' ),
						],
					],
					'speed' => [
						'label' => esc_html__( 'Speed', 'elementor-pro' ),
						'type' => Controls_Manager::SLIDER,
						'default' => [
							'size' => 4,
						],
						'range' => [
							'px' => [
								'max' => 10,
								'step' => 0.1,
							],
						],
					],
					'affectedRange' => [
						'label' => esc_html__( 'Viewport', 'elementor-pro' ),
						'type' => Controls_Manager::SLIDER,
						'default' => [
							'sizes' => [
								'start' => 0,
								'end' => 100,
							],
							'unit' => '%',
						],
						'labels' => [
							__( 'Bottom', 'elementor-pro' ),
							__( 'Top', 'elementor-pro' ),
						],
						'scales' => 1,
						'handles' => 'range',
					],
				],
			],
			'translateX' => [
				'label' => esc_html__( 'Horizontal Scroll', 'elementor-pro' ),
				'fields' => [
					'direction' => [
						'label' => esc_html__( 'Direction', 'elementor-pro' ),
						'type' => Controls_Manager::SELECT,
						'options' => [
							'' => esc_html__( 'To Left', 'elementor-pro' ),
							'negative' => esc_html__( 'To Right', 'elementor-pro' ),
						],
					],
					'speed' => [
						'label' => esc_html__( 'Speed', 'elementor-pro' ),
						'type' => Controls_Manager::SLIDER,
						'default' => [
							'size' => 4,
						],
						'range' => [
							'px' => [
								'max' => 10,
								'step' => 0.1,
							],
						],
					],
					'affectedRange' => [
						'label' => esc_html__( 'Viewport', 'elementor-pro' ),
						'type' => Controls_Manager::SLIDER,
						'default' => [
							'sizes' => [
								'start' => 0,
								'end' => 100,
							],
							'unit' => '%',
						],
						'labels' => [
							__( 'Bottom', 'elementor-pro' ),
							__( 'Top', 'elementor-pro' ),
						],
						'scales' => 1,
						'handles' => 'range',
					],
				],
			],
			'opacity' => [
				'label' => esc_html__( 'Transparency', 'elementor-pro' ),
				'fields' => [
					'direction' => [
						'label' => esc_html__( 'Direction', 'elementor-pro' ),
						'type' => Controls_Manager::SELECT,
						'default' => 'out-in',
						'options' => [
							'out-in' => 'Fade In',
							'in-out' => 'Fade Out',
							'in-out-in' => 'Fade Out In',
							'out-in-out' => 'Fade In Out',
						],
					],
					'level' => [
						'label' => esc_html__( 'Level', 'elementor-pro' ),
						'type' => Controls_Manager::SLIDER,
						'default' => [
							'size' => 10,
						],
						'range' => [
							'px' => [
								'min' => 1,
								'max' => 10,
								'step' => 0.1,
							],
						],
					],
					'range' => [
						'label' => esc_html__( 'Viewport', 'elementor-pro' ),
						'type' => Controls_Manager::SLIDER,
						'default' => [
							'sizes' => [
								'start' => 20,
								'end' => 80,
							],
							'unit' => '%',
						],
						'labels' => [
							__( 'Bottom', 'elementor-pro' ),
							__( 'Top', 'elementor-pro' ),
						],
						'scales' => 1,
						'handles' => 'range',
					],
				],
			],
			'blur' => [
				'label' => esc_html__( 'Blur', 'elementor-pro' ),
				'fields' => [
					'direction' => [
						'label' => esc_html__( 'Direction', 'elementor-pro' ),
						'type' => Controls_Manager::SELECT,
						'default' => 'out-in',
						'options' => [
							'out-in' => 'Fade In',
							'in-out' => 'Fade Out',
							'in-out-in' => 'Fade Out In',
							'out-in-out' => 'Fade In Out',
						],
					],
					'level' => [
						'label' => esc_html__( 'Level', 'elementor-pro' ),
						'type' => Controls_Manager::SLIDER,
						'default' => [
							'size' => 7,
						],
						'range' => [
							'px' => [
								'min' => 1,
								'max' => 15,
							],
						],
					],
					'range' => [
						'label' => esc_html__( 'Viewport', 'elementor-pro' ),
						'type' => Controls_Manager::SLIDER,
						'default' => [
							'sizes' => [
								'start' => 20,
								'end' => 80,
							],
							'unit' => '%',
						],
						'labels' => [
							__( 'Bottom', 'elementor-pro' ),
							__( 'Top', 'elementor-pro' ),
						],
						'scales' => 1,
						'handles' => 'range',
					],
				],
			],
			'rotateZ' => [
				'label' => esc_html__( 'Rotate', 'elementor-pro' ),
				'fields' => [
					'direction' => [
						'label' => esc_html__( 'Direction', 'elementor-pro' ),
						'type' => Controls_Manager::SELECT,
						'options' => [
							'' => esc_html__( 'To Left', 'elementor-pro' ),
							'negative' => esc_html__( 'To Right', 'elementor-pro' ),
						],
					],
					'speed' => [
						'label' => esc_html__( 'Speed', 'elementor-pro' ),
						'type' => Controls_Manager::SLIDER,
						'default' => [
							'size' => 1,
						],
						'range' => [
							'px' => [
								'max' => 10,
								'step' => 0.1,
							],
						],
					],
					'affectedRange' => [
						'label' => esc_html__( 'Viewport', 'elementor-pro' ),
						'type' => Controls_Manager::SLIDER,
						'default' => [
							'sizes' => [
								'start' => 0,
								'end' => 100,
							],
							'unit' => '%',
						],
						'labels' => [
							__( 'Bottom', 'elementor-pro' ),
							__( 'Top', 'elementor-pro' ),
						],
						'scales' => 1,
						'handles' => 'range',
					],
				],
			],
			'scale' => [
				'label' => esc_html__( 'Scale', 'elementor-pro' ),
				'fields' => [
					'direction' => [
						'label' => esc_html__( 'Direction', 'elementor-pro' ),
						'type' => Controls_Manager::SELECT,
						'default' => 'out-in',
						'options' => [
							'out-in' => 'Scale Up',
							'in-out' => 'Scale Down',
							'in-out-in' => 'Scale Down Up',
							'out-in-out' => 'Scale Up Down',
						],
					],
					'speed' => [
						'label' => esc_html__( 'Speed', 'elementor-pro' ),
						'type' => Controls_Manager::SLIDER,
						'default' => [
							'size' => 4,
						],
						'range' => [
							'px' => [
								'min' => -10,
								'max' => 10,
							],
						],
					],
					'range' => [
						'label' => esc_html__( 'Viewport', 'elementor-pro' ),
						'type' => Controls_Manager::SLIDER,
						'default' => [
							'sizes' => [
								'start' => 20,
								'end' => 80,
							],
							'unit' => '%',
						],
						'labels' => [
							__( 'Bottom', 'elementor-pro' ),
							__( 'Top', 'elementor-pro' ),
						],
						'scales' => 1,
						'handles' => 'range',
					],
				],
			],
		];
	}

	private function get_mouse_effects() {
		return [
			'mouseTrack' => [
				'label' => esc_html__( 'Mouse Track', 'elementor-pro' ),
				'fields' => [
					'direction' => [
						'label' => esc_html__( 'Direction', 'elementor-pro' ),
						'type' => Controls_Manager::SELECT,
						'default' => '',
						'options' => [
							'' => esc_html__( 'Opposite', 'elementor-pro' ),
							'negative' => esc_html__( 'Direct', 'elementor-pro' ),
						],
					],
					'speed' => [
						'label' => esc_html__( 'Speed', 'elementor-pro' ),
						'type' => Controls_Manager::SLIDER,
						'default' => [
							'size' => 1,
						],
						'range' => [
							'px' => [
								'max' => 10,
								'step' => 0.1,
							],
						],
					],
				],
			],
			'tilt' => [
				'label' => esc_html__( '3D Tilt', 'elementor-pro' ),
				'fields' => [
					'direction' => [
						'label' => esc_html__( 'Direction', 'elementor-pro' ),
						'type' => Controls_Manager::SELECT,
						'default' => '',
						'options' => [
							'' => esc_html__( 'Direct', 'elementor-pro' ),
							'negative' => esc_html__( 'Opposite', 'elementor-pro' ),
						],
					],
					'speed' => [
						'label' => esc_html__( 'Speed', 'elementor-pro' ),
						'type' => Controls_Manager::SLIDER,
						'default' => [
							'size' => 4,
						],
						'range' => [
							'px' => [
								'max' => 10,
								'step' => 0.1,
							],
						],
					],
				],
			],
		];
	}

	private function prepare_effects( $effects_group, array &$fields ) {
		$method_name = "get_{$effects_group}_effects";

		$effects = $this->$method_name();

		foreach ( $effects as $effect_name => $effect_args ) {
			$args = [
				'label' => $effect_args['label'],
				'type' => Controls_Manager::POPOVER_TOGGLE,
				'condition' => [
					'motion_fx_' . $effects_group => 'yes',
				],
				'render_type' => 'none',
				'frontend_available' => true,
			];

			if ( ! empty( $effect_args['separator'] ) ) {
				$args['separator'] = $effect_args['separator'];
			}

			$fields[ $effect_name . '_effect' ] = $args;

			$effect_fields = $effect_args['fields'];

			$first_field = & $effect_fields[ key( $effect_fields ) ];

			$first_field['popover']['start'] = true;

			end( $effect_fields );

			$last_field = & $effect_fields[ key( $effect_fields ) ];

			$last_field['popover']['end'] = true;

			reset( $effect_fields );

			foreach ( $effect_fields as $field_name => $field ) {
				$field = array_merge( $field, [
					'condition' => [
						'motion_fx_' . $effects_group => 'yes',
						$effect_name . '_effect' => 'yes',
					],
					'render_type' => 'none',
					'frontend_available' => true,
				] );

				$fields[ $effect_name . '_' . $field_name ] = $field;
			}
		}
	}
}
modules/countdown/widgets/countdown.php000064400000042734150755004310014445 0ustar00<?php
namespace ElementorPro\Modules\Countdown\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Typography;
use Elementor\Utils;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Countdown extends Base_Widget {

	public function get_name() {
		return 'countdown';
	}

	public function get_title() {
		return esc_html__( 'Countdown', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-countdown';
	}

	public function get_keywords() {
		return [ 'countdown', 'number', 'timer', 'time', 'date', 'evergreen' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_countdown',
			[
				'label' => esc_html__( 'Countdown', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'countdown_type',
			[
				'label' => esc_html__( 'Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'due_date' => esc_html__( 'Due Date', 'elementor-pro' ),
					'evergreen' => esc_html__( 'Evergreen Timer', 'elementor-pro' ),
				],
				'default' => 'due_date',
			]
		);

		$this->add_control(
			'due_date',
			[
				'label' => esc_html__( 'Due Date', 'elementor-pro' ),
				'type' => Controls_Manager::DATE_TIME,
				'default' => gmdate( 'Y-m-d H:i', strtotime( '+1 month' ) + ( get_option( 'gmt_offset' ) * HOUR_IN_SECONDS ) ),
				/* translators: %s: Time zone. */
				'description' => sprintf( esc_html__( 'Date set according to your timezone: %s.', 'elementor-pro' ), Utils::get_timezone_string() ),
				'condition' => [
					'countdown_type' => 'due_date',
				],
			]
		);

		$this->add_control(
			'evergreen_counter_hours',
			[
				'label' => esc_html__( 'Hours', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 47,
				'placeholder' => esc_html__( 'Hours', 'elementor-pro' ),
				'condition' => [
					'countdown_type' => 'evergreen',
				],
			]
		);

		$this->add_control(
			'evergreen_counter_minutes',
			[
				'label' => esc_html__( 'Minutes', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 59,
				'placeholder' => esc_html__( 'Minutes', 'elementor-pro' ),
				'condition' => [
					'countdown_type' => 'evergreen',
				],
			]
		);

		$this->add_control(
			'label_display',
			[
				'label' => esc_html__( 'View', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'block' => esc_html__( 'Block', 'elementor-pro' ),
					'inline' => esc_html__( 'Inline', 'elementor-pro' ),
				],
				'default' => 'block',
				'prefix_class' => 'elementor-countdown--label-',
			]
		);

		$this->add_control(
			'show_days',
			[
				'label' => esc_html__( 'Days', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
			]
		);

		$this->add_control(
			'show_hours',
			[
				'label' => esc_html__( 'Hours', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
			]
		);

		$this->add_control(
			'show_minutes',
			[
				'label' => esc_html__( 'Minutes', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
			]
		);

		$this->add_control(
			'show_seconds',
			[
				'label' => esc_html__( 'Seconds', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
			]
		);

		$this->add_control(
			'show_labels',
			[
				'label' => esc_html__( 'Show Label', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'custom_labels',
			[
				'label' => esc_html__( 'Custom Label', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'condition' => [
					'show_labels!' => '',
				],
			]
		);

		$this->add_control(
			'label_days',
			[
				'label' => esc_html__( 'Days', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Days', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Days', 'elementor-pro' ),
				'condition' => [
					'show_labels!' => '',
					'custom_labels!' => '',
					'show_days' => 'yes',
				],
			]
		);

		$this->add_control(
			'label_hours',
			[
				'label' => esc_html__( 'Hours', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Hours', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Hours', 'elementor-pro' ),
				'condition' => [
					'show_labels!' => '',
					'custom_labels!' => '',
					'show_hours' => 'yes',
				],
			]
		);

		$this->add_control(
			'label_minutes',
			[
				'label' => esc_html__( 'Minutes', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Minutes', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Minutes', 'elementor-pro' ),
				'condition' => [
					'show_labels!' => '',
					'custom_labels!' => '',
					'show_minutes' => 'yes',
				],
			]
		);

		$this->add_control(
			'label_seconds',
			[
				'label' => esc_html__( 'Seconds', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Seconds', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Seconds', 'elementor-pro' ),
				'condition' => [
					'show_labels!' => '',
					'custom_labels!' => '',
					'show_seconds' => 'yes',
				],
			]
		);

		$this->add_control(
			'expire_actions',
			[
				'label' => esc_html__( 'Actions After Expire', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'options' => [
					'redirect' => esc_html__( 'Redirect', 'elementor-pro' ),
					'hide' => esc_html__( 'Hide', 'elementor-pro' ),
					'message' => esc_html__( 'Show Message', 'elementor-pro' ),
				],
				'label_block' => true,
				'separator' => 'before',
				'render_type' => 'none',
				'multiple' => true,
			]
		);

		$this->add_control(
			'message_after_expire',
			[
				'label' => esc_html__( 'Message', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'separator' => 'before',
				'dynamic' => [
					'active' => true,
				],
				'condition' => [
					'expire_actions' => 'message',
				],
			]
		);

		$this->add_control(
			'expire_redirect_url',
			[
				'label' => esc_html__( 'Redirect URL', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'separator' => 'before',
				'options' => false,
				'dynamic' => [
					'active' => true,
				],
				'condition' => [
					'expire_actions' => 'redirect',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_box_style',
			[
				'label' => esc_html__( 'Boxes', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'container_width',
			[
				'label' => esc_html__( 'Container Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'unit' => '%',
					'size' => 100,
				],
				'tablet_default' => [
					'unit' => '%',
				],
				'mobile_default' => [
					'unit' => '%',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 2000,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'size_units' => [ '%', 'px' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-countdown-wrapper' => 'max-width: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'box_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_PRIMARY,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-countdown-item' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'box_border',
				'selector' => '{{WRAPPER}} .elementor-countdown-item',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'box_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-countdown-item' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'box_spacing',
			[
				'label' => esc_html__( 'Space Between', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 10,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'body:not(.rtl) {{WRAPPER}} .elementor-countdown-item:not(:first-of-type)' => 'margin-left: calc( {{SIZE}}{{UNIT}}/2 );',
					'body:not(.rtl) {{WRAPPER}} .elementor-countdown-item:not(:last-of-type)' => 'margin-right: calc( {{SIZE}}{{UNIT}}/2 );',
					'body.rtl {{WRAPPER}} .elementor-countdown-item:not(:first-of-type)' => 'margin-right: calc( {{SIZE}}{{UNIT}}/2 );',
					'body.rtl {{WRAPPER}} .elementor-countdown-item:not(:last-of-type)' => 'margin-left: calc( {{SIZE}}{{UNIT}}/2 );',
				],
			]
		);

		$this->add_responsive_control(
			'box_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%', 'em' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-countdown-item' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_content_style',
			[
				'label' => esc_html__( 'Content', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'heading_digits',
			[
				'label' => esc_html__( 'Digits', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'digits_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-countdown-digits' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'digits_typography',
				'selector' => '{{WRAPPER}} .elementor-countdown-digits',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->add_control(
			'heading_label',
			[
				'label' => esc_html__( 'Label', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'label_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-countdown-label' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'label_typography',
				'selector' => '{{WRAPPER}} .elementor-countdown-label',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_SECONDARY,
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_expire_message_style',
			[
				'label' => esc_html__( 'Message', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'expire_actions' => 'message',
				],
			]
		);

		$this->add_responsive_control(
			'align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-countdown-expire--message' => 'text-align: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-countdown-expire--message' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
				'selector' => '{{WRAPPER}} .elementor-countdown-expire--message',
			]
		);

		$this->add_responsive_control(
			'message_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%', 'em' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-countdown-expire--message' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();
	}

	private function get_strftime( $instance ) {
		$string = '';
		if ( $instance['show_days'] ) {
			$string .= $this->render_countdown_item( $instance, 'label_days', 'elementor-countdown-days' );
		}
		if ( $instance['show_hours'] ) {
			$string .= $this->render_countdown_item( $instance, 'label_hours', 'elementor-countdown-hours' );
		}
		if ( $instance['show_minutes'] ) {
			$string .= $this->render_countdown_item( $instance, 'label_minutes', 'elementor-countdown-minutes' );
		}
		if ( $instance['show_seconds'] ) {
			$string .= $this->render_countdown_item( $instance, 'label_seconds', 'elementor-countdown-seconds' );
		}

		return $string;
	}

	private $_default_countdown_labels;

	private function init_default_countdown_labels() {
		$this->_default_countdown_labels = [
			'label_months' => esc_html__( 'Months', 'elementor-pro' ),
			'label_weeks' => esc_html__( 'Weeks', 'elementor-pro' ),
			'label_days' => esc_html__( 'Days', 'elementor-pro' ),
			'label_hours' => esc_html__( 'Hours', 'elementor-pro' ),
			'label_minutes' => esc_html__( 'Minutes', 'elementor-pro' ),
			'label_seconds' => esc_html__( 'Seconds', 'elementor-pro' ),
		];
	}

	public function get_default_countdown_labels() {
		if ( ! $this->_default_countdown_labels ) {
			$this->init_default_countdown_labels();
		}

		return $this->_default_countdown_labels;
	}

	private function render_countdown_item( $instance, $label, $part_class ) {
		$string = '<div class="elementor-countdown-item"><span class="elementor-countdown-digits ' . $part_class . '"></span>';

		if ( $instance['show_labels'] ) {
			$default_labels = $this->get_default_countdown_labels();
			$label = ( $instance['custom_labels'] ) ? $instance[ $label ] : $default_labels[ $label ];
			$string .= ' <span class="elementor-countdown-label">' . $label . '</span>';
		}

		$string .= '</div>';

		return $string;
	}

	private function get_evergreen_interval( $instance ) {
		$hours = empty( $instance['evergreen_counter_hours'] ) ? 0 : ( $instance['evergreen_counter_hours'] * HOUR_IN_SECONDS );
		$minutes = empty( $instance['evergreen_counter_minutes'] ) ? 0 : ( $instance['evergreen_counter_minutes'] * MINUTE_IN_SECONDS );
		$evergreen_interval = $hours + $minutes;

		return $evergreen_interval;
	}

	private function get_actions( $settings ) {
		if ( empty( $settings['expire_actions'] ) || ! is_array( $settings['expire_actions'] ) ) {
			return false;
		}

		$actions = [];

		foreach ( $settings['expire_actions'] as $action ) {
			$action_to_run = [ 'type' => $action ];
			if ( 'redirect' === $action ) {
				if ( empty( $settings['expire_redirect_url']['url'] ) ) {
					continue;
				}
				$action_to_run['redirect_url'] = $settings['expire_redirect_url']['url'];
			}
			$actions[] = $action_to_run;
		}

		return $actions;
	}

	protected function render() {
		$instance = $this->get_settings_for_display();
		$due_date = $instance['due_date'];
		$string = $this->get_strftime( $instance );

		if ( 'evergreen' === $instance['countdown_type'] ) {
			$this->add_render_attribute( 'div', 'data-evergreen-interval', $this->get_evergreen_interval( $instance ) );
		} else {
			// Handle timezone ( we need to set GMT time )
			$gmt = get_gmt_from_date( $due_date . ':00' );
			$due_date = strtotime( $gmt );
		}

		$actions = false;

		if ( ! Plugin::elementor()->editor->is_edit_mode() ) {
			$actions = $this->get_actions( $instance );
		}

		if ( $actions ) {
			$this->add_render_attribute( 'div', 'data-expire-actions', wp_json_encode( $actions ) );
		}

		$this->add_render_attribute( 'div', [
			'class' => 'elementor-countdown-wrapper',
			'data-date' => $due_date,
		] );

		?>
		<div <?php $this->print_render_attribute_string( 'div' ); ?>>
			<?php echo wp_kses_post( $string ); ?>
		</div>
		<?php
		if ( $actions && is_array( $actions ) ) {
			foreach ( $actions as $action ) {
				if ( 'message' !== $action['type'] ) {
					continue;
				} ?>
				<div class="elementor-countdown-expire--message">
					<?php // PHPCS - the main text of a widget should not be escaped.
					echo $instance['message_after_expire']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
				</div>
				<?php
			}
		}
	}
}
modules/countdown/module.php000064400000000476150755004310012241 0ustar00<?php
namespace ElementorPro\Modules\Countdown;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function get_widgets() {
		return [
			'Countdown',
		];
	}

	public function get_name() {
		return 'countdown';
	}
}
modules/compatibility-tag/module.php000064400000001512150755004310013633 0ustar00<?php
namespace ElementorPro\Modules\CompatibilityTag;

use ElementorPro\Base\Module_Base;
use Elementor\Modules\CompatibilityTag\Base_Module as Compatibility_Tag_Base_Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Module extends Module_Base {
	const MODULE_NAME = 'compatibility-tag-pro';

	/**
	 * Checks if elementor core compatibility module is exists before
	 * activate this module
	 *
	 * @return bool
	 */
	public static function is_active() {
		return class_exists( Compatibility_Tag_Base_Module::class );
	}

	/**
	 * @return string
	 */
	public function get_name() {
		return self::MODULE_NAME;
	}

	/**
	 * Module constructor.
	 */
	public function __construct() {
		parent::__construct();

		$this->add_component( 'compatibility-tag-pro-handler', new Compatibility_Tag_Component() );
	}
}
modules/compatibility-tag/compatibility-tag-component.php000064400000001623150755004310017773 0ustar00<?php
namespace ElementorPro\Modules\CompatibilityTag;

use Elementor\Modules\CompatibilityTag\Base_Module as Compatibility_Tag_Base_Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Compatibility_Tag_Component extends Compatibility_Tag_Base_Module {
	/**
	 * This is the header used by extensions to show testing.
	 *
	 * @var string
	 */
	const PLUGIN_VERSION_TESTED_HEADER = 'Elementor Pro tested up to';

	/**
	 * @return string
	 */
	protected function get_plugin_header() {
		return self::PLUGIN_VERSION_TESTED_HEADER;
	}

	/**
	 * @return string
	 */
	protected function get_plugin_label() {
		return esc_html__( 'Elementor Pro', 'elementor-pro' );
	}

	/**
	 * @return string
	 */
	protected function get_plugin_name() {
		return ELEMENTOR_PRO_PLUGIN_BASE;
	}

	/**
	 * @return string
	 */
	protected function get_plugin_version() {
		return ELEMENTOR_PRO_VERSION;
	}
}
modules/library/widgets/template.php000064400000003715150755004310013660 0ustar00<?php
namespace ElementorPro\Modules\Library\Widgets;

use Elementor\Core\Base\Document;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Modules\QueryControl\Module as QueryControlModule;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Template extends Base_Widget {

	public function get_name() {
		return 'template';
	}

	public function get_title() {
		return esc_html__( 'Template', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-document-file';
	}

	public function get_keywords() {
		return [ 'elementor', 'template', 'library', 'block', 'page' ];
	}

	public function is_reload_preview_required() {
		return false;
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_template',
			[
				'label' => esc_html__( 'Template', 'elementor-pro' ),
			]
		);

		$document_types = Plugin::elementor()->documents->get_document_types( [
			'show_in_library' => true,
		] );

		$this->add_control(
			'template_id',
			[
				'label' => esc_html__( 'Choose Template', 'elementor-pro' ),
				'type' => QueryControlModule::QUERY_CONTROL_ID,
				'label_block' => true,
				'autocomplete' => [
					'object' => QueryControlModule::QUERY_OBJECT_LIBRARY_TEMPLATE,
					'query' => [
						'meta_query' => [
							[
								'key' => Document::TYPE_META_KEY,
								'value' => array_keys( $document_types ),
								'compare' => 'IN',
							],
						],
					],
				],
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		$template_id = $this->get_settings( 'template_id' );

		if ( 'publish' !== get_post_status( $template_id ) ) {
			return;
		}

		?>
		<div class="elementor-template">
			<?php
				// PHPCS - should not be escaped.
				echo Plugin::elementor()->frontend->get_builder_content_for_display( $template_id ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			?>
		</div>
		<?php
	}

	public function render_plain_content() {}
}
modules/library/module.php000064400000011021150755004310011651 0ustar00<?php
namespace ElementorPro\Modules\Library;

use Elementor\Core\Base\Document;
use Elementor\TemplateLibrary\Source_Local;
use ElementorPro\Base\Module_Base;
use ElementorPro\Modules\Library\Classes\Shortcode;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function get_widgets() {
		return [
			'Template',
		];
	}

	public function __construct() {
		parent::__construct();

		$this->add_filters();
		$this->add_actions();

		new Shortcode();
	}

	public function get_name() {
		return 'library';
	}

	public function register_wp_widgets() {
		register_widget( 'ElementorPro\Modules\Library\WP_Widgets\Elementor_Library' );
	}

	public function localize_settings( $settings ) {
		$settings = array_replace_recursive( $settings, [
			'i18n' => [
				'home_url' => home_url(),
				'edit_template' => esc_html__( 'Edit Template', 'elementor-pro' ),
			],
		] );

		return $settings;
	}

	public function add_to_results_for_library_widget_templates( $val, $post, $request ) {
		$document = Plugin::elementor()->documents->get( $post->ID );
		if ( $document ) {
			return true;
		}

		return false;
	}

	public function format_post_title_for_library_widget_templates( $post_title, $post_id, $request ) {
		$document = Plugin::elementor()->documents->get( $post_id );
		return $post_title . ' (' . $document->get_post_type_title() . ')';
	}

	public function add_actions() {
		add_action( 'widgets_init', [ $this, 'register_wp_widgets' ] );
	}

	/**
	 * @deprecated 2.6.0 No longer used by internal code. See Autocomplete documentation in Query-Control Module.
	 * @param array $results
	 * @param array $data
	 *
	 * @return array
	 */
	public function get_autocomplete_for_library_widget_templates( array $results, array $data ) {
		$document_types = Plugin::elementor()->documents->get_document_types( [
			'show_in_library' => true,
		] );

		$query_params = [
			's' => $data['q'],
			'post_type' => Source_Local::CPT,
			'posts_per_page' => -1,
			'orderby' => 'meta_value',
			'order' => 'ASC',
			'meta_query' => [
				[
					'key' => Document::TYPE_META_KEY,
					'value' => array_keys( $document_types ),
					'compare' => 'IN',
				],
			],
		];

		$query = new \WP_Query( $query_params );

		$results = [];

		foreach ( $query->posts as $post ) {
			$document = Plugin::elementor()->documents->get( $post->ID );
			if ( $document ) {
				$results[] = [
					'id' => $post->ID,
					'text' => esc_html( $post->post_title ) . ' (' . $document->get_post_type_title() . ')',
				];
			}
		}

		return $results;
	}

	/**
	 * @deprecated 2.6.0 No longer used by internal code. See Autocomplete documentation in Query-Control Module.
	 * @param $results
	 * @param $request
	 *
	 * @return mixed
	 */
	public function get_value_title_for_library_widget_templates( $results, $request ) {
		$ids = (array) $request['id'];

		$query = new \WP_Query(
			[
				'post_type' => Source_Local::CPT,
				'post__in' => $ids,
				'posts_per_page' => -1,
			]
		);

		foreach ( $query->posts as $post ) {
			$document = Plugin::elementor()->documents->get( $post->ID );
			if ( $document ) {
				$results[ $post->ID ] = esc_html( $post->post_title ) . ' (' . $document->get_post_type_title() . ')';
			}
		}

		return $results;
	}

	public function add_filters() {
		add_filter( 'elementor_pro/editor/localize_settings', [ $this, 'localize_settings' ] );
		add_filter( 'elementor_pro/admin/localize_settings', [ $this, 'localize_settings' ] ); // For WordPress Widgets and Customizer
		add_filter( 'elementor/widgets/black_list', function( $black_list ) {
			$black_list[] = 'ElementorPro\Modules\Library\WP_Widgets\Elementor_Library';

			return $black_list;
		} );
	}

	public static function get_templates() {
		return Plugin::elementor()->templates_manager->get_source( 'local' )->get_items();
	}

	public static function empty_templates_message() {
		return '<div id="elementor-widget-template-empty-templates">
				<div class="elementor-widget-template-empty-templates-icon"><i class="eicon-nerd" aria-hidden="true"></i></div>
				<div class="elementor-widget-template-empty-templates-title">' . esc_html__( 'You Haven’t Saved Templates Yet.', 'elementor-pro' ) . '</div>
				<div class="elementor-widget-template-empty-templates-footer">' . esc_html__( 'Want to learn more about Elementor library?', 'elementor-pro' ) . ' <a class="elementor-widget-template-empty-templates-footer-url" href="https://go.elementor.com/docs-library/" target="_blank">' . esc_html__( 'Click Here', 'elementor-pro' ) . '</a>
				</div>
				</div>';
	}
}
modules/library/wp-widgets/elementor-library.php000064400000012005150755004310016115 0ustar00<?php
namespace ElementorPro\Modules\Library\WP_Widgets;

use Elementor\Core\Base\Document;
use ElementorPro\Modules\Library\Module;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Elementor_Library extends \WP_Widget {

	private $sidebar_id;

	public function __construct() {
		parent::__construct(
			'elementor-library',
			esc_html__( 'Elementor Library', 'elementor-pro' ),
			[
				'description' => esc_html__( 'Embed your saved elements.', 'elementor-pro' ),
			]
		);
	}

	/**
	 * @param array $args
	 * @param array $instance
	 */
	public function widget( $args, $instance ) {
		// PHPCS - Theme arg
		echo $args['before_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped

		if ( ! empty( $instance['title'] ) ) {
			/** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
			$title = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
			// PHPCS - Theme arg
			echo $args['before_title'] . esc_html( $title ) . $args['after_title']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		}

		if ( ! empty( $instance['template_id'] ) && 'publish' === get_post_status( $instance['template_id'] ) ) {
			$this->sidebar_id = $args['id'];

			add_filter( 'elementor/frontend/builder_content_data', [ $this, 'filter_content_data' ] );

			// PHPCS - the main content
			echo Plugin::elementor()->frontend->get_builder_content_for_display( $instance['template_id'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped

			remove_filter( 'elementor/frontend/builder_content_data', [ $this, 'filter_content_data' ] );

			unset( $this->sidebar_id );
		}

		// PHPCS - Theme arg
		echo $args['after_widget']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}

	/**
	 * Avoid nesting a sidebar within a template that will appear in the sidebar itself
	 *
	 * @param array $data
	 *
	 * @return mixed
	 */
	public function filter_content_data( $data ) {
		if ( ! empty( $data ) ) {
			$data = Plugin::elementor()->db->iterate_data( $data, function( $element ) {
				if ( 'widget' === $element['elType'] && 'sidebar' === $element['widgetType'] && $this->sidebar_id === $element['settings']['sidebar'] ) {
					$element['settings']['sidebar'] = null;
				}

				return $element;
			} );
		}

		return $data;
	}

	/**
	 * @param array $instance
	 *
	 * @return void
	 */
	public function form( $instance ) {
		$default = [
			'title' => '',
			'template_id' => '',
		];

		$instance = array_merge( $default, $instance );

		$templates = Module::get_templates();

		if ( ! $templates ) {
			// PHPCS - the method empty_templates_message is safe.
			echo Module::empty_templates_message(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped

			return;
		}
		?>
		<p>
			<label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_attr_e( 'Title', 'elementor-pro' ); ?>:</label>
			<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $instance['title'] ); ?>">
		</p>

		<p>
			<label for="<?php echo esc_attr( $this->get_field_id( 'template_id' ) ); ?>"><?php esc_attr_e( 'Choose Template', 'elementor-pro' ); ?>:</label>
			<select class="widefat elementor-widget-template-select" id="<?php echo esc_attr( $this->get_field_id( 'template_id' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'template_id' ) ); ?>">
				<option value="">— <?php echo esc_html__( 'Select', 'elementor-pro' ); ?> —</option>
				<?php
				foreach ( $templates as $template ) :
					?>
					<option
						value="<?php echo esc_html( $template['template_id'] ); ?>"
						<?php selected( $template['template_id'], $instance['template_id'] ); ?>
						data-type="<?php echo esc_attr( $template['type'] ); ?>"
					>
						<?php echo esc_html( $template['title'] ); ?> (<?php echo esc_html( $template['type'] ); ?>)
					</option>
				<?php endforeach; ?>
			</select>
			<?php
			$style = ' style="display:none"';

			$template_type = get_post_meta( $instance['template_id'], Document::TYPE_META_KEY, true );

			// 'widget' is editable only from an Elementor page
			if ( 'page' === $template_type ) {
				$style = '';
			}
			?>
			<a
				target="_blank"
				class="elementor-edit-template"<?php echo $style; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
				href="<?php echo esc_url( add_query_arg( 'elementor', '', get_permalink( $instance['template_id'] ) ) ); ?>"
			>
				<i class="eicon-pencil"></i> <?php echo esc_html__( 'Edit Template', 'elementor-pro' ); ?>
			</a>
		</p>
		<?php
	}

	/**
	 *
	 * @param array $new_instance
	 * @param array $old_instance
	 *
	 * @return array
	 */
	public function update( $new_instance, $old_instance ) {
		$instance = [];
		$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';
		$instance['template_id'] = $new_instance['template_id'];

		return $instance;
	}
}
modules/library/classes/shortcode.php000064400000002763150755004310014030 0ustar00<?php
namespace ElementorPro\Modules\Library\Classes;

use Elementor\TemplateLibrary\Source_Local;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Shortcode {

	const SHORTCODE = 'elementor-template';

	public function __construct() {
		$this->add_actions();
	}

	public function admin_columns_headers( $defaults ) {
		$defaults['shortcode'] = esc_html__( 'Shortcode', 'elementor-pro' );

		return $defaults;
	}

	public function admin_columns_content( $column_name, $post_id ) {
		if ( 'shortcode' === $column_name ) {
			printf(
				'<input class="elementor-shortcode-input" type="text" readonly onfocus="this.select()" value="%s" />',
				// %s = shortcode, %d = post_id
				esc_attr( sprintf( '[%s id="%d"]', self::SHORTCODE, $post_id ) )
			);
		}
	}

	public function shortcode( $attributes = [] ) {
		if ( empty( $attributes['id'] ) ) {
			return '';
		}

		$include_css = false;

		if ( isset( $attributes['css'] ) && 'false' !== $attributes['css'] ) {
			$include_css = (bool) $attributes['css'];
		}

		return Plugin::elementor()->frontend->get_builder_content_for_display( $attributes['id'], $include_css );
	}

	private function add_actions() {
		if ( is_admin() ) {
			add_action( 'manage_' . Source_Local::CPT . '_posts_columns', [ $this, 'admin_columns_headers' ] );
			add_action( 'manage_' . Source_Local::CPT . '_posts_custom_column', [ $this, 'admin_columns_content' ], 10, 2 );
		}

		add_shortcode( self::SHORTCODE, [ $this, 'shortcode' ] );
	}
}
modules/pricing/module.php000064400000000515150755004310011646 0ustar00<?php
namespace ElementorPro\Modules\Pricing;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function get_name() {
		return 'pricing';
	}

	public function get_widgets() {
		return [
			'Price_List',
			'Price_Table',
		];
	}
}
modules/pricing/widgets/price-list.php000064400000041276150755004310014113 0ustar00<?php
namespace ElementorPro\Modules\Pricing\Widgets;

use Elementor\Utils;
use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Image_Size;
use Elementor\Group_Control_Typography;
use Elementor\Repeater;
use ElementorPro\Base\Base_Widget;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Price_List extends Base_Widget {

	public function get_name() {
		return 'price-list';
	}

	public function get_title() {
		return esc_html__( 'Price List', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-price-list';
	}

	public function get_keywords() {
		return [ 'pricing', 'list', 'product', 'image', 'menu' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_list',
			[
				'label' => esc_html__( 'List', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$repeater = new Repeater();

		$repeater->add_control(
			'price',
			[
				'label' => esc_html__( 'Price', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$repeater->add_control(
			'title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => '',
				'label_block' => 'true',
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$repeater->add_control(
			'item_description',
			[
				'label' => esc_html__( 'Description', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'default' => '',
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$repeater->add_control(
			'image',
			[
				'label' => esc_html__( 'Image', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
				'default' => [],
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$repeater->add_control(
			'link',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'default' => [ 'url' => '#' ],
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_control(
			'price_list',
			[
				'label' => esc_html__( 'List Items', 'elementor-pro' ),
				'type' => Controls_Manager::REPEATER,
				'fields' => $repeater->get_controls(),
				'default' => [
					[
						'title' => esc_html__( 'First item on the list', 'elementor-pro' ),
						'item_description' => esc_html__( 'Lorem ipsum dolor sit amet consectetur adipiscing elit dolor', 'elementor-pro' ),
						'price' => '$20',
						'link' => [ 'url' => '#' ],
					],
					[
						'title' => esc_html__( 'Second item on the list', 'elementor-pro' ),
						'item_description' => esc_html__( 'Lorem ipsum dolor sit amet consectetur adipiscing elit dolor', 'elementor-pro' ),
						'price' => '$9',
						'link' => [ 'url' => '#' ],
					],
					[
						'title' => esc_html__( 'Third item on the list', 'elementor-pro' ),
						'item_description' => esc_html__( 'Lorem ipsum dolor sit amet consectetur adipiscing elit dolor', 'elementor-pro' ),
						'price' => '$32',
						'link' => [ 'url' => '#' ],
					],
				],
				'title_field' => '{{{ title }}}',
			]
		);
		$this->end_controls_section();

		$this->start_controls_section(
			'section_list_style',
			[
				'label' => esc_html__( 'List', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'heading__title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'heading_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_PRIMARY,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-list-header' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'heading_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-price-list-header',
			]
		);

		$this->add_control(
			'price_title',
			[
				'label' => __( 'Price', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'price_color',
			[
				'label' => __( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_PRIMARY,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-list-price' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'price_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'selector' => '{{WRAPPER}} .elementor-price-list-price',
			]
		);

		$this->add_control(
			'heading_item_description',
			[
				'label' => esc_html__( 'Description', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'description_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-list-description' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'description_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
				'selector' => '{{WRAPPER}} .elementor-price-list-description',
			]
		);

		$this->add_control(
			'heading_separator',
			[
				'label' => esc_html__( 'Separator', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'separator_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'solid' => esc_html__( 'Solid', 'elementor-pro' ),
					'dotted' => esc_html__( 'Dotted', 'elementor-pro' ),
					'dashed' => esc_html__( 'Dashed', 'elementor-pro' ),
					'double' => esc_html__( 'Double', 'elementor-pro' ),
					'none' => esc_html__( 'None', 'elementor-pro' ),
				],
				'default' => 'dotted',
				'render_type' => 'template',
				'selectors' => [
					'{{WRAPPER}} .elementor-price-list-separator' => 'border-bottom-style: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'separator_weight',
			[
				'label' => esc_html__( 'Weight', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 10,
					],
				],
				'condition' => [
					'separator_style!' => 'none',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-list-separator' => 'border-bottom-width: {{SIZE}}{{UNIT}}',
				],
				'default' => [
					'size' => 2,
				],
			]
		);

		$this->add_control(
			'separator_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-list-separator' => 'border-bottom-color: {{VALUE}};',
				],
				'condition' => [
					'separator_style!' => 'none',
				],
			]
		);

		$this->add_control(
			'separator_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 40,
					],
				],
				'condition' => [
					'separator_style!' => 'none',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-list-separator' => 'margin-left: {{SIZE}}{{UNIT}}; margin-right: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_image_style',
			[
				'label' => esc_html__( 'Image', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'show_label' => false,
			]
		);

		$this->add_group_control(
			Group_Control_Image_Size::get_type(),
			[
				'name' => 'image_size',
				'default' => 'thumbnail',
			]
		);

		$this->add_control(
			'border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-list-image img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'image_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 50,
					],
				],
				'selectors' => [
					'body.rtl {{WRAPPER}} .elementor-price-list-image' => 'padding-left: calc({{SIZE}}{{UNIT}}/2);',
					'body.rtl {{WRAPPER}} .elementor-price-list-image + .elementor-price-list-text' => 'padding-right: calc({{SIZE}}{{UNIT}}/2);',
					'body:not(.rtl) {{WRAPPER}} .elementor-price-list-image' => 'padding-right: calc({{SIZE}}{{UNIT}}/2);',
					'body:not(.rtl) {{WRAPPER}} .elementor-price-list-image + .elementor-price-list-text' => 'padding-left: calc({{SIZE}}{{UNIT}}/2);',
				],
				'default' => [
					'size' => 20,
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_item_style',
			[
				'label' => esc_html__( 'Item', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'show_label' => false,
			]
		);

		$this->add_control(
			'row_gap',
			[
				'label' => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 50,
					],
					'em' => [
						'max' => 5,
						'step' => 0.1,
					],
				],
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-list li:not(:last-child)' => 'margin-bottom: {{SIZE}}{{UNIT}};',
				],
				'default' => [
					'size' => 20,
				],
			]
		);

		$this->add_control(
			'vertical_align',
			[
				'label' => esc_html__( 'Vertical Align', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'top' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-v-align-middle',
					],
					'bottom' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-list-item' => 'align-items: {{VALUE}};',
				],
				'selectors_dictionary' => [
					'top' => 'flex-start',
					'bottom' => 'flex-end',
				],
				'default' => 'top',
			]
		);

		$this->end_controls_section();
	}

	private function render_image( $item, $instance ) {
		$image_id = $item['image']['id'];
		$image_size = $instance['image_size_size'];
		if ( 'custom' === $image_size ) {
			$image_src = Group_Control_Image_Size::get_attachment_image_src( $image_id, 'image_size', $instance );
		} else {
			$image_src = wp_get_attachment_image_src( $image_id, $image_size );
			$image_src = $image_src[0];
		}

		return sprintf( '<img src="%s" alt="%s" />', $image_src, $item['title'] );
	}

	private function render_item_header( $item ) {
		$url = $item['link']['url'];

		$item_id = $item['_id'];

		if ( $url ) {
			$unique_link_id = 'item-link-' . $item_id;

			$this->add_render_attribute( $unique_link_id, 'class', 'elementor-price-list-item' );

			$this->add_link_attributes( $unique_link_id, $item['link'] );

			return '<li><a ' . $this->get_render_attribute_string( $unique_link_id ) . '>';
		} else {
			return '<li class="elementor-price-list-item">';
		}
	}

	private function render_item_footer( $item ) {
		if ( $item['link']['url'] ) {
			return '</a></li>';
		} else {
			return '</li>';
		}
	}

	protected function render() {
		$settings = $this->get_settings_for_display(); ?>

		<ul class="elementor-price-list">

		<?php foreach ( $settings['price_list'] as $index => $item ) : ?>
			<?php if ( ! empty( $item['title'] ) || ! empty( $item['price'] ) || ! empty( $item['item_description'] ) ) :
				$title_repeater_setting_key = $this->get_repeater_setting_key( 'title', 'price_list', $index );
				$description_repeater_setting_key = $this->get_repeater_setting_key( 'item_description', 'price_list', $index );
				$this->add_inline_editing_attributes( $title_repeater_setting_key );
				$this->add_inline_editing_attributes( $description_repeater_setting_key );
				$this->add_render_attribute( $title_repeater_setting_key, 'class', 'elementor-price-list-title' );
				$this->add_render_attribute( $description_repeater_setting_key, 'class', 'elementor-price-list-description' );
				?>
				<?php
					// PHPCS - the method render_item_header is safe.
					echo $this->render_item_header( $item ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				?>
				<?php if ( ! empty( $item['image']['url'] ) ) : ?>
					<div class="elementor-price-list-image">
					<?php
						// PHPCS - the method render_image is safe.
						echo $this->render_image( $item, $settings ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
					?>
				</div>
				<?php endif; ?>

				<div class="elementor-price-list-text">
				<?php if ( ! empty( $item['title'] ) || ! empty( $item['price'] ) ) : ?>
					<div class="elementor-price-list-header">
					<?php if ( ! empty( $item['title'] ) ) : ?>
						<span <?php $this->print_render_attribute_string( $title_repeater_setting_key ); ?>>
							<?php $this->print_unescaped_setting( 'title', 'price_list', $index ); ?>
						</span>
					<?php endif; ?>
						<?php if ( 'none' != $settings['separator_style'] ) : ?>
							<span class="elementor-price-list-separator"></span>
						<?php endif; ?>
						<?php if ( ! empty( $item['price'] ) ) : ?>
							<span class="elementor-price-list-price"><?php $this->print_unescaped_setting( 'price', 'price_list', $index ); ?></span>
						<?php endif; ?>
				</div>
				<?php endif; ?>
					<?php if ( ! empty( $item['item_description'] ) ) : ?>
						<p <?php $this->print_render_attribute_string( $description_repeater_setting_key ); ?>>
							<?php $this->print_unescaped_setting( 'item_description', 'price_list', $index ); ?>
						</p>
					<?php endif; ?>
			</div>
				<?php
					// PHPCS - the method render_item_footer is safe.
					echo $this->render_item_footer( $item ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				?>
			<?php endif; ?>
		<?php endforeach; ?>

		</ul>

		<?php
	}

	/**
	 * Render Price List widget output in the editor.
	 *
	 * Written as a Backbone JavaScript template and used to generate the live preview.
	 *
	 * @since 2.9.0
	 * @access protected
	 */
	protected function content_template() {
		?>
		<ul class="elementor-price-list">
			<#
				for ( var i in settings.price_list ) {
					var item = settings.price_list[i],
						item_open_wrap = '<li class="elementor-price-list-item">',
						item_close_wrap = '</li>';
					if ( item.link.url ) {
						item_open_wrap = '<li><a href="' + item.link.url + '" class="elementor-price-list-item">';
						item_close_wrap = '</a></li>';
					}

					if ( ! _.isEmpty( item.title ) || ! _.isEmpty( item.price ) || ! _.isEmpty( item.description ) || ! _.isEmpty( item.image ) ) { #>

					{{{ item_open_wrap }}}
					<# if ( item.image && item.image.id ) {

						var image = {
							id: item.image.id,
							url: item.image.url,
							size: settings.image_size_size,
							dimension: settings.image_size_custom_dimension,
							model: view.getEditModel()
						};

						var image_url = elementor.imagesManager.getImageUrl( image );

						if ( image_url ) { #>
							<div class="elementor-price-list-image"><img src="{{ image_url }}" alt="{{ item.title }}"></div>
						<# } #>

					<# } #>


					<# if ( ! _.isEmpty( item.title ) || ! _.isEmpty( item.price ) || ! _.isEmpty( item.item_description ) ) { #>
						<div class="elementor-price-list-text">

							<# if ( ! _.isEmpty( item.title ) || ! _.isEmpty( item.price ) ) { #>
								<div class="elementor-price-list-header">

								<# if ( ! _.isEmpty( item.title ) ) { #>
									<span class="elementor-price-list-title">{{{ item.title }}}</span>
								<# } #>

								<# if ( 'none' != settings.separator_style ) { #>
									<span class="elementor-price-list-separator"></span>
								<# } #>

								<# if ( ! _.isEmpty( item.price ) ) { #>
									<span class="elementor-price-list-price">{{{ item.price }}}</span>
								<# } #>

								</div>
							<# } #>

							<# if ( ! _.isEmpty( item.item_description ) ) { #>
								<p class="elementor-price-list-description">{{{ item.item_description }}}</p>
							<# } #>

						</div>
					<# } #>

					{{{ item_close_wrap }}}

					<# } #>
			 <# } #>
		</ul>
		<?php
	}

	public function get_group_name() {
		return 'pricing';
	}
}
modules/pricing/widgets/price-table.php000064400000141470150755004310014224 0ustar00<?php
namespace ElementorPro\Modules\Pricing\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Background;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Typography;
use Elementor\Icons_Manager;
use Elementor\Repeater;
use Elementor\Utils;
use ElementorPro\Base\Base_Widget;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Price_Table extends Base_Widget {

	public function get_name() {
		return 'price-table';
	}

	public function get_title() {
		return esc_html__( 'Price Table', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-price-table';
	}

	public function get_keywords() {
		return [ 'pricing', 'table', 'product', 'image', 'plan', 'button' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_header',
			[
				'label' => esc_html__( 'Header', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'heading',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Enter your title', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_control(
			'sub_heading',
			[
				'label' => esc_html__( 'Description', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Enter your description', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_control(
			'heading_tag',
			[
				'label' => esc_html__( 'Title HTML Tag', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'h2' => 'H2',
					'h3' => 'H3',
					'h4' => 'H4',
					'h5' => 'H5',
					'h6' => 'H6',
				],
				'default' => 'h3',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_pricing',
			[
				'label' => esc_html__( 'Pricing', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'currency_symbol',
			[
				'label' => esc_html__( 'Currency Symbol', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'dollar' => '&#36; ' . _x( 'Dollar', 'Currency', 'elementor-pro' ),
					'euro' => '&#128; ' . _x( 'Euro', 'Currency', 'elementor-pro' ),
					'baht' => '&#3647; ' . _x( 'Baht', 'Currency', 'elementor-pro' ),
					'franc' => '&#8355; ' . _x( 'Franc', 'Currency', 'elementor-pro' ),
					'guilder' => '&fnof; ' . _x( 'Guilder', 'Currency', 'elementor-pro' ),
					'krona' => 'kr ' . _x( 'Krona', 'Currency', 'elementor-pro' ),
					'lira' => '&#8356; ' . _x( 'Lira', 'Currency', 'elementor-pro' ),
					'peseta' => '&#8359 ' . _x( 'Peseta', 'Currency', 'elementor-pro' ),
					'peso' => '&#8369; ' . _x( 'Peso', 'Currency', 'elementor-pro' ),
					'pound' => '&#163; ' . _x( 'Pound Sterling', 'Currency', 'elementor-pro' ),
					'real' => 'R$ ' . _x( 'Real', 'Currency', 'elementor-pro' ),
					'ruble' => '&#8381; ' . _x( 'Ruble', 'Currency', 'elementor-pro' ),
					'rupee' => '&#8360; ' . _x( 'Rupee', 'Currency', 'elementor-pro' ),
					'indian_rupee' => '&#8377; ' . _x( 'Rupee (Indian)', 'Currency', 'elementor-pro' ),
					'shekel' => '&#8362; ' . _x( 'Shekel', 'Currency', 'elementor-pro' ),
					'yen' => '&#165; ' . _x( 'Yen/Yuan', 'Currency', 'elementor-pro' ),
					'won' => '&#8361; ' . _x( 'Won', 'Currency', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'default' => 'dollar',
			]
		);

		$this->add_control(
			'currency_symbol_custom',
			[
				'label' => esc_html__( 'Custom Symbol', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'condition' => [
					'currency_symbol' => 'custom',
				],
			]
		);

		$this->add_control(
			'price',
			[
				'label' => esc_html__( 'Price', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => '39.99',
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_control(
			'currency_format',
			[
				'label' => esc_html__( 'Currency Format', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => '1,234.56 (Default)',
					',' => '1.234,56',
				],
			]
		);

		$this->add_control(
			'sale',
			[
				'label' => esc_html__( 'Sale', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'default' => '',
			]
		);

		$this->add_control(
			'original_price',
			[
				'label' => esc_html__( 'Original Price', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => '59',
				'condition' => [
					'sale' => 'yes',
				],
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_control(
			'period',
			[
				'label' => esc_html__( 'Period', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Monthly', 'elementor-pro' ),
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_features',
			[
				'label' => esc_html__( 'Features', 'elementor-pro' ),
			]
		);

		$repeater = new Repeater();

		$repeater->add_control(
			'item_text',
			[
				'label' => esc_html__( 'Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'List Item', 'elementor-pro' ),
			]
		);

		$default_icon = [
			'value' => 'far fa-check-circle',
			'library' => 'fa-regular',
		];

		$repeater->add_control(
			'selected_item_icon',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'fa4compatibility' => 'item_icon',
				'default' => $default_icon,
			]
		);

		$repeater->add_control(
			'item_icon_color',
			[
				'label' => esc_html__( 'Icon Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}} i' => 'color: {{VALUE}}',
					'{{WRAPPER}} {{CURRENT_ITEM}} svg' => 'fill: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'features_list',
			[
				'type' => Controls_Manager::REPEATER,
				'fields' => $repeater->get_controls(),
				'default' => [
					[
						'item_text' => esc_html__( 'List Item #1', 'elementor-pro' ),
						'selected_item_icon' => $default_icon,
					],
					[
						'item_text' => esc_html__( 'List Item #2', 'elementor-pro' ),
						'selected_item_icon' => $default_icon,
					],
					[
						'item_text' => esc_html__( 'List Item #3', 'elementor-pro' ),
						'selected_item_icon' => $default_icon,
					],
				],
				'title_field' => '{{{ item_text }}}',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_footer',
			[
				'label' => esc_html__( 'Footer', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_text',
			[
				'label' => esc_html__( 'Button Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Click Here', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_control(
			'link',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
				'default' => [
					'url' => '#',
				],
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_control(
			'footer_additional_info',
			[
				'label' => esc_html__( 'Additional Info', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'default' => esc_html__( 'This is text element', 'elementor-pro' ),
				'rows' => 3,
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_ribbon',
			[
				'label' => esc_html__( 'Ribbon', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'show_ribbon',
			[
				'label' => esc_html__( 'Show', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'ribbon_title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Popular', 'elementor-pro' ),
				'condition' => [
					'show_ribbon' => 'yes',
				],
				'dynamic' => [
					'active' => true,
				],
			]
		);

		$this->add_control(
			'ribbon_horizontal_position',
			[
				'label' => esc_html__( 'Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'condition' => [
					'show_ribbon' => 'yes',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_header_style',
			[
				'label' => esc_html__( 'Header', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'show_label' => false,
			]
		);

		$this->add_control(
			'header_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--e-price-table-header-background-color: {{VALUE}}',
				],
			]
		);

		$this->add_responsive_control(
			'header_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%', 'em' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__header' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'heading_heading_style',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'heading_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__heading' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'heading_typography',
				'selector' => '{{WRAPPER}} .elementor-price-table__heading',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
			]
		);

		$this->add_control(
			'heading_sub_heading_style',
			[
				'label' => esc_html__( 'Sub Title', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'sub_heading_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__subheading' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'sub_heading_typography',
				'selector' => '{{WRAPPER}} .elementor-price-table__subheading',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_SECONDARY,
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_pricing_element_style',
			[
				'label' => esc_html__( 'Pricing', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'show_label' => false,
			]
		);

		$this->add_control(
			'pricing_element_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__price' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_responsive_control(
			'pricing_element_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%', 'em' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__price' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'price_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__currency, {{WRAPPER}} .elementor-price-table__integer-part, {{WRAPPER}} .elementor-price-table__fractional-part' => 'color: {{VALUE}}',
				],
				'separator' => 'before',
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'price_typography',
				// Targeting also the .elementor-price-table class in order to get a higher specificity from the inline CSS.
				'selector' => '{{WRAPPER}} .elementor-price-table .elementor-price-table__price',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
			]
		);

		$this->add_control(
			'heading_currency_style',
			[
				'label' => esc_html__( 'Currency Symbol', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'currency_symbol!' => '',
				],
			]
		);

		$this->add_control(
			'currency_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__price > .elementor-price-table__currency' => 'font-size: calc({{SIZE}}em/100)',
				],
				'condition' => [
					'currency_symbol!' => '',
				],
			]
		);

		$this->add_control(
			'currency_position',
			[
				'label' => esc_html__( 'Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'default' => 'before',
				'options' => [
					'before' => [
						'title' => esc_html__( 'Before', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'after' => [
						'title' => esc_html__( 'After', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
			]
		);

		$this->add_control(
			'currency_vertical_position',
			[
				'label' => esc_html__( 'Vertical Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'top' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'middle' => [
						'title' => esc_html__( 'Middle', 'elementor-pro' ),
						'icon' => 'eicon-v-align-middle',
					],
					'bottom' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'default' => 'top',
				'selectors_dictionary' => [
					'top' => 'flex-start',
					'middle' => 'center',
					'bottom' => 'flex-end',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__currency' => 'align-self: {{VALUE}}',
				],
				'condition' => [
					'currency_symbol!' => '',
				],
			]
		);

		$this->add_control(
			'fractional_part_style',
			[
				'label' => esc_html__( 'Fractional Part', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'fractional-part_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__fractional-part' => 'font-size: calc({{SIZE}}em/100)',
				],
			]
		);

		$this->add_control(
			'fractional_part_vertical_position',
			[
				'label' => esc_html__( 'Vertical Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'top' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'middle' => [
						'title' => esc_html__( 'Middle', 'elementor-pro' ),
						'icon' => 'eicon-v-align-middle',
					],
					'bottom' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'default' => 'top',
				'selectors_dictionary' => [
					'top' => 'flex-start',
					'middle' => 'center',
					'bottom' => 'flex-end',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__after-price' => 'justify-content: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'heading_original_price_style',
			[
				'label' => esc_html__( 'Original Price', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'sale' => 'yes',
					'original_price!' => '',
				],
			]
		);

		$this->add_control(
			'original_price_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__original-price' => 'color: {{VALUE}}',
				],
				'condition' => [
					'sale' => 'yes',
					'original_price!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'original_price_typography',
				'selector' => '{{WRAPPER}} .elementor-price-table__original-price',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
				'condition' => [
					'sale' => 'yes',
					'original_price!' => '',
				],
			]
		);

		$this->add_control(
			'original_price_vertical_position',
			[
				'label' => esc_html__( 'Vertical Position', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'top' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'middle' => [
						'title' => esc_html__( 'Middle', 'elementor-pro' ),
						'icon' => 'eicon-v-align-middle',
					],
					'bottom' => [
						'title' => esc_html__( 'Bottom', 'elementor-pro' ),
						'icon' => 'eicon-v-align-bottom',
					],
				],
				'selectors_dictionary' => [
					'top' => 'flex-start',
					'middle' => 'center',
					'bottom' => 'flex-end',
				],
				'default' => 'bottom',
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__original-price' => 'align-self: {{VALUE}}',
				],
				'condition' => [
					'sale' => 'yes',
					'original_price!' => '',
				],
			]
		);

		$this->add_control(
			'heading_period_style',
			[
				'label' => esc_html__( 'Period', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'period!' => '',
				],
			]
		);

		$this->add_control(
			'period_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__period' => 'color: {{VALUE}}',
				],
				'condition' => [
					'period!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'period_typography',
				'selector' => '{{WRAPPER}} .elementor-price-table__period',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_SECONDARY,
				],
				'condition' => [
					'period!' => '',
				],
			]
		);

		$this->add_control(
			'period_position',
			[
				'label' => esc_html__( 'Position', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'label_block' => false,
				'options' => [
					'below' => esc_html__( 'Below', 'elementor-pro' ),
					'beside' => esc_html__( 'Beside', 'elementor-pro' ),
				],
				'default' => 'below',
				'condition' => [
					'period!' => '',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_features_list_style',
			[
				'label' => esc_html__( 'Features', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'show_label' => false,
			]
		);

		$this->add_control(
			'features_list_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'separator' => 'before',
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__features-list' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_responsive_control(
			'features_list_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%', 'em' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__features-list' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'features_list_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'separator' => 'before',
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__features-list' => '--e-price-table-features-list-color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'features_list_typography',
				'selector' => '{{WRAPPER}} .elementor-price-table__features-list li',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->add_control(
			'features_list_alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__features-list' => 'text-align: {{VALUE}}',
				],
			]
		);

		$this->add_responsive_control(
			'item_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'%' => [
						'min' => 25,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__feature-inner' => 'margin-left: calc((100% - {{SIZE}}%)/2); margin-right: calc((100% - {{SIZE}}%)/2)',
				],
			]
		);

		$this->add_control(
			'list_divider',
			[
				'label' => esc_html__( 'Divider', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'divider_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'solid' => esc_html__( 'Solid', 'elementor-pro' ),
					'double' => esc_html__( 'Double', 'elementor-pro' ),
					'dotted' => esc_html__( 'Dotted', 'elementor-pro' ),
					'dashed' => esc_html__( 'Dashed', 'elementor-pro' ),
				],
				'default' => 'solid',
				'condition' => [
					'list_divider' => 'yes',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__features-list li:before' => 'border-top-style: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'divider_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#ddd',
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'condition' => [
					'list_divider' => 'yes',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__features-list li:before' => 'border-top-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'divider_weight',
			[
				'label' => esc_html__( 'Weight', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 2,
					'unit' => 'px',
				],
				'range' => [
					'px' => [
						'min' => 1,
						'max' => 10,
					],
				],
				'condition' => [
					'list_divider' => 'yes',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__features-list li:before' => 'border-top-width: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'divider_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'condition' => [
					'list_divider' => 'yes',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__features-list li:before' => 'margin-left: calc((100% - {{SIZE}}%)/2); margin-right: calc((100% - {{SIZE}}%)/2)',
				],
			]
		);

		$this->add_control(
			'divider_gap',
			[
				'label' => esc_html__( 'Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 15,
					'unit' => 'px',
				],
				'range' => [
					'px' => [
						'min' => 1,
						'max' => 50,
					],
				],
				'condition' => [
					'list_divider' => 'yes',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__features-list li:before' => 'margin-top: {{SIZE}}{{UNIT}}; margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_footer_style',
			[
				'label' => esc_html__( 'Footer', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'show_label' => false,
			]
		);

		$this->add_control(
			'footer_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__footer' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_responsive_control(
			'footer_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%', 'em' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__footer' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'heading_footer_button',
			[
				'label' => esc_html__( 'Button', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'button_text!' => '',
				],
			]
		);

		$this->add_control(
			'button_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'md',
				'options' => [
					'xs' => esc_html__( 'Extra Small', 'elementor-pro' ),
					'sm' => esc_html__( 'Small', 'elementor-pro' ),
					'md' => esc_html__( 'Medium', 'elementor-pro' ),
					'lg' => esc_html__( 'Large', 'elementor-pro' ),
					'xl' => esc_html__( 'Extra Large', 'elementor-pro' ),
				],
				'condition' => [
					'button_text!' => '',
				],
			]
		);

		$this->start_controls_tabs( 'tabs_button_style' );

		$this->start_controls_tab(
			'tab_button_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
				'condition' => [
					'button_text!' => '',
				],
			]
		);

		$this->add_control(
			'button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__button' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'button_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
				'selector' => '{{WRAPPER}} .elementor-price-table__button',
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'button_background',
				'types' => [ 'classic', 'gradient' ],
				'exclude' => [ 'image' ],
				'selector' => '{{WRAPPER}} .elementor-price-table__button',
				'fields_options' => [
					'background' => [
						'default' => 'classic',
					],
					'color' => [
						'global' => [
							'default' => Global_Colors::COLOR_ACCENT,
						],
					],
				],
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(), [
				'name' => 'button_border',
				'selector' => '{{WRAPPER}} .elementor-price-table__button',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__button' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'button_text_padding',
			[
				'label' => esc_html__( 'Text Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_button_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
				'condition' => [
					'button_text!' => '',
				],
			]
		);

		$this->add_control(
			'button_hover_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__button:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'button_background_hover',
				'types' => [ 'classic', 'gradient' ],
				'exclude' => [ 'image' ],
				'selector' => '{{WRAPPER}} .elementor-price-table__button:hover',
				'fields_options' => [
					'background' => [
						'default' => 'classic',
					],
				],
			]
		);

		$this->add_control(
			'button_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__button:hover' => 'border-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'button_hover_animation',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::HOVER_ANIMATION,
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'heading_additional_info',
			[
				'label' => esc_html__( 'Additional Info', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'footer_additional_info!' => '',
				],
			]
		);

		$this->add_control(
			'additional_info_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__additional_info' => 'color: {{VALUE}}',
				],
				'condition' => [
					'footer_additional_info!' => '',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'additional_info_typography',
				'selector' => '{{WRAPPER}} .elementor-price-table__additional_info',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
				'condition' => [
					'footer_additional_info!' => '',
				],
			]
		);

		$this->add_control(
			'additional_info_margin',
			[
				'label' => esc_html__( 'Margin', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%', 'em' ],
				'default' => [
					'top' => 15,
					'right' => 30,
					'bottom' => 0,
					'left' => 30,
					'unit' => 'px',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__additional_info' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}}',
				],
				'condition' => [
					'footer_additional_info!' => '',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_ribbon_style',
			[
				'label' => esc_html__( 'Ribbon', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'show_label' => false,
				'condition' => [
					'show_ribbon' => 'yes',
				],
			]
		);

		$this->add_control(
			'ribbon_bg_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__ribbon-inner' => 'background-color: {{VALUE}}',
				],
			]
		);

		$ribbon_distance_transform = is_rtl() ? 'translateY(-50%) translateX({{SIZE}}{{UNIT}}) rotate(-45deg)' : 'translateY(-50%) translateX(-50%) translateX({{SIZE}}{{UNIT}}) rotate(-45deg)';

		$this->add_responsive_control(
			'ribbon_distance',
			[
				'label' => esc_html__( 'Distance', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__ribbon-inner' => 'margin-top: {{SIZE}}{{UNIT}}; transform: ' . $ribbon_distance_transform,
				],
			]
		);

		$this->add_control(
			'ribbon_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#ffffff',
				'separator' => 'before',
				'selectors' => [
					'{{WRAPPER}} .elementor-price-table__ribbon-inner' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'ribbon_typography',
				'selector' => '{{WRAPPER}} .elementor-price-table__ribbon-inner',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'box_shadow',
				'selector' => '{{WRAPPER}} .elementor-price-table__ribbon-inner',
			]
		);

		$this->end_controls_section();
	}

	private function render_currency_symbol( $symbol, $location ) {
		$currency_position = $this->get_settings( 'currency_position' );
		$location_setting = ! empty( $currency_position ) ? $currency_position : 'before';
		if ( ! empty( $symbol ) && $location === $location_setting ) {
			echo '<span class="elementor-price-table__currency">' . esc_html( $symbol ) . '</span>';
		}
	}

	private function get_currency_symbol( $symbol_name ) {
		$symbols = [
			'dollar' => '&#36;',
			'euro' => '&#128;',
			'franc' => '&#8355;',
			'pound' => '&#163;',
			'ruble' => '&#8381;',
			'shekel' => '&#8362;',
			'baht' => '&#3647;',
			'yen' => '&#165;',
			'won' => '&#8361;',
			'guilder' => '&fnof;',
			'peso' => '&#8369;',
			'peseta' => '&#8359',
			'lira' => '&#8356;',
			'rupee' => '&#8360;',
			'indian_rupee' => '&#8377;',
			'real' => 'R$',
			'krona' => 'kr',
		];

		return isset( $symbols[ $symbol_name ] ) ? $symbols[ $symbol_name ] : '';
	}

	protected function render() {
		$settings = $this->get_settings_for_display();
		$symbol = '';

		if ( ! empty( $settings['currency_symbol'] ) ) {
			if ( 'custom' !== $settings['currency_symbol'] ) {
				$symbol = $this->get_currency_symbol( $settings['currency_symbol'] );
			} else {
				$symbol = $settings['currency_symbol_custom'];
			}
		}
		$currency_format = empty( $settings['currency_format'] ) ? '.' : $settings['currency_format'];
		$price = explode( $currency_format, $settings['price'] );
		$intpart = $price[0];
		$fraction = '';
		if ( 2 === count( $price ) ) {
			$fraction = $price[1];
		}

		$this->add_render_attribute( 'button_text', 'class', [
			'elementor-price-table__button',
			'elementor-button',
			'elementor-size-' . $settings['button_size'],
		] );

		if ( ! empty( $settings['link']['url'] ) ) {
			$this->add_link_attributes( 'button_text', $settings['link'] );
		}

		if ( ! empty( $settings['button_hover_animation'] ) ) {
			$this->add_render_attribute( 'button_text', 'class', 'elementor-animation-' . $settings['button_hover_animation'] );
		}

		$this->add_render_attribute( 'heading', 'class', 'elementor-price-table__heading' );
		$this->add_render_attribute( 'sub_heading', 'class', 'elementor-price-table__subheading' );
		$this->add_render_attribute( 'period', 'class', [ 'elementor-price-table__period', 'elementor-typo-excluded' ] );
		$this->add_render_attribute( 'footer_additional_info', 'class', 'elementor-price-table__additional_info' );
		$this->add_render_attribute( 'ribbon_title', 'class', 'elementor-price-table__ribbon-inner' );

		$this->add_inline_editing_attributes( 'heading', 'none' );
		$this->add_inline_editing_attributes( 'sub_heading', 'none' );
		$this->add_inline_editing_attributes( 'period', 'none' );
		$this->add_inline_editing_attributes( 'footer_additional_info' );
		$this->add_inline_editing_attributes( 'button_text' );
		$this->add_inline_editing_attributes( 'ribbon_title' );

		$period_position = $settings['period_position'];
		$period_element = '<span ' . $this->get_render_attribute_string( 'period' ) . '>' . $settings['period'] . '</span>';
		$heading_tag = Utils::validate_html_tag( $settings['heading_tag'] );

		$migration_allowed = Icons_Manager::is_migration_allowed();
		?>

		<div class="elementor-price-table">
			<?php if ( $settings['heading'] || $settings['sub_heading'] ) : ?>
				<div class="elementor-price-table__header">
					<?php if ( ! empty( $settings['heading'] ) ) : ?>
						<<?php Utils::print_validated_html_tag( $heading_tag ); ?> <?php $this->print_render_attribute_string( 'heading' ); ?>>
						<?php $this->print_unescaped_setting( 'heading' ); ?>
						</<?php Utils::print_validated_html_tag( $heading_tag ); ?>>
					<?php endif; ?>

					<?php if ( ! empty( $settings['sub_heading'] ) ) : ?>
						<span <?php $this->print_render_attribute_string( 'sub_heading' ); ?>>
							<?php $this->print_unescaped_setting( 'sub_heading' ); ?>
						</span>
					<?php endif; ?>
				</div>
			<?php endif; ?>

			<div class="elementor-price-table__price">
				<?php if ( 'yes' === $settings['sale'] && ! empty( $settings['original_price'] ) ) : ?>
					<div class="elementor-price-table__original-price elementor-typo-excluded">
						<?php
						$this->render_currency_symbol( $symbol, 'before' );
						$this->print_unescaped_setting( 'original_price' );
						$this->render_currency_symbol( $symbol, 'after' );
						?>
					</div>
				<?php endif; ?>
				<?php $this->render_currency_symbol( $symbol, 'before' ); ?>
				<?php if ( ! empty( $intpart ) || 0 <= $intpart ) : ?>
					<span class="elementor-price-table__integer-part">
						<?php
							// PHPCS - the main text of a widget should not be escaped.
							echo $intpart; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
						?>
					</span>
				<?php endif; ?>

				<?php if ( '' !== $fraction || ( ! empty( $settings['period'] ) && 'beside' === $period_position ) ) : ?>
					<div class="elementor-price-table__after-price">
						<span class="elementor-price-table__fractional-part">
							<?php
								// PHPCS - the main text of a widget should not be escaped.
								echo $fraction; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
							?>
						</span>

						<?php if ( ! empty( $settings['period'] ) && 'beside' === $period_position ) : ?>
							<?php
								// PHPCS - already escaped before
								echo $period_element; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
							?>
						<?php endif; ?>
					</div>
				<?php endif; ?>

				<?php $this->render_currency_symbol( $symbol, 'after' ); ?>

				<?php if ( ! empty( $settings['period'] ) && 'below' === $period_position ) : ?>
					<?php
						// PHPCS - already escaped before
						echo $period_element; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
					?>
				<?php endif; ?>
			</div>

			<?php if ( ! empty( $settings['features_list'] ) ) : ?>
				<ul class="elementor-price-table__features-list">
					<?php
					foreach ( $settings['features_list'] as $index => $item ) :
						$repeater_setting_key = $this->get_repeater_setting_key( 'item_text', 'features_list', $index );
						$this->add_inline_editing_attributes( $repeater_setting_key );

						$migrated = isset( $item['__fa4_migrated']['selected_item_icon'] );
						// add old default
						if ( ! isset( $item['item_icon'] ) && ! $migration_allowed ) {
							$item['item_icon'] = 'fa fa-check-circle';
						}
						$is_new = ! isset( $item['item_icon'] ) && $migration_allowed;
						?>
						<li class="elementor-repeater-item-<?php echo esc_attr( $item['_id'] ); ?>">
							<div class="elementor-price-table__feature-inner">
								<?php if ( ! empty( $item['item_icon'] ) || ! empty( $item['selected_item_icon'] ) ) :
									if ( $is_new || $migrated ) :
										Icons_Manager::render_icon( $item['selected_item_icon'], [ 'aria-hidden' => 'true' ] );
									else : ?>
										<i class="<?php echo esc_attr( $item['item_icon'] ); ?>" aria-hidden="true"></i>
										<?php
									endif;
								endif; ?>
								<?php if ( ! empty( $item['item_text'] ) ) : ?>
									<span <?php $this->print_render_attribute_string( $repeater_setting_key ); ?>>
										<?php $this->print_unescaped_setting( 'item_text', 'features_list', $index ); ?>
									</span>
									<?php
								else :
									echo '&nbsp;';
								endif;
								?>
							</div>
						</li>
					<?php endforeach; ?>
				</ul>
			<?php endif; ?>

			<?php if ( ! empty( $settings['button_text'] ) || ! empty( $settings['footer_additional_info'] ) ) : ?>
				<div class="elementor-price-table__footer">
					<?php if ( ! empty( $settings['button_text'] ) ) : ?>
						<a <?php $this->print_render_attribute_string( 'button_text' ); ?>>
							<?php $this->print_unescaped_setting( 'button_text' ); ?>
						</a>
					<?php endif; ?>

					<?php if ( ! empty( $settings['footer_additional_info'] ) ) : ?>
						<div <?php $this->print_render_attribute_string( 'footer_additional_info' ); ?>>
							<?php $this->print_unescaped_setting( 'footer_additional_info' ); ?>
						</div>
					<?php endif; ?>
				</div>
			<?php endif; ?>
		</div>

		<?php
		if ( 'yes' === $settings['show_ribbon'] && ! empty( $settings['ribbon_title'] ) ) :
			$this->add_render_attribute( 'ribbon-wrapper', 'class', 'elementor-price-table__ribbon' );

			if ( ! empty( $settings['ribbon_horizontal_position'] ) ) :
				$this->add_render_attribute( 'ribbon-wrapper', 'class', 'elementor-ribbon-' . $settings['ribbon_horizontal_position'] );
			endif;

			?>
			<div <?php $this->print_render_attribute_string( 'ribbon-wrapper' ); ?>>
				<div <?php $this->print_render_attribute_string( 'ribbon_title' ); ?>>
					<?php $this->print_unescaped_setting( 'ribbon_title' ); ?>
				</div>
			</div>
			<?php
		endif;
	}

	/**
	 * Render Price Table widget output in the editor.
	 *
	 * Written as a Backbone JavaScript template and used to generate the live preview.
	 *
	 * @since 2.9.0
	 * @access protected
	 */
	protected function content_template() {
		?>
		<#
			var symbols = {
				dollar: '&#36;',
				euro: '&#128;',
				franc: '&#8355;',
				pound: '&#163;',
				ruble: '&#8381;',
				shekel: '&#8362;',
				baht: '&#3647;',
				yen: '&#165;',
				won: '&#8361;',
				guilder: '&fnof;',
				peso: '&#8369;',
				peseta: '&#8359;',
				lira: '&#8356;',
				rupee: '&#8360;',
				indian_rupee: '&#8377;',
				real: 'R$',
				krona: 'kr'
			};

			var symbol = '',
				iconsHTML = {};

			if ( settings.currency_symbol ) {
				if ( 'custom' !== settings.currency_symbol ) {
					symbol = symbols[ settings.currency_symbol ] || '';
				} else {
					symbol = settings.currency_symbol_custom;
				}
			}

			var buttonClasses = 'elementor-price-table__button elementor-button elementor-size-' + settings.button_size;

			if ( settings.button_hover_animation ) {
				buttonClasses += ' elementor-animation-' + settings.button_hover_animation;
			}

		view.addRenderAttribute( 'heading', 'class', 'elementor-price-table__heading' );
		view.addRenderAttribute( 'sub_heading', 'class', 'elementor-price-table__subheading' );
		view.addRenderAttribute( 'period', 'class', ['elementor-price-table__period', 'elementor-typo-excluded'] );
		view.addRenderAttribute( 'footer_additional_info', 'class', 'elementor-price-table__additional_info'  );
		view.addRenderAttribute( 'button_text', 'class', buttonClasses  );
		view.addRenderAttribute( 'ribbon_title', 'class', 'elementor-price-table__ribbon-inner'  );

		view.addInlineEditingAttributes( 'heading', 'none' );
		view.addInlineEditingAttributes( 'sub_heading', 'none' );
		view.addInlineEditingAttributes( 'period', 'none' );
		view.addInlineEditingAttributes( 'footer_additional_info' );
		view.addInlineEditingAttributes( 'button_text' );
		view.addInlineEditingAttributes( 'ribbon_title' );

		var currencyFormat = settings.currency_format || '.',
			price = settings.price.split( currencyFormat ),
			intpart = price[0],
			fraction = price[1],

			periodElement = '<span ' + view.getRenderAttributeString( "period" ) + '>' + settings.period + '</span>';

		#>
		<div class="elementor-price-table">
			<# if ( settings.heading || settings.sub_heading ) { #>
				<div class="elementor-price-table__header">
					<# if ( settings.heading ) { #>
						<# var headingTag = elementorPro.validateHTMLTag( settings.heading_tag ) #>
						<{{ headingTag }} {{{ view.getRenderAttributeString( 'heading' ) }}}>{{{ settings.heading }}}</{{ headingTag }}>
					<# } #>
					<# if ( settings.sub_heading ) { #>
						<span {{{ view.getRenderAttributeString( 'sub_heading' ) }}}>{{{ settings.sub_heading }}}</span>
					<# } #>
				</div>
			<# } #>

			<div class="elementor-price-table__price">
				<# if ( settings.sale && settings.original_price ) { #>
					<div class="elementor-price-table__original-price elementor-typo-excluded">
						<# if ( ! _.isEmpty( symbol ) && ( 'before' == settings.currency_position || _.isEmpty( settings.currency_position ) ) ) { #>
							<span class="elementor-price-table__currency">{{{ symbol }}}</span>{{{ settings.original_price }}}
						<# } #>
						<#
						/* The duplicate usage of the original price setting in the "if blocks" is to avoid whitespace between the number and the symbol. */
						if ( _.isEmpty( symbol ) ) {
						#>
							{{{ settings.original_price }}}
						<# } #>
						<# if ( ! _.isEmpty( symbol ) && 'after' == settings.currency_position ) { #>
						{{{ settings.original_price }}}<span class="elementor-price-table__currency">{{{ symbol }}}</span>
						<# } #>
					</div>
				<# } #>

				<# if ( ! _.isEmpty( symbol ) && ( 'before' == settings.currency_position || _.isEmpty( settings.currency_position ) ) ) { #>
					<span class="elementor-price-table__currency elementor-currency--before">{{{ symbol }}}</span>
				<# } #>
				<# if ( intpart ) { #>
					<span class="elementor-price-table__integer-part">{{{ intpart }}}</span>
				<# } #>
				<div class="elementor-price-table__after-price">
					<# if ( fraction ) { #>
						<span class="elementor-price-table__fractional-part">{{{ fraction }}}</span>
					<# } #>
					<# if ( settings.period && 'beside' === settings.period_position ) { #>
						{{{ periodElement }}}
					<# } #>
				</div>

				<# if ( ! _.isEmpty( symbol ) && 'after' == settings.currency_position ) { #>
				<span class="elementor-price-table__currency elementor-currency--after">{{{ symbol }}}</span>
				<# } #>

				<# if ( settings.period && 'below' === settings.period_position ) { #>
					{{{ periodElement }}}
				<# } #>
			</div>

			<# if ( settings.features_list ) { #>
				<ul class="elementor-price-table__features-list">
				<# _.each( settings.features_list, function( item, index ) {

					var featureKey = view.getRepeaterSettingKey( 'item_text', 'features_list', index ),
						migrated = elementor.helpers.isIconMigrated( item, 'selected_item_icon' );

					view.addInlineEditingAttributes( featureKey ); #>

						<li class="elementor-repeater-item-{{ item._id }}">
							<div class="elementor-price-table__feature-inner">
								<# if ( item.item_icon  || item.selected_item_icon ) {
									iconsHTML[ index ] = elementor.helpers.renderIcon( view, item.selected_item_icon, { 'aria-hidden': 'true' }, 'i', 'object' );
									if ( ( ! item.item_icon || migrated ) && iconsHTML[ index ] && iconsHTML[ index ].rendered ) { #>
										{{{ iconsHTML[ index ].value }}}
									<# } else { #>
										<i class="{{ item.item_icon }}" aria-hidden="true"></i>
									<# }
								} #>
								<# if ( ! _.isEmpty( item.item_text.trim() ) ) { #>
									<span {{{ view.getRenderAttributeString( featureKey ) }}}>{{{ item.item_text }}}</span>
								<# } else { #>
									&nbsp;
								<# } #>
							</div>
						</li>
					<# } ); #>
				</ul>
			<# } #>

			<# if ( settings.button_text || settings.footer_additional_info ) { #>
				<div class="elementor-price-table__footer">
					<# if ( settings.button_text ) { #>
						<a href="#" {{{ view.getRenderAttributeString( 'button_text' ) }}}>{{{ settings.button_text }}}</a>
					<# } #>
					<# if ( settings.footer_additional_info ) { #>
						<p {{{ view.getRenderAttributeString( 'footer_additional_info' ) }}}>{{{ settings.footer_additional_info }}}</p>
					<# } #>
				</div>
			<# } #>
		</div>

		<# if ( 'yes' === settings.show_ribbon && settings.ribbon_title ) {
			var ribbonClasses = 'elementor-price-table__ribbon';
			if ( settings.ribbon_horizontal_position ) {
				ribbonClasses += ' elementor-ribbon-' + settings.ribbon_horizontal_position;
			} #>
			<div class="{{ ribbonClasses }}">
				<div {{{ view.getRenderAttributeString( 'ribbon_title' ) }}}>{{{ settings.ribbon_title }}}</div>
			</div>
		<# } #>
		<?php
	}

	public function get_group_name() {
		return 'pricing';
	}
}
modules/theme-elements/widgets/post-info.php000064400000067250150755004310015237 0ustar00<?php
namespace ElementorPro\Modules\ThemeElements\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;
use Elementor\Icons_Manager;
use Elementor\Repeater;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Info extends Base {

	public function get_name() {
		return 'post-info';
	}

	public function get_title() {
		return esc_html__( 'Post Info', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-post-info';
	}

	public function get_categories() {
		return [ 'theme-elements-single' ];
	}

	public function get_keywords() {
		return [ 'post', 'info', 'date', 'time', 'author', 'taxonomy', 'comments', 'terms', 'avatar' ];
	}

	public function get_style_depends() {
		if ( Icons_Manager::is_migration_allowed() ) {
			return [
				'elementor-icons-fa-regular',
				'elementor-icons-fa-solid',
			];
		}

		return [];
	}

	public function get_inline_css_depends() {
		return [
			[
				'name' => 'icon-list',
				'is_core_dependency' => true,
			],
		];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_icon',
			[
				'label' => esc_html__( 'Meta Data', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'view',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'default' => 'inline',
				'options' => [
					'traditional' => [
						'title' => esc_html__( 'Default', 'elementor-pro' ),
						'icon' => 'eicon-editor-list-ul',
					],
					'inline' => [
						'title' => esc_html__( 'Inline', 'elementor-pro' ),
						'icon' => 'eicon-ellipsis-h',
					],
				],
				'render_type' => 'template',
				'classes' => 'elementor-control-start-end',
			]
		);

		$repeater = new Repeater();

		$repeater->add_control(
			'type',
			[
				'label' => esc_html__( 'Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'date',
				'options' => [
					'author' => esc_html__( 'Author', 'elementor-pro' ),
					'date' => esc_html__( 'Date', 'elementor-pro' ),
					'time' => esc_html__( 'Time', 'elementor-pro' ),
					'comments' => esc_html__( 'Comments', 'elementor-pro' ),
					'terms' => esc_html__( 'Terms', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
			]
		);

		$repeater->add_control(
			'date_format',
			[
				'label' => esc_html__( 'Date Format', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'default',
				'options' => [
					'default' => 'Default',
					'0' => _x( 'March 6, 2018 (F j, Y)', 'Date Format', 'elementor-pro' ),
					'1' => '2018-03-06 (Y-m-d)',
					'2' => '03/06/2018 (m/d/Y)',
					'3' => '06/03/2018 (d/m/Y)',
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'condition' => [
					'type' => 'date',
				],
			]
		);

		$repeater->add_control(
			'custom_date_format',
			[
				'label' => esc_html__( 'Custom Date Format', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => 'F j, Y',
				'condition' => [
					'type' => 'date',
					'date_format' => 'custom',
				],
				'description' => sprintf(
					/* translators: %s: Allowed data letters (see: http://php.net/manual/en/function.date.php). */
					__( 'Use the letters: %s', 'elementor-pro' ),
					'l D d j S F m M n Y y'
				),
			]
		);

		$repeater->add_control(
			'time_format',
			[
				'label' => esc_html__( 'Time Format', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'default',
				'options' => [
					'default' => 'Default',
					'0' => '3:31 pm (g:i a)',
					'1' => '3:31 PM (g:i A)',
					'2' => '15:31 (H:i)',
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'condition' => [
					'type' => 'time',
				],
			]
		);
		$repeater->add_control(
			'custom_time_format',
			[
				'label' => esc_html__( 'Custom Time Format', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => 'g:i a',
				'placeholder' => 'g:i a',
				'condition' => [
					'type' => 'time',
					'time_format' => 'custom',
				],
				'description' => sprintf(
					/* translators: %s: Allowed time letters (see: http://php.net/manual/en/function.time.php). */
					__( 'Use the letters: %s', 'elementor-pro' ),
					'g G H i a A'
				),
			]
		);

		$repeater->add_control(
			'taxonomy',
			[
				'label' => esc_html__( 'Taxonomy', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'label_block' => true,
				'default' => [],
				'options' => $this->get_taxonomies(),
				'condition' => [
					'type' => 'terms',
				],
			]
		);

		$repeater->add_control(
			'text_prefix',
			[
				'label' => esc_html__( 'Before', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'condition' => [
					'type!' => 'custom',
				],
			]
		);

		$repeater->add_control(
			'show_avatar',
			[
				'label' => esc_html__( 'Avatar', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'condition' => [
					'type' => 'author',
				],
			]
		);

		$repeater->add_responsive_control(
			'avatar_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} {{CURRENT_ITEM}} .elementor-icon-list-icon' => 'width: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'show_avatar' => 'yes',
				],
			]
		);

		$repeater->add_control(
			'comments_custom_strings',
			[
				'label' => esc_html__( 'Custom Format', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => false,
				'condition' => [
					'type' => 'comments',
				],
			]
		);

		$repeater->add_control(
			'string_no_comments',
			[
				'label' => esc_html__( 'No Comments', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => esc_html__( 'No Comments', 'elementor-pro' ),
				'condition' => [
					'comments_custom_strings' => 'yes',
					'type' => 'comments',
				],
			]
		);

		$repeater->add_control(
			'string_one_comment',
			[
				'label' => esc_html__( 'One Comment', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => esc_html__( 'One Comment', 'elementor-pro' ),
				'condition' => [
					'comments_custom_strings' => 'yes',
					'type' => 'comments',
				],
			]
		);

		$repeater->add_control(
			'string_comments',
			[
				'label' => esc_html__( 'Comments', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => esc_html__( '%s Comments', 'elementor-pro' ),
				'condition' => [
					'comments_custom_strings' => 'yes',
					'type' => 'comments',
				],
			]
		);

		$repeater->add_control(
			'custom_text',
			[
				'label' => esc_html__( 'Custom', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'label_block' => true,
				'condition' => [
					'type' => 'custom',
				],
			]
		);

		$repeater->add_control(
			'link',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'condition' => [
					'type!' => 'time',
				],
			]
		);

		$repeater->add_control(
			'custom_url',
			[
				'label' => esc_html__( 'Custom URL', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'dynamic' => [
					'active' => true,
				],
				'condition' => [
					'type' => 'custom',
				],
			]
		);

		$repeater->add_control(
			'show_icon',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'none' => esc_html__( 'None', 'elementor-pro' ),
					'default' => esc_html__( 'Default', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'default' => 'default',
				'condition' => [
					'show_avatar!' => 'yes',
				],
			]
		);

		$repeater->add_control(
			'selected_icon',
			[
				'label' => esc_html__( 'Choose Icon', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'fa4compatibility' => 'icon',
				'condition' => [
					'show_icon' => 'custom',
					'show_avatar!' => 'yes',
				],
			]
		);

		$this->add_control(
			'icon_list',
			[
				'label' => '',
				'type' => Controls_Manager::REPEATER,
				'fields' => $repeater->get_controls(),
				'default' => [
					[
						'type' => 'author',
						'selected_icon' => [
							'value' => 'far fa-user-circle',
							'library' => 'fa-regular',
						],
					],
					[
						'type' => 'date',
						'selected_icon' => [
							'value' => 'fas fa-calendar',
							'library' => 'fa-solid',
						],
					],
					[
						'type' => 'time',
						'selected_icon' => [
							'value' => 'far fa-clock',
							'library' => 'fa-regular',
						],
					],
					[
						'type' => 'comments',
						'selected_icon' => [
							'value' => 'far fa-comment-dots',
							'library' => 'fa-regular',
						],
					],
				],
				'title_field' => '{{{ elementor.helpers.renderIcon( this, selected_icon, {}, "i", "panel" ) || \'<i class="{{ icon }}" aria-hidden="true"></i>\' }}} <span style="text-transform: capitalize;">{{{ type }}}</span>',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_icon_list',
			[
				'label' => esc_html__( 'List', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'space_between',
			[
				'label' => esc_html__( 'Space Between', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 50,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-icon-list-items:not(.elementor-inline-items) .elementor-icon-list-item:not(:last-child)' => 'padding-bottom: calc({{SIZE}}{{UNIT}}/2)',
					'{{WRAPPER}} .elementor-icon-list-items:not(.elementor-inline-items) .elementor-icon-list-item:not(:first-child)' => 'margin-top: calc({{SIZE}}{{UNIT}}/2)',
					'{{WRAPPER}} .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item' => 'margin-right: calc({{SIZE}}{{UNIT}}/2); margin-left: calc({{SIZE}}{{UNIT}}/2)',
					'{{WRAPPER}} .elementor-icon-list-items.elementor-inline-items' => 'margin-right: calc(-{{SIZE}}{{UNIT}}/2); margin-left: calc(-{{SIZE}}{{UNIT}}/2)',
					'body.rtl {{WRAPPER}} .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after' => 'left: calc(-{{SIZE}}{{UNIT}}/2)',
					'body:not(.rtl) {{WRAPPER}} .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:after' => 'right: calc(-{{SIZE}}{{UNIT}}/2)',
				],
			]
		);

		$this->add_responsive_control(
			'icon_align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Start', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-h-align-center',
					],
					'right' => [
						'title' => esc_html__( 'End', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'prefix_class' => 'elementor%s-align-',
			]
		);

		$this->add_control(
			'divider',
			[
				'label' => esc_html__( 'Divider', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'selectors' => [
					'{{WRAPPER}} .elementor-icon-list-item:not(:last-child):after' => 'content: ""',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'divider_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'solid' => esc_html__( 'Solid', 'elementor-pro' ),
					'double' => esc_html__( 'Double', 'elementor-pro' ),
					'dotted' => esc_html__( 'Dotted', 'elementor-pro' ),
					'dashed' => esc_html__( 'Dashed', 'elementor-pro' ),
				],
				'default' => 'solid',
				'condition' => [
					'divider' => 'yes',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-icon-list-items:not(.elementor-inline-items) .elementor-icon-list-item:not(:last-child):after' => 'border-top-style: {{VALUE}};',
					'{{WRAPPER}} .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item:not(:last-child):after' => 'border-left-style: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'divider_weight',
			[
				'label' => esc_html__( 'Weight', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 1,
				],
				'range' => [
					'px' => [
						'min' => 1,
						'max' => 20,
					],
				],
				'condition' => [
					'divider' => 'yes',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-icon-list-items:not(.elementor-inline-items) .elementor-icon-list-item:not(:last-child):after' => 'border-top-width: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}} .elementor-inline-items .elementor-icon-list-item:not(:last-child):after' => 'border-left-width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'divider_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ '%', 'px' ],
				'default' => [
					'unit' => '%',
				],
				'range' => [
					'px' => [
						'min' => 1,
						'max' => 100,
					],
					'%' => [
						'min' => 1,
						'max' => 100,
					],
				],
				'condition' => [
					'divider' => 'yes',
					'view!' => 'inline',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-icon-list-item:not(:last-child):after' => 'width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'divider_height',
			[
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ '%', 'px' ],
				'default' => [
					'unit' => '%',
				],
				'range' => [
					'px' => [
						'min' => 1,
						'max' => 100,
					],
					'%' => [
						'min' => 1,
						'max' => 100,
					],
				],
				'condition' => [
					'divider' => 'yes',
					'view' => 'inline',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-icon-list-item:not(:last-child):after' => 'height: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'divider_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#ddd',
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'condition' => [
					'divider' => 'yes',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-icon-list-item:not(:last-child):after' => 'border-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_icon_style',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'icon_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-icon-list-icon i' => 'color: {{VALUE}};',
					'{{WRAPPER}} .elementor-icon-list-icon svg' => 'fill: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_PRIMARY,
				],
			]
		);

		$this->add_responsive_control(
			'icon_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 14,
				],
				'range' => [
					'px' => [
						'min' => 6,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-icon-list-icon' => 'width: {{SIZE}}{{UNIT}};',
					'{{WRAPPER}} .elementor-icon-list-icon i' => 'font-size: {{SIZE}}{{UNIT}};',
					'{{WRAPPER}} .elementor-icon-list-icon svg' => '--e-icon-list-icon-size: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_text_style',
			[
				'label' => esc_html__( 'Text', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'text_indent',
			[
				'label' => esc_html__( 'Indent', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 50,
					],
				],
				'selectors' => [
					'body:not(.rtl) {{WRAPPER}} .elementor-icon-list-text' => 'padding-left: {{SIZE}}{{UNIT}}',
					'body.rtl {{WRAPPER}} .elementor-icon-list-text' => 'padding-right: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-icon-list-text, {{WRAPPER}} .elementor-icon-list-text a' => 'color: {{VALUE}}',
				],
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'icon_typography',
				'selector' => '{{WRAPPER}} .elementor-icon-list-item',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->end_controls_section();
	}

	protected function get_taxonomies() {
		$taxonomies = get_taxonomies( [
			'show_in_nav_menus' => true,
		], 'objects' );

		$options = [
			'' => esc_html__( 'Choose', 'elementor-pro' ),
		];

		foreach ( $taxonomies as $taxonomy ) {
			$options[ $taxonomy->name ] = $taxonomy->label;
		}

		return $options;
	}

	protected function get_meta_data( $repeater_item ) {
		$item_data = [];

		switch ( $repeater_item['type'] ) {
			case 'author':
				$item_data['text'] = get_the_author_meta( 'display_name' );
				$item_data['icon'] = 'fa fa-user-circle-o'; // Default icon.
				$item_data['selected_icon'] = [
					'value' => 'far fa-user-circle',
					'library' => 'fa-regular',
				]; // Default icons.
				$item_data['itemprop'] = 'author';

				if ( 'yes' === $repeater_item['link'] ) {
					$item_data['url'] = [
						'url' => get_author_posts_url( get_the_author_meta( 'ID' ) ),
					];
				}

				if ( 'yes' === $repeater_item['show_avatar'] ) {
					$item_data['image'] = get_avatar_url( get_the_author_meta( 'ID' ), 96 );
				}

				break;

			case 'date':
				$custom_date_format = empty( $repeater_item['custom_date_format'] ) ? 'F j, Y' : $repeater_item['custom_date_format'];

				$format_options = [
					'default' => 'F j, Y',
					'0' => 'F j, Y',
					'1' => 'Y-m-d',
					'2' => 'm/d/Y',
					'3' => 'd/m/Y',
					'custom' => $custom_date_format,
				];

				$item_data['text'] = get_the_time( $format_options[ $repeater_item['date_format'] ] );
				$item_data['icon'] = 'fa fa-calendar'; // Default icon
				$item_data['selected_icon'] = [
					'value' => 'fas fa-calendar',
					'library' => 'fa-solid',
				]; // Default icons.
				$item_data['itemprop'] = 'datePublished';

				if ( 'yes' === $repeater_item['link'] ) {
					$item_data['url'] = [
						'url' => get_day_link( get_post_time( 'Y' ), get_post_time( 'm' ), get_post_time( 'j' ) ),
					];
				}
				break;

			case 'time':
				$custom_time_format = empty( $repeater_item['custom_time_format'] ) ? 'g:i a' : $repeater_item['custom_time_format'];

				$format_options = [
					'default' => 'g:i a',
					'0' => 'g:i a',
					'1' => 'g:i A',
					'2' => 'H:i',
					'custom' => $custom_time_format,
				];
				$item_data['text'] = get_the_time( $format_options[ $repeater_item['time_format'] ] );
				$item_data['icon'] = 'fa fa-clock-o'; // Default icon
				$item_data['selected_icon'] = [
					'value' => 'far fa-clock',
					'library' => 'fa-regular',
				]; // Default icons.
				break;

			case 'comments':
				if ( comments_open() ) {
					$default_strings = [
						'string_no_comments' => esc_html__( 'No Comments', 'elementor-pro' ),
						'string_one_comment' => esc_html__( 'One Comment', 'elementor-pro' ),
						'string_comments' => esc_html__( '%s Comments', 'elementor-pro' ),
					];

					if ( 'yes' === $repeater_item['comments_custom_strings'] ) {
						if ( ! empty( $repeater_item['string_no_comments'] ) ) {
							$default_strings['string_no_comments'] = $repeater_item['string_no_comments'];
						}

						if ( ! empty( $repeater_item['string_one_comment'] ) ) {
							$default_strings['string_one_comment'] = $repeater_item['string_one_comment'];
						}

						if ( ! empty( $repeater_item['string_comments'] ) ) {
							$default_strings['string_comments'] = $repeater_item['string_comments'];
						}
					}

					$num_comments = (int) get_comments_number(); // get_comments_number returns only a numeric value

					if ( 0 === $num_comments ) {
						$item_data['text'] = $default_strings['string_no_comments'];
					} else {
						$item_data['text'] = sprintf( _n( $default_strings['string_one_comment'], $default_strings['string_comments'], $num_comments, 'elementor-pro' ), $num_comments );
					}

					if ( 'yes' === $repeater_item['link'] ) {
						$item_data['url'] = [
							'url' => get_comments_link(),
						];
					}
					$item_data['icon'] = 'fa fa-commenting-o'; // Default icon
					$item_data['selected_icon'] = [
						'value' => 'far fa-comment-dots',
						'library' => 'fa-regular',
					]; // Default icons.
					$item_data['itemprop'] = 'commentCount';
				}
				break;

			case 'terms':
				$item_data['icon'] = 'fa fa-tags'; // Default icon
				$item_data['selected_icon'] = [
					'value' => 'fas fa-tags',
					'library' => 'fa-solid',
				]; // Default icons.
				$item_data['itemprop'] = 'about';

				$taxonomy = $repeater_item['taxonomy'];
				$terms = wp_get_post_terms( get_the_ID(), $taxonomy );
				foreach ( $terms as $term ) {
					$item_data['terms_list'][ $term->term_id ]['text'] = $term->name;
					if ( 'yes' === $repeater_item['link'] ) {
						$item_data['terms_list'][ $term->term_id ]['url'] = get_term_link( $term );
					}
				}
				break;

			case 'custom':
				$item_data['text'] = $repeater_item['custom_text'];
				$item_data['icon'] = 'fa fa-info-circle'; // Default icon.
				$item_data['selected_icon'] = [
					'value' => 'far fa-tags',
					'library' => 'fa-regular',
				]; // Default icons.

				if ( 'yes' === $repeater_item['link'] && ! empty( $repeater_item['custom_url'] ) ) {
					$item_data['url'] = $repeater_item['custom_url'];
				}

				break;
		}

		$item_data['type'] = $repeater_item['type'];

		if ( ! empty( $repeater_item['text_prefix'] ) ) {
			$item_data['text_prefix'] = esc_html( $repeater_item['text_prefix'] );
		}

		return $item_data;
	}

	protected function render_item( $repeater_item ) {
		$item_data = $this->get_meta_data( $repeater_item );
		$repeater_index = $repeater_item['_id'];

		if ( empty( $item_data['text'] ) && empty( $item_data['terms_list'] ) ) {
			return;
		}

		$has_link = false;
		$link_key = 'link_' . $repeater_index;
		$item_key = 'item_' . $repeater_index;

		$this->add_render_attribute( $item_key, 'class',
			[
				'elementor-icon-list-item',
				'elementor-repeater-item-' . $repeater_item['_id'],
			]
		);

		$active_settings = $this->get_active_settings();

		if ( 'inline' === $active_settings['view'] ) {
			$this->add_render_attribute( $item_key, 'class', 'elementor-inline-item' );
		}

		if ( ! empty( $item_data['url']['url'] ) ) {
			$has_link = true;

			$this->add_link_attributes( $link_key, $item_data['url'] );
		}

		if ( ! empty( $item_data['itemprop'] ) ) {
			$this->add_render_attribute( $item_key, 'itemprop', $item_data['itemprop'] );
		}

		?>
		<li <?php $this->print_render_attribute_string( $item_key ); ?>>
			<?php if ( $has_link ) : ?>
			<a <?php $this->print_render_attribute_string( $link_key ); ?>>
				<?php endif; ?>
				<?php $this->render_item_icon_or_image( $item_data, $repeater_item, $repeater_index ); ?>
				<?php $this->render_item_text( $item_data, $repeater_index ); ?>
				<?php if ( $has_link ) : ?>
			</a>
		<?php endif; ?>
		</li>
		<?php
	}

	protected function render_item_icon_or_image( $item_data, $repeater_item, $repeater_index ) {
		// Set icon according to user settings.
		$migration_allowed = Icons_Manager::is_migration_allowed();
		if ( ! $migration_allowed ) {
			if ( 'custom' === $repeater_item['show_icon'] && ! empty( $repeater_item['icon'] ) ) {
				$item_data['icon'] = $repeater_item['icon'];
			} elseif ( 'none' === $repeater_item['show_icon'] ) {
				$item_data['icon'] = '';
			}
		} else {
			if ( 'custom' === $repeater_item['show_icon'] && ! empty( $repeater_item['selected_icon'] ) ) {
				$item_data['selected_icon'] = $repeater_item['selected_icon'];
			} elseif ( 'none' === $repeater_item['show_icon'] ) {
				$item_data['selected_icon'] = [];
			}
		}

		if ( empty( $item_data['icon'] ) && empty( $item_data['selected_icon'] ) && empty( $item_data['image'] ) ) {
			return;
		}

		$migrated = isset( $repeater_item['__fa4_migrated']['selected_icon'] );
		$is_new = empty( $repeater_item['icon'] ) && $migration_allowed;
		$show_icon = 'none' !== $repeater_item['show_icon'];

		if ( ! empty( $item_data['image'] ) || $show_icon ) {
			?>
			<span class="elementor-icon-list-icon">
			<?php
			if ( ! empty( $item_data['image'] ) ) :
				$image_data = 'image_' . $repeater_index;
				$this->add_render_attribute( $image_data, 'src', $item_data['image'] );
				$this->add_render_attribute( $image_data, 'alt', $item_data['text'] );
				?>
					<img class="elementor-avatar" <?php $this->print_render_attribute_string( $image_data ); ?>>
				<?php elseif ( $show_icon ) : ?>
					<?php if ( $is_new || $migrated ) :
						Icons_Manager::render_icon( $item_data['selected_icon'], [ 'aria-hidden' => 'true' ] );
					else : ?>
						<i class="<?php echo esc_attr( $item_data['icon'] ); ?>" aria-hidden="true"></i>
					<?php endif; ?>
				<?php endif; ?>
			</span>
			<?php
		}
	}

	protected function render_item_text( $item_data, $repeater_index ) {
		$repeater_setting_key = $this->get_repeater_setting_key( 'text', 'icon_list', $repeater_index );

		$this->add_render_attribute( $repeater_setting_key, 'class', [ 'elementor-icon-list-text', 'elementor-post-info__item', 'elementor-post-info__item--type-' . $item_data['type'] ] );
		if ( ! empty( $item['terms_list'] ) ) {
			$this->add_render_attribute( $repeater_setting_key, 'class', 'elementor-terms-list' );
		}

		?>
		<span <?php $this->print_render_attribute_string( $repeater_setting_key ); ?>>
			<?php if ( ! empty( $item_data['text_prefix'] ) ) : ?>
				<span class="elementor-post-info__item-prefix"><?php echo esc_html( $item_data['text_prefix'] ); ?></span>
			<?php endif; ?>
			<?php
			if ( ! empty( $item_data['terms_list'] ) ) :
				$terms_list = [];
				$item_class = 'elementor-post-info__terms-list-item';
				?>
				<span class="elementor-post-info__terms-list">
				<?php
				foreach ( $item_data['terms_list'] as $term ) :
					if ( ! empty( $term['url'] ) ) :
						$terms_list[] = '<a href="' . esc_attr( $term['url'] ) . '" class="' . $item_class . '">' . esc_html( $term['text'] ) . '</a>';
					else :
						$terms_list[] = '<span class="' . $item_class . '">' . esc_html( $term['text'] ) . '</span>';
					endif;
				endforeach;

				// PHPCS - the variable $terms_list is safe.
				echo implode( ', ', $terms_list ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				?>
				</span>
			<?php else : ?>
				<?php
				echo wp_kses( $item_data['text'], [
					'a' => [
						'href' => [],
						'title' => [],
						'rel' => [],
					],
				] );
				?>
			<?php endif; ?>
		</span>
		<?php
	}

	protected function render() {
		$settings = $this->get_settings_for_display();

		ob_start();
		if ( ! empty( $settings['icon_list'] ) ) {
			foreach ( $settings['icon_list'] as $repeater_item ) {
				$this->render_item( $repeater_item );
			}
		}
		$items_html = ob_get_clean();

		if ( empty( $items_html ) ) {
			return;
		}

		if ( 'inline' === $settings['view'] ) {
			$this->add_render_attribute( 'icon_list', 'class', 'elementor-inline-items' );
		}

		$this->add_render_attribute( 'icon_list', 'class', [ 'elementor-icon-list-items', 'elementor-post-info' ] );
		?>
		<ul <?php $this->print_render_attribute_string( 'icon_list' ); ?>>
			<?php // PHPCS - the variable $terms_list is safe. ?>
			<?php echo $items_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
		</ul>
		<?php
	}
}
modules/theme-elements/widgets/base.php000064400000000507150755004310014223 0ustar00<?php
namespace ElementorPro\Modules\ThemeElements\Widgets;

use ElementorPro\Base\Base_Widget;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Base extends Base_Widget {

	public function get_categories() {
		return [ 'theme-elements' ];
	}

	public function render_plain_content() {}
}
modules/theme-elements/widgets/post-comments.php000064400000006222150755004310016121 0ustar00<?php
namespace ElementorPro\Modules\ThemeElements\Widgets;

use Elementor\Controls_Manager;
use ElementorPro\Modules\QueryControl\Module as QueryControlModule;
use ElementorPro\Modules\ThemeElements\Module;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Comments extends Base {

	public function get_name() {
		return 'post-comments';
	}

	public function get_title() {
		return esc_html__( 'Post Comments', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-comments';
	}

	public function get_categories() {
		return [ 'theme-elements-single' ];
	}

	public function get_keywords() {
		return [ 'comments', 'post', 'response', 'form' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_content',
			[
				'label' => esc_html__( 'Comments', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'_skin',
			[
				'type' => Controls_Manager::HIDDEN,
			]
		);

		$this->add_control(
			'skin_temp',
			[
				'label' => esc_html__( 'Skin', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'Theme Comments', 'elementor-pro' ),
				],
				'description' => esc_html__( 'The Theme Comments skin uses the currently active theme comments design and layout to display the comment form and comments.', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'source_type',
			[
				'label' => esc_html__( 'Source', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					Module::SOURCE_TYPE_CURRENT_POST => esc_html__( 'Current Post', 'elementor-pro' ),
					Module::SOURCE_TYPE_CUSTOM => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'default' => Module::SOURCE_TYPE_CURRENT_POST,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'source_custom',
			[
				'label' => esc_html__( 'Search & Select', 'elementor-pro' ),
				'type' => QueryControlModule::QUERY_CONTROL_ID,
				'label_block' => true,
				'autocomplete' => [
					'object' => QueryControlModule::QUERY_OBJECT_POST,
				],
				'condition' => [
					'source_type' => Module::SOURCE_TYPE_CUSTOM,
				],
			]
		);

		$this->end_controls_section();
	}

	public function render() {
		$settings = $this->get_settings();

		if ( Module::SOURCE_TYPE_CUSTOM === $settings['source_type'] ) {
			$post_id = (int) $settings['source_custom'];
			Plugin::elementor()->db->switch_to_post( $post_id );
		}

		if ( ! comments_open() && ( Plugin::elementor()->preview->is_preview_mode() || Plugin::elementor()->editor->is_edit_mode() ) ) :
			?>
			<div class="elementor-alert elementor-alert-danger" role="alert">
				<span class="elementor-alert-title">
					<?php esc_html_e( 'Comments are closed.', 'elementor-pro' ); ?>
				</span>
				<span class="elementor-alert-description">
					<?php esc_html_e( 'Switch on comments from either the discussion box on the WordPress post edit screen or from the WordPress discussion settings.', 'elementor-pro' ); ?>
				</span>
			</div>
			<?php
		else :
			comments_template();
		endif;

		if ( Module::SOURCE_TYPE_CUSTOM === $settings['source_type'] ) {
			Plugin::elementor()->db->restore_current_post();
		}
	}
}
modules/theme-elements/widgets/post-navigation.php000064400000035733150755004310016444 0ustar00<?php
namespace ElementorPro\Modules\ThemeElements\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;
use ElementorPro\Core\Utils;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Post_Navigation extends Base {

	public function get_name() {
		return 'post-navigation';
	}

	public function get_title() {
		return esc_html__( 'Post Navigation', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-post-navigation';
	}

	public function get_categories() {
		return [ 'theme-elements-single' ];
	}

	public function get_keywords() {
		return [ 'post', 'navigation', 'menu', 'links' ];
	}

	public function get_script_depends() {
		return [ 'post-navigation' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_post_navigation_content',
			[
				'label' => esc_html__( 'Post Navigation', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'show_label',
			[
				'label' => esc_html__( 'Label', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
			]
		);

		$this->add_control(
			'prev_label',
			[
				'label' => esc_html__( 'Previous Label', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Previous', 'elementor-pro' ),
				'condition' => [
					'show_label' => 'yes',
				],
			]
		);

		$this->add_control(
			'next_label',
			[
				'label' => esc_html__( 'Next Label', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Next', 'elementor-pro' ),
				'condition' => [
					'show_label' => 'yes',
				],
			]
		);

		$this->add_control(
			'show_arrow',
			[
				'label' => esc_html__( 'Arrows', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
			]
		);

		$this->add_control(
			'arrow',
			[
				'label' => esc_html__( 'Arrows Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'fa fa-angle-left' => esc_html__( 'Angle', 'elementor-pro' ),
					'fa fa-angle-double-left' => esc_html__( 'Double Angle', 'elementor-pro' ),
					'fa fa-chevron-left' => esc_html__( 'Chevron', 'elementor-pro' ),
					'fa fa-chevron-circle-left' => esc_html__( 'Chevron Circle', 'elementor-pro' ),
					'fa fa-caret-left' => esc_html__( 'Caret', 'elementor-pro' ),
					'fa fa-arrow-left' => esc_html__( 'Arrow', 'elementor-pro' ),
					'fa fa-long-arrow-left' => esc_html__( 'Long Arrow', 'elementor-pro' ),
					'fa fa-arrow-circle-left' => esc_html__( 'Arrow Circle', 'elementor-pro' ),
					'fa fa-arrow-circle-o-left' => esc_html__( 'Arrow Circle Negative', 'elementor-pro' ),
				],
				'default' => 'fa fa-angle-left',
				'condition' => [
					'show_arrow' => 'yes',
				],
			]
		);

		$this->add_control(
			'show_title',
			[
				'label' => esc_html__( 'Post Title', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
			]
		);

		$this->add_control(
			'show_borders',
			[
				'label' => esc_html__( 'Borders', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
				'prefix_class' => 'elementor-post-navigation-borders-',
			]
		);

		// Filter out post type without taxonomies
		$post_type_options = [];
		$post_type_taxonomies = [];
		foreach ( Utils::get_public_post_types() as $post_type => $post_type_label ) {
			$taxonomies = Utils::get_taxonomies( [ 'object_type' => $post_type ], false );
			if ( empty( $taxonomies ) ) {
				continue;
			}

			$post_type_options[ $post_type ] = $post_type_label;
			$post_type_taxonomies[ $post_type ] = [];
			foreach ( $taxonomies as $taxonomy ) {
				$post_type_taxonomies[ $post_type ][ $taxonomy->name ] = $taxonomy->label;
			}
		}

		$this->add_control(
			'in_same_term',
			[
				'label' => esc_html__( 'In same Term', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'options' => $post_type_options,
				'default' => '',
				'multiple' => true,
				'label_block' => true,
				'description' => esc_html__( 'Indicates whether next post must be within the same taxonomy term as the current post, this lets you set a taxonomy per each post type', 'elementor-pro' ),
			]
		);

		foreach ( $post_type_options as $post_type => $post_type_label ) {
			$this->add_control(
				$post_type . '_taxonomy',
				[
					'label' => $post_type_label . ' ' . esc_html__( 'Taxonomy', 'elementor-pro' ),
					'type' => Controls_Manager::SELECT,
					'options' => $post_type_taxonomies[ $post_type ],
					'default' => '',
					'condition' => [
						'in_same_term' => $post_type,
					],
				]
			);
		}

		$this->end_controls_section();

		$this->start_controls_section(
			'label_style',
			[
				'label' => esc_html__( 'Label', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'show_label' => 'yes',
				],
			]
		);

		$this->start_controls_tabs( 'tabs_label_style' );

		$this->start_controls_tab(
			'label_color_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'label_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'selectors' => [
					'{{WRAPPER}} span.post-navigation__prev--label' => 'color: {{VALUE}};',
					'{{WRAPPER}} span.post-navigation__next--label' => 'color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'label_color_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'label_hover_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} span.post-navigation__prev--label:hover' => 'color: {{VALUE}};',
					'{{WRAPPER}} span.post-navigation__next--label:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'label_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_SECONDARY,
				],
				'selector' => '{{WRAPPER}} span.post-navigation__prev--label, {{WRAPPER}} span.post-navigation__next--label',
				'exclude' => [ 'line_height' ],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'title_style',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'show_title' => 'yes',
				],
			]
		);

		$this->start_controls_tabs( 'tabs_post_navigation_style' );

		$this->start_controls_tab(
			'tab_color_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'text_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
				'selectors' => [
					'{{WRAPPER}} span.post-navigation__prev--title, {{WRAPPER}} span.post-navigation__next--title' => 'color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_color_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'hover_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} span.post-navigation__prev--title:hover, {{WRAPPER}} span.post-navigation__next--title:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'title_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_SECONDARY,
				],
				'selector' => '{{WRAPPER}} span.post-navigation__prev--title, {{WRAPPER}} span.post-navigation__next--title',
				'exclude' => [ 'line_height' ],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'arrow_style',
			[
				'label' => esc_html__( 'Arrow', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'show_arrow' => 'yes',
				],
			]
		);

		$this->start_controls_tabs( 'tabs_post_navigation_arrow_style' );

		$this->start_controls_tab(
			'arrow_color_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'arrow_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .post-navigation__arrow-wrapper' => 'color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'arrow_color_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'arrow_hover_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .post-navigation__arrow-wrapper:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_responsive_control(
			'arrow_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 6,
						'max' => 300,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .post-navigation__arrow-wrapper' => 'font-size: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'arrow_padding',
			[
				'label' => esc_html__( 'Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'body:not(.rtl) {{WRAPPER}} .post-navigation__arrow-prev' => 'padding-right: {{SIZE}}{{UNIT}};',
					'body:not(.rtl) {{WRAPPER}} .post-navigation__arrow-next' => 'padding-left: {{SIZE}}{{UNIT}};',
					'body.rtl {{WRAPPER}} .post-navigation__arrow-prev' => 'padding-left: {{SIZE}}{{UNIT}};',
					'body.rtl {{WRAPPER}} .post-navigation__arrow-next' => 'padding-right: {{SIZE}}{{UNIT}};',
				],
				'range' => [
					'em' => [
						'min' => 0,
						'max' => 5,
					],
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'borders_section_style',
			[
				'label' => esc_html__( 'Borders', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'show_borders!' => '',
				],
			]
		);

		$this->add_control(
			'sep_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				//'default' => '#D4D4D4',
				'selectors' => [
					'{{WRAPPER}} .elementor-post-navigation__separator' => 'background-color: {{VALUE}};',
					'{{WRAPPER}} .elementor-post-navigation' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'borders_width',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 1,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-post-navigation__separator' => 'width: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}} .elementor-post-navigation' => 'border-top-width: {{SIZE}}{{UNIT}}; border-bottom-width: {{SIZE}}{{UNIT}};',
					'{{WRAPPER}} .elementor-post-navigation__next.elementor-post-navigation__link' => 'width: calc(50% - ({{SIZE}}{{UNIT}} / 2))',
					'{{WRAPPER}} .elementor-post-navigation__prev.elementor-post-navigation__link' => 'width: calc(50% - ({{SIZE}}{{UNIT}} / 2))',
				],
			]
		);

		$this->add_control(
			'borders_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-post-navigation' => 'padding: {{SIZE}}{{UNIT}} 0;',
				],
				'range' => [
					'em' => [
						'min' => 0,
						'max' => 5,
					],
				],
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		$settings = $this->get_active_settings();

		$prev_label = '';
		$next_label = '';
		$prev_arrow = '';
		$next_arrow = '';

		if ( 'yes' === $settings['show_label'] ) {
			$prev_label = '<span class="post-navigation__prev--label">' . $settings['prev_label'] . '</span>';
			$next_label = '<span class="post-navigation__next--label">' . $settings['next_label'] . '</span>';
		}

		if ( 'yes' === $settings['show_arrow'] ) {
			if ( is_rtl() ) {
				$prev_icon_class = str_replace( 'left', 'right', $settings['arrow'] );
				$next_icon_class = $settings['arrow'];
			} else {
				$prev_icon_class = $settings['arrow'];
				$next_icon_class = str_replace( 'left', 'right', $settings['arrow'] );
			}

			$prev_arrow = '<span class="post-navigation__arrow-wrapper post-navigation__arrow-prev"><i class="' . $prev_icon_class . '" aria-hidden="true"></i><span class="elementor-screen-only">' . esc_html__( 'Prev', 'elementor-pro' ) . '</span></span>';
			$next_arrow = '<span class="post-navigation__arrow-wrapper post-navigation__arrow-next"><i class="' . $next_icon_class . '" aria-hidden="true"></i><span class="elementor-screen-only">' . esc_html__( 'Next', 'elementor-pro' ) . '</span></span>';
		}

		$prev_title = '';
		$next_title = '';

		if ( 'yes' === $settings['show_title'] ) {
			$prev_title = '<span class="post-navigation__prev--title">%title</span>';
			$next_title = '<span class="post-navigation__next--title">%title</span>';
		}

		$in_same_term = false;
		$taxonomy = 'category';
		$post_type = get_post_type( get_queried_object_id() );

		if ( ! empty( $settings['in_same_term'] ) && is_array( $settings['in_same_term'] ) && in_array( $post_type, $settings['in_same_term'] ) ) {
			if ( isset( $settings[ $post_type . '_taxonomy' ] ) ) {
				$in_same_term = true;
				$taxonomy = $settings[ $post_type . '_taxonomy' ];
			}
		}
		?>
		<div class="elementor-post-navigation">
			<div class="elementor-post-navigation__prev elementor-post-navigation__link">
				<?php previous_post_link( '%link', $prev_arrow . '<span class="elementor-post-navigation__link__prev">' . $prev_label . $prev_title . '</span>', $in_same_term, '', $taxonomy ); ?>
			</div>
			<?php if ( 'yes' === $settings['show_borders'] ) : ?>
				<div class="elementor-post-navigation__separator-wrapper">
					<div class="elementor-post-navigation__separator"></div>
				</div>
			<?php endif; ?>
			<div class="elementor-post-navigation__next elementor-post-navigation__link">
				<?php next_post_link( '%link', '<span class="elementor-post-navigation__link__next">' . $next_label . $next_title . '</span>' . $next_arrow, $in_same_term, '', $taxonomy ); ?>
			</div>
		</div>
		<?php
	}
}
modules/theme-elements/widgets/sitemap.php000064400000044016150755004310014756 0ustar00<?php
namespace ElementorPro\Modules\ThemeElements\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use ElementorPro\Modules\QueryControl\Module as Query_Module;
use Elementor\Repeater;
use Elementor\Group_Control_Typography;
use Elementor\Utils;
use ElementorPro\Core\Utils as Pro_Utils;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/**
 * Elementor sitemap widget.
 *
 * Elementor widget that displays an HTML sitemap.
 *
 */
class Sitemap extends Base {

	public function get_name() {
		return 'sitemap';
	}

	public function get_title() {
		return esc_html__( 'Sitemap', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-sitemap';
	}

	public function get_keywords() {
		return [ 'taxonomy', 'custom post type', 'cpt', 'sitemap', 'site map', 'link', 'menu', 'tree' ];
	}

	private function register_sitemap_tab() {
		$this->start_controls_section(
			'sitemap_section',
			[
				'label' => esc_html__( 'Sitemap', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$this->register_post_type_controls();

		$this->add_control(
			'sitemap_layout_divider',
			[
				'type' => Controls_Manager::DIVIDER,
			]
		);

		$this->register_layout_controls();

		$this->end_controls_section();

		$this->register_additional_settings_section();
	}

	private function register_additional_settings_section() {
		$this->start_controls_section(
			'sitemap_query_section',
			[
				'label' => esc_html__( 'Additional Options', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$this->add_control(
			'sitemap_exclude',
			[
				'label' => esc_html__( 'Exclude', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'multiple' => true,
				'options' => [
					'current_post' => esc_html__( 'Current Post', 'elementor-pro' ),
					'manual_selection' => esc_html__( 'Manual Selection', 'elementor-pro' ),
				],
				'label_block' => true,
			]
		);

		$this->add_control(
			'sitemap_exclude_ids',
			[
				'label' => esc_html__( 'Search & Select', 'elementor-pro' ),
				'type' => Query_Module::QUERY_CONTROL_ID,
				'options' => [],
				'label_block' => true,
				'multiple' => true,
				'autocomplete' => [
					'object' => Query_Module::QUERY_OBJECT_POST,
				],
				'condition' => [
					'sitemap_exclude' => 'manual_selection',
				],
			]
		);

		$this->add_control(
			'sitemap_password_protected',
			[
				'label' => esc_html__( 'Protected Posts', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
			]
		);

		$this->end_controls_section();
	}

	private function register_layout_controls() {
		$this->add_responsive_control(
			'sitemap_columns',
			[
				'label' => esc_html__( 'Columns', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '4',
				'tablet_default' => '2',
				'mobile_default' => '1',
				'options' => [
					'1' => '1',
					'2' => '2',
					'3' => '3',
					'4' => '4',
					'5' => '5',
					'6' => '6',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-sitemap-section' => 'flex-basis: calc( 1 / {{VALUE}} * 100% );',
				],
			]
		);

		$this->add_control(
			'sitemap_title_tag',
			[
				'label' => esc_html__( 'Title HTML Tag', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'h1' => 'H1',
					'h2' => 'H2',
					'h3' => 'H3',
					'h4' => 'H4',
					'h5' => 'H5',
					'h6' => 'H6',
					'div' => 'div',
					'span' => 'span',
					'p' => 'p',
				],
				'default' => 'h2',
			]
		);

		$this->add_control(
			'sitemap_add_nofollow',
			[
				'label' => esc_html__( 'Add nofollow', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
			]
		);
	}

	private function register_post_type_controls() {
		$supported_taxonomies = [];

		$public_types = Pro_Utils::get_public_post_types();

		foreach ( $public_types as $type => $title ) {
			$taxonomies = get_object_taxonomies( $type, 'objects' );
			foreach ( $taxonomies as $key => $tax ) {
				if ( ! in_array( $tax->name, $supported_taxonomies ) ) {
					$label = $tax->label . ' (' . $tax->name . ')';
					$supported_taxonomies[ $tax->name ] = $label;
				}
			}
		}

		$repeater = new Repeater();

		$repeater->add_control(
			'sitemap_type_selector',
			[
				'label' => esc_html__( 'Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'post_type',
				'options' => [
					'post_type' => esc_html__( 'Post Type', 'elementor-pro' ),
					'taxonomy' => esc_html__( 'Taxonomy', 'elementor-pro' ),
				],
			]
		);

		$repeater->add_control(
			'sitemap_source_post_type',
			[
				'label' => esc_html__( 'Source', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'page',
				'options' => $public_types,
				'condition' => [
					'sitemap_type_selector' => 'post_type',
				],
			]
		);

		$repeater->add_control(
			'sitemap_source_taxonomy',
			[
				'label' => esc_html__( 'Source', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'category',
				'options' => $supported_taxonomies,
				'condition' => [
					'sitemap_type_selector' => 'taxonomy',
				],
			]
		);

		$repeater->add_control(
			'sitemap_title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$repeater->add_control(
			'sitemap_orderby_post_type',
			[
				'label' => esc_html__( 'Order By', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'post_date',
				'options' => [
					'post_date' => esc_html__( 'Date', 'elementor-pro' ),
					'post_title' => esc_html__( 'Title', 'elementor-pro' ),
					'menu_order' => esc_html__( 'Menu Order', 'elementor-pro' ),
					'rand' => esc_html__( 'Random', 'elementor-pro' ),
				],
				'condition' => [
					'sitemap_type_selector' => 'post_type',
				],
			]
		);

		$repeater->add_control(
			'sitemap_orderby_taxonomy',
			[
				'label' => esc_html__( 'Order By', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'name',
				'options' => [
					'id' => esc_html__( 'ID', 'elementor-pro' ),
					'name' => esc_html__( 'Name', 'elementor-pro' ),
				],
				'condition' => [
					'sitemap_type_selector' => 'taxonomy',
				],
			]
		);

		$repeater->add_control(
			'sitemap_order',
			[
				'label' => esc_html__( 'Order', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'desc',
				'options' => [
					'asc' => esc_html__( 'ASC', 'elementor-pro' ),
					'desc' => esc_html__( 'DESC', 'elementor-pro' ),
				],
			]
		);

		$repeater->add_control(
			'sitemap_hide_empty',
			[
				'label' => esc_html__( 'Hide Empty', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'condition' => [
					'sitemap_type_selector' => 'taxonomy',
				],
			]
		);

		$repeater->add_control(
			'sitemap_hierarchical',
			[
				'label' => esc_html__( 'Hierarchical View', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'no',
			]
		);

		$repeater->add_control(
			'sitemap_depth',
			[
				'label' => esc_html__( 'Depth', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => '0',
				'options' => [
					'0' => esc_html__( 'All', 'elementor-pro' ),
					'1' => 1,
					'2' => 2,
					'3' => 3,
					'4' => 4,
					'5' => 5,
					'6' => 6,
				],
				'condition' => [
					'sitemap_hierarchical' => 'yes',
				],
			]
		);

		$this->add_control(
			'sitemap_items',
			[
				'label' => '',
				'type' => Controls_Manager::REPEATER,
				'fields' => $repeater->get_controls(),
				'default' => [
					[
						'sitemap_type_selector' => 'post_type',
						'sitemap_title' => esc_html__( 'Pages', 'elementor-pro' ),
						'sitemap_source_post_type' => 'page',
					],
					[
						'sitemap_type_selector' => 'taxonomy',
						'sitemap_title' => esc_html__( 'Categories', 'elementor-pro' ),
						'sitemap_source_taxonomy' => 'category',
					],
				],
				'title_field' => '{{{ sitemap_title }}}',
			]
		);
	}

	private function register_style_tab() {
		$this->start_controls_section(
			'section_sitemap_style',
			[
				'label' => esc_html__( 'List', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'sitemap_list_indent',
			[
				'label' => esc_html__( 'Indent', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'body:not(.rtl) {{WRAPPER}} .elementor-sitemap-section ul' => 'margin-left: {{SIZE}}{{UNIT}};',
					'body.rtl {{WRAPPER}} .elementor-sitemap-section ul' => 'margin-right: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_responsive_control(
			'sitemap_section_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-sitemap-section' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'sitemap_title_style',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'sitemap_title_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-sitemap-title' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_PRIMARY,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'sitemap_title_typography',
				'selector' => '{{WRAPPER}} .elementor-sitemap-title',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
			]
		);

		$this->add_control(
			'sitemap_list_style',
			[
				'label' => esc_html__( 'List Item', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'sitemap_list_item_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-sitemap-item, {{WRAPPER}} span.elementor-sitemap-list, {{WRAPPER}} .elementor-sitemap-item a' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'sitemap_list_item_typography',
				'selector' => '{{WRAPPER}} .elementor-sitemap-item, {{WRAPPER}} span.elementor-sitemap-list, {{WRAPPER}} .elementor-sitemap-item a',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->add_control(
			'sitemap_bullet_style',
			[
				'label' => esc_html__( 'Bullet', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'sitemap_bullet_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-sitemap-item' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_control(
			'sitemap_list_item_bullet_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'default' => 'disc',
				'options' => [
					'disc' => [
						'title' => esc_html__( 'Disc', 'elementor-pro' ),
						'icon' => 'eicon-circle',
					],
					'circle' => [
						'title' => esc_html__( 'Circle', 'elementor-pro' ),
						'icon' => 'eicon-circle-o',
					],
					'square' => [
						'title' => esc_html__( 'Square', 'elementor-pro' ),
						'icon' => 'eicon-square',
					],
					'none' => [
						'title' => esc_html__( 'None', 'elementor-pro' ),
						'icon' => 'eicon-ban',
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-sitemap-list, {{WRAPPER}} .elementor-sitemap-list .children' => 'list-style-type: {{VALUE}};',
				],
			]
		);

		$this->end_controls_section();
	}

	protected function register_controls() {
		$this->register_sitemap_tab();
		$this->register_style_tab();
	}

	protected function render() {
		$settings = $this->get_settings_for_display();

		if ( empty( $settings['sitemap_items'] ) ) {
			return;
		}

		$title_tag = $settings['sitemap_title_tag'];

		$posts_query = [
			'post__not_in' => $settings['sitemap_exclude_ids'],
			'has_password' => 'yes' === $settings['sitemap_password_protected'] ? null : false,
		];

		$this->add_render_attribute( [
			'category_link' => [
				'class' => 'elementor-sitemap-category-title',
			],
			'wrapper' => [
				'class' => 'elementor-sitemap-wrap',
			],
		] );

		if ( 'yes' === $settings['sitemap_add_nofollow'] ) {
			$this->add_render_attribute( 'a', 'rel', 'nofollow' );
		}

		echo '<div ';
		$this->print_render_attribute_string( 'wrapper' );
		echo '>';
		foreach ( $settings['sitemap_items'] as $sitemap_item ) {
			// PHPCS - `render_sitemap_item` is safe.
			echo $this->render_sitemap_item( $sitemap_item, $title_tag, $posts_query ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		}
		echo '</div>';
	}

	private function get_list_title( $current_title, $item_type, $is_taxonomy ) {
		if ( '' !== $current_title ) {
			return $current_title;
		}

		if ( $is_taxonomy ) {
			$obj = get_taxonomy( $item_type );
			if ( false === $obj ) {
				return '';
			}
			return $obj->label;
		}

		$obj = get_post_type_object( $item_type );
		if ( null === $obj ) {
			return '';
		}
		if ( '' === $obj->labels->name ) {
			return $obj->labels->singular_name;
		}

		return $obj->labels->name;
	}

	private function render_sitemap_item( $sitemap_item, $title_tag, $query_args ) {
		$hierarchical = 'yes' === $sitemap_item['sitemap_hierarchical'];
		$max_depth = $sitemap_item['sitemap_depth'];
		$query_args['orderby'] = $sitemap_item['sitemap_orderby_post_type'];
		$query_args['order'] = $sitemap_item['sitemap_order'];
		$is_taxonomy = 'taxonomy' === $sitemap_item['sitemap_type_selector'];
		$item_type = $is_taxonomy ? $sitemap_item['sitemap_source_taxonomy'] : $sitemap_item['sitemap_source_post_type'];
		$title = $this->get_list_title( $sitemap_item['sitemap_title'], $item_type, $is_taxonomy );

		$this->add_render_attribute( [
			'section' . $item_type => [
				'class' => [
					'elementor-sitemap-section',
				],
			],
			'list' . $item_type => [
				'class' => [
					'elementor-sitemap-list',
					'elementor-sitemap-' . $item_type . '-list',
				],
			],
			$title_tag . $item_type => [
				'class' => [
					'elementor-sitemap-title',
					'elementor-sitemap-' . $item_type . '-title',
				],
			],
			'item' . $item_type => [
				'class' => [
					'elementor-sitemap-item',
					'elementor-sitemap-item-' . $item_type,
				],
			],
		] );

		$items_html = '';

		if ( $is_taxonomy ) {
			$items_html .= $this->sitemap_html_taxonomies( $item_type, $hierarchical, $max_depth, $sitemap_item, $query_args );
		} else {
			$items_html .= $this->sitemap_html_post_types( $item_type, $hierarchical, $max_depth, $query_args );
		}

		$title = empty( $title ) ? '' : sprintf( '<%s %s>%s</%1$s>', Utils::validate_html_tag( $title_tag ), $this->get_render_attribute_string( $title_tag . $item_type ), $title );

		$html = sprintf( '<div %s>%s', $this->get_render_attribute_string( 'section' . $item_type ), $title );
		if ( empty( $items_html ) ) {
			$html .= sprintf( '<span %s>%s</span>', $this->get_render_attribute_string( 'list' . $item_type ), esc_html__( 'None', 'elementor-pro' ) );
		} else {
			$html .= sprintf( '<ul %s>%s</ul>', $this->get_render_attribute_string( 'list' . $item_type ), $items_html );
		}
		$html .= '</div>';

		return $html;
	}

	private function sitemap_html_taxonomies( $taxonomy, $hierarchical, $max_depth, $item_settings, $query_args ) {
		$query_args['hide_empty'] = 'yes' === $item_settings['sitemap_hide_empty'];
		$query_args['show_option_none'] = '';
		$query_args['taxonomy'] = $taxonomy;
		$query_args['title_li'] = '';
		$query_args['echo'] = false;
		$query_args['depth'] = $max_depth;
		$query_args['hierarchical'] = $hierarchical;
		$query_args['orderby'] = $item_settings['sitemap_orderby_taxonomy'];

		$taxonomy_list = wp_list_categories( $query_args );
		$taxonomy_list = $this->add_sitemap_item_classes( 'item' . $taxonomy, $taxonomy_list );

		return $taxonomy_list;
	}

	/**
	 * @param string $post_type
	 * @param array  $query_args
	 *
	 * @return \WP_Query
	 */
	private function query_by_post_type( $post_type, $query_args ) {
		$args = [
			'posts_per_page' => -1,
			'update_post_meta_cache' => false,
			'post_type' => $post_type,
			'filter' => 'ids',
			'post_status' => 'publish',
		];

		$args = array_merge( $query_args, $args );

		$query = new \WP_Query( $args );

		return $query;
	}

	/**
	 * @param string $post_type
	 * @param bool   $hierarchical
	 * @param int    $depth
	 * @param array  $query_args
	 *
	 * @return string
	 */
	private function sitemap_html_post_types( $post_type, $hierarchical, $depth, $query_args ) {
		$html = '';

		$query_result = $this->query_by_post_type( $post_type, $query_args );

		if ( empty( $query_result ) ) {
			return '';
		}

		if ( $query_result->have_posts() ) {
			if ( ! $hierarchical ) {
				$depth = -1;
			}
			$walker = new \Walker_Page();
			$walker->tree_type = $post_type;
			$walker_str = $walker->walk( $query_result->posts, $depth );
			$html .= $this->add_sitemap_item_classes( 'item' . $post_type, $walker_str );
		}

		return $html;
	}

	private function add_sitemap_item_classes( $element, $str ) {
		$element_str = $this->get_render_attribute_string( $element );
		/**  remove trailing " */
		$element_str = substr_replace( $element_str, ' ', -1, 1 );
		$source = [
			'class="',
		];
		$replace = [
			$element_str,
		];

		if ( 'yes' === $this->get_settings_for_display( 'sitemap_add_nofollow' ) ) {
			$source[] = 'href=';
			$replace[] = 'rel="nofollow" href=';
		}

		return str_replace( $source, $replace, $str );
	}
}


modules/theme-elements/widgets/search-form.php000064400000057516150755004310015533 0ustar00<?php
namespace ElementorPro\Modules\ThemeElements\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Typography;
use Elementor\Icons_Manager;
use Elementor\Utils;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Search_Form extends Base {

	public function get_name() {
		return 'search-form';
	}

	public function get_title() {
		return esc_html__( 'Search Form', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-site-search';
	}

	public function get_keywords() {
		return [ 'search', 'form' ];
	}

	public function get_style_depends() {
		if ( Icons_Manager::is_migration_allowed() ) {
			return [ 'elementor-icons-fa-solid' ];
		}
		return [];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'search_content',
			[
				'label' => esc_html__( 'Search Form', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'skin',
			[
				'label' => esc_html__( 'Skin', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'classic',
				'options' => [
					'classic' => esc_html__( 'Classic', 'elementor-pro' ),
					'minimal' => esc_html__( 'Minimal', 'elementor-pro' ),
					'full_screen' => esc_html__( 'Full Screen', 'elementor-pro' ),
				],
				'prefix_class' => 'elementor-search-form--skin-',
				'render_type' => 'template',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'placeholder',
			[
				'label' => esc_html__( 'Placeholder', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'separator' => 'before',
				'default' => esc_html__( 'Search', 'elementor-pro' ) . '...',
			]
		);

		$this->add_control(
			'heading_button_content',
			[
				'label' => esc_html__( 'Button', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'skin' => 'classic',
				],
			]
		);

		$this->add_control(
			'button_type',
			[
				'label' => esc_html__( 'Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'icon',
				'options' => [
					'icon' => esc_html__( 'Icon', 'elementor-pro' ),
					'text' => esc_html__( 'Text', 'elementor-pro' ),
				],
				'prefix_class' => 'elementor-search-form--button-type-',
				'render_type' => 'template',
				'condition' => [
					'skin' => 'classic',
				],
			]
		);

		$this->add_control(
			'button_text',
			[
				'label' => esc_html__( 'Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Search', 'elementor-pro' ),
				'separator' => 'after',
				'condition' => [
					'button_type' => 'text',
					'skin' => 'classic',
				],
			]
		);

		$this->add_control(
			'icon',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'default' => 'search',
				'options' => [
					'search' => [
						'title' => esc_html__( 'Search', 'elementor-pro' ),
						'icon' => 'eicon-search',
					],
					'arrow' => [
						'title' => esc_html__( 'Arrow', 'elementor-pro' ),
						'icon' => 'eicon-arrow-right',
					],
				],
				'render_type' => 'template',
				'prefix_class' => 'elementor-search-form--icon-',
				'condition' => [
					'button_type' => 'icon',
					'skin' => 'classic',
				],
			]
		);

		$this->add_control(
			'size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 50,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__container' => 'min-height: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}} .elementor-search-form__submit' => 'min-width: {{SIZE}}{{UNIT}}',
					'body:not(.rtl) {{WRAPPER}} .elementor-search-form__icon' => 'padding-left: calc({{SIZE}}{{UNIT}} / 3)',
					'body.rtl {{WRAPPER}} .elementor-search-form__icon' => 'padding-right: calc({{SIZE}}{{UNIT}} / 3)',
					'{{WRAPPER}} .elementor-search-form__input, {{WRAPPER}}.elementor-search-form--button-type-text .elementor-search-form__submit' => 'padding-left: calc({{SIZE}}{{UNIT}} / 3); padding-right: calc({{SIZE}}{{UNIT}} / 3)',
				],
				'condition' => [
					'skin!' => 'full_screen',
				],
			]
		);

		$this->add_control(
			'toggle_button_content',
			[
				'label' => esc_html__( 'Toggle', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'skin' => 'full_screen',
				],
			]
		);

		$this->add_control(
			'toggle_align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'default' => 'center',
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-h-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form' => 'text-align: {{VALUE}}',
				],
				'condition' => [
					'skin' => 'full_screen',
				],
			]
		);

		$this->add_control(
			'toggle_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 33,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__toggle' => '--e-search-form-toggle-size: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'skin' => 'full_screen',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_input_style',
			[
				'label' => esc_html__( 'Input', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'icon_size_minimal',
			[
				'label' => esc_html__( 'Icon Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__icon' => '--e-search-form-icon-size-minimal: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'skin' => 'minimal',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'overlay_background_color',
			[
				'label' => esc_html__( 'Overlay Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}.elementor-search-form--skin-full_screen .elementor-search-form__container' => 'background-color: {{VALUE}}',
				],
				'condition' => [
					'skin' => 'full_screen',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'input_typography',
				'selector' => '{{WRAPPER}} input[type="search"].elementor-search-form__input',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->start_controls_tabs( 'tabs_input_colors' );

		$this->start_controls_tab(
			'tab_input_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'input_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__input,
					{{WRAPPER}} .elementor-search-form__icon,
					{{WRAPPER}} .elementor-lightbox .dialog-lightbox-close-button,
					{{WRAPPER}} .elementor-lightbox .dialog-lightbox-close-button:hover,
					{{WRAPPER}}.elementor-search-form--skin-full_screen input[type="search"].elementor-search-form__input' => 'color: {{VALUE}}; fill: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'input_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}:not(.elementor-search-form--skin-full_screen) .elementor-search-form__container' => 'background-color: {{VALUE}}',
					'{{WRAPPER}}.elementor-search-form--skin-full_screen input[type="search"].elementor-search-form__input' => 'background-color: {{VALUE}}',
				],
				'condition' => [
					'skin!' => 'full_screen',
				],
			]
		);

		$this->add_control(
			'input_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}:not(.elementor-search-form--skin-full_screen) .elementor-search-form__container' => 'border-color: {{VALUE}}',
					'{{WRAPPER}}.elementor-search-form--skin-full_screen input[type="search"].elementor-search-form__input' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'input_box_shadow',
				'selector' => '{{WRAPPER}} .elementor-search-form__container',
				'fields_options' => [
					'box_shadow_type' => [
						'separator' => 'default',
					],
				],
				'condition' => [
					'skin!' => 'full_screen',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_input_focus',
			[
				'label' => esc_html__( 'Focus', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'input_text_color_focus',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}:not(.elementor-search-form--skin-full_screen) .elementor-search-form--focus .elementor-search-form__input,
					{{WRAPPER}} .elementor-search-form--focus .elementor-search-form__icon,
					{{WRAPPER}} .elementor-lightbox .dialog-lightbox-close-button:hover,
					{{WRAPPER}}.elementor-search-form--skin-full_screen input[type="search"].elementor-search-form__input:focus' => 'color: {{VALUE}}; fill: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'input_background_color_focus',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}:not(.elementor-search-form--skin-full_screen) .elementor-search-form--focus .elementor-search-form__container' => 'background-color: {{VALUE}}',
					'{{WRAPPER}}.elementor-search-form--skin-full_screen input[type="search"].elementor-search-form__input:focus' => 'background-color: {{VALUE}}',
				],
				'condition' => [
					'skin!' => 'full_screen',
				],
			]
		);

		$this->add_control(
			'input_border_color_focus',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}:not(.elementor-search-form--skin-full_screen) .elementor-search-form--focus .elementor-search-form__container' => 'border-color: {{VALUE}}',
					'{{WRAPPER}}.elementor-search-form--skin-full_screen input[type="search"].elementor-search-form__input:focus' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'input_box_shadow_focus',
				'selector' => '{{WRAPPER}} .elementor-search-form--focus .elementor-search-form__container',
				'fields_options' => [
					'box_shadow_type' => [
						'separator' => 'default',
					],
				],
				'condition' => [
					'skin!' => 'full_screen',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'button_border_width',
			[
				'label' => esc_html__( 'Border Size', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'selectors' => [
					'{{WRAPPER}}:not(.elementor-search-form--skin-full_screen) .elementor-search-form__container' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
					'{{WRAPPER}}.elementor-search-form--skin-full_screen input[type="search"].elementor-search-form__input' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 200,
					],
				],
				'default' => [
					'size' => 3,
					'unit' => 'px',
				],
				'selectors' => [
					'{{WRAPPER}}:not(.elementor-search-form--skin-full_screen) .elementor-search-form__container' => 'border-radius: {{SIZE}}{{UNIT}}',
					'{{WRAPPER}}.elementor-search-form--skin-full_screen input[type="search"].elementor-search-form__input' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_button_style',
			[
				'label' => esc_html__( 'Button', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'skin' => 'classic',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'button_typography',
				'selector' => '{{WRAPPER}} .elementor-search-form__submit',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
				'condition' => [
					'button_type' => 'text',
				],
			]
		);

		$this->start_controls_tabs( 'tabs_button_colors' );

		$this->start_controls_tab(
			'tab_button_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__submit' => '--e-search-form-submit-text-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'button_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__submit' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_button_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_text_color_hover',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__submit:hover' => '--e-search-form-submit-text-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'button_background_color_hover',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__submit:hover' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_responsive_control(
			'icon_size',
			[
				'label' => esc_html__( 'Icon Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__submit' => '--e-search-form-submit-icon-size: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'button_type' => 'icon',
				],
				'separator' => 'before',
			]
		);

		$this->add_responsive_control(
			'button_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 1,
						'max' => 10,
						'step' => 0.1,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__submit' => 'min-width: calc( {{SIZE}} * {{size.SIZE}}{{size.UNIT}} )',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_toggle_style',
			[
				'label' => esc_html__( 'Toggle', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'skin' => 'full_screen',
				],
			]
		);

		$this->start_controls_tabs( 'tabs_toggle_color' );

		$this->start_controls_tab(
			'tab_toggle_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'toggle_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__toggle' => '--e-search-form-toggle-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'toggle_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__toggle' => '--e-search-form-toggle-background-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_toggle_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'toggle_color_hover',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__toggle:hover' => '--e-search-form-toggle-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'toggle_background_color_hover',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__toggle:hover' => '--e-search-form-toggle-background-color: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'toggle_icon_size',
			[
				'label' => esc_html__( 'Icon Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__toggle' => '--e-search-form-toggle-icon-size: calc({{SIZE}}em / 100)',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'toggle_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 10,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__toggle' => '--e-search-form-toggle-border-width: {{SIZE}}{{UNIT}}',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'toggle_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-search-form__toggle' => '--e-search-form-toggle-border-radius: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		$settings = $this->get_settings();
		$this->add_render_attribute(
			'input', [
				'placeholder' => $settings['placeholder'],
				'class' => 'elementor-search-form__input',
				'type' => 'search',
				'name' => 's',
				'title' => esc_html__( 'Search', 'elementor-pro' ),
				'value' => get_search_query(),
			]
		);

		// Set the selected icon.
		$icon_class = 'search';

		if ( 'icon' === $settings['button_type'] && 'arrow' === $settings['icon'] ) {
			$icon_class = is_rtl() ? 'arrow-left' : 'arrow-right';
		}

		$this->add_render_attribute( 'icon', [
			'class' => 'fa fa-' . $icon_class,
		] );

		$icon = [
			'value' => 'fas fa-' . $icon_class,
			'library' => 'fa-solid',
		];
		?>
		<form class="elementor-search-form" role="search" action="<?php // PHPCS - the method home_url is safe.
			echo home_url(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>" method="get">
			<?php do_action( 'elementor_pro/search_form/before_input', $this ); ?>
			<?php if ( 'full_screen' === $settings['skin'] ) : ?>
			<div class="elementor-search-form__toggle">
				<?php $this->render_search_icon( $icon, [ 'aria-hidden' => 'true' ] ); ?>
				<span class="elementor-screen-only"><?php esc_html_e( 'Search', 'elementor-pro' ); ?></span>
			</div>
			<?php endif; ?>
			<div class="elementor-search-form__container">
				<?php if ( 'minimal' === $settings['skin'] ) : ?>
					<div class="elementor-search-form__icon">
						<?php $this->render_search_icon( $icon, [ 'aria-hidden' => 'true' ] ); ?>
						<span class="elementor-screen-only"><?php esc_html_e( 'Search', 'elementor-pro' ); ?></span>
					</div>
				<?php endif; ?>
				<input <?php $this->print_render_attribute_string( 'input' ); ?>>
				<?php do_action( 'elementor_pro/search_form/after_input', $this ); ?>
				<?php if ( 'classic' === $settings['skin'] ) : ?>
					<button class="elementor-search-form__submit" type="submit" title="<?php esc_attr_e( 'Search', 'elementor-pro' ); ?>" aria-label="<?php esc_attr_e( 'Search', 'elementor-pro' ); ?>">
						<?php if ( 'icon' === $settings['button_type'] ) : ?>
							<?php $this->render_search_icon( $icon, $this->get_render_attributes( 'icon' ) ); ?>
							<span class="elementor-screen-only"><?php esc_html_e( 'Search', 'elementor-pro' ); ?></span>
						<?php elseif ( ! empty( $settings['button_text'] ) ) : ?>
							<?php $this->print_unescaped_setting( 'button_text' ); ?>
						<?php endif; ?>
					</button>
				<?php endif; ?>
				<?php if ( 'full_screen' === $settings['skin'] ) : ?>
				<div class="dialog-lightbox-close-button dialog-close-button">
					<?php
						Icons_Manager::render_icon( [
							'library' => 'eicons',
							'value' => 'eicon-close',
						], [ 'aria-hidden' => 'true' ] );
					?>
					<span class="elementor-screen-only"><?php esc_html_e( 'Close', 'elementor-pro' ); ?></span>
				</div>
				<?php endif ?>
			</div>
		</form>
		<?php
	}

	/**
	 * Render Search Form widget output in the editor.
	 *
	 * Written as a Backbone JavaScript template and used to generate the live preview.
	 *
	 * @since 2.9.0
	 * @access protected
	 */
	protected function content_template() {
		?>
		<#
			var iconClass = 'fa fas fa-search';

			if ( 'arrow' === settings.icon ) {
				if ( elementorCommon.config.isRTL ) {
					iconClass = 'fa fas fa-arrow-left';
				} else {
					iconClass = 'fa fas fa-arrow-right';
				}
			}
		#>
		<form class="elementor-search-form" action="" role="search">
			<# if ( 'full_screen' === settings.skin ) { #>
				<div class="elementor-search-form__toggle">
					<i class="fa fas fa-search" aria-hidden="true"></i>
					<span class="elementor-screen-only"><?php esc_html_e( 'Search', 'elementor-pro' ); ?></span>
				</div>
			<# } #>
			<div class="elementor-search-form__container">
				<# if ( 'minimal' === settings.skin ) { #>
					<div class="elementor-search-form__icon">
						<i class="fa fas fa-search" aria-hidden="true"></i>
						<span class="elementor-screen-only"><?php esc_html_e( 'Search', 'elementor-pro' ); ?></span>
					</div>
				<# } #>
				<input type="search"
					   name="s"
					   title="<?php esc_attr_e( 'Search', 'elementor-pro' ); ?>"
					   class="elementor-search-form__input"
					   placeholder="{{ settings.placeholder }}">

				<# if ( 'classic' === settings.skin ) { #>
					<button class="elementor-search-form__submit" type="submit">
						<# if ( 'icon' === settings.button_type ) { #>
							<i class="{{ iconClass }}" aria-hidden="true"></i>
							<span class="elementor-screen-only"><?php esc_html_e( 'Submit', 'elementor-pro' ); ?></span>
						<# } else if ( settings.button_text ) { #>
							{{{ settings.button_text }}}
						<# } #>
					</button>
				<# } #>
			</div>
		</form>
		<?php
	}

	private function render_search_icon( $icon, $attributes = [] ) {
		// When the experiment is active and the search icon renders as SVG, it needs additional container for the icon box border.
		if ( Plugin::elementor()->experiments->is_feature_active( 'e_font_icon_svg' ) ) {
			$icon_html = Icons_Manager::render_font_icon( $icon, $attributes );

			Utils::print_unescaped_internal_string( sprintf( '<div class="e-font-icon-svg-container">%s</div>', $icon_html ) );
		} else {
			$migration_allowed = Icons_Manager::is_migration_allowed();

			if ( ! $migration_allowed || ! Icons_Manager::render_icon( $icon, [ 'aria-hidden' => 'true' ] ) ) {
				Utils::print_unescaped_internal_string( sprintf( '<i %s aria-hidden="true"></i>', esc_attr( $this->get_render_attribute_string( 'icon' ) ) ) );
			}
		}
	}
}
modules/theme-elements/widgets/breadcrumbs.php000064400000010171150755004310015600 0ustar00<?php
namespace ElementorPro\Modules\ThemeElements\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;
use Elementor\Utils;
use WPSEO_Breadcrumbs;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Breadcrumbs extends Base {

	public function get_name() {
		return 'breadcrumbs';
	}

	public function get_title() {
		return esc_html__( 'Breadcrumbs', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-yoast';
	}

	public function get_script_depends() {
		return [ 'breadcrumbs' ];
	}

	public function get_keywords() {
		return [ 'yoast', 'seo', 'breadcrumbs', 'internal links' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_breadcrumbs_content',
			[
				'label' => esc_html__( 'Breadcrumbs', 'elementor-pro' ),
			]
		);

		$this->add_responsive_control(
			'align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'prefix_class' => 'elementor%s-align-',
			]
		);

		$this->add_control(
			'html_tag',
			[
				'label' => esc_html__( 'HTML Tag', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'Default', 'elementor-pro' ),
					'p' => 'p',
					'div' => 'div',
					'nav' => 'nav',
					'span' => 'span',
				],
				'default' => '',
			]
		);

		$this->add_control(
			'html_description',
			[
				'raw' => esc_html__( 'Additional settings are available in the Yoast SEO', 'elementor-pro' ) . ' ' . sprintf( '<a href="%s" target="_blank">%s</a>', admin_url( 'admin.php?page=wpseo_titles#top#breadcrumbs' ), esc_html__( 'Breadcrumbs Panel', 'elementor-pro' ) ),
				'type' => Controls_Manager::RAW_HTML,
				'content_classes' => 'elementor-descriptor',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style',
			[
				'label' => esc_html__( 'Breadcrumbs', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'typography',
				'selector' => '{{WRAPPER}}',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_SECONDARY,
				],
			]
		);

		$this->add_control(
			'text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}}' => 'color: {{VALUE}};',
				],
			]
		);

		$this->start_controls_tabs( 'tabs_breadcrumbs_style' );

		$this->start_controls_tab(
			'tab_color_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'link_color',
			[
				'label' => esc_html__( 'Link Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} a' => 'color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_color_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'link_hover_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} a:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_section();
	}

	private function get_html_tag() {
		$html_tag = $this->get_settings( 'html_tag' );

		if ( empty( $html_tag ) ) {
			$html_tag = 'p';
		}

		return Utils::validate_html_tag( $html_tag );
	}

	protected function render() {
		if ( class_exists( '\WPSEO_Breadcrumbs' ) ) {
			$html_tag = $this->get_html_tag();
			WPSEO_Breadcrumbs::breadcrumb( '<' . $html_tag . ' id="breadcrumbs">', '</' . $html_tag . '>' );
		}

	}
}
modules/theme-elements/widgets/author-box.php000064400000052524150755004310015407 0ustar00<?php
namespace ElementorPro\Modules\ThemeElements\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Typography;
use Elementor\Utils;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Author_Box extends Base {

	public function get_name() {
		return 'author-box';
	}

	public function get_title() {
		return esc_html__( 'Author Box', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-person';
	}

	public function get_categories() {
		return [
			'theme-elements-single',
			'theme-elements-archive',
		];
	}

	public function get_keywords() {
		return [ 'author', 'user', 'profile', 'biography', 'testimonial', 'avatar' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_author_info',
			[
				'label' => esc_html__( 'Author Info', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'source',
			[
				'label' => esc_html__( 'Source', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'current',
				'options' => [
					'current' => esc_html__( 'Current Author', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
			]
		);

		$this->add_control(
			'show_avatar',
			[
				'label' => esc_html__( 'Profile Picture', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'prefix_class' => 'elementor-author-box--avatar-',
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
				'separator' => 'before',
				'condition' => [
					'source!' => 'custom',
				],
				'render_type' => 'template',
			]
		);

		//This controls for custom source
		$this->add_control(
			'author_avatar',
			[
				'label' => esc_html__( 'Profile Picture', 'elementor-pro' ),
				'type' => Controls_Manager::MEDIA,
				'default' => [
					'url' => Utils::get_placeholder_image_src(),
				],
				'condition' => [
					'source' => 'custom',
				],
				'separator' => 'before',
			]
		);
		//END

		$this->add_control(
			'show_name',
			[
				'label' => esc_html__( 'Display Name', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'prefix_class' => 'elementor-author-box--name-',
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
				'condition' => [
					'source!' => 'custom',
				],
				'render_type' => 'template',
				'separator' => 'before',
			]
		);

		//This control for custom source
		$this->add_control(
			'author_name',
			[
				'label' => esc_html__( 'Name', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'John Doe', 'elementor-pro' ),
				'condition' => [
					'source' => 'custom',
				],
				'separator' => 'before',
			]
		);
		//END

		$this->add_control(
			'author_name_tag',
			[
				'label' => esc_html__( 'HTML Tag', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'h1' => 'H1',
					'h2' => 'H2',
					'h3' => 'H3',
					'h4' => 'H4',
					'h5' => 'H5',
					'h6' => 'H6',
					'div' => 'div',
					'span' => 'span',
				],
				'default' => 'h4',
			]
		);

		$this->add_control(
			'link_to',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'None', 'elementor-pro' ),
					'website' => esc_html__( 'Website', 'elementor-pro' ),
					'posts_archive' => esc_html__( 'Posts Archive', 'elementor-pro' ),
				],
				'condition' => [
					'source!' => 'custom',
				],
				'description' => esc_html__( 'Link for the Author Name and Image', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'show_biography',
			[
				'label' => esc_html__( 'Biography', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'prefix_class' => 'elementor-author-box--biography-',
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'yes',
				'condition' => [
					'source!' => 'custom',
				],
				'render_type' => 'template',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'show_link',
			[
				'label' => esc_html__( 'Archive Button', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'prefix_class' => 'elementor-author-box--link-',
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => 'no',
				'condition' => [
					'source!' => 'custom',
				],
				'render_type' => 'template',
			]
		);

		$this->add_control(
			'author_website',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
				'condition' => [
					'source' => 'custom',
				],
				'description' => esc_html__( 'Link for the Author Name and Image', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'author_bio',
			[
				'label' => esc_html__( 'Biography', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'default' => esc_html__( 'Lorem ipsum dolor sit amet consectetur adipiscing elit dolor', 'elementor-pro' ),
				'rows' => 3,
				'condition' => [
					'source' => 'custom',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'posts_url',
			[
				'label' => esc_html__( 'Archive Button', 'elementor-pro' ),
				'type' => Controls_Manager::URL,
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
				'condition' => [
					'source' => 'custom',
				],
			]
		);

		$this->add_control(
			'link_text',
			[
				'label' => esc_html__( 'Archive Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'All Posts', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'layout',
			[
				'label' => esc_html__( 'Layout', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-h-align-left',
					],
					'above' => [
						'title' => esc_html__( 'Above', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-h-align-right',
					],
				],
				'separator' => 'before',
				'prefix_class' => 'elementor-author-box--layout-image-',
			]
		);

		$this->add_control(
			'alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'prefix_class' => 'elementor-author-box--align-',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_image_style',
			[
				'label' => esc_html__( 'Image', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'image_vertical_align',
			[
				'label' => esc_html__( 'Vertical Align', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'top' => [
						'title' => esc_html__( 'Top', 'elementor-pro' ),
						'icon' => 'eicon-v-align-top',
					],
					'middle' => [
						'title' => esc_html__( 'Middle', 'elementor-pro' ),
						'icon' => 'eicon-v-align-middle',
					],
				],
				'prefix_class' => 'elementor-author-box--image-valign-',
				'condition' => [
					'layout!' => 'above',
				],
			]
		);

		$this->add_responsive_control(
			'image_size',
			[
				'label' => esc_html__( 'Image Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 200,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-author-box__avatar img' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'image_gap',
			[
				'label' => esc_html__( 'Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'body.rtl {{WRAPPER}}.elementor-author-box--layout-image-left .elementor-author-box__avatar,
					 body:not(.rtl) {{WRAPPER}}:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar' => 'margin-right: {{SIZE}}{{UNIT}}; margin-left: 0;',

					'body:not(.rtl) {{WRAPPER}}.elementor-author-box--layout-image-right .elementor-author-box__avatar,
					 body.rtl {{WRAPPER}}:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar' => 'margin-left: {{SIZE}}{{UNIT}}; margin-right:0;',

					'{{WRAPPER}}.elementor-author-box--layout-image-above .elementor-author-box__avatar' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'image_border',
			[
				'label' => esc_html__( 'Border', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'selectors' => [
					'{{WRAPPER}} .elementor-author-box__avatar img' => 'border-style: solid',
				],
			]
		);

		$this->add_control(
			'image_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#000',
				'selectors' => [
					'{{WRAPPER}} .elementor-author-box__avatar img' => 'border-color: {{VALUE}}',
				],
				'condition' => [
					'image_border' => 'yes',
				],
			]
		);

		$this->add_responsive_control(
			'image_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 20,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-author-box__avatar img' => 'border-width: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'image_border' => 'yes',
				],
			]
		);

		$this->add_control(
			'image_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-author-box__avatar img' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'input_box_shadow',
				'selector' => '{{WRAPPER}} .elementor-author-box__avatar img',
				'fields_options' => [
					'box_shadow_type' => [
						'separator' => 'default',
					],
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_text_style',
			[
				'label' => esc_html__( 'Text', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'heading_name_style',
			[
				'label' => esc_html__( 'Name', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'name_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-author-box__name' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'name_typography',
				'selector' => '{{WRAPPER}} .elementor-author-box__name',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
			]
		);

		$this->add_responsive_control(
			'name_gap',
			[
				'label' => esc_html__( 'Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-author-box__name' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'heading_bio_style',
			[
				'label' => esc_html__( 'Biography', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'bio_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-author-box__bio' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'bio_typography',
				'selector' => '{{WRAPPER}} .elementor-author-box__bio',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->add_responsive_control(
			'bio_gap',
			[
				'label' => esc_html__( 'Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-author-box__bio' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_button',
			[
				'label' => 'Button',
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->start_controls_tabs( 'tabs_button_style' );

		$this->start_controls_tab(
			'tab_button_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-author-box__button' => 'color: {{VALUE}}; border-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'button_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-author-box__button' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'button_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
				'selector' => '{{WRAPPER}} .elementor-author-box__button',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_button_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_hover_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-author-box__button:hover' => 'border-color: {{VALUE}}; color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'button_background_hover_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-author-box__button:hover' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'button_hover_animation',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::HOVER_ANIMATION,
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'button_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 20,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-author-box__button' => 'border-width: {{SIZE}}{{UNIT}};',
				],
				'separator' => 'before',
				'condition' => [
					'link_text!' => '',
				],
			]
		);

		$this->add_control(
			'button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-author-box__button' => 'border-radius: {{SIZE}}{{UNIT}};',
				],
				'separator' => 'after',
				'condition' => [
					'link_text!' => '',
				],
			]
		);

		$this->add_control(
			'button_text_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-author-box__button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'separator' => 'before',
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		$settings = $this->get_active_settings();
		$author = [];
		$link_tag = 'div';
		$link_url = '';
		$link_target = '';
		$author_name_tag = Utils::validate_html_tag( $settings['author_name_tag'] );

		$custom_src = ( 'custom' === $settings['source'] );

		if ( 'current' === $settings['source'] ) {

			$avatar_args['size'] = 300;

			$user_id = get_the_author_meta( 'ID' );
			$author['avatar'] = get_avatar_url( $user_id, $avatar_args );
			$author['display_name'] = get_the_author_meta( 'display_name' );
			$author['website'] = get_the_author_meta( 'user_url' );
			$author['bio'] = get_the_author_meta( 'description' );
			$author['posts_url'] = get_author_posts_url( $user_id );

		} elseif ( $custom_src ) {

			if ( ! empty( $settings['author_avatar']['url'] ) ) {
				$avatar_src = $settings['author_avatar']['url'];

				if ( $settings['author_avatar']['id'] ) {
					$attachment_image_src = wp_get_attachment_image_src( $settings['author_avatar']['id'], 'medium' );

					if ( ! empty( $attachment_image_src[0] ) ) {
						$avatar_src = $attachment_image_src[0];
					}
				}

				$author['avatar'] = $avatar_src;
			}

			$author['display_name'] = $settings['author_name'];
			$author['website'] = $settings['author_website']['url'];
			$author['bio'] = wpautop( $settings['author_bio'] );
			$author['posts_url'] = $settings['posts_url']['url'];
		}

		$print_avatar = ( ( ! $custom_src && 'yes' === $settings['show_avatar'] ) || ( $custom_src && ! empty( $author['avatar'] ) ) );
		$print_name = ( ( ! $custom_src && 'yes' === $settings['show_name'] ) || ( $custom_src && ! empty( $author['display_name'] ) ) );
		$print_bio = ( ( ! $custom_src && 'yes' === $settings['show_biography'] ) || ( $custom_src && ! empty( $author['bio'] ) ) );
		$print_link = ( ( ! $custom_src && 'yes' === $settings['show_link'] ) && ! empty( $settings['link_text'] ) || ( $custom_src && ! empty( $author['posts_url'] ) && ! empty( $settings['link_text'] ) ) );

		if ( ! empty( $settings['link_to'] ) || $custom_src ) {
			if ( ( $custom_src || 'website' === $settings['link_to'] ) && ! empty( $author['website'] ) ) {
				$link_tag = 'a';
				$link_url = $author['website'];

				if ( $custom_src ) {
					$link_target = $settings['author_website']['is_external'] ? '_blank' : '';
				} else {
					$link_target = '_blank';
				}
			} elseif ( 'posts_archive' === $settings['link_to'] && ! empty( $author['posts_url'] ) ) {
				$link_tag = 'a';
				$link_url = $author['posts_url'];
			}

			if ( ! empty( $link_url ) ) {
				$this->add_render_attribute( 'author_link', 'href', $link_url );

				if ( ! empty( $link_target ) ) {
					$this->add_render_attribute( 'author_link', 'target', $link_target );
				}
			}
		}

		$this->add_render_attribute(
			'button',
			'class', [
				'elementor-author-box__button',
				'elementor-button',
				'elementor-size-xs',
			]
		);

		if ( $print_link ) {
			$this->add_render_attribute( 'button', 'href', $author['posts_url'] );
		}

		if ( $print_link && ! empty( $settings['button_hover_animation'] ) ) {
			$this->add_render_attribute(
				'button',
				'class',
				'elementor-animation-' . $settings['button_hover_animation']
			);
		}

		if ( $print_avatar ) {
			$this->add_render_attribute( 'avatar', 'src', $author['avatar'] );

			if ( ! empty( $author['display_name'] ) ) {
				$this->add_render_attribute( 'avatar', 'alt', $author['display_name'] );
			}
		}

		?>
		<div class="elementor-author-box">
			<?php if ( $print_avatar ) { ?>
				<<?php Utils::print_validated_html_tag( $link_tag ); ?> <?php $this->print_render_attribute_string( 'author_link' ); ?> class="elementor-author-box__avatar">
					<img <?php $this->print_render_attribute_string( 'avatar' ); ?>>
				</<?php Utils::print_validated_html_tag( $link_tag ); ?>>
			<?php } ?>

			<div class="elementor-author-box__text">
				<?php if ( $print_name ) : ?>
					<<?php Utils::print_validated_html_tag( $link_tag ); ?> <?php $this->print_render_attribute_string( 'author_link' ); ?>>
						<<?php Utils::print_validated_html_tag( $author_name_tag ); ?> class="elementor-author-box__name">
							<?php Utils::print_unescaped_internal_string( $author['display_name'] ); ?>
						</<?php Utils::print_validated_html_tag( $author_name_tag ); ?>>
					</<?php Utils::print_validated_html_tag( $link_tag ); ?>>
				<?php endif; ?>

				<?php if ( $print_bio ) : ?>
					<div class="elementor-author-box__bio">
						<?php Utils::print_unescaped_internal_string( $author['bio'] ); ?>
					</div>
				<?php endif; ?>

				<?php if ( $print_link ) : ?>
					<a <?php $this->print_render_attribute_string( 'button' ); ?>>
						<?php $this->print_unescaped_setting( 'link_text' ); ?>
					</a>
				<?php endif; ?>
			</div>
		</div>
		<?php
	}
}
modules/theme-elements/module.php000064400000001274150755004310013132 0ustar00<?php
namespace ElementorPro\Modules\ThemeElements;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	const SOURCE_TYPE_CURRENT_POST = 'current_post';
	const SOURCE_TYPE_CUSTOM = 'custom';

	public function get_name() {
		return 'theme-elements';
	}

	public function get_widgets() {
		$widgets = [
			'Search_Form',
			'Author_Box',
			'Post_Comments',
			'Post_Navigation',
			'Post_Info',
			'Sitemap',
		];

		if ( $this->is_yoast_seo_active() ) {
			$widgets[] = 'Breadcrumbs';
		}

		return $widgets;
	}

	public function is_yoast_seo_active() {
		return function_exists( 'yoast_breadcrumb' );
	}
}
modules/forms/module.php000064400000013411150755004310011340 0ustar00<?php
namespace ElementorPro\Modules\Forms;

use ElementorPro\Modules\Forms\Data\Controller;
use Elementor\Core\Experiments\Manager;
use Elementor\Core\Common\Modules\Ajax\Module as Ajax;
use ElementorPro\Base\Module_Base;
use ElementorPro\Modules\Forms\Actions;
use ElementorPro\Modules\Forms\Classes;
use ElementorPro\Modules\Forms\Controls\Fields_Map;
use ElementorPro\Modules\Forms\Registrars\Form_Actions_Registrar;
use ElementorPro\Modules\Forms\Registrars\Form_Fields_Registrar;
use ElementorPro\Modules\Forms\Submissions\Component as Form_Submissions_Component;
use ElementorPro\Modules\Forms\Controls\Fields_Repeater;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Module extends Module_Base {
	/**
	 * @var Form_Actions_Registrar
	 */
	public $actions_registrar;

	/**
	 * @var Form_Fields_Registrar
	 */
	public $fields_registrar;

	public function get_name() {
		return 'forms';
	}

	public function get_widgets() {
		return [
			'Form',
			'Login',
		];
	}

	public function localize_settings( $settings ) {
		$settings = array_replace_recursive( $settings, [
			'i18n' => [
				'x_field' => esc_html__( '%s Field', 'elementor-pro' ),
			],
		] );

		return $settings;
	}

	public static function find_element_recursive( $elements, $form_id ) {
		foreach ( $elements as $element ) {
			if ( $form_id === $element['id'] ) {
				return $element;
			}

			if ( ! empty( $element['elements'] ) ) {
				$element = self::find_element_recursive( $element['elements'], $form_id );

				if ( $element ) {
					return $element;
				}
			}
		}

		return false;
	}

	public function register_controls() {
		$controls_manager = Plugin::elementor()->controls_manager;

		$controls_manager->register_control( Fields_Repeater::CONTROL_TYPE, new Fields_Repeater() );
		$controls_manager->register_control( Fields_Map::CONTROL_TYPE, new Fields_Map() );
	}

	/**
	 * @param array $data
	 *
	 * @return array
	 * @throws \Exception
	 */
	public function forms_panel_action_data( array $data ) {
		if ( empty( $data['service'] ) ) {
			throw new \Exception( 'service_required' );
		}

		/** @var \ElementorPro\Modules\Forms\Classes\Integration_Base $integration */
		$integration = $this->actions_registrar->get( $data['service'] );

		if ( ! $integration ) {
			throw new \Exception( 'action_not_found' );
		}

		return $integration->handle_panel_request( $data );
	}

	/**
	 * @deprecated 3.5.0 - Use `fields_registrar->register()`.
	 */
	public function add_form_field_type( $type, $instance ) {
		Plugin::elementor()->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function(
			__METHOD__,
			'3.5.0',
			'fields_registrar->register()'
		);

		$this->fields_registrar->register( $instance, $type );
	}

	/**
	 * @deprecated 3.5.0 - Use `actions_registrar->register()`.
	 */
	public function add_form_action( $id, $instance ) {
		Plugin::elementor()->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function(
			__METHOD__,
			'3.5.0',
			'actions_registrar->register()'
		);

		$this->actions_registrar->register( $instance, $id );
	}

	/**
	 * @deprecated 3.5.0 - Use `actions_registrar->get()`.
	 */
	public function get_form_actions( $id = null ) {
		Plugin::elementor()->modules_manager->get_modules( 'dev-tools' )->deprecation->deprecated_function(
			__METHOD__,
			'3.5.0',
			'actions_registrar->get()'
		);

		return $this->actions_registrar->get( $id );
	}

	public function register_ajax_actions( Ajax $ajax ) {
		$ajax->register_ajax_action( 'pro_forms_panel_action_data', [ $this, 'forms_panel_action_data' ] );
	}

	/**
	 * Register submissions
	 */
	private function register_submissions_component() {
		$experiments_manager = Plugin::elementor()->experiments;
		$name = Form_Submissions_Component::NAME;

		$experiments_manager->add_feature( [
			'name' => $name,
			'title' => esc_html__( 'Form Submissions', 'elementor-pro' ),
			'description' => esc_html__( 'Never lose another submission! Using “Actions After Submit” you can now choose to save all submissions to an internal database.', 'elementor-pro' ),
			'release_status' => Manager::RELEASE_STATUS_STABLE,
			'default' => Manager::STATE_ACTIVE,
		] );

		if ( ! $experiments_manager->is_feature_active( $name ) ) {
			return;
		}

		$this->add_component( $name, new Form_Submissions_Component() );
	}

	/**
	 * Module constructor.
	 */
	public function __construct() {
		parent::__construct();

		add_filter( 'elementor_pro/editor/localize_settings', [ $this, 'localize_settings' ] );
		add_action( 'elementor/controls/controls_registered', [ $this, 'register_controls' ] );
		add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ] );

		$this->add_component( 'recaptcha', new Classes\Recaptcha_Handler() );
		$this->add_component( 'recaptcha_v3', new Classes\Recaptcha_V3_Handler() );
		$this->add_component( 'honeypot', new Classes\Honeypot_Handler() );

		$this->register_submissions_component();

		// Initialize registrars.
		$this->actions_registrar = new Form_Actions_Registrar();
		$this->fields_registrar = new Form_Fields_Registrar();

		// Add Actions as components, that runs manually in the Ajax_Handler

		// Activity Log
		if ( function_exists( 'aal_insert_log' ) ) {
			$this->add_component( 'activity_log', new Actions\Activity_Log() );
		}

		// Contact Form to Database
		if ( function_exists( 'CF7DBPlugin_init' ) ) {
			$this->add_component( 'cf7db', new Actions\CF7DB() );
		}

		// Ajax Handler
		if ( Classes\Ajax_Handler::is_form_submitted() ) {
			$this->add_component( 'ajax_handler', new Classes\Ajax_Handler() );

			/**
			 * Elementor form submitted.
			 *
			 * Fires when the form is submitted.
			 *
			 * @since 2.0.0
			 *
			 * @param Module $this An instance of the form module.
			 */
			do_action( 'elementor_pro/forms/form_submitted', $this );
		}
	}
}
modules/forms/fields/acceptance.php000064400000004554150755004310013417 0ustar00<?php
namespace ElementorPro\Modules\Forms\Fields;

use Elementor\Controls_Manager;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Acceptance extends Field_Base {

	public function get_type() {
		return 'acceptance';
	}

	public function get_name() {
		return esc_html__( 'Acceptance', 'elementor-pro' );
	}

	public function update_controls( $widget ) {
		$elementor = Plugin::elementor();

		$control_data = $elementor->controls_manager->get_control_from_stack( $widget->get_unique_name(), 'form_fields' );

		if ( is_wp_error( $control_data ) ) {
			return;
		}

		$field_controls = [
			'acceptance_text' => [
				'name' => 'acceptance_text',
				'label' => esc_html__( 'Acceptance Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'condition' => [
					'field_type' => $this->get_type(),
				],
				'tab' => 'content',
				'inner_tab' => 'form_fields_content_tab',
				'tabs_wrapper' => 'form_fields_tabs',
			],
			'checked_by_default' => [
				'name' => 'checked_by_default',
				'label' => esc_html__( 'Checked by Default', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'condition' => [
					'field_type' => $this->get_type(),
				],
				'tab' => 'content',
				'inner_tab' => 'form_fields_content_tab',
				'tabs_wrapper' => 'form_fields_tabs',
			],
		];

		$control_data['fields'] = $this->inject_field_controls( $control_data['fields'], $field_controls );
		$widget->update_control( 'form_fields', $control_data );
	}

	public function render( $item, $item_index, $form ) {
		$label = '';
		$form->add_render_attribute( 'input' . $item_index, 'class', 'elementor-acceptance-field' );
		$form->add_render_attribute( 'input' . $item_index, 'type', 'checkbox', true );

		if ( ! empty( $item['acceptance_text'] ) ) {
			$label = '<label for="' . $form->get_attribute_id( $item ) . '">' . $item['acceptance_text'] . '</label>';
		}

		if ( ! empty( $item['checked_by_default'] ) ) {
			$form->add_render_attribute( 'input' . $item_index, 'checked', 'checked' );
		}

		?>
		<div class="elementor-field-subgroup">
			<span class="elementor-field-option">
				<input <?php $form->print_render_attribute_string( 'input' . $item_index ); ?>>
				<?php // PHPCS - the variables $label is safe.
				echo $label; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
			</span>
		</div>
		<?php
	}
}
modules/forms/fields/field-base.php000064400000005420150755004310013315 0ustar00<?php
namespace ElementorPro\Modules\Forms\Fields;

use ElementorPro\Modules\Forms\Classes;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Field_Base {
	public $depended_scripts = [];
	public $depended_styles = [];

	abstract public function get_type();

	abstract public function get_name();

	/**
	 * Get the field ID.
	 *
	 * TODO: Make it an abstract function that will replace `get_type()`.
	 *
	 * @since 3.5.0
	 *
	 * @return string
	 */
	public function get_id() {
		return $this->get_type();
	}

	abstract public function render( $item, $item_index, $form );

	public function validation( $field, Classes\Form_Record $record, Classes\Ajax_Handler $ajax_handler ) {}

	public function process_field( $field, Classes\Form_Record $record, Classes\Ajax_Handler $ajax_handler ) {}

	public function add_assets_depends( $form ) {
		foreach ( $this->depended_scripts as $script ) {
			$form->add_script_depends( $script );
		}

		foreach ( $this->depended_styles as $style ) {
			$form->add_style_depends( $style );
		}
	}

	public function add_preview_depends() {
		foreach ( $this->depended_scripts as $script ) {
			wp_enqueue_script( $script );
		}

		foreach ( $this->depended_styles as $style ) {
			wp_enqueue_style( $style );
		}
	}

	public function add_field_type( $field_types ) {
		if ( ! in_array( $this->get_type(), $field_types ) ) {
			$field_types[ $this->get_type() ] = $this->get_name();
		}

		return $field_types;
	}

	public function field_render( $item, $item_index, $form ) {
		$this->add_assets_depends( $form );
		$this->render( $item, $item_index, $form );
	}

	public function sanitize_field( $value, $field ) {
		return sanitize_text_field( $value );
	}

	public function inject_field_controls( $array, $controls_to_inject ) {
		$keys = array_keys( $array );
		$key_index = array_search( 'required', $keys ) + 1;

		return array_merge( array_slice( $array, 0, $key_index, true ),
			$controls_to_inject,
			array_slice( $array, $key_index, null, true )
		);
	}

	public function __construct() {
		$field_type = $this->get_type();
		add_action( "elementor_pro/forms/render_field/{$field_type}", [ $this, 'field_render' ], 10, 3 );
		add_action( "elementor_pro/forms/validation/{$field_type}", [ $this, 'validation' ], 10, 3 );
		add_action( "elementor_pro/forms/process/{$field_type}", [ $this, 'process_field' ], 10, 3 );
		add_filter( 'elementor_pro/forms/field_types', [ $this, 'add_field_type' ] );
		add_filter( "elementor_pro/forms/sanitize/{$field_type}", [ $this, 'sanitize_field' ], 10, 2 );
		add_action( 'elementor/preview/enqueue_scripts', [ $this, 'add_preview_depends' ] );
		if ( method_exists( $this, 'update_controls' ) ) {
			add_action( 'elementor/element/form/section_form_fields/before_section_end', [ $this, 'update_controls' ] );
		}
	}
}
modules/forms/fields/upload.php000064400000033666150755004310012623 0ustar00<?php
namespace ElementorPro\Modules\Forms\Fields;

use Elementor\Widget_Base;
use ElementorPro\Modules\Forms\Classes;
use Elementor\Controls_Manager;
use ElementorPro\Modules\Forms\Widgets\Form;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Upload extends Field_Base {

	private $fixed_files_indices = false;

	public function get_type() {
		return 'upload';
	}

	public function get_name() {
		return esc_html__( 'File Upload', 'elementor-pro' );
	}

	/**
	 * @param Widget_Base $widget
	 */
	public function update_controls( $widget ) {
		$elementor = Plugin::elementor();

		$control_data = $elementor->controls_manager->get_control_from_stack( $widget->get_unique_name(), 'form_fields' );

		if ( is_wp_error( $control_data ) ) {
			return;
		}

		$field_controls = [
			'file_sizes' => [
				'name' => 'file_sizes',
				'label' => esc_html__( 'Max. File Size', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'condition' => [
					'field_type' => $this->get_type(),
				],
				'options' => $this->get_upload_file_size_options(),
				'description' => esc_html__( 'If you need to increase max upload size please contact your hosting.', 'elementor-pro' ),
				'tab' => 'content',
				'inner_tab' => 'form_fields_content_tab',
				'tabs_wrapper' => 'form_fields_tabs',
			],
			'file_types' => [
				'name' => 'file_types',
				'label' => esc_html__( 'Allowed File Types', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'condition' => [
					'field_type' => $this->get_type(),
				],
				'description' => esc_html__( 'Enter the allowed file types, separated by a comma (jpg, gif, pdf, etc).', 'elementor-pro' ),
				'tab' => 'content',
				'inner_tab' => 'form_fields_content_tab',
				'tabs_wrapper' => 'form_fields_tabs',
			],
			'allow_multiple_upload' => [
				'name' => 'allow_multiple_upload',
				'label' => esc_html__( 'Multiple Files', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'condition' => [
					'field_type' => $this->get_type(),
				],
				'tab' => 'content',
				'inner_tab' => 'form_fields_content_tab',
				'tabs_wrapper' => 'form_fields_tabs',
			],
			'max_files' => [
				'name' => 'max_files',
				'label' => esc_html__( 'Max. Files', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'condition' => [
					'field_type' => $this->get_type(),
					'allow_multiple_upload' => 'yes',
				],
				'tab' => 'content',
				'inner_tab' => 'form_fields_content_tab',
				'tabs_wrapper' => 'form_fields_tabs',
			],
		];

		$control_data['fields'] = $this->inject_field_controls( $control_data['fields'], $field_controls );
		$widget->update_control( 'form_fields', $control_data );
	}

	/**
	 * @param      $item
	 * @param      $item_index
	 * @param Form $form
	 */
	public function render( $item, $item_index, $form ) {
		$form->add_render_attribute( 'input' . $item_index, 'class', 'elementor-upload-field' );
		$form->add_render_attribute( 'input' . $item_index, 'type', 'file', true );

		if ( ! empty( $item['allow_multiple_upload'] ) ) {
			$form->add_render_attribute( 'input' . $item_index, 'multiple', 'multiple' );
			$form->add_render_attribute( 'input' . $item_index, 'name', $form->get_attribute_name( $item ) . '[]', true );
		}

		if ( ! empty( $item['file_sizes'] ) ) {
			$form->add_render_attribute(
				'input' . $item_index,
				[
					'data-maxsize' => $item['file_sizes'],  //MB
					'data-maxsize-message' => esc_html__( 'This file exceeds the maximum allowed size.', 'elementor-pro' ),
				]
			);
		}
		?>
		<input <?php $form->print_render_attribute_string( 'input' . $item_index ); ?>>

		<?php
	}

	/**
	 * Fix multiple files upload indices in global $_FILES array
	 */
	private function fix_file_indices() {
		if ( $this->fixed_files_indices ) {
			return;
		}
		// a mapping of $_FILES indices for validity checking
		$names = [
			'name',
			'type',
			'tmp_name',
			'error',
			'size',
		];
		$files = $_FILES['form_fields'];
		// iterate over each uploaded file
		foreach ( $files as $key => $part ) {
			$key = (string) $key;
			if ( in_array( $key, $names ) && is_array( $part ) ) {
				foreach ( $part as $position => $value ) {
					if ( is_array( $value ) ) {
						foreach ( $value as $index => $inner_val ) {
							$files[ $position ][ $index ][ $key ] = $inner_val;
						}
					} else {
						$files[ $position ][0][ $key ] = $value;
					}
				}
				// remove old key reference
				unset( $files[ $key ] );
			}
		}
		$_FILES['form_fields'] = $files;
		$this->fixed_files_indices = true;
	}

	/**
	 * validate uploaded file size against allowed file size
	 *
	 * @param array $field
	 * @param       $file
	 *
	 * @return bool
	 */
	private function is_file_size_valid( $field, $file ) {
		$allowed_size = ( ! empty( $field['file_sizes'] ) ) ? $field['file_sizes'] : wp_max_upload_size() / pow( 1024, 2 );
		// File size validation
		$file_size_meta = $allowed_size * pow( 1024, 2 );
		$upload_file_size = $file['size'];

		return ( $upload_file_size < $file_size_meta );
	}

	/**
	 * validates uploaded file type against allowed file types
	 *
	 * @param array $field
	 * @param       $file
	 *
	 * @return bool
	 */
	private function is_file_type_valid( $field, $file ) {
		// File type validation
		if ( empty( $field['file_types'] ) ) {
			$field['file_types'] = 'jpg,jpeg,png,gif,pdf,doc,docx,ppt,pptx,odt,avi,ogg,m4a,mov,mp3,mp4,mpg,wav,wmv';
		}

		$file_extension = pathinfo( $file['name'], PATHINFO_EXTENSION );
		$file_types_meta = explode( ',', $field['file_types'] );
		$file_types_meta = array_map( 'trim', $file_types_meta );

		$file_types_meta = array_map( 'strtolower', $file_types_meta );
		$file_extension = strtolower( $file_extension );

		return ( in_array( $file_extension, $file_types_meta ) && ! in_array( $file_extension, $this->get_blacklist_file_ext() ) );
	}

	/**
	 * a set of black listed file extensions
	 *
	 * @return array
	 */
	private function get_blacklist_file_ext() {
		static $blacklist = false;
		if ( ! $blacklist ) {
			$blacklist = [ 'php', 'php3', 'php4', 'php5', 'php6', 'phps', 'php7', 'phtml', 'shtml', 'pht', 'swf', 'html', 'asp', 'aspx', 'cmd', 'csh', 'bat', 'htm', 'hta', 'jar', 'exe', 'com', 'js', 'lnk', 'htaccess', 'htpasswd', 'phtml', 'ps1', 'ps2', 'py', 'rb', 'tmp', 'cgi' ];

			/**
			 * Forms file types black list.
			 *
			 * Filters the black list of  file types that won’t be uploaded using the forms.
			 *
			 * @since 1.0.0
			 *
			 * @param array $blacklist A black list of file types.
			 */
			$blacklist = apply_filters( 'elementor_pro/forms/filetypes/blacklist', $blacklist );
		}

		return $blacklist;
	}

	/**
	 * validate uploaded file field
	 *
	 * @param array                $field
	 * @param Classes\Form_Record  $record
	 * @param Classes\Ajax_Handler $ajax_handler
	 */
	public function validation( $field, Classes\Form_Record $record, Classes\Ajax_Handler $ajax_handler ) {
		static $upload_errors = false;

		if ( ! $upload_errors ) {
			$upload_errors = [
				UPLOAD_ERR_OK => esc_html__( 'There is no error, the file uploaded with success.', 'elementor-pro' ),
				/* translators: 1: upload_max_filesize, 2: php.ini */
				UPLOAD_ERR_INI_SIZE => sprintf( esc_html__( 'The uploaded file exceeds the %1$s directive in %2$s.', 'elementor-pro' ), 'upload_max_filesize', 'php.ini' ),
				/* translators: %s: MAX_FILE_SIZE */
				UPLOAD_ERR_FORM_SIZE => sprintf( esc_html__( 'The uploaded file exceeds the %s directive that was specified in the HTML form.', 'elementor-pro' ), 'MAX_FILE_SIZE' ),
				UPLOAD_ERR_PARTIAL => esc_html__( 'The uploaded file was only partially uploaded.', 'elementor-pro' ),
				UPLOAD_ERR_NO_FILE => esc_html__( 'No file was uploaded.', 'elementor-pro' ),
				UPLOAD_ERR_NO_TMP_DIR => esc_html__( 'Missing a temporary folder.', 'elementor-pro' ),
				UPLOAD_ERR_CANT_WRITE => esc_html__( 'Failed to write file to disk.', 'elementor-pro' ),
				/* translators: %s: phpinfo() */
				UPLOAD_ERR_EXTENSION => sprintf( esc_html__( 'A PHP extension stopped the file upload. PHP does not provide a way to ascertain which extension caused the file upload to stop; examining the list of loaded extensions with %s may help.', 'elementor-pro' ), 'phpinfo()' ),
			];
			$this->fix_file_indices();
		}

		$id = $field['id'];

		if ( ! empty( $field['max_files'] ) ) {
			if ( count( $_FILES['form_fields'][ $id ] ) > $field['max_files'] ) {
				$error_message = sprintf(
					/* translators: %d: The number of allowed files. */
					_n( 'You can upload only %d file.', 'You can upload up to %d files.', intval( $field['max_files'] ), 'elementor-pro' ),
					intval( $field['max_files'] )
				);
				$ajax_handler->add_error( $id, $error_message );

				return;
			}
		}

		foreach ( $_FILES['form_fields'][ $id ] as $index => $file ) {
			// not uploaded
			if ( ! $field['required'] && UPLOAD_ERR_NO_FILE === $file['error'] ) {
				return;
			}

			// is the file required and missing?
			if ( $field['required'] && UPLOAD_ERR_NO_FILE === $file['error'] ) {
				$ajax_handler->add_error( $id, $upload_errors[ $file['error'] ] );

				return;
			}

			// Has any error with upload the file?
			if ( $file['error'] > UPLOAD_ERR_OK ) {
				$ajax_handler->add_error( $id, $upload_errors[ $file['error'] ] );

				return;
			}

			// valid file type?
			if ( ! $this->is_file_type_valid( $field, $file ) ) {
				$ajax_handler->add_error( $id, esc_html__( 'This file type is not allowed.', 'elementor-pro' ) );
			}

			// allowed file size?
			if ( ! $this->is_file_size_valid( $field, $file ) ) {
				$ajax_handler->add_error( $id, esc_html__( 'This file exceeds the maximum allowed size.', 'elementor-pro' ) );
			}
		}
	}

	/**
	 * Gets the path to uploaded file.
	 *
	 * @return string
	 */
	private function get_upload_dir() {
		$wp_upload_dir = wp_upload_dir();
		$path = $wp_upload_dir['basedir'] . '/elementor/forms';

		/**
		 * Upload file path.
		 *
		 * Filters the path to a file uploaded using Elementor forms.
		 *
		 * @since 1.0.0
		 *
		 * @param string $url File URL.
		 */
		$path = apply_filters( 'elementor_pro/forms/upload_path', $path );

		return $path;
	}

	/**
	 * Gets the URL to uploaded file.
	 *
	 * @param $file_name
	 *
	 * @return string
	 */
	private function get_file_url( $file_name ) {
		$wp_upload_dir = wp_upload_dir();
		$url = $wp_upload_dir['baseurl'] . '/elementor/forms/' . $file_name;

		/**
		 * Upload file URL.
		 *
		 * Filters the URL to a file uploaded using Elementor forms.
		 *
		 * @since 1.0.0
		 *
		 * @param string $url       File URL.
		 * @param string $file_name File name.
		 */
		$url = apply_filters( 'elementor_pro/forms/upload_url', $url, $file_name );

		return $url;
	}

	/**
	 * This function returns the uploads folder after making sure
	 * it is created and has protection files
	 * @return string
	 */
	private function get_ensure_upload_dir() {
		$path = $this->get_upload_dir();
		if ( file_exists( $path . '/index.php' ) ) {
			return $path;
		}

		wp_mkdir_p( $path );

		$files = [
			[
				'file' => 'index.php',
				'content' => [
					'<?php',
					'// Silence is golden.',
				],
			],
			[
				'file' => '.htaccess',
				'content' => [
					'Options -Indexes',
					'<ifModule mod_headers.c>',
					'	<Files *.*>',
					'       Header set Content-Disposition attachment',
					'	</Files>',
					'</IfModule>',
				],
			],
		];

		foreach ( $files as $file ) {
			if ( ! file_exists( trailingslashit( $path ) . $file['file'] ) ) {
				$content = implode( PHP_EOL, $file['content'] );
				@ file_put_contents( trailingslashit( $path ) . $file['file'], $content );
			}
		}

		return $path;
	}

	/**
	 * creates array of upload sizes based on server limits
	 * to use in the file_sizes control
	 * @return array
	 */
	private function get_upload_file_size_options() {
		$max_file_size = wp_max_upload_size() / pow( 1024, 2 ); //MB

		$sizes = [];

		for ( $file_size = 1; $file_size <= $max_file_size; $file_size++ ) {
			$sizes[ $file_size ] = $file_size . 'MB';
		}

		return $sizes;
	}

	/**
	 * process file and move it to uploads directory
	 *
	 * @param array                $field
	 * @param Classes\Form_Record  $record
	 * @param Classes\Ajax_Handler $ajax_handler
	 */
	public function process_field( $field, Classes\Form_Record $record, Classes\Ajax_Handler $ajax_handler ) {
		$id = $field['id'];
		foreach ( $_FILES['form_fields'][ $id ] as $index => $file ) {
			if ( UPLOAD_ERR_NO_FILE === $file['error'] ) {
				continue;
			}
			$uploads_dir = $this->get_ensure_upload_dir();
			$file_extension = pathinfo( $file['name'], PATHINFO_EXTENSION );
			$filename = uniqid() . '.' . $file_extension;
			$filename = wp_unique_filename( $uploads_dir, $filename );
			$new_file = trailingslashit( $uploads_dir ) . $filename;
			if ( is_dir( $uploads_dir ) && is_writable( $uploads_dir ) ) {
				$move_new_file = @ move_uploaded_file( $file['tmp_name'], $new_file );
				if ( false !== $move_new_file ) {
					// Set correct file permissions.
					$perms = 0644;
					@ chmod( $new_file, $perms );
					$record->add_file( $id, $index,
						[
							'path' => $new_file,
							'url' => $this->get_file_url( $filename ),
						]
					);
				} else {
					$ajax_handler->add_error( $id, esc_html__( 'There was an error while trying to upload your file.', 'elementor-pro' ) );
				}
			} else {
				$ajax_handler->add_admin_error_message( esc_html__( 'Upload directory is not writable or does not exist.', 'elementor-pro' ) );
			}
		}
	}

	/**
	 * Used to set the upload filed values with
	 * value => file url
	 * raw_value => file path
	 *
	 * @param Classes\Form_Record  $record
	 * @param Classes\Ajax_Handler $ajax_handler
	 */
	public function set_file_fields_values( Classes\Form_Record $record, Classes\Ajax_Handler $ajax_handler ) {
		$files = $record->get( 'files' );
		if ( empty( $files ) ) {
			return;
		}
		foreach ( $files as $id => $files_array ) {
			$record->update_field( $id, 'value', implode( ' , ', $files_array['url'] ) );
			$record->update_field( $id, 'raw_value', implode( ' , ', $files_array['path'] ) );
		}
	}

	public function __construct() {
		parent::__construct();
		add_action( 'elementor_pro/forms/process', [ $this, 'set_file_fields_values' ], 10, 2 );
	}
}
modules/forms/fields/tel.php000064400000002270150755004310012106 0ustar00<?php
namespace ElementorPro\Modules\Forms\Fields;

use ElementorPro\Modules\Forms\Classes;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Tel extends Field_Base {

	public function get_type() {
		return 'tel';
	}

	public function get_name() {
		return esc_html__( 'Tel', 'elementor-pro' );
	}

	public function render( $item, $item_index, $form ) {
		$form->add_render_attribute( 'input' . $item_index, 'class', 'elementor-field-textual' );
		$form->add_render_attribute( 'input' . $item_index, 'pattern', '[0-9()#&+*-=.]+' );
		$form->add_render_attribute( 'input' . $item_index, 'title', esc_html__( 'Only numbers and phone characters (#, -, *, etc) are accepted.', 'elementor-pro' ) );
		?>
		<input size="1" <?php $form->print_render_attribute_string( 'input' . $item_index ); ?>>

		<?php
	}

	public function validation( $field, Classes\Form_Record $record, Classes\Ajax_Handler $ajax_handler ) {
		if ( empty( $field['value'] ) ) {
			return;
		}
		if ( preg_match( '/^[0-9()#&+*-=.]+$/', $field['value'] ) !== 1 ) {
			$ajax_handler->add_error( $field['id'], esc_html__( 'Only numbers and phone characters (#, -, *, etc) are accepted.', 'elementor-pro' ) );
		}
	}
}
modules/forms/fields/time.php000064400000005066150755004310012266 0ustar00<?php
namespace ElementorPro\Modules\Forms\Fields;

use ElementorPro\Modules\Forms\Classes;
use Elementor\Controls_Manager;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Time extends Field_Base {

	public $depended_scripts = [
		'flatpickr',
	];

	public $depended_styles = [
		'flatpickr',
	];

	public function get_type() {
		return 'time';
	}

	public function get_name() {
		return esc_html__( 'Time', 'elementor-pro' );
	}

	public function update_controls( $widget ) {
		$elementor = Plugin::elementor();

		$control_data = $elementor->controls_manager->get_control_from_stack( $widget->get_unique_name(), 'form_fields' );

		if ( is_wp_error( $control_data ) ) {
			return;
		}

		$field_controls = [
			'use_native_time' => [
				'name' => 'use_native_time',
				'label' => esc_html__( 'Native HTML5', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'condition' => [
					'field_type' => $this->get_type(),
				],
				'tab' => 'content',
				'inner_tab' => 'form_fields_content_tab',
				'tabs_wrapper' => 'form_fields_tabs',
			],
		];

		foreach ( $control_data['fields'] as $index => $field ) {
			if ( 'placeholder' !== $field['name'] ) {
				continue;
			}
			foreach ( $field['conditions']['terms'] as $condition_index => $terms ) {
				if ( ! isset( $terms['name'] ) || 'field_type' !== $terms['name'] || ! isset( $terms['operator'] ) || 'in' !== $terms['operator'] ) {
					continue;
				}
				$control_data['fields'][ $index ]['conditions']['terms'][ $condition_index ]['value'][] = $this->get_type();
				break;
			}
			break;
		}

		$control_data['fields'] = $this->inject_field_controls( $control_data['fields'], $field_controls );

		$widget->update_control( 'form_fields', $control_data );
	}

	public function render( $item, $item_index, $form ) {
		$form->add_render_attribute( 'input' . $item_index, 'class', 'elementor-field-textual elementor-time-field' );
		if ( isset( $item['use_native_time'] ) && 'yes' === $item['use_native_time'] ) {
			$form->add_render_attribute( 'input' . $item_index, 'class', 'elementor-use-native' );
		}
		?>
		<input <?php $form->print_render_attribute_string( 'input' . $item_index ); ?>>
		<?php
	}

	public function validation( $field, Classes\Form_Record $record, Classes\Ajax_Handler $ajax_handler ) {
		if ( empty( $field['value'] ) ) {
			return;
		}

		if ( preg_match( '/^(([0-1][0-9])|(2[0-3])):[0-5][0-9]$/', $field['value'] ) !== 1 ) {
			$ajax_handler->add_error( $field['id'], esc_html__( 'Invalid Time, Time should be in HH:MM format!', 'elementor-pro' ) );
		}
	}
}
modules/forms/fields/number.php000064400000005352150755004310012616 0ustar00<?php
namespace ElementorPro\Modules\Forms\Fields;

use Elementor\Widget_Base;
use ElementorPro\Modules\Forms\Classes;
use Elementor\Controls_Manager;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Number extends Field_Base {

	public function get_type() {
		return 'number';
	}

	public function get_name() {
		return esc_html__( 'Number', 'elementor-pro' );
	}

	public function render( $item, $item_index, $form ) {
		$form->add_render_attribute( 'input' . $item_index, 'class', 'elementor-field-textual' );

		if ( isset( $item['field_min'] ) ) {
			$form->add_render_attribute( 'input' . $item_index, 'min', esc_attr( $item['field_min'] ) );
		}
		if ( isset( $item['field_max'] ) ) {
			$form->add_render_attribute( 'input' . $item_index, 'max', esc_attr( $item['field_max'] ) );
		}

		?>
			<input <?php $form->print_render_attribute_string( 'input' . $item_index ); ?> >
		<?php
	}

	/**
	 * @param Widget_Base $widget
	 */
	public function update_controls( $widget ) {
		$elementor = Plugin::elementor();

		$control_data = $elementor->controls_manager->get_control_from_stack( $widget->get_unique_name(), 'form_fields' );

		if ( is_wp_error( $control_data ) ) {
			return;
		}

		$field_controls = [
			'field_min' => [
				'name' => 'field_min',
				'label' => esc_html__( 'Min. Value', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'condition' => [
					'field_type' => $this->get_type(),
				],
				'tab' => 'content',
				'inner_tab' => 'form_fields_content_tab',
				'tabs_wrapper' => 'form_fields_tabs',
			],
			'field_max' => [
				'name' => 'field_max',
				'label' => esc_html__( 'Max. Value', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'condition' => [
					'field_type' => $this->get_type(),
				],
				'tab' => 'content',
				'inner_tab' => 'form_fields_content_tab',
				'tabs_wrapper' => 'form_fields_tabs',
			],
		];

		$control_data['fields'] = $this->inject_field_controls( $control_data['fields'], $field_controls );
		$widget->update_control( 'form_fields', $control_data );
	}

	public function validation( $field, Classes\Form_Record $record, Classes\Ajax_Handler $ajax_handler ) {

		if ( ! empty( $field['field_max'] ) && $field['field_max'] < (int) $field['value'] ) {
			$ajax_handler->add_error( $field['id'], sprintf( esc_html__( 'The value must be less than or equal to %s', 'elementor-pro' ), $field['field_max'] ) );
		}

		if ( ! empty( $field['field_min'] ) && $field['field_min'] > (int) $field['value'] ) {
			$ajax_handler->add_error( $field['id'], sprintf( esc_html__( 'The value must be greater than or equal %s', 'elementor-pro' ), $field['field_min'] ) );
		}
	}

	public function sanitize_field( $value, $field ) {
		return intval( $value );
	}
}
modules/forms/fields/date.php000064400000006527150755004310012250 0ustar00<?php
namespace ElementorPro\Modules\Forms\Fields;

use Elementor\Controls_Manager;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Date extends Field_Base {
	public $depended_scripts = [
		'flatpickr',
	];

	public $depended_styles = [
		'flatpickr',
	];

	public function get_type() {
		return 'date';
	}

	public function get_name() {
		return esc_html__( 'Date', 'elementor-pro' );
	}

	public function render( $item, $item_index, $form ) {
		$form->add_render_attribute( 'input' . $item_index, 'class', 'elementor-field-textual elementor-date-field' );
		$form->add_render_attribute( 'input' . $item_index, 'pattern', '[0-9]{4}-[0-9]{2}-[0-9]{2}' );
		if ( isset( $item['use_native_date'] ) && 'yes' === $item['use_native_date'] ) {
			$form->add_render_attribute( 'input' . $item_index, 'class', 'elementor-use-native' );
		}

		if ( ! empty( $item['min_date'] ) ) {
			$form->add_render_attribute( 'input' . $item_index, 'min', esc_attr( $item['min_date'] ) );
		}

		if ( ! empty( $item['max_date'] ) ) {
			$form->add_render_attribute( 'input' . $item_index, 'max', esc_attr( $item['max_date'] ) );
		}
		?>

		<input <?php $form->print_render_attribute_string( 'input' . $item_index ); ?>>
		<?php
	}

	public function update_controls( $widget ) {
		$elementor = Plugin::elementor();

		$control_data = $elementor->controls_manager->get_control_from_stack( $widget->get_unique_name(), 'form_fields' );

		if ( is_wp_error( $control_data ) ) {
			return;
		}

		$field_controls = [
			'min_date' => [
				'name' => 'min_date',
				'label' => esc_html__( 'Min. Date', 'elementor-pro' ),
				'type' => Controls_Manager::DATE_TIME,
				'condition' => [
					'field_type' => $this->get_type(),
				],
				'label_block' => false,
				'picker_options' => [
					'enableTime' => false,
				],
				'tab' => 'content',
				'inner_tab' => 'form_fields_content_tab',
				'tabs_wrapper' => 'form_fields_tabs',
			],
			'max_date' => [
				'name' => 'max_date',
				'label' => esc_html__( 'Max. Date', 'elementor-pro' ),
				'type' => Controls_Manager::DATE_TIME,
				'condition' => [
					'field_type' => $this->get_type(),
				],
				'label_block' => false,
				'picker_options' => [
					'enableTime' => false,
				],
				'tab' => 'content',
				'inner_tab' => 'form_fields_content_tab',
				'tabs_wrapper' => 'form_fields_tabs',
			],
			'use_native_date' => [
				'name' => 'use_native_date',
				'label' => esc_html__( 'Native HTML5', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'condition' => [
					'field_type' => $this->get_type(),
				],
				'tab' => 'content',
				'inner_tab' => 'form_fields_content_tab',
				'tabs_wrapper' => 'form_fields_tabs',
			],
		];

		foreach ( $control_data['fields'] as $index => $field ) {
			if ( 'placeholder' !== $field['name'] ) {
				continue;
			}
			foreach ( $field['conditions']['terms'] as $condition_index => $terms ) {
				if ( ! isset( $terms['name'] ) || 'field_type' !== $terms['name'] || ! isset( $terms['operator'] ) || 'in' !== $terms['operator'] ) {
					continue;
				}
				$control_data['fields'][ $index ]['conditions']['terms'][ $condition_index ]['value'][] = $this->get_type();
				break;
			}
			break;
		}

		$control_data['fields'] = $this->inject_field_controls( $control_data['fields'], $field_controls );
		$widget->update_control( 'form_fields', $control_data );
	}
}
modules/forms/fields/step.php000064400000006726150755004310012307 0ustar00<?php
namespace ElementorPro\Modules\Forms\Fields;

use Elementor\Icons_Manager;
use Elementor\Widget_Base;
use Elementor\Controls_Manager;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Step extends Field_Base {

	public function get_type() {
		return 'step';
	}

	public function get_name() {
		return esc_html__( 'Step', 'elementor-pro' );
	}

	public function render( $item, $item_index, $form ) {
		$font_icon = '';

		if ( Plugin::elementor()->experiments->is_feature_active( 'e_font_icon_svg' ) && $item['selected_icon']['value'] ) {
			if ( 'svg' === $item['selected_icon']['library'] ) {
				$font_icon = Icons_Manager::render_uploaded_svg_icon( $item['selected_icon']['value'] );
			} else {
				$font_icon = Icons_Manager::render_font_icon( $item['selected_icon'] );
			}
		}

		$form->add_render_attribute( 'step' . $item_index, [
			'class' => 'e-field-step elementor-hidden',
			'data-label' => $item['field_label'],
			'data-previousButton' => $item['previous_button'],
			'data-nextButton' => $item['next_button'],
			'data-iconUrl' => 'svg' === $item['selected_icon']['library'] && $item['selected_icon']['value'] ? $item['selected_icon']['value']['url'] : '',
			'data-iconLibrary' => 'svg' !== $item['selected_icon']['library'] && $item['selected_icon']['value'] ? $item['selected_icon']['value'] : '',
			'data-icon' => $font_icon,
		] );

		?>
		<div <?php $form->print_render_attribute_string( 'step' . $item_index ); ?> ></div>

		<?php
	}

	/**
	 * @param Widget_Base $widget
	 */
	public function update_controls( $widget ) {
		$elementor = Plugin::elementor();

		$control_data = $elementor->controls_manager->get_control_from_stack( $widget->get_unique_name(), 'form_fields' );

		if ( is_wp_error( $control_data ) ) {
			return;
		}

		$field_controls = [
			'previous_button' => [
				'name' => 'previous_button',
				'label' => esc_html__( 'Previous Button', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'condition' => [
					'field_type' => $this->get_type(),
				],
				'tab' => 'content',
				'inner_tab' => 'form_fields_content_tab',
				'tabs_wrapper' => 'form_fields_tabs',
			],
			'next_button' => [
				'name' => 'next_button',
				'label' => esc_html__( 'Next Button', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'condition' => [
					'field_type' => $this->get_type(),
				],
				'tab' => 'content',
				'inner_tab' => 'form_fields_content_tab',
				'tabs_wrapper' => 'form_fields_tabs',
			],
			'selected_icon' => [
				'name' => 'selected_icon',
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'fa4compatibility' => 'icon',
				'description' => esc_html__( 'Visible only if selected step type contains "Icon"', 'elementor-pro' ),
				'default' => [
					'value' => 'fas fa-star',
					'library' => 'fa-solid',
				],
				'recommended' => [
					'fa-solid' => [
						'chevron-down',
						'angle-down',
						'angle-double-down',
						'caret-down',
						'caret-square-down',
					],
					'fa-regular' => [
						'caret-square-down',
					],
				],
				'skin' => 'inline',
				'label_block' => false,
				'condition' => [
					'field_type' => $this->get_type(),
				],
				'tab' => 'content',
				'inner_tab' => 'form_fields_content_tab',
				'tabs_wrapper' => 'form_fields_tabs',
			],
		];

		$control_data['fields'] = $this->inject_field_controls( $control_data['fields'], $field_controls );
		$widget->update_control( 'form_fields', $control_data );
	}
}
modules/forms/data/controller.php000064400000000000150755004310013135 0ustar00modules/forms/classes/activecampaign-handler.php000064400000006102150755004310016075 0ustar00<?php
namespace ElementorPro\Modules\Forms\Classes;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Activecampaign_Handler {

	private $rest_client = null;

	private $api_key = '';

	public function __construct( $api_key, $base_url ) {
		if ( empty( $api_key ) ) {
			throw new \Exception( 'Invalid API key' );
		}

		if ( empty( $base_url ) ) {
			throw new \Exception( 'Invalid API key' );
		}

		$this->init_rest_client( $api_key, $base_url );

		if ( ! $this->is_valid_api_key() ) {
			throw new \Exception( 'Invalid API key or URL' );
		}
	}

	private function init_rest_client( $api_key, $base_url ) {
		$this->api_key = $api_key;
		$this->rest_client = new Rest_Client( trailingslashit( $base_url ) . 'admin/api.php' );
	}

	/**
	 * validate api key
	 *
	 * @return bool
	 * @throws \Exception
	 */
	private function is_valid_api_key() {
		$lists = $this->get_lists();

		if ( ! empty( $lists ) ) {
			return true;
		}

		$this->api_key = '';

		return false;
	}

	/**
	 * get ActiveCampaign lists associated with API key
	 * @return array
	 * @throws \Exception
	 */
	public function get_lists() {
		$results = $this->rest_client->get( '?api_action=list_list', [
			'api_key' => $this->api_key,
			'ids' => 'all',
			'api_output' => 'json',
		] );

		$lists = [
			'' => esc_html__( 'Select...', 'elementor-pro' ),
		];

		if ( ! empty( $results['body'] ) ) {
			foreach ( $results['body'] as $index => $list ) {
				if ( ! is_array( $list ) ) {
					continue;
				}

				$lists[ $list['id'] ] = $list['name'];
			}
		}

		$return_array = [
			'lists' => $lists,
			'fields' => $this->get_fields(),
		];

		return $return_array;
	}

	/**
	 * get ActiveCampaign custom fields associated with API key
	 * @return array
	 * @throws \Exception
	 */
	private function get_fields() {
		$results = $this->rest_client->get( '?api_action=list_field_view', [
			'api_key' => $this->api_key,
			'ids' => 'all',
			'api_output' => 'json',
		] );

		$fields = [];

		if ( ! empty( $results['body'] ) ) {
			foreach ( $results['body'] as $index => $field ) {
				if ( ! is_array( $field ) ) {
					continue;
				}
				$fields[] = [
					'remote_label' => $field['title'],
					'remote_type' => $this->normalize_type( $field['type'] ),
					'remote_id' => 'field[' . $field['id'] . ',0]',
					'remote_required' => (bool) $field['isrequired'],
				];
			}
		}

		return $fields;
	}

	private function normalize_type( $type ) {
		static $types = [
			'text' => 'text',
			'number' => 'number',
			'address' => 'text',
			'phone' => 'text',
			'date' => 'text',
			'url' => 'url',
			'imageurl' => 'url',
			'radio' => 'radio',
			'dropdown' => 'select',
			'birthday' => 'text',
			'zip' => 'text',
		];

		return $types[ $type ];
	}

	/**
	 * create contact at Activecampaign via api
	 *
	 * @param array $subscriber_data
	 *
	 * @return array|mixed
	 * @throws \Exception
	 */
	public function create_subscriber( $subscriber_data = [] ) {
		$end_point = '?api_action=contact_sync&api_key=' . $this->api_key . '&api_output=json';

		return $this->rest_client->request( 'POST', $end_point, $subscriber_data );
	}
}
modules/forms/classes/honeypot-handler.php000064400000005323150755004310014773 0ustar00<?php
namespace ElementorPro\Modules\Forms\Classes;

use Elementor\Widget_Base;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Honeypot field
 */
class Honeypot_Handler {

	public function add_field_type( $field_types ) {
		$field_types['honeypot'] = esc_html__( 'Honeypot', 'elementor-pro' );

		return $field_types;
	}

	public function hide_label( $item, $item_index, $widget ) {
		if ( 'honeypot' === $item['field_type'] ) {
			$widget->set_render_attribute( 'field-group' . $item_index, 'class', 'elementor-field-type-text' );
			$item['field_label'] = false;
		}

		return $item;
	}

	/**
	 * @param string      $item
	 * @param integer     $item_index
	 * @param Widget_Base $widget
	 */
	public function render_field( $item, $item_index, $widget ) {
		$widget->set_render_attribute( 'input' . $item_index, 'type', 'text' );
		$widget->add_render_attribute( 'input' . $item_index, 'style', 'display:none !important;' );

		echo '<input size="1" ';
		$widget->print_render_attribute_string( 'input' . $item_index );
		echo '>';
	}

	/**
	 * @param Form_Record  $record
	 * @param Ajax_Handler $ajax_handler
	 */
	public function validation( $record, $ajax_handler ) {
		$fields = $record->get_field( [
			'type' => 'honeypot',
		] );

		if ( empty( $fields ) ) {
			return;
		}

		$field = current( $fields );

		if ( ! empty( $field['value'] ) ) {
			$ajax_handler->add_error( $field['id'], esc_html__( 'Invalid Form.', 'elementor-pro' ) );
		}

		// If success - remove the field form list (don't send it in emails and etc )
		$record->remove_field( $field['id'] );
	}

	public function update_controls( Widget_Base $widget ) {
		$elementor = Plugin::elementor();

		$control_data = $elementor->controls_manager->get_control_from_stack( $widget->get_unique_name(), 'form_fields' );

		if ( is_wp_error( $control_data ) ) {
			return;
		}

		foreach ( $control_data['fields'] as $index => $field ) {
			if ( 'required' === $field['name'] || 'width' === $field['name'] ) {
				$control_data['fields'][ $index ]['conditions']['terms'][] = [
					'name' => 'field_type',
					'operator' => '!in',
					'value' => [
						'honeypot',
					],
				];
			}
		}

		$widget->update_control( 'form_fields', $control_data );
	}

	public function __construct() {
		add_filter( 'elementor_pro/forms/field_types', [ $this, 'add_field_type' ] );
		add_action( 'elementor_pro/forms/render/item', [ $this, 'hide_label' ], 10, 3 );
		add_action( 'elementor_pro/forms/render_field/honeypot', [ $this, 'render_field' ], 10, 3 );
		add_action( 'elementor_pro/forms/validation', [ $this, 'validation' ], 10, 2 );
		add_action( 'elementor/element/form/section_form_fields/before_section_end', [ $this, 'update_controls' ] );
	}
}
modules/forms/classes/action-base.php000064400000001454150755004310013701 0ustar00<?php
namespace ElementorPro\Modules\Forms\Classes;

use ElementorPro\Modules\Forms\Widgets\Form;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

abstract class Action_Base {

	abstract public function get_name();

	abstract public function get_label();

	/**
	 * Get the action ID.
	 *
	 * TODO: Make it an abstract function that will replace `get_name()`.
	 *
	 * @since 3.5.0
	 *
	 * @return string
	 */
	public function get_id() {
		return $this->get_name();
	}

	/**
	 * @param Form_Record  $record
	 * @param Ajax_Handler $ajax_handler
	 */
	abstract public function run( $record, $ajax_handler );

	/**
	 * @param Form $form
	 */
	abstract public function register_settings_section( $form );

	/**
	 * @param array $element
	 */
	abstract public function on_export( $element );
}
modules/forms/classes/form-record.php000064400000022116150755004310013731 0ustar00<?php
namespace ElementorPro\Modules\Forms\Classes;

use ElementorPro\Core\Utils;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Form_Record {
	protected $sent_data;
	protected $fields;
	protected $form_type;
	protected $form_settings;
	protected $files = [];
	protected $meta = [];

	public function get_formatted_data( $with_meta = false ) {
		$formatted = [];
		$no_label = esc_html__( 'No Label', 'elementor-pro' );
		$fields = $this->fields;

		if ( $with_meta ) {
			$fields = array_merge( $fields, $this->meta );
		}

		foreach ( $fields as $key => $field ) {
			if ( empty( $field['title'] ) ) {
				$formatted[ $no_label . ' ' . $key ] = $field['value'];
			} else {
				$formatted[ $field['title'] ] = $field['value'];
			}
		}

		return $formatted;
	}

	/**
	 * @param Ajax_Handler $ajax_handler An instance of the ajax handler.
	 *
	 * @return bool
	 */
	public function validate( $ajax_handler ) {
		foreach ( $this->fields as $id => $field ) {
			$field_type = $field['type'];
			if ( ! empty( $field['required'] ) && '' === $field['value'] && 'upload' !== $field_type ) {
				$ajax_handler->add_error( $id, Ajax_Handler::get_default_message( Ajax_Handler::FIELD_REQUIRED, $this->form_settings ) );
			}

			/**
			 * Elementor form field validation.
			 *
			 * Fires when a single form field is being validated.
			 *
			 * It allows developers to validate individual field types.
			 *
			 * The dynamic portion of the hook name, `$field_type`, refers to the field type.
			 *
			 * @since 2.0.0
			 *
			 * @param array        $field        Form field.
			 * @param Form_Record  $this         An instance of the form record.
			 * @param Ajax_Handler $ajax_handler An instance of the ajax handler.
			 */
			do_action( "elementor_pro/forms/validation/{$field_type}", $field, $this, $ajax_handler );
		}

		/**
		 * Elementor form validation.
		 *
		 * Fires when form fields are being validated.
		 *
		 * @since 2.0.0
		 *
		 * @param Form_Record  $this         An instance of the form record.
		 * @param Ajax_Handler $ajax_handler An instance of the ajax handler.
		 */
		do_action( 'elementor_pro/forms/validation', $this, $ajax_handler );

		return empty( $ajax_handler->errors );
	}

	/**
	 * @param Ajax_Handler $ajax_handler An instance of the ajax handler.
	 *
	 */
	public function process_fields( $ajax_handler ) {
		foreach ( $this->fields as $id => $field ) {
			$field_type = $field['type'];

			/**
			 * Elementor form field process.
			 *
			 * Fires when a single form field is being processed.
			 *
			 * It allows developers to process individual field types.
			 *
			 * The dynamic portion of the hook name, `$field_type`, refers to the field type.
			 *
			 * @since 2.0.0
			 *
			 * @param array        $field        Form field.
			 * @param Form_Record  $this         An instance of the form record.
			 * @param Ajax_Handler $ajax_handler An instance of the ajax handler.
			 */
			do_action( "elementor_pro/forms/process/{$field_type}", $field, $this, $ajax_handler );
		}

		/**
		 * Elementor form process.
		 *
		 * Fires when form fields are being processed.
		 *
		 * @since 2.0.0
		 *
		 * @param Form_Record  $this         An instance of the form record.
		 * @param Ajax_Handler $ajax_handler An instance of the ajax handler.
		 */
		do_action( 'elementor_pro/forms/process', $this, $ajax_handler );
	}

	public function get( $property ) {
		if ( isset( $this->{$property} ) ) {
			return $this->{$property};
		}

		return null;
	}

	public function set( $property, $value ) {
		$this->{$property} = $value;
	}

	public function get_form_settings( $setting ) {
		if ( isset( $this->form_settings[ $setting ] ) ) {
			return $this->form_settings[ $setting ];
		}

		return null;
	}

	public function get_field( $args ) {
		return wp_list_filter( $this->fields, $args );
	}

	public function remove_field( $id ) {
		unset( $this->fields[ $id ] );
	}

	public function update_field( $field_id, $property, $value ) {
		if ( ! isset( $this->fields[ $field_id ] ) || ! isset( $this->fields[ $field_id ][ $property ] ) ) {
			return;
		}
		$this->fields[ $field_id ][ $property ] = $value;
	}

	public function get_form_meta( $meta_keys = [] ) {
		$result = [];

		foreach ( $meta_keys as $metadata_type ) {
			switch ( $metadata_type ) {
				case 'date':
					$result['date'] = [
						'title' => esc_html__( 'Date', 'elementor-pro' ),
						'value' => date_i18n( get_option( 'date_format' ) ),
					];
					break;

				case 'time':
					$result['time'] = [
						'title' => esc_html__( 'Time', 'elementor-pro' ),
						'value' => date_i18n( get_option( 'time_format' ) ),
					];
					break;

				case 'page_url':
					$result['page_url'] = [
						'title' => esc_html__( 'Page URL', 'elementor-pro' ),
						'value' => esc_url_raw( $_POST['referrer'] ), // phpcs:ignore WordPress.Security.NonceVerification.Missing
					];
					break;

				case 'page_title':
					$result['page_title'] = [
						'title' => esc_html__( 'Page Title', 'elementor-pro' ),
						'value' => sanitize_text_field( $_POST['referer_title'] ), // phpcs:ignore WordPress.Security.NonceVerification.Missing
					];
					break;

				case 'user_agent':
					$result['user_agent'] = [
						'title' => esc_html__( 'User Agent', 'elementor-pro' ),
						'value' => sanitize_textarea_field( $_SERVER['HTTP_USER_AGENT'] ),
					];
					break;

				case 'remote_ip':
					$result['remote_ip'] = [
						'title' => esc_html__( 'Remote IP', 'elementor-pro' ),
						'value' => Utils::get_client_ip(),
					];
					break;
				case 'credit':
					$result['credit'] = [
						'title' => esc_html__( 'Powered by', 'elementor-pro' ),
						'value' => esc_html__( 'Elementor', 'elementor-pro' ),
					];
					break;
			}
		}

		return $result;
	}

	private function set_meta() {
		$form_metadata = $this->form_settings['form_metadata'];

		if ( empty( $form_metadata ) ) {
			return;
		}

		$this->meta = $this->get_form_meta( $form_metadata );
	}

	private function set_fields() {
		foreach ( $this->form_settings['form_fields'] as $form_field ) {
			$field = [
				'id' => $form_field['custom_id'],
				'type' => $form_field['field_type'],
				'title' => $form_field['field_label'],
				'value' => '',
				'raw_value' => '',
				'required' => ! empty( $form_field['required'] ),
			];

			if ( 'upload' === $field['type'] ) {
				$field['file_sizes'] = isset( $form_field['file_sizes'] ) ? $form_field['file_sizes'] : '';
				$field['file_types'] = isset( $form_field['file_types'] ) ? $form_field['file_types'] : '';
				$field['max_files'] = isset( $form_field['max_files'] ) ? $form_field['max_files'] : '';
			}

			if ( isset( $this->sent_data[ $form_field['custom_id'] ] ) ) {
				$field['raw_value'] = $this->sent_data[ $form_field['custom_id'] ];

				$value = $field['raw_value'];

				if ( is_array( $value ) ) {
					$value = implode( ', ', $value );
				}

				$field['value'] = $this->sanitize_field( $field, $value );
			}
			$this->fields[ $form_field['custom_id'] ] = $field;
		}
	}

	private function sanitize_field( $field, $value ) {
		$field_type = $field['type'];
		switch ( $field_type ) {
			case 'text':
			case 'password':
			case 'hidden':
			case 'search':
			case 'checkbox':
			case 'radio':
			case 'select':
				$value = sanitize_text_field( $value );
				break;
			case 'url':
				$value = esc_url_raw( $value );
				break;
			case 'textarea':
				$value = sanitize_textarea_field( $value );
				break;
			case 'email':
				$value = sanitize_email( $value );
				break;
			default:
				/**
				 * Sanitize field value.
				 *
				 * Filters the value of the form field for sanitization purpose.
				 *
				 * The dynamic portion of the hook name, `$field_type`, refers to the field type.
				 *
				 * @since 1.0.0
				 *
				 * @param string $value The field value.
				 * @param array  $field The field array.
				 */
				$value = apply_filters( "elementor_pro/forms/sanitize/{$field_type}", $value, $field );
		}

		return $value;
	}

	public function replace_setting_shortcodes( $setting, $urlencode = false ) {
		// Shortcode can be `[field id="fds21fd"]` or `[field title="Email" id="fds21fd"]`, multiple shortcodes are allowed
		return preg_replace_callback( '/(\[field[^]]*id="(\w+)"[^]]*\])/', function( $matches ) use ( $urlencode ) {
			$value = '';

			if ( isset( $this->fields[ $matches[2] ] ) ) {
				$value = $this->fields[ $matches[2] ]['value'];
			}

			if ( $urlencode ) {
				$value = urlencode( $value );
			}
			return $value;
		}, $setting );
	}

	public function add_file( $id, $index, $filename ) {
		if ( ! isset( $this->files[ $id ] ) || ! is_array( $this->files[ $id ] ) ) {
			$this->files[ $id ] = [
				'url' => [],
				'path' => [],
			];
		}
		$this->files[ $id ]['url'][ $index ] = $filename['url'];
		$this->files[ $id ]['path'][ $index ] = $filename['path'];
	}

	public function has_field_type( $type ) {
		foreach ( $this->fields as $id => $field ) {
			if ( $type === $field['field_type'] ) {
				return true;
			}
		}

		return false;
	}

	public function __construct( $sent_data, $form ) {
		$this->form_type = $form['widgetType'];
		$this->form_settings = $form['settings'];
		$this->sent_data = stripslashes_deep( $sent_data );

		$this->set_fields();
		$this->set_meta();
	}
}
modules/forms/classes/recaptcha-v3-handler.php000064400000011064150755004310015405 0ustar00<?php
namespace ElementorPro\Modules\Forms\Classes;

use Elementor\Settings;
use Elementor\Widget_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Integration with Google reCAPTCHA
 */
class Recaptcha_V3_Handler extends Recaptcha_Handler {

	const OPTION_NAME_V3_SITE_KEY = 'elementor_pro_recaptcha_v3_site_key';
	const OPTION_NAME_V3_SECRET_KEY = 'elementor_pro_recaptcha_v3_secret_key';
	const OPTION_NAME_RECAPTCHA_THRESHOLD = 'elementor_pro_recaptcha_v3_threshold';
	const V3 = 'v3';
	const V3_DEFAULT_THRESHOLD = 0.5;
	const V3_DEFAULT_ACTION = 'Form';

	protected static function get_recaptcha_name() {
		return 'recaptcha_v3';
	}

	public static function get_site_key() {
		return get_option( self::OPTION_NAME_V3_SITE_KEY );
	}

	public static function get_secret_key() {
		return get_option( self::OPTION_NAME_V3_SECRET_KEY );
	}

	public static function get_recaptcha_type() {
		return self::V3;
	}

	public static function get_recaptcha_threshold() {
		$threshold = get_option( self::OPTION_NAME_RECAPTCHA_THRESHOLD, self::V3_DEFAULT_THRESHOLD );
		if ( 0 > $threshold || 1 < $threshold ) {
			return self::V3_DEFAULT_THRESHOLD;
		}
		return $threshold;
	}

	public static function is_enabled() {
		return static::get_site_key() && static::get_secret_key();
	}

	public static function get_setup_message() {
		return esc_html__( 'To use reCAPTCHA V3, you need to add the API Key and complete the setup process in Dashboard > Elementor > Settings > Integrations > reCAPTCHA V3.', 'elementor-pro' );
	}

	public function register_admin_fields( Settings $settings ) {
		$settings->add_section( Settings::TAB_INTEGRATIONS, 'recaptcha_v3', [
			'label' => esc_html__( 'reCAPTCHA V3', 'elementor-pro' ),
			'callback' => function() {
				echo sprintf(
					/* translators: 1: Link open tag, 2: Link closing tag. */
					esc_html__( '%1$sreCAPTCHA V3%2$s is a free service by Google that protects your website from spam and abuse. It does this while letting your valid users pass through with ease.', 'elementor-pro' ),
					'<a href="https://www.google.com/recaptcha/intro/v3.html" target="_blank">',
					'</a>'
				);
			},
			'fields' => [
				'pro_recaptcha_v3_site_key' => [
					'label' => esc_html__( 'Site Key', 'elementor-pro' ),
					'field_args' => [
						'type' => 'text',
					],
				],
				'pro_recaptcha_v3_secret_key' => [
					'label' => esc_html__( 'Secret Key', 'elementor-pro' ),
					'field_args' => [
						'type' => 'text',
					],
				],
				'pro_recaptcha_v3_threshold' => [
					'label' => esc_html__( 'Score Threshold', 'elementor-pro' ),
					'field_args' => [
						'attributes' => [
							'min' => 0,
							'max' => 1,
							'placeholder' => '0.5',
							'step' => '0.1',
						],
						'std' => 0.5,
						'type' => 'number',
						'desc' => esc_html__( 'Score threshold should be a value between 0 and 1, default: 0.5', 'elementor-pro' ),
					],
				],
			],
		] );
	}

	/**
	 * @param $item
	 * @param $item_index
	 * @param $widget Widget_Base
	 */
	protected function add_version_specific_render_attributes( $item, $item_index, $widget ) {
		$recaptcha_name = static::get_recaptcha_name();
		$widget->add_render_attribute( $recaptcha_name . $item_index, [
			'data-action' => self::V3_DEFAULT_ACTION,
			'data-badge' => $item['recaptcha_badge'],
			'data-size' => 'invisible',
		] );
	}

	/**
	 * @param Ajax_Handler $ajax_handler
	 * @param $field
	 * @param $message
	 */
	protected function add_error( $ajax_handler, $field, $message ) {
		parent::add_error( $ajax_handler, $field, $message );
		$ajax_handler->add_error_message( esc_html__( 'reCAPTCHA V3 validation failed, suspected as abusive usage', 'elementor-pro' ) );
	}

	protected function validate_result( $result, $field ) {
		$action = self::V3_DEFAULT_ACTION;
		$action_ok = ! isset( $result['action'] ) ? true : $action === $result['action'];
		return $action_ok && ( $result['score'] > self::get_recaptcha_threshold() );
	}

	public function add_field_type( $field_types ) {
		$field_types['recaptcha_v3'] = esc_html__( 'reCAPTCHA V3', 'elementor-pro' );

		return $field_types;
	}

	/**
	 * @param $item
	 * @param $item_index
	 * @param Widget_Base $widget
	 *
	 * @return $item
	 */
	public function filter_recaptcha_item( $item, $item_index, $widget ) {
		$widget->add_render_attribute( 'field-group' . $item_index, 'class', [
			self::get_recaptcha_name() . '-' . $item['recaptcha_badge'],
		] );

		return $item;
	}

	public function __construct() {
		parent::__construct();
		add_filter( 'elementor_pro/forms/render/item/' . self::get_recaptcha_name(), [ $this, 'filter_recaptcha_item' ], 10, 3 );
	}
}
modules/forms/classes/integration-base.php000064400000004671150755004310014753 0ustar00<?php
namespace ElementorPro\Modules\Forms\Classes;

use Elementor\Controls_Manager;
use Elementor\Repeater;
use Elementor\Settings;
use ElementorPro\Modules\Forms\Controls\Fields_Map;
use ElementorPro\Modules\Forms\Widgets\Form;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

abstract class Integration_Base extends Action_Base {

	public function handle_panel_request( array $data ) {}

	public static function global_api_control( $widget, $api_key = '', $label = '', $condition = [], $id = '' ) {
		if ( empty( $api_key ) ) {
			$html = sprintf(
				/* translators: 1: Integration label, 2: Link open tag, 3: Link closing tag. */
				esc_html__( 'Set your %1$s in the %2$sIntegrations Settings%3$s.', 'elementor-pro' ),
				$label,
				sprintf( '<a href="%s" target="_blank">', Settings::get_url() . '#tab-integrations' ),
				'</a>'
			);
			$content_classes = 'elementor-panel-alert elementor-panel-alert-warning';
		} else {
			$html = sprintf(
				/* translators: 1: Integration label, 2: Link open tag, 3: Link closing tag. */
				esc_html__( 'You are using %1$s set in the %2$sIntegrations Settings%3$s.', 'elementor-pro' ),
				$label,
				sprintf( '<a href="%s" target="_blank">', Settings::get_url() . '#tab-integrations' ),
				'</a>'
			);
			$content_classes = 'elementor-panel-alert elementor-panel-alert-info';
		}

		/* translators: %s: Integration label */
		$html .= ' ' . sprintf( esc_html__( 'You can also set a different %s by choosing "Custom".', 'elementor-pro' ), $label );

		$widget->add_control(
			$id . '_api_key_msg',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => $html,
				'content_classes' => $content_classes,
				'condition' => $condition,
			]
		);
	}

	protected function get_fields_map_control_options() {
		return [];
	}

	final protected function register_fields_map_control( Form $form ) {
		$repeater = new Repeater();

		$repeater->add_control( 'remote_id', [ 'type' => Controls_Manager::HIDDEN ] );

		$repeater->add_control( 'local_id', [ 'type' => Controls_Manager::SELECT ] );

		$fields_map_control_options = [
			'label' => esc_html__( 'Field Mapping', 'elementor-pro' ),
			'type' => Fields_Map::CONTROL_TYPE,
			'separator' => 'before',
			'fields' => $repeater->get_controls(),
		];

		$fields_map_control_options = array_merge( $fields_map_control_options, $this->get_fields_map_control_options() );

		$form->add_control( $this->get_name() . '_fields_map', $fields_map_control_options );
	}
}
modules/forms/classes/convertkit-handler.php000064400000005155150755004310015321 0ustar00<?php
namespace ElementorPro\Modules\Forms\Classes;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Convertkit_Handler {
	/*
	 * @var Rest_Client
	 */
	private $rest_client = null;
	private $api_key = '';

	/**
	 * Convertkit_Handler constructor.
	 *
	 * @param $api_key
	 *
	 * @throws \Exception
	 */
	public function __construct( $api_key ) {
		if ( empty( $api_key ) ) {
			throw new \Exception( 'Invalid API Key' );
		}

		$this->init_rest_client( $api_key );

		if ( ! $this->is_valid_api_key() ) {
			throw new \Exception( 'Invalid API Key' );
		}
	}

	private function init_rest_client( $api_key ) {
		$this->api_key = $api_key;
		$this->rest_client = new Rest_Client( 'https://api.convertkit.com/v3/' );
	}

	/**
	 * validate api key
	 *
	 * @return bool
	 * @throws \Exception
	 */
	private function is_valid_api_key() {
		$forms = $this->get_forms();
		if ( ! empty( $forms ) ) {
			return true;
		}
		$this->api_key = '';

		return false;
	}

	public function get_forms_and_tags() {
		$forms = $this->get_forms();
		$tags = $this->get_tags();

		return [
			'data' => [
				'forms' => $forms['forms'],
				'tags' => $tags['tags'],
			],
		];
	}

	/**
	 * get GetResponse lists associated with API key
	 * @return array
	 * @throws \Exception
	 */
	public function get_forms() {
		$results = $this->rest_client->get( 'forms/?api_key=' . $this->api_key );

		$forms = [
			'' => esc_html__( 'Select...', 'elementor-pro' ),
		];

		if ( ! empty( $results['body']['forms'] ) ) {
			foreach ( $results['body']['forms'] as $index => $form ) {
				if ( ! is_array( $form ) ) {
					continue;
				}
				$forms[ $form['id'] ] = $form['name'];
			}
		}

		$return_array = [
			'forms' => $forms,
		];

		return $return_array;
	}

	public function get_tags() {
		$results = $this->rest_client->get( 'tags/?api_key=' . $this->api_key );

		$tags = [
			'' => esc_html__( 'Select...', 'elementor-pro' ),
		];

		if ( ! empty( $results['body']['tags'] ) ) {
			foreach ( $results['body']['tags'] as $index => $tag ) {
				if ( ! is_array( $tag ) ) {
					continue;
				}
				$tags[ $tag['id'] ] = $tag['name'];
			}
		}

		$return_array = [
			'tags' => $tags,
		];

		return $return_array;
	}

	/**
	 * create contact at ConvertKit via api
	 *
	 * @param array $subscriber_data
	 *
	 * @return array|mixed
	 * @throws \Exception
	 */
	public function create_subscriber( $form_id, $subscriber_data = [] ) {
		$endpoint = sprintf( 'forms/' . $form_id . '/subscribe?api_key=%s', $this->api_key );
		$this->rest_client->add_headers( 'Content-Type', 'application/json' );

		return $this->rest_client->post( $endpoint, $subscriber_data );
	}
}
modules/forms/classes/getresponse-handler.php000064400000006035150755004310015465 0ustar00<?php
namespace ElementorPro\Modules\Forms\Classes;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Getresponse_Handler {
	public $rest_client = null;
	private $api_key = '';

	public function __construct( $api_key ) {
		if ( empty( $api_key ) ) {
			throw new \Exception( 'Invalid API key' );
		}

		$this->init_rest_client( $api_key );

		if ( ! $this->is_valid_api_key() ) {
			throw new \Exception( 'Invalid API key' );
		}
	}

	private function init_rest_client( $api_key ) {
		$this->api_key = $api_key;
		$this->rest_client = new Rest_Client( 'https://api.getresponse.com/v3/' );
		$this->rest_client->add_headers( [
			'X-Auth-Token' => 'api-key ' . $api_key,
			'Content-Type' => 'application/json',
		] );
	}

	/**
	 * validate api key
	 *
	 * @return bool
	 * @throws \Exception
	 */
	private function is_valid_api_key() {
		$lists = $this->get_lists();
		if ( ! empty( $lists ) ) {
			return true;
		}
		$this->api_key = '';

		return false;
	}

	/**
	 * get GetResponse lists associated with API key
	 * @return array
	 * @throws \Exception
	 */
	public function get_lists() {
		$results = $this->rest_client->get( 'campaigns' );

		$lists = [
			'' => esc_html__( 'Select...', 'elementor-pro' ),
		];

		if ( ! empty( $results['body'] ) ) {
			foreach ( $results['body'] as $index => $list ) {
				if ( ! is_array( $list ) ) {
					continue;
				}
				$lists[ $list['campaignId'] ] = $list['name'];
			}
		}

		$return_array = [
			'lists' => $lists,
		];

		return $return_array;
	}

	public function get_fields() {
		$results = $this->rest_client->get( 'custom-fields' );

		$fields = [
			[
				'remote_label' => esc_html__( 'Email', 'elementor-pro' ),
				'remote_type' => 'email',
				'remote_id' => 'email',
				'remote_required' => true,
			],
			[
				'remote_label' => esc_html__( 'Name', 'elementor-pro' ),
				'remote_type' => 'text',
				'remote_id' => 'name',
				'remote_required' => false,
			],
		];

		if ( ! empty( $results['body'] ) ) {
			foreach ( $results['body'] as $field ) {
				$fields[] = [
					'remote_label' => $field['name'],
					'remote_type' => $this->normalize_type( $field['type'] ),
					'remote_id' => $field['customFieldId'],
					'remote_required' => false,
				];
			}
		}

		$return_array = [
			'fields' => $fields,
		];

		return $return_array;
	}

	private function normalize_type( $type ) {
		static $types = [
			'text' => 'text',
			'number' => 'number',
			'address' => 'text',
			'phone' => 'text',
			'date' => 'text',
			'url' => 'url',
			'imageurl' => 'url',
			'radio' => 'radio',
			'dropdown' => 'select',
			'single_select' => 'select',
			'textarea' => 'text',
			'birthday' => 'text',
			'zip' => 'text',
			'country' => 'text',
			'gender' => 'text',
		];

		return $types[ $type ];
	}

	/**
	 * create contact at GetResponse via api
	 *
	 * @param array $subscriber_data
	 *
	 * @return array|mixed
	 * @throws \Exception
	 */
	public function create_subscriber( $subscriber_data = [] ) {
		return $this->rest_client->request( 'POST', 'contacts', wp_json_encode( $subscriber_data ), 202 );
	}
}
modules/forms/classes/form-base.php000064400000017505150755004310013373 0ustar00<?php
namespace ElementorPro\Modules\Forms\Classes;

use Elementor\Utils;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Modules\Forms\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Form_Base extends Base_Widget {

	public function on_export( $element ) {
		/** @var \ElementorPro\Modules\Forms\Classes\Action_Base[] $actions */
		$actions = Module::instance()->actions_registrar->get();

		foreach ( $actions as $action ) {
			$new_element_data = $action->on_export( $element );
			if ( null !== $new_element_data ) {
				$element = $new_element_data;
			}
		}

		return $element;
	}

	public static function get_button_sizes() {
		return [
			'xs' => esc_html__( 'Extra Small', 'elementor-pro' ),
			'sm' => esc_html__( 'Small', 'elementor-pro' ),
			'md' => esc_html__( 'Medium', 'elementor-pro' ),
			'lg' => esc_html__( 'Large', 'elementor-pro' ),
			'xl' => esc_html__( 'Extra Large', 'elementor-pro' ),
		];
	}

	protected function make_textarea_field( $item, $item_index ) {
		$this->add_render_attribute( 'textarea' . $item_index, [
			'class' => [
				'elementor-field-textual',
				'elementor-field',
				esc_attr( $item['css_classes'] ),
				'elementor-size-' . $item['input_size'],
			],
			'name' => $this->get_attribute_name( $item ),
			'id' => $this->get_attribute_id( $item ),
			'rows' => $item['rows'],
		] );

		if ( $item['placeholder'] ) {
			$this->add_render_attribute( 'textarea' . $item_index, 'placeholder', $item['placeholder'] );
		}

		if ( $item['required'] ) {
			$this->add_required_attribute( 'textarea' . $item_index );
		}

		$value = empty( $item['field_value'] ) ? '' : $item['field_value'];

		return '<textarea ' . $this->get_render_attribute_string( 'textarea' . $item_index ) . '>' . $value . '</textarea>';
	}

	protected function make_select_field( $item, $i ) {
		$this->add_render_attribute(
			[
				'select-wrapper' . $i => [
					'class' => [
						'elementor-field',
						'elementor-select-wrapper',
						esc_attr( $item['css_classes'] ),
					],
				],
				'select' . $i => [
					'name' => $this->get_attribute_name( $item ) . ( ! empty( $item['allow_multiple'] ) ? '[]' : '' ),
					'id' => $this->get_attribute_id( $item ),
					'class' => [
						'elementor-field-textual',
						'elementor-size-' . $item['input_size'],
					],
				],
			]
		);

		if ( $item['required'] ) {
			$this->add_required_attribute( 'select' . $i );
		}

		if ( $item['allow_multiple'] ) {
			$this->add_render_attribute( 'select' . $i, 'multiple' );
			if ( ! empty( $item['select_size'] ) ) {
				$this->add_render_attribute( 'select' . $i, 'size', $item['select_size'] );
			}
		}

		$options = preg_split( "/\\r\\n|\\r|\\n/", $item['field_options'] );

		if ( ! $options ) {
			return '';
		}

		ob_start();
		?>
		<div <?php $this->print_render_attribute_string( 'select-wrapper' . $i ); ?>>
			<select <?php $this->print_render_attribute_string( 'select' . $i ); ?>>
				<?php
				foreach ( $options as $key => $option ) {
					$option_id = $item['custom_id'] . $key;
					$option_value = esc_attr( $option );
					$option_label = esc_html( $option );

					if ( false !== strpos( $option, '|' ) ) {
						list( $label, $value ) = explode( '|', $option );
						$option_value = esc_attr( $value );
						$option_label = esc_html( $label );
					}

					$this->add_render_attribute( $option_id, 'value', $option_value );

					// Support multiple selected values
					if ( ! empty( $item['field_value'] ) && in_array( $option_value, explode( ',', $item['field_value'] ) ) ) {
						$this->add_render_attribute( $option_id, 'selected', 'selected' );
					} ?>
					<option <?php $this->print_render_attribute_string( $option_id ); ?>><?php
						// PHPCS - $option_label is already escaped
						echo $option_label; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></option>
				<?php } ?>
			</select>
		</div>
		<?php

		$select = ob_get_clean();
		return $select;
	}

	protected function make_radio_checkbox_field( $item, $item_index, $type ) {
		$options = preg_split( "/\\r\\n|\\r|\\n/", $item['field_options'] );
		$html = '';
		if ( $options ) {
			$html .= '<div class="elementor-field-subgroup ' . esc_attr( $item['css_classes'] ) . ' ' . $item['inline_list'] . '">';
			foreach ( $options as $key => $option ) {
				$element_id = $item['custom_id'] . $key;
				$html_id = $this->get_attribute_id( $item ) . '-' . $key;
				$option_label = $option;
				$option_value = $option;
				if ( false !== strpos( $option, '|' ) ) {
					list( $option_label, $option_value ) = explode( '|', $option );
				}

				$this->add_render_attribute(
					$element_id,
					[
						'type' => $type,
						'value' => $option_value,
						'id' => $html_id,
						'name' => $this->get_attribute_name( $item ) . ( ( 'checkbox' === $type && count( $options ) > 1 ) ? '[]' : '' ),
					]
				);

				if ( ! empty( $item['field_value'] ) && $option_value === $item['field_value'] ) {
					$this->add_render_attribute( $element_id, 'checked', 'checked' );
				}

				if ( $item['required'] && 'radio' === $type ) {
					$this->add_required_attribute( $element_id );
				}

				$html .= '<span class="elementor-field-option"><input ' . $this->get_render_attribute_string( $element_id ) . '> <label for="' . $html_id . '">' . $option_label . '</label></span>';
			}
			$html .= '</div>';
		}

		return $html;
	}

	protected function form_fields_render_attributes( $i, $instance, $item ) {
		$this->add_render_attribute(
			[
				'field-group' . $i => [
					'class' => [
						'elementor-field-type-' . $item['field_type'],
						'elementor-field-group',
						'elementor-column',
						'elementor-field-group-' . $item['custom_id'],
					],
				],
				'input' . $i => [
					'type' => $item['field_type'],
					'name' => $this->get_attribute_name( $item ),
					'id' => $this->get_attribute_id( $item ),
					'class' => [
						'elementor-field',
						'elementor-size-' . $item['input_size'],
						empty( $item['css_classes'] ) ? '' : esc_attr( $item['css_classes'] ),
					],
				],
				'label' . $i => [
					'for' => $this->get_attribute_id( $item ),
					'class' => 'elementor-field-label',
				],
			]
		);

		if ( empty( $item['width'] ) ) {
			$item['width'] = '100';
		}

		$this->add_render_attribute( 'field-group' . $i, 'class', 'elementor-col-' . $item['width'] );

		if ( ! empty( $item['width_tablet'] ) ) {
			$this->add_render_attribute( 'field-group' . $i, 'class', 'elementor-md-' . $item['width_tablet'] );
		}

		if ( $item['allow_multiple'] ) {
			$this->add_render_attribute( 'field-group' . $i, 'class', 'elementor-field-type-' . $item['field_type'] . '-multiple' );
		}

		if ( ! empty( $item['width_mobile'] ) ) {
			$this->add_render_attribute( 'field-group' . $i, 'class', 'elementor-sm-' . $item['width_mobile'] );
		}

		// Allow zero as placeholder.
		if ( ! Utils::is_empty( $item['placeholder'] ) ) {
			$this->add_render_attribute( 'input' . $i, 'placeholder', $item['placeholder'] );
		}

		if ( ! empty( $item['field_value'] ) ) {
			$this->add_render_attribute( 'input' . $i, 'value', $item['field_value'] );
		}

		if ( ! $instance['show_labels'] ) {
			$this->add_render_attribute( 'label' . $i, 'class', 'elementor-screen-only' );
		}

		if ( ! empty( $item['required'] ) ) {
			$class = 'elementor-field-required';
			if ( ! empty( $instance['mark_required'] ) ) {
				$class .= ' elementor-mark-required';
			}
			$this->add_render_attribute( 'field-group' . $i, 'class', $class );
			$this->add_required_attribute( 'input' . $i );
		}
	}

	public function render_plain_content() {}

	public function get_attribute_name( $item ) {
		return "form_fields[{$item['custom_id']}]";
	}

	public function get_attribute_id( $item ) {
		return 'form-field-' . $item['custom_id'];
	}

	private function add_required_attribute( $element ) {
		$this->add_render_attribute( $element, 'required', 'required' );
		$this->add_render_attribute( $element, 'aria-required', 'true' );
	}
}
modules/forms/classes/mailchimp-handler.php000064400000010500150755004310015062 0ustar00<?php
namespace ElementorPro\Modules\Forms\Classes;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Mailchimp_Handler {

	private $api_base_url = '';
	private $api_key = '';
	private $api_request_args = [];

	/**
	 * Mailchimp_Handler constructor.
	 *
	 * @param $api_key
	 *
	 * @throws \Exception
	 */
	public function __construct( $api_key ) {
		if ( empty( $api_key ) ) {
			throw new \Exception( 'Invalid API key' );
		}

		// The API key is in format XXXXXXXXXXXXXXXXXXXX-us2 where us2 is the server sub domain for this account
		$key_parts = explode( '-', $api_key );
		if ( empty( $key_parts[1] ) || 0 !== strpos( $key_parts[1], 'us' ) ) {
			throw new \Exception( 'Invalid API key' );
		}

		$this->api_key = $api_key;
		$this->api_base_url = 'https://' . $key_parts[1] . '.api.mailchimp.com/3.0/';
		$this->api_request_args = [
			'headers' => [
				'Authorization' => 'Basic ' . base64_encode( 'user:' . $this->api_key ),
			],
		];
	}

	public function query( $end_point ) {
		$response = wp_remote_get( $this->api_base_url . $end_point, $this->api_request_args );

		if ( is_wp_error( $response ) || 200 != (int) wp_remote_retrieve_response_code( $response ) ) {
			throw new \Exception( 'Mailchimp Error' );
		}

		$body = json_decode( wp_remote_retrieve_body( $response ), true );

		if ( ! is_array( $body ) ) {
			throw new \Exception( 'Mailchimp Error' );
		}

		return $body;
	}

	public function post( $end_point, $data, $request_args = [] ) {
		$this->api_request_args += $request_args;
		$this->api_request_args['headers']['Content-Type'] = 'application/json; charset=utf-8';
		$this->api_request_args['body'] = wp_json_encode( $data );
		$response = wp_remote_post( $this->api_base_url . $end_point, $this->api_request_args );

		if ( is_wp_error( $response ) ) {
			throw new \Exception( 'Mailchimp Error' );
		}

		$body = json_decode( wp_remote_retrieve_body( $response ), true );
		$code = (int) wp_remote_retrieve_response_code( $response );

		// Throw an exception if there is no response body.
		// NOTE: HTTP 204 doesn't have a body.
		if ( 204 !== $code && ! is_array( $body ) ) {
			throw new \Exception( 'Mailchimp Error' );
		}

		return [
			'code' => $code,
			'body' => $body,
		];
	}

	public function get_lists() {
		$results = $this->query( 'lists?count=999' );

		$lists = [
			'' => 'Select...',
		];

		if ( ! empty( $results['lists'] ) ) {
			foreach ( $results['lists'] as $list ) {
				$lists[ $list['id'] ] = $list['name'];
			}
		}

		$return_array = [
			'lists' => $lists,
		];

		return $return_array;
	}

	public function get_groups( $list_id ) {
		$results = $this->query( 'lists/' . $list_id . '/interest-categories?count=999' );
		$groups = [];

		if ( ! empty( $results['categories'] ) ) {
			foreach ( $results['categories'] as $category ) {
				$interests_results = $this->query( 'lists/' . $list_id . '/interest-categories/' . $category['id'] . '/interests?count=999' );

				foreach ( $interests_results['interests'] as $interest ) {
					$groups[ $interest['id'] ] = $category['title'] . ' - ' . $interest['name'];
				}
			}
		}

		$return_array = [
			'groups' => $groups,
		];

		return $return_array;
	}

	public function get_fields( $list_id ) {
		$results = $this->query( 'lists/' . $list_id . '/merge-fields?count=999' );

		$fields = [
			[
				'remote_label' => 'Email',
				'remote_type' => 'email',
				'remote_id' => 'email',
				'remote_required' => true,
			],
		];

		if ( ! empty( $results['merge_fields'] ) ) {
			foreach ( $results['merge_fields'] as $field ) {
				$fields[] = [
					'remote_label' => $field['name'],
					'remote_type' => $this->normalize_type( $field['type'] ),
					'remote_id' => $field['tag'],
					'remote_required' => $field['required'],
				];
			}
		}

		$return_array = [
			'fields' => $fields,
		];

		return $return_array;
	}

	public function get_list_details( $list_id ) {
		$groups = $this->get_groups( $list_id );
		$fields = $this->get_fields( $list_id );

		return [
			'list_details' => $groups + $fields,
		];
	}

	private function normalize_type( $type ) {
		static $types = [
			'text' => 'text',
			'number' => 'number',
			'address' => 'text',
			'phone' => 'text',
			'date' => 'text',
			'url' => 'url',
			'imageurl' => 'url',
			'radio' => 'radio',
			'dropdown' => 'select',
			'birthday' => 'text',
			'zip' => 'text',
		];

		return $types[ $type ];
	}
}
modules/forms/classes/recaptcha-handler.php000064400000021466150755004310015066 0ustar00<?php
namespace ElementorPro\Modules\Forms\Classes;

use Elementor\Settings;
use Elementor\Widget_Base;
use ElementorPro\Core\Utils;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Integration with Google reCAPTCHA
 */
class Recaptcha_Handler {

	const OPTION_NAME_SITE_KEY = 'elementor_pro_recaptcha_site_key';

	const OPTION_NAME_SECRET_KEY = 'elementor_pro_recaptcha_secret_key';

	const OPTION_NAME_RECAPTCHA_THRESHOLD = 'elementor_pro_recaptcha_threshold';

	const V2_CHECKBOX = 'v2_checkbox';

	protected static function get_recaptcha_name() {
		return 'recaptcha';
	}

	public static function get_site_key() {
		return get_option( self::OPTION_NAME_SITE_KEY );
	}

	public static function get_secret_key() {
		return get_option( self::OPTION_NAME_SECRET_KEY );
	}

	public static function get_recaptcha_type() {
		return self::V2_CHECKBOX;
	}

	public static function is_enabled() {
		return static::get_site_key() && static::get_secret_key();
	}

	public static function get_setup_message() {
		return esc_html__( 'To use reCAPTCHA, you need to add the API Key and complete the setup process in Dashboard > Elementor > Settings > Integrations > reCAPTCHA.', 'elementor-pro' );
	}

	public function register_admin_fields( Settings $settings ) {
		$settings->add_section( Settings::TAB_INTEGRATIONS, static::get_recaptcha_name(), [
			'label' => esc_html__( 'reCAPTCHA', 'elementor-pro' ),
			'callback' => function () {
				echo sprintf(
					/* translators: 1: Link open tag, 2: Link closing tag. */
					esc_html__( '%1$sreCAPTCHA%2$s is a free service by Google that protects your website from spam and abuse. It does this while letting your valid users pass through with ease.', 'elementor-pro' ),
					'<a href="https://www.google.com/recaptcha/" target="_blank">',
					'</a>'
				);
			},
			'fields' => [
				'pro_recaptcha_site_key' => [
					'label' => esc_html__( 'Site Key', 'elementor-pro' ),
					'field_args' => [
						'type' => 'text',
					],
				],
				'pro_recaptcha_secret_key' => [
					'label' => esc_html__( 'Secret Key', 'elementor-pro' ),
					'field_args' => [
						'type' => 'text',
					],
				],
			],
		] );
	}

	public function localize_settings( $settings ) {
		$settings = array_replace_recursive( $settings, [
			'forms' => [
				static::get_recaptcha_name() => [
					'enabled' => static::is_enabled(),
					'type' => static::get_recaptcha_type(),
					'site_key' => static::get_site_key(),
					'setup_message' => static::get_setup_message(),
				],
			],
		] );

		return $settings;
	}

	protected static function get_script_render_param() {
		return 'explicit';
	}

	protected static function get_script_name() {
		return 'elementor-' . static::get_recaptcha_name() . '-api';
	}

	public function register_scripts() {
		$script_name = static::get_script_name();
		$src = 'https://www.google.com/recaptcha/api.js?render=explicit';
		wp_register_script( $script_name, $src, [], ELEMENTOR_PRO_VERSION, true );
	}

	public function enqueue_scripts() {
		if ( Plugin::elementor()->preview->is_preview_mode() ) {
			return;
		}
		$script_name = static::get_script_name();
		wp_enqueue_script( $script_name );
	}

	/**
	 * @param Form_Record  $record
	 * @param Ajax_Handler $ajax_handler
	 */
	public function validation( $record, $ajax_handler ) {
		$fields = $record->get_field( [
			'type' => static::get_recaptcha_name(),
		] );

		if ( empty( $fields ) ) {
			return;
		}

		$field = current( $fields );

		if ( empty( $_POST['g-recaptcha-response'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
			$ajax_handler->add_error( $field['id'], esc_html__( 'The Captcha field cannot be blank. Please enter a value.', 'elementor-pro' ) );

			return;
		}

		$recaptcha_errors = [
			'missing-input-secret' => esc_html__( 'The secret parameter is missing.', 'elementor-pro' ),
			'invalid-input-secret' => esc_html__( 'The secret parameter is invalid or malformed.', 'elementor-pro' ),
			'missing-input-response' => esc_html__( 'The response parameter is missing.', 'elementor-pro' ),
			'invalid-input-response' => esc_html__( 'The response parameter is invalid or malformed.', 'elementor-pro' ),
		];

		// PHPCS - response protected by recaptcha secret
		$recaptcha_response = $_POST['g-recaptcha-response']; // phpcs:ignore WordPress.Security.NonceVerification.Missing
		$recaptcha_secret = static::get_secret_key();
		$client_ip = Utils::get_client_ip();

		$request = [
			'body' => [
				'secret' => $recaptcha_secret,
				'response' => $recaptcha_response,
				'remoteip' => $client_ip,
			],
		];

		$response = wp_remote_post( 'https://www.google.com/recaptcha/api/siteverify', $request );

		$response_code = wp_remote_retrieve_response_code( $response );

		if ( 200 !== (int) $response_code ) {
			/* translators: %d: Response code. */
			$ajax_handler->add_error( $field['id'], sprintf( esc_html__( 'Can not connect to the reCAPTCHA server (%d).', 'elementor-pro' ), $response_code ) );

			return;
		}

		$body = wp_remote_retrieve_body( $response );

		$result = json_decode( $body, true );

		if ( ! $this->validate_result( $result, $field ) ) {
			$message = esc_html__( 'Invalid Form - reCAPTCHA validation failed', 'elementor-pro' );

			if ( isset( $result['error-codes'] ) ) {
				$result_errors = array_flip( $result['error-codes'] );

				foreach ( $recaptcha_errors as $error_key => $error_desc ) {
					if ( isset( $result_errors[ $error_key ] ) ) {
						$message = $recaptcha_errors[ $error_key ];
						break;
					}
				}
			}

			$this->add_error( $ajax_handler, $field, $message );

		}

		// If success - remove the field form list (don't send it in emails and etc )
		$record->remove_field( $field['id'] );

	}

	/**
	 * @param Ajax_Handler $ajax_handler
	 * @param $field
	 * @param $message
	 */
	protected function add_error( $ajax_handler, $field, $message ) {
		$ajax_handler->add_error( $field['id'], $message );
	}

	protected function validate_result( $result, $field ) {
		if ( ! $result['success'] ) {
			return false;
		}

		return true;
	}

	/**
	 * @param $item
	 * @param $item_index
	 * @param $widget Widget_Base
	 */
	public function render_field( $item, $item_index, $widget ) {
		$recaptcha_html = '<div class="elementor-field" id="form-field-' . $item['custom_id'] . '">';

		$recaptcha_name = static::get_recaptcha_name();

		if ( static::is_enabled() ) {
			$this->enqueue_scripts();
			$this->add_render_attributes( $item, $item_index, $widget );
			$recaptcha_html .= '<div ' . $widget->get_render_attribute_string( $recaptcha_name . $item_index ) . '></div>';
		} elseif ( current_user_can( 'manage_options' ) ) {
			$recaptcha_html .= '<div class="elementor-alert elementor-alert-info">';
			$recaptcha_html .= static::get_setup_message();
			$recaptcha_html .= '</div>';
		}

		$recaptcha_html .= '</div>';

		// PHPCS - It's all escaped
		echo $recaptcha_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}

	/**
	 * @param $item
	 * @param $item_index
	 * @param $widget Widget_Base
	 */
	protected function add_render_attributes( $item, $item_index, $widget ) {
		$recaptcha_name = static::get_recaptcha_name();

		$widget->add_render_attribute( [
			$recaptcha_name . $item_index => [
				'class' => 'elementor-g-recaptcha',
				'data-sitekey' => static::get_site_key(),
				'data-type' => static::get_recaptcha_type(),
			],
		] );

		$this->add_version_specific_render_attributes( $item, $item_index, $widget );
	}

	/**
	 * @param $item
	 * @param $item_index
	 * @param $widget Widget_Base
	 */
	protected function add_version_specific_render_attributes( $item, $item_index, $widget ) {
		$recaptcha_name = static::get_recaptcha_name();
		$widget->add_render_attribute( $recaptcha_name . $item_index, [
			'data-theme' => $item['recaptcha_style'],
			'data-size' => $item['recaptcha_size'],
		] );
	}

	public function add_field_type( $field_types ) {
		$field_types['recaptcha'] = esc_html__( 'reCAPTCHA', 'elementor-pro' );

		return $field_types;
	}

	public function filter_field_item( $item ) {
		if ( static::get_recaptcha_name() === $item['field_type'] ) {
			$item['field_label'] = false;
		}

		return $item;
	}

	public function __construct() {
		$this->register_scripts();

		add_filter( 'elementor_pro/forms/field_types', [ $this, 'add_field_type' ] );
		add_action( 'elementor_pro/forms/render_field/' . static::get_recaptcha_name(), [ $this, 'render_field' ], 10, 3 );
		add_filter( 'elementor_pro/forms/render/item', [ $this, 'filter_field_item' ] );
		add_filter( 'elementor_pro/editor/localize_settings', [ $this, 'localize_settings' ] );

		if ( static::is_enabled() ) {
			add_action( 'elementor_pro/forms/validation', [ $this, 'validation' ], 10, 2 );
			add_action( 'elementor/preview/enqueue_scripts', [ $this, 'enqueue_scripts' ] );
		}

		if ( is_admin() ) {
			add_action( 'elementor/admin/after_create_settings/' . Settings::PAGE_ID, [ $this, 'register_admin_fields' ] );
		}
	}
}
modules/forms/classes/rest-client.php000064400000007302150755004310013743 0ustar00<?php
namespace ElementorPro\Modules\Forms\Classes;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Rest_Client {

	private $api_base_url = '';
	private $user_agent = 'Elementor Forms (elementor.com)';
	public $request_cache = [];
	private $headers = [];
	private $request_args = [];

	public function __construct( $rest_base_url ) {
		$this->api_base_url = $rest_base_url;
		//setup defaults
		$this->set_request_arg( 'timeout', 30 )
			 ->set_request_arg( 'sslverify', false )
			 ->add_headers( 'User-Agent', $this->user_agent );

		/**
		 * Elementor form Rest Client Init
		 *
		 * Fires on client init
		 *
		 * @since 2.4.0
		 *
		 * @param Rest_Client $this
		 */
		do_action( 'elementor-pro/forms/rest_client/init', $this );

		return $this;
	}

	/**
	 * set base url
	 * @param string $url
	 */
	public function set_base_url( $url ) {
		$this->api_base_url = $url;
	}

	/**
	 * get base url
	 * @return string
	 */
	public function get_base_url() {
		return $this->api_base_url;
	}

	/**
	 * @param $key
	 * @param $value
	 *
	 * @return $this
	 */
	public function add_headers( $key, $value = null ) {
		if ( ! is_array( $key ) ) {
			$this->headers[ $key ] = $value;

			return $this;
		}
		foreach ( $key as $header => $header_value ) {
			$this->headers[ $header ] = $header_value;
		}

		return $this;
	}

	/**
	 * @param string $name
	 * @param null   $value
	 *
	 * @return $this
	 */
	public function set_request_arg( $name = '', $value = null ) {
		$this->request_args[ $name ] = $value;

		return $this;
	}

	/**
	 * @uses request
	 *
	 * @param string $endpoint
	 * @param null   $data
	 *
	 * @return array|mixed
	 * @throws \Exception
	 */
	public function post( $endpoint = '', $data = null ) {
		$request_body = wp_json_encode( $data );

		return $this->request( 'POST', $endpoint, $request_body );
	}

	/**
	 * @uses request
	 *
	 * @param string $endpoint
	 * @param null   $data
	 *
	 * @return array|mixed
	 * @throws \Exception
	 */
	public function get( $endpoint = '', $data = null ) {
		return $this->request( 'GET', $endpoint, $data );
	}

	/**
	 * @param string $method
	 * @param string $endpoint
	 * @param null   $request_body
	 * @param int    $valid_response_code
	 *
	 * @return array
	 * @throws \Exception
	 */
	public function request( $method = 'GET', $endpoint = '', $request_body = null, $valid_response_code = 200 ) {
		$request_url = $this->api_base_url . $endpoint;
		$base_args = [
			'method' => $method,
			'headers' => $this->headers,
		];
		$api_request_args = array_merge( $base_args, $this->request_args );
		if ( null !== $request_body ) {
			if ( in_array( $method, [ 'POST', 'PUT' ] ) ) {
				$api_request_args['body'] = $request_body;
			} else {
				$request_url = add_query_arg( $request_body, $request_url );
			}
		}

		$cache_key = md5( $method . $endpoint . json_encode( $api_request_args ) );
		if ( isset( $this->request_cache[ $cache_key ] ) && isset( $this->request_cache[ $cache_key ]['parsed'] ) ) {
			$this->request_cache[ $cache_key ]['parsed'];
		}

		$response = wp_remote_request( $request_url, $api_request_args );
		$response_code = (int) wp_remote_retrieve_response_code( $response );

		$this->request_cache[ $cache_key ]['raw'] = $response;

		if ( is_wp_error( $response ) || $valid_response_code !== $response_code ) {
			throw new \Exception( 'Rest Client Error: response code ' . $response_code );
		}

		$response_body = json_decode( wp_remote_retrieve_body( $response ), true );

		if ( ! is_array( $response_body ) ) {
			throw new \Exception( 'Rest Client Error: unexpected response type' );
		}

		$return = [
			'code' => $response_code,
			'body' => $response_body,
		];
		$this->request_cache[ $cache_key ]['parsed'] = $return;

		return $return;
	}
}
modules/forms/classes/drip-handler.php000064400000004015150755004310014061 0ustar00<?php
namespace ElementorPro\Modules\Forms\Classes;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Drip_Handler {
	private $rest_client = null;
	private $api_token = '';

	/**
	 * Drip_Handler constructor.
	 *
	 * @param $api_token
	 *
	 * @throws \Exception
	 */
	public function __construct( $api_token ) {
		if ( empty( $api_token ) ) {
			throw new \Exception( 'Invalid API key' );
		}
		$this->init_rest_client( $api_token );
		if ( ! $this->is_valid_api_token() ) {
			throw new \Exception( 'Invalid API key' );
		}
	}

	private function init_rest_client( $api_token ) {
		$this->api_token = $api_token;
		$this->rest_client = new Rest_Client( 'https://api.getdrip.com/v2/' );
		$this->rest_client->add_headers( [
			'Authorization' => 'Basic ' . base64_encode( $this->api_token ),
			'Content-Type' => 'application/vnd.api+json',
		] );
	}

	/**
	 * validate api token
	 *
	 * @return bool
	 * @throws \Exception
	 */
	private function is_valid_api_token() {
		$accounts = $this->get_accounts();
		if ( ! empty( $accounts ) ) {
			return true;
		}
		$this->api_token = '';

		return false;
	}

	/**
	 * get drip accounts associated with API token
	 * @return array
	 * @throws \Exception
	 */
	public function get_accounts() {
		$results = $this->rest_client->get( 'accounts' );

		$accounts = [
			'' => esc_html__( 'Select...', 'elementor-pro' ),
		];

		if ( ! empty( $results['body']['accounts'] ) ) {
			foreach ( $results['body']['accounts'] as $index => $account ) {
				$accounts[ $account['id'] ] = $account['name'];
			}
		}

		$return_array = [
			'accounts' => $accounts,
		];

		return $return_array;
	}

	/**
	 * create subscriber at drip via api
	 *
	 * @param string $account_id
	 * @param array  $subscriber_data
	 *
	 * @return array|mixed
	 * @throws \Exception
	 */
	public function create_subscriber( $account_id = '', $subscriber_data = [] ) {
		$end_point = sprintf( '%s/subscribers/', $account_id );

		return $this->rest_client->post( $end_point, [ 'subscribers' => [ $subscriber_data ] ] );
	}
}
modules/forms/classes/ajax-handler.php000064400000020660150755004310014052 0ustar00<?php
namespace ElementorPro\Modules\Forms\Classes;

use ElementorPro\Modules\Forms\Module;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Ajax_Handler {

	public $is_success = true;
	public $messages = [
		'success' => [],
		'error' => [],
		'admin_error' => [],
	];
	public $data = [];
	public $errors = [];

	private $current_form;

	const SUCCESS = 'success';
	const ERROR = 'error';
	const FIELD_REQUIRED = 'required_field';
	const INVALID_FORM = 'invalid_form';
	const SERVER_ERROR = 'server_error';
	const SUBSCRIBER_ALREADY_EXISTS = 'subscriber_already_exists';

	public static function is_form_submitted() {
		// PHPCS - No nonce is required, all visitors may send the form.
		return wp_doing_ajax() && isset( $_POST['action'] ) && 'elementor_pro_forms_send_form' === $_POST['action']; // phpcs:ignore WordPress.Security.NonceVerification.Missing
	}

	public static function get_default_messages() {
		return [
			self::SUCCESS => esc_html__( 'The form was sent successfully.', 'elementor-pro' ),
			self::ERROR => esc_html__( 'An error occurred.', 'elementor-pro' ),
			self::FIELD_REQUIRED => esc_html__( 'This field is required.', 'elementor-pro' ),
			self::INVALID_FORM => esc_html__( 'There\'s something wrong. The form is invalid.', 'elementor-pro' ),
			self::SERVER_ERROR => esc_html__( 'Server error. Form not sent.', 'elementor-pro' ),
			self::SUBSCRIBER_ALREADY_EXISTS => esc_html__( 'Subscriber already exists.', 'elementor-pro' ),
		];
	}

	public static function get_default_message( $id, $settings ) {
		if ( ! empty( $settings['custom_messages'] ) ) {
			$field_id = $id . '_message';
			if ( isset( $settings[ $field_id ] ) ) {
				return $settings[ $field_id ];
			}
		}

		$default_messages = self::get_default_messages();

		return isset( $default_messages[ $id ] ) ? $default_messages[ $id ] : esc_html__( 'Unknown', 'elementor-pro' );
	}

	public function ajax_send_form() {
		$post_data = $_POST; // phpcs:ignore WordPress.Security.NonceVerification.Missing
		// $post_id that holds the form settings.
		$post_id = $post_data['post_id'];

		// $queried_id the post for dynamic values data.
		if ( isset( $post_data['queried_id'] ) ) {
			$queried_id = $post_data['queried_id'];
		} else {
			$queried_id = $post_id;
		}

		// Make the post as global post for dynamic values.
		Plugin::elementor()->db->switch_to_post( $queried_id );

		$form_id = $post_data['form_id'];

		$elementor = Plugin::elementor();
		$document = $elementor->documents->get( $post_id );
		$form = null;
		$template_id = null;

		if ( $document ) {
			$form = Module::find_element_recursive( $document->get_elements_data(), $form_id );
		}

		if ( ! empty( $form['templateID'] ) ) {
			$template = Plugin::elementor()->documents->get( $form['templateID'] );

			if ( ! $template ) {
				return false;
			}

			$template_id = $template->get_id();
			$form = $template->get_elements_data()[0];
		}

		if ( empty( $form ) ) {
			$this
				->add_error_message( self::get_default_message( self::INVALID_FORM, [] ) )
				->send();
		}

		// restore default values
		$widget = $elementor->elements_manager->create_element_instance( $form );
		$form['settings'] = $widget->get_settings_for_display();
		$form['settings']['id'] = $form_id;
		$form['settings']['form_post_id'] = $template_id ? $template_id : $post_id;

		// TODO: Should be removed if there is an ability to edit "global widgets"
		$form['settings']['edit_post_id'] = $post_id;

		$this->current_form = $form;

		if ( empty( $form['settings']['form_fields'] ) ) {
			$this
				->add_error_message( self::get_default_message( self::INVALID_FORM, $form['settings'] ) )
				->send();
		}

		$record = new Form_Record( $post_data['form_fields'], $form );

		if ( ! $record->validate( $this ) ) {
			$this
				->add_error( $record->get( 'errors' ) )
				->add_error_message( self::get_default_message( self::ERROR, $form['settings'] ) )
				->send();
		}

		$record->process_fields( $this );
		//check for process errors
		if ( ! empty( $this->errors ) ) {
			$this->send();
		}

		$module = Module::instance();

		$actions = $module->actions_registrar->get();
		$errors = array_merge( $this->messages['error'], $this->messages['admin_error'] );

		/**
		 * Filters the record before it sent to actions after submit.
		 *
		 * @since 3.3.0
		 *
		 * @param Form_Record $record The form record.
		 * @param Ajax_Handler $this The class that handle the submission of the record
		 */
		$record = apply_filters( 'elementor_pro/forms/record/actions_before', $record, $this );

		foreach ( $actions as $action ) {
			if ( ! in_array( $action->get_name(), $form['settings']['submit_actions'], true ) ) {
				continue;
			}

			$exception = null;

			try {
				$action->run( $record, $this );

				$this->handle_bc_errors( $errors );
			} catch ( \Exception $e ) {
				$exception = $e;

				// Add an admin error.
				if ( ! in_array( $exception->getMessage(), $this->messages['admin_error'], true ) ) {
					$this->add_admin_error_message( "{$action->get_label()} {$exception->getMessage()}" );
				}

				// Add a user error.
				$this->add_error_message( $this->get_default_message( self::ERROR, $this->current_form['settings'] ) );
			}

			$errors = array_merge( $this->messages['error'], $this->messages['admin_error'] );

			do_action( 'elementor_pro/forms/actions/after_run', $action, $exception );
		}

		$activity_log = $module->get_component( 'activity_log' );
		if ( $activity_log ) {
			$activity_log->run( $record, $this );
		}

		$cf7db = $module->get_component( 'cf7db' );
		if ( $cf7db ) {
			$cf7db->run( $record, $this );
		}

		/**
		 * New Elementor form record.
		 *
		 * Fires before a new form record is send by ajax.
		 *
		 * @since 1.0.0
		 *
		 * @param Form_Record  $record An instance of the form record.
		 * @param Ajax_Handler $this   An instance of the ajax handler.
		 */
		do_action( 'elementor_pro/forms/new_record', $record, $this );

		$this->send();
	}

	public function add_success_message( $message ) {
		$this->messages['success'][] = $message;

		return $this;
	}

	public function add_response_data( $key, $data ) {
		$this->data[ $key ] = $data;

		return $this;
	}

	public function add_error_message( $message ) {
		$this->messages['error'][] = $message;
		$this->set_success( false );

		return $this;
	}

	public function add_error( $field, $message = '' ) {
		if ( is_array( $field ) ) {
			$this->errors += $field;
		} else {
			$this->errors[ $field ] = $message;
		}

		$this->set_success( false );

		return $this;
	}

	public function add_admin_error_message( $message ) {
		$this->messages['admin_error'][] = $message;
		$this->set_success( false );

		return $this;
	}

	public function set_success( $bool ) {
		$this->is_success = $bool;

		return $this;
	}

	public function send() {
		if ( $this->is_success ) {
			wp_send_json_success( [
				'message' => $this->get_default_message( self::SUCCESS, $this->current_form['settings'] ),
				'data' => $this->data,
			] );
		}

		if ( empty( $this->messages['error'] ) && ! empty( $this->errors ) ) {
			$this->add_error_message( $this->get_default_message( self::INVALID_FORM, $this->current_form['settings'] ) );
		}

		$error_msg = implode( '<br>', $this->messages['error'] );
		if ( current_user_can( 'edit_post', $_POST['post_id'] ) && ! empty( $this->messages['admin_error'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
			$this->add_admin_error_message( esc_html__( 'This Message is not visible for site visitors.', 'elementor-pro' ) );
			$error_msg .= '<div class="elementor-forms-admin-errors">' . implode( '<br>', $this->messages['admin_error'] ) . '</div>';
		}

		wp_send_json_error( [
			'message' => $error_msg,
			'errors' => $this->errors,
			'data' => $this->data,
		] );
	}

	public function get_current_form() {
		return $this->current_form;
	}

	/**
	 * BC: checks if the current action add some errors to the errors array
	 * if it add an error the "run" method treat it as a failed action.
	 *
	 * @param $errors
	 *
	 * @throws \Exception
	 */
	private function handle_bc_errors( $errors ) {
		$current_errors = array_merge( $this->messages['error'], $this->messages['admin_error'] );
		$errors_diff = array_diff( $current_errors, $errors );

		if ( count( $errors_diff ) > 0 ) {
			throw new \Exception( implode( ', ', $errors_diff ) );
		}
	}

	public function __construct() {
		add_action( 'wp_ajax_elementor_pro_forms_send_form', [ $this, 'ajax_send_form' ] );
		add_action( 'wp_ajax_nopriv_elementor_pro_forms_send_form', [ $this, 'ajax_send_form' ] );
	}
}
modules/forms/classes/mailerlite-handler.php000064400000005072150755004310015256 0ustar00<?php
namespace ElementorPro\Modules\Forms\Classes;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Mailerlite_Handler {
	/**
	 * @var Rest_Client
	 */
	private $rest_client = null;
	private $api_key = '';

	/**
	 * Mailerlite_Handler constructor.
	 *
	 * @param $api_key
	 *
	 * @throws \Exception
	 */
	public function __construct( $api_key ) {
		if ( empty( $api_key ) ) {
			throw new \Exception( 'Invalid API key' );
		}
		$this->init_rest_client( $api_key );
		if ( ! $this->is_valid_api_key() ) {
			throw new \Exception( 'Invalid API key' );
		}
	}

	private function init_rest_client( $api_key ) {
		$this->api_key = $api_key;
		$this->rest_client = new Rest_Client( 'https://api.mailerlite.com/api/v2/' );
		$this->rest_client->add_headers( [
			'X-MailerLite-ApiKey' => $api_key,
			'Content-Type' => 'application/json',
		] );
	}

	/**
	 * validate api key
	 *
	 * @return bool
	 * @throws \Exception
	 */
	private function is_valid_api_key() {
		$groups = $this->rest_client->get( 'groups' );
		if ( ! empty( $groups ) ) {
			return true;
		}
		$this->api_key = '';

		return false;
	}

	/**
	 * get MailerLite groups associated with API key
	 * @return array
	 * @throws \Exception
	 */
	public function get_groups() {
		$results = $this->rest_client->get( 'groups' );

		$groups = [
			'' => esc_html__( 'Select...', 'elementor-pro' ),
		];

		if ( 200 === $results['code'] ) {
			foreach ( $results['body'] as $index => $group ) {
				$groups[ $group['id'] ] = $group['name'];
			}
		}

		$return_array = [
			'groups' => $groups,
			'fields' => $this->get_fields(),
		];

		return $return_array;
	}

	/**
	 * get MailerLite fields associated with API key
	 * @return array
	 * @throws \Exception
	 */
	public function get_fields() {
		$results = $this->rest_client->get( 'fields' );

		$fields = [];
		if ( ! empty( $results['body'] ) ) {
			foreach ( $results['body'] as $index => $field ) {
				if ( ! is_array( $field ) || empty( $field['date_updated'] ) ) {
					continue;
				}
				$fields[] = [
					'remote_label' => $field['title'],
					'remote_type' => strtolower( $field['type'] ),
					'remote_id' => $field['key'],
					'remote_required' => false,
				];
			}
		}

		return $fields;
	}

	/**
	 * create subscriber at drip via api
	 *
	 * @param string $group
	 * @param array  $subscriber_data
	 *
	 * @return array|mixed
	 * @throws \Exception
	 */
	public function create_subscriber( $group = '', $subscriber_data = [] ) {
		$end_point = sprintf( 'groups/%s/subscribers', $group );

		return $this->rest_client->post( $end_point, $subscriber_data );
	}
}
modules/forms/registrars/form-actions-registrar.php000064400000004545150755004310016651 0ustar00<?php

namespace ElementorPro\Modules\Forms\Registrars;

use ElementorPro\Core\Utils\Registrar;
use ElementorPro\Modules\Forms\Actions;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/**
 * Basic form actions registration manager.
 */
class Form_Actions_Registrar extends Registrar {

	/**
	 * Form_Actions_Registrar constructor.
	 *
	 * @return void
	 */
	public function __construct() {
		parent::__construct();

		$this->init();
	}

	/**
	 * Initialize the default fields.
	 *
	 * @return void
	 */
	public function init() {
		// Register the actions handlers using a hook since some actions need to be registered before those actions (e.g: save-to-database).
		add_action( 'elementor_pro/forms/actions/register', function ( Form_Actions_Registrar $actions_registrar ) {
			$actions_registrar->register( new Actions\Email() );
			$actions_registrar->register( new Actions\Email2() );
			$actions_registrar->register( new Actions\Redirect() );
			$actions_registrar->register( new Actions\Webhook() );
			$actions_registrar->register( new Actions\Mailchimp() );
			$actions_registrar->register( new Actions\Drip() );
			$actions_registrar->register( new Actions\Activecampaign() );
			$actions_registrar->register( new Actions\Getresponse() );
			$actions_registrar->register( new Actions\Convertkit() );
			$actions_registrar->register( new Actions\Mailerlite() );
			$actions_registrar->register( new Actions\Slack() );
			$actions_registrar->register( new Actions\Discord() );
		} );

		/**
		 * Deprecated actions registration hook.
		 *
		 * @deprecated 3.5.0
		 */
		Plugin::elementor()->modules_manager->get_modules( 'dev-tools' )->deprecation->do_deprecated_action(
			'elementor_pro/forms/register_action',
			[ $this ],
			'3.5.0',
			'elementor_pro/forms/actions/register'
		);

		/**
		 * Elementor Pro form actions registration.
		 * Passes the Actions_Registrar as a parameter in order to register new actions using `$registrar->register()`.
		 *
		 * @since 3.5.0
		 *
		 * @param Form_Actions_Registrar $this An instance of form actions registrar.
		 */
		do_action( 'elementor_pro/forms/actions/register', $this );

		// MailPoet
		if ( class_exists( '\WYSIJA' ) ) {
			$this->register( new Actions\Mailpoet() );
		}

		// MailPoet
		if ( class_exists( '\MailPoet\API\API' ) ) {
			$this->register( new Actions\Mailpoet3() );
		}
	}
}
modules/forms/registrars/form-fields-registrar.php000064400000002112150755004310016443 0ustar00<?php

namespace ElementorPro\Modules\Forms\Registrars;

use ElementorPro\Core\Utils\Registrar;
use ElementorPro\Modules\Forms\Fields;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/**
 * Basic form fields registration manager.
 */
class Form_Fields_Registrar extends Registrar {

	/**
	 * Form_Fields_Registrar constructor.
	 *
	 * @return void
	 */
	public function __construct() {
		parent::__construct();

		$this->init();
	}

	/**
	 * Initialize the default fields.
	 *
	 * @return void
	 */
	public function init() {
		$this->register( new Fields\Time() );
		$this->register( new Fields\Date() );
		$this->register( new Fields\Tel() );
		$this->register( new Fields\Number() );
		$this->register( new Fields\Acceptance() );
		$this->register( new Fields\Upload() );
		$this->register( new Fields\Step() );

		/**
		 * Elementor Pro form fields registration.
		 * Passes the Fields_Registrar as a parameter in order to register new fields using `$registrar->register()`.
		 *
		 * @since 3.5.0
		 */
		do_action( 'elementor_pro/forms/fields/register', $this );
	}
}
modules/forms/actions/mailpoet.php000064400000005646150755004310013340 0ustar00<?php
namespace ElementorPro\Modules\Forms\Actions;

use Elementor\Controls_Manager;
use ElementorPro\Modules\Forms\Classes\Form_Record;
use ElementorPro\Modules\Forms\Classes\Integration_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Mailpoet extends Integration_Base {

	public function get_name() {
		return 'mailpoet';
	}

	public function get_label() {
		return 'MailPoet';
	}

	public function register_settings_section( $widget ) {
		$widget->start_controls_section(
			'section_mailpoet',
			[
				'label' => esc_html__( 'MailPoet', 'elementor-pro' ),
				'condition' => [
					'submit_actions' => $this->get_name(),
				],
			]
		);

		/** @var \WYSIJA_model_list $model_list */
		$model_list = \WYSIJA::get( 'list', 'model' );
		$mailpoet_lists = $model_list->get( [ 'name', 'list_id' ], [ 'is_enabled' => 1 ] );
		$options = [];

		foreach ( $mailpoet_lists as $list ) {
			$options[ $list['list_id'] ] = $list['name'];
		}

		$widget->add_control(
			'mailpoet_lists',
			[
				'label' => esc_html__( 'List', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'label_block' => true,
				'options' => $options,
				'render_type' => 'none',
			]
		);

		$this->register_fields_map_control( $widget );

		$widget->end_controls_section();
	}

	public function on_export( $element ) {
		unset( $element['mailpoet_lists'] );

		return $element;
	}

	public function run( $record, $ajax_handler ) {
		$subscriber = $this->map_fields( $record );

		/** @var \WYSIJA_help_user $helper_user */
		$helper_user = \WYSIJA::get( 'user', 'helper' );
		$helper_user->addSubscriber( $subscriber );
	}

	/**
	 * @param Form_Record $record
	 *
	 * @return array
	 */
	private function map_fields( $record ) {
		$settings = $record->get( 'form_settings' );
		$fields = $record->get( 'fields' );

		$subscriber = [
			'user' => [
				'email' => '',
			],
			'user_list' => [ 'list_ids' => (array) $settings['mailpoet_lists'] ],
		];

		foreach ( $settings['mailpoet_fields_map'] as $map_item ) {
			if ( empty( $fields[ $map_item['local_id'] ]['value'] ) ) {
				continue;
			}

			$value = $fields[ $map_item['local_id'] ]['value'];
			if ( 'email' === $map_item['remote_id'] ) {
				$subscriber['user']['email'] = $value;
			} else {
				$subscriber['user'][ $map_item['remote_id'] ] = $value;
			}
		}

		return $subscriber;
	}

	protected function get_fields_map_control_options() {
		return [
			'default' => [
				[
					'remote_id' => 'firstname',
					'remote_label' => esc_html__( 'First Name', 'elementor-pro' ),
					'remote_type' => 'text',
				],
				[
					'remote_id' => 'lastname',
					'remote_label' => esc_html__( 'Last Name', 'elementor-pro' ),
					'remote_type' => 'text',
				],
				[
					'remote_id' => 'email',
					'remote_label' => esc_html__( 'Email', 'elementor-pro' ),
					'remote_type' => 'email',
					'remote_required' => true,
				],
			],
			'condition' => [
				'mailpoet_lists!' => '',
			],
		];
	}
}
modules/forms/actions/convertkit.php000064400000016112150755004310013704 0ustar00<?php
namespace ElementorPro\Modules\Forms\Actions;

use Elementor\Controls_Manager;
use ElementorPro\Modules\Forms\Classes\Form_Record;
use ElementorPro\Modules\Forms\Classes\Integration_Base;
use ElementorPro\Modules\Forms\Classes\Convertkit_Handler;
use ElementorPro\Core\Utils;
use Elementor\Settings;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Convertkit extends Integration_Base {

	const OPTION_NAME_API_KEY = 'pro_convertkit_api_key';

	private function get_global_api_key() {
		return get_option( 'elementor_' . self::OPTION_NAME_API_KEY );
	}

	public function get_name() {
		return 'convertkit';
	}

	public function get_label() {
		return esc_html__( 'ConvertKit', 'elementor-pro' );
	}

	public function register_settings_section( $widget ) {
		$widget->start_controls_section(
			'section_convertkit',
			[
				'label' => esc_html__( 'ConvertKit', 'elementor-pro' ),
				'condition' => [
					'submit_actions' => $this->get_name(),
				],
			]
		);

		self::global_api_control(
			$widget,
			$this->get_global_api_key(),
			'ConvertKit API key',
			[
				'convertkit_api_key_source' => 'default',
			],
			$this->get_name()
		);

		$widget->add_control(
			'convertkit_api_key_source',
			[
				'label' => esc_html__( 'API Key', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'label_block' => false,
				'options' => [
					'default' => 'Default',
					'custom' => 'Custom',
				],
				'default' => 'default',
			]
		);

		$widget->add_control(
			'convertkit_custom_api_key',
			[
				'label' => esc_html__( 'Custom API Key', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'description' => esc_html__( 'Use this field to set a custom API Key for the current form', 'elementor-pro' ),
				'condition' => [
					'convertkit_api_key_source' => 'custom',
				],
			]
		);

		$widget->add_control(
			'convertkit_form',
			[
				'label' => esc_html__( 'Form', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [],
				'render_type' => 'none',
				'conditions' => [
					'relation' => 'or',
					'terms' => [
						[
							'name' => 'convertkit_custom_api_key',
							'operator' => '!==',
							'value' => '',
						],
						[
							'name' => 'convertkit_api_key_source',
							'operator' => '=',
							'value' => 'default',
						],
					],
				],
			]
		);

		$this->register_fields_map_control( $widget );

		$widget->add_control(
			'convertkit_tags',
			[
				'label' => esc_html__( 'Tags', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'options' => [],
				'multiple' => true,
				'render_type' => 'none',
				'label_block' => true,
				'condition' => [
					'convertkit_form!' => '',
				],
			]
		);

		$widget->end_controls_section();
	}

	public function on_export( $element ) {
		unset(
			$element['settings']['convertkit_api_key_source'],
			$element['settings']['convertkit_custom_api_key'],
			$element['settings']['convertkit_form'],
			$element['settings']['convertkit_fields_map']
		);

		return $element;
	}

	public function run( $record, $ajax_handler ) {
		$form_settings = $record->get( 'form_settings' );
		$subscriber = $this->create_subscriber_object( $record );

		if ( ! $subscriber ) {
			throw new \Exception( esc_html__( 'Integration requires an email field', 'elementor-pro' ) );
		}

		if ( 'default' === $form_settings['convertkit_api_key_source'] ) {
			$api_key = $this->get_global_api_key();
		} else {
			$api_key = $form_settings['convertkit_custom_api_key'];
		}

		if ( '' !== $form_settings['convertkit_tags'] ) {
			$subscriber['tags'] = $form_settings['convertkit_tags'];
		}

		$handler = new ConvertKit_Handler( $api_key );
		$handler->create_subscriber( $form_settings['convertkit_form'], $subscriber );
	}

	/**
	 * Create subscriber array from submitted data and form settings
	 * returns a subscriber array or false on error
	 *
	 * @param Form_Record $record
	 *
	 * @return array|bool
	 */
	private function create_subscriber_object( Form_Record $record ) {
		$subscriber = $this->map_fields( $record );

		if ( ! isset( $subscriber['email'] ) ) {
			return false;
		}

		$subscriber['ipAddress'] = Utils::get_client_ip();

		return $subscriber;
	}

	/**
	 * @param Form_Record $record
	 *
	 * @return array
	 */
	private function map_fields( Form_Record $record ) {
		$subscriber = [];
		$fields = $record->get( 'fields' );

		// Other form has a field mapping
		foreach ( $record->get_form_settings( 'convertkit_fields_map' ) as $map_item ) {
			if ( empty( $fields[ $map_item['local_id'] ]['value'] ) ) {
				continue;
			}

			$value = $fields[ $map_item['local_id'] ]['value'];
			if ( in_array( $map_item['remote_id'], [ 'first_name', 'email' ] ) ) {
				$subscriber[ $map_item['remote_id'] ] = $value;
				continue;
			}
		}

		return $subscriber;
	}

	/**
	 * @param array $data
	 *
	 * @return array
	 * @throws \Exception
	 */
	public function handle_panel_request( array $data ) {
		if ( ! empty( $data['api_key'] ) && 'default' === $data['api_key'] ) {
			$api_key = $this->get_global_api_key();
		} elseif ( ! empty( $data['custom_api_key'] ) ) {
			$api_key = $data['custom_api_key'];
		}

		if ( empty( $api_key ) ) {
			throw new \Exception( '`api_key` is required', 400 );
		}

		$handler = new Convertkit_Handler( $api_key );

		return $handler->get_forms_and_tags();
	}

	public function ajax_validate_api_token() {
		check_ajax_referer( self::OPTION_NAME_API_KEY, '_nonce' );
		if ( ! isset( $_POST['api_key'] ) ) {
			wp_send_json_error();
		}
		try {
			new Convertkit_Handler( $_POST['api_key'] );
		} catch ( \Exception $exception ) {
			wp_send_json_error();
		}
		wp_send_json_success();
	}

	public function register_admin_fields( Settings $settings ) {
		$settings->add_section( Settings::TAB_INTEGRATIONS, 'convertkit', [
			'callback' => function() {
				echo '<hr><h2>' . esc_html__( 'ConvertKit', 'elementor-pro' ) . '</h2>';
			},
			'fields' => [
				self::OPTION_NAME_API_KEY => [
					'label' => esc_html__( 'API Key', 'elementor-pro' ),
					'field_args' => [
						'type' => 'text',
						'desc' => sprintf(
							/* translators: 1: Link open tag, 2: Link closing tag. */
							esc_html__( 'To integrate with our forms you need an %1$sAPI Key%2$s.', 'elementor-pro' ),
							'<a href="https://app.convertkit.com/account/edit" target="_blank">',
							'</a>'
						),
					],
				],
				'validate_api_data' => [
					'field_args' => [
						'type' => 'raw_html',
						'html' => sprintf( '<button data-action="%s" data-nonce="%s" class="button elementor-button-spinner" id="elementor_pro_convertkit_api_key_button">%s</button>', self::OPTION_NAME_API_KEY . '_validate', wp_create_nonce( self::OPTION_NAME_API_KEY ), esc_html__( 'Validate API Key', 'elementor-pro' ) ),
					],
				],
			],
		] );
	}

	public function __construct() {
		if ( is_admin() ) {
			add_action( 'elementor/admin/after_create_settings/' . Settings::PAGE_ID, [ $this, 'register_admin_fields' ], 15 );
		}
		add_action( 'wp_ajax_' . self::OPTION_NAME_API_KEY . '_validate', [ $this, 'ajax_validate_api_token' ] );
	}

	protected function get_fields_map_control_options() {
		return [
			'condition' => [
				'convertkit_form!' => '',
			],
		];
	}
}
modules/forms/actions/slack.php000064400000012654150755004310012620 0ustar00<?php

namespace ElementorPro\Modules\Forms\Actions;

use Elementor\Controls_Manager;
use ElementorPro\Modules\Forms\Classes\Action_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Slack extends Action_Base {

	public function get_name() {
		return 'slack';
	}

	public function get_label() {
		return esc_html__( 'Slack', 'elementor-pro' );
	}

	public function register_settings_section( $widget ) {
		$widget->start_controls_section(
			'section_slack',
			[
				'label' => esc_html__( 'Slack', 'elementor-pro' ),
				'condition' => [
					'submit_actions' => $this->get_name(),
				],
			]
		);

		$widget->add_control(
			'slack_webhook',
			[
				'label' => esc_html__( 'Webhook URL', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => 'https://hooks.slack.com/services/',
				'label_block' => true,
				'separator' => 'before',
				'description' => esc_html__( 'Enter the webhook URL that will receive the form\'s submitted data.', 'elementor-pro' ) . ' ' . sprintf( '<a href="%s" target="_blank">%s</a>.', 'https://slack.com/apps/A0F7XDUAZ-incoming-webhooks/', esc_html__( 'Click here for Instructions', 'elementor-pro' ) ),
				'render_type' => 'none',
				'classes' => 'elementor-control-direction-ltr',
			]
		);

		$widget->add_control(
			'slack_channel',
			[
				'label' => esc_html__( 'Channel', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$widget->add_control(
			'slack_username',
			[
				'label' => esc_html__( 'Username', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$widget->add_control(
			'slack_pretext',
			[
				'label' => esc_html__( 'Pre Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$widget->add_control(
			'slack_title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$widget->add_control(
			'slack_text',
			[
				'label' => esc_html__( 'Description', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$widget->add_control(
			'slack_add_fields',
			[
				'label' => esc_html__( 'Form Data', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
			]
		);

		$widget->add_control(
			'slack_add_ts',
			[
				'label' => esc_html__( 'Timestamp', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
			]
		);

		$widget->add_control(
			'slack_webhook_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'alpha' => false,
				'default' => '#D30C5C',
			]
		);

		$widget->end_controls_section();
	}

	public function on_export( $element ) {
		unset(
			$element['slack_add_ts'],
			$element['slack_add_fields'],
			$element['slack_webhook_color'],
			$element['slack_text'],
			$element['slack_pretext'],
			$element['slack_title'],
			$element['slack_username'],
			$element['slack_webhook'],
			$element['slack_channel']
		);
	}

	public function run( $record, $ajax_handler ) {
		$settings = $record->get( 'form_settings' );

		if ( empty( $settings['slack_webhook'] ) || false === strpos( $settings['slack_webhook'], 'https://hooks.slack.com/services/' ) ) {
			return;
		}

		// Build slack webhook data
		$webhook_data = [
			'username' => isset( $settings['slack_username'] ) ? $settings['slack_username'] : '',
		];

		if ( ! empty( $settings['slack_channel'] ) ) {
			$webhook_data['channel'] = $settings['slack_channel'];
		}

		$attachment = [
			'text' => esc_html__( 'A new Form Submission has been received', 'elementor-pro' ),
			'title' => esc_html__( 'A new Submission', 'elementor-pro' ),
			'color' => isset( $settings['slack_webhook_color'] ) ? $settings['slack_webhook_color'] : '#D30C5C',
			// PHPCS - No nonce is required for title_link.
			'title_link' => esc_url( isset( $_POST['referrer'] ) ? $_POST['referrer'] : site_url() ), // phpcs:ignore WordPress.Security.NonceVerification.Missing
		];

		if ( ! empty( $settings['slack_title'] ) ) {
			$attachment['title'] = $settings['slack_title'];
		}

		if ( ! empty( $settings['slack_text'] ) ) {
			$attachment['text'] = $settings['slack_text'];
		}

		if ( ! empty( $settings['slack_pretext'] ) ) {
			$attachment['pretext'] = $settings['slack_pretext'];
		}

		if ( ! empty( $settings['slack_add_fields'] ) && 'yes' === $settings['slack_add_fields'] ) {
			// prepare Form Data
			$raw_fields = $record->get( 'fields' );
			$fields = [];
			foreach ( $raw_fields as $id => $field ) {
				$fields[] = [
					'title' => $field['title'] ? $field['title'] : $id,
					'value' => $field['value'],
					'short' => false,
				];
			}

			$attachment['fields'] = $fields;
		}

		if ( ! empty( $settings['slack_add_ts'] ) && 'yes' === $settings['slack_add_ts'] ) {
			$attachment = array_merge( $attachment, [
				'footer' => sprintf( esc_html__( 'Powered by %s', 'elementor-pro' ), 'Elementor' ),
				'footer_icon' => is_ssl() ? ELEMENTOR_ASSETS_URL . 'images/logo-icon.png' : null,
				'ts' => time(),
			] );
		}

		$webhook_data['attachments'] = [ $attachment ];

		$webhook_data = apply_filters( 'elementor_pro/forms/slack/webhook_args', $webhook_data );

		$response = wp_remote_post( $settings['slack_webhook'], [
			'headers' => [
				'Content-Type' => 'application/json',
			],
			'body' => wp_json_encode( $webhook_data ),
		] );

		if ( 200 !== (int) wp_remote_retrieve_response_code( $response ) ) {
			throw new \Exception( esc_html__( 'Webhook Error', 'elementor-pro' ) );
		}
	}
}
modules/forms/actions/mailpoet3.php000064400000006770150755004310013422 0ustar00<?php
namespace ElementorPro\Modules\Forms\Actions;

use Elementor\Controls_Manager;
use ElementorPro\Modules\Forms\Classes\Form_Record;
use ElementorPro\Modules\Forms\Classes\Integration_Base;
use MailPoet\API\API;
use MailPoet\Models\Subscriber;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
};

class Mailpoet3 extends Integration_Base {

	public function get_name() {
		return 'mailpoet3';
	}

	public function get_label() {
		return 'MailPoet 3';
	}

	public function register_settings_section( $widget ) {
		$widget->start_controls_section(
			'section_mailpoet3',
			[
				'label' => esc_html__( 'MailPoet 3', 'elementor-pro' ),
				'condition' => [
					'submit_actions' => $this->get_name(),
				],
			]
		);

		$mailpoet3_lists = API::MP( 'v1' )->getLists();
		$options = [];

		foreach ( $mailpoet3_lists as $list ) {
			$options[ $list['id'] ] = $list['name'];
		}

		$widget->add_control(
			'mailpoet3_lists',
			[
				'label' => esc_html__( 'List', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'label_block' => true,
				'options' => $options,
				'render_type' => 'none',
			]
		);

		$this->register_fields_map_control( $widget );

		$widget->end_controls_section();
	}

	public function on_export( $element ) {
		unset( $element['mailpoet3_lists'] );

		return $element;
	}

	public function run( $record, $ajax_handler ) {
		$settings = $record->get( 'form_settings' );
		$subscriber = $this->map_fields( $record );

		$existing_subscriber = false;

		try {
			API::MP( 'v1' )->addSubscriber( $subscriber, (array) $settings['mailpoet3_lists'] );
			$existing_subscriber = false;
		} catch ( \Exception $exception ) {
			$error_string = esc_html__( 'This subscriber already exists.', 'mailpoet' ); // phpcs:ignore WordPress.WP.I18n

			if ( $error_string === $exception->getMessage() ) {
				$existing_subscriber = true;
			} else {
				throw $exception;
			}
		}

		if ( $existing_subscriber ) {
			API::MP( 'v1' )->subscribeToLists( $subscriber['email'], (array) $settings['mailpoet3_lists'] );
		}
	}

	/**
	 * @param Form_Record $record
	 *
	 * @return array
	 */
	private function map_fields( $record ) {
		$settings = $record->get( 'form_settings' );
		$fields = $record->get( 'fields' );

		$subscriber = [];

		foreach ( $settings['mailpoet3_fields_map'] as $map_item ) {
			if ( empty( $fields[ $map_item['local_id'] ]['value'] ) ) {
				continue;
			}

			$subscriber[ $map_item['remote_id'] ] = $fields[ $map_item['local_id'] ]['value'];
		}

		return $subscriber;
	}

	protected function get_fields_map_control_options() {
		$mailpoet_fields = [
			[
				'remote_id' => 'first_name',
				'remote_label' => esc_html__( 'First Name', 'elementor-pro' ),
				'remote_type' => 'text',
			],
			[
				'remote_id' => 'last_name',
				'remote_label' => esc_html__( 'Last Name', 'elementor-pro' ),
				'remote_type' => 'text',
			],
			[
				'remote_id' => 'email',
				'remote_label' => esc_html__( 'Email', 'elementor-pro' ),
				'remote_type' => 'email',
				'remote_required' => true,
			],
		];

		$fields = API::MP( 'v1' )->getSubscriberFields();

		if ( ! empty( $fields ) && is_array( $fields ) ) {
			foreach ( $fields as $index => $remote ) {
				if ( in_array( $remote['id'], [ 'first_name', 'last_name', 'email' ] ) ) {
					continue;
				}
				$mailpoet_fields[] = [
					'remote_id' => $remote['id'],
					'remote_label' => $remote['name'],
					'remote_type' => 'text',
				];
			}
		}

		return [
			'default' => $mailpoet_fields,
			'condition' => [
				'mailpoet3_lists!' => '',
			],
		];
	}
}
modules/forms/actions/webhook.php000064400000005715150755004310013161 0ustar00<?php
namespace ElementorPro\Modules\Forms\Actions;

use Elementor\Controls_Manager;
use ElementorPro\Modules\Forms\Classes\Action_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Webhook extends Action_Base {

	public function get_name() {
		return 'webhook';
	}

	public function get_label() {
		return esc_html__( 'Webhook', 'elementor-pro' );
	}

	public function register_settings_section( $widget ) {
		$widget->start_controls_section(
			'section_webhook',
			[
				'label' => esc_html__( 'Webhook', 'elementor-pro' ),
				'condition' => [
					'submit_actions' => $this->get_name(),
				],
			]
		);

		$widget->add_control(
			'webhooks',
			[
				'label' => esc_html__( 'Webhook URL', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => esc_html__( 'https://your-webhook-url.com', 'elementor-pro' ),
				'label_block' => true,
				'separator' => 'before',
				'description' => esc_html__( 'Enter the integration URL (like Zapier) that will receive the form\'s submitted data.', 'elementor-pro' ),
				'render_type' => 'none',
			]
		);

		$widget->add_control(
			'webhooks_advanced_data',
			[
				'label' => esc_html__( 'Advanced Data', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'no',
				'render_type' => 'none',
			]
		);

		$widget->end_controls_section();
	}

	public function on_export( $element ) {}

	public function run( $record, $ajax_handler ) {
		$settings = $record->get( 'form_settings' );

		if ( empty( $settings['webhooks'] ) ) {
			return;
		}

		if ( isset( $settings['webhooks_advanced_data'] ) && 'yes' === $settings['webhooks_advanced_data'] ) {
			$body['form'] = [
				'id' => $settings['id'],
				'name' => $settings['form_name'],
			];

			$body['fields'] = $record->get( 'fields' );
			$body['meta'] = $record->get( 'meta' );
		} else {
			$body = $record->get_formatted_data( true );
			$body['form_id'] = $settings['id'];
			$body['form_name'] = $settings['form_name'];
		}

		$args = [
			'body' => $body,
		];

		/**
		 * Forms webhook request arguments.
		 *
		 * Filters the request arguments delivered by the form webhook when executing
		 * an ajax request.
		 *
		 * @since 1.0.0
		 *
		 * @param array       $args   Webhook request arguments.
		 * @param Form_Record $record An instance of the form record.
		 */
		$args = apply_filters( 'elementor_pro/forms/webhooks/request_args', $args, $record );

		$response = wp_remote_post( $settings['webhooks'], $args );

		/**
		 * Elementor form webhook response.
		 *
		 * Fires when the webhook response is retrieved.
		 *
		 * @since 1.0.0
		 *
		 * @param \WP_Error|array $response The response or WP_Error on failure.
		 * @param Form_Record     $record   An instance of the form record.
		 */
		do_action( 'elementor_pro/forms/webhooks/response', $response, $record );

		if ( 200 !== (int) wp_remote_retrieve_response_code( $response ) ) {
			throw new \Exception( esc_html__( 'Webhook Error', 'elementor-pro' ) );
		}
	}
}
modules/forms/actions/mailchimp.php000064400000031142150755004310013457 0ustar00<?php
namespace ElementorPro\Modules\Forms\Actions;

use Elementor\Controls_Manager;
use ElementorPro\Modules\Forms\Classes\Ajax_Handler;
use ElementorPro\Modules\Forms\Classes\Form_Record;
use ElementorPro\Modules\Forms\Classes\Integration_Base;
use ElementorPro\Modules\Forms\Classes\Mailchimp_Handler;
use Elementor\Settings;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Mailchimp extends Integration_Base {

	const OPTION_NAME_API_KEY = 'pro_mailchimp_api_key';

	/**
	 * @var string - Mailchimp API key.
	 */
	private $api_key;

	private function get_global_api_key() {
		return get_option( 'elementor_' . self::OPTION_NAME_API_KEY );
	}

	public function get_name() {
		return 'mailchimp';
	}

	public function get_label() {
		return esc_html__( 'MailChimp', 'elementor-pro' );
	}

	public function register_settings_section( $widget ) {
		$widget->start_controls_section(
			'section_mailchimp',
			[
				'label' => esc_html__( 'MailChimp', 'elementor-pro' ),
				'condition' => [
					'submit_actions' => $this->get_name(),
				],
			]
		);

		self::global_api_control(
			$widget,
			$this->get_global_api_key(),
			'MailChimp API Key',
			[
				'mailchimp_api_key_source' => 'default',
			],
			$this->get_name()
		);

		$widget->add_control(
			'mailchimp_api_key_source',
			[
				'label' => esc_html__( 'API Key', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'label_block' => false,
				'options' => [
					'default' => 'Default',
					'custom' => 'Custom',
				],
				'default' => 'default',
			]
		);

		$widget->add_control(
			'mailchimp_api_key',
			[
				'label' => esc_html__( 'Custom API Key', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'condition' => [
					'mailchimp_api_key_source' => 'custom',
				],
				'description' => esc_html__( 'Use this field to set a custom API Key for the current form', 'elementor-pro' ),
			]
		);

		$widget->add_control(
			'mailchimp_list',
			[
				'label' => esc_html__( 'Audience', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [],
				'render_type' => 'none',
				'conditions' => [
					'relation' => 'or',
					'terms' => [
						[
							'name' => 'mailchimp_api_key',
							'operator' => '!==',
							'value' => '',
						],
						[
							'name' => 'mailchimp_api_key_source',
							'operator' => '=',
							'value' => 'default',
						],
					],
				],
			]
		);

		$widget->add_control(
			'mailchimp_groups',
			[
				'label' => esc_html__( 'Groups', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'options' => [],
				'label_block' => true,
				'multiple' => true,
				'render_type' => 'none',
				'condition' => [
					'mailchimp_list!' => '',
				],
			]
		);

		$widget->add_control(
			'mailchimp_tags',
			[
				'label' => esc_html__( 'Tags', 'elementor-pro' ),
				'description' => esc_html__( 'Add comma separated tags', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'render_type' => 'none',
				'condition' => [
					'mailchimp_list!' => '',
				],
			]
		);

		$widget->add_control(
			'mailchimp_double_opt_in',
			[
				'label' => esc_html__( 'Double Opt-In', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'condition' => [
					'mailchimp_list!' => '',
				],
			]
		);

		$this->register_fields_map_control( $widget );

		$widget->end_controls_section();
	}

	public function on_export( $element ) {
		unset(
			$element['settings']['mailchimp_api_key_source'],
			$element['settings']['mailchimp_api_key'],
			$element['settings']['mailchimp_list'],
			$element['settings']['mailchimp_groups'],
			$element['settings']['mailchimp_fields_map']
		);

		return $element;
	}

	public function run( $record, $ajax_handler ) {
		$form_settings = $record->get( 'form_settings' );

		if ( 'default' === $form_settings['mailchimp_api_key_source'] ) {
			$this->api_key = $this->get_global_api_key();
		} else {
			$this->api_key = $form_settings['mailchimp_api_key'];
		}

		// Data from the form in the frontend.
		$subscriber_data = $this->map_fields( $record );

		// Create or update a subscriber.
		$subscriber = $this->create_or_update_subscriber( $subscriber_data, $form_settings );

		// Parse the Mailchimp tags.
		$tags = $this->parse_tags( $form_settings['mailchimp_tags'] );

		// Set the subscriber tags only if he doesn't have them already.
		if ( ! $this->subscriber_has_tags( $subscriber, $tags ) ) {
			$this->set_subscriber_tags( $subscriber, $tags );
		}
	}

	/**
	 * @param string $tags - List of comma separated tags from the forms settings ( i.e. 'tag-1, tag-2' ).
	 *
	 * @return array|string[] - Array of tags that were extracted from the input ( i.e. [ 'tag-1', 'tag-2' ] ).
	 */
	private function parse_tags( $tags ) {
		$parsed_tags = [];

		if ( ! empty( $tags ) ) {
			$parsed_tags = explode( ',', trim( $tags ) );

			// Remove empty tags.
			$parsed_tags = array_filter( $parsed_tags );

			// Trim tags.
			$parsed_tags = array_map( 'trim', $parsed_tags );
		}

		return $parsed_tags;
	}

	/**
	 * Determine if a subscriber has specific tags, and ONLY those tags.
	 *
	 * @param array $subscriber - Subscriber data from an API response.
	 * @param array $tags - List of tags to check ( i.e. [ 'tag-1', 'tag-2' ] ).
	 *
	 * @return bool
	 */
	private function subscriber_has_tags( array $subscriber, array $tags ) {
		// Extract current tags.
		$subscriber_tags = [];

		foreach ( $subscriber['tags'] as $tag ) {
			$subscriber_tags[] = $tag['name'];
		}

		return array_diff( $tags, $subscriber_tags ) === array_diff( $subscriber_tags, $tags );
	}

	/**
	 * Set Mailchimp subscriber tags.
	 *
	 * @param array $subscriber - Subscriber data from a create/update request.
	 * @param array $tags - List of tags to set.
	 *
	 * @return void
	 */
	private function set_subscriber_tags( array $subscriber, array $tags ) {
		// Build the request tags.
		$request_tags = [];

		// Set current tags to active.
		foreach ( $subscriber['tags'] as $tag ) {
			$request_tags[] = [
				'name' => $tag['name'],
				'status' => 'active',
			];
		}

		// Set new tags to active.
		foreach ( $tags as $tag ) {
			$request_tags[] = [
				'name' => $tag,
				'status' => 'active',
			];
		}

		// Send the API request.
		$endpoint = sprintf( 'lists/%s/members/%s/tags', $subscriber['list_id'], md5( strtolower( $subscriber['email_address'] ) ) );
		$args = [
			'tags' => $request_tags,
		];

		$handler = new Mailchimp_Handler( $this->api_key );
		$response = $handler->post( $endpoint, $args );

		if ( 204 !== $response['code'] ) {
			$error = ! empty( $response['body']['detail'] ) ? $response['body']['detail'] : '';
			$code = $response['code'];

			throw new \Exception( "HTTP {$code} - {$error}" );
		}
	}

	/**
	 * Get Mailchimp subscriber data.
	 *
	 * @param string $list - Mailchimp List ID.
	 * @param string $email_hash - Subscriber's email hash (lowercase + MD5).
	 *
	 * @return array|null
	 */
	private function get_subscriber_data( $list, $email_hash ) {
		$handler = new Mailchimp_Handler( $this->api_key );
		$end_point = sprintf( 'lists/%s/members/%s', $list, $email_hash );

		try {
			return $handler->query( $end_point );
		} catch ( \Exception $e ) {
			return null;
		}
	}

	/**
	 * Set Mailchimp subscriber data.
	 *
	 * @param string $list - Mailchimp List ID.
	 * @param string $email_hash - Subscriber's email hash (lowercase + MD5).
	 * @param array $data - New subscriber data to set.
	 *
	 * @return array
	 */
	private function set_subscriber_data( $list, $email_hash, $data ) {
		$handler = new Mailchimp_Handler( $this->api_key );

		$end_point = sprintf( 'lists/%s/members/%s', $list, $email_hash );

		$response = $handler->post( $end_point, $data, [
			'method' => 'PUT', // Add or Update
		] );

		if ( 200 !== $response['code'] ) {
			$error = ! empty( $response['body']['detail'] ) ? $response['body']['detail'] : '';
			$code = $response['code'];

			throw new \Exception( "HTTP {$code} - {$error}" );
		}

		return $response['body'];
	}

	/**
	 * Create or update a Mailchimp subscriber.
	 *
	 * @param array $subscriber - Subscriber data from the form in the frontend.
	 * @param array $form_settings - Settings from the editor.
	 *
	 * @return array - An array that contains the newly created subscriber's data.
	 */
	private function create_or_update_subscriber( array $subscriber, array $form_settings ) {
		if ( ! empty( $form_settings['mailchimp_groups'] ) ) {
			$subscriber['interests'] = [];
		}

		if ( is_array( $form_settings['mailchimp_groups'] ) ) {
			foreach ( $form_settings['mailchimp_groups'] as $mailchimp_group ) {
				$subscriber['interests'][ $mailchimp_group ] = true;
			}
		}

		if ( ! empty( $form_settings['mailchimp_tags'] ) ) {
			$subscriber['tags'] = explode( ',', trim( $form_settings['mailchimp_tags'] ) );
		}

		$list = $form_settings['mailchimp_list'];
		$email_hash = md5( strtolower( $subscriber['email_address'] ) );
		$double_opt_in = ( 'yes' === $form_settings['mailchimp_double_opt_in'] );

		$subscriber['status_if_new'] = $double_opt_in ? 'pending' : 'subscribed';

		if ( $double_opt_in ) {
			$subscriber_data = $this->get_subscriber_data( $list, $email_hash );

			// Change the current status only if the user isn't subscribed already.
			if ( $subscriber_data && 'subscribed' !== $subscriber_data['status'] ) {
				$subscriber['status'] = 'pending';
			}
		} else {
			$subscriber['status'] = 'subscribed';
		}

		return $this->set_subscriber_data( $list, $email_hash, $subscriber );
	}

	/**
	 * @param Form_Record $record
	 *
	 * @return array
	 */
	private function map_fields( $record ) {
		$subscriber = [];
		$fields = $record->get( 'fields' );

		// Other form has a field mapping
		foreach ( $record->get_form_settings( 'mailchimp_fields_map' ) as $map_item ) {
			if ( empty( $fields[ $map_item['local_id'] ]['value'] ) ) {
				continue;
			}

			$value = $fields[ $map_item['local_id'] ]['value'];
			if ( 'email' === $map_item['remote_id'] ) {
				$subscriber['email_address'] = $value;
			} else {
				$subscriber['merge_fields'][ $map_item['remote_id'] ] = $value;
			}
		}

		return $subscriber;
	}

	public function ajax_validate_api_token() {
		check_ajax_referer( self::OPTION_NAME_API_KEY, '_nonce' );
		if ( ! isset( $_POST['api_key'] ) ) {
			wp_send_json_error();
		}
		try {
			new Mailchimp_Handler( $_POST['api_key'] );
		} catch ( \Exception $exception ) {
			wp_send_json_error();
		}
		wp_send_json_success();
	}

	/**
	 * @param array $data
	 *
	 * @return array
	 * @throws \Exception
	 */
	public function handle_panel_request( array $data ) {
		if ( ! empty( $data['use_global_api_key'] ) && 'default' === $data['use_global_api_key'] ) {
			$api_key = $this->get_global_api_key();
		} elseif ( ! empty( $data['api_key'] ) ) {
			$api_key = $data['api_key'];
		}

		if ( empty( $api_key ) ) {
			throw new \Exception( '`api_key` is required', 400 );
		}

		$handler = new Mailchimp_Handler( $api_key );

		switch ( $data['mailchimp_action'] ) {
			case 'lists':
				return $handler->get_lists();

			case 'fields':
				return $handler->get_fields( $data['mailchimp_list'] );

			case 'groups':
				return $handler->get_groups( $data['mailchimp_list'] );

			default:
				return $handler->get_list_details( $data['mailchimp_list'] );
		}
	}

	public function register_admin_fields( Settings $settings ) {
		$settings->add_section( Settings::TAB_INTEGRATIONS, 'mailchimp', [
			'callback' => function() {
				echo '<hr><h2>' . esc_html__( 'MailChimp', 'elementor-pro' ) . '</h2>';
			},
			'fields' => [
				self::OPTION_NAME_API_KEY => [
					'label' => esc_html__( 'API Key', 'elementor-pro' ),
					'field_args' => [
						'type' => 'text',
						'desc' => sprintf(
							/* translators: 1: Link open tag, 2: Link closing tag. */
							esc_html__( 'To integrate with our forms you need an %1$sAPI Key%2$s.', 'elementor-pro' ),
							'<a href="https://kb.mailchimp.com/integrations/api-integrations/about-api-keys" target="_blank">',
							'</a>'
						),
					],
				],
				'validate_api_data' => [
					'field_args' => [
						'type' => 'raw_html',
						'html' => sprintf( '<button data-action="%s" data-nonce="%s" class="button elementor-button-spinner" id="elementor_pro_mailchimp_api_key_button">%s</button>', self::OPTION_NAME_API_KEY . '_validate', wp_create_nonce( self::OPTION_NAME_API_KEY ), esc_html__( 'Validate API Key', 'elementor-pro' ) ),
					],
				],
			],
		] );
	}

	public function __construct() {
		if ( is_admin() ) {
			add_action( 'elementor/admin/after_create_settings/' . Settings::PAGE_ID, [ $this, 'register_admin_fields' ], 14 );
		}
		add_action( 'wp_ajax_' . self::OPTION_NAME_API_KEY . '_validate', [ $this, 'ajax_validate_api_token' ] );
	}

	protected function get_fields_map_control_options() {
		return [
			'condition' => [
				'mailchimp_list!' => '',
			],
		];
	}
}
modules/forms/actions/activecampaign.php000064400000021631150755004310014471 0ustar00<?php
namespace ElementorPro\Modules\Forms\Actions;

use Elementor\Controls_Manager;
use Elementor\Settings;
use ElementorPro\Modules\Forms\Classes\Form_Record;
use ElementorPro\Modules\Forms\Classes\Integration_Base;
use ElementorPro\Modules\Forms\Classes;
use ElementorPro\Core\Utils;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Activecampaign extends Integration_Base {

	const OPTION_NAME_API_KEY = 'pro_activecampaign_api_key';
	const OPTION_NAME_API_URL = 'pro_activecampaign_api_url';

	private function get_global_api_key() {
		return get_option( 'elementor_' . self::OPTION_NAME_API_KEY, '' );
	}

	private function get_global_api_url() {
		return get_option( 'elementor_' . self::OPTION_NAME_API_URL, '' );
	}

	public function get_name() {
		return 'activecampaign';
	}

	public function get_label() {
		return esc_html__( 'ActiveCampaign', 'elementor-pro' );
	}

	public function register_settings_section( $widget ) {
		$widget->start_controls_section(
			'section_activecampaign',
			[
				'label' => esc_html__( 'ActiveCampaign', 'elementor-pro' ),
				'condition' => [
					'submit_actions' => $this->get_name(),
				],
			]
		);

		self::global_api_control(
			$widget,
			$this->get_global_api_key(),
			'ActiveCampaign API credentials',
			[
				'activecampaign_api_credentials_source' => 'default',
			],
			$this->get_name()
		);

		$widget->add_control(
			'activecampaign_api_credentials_source',
			[
				'label' => esc_html__( 'API Key', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'label_block' => false,
				'options' => [
					'default' => 'Default',
					'custom' => 'Custom',
				],
				'default' => 'default',
			]
		);

		$widget->add_control(
			'activecampaign_api_key',
			[
				'label' => esc_html__( 'Custom API Key', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'description' => esc_html__( 'Use this field to set a custom API Key for the current form', 'elementor-pro' ),
				'condition' => [
					'activecampaign_api_credentials_source' => 'custom',
				],
			]
		);

		$widget->add_control(
			'activecampaign_api_url',
			[
				'label' => esc_html__( 'API URL', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'description' => esc_html__( 'Use this field to set a custom API URL for the current form', 'elementor-pro' ),
				'condition' => [
					'activecampaign_api_credentials_source' => 'custom',
				],
			]
		);

		$widget->add_control(
			'activecampaign_list',
			[
				'label' => esc_html__( 'List', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [],
				'render_type' => 'none',
				'conditions' => [
					'relation' => 'or',
					'terms' => [
						[
							'name' => 'activecampaign_api_credentials_source',
							'operator' => '=',
							'value' => 'default',
						],
						[
							'relation' => 'and',
							'terms' => [
								[
									'name' => 'activecampaign_api_url',
									'operator' => '!==',
									'value' => '',
								],
								[
									'name' => 'activecampaign_api_key',
									'operator' => '!==',
									'value' => '',
								],
							],
						],
					],
				],
			]
		);

		$this->register_fields_map_control( $widget );

		$widget->add_control(
			'activecampaign_tags',
			[
				'label' => esc_html__( 'Tags', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'description' => esc_html__( 'Add as many tags as you want, comma separated.', 'elementor-pro' ),
				'condition' => [
					'activecampaign_list!' => '',
				],
			]
		);

		$widget->end_controls_section();
	}

	public function on_export( $element ) {
		unset(
			$element['settings']['activecampaign_api_credentials_source'],
			$element['settings']['activecampaign_api_key'],
			$element['settings']['activecampaign_api_url'],
			$element['settings']['activecampaign_list'],
			$element['settings']['activecampaign_fields_map'],
			$element['settings']['activecampaign_tags']
		);

		return $element;
	}

	public function run( $record, $ajax_handler ) {
		$form_settings = $record->get( 'form_settings' );
		$subscriber = $this->create_subscriber_object( $record );

		if ( ! $subscriber ) {
			throw new \Exception( esc_html__( 'Integration requires an email field and a selected list', 'elementor-pro' ) );
		}

		if ( 'default' === $form_settings['activecampaign_api_credentials_source'] ) {
			$api_key = $this->get_global_api_key();
			$api_url = $this->get_global_api_url();
		} else {
			$api_key = $form_settings['activecampaign_api_key'];
			$api_url = $form_settings['activecampaign_api_url'];
		}

		$handler = new Classes\Activecampaign_Handler( $api_key, $api_url );
		$handler->create_subscriber( $subscriber );
	}

	/**
	 * Create subscriber array from submitted data and form settings
	 * returns a subscriber array or false on error
	 *
	 * @param Form_Record $record
	 *
	 * @return array|bool
	 */
	private function create_subscriber_object( Form_Record $record ) {
		$form_settings = $record->get( 'form_settings' );
		$subscriber = $this->map_fields( $record );

		if ( ! isset( $subscriber['email'] ) ) {
			return false;
		}

		if ( ! isset( $form_settings['activecampaign_list'] ) ) {
			return false;
		}

		$subscriber['ip4'] = Utils::get_client_ip();
		$list_id = $form_settings['activecampaign_list'];
		$subscriber[ 'p[' . $list_id . ']' ] = $list_id;

		if ( isset( $form_settings['activecampaign_tags'] ) && ! empty( $form_settings['activecampaign_tags'] ) ) {
			$subscriber['tags'] = $form_settings['activecampaign_tags'];
		}

		if ( isset( $form_settings['form_id'] ) && ! empty( $form_settings['form_id'] ) ) {
			$subscriber['form'] = $form_settings['form_id'];
		}

		return $subscriber;
	}

	/**
	 * @param Form_Record $record
	 *
	 * @return array
	 */
	private function map_fields( Form_Record $record ) {
		$subscriber = [];
		$fields = $record->get( 'fields' );

		// Other form has a field mapping
		foreach ( $record->get_form_settings( 'activecampaign_fields_map' ) as $map_item ) {
			if ( empty( $fields[ $map_item['local_id'] ]['value'] ) ) {
				continue;
			}

			$value = $fields[ $map_item['local_id'] ]['value'];
			$subscriber[ $map_item['remote_id'] ] = $value;
		}

		return $subscriber;
	}

	/**
	 * @param array $data
	 *
	 * @return array
	 * @throws \Exception
	 */
	public function handle_panel_request( array $data ) {
		if ( ! empty( $data['api_cred'] ) && 'default' === $data['api_cred'] ) {
			$api_key = $this->get_global_api_key();
			$api_url = $this->get_global_api_url();
		} elseif ( ! empty( $data['api_key'] ) && ! empty( $data['api_url'] ) ) {
			$api_key = $data['api_key'];
			$api_url = $data['api_url'];
		}

		if ( empty( $api_key ) ) {
			throw new \Exception( '`api_key` is required', 400 );
		}

		if ( empty( $api_url ) ) {
			throw new \Exception( '`api_url` is required', 400 );
		}

		$handler = new Classes\Activecampaign_Handler( $api_key, $api_url );

		return $handler->get_lists();
	}

	public function ajax_validate_api_token() {
		check_ajax_referer( self::OPTION_NAME_API_KEY, '_nonce' );
		if ( ! isset( $_POST['api_key'] ) || ! isset( $_POST['api_url'] ) ) {
			wp_send_json_error();
		}
		try {
			new Classes\Activecampaign_Handler( $_POST['api_key'], $_POST['api_url'] );
		} catch ( \Exception $exception ) {
			wp_send_json_error();
		}
		wp_send_json_success();
	}

	public function register_admin_fields( Settings $settings ) {
		$settings->add_section( Settings::TAB_INTEGRATIONS, 'activecampign', [
			'callback' => function() {
				echo '<hr><h2>' . esc_html__( 'ActiveCampaign', 'elementor-pro' ) . '</h2>';
			},
			'fields' => [
				self::OPTION_NAME_API_KEY => [
					'label' => esc_html__( 'API Key', 'elementor-pro' ),
					'field_args' => [
						'type' => 'text',
					],
				],
				self::OPTION_NAME_API_URL => [
					'label' => esc_html__( 'API URL', 'elementor-pro' ),
					'field_args' => [
						'type' => 'url',
						/* translators: 1: Link open tag, 2: Link closing tag. */
						'desc' => sprintf(
							esc_html__( 'To integrate with our forms you need an %1$sAPI Key%2$s.', 'elementor-pro' ),
							'<a href="https://help.activecampaign.com/hc/en-us/articles/207317590-Getting-started-with-the-API" target="_blank">',
							'</a>'
						),
					],
				],
				'validate_api_data' => [
					'field_args' => [
						'type' => 'raw_html',
						'html' => sprintf( '<button data-action="%s" data-nonce="%s" class="button elementor-button-spinner" id="elementor_pro_activecampaign_api_key_button">%s</button>', self::OPTION_NAME_API_KEY . '_validate', wp_create_nonce( self::OPTION_NAME_API_KEY ), esc_html__( 'Validate API Key', 'elementor-pro' ) ),
					],
				],
			],
		] );
	}

	public function __construct() {
		if ( is_admin() ) {
			add_action( 'elementor/admin/after_create_settings/' . Settings::PAGE_ID, [ $this, 'register_admin_fields' ], 15 );
		}
		add_action( 'wp_ajax_' . self::OPTION_NAME_API_KEY . '_validate', [ $this, 'ajax_validate_api_token' ] );
	}

	protected function get_fields_map_control_options() {
		return [
			'condition' => [
				'activecampaign_list!' => '',
			],
		];
	}
}
modules/forms/actions/activity-log.php000064400000001714150755004310014131 0ustar00<?php
namespace ElementorPro\Modules\Forms\Actions;

use ElementorPro\Modules\Forms\Classes\Action_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Integration with Activity Log
 */
class Activity_Log extends Action_Base {

	public function get_name() {
		return 'activity-log';
	}

	public function get_label() {
		return 'Activity Log';
	}

	public function register_settings_section( $widget ) {}

	public function on_export( $element ) {}

	public function aal_init_roles( $roles ) {
		$roles['manage_options'][] = 'Elementor Forms';

		return $roles;
	}

	public function run( $record, $ajax_handler ) {
		aal_insert_log(
			[
				'action' => 'New Record',
				'object_type' => 'Elementor Forms',
				'object_id' => $record->get_form_settings( 'id' ),
				'object_name' => $record->get_form_settings( 'form_name' ),
			]
		);
	}

	public function __construct() {
		add_filter( 'aal_init_roles', [ $this, 'aal_init_roles' ] );
	}
}
modules/forms/actions/discord.php000064400000012424150755004310013145 0ustar00<?php
namespace ElementorPro\Modules\Forms\Actions;

use Elementor\Controls_Manager;
use ElementorPro\Modules\Forms\Classes\Action_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Discord extends Action_Base {

	public function get_name() {
		return 'discord';
	}

	public function get_label() {
		return esc_html__( 'Discord', 'elementor-pro' );
	}

	public function register_settings_section( $widget ) {
		$widget->start_controls_section(
			'section_discord',
			[
				'label' => esc_html__( 'Discord', 'elementor-pro' ),
				'condition' => [
					'submit_actions' => $this->get_name(),
				],
			]
		);

		$widget->add_control(
			'discord_webhook',
			[
				'label' => esc_html__( 'Webhook URL', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => 'https://discordapp.com/api/webhooks/',
				'label_block' => true,
				'separator' => 'before',
				'description' => esc_html__( 'Enter the webhook URL that will receive the form\'s submitted data.', 'elementor-pro' ) . ' ' . sprintf( '<a href="%s" target="_blank">%s</a>.', 'https://support.discordapp.com/hc/en-us/articles/228383668-Intro-to-Webhooks', esc_html__( 'Click here for Instructions', 'elementor-pro' ) ),
				'render_type' => 'none',
			]
		);

		$widget->add_control(
			'discord_username',
			[
				'label' => esc_html__( 'Username', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$widget->add_control(
			'discord_avatar_url',
			[
				'label' => esc_html__( 'Avatar URL', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$widget->add_control(
			'discord_title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$widget->add_control(
			'discord_content',
			[
				'label' => esc_html__( 'Description', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
			]
		);

		$widget->add_control(
			'discord_form_data',
			[
				'label' => esc_html__( 'Form Data', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
			]
		);

		$widget->add_control(
			'discord_ts',
			[
				'label' => esc_html__( 'Timestamp', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
			]
		);

		$widget->add_control(
			'discord_webhook_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'alpha' => false,
				'default' => '#D30C5C',
			]
		);

		$widget->end_controls_section();
	}

	public function on_export( $element ) {
		unset(
			$element['discord_avatar_url'],
			$element['discord_content'],
			$element['discord_webhook_color'],
			$element['discord_username'],
			$element['discord_form_data'],
			$element['discord_ts'],
			$element['discord_title'],
			$element['discord_webhook']
		);
	}

	public function run( $record, $ajax_handler ) {
		$settings = $record->get( 'form_settings' );

		if ( empty( $settings['discord_webhook'] ) || false === strpos( $settings['discord_webhook'], 'https://discordapp.com/api/webhooks/' ) ) {
			return;
		}

		// PHPCS - The form is a visitor action and doesn't require a nonce.
		$page_url = isset( $_POST['referrer'] ) ? esc_url( $_POST['referrer'] ) : site_url(); // phpcs:ignore WordPress.Security.NonceVerification.Missing
		$color = isset( $settings['discord_webhook_color'] ) ? hexdec( ltrim( $settings['discord_webhook_color'], '#' ) ) : hexdec( '9c0244' );

		// Build discord  webhook data
		$embeds = [
			'title' => isset( $settings['discord_title'] ) ? $settings['discord_title'] : esc_html__( 'A new Submission', 'elementor-pro' ),
			'description' => isset( $settings['discord_content'] ) ? $settings['discord_content'] : esc_html__( 'A new Form Submission has been received', 'elementor-pro' ),
			'author' => [
				'name'     => isset( $settings['discord_username'] ) ? $settings['discord_username'] : esc_html__( 'Elementor Forms', 'elementor-pro' ),
				'url'      => $page_url,
				'icon_url' => isset( $settings['discord_avatar_url'] ) ? $settings['discord_avatar_url'] : null,
			],
			'url' => $page_url,
			'color' => $color,
		];

		if ( ! empty( $settings['discord_form_data'] ) && 'yes' === $settings['discord_form_data'] ) {
			// prepare Form Data
			$raw_fields = $record->get( 'fields' );
			$fields = [];
			foreach ( $raw_fields as $id => $field ) {
				$fields[] = [
					'name'   => $id,
					'value'  => $field['value'],
					'inline' => false,
				];
			}

			$embeds['fields'] = array_values( $fields );
		}

		if ( ! empty( $settings['discord_ts'] ) && 'yes' === $settings['discord_ts'] ) {
			$embeds['timestamp'] = gmdate( \DateTime::ISO8601 );
			$embeds['footer'] = [
				'text' => sprintf( esc_html__( 'Powered by %s', 'elementor-pro' ), 'Elementor' ),
				'icon_url' => is_ssl() ? ELEMENTOR_ASSETS_URL . 'images/logo-icon.png' : null,
			];
		}

		$webhook_data = [
			'embeds' => array_values( [ $embeds ] ),
		];

		$webhook_data = apply_filters( 'elementor_pro/forms/discord/webhook_args', $webhook_data );

		$response = wp_remote_post( $settings['discord_webhook'], [
			'body' => wp_json_encode( $webhook_data ),
			'headers' => [ 'Content-Type' => 'application/json; charset=utf-8' ],
		]);

		if ( 204 !== (int) wp_remote_retrieve_response_code( $response ) ) {
			throw new \Exception( esc_html__( 'Webhook Error', 'elementor-pro' ) );
		}
	}
}
modules/forms/actions/redirect.php000064400000003315150755004310013316 0ustar00<?php
namespace ElementorPro\Modules\Forms\Actions;

use Elementor\Controls_Manager;
use Elementor\Modules\DynamicTags\Module as TagsModule;
use ElementorPro\Modules\Forms\Classes\Action_Base;


if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Redirect extends Action_Base {

	public function get_name() {
		return 'redirect';
	}

	public function get_label() {
		return esc_html__( 'Redirect', 'elementor-pro' );
	}

	public function register_settings_section( $widget ) {
		$widget->start_controls_section(
			'section_redirect',
			[
				'label' => esc_html__( 'Redirect', 'elementor-pro' ),
				'condition' => [
					'submit_actions' => $this->get_name(),
				],
			]
		);

		$widget->add_control(
			'redirect_to',
			[
				'label' => esc_html__( 'Redirect To', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
					'categories' => [
						TagsModule::POST_META_CATEGORY,
						TagsModule::TEXT_CATEGORY,
						TagsModule::URL_CATEGORY,
					],
				],
				'label_block' => true,
				'render_type' => 'none',
				'classes' => 'elementor-control-direction-ltr',
			]
		);

		$widget->end_controls_section();
	}

	public function on_export( $element ) {
		unset(
			$element['settings']['redirect_to']
		);

		return $element;
	}

	public function run( $record, $ajax_handler ) {
		$redirect_to = $record->get_form_settings( 'redirect_to' );

		$redirect_to = $record->replace_setting_shortcodes( $redirect_to, true );

		if ( ! empty( $redirect_to ) && filter_var( $redirect_to, FILTER_VALIDATE_URL ) ) {
			$ajax_handler->add_response_data( 'redirect_url', $redirect_to );
		}
	}
}
modules/forms/actions/email.php000064400000024333150755004310012607 0ustar00<?php
namespace ElementorPro\Modules\Forms\Actions;

use Elementor\Controls_Manager;
use ElementorPro\Core\Utils;
use ElementorPro\Modules\Forms\Classes\Ajax_Handler;
use ElementorPro\Modules\Forms\Classes\Action_Base;
use ElementorPro\Modules\Forms\Classes\Form_Record;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Email extends Action_Base {

	public function get_name() {
		return 'email';
	}

	public function get_label() {
		return esc_html__( 'Email', 'elementor-pro' );
	}

	public function register_settings_section( $widget ) {
		$widget->start_controls_section(
			$this->get_control_id( 'section_email' ),
			[
				'label' => $this->get_label(),
				'tab' => Controls_Manager::TAB_CONTENT,
				'condition' => [
					'submit_actions' => $this->get_name(),
				],
			]
		);

		$widget->add_control(
			$this->get_control_id( 'email_to' ),
			[
				'label' => esc_html__( 'To', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => get_option( 'admin_email' ),
				'placeholder' => get_option( 'admin_email' ),
				'label_block' => true,
				'title' => esc_html__( 'Separate emails with commas', 'elementor-pro' ),
				'render_type' => 'none',
			]
		);

		/* translators: %s: Site title. */
		$default_message = sprintf( esc_html__( 'New message from "%s"', 'elementor-pro' ), get_option( 'blogname' ) );

		$widget->add_control(
			$this->get_control_id( 'email_subject' ),
			[
				'label' => esc_html__( 'Subject', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => $default_message,
				'placeholder' => $default_message,
				'label_block' => true,
				'render_type' => 'none',
			]
		);

		$widget->add_control(
			$this->get_control_id( 'email_content' ),
			[
				'label' => esc_html__( 'Message', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'default' => '[all-fields]',
				'placeholder' => '[all-fields]',
				'description' => sprintf( esc_html__( 'By default, all form fields are sent via %s shortcode. To customize sent fields, copy the shortcode that appears inside each field and paste it above.', 'elementor-pro' ), '<code>[all-fields]</code>' ),
				'render_type' => 'none',
			]
		);

		$site_domain = Utils::get_site_domain();

		$widget->add_control(
			$this->get_control_id( 'email_from' ),
			[
				'label' => esc_html__( 'From Email', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => 'email@' . $site_domain,
				'render_type' => 'none',
			]
		);

		$widget->add_control(
			$this->get_control_id( 'email_from_name' ),
			[
				'label' => esc_html__( 'From Name', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => get_bloginfo( 'name' ),
				'render_type' => 'none',
			]
		);

		$widget->add_control(
			$this->get_control_id( 'email_reply_to' ),
			[
				'label' => esc_html__( 'Reply-To', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => '',
				],
				'render_type' => 'none',
			]
		);

		$widget->add_control(
			$this->get_control_id( 'email_to_cc' ),
			[
				'label' => esc_html__( 'Cc', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => '',
				'title' => esc_html__( 'Separate emails with commas', 'elementor-pro' ),
				'render_type' => 'none',
			]
		);

		$widget->add_control(
			$this->get_control_id( 'email_to_bcc' ),
			[
				'label' => esc_html__( 'Bcc', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => '',
				'title' => esc_html__( 'Separate emails with commas', 'elementor-pro' ),
				'render_type' => 'none',
			]
		);

		$widget->add_control(
			$this->get_control_id( 'form_metadata' ),
			[
				'label' => esc_html__( 'Meta Data', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'multiple' => true,
				'label_block' => true,
				'separator' => 'before',
				'default' => [
					'date',
					'time',
					'page_url',
					'user_agent',
					'remote_ip',
					'credit',
				],
				'options' => [
					'date' => esc_html__( 'Date', 'elementor-pro' ),
					'time' => esc_html__( 'Time', 'elementor-pro' ),
					'page_url' => esc_html__( 'Page URL', 'elementor-pro' ),
					'user_agent' => esc_html__( 'User Agent', 'elementor-pro' ),
					'remote_ip' => esc_html__( 'Remote IP', 'elementor-pro' ),
					'credit' => esc_html__( 'Credit', 'elementor-pro' ),
				],
				'render_type' => 'none',
			]
		);

		$widget->add_control(
			$this->get_control_id( 'email_content_type' ),
			[
				'label' => esc_html__( 'Send As', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'html',
				'render_type' => 'none',
				'options' => [
					'html' => esc_html__( 'HTML', 'elementor-pro' ),
					'plain' => esc_html__( 'Plain', 'elementor-pro' ),
				],
			]
		);

		$widget->end_controls_section();
	}

	public function on_export( $element ) {
		$controls_to_unset = [
			'email_to',
			'email_from',
			'email_from_name',
			'email_subject',
			'email_reply_to',
			'email_to_cc',
			'email_to_bcc',
		];

		foreach ( $controls_to_unset as $base_id ) {
			$control_id = $this->get_control_id( $base_id );
			unset( $element['settings'][ $control_id ] );
		}

		return $element;
	}

	/**
	 * @param \ElementorPro\Modules\Forms\Classes\Form_Record  $record
	 * @param \ElementorPro\Modules\Forms\Classes\Ajax_Handler $ajax_handler
	 */
	public function run( $record, $ajax_handler ) {
		$settings = $record->get( 'form_settings' );
		$send_html = 'plain' !== $settings[ $this->get_control_id( 'email_content_type' ) ];
		$line_break = $send_html ? '<br>' : "\n";

		$fields = [
			'email_to' => get_option( 'admin_email' ),
			/* translators: %s: Site title. */
			'email_subject' => sprintf( esc_html__( 'New message from "%s"', 'elementor-pro' ), get_bloginfo( 'name' ) ),
			'email_content' => '[all-fields]',
			'email_from_name' => get_bloginfo( 'name' ),
			'email_from' => get_bloginfo( 'admin_email' ),
			'email_reply_to' => 'noreply@' . Utils::get_site_domain(),
			'email_to_cc' => '',
			'email_to_bcc' => '',
		];

		foreach ( $fields as $key => $default ) {
			$setting = trim( $settings[ $this->get_control_id( $key ) ] );
			$setting = $record->replace_setting_shortcodes( $setting );
			if ( ! empty( $setting ) ) {
				$fields[ $key ] = $setting;
			}
		}

		$email_reply_to = $this->get_reply_to( $record, $fields );

		$fields['email_content'] = $this->replace_content_shortcodes( $fields['email_content'], $record, $line_break );

		$email_meta = '';

		$form_metadata_settings = $settings[ $this->get_control_id( 'form_metadata' ) ];

		foreach ( $record->get( 'meta' ) as $id => $field ) {
			if ( in_array( $id, $form_metadata_settings ) ) {
				$email_meta .= $this->field_formatted( $field ) . $line_break;
			}
		}

		if ( ! empty( $email_meta ) ) {
			$fields['email_content'] .= $line_break . '---' . $line_break . $line_break . $email_meta;
		}

		$headers = sprintf( 'From: %s <%s>' . "\r\n", $fields['email_from_name'], $fields['email_from'] );
		$headers .= sprintf( 'Reply-To: %s' . "\r\n", $email_reply_to );

		if ( $send_html ) {
			$headers .= 'Content-Type: text/html; charset=UTF-8' . "\r\n";
		}

		$cc_header = '';
		if ( ! empty( $fields['email_to_cc'] ) ) {
			$cc_header = 'Cc: ' . $fields['email_to_cc'] . "\r\n";
		}

		/**
		 * Email headers.
		 *
		 * Filters the additional headers sent when the form send an email.
		 *
		 * @since 1.0.0
		 *
		 * @param string|array $headers Additional headers.
		 */
		$headers = apply_filters( 'elementor_pro/forms/wp_mail_headers', $headers );

		/**
		 * Email content.
		 *
		 * Filters the content of the email sent by the form.
		 *
		 * @since 1.0.0
		 *
		 * @param string $email_content Email content.
		 */
		$fields['email_content'] = apply_filters( 'elementor_pro/forms/wp_mail_message', $fields['email_content'] );

		$email_sent = wp_mail( $fields['email_to'], $fields['email_subject'], $fields['email_content'], $headers . $cc_header );

		if ( ! empty( $fields['email_to_bcc'] ) ) {
			$bcc_emails = explode( ',', $fields['email_to_bcc'] );
			foreach ( $bcc_emails as $bcc_email ) {
				wp_mail( trim( $bcc_email ), $fields['email_subject'], $fields['email_content'], $headers );
			}
		}

		/**
		 * Elementor form mail sent.
		 *
		 * Fires when an email was sent successfully.
		 *
		 * @since 1.0.0
		 *
		 * @param array       $settings Form settings.
		 * @param Form_Record $record   An instance of the form record.
		 */
		do_action( 'elementor_pro/forms/mail_sent', $settings, $record );

		if ( ! $email_sent ) {
			$message = Ajax_Handler::get_default_message( Ajax_Handler::SERVER_ERROR, $settings );

			$ajax_handler->add_error_message( $message );

			throw new \Exception( $message );
		}
	}

	private function field_formatted( $field ) {
		$formatted = '';
		if ( ! empty( $field['title'] ) ) {
			$formatted = sprintf( '%s: %s', $field['title'], $field['value'] );
		} elseif ( ! empty( $field['value'] ) ) {
			$formatted = sprintf( '%s', $field['value'] );
		}

		return $formatted;
	}

	// Allow overwrite the control_id with a prefix, @see Email2
	protected function get_control_id( $control_id ) {
		return $control_id;
	}

	protected function get_reply_to( $record, $fields ) {
		$email_reply_to  = '';

		if ( ! empty( $fields['email_reply_to'] ) ) {
			$sent_data = $record->get( 'sent_data' );
			foreach ( $record->get( 'fields' ) as $field_index => $field ) {
				if ( $field_index === $fields['email_reply_to'] && ! empty( $sent_data[ $field_index ] ) && is_email( $sent_data[ $field_index ] ) ) {
					$email_reply_to = $sent_data[ $field_index ];
					break;
				}
			}
		}

		return $email_reply_to;
	}

	/**
	 * @param string      $email_content
	 * @param Form_Record $record
	 *
	 * @return string
	 */
	private function replace_content_shortcodes( $email_content, $record, $line_break ) {
		$email_content = do_shortcode( $email_content );
		$all_fields_shortcode = '[all-fields]';

		if ( false !== strpos( $email_content, $all_fields_shortcode ) ) {
			$text = '';
			foreach ( $record->get( 'fields' ) as $field ) {
				$formatted = $this->field_formatted( $field );
				if ( ( 'textarea' === $field['type'] ) && ( '<br>' === $line_break ) ) {
					$formatted = str_replace( [ "\r\n", "\n", "\r" ], '<br />', $formatted );
				}
				$text .= $formatted . $line_break;
			}

			$email_content = str_replace( $all_fields_shortcode, $text, $email_content );

		}

		return $email_content;
	}
}
modules/forms/actions/drip.php000064400000021014150755004310012447 0ustar00<?php
namespace ElementorPro\Modules\Forms\Actions;

use Elementor\Controls_Manager;
use Elementor\Settings;
use ElementorPro\Modules\Forms\Classes\Form_Record;
use ElementorPro\Modules\Forms\Classes\Integration_Base;
use ElementorPro\Modules\Forms\Classes\Drip_Handler;
use ElementorPro\Core\Utils;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Drip extends Integration_Base {

	const OPTION_NAME_API_KEY = 'pro_drip_api_token';

	private function get_global_api_key() {
		return get_option( 'elementor_' . self::OPTION_NAME_API_KEY );
	}

	public function get_name() {
		return 'drip';
	}

	public function get_label() {
		return esc_html__( 'Drip', 'elementor-pro' );
	}

	public function register_settings_section( $widget ) {
		$widget->start_controls_section(
			'section_drip',
			[
				'label' => esc_html__( 'Drip', 'elementor-pro' ),
				'condition' => [
					'submit_actions' => $this->get_name(),
				],
			]
		);

		self::global_api_control(
			$widget,
			$this->get_global_api_key(),
			'Drip API Token',
			[
				'drip_api_token_source' => 'default',
			],
			$this->get_name()
		);

		$widget->add_control(
			'drip_api_token_source',
			[
				'label' => esc_html__( 'API Key', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'label_block' => false,
				'options' => [
					'default' => 'Default',
					'custom' => 'Custom',
				],
				'default' => 'default',
			]
		);

		$widget->add_control(
			'drip_custom_api_token',
			[
				'label' => esc_html__( 'Custom API Key', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'condition' => [
					'drip_api_token_source' => 'custom',
				],
				'description' => esc_html__( 'Use this field to set a custom API key for the current form', 'elementor-pro' ),
			]
		);

		$widget->add_control(
			'drip_account',
			[
				'label' => esc_html__( 'Account', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [],
				'render_type' => 'none',
				'conditions' => [
					'relation' => 'or',
					'terms' => [
						[
							'name' => 'drip_custom_api_token',
							'operator' => '!==',
							'value' => '',
						],
						[
							'name' => 'drip_api_token_source',
							'operator' => '=',
							'value' => 'default',
						],
					],
				],
			]
		);

		$this->register_fields_map_control( $widget );

		$widget->add_control(
			'drip_custom_field_heading',
			[
				'label' => esc_html__( 'Send Additional Data to Drip', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'condition' => [
					'drip_account!' => '',
				],
			]
		);

		$widget->add_control(
			'drip_custom_fields',
			[
				'label' => esc_html__( 'Form Fields', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'no',
				'description' => esc_html__( 'Send all form fields to drip as custom fields', 'elementor-pro' ),
				'condition' => [
					'drip_account!' => '',
				],
			]
		);

		$widget->add_control(
			'tags',
			[
				'label' => esc_html__( 'Tags', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'description' => esc_html__( 'Add as many tags as you want, comma separated.', 'elementor-pro' ),
				'condition' => [
					'drip_account!' => '',
				],
			]
		);

		$widget->end_controls_section();
	}

	public function on_export( $element ) {
		unset(
			$element['settings']['drip_api_token_source'],
			$element['settings']['drip_custom_api_token'],
			$element['settings']['drip_account'],
			$element['settings']['drip_fields_map'],
			$element['settings']['tags'],
			$element['settings']['drip_custom_fields']
		);

		return $element;
	}

	public function run( $record, $ajax_handler ) {
		$form_settings = $record->get( 'form_settings' );
		$subscriber = $this->create_subscriber_object( $record );

		if ( ! $subscriber ) {
			throw new \Exception( esc_html__( 'Integration requires an email field', 'elementor-pro' ) );
		}

		if ( 'default' === $form_settings['drip_api_token_source'] ) {
			$api_key = $this->get_global_api_key();
		} else {
			$api_key = $form_settings['drip_custom_api_token'];
		}

		$handler = new Drip_Handler( $api_key );
		$handler->create_subscriber( $form_settings['drip_account'], $subscriber );
	}

	/**
	 * Create subscriber array from submitted data and form settings
	 * returns a subscriber array or false on error
	 *
	 * @param Form_Record $record
	 *
	 * @return array|bool
	 */
	private function create_subscriber_object( Form_Record $record ) {
		$form_settings = $record->get( 'form_settings' );
		$email = $this->map_email_field( $record );

		if ( ! $email ) {
			return false;
		}
		$subscriber = [
			'ip_address' => Utils::get_client_ip(),
			'email' => $email,
		];

		if ( isset( $form_settings['tags'] ) && ! empty( $form_settings['tags'] ) ) {
			$tags = $record->replace_setting_shortcodes( $form_settings['tags'] );

			$subscriber['tags'] = explode( ',', $tags );
		}

		$custom_fields = [];
		if ( isset( $form_settings['drip_custom_fields'] ) && 'yes' === $form_settings['drip_custom_fields'] ) {
			$custom_fields = $this->get_drip_custom_fields( $record );
		}

		$subscriber['custom_fields'] = $custom_fields;

		return $subscriber;
	}

	/**
	 * @param Form_Record $record
	 *
	 * @return array
	 */
	private function get_drip_custom_fields( Form_Record $record ) {
		$local_email_id = '';
		foreach ( $record->get_form_settings( 'drip_fields_map' ) as $map_item ) {
			if ( 'email' === $map_item['remote_id'] ) {
				$local_email_id = $map_item['local_id'];
			}
		}
		$custom_fields = [];
		foreach ( $record->get( 'fields' ) as $id => $field ) {
			if ( $local_email_id === $id ) {
				continue;
			}
			$custom_fields[ $id ] = $field['value'];
		}

		return $custom_fields;
	}

	/**
	 * extracts Email field from form based on mapping
	 * returns email address or false if missing
	 *
	 * @param Form_Record $record
	 *
	 * @return bool
	 */
	private function map_email_field( Form_Record $record ) {
		$fields = $record->get( 'fields' );
		foreach ( $record->get_form_settings( 'drip_fields_map' ) as $map_item ) {
			if ( empty( $fields[ $map_item['local_id'] ]['value'] ) ) {
				continue;
			}

			$value = $fields[ $map_item['local_id'] ]['value'];
			if ( 'email' === $map_item['remote_id'] ) {
				return $value;
			}
		}

		return false;
	}

	/**
	 * @param array $data
	 *
	 * @return array
	 * @throws \Exception
	 */
	public function handle_panel_request( array $data ) {
		if ( ! empty( $data['api_token'] ) && 'default' === $data['api_token'] ) {
			$api_key = $this->get_global_api_key();
		} elseif ( ! empty( $data['custom_api_token'] ) ) {
			$api_key = $data['custom_api_token'];
		}

		if ( empty( $api_key ) ) {
			throw new \Exception( '`api_token` is required', 400 );
		}

		$handler = new Drip_Handler( $api_key );

		return $handler->get_accounts();
	}

	public function register_admin_fields( Settings $settings ) {
		$settings->add_section( Settings::TAB_INTEGRATIONS, 'drip', [
			'callback' => function() {
				echo '<hr><h2>' . esc_html__( 'Drip', 'elementor-pro' ) . '</h2>';
			},
			'fields' => [
				self::OPTION_NAME_API_KEY => [
					'label' => esc_html__( 'API Key', 'elementor-pro' ),
					'field_args' => [
						'type' => 'text',
						'desc' => sprintf(
							/* translators: 1: Link open tag, 2: Link closing tag. */
							esc_html__( 'To integrate with our forms you need an %1$sAPI Key%2$s.', 'elementor-pro' ),
							'<a href="http://kb.getdrip.com/general/where-can-i-find-my-api-token/" target="_blank">',
							'</a>'
						),
					],
				],
				'validate_api_data' => [
					'field_args' => [
						'type' => 'raw_html',
						'html' => sprintf( '<button data-action="%s" data-nonce="%s" class="button elementor-button-spinner" id="elementor_pro_drip_api_token_button">%s</button>', self::OPTION_NAME_API_KEY . '_validate', wp_create_nonce( self::OPTION_NAME_API_KEY ), esc_html__( 'Validate API Key', 'elementor-pro' ) ),
					],
				],
			],
		] );
	}

	/**
	 *
	 */
	public function ajax_validate_api_token() {
		check_ajax_referer( self::OPTION_NAME_API_KEY, '_nonce' );
		if ( ! isset( $_POST['api_key'] ) ) {
			wp_send_json_error();
		}
		try {
			new Drip_Handler( $_POST['api_key'] );
		} catch ( \Exception $exception ) {
			wp_send_json_error();
		}
		wp_send_json_success();
	}

	public function __construct() {
		if ( is_admin() ) {
			add_action( 'elementor/admin/after_create_settings/' . Settings::PAGE_ID, [ $this, 'register_admin_fields' ], 15 );
		}
		add_action( 'wp_ajax_' . self::OPTION_NAME_API_KEY . '_validate', [ $this, 'ajax_validate_api_token' ] );
	}

	protected function get_fields_map_control_options() {
		return [
			'condition' => [
				'drip_account!' => '',
			],
		];
	}
}
modules/forms/actions/mailerlite.php000064400000017211150755004310013644 0ustar00<?php
namespace ElementorPro\Modules\Forms\Actions;

use Elementor\Controls_Manager;
use Elementor\Settings;
use ElementorPro\Modules\Forms\Classes\Form_Record;
use ElementorPro\Modules\Forms\Classes\Mailerlite_Handler;
use ElementorPro\Modules\Forms\Classes\Integration_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Mailerlite extends Integration_Base {

	const OPTION_NAME_API_KEY = 'pro_mailerlite_api_key';

	private function get_global_api_key() {
		return get_option( 'elementor_' . self::OPTION_NAME_API_KEY );
	}

	public function get_name() {
		return 'mailerlite';
	}

	public function get_label() {
		return esc_html__( 'MailerLite', 'elementor-pro' );
	}

	public function register_settings_section( $widget ) {
		$widget->start_controls_section(
			'section_mailerlite',
			[
				'label' => esc_html__( 'MailerLite', 'elementor-pro' ),
				'condition' => [
					'submit_actions' => $this->get_name(),
				],
			]
		);

		self::global_api_control(
			$widget,
			$this->get_global_api_key(),
			'MailerLite API Key',
			[
				'mailerlite_api_key_source' => 'default',
			],
			$this->get_name()
		);

		$widget->add_control(
			'mailerlite_api_key_source',
			[
				'label' => esc_html__( 'API Key', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'label_block' => false,
				'options' => [
					'default' => 'Default',
					'custom' => 'Custom',
				],
				'default' => 'default',
			]
		);

		$widget->add_control(
			'mailerlite_custom_api_key',
			[
				'label' => esc_html__( 'Custom API Key', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'condition' => [
					'mailerlite_api_key_source' => 'custom',
				],
				'description' => esc_html__( 'Use this field to set a custom API Key for the current form', 'elementor-pro' ),
			]
		);

		$widget->add_control(
			'mailerlite_group',
			[
				'label' => esc_html__( 'Group', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [],
				'render_type' => 'none',
				'conditions' => [
					'relation' => 'or',
					'terms' => [
						[
							'name' => 'mailerlite_custom_api_key',
							'operator' => '!==',
							'value' => '',
						],
						[
							'name' => 'mailerlite_api_key_source',
							'operator' => '=',
							'value' => 'default',
						],
					],
				],
			]
		);

		$this->register_fields_map_control( $widget );

		$widget->add_control(
			'allow_resubscribe',
			[
				'label' => esc_html__( 'Allow Resubscribe', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'condition' => [
					'mailerlite_group!' => '',
				],
			]
		);

		$widget->end_controls_section();
	}

	public function on_export( $element ) {
		unset(
			$element['settings']['mailerlite_api_key_source'],
			$element['settings']['mailerlite_custom_api_key'],
			$element['settings']['mailerlite_group'],
			$element['settings']['mailerlite_fields_map']
		);

		return $element;
	}

	public function run( $record, $ajax_handler ) {
		$form_settings = $record->get( 'form_settings' );
		$subscriber = $this->create_subscriber_object( $record );

		if ( ! $subscriber ) {
			new \Exception( esc_html__( 'Integration requires an email field', 'elementor-pro' ) );
		}

		if ( 'default' === $form_settings['mailerlite_api_key_source'] ) {
			$api_key = $this->get_global_api_key();
		} else {
			$api_key = $form_settings['mailerlite_custom_api_key'];
		}

		$handler = new Mailerlite_Handler( $api_key );
		$handler->create_subscriber( $form_settings['mailerlite_group'], $subscriber );
	}

	/**
	 * Create subscriber array from submitted data and form settings
	 * returns a subscriber array or false on error
	 *
	 * @param Form_Record $record
	 *
	 * @return array|bool
	 */
	private function create_subscriber_object( Form_Record $record ) {
		$email = $this->get_mapped_field( $record, 'email' );

		if ( ! $email ) {
			return false;
		}

		$subscriber = [
			'email' => $email,
			'name' => $this->get_mapped_field( $record, 'name' ),
		];

		$subscriber['fields'] = $this->get_mailerlite_custom_fields( $record );

		// Allow re-subscribe
		$allow_resubscribe = $record->get_form_settings( 'allow_resubscribe' );
		if ( ! empty( $allow_resubscribe ) && 'yes' === $allow_resubscribe ) {
			$subscriber['resubscribe'] = true;
		}

		return $subscriber;
	}

	/**
	 * @param Form_Record $record
	 *
	 * @return array
	 */
	private function get_mailerlite_custom_fields( Form_Record $record ) {
		$custom_fields = [];
		$form_fields = $record->get( 'fields' );
		$field_mapping = $record->get_form_settings( 'mailerlite_fields_map' );
		foreach ( $field_mapping as $map_item ) {
			if ( in_array( $map_item['remote_id'], [ 'email', 'name' ] ) ) {
				continue;
			}

			if ( empty( $map_item['local_id'] ) ) {
				continue;
			}

			foreach ( $form_fields as $id => $field ) {
				if ( $id !== $map_item['local_id'] ) {
					continue;
				}
				$custom_fields[ $map_item['remote_id'] ] = $field['value'];
			}
		}

		return $custom_fields;
	}

	private function get_mapped_field( Form_Record $record, $field_id ) {
		$fields = $record->get( 'fields' );
		foreach ( $record->get_form_settings( 'mailerlite_fields_map' ) as $map_item ) {
			if ( empty( $fields[ $map_item['local_id'] ]['value'] ) ) {
				continue;
			}

			if ( $field_id === $map_item['remote_id'] ) {
				return $fields[ $map_item['local_id'] ]['value'];
			}
		}

		return '';
	}

	public function handle_panel_request( array $data ) {
		if ( ! empty( $data['api_key'] ) && 'default' === $data['api_key'] ) {
			$api_key = $this->get_global_api_key();
		} elseif ( ! empty( $data['custom_api_key'] ) ) {
			$api_key = $data['custom_api_key'];
		}

		if ( empty( $api_key ) ) {
			throw new \Exception( '`api_key` is required', 400 );
		}

		$handler = new Mailerlite_Handler( $api_key );
		if ( 'groups' === $data['mailerlite_action'] ) {
			return $handler->get_groups();
		}
	}

	public function register_admin_fields( Settings $settings ) {
		$settings->add_section( Settings::TAB_INTEGRATIONS, 'mailerlite', [
			'callback' => function() {
				echo '<hr><h2>' . esc_html__( 'MailerLite', 'elementor-pro' ) . '</h2>';
			},
			'fields' => [
				self::OPTION_NAME_API_KEY => [
					'label' => esc_html__( 'API Key', 'elementor-pro' ),
					'field_args' => [
						'type' => 'text',
						'desc' => sprintf(
							/* translators: 1: Link open tag, 2: Link closing tag. */
							esc_html__( 'To integrate with our forms you need an %1$sAPI Key%2$s.', 'elementor-pro' ),
							'<a href="https://help.mailerlite.com/article/show/35040-where-can-i-find-the-api-key" target="_blank">',
							'</a>'
						),
					],
				],
				'validate_api_data' => [
					'field_args' => [
						'type' => 'raw_html',
						'html' => sprintf( '<button data-action="%s" data-nonce="%s" class="button elementor-button-spinner" id="elementor_pro_mailerlite_api_key_button">%s</button>', self::OPTION_NAME_API_KEY . '_validate', wp_create_nonce( self::OPTION_NAME_API_KEY ), esc_html__( 'Validate API Key', 'elementor-pro' ) ),
					],
				],
			],
		] );
	}

	public function ajax_validate_api_key() {
		check_ajax_referer( self::OPTION_NAME_API_KEY, '_nonce' );
		if ( ! isset( $_POST['api_key'] ) ) {
			wp_send_json_error();
		}
		try {
			new Mailerlite_Handler( $_POST['api_key'] );
		} catch ( \Exception $exception ) {
			wp_send_json_error();
		}
		wp_send_json_success();
	}

	public function __construct() {
		if ( is_admin() ) {
			add_action( 'elementor/admin/after_create_settings/' . Settings::PAGE_ID, [ $this, 'register_admin_fields' ], 15 );
		}
		add_action( 'wp_ajax_' . self::OPTION_NAME_API_KEY . '_validate', [ $this, 'ajax_validate_api_key' ] );
	}

	protected function get_fields_map_control_options() {
		return [
			'condition' => [
				'mailerlite_group!' => '',
			],
		];
	}
}
modules/forms/actions/cf7db.php000064400000001311150755004310012474 0ustar00<?php
namespace ElementorPro\Modules\Forms\Actions;

use ElementorPro\Modules\Forms\Classes\Action_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class CF7DB extends Action_Base {

	public function get_name() {
		return 'cf7db';
	}

	public function get_label() {
		return 'Contact Form to Database';
	}

	public function register_settings_section( $widget ) {}

	public function on_export( $element ) {}

	public function run( $record, $ajax_handler ) {
		$data = (object) [
			'title' => $record->get_form_settings( 'form_name' ),
			'posted_data' => $record->get_formatted_data( true ),
		];

		// Call hook to submit data
		do_action_ref_array( 'cfdb_submit', [ $data ] );
	}
}
modules/forms/actions/email2.php000064400000001756150755004310012675 0ustar00<?php
namespace ElementorPro\Modules\Forms\Actions;

use Elementor\Controls_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Email2 extends Email {

	public function get_name() {
		return 'email2';
	}

	public function get_label() {
		return esc_html__( 'Email 2', 'elementor-pro' );
	}

	protected function get_control_id( $control_id ) {
		return $control_id . '_2';
	}

	protected function get_reply_to( $record, $fields ) {
		return isset( $fields['email_reply_to'] ) ? $fields['email_reply_to'] : '';
	}

	public function register_settings_section( $widget ) {
		parent::register_settings_section( $widget );

		$admin_email = get_option( 'admin_email' );

		$widget->update_control(
			$this->get_control_id( 'email_reply_to' ),
			[
				'type' => Controls_Manager::TEXT,
				'default' => $admin_email,
				'placeholder' => $admin_email,
			]
		);

		$widget->update_control(
			$this->get_control_id( 'form_metadata' ),
			[
				'default' => [],
			]
		);
	}
}
modules/forms/actions/getresponse.php000064400000021057150755004310014056 0ustar00<?php
namespace ElementorPro\Modules\Forms\Actions;

use Elementor\Controls_Manager;
use ElementorPro\Modules\Forms\Classes\Form_Record;
use ElementorPro\Modules\Forms\Classes\Integration_Base;
use ElementorPro\Modules\Forms\Classes\Getresponse_Handler;
use ElementorPro\Core\Utils;
use Elementor\Settings;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Getresponse extends Integration_Base {

	const OPTION_NAME_API_KEY = 'pro_getresponse_api_key';

	private function get_global_api_key() {
		return get_option( 'elementor_' . self::OPTION_NAME_API_KEY, '' );
	}

	public function get_name() {
		return 'getresponse';
	}

	public function get_label() {
		return esc_html__( 'GetResponse', 'elementor-pro' );
	}

	public function register_settings_section( $widget ) {
		$widget->start_controls_section(
			'section_getresponse',
			[
				'label' => esc_html__( 'GetResponse', 'elementor-pro' ),
				'condition' => [
					'submit_actions' => $this->get_name(),
				],
			]
		);

		self::global_api_control(
			$widget,
			$this->get_global_api_key(),
			'GetResponse API key',
			[
				'getresponse_api_key_source' => 'default',
			],
			$this->get_name()
		);

		$widget->add_control(
			'getresponse_api_key_source',
			[
				'label' => esc_html__( 'API Key', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'label_block' => false,
				'options' => [
					'default' => 'Default',
					'custom' => 'Custom',
				],
				'default' => 'default',
			]
		);

		$widget->add_control(
			'getresponse_custom_api_key',
			[
				'label' => esc_html__( 'Custom API Key', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'description' => esc_html__( 'Use this field to set a custom API Key for the current form', 'elementor-pro' ),
				'condition' => [
					'getresponse_api_key_source' => 'custom',
				],
			]
		);

		$widget->add_control(
			'getresponse_list',
			[
				'label' => esc_html__( 'List', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [],
				'render_type' => 'none',
				'conditions' => [
					'relation' => 'or',
					'terms' => [
						[
							'name' => 'getresponse_custom_api_key',
							'operator' => '!==',
							'value' => '',
						],
						[
							'name' => 'getresponse_api_key_source',
							'operator' => '=',
							'value' => 'default',
						],
					],
				],
			]
		);

		$widget->add_control(
			'getresponse_dayofcycle',
			[
				'label' => esc_html__( 'Day Of Cycle', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'min' => 0,
				'condition' => [
					'getresponse_list!' => '',
				],
			]
		);

		$this->register_fields_map_control( $widget );

		$widget->end_controls_section();
	}

	public function on_export( $element ) {
		unset(
			$element['settings']['getresponse_api_key_source'],
			$element['settings']['getresponse_custom_api_key'],
			$element['settings']['getresponse_list'],
			$element['settings']['getresponse_fields_map']
		);

		return $element;
	}

	public function run( $record, $ajax_handler ) {
		$form_settings = $record->get( 'form_settings' );
		$subscriber = $this->create_subscriber_object( $record );

		if ( ! $subscriber ) {
			throw new \Exception( esc_html__( 'Integration requires an email field', 'elementor-pro' ) );
		}

		if ( 'default' === $form_settings['getresponse_api_key_source'] ) {
			$api_key = $this->get_global_api_key();
		} else {
			$api_key = $form_settings['getresponse_custom_api_key'];
		}

		try {
			$handler = new Getresponse_Handler( $api_key );
			$handler->create_subscriber( $subscriber );
		} catch ( \Exception $exception ) {
			foreach ( (array) $handler->rest_client->request_cache as $response ) {
				if ( isset( $response['parsed'] ) || ! isset( $response['raw'] ) || ! isset( $response['raw']['response'] ) || ! isset( $response['raw']['response']['code'] ) ) {
					continue;
				}
				if ( ! in_array( $response['raw']['response']['code'], [ 200, 202, 409 ] ) ) {
					throw new \Exception( $exception->getMessage() );
				}
			}
		}
	}

	/**
	 * Create subscriber array from submitted data and form settings
	 * returns a subscriber array or false on error
	 *
	 * @param Form_Record $record
	 *
	 * @return array|bool
	 */
	private function create_subscriber_object( Form_Record $record ) {
		$form_settings = $record->get( 'form_settings' );
		$subscriber = $this->map_fields( $record );

		if ( ! isset( $subscriber['email'] ) ) {
			return false;
		}

		if ( isset( $form_settings['getresponse_dayofcycle'] ) ) {
			$subscriber['dayOfCycle'] = intval( $form_settings['getresponse_dayofcycle'] );
		}
		$subscriber['ipAddress'] = Utils::get_client_ip();
		$subscriber['campaign'] = [ 'campaignId' => $form_settings['getresponse_list'] ];

		return $subscriber;
	}


	/**
	 * @param Form_Record $record
	 *
	 * @return array
	 */
	private function get_getresponse_custom_fields( Form_Record $record ) {
		$local_email_id = '';
		$local_name_id = '';
		foreach ( $record->get_form_settings( 'getresponse_fields_map' ) as $map_item ) {
			if ( 'email' === $map_item['remote_id'] ) {
				$local_email_id = $map_item['local_id'];
			}
			if ( 'name' === $map_item['remote_id'] ) {
				$local_name_id = $map_item['local_id'];
			}
		}
		$custom_fields = [];
		foreach ( $record->get( 'fields' ) as $id => $field ) {
			if ( in_array( $id, [ $local_email_id, $local_name_id ] ) ) {
				continue;
			}
			$custom_fields[ $id ] = $field['value'];
		}

		return $custom_fields;
	}

	/**
	 * @param Form_Record $record
	 *
	 * @return array
	 */
	private function map_fields( Form_Record $record ) {
		$subscriber = [];
		$custom_fields = [];
		$fields = $record->get( 'fields' );

		// Other form has a field mapping
		foreach ( $record->get_form_settings( 'getresponse_fields_map' ) as $map_item ) {
			if ( empty( $fields[ $map_item['local_id'] ]['value'] ) ) {
				continue;
			}

			$value = $fields[ $map_item['local_id'] ]['value'];
			if ( in_array( $map_item['remote_id'], [ 'name', 'email' ] ) ) {
				$subscriber[ $map_item['remote_id'] ] = $value;
				continue;
			}

			$custom_fields[] = [
				'customFieldId' => $map_item['remote_id'],
				'value' => [ $value ],
			];
		}
		$subscriber['customFieldValues'] = $custom_fields;

		return $subscriber;
	}

	/**
	 * @param array $data
	 *
	 * @return array
	 * @throws \Exception
	 */
	public function handle_panel_request( array $data ) {
		if ( ! empty( $data['api_key'] ) && 'default' === $data['api_key'] ) {
			$api_key = $this->get_global_api_key();
		} elseif ( ! empty( $data['custom_api_key'] ) ) {
			$api_key = $data['custom_api_key'];
		}

		if ( empty( $api_key ) ) {
			throw new \Exception( '`api_key` is required', 400 );
		}

		$handler = new Getresponse_Handler( $api_key );

		if ( 'lists' === $data['getresponse_action'] ) {
			return $handler->get_lists();
		}

		return $handler->get_fields();
	}

	public function ajax_validate_api_token() {
		check_ajax_referer( self::OPTION_NAME_API_KEY, '_nonce' );
		if ( ! isset( $_POST['api_key'] ) ) {
			wp_send_json_error();
		}
		try {
			new Getresponse_Handler( $_POST['api_key'] );
		} catch ( \Exception $exception ) {
			wp_send_json_error();
		}
		wp_send_json_success();
	}

	public function register_admin_fields( Settings $settings ) {
		$settings->add_section( Settings::TAB_INTEGRATIONS, 'getresponse', [
			'callback' => function() {
				echo '<hr><h2>' . esc_html__( 'GetResponse', 'elementor-pro' ) . '</h2>';
			},
			'fields' => [
				self::OPTION_NAME_API_KEY => [
					'label' => esc_html__( 'API Key', 'elementor-pro' ),
					'field_args' => [
						'type' => 'text',
						'desc' => sprintf(
							/* translators: 1: Link open tag, 2: Link closing tag. */
							esc_html__( 'To integrate with our forms you need an %1$sAPI Key%2$s.', 'elementor-pro' ),
							'<a href="https://www.getresponse.com" target="_blank">',
							'</a>'
						),
					],
				],
				'validate_api_data' => [
					'field_args' => [
						'type' => 'raw_html',
						'html' => sprintf( '<button data-action="%s" data-nonce="%s" class="button elementor-button-spinner" id="elementor_pro_getresponse_api_key_button">%s</button>', self::OPTION_NAME_API_KEY . '_validate', wp_create_nonce( self::OPTION_NAME_API_KEY ), esc_html__( 'Validate API Key', 'elementor-pro' ) ),
					],
				],
			],
		] );
	}

	public function __construct() {
		if ( is_admin() ) {
			add_action( 'elementor/admin/after_create_settings/' . Settings::PAGE_ID, [ $this, 'register_admin_fields' ], 15 );
		}
		add_action( 'wp_ajax_' . self::OPTION_NAME_API_KEY . '_validate', [ $this, 'ajax_validate_api_token' ] );
	}

	protected function get_fields_map_control_options() {
		return [
			'condition' => [
				'getresponse_list!' => '',
			],
		];
	}
}
modules/forms/submissions/personal-data.php000064400000007726150755004310015177 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions;

use Elementor\Core\Utils\Collection;
use Elementor\Core\Base\Base_Object;
use ElementorPro\Modules\Forms\Submissions\Database\Query;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Personal_Data extends Base_Object {
	const WP_KEY = 'elementor-form-submissions';

	/**
	 * @return string
	 */
	private function get_title() {
		return esc_html__( 'Elementor Submissions', 'elementor-pro' );
	}

	/**
	 * @return string
	 */
	private function get_key() {
		return self::WP_KEY;
	}

	/**
	 * Export all the submissions related to specific email.
	 *
	 * WordPress send always an email even if the user choose to erase by username.
	 *
	 * @param $email
	 *
	 * @return array
	 */
	private function export_data( $email ) {
		$data = Query::get_instance()
			->get_submissions_by_email( $email, true )
			->map(function ( $submission ) {
				$submission_data = ( new Collection( $submission->values ) )
					->map( function ( $value ) {
						return [
							'name' => $value->key,
							'value' => $value->value,
						];
					} )
					->merge([
						[
							'name' => esc_html__( 'User IP', 'elementor-pro' ),
							'value' => $submission->user_ip,
						],
						[
							'name' => esc_html__( 'Referer', 'elementor-pro' ),
							'value' => $submission->referer,
						],
						[
							'name' => esc_html__( 'User Agent', 'elementor-pro' ),
							'value' => $submission->user_agent,
						],
						[
							'name' => esc_html__( 'Created At', 'elementor-pro' ),
							'value' => $submission->created_at,
						],
						[
							'name' => esc_html__( 'Created At GMT', 'elementor-pro' ),
							'value' => $submission->created_at_gmt,
						],
						[
							'name' => esc_html__( 'Updated At', 'elementor-pro' ),
							'value' => $submission->updated_at,
						],
						[
							'name' => esc_html__( 'Updated At GMT', 'elementor-pro' ),
							'value' => $submission->updated_at_gmt,
						],
					])
					->all();

				return [
					'group_id' => $this->get_key(),
					'group_label' => $this->get_title(),
					'item_id' => "{$this->get_key()}-{$submission->id}",
					'data' => $submission_data,
				];
			})
			->all();

		return [
			'data' => $data,
			'done' => true,
		];
	}

	/**
	 * Erase all the submissions related to specific email.
	 *
	 * WordPress send always an email even if the user choose to erase by username.
	 *
	 * @param $email
	 *
	 * @return array
	 */
	private function erase_data( $email ) {
		$query = Query::get_instance();

		$submissions = $query->get_submissions_by_email( $email, true );

		$affected = 0;
		$failed = 0;

		foreach ( $submissions as $submission ) {
			$affected_rows = $query->delete_submission( $submission->id );

			if ( false === $affected_rows ) {
				$failed++;
			} else {
				$affected += $affected_rows;
			}
		}

		return [
			'items_removed' => count( $submissions ) === $affected,
			'items_retained' => $failed > 0,
			'messages' => [],
			'done' => true,
		];
	}

	/**
	 * Add exporter to the list of exporters
	 *
	 * @param $exporters
	 *
	 * @return mixed
	 */
	private function add_exporter( $exporters ) {
		$exporters[ $this->get_key() ] = [
			'exporter_friendly_name' => $this->get_title(),
			'callback' => function ( $email ) {
				return $this->export_data( $email );
			},
		];

		return $exporters;
	}

	/**
	 * Add eraser to the list of erasers.
	 *
	 * @param $erasers
	 *
	 * @return array[]
	 */
	private function add_eraser( $erasers ) {
		return $erasers + [
			$this->get_key() => [
				'eraser_friendly_name' => $this->get_title(),
				'callback' => function ( $email ) {
					return $this->erase_data( $email );
				},
			],
		];
	}

	/**
	 * Personal_Data constructor.
	 */
	public function __construct() {
		add_filter( 'wp_privacy_personal_data_exporters', function ( $exporters ) {
			return $this->add_exporter( $exporters );
		} );

		add_filter( 'wp_privacy_personal_data_erasers', function ( $exporters ) {
			return $this->add_eraser( $exporters );
		} );
	}
}
modules/forms/submissions/data/endpoints/referer.php000064400000003203150755004310016775 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Data\Endpoints;

use Elementor\Data\Base\Endpoint;
use ElementorPro\Modules\Forms\Submissions\Database\Query;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Referer extends Endpoint {
	public function get_name() {
		return 'referer';
	}

	protected function register() {
		$this->register_route(
			'',
			\WP_REST_Server::READABLE,
			function ( $request ) {
				return $this->base_callback( \WP_REST_Server::READABLE, $request, true );
			},
			[
				'context' => [
					'description' => 'Scope under which the request is made, determines fields present in response. (only "options" available for now)',
					'type' => 'string',
					'enum' => [
						'options',
					],
					'default' => 'options',
					'required' => false,
				],
				'search' => [
					'description' => 'Limit results to those matching a string.',
					'type' => 'string',
					'required' => false,
					'additionalProperties' => [
						'context' => 'filter',
					],
				],
				'value' => [
					'description' => 'Limit results specific referer.',
					'type' => 'string',
					'required' => false,
					'additionalProperties' => [
						'context' => 'filter',
					],
				],
			]
		);
	}

	public function get_items( $request ) {
		$referrers = Query::get_instance()->get_referrers(
			$request->get_param( 'search' ),
			$request->get_param( 'value' )
		);

		// For now return only as "options"
		return [
			'data' => $referrers->map(function ( $referer ) {
				return [
					'label' => $referer['referer_title'],
					'value' => $referer['referer'],
				];
			})->values(),
			'meta' => [],
		];
	}
}
modules/forms/submissions/data/endpoints/index.php000064400000006537150755004310016467 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Data\Endpoints;

use Elementor\Data\Base\Endpoint;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Index extends Endpoint {
	public function get_name() {
		return 'index';
	}

	protected function register() {
		$this->register_route(
			'',
			\WP_REST_Server::READABLE,
			function ( $request ) {
				return $this->base_callback( \WP_REST_Server::READABLE, $request, true );
			},
			$this->controller->get_collection_params()
		);

		$this->register_route(
			'(?P<id>[\d]+)/',
			\WP_REST_Server::READABLE,
			function ( $request ) {
				return $this->base_callback( \WP_REST_Server::READABLE, $request );
			},
			[
				'id' => [
					'description' => 'Unique identifier for the object.',
					'type' => 'string',
					'required' => true,
				],
			]
		);

		$this->register_route(
			'(?P<id>[\d]+)/',
			\WP_REST_Server::DELETABLE,
			function ( $request ) {
				return $this->base_callback( \WP_REST_Server::DELETABLE, $request );
			},
			[
				'id' => [
					'description' => 'Unique identifier for the object.',
					'type' => 'string',
					'required' => true,
				],
				'force' => [
					'description' => 'Delete the object permanently.',
					'type' => 'boolean',
					'required' => false,
				],
			]
		);

		$this->register_route(
			'',
			\WP_REST_Server::DELETABLE,
			function ( $request ) {
				return $this->base_callback( \WP_REST_Server::DELETABLE, $request, true );
			},
			[
				'ids' => [
					'description' => 'Unique identifiers for the objects.',
					'type' => 'array',
					'items' => [
						'type' => 'integer',
					],
					'validate_callback' => function ( $param ) {
						return ! empty( $param );
					},
					'required'    => true,
				],
				'force' => [
					'description' => 'Delete the object permanently.',
					'type' => 'boolean',
					'required' => false,
				],
			]
		);

		$this->register_route(
			'(?P<id>[\d]+)/',
			\WP_REST_Server::EDITABLE,
			function ( $request ) {
				return $this->base_callback( \WP_REST_Server::EDITABLE, $request );
			},
			[
				'id' => [
					'description' => 'Unique identifier for the object.',
					'type' => 'string',
					'required' => true,
				],
				'is_read' => [
					'description' => 'mark whether the submission was read or not',
					'type' => 'boolean',
					'required' => false,
				],
				'values' => [
					'description' => 'Form field values, receive an array, the key should be the form field id and the value should be the value.',
					'type' => 'object',
					'required' => false,
					'sanitize_callback' => function ( $values ) {
						$result = [];

						foreach ( $values as $key => $value ) {
							$result[ $key ] = sanitize_text_field( $value );
						}

						return $result;
					},
				],
			]
		);

		$this->register_route(
			'',
			\WP_REST_Server::EDITABLE,
			function ( $request ) {
				return $this->base_callback( \WP_REST_Server::EDITABLE, $request, true );
			},
			[
				'ids' => [
					'description' => 'Unique identifiers for the objects.',
					'type' => 'array',
					'items' => [
						'type' => 'integer',
					],
					'validate_callback' => function ( $param ) {
						return ! empty( $param );
					},
					'required'    => true,
				],
				'is_read' => [
					'description' => 'mark whether the submission was read or not',
					'type' => 'boolean',
					'required' => false,
				],
			]
		);
	}
}
modules/forms/submissions/data/endpoints/forms-index.php000064400000001414150755004310017600 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Data\Endpoints;

use Elementor\Data\Base\Endpoint;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Forms_Index extends Endpoint {
	public function get_name() {
		return 'index';
	}

	protected function register() {
		$this->register_route(
			'',
			\WP_REST_Server::READABLE,
			function ( $request ) {
				return $this->base_callback( \WP_REST_Server::READABLE, $request, true );
			},
			[
				'context' => [
					'description' => 'Scope under which the request is made, determines fields present in response. (only "options" available for now)',
					'type' => 'string',
					'enum' => [
						'options',
					],
					'default' => 'options',
					'required' => false,
				],
			]
		);
	}
}
modules/forms/submissions/data/endpoints/export.php000064400000006453150755004310016676 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Data\Endpoints;

use Elementor\Data\Base\Endpoint;
use Elementor\Core\Utils\Collection;
use ElementorPro\Modules\Forms\Submissions\Export\CSV_Export;
use ElementorPro\Modules\Forms\Submissions\Database\Query;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/**
 * This logic should be under index.php::get_items method, but for now
 * the Data JS API does not support sending Headers like `Accept: text/csv`.
 */
class Export extends Endpoint {
	const EXPORT_BY_IDS = 'ids';
	const EXPORT_BY_FILTER = 'filter';

	public function get_name() {
		return 'export';
	}

	protected function register() {
		$this->register_route(
			'',
			\WP_REST_Server::READABLE,
			function ( $request ) {
				return $this->base_callback( \WP_REST_Server::READABLE, $request, true );
			},
			array_merge( $this->controller->get_collection_params(), [
				'ids' => [
					'description' => 'Unique identifiers for the objects.',
					'type' => 'array',
					'items' => [
						'type' => 'integer',
					],
					'required' => false,
					'additionalProperties' => [
						'context' => 'filter',
					],
				],
				'format' => [
					'description' => 'The format of the export (for now only csv).',
					'types' => 'string',
					'enum' => [
						'csv',
					],
					'default' => 'csv',
					'required' => false,
				],
				'per_page' => [
					'description' => 'Maximum number of items to be returned in result set.',
					'type' => 'integer',
					'default' => 10,
					'minimum' => 1,
					'maximum' => 10000,
					'sanitize_callback' => 'absint',
					'validate_callback' => 'rest_validate_request_arg',
				],
			] )
		);
	}

	/**
	 * @param \WP_REST_Request $request
	 *
	 * @return \WP_Error|\WP_REST_Response
	 */
	public function get_items( $request ) {
		wp_raise_memory_limit( 'admin' );

		$submissions = new Collection(
			$this->get_submissions_by_filter( $request )
		);

		if ( 0 === $submissions->count() ) {
			return new \WP_Error(
				'nothing_to_export',
				__( 'There is nothing to export.', 'elementor-pro' ),
				[ 'status' => 400 ]
			);
		}

		$response = $submissions
			->group_by( 'element_id' )
			->map( function ( array $submissions_by_form ) {
				$exporter = new CSV_Export(
					new Collection( $submissions_by_form )
				);

				return $exporter->prepare_for_json_response();
			} );

		return new \WP_REST_Response([
			'data' => $response->values(),
		] );
	}

	/**
	 * Get submissions by filter.
	 *
	 * @param $request
	 *
	 * @return array|mixed
	 */
	private function get_submissions_by_filter( $request ) {
		$args = $request->get_attributes()['args'];

		$filters = ( new Collection( $request->get_query_params() ) )
			->filter(function ( $value, $key ) use ( $args ) {
				return isset( $args[ $key ]['additionalProperties']['context'] ) &&
					'filter' === $args[ $key ]['additionalProperties']['context'];
			})
			->map( function ( $value ) use ( $request ) {
				return [ 'value' => $value ];
			} )
			->all();

		return Query::get_instance()->get_submissions(
			[
				'page' => $request->get_param( 'page' ),
				'per_page' => $request->get_param( 'per_page' ),
				'filters' => $filters,
				'order' => [
					'order' => $request->get_param( 'order' ),
					'by' => $request->get_param( 'order_by' ),
				],
				'with_meta' => true,
			]
		)['data'];
	}
}
modules/forms/submissions/data/endpoints/restore.php000064400000005375150755004310017042 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Data\Endpoints;

use ElementorPro\Modules\Forms\Submissions\Database\Query;
use Elementor\Data\Base\Endpoint;
use ElementorPro\Modules\Forms\Submissions\Data\Responses\Query_Failed_Response;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Restore extends Endpoint {
	/**
	 * @var Query
	 */
	private $query;

	public function get_name() {
		return 'restore';
	}

	/**
	 * Restore a single trashed submission.
	 *
	 * @param string           $id
	 * @param \WP_REST_Request $request
	 *
	 * @return \WP_Error|\WP_REST_Response
	 */
	public function update_item( $id, $request ) {
		return $this->restore(
			[ $request->get_param( 'id' ) ]
		);
	}

	/**
	 * Restore multiple trashed submissions.
	 *
	 * @param \WP_REST_Request $request
	 *
	 * @return \WP_Error|\WP_REST_Response
	 */
	public function update_items( $request ) {
		return $this->restore(
			$request->get_param( 'ids' )
		);
	}

	protected function register() {
		$this->register_route(
			'/(?P<id>[\d]+)/',
			\WP_REST_Server::EDITABLE,
			function ( $request ) {
				return $this->base_callback( \WP_REST_Server::EDITABLE, $request );
			},
			[
				'id' => [
					'description' => 'Unique identifier for the object.',
					'type'        => 'string',
					'required'    => true,
				],
			]
		);

		$this->register_route(
			'',
			\WP_REST_Server::EDITABLE,
			function ( $request ) {
				return $this->base_callback( \WP_REST_Server::EDITABLE, $request, true );
			},
			[
				'ids' => [
					'description' => 'Unique identifiers for the objects.',
					'type' => 'array',
					'items' => [
						'type' => 'integer',
					],
					'validate_callback' => function ( $param ) {
						return ! empty( $param );
					},
					'required'    => true,
				],
			]
		);
	}

	/**
	 * Restore on or more submissions.
	 *
	 * @param array $ids
	 *
	 * @return Query_Failed_Response|\WP_Error|\WP_REST_Response
	 */
	private function restore( array $ids ) {
		$affected = 0;
		$failed = 0;

		foreach ( $ids as $id ) {
			$affected_rows = $this->query->restore( $id );

			if ( false === $affected_rows ) {
				$failed++;
			} else {
				$affected += $affected_rows;
			}
		}

		if ( count( $ids ) === $failed ) {
			return new Query_Failed_Response(
				$this->query->get_last_error()
			);
		}

		if ( 1 === count( $ids ) && 0 === $affected ) {
			return new \WP_Error(
				'rest_not_found',
				__( 'Submission not found or not in trash.', 'elementor-pro' ),
				[ 'status' => 404 ]
			);
		}

		return new \WP_REST_Response( [
			'data' => [],
			'meta' => [
				'affected' => $affected,
				'failed' => $failed,
			],
		], 200 );
	}

	public function __construct( $controller ) {
		$this->query = Query::get_instance();

		parent::__construct( $controller );
	}
}
modules/forms/submissions/data/controller.php000064400000022236150755004310015532 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Data;

use Elementor\Core\Utils\Collection;
use Elementor\Data\Base\Controller as Controller_Base;
use ElementorPro\Modules\Forms\Submissions\Database\Query;
use ElementorPro\Modules\Forms\Submissions\Data\Responses\Query_Failed_Response;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Controller extends Controller_Base {
	/**
	 * @var \ElementorPro\Modules\Forms\Submissions\Database\Query
	 */
	private $query;

	public function get_name() {
		return 'form-submissions';
	}

	/**
	 * Get collection params by 'additionalProperties' context.
	 *
	 * TODO Should move to base after merge with 'Sub controllers & Sub endpoints'.
	 *
	 * @param string $context
	 *
	 * @return array
	 */
	private function get_collection_params_by_additional_props_context( $context ) {
		$result = [];

		$collection_params = $this->get_collection_params();

		foreach ( $collection_params as $collection_param_key => $collection_param ) {
			if ( isset( $collection_param['additionalProperties']['context'] ) && $context === $collection_param['additionalProperties']['context'] ) {
				$result[ $collection_param_key ] = $collection_param;
			}
		}

		return $result;
	}

	public function get_collection_params() {
		$default_collection_params = parent::get_collection_params();

		return array_merge( $default_collection_params, [
			'page' => [
				'description' => 'Current page of the collection.',
				'type' => 'integer',
				'default' => 1,
				'minimum' => 1,
				'required' => false,
			],
			'per_page' => [
				'description' => 'Maximum number of items to be returned in result set.',
				'type' => 'integer',
				'default' => 50,
				'minimum' => 1,
				'maximum' => 100,
				'required' => false,
			],
			'order' => [
				'description' => 'Order sort attribute ascending or descending.',
				'type' => 'string',
				'default' => 'desc',
				'enum' => [
					'asc',
					'desc',
				],
				'required' => false,
			],
			'order_by' => [
				'description' => 'Sort collection by object attribute.',
				'type' => 'string',
				'default' => 'created_at',
				'enum' => [
					'created_at',
					'id',
					'main_meta_id',
				],
				'required' => false,
			],
			'status' => [
				'description' => 'Limit result set to submissions assigned one or more statuses.',
				'type' => 'string',
				'default' => 'all',
				'enum' => [
					'all',
					'unread',
					'read',
					'trash',
				],
				'additionalProperties' => [
					'context' => 'filter',
					'options' => [
						'type' => 'enum',
						'labels' => [
							'all' => esc_html__( 'All', 'elementor-pro' ),
							'unread' => esc_html__( 'Unread', 'elementor-pro' ),
							'read' => esc_html__( 'Read', 'elementor-pro' ),
							'trash' => esc_html__( 'Trash', 'elementor-pro' ),
						],
					],
				],
				'required' => false,
			],
			'search' => [
				'description' => 'Limit results to those matching a string.',
				'type' => 'string',
				'required' => false,
				'additionalProperties' => [
					'context' => 'filter',
				],
			],
			'form' => [
				'description' => 'Limit result set to submissions assigned to specific forms. The form id should follow this pattern {post_id}_{element_id} e.g: 10_476d0ce',
				'type' => 'string',
				'required' => false,
				'additionalProperties' => [
					'context' => 'filter',
					'options' => [
						'type' => 'resource',
						'command' => 'forms/index',
						'args' => [ 'context' => 'options' ],
					],
				],
			],
			'referer' => [
				'description' => 'Limit result set to submissions assigned to specific referer.',
				'type' => 'string',
				'required' => false,
				'additionalProperties' => [
					'context' => 'filter',
					'options' => [
						'type' => 'resource',
						'command' => 'form-submissions/referer',
						'args' => [ 'context' => 'options' ],
					],
				],
			],
			'after' => [
				'description' => 'Limit response to submissions sent after a given ISO8601 compliant date.',
				'type' => 'string',
				'format' => 'date',
				'required' => false,
				'additionalProperties' => [
					'context' => 'filter',
				],
			],
			'before' => [
				'description' => 'Limit response to submissions sent before a given ISO8601 compliant date.',
				'type' => 'string',
				'format' => 'date',
				'required' => false,
				'additionalProperties' => [
					'context' => 'filter',
				],
			],
		] );
	}

	public function get_items( $request ) {
		$filters = [];

		// Get & set filters with values.
		foreach ( $this->get_collection_params_by_additional_props_context( 'filter' ) as $collection_param_name => $collection_param_values ) {
			$request_filter_value = $request->get_param( $collection_param_name );

			if ( null !== $request_filter_value ) {
				$collection_param_values['value'] = $request_filter_value;

				$filters[ $collection_param_name ] = $collection_param_values;
			}
		}

		$result = $this->query->get_submissions( [
			'page' => $request->get_param( 'page' ),
			'per_page' => $request->get_param( 'per_page' ),
			'filters' => $filters,
			'order' => [
				'order' => $request->get_param( 'order' ),
				'by' => $request->get_param( 'order_by' ),
			],
		] );

		$result['meta']['count'] = $this->query
			->count_submissions_by_status( $filters )
			->all();

		return $result;
	}

	public function get_item( $request ) {
		return $this->query->get_submission( (int) $request->get_param( 'id' ) );
	}

	/**
	 * @param \WP_REST_Request $request
	 *
	 * @return \WP_Error|\WP_REST_Response
	 */
	public function delete_items( $request ) {
		return $this->delete(
			$request->get_param( 'ids' ),
			$request->get_param( 'force' )
		);
	}

	/**
	 * Delete single submission
	 *
	 * @param \WP_REST_Request $request
	 *
	 * @return \WP_Error|\WP_REST_Response
	 */
	public function delete_item( $request ) {
		return $this->delete(
			[ $request->get_param( 'id' ) ],
			$request->get_param( 'force' )
		);
	}

	/**
	 * Update a single submission.
	 *
	 * @param \WP_REST_Request $request
	 *
	 * @return \WP_Error|\WP_REST_Response
	 */
	public function update_item( $request ) {
		return $this->update(
			[ (int) $request->get_param( 'id' ) ],
			$request
		);
	}

	/**
	 * Update multiple submissions.
	 *
	 * @param $request
	 *
	 * @return \WP_Error|\WP_REST_Response
	 */
	public function update_items( $request ) {
		return $this->update(
			$request->get_param( 'ids' ),
			$request
		);
	}

	public function get_permission_callback( $request ) {
		return current_user_can( 'manage_options' );
	}

	public function register_endpoints() {
		$this->register_endpoint( Endpoints\Restore::class );
		$this->register_endpoint( Endpoints\Export::class );
		$this->register_endpoint( Endpoints\Referer::class );
	}

	protected function register_internal_endpoints() {
		// Register as internal to remove the default endpoint generated by the base controller.
		$this->register_endpoint( Endpoints\Index::class );
	}

	protected function register() {
		parent::register();

		$this->query = Query::get_instance();
	}

	/**
	 * Delete one or more submissions.
	 *
	 * @param array $ids
	 * @param false $force
	 *
	 * @return Query_Failed_Response|\WP_Error|\WP_REST_Response
	 */
	private function delete( array $ids, $force = false ) {
		$affected = 0;
		$failed = 0;

		foreach ( $ids as $id ) {
			if ( $force ) {
				$affected_rows = $this->query->delete_submission( $id );
			} else {
				$affected_rows = $this->query->move_to_trash_submission( $id );
			}

			if ( false === $affected_rows ) {
				$failed++;
			} else {
				$affected += $affected_rows;
			}
		}

		if ( count( $ids ) === $failed ) {
			return new Query_Failed_Response(
				$this->query->get_last_error()
			);
		}

		if ( 1 === count( $ids ) && 0 === $affected ) {
			return new \WP_Error(
				'rest_not_found',
				__( 'Submission not found.', 'elementor-pro' ),
				[ 'status' => 404 ]
			);
		}

		return new \WP_REST_Response( [
			'data' => [],
			'meta' => [
				'affected' => $affected,
				'failed' => $failed,
			],
		], 200 );
	}

	/**
	 * Update one or more submissions.
	 *
	 * @param array            $ids
	 * @param \WP_REST_Request $request
	 *
	 * @return Query_Failed_Response|\WP_Error|\WP_REST_Response
	 */
	private function update( array $ids, \WP_REST_Request $request ) {
		$allowed_args = ( new Collection( $request->get_attributes()['args'] ) )
			->except( [ 'id', 'ids', 'values' ] )
			->keys();

		$data = ( new Collection( $request->get_body_params() ) )
			->only( $allowed_args )
			->all();

		$values = $request->get_param( 'values' );

		$affected = 0;
		$failed = 0;

		foreach ( $ids as $id ) {
			$affected_rows = $this->query->update_submission( $id, $data, $values );

			if ( false === $affected_rows ) {
				$failed++;
			} else {
				$affected += $affected_rows;
			}
		}

		if ( count( $ids ) === $failed ) {
			return new Query_Failed_Response(
				$this->query->get_last_error()
			);
		}

		if ( 1 === count( $ids ) ) {
			if ( 0 === $affected ) {
				return new \WP_Error(
					'rest_not_found',
					__( 'Submission not found.', 'elementor-pro' ),
					[ 'status' => 404 ]
				);
			}

			return new \WP_REST_Response( $this->query->get_submission( $ids[0] ) );
		}

		return new \WP_REST_Response( [
			'data' => [],
			'meta' => [
				'affected' => $affected,
				'failed' => $failed,
			],
		], 200 );
	}
}
modules/forms/submissions/data/forms-controller.php000064400000002211150755004310016645 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Data;

use Elementor\Data\Base\Controller as Controller_Base;
use ElementorPro\Modules\Forms\Submissions\Database\Entities\Form_Snapshot;
use ElementorPro\Modules\Forms\Submissions\Database\Repositories\Form_Snapshot_Repository;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Forms_Controller extends Controller_Base {
	public function get_name() {
		return 'forms';
	}

	public function get_items( $request ) {
		$forms = Form_Snapshot_Repository::instance()->all();

		// For now return only as "options"
		return [
			'data' => $forms->map(function ( Form_Snapshot $form ) {
				return [
					'label' => $form->get_label(),
					'value' => $form->get_key(),
				];
			})->values(),
			'meta' => [],
		];
	}

	public function register_endpoints() {
		//
	}

	protected function register_internal_endpoints() {
		// Register as internal to remove the default endpoint generated by the base controller.
		$this->register_endpoint( Endpoints\Forms_Index::class );
	}

	public function get_permission_callback( $request ) {
		return current_user_can( 'manage_options' );
	}
}
modules/forms/submissions/data/responses/query-failed-response.php000064400000001210150755004310021600 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Data\Responses;

use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Query_Failed_Response  extends \WP_Error {
	public function __construct( $query_error_message, $message = null ) {
		if ( ! $message ) {
			$message = esc_html__( 'Something went wrong.', 'elementor-pro' );
		}

		$this->log_error( $query_error_message );

		parent::__construct(
			'rest_internal_error',
			$message,
			[ 'status' => 500 ]
		);
	}

	private function log_error( $query_error_message ) {
		Plugin::elementor()->logger->error( $query_error_message );
	}
}
modules/forms/submissions/database/repositories/form-snapshot-repository.php000064400000006756150755004310023757 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Database\Repositories;

use Elementor\Core\Base\Base_Object;
use Elementor\Core\Utils\Collection;
use ElementorPro\Modules\Forms\Submissions\Database\Entities\Form_Snapshot;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Form_Snapshot_Repository extends Base_Object {
	// There are two underscore prefix to avoid duplicate the meta when the post will be published.
	const POST_META_KEY = '__elementor_forms_snapshot';

	/**
	 * @var static
	 */
	private static $instance = null;

	/**
	 * @var Collection
	 */
	private $cache;

	/**
	 * @return static
	 */
	public static function instance() {
		if ( null === static::$instance ) {
			static::$instance = new static();
		}

		return static::$instance;
	}

	/**
	 * Get specific form.
	 *
	 * @param      $post_id
	 * @param      $form_id
	 * @param bool $from_cache
	 *
	 * @return Form_Snapshot|null
	 */
	public function find( $post_id, $form_id, $from_cache = true ) {
		$key = Form_Snapshot::generate_key( $post_id, $form_id );

		if ( $from_cache && $this->cache->get( $key, false ) ) {
			return $this->cache->get( $key, false );
		}

		return $this->save_in_cache(
			$this->get_post_forms( $post_id )
		)->get( $key );
	}

	/**
	 * Get all the forms.
	 *
	 * @return Collection
	 */
	public function all() {
		global $wpdb;

		$result = $wpdb->get_results(
			$wpdb->prepare(
				"SELECT pm.meta_value, pm.post_id FROM {$wpdb->postmeta} pm WHERE pm.meta_key = %s",
				static::POST_META_KEY
			)
		);

		if ( ! $result ) {
			return new Collection( [] );
		}

		foreach ( $result as $post_forms ) {
			$this->save_in_cache(
				$this->parse_meta( $post_forms->meta_value, $post_forms->post_id )
			);
		}

		return $this->cache;
	}

	/**
	 * @param $post_id
	 * @param $form_id
	 * @param $data
	 *
	 * @return Form_Snapshot
	 */
	public function create_or_update( $post_id, $form_id, $data ) {
		$forms = $this->get_post_forms( $post_id )
			->filter( function ( Form_Snapshot $form ) use ( $form_id ) {
				return $form->id !== $form_id;
			} );

		$form = new Form_Snapshot( $post_id, $data + [ 'id' => $form_id ] );
		$forms[] = $form;

		update_post_meta(
			$post_id,
			self::POST_META_KEY,
			// Use `wp_slash` in order to avoid the unslashing during the `update_post_meta`
			wp_slash( wp_json_encode( $forms->values() ) )
		);

		$this->save_in_cache( $forms );

		return $form;
	}

	public function clear_cache() {
		$this->cache = new Collection( [] );
	}

	/**
	 * @param $post_id
	 *
	 * @return Collection
	 */
	private function get_post_forms( $post_id ) {
		$meta_value = get_post_meta( $post_id, self::POST_META_KEY, true );

		if ( ! $meta_value ) {
			return new Collection( [] );
		}

		return $this->parse_meta( $meta_value, $post_id );
	}

	/**
	 * Receive a meta value and transform it to an array of Form objects.
	 *
	 * @param $meta_value
	 * @param $post_id
	 *
	 * @return Collection
	 */
	private function parse_meta( $meta_value, $post_id ) {
		return ( new Collection( json_decode( $meta_value, true ) ) )
			->map( function ( $item ) use ( $post_id ) {
				return new Form_Snapshot( $post_id, $item );
			} );
	}

	/**
	 * @param $forms
	 *
	 * @return Collection
	 */
	private function save_in_cache( Collection $forms ) {
		/** @var Form_Snapshot $form */
		foreach ( $forms as $form ) {
			$this->cache[ $form->get_key() ] = $form;
		}

		return $this->cache;
	}

	/**
	 * Forms_Repository constructor.
	 */
	public function __construct() {
		$this->cache = new Collection( [] );
	}
}
modules/forms/submissions/database/entities/form-snapshot.php000064400000003442150755004310020624 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Database\Entities;

use Elementor\Core\Base\Base_Object;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/**
 * The Form_Snapshot is a snapshot of the form as it saved in the document data, on each submission creation it updates the snapshot to the current state of the form,
 * As a consequence the queries are quicker (filters, export, etc.) and in case the form itself removed from the document, the Form_Snapshot
 * remains and allows the user export and filter submissions as before.
 */
class Form_Snapshot extends Base_Object implements \JsonSerializable {
	/**
	 * @var string
	 */
	public $id;

	/**
	 * @var int
	 */
	public $post_id;

	/**
	 * @var string
	 */
	public $name;

	/**
	 * @var array {
	 *      @type string $id
	 *      @type string $type
	 *      @type string $label
	 * }
	 */
	public $fields = [];

	/**
	 * @param $post_id
	 * @param $form_id
	 *
	 * @return string
	 */
	public static function generate_key( $post_id, $form_id ) {
		return "{$post_id}_{$form_id}";

	}

	/**
	 * @return string
	 */
	public function get_key() {
		return static::generate_key( $this->post_id, $this->id );
	}

	/**
	 * @return string
	 */
	public function get_label() {
		return "{$this->name} ($this->id)";
	}

	/**
	 * Implement for the JsonSerializable method, will trigger when trying to json_encode this object.
	 *
	 * @return array
	 */
	public function jsonSerialize() {
		return [
			'id' => $this->id,
			'name' => $this->name,
			'fields' => $this->fields,
		];
	}


	/**
	 * Form constructor.
	 *
	 * @param $post_id
	 * @param $data
	 */
	public function __construct( $post_id, $data ) {
		$this->post_id = (int) $post_id;
		$this->id = $data['id'];
		$this->name = $data['name'];
		$this->fields = $data['fields'];
	}
}
modules/forms/submissions/database/query.php000064400000054527150755004310015357 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Database;

use Elementor\Core\Base\Base_Object;
use ElementorPro\Plugin;
use Elementor\Core\Utils\Collection;
use Exception;
use ElementorPro\Modules\Forms\Classes\Action_Base;
use ElementorPro\Modules\Forms\Submissions\Database\Repositories\Form_Snapshot_Repository;

class Query extends Base_Object {
	const STATUS_NEW = 'new';
	const STATUS_TRASH = 'trash';

	const ACTIONS_LOG_STATUS_SUCCESS = 'success';
	const ACTIONS_LOG_STATUS_FAILED = 'failed';

	const TYPE_SUBMISSION = 'submission';

	/**
	 * @var Query
	 */
	private static $instance = null;

	const E_SUBMISSIONS_ACTIONS_LOG = 'e_submissions_actions_log';
	const E_SUBMISSIONS_VALUES = 'e_submissions_values';
	const E_SUBMISSIONS = 'e_submissions';

	/**
	 * @var \wpdb
	 */
	private $wpdb;

	/**
	 * @var string
	 */
	private $table_submissions;

	/**
	 * @var string
	 */
	private $table_submissions_values;

	/**
	 * @var string
	 */
	private $table_submissions_actions_log;

	public static function get_instance() {
		if ( ! self::$instance ) {
			self::$instance = new Query();
		}

		return self::$instance;
	}

	public function get_submissions( $args = [] ) {
		$args = wp_parse_args( $args, [
			'page' => 1,
			'per_page' => 10,
			'filters' => [],
			'order' => [],
			'with_meta' => false,
			'with_form_fields' => false,
		] );

		$page = $args['page'];
		$per_page = $args['per_page'];
		$filters = $args['filters'];
		$order = $args['order'];
		$with_meta = $args['with_meta'];
		$with_form_fields = $args['with_form_fields'];

		$result = [
			'data' => [],
			'meta' => [],
		];

		$where_sql = $this->apply_filter( $filters );
		$order_sql = '';

		$total = (int) $this->wpdb->get_var("SELECT COUNT(*) FROM `{$this->get_table_submissions()}` t_submissions {$where_sql}" );// phpcs:ignore

		$last_page = 0 < $total && 0 < $per_page ? (int) ceil( $total / $per_page ) : 1;

		if ( $page > $last_page ) {
			$page = $last_page;
		}

		$offset = (int) ceil( ( $page - 1 ) * $per_page );

		$result['meta']['pagination'] = [
			'current_page' => $page,
			'per_page' => $per_page,
			'total' => $total,
			'last_page' => $last_page,
		];

		$this->handle_order( $order, $order_sql );

		$per_page = (int) $per_page;

		$q = "SELECT t_submissions.* FROM `{$this->get_table_submissions()}` t_submissions {$where_sql} {$order_sql} LIMIT ${per_page} OFFSET {$offset}";

		$submissions = $this->wpdb->get_results( $q );// phpcs:ignore

		$data = new Collection( [] );

		foreach ( $submissions as $current_submission ) {
			$data[] = $this->get_submission_body( $current_submission, $with_form_fields );
		}

		$submissions_meta = $this
			->get_submissions_meta( $data, ! $with_meta )
			->group_by( 'submission_id' );

		$result['data'] = $data
			->map( function ( $submission ) use ( $submissions_meta ) {
				$current_submission_meta = $submissions_meta->get( $submission['id'], [] );

				foreach ( $current_submission_meta as $meta ) {
					$extract_meta = $this->extract( $meta, [ 'id', 'key', 'value' ], [ 'id:int' ] );

					if ( $meta->id === $submission['main_meta_id'] ) {
						$submission['main'] = $extract_meta;
					}

					$submission['values'][] = $extract_meta;
				}

				return $submission;
			} )
			->all();

		return $result;
	}

	/**
	 * Get count by status.
	 *
	 * @param $filter
	 *
	 * @return Collection
	 */
	public function count_submissions_by_status( $filter = [] ) {
		// Should not filter by status.
		unset( $filter['status'] );

		$where_sql = $this->apply_filter( $filter );

		$trash_status = '"' . static::STATUS_TRASH . '"';

		$sql = "
			SELECT
				SUM(IF(`status` != {$trash_status}, 1, 0)) AS `all`,
				SUM(IF(`status` = {$trash_status}, 1, 0)) AS `trash`,
				SUM(IF(is_read = 1 AND `status` != {$trash_status}, 1, 0)) AS `read`,
				SUM(IF(is_read = 0 AND `status` != {$trash_status}, 1, 0)) AS `unread`
			FROM {$this->get_table_submissions()} AS `t_submissions` {$where_sql};
		";

		$sql_result = $this->wpdb->get_row( $sql, ARRAY_A ); // phpcs:ignore

		$result = new Collection( [
			'all' => 0,
			'trash' => 0,
			'read' => 0,
			'unread' => 0,
		] );

		if ( ! $sql_result ) {
			return $result;
		}

		return $result->map( function ( $count, $key ) use ( $sql_result ) {
			if ( ! isset( $sql_result[ $key ] ) ) {
				return $count;
			}

			return intval( $sql_result[ $key ] );
		} );
	}

	public function get_submissions_by_email( $email, $include_submission_values = false ) {
		$user = get_user_by( 'email', $email );
		$user_filter = '';

		if ( $user ) {
			$user_filter = $this->wpdb->prepare( 't_submissions.user_id = %s OR', $user->ID );
		}

		$query = "
			SELECT DISTINCT(t_submissions.id), t_submissions.*
			FROM `{$this->get_table_submissions()}` t_submissions
			INNER JOIN {$this->get_table_submissions_values()} t_submissions_meta
				ON t_submissions.id = t_submissions_meta.submission_id
			WHERE
				{$user_filter}
				t_submissions_meta.value = %s
			;
		";

		$data = $this->wpdb->get_results(
			$this->wpdb->prepare( $query, $email ) // phpcs:ignore
		);

		if ( ! $data ) {
			return new Collection( [] );
		}

		$data = new Collection( $data );

		if ( $include_submission_values ) {
			$submissions_meta = $this->get_submissions_meta( $data )
				->group_by( 'submission_id' );

			$data->map( function ( $submission ) use ( $submissions_meta ) {
				$submission->values = $submissions_meta->get( $submission->id, [] );

				return $submission;
			} );
		}

		return $data;
	}

	/**
	 * @param int $delete_timestamp
	 *
	 * @return array
	 */
	public function get_trashed_submission_ids_to_delete( $delete_timestamp ) {
		$date = gmdate( 'Y-m-d H:i:s', $delete_timestamp );

		$sql = "
			SELECT s.id FROM `{$this->get_table_submissions()}` s
			WHERE s.status = %s AND s.updated_at_gmt < %s;
		";

		return $this->wpdb->get_col(
			$this->wpdb->prepare( $sql, static::STATUS_TRASH, $date ) // phpcs:ignore
		);
	}

	public function get_submission( $id ) {
		$result = [
			'data' => [],
			'meta' => [],
		];

		$q = "SELECT * FROM `{$this->get_table_submissions()}` WHERE id=%d";
		$submission = $this->wpdb->get_row( $this->wpdb->prepare( $q, [ $id ] ) );// phpcs:ignore

		if ( ! $submission ) {
			return null;
		}

		$result['data'] = $this->get_submission_body( $submission, true );

		$current_submission_meta = $this->get_submissions_meta( $submission, false )->all();

		foreach ( $current_submission_meta as $meta ) {
			$extract_meta = $this->extract( $meta, [ 'id', 'key', 'value' ], [ 'id:int' ] );

			if ( $meta->id === $result['data']['main_meta_id'] ) {
				$result['data']['main'] = $extract_meta;
			}

			$result['data']['values'][] = $extract_meta;
		}

		$result['data']['form_actions_log'] = ( new Collection( $this->get_submissions_actions_log( $id ) ) )
			->map( function ( $value ) {
				return $this->extract(
					$value,
					[ 'id', 'action_name', 'action_label', 'status', 'log', 'created_at', 'updated_at' ],
					[ 'id:int', 'name', 'label' ]
				);
			} )
			->all();

		return $result;
	}

	public function get_referrers( $search = '', $value = '' ) {
		$where = '';

		if ( $search ) {
			$search = '%' . $this->wpdb->esc_like( $search ) . '%';

			$where = " AND s.referer_title LIKE '{$search}'";
		}

		if ( $value ) {
			$where = $this->wpdb->prepare( ' AND s.referer = %s', $value ); // phpcs:ignore
		}

		$where = 'WHERE 1=1' . $where;

		$query = "
			SELECT DISTINCT (s.referer), s.referer_title
			FROM {$this->get_table_submissions()} s
			{$where};
		";

		$result = $this->wpdb->get_results( $query, ARRAY_A ); // phpcs:ignore

		if ( ! $result ) {
			return new Collection( [] );
		}

		return new Collection( $result );
	}

	/**
	 * @param       $submissions
	 * @param false $only_main
	 *
	 * @return Collection
	 */
	public function get_submissions_meta( $submissions, $only_main = false ) {
		if ( ! ( $submissions instanceof Collection ) ) {
			$submissions = new Collection(
				is_array( $submissions ) ? $submissions : [ $submissions ]
			);
		}

		if ( $submissions->is_empty() ) {
			return new Collection( [] );
		}

		if ( $only_main ) {
			$column = 'id';
			$ids = $submissions->pluck( 'main_meta_id' );
		} else {
			$column = 'submission_id';
			$ids = $submissions->pluck( 'id' );
		}

		$placeholders = $ids->map( function () {
			return '%d';
		} )->implode( ',' );

		$q = "SELECT * FROM `{$this->get_table_submissions_values()}` WHERE `{$column}` IN ({$placeholders})";

		$result = $this->wpdb->get_results( $this->wpdb->prepare( $q, $ids->all() ) ); // phpcs:ignore

		if ( ! $result ) {
			return new Collection( [] );
		}

		return new Collection( $result );
	}

	/**
	 * @param $post_id
	 * @param $element_id
	 *
	 * @return Collection
	 */
	public function get_submissions_value_keys( $post_id, $element_id ) {
		$sql = "
			SELECT DISTINCT(wesv.`key`)
			FROM {$this->get_table_submissions_values()} wesv
			INNER JOIN {$this->get_table_submissions()} wes
				ON wes.id = wesv.submission_id
			WHERE wes.post_id = %s AND wes.element_id = %s;
		";

		$result = $this->wpdb->get_col( $this->wpdb->prepare( $sql, $post_id, $element_id ) ); // phpcs:ignore

		if ( ! $result ) {
			return new Collection( [] );
		}

		return new Collection( $result );
	}

	/**
	 * @param $submission_id
	 *
	 * @return array|null
	 */
	public function get_submissions_actions_log( $submission_id ) {
		$query = "SELECT * FROM `{$this->get_table_form_actions_log()}` WHERE `submission_id` = %d;";

		return $this->wpdb->get_results(
			$this->wpdb->prepare( $query, (int) $submission_id ), // phpcs:ignore
			ARRAY_A
		);
	}

	/**
	 * Add submission.
	 *
	 * @param array $submission_data
	 * @param array $fields_data
	 *
	 * @return int id or 0
	 */
	public function add_submission( array $submission_data, array $fields_data ) {
		global $wpdb;

		$result = 0;

		$submission_data = $this->get_new_submission_initial_data( $submission_data );

		try {
			$wpdb->query( 'START TRANSACTION' );

			$submission_success = $wpdb->insert( $this->get_table_submissions(), $submission_data );

			if ( ! $submission_success ) {
				throw new Exception( $wpdb->last_error );
			}

			$submission_id = $wpdb->insert_id;

			// Meta's keys/values.
			$main_meta_id = 0;
			$first_submissions_meta_id = 0;
			foreach ( $fields_data as $field ) {
				$wpdb->insert( $this->get_table_submissions_values(), [
					'submission_id' => $submission_id,
					'key' => $field['id'],
					'value' => $field['value'],
				] );

				if ( ! $first_submissions_meta_id ) {
					$first_submissions_meta_id = $wpdb->insert_id;
				}

				if ( 0 === $main_meta_id && 'email' === $field['type'] ) {
					$main_meta_id = $wpdb->insert_id;
				}
			}

			// If `$main_meta_id` not determined.
			if ( ! $main_meta_id ) {
				$main_meta_id = $first_submissions_meta_id;
			}

			// Update main_meta_id.
			$wpdb->update( $this->get_table_submissions(),
				[
					'main_meta_id' => $main_meta_id,
				],
				[
					'id' => $submission_id,
				]
			);

			$wpdb->query( 'COMMIT' );

			$result = $submission_id;
		} catch ( Exception $e ) {
			$wpdb->query( 'ROLLBACK' );

			Plugin::elementor()->logger->get_logger()->error( 'Save submission failed, db error: ' . $e->getMessage() );
		}

		return $result;
	}

	/**
	 * @param       $submission_id
	 * @param array $data
	 * @param array $values
	 *
	 * @return bool|int affected rows
	 */
	public function update_submission( $submission_id, array $data, $values = [] ) {
		if ( $values ) {
			foreach ( $values as $key => $value ) {
				$this->wpdb->update(
					$this->get_table_submissions_values(),
					[ 'value' => $value ],
					[
						'submission_id' => $submission_id,
						'key' => $key,
					]
				);
			}
		}

		$data['updated_at_gmt'] = current_time( 'mysql', true );
		$data['updated_at'] = get_date_from_gmt( $data['updated_at_gmt'] );

		return $this->wpdb->update(
			$this->get_table_submissions(),
			$data,
			[ 'id' => $submission_id ]
		);
	}

	/**
	 * Move single submission to trash
	 *
	 * @param $id
	 *
	 * @return bool|int number of affected rows or false if failed
	 */
	public function move_to_trash_submission( $id ) {
		return $this->update_submission(
			$id,
			[ 'status' => static::STATUS_TRASH ]
		);
	}

	/**
	 * Delete a single submission.
	 *
	 * @param $id
	 *
	 * @return bool|int number of affected rows or false if failed
	 */
	public function delete_submission( $id ) {
		$this->wpdb->delete(
			$this->get_table_submissions_values(),
			[ 'submission_id' => $id ]
		);

		$this->wpdb->delete(
			$this->get_table_form_actions_log(),
			[ 'submission_id' => $id ]
		);

		return $this->wpdb->delete(
			$this->get_table_submissions(),
			[ 'id' => $id ]
		);
	}

	/**
	 * Restore a single submission.
	 *
	 * @param $id
	 *
	 * @return bool|int number of affected rows or false if failed
	 */
	public function restore( $id ) {
		return $this->wpdb->update(
			$this->get_table_submissions(),
			[ 'status' => self::STATUS_NEW ],
			[ 'id' => $id ]
		);
	}

	/**
	 * @param $submission_id
	 * @param Action_Base $action Should be class based on ActionBase (do not type hint to support third party plugins)
	 * @param $status
	 * @param null $log_message
	 *
	 * @return bool|int
	 */
	public function add_action_log( $submission_id, $action, $status, $log_message = null ) {
		$current_datetime_gmt = current_time( 'mysql', true );
		$current_datetime = get_date_from_gmt( $current_datetime_gmt );

		return $this->wpdb->insert(
			$this->get_table_form_actions_log(),
			[
				'submission_id' => $submission_id,
				'action_name' => $action->get_name(),
				'action_label' => $action->get_label(),
				'status' => $status,
				'log' => $log_message,
				'created_at_gmt' => $current_datetime_gmt,
				'updated_at_gmt' => $current_datetime_gmt,
				'created_at' => $current_datetime,
				'updated_at' => $current_datetime,
			]
		);
	}

	public function get_last_error() {
		$this->wpdb->last_error;
	}

	public function get_table_submissions() {
		return $this->table_submissions;
	}

	public function get_table_submissions_values() {
		return $this->table_submissions_values;
	}

	public function get_table_form_actions_log() {
		return $this->table_submissions_actions_log;
	}

	/**
	 * Extract data from `$target` by selected `$keys`.
	 * `$as` used to convert extracted data with different keys.
	 * `$as` support converting to types. using ':' after the key name.
	 *
	 * Example: `$target = [ 'someId' => '5' ];`
	 * `$keys = [ 'someId' ]`
	 * `$as = [ 'id:int' ]`
	 * Output will be `[ 'id' => 5 ];`
	 *
	 * @param array|\stdClass $target
	 * @param array $keys
	 * @param array $as
	 *
	 * @return array
	 */
	private function extract( $target, $keys, $as = [] ) {
		$result = [];

		$as_types = [];
		$as_count = 0;

		if ( is_object( $target ) ) {
			$target = (array) $target;
		}

		foreach ( $as as $key => $as_item ) {
			$exploded = explode( ':', $as_item );

			if ( count( $exploded ) > 1 ) {
				$as_types [] = $exploded[1];
				$as[ $key ] = $exploded[0];
			}
		}

		foreach ( $keys as $key ) {
			if ( isset( $target[ $key ] ) ) {
				if ( isset( $as[ $as_count ] ) ) {
					$value = $target[ $key ];
					if ( isset( $as_types[ $as_count ] ) ) {
						settype( $value, $as_types[ $as_count ] );
					}
					$result[ $as[ $as_count ] ] = $value;
				} else {
					$result[ $key ] = $target[ $key ];
				}
			}
			++$as_count;
		}

		return $result;
	}

	private function handle_and_for_where_query( &$target_where_query ) {
		if ( $target_where_query ) {
			$target_where_query .= ' AND ';
		}
	}

	private function filter_after_and_before( $filters, &$target_where_query ) {
		// Filters 'after' & 'before' known in advance, and could handled systematically.
		if ( isset( $filters['after'] ) || isset( $filters['before'] ) ) {
			$this->handle_and_for_where_query( $target_where_query );

			// TODO: This logic applies only for 'date' format not 'date-time' format.
			$after = '0000-01-01 00:00:00';
			$before = '9999-12-31 23:59:59';

			if ( isset( $filters['after'] ) ) {
				$after = $filters['after']['value'] . ' 00:00:00';
			}

			if ( isset( $filters['before'] ) ) {
				$before = $filters['before']['value'] . ' 23:59:59';
			}

			$after = get_gmt_from_date( $after );
			$before = get_gmt_from_date( $before );

			$target_where_query .= $this->wpdb->prepare( 'created_at_gmt BETWEEN %s and %s', [ $after, $before ] );
		}
	}

	private function filter_status( $filters, &$target_where_query ) {
		if ( isset( $filters['status'] ) ) {
			$this->handle_and_for_where_query( $target_where_query );

			switch ( $filters['status']['value'] ) {
				case 'all':
					$target_where_query .= 'status != \'' . self::STATUS_TRASH . '\'';
					break;
				case 'unread':
					$target_where_query .= 'status = \'' . self::STATUS_NEW . '\' AND is_read = 0';
					break;
				case 'read':
					$target_where_query .= 'status = \'' . self::STATUS_NEW . '\' AND is_read > 0';
					break;
				case 'trash':
					$target_where_query .= 'status = \'' . self::STATUS_TRASH . '\'';
					break;
			}
		}
	}

	private function filter_ids( $filters, &$target_where_query ) {
		if ( ! isset( $filters['ids'] ) || empty( $filters['ids'] ) ) {
			return;
		}

		$this->handle_and_for_where_query( $target_where_query );

		$ids_collection = new Collection( $filters['ids']['value'] );

		$placeholder = $ids_collection->map( function () {
			return '%d';
		} )->implode( ', ' );

		$target_where_query .= $this->wpdb->prepare( "`id` IN ({$placeholder})", $ids_collection->all() ); // phpcs:ignore
	}

	private function filter_search( $filters, &$target_where_query ) {
		if ( isset( $filters['search'] ) ) {
			$this->handle_and_for_where_query( $target_where_query );

			$like = '%' . $this->wpdb->esc_like( $filters['search']['value'] ) . '%';
			$meta_table_name = $this->get_table_submissions_values();

			$target_where_query .= "(
				(
					SELECT GROUP_CONCAT({$meta_table_name}.value)
					FROM `{$meta_table_name}`
					WHERE {$meta_table_name}.submission_id = t_submissions.id
					GROUP BY {$meta_table_name}.submission_id
				) LIKE '{$like}' OR
				t_submissions.id LIKE '{$like}'
			)";
		}
	}

	/**
	 * Filter bu element_id and post_id
	 *
	 * @param $filters
	 * @param $target_where_query
	 */
	private function filter_by_form( $filters, &$target_where_query ) {
		if ( ! isset( $filters['form']['value'] ) ) {
			return;
		}

		$this->handle_and_for_where_query( $target_where_query );

		list( $post_id, $form_id ) = explode( '_', $filters['form']['value'] );

		$target_where_query .= $this->wpdb->prepare(
			'post_id = %d AND element_id = %s',
			$post_id,
			$form_id
		);
	}

	/**
	 * @param $filters
	 * @param $target_where_query
	 */
	private function filter_by_referer( $filters, &$target_where_query ) {
		if ( ! isset( $filters['referer']['value'] ) ) {
			return;
		}

		$this->handle_and_for_where_query( $target_where_query );

		$target_where_query .= $this->wpdb->prepare(
			'referer = %s',
			$filters['referer']['value']
		);
	}

	private function handle_order( $order, &$target_order_query ) {
		if ( ! empty( $order ) ) {
			$order['by'] = esc_sql( $order['by'] );
			$order['order'] = strtoupper( $order['order'] );

			if ( ! in_array( $order['order'], [ 'ASC', 'DESC' ], true ) ) {
				$order['order'] = 'ASC';
			}

			$target_order_query = 'ORDER BY ' . $order['by'] . ' ' . $order['order'];
		}
	}

	/**
	 * @param \stdClass $submission
	 * @param bool      $with_form_fields
	 *
	 * @return array
	 */
	private function get_submission_body( $submission, $with_form_fields = false ) {
		$id = (int) $submission->id;

		$result = [
			'id' => $id,
		];

		$result['post'] = $this->extract( $submission, [ 'post_id' ], [ 'id:int' ] );
		$result['form'] = $this->extract( $submission, [ 'form_name', 'element_id' ], [ 'name' ] );

		$edit_post_id = $submission->post_id;

		// TODO: Should be removed if there is an ability to edit "global widgets"
		$meta = json_decode( $submission->meta, true );

		if ( isset( $meta['edit_post_id'] ) ) {
			$edit_post_id = $meta['edit_post_id'];
		}

		$document = Plugin::elementor()->documents->get( $edit_post_id );

		if ( $document ) {
			$result['post']['edit_url'] = $document->get_edit_url();
		}

		if ( $with_form_fields ) {
			$form = Form_Snapshot_Repository::instance()
				->find( $submission->post_id, $submission->element_id );

			if ( $form ) {
				$result['form']['fields'] = $form->fields;
			}
		}

		$user = get_user_by( 'id', $submission->user_id );

		$result['actions_count'] = (int) $submission->actions_count;
		$result['actions_succeeded_count'] = (int) $submission->actions_succeeded_count;
		$result['referer'] = $submission->referer;
		$result['referer_title'] = $submission->referer_title;
		$result['element_id'] = $submission->element_id;
		$result['main_meta_id'] = $submission->main_meta_id;
		$result['user_id'] = $submission->user_id;
		$result['user_agent'] = $submission->user_agent;
		$result['user_ip'] = $submission->user_ip;
		$result['user_name'] = $user ? $user->display_name : null;

		$result['created_at_gmt'] = $submission->created_at_gmt;
		$result['updated_at_gmt'] = $submission->updated_at_gmt;

		// Return the the dates according to WP current selected timezone.
		$result['created_at'] = get_date_from_gmt( $submission->created_at_gmt );
		$result['updated_at'] = get_date_from_gmt( $submission->updated_at_gmt );

		$result['status'] = $submission->status;
		$result['is_read'] = (bool) $submission->is_read;

		return $result;
	}

	private function get_new_submission_initial_data( array $submission_data ) {
		$current_datetime_gmt = current_time( 'mysql', true );
		$current_datetime = get_date_from_gmt( $current_datetime_gmt );

		$submission_data['hash_id'] = wp_generate_uuid4();

		$submission_data = array_merge( [
			'created_at_gmt' => $current_datetime_gmt,
			'updated_at_gmt' => $current_datetime_gmt,
			'created_at' => $current_datetime,
			'updated_at' => $current_datetime,
			'type' => self::TYPE_SUBMISSION,
			'status' => self::STATUS_NEW,
		], $submission_data );

		return $submission_data;
	}

	private function apply_filter( array $filter ) {
		$where_sql = '';

		$this->filter_after_and_before( $filter, $where_sql );
		$this->filter_status( $filter, $where_sql );
		$this->filter_search( $filter, $where_sql );
		$this->filter_by_form( $filter, $where_sql );
		$this->filter_ids( $filter, $where_sql );
		$this->filter_by_referer( $filter, $where_sql );

		if ( ! $where_sql ) {
			return '';
		}

		return 'WHERE ' . $where_sql;
	}

	public function __construct() {
		global $wpdb;

		$this->wpdb = $wpdb;

		$this->table_submissions = $wpdb->prefix . self::E_SUBMISSIONS;
		$this->table_submissions_values = $wpdb->prefix . self::E_SUBMISSIONS_VALUES;
		$this->table_submissions_actions_log = $wpdb->prefix . self::E_SUBMISSIONS_ACTIONS_LOG;
	}
}
modules/forms/submissions/database/migrations/base-migration.php000064400000002067150755004310021257 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Database\Migrations;

use Elementor\Core\Base\Base_Object;
use ElementorPro\Modules\Forms\Submissions\Database\Query;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

abstract class Base_Migration extends Base_Object {
	/*
	 * Ref: wp-admin/includes/schema.php::wp_get_db_schema
	 *
	 * Indexes have a maximum size of 767 bytes. Historically, we haven't need to be concerned about that.
	 * As of 4.2, however, we moved to utf8mb4, which uses 4 bytes per character. This means that an index which
	 * used to have room for floor(767/3) = 255 characters, now only has room for floor(767/4) = 191 characters.
	 */
	const MAX_INDEX_LENGTH = 191;

	/**
	 * @var \wpdb
	 */
	protected $wpdb;

	/**
	 * @var Query
	 */
	protected $query;

	/**
	 * Base_Migration constructor.
	 *
	 * @param \wpdb $wpdb
	 */
	public function __construct( \wpdb $wpdb ) {
		$this->wpdb = $wpdb;
		$this->query = Query::get_instance();
	}

	/**
	 * Run migration.
	 *
	 * @return void
	 */
	abstract public function run();
}
modules/forms/submissions/database/migrations/referer-extra.php000064400000001146150755004310021126 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Database\Migrations;

class Referer_Extra extends Base_Migration {
	public function run() {
		$max_index_length = static::MAX_INDEX_LENGTH;

		// phpcs:disable
		$this->wpdb->query("
			ALTER TABLE `{$this->query->get_table_submissions()}`
			ADD COLUMN `referer_title` varchar(300) null AFTER `referer`;
		");

		$this->wpdb->query("
			ALTER TABLE `{$this->query->get_table_submissions()}`
			ADD INDEX `referer_index` (`referer`({$max_index_length})),
			ADD INDEX `referer_title_index` (`referer_title`({$max_index_length}));
		");
		// phpcs:enable
	}
}
modules/forms/submissions/database/migrations/fix-indexes.php000064400000007441150755004310020602 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Database\Migrations;

use Elementor\Core\Utils\Collection;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Fix_Indexes extends Base_Migration {
	/**
	 * In the previous migrations some databases had problems with the indexes.
	 * this migration checks if user's tables are filled with required indexes, if not it creates them.
	 */
	public function run() {
		$indexes = $this->get_indexes();

		foreach ( $indexes as $table => $table_indexes ) {
			$existing_indexes = $this->get_existed_indexes_of( $table );

			// Protect from database errors (for example: table do not exists somehow).
			if ( null === $existing_indexes ) {
				continue;
			}

			$indexes_query = $table_indexes->except( $existing_indexes )->implode( ',' );

			$this->wpdb->query( "ALTER TABLE `{$table}` {$indexes_query};" ); // phpcs:ignore
		}
	}

	/**
	 * Get the user exited indexes
	 *
	 * @param $table_name
	 *
	 * @return array|null
	 */
	private function get_existed_indexes_of( $table_name ) {
		$result = $this->wpdb->get_results( "SHOW INDEX FROM {$table_name};", ARRAY_A ); // phpcs:ignore

		if ( false === $result ) {
			return null;
		}

		return ( new Collection( $result ) )
			->map( function ( $row ) {
				if ( ! isset( $row['Key_name'] ) ) {
					return null;
				}

				return $row['Key_name'];
			} )
			->filter()
			->values();
	}

	/**
	 * Get all the database indexes.
	 *
	 * @return Collection[]
	 */
	private function get_indexes() {
		$max_index_length = static::MAX_INDEX_LENGTH;

		return [
			$this->query->get_table_submissions() => new Collection( [
				'main_meta_id_index' => 'ADD INDEX `main_meta_id_index` (`main_meta_id`)',
				'hash_id_unique_index' => "ADD UNIQUE INDEX `hash_id_unique_index` (`hash_id` ({$max_index_length}))",
				'hash_id_index' => "ADD INDEX `hash_id_index` (`hash_id` ({$max_index_length}))",
				'type_index' => "ADD INDEX `type_index` (`type` ({$max_index_length}))",
				'post_id_index' => 'ADD INDEX `post_id_index` (`post_id`)',
				'element_id_index' => "ADD INDEX `element_id_index` (`element_id` ({$max_index_length}))",
				'campaign_id_index' => 'ADD INDEX `campaign_id_index` (`campaign_id`)',
				'user_id_index' => 'ADD INDEX `user_id_index` (`user_id`)',
				'user_ip_index' => 'ADD INDEX `user_ip_index` (`user_ip`)',
				'status_index' => 'ADD INDEX `status_index` (`status`)',
				'is_read_index' => 'ADD INDEX `is_read_index` (`is_read`)',
				'created_at_gmt_index' => 'ADD INDEX `created_at_gmt_index` (`created_at_gmt`)',
				'updated_at_gmt_index' => 'ADD INDEX `updated_at_gmt_index` (`updated_at_gmt`)',
				'created_at_index' => 'ADD INDEX `created_at_index` (`created_at`)',
				'updated_at_index' => 'ADD INDEX `updated_at_index` (`updated_at`)',
				'referer_index' => "ADD INDEX `referer_index` (`referer` ({$max_index_length}))",
				'referer_title_index' => "ADD INDEX `referer_title_index` (`referer_title` ({$max_index_length}))",
			] ),
			$this->query->get_table_submissions_values() => new Collection( [
				'submission_id_index' => 'ADD INDEX `submission_id_index` (`submission_id`)',
				'key_index' => "ADD INDEX `key_index` (`key` ({$max_index_length}))",
			] ),
			$this->query->get_table_form_actions_log() => new Collection( [
				'submission_id_index' => 'ADD INDEX `submission_id_index` (`submission_id`)',
				'action_name_index' => "ADD INDEX `action_name_index` (`action_name` ({$max_index_length}))",
				'status_index' => 'ADD INDEX `status_index` (`status`)',
				'created_at_gmt_index' => 'ADD INDEX `created_at_gmt_index` (`created_at_gmt`)',
				'updated_at_gmt_index' => 'ADD INDEX `updated_at_gmt_index` (`updated_at_gmt`)',
				'created_at_index' => 'ADD INDEX `created_at_index` (`created_at`)',
				'updated_at_index' => 'ADD INDEX `updated_at_index` (`updated_at`)',
			] ),
		];
	}
}
modules/forms/submissions/database/migrations/initial.php000064400000007160150755004310020006 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Database\Migrations;

class Initial extends Base_Migration {
	public function run() {
		$this->create_tables();
		$this->add_indexes();
	}

	private function create_tables() {
		$charset_collate = $this->wpdb->get_charset_collate();

		$e_submission_table = "CREATE TABLE `{$this->query->get_table_submissions()}` (
			id bigint(20) unsigned auto_increment primary key,
			type varchar(60) null,
			hash_id varchar(60) not null,
			main_meta_id bigint(20) unsigned not null comment 'Id of main field. to represent the main meta field',
			post_id bigint(20) unsigned not null,
			referer varchar(500) not null,
			element_id varchar(20) not null,
			form_name varchar(60) not null,
			campaign_id bigint(20) unsigned not null,
			user_id bigint(20) unsigned null,
			user_ip varchar(46) not null,
			user_agent text not null,
			actions_count INT DEFAULT 0,
			actions_succeeded_count INT DEFAULT 0,
			status varchar(20) not null,
			is_read tinyint(1) default 0 not null,
			meta text null,
			created_at_gmt datetime not null,
			updated_at_gmt datetime not null,
			created_at datetime not null,
			updated_at datetime not null
		) {$charset_collate};";

		$e_submission_values_table = "CREATE TABLE `{$this->query->get_table_submissions_values()}` (
			id bigint(20) unsigned auto_increment primary key,
			submission_id bigint(20) unsigned not null default 0,
			`key` varchar(60) null,
			value longtext null
		) {$charset_collate};";

		$e_submission_actions_log_table = "CREATE TABLE `{$this->query->get_table_form_actions_log()}` (
			id bigint(20) unsigned auto_increment primary key,
			submission_id bigint(20) unsigned not null,
			action_name varchar(60) not null,
			action_label varchar(60) null,
			status varchar(20) not null,
			log text null,
			created_at_gmt datetime not null,
			updated_at_gmt datetime not null,
			created_at datetime not null,
			updated_at datetime not null
		) {$charset_collate};";

		require_once ABSPATH . 'wp-admin/includes/upgrade.php';

		dbDelta( $e_submission_table . $e_submission_values_table . $e_submission_actions_log_table );
	}

	private function add_indexes() {
		// phpcs:disable
		$this->wpdb->query( "ALTER TABLE `{$this->query->get_table_submissions()}`
    		ADD INDEX `main_meta_id_index` (`main_meta_id`),
    		ADD UNIQUE INDEX `hash_id_unique_index` (`hash_id`),
    		ADD INDEX `hash_id_index` (`hash_id`),
    		ADD INDEX `type_index` (`type`),
    		ADD INDEX `post_id_index` (`post_id`),
    		ADD INDEX `element_id_index` (`element_id`),
    		ADD INDEX `campaign_id_index` (`campaign_id`),
    		ADD INDEX `user_id_index` (`user_id`),
    		ADD INDEX `user_ip_index` (`user_ip`),
    		ADD INDEX `status_index` (`status`),
    		ADD INDEX `is_read_index` (`is_read`),
    		ADD INDEX `created_at_gmt_index` (`created_at_gmt`),
    		ADD INDEX `updated_at_gmt_index` (`updated_at_gmt`),
    		ADD INDEX `created_at_index` (`created_at`),
    		ADD INDEX `updated_at_index` (`updated_at`)
		" );

		$this->wpdb->query( "ALTER TABLE `{$this->query->get_table_submissions_values()}`
    		ADD INDEX `submission_id_index` (`submission_id`),
    		ADD INDEX `key_index` (`key`)
		" );

		$this->wpdb->query( "ALTER TABLE `{$this->query->get_table_form_actions_log()}`
    		ADD INDEX `submission_id_index` (`submission_id`),
    		ADD INDEX `action_name_index` (`action_name`),
    		ADD INDEX `status_index` (`status`),
    		ADD INDEX `created_at_gmt_index` (`created_at_gmt`),
    		ADD INDEX `updated_at_gmt_index` (`updated_at_gmt`),
    		ADD INDEX `created_at_index` (`created_at`),
    		ADD INDEX `updated_at_index` (`updated_at`)
		" );
		// phpcs:enable
	}
}
modules/forms/submissions/database/migration.php000064400000003105150755004310016165 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Database;

use Elementor\Core\Base\Base_Object;
use Elementor\Core\Utils\Collection;

class Migration extends Base_Object {
	const OPTION_DB_VERSION = 'elementor_submissions_db_version';

	// This version must be updated when new migration created.
	const CURRENT_DB_VERSION = 5;

	private static $migrations = [
		1 => Migrations\Initial::class,
		// It jumps from version 1 to 4 because some users already migrated the DB when the migrations system worked with the Elementor Pro version
		// when the int value of the version "3.2.0" was 3.
		4 => Migrations\Referer_Extra::class,
		5 => Migrations\Fix_Indexes::class,
	];

	/**
	 * Checks if there is a need to run migrations.
	 */
	public static function install() {
		$installed_version = intval( get_option( self::OPTION_DB_VERSION ) );

		// Up to date. Nothing to do.
		if ( static::CURRENT_DB_VERSION <= $installed_version ) {
			return;
		}

		global $wpdb;

		( new Collection( static::$migrations ) )
			->filter( function ( $_, $version ) use ( $installed_version ) {
				// Filter all the migrations that already done.
				return $version > $installed_version;
			} )
			->map( function ( $migration_class_name, $version ) use ( $wpdb ) {
				/** @var Migrations\Base_Migration $migration */
				$migration = new $migration_class_name( $wpdb );
				$migration->run();

				// In case some migration failed it updates version every migration.
				update_option( static::OPTION_DB_VERSION, $version );
			} );

		update_option( static::OPTION_DB_VERSION, self::CURRENT_DB_VERSION );
	}
}
modules/forms/submissions/component.php000064400000010254150755004310014435 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions;

use Elementor\Settings;
use ElementorPro\Modules\Forms\Registrars\Form_Actions_Registrar;
use ElementorPro\Plugin;
use ElementorPro\Base\Module_Base;
use ElementorPro\Modules\Forms\Submissions\Database\Query;
use ElementorPro\Modules\Forms\Submissions\Data\Controller;
use ElementorPro\Modules\Forms\Submissions\Database\Migration;
use ElementorPro\Modules\Forms\Submissions\Data\Forms_Controller;
use ElementorPro\Modules\Forms\Submissions\Actions\Save_To_Database;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Component extends Module_Base {
	const NAME = 'form-submissions';
	const PAGE_ID = 'e-form-submissions';

	/**
	 * @return string
	 */
	public function get_name() {
		return static::NAME;
	}

	/**
	 * @return string
	 */
	public function get_assets_base_url() {
		return ELEMENTOR_PRO_URL;
	}

	/**
	 * Check if the current admin page is the component page.
	 *
	 * @return bool
	 */
	private function is_current() {
		// Nonce verification not required here.
		// phpcs:ignore WordPress.Security.NonceVerification.Recommended
		return ( ! empty( $_GET['page'] ) && self::PAGE_ID === $_GET['page'] );
	}

	/**
	 * Register admin menu
	 */
	private function register_admin_menu() {
		$title = $this->get_title();

		add_submenu_page(
			Settings::PAGE_ID,
			$title,
			$title,
			'manage_options',
			self::PAGE_ID,
			function () {
				?>
					<div class="wrap">
						<h1 class="wp-heading-inline"><?php echo esc_html__( 'Submissions', 'elementor-pro' ); ?></h1>
						<hr class="wp-header-end">
						<div id="e-form-submissions"></div>
					</div>
				<?php
			}
		);
	}

	/**
	 * Enqueue admin scripts
	 */
	private function enqueue_scripts() {
		wp_register_style(
			'select2',
			$this->get_css_assets_url( 'e-select2', '../elementor/assets/lib/e-select2/css/' ),
			[],
			'4.0.6-rc.1'
		);

		wp_enqueue_style(
			'elementor-app-base',
			$this->get_css_assets_url( 'modules/forms/submissions/admin', null, 'default', true ),
			[ 'select2' ],
			ELEMENTOR_PRO_VERSION
		);

		wp_register_script(
			'select2',
			$this->get_js_assets_url( 'e-select2.full', '../elementor/assets/lib/e-select2/js/' ),
			[
				'jquery',
			],
			'4.0.6-rc.1',
			true
		);

		wp_enqueue_script(
			'form-submission-admin',
			$this->get_js_assets_url( 'form-submission-admin' ),
			[
				'select2',
				'wp-url',
				'wp-i18n',
				'wp-date',
				'react',
				'react-dom',
			],
			ELEMENTOR_PRO_VERSION,
			true
		);

		$is_trash_enabled = (int) ( EMPTY_TRASH_DAYS !== 0 );

		wp_add_inline_script(
			'form-submission-admin',
			"window.elementorSubmissionsConfig = { isTrashEnabled: {$is_trash_enabled} };",
			'before'
		);

		wp_set_script_translations( 'form-submission-admin', 'elementor-pro' );
	}

	private function scheduled_submissions_delete() {
		$query = Query::get_instance();
		$delete_timestamp = time() - ( DAY_IN_SECONDS * EMPTY_TRASH_DAYS );

		$ids = $query->get_trashed_submission_ids_to_delete( $delete_timestamp );

		foreach ( $ids as $id ) {
			$query->delete_submission( $id );
		}
	}

	private function get_title() {
		return esc_html__( 'Submissions', 'elementor-pro' );
	}

	/**
	 * Component constructor.
	 */
	public function __construct() {
		parent::__construct();

		Plugin::elementor()->data_manager->register_controller( Controller::class );
		Plugin::elementor()->data_manager->register_controller( Forms_Controller::class );

		new Personal_Data();

		add_action( 'admin_init', function () {
			Migration::install();
		} );

		add_action( 'elementor_pro/forms/actions/register', function ( Form_Actions_Registrar $actions_registrar ) {
			$actions_registrar->register( new Save_To_Database() );
		}, 0 /* Before all the actions */ );

		add_filter( 'elementor_pro/forms/default_submit_actions', function ( $actions ) {
			return array_merge( $actions, [ 'save-to-database' ] );
		} );

		add_action( 'wp_scheduled_delete', function () {
			$this->scheduled_submissions_delete();
		} );

		add_action( 'admin_menu', function () {
			$this->register_admin_menu();
		}, 21 /* after Elementor page */ );

		if ( $this->is_current() ) {
			add_action( 'admin_enqueue_scripts', function () {
				$this->enqueue_scripts();
			} );
		}
	}
}
modules/forms/submissions/export/csv-export.php000064400000011344150755004310016067 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Export;

use Elementor\Core\Base\Base_Object;
use Elementor\Core\Utils\Collection;
use ElementorPro\Modules\Forms\Submissions\Database\Entities\Form_Snapshot;
use ElementorPro\Modules\Forms\Submissions\Database\Query;
use ElementorPro\Modules\Forms\Submissions\Database\Repositories\Form_Snapshot_Repository;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class CSV_Export extends Base_Object {
	/**
	 * @var Collection
	 */
	private $submissions;

	/**
	 * @var integer
	 */
	private $post_id;

	/**
	 * @var string
	 */
	private $element_id;

	/**
	 * @var Form_Snapshot|null
	 */
	private $form;

	/**
	 * @var Collection
	 */
	private $values_keys;

	/**
	 * Csv_Export constructor.
	 *
	 * Csv_Export constructor.
	 *
	 * @param Collection $submissions
	 */
	public function __construct( Collection $submissions ) {
		$this->submissions = $submissions;

		$first_submission = $this->submissions->first();

		$this->values_keys = new Collection( [] );
		$this->post_id = $first_submission['post']['id'];
		$this->element_id = $first_submission['element_id'];

		$this->form = Form_Snapshot_Repository::instance()->find(
			$this->post_id,
			$this->element_id
		);
	}

	/**
	 * @return array
	 */
	public function prepare_for_json_response() {
		$this->values_keys = Query::get_instance()->get_submissions_value_keys(
			$this->post_id,
			$this->element_id
		);

		$headers = $this->get_headers();
		$rows = $this->get_rows();

		return [
			'id' => $this->element_id,
			'content' => array_merge( $headers, $rows ),
			'mimetype' => 'text/csv;charset=UTF-8',
			'extension' => 'csv',
			'form_label' => $this->form ? $this->form->get_label() : "({$this->element_id})",
		];
	}

	/**
	 * @return array
	 */
	private function get_headers() {
		$base_headers = [
			'1_form_name' => esc_html__( 'Form Name (ID)', 'elementor-pro' ),
			'2_id' => esc_html__( 'Submission ID', 'elementor-pro' ),
			'3_created_at' => esc_html__( 'Created At', 'elementor-pro' ),
			'4_user_id' => esc_html__( 'User ID', 'elementor-pro' ),
			'5_user_agent' => esc_html__( 'User Agent', 'elementor-pro' ),
			'6_user_ip' => esc_html__( 'User IP', 'elementor-pro' ),
			'7_referrer' => esc_html__( 'Referrer', 'elementor-pro' ),
		];

		$labels_dictionary = $this->get_form_labels_dictionary();

		$headers = $this->values_keys
			->map_with_keys( function ( $key ) use ( $labels_dictionary ) {
				return [
					// JSON_UNESCAPED_UNICODE - for supporting non english chars.
					$key => wp_json_encode( isset( $labels_dictionary[ $key ] ) ? $labels_dictionary[ $key ] : $key, JSON_UNESCAPED_UNICODE ),
				];
			} )
			->merge( $base_headers )
			->all();

		ksort( $headers );

		return [ implode( ',', $headers ) ];
	}

	/**
	 * @return array
	 */
	private function get_rows() {
		return $this->submissions->map( function ( $submission ) {
			$base_values = [
				'1_form_name' => wp_json_encode(
					$this->form ? $this->form->get_label() : "({$this->element_id})"
				),
				'2_id' => wp_json_encode( $submission['id'] ),
				'3_created_at' => wp_json_encode( $submission['created_at'] ),
				'4_user_id' => wp_json_encode( $submission['user_id'] ),
				// JSON_UNESCAPED_SLASHES - Should not escape the user agent e.g: 'Mozilla/5.0 ...'
				'5_user_agent' => wp_json_encode( $submission['user_agent'], JSON_UNESCAPED_SLASHES ),
				'6_user_ip' => wp_json_encode( $submission['user_ip'] ),
				// JSON_UNESCAPED_SLASHES - should not escape the url slashes e.g: 'https://local.test/'
				'7_referrer' => wp_json_encode( $submission['referer'], JSON_UNESCAPED_SLASHES ),
			];

			$values_dictionary = $this->get_values_dictionary( $submission['values'] );

			$row = $this->values_keys
				->map_with_keys( function ( $key ) use ( $values_dictionary ) {
					return [
						// JSON_UNESCAPED_UNICODE - for supporting non english chars.
						$key => wp_json_encode( isset( $values_dictionary[ $key ] ) ? $values_dictionary[ $key ] : '', JSON_UNESCAPED_UNICODE ),
					];
				} )
				->merge( $base_values )
				->all();

			ksort( $row );

			return implode( ',', $row );
		} )->all();
	}

	/**
	 * Create a dictionary from the field id and label.
	 *
	 * @return array
	 */
	private function get_form_labels_dictionary() {
		if ( ! $this->form ) {
			return [];
		}

		$dictionary = [];

		foreach ( $this->form->fields as $field ) {
			$dictionary[ $field['id'] ] = $field['label'];
		}

		return $dictionary;
	}

	/**
	 * Create a dictionary from the value record key and value.
	 *
	 * @param array $values
	 *
	 * @return array
	 */
	private function get_values_dictionary( $values ) {
		if ( ! $values ) {
			return [];
		}

		$dictionary = [];

		foreach ( $values as $value ) {
			$dictionary[ $value['key'] ] = $value['value'];
		}

		return $dictionary;
	}
}
modules/forms/submissions/actions/save-to-database.php000064400000013220150755004310017207 0ustar00<?php
namespace ElementorPro\Modules\Forms\Submissions\Actions;

use Elementor\Controls_Manager;
use Elementor\Core\Utils\Collection;
use ElementorPro\Plugin;
use ElementorPro\Modules\Forms\Widgets\Form;
use ElementorPro\Modules\Forms\Classes\Action_Base;
use ElementorPro\Modules\Forms\Submissions\Component;
use ElementorPro\Modules\Forms\Submissions\Database\Query;
use ElementorPro\Modules\Forms\Submissions\Database\Repositories\Form_Snapshot_Repository;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Save_To_Database extends Action_Base {
	private $submission_id;

	private $actions_succeeded_count = 0;

	public function get_name() {
		return 'save-to-database';
	}

	public function get_label() {
		return esc_html__( 'Collect Submissions', 'elementor-pro' );
	}

	public function register_settings_section( $widget ) {
		$widget->start_controls_section(
			'section_submissions',
			[
				'label' => esc_html__( 'Collect Submissions', 'elementor-pro' ),
				'condition' => [
					'submit_actions' => $this->get_name(),
				],
			]
		);

		$widget->add_control(
			'submissions_action_message',
			[
				'type' => Controls_Manager::RAW_HTML,
				'raw' => sprintf(
					__(
						'Collected Submissions will be saved to Elementor > <a href="%s" target="_blank" rel="noreferrer">Submissions</a>',
						'elementor-pro'
					),
					self_admin_url( 'admin.php?page=' . Component::PAGE_ID )
				),
				'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
			]
		);

		$widget->end_controls_section();
	}

	public function on_export( $element ) {
		// This action does not have to do nothing on export.
	}

	/**
	 * @param \ElementorPro\Modules\Forms\Classes\Form_Record  $record
	 * @param \ElementorPro\Modules\Forms\Classes\Ajax_Handler $ajax_handler
	 */
	public function run( $record, $ajax_handler ) {
		$meta = $record->get_form_meta( [ 'page_url', 'page_title', 'user_agent', 'remote_ip' ] );

		$actions_count = ( new Collection( $record->get_form_settings( 'submit_actions' ) ) )
			->filter(function ( $value ) {
				return $value !== $this->get_name();
			})
			->count();

		$post_id = $record->get_form_settings( 'form_post_id' );
		$element_id = $ajax_handler->get_current_form()['id'];
		$form_name = $record->get_form_settings( 'form_name' );

		$this->submission_id = Query::get_instance()->add_submission( [
			'main_meta_id' => 0,
			'post_id' => $post_id,
			'referer' => remove_query_arg(
				[ 'preview_id', 'preview_nonce', 'preview' ],
				$meta['page_url']['value']
			),
			'referer_title' => $meta['page_title']['value'],
			'element_id' => $element_id,
			'form_name' => $form_name,
			'campaign_id' => 0,
			'user_id' => get_current_user_id(),
			'user_ip' => $meta['remote_ip']['value'],
			'user_agent' => $meta['user_agent']['value'],
			'actions_count' => $actions_count,
			'actions_succeeded_count' => 0,
			'meta' => wp_json_encode( [
				// TODO: Should be removed if there is an ability to edit "global widgets"
				'edit_post_id' => $record->get_form_settings( 'edit_post_id' ),
			] ),
		], $record->get_field( null ) );

		/** @var Form $form_instance */
		$form_instance = Plugin::elementor()->elements_manager->create_element_instance( $ajax_handler->get_current_form() );
		$fields = $record->get_form_settings( 'form_fields' );

		// When created new submission, it should also update or create
		// a form snapshot to save to new state of the form in case the form changed or will
		// be deleted later.
		Form_Snapshot_Repository::instance()
			->create_or_update( $post_id, $element_id, [
				'name' => $form_name,
				'fields' => array_map( function ( $field, $index ) use ( $form_instance ) {
					// Apply filters to demonstrate the same behavior as the render behavior. (adding select fields dynamically, etc.)
					// Ref: modules/forms/widgets/form.php:2116
					$field = apply_filters( 'elementor_pro/forms/render/item', $field, $index, $form_instance );
					$field = apply_filters( "elementor_pro/forms/render/item/{$field['field_type']}", $field, $index, $form_instance );

					$mapped_field = [
						'id' => $field['custom_id'],
						'type' => $field['field_type'],
						'label' => $field['field_label'],
					];

					if ( isset( $field['field_options'] ) ) {
						$mapped_field['options'] = explode( PHP_EOL, $field['field_options'] );
					}

					if ( isset( $field['allow_multiple'] ) ) {
						$mapped_field['is_multiple'] = 'true' === $field['allow_multiple'];
					}

					return $mapped_field;
				}, $fields, array_keys( $fields ) ),
			] );
	}

	/**
	 * It listen for all the form actions and log the result into the database.
	 *
	 * @param Action_Base     $action Should be class based on ActionBase (do not type hint to support third party plugins)
	 * @param \Exception|null $exception
	 */
	private function save_action_log( $action, \Exception $exception = null ) {
		if ( ! $this->submission_id || $action->get_name() === $this->get_name() ) {
			return;
		}

		$query = Query::get_instance();
		$error_message = null;

		if ( $exception ) {
			$error_message = $exception->getMessage();

			$status = Query::ACTIONS_LOG_STATUS_FAILED;
		} else {
			$this->actions_succeeded_count += 1;

			$query->update_submission( $this->submission_id, [
				'actions_succeeded_count' => $this->actions_succeeded_count,
			] );

			$status = Query::ACTIONS_LOG_STATUS_SUCCESS;
		}

		$query->add_action_log(
			$this->submission_id,
			$action,
			$status,
			$error_message
		);
	}

	/**
	 * Save_To_Database constructor.
	 */
	public function __construct() {
		add_action( 'elementor_pro/forms/actions/after_run', function ( Action_Base $action, \Exception $exception = null ) {
			$this->save_action_log( $action, $exception );
		}, 10, 2 );
	}
}
modules/forms/widgets/login.php000064400000067563150755004310012652 0ustar00<?php
namespace ElementorPro\Modules\Forms\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Background;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Typography;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Login extends Base_Widget {

	public function get_name() {
		return 'login';
	}

	public function get_title() {
		return esc_html__( 'Login', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-lock-user';
	}

	public function get_keywords() {
		return [ 'login', 'user', 'form' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_fields_content',
			[
				'label' => esc_html__( 'Form Fields', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'show_labels',
			[
				'label' => esc_html__( 'Label', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'input_size',
			[
				'label' => esc_html__( 'Input Size', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'xs' => esc_html__( 'Extra Small', 'elementor-pro' ),
					'sm' => esc_html__( 'Small', 'elementor-pro' ),
					'md' => esc_html__( 'Medium', 'elementor-pro' ),
					'lg' => esc_html__( 'Large', 'elementor-pro' ),
					'xl' => esc_html__( 'Extra Large', 'elementor-pro' ),
				],
				'default' => 'sm',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_button_content',
			[
				'label' => esc_html__( 'Button', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_text',
			[
				'label' => esc_html__( 'Text', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Log In', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'xs' => esc_html__( 'Extra Small', 'elementor-pro' ),
					'sm' => esc_html__( 'Small', 'elementor-pro' ),
					'md' => esc_html__( 'Medium', 'elementor-pro' ),
					'lg' => esc_html__( 'Large', 'elementor-pro' ),
					'xl' => esc_html__( 'Extra Large', 'elementor-pro' ),
				],
				'default' => 'sm',
			]
		);

		$this->add_responsive_control(
			'align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'end' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'stretch' => [
						'title' => esc_html__( 'Justified', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				'prefix_class' => 'elementor%s-button-align-',
				'default' => '',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_login_content',
			[
				'label' => esc_html__( 'Additional Options', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'redirect_after_login',
			[
				'label' => esc_html__( 'Redirect After Login', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'redirect_url',
			[
				'type' => Controls_Manager::URL,
				'show_label' => false,
				'options' => false,
				'separator' => false,
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
				'description' => esc_html__( 'Note: Because of security reasons, you can ONLY use your current domain here.', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
				'condition' => [
					'redirect_after_login' => 'yes',
				],
			]
		);

		$this->add_control(
			'redirect_after_logout',
			[
				'label' => esc_html__( 'Redirect After Logout', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'redirect_logout_url',
			[
				'type' => Controls_Manager::URL,
				'show_label' => false,
				'options' => false,
				'separator' => false,
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
				'description' => esc_html__( 'Note: Because of security reasons, you can ONLY use your current domain here.', 'elementor-pro' ),
				'dynamic' => [
					'active' => true,
				],
				'condition' => [
					'redirect_after_logout' => 'yes',
				],
			]
		);

		$this->add_control(
			'show_lost_password',
			[
				'label' => esc_html__( 'Lost your password?', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
			]
		);

		if ( get_option( 'users_can_register' ) ) {
			$this->add_control(
				'show_register',
				[
					'label' => esc_html__( 'Register', 'elementor-pro' ),
					'type' => Controls_Manager::SWITCHER,
					'default' => 'yes',
					'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
					'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				]
			);
		}

		$this->add_control(
			'show_remember_me',
			[
				'label' => esc_html__( 'Remember Me', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'show_logged_in_message',
			[
				'label' => esc_html__( 'Logged in Message', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'custom_labels',
			[
				'label' => esc_html__( 'Custom Label', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
			]
		);

		$this->add_control(
			'user_label',
			[
				'label' => esc_html__( 'Username Label', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Username or Email Address', 'elementor-pro' ),
				'conditions' => [
					'relation' => 'or',
					'terms' => [
						[
							'name' => 'show_labels',
							'operator' => '===',
							'value' => 'yes',
						],
						[
							'name' => 'custom_labels',
							'operator' => '===',
							'value' => 'yes',
						],
					],
				],
			]
		);

		$this->add_control(
			'user_placeholder',
			[
				'label' => esc_html__( 'Username Placeholder', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Username or Email Address', 'elementor-pro' ),
				'condition' => [
					'custom_labels' => 'yes',
				],
			]
		);

		$this->add_control(
			'password_label',
			[
				'label' => esc_html__( 'Password Label', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Password', 'elementor-pro' ),
				'conditions' => [
					'relation' => 'or',
					'terms' => [
						[
							'name' => 'show_labels',
							'operator' => '===',
							'value' => 'yes',
						],
						[
							'name' => 'custom_labels',
							'operator' => '===',
							'value' => 'yes',
						],
					],
				],
			]
		);

		$this->add_control(
			'password_placeholder',
			[
				'label' => esc_html__( 'Password Placeholder', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Password', 'elementor-pro' ),
				'condition' => [
					'custom_labels' => 'yes',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style',
			[
				'label' => esc_html__( 'Form', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'row_gap',
			[
				'label' => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => '10',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-field-group' => 'margin-bottom: {{SIZE}}{{UNIT}};',
					'{{WRAPPER}} .elementor-form-fields-wrapper' => 'margin-bottom: -{{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'links_color',
			[
				'label' => esc_html__( 'Links Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-field-group > a' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_control(
			'links_hover_color',
			[
				'label' => esc_html__( 'Links Hover Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-field-group > a:hover' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_labels',
			[
				'label' => esc_html__( 'Label', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'show_labels!' => '',
				],
			]
		);

		$this->add_control(
			'label_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => '0',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'selectors' => [
					'body {{WRAPPER}} .elementor-field-group > label' => 'padding-bottom: {{SIZE}}{{UNIT}};',
					// for the label position = above option
				],
			]
		);

		$this->add_control(
			'label_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-form-fields-wrapper label' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'label_typography',
				'selector' => '{{WRAPPER}} .elementor-form-fields-wrapper label',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_field_style',
			[
				'label' => esc_html__( 'Fields', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'field_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-field-group .elementor-field' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'field_typography',
				'selector' => '{{WRAPPER}} .elementor-field-group .elementor-field, {{WRAPPER}} .elementor-field-subgroup label',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->add_control(
			'field_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#ffffff',
				'selectors' => [
					'{{WRAPPER}} .elementor-field-group .elementor-field:not(.elementor-select-wrapper)' => 'background-color: {{VALUE}};',
					'{{WRAPPER}} .elementor-field-group .elementor-select-wrapper select' => 'background-color: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'field_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-field-group .elementor-field:not(.elementor-select-wrapper)' => 'border-color: {{VALUE}};',
					'{{WRAPPER}} .elementor-field-group .elementor-select-wrapper select' => 'border-color: {{VALUE}};',
					'{{WRAPPER}} .elementor-field-group .elementor-select-wrapper::before' => 'color: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'field_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'placeholder' => '1',
				'size_units' => [ 'px' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-field-group .elementor-field:not(.elementor-select-wrapper)' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
					'{{WRAPPER}} .elementor-field-group .elementor-select-wrapper select' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'field_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-field-group .elementor-field:not(.elementor-select-wrapper)' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
					'{{WRAPPER}} .elementor-field-group .elementor-select-wrapper select' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_button_style',
			[
				'label' => esc_html__( 'Button', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->start_controls_tabs( 'tabs_button_style' );

		$this->start_controls_tab(
			'tab_button_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-button' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'button_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
				'selector' => '{{WRAPPER}} .elementor-button',
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'button_background',
				'types' => [ 'classic', 'gradient' ],
				'exclude' => [ 'image' ],
				'selector' => '{{WRAPPER}} .elementor-button',
				'fields_options' => [
					'background' => [
						'default' => 'classic',
					],
					'color' => [
						'global' => [
							'default' => Global_Colors::COLOR_ACCENT,
						],
					],
				],
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(), [
				'name' => 'button_border',
				'selector' => '{{WRAPPER}} .elementor-button',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-button' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'button_text_padding',
			[
				'label' => esc_html__( 'Text Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_button_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_hover_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-button:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Background::get_type(),
			[
				'name' => 'button_background_hover',
				'types' => [ 'classic', 'gradient' ],
				'exclude' => [ 'image' ],
				'selector' => '{{WRAPPER}} .elementor-button:hover',
				'fields_options' => [
					'background' => [
						'default' => 'classic',
					],
				],
			]
		);

		$this->add_control(
			'button_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-button:hover' => 'border-color: {{VALUE}};',
				],
				'condition' => [
					'button_border_border!' => '',
				],
			]
		);

		$this->add_control(
			'button_hover_animation',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::HOVER_ANIMATION,
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();

		$this->start_controls_section(
			'section_style_message',
			[
				'label' => esc_html__( 'Logged in Message', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'message_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-widget-container .elementor-login__logged-in-message' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'message_typography',
				'selector' => '{{WRAPPER}} .elementor-widget-container .elementor-login__logged-in-message',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->end_controls_section();

	}

	private function form_fields_render_attributes() {
		$settings = $this->get_settings();

		if ( ! empty( $settings['button_size'] ) ) {
			$this->add_render_attribute( 'button', 'class', 'elementor-size-' . $settings['button_size'] );
		}

		if ( $settings['button_hover_animation'] ) {
			$this->add_render_attribute( 'button', 'class', 'elementor-animation-' . $settings['button_hover_animation'] );
		}

		$this->add_render_attribute(
			[
				'wrapper' => [
					'class' => [
						'elementor-form-fields-wrapper',
					],
				],
				'field-group' => [
					'class' => [
						'elementor-field-type-text',
						'elementor-field-group',
						'elementor-column',
						'elementor-col-100',
					],
				],
				'submit-group' => [
					'class' => [
						'elementor-field-group',
						'elementor-column',
						'elementor-field-type-submit',
						'elementor-col-100',
					],
				],

				'button' => [
					'class' => [
						'elementor-button',
					],
					'name' => 'wp-submit',
				],
				'user_label' => [
					'for' => 'user',
				],
				'user_input' => [
					'type' => 'text',
					'name' => 'log',
					'id' => 'user',
					'placeholder' => $settings['user_placeholder'],
					'class' => [
						'elementor-field',
						'elementor-field-textual',
						'elementor-size-' . $settings['input_size'],
					],
				],
				'password_label' => [
					'for' => 'password',
				],
				'password_input' => [
					'type' => 'password',
					'name' => 'pwd',
					'id' => 'password',
					'placeholder' => $settings['password_placeholder'],
					'class' => [
						'elementor-field',
						'elementor-field-textual',
						'elementor-size-' . $settings['input_size'],
					],
				],
				//TODO: add unique ID
				'label_user' => [
					'for' => 'user',
					'class' => 'elementor-field-label',
				],

				'label_password' => [
					'for' => 'password',
					'class' => 'elementor-field-label',
				],
			]
		);

		if ( ! $settings['show_labels'] ) {
			$this->add_render_attribute( 'label', 'class', 'elementor-screen-only' );
		}

		$this->add_render_attribute( 'field-group', 'class', 'elementor-field-required' )
			 ->add_render_attribute( 'input', 'required', true )
			 ->add_render_attribute( 'input', 'aria-required', 'true' );

	}

	protected function render() {
		$settings = $this->get_settings_for_display();
		$current_url = remove_query_arg( 'fake_arg' );
		$logout_redirect = $current_url;

		if ( 'yes' === $settings['redirect_after_login'] && ! empty( $settings['redirect_url']['url'] ) ) {
			$redirect_url = $settings['redirect_url']['url'];
		} else {
			$redirect_url = $current_url;
		}

		if ( 'yes' === $settings['redirect_after_logout'] && ! empty( $settings['redirect_logout_url']['url'] ) ) {
			$logout_redirect = $settings['redirect_logout_url']['url'];
		}

		if ( is_user_logged_in() && ! Plugin::elementor()->editor->is_edit_mode() ) {
			if ( 'yes' === $settings['show_logged_in_message'] ) {
				$current_user = wp_get_current_user();

				// PHPCS - `sprintf` is safe.
				echo '<div class="elementor-login elementor-login__logged-in-message">' .
					sprintf(
						/* translators: 1: User display name, 2: Link open tag, 3: Link closing tag. */
						esc_html__( 'You are Logged in as %1$s (%2$sLogout%3$s)', 'elementor-pro' ),
						wp_kses_post( $current_user->display_name ),
						sprintf( '<a href="%s" target="_blank">', esc_url( wp_logout_url( $logout_redirect ) ) ),
						'</a>'
					) .
					'</div>';
			}

			return;
		}

		$this->form_fields_render_attributes();
		?>
		<form class="elementor-login elementor-form" method="post" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>">
			<input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_url ); ?>">
			<div <?php $this->print_render_attribute_string( 'wrapper' ); ?>>
				<div <?php $this->print_render_attribute_string( 'field-group' ); ?>>
					<?php

					if ( $settings['show_labels'] ) {
						echo '<label ';
						$this->print_render_attribute_string( 'user_label' );
						echo '>';

						$this->print_unescaped_setting( 'user_label' );
						echo '</label>';
					}
					?>
					<input size="1" <?php $this->print_render_attribute_string( 'user_input' ); ?>>
				</div>
				<div <?php $this->print_render_attribute_string( 'field-group' ); ?>>
					<?php
					if ( $settings['show_labels'] ) :
						echo '<label ';
						$this->print_render_attribute_string( 'password_label' );
						echo '>';

						$this->print_unescaped_setting( 'password_label' );
						echo '</label>';
					endif;
					?>
					<input size="1" <?php $this->print_render_attribute_string( 'password_input' ); ?>>
				</div>

				<?php if ( 'yes' === $settings['show_remember_me'] ) : ?>
					<div class="elementor-field-type-checkbox elementor-field-group elementor-column elementor-col-100 elementor-remember-me">
						<label for="elementor-login-remember-me">
							<input type="checkbox" id="elementor-login-remember-me" name="rememberme" value="forever">
							<?php echo esc_html__( 'Remember Me', 'elementor-pro' ); ?>
						</label>
					</div>
				<?php endif; ?>

				<div <?php $this->print_render_attribute_string( 'submit-group' ); ?>>
					<button type="submit" <?php $this->print_render_attribute_string( 'button' ); ?>>
							<?php if ( ! empty( $settings['button_text'] ) ) : ?>
								<span class="elementor-button-text"><?php $this->print_unescaped_setting( 'button_text' ); ?></span>
							<?php endif; ?>
					</button>
				</div>

				<?php
				$show_lost_password = 'yes' === $settings['show_lost_password'];
				$show_register = get_option( 'users_can_register' ) && 'yes' === $settings['show_register'];

				if ( $show_lost_password || $show_register ) : ?>
					<div class="elementor-field-group elementor-column elementor-col-100">
						<?php if ( $show_lost_password ) : ?>
							<?php // PHPCS - `wp_lostpassword_url` is safe. ?>
							<a class="elementor-lost-password" href="<?php echo wp_lostpassword_url( $redirect_url ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>">
								<?php echo esc_html__( 'Lost your password?', 'elementor-pro' ); ?>
							</a>
						<?php endif; ?>

						<?php if ( $show_register ) : ?>
							<?php if ( $show_lost_password ) : ?>
								<span class="elementor-login-separator"> | </span>
							<?php endif; ?>
							<?php // PHPCS - `wp_registration_url` is safe. ?>
							<a class="elementor-register" href="<?php echo wp_registration_url(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>">
								<?php echo esc_html__( 'Register', 'elementor-pro' ); ?>
							</a>
						<?php endif; ?>
					</div>
				<?php endif; ?>
			</div>
		</form>
		<?php
	}

	/**
	 * Render Login Form output in the editor.
	 *
	 * Written as a Backbone JavaScript template and used to generate the live preview.
	 *
	 * @since 2.9.0
	 * @access protected
	 */
	protected function content_template() {
		?>
		<div class="elementor-login elementor-form">
			<div class="elementor-form-fields-wrapper">
				<#
					fieldGroupClasses = 'elementor-field-group elementor-column elementor-col-100 elementor-field-type-text';
				#>
				<div class="{{ fieldGroupClasses }}">
					<# if ( settings.show_labels ) { #>
						<label class="elementor-field-label" for="user" >{{{ settings.user_label }}}</label>
						<# } #>
							<input size="1" type="text" id="user" placeholder="{{ settings.user_placeholder }}" class="elementor-field elementor-field-textual elementor-size-{{ settings.input_size }}" />
				</div>
				<div class="{{ fieldGroupClasses }}">
					<# if ( settings.show_labels ) { #>
						<label class="elementor-field-label" for="password" >{{{ settings.password_label }}}</label>
						<# } #>
							<input size="1" type="password" id="password" placeholder="{{ settings.password_placeholder }}" class="elementor-field elementor-field-textual elementor-size-{{ settings.input_size }}" />
				</div>

				<# if ( settings.show_remember_me ) { #>
					<div class="elementor-field-type-checkbox elementor-field-group elementor-column elementor-col-100 elementor-remember-me">
						<label for="elementor-login-remember-me">
							<input type="checkbox" id="elementor-login-remember-me" name="rememberme" value="forever">
							<?php // PHPCS - `esc_html__` is safe. ?>
							<?php echo esc_html__( 'Remember Me', 'elementor-pro' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
						</label>
					</div>
				<# } #>

				<div class="elementor-field-group elementor-column elementor-field-type-submit elementor-col-100">
					<button type="submit" class="elementor-button elementor-size-{{ settings.button_size }}">
						<# if ( settings.button_text ) { #>
							<span class="elementor-button-text">{{ settings.button_text }}</span>
						<# } #>
					</button>
				</div>

				<# if ( settings.show_lost_password || settings.show_register ) { #>
					<div class="elementor-field-group elementor-column elementor-col-100">
						<# if ( settings.show_lost_password ) { #>
						<?php // PHPCS - `wp_lostpassword_url` is safe. ?>
						<a class="elementor-lost-password" href="<?php echo wp_lostpassword_url(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>">
								<?php echo esc_html__( 'Lost your password?', 'elementor-pro' ); ?>
							</a>
						<# } #>

						<?php if ( get_option( 'users_can_register' ) ) { ?>
							<# if ( settings.show_register ) { #>
								<# if ( settings.show_lost_password ) { #>
									<span class="elementor-login-separator"> | </span>
								<# } #>
							<?php // PHPCS - `wp_registration_url` is safe. ?>
							<a class="elementor-register" href="<?php echo wp_registration_url(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>">
									<?php echo esc_html__( 'Register', 'elementor-pro' ); ?>
								</a>
							<# } #>
						<?php } ?>
					</div>
				<# } #>
			</div>
		</div>
		<?php
	}

	public function render_plain_content() {}

	public function get_group_name() {
		return 'forms';
	}
}
modules/forms/widgets/form.php000064400000201433150755004310012467 0ustar00<?php
namespace ElementorPro\Modules\Forms\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Typography;
use Elementor\Icons_Manager;
use Elementor\Repeater;
use ElementorPro\Core\Utils;
use ElementorPro\Modules\Forms\Classes\Ajax_Handler;
use ElementorPro\Modules\Forms\Classes\Form_Base;
use ElementorPro\Modules\Forms\Controls\Fields_Repeater;
use ElementorPro\Modules\Forms\Module;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Form extends Form_Base {

	public function get_name() {
		return 'form';
	}

	public function get_title() {
		return esc_html__( 'Form', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-form-horizontal';
	}

	public function get_keywords() {
		return [ 'form', 'forms', 'field', 'button', 'mailchimp', 'drip', 'mailpoet', 'convertkit', 'getresponse', 'recaptcha', 'zapier', 'webhook', 'activecampaign', 'slack', 'discord', 'mailerlite' ];
	}

	protected function register_controls() {
		$repeater = new Repeater();

		$field_types = [
			'text' => esc_html__( 'Text', 'elementor-pro' ),
			'email' => esc_html__( 'Email', 'elementor-pro' ),
			'textarea' => esc_html__( 'Textarea', 'elementor-pro' ),
			'url' => esc_html__( 'URL', 'elementor-pro' ),
			'tel' => esc_html__( 'Tel', 'elementor-pro' ),
			'radio' => esc_html__( 'Radio', 'elementor-pro' ),
			'select' => esc_html__( 'Select', 'elementor-pro' ),
			'checkbox' => esc_html__( 'Checkbox', 'elementor-pro' ),
			'acceptance' => esc_html__( 'Acceptance', 'elementor-pro' ),
			'number' => esc_html__( 'Number', 'elementor-pro' ),
			'date' => esc_html__( 'Date', 'elementor-pro' ),
			'time' => esc_html__( 'Time', 'elementor-pro' ),
			'upload' => esc_html__( 'File Upload', 'elementor-pro' ),
			'password' => esc_html__( 'Password', 'elementor-pro' ),
			'html' => esc_html__( 'HTML', 'elementor-pro' ),
			'hidden' => esc_html__( 'Hidden', 'elementor-pro' ),
		];

		/**
		 * Forms field types.
		 *
		 * Filters the list of field types displayed in the form `field_type` control.
		 *
		 * @since 1.0.0
		 *
		 * @param array $field_types Field types.
		 */
		$field_types = apply_filters( 'elementor_pro/forms/field_types', $field_types );

		$repeater->start_controls_tabs( 'form_fields_tabs' );

		$repeater->start_controls_tab( 'form_fields_content_tab', [
			'label' => esc_html__( 'Content', 'elementor-pro' ),
		] );

		$repeater->add_control(
			'field_type',
			[
				'label' => esc_html__( 'Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => $field_types,
				'default' => 'text',
			]
		);

		$repeater->add_control(
			'field_label',
			[
				'label' => esc_html__( 'Label', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => '',
			]
		);

		$repeater->add_control(
			'placeholder',
			[
				'label' => esc_html__( 'Placeholder', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => '',
				'conditions' => [
					'terms' => [
						[
							'name' => 'field_type',
							'operator' => 'in',
							'value' => [
								'tel',
								'text',
								'email',
								'textarea',
								'number',
								'url',
								'password',
							],
						],
					],
				],
			]
		);

		$repeater->add_control(
			'required',
			[
				'label' => esc_html__( 'Required', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'return_value' => 'true',
				'default' => '',
				'conditions' => [
					'terms' => [
						[
							'name' => 'field_type',
							'operator' => '!in',
							'value' => [
								'checkbox',
								'recaptcha',
								'recaptcha_v3',
								'hidden',
								'html',
								'step',
							],
						],
					],
				],
			]
		);

		$repeater->add_control(
			'field_options',
			[
				'label' => esc_html__( 'Options', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'default' => '',
				'description' => esc_html__( 'Enter each option in a separate line. To differentiate between label and value, separate them with a pipe char ("|"). For example: First Name|f_name', 'elementor-pro' ),
				'conditions' => [
					'terms' => [
						[
							'name' => 'field_type',
							'operator' => 'in',
							'value' => [
								'select',
								'checkbox',
								'radio',
							],
						],
					],
				],
			]
		);

		$repeater->add_control(
			'allow_multiple',
			[
				'label' => esc_html__( 'Multiple Selection', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'return_value' => 'true',
				'conditions' => [
					'terms' => [
						[
							'name' => 'field_type',
							'value' => 'select',
						],
					],
				],
			]
		);

		$repeater->add_control(
			'select_size',
			[
				'label' => esc_html__( 'Rows', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'min' => 2,
				'step' => 1,
				'conditions' => [
					'terms' => [
						[
							'name' => 'field_type',
							'value' => 'select',
						],
						[
							'name' => 'allow_multiple',
							'value' => 'true',
						],
					],
				],
			]
		);

		$repeater->add_control(
			'inline_list',
			[
				'label' => esc_html__( 'Inline List', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'return_value' => 'elementor-subgroup-inline',
				'default' => '',
				'conditions' => [
					'terms' => [
						[
							'name' => 'field_type',
							'operator' => 'in',
							'value' => [
								'checkbox',
								'radio',
							],
						],
					],
				],
			]
		);

		$repeater->add_control(
			'field_html',
			[
				'label' => esc_html__( 'HTML', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'dynamic' => [
					'active' => true,
				],
				'conditions' => [
					'terms' => [
						[
							'name' => 'field_type',
							'value' => 'html',
						],
					],
				],
			]
		);

		$repeater->add_responsive_control(
			'width',
			[
				'label' => esc_html__( 'Column Width', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'Default', 'elementor-pro' ),
					'100' => '100%',
					'80' => '80%',
					'75' => '75%',
					'70' => '70%',
					'66' => '66%',
					'60' => '60%',
					'50' => '50%',
					'40' => '40%',
					'33' => '33%',
					'30' => '30%',
					'25' => '25%',
					'20' => '20%',
				],
				'default' => '100',
				'conditions' => [
					'terms' => [
						[
							'name' => 'field_type',
							'operator' => '!in',
							'value' => [
								'hidden',
								'recaptcha',
								'recaptcha_v3',
								'step',
							],
						],
					],
				],
			]
		);

		$repeater->add_control(
			'rows',
			[
				'label' => esc_html__( 'Rows', 'elementor-pro' ),
				'type' => Controls_Manager::NUMBER,
				'default' => 4,
				'conditions' => [
					'terms' => [
						[
							'name' => 'field_type',
							'value' => 'textarea',
						],
					],
				],
			]
		);

		$repeater->add_control(
			'recaptcha_size', [
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'normal',
				'options' => [
					'normal' => esc_html__( 'Normal', 'elementor-pro' ),
					'compact' => esc_html__( 'Compact', 'elementor-pro' ),
				],
				'conditions' => [
					'terms' => [
						[
							'name' => 'field_type',
							'value' => 'recaptcha',
						],
					],
				],
			]
		);

		$repeater->add_control(
			'recaptcha_style',
			[
				'label' => esc_html__( 'Style', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'light',
				'options' => [
					'light' => esc_html__( 'Light', 'elementor-pro' ),
					'dark' => esc_html__( 'Dark', 'elementor-pro' ),
				],
				'conditions' => [
					'terms' => [
						[
							'name' => 'field_type',
							'value' => 'recaptcha',
						],
					],
				],
			]
		);

		$repeater->add_control(
			'recaptcha_badge', [
				'label' => esc_html__( 'Badge', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'bottomright',
				'options' => [
					'bottomright' => esc_html__( 'Bottom Right', 'elementor-pro' ),
					'bottomleft' => esc_html__( 'Bottom Left', 'elementor-pro' ),
					'inline' => esc_html__( 'Inline', 'elementor-pro' ),
				],
				'description' => esc_html__( 'To view the validation badge, switch to preview mode', 'elementor-pro' ),
				'conditions' => [
					'terms' => [
						[
							'name' => 'field_type',
							'value' => 'recaptcha_v3',
						],
					],
				],
			]
		);

		$repeater->add_control(
			'css_classes',
			[
				'label' => esc_html__( 'CSS Classes', 'elementor-pro' ),
				'type' => Controls_Manager::HIDDEN,
				'default' => '',
				'title' => esc_html__( 'Add your custom class WITHOUT the dot. e.g: my-class', 'elementor-pro' ),
			]
		);

		$repeater->end_controls_tab();

		$repeater->start_controls_tab(
			'form_fields_advanced_tab',
			[
				'label' => esc_html__( 'Advanced', 'elementor-pro' ),
				'condition' => [
					'field_type!' => 'html',
				],
			]
		);

		$repeater->add_control(
			'field_value',
			[
				'label' => esc_html__( 'Default Value', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => '',
				'dynamic' => [
					'active' => true,
				],
				'conditions' => [
					'terms' => [
						[
							'name' => 'field_type',
							'operator' => 'in',
							'value' => [
								'text',
								'email',
								'textarea',
								'url',
								'tel',
								'radio',
								'select',
								'number',
								'date',
								'time',
								'hidden',
							],
						],
					],
				],
			]
		);

		$repeater->add_control(
			'custom_id',
			[
				'label' => esc_html__( 'ID', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'description' => esc_html__( 'Please make sure the ID is unique and not used elsewhere in this form. This field allows `A-z 0-9` & underscore chars without spaces.', 'elementor-pro' ),
				'render_type' => 'none',
				'required' => true,
			]
		);

		$shortcode_template = '{{ view.container.settings.get( \'custom_id\' ) }}';
		$repeater->add_control(
			'shortcode',
			[
				'label' => esc_html__( 'Shortcode', 'elementor-pro' ),
				'type' => Controls_Manager::RAW_HTML,
				'classes' => 'forms-field-shortcode',
				'raw' => '<input class="elementor-form-field-shortcode" value=\'[field id="' . $shortcode_template . '"]\' readonly />',
			]
		);

		$repeater->end_controls_tab();

		$repeater->end_controls_tabs();

		$this->start_controls_section(
			'section_form_fields',
			[
				'label' => esc_html__( 'Form Fields', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'form_name',
			[
				'label' => esc_html__( 'Form Name', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'New Form', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Form Name', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'form_fields',
			[
				'type' => Fields_Repeater::CONTROL_TYPE,
				'fields' => $repeater->get_controls(),
				'default' => [
					[
						'custom_id' => 'name',
						'field_type' => 'text',
						'field_label' => esc_html__( 'Name', 'elementor-pro' ),
						'placeholder' => esc_html__( 'Name', 'elementor-pro' ),
						'width' => '100',
					],
					[
						'custom_id' => 'email',
						'field_type' => 'email',
						'required' => 'true',
						'field_label' => esc_html__( 'Email', 'elementor-pro' ),
						'placeholder' => esc_html__( 'Email', 'elementor-pro' ),
						'width' => '100',
					],
					[
						'custom_id' => 'message',
						'field_type' => 'textarea',
						'field_label' => esc_html__( 'Message', 'elementor-pro' ),
						'placeholder' => esc_html__( 'Message', 'elementor-pro' ),
						'width' => '100',
					],
				],
				'title_field' => '{{{ field_label }}}',
			]
		);

		$this->add_control(
			'input_size',
			[
				'label' => esc_html__( 'Input Size', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'xs' => esc_html__( 'Extra Small', 'elementor-pro' ),
					'sm' => esc_html__( 'Small', 'elementor-pro' ),
					'md' => esc_html__( 'Medium', 'elementor-pro' ),
					'lg' => esc_html__( 'Large', 'elementor-pro' ),
					'xl' => esc_html__( 'Extra Large', 'elementor-pro' ),
				],
				'default' => 'sm',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'show_labels',
			[
				'label' => esc_html__( 'Label', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'return_value' => 'true',
				'default' => 'true',
				'separator' => 'before',
			]
		);

		$this->add_control(
			'mark_required',
			[
				'label' => esc_html__( 'Required Mark', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'Show', 'elementor-pro' ),
				'label_off' => esc_html__( 'Hide', 'elementor-pro' ),
				'default' => '',
				'condition' => [
					'show_labels!' => '',
				],
			]
		);

		$this->add_control(
			'label_position',
			[
				'label' => esc_html__( 'Label Position', 'elementor-pro' ),
				'type' => Controls_Manager::HIDDEN,
				'options' => [
					'above' => esc_html__( 'Above', 'elementor-pro' ),
					'inline' => esc_html__( 'Inline', 'elementor-pro' ),
				],
				'default' => 'above',
				'condition' => [
					'show_labels!' => '',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_buttons',
			[
				'label' => esc_html__( 'Buttons', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'button_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'sm',
				'options' => self::get_button_sizes(),
			]
		);

		$this->add_responsive_control(
			'button_width',
			[
				'label' => esc_html__( 'Column Width', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'' => esc_html__( 'Default', 'elementor-pro' ),
					'100' => '100%',
					'80' => '80%',
					'75' => '75%',
					'70' => '70%',
					'66' => '66%',
					'60' => '60%',
					'50' => '50%',
					'40' => '40%',
					'33' => '33%',
					'30' => '30%',
					'25' => '25%',
					'20' => '20%',
				],
				'default' => '100',
				'frontend_available' => true,
			]
		);

		$this->add_responsive_control(
			'button_align',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'start' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'end' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
					'stretch' => [
						'title' => esc_html__( 'Justified', 'elementor-pro' ),
						'icon' => 'eicon-text-align-justify',
					],
				],
				'default' => 'stretch',
				'prefix_class' => 'elementor%s-button-align-',
			]
		);

		$this->add_control(
			'heading_steps_buttons',
			[
				'label' => esc_html__( 'Step Buttons', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'step_next_label',
			[
				'label' => esc_html__( 'Next', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'frontend_available' => true,
				'render_type' => 'none',
				'default' => esc_html__( 'Next', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Next', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'step_previous_label',
			[
				'label' => esc_html__( 'Previous', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'frontend_available' => true,
				'render_type' => 'none',
				'default' => esc_html__( 'Previous', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Previous', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'heading_submit_button',
			[
				'label' => esc_html__( 'Submit Button', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'button_text',
			[
				'label' => esc_html__( 'Submit', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Send', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Send', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'selected_button_icon',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'skin' => 'inline',
				'label_block' => false,
			]
		);

		$this->add_control(
			'button_icon_align',
			[
				'label' => esc_html__( 'Icon Position', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'left',
				'options' => [
					'left' => esc_html__( 'Before', 'elementor-pro' ),
					'right' => esc_html__( 'After', 'elementor-pro' ),
				],
				'condition' => [
					'selected_button_icon[value]!' => '',
				],
			]
		);

		$this->add_control(
			'button_icon_indent',
			[
				'label' => esc_html__( 'Icon Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'max' => 50,
					],
				],
				'condition' => [
					'selected_button_icon[value]!' => '',
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-button .elementor-align-icon-right' => 'margin-left: {{SIZE}}{{UNIT}};',
					'{{WRAPPER}} .elementor-button .elementor-align-icon-left' => 'margin-right: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'button_css_id',
			[
				'label' => esc_html__( 'Button ID', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => '',
				'title' => esc_html__( 'Add your custom id WITHOUT the Pound key. e.g: my-id', 'elementor-pro' ),
				'description' => esc_html__( 'Please make sure the ID is unique and not used elsewhere on the page this form is displayed. This field allows `A-z 0-9` & underscore chars without spaces.', 'elementor-pro' ),
				'separator' => 'before',

			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_integration',
			[
				'label' => esc_html__( 'Actions After Submit', 'elementor-pro' ),
			]
		);

		$actions = Module::instance()->actions_registrar->get();

		$actions_options = [];

		foreach ( $actions as $action ) {
			$actions_options[ $action->get_name() ] = $action->get_label();
		}

		$this->add_control(
			'submit_actions',
			[
				'label' => esc_html__( 'Add Action', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'multiple' => true,
				'options' => $actions_options,
				'render_type' => 'none',
				'label_block' => true,
				'default' => apply_filters( 'elementor_pro/forms/default_submit_actions', [
					'email',
				] ),
				'description' => esc_html__( 'Add actions that will be performed after a visitor submits the form (e.g. send an email notification). Choosing an action will add its setting below.', 'elementor-pro' ),
			]
		);

		$this->end_controls_section();

		foreach ( $actions as $action ) {
			$action->register_settings_section( $this );
		}

		// Steps settings.
		$this->start_controls_section(
			'section_steps_settings',
			[
				'label' => esc_html__( 'Steps Settings', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$this->add_control(
			'step_type',
			[
				'label' => esc_html__( 'Type', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'frontend_available' => true,
				'render_type' => 'none',
				'options' => [
					'none' => 'None',
					'text' => 'Text',
					'icon' => 'Icon',
					'number' => 'Number',
					'progress_bar' => 'Progress Bar',
					'number_text' => 'Number & Text',
					'icon_text' => 'Icon & Text',
				],
				'default' => 'number_text',
			]
		);

		$this->add_control(
			'step_icon_shape',
			[
				'label' => esc_html__( 'Shape', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'frontend_available' => true,
				'render_type' => 'none',
				'options' => [
					'circle' => 'Circle',
					'square' => 'Square',
					'rounded' => 'Rounded',
					'none' => 'None',
				],
				'default' => 'circle',
				'conditions' => [
					'terms' => [
						[
							'name' => 'step_type',
							'operator' => '!in',
							'value' => [
								'progress_bar',
								'text',
							],
						],
					],
				],
			]
		);

		$repeater->add_control(
			'display_percentage',
			[
				'label' => esc_html__( 'Display Percentage', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'frontend_available' => true,
				'render_type' => 'none',
				'return_value' => 'true',
				'default' => '',
				'condition' => [
					'step_type' => 'progress_bar',
				],
			]
		);

		// End of steps settings.
		$this->end_controls_section();

		$this->start_controls_section(
			'section_form_options',
			[
				'label' => esc_html__( 'Additional Options', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_CONTENT,
			]
		);

		$this->add_control(
			'form_id',
			[
				'label' => esc_html__( 'Form ID', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => 'new_form_id',
				'description' => esc_html__( 'Please make sure the ID is unique and not used elsewhere on the page this form is displayed. This field allows `A-z 0-9` & underscore chars without spaces.', 'elementor-pro' ),
				'separator' => 'after',
			]
		);

		$this->add_control(
			'custom_messages',
			[
				'label' => esc_html__( 'Custom Messages', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => '',
				'separator' => 'before',
				'render_type' => 'none',
			]
		);

		$default_messages = Ajax_Handler::get_default_messages();

		$this->add_control(
			'success_message',
			[
				'label' => esc_html__( 'Success Message', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => $default_messages[ Ajax_Handler::SUCCESS ],
				'placeholder' => $default_messages[ Ajax_Handler::SUCCESS ],
				'label_block' => true,
				'condition' => [
					'custom_messages!' => '',
				],
				'render_type' => 'none',
			]
		);

		$this->add_control(
			'error_message',
			[
				'label' => esc_html__( 'Error Message', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => $default_messages[ Ajax_Handler::ERROR ],
				'placeholder' => $default_messages[ Ajax_Handler::ERROR ],
				'label_block' => true,
				'condition' => [
					'custom_messages!' => '',
				],
				'render_type' => 'none',
			]
		);

		$this->add_control(
			'required_field_message',
			[
				'label' => esc_html__( 'Required Message', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => $default_messages[ Ajax_Handler::FIELD_REQUIRED ],
				'placeholder' => $default_messages[ Ajax_Handler::FIELD_REQUIRED ],
				'label_block' => true,
				'condition' => [
					'custom_messages!' => '',
				],
				'render_type' => 'none',
			]
		);

		$this->add_control(
			'invalid_message',
			[
				'label' => esc_html__( 'Invalid Message', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => $default_messages[ Ajax_Handler::INVALID_FORM ],
				'placeholder' => $default_messages[ Ajax_Handler::INVALID_FORM ],
				'label_block' => true,
				'condition' => [
					'custom_messages!' => '',
				],
				'render_type' => 'none',
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_form_style',
			[
				'label' => esc_html__( 'Form', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'column_gap',
			[
				'label' => esc_html__( 'Columns Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 10,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-field-group' => 'padding-right: calc( {{SIZE}}{{UNIT}}/2 ); padding-left: calc( {{SIZE}}{{UNIT}}/2 );',
					'{{WRAPPER}} .elementor-form-fields-wrapper' => 'margin-left: calc( -{{SIZE}}{{UNIT}}/2 ); margin-right: calc( -{{SIZE}}{{UNIT}}/2 );',
				],
			]
		);

		$this->add_control(
			'row_gap',
			[
				'label' => esc_html__( 'Rows Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 10,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-field-group' => 'margin-bottom: {{SIZE}}{{UNIT}};',
					'{{WRAPPER}} .elementor-field-group.recaptcha_v3-bottomleft, {{WRAPPER}} .elementor-field-group.recaptcha_v3-bottomright' => 'margin-bottom: 0;',
					'{{WRAPPER}} .elementor-form-fields-wrapper' => 'margin-bottom: -{{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'heading_label',
			[
				'label' => esc_html__( 'Label', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'label_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 0,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'selectors' => [
					'body.rtl {{WRAPPER}} .elementor-labels-inline .elementor-field-group > label' => 'padding-left: {{SIZE}}{{UNIT}};',
					// for the label position = inline option
					'body:not(.rtl) {{WRAPPER}} .elementor-labels-inline .elementor-field-group > label' => 'padding-right: {{SIZE}}{{UNIT}};',
					// for the label position = inline option
					'body {{WRAPPER}} .elementor-labels-above .elementor-field-group > label' => 'padding-bottom: {{SIZE}}{{UNIT}};',
					// for the label position = above option
				],
			]
		);

		$this->add_control(
			'label_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-field-group > label, {{WRAPPER}} .elementor-field-subgroup label' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_control(
			'mark_required_color',
			[
				'label' => esc_html__( 'Mark Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .elementor-mark-required .elementor-field-label:after' => 'color: {{COLOR}};',
				],
				'condition' => [
					'mark_required' => 'yes',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'label_typography',
				'selector' => '{{WRAPPER}} .elementor-field-group > label',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->add_control(
			'heading_html',
			[
				'label' => esc_html__( 'HTML Field', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'html_spacing',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 0,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 60,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-field-type-html' => 'padding-bottom: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'html_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-field-type-html' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'html_typography',
				'selector' => '{{WRAPPER}} .elementor-field-type-html',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_field_style',
			[
				'label' => esc_html__( 'Field', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'field_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-field-group .elementor-field' => 'color: {{VALUE}};',
				],
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'field_typography',
				'selector' => '{{WRAPPER}} .elementor-field-group .elementor-field, {{WRAPPER}} .elementor-field-subgroup label',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->add_control(
			'field_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#ffffff',
				'selectors' => [
					'{{WRAPPER}} .elementor-field-group:not(.elementor-field-type-upload) .elementor-field:not(.elementor-select-wrapper)' => 'background-color: {{VALUE}};',
					'{{WRAPPER}} .elementor-field-group .elementor-select-wrapper select' => 'background-color: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'field_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-field-group:not(.elementor-field-type-upload) .elementor-field:not(.elementor-select-wrapper)' => 'border-color: {{VALUE}};',
					'{{WRAPPER}} .elementor-field-group .elementor-select-wrapper select' => 'border-color: {{VALUE}};',
					'{{WRAPPER}} .elementor-field-group .elementor-select-wrapper::before' => 'color: {{VALUE}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'field_border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'placeholder' => '1',
				'size_units' => [ 'px' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-field-group:not(.elementor-field-type-upload) .elementor-field:not(.elementor-select-wrapper)' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
					'{{WRAPPER}} .elementor-field-group .elementor-select-wrapper select' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->add_control(
			'field_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-field-group:not(.elementor-field-type-upload) .elementor-field:not(.elementor-select-wrapper)' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
					'{{WRAPPER}} .elementor-field-group .elementor-select-wrapper select' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_button_style',
			[
				'label' => esc_html__( 'Buttons', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'button_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
				'selector' => '{{WRAPPER}} .elementor-button',
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(), [
				'name' => 'button_border',
				'selector' => '{{WRAPPER}} .elementor-button',
				'exclude' => [
					'color',
				],
			]
		);

		$this->start_controls_tabs( 'tabs_button_style' );

		$this->start_controls_tab(
			'tab_button_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'heading_next_submit_button',
			[
				'label' => esc_html__( 'Next & Submit Button', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'button_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'selectors' => [
					'{{WRAPPER}} .e-form__buttons__wrapper__button-next' => 'background-color: {{VALUE}};',
					'{{WRAPPER}} .elementor-button[type="submit"]' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#ffffff',
				'selectors' => [
					'{{WRAPPER}} .e-form__buttons__wrapper__button-next' => 'color: {{VALUE}};',
					'{{WRAPPER}} .elementor-button[type="submit"]' => 'color: {{VALUE}};',
					'{{WRAPPER}} .elementor-button[type="submit"] svg *' => 'fill: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'button_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .e-form__buttons__wrapper__button-next' => 'border-color: {{VALUE}};',
					'{{WRAPPER}} .elementor-button[type="submit"]' => 'border-color: {{VALUE}};',
				],
				'condition' => [
					'button_border_border!' => '',
				],
			]
		);

		$this->add_control(
			'heading_previous_button',
			[
				'label' => esc_html__( 'Previous Button', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'previous_button_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'selectors' => [
					'{{WRAPPER}} .e-form__buttons__wrapper__button-previous' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'previous_button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#ffffff',
				'selectors' => [
					'{{WRAPPER}} .e-form__buttons__wrapper__button-previous' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'previous_button_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .e-form__buttons__wrapper__button-previous' => 'border-color: {{VALUE}};',
				],
				'condition' => [
					'button_border_border!' => '',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_button_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'heading_next_submit_button_hover',
			[
				'label' => esc_html__( 'Next & Submit Button', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'button_background_hover_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .e-form__buttons__wrapper__button-next:hover' => 'background-color: {{VALUE}};',
					'{{WRAPPER}} .elementor-button[type="submit"]:hover' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'button_hover_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#ffffff',
				'selectors' => [
					'{{WRAPPER}} .e-form__buttons__wrapper__button-next:hover' => 'color: {{VALUE}};',
					'{{WRAPPER}} .elementor-button[type="submit"]:hover' => 'color: {{VALUE}};',
					'{{WRAPPER}} .elementor-button[type="submit"]:hover svg *' => 'fill: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'button_hover_border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .e-form__buttons__wrapper__button-next:hover' => 'border-color: {{VALUE}};',
					'{{WRAPPER}} .elementor-button[type="submit"]:hover' => 'border-color: {{VALUE}};',
				],
				'condition' => [
					'button_border_border!' => '',
				],
			]
		);

		$this->add_control(
			'heading_previous_button_hover',
			[
				'label' => esc_html__( 'Previous Button', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
			]
		);

		$this->add_control(
			'previous_button_background_color_hover',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .e-form__buttons__wrapper__button-previous:hover' => 'background-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'previous_button_text_color_hover',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#ffffff',
				'selectors' => [
					'{{WRAPPER}} .e-form__buttons__wrapper__button-previous:hover' => 'color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'previous_button_border_color_hover',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}} .e-form__buttons__wrapper__button-previous:hover' => 'border-color: {{VALUE}};',
				],
				'condition' => [
					'button_border_border!' => '',
				],
			]
		);

		$this->add_control(
			'button_hover_animation',
			[
				'label' => esc_html__( 'Animation', 'elementor-pro' ),
				'type' => Controls_Manager::HOVER_ANIMATION,
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-button' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
				'separator' => 'before',
			]
		);

		$this->add_control(
			'button_text_padding',
			[
				'label' => esc_html__( 'Text Padding', 'elementor-pro' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .elementor-button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_messages_style',
			[
				'label' => esc_html__( 'Messages', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'message_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
				'selector' => '{{WRAPPER}} .elementor-message',
			]
		);

		$this->add_control(
			'success_message_color',
			[
				'label' => esc_html__( 'Success Message Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-message.elementor-message-success' => 'color: {{COLOR}};',
				],
			]
		);

		$this->add_control(
			'error_message_color',
			[
				'label' => esc_html__( 'Error Message Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-message.elementor-message-danger' => 'color: {{COLOR}};',
				],
			]
		);

		$this->add_control(
			'inline_message_color',
			[
				'label' => esc_html__( 'Inline Message Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-message.elementor-help-inline' => 'color: {{COLOR}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_steps_style',
			[
				'label' => esc_html__( 'Steps', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'steps_typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
				'selector' => '{{WRAPPER}} .e-form__indicators__indicator, {{WRAPPER}} .e-form__indicators__indicator__label',
				'conditions' => [
					'terms' => [
						[
							'name' => 'step_type',
							'operator' => '!in',
							'value' => [
								'icon',
								'progress_bar',
							],
						],
					],
				],
			]
		);

		$this->add_responsive_control(
			'steps_gap',
			[
				'label' => esc_html__( 'Spacing', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 20,
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--e-form-steps-indicators-spacing: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'steps_icon_size',
			[
				'label' => esc_html__( 'Icon Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 15,
					'unit' => 'px',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'size_units' => [ 'px' ],
				'conditions' => [
					'terms' => [
						[
							'name' => 'step_type',
							'operator' => 'in',
							'value' => [
								'icon',
								'icon_text',
							],
						],
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--e-form-steps-indicator-icon-size: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'steps_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 30,
					'unit' => 'px',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'size_units' => [ 'px' ],
				'selectors' => [
					'{{WRAPPER}}' => '--e-form-steps-indicator-padding: {{SIZE}}{{UNIT}}',
				],
				'conditions' => [
					'terms' => [
						[
							'name' => 'step_type',
							'operator' => '!in',
							'value' => [
								'text',
								'progress_bar',
							],
						],
					],
				],
			]
		);

		$this->start_controls_tabs( 'steps_state', [
			'condition' => [
				'step_type!' => 'progress_bar',
			],
		] );

		$this->start_controls_tab(
			'tab_steps_state_inactive',
			[
				'label' => esc_html__( 'Inactive', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'step_inactive_primary_color',
			[
				'label' => esc_html__( 'Primary Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--e-form-steps-indicator-inactive-primary-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'step_inactive_secondary_color',
			[
				'label' => esc_html__( 'Secondary Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#ffffff',
				'selectors' => [
					'{{WRAPPER}}' => '--e-form-steps-indicator-inactive-secondary-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_steps_state_active',
			[
				'label' => esc_html__( 'Active', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'step_active_primary_color',
			[
				'label' => esc_html__( 'Primary Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--e-form-steps-indicator-active-primary-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'step_active_secondary_color',
			[
				'label' => esc_html__( 'Secondary Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#ffffff',
				'selectors' => [
					'{{WRAPPER}}' => '--e-form-steps-indicator-active-secondary-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_steps_state_completed',
			[
				'label' => esc_html__( 'Completed', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'step_completed_primary_color',
			[
				'label' => esc_html__( 'Primary Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--e-form-steps-indicator-completed-primary-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'step_completed_secondary_color',
			[
				'label' => esc_html__( 'Secondary Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#ffffff',
				'condition' => [
					'step_icon_shape!' => 'none',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--e-form-steps-indicator-completed-secondary-color: {{VALUE}};',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_responsive_control(
			'step_divider_width',
			[
				'label' => esc_html__( 'Divider Width', 'elementor-pro' ),
				'separator' => 'before',
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 1,
					'unit' => 'px',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'size_units' => [ 'px' ],
				'condition' => [
					'step_type!' => 'progress_bar',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--e-form-steps-divider-width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'step_divider_gap',
			[
				'label' => esc_html__( 'Divider Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 10,
					'unit' => 'px',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'size_units' => [ 'px', '%' ],
				'condition' => [
					'step_type!' => 'progress_bar',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--e-form-steps-divider-gap: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'step_progress_bar_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'condition' => [
					'step_type' => 'progress_bar',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--e-form-steps-indicator-progress-color: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'step_progress_bar_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'condition' => [
					'step_type' => 'progress_bar',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--e-form-steps-indicator-progress-background-color: {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'step_progress_bar_height',
			[
				'label' => esc_html__( 'Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 20,
					'unit' => 'px',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'size_units' => [ 'px' ],
				'condition' => [
					'step_type' => 'progress_bar',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--e-form-steps-indicator-progress-height: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'step_progress_bar_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 0,
					'unit' => 'px',
				],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'size_units' => [ 'px' ],
				'condition' => [
					'step_type' => 'progress_bar',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--e-form-steps-indicator-progress-border-radius: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'step_progress_bar_percentage_heading',
			[
				'label' => esc_html__( 'Percentage', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
				'condition' => [
					'step_type' => 'progress_bar',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'step_progress_bar_percentage__typography',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_ACCENT,
				],
				'selector' => '{{WRAPPER}} .e-form__indicators__indicator__progress__meter',
				'condition' => [
					'step_type' => 'progress_bar',
				],
			]
		);

		$this->add_control(
			'step_progress_bar_percentage_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'condition' => [
					'step_type' => 'progress_bar',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--e-form-steps-indicator-progress-meter-color: {{VALUE}};',
				],
			]
		);

		// End of steps style.
		$this->end_controls_section();

	}

	private function render_icon_with_fallback( $settings ) {
		$migrated = isset( $settings['__fa4_migrated']['selected_button_icon'] );
		$is_new = empty( $settings['button_icon'] ) && Icons_Manager::is_migration_allowed();

		if ( $is_new || $migrated ) {
			Icons_Manager::render_icon( $settings['selected_button_icon'], [ 'aria-hidden' => 'true' ] );
		} else {
			?><i class="<?php echo esc_attr( $settings['button_icon'] ); ?>" aria-hidden="true"></i><?php
		}
	}

	protected function render() {
		$instance = $this->get_settings_for_display();

		if ( ! Plugin::elementor()->editor->is_edit_mode() ) {
			/**
			 * Elementor form Pre render.
			 *
			 * Fires before the from is rendered in the frontend
			 *
			 * @since 2.4.0
			 *
			 * @param array $instance current form settings
			 * @param Form $this current form widget instance
			 */
			do_action( 'elementor-pro/forms/pre_render', $instance, $this );
		}

		$this->add_render_attribute(
			[
				'wrapper' => [
					'class' => [
						'elementor-form-fields-wrapper',
						'elementor-labels-' . $instance['label_position'],
					],
				],
				'submit-group' => [
					'class' => [
						'elementor-field-group',
						'elementor-column',
						'elementor-field-type-submit',
					],
				],
				'button' => [
					'class' => 'elementor-button',
				],
				'icon-align' => [
					'class' => [
						empty( $instance['button_icon_align'] ) ? '' :
							'elementor-align-icon-' . $instance['button_icon_align'],
						'elementor-button-icon',
					],
				],
			]
		);

		if ( empty( $instance['button_width'] ) ) {
			$instance['button_width'] = '100';
		}

		$this->add_render_attribute( 'submit-group', 'class', 'elementor-col-' . $instance['button_width'] . ' e-form__buttons' );

		if ( ! empty( $instance['button_width_tablet'] ) ) {
			$this->add_render_attribute( 'submit-group', 'class', 'elementor-md-' . $instance['button_width_tablet'] );
		}

		if ( ! empty( $instance['button_width_mobile'] ) ) {
			$this->add_render_attribute( 'submit-group', 'class', 'elementor-sm-' . $instance['button_width_mobile'] );
		}

		if ( ! empty( $instance['button_size'] ) ) {
			$this->add_render_attribute( 'button', 'class', 'elementor-size-' . $instance['button_size'] );
		}

		if ( ! empty( $instance['button_type'] ) ) {
			$this->add_render_attribute( 'button', 'class', 'elementor-button-' . $instance['button_type'] );
		}

		if ( $instance['button_hover_animation'] ) {
			$this->add_render_attribute( 'button', 'class', 'elementor-animation-' . $instance['button_hover_animation'] );
		}

		if ( ! empty( $instance['form_id'] ) ) {
			$this->add_render_attribute( 'form', 'id', $instance['form_id'] );
		}

		if ( ! empty( $instance['form_name'] ) ) {
			$this->add_render_attribute( 'form', 'name', $instance['form_name'] );
		}

		if ( ! empty( $instance['button_css_id'] ) ) {
			$this->add_render_attribute( 'button', 'id', $instance['button_css_id'] );
		}

		$referer_title = trim( wp_title( '', false ) );

		if ( ! $referer_title && is_home() ) {
			$referer_title = get_option( 'blogname' );
		}

		?>
		<form class="elementor-form" method="post" <?php $this->print_render_attribute_string( 'form' ); ?>>
			<input type="hidden" name="post_id" value="<?php // PHPCS - the method Utils::get_current_post_id is safe.
				echo Utils::get_current_post_id(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>"/>
			<input type="hidden" name="form_id" value="<?php echo esc_attr( $this->get_id() ); ?>"/>
			<input type="hidden" name="referer_title" value="<?php echo esc_attr( $referer_title ); ?>" />

			<?php if ( is_singular() ) {
				// `queried_id` may be different from `post_id` on Single theme builder templates.
				?>
				<input type="hidden" name="queried_id" value="<?php echo get_the_ID(); ?>"/>
			<?php } ?>

			<div <?php $this->print_render_attribute_string( 'wrapper' ); ?>>
				<?php
				foreach ( $instance['form_fields'] as $item_index => $item ) :
					$item['input_size'] = $instance['input_size'];
					$this->form_fields_render_attributes( $item_index, $instance, $item );

					$field_type = $item['field_type'];

					/**
					 * Render form field.
					 *
					 * Filters the field rendered by Elementor Forms.
					 *
					 * @since 1.0.0
					 *
					 * @param array $item       The field value.
					 * @param int   $item_index The field index.
					 * @param Form  $this       An instance of the form.
					 */
					$item = apply_filters( 'elementor_pro/forms/render/item', $item, $item_index, $this );

					/**
					 * Render form field.
					 *
					 * Filters the field rendered by Elementor Forms.
					 *
					 * The dynamic portion of the hook name, `$field_type`, refers to the field type.
					 *
					 * @since 1.0.0
					 *
					 * @param array $item       The field value.
					 * @param int   $item_index The field index.
					 * @param Form  $this       An instance of the form.
					 */
					$item = apply_filters( "elementor_pro/forms/render/item/{$field_type}", $item, $item_index, $this );

					$print_label = ! in_array( $item['field_type'], [ 'hidden', 'html', 'step' ], true );
					?>
				<div <?php $this->print_render_attribute_string( 'field-group' . $item_index ); ?>>
					<?php
					if ( $print_label && $item['field_label'] ) {
						?>
							<label <?php $this->print_render_attribute_string( 'label' . $item_index ); ?>>
								<?php // PHPCS - the variable $item['field_label'] is safe.
								echo $item['field_label']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
							</label>
						<?php
					}

					switch ( $item['field_type'] ) :
						case 'html':
							echo do_shortcode( $item['field_html'] );
							break;
						case 'textarea':
							// PHPCS - the method make_textarea_field is safe.
							echo $this->make_textarea_field( $item, $item_index ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
							break;

						case 'select':
							// PHPCS - the method make_select_field is safe.
							echo $this->make_select_field( $item, $item_index ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
							break;

						case 'radio':
						case 'checkbox':
							// PHPCS - the method make_radio_checkbox_field is safe.
							echo $this->make_radio_checkbox_field( $item, $item_index, $item['field_type'] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
							break;
						case 'text':
						case 'email':
						case 'url':
						case 'password':
						case 'hidden':
						case 'search':
							$this->add_render_attribute( 'input' . $item_index, 'class', 'elementor-field-textual' );
							?>
								<input size="1" <?php $this->print_render_attribute_string( 'input' . $item_index ); ?>>
							<?php
							break;
						default:
							$field_type = $item['field_type'];

							/**
							 * Elementor form field render.
							 *
							 * Fires when a field is rendered.
							 *
							 * The dynamic portion of the hook name, `$field_type`, refers to the field type.
							 *
							 * @since 1.0.0
							 *
							 * @param array $item       The field value.
							 * @param int   $item_index The field index.
							 * @param Form  $this       An instance of the form.
							 */
							do_action( "elementor_pro/forms/render_field/{$field_type}", $item, $item_index, $this );
					endswitch;
					?>
				</div>
				<?php endforeach; ?>
				<div <?php $this->print_render_attribute_string( 'submit-group' ); ?>>
					<button type="submit" <?php $this->print_render_attribute_string( 'button' ); ?>>
						<span <?php $this->print_render_attribute_string( 'content-wrapper' ); ?>>
							<?php if ( ! empty( $instance['button_icon'] ) || ! empty( $instance['selected_button_icon'] ) ) : ?>
								<span <?php $this->print_render_attribute_string( 'icon-align' ); ?>>
									<?php $this->render_icon_with_fallback( $instance ); ?>
									<?php if ( empty( $instance['button_text'] ) ) : ?>
										<span class="elementor-screen-only"><?php echo esc_html__( 'Submit', 'elementor-pro' ); ?></span>
									<?php endif; ?>
								</span>
							<?php endif; ?>
							<?php if ( ! empty( $instance['button_text'] ) ) : ?>
								<span class="elementor-button-text"><?php $this->print_unescaped_setting( 'button_text' ); ?></span>
							<?php endif; ?>
						</span>
					</button>
				</div>
			</div>
		</form>
		<?php
	}

	/**
	 * Render Form widget output in the editor.
	 *
	 * Written as a Backbone JavaScript template and used to generate the live preview.
	 *
	 * @since 2.9.0
	 * @access protected
	 */
	protected function content_template() {
		?>
		<form class="elementor-form" id="{{settings.form_id}}" name="{{settings.form_name}}">
			<div class="elementor-form-fields-wrapper elementor-labels-{{settings.label_position}}">
				<#
					for ( var i in settings.form_fields ) {
						var item = settings.form_fields[ i ];
						item = elementor.hooks.applyFilters( 'elementor_pro/forms/content_template/item', item, i, settings );

						var options = item.field_options ? item.field_options.split( '\n' ) : [],
							itemClasses = _.escape( item.css_classes ),
							labelVisibility = '',
							placeholder = '',
							required = '',
							inputField = '',
							multiple = '',
							fieldGroupClasses = 'elementor-field-group elementor-column elementor-field-type-' + item.field_type,
							printLabel = settings.show_labels && ! [ 'hidden', 'html', 'step' ].includes( item.field_type );

						fieldGroupClasses += ' elementor-col-' + ( ( '' !== item.width ) ? item.width : '100' );

						if ( item.width_tablet ) {
							fieldGroupClasses += ' elementor-md-' + item.width_tablet;
						}

						if ( item.width_mobile ) {
							fieldGroupClasses += ' elementor-sm-' + item.width_mobile;
						}

						if ( item.required ) {
							required = 'required';
							fieldGroupClasses += ' elementor-field-required';

							if ( settings.mark_required ) {
								fieldGroupClasses += ' elementor-mark-required';
							}
						}

						if ( item.placeholder ) {
							placeholder = 'placeholder="' + _.escape( item.placeholder ) + '"';
						}

						if ( item.allow_multiple ) {
							multiple = ' multiple';
							fieldGroupClasses += ' elementor-field-type-' + item.field_type + '-multiple';
						}

						switch ( item.field_type ) {
							case 'step':
								inputField = `<div
									class="e-field-step elementor-hidden"
									data-label="${ item.field_label }"
									data-previousButton="${ item.previous_button || '' }"
									data-nextButton="${ item.next_button || '' }"
									data-iconUrl="${ 'svg' === item.selected_icon.library && item.selected_icon.value ? item.selected_icon.value.url : '' }"
									data-iconLibrary="${ 'svg' !== item.selected_icon.library && item.selected_icon.value ? item.selected_icon.value : '' }"></div>`;
								break;
							case 'html':
								inputField = item.field_html;
								break;

							case 'textarea':
								inputField = '<textarea class="elementor-field elementor-field-textual elementor-size-' + settings.input_size + ' ' + itemClasses + '" name="form_field_' + i + '" id="form_field_' + i + '" rows="' + item.rows + '" ' + required + ' ' + placeholder + '>' + item.field_value + '</textarea>';
								break;

							case 'select':
								if ( options ) {
									var size = '';
									if ( item.allow_multiple && item.select_size ) {
										size = ' size="' + item.select_size + '"';
									}
									inputField = '<div class="elementor-field elementor-select-wrapper ' + itemClasses + '">';
									inputField += '<select class="elementor-field-textual elementor-size-' + settings.input_size + '" name="form_field_' + i + '" id="form_field_' + i + '" ' + required + multiple + size + ' >';
									for ( var x in options ) {
										var option_value = options[ x ];
										var option_label = options[ x ];
										var option_id = 'form_field_option' + i + x;

										if ( options[ x ].indexOf( '|' ) > -1 ) {
											var label_value = options[ x ].split( '|' );
											option_label = label_value[0];
											option_value = label_value[1];
										}

										view.addRenderAttribute( option_id, 'value', option_value );
										if ( item.field_value.split( ',' ) .indexOf( option_value ) ) {
											view.addRenderAttribute( option_id, 'selected', 'selected' );
										}
										inputField += '<option ' + view.getRenderAttributeString( option_id ) + '>' + option_label + '</option>';
									}
									inputField += '</select></div>';
								}
								break;

							case 'radio':
							case 'checkbox':
								if ( options ) {
									var multiple = '';

									if ( 'checkbox' === item.field_type && options.length > 1 ) {
										multiple = '[]';
									}

									inputField = '<div class="elementor-field-subgroup ' + itemClasses + ' ' + item.inline_list + '">';

									for ( var x in options ) {
										var option_value = options[ x ];
										var option_label = options[ x ];
										var option_id = 'form_field_' + item.field_type + i + x;
										if ( options[x].indexOf( '|' ) > -1 ) {
											var label_value = options[x].split( '|' );
											option_label = label_value[0];
											option_value = label_value[1];
										}

										view.addRenderAttribute( option_id, {
											value: option_value,
											type: item.field_type,
											id: 'form_field_' + i + '-' + x,
											name: 'form_field_' + i + multiple
										} );

										if ( option_value ===  item.field_value ) {
											view.addRenderAttribute( option_id, 'checked', 'checked' );
										}

										inputField += '<span class="elementor-field-option"><input ' + view.getRenderAttributeString( option_id ) + ' ' + required + '> ';
										inputField += '<label for="form_field_' + i + '-' + x + '">' + option_label + '</label></span>';

									}

									inputField += '</div>';
								}
								break;

							case 'text':
							case 'email':
							case 'url':
							case 'password':
							case 'number':
							case 'search':
								itemClasses = 'elementor-field-textual ' + itemClasses;
								inputField = '<input size="1" type="' + item.field_type + '" value="' + item.field_value + '" class="elementor-field elementor-size-' + settings.input_size + ' ' + itemClasses + '" name="form_field_' + i + '" id="form_field_' + i + '" ' + required + ' ' + placeholder + ' >';
								break;
							default:
								inputField = elementor.hooks.applyFilters( 'elementor_pro/forms/content_template/field/' + item.field_type, '', item, i, settings );
						}

						if ( inputField ) {
							#>
							<div class="{{ fieldGroupClasses }}">

								<# if ( printLabel && item.field_label ) { #>
									<label class="elementor-field-label" for="form_field_{{ i }}" {{{ labelVisibility }}}>{{{ item.field_label }}}</label>
								<# } #>

								{{{ inputField }}}
							</div>
							<#
						}
					}


					var buttonClasses = 'elementor-field-group elementor-column elementor-field-type-submit e-form__buttons';

					buttonClasses += ' elementor-col-' + ( ( '' !== settings.button_width ) ? settings.button_width : '100' );

					if ( settings.button_width_tablet ) {
						buttonClasses += ' elementor-md-' + settings.button_width_tablet;
					}

					if ( settings.button_width_mobile ) {
						buttonClasses += ' elementor-sm-' + settings.button_width_mobile;
					}

					var iconHTML = elementor.helpers.renderIcon( view, settings.selected_button_icon, { 'aria-hidden': true }, 'i' , 'object' ),
						migrated = elementor.helpers.isIconMigrated( settings, 'selected_button_icon' );

					#>

					<div class="{{ buttonClasses }}">
						<button id="{{ settings.button_css_id }}" type="submit" class="elementor-button elementor-size-{{ settings.button_size }} elementor-button-{{ settings.button_type }} elementor-animation-{{ settings.button_hover_animation }}">
							<span>
								<# if ( settings.button_icon || settings.selected_button_icon ) { #>
									<span class="elementor-button-icon elementor-align-icon-{{ settings.button_icon_align }}">
										<# if ( iconHTML && iconHTML.rendered && ( ! settings.button_icon || migrated ) ) { #>
											{{{ iconHTML.value }}}
										<# } else { #>
											<i class="{{ settings.button_icon }}" aria-hidden="true"></i>
										<# } #>
										<span class="elementor-screen-only"><?php echo esc_html__( 'Submit', 'elementor-pro' ); ?></span>
									</span>
								<# } #>

								<# if ( settings.button_text ) { #>
									<span class="elementor-button-text">{{{ settings.button_text }}}</span>
								<# } #>
							</span>
						</button>
					</div>
			</div>
		</form>
		<?php
	}

	public function get_group_name() {
		return 'forms';
	}
}
modules/forms/controls/fields-repeater.php000064400000000500150755004310014764 0ustar00<?php

namespace ElementorPro\Modules\Forms\Controls;

use Elementor\Control_Repeater;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Fields_Repeater extends Control_Repeater {

	const CONTROL_TYPE = 'form-fields-repeater';

	public function get_type() {
		return self::CONTROL_TYPE;
	}
}
modules/forms/controls/fields-map.php000064400000001550150755004310013740 0ustar00<?php
namespace ElementorPro\Modules\Forms\Controls;

use Elementor\Control_Repeater;
use Elementor\Controls_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Class Fields_Map
 * @package ElementorPro\Modules\Forms\Controls
 *
 * each item needs the following properties:
 *   remote_id,
 *   remote_label
 *   remote_type
 *   remote_required
 *   local_id
 */
class Fields_Map extends Control_Repeater {

	const CONTROL_TYPE = 'fields_map';

	public function get_type() {
		return self::CONTROL_TYPE;
	}

	protected function get_default_settings() {
		return array_merge( parent::get_default_settings(), [
			'render_type' => 'none',
			'fields' => [
				[
					'name' => 'remote_id',
					'type' => Controls_Manager::HIDDEN,
				],
				[
					'name' => 'local_id',
					'type' => Controls_Manager::SELECT,
				],
			],
		] );
	}
}
modules/table-of-contents/widgets/table-of-contents.php000064400000043521150755004310017250 0ustar00<?php
namespace ElementorPro\Modules\TableOfContents\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Responsive\Responsive;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Typography;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Icons_Manager;
use Elementor\Utils;
use ElementorPro\Base\Base_Widget;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Table_Of_Contents extends Base_Widget {

	public function get_name() {
		return 'table-of-contents';
	}

	public function get_title() {
		return esc_html__( 'Table of Contents', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-table-of-contents';
	}

	public function get_categories() {
		return [ 'pro-elements', 'theme-elements-single' ];
	}

	public function get_keywords() {
		return [ 'toc' ];
	}

	/**
	 * Get Frontend Settings
	 *
	 * In the TOC widget, this implementation is used to pass a pre-rendered version of the icon to the front end,
	 * which is required in case the FontAwesome SVG experiment is active.
	 *
	 * @since 3.4.0
	 *
	 * @return array
	 */
	public function get_frontend_settings() {
		$frontend_settings = parent::get_frontend_settings();

		if ( Plugin::elementor()->experiments->is_feature_active( 'e_font_icon_svg' ) && ! empty( $frontend_settings['icon']['value'] ) ) {
			$frontend_settings['icon']['rendered_tag'] = Icons_Manager::render_font_icon( $frontend_settings['icon'] );
		}

		return $frontend_settings;
	}

	protected function register_controls() {
		$this->start_controls_section(
			'table_of_contents',
			[
				'label' => esc_html__( 'Table of Contents', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'title',
			[
				'label' => esc_html__( 'Title', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'label_block' => true,
				'default' => esc_html__( 'Table of Contents', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'html_tag',
			[
				'label' => esc_html__( 'HTML Tag', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'h2' => 'H2',
					'h3' => 'H3',
					'h4' => 'H4',
					'h5' => 'H5',
					'h6' => 'H6',
					'div' => 'div',
				],
				'default' => 'h4',
			]
		);

		$this->start_controls_tabs( 'include_exclude_tags', [ 'separator' => 'before' ] );

		$this->start_controls_tab( 'include',
			[
				'label' => esc_html__( 'Include', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'headings_by_tags',
			[
				'label' => esc_html__( 'Anchors By Tags', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT2,
				'multiple' => true,
				'default' => [ 'h2', 'h3', 'h4', 'h5', 'h6' ],
				'options' => [
					'h1' => 'H1',
					'h2' => 'H2',
					'h3' => 'H3',
					'h4' => 'H4',
					'h5' => 'H5',
					'h6' => 'H6',
				],
				'label_block' => true,
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'container',
			[
				'label' => esc_html__( 'Container', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'label_block' => true,
				'description' => esc_html__( 'This control confines the Table of Contents to heading elements under a specific container', 'elementor-pro' ),
				'frontend_available' => true,
			]
		);

		$this->end_controls_tab(); // include

		$this->start_controls_tab( 'exclude',
			[
				'label' => esc_html__( 'Exclude', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'exclude_headings_by_selector',
			[
				'label' => esc_html__( 'Anchors By Selector', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'description' => esc_html__( 'CSS selectors, in a comma-separated list', 'elementor-pro' ),
				'default' => [],
				'label_block' => true,
				'frontend_available' => true,
			]
		);

		$this->end_controls_tab(); // exclude

		$this->end_controls_tabs(); // include_exclude_tags

		$this->add_control(
			'marker_view',
			[
				'label' => esc_html__( 'Marker View', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'numbers',
				'options' => [
					'numbers' => esc_html__( 'Numbers', 'elementor-pro' ),
					'bullets' => esc_html__( 'Bullets', 'elementor-pro' ),
				],
				'separator' => 'before',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'icon',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'default' => [
					'value' => 'fas fa-circle',
					'library' => 'fa-solid',
				],
				'recommended' => [
					'fa-solid' => [
						'circle',
						'dot-circle',
						'square-full',
					],
					'fa-regular' => [
						'circle',
						'dot-circle',
						'square-full',
					],
				],
				'condition' => [
					'marker_view' => 'bullets',
				],
				'skin' => 'inline',
				'label_block' => false,
				'exclude_inline_options' => [ 'svg' ],
				'frontend_available' => true,
			]
		);

		$this->end_controls_section(); // table_of_contents

		$this->start_controls_section(
			'additional_options',
			[
				'label' => esc_html__( 'Additional Options', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'word_wrap',
			[
				'label' => esc_html__( 'Word Wrap', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'return_value' => 'ellipsis',
				'prefix_class' => 'elementor-toc--content-',
			]
		);

		$this->add_control(
			'minimize_box',
			[
				'label' => esc_html__( 'Minimize Box', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'expand_icon',
			[
				'label' => esc_html__( 'Icon', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'default' => [
					'value' => 'fas fa-chevron-down',
					'library' => 'fa-solid',
				],
				'recommended' => [
					'fa-solid' => [
						'chevron-down',
						'angle-down',
						'angle-double-down',
						'caret-down',
						'caret-square-down',
					],
					'fa-regular' => [
						'caret-square-down',
					],
				],
				'skin' => 'inline',
				'label_block' => false,
				'condition' => [
					'minimize_box' => 'yes',
				],
			]
		);

		$this->add_control(
			'collapse_icon',
			[
				'label' => esc_html__( 'Minimize Icon', 'elementor-pro' ),
				'type' => Controls_Manager::ICONS,
				'default' => [
					'value' => 'fas fa-chevron-up',
					'library' => 'fa-solid',
				],
				'recommended' => [
					'fa-solid' => [
						'chevron-up',
						'angle-up',
						'angle-double-up',
						'caret-up',
						'caret-square-up',
					],
					'fa-regular' => [
						'caret-square-up',
					],
				],
				'skin' => 'inline',
				'label_block' => false,
				'condition' => [
					'minimize_box' => 'yes',
				],
			]
		);

		// TODO: For Pro 3.6.0, convert this to the breakpoints utility method introduced in core 3.5.0.
		$breakpoints = Plugin::elementor()->breakpoints->get_active_breakpoints();

		$minimized_on_options = [];

		foreach ( $breakpoints as $breakpoint_key => $breakpoint ) {
			// This feature is meant for mobile screens.
			if ( 'widescreen' === $breakpoint_key || 'laptop' === $breakpoint_key ) {
				continue;
			}

			$minimized_on_options[ $breakpoint_key ] = sprintf(
				/* translators: 1: `<` character, 2: Breakpoint value. */
				esc_html__( '%1$s (%2$s %3$dpx)', 'elementor-pro' ),
				$breakpoint->get_label(),
				'<',
				$breakpoint->get_value()
			);
		}

		$this->add_control(
			'minimized_on',
			[
				'label' => esc_html__( 'Minimized On', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'tablet',
				'options' => $minimized_on_options,
				'prefix_class' => 'elementor-toc--minimized-on-',
				'condition' => [
					'minimize_box!' => '',
				],
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'hierarchical_view',
			[
				'label' => esc_html__( 'Hierarchical View', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'frontend_available' => true,
			]
		);

		$this->add_control(
			'collapse_subitems',
			[
				'label' => esc_html__( 'Collapse Subitems', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'description' => esc_html__( 'The "Collapse" option should only be used if the Table of Contents is made sticky', 'elementor-pro' ),
				'condition' => [
					'hierarchical_view' => 'yes',
				],
				'frontend_available' => true,
			]
		);

		$this->end_controls_section(); // settings

		$this->start_controls_section(
			'box_style',
			[
				'label' => esc_html__( 'Box', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'default' => '',
				'selectors' => [
					'{{WRAPPER}}' => '--box-background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'border_color',
			[
				'label' => esc_html__( 'Border Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--box-border-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'loader_color',
			[
				'label' => esc_html__( 'Loader Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					// Not using CSS var for BC, when not configured: the loader should get the color from the body tag.
					'{{WRAPPER}} .elementor-toc__spinner' => 'color: {{VALUE}}; fill: {{VALUE}};',
				],
			]
		);

		$this->add_control(
			'border_width',
			[
				'label' => esc_html__( 'Border Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}}' => '--box-border-width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}}' => '--box-border-radius: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}}' => '--box-padding: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'min_height',
			[
				'label' => esc_html__( 'Min Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'vh' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 1000,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--box-min-height: {{SIZE}}{{UNIT}}',
				],
				'frontend_available' => true,
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'box_shadow',
				'selector' => '{{WRAPPER}}',
			]
		);

		$this->end_controls_section(); // box_style

		$this->start_controls_section(
			'header_style',
			[
				'label' => esc_html__( 'Header', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'header_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--header-background-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'header_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--header-color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'header_typography',
				'selector' => '{{WRAPPER}} .elementor-toc__header, {{WRAPPER}} .elementor-toc__header-title',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_PRIMARY,
				],
			]
		);

		$this->add_control(
			'toggle_button_color',
			[
				'label' => esc_html__( 'Icon Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'condition' => [
					'minimize_box' => 'yes',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--toggle-button-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'header_separator_width',
			[
				'label' => esc_html__( 'Separator Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}}' => '--separator-width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section(); // header_style

		$this->start_controls_section(
			'list_style',
			[
				'label' => esc_html__( 'List', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'max_height',
			[
				'label' => esc_html__( 'Max Height', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'vh' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 1000,
					],
				],
				'selectors' => [
					'{{WRAPPER}}' => '--toc-body-max-height: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'list_typography',
				'selector' => '{{WRAPPER}} .elementor-toc__list-item',
				'global' => [
					'default' => Global_Typography::TYPOGRAPHY_TEXT,
				],
			]
		);

		$this->add_control(
			'list_indent',
			[
				'label' => esc_html__( 'Indent', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'default' => [
					'unit' => 'em',
				],
				'selectors' => [
					'{{WRAPPER}}' => '--nested-list-indent: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->start_controls_tabs( 'item_text_style' );

		$this->start_controls_tab( 'normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'item_text_color_normal',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--item-text-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'item_text_underline_normal',
			[
				'label' => esc_html__( 'Underline', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'selectors' => [
					'{{WRAPPER}}' => '--item-text-decoration: underline',
				],
			]
		);

		$this->end_controls_tab(); // normal

		$this->start_controls_tab( 'hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'item_text_color_hover',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_ACCENT,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--item-text-hover-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'item_text_underline_hover',
			[
				'label' => esc_html__( 'Underline', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'default' => 'yes',
				'selectors' => [
					'{{WRAPPER}}' => '--item-text-hover-decoration: underline',
				],
			]
		);

		$this->end_controls_tab(); // hover

		$this->start_controls_tab( 'active',
			[
				'label' => esc_html__( 'Active', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'item_text_color_active',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}}' => '--item-text-active-color: {{VALUE}}',
				],
			]
		);

		$this->add_control(
			'item_text_underline_active',
			[
				'label' => esc_html__( 'Underline', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'selectors' => [
					'{{WRAPPER}}' => '--item-text-active-decoration: underline',
				],
			]
		);

		$this->end_controls_tab(); // active

		$this->end_controls_tabs(); // item_text_style

		$this->add_control(
			'heading_marker',
			[
				'label' => esc_html__( 'Marker', 'elementor-pro' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);

		$this->add_control(
			'marker_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'selectors' => [
					'{{WRAPPER}}' => '--marker-color: {{VALUE}}',
				],
			]
		);

		$this->add_responsive_control(
			'marker_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px', 'em' ],
				'selectors' => [
					'{{WRAPPER}}' => '--marker-size: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section(); // list_style
	}

	protected function render() {
		$settings = $this->get_settings_for_display();

		$this->add_render_attribute( 'body', 'class', 'elementor-toc__body' );

		if ( $settings['collapse_subitems'] ) {
			$this->add_render_attribute( 'body', 'class', 'elementor-toc__list-items--collapsible' );
		}

		$html_tag = Utils::validate_html_tag( $settings['html_tag'] );
		?>
		<div class="elementor-toc__header">
			<<?php Utils::print_validated_html_tag( $html_tag ); ?> class="elementor-toc__header-title">
				<?php $this->print_unescaped_setting( 'title' ); ?>
			</<?php Utils::print_validated_html_tag( $html_tag ); ?>>
			<?php if ( 'yes' === $settings['minimize_box'] ) : ?>
				<div class="elementor-toc__toggle-button elementor-toc__toggle-button--expand"><?php Icons_Manager::render_icon( $settings['expand_icon'] ); ?></div>
				<div class="elementor-toc__toggle-button elementor-toc__toggle-button--collapse"><?php Icons_Manager::render_icon( $settings['collapse_icon'] ); ?></div>
			<?php endif; ?>
		</div>
		<div <?php $this->print_render_attribute_string( 'body' ); ?>>
			<div class="elementor-toc__spinner-container">
				<?php
					Icons_Manager::render_icon(
						[
							'library' => 'eicons',
							'value' => 'eicon-loading',
						],
						[
							'class' => [
								'elementor-toc__spinner',
								'eicon-animation-spin',
							],
							'aria-hidden' => 'true',
						]
					); ?>
			</div>
		</div>
		<?php
	}
}
modules/table-of-contents/module.php000064400000001420150755004310013533 0ustar00<?php
namespace ElementorPro\Modules\TableOfContents;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function __construct() {
		parent::__construct();

		add_filter( 'elementor_pro/editor/localize_settings', [ $this, 'localize_settings' ] );
		add_filter( 'elementor_pro/frontend/localize_settings', [ $this, 'localize_settings' ] );
	}

	public function get_widgets() {
		return [
			'Table_Of_Contents',
		];
	}

	public function get_name() {
		return 'table-of-contents';
	}

	public function localize_settings( array $settings ) {
		$settings['i18n']['toc_no_headings_found'] = esc_html__( 'No headings were found on this page.', 'elementor-pro' );

		return $settings;
	}
}
modules/blockquote/module.php000064400000000501150755004310012356 0ustar00<?php
namespace ElementorPro\Modules\Blockquote;

use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends Module_Base {

	public function get_widgets() {
		return [
			'Blockquote',
		];
	}

	public function get_name() {
		return 'blockquote';
	}
}
modules/blockquote/widgets/blockquote.php000064400000062114150755004310014717 0ustar00<?php
namespace ElementorPro\Modules\Blockquote\Widgets;

use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Typography;
use Elementor\Icons_Manager;
use Elementor\Modules\DynamicTags\Module as TagsModule;
use ElementorPro\Plugin;
use ElementorPro\Base\Base_Widget;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Blockquote extends Base_Widget {

	public function get_style_depends() {
		if ( Icons_Manager::is_migration_allowed() ) {
			return [ 'elementor-icons-fa-brands' ];
		}

		return [];
	}

	public function get_name() {
		return 'blockquote';
	}

	public function get_title() {
		return esc_html__( 'Blockquote', 'elementor-pro' );
	}

	public function get_icon() {
		return 'eicon-blockquote';
	}

	public function get_keywords() {
		return [ 'blockquote', 'quote', 'paragraph', 'testimonial', 'text', 'twitter', 'tweet' ];
	}

	protected function register_controls() {
		$this->start_controls_section(
			'section_blockquote_content',
			[
				'label' => esc_html__( 'Blockquote', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'blockquote_skin',
			[
				'label' => esc_html__( 'Skin', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'border' => esc_html__( 'Border', 'elementor-pro' ),
					'quotation' => esc_html__( 'Quotation', 'elementor-pro' ),
					'boxed' => esc_html__( 'Boxed', 'elementor-pro' ),
					'clean' => esc_html__( 'Clean', 'elementor-pro' ),
				],
				'default' => 'border',
				'prefix_class' => 'elementor-blockquote--skin-',
			]
		);

		$this->add_control(
			'alignment',
			[
				'label' => esc_html__( 'Alignment', 'elementor-pro' ),
				'type' => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'elementor-pro' ),
						'icon' => 'eicon-text-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'elementor-pro' ),
						'icon' => 'eicon-text-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'elementor-pro' ),
						'icon' => 'eicon-text-align-right',
					],
				],
				'prefix_class' => 'elementor-blockquote--align-',
				'condition' => [
					'blockquote_skin!' => 'border',
				],
				'separator' => 'after',
			]
		);

		$this->add_control(
			'blockquote_content',
			[
				'label' => esc_html__( 'Content', 'elementor-pro' ),
				'type' => Controls_Manager::TEXTAREA,
				'dynamic' => [
					'active' => true,
				],
				'default' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor-pro' ) . esc_html__( 'Lorem ipsum dolor sit amet consectetur adipiscing elit dolor', 'elementor-pro' ),
				'placeholder' => esc_html__( 'Enter your quote', 'elementor-pro' ),
				'rows' => 10,
			]
		);

		$this->add_control(
			'author_name',
			[
				'label' => esc_html__( 'Author', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'dynamic' => [
					'active' => true,
				],
				'default' => esc_html__( 'John Doe', 'elementor-pro' ),
				'separator' => 'after',
			]
		);

		$this->add_control(
			'tweet_button',
			[
				'label' => esc_html__( 'Tweet Button', 'elementor-pro' ),
				'type' => Controls_Manager::SWITCHER,
				'label_on' => esc_html__( 'On', 'elementor-pro' ),
				'label_off' => esc_html__( 'Off', 'elementor-pro' ),
				'default' => 'yes',
			]
		);

		$this->add_control(
			'tweet_button_view',
			[
				'label' => esc_html__( 'View', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'icon-text' => 'Icon & Text',
					'icon' => 'Icon',
					'text' => 'Text',
				],
				'prefix_class' => 'elementor-blockquote--button-view-',
				'default' => 'icon-text',
				'render_type' => 'template',
				'condition' => [
					'tweet_button' => 'yes',
				],
			]
		);

		$this->add_control(
			'tweet_button_skin',
			[
				'label' => esc_html__( 'Skin', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'classic' => 'Classic',
					'bubble' => 'Bubble',
					'link' => 'Link',
				],
				'default' => 'classic',
				'prefix_class' => 'elementor-blockquote--button-skin-',
				'condition' => [
					'tweet_button' => 'yes',
				],
			]
		);

		$this->add_control(
			'tweet_button_label',
			[
				'label' => esc_html__( 'Label', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'default' => esc_html__( 'Tweet', 'elementor-pro' ),
				'condition' => [
					'tweet_button' => 'yes',
					'tweet_button_view!' => 'icon',
				],
			]
		);

		$this->add_control(
			'user_name',
			[
				'label' => esc_html__( 'Username', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'placeholder' => '@username',
				'condition' => [
					'tweet_button' => 'yes',
				],
			]
		);

		$this->add_control(
			'url_type',
			[
				'label' => esc_html__( 'Target URL', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'current_page' => esc_html__( 'Current Page', 'elementor-pro' ),
					'none' => esc_html__( 'None', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'default' => 'current_page',
				'condition' => [
					'tweet_button' => 'yes',
				],
			]
		);

		$this->add_control(
			'url',
			[
				'label' => esc_html__( 'Link', 'elementor-pro' ),
				'type' => Controls_Manager::TEXT,
				'input_type' => 'url',
				'dynamic' => [
					'active' => true,
					'categories' => [
						TagsModule::POST_META_CATEGORY,
						TagsModule::URL_CATEGORY,
					],
				],
				'placeholder' => esc_html__( 'https://your-link.com', 'elementor-pro' ),
				'label_block' => true,
				'condition' => [
					'url_type' => 'custom',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_content_style',
			[
				'label' => esc_html__( 'Content', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_control(
			'content_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_TEXT,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote__content' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'content_typography',
				'selector' => '{{WRAPPER}} .elementor-blockquote__content',
			]
		);

		$this->add_responsive_control(
			'content_gap',
			[
				'label' => esc_html__( 'Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote__content +footer' => 'margin-top: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_control(
			'heading_author_style',
			[
				'type' => Controls_Manager::HEADING,
				'label' => esc_html__( 'Author', 'elementor-pro' ),
				'separator' => 'before',
			]
		);

		$this->add_control(
			'author_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'global' => [
					'default' => Global_Colors::COLOR_SECONDARY,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote__author' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'author_typography',
				'selector' => '{{WRAPPER}} .elementor-blockquote__author',
			]
		);

		$this->add_responsive_control(
			'author_gap',
			[
				'label' => esc_html__( 'Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'default' => [
					'size' => 20,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote__author' => 'margin-bottom: {{SIZE}}{{UNIT}}',
				],
				'condition' => [
					'alignment' => 'center',
					'tweet_button' => 'yes',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_button_style',
			[
				'label' => esc_html__( 'Button', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_responsive_control(
			'button_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0.5,
						'max' => 2,
						'step' => 0.1,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote__tweet-button' => 'font-size: calc({{SIZE}}{{UNIT}} * 10);',
				],
			]
		);

		$this->add_control(
			'button_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote__tweet-button' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
				'range' => [
					'em' => [
						'min' => 0,
						'max' => 5,
						'step' => 0.1,
					],
					'rem' => [
						'min' => 0,
						'max' => 5,
						'step' => 0.1,
					],
					'px' => [
						'min' => 0,
						'max' => 50,
						'step' => 1,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
						'step' => 1,
					],
				],
				'size_units' => [ 'px', '%', 'em', 'rem' ],
			]
		);

		$this->add_control(
			'button_color_source',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'official' => esc_html__( 'Official', 'elementor-pro' ),
					'custom' => esc_html__( 'Custom', 'elementor-pro' ),
				],
				'default' => 'official',
				'prefix_class' => 'elementor-blockquote--button-color-',
			]
		);

		$this->start_controls_tabs( 'tabs_button_style' );

		$this->start_controls_tab(
			'tab_button_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
				'condition' => [
					'button_color_source' => 'custom',
				],
			]
		);

		$this->add_control(
			'button_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote__tweet-button' => 'background-color: {{VALUE}}',
					'body:not(.rtl) {{WRAPPER}} .elementor-blockquote__tweet-button:before, body {{WRAPPER}}.elementor-blockquote--align-left .elementor-blockquote__tweet-button:before' => 'border-right-color: {{VALUE}}; border-left-color: transparent',
					'body.rtl {{WRAPPER}} .elementor-blockquote__tweet-button:before, body {{WRAPPER}}.elementor-blockquote--align-right .elementor-blockquote__tweet-button:before' => 'border-left-color: {{VALUE}}; border-right-color: transparent',
				],
				'condition' => [
					'button_color_source' => 'custom',
					'tweet_button_skin!' => 'link',
				],
			]
		);

		$this->add_control(
			'button_text_color',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote__tweet-button' => 'color: {{VALUE}}',
					'{{WRAPPER}} .elementor-blockquote__tweet-button svg' => 'fill: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_button_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
				'condition' => [
					'button_color_source' => 'custom',
				],
			]
		);

		$this->add_control(
			'button_background_color_hover',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote__tweet-button:hover' => 'background-color: {{VALUE}}',

					'body:not(.rtl) {{WRAPPER}} .elementor-blockquote__tweet-button:hover:before, body {{WRAPPER}}.elementor-blockquote--align-left .elementor-blockquote__tweet-button:hover:before' => 'border-right-color: {{VALUE}}; border-left-color: transparent',

					'body.rtl {{WRAPPER}} .elementor-blockquote__tweet-button:before, body {{WRAPPER}}.elementor-blockquote--align-right .elementor-blockquote__tweet-button:hover:before' => 'border-left-color: {{VALUE}}; border-right-color: transparent',
				],
				'condition' => [
					'button_color_source' => 'custom',
					'tweet_button_skin!' => 'link',
				],
			]
		);

		$this->add_control(
			'button_text_color_hover',
			[
				'label' => esc_html__( 'Text Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote__tweet-button:hover' => 'color: {{VALUE}}',
					'{{WRAPPER}} .elementor-blockquote__tweet-button:hover svg' => 'fill: {{VALUE}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$default_fonts = Plugin::elementor()->kits_manager->get_current_settings( 'default_generic_fonts' );

		if ( $default_fonts ) {
			$default_fonts = ', ' . $default_fonts;
		}

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'button_typography',
				'selector' => '{{WRAPPER}} .elementor-blockquote__tweet-button span, {{WRAPPER}} .elementor-blockquote__tweet-button i',
				'separator' => 'before',
				'fields_options' => [
					'font_family' => [
						'selectors' => [
							'{{WRAPPER}} .elementor-blockquote__tweet-button' => 'font-family: "{{VALUE}}"' . $default_fonts . ';',
						],
					],
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_border_style',
			[
				'label' => esc_html__( 'Border', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'blockquote_skin' => 'border',
				],
			]
		);

		$this->start_controls_tabs( 'tabs_border_style' );

		$this->start_controls_tab(
			'tab_border_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'border_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->add_responsive_control(
			'border_width',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'body:not(.rtl) {{WRAPPER}} .elementor-blockquote' => 'border-left-width: {{SIZE}}{{UNIT}}',
					'body.rtl {{WRAPPER}} .elementor-blockquote' => 'border-right-width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'border_gap',
			[
				'label' => esc_html__( 'Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'body:not(.rtl) {{WRAPPER}} .elementor-blockquote' => 'padding-left: {{SIZE}}{{UNIT}}',
					'body.rtl {{WRAPPER}} .elementor-blockquote' => 'padding-right: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_border_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'border_color_hover',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote:hover' => 'border-color: {{VALUE}}',
				],
			]
		);

		$this->add_responsive_control(
			'border_width_hover',
			[
				'label' => esc_html__( 'Width', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'body:not(.rtl) {{WRAPPER}} .elementor-blockquote:hover' => 'border-left-width: {{SIZE}}{{UNIT}}',
					'body.rtl {{WRAPPER}} .elementor-blockquote:hover' => 'border-right-width: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_responsive_control(
			'border_gap_hover',
			[
				'label' => esc_html__( 'Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'body:not(.rtl) {{WRAPPER}} .elementor-blockquote:hover' => 'padding-left: {{SIZE}}{{UNIT}}',
					'body.rtl {{WRAPPER}} .elementor-blockquote:hover' => 'padding-right: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_responsive_control(
			'border_vertical_padding',
			[
				'label' => esc_html__( 'Vertical Padding', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote' => 'padding-top: {{SIZE}}{{UNIT}}; padding-bottom: {{SIZE}}{{UNIT}}',
				],
				'separator' => 'before',
				'condition' => [
					'blockquote_skin' => 'border',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_box_style',
			[
				'label' => esc_html__( 'Box', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'blockquote_skin' => 'boxed',
				],
			]
		);

		$this->add_responsive_control(
			'box_padding',
			[
				'label' => esc_html__( 'Padding', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote' => 'padding: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->start_controls_tabs( 'tabs_box_style' );

		$this->start_controls_tab(
			'tab_box_normal',
			[
				'label' => esc_html__( 'Normal', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'box_background_color',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'box_border',
				'selector' => '{{WRAPPER}} .elementor-blockquote',
			]
		);

		$this->add_responsive_control(
			'box_border_radius',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'box_box_shadow',
				'exclude' => [
					'box_shadow_position',
				],
				'selector' => '{{WRAPPER}} .elementor-blockquote',
			]
		);

		$this->end_controls_tab();

		$this->start_controls_tab(
			'tab_box_hover',
			[
				'label' => esc_html__( 'Hover', 'elementor-pro' ),
			]
		);

		$this->add_control(
			'box_background_color_hover',
			[
				'label' => esc_html__( 'Background Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote:hover' => 'background-color: {{VALUE}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'box_border_hover',
				'selector' => '{{WRAPPER}} .elementor-blockquote:hover',
			]
		);

		$this->add_responsive_control(
			'box_border_radius_hover',
			[
				'label' => esc_html__( 'Border Radius', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote:hover' => 'border-radius: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->add_group_control(
			Group_Control_Box_Shadow::get_type(),
			[
				'name' => 'box_box_shadow_hover',
				'exclude' => [
					'box_shadow_position',
				],
				'selector' => '{{WRAPPER}} .elementor-blockquote:hover',
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->end_controls_section();

		$this->start_controls_section(
			'section_quote_style',
			[
				'label' => esc_html__( 'Quote', 'elementor-pro' ),
				'tab' => Controls_Manager::TAB_STYLE,
				'condition' => [
					'blockquote_skin' => 'quotation',
				],
			]
		);

		$this->add_control(
			'quote_text_color',
			[
				'label' => esc_html__( 'Color', 'elementor-pro' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote:before' => 'color: {{VALUE}}',
				],
			]
		);

		$this->add_responsive_control(
			'quote_size',
			[
				'label' => esc_html__( 'Size', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 0.5,
						'max' => 2,
						'step' => 0.1,
					],
				],
				'default' => [
					'size' => 1,
				],
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote:before' => 'font-size: calc({{SIZE}}{{UNIT}} * 100)',
				],
			]
		);

		$this->add_responsive_control(
			'quote_gap',
			[
				'label' => esc_html__( 'Gap', 'elementor-pro' ),
				'type' => Controls_Manager::SLIDER,
				'selectors' => [
					'{{WRAPPER}} .elementor-blockquote__content' => 'margin-top: {{SIZE}}{{UNIT}}',
				],
			]
		);

		$this->end_controls_section();
	}

	protected function render() {
		$settings = $this->get_settings_for_display();

		$tweet_button_view = $settings['tweet_button_view'];
		$share_link = 'https://twitter.com/intent/tweet';

		$text = rawurlencode( $settings['blockquote_content'] );

		if ( ! empty( $settings['author_name'] ) ) {
			$text .= ' — ' . $settings['author_name'];
		}

		$share_link = add_query_arg( 'text', $text, $share_link );

		if ( 'current_page' === $settings['url_type'] ) {
			$share_link = add_query_arg( 'url', rawurlencode( home_url() . add_query_arg( false, false ) ), $share_link );
		} elseif ( 'custom' === $settings['url_type'] ) {
			$share_link = add_query_arg( 'url', rawurlencode( $settings['url'] ), $share_link );
		}

		if ( ! empty( $settings['user_name'] ) ) {
			$user_name = $settings['user_name'];
			if ( '@' === substr( $user_name, 0, 1 ) ) {
				$user_name = substr( $user_name, 1 );
			}
			$share_link = add_query_arg( 'via', rawurlencode( $user_name ), $share_link );
		}

		$this->add_render_attribute( [
			'blockquote_content' => [ 'class' => 'elementor-blockquote__content' ],
			'author_name' => [ 'class' => 'elementor-blockquote__author' ],
			'tweet_button_label' => [ 'class' => 'elementor-blockquote__tweet-label' ],
		] );

		$this->add_inline_editing_attributes( 'blockquote_content' );
		$this->add_inline_editing_attributes( 'author_name', 'none' );
		$this->add_inline_editing_attributes( 'tweet_button_label', 'none' );
		?>
		<blockquote class="elementor-blockquote">
			<p <?php $this->print_render_attribute_string( 'blockquote_content' ); ?>>
				<?php $this->print_unescaped_setting( 'blockquote_content' ); ?>
			</p>
			<?php if ( ! empty( $settings['author_name'] ) || 'yes' === $settings['tweet_button'] ) : ?>
				<footer>
					<?php if ( ! empty( $settings['author_name'] ) ) : ?>
						<cite <?php $this->print_render_attribute_string( 'author_name' ); ?>><?php
							$this->print_unescaped_setting( 'author_name' );
						?></cite>
					<?php endif ?>
					<?php if ( 'yes' === $settings['tweet_button'] ) : ?>
						<a href="<?php echo esc_attr( $share_link ); ?>" class="elementor-blockquote__tweet-button" target="_blank">
							<?php if ( 'text' !== $tweet_button_view ) : ?>
								<?php
								$icon = [
									'value' => 'fab fa-twitter',
									'library' => 'fa-brands',
								];
								if ( ! Icons_Manager::is_migration_allowed() || ! Icons_Manager::render_icon( $icon, [ 'aria-hidden' => 'true' ] ) ) : ?>
									<i class="fa fa-twitter" aria-hidden="true"></i>
								<?php endif; ?>
								<?php if ( 'icon-text' !== $tweet_button_view ) : ?>
									<span class="elementor-screen-only"><?php esc_html_e( 'Tweet', 'elementor-pro' ); ?></span>
								<?php endif; ?>
							<?php endif; ?>
							<?php if ( 'icon-text' === $tweet_button_view || 'text' === $tweet_button_view ) : ?>
								<span <?php $this->print_render_attribute_string( 'tweet_button_label' ); ?>><?php
									$this->print_unescaped_setting( 'tweet_button_label' );
								?></span>
							<?php endif; ?>
						</a>
					<?php endif ?>
				</footer>
			<?php endif ?>
		</blockquote>
		<?php
	}

	/**
	 * Render Blockquote widget output in the editor.
	 *
	 * Written as a Backbone JavaScript template and used to generate the live preview.
	 *
	 * @since 2.9.0
	 * @access protected
	 */
	protected function content_template() {
		?>
		<#
			var tweetButtonView = settings.tweet_button_view;
			#>
			<blockquote class="elementor-blockquote">
				<p class="elementor-blockquote__content elementor-inline-editing" data-elementor-setting-key="blockquote_content">
					{{{ settings.blockquote_content }}}
				</p>
				<# if ( 'yes' === settings.tweet_button || settings.author_name ) { #>
					<footer>
						<# if ( settings.author_name ) { #>
							<cite class="elementor-blockquote__author elementor-inline-editing" data-elementor-setting-key="author_name" data-elementor-inline-editing-toolbar="none">{{{ settings.author_name }}}</cite>
						<# } #>
						<# if ( 'yes' === settings.tweet_button ) { #>
							<a href="#" class="elementor-blockquote__tweet-button">
								<# if ( 'text' !== tweetButtonView ) {
									// If FontAwesome migration has been done, load the FA5 version, otherwise load FA4
									if ( ! elementor.config.icons_update_needed ) { #>
										<i class="fab fa-twitter" aria-hidden="true"></i>
									<# } else { #>
										<i class="fa fa-twitter" aria-hidden="true"></i>
									<# } #>
									<# if ( 'icon-text' !== tweetButtonView ) { #>
										<span class="elementor-screen-only"><?php esc_html_e( 'Tweet', 'elementor-pro' ); ?></span>
									<# } #>
								<# } #>
								<# if ( 'icon-text' === tweetButtonView || 'text' === tweetButtonView ) { #>
									<span class="elementor-inline-editing elementor-blockquote__tweet-label" data-elementor-setting-key="tweet_button_label" data-elementor-inline-editing-toolbar="none">{{{ settings.tweet_button_label }}}</span>
								<# } #>
							</a>
						<# } #>
					</footer>
				<# } #>
			</blockquote>
		<?php
	}
}
modules/wp-cli/license-command.php000064400000003376150755004310013167 0ustar00<?php
namespace ElementorPro\Modules\WpCli;

use ElementorPro\License\Admin;
use ElementorPro\License\API;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Elementor Page Builder Pro cli tools.
 */
class License_Command extends \WP_CLI_Command {

	/**
	 * Activate Elementor Pro License key.
	 *
	 * ## EXAMPLES
	 *
	 *  1. wp elementor-pro license activate <license-key>
	 *      - This will try activate your license key.
	 */
	public function activate( $args, $assoc_args ) {
		$license_key = $args[0];
		$data = API::activate_license( $args[0] );

		if ( is_wp_error( $data ) ) {
			\WP_CLI::error( sprintf( '%s (%s) ', $data->get_error_message(), $data->get_error_code() ) );
		}

		if ( API::STATUS_VALID !== $data['license'] ) {
			$errors = [
				'no_activations_left' => 'You have no more activations left.',
				'expired' => 'Your License Has Expired',
				'missing' => 'Your license is missing. Please check your key again.',
				'revoked' => 'Your license key has been cancelled',
				'key_mismatch' => 'Your license is invalid for this domain. Please check your key again.',
			];

			if ( isset( $errors[ $data['error'] ] ) ) {
				$error_msg = $errors[ $data['error'] ];
			} else {
				$error_msg = 'An error occurred. (' . $data['error'] . ')';
			}

			\WP_CLI::error( $error_msg );
		}

		Admin::set_license_key( $license_key );
		API::set_license_data( $data );

		\WP_CLI::success( 'The License has been activated successfully.' );
	}

	/**
	 * Deactivate Elementor Pro License key.
	 *
	 * ## EXAMPLES
	 *
	 *  1. wp elementor-pro license deactivate.
	 *      - This will deactivate your license key.
	 */
	public function deactivate() {
		Admin::deactivate();
		\WP_CLI::success( 'The License has been deactivated successfully.' );
	}
}
modules/wp-cli/module.php000064400000001314150755004310011404 0ustar00<?php
namespace ElementorPro\Modules\WpCli;

use Elementor\Core\Base\Module as BaseModule;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Module extends BaseModule {

	/**
	 * Get module name.
	 *
	 * @since  2.1.0
	 * @access public
	 *
	 * @return string Module name.
	 */
	public function get_name() {
		return 'wp-cli';
	}

	public static function is_active() {
		return defined( 'WP_CLI' ) && WP_CLI;
	}

	/**
	 *
	 * @since  2.1.0
	 * @access public
	 */
	public function __construct() {
		\WP_CLI::add_command( 'elementor-pro license', '\ElementorPro\Modules\WpCli\License_Command' );
		\WP_CLI::add_command( 'elementor-pro update', '\ElementorPro\Modules\WpCli\Update' );
	}
}
modules/wp-cli/update.php000064400000000543150755004310011404 0ustar00<?php
namespace ElementorPro\Modules\WpCli;

use Elementor\Modules\WpCli\Update as UpdateBase;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Elementor Page Builder Pro cli tools.
 */
class Update extends UpdateBase {

	protected function get_update_db_manager_class() {
		return '\ElementorPro\Core\Upgrade\Manager';
	}
}
license.txt000064400000001627150755004310006735 0ustar00Copyright (C) 2016-2021 Elementor Ltd.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.

ADDITIONAL TERMS per GNU GPL Section 7 The origin of the Program must not be misrepresented; you must not claim that you wrote the original Program. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original Program.
docs/modules/payments/classes/payment-button.php.md000064400000003563150755004310016546 0ustar00# Payment-Button.php
 
## Technical Description:

This is an abstract class that every payment button widget will inherit from.

Because every payment button is, after all, a button, this class inherits from `Widget_Button` 
in order to keep it as close as possible to the default button widget ( and of course to avoid unnecessary code duplications ).

This class is responsible for creating the universal sections && controls of the payment buttons.
In addition, it has some abstract functions to make sure that every payment button will work as it should.

## Attention Needed / Known Issues:

- Use the `register_account_section()` function in order to add the API controls for your payment provider. 
  
	See `widgets/paypal-button.php` for reference.


- Use the `register_sandbox_controls()` function if you need more sandbox controls than the default `sandbox_mode` switch.
  
	By default, they will be registered just after the switch.
  

- Use the `after_product_type()` function when you need to add something after the product type select-box. This is useful when you want to add a 
  note to the user.
  
  See `widgets/paypal-button.php` for reference. 


- The currencies list **defaults to PayPal's supported currencies**, so when you extend it, make sure that this list
  is also supported in the payment method you are using, or override it with the appropriate one.
  

- The `get_custom_message( $id )` returns a custom message that is set in the `Custom Messages` control under the `Additional Settings` section, and will default to
  the default errors messages that returned from `get_default_error_messages()`.
  
	You can override this function in order to extend the default custom messages. Don't forget to extend the `register_settings_section()` and `register_messages_style_section()` functions as well.


- You should use `is_sandbox()` to determine if it's on sandbox mode.
docs/modules/payments/widgets/paypal-button.php.md000064400000004547150755004310016373 0ustar00# Paypal-Button.php

## Product Knowledge Base:

- [PayPal Legacy Button HTML Reference](https://developer.paypal.com/docs/paypal-payments-standard/integration-guide/html-reference-landing/)


- [PayPal API Reference](https://developer.paypal.com/docs/api/overview)

## Technical Description:

This class handles the PayPal button widget.

As of writing those lines, it only supports the **legacy** payments API of PayPal.

We planned on adding support for the `Payments API` using the [PHP](https://developer.paypal.com/docs/api/payments/v2/) || [JavaScript](https://developer.paypal.com/docs/checkout/) SDKs but 
unfortunately both of them where not suitable for our needs.

### JavaScript SDK ( AKA "Smart Buttons" ):

- The fast & easy-to-use option, but lack the support of button styling.


- Forces you to pass basic argument like `currency` or `locale` as a query parameter to the script ( [See here](https://developer.paypal.com/docs/checkout/reference/customize-sdk/) ).
  
	That means you are limited to a single currency type for each page.

### PHP SDK:
- You **can** style the button ( well, you use it with AJAX and you are not bounded to PayPal's style, so... ).
  

- PayPal created a nice [Checkout SDK](https://github.com/paypal/Checkout-PHP-SDK) which works well, but luckily for us, it doesn't support anything other than a simple checkout request. Hurray! 🎉
  
	We tried extending the SDK to at least support subscriptions, but creating a subscription in PayPal is complicated for the goal of a simple widget:
  
	You need to [create a Product](https://developer.paypal.com/docs/api/catalog-products/v1/#products_create), attach to 
  	[a Plan](https://developer.paypal.com/docs/api/subscriptions/v1/#plans_create) and finally pass it to [a Subscription](https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_create).
  

#### They both also don't support donations, so we dropped this idea.


## Attention Needed / Known Issues:

- `get_numeric_setting( $key, $min )` retrieves a value by `key` from `get_settings()`, and return it as a numeric value, or defaults to `$min` if it's non-existent or invalid.


- `get_errors()` handles basic validations and returns an array of errors.


- `get_api_method()` && `render_legacy_form()` are leftovers from the time we tried using the `Payments API` and might be used in the future if PayPal will provide a simpler API.
docs/modules/code-highlight/code-highlight.md000064400000010453150755004310015227 0ustar00## Product knowledge base

### Quick Links

* [PrismJS Website](https://prismjs.com/)
* [PrismJS Line Numbers Plugin](https://prismjs.com/plugins/line-numbers/)
* [PrismJS Line Height Plugin](https://prismjs.com/plugins/line-highlight/)
* [PrismJS Copy to Clipboard Plugin](https://prismjs.com/plugins/copy-to-clipboard/)

### Video
TBD: create a video tutorial

## Technical description

The widget allow users to add code block with the abilities to:
 * Add specific code language.
 * Add line numbers for evey code block line.
 * Add a copy to clipboard button.
 * Highlight specific code block lines. 
 * Break long code block lines to prevent a horizontal scroll.
 * Choose a specific theme for each code block.
 * Limit the height of the code block.
 * Change the font size of the code block

## Known issues / attention needed

### Style (CSS)

All the css files for the 6 themes and 3 plugins are local and combined to a single CSS file instead of using the CDN, in order to avoid too many requests.
Another reason is because we use custom classes to handle the selected themes and features (as line-numbers and such) when the code highlight is being used more than once in the same page.

There are 3 SCSS files that gets combined into a single file:
 * `line-highlight.scss` - Includes the style for the line highlight plugin. (ver 1.23.0)
 * `line-numbers.scss` - Includes the style for the line numbers plugin. (ver 1.23.0)
 * `main-style.scss` - Includes the rest of the styles needed for the themes and plugins:
 	* 6 themes: prism-twilight, prism-tomorrow, prism-solarizedlight, prism-okaidia, prism-dark, prism-solid. (ver 1.23.0)  
	  Each theme style is prefixed with a class specific for the theme (in order to support different themes for multiple code highlight instances on the same page).	* 1 plugin: "copy to clipboard" style prefixed with a class (to support copy functionality only if the user has enabled it). (ver 1.23.0)
	* Specific style for the word-wrap feature
 * `code-highlight.scss` - The file helps to minimize HTTP requests by combining all the SCSS files to a single CSS file.

There is a small CSS fix in `main-style.scss` which solves a conflict when highlighting lines while hiding line numbers.

### Functionality (JS)

All the scripts are requested from a CDN instead of using local files since we found it difficult to manage all the plugins to work properly when combined to a single local file.

There are 7 JS Files which we use from a CDN, the last 3 are added only if the user chose the functionality they responsible for:
  * `prismjs_core` - The minimum required code for the plugin functionality. (ver 1.23.0)
  * `prismjs_loader` Dynamically loading the language according to the user choice. (ver 1.23.0)
  * `prismjs_normalize` - Trimming all leading and trailing whitespace of every code block. (ver 1.23.0)
  * `prismjs_line_numbers` - Adding line numbers to the code block. (ver 1.23.0)
  * `prismjs_line_highlight` - Highlighting specific lines in code block. (ver 1.23.0)
  * `prismjs_toolbar` - Registering buttons (we use it for the copy to clipboard button). (ver 1.23.0)
  * `prismjs_copy_to_clipboard` - Adding the ability to copy the code block to the clipboard. (ver 1.23.0)

`handler.js` - For the “word wrap” feature to work, we use the `onElementChange` method to run the prism plugin again and adjust to the changes.

There is a plugin named `inline-color` that we had to remove since it only worked when we used the `PrismJS` plugin with all the languages included in the same file. That means one big file that includes the whole functionality of the plugin AND all the languages, which is a huge performance penalty. Instead, we use the prisms-loader plugin which dynamically loads the needed language when the user selects it and it means a smaller JS bundle.

### Functionality (PHP)
`code-highlight.php` - The language control is used to give the user a code language selection from the most popular code languages. We've added an `apply_filter` to the control in order to give the user more flexibility when choosing a code language.

We replaced the `typography` group control with just a `font-size` control since we didn’t manage to make the `line-height` work with the line numbers. This decision was made since most of the controls in the `typography` group control are not so useful in this case anyway.
docs/modules/forms/submissions/index.md000064400000006270150755004310014306 0ustar00# Submissions

The "Submissions" component is responsible for saving form submissions records in the database. It should be some kind of log that saves the user input data + status about the other actions assigned to the specific form. There are 4 subjects that will be explained in this document: database, "save-to-database" action, REST API, and the admin page.

## Database

When the admin of the website enable 'submission' experiment the module immediately runs the database migrations (`modules/forms/submissions/database/migration.php`) which create 3 tables:

1. `e_submissions` - Holds the submission itself ( related_post, related_form, and some metadata ).
2. `e_submissions_values` - Each row has the field key, the input of the user, and the `submission_id`.
3. `e_submissions_action_log` - The table is a log that represents the other actions that run for the current submission (e.g, email, Mailchimp integration, etc.). Each row has a status, and a log message if exists.

## Save to Database Action

This is a regular form action that extends the Base Action of Elementor which does 3 things:
1. Creates a new submission in the `e_submissions` table and multiple rows in `e_submissions_values` based on the form fields.
2. Saves a snapshot of the current form fields - this will help us later for showing the submissions result in the admin page to export the form values as CSV.
3. Listens to the responses of all the other form actions and saves them in the `e_submissions_action_log` table (this is the reason why the "save-to-database" action must be the first action that runs).

## REST API

To show the admin all the submissions, the module introduces a few REST endpoints that return the submission data:
1. GET `/submissions` - which returns all the submissions without the values.
2. GET `/submissions/:id` - which returns a specific submission with its values.
3. GET `/forms` - which returns all the forms fields.

- There are more routes that are less important such as the "export" route and "referer" route.
- All those routes are available only for authenticated users that have the role of "admin".
- Those routes can be used outside the admin page.

## Admin 

The admin page is responsible for showing all the submissions to the admin of the website. The submissions can be sorted, filtered, and exported, and edited. The page itself is built with React to provide a better user experience and uses the REST API as the source of data. 

## Attention Needed

- The DB migration is an independent system and doesn't use Elementor's upgrade system.
- To create a new migration, just add a new class to the migrations folder and register it in the static prop `migrations` in `modules/forms/submissions/database/migration.php` + make sure to update the const `CURRENT_DB_VERSION` to the new version that you created.
- Please review other migration files to make sure we don't repeat some issues twice (like `max index length`, and `charset` for the tables).
- If you add some more data that belongs to a specific user, make sure to adjust `modules/forms/submissions/personal-data.php`. This class is responsible for exporting and removing the user-specific data, in order to get in line with the rules of GDPR, CCPA, etc.
data/base/controller.php000064400000000377150755004310011272 0ustar00<?php
namespace ElementorPro\Data\Base;

use Elementor\Data\Base\Controller as Controller_Base;

abstract class Controller extends Controller_Base {

	public function __construct() {
		parent::__construct();

		$this->namespace = 'elementor-pro/v1';
	}
}
base/base-widget-trait.php000064400000001764150755004310011513 0ustar00<?php
namespace ElementorPro\Base;

use ElementorPro\License\API as License_API;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

trait Base_Widget_Trait {
	public function is_editable() {
		if ( License_API::is_license_active() ) {
			return true;
		}
		return License_API::is_license_expired() && ! License_API::is_licence_pro_trial();
	}

	public function get_categories() {
		return [ 'pro-elements' ];
	}

	public function get_widget_css_config( $widget_name ) {
		$direction = is_rtl() ? '-rtl' : '';

		$css_file_path = 'css/widget-' . $widget_name . $direction . '.min.css';

		return [
			'key' => $widget_name,
			'version' => ELEMENTOR_PRO_VERSION,
			'file_path' => ELEMENTOR_PRO_ASSETS_PATH . $css_file_path,
			'data' => [
				'file_url' => ELEMENTOR_PRO_ASSETS_URL . $css_file_path,
			],
		];
	}

	// TODO: Remove this method when the minimum core version is 3.3.1.
	public function get_css_config() {
		return $this->get_widget_css_config( $this->get_group_name() );
	}
}
base/module-base.php000064400000000514150755004310010364 0ustar00<?php
namespace ElementorPro\Base;

use Elementor\Core\Base\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Module_Base extends Module {
	// This class was needed in the past and not being removed for future functionalities that might be needed for all classes that still extend it.
}
base/base-widget.php000064400000000323150755004310010360 0ustar00<?php
namespace ElementorPro\Base;

use Elementor\Widget_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

abstract class Base_Widget extends Widget_Base {

	use Base_Widget_Trait;
}
license/api.php000064400000026307150755004310007460 0ustar00<?php
namespace ElementorPro\License;

use Elementor\Core\Common\Modules\Connect\Module as ConnectModule;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class API {

	const PRODUCT_NAME = 'Elementor Pro';

	const STORE_URL = 'https://my.elementor.com/api/v1/licenses/';
	const RENEW_URL = 'https://go.elementor.com/renew/';

	// License Statuses
	const STATUS_VALID = 'valid';
	const STATUS_INVALID = 'invalid';
	const STATUS_EXPIRED = 'expired';
	const STATUS_SITE_INACTIVE = 'site_inactive';
	const STATUS_DISABLED = 'disabled';

	// Features
	const FEATURE_PRO_TRIAL = 'pro_trial';

	// Requests lock config.
	const REQUEST_LOCK_TTL = MINUTE_IN_SECONDS;
	const REQUEST_LOCK_OPTION_NAME = '_elementor_pro_api_requests_lock';

	const TRANSIENT_KEY_PREFIX = 'elementor_pro_remote_info_api_data_';

	/**
	 * @param array $body_args
	 *
	 * @return \stdClass|\WP_Error
	 */
	private static function remote_post( $body_args = [] ) {
		$body_args = wp_parse_args(
			$body_args,
			[
				'api_version' => ELEMENTOR_PRO_VERSION,
				'item_name' => self::PRODUCT_NAME,
				'site_lang' => get_bloginfo( 'language' ),
				'url' => home_url(),
			]
		);

		$response = wp_remote_post( self::STORE_URL, [
			'timeout' => 40,
			'body' => $body_args,
		] );

		if ( is_wp_error( $response ) ) {
			return $response;
		}

		$response_code = wp_remote_retrieve_response_code( $response );
		if ( 200 !== (int) $response_code ) {
			return new \WP_Error( $response_code, esc_html__( 'HTTP Error', 'elementor-pro' ) );
		}

		$data = json_decode( wp_remote_retrieve_body( $response ), true );
		if ( empty( $data ) || ! is_array( $data ) ) {
			return new \WP_Error( 'no_json', esc_html__( 'An error occurred, please try again', 'elementor-pro' ) );
		}

		return $data;
	}

	public static function activate_license( $license_key ) {
		$body_args = [
			'edd_action' => 'activate_license',
			'license' => $license_key,
		];

		$license_data = self::remote_post( $body_args );

		return $license_data;
	}

	public static function deactivate_license() {
		$body_args = [
			'edd_action' => 'deactivate_license',
			'license' => Admin::get_license_key(),
		];

		$license_data = self::remote_post( $body_args );

		return $license_data;
	}

	public static function set_transient( $cache_key, $value, $expiration = '+12 hours' ) {
		$data = [
			'timeout' => strtotime( $expiration, current_time( 'timestamp' ) ),
			'value' => json_encode( $value ),
		];

		update_option( $cache_key, $data, false );
	}

	private static function get_transient( $cache_key ) {
		$cache = get_option( $cache_key );

		if ( empty( $cache['timeout'] ) || current_time( 'timestamp' ) > $cache['timeout'] ) {
			return false;
		}

		return json_decode( $cache['value'], true );
	}

	public static function set_license_data( $license_data, $expiration = null ) {
		$expiration = 'lifetime';
		if ( null === $expiration ) {
			$expiration = '+12 hours';

			self::set_transient( Admin::LICENSE_DATA_FALLBACK_OPTION_NAME, $license_data, '+24 hours' );
		}

		self::set_transient( Admin::LICENSE_DATA_OPTION_NAME, $license_data, $expiration );
	}

	/**
	 * Check if another request is in progress.
	 *
	 * @param string $name Request name
	 *
	 * @return bool
	 */
	public static function is_request_running( $name ) {
		$requests_lock = get_option( self::REQUEST_LOCK_OPTION_NAME, [] );
		if ( isset( $requests_lock[ $name ] ) ) {
			if ( $requests_lock[ $name ] > time() - self::REQUEST_LOCK_TTL ) {
				return true;
			}
		}

		$requests_lock[ $name ] = time();
		update_option( self::REQUEST_LOCK_OPTION_NAME, $requests_lock );

		return false;
	}

	public static function get_license_data( $force_request = false ) {
		$license_data_error = [
			'license' => 'valid',
			'payment_id' => '140',
			'license_limit' => '9999',
			'site_count' => '1',
			'activations_left' => '9999',
			'expires' => 'lifetime',
			'success' => true,
		];

		$license_key = Admin::get_license_key();
			return $license_data_error;
		$license_data = self::get_transient( Admin::LICENSE_DATA_OPTION_NAME );

		if ( false === $license_data || $force_request ) {
			$body_args = [
				'edd_action' => 'check_license',
				'license' => $license_key,
			];

			if ( self::is_request_running( 'get_license_data' ) ) {
				return $license_data_error;
			}

			$license_data = self::remote_post( $body_args );

			if ( is_wp_error( $license_data ) ) {
				$license_data = self::get_transient( Admin::LICENSE_DATA_FALLBACK_OPTION_NAME );
				if ( false === $license_data ) {
					$license_data = $license_data_error;
				}

				self::set_license_data( $license_data, '+30 minutes' );
			} else {
				self::set_license_data( $license_data );
			}
		}

		return $license_data;
	}

	public static function get_version( $force_update = true ) {
		$cache_key = self::TRANSIENT_KEY_PREFIX . ELEMENTOR_PRO_VERSION;

		$info_data = self::get_transient( $cache_key );

		if ( $force_update || false === $info_data ) {
			$updater = Admin::get_updater_instance();

			$translations = wp_get_installed_translations( 'plugins' );
			$plugin_translations = [];
			if ( isset( $translations[ $updater->plugin_slug ] ) ) {
				$plugin_translations = $translations[ $updater->plugin_slug ];
			}

			$locales = array_values( get_available_languages() );

			$body_args = [
				'edd_action' => 'get_version',
				'name' => $updater->plugin_name,
				'slug' => $updater->plugin_slug,
				'version' => $updater->plugin_version,
				'license' => Admin::get_license_key(),
				'translations' => wp_json_encode( $plugin_translations ),
				'locales' => wp_json_encode( $locales ),
				'beta' => 'yes' === get_option( 'elementor_beta', 'no' ),
			];

			if ( self::is_request_running( 'get_version' ) ) {
				return new \WP_Error( esc_html__( 'Another check is in progress.', 'elementor-pro' ) );
			}

			$info_data = self::remote_post( $body_args );

			self::set_transient( $cache_key, $info_data );
		}

		return $info_data;
	}

	/**
	 * @param $version
	 *
	 * @deprecated 2.7.0 Use `API::get_plugin_package_url()` method instead.
	 */
	public static function get_previous_package_url( $version ) {
		return self::get_plugin_package_url( $version );
	}

	public static function get_plugin_package_url( $version ) {
		$url = 'https://my.elementor.com/api/v1/pro-downloads/';

		$body_args = [
			'item_name' => self::PRODUCT_NAME,
			'version' => $version,
			'license' => Admin::get_license_key(),
			'url' => home_url(),
		];

		$response = wp_remote_post( $url, [
			'timeout' => 40,
			'body' => $body_args,
		] );

		if ( is_wp_error( $response ) ) {
			return $response;
		}

		$response_code = (int) wp_remote_retrieve_response_code( $response );
		$data = json_decode( wp_remote_retrieve_body( $response ), true );

		if ( 401 === $response_code ) {
			return new \WP_Error( $response_code, $data['message'] );
		}

		if ( 200 !== $response_code ) {
			return new \WP_Error( $response_code, esc_html__( 'HTTP Error', 'elementor-pro' ) );
		}

		$data = json_decode( wp_remote_retrieve_body( $response ), true );
		if ( empty( $data ) || ! is_array( $data ) ) {
			return new \WP_Error( 'no_json', esc_html__( 'An error occurred, please try again', 'elementor-pro' ) );
		}

		return $data['package_url'];
	}

	public static function get_previous_versions() {
		$url = 'https://my.elementor.com/api/v1/pro-downloads/';

		$body_args = [
			'version' => ELEMENTOR_PRO_VERSION,
			'license' => Admin::get_license_key(),
			'url' => home_url(),
		];

		$response = wp_remote_get( $url, [
			'timeout' => 40,
			'body' => $body_args,
		] );

		if ( is_wp_error( $response ) ) {
			return $response;
		}

		$response_code = (int) wp_remote_retrieve_response_code( $response );
		$data = json_decode( wp_remote_retrieve_body( $response ), true );

		if ( 401 === $response_code ) {
			return new \WP_Error( $response_code, $data['message'] );
		}

		if ( 200 !== $response_code ) {
			return new \WP_Error( $response_code, esc_html__( 'HTTP Error', 'elementor-pro' ) );
		}

		$data = json_decode( wp_remote_retrieve_body( $response ), true );
		if ( empty( $data ) || ! is_array( $data ) ) {
			return new \WP_Error( 'no_json', esc_html__( 'An error occurred, please try again', 'elementor-pro' ) );
		}

		return $data['versions'];
	}

	public static function get_errors() {
		return [
			'no_activations_left' => sprintf(
				/* translators: 1: Bold text Open Tag, 2: Bold text closing tag, 3: Link open tag, 4: Link closing tag. */
				esc_html__( '%1$sYou have no more activations left.%2$s %3$sPlease upgrade to a more advanced license%4$s (you\'ll only need to cover the difference).', 'elementor-pro' ),
				'<strong>',
				'</strong>',
				'<a href="https://go.elementor.com/upgrade/" target="_blank">',
				'</a>'
			),
			'expired' => sprintf(
			/* translators: 1: Bold text Open Tag, 2: Bold text closing tag, 3: Link open tag, 4: Link closing tag. */
				esc_html__( '%1$sYour License Has Expired.%2$s %3$sRenew your license today%4$s to keep getting feature updates, premium support and unlimited access to the template library.', 'elementor-pro' ),
				'<strong>',
				'</strong>',
				'<a href="https://go.elementor.com/renew/" target="_blank">',
				'</a>'
			),
			'missing' => esc_html__( 'Your license is missing. Please check your key again.', 'elementor-pro' ),
			'revoked' => sprintf(
				/* translators: 1: Bold text Open Tag, 2: Bold text closing tag. */
				esc_html__( '%1$sYour license key has been cancelled%2$s (most likely due to a refund request). Please consider acquiring a new license.', 'elementor-pro' ),
				'<strong>',
				'</strong>'
			),
			'key_mismatch' => esc_html__( 'Your license is invalid for this domain. Please check your key again.', 'elementor-pro' ),
		];
	}

	public static function get_error_message( $error ) {
		$errors = self::get_errors();

		
		return '';
	}

	public static function is_license_active() {
		$license_data = self::get_license_data();

		return true;
	}

	public static function is_license_expired() {
		$license_data = self::get_license_data();

		return self::STATUS_EXPIRED === $license_data['license'];
	}

	public static function is_licence_pro_trial() {
		return self::is_licence_has_feature( self::FEATURE_PRO_TRIAL );
	}

	public static function is_licence_has_feature( $feature_name ) {
		$license_data = self::get_license_data();
	}

	public static function is_license_about_to_expire() {
			return false;
		if ( 'lifetime' === $license_data['expires'] ) {
			return false;
		}

		return time() > strtotime( '-28 days', strtotime( $license_data['expires'] ) );
	}

	/**
	 * @param string $library_type
	 *
	 * @return int
	 */
	public static function get_library_access_level() {
		$license_data = static::get_license_data();

		$access_level = ConnectModule::ACCESS_LEVEL_PRO;

		if ( static::is_license_active() ) {
			$access_level = ConnectModule::ACCESS_LEVEL_PRO;
		}

		// For BC: making sure that it returns the correct access_level even if "features" is not defined in the license data.
		if ( ! isset( $license_data['features'] ) || ! is_array( $license_data['features'] ) ) {
			return $access_level;
		}

		$library_access_level_prefix = 'template_access_level_';

		foreach ( $license_data['features'] as $feature ) {
			if ( strpos( $feature, $library_access_level_prefix ) !== 0 ) {
				continue;
			}

			$access_level = (int) str_replace( $library_access_level_prefix, '', $feature );
		}

		return $access_level;
	}
}
license/notices/trial-expired-notice.php000064400000002064150755004310014375 0ustar00<?php
namespace ElementorPro\License\Notices;

use Elementor\Core\Admin\Notices\Base_Notice;
use ElementorPro\License\API as License_API;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Trial_Expired_Notice extends Base_Notice {

	/**
	 * Notice ID.
	 */
	const ID = 'elementor_trial_expired_promote';

	/**
	 * @inheritDoc
	 */
	public function should_print() {
		return License_API::is_license_expired() && License_API::is_licence_pro_trial();
	}

	/**
	 * @inheritDoc
	 */
	public function get_config() {
		return [
			'id' => static::ID,
			'title' => esc_html__( 'Your trial has expired', 'elementor-pro' ),
			'description' => __( 'Want to continue using Pro to build your website? Choose the plan that\'s right for you!', 'elementor-pro' ),
			'button' => [
				'text' => esc_html__( 'Go Pro', 'elementor-pro' ),
				'url' => 'https://my.elementor.com/upgrade-subscription/?utm_source=wp-notification-banner&utm_medium=wp-dash&utm_campaign=pro-trial&utm_content=trial-expired',
				'new_tab' => true,
				'type' => 'cta',
			],
		];
	}
}
license/notices/trial-period-notice.php000064400000002514150755004310014217 0ustar00<?php
namespace ElementorPro\License\Notices;

use Elementor\Core\Admin\Notices\Base_Notice;
use ElementorPro\License\API;
use ElementorPro\License\API as License_API;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Trial_Period_Notice extends Base_Notice {

	/**
	 * Notice ID.
	 */
	const ID = 'elementor_trial_period_promote';

	/**
	 * @inheritDoc
	 */
	public function should_print() {
		return License_API::is_license_active() && License_API::is_licence_pro_trial();
	}

	/**
	 * @inheritDoc
	 */
	public function get_config() {
		$license_data = API::get_license_data();

		$title = sprintf(
		/* translators: %s: Days left to the trial */
			esc_html__( 'Your trial expires in %s', 'elementor-pro' ),
			human_time_diff(
				current_time( 'timestamp' ),
				strtotime( $license_data['expires'] )
			)
		);

		return [
			'id' => static::ID,
			'title' => $title,
			'description' => __( 'Find the plan that matches your needs and enjoy Pro widgets, templates, and support for a whole year.', 'elementor-pro' ),
			'button' => [
				'text' => esc_html__( 'Choose your plan', 'elementor-pro' ),
				'url' => 'https://my.elementor.com/upgrade-subscription/?utm_source=wp-notification-banner&utm_medium=wp-dash&utm_campaign=pro-trial&utm_content=trial-period',
				'new_tab' => true,
				'type' => 'cta',
			],
		];
	}
}
license/admin.php000064400000060343150755004310007775 0ustar00<?php
namespace ElementorPro\License;

use Elementor\Core\Admin\Admin_Notices;
use Elementor\Settings;
use Elementor\Utils;
use ElementorPro\Core\Connect\Apps\Activate;
use ElementorPro\License\Notices\Trial_Expired_Notice;
use ElementorPro\License\Notices\Trial_Period_Notice;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Admin {

	const PAGE_ID = 'elementor-license';

	const LICENSE_KEY_OPTION_NAME = 'elementor_pro_license_key';
	const LICENSE_DATA_OPTION_NAME = '_elementor_pro_license_data';
	const LICENSE_DATA_FALLBACK_OPTION_NAME = self::LICENSE_DATA_OPTION_NAME . '_fallback';

	public static $updater = null;

	public static function get_errors_details() {
		$license_page_link = self::get_url();

		return [
			API::STATUS_EXPIRED => [
				'title' => esc_html__( 'Your License Has Expired', 'elementor-pro' ),
				'description' => sprintf(
					/* translators: 1: Link open tag, 2: Link closing tag. */
					esc_html__( '%1$sRenew your license today%2$s, to keep getting feature updates, premium support and unlimited access to the template library.', 'elementor-pro' ),
					sprintf( '<a href="%s" target="_blank">', API::RENEW_URL ),
					'</a>'
				),
				'button_text' => esc_html__( 'Renew License', 'elementor-pro' ),
				'button_url' => API::RENEW_URL,
			],
			API::STATUS_DISABLED => [
				'title' => esc_html__( 'Your License Is Inactive', 'elementor-pro' ),
				'description' => sprintf(
					/* translators: 1: Bold text Open Tag, 2: Bold text closing tag. */
					esc_html__( '%1$sYour license key has been cancelled%2$s (most likely due to a refund request). Please consider acquiring a new license.', 'elementor-pro' ),
					'<strong>',
					'</strong>'
				),
				'button_text' => esc_html__( 'Activate License', 'elementor-pro' ),
				'button_url' => $license_page_link,
			],
			API::STATUS_INVALID => [
				'title' => esc_html__( 'License Invalid', 'elementor-pro' ),
				'description' => sprintf(
					/* translators: 1: Bold text Open Tag, 2: Bold text closing tag. */
					esc_html__( '%1$sYour license key doesn\'t match your current domain%2$s. This is most likely due to a change in the domain URL of your site (including HTTPS/SSL migration). Please deactivate the license and then reactivate it again.', 'elementor-pro' ),
					'<strong>',
					'</strong>'
				),
				'button_text' => esc_html__( 'Reactivate License', 'elementor-pro' ),
				'button_url' => $license_page_link,
			],
			API::STATUS_SITE_INACTIVE => [
				'title' => esc_html__( 'License Mismatch', 'elementor-pro' ),
				'description' => sprintf(
					/* translators: 1: Bold text Open Tag, 2: Bold text closing tag. */
					esc_html__( '%1$sYour license key doesn\'t match your current domain%2$s. This is most likely due to a change in the domain URL. Please deactivate the license and then reactivate it again.', 'elementor-pro' ),
					'<strong>',
					'</strong>'
				),
				'button_text' => esc_html__( 'Reactivate License', 'elementor-pro' ),
				'button_url' => $license_page_link,
			],
		];
	}

	public static function deactivate() {
		API::deactivate_license();

		delete_option( self::LICENSE_KEY_OPTION_NAME );
		delete_option( self::LICENSE_DATA_OPTION_NAME );
		delete_option( self::LICENSE_DATA_FALLBACK_OPTION_NAME );
	}

	private static function get_hidden_license_key() {
		$input_string = self::get_license_key();

		$start = 5;
		$length = mb_strlen( $input_string ) - $start - 5;

		$mask_string = preg_replace( '/\S/', 'X', $input_string );
		$mask_string = mb_substr( $mask_string, $start, $length );
		$input_string = substr_replace( $input_string, $mask_string, $start, $length );

		return $input_string;
	}

	public static function get_updater_instance() {
		if ( null === self::$updater ) {
			self::$updater = new Updater();
		}

		return self::$updater;
	}

	public static function get_license_key() {
		return 'activated';
	}

	public static function set_license_key( $license_key ) {
		return update_option( self::LICENSE_KEY_OPTION_NAME, 'activated' );
	}

	public function action_activate_license() {
		check_admin_referer( 'elementor-pro-license' );





		$license_key = 'activated';

		$data = API::activate_license( $license_key );



		if ( API::STATUS_VALID !== $data['license'] ) {
			$error_msg = API::get_error_message( $data['error'] );
			wp_die( wp_kses_post( $error_msg ), esc_html__( 'Elementor Pro', 'elementor-pro' ), [
				'back_link' => true,
			] );
		}

		self::set_license_key( $license_key );
		API::set_license_data( $data );

		wp_safe_redirect( $_POST['_wp_http_referer'] );
		die;
	}

	public function action_deactivate_license() {
		check_admin_referer( 'elementor-pro-license' );

		$this->deactivate();

		wp_safe_redirect( $_POST['_wp_http_referer'] );
		die;
	}

	public function register_page() {
		$menu_text = esc_html__( 'License', 'elementor-pro' );

		add_submenu_page(
			Settings::PAGE_ID,
			$menu_text,
			$menu_text,
			'manage_options',
			self::PAGE_ID,
			[ $this, 'display_page' ]
		);
	}

	public static function get_url() {
		return admin_url( 'admin.php?page=' . self::PAGE_ID );
	}

	public function display_page() {
		$license_key = self::get_license_key();

		$is_manual_mode = ( isset( $_GET['mode'] ) && 'manually' === $_GET['mode'] );

		if ( $is_manual_mode ) {
			$this->render_manually_activation_widget( $license_key );
			return;
		}

		?>
		<div class="wrap elementor-admin-page-license">
			<h2 class="wp-heading-inline"><?php echo esc_html__( 'License Settings', 'elementor-pro' ); ?></h2>

			<form class="elementor-license-box" method="post" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>">
				<?php wp_nonce_field( 'elementor-pro-license' ); ?>

				<?php if ( empty( $license_key ) ) : ?>

					<h3><?php echo esc_html__( 'Activate License', 'elementor-pro' ); ?></h3>

					<p><?php
						// PHPCS - It's already escaped.
						echo wp_kses_post( $this->get_activate_message() ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
					?></p>

					<div class="elementor-box-action">
						<a class="button button-primary" href="<?php echo esc_url( $this->get_connect_url() ); ?>">
							<?php echo esc_html__( 'Connect & Activate', 'elementor-pro' ); ?>
						</a>
					</div>
				<?php else :
					$license_data = API::get_license_data( true ); ?>
					<h3><?php echo esc_html__( 'Status', 'elementor-pro' ); ?>:
						<?php if ( API::STATUS_EXPIRED === $license_data['license'] ) : ?>
							<span style="color: #ff0000; font-style: italic;"><?php echo esc_html__( 'Expired', 'elementor-pro' ); ?></span>
						<?php elseif ( API::STATUS_SITE_INACTIVE === $license_data['license'] ) : ?>
							<span style="color: #ff0000; font-style: italic;"><?php echo esc_html__( 'Mismatch', 'elementor-pro' ); ?></span>
						<?php elseif ( API::STATUS_INVALID === $license_data['license'] ) : ?>
							<span style="color: #ff0000; font-style: italic;"><?php echo esc_html__( 'Invalid', 'elementor-pro' ); ?></span>
						<?php elseif ( API::STATUS_DISABLED === $license_data['license'] ) : ?>
							<span style="color: #ff0000; font-style: italic;"><?php echo esc_html__( 'Disabled', 'elementor-pro' ); ?></span>
						<?php else : ?>
							<span style="color: #008000; font-style: italic;"><?php echo esc_html__( 'Active', 'elementor-pro' ); ?></span>
						<?php endif; ?>

						<small>
							<a class="button" href="https://go.elementor.com/my-account/">
								<?php echo esc_html__( 'My Account', 'elementor-pro' ); ?>
							</a>
						</small>
					</h3>

					<?php if ( API::STATUS_EXPIRED === $license_data['license'] ) : ?>
						<p class="e-row-divider-bottom elementor-admin-alert elementor-alert-danger">
							<?php printf(
								/* translators: 1: Bold text Open Tag, 2: Bold text closing tag, 3: Link open tag, 4: Link closing tag. */
								esc_html__( '%1$sYour License Has Expired.%2$s %3$sRenew your license today%4$s to keep getting feature updates, premium support and unlimited access to the template library.', 'elementor-pro' ),
								'<strong>',
								'</strong>',
								'<a href="https://go.elementor.com/renew/" target="_blank">',
								'</a>'
							); ?>
						</p>
					<?php endif; ?>

					<?php if ( API::STATUS_SITE_INACTIVE === $license_data['license'] ) : ?>
						<p class="e-row-divider-bottom elementor-admin-alert elementor-alert-danger">
							<?php printf(
								/* translators: 1: Bold text Open Tag, 2: Bold text closing tag. */
								esc_html__( '%1$sYour license key doesn\'t match your current domain%2$s. This is most likely due to a change in the domain URL of your site (including HTTPS/SSL migration). Please deactivate the license and then reactivate it again.', 'elementor-pro' ),
								'<strong>',
								'</strong>'
							); ?>
						</p>
					<?php endif; ?>

					<?php if ( API::STATUS_INVALID === $license_data['license'] ) : ?>
						<p class="e-row-divider-bottom elementor-admin-alert elementor-alert-info">
							<?php printf(
								/* translators: 1: Bold text Open Tag, 2: Bold text closing tag. */
								esc_html__( '%1$sYour license key doesn\'t match your current domain%2$s. This is most likely due to a change in the domain URL of your site (including HTTPS/SSL migration). Please deactivate the license and then reactivate it again.', 'elementor-pro' ),
								'<strong>',
								'</strong>'
							); ?>
						</p>
					<?php endif; ?>

					<p class="e-row-stretch e-row-divider-bottom">
						<span>
						<?php
						$connected_user = $this->get_connected_account();

						if ( $connected_user ) :
							echo sprintf(
								esc_html__( 'You\'re connected as %s.', 'elementor-pro' ),
								'<strong>' . esc_attr( $this->get_connected_account() ) . '</strong>'
							);
						endif;
						?>

						<?php echo esc_html__( 'Want to activate this website by a different license?', 'elementor-pro' ); ?>
						</span>
						<a class="button button-primary" href="<?php echo esc_url( $this->get_switch_license_url() ); ?>">
							<?php echo esc_html__( 'Switch Account', 'elementor-pro' ); ?>
						</a>
					</p>

					<p class="e-row-stretch">
						<span><?php echo esc_html__( 'Want to deactivate the license for any reason?', 'elementor-pro' ); ?></span>
						<a class="button" href="<?php echo esc_url( $this->get_deactivate_url() ); ?>">
							<?php echo esc_html__( 'Disconnect', 'elementor-pro' ); ?>
						</a>
					</p>
				<?php endif; ?>
			</form>
		</div>
		<?php
	}

	private function is_block_editor_page() {
		$current_screen = get_current_screen();

		if ( method_exists( $current_screen, 'is_block_editor' ) && $current_screen->is_block_editor() ) {
			return true;
		}

		if ( function_exists( 'is_gutenberg_page' ) && is_gutenberg_page() ) {
			return true;
		}

		return false;
	}

	/**
	 * @deprecated 2.9.0 Use ElementorPro\License\API::is_license_about_to_expire() instead
	 *
	 * @return bool
	 */
	public function is_license_about_to_expire() {
		return Api::is_license_about_to_expire();
	}

	public function admin_license_details() {
		if ( ! current_user_can( 'manage_options' ) ) {
			return;
		}

		if ( $this->is_block_editor_page() ) {
			return;
		}

		$renew_url = API::RENEW_URL;

		$license_key = self::get_license_key();

		/**
		 * @var Admin_Notices $admin_notices
		 */
		$admin_notices = Plugin::elementor()->admin->get_component( 'admin-notices' );

		if ( empty( $license_key ) ) {
			$admin_notices->print_admin_notice( [
				'title' => esc_html__( 'Welcome to Elementor Pro!', 'elementor-pro' ),
				'description' => $this->get_activate_message(),
				'button' => [
					'text' => '<i class="dashicons dashicons-update" aria-hidden="true"></i>' . esc_html__( 'Connect & Activate', 'elementor-pro' ),
					'url' => $this->get_connect_url(),
				],
			] );

			return;
		}

		$license_data = API::get_license_data();
		if ( empty( $license_data['license'] ) ) {
			return;
		}

		// When the license with pro trial, the messages here are not relevant, pro trial messages will be shown instead.
		if ( API::is_licence_pro_trial() ) {
			return;
		}

		$errors = self::get_errors_details();

		if ( isset( $errors[ $license_data['license'] ] ) ) {
			$error_data = $errors[ $license_data['license'] ];

			$admin_notices->print_admin_notice( [
				'title' => $error_data['title'],
				'description' => $error_data['description'],
				'button' => [
					'text' => $error_data['button_text'],
					'url' => $error_data['button_url'],
				],
			] );

			return;
		}

		if ( API::is_license_active() ) {
			if ( API::is_license_about_to_expire() ) {
				$title = sprintf( esc_html__( 'Your License Will Expire in %s.', 'elementor-pro' ), human_time_diff( current_time( 'timestamp' ), strtotime( $license_data['expires'] ) ) );

				if ( isset( $license_data['renewal_discount'] ) && 0 < $license_data['renewal_discount'] ) {
					$description = sprintf(
						/* translators: 1: Link open tag, 2: Link closing tag, 3: Discount percent */
						esc_html__( '%1$sRenew your license today%2$s, and get an exclusive, time-limited %3$s discount.', 'elementor-pro' ),
						sprintf( '<a href="%s" target="_blank">', $renew_url ),
						'</a>',
						$license_data['renewal_discount'] . '%'
					);
				} else {
					$description = sprintf(
						/* translators: 1: Link open tag, 2: Link closing tag. */
						esc_html__( '%1$sRenew now and enjoy updates%2$s, support and Pro templates for another year.', 'elementor-pro' ),
						sprintf( '<a href="%s" target="_blank">', $renew_url ),
						'</a>'
					);
				}

				$admin_notices->print_admin_notice( [
					'title' => $title,
					'description' => $description,
					'button' => [
						'text' => esc_html__( 'Renew License', 'elementor-pro' ),
						'url' => $renew_url,
					],
				] );
			}
		}
	}

	public function filter_library_get_templates_args( $body_args ) {
		$license_key = self::get_license_key();

		if ( ! empty( $license_key ) ) {
			$body_args['license'] = $license_key;
			$body_args['url'] = home_url();
		}

		return $body_args;
	}

	public function handle_tracker_actions() {
		// Show tracker notice after 24 hours from Pro installed time.
		$is_need_to_show = ( $this->get_installed_time() < strtotime( '-24 hours' ) );

		$is_dismiss_notice = ( '1' === get_option( 'elementor_tracker_notice' ) );
		$is_dismiss_pro_notice = ( '1' === get_option( 'elementor_pro_tracker_notice' ) );

		if ( $is_need_to_show && $is_dismiss_notice && ! $is_dismiss_pro_notice ) {
			delete_option( 'elementor_tracker_notice' );
		}

		if ( ! isset( $_GET['elementor_tracker'] ) ) {
			return;
		}

		if ( 'opt_out' === $_GET['elementor_tracker'] ) {
			update_option( 'elementor_pro_tracker_notice', '1' );
		}
	}

	private function get_installed_time() {
		$installed_time = get_option( '_elementor_pro_installed_time' );

		if ( ! $installed_time ) {
			$installed_time = time();
			update_option( '_elementor_pro_installed_time', $installed_time );
		}

		return $installed_time;
	}

	public function plugin_action_links( $links ) {
		$license_key = self::get_license_key();

		if ( empty( $license_key ) ) {
			$links['active_license'] = sprintf( '<a href="%s" class="elementor-plugins-gopro">%s</a>', self::get_connect_url(), esc_html__( 'Connect & Activate', 'elementor-pro' ) );
		}

		return $links;
	}

	private function handle_dashboard_admin_widget() {
		add_action( 'elementor/admin/dashboard_overview_widget/after_version', function() {
			/* translators: %s: Elementor Pro version. */
			$label = sprintf( esc_html__( 'Elementor Pro v%s', 'elementor-pro' ), ELEMENTOR_PRO_VERSION );

			echo '<span class="e-overview__version">';
			Utils::print_unescaped_internal_string( $label );
			echo '</span>';
		} );

		add_filter( 'elementor/admin/dashboard_overview_widget/footer_actions', function( $additions_actions ) {
			unset( $additions_actions['go-pro'] );

			// Keep Visible to administrator role or for the Pro license owner, remove for non-owner lower-level user types.
			if ( ! current_user_can( 'manage_options' ) && isset( $additions_actions['find_an_expert'] ) ) {
				unset( $additions_actions['find_an_expert'] );
			}

			return $additions_actions;
		}, 550 );
	}

	public function add_finder_item( array $categories ) {
		$categories['settings']['items']['license'] = [
			'title' => esc_html__( 'License', 'elementor-pro' ),
			'url' => self::get_url(),
		];

		return $categories;
	}

	private function render_manually_activation_widget( $license_key ) {
		?>
		<div class="wrap elementor-admin-page-license">
			<h2><?php echo esc_html__( 'License Settings', 'elementor-pro' ); ?></h2>

			<form class="elementor-license-box" method="post" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>">
				<?php wp_nonce_field( 'elementor-pro-license' ); ?>

				<h3>
					<?php echo esc_html__( 'Activate Manually', 'elementor-pro' ); ?>
					<?php if ( empty( $license_key ) ) : ?>
						<small>
							<a href="<?php echo esc_url( $this->get_connect_url() ); ?>" class="elementor-connect-link">
								<?php echo esc_html__( 'Connect & Activate', 'elementor-pro' ); ?>
							</a>
						</small>
					<?php endif; ?>
				</h3>

				<?php if ( empty( $license_key ) ) : ?>

					<p><?php echo esc_html__( 'Enter your license key here, to activate Elementor Pro, and get feature updates, premium support and unlimited access to the template library.', 'elementor-pro' ); ?></p>

					<ol>
						<li>
							<?php printf(
								/* translators: 1: Link open tag, 2: Link closing tag. */
								esc_html__( 'Log in to %1$syour account%2$s to get your license key.', 'elementor-pro' ),
								'<a href="https://go.elementor.com/my-license/" target="_blank">',
								'</a>'
							); ?>
						</li>
						<li>
							<?php printf(
								/* translators: 1: Link open tag, 2: Link closing tag. */
								esc_html__( 'If you don\'t yet have a license key, %1$sget Elementor Pro now%2$s.', 'elementor-pro' ),
								'<a href="https://go.elementor.com/pro-license/" target="_blank">',
								'</a>'
							); ?>
						</li>
						<li>
							<?php echo esc_html__( 'Copy the license key from your account and paste it below.', 'elementor-pro' ); ?>
						</li>
					</ol>

					<input type="hidden" name="action" value="elementor_pro_activate_license"/>

					<label for="elementor-pro-license-key"><?php echo esc_html__( 'Your License Key', 'elementor-pro' ); ?></label>

					<input id="elementor-pro-license-key" class="regular-text code" name="elementor_pro_license_key" type="text" value="" placeholder="<?php esc_attr_e( 'Please enter your license key here', 'elementor-pro' ); ?>"/>

					<input type="submit" class="button button-primary" value="<?php esc_attr_e( 'Activate', 'elementor-pro' ); ?>"/>

					<p class="description"><?php printf( esc_html__( 'Your license key should look something like this: %s', 'elementor-pro' ), '<code>fb351f05958872E193feb37a505a84be</code>' ); ?></p>

				<?php else :
					$license_data = API::get_license_data( true ); ?>
					<input type="hidden" name="action" value="elementor_pro_deactivate_license"/>

					<label for="elementor-pro-license-key"><?php echo esc_html__( 'Your License Key', 'elementor-pro' ); ?>:</label>

					<input id="elementor-pro-license-key" class="regular-text code" type="text" value="<?php echo esc_attr( self::get_hidden_license_key() ); ?>" disabled/>

					<input type="submit" class="button" value="<?php esc_attr_e( 'Deactivate', 'elementor-pro' ); ?>"/>

					<p>
						<?php echo esc_html__( 'Status', 'elementor-pro' ); ?>:
						<?php if ( API::STATUS_EXPIRED === $license_data['license'] ) : ?>
							<span style="color: #ff0000; font-style: italic;"><?php echo esc_html__( 'Expired', 'elementor-pro' ); ?></span>
						<?php elseif ( API::STATUS_SITE_INACTIVE === $license_data['license'] ) : ?>
							<span style="color: #ff0000; font-style: italic;"><?php echo esc_html__( 'Mismatch', 'elementor-pro' ); ?></span>
						<?php elseif ( API::STATUS_INVALID === $license_data['license'] ) : ?>
							<span style="color: #ff0000; font-style: italic;"><?php echo esc_html__( 'Invalid', 'elementor-pro' ); ?></span>
						<?php elseif ( API::STATUS_DISABLED === $license_data['license'] ) : ?>
							<span style="color: #ff0000; font-style: italic;"><?php echo esc_html__( 'Disabled', 'elementor-pro' ); ?></span>
						<?php else : ?>
							<span style="color: #008000; font-style: italic;"><?php echo esc_html__( 'Active', 'elementor-pro' ); ?></span>
						<?php endif; ?>
					</p>

					<?php if ( API::STATUS_EXPIRED === $license_data['license'] ) : ?>
						<p class="elementor-admin-alert elementor-alert-danger">
							<?php printf(
								/* translators: 1: Bold text Open Tag, 2: Bold text closing tag, 3: Link open tag, 4: Link closing tag. */
								esc_html__( '%1$sYour License Has Expired.%2$s %3$sRenew your license today%4$s to keep getting feature updates, premium support and unlimited access to the template library.', 'elementor-pro' ),
								'<a href="https://go.elementor.com/renew/" target="_blank">',
								'</a>'
							); ?>
						</p>
					<?php endif; ?>

					<?php if ( API::STATUS_SITE_INACTIVE === $license_data['license'] ) : ?>
						<p class="elementor-admin-alert elementor-alert-danger">
							<?php printf(
								/* translators: 1: Bold text Open Tag, 2: Bold text closing tag. */
								esc_html__( '%1$sYour license key doesn\'t match your current domain%2$s. This is most likely due to a change in the domain URL of your site (including HTTPS/SSL migration). Please deactivate the license and then reactivate it again.', 'elementor-pro' ),
								'<strong>',
								'</strong>'
							); ?>
						</p>
					<?php endif; ?>

					<?php if ( API::STATUS_INVALID === $license_data['license'] ) : ?>
						<p class="elementor-admin-alert elementor-alert-info">
							<?php printf(
								/* translators: 1: Bold text Open Tag, 2: Bold text closing tag. */
								esc_html__( '%1$sYour license key doesn\'t match your current domain%2$s. This is most likely due to a change in the domain URL of your site (including HTTPS/SSL migration). Please deactivate the license and then reactivate it again.', 'elementor-pro' ),
								'<strong>',
								'</strong>'
							); ?>
						</p>
					<?php endif; ?>
				<?php endif; ?>
			</form>
		</div>
		<?php
	}

	public function on_deactivate_plugin( $plugin ) {
		if ( ELEMENTOR_PRO_PLUGIN_BASE !== $plugin ) {
			return;
		}

		wp_remote_post( 'https://my.elementor.com/api/v1/feedback-pro/', [
			'timeout' => 30,
			'body' => [
				'api_version' => ELEMENTOR_PRO_VERSION,
				'site_lang' => get_bloginfo( 'language' ),
			],
		] );
	}

	private function is_connected() {
		return $this->get_app()->is_connected();
	}

	public function get_connect_url( $params = [] ) {
		$action = $this->is_connected() ? 'activate_pro' : 'authorize';

		return $this->get_app()->get_admin_url( $action, $params );
	}

	private function get_switch_license_url() {
		return $this->get_app()->get_admin_url( 'switch_license' );
	}

	private function get_connected_account() {
		$user = $this->get_app()->get( 'user' );
		$email = '';
		if ( $user ) {
			$email = $user->email;
		}
		return $email;
	}

	private function get_deactivate_url() {
		return $this->get_app()->get_admin_url( 'deactivate' );
	}

	private function get_activate_message() {
		return esc_html__( 'Please activate your license to get feature updates, premium support and unlimited access to the template library.', 'elementor-pro' );
	}

	/**
	 * @return Activate
	 */
	private function get_app() {
		return Plugin::elementor()->common->get_component( 'connect' )->get_app( 'activate' );
	}

	public function __construct() {
		add_action( 'admin_menu', [ $this, 'register_page' ], 800 );
		add_action( 'admin_init', [ $this, 'handle_tracker_actions' ], 9 );
		add_action( 'admin_post_elementor_pro_activate_license', [ $this, 'action_activate_license' ] );
		add_action( 'admin_post_elementor_pro_deactivate_license', [ $this, 'action_deactivate_license' ] );

		add_action( 'admin_notices', [ $this, 'admin_license_details' ], 20 );

		add_filter( 'elementor/core/admin/notices', function( $notices ) {
			$notices[] = new Trial_Period_Notice();
			$notices[] = new Trial_Expired_Notice();

			return $notices;
		} );

		add_action( 'deactivate_plugin', [ $this, 'on_deactivate_plugin' ] );

		// Add the license key to Templates Library requests
		add_filter( 'elementor/api/get_templates/body_args', [ $this, 'filter_library_get_templates_args' ] );
		add_filter( 'elementor/finder/categories', [ $this, 'add_finder_item' ] );
		add_filter( 'plugin_action_links_' . ELEMENTOR_PRO_PLUGIN_BASE, [ $this, 'plugin_action_links' ], 50 );

		$this->handle_dashboard_admin_widget();

		self::get_updater_instance();
	}
}
license/updater.php000064400000015454150755004310010354 0ustar00<?php
namespace ElementorPro\License;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Updater {

	public $plugin_version;
	public $plugin_name;
	public $plugin_slug;

	private $response_transient_key;

	public function __construct() {
		$this->plugin_version = ELEMENTOR_PRO_VERSION;
		$this->plugin_name = ELEMENTOR_PRO_PLUGIN_BASE;
		$this->plugin_slug = basename( ELEMENTOR_PRO__FILE__, '.php' );
		$this->response_transient_key = md5( sanitize_key( $this->plugin_name ) . 'response_transient' );

		$this->setup_hooks();
		$this->maybe_delete_transients();
	}

	private function setup_hooks() {
		add_filter( 'pre_set_site_transient_update_plugins', [ $this, 'check_update' ], 50 );
		add_action( 'delete_site_transient_update_plugins', [ $this, 'delete_transients' ] );
		add_filter( 'plugins_api', [ $this, 'plugins_api_filter' ], 10, 3 );

		remove_action( 'after_plugin_row_' . $this->plugin_name, 'wp_plugin_update_row' );
		add_action( 'after_plugin_row_' . $this->plugin_name, [ $this, 'show_update_notification' ], 10, 2 );

		add_action( 'update_option_WPLANG', function () {
			$this->clean_get_version_cache();
		} );

		add_action( 'upgrader_process_complete', function () {
			$this->clean_get_version_cache();
		} );
	}

	public function delete_transients() {
		$this->delete_transient( $this->response_transient_key );
	}

	private function maybe_delete_transients() {
		global $pagenow;

		if ( 'update-core.php' === $pagenow && isset( $_GET['force-check'] ) ) {
			$this->delete_transients();
		}
	}

	private function check_transient_data( $_transient_data ) {
		if ( ! is_object( $_transient_data ) ) {
			$_transient_data = new \stdClass();
		}

		if ( empty( $_transient_data->checked ) ) {
			return $_transient_data;
		}

		$version_info = API::get_version( false /* Use Cache */ );

		if ( is_wp_error( $version_info ) ) {
			return $_transient_data;
		}

		// include an unmodified $wp_version
		include( ABSPATH . WPINC . '/version.php' );

		if ( version_compare( $wp_version, $version_info['requires'], '<' ) ) {
			return $_transient_data;
		}

		if ( ! empty( $version_info['elementor_requires'] ) ) {
			if ( version_compare( ELEMENTOR_VERSION, $version_info['elementor_requires'], '<' ) ) {
				return $_transient_data;
			}
		}

		if ( version_compare( $this->plugin_version, $version_info['new_version'], '<' ) ) {
			$plugin_info = (object) $version_info;
			unset( $plugin_info->sections );

			$_transient_data->response[ $this->plugin_name ] = $plugin_info;
		}

		$_transient_data->last_checked = current_time( 'timestamp' );
		$_transient_data->checked[ $this->plugin_name ] = $this->plugin_version;

		if ( ! isset( $_transient_data->translations ) ) {
			$_transient_data->translations = [];
		}

		$_transient_data->translations = array_filter( $_transient_data->translations, function( $translation ) {
			return ( $translation['slug'] !== $this->plugin_slug );
		} );

		if ( ! empty( $version_info['translations'] ) ) {
			foreach ( $version_info['translations'] as $translation ) {
				$_transient_data->translations[] = [
					'type' => 'plugin',
					'slug' => $this->plugin_slug,
					'language' => $translation['language'],
					'version' => $version_info['new_version'],
					'updated' => $translation['updated'],
					'package' => $translation['package'],
					'autoupdate' => true,
				];
			}
		}

		return $_transient_data;
	}

	public function check_update( $_transient_data ) {
		global $pagenow;

		if ( ! is_object( $_transient_data ) ) {
			$_transient_data = new \stdClass();
		}

		if ( 'plugins.php' === $pagenow && is_multisite() ) {
			return $_transient_data;
		}

		return $this->check_transient_data( $_transient_data );
	}

	public function plugins_api_filter( $_data, $_action = '', $_args = null ) {
		if ( 'plugin_information' !== $_action ) {
			return $_data;
		}

		if ( ! isset( $_args->slug ) || ( $_args->slug !== $this->plugin_slug ) ) {
			return $_data;
		}

		$cache_key = 'elementor_pro_api_request_' . substr( md5( serialize( $this->plugin_slug ) ), 0, 15 );

		$api_request_transient = get_site_transient( $cache_key );

		if ( empty( $api_request_transient ) ) {
			$api_response = API::get_version();

			if ( is_wp_error( $api_response ) ) {
				return $_data;
			}

			$api_request_transient = new \stdClass();

			$api_request_transient->name = 'Elementor Pro';
			$api_request_transient->slug = $this->plugin_slug;
			$api_request_transient->author = '<a href="https://elementor.com/">Elementor.com</a>';
			$api_request_transient->homepage = 'https://elementor.com/';
			$api_request_transient->requires = $api_response['requires'];
			$api_request_transient->tested = $api_response['tested'];

			$api_request_transient->version = $api_response['new_version'];
			$api_request_transient->last_updated = $api_response['last_updated'];
			$api_request_transient->download_link = $api_response['download_link'];
			$api_request_transient->banners = [
				'high' => 'https://ps.w.org/elementor/assets/banner-1544x500.png?rev=1494133',
				'low' => 'https://ps.w.org/elementor/assets/banner-1544x500.png?rev=1494133',
			];

			$api_request_transient->sections = unserialize( $api_response['sections'] );

			// Expires in 1 day
			set_site_transient( $cache_key, $api_request_transient, DAY_IN_SECONDS );
		}

		$_data = $api_request_transient;

		return $_data;
	}

	public function show_update_notification( $file, $plugin ) {
		if ( is_network_admin() ) {
			return;
		}

		if ( ! current_user_can( 'update_plugins' ) ) {
			return;
		}

		if ( ! is_multisite() ) {
			return;
		}

		if ( $this->plugin_name !== $file ) {
			return;
		}

		// Remove our filter on the site transient
		remove_filter( 'pre_set_site_transient_update_plugins', [ $this, 'check_update' ] );

		$update_cache = get_site_transient( 'update_plugins' );
		$update_cache = $this->check_transient_data( $update_cache );
		set_site_transient( 'update_plugins', $update_cache );

		// Restore our filter
		add_filter( 'pre_set_site_transient_update_plugins', [ $this, 'check_update' ] );
	}

	protected function get_transient( $cache_key ) {
		$cache_data = get_option( $cache_key );

		if ( empty( $cache_data['timeout'] ) || current_time( 'timestamp' ) > $cache_data['timeout'] ) {
			// Cache is expired.
			return false;
		}

		return $cache_data['value'];
	}

	protected function set_transient( $cache_key, $value, $expiration = 0 ) {
		if ( empty( $expiration ) ) {
			$expiration = strtotime( '+12 hours', current_time( 'timestamp' ) );
		}

		$data = [
			'timeout' => $expiration,
			'value' => $value,
		];

		update_option( $cache_key, $data, 'no' );
	}

	protected function delete_transient( $cache_key ) {
		delete_option( $cache_key );
	}

	private function clean_get_version_cache() {
		// Since `API::get_version` holds the old language.
		$cache_key = API::TRANSIENT_KEY_PREFIX . ELEMENTOR_PRO_VERSION;

		delete_option( $cache_key );
	}
}
plugin.php000064400000025267150755004310006567 0ustar00<?php
namespace ElementorPro;

use ElementorPro\Core\Admin\Admin;
use ElementorPro\Core\App\App;
use ElementorPro\Core\Connect;
use Elementor\Core\Responsive\Files\Frontend as FrontendFile;
use Elementor\Utils;
use ElementorPro\Core\Editor\Editor;
use ElementorPro\Core\Modules_Manager;
use ElementorPro\Core\Preview\Preview;
use ElementorPro\Core\Upgrade\Manager as UpgradeManager;
use ElementorPro\License\API;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Main class plugin
 */
class Plugin {

	/**
	 * @var Plugin
	 */
	private static $_instance;

	/**
	 * @var Modules_Manager
	 */
	public $modules_manager;

	/**
	 * @var UpgradeManager
	 */
	public $upgrade;

	/**
	 * @var Editor
	 */
	public $editor;

	/**
	 * @var Preview
	 */
	public $preview;

	/**
	 * @var Admin
	 */
	public $admin;

	/**
	 * @var App
	 */
	public $app;

	/**
	 * @var License\Admin
	 */
	public $license_admin;

	private $classes_aliases = [
		'ElementorPro\Modules\PanelPostsControl\Module' => 'ElementorPro\Modules\QueryControl\Module',
		'ElementorPro\Modules\PanelPostsControl\Controls\Group_Control_Posts' => 'ElementorPro\Modules\QueryControl\Controls\Group_Control_Posts',
		'ElementorPro\Modules\PanelPostsControl\Controls\Query' => 'ElementorPro\Modules\QueryControl\Controls\Query',
	];

	/**
	 * Throw error on object clone
	 *
	 * The whole idea of the singleton design pattern is that there is a single
	 * object therefore, we don't want the object to be cloned.
	 *
	 * @since 1.0.0
	 * @return void
	 */
	public function __clone() {
		// Cloning instances of the class is forbidden
		_doing_it_wrong( __FUNCTION__, esc_html__( 'Something went wrong.', 'elementor-pro' ), '1.0.0' );
	}

	/**
	 * Disable unserializing of the class
	 *
	 * @since 1.0.0
	 * @return void
	 */
	public function __wakeup() {
		// Unserializing instances of the class is forbidden
		_doing_it_wrong( __FUNCTION__, esc_html__( 'Something went wrong.', 'elementor-pro' ), '1.0.0' );
	}

	/**
	 * @return \Elementor\Plugin
	 */

	public static function elementor() {
		return \Elementor\Plugin::$instance;
	}

	/**
	 * @return Plugin
	 */
	public static function instance() {
		if ( is_null( self::$_instance ) ) {
			self::$_instance = new self();
		}

		return self::$_instance;
	}

	public function autoload( $class ) {
		if ( 0 !== strpos( $class, __NAMESPACE__ ) ) {
			return;
		}

		$has_class_alias = isset( $this->classes_aliases[ $class ] );

		// Backward Compatibility: Save old class name for set an alias after the new class is loaded
		if ( $has_class_alias ) {
			$class_alias_name = $this->classes_aliases[ $class ];
			$class_to_load = $class_alias_name;
		} else {
			$class_to_load = $class;
		}

		if ( ! class_exists( $class_to_load ) ) {
			$filename = strtolower(
				preg_replace(
					[ '/^' . __NAMESPACE__ . '\\\/', '/([a-z])([A-Z])/', '/_/', '/\\\/' ],
					[ '', '$1-$2', '-', DIRECTORY_SEPARATOR ],
					$class_to_load
				)
			);
			$filename = ELEMENTOR_PRO_PATH . $filename . '.php';

			if ( is_readable( $filename ) ) {
				include( $filename );
			}
		}

		if ( $has_class_alias ) {
			class_alias( $class_alias_name, $class );
		}
	}

	public function enqueue_styles() {
		$suffix = $this->get_assets_suffix();

		$direction_suffix = is_rtl() ? '-rtl' : '';

		$frontend_file_name_base = $this->is_optimized_css_mode() ? 'frontend-lite' : 'frontend';

		$frontend_file_name = $frontend_file_name_base . $direction_suffix . $suffix . '.css';

		$has_custom_file = self::elementor()->breakpoints->has_custom_breakpoints();

		if ( $has_custom_file ) {
			$frontend_file = new FrontendFile( 'custom-pro-' . $frontend_file_name, self::get_responsive_templates_path() . $frontend_file_name );

			$time = $frontend_file->get_meta( 'time' );

			if ( ! $time ) {
				$frontend_file->update();
			}

			$frontend_file_url = $frontend_file->get_url();
		} else {
			$frontend_file_url = ELEMENTOR_PRO_ASSETS_URL . 'css/' . $frontend_file_name;
		}

		wp_enqueue_style(
			'elementor-pro',
			$frontend_file_url,
			[],
			$has_custom_file ? null : ELEMENTOR_PRO_VERSION
		);
	}

	public function enqueue_frontend_scripts() {
		$suffix = $this->get_assets_suffix();

		wp_enqueue_script(
			'elementor-pro-frontend',
			ELEMENTOR_PRO_URL . 'assets/js/frontend' . $suffix . '.js',
			$this->get_frontend_depends(),
			ELEMENTOR_PRO_VERSION,
			true
		);

		if ( self::elementor()->experiments->is_feature_active( 'e_optimized_assets_loading' ) ) {
			wp_enqueue_script( 'pro-elements-handlers' );
		} else {
			wp_enqueue_script( 'pro-preloaded-elements-handlers' );
		}

		$locale_settings = [
			'ajaxurl' => admin_url( 'admin-ajax.php' ),
			'nonce' => wp_create_nonce( 'elementor-pro-frontend' ),
			'urls' => [
				'assets' => apply_filters( 'elementor_pro/frontend/assets_url', ELEMENTOR_PRO_ASSETS_URL ),
				'rest' => get_rest_url(),
			],
		];

		/**
		 * Localize frontend settings.
		 *
		 * Filters the frontend localized settings.
		 *
		 * @since 1.0.0
		 *
		 * @param array $locale_settings Localized settings.
		 */
		$locale_settings = apply_filters( 'elementor_pro/frontend/localize_settings', $locale_settings );

		Utils::print_js_config(
			'elementor-pro-frontend',
			'ElementorProFrontendConfig',
			$locale_settings
		);

		if ( $this->is_assets_loader_exist() ) {
			$this->register_assets();
		}
	}

	public function register_frontend_scripts() {
		$suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';

		wp_register_script(
			'elementor-pro-webpack-runtime',
			ELEMENTOR_PRO_URL . 'assets/js/webpack-pro.runtime' . $suffix . '.js',
			[],
			ELEMENTOR_PRO_VERSION,
			true
		);

		wp_register_script(
			'pro-elements-handlers',
			ELEMENTOR_PRO_URL . 'assets/js/elements-handlers' . $suffix . '.js',
			[
				'elementor-frontend',
			],
			ELEMENTOR_PRO_VERSION,
			true
		);

		wp_register_script(
			'pro-preloaded-elements-handlers',
			ELEMENTOR_PRO_URL . 'assets/js/preloaded-elements-handlers' . $suffix . '.js',
			[
				'elementor-frontend',
			],
			ELEMENTOR_PRO_VERSION,
			true
		);

		wp_register_script(
			'smartmenus',
			ELEMENTOR_PRO_URL . 'assets/lib/smartmenus/jquery.smartmenus' . $suffix . '.js',
			[
				'jquery',
			],
			'1.0.1',
			true
		);

		if ( ! $this->is_assets_loader_exist() ) {
			wp_register_script(
				'elementor-sticky',
				ELEMENTOR_PRO_URL . 'assets/lib/sticky/jquery.sticky' . $suffix . '.js',
				[
					'jquery',
				],
				ELEMENTOR_PRO_VERSION,
				true
			);
		}
	}

	public function register_preview_scripts() {
		$suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';

		wp_enqueue_script(
			'elementor-pro-preview',
			ELEMENTOR_PRO_URL . 'assets/js/preview' . $suffix . '.js',
			[
				'elementor-frontend',
			],
			ELEMENTOR_PRO_VERSION,
			true
		);
	}

	public function get_responsive_stylesheet_templates( $templates ) {
		$templates_paths = glob( $this->get_responsive_templates_path() . '*.css' );

		foreach ( $templates_paths as $template_path ) {
			$file_name = 'custom-pro-' . basename( $template_path );

			$templates[ $file_name ] = $template_path;
		}

		return $templates;
	}

	public function on_elementor_init() {
		$this->modules_manager = new Modules_Manager();

		/** TODO: BC for Elementor v2.4.0 */
		if ( class_exists( '\Elementor\Core\Upgrade\Manager' ) ) {
			$this->upgrade = UpgradeManager::instance();
		}

		/**
		 * Elementor Pro init.
		 *
		 * Fires on Elementor Pro init, after Elementor has finished loading but
		 * before any headers are sent.
		 *
		 * @since 1.0.0
		 */
		do_action( 'elementor_pro/init' );
	}

	/**
	 * @param \Elementor\Core\Base\Document $document
	 */
	public function on_document_save_version( $document ) {
		$document->update_meta( '_elementor_pro_version', ELEMENTOR_PRO_VERSION );
	}

	private function get_frontend_depends() {
		$frontend_depends = [
			'elementor-pro-webpack-runtime',
			'elementor-frontend-modules',
		];

		if ( ! $this->is_assets_loader_exist() ) {
			$frontend_depends[] = 'elementor-sticky';
		}

		return $frontend_depends;
	}

	private function get_responsive_templates_path() {
		return ELEMENTOR_PRO_ASSETS_PATH . 'css/templates/';
	}

	private function add_subscription_template_access_level_to_settings( $settings ) {
		// Core >= 3.2.0
		if ( isset( $settings['library_connect']['current_access_level'] ) ) {
			$settings['library_connect']['current_access_level'] = API::get_library_access_level();
		}

		return $settings;
	}

	private function setup_hooks() {
		add_action( 'elementor/init', [ $this, 'on_elementor_init' ] );

		add_action( 'elementor/frontend/before_register_scripts', [ $this, 'register_frontend_scripts' ] );
		add_action( 'elementor/preview/enqueue_scripts', [ $this, 'register_preview_scripts' ] );

		add_action( 'elementor/frontend/before_enqueue_scripts', [ $this, 'enqueue_frontend_scripts' ] );
		add_action( 'elementor/frontend/after_enqueue_styles', [ $this, 'enqueue_styles' ] );

		add_filter( 'elementor/core/responsive/get_stylesheet_templates', [ $this, 'get_responsive_stylesheet_templates' ] );
		add_action( 'elementor/document/save_version', [ $this, 'on_document_save_version' ] );

		add_filter( 'elementor/editor/localize_settings', function ( $settings ) {
			return $this->add_subscription_template_access_level_to_settings( $settings );
		}, 11 /** After Elementor Core (Library) */ );
	}

	private function is_optimized_css_mode() {
		$is_optimized_css_loading = self::elementor()->experiments->is_feature_active( 'e_optimized_css_loading' );

		return ! Utils::is_script_debug() && $is_optimized_css_loading && ! self::elementor()->preview->is_preview_mode();
	}

	private function get_assets() {
		$suffix = $this->get_assets_suffix();

		return [
			'scripts' => [
				'e-sticky' => [
					'src' => ELEMENTOR_PRO_URL . 'assets/lib/sticky/jquery.sticky' . $suffix . '.js',
					'version' => ELEMENTOR_PRO_VERSION,
					'dependencies' => [
						'jquery',
					],
				],
			],
		];
	}

	private function register_assets() {
		$assets = $this->get_assets();

		if ( $assets ) {
			self::elementor()->assets_loader->add_assets( $assets );
		}
	}

	private function is_assets_loader_exist() {
		return ! ! self::elementor()->assets_loader;
	}

	/**
	 * Plugin constructor.
	 */
	private function __construct() {
		spl_autoload_register( [ $this, 'autoload' ] );

		new Connect\Manager();

		$this->setup_hooks();

		$this->editor = new Editor();

		$this->preview = new Preview();

		$this->app = new App();

		if ( is_admin() ) {
			$this->admin = new Admin();
			$this->license_admin = new License\Admin();
		}
	}

	private function get_assets_suffix() {
		return defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
	}

	final public static function get_title() {
		return esc_html__( 'Elementor Pro', 'elementor-pro' );
	}
}

if ( ! defined( 'ELEMENTOR_PRO_TESTS' ) ) {
	// In tests we run the instance manually.
	Plugin::instance();
}
karma.conf.js000064400000000660150755004310007123 0ustar00const karmaCoreConfig = require( '../elementor/karma.conf' );

module.exports = function( config ) {
	karmaCoreConfig( config );

	// Set base path.
	config.basePath = __dirname + '/../elementor/';

	// Change qunit-tests to pro.
	Object.entries( config.files ).some( ( [ key, path ] ) => {
		if ( 'assets/js/qunit-tests.js' === path ) {
			config.files[ key ] = __dirname + '/' + path;
			return true;
		}
		return false;
	} );
};
changelog.txt000064400000351220150755004310007237 0ustar00# Elementor Pro - by Elementor.com

#### 3.5.2 - 2021-11-28
* Tweak: Adjusted license mechanism to support trial period
* Fix: Updates made to Global Widgets do not reflect accordingly to linked widgets ([#16815](https://github.com/elementor/elementor/issues/16815))
* Fix: Hamburger toggle button doesn't change to “close” when menu is collapsed in Nav Menu widget when Inline Font Awesome experiment is active
* Fix: Global Widget cannot be unlinked

#### 3.5.1 - 2021-11-10
* Fix: Inline HTML elements appear as plain text in Animated Headline widget ([#16816](https://github.com/elementor/elementor/issues/16816))
* Fix: Dropdown items inherited values from Main Menu space between control in Nav Menu widget ([#16815]((https://github.com/elementor/elementor/issues/16815))
* Fix: Order Summary titles style controls not applying on various devices in Cart widget 
* Fix: Panel "Need Help" link is not correct in WooCommerce section in Site Settings

#### 3.5.0 - 2021-11-01

* New: WooCommerce Checkout widget - Fully customize the content and style of your checkout page ([#15282](https://github.com/elementor/elementor/issues/15282), [#15990](https://github.com/elementor/elementor/issues/15990), [#11014](https://github.com/elementor/elementor/issues/11014), [#13218](https://github.com/elementor/elementor/issues/13218), [#5383](https://github.com/elementor/elementor/issues/5383))
* New: WooCommerce Cart widget - Style your cart page the way you want with design flexibility ([#15282](https://github.com/elementor/elementor/issues/15282), [#11014](https://github.com/elementor/elementor/issues/11014), [#13218](https://github.com/elementor/elementor/issues/13218), [#5383](https://github.com/elementor/elementor/issues/5383))
* New: WooCommerce My Account widget - Create a custom design for your my account pages ([#11014](https://github.com/elementor/elementor/issues/11014), [#5383](https://github.com/elementor/elementor/issues/5383))
* New: Progress Tracker widget - Motivate your customers to keep reading your site content ([#16576](https://github.com/elementor/elementor/issues/16576))
* New: Meet WooCommerce Site Settings - Set your store pages within Elementor
* Experiment: Scroll Snap - Set the scene of every scroll ([#10752](https://github.com/elementor/elementor/issues/10752))
* Tweak: Changed infrastructure to prevent rendering bugs in Global Widget ([#16354](https://github.com/elementor/elementor/issues/16354))
* Tweak: Added the option to open submission in a new tab in Form Submissions ([#14967](https://github.com/elementor/elementor/issues/14967))
* Tweak: Added various responsive controls in Posts widget ([#1851](https://github.com/elementor/elementor/issues/1851))
* Tweak: Split Title and Price styling controls in Price List widget ([#7688](https://github.com/elementor/elementor/issues/7688))
* Tweak: Added various responsive capabilities to controls in Posts Archive widget
* Tweak: Adjusted Motion Effects module to support future feature
* Tweak: Changed admin notice content when Pro installed without Core installed
* Tweak: Cleanup in `wp_options` table
* Tweak: Changed Connect logic in Elementor top bar to simplify the connect process
* Tweak: Marked new Theme Builder as an Experiment and set to default for new sites
* Tweak: Enforced better security policies in various widgets and modules
* Tweak: Added load more button functionality to the Posts Archive widget
* Tweak: Renamed Elementor's responsive SCSS variables
* Tweak: Added dividers to horizontal layout in Nav Menu widget
* Tweak: Removed Google+ social network from Share Buttons widget
* Tweak: Convert usage of old Responsive class to use the new Breakpoints Manager
* Fix: jQuery in Heading doesn't work for not logged in users in Custom Code ([#14515](https://github.com/elementor/elementor/issues/14515), [#14266](https://github.com/elementor/elementor/issues/14266))
* Fix: Menu animation causing page horizontal scroll in Nav Menu widget ([#15184](https://github.com/elementor/elementor/issues/15184))
* Fix: Wrong function call in Table of Content & Post Excerpt widgets ([#16547](https://github.com/elementor/elementor/issues/16547))
* Fix: Slides to Scroll control can't be set to Default if Widescreen mode has a value in Testimonial Carousel widget
* Fix: Sticky offset not working properly when changing device mode
* Fix: UTF character issues when exporting CSV file in Form Submissions
* Fix: Load More functionality doesn't work when the Posts widget placed inside an Archive template
* Fix: UI glitches and editing issues in Video Playlist widget

#### 3.4.2 - 2021-10-12

* Fix: Icons color style conflicts when Font-Awesome Inline experiment is active in Share Buttons widget ([#16435](https://github.com/elementor/elementor/issues/16435))
* Fix: Mini Cart hides page content when closed in Menu Cart widget ([#16305](https://github.com/elementor/elementor/issues/16305))
* Fix: UI glitches in the Editor edit mode when inserting Post Content widget and Font-Awesome Inline experiment is active in Single Post template ([#16358](https://github.com/elementor/elementor/issues/16358))
* Fix: Slides per view controls disappeared from multiple breakpoints in Testimonial Carousel
* Fix: Product variations UI glitch in Menu Cart widget
* Fix: Buttons UI glitch on Safari browser in Menu Cart widget

#### 3.4.1 - 2021-09-01

* Fix: Sticky functionality is not working if the Additional Custom Breakpoints experiment is active ([#16186](https://github.com/elementor/elementor/issues/16186))
* Fix: Slideshow skin UI glitch in Media Carousel widget
* Fix: Product price typography weight control is not working as expected in Menu Cart widget

#### 3.4.0 - 2021-09-01
* Tweak: Added new Mini Cart layout type in Menu Cart widget ([#11312](https://github.com/elementor/elementor/issues/11312))
* Tweak: Added styling options for Cart, Products, and Cart buttons in Menu Cart widget ([#14952](https://github.com/elementor/elementor/issues/14952))
* Tweak: Added the ability to open cart automatically when an item is added in Menu Cart widget ([#14119](https://github.com/elementor/elementor/issues/14119))
* Tweak: Added the ability to remove an item from cart without reloading the page with an AJAX request ([#9531](https://github.com/elementor/elementor/issues/9531), [#10875](https://github.com/elementor/elementor/issues/10875), [#11309](https://github.com/elementor/elementor/issues/11309))
* Tweak: Added Load More AJAX functionality to Posts widget ([#12126](https://github.com/elementor/elementor/issues/12126), [#1284](https://github.com/elementor/elementor/issues/1284), [#14557](https://github.com/elementor/elementor/issues/14557))
* Tweak: Added Vimeo support to the Video Playlist widget ([#15319](https://github.com/elementor/elementor/issues/15319))
* Tweak: Improved asset loading performance by serving lighter JS files ([#8572](https://github.com/elementor/elementor/issues/8572))
* Tweak: Added query string to the URL only after the first video is played in Video Playlist widget ([#15348](https://github.com/elementor/elementor/issues/15348))
* Tweak: Added various layout options with more responsive controls and cart structure options in Menu Cart widget
* Tweak: Added the option to open the menu cart by click or hover in Menu Cart widget
* Tweak: Added the ability to choose a specific product to draw data from in WooCommerce Dynamic tags
* Tweak: Removed auto-scroll to the widget location when arriving from external URL in Video Playlist widget
* Tweak: Removed the Video Playlist widget from the Experiments list
* Tweak: Added descriptive error messages for MailChimp action after submit and on form submit in Forms widget
* Tweak: Added tooltip trigger None and Hover for link in Hotspot widget
* Tweak: Added responsive controls to Offset and Effects Offset in Sticky options
* Tweak: Added responsive control to Alignment in Testimonial Carousel widget
* Tweak: Adjusted Motion Effects module to support future feature
* Tweak: Added future compatibility to support better loading of `eicons` font
* Tweak: Changed Rename Part title and button color in Theme Builder
* Fix: Products don't appear on the cart while editing in Menu Cart widget ([#15451](https://github.com/elementor/elementor/issues/15451))
* Fix: Videos always start muted in the Video Playlist widget ([#15292](https://github.com/elementor/elementor/issues/15292))
* Fix: Unnecessary spacing if submenu indicator is set to None in Nav Menu widget ([#15365](https://github.com/elementor/elementor/issues/15365))
* Fix: MailChimp double opt-in feature doesn't work in Forms widget
* Fix: Fetching MailChimp groups field blocks the loading of the rest of the fields in the Form widget
* Fix: Missing field IDs causes forms not to be sent in Forms widget
* Fix: Full Content Skin is not working properly when inserted twice on the same page in Posts widget
* Fix: Avoid Duplicates option doesn't exclude manual selections in Posts widget
* Fix: Submenu indicator alignment issue in Nav menu widget
* Fix: Query control deprecated message appears when debug mode is defined
* Fix: Tweet Button icon incorrect color and size when the icon is rendered as SVG in Blockquote widget
* Fix: Video icon size is not changing on Active state in Video Playlist widget
* Fix: Header icon color is not working in Table Of Content widget
* Fix: Icons style glitches when Font Awesome Inline experiment is active in Video Playlist widget
* Fix: Bullet markers are not visible on preview mode when Font Awesome Inline experiment is active in Table of Content widget
* Fix: UI Glitch when Font-Awesome Inline experiment is active in Price Table widget
* Fix: Submenu Indicator appears larger when Font Awesome Inline experiment is active in Nav Menu widget
* Fix: Part name is deleted when clicking on the "Change" Button without changing the name in Theme Builder
* Fix: Redundant pagination queries in the Editor
* Deprecated: Remove all usages of `Elementor\Utils::get_create_new_post_url()`
* Deprecated: See all deprecations to this version in our [Developers Deprecations Post](https://developers.elementor.com/v3-4-planned-deprecations/)

#### 3.3.8 - 2021-08-23
* Fix: Products grid width issue when adjusting columns and rows in Products widget ([#16001](https://github.com/elementor/elementor/issues/16001))
* Fix: Font Awesome Inline experiment causes icons glitch in Price Table widget ([#16045](https://github.com/elementor/elementor/issues/16045))
* Fix: reCAPTCHA v3 `z-index` is lower than the Section's background color
* Fix: Style missing when Font Awesome inline experiment is active in Post Info widget
* Fix: Font Awesome icons were not loaded in Post Info widget
* Fix: Zero character can't be used as a placeholder in Number field in Form widget
* Fix: Carousels are not working properly in the Editor when Additional Custom Breakpoints experiment is active

#### 3.3.7 - 2021-08-15
* Tweak: Added support for Additional Custom Breakpoints in Nav Menu widget
* Tweak: Added support for Additional Custom breakpoints in Motion Effects
* Fix: Columns didn't respond to changes in Gallery widget if Additional Custom Breakpoints Experiment is active

#### 3.3.6 - 2021-08-10
* Tweak: Added support for future feature in Nav Menu widget
* Fix: WooCommerce responsive grid styles are not being reflected in Product Related widget ([#15857](https://github.com/elementor/elementor/issues/15857))
* Fix: WooCommerce responsive grid styles are not being reflected in Upsells widget ([#15857](https://github.com/elementor/elementor/issues/15857))
* Fix: WooCommerce responsive grid styles are not being reflected in Product Categories widget ([#15857](https://github.com/elementor/elementor/issues/15857))

#### 3.3.5 - 2021-08-01
* Fix: Responsive layout glitches in Products and Products Archive widgets ([#15773](https://github.com/elementor/elementor/issues/15773))
* Fix: reCAPTCHA V3 integration conflict with required fields validation in Forms widget

#### 3.3.4 - 2021-07-21
* Fix: Grid layout glitch in WooCommerce Products Archive widget ([#15718](https://github.com/elementor/elementor/issues/15718))

#### 3.3.3 - 2021-07-20
* Tweak: Added a descriptive message in Collect Submissions action after submit
* Tweak: Added future compatibility for Additional Custom Breakpoints for Pro widgets
* Fix: Some widget style breaks when Improved CSS Loading Experiment is active in certain cases ([#15632](https://github.com/elementor/elementor/issues/15632), [#15683](https://github.com/elementor/elementor/issues/15683), [#15660](https://github.com/elementor/elementor/issues/15660))
* Fix: Translation update keep appearing as available after install ([#14297](https://github.com/elementor/elementor/issues/14297))
* Fix: Wrong default icon color when using Font Awesome icons as inline SVG in Call to Action widget

#### 3.3.2 - 2021-07-13
* Tweak: Updated plugin description
* Fix: MailChimp tags in form widget replaced existing tags ([#11111](https://github.com/elementor/elementor/issues/11111))
* Fix: Clicking videos from the items list in edit mode doesn’t initiate videos properly
* Fix: User unauthorized message when activated but not connected in Kit Library
* Fix: Carousel widgets did not support additional custom breakpoint responsive values
* Fix: Tab border is overridden by the Section background color in Video Playlist widget
* Fix: Widgets style breaks when Improved CSS Load experiment is active in a Single Page template and Post Content widget

#### 3.3.1 - 2021-06-20
* Tweak: Added support for more Theme Builder display conditions in Export / Import experiment
* Tweak: Adjusted License page heading structure for future feature
* Tweak: Adjusted Font Awesome icon for allowing support for future feature
* Fix: `frontend.min.js` file size increased in Elementor Pro 3.3.0 ([#15278](https://github.com/elementor/elementor/issues/15278))
* Fix: Prevent conditions from being reset when object cache is enabled in site ([#13299](https://github.com/elementor/elementor/issues/13299))
* Fix: Custom Code publish modal responsiveness issues ([#14519](https://github.com/elementor/elementor/issues/14519))
* Fix: Populating fields with options programmatically doesn't appear in Submissions screen ([#10671](https://github.com/elementor/elementor/issues/10671))
* Fix: Large images are not shown on the Image Carousel widget when set via Toolset dynamic tag
* Fix: Enable inline editing to the inner content tabs in Video Playlist widget
* Fix: Clicking on the video list doesn't play videos properly in Video Playlist widget 
* Fix: Hide Play Icon control when Image overlay is toggled off in Video Playlist widget
* Fix: Removed extra space below the player when viewing from mobile view in Video Playlist widget
* Fix: Import button is not working properly in Theme Builder interface
* Fix: Preview Dynamic Content as control is not updating preview and throws an error in Popup Builder

#### 3.3.0 - 2021-06-08
* New: Video Playlist widget - Add Engaging Video Content to Your Website ([#11859](https://github.com/elementor/elementor/issues/11859), [#7803](https://github.com/elementor/elementor/issues/7803))
* New: Hotspot widget - Create Interactive Images With Contextually Relevant Information ([#7282](https://github.com/elementor/elementor/issues/7282), [#2768](https://github.com/elementor/elementor/issues/2768))
* Tweak: Accessibility improvements for sub-menus in Nav Menu widget ([#13859](https://github.com/elementor/elementor/issues/13859), [#13810](https://github.com/elementor/elementor/issues/13810))
* Tweak: MailChimp action after submit can now add new tags to existing subscribers in Forms widget ([#11111](https://github.com/elementor/elementor/issues/11111))
* Tweak: Added `elementor_pro/forms/record/actions_before` to filter the record before it sent to Actions After Submit in Forms widget ([#14261](https://github.com/elementor/elementor/issues/14261))
* Tweak: Yoast SEO breadcrumbs widget can be used in Elementor without the need of enabling them in Yoast setting
* Tweak: Added future support for widgets CSS conditional loading ([#10329](https://github.com/elementor/elementor/issues/10329), [#14229](https://github.com/elementor/elementor/issues/14229))
* Tweak: Added future support for Sticky JS library conditional loading
* Tweak: Added future support for Import / Export experiment
* Tweak: Preparations and fixes for Import Export Experiment in Pro version
* Tweak: Added gradient button capabilities to Login widget buttons
* Tweak: Added gradient button capabilities to Slides widget button
* Tweak: Added gradient button capabilities to Price Table widget button
* Tweak: Added gradient button capabilities to Flip Box widget button
* Tweak: Added Code Highlight widget Developers Documentation
* Tweak: Adjusted Submissions page for future updates
* Tweak: Added `em` and `%` units for padding control in Carousel widgets
* Tweak: Shorten currency name to currency symbol in PayPal button widget
* Fix: Custom Fonts URLs should be replaced when replace URL is triggered ([#7376](https://github.com/elementor/elementor/issues/7376), [#10382](https://github.com/elementor/elementor/issues/10382))
* Fix: The currency symbol size changed in the Price Table widget if enabling sale ([#13519](https://github.com/elementor/elementor/issues/13519))
* Fix: Nav Menu widget is not loading Font Awesome submenu icons ([#9907](https://github.com/elementor/elementor/issues/9907))
* Fix: Hamburger toggle is not working in Nav menu widget
* Fix: Activation bug for IDN domains
* Fix: Conditions modal responsive glitches in Custom Code
* Fix: Duplicated strings in Custom Code module
* Fix: Enable resize option for code input field in Custom Code
* Fix: “Save & Close “button in Custom Code's Conditions modal was not visible on small screen sizes
* Fix: Removing a column from a section in the navigator resulted in an empty section
* Fix: Recommend option is cut If the layout is not "Standard" in the Facebook Button widget
* Fix: Video item does not play without adding an image in Media Carousel widget
* Fix: `search-plus` icon missing from panel in Media Carousel widget
* Fix: UI hover state glitch in Media Carousel widget
* Fix: PHP notice was thrown when trying to import a kit without overrideConditions parameter in Kit Import flow
* Fix: Templates conditions not imported if there are no conflicts in Import Export Experiment
* Fix: Non english values are not encoded properly on Submissions export
* Fix: Theme Builder import is not working properly
* Fix: UI glitch when no global widgets were found in Editor Panel
* Deprecated: See all deprecations to this version in our [Developers Deprecations Post](https://developers.elementor.com/v3-3-planned-deprecations/)

#### 3.2.2 - 2021-05-05
* Tweak: Added support for Expert tier templates in Templates Library
* Tweak: Updated compatibility tag to support Elementor v3.2.x
* Tweak: Added compatibility for future Library improvements
* Fix: Toolset image dynamic field is not working with Gallery widget

#### 3.2.1 - 2021-03-21
* Tweak: Added strings context in PayPal button and Price Table widgets
* Tweak: Added support for future Import / Export Kit feature
* Fix: Submissions with over than 191 characters weren't indexed properly

#### 3.2.0 - 2021-03-14
* New: PayPal Button widget - Collect PayPal payments directly from your site
* Experiment: Submissions - Save all of your form submissions in one place ([#1686](https://github.com/elementor/elementor/issues/1686))
* Tweak: Added Stay In Column option to Inner Section element ([#7956](https://github.com/elementor/elementor/issues/7956))
* Tweak: Adjusted 'Max Height' control range in Table of Contents widget
* Tweak: Changed descriptive text in Create Custom Code screen
* Tweak: Added support for dynamic capabilities in Code Highlight widget
* Tweak: Added support for future load on demand for `share-link` library
* Tweak: Added support for future load on demand for `dialog` library in Popup
* Tweak: Allow overwriting the assets URL when using a mirror domain
* Fix: Animation was triggered multiple times when accessing the viewport in certain cases in Animated Headline widget ([#13951](https://github.com/elementor/elementor/issues/13951))
* Fix: Location is not being updated after a Custom Code snippet is published ([#13971](https://github.com/elementor/elementor/issues/13971))
* Fix: Custom Fonts CSS files were not updated after regenerating CSS files
* Fix: Conditions modal is not responsive in Custom Code
* Fix: Empty order buttons are displayed in Custom Fonts screen
* Fix: Typo in 'Reply To' Email action after submit placeholder in Forms widget
* Fix: Unnecessary Save Draft button in Custom Code
* Fix: RTL glitches in Custom Code
* Fix: Sanitized options in the editor to enforce better security policies
* Deprecated: See all deprecations to this version in our ([Developers Deprecations Post](https://developers.elementor.com/v3-2-planned-deprecations/))

#### 3.1.1 - 2021-02-23
* Tweak: Adjusted 'Max Height' control range in Table of Contents widget
* Fix: Popup event handler is undefined ([https://github.com/elementor/elementor/issues/11475](#11475), [https://github.com/elementor/elementor/issues/10690](#10690))
* Fix: Conditions modal is not responsive in Custom Code
* Fix: RTL glitches in Code Highlight widget
* Fix: Minor UI glitches in Code Highlight widget
* Fix: Users can't get Pro Developer Edition version updates

#### 3.1.0 - 2021-02-13
* New: Introducing Custom Code - Add custom code snippets to your site, including `head`, `body` start and `body` end
* New: Meet Code Highlight widget - showcase any syntax with highlighted UI ([#5815](https://github.com/elementor/elementor/issues/5815))
* Experiment: Improved Pro widgets performance by loading JS and Swiper assets conditionally in frontend ([#8572](https://github.com/elementor/elementor/issues/8572), [Developer Documentation](https://developers.elementor.com/experiment-optimized-asset-loading/))
* Tweak: Added Compatibility Tag support in Elementor Pro ([Developer Documentation](https://developers.elementor.com/compatibility-tag/))
* Tweak: Added Dynamic capabilities to Rotating Text animation in Animated Headline widget ([#4625](https://github.com/elementor/elementor/issues/4625), [#8569](https://github.com/elementor/elementor/issues/8569))
* Tweak: Added an option to set Selected color for Typing effect in Animated Headline widget ([#5403](https://github.com/elementor/elementor/issues/5403), [#7826](https://github.com/elementor/elementor/issues/7826))
* Tweak: Added animation Loop option for Animated Headline ([#9749](https://github.com/elementor/elementor/issues/9749), [#2457](https://github.com/elementor/elementor/issues/2457))
* Tweak: Added timing options for Animated Headline widget ([#4392](https://github.com/elementor/elementor/issues/4392))
* Tweak: Added dynamic capabilities for Testimonial Carousel widget ([#8569](https://github.com/elementor/elementor/issues/8569))
* Tweak: Added dynamic capabilities for Price Table widget ([#4242](https://github.com/elementor/elementor/issues/4242), [#8569](https://github.com/elementor/elementor/issues/8569))
* Tweak: Added Word Wrap control to Code Highlight widget ([#13577](https://github.com/elementor/elementor/issues/13577))
* Tweak: Upgraded Font Awesome Pro library to v5.15.1
* Tweak: Improved method of loading field mapping repeater in Form widget ([Developer Documentation](https://developers.elementor.com/how-to-add-a-repeater-control-to-elementor-add-on/))
* Tweak: Added "Show on Browsers" Popup Advanced Rule
* Tweak: Added real-time JS handling to prevent redundant renders in Slides widget and all Carousel widgets
* Tweak: Import scroll utility from core and remove it from Pro
* Tweak: Added alignment options for Post Excerpt widget ([#9757](https://github.com/elementor/elementor/issues/9757))
* Tweak: Changed alignment control to work with selectors in Share Buttons
* Tweak: Upgraded to Webpack 5, Grunt-Webpack 4 and TerserPlugin instead of UglifyJsPlugin
* Fix: Steps Divider is not vertically aligned in Multi Step Form widget ([#12569](https://github.com/elementor/elementor/issues/12569))
* Fix: Slides are playing in an infinite loop mode even when the option is disabled in Slides Widget ([#6726](https://github.com/elementor/elementor/issues/6726))
* Fix: Redundant spacing is added to Share Buttons widget
* Fix: Step buttons text is not updated without a page reload in Forms widget
* Fix: Overflow issue in certain animations in Animated Headline widget
* Fix: When dragging a new Testimonial Carousel there is a console error thrown
* Fix: Step Buttons are cut in mobile view in Multi Step Form
* Fix: Submit and Step buttons size differences when using Twenty Twenty theme
* Fix: Duplicate button Text Color control in Slides widget
* Fix: JS error is thrown when editing and saving global widgets
* Fix: `get_version` API function may fail with Redis / DB cache
* Fix: Multiple license check requests are created in certain cases
* Deprecated: Deprecate methods prefixed with an underscore and replace them with unprefixed methods
* Deprecated: See all deprecations to this version in our [Developers Deprecations Post](https://developers.elementor.com/v3-1-planned-deprecations/)

#### 3.0.10 - 2021-01-20
* Tweak: Added Editing Handles string translation compatibility with Elementor v3.1.0

#### 3.0.9 - 2020-12-29
* Tweak: Added compatibility to support Elementor 3.1.0
* Fix: Wrong phrasing of Import template success message in Theme Builder
* Fix: Border color glitch in Theme Builder

#### 3.0.8 - 2020-11-26
* Fix: Navigation arrows UI glitch in Media Carousel widget ([#13172](https://github.com/elementor/elementor/issues/13172))

#### 3.0.7 - 2020-11-25
* Fix: Console Error when dragging  Testimonials Carousel widget
* Fix: Arrows of Testimonial and Reviews Carousel widgets navigate to the wrong direction in RTL websites
* Fix: Removed the conditional loading of Webpack
* Fix: Fatal error is thrown after deleting an associated custom taxonomy when Posts widget with Cards skin has a badge
* Fix: Upload JSON files only when the user allowed to prevent security issues
* Fix: Gallery not displayed in Theme Builder templates preview

#### 3.0.6 - 2020-11-04
* Tweak: Updated the embedded post in Facebook Embed widget
* Fix: Minor UI glitches in Theme Builder's conditions screen footer
* Fix: Template type changes into Single Page after conditions change in Theme Builder
* Fix: Redundant Custom Caption option in Site Logo widget
* Fix: Removed unused code in Drip integration
* Fix: Removed Weibo and WeChat social networks due to website and links inactivity from Share Buttons widget
* Fix: Removed redundant code from Portfolio and Post Navigation widgets

#### 3.0.5 - 2020-09-23
* Fix: If the default page layout is set to "Canvas" Headers and Footers cannot be edited
* Fix: Product Image Dynamic Tag throws an error when no image is set
* Fix: Missing Single document placeholder in Theme Builder
* Fix: Document editing handles inherit the `font-family` from 3rd party source
* Fix: Can't add linebreaks to Textarea input when used as Multi Step Form
* Fix: Incorrect width in Facebook Page widget
* Fix: Added compatibility to allow the use of 'get_create_url' in Theme Builder

#### 3.0.4 - 2020-09-09
* Fix: Autogenerated screenshots appear in WP Media Library modal ([#12304](https://github.com/elementor/elementor/issues/12304))
* Fix: Make sure Elementor Posts widget Pagination doesn't interfere with 3rd party plugins ([#12126](https://github.com/elementor/elementor/issues/12126), [#12127](https://github.com/elementor/elementor/issues/12127))
* Fix: Shrinking conditions indicator in Theme Builder
* Fix: Column can't be dragged and dropped if it populates a Global widget
* Fix: Styles are missing from Single templates in some edge cases

#### 3.0.3 - 2020-09-02
* Fix: Pagination doesn't work in WordPress 5.5 ([#12126](https://github.com/elementor/elementor/issues/12126), [#12127](https://github.com/elementor/elementor/issues/12127))
* Fix: Change delete template action to "Move to Trash" in the new Theme Builder view

#### 3.0.2 - 2020-08-31
* Tweak: Replaced WordPress "Learn More" links with dynamic links for better control over time ([#12312](https://github.com/elementor/elementor/issues/12312))
* Tweak: UI tweaks to the Conditions screen In the new Theme Builder
* Fix: Motion Effects not working when assigned to a column and throws JS error when DOM optimization is disabled ([#12299](https://github.com/elementor/elementor/issues/12299), [#12275](https://github.com/elementor/elementor/issues/12275))
* Fix: Multiple Galleries display all the images in the Lightbox slideshow ([#11809](https://github.com/elementor/elementor/issues/11809))
* Fix: Old Theme Builder is being opened when accessing through the Finder
* Fix: Mixed templates import glitch in Theme Builder
* Fix: Card icon sizes in Theme Builder
* Fix: Preview button leads to `render_mode` instead of preview when importing a template from the new Theme Builder

#### 3.0.1 - 2020-08-26
* Tweak: Keep previous Theme Builder when accessing from the WP Dashboard for legacy support
* Tweak: Updated video tutorials in Theme Builder
* Tweak: Don't show auto-screenshots in the Media Library (Props [@black-eye](https://github.com/black-eye))
* Fix: Repeater items throws `childView` is undefined message in Forms widget ([#12239](https://github.com/elementor/elementor/issues/12239), [#12221](https://github.com/elementor/elementor/issues/12221))
* Fix: Misspelling of the word "occurred" in Form widget default error message ([#12137](https://github.com/elementor/elementor/issues/12137))
* Fix: Facebook comments not showing up ([#12157](https://github.com/elementor/elementor/issues/12157))
* Fix: Check for conflicts in Theme Builder doesn't work properly
* Fix: Minor UI fixes in Theme Builder
* Fix: Dark mode glitches in Theme Builder
* Fix: Global Site Part toaster appears when you publish a Popup
* Fix: Site Parts aren't in the correct order in Theme Builder
* Fix: Date field caused forms to get corrupted in Forms widget
* Fix: Theme Builder application page is forbidden

#### 3.0.0 - 2020-08-23
* New: Introducing the new and improved Theme Builder
* Tweak: Removed `.elementor-inner` and `.elementor-column-wrap` from DOM output to improve performance ([#7351](https://github.com/elementor/elementor/issues/7351), [#7817](https://github.com/elementor/elementor/issues/7817), [Developers Blog Post](https://developers.elementor.com/dom-improvements-ahead-html-wrappers-removal-from-v3-0/))
* Tweak: Added contextual anchors ID support to Table of Contents widgets ([#10052](https://github.com/elementor/elementor/issues/10052))
* Tweak: Added WeChat and Weibo social networks to Share Buttons widget ([#11554](https://github.com/elementor/elementor/issues/11554))
* Tweak: Added Dynamic capabilities for Redirect after Login/Logout in Login widget ([#11343](https://github.com/elementor/elementor/issues/11343))
* Tweak: Added Blend Mode and CSS Filters controls to adjust the Background Overlay in Flipbox widget ([#11653](https://github.com/elementor/elementor/issues/11653))
* Tweak: Added responsive capabilities to Toggle Button styling in Nav Menu widget ([#8269](https://github.com/elementor/elementor/issues/8269))
* Tweak: Added responsive Text Alignment control in Call to Action widget ([#11968](https://github.com/elementor/elementor/issues/11968))
* Tweak: Added dynamic content to Ribbon element in Call to Action widget ([#10364](https://github.com/elementor/elementor/issues/10364))
* Tweak: Converted uses of Color and Typography Schemes to Global Colors and Fonts
* Tweak: Separated Title and Description control fields labels in Call to Action widget
* Tweak: Removed unnecessary style in WC Product with variations
* Tweak: Converted Portfolio, Posts and Share Buttons widgets to use CSS Variable-based Elementor Grid ([Developers Blog Post](https://developers.elementor.com/elementor-dropping-support-ie/))
* Tweak: Added Date Modified option to Posts widget metadata
* Fix: PHP 7.4 compatibility to Media Carousel widget ([#11355](https://github.com/elementor/elementor/issues/11355))
* Fix: Divider alignment issue in Post Info widget ([#11628](https://github.com/elementor/elementor/issues/11628))
* Fix: Color doesn’t change in Products Archive Description widget
* Fix: WC Product variations layout breaks when using Variation Swatches plugin
* Fix: WC Product variations layout issue
* Fix: WC Product variations mobile zoom-in glitch
* Fix: Can't edit a Popup after accessing Theme Style
* Fix: Twitter icon missing in Blockquote widget
* Fix: Removed redundant default text color from Share Buttons minimal skin
* Fix: UI glitch in Display Conditions modal
* Fix: Insert template button UI glitch in Templates Library
* Fix: Added sanitization to post titles in WordPress dashboard for better security
* Fix: Show when arriving from search engines rule doesn't work in Popup
* Fix: Child categories are shown with a different parent category in Query control
* Deprecated: See all deprecations to this version in our [Developers Deprecations Post](https://developers.elementor.com/v3-0-planned-deprecations/)

#### 2.10.3 - 2020-06-29
* Fix: Form not being submitted when using "Progress Bar" and "None" view types in Multi Step Form ([#11596](https://github.com/elementor/elementor/issues/11596), [#11610](https://github.com/elementor/elementor/issues/11610))
* Fix: Missing "for" attribute in Password field label in Login widget ([#8646](https://github.com/elementor/elementor/issues/8646))

#### 2.10.2 - 2020-06-16
* Fix: Run step events only when in Multi Step Form mode ([#11644](https://github.com/elementor/elementor/issues/11644))

#### 2.10.1 - 2020-06-16
* Tweak: Improved License validation mechanism to avoid limitations
* Tweak: Changed control labels and ordering in Price Table, Lottie and Form widgets
* Fix: Popup close button vertical position glitch ([#10921](https://github.com/elementor/elementor/issues/10921))
* Fix: Radio field placement glitch when in Multi Step mode in Form widget
* Fix: Clicking `Enter` key submits the form in Multi Step Form
* Fix: Hardened sanitization in Custom Attributes to avoid security issues

#### 2.10.0 - 2020-06-07
* New: Introducing Multi-Step Forms - Breakdown long forms into simple steps ([#5975](https://github.com/elementor/elementor/issues/5975), [#3911](https://github.com/elementor/elementor/issues/3911))
* New: Introducing Lottie widget - easily add Lottie animations to your site, no coding needed ([#11026](https://github.com/elementor/elementor/issues/11026))
* Tweak: Added spacing option to Posts widget pagination ([#5682](https://github.com/elementor/elementor/issues/5682))
* Tweak: Changed texts and logic for administrator plugin renewal notices
* Tweak: Added new Scroll Util for improved scrolling handling
* Tweak: Improved Motion Effects animation performance

#### 2.9.5 - 2020-05-24
* Fix: Added sanitization to Custom Attributes control to avoid security issue

#### 2.9.4 - 2020-05-07
* Fix: Hardened user role that is allowed to upload icon sets and unzip only allowed files in Custom Icons to prevent security vulnerability

#### 2.9.3 - 2020-04-19
* Fix: Form shortcode IDs are not wrapped in double-quotes ([#11023](https://github.com/elementor/elementor/issues/11023), [#10932](https://github.com/elementor/elementor/issues/10932), [#10967](https://github.com/elementor/elementor/issues/10967), [#11000](https://github.com/elementor/elementor/issues/11000), [#11049](https://github.com/elementor/elementor/issues/11049))
* Fix: Escaped Form records metadata to prevent security vulnerability
* Fix: Closing "Save Changes" document confirmation modal causes Panel infinite loading
* Fix: Ken Burns effect not working when there is only one slide in Slides widget
* Fix: Document handles UI glitch

#### 2.9.2 - 2020-03-25
* Tweak: Added compatibility with WordPress v5.4 ([#10745](https://github.com/elementor/elementor/issues/10745))
* Fix: Image ratio number is displayed under the Archive Posts widget ([#10874](https://github.com/elementor/elementor/issues/10874))
* Fix: Theme Style Link color setting overrides the Table of Content list style
* Fix: PHP notice when using dynamic user info `id`
* Fix: Navigation arrows direction is crossed on first drag in Slides Widget
* Fix: "No headings were found on this page" message was not displayed in the frontend in Table of Contents widget
* Fix: Container includes Popup tags by default in Table of Contents widget
* Fix: Twitter icon display issue when Font Awesome 4 support is disabled in Blockquote widget
* Fix: ACF Dynamic tag not working in Form widget Redirect action

#### 2.9.1 - 2020-03-16
* Fix: Can't access Elementor Editor when there is Page Title widget in the page
* Fix: Applying styling to Post Content widget affects the Page and Post editing handles

#### 2.9.0 - 2020-03-15
* New: Introducing Full Site Editing: Design header, footer, and content all in one place! ([#4985](https://github.com/elementor/elementor/issues/4985))
* New: Added Global Custom CSS for Your Entire Site in Theme Style ([#3345](https://github.com/elementor/elementor/issues/3345))
* New: Added Dynamic Colors tag ([#6485](https://github.com/elementor/elementor/issues/6485))
* Tweak: Added option to set the Site Part HTML Wrapper Tags ([#9293](https://github.com/elementor/elementor/issues/9293))
* Tweak: Added Link Attributes support to Pro widgets ([#5716](https://github.com/elementor/elementor/issues/5716), [#3642](https://github.com/elementor/elementor/issues/3642), [#9225](https://github.com/elementor/elementor/issues/9225), [#9079](https://github.com/elementor/elementor/issues/9079))
* Tweak: Added Theme Style support in Theme Builder parts ([#10564](https://github.com/elementor/elementor/issues/10564))
* Tweak: Avoid creating empty Custom Font
* Tweak: Added `aria-expanded` attribute to Menu Cart widget
* Tweak: Moved Link Actions module to Core plugin
* Tweak: Changed the name of “TypeKit Web Fonts by Adobe” to “Adobe Fonts”
* Tweak: Removed redundant display conditions from Blockquote, Flipbox, Price Table, and Search Form widgets
* Tweak: Pro widgets are not draggable unless Elementor license has been activated
* Tweak: Remove redundant `label_block` parameters from several controls
* Tweak: Converted controls selectors to CSS variables in Gallery widget
* Tweak: Replaced Stumbleupon with Mix in Reviews widget recommended icons ([#10099](https://github.com/elementor/elementor/issues/10099))
* Tweak: Added Mix to the Share Buttons network list ([#10099](https://github.com/elementor/elementor/issues/10099))
* Tweak: Added "Open in new tab" option to Posts widget ([#7924](https://github.com/elementor/elementor/issues/7924))
* Tweak: Upgraded Font Awesome Pro library to v5.12.0
* Tweak: Added new Lightbox compatibility for Gallery and Media Carousel widgets
* Tweak: Expose external API for Swiper instances
* Tweak: Added compatibility to JS API in Theme Builder, Popups, Form widget and Global widget
* Tweak: Replaced nerd icons with new Elementor emojis
* Tweak: Added specific `color` attribute to header title in Table of Contents widget
* Fix: Line break issues in Animated Headline widget ([#10585](https://github.com/elementor/elementor/issues/10585))
* Fix: Theme Style Link color overrides the Table of Content list style
* Fix: Active state glitches when using Table of contents widget with Sticky mode
* Fix: "Graphic Element" section appears as empty in case of unmarked Graphic Element in Call to Action widget
* Fix: Page Title widget render glitches in the Editor
* Fix: Image ratio parameter visible in some edge cases in Posts widget
* Fix: Image missing when sharing to Pinterest using Share Buttons widget
* Fix: Theme Style Link color setting override the list style in Table of Contents widget
* Deprecated: See all deprecations to this version in our [Developers Deprecations Post](https://developers.elementor.com/v2-9-0-planned-deprecations/)


#### 2.8.5 - 2020-03-08
* Tweak: Added new Swiper parameter to all Pro carousels to allow 3rd party integration
* Fix: Missing closing bracket in Animated Headline widget
* Fix: Share buttons widgets show Font Awesome 4 icons on first drag in Editor

#### 2.8.4 - 2020-02-16
* Tweak: Added Lightbox Title & Description support to Gallery widget
* Tweak: Added RTL support for Slides widget
* Tweak: Display Lightbox images in Full size in Gallery widget
* Fix: Template with Slides widget not working properly when placed inside Tabs, Accordion and Toggle widget
* Fix: Dropdown menu lost styling after Elementor Pro v2.8 upgrade in Nav Menu widget
* Fix: Indent doesn't work on RTL websites in Table of Contents widget
* Fix: Query Control throws `Undefined index: q` error
* Fix: Typography control not affecting dropdown menu in Nav Menu widget
* Fix: Discord forms integration fails to send submissions in some server configurations
* Fix: Rotating headlines don't align center in Animated Headline widget
* Fix: Custom secondary color displayed when not needed in Share buttons widget
* Fix: Motion Effects of certain objects are not functioning properly on Safari browser
* Fix: Missing eye icon in Single template footer preview button

#### 2.8.3 - 2020-01-01
* Tweak: Updated Table of Contents widget panel location
* Fix: ACF URL Dynamic field throws `undefined index` PHP notice ([#9929](https://github.com/elementor/elementor/issues/9929))
* Fix: Gallery lightbox pagination shows images from all tabs
* Fix: "Reply To" option not working in Form widget "Email 2" Action
* Fix: ACF Dynamic tag not working in Form widget Redirect action
* Fix: Underline option not working in Table of Contents widget Normal state
* Fix: Query Control `Undefined index: autocomplete` notice in some cases
* Fix: Missing display condition to Read More Spacing control in Posts widget

#### 2.8.2 - 2019-12-19
* Tweak: Improved scroll-spy and collapsing functionality in Table of Contents widget
* Fix: "No products were found" message not being displayed in an empty Products Archive
* Fix: Redundant `<br>` tags in Single theme template ([#9927](https://github.com/elementor/elementor/issues/9927), [#9928](https://github.com/elementor/elementor/issues/9928))
* Fix: Draft Popup shows up in Dynamic tag dropdown

#### 2.8.1 - 2019-12-18
* Fix: Share Buttons widget not working ([#9920](https://github.com/elementor/elementor/issues/9920))
* Fix: Redundant `<p>` tags added to Single Template posts

#### 2.8.0 - 2019-12-18
* New: Table of Contents Widget ([#5171](https://github.com/elementor/elementor/issues/5171))
* New: Added Font Awesome Pro Duotone font family support ([#9578](https://github.com/elementor/elementor/issues/9578))
* Tweak: Added Lazy Load option to Gallery widget ([#9763](https://github.com/elementor/elementor/issues/9763))
* Tweak: Added Random order option to Gallery widget ([#9269](https://github.com/elementor/elementor/issues/9269))
* Tweak: Updated Font Awesome Pro to v5.11.2 ([#9578](https://github.com/elementor/elementor/issues/9578))
* Tweak: Added preselect support for multiple default select values in Forms Widget ([#9324](https://github.com/elementor/elementor/issues/9324))
* Tweak: Avoid duplicate queries for Custom Icons ([#9579](https://github.com/elementor/elementor/issues/9579))
* Tweak: Major performance improvements to Gallery widget
* Tweak: Avoid non-existing images in Gallery widget
* Tweak: Added `tabindex`, `aria-expanded`, `aria-hidden` and `role="navigation"` accessibility attributes to Nav Menu widget
* Tweak: Changed button HTML tag from `button` to `span` in Call to Action and Flip Box widgets for better W3C compliance and accessibility
* Tweak: Removed Google+ from default networks in Share Buttons widget
* Tweak: Added compatibility for Library Connect
* Tweak: Added i18n to Toolset date dynamic tag
* Tweak: Added external link support to Gallery widget
* Tweak: Changed the link external attributes implementation to use `add_link_attributes()` in Gallery widget
* Tweak: Updated references to the new Schemes system location
* Tweak: Avoid running Gallery handler when the gallery is empty
* Tweak: UI Tweaks in Editor Panel
* Tweak: Added responsive capabilities to Pointer Width control in Nav Menu widget
* Tweak: Added mobile support for responsive controls in Nav Menu widget
* Tweak: Refactor `register_controls()` method in Posts widget skin trait
* Fix: ACF URL "undefined Index" notice ([#7646](https://github.com/elementor/elementor/issues/7646))
* Fix: WooCommerce Mini-Cart widget causes fatal error in edge cases ([#9304](https://github.com/elementor/elementor/issues/9304))
* Fix: `PHP Notice: Undefined index` display for Author query ([#9864](https://github.com/elementor/elementor/issues/9864))
* Fix: Added compatibility for Button widget placed inside Swiper carousel ([Topic](https://wordpress.org/support/topic/broken-buttons-since-elementor-2-8/))
* Fix: Avoid empty spaces in Post info widget
* Tweak: Always show "Custom label" control in Login widget
* Fix: Nav Menu item typography selector in Nav Menu widget
* Fix: Facebook Like Button widget causes flickering
* Fix: WooCommerce mini-cart behaviour when using `plain` permalinks format
* Fix: Avoid running Popup triggers when set without conditions
* Fix: Removed "Date" query from Products widget
* Fix: Slides widget when used as a Shortcode and is hidden
* Fix: Custom URL being accessed on swipe in Media Carousel
* Fix: Media Carousel widget Cube effect glitch
* Fix: Lightbox shows images from multiple Gallery widgets in the same page
* Fix: Image `alt` Text not displayed on overlay in Gallery widget
* Fix: Gallery widget not visible in Posts widget Full Content skin
* Fix: WooCommerce mini-cart remove unnecessary hooks registration when WooCommerce integration set to `Disable`
* Fix: Slides widget button wrapping breaks in mobile view
* Fix: Dynamic capabilities with the Reviews widget
* Fix: Disabling autoplay doesn't work in Slides widget
* Fix: Posts widget Full Content skin not working on Single template
* Fix: Autocomplete not working for "By Author" condition in Display Conditions screen
* Fix: Posts widget alignment issue
* Fix: Product Variations Clear button not working in edge cases
* Fix: Styling issues in Form widget submit button

#### 2.7.3 - 2019-10-28
* Tweak: Added RTL support to Galleries widget ([#9213](https://github.com/elementor/elementor/issues/9213))
* Tweak: Added Custom Icons compatibility for WordPress 5.3
* Fix: Missing template function declaration causes fatal error in WC mini-cart widget
* Fix: Pause on hover doesn't work in Carousel widgets
* Fix: Link-actions conflict with `?action=` parameter in the URL
* Fix: Lightbox navigation not working in Gallery widget Single mode
* Fix: Ken burns effect not working on the 1st slide if Infinite Loop option is turned off in Carousel widgets
* Fix: Popup Advanced Rules detects internal links as external if current URL starts with `www`

#### 2.7.2 - 2019-10-06
* Fix: Slide Overlay not working when applying Ken burns effect in Slides widget ([#9209](https://github.com/elementor/elementor/issues/9209))
* Fix: Content width glitch in Slides widget ([#9180](https://github.com/elementor/elementor/issues/9180))
* Fix: Horizontal Alignment not working when applying custom style per slide in Slides widget ([#9180](https://github.com/elementor/elementor/issues/9180))
* Fix: Missing semicolon in Custom Fonts `font-display` CSS

#### 2.7.1 - 2019-09-26
* Fix: Background Overlay layer is over the slide content in Slides widget ([#9180](https://github.com/elementor/elementor/issues/9180))
* Fix: Duplicate images under "All" filter in Multiple Gallery

#### 2.7.0 - 2019-09-24
* New: Enhanced Galleries widget ([#1898](https://github.com/elementor/elementor/issues/1898), [#3103](https://github.com/elementor/elementor/issues/3103), [#4279](https://github.com/elementor/elementor/issues/4279), [#7631](https://github.com/elementor/elementor/issues/7631))
* New: Dynamic Number ([#5952](https://github.com/elementor/elementor/issues/5952))
* New: Full content skin for Posts and Archive-posts widgets ([#4617](https://github.com/elementor/elementor/issues/4617))
* Tweak: Added dynamic number capability to Price List, Price Table, Counter, Star Rating, Progress Bar widgets
* Tweak: Added tags support to forms Mailchimp action ([#5418](https://github.com/elementor/elementor/issues/5418))
* Tweak: User Profile Picture Dynamic Tag ([#7947](https://github.com/elementor/elementor/issues/7947), [#8740](https://github.com/elementor/elementor/issues/8740))
* Tweak: Added `font-display` support to custom fonts ([#5993](https://github.com/elementor/elementor/issues/5993), [Developers Blog Post](https://developers.elementor.com/elementor-pro-2-7-custom-fonts-font-display-support/))
* Tweak: Added Text Shadow control to Slides widget ([#8800](https://github.com/elementor/elementor/issues/8800))
* Tweak: Added Re-subscribe support to MailerLite ([#8799](https://github.com/elementor/elementor/issues/8799))
* Tweak: Added Dynamic capabilities to Facebook Embed widget ([#9030](https://github.com/elementor/elementor/issues/9030))
* Tweak: Use `swiper.js` instead of `slick.js` in Slides widget ([Developers Blog Post](https://developers.elementor.com/elementor-2-7-moving-sliders-from-slick-to-swiper/))
* Tweak: Added `elementor_pro/search_form/before_input` action hook to Search Form widget ([#5598](https://github.com/elementor/elementor/issues/5598))
* Tweak: Added `elementor_pro/search_form/after_input` action hook to Search Form widget ([#5598](https://github.com/elementor/elementor/issues/5598))
* Tweak: Added dynamic support for Custom field key ([#7789](https://github.com/elementor/elementor/issues/7789))
* Tweak: Increased expired license notice bar frequency
* Tweak: Changed the icon name of Slides widget
* Tweak: Added designated Finder's Icons for Custom icons & Custom fonts
* Tweak: Use Ken Burns Effect as an external module
* Tweak: Remove Fontello conflicting CSS on import to Custom Icons sets
* Tweak: Editor Panel UI tweaks
* Tweak: Added DOM events on Popup show/hide ([Developers Blog Post](https://developers.elementor.com/elementor-pro-2-7-popup-events/))
* Tweak: Added option to change the variations field width in Add to Cart widget
* Tweak: Use select control instead of select2 in Menu Cart widget
* Tweak: Added conditions to the tabs instead of to each control in Share Buttons widget
* Tweak: Added Typography controls to HTML field in Forms widget
* Tweak: Allow edit selected Font file in Custom Font
* Tweak: Changed reCAPTCHA v3 error message
* Tweak: Remove the "Save as Global" option on Global widget context menu
* Fix: Corrected selector for `removeControlSpinner()` ([#8790](https://github.com/elementor/elementor/issues/8790))
* Fix: Slides widget navigation icons misplacement ([#8533](https://github.com/elementor/elementor/issues/8533))
* Fix: Horizontal Scrollbar when Slider widget is set to Full Width ([#8527](https://github.com/elementor/elementor/issues/8527))
* Fix: Inconsistent behavior when "Infinite Loop" enabled with "Autoplay" in Slides widget ([#6726](https://github.com/elementor/elementor/issues/6726))
* Fix: Ken Burns effect on Chrome transition glitches ([#1671](https://github.com/elementor/elementor/issues/1671))
* Fix: Nothing found message shows up inside the columns set in Posts Archive widget ([#7347](https://github.com/elementor/elementor/issues/7347))
* Fix: Responsive UI glitch in Popup Conditions modal tabs
* Fix: Removed unnecessary divider in Call to Action widget
* Fix: Custom Add To Cart * button style (size, position and background color) when `quantity` is enabled.
* Fix: Add support for Document/PageBase in Theme Builder (Core >=2.7.0)
* Fix: Ampersand character breaks email link in Share Buttons widget
* Fix: Correct custom font attachment `mime-type` to show uploaded Custom Fonts
* Fix: Mini-Cart not refreshing in Menu Cart widget
* Fix: Cart drawer not working when WC Subscriptions plugin is activated
* Fix:  Querying CPT with custom taxonomies does not show the taxonomies before saving
* Fix: Double rendering on change caused console error in Theme Builder's conditions screen
* Fix: Translations and Strings in Share Buttons widget
* Fix: Avoid using offset if the source is Manual selection in Query Control
* Fix: Form being submitted although reCAPTCHA v3 validation failed in Forms widget

#### 2.6.5 - 2019-08-26
* Tweak: Added compatibility for the upcoming release of Elementor v2.7
* Fix: Button style not working when `quantity` is enabled in Custom Add To Cart widget
* Fix: Updated minified JS file fixed WhatsApp base URL in Share Buttons widget

#### 2.6.4 - 2019-08-21
* Tweak: Added compatibility for the upcoming release of Elementor v2.7
* Fix: Changed WhatsApp base URL in Share Buttons widget for cross-device compatibility
* Fix: Random slides order after several clicks on pagination in Testimonial Carousel widget

#### 2.6.3 - 2019-08-18
* Fix: Core version rollback to `>2.6.0` causes a fatal error
* Fix: Duplicate images when slideshow skin is selected in Media Carousel lightbox
* Fix: Default bottom margin added to reCAPTCHA V3 badge
* Fix: Input glitch in reCAPTCHA V3 threshold settings

#### 2.6.2 - 2019-07-30
* Tweak: Better accessibility support in Search Form widget
* Fix: UI glitched in Popup publish screen ([#8616](https://github.com/elementor/elementor/issues/8616))
* Fix: "Child of Term" and "Any child of term" conditions ([#8695](https://github.com/elementor/elementor/issues/8695))
* Fix: Restored `library_widget_templates` action hook for 3rd party compatibility ([#8687](https://github.com/elementor/elementor/issues/8687))
* Fix: Twitter Icon missing in Blockquote widget
* Fix: Form reCAPTCHA v3 badge position not working
* Fix: Renewal notice bar appears in wrong situations
* Fix: Draft Icon Set loads empty Icon Library

#### 2.6.1 - 2019-07-24
* Fix: Query Control autocomplete not retrieving results ([#8672](https://github.com/elementor/elementor/issues/8672), [#8661](https://github.com/elementor/elementor/issues/8661))
* Fix: Price Table features section not working ([#8660](https://github.com/elementor/elementor/issues/8660))

#### 2.6.0 - 2019-07-23
* New: Introducing Custom Icon sets - including Fontello, IcoMoon and Fontastic support ([#110](https://github.com/elementor/elementor/issues/110))
* New: Added Font Awesome 5 Pro integration including 5,300+ icons ([#4430](https://github.com/elementor/elementor/issues/4430))
* New: Added reCAPTCHA v3 integration to Form widget ([#8213](https://github.com/elementor/elementor/issues/8213), [#6039](https://github.com/elementor/elementor/issues/6039), [#7165](https://github.com/elementor/elementor/issues/7165))
* Tweak: Added Exit Animation for Popups ([#7063](https://github.com/elementor/elementor/issues/7063))
* Tweak: Added ACF Dynamic tag support for archive pages ([#5147](https://github.com/elementor/elementor/issues/5147))
* Tweak: Added Navigator Indicators for Custom CSS & Motion Effects ([#2180](https://github.com/elementor/elementor/issues/2180))
* Tweak: Added Dynamic capabilities for Form Redirect action ([#7552](https://github.com/elementor/elementor/issues/7552))
* Tweak: Added Logged In Message styling options for Login widget ([#7928](https://github.com/elementor/elementor/issues/7928))
* Tweak: Added `none` breakpoint option to Nav Menu widget ([#7916](https://github.com/elementor/elementor/issues/7916))
* Tweak: Added option to place Post Terms dynamic tag without links ([#8366](https://github.com/elementor/elementor/issues/8366))
* Tweak: Added `elementor/query/query_results` hook to Query Control to allow full control over results ([#7912](https://github.com/elementor/elementor/issues/7912))
* Tweak: Allow choosing Heading HTML tag in Price Table widget ([#8090](https://github.com/elementor/elementor/issues/8090))
* Tweak: Show popup on dynamic click even when `Avoid Multiple Popups` option is selected ([#8189](https://github.com/elementor/elementor/issues/8189))
* Tweak: Added condition option to all of archive child pages ([#8256](https://github.com/elementor/elementor/issues/8256))
* Tweak: Added `Effects Relative To` control to Scrolling Effects
* Tweak: Allow shortcodes in HTML Form field
* Tweak: Removed donReach integration from Share Buttons widget due to service inconsistent stability
* Tweak: Changed MailChimp `List` label to `Audience`
* Tweak: Improved Entrance and Exit animation behavior in Popup
* Tweak: Added `Deprecated Notice` control to `Archive Products` and `Woo Products` widgets
* Tweak: Added default dynamic title for archives in Theme Builder
* Tweak: Added condition to show `Centered Slides` control in Media Carousel widget
* Tweak: Added notice bar in the Editor when the license is expired or not activated
* Tweak: Replaced `select` control with `choose` control in Price List widget
* Tweak: Removed Font Awesome 4 dependencies from the Editor
* Tweak: Minor styling tweaks in the Popup publish modal
* Tweak: Hide ordering form in Products widget on front page
* Tweak: Removed page title markup when 'Hide Title' is active
* Tweak: Added style controls for HTML field in Form widget
* Fix: Form widget Date picker makes the Popup builder disappear ([#7240](https://github.com/elementor/elementor/issues/7240))
* Fix: Sticky element stop point stops working on viewport resize ([#7884](https://github.com/elementor/elementor/issues/7884))
* Fix: Copy-Paste style not pasting the Pointer option in Nav Menu widget ([#8497](https://github.com/elementor/elementor/issues/8497))
* Fix: Missing Print icon in Share Buttons ([#8506](https://github.com/elementor/elementor/issues/8506))
* Fix: UI style glitch in Blockquote widget when viewing from iPad
* Deprecated: `DB::save_editor()` - Remove usage of this method ([Deprecation Post](https://developers.elementor.com/v2-6-0-planned-deprecations/))
* Deprecated: `DB::get_plain_editor()` - Remove usage of this method ([Deprecation Post](https://developers.elementor.com/v2-6-0-planned-deprecations/))

#### 2.5.14 - 2019-07-14
* Fix: Better WC Related Product grid support to various themes ([#8555](https://github.com/elementor/elementor/issues/8555))

#### 2.5.13 - 2019-07-11
* Fix: Better WC grid support to various themes

#### 2.5.12 - 2019-07-10
* Fix: Grid for WooCommerce Archive Product widget
* Fix: Remove redundant `whitespace` CSS property causes style glitch in iPad
* Tweak: Added more compatibility for Elementor v2.6

#### 2.5.11 - 2019-07-02
* Fix: Close icon missing from Nav Menu widget ([#8460](https://github.com/elementor/elementor/issues/8460))
* Fix: Elementor Pro v2.5.10 shows PHP notice regarding notice bar ([#8461](https://github.com/elementor/elementor/issues/8461))
* Fix: Fatal error when deleting used Pods fields ([#8396](https://github.com/elementor/elementor/issues/8396))
* Fix: Missing dropdown icon in conditions screen

#### 2.5.10 - 2019-05-28
* Tweak: Added compatibility for the upcoming release of Elementor v2.6
* Tweak: Error caused by empty Rows & Columns values in Products widget ([#8261](https://github.com/elementor/elementor/issues/8261))
* Fix: Do not unset `product` CPT if it's not from WooCommerce ([#8160](https://github.com/elementor/elementor/issues/8160))
* Fix: Column Spacing not working in WooCommerce Archive Products widget ([#8285](https://github.com/elementor/elementor/issues/8285))
* Fix: Title styling not working in Products Categories widget
* Fix: Empty value in Dynamic Pods Gallery dropdown using Safari browser
* Fix: WooCommerce archives included in "All Archives" condition

#### 2.5.9 - 2019-05-28
* Tweak: Removed `auto-confirm` control from MailPoet to support new version of MailPoet
* Fix: Multiple Custom Fonts not rendered in the editor
* Fix: Products `sale` query - handle exclude by manual selection.
* Fix: Product Categories grid row & column style
* Fix: Form integration AJAX cache override
* Fix: Removed redundant CSS on Canvas & Header-Footer page templates

#### 2.5.8 - 2019-05-06
* Fix: Popup entrance animation not working in frontend
* Fix: Popup Exit Intent trigger activated multiple times

#### 2.5.7 - 2019-05-05
* Fix: Embedded video keeps playing after a Popup is closed ([#7875](https://github.com/elementor/elementor/issues/7875))
* Fix: Maximum call stack size exceeded error in Safari ([#7824](https://github.com/elementor/elementor/issues/7824))
* Fix: Entrance animations not appearing on Popup reopen ([#7395](https://github.com/elementor/elementor/issues/7395))
* Fix: WC variations select style glitch in several themes ([#8008](https://github.com/elementor/elementor/issues/8008))
* Fix: Theme Builder taxonomy conditions not retrieving proper results in edge cases

#### 2.5.6 - 2019-04-29
* Tweak: Removed `Shortcode` dynamic from Image, Gallery and Media control
* Fix: Popup not inheriting entrance animation in responsive mode ([#7809](https://github.com/elementor/elementor/issues/7809))
* Fix: Terms autocomplete retrieves wrong results in Query Control
* Fix: Query Control Related by author glitches in edge cases
* Fix: Query Control using terms for Products widget
* Fix: Posts cards style glitch in small screens
* Fix: Display conditions delete icon missing in small screens
* Fix: Avoid rendering Menu Cart widget in WordPress native editor

#### 2.5.5 - 2019-04-08
* Tweak: Allow text selection inside a Popup
* Fix: Added backwards compatibility for `tax_query` in Query Control ([#7751](https://github.com/elementor/elementor/issues/7751))
* Fix: Missing arguments for `widget_title` filter ([#7745](https://github.com/elementor/elementor/issues/7745))

#### 2.5.4 - 2019-04-03
* Fix: Move Query from using `term_id` to `term_taxonomy_id` ([#7653](https://github.com/elementor/elementor/issues/7653))
* Fix: Offset manipulation hook removal in Query control
* Fix: Missing form field `ID` in some edge cases ([#7711](https://github.com/elementor/elementor/issues/7711), [#7660](https://github.com/elementor/elementor/issues/7660))

#### 2.5.3 - 2019-03-31
* Tweak: Updated Google Calendar dynamic tag URL ([#7673](https://github.com/elementor/elementor/issues/7673))
* Fix: Missing form field names ([#7651](https://github.com/elementor/elementor/issues/7651))
* Fix: PHP 5.4 backward compatibility in Query Control ([#7633](https://github.com/elementor/elementor/issues/7633))
* Fix: `products_deprecated` Query Control module compatibility ([#7654](https://github.com/elementor/elementor/issues/7654))
* Fix: Changed query method from `term_id` to `term_taxonomy_id` ([#7653](https://github.com/elementor/elementor/issues/7653))

#### 2.5.2 - 2019-03-27
* Fix: Overwrite parent widget type in Global Widget ([#7632](https://github.com/elementor/elementor/issues/7632))
* Fix: Avoid Duplicates option not working in Query Control ([#7635](https://github.com/elementor/elementor/issues/7635))
* Fix: Manual Selection option not working in Query Control ([#7634](https://github.com/elementor/elementor/issues/7634))
* Fix: Incorrect condition caused handlers issues inside popup

#### 2.5.1 - 2019-03-26
* Fix: Query Control invalid call to deprecated action ([#7619](https://github.com/elementor/elementor/issues/7619))
* Tweak: Renamed action hook from `elementor_pro/{$widget_name}/query/{$query_id}` to `elementor/query/{$query_id}`
* Tweak: Renamed filter hook from `elementor_pro/query_control/get_query_args/current_query` to `elementor/query/get_query_args/current_query`

#### 2.5.0 - 2019-03-26
* New: Introducing Motion Effects including Scrolling & Mouse effects ([#72](https://github.com/elementor/elementor/issues/72))
* New: Introducing Related Posts for Query Control ([#7306](https://github.com/elementor/elementor/issues/7306), [#7490](https://github.com/elementor/elementor/issues/7490))
* New: Introducing Date query for Query Control
* New: Introducing Sticky Posts support for Query Control ([#2501](https://github.com/elementor/elementor/issues/2501))
* Tweak: Added option to open a Popup by a custom selector ([#6871](https://github.com/elementor/elementor/issues/6871), [#6876](https://github.com/elementor/elementor/issues/6876), [#7258](https://github.com/elementor/elementor/issues/7258))
* Tweak: Option to count when Popup is closed in "Show up to X times" Advanced Rule
* Tweak: Added full border radius control options inside Popup
* Tweak: Changed exit intent icon in Popups
* Tweak: Show only one popup in its own preview
* Tweak: Added responsive support to Popup entrance animation control
* Tweak: Conditions - Singular `All Pages` string changed to `Pages`
* Tweak: Added form field shortcode support for Drip tags ([#7000](https://github.com/elementor/elementor/issues/7000))
* Tweak: Added dynamic capabilities to Price List widget ([#7258](https://github.com/elementor/elementor/issues/7258))
* Tweak: Added Dynamic capabilities to Custom Attributes ([#6779](https://github.com/elementor/elementor/issues/6779))
* Tweak: Added dynamic capabilities to Flip Box widget ([#6986](https://github.com/elementor/elementor/issues/6986))
* Tweak: Decrease `z-index` for Nav Menu ([#6869](https://github.com/elementor/elementor/issues/6869))
* Tweak: Changed "Scrolling Effects" section label to "Motion Effects"
* Tweak: Use filter `get_meta_viewport` for header templates ([#7043](https://github.com/elementor/elementor/issues/7043))
* Tweak: use filterable `Util::get_public_post_types()` in Theme Builder ([#7172](https://github.com/elementor/elementor/issues/7172))
* Tweak: Added Cloudflare rocket-loader support ([#7443](https://github.com/elementor/elementor/issues/7443))
* Tweak: Added responsive support to WC Products Columns & Rows Gap controls ([#6913](https://github.com/elementor/elementor/issues/6913))
* Tweak: WC Menu cart "View Cart" & "Checkout" buttons styling
* Fix: Custom ID reset to default when dragging repeater
* Fix: Conflict between archive-products widget and WC customizer
* Fix: Add to Cart widget `spacing` and `space-between`
* Fix: Library view when creating a new Header or Footer
* Fix: Post types labels missing on Add New Template modal

#### 2.4.8 - 2019-03-11
* Fix: Missing query section in Products widget
* Fix: Missing Taxonomy controls in Products widget in edge cases

#### 2.4.7 - 2019-03-06
* Fix: Compatibility Global Widget with Elementor v2.5.0+

#### 2.4.6 - 2019-03-04
* Fix: Pods gallery dynamic when empty ([#7127](https://github.com/elementor/elementor/issues/7127))
* Fix: Duplicate call for conditions screen issue
* Fix: Compatibility with Elementor v2.5.0

#### 2.4.5 - 2019-02-18
* Fix: Image size issue in Testimonial Carousel ([#7058](https://github.com/elementor/elementor/issues/7058))
* Fix: MailChimp groups not saved in a form integration ([#7083](https://github.com/elementor/elementor/issues/7083))
* Fix: Show popup preview only on it's own preview
* Fix: Elementor dashboard templates URL corrupted links in edge cases

#### 2.4.4 - 2019-02-11
* Tweak: Added ACF Date Time Picker field support ([#6690](https://github.com/elementor/elementor/issues/6690))
* Tweak: Changed the term of `All Posts` condition to `Posts`
* Fix: Added `<IfModule>` to avoid 500 error when `mod-headers` is missing ([#7034](https://github.com/elementor/elementor/issues/7034))
* Fix: Include post CSS deletion in Global Widget update ([#6856](https://github.com/elementor/elementor/issues/6856))
* Fix: `Textarea` default value in Forms Widget ([#6934](https://github.com/elementor/elementor/issues/6934))
* Fix: MailPoet latest version caused fatal error ([#6996](https://github.com/elementor/elementor/issues/6996))
* Fix: Fatal Error caused by calling MailPoet deleted method
* Notice: MailPoet `Auto Confirm` option will now default to "On"

#### 2.4.3 - 2019-01-30
* Fix: Custom Add to Cart widget responsive alignment settings
* Fix: Links in Post Info widget
* Fix: WooCommerce `View Cart` string translate
* Fix: Wrapper classes for header/footer templates ([#6884](https://github.com/elementor/elementor/issues/6884))

#### 2.4.2 - 2019-01-25
* Tweak: Added pixel units to Close Button position control in Popups
* Fix: Exclude error in WC Products widget

#### 2.4.1 - 2019-01-24
* Tweak: Added CSS classes control to Popup ([#6826](https://github.com/elementor/elementor/issues/6826))
* Tweak: Added responsive image size to Testimonial Carousel widget
* Fix: PHP warning when Toolset Date dynamic is empty ([#6842](https://github.com/elementor/elementor/issues/6842))
* Fix: Support of exclude-ids in WC Products widget
* Fix: Popup close button not clickable
* Fix: Alignment justify issue of Add to Cart widget ([#6749](https://github.com/elementor/elementor/issues/6749))
* Fix: Bad anchors breaks the page JS
* Fix: Popup overlay shown when turned off

#### 2.4.0 - 2019-01-21
* New: Introducing Popup Builder ([#628](https://github.com/elementor/elementor/issues/628))
* New: Added `Popup` Dynamic Tag
* New: Added `Popup` forms action after submit
* New: Added User Info dynamic tag ([#6322](https://github.com/elementor/elementor/issues/6322))
* Tweak: Added dynamic capabilities for "Nothing Found" message
* Tweak: Added `elementor_pro/theme_builder/archive/escape_nothing_found_message` Filter to avoid HTML escaping in "Nothing Found" message ([#6053](https://github.com/elementor/elementor/issues/6053))
* Tweak: Added `add_doc_to_location` method to Allow insertion of a document to a location
* Fix: `z-index` issue with CTA widget ([#6486](https://github.com/elementor/elementor/issues/6486))
* Fix: Hide the Post Content widget and show it only in a Single document
* Fix: `selector` replacement in Custom CSS
* Fix: Apply `the_content` on the real content only
* Fix: CSS for WC products selector ([#6559](https://github.com/elementor/elementor/issues/6559))
* Fix: Odnoklassniki share URL ([#6638](https://github.com/elementor/elementor/issues/6638))
* Fix: Custom link new tab in Post Info widget ([#5766](https://github.com/elementor/elementor/issues/5766))
* Fix: `nofollow` link in Flip Box & CTA widgets
* Fix: Post Terms in Post Info widget
* Fix: Added screen reader to some icons & buttons for better accessibility ([#5386](https://github.com/elementor/elementor/issues/5386))
* Fix: Accessibility labels in Reviews widget ([#6630](https://github.com/elementor/elementor/issues/6630))
* Fix: Link to cart page not working when WooCommerce Subscriptions is active
* Fix: MailChimp Selected list not showing on reloading in Form widget
* Fix: Sub-menu arrow position in Nav Menu widget
* Fix: Conflict with WP Security Audit Log plugin ([#6648](https://github.com/elementor/elementor/issues/6648))

#### 2.3.1 - 2018-12-19
* Fix: Template widget search functionality ([#6473](https://github.com/elementor/elementor/issues/6473))
* Fix: Apply `the_content` filter to post content in theme builder

#### 2.3.0 - 2018-12-17
* New: Introducing Discord Integration for Forms ([#4218](https://github.com/elementor/elementor/issues/4218))
* New: Introducing Slack Integration for Forms
* New: Introducing MailerLite Integration for Forms ([#4462](https://github.com/elementor/elementor/issues/4462))
* New: Activate Elementor Pro plugin by connecting to Elementor account
* Tweak: Added `elementor_pro/utils/get_public_post_types` filter hook ([#5900](https://github.com/elementor/elementor/issues/5900))
* Tweak: Added `loop_start` & `the_content` hooks for Post Content ([#6173](https://github.com/elementor/elementor/issues/6173))
* Tweak: Removed Custom Attributes from Page Settings
* Tweak: Always add the Custom CSS control to the Advanced tab
* Fix: In sub Term condition false positive in edge cases
* Fix: ToolSet Dynamic Image fallback
* Fix: Style glitch with the dropdown color in Nav Menu widget
* Fix: Style glitch in the Conditions screen in Safari browser
* Fix: Ribbon in the CTA widget obscures drop down menu ([#6080](https://github.com/elementor/elementor/issues/6080))
* Fix: The color of label won't change color in Widget login

#### 2.2.5 - 2018-12-11
* New: Add Style Tab & Custom CSS for Header & Footer Templates.
* Tweak: Added a better identifier for subpages ([#6362](https://github.com/elementor/elementor/issues/6362))
* Tweak: Removed Custom Attributes from page settings
* Fix: Yahoo event URL date issue ([#6354](https://github.com/elementor/elementor/issues/6354))
* Fix: Allow timezone settings in Google event URL ([#6354](https://github.com/elementor/elementor/issues/6354))
* Fix: Avoid `z-index` changes by `nanocss` in build process
* Fix: Added missing WC upsells products CSS
* Fix: Nav Menu dropdown losing color on hover
* Fix: WC Product Add-ons CSS compatibility

#### 2.2.4 - 2018-12-04
* Fix: Global widget not saving changes ([#6340](https://github.com/elementor/elementor/issues/6340))
* Fix: Dynamic tags support in Blockquote widget ([#6334](https://github.com/elementor/elementor/issues/6334))
* Fix: Forms Redirect URL action when using form field values with spaces

#### 2.2.3 - 2018-11-29
* Fix: Missing "Edit Template" in Template widget ([#6271](https://github.com/elementor/elementor/issues/6271))
* Fix: Follow menu anchors with UTF8 characters in Nav Menu
* Fix: Show only supported templates in Template widget
* Fix: Revert conflicting fix for a default order for WC archive

#### 2.2.2 - 2018-11-28
* Fix: Lightbox dynamic tag crashes the editor

#### 2.2.1 - 2018-11-28
* New: Added `ACF File` Dynamic tag to support text controls.
* Tweak: Added option to hide item count bubble when cart is empty in Menu Cart widget ([#6223](https://github.com/elementor/elementor/issues/6223))
* Tweak: Added Actions group for Lightbox and Contact URL tags
* Tweak: Added filter `elementor_pro/dynamic_tags/shortcode/should_escape` to avoid escaping in Shortcode dynamic tag
* Tweak: MailPoet3 integration allow Subscriber to to subscribe to multiple lists
* Tweak: Added front-end max file size validation for upload fields
* Tweak: Added `by-author` per Post-Type condition for theme builder
* Fix: Template widget panel not showing the selected template ([#6271](https://github.com/elementor/elementor/issues/6271))
* Fix: Conflict between ACF with Safari browser on Select option in Dynamic tag
* Fix: Add post classes only for the Single template
* Fix: Set document type as not editable for unsupported document like Global widget
* Fix: Avoid duplicate query for current WC product query
* Fix: Product Archive showing oldest products instead of latest
* Fix: CSS reset in Posts widget using cards skin

#### 2.2.0 - 2018-11-19
* New: Introducing Custom Attributes ([#290](https://github.com/elementor/elementor/issues/290), [#3990](https://github.com/elementor/elementor/issues/3990))
* New: Added evergreen option for Countdown widget ([#4459](https://github.com/elementor/elementor/issues/4459))
* New: Added expire actions option for Countdown widget ([#5242](https://github.com/elementor/elementor/issues/5242))
* New: Introducing Reviews widget ([#3854](https://github.com/elementor/elementor/issues/3854))
* New: Introducing Sitemap widget ([#5594](https://github.com/elementor/elementor/issues/5594))
* New: Added Request Parameter dynamic tag ([#4934](https://github.com/elementor/elementor/issues/4934))
* New: Added Shortcode dynamic tag
* New: Added Image and Video Lightbox dynamic tag
* New: Added Contact URL dynamic tag
* New: Added Featured Image Data dynamic tag
* New: Added default value to each field in the Form widget ([#4268](https://github.com/elementor/elementor/issues/4268))
* New: Added "Any Child Of" condition to template conditions ([#5321](https://github.com/elementor/elementor/issues/5321))
* New: Added "In Child" condition to template conditions ([#5587](https://github.com/elementor/elementor/issues/5587))
* Tweak: Added Form Redirect URL with form values ([#2564](https://github.com/elementor/elementor/issues/2564))
* Tweak: Added default post classes to template wrapper ([#5959](https://github.com/elementor/elementor/issues/5959))
* Tweak: Better labels for terms in Query control ([#6092](https://github.com/elementor/elementor/issues/6092))
* Tweak: Renamed "Child Of" templates condition to "Direct Child Of"
* Tweak: Added `elementor/theme/get_location_templates/condition_sub_id` filter hook to allow template condition translations
* Tweak: Load the Template Library widget via Ajax for better performance
* Tweak: Added 404 page title for Page Title dynamic tag
* Fix: Menu Cart Toggle has # URL link ([#6141](https://github.com/elementor/elementor/issues/6141))
* Fix: Alignment issue in Nav Menu widget ([#5790](https://github.com/elementor/elementor/issues/5790))
* Fix: Avoid potential security risk in forms
* Fix: Template By Author condition conflicts with 404 page
* Fix: Restored WC Product Content widget in Single Product template
* Fix: Theme Builder Preview URLs for date archives and 404 pages
* Fix: Highlight active menu anchor items only when scrolled into view
* Fix: Carousel Pagination Progress style to support new Swiper version

#### 2.1.13 - 2018-11-12
* Tweak: Added compatibility for new brand Finder in v2.3.0
* Fix: Settings conflict when there are multiple carousels in the page

#### 2.1.12 - 2018-11-05
* Tweak: Added compatibility for the upcoming release of Elementor v2.3
* Tweak: Better performance for Template Library widget
* Fix: Fatal error if a taxonomy used in a dynamic field is removed ([#6029](https://github.com/elementor/elementor/issues/6029))
* Fix: Date Time dynamic tag now respect site language ([#6001](https://github.com/elementor/elementor/issues/6001))
* Fix: Custom CSS printed twice in the front-end
* Fix: ACF Image field PHP warning ([#6051](https://github.com/elementor/elementor/issues/6051))

#### 2.1.11 - 2018-10-22
* New: Added ACF local fields compatibility
* Tweak: Re-brand TypeKit by Adobe Fonts integration
* Fix: Exclude `is_embed` from Singular condition ([#5915](https://github.com/elementor/elementor/issues/5915))
* Fix: Avoid conflict with Ad Blockers and Share Buttons
* Fix: Current date time dynamic tag now shows local time
* Fix: Avoid conflict with 3rd party plugins that filter the permalink
* Fix: Avoid PHP warning when no groups are selected for MailChimp integration
* Fix: Avoid PHP warning if checkbox field is empty for ACF
* Fix: Respect password protected for a WC single product template
* Fix: Respect `order` settings for WC archive also without pagination

#### 2.1.10 - 2018-10-09
* Tweak: Added responsive alignment control for Share Buttons widget ([#5821](https://github.com/elementor/elementor/issues/5821))
* Tweak: Added link control to Animated Headline widget
* Fix: Mobile nav menu jump on RTL ([#5711](https://github.com/elementor/elementor/issues/5711))
* Fix: Responsive alignment control in Add to Cart widget ([#5830](https://github.com/elementor/elementor/issues/5830))
* Fix: Added IE compatibility for Animated Headline widget
* Fix: Post Content widget is now shown only on `Single` templates
* Fix: Query Control Pagination with offset

#### 2.1.9 - 2018-09-17
* Tweak: Added Centered Slides option for Slideshow carousel
* Fix: Allow only public CPT for Manual Selection in Query Control ([#5091](https://github.com/elementor/elementor/issues/5091))
* Fix: ACF Gallery option support ([#5344](https://github.com/elementor/elementor/issues/5344))
* Fix: Page scrolling on resize when sticky is active ([#5740](https://github.com/elementor/elementor/issues/5740))
* Fix: Edit custom name for Global Widget in the Navigator ([#5689](https://github.com/elementor/elementor/issues/5689))
* Fix: Coverflow transition effect in Carousel
* Fix: Weird mobile behavior with Cube effect in Carousel
* Fix: Show the first thumbnail in the Slideshow carousel correctly

#### 2.1.8 - 2018-09-12
* Tweak: Added styling options for WC Additional Information widget
* Tweak: Added styling options for 'View Cart' link in Products widget
* Fix: 3rd party plugin support for WC single product template ([#5338](https://github.com/elementor/elementor/issues/5338))
* Fix: Layout of Related Product widget with WC native style

#### 2.1.7 - 2018-09-03
* New: WC Archive Description widget
* Tweak: Added blend mode to Slides widget background overlay ([#5555](https://github.com/elementor/elementor/issues/5555))
* Tweak: Added 'Current Subcategories' option to Product Categories widget
* Fix: Added default vertical alignment in Author Box widget ([#5589](https://github.com/elementor/elementor/issues/5589))
* Tweak: Added more blend mode options for CTA widget
* Tweak: Improved plugin updater method based on WordPress version
* Fix: Improved IE compatibility for Posts and Portfolio widgets
* Fix: Added default gap for products pagination
* Fix: Post thumbnail flickering in Safari browser
* Fix: Close mobile nav menu on click only in full-width mode
* Fix: Added trailing slash to pagination links in Posts widget

#### 2.1.6 - 2018-08-28
* New: WC Product Category Image widget and Dynamic tag ([#5117](https://github.com/elementor/elementor/issues/5117))
* Tweak: Allow HTML in Excerpt widget ([#5491](https://github.com/elementor/elementor/issues/5491))
* Tweak: Added compatibility for the upcoming release of Elementor v2.2
* Tweak: Deprecated Follow option in the Facebook Button widget
* Fix: Posts widget grid in Safari & IE11 (Depended on Elementor v2.2)
* Fix: Posts widget CSS when using cards skin in masonry mode
* Fix: ACF Image & ACF URL option support ([#5344](https://github.com/elementor/elementor/issues/5344))
* Fix: WC product gallery links in RTL
* Fix: Dynamic tags in Call To Action widget

#### 2.1.5 - 2018-08-21
* Tweak: Added compatibility for the upcoming release of Elementor v2.2
* Fix: Posts Widget layout theme compatibility
* Fix: Added compatibility for WooCommerce native style

#### 2.1.4 - 2018-08-19
* Fix: Layout issue compatibility with themes caused by v2.1 ([#5442](https://github.com/elementor/elementor/issues/5442))
* Fix: Dynamic setting in Pricing Table widget ([#5460](https://github.com/elementor/elementor/issues/5460))
* Fix: Hide Target URL control if is not necessary in Blockquote widget
* Fix: Selector specificity for WooCommerce Products widget
* Fix: WooCommerce conflicts in the editor in edge cases

#### 2.1.3 - 2018-08-15
* Fix: Thumbnails in the Posts widget jumping ([#5350](https://github.com/elementor/elementor/issues/5350))
* Fix: Responsive grid in the Share Buttons widget ([#5375](https://github.com/elementor/elementor/issues/5375))
* Fix: Added missing `setup_postdata` for Product Data Tabs widget
* Fix: Rollback to older version of Flip Box widget to resolve 3D depth issue ([#5399](https://github.com/elementor/elementor/issues/5399))
* Fix: Allowed types in the Upload File field are now case-insensitive ([#5254](https://github.com/elementor/elementor/issues/5254))
* Fix: Carousel behavior when using a single slide

#### 2.1.2 - 2018-08-12
* Fix: Error when ACF Pro is not installed ([#5367](https://github.com/elementor/elementor/issues/5367))
* Fix: Edge cases in Inspector where document is a boolean
* Fix: Edge cases for incorrect file fields in PODS

#### 2.1.1 - 2018-08-09
* Fix: Highlighted text in Animated Headline widget ([#5345](https://github.com/elementor/elementor/issues/5345))
* Fix: Flip Box effect issues
* Fix: ACF Options page fields support ([#5329](https://github.com/elementor/elementor/issues/5329))
* Fix: Import Pro templates in edge cases

#### 2.1.0 - 2018-08-07
* New: Introducing WooCommerce Builder ([#1690](https://github.com/elementor/elementor/issues/1690))
* New: Introducing 12 new dynamic tags & widgets for WooCommerce: Gallery, Image, Price, Rating, Description, Breadcrumbs, Data Tabs, Stock, Related, Upsell, Title & Archive
* New: Introducing Cart Menu widget ([#4220](https://github.com/elementor/elementor/issues/4220), [#4600](https://github.com/elementor/elementor/issues/4600))
* New: Added integration with Toolset ([#2949](https://github.com/elementor/elementor/issues/2949))
* New: Added integration with Pods ([#4129](https://github.com/elementor/elementor/issues/4129))
* New: Added stick to bottom in scrolling effects ([#4799](https://github.com/elementor/elementor/issues/4799))
* New: Added Scrolling Effect to Widgets under advanced tab
* New: Introducing Internal URL Dynamic Tag
* Tweak: Added a Last Updated Date in the Post Info widget ([#4597](https://github.com/elementor/elementor/issues/4597))
* Tweak: Added Redirect after Logout option for Login widget ([#4447](https://github.com/elementor/elementor/issues/4447))
* Tweak: Avoid repeating posts when using more than one in the Posts widget ([#1878](https://github.com/elementor/elementor/issues/1878))
* Tweak: Add Custom Query hook for Query control ([More Info](https://developers.elementor.com/custom-query-filter/)) ([#1748](https://github.com/elementor/elementor/issues/1748))
* Tweak: Added form-message style ([#1180](https://github.com/elementor/elementor/issues/1180))
* Tweak: Added dynamic tag for button on the Price Table widget ([#4242](https://github.com/elementor/elementor/issues/4242))
* Tweak: Added dynamic tag for Call to action widget ([#4767](https://github.com/elementor/elementor/issues/4767))
* Tweak: Added Dynamic Tags support for Google Map field ([#4602](https://github.com/elementor/elementor/issues/4602))
* Tweak: Added an support for `label|value` in options field ([#4594](https://github.com/elementor/elementor/issues/4594))
* Tweak: Added `by-author` condition for theme builder ([#4681](https://github.com/elementor/elementor/issues/4681))
* Tweak: Added Activate/Deactivate license key via WP-CLI command ([#4149](https://github.com/elementor/elementor/issues/4149))
* Tweak: Added `is_scroll` trigger to scrolling effect ([#4340](https://github.com/elementor/elementor/issues/4340))
* Tweak: Added In Same Term support for Post Navigation widget ([#4177](https://github.com/elementor/elementor/issues/4177))
* Tweak: Added responsive control for Slides To Scroll control in all carousel widgets ([#3697](https://github.com/elementor/elementor/issues/3697))
* Tweak: Added style options for Posts widget ([#1335](https://github.com/elementor/elementor/issues/1335))
* Tweak: Added button CSS ID for Forms widget
* Tweak: Added pixel units to Post-Info divider height control
* Tweak: Rewrite sticky library to handle with stretch section, auto scroller & more bugs
* Tweak: Re-organize the panel categories per document type
* Tweak: Added ACF support for `options-page` fields
* Tweak: Added dynamic tag for Animated headlines
* Tweak: Added dynamic tag for BlockQuote widget
* Fix: Elementor Full Width template in GeneratePress theme ([#4817](https://github.com/elementor/elementor/issues/4817))
* Fix: Checkbox fields can accidentally be set to required ([#4324](https://github.com/elementor/elementor/issues/4324))
* Fix: Initial slide in Carousel widget
* Fix: Stay on current slide while editing in Carousel widget
* Fix: Default slides per device in Carousel widget
* Deprecated: Woo Products, Woo Elements & Single elements widgets

#### 2.0.18 - 2018-07-27
* Fix: Global widget error on saving page

#### 2.0.17 - 2018-07-26
* Fix: Sub menu indicator direction in Nav Menu widget
* Fix: Change the title and icon for Global Widget when is moving
* Fix: CSS wrapper selector for Page Document

#### 2.0.16 - 2018-07-16
* Tweak: CSS Filter Control module is now included in Elementor
* Fix: Border gap in Portfolio widget when item gap set as `0` ([#5077](https://github.com/elementor/elementor/issues/5077))
* Fix: Restore current query after get Global Widget data
* Fix: Add action item in History on unlink Global widget

#### 2.0.15 - 2018-07-10
* Fix: Dropdown menu items collapsing when activated ([#4996](https://github.com/elementor/elementor/issues/4996))
* Fix: GMT offset in Countdown widget ([#4997](https://github.com/elementor/elementor/issues/4997))

#### 2.0.14 - 2018-07-08
* Tweak: Added set method to form record for developers ([#4983](https://github.com/elementor/elementor/issues/4983))
* Fix: Autoplay option for Carousels
* Fix: Close mobile menu on item click in the Nav Menu widget

#### 2.0.13 - 2018-07-03
* Tweak: Added compatibility for Elementor v2.1

#### 2.0.12 - 2018-07-02
* Fix: Global widget PHP notices
* Fix: Slides widget active slide lost focus when clicking Editor tabs
* Fix: Form select field send all selected values on multiple selection
* Fix: Validate time field only if it's not empty
* Fix: ConvertKit API not saving name field

#### 2.0.11 - 2018-06-12
* Fix: Theme Builder `author` archive condition ([#4593](https://github.com/elementor/elementor/issues/4593))
* Fix: Respect password protected posts in Post Content widget
* Fix: Custom Fonts redirect to post edit screen in edge cases.

#### 2.0.10 - 2018-06-05
* Tweak: Added `elementor/theme/get_location_templates/template_id` filter hook for multi-language plugins
* Fix: Dynamic Post Terms missing taxonomies if the taxonomy is registered to more then one post types (#4386)
* Fix: Fields shortcode missing after removing a field in Form widget
* Deprecated: `get_theme_templates_by_location` is replaced by `get_location_templates`

#### 2.0.9 - 2018-05-28
* Fix: Compatibility for PHP version 5.4

#### 2.0.8 - 2018-05-28
* Tweak: Added Active state for Nav Menu dropdown
* Tweak: Added style for "Nothing Found" Message for Archive Posts widget
* Tweak: Removed caption control in Site Logo widget
* Tweak: Added option to position currency symbol before/after In Price Table widget
* Fix: Query control manual selection does not show more than 10 items ([#4479](https://github.com/elementor/elementor/issues/4479))
* Fix: Styling glitch with terms list in Post Info widget ([#4342](https://github.com/elementor/elementor/issues/4342))
* Fix: Sub terms missing in Query control in edge cases ([#4527](https://github.com/elementor/elementor/issues/4527))
* Fix: Avoid rendering a template if it's not published
* Fix: 404 Page style not working
* Fix: Price Table button with hover animation not working in editor
* Fix: Styling conflict in Call to Action widget
* Fix: Global Widget tab translation
* Fix: Adding parent wrapper class to Site Title widget

#### 2.0.7 - 2018-05-16
* Fix: Content not found on section when single is set to "All Singular"
* Fix: Open 404 template library for 404 page
* Tweak: Added CSS prefix for dev files
* Tweak: Removed product post type from display conditions

#### 2.0.6 - 2018-05-15
* Tweak: Set type on create new single template
* Tweak: Always show the conditions dialog in the Draft status
* Tweak: Added document type `widget`
* Tweak: Added Post Custom Field tag to URL category
* Fix: When ACF Field Groups are Empty ([#4428](https://github.com/elementor/elementor/issues/4428))
* Fix: Links inside carousel in edge cases
* Fix: Responsive issue in My Templates area
* Fix: Image alignment for post content with text alignment
* Fix: Post Content widget when preview post is missing
* Fix: Global Widget tab translation
* Fix: Style settings for Post / Archive Title widgets

#### 2.0.5 - 2018-05-08
* Fix: Creating a CPT with name like document-type breaks the editor ([#4203](https://github.com/elementor/elementor/issues/4203))
* Fix: Added support for new version of reCAPTCHA
* Fix: Added fallback for controls after `post_status`
* Fix: Required field in forms widget
* Fix: Media Carousel in the Coverflow skin
* Fix: 404 Page show wrong template in edge cases
* Fix: Save the default menu in the Nav Menu widget

#### 2.0.4 - 2018-05-02
* Tweak: Added parent's class for extended widgets
* Tweak: Set entire-site as default to avoid conflict with save without conditions
* Tweak: Initialize global model when it's needed
* Tweak: Removed some duplicate strings
* Tweak: Query control now includes empty terms
* Tweak: Design polish for conditions dialog
* Tweak: Decreasing `minimumInputLength` to 1 of select2
* Fix: Editor not loading for single templates in edge cases
* Fix: Select2 in Safari takes it's time to get the original select width ([#4310](https://github.com/elementor/elementor/issues/4310))
* Fix: Slides per view not working for some effects
* Fix: New slides not showing in the editor
* Fix: Editor for section without a defined location, defaults to content area

#### 2.0.3 - 2018-04-24
* Tweak: Optimize CSS for Post Info widget ([#4214](https://github.com/elementor/elementor/issues/4214), [#4216](https://github.com/elementor/elementor/issues/4216), [#4225](https://github.com/elementor/elementor/issues/4225))
* Fix: Double render on frontend view in core locations
* Fix: Masonry not working in edge cases
* Fix: Added default setting for Author Info tag

#### 2.0.2 - 2018-04-18
* Fix: Regenerate conditions to include all templates

#### 2.0.1 - 2018-04-17
* Tweak: Added div wrapper for Nothing Found massage ([#4136](https://github.com/elementor/elementor/issues/4136))
* Tweak: Show empty categories in Query Control & Display Conditions ([#4127](https://github.com/elementor/elementor/issues/4127))
* Tweak: Added Divider control for Post Info widget
* Fix: Update admin links in Yoast Breadcrumbs widget
* Fix: Sticky element conflict with clearfix CSS
* Fix: Compatibility for PHP version 5.4.32 & 5.5.16 and below
* Fix: Avoid running `wp_head` hooks twice

#### 2.0.0 - 2018-04-16
* New: Introducing Theme Builder - [Release Post](https://elementor.com/introducing-theme-builder/) ([#417](https://github.com/elementor/elementor/issues/417))
* New: Introducing Locations API to inject custom location templates
* New: Introducing Display Conditions for all dynamic templates
* New: Introducing Dynamic Tag feature - a new way to add dynamic content to your design
* New: Introducing Role manager to allow "Content Only mode" ([#483](https://github.com/elementor/elementor/issues/483), [#653](https://github.com/elementor/elementor/issues/653), [#885](https://github.com/elementor/elementor/issues/885))
* New: Introducing 9 new dynamic widgets: Archive Posts, Archive Title, Post Content, Post Info, Post Title, Post Excerpt, Featured Image, Site Logo & Site Name ([#543](https://github.com/elementor/elementor/issues/543))
* New: Introducing Developers area with guides and API documentation - [Release Post](https://elementor.com/introducing-elementor-developer-api/) ([#451](https://github.com/elementor/elementor/issues/451))
* New: Introducing [Elementor Hello Theme](https://github.com/elementor/elementor-hello-theme) - A demonstration theme for developers
* New: Added new type of templates: Header, Footer, Single and Archive ([#2761](https://github.com/elementor/elementor/issues/2761), [#2623](https://github.com/elementor/elementor/issues/2623), [#2109](https://github.com/elementor/elementor/issues/2109), [#2061](https://github.com/elementor/elementor/issues/2061), [#2439](https://github.com/elementor/elementor/issues/2439))
* New: Design 404 page with Single template ([#1558](https://github.com/elementor/elementor/issues/1558))
* New: Design Search Results with Archive template ([#3196](https://github.com/elementor/elementor/issues/3196), [#2590](https://github.com/elementor/elementor/issues/2590))
* New: Added Scrolling Effect for sections including *Sticky Element* per device ([#2412](https://github.com/elementor/elementor/issues/2412))
* New: Integration with Custom Fields ([#2054](https://github.com/elementor/elementor/issues/2054))
* New: Partial support for Toolset integration ([#2949](https://github.com/elementor/elementor/issues/2949))
* New: Partial support for Pods integration ([#2169](https://github.com/elementor/elementor/issues/2169))
* New: Partial support for ACF integration ([#2041](https://github.com/elementor/elementor/issues/2041), [#2059](https://github.com/elementor/elementor/issues/2059))
* Tweak: Add custom fields support for ActiveCampaign ([#3531](https://github.com/elementor/elementor/issues/3531))
* Tweak: Allow brackets in Forms Tel field
* Tweak: Added currency format control for Price Table widget
* Tweak: Reduced API request for some servers
* Fix: Dropdown `border-radius` in Nav Menu widget
* Fix: Price List widget layout breaks in edge cases
* Note: This version requires Elementor v2.0.6

#### 1.15.6 - 2018-03-28
* Fix: Removed duplicate Custom CSS section ([#3938](https://github.com/elementor/elementor/issues/3938))
* Fix: `box-shadow` issue with cards skin ([#3940](https://github.com/elementor/elementor/issues/3940))

#### 1.15.5 - 2018-03-27
* Fix: Added global widget compatibility for Elementor v2.0
* Fix: Reduced API request for some servers

#### 1.15.4 - 2018-03-26
* Tweak: Allow brackets in phone field
* Tweak: Added compatibility with Yoast 7.0.+
* Tweak: Added compatibility for the future release of Elementor v2.0
* Fix: Support for multiple carousel setting in editor
* Fix: `on_export` issue in forms widget ([#3890](https://github.com/elementor/elementor/issues/3890))

#### 1.15.3 - 2018-03-07
* Tweak: Added unique class to field group div ([#3595](https://github.com/elementor/elementor/issues/3595))
* Fix: Screen Options missing when Pro is active ([#3622](https://github.com/elementor/elementor/issues/3622))
* Fix: Allow label styling even when `show labels` is set hide ([#3544](https://github.com/elementor/elementor/issues/3544))
* Fix: Typography control not working in edge cases
* Fix: Safari compatibility for Search widget

#### 1.15.2 - 2018-02-27
* Fix: Only add support mine-type if needed ([#3543](https://github.com/elementor/elementor/issues/3543))
* Fix: Better support for Old Typekit kits

#### 1.15.1 - 2018-02-21
* Tweak: Custom font title placeholder is not `enter font family`
* Tweak: Custom font title set as required
* Fix: Custom font, `font-face` enqueued only once if used in global ([#3513](https://github.com/elementor/elementor/issues/3513))
* Fix: Added workaround for upload validation which relies on a PHP extension (fileinfo) with inconsistent reporting behavior.

#### 1.15.0 - 2018-02-19
* New: Added custom fonts manager for self hosted fonts ([#852](https://github.com/elementor/elementor/issues/852))
* New: Integration with Adobe TypeKit fonts ([#631](https://github.com/elementor/elementor/issues/631))
* Tweak: Clear menu from Nav Menu widget on template export
* Tweak: Allow zero for GetResponse integration as `day of cycle`

#### 1.14.2 - 2018-02-13
* Fix: Global widget content that got affected by previous update

#### 1.14.1 - 2018-02-13
* Tweak: Added `none` option to content animation in CTA widget
* Tweak: Added `form_id` to ActiveCampaign integration ([#3422](https://github.com/elementor/elementor/issues/3422))
* Fix: Page crashed when Global widget not found.

#### 1.14.0 - 2018-02-12
* New: Added Call to Action widget
* Tweak: MailPoet pull field mapping from MailPoet instead of hardcoded
* Tweak: Added compatibility for the future release of Elementor v2.0
* Fix: Allow zero (0) to be accepted as a field value
* Fix: Login form when custom login URL is set
* Fix: Added Day of cycle control to GetResponse integration

#### 1.13.2 - 2018-01-23
* Tweak: Added placeholder to Password field
* Tweak: Removed `subscriber_already_exists_message` control to prevent potential data leakage
* Fix: MailPoet Subscriber Already Exists error validation against translated string directly from MailPoet
* Fix: Changed `imagesLoaded()` to Vanilla JS to avoid compatibility issues with some themes
* Fix: Only validate Tel field if not empty
* Fix: Stop slider while editing

#### 1.13.1 - 2018-01-16
* Fix: Added compatibility with old PHP versions

#### 1.13.0 - 2018-01-16
* New: Added File Upload field for Forms widget ([#1482](https://github.com/elementor/elementor/issues/1482), [#2974](https://github.com/elementor/elementor/issues/2974))
* New: Added Acceptance field for Forms widget ([#1693](https://github.com/elementor/elementor/issues/1693), [#2974](https://github.com/elementor/elementor/issues/2974))
* New: Added Date field for Forms widget ([#1868](https://github.com/elementor/elementor/issues/1868))
* New: Added Time field for Forms widget
* New: Added Password field for Forms widget ([#2164](https://github.com/elementor/elementor/issues/2164))
* New: Added HTML field for Forms widget ([#1500](https://github.com/elementor/elementor/issues/1500))
* Tweak: Added characters validation for Tel field
* Tweak: Added min & max validation for Number field
* Tweak: Added multiple selection for Select field
* Tweak: Added donReach integration for Share Buttons widget

#### 1.12.3 - 2018-01-09
* Fix: Render element plain content instead of parsed content when not needed in global widget
* Fix: Apply `url-encoding` to "Tweet" button text in Blockquote widget to prevent unexpected corruption of the tweet text
* Fix: Removed My Account link from dashboard widget

#### 1.12.2 - 2018-01-03
* Tweak: Added animation none for Nav Menu widget ([#2964](https://github.com/elementor/elementor/issues/2964))
* Fix: Active license button style

#### 1.12.1 - 2018-01-02
* Tweak: Removed theme-element widgets from plain content
* Tweak: Set all theme-element widgets to extend same widget Base
* Tweak: Removed credit URL in forms meta data
* Tweak: Added compatibility for the future release of Elementor v1.9
* Fix: Validate Get response Error as real error
* Fix: Removed responsive height control from Facebook Page widget

#### 1.12.0 - 2017-12-20
* New: Added Drip integration to Forms
* New: Added ActiveCampaign integration to Forms
* New: Added ConverKit integration to Forms
* New: Added GetResponse integration to Forms
* New: Added form `id`, `name` attributes to handle integration with auto collectors like HubSpot
* New: Added Global API key for MailChimp to improve the workflow
* Tweak: Better error handling and message display for Forms
* Fix: PHP notice Undefined variable `$cc_header` ([#2934](https://github.com/elementor/elementor/issues/2934))

#### 1.11.0 - 2017-12-11
* New: Added a native Comments widget ([#543](https://github.com/elementor/elementor/issues/543))
* New: Added an Author Box widget
* New: Added a Post Navigation widget
* New: Added a Yoast Breadcrumbs widget ([#2749](https://github.com/elementor/elementor/issues/2749))
* Tweak: Added a close button to search widget under Full Screen skin ([#2762](https://github.com/elementor/elementor/issues/2762))
* Fix: Allow currency symbol to appear even if price isn't numeric
* Fix: Edge cases when the nav menu is empty in a stretched section
* Fix: Added fallback when you remove the `space-between` on Swiper carousel

#### 1.10.2 - 2017-12-03
* Fix: Missing save widget icon ([#2878](https://github.com/elementor/elementor/issues/2878))
* Fix: Global widgets not saving edits ([#2874](https://github.com/elementor/elementor/issues/2874))
* Fix: Removed `white-space: nowrap;` property from vertical menu in Nav Menu widget ([#2815](https://github.com/elementor/elementor/issues/2815))

#### 1.10.1 - 2017-11-30
* Tweak: Added default value for search form
* Tweak: Order template list A-Z in the library widget
* Tweak: get_users/authors query is now done using AJAX only, for better performance in Query Control ([#2865](https://github.com/elementor/elementor/issues/2865))
* Fix: When adding `.00` it is not displayed on the front
* Fix: Make sure space between is numeric for carousel control
* Fix: Added space for radio & checkbox fields in form widget

#### 1.10.0 - 2017-11-15
* New: Added native Search form widget ([#2576](https://github.com/elementor/elementor/issues/2576))
* Tweak: Added Slides To Scroll & Loop controls to Media Carousel and Testimonials widgets
* Tweak: Added Inline editing to Blockquote widget
* Fix: Animated Headline color bug ([#2516](https://github.com/elementor/elementor/issues/2516))
* Fix: Animated Headline with Rotating skin
* Fix: RTL fix for Animated Headline widget in 'typing' and 'clip' animations
* Fix: Empty menu cause jQuery to crash in Menu widget ([#2662](https://github.com/elementor/elementor/issues/2662))
* Fix: Custom CSS gone after reloading the editor

#### 1.9.5 - 2017-10-27
* Fix: Broken Global widget with JS ([#2639](https://github.com/elementor/elementor/issues/2639))

#### 1.9.4 - 2017-10-24
* Tweak: Improved UI for notices and license page
* Fix: Update system conflict with other EDD plugins
* Fix: WooCommerce frontend hooks on Elementor editor ([#2577](https://github.com/elementor/elementor/issues/2577))
* Fix: Removed default border left in Nav Menu dropdown CSS ([#2496](https://github.com/elementor/elementor/issues/2496))
* Fix: Increased submenu max-width ([#2558](https://github.com/elementor/elementor/issues/2558))
* Fix: Save global templates without their defaults
* Fix: Horizontal scrolling issue with posts grid

#### 1.9.3 - 2017-10-03
* Fix: Condition slide style that got affected by previous update

#### 1.9.2 - 2017-10-02
* New: Added integration with MailPoet 3 for Forms actions
* Fix: Removed height control from Testimonial carousel in mobile editing mode
* Fix: Removed bottom padding when there's no pagination in Testimonial carousel
* Fix: Added condition for slides style section in skin bubble mode
* Fix: Slides per view control for mobile editing in Testimonial carousel
* Fix: Navigation Arrows icons matched with common Elementor Navigation Arrows

#### 1.9.1 - 2017-09-28
* Fix: Slides per view for slideshow carousel
* Fix: Final polish for the new Testimonial Carousel widget
* Fix: Don't play video if slide type is not video
* Fix: Removed slides style section condition ([#2497](https://github.com/elementor/elementor/issues/2497))
* Fix: Set cursor as pointer for slideshow thumbnails

#### 1.9.0 - 2017-09-26
* New: Added Media Carousel widget ([#216](https://github.com/elementor/elementor/issues/216), [#347](https://github.com/elementor/elementor/issues/347), [#2209](https://github.com/elementor/elementor/issues/2209))
* New: Added Testimonial Carousel widget ([#715](https://github.com/elementor/elementor/issues/715))

#### 1.8.3 - 2017-09-24
* Fix: Added compatibility for WordPress 4.8.2 & 4.7.6
* Fix: Remove slashes from Form sent data

#### 1.8.2 - 2017-09-19
* Tweak: Added target URL for the tweet message in Blockquote widget
* Tweak: Render the slide height before the slider is finished loading
* Fix: Space between words for Animated Headline widget
* Fix: RTL compatibility for Animated Headline widget
* Fix: Italic font style for Animated Headline widget
* Fix: Excluded Menu widget from the WP Editor text rendering

#### 1.8.1 - 2017-09-18
* Fix: WCAG Compatible "required" field attribute for W3C validation ([#2391](https://github.com/elementor/elementor/issues/2391))
* Fix: Print the main menu only when is necessary in Menu widget
* Fix: Use CSS media query instead of JS to hide items in Menu widget to avoid flickering on page load ([#2381](https://github.com/elementor/elementor/issues/2381))

#### 1.8.0 - 2017-09-12
* New: Added Nav Menu widget ([#1406](https://github.com/elementor/elementor/issues/1406))
* Fix: Field ID for checkbox control in Form widget ([#2279](https://github.com/elementor/elementor/issues/2279))
* Fix: Style for Blockquote widget included

#### 1.7.2 - 2017-09-07
* Tweak: Loading Facebook SDK via JS for better compatibility with caching plugins
* Fix: Responsive Embed Facebook post widget for Safari iOS ([#2340](https://github.com/elementor/elementor/issues/2340))

#### 1.7.1 - 2017-09-05
* Fix: Facebook SDK version

#### 1.7.0 - 2017-09-05
* New: Added Facebook Button widget for Like, Recommend, Share and Follow
* New: Added Facebook Embed widget for Post, Video and Comment
* New: Added Facebook Comments widget
* New: Added Facebook Page widget (Previously known as Like Box)
* New: Added Blockquote widget with Tweet button
* Tweak: Added Facebook SDK integration for all Facebook widgets
* Fix: Animated headline rotating with long words

#### 1.6.1 - 2017-08-28
* Fix: Animated Headline marker gets in front of neighboring spans even when "Bring to Front" is not set
* Fix: Stroke animation in Animated Headline for MS Edge browser
* Fix: Animated headline with more than 1-word per rotation
* Fix: Animated Headline in two lines
* Fix: Some errors in Global widget

#### 1.6.0 - 2017-08-22
* New: Added Animated Headline widget
* New: Added Hidden field for Forms widget ([#2038](https://github.com/elementor/elementor/issues/2038))
* Tweak: Added notice to update Elementor to v1.6.5 or higher
* Fix: CSS Animations names no longer minified, in order to prevent unexpected conflicts

#### 1.5.9 - 2017-08-16
* Tweak: Added compatibility for the future release of Elementor v1.7
* Fix: Portfolio compatibility for GeneratePress theme
* Fix: Portfolio filter compatibility for RTL
* Fix: Pagination apply for all posts widget in the page
* Fix: Global form widget with MailChimp integration not saving

#### 1.5.8 - 2017-07-25
* Tweak: Added compatibility for the future release of Elementor v1.6
* Fix: Improved backward compatibility for query control rename

#### 1.5.7 - 2017-07-24
* Tweak: Moved JS render of reCAPTCHA to a separate file
* Tweak: Display the label in the reCAPTCHA field for better experience
* Tweak: Rename `panel-posts-control` to `query-control` and added fallback support
* Tweak: Added compatibility for the future release of Elementor with history feature
* Fix: reCAPTCHA preview on the editor
* Fix: Manual selection (query control) has stopped working after saving ([#2000](https://github.com/elementor/elementor/issues/2000))
* Fix: Added condition for icon size control in Share Buttons widget

#### 1.5.6 - 2017-07-12
* Fix: Query Control correction for taxonomies ([#1963](https://github.com/elementor/elementor/issues/1963))
* Fix: Custom CSS override scheme color in the editor
* Fix: Added order by Menu Order for Query Control in WC widget
* Fix: Glitch with Flip Box background overlay

#### 1.5.5 - 2017-07-03
* Tweak: Moved reCAPTCHA render to handler & load only if a form is exist
* Fix: MailChimp integration: Default number of items returned by API increased to 999
* Fix: MailChimp integration: Refresh the groups list if API is changed
* Fix: Sorted items in filter bar by A-Z
* Fix: Editor glitch with Elementor v1.5 ([#1927](https://github.com/elementor/elementor/issues/1927))

#### 1.5.4 - 2017-06-22
* Tweak: Improved compatibility for Elementor v1.5
* Fix: URL default for Add To Cart widget
* Fix: Allowed `date` and `birthday` fields as text for MailChimp integration

#### 1.5.3 - 2017-06-19
* Tweak: Make flip-box height responsive control
* Fix: Facebook share count now gets retrieved by Elementor ([#1829](https://github.com/elementor/elementor/issues/1829))
* Fix: Global form widget with MailChimp integration not saving

#### 1.5.2 - 2017-06-13
* Fix: Custom CSS panel location compatibility for the old versions

#### 1.5.1 - 2017-06-12
* Fix: MailChimp update existing user registration
* Fix: Global widget with JS in the editor mode
* Fix: Label section condition in Login widget
* Fix: Changes to unlinked global widget do not appear in the editor

#### 1.5.0 - 2017-05-23
* New: Added Cards, a new skin for Posts widget
* New: Added Exclude option to post query control group
* Tweak: Added `post_class()` for each post in the loop
* Tweak: Added `.elementor-posts-masonry` class when Masonry layout is enabled
* Tweak: Added compatibility for the next release of Elementor v1.5.0
* Tweak: CSS `autoprefixer` now supports last 5 versions of browsers
* Tweak: Added `imageLoaded` library for Posts & Portfolio widgets

#### 1.4.4 - 2017-05-18
* Fix: Force Mailchimp API to return all lists and not just 10 ([#1683](https://github.com/elementor/elementor/issues/1683))
* Fix: Added `.elementor-form` class to Login form to fix style glitch

#### 1.4.3 - 2017-05-14
* Tweak: Added Redirect After Login option to Login widget
* Tweak: Stay in the current page after logout in Login widget
* Tweak: Preparation for Elementor settings tabs in future version
* Fix: Pinterest in Share Buttons widget now sharing the URL alone
* Fix: Bug with `active` class in portfolio filter item
* Fix: Higher specific list-style-type `none` for filter items to override some theme style

#### 1.4.2 - 2017-05-06
* Fix: Temporary patch for form field shortcode in some servers

#### 1.4.1 - 2017-05-03
* Fix: Bug with custom success message in form widget
* Fix: Bug with meta data in email action

#### 1.4.0 - 2017-05-03
* New: Forms: integration with MailChimp
* New: Forms: integration with MailPoet
* New: Forms: Added Email 2 action for email confirmation
* New: Forms: Added shortcodes for fields
* New: Forms: Added custom ID for fields
* New: Forms: Added option to edit email HTML template ([#1180](https://github.com/elementor/elementor/issues/1180))
* New: Added Login widget
* Tweak: Move `send_html` control to `email_content_type`
* Fix: Email still sent even if validation failed in form widget

#### 1.3.2 - 2017-05-01
* New: Added action `elementor_pro/init` for better integration with Elementor Pro
* Fix: Posts without featured image in Posts widget ([#1234](https://github.com/elementor/elementor/issues/1234), [#1382](https://github.com/elementor/elementor/issues/1382))
* Fix: reCAPTCHA & Honeypot fields with new method
* Fix: Added border width control in Share Buttons to avoid a glitch on Chrome browser
* Fix: Border radius glitch on hover in Share Buttons

#### 1.3.1 - 2017-04-25
* Fix: Conflict update with revision history module

#### 1.3.0 - 2017-04-25
* New: Added Share Buttons widget ([Topic](https://wordpress.org/support/topic/social-sharing-buttons-is-it-possible/))
* New: Added Custom CSS for Page Settings
* New: Added Masonry layout for Portfolio widget
* New: Added Cc & Bcc options to email action ([#1181](https://github.com/elementor/elementor/issues/1181))
* New: Introduced `ElementorPro\Modules\Forms\Classes\Action_Base` class for better 3rd party integration for forms
* Tweak: Debugger module now also shows errors from Pro
* Tweak: Added options for Elementor Library
* Tweak: New base posts module for optimized performance
* Tweak: Adjusting Posts / Portfolio to the new structure
* Fix: Export for posts / portfolio
* Fix: Duplicate repeater field with switcher control ([#1442](https://github.com/elementor/elementor/issues/1442))
* Fix: Post per Page in the query control
* Fix: Metadata does not come through on form emails ([#1566](https://github.com/elementor/elementor/issues/1566))

#### 1.2.6 - 2017-04-19
* Fix: Added compatibility with WooCommerce 3.0 - Products & Add to Cart widgets

#### 1.2.5 - 2017-04-18
* Fix: Offset query for posts widgets (Posts, Portfolio and Products)

#### 1.2.4 - 2017-03-21
* Tweak: Added Indian Rupee sign to Price Table widget
* Fix: Portfolio grid for IE11
* Fix: Link target blank in Price List widget
* Fix: Active item for filter bar in Portfolio widget

#### 1.2.3 - 2017-03-06
* Tweak: Fully compatible with Elementor v1.3.0
* Tweak: Added trigger for after form submission in Forms widget
* Tweak: Changed handle name in reCAPTCHA field to avoid conflict with other contact forms
* Fix: Portfolio filter syntax in Non-Latin languages
* Fix: Added `no-repeat` property for slide with `background-size:contain`
* Fix: Condition control & Import value in Posts widgets
* Fix: Offset and Pagination in WordPress ([More Info](https://codex.wordpress.org/Making_Custom_Queries_using_Offset_and_Pagination))
* Fix: Submit handler bubbling for custom events in Forms widget

#### 1.2.2 - 2017-02-23
* Tweak: Change name from Side A/B to Front and Back in Flip Box widget
* Fix: Error when saving third party widgets in the global widget
* Fix: Image position "none" remains visible in editor preview (Posts)
* Fix: Hide the pagination when there are no links

#### 1.2.1 - 2017-02-21
* Fix: Firefox Flip Box 3D compatibility

#### 1.2.0 - 2017-02-21
* New: Added Flip Box widget
* New: Added Ken Burns effect for slides
* New: Added Masonry layout for Posts widget
* New: Added Pagination option for Posts widget
* Tweak: Added background size contain to slides
* Tweak: Improve Query control by preload items
* Fix: Text color for Checkbox and Radio fields

#### 1.1.2 - 2017-02-05
* Tweak: Added `aria-required` for better accessibility in forms widget
* Fix: Conflict Call to `undefined` method in Posts & Portfolio widgets ([#1271](https://github.com/elementor/elementor/issues/1271), [#1266](https://github.com/elementor/elementor/issues/1266))
* Fix: Submit button HTML after error sending
* Fix: Success message for `skip_email` function
* Notice: Elementor 1.2.0 or later now required

#### 1.1.1 - 2017-01-24
* Fix: Can't save global widgets when `WP_DEBUG` is `true`
* Fix: Undefined variable in WC widgets
* Fix: Removed duplicate strings

#### 1.1.0 - 2017-01-24
* New: Price Table widget ([#102](https://github.com/elementor/elementor/issues/102))
* New: WooCommerce Add to Cart widget
* New: WooCommerce Categories widget
* New: WooCommerce Elements widget
* New: Honeypot field for Forms widgets
* Tweak: Added inline options for taxonomies & authors if is less than 15 items
* Tweak: Added Required Mark for fields in Forms widget
* Fix: CSS selectors priority in Slides widget
* Fix: CSS bug in Price List widget
* Fix: Update all Post CSS files that includes specific Global Widget

#### 1.0.9 - 2017-01-18
* Fix: Auto complete bug in query controls
* Fix: Render template with escaping slashes
* Fix: Reply-to field in Forms widget

#### 1.0.8 - 2017-01-11
* Tweak: Code adjustments for Elementor API
* Fix: Removed go pro link from plugins page in admin

#### 1.0.7 - 2017-01-05
* Tweak: Added filter by featured / sale for WC Products widget
* Tweak: Added author control in Portfolio widget
* Tweak: Code adjustments for Elementor API
* Fix: Added support for empty image ratio
* Fix: Avoid nesting a sidebar within a template that will appear in the sidebar itself

#### 1.0.6 - 2017-01-01
* Tweak: Added Auto-updates for local translation files
* Fix: Custom CSS for Global widgets
* Fix: Remove `nonce` field (Fix some cache plugins)

#### 1.0.5 - 2016-12-27
* Fix: Slide element bug fix - 'Link apply on' logic
* Fix: Removed unique wrapper for Custom CSS in order to allow media queries ([#1086](https://github.com/elementor/elementor/issues/1086))

#### 1.0.4 - 2016-12-21
* Tweak: Mobile Editing for fields in the form widget
* Tweak: Mobile Editing for posts
* Tweak: Allow send form as HTML
* Tweak: Improved auto upgrades for Multisite installation
* Tweak: Improve editor rendering experience for Portfolio widget
* Fix: Posts widget check if image exist
* Fix: Changed the clone method for global widget ([#1042](https://github.com/elementor/elementor/issues/1042))
* Fix: Bug slides in RTL (removed direction control)
* Fix: Slides with no height jumps when changing slides

#### 1.0.3 - 2016-12-13
* Fix: Added escape placeholder for HTML Entities in form widget
* Fix: Countdown widget RTL bug
* Fix: Remove redundant #elementor selector for control style
* Fix: Added prefixing with '0' for one digit number in Countdown widget

#### 1.0.2 - 2016-12-12
* Fix: Page layout collapses when inserting reCAPTCHA field in Form

#### 1.0.1 - 2016-12-12
* Fix: WordPress widgets disappear from Editor when Elementor Pro active

#### 1.0.0 - 2016-12-12
* Initial release
elementor-pro.php000064400000013117150755004310010050 0ustar00<?php
/**
 * Plugin Name: Elementor Pro
 * Description: Elevate your designs and unlock the full power of Elementor. Gain access to dozens of Pro widgets and kits, Theme Builder, Pop Ups, Forms and WooCommerce building capabilities.
 * Plugin URI: https://elementor.com/
 * Author: Elementor.com
 * Version: 3.5.2
 * Elementor tested up to: 3.5.0
 * Author URI: https://elementor.com/
 *
 * Text Domain: elementor-pro
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

update_option( 'elementor_pro_license_key', 'activated' );
set_transient( 'elementor_pro_license_data', [ 
	'license' => 'valid', 
	'expires' => $date = date('M d, Y', strtotime('+1 years')) ] );
	set_transient( 'timeout_elementor_pro_license_data', 1893456000 );
define( 'ELEMENTOR_PRO_VERSION', '3.5.2' );

define( 'ELEMENTOR_PRO__FILE__', __FILE__ );
define( 'ELEMENTOR_PRO_PLUGIN_BASE', plugin_basename( ELEMENTOR_PRO__FILE__ ) );
define( 'ELEMENTOR_PRO_PATH', plugin_dir_path( ELEMENTOR_PRO__FILE__ ) );
define( 'ELEMENTOR_PRO_ASSETS_PATH', ELEMENTOR_PRO_PATH . 'assets/' );
define( 'ELEMENTOR_PRO_MODULES_PATH', ELEMENTOR_PRO_PATH . 'modules/' );
define( 'ELEMENTOR_PRO_URL', plugins_url( '/', ELEMENTOR_PRO__FILE__ ) );
define( 'ELEMENTOR_PRO_ASSETS_URL', ELEMENTOR_PRO_URL . 'assets/' );
define( 'ELEMENTOR_PRO_MODULES_URL', ELEMENTOR_PRO_URL . 'modules/' );

/**
 * Load gettext translate for our text domain.
 *
 * @since 1.0.0
 *
 * @return void
 */
function elementor_pro_load_plugin() {
	load_plugin_textdomain( 'elementor-pro' );

	if ( ! did_action( 'elementor/loaded' ) ) {
		add_action( 'admin_notices', 'elementor_pro_fail_load' );

		return;
	}

	$elementor_version_required = '3.4.0';
	if ( ! version_compare( ELEMENTOR_VERSION, $elementor_version_required, '>=' ) ) {
		add_action( 'admin_notices', 'elementor_pro_fail_load_out_of_date' );

		return;
	}

	$elementor_version_recommendation = '3.4.0';
	if ( ! version_compare( ELEMENTOR_VERSION, $elementor_version_recommendation, '>=' ) ) {
		add_action( 'admin_notices', 'elementor_pro_admin_notice_upgrade_recommendation' );
	}

	require ELEMENTOR_PRO_PATH . 'plugin.php';
}

add_action( 'plugins_loaded', 'elementor_pro_load_plugin' );

function print_error( $message ) {
	if ( ! $message ) {
		return;
	}
	// PHPCS - $message should not be escaped
	echo '<div class="error">' . $message . '</div>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
/**
 * Show in WP Dashboard notice about the plugin is not activated.
 *
 * @since 1.0.0
 *
 * @return void
 */
function elementor_pro_fail_load() {
	$screen = get_current_screen();
	if ( isset( $screen->parent_file ) && 'plugins.php' === $screen->parent_file && 'update' === $screen->id ) {
		return;
	}

	$plugin = 'elementor/elementor.php';

	if ( _is_elementor_installed() ) {
		if ( ! current_user_can( 'activate_plugins' ) ) {
			return;
		}

		$activation_url = wp_nonce_url( 'plugins.php?action=activate&amp;plugin=' . $plugin . '&amp;plugin_status=all&amp;paged=1&amp;s', 'activate-plugin_' . $plugin );

		$message = '<h3>' . esc_html__( 'Activate the Elementor Plugin', 'elementor-pro' ) . '</h3>';
		$message .= '<p>' . esc_html__( 'Before you can use all the features of Elementor Pro, you need to activate the Elementor plugin first.', 'elementor-pro' ) . '</p>';
		$message .= '<p>' . sprintf( '<a href="%s" class="button-primary">%s</a>', $activation_url, esc_html__( 'Activate Now', 'elementor-pro' ) ) . '</p>';
	} else {
		if ( ! current_user_can( 'install_plugins' ) ) {
			return;
		}

		$install_url = wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=elementor' ), 'install-plugin_elementor' );

		$message = '<h3>' . esc_html__( 'Install and Activate the Elementor Plugin', 'elementor-pro' ) . '</h3>';
		$message .= '<p>' . esc_html__( 'Before you can use all the features of Elementor Pro, you need to install and activate the Elementor plugin first.', 'elementor-pro' ) . '</p>';
		$message .= '<p>' . sprintf( '<a href="%s" class="button-primary">%s</a>', $install_url, esc_html__( 'Install Elementor', 'elementor-pro' ) ) . '</p>';
	}

	print_error( $message );
}

function elementor_pro_fail_load_out_of_date() {
	if ( ! current_user_can( 'update_plugins' ) ) {
		return;
	}

	$file_path = 'elementor/elementor.php';

	$upgrade_link = wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $file_path, 'upgrade-plugin_' . $file_path );
	$message = '<p>' . esc_html__( 'Elementor Pro is not working because you are using an old version of Elementor.', 'elementor-pro' ) . '</p>';
	$message .= '<p>' . sprintf( '<a href="%s" class="button-primary">%s</a>', $upgrade_link, esc_html__( 'Update Elementor Now', 'elementor-pro' ) ) . '</p>';

	print_error( $message );
}

function elementor_pro_admin_notice_upgrade_recommendation() {
	if ( ! current_user_can( 'update_plugins' ) ) {
		return;
	}

	$file_path = 'elementor/elementor.php';

	$upgrade_link = wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' ) . $file_path, 'upgrade-plugin_' . $file_path );
	$message = '<p>' . esc_html__( 'A new version of Elementor is available. For better performance and compatibility of Elementor Pro, we recommend updating to the latest version.', 'elementor-pro' ) . '</p>';
	$message .= '<p>' . sprintf( '<a href="%s" class="button-primary">%s</a>', $upgrade_link, esc_html__( 'Update Elementor Now', 'elementor-pro' ) ) . '</p>';

	print_error( $message );
}

if ( ! function_exists( '_is_elementor_installed' ) ) {

	function _is_elementor_installed() {
		$file_path = 'elementor/elementor.php';
		$installed_plugins = get_plugins();

		return isset( $installed_plugins[ $file_path ] );
	}
}
assets/lib/lottie/lottie.min.js000064400000755254150755004310012556 0ustar00/*
Version: 5.6.8
License: MIT
 */
(typeof navigator !== "undefined") && (function(root, factory) {
	if (typeof define === "function" && define.amd) {
		define(function() {
			return factory(root);
		});
	} else if (typeof module === "object" && module.exports) {
		module.exports = factory(root);
	} else {
		root.lottie = factory(root);
		root.bodymovin = root.lottie;
	}
}((window || {}), function(window) {
	"use strict";var svgNS="http://www.w3.org/2000/svg",locationHref="",initialDefaultFrame=-999999,subframeEnabled=!0,expressionsPlugin,isSafari=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),cachedColors={},bm_rounder=Math.round,bm_rnd,bm_pow=Math.pow,bm_sqrt=Math.sqrt,bm_abs=Math.abs,bm_floor=Math.floor,bm_max=Math.max,bm_min=Math.min,blitter=10,BMMath={};function ProjectInterface(){return{}}!function(){var t,e=["abs","acos","acosh","asin","asinh","atan","atanh","atan2","ceil","cbrt","expm1","clz32","cos","cosh","exp","floor","fround","hypot","imul","log","log1p","log2","log10","max","min","pow","random","round","sign","sin","sinh","sqrt","tan","tanh","trunc","E","LN10","LN2","LOG10E","LOG2E","PI","SQRT1_2","SQRT2"],r=e.length;for(t=0;t<r;t+=1)BMMath[e[t]]=Math[e[t]]}(),BMMath.random=Math.random,BMMath.abs=function(t){if("object"===typeof t&&t.length){var e,r=createSizedArray(t.length),i=t.length;for(e=0;e<i;e+=1)r[e]=Math.abs(t[e]);return r}return Math.abs(t)};var defaultCurveSegments=150,degToRads=Math.PI/180,roundCorner=.5519;function roundValues(t){bm_rnd=t?Math.round:function(t){return t}}function styleDiv(t){t.style.position="absolute",t.style.top=0,t.style.left=0,t.style.display="block",t.style.transformOrigin=t.style.webkitTransformOrigin="0 0",t.style.backfaceVisibility=t.style.webkitBackfaceVisibility="visible",t.style.transformStyle=t.style.webkitTransformStyle=t.style.mozTransformStyle="preserve-3d"}function BMEnterFrameEvent(t,e,r,i){this.type=t,this.currentTime=e,this.totalTime=r,this.direction=i<0?-1:1}function BMCompleteEvent(t,e){this.type=t,this.direction=e<0?-1:1}function BMCompleteLoopEvent(t,e,r,i){this.type=t,this.currentLoop=r,this.totalLoops=e,this.direction=i<0?-1:1}function BMSegmentStartEvent(t,e,r){this.type=t,this.firstFrame=e,this.totalFrames=r}function BMDestroyEvent(t,e){this.type=t,this.target=e}function BMRenderFrameErrorEvent(t,e){this.type="renderFrameError",this.nativeError=t,this.currentTime=e}function BMConfigErrorEvent(t){this.type="configError",this.nativeError=t}function BMAnimationConfigErrorEvent(t,e){this.type=t,this.nativeError=e,this.currentTime=currentTime}roundValues(!1);var createElementID=(G=0,function(){return"__lottie_element_"+ ++G}),G;function HSVtoRGB(t,e,r){var i,s,a,n,o,h,l,p;switch(h=r*(1-e),l=r*(1-(o=6*t-(n=Math.floor(6*t)))*e),p=r*(1-(1-o)*e),n%6){case 0:i=r,s=p,a=h;break;case 1:i=l,s=r,a=h;break;case 2:i=h,s=r,a=p;break;case 3:i=h,s=l,a=r;break;case 4:i=p,s=h,a=r;break;case 5:i=r,s=h,a=l}return[i,s,a]}function RGBtoHSV(t,e,r){var i,s=Math.max(t,e,r),a=Math.min(t,e,r),n=s-a,o=0===s?0:n/s,h=s/255;switch(s){case a:i=0;break;case t:i=e-r+n*(e<r?6:0),i/=6*n;break;case e:i=r-t+2*n,i/=6*n;break;case r:i=t-e+4*n,i/=6*n}return[i,o,h]}function addSaturationToRGB(t,e){var r=RGBtoHSV(255*t[0],255*t[1],255*t[2]);return r[1]+=e,1<r[1]?r[1]=1:r[1]<=0&&(r[1]=0),HSVtoRGB(r[0],r[1],r[2])}function addBrightnessToRGB(t,e){var r=RGBtoHSV(255*t[0],255*t[1],255*t[2]);return r[2]+=e,1<r[2]?r[2]=1:r[2]<0&&(r[2]=0),HSVtoRGB(r[0],r[1],r[2])}function addHueToRGB(t,e){var r=RGBtoHSV(255*t[0],255*t[1],255*t[2]);return r[0]+=e/360,1<r[0]?r[0]-=1:r[0]<0&&(r[0]+=1),HSVtoRGB(r[0],r[1],r[2])}var rgbToHex=function(){var t,e,i=[];for(t=0;t<256;t+=1)e=t.toString(16),i[t]=1==e.length?"0"+e:e;return function(t,e,r){return t<0&&(t=0),e<0&&(e=0),r<0&&(r=0),"#"+i[t]+i[e]+i[r]}}();function BaseEvent(){}BaseEvent.prototype={triggerEvent:function(t,e){if(this._cbs[t])for(var r=this._cbs[t].length,i=0;i<r;i++)this._cbs[t][i](e)},addEventListener:function(t,e){return this._cbs[t]||(this._cbs[t]=[]),this._cbs[t].push(e),function(){this.removeEventListener(t,e)}.bind(this)},removeEventListener:function(t,e){if(e){if(this._cbs[t]){for(var r=0,i=this._cbs[t].length;r<i;)this._cbs[t][r]===e&&(this._cbs[t].splice(r,1),r-=1,i-=1),r+=1;this._cbs[t].length||(this._cbs[t]=null)}}else this._cbs[t]=null}};var createTypedArray="function"==typeof Uint8ClampedArray&&"function"==typeof Float32Array?function(t,e){return"float32"===t?new Float32Array(e):"int16"===t?new Int16Array(e):"uint8c"===t?new Uint8ClampedArray(e):void 0}:function(t,e){var r,i=0,s=[];switch(t){case"int16":case"uint8c":r=1;break;default:r=1.1}for(i=0;i<e;i+=1)s.push(r);return s};function createSizedArray(t){return Array.apply(null,{length:t})}function createNS(t){return document.createElementNS(svgNS,t)}function createTag(t){return document.createElement(t)}function DynamicPropertyContainer(){}DynamicPropertyContainer.prototype={addDynamicProperty:function(t){-1===this.dynamicProperties.indexOf(t)&&(this.dynamicProperties.push(t),this.container.addDynamicProperty(this),this._isAnimated=!0)},iterateDynamicProperties:function(){this._mdf=!1;var t,e=this.dynamicProperties.length;for(t=0;t<e;t+=1)this.dynamicProperties[t].getValue(),this.dynamicProperties[t]._mdf&&(this._mdf=!0)},initDynamicPropertyContainer:function(t){this.container=t,this.dynamicProperties=[],this._mdf=!1,this._isAnimated=!1}};var getBlendMode=(Pa={0:"source-over",1:"multiply",2:"screen",3:"overlay",4:"darken",5:"lighten",6:"color-dodge",7:"color-burn",8:"hard-light",9:"soft-light",10:"difference",11:"exclusion",12:"hue",13:"saturation",14:"color",15:"luminosity"},function(t){return Pa[t]||""}),Pa,Matrix=function(){var s=Math.cos,a=Math.sin,n=Math.tan,i=Math.round;function t(){return this.props[0]=1,this.props[1]=0,this.props[2]=0,this.props[3]=0,this.props[4]=0,this.props[5]=1,this.props[6]=0,this.props[7]=0,this.props[8]=0,this.props[9]=0,this.props[10]=1,this.props[11]=0,this.props[12]=0,this.props[13]=0,this.props[14]=0,this.props[15]=1,this}function e(t){if(0===t)return this;var e=s(t),r=a(t);return this._t(e,-r,0,0,r,e,0,0,0,0,1,0,0,0,0,1)}function r(t){if(0===t)return this;var e=s(t),r=a(t);return this._t(1,0,0,0,0,e,-r,0,0,r,e,0,0,0,0,1)}function o(t){if(0===t)return this;var e=s(t),r=a(t);return this._t(e,0,r,0,0,1,0,0,-r,0,e,0,0,0,0,1)}function h(t){if(0===t)return this;var e=s(t),r=a(t);return this._t(e,-r,0,0,r,e,0,0,0,0,1,0,0,0,0,1)}function l(t,e){return this._t(1,e,t,1,0,0)}function p(t,e){return this.shear(n(t),n(e))}function m(t,e){var r=s(e),i=a(e);return this._t(r,i,0,0,-i,r,0,0,0,0,1,0,0,0,0,1)._t(1,0,0,0,n(t),1,0,0,0,0,1,0,0,0,0,1)._t(r,-i,0,0,i,r,0,0,0,0,1,0,0,0,0,1)}function f(t,e,r){return r||0===r||(r=1),1===t&&1===e&&1===r?this:this._t(t,0,0,0,0,e,0,0,0,0,r,0,0,0,0,1)}function c(t,e,r,i,s,a,n,o,h,l,p,m,f,c,d,u){return this.props[0]=t,this.props[1]=e,this.props[2]=r,this.props[3]=i,this.props[4]=s,this.props[5]=a,this.props[6]=n,this.props[7]=o,this.props[8]=h,this.props[9]=l,this.props[10]=p,this.props[11]=m,this.props[12]=f,this.props[13]=c,this.props[14]=d,this.props[15]=u,this}function d(t,e,r){return r=r||0,0!==t||0!==e||0!==r?this._t(1,0,0,0,0,1,0,0,0,0,1,0,t,e,r,1):this}function u(t,e,r,i,s,a,n,o,h,l,p,m,f,c,d,u){var y=this.props;if(1===t&&0===e&&0===r&&0===i&&0===s&&1===a&&0===n&&0===o&&0===h&&0===l&&1===p&&0===m)return y[12]=y[12]*t+y[15]*f,y[13]=y[13]*a+y[15]*c,y[14]=y[14]*p+y[15]*d,y[15]=y[15]*u,this._identityCalculated=!1,this;var g=y[0],v=y[1],b=y[2],E=y[3],x=y[4],S=y[5],P=y[6],_=y[7],A=y[8],C=y[9],T=y[10],k=y[11],M=y[12],D=y[13],w=y[14],F=y[15];return y[0]=g*t+v*s+b*h+E*f,y[1]=g*e+v*a+b*l+E*c,y[2]=g*r+v*n+b*p+E*d,y[3]=g*i+v*o+b*m+E*u,y[4]=x*t+S*s+P*h+_*f,y[5]=x*e+S*a+P*l+_*c,y[6]=x*r+S*n+P*p+_*d,y[7]=x*i+S*o+P*m+_*u,y[8]=A*t+C*s+T*h+k*f,y[9]=A*e+C*a+T*l+k*c,y[10]=A*r+C*n+T*p+k*d,y[11]=A*i+C*o+T*m+k*u,y[12]=M*t+D*s+w*h+F*f,y[13]=M*e+D*a+w*l+F*c,y[14]=M*r+D*n+w*p+F*d,y[15]=M*i+D*o+w*m+F*u,this._identityCalculated=!1,this}function y(){return this._identityCalculated||(this._identity=!(1!==this.props[0]||0!==this.props[1]||0!==this.props[2]||0!==this.props[3]||0!==this.props[4]||1!==this.props[5]||0!==this.props[6]||0!==this.props[7]||0!==this.props[8]||0!==this.props[9]||1!==this.props[10]||0!==this.props[11]||0!==this.props[12]||0!==this.props[13]||0!==this.props[14]||1!==this.props[15]),this._identityCalculated=!0),this._identity}function g(t){for(var e=0;e<16;){if(t.props[e]!==this.props[e])return!1;e+=1}return!0}function v(t){var e;for(e=0;e<16;e+=1)t.props[e]=this.props[e]}function b(t){var e;for(e=0;e<16;e+=1)this.props[e]=t[e]}function E(t,e,r){return{x:t*this.props[0]+e*this.props[4]+r*this.props[8]+this.props[12],y:t*this.props[1]+e*this.props[5]+r*this.props[9]+this.props[13],z:t*this.props[2]+e*this.props[6]+r*this.props[10]+this.props[14]}}function x(t,e,r){return t*this.props[0]+e*this.props[4]+r*this.props[8]+this.props[12]}function S(t,e,r){return t*this.props[1]+e*this.props[5]+r*this.props[9]+this.props[13]}function P(t,e,r){return t*this.props[2]+e*this.props[6]+r*this.props[10]+this.props[14]}function _(){var t=this.props[0]*this.props[5]-this.props[1]*this.props[4],e=this.props[5]/t,r=-this.props[1]/t,i=-this.props[4]/t,s=this.props[0]/t,a=(this.props[4]*this.props[13]-this.props[5]*this.props[12])/t,n=-(this.props[0]*this.props[13]-this.props[1]*this.props[12])/t,o=new Matrix;return o.props[0]=e,o.props[1]=r,o.props[4]=i,o.props[5]=s,o.props[12]=a,o.props[13]=n,o}function A(t){return this.getInverseMatrix().applyToPointArray(t[0],t[1],t[2]||0)}function C(t){var e,r=t.length,i=[];for(e=0;e<r;e+=1)i[e]=A(t[e]);return i}function T(t,e,r){var i=createTypedArray("float32",6);if(this.isIdentity())i[0]=t[0],i[1]=t[1],i[2]=e[0],i[3]=e[1],i[4]=r[0],i[5]=r[1];else{var s=this.props[0],a=this.props[1],n=this.props[4],o=this.props[5],h=this.props[12],l=this.props[13];i[0]=t[0]*s+t[1]*n+h,i[1]=t[0]*a+t[1]*o+l,i[2]=e[0]*s+e[1]*n+h,i[3]=e[0]*a+e[1]*o+l,i[4]=r[0]*s+r[1]*n+h,i[5]=r[0]*a+r[1]*o+l}return i}function k(t,e,r){return this.isIdentity()?[t,e,r]:[t*this.props[0]+e*this.props[4]+r*this.props[8]+this.props[12],t*this.props[1]+e*this.props[5]+r*this.props[9]+this.props[13],t*this.props[2]+e*this.props[6]+r*this.props[10]+this.props[14]]}function M(t,e){if(this.isIdentity())return t+","+e;var r=this.props;return Math.round(100*(t*r[0]+e*r[4]+r[12]))/100+","+Math.round(100*(t*r[1]+e*r[5]+r[13]))/100}function D(){for(var t=0,e=this.props,r="matrix3d(";t<16;)r+=i(1e4*e[t])/1e4,r+=15===t?")":",",t+=1;return r}function w(t){return t<1e-6&&0<t||-1e-6<t&&t<0?i(1e4*t)/1e4:t}function F(){var t=this.props;return"matrix("+w(t[0])+","+w(t[1])+","+w(t[4])+","+w(t[5])+","+w(t[12])+","+w(t[13])+")"}return function(){this.reset=t,this.rotate=e,this.rotateX=r,this.rotateY=o,this.rotateZ=h,this.skew=p,this.skewFromAxis=m,this.shear=l,this.scale=f,this.setTransform=c,this.translate=d,this.transform=u,this.applyToPoint=E,this.applyToX=x,this.applyToY=S,this.applyToZ=P,this.applyToPointArray=k,this.applyToTriplePoints=T,this.applyToPointStringified=M,this.toCSS=D,this.to2dCSS=F,this.clone=v,this.cloneFromProps=b,this.equals=g,this.inversePoints=C,this.inversePoint=A,this.getInverseMatrix=_,this._t=this.transform,this.isIdentity=y,this._identity=!0,this._identityCalculated=!1,this.props=createTypedArray("float32",16),this.reset()}}();!function(o,h){var l,p=this,m=256,f=6,c="random",d=h.pow(m,f),u=h.pow(2,52),y=2*u,g=m-1;function v(t){var e,r=t.length,n=this,i=0,s=n.i=n.j=0,a=n.S=[];for(r||(t=[r++]);i<m;)a[i]=i++;for(i=0;i<m;i++)a[i]=a[s=g&s+t[i%r]+(e=a[i])],a[s]=e;n.g=function(t){for(var e,r=0,i=n.i,s=n.j,a=n.S;t--;)e=a[i=g&i+1],r=r*m+a[g&(a[i]=a[s=g&s+e])+(a[s]=e)];return n.i=i,n.j=s,r}}function b(t,e){return e.i=t.i,e.j=t.j,e.S=t.S.slice(),e}function E(t,e){for(var r,i=t+"",s=0;s<i.length;)e[g&s]=g&(r^=19*e[g&s])+i.charCodeAt(s++);return x(e)}function x(t){return String.fromCharCode.apply(0,t)}h["seed"+c]=function(t,e,r){var i=[],s=E(function t(e,r){var i,s=[],a=typeof e;if(r&&"object"==a)for(i in e)try{s.push(t(e[i],r-1))}catch(t){}return s.length?s:"string"==a?e:e+"\0"}((e=!0===e?{entropy:!0}:e||{}).entropy?[t,x(o)]:null===t?function(){try{if(l)return x(l.randomBytes(m));var t=new Uint8Array(m);return(p.crypto||p.msCrypto).getRandomValues(t),x(t)}catch(t){var e=p.navigator,r=e&&e.plugins;return[+new Date,p,r,p.screen,x(o)]}}():t,3),i),a=new v(i),n=function(){for(var t=a.g(f),e=d,r=0;t<u;)t=(t+r)*m,e*=m,r=a.g(1);for(;y<=t;)t/=2,e/=2,r>>>=1;return(t+r)/e};return n.int32=function(){return 0|a.g(4)},n.quick=function(){return a.g(4)/4294967296},n.double=n,E(x(a.S),o),(e.pass||r||function(t,e,r,i){return i&&(i.S&&b(i,a),t.state=function(){return b(a,{})}),r?(h[c]=t,e):t})(n,s,"global"in e?e.global:this==h,e.state)},E(h.random(),o)}([],BMMath);var BezierFactory=function(){var t={getBezierEasing:function(t,e,r,i,s){var a=s||("bez_"+t+"_"+e+"_"+r+"_"+i).replace(/\./g,"p");if(o[a])return o[a];var n=new h([t,e,r,i]);return o[a]=n}},o={};var l=11,p=1/(l-1),e="function"==typeof Float32Array;function i(t,e){return 1-3*e+3*t}function s(t,e){return 3*e-6*t}function a(t){return 3*t}function m(t,e,r){return((i(e,r)*t+s(e,r))*t+a(e))*t}function f(t,e,r){return 3*i(e,r)*t*t+2*s(e,r)*t+a(e)}function h(t){this._p=t,this._mSampleValues=e?new Float32Array(l):new Array(l),this._precomputed=!1,this.get=this.get.bind(this)}return h.prototype={get:function(t){var e=this._p[0],r=this._p[1],i=this._p[2],s=this._p[3];return this._precomputed||this._precompute(),e===r&&i===s?t:0===t?0:1===t?1:m(this._getTForX(t),r,s)},_precompute:function(){var t=this._p[0],e=this._p[1],r=this._p[2],i=this._p[3];this._precomputed=!0,t===e&&r===i||this._calcSampleValues()},_calcSampleValues:function(){for(var t=this._p[0],e=this._p[2],r=0;r<l;++r)this._mSampleValues[r]=m(r*p,t,e)},_getTForX:function(t){for(var e=this._p[0],r=this._p[2],i=this._mSampleValues,s=0,a=1,n=l-1;a!==n&&i[a]<=t;++a)s+=p;var o=s+(t-i[--a])/(i[a+1]-i[a])*p,h=f(o,e,r);return.001<=h?function(t,e,r,i){for(var s=0;s<4;++s){var a=f(e,r,i);if(0===a)return e;e-=(m(e,r,i)-t)/a}return e}(t,o,e,r):0===h?o:function(t,e,r,i,s){for(var a,n,o=0;0<(a=m(n=e+(r-e)/2,i,s)-t)?r=n:e=n,1e-7<Math.abs(a)&&++o<10;);return n}(t,s,s+p,e,r)}},t}();function extendPrototype(t,e){var r,i,s=t.length;for(r=0;r<s;r+=1)for(var a in i=t[r].prototype)i.hasOwnProperty(a)&&(e.prototype[a]=i[a])}function getDescriptor(t,e){return Object.getOwnPropertyDescriptor(t,e)}function createProxyFunction(t){function e(){}return e.prototype=t,e}function bezFunction(){Math;function y(t,e,r,i,s,a){var n=t*i+e*s+r*a-s*i-a*t-r*e;return-.001<n&&n<.001}var p=function(t,e,r,i){var s,a,n,o,h,l,p=defaultCurveSegments,m=0,f=[],c=[],d=bezier_length_pool.newElement();for(n=r.length,s=0;s<p;s+=1){for(h=s/(p-1),a=l=0;a<n;a+=1)o=bm_pow(1-h,3)*t[a]+3*bm_pow(1-h,2)*h*r[a]+3*(1-h)*bm_pow(h,2)*i[a]+bm_pow(h,3)*e[a],f[a]=o,null!==c[a]&&(l+=bm_pow(f[a]-c[a],2)),c[a]=f[a];l&&(m+=l=bm_sqrt(l)),d.percents[s]=h,d.lengths[s]=m}return d.addedLength=m,d};function g(t){this.segmentLength=0,this.points=new Array(t)}function v(t,e){this.partialLength=t,this.point=e}var b,t=(b={},function(t,e,r,i){var s=(t[0]+"_"+t[1]+"_"+e[0]+"_"+e[1]+"_"+r[0]+"_"+r[1]+"_"+i[0]+"_"+i[1]).replace(/\./g,"p");if(!b[s]){var a,n,o,h,l,p,m,f=defaultCurveSegments,c=0,d=null;2===t.length&&(t[0]!=e[0]||t[1]!=e[1])&&y(t[0],t[1],e[0],e[1],t[0]+r[0],t[1]+r[1])&&y(t[0],t[1],e[0],e[1],e[0]+i[0],e[1]+i[1])&&(f=2);var u=new g(f);for(o=r.length,a=0;a<f;a+=1){for(m=createSizedArray(o),l=a/(f-1),n=p=0;n<o;n+=1)h=bm_pow(1-l,3)*t[n]+3*bm_pow(1-l,2)*l*(t[n]+r[n])+3*(1-l)*bm_pow(l,2)*(e[n]+i[n])+bm_pow(l,3)*e[n],m[n]=h,null!==d&&(p+=bm_pow(m[n]-d[n],2));c+=p=bm_sqrt(p),u.points[a]=new v(p,m),d=m}u.segmentLength=c,b[s]=u}return b[s]});function M(t,e){var r=e.percents,i=e.lengths,s=r.length,a=bm_floor((s-1)*t),n=t*e.addedLength,o=0;if(a===s-1||0===a||n===i[a])return r[a];for(var h=i[a]>n?-1:1,l=!0;l;)if(i[a]<=n&&i[a+1]>n?(o=(n-i[a])/(i[a+1]-i[a]),l=!1):a+=h,a<0||s-1<=a){if(a===s-1)return r[a];l=!1}return r[a]+(r[a+1]-r[a])*o}var D=createTypedArray("float32",8);return{getSegmentsLength:function(t){var e,r=segments_length_pool.newElement(),i=t.c,s=t.v,a=t.o,n=t.i,o=t._length,h=r.lengths,l=0;for(e=0;e<o-1;e+=1)h[e]=p(s[e],s[e+1],a[e],n[e+1]),l+=h[e].addedLength;return i&&o&&(h[e]=p(s[e],s[0],a[e],n[0]),l+=h[e].addedLength),r.totalLength=l,r},getNewSegment:function(t,e,r,i,s,a,n){var o,h=M(s=s<0?0:1<s?1:s,n),l=M(a=1<a?1:a,n),p=t.length,m=1-h,f=1-l,c=m*m*m,d=h*m*m*3,u=h*h*m*3,y=h*h*h,g=m*m*f,v=h*m*f+m*h*f+m*m*l,b=h*h*f+m*h*l+h*m*l,E=h*h*l,x=m*f*f,S=h*f*f+m*l*f+m*f*l,P=h*l*f+m*l*l+h*f*l,_=h*l*l,A=f*f*f,C=l*f*f+f*l*f+f*f*l,T=l*l*f+f*l*l+l*f*l,k=l*l*l;for(o=0;o<p;o+=1)D[4*o]=Math.round(1e3*(c*t[o]+d*r[o]+u*i[o]+y*e[o]))/1e3,D[4*o+1]=Math.round(1e3*(g*t[o]+v*r[o]+b*i[o]+E*e[o]))/1e3,D[4*o+2]=Math.round(1e3*(x*t[o]+S*r[o]+P*i[o]+_*e[o]))/1e3,D[4*o+3]=Math.round(1e3*(A*t[o]+C*r[o]+T*i[o]+k*e[o]))/1e3;return D},getPointInSegment:function(t,e,r,i,s,a){var n=M(s,a),o=1-n;return[Math.round(1e3*(o*o*o*t[0]+(n*o*o+o*n*o+o*o*n)*r[0]+(n*n*o+o*n*n+n*o*n)*i[0]+n*n*n*e[0]))/1e3,Math.round(1e3*(o*o*o*t[1]+(n*o*o+o*n*o+o*o*n)*r[1]+(n*n*o+o*n*n+n*o*n)*i[1]+n*n*n*e[1]))/1e3]},buildBezierData:t,pointOnLine2D:y,pointOnLine3D:function(t,e,r,i,s,a,n,o,h){if(0===r&&0===a&&0===h)return y(t,e,i,s,n,o);var l,p=Math.sqrt(Math.pow(i-t,2)+Math.pow(s-e,2)+Math.pow(a-r,2)),m=Math.sqrt(Math.pow(n-t,2)+Math.pow(o-e,2)+Math.pow(h-r,2)),f=Math.sqrt(Math.pow(n-i,2)+Math.pow(o-s,2)+Math.pow(h-a,2));return-1e-4<(l=m<p?f<p?p-m-f:f-m-p:m<f?f-m-p:m-p-f)&&l<1e-4}}}!function(){for(var a=0,t=["ms","moz","webkit","o"],e=0;e<t.length&&!window.requestAnimationFrame;++e)window.requestAnimationFrame=window[t[e]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[t[e]+"CancelAnimationFrame"]||window[t[e]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(t,e){var r=(new Date).getTime(),i=Math.max(0,16-(r-a)),s=setTimeout(function(){t(r+i)},i);return a=r+i,s}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(t){clearTimeout(t)})}();var bez=bezFunction();function dataFunctionManager(){function m(t,e,r){var i,s,a,n,o,h,l=t.length;for(s=0;s<l;s+=1)if("ks"in(i=t[s])&&!i.completed){if(i.completed=!0,i.tt&&(t[s-1].td=i.tt),[],-1,i.hasMask){var p=i.masksProperties;for(n=p.length,a=0;a<n;a+=1)if(p[a].pt.k.i)d(p[a].pt.k);else for(h=p[a].pt.k.length,o=0;o<h;o+=1)p[a].pt.k[o].s&&d(p[a].pt.k[o].s[0]),p[a].pt.k[o].e&&d(p[a].pt.k[o].e[0])}0===i.ty?(i.layers=f(i.refId,e),m(i.layers,e,r)):4===i.ty?c(i.shapes):5==i.ty&&u(i,r)}}function f(t,e){for(var r=0,i=e.length;r<i;){if(e[r].id===t)return e[r].layers.__used?JSON.parse(JSON.stringify(e[r].layers)):(e[r].layers.__used=!0,e[r].layers);r+=1}}function c(t){var e,r,i;for(e=t.length-1;0<=e;e-=1)if("sh"==t[e].ty){if(t[e].ks.k.i)d(t[e].ks.k);else for(i=t[e].ks.k.length,r=0;r<i;r+=1)t[e].ks.k[r].s&&d(t[e].ks.k[r].s[0]),t[e].ks.k[r].e&&d(t[e].ks.k[r].e[0]);!0}else"gr"==t[e].ty&&c(t[e].it)}function d(t){var e,r=t.i.length;for(e=0;e<r;e+=1)t.i[e][0]+=t.v[e][0],t.i[e][1]+=t.v[e][1],t.o[e][0]+=t.v[e][0],t.o[e][1]+=t.v[e][1]}function o(t,e){var r=e?e.split("."):[100,100,100];return t[0]>r[0]||!(r[0]>t[0])&&(t[1]>r[1]||!(r[1]>t[1])&&(t[2]>r[2]||!(r[2]>t[2])&&void 0))}var h,r=function(){var i=[4,4,14];function s(t){var e,r,i,s=t.length;for(e=0;e<s;e+=1)5===t[e].ty&&(r=t[e],void 0,i=r.t.d,r.t.d={k:[{s:i,t:0}]})}return function(t){if(o(i,t.v)&&(s(t.layers),t.assets)){var e,r=t.assets.length;for(e=0;e<r;e+=1)t.assets[e].layers&&s(t.assets[e].layers)}}}(),i=(h=[4,7,99],function(t){if(t.chars&&!o(h,t.v)){var e,r,i,s,a,n=t.chars.length;for(e=0;e<n;e+=1)if(t.chars[e].data&&t.chars[e].data.shapes)for(i=(a=t.chars[e].data.shapes[0].it).length,r=0;r<i;r+=1)(s=a[r].ks.k).__converted||(d(a[r].ks.k),s.__converted=!0)}}),s=function(){var i=[4,1,9];function a(t){var e,r,i,s=t.length;for(e=0;e<s;e+=1)if("gr"===t[e].ty)a(t[e].it);else if("fl"===t[e].ty||"st"===t[e].ty)if(t[e].c.k&&t[e].c.k[0].i)for(i=t[e].c.k.length,r=0;r<i;r+=1)t[e].c.k[r].s&&(t[e].c.k[r].s[0]/=255,t[e].c.k[r].s[1]/=255,t[e].c.k[r].s[2]/=255,t[e].c.k[r].s[3]/=255),t[e].c.k[r].e&&(t[e].c.k[r].e[0]/=255,t[e].c.k[r].e[1]/=255,t[e].c.k[r].e[2]/=255,t[e].c.k[r].e[3]/=255);else t[e].c.k[0]/=255,t[e].c.k[1]/=255,t[e].c.k[2]/=255,t[e].c.k[3]/=255}function s(t){var e,r=t.length;for(e=0;e<r;e+=1)4===t[e].ty&&a(t[e].shapes)}return function(t){if(o(i,t.v)&&(s(t.layers),t.assets)){var e,r=t.assets.length;for(e=0;e<r;e+=1)t.assets[e].layers&&s(t.assets[e].layers)}}}(),a=function(){var i=[4,4,18];function l(t){var e,r,i;for(e=t.length-1;0<=e;e-=1)if("sh"==t[e].ty){if(t[e].ks.k.i)t[e].ks.k.c=t[e].closed;else for(i=t[e].ks.k.length,r=0;r<i;r+=1)t[e].ks.k[r].s&&(t[e].ks.k[r].s[0].c=t[e].closed),t[e].ks.k[r].e&&(t[e].ks.k[r].e[0].c=t[e].closed);!0}else"gr"==t[e].ty&&l(t[e].it)}function s(t){var e,r,i,s,a,n,o=t.length;for(r=0;r<o;r+=1){if((e=t[r]).hasMask){var h=e.masksProperties;for(s=h.length,i=0;i<s;i+=1)if(h[i].pt.k.i)h[i].pt.k.c=h[i].cl;else for(n=h[i].pt.k.length,a=0;a<n;a+=1)h[i].pt.k[a].s&&(h[i].pt.k[a].s[0].c=h[i].cl),h[i].pt.k[a].e&&(h[i].pt.k[a].e[0].c=h[i].cl)}4===e.ty&&l(e.shapes)}}return function(t){if(o(i,t.v)&&(s(t.layers),t.assets)){var e,r=t.assets.length;for(e=0;e<r;e+=1)t.assets[e].layers&&s(t.assets[e].layers)}}}();function u(t,e){0!==t.t.a.length||"m"in t.t.p||(t.singleShape=!0)}var t={completeData:function(t,e){t.__complete||(s(t),r(t),i(t),a(t),m(t.layers,t.assets,e),t.__complete=!0)}};return t.checkColors=s,t.checkChars=i,t.checkShapes=a,t.completeLayers=m,t}var dataManager=dataFunctionManager(),FontManager=function(){var a={w:0,size:0,shapes:[]},t=[];function u(t,e){var r=createTag("span");r.style.fontFamily=e;var i=createTag("span");i.innerHTML="giItT1WQy@!-/#",r.style.position="absolute",r.style.left="-10000px",r.style.top="-10000px",r.style.fontSize="300px",r.style.fontVariant="normal",r.style.fontStyle="normal",r.style.fontWeight="normal",r.style.letterSpacing="0",r.appendChild(i),document.body.appendChild(r);var s=i.offsetWidth;return i.style.fontFamily=t+", "+e,{node:i,w:s,parent:r}}t=t.concat([2304,2305,2306,2307,2362,2363,2364,2364,2366,2367,2368,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2387,2388,2389,2390,2391,2402,2403]);var e=function(){this.fonts=[],this.chars=null,this.typekitLoaded=0,this.isLoaded=!1,this.initTime=Date.now()};return e.getCombinedCharacterCodes=function(){return t},e.prototype.addChars=function(t){if(t){this.chars||(this.chars=[]);var e,r,i,s=t.length,a=this.chars.length;for(e=0;e<s;e+=1){for(r=0,i=!1;r<a;)this.chars[r].style===t[e].style&&this.chars[r].fFamily===t[e].fFamily&&this.chars[r].ch===t[e].ch&&(i=!0),r+=1;i||(this.chars.push(t[e]),a+=1)}}},e.prototype.addFonts=function(t,e){if(t){if(this.chars)return this.isLoaded=!0,void(this.fonts=t.list);var r,i,s,a,n=t.list,o=n.length,h=o;for(r=0;r<o;r+=1){var l,p,m=!0;if(n[r].loaded=!1,n[r].monoCase=u(n[r].fFamily,"monospace"),n[r].sansCase=u(n[r].fFamily,"sans-serif"),n[r].fPath){if("p"===n[r].fOrigin||3===n[r].origin){if(0<(l=document.querySelectorAll('style[f-forigin="p"][f-family="'+n[r].fFamily+'"], style[f-origin="3"][f-family="'+n[r].fFamily+'"]')).length&&(m=!1),m){var f=createTag("style");f.setAttribute("f-forigin",n[r].fOrigin),f.setAttribute("f-origin",n[r].origin),f.setAttribute("f-family",n[r].fFamily),f.type="text/css",f.innerHTML="@font-face {font-family: "+n[r].fFamily+"; font-style: normal; src: url('"+n[r].fPath+"');}",e.appendChild(f)}}else if("g"===n[r].fOrigin||1===n[r].origin){for(l=document.querySelectorAll('link[f-forigin="g"], link[f-origin="1"]'),p=0;p<l.length;p++)-1!==l[p].href.indexOf(n[r].fPath)&&(m=!1);if(m){var c=createTag("link");c.setAttribute("f-forigin",n[r].fOrigin),c.setAttribute("f-origin",n[r].origin),c.type="text/css",c.rel="stylesheet",c.href=n[r].fPath,document.body.appendChild(c)}}else if("t"===n[r].fOrigin||2===n[r].origin){for(l=document.querySelectorAll('script[f-forigin="t"], script[f-origin="2"]'),p=0;p<l.length;p++)n[r].fPath===l[p].src&&(m=!1);if(m){var d=createTag("link");d.setAttribute("f-forigin",n[r].fOrigin),d.setAttribute("f-origin",n[r].origin),d.setAttribute("rel","stylesheet"),d.setAttribute("href",n[r].fPath),e.appendChild(d)}}}else n[r].loaded=!0,h-=1;n[r].helper=(i=e,s=n[r],a=void 0,(a=createNS("text")).style.fontSize="100px",a.setAttribute("font-family",s.fFamily),a.setAttribute("font-style",s.fStyle),a.setAttribute("font-weight",s.fWeight),a.textContent="1",s.fClass?(a.style.fontFamily="inherit",a.setAttribute("class",s.fClass)):a.style.fontFamily=s.fFamily,i.appendChild(a),createTag("canvas").getContext("2d").font=s.fWeight+" "+s.fStyle+" 100px "+s.fFamily,a),n[r].cache={},this.fonts.push(n[r])}0===h?this.isLoaded=!0:setTimeout(this.checkLoadedFonts.bind(this),100)}else this.isLoaded=!0},e.prototype.getCharData=function(t,e,r){for(var i=0,s=this.chars.length;i<s;){if(this.chars[i].ch===t&&this.chars[i].style===e&&this.chars[i].fFamily===r)return this.chars[i];i+=1}return("string"==typeof t&&13!==t.charCodeAt(0)||!t)&&console&&console.warn&&console.warn("Missing character from exported characters list: ",t,e,r),a},e.prototype.getFontByName=function(t){for(var e=0,r=this.fonts.length;e<r;){if(this.fonts[e].fName===t)return this.fonts[e];e+=1}return this.fonts[0]},e.prototype.measureText=function(t,e,r){var i=this.getFontByName(e),s=t.charCodeAt(0);if(!i.cache[s+1]){var a=i.helper;if(" "===t){a.textContent="|"+t+"|";var n=a.getComputedTextLength();a.textContent="||";var o=a.getComputedTextLength();i.cache[s+1]=(n-o)/100}else a.textContent=t,i.cache[s+1]=a.getComputedTextLength()/100}return i.cache[s+1]*r},e.prototype.checkLoadedFonts=function(){var t,e,r,i=this.fonts.length,s=i;for(t=0;t<i;t+=1)this.fonts[t].loaded?s-=1:"n"===this.fonts[t].fOrigin||0===this.fonts[t].origin?this.fonts[t].loaded=!0:(e=this.fonts[t].monoCase.node,r=this.fonts[t].monoCase.w,e.offsetWidth!==r?(s-=1,this.fonts[t].loaded=!0):(e=this.fonts[t].sansCase.node,r=this.fonts[t].sansCase.w,e.offsetWidth!==r&&(s-=1,this.fonts[t].loaded=!0)),this.fonts[t].loaded&&(this.fonts[t].sansCase.parent.parentNode.removeChild(this.fonts[t].sansCase.parent),this.fonts[t].monoCase.parent.parentNode.removeChild(this.fonts[t].monoCase.parent)));0!==s&&Date.now()-this.initTime<5e3?setTimeout(this.checkLoadedFonts.bind(this),20):setTimeout(function(){this.isLoaded=!0}.bind(this),0)},e.prototype.loaded=function(){return this.isLoaded},e}(),PropertyFactory=function(){var m=initialDefaultFrame,s=Math.abs;function f(t,e){var r,i=this.offsetTime;"multidimensional"===this.propType&&(r=createTypedArray("float32",this.pv.length));for(var s,a,n,o,h,l,p,m,f=e.lastIndex,c=f,d=this.keyframes.length-1,u=!0;u;){if(s=this.keyframes[c],a=this.keyframes[c+1],c===d-1&&t>=a.t-i){s.h&&(s=a),f=0;break}if(a.t-i>t){f=c;break}c<d-1?c+=1:(f=0,u=!1)}var y,g,v,b,E,x,S,P,_,A,C=a.t-i,T=s.t-i;if(s.to){s.bezierData||(s.bezierData=bez.buildBezierData(s.s,a.s||s.e,s.to,s.ti));var k=s.bezierData;if(C<=t||t<T){var M=C<=t?k.points.length-1:0;for(o=k.points[M].point.length,n=0;n<o;n+=1)r[n]=k.points[M].point[n]}else{s.__fnct?m=s.__fnct:(m=BezierFactory.getBezierEasing(s.o.x,s.o.y,s.i.x,s.i.y,s.n).get,s.__fnct=m),h=m((t-T)/(C-T));var D,w=k.segmentLength*h,F=e.lastFrame<t&&e._lastKeyframeIndex===c?e._lastAddedLength:0;for(p=e.lastFrame<t&&e._lastKeyframeIndex===c?e._lastPoint:0,u=!0,l=k.points.length;u;){if(F+=k.points[p].partialLength,0===w||0===h||p===k.points.length-1){for(o=k.points[p].point.length,n=0;n<o;n+=1)r[n]=k.points[p].point[n];break}if(F<=w&&w<F+k.points[p+1].partialLength){for(D=(w-F)/k.points[p+1].partialLength,o=k.points[p].point.length,n=0;n<o;n+=1)r[n]=k.points[p].point[n]+(k.points[p+1].point[n]-k.points[p].point[n])*D;break}p<l-1?p+=1:u=!1}e._lastPoint=p,e._lastAddedLength=F-k.points[p].partialLength,e._lastKeyframeIndex=c}}else{var I,V,R,B,L;if(d=s.s.length,y=a.s||s.e,this.sh&&1!==s.h)if(C<=t)r[0]=y[0],r[1]=y[1],r[2]=y[2];else if(t<=T)r[0]=s.s[0],r[1]=s.s[1],r[2]=s.s[2];else{var G=N(s.s),z=N(y);g=r,v=function(t,e,r){var i,s,a,n,o,h=[],l=t[0],p=t[1],m=t[2],f=t[3],c=e[0],d=e[1],u=e[2],y=e[3];(s=l*c+p*d+m*u+f*y)<0&&(s=-s,c=-c,d=-d,u=-u,y=-y);o=1e-6<1-s?(i=Math.acos(s),a=Math.sin(i),n=Math.sin((1-r)*i)/a,Math.sin(r*i)/a):(n=1-r,r);return h[0]=n*l+o*c,h[1]=n*p+o*d,h[2]=n*m+o*u,h[3]=n*f+o*y,h}(G,z,(t-T)/(C-T)),b=v[0],E=v[1],x=v[2],S=v[3],P=Math.atan2(2*E*S-2*b*x,1-2*E*E-2*x*x),_=Math.asin(2*b*E+2*x*S),A=Math.atan2(2*b*S-2*E*x,1-2*b*b-2*x*x),g[0]=P/degToRads,g[1]=_/degToRads,g[2]=A/degToRads}else for(c=0;c<d;c+=1)1!==s.h&&(h=C<=t?1:t<T?0:(s.o.x.constructor===Array?(s.__fnct||(s.__fnct=[]),s.__fnct[c]?m=s.__fnct[c]:(I=void 0===s.o.x[c]?s.o.x[0]:s.o.x[c],V=void 0===s.o.y[c]?s.o.y[0]:s.o.y[c],R=void 0===s.i.x[c]?s.i.x[0]:s.i.x[c],B=void 0===s.i.y[c]?s.i.y[0]:s.i.y[c],m=BezierFactory.getBezierEasing(I,V,R,B).get,s.__fnct[c]=m)):s.__fnct?m=s.__fnct:(I=s.o.x,V=s.o.y,R=s.i.x,B=s.i.y,m=BezierFactory.getBezierEasing(I,V,R,B).get,s.__fnct=m),m((t-T)/(C-T)))),y=a.s||s.e,L=1===s.h?s.s[c]:s.s[c]+(y[c]-s.s[c])*h,"multidimensional"===this.propType?r[c]=L:r=L}return e.lastIndex=f,r}function N(t){var e=t[0]*degToRads,r=t[1]*degToRads,i=t[2]*degToRads,s=Math.cos(e/2),a=Math.cos(r/2),n=Math.cos(i/2),o=Math.sin(e/2),h=Math.sin(r/2),l=Math.sin(i/2);return[o*h*n+s*a*l,o*a*n+s*h*l,s*h*n-o*a*l,s*a*n-o*h*l]}function c(){var t=this.comp.renderedFrame-this.offsetTime,e=this.keyframes[0].t-this.offsetTime,r=this.keyframes[this.keyframes.length-1].t-this.offsetTime;if(!(t===this._caching.lastFrame||this._caching.lastFrame!==m&&(this._caching.lastFrame>=r&&r<=t||this._caching.lastFrame<e&&t<e))){this._caching.lastFrame>=t&&(this._caching._lastKeyframeIndex=-1,this._caching.lastIndex=0);var i=this.interpolateValue(t,this._caching);this.pv=i}return this._caching.lastFrame=t,this.pv}function d(t){var e;if("unidimensional"===this.propType)e=t*this.mult,1e-5<s(this.v-e)&&(this.v=e,this._mdf=!0);else for(var r=0,i=this.v.length;r<i;)e=t[r]*this.mult,1e-5<s(this.v[r]-e)&&(this.v[r]=e,this._mdf=!0),r+=1}function u(){if(this.elem.globalData.frameId!==this.frameId&&this.effectsSequence.length)if(this.lock)this.setVValue(this.pv);else{this.lock=!0,this._mdf=this._isFirstFrame;var t,e=this.effectsSequence.length,r=this.kf?this.pv:this.data.k;for(t=0;t<e;t+=1)r=this.effectsSequence[t](r);this.setVValue(r),this._isFirstFrame=!1,this.lock=!1,this.frameId=this.elem.globalData.frameId}}function y(t){this.effectsSequence.push(t),this.container.addDynamicProperty(this)}function n(t,e,r,i){this.propType="unidimensional",this.mult=r||1,this.data=e,this.v=r?e.k*r:e.k,this.pv=e.k,this._mdf=!1,this.elem=t,this.container=i,this.comp=t.comp,this.k=!1,this.kf=!1,this.vel=0,this.effectsSequence=[],this._isFirstFrame=!0,this.getValue=u,this.setVValue=d,this.addEffect=y}function o(t,e,r,i){this.propType="multidimensional",this.mult=r||1,this.data=e,this._mdf=!1,this.elem=t,this.container=i,this.comp=t.comp,this.k=!1,this.kf=!1,this.frameId=-1;var s,a=e.k.length;this.v=createTypedArray("float32",a),this.pv=createTypedArray("float32",a);createTypedArray("float32",a);for(this.vel=createTypedArray("float32",a),s=0;s<a;s+=1)this.v[s]=e.k[s]*this.mult,this.pv[s]=e.k[s];this._isFirstFrame=!0,this.effectsSequence=[],this.getValue=u,this.setVValue=d,this.addEffect=y}function h(t,e,r,i){this.propType="unidimensional",this.keyframes=e.k,this.offsetTime=t.data.st,this.frameId=-1,this._caching={lastFrame:m,lastIndex:0,value:0,_lastKeyframeIndex:-1},this.k=!0,this.kf=!0,this.data=e,this.mult=r||1,this.elem=t,this.container=i,this.comp=t.comp,this.v=m,this.pv=m,this._isFirstFrame=!0,this.getValue=u,this.setVValue=d,this.interpolateValue=f,this.effectsSequence=[c.bind(this)],this.addEffect=y}function l(t,e,r,i){this.propType="multidimensional";var s,a,n,o,h,l=e.k.length;for(s=0;s<l-1;s+=1)e.k[s].to&&e.k[s].s&&e.k[s+1]&&e.k[s+1].s&&(a=e.k[s].s,n=e.k[s+1].s,o=e.k[s].to,h=e.k[s].ti,(2===a.length&&(a[0]!==n[0]||a[1]!==n[1])&&bez.pointOnLine2D(a[0],a[1],n[0],n[1],a[0]+o[0],a[1]+o[1])&&bez.pointOnLine2D(a[0],a[1],n[0],n[1],n[0]+h[0],n[1]+h[1])||3===a.length&&(a[0]!==n[0]||a[1]!==n[1]||a[2]!==n[2])&&bez.pointOnLine3D(a[0],a[1],a[2],n[0],n[1],n[2],a[0]+o[0],a[1]+o[1],a[2]+o[2])&&bez.pointOnLine3D(a[0],a[1],a[2],n[0],n[1],n[2],n[0]+h[0],n[1]+h[1],n[2]+h[2]))&&(e.k[s].to=null,e.k[s].ti=null),a[0]===n[0]&&a[1]===n[1]&&0===o[0]&&0===o[1]&&0===h[0]&&0===h[1]&&(2===a.length||a[2]===n[2]&&0===o[2]&&0===h[2])&&(e.k[s].to=null,e.k[s].ti=null));this.effectsSequence=[c.bind(this)],this.keyframes=e.k,this.offsetTime=t.data.st,this.k=!0,this.kf=!0,this._isFirstFrame=!0,this.mult=r||1,this.elem=t,this.container=i,this.comp=t.comp,this.getValue=u,this.setVValue=d,this.interpolateValue=f,this.frameId=-1;var p=e.k[0].s.length;for(this.v=createTypedArray("float32",p),this.pv=createTypedArray("float32",p),s=0;s<p;s+=1)this.v[s]=m,this.pv[s]=m;this._caching={lastFrame:m,lastIndex:0,value:createTypedArray("float32",p)},this.addEffect=y}return{getProp:function(t,e,r,i,s){var a;if(e.k.length)if("number"==typeof e.k[0])a=new o(t,e,i,s);else switch(r){case 0:a=new h(t,e,i,s);break;case 1:a=new l(t,e,i,s)}else a=new n(t,e,i,s);return a.effectsSequence.length&&s.addDynamicProperty(a),a}}}(),TransformPropertyFactory=function(){var n=[0,0];function i(t,e,r){if(this.elem=t,this.frameId=-1,this.propType="transform",this.data=e,this.v=new Matrix,this.pre=new Matrix,this.appliedTransformations=0,this.initDynamicPropertyContainer(r||t),e.p&&e.p.s?(this.px=PropertyFactory.getProp(t,e.p.x,0,0,this),this.py=PropertyFactory.getProp(t,e.p.y,0,0,this),e.p.z&&(this.pz=PropertyFactory.getProp(t,e.p.z,0,0,this))):this.p=PropertyFactory.getProp(t,e.p||{k:[0,0,0]},1,0,this),e.rx){if(this.rx=PropertyFactory.getProp(t,e.rx,0,degToRads,this),this.ry=PropertyFactory.getProp(t,e.ry,0,degToRads,this),this.rz=PropertyFactory.getProp(t,e.rz,0,degToRads,this),e.or.k[0].ti){var i,s=e.or.k.length;for(i=0;i<s;i+=1)e.or.k[i].to=e.or.k[i].ti=null}this.or=PropertyFactory.getProp(t,e.or,1,degToRads,this),this.or.sh=!0}else this.r=PropertyFactory.getProp(t,e.r||{k:0},0,degToRads,this);e.sk&&(this.sk=PropertyFactory.getProp(t,e.sk,0,degToRads,this),this.sa=PropertyFactory.getProp(t,e.sa,0,degToRads,this)),this.a=PropertyFactory.getProp(t,e.a||{k:[0,0,0]},1,0,this),this.s=PropertyFactory.getProp(t,e.s||{k:[100,100,100]},1,.01,this),e.o?this.o=PropertyFactory.getProp(t,e.o,0,.01,t):this.o={_mdf:!1,v:1},this._isDirty=!0,this.dynamicProperties.length||this.getValue(!0)}return i.prototype={applyToMatrix:function(t){var e=this._mdf;this.iterateDynamicProperties(),this._mdf=this._mdf||e,this.a&&t.translate(-this.a.v[0],-this.a.v[1],this.a.v[2]),this.s&&t.scale(this.s.v[0],this.s.v[1],this.s.v[2]),this.sk&&t.skewFromAxis(-this.sk.v,this.sa.v),this.r?t.rotate(-this.r.v):t.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]),this.data.p.s?this.data.p.z?t.translate(this.px.v,this.py.v,-this.pz.v):t.translate(this.px.v,this.py.v,0):t.translate(this.p.v[0],this.p.v[1],-this.p.v[2])},getValue:function(t){if(this.elem.globalData.frameId!==this.frameId){if(this._isDirty&&(this.precalculateMatrix(),this._isDirty=!1),this.iterateDynamicProperties(),this._mdf||t){if(this.v.cloneFromProps(this.pre.props),this.appliedTransformations<1&&this.v.translate(-this.a.v[0],-this.a.v[1],this.a.v[2]),this.appliedTransformations<2&&this.v.scale(this.s.v[0],this.s.v[1],this.s.v[2]),this.sk&&this.appliedTransformations<3&&this.v.skewFromAxis(-this.sk.v,this.sa.v),this.r&&this.appliedTransformations<4?this.v.rotate(-this.r.v):!this.r&&this.appliedTransformations<4&&this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]),this.autoOriented){var e,r,i=this.elem.globalData.frameRate;if(this.p&&this.p.keyframes&&this.p.getValueAtTime)r=this.p._caching.lastFrame+this.p.offsetTime<=this.p.keyframes[0].t?(e=this.p.getValueAtTime((this.p.keyframes[0].t+.01)/i,0),this.p.getValueAtTime(this.p.keyframes[0].t/i,0)):this.p._caching.lastFrame+this.p.offsetTime>=this.p.keyframes[this.p.keyframes.length-1].t?(e=this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length-1].t/i,0),this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length-1].t-.05)/i,0)):(e=this.p.pv,this.p.getValueAtTime((this.p._caching.lastFrame+this.p.offsetTime-.01)/i,this.p.offsetTime));else if(this.px&&this.px.keyframes&&this.py.keyframes&&this.px.getValueAtTime&&this.py.getValueAtTime){e=[],r=[];var s=this.px,a=this.py;s._caching.lastFrame+s.offsetTime<=s.keyframes[0].t?(e[0]=s.getValueAtTime((s.keyframes[0].t+.01)/i,0),e[1]=a.getValueAtTime((a.keyframes[0].t+.01)/i,0),r[0]=s.getValueAtTime(s.keyframes[0].t/i,0),r[1]=a.getValueAtTime(a.keyframes[0].t/i,0)):s._caching.lastFrame+s.offsetTime>=s.keyframes[s.keyframes.length-1].t?(e[0]=s.getValueAtTime(s.keyframes[s.keyframes.length-1].t/i,0),e[1]=a.getValueAtTime(a.keyframes[a.keyframes.length-1].t/i,0),r[0]=s.getValueAtTime((s.keyframes[s.keyframes.length-1].t-.01)/i,0),r[1]=a.getValueAtTime((a.keyframes[a.keyframes.length-1].t-.01)/i,0)):(e=[s.pv,a.pv],r[0]=s.getValueAtTime((s._caching.lastFrame+s.offsetTime-.01)/i,s.offsetTime),r[1]=a.getValueAtTime((a._caching.lastFrame+a.offsetTime-.01)/i,a.offsetTime))}else e=r=n;this.v.rotate(-Math.atan2(e[1]-r[1],e[0]-r[0]))}this.data.p&&this.data.p.s?this.data.p.z?this.v.translate(this.px.v,this.py.v,-this.pz.v):this.v.translate(this.px.v,this.py.v,0):this.v.translate(this.p.v[0],this.p.v[1],-this.p.v[2])}this.frameId=this.elem.globalData.frameId}},precalculateMatrix:function(){if(!this.a.k&&(this.pre.translate(-this.a.v[0],-this.a.v[1],this.a.v[2]),this.appliedTransformations=1,!this.s.effectsSequence.length)){if(this.pre.scale(this.s.v[0],this.s.v[1],this.s.v[2]),this.appliedTransformations=2,this.sk){if(this.sk.effectsSequence.length||this.sa.effectsSequence.length)return;this.pre.skewFromAxis(-this.sk.v,this.sa.v),this.appliedTransformations=3}if(this.r){if(this.r.effectsSequence.length)return;this.pre.rotate(-this.r.v),this.appliedTransformations=4}else this.rz.effectsSequence.length||this.ry.effectsSequence.length||this.rx.effectsSequence.length||this.or.effectsSequence.length||(this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]),this.appliedTransformations=4)}},autoOrient:function(){}},extendPrototype([DynamicPropertyContainer],i),i.prototype.addDynamicProperty=function(t){this._addDynamicProperty(t),this.elem.addDynamicProperty(t),this._isDirty=!0},i.prototype._addDynamicProperty=DynamicPropertyContainer.prototype.addDynamicProperty,{getTransformProperty:function(t,e,r){return new i(t,e,r)}}}();function ShapePath(){this.c=!1,this._length=0,this._maxLength=8,this.v=createSizedArray(this._maxLength),this.o=createSizedArray(this._maxLength),this.i=createSizedArray(this._maxLength)}ShapePath.prototype.setPathData=function(t,e){this.c=t,this.setLength(e);for(var r=0;r<e;)this.v[r]=point_pool.newElement(),this.o[r]=point_pool.newElement(),this.i[r]=point_pool.newElement(),r+=1},ShapePath.prototype.setLength=function(t){for(;this._maxLength<t;)this.doubleArrayLength();this._length=t},ShapePath.prototype.doubleArrayLength=function(){this.v=this.v.concat(createSizedArray(this._maxLength)),this.i=this.i.concat(createSizedArray(this._maxLength)),this.o=this.o.concat(createSizedArray(this._maxLength)),this._maxLength*=2},ShapePath.prototype.setXYAt=function(t,e,r,i,s){var a;switch(this._length=Math.max(this._length,i+1),this._length>=this._maxLength&&this.doubleArrayLength(),r){case"v":a=this.v;break;case"i":a=this.i;break;case"o":a=this.o}(!a[i]||a[i]&&!s)&&(a[i]=point_pool.newElement()),a[i][0]=t,a[i][1]=e},ShapePath.prototype.setTripleAt=function(t,e,r,i,s,a,n,o){this.setXYAt(t,e,"v",n,o),this.setXYAt(r,i,"o",n,o),this.setXYAt(s,a,"i",n,o)},ShapePath.prototype.reverse=function(){var t=new ShapePath;t.setPathData(this.c,this._length);var e=this.v,r=this.o,i=this.i,s=0;this.c&&(t.setTripleAt(e[0][0],e[0][1],i[0][0],i[0][1],r[0][0],r[0][1],0,!1),s=1);var a,n=this._length-1,o=this._length;for(a=s;a<o;a+=1)t.setTripleAt(e[n][0],e[n][1],i[n][0],i[n][1],r[n][0],r[n][1],a,!1),n-=1;return t};var ShapePropertyFactory=function(){var s=-999999;function t(t,e,r){var i,s,a,n,o,h,l,p,m,f=r.lastIndex,c=this.keyframes;if(t<c[0].t-this.offsetTime)i=c[0].s[0],a=!0,f=0;else if(t>=c[c.length-1].t-this.offsetTime)i=c[c.length-1].s?c[c.length-1].s[0]:c[c.length-2].e[0],a=!0;else{for(var d,u,y=f,g=c.length-1,v=!0;v&&(d=c[y],!((u=c[y+1]).t-this.offsetTime>t));)y<g-1?y+=1:v=!1;if(f=y,!(a=1===d.h)){if(t>=u.t-this.offsetTime)p=1;else if(t<d.t-this.offsetTime)p=0;else{var b;d.__fnct?b=d.__fnct:(b=BezierFactory.getBezierEasing(d.o.x,d.o.y,d.i.x,d.i.y).get,d.__fnct=b),p=b((t-(d.t-this.offsetTime))/(u.t-this.offsetTime-(d.t-this.offsetTime)))}s=u.s?u.s[0]:d.e[0]}i=d.s[0]}for(h=e._length,l=i.i[0].length,r.lastIndex=f,n=0;n<h;n+=1)for(o=0;o<l;o+=1)m=a?i.i[n][o]:i.i[n][o]+(s.i[n][o]-i.i[n][o])*p,e.i[n][o]=m,m=a?i.o[n][o]:i.o[n][o]+(s.o[n][o]-i.o[n][o])*p,e.o[n][o]=m,m=a?i.v[n][o]:i.v[n][o]+(s.v[n][o]-i.v[n][o])*p,e.v[n][o]=m}function a(){this.paths=this.localShapeCollection}function e(t){(function(t,e){if(t._length!==e._length||t.c!==e.c)return!1;var r,i=t._length;for(r=0;r<i;r+=1)if(t.v[r][0]!==e.v[r][0]||t.v[r][1]!==e.v[r][1]||t.o[r][0]!==e.o[r][0]||t.o[r][1]!==e.o[r][1]||t.i[r][0]!==e.i[r][0]||t.i[r][1]!==e.i[r][1])return!1;return!0})(this.v,t)||(this.v=shape_pool.clone(t),this.localShapeCollection.releaseShapes(),this.localShapeCollection.addShape(this.v),this._mdf=!0,this.paths=this.localShapeCollection)}function r(){if(this.elem.globalData.frameId!==this.frameId)if(this.effectsSequence.length)if(this.lock)this.setVValue(this.pv);else{this.lock=!0,this._mdf=!1;var t,e=this.kf?this.pv:this.data.ks?this.data.ks.k:this.data.pt.k,r=this.effectsSequence.length;for(t=0;t<r;t+=1)e=this.effectsSequence[t](e);this.setVValue(e),this.lock=!1,this.frameId=this.elem.globalData.frameId}else this._mdf=!1}function n(t,e,r){this.propType="shape",this.comp=t.comp,this.container=t,this.elem=t,this.data=e,this.k=!1,this.kf=!1,this._mdf=!1;var i=3===r?e.pt.k:e.ks.k;this.v=shape_pool.clone(i),this.pv=shape_pool.clone(this.v),this.localShapeCollection=shapeCollection_pool.newShapeCollection(),this.paths=this.localShapeCollection,this.paths.addShape(this.v),this.reset=a,this.effectsSequence=[]}function i(t){this.effectsSequence.push(t),this.container.addDynamicProperty(this)}function o(t,e,r){this.propType="shape",this.comp=t.comp,this.elem=t,this.container=t,this.offsetTime=t.data.st,this.keyframes=3===r?e.pt.k:e.ks.k,this.k=!0,this.kf=!0;var i=this.keyframes[0].s[0].i.length;this.keyframes[0].s[0].i[0].length;this.v=shape_pool.newElement(),this.v.setPathData(this.keyframes[0].s[0].c,i),this.pv=shape_pool.clone(this.v),this.localShapeCollection=shapeCollection_pool.newShapeCollection(),this.paths=this.localShapeCollection,this.paths.addShape(this.v),this.lastFrame=s,this.reset=a,this._caching={lastFrame:s,lastIndex:0},this.effectsSequence=[function(){var t=this.comp.renderedFrame-this.offsetTime,e=this.keyframes[0].t-this.offsetTime,r=this.keyframes[this.keyframes.length-1].t-this.offsetTime,i=this._caching.lastFrame;return i!==s&&(i<e&&t<e||r<i&&r<t)||(this._caching.lastIndex=i<t?this._caching.lastIndex:0,this.interpolateShape(t,this.pv,this._caching)),this._caching.lastFrame=t,this.pv}.bind(this)]}n.prototype.interpolateShape=t,n.prototype.getValue=r,n.prototype.setVValue=e,n.prototype.addEffect=i,o.prototype.getValue=r,o.prototype.interpolateShape=t,o.prototype.setVValue=e,o.prototype.addEffect=i;var h=function(){var n=roundCorner;function t(t,e){this.v=shape_pool.newElement(),this.v.setPathData(!0,4),this.localShapeCollection=shapeCollection_pool.newShapeCollection(),this.paths=this.localShapeCollection,this.localShapeCollection.addShape(this.v),this.d=e.d,this.elem=t,this.comp=t.comp,this.frameId=-1,this.initDynamicPropertyContainer(t),this.p=PropertyFactory.getProp(t,e.p,1,0,this),this.s=PropertyFactory.getProp(t,e.s,1,0,this),this.dynamicProperties.length?this.k=!0:(this.k=!1,this.convertEllToPath())}return t.prototype={reset:a,getValue:function(){this.elem.globalData.frameId!==this.frameId&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf&&this.convertEllToPath())},convertEllToPath:function(){var t=this.p.v[0],e=this.p.v[1],r=this.s.v[0]/2,i=this.s.v[1]/2,s=3!==this.d,a=this.v;a.v[0][0]=t,a.v[0][1]=e-i,a.v[1][0]=s?t+r:t-r,a.v[1][1]=e,a.v[2][0]=t,a.v[2][1]=e+i,a.v[3][0]=s?t-r:t+r,a.v[3][1]=e,a.i[0][0]=s?t-r*n:t+r*n,a.i[0][1]=e-i,a.i[1][0]=s?t+r:t-r,a.i[1][1]=e-i*n,a.i[2][0]=s?t+r*n:t-r*n,a.i[2][1]=e+i,a.i[3][0]=s?t-r:t+r,a.i[3][1]=e+i*n,a.o[0][0]=s?t+r*n:t-r*n,a.o[0][1]=e-i,a.o[1][0]=s?t+r:t-r,a.o[1][1]=e+i*n,a.o[2][0]=s?t-r*n:t+r*n,a.o[2][1]=e+i,a.o[3][0]=s?t-r:t+r,a.o[3][1]=e-i*n}},extendPrototype([DynamicPropertyContainer],t),t}(),l=function(){function t(t,e){this.v=shape_pool.newElement(),this.v.setPathData(!0,0),this.elem=t,this.comp=t.comp,this.data=e,this.frameId=-1,this.d=e.d,this.initDynamicPropertyContainer(t),1===e.sy?(this.ir=PropertyFactory.getProp(t,e.ir,0,0,this),this.is=PropertyFactory.getProp(t,e.is,0,.01,this),this.convertToPath=this.convertStarToPath):this.convertToPath=this.convertPolygonToPath,this.pt=PropertyFactory.getProp(t,e.pt,0,0,this),this.p=PropertyFactory.getProp(t,e.p,1,0,this),this.r=PropertyFactory.getProp(t,e.r,0,degToRads,this),this.or=PropertyFactory.getProp(t,e.or,0,0,this),this.os=PropertyFactory.getProp(t,e.os,0,.01,this),this.localShapeCollection=shapeCollection_pool.newShapeCollection(),this.localShapeCollection.addShape(this.v),this.paths=this.localShapeCollection,this.dynamicProperties.length?this.k=!0:(this.k=!1,this.convertToPath())}return t.prototype={reset:a,getValue:function(){this.elem.globalData.frameId!==this.frameId&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf&&this.convertToPath())},convertStarToPath:function(){var t,e,r,i,s=2*Math.floor(this.pt.v),a=2*Math.PI/s,n=!0,o=this.or.v,h=this.ir.v,l=this.os.v,p=this.is.v,m=2*Math.PI*o/(2*s),f=2*Math.PI*h/(2*s),c=-Math.PI/2;c+=this.r.v;var d=3===this.data.d?-1:1;for(t=this.v._length=0;t<s;t+=1){r=n?l:p,i=n?m:f;var u=(e=n?o:h)*Math.cos(c),y=e*Math.sin(c),g=0===u&&0===y?0:y/Math.sqrt(u*u+y*y),v=0===u&&0===y?0:-u/Math.sqrt(u*u+y*y);u+=+this.p.v[0],y+=+this.p.v[1],this.v.setTripleAt(u,y,u-g*i*r*d,y-v*i*r*d,u+g*i*r*d,y+v*i*r*d,t,!0),n=!n,c+=a*d}},convertPolygonToPath:function(){var t,e=Math.floor(this.pt.v),r=2*Math.PI/e,i=this.or.v,s=this.os.v,a=2*Math.PI*i/(4*e),n=-Math.PI/2,o=3===this.data.d?-1:1;for(n+=this.r.v,t=this.v._length=0;t<e;t+=1){var h=i*Math.cos(n),l=i*Math.sin(n),p=0===h&&0===l?0:l/Math.sqrt(h*h+l*l),m=0===h&&0===l?0:-h/Math.sqrt(h*h+l*l);h+=+this.p.v[0],l+=+this.p.v[1],this.v.setTripleAt(h,l,h-p*a*s*o,l-m*a*s*o,h+p*a*s*o,l+m*a*s*o,t,!0),n+=r*o}this.paths.length=0,this.paths[0]=this.v}},extendPrototype([DynamicPropertyContainer],t),t}(),p=function(){function t(t,e){this.v=shape_pool.newElement(),this.v.c=!0,this.localShapeCollection=shapeCollection_pool.newShapeCollection(),this.localShapeCollection.addShape(this.v),this.paths=this.localShapeCollection,this.elem=t,this.comp=t.comp,this.frameId=-1,this.d=e.d,this.initDynamicPropertyContainer(t),this.p=PropertyFactory.getProp(t,e.p,1,0,this),this.s=PropertyFactory.getProp(t,e.s,1,0,this),this.r=PropertyFactory.getProp(t,e.r,0,0,this),this.dynamicProperties.length?this.k=!0:(this.k=!1,this.convertRectToPath())}return t.prototype={convertRectToPath:function(){var t=this.p.v[0],e=this.p.v[1],r=this.s.v[0]/2,i=this.s.v[1]/2,s=bm_min(r,i,this.r.v),a=s*(1-roundCorner);this.v._length=0,2===this.d||1===this.d?(this.v.setTripleAt(t+r,e-i+s,t+r,e-i+s,t+r,e-i+a,0,!0),this.v.setTripleAt(t+r,e+i-s,t+r,e+i-a,t+r,e+i-s,1,!0),0!==s?(this.v.setTripleAt(t+r-s,e+i,t+r-s,e+i,t+r-a,e+i,2,!0),this.v.setTripleAt(t-r+s,e+i,t-r+a,e+i,t-r+s,e+i,3,!0),this.v.setTripleAt(t-r,e+i-s,t-r,e+i-s,t-r,e+i-a,4,!0),this.v.setTripleAt(t-r,e-i+s,t-r,e-i+a,t-r,e-i+s,5,!0),this.v.setTripleAt(t-r+s,e-i,t-r+s,e-i,t-r+a,e-i,6,!0),this.v.setTripleAt(t+r-s,e-i,t+r-a,e-i,t+r-s,e-i,7,!0)):(this.v.setTripleAt(t-r,e+i,t-r+a,e+i,t-r,e+i,2),this.v.setTripleAt(t-r,e-i,t-r,e-i+a,t-r,e-i,3))):(this.v.setTripleAt(t+r,e-i+s,t+r,e-i+a,t+r,e-i+s,0,!0),0!==s?(this.v.setTripleAt(t+r-s,e-i,t+r-s,e-i,t+r-a,e-i,1,!0),this.v.setTripleAt(t-r+s,e-i,t-r+a,e-i,t-r+s,e-i,2,!0),this.v.setTripleAt(t-r,e-i+s,t-r,e-i+s,t-r,e-i+a,3,!0),this.v.setTripleAt(t-r,e+i-s,t-r,e+i-a,t-r,e+i-s,4,!0),this.v.setTripleAt(t-r+s,e+i,t-r+s,e+i,t-r+a,e+i,5,!0),this.v.setTripleAt(t+r-s,e+i,t+r-a,e+i,t+r-s,e+i,6,!0),this.v.setTripleAt(t+r,e+i-s,t+r,e+i-s,t+r,e+i-a,7,!0)):(this.v.setTripleAt(t-r,e-i,t-r+a,e-i,t-r,e-i,1,!0),this.v.setTripleAt(t-r,e+i,t-r,e+i-a,t-r,e+i,2,!0),this.v.setTripleAt(t+r,e+i,t+r-a,e+i,t+r,e+i,3,!0)))},getValue:function(t){this.elem.globalData.frameId!==this.frameId&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf&&this.convertRectToPath())},reset:a},extendPrototype([DynamicPropertyContainer],t),t}();var m={getShapeProp:function(t,e,r){var i;return 3===r||4===r?i=(3===r?e.pt:e.ks).k.length?new o(t,e,r):new n(t,e,r):5===r?i=new p(t,e):6===r?i=new h(t,e):7===r&&(i=new l(t,e)),i.k&&t.addDynamicProperty(i),i},getConstructorFunction:function(){return n},getKeyframedConstructorFunction:function(){return o}};return m}(),ShapeModifiers=($r={},_r={},$r.registerModifier=function(t,e){_r[t]||(_r[t]=e)},$r.getModifier=function(t,e,r){return new _r[t](e,r)},$r),$r,_r;function ShapeModifier(){}function TrimModifier(){}function RoundCornersModifier(){}function RepeaterModifier(){}function ShapeCollection(){this._length=0,this._maxLength=4,this.shapes=createSizedArray(this._maxLength)}function DashProperty(t,e,r,i){this.elem=t,this.frameId=-1,this.dataProps=createSizedArray(e.length),this.renderer=r,this.k=!1,this.dashStr="",this.dashArray=createTypedArray("float32",e.length?e.length-1:0),this.dashoffset=createTypedArray("float32",1),this.initDynamicPropertyContainer(i);var s,a,n=e.length||0;for(s=0;s<n;s+=1)a=PropertyFactory.getProp(t,e[s].v,0,0,this),this.k=a.k||this.k,this.dataProps[s]={n:e[s].n,p:a};this.k||this.getValue(!0),this._isAnimated=this.k}function GradientProperty(t,e,r){this.data=e,this.c=createTypedArray("uint8c",4*e.p);var i=e.k.k[0].s?e.k.k[0].s.length-4*e.p:e.k.k.length-4*e.p;this.o=createTypedArray("float32",i),this._cmdf=!1,this._omdf=!1,this._collapsable=this.checkCollapsable(),this._hasOpacity=i,this.initDynamicPropertyContainer(r),this.prop=PropertyFactory.getProp(t,e.k,1,null,this),this.k=this.prop.k,this.getValue(!0)}ShapeModifier.prototype.initModifierProperties=function(){},ShapeModifier.prototype.addShapeToModifier=function(){},ShapeModifier.prototype.addShape=function(t){if(!this.closed){t.sh.container.addDynamicProperty(t.sh);var e={shape:t.sh,data:t,localShapeCollection:shapeCollection_pool.newShapeCollection()};this.shapes.push(e),this.addShapeToModifier(e),this._isAnimated&&t.setAsAnimated()}},ShapeModifier.prototype.init=function(t,e){this.shapes=[],this.elem=t,this.initDynamicPropertyContainer(t),this.initModifierProperties(t,e),this.frameId=initialDefaultFrame,this.closed=!1,this.k=!1,this.dynamicProperties.length?this.k=!0:this.getValue(!0)},ShapeModifier.prototype.processKeys=function(){this.elem.globalData.frameId!==this.frameId&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties())},extendPrototype([DynamicPropertyContainer],ShapeModifier),extendPrototype([ShapeModifier],TrimModifier),TrimModifier.prototype.initModifierProperties=function(t,e){this.s=PropertyFactory.getProp(t,e.s,0,.01,this),this.e=PropertyFactory.getProp(t,e.e,0,.01,this),this.o=PropertyFactory.getProp(t,e.o,0,0,this),this.sValue=0,this.eValue=0,this.getValue=this.processKeys,this.m=e.m,this._isAnimated=!!this.s.effectsSequence.length||!!this.e.effectsSequence.length||!!this.o.effectsSequence.length},TrimModifier.prototype.addShapeToModifier=function(t){t.pathsData=[]},TrimModifier.prototype.calculateShapeEdges=function(t,e,r,i,s){var a=[];e<=1?a.push({s:t,e:e}):1<=t?a.push({s:t-1,e:e-1}):(a.push({s:t,e:1}),a.push({s:0,e:e-1}));var n,o,h=[],l=a.length;for(n=0;n<l;n+=1){var p,m;if((o=a[n]).e*s<i||o.s*s>i+r);else p=o.s*s<=i?0:(o.s*s-i)/r,m=o.e*s>=i+r?1:(o.e*s-i)/r,h.push([p,m])}return h.length||h.push([0,0]),h},TrimModifier.prototype.releasePathsData=function(t){var e,r=t.length;for(e=0;e<r;e+=1)segments_length_pool.release(t[e]);return t.length=0,t},TrimModifier.prototype.processShapes=function(t){var e,r,i;if(this._mdf||t){var s=this.o.v%360/360;if(s<0&&(s+=1),e=(1<this.s.v?1:this.s.v<0?0:this.s.v)+s,(r=(1<this.e.v?1:this.e.v<0?0:this.e.v)+s)<e){var a=e;e=r,r=a}e=1e-4*Math.round(1e4*e),r=1e-4*Math.round(1e4*r),this.sValue=e,this.eValue=r}else e=this.sValue,r=this.eValue;var n,o,h,l,p,m,f=this.shapes.length,c=0;if(r===e)for(n=0;n<f;n+=1)this.shapes[n].localShapeCollection.releaseShapes(),this.shapes[n].shape._mdf=!0,this.shapes[n].shape.paths=this.shapes[n].localShapeCollection;else if(1===r&&0===e||0===r&&1===e){if(this._mdf)for(n=0;n<f;n+=1)this.shapes[n].pathsData.length=0,this.shapes[n].shape._mdf=!0}else{var d,u,y=[];for(n=0;n<f;n+=1)if((d=this.shapes[n]).shape._mdf||this._mdf||t||2===this.m){if(h=(i=d.shape.paths)._length,m=0,!d.shape._mdf&&d.pathsData.length)m=d.totalShapeLength;else{for(l=this.releasePathsData(d.pathsData),o=0;o<h;o+=1)p=bez.getSegmentsLength(i.shapes[o]),l.push(p),m+=p.totalLength;d.totalShapeLength=m,d.pathsData=l}c+=m,d.shape._mdf=!0}else d.shape.paths=d.localShapeCollection;var g,v=e,b=r,E=0;for(n=f-1;0<=n;n-=1)if((d=this.shapes[n]).shape._mdf){for((u=d.localShapeCollection).releaseShapes(),2===this.m&&1<f?(g=this.calculateShapeEdges(e,r,d.totalShapeLength,E,c),E+=d.totalShapeLength):g=[[v,b]],h=g.length,o=0;o<h;o+=1){v=g[o][0],b=g[o][1],y.length=0,b<=1?y.push({s:d.totalShapeLength*v,e:d.totalShapeLength*b}):1<=v?y.push({s:d.totalShapeLength*(v-1),e:d.totalShapeLength*(b-1)}):(y.push({s:d.totalShapeLength*v,e:d.totalShapeLength}),y.push({s:0,e:d.totalShapeLength*(b-1)}));var x=this.addShapes(d,y[0]);if(y[0].s!==y[0].e){if(1<y.length)if(d.shape.paths.shapes[d.shape.paths._length-1].c){var S=x.pop();this.addPaths(x,u),x=this.addShapes(d,y[1],S)}else this.addPaths(x,u),x=this.addShapes(d,y[1]);this.addPaths(x,u)}}d.shape.paths=u}}},TrimModifier.prototype.addPaths=function(t,e){var r,i=t.length;for(r=0;r<i;r+=1)e.addShape(t[r])},TrimModifier.prototype.addSegment=function(t,e,r,i,s,a,n){s.setXYAt(e[0],e[1],"o",a),s.setXYAt(r[0],r[1],"i",a+1),n&&s.setXYAt(t[0],t[1],"v",a),s.setXYAt(i[0],i[1],"v",a+1)},TrimModifier.prototype.addSegmentFromArray=function(t,e,r,i){e.setXYAt(t[1],t[5],"o",r),e.setXYAt(t[2],t[6],"i",r+1),i&&e.setXYAt(t[0],t[4],"v",r),e.setXYAt(t[3],t[7],"v",r+1)},TrimModifier.prototype.addShapes=function(t,e,r){var i,s,a,n,o,h,l,p,m=t.pathsData,f=t.shape.paths.shapes,c=t.shape.paths._length,d=0,u=[],y=!0;for(p=r?(o=r._length,r._length):(r=shape_pool.newElement(),o=0),u.push(r),i=0;i<c;i+=1){for(h=m[i].lengths,r.c=f[i].c,a=f[i].c?h.length:h.length+1,s=1;s<a;s+=1)if(d+(n=h[s-1]).addedLength<e.s)d+=n.addedLength,r.c=!1;else{if(d>e.e){r.c=!1;break}e.s<=d&&e.e>=d+n.addedLength?(this.addSegment(f[i].v[s-1],f[i].o[s-1],f[i].i[s],f[i].v[s],r,o,y),y=!1):(l=bez.getNewSegment(f[i].v[s-1],f[i].v[s],f[i].o[s-1],f[i].i[s],(e.s-d)/n.addedLength,(e.e-d)/n.addedLength,h[s-1]),this.addSegmentFromArray(l,r,o,y),y=!1,r.c=!1),d+=n.addedLength,o+=1}if(f[i].c&&h.length){if(n=h[s-1],d<=e.e){var g=h[s-1].addedLength;e.s<=d&&e.e>=d+g?(this.addSegment(f[i].v[s-1],f[i].o[s-1],f[i].i[0],f[i].v[0],r,o,y),y=!1):(l=bez.getNewSegment(f[i].v[s-1],f[i].v[0],f[i].o[s-1],f[i].i[0],(e.s-d)/g,(e.e-d)/g,h[s-1]),this.addSegmentFromArray(l,r,o,y),y=!1,r.c=!1)}else r.c=!1;d+=n.addedLength,o+=1}if(r._length&&(r.setXYAt(r.v[p][0],r.v[p][1],"i",p),r.setXYAt(r.v[r._length-1][0],r.v[r._length-1][1],"o",r._length-1)),d>e.e)break;i<c-1&&(r=shape_pool.newElement(),y=!0,u.push(r),o=0)}return u},ShapeModifiers.registerModifier("tm",TrimModifier),extendPrototype([ShapeModifier],RoundCornersModifier),RoundCornersModifier.prototype.initModifierProperties=function(t,e){this.getValue=this.processKeys,this.rd=PropertyFactory.getProp(t,e.r,0,null,this),this._isAnimated=!!this.rd.effectsSequence.length},RoundCornersModifier.prototype.processPath=function(t,e){var r=shape_pool.newElement();r.c=t.c;var i,s,a,n,o,h,l,p,m,f,c,d,u,y=t._length,g=0;for(i=0;i<y;i+=1)s=t.v[i],n=t.o[i],a=t.i[i],s[0]===n[0]&&s[1]===n[1]&&s[0]===a[0]&&s[1]===a[1]?0!==i&&i!==y-1||t.c?(o=0===i?t.v[y-1]:t.v[i-1],l=(h=Math.sqrt(Math.pow(s[0]-o[0],2)+Math.pow(s[1]-o[1],2)))?Math.min(h/2,e)/h:0,p=d=s[0]+(o[0]-s[0])*l,m=u=s[1]-(s[1]-o[1])*l,f=p-(p-s[0])*roundCorner,c=m-(m-s[1])*roundCorner,r.setTripleAt(p,m,f,c,d,u,g),g+=1,o=i===y-1?t.v[0]:t.v[i+1],l=(h=Math.sqrt(Math.pow(s[0]-o[0],2)+Math.pow(s[1]-o[1],2)))?Math.min(h/2,e)/h:0,p=f=s[0]+(o[0]-s[0])*l,m=c=s[1]+(o[1]-s[1])*l,d=p-(p-s[0])*roundCorner,u=m-(m-s[1])*roundCorner,r.setTripleAt(p,m,f,c,d,u,g)):r.setTripleAt(s[0],s[1],n[0],n[1],a[0],a[1],g):r.setTripleAt(t.v[i][0],t.v[i][1],t.o[i][0],t.o[i][1],t.i[i][0],t.i[i][1],g),g+=1;return r},RoundCornersModifier.prototype.processShapes=function(t){var e,r,i,s,a,n,o=this.shapes.length,h=this.rd.v;if(0!==h)for(r=0;r<o;r+=1){if((a=this.shapes[r]).shape.paths,n=a.localShapeCollection,a.shape._mdf||this._mdf||t)for(n.releaseShapes(),a.shape._mdf=!0,e=a.shape.paths.shapes,s=a.shape.paths._length,i=0;i<s;i+=1)n.addShape(this.processPath(e[i],h));a.shape.paths=a.localShapeCollection}this.dynamicProperties.length||(this._mdf=!1)},ShapeModifiers.registerModifier("rd",RoundCornersModifier),extendPrototype([ShapeModifier],RepeaterModifier),RepeaterModifier.prototype.initModifierProperties=function(t,e){this.getValue=this.processKeys,this.c=PropertyFactory.getProp(t,e.c,0,null,this),this.o=PropertyFactory.getProp(t,e.o,0,null,this),this.tr=TransformPropertyFactory.getTransformProperty(t,e.tr,this),this.so=PropertyFactory.getProp(t,e.tr.so,0,.01,this),this.eo=PropertyFactory.getProp(t,e.tr.eo,0,.01,this),this.data=e,this.dynamicProperties.length||this.getValue(!0),this._isAnimated=!!this.dynamicProperties.length,this.pMatrix=new Matrix,this.rMatrix=new Matrix,this.sMatrix=new Matrix,this.tMatrix=new Matrix,this.matrix=new Matrix},RepeaterModifier.prototype.applyTransforms=function(t,e,r,i,s,a){var n=a?-1:1,o=i.s.v[0]+(1-i.s.v[0])*(1-s),h=i.s.v[1]+(1-i.s.v[1])*(1-s);t.translate(i.p.v[0]*n*s,i.p.v[1]*n*s,i.p.v[2]),e.translate(-i.a.v[0],-i.a.v[1],i.a.v[2]),e.rotate(-i.r.v*n*s),e.translate(i.a.v[0],i.a.v[1],i.a.v[2]),r.translate(-i.a.v[0],-i.a.v[1],i.a.v[2]),r.scale(a?1/o:o,a?1/h:h),r.translate(i.a.v[0],i.a.v[1],i.a.v[2])},RepeaterModifier.prototype.init=function(t,e,r,i){this.elem=t,this.arr=e,this.pos=r,this.elemsData=i,this._currentCopies=0,this._elements=[],this._groups=[],this.frameId=-1,this.initDynamicPropertyContainer(t),this.initModifierProperties(t,e[r]);for(;0<r;)r-=1,this._elements.unshift(e[r]),1;this.dynamicProperties.length?this.k=!0:this.getValue(!0)},RepeaterModifier.prototype.resetElements=function(t){var e,r=t.length;for(e=0;e<r;e+=1)t[e]._processed=!1,"gr"===t[e].ty&&this.resetElements(t[e].it)},RepeaterModifier.prototype.cloneElements=function(t){t.length;var e=JSON.parse(JSON.stringify(t));return this.resetElements(e),e},RepeaterModifier.prototype.changeGroupRender=function(t,e){var r,i=t.length;for(r=0;r<i;r+=1)t[r]._render=e,"gr"===t[r].ty&&this.changeGroupRender(t[r].it,e)},RepeaterModifier.prototype.processShapes=function(t){var e,r,i,s,a;if(this._mdf||t){var n,o=Math.ceil(this.c.v);if(this._groups.length<o){for(;this._groups.length<o;){var h={it:this.cloneElements(this._elements),ty:"gr"};h.it.push({a:{a:0,ix:1,k:[0,0]},nm:"Transform",o:{a:0,ix:7,k:100},p:{a:0,ix:2,k:[0,0]},r:{a:1,ix:6,k:[{s:0,e:0,t:0},{s:0,e:0,t:1}]},s:{a:0,ix:3,k:[100,100]},sa:{a:0,ix:5,k:0},sk:{a:0,ix:4,k:0},ty:"tr"}),this.arr.splice(0,0,h),this._groups.splice(0,0,h),this._currentCopies+=1}this.elem.reloadShapes()}for(i=a=0;i<=this._groups.length-1;i+=1)n=a<o,this._groups[i]._render=n,this.changeGroupRender(this._groups[i].it,n),a+=1;this._currentCopies=o;var l=this.o.v,p=l%1,m=0<l?Math.floor(l):Math.ceil(l),f=(this.tr.v.props,this.pMatrix.props),c=this.rMatrix.props,d=this.sMatrix.props;this.pMatrix.reset(),this.rMatrix.reset(),this.sMatrix.reset(),this.tMatrix.reset(),this.matrix.reset();var u,y,g=0;if(0<l){for(;g<m;)this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!1),g+=1;p&&(this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,p,!1),g+=p)}else if(l<0){for(;m<g;)this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!0),g-=1;p&&(this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,-p,!0),g-=p)}for(i=1===this.data.m?0:this._currentCopies-1,s=1===this.data.m?1:-1,a=this._currentCopies;a;){if(y=(r=(e=this.elemsData[i].it)[e.length-1].transform.mProps.v.props).length,e[e.length-1].transform.mProps._mdf=!0,e[e.length-1].transform.op._mdf=!0,e[e.length-1].transform.op.v=this.so.v+(this.eo.v-this.so.v)*(i/(this._currentCopies-1)),0!==g){for((0!==i&&1===s||i!==this._currentCopies-1&&-1===s)&&this.applyTransforms(this.pMatrix,this.rMatrix,this.sMatrix,this.tr,1,!1),this.matrix.transform(c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7],c[8],c[9],c[10],c[11],c[12],c[13],c[14],c[15]),this.matrix.transform(d[0],d[1],d[2],d[3],d[4],d[5],d[6],d[7],d[8],d[9],d[10],d[11],d[12],d[13],d[14],d[15]),this.matrix.transform(f[0],f[1],f[2],f[3],f[4],f[5],f[6],f[7],f[8],f[9],f[10],f[11],f[12],f[13],f[14],f[15]),u=0;u<y;u+=1)r[u]=this.matrix.props[u];this.matrix.reset()}else for(this.matrix.reset(),u=0;u<y;u+=1)r[u]=this.matrix.props[u];g+=1,a-=1,i+=s}}else for(a=this._currentCopies,i=0,s=1;a;)r=(e=this.elemsData[i].it)[e.length-1].transform.mProps.v.props,e[e.length-1].transform.mProps._mdf=!1,e[e.length-1].transform.op._mdf=!1,a-=1,i+=s},RepeaterModifier.prototype.addShape=function(){},ShapeModifiers.registerModifier("rp",RepeaterModifier),ShapeCollection.prototype.addShape=function(t){this._length===this._maxLength&&(this.shapes=this.shapes.concat(createSizedArray(this._maxLength)),this._maxLength*=2),this.shapes[this._length]=t,this._length+=1},ShapeCollection.prototype.releaseShapes=function(){var t;for(t=0;t<this._length;t+=1)shape_pool.release(this.shapes[t]);this._length=0},DashProperty.prototype.getValue=function(t){if((this.elem.globalData.frameId!==this.frameId||t)&&(this.frameId=this.elem.globalData.frameId,this.iterateDynamicProperties(),this._mdf=this._mdf||t,this._mdf)){var e=0,r=this.dataProps.length;for("svg"===this.renderer&&(this.dashStr=""),e=0;e<r;e+=1)"o"!=this.dataProps[e].n?"svg"===this.renderer?this.dashStr+=" "+this.dataProps[e].p.v:this.dashArray[e]=this.dataProps[e].p.v:this.dashoffset[0]=this.dataProps[e].p.v}},extendPrototype([DynamicPropertyContainer],DashProperty),GradientProperty.prototype.comparePoints=function(t,e){for(var r=0,i=this.o.length/2;r<i;){if(.01<Math.abs(t[4*r]-t[4*e+2*r]))return!1;r+=1}return!0},GradientProperty.prototype.checkCollapsable=function(){if(this.o.length/2!=this.c.length/4)return!1;if(this.data.k.k[0].s)for(var t=0,e=this.data.k.k.length;t<e;){if(!this.comparePoints(this.data.k.k[t].s,this.data.p))return!1;t+=1}else if(!this.comparePoints(this.data.k.k,this.data.p))return!1;return!0},GradientProperty.prototype.getValue=function(t){if(this.prop.getValue(),this._mdf=!1,this._cmdf=!1,this._omdf=!1,this.prop._mdf||t){var e,r,i,s=4*this.data.p;for(e=0;e<s;e+=1)r=e%4==0?100:255,i=Math.round(this.prop.v[e]*r),this.c[e]!==i&&(this.c[e]=i,this._cmdf=!t);if(this.o.length)for(s=this.prop.v.length,e=4*this.data.p;e<s;e+=1)r=e%2==0?100:1,i=e%2==0?Math.round(100*this.prop.v[e]):this.prop.v[e],this.o[e-4*this.data.p]!==i&&(this.o[e-4*this.data.p]=i,this._omdf=!t);this._mdf=!t}},extendPrototype([DynamicPropertyContainer],GradientProperty);var buildShapeString=function(t,e,r,i){if(0===e)return"";var s,a=t.o,n=t.i,o=t.v,h=" M"+i.applyToPointStringified(o[0][0],o[0][1]);for(s=1;s<e;s+=1)h+=" C"+i.applyToPointStringified(a[s-1][0],a[s-1][1])+" "+i.applyToPointStringified(n[s][0],n[s][1])+" "+i.applyToPointStringified(o[s][0],o[s][1]);return r&&e&&(h+=" C"+i.applyToPointStringified(a[s-1][0],a[s-1][1])+" "+i.applyToPointStringified(n[0][0],n[0][1])+" "+i.applyToPointStringified(o[0][0],o[0][1]),h+="z"),h},ImagePreloader=function(){var s=function(){var t=createTag("canvas");t.width=1,t.height=1;var e=t.getContext("2d");return e.fillStyle="rgba(0,0,0,0)",e.fillRect(0,0,1,1),t}();function t(){this.loadedAssets+=1,this.loadedAssets===this.totalImages&&this.imagesLoadedCb&&this.imagesLoadedCb(null)}function e(t){var e=function(t,e,r){var i="";if(t.e)i=t.p;else if(e){var s=t.p;-1!==s.indexOf("images/")&&(s=s.split("/")[1]),i=e+s}else i=r,i+=t.u?t.u:"",i+=t.p;return i}(t,this.assetsPath,this.path),r=createTag("img");r.crossOrigin="anonymous",r.addEventListener("load",this._imageLoaded.bind(this),!1),r.addEventListener("error",function(){i.img=s,this._imageLoaded()}.bind(this),!1),r.src=e;var i={img:r,assetData:t};return i}function r(t,e){this.imagesLoadedCb=e;var r,i=t.length;for(r=0;r<i;r+=1)t[r].layers||(this.totalImages+=1,this.images.push(this._createImageData(t[r])))}function i(t){this.path=t||""}function a(t){this.assetsPath=t||""}function n(t){for(var e=0,r=this.images.length;e<r;){if(this.images[e].assetData===t)return this.images[e].img;e+=1}}function o(){this.imagesLoadedCb=null,this.images.length=0}function h(){return this.totalImages===this.loadedAssets}return function(){this.loadAssets=r,this.setAssetsPath=a,this.setPath=i,this.loaded=h,this.destroy=o,this.getImage=n,this._createImageData=e,this._imageLoaded=t,this.assetsPath="",this.path="",this.totalImages=0,this.loadedAssets=0,this.imagesLoadedCb=null,this.images=[]}}(),featureSupport=(sw={maskType:!0},(/MSIE 10/i.test(navigator.userAgent)||/MSIE 9/i.test(navigator.userAgent)||/rv:11.0/i.test(navigator.userAgent)||/Edge\/\d./i.test(navigator.userAgent))&&(sw.maskType=!1),sw),sw,filtersFactory=(tw={},tw.createFilter=function(t){var e=createNS("filter");return e.setAttribute("id",t),e.setAttribute("filterUnits","objectBoundingBox"),e.setAttribute("x","0%"),e.setAttribute("y","0%"),e.setAttribute("width","100%"),e.setAttribute("height","100%"),e},tw.createAlphaToLuminanceFilter=function(){var t=createNS("feColorMatrix");return t.setAttribute("type","matrix"),t.setAttribute("color-interpolation-filters","sRGB"),t.setAttribute("values","0 0 0 1 0  0 0 0 1 0  0 0 0 1 0  0 0 0 1 1"),t},tw),tw,assetLoader=function(){function a(t){return t.response&&"object"==typeof t.response?t.response:t.response&&"string"==typeof t.response?JSON.parse(t.response):t.responseText?JSON.parse(t.responseText):void 0}return{load:function(t,e,r){var i,s=new XMLHttpRequest;s.open("GET",t,!0);try{s.responseType="json"}catch(t){}s.send(),s.onreadystatechange=function(){if(4==s.readyState)if(200==s.status)i=a(s),e(i);else try{i=a(s),e(i)}catch(t){r&&r(t)}}}}}();function TextAnimatorProperty(t,e,r){this._isFirstFrame=!0,this._hasMaskedPath=!1,this._frameId=-1,this._textData=t,this._renderType=e,this._elem=r,this._animatorsData=createSizedArray(this._textData.a.length),this._pathData={},this._moreOptions={alignment:{}},this.renderedLetters=[],this.lettersChangedFlag=!1,this.initDynamicPropertyContainer(r)}function TextAnimatorDataProperty(t,e,r){var i={propType:!1},s=PropertyFactory.getProp,a=e.a;this.a={r:a.r?s(t,a.r,0,degToRads,r):i,rx:a.rx?s(t,a.rx,0,degToRads,r):i,ry:a.ry?s(t,a.ry,0,degToRads,r):i,sk:a.sk?s(t,a.sk,0,degToRads,r):i,sa:a.sa?s(t,a.sa,0,degToRads,r):i,s:a.s?s(t,a.s,1,.01,r):i,a:a.a?s(t,a.a,1,0,r):i,o:a.o?s(t,a.o,0,.01,r):i,p:a.p?s(t,a.p,1,0,r):i,sw:a.sw?s(t,a.sw,0,0,r):i,sc:a.sc?s(t,a.sc,1,0,r):i,fc:a.fc?s(t,a.fc,1,0,r):i,fh:a.fh?s(t,a.fh,0,0,r):i,fs:a.fs?s(t,a.fs,0,.01,r):i,fb:a.fb?s(t,a.fb,0,.01,r):i,t:a.t?s(t,a.t,0,0,r):i},this.s=TextSelectorProp.getTextSelectorProp(t,e.s,r),this.s.t=e.s.t}function LetterProps(t,e,r,i,s,a){this.o=t,this.sw=e,this.sc=r,this.fc=i,this.m=s,this.p=a,this._mdf={o:!0,sw:!!e,sc:!!r,fc:!!i,m:!0,p:!0}}function TextProperty(t,e){this._frameId=initialDefaultFrame,this.pv="",this.v="",this.kf=!1,this._isFirstFrame=!0,this._mdf=!1,this.data=e,this.elem=t,this.comp=this.elem.comp,this.keysIndex=0,this.canResize=!1,this.minimumFontSize=1,this.effectsSequence=[],this.currentData={ascent:0,boxWidth:this.defaultBoxWidth,f:"",fStyle:"",fWeight:"",fc:"",j:"",justifyOffset:"",l:[],lh:0,lineWidths:[],ls:"",of:"",s:"",sc:"",sw:0,t:0,tr:0,sz:0,ps:null,fillColorAnim:!1,strokeColorAnim:!1,strokeWidthAnim:!1,yOffset:0,finalSize:0,finalText:[],finalLineHeight:0,__complete:!1},this.copyData(this.currentData,this.data.d.k[0].s),this.searchProperty()||this.completeTextData(this.currentData)}TextAnimatorProperty.prototype.searchProperties=function(){var t,e,r=this._textData.a.length,i=PropertyFactory.getProp;for(t=0;t<r;t+=1)e=this._textData.a[t],this._animatorsData[t]=new TextAnimatorDataProperty(this._elem,e,this);this._textData.p&&"m"in this._textData.p?(this._pathData={f:i(this._elem,this._textData.p.f,0,0,this),l:i(this._elem,this._textData.p.l,0,0,this),r:this._textData.p.r,m:this._elem.maskManager.getMaskProperty(this._textData.p.m)},this._hasMaskedPath=!0):this._hasMaskedPath=!1,this._moreOptions.alignment=i(this._elem,this._textData.m.a,1,0,this)},TextAnimatorProperty.prototype.getMeasures=function(t,e){if(this.lettersChangedFlag=e,this._mdf||this._isFirstFrame||e||this._hasMaskedPath&&this._pathData.m._mdf){this._isFirstFrame=!1;var r,i,s,a,n,o,h,l,p,m,f,c,d,u,y,g,v,b,E,x=this._moreOptions.alignment.v,S=this._animatorsData,P=this._textData,_=this.mHelper,A=this._renderType,C=this.renderedLetters.length,T=(this.data,t.l);if(this._hasMaskedPath){if(E=this._pathData.m,!this._pathData.n||this._pathData._mdf){var k,M=E.v;for(this._pathData.r&&(M=M.reverse()),n={tLength:0,segments:[]},a=M._length-1,s=g=0;s<a;s+=1)k=bez.buildBezierData(M.v[s],M.v[s+1],[M.o[s][0]-M.v[s][0],M.o[s][1]-M.v[s][1]],[M.i[s+1][0]-M.v[s+1][0],M.i[s+1][1]-M.v[s+1][1]]),n.tLength+=k.segmentLength,n.segments.push(k),g+=k.segmentLength;s=a,E.v.c&&(k=bez.buildBezierData(M.v[s],M.v[0],[M.o[s][0]-M.v[s][0],M.o[s][1]-M.v[s][1]],[M.i[0][0]-M.v[0][0],M.i[0][1]-M.v[0][1]]),n.tLength+=k.segmentLength,n.segments.push(k),g+=k.segmentLength),this._pathData.pi=n}if(n=this._pathData.pi,o=this._pathData.f.v,m=1,p=!(l=f=0),u=n.segments,o<0&&E.v.c)for(n.tLength<Math.abs(o)&&(o=-Math.abs(o)%n.tLength),m=(d=u[f=u.length-1].points).length-1;o<0;)o+=d[m].partialLength,(m-=1)<0&&(m=(d=u[f-=1].points).length-1);c=(d=u[f].points)[m-1],y=(h=d[m]).partialLength}a=T.length,i=r=0;var D,w,F,I,V=1.2*t.finalSize*.714,R=!0;F=S.length;var B,L,G,z,N,O,H,j,q,W,Y,X,$,K=-1,U=o,J=f,Z=m,Q=-1,tt="",et=this.defaultPropsArray;if(2===t.j||1===t.j){var rt=0,it=0,st=2===t.j?-.5:-1,at=0,nt=!0;for(s=0;s<a;s+=1)if(T[s].n){for(rt&&(rt+=it);at<s;)T[at].animatorJustifyOffset=rt,at+=1;nt=!(rt=0)}else{for(w=0;w<F;w+=1)(D=S[w].a).t.propType&&(nt&&2===t.j&&(it+=D.t.v*st),(B=S[w].s.getMult(T[s].anIndexes[w],P.a[w].s.totalChars)).length?rt+=D.t.v*B[0]*st:rt+=D.t.v*B*st);nt=!1}for(rt&&(rt+=it);at<s;)T[at].animatorJustifyOffset=rt,at+=1}for(s=0;s<a;s+=1){if(_.reset(),N=1,T[s].n)r=0,i+=t.yOffset,i+=R?1:0,o=U,R=!1,0,this._hasMaskedPath&&(m=Z,c=(d=u[f=J].points)[m-1],y=(h=d[m]).partialLength,l=0),$=W=X=tt="",et=this.defaultPropsArray;else{if(this._hasMaskedPath){if(Q!==T[s].line){switch(t.j){case 1:o+=g-t.lineWidths[T[s].line];break;case 2:o+=(g-t.lineWidths[T[s].line])/2}Q=T[s].line}K!==T[s].ind&&(T[K]&&(o+=T[K].extra),o+=T[s].an/2,K=T[s].ind),o+=x[0]*T[s].an/200;var ot=0;for(w=0;w<F;w+=1)(D=S[w].a).p.propType&&((B=S[w].s.getMult(T[s].anIndexes[w],P.a[w].s.totalChars)).length?ot+=D.p.v[0]*B[0]:ot+=D.p.v[0]*B),D.a.propType&&((B=S[w].s.getMult(T[s].anIndexes[w],P.a[w].s.totalChars)).length?ot+=D.a.v[0]*B[0]:ot+=D.a.v[0]*B);for(p=!0;p;)o+ot<=l+y||!d?(v=(o+ot-l)/h.partialLength,G=c.point[0]+(h.point[0]-c.point[0])*v,z=c.point[1]+(h.point[1]-c.point[1])*v,_.translate(-x[0]*T[s].an/200,-x[1]*V/100),p=!1):d&&(l+=h.partialLength,(m+=1)>=d.length&&(m=0,d=u[f+=1]?u[f].points:E.v.c?u[f=m=0].points:(l-=h.partialLength,null)),d&&(c=h,y=(h=d[m]).partialLength));L=T[s].an/2-T[s].add,_.translate(-L,0,0)}else L=T[s].an/2-T[s].add,_.translate(-L,0,0),_.translate(-x[0]*T[s].an/200,-x[1]*V/100,0);for(T[s].l/2,w=0;w<F;w+=1)(D=S[w].a).t.propType&&(B=S[w].s.getMult(T[s].anIndexes[w],P.a[w].s.totalChars),0===r&&0===t.j||(this._hasMaskedPath?B.length?o+=D.t.v*B[0]:o+=D.t.v*B:B.length?r+=D.t.v*B[0]:r+=D.t.v*B));for(T[s].l/2,t.strokeWidthAnim&&(H=t.sw||0),t.strokeColorAnim&&(O=t.sc?[t.sc[0],t.sc[1],t.sc[2]]:[0,0,0]),t.fillColorAnim&&t.fc&&(j=[t.fc[0],t.fc[1],t.fc[2]]),w=0;w<F;w+=1)(D=S[w].a).a.propType&&((B=S[w].s.getMult(T[s].anIndexes[w],P.a[w].s.totalChars)).length?_.translate(-D.a.v[0]*B[0],-D.a.v[1]*B[1],D.a.v[2]*B[2]):_.translate(-D.a.v[0]*B,-D.a.v[1]*B,D.a.v[2]*B));for(w=0;w<F;w+=1)(D=S[w].a).s.propType&&((B=S[w].s.getMult(T[s].anIndexes[w],P.a[w].s.totalChars)).length?_.scale(1+(D.s.v[0]-1)*B[0],1+(D.s.v[1]-1)*B[1],1):_.scale(1+(D.s.v[0]-1)*B,1+(D.s.v[1]-1)*B,1));for(w=0;w<F;w+=1){if(D=S[w].a,B=S[w].s.getMult(T[s].anIndexes[w],P.a[w].s.totalChars),D.sk.propType&&(B.length?_.skewFromAxis(-D.sk.v*B[0],D.sa.v*B[1]):_.skewFromAxis(-D.sk.v*B,D.sa.v*B)),D.r.propType&&(B.length?_.rotateZ(-D.r.v*B[2]):_.rotateZ(-D.r.v*B)),D.ry.propType&&(B.length?_.rotateY(D.ry.v*B[1]):_.rotateY(D.ry.v*B)),D.rx.propType&&(B.length?_.rotateX(D.rx.v*B[0]):_.rotateX(D.rx.v*B)),D.o.propType&&(B.length?N+=(D.o.v*B[0]-N)*B[0]:N+=(D.o.v*B-N)*B),t.strokeWidthAnim&&D.sw.propType&&(B.length?H+=D.sw.v*B[0]:H+=D.sw.v*B),t.strokeColorAnim&&D.sc.propType)for(q=0;q<3;q+=1)B.length?O[q]=O[q]+(D.sc.v[q]-O[q])*B[0]:O[q]=O[q]+(D.sc.v[q]-O[q])*B;if(t.fillColorAnim&&t.fc){if(D.fc.propType)for(q=0;q<3;q+=1)B.length?j[q]=j[q]+(D.fc.v[q]-j[q])*B[0]:j[q]=j[q]+(D.fc.v[q]-j[q])*B;D.fh.propType&&(j=B.length?addHueToRGB(j,D.fh.v*B[0]):addHueToRGB(j,D.fh.v*B)),D.fs.propType&&(j=B.length?addSaturationToRGB(j,D.fs.v*B[0]):addSaturationToRGB(j,D.fs.v*B)),D.fb.propType&&(j=B.length?addBrightnessToRGB(j,D.fb.v*B[0]):addBrightnessToRGB(j,D.fb.v*B))}}for(w=0;w<F;w+=1)(D=S[w].a).p.propType&&(B=S[w].s.getMult(T[s].anIndexes[w],P.a[w].s.totalChars),this._hasMaskedPath?B.length?_.translate(0,D.p.v[1]*B[0],-D.p.v[2]*B[1]):_.translate(0,D.p.v[1]*B,-D.p.v[2]*B):B.length?_.translate(D.p.v[0]*B[0],D.p.v[1]*B[1],-D.p.v[2]*B[2]):_.translate(D.p.v[0]*B,D.p.v[1]*B,-D.p.v[2]*B));if(t.strokeWidthAnim&&(W=H<0?0:H),t.strokeColorAnim&&(Y="rgb("+Math.round(255*O[0])+","+Math.round(255*O[1])+","+Math.round(255*O[2])+")"),t.fillColorAnim&&t.fc&&(X="rgb("+Math.round(255*j[0])+","+Math.round(255*j[1])+","+Math.round(255*j[2])+")"),this._hasMaskedPath){if(_.translate(0,-t.ls),_.translate(0,x[1]*V/100+i,0),P.p.p){b=(h.point[1]-c.point[1])/(h.point[0]-c.point[0]);var ht=180*Math.atan(b)/Math.PI;h.point[0]<c.point[0]&&(ht+=180),_.rotate(-ht*Math.PI/180)}_.translate(G,z,0),o-=x[0]*T[s].an/200,T[s+1]&&K!==T[s+1].ind&&(o+=T[s].an/2,o+=t.tr/1e3*t.finalSize)}else{switch(_.translate(r,i,0),t.ps&&_.translate(t.ps[0],t.ps[1]+t.ascent,0),t.j){case 1:_.translate(T[s].animatorJustifyOffset+t.justifyOffset+(t.boxWidth-t.lineWidths[T[s].line]),0,0);break;case 2:_.translate(T[s].animatorJustifyOffset+t.justifyOffset+(t.boxWidth-t.lineWidths[T[s].line])/2,0,0)}_.translate(0,-t.ls),_.translate(L,0,0),_.translate(x[0]*T[s].an/200,x[1]*V/100,0),r+=T[s].l+t.tr/1e3*t.finalSize}"html"===A?tt=_.toCSS():"svg"===A?tt=_.to2dCSS():et=[_.props[0],_.props[1],_.props[2],_.props[3],_.props[4],_.props[5],_.props[6],_.props[7],_.props[8],_.props[9],_.props[10],_.props[11],_.props[12],_.props[13],_.props[14],_.props[15]],$=N}this.lettersChangedFlag=C<=s?(I=new LetterProps($,W,Y,X,tt,et),this.renderedLetters.push(I),C+=1,!0):(I=this.renderedLetters[s]).update($,W,Y,X,tt,et)||this.lettersChangedFlag}}},TextAnimatorProperty.prototype.getValue=function(){this._elem.globalData.frameId!==this._frameId&&(this._frameId=this._elem.globalData.frameId,this.iterateDynamicProperties())},TextAnimatorProperty.prototype.mHelper=new Matrix,TextAnimatorProperty.prototype.defaultPropsArray=[],extendPrototype([DynamicPropertyContainer],TextAnimatorProperty),LetterProps.prototype.update=function(t,e,r,i,s,a){this._mdf.o=!1,this._mdf.sw=!1,this._mdf.sc=!1,this._mdf.fc=!1,this._mdf.m=!1;var n=this._mdf.p=!1;return this.o!==t&&(this.o=t,n=this._mdf.o=!0),this.sw!==e&&(this.sw=e,n=this._mdf.sw=!0),this.sc!==r&&(this.sc=r,n=this._mdf.sc=!0),this.fc!==i&&(this.fc=i,n=this._mdf.fc=!0),this.m!==s&&(this.m=s,n=this._mdf.m=!0),!a.length||this.p[0]===a[0]&&this.p[1]===a[1]&&this.p[4]===a[4]&&this.p[5]===a[5]&&this.p[12]===a[12]&&this.p[13]===a[13]||(this.p=a,n=this._mdf.p=!0),n},TextProperty.prototype.defaultBoxWidth=[0,0],TextProperty.prototype.copyData=function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t},TextProperty.prototype.setCurrentData=function(t){t.__complete||this.completeTextData(t),this.currentData=t,this.currentData.boxWidth=this.currentData.boxWidth||this.defaultBoxWidth,this._mdf=!0},TextProperty.prototype.searchProperty=function(){return this.searchKeyframes()},TextProperty.prototype.searchKeyframes=function(){return this.kf=1<this.data.d.k.length,this.kf&&this.addEffect(this.getKeyframeValue.bind(this)),this.kf},TextProperty.prototype.addEffect=function(t){this.effectsSequence.push(t),this.elem.addDynamicProperty(this)},TextProperty.prototype.getValue=function(t){if(this.elem.globalData.frameId!==this.frameId&&this.effectsSequence.length||t){this.currentData.t=this.data.d.k[this.keysIndex].s.t;var e=this.currentData,r=this.keysIndex;if(this.lock)this.setCurrentData(this.currentData);else{this.lock=!0,this._mdf=!1;var i,s=this.effectsSequence.length,a=t||this.data.d.k[this.keysIndex].s;for(i=0;i<s;i+=1)a=r!==this.keysIndex?this.effectsSequence[i](a,a.t):this.effectsSequence[i](this.currentData,a.t);e!==a&&this.setCurrentData(a),this.pv=this.v=this.currentData,this.lock=!1,this.frameId=this.elem.globalData.frameId}}},TextProperty.prototype.getKeyframeValue=function(){for(var t=this.data.d.k,e=this.elem.comp.renderedFrame,r=0,i=t.length;r<=i-1&&(t[r].s,!(r===i-1||t[r+1].t>e));)r+=1;return this.keysIndex!==r&&(this.keysIndex=r),this.data.d.k[this.keysIndex].s},TextProperty.prototype.buildFinalText=function(t){for(var e,r=FontManager.getCombinedCharacterCodes(),i=[],s=0,a=t.length;s<a;)e=t.charCodeAt(s),-1!==r.indexOf(e)?i[i.length-1]+=t.charAt(s):55296<=e&&e<=56319&&56320<=(e=t.charCodeAt(s+1))&&e<=57343?(i.push(t.substr(s,2)),++s):i.push(t.charAt(s)),s+=1;return i},TextProperty.prototype.completeTextData=function(t){t.__complete=!0;var e,r,i,s,a,n,o,h=this.elem.globalData.fontManager,l=this.data,p=[],m=0,f=l.m.g,c=0,d=0,u=0,y=[],g=0,v=0,b=h.getFontByName(t.f),E=0,x=b.fStyle?b.fStyle.split(" "):[],S="normal",P="normal";for(r=x.length,e=0;e<r;e+=1)switch(x[e].toLowerCase()){case"italic":P="italic";break;case"bold":S="700";break;case"black":S="900";break;case"medium":S="500";break;case"regular":case"normal":S="400";break;case"light":case"thin":S="200"}t.fWeight=b.fWeight||S,t.fStyle=P,t.finalSize=t.s,t.finalText=this.buildFinalText(t.t),r=t.finalText.length,t.finalLineHeight=t.lh;var _,A=t.tr/1e3*t.finalSize;if(t.sz)for(var C,T,k=!0,M=t.sz[0],D=t.sz[1];k;){g=C=0,r=(T=this.buildFinalText(t.t)).length,A=t.tr/1e3*t.finalSize;var w=-1;for(e=0;e<r;e+=1)_=T[e].charCodeAt(0),i=!1," "===T[e]?w=e:13!==_&&3!==_||(i=!(g=0),C+=t.finalLineHeight||1.2*t.finalSize),M<g+(E=h.chars?(o=h.getCharData(T[e],b.fStyle,b.fFamily),i?0:o.w*t.finalSize/100):h.measureText(T[e],t.f,t.finalSize))&&" "!==T[e]?(-1===w?r+=1:e=w,C+=t.finalLineHeight||1.2*t.finalSize,T.splice(e,w===e?1:0,"\r"),w=-1,g=0):(g+=E,g+=A);C+=b.ascent*t.finalSize/100,this.canResize&&t.finalSize>this.minimumFontSize&&D<C?(t.finalSize-=1,t.finalLineHeight=t.finalSize*t.lh/t.s):(t.finalText=T,r=t.finalText.length,k=!1)}g=-A;var F,I=E=0;for(e=0;e<r;e+=1)if(i=!1,13===(_=(F=t.finalText[e]).charCodeAt(0))||3===_?(I=0,y.push(g),v=v<g?g:v,g=-2*A,i=!(s=""),u+=1):s=F,E=h.chars?(o=h.getCharData(F,b.fStyle,h.getFontByName(t.f).fFamily),i?0:o.w*t.finalSize/100):h.measureText(s,t.f,t.finalSize)," "===F?I+=E+A:(g+=E+A+I,I=0),p.push({l:E,an:E,add:c,n:i,anIndexes:[],val:s,line:u,animatorJustifyOffset:0}),2==f){if(c+=E,""===s||" "===s||e===r-1){for(""!==s&&" "!==s||(c-=E);d<=e;)p[d].an=c,p[d].ind=m,p[d].extra=E,d+=1;m+=1,c=0}}else if(3==f){if(c+=E,""===s||e===r-1){for(""===s&&(c-=E);d<=e;)p[d].an=c,p[d].ind=m,p[d].extra=E,d+=1;c=0,m+=1}}else p[m].ind=m,p[m].extra=0,m+=1;if(t.l=p,v=v<g?g:v,y.push(g),t.sz)t.boxWidth=t.sz[0],t.justifyOffset=0;else switch(t.boxWidth=v,t.j){case 1:t.justifyOffset=-t.boxWidth;break;case 2:t.justifyOffset=-t.boxWidth/2;break;default:t.justifyOffset=0}t.lineWidths=y;var V,R,B=l.a;n=B.length;var L,G,z=[];for(a=0;a<n;a+=1){for((V=B[a]).a.sc&&(t.strokeColorAnim=!0),V.a.sw&&(t.strokeWidthAnim=!0),(V.a.fc||V.a.fh||V.a.fs||V.a.fb)&&(t.fillColorAnim=!0),G=0,L=V.s.b,e=0;e<r;e+=1)(R=p[e]).anIndexes[a]=G,(1==L&&""!==R.val||2==L&&""!==R.val&&" "!==R.val||3==L&&(R.n||" "==R.val||e==r-1)||4==L&&(R.n||e==r-1))&&(1===V.s.rn&&z.push(G),G+=1);l.a[a].s.totalChars=G;var N,O=-1;if(1===V.s.rn)for(e=0;e<r;e+=1)O!=(R=p[e]).anIndexes[a]&&(O=R.anIndexes[a],N=z.splice(Math.floor(Math.random()*z.length),1)[0]),R.anIndexes[a]=N}t.yOffset=t.finalLineHeight||1.2*t.finalSize,t.ls=t.ls||0,t.ascent=b.ascent*t.finalSize/100},TextProperty.prototype.updateDocumentData=function(t,e){e=void 0===e?this.keysIndex:e;var r=this.copyData({},this.data.d.k[e].s);r=this.copyData(r,t),this.data.d.k[e].s=r,this.recalculate(e),this.elem.addDynamicProperty(this)},TextProperty.prototype.recalculate=function(t){var e=this.data.d.k[t].s;e.__complete=!1,this.keysIndex=0,this._isFirstFrame=!0,this.getValue(e)},TextProperty.prototype.canResizeFont=function(t){this.canResize=t,this.recalculate(this.keysIndex),this.elem.addDynamicProperty(this)},TextProperty.prototype.setMinimumFontSize=function(t){this.minimumFontSize=Math.floor(t)||1,this.recalculate(this.keysIndex),this.elem.addDynamicProperty(this)};var TextSelectorProp=function(){var c=Math.max,d=Math.min,u=Math.floor;function i(t,e){this._currentTextLength=-1,this.k=!1,this.data=e,this.elem=t,this.comp=t.comp,this.finalS=0,this.finalE=0,this.initDynamicPropertyContainer(t),this.s=PropertyFactory.getProp(t,e.s||{k:0},0,0,this),this.e="e"in e?PropertyFactory.getProp(t,e.e,0,0,this):{v:100},this.o=PropertyFactory.getProp(t,e.o||{k:0},0,0,this),this.xe=PropertyFactory.getProp(t,e.xe||{k:0},0,0,this),this.ne=PropertyFactory.getProp(t,e.ne||{k:0},0,0,this),this.a=PropertyFactory.getProp(t,e.a,0,.01,this),this.dynamicProperties.length||this.getValue()}return i.prototype={getMult:function(t){this._currentTextLength!==this.elem.textProperty.currentData.l.length&&this.getValue();var e=0,r=0,i=1,s=1;0<this.ne.v?e=this.ne.v/100:r=-this.ne.v/100,0<this.xe.v?i=1-this.xe.v/100:s=1+this.xe.v/100;var a=BezierFactory.getBezierEasing(e,r,i,s).get,n=0,o=this.finalS,h=this.finalE,l=this.data.sh;if(2===l)n=a(n=h===o?h<=t?1:0:c(0,d(.5/(h-o)+(t-o)/(h-o),1)));else if(3===l)n=a(n=h===o?h<=t?0:1:1-c(0,d(.5/(h-o)+(t-o)/(h-o),1)));else if(4===l)h===o?n=0:(n=c(0,d(.5/(h-o)+(t-o)/(h-o),1)))<.5?n*=2:n=1-2*(n-.5),n=a(n);else if(5===l){if(h===o)n=0;else{var p=h-o,m=-p/2+(t=d(c(0,t+.5-o),h-o)),f=p/2;n=Math.sqrt(1-m*m/(f*f))}n=a(n)}else n=6===l?a(n=h===o?0:(t=d(c(0,t+.5-o),h-o),(1+Math.cos(Math.PI+2*Math.PI*t/(h-o)))/2)):(t>=u(o)&&(n=c(0,d(t-o<0?d(h,1)-(o-t):h-t,1))),a(n));return n*this.a.v},getValue:function(t){this.iterateDynamicProperties(),this._mdf=t||this._mdf,this._currentTextLength=this.elem.textProperty.currentData.l.length||0,t&&2===this.data.r&&(this.e.v=this._currentTextLength);var e=2===this.data.r?1:100/this.data.totalChars,r=this.o.v/e,i=this.s.v/e+r,s=this.e.v/e+r;if(s<i){var a=i;i=s,s=a}this.finalS=i,this.finalE=s}},extendPrototype([DynamicPropertyContainer],i),{getTextSelectorProp:function(t,e,r){return new i(t,e,r)}}}(),pool_factory=function(t,e,r,i){var s=0,a=t,n=createSizedArray(a);function o(){return s?n[s-=1]:e()}return{newElement:o,release:function(t){s===a&&(n=pooling.double(n),a*=2),r&&r(t),n[s]=t,s+=1}}},pooling={double:function(t){return t.concat(createSizedArray(t.length))}},point_pool=pool_factory(8,function(){return createTypedArray("float32",2)}),shape_pool=(KA=pool_factory(4,function(){return new ShapePath},function(t){var e,r=t._length;for(e=0;e<r;e+=1)point_pool.release(t.v[e]),point_pool.release(t.i[e]),point_pool.release(t.o[e]),t.v[e]=null,t.i[e]=null,t.o[e]=null;t._length=0,t.c=!1}),KA.clone=function(t){var e,r=KA.newElement(),i=void 0===t._length?t.v.length:t._length;for(r.setLength(i),r.c=t.c,e=0;e<i;e+=1)r.setTripleAt(t.v[e][0],t.v[e][1],t.o[e][0],t.o[e][1],t.i[e][0],t.i[e][1],e);return r},KA),KA,shapeCollection_pool=(TA={newShapeCollection:function(){var t;t=UA?WA[UA-=1]:new ShapeCollection;return t},release:function(t){var e,r=t._length;for(e=0;e<r;e+=1)shape_pool.release(t.shapes[e]);t._length=0,UA===VA&&(WA=pooling.double(WA),VA*=2);WA[UA]=t,UA+=1}},UA=0,VA=4,WA=createSizedArray(VA),TA),TA,UA,VA,WA,segments_length_pool=pool_factory(8,function(){return{lengths:[],totalLength:0}},function(t){var e,r=t.lengths.length;for(e=0;e<r;e+=1)bezier_length_pool.release(t.lengths[e]);t.lengths.length=0}),bezier_length_pool=pool_factory(8,function(){return{addedLength:0,percents:createTypedArray("float32",defaultCurveSegments),lengths:createTypedArray("float32",defaultCurveSegments)}});function BaseRenderer(){}function SVGRenderer(t,e){this.animationItem=t,this.layers=null,this.renderedFrame=-1,this.svgElement=createNS("svg");var r="";if(e&&e.title){var i=createNS("title"),s=createElementID();i.setAttribute("id",s),i.textContent=e.title,this.svgElement.appendChild(i),r+=s}if(e&&e.description){var a=createNS("desc"),n=createElementID();a.setAttribute("id",n),a.textContent=e.description,this.svgElement.appendChild(a),r+=" "+n}r&&this.svgElement.setAttribute("aria-labelledby",r);var o=createNS("defs");this.svgElement.appendChild(o);var h=createNS("g");this.svgElement.appendChild(h),this.layerElement=h,this.renderConfig={preserveAspectRatio:e&&e.preserveAspectRatio||"xMidYMid meet",imagePreserveAspectRatio:e&&e.imagePreserveAspectRatio||"xMidYMid slice",progressiveLoad:e&&e.progressiveLoad||!1,hideOnTransparent:!e||!1!==e.hideOnTransparent,viewBoxOnly:e&&e.viewBoxOnly||!1,viewBoxSize:e&&e.viewBoxSize||!1,className:e&&e.className||"",id:e&&e.id||"",focusable:e&&e.focusable,filterSize:{width:e&&e.filterSize&&e.filterSize.width||"100%",height:e&&e.filterSize&&e.filterSize.height||"100%",x:e&&e.filterSize&&e.filterSize.x||"0%",y:e&&e.filterSize&&e.filterSize.y||"0%"}},this.globalData={_mdf:!1,frameNum:-1,defs:o,renderConfig:this.renderConfig},this.elements=[],this.pendingElements=[],this.destroyed=!1,this.rendererType="svg"}function CanvasRenderer(t,e){this.animationItem=t,this.renderConfig={clearCanvas:!e||void 0===e.clearCanvas||e.clearCanvas,context:e&&e.context||null,progressiveLoad:e&&e.progressiveLoad||!1,preserveAspectRatio:e&&e.preserveAspectRatio||"xMidYMid meet",imagePreserveAspectRatio:e&&e.imagePreserveAspectRatio||"xMidYMid slice",className:e&&e.className||"",id:e&&e.id||""},this.renderConfig.dpr=e&&e.dpr||1,this.animationItem.wrapper&&(this.renderConfig.dpr=e&&e.dpr||window.devicePixelRatio||1),this.renderedFrame=-1,this.globalData={frameNum:-1,_mdf:!1,renderConfig:this.renderConfig,currentGlobalAlpha:-1},this.contextData=new CVContextData,this.elements=[],this.pendingElements=[],this.transformMat=new Matrix,this.completeLayers=!1,this.rendererType="canvas"}function HybridRenderer(t,e){this.animationItem=t,this.layers=null,this.renderedFrame=-1,this.renderConfig={className:e&&e.className||"",imagePreserveAspectRatio:e&&e.imagePreserveAspectRatio||"xMidYMid slice",hideOnTransparent:!e||!1!==e.hideOnTransparent,filterSize:{width:e&&e.filterSize&&e.filterSize.width||"400%",height:e&&e.filterSize&&e.filterSize.height||"400%",x:e&&e.filterSize&&e.filterSize.x||"-100%",y:e&&e.filterSize&&e.filterSize.y||"-100%"}},this.globalData={_mdf:!1,frameNum:-1,renderConfig:this.renderConfig},this.pendingElements=[],this.elements=[],this.threeDElements=[],this.destroyed=!1,this.camera=null,this.supports3d=!0,this.rendererType="html"}function MaskElement(t,e,r){this.data=t,this.element=e,this.globalData=r,this.storedData=[],this.masksProperties=this.data.masksProperties||[],this.maskElement=null;var i,s=this.globalData.defs,a=this.masksProperties?this.masksProperties.length:0;this.viewData=createSizedArray(a),this.solidPath="";var n,o,h,l,p,m,f,c=this.masksProperties,d=0,u=[],y=createElementID(),g="clipPath",v="clip-path";for(i=0;i<a;i++)if(("a"!==c[i].mode&&"n"!==c[i].mode||c[i].inv||100!==c[i].o.k||c[i].o.x)&&(v=g="mask"),"s"!=c[i].mode&&"i"!=c[i].mode||0!==d?l=null:((l=createNS("rect")).setAttribute("fill","#ffffff"),l.setAttribute("width",this.element.comp.data.w||0),l.setAttribute("height",this.element.comp.data.h||0),u.push(l)),n=createNS("path"),"n"!=c[i].mode){var b;if(d+=1,n.setAttribute("fill","s"===c[i].mode?"#000000":"#ffffff"),n.setAttribute("clip-rule","nonzero"),0!==c[i].x.k?(v=g="mask",f=PropertyFactory.getProp(this.element,c[i].x,0,null,this.element),b=createElementID(),(p=createNS("filter")).setAttribute("id",b),(m=createNS("feMorphology")).setAttribute("operator","erode"),m.setAttribute("in","SourceGraphic"),m.setAttribute("radius","0"),p.appendChild(m),s.appendChild(p),n.setAttribute("stroke","s"===c[i].mode?"#000000":"#ffffff")):f=m=null,this.storedData[i]={elem:n,x:f,expan:m,lastPath:"",lastOperator:"",filterId:b,lastRadius:0},"i"==c[i].mode){h=u.length;var E=createNS("g");for(o=0;o<h;o+=1)E.appendChild(u[o]);var x=createNS("mask");x.setAttribute("mask-type","alpha"),x.setAttribute("id",y+"_"+d),x.appendChild(n),s.appendChild(x),E.setAttribute("mask","url("+locationHref+"#"+y+"_"+d+")"),u.length=0,u.push(E)}else u.push(n);c[i].inv&&!this.solidPath&&(this.solidPath=this.createLayerSolidPath()),this.viewData[i]={elem:n,lastPath:"",op:PropertyFactory.getProp(this.element,c[i].o,0,.01,this.element),prop:ShapePropertyFactory.getShapeProp(this.element,c[i],3),invRect:l},this.viewData[i].prop.k||this.drawPath(c[i],this.viewData[i].prop.v,this.viewData[i])}else this.viewData[i]={op:PropertyFactory.getProp(this.element,c[i].o,0,.01,this.element),prop:ShapePropertyFactory.getShapeProp(this.element,c[i],3),elem:n,lastPath:""},s.appendChild(n);for(this.maskElement=createNS(g),a=u.length,i=0;i<a;i+=1)this.maskElement.appendChild(u[i]);0<d&&(this.maskElement.setAttribute("id",y),this.element.maskedElement.setAttribute(v,"url("+locationHref+"#"+y+")"),s.appendChild(this.maskElement)),this.viewData.length&&this.element.addRenderableComponent(this)}function HierarchyElement(){}function FrameElement(){}function TransformElement(){}function RenderableElement(){}function RenderableDOMElement(){}function ProcessedElement(t,e){this.elem=t,this.pos=e}function SVGStyleData(t,e){this.data=t,this.type=t.ty,this.d="",this.lvl=e,this._mdf=!1,this.closed=!0===t.hd,this.pElem=createNS("path"),this.msElem=null}function SVGShapeData(t,e,r){this.caches=[],this.styles=[],this.transformers=t,this.lStr="",this.sh=r,this.lvl=e,this._isAnimated=!!r.k;for(var i=0,s=t.length;i<s;){if(t[i].mProps.dynamicProperties.length){this._isAnimated=!0;break}i+=1}}function SVGTransformData(t,e,r){this.transform={mProps:t,op:e,container:r},this.elements=[],this._isAnimated=this.transform.mProps.dynamicProperties.length||this.transform.op.effectsSequence.length}function SVGStrokeStyleData(t,e,r){this.initDynamicPropertyContainer(t),this.getValue=this.iterateDynamicProperties,this.o=PropertyFactory.getProp(t,e.o,0,.01,this),this.w=PropertyFactory.getProp(t,e.w,0,null,this),this.d=new DashProperty(t,e.d||{},"svg",this),this.c=PropertyFactory.getProp(t,e.c,1,255,this),this.style=r,this._isAnimated=!!this._isAnimated}function SVGFillStyleData(t,e,r){this.initDynamicPropertyContainer(t),this.getValue=this.iterateDynamicProperties,this.o=PropertyFactory.getProp(t,e.o,0,.01,this),this.c=PropertyFactory.getProp(t,e.c,1,255,this),this.style=r}function SVGGradientFillStyleData(t,e,r){this.initDynamicPropertyContainer(t),this.getValue=this.iterateDynamicProperties,this.initGradientData(t,e,r)}function SVGGradientStrokeStyleData(t,e,r){this.initDynamicPropertyContainer(t),this.getValue=this.iterateDynamicProperties,this.w=PropertyFactory.getProp(t,e.w,0,null,this),this.d=new DashProperty(t,e.d||{},"svg",this),this.initGradientData(t,e,r),this._isAnimated=!!this._isAnimated}function ShapeGroupData(){this.it=[],this.prevViewData=[],this.gr=createNS("g")}BaseRenderer.prototype.checkLayers=function(t){var e,r,i=this.layers.length;for(this.completeLayers=!0,e=i-1;0<=e;e--)this.elements[e]||(r=this.layers[e]).ip-r.st<=t-this.layers[e].st&&r.op-r.st>t-this.layers[e].st&&this.buildItem(e),this.completeLayers=!!this.elements[e]&&this.completeLayers;this.checkPendingElements()},BaseRenderer.prototype.createItem=function(t){switch(t.ty){case 2:return this.createImage(t);case 0:return this.createComp(t);case 1:return this.createSolid(t);case 3:return this.createNull(t);case 4:return this.createShape(t);case 5:return this.createText(t);case 13:return this.createCamera(t)}return this.createNull(t)},BaseRenderer.prototype.createCamera=function(){throw new Error("You're using a 3d camera. Try the html renderer.")},BaseRenderer.prototype.buildAllItems=function(){var t,e=this.layers.length;for(t=0;t<e;t+=1)this.buildItem(t);this.checkPendingElements()},BaseRenderer.prototype.includeLayers=function(t){this.completeLayers=!1;var e,r,i=t.length,s=this.layers.length;for(e=0;e<i;e+=1)for(r=0;r<s;){if(this.layers[r].id==t[e].id){this.layers[r]=t[e];break}r+=1}},BaseRenderer.prototype.setProjectInterface=function(t){this.globalData.projectInterface=t},BaseRenderer.prototype.initItems=function(){this.globalData.progressiveLoad||this.buildAllItems()},BaseRenderer.prototype.buildElementParenting=function(t,e,r){for(var i=this.elements,s=this.layers,a=0,n=s.length;a<n;)s[a].ind==e&&(i[a]&&!0!==i[a]?(r.push(i[a]),i[a].setAsParent(),void 0!==s[a].parent?this.buildElementParenting(t,s[a].parent,r):t.setHierarchy(r)):(this.buildItem(a),this.addPendingElement(t))),a+=1},BaseRenderer.prototype.addPendingElement=function(t){this.pendingElements.push(t)},BaseRenderer.prototype.searchExtraCompositions=function(t){var e,r=t.length;for(e=0;e<r;e+=1)if(t[e].xt){var i=this.createComp(t[e]);i.initExpressions(),this.globalData.projectInterface.registerComposition(i)}},BaseRenderer.prototype.setupGlobalData=function(t,e){this.globalData.fontManager=new FontManager,this.globalData.fontManager.addChars(t.chars),this.globalData.fontManager.addFonts(t.fonts,e),this.globalData.getAssetData=this.animationItem.getAssetData.bind(this.animationItem),this.globalData.getAssetsPath=this.animationItem.getAssetsPath.bind(this.animationItem),this.globalData.imageLoader=this.animationItem.imagePreloader,this.globalData.frameId=0,this.globalData.frameRate=t.fr,this.globalData.nm=t.nm,this.globalData.compSize={w:t.w,h:t.h}},extendPrototype([BaseRenderer],SVGRenderer),SVGRenderer.prototype.createNull=function(t){return new NullElement(t,this.globalData,this)},SVGRenderer.prototype.createShape=function(t){return new SVGShapeElement(t,this.globalData,this)},SVGRenderer.prototype.createText=function(t){return new SVGTextElement(t,this.globalData,this)},SVGRenderer.prototype.createImage=function(t){return new IImageElement(t,this.globalData,this)},SVGRenderer.prototype.createComp=function(t){return new SVGCompElement(t,this.globalData,this)},SVGRenderer.prototype.createSolid=function(t){return new ISolidElement(t,this.globalData,this)},SVGRenderer.prototype.configAnimation=function(t){this.svgElement.setAttribute("xmlns","http://www.w3.org/2000/svg"),this.renderConfig.viewBoxSize?this.svgElement.setAttribute("viewBox",this.renderConfig.viewBoxSize):this.svgElement.setAttribute("viewBox","0 0 "+t.w+" "+t.h),this.renderConfig.viewBoxOnly||(this.svgElement.setAttribute("width",t.w),this.svgElement.setAttribute("height",t.h),this.svgElement.style.width="100%",this.svgElement.style.height="100%",this.svgElement.style.transform="translate3d(0,0,0)"),this.renderConfig.className&&this.svgElement.setAttribute("class",this.renderConfig.className),this.renderConfig.id&&this.svgElement.setAttribute("id",this.renderConfig.id),void 0!==this.renderConfig.focusable&&this.svgElement.setAttribute("focusable",this.renderConfig.focusable),this.svgElement.setAttribute("preserveAspectRatio",this.renderConfig.preserveAspectRatio),this.animationItem.wrapper.appendChild(this.svgElement);var e=this.globalData.defs;this.setupGlobalData(t,e),this.globalData.progressiveLoad=this.renderConfig.progressiveLoad,this.data=t;var r=createNS("clipPath"),i=createNS("rect");i.setAttribute("width",t.w),i.setAttribute("height",t.h),i.setAttribute("x",0),i.setAttribute("y",0);var s=createElementID();r.setAttribute("id",s),r.appendChild(i),this.layerElement.setAttribute("clip-path","url("+locationHref+"#"+s+")"),e.appendChild(r),this.layers=t.layers,this.elements=createSizedArray(t.layers.length)},SVGRenderer.prototype.destroy=function(){this.animationItem.wrapper.innerHTML="",this.layerElement=null,this.globalData.defs=null;var t,e=this.layers?this.layers.length:0;for(t=0;t<e;t++)this.elements[t]&&this.elements[t].destroy();this.elements.length=0,this.destroyed=!0,this.animationItem=null},SVGRenderer.prototype.updateContainerSize=function(){},SVGRenderer.prototype.buildItem=function(t){var e=this.elements;if(!e[t]&&99!=this.layers[t].ty){e[t]=!0;var r=this.createItem(this.layers[t]);e[t]=r,expressionsPlugin&&(0===this.layers[t].ty&&this.globalData.projectInterface.registerComposition(r),r.initExpressions()),this.appendElementInPos(r,t),this.layers[t].tt&&(this.elements[t-1]&&!0!==this.elements[t-1]?r.setMatte(e[t-1].layerId):(this.buildItem(t-1),this.addPendingElement(r)))}},SVGRenderer.prototype.checkPendingElements=function(){for(;this.pendingElements.length;){var t=this.pendingElements.pop();if(t.checkParenting(),t.data.tt)for(var e=0,r=this.elements.length;e<r;){if(this.elements[e]===t){t.setMatte(this.elements[e-1].layerId);break}e+=1}}},SVGRenderer.prototype.renderFrame=function(t){if(this.renderedFrame!==t&&!this.destroyed){null===t?t=this.renderedFrame:this.renderedFrame=t,this.globalData.frameNum=t,this.globalData.frameId+=1,this.globalData.projectInterface.currentFrame=t,this.globalData._mdf=!1;var e,r=this.layers.length;for(this.completeLayers||this.checkLayers(t),e=r-1;0<=e;e--)(this.completeLayers||this.elements[e])&&this.elements[e].prepareFrame(t-this.layers[e].st);if(this.globalData._mdf)for(e=0;e<r;e+=1)(this.completeLayers||this.elements[e])&&this.elements[e].renderFrame()}},SVGRenderer.prototype.appendElementInPos=function(t,e){var r=t.getBaseElement();if(r){for(var i,s=0;s<e;)this.elements[s]&&!0!==this.elements[s]&&this.elements[s].getBaseElement()&&(i=this.elements[s].getBaseElement()),s+=1;i?this.layerElement.insertBefore(r,i):this.layerElement.appendChild(r)}},SVGRenderer.prototype.hide=function(){this.layerElement.style.display="none"},SVGRenderer.prototype.show=function(){this.layerElement.style.display="block"},extendPrototype([BaseRenderer],CanvasRenderer),CanvasRenderer.prototype.createShape=function(t){return new CVShapeElement(t,this.globalData,this)},CanvasRenderer.prototype.createText=function(t){return new CVTextElement(t,this.globalData,this)},CanvasRenderer.prototype.createImage=function(t){return new CVImageElement(t,this.globalData,this)},CanvasRenderer.prototype.createComp=function(t){return new CVCompElement(t,this.globalData,this)},CanvasRenderer.prototype.createSolid=function(t){return new CVSolidElement(t,this.globalData,this)},CanvasRenderer.prototype.createNull=SVGRenderer.prototype.createNull,CanvasRenderer.prototype.ctxTransform=function(t){if(1!==t[0]||0!==t[1]||0!==t[4]||1!==t[5]||0!==t[12]||0!==t[13])if(this.renderConfig.clearCanvas){this.transformMat.cloneFromProps(t);var e=this.contextData.cTr.props;this.transformMat.transform(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]),this.contextData.cTr.cloneFromProps(this.transformMat.props);var r=this.contextData.cTr.props;this.canvasContext.setTransform(r[0],r[1],r[4],r[5],r[12],r[13])}else this.canvasContext.transform(t[0],t[1],t[4],t[5],t[12],t[13])},CanvasRenderer.prototype.ctxOpacity=function(t){if(!this.renderConfig.clearCanvas)return this.canvasContext.globalAlpha*=t<0?0:t,void(this.globalData.currentGlobalAlpha=this.contextData.cO);this.contextData.cO*=t<0?0:t,this.globalData.currentGlobalAlpha!==this.contextData.cO&&(this.canvasContext.globalAlpha=this.contextData.cO,this.globalData.currentGlobalAlpha=this.contextData.cO)},CanvasRenderer.prototype.reset=function(){this.renderConfig.clearCanvas?this.contextData.reset():this.canvasContext.restore()},CanvasRenderer.prototype.save=function(t){if(this.renderConfig.clearCanvas){t&&this.canvasContext.save();var e=this.contextData.cTr.props;this.contextData._length<=this.contextData.cArrPos&&this.contextData.duplicate();var r,i=this.contextData.saved[this.contextData.cArrPos];for(r=0;r<16;r+=1)i[r]=e[r];this.contextData.savedOp[this.contextData.cArrPos]=this.contextData.cO,this.contextData.cArrPos+=1}else this.canvasContext.save()},CanvasRenderer.prototype.restore=function(t){if(this.renderConfig.clearCanvas){t&&(this.canvasContext.restore(),this.globalData.blendMode="source-over"),this.contextData.cArrPos-=1;var e,r=this.contextData.saved[this.contextData.cArrPos],i=this.contextData.cTr.props;for(e=0;e<16;e+=1)i[e]=r[e];this.canvasContext.setTransform(r[0],r[1],r[4],r[5],r[12],r[13]),r=this.contextData.savedOp[this.contextData.cArrPos],this.contextData.cO=r,this.globalData.currentGlobalAlpha!==r&&(this.canvasContext.globalAlpha=r,this.globalData.currentGlobalAlpha=r)}else this.canvasContext.restore()},CanvasRenderer.prototype.configAnimation=function(t){this.animationItem.wrapper?(this.animationItem.container=createTag("canvas"),this.animationItem.container.style.width="100%",this.animationItem.container.style.height="100%",this.animationItem.container.style.transformOrigin=this.animationItem.container.style.mozTransformOrigin=this.animationItem.container.style.webkitTransformOrigin=this.animationItem.container.style["-webkit-transform"]="0px 0px 0px",this.animationItem.wrapper.appendChild(this.animationItem.container),this.canvasContext=this.animationItem.container.getContext("2d"),this.renderConfig.className&&this.animationItem.container.setAttribute("class",this.renderConfig.className),this.renderConfig.id&&this.animationItem.container.setAttribute("id",this.renderConfig.id)):this.canvasContext=this.renderConfig.context,this.data=t,this.layers=t.layers,this.transformCanvas={w:t.w,h:t.h,sx:0,sy:0,tx:0,ty:0},this.setupGlobalData(t,document.body),this.globalData.canvasContext=this.canvasContext,(this.globalData.renderer=this).globalData.isDashed=!1,this.globalData.progressiveLoad=this.renderConfig.progressiveLoad,this.globalData.transformCanvas=this.transformCanvas,this.elements=createSizedArray(t.layers.length),this.updateContainerSize()},CanvasRenderer.prototype.updateContainerSize=function(){var t,e,r,i;if(this.reset(),this.animationItem.wrapper&&this.animationItem.container?(t=this.animationItem.wrapper.offsetWidth,e=this.animationItem.wrapper.offsetHeight,this.animationItem.container.setAttribute("width",t*this.renderConfig.dpr),this.animationItem.container.setAttribute("height",e*this.renderConfig.dpr)):(t=this.canvasContext.canvas.width*this.renderConfig.dpr,e=this.canvasContext.canvas.height*this.renderConfig.dpr),-1!==this.renderConfig.preserveAspectRatio.indexOf("meet")||-1!==this.renderConfig.preserveAspectRatio.indexOf("slice")){var s=this.renderConfig.preserveAspectRatio.split(" "),a=s[1]||"meet",n=s[0]||"xMidYMid",o=n.substr(0,4),h=n.substr(4);r=t/e,i=this.transformCanvas.w/this.transformCanvas.h,this.transformCanvas.sy=r<i&&"meet"===a||i<r&&"slice"===a?(this.transformCanvas.sx=t/(this.transformCanvas.w/this.renderConfig.dpr),t/(this.transformCanvas.w/this.renderConfig.dpr)):(this.transformCanvas.sx=e/(this.transformCanvas.h/this.renderConfig.dpr),e/(this.transformCanvas.h/this.renderConfig.dpr)),this.transformCanvas.tx="xMid"===o&&(i<r&&"meet"===a||r<i&&"slice"===a)?(t-this.transformCanvas.w*(e/this.transformCanvas.h))/2*this.renderConfig.dpr:"xMax"===o&&(i<r&&"meet"===a||r<i&&"slice"===a)?(t-this.transformCanvas.w*(e/this.transformCanvas.h))*this.renderConfig.dpr:0,this.transformCanvas.ty="YMid"===h&&(r<i&&"meet"===a||i<r&&"slice"===a)?(e-this.transformCanvas.h*(t/this.transformCanvas.w))/2*this.renderConfig.dpr:"YMax"===h&&(r<i&&"meet"===a||i<r&&"slice"===a)?(e-this.transformCanvas.h*(t/this.transformCanvas.w))*this.renderConfig.dpr:0}else"none"==this.renderConfig.preserveAspectRatio?(this.transformCanvas.sx=t/(this.transformCanvas.w/this.renderConfig.dpr),this.transformCanvas.sy=e/(this.transformCanvas.h/this.renderConfig.dpr)):(this.transformCanvas.sx=this.renderConfig.dpr,this.transformCanvas.sy=this.renderConfig.dpr),this.transformCanvas.tx=0,this.transformCanvas.ty=0;this.transformCanvas.props=[this.transformCanvas.sx,0,0,0,0,this.transformCanvas.sy,0,0,0,0,1,0,this.transformCanvas.tx,this.transformCanvas.ty,0,1],this.ctxTransform(this.transformCanvas.props),this.canvasContext.beginPath(),this.canvasContext.rect(0,0,this.transformCanvas.w,this.transformCanvas.h),this.canvasContext.closePath(),this.canvasContext.clip(),this.renderFrame(this.renderedFrame,!0)},CanvasRenderer.prototype.destroy=function(){var t;for(this.renderConfig.clearCanvas&&(this.animationItem.wrapper.innerHTML=""),t=(this.layers?this.layers.length:0)-1;0<=t;t-=1)this.elements[t]&&this.elements[t].destroy();this.elements.length=0,this.globalData.canvasContext=null,this.animationItem.container=null,this.destroyed=!0},CanvasRenderer.prototype.renderFrame=function(t,e){if((this.renderedFrame!==t||!0!==this.renderConfig.clearCanvas||e)&&!this.destroyed&&-1!==t){this.renderedFrame=t,this.globalData.frameNum=t-this.animationItem._isFirstFrame,this.globalData.frameId+=1,this.globalData._mdf=!this.renderConfig.clearCanvas||e,this.globalData.projectInterface.currentFrame=t;var r,i=this.layers.length;for(this.completeLayers||this.checkLayers(t),r=0;r<i;r++)(this.completeLayers||this.elements[r])&&this.elements[r].prepareFrame(t-this.layers[r].st);if(this.globalData._mdf){for(!0===this.renderConfig.clearCanvas?this.canvasContext.clearRect(0,0,this.transformCanvas.w,this.transformCanvas.h):this.save(),r=i-1;0<=r;r-=1)(this.completeLayers||this.elements[r])&&this.elements[r].renderFrame();!0!==this.renderConfig.clearCanvas&&this.restore()}}},CanvasRenderer.prototype.buildItem=function(t){var e=this.elements;if(!e[t]&&99!=this.layers[t].ty){var r=this.createItem(this.layers[t],this,this.globalData);(e[t]=r).initExpressions()}},CanvasRenderer.prototype.checkPendingElements=function(){for(;this.pendingElements.length;){this.pendingElements.pop().checkParenting()}},CanvasRenderer.prototype.hide=function(){this.animationItem.container.style.display="none"},CanvasRenderer.prototype.show=function(){this.animationItem.container.style.display="block"},extendPrototype([BaseRenderer],HybridRenderer),HybridRenderer.prototype.buildItem=SVGRenderer.prototype.buildItem,HybridRenderer.prototype.checkPendingElements=function(){for(;this.pendingElements.length;){this.pendingElements.pop().checkParenting()}},HybridRenderer.prototype.appendElementInPos=function(t,e){var r=t.getBaseElement();if(r){var i=this.layers[e];if(i.ddd&&this.supports3d)this.addTo3dContainer(r,e);else if(this.threeDElements)this.addTo3dContainer(r,e);else{for(var s,a,n=0;n<e;)this.elements[n]&&!0!==this.elements[n]&&this.elements[n].getBaseElement&&(a=this.elements[n],s=(this.layers[n].ddd?this.getThreeDContainerByPos(n):a.getBaseElement())||s),n+=1;s?i.ddd&&this.supports3d||this.layerElement.insertBefore(r,s):i.ddd&&this.supports3d||this.layerElement.appendChild(r)}}},HybridRenderer.prototype.createShape=function(t){return this.supports3d?new HShapeElement(t,this.globalData,this):new SVGShapeElement(t,this.globalData,this)},HybridRenderer.prototype.createText=function(t){return this.supports3d?new HTextElement(t,this.globalData,this):new SVGTextElement(t,this.globalData,this)},HybridRenderer.prototype.createCamera=function(t){return this.camera=new HCameraElement(t,this.globalData,this),this.camera},HybridRenderer.prototype.createImage=function(t){return this.supports3d?new HImageElement(t,this.globalData,this):new IImageElement(t,this.globalData,this)},HybridRenderer.prototype.createComp=function(t){return this.supports3d?new HCompElement(t,this.globalData,this):new SVGCompElement(t,this.globalData,this)},HybridRenderer.prototype.createSolid=function(t){return this.supports3d?new HSolidElement(t,this.globalData,this):new ISolidElement(t,this.globalData,this)},HybridRenderer.prototype.createNull=SVGRenderer.prototype.createNull,HybridRenderer.prototype.getThreeDContainerByPos=function(t){for(var e=0,r=this.threeDElements.length;e<r;){if(this.threeDElements[e].startPos<=t&&this.threeDElements[e].endPos>=t)return this.threeDElements[e].perspectiveElem;e+=1}},HybridRenderer.prototype.createThreeDContainer=function(t,e){var r=createTag("div");styleDiv(r);var i=createTag("div");styleDiv(i),"3d"===e&&(r.style.width=this.globalData.compSize.w+"px",r.style.height=this.globalData.compSize.h+"px",r.style.transformOrigin=r.style.mozTransformOrigin=r.style.webkitTransformOrigin="50% 50%",i.style.transform=i.style.webkitTransform="matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)"),r.appendChild(i);var s={container:i,perspectiveElem:r,startPos:t,endPos:t,type:e};return this.threeDElements.push(s),s},HybridRenderer.prototype.build3dContainers=function(){var t,e,r=this.layers.length,i="";for(t=0;t<r;t+=1)this.layers[t].ddd&&3!==this.layers[t].ty?"3d"!==i&&(i="3d",e=this.createThreeDContainer(t,"3d")):"2d"!==i&&(i="2d",e=this.createThreeDContainer(t,"2d")),e.endPos=Math.max(e.endPos,t);for(t=(r=this.threeDElements.length)-1;0<=t;t--)this.resizerElem.appendChild(this.threeDElements[t].perspectiveElem)},HybridRenderer.prototype.addTo3dContainer=function(t,e){for(var r=0,i=this.threeDElements.length;r<i;){if(e<=this.threeDElements[r].endPos){for(var s,a=this.threeDElements[r].startPos;a<e;)this.elements[a]&&this.elements[a].getBaseElement&&(s=this.elements[a].getBaseElement()),a+=1;s?this.threeDElements[r].container.insertBefore(t,s):this.threeDElements[r].container.appendChild(t);break}r+=1}},HybridRenderer.prototype.configAnimation=function(t){var e=createTag("div"),r=this.animationItem.wrapper;e.style.width=t.w+"px",e.style.height=t.h+"px",styleDiv(this.resizerElem=e),e.style.transformStyle=e.style.webkitTransformStyle=e.style.mozTransformStyle="flat",this.renderConfig.className&&e.setAttribute("class",this.renderConfig.className),r.appendChild(e),e.style.overflow="hidden";var i=createNS("svg");i.setAttribute("width","1"),i.setAttribute("height","1"),styleDiv(i),this.resizerElem.appendChild(i);var s=createNS("defs");i.appendChild(s),this.data=t,this.setupGlobalData(t,i),this.globalData.defs=s,this.layers=t.layers,this.layerElement=this.resizerElem,this.build3dContainers(),this.updateContainerSize()},HybridRenderer.prototype.destroy=function(){this.animationItem.wrapper.innerHTML="",this.animationItem.container=null,this.globalData.defs=null;var t,e=this.layers?this.layers.length:0;for(t=0;t<e;t++)this.elements[t].destroy();this.elements.length=0,this.destroyed=!0,this.animationItem=null},HybridRenderer.prototype.updateContainerSize=function(){var t,e,r,i,s=this.animationItem.wrapper.offsetWidth,a=this.animationItem.wrapper.offsetHeight;i=s/a<this.globalData.compSize.w/this.globalData.compSize.h?(t=s/this.globalData.compSize.w,e=s/this.globalData.compSize.w,r=0,(a-this.globalData.compSize.h*(s/this.globalData.compSize.w))/2):(t=a/this.globalData.compSize.h,e=a/this.globalData.compSize.h,r=(s-this.globalData.compSize.w*(a/this.globalData.compSize.h))/2,0),this.resizerElem.style.transform=this.resizerElem.style.webkitTransform="matrix3d("+t+",0,0,0,0,"+e+",0,0,0,0,1,0,"+r+","+i+",0,1)"},HybridRenderer.prototype.renderFrame=SVGRenderer.prototype.renderFrame,HybridRenderer.prototype.hide=function(){this.resizerElem.style.display="none"},HybridRenderer.prototype.show=function(){this.resizerElem.style.display="block"},HybridRenderer.prototype.initItems=function(){if(this.buildAllItems(),this.camera)this.camera.setup();else{var t,e=this.globalData.compSize.w,r=this.globalData.compSize.h,i=this.threeDElements.length;for(t=0;t<i;t+=1)this.threeDElements[t].perspectiveElem.style.perspective=this.threeDElements[t].perspectiveElem.style.webkitPerspective=Math.sqrt(Math.pow(e,2)+Math.pow(r,2))+"px"}},HybridRenderer.prototype.searchExtraCompositions=function(t){var e,r=t.length,i=createTag("div");for(e=0;e<r;e+=1)if(t[e].xt){var s=this.createComp(t[e],i,this.globalData.comp,null);s.initExpressions(),this.globalData.projectInterface.registerComposition(s)}},MaskElement.prototype.getMaskProperty=function(t){return this.viewData[t].prop},MaskElement.prototype.renderFrame=function(t){var e,r=this.element.finalTransform.mat,i=this.masksProperties.length;for(e=0;e<i;e++)if((this.viewData[e].prop._mdf||t)&&this.drawPath(this.masksProperties[e],this.viewData[e].prop.v,this.viewData[e]),(this.viewData[e].op._mdf||t)&&this.viewData[e].elem.setAttribute("fill-opacity",this.viewData[e].op.v),"n"!==this.masksProperties[e].mode&&(this.viewData[e].invRect&&(this.element.finalTransform.mProp._mdf||t)&&this.viewData[e].invRect.setAttribute("transform",r.getInverseMatrix().to2dCSS()),this.storedData[e].x&&(this.storedData[e].x._mdf||t))){var s=this.storedData[e].expan;this.storedData[e].x.v<0?("erode"!==this.storedData[e].lastOperator&&(this.storedData[e].lastOperator="erode",this.storedData[e].elem.setAttribute("filter","url("+locationHref+"#"+this.storedData[e].filterId+")")),s.setAttribute("radius",-this.storedData[e].x.v)):("dilate"!==this.storedData[e].lastOperator&&(this.storedData[e].lastOperator="dilate",this.storedData[e].elem.setAttribute("filter",null)),this.storedData[e].elem.setAttribute("stroke-width",2*this.storedData[e].x.v))}},MaskElement.prototype.getMaskelement=function(){return this.maskElement},MaskElement.prototype.createLayerSolidPath=function(){var t="M0,0 ";return t+=" h"+this.globalData.compSize.w,t+=" v"+this.globalData.compSize.h,t+=" h-"+this.globalData.compSize.w,t+=" v-"+this.globalData.compSize.h+" "},MaskElement.prototype.drawPath=function(t,e,r){var i,s,a=" M"+e.v[0][0]+","+e.v[0][1];for(s=e._length,i=1;i<s;i+=1)a+=" C"+e.o[i-1][0]+","+e.o[i-1][1]+" "+e.i[i][0]+","+e.i[i][1]+" "+e.v[i][0]+","+e.v[i][1];if(e.c&&1<s&&(a+=" C"+e.o[i-1][0]+","+e.o[i-1][1]+" "+e.i[0][0]+","+e.i[0][1]+" "+e.v[0][0]+","+e.v[0][1]),r.lastPath!==a){var n="";r.elem&&(e.c&&(n=t.inv?this.solidPath+a:a),r.elem.setAttribute("d",n)),r.lastPath=a}},MaskElement.prototype.destroy=function(){this.element=null,this.globalData=null,this.maskElement=null,this.data=null,this.masksProperties=null},HierarchyElement.prototype={initHierarchy:function(){this.hierarchy=[],this._isParent=!1,this.checkParenting()},setHierarchy:function(t){this.hierarchy=t},setAsParent:function(){this._isParent=!0},checkParenting:function(){void 0!==this.data.parent&&this.comp.buildElementParenting(this,this.data.parent,[])}},FrameElement.prototype={initFrame:function(){this._isFirstFrame=!1,this.dynamicProperties=[],this._mdf=!1},prepareProperties:function(t,e){var r,i=this.dynamicProperties.length;for(r=0;r<i;r+=1)(e||this._isParent&&"transform"===this.dynamicProperties[r].propType)&&(this.dynamicProperties[r].getValue(),this.dynamicProperties[r]._mdf&&(this.globalData._mdf=!0,this._mdf=!0))},addDynamicProperty:function(t){-1===this.dynamicProperties.indexOf(t)&&this.dynamicProperties.push(t)}},TransformElement.prototype={initTransform:function(){this.finalTransform={mProp:this.data.ks?TransformPropertyFactory.getTransformProperty(this,this.data.ks,this):{o:0},_matMdf:!1,_opMdf:!1,mat:new Matrix},this.data.ao&&(this.finalTransform.mProp.autoOriented=!0),this.data.ty},renderTransform:function(){if(this.finalTransform._opMdf=this.finalTransform.mProp.o._mdf||this._isFirstFrame,this.finalTransform._matMdf=this.finalTransform.mProp._mdf||this._isFirstFrame,this.hierarchy){var t,e=this.finalTransform.mat,r=0,i=this.hierarchy.length;if(!this.finalTransform._matMdf)for(;r<i;){if(this.hierarchy[r].finalTransform.mProp._mdf){this.finalTransform._matMdf=!0;break}r+=1}if(this.finalTransform._matMdf)for(t=this.finalTransform.mProp.v.props,e.cloneFromProps(t),r=0;r<i;r+=1)t=this.hierarchy[r].finalTransform.mProp.v.props,e.transform(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])}},globalToLocal:function(t){var e=[];e.push(this.finalTransform);for(var r=!0,i=this.comp;r;)i.finalTransform?(i.data.hasMask&&e.splice(0,0,i.finalTransform),i=i.comp):r=!1;var s,a,n=e.length;for(s=0;s<n;s+=1)a=e[s].mat.applyToPointArray(0,0,0),t=[t[0]-a[0],t[1]-a[1],0];return t},mHelper:new Matrix},RenderableElement.prototype={initRenderable:function(){this.isInRange=!1,this.hidden=!1,this.isTransparent=!1,this.renderableComponents=[]},addRenderableComponent:function(t){-1===this.renderableComponents.indexOf(t)&&this.renderableComponents.push(t)},removeRenderableComponent:function(t){-1!==this.renderableComponents.indexOf(t)&&this.renderableComponents.splice(this.renderableComponents.indexOf(t),1)},prepareRenderableFrame:function(t){this.checkLayerLimits(t)},checkTransparency:function(){this.finalTransform.mProp.o.v<=0?!this.isTransparent&&this.globalData.renderConfig.hideOnTransparent&&(this.isTransparent=!0,this.hide()):this.isTransparent&&(this.isTransparent=!1,this.show())},checkLayerLimits:function(t){this.data.ip-this.data.st<=t&&this.data.op-this.data.st>t?!0!==this.isInRange&&(this.globalData._mdf=!0,this._mdf=!0,this.isInRange=!0,this.show()):!1!==this.isInRange&&(this.globalData._mdf=!0,this.isInRange=!1,this.hide())},renderRenderable:function(){var t,e=this.renderableComponents.length;for(t=0;t<e;t+=1)this.renderableComponents[t].renderFrame(this._isFirstFrame)},sourceRectAtTime:function(){return{top:0,left:0,width:100,height:100}},getLayerSize:function(){return 5===this.data.ty?{w:this.data.textData.width,h:this.data.textData.height}:{w:this.data.width,h:this.data.height}}},extendPrototype([RenderableElement,createProxyFunction({initElement:function(t,e,r){this.initFrame(),this.initBaseData(t,e,r),this.initTransform(t,e,r),this.initHierarchy(),this.initRenderable(),this.initRendererElement(),this.createContainerElements(),this.createRenderableComponents(),this.createContent(),this.hide()},hide:function(){this.hidden||this.isInRange&&!this.isTransparent||((this.baseElement||this.layerElement).style.display="none",this.hidden=!0)},show:function(){this.isInRange&&!this.isTransparent&&(this.data.hd||((this.baseElement||this.layerElement).style.display="block"),this.hidden=!1,this._isFirstFrame=!0)},renderFrame:function(){this.data.hd||this.hidden||(this.renderTransform(),this.renderRenderable(),this.renderElement(),this.renderInnerContent(),this._isFirstFrame&&(this._isFirstFrame=!1))},renderInnerContent:function(){},prepareFrame:function(t){this._mdf=!1,this.prepareRenderableFrame(t),this.prepareProperties(t,this.isInRange),this.checkTransparency()},destroy:function(){this.innerElem=null,this.destroyBaseElement()}})],RenderableDOMElement),SVGStyleData.prototype.reset=function(){this.d="",this._mdf=!1},SVGShapeData.prototype.setAsAnimated=function(){this._isAnimated=!0},extendPrototype([DynamicPropertyContainer],SVGStrokeStyleData),extendPrototype([DynamicPropertyContainer],SVGFillStyleData),SVGGradientFillStyleData.prototype.initGradientData=function(t,e,r){this.o=PropertyFactory.getProp(t,e.o,0,.01,this),this.s=PropertyFactory.getProp(t,e.s,1,null,this),this.e=PropertyFactory.getProp(t,e.e,1,null,this),this.h=PropertyFactory.getProp(t,e.h||{k:0},0,.01,this),this.a=PropertyFactory.getProp(t,e.a||{k:0},0,degToRads,this),this.g=new GradientProperty(t,e.g,this),this.style=r,this.stops=[],this.setGradientData(r.pElem,e),this.setGradientOpacity(e,r),this._isAnimated=!!this._isAnimated},SVGGradientFillStyleData.prototype.setGradientData=function(t,e){var r=createElementID(),i=createNS(1===e.t?"linearGradient":"radialGradient");i.setAttribute("id",r),i.setAttribute("spreadMethod","pad"),i.setAttribute("gradientUnits","userSpaceOnUse");var s,a,n,o=[];for(n=4*e.g.p,a=0;a<n;a+=4)s=createNS("stop"),i.appendChild(s),o.push(s);t.setAttribute("gf"===e.ty?"fill":"stroke","url("+locationHref+"#"+r+")"),this.gf=i,this.cst=o},SVGGradientFillStyleData.prototype.setGradientOpacity=function(t,e){if(this.g._hasOpacity&&!this.g._collapsable){var r,i,s,a=createNS("mask"),n=createNS("path");a.appendChild(n);var o=createElementID(),h=createElementID();a.setAttribute("id",h);var l=createNS(1===t.t?"linearGradient":"radialGradient");l.setAttribute("id",o),l.setAttribute("spreadMethod","pad"),l.setAttribute("gradientUnits","userSpaceOnUse"),s=t.g.k.k[0].s?t.g.k.k[0].s.length:t.g.k.k.length;var p=this.stops;for(i=4*t.g.p;i<s;i+=2)(r=createNS("stop")).setAttribute("stop-color","rgb(255,255,255)"),l.appendChild(r),p.push(r);n.setAttribute("gf"===t.ty?"fill":"stroke","url("+locationHref+"#"+o+")"),this.of=l,this.ms=a,this.ost=p,this.maskId=h,e.msElem=n}},extendPrototype([DynamicPropertyContainer],SVGGradientFillStyleData),extendPrototype([SVGGradientFillStyleData,DynamicPropertyContainer],SVGGradientStrokeStyleData);var SVGElementsRenderer=function(){var y=new Matrix,g=new Matrix;function e(t,e,r){(r||e.transform.op._mdf)&&e.transform.container.setAttribute("opacity",e.transform.op.v),(r||e.transform.mProps._mdf)&&e.transform.container.setAttribute("transform",e.transform.mProps.v.to2dCSS())}function r(t,e,r){var i,s,a,n,o,h,l,p,m,f,c,d=e.styles.length,u=e.lvl;for(h=0;h<d;h+=1){if(n=e.sh._mdf||r,e.styles[h].lvl<u){for(p=g.reset(),f=u-e.styles[h].lvl,c=e.transformers.length-1;!n&&0<f;)n=e.transformers[c].mProps._mdf||n,f--,c--;if(n)for(f=u-e.styles[h].lvl,c=e.transformers.length-1;0<f;)m=e.transformers[c].mProps.v.props,p.transform(m[0],m[1],m[2],m[3],m[4],m[5],m[6],m[7],m[8],m[9],m[10],m[11],m[12],m[13],m[14],m[15]),f--,c--}else p=y;if(s=(l=e.sh.paths)._length,n){for(a="",i=0;i<s;i+=1)(o=l.shapes[i])&&o._length&&(a+=buildShapeString(o,o._length,o.c,p));e.caches[h]=a}else a=e.caches[h];e.styles[h].d+=!0===t.hd?"":a,e.styles[h]._mdf=n||e.styles[h]._mdf}}function i(t,e,r){var i=e.style;(e.c._mdf||r)&&i.pElem.setAttribute("fill","rgb("+bm_floor(e.c.v[0])+","+bm_floor(e.c.v[1])+","+bm_floor(e.c.v[2])+")"),(e.o._mdf||r)&&i.pElem.setAttribute("fill-opacity",e.o.v)}function s(t,e,r){a(t,e,r),n(t,e,r)}function a(t,e,r){var i,s,a,n,o,h=e.gf,l=e.g._hasOpacity,p=e.s.v,m=e.e.v;if(e.o._mdf||r){var f="gf"===t.ty?"fill-opacity":"stroke-opacity";e.style.pElem.setAttribute(f,e.o.v)}if(e.s._mdf||r){var c=1===t.t?"x1":"cx",d="x1"===c?"y1":"cy";h.setAttribute(c,p[0]),h.setAttribute(d,p[1]),l&&!e.g._collapsable&&(e.of.setAttribute(c,p[0]),e.of.setAttribute(d,p[1]))}if(e.g._cmdf||r){i=e.cst;var u=e.g.c;for(a=i.length,s=0;s<a;s+=1)(n=i[s]).setAttribute("offset",u[4*s]+"%"),n.setAttribute("stop-color","rgb("+u[4*s+1]+","+u[4*s+2]+","+u[4*s+3]+")")}if(l&&(e.g._omdf||r)){var y=e.g.o;for(a=(i=e.g._collapsable?e.cst:e.ost).length,s=0;s<a;s+=1)n=i[s],e.g._collapsable||n.setAttribute("offset",y[2*s]+"%"),n.setAttribute("stop-opacity",y[2*s+1])}if(1===t.t)(e.e._mdf||r)&&(h.setAttribute("x2",m[0]),h.setAttribute("y2",m[1]),l&&!e.g._collapsable&&(e.of.setAttribute("x2",m[0]),e.of.setAttribute("y2",m[1])));else if((e.s._mdf||e.e._mdf||r)&&(o=Math.sqrt(Math.pow(p[0]-m[0],2)+Math.pow(p[1]-m[1],2)),h.setAttribute("r",o),l&&!e.g._collapsable&&e.of.setAttribute("r",o)),e.e._mdf||e.h._mdf||e.a._mdf||r){o||(o=Math.sqrt(Math.pow(p[0]-m[0],2)+Math.pow(p[1]-m[1],2)));var g=Math.atan2(m[1]-p[1],m[0]-p[0]),v=o*(1<=e.h.v?.99:e.h.v<=-1?-.99:e.h.v),b=Math.cos(g+e.a.v)*v+p[0],E=Math.sin(g+e.a.v)*v+p[1];h.setAttribute("fx",b),h.setAttribute("fy",E),l&&!e.g._collapsable&&(e.of.setAttribute("fx",b),e.of.setAttribute("fy",E))}}function n(t,e,r){var i=e.style,s=e.d;s&&(s._mdf||r)&&s.dashStr&&(i.pElem.setAttribute("stroke-dasharray",s.dashStr),i.pElem.setAttribute("stroke-dashoffset",s.dashoffset[0])),e.c&&(e.c._mdf||r)&&i.pElem.setAttribute("stroke","rgb("+bm_floor(e.c.v[0])+","+bm_floor(e.c.v[1])+","+bm_floor(e.c.v[2])+")"),(e.o._mdf||r)&&i.pElem.setAttribute("stroke-opacity",e.o.v),(e.w._mdf||r)&&(i.pElem.setAttribute("stroke-width",e.w.v),i.msElem&&i.msElem.setAttribute("stroke-width",e.w.v))}return{createRenderFunction:function(t){t.ty;switch(t.ty){case"fl":return i;case"gf":return a;case"gs":return s;case"st":return n;case"sh":case"el":case"rc":case"sr":return r;case"tr":return e}}}}();function ShapeTransformManager(){this.sequences={},this.sequenceList=[],this.transform_key_count=0}function CVShapeData(t,e,r,i){this.styledShapes=[],this.tr=[0,0,0,0,0,0];var s=4;"rc"==e.ty?s=5:"el"==e.ty?s=6:"sr"==e.ty&&(s=7),this.sh=ShapePropertyFactory.getShapeProp(t,e,s,t);var a,n,o=r.length;for(a=0;a<o;a+=1)r[a].closed||(n={transforms:i.addTransformSequence(r[a].transforms),trNodes:[]},this.styledShapes.push(n),r[a].elements.push(n))}function BaseElement(){}function NullElement(t,e,r){this.initFrame(),this.initBaseData(t,e,r),this.initFrame(),this.initTransform(t,e,r),this.initHierarchy()}function SVGBaseElement(){}function IShapeElement(){}function ITextElement(){}function ICompElement(){}function IImageElement(t,e,r){this.assetData=e.getAssetData(t.refId),this.initElement(t,e,r),this.sourceRect={top:0,left:0,width:this.assetData.w,height:this.assetData.h}}function ISolidElement(t,e,r){this.initElement(t,e,r)}function SVGCompElement(t,e,r){this.layers=t.layers,this.supports3d=!0,this.completeLayers=!1,this.pendingElements=[],this.elements=this.layers?createSizedArray(this.layers.length):[],this.initElement(t,e,r),this.tm=t.tm?PropertyFactory.getProp(this,t.tm,0,e.frameRate,this):{_placeholder:!0}}function SVGTextElement(t,e,r){this.textSpans=[],this.renderType="svg",this.initElement(t,e,r)}function SVGShapeElement(t,e,r){this.shapes=[],this.shapesData=t.shapes,this.stylesList=[],this.shapeModifiers=[],this.itemsData=[],this.processedElements=[],this.animatedContents=[],this.initElement(t,e,r),this.prevViewData=[]}function SVGTintFilter(t,e){this.filterManager=e;var r=createNS("feColorMatrix");if(r.setAttribute("type","matrix"),r.setAttribute("color-interpolation-filters","linearRGB"),r.setAttribute("values","0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0"),r.setAttribute("result","f1"),t.appendChild(r),(r=createNS("feColorMatrix")).setAttribute("type","matrix"),r.setAttribute("color-interpolation-filters","sRGB"),r.setAttribute("values","1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"),r.setAttribute("result","f2"),t.appendChild(r),this.matrixFilter=r,100!==e.effectElements[2].p.v||e.effectElements[2].p.k){var i,s=createNS("feMerge");t.appendChild(s),(i=createNS("feMergeNode")).setAttribute("in","SourceGraphic"),s.appendChild(i),(i=createNS("feMergeNode")).setAttribute("in","f2"),s.appendChild(i)}}function SVGFillFilter(t,e){this.filterManager=e;var r=createNS("feColorMatrix");r.setAttribute("type","matrix"),r.setAttribute("color-interpolation-filters","sRGB"),r.setAttribute("values","1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0"),t.appendChild(r),this.matrixFilter=r}function SVGGaussianBlurEffect(t,e){t.setAttribute("x","-100%"),t.setAttribute("y","-100%"),t.setAttribute("width","300%"),t.setAttribute("height","300%"),this.filterManager=e;var r=createNS("feGaussianBlur");t.appendChild(r),this.feGaussianBlur=r}function SVGStrokeEffect(t,e){this.initialized=!1,this.filterManager=e,this.elem=t,this.paths=[]}function SVGTritoneFilter(t,e){this.filterManager=e;var r=createNS("feColorMatrix");r.setAttribute("type","matrix"),r.setAttribute("color-interpolation-filters","linearRGB"),r.setAttribute("values","0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0"),r.setAttribute("result","f1"),t.appendChild(r);var i=createNS("feComponentTransfer");i.setAttribute("color-interpolation-filters","sRGB"),t.appendChild(i),this.matrixFilter=i;var s=createNS("feFuncR");s.setAttribute("type","table"),i.appendChild(s),this.feFuncR=s;var a=createNS("feFuncG");a.setAttribute("type","table"),i.appendChild(a),this.feFuncG=a;var n=createNS("feFuncB");n.setAttribute("type","table"),i.appendChild(n),this.feFuncB=n}function SVGProLevelsFilter(t,e){this.filterManager=e;var r=this.filterManager.effectElements,i=createNS("feComponentTransfer");(r[10].p.k||0!==r[10].p.v||r[11].p.k||1!==r[11].p.v||r[12].p.k||1!==r[12].p.v||r[13].p.k||0!==r[13].p.v||r[14].p.k||1!==r[14].p.v)&&(this.feFuncR=this.createFeFunc("feFuncR",i)),(r[17].p.k||0!==r[17].p.v||r[18].p.k||1!==r[18].p.v||r[19].p.k||1!==r[19].p.v||r[20].p.k||0!==r[20].p.v||r[21].p.k||1!==r[21].p.v)&&(this.feFuncG=this.createFeFunc("feFuncG",i)),(r[24].p.k||0!==r[24].p.v||r[25].p.k||1!==r[25].p.v||r[26].p.k||1!==r[26].p.v||r[27].p.k||0!==r[27].p.v||r[28].p.k||1!==r[28].p.v)&&(this.feFuncB=this.createFeFunc("feFuncB",i)),(r[31].p.k||0!==r[31].p.v||r[32].p.k||1!==r[32].p.v||r[33].p.k||1!==r[33].p.v||r[34].p.k||0!==r[34].p.v||r[35].p.k||1!==r[35].p.v)&&(this.feFuncA=this.createFeFunc("feFuncA",i)),(this.feFuncR||this.feFuncG||this.feFuncB||this.feFuncA)&&(i.setAttribute("color-interpolation-filters","sRGB"),t.appendChild(i),i=createNS("feComponentTransfer")),(r[3].p.k||0!==r[3].p.v||r[4].p.k||1!==r[4].p.v||r[5].p.k||1!==r[5].p.v||r[6].p.k||0!==r[6].p.v||r[7].p.k||1!==r[7].p.v)&&(i.setAttribute("color-interpolation-filters","sRGB"),t.appendChild(i),this.feFuncRComposed=this.createFeFunc("feFuncR",i),this.feFuncGComposed=this.createFeFunc("feFuncG",i),this.feFuncBComposed=this.createFeFunc("feFuncB",i))}function SVGDropShadowEffect(t,e){var r=e.container.globalData.renderConfig.filterSize;t.setAttribute("x",r.x),t.setAttribute("y",r.y),t.setAttribute("width",r.width),t.setAttribute("height",r.height),this.filterManager=e;var i=createNS("feGaussianBlur");i.setAttribute("in","SourceAlpha"),i.setAttribute("result","drop_shadow_1"),i.setAttribute("stdDeviation","0"),this.feGaussianBlur=i,t.appendChild(i);var s=createNS("feOffset");s.setAttribute("dx","25"),s.setAttribute("dy","0"),s.setAttribute("in","drop_shadow_1"),s.setAttribute("result","drop_shadow_2"),this.feOffset=s,t.appendChild(s);var a=createNS("feFlood");a.setAttribute("flood-color","#00ff00"),a.setAttribute("flood-opacity","1"),a.setAttribute("result","drop_shadow_3"),this.feFlood=a,t.appendChild(a);var n=createNS("feComposite");n.setAttribute("in","drop_shadow_3"),n.setAttribute("in2","drop_shadow_2"),n.setAttribute("operator","in"),n.setAttribute("result","drop_shadow_4"),t.appendChild(n);var o,h=createNS("feMerge");t.appendChild(h),o=createNS("feMergeNode"),h.appendChild(o),(o=createNS("feMergeNode")).setAttribute("in","SourceGraphic"),this.feMergeNode=o,this.feMerge=h,this.originalNodeAdded=!1,h.appendChild(o)}ShapeTransformManager.prototype={addTransformSequence:function(t){var e,r=t.length,i="_";for(e=0;e<r;e+=1)i+=t[e].transform.key+"_";var s=this.sequences[i];return s||(s={transforms:[].concat(t),finalTransform:new Matrix,_mdf:!1},this.sequences[i]=s,this.sequenceList.push(s)),s},processSequence:function(t,e){for(var r,i=0,s=t.transforms.length,a=e;i<s&&!e;){if(t.transforms[i].transform.mProps._mdf){a=!0;break}i+=1}if(a)for(t.finalTransform.reset(),i=s-1;0<=i;i-=1)r=t.transforms[i].transform.mProps.v.props,t.finalTransform.transform(r[0],r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11],r[12],r[13],r[14],r[15]);t._mdf=a},processSequences:function(t){var e,r=this.sequenceList.length;for(e=0;e<r;e+=1)this.processSequence(this.sequenceList[e],t)},getNewKey:function(){return"_"+this.transform_key_count++}},CVShapeData.prototype.setAsAnimated=SVGShapeData.prototype.setAsAnimated,BaseElement.prototype={checkMasks:function(){if(!this.data.hasMask)return!1;for(var t=0,e=this.data.masksProperties.length;t<e;){if("n"!==this.data.masksProperties[t].mode&&!1!==this.data.masksProperties[t].cl)return!0;t+=1}return!1},initExpressions:function(){this.layerInterface=LayerExpressionInterface(this),this.data.hasMask&&this.maskManager&&this.layerInterface.registerMaskInterface(this.maskManager);var t=EffectsExpressionInterface.createEffectsInterface(this,this.layerInterface);this.layerInterface.registerEffectsInterface(t),0===this.data.ty||this.data.xt?this.compInterface=CompExpressionInterface(this):4===this.data.ty?(this.layerInterface.shapeInterface=ShapeExpressionInterface(this.shapesData,this.itemsData,this.layerInterface),this.layerInterface.content=this.layerInterface.shapeInterface):5===this.data.ty&&(this.layerInterface.textInterface=TextExpressionInterface(this),this.layerInterface.text=this.layerInterface.textInterface)},setBlendMode:function(){var t=getBlendMode(this.data.bm);(this.baseElement||this.layerElement).style["mix-blend-mode"]=t},initBaseData:function(t,e,r){this.globalData=e,this.comp=r,this.data=t,this.layerId=createElementID(),this.data.sr||(this.data.sr=1),this.effectsManager=new EffectsManager(this.data,this,this.dynamicProperties)},getType:function(){return this.type},sourceRectAtTime:function(){}},NullElement.prototype.prepareFrame=function(t){this.prepareProperties(t,!0)},NullElement.prototype.renderFrame=function(){},NullElement.prototype.getBaseElement=function(){return null},NullElement.prototype.destroy=function(){},NullElement.prototype.sourceRectAtTime=function(){},NullElement.prototype.hide=function(){},extendPrototype([BaseElement,TransformElement,HierarchyElement,FrameElement],NullElement),SVGBaseElement.prototype={initRendererElement:function(){this.layerElement=createNS("g")},createContainerElements:function(){this.matteElement=createNS("g"),this.transformedElement=this.layerElement,this.maskedElement=this.layerElement,this._sizeChanged=!1;var t,e,r,i=null;if(this.data.td){if(3==this.data.td||1==this.data.td){var s=createNS("mask");s.setAttribute("id",this.layerId),s.setAttribute("mask-type",3==this.data.td?"luminance":"alpha"),s.appendChild(this.layerElement),i=s,this.globalData.defs.appendChild(s),featureSupport.maskType||1!=this.data.td||(s.setAttribute("mask-type","luminance"),t=createElementID(),e=filtersFactory.createFilter(t),this.globalData.defs.appendChild(e),e.appendChild(filtersFactory.createAlphaToLuminanceFilter()),(r=createNS("g")).appendChild(this.layerElement),i=r,s.appendChild(r),r.setAttribute("filter","url("+locationHref+"#"+t+")"))}else if(2==this.data.td){var a=createNS("mask");a.setAttribute("id",this.layerId),a.setAttribute("mask-type","alpha");var n=createNS("g");a.appendChild(n),t=createElementID(),e=filtersFactory.createFilter(t);var o=createNS("feComponentTransfer");o.setAttribute("in","SourceGraphic"),e.appendChild(o);var h=createNS("feFuncA");h.setAttribute("type","table"),h.setAttribute("tableValues","1.0 0.0"),o.appendChild(h),this.globalData.defs.appendChild(e);var l=createNS("rect");l.setAttribute("width",this.comp.data.w),l.setAttribute("height",this.comp.data.h),l.setAttribute("x","0"),l.setAttribute("y","0"),l.setAttribute("fill","#ffffff"),l.setAttribute("opacity","0"),n.setAttribute("filter","url("+locationHref+"#"+t+")"),n.appendChild(l),n.appendChild(this.layerElement),i=n,featureSupport.maskType||(a.setAttribute("mask-type","luminance"),e.appendChild(filtersFactory.createAlphaToLuminanceFilter()),r=createNS("g"),n.appendChild(l),r.appendChild(this.layerElement),i=r,n.appendChild(r)),this.globalData.defs.appendChild(a)}}else this.data.tt?(this.matteElement.appendChild(this.layerElement),i=this.matteElement,this.baseElement=this.matteElement):this.baseElement=this.layerElement;if(this.data.ln&&this.layerElement.setAttribute("id",this.data.ln),this.data.cl&&this.layerElement.setAttribute("class",this.data.cl),0===this.data.ty&&!this.data.hd){var p=createNS("clipPath"),m=createNS("path");m.setAttribute("d","M0,0 L"+this.data.w+",0 L"+this.data.w+","+this.data.h+" L0,"+this.data.h+"z");var f=createElementID();if(p.setAttribute("id",f),p.appendChild(m),this.globalData.defs.appendChild(p),this.checkMasks()){var c=createNS("g");c.setAttribute("clip-path","url("+locationHref+"#"+f+")"),c.appendChild(this.layerElement),this.transformedElement=c,i?i.appendChild(this.transformedElement):this.baseElement=this.transformedElement}else this.layerElement.setAttribute("clip-path","url("+locationHref+"#"+f+")")}0!==this.data.bm&&this.setBlendMode()},renderElement:function(){this.finalTransform._matMdf&&this.transformedElement.setAttribute("transform",this.finalTransform.mat.to2dCSS()),this.finalTransform._opMdf&&this.transformedElement.setAttribute("opacity",this.finalTransform.mProp.o.v)},destroyBaseElement:function(){this.layerElement=null,this.matteElement=null,this.maskManager.destroy()},getBaseElement:function(){return this.data.hd?null:this.baseElement},createRenderableComponents:function(){this.maskManager=new MaskElement(this.data,this,this.globalData),this.renderableEffectsManager=new SVGEffects(this)},setMatte:function(t){this.matteElement&&this.matteElement.setAttribute("mask","url("+locationHref+"#"+t+")")}},IShapeElement.prototype={addShapeToModifiers:function(t){var e,r=this.shapeModifiers.length;for(e=0;e<r;e+=1)this.shapeModifiers[e].addShape(t)},isShapeInAnimatedModifiers:function(t){for(var e=this.shapeModifiers.length;0<e;)if(this.shapeModifiers[0].isAnimatedWithShape(t))return!0;return!1},renderModifiers:function(){if(this.shapeModifiers.length){var t,e=this.shapes.length;for(t=0;t<e;t+=1)this.shapes[t].sh.reset();for(t=(e=this.shapeModifiers.length)-1;0<=t;t-=1)this.shapeModifiers[t].processShapes(this._isFirstFrame)}},lcEnum:{1:"butt",2:"round",3:"square"},ljEnum:{1:"miter",2:"round",3:"bevel"},searchProcessedElement:function(t){for(var e=this.processedElements,r=0,i=e.length;r<i;){if(e[r].elem===t)return e[r].pos;r+=1}return 0},addProcessedElement:function(t,e){for(var r=this.processedElements,i=r.length;i;)if(r[i-=1].elem===t)return void(r[i].pos=e);r.push(new ProcessedElement(t,e))},prepareFrame:function(t){this.prepareRenderableFrame(t),this.prepareProperties(t,this.isInRange)}},ITextElement.prototype.initElement=function(t,e,r){this.lettersChangedFlag=!0,this.initFrame(),this.initBaseData(t,e,r),this.textProperty=new TextProperty(this,t.t,this.dynamicProperties),this.textAnimator=new TextAnimatorProperty(t.t,this.renderType,this),this.initTransform(t,e,r),this.initHierarchy(),this.initRenderable(),this.initRendererElement(),this.createContainerElements(),this.createRenderableComponents(),this.createContent(),this.hide(),this.textAnimator.searchProperties(this.dynamicProperties)},ITextElement.prototype.prepareFrame=function(t){this._mdf=!1,this.prepareRenderableFrame(t),this.prepareProperties(t,this.isInRange),(this.textProperty._mdf||this.textProperty._isFirstFrame)&&(this.buildNewText(),this.textProperty._isFirstFrame=!1,this.textProperty._mdf=!1)},ITextElement.prototype.createPathShape=function(t,e){var r,i,s=e.length,a="";for(r=0;r<s;r+=1)i=e[r].ks.k,a+=buildShapeString(i,i.i.length,!0,t);return a},ITextElement.prototype.updateDocumentData=function(t,e){this.textProperty.updateDocumentData(t,e)},ITextElement.prototype.canResizeFont=function(t){this.textProperty.canResizeFont(t)},ITextElement.prototype.setMinimumFontSize=function(t){this.textProperty.setMinimumFontSize(t)},ITextElement.prototype.applyTextPropertiesToMatrix=function(t,e,r,i,s){switch(t.ps&&e.translate(t.ps[0],t.ps[1]+t.ascent,0),e.translate(0,-t.ls,0),t.j){case 1:e.translate(t.justifyOffset+(t.boxWidth-t.lineWidths[r]),0,0);break;case 2:e.translate(t.justifyOffset+(t.boxWidth-t.lineWidths[r])/2,0,0)}e.translate(i,s,0)},ITextElement.prototype.buildColor=function(t){return"rgb("+Math.round(255*t[0])+","+Math.round(255*t[1])+","+Math.round(255*t[2])+")"},ITextElement.prototype.emptyProp=new LetterProps,ITextElement.prototype.destroy=function(){},extendPrototype([BaseElement,TransformElement,HierarchyElement,FrameElement,RenderableDOMElement],ICompElement),ICompElement.prototype.initElement=function(t,e,r){this.initFrame(),this.initBaseData(t,e,r),this.initTransform(t,e,r),this.initRenderable(),this.initHierarchy(),this.initRendererElement(),this.createContainerElements(),this.createRenderableComponents(),!this.data.xt&&e.progressiveLoad||this.buildAllItems(),this.hide()},ICompElement.prototype.prepareFrame=function(t){if(this._mdf=!1,this.prepareRenderableFrame(t),this.prepareProperties(t,this.isInRange),this.isInRange||this.data.xt){if(this.tm._placeholder)this.renderedFrame=t/this.data.sr;else{var e=this.tm.v;e===this.data.op&&(e=this.data.op-1),this.renderedFrame=e}var r,i=this.elements.length;for(this.completeLayers||this.checkLayers(this.renderedFrame),r=i-1;0<=r;r-=1)(this.completeLayers||this.elements[r])&&(this.elements[r].prepareFrame(this.renderedFrame-this.layers[r].st),this.elements[r]._mdf&&(this._mdf=!0))}},ICompElement.prototype.renderInnerContent=function(){var t,e=this.layers.length;for(t=0;t<e;t+=1)(this.completeLayers||this.elements[t])&&this.elements[t].renderFrame()},ICompElement.prototype.setElements=function(t){this.elements=t},ICompElement.prototype.getElements=function(){return this.elements},ICompElement.prototype.destroyElements=function(){var t,e=this.layers.length;for(t=0;t<e;t+=1)this.elements[t]&&this.elements[t].destroy()},ICompElement.prototype.destroy=function(){this.destroyElements(),this.destroyBaseElement()},extendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement],IImageElement),IImageElement.prototype.createContent=function(){var t=this.globalData.getAssetsPath(this.assetData);this.innerElem=createNS("image"),this.innerElem.setAttribute("width",this.assetData.w+"px"),this.innerElem.setAttribute("height",this.assetData.h+"px"),this.innerElem.setAttribute("preserveAspectRatio",this.assetData.pr||this.globalData.renderConfig.imagePreserveAspectRatio),this.innerElem.setAttributeNS("http://www.w3.org/1999/xlink","href",t),this.layerElement.appendChild(this.innerElem)},IImageElement.prototype.sourceRectAtTime=function(){return this.sourceRect},extendPrototype([IImageElement],ISolidElement),ISolidElement.prototype.createContent=function(){var t=createNS("rect");t.setAttribute("width",this.data.sw),t.setAttribute("height",this.data.sh),t.setAttribute("fill",this.data.sc),this.layerElement.appendChild(t)},extendPrototype([SVGRenderer,ICompElement,SVGBaseElement],SVGCompElement),extendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement,ITextElement],SVGTextElement),SVGTextElement.prototype.createContent=function(){this.data.singleShape&&!this.globalData.fontManager.chars&&(this.textContainer=createNS("text"))},SVGTextElement.prototype.buildTextContents=function(t){for(var e=0,r=t.length,i=[],s="";e<r;)t[e]===String.fromCharCode(13)||t[e]===String.fromCharCode(3)?(i.push(s),s=""):s+=t[e],e+=1;return i.push(s),i},SVGTextElement.prototype.buildNewText=function(){var t,e,r=this.textProperty.currentData;this.renderedLetters=createSizedArray(r?r.l.length:0),r.fc?this.layerElement.setAttribute("fill",this.buildColor(r.fc)):this.layerElement.setAttribute("fill","rgba(0,0,0,0)"),r.sc&&(this.layerElement.setAttribute("stroke",this.buildColor(r.sc)),this.layerElement.setAttribute("stroke-width",r.sw)),this.layerElement.setAttribute("font-size",r.finalSize);var i=this.globalData.fontManager.getFontByName(r.f);if(i.fClass)this.layerElement.setAttribute("class",i.fClass);else{this.layerElement.setAttribute("font-family",i.fFamily);var s=r.fWeight,a=r.fStyle;this.layerElement.setAttribute("font-style",a),this.layerElement.setAttribute("font-weight",s)}this.layerElement.setAttribute("aria-label",r.t);var n,o=r.l||[],h=!!this.globalData.fontManager.chars;e=o.length;var l,p=this.mHelper,m="",f=this.data.singleShape,c=0,d=0,u=!0,y=r.tr/1e3*r.finalSize;if(!f||h||r.sz){var g,v,b=this.textSpans.length;for(t=0;t<e;t+=1)h&&f&&0!==t||(n=t<b?this.textSpans[t]:createNS(h?"path":"text"),b<=t&&(n.setAttribute("stroke-linecap","butt"),n.setAttribute("stroke-linejoin","round"),n.setAttribute("stroke-miterlimit","4"),this.textSpans[t]=n,this.layerElement.appendChild(n)),n.style.display="inherit"),p.reset(),p.scale(r.finalSize/100,r.finalSize/100),f&&(o[t].n&&(c=-y,d+=r.yOffset,d+=u?1:0,u=!1),this.applyTextPropertiesToMatrix(r,p,o[t].line,c,d),c+=o[t].l||0,c+=y),h?(l=(g=(v=this.globalData.fontManager.getCharData(r.finalText[t],i.fStyle,this.globalData.fontManager.getFontByName(r.f).fFamily))&&v.data||{}).shapes?g.shapes[0].it:[],f?m+=this.createPathShape(p,l):n.setAttribute("d",this.createPathShape(p,l))):(f&&n.setAttribute("transform","translate("+p.props[12]+","+p.props[13]+")"),n.textContent=o[t].val,n.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"));f&&n&&n.setAttribute("d",m)}else{var E=this.textContainer,x="start";switch(r.j){case 1:x="end";break;case 2:x="middle"}E.setAttribute("text-anchor",x),E.setAttribute("letter-spacing",y);var S=this.buildTextContents(r.finalText);for(e=S.length,d=r.ps?r.ps[1]+r.ascent:0,t=0;t<e;t+=1)(n=this.textSpans[t]||createNS("tspan")).textContent=S[t],n.setAttribute("x",0),n.setAttribute("y",d),n.style.display="inherit",E.appendChild(n),this.textSpans[t]=n,d+=r.finalLineHeight;this.layerElement.appendChild(E)}for(;t<this.textSpans.length;)this.textSpans[t].style.display="none",t+=1;this._sizeChanged=!0},SVGTextElement.prototype.sourceRectAtTime=function(t){if(this.prepareFrame(this.comp.renderedFrame-this.data.st),this.renderInnerContent(),this._sizeChanged){this._sizeChanged=!1;var e=this.layerElement.getBBox();this.bbox={top:e.y,left:e.x,width:e.width,height:e.height}}return this.bbox},SVGTextElement.prototype.renderInnerContent=function(){if(!this.data.singleShape&&(this.textAnimator.getMeasures(this.textProperty.currentData,this.lettersChangedFlag),this.lettersChangedFlag||this.textAnimator.lettersChangedFlag)){var t,e;this._sizeChanged=!0;var r,i,s=this.textAnimator.renderedLetters,a=this.textProperty.currentData.l;for(e=a.length,t=0;t<e;t+=1)a[t].n||(r=s[t],i=this.textSpans[t],r._mdf.m&&i.setAttribute("transform",r.m),r._mdf.o&&i.setAttribute("opacity",r.o),r._mdf.sw&&i.setAttribute("stroke-width",r.sw),r._mdf.sc&&i.setAttribute("stroke",r.sc),r._mdf.fc&&i.setAttribute("fill",r.fc))}},extendPrototype([BaseElement,TransformElement,SVGBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableDOMElement],SVGShapeElement),SVGShapeElement.prototype.initSecondaryElement=function(){},SVGShapeElement.prototype.identityMatrix=new Matrix,SVGShapeElement.prototype.buildExpressionInterface=function(){},SVGShapeElement.prototype.createContent=function(){this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement,0,[],!0),this.filterUniqueShapes()},SVGShapeElement.prototype.filterUniqueShapes=function(){var t,e,r,i,s=this.shapes.length,a=this.stylesList.length,n=[],o=!1;for(r=0;r<a;r+=1){for(i=this.stylesList[r],o=!1,t=n.length=0;t<s;t+=1)-1!==(e=this.shapes[t]).styles.indexOf(i)&&(n.push(e),o=e._isAnimated||o);1<n.length&&o&&this.setShapesAsAnimated(n)}},SVGShapeElement.prototype.setShapesAsAnimated=function(t){var e,r=t.length;for(e=0;e<r;e+=1)t[e].setAsAnimated()},SVGShapeElement.prototype.createStyleElement=function(t,e){var r,i=new SVGStyleData(t,e),s=i.pElem;if("st"===t.ty)r=new SVGStrokeStyleData(this,t,i);else if("fl"===t.ty)r=new SVGFillStyleData(this,t,i);else if("gf"===t.ty||"gs"===t.ty){r=new("gf"===t.ty?SVGGradientFillStyleData:SVGGradientStrokeStyleData)(this,t,i),this.globalData.defs.appendChild(r.gf),r.maskId&&(this.globalData.defs.appendChild(r.ms),this.globalData.defs.appendChild(r.of),s.setAttribute("mask","url("+locationHref+"#"+r.maskId+")"))}return"st"!==t.ty&&"gs"!==t.ty||(s.setAttribute("stroke-linecap",this.lcEnum[t.lc]||"round"),s.setAttribute("stroke-linejoin",this.ljEnum[t.lj]||"round"),s.setAttribute("fill-opacity","0"),1===t.lj&&s.setAttribute("stroke-miterlimit",t.ml)),2===t.r&&s.setAttribute("fill-rule","evenodd"),t.ln&&s.setAttribute("id",t.ln),t.cl&&s.setAttribute("class",t.cl),t.bm&&(s.style["mix-blend-mode"]=getBlendMode(t.bm)),this.stylesList.push(i),this.addToAnimatedContents(t,r),r},SVGShapeElement.prototype.createGroupElement=function(t){var e=new ShapeGroupData;return t.ln&&e.gr.setAttribute("id",t.ln),t.cl&&e.gr.setAttribute("class",t.cl),t.bm&&(e.gr.style["mix-blend-mode"]=getBlendMode(t.bm)),e},SVGShapeElement.prototype.createTransformElement=function(t,e){var r=TransformPropertyFactory.getTransformProperty(this,t,this),i=new SVGTransformData(r,r.o,e);return this.addToAnimatedContents(t,i),i},SVGShapeElement.prototype.createShapeElement=function(t,e,r){var i=4;"rc"===t.ty?i=5:"el"===t.ty?i=6:"sr"===t.ty&&(i=7);var s=new SVGShapeData(e,r,ShapePropertyFactory.getShapeProp(this,t,i,this));return this.shapes.push(s),this.addShapeToModifiers(s),this.addToAnimatedContents(t,s),s},SVGShapeElement.prototype.addToAnimatedContents=function(t,e){for(var r=0,i=this.animatedContents.length;r<i;){if(this.animatedContents[r].element===e)return;r+=1}this.animatedContents.push({fn:SVGElementsRenderer.createRenderFunction(t),element:e,data:t})},SVGShapeElement.prototype.setElementStyles=function(t){var e,r=t.styles,i=this.stylesList.length;for(e=0;e<i;e+=1)this.stylesList[e].closed||r.push(this.stylesList[e])},SVGShapeElement.prototype.reloadShapes=function(){this._isFirstFrame=!0;var t,e=this.itemsData.length;for(t=0;t<e;t+=1)this.prevViewData[t]=this.itemsData[t];for(this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement,0,[],!0),this.filterUniqueShapes(),e=this.dynamicProperties.length,t=0;t<e;t+=1)this.dynamicProperties[t].getValue();this.renderModifiers()},SVGShapeElement.prototype.searchShapes=function(t,e,r,i,s,a,n){var o,h,l,p,m,f,c=[].concat(a),d=t.length-1,u=[],y=[];for(o=d;0<=o;o-=1){if((f=this.searchProcessedElement(t[o]))?e[o]=r[f-1]:t[o]._render=n,"fl"==t[o].ty||"st"==t[o].ty||"gf"==t[o].ty||"gs"==t[o].ty)f?e[o].style.closed=!1:e[o]=this.createStyleElement(t[o],s),t[o]._render&&i.appendChild(e[o].style.pElem),u.push(e[o].style);else if("gr"==t[o].ty){if(f)for(l=e[o].it.length,h=0;h<l;h+=1)e[o].prevViewData[h]=e[o].it[h];else e[o]=this.createGroupElement(t[o]);this.searchShapes(t[o].it,e[o].it,e[o].prevViewData,e[o].gr,s+1,c,n),t[o]._render&&i.appendChild(e[o].gr)}else"tr"==t[o].ty?(f||(e[o]=this.createTransformElement(t[o],i)),p=e[o].transform,c.push(p)):"sh"==t[o].ty||"rc"==t[o].ty||"el"==t[o].ty||"sr"==t[o].ty?(f||(e[o]=this.createShapeElement(t[o],c,s)),this.setElementStyles(e[o])):"tm"==t[o].ty||"rd"==t[o].ty||"ms"==t[o].ty?(f?(m=e[o]).closed=!1:((m=ShapeModifiers.getModifier(t[o].ty)).init(this,t[o]),e[o]=m,this.shapeModifiers.push(m)),y.push(m)):"rp"==t[o].ty&&(f?(m=e[o]).closed=!0:(m=ShapeModifiers.getModifier(t[o].ty),(e[o]=m).init(this,t,o,e),this.shapeModifiers.push(m),n=!1),y.push(m));this.addProcessedElement(t[o],o+1)}for(d=u.length,o=0;o<d;o+=1)u[o].closed=!0;for(d=y.length,o=0;o<d;o+=1)y[o].closed=!0},SVGShapeElement.prototype.renderInnerContent=function(){this.renderModifiers();var t,e=this.stylesList.length;for(t=0;t<e;t+=1)this.stylesList[t].reset();for(this.renderShape(),t=0;t<e;t+=1)(this.stylesList[t]._mdf||this._isFirstFrame)&&(this.stylesList[t].msElem&&(this.stylesList[t].msElem.setAttribute("d",this.stylesList[t].d),this.stylesList[t].d="M0 0"+this.stylesList[t].d),this.stylesList[t].pElem.setAttribute("d",this.stylesList[t].d||"M0 0"))},SVGShapeElement.prototype.renderShape=function(){var t,e,r=this.animatedContents.length;for(t=0;t<r;t+=1)e=this.animatedContents[t],(this._isFirstFrame||e.element._isAnimated)&&!0!==e.data&&e.fn(e.data,e.element,this._isFirstFrame)},SVGShapeElement.prototype.destroy=function(){this.destroyBaseElement(),this.shapesData=null,this.itemsData=null},SVGTintFilter.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e=this.filterManager.effectElements[0].p.v,r=this.filterManager.effectElements[1].p.v,i=this.filterManager.effectElements[2].p.v/100;this.matrixFilter.setAttribute("values",r[0]-e[0]+" 0 0 0 "+e[0]+" "+(r[1]-e[1])+" 0 0 0 "+e[1]+" "+(r[2]-e[2])+" 0 0 0 "+e[2]+" 0 0 0 "+i+" 0")}},SVGFillFilter.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e=this.filterManager.effectElements[2].p.v,r=this.filterManager.effectElements[6].p.v;this.matrixFilter.setAttribute("values","0 0 0 0 "+e[0]+" 0 0 0 0 "+e[1]+" 0 0 0 0 "+e[2]+" 0 0 0 "+r+" 0")}},SVGGaussianBlurEffect.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e=.3*this.filterManager.effectElements[0].p.v,r=this.filterManager.effectElements[1].p.v,i=3==r?0:e,s=2==r?0:e;this.feGaussianBlur.setAttribute("stdDeviation",i+" "+s);var a=1==this.filterManager.effectElements[2].p.v?"wrap":"duplicate";this.feGaussianBlur.setAttribute("edgeMode",a)}},SVGStrokeEffect.prototype.initialize=function(){var t,e,r,i,s=this.elem.layerElement.children||this.elem.layerElement.childNodes;for(1===this.filterManager.effectElements[1].p.v?(i=this.elem.maskManager.masksProperties.length,r=0):i=(r=this.filterManager.effectElements[0].p.v-1)+1,(e=createNS("g")).setAttribute("fill","none"),e.setAttribute("stroke-linecap","round"),e.setAttribute("stroke-dashoffset",1);r<i;r+=1)t=createNS("path"),e.appendChild(t),this.paths.push({p:t,m:r});if(3===this.filterManager.effectElements[10].p.v){var a=createNS("mask"),n=createElementID();a.setAttribute("id",n),a.setAttribute("mask-type","alpha"),a.appendChild(e),this.elem.globalData.defs.appendChild(a);var o=createNS("g");for(o.setAttribute("mask","url("+locationHref+"#"+n+")");s[0];)o.appendChild(s[0]);this.elem.layerElement.appendChild(o),this.masker=a,e.setAttribute("stroke","#fff")}else if(1===this.filterManager.effectElements[10].p.v||2===this.filterManager.effectElements[10].p.v){if(2===this.filterManager.effectElements[10].p.v)for(s=this.elem.layerElement.children||this.elem.layerElement.childNodes;s.length;)this.elem.layerElement.removeChild(s[0]);this.elem.layerElement.appendChild(e),this.elem.layerElement.removeAttribute("mask"),e.setAttribute("stroke","#fff")}this.initialized=!0,this.pathMasker=e},SVGStrokeEffect.prototype.renderFrame=function(t){this.initialized||this.initialize();var e,r,i,s=this.paths.length;for(e=0;e<s;e+=1)if(-1!==this.paths[e].m&&(r=this.elem.maskManager.viewData[this.paths[e].m],i=this.paths[e].p,(t||this.filterManager._mdf||r.prop._mdf)&&i.setAttribute("d",r.lastPath),t||this.filterManager.effectElements[9].p._mdf||this.filterManager.effectElements[4].p._mdf||this.filterManager.effectElements[7].p._mdf||this.filterManager.effectElements[8].p._mdf||r.prop._mdf)){var a;if(0!==this.filterManager.effectElements[7].p.v||100!==this.filterManager.effectElements[8].p.v){var n=Math.min(this.filterManager.effectElements[7].p.v,this.filterManager.effectElements[8].p.v)/100,o=Math.max(this.filterManager.effectElements[7].p.v,this.filterManager.effectElements[8].p.v)/100,h=i.getTotalLength();a="0 0 0 "+h*n+" ";var l,p=h*(o-n),m=1+2*this.filterManager.effectElements[4].p.v*this.filterManager.effectElements[9].p.v/100,f=Math.floor(p/m);for(l=0;l<f;l+=1)a+="1 "+2*this.filterManager.effectElements[4].p.v*this.filterManager.effectElements[9].p.v/100+" ";a+="0 "+10*h+" 0 0"}else a="1 "+2*this.filterManager.effectElements[4].p.v*this.filterManager.effectElements[9].p.v/100;i.setAttribute("stroke-dasharray",a)}if((t||this.filterManager.effectElements[4].p._mdf)&&this.pathMasker.setAttribute("stroke-width",2*this.filterManager.effectElements[4].p.v),(t||this.filterManager.effectElements[6].p._mdf)&&this.pathMasker.setAttribute("opacity",this.filterManager.effectElements[6].p.v),(1===this.filterManager.effectElements[10].p.v||2===this.filterManager.effectElements[10].p.v)&&(t||this.filterManager.effectElements[3].p._mdf)){var c=this.filterManager.effectElements[3].p.v;this.pathMasker.setAttribute("stroke","rgb("+bm_floor(255*c[0])+","+bm_floor(255*c[1])+","+bm_floor(255*c[2])+")")}},SVGTritoneFilter.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e=this.filterManager.effectElements[0].p.v,r=this.filterManager.effectElements[1].p.v,i=this.filterManager.effectElements[2].p.v,s=i[0]+" "+r[0]+" "+e[0],a=i[1]+" "+r[1]+" "+e[1],n=i[2]+" "+r[2]+" "+e[2];this.feFuncR.setAttribute("tableValues",s),this.feFuncG.setAttribute("tableValues",a),this.feFuncB.setAttribute("tableValues",n)}},SVGProLevelsFilter.prototype.createFeFunc=function(t,e){var r=createNS(t);return r.setAttribute("type","table"),e.appendChild(r),r},SVGProLevelsFilter.prototype.getTableValue=function(t,e,r,i,s){for(var a,n,o=0,h=Math.min(t,e),l=Math.max(t,e),p=Array.call(null,{length:256}),m=0,f=s-i,c=e-t;o<=256;)n=(a=o/256)<=h?c<0?s:i:l<=a?c<0?i:s:i+f*Math.pow((a-t)/c,1/r),p[m++]=n,o+=256/255;return p.join(" ")},SVGProLevelsFilter.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){var e,r=this.filterManager.effectElements;this.feFuncRComposed&&(t||r[3].p._mdf||r[4].p._mdf||r[5].p._mdf||r[6].p._mdf||r[7].p._mdf)&&(e=this.getTableValue(r[3].p.v,r[4].p.v,r[5].p.v,r[6].p.v,r[7].p.v),this.feFuncRComposed.setAttribute("tableValues",e),this.feFuncGComposed.setAttribute("tableValues",e),this.feFuncBComposed.setAttribute("tableValues",e)),this.feFuncR&&(t||r[10].p._mdf||r[11].p._mdf||r[12].p._mdf||r[13].p._mdf||r[14].p._mdf)&&(e=this.getTableValue(r[10].p.v,r[11].p.v,r[12].p.v,r[13].p.v,r[14].p.v),this.feFuncR.setAttribute("tableValues",e)),this.feFuncG&&(t||r[17].p._mdf||r[18].p._mdf||r[19].p._mdf||r[20].p._mdf||r[21].p._mdf)&&(e=this.getTableValue(r[17].p.v,r[18].p.v,r[19].p.v,r[20].p.v,r[21].p.v),this.feFuncG.setAttribute("tableValues",e)),this.feFuncB&&(t||r[24].p._mdf||r[25].p._mdf||r[26].p._mdf||r[27].p._mdf||r[28].p._mdf)&&(e=this.getTableValue(r[24].p.v,r[25].p.v,r[26].p.v,r[27].p.v,r[28].p.v),this.feFuncB.setAttribute("tableValues",e)),this.feFuncA&&(t||r[31].p._mdf||r[32].p._mdf||r[33].p._mdf||r[34].p._mdf||r[35].p._mdf)&&(e=this.getTableValue(r[31].p.v,r[32].p.v,r[33].p.v,r[34].p.v,r[35].p.v),this.feFuncA.setAttribute("tableValues",e))}},SVGDropShadowEffect.prototype.renderFrame=function(t){if(t||this.filterManager._mdf){if((t||this.filterManager.effectElements[4].p._mdf)&&this.feGaussianBlur.setAttribute("stdDeviation",this.filterManager.effectElements[4].p.v/4),t||this.filterManager.effectElements[0].p._mdf){var e=this.filterManager.effectElements[0].p.v;this.feFlood.setAttribute("flood-color",rgbToHex(Math.round(255*e[0]),Math.round(255*e[1]),Math.round(255*e[2])))}if((t||this.filterManager.effectElements[1].p._mdf)&&this.feFlood.setAttribute("flood-opacity",this.filterManager.effectElements[1].p.v/255),t||this.filterManager.effectElements[2].p._mdf||this.filterManager.effectElements[3].p._mdf){var r=this.filterManager.effectElements[3].p.v,i=(this.filterManager.effectElements[2].p.v-90)*degToRads,s=r*Math.cos(i),a=r*Math.sin(i);this.feOffset.setAttribute("dx",s),this.feOffset.setAttribute("dy",a)}}};var _svgMatteSymbols=[];function SVGMatte3Effect(t,e,r){this.initialized=!1,this.filterManager=e,this.filterElem=t,(this.elem=r).matteElement=createNS("g"),r.matteElement.appendChild(r.layerElement),r.matteElement.appendChild(r.transformedElement),r.baseElement=r.matteElement}function SVGEffects(t){var e,r,i=t.data.ef?t.data.ef.length:0,s=createElementID(),a=filtersFactory.createFilter(s),n=0;for(this.filters=[],e=0;e<i;e+=1)r=null,20===t.data.ef[e].ty?(n+=1,r=new SVGTintFilter(a,t.effectsManager.effectElements[e])):21===t.data.ef[e].ty?(n+=1,r=new SVGFillFilter(a,t.effectsManager.effectElements[e])):22===t.data.ef[e].ty?r=new SVGStrokeEffect(t,t.effectsManager.effectElements[e]):23===t.data.ef[e].ty?(n+=1,r=new SVGTritoneFilter(a,t.effectsManager.effectElements[e])):24===t.data.ef[e].ty?(n+=1,r=new SVGProLevelsFilter(a,t.effectsManager.effectElements[e])):25===t.data.ef[e].ty?(n+=1,r=new SVGDropShadowEffect(a,t.effectsManager.effectElements[e])):28===t.data.ef[e].ty?r=new SVGMatte3Effect(a,t.effectsManager.effectElements[e],t):29===t.data.ef[e].ty&&(n+=1,r=new SVGGaussianBlurEffect(a,t.effectsManager.effectElements[e])),r&&this.filters.push(r);n&&(t.globalData.defs.appendChild(a),t.layerElement.setAttribute("filter","url("+locationHref+"#"+s+")")),this.filters.length&&t.addRenderableComponent(this)}function CVContextData(){this.saved=[],this.cArrPos=0,this.cTr=new Matrix,this.cO=1;var t;for(this.savedOp=createTypedArray("float32",15),t=0;t<15;t+=1)this.saved[t]=createTypedArray("float32",16);this._length=15}function CVBaseElement(){}function CVImageElement(t,e,r){this.assetData=e.getAssetData(t.refId),this.img=e.imageLoader.getImage(this.assetData),this.initElement(t,e,r)}function CVCompElement(t,e,r){this.completeLayers=!1,this.layers=t.layers,this.pendingElements=[],this.elements=createSizedArray(this.layers.length),this.initElement(t,e,r),this.tm=t.tm?PropertyFactory.getProp(this,t.tm,0,e.frameRate,this):{_placeholder:!0}}function CVMaskElement(t,e){this.data=t,this.element=e,this.masksProperties=this.data.masksProperties||[],this.viewData=createSizedArray(this.masksProperties.length);var r,i=this.masksProperties.length,s=!1;for(r=0;r<i;r++)"n"!==this.masksProperties[r].mode&&(s=!0),this.viewData[r]=ShapePropertyFactory.getShapeProp(this.element,this.masksProperties[r],3);(this.hasMasks=s)&&this.element.addRenderableComponent(this)}function CVShapeElement(t,e,r){this.shapes=[],this.shapesData=t.shapes,this.stylesList=[],this.itemsData=[],this.prevViewData=[],this.shapeModifiers=[],this.processedElements=[],this.transformsManager=new ShapeTransformManager,this.initElement(t,e,r)}function CVSolidElement(t,e,r){this.initElement(t,e,r)}function CVTextElement(t,e,r){this.textSpans=[],this.yOffset=0,this.fillColorAnim=!1,this.strokeColorAnim=!1,this.strokeWidthAnim=!1,this.stroke=!1,this.fill=!1,this.justifyOffset=0,this.currentRender=null,this.renderType="canvas",this.values={fill:"rgba(0,0,0,0)",stroke:"rgba(0,0,0,0)",sWidth:0,fValue:""},this.initElement(t,e,r)}function CVEffects(){}function HBaseElement(t,e,r){}function HSolidElement(t,e,r){this.initElement(t,e,r)}function HCompElement(t,e,r){this.layers=t.layers,this.supports3d=!t.hasMask,this.completeLayers=!1,this.pendingElements=[],this.elements=this.layers?createSizedArray(this.layers.length):[],this.initElement(t,e,r),this.tm=t.tm?PropertyFactory.getProp(this,t.tm,0,e.frameRate,this):{_placeholder:!0}}function HShapeElement(t,e,r){this.shapes=[],this.shapesData=t.shapes,this.stylesList=[],this.shapeModifiers=[],this.itemsData=[],this.processedElements=[],this.animatedContents=[],this.shapesContainer=createNS("g"),this.initElement(t,e,r),this.prevViewData=[],this.currentBBox={x:999999,y:-999999,h:0,w:0}}function HTextElement(t,e,r){this.textSpans=[],this.textPaths=[],this.currentBBox={x:999999,y:-999999,h:0,w:0},this.renderType="svg",this.isMasked=!1,this.initElement(t,e,r)}function HImageElement(t,e,r){this.assetData=e.getAssetData(t.refId),this.initElement(t,e,r)}function HCameraElement(t,e,r){this.initFrame(),this.initBaseData(t,e,r),this.initHierarchy();var i=PropertyFactory.getProp;if(this.pe=i(this,t.pe,0,0,this),t.ks.p.s?(this.px=i(this,t.ks.p.x,1,0,this),this.py=i(this,t.ks.p.y,1,0,this),this.pz=i(this,t.ks.p.z,1,0,this)):this.p=i(this,t.ks.p,1,0,this),t.ks.a&&(this.a=i(this,t.ks.a,1,0,this)),t.ks.or.k.length&&t.ks.or.k[0].to){var s,a=t.ks.or.k.length;for(s=0;s<a;s+=1)t.ks.or.k[s].to=null,t.ks.or.k[s].ti=null}this.or=i(this,t.ks.or,1,degToRads,this),this.or.sh=!0,this.rx=i(this,t.ks.rx,0,degToRads,this),this.ry=i(this,t.ks.ry,0,degToRads,this),this.rz=i(this,t.ks.rz,0,degToRads,this),this.mat=new Matrix,this._prevMat=new Matrix,this._isFirstFrame=!0,this.finalTransform={mProp:this}}function HEffects(){}SVGMatte3Effect.prototype.findSymbol=function(t){for(var e=0,r=_svgMatteSymbols.length;e<r;){if(_svgMatteSymbols[e]===t)return _svgMatteSymbols[e];e+=1}return null},SVGMatte3Effect.prototype.replaceInParent=function(t,e){var r=t.layerElement.parentNode;if(r){for(var i,s=r.children,a=0,n=s.length;a<n&&s[a]!==t.layerElement;)a+=1;a<=n-2&&(i=s[a+1]);var o=createNS("use");o.setAttribute("href","#"+e),i?r.insertBefore(o,i):r.appendChild(o)}},SVGMatte3Effect.prototype.setElementAsMask=function(t,e){if(!this.findSymbol(e)){var r=createElementID(),i=createNS("mask");i.setAttribute("id",e.layerId),i.setAttribute("mask-type","alpha"),_svgMatteSymbols.push(e);var s=t.globalData.defs;s.appendChild(i);var a=createNS("symbol");a.setAttribute("id",r),this.replaceInParent(e,r),a.appendChild(e.layerElement),s.appendChild(a);var n=createNS("use");n.setAttribute("href","#"+r),i.appendChild(n),e.data.hd=!1,e.show()}t.setMatte(e.layerId)},SVGMatte3Effect.prototype.initialize=function(){for(var t=this.filterManager.effectElements[0].p.v,e=this.elem.comp.elements,r=0,i=e.length;r<i;)e[r]&&e[r].data.ind===t&&this.setElementAsMask(this.elem,e[r]),r+=1;this.initialized=!0},SVGMatte3Effect.prototype.renderFrame=function(){this.initialized||this.initialize()},SVGEffects.prototype.renderFrame=function(t){var e,r=this.filters.length;for(e=0;e<r;e+=1)this.filters[e].renderFrame(t)},CVContextData.prototype.duplicate=function(){var t=2*this._length,e=this.savedOp;this.savedOp=createTypedArray("float32",t),this.savedOp.set(e);var r=0;for(r=this._length;r<t;r+=1)this.saved[r]=createTypedArray("float32",16);this._length=t},CVContextData.prototype.reset=function(){this.cArrPos=0,this.cTr.reset(),this.cO=1},CVBaseElement.prototype={createElements:function(){},initRendererElement:function(){},createContainerElements:function(){this.canvasContext=this.globalData.canvasContext,this.renderableEffectsManager=new CVEffects(this)},createContent:function(){},setBlendMode:function(){var t=this.globalData;if(t.blendMode!==this.data.bm){t.blendMode=this.data.bm;var e=getBlendMode(this.data.bm);t.canvasContext.globalCompositeOperation=e}},createRenderableComponents:function(){this.maskManager=new CVMaskElement(this.data,this)},hideElement:function(){this.hidden||this.isInRange&&!this.isTransparent||(this.hidden=!0)},showElement:function(){this.isInRange&&!this.isTransparent&&(this.hidden=!1,this._isFirstFrame=!0,this.maskManager._isFirstFrame=!0)},renderFrame:function(){if(!this.hidden&&!this.data.hd){this.renderTransform(),this.renderRenderable(),this.setBlendMode();var t=0===this.data.ty;this.globalData.renderer.save(t),this.globalData.renderer.ctxTransform(this.finalTransform.mat.props),this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v),this.renderInnerContent(),this.globalData.renderer.restore(t),this.maskManager.hasMasks&&this.globalData.renderer.restore(!0),this._isFirstFrame&&(this._isFirstFrame=!1)}},destroy:function(){this.canvasContext=null,this.data=null,this.globalData=null,this.maskManager.destroy()},mHelper:new Matrix},CVBaseElement.prototype.hide=CVBaseElement.prototype.hideElement,CVBaseElement.prototype.show=CVBaseElement.prototype.showElement,extendPrototype([BaseElement,TransformElement,CVBaseElement,HierarchyElement,FrameElement,RenderableElement],CVImageElement),CVImageElement.prototype.initElement=SVGShapeElement.prototype.initElement,CVImageElement.prototype.prepareFrame=IImageElement.prototype.prepareFrame,CVImageElement.prototype.createContent=function(){if(this.img.width&&(this.assetData.w!==this.img.width||this.assetData.h!==this.img.height)){var t=createTag("canvas");t.width=this.assetData.w,t.height=this.assetData.h;var e,r,i=t.getContext("2d"),s=this.img.width,a=this.img.height,n=s/a,o=this.assetData.w/this.assetData.h,h=this.assetData.pr||this.globalData.renderConfig.imagePreserveAspectRatio;o<n&&"xMidYMid slice"===h||n<o&&"xMidYMid slice"!==h?e=(r=a)*o:r=(e=s)/o,i.drawImage(this.img,(s-e)/2,(a-r)/2,e,r,0,0,this.assetData.w,this.assetData.h),this.img=t}},CVImageElement.prototype.renderInnerContent=function(t){this.canvasContext.drawImage(this.img,0,0)},CVImageElement.prototype.destroy=function(){this.img=null},extendPrototype([CanvasRenderer,ICompElement,CVBaseElement],CVCompElement),CVCompElement.prototype.renderInnerContent=function(){var t,e=this.canvasContext;for(e.beginPath(),e.moveTo(0,0),e.lineTo(this.data.w,0),e.lineTo(this.data.w,this.data.h),e.lineTo(0,this.data.h),e.lineTo(0,0),e.clip(),t=this.layers.length-1;0<=t;t-=1)(this.completeLayers||this.elements[t])&&this.elements[t].renderFrame()},CVCompElement.prototype.destroy=function(){var t;for(t=this.layers.length-1;0<=t;t-=1)this.elements[t]&&this.elements[t].destroy();this.layers=null,this.elements=null},CVMaskElement.prototype.renderFrame=function(){if(this.hasMasks){var t,e,r,i,s=this.element.finalTransform.mat,a=this.element.canvasContext,n=this.masksProperties.length;for(a.beginPath(),t=0;t<n;t++)if("n"!==this.masksProperties[t].mode){this.masksProperties[t].inv&&(a.moveTo(0,0),a.lineTo(this.element.globalData.compSize.w,0),a.lineTo(this.element.globalData.compSize.w,this.element.globalData.compSize.h),a.lineTo(0,this.element.globalData.compSize.h),a.lineTo(0,0)),i=this.viewData[t].v,e=s.applyToPointArray(i.v[0][0],i.v[0][1],0),a.moveTo(e[0],e[1]);var o,h=i._length;for(o=1;o<h;o++)r=s.applyToTriplePoints(i.o[o-1],i.i[o],i.v[o]),a.bezierCurveTo(r[0],r[1],r[2],r[3],r[4],r[5]);r=s.applyToTriplePoints(i.o[o-1],i.i[0],i.v[0]),a.bezierCurveTo(r[0],r[1],r[2],r[3],r[4],r[5])}this.element.globalData.renderer.save(!0),a.clip()}},CVMaskElement.prototype.getMaskProperty=MaskElement.prototype.getMaskProperty,CVMaskElement.prototype.destroy=function(){this.element=null},extendPrototype([BaseElement,TransformElement,CVBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableElement],CVShapeElement),CVShapeElement.prototype.initElement=RenderableDOMElement.prototype.initElement,CVShapeElement.prototype.transformHelper={opacity:1,_opMdf:!1},CVShapeElement.prototype.dashResetter=[],CVShapeElement.prototype.createContent=function(){this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,!0,[])},CVShapeElement.prototype.createStyleElement=function(t,e){var r={data:t,type:t.ty,preTransforms:this.transformsManager.addTransformSequence(e),transforms:[],elements:[],closed:!0===t.hd},i={};if("fl"==t.ty||"st"==t.ty?(i.c=PropertyFactory.getProp(this,t.c,1,255,this),i.c.k||(r.co="rgb("+bm_floor(i.c.v[0])+","+bm_floor(i.c.v[1])+","+bm_floor(i.c.v[2])+")")):"gf"!==t.ty&&"gs"!==t.ty||(i.s=PropertyFactory.getProp(this,t.s,1,null,this),i.e=PropertyFactory.getProp(this,t.e,1,null,this),i.h=PropertyFactory.getProp(this,t.h||{k:0},0,.01,this),i.a=PropertyFactory.getProp(this,t.a||{k:0},0,degToRads,this),i.g=new GradientProperty(this,t.g,this)),i.o=PropertyFactory.getProp(this,t.o,0,.01,this),"st"==t.ty||"gs"==t.ty){if(r.lc=this.lcEnum[t.lc]||"round",r.lj=this.ljEnum[t.lj]||"round",1==t.lj&&(r.ml=t.ml),i.w=PropertyFactory.getProp(this,t.w,0,null,this),i.w.k||(r.wi=i.w.v),t.d){var s=new DashProperty(this,t.d,"canvas",this);i.d=s,i.d.k||(r.da=i.d.dashArray,r.do=i.d.dashoffset[0])}}else r.r=2===t.r?"evenodd":"nonzero";return this.stylesList.push(r),i.style=r,i},CVShapeElement.prototype.createGroupElement=function(t){return{it:[],prevViewData:[]}},CVShapeElement.prototype.createTransformElement=function(t){return{transform:{opacity:1,_opMdf:!1,key:this.transformsManager.getNewKey(),op:PropertyFactory.getProp(this,t.o,0,.01,this),mProps:TransformPropertyFactory.getTransformProperty(this,t,this)}}},CVShapeElement.prototype.createShapeElement=function(t){var e=new CVShapeData(this,t,this.stylesList,this.transformsManager);return this.shapes.push(e),this.addShapeToModifiers(e),e},CVShapeElement.prototype.reloadShapes=function(){this._isFirstFrame=!0;var t,e=this.itemsData.length;for(t=0;t<e;t+=1)this.prevViewData[t]=this.itemsData[t];for(this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,!0,[]),e=this.dynamicProperties.length,t=0;t<e;t+=1)this.dynamicProperties[t].getValue();this.renderModifiers(),this.transformsManager.processSequences(this._isFirstFrame)},CVShapeElement.prototype.addTransformToStyleList=function(t){var e,r=this.stylesList.length;for(e=0;e<r;e+=1)this.stylesList[e].closed||this.stylesList[e].transforms.push(t)},CVShapeElement.prototype.removeTransformFromStyleList=function(){var t,e=this.stylesList.length;for(t=0;t<e;t+=1)this.stylesList[t].closed||this.stylesList[t].transforms.pop()},CVShapeElement.prototype.closeStyles=function(t){var e,r=t.length;for(e=0;e<r;e+=1)t[e].closed=!0},CVShapeElement.prototype.searchShapes=function(t,e,r,i,s){var a,n,o,h,l,p,m=t.length-1,f=[],c=[],d=[].concat(s);for(a=m;0<=a;a-=1){if((h=this.searchProcessedElement(t[a]))?e[a]=r[h-1]:t[a]._shouldRender=i,"fl"==t[a].ty||"st"==t[a].ty||"gf"==t[a].ty||"gs"==t[a].ty)h?e[a].style.closed=!1:e[a]=this.createStyleElement(t[a],d),f.push(e[a].style);else if("gr"==t[a].ty){if(h)for(o=e[a].it.length,n=0;n<o;n+=1)e[a].prevViewData[n]=e[a].it[n];else e[a]=this.createGroupElement(t[a]);this.searchShapes(t[a].it,e[a].it,e[a].prevViewData,i,d)}else"tr"==t[a].ty?(h||(p=this.createTransformElement(t[a]),e[a]=p),d.push(e[a]),this.addTransformToStyleList(e[a])):"sh"==t[a].ty||"rc"==t[a].ty||"el"==t[a].ty||"sr"==t[a].ty?h||(e[a]=this.createShapeElement(t[a])):"tm"==t[a].ty||"rd"==t[a].ty?(h?(l=e[a]).closed=!1:((l=ShapeModifiers.getModifier(t[a].ty)).init(this,t[a]),e[a]=l,this.shapeModifiers.push(l)),c.push(l)):"rp"==t[a].ty&&(h?(l=e[a]).closed=!0:(l=ShapeModifiers.getModifier(t[a].ty),(e[a]=l).init(this,t,a,e),this.shapeModifiers.push(l),i=!1),c.push(l));this.addProcessedElement(t[a],a+1)}for(this.removeTransformFromStyleList(),this.closeStyles(f),m=c.length,a=0;a<m;a+=1)c[a].closed=!0},CVShapeElement.prototype.renderInnerContent=function(){this.transformHelper.opacity=1,this.transformHelper._opMdf=!1,this.renderModifiers(),this.transformsManager.processSequences(this._isFirstFrame),this.renderShape(this.transformHelper,this.shapesData,this.itemsData,!0)},CVShapeElement.prototype.renderShapeTransform=function(t,e){(t._opMdf||e.op._mdf||this._isFirstFrame)&&(e.opacity=t.opacity,e.opacity*=e.op.v,e._opMdf=!0)},CVShapeElement.prototype.drawLayer=function(){var t,e,r,i,s,a,n,o,h,l=this.stylesList.length,p=this.globalData.renderer,m=this.globalData.canvasContext;for(t=0;t<l;t+=1)if(("st"!==(o=(h=this.stylesList[t]).type)&&"gs"!==o||0!==h.wi)&&h.data._shouldRender&&0!==h.coOp&&0!==this.globalData.currentGlobalAlpha){for(p.save(),a=h.elements,"st"===o||"gs"===o?(m.strokeStyle="st"===o?h.co:h.grd,m.lineWidth=h.wi,m.lineCap=h.lc,m.lineJoin=h.lj,m.miterLimit=h.ml||0):m.fillStyle="fl"===o?h.co:h.grd,p.ctxOpacity(h.coOp),"st"!==o&&"gs"!==o&&m.beginPath(),p.ctxTransform(h.preTransforms.finalTransform.props),r=a.length,e=0;e<r;e+=1){for("st"!==o&&"gs"!==o||(m.beginPath(),h.da&&(m.setLineDash(h.da),m.lineDashOffset=h.do)),s=(n=a[e].trNodes).length,i=0;i<s;i+=1)"m"==n[i].t?m.moveTo(n[i].p[0],n[i].p[1]):"c"==n[i].t?m.bezierCurveTo(n[i].pts[0],n[i].pts[1],n[i].pts[2],n[i].pts[3],n[i].pts[4],n[i].pts[5]):m.closePath();"st"!==o&&"gs"!==o||(m.stroke(),h.da&&m.setLineDash(this.dashResetter))}"st"!==o&&"gs"!==o&&m.fill(h.r),p.restore()}},CVShapeElement.prototype.renderShape=function(t,e,r,i){var s,a;for(a=t,s=e.length-1;0<=s;s-=1)"tr"==e[s].ty?(a=r[s].transform,this.renderShapeTransform(t,a)):"sh"==e[s].ty||"el"==e[s].ty||"rc"==e[s].ty||"sr"==e[s].ty?this.renderPath(e[s],r[s]):"fl"==e[s].ty?this.renderFill(e[s],r[s],a):"st"==e[s].ty?this.renderStroke(e[s],r[s],a):"gf"==e[s].ty||"gs"==e[s].ty?this.renderGradientFill(e[s],r[s],a):"gr"==e[s].ty?this.renderShape(a,e[s].it,r[s].it):e[s].ty;i&&this.drawLayer()},CVShapeElement.prototype.renderStyledShape=function(t,e){if(this._isFirstFrame||e._mdf||t.transforms._mdf){var r,i,s,a=t.trNodes,n=e.paths,o=n._length;a.length=0;var h=t.transforms.finalTransform;for(s=0;s<o;s+=1){var l=n.shapes[s];if(l&&l.v){for(i=l._length,r=1;r<i;r+=1)1===r&&a.push({t:"m",p:h.applyToPointArray(l.v[0][0],l.v[0][1],0)}),a.push({t:"c",pts:h.applyToTriplePoints(l.o[r-1],l.i[r],l.v[r])});1===i&&a.push({t:"m",p:h.applyToPointArray(l.v[0][0],l.v[0][1],0)}),l.c&&i&&(a.push({t:"c",pts:h.applyToTriplePoints(l.o[r-1],l.i[0],l.v[0])}),a.push({t:"z"}))}}t.trNodes=a}},CVShapeElement.prototype.renderPath=function(t,e){if(!0!==t.hd&&t._shouldRender){var r,i=e.styledShapes.length;for(r=0;r<i;r+=1)this.renderStyledShape(e.styledShapes[r],e.sh)}},CVShapeElement.prototype.renderFill=function(t,e,r){var i=e.style;(e.c._mdf||this._isFirstFrame)&&(i.co="rgb("+bm_floor(e.c.v[0])+","+bm_floor(e.c.v[1])+","+bm_floor(e.c.v[2])+")"),(e.o._mdf||r._opMdf||this._isFirstFrame)&&(i.coOp=e.o.v*r.opacity)},CVShapeElement.prototype.renderGradientFill=function(t,e,r){var i=e.style;if(!i.grd||e.g._mdf||e.s._mdf||e.e._mdf||1!==t.t&&(e.h._mdf||e.a._mdf)){var s=this.globalData.canvasContext,a=e.s.v,n=e.e.v;if(1===t.t)f=s.createLinearGradient(a[0],a[1],n[0],n[1]);else var o=Math.sqrt(Math.pow(a[0]-n[0],2)+Math.pow(a[1]-n[1],2)),h=Math.atan2(n[1]-a[1],n[0]-a[0]),l=o*(1<=e.h.v?.99:e.h.v<=-1?-.99:e.h.v),p=Math.cos(h+e.a.v)*l+a[0],m=Math.sin(h+e.a.v)*l+a[1],f=s.createRadialGradient(p,m,0,a[0],a[1],o);var c,d=t.g.p,u=e.g.c,y=1;for(c=0;c<d;c+=1)e.g._hasOpacity&&e.g._collapsable&&(y=e.g.o[2*c+1]),f.addColorStop(u[4*c]/100,"rgba("+u[4*c+1]+","+u[4*c+2]+","+u[4*c+3]+","+y+")");i.grd=f}i.coOp=e.o.v*r.opacity},CVShapeElement.prototype.renderStroke=function(t,e,r){var i=e.style,s=e.d;s&&(s._mdf||this._isFirstFrame)&&(i.da=s.dashArray,i.do=s.dashoffset[0]),(e.c._mdf||this._isFirstFrame)&&(i.co="rgb("+bm_floor(e.c.v[0])+","+bm_floor(e.c.v[1])+","+bm_floor(e.c.v[2])+")"),(e.o._mdf||r._opMdf||this._isFirstFrame)&&(i.coOp=e.o.v*r.opacity),(e.w._mdf||this._isFirstFrame)&&(i.wi=e.w.v)},CVShapeElement.prototype.destroy=function(){this.shapesData=null,this.globalData=null,this.canvasContext=null,this.stylesList.length=0,this.itemsData.length=0},extendPrototype([BaseElement,TransformElement,CVBaseElement,HierarchyElement,FrameElement,RenderableElement],CVSolidElement),CVSolidElement.prototype.initElement=SVGShapeElement.prototype.initElement,CVSolidElement.prototype.prepareFrame=IImageElement.prototype.prepareFrame,CVSolidElement.prototype.renderInnerContent=function(){var t=this.canvasContext;t.fillStyle=this.data.sc,t.fillRect(0,0,this.data.sw,this.data.sh)},extendPrototype([BaseElement,TransformElement,CVBaseElement,HierarchyElement,FrameElement,RenderableElement,ITextElement],CVTextElement),CVTextElement.prototype.tHelper=createTag("canvas").getContext("2d"),CVTextElement.prototype.buildNewText=function(){var t=this.textProperty.currentData;this.renderedLetters=createSizedArray(t.l?t.l.length:0);var e=!1;t.fc?(e=!0,this.values.fill=this.buildColor(t.fc)):this.values.fill="rgba(0,0,0,0)",this.fill=e;var r=!1;t.sc&&(r=!0,this.values.stroke=this.buildColor(t.sc),this.values.sWidth=t.sw);var i,s,a=this.globalData.fontManager.getFontByName(t.f),n=t.l,o=this.mHelper;this.stroke=r,this.values.fValue=t.finalSize+"px "+this.globalData.fontManager.getFontByName(t.f).fFamily,s=t.finalText.length;var h,l,p,m,f,c,d,u,y,g,v=this.data.singleShape,b=t.tr/1e3*t.finalSize,E=0,x=0,S=!0,P=0;for(i=0;i<s;i+=1){for(l=(h=this.globalData.fontManager.getCharData(t.finalText[i],a.fStyle,this.globalData.fontManager.getFontByName(t.f).fFamily))&&h.data||{},o.reset(),v&&n[i].n&&(E=-b,x+=t.yOffset,x+=S?1:0,S=!1),d=(f=l.shapes?l.shapes[0].it:[]).length,o.scale(t.finalSize/100,t.finalSize/100),v&&this.applyTextPropertiesToMatrix(t,o,n[i].line,E,x),y=createSizedArray(d),c=0;c<d;c+=1){for(m=f[c].ks.k.i.length,u=f[c].ks.k,g=[],p=1;p<m;p+=1)1==p&&g.push(o.applyToX(u.v[0][0],u.v[0][1],0),o.applyToY(u.v[0][0],u.v[0][1],0)),g.push(o.applyToX(u.o[p-1][0],u.o[p-1][1],0),o.applyToY(u.o[p-1][0],u.o[p-1][1],0),o.applyToX(u.i[p][0],u.i[p][1],0),o.applyToY(u.i[p][0],u.i[p][1],0),o.applyToX(u.v[p][0],u.v[p][1],0),o.applyToY(u.v[p][0],u.v[p][1],0));g.push(o.applyToX(u.o[p-1][0],u.o[p-1][1],0),o.applyToY(u.o[p-1][0],u.o[p-1][1],0),o.applyToX(u.i[0][0],u.i[0][1],0),o.applyToY(u.i[0][0],u.i[0][1],0),o.applyToX(u.v[0][0],u.v[0][1],0),o.applyToY(u.v[0][0],u.v[0][1],0)),y[c]=g}v&&(E+=n[i].l,E+=b),this.textSpans[P]?this.textSpans[P].elem=y:this.textSpans[P]={elem:y},P+=1}},CVTextElement.prototype.renderInnerContent=function(){var t,e,r,i,s,a,n=this.canvasContext;this.finalTransform.mat.props;n.font=this.values.fValue,n.lineCap="butt",n.lineJoin="miter",n.miterLimit=4,this.data.singleShape||this.textAnimator.getMeasures(this.textProperty.currentData,this.lettersChangedFlag);var o,h=this.textAnimator.renderedLetters,l=this.textProperty.currentData.l;e=l.length;var p,m,f=null,c=null,d=null;for(t=0;t<e;t+=1)if(!l[t].n){if((o=h[t])&&(this.globalData.renderer.save(),this.globalData.renderer.ctxTransform(o.p),this.globalData.renderer.ctxOpacity(o.o)),this.fill){for(o&&o.fc?f!==o.fc&&(f=o.fc,n.fillStyle=o.fc):f!==this.values.fill&&(f=this.values.fill,n.fillStyle=this.values.fill),i=(p=this.textSpans[t].elem).length,this.globalData.canvasContext.beginPath(),r=0;r<i;r+=1)for(a=(m=p[r]).length,this.globalData.canvasContext.moveTo(m[0],m[1]),s=2;s<a;s+=6)this.globalData.canvasContext.bezierCurveTo(m[s],m[s+1],m[s+2],m[s+3],m[s+4],m[s+5]);this.globalData.canvasContext.closePath(),this.globalData.canvasContext.fill()}if(this.stroke){for(o&&o.sw?d!==o.sw&&(d=o.sw,n.lineWidth=o.sw):d!==this.values.sWidth&&(d=this.values.sWidth,n.lineWidth=this.values.sWidth),o&&o.sc?c!==o.sc&&(c=o.sc,n.strokeStyle=o.sc):c!==this.values.stroke&&(c=this.values.stroke,n.strokeStyle=this.values.stroke),i=(p=this.textSpans[t].elem).length,this.globalData.canvasContext.beginPath(),r=0;r<i;r+=1)for(a=(m=p[r]).length,this.globalData.canvasContext.moveTo(m[0],m[1]),s=2;s<a;s+=6)this.globalData.canvasContext.bezierCurveTo(m[s],m[s+1],m[s+2],m[s+3],m[s+4],m[s+5]);this.globalData.canvasContext.closePath(),this.globalData.canvasContext.stroke()}o&&this.globalData.renderer.restore()}},CVEffects.prototype.renderFrame=function(){},HBaseElement.prototype={checkBlendMode:function(){},initRendererElement:function(){this.baseElement=createTag(this.data.tg||"div"),this.data.hasMask?(this.svgElement=createNS("svg"),this.layerElement=createNS("g"),this.maskedElement=this.layerElement,this.svgElement.appendChild(this.layerElement),this.baseElement.appendChild(this.svgElement)):this.layerElement=this.baseElement,styleDiv(this.baseElement)},createContainerElements:function(){this.renderableEffectsManager=new CVEffects(this),this.transformedElement=this.baseElement,this.maskedElement=this.layerElement,this.data.ln&&this.layerElement.setAttribute("id",this.data.ln),this.data.cl&&this.layerElement.setAttribute("class",this.data.cl),0!==this.data.bm&&this.setBlendMode()},renderElement:function(){this.finalTransform._matMdf&&(this.transformedElement.style.transform=this.transformedElement.style.webkitTransform=this.finalTransform.mat.toCSS()),this.finalTransform._opMdf&&(this.transformedElement.style.opacity=this.finalTransform.mProp.o.v)},renderFrame:function(){this.data.hd||this.hidden||(this.renderTransform(),this.renderRenderable(),this.renderElement(),this.renderInnerContent(),this._isFirstFrame&&(this._isFirstFrame=!1))},destroy:function(){this.layerElement=null,this.transformedElement=null,this.matteElement&&(this.matteElement=null),this.maskManager&&(this.maskManager.destroy(),this.maskManager=null)},createRenderableComponents:function(){this.maskManager=new MaskElement(this.data,this,this.globalData)},addEffects:function(){},setMatte:function(){}},HBaseElement.prototype.getBaseElement=SVGBaseElement.prototype.getBaseElement,HBaseElement.prototype.destroyBaseElement=HBaseElement.prototype.destroy,HBaseElement.prototype.buildElementParenting=HybridRenderer.prototype.buildElementParenting,extendPrototype([BaseElement,TransformElement,HBaseElement,HierarchyElement,FrameElement,RenderableDOMElement],HSolidElement),HSolidElement.prototype.createContent=function(){var t;this.data.hasMask?((t=createNS("rect")).setAttribute("width",this.data.sw),t.setAttribute("height",this.data.sh),t.setAttribute("fill",this.data.sc),this.svgElement.setAttribute("width",this.data.sw),this.svgElement.setAttribute("height",this.data.sh)):((t=createTag("div")).style.width=this.data.sw+"px",t.style.height=this.data.sh+"px",t.style.backgroundColor=this.data.sc),this.layerElement.appendChild(t)},extendPrototype([HybridRenderer,ICompElement,HBaseElement],HCompElement),HCompElement.prototype._createBaseContainerElements=HCompElement.prototype.createContainerElements,HCompElement.prototype.createContainerElements=function(){this._createBaseContainerElements(),this.data.hasMask?(this.svgElement.setAttribute("width",this.data.w),this.svgElement.setAttribute("height",this.data.h),this.transformedElement=this.baseElement):this.transformedElement=this.layerElement},HCompElement.prototype.addTo3dContainer=function(t,e){for(var r,i=0;i<e;)this.elements[i]&&this.elements[i].getBaseElement&&(r=this.elements[i].getBaseElement()),i+=1;r?this.layerElement.insertBefore(t,r):this.layerElement.appendChild(t)},extendPrototype([BaseElement,TransformElement,HSolidElement,SVGShapeElement,HBaseElement,HierarchyElement,FrameElement,RenderableElement],HShapeElement),HShapeElement.prototype._renderShapeFrame=HShapeElement.prototype.renderInnerContent,HShapeElement.prototype.createContent=function(){var t;if(this.baseElement.style.fontSize=0,this.data.hasMask)this.layerElement.appendChild(this.shapesContainer),t=this.svgElement;else{t=createNS("svg");var e=this.comp.data?this.comp.data:this.globalData.compSize;t.setAttribute("width",e.w),t.setAttribute("height",e.h),t.appendChild(this.shapesContainer),this.layerElement.appendChild(t)}this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.shapesContainer,0,[],!0),this.filterUniqueShapes(),this.shapeCont=t},HShapeElement.prototype.getTransformedPoint=function(t,e){var r,i=t.length;for(r=0;r<i;r+=1)e=t[r].mProps.v.applyToPointArray(e[0],e[1],0);return e},HShapeElement.prototype.calculateShapeBoundingBox=function(t,e){var r,i,s,a,n,o=t.sh.v,h=t.transformers,l=o._length;if(!(l<=1)){for(r=0;r<l-1;r+=1)i=this.getTransformedPoint(h,o.v[r]),s=this.getTransformedPoint(h,o.o[r]),a=this.getTransformedPoint(h,o.i[r+1]),n=this.getTransformedPoint(h,o.v[r+1]),this.checkBounds(i,s,a,n,e);o.c&&(i=this.getTransformedPoint(h,o.v[r]),s=this.getTransformedPoint(h,o.o[r]),a=this.getTransformedPoint(h,o.i[0]),n=this.getTransformedPoint(h,o.v[0]),this.checkBounds(i,s,a,n,e))}},HShapeElement.prototype.checkBounds=function(t,e,r,i,s){this.getBoundsOfCurve(t,e,r,i);var a=this.shapeBoundingBox;s.x=bm_min(a.left,s.x),s.xMax=bm_max(a.right,s.xMax),s.y=bm_min(a.top,s.y),s.yMax=bm_max(a.bottom,s.yMax)},HShapeElement.prototype.shapeBoundingBox={left:0,right:0,top:0,bottom:0},HShapeElement.prototype.tempBoundingBox={x:0,xMax:0,y:0,yMax:0,width:0,height:0},HShapeElement.prototype.getBoundsOfCurve=function(t,e,r,i){for(var s,a,n,o,h,l,p,m=[[t[0],i[0]],[t[1],i[1]]],f=0;f<2;++f)if(a=6*t[f]-12*e[f]+6*r[f],s=-3*t[f]+9*e[f]-9*r[f]+3*i[f],n=3*e[f]-3*t[f],a|=0,n|=0,0!==(s|=0))(h=a*a-4*n*s)<0||(0<(l=(-a+bm_sqrt(h))/(2*s))&&l<1&&m[f].push(this.calculateF(l,t,e,r,i,f)),0<(p=(-a-bm_sqrt(h))/(2*s))&&p<1&&m[f].push(this.calculateF(p,t,e,r,i,f)));else{if(0===a)continue;0<(o=-n/a)&&o<1&&m[f].push(this.calculateF(o,t,e,r,i,f))}this.shapeBoundingBox.left=bm_min.apply(null,m[0]),this.shapeBoundingBox.top=bm_min.apply(null,m[1]),this.shapeBoundingBox.right=bm_max.apply(null,m[0]),this.shapeBoundingBox.bottom=bm_max.apply(null,m[1])},HShapeElement.prototype.calculateF=function(t,e,r,i,s,a){return bm_pow(1-t,3)*e[a]+3*bm_pow(1-t,2)*t*r[a]+3*(1-t)*bm_pow(t,2)*i[a]+bm_pow(t,3)*s[a]},HShapeElement.prototype.calculateBoundingBox=function(t,e){var r,i=t.length;for(r=0;r<i;r+=1)t[r]&&t[r].sh?this.calculateShapeBoundingBox(t[r],e):t[r]&&t[r].it&&this.calculateBoundingBox(t[r].it,e)},HShapeElement.prototype.currentBoxContains=function(t){return this.currentBBox.x<=t.x&&this.currentBBox.y<=t.y&&this.currentBBox.width+this.currentBBox.x>=t.x+t.width&&this.currentBBox.height+this.currentBBox.y>=t.y+t.height},HShapeElement.prototype.renderInnerContent=function(){if(this._renderShapeFrame(),!this.hidden&&(this._isFirstFrame||this._mdf)){var t=this.tempBoundingBox,e=999999;if(t.x=e,t.xMax=-e,t.y=e,t.yMax=-e,this.calculateBoundingBox(this.itemsData,t),t.width=t.xMax<t.x?0:t.xMax-t.x,t.height=t.yMax<t.y?0:t.yMax-t.y,this.currentBoxContains(t))return;var r=!1;this.currentBBox.w!==t.width&&(this.currentBBox.w=t.width,this.shapeCont.setAttribute("width",t.width),r=!0),this.currentBBox.h!==t.height&&(this.currentBBox.h=t.height,this.shapeCont.setAttribute("height",t.height),r=!0),(r||this.currentBBox.x!==t.x||this.currentBBox.y!==t.y)&&(this.currentBBox.w=t.width,this.currentBBox.h=t.height,this.currentBBox.x=t.x,this.currentBBox.y=t.y,this.shapeCont.setAttribute("viewBox",this.currentBBox.x+" "+this.currentBBox.y+" "+this.currentBBox.w+" "+this.currentBBox.h),this.shapeCont.style.transform=this.shapeCont.style.webkitTransform="translate("+this.currentBBox.x+"px,"+this.currentBBox.y+"px)")}},extendPrototype([BaseElement,TransformElement,HBaseElement,HierarchyElement,FrameElement,RenderableDOMElement,ITextElement],HTextElement),HTextElement.prototype.createContent=function(){if(this.isMasked=this.checkMasks(),this.isMasked){this.renderType="svg",this.compW=this.comp.data.w,this.compH=this.comp.data.h,this.svgElement.setAttribute("width",this.compW),this.svgElement.setAttribute("height",this.compH);var t=createNS("g");this.maskedElement.appendChild(t),this.innerElem=t}else this.renderType="html",this.innerElem=this.layerElement;this.checkParenting()},HTextElement.prototype.buildNewText=function(){var t=this.textProperty.currentData;this.renderedLetters=createSizedArray(t.l?t.l.length:0);var e=this.innerElem.style;e.color=e.fill=t.fc?this.buildColor(t.fc):"rgba(0,0,0,0)",t.sc&&(e.stroke=this.buildColor(t.sc),e.strokeWidth=t.sw+"px");var r,i,s=this.globalData.fontManager.getFontByName(t.f);if(!this.globalData.fontManager.chars)if(e.fontSize=t.finalSize+"px",e.lineHeight=t.finalSize+"px",s.fClass)this.innerElem.className=s.fClass;else{e.fontFamily=s.fFamily;var a=t.fWeight,n=t.fStyle;e.fontStyle=n,e.fontWeight=a}var o,h,l,p=t.l;i=p.length;var m,f=this.mHelper,c="",d=0;for(r=0;r<i;r+=1){if(this.globalData.fontManager.chars?(this.textPaths[d]?o=this.textPaths[d]:((o=createNS("path")).setAttribute("stroke-linecap","butt"),o.setAttribute("stroke-linejoin","round"),o.setAttribute("stroke-miterlimit","4")),this.isMasked||(this.textSpans[d]?l=(h=this.textSpans[d]).children[0]:((h=createTag("div")).style.lineHeight=0,(l=createNS("svg")).appendChild(o),styleDiv(h)))):this.isMasked?o=this.textPaths[d]?this.textPaths[d]:createNS("text"):this.textSpans[d]?(h=this.textSpans[d],o=this.textPaths[d]):(styleDiv(h=createTag("span")),styleDiv(o=createTag("span")),h.appendChild(o)),this.globalData.fontManager.chars){var u,y=this.globalData.fontManager.getCharData(t.finalText[r],s.fStyle,this.globalData.fontManager.getFontByName(t.f).fFamily);if(u=y?y.data:null,f.reset(),u&&u.shapes&&(m=u.shapes[0].it,f.scale(t.finalSize/100,t.finalSize/100),c=this.createPathShape(f,m),o.setAttribute("d",c)),this.isMasked)this.innerElem.appendChild(o);else{if(this.innerElem.appendChild(h),u&&u.shapes){document.body.appendChild(l);var g=l.getBBox();l.setAttribute("width",g.width+2),l.setAttribute("height",g.height+2),l.setAttribute("viewBox",g.x-1+" "+(g.y-1)+" "+(g.width+2)+" "+(g.height+2)),l.style.transform=l.style.webkitTransform="translate("+(g.x-1)+"px,"+(g.y-1)+"px)",p[r].yOffset=g.y-1}else l.setAttribute("width",1),l.setAttribute("height",1);h.appendChild(l)}}else o.textContent=p[r].val,o.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),this.isMasked?this.innerElem.appendChild(o):(this.innerElem.appendChild(h),o.style.transform=o.style.webkitTransform="translate3d(0,"+-t.finalSize/1.2+"px,0)");this.isMasked?this.textSpans[d]=o:this.textSpans[d]=h,this.textSpans[d].style.display="block",this.textPaths[d]=o,d+=1}for(;d<this.textSpans.length;)this.textSpans[d].style.display="none",d+=1},HTextElement.prototype.renderInnerContent=function(){if(this.data.singleShape){if(!this._isFirstFrame&&!this.lettersChangedFlag)return;this.isMasked&&this.finalTransform._matMdf&&(this.svgElement.setAttribute("viewBox",-this.finalTransform.mProp.p.v[0]+" "+-this.finalTransform.mProp.p.v[1]+" "+this.compW+" "+this.compH),this.svgElement.style.transform=this.svgElement.style.webkitTransform="translate("+-this.finalTransform.mProp.p.v[0]+"px,"+-this.finalTransform.mProp.p.v[1]+"px)")}if(this.textAnimator.getMeasures(this.textProperty.currentData,this.lettersChangedFlag),this.lettersChangedFlag||this.textAnimator.lettersChangedFlag){var t,e,r,i,s,a=0,n=this.textAnimator.renderedLetters,o=this.textProperty.currentData.l;for(e=o.length,t=0;t<e;t+=1)o[t].n?a+=1:(i=this.textSpans[t],s=this.textPaths[t],r=n[a],a+=1,r._mdf.m&&(this.isMasked?i.setAttribute("transform",r.m):i.style.transform=i.style.webkitTransform=r.m),i.style.opacity=r.o,r.sw&&r._mdf.sw&&s.setAttribute("stroke-width",r.sw),r.sc&&r._mdf.sc&&s.setAttribute("stroke",r.sc),r.fc&&r._mdf.fc&&(s.setAttribute("fill",r.fc),s.style.color=r.fc));if(this.innerElem.getBBox&&!this.hidden&&(this._isFirstFrame||this._mdf)){var h=this.innerElem.getBBox();this.currentBBox.w!==h.width&&(this.currentBBox.w=h.width,this.svgElement.setAttribute("width",h.width)),this.currentBBox.h!==h.height&&(this.currentBBox.h=h.height,this.svgElement.setAttribute("height",h.height));this.currentBBox.w===h.width+2&&this.currentBBox.h===h.height+2&&this.currentBBox.x===h.x-1&&this.currentBBox.y===h.y-1||(this.currentBBox.w=h.width+2,this.currentBBox.h=h.height+2,this.currentBBox.x=h.x-1,this.currentBBox.y=h.y-1,this.svgElement.setAttribute("viewBox",this.currentBBox.x+" "+this.currentBBox.y+" "+this.currentBBox.w+" "+this.currentBBox.h),this.svgElement.style.transform=this.svgElement.style.webkitTransform="translate("+this.currentBBox.x+"px,"+this.currentBBox.y+"px)")}}},extendPrototype([BaseElement,TransformElement,HBaseElement,HSolidElement,HierarchyElement,FrameElement,RenderableElement],HImageElement),HImageElement.prototype.createContent=function(){var t=this.globalData.getAssetsPath(this.assetData),e=new Image;this.data.hasMask?(this.imageElem=createNS("image"),this.imageElem.setAttribute("width",this.assetData.w+"px"),this.imageElem.setAttribute("height",this.assetData.h+"px"),this.imageElem.setAttributeNS("http://www.w3.org/1999/xlink","href",t),this.layerElement.appendChild(this.imageElem),this.baseElement.setAttribute("width",this.assetData.w),this.baseElement.setAttribute("height",this.assetData.h)):this.layerElement.appendChild(e),e.src=t,this.data.ln&&this.baseElement.setAttribute("id",this.data.ln)},extendPrototype([BaseElement,FrameElement,HierarchyElement],HCameraElement),HCameraElement.prototype.setup=function(){var t,e,r=this.comp.threeDElements.length;for(t=0;t<r;t+=1)"3d"===(e=this.comp.threeDElements[t]).type&&(e.perspectiveElem.style.perspective=e.perspectiveElem.style.webkitPerspective=this.pe.v+"px",e.container.style.transformOrigin=e.container.style.mozTransformOrigin=e.container.style.webkitTransformOrigin="0px 0px 0px",e.perspectiveElem.style.transform=e.perspectiveElem.style.webkitTransform="matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)")},HCameraElement.prototype.createElements=function(){},HCameraElement.prototype.hide=function(){},HCameraElement.prototype.renderFrame=function(){var t,e,r=this._isFirstFrame;if(this.hierarchy)for(e=this.hierarchy.length,t=0;t<e;t+=1)r=this.hierarchy[t].finalTransform.mProp._mdf||r;if(r||this.pe._mdf||this.p&&this.p._mdf||this.px&&(this.px._mdf||this.py._mdf||this.pz._mdf)||this.rx._mdf||this.ry._mdf||this.rz._mdf||this.or._mdf||this.a&&this.a._mdf){if(this.mat.reset(),this.hierarchy)for(t=e=this.hierarchy.length-1;0<=t;t-=1){var i=this.hierarchy[t].finalTransform.mProp;this.mat.translate(-i.p.v[0],-i.p.v[1],i.p.v[2]),this.mat.rotateX(-i.or.v[0]).rotateY(-i.or.v[1]).rotateZ(i.or.v[2]),this.mat.rotateX(-i.rx.v).rotateY(-i.ry.v).rotateZ(i.rz.v),this.mat.scale(1/i.s.v[0],1/i.s.v[1],1/i.s.v[2]),this.mat.translate(i.a.v[0],i.a.v[1],i.a.v[2])}if(this.p?this.mat.translate(-this.p.v[0],-this.p.v[1],this.p.v[2]):this.mat.translate(-this.px.v,-this.py.v,this.pz.v),this.a){var s;s=this.p?[this.p.v[0]-this.a.v[0],this.p.v[1]-this.a.v[1],this.p.v[2]-this.a.v[2]]:[this.px.v-this.a.v[0],this.py.v-this.a.v[1],this.pz.v-this.a.v[2]];var a=Math.sqrt(Math.pow(s[0],2)+Math.pow(s[1],2)+Math.pow(s[2],2)),n=[s[0]/a,s[1]/a,s[2]/a],o=Math.sqrt(n[2]*n[2]+n[0]*n[0]),h=Math.atan2(n[1],o),l=Math.atan2(n[0],-n[2]);this.mat.rotateY(l).rotateX(-h)}this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v),this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]),this.mat.translate(this.globalData.compSize.w/2,this.globalData.compSize.h/2,0),this.mat.translate(0,0,this.pe.v);var p=!this._prevMat.equals(this.mat);if((p||this.pe._mdf)&&this.comp.threeDElements){var m;for(e=this.comp.threeDElements.length,t=0;t<e;t+=1)"3d"===(m=this.comp.threeDElements[t]).type&&(p&&(m.container.style.transform=m.container.style.webkitTransform=this.mat.toCSS()),this.pe._mdf&&(m.perspectiveElem.style.perspective=m.perspectiveElem.style.webkitPerspective=this.pe.v+"px"));this.mat.clone(this._prevMat)}}this._isFirstFrame=!1},HCameraElement.prototype.prepareFrame=function(t){this.prepareProperties(t,!0)},HCameraElement.prototype.destroy=function(){},HCameraElement.prototype.getBaseElement=function(){return null},HEffects.prototype.renderFrame=function(){};var animationManager=function(){var t={},s=[],i=0,a=0,n=0,o=!0,h=!1;function r(t){for(var e=0,r=t.target;e<a;)s[e].animation===r&&(s.splice(e,1),e-=1,a-=1,r.isPaused||m()),e+=1}function l(t,e){if(!t)return null;for(var r=0;r<a;){if(s[r].elem==t&&null!==s[r].elem)return s[r].animation;r+=1}var i=new AnimationItem;return f(i,t),i.setData(t,e),i}function p(){n+=1,d()}function m(){n-=1}function f(t,e){t.addEventListener("destroy",r),t.addEventListener("_active",p),t.addEventListener("_idle",m),s.push({elem:e,animation:t}),a+=1}function c(t){var e,r=t-i;for(e=0;e<a;e+=1)s[e].animation.advanceTime(r);i=t,n&&!h?window.requestAnimationFrame(c):o=!0}function e(t){i=t,window.requestAnimationFrame(c)}function d(){!h&&n&&o&&(window.requestAnimationFrame(e),o=!1)}return t.registerAnimation=l,t.loadAnimation=function(t){var e=new AnimationItem;return f(e,null),e.setParams(t),e},t.setSpeed=function(t,e){var r;for(r=0;r<a;r+=1)s[r].animation.setSpeed(t,e)},t.setDirection=function(t,e){var r;for(r=0;r<a;r+=1)s[r].animation.setDirection(t,e)},t.play=function(t){var e;for(e=0;e<a;e+=1)s[e].animation.play(t)},t.pause=function(t){var e;for(e=0;e<a;e+=1)s[e].animation.pause(t)},t.stop=function(t){var e;for(e=0;e<a;e+=1)s[e].animation.stop(t)},t.togglePause=function(t){var e;for(e=0;e<a;e+=1)s[e].animation.togglePause(t)},t.searchAnimations=function(t,e,r){var i,s=[].concat([].slice.call(document.getElementsByClassName("lottie")),[].slice.call(document.getElementsByClassName("bodymovin"))),a=s.length;for(i=0;i<a;i+=1)r&&s[i].setAttribute("data-bm-type",r),l(s[i],t);if(e&&0===a){r||(r="svg");var n=document.getElementsByTagName("body")[0];n.innerHTML="";var o=createTag("div");o.style.width="100%",o.style.height="100%",o.setAttribute("data-bm-type",r),n.appendChild(o),l(o,t)}},t.resize=function(){var t;for(t=0;t<a;t+=1)s[t].animation.resize()},t.goToAndStop=function(t,e,r){var i;for(i=0;i<a;i+=1)s[i].animation.goToAndStop(t,e,r)},t.destroy=function(t){var e;for(e=a-1;0<=e;e-=1)s[e].animation.destroy(t)},t.freeze=function(){h=!0},t.unfreeze=function(){h=!1,d()},t.getRegisteredAnimations=function(){var t,e=s.length,r=[];for(t=0;t<e;t+=1)r.push(s[t].animation);return r},t}(),AnimationItem=function(){this._cbs=[],this.name="",this.path="",this.isLoaded=!1,this.currentFrame=0,this.currentRawFrame=0,this.firstFrame=0,this.totalFrames=0,this.frameRate=0,this.frameMult=0,this.playSpeed=1,this.playDirection=1,this.playCount=0,this.animationData={},this.assets=[],this.isPaused=!0,this.autoplay=!1,this.loop=!0,this.renderer=null,this.animationID=createElementID(),this.assetsPath="",this.timeCompleted=0,this.segmentPos=0,this.subframeEnabled=subframeEnabled,this.segments=[],this._idle=!0,this._completedLoop=!1,this.projectInterface=ProjectInterface(),this.imagePreloader=new ImagePreloader};extendPrototype([BaseEvent],AnimationItem),AnimationItem.prototype.setParams=function(t){t.context&&(this.context=t.context),(t.wrapper||t.container)&&(this.wrapper=t.wrapper||t.container);var e=t.animType?t.animType:t.renderer?t.renderer:"svg";switch(e){case"canvas":this.renderer=new CanvasRenderer(this,t.rendererSettings);break;case"svg":this.renderer=new SVGRenderer(this,t.rendererSettings);break;default:this.renderer=new HybridRenderer(this,t.rendererSettings)}this.renderer.setProjectInterface(this.projectInterface),this.animType=e,""===t.loop||null===t.loop||(!1===t.loop?this.loop=!1:!0===t.loop?this.loop=!0:this.loop=parseInt(t.loop)),this.autoplay=!("autoplay"in t)||t.autoplay,this.name=t.name?t.name:"",this.autoloadSegments=!t.hasOwnProperty("autoloadSegments")||t.autoloadSegments,this.assetsPath=t.assetsPath,this.initialSegment=t.initialSegment,t.animationData?this.configAnimation(t.animationData):t.path&&(-1!==t.path.lastIndexOf("\\")?this.path=t.path.substr(0,t.path.lastIndexOf("\\")+1):this.path=t.path.substr(0,t.path.lastIndexOf("/")+1),this.fileName=t.path.substr(t.path.lastIndexOf("/")+1),this.fileName=this.fileName.substr(0,this.fileName.lastIndexOf(".json")),assetLoader.load(t.path,this.configAnimation.bind(this),function(){this.trigger("data_failed")}.bind(this)))},AnimationItem.prototype.setData=function(t,e){var r={wrapper:t,animationData:e?"object"==typeof e?e:JSON.parse(e):null},i=t.attributes;r.path=i.getNamedItem("data-animation-path")?i.getNamedItem("data-animation-path").value:i.getNamedItem("data-bm-path")?i.getNamedItem("data-bm-path").value:i.getNamedItem("bm-path")?i.getNamedItem("bm-path").value:"",r.animType=i.getNamedItem("data-anim-type")?i.getNamedItem("data-anim-type").value:i.getNamedItem("data-bm-type")?i.getNamedItem("data-bm-type").value:i.getNamedItem("bm-type")?i.getNamedItem("bm-type").value:i.getNamedItem("data-bm-renderer")?i.getNamedItem("data-bm-renderer").value:i.getNamedItem("bm-renderer")?i.getNamedItem("bm-renderer").value:"canvas";var s=i.getNamedItem("data-anim-loop")?i.getNamedItem("data-anim-loop").value:i.getNamedItem("data-bm-loop")?i.getNamedItem("data-bm-loop").value:i.getNamedItem("bm-loop")?i.getNamedItem("bm-loop").value:"";""===s||(r.loop="false"!==s&&("true"===s||parseInt(s)));var a=i.getNamedItem("data-anim-autoplay")?i.getNamedItem("data-anim-autoplay").value:i.getNamedItem("data-bm-autoplay")?i.getNamedItem("data-bm-autoplay").value:!i.getNamedItem("bm-autoplay")||i.getNamedItem("bm-autoplay").value;r.autoplay="false"!==a,r.name=i.getNamedItem("data-name")?i.getNamedItem("data-name").value:i.getNamedItem("data-bm-name")?i.getNamedItem("data-bm-name").value:i.getNamedItem("bm-name")?i.getNamedItem("bm-name").value:"","false"===(i.getNamedItem("data-anim-prerender")?i.getNamedItem("data-anim-prerender").value:i.getNamedItem("data-bm-prerender")?i.getNamedItem("data-bm-prerender").value:i.getNamedItem("bm-prerender")?i.getNamedItem("bm-prerender").value:"")&&(r.prerender=!1),this.setParams(r)},AnimationItem.prototype.includeLayers=function(t){t.op>this.animationData.op&&(this.animationData.op=t.op,this.totalFrames=Math.floor(t.op-this.animationData.ip));var e,r,i=this.animationData.layers,s=i.length,a=t.layers,n=a.length;for(r=0;r<n;r+=1)for(e=0;e<s;){if(i[e].id==a[r].id){i[e]=a[r];break}e+=1}if((t.chars||t.fonts)&&(this.renderer.globalData.fontManager.addChars(t.chars),this.renderer.globalData.fontManager.addFonts(t.fonts,this.renderer.globalData.defs)),t.assets)for(s=t.assets.length,e=0;e<s;e+=1)this.animationData.assets.push(t.assets[e]);this.animationData.__complete=!1,dataManager.completeData(this.animationData,this.renderer.globalData.fontManager),this.renderer.includeLayers(t.layers),expressionsPlugin&&expressionsPlugin.initExpressions(this),this.loadNextSegment()},AnimationItem.prototype.loadNextSegment=function(){var t=this.animationData.segments;if(!t||0===t.length||!this.autoloadSegments)return this.trigger("data_ready"),void(this.timeCompleted=this.totalFrames);var e=t.shift();this.timeCompleted=e.time*this.frameRate;var r=this.path+this.fileName+"_"+this.segmentPos+".json";this.segmentPos+=1,assetLoader.load(r,this.includeLayers.bind(this),function(){this.trigger("data_failed")}.bind(this))},AnimationItem.prototype.loadSegments=function(){this.animationData.segments||(this.timeCompleted=this.totalFrames),this.loadNextSegment()},AnimationItem.prototype.imagesLoaded=function(){this.trigger("loaded_images"),this.checkLoaded()},AnimationItem.prototype.preloadImages=function(){this.imagePreloader.setAssetsPath(this.assetsPath),this.imagePreloader.setPath(this.path),this.imagePreloader.loadAssets(this.animationData.assets,this.imagesLoaded.bind(this))},AnimationItem.prototype.configAnimation=function(t){if(this.renderer)try{this.animationData=t,this.initialSegment?(this.totalFrames=Math.floor(this.initialSegment[1]-this.initialSegment[0]),this.firstFrame=Math.round(this.initialSegment[0])):(this.totalFrames=Math.floor(this.animationData.op-this.animationData.ip),this.firstFrame=Math.round(this.animationData.ip)),this.renderer.configAnimation(t),t.assets||(t.assets=[]),this.assets=this.animationData.assets,this.frameRate=this.animationData.fr,this.frameMult=this.animationData.fr/1e3,this.renderer.searchExtraCompositions(t.assets),this.trigger("config_ready"),this.preloadImages(),this.loadSegments(),this.updaFrameModifier(),this.waitForFontsLoaded()}catch(t){this.triggerConfigError(t)}},AnimationItem.prototype.waitForFontsLoaded=function(){this.renderer&&(this.renderer.globalData.fontManager.loaded()?this.checkLoaded():setTimeout(this.waitForFontsLoaded.bind(this),20))},AnimationItem.prototype.checkLoaded=function(){this.isLoaded||!this.renderer.globalData.fontManager.loaded()||!this.imagePreloader.loaded()&&"canvas"===this.renderer.rendererType||(this.isLoaded=!0,dataManager.completeData(this.animationData,this.renderer.globalData.fontManager),expressionsPlugin&&expressionsPlugin.initExpressions(this),this.renderer.initItems(),setTimeout(function(){this.trigger("DOMLoaded")}.bind(this),0),this.gotoFrame(),this.autoplay&&this.play())},AnimationItem.prototype.resize=function(){this.renderer.updateContainerSize()},AnimationItem.prototype.setSubframe=function(t){this.subframeEnabled=!!t},AnimationItem.prototype.gotoFrame=function(){this.currentFrame=this.subframeEnabled?this.currentRawFrame:~~this.currentRawFrame,this.timeCompleted!==this.totalFrames&&this.currentFrame>this.timeCompleted&&(this.currentFrame=this.timeCompleted),this.trigger("enterFrame"),this.renderFrame()},AnimationItem.prototype.renderFrame=function(){if(!1!==this.isLoaded)try{this.renderer.renderFrame(this.currentFrame+this.firstFrame)}catch(t){this.triggerRenderFrameError(t)}},AnimationItem.prototype.play=function(t){t&&this.name!=t||!0===this.isPaused&&(this.isPaused=!1,this._idle&&(this._idle=!1,this.trigger("_active")))},AnimationItem.prototype.pause=function(t){t&&this.name!=t||!1===this.isPaused&&(this.isPaused=!0,this._idle=!0,this.trigger("_idle"))},AnimationItem.prototype.togglePause=function(t){t&&this.name!=t||(!0===this.isPaused?this.play():this.pause())},AnimationItem.prototype.stop=function(t){t&&this.name!=t||(this.pause(),this.playCount=0,this._completedLoop=!1,this.setCurrentRawFrameValue(0))},AnimationItem.prototype.goToAndStop=function(t,e,r){r&&this.name!=r||(e?this.setCurrentRawFrameValue(t):this.setCurrentRawFrameValue(t*this.frameModifier),this.pause())},AnimationItem.prototype.goToAndPlay=function(t,e,r){this.goToAndStop(t,e,r),this.play()},AnimationItem.prototype.advanceTime=function(t){if(!0!==this.isPaused&&!1!==this.isLoaded){var e=this.currentRawFrame+t*this.frameModifier,r=!1;e>=this.totalFrames-1&&0<this.frameModifier?this.loop&&this.playCount!==this.loop?e>=this.totalFrames?(this.playCount+=1,this.checkSegments(e%this.totalFrames)||(this.setCurrentRawFrameValue(e%this.totalFrames),this._completedLoop=!0,this.trigger("loopComplete"))):this.setCurrentRawFrameValue(e):this.checkSegments(e>this.totalFrames?e%this.totalFrames:0)||(r=!0,e=this.totalFrames-1):e<0?this.checkSegments(e%this.totalFrames)||(!this.loop||this.playCount--<=0&&!0!==this.loop?(r=!0,e=0):(this.setCurrentRawFrameValue(this.totalFrames+e%this.totalFrames),this._completedLoop?this.trigger("loopComplete"):this._completedLoop=!0)):this.setCurrentRawFrameValue(e),r&&(this.setCurrentRawFrameValue(e),this.pause(),this.trigger("complete"))}},AnimationItem.prototype.adjustSegment=function(t,e){this.playCount=0,t[1]<t[0]?(0<this.frameModifier&&(this.playSpeed<0?this.setSpeed(-this.playSpeed):this.setDirection(-1)),this.timeCompleted=this.totalFrames=t[0]-t[1],this.firstFrame=t[1],this.setCurrentRawFrameValue(this.totalFrames-.001-e)):t[1]>t[0]&&(this.frameModifier<0&&(this.playSpeed<0?this.setSpeed(-this.playSpeed):this.setDirection(1)),this.timeCompleted=this.totalFrames=t[1]-t[0],this.firstFrame=t[0],this.setCurrentRawFrameValue(.001+e)),this.trigger("segmentStart")},AnimationItem.prototype.setSegment=function(t,e){var r=-1;this.isPaused&&(this.currentRawFrame+this.firstFrame<t?r=t:this.currentRawFrame+this.firstFrame>e&&(r=e-t)),this.firstFrame=t,this.timeCompleted=this.totalFrames=e-t,-1!==r&&this.goToAndStop(r,!0)},AnimationItem.prototype.playSegments=function(t,e){if(e&&(this.segments.length=0),"object"==typeof t[0]){var r,i=t.length;for(r=0;r<i;r+=1)this.segments.push(t[r])}else this.segments.push(t);this.segments.length&&e&&this.adjustSegment(this.segments.shift(),0),this.isPaused&&this.play()},AnimationItem.prototype.resetSegments=function(t){this.segments.length=0,this.segments.push([this.animationData.ip,this.animationData.op]),t&&this.checkSegments(0)},AnimationItem.prototype.checkSegments=function(t){return!!this.segments.length&&(this.adjustSegment(this.segments.shift(),t),!0)},AnimationItem.prototype.destroy=function(t){t&&this.name!=t||!this.renderer||(this.renderer.destroy(),this.imagePreloader.destroy(),this.trigger("destroy"),this._cbs=null,this.onEnterFrame=this.onLoopComplete=this.onComplete=this.onSegmentStart=this.onDestroy=null,this.renderer=null)},AnimationItem.prototype.setCurrentRawFrameValue=function(t){this.currentRawFrame=t,this.gotoFrame()},AnimationItem.prototype.setSpeed=function(t){this.playSpeed=t,this.updaFrameModifier()},AnimationItem.prototype.setDirection=function(t){this.playDirection=t<0?-1:1,this.updaFrameModifier()},AnimationItem.prototype.updaFrameModifier=function(){this.frameModifier=this.frameMult*this.playSpeed*this.playDirection},AnimationItem.prototype.getPath=function(){return this.path},AnimationItem.prototype.getAssetsPath=function(t){var e="";if(t.e)e=t.p;else if(this.assetsPath){var r=t.p;-1!==r.indexOf("images/")&&(r=r.split("/")[1]),e=this.assetsPath+r}else e=this.path,e+=t.u?t.u:"",e+=t.p;return e},AnimationItem.prototype.getAssetData=function(t){for(var e=0,r=this.assets.length;e<r;){if(t==this.assets[e].id)return this.assets[e];e+=1}},AnimationItem.prototype.hide=function(){this.renderer.hide()},AnimationItem.prototype.show=function(){this.renderer.show()},AnimationItem.prototype.getDuration=function(t){return t?this.totalFrames:this.totalFrames/this.frameRate},AnimationItem.prototype.trigger=function(t){if(this._cbs&&this._cbs[t])switch(t){case"enterFrame":this.triggerEvent(t,new BMEnterFrameEvent(t,this.currentFrame,this.totalFrames,this.frameModifier));break;case"loopComplete":this.triggerEvent(t,new BMCompleteLoopEvent(t,this.loop,this.playCount,this.frameMult));break;case"complete":this.triggerEvent(t,new BMCompleteEvent(t,this.frameMult));break;case"segmentStart":this.triggerEvent(t,new BMSegmentStartEvent(t,this.firstFrame,this.totalFrames));break;case"destroy":this.triggerEvent(t,new BMDestroyEvent(t,this));break;default:this.triggerEvent(t)}"enterFrame"===t&&this.onEnterFrame&&this.onEnterFrame.call(this,new BMEnterFrameEvent(t,this.currentFrame,this.totalFrames,this.frameMult)),"loopComplete"===t&&this.onLoopComplete&&this.onLoopComplete.call(this,new BMCompleteLoopEvent(t,this.loop,this.playCount,this.frameMult)),"complete"===t&&this.onComplete&&this.onComplete.call(this,new BMCompleteEvent(t,this.frameMult)),"segmentStart"===t&&this.onSegmentStart&&this.onSegmentStart.call(this,new BMSegmentStartEvent(t,this.firstFrame,this.totalFrames)),"destroy"===t&&this.onDestroy&&this.onDestroy.call(this,new BMDestroyEvent(t,this))},AnimationItem.prototype.triggerRenderFrameError=function(t){var e=new BMRenderFrameErrorEvent(t,this.currentFrame);this.triggerEvent("error",e),this.onError&&this.onError.call(this,e)},AnimationItem.prototype.triggerConfigError=function(t){var e=new BMConfigErrorEvent(t,this.currentFrame);this.triggerEvent("error",e),this.onError&&this.onError.call(this,e)};var Expressions=(IW={},IW.initExpressions=function(t){var e=0,r=[];function i(){var t,e=r.length;for(t=0;t<e;t+=1)r[t].release();r.length=0}t.renderer.compInterface=CompExpressionInterface(t.renderer),t.renderer.globalData.projectInterface.registerComposition(t.renderer),t.renderer.globalData.pushExpression=function(){e+=1},t.renderer.globalData.popExpression=function(){0==(e-=1)&&i()},t.renderer.globalData.registerExpressionProperty=function(t){-1===r.indexOf(t)&&r.push(t)}},IW),IW;expressionsPlugin=Expressions;var ExpressionManager=function(){var ob={},Math=BMMath,window=null,document=null;function $bm_isInstanceOfArray(t){return t.constructor===Array||t.constructor===Float32Array}function isNumerable(t,e){return"number"===t||"boolean"===t||"string"===t||e instanceof Number}function $bm_neg(t){var e=typeof t;if("number"===e||"boolean"===e||t instanceof Number)return-t;if($bm_isInstanceOfArray(t)){var r,i=t.length,s=[];for(r=0;r<i;r+=1)s[r]=-t[r];return s}return t.propType?t.v:void 0}var easeInBez=BezierFactory.getBezierEasing(.333,0,.833,.833,"easeIn").get,easeOutBez=BezierFactory.getBezierEasing(.167,.167,.667,1,"easeOut").get,easeInOutBez=BezierFactory.getBezierEasing(.33,0,.667,1,"easeInOut").get;function sum(t,e){var r=typeof t,i=typeof e;if("string"===r||"string"===i)return t+e;if(isNumerable(r,t)&&isNumerable(i,e))return t+e;if($bm_isInstanceOfArray(t)&&isNumerable(i,e))return(t=t.slice(0))[0]=t[0]+e,t;if(isNumerable(r,t)&&$bm_isInstanceOfArray(e))return(e=e.slice(0))[0]=t+e[0],e;if($bm_isInstanceOfArray(t)&&$bm_isInstanceOfArray(e)){for(var s=0,a=t.length,n=e.length,o=[];s<a||s<n;)("number"==typeof t[s]||t[s]instanceof Number)&&("number"==typeof e[s]||e[s]instanceof Number)?o[s]=t[s]+e[s]:o[s]=void 0===e[s]?t[s]:t[s]||e[s],s+=1;return o}return 0}var add=sum;function sub(t,e){var r=typeof t,i=typeof e;if(isNumerable(r,t)&&isNumerable(i,e))return"string"===r&&(t=parseInt(t)),"string"===i&&(e=parseInt(e)),t-e;if($bm_isInstanceOfArray(t)&&isNumerable(i,e))return(t=t.slice(0))[0]=t[0]-e,t;if(isNumerable(r,t)&&$bm_isInstanceOfArray(e))return(e=e.slice(0))[0]=t-e[0],e;if($bm_isInstanceOfArray(t)&&$bm_isInstanceOfArray(e)){for(var s=0,a=t.length,n=e.length,o=[];s<a||s<n;)("number"==typeof t[s]||t[s]instanceof Number)&&("number"==typeof e[s]||e[s]instanceof Number)?o[s]=t[s]-e[s]:o[s]=void 0===e[s]?t[s]:t[s]||e[s],s+=1;return o}return 0}function mul(t,e){var r,i,s,a=typeof t,n=typeof e;if(isNumerable(a,t)&&isNumerable(n,e))return t*e;if($bm_isInstanceOfArray(t)&&isNumerable(n,e)){for(s=t.length,r=createTypedArray("float32",s),i=0;i<s;i+=1)r[i]=t[i]*e;return r}if(isNumerable(a,t)&&$bm_isInstanceOfArray(e)){for(s=e.length,r=createTypedArray("float32",s),i=0;i<s;i+=1)r[i]=t*e[i];return r}return 0}function div(t,e){var r,i,s,a=typeof t,n=typeof e;if(isNumerable(a,t)&&isNumerable(n,e))return t/e;if($bm_isInstanceOfArray(t)&&isNumerable(n,e)){for(s=t.length,r=createTypedArray("float32",s),i=0;i<s;i+=1)r[i]=t[i]/e;return r}if(isNumerable(a,t)&&$bm_isInstanceOfArray(e)){for(s=e.length,r=createTypedArray("float32",s),i=0;i<s;i+=1)r[i]=t/e[i];return r}return 0}function mod(t,e){return"string"==typeof t&&(t=parseInt(t)),"string"==typeof e&&(e=parseInt(e)),t%e}var $bm_sum=sum,$bm_sub=sub,$bm_mul=mul,$bm_div=div,$bm_mod=mod;function clamp(t,e,r){if(r<e){var i=r;r=e,e=i}return Math.min(Math.max(t,e),r)}function radiansToDegrees(t){return t/degToRads}var radians_to_degrees=radiansToDegrees;function degreesToRadians(t){return t*degToRads}var degrees_to_radians=radiansToDegrees,helperLengthArray=[0,0,0,0,0,0];function length(t,e){if("number"==typeof t||t instanceof Number)return e=e||0,Math.abs(t-e);e||(e=helperLengthArray);var r,i=Math.min(t.length,e.length),s=0;for(r=0;r<i;r+=1)s+=Math.pow(e[r]-t[r],2);return Math.sqrt(s)}function normalize(t){return div(t,length(t))}function rgbToHsl(t){var e,r,i=t[0],s=t[1],a=t[2],n=Math.max(i,s,a),o=Math.min(i,s,a),h=(n+o)/2;if(n==o)e=r=0;else{var l=n-o;switch(r=.5<h?l/(2-n-o):l/(n+o),n){case i:e=(s-a)/l+(s<a?6:0);break;case s:e=(a-i)/l+2;break;case a:e=(i-s)/l+4}e/=6}return[e,r,h,t[3]]}function hue2rgb(t,e,r){return r<0&&(r+=1),1<r&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}function hslToRgb(t){var e,r,i,s=t[0],a=t[1],n=t[2];if(0===a)e=r=i=n;else{var o=n<.5?n*(1+a):n+a-n*a,h=2*n-o;e=hue2rgb(h,o,s+1/3),r=hue2rgb(h,o,s),i=hue2rgb(h,o,s-1/3)}return[e,r,i,t[3]]}function linear(t,e,r,i,s){if(void 0!==i&&void 0!==s||(i=e,s=r,e=0,r=1),r<e){var a=r;r=e,e=a}if(t<=e)return i;if(r<=t)return s;var n=r===e?0:(t-e)/(r-e);if(!i.length)return i+(s-i)*n;var o,h=i.length,l=createTypedArray("float32",h);for(o=0;o<h;o+=1)l[o]=i[o]+(s[o]-i[o])*n;return l}function random(t,e){if(void 0===e&&(void 0===t?(t=0,e=1):(e=t,t=void 0)),e.length){var r,i=e.length;t||(t=createTypedArray("float32",i));var s=createTypedArray("float32",i),a=BMMath.random();for(r=0;r<i;r+=1)s[r]=t[r]+a*(e[r]-t[r]);return s}return void 0===t&&(t=0),t+BMMath.random()*(e-t)}function createPath(t,e,r,i){var s,a=t.length,n=shape_pool.newElement();n.setPathData(!!i,a);var o,h,l=[0,0];for(s=0;s<a;s+=1)o=e&&e[s]?e[s]:l,h=r&&r[s]?r[s]:l,n.setTripleAt(t[s][0],t[s][1],h[0]+t[s][0],h[1]+t[s][1],o[0]+t[s][0],o[1]+t[s][1],s,!0);return n}function initiateExpression(elem,data,property){var val=data.x,needsVelocity=/velocity(?![\w\d])/.test(val),_needsRandom=-1!==val.indexOf("random"),elemType=elem.data.ty,transform,$bm_transform,content,effect,thisProperty=property;thisProperty.valueAtTime=thisProperty.getValueAtTime,Object.defineProperty(thisProperty,"value",{get:function(){return thisProperty.v}}),elem.comp.frameDuration=1/elem.comp.globalData.frameRate,elem.comp.displayStartTime=0;var inPoint=elem.data.ip/elem.comp.globalData.frameRate,outPoint=elem.data.op/elem.comp.globalData.frameRate,width=elem.data.sw?elem.data.sw:0,height=elem.data.sh?elem.data.sh:0,name=elem.data.nm,loopIn,loop_in,loopOut,loop_out,smooth,toWorld,fromWorld,fromComp,toComp,fromCompToSurface,position,rotation,anchorPoint,scale,thisLayer,thisComp,mask,valueAtTime,velocityAtTime,__expression_functions=[],scoped_bm_rt;if(data.xf){var i,len=data.xf.length;for(i=0;i<len;i+=1)__expression_functions[i]=eval("(function(){ return "+data.xf[i]+"}())")}var expression_function=eval("[function _expression_function(){"+val+";scoped_bm_rt=$bm_rt}]")[0],numKeys=property.kf?data.k.length:0,active=!this.data||!0!==this.data.hd,wiggle=function(t,e){var r,i,s=this.pv.length?this.pv.length:1,a=createTypedArray("float32",s);var n=Math.floor(5*time);for(i=r=0;r<n;){for(i=0;i<s;i+=1)a[i]+=-e+2*e*BMMath.random();r+=1}var o=5*time,h=o-Math.floor(o),l=createTypedArray("float32",s);if(1<s){for(i=0;i<s;i+=1)l[i]=this.pv[i]+a[i]+(-e+2*e*BMMath.random())*h;return l}return this.pv+a[0]+(-e+2*e*BMMath.random())*h}.bind(this);function loopInDuration(t,e){return loopIn(t,e,!0)}function loopOutDuration(t,e){return loopOut(t,e,!0)}thisProperty.loopIn&&(loopIn=thisProperty.loopIn.bind(thisProperty),loop_in=loopIn),thisProperty.loopOut&&(loopOut=thisProperty.loopOut.bind(thisProperty),loop_out=loopOut),thisProperty.smooth&&(smooth=thisProperty.smooth.bind(thisProperty)),this.getValueAtTime&&(valueAtTime=this.getValueAtTime.bind(this)),this.getVelocityAtTime&&(velocityAtTime=this.getVelocityAtTime.bind(this));var comp=elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface),time,velocity,value,text,textIndex,textTotal,selectorValue;function lookAt(t,e){var r=[e[0]-t[0],e[1]-t[1],e[2]-t[2]],i=Math.atan2(r[0],Math.sqrt(r[1]*r[1]+r[2]*r[2]))/degToRads;return[-Math.atan2(r[1],r[2])/degToRads,i,0]}function easeOut(t,e,r,i,s){return applyEase(easeOutBez,t,e,r,i,s)}function easeIn(t,e,r,i,s){return applyEase(easeInBez,t,e,r,i,s)}function ease(t,e,r,i,s){return applyEase(easeInOutBez,t,e,r,i,s)}function applyEase(t,e,r,i,s,a){void 0===s?(s=r,a=i):e=(e-r)/(i-r);var n=t(e=1<e?1:e<0?0:e);if($bm_isInstanceOfArray(s)){var o,h=s.length,l=createTypedArray("float32",h);for(o=0;o<h;o+=1)l[o]=(a[o]-s[o])*n+s[o];return l}return(a-s)*n+s}function nearestKey(t){var e,r,i,s=data.k.length;if(data.k.length&&"number"!=typeof data.k[0])if(r=-1,(t*=elem.comp.globalData.frameRate)<data.k[0].t)r=1,i=data.k[0].t;else{for(e=0;e<s-1;e+=1){if(t===data.k[e].t){r=e+1,i=data.k[e].t;break}if(t>data.k[e].t&&t<data.k[e+1].t){i=t-data.k[e].t>data.k[e+1].t-t?(r=e+2,data.k[e+1].t):(r=e+1,data.k[e].t);break}}-1===r&&(r=e+1,i=data.k[e].t)}else i=r=0;var a={};return a.index=r,a.time=i/elem.comp.globalData.frameRate,a}function key(t){var e,r,i;if(!data.k.length||"number"==typeof data.k[0])throw new Error("The property has no keyframe at index "+t);t-=1,e={time:data.k[t].t/elem.comp.globalData.frameRate,value:[]};var s=data.k[t].hasOwnProperty("s")?data.k[t].s:data.k[t-1].e;for(i=s.length,r=0;r<i;r+=1)e[r]=s[r],e.value[r]=s[r];return e}function framesToTime(t,e){return e||(e=elem.comp.globalData.frameRate),t/e}function timeToFrames(t,e){return t||0===t||(t=time),e||(e=elem.comp.globalData.frameRate),t*e}function seedRandom(t){BMMath.seedrandom(randSeed+t)}function sourceRectAtTime(){return elem.sourceRectAtTime()}function substring(t,e){return"string"==typeof value?void 0===e?value.substring(t):value.substring(t,e):""}function substr(t,e){return"string"==typeof value?void 0===e?value.substr(t):value.substr(t,e):""}function posterizeTime(t){time=0===t?0:Math.floor(time*t)/t,value=valueAtTime(time)}var index=elem.data.ind,hasParent=!(!elem.hierarchy||!elem.hierarchy.length),parent,randSeed=Math.floor(1e6*Math.random()),globalData=elem.globalData;function executeExpression(t){return value=t,_needsRandom&&seedRandom(randSeed),this.frameExpressionId===elem.globalData.frameId&&"textSelector"!==this.propType?value:("textSelector"===this.propType&&(textIndex=this.textIndex,textTotal=this.textTotal,selectorValue=this.selectorValue),thisLayer||(text=elem.layerInterface.text,thisLayer=elem.layerInterface,thisComp=elem.comp.compInterface,toWorld=thisLayer.toWorld.bind(thisLayer),fromWorld=thisLayer.fromWorld.bind(thisLayer),fromComp=thisLayer.fromComp.bind(thisLayer),toComp=thisLayer.toComp.bind(thisLayer),mask=thisLayer.mask?thisLayer.mask.bind(thisLayer):null,fromCompToSurface=fromComp),transform||(transform=elem.layerInterface("ADBE Transform Group"),($bm_transform=transform)&&(anchorPoint=transform.anchorPoint)),4!==elemType||content||(content=thisLayer("ADBE Root Vectors Group")),effect||(effect=thisLayer(4)),(hasParent=!(!elem.hierarchy||!elem.hierarchy.length))&&!parent&&(parent=elem.hierarchy[0].layerInterface),time=this.comp.renderedFrame/this.comp.globalData.frameRate,needsVelocity&&(velocity=velocityAtTime(time)),expression_function(),this.frameExpressionId=elem.globalData.frameId,"shape"===scoped_bm_rt.propType&&(scoped_bm_rt=scoped_bm_rt.v),scoped_bm_rt)}return executeExpression}return ob.initiateExpression=initiateExpression,ob}(),expressionHelpers={searchExpressions:function(t,e,r){e.x&&(r.k=!0,r.x=!0,r.initiateExpression=ExpressionManager.initiateExpression,r.effectsSequence.push(r.initiateExpression(t,e,r).bind(r)))},getSpeedAtTime:function(t){var e=this.getValueAtTime(t),r=this.getValueAtTime(t+-.01),i=0;if(e.length){var s;for(s=0;s<e.length;s+=1)i+=Math.pow(r[s]-e[s],2);i=100*Math.sqrt(i)}else i=0;return i},getVelocityAtTime:function(t){if(void 0!==this.vel)return this.vel;var e,r,i=this.getValueAtTime(t),s=this.getValueAtTime(t+-.001);if(i.length)for(e=createTypedArray("float32",i.length),r=0;r<i.length;r+=1)e[r]=(s[r]-i[r])/-.001;else e=(s-i)/-.001;return e},getValueAtTime:function(t){return t*=this.elem.globalData.frameRate,(t-=this.offsetTime)!==this._cachingAtTime.lastFrame&&(this._cachingAtTime.lastIndex=this._cachingAtTime.lastFrame<t?this._cachingAtTime.lastIndex:0,this._cachingAtTime.value=this.interpolateValue(t,this._cachingAtTime),this._cachingAtTime.lastFrame=t),this._cachingAtTime.value},getStaticValueAtTime:function(){return this.pv},setGroupProperty:function(t){this.propertyGroup=t}};!function(){function o(t,e,r){if(!this.k||!this.keyframes)return this.pv;t=t?t.toLowerCase():"";var i,s,a,n,o,h=this.comp.renderedFrame,l=this.keyframes,p=l[l.length-1].t;if(h<=p)return this.pv;if(r?s=p-(i=e?Math.abs(p-elem.comp.globalData.frameRate*e):Math.max(0,p-this.elem.data.ip)):((!e||e>l.length-1)&&(e=l.length-1),i=p-(s=l[l.length-1-e].t)),"pingpong"===t){if(Math.floor((h-s)/i)%2!=0)return this.getValueAtTime((i-(h-s)%i+s)/this.comp.globalData.frameRate,0)}else{if("offset"===t){var m=this.getValueAtTime(s/this.comp.globalData.frameRate,0),f=this.getValueAtTime(p/this.comp.globalData.frameRate,0),c=this.getValueAtTime(((h-s)%i+s)/this.comp.globalData.frameRate,0),d=Math.floor((h-s)/i);if(this.pv.length){for(n=(o=new Array(m.length)).length,a=0;a<n;a+=1)o[a]=(f[a]-m[a])*d+c[a];return o}return(f-m)*d+c}if("continue"===t){var u=this.getValueAtTime(p/this.comp.globalData.frameRate,0),y=this.getValueAtTime((p-.001)/this.comp.globalData.frameRate,0);if(this.pv.length){for(n=(o=new Array(u.length)).length,a=0;a<n;a+=1)o[a]=u[a]+(u[a]-y[a])*((h-p)/this.comp.globalData.frameRate)/5e-4;return o}return u+(h-p)/.001*(u-y)}}return this.getValueAtTime(((h-s)%i+s)/this.comp.globalData.frameRate,0)}function h(t,e,r){if(!this.k)return this.pv;t=t?t.toLowerCase():"";var i,s,a,n,o,h=this.comp.renderedFrame,l=this.keyframes,p=l[0].t;if(p<=h)return this.pv;if(r?s=p+(i=e?Math.abs(elem.comp.globalData.frameRate*e):Math.max(0,this.elem.data.op-p)):((!e||e>l.length-1)&&(e=l.length-1),i=(s=l[e].t)-p),"pingpong"===t){if(Math.floor((p-h)/i)%2==0)return this.getValueAtTime(((p-h)%i+p)/this.comp.globalData.frameRate,0)}else{if("offset"===t){var m=this.getValueAtTime(p/this.comp.globalData.frameRate,0),f=this.getValueAtTime(s/this.comp.globalData.frameRate,0),c=this.getValueAtTime((i-(p-h)%i+p)/this.comp.globalData.frameRate,0),d=Math.floor((p-h)/i)+1;if(this.pv.length){for(n=(o=new Array(m.length)).length,a=0;a<n;a+=1)o[a]=c[a]-(f[a]-m[a])*d;return o}return c-(f-m)*d}if("continue"===t){var u=this.getValueAtTime(p/this.comp.globalData.frameRate,0),y=this.getValueAtTime((p+.001)/this.comp.globalData.frameRate,0);if(this.pv.length){for(n=(o=new Array(u.length)).length,a=0;a<n;a+=1)o[a]=u[a]+(u[a]-y[a])*(p-h)/.001;return o}return u+(u-y)*(p-h)/.001}}return this.getValueAtTime((i-(p-h)%i+p)/this.comp.globalData.frameRate,0)}function l(t,e){if(!this.k)return this.pv;if(t=.5*(t||.4),(e=Math.floor(e||5))<=1)return this.pv;var r,i,s=this.comp.renderedFrame/this.comp.globalData.frameRate,a=s-t,n=1<e?(s+t-a)/(e-1):1,o=0,h=0;for(r=this.pv.length?createTypedArray("float32",this.pv.length):0;o<e;){if(i=this.getValueAtTime(a+o*n),this.pv.length)for(h=0;h<this.pv.length;h+=1)r[h]+=i[h];else r+=i;o+=1}if(this.pv.length)for(h=0;h<this.pv.length;h+=1)r[h]/=e;else r/=e;return r}var s=TransformPropertyFactory.getTransformProperty;TransformPropertyFactory.getTransformProperty=function(t,e,r){var i=s(t,e,r);return i.dynamicProperties.length?i.getValueAtTime=function(t){console.warn("Transform at time not supported")}.bind(i):i.getValueAtTime=function(t){}.bind(i),i.setGroupProperty=expressionHelpers.setGroupProperty,i};var p=PropertyFactory.getProp;PropertyFactory.getProp=function(t,e,r,i,s){var a=p(t,e,r,i,s);a.kf?a.getValueAtTime=expressionHelpers.getValueAtTime.bind(a):a.getValueAtTime=expressionHelpers.getStaticValueAtTime.bind(a),a.setGroupProperty=expressionHelpers.setGroupProperty,a.loopOut=o,a.loopIn=h,a.smooth=l,a.getVelocityAtTime=expressionHelpers.getVelocityAtTime.bind(a),a.getSpeedAtTime=expressionHelpers.getSpeedAtTime.bind(a),a.numKeys=1===e.a?e.k.length:0,a.propertyIndex=e.ix;var n=0;return 0!==r&&(n=createTypedArray("float32",1===e.a?e.k[0].s.length:e.k.length)),a._cachingAtTime={lastFrame:initialDefaultFrame,lastIndex:0,value:n},expressionHelpers.searchExpressions(t,e,a),a.k&&s.addDynamicProperty(a),a};var t=ShapePropertyFactory.getConstructorFunction(),e=ShapePropertyFactory.getKeyframedConstructorFunction();function r(){}r.prototype={vertices:function(t,e){this.k&&this.getValue();var r=this.v;void 0!==e&&(r=this.getValueAtTime(e,0));var i,s=r._length,a=r[t],n=r.v,o=createSizedArray(s);for(i=0;i<s;i+=1)o[i]="i"===t||"o"===t?[a[i][0]-n[i][0],a[i][1]-n[i][1]]:[a[i][0],a[i][1]];return o},points:function(t){return this.vertices("v",t)},inTangents:function(t){return this.vertices("i",t)},outTangents:function(t){return this.vertices("o",t)},isClosed:function(){return this.v.c},pointOnPath:function(t,e){var r=this.v;void 0!==e&&(r=this.getValueAtTime(e,0)),this._segmentsLength||(this._segmentsLength=bez.getSegmentsLength(r));for(var i,s=this._segmentsLength,a=s.lengths,n=s.totalLength*t,o=0,h=a.length,l=0;o<h;){if(l+a[o].addedLength>n){var p=o,m=r.c&&o===h-1?0:o+1,f=(n-l)/a[o].addedLength;i=bez.getPointInSegment(r.v[p],r.v[m],r.o[p],r.i[m],f,a[o]);break}l+=a[o].addedLength,o+=1}return i||(i=r.c?[r.v[0][0],r.v[0][1]]:[r.v[r._length-1][0],r.v[r._length-1][1]]),i},vectorOnPath:function(t,e,r){t=1==t?this.v.c?0:.999:t;var i=this.pointOnPath(t,e),s=this.pointOnPath(t+.001,e),a=s[0]-i[0],n=s[1]-i[1],o=Math.sqrt(Math.pow(a,2)+Math.pow(n,2));return 0===o?[0,0]:"tangent"===r?[a/o,n/o]:[-n/o,a/o]},tangentOnPath:function(t,e){return this.vectorOnPath(t,e,"tangent")},normalOnPath:function(t,e){return this.vectorOnPath(t,e,"normal")},setGroupProperty:expressionHelpers.setGroupProperty,getValueAtTime:expressionHelpers.getStaticValueAtTime},extendPrototype([r],t),extendPrototype([r],e),e.prototype.getValueAtTime=function(t){return this._cachingAtTime||(this._cachingAtTime={shapeValue:shape_pool.clone(this.pv),lastIndex:0,lastTime:initialDefaultFrame}),t*=this.elem.globalData.frameRate,(t-=this.offsetTime)!==this._cachingAtTime.lastTime&&(this._cachingAtTime.lastIndex=this._cachingAtTime.lastTime<t?this._caching.lastIndex:0,this._cachingAtTime.lastTime=t,this.interpolateShape(t,this._cachingAtTime.shapeValue,this._cachingAtTime)),this._cachingAtTime.shapeValue},e.prototype.initiateExpression=ExpressionManager.initiateExpression;var n=ShapePropertyFactory.getShapeProp;ShapePropertyFactory.getShapeProp=function(t,e,r,i,s){var a=n(t,e,r,i,s);return a.propertyIndex=e.ix,a.lock=!1,3===r?expressionHelpers.searchExpressions(t,e.pt,a):4===r&&expressionHelpers.searchExpressions(t,e.ks,a),a.k&&t.addDynamicProperty(a),a}}(),TextProperty.prototype.getExpressionValue=function(t,e){var r=this.calculateExpression(e);if(t.t===r)return t;var i={};return this.copyData(i,t),i.t=r.toString(),i.__complete=!1,i},TextProperty.prototype.searchProperty=function(){var t=this.searchKeyframes(),e=this.searchExpressions();return this.kf=t||e,this.kf},TextProperty.prototype.searchExpressions=function(){if(this.data.d.x)return this.calculateExpression=ExpressionManager.initiateExpression.bind(this)(this.elem,this.data.d,this),this.addEffect(this.getExpressionValue.bind(this)),!0};var ShapeExpressionInterface=function(){function m(t,e,r){var i,s=[],a=t?t.length:0;for(i=0;i<a;i+=1)"gr"==t[i].ty?s.push(n(t[i],e[i],r)):"fl"==t[i].ty?s.push(o(t[i],e[i],r)):"st"==t[i].ty?s.push(h(t[i],e[i],r)):"tm"==t[i].ty?s.push(l(t[i],e[i],r)):"tr"==t[i].ty||("el"==t[i].ty?s.push(p(t[i],e[i],r)):"sr"==t[i].ty?s.push(f(t[i],e[i],r)):"sh"==t[i].ty?s.push(y(t[i],e[i],r)):"rc"==t[i].ty?s.push(c(t[i],e[i],r)):"rd"==t[i].ty?s.push(d(t[i],e[i],r)):"rp"==t[i].ty&&s.push(u(t[i],e[i],r)));return s}function n(t,e,r){var i=function(t){switch(t){case"ADBE Vectors Group":case"Contents":case 2:return i.content;default:return i.transform}};i.propertyGroup=function(t){return 1===t?i:r(t-1)};var s,a,n,o,h,l=(s=t,a=e,n=i.propertyGroup,(h=function(t){for(var e=0,r=o.length;e<r;){if(o[e]._name===t||o[e].mn===t||o[e].propertyIndex===t||o[e].ix===t||o[e].ind===t)return o[e];e+=1}if("number"==typeof t)return o[t-1]}).propertyGroup=function(t){return 1===t?h:n(t-1)},o=m(s.it,a.it,h.propertyGroup),h.numProperties=o.length,h.propertyIndex=s.cix,h._name=s.nm,h),p=function(e,t,r){function i(t){return 1==t?s:r(--t)}t.transform.mProps.o.setGroupProperty(i),t.transform.mProps.p.setGroupProperty(i),t.transform.mProps.a.setGroupProperty(i),t.transform.mProps.s.setGroupProperty(i),t.transform.mProps.r.setGroupProperty(i),t.transform.mProps.sk&&(t.transform.mProps.sk.setGroupProperty(i),t.transform.mProps.sa.setGroupProperty(i));function s(t){return e.a.ix===t||"Anchor Point"===t?s.anchorPoint:e.o.ix===t||"Opacity"===t?s.opacity:e.p.ix===t||"Position"===t?s.position:e.r.ix===t||"Rotation"===t||"ADBE Vector Rotation"===t?s.rotation:e.s.ix===t||"Scale"===t?s.scale:e.sk&&e.sk.ix===t||"Skew"===t?s.skew:e.sa&&e.sa.ix===t||"Skew Axis"===t?s.skewAxis:void 0}return t.transform.op.setGroupProperty(i),Object.defineProperties(s,{opacity:{get:ExpressionPropertyInterface(t.transform.mProps.o)},position:{get:ExpressionPropertyInterface(t.transform.mProps.p)},anchorPoint:{get:ExpressionPropertyInterface(t.transform.mProps.a)},scale:{get:ExpressionPropertyInterface(t.transform.mProps.s)},rotation:{get:ExpressionPropertyInterface(t.transform.mProps.r)},skew:{get:ExpressionPropertyInterface(t.transform.mProps.sk)},skewAxis:{get:ExpressionPropertyInterface(t.transform.mProps.sa)},_name:{value:e.nm}}),s.ty="tr",s.mn=e.mn,s.propertyGroup=r,s}(t.it[t.it.length-1],e.it[e.it.length-1],i.propertyGroup);return i.content=l,i.transform=p,Object.defineProperty(i,"_name",{get:function(){return t.nm}}),i.numProperties=t.np,i.propertyIndex=t.ix,i.nm=t.nm,i.mn=t.mn,i}function o(t,e,r){function i(t){return"Color"===t||"color"===t?i.color:"Opacity"===t||"opacity"===t?i.opacity:void 0}return Object.defineProperties(i,{color:{get:ExpressionPropertyInterface(e.c)},opacity:{get:ExpressionPropertyInterface(e.o)},_name:{value:t.nm},mn:{value:t.mn}}),e.c.setGroupProperty(r),e.o.setGroupProperty(r),i}function h(t,e,r){function i(t){return 1===t?ob:r(t-1)}function s(t){return 1===t?h:i(t-1)}var a,n,o=t.d?t.d.length:0,h={};for(a=0;a<o;a+=1)n=a,Object.defineProperty(h,t.d[n].nm,{get:ExpressionPropertyInterface(e.d.dataProps[n].p)}),e.d.dataProps[a].p.setGroupProperty(s);function l(t){return"Color"===t||"color"===t?l.color:"Opacity"===t||"opacity"===t?l.opacity:"Stroke Width"===t||"stroke width"===t?l.strokeWidth:void 0}return Object.defineProperties(l,{color:{get:ExpressionPropertyInterface(e.c)},opacity:{get:ExpressionPropertyInterface(e.o)},strokeWidth:{get:ExpressionPropertyInterface(e.w)},dash:{get:function(){return h}},_name:{value:t.nm},mn:{value:t.mn}}),e.c.setGroupProperty(i),e.o.setGroupProperty(i),e.w.setGroupProperty(i),l}function l(e,t,r){function i(t){return 1==t?s:r(--t)}function s(t){return t===e.e.ix||"End"===t||"end"===t?s.end:t===e.s.ix?s.start:t===e.o.ix?s.offset:void 0}return s.propertyIndex=e.ix,t.s.setGroupProperty(i),t.e.setGroupProperty(i),t.o.setGroupProperty(i),s.propertyIndex=e.ix,s.propertyGroup=r,Object.defineProperties(s,{start:{get:ExpressionPropertyInterface(t.s)},end:{get:ExpressionPropertyInterface(t.e)},offset:{get:ExpressionPropertyInterface(t.o)},_name:{value:e.nm}}),s.mn=e.mn,s}function p(e,t,r){function i(t){return 1==t?a:r(--t)}a.propertyIndex=e.ix;var s="tm"===t.sh.ty?t.sh.prop:t.sh;function a(t){return e.p.ix===t?a.position:e.s.ix===t?a.size:void 0}return s.s.setGroupProperty(i),s.p.setGroupProperty(i),Object.defineProperties(a,{size:{get:ExpressionPropertyInterface(s.s)},position:{get:ExpressionPropertyInterface(s.p)},_name:{value:e.nm}}),a.mn=e.mn,a}function f(e,t,r){function i(t){return 1==t?a:r(--t)}var s="tm"===t.sh.ty?t.sh.prop:t.sh;function a(t){return e.p.ix===t?a.position:e.r.ix===t?a.rotation:e.pt.ix===t?a.points:e.or.ix===t||"ADBE Vector Star Outer Radius"===t?a.outerRadius:e.os.ix===t?a.outerRoundness:!e.ir||e.ir.ix!==t&&"ADBE Vector Star Inner Radius"!==t?e.is&&e.is.ix===t?a.innerRoundness:void 0:a.innerRadius}return a.propertyIndex=e.ix,s.or.setGroupProperty(i),s.os.setGroupProperty(i),s.pt.setGroupProperty(i),s.p.setGroupProperty(i),s.r.setGroupProperty(i),e.ir&&(s.ir.setGroupProperty(i),s.is.setGroupProperty(i)),Object.defineProperties(a,{position:{get:ExpressionPropertyInterface(s.p)},rotation:{get:ExpressionPropertyInterface(s.r)},points:{get:ExpressionPropertyInterface(s.pt)},outerRadius:{get:ExpressionPropertyInterface(s.or)},outerRoundness:{get:ExpressionPropertyInterface(s.os)},innerRadius:{get:ExpressionPropertyInterface(s.ir)},innerRoundness:{get:ExpressionPropertyInterface(s.is)},_name:{value:e.nm}}),a.mn=e.mn,a}function c(e,t,r){function i(t){return 1==t?a:r(--t)}var s="tm"===t.sh.ty?t.sh.prop:t.sh;function a(t){return e.p.ix===t?a.position:e.r.ix===t?a.roundness:e.s.ix===t||"Size"===t||"ADBE Vector Rect Size"===t?a.size:void 0}return a.propertyIndex=e.ix,s.p.setGroupProperty(i),s.s.setGroupProperty(i),s.r.setGroupProperty(i),Object.defineProperties(a,{position:{get:ExpressionPropertyInterface(s.p)},roundness:{get:ExpressionPropertyInterface(s.r)},size:{get:ExpressionPropertyInterface(s.s)},_name:{value:e.nm}}),a.mn=e.mn,a}function d(e,t,r){var i=t;function s(t){if(e.r.ix===t||"Round Corners 1"===t)return s.radius}return s.propertyIndex=e.ix,i.rd.setGroupProperty(function(t){return 1==t?s:r(--t)}),Object.defineProperties(s,{radius:{get:ExpressionPropertyInterface(i.rd)},_name:{value:e.nm}}),s.mn=e.mn,s}function u(e,t,r){function i(t){return 1==t?a:r(--t)}var s=t;function a(t){return e.c.ix===t||"Copies"===t?a.copies:e.o.ix===t||"Offset"===t?a.offset:void 0}return a.propertyIndex=e.ix,s.c.setGroupProperty(i),s.o.setGroupProperty(i),Object.defineProperties(a,{copies:{get:ExpressionPropertyInterface(s.c)},offset:{get:ExpressionPropertyInterface(s.o)},_name:{value:e.nm}}),a.mn=e.mn,a}function y(t,e,r){var i=e.sh;function s(t){if("Shape"===t||"shape"===t||"Path"===t||"path"===t||"ADBE Vector Shape"===t||2===t)return s.path}return i.setGroupProperty(function(t){return 1==t?s:r(--t)}),Object.defineProperties(s,{path:{get:function(){return i.k&&i.getValue(),i}},shape:{get:function(){return i.k&&i.getValue(),i}},_name:{value:t.nm},ix:{value:t.ix},propertyIndex:{value:t.ix},mn:{value:t.mn}}),s}return function(t,e,r){var i;function s(t){if("number"==typeof t)return i[t-1];for(var e=0,r=i.length;e<r;){if(i[e]._name===t)return i[e];e+=1}}return s.propertyGroup=r,i=m(t,e,s),s.numProperties=i.length,s}}(),TextExpressionInterface=function(e){var r;function t(){}return Object.defineProperty(t,"sourceText",{get:function(){e.textProperty.getValue();var t=e.textProperty.currentData.t;return void 0!==t&&(e.textProperty.currentData.t=void 0,(r=new String(t)).value=t||new String(t)),r}}),t},LayerExpressionInterface=function(){function s(t,e){var r=new Matrix;if(r.reset(),this._elem.finalTransform.mProp.applyToMatrix(r),this._elem.hierarchy&&this._elem.hierarchy.length){var i,s=this._elem.hierarchy.length;for(i=0;i<s;i+=1)this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(r);return r.applyToPointArray(t[0],t[1],t[2]||0)}return r.applyToPointArray(t[0],t[1],t[2]||0)}function a(t,e){var r=new Matrix;if(r.reset(),this._elem.finalTransform.mProp.applyToMatrix(r),this._elem.hierarchy&&this._elem.hierarchy.length){var i,s=this._elem.hierarchy.length;for(i=0;i<s;i+=1)this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(r);return r.inversePoint(t)}return r.inversePoint(t)}function n(t){var e=new Matrix;if(e.reset(),this._elem.finalTransform.mProp.applyToMatrix(e),this._elem.hierarchy&&this._elem.hierarchy.length){var r,i=this._elem.hierarchy.length;for(r=0;r<i;r+=1)this._elem.hierarchy[r].finalTransform.mProp.applyToMatrix(e);return e.inversePoint(t)}return e.inversePoint(t)}function o(){return[1,1,1,1]}return function(e){var r;function i(t){switch(t){case"ADBE Root Vectors Group":case"Contents":case 2:return i.shapeInterface;case 1:case 6:case"Transform":case"transform":case"ADBE Transform Group":return r;case 4:case"ADBE Effect Parade":case"effects":case"Effects":return i.effect}}i.toWorld=s,i.fromWorld=a,i.toComp=s,i.fromComp=n,i.sampleImage=o,i.sourceRectAtTime=e.sourceRectAtTime.bind(e);var t=getDescriptor(r=TransformExpressionInterface((i._elem=e).finalTransform.mProp),"anchorPoint");return Object.defineProperties(i,{hasParent:{get:function(){return e.hierarchy.length}},parent:{get:function(){return e.hierarchy[0].layerInterface}},rotation:getDescriptor(r,"rotation"),scale:getDescriptor(r,"scale"),position:getDescriptor(r,"position"),opacity:getDescriptor(r,"opacity"),anchorPoint:t,anchor_point:t,transform:{get:function(){return r}},active:{get:function(){return e.isInRange}}}),i.startTime=e.data.st,i.index=e.data.ind,i.source=e.data.refId,i.height=0===e.data.ty?e.data.h:100,i.width=0===e.data.ty?e.data.w:100,i.inPoint=e.data.ip/e.comp.globalData.frameRate,i.outPoint=e.data.op/e.comp.globalData.frameRate,i._name=e.data.nm,i.registerMaskInterface=function(t){i.mask=new MaskManagerInterface(t,e)},i.registerEffectsInterface=function(t){i.effect=t},i}}(),CompExpressionInterface=function(i){function t(t){for(var e=0,r=i.layers.length;e<r;){if(i.layers[e].nm===t||i.layers[e].ind===t)return i.elements[e].layerInterface;e+=1}return null}return Object.defineProperty(t,"_name",{value:i.data.nm}),(t.layer=t).pixelAspect=1,t.height=i.data.h||i.globalData.compSize.h,t.width=i.data.w||i.globalData.compSize.w,t.pixelAspect=1,t.frameDuration=1/i.globalData.frameRate,t.displayStartTime=0,t.numLayers=i.layers.length,t},TransformExpressionInterface=function(t){function e(t){switch(t){case"scale":case"Scale":case"ADBE Scale":case 6:return e.scale;case"rotation":case"Rotation":case"ADBE Rotation":case"ADBE Rotate Z":case 10:return e.rotation;case"ADBE Rotate X":return e.xRotation;case"ADBE Rotate Y":return e.yRotation;case"position":case"Position":case"ADBE Position":case 2:return e.position;case"ADBE Position_0":return e.xPosition;case"ADBE Position_1":return e.yPosition;case"ADBE Position_2":return e.zPosition;case"anchorPoint":case"AnchorPoint":case"Anchor Point":case"ADBE AnchorPoint":case 1:return e.anchorPoint;case"opacity":case"Opacity":case 11:return e.opacity}}if(Object.defineProperty(e,"rotation",{get:ExpressionPropertyInterface(t.r||t.rz)}),Object.defineProperty(e,"zRotation",{get:ExpressionPropertyInterface(t.rz||t.r)}),Object.defineProperty(e,"xRotation",{get:ExpressionPropertyInterface(t.rx)}),Object.defineProperty(e,"yRotation",{get:ExpressionPropertyInterface(t.ry)}),Object.defineProperty(e,"scale",{get:ExpressionPropertyInterface(t.s)}),t.p)var r=ExpressionPropertyInterface(t.p);return Object.defineProperty(e,"position",{get:function(){return t.p?r():[t.px.v,t.py.v,t.pz?t.pz.v:0]}}),Object.defineProperty(e,"xPosition",{get:ExpressionPropertyInterface(t.px)}),Object.defineProperty(e,"yPosition",{get:ExpressionPropertyInterface(t.py)}),Object.defineProperty(e,"zPosition",{get:ExpressionPropertyInterface(t.pz)}),Object.defineProperty(e,"anchorPoint",{get:ExpressionPropertyInterface(t.a)}),Object.defineProperty(e,"opacity",{get:ExpressionPropertyInterface(t.o)}),Object.defineProperty(e,"skew",{get:ExpressionPropertyInterface(t.sk)}),Object.defineProperty(e,"skewAxis",{get:ExpressionPropertyInterface(t.sa)}),Object.defineProperty(e,"orientation",{get:ExpressionPropertyInterface(t.or)}),e},ProjectInterface=function(){function e(t){this.compositions.push(t)}return function(){function t(t){for(var e=0,r=this.compositions.length;e<r;){if(this.compositions[e].data&&this.compositions[e].data.nm===t)return this.compositions[e].prepareFrame&&this.compositions[e].data.xt&&this.compositions[e].prepareFrame(this.currentFrame),this.compositions[e].compInterface;e+=1}}return t.compositions=[],t.currentFrame=0,t.registerComposition=e,t}}(),EffectsExpressionInterface=function(){function l(s,t,e,r){var i,a=[],n=s.ef.length;for(i=0;i<n;i+=1)5===s.ef[i].ty?a.push(l(s.ef[i],t.effectElements[i],t.effectElements[i].propertyGroup,r)):a.push(p(t.effectElements[i],s.ef[i].ty,r,o));function o(t){return 1===t?h:e(t-1)}var h=function(t){for(var e=s.ef,r=0,i=e.length;r<i;){if(t===e[r].nm||t===e[r].mn||t===e[r].ix)return 5===e[r].ty?a[r]:a[r]();r+=1}return a[0]()};return h.propertyGroup=o,"ADBE Color Control"===s.mn&&Object.defineProperty(h,"color",{get:function(){return a[0]()}}),Object.defineProperty(h,"numProperties",{get:function(){return s.np}}),h.active=h.enabled=0!==s.en,h}function p(t,e,r,i){var s=ExpressionPropertyInterface(t.p);return t.p.setGroupProperty&&t.p.setGroupProperty(i),function(){return 10===e?r.comp.compInterface(t.p.v):s()}}return{createEffectsInterface:function(s,t){if(s.effectsManager){var e,a=[],r=s.data.ef,i=s.effectsManager.effectElements.length;for(e=0;e<i;e+=1)a.push(l(r[e],s.effectsManager.effectElements[e],t,s));return function(t){for(var e=s.data.ef||[],r=0,i=e.length;r<i;){if(t===e[r].nm||t===e[r].mn||t===e[r].ix)return a[r];r+=1}}}}}}(),MaskManagerInterface=function(){function a(t,e){this._mask=t,this._data=e}Object.defineProperty(a.prototype,"maskPath",{get:function(){return this._mask.prop.k&&this._mask.prop.getValue(),this._mask.prop}}),Object.defineProperty(a.prototype,"maskOpacity",{get:function(){return this._mask.op.k&&this._mask.op.getValue(),100*this._mask.op.v}});return function(e,t){var r,i=createSizedArray(e.viewData.length),s=e.viewData.length;for(r=0;r<s;r+=1)i[r]=new a(e.viewData[r],e.masksProperties[r]);return function(t){for(r=0;r<s;){if(e.masksProperties[r].nm===t)return i[r];r+=1}}}}(),ExpressionPropertyInterface=function(){var s={pv:0,v:0,mult:1},n={pv:[0,0,0],v:[0,0,0],mult:1};function o(i,s,a){Object.defineProperty(i,"velocity",{get:function(){return s.getVelocityAtTime(s.comp.currentFrame)}}),i.numKeys=s.keyframes?s.keyframes.length:0,i.key=function(t){if(i.numKeys){var e="";e="s"in s.keyframes[t-1]?s.keyframes[t-1].s:"e"in s.keyframes[t-2]?s.keyframes[t-2].e:s.keyframes[t-2].s;var r="unidimensional"===a?new Number(e):Object.assign({},e);return r.time=s.keyframes[t-1].t/s.elem.comp.globalData.frameRate,r}return 0},i.valueAtTime=s.getValueAtTime,i.speedAtTime=s.getSpeedAtTime,i.velocityAtTime=s.getVelocityAtTime,i.propertyGroup=s.propertyGroup}function e(){return s}return function(t){return t?"unidimensional"===t.propType?function(t){t&&"pv"in t||(t=s);var e=1/t.mult,r=t.pv*e,i=new Number(r);return i.value=r,o(i,t,"unidimensional"),function(){return t.k&&t.getValue(),r=t.v*e,i.value!==r&&((i=new Number(r)).value=r,o(i,t,"unidimensional")),i}}(t):function(e){e&&"pv"in e||(e=n);var r=1/e.mult,i=e.pv.length,s=createTypedArray("float32",i),a=createTypedArray("float32",i);return s.value=a,o(s,e,"multidimensional"),function(){e.k&&e.getValue();for(var t=0;t<i;t+=1)s[t]=a[t]=e.v[t]*r;return s}}(t):e}}(),r5,s5;function SliderEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,0,0,r)}function AngleEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,0,0,r)}function ColorEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,1,0,r)}function PointEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,1,0,r)}function LayerIndexEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,0,0,r)}function MaskIndexEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,0,0,r)}function CheckboxEffect(t,e,r){this.p=PropertyFactory.getProp(e,t.v,0,0,r)}function NoValueEffect(){this.p={}}function EffectsManager(){}function EffectsManager(t,e){var r=t.ef||[];this.effectElements=[];var i,s,a=r.length;for(i=0;i<a;i++)s=new GroupEffect(r[i],e),this.effectElements.push(s)}function GroupEffect(t,e){this.init(t,e)}r5=function(){function r(t,e){return this.textIndex=t+1,this.textTotal=e,this.v=this.getValue()*this.mult,this.v}return function(t,e){this.pv=1,this.comp=t.comp,this.elem=t,this.mult=.01,this.propType="textSelector",this.textTotal=e.totalChars,this.selectorValue=100,this.lastValue=[1,1,1],this.k=!0,this.x=!0,this.getValue=ExpressionManager.initiateExpression.bind(this)(t,e,this),this.getMult=r,this.getVelocityAtTime=expressionHelpers.getVelocityAtTime,this.kf?this.getValueAtTime=expressionHelpers.getValueAtTime.bind(this):this.getValueAtTime=expressionHelpers.getStaticValueAtTime.bind(this),this.setGroupProperty=expressionHelpers.setGroupProperty}}(),s5=TextSelectorProp.getTextSelectorProp,TextSelectorProp.getTextSelectorProp=function(t,e,r){return 1===e.t?new r5(t,e,r):s5(t,e,r)},extendPrototype([DynamicPropertyContainer],GroupEffect),GroupEffect.prototype.getValue=GroupEffect.prototype.iterateDynamicProperties,GroupEffect.prototype.init=function(t,e){this.data=t,this.effectElements=[],this.initDynamicPropertyContainer(e);var r,i,s=this.data.ef.length,a=this.data.ef;for(r=0;r<s;r+=1){switch(i=null,a[r].ty){case 0:i=new SliderEffect(a[r],e,this);break;case 1:i=new AngleEffect(a[r],e,this);break;case 2:i=new ColorEffect(a[r],e,this);break;case 3:i=new PointEffect(a[r],e,this);break;case 4:case 7:i=new CheckboxEffect(a[r],e,this);break;case 10:i=new LayerIndexEffect(a[r],e,this);break;case 11:i=new MaskIndexEffect(a[r],e,this);break;case 5:i=new EffectsManager(a[r],e,this);break;default:i=new NoValueEffect(a[r],e,this)}i&&this.effectElements.push(i)}};var lottie={},_isFrozen=!1;function setLocationHref(t){locationHref=t}function searchAnimations(){!0===standalone?animationManager.searchAnimations(animationData,standalone,renderer):animationManager.searchAnimations()}function setSubframeRendering(t){subframeEnabled=t}function loadAnimation(t){return!0===standalone&&(t.animationData=JSON.parse(animationData)),animationManager.loadAnimation(t)}function setQuality(t){if("string"==typeof t)switch(t){case"high":defaultCurveSegments=200;break;case"medium":defaultCurveSegments=50;break;case"low":defaultCurveSegments=10}else!isNaN(t)&&1<t&&(defaultCurveSegments=t);roundValues(!(50<=defaultCurveSegments))}function inBrowser(){return"undefined"!=typeof navigator}function installPlugin(t,e){"expressions"===t&&(expressionsPlugin=e)}function getFactory(t){switch(t){case"propertyFactory":return PropertyFactory;case"shapePropertyFactory":return ShapePropertyFactory;case"matrix":return Matrix}}function checkReady(){"complete"===document.readyState&&(clearInterval(readyStateCheckInterval),searchAnimations())}function getQueryVariable(t){for(var e=queryString.split("&"),r=0;r<e.length;r++){var i=e[r].split("=");if(decodeURIComponent(i[0])==t)return decodeURIComponent(i[1])}}lottie.play=animationManager.play,lottie.pause=animationManager.pause,lottie.setLocationHref=setLocationHref,lottie.togglePause=animationManager.togglePause,lottie.setSpeed=animationManager.setSpeed,lottie.setDirection=animationManager.setDirection,lottie.stop=animationManager.stop,lottie.searchAnimations=searchAnimations,lottie.registerAnimation=animationManager.registerAnimation,lottie.loadAnimation=loadAnimation,lottie.setSubframeRendering=setSubframeRendering,lottie.resize=animationManager.resize,lottie.goToAndStop=animationManager.goToAndStop,lottie.destroy=animationManager.destroy,lottie.setQuality=setQuality,lottie.inBrowser=inBrowser,lottie.installPlugin=installPlugin,lottie.freeze=animationManager.freeze,lottie.unfreeze=animationManager.unfreeze,lottie.getRegisteredAnimations=animationManager.getRegisteredAnimations,lottie.__getFactory=getFactory,lottie.version="5.6.8";var standalone="__[STANDALONE]__",animationData="__[ANIMATIONDATA]__",renderer="";if(standalone){var scripts=document.getElementsByTagName("script"),index=scripts.length-1,myScript=scripts[index]||{src:""},queryString=myScript.src.replace(/^[^\?]+\??/,"");renderer=getQueryVariable("renderer")}var readyStateCheckInterval=setInterval(checkReady,100);
	return lottie;
}));
assets/lib/lottie/lottie.js000064400001600103150755004310011753 0ustar00/*
Version: 5.6.8
License: MIT
 */
(typeof navigator !== "undefined") && (function(root, factory) {
	if (typeof define === "function" && define.amd) {
		define(function() {
			return factory(root);
		});
	} else if (typeof module === "object" && module.exports) {
		module.exports = factory(root);
	} else {
		root.lottie = factory(root);
		root.bodymovin = root.lottie;
	}
}((window || {}), function(window) {
	"use strict";
	var svgNS = "http://www.w3.org/2000/svg";

	var locationHref = '';

	var initialDefaultFrame = -999999;

	var subframeEnabled = true;
	var expressionsPlugin;
	var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
	var cachedColors = {};
	var bm_rounder = Math.round;
	var bm_rnd;
	var bm_pow = Math.pow;
	var bm_sqrt = Math.sqrt;
	var bm_abs = Math.abs;
	var bm_floor = Math.floor;
	var bm_max = Math.max;
	var bm_min = Math.min;
	var blitter = 10;

	var BMMath = {};
	(function(){
		var propertyNames = ["abs", "acos", "acosh", "asin", "asinh", "atan", "atanh", "atan2", "ceil", "cbrt", "expm1", "clz32", "cos", "cosh", "exp", "floor", "fround", "hypot", "imul", "log", "log1p", "log2", "log10", "max", "min", "pow", "random", "round", "sign", "sin", "sinh", "sqrt", "tan", "tanh", "trunc", "E", "LN10", "LN2", "LOG10E", "LOG2E", "PI", "SQRT1_2", "SQRT2"];
		var i, len = propertyNames.length;
		for(i=0;i<len;i+=1){
			BMMath[propertyNames[i]] = Math[propertyNames[i]];
		}
	}());

	function ProjectInterface(){return {};}

	BMMath.random = Math.random;
	BMMath.abs = function(val){
		var tOfVal = typeof val;
		if(tOfVal === 'object' && val.length){
			var absArr = createSizedArray(val.length);
			var i, len = val.length;
			for(i=0;i<len;i+=1){
				absArr[i] = Math.abs(val[i]);
			}
			return absArr;
		}
		return Math.abs(val);

	};
	var defaultCurveSegments = 150;
	var degToRads = Math.PI/180;
	var roundCorner = 0.5519;

	function roundValues(flag){
		if(flag){
			bm_rnd = Math.round;
		}else{
			bm_rnd = function(val){
				return val;
			};
		}
	}
	roundValues(false);

	function styleDiv(element){
		element.style.position = 'absolute';
		element.style.top = 0;
		element.style.left = 0;
		element.style.display = 'block';
		element.style.transformOrigin = element.style.webkitTransformOrigin = '0 0';
		element.style.backfaceVisibility  = element.style.webkitBackfaceVisibility = 'visible';
		element.style.transformStyle = element.style.webkitTransformStyle = element.style.mozTransformStyle = "preserve-3d";
	}

	function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier){
		this.type = type;
		this.currentTime = currentTime;
		this.totalTime = totalTime;
		this.direction = frameMultiplier < 0 ? -1 : 1;
	}

	function BMCompleteEvent(type, frameMultiplier){
		this.type = type;
		this.direction = frameMultiplier < 0 ? -1 : 1;
	}

	function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier){
		this.type = type;
		this.currentLoop = currentLoop;
		this.totalLoops = totalLoops;
		this.direction = frameMultiplier < 0 ? -1 : 1;
	}

	function BMSegmentStartEvent(type, firstFrame, totalFrames){
		this.type = type;
		this.firstFrame = firstFrame;
		this.totalFrames = totalFrames;
	}

	function BMDestroyEvent(type, target){
		this.type = type;
		this.target = target;
	}

	function BMRenderFrameErrorEvent(nativeError, currentTime) {
		this.type = 'renderFrameError';
		this.nativeError = nativeError;
		this.currentTime = currentTime;
	}

	function BMConfigErrorEvent(nativeError) {
		this.type = 'configError';
		this.nativeError = nativeError;
	}

	function BMAnimationConfigErrorEvent(type, nativeError) {
		this.type = type;
		this.nativeError = nativeError;
		this.currentTime = currentTime;
	}

	var createElementID = (function(){
		var _count = 0;
		return function createID() {
			return '__lottie_element_' + ++_count
		}
	}())

	function HSVtoRGB(h, s, v) {
		var r, g, b, i, f, p, q, t;
		i = Math.floor(h * 6);
		f = h * 6 - i;
		p = v * (1 - s);
		q = v * (1 - f * s);
		t = v * (1 - (1 - f) * s);
		switch (i % 6) {
			case 0: r = v; g = t; b = p; break;
			case 1: r = q; g = v; b = p; break;
			case 2: r = p; g = v; b = t; break;
			case 3: r = p; g = q; b = v; break;
			case 4: r = t; g = p; b = v; break;
			case 5: r = v; g = p; b = q; break;
		}
		return [ r,
			g,
			b ];
	}

	function RGBtoHSV(r, g, b) {
		var max = Math.max(r, g, b), min = Math.min(r, g, b),
			d = max - min,
			h,
			s = (max === 0 ? 0 : d / max),
			v = max / 255;

		switch (max) {
			case min: h = 0; break;
			case r: h = (g - b) + d * (g < b ? 6: 0); h /= 6 * d; break;
			case g: h = (b - r) + d * 2; h /= 6 * d; break;
			case b: h = (r - g) + d * 4; h /= 6 * d; break;
		}

		return [
			h,
			s,
			v
		];
	}

	function addSaturationToRGB(color,offset){
		var hsv = RGBtoHSV(color[0]*255,color[1]*255,color[2]*255);
		hsv[1] += offset;
		if (hsv[1] > 1) {
			hsv[1] = 1;
		}
		else if (hsv[1] <= 0) {
			hsv[1] = 0;
		}
		return HSVtoRGB(hsv[0],hsv[1],hsv[2]);
	}

	function addBrightnessToRGB(color,offset){
		var hsv = RGBtoHSV(color[0]*255,color[1]*255,color[2]*255);
		hsv[2] += offset;
		if (hsv[2] > 1) {
			hsv[2] = 1;
		}
		else if (hsv[2] < 0) {
			hsv[2] = 0;
		}
		return HSVtoRGB(hsv[0],hsv[1],hsv[2]);
	}

	function addHueToRGB(color,offset) {
		var hsv = RGBtoHSV(color[0]*255,color[1]*255,color[2]*255);
		hsv[0] += offset/360;
		if (hsv[0] > 1) {
			hsv[0] -= 1;
		}
		else if (hsv[0] < 0) {
			hsv[0] += 1;
		}
		return HSVtoRGB(hsv[0],hsv[1],hsv[2]);
	}

	var rgbToHex = (function(){
		var colorMap = [];
		var i;
		var hex;
		for(i=0;i<256;i+=1){
			hex = i.toString(16);
			colorMap[i] = hex.length == 1 ? '0' + hex : hex;
		}

		return function(r, g, b) {
			if(r<0){
				r = 0;
			}
			if(g<0){
				g = 0;
			}
			if(b<0){
				b = 0;
			}
			return '#' + colorMap[r] + colorMap[g] + colorMap[b];
		};
	}());
	function BaseEvent(){}
	BaseEvent.prototype = {
		triggerEvent: function (eventName, args) {
			if (this._cbs[eventName]) {
				var len = this._cbs[eventName].length;
				for (var i = 0; i < len; i++){
					this._cbs[eventName][i](args);
				}
			}
		},
		addEventListener: function (eventName, callback) {
			if (!this._cbs[eventName]){
				this._cbs[eventName] = [];
			}
			this._cbs[eventName].push(callback);

			return function() {
				this.removeEventListener(eventName, callback);
			}.bind(this);
		},
		removeEventListener: function (eventName,callback){
			if (!callback){
				this._cbs[eventName] = null;
			}else if(this._cbs[eventName]){
				var i = 0, len = this._cbs[eventName].length;
				while(i<len){
					if(this._cbs[eventName][i] === callback){
						this._cbs[eventName].splice(i,1);
						i -=1;
						len -= 1;
					}
					i += 1;
				}
				if(!this._cbs[eventName].length){
					this._cbs[eventName] = null;
				}
			}
		}
	};
	var createTypedArray = (function(){
		function createRegularArray(type, len){
			var i = 0, arr = [], value;
			switch(type) {
				case 'int16':
				case 'uint8c':
					value = 1;
					break;
				default:
					value = 1.1;
					break;
			}
			for(i = 0; i < len; i += 1) {
				arr.push(value);
			}
			return arr;
		}
		function createTypedArray(type, len){
			if(type === 'float32') {
				return new Float32Array(len);
			} else if(type === 'int16') {
				return new Int16Array(len);
			} else if(type === 'uint8c') {
				return new Uint8ClampedArray(len);
			}
		}
		if(typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {
			return createTypedArray;
		} else {
			return createRegularArray;
		}
	}());

	function createSizedArray(len) {
		return Array.apply(null,{length:len});
	}
	function createNS(type) {
		//return {appendChild:function(){},setAttribute:function(){},style:{}}
		return document.createElementNS(svgNS, type);
	}
	function createTag(type) {
		//return {appendChild:function(){},setAttribute:function(){},style:{}}
		return document.createElement(type);
	}
	function DynamicPropertyContainer(){};
	DynamicPropertyContainer.prototype = {
		addDynamicProperty: function(prop) {
			if(this.dynamicProperties.indexOf(prop) === -1) {
				this.dynamicProperties.push(prop);
				this.container.addDynamicProperty(this);
				this._isAnimated = true;
			}
		},
		iterateDynamicProperties: function(){
			this._mdf = false;
			var i, len = this.dynamicProperties.length;
			for(i=0;i<len;i+=1){
				this.dynamicProperties[i].getValue();
				if(this.dynamicProperties[i]._mdf) {
					this._mdf = true;
				}
			}
		},
		initDynamicPropertyContainer: function(container){
			this.container = container;
			this.dynamicProperties = [];
			this._mdf = false;
			this._isAnimated = false;
		}
	}
	var getBlendMode = (function() {

		var blendModeEnums = {
			0:'source-over',
			1:'multiply',
			2:'screen',
			3:'overlay',
			4:'darken',
			5:'lighten',
			6:'color-dodge',
			7:'color-burn',
			8:'hard-light',
			9:'soft-light',
			10:'difference',
			11:'exclusion',
			12:'hue',
			13:'saturation',
			14:'color',
			15:'luminosity'
		}

		return function(mode) {
			return blendModeEnums[mode] || '';
		}
	}())
	/*!
 Transformation Matrix v2.0
 (c) Epistemex 2014-2015
 www.epistemex.com
 By Ken Fyrstenberg
 Contributions by leeoniya.
 License: MIT, header required.
 */

	/**
	 * 2D transformation matrix object initialized with identity matrix.
	 *
	 * The matrix can synchronize a canvas context by supplying the context
	 * as an argument, or later apply current absolute transform to an
	 * existing context.
	 *
	 * All values are handled as floating point values.
	 *
	 * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix
	 * @prop {number} a - scale x
	 * @prop {number} b - shear y
	 * @prop {number} c - shear x
	 * @prop {number} d - scale y
	 * @prop {number} e - translate x
	 * @prop {number} f - translate y
	 * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context
	 * @constructor
	 */

	var Matrix = (function(){

		var _cos = Math.cos;
		var _sin = Math.sin;
		var _tan = Math.tan;
		var _rnd = Math.round;

		function reset(){
			this.props[0] = 1;
			this.props[1] = 0;
			this.props[2] = 0;
			this.props[3] = 0;
			this.props[4] = 0;
			this.props[5] = 1;
			this.props[6] = 0;
			this.props[7] = 0;
			this.props[8] = 0;
			this.props[9] = 0;
			this.props[10] = 1;
			this.props[11] = 0;
			this.props[12] = 0;
			this.props[13] = 0;
			this.props[14] = 0;
			this.props[15] = 1;
			return this;
		}

		function rotate(angle) {
			if(angle === 0){
				return this;
			}
			var mCos = _cos(angle);
			var mSin = _sin(angle);
			return this._t(mCos, -mSin,  0, 0, mSin,  mCos, 0, 0, 0,  0,  1, 0, 0, 0, 0, 1);
		}

		function rotateX(angle){
			if(angle === 0){
				return this;
			}
			var mCos = _cos(angle);
			var mSin = _sin(angle);
			return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin,  mCos, 0, 0, 0, 0, 1);
		}

		function rotateY(angle){
			if(angle === 0){
				return this;
			}
			var mCos = _cos(angle);
			var mSin = _sin(angle);
			return this._t(mCos,  0,  mSin, 0, 0, 1, 0, 0, -mSin,  0,  mCos, 0, 0, 0, 0, 1);
		}

		function rotateZ(angle){
			if(angle === 0){
				return this;
			}
			var mCos = _cos(angle);
			var mSin = _sin(angle);
			return this._t(mCos, -mSin,  0, 0, mSin,  mCos, 0, 0, 0,  0,  1, 0, 0, 0, 0, 1);
		}

		function shear(sx,sy){
			return this._t(1, sy, sx, 1, 0, 0);
		}

		function skew(ax, ay){
			return this.shear(_tan(ax), _tan(ay));
		}

		function skewFromAxis(ax, angle){
			var mCos = _cos(angle);
			var mSin = _sin(angle);
			return this._t(mCos, mSin,  0, 0, -mSin,  mCos, 0, 0, 0,  0,  1, 0, 0, 0, 0, 1)
				._t(1, 0,  0, 0, _tan(ax),  1, 0, 0, 0,  0,  1, 0, 0, 0, 0, 1)
				._t(mCos, -mSin,  0, 0, mSin,  mCos, 0, 0, 0,  0,  1, 0, 0, 0, 0, 1);
			//return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);
		}

		function scale(sx, sy, sz) {
			if(!sz && sz !== 0) {
				sz = 1;
			}
			if(sx === 1 && sy === 1 && sz === 1){
				return this;
			}
			return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);
		}

		function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {
			this.props[0] = a;
			this.props[1] = b;
			this.props[2] = c;
			this.props[3] = d;
			this.props[4] = e;
			this.props[5] = f;
			this.props[6] = g;
			this.props[7] = h;
			this.props[8] = i;
			this.props[9] = j;
			this.props[10] = k;
			this.props[11] = l;
			this.props[12] = m;
			this.props[13] = n;
			this.props[14] = o;
			this.props[15] = p;
			return this;
		}

		function translate(tx, ty, tz) {
			tz = tz || 0;
			if(tx !== 0 || ty !== 0 || tz !== 0){
				return this._t(1,0,0,0,0,1,0,0,0,0,1,0,tx,ty,tz,1);
			}
			return this;
		}

		function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {

			var _p = this.props;

			if(a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0){
				//NOTE: commenting this condition because TurboFan deoptimizes code when present
				//if(m2 !== 0 || n2 !== 0 || o2 !== 0){
				_p[12] = _p[12] * a2 + _p[15] * m2;
				_p[13] = _p[13] * f2 + _p[15] * n2;
				_p[14] = _p[14] * k2 + _p[15] * o2;
				_p[15] = _p[15] * p2;
				//}
				this._identityCalculated = false;
				return this;
			}

			var a1 = _p[0];
			var b1 = _p[1];
			var c1 = _p[2];
			var d1 = _p[3];
			var e1 = _p[4];
			var f1 = _p[5];
			var g1 = _p[6];
			var h1 = _p[7];
			var i1 = _p[8];
			var j1 = _p[9];
			var k1 = _p[10];
			var l1 = _p[11];
			var m1 = _p[12];
			var n1 = _p[13];
			var o1 = _p[14];
			var p1 = _p[15];

			/* matrix order (canvas compatible):
         * ace
         * bdf
         * 001
         */
			_p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;
			_p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2 ;
			_p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2 ;
			_p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2 ;

			_p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2 ;
			_p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2 ;
			_p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2 ;
			_p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2 ;

			_p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2 ;
			_p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2 ;
			_p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2 ;
			_p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2 ;

			_p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2 ;
			_p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2 ;
			_p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2 ;
			_p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2 ;

			this._identityCalculated = false;
			return this;
		}

		function isIdentity() {
			if(!this._identityCalculated){
				this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);
				this._identityCalculated = true;
			}
			return this._identity;
		}

		function equals(matr){
			var i = 0;
			while (i < 16) {
				if(matr.props[i] !== this.props[i]) {
					return false;
				}
				i+=1;
			}
			return true;
		}

		function clone(matr){
			var i;
			for(i=0;i<16;i+=1){
				matr.props[i] = this.props[i];
			}
		}

		function cloneFromProps(props){
			var i;
			for(i=0;i<16;i+=1){
				this.props[i] = props[i];
			}
		}

		function applyToPoint(x, y, z) {

			return {
				x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],
				y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],
				z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]
			};
			/*return {
         x: x * me.a + y * me.c + me.e,
         y: x * me.b + y * me.d + me.f
         };*/
		}
		function applyToX(x, y, z) {
			return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];
		}
		function applyToY(x, y, z) {
			return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];
		}
		function applyToZ(x, y, z) {
			return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];
		}

		function getInverseMatrix() {
			var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];
			var a = this.props[5]/determinant;
			var b = - this.props[1]/determinant;
			var c = - this.props[4]/determinant;
			var d = this.props[0]/determinant;
			var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12])/determinant;
			var f = - (this.props[0] * this.props[13] - this.props[1] * this.props[12])/determinant;
			var inverseMatrix = new Matrix();
			inverseMatrix.props[0] = a;
			inverseMatrix.props[1] = b;
			inverseMatrix.props[4] = c;
			inverseMatrix.props[5] = d;
			inverseMatrix.props[12] = e;
			inverseMatrix.props[13] = f;
			return inverseMatrix;
		}

		function inversePoint(pt) {
			var inverseMatrix = this.getInverseMatrix();
			return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0)
		}

		function inversePoints(pts){
			var i, len = pts.length, retPts = [];
			for(i=0;i<len;i+=1){
				retPts[i] = inversePoint(pts[i]);
			}
			return retPts;
		}

		function applyToTriplePoints(pt1, pt2, pt3) {
			var arr = createTypedArray('float32', 6);
			if(this.isIdentity()) {
				arr[0] = pt1[0];
				arr[1] = pt1[1];
				arr[2] = pt2[0];
				arr[3] = pt2[1];
				arr[4] = pt3[0];
				arr[5] = pt3[1];
			} else {
				var p0 = this.props[0], p1 = this.props[1], p4 = this.props[4], p5 = this.props[5], p12 = this.props[12], p13 = this.props[13];
				arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;
				arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;
				arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;
				arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;
				arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;
				arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;
			}
			return arr;
		}

		function applyToPointArray(x,y,z){
			var arr;
			if(this.isIdentity()) {
				arr = [x,y,z];
			} else {
				arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];
			}
			return arr;
		}

		function applyToPointStringified(x, y) {
			if(this.isIdentity()) {
				return x + ',' + y;
			}
			var _p = this.props;
			return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100+','+ Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;
		}

		function toCSS() {
			//Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.
			/*if(this.isIdentity()) {
            return '';
        }*/
			var i = 0;
			var props = this.props;
			var cssValue = 'matrix3d(';
			var v = 10000;
			while(i<16){
				cssValue += _rnd(props[i]*v)/v;
				cssValue += i === 15 ? ')':',';
				i += 1;
			}
			return cssValue;
		}

		function roundMatrixProperty(val) {
			var v = 10000;
			if((val < 0.000001 && val > 0) || (val > -0.000001 && val < 0)) {
				return _rnd(val * v) / v;
			}
			return val;
		}

		function to2dCSS() {
			//Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.
			/*if(this.isIdentity()) {
            return '';
        }*/
			var props = this.props;
			var _a = roundMatrixProperty(props[0]);
			var _b = roundMatrixProperty(props[1]);
			var _c = roundMatrixProperty(props[4]);
			var _d = roundMatrixProperty(props[5]);
			var _e = roundMatrixProperty(props[12]);
			var _f = roundMatrixProperty(props[13]);
			return "matrix(" + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ")";
		}

		return function(){
			this.reset = reset;
			this.rotate = rotate;
			this.rotateX = rotateX;
			this.rotateY = rotateY;
			this.rotateZ = rotateZ;
			this.skew = skew;
			this.skewFromAxis = skewFromAxis;
			this.shear = shear;
			this.scale = scale;
			this.setTransform = setTransform;
			this.translate = translate;
			this.transform = transform;
			this.applyToPoint = applyToPoint;
			this.applyToX = applyToX;
			this.applyToY = applyToY;
			this.applyToZ = applyToZ;
			this.applyToPointArray = applyToPointArray;
			this.applyToTriplePoints = applyToTriplePoints;
			this.applyToPointStringified = applyToPointStringified;
			this.toCSS = toCSS;
			this.to2dCSS = to2dCSS;
			this.clone = clone;
			this.cloneFromProps = cloneFromProps;
			this.equals = equals;
			this.inversePoints = inversePoints;
			this.inversePoint = inversePoint;
			this.getInverseMatrix = getInverseMatrix;
			this._t = this.transform;
			this.isIdentity = isIdentity;
			this._identity = true;
			this._identityCalculated = false;

			this.props = createTypedArray('float32', 16);
			this.reset();
		};
	}());

	/*
 Copyright 2014 David Bau.

 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.

 */

	(function (pool, math) {
//
// The following constants are related to IEEE 754 limits.
//
		var global = this,
			width = 256,        // each RC4 output is 0 <= x < 256
			chunks = 6,         // at least six RC4 outputs for each double
			digits = 52,        // there are 52 significant digits in a double
			rngname = 'random', // rngname: name for Math.random and Math.seedrandom
			startdenom = math.pow(width, chunks),
			significance = math.pow(2, digits),
			overflow = significance * 2,
			mask = width - 1,
			nodecrypto;         // node.js crypto module, initialized at the bottom.

//
// seedrandom()
// This is the seedrandom function described above.
//
		function seedrandom(seed, options, callback) {
			var key = [];
			options = (options === true) ? { entropy: true } : (options || {});

			// Flatten the seed string or build one from local entropy if needed.
			var shortseed = mixkey(flatten(
				options.entropy ? [seed, tostring(pool)] :
					(seed === null) ? autoseed() : seed, 3), key);

			// Use the seed to initialize an ARC4 generator.
			var arc4 = new ARC4(key);

			// This function returns a random double in [0, 1) that contains
			// randomness in every bit of the mantissa of the IEEE 754 value.
			var prng = function() {
				var n = arc4.g(chunks),             // Start with a numerator n < 2 ^ 48
					d = startdenom,                 //   and denominator d = 2 ^ 48.
					x = 0;                          //   and no 'extra last byte'.
				while (n < significance) {          // Fill up all significant digits by
					n = (n + x) * width;              //   shifting numerator and
					d *= width;                       //   denominator and generating a
					x = arc4.g(1);                    //   new least-significant-byte.
				}
				while (n >= overflow) {             // To avoid rounding up, before adding
					n /= 2;                           //   last byte, shift everything
					d /= 2;                           //   right using integer math until
					x >>>= 1;                         //   we have exactly the desired bits.
				}
				return (n + x) / d;                 // Form the number within [0, 1).
			};

			prng.int32 = function() { return arc4.g(4) | 0; };
			prng.quick = function() { return arc4.g(4) / 0x100000000; };
			prng.double = prng;

			// Mix the randomness into accumulated entropy.
			mixkey(tostring(arc4.S), pool);

			// Calling convention: what to return as a function of prng, seed, is_math.
			return (options.pass || callback ||
				function(prng, seed, is_math_call, state) {
					if (state) {
						// Load the arc4 state from the given state if it has an S array.
						if (state.S) { copy(state, arc4); }
						// Only provide the .state method if requested via options.state.
						prng.state = function() { return copy(arc4, {}); };
					}

					// If called as a method of Math (Math.seedrandom()), mutate
					// Math.random because that is how seedrandom.js has worked since v1.0.
					if (is_math_call) { math[rngname] = prng; return seed; }

						// Otherwise, it is a newer calling convention, so return the
					// prng directly.
					else return prng;
				})(
				prng,
				shortseed,
				'global' in options ? options.global : (this == math),
				options.state);
		}
		math['seed' + rngname] = seedrandom;

//
// ARC4
//
// An ARC4 implementation.  The constructor takes a key in the form of
// an array of at most (width) integers that should be 0 <= x < (width).
//
// The g(count) method returns a pseudorandom integer that concatenates
// the next (count) outputs from ARC4.  Its return value is a number x
// that is in the range 0 <= x < (width ^ count).
//
		function ARC4(key) {
			var t, keylen = key.length,
				me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];

			// The empty key [] is treated as [0].
			if (!keylen) { key = [keylen++]; }

			// Set up S using the standard key scheduling algorithm.
			while (i < width) {
				s[i] = i++;
			}
			for (i = 0; i < width; i++) {
				s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];
				s[j] = t;
			}

			// The "g" method returns the next (count) outputs as one number.
			me.g = function(count) {
				// Using instance members instead of closure state nearly doubles speed.
				var t, r = 0,
					i = me.i, j = me.j, s = me.S;
				while (count--) {
					t = s[i = mask & (i + 1)];
					r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];
				}
				me.i = i; me.j = j;
				return r;
				// For robust unpredictability, the function call below automatically
				// discards an initial batch of values.  This is called RC4-drop[256].
				// See http://google.com/search?q=rsa+fluhrer+response&btnI
			};
		}

//
// copy()
// Copies internal state of ARC4 to or from a plain object.
//
		function copy(f, t) {
			t.i = f.i;
			t.j = f.j;
			t.S = f.S.slice();
			return t;
		}

//
// flatten()
// Converts an object tree to nested arrays of strings.
//
		function flatten(obj, depth) {
			var result = [], typ = (typeof obj), prop;
			if (depth && typ == 'object') {
				for (prop in obj) {
					try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}
				}
			}
			return (result.length ? result : typ == 'string' ? obj : obj + '\0');
		}

//
// mixkey()
// Mixes a string seed into a key that is an array of integers, and
// returns a shortened string seed that is equivalent to the result key.
//
		function mixkey(seed, key) {
			var stringseed = seed + '', smear, j = 0;
			while (j < stringseed.length) {
				key[mask & j] =
					mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));
			}
			return tostring(key);
		}

//
// autoseed()
// Returns an object for autoseeding, using window.crypto and Node crypto
// module if available.
//
		function autoseed() {
			try {
				if (nodecrypto) { return tostring(nodecrypto.randomBytes(width)); }
				var out = new Uint8Array(width);
				(global.crypto || global.msCrypto).getRandomValues(out);
				return tostring(out);
			} catch (e) {
				var browser = global.navigator,
					plugins = browser && browser.plugins;
				return [+new Date(), global, plugins, global.screen, tostring(pool)];
			}
		}

//
// tostring()
// Converts an array of charcodes to a string
//
		function tostring(a) {
			return String.fromCharCode.apply(0, a);
		}

//
// When seedrandom.js is loaded, we immediately mix a few bits
// from the built-in RNG into the entropy pool.  Because we do
// not want to interfere with deterministic PRNG state later,
// seedrandom will not call math.random on its own again after
// initialization.
//
		mixkey(math.random(), pool);

//
// Nodejs and AMD support: export the implementation as a module using
// either convention.
//

// End anonymous scope, and pass initial values.
	})(
		[],     // pool: entropy pool starts empty
		BMMath    // math: package containing random, pow, and seedrandom
	);
	var BezierFactory = (function(){
		/**
		 * BezierEasing - use bezier curve for transition easing function
		 * by Gaëtan Renaudeau 2014 - 2015 – MIT License
		 *
		 * Credits: is based on Firefox's nsSMILKeySpline.cpp
		 * Usage:
		 * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])
		 * spline.get(x) => returns the easing value | x must be in [0, 1] range
		 *
		 */

		var ob = {};
		ob.getBezierEasing = getBezierEasing;
		var beziers = {};

		function getBezierEasing(a,b,c,d,nm){
			var str = nm || ('bez_' + a+'_'+b+'_'+c+'_'+d).replace(/\./g, 'p');
			if(beziers[str]){
				return beziers[str];
			}
			var bezEasing = new BezierEasing([a,b,c,d]);
			beziers[str] = bezEasing;
			return bezEasing;
		}

// These values are established by empiricism with tests (tradeoff: performance VS precision)
		var NEWTON_ITERATIONS = 4;
		var NEWTON_MIN_SLOPE = 0.001;
		var SUBDIVISION_PRECISION = 0.0000001;
		var SUBDIVISION_MAX_ITERATIONS = 10;

		var kSplineTableSize = 11;
		var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);

		var float32ArraySupported = typeof Float32Array === "function";

		function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
		function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }
		function C (aA1)      { return 3.0 * aA1; }

// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
		function calcBezier (aT, aA1, aA2) {
			return ((A(aA1, aA2)*aT + B(aA1, aA2))*aT + C(aA1))*aT;
		}

// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.
		function getSlope (aT, aA1, aA2) {
			return 3.0 * A(aA1, aA2)*aT*aT + 2.0 * B(aA1, aA2) * aT + C(aA1);
		}

		function binarySubdivide (aX, aA, aB, mX1, mX2) {
			var currentX, currentT, i = 0;
			do {
				currentT = aA + (aB - aA) / 2.0;
				currentX = calcBezier(currentT, mX1, mX2) - aX;
				if (currentX > 0.0) {
					aB = currentT;
				} else {
					aA = currentT;
				}
			} while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
			return currentT;
		}

		function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {
			for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
				var currentSlope = getSlope(aGuessT, mX1, mX2);
				if (currentSlope === 0.0) return aGuessT;
				var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
				aGuessT -= currentX / currentSlope;
			}
			return aGuessT;
		}

		/**
		 * points is an array of [ mX1, mY1, mX2, mY2 ]
		 */
		function BezierEasing (points) {
			this._p = points;
			this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);
			this._precomputed = false;

			this.get = this.get.bind(this);
		}

		BezierEasing.prototype = {

			get: function (x) {
				var mX1 = this._p[0],
					mY1 = this._p[1],
					mX2 = this._p[2],
					mY2 = this._p[3];
				if (!this._precomputed) this._precompute();
				if (mX1 === mY1 && mX2 === mY2) return x; // linear
				// Because JavaScript number are imprecise, we should guarantee the extremes are right.
				if (x === 0) return 0;
				if (x === 1) return 1;
				return calcBezier(this._getTForX(x), mY1, mY2);
			},

			// Private part

			_precompute: function () {
				var mX1 = this._p[0],
					mY1 = this._p[1],
					mX2 = this._p[2],
					mY2 = this._p[3];
				this._precomputed = true;
				if (mX1 !== mY1 || mX2 !== mY2)
					this._calcSampleValues();
			},

			_calcSampleValues: function () {
				var mX1 = this._p[0],
					mX2 = this._p[2];
				for (var i = 0; i < kSplineTableSize; ++i) {
					this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
				}
			},

			/**
			 * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.
			 */
			_getTForX: function (aX) {
				var mX1 = this._p[0],
					mX2 = this._p[2],
					mSampleValues = this._mSampleValues;

				var intervalStart = 0.0;
				var currentSample = 1;
				var lastSample = kSplineTableSize - 1;

				for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {
					intervalStart += kSampleStepSize;
				}
				--currentSample;

				// Interpolate to provide an initial guess for t
				var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample+1] - mSampleValues[currentSample]);
				var guessForT = intervalStart + dist * kSampleStepSize;

				var initialSlope = getSlope(guessForT, mX1, mX2);
				if (initialSlope >= NEWTON_MIN_SLOPE) {
					return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
				} else if (initialSlope === 0.0) {
					return guessForT;
				} else {
					return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
				}
			}
		};

		return ob;

	}());
	(function () {
		var lastTime = 0;
		var vendors = ['ms', 'moz', 'webkit', 'o'];
		for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
			window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
			window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
		}
		if(!window.requestAnimationFrame)
			window.requestAnimationFrame = function (callback, element) {
				var currTime = new Date().getTime();
				var timeToCall = Math.max(0, 16 - (currTime - lastTime));
				var id = setTimeout(function () {
						callback(currTime + timeToCall);
					},
					timeToCall);
				lastTime = currTime + timeToCall;
				return id;
			};
		if(!window.cancelAnimationFrame)
			window.cancelAnimationFrame = function (id) {
				clearTimeout(id);
			};
	}());

	function extendPrototype(sources,destination){
		var i, len = sources.length, sourcePrototype;
		for (i = 0;i < len;i += 1) {
			sourcePrototype = sources[i].prototype;
			for (var attr in sourcePrototype) {
				if (sourcePrototype.hasOwnProperty(attr)) destination.prototype[attr] = sourcePrototype[attr];
			}
		}
	}

	function getDescriptor(object, prop) {
		return Object.getOwnPropertyDescriptor(object, prop);
	}

	function createProxyFunction(prototype) {
		function ProxyFunction(){}
		ProxyFunction.prototype = prototype;
		return ProxyFunction;
	}
	function bezFunction(){

		var easingFunctions = [];
		var math = Math;

		function pointOnLine2D(x1,y1, x2,y2, x3,y3){
			var det1 = (x1*y2) + (y1*x3) + (x2*y3) - (x3*y2) - (y3*x1) - (x2*y1);
			return det1 > -0.001 && det1 < 0.001;
		}

		function pointOnLine3D(x1,y1,z1, x2,y2,z2, x3,y3,z3){
			if(z1 === 0 && z2 === 0 && z3 === 0) {
				return pointOnLine2D(x1,y1, x2,y2, x3,y3);
			}
			var dist1 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2) + Math.pow(z2 - z1, 2));
			var dist2 = Math.sqrt(Math.pow(x3 - x1, 2) + Math.pow(y3 - y1, 2) + Math.pow(z3 - z1, 2));
			var dist3 = Math.sqrt(Math.pow(x3 - x2, 2) + Math.pow(y3 - y2, 2) + Math.pow(z3 - z2, 2));
			var diffDist;
			if(dist1 > dist2){
				if(dist1 > dist3){
					diffDist = dist1 - dist2 - dist3;
				} else {
					diffDist = dist3 - dist2 - dist1;
				}
			} else if(dist3 > dist2){
				diffDist = dist3 - dist2 - dist1;
			} else {
				diffDist = dist2 - dist1 - dist3;
			}
			return diffDist > -0.0001 && diffDist < 0.0001;
		}

		var getBezierLength = (function(){

			return function(pt1,pt2,pt3,pt4){
				var curveSegments = defaultCurveSegments;
				var k;
				var i, len;
				var ptCoord,perc,addedLength = 0;
				var ptDistance;
				var point = [],lastPoint = [];
				var lengthData = bezier_length_pool.newElement();
				len = pt3.length;
				for(k=0;k<curveSegments;k+=1){
					perc = k/(curveSegments-1);
					ptDistance = 0;
					for(i=0;i<len;i+=1){
						ptCoord = bm_pow(1-perc,3)*pt1[i]+3*bm_pow(1-perc,2)*perc*pt3[i]+3*(1-perc)*bm_pow(perc,2)*pt4[i]+bm_pow(perc,3)*pt2[i];
						point[i] = ptCoord;
						if(lastPoint[i] !== null){
							ptDistance += bm_pow(point[i] - lastPoint[i],2);
						}
						lastPoint[i] = point[i];
					}
					if(ptDistance){
						ptDistance = bm_sqrt(ptDistance);
						addedLength += ptDistance;
					}
					lengthData.percents[k] = perc;
					lengthData.lengths[k] = addedLength;
				}
				lengthData.addedLength = addedLength;
				return lengthData;
			};
		}());

		function getSegmentsLength(shapeData) {
			var segmentsLength = segments_length_pool.newElement();
			var closed = shapeData.c;
			var pathV = shapeData.v;
			var pathO = shapeData.o;
			var pathI = shapeData.i;
			var i, len = shapeData._length;
			var lengths = segmentsLength.lengths;
			var totalLength = 0;
			for(i=0;i<len-1;i+=1){
				lengths[i] = getBezierLength(pathV[i],pathV[i+1],pathO[i],pathI[i+1]);
				totalLength += lengths[i].addedLength;
			}
			if(closed && len){
				lengths[i] = getBezierLength(pathV[i],pathV[0],pathO[i],pathI[0]);
				totalLength += lengths[i].addedLength;
			}
			segmentsLength.totalLength = totalLength;
			return segmentsLength;
		}

		function BezierData(length){
			this.segmentLength = 0;
			this.points = new Array(length);
		}

		function PointData(partial,point){
			this.partialLength = partial;
			this.point = point;
		}

		var buildBezierData = (function(){

			var storedData = {};

			return function (pt1, pt2, pt3, pt4){
				var bezierName = (pt1[0]+'_'+pt1[1]+'_'+pt2[0]+'_'+pt2[1]+'_'+pt3[0]+'_'+pt3[1]+'_'+pt4[0]+'_'+pt4[1]).replace(/\./g, 'p');
				if(!storedData[bezierName]){
					var curveSegments = defaultCurveSegments;
					var k, i, len;
					var ptCoord,perc,addedLength = 0;
					var ptDistance;
					var point,lastPoint = null;
					if (pt1.length === 2 && (pt1[0] != pt2[0] || pt1[1] != pt2[1]) && pointOnLine2D(pt1[0],pt1[1],pt2[0],pt2[1],pt1[0]+pt3[0],pt1[1]+pt3[1]) && pointOnLine2D(pt1[0],pt1[1],pt2[0],pt2[1],pt2[0]+pt4[0],pt2[1]+pt4[1])){
						curveSegments = 2;
					}
					var bezierData = new BezierData(curveSegments);
					len = pt3.length;
					for (k = 0; k < curveSegments; k += 1) {
						point = createSizedArray(len);
						perc = k / (curveSegments - 1);
						ptDistance = 0;
						for (i = 0; i < len; i += 1){
							ptCoord = bm_pow(1-perc,3)*pt1[i]+3*bm_pow(1-perc,2)*perc*(pt1[i] + pt3[i])+3*(1-perc)*bm_pow(perc,2)*(pt2[i] + pt4[i])+bm_pow(perc,3)*pt2[i];
							point[i] = ptCoord;
							if(lastPoint !== null){
								ptDistance += bm_pow(point[i] - lastPoint[i],2);
							}
						}
						ptDistance = bm_sqrt(ptDistance);
						addedLength += ptDistance;
						bezierData.points[k] = new PointData(ptDistance, point);
						lastPoint = point;
					}
					bezierData.segmentLength = addedLength;
					storedData[bezierName] = bezierData;
				}
				return storedData[bezierName];
			};
		}());

		function getDistancePerc(perc,bezierData){
			var percents = bezierData.percents;
			var lengths = bezierData.lengths;
			var len = percents.length;
			var initPos = bm_floor((len-1)*perc);
			var lengthPos = perc*bezierData.addedLength;
			var lPerc = 0;
			if(initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]){
				return percents[initPos];
			}else{
				var dir = lengths[initPos] > lengthPos ? -1 : 1;
				var flag = true;
				while(flag){
					if(lengths[initPos] <= lengthPos && lengths[initPos+1] > lengthPos){
						lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos+1] - lengths[initPos]);
						flag = false;
					}else{
						initPos += dir;
					}
					if(initPos < 0 || initPos >= len - 1){
						//FIX for TypedArrays that don't store floating point values with enough accuracy
						if(initPos === len - 1) {
							return percents[initPos];
						}
						flag = false;
					}
				}
				return percents[initPos] + (percents[initPos+1] - percents[initPos])*lPerc;
			}
		}

		function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {
			var t1 = getDistancePerc(percent,bezierData);
			var u0 = 1;
			var u1 = 1 - t1;
			var ptX = Math.round((u1*u1*u1* pt1[0] + (t1*u1*u1 + u1*t1*u1 + u1*u1*t1)* pt3[0] + (t1*t1*u1 + u1*t1*t1 + t1*u1*t1)*pt4[0] + t1*t1*t1* pt2[0])* 1000) / 1000;
			var ptY = Math.round((u1*u1*u1* pt1[1] + (t1*u1*u1 + u1*t1*u1 + u1*u1*t1)* pt3[1] + (t1*t1*u1 + u1*t1*t1 + t1*u1*t1)*pt4[1] + t1*t1*t1* pt2[1])* 1000) / 1000;
			return [ptX, ptY];
		}

		function getSegmentArray() {

		}

		var bezier_segment_points = createTypedArray('float32', 8);

		function getNewSegment(pt1,pt2,pt3,pt4,startPerc,endPerc, bezierData){

			startPerc = startPerc < 0 ? 0 : startPerc > 1 ? 1 : startPerc;
			var t0 = getDistancePerc(startPerc,bezierData);
			endPerc = endPerc > 1 ? 1 : endPerc;
			var t1 = getDistancePerc(endPerc,bezierData);
			var i, len = pt1.length;
			var u0 = 1 - t0;
			var u1 = 1 - t1;
			var u0u0u0 = u0*u0*u0;
			var t0u0u0_3 = t0*u0*u0*3;
			var t0t0u0_3 = t0*t0*u0*3;
			var t0t0t0 = t0*t0*t0;
			//
			var u0u0u1 = u0*u0*u1;
			var t0u0u1_3 = t0*u0*u1 + u0*t0*u1 + u0*u0*t1;
			var t0t0u1_3 = t0*t0*u1 + u0*t0*t1 + t0*u0*t1;
			var t0t0t1 = t0*t0*t1;
			//
			var u0u1u1 = u0*u1*u1;
			var t0u1u1_3 = t0*u1*u1 + u0*t1*u1 + u0*u1*t1;
			var t0t1u1_3 = t0*t1*u1 + u0*t1*t1 + t0*u1*t1;
			var t0t1t1 = t0*t1*t1;
			//
			var u1u1u1 = u1*u1*u1;
			var t1u1u1_3 = t1*u1*u1 + u1*t1*u1 + u1*u1*t1;
			var t1t1u1_3 = t1*t1*u1 + u1*t1*t1 + t1*u1*t1;
			var t1t1t1 = t1*t1*t1;
			for(i=0;i<len;i+=1){
				bezier_segment_points[i * 4] = Math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000;
				bezier_segment_points[i * 4 + 1] = Math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000;
				bezier_segment_points[i * 4 + 2] = Math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000;
				bezier_segment_points[i * 4 + 3] = Math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000;
			}

			return bezier_segment_points;
		}

		return {
			getSegmentsLength : getSegmentsLength,
			getNewSegment : getNewSegment,
			getPointInSegment : getPointInSegment,
			buildBezierData : buildBezierData,
			pointOnLine2D : pointOnLine2D,
			pointOnLine3D : pointOnLine3D
		};
	}

	var bez = bezFunction();
	function dataFunctionManager(){

		//var tCanvasHelper = createTag('canvas').getContext('2d');

		function completeLayers(layers, comps, fontManager){
			var layerData;
			var animArray, lastFrame;
			var i, len = layers.length;
			var j, jLen, k, kLen;
			for(i=0;i<len;i+=1){
				layerData = layers[i];
				if(!('ks' in layerData) || layerData.completed){
					continue;
				}
				layerData.completed = true;
				if(layerData.tt){
					layers[i-1].td = layerData.tt;
				}
				animArray = [];
				lastFrame = -1;
				if(layerData.hasMask){
					var maskProps = layerData.masksProperties;
					jLen = maskProps.length;
					for(j=0;j<jLen;j+=1){
						if(maskProps[j].pt.k.i){
							convertPathsToAbsoluteValues(maskProps[j].pt.k);
						}else{
							kLen = maskProps[j].pt.k.length;
							for(k=0;k<kLen;k+=1){
								if(maskProps[j].pt.k[k].s){
									convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);
								}
								if(maskProps[j].pt.k[k].e){
									convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);
								}
							}
						}
					}
				}
				if(layerData.ty===0){
					layerData.layers = findCompLayers(layerData.refId, comps);
					completeLayers(layerData.layers,comps, fontManager);
				}else if(layerData.ty === 4){
					completeShapes(layerData.shapes);
				}else if(layerData.ty == 5){
					completeText(layerData, fontManager);
				}
			}
		}

		function findCompLayers(id,comps){
			var i = 0, len = comps.length;
			while(i<len){
				if(comps[i].id === id){
					if(!comps[i].layers.__used) {
						comps[i].layers.__used = true;
						return comps[i].layers;
					}
					return JSON.parse(JSON.stringify(comps[i].layers));
				}
				i += 1;
			}
		}

		function completeShapes(arr){
			var i, len = arr.length;
			var j, jLen;
			var hasPaths = false;
			for(i=len-1;i>=0;i-=1){
				if(arr[i].ty == 'sh'){
					if(arr[i].ks.k.i){
						convertPathsToAbsoluteValues(arr[i].ks.k);
					}else{
						jLen = arr[i].ks.k.length;
						for(j=0;j<jLen;j+=1){
							if(arr[i].ks.k[j].s){
								convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);
							}
							if(arr[i].ks.k[j].e){
								convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);
							}
						}
					}
					hasPaths = true;
				}else if(arr[i].ty == 'gr'){
					completeShapes(arr[i].it);
				}
			}
			/*if(hasPaths){
            //mx: distance
            //ss: sensitivity
            //dc: decay
            arr.splice(arr.length-1,0,{
                "ty": "ms",
                "mx":20,
                "ss":10,
                 "dc":0.001,
                "maxDist":200
            });
        }*/
		}

		function convertPathsToAbsoluteValues(path){
			var i, len = path.i.length;
			for(i=0;i<len;i+=1){
				path.i[i][0] += path.v[i][0];
				path.i[i][1] += path.v[i][1];
				path.o[i][0] += path.v[i][0];
				path.o[i][1] += path.v[i][1];
			}
		}

		function checkVersion(minimum,animVersionString){
			var animVersion = animVersionString ? animVersionString.split('.') : [100,100,100];
			if(minimum[0]>animVersion[0]){
				return true;
			} else if(animVersion[0] > minimum[0]){
				return false;
			}
			if(minimum[1]>animVersion[1]){
				return true;
			} else if(animVersion[1] > minimum[1]){
				return false;
			}
			if(minimum[2]>animVersion[2]){
				return true;
			} else if(animVersion[2] > minimum[2]){
				return false;
			}
		}

		var checkText = (function(){
			var minimumVersion = [4,4,14];

			function updateTextLayer(textLayer){
				var documentData = textLayer.t.d;
				textLayer.t.d = {
					k: [
						{
							s:documentData,
							t:0
						}
					]
				};
			}

			function iterateLayers(layers){
				var i, len = layers.length;
				for(i=0;i<len;i+=1){
					if(layers[i].ty === 5){
						updateTextLayer(layers[i]);
					}
				}
			}

			return function (animationData){
				if(checkVersion(minimumVersion,animationData.v)){
					iterateLayers(animationData.layers);
					if(animationData.assets){
						var i, len = animationData.assets.length;
						for(i=0;i<len;i+=1){
							if(animationData.assets[i].layers){
								iterateLayers(animationData.assets[i].layers);

							}
						}
					}
				}
			};
		}());

		var checkChars = (function() {
			var minimumVersion = [4,7,99];
			return function (animationData){
				if(animationData.chars && !checkVersion(minimumVersion,animationData.v)){
					var i, len = animationData.chars.length, j, jLen, k, kLen;
					var pathData, paths;
					for(i = 0; i < len; i += 1) {
						if(animationData.chars[i].data && animationData.chars[i].data.shapes) {
							paths = animationData.chars[i].data.shapes[0].it;
							jLen = paths.length;

							for(j = 0; j < jLen; j += 1) {
								pathData = paths[j].ks.k;
								if(!pathData.__converted) {
									convertPathsToAbsoluteValues(paths[j].ks.k);
									pathData.__converted = true;
								}
							}
						}
					}
				}
			};
		}());

		var checkColors = (function(){
			var minimumVersion = [4,1,9];

			function iterateShapes(shapes){
				var i, len = shapes.length;
				var j, jLen;
				for(i=0;i<len;i+=1){
					if(shapes[i].ty === 'gr'){
						iterateShapes(shapes[i].it);
					}else if(shapes[i].ty === 'fl' || shapes[i].ty === 'st'){
						if(shapes[i].c.k && shapes[i].c.k[0].i){
							jLen = shapes[i].c.k.length;
							for(j=0;j<jLen;j+=1){
								if(shapes[i].c.k[j].s){
									shapes[i].c.k[j].s[0] /= 255;
									shapes[i].c.k[j].s[1] /= 255;
									shapes[i].c.k[j].s[2] /= 255;
									shapes[i].c.k[j].s[3] /= 255;
								}
								if(shapes[i].c.k[j].e){
									shapes[i].c.k[j].e[0] /= 255;
									shapes[i].c.k[j].e[1] /= 255;
									shapes[i].c.k[j].e[2] /= 255;
									shapes[i].c.k[j].e[3] /= 255;
								}
							}
						} else {
							shapes[i].c.k[0] /= 255;
							shapes[i].c.k[1] /= 255;
							shapes[i].c.k[2] /= 255;
							shapes[i].c.k[3] /= 255;
						}
					}
				}
			}

			function iterateLayers(layers){
				var i, len = layers.length;
				for(i=0;i<len;i+=1){
					if(layers[i].ty === 4){
						iterateShapes(layers[i].shapes);
					}
				}
			}

			return function (animationData){
				if(checkVersion(minimumVersion,animationData.v)){
					iterateLayers(animationData.layers);
					if(animationData.assets){
						var i, len = animationData.assets.length;
						for(i=0;i<len;i+=1){
							if(animationData.assets[i].layers){
								iterateLayers(animationData.assets[i].layers);

							}
						}
					}
				}
			};
		}());

		var checkShapes = (function(){
			var minimumVersion = [4,4,18];



			function completeShapes(arr){
				var i, len = arr.length;
				var j, jLen;
				var hasPaths = false;
				for(i=len-1;i>=0;i-=1){
					if(arr[i].ty == 'sh'){
						if(arr[i].ks.k.i){
							arr[i].ks.k.c = arr[i].closed;
						}else{
							jLen = arr[i].ks.k.length;
							for(j=0;j<jLen;j+=1){
								if(arr[i].ks.k[j].s){
									arr[i].ks.k[j].s[0].c = arr[i].closed;
								}
								if(arr[i].ks.k[j].e){
									arr[i].ks.k[j].e[0].c = arr[i].closed;
								}
							}
						}
						hasPaths = true;
					}else if(arr[i].ty == 'gr'){
						completeShapes(arr[i].it);
					}
				}
			}

			function iterateLayers(layers){
				var layerData;
				var i, len = layers.length;
				var j, jLen, k, kLen;
				for(i=0;i<len;i+=1){
					layerData = layers[i];
					if(layerData.hasMask){
						var maskProps = layerData.masksProperties;
						jLen = maskProps.length;
						for(j=0;j<jLen;j+=1){
							if(maskProps[j].pt.k.i){
								maskProps[j].pt.k.c = maskProps[j].cl;
							}else{
								kLen = maskProps[j].pt.k.length;
								for(k=0;k<kLen;k+=1){
									if(maskProps[j].pt.k[k].s){
										maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;
									}
									if(maskProps[j].pt.k[k].e){
										maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;
									}
								}
							}
						}
					}
					if(layerData.ty === 4){
						completeShapes(layerData.shapes);
					}
				}
			}

			return function (animationData){
				if(checkVersion(minimumVersion,animationData.v)){
					iterateLayers(animationData.layers);
					if(animationData.assets){
						var i, len = animationData.assets.length;
						for(i=0;i<len;i+=1){
							if(animationData.assets[i].layers){
								iterateLayers(animationData.assets[i].layers);

							}
						}
					}
				}
			};
		}());

		function completeData(animationData, fontManager){
			if(animationData.__complete){
				return;
			}
			checkColors(animationData);
			checkText(animationData);
			checkChars(animationData);
			checkShapes(animationData);
			completeLayers(animationData.layers, animationData.assets, fontManager);
			animationData.__complete = true;
			//blitAnimation(animationData, animationData.assets, fontManager);
		}

		function completeText(data, fontManager){
			if(data.t.a.length === 0 && !('m' in data.t.p)){
				data.singleShape = true;
			}
		}

		var moduleOb = {};
		moduleOb.completeData = completeData;
		moduleOb.checkColors = checkColors;
		moduleOb.checkChars = checkChars;
		moduleOb.checkShapes = checkShapes;
		moduleOb.completeLayers = completeLayers;

		return moduleOb;
	}

	var dataManager = dataFunctionManager();

	var FontManager = (function(){

		var maxWaitingTime = 5000;
		var emptyChar = {
			w: 0,
			size:0,
			shapes:[]
		};
		var combinedCharacters = [];
		//Hindi characters
		combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366
			, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379
			, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);

		function setUpNode(font, family){
			var parentNode = createTag('span');
			parentNode.style.fontFamily    = family;
			var node = createTag('span');
			// Characters that vary significantly among different fonts
			node.innerHTML = 'giItT1WQy@!-/#';
			// Visible - so we can measure it - but not on the screen
			parentNode.style.position      = 'absolute';
			parentNode.style.left          = '-10000px';
			parentNode.style.top           = '-10000px';
			// Large font size makes even subtle changes obvious
			parentNode.style.fontSize      = '300px';
			// Reset any font properties
			parentNode.style.fontVariant   = 'normal';
			parentNode.style.fontStyle     = 'normal';
			parentNode.style.fontWeight    = 'normal';
			parentNode.style.letterSpacing = '0';
			parentNode.appendChild(node);
			document.body.appendChild(parentNode);

			// Remember width with no applied web font
			var width = node.offsetWidth;
			node.style.fontFamily = font + ', '+family;
			return {node:node, w:width, parent:parentNode};
		}

		function checkLoadedFonts() {
			var i, len = this.fonts.length;
			var node, w;
			var loadedCount = len;
			for(i=0;i<len; i+= 1){
				if(this.fonts[i].loaded){
					loadedCount -= 1;
					continue;
				}
				if(this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0){
					this.fonts[i].loaded = true;
				} else{
					node = this.fonts[i].monoCase.node;
					w = this.fonts[i].monoCase.w;
					if(node.offsetWidth !== w){
						loadedCount -= 1;
						this.fonts[i].loaded = true;
					}else{
						node = this.fonts[i].sansCase.node;
						w = this.fonts[i].sansCase.w;
						if(node.offsetWidth !== w){
							loadedCount -= 1;
							this.fonts[i].loaded = true;
						}
					}
					if(this.fonts[i].loaded){
						this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);
						this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);
					}
				}
			}

			if(loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime){
				setTimeout(this.checkLoadedFonts.bind(this),20);
			}else{
				setTimeout(function(){this.isLoaded = true;}.bind(this),0);

			}
		}

		function createHelper(def, fontData){
			var tHelper = createNS('text');
			tHelper.style.fontSize = '100px';
			//tHelper.style.fontFamily = fontData.fFamily;
			tHelper.setAttribute('font-family', fontData.fFamily);
			tHelper.setAttribute('font-style', fontData.fStyle);
			tHelper.setAttribute('font-weight', fontData.fWeight);
			tHelper.textContent = '1';
			if(fontData.fClass){
				tHelper.style.fontFamily = 'inherit';
				tHelper.setAttribute('class', fontData.fClass);
			} else {
				tHelper.style.fontFamily = fontData.fFamily;
			}
			def.appendChild(tHelper);
			var tCanvasHelper = createTag('canvas').getContext('2d');
			tCanvasHelper.font = fontData.fWeight + ' ' + fontData.fStyle + ' 100px '+ fontData.fFamily;
			//tCanvasHelper.font = ' 100px '+ fontData.fFamily;
			return tHelper;
		}

		function addFonts(fontData, defs){
			if(!fontData){
				this.isLoaded = true;
				return;
			}
			if(this.chars){
				this.isLoaded = true;
				this.fonts = fontData.list;
				return;
			}


			var fontArr = fontData.list;
			var i, len = fontArr.length;
			var _pendingFonts = len;
			for(i=0; i<len; i+= 1){
				var shouldLoadFont = true;
				var loadedSelector;
				var j;
				fontArr[i].loaded = false;
				fontArr[i].monoCase = setUpNode(fontArr[i].fFamily,'monospace');
				fontArr[i].sansCase = setUpNode(fontArr[i].fFamily,'sans-serif');
				if(!fontArr[i].fPath) {
					fontArr[i].loaded = true;
					_pendingFonts -= 1;
				}else if(fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3){
					loadedSelector = document.querySelectorAll('style[f-forigin="p"][f-family="'+ fontArr[i].fFamily +'"], style[f-origin="3"][f-family="'+ fontArr[i].fFamily +'"]');

					if (loadedSelector.length > 0) {
						shouldLoadFont = false;
					}

					if (shouldLoadFont) {
						var s = createTag('style');
						s.setAttribute('f-forigin', fontArr[i].fOrigin);
						s.setAttribute('f-origin', fontArr[i].origin);
						s.setAttribute('f-family', fontArr[i].fFamily);
						s.type = "text/css";
						s.innerHTML = "@font-face {" + "font-family: "+fontArr[i].fFamily+"; font-style: normal; src: url('"+fontArr[i].fPath+"');}";
						defs.appendChild(s);
					}
				} else if(fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1){
					loadedSelector = document.querySelectorAll('link[f-forigin="g"], link[f-origin="1"]');

					for (j = 0; j < loadedSelector.length; j++) {
						if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {
							// Font is already loaded
							shouldLoadFont = false;
						}
					}

					if (shouldLoadFont) {
						var l = createTag('link');
						l.setAttribute('f-forigin', fontArr[i].fOrigin);
						l.setAttribute('f-origin', fontArr[i].origin);
						l.type = "text/css";
						l.rel = "stylesheet";
						l.href = fontArr[i].fPath;
						document.body.appendChild(l);
					}
				} else if(fontArr[i].fOrigin === 't' || fontArr[i].origin === 2){
					loadedSelector = document.querySelectorAll('script[f-forigin="t"], script[f-origin="2"]');

					for (j = 0; j < loadedSelector.length; j++) {
						if (fontArr[i].fPath === loadedSelector[j].src) {
							// Font is already loaded
							shouldLoadFont = false;
						}
					}

					if (shouldLoadFont) {
						var sc = createTag('link');
						sc.setAttribute('f-forigin', fontArr[i].fOrigin);
						sc.setAttribute('f-origin', fontArr[i].origin);
						sc.setAttribute('rel','stylesheet');
						sc.setAttribute('href',fontArr[i].fPath);
						defs.appendChild(sc);
					}
				}
				fontArr[i].helper = createHelper(defs,fontArr[i]);
				fontArr[i].cache = {};
				this.fonts.push(fontArr[i]);
			}
			if (_pendingFonts === 0) {
				this.isLoaded = true;
			} else {
				//On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.
				//Adding this timeout seems to fix it
				setTimeout(this.checkLoadedFonts.bind(this), 100);
			}
		}

		function addChars(chars){
			if(!chars){
				return;
			}
			if(!this.chars){
				this.chars = [];
			}
			var i, len = chars.length;
			var j, jLen = this.chars.length, found;
			for(i=0;i<len;i+=1){
				j = 0;
				found = false;
				while(j<jLen){
					if(this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch){
						found = true;
					}
					j += 1;
				}
				if(!found){
					this.chars.push(chars[i]);
					jLen += 1;
				}
			}
		}

		function getCharData(char, style, font){
			var i = 0, len = this.chars.length;
			while( i < len) {
				if(this.chars[i].ch === char && this.chars[i].style === style && this.chars[i].fFamily === font){

					return this.chars[i];
				}
				i+= 1;
			}
			if((typeof char === 'string' && char.charCodeAt(0) !== 13 || !char) && console && console.warn) {
				console.warn('Missing character from exported characters list: ', char, style, font);
			}
			return emptyChar;
		}

		function measureText(char, fontName, size) {
			var fontData = this.getFontByName(fontName);
			var index = char.charCodeAt(0);
			if(!fontData.cache[index + 1]) {
				var tHelper = fontData.helper;
				//Canvas version
				//fontData.cache[index] = tHelper.measureText(char).width / 100;
				//SVG version
				//console.log(tHelper.getBBox().width)
				if (char === ' ') {
					tHelper.textContent = '|' + char + '|';
					var doubleSize = tHelper.getComputedTextLength();
					tHelper.textContent = '||';
					var singleSize = tHelper.getComputedTextLength();
					fontData.cache[index + 1] = (doubleSize - singleSize)/100;
				} else {
					tHelper.textContent = char;
					fontData.cache[index + 1] = (tHelper.getComputedTextLength())/100;
				}
			}
			return fontData.cache[index + 1] * size;
		}

		function getFontByName(name){
			var i = 0, len = this.fonts.length;
			while(i<len){
				if(this.fonts[i].fName === name) {
					return this.fonts[i];
				}
				i += 1;
			}
			return this.fonts[0];
		}

		function getCombinedCharacterCodes() {
			return combinedCharacters;
		}

		function loaded() {
			return this.isLoaded;
		}

		var Font = function(){
			this.fonts = [];
			this.chars = null;
			this.typekitLoaded = 0;
			this.isLoaded = false;
			this.initTime = Date.now();
		};
		//TODO: for now I'm adding these methods to the Class and not the prototype. Think of a better way to implement it.
		Font.getCombinedCharacterCodes = getCombinedCharacterCodes;

		Font.prototype.addChars = addChars;
		Font.prototype.addFonts = addFonts;
		Font.prototype.getCharData = getCharData;
		Font.prototype.getFontByName = getFontByName;
		Font.prototype.measureText = measureText;
		Font.prototype.checkLoadedFonts = checkLoadedFonts;
		Font.prototype.loaded = loaded;

		return Font;

	}());
	var PropertyFactory = (function(){

		var initFrame = initialDefaultFrame;
		var math_abs = Math.abs;

		function interpolateValue(frameNum, caching) {
			var offsetTime = this.offsetTime;
			var newValue;
			if (this.propType === 'multidimensional') {
				newValue = createTypedArray('float32', this.pv.length);
			}
			var iterationIndex = caching.lastIndex;
			var i = iterationIndex;
			var len = this.keyframes.length - 1, flag = true;
			var keyData, nextKeyData;

			while (flag) {
				keyData = this.keyframes[i];
				nextKeyData = this.keyframes[i + 1];
				if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime){
					if(keyData.h){
						keyData = nextKeyData;
					}
					iterationIndex = 0;
					break;
				}
				if ((nextKeyData.t - offsetTime) > frameNum){
					iterationIndex = i;
					break;
				}
				if (i < len - 1){
					i += 1;
				} else {
					iterationIndex = 0;
					flag = false;
				}
			}

			var k, kLen, perc, jLen, j, fnc;
			var nextKeyTime = nextKeyData.t - offsetTime;
			var keyTime = keyData.t - offsetTime;
			var endValue;
			if (keyData.to) {
				if (!keyData.bezierData) {
					keyData.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);
				}
				var bezierData = keyData.bezierData;
				if (frameNum >= nextKeyTime || frameNum < keyTime) {
					var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;
					kLen = bezierData.points[ind].point.length;
					for (k = 0; k < kLen; k += 1) {
						newValue[k] = bezierData.points[ind].point[k];
					}
					// caching._lastKeyframeIndex = -1;
				} else {
					if (keyData.__fnct) {
						fnc = keyData.__fnct;
					} else {
						fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;
						keyData.__fnct = fnc;
					}
					perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));
					var distanceInLine = bezierData.segmentLength*perc;

					var segmentPerc;
					var addedLength =  (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastAddedLength : 0;
					j =  (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastPoint : 0;
					flag = true;
					jLen = bezierData.points.length;
					while (flag) {
						addedLength += bezierData.points[j].partialLength;
						if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {
							kLen = bezierData.points[j].point.length;
							for (k = 0; k < kLen; k += 1) {
								newValue[k] = bezierData.points[j].point[k];
							}
							break;
						} else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {
							segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;
							kLen = bezierData.points[j].point.length;
							for (k = 0; k < kLen; k += 1) {
								newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;
							}
							break;
						}
						if (j < jLen - 1){
							j += 1;
						} else {
							flag = false;
						}
					}
					caching._lastPoint = j;
					caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;
					caching._lastKeyframeIndex = i;
				}
			} else {
				var outX, outY, inX, inY, keyValue;
				len = keyData.s.length;
				endValue = nextKeyData.s || keyData.e;
				if (this.sh && keyData.h !== 1) {
					if (frameNum >= nextKeyTime) {
						newValue[0] = endValue[0];
						newValue[1] = endValue[1];
						newValue[2] = endValue[2];
					} else if (frameNum <= keyTime) {
						newValue[0] = keyData.s[0];
						newValue[1] = keyData.s[1];
						newValue[2] = keyData.s[2];
					} else {
						var quatStart = createQuaternion(keyData.s);
						var quatEnd = createQuaternion(endValue);
						var time = (frameNum - keyTime) / (nextKeyTime - keyTime);
						quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));
					}

				} else {
					for(i = 0; i < len; i += 1) {
						if (keyData.h !== 1) {
							if (frameNum >= nextKeyTime) {
								perc = 1;
							} else if(frameNum < keyTime) {
								perc = 0;
							} else {
								if(keyData.o.x.constructor === Array) {
									if (!keyData.__fnct) {
										keyData.__fnct = [];
									}
									if (!keyData.__fnct[i]) {
										outX = (typeof keyData.o.x[i] === 'undefined') ? keyData.o.x[0] : keyData.o.x[i];
										outY = (typeof keyData.o.y[i] === 'undefined') ? keyData.o.y[0] : keyData.o.y[i];
										inX = (typeof keyData.i.x[i] === 'undefined') ? keyData.i.x[0] : keyData.i.x[i];
										inY = (typeof keyData.i.y[i] === 'undefined') ? keyData.i.y[0] : keyData.i.y[i];
										fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;
										keyData.__fnct[i] = fnc;
									} else {
										fnc = keyData.__fnct[i];
									}
								} else {
									if (!keyData.__fnct) {
										outX = keyData.o.x;
										outY = keyData.o.y;
										inX = keyData.i.x;
										inY = keyData.i.y;
										fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;
										keyData.__fnct = fnc;
									} else {
										fnc = keyData.__fnct;
									}
								}
								perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime ));
							}
						}

						endValue = nextKeyData.s || keyData.e;
						keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;

						if (this.propType === 'multidimensional') {
							newValue[i] = keyValue;
						} else {
							newValue = keyValue;
						}
					}
				}
			}
			caching.lastIndex = iterationIndex;
			return newValue;
		}

		//based on @Toji's https://github.com/toji/gl-matrix/
		function slerp(a, b, t) {
			var out = [];
			var ax = a[0], ay = a[1], az = a[2], aw = a[3],
				bx = b[0], by = b[1], bz = b[2], bw = b[3]

			var omega, cosom, sinom, scale0, scale1;

			cosom = ax * bx + ay * by + az * bz + aw * bw;
			if (cosom < 0.0) {
				cosom = -cosom;
				bx = -bx;
				by = -by;
				bz = -bz;
				bw = -bw;
			}
			if ((1.0 - cosom) > 0.000001) {
				omega = Math.acos(cosom);
				sinom = Math.sin(omega);
				scale0 = Math.sin((1.0 - t) * omega) / sinom;
				scale1 = Math.sin(t * omega) / sinom;
			} else {
				scale0 = 1.0 - t;
				scale1 = t;
			}
			out[0] = scale0 * ax + scale1 * bx;
			out[1] = scale0 * ay + scale1 * by;
			out[2] = scale0 * az + scale1 * bz;
			out[3] = scale0 * aw + scale1 * bw;

			return out;
		}

		function quaternionToEuler(out, quat) {
			var qx = quat[0];
			var qy = quat[1];
			var qz = quat[2];
			var qw = quat[3];
			var heading = Math.atan2(2*qy*qw-2*qx*qz , 1 - 2*qy*qy - 2*qz*qz)
			var attitude = Math.asin(2*qx*qy + 2*qz*qw)
			var bank = Math.atan2(2*qx*qw-2*qy*qz , 1 - 2*qx*qx - 2*qz*qz);
			out[0] = heading/degToRads;
			out[1] = attitude/degToRads;
			out[2] = bank/degToRads;
		}

		function createQuaternion(values) {
			var heading = values[0] * degToRads;
			var attitude = values[1] * degToRads;
			var bank = values[2] * degToRads;
			var c1 = Math.cos(heading / 2);
			var c2 = Math.cos(attitude / 2);
			var c3 = Math.cos(bank / 2);
			var s1 = Math.sin(heading / 2);
			var s2 = Math.sin(attitude / 2);
			var s3 = Math.sin(bank / 2);
			var w = c1 * c2 * c3 - s1 * s2 * s3;
			var x = s1 * s2 * c3 + c1 * c2 * s3;
			var y = s1 * c2 * c3 + c1 * s2 * s3;
			var z = c1 * s2 * c3 - s1 * c2 * s3;

			return [x,y,z,w];
		}

		function getValueAtCurrentTime(){
			var frameNum = this.comp.renderedFrame - this.offsetTime;
			var initTime = this.keyframes[0].t - this.offsetTime;
			var endTime = this.keyframes[this.keyframes.length- 1].t-this.offsetTime;
			if(!(frameNum === this._caching.lastFrame || (this._caching.lastFrame !== initFrame && ((this._caching.lastFrame >= endTime && frameNum >= endTime) || (this._caching.lastFrame < initTime && frameNum < initTime))))){
				if(this._caching.lastFrame >= frameNum) {
					this._caching._lastKeyframeIndex = -1;
					this._caching.lastIndex = 0;
				}

				var renderResult = this.interpolateValue(frameNum, this._caching);
				this.pv = renderResult;
			}
			this._caching.lastFrame = frameNum;
			return this.pv;
		}

		function setVValue(val) {
			var multipliedValue;
			if(this.propType === 'unidimensional') {
				multipliedValue = val * this.mult;
				if(math_abs(this.v - multipliedValue) > 0.00001) {
					this.v = multipliedValue;
					this._mdf = true;
				}
			} else {
				var i = 0, len = this.v.length;
				while (i < len) {
					multipliedValue = val[i] * this.mult;
					if (math_abs(this.v[i] - multipliedValue) > 0.00001) {
						this.v[i] = multipliedValue;
						this._mdf = true;
					}
					i += 1;
				}
			}
		}

		function processEffectsSequence() {
			if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {
				return;
			}
			if(this.lock) {
				this.setVValue(this.pv);
				return;
			}
			this.lock = true;
			this._mdf = this._isFirstFrame;
			var multipliedValue;
			var i, len = this.effectsSequence.length;
			var finalValue = this.kf ? this.pv : this.data.k;
			for(i = 0; i < len; i += 1) {
				finalValue = this.effectsSequence[i](finalValue);
			}
			this.setVValue(finalValue);
			this._isFirstFrame = false;
			this.lock = false;
			this.frameId = this.elem.globalData.frameId;
		}

		function addEffect(effectFunction) {
			this.effectsSequence.push(effectFunction);
			this.container.addDynamicProperty(this);
		}

		function ValueProperty(elem, data, mult, container){
			this.propType = 'unidimensional';
			this.mult = mult || 1;
			this.data = data;
			this.v = mult ? data.k * mult : data.k;
			this.pv = data.k;
			this._mdf = false;
			this.elem = elem;
			this.container = container;
			this.comp = elem.comp;
			this.k = false;
			this.kf = false;
			this.vel = 0;
			this.effectsSequence = [];
			this._isFirstFrame = true;
			this.getValue = processEffectsSequence;
			this.setVValue = setVValue;
			this.addEffect = addEffect;
		}

		function MultiDimensionalProperty(elem, data, mult, container) {
			this.propType = 'multidimensional';
			this.mult = mult || 1;
			this.data = data;
			this._mdf = false;
			this.elem = elem;
			this.container = container;
			this.comp = elem.comp;
			this.k = false;
			this.kf = false;
			this.frameId = -1;
			var i, len = data.k.length;
			this.v = createTypedArray('float32', len);
			this.pv = createTypedArray('float32', len);
			var arr = createTypedArray('float32', len);
			this.vel = createTypedArray('float32', len);
			for (i = 0; i < len; i += 1) {
				this.v[i] = data.k[i] * this.mult;
				this.pv[i] = data.k[i];
			}
			this._isFirstFrame = true;
			this.effectsSequence = [];
			this.getValue = processEffectsSequence;
			this.setVValue = setVValue;
			this.addEffect = addEffect;
		}

		function KeyframedValueProperty(elem, data, mult, container) {
			this.propType = 'unidimensional';
			this.keyframes = data.k;
			this.offsetTime = elem.data.st;
			this.frameId = -1;
			this._caching = {lastFrame: initFrame, lastIndex: 0, value: 0, _lastKeyframeIndex: -1};
			this.k = true;
			this.kf = true;
			this.data = data;
			this.mult = mult || 1;
			this.elem = elem;
			this.container = container;
			this.comp = elem.comp;
			this.v = initFrame;
			this.pv = initFrame;
			this._isFirstFrame = true;
			this.getValue = processEffectsSequence;
			this.setVValue = setVValue;
			this.interpolateValue = interpolateValue;
			this.effectsSequence = [getValueAtCurrentTime.bind(this)];
			this.addEffect = addEffect;
		}

		function KeyframedMultidimensionalProperty(elem, data, mult, container){
			this.propType = 'multidimensional';
			var i, len = data.k.length;
			var s, e,to,ti;
			for (i = 0; i < len - 1; i += 1) {
				if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {
					s = data.k[i].s;
					e = data.k[i + 1].s;
					to = data.k[i].to;
					ti = data.k[i].ti;
					if((s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0],s[1],e[0],e[1],s[0] + to[0],s[1] + to[1]) && bez.pointOnLine2D(s[0],s[1],e[0],e[1],e[0] + ti[0],e[1] + ti[1])) || (s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0],s[1],s[2],e[0],e[1],e[2],s[0] + to[0],s[1] + to[1],s[2] + to[2]) && bez.pointOnLine3D(s[0],s[1],s[2],e[0],e[1],e[2],e[0] + ti[0],e[1] + ti[1],e[2] + ti[2]))){
						data.k[i].to = null;
						data.k[i].ti = null;
					}
					if(s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {
						if(s.length === 2 || (s[2] === e[2] && to[2] === 0 && ti[2] === 0)) {
							data.k[i].to = null;
							data.k[i].ti = null;
						}
					}
				}
			}
			this.effectsSequence = [getValueAtCurrentTime.bind(this)];
			this.keyframes = data.k;
			this.offsetTime = elem.data.st;
			this.k = true;
			this.kf = true;
			this._isFirstFrame = true;
			this.mult = mult || 1;
			this.elem = elem;
			this.container = container;
			this.comp = elem.comp;
			this.getValue = processEffectsSequence;
			this.setVValue = setVValue;
			this.interpolateValue = interpolateValue;
			this.frameId = -1;
			var arrLen = data.k[0].s.length;
			this.v = createTypedArray('float32', arrLen);
			this.pv = createTypedArray('float32', arrLen);
			for (i = 0; i < arrLen; i += 1) {
				this.v[i] = initFrame;
				this.pv[i] = initFrame;
			}
			this._caching={lastFrame:initFrame,lastIndex:0,value:createTypedArray('float32', arrLen)};
			this.addEffect = addEffect;
		}

		function getProp(elem,data,type, mult, container) {
			var p;
			if(!data.k.length){
				p = new ValueProperty(elem,data, mult, container);
			}else if(typeof(data.k[0]) === 'number'){
				p = new MultiDimensionalProperty(elem,data, mult, container);
			}else{
				switch(type){
					case 0:
						p = new KeyframedValueProperty(elem,data,mult, container);
						break;
					case 1:
						p = new KeyframedMultidimensionalProperty(elem,data,mult, container);
						break;
				}
			}
			if(p.effectsSequence.length){
				container.addDynamicProperty(p);
			}
			return p;
		}

		var ob = {
			getProp: getProp
		};
		return ob;
	}());
	var TransformPropertyFactory = (function() {

		var defaultVector = [0,0]

		function applyToMatrix(mat) {
			var _mdf = this._mdf;
			this.iterateDynamicProperties();
			this._mdf = this._mdf || _mdf;
			if (this.a) {
				mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);
			}
			if (this.s) {
				mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);
			}
			if (this.sk) {
				mat.skewFromAxis(-this.sk.v, this.sa.v);
			}
			if (this.r) {
				mat.rotate(-this.r.v);
			} else {
				mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);
			}
			if (this.data.p.s) {
				if (this.data.p.z) {
					mat.translate(this.px.v, this.py.v, -this.pz.v);
				} else {
					mat.translate(this.px.v, this.py.v, 0);
				}
			} else {
				mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);
			}
		}
		function processKeys(forceRender){
			if (this.elem.globalData.frameId === this.frameId) {
				return;
			}
			if(this._isDirty) {
				this.precalculateMatrix();
				this._isDirty = false;
			}

			this.iterateDynamicProperties();

			if (this._mdf || forceRender) {
				this.v.cloneFromProps(this.pre.props);
				if (this.appliedTransformations < 1) {
					this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);
				}
				if(this.appliedTransformations < 2) {
					this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);
				}
				if (this.sk && this.appliedTransformations < 3) {
					this.v.skewFromAxis(-this.sk.v, this.sa.v);
				}
				if (this.r && this.appliedTransformations < 4) {
					this.v.rotate(-this.r.v);
				} else if (!this.r && this.appliedTransformations < 4){
					this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);
				}
				if (this.autoOriented) {
					var v1,v2, frameRate = this.elem.globalData.frameRate;
					if(this.p && this.p.keyframes && this.p.getValueAtTime) {
						if (this.p._caching.lastFrame+this.p.offsetTime <= this.p.keyframes[0].t) {
							v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate,0);
							v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);
						} else if(this.p._caching.lastFrame+this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {
							v1 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t / frameRate), 0);
							v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);
						} else {
							v1 = this.p.pv;
							v2 = this.p.getValueAtTime((this.p._caching.lastFrame+this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);
						}
					} else if(this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {
						v1 = [];
						v2 = [];
						var px = this.px, py = this.py, frameRate;
						if (px._caching.lastFrame+px.offsetTime <= px.keyframes[0].t) {
							v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate,0);
							v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate,0);
							v2[0] = px.getValueAtTime((px.keyframes[0].t) / frameRate,0);
							v2[1] = py.getValueAtTime((py.keyframes[0].t) / frameRate,0);
						} else if(px._caching.lastFrame+px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {
							v1[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t / frameRate),0);
							v1[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t / frameRate),0);
							v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate,0);
							v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate,0);
						} else {
							v1 = [px.pv, py.pv];
							v2[0] = px.getValueAtTime((px._caching.lastFrame+px.offsetTime - 0.01) / frameRate,px.offsetTime);
							v2[1] = py.getValueAtTime((py._caching.lastFrame+py.offsetTime - 0.01) / frameRate,py.offsetTime);
						}
					} else {
						v1 = v2 = defaultVector
					}
					this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));
				}
				if(this.data.p && this.data.p.s){
					if(this.data.p.z) {
						this.v.translate(this.px.v, this.py.v, -this.pz.v);
					} else {
						this.v.translate(this.px.v, this.py.v, 0);
					}
				}else{
					this.v.translate(this.p.v[0],this.p.v[1],-this.p.v[2]);
				}
			}
			this.frameId = this.elem.globalData.frameId;
		}

		function precalculateMatrix() {
			if(!this.a.k) {
				this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);
				this.appliedTransformations = 1;
			} else {
				return;
			}
			if(!this.s.effectsSequence.length) {
				this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);
				this.appliedTransformations = 2;
			} else {
				return;
			}
			if(this.sk) {
				if(!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {
					this.pre.skewFromAxis(-this.sk.v, this.sa.v);
					this.appliedTransformations = 3;
				} else {
					return;
				}
			}
			if (this.r) {
				if(!this.r.effectsSequence.length) {
					this.pre.rotate(-this.r.v);
					this.appliedTransformations = 4;
				} else {
					return;
				}
			} else if(!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {
				this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);
				this.appliedTransformations = 4;
			}
		}

		function autoOrient(){
			//
			//var prevP = this.getValueAtTime();
		}

		function addDynamicProperty(prop) {
			this._addDynamicProperty(prop);
			this.elem.addDynamicProperty(prop);
			this._isDirty = true;
		}

		function TransformProperty(elem,data,container){
			this.elem = elem;
			this.frameId = -1;
			this.propType = 'transform';
			this.data = data;
			this.v = new Matrix();
			//Precalculated matrix with non animated properties
			this.pre = new Matrix();
			this.appliedTransformations = 0;
			this.initDynamicPropertyContainer(container || elem);
			if(data.p && data.p.s){
				this.px = PropertyFactory.getProp(elem,data.p.x,0,0,this);
				this.py = PropertyFactory.getProp(elem,data.p.y,0,0,this);
				if(data.p.z){
					this.pz = PropertyFactory.getProp(elem,data.p.z,0,0,this);
				}
			}else{
				this.p = PropertyFactory.getProp(elem,data.p || {k:[0,0,0]},1,0,this);
			}
			if(data.rx) {
				this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);
				this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);
				this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);
				if(data.or.k[0].ti) {
					var i, len = data.or.k.length;
					for(i=0;i<len;i+=1) {
						data.or.k[i].to = data.or.k[i].ti = null;
					}
				}
				this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this);
				//sh Indicates it needs to be capped between -180 and 180
				this.or.sh = true;
			} else {
				this.r = PropertyFactory.getProp(elem, data.r || {k: 0}, 0, degToRads, this);
			}
			if(data.sk){
				this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);
				this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);
			}
			this.a = PropertyFactory.getProp(elem,data.a || {k:[0,0,0]},1,0,this);
			this.s = PropertyFactory.getProp(elem,data.s || {k:[100,100,100]},1,0.01,this);
			// Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.
			if(data.o){
				this.o = PropertyFactory.getProp(elem,data.o,0,0.01,elem);
			} else {
				this.o = {_mdf:false,v:1};
			}
			this._isDirty = true;
			if(!this.dynamicProperties.length){
				this.getValue(true);
			}
		}

		TransformProperty.prototype = {
			applyToMatrix: applyToMatrix,
			getValue: processKeys,
			precalculateMatrix: precalculateMatrix,
			autoOrient: autoOrient
		}

		extendPrototype([DynamicPropertyContainer], TransformProperty);
		TransformProperty.prototype.addDynamicProperty = addDynamicProperty;
		TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;

		function getTransformProperty(elem,data,container){
			return new TransformProperty(elem,data,container);
		}

		return {
			getTransformProperty: getTransformProperty
		};

	}());
	function ShapePath(){
		this.c = false;
		this._length = 0;
		this._maxLength = 8;
		this.v = createSizedArray(this._maxLength);
		this.o = createSizedArray(this._maxLength);
		this.i = createSizedArray(this._maxLength);
	}

	ShapePath.prototype.setPathData = function(closed, len) {
		this.c = closed;
		this.setLength(len);
		var i = 0;
		while(i < len){
			this.v[i] = point_pool.newElement();
			this.o[i] = point_pool.newElement();
			this.i[i] = point_pool.newElement();
			i += 1;
		}
	};

	ShapePath.prototype.setLength = function(len) {
		while(this._maxLength < len) {
			this.doubleArrayLength();
		}
		this._length = len;
	};

	ShapePath.prototype.doubleArrayLength = function() {
		this.v = this.v.concat(createSizedArray(this._maxLength));
		this.i = this.i.concat(createSizedArray(this._maxLength));
		this.o = this.o.concat(createSizedArray(this._maxLength));
		this._maxLength *= 2;
	};

	ShapePath.prototype.setXYAt = function(x, y, type, pos, replace) {
		var arr;
		this._length = Math.max(this._length, pos + 1);
		if(this._length >= this._maxLength) {
			this.doubleArrayLength();
		}
		switch(type){
			case 'v':
				arr = this.v;
				break;
			case 'i':
				arr = this.i;
				break;
			case 'o':
				arr = this.o;
				break;
		}
		if(!arr[pos] || (arr[pos] && !replace)){
			arr[pos] = point_pool.newElement();
		}
		arr[pos][0] = x;
		arr[pos][1] = y;
	};

	ShapePath.prototype.setTripleAt = function(vX,vY,oX,oY,iX,iY,pos, replace) {
		this.setXYAt(vX,vY,'v',pos, replace);
		this.setXYAt(oX,oY,'o',pos, replace);
		this.setXYAt(iX,iY,'i',pos, replace);
	};

	ShapePath.prototype.reverse = function() {
		var newPath = new ShapePath();
		newPath.setPathData(this.c, this._length);
		var vertices = this.v, outPoints = this.o, inPoints = this.i;
		var init = 0;
		if (this.c) {
			newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);
			init = 1;
		}
		var cnt = this._length - 1;
		var len = this._length;

		var i;
		for (i = init; i < len; i += 1) {
			newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);
			cnt -= 1;
		}
		return newPath;
	};
	var ShapePropertyFactory = (function(){

		var initFrame = -999999;

		function interpolateShape(frameNum, previousValue, caching) {
			var iterationIndex = caching.lastIndex;
			var keyPropS,keyPropE,isHold, j, k, jLen, kLen, perc, vertexValue;
			var kf = this.keyframes;
			if(frameNum < kf[0].t-this.offsetTime){
				keyPropS = kf[0].s[0];
				isHold = true;
				iterationIndex = 0;
			}else if(frameNum >= kf[kf.length - 1].t-this.offsetTime){
				keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];
				/*if(kf[kf.length - 1].s){
                keyPropS = kf[kf.length - 1].s[0];
            }else{
                keyPropS = kf[kf.length - 2].e[0];
            }*/
				isHold = true;
			}else{
				var i = iterationIndex;
				var len = kf.length- 1,flag = true,keyData,nextKeyData;
				while(flag){
					keyData = kf[i];
					nextKeyData = kf[i+1];
					if((nextKeyData.t - this.offsetTime) > frameNum){
						break;
					}
					if(i < len - 1){
						i += 1;
					}else{
						flag = false;
					}
				}
				isHold = keyData.h === 1;
				iterationIndex = i;
				if(!isHold){
					if(frameNum >= nextKeyData.t-this.offsetTime){
						perc = 1;
					}else if(frameNum < keyData.t-this.offsetTime){
						perc = 0;
					}else{
						var fnc;
						if(keyData.__fnct){
							fnc = keyData.__fnct;
						}else{
							fnc = BezierFactory.getBezierEasing(keyData.o.x,keyData.o.y,keyData.i.x,keyData.i.y).get;
							keyData.__fnct = fnc;
						}
						perc = fnc((frameNum-(keyData.t-this.offsetTime))/((nextKeyData.t-this.offsetTime)-(keyData.t-this.offsetTime)));
					}
					keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];
				}
				keyPropS = keyData.s[0];
			}
			jLen = previousValue._length;
			kLen = keyPropS.i[0].length;
			caching.lastIndex = iterationIndex;

			for(j=0;j<jLen;j+=1){
				for(k=0;k<kLen;k+=1){
					vertexValue = isHold ? keyPropS.i[j][k] :  keyPropS.i[j][k]+(keyPropE.i[j][k]-keyPropS.i[j][k])*perc;
					previousValue.i[j][k] = vertexValue;
					vertexValue = isHold ? keyPropS.o[j][k] :  keyPropS.o[j][k]+(keyPropE.o[j][k]-keyPropS.o[j][k])*perc;
					previousValue.o[j][k] = vertexValue;
					vertexValue = isHold ? keyPropS.v[j][k] :  keyPropS.v[j][k]+(keyPropE.v[j][k]-keyPropS.v[j][k])*perc;
					previousValue.v[j][k] = vertexValue;
				}
			}
		}

		function interpolateShapeCurrentTime(){
			var frameNum = this.comp.renderedFrame - this.offsetTime;
			var initTime = this.keyframes[0].t - this.offsetTime;
			var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;
			var lastFrame = this._caching.lastFrame;
			if(!(lastFrame !== initFrame && ((lastFrame < initTime && frameNum < initTime) || (lastFrame > endTime && frameNum > endTime)))){
				////
				this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;
				this.interpolateShape(frameNum, this.pv, this._caching);
				////
			}
			this._caching.lastFrame = frameNum;
			return this.pv;
		}

		function resetShape(){
			this.paths = this.localShapeCollection;
		}

		function shapesEqual(shape1, shape2) {
			if(shape1._length !== shape2._length || shape1.c !== shape2.c){
				return false;
			}
			var i, len = shape1._length;
			for(i = 0; i < len; i += 1) {
				if(shape1.v[i][0] !== shape2.v[i][0]
					|| shape1.v[i][1] !== shape2.v[i][1]
					|| shape1.o[i][0] !== shape2.o[i][0]
					|| shape1.o[i][1] !== shape2.o[i][1]
					|| shape1.i[i][0] !== shape2.i[i][0]
					|| shape1.i[i][1] !== shape2.i[i][1]) {
					return false;
				}
			}
			return true;
		}

		function setVValue(newPath) {
			if(!shapesEqual(this.v, newPath)) {
				this.v = shape_pool.clone(newPath);
				this.localShapeCollection.releaseShapes();
				this.localShapeCollection.addShape(this.v);
				this._mdf = true;
				this.paths = this.localShapeCollection;
			}
		}

		function processEffectsSequence() {
			if (this.elem.globalData.frameId === this.frameId) {
				return;
			} else if (!this.effectsSequence.length) {
				this._mdf = false;
				return;
			}
			if (this.lock) {
				this.setVValue(this.pv);
				return;
			}
			this.lock = true;
			this._mdf = false;
			var finalValue = this.kf ? this.pv : this.data.ks ? this.data.ks.k : this.data.pt.k;
			var i, len = this.effectsSequence.length;
			for(i = 0; i < len; i += 1) {
				finalValue = this.effectsSequence[i](finalValue);
			}
			this.setVValue(finalValue);
			this.lock = false;
			this.frameId = this.elem.globalData.frameId;
		};

		function ShapeProperty(elem, data, type){
			this.propType = 'shape';
			this.comp = elem.comp;
			this.container = elem;
			this.elem = elem;
			this.data = data;
			this.k = false;
			this.kf = false;
			this._mdf = false;
			var pathData = type === 3 ? data.pt.k : data.ks.k;
			this.v = shape_pool.clone(pathData);
			this.pv = shape_pool.clone(this.v);
			this.localShapeCollection = shapeCollection_pool.newShapeCollection();
			this.paths = this.localShapeCollection;
			this.paths.addShape(this.v);
			this.reset = resetShape;
			this.effectsSequence = [];
		}

		function addEffect(effectFunction) {
			this.effectsSequence.push(effectFunction);
			this.container.addDynamicProperty(this);
		}

		ShapeProperty.prototype.interpolateShape = interpolateShape;
		ShapeProperty.prototype.getValue = processEffectsSequence;
		ShapeProperty.prototype.setVValue = setVValue;
		ShapeProperty.prototype.addEffect = addEffect;

		function KeyframedShapeProperty(elem,data,type){
			this.propType = 'shape';
			this.comp = elem.comp;
			this.elem = elem;
			this.container = elem;
			this.offsetTime = elem.data.st;
			this.keyframes = type === 3 ? data.pt.k : data.ks.k;
			this.k = true;
			this.kf = true;
			var i, len = this.keyframes[0].s[0].i.length;
			var jLen = this.keyframes[0].s[0].i[0].length;
			this.v = shape_pool.newElement();
			this.v.setPathData(this.keyframes[0].s[0].c, len);
			this.pv = shape_pool.clone(this.v);
			this.localShapeCollection = shapeCollection_pool.newShapeCollection();
			this.paths = this.localShapeCollection;
			this.paths.addShape(this.v);
			this.lastFrame = initFrame;
			this.reset = resetShape;
			this._caching = {lastFrame: initFrame, lastIndex: 0};
			this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];
		}
		KeyframedShapeProperty.prototype.getValue = processEffectsSequence;
		KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;
		KeyframedShapeProperty.prototype.setVValue = setVValue;
		KeyframedShapeProperty.prototype.addEffect = addEffect;

		var EllShapeProperty = (function(){

			var cPoint = roundCorner;

			function EllShapeProperty(elem,data) {
				/*this.v = {
                v: createSizedArray(4),
                i: createSizedArray(4),
                o: createSizedArray(4),
                c: true
            };*/
				this.v = shape_pool.newElement();
				this.v.setPathData(true, 4);
				this.localShapeCollection = shapeCollection_pool.newShapeCollection();
				this.paths = this.localShapeCollection;
				this.localShapeCollection.addShape(this.v);
				this.d = data.d;
				this.elem = elem;
				this.comp = elem.comp;
				this.frameId = -1;
				this.initDynamicPropertyContainer(elem);
				this.p = PropertyFactory.getProp(elem,data.p,1,0,this);
				this.s = PropertyFactory.getProp(elem,data.s,1,0,this);
				if(this.dynamicProperties.length){
					this.k = true;
				}else{
					this.k = false;
					this.convertEllToPath();
				}
			};

			EllShapeProperty.prototype = {
				reset: resetShape,
				getValue: function (){
					if(this.elem.globalData.frameId === this.frameId){
						return;
					}
					this.frameId = this.elem.globalData.frameId;
					this.iterateDynamicProperties();

					if(this._mdf){
						this.convertEllToPath();
					}
				},
				convertEllToPath: function() {
					var p0 = this.p.v[0], p1 = this.p.v[1], s0 = this.s.v[0]/2, s1 = this.s.v[1]/2;
					var _cw = this.d !== 3;
					var _v = this.v;
					_v.v[0][0] = p0;
					_v.v[0][1] = p1 - s1;
					_v.v[1][0] = _cw ? p0 + s0 : p0 - s0;
					_v.v[1][1] = p1;
					_v.v[2][0] = p0;
					_v.v[2][1] = p1 + s1;
					_v.v[3][0] = _cw ? p0 - s0 : p0 + s0;
					_v.v[3][1] = p1;
					_v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;
					_v.i[0][1] = p1 - s1;
					_v.i[1][0] = _cw ? p0 + s0 : p0 - s0;
					_v.i[1][1] = p1 - s1 * cPoint;
					_v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;
					_v.i[2][1] = p1 + s1;
					_v.i[3][0] = _cw ? p0 - s0 : p0 + s0;
					_v.i[3][1] = p1 + s1 * cPoint;
					_v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;
					_v.o[0][1] = p1 - s1;
					_v.o[1][0] = _cw ? p0 + s0 : p0 - s0;
					_v.o[1][1] = p1 + s1 * cPoint;
					_v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;
					_v.o[2][1] = p1 + s1;
					_v.o[3][0] = _cw ? p0 - s0 : p0 + s0;
					_v.o[3][1] = p1 - s1 * cPoint;
				}
			}

			extendPrototype([DynamicPropertyContainer], EllShapeProperty);

			return EllShapeProperty;
		}());

		var StarShapeProperty = (function() {

			function StarShapeProperty(elem,data) {
				this.v = shape_pool.newElement();
				this.v.setPathData(true, 0);
				this.elem = elem;
				this.comp = elem.comp;
				this.data = data;
				this.frameId = -1;
				this.d = data.d;
				this.initDynamicPropertyContainer(elem);
				if(data.sy === 1){
					this.ir = PropertyFactory.getProp(elem,data.ir,0,0,this);
					this.is = PropertyFactory.getProp(elem,data.is,0,0.01,this);
					this.convertToPath = this.convertStarToPath;
				} else {
					this.convertToPath = this.convertPolygonToPath;
				}
				this.pt = PropertyFactory.getProp(elem,data.pt,0,0,this);
				this.p = PropertyFactory.getProp(elem,data.p,1,0,this);
				this.r = PropertyFactory.getProp(elem,data.r,0,degToRads,this);
				this.or = PropertyFactory.getProp(elem,data.or,0,0,this);
				this.os = PropertyFactory.getProp(elem,data.os,0,0.01,this);
				this.localShapeCollection = shapeCollection_pool.newShapeCollection();
				this.localShapeCollection.addShape(this.v);
				this.paths = this.localShapeCollection;
				if(this.dynamicProperties.length){
					this.k = true;
				}else{
					this.k = false;
					this.convertToPath();
				}
			};

			StarShapeProperty.prototype = {
				reset: resetShape,
				getValue: function() {
					if(this.elem.globalData.frameId === this.frameId){
						return;
					}
					this.frameId = this.elem.globalData.frameId;
					this.iterateDynamicProperties();
					if(this._mdf){
						this.convertToPath();
					}
				},
				convertStarToPath: function() {
					var numPts = Math.floor(this.pt.v)*2;
					var angle = Math.PI*2/numPts;
					/*this.v.v.length = numPts;
                this.v.i.length = numPts;
                this.v.o.length = numPts;*/
					var longFlag = true;
					var longRad = this.or.v;
					var shortRad = this.ir.v;
					var longRound = this.os.v;
					var shortRound = this.is.v;
					var longPerimSegment = 2*Math.PI*longRad/(numPts*2);
					var shortPerimSegment = 2*Math.PI*shortRad/(numPts*2);
					var i, rad,roundness,perimSegment, currentAng = -Math.PI/ 2;
					currentAng += this.r.v;
					var dir = this.data.d === 3 ? -1 : 1;
					this.v._length = 0;
					for(i=0;i<numPts;i+=1){
						rad = longFlag ? longRad : shortRad;
						roundness = longFlag ? longRound : shortRound;
						perimSegment = longFlag ? longPerimSegment : shortPerimSegment;
						var x = rad * Math.cos(currentAng);
						var y = rad * Math.sin(currentAng);
						var ox = x === 0 && y === 0 ? 0 : y/Math.sqrt(x*x + y*y);
						var oy = x === 0 && y === 0 ? 0 : -x/Math.sqrt(x*x + y*y);
						x +=  + this.p.v[0];
						y +=  + this.p.v[1];
						this.v.setTripleAt(x,y,x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir,x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir, i, true);

						/*this.v.v[i] = [x,y];
                    this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];
                    this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];
                    this.v._length = numPts;*/
						longFlag = !longFlag;
						currentAng += angle*dir;
					}
				},
				convertPolygonToPath: function() {
					var numPts = Math.floor(this.pt.v);
					var angle = Math.PI*2/numPts;
					var rad = this.or.v;
					var roundness = this.os.v;
					var perimSegment = 2*Math.PI*rad/(numPts*4);
					var i, currentAng = -Math.PI/ 2;
					var dir = this.data.d === 3 ? -1 : 1;
					currentAng += this.r.v;
					this.v._length = 0;
					for(i=0;i<numPts;i+=1){
						var x = rad * Math.cos(currentAng);
						var y = rad * Math.sin(currentAng);
						var ox = x === 0 && y === 0 ? 0 : y/Math.sqrt(x*x + y*y);
						var oy = x === 0 && y === 0 ? 0 : -x/Math.sqrt(x*x + y*y);
						x +=  + this.p.v[0];
						y +=  + this.p.v[1];
						this.v.setTripleAt(x,y,x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir,x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir, i, true);
						currentAng += angle*dir;
					}
					this.paths.length = 0;
					this.paths[0] = this.v;
				}

			}
			extendPrototype([DynamicPropertyContainer], StarShapeProperty);

			return StarShapeProperty;
		}());

		var RectShapeProperty = (function() {

			function RectShapeProperty(elem,data) {
				this.v = shape_pool.newElement();
				this.v.c = true;
				this.localShapeCollection = shapeCollection_pool.newShapeCollection();
				this.localShapeCollection.addShape(this.v);
				this.paths = this.localShapeCollection;
				this.elem = elem;
				this.comp = elem.comp;
				this.frameId = -1;
				this.d = data.d;
				this.initDynamicPropertyContainer(elem);
				this.p = PropertyFactory.getProp(elem,data.p,1,0,this);
				this.s = PropertyFactory.getProp(elem,data.s,1,0,this);
				this.r = PropertyFactory.getProp(elem,data.r,0,0,this);
				if(this.dynamicProperties.length){
					this.k = true;
				}else{
					this.k = false;
					this.convertRectToPath();
				}
			};

			RectShapeProperty.prototype = {
				convertRectToPath: function (){
					var p0 = this.p.v[0], p1 = this.p.v[1], v0 = this.s.v[0]/2, v1 = this.s.v[1]/2;
					var round = bm_min(v0,v1,this.r.v);
					var cPoint = round*(1-roundCorner);
					this.v._length = 0;

					if(this.d === 2 || this.d === 1) {
						this.v.setTripleAt(p0+v0, p1-v1+round,p0+v0, p1-v1+round,p0+v0,p1-v1+cPoint,0, true);
						this.v.setTripleAt(p0+v0, p1+v1-round,p0+v0, p1+v1-cPoint,p0+v0, p1+v1-round,1, true);
						if(round!== 0){
							this.v.setTripleAt(p0+v0-round, p1+v1,p0+v0-round,p1+v1,p0+v0-cPoint,p1+v1,2, true);
							this.v.setTripleAt(p0-v0+round,p1+v1,p0-v0+cPoint,p1+v1,p0-v0+round,p1+v1,3, true);
							this.v.setTripleAt(p0-v0,p1+v1-round,p0-v0,p1+v1-round,p0-v0,p1+v1-cPoint,4, true);
							this.v.setTripleAt(p0-v0,p1-v1+round,p0-v0,p1-v1+cPoint,p0-v0,p1-v1+round,5, true);
							this.v.setTripleAt(p0-v0+round,p1-v1,p0-v0+round,p1-v1,p0-v0+cPoint,p1-v1,6, true);
							this.v.setTripleAt(p0+v0-round,p1-v1,p0+v0-cPoint,p1-v1,p0+v0-round,p1-v1,7, true);
						} else {
							this.v.setTripleAt(p0-v0,p1+v1,p0-v0+cPoint,p1+v1,p0-v0,p1+v1,2);
							this.v.setTripleAt(p0-v0,p1-v1,p0-v0,p1-v1+cPoint,p0-v0,p1-v1,3);
						}
					}else{
						this.v.setTripleAt(p0+v0,p1-v1+round,p0+v0,p1-v1+cPoint,p0+v0,p1-v1+round,0, true);
						if(round!== 0){
							this.v.setTripleAt(p0+v0-round,p1-v1,p0+v0-round,p1-v1,p0+v0-cPoint,p1-v1,1, true);
							this.v.setTripleAt(p0-v0+round,p1-v1,p0-v0+cPoint,p1-v1,p0-v0+round,p1-v1,2, true);
							this.v.setTripleAt(p0-v0,p1-v1+round,p0-v0,p1-v1+round,p0-v0,p1-v1+cPoint,3, true);
							this.v.setTripleAt(p0-v0,p1+v1-round,p0-v0,p1+v1-cPoint,p0-v0,p1+v1-round,4, true);
							this.v.setTripleAt(p0-v0+round,p1+v1,p0-v0+round,p1+v1,p0-v0+cPoint,p1+v1,5, true);
							this.v.setTripleAt(p0+v0-round,p1+v1,p0+v0-cPoint,p1+v1,p0+v0-round,p1+v1,6, true);
							this.v.setTripleAt(p0+v0,p1+v1-round,p0+v0,p1+v1-round,p0+v0,p1+v1-cPoint,7, true);
						} else {
							this.v.setTripleAt(p0-v0,p1-v1,p0-v0+cPoint,p1-v1,p0-v0,p1-v1,1, true);
							this.v.setTripleAt(p0-v0,p1+v1,p0-v0,p1+v1-cPoint,p0-v0,p1+v1,2, true);
							this.v.setTripleAt(p0+v0,p1+v1,p0+v0-cPoint,p1+v1,p0+v0,p1+v1,3, true);

						}
					}
				},
				getValue: function(frameNum){
					if(this.elem.globalData.frameId === this.frameId){
						return;
					}
					this.frameId = this.elem.globalData.frameId;
					this.iterateDynamicProperties();
					if(this._mdf){
						this.convertRectToPath();
					}

				},
				reset: resetShape
			}
			extendPrototype([DynamicPropertyContainer], RectShapeProperty);

			return RectShapeProperty;
		}());

		function getShapeProp(elem,data,type){
			var prop;
			if(type === 3 || type === 4){
				var dataProp = type === 3 ? data.pt : data.ks;
				var keys = dataProp.k;
				if(keys.length){
					prop = new KeyframedShapeProperty(elem, data, type);
				}else{
					prop = new ShapeProperty(elem, data, type);
				}
			}else if(type === 5){
				prop = new RectShapeProperty(elem, data);
			}else if(type === 6){
				prop = new EllShapeProperty(elem, data);
			}else if(type === 7){
				prop = new StarShapeProperty(elem, data);
			}
			if(prop.k){
				elem.addDynamicProperty(prop);
			}
			return prop;
		}

		function getConstructorFunction() {
			return ShapeProperty;
		}

		function getKeyframedConstructorFunction() {
			return KeyframedShapeProperty;
		}

		var ob = {};
		ob.getShapeProp = getShapeProp;
		ob.getConstructorFunction = getConstructorFunction;
		ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;
		return ob;
	}());
	var ShapeModifiers = (function(){
		var ob = {};
		var modifiers = {};
		ob.registerModifier = registerModifier;
		ob.getModifier = getModifier;

		function registerModifier(nm,factory){
			if(!modifiers[nm]){
				modifiers[nm] = factory;
			}
		}

		function getModifier(nm,elem, data){
			return new modifiers[nm](elem, data);
		}

		return ob;
	}());

	function ShapeModifier(){}
	ShapeModifier.prototype.initModifierProperties = function(){};
	ShapeModifier.prototype.addShapeToModifier = function(){};
	ShapeModifier.prototype.addShape = function(data){
		if (!this.closed) {
			// Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.
			data.sh.container.addDynamicProperty(data.sh);
			var shapeData = {shape:data.sh, data: data, localShapeCollection:shapeCollection_pool.newShapeCollection()};
			this.shapes.push(shapeData);
			this.addShapeToModifier(shapeData);
			if (this._isAnimated) {
				data.setAsAnimated();
			}
		}
	};
	ShapeModifier.prototype.init = function(elem,data){
		this.shapes = [];
		this.elem = elem;
		this.initDynamicPropertyContainer(elem);
		this.initModifierProperties(elem,data);
		this.frameId = initialDefaultFrame;
		this.closed = false;
		this.k = false;
		if(this.dynamicProperties.length){
			this.k = true;
		}else{
			this.getValue(true);
		}
	};
	ShapeModifier.prototype.processKeys = function(){
		if(this.elem.globalData.frameId === this.frameId){
			return;
		}
		this.frameId = this.elem.globalData.frameId;
		this.iterateDynamicProperties();
	};

	extendPrototype([DynamicPropertyContainer], ShapeModifier);
	function TrimModifier(){
	}
	extendPrototype([ShapeModifier], TrimModifier);
	TrimModifier.prototype.initModifierProperties = function(elem, data) {
		this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);
		this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);
		this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);
		this.sValue = 0;
		this.eValue = 0;
		this.getValue = this.processKeys;
		this.m = data.m;
		this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;
	};

	TrimModifier.prototype.addShapeToModifier = function(shapeData){
		shapeData.pathsData = [];
	};

	TrimModifier.prototype.calculateShapeEdges = function(s, e, shapeLength, addedLength, totalModifierLength) {
		var segments = [];
		if (e <= 1) {
			segments.push({
				s: s,
				e: e
			});
		} else if (s >= 1) {
			segments.push({
				s: s - 1,
				e: e - 1
			});
		} else {
			segments.push({
				s: s,
				e: 1
			});
			segments.push({
				s: 0,
				e: e - 1
			});
		}
		var shapeSegments = [];
		var i, len = segments.length, segmentOb;
		for (i = 0; i < len; i += 1) {
			segmentOb = segments[i];
			if (segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength) {

			} else {
				var shapeS, shapeE;
				if (segmentOb.s * totalModifierLength <= addedLength) {
					shapeS = 0;
				} else {
					shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;
				}
				if(segmentOb.e * totalModifierLength >= addedLength + shapeLength) {
					shapeE = 1;
				} else {
					shapeE = ((segmentOb.e * totalModifierLength - addedLength) / shapeLength);
				}
				shapeSegments.push([shapeS, shapeE]);
			}
		}
		if (!shapeSegments.length) {
			shapeSegments.push([0, 0]);
		}
		return shapeSegments;
	};

	TrimModifier.prototype.releasePathsData = function(pathsData) {
		var i, len = pathsData.length;
		for (i = 0; i < len; i += 1) {
			segments_length_pool.release(pathsData[i]);
		}
		pathsData.length = 0;
		return pathsData;
	};

	TrimModifier.prototype.processShapes = function(_isFirstFrame) {
		var s, e;
		if (this._mdf || _isFirstFrame) {
			var o = (this.o.v % 360) / 360;
			if (o < 0) {
				o += 1;
			}
			s = (this.s.v > 1 ? 1 : this.s.v < 0 ? 0 : this.s.v) + o;
			e = (this.e.v > 1 ? 1 : this.e.v < 0 ? 0 : this.e.v) + o;
			if (s === e) {

			}
			if (s > e) {
				var _s = s;
				s = e;
				e = _s;
			}
			s = Math.round(s * 10000) * 0.0001;
			e = Math.round(e * 10000) * 0.0001;
			this.sValue = s;
			this.eValue = e;
		} else {
			s = this.sValue;
			e = this.eValue;
		}
		var shapePaths;
		var i, len = this.shapes.length, j, jLen;
		var pathsData, pathData, totalShapeLength, totalModifierLength = 0;

		if (e === s) {
			for (i = 0; i < len; i += 1) {
				this.shapes[i].localShapeCollection.releaseShapes();
				this.shapes[i].shape._mdf = true;
				this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;
			}
		} else if (!((e === 1 && s === 0) || (e===0 && s === 1))){
			var segments = [], shapeData, localShapeCollection;
			for (i = 0; i < len; i += 1) {
				shapeData = this.shapes[i];
				// if shape hasn't changed and trim properties haven't changed, cached previous path can be used
				if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {
					shapeData.shape.paths = shapeData.localShapeCollection;
				} else {
					shapePaths = shapeData.shape.paths;
					jLen = shapePaths._length;
					totalShapeLength = 0;
					if (!shapeData.shape._mdf && shapeData.pathsData.length) {
						totalShapeLength = shapeData.totalShapeLength;
					} else {
						pathsData = this.releasePathsData(shapeData.pathsData);
						for (j = 0; j < jLen; j += 1) {
							pathData = bez.getSegmentsLength(shapePaths.shapes[j]);
							pathsData.push(pathData);
							totalShapeLength += pathData.totalLength;
						}
						shapeData.totalShapeLength = totalShapeLength;
						shapeData.pathsData = pathsData;
					}

					totalModifierLength += totalShapeLength;
					shapeData.shape._mdf = true;
				}
			}
			var shapeS = s, shapeE = e, addedLength = 0, edges;
			for (i = len - 1; i >= 0; i -= 1) {
				shapeData = this.shapes[i];
				if (shapeData.shape._mdf) {
					localShapeCollection = shapeData.localShapeCollection;
					localShapeCollection.releaseShapes();
					//if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group
					if (this.m === 2 && len > 1) {
						edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);
						addedLength += shapeData.totalShapeLength;
					} else {
						edges = [[shapeS, shapeE]];
					}
					jLen = edges.length;
					for (j = 0; j < jLen; j += 1) {
						shapeS = edges[j][0];
						shapeE = edges[j][1];
						segments.length = 0;
						if (shapeE <= 1) {
							segments.push({
								s:shapeData.totalShapeLength * shapeS,
								e:shapeData.totalShapeLength * shapeE
							});
						} else if (shapeS >= 1) {
							segments.push({
								s:shapeData.totalShapeLength * (shapeS - 1),
								e:shapeData.totalShapeLength * (shapeE - 1)
							});
						} else {
							segments.push({
								s:shapeData.totalShapeLength * shapeS,
								e:shapeData.totalShapeLength
							});
							segments.push({
								s:0,
								e:shapeData.totalShapeLength * (shapeE - 1)
							});
						}
						var newShapesData = this.addShapes(shapeData,segments[0]);
						if (segments[0].s !== segments[0].e) {
							if (segments.length > 1) {
								var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];
								if (lastShapeInCollection.c) {
									var lastShape = newShapesData.pop();
									this.addPaths(newShapesData, localShapeCollection);
									newShapesData = this.addShapes(shapeData, segments[1], lastShape);
								} else {
									this.addPaths(newShapesData, localShapeCollection);
									newShapesData = this.addShapes(shapeData, segments[1]);
								}
							}
							this.addPaths(newShapesData, localShapeCollection);
						}

					}
					shapeData.shape.paths = localShapeCollection;
				}
			}
		} else if (this._mdf) {
			for (i = 0; i < len; i += 1) {
				//Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.
				//Don't remove this even if it's losing cached info.
				this.shapes[i].pathsData.length = 0;
				this.shapes[i].shape._mdf = true;
			}
		}
	};

	TrimModifier.prototype.addPaths = function(newPaths, localShapeCollection) {
		var i, len = newPaths.length;
		for (i = 0; i < len; i += 1) {
			localShapeCollection.addShape(newPaths[i]);
		}
	};

	TrimModifier.prototype.addSegment = function(pt1, pt2, pt3, pt4, shapePath, pos, newShape) {
		shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);
		shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);
		if(newShape){
			shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);
		}
		shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);
	};

	TrimModifier.prototype.addSegmentFromArray = function(points, shapePath, pos, newShape) {
		shapePath.setXYAt(points[1], points[5], 'o', pos);
		shapePath.setXYAt(points[2], points[6], 'i', pos + 1);
		if(newShape){
			shapePath.setXYAt(points[0], points[4], 'v', pos);
		}
		shapePath.setXYAt(points[3], points[7], 'v', pos + 1);
	};

	TrimModifier.prototype.addShapes = function(shapeData, shapeSegment, shapePath) {
		var pathsData = shapeData.pathsData;
		var shapePaths = shapeData.shape.paths.shapes;
		var i, len = shapeData.shape.paths._length, j, jLen;
		var addedLength = 0;
		var currentLengthData,segmentCount;
		var lengths;
		var segment;
		var shapes = [];
		var initPos;
		var newShape = true;
		if (!shapePath) {
			shapePath = shape_pool.newElement();
			segmentCount = 0;
			initPos = 0;
		} else {
			segmentCount = shapePath._length;
			initPos = shapePath._length;
		}
		shapes.push(shapePath);
		for (i = 0; i < len; i += 1) {
			lengths = pathsData[i].lengths;
			shapePath.c = shapePaths[i].c;
			jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;
			for (j = 1; j < jLen; j +=1) {
				currentLengthData = lengths[j-1];
				if (addedLength + currentLengthData.addedLength < shapeSegment.s) {
					addedLength += currentLengthData.addedLength;
					shapePath.c = false;
				} else if(addedLength > shapeSegment.e) {
					shapePath.c = false;
					break;
				} else {
					if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {
						this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);
						newShape = false;
					} else {
						segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength)/currentLengthData.addedLength,(shapeSegment.e - addedLength)/currentLengthData.addedLength, lengths[j-1]);
						this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);
						// this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);
						newShape = false;
						shapePath.c = false;
					}
					addedLength += currentLengthData.addedLength;
					segmentCount += 1;
				}
			}
			if (shapePaths[i].c && lengths.length) {
				currentLengthData = lengths[j - 1];
				if (addedLength <= shapeSegment.e) {
					var segmentLength = lengths[j - 1].addedLength;
					if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {
						this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);
						newShape = false;
					} else {
						segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);
						this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);
						// this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);
						newShape = false;
						shapePath.c = false;
					}
				} else {
					shapePath.c = false;
				}
				addedLength += currentLengthData.addedLength;
				segmentCount += 1;
			}
			if (shapePath._length) {
				shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);
				shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1],'o', shapePath._length - 1);
			}
			if (addedLength > shapeSegment.e) {
				break;
			}
			if (i < len - 1) {
				shapePath = shape_pool.newElement();
				newShape = true;
				shapes.push(shapePath);
				segmentCount = 0;
			}
		}
		return shapes;
	};


	ShapeModifiers.registerModifier('tm', TrimModifier);
	function RoundCornersModifier(){}
	extendPrototype([ShapeModifier],RoundCornersModifier);
	RoundCornersModifier.prototype.initModifierProperties = function(elem,data){
		this.getValue = this.processKeys;
		this.rd = PropertyFactory.getProp(elem,data.r,0,null,this);
		this._isAnimated = !!this.rd.effectsSequence.length;
	};

	RoundCornersModifier.prototype.processPath = function(path, round){
		var cloned_path = shape_pool.newElement();
		cloned_path.c = path.c;
		var i, len = path._length;
		var currentV,currentI,currentO,closerV, newV,newO,newI,distance,newPosPerc,index = 0;
		var vX,vY,oX,oY,iX,iY;
		for(i=0;i<len;i+=1){
			currentV = path.v[i];
			currentO = path.o[i];
			currentI = path.i[i];
			if(currentV[0]===currentO[0] && currentV[1]===currentO[1] && currentV[0]===currentI[0] && currentV[1]===currentI[1]){
				if((i===0 || i === len - 1) && !path.c){
					cloned_path.setTripleAt(currentV[0],currentV[1],currentO[0],currentO[1],currentI[0],currentI[1],index);
					/*cloned_path.v[index] = currentV;
                cloned_path.o[index] = currentO;
                cloned_path.i[index] = currentI;*/
					index += 1;
				} else {
					if(i===0){
						closerV = path.v[len-1];
					} else {
						closerV = path.v[i-1];
					}
					distance = Math.sqrt(Math.pow(currentV[0]-closerV[0],2)+Math.pow(currentV[1]-closerV[1],2));
					newPosPerc = distance ? Math.min(distance/2,round)/distance : 0;
					vX = iX = currentV[0]+(closerV[0]-currentV[0])*newPosPerc;
					vY = iY = currentV[1]-(currentV[1]-closerV[1])*newPosPerc;
					oX = vX-(vX-currentV[0])*roundCorner;
					oY = vY-(vY-currentV[1])*roundCorner;
					cloned_path.setTripleAt(vX,vY,oX,oY,iX,iY,index);
					index += 1;

					if(i === len - 1){
						closerV = path.v[0];
					} else {
						closerV = path.v[i+1];
					}
					distance = Math.sqrt(Math.pow(currentV[0]-closerV[0],2)+Math.pow(currentV[1]-closerV[1],2));
					newPosPerc = distance ? Math.min(distance/2,round)/distance : 0;
					vX = oX = currentV[0]+(closerV[0]-currentV[0])*newPosPerc;
					vY = oY = currentV[1]+(closerV[1]-currentV[1])*newPosPerc;
					iX = vX-(vX-currentV[0])*roundCorner;
					iY = vY-(vY-currentV[1])*roundCorner;
					cloned_path.setTripleAt(vX,vY,oX,oY,iX,iY,index);
					index += 1;
				}
			} else {
				cloned_path.setTripleAt(path.v[i][0],path.v[i][1],path.o[i][0],path.o[i][1],path.i[i][0],path.i[i][1],index);
				index += 1;
			}
		}
		return cloned_path;
	};

	RoundCornersModifier.prototype.processShapes = function(_isFirstFrame){
		var shapePaths;
		var i, len = this.shapes.length;
		var j, jLen;
		var rd = this.rd.v;

		if(rd !== 0){
			var shapeData, newPaths, localShapeCollection;
			for(i=0;i<len;i+=1){
				shapeData = this.shapes[i];
				newPaths = shapeData.shape.paths;
				localShapeCollection = shapeData.localShapeCollection;
				if(!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)){
					localShapeCollection.releaseShapes();
					shapeData.shape._mdf = true;
					shapePaths = shapeData.shape.paths.shapes;
					jLen = shapeData.shape.paths._length;
					for(j=0;j<jLen;j+=1){
						localShapeCollection.addShape(this.processPath(shapePaths[j],rd));
					}
				}
				shapeData.shape.paths = shapeData.localShapeCollection;
			}

		}
		if(!this.dynamicProperties.length){
			this._mdf = false;
		}
	};

	ShapeModifiers.registerModifier('rd',RoundCornersModifier);
	function RepeaterModifier(){}
	extendPrototype([ShapeModifier], RepeaterModifier);

	RepeaterModifier.prototype.initModifierProperties = function(elem,data){
		this.getValue = this.processKeys;
		this.c = PropertyFactory.getProp(elem,data.c,0,null,this);
		this.o = PropertyFactory.getProp(elem,data.o,0,null,this);
		this.tr = TransformPropertyFactory.getTransformProperty(elem,data.tr,this);
		this.so = PropertyFactory.getProp(elem,data.tr.so,0,0.01,this);
		this.eo = PropertyFactory.getProp(elem,data.tr.eo,0,0.01,this);
		this.data = data;
		if(!this.dynamicProperties.length){
			this.getValue(true);
		}
		this._isAnimated = !!this.dynamicProperties.length;
		this.pMatrix = new Matrix();
		this.rMatrix = new Matrix();
		this.sMatrix = new Matrix();
		this.tMatrix = new Matrix();
		this.matrix = new Matrix();
	};

	RepeaterModifier.prototype.applyTransforms = function(pMatrix, rMatrix, sMatrix, transform, perc, inv){
		var dir = inv ? -1 : 1;
		var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);
		var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);
		pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);
		rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);
		rMatrix.rotate(-transform.r.v * dir * perc);
		rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);
		sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);
		sMatrix.scale(inv ? 1/scaleX : scaleX, inv ? 1/scaleY : scaleY);
		sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);
	};

	RepeaterModifier.prototype.init = function(elem, arr, pos, elemsData) {
		this.elem = elem;
		this.arr = arr;
		this.pos = pos;
		this.elemsData = elemsData;
		this._currentCopies = 0;
		this._elements = [];
		this._groups = [];
		this.frameId = -1;
		this.initDynamicPropertyContainer(elem);
		this.initModifierProperties(elem,arr[pos]);
		var cont = 0;
		while(pos>0){
			pos -= 1;
			//this._elements.unshift(arr.splice(pos,1)[0]);
			this._elements.unshift(arr[pos]);
			cont += 1;
		}
		if(this.dynamicProperties.length){
			this.k = true;
		}else{
			this.getValue(true);
		}
	};

	RepeaterModifier.prototype.resetElements = function(elements){
		var i, len = elements.length;
		for(i = 0; i < len; i += 1) {
			elements[i]._processed = false;
			if(elements[i].ty === 'gr'){
				this.resetElements(elements[i].it);
			}
		}
	};

	RepeaterModifier.prototype.cloneElements = function(elements){
		var i, len = elements.length;
		var newElements = JSON.parse(JSON.stringify(elements));
		this.resetElements(newElements);
		return newElements;
	};

	RepeaterModifier.prototype.changeGroupRender = function(elements, renderFlag) {
		var i, len = elements.length;
		for(i = 0; i < len; i += 1) {
			elements[i]._render = renderFlag;
			if(elements[i].ty === 'gr') {
				this.changeGroupRender(elements[i].it, renderFlag);
			}
		}
	};

	RepeaterModifier.prototype.processShapes = function(_isFirstFrame) {
		var items, itemsTransform, i, dir, cont;
		if(this._mdf || _isFirstFrame){
			var copies = Math.ceil(this.c.v);
			if(this._groups.length < copies){
				while(this._groups.length < copies){
					var group = {
						it:this.cloneElements(this._elements),
						ty:'gr'
					};
					group.it.push({"a":{"a":0,"ix":1,"k":[0,0]},"nm":"Transform","o":{"a":0,"ix":7,"k":100},"p":{"a":0,"ix":2,"k":[0,0]},"r":{"a":1,"ix":6,"k":[{s:0,e:0,t:0},{s:0,e:0,t:1}]},"s":{"a":0,"ix":3,"k":[100,100]},"sa":{"a":0,"ix":5,"k":0},"sk":{"a":0,"ix":4,"k":0},"ty":"tr"});

					this.arr.splice(0,0,group);
					this._groups.splice(0,0,group);
					this._currentCopies += 1;
				}
				this.elem.reloadShapes();
			}
			cont = 0;
			var renderFlag;
			for(i = 0; i  <= this._groups.length - 1; i += 1){
				renderFlag = cont < copies;
				this._groups[i]._render = renderFlag;
				this.changeGroupRender(this._groups[i].it, renderFlag);
				cont += 1;
			}

			this._currentCopies = copies;
			////

			var offset = this.o.v;
			var offsetModulo = offset%1;
			var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);
			var k;
			var tMat = this.tr.v.props;
			var pProps = this.pMatrix.props;
			var rProps = this.rMatrix.props;
			var sProps = this.sMatrix.props;
			this.pMatrix.reset();
			this.rMatrix.reset();
			this.sMatrix.reset();
			this.tMatrix.reset();
			this.matrix.reset();
			var iteration = 0;

			if(offset > 0) {
				while(iteration<roundOffset){
					this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);
					iteration += 1;
				}
				if(offsetModulo){
					this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);
					iteration += offsetModulo;
				}
			} else if(offset < 0) {
				while(iteration>roundOffset){
					this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);
					iteration -= 1;
				}
				if(offsetModulo){
					this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, - offsetModulo, true);
					iteration -= offsetModulo;
				}
			}
			i = this.data.m === 1 ? 0 : this._currentCopies - 1;
			dir = this.data.m === 1 ? 1 : -1;
			cont = this._currentCopies;
			var j, jLen;
			while(cont){
				items = this.elemsData[i].it;
				itemsTransform = items[items.length - 1].transform.mProps.v.props;
				jLen = itemsTransform.length;
				items[items.length - 1].transform.mProps._mdf = true;
				items[items.length - 1].transform.op._mdf = true;
				items[items.length - 1].transform.op.v = this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));
				if(iteration !== 0){
					if((i !== 0 && dir === 1) || (i !== this._currentCopies - 1 && dir === -1)){
						this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);
					}
					this.matrix.transform(rProps[0],rProps[1],rProps[2],rProps[3],rProps[4],rProps[5],rProps[6],rProps[7],rProps[8],rProps[9],rProps[10],rProps[11],rProps[12],rProps[13],rProps[14],rProps[15]);
					this.matrix.transform(sProps[0],sProps[1],sProps[2],sProps[3],sProps[4],sProps[5],sProps[6],sProps[7],sProps[8],sProps[9],sProps[10],sProps[11],sProps[12],sProps[13],sProps[14],sProps[15]);
					this.matrix.transform(pProps[0],pProps[1],pProps[2],pProps[3],pProps[4],pProps[5],pProps[6],pProps[7],pProps[8],pProps[9],pProps[10],pProps[11],pProps[12],pProps[13],pProps[14],pProps[15]);

					for(j=0;j<jLen;j+=1) {
						itemsTransform[j] = this.matrix.props[j];
					}
					this.matrix.reset();
				} else {
					this.matrix.reset();
					for(j=0;j<jLen;j+=1) {
						itemsTransform[j] = this.matrix.props[j];
					}
				}
				iteration += 1;
				cont -= 1;
				i += dir;
			}
		} else {
			cont = this._currentCopies;
			i = 0;
			dir = 1;
			while(cont){
				items = this.elemsData[i].it;
				itemsTransform = items[items.length - 1].transform.mProps.v.props;
				items[items.length - 1].transform.mProps._mdf = false;
				items[items.length - 1].transform.op._mdf = false;
				cont -= 1;
				i += dir;
			}
		}
	};

	RepeaterModifier.prototype.addShape = function(){};

	ShapeModifiers.registerModifier('rp',RepeaterModifier);
	function ShapeCollection(){
		this._length = 0;
		this._maxLength = 4;
		this.shapes = createSizedArray(this._maxLength);
	}

	ShapeCollection.prototype.addShape = function(shapeData){
		if(this._length === this._maxLength){
			this.shapes = this.shapes.concat(createSizedArray(this._maxLength));
			this._maxLength *= 2;
		}
		this.shapes[this._length] = shapeData;
		this._length += 1;
	};

	ShapeCollection.prototype.releaseShapes = function(){
		var i;
		for(i = 0; i < this._length; i += 1) {
			shape_pool.release(this.shapes[i]);
		}
		this._length = 0;
	};
	function DashProperty(elem, data, renderer, container) {
		this.elem = elem;
		this.frameId = -1;
		this.dataProps = createSizedArray(data.length);
		this.renderer = renderer;
		this.k = false;
		this.dashStr = '';
		this.dashArray = createTypedArray('float32',  data.length ? data.length - 1 : 0);
		this.dashoffset = createTypedArray('float32',  1);
		this.initDynamicPropertyContainer(container);
		var i, len = data.length || 0, prop;
		for(i = 0; i < len; i += 1) {
			prop = PropertyFactory.getProp(elem,data[i].v,0, 0, this);
			this.k = prop.k || this.k;
			this.dataProps[i] = {n:data[i].n,p:prop};
		}
		if(!this.k){
			this.getValue(true);
		}
		this._isAnimated = this.k;
	}

	DashProperty.prototype.getValue = function(forceRender) {
		if(this.elem.globalData.frameId === this.frameId && !forceRender){
			return;
		}
		this.frameId = this.elem.globalData.frameId;
		this.iterateDynamicProperties();
		this._mdf = this._mdf || forceRender;
		if (this._mdf) {
			var i = 0, len = this.dataProps.length;
			if(this.renderer === 'svg') {
				this.dashStr = '';
			}
			for(i=0;i<len;i+=1){
				if(this.dataProps[i].n != 'o'){
					if(this.renderer === 'svg') {
						this.dashStr += ' ' + this.dataProps[i].p.v;
					}else{
						this.dashArray[i] = this.dataProps[i].p.v;
					}
				}else{
					this.dashoffset[0] = this.dataProps[i].p.v;
				}
			}
		}
	};
	extendPrototype([DynamicPropertyContainer], DashProperty);
	function GradientProperty(elem,data,container){
		this.data = data;
		this.c = createTypedArray('uint8c', data.p*4);
		var cLength = data.k.k[0].s ? (data.k.k[0].s.length - data.p*4) : data.k.k.length - data.p*4;
		this.o = createTypedArray('float32', cLength);
		this._cmdf = false;
		this._omdf = false;
		this._collapsable = this.checkCollapsable();
		this._hasOpacity = cLength;
		this.initDynamicPropertyContainer(container);
		this.prop = PropertyFactory.getProp(elem,data.k,1,null,this);
		this.k = this.prop.k;
		this.getValue(true);
	}

	GradientProperty.prototype.comparePoints = function(values, points) {
		var i = 0, len = this.o.length/2, diff;
		while(i < len) {
			diff = Math.abs(values[i*4] - values[points*4 + i*2]);
			if(diff > 0.01){
				return false;
			}
			i += 1;
		}
		return true;
	};

	GradientProperty.prototype.checkCollapsable = function() {
		if (this.o.length/2 !== this.c.length/4) {
			return false;
		}
		if (this.data.k.k[0].s) {
			var i = 0, len = this.data.k.k.length;
			while (i < len) {
				if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {
					return false;
				}
				i += 1;
			}
		} else if(!this.comparePoints(this.data.k.k, this.data.p)) {
			return false;
		}
		return true;
	};

	GradientProperty.prototype.getValue = function(forceRender){
		this.prop.getValue();
		this._mdf = false;
		this._cmdf = false;
		this._omdf = false;
		if(this.prop._mdf || forceRender){
			var i, len = this.data.p*4;
			var mult, val;
			for(i=0;i<len;i+=1){
				mult = i%4 === 0 ? 100 : 255;
				val = Math.round(this.prop.v[i]*mult);
				if(this.c[i] !== val){
					this.c[i] = val;
					this._cmdf = !forceRender;
				}
			}
			if(this.o.length){
				len = this.prop.v.length;
				for(i=this.data.p*4;i<len;i+=1){
					mult = i%2 === 0 ? 100 : 1;
					val = i%2 === 0 ?  Math.round(this.prop.v[i]*100):this.prop.v[i];
					if(this.o[i-this.data.p*4] !== val){
						this.o[i-this.data.p*4] = val;
						this._omdf = !forceRender;
					}
				}
			}
			this._mdf = !forceRender;
		}
	};

	extendPrototype([DynamicPropertyContainer], GradientProperty);
	var buildShapeString = function(pathNodes, length, closed, mat) {
		if(length === 0) {
			return '';
		}
		var _o = pathNodes.o;
		var _i = pathNodes.i;
		var _v = pathNodes.v;
		var i, shapeString = " M" + mat.applyToPointStringified(_v[0][0], _v[0][1]);
		for(i = 1; i < length; i += 1) {
			shapeString += " C" + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + " " + mat.applyToPointStringified(_i[i][0], _i[i][1]) + " " + mat.applyToPointStringified(_v[i][0], _v[i][1]);
		}
		if (closed && length) {
			shapeString += " C" + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + " " + mat.applyToPointStringified(_i[0][0], _i[0][1]) + " " + mat.applyToPointStringified(_v[0][0], _v[0][1]);
			shapeString += 'z';
		}
		return shapeString;
	}
	var ImagePreloader = (function(){

		var proxyImage = (function(){
			var canvas = createTag('canvas');
			canvas.width = 1;
			canvas.height = 1;
			var ctx = canvas.getContext('2d');
			ctx.fillStyle = 'rgba(0,0,0,0)';
			ctx.fillRect(0, 0, 1, 1);
			return canvas;
		}())

		function imageLoaded(){
			this.loadedAssets += 1;
			if(this.loadedAssets === this.totalImages){
				if(this.imagesLoadedCb) {
					this.imagesLoadedCb(null);
				}
			}
		}

		function getAssetsPath(assetData, assetsPath, original_path) {
			var path = '';
			if (assetData.e) {
				path = assetData.p;
			} else if(assetsPath) {
				var imagePath = assetData.p;
				if (imagePath.indexOf('images/') !== -1) {
					imagePath = imagePath.split('/')[1];
				}
				path = assetsPath + imagePath;
			} else {
				path = original_path;
				path += assetData.u ? assetData.u : '';
				path += assetData.p;
			}
			return path;
		}

		function createImageData(assetData) {
			var path = getAssetsPath(assetData, this.assetsPath, this.path);
			var img = createTag('img');
			img.crossOrigin = 'anonymous';
			img.addEventListener('load', this._imageLoaded.bind(this), false);
			img.addEventListener('error', function() {
				ob.img = proxyImage;
				this._imageLoaded();
			}.bind(this), false);
			img.src = path;
			var ob = {
				img: img,
				assetData: assetData
			}
			return ob;
		}

		function loadAssets(assets, cb){
			this.imagesLoadedCb = cb;
			var i, len = assets.length;
			for (i = 0; i < len; i += 1) {
				if(!assets[i].layers){
					this.totalImages += 1;
					this.images.push(this._createImageData(assets[i]));
				}
			}
		}

		function setPath(path){
			this.path = path || '';
		}

		function setAssetsPath(path){
			this.assetsPath = path || '';
		}

		function getImage(assetData) {
			var i = 0, len = this.images.length;
			while (i < len) {
				if (this.images[i].assetData === assetData) {
					return this.images[i].img;
				}
				i += 1;
			}
		}

		function destroy() {
			this.imagesLoadedCb = null;
			this.images.length = 0;
		}

		function loaded() {
			return this.totalImages === this.loadedAssets;
		}

		return function ImagePreloader(){
			this.loadAssets = loadAssets;
			this.setAssetsPath = setAssetsPath;
			this.setPath = setPath;
			this.loaded = loaded;
			this.destroy = destroy;
			this.getImage = getImage;
			this._createImageData = createImageData;
			this._imageLoaded = imageLoaded;
			this.assetsPath = '';
			this.path = '';
			this.totalImages = 0;
			this.loadedAssets = 0;
			this.imagesLoadedCb = null;
			this.images = [];
		};
	}());
	var featureSupport = (function(){
		var ob = {
			maskType: true
		};
		if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\/\d./i.test(navigator.userAgent)) {
			ob.maskType = false;
		}
		return ob;
	}());
	var filtersFactory = (function(){
		var ob = {};
		ob.createFilter = createFilter;
		ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;

		function createFilter(filId){
			var fil = createNS('filter');
			fil.setAttribute('id',filId);
			fil.setAttribute('filterUnits','objectBoundingBox');
			fil.setAttribute('x','0%');
			fil.setAttribute('y','0%');
			fil.setAttribute('width','100%');
			fil.setAttribute('height','100%');
			return fil;
		}

		function createAlphaToLuminanceFilter(){
			var feColorMatrix = createNS('feColorMatrix');
			feColorMatrix.setAttribute('type','matrix');
			feColorMatrix.setAttribute('color-interpolation-filters','sRGB');
			feColorMatrix.setAttribute('values','0 0 0 1 0  0 0 0 1 0  0 0 0 1 0  0 0 0 1 1');
			return feColorMatrix;
		}

		return ob;
	}());
	var assetLoader = (function(){

		function formatResponse(xhr) {
			if(xhr.response && typeof xhr.response === 'object') {
				return xhr.response;
			} else if(xhr.response && typeof xhr.response === 'string') {
				return JSON.parse(xhr.response);
			} else if(xhr.responseText) {
				return JSON.parse(xhr.responseText);
			}
		}

		function loadAsset(path, callback, errorCallback) {
			var response;
			var xhr = new XMLHttpRequest();
			xhr.open('GET', path, true);
			// set responseType after calling open or IE will break.
			try {
				// This crashes on Android WebView prior to KitKat
				xhr.responseType = "json";
			} catch (err) {}
			xhr.send();
			xhr.onreadystatechange = function () {
				if (xhr.readyState == 4) {
					if(xhr.status == 200){
						response = formatResponse(xhr);
						callback(response);
					}else{
						try{
							response = formatResponse(xhr);
							callback(response);
						}catch(err){
							if(errorCallback) {
								errorCallback(err);
							}
						}
					}
				}
			};
		}
		return {
			load: loadAsset
		}
	}())

	function TextAnimatorProperty(textData, renderType, elem){
		this._isFirstFrame = true;
		this._hasMaskedPath = false;
		this._frameId = -1;
		this._textData = textData;
		this._renderType = renderType;
		this._elem = elem;
		this._animatorsData = createSizedArray(this._textData.a.length);
		this._pathData = {};
		this._moreOptions = {
			alignment: {}
		};
		this.renderedLetters = [];
		this.lettersChangedFlag = false;
		this.initDynamicPropertyContainer(elem);

	}

	TextAnimatorProperty.prototype.searchProperties = function(){
		var i, len = this._textData.a.length, animatorProps;
		var getProp = PropertyFactory.getProp;
		for(i=0;i<len;i+=1){
			animatorProps = this._textData.a[i];
			this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);
		}
		if(this._textData.p && 'm' in this._textData.p){
			this._pathData = {
				f: getProp(this._elem,this._textData.p.f,0,0,this),
				l: getProp(this._elem,this._textData.p.l,0,0,this),
				r: this._textData.p.r,
				m: this._elem.maskManager.getMaskProperty(this._textData.p.m)
			};
			this._hasMaskedPath = true;
		} else {
			this._hasMaskedPath = false;
		}
		this._moreOptions.alignment = getProp(this._elem,this._textData.m.a,1,0,this);
	};

	TextAnimatorProperty.prototype.getMeasures = function(documentData, lettersChangedFlag){
		this.lettersChangedFlag = lettersChangedFlag;
		if(!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {
			return;
		}
		this._isFirstFrame = false;
		var alignment = this._moreOptions.alignment.v;
		var animators = this._animatorsData;
		var textData = this._textData;
		var matrixHelper = this.mHelper;
		var renderType = this._renderType;
		var renderedLettersCount = this.renderedLetters.length;
		var data = this.data;
		var xPos,yPos;
		var i, len;
		var letters = documentData.l, pathInfo, currentLength, currentPoint, segmentLength, flag, pointInd, segmentInd, prevPoint, points, segments, partialLength, totalLength, perc, tanAngle, mask;
		if(this._hasMaskedPath) {
			mask = this._pathData.m;
			if(!this._pathData.n || this._pathData._mdf){
				var paths = mask.v;
				if(this._pathData.r){
					paths = paths.reverse();
				}
				// TODO: release bezier data cached from previous pathInfo: this._pathData.pi
				pathInfo = {
					tLength: 0,
					segments: []
				};
				len = paths._length - 1;
				var bezierData;
				totalLength = 0;
				for (i = 0; i < len; i += 1) {
					bezierData = bez.buildBezierData(paths.v[i]
						, paths.v[i + 1]
						, [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]]
						, [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);
					pathInfo.tLength += bezierData.segmentLength;
					pathInfo.segments.push(bezierData);
					totalLength += bezierData.segmentLength;
				}
				i = len;
				if (mask.v.c) {
					bezierData = bez.buildBezierData(paths.v[i]
						, paths.v[0]
						, [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]]
						, [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);
					pathInfo.tLength += bezierData.segmentLength;
					pathInfo.segments.push(bezierData);
					totalLength += bezierData.segmentLength;
				}
				this._pathData.pi = pathInfo;
			}
			pathInfo = this._pathData.pi;

			currentLength = this._pathData.f.v;
			segmentInd = 0;
			pointInd = 1;
			segmentLength = 0;
			flag = true;
			segments = pathInfo.segments;
			if (currentLength < 0 && mask.v.c) {
				if (pathInfo.tLength < Math.abs(currentLength)) {
					currentLength = -Math.abs(currentLength) % pathInfo.tLength;
				}
				segmentInd = segments.length - 1;
				points = segments[segmentInd].points;
				pointInd = points.length - 1;
				while (currentLength < 0) {
					currentLength += points[pointInd].partialLength;
					pointInd -= 1;
					if (pointInd < 0) {
						segmentInd -= 1;
						points = segments[segmentInd].points;
						pointInd = points.length - 1;
					}
				}

			}
			points = segments[segmentInd].points;
			prevPoint = points[pointInd - 1];
			currentPoint = points[pointInd];
			partialLength = currentPoint.partialLength;
		}


		len = letters.length;
		xPos = 0;
		yPos = 0;
		var yOff = documentData.finalSize * 1.2 * 0.714;
		var firstLine = true;
		var animatorProps, animatorSelector;
		var j, jLen;
		var letterValue;

		jLen = animators.length;
		var lastLetter;

		var mult, ind = -1, offf, xPathPos, yPathPos;
		var initPathPos = currentLength,initSegmentInd = segmentInd, initPointInd = pointInd, currentLine = -1;
		var elemOpacity;
		var sc,sw,fc,k;
		var lineLength = 0;
		var letterSw, letterSc, letterFc, letterM = '', letterP = this.defaultPropsArray, letterO;

		//
		if(documentData.j === 2 || documentData.j === 1) {
			var animatorJustifyOffset = 0;
			var animatorFirstCharOffset = 0;
			var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;
			var lastIndex = 0;
			var isNewLine = true;

			for (i = 0; i < len; i += 1) {
				if (letters[i].n) {
					if(animatorJustifyOffset) {
						animatorJustifyOffset += animatorFirstCharOffset;
					}
					while (lastIndex < i) {
						letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;
						lastIndex += 1;
					}
					animatorJustifyOffset = 0;
					isNewLine = true;
				} else {
					for (j = 0; j < jLen; j += 1) {
						animatorProps = animators[j].a;
						if (animatorProps.t.propType) {
							if (isNewLine && documentData.j === 2) {
								animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;
							}
							animatorSelector = animators[j].s;
							mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);
							if (mult.length) {
								animatorJustifyOffset += animatorProps.t.v*mult[0] * justifyOffsetMult;
							} else {
								animatorJustifyOffset += animatorProps.t.v*mult * justifyOffsetMult;
							}
						}
					}
					isNewLine = false;
				}
			}
			if(animatorJustifyOffset) {
				animatorJustifyOffset += animatorFirstCharOffset;
			}
			while(lastIndex < i) {
				letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;
				lastIndex += 1;
			}
		}
		//

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

			matrixHelper.reset();
			elemOpacity = 1;
			if(letters[i].n) {
				xPos = 0;
				yPos += documentData.yOffset;
				yPos += firstLine ? 1 : 0;
				currentLength = initPathPos ;
				firstLine = false;
				lineLength = 0;
				if(this._hasMaskedPath) {
					segmentInd = initSegmentInd;
					pointInd = initPointInd;
					points = segments[segmentInd].points;
					prevPoint = points[pointInd - 1];
					currentPoint = points[pointInd];
					partialLength = currentPoint.partialLength;
					segmentLength = 0;
				}
				letterO = letterSw = letterFc = letterM = '';
				letterP = this.defaultPropsArray;
			}else{
				if(this._hasMaskedPath) {
					if(currentLine !== letters[i].line){
						switch(documentData.j){
							case 1:
								currentLength += totalLength - documentData.lineWidths[letters[i].line];
								break;
							case 2:
								currentLength += (totalLength - documentData.lineWidths[letters[i].line])/2;
								break;
						}
						currentLine = letters[i].line;
					}
					if (ind !== letters[i].ind) {
						if (letters[ind]) {
							currentLength += letters[ind].extra;
						}
						currentLength += letters[i].an / 2;
						ind = letters[i].ind;
					}
					currentLength += alignment[0] * letters[i].an / 200;
					var animatorOffset = 0;
					for (j = 0; j < jLen; j += 1) {
						animatorProps = animators[j].a;
						if (animatorProps.p.propType) {
							animatorSelector = animators[j].s;
							mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);
							if(mult.length){
								animatorOffset += animatorProps.p.v[0] * mult[0];
							} else{
								animatorOffset += animatorProps.p.v[0] * mult;
							}

						}
						if (animatorProps.a.propType) {
							animatorSelector = animators[j].s;
							mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);
							if(mult.length){
								animatorOffset += animatorProps.a.v[0] * mult[0];
							} else{
								animatorOffset += animatorProps.a.v[0] * mult;
							}

						}
					}
					flag = true;
					while (flag) {
						if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {
							perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;
							xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;
							yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;
							matrixHelper.translate(-alignment[0]*letters[i].an/200, -(alignment[1] * yOff / 100));
							flag = false;
						} else if (points) {
							segmentLength += currentPoint.partialLength;
							pointInd += 1;
							if (pointInd >= points.length) {
								pointInd = 0;
								segmentInd += 1;
								if (!segments[segmentInd]) {
									if (mask.v.c) {
										pointInd = 0;
										segmentInd = 0;
										points = segments[segmentInd].points;
									} else {
										segmentLength -= currentPoint.partialLength;
										points = null;
									}
								} else {
									points = segments[segmentInd].points;
								}
							}
							if (points) {
								prevPoint = currentPoint;
								currentPoint = points[pointInd];
								partialLength = currentPoint.partialLength;
							}
						}
					}
					offf = letters[i].an / 2 - letters[i].add;
					matrixHelper.translate(-offf, 0, 0);
				} else {
					offf = letters[i].an/2 - letters[i].add;
					matrixHelper.translate(-offf,0,0);

					// Grouping alignment
					matrixHelper.translate(-alignment[0]*letters[i].an/200, -alignment[1]*yOff/100, 0);
				}

				lineLength += letters[i].l/2;
				for(j=0;j<jLen;j+=1){
					animatorProps = animators[j].a;
					if (animatorProps.t.propType) {
						animatorSelector = animators[j].s;
						mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);
						//This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean "isNewLine"
						if(xPos !== 0 || documentData.j !== 0) {
							if(this._hasMaskedPath) {
								if(mult.length) {
									currentLength += animatorProps.t.v*mult[0];
								} else {
									currentLength += animatorProps.t.v*mult;
								}
							}else{
								if(mult.length) {
									xPos += animatorProps.t.v*mult[0];
								} else {
									xPos += animatorProps.t.v*mult;
								}
							}
						}
					}
				}
				lineLength += letters[i].l/2;
				if(documentData.strokeWidthAnim) {
					sw = documentData.sw || 0;
				}
				if(documentData.strokeColorAnim) {
					if(documentData.sc){
						sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];
					}else{
						sc = [0,0,0];
					}
				}
				if(documentData.fillColorAnim && documentData.fc) {
					fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];
				}
				for(j=0;j<jLen;j+=1){
					animatorProps = animators[j].a;
					if (animatorProps.a.propType) {
						animatorSelector = animators[j].s;
						mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);

						if(mult.length){
							matrixHelper.translate(-animatorProps.a.v[0]*mult[0], -animatorProps.a.v[1]*mult[1], animatorProps.a.v[2]*mult[2]);
						} else {
							matrixHelper.translate(-animatorProps.a.v[0]*mult, -animatorProps.a.v[1]*mult, animatorProps.a.v[2]*mult);
						}
					}
				}
				for(j=0;j<jLen;j+=1){
					animatorProps = animators[j].a;
					if (animatorProps.s.propType) {
						animatorSelector = animators[j].s;
						mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);
						if(mult.length){
							matrixHelper.scale(1+((animatorProps.s.v[0]-1)*mult[0]),1+((animatorProps.s.v[1]-1)*mult[1]),1);
						} else {
							matrixHelper.scale(1+((animatorProps.s.v[0]-1)*mult),1+((animatorProps.s.v[1]-1)*mult),1);
						}
					}
				}
				for(j=0;j<jLen;j+=1) {
					animatorProps = animators[j].a;
					animatorSelector = animators[j].s;
					mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);
					if (animatorProps.sk.propType) {
						if(mult.length) {
							matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);
						} else {
							matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);
						}
					}
					if (animatorProps.r.propType) {
						if(mult.length) {
							matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);
						} else {
							matrixHelper.rotateZ(-animatorProps.r.v * mult);
						}
					}
					if (animatorProps.ry.propType) {

						if(mult.length) {
							matrixHelper.rotateY(animatorProps.ry.v*mult[1]);
						}else{
							matrixHelper.rotateY(animatorProps.ry.v*mult);
						}
					}
					if (animatorProps.rx.propType) {
						if(mult.length) {
							matrixHelper.rotateX(animatorProps.rx.v*mult[0]);
						} else {
							matrixHelper.rotateX(animatorProps.rx.v*mult);
						}
					}
					if (animatorProps.o.propType) {
						if(mult.length) {
							elemOpacity += ((animatorProps.o.v)*mult[0] - elemOpacity)*mult[0];
						} else {
							elemOpacity += ((animatorProps.o.v)*mult - elemOpacity)*mult;
						}
					}
					if (documentData.strokeWidthAnim && animatorProps.sw.propType) {
						if(mult.length) {
							sw += animatorProps.sw.v*mult[0];
						} else {
							sw += animatorProps.sw.v*mult;
						}
					}
					if (documentData.strokeColorAnim && animatorProps.sc.propType) {
						for(k=0;k<3;k+=1){
							if(mult.length) {
								sc[k] = sc[k] + (animatorProps.sc.v[k] - sc[k])*mult[0];
							} else {
								sc[k] = sc[k] + (animatorProps.sc.v[k] - sc[k])*mult;
							}
						}
					}
					if (documentData.fillColorAnim && documentData.fc) {
						if(animatorProps.fc.propType){
							for(k=0;k<3;k+=1){
								if(mult.length) {
									fc[k] = fc[k] + (animatorProps.fc.v[k] - fc[k])*mult[0];
								} else {
									fc[k] = fc[k] + (animatorProps.fc.v[k] - fc[k])*mult;
								}
							}
						}
						if(animatorProps.fh.propType){
							if(mult.length) {
								fc = addHueToRGB(fc,animatorProps.fh.v*mult[0]);
							} else {
								fc = addHueToRGB(fc,animatorProps.fh.v*mult);
							}
						}
						if(animatorProps.fs.propType){
							if(mult.length) {
								fc = addSaturationToRGB(fc,animatorProps.fs.v*mult[0]);
							} else {
								fc = addSaturationToRGB(fc,animatorProps.fs.v*mult);
							}
						}
						if(animatorProps.fb.propType){
							if(mult.length) {
								fc = addBrightnessToRGB(fc,animatorProps.fb.v*mult[0]);
							} else {
								fc = addBrightnessToRGB(fc,animatorProps.fb.v*mult);
							}
						}
					}
				}

				for(j=0;j<jLen;j+=1){
					animatorProps = animators[j].a;

					if (animatorProps.p.propType) {
						animatorSelector = animators[j].s;
						mult = animatorSelector.getMult(letters[i].anIndexes[j],textData.a[j].s.totalChars);
						if(this._hasMaskedPath) {
							if(mult.length) {
								matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);
							} else {
								matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);
							}
						}else{
							if(mult.length) {
								matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);
							} else {
								matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);

							}
						}
					}
				}
				if(documentData.strokeWidthAnim){
					letterSw = sw < 0 ? 0 : sw;
				}
				if(documentData.strokeColorAnim){
					letterSc = 'rgb('+Math.round(sc[0]*255)+','+Math.round(sc[1]*255)+','+Math.round(sc[2]*255)+')';
				}
				if(documentData.fillColorAnim && documentData.fc){
					letterFc = 'rgb('+Math.round(fc[0]*255)+','+Math.round(fc[1]*255)+','+Math.round(fc[2]*255)+')';
				}

				if(this._hasMaskedPath) {
					matrixHelper.translate(0,-documentData.ls);

					matrixHelper.translate(0, alignment[1]*yOff/100 + yPos,0);
					if (textData.p.p) {
						tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);
						var rot = Math.atan(tanAngle) * 180 / Math.PI;
						if (currentPoint.point[0] < prevPoint.point[0]) {
							rot += 180;
						}
						matrixHelper.rotate(-rot * Math.PI / 180);
					}
					matrixHelper.translate(xPathPos, yPathPos, 0);
					currentLength -= alignment[0]*letters[i].an/200;
					if(letters[i+1] && ind !== letters[i+1].ind){
						currentLength += letters[i].an / 2;
						currentLength += documentData.tr/1000*documentData.finalSize;
					}
				}else{

					matrixHelper.translate(xPos,yPos,0);

					if(documentData.ps){
						//matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);
						matrixHelper.translate(documentData.ps[0],documentData.ps[1] + documentData.ascent,0);
					}
					switch(documentData.j){
						case 1:
							matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]),0,0);
							break;
						case 2:
							matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line])/2,0,0);
							break;
					}
					matrixHelper.translate(0,-documentData.ls);
					matrixHelper.translate(offf,0,0);
					matrixHelper.translate(alignment[0]*letters[i].an/200,alignment[1]*yOff/100,0);
					xPos += letters[i].l + documentData.tr/1000*documentData.finalSize;
				}
				if(renderType === 'html'){
					letterM = matrixHelper.toCSS();
				}else if(renderType === 'svg'){
					letterM = matrixHelper.to2dCSS();
				}else{
					letterP = [matrixHelper.props[0],matrixHelper.props[1],matrixHelper.props[2],matrixHelper.props[3],matrixHelper.props[4],matrixHelper.props[5],matrixHelper.props[6],matrixHelper.props[7],matrixHelper.props[8],matrixHelper.props[9],matrixHelper.props[10],matrixHelper.props[11],matrixHelper.props[12],matrixHelper.props[13],matrixHelper.props[14],matrixHelper.props[15]];
				}
				letterO = elemOpacity;
			}

			if(renderedLettersCount <= i) {
				letterValue = new LetterProps(letterO,letterSw,letterSc,letterFc,letterM,letterP);
				this.renderedLetters.push(letterValue);
				renderedLettersCount += 1;
				this.lettersChangedFlag = true;
			} else {
				letterValue = this.renderedLetters[i];
				this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;
			}
		}
	};

	TextAnimatorProperty.prototype.getValue = function(){
		if(this._elem.globalData.frameId === this._frameId){
			return;
		}
		this._frameId = this._elem.globalData.frameId;
		this.iterateDynamicProperties();
	};

	TextAnimatorProperty.prototype.mHelper = new Matrix();
	TextAnimatorProperty.prototype.defaultPropsArray = [];
	extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);
	function TextAnimatorDataProperty(elem, animatorProps, container) {
		var defaultData = {propType:false};
		var getProp = PropertyFactory.getProp;
		var textAnimator_animatables = animatorProps.a;
		this.a = {
			r: textAnimator_animatables.r ? getProp(elem, textAnimator_animatables.r, 0, degToRads, container) : defaultData,
			rx: textAnimator_animatables.rx ? getProp(elem, textAnimator_animatables.rx, 0, degToRads, container) : defaultData,
			ry: textAnimator_animatables.ry ? getProp(elem, textAnimator_animatables.ry, 0, degToRads, container) : defaultData,
			sk: textAnimator_animatables.sk ? getProp(elem, textAnimator_animatables.sk, 0, degToRads, container) : defaultData,
			sa: textAnimator_animatables.sa ? getProp(elem, textAnimator_animatables.sa, 0, degToRads, container) : defaultData,
			s: textAnimator_animatables.s ? getProp(elem, textAnimator_animatables.s, 1, 0.01, container) : defaultData,
			a: textAnimator_animatables.a ? getProp(elem, textAnimator_animatables.a, 1, 0, container) : defaultData,
			o: textAnimator_animatables.o ? getProp(elem, textAnimator_animatables.o, 0, 0.01, container) : defaultData,
			p: textAnimator_animatables.p ? getProp(elem,textAnimator_animatables.p, 1, 0, container) : defaultData,
			sw: textAnimator_animatables.sw ? getProp(elem, textAnimator_animatables.sw, 0, 0, container) : defaultData,
			sc: textAnimator_animatables.sc ? getProp(elem, textAnimator_animatables.sc, 1, 0, container) : defaultData,
			fc: textAnimator_animatables.fc ? getProp(elem, textAnimator_animatables.fc, 1, 0, container) : defaultData,
			fh: textAnimator_animatables.fh ? getProp(elem, textAnimator_animatables.fh, 0, 0, container) : defaultData,
			fs: textAnimator_animatables.fs ? getProp(elem, textAnimator_animatables.fs, 0, 0.01, container) : defaultData,
			fb: textAnimator_animatables.fb ? getProp(elem, textAnimator_animatables.fb, 0, 0.01, container) : defaultData,
			t: textAnimator_animatables.t ? getProp(elem, textAnimator_animatables.t, 0, 0, container) : defaultData
		};

		this.s = TextSelectorProp.getTextSelectorProp(elem,animatorProps.s, container);
		this.s.t = animatorProps.s.t;
	}
	function LetterProps(o, sw, sc, fc, m, p){
		this.o = o;
		this.sw = sw;
		this.sc = sc;
		this.fc = fc;
		this.m = m;
		this.p = p;
		this._mdf = {
			o: true,
			sw: !!sw,
			sc: !!sc,
			fc: !!fc,
			m: true,
			p: true
		};
	}

	LetterProps.prototype.update = function(o, sw, sc, fc, m, p) {
		this._mdf.o = false;
		this._mdf.sw = false;
		this._mdf.sc = false;
		this._mdf.fc = false;
		this._mdf.m = false;
		this._mdf.p = false;
		var updated = false;

		if(this.o !== o) {
			this.o = o;
			this._mdf.o = true;
			updated = true;
		}
		if(this.sw !== sw) {
			this.sw = sw;
			this._mdf.sw = true;
			updated = true;
		}
		if(this.sc !== sc) {
			this.sc = sc;
			this._mdf.sc = true;
			updated = true;
		}
		if(this.fc !== fc) {
			this.fc = fc;
			this._mdf.fc = true;
			updated = true;
		}
		if(this.m !== m) {
			this.m = m;
			this._mdf.m = true;
			updated = true;
		}
		if(p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {
			this.p = p;
			this._mdf.p = true;
			updated = true;
		}
		return updated;
	};
	function TextProperty(elem, data){
		this._frameId = initialDefaultFrame;
		this.pv = '';
		this.v = '';
		this.kf = false;
		this._isFirstFrame = true;
		this._mdf = false;
		this.data = data;
		this.elem = elem;
		this.comp = this.elem.comp;
		this.keysIndex = 0;
		this.canResize = false;
		this.minimumFontSize = 1;
		this.effectsSequence = [];
		this.currentData = {
			ascent: 0,
			boxWidth: this.defaultBoxWidth,
			f: '',
			fStyle: '',
			fWeight: '',
			fc: '',
			j: '',
			justifyOffset: '',
			l: [],
			lh: 0,
			lineWidths: [],
			ls: '',
			of: '',
			s: '',
			sc: '',
			sw: 0,
			t: 0,
			tr: 0,
			sz:0,
			ps:null,
			fillColorAnim: false,
			strokeColorAnim: false,
			strokeWidthAnim: false,
			yOffset: 0,
			finalSize:0,
			finalText:[],
			finalLineHeight: 0,
			__complete: false

		};
		this.copyData(this.currentData, this.data.d.k[0].s);

		if(!this.searchProperty()) {
			this.completeTextData(this.currentData);
		}
	}

	TextProperty.prototype.defaultBoxWidth = [0,0];

	TextProperty.prototype.copyData = function(obj, data) {
		for(var s in data) {
			if(data.hasOwnProperty(s)) {
				obj[s] = data[s];
			}
		}
		return obj;
	}

	TextProperty.prototype.setCurrentData = function(data){
		if(!data.__complete) {
			this.completeTextData(data);
		}
		this.currentData = data;
		this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;
		this._mdf = true;
	};

	TextProperty.prototype.searchProperty = function() {
		return this.searchKeyframes();
	};

	TextProperty.prototype.searchKeyframes = function() {
		this.kf = this.data.d.k.length > 1;
		if(this.kf) {
			this.addEffect(this.getKeyframeValue.bind(this));
		}
		return this.kf;
	}

	TextProperty.prototype.addEffect = function(effectFunction) {
		this.effectsSequence.push(effectFunction);
		this.elem.addDynamicProperty(this);
	};

	TextProperty.prototype.getValue = function(_finalValue) {
		if((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {
			return;
		}
		this.currentData.t = this.data.d.k[this.keysIndex].s.t;
		var currentValue = this.currentData;
		var currentIndex = this.keysIndex;
		if(this.lock) {
			this.setCurrentData(this.currentData);
			return;
		}
		this.lock = true;
		this._mdf = false;
		var multipliedValue;
		var i, len = this.effectsSequence.length;
		var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;
		for(i = 0; i < len; i += 1) {
			//Checking if index changed to prevent creating a new object every time the expression updates.
			if(currentIndex !== this.keysIndex) {
				finalValue = this.effectsSequence[i](finalValue, finalValue.t);
			} else {
				finalValue = this.effectsSequence[i](this.currentData, finalValue.t);
			}
		}
		if(currentValue !== finalValue) {
			this.setCurrentData(finalValue);
		}
		this.pv = this.v = this.currentData;
		this.lock = false;
		this.frameId = this.elem.globalData.frameId;
	}

	TextProperty.prototype.getKeyframeValue = function() {
		var textKeys = this.data.d.k, textDocumentData;
		var frameNum = this.elem.comp.renderedFrame;
		var i = 0, len = textKeys.length;
		while(i <= len - 1) {
			textDocumentData = textKeys[i].s;
			if(i === len - 1 || textKeys[i+1].t > frameNum){
				break;
			}
			i += 1;
		}
		if(this.keysIndex !== i) {
			this.keysIndex = i;
		}
		return this.data.d.k[this.keysIndex].s;
	};

	TextProperty.prototype.buildFinalText = function(text) {
		var combinedCharacters = FontManager.getCombinedCharacterCodes();
		var charactersArray = [];
		var i = 0, len = text.length;
		var charCode;
		while (i < len) {
			charCode = text.charCodeAt(i);
			if (combinedCharacters.indexOf(charCode) !== -1) {
				charactersArray[charactersArray.length - 1] += text.charAt(i);
			} else {
				if (charCode >= 0xD800 && charCode <= 0xDBFF) {
					charCode = text.charCodeAt(i + 1);
					if (charCode >= 0xDC00 && charCode <= 0xDFFF) {
						charactersArray.push(text.substr(i, 2));
						++i;
					} else {
						charactersArray.push(text.charAt(i));
					}
				} else {
					charactersArray.push(text.charAt(i));
				}
			}
			i += 1;
		}
		return charactersArray;
	}

	TextProperty.prototype.completeTextData = function(documentData) {
		documentData.__complete = true;
		var fontManager = this.elem.globalData.fontManager;
		var data = this.data;
		var letters = [];
		var i, len;
		var newLineFlag, index = 0, val;
		var anchorGrouping = data.m.g;
		var currentSize = 0, currentPos = 0, currentLine = 0, lineWidths = [];
		var lineWidth = 0;
		var maxLineWidth = 0;
		var j, jLen;
		var fontData = fontManager.getFontByName(documentData.f);
		var charData, cLength = 0;
		var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];

		var fWeight = 'normal', fStyle = 'normal';
		len = styles.length;
		var styleName;
		for(i=0;i<len;i+=1){
			styleName = styles[i].toLowerCase();
			switch(styleName) {
				case 'italic':
					fStyle = 'italic';
					break;
				case 'bold':
					fWeight = '700';
					break;
				case 'black':
					fWeight = '900';
					break;
				case 'medium':
					fWeight = '500';
					break;
				case 'regular':
				case 'normal':
					fWeight = '400';
					break;
				case 'light':
				case 'thin':
					fWeight = '200';
					break;
			}
		}
		documentData.fWeight = fontData.fWeight || fWeight;
		documentData.fStyle = fStyle;
		documentData.finalSize = documentData.s;
		documentData.finalText = this.buildFinalText(documentData.t);
		len = documentData.finalText.length;
		documentData.finalLineHeight = documentData.lh;
		var trackingOffset = documentData.tr/1000*documentData.finalSize;
		var charCode;
		if(documentData.sz){
			var flag = true;
			var boxWidth = documentData.sz[0];
			var boxHeight = documentData.sz[1];
			var currentHeight, finalText;
			while(flag) {
				finalText = this.buildFinalText(documentData.t);
				currentHeight = 0;
				lineWidth = 0;
				len = finalText.length;
				trackingOffset = documentData.tr/1000*documentData.finalSize;
				var lastSpaceIndex = -1;
				for(i=0;i<len;i+=1){
					charCode = finalText[i].charCodeAt(0);
					newLineFlag = false;
					if(finalText[i] === ' '){
						lastSpaceIndex = i;
					}else if(charCode === 13 || charCode === 3){
						lineWidth = 0;
						newLineFlag = true;
						currentHeight += documentData.finalLineHeight || documentData.finalSize*1.2;
					}
					if(fontManager.chars){
						charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);
						cLength = newLineFlag ? 0 : charData.w*documentData.finalSize/100;
					}else{
						//tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;
						cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);
					}
					if(lineWidth + cLength > boxWidth && finalText[i] !== ' '){
						if(lastSpaceIndex === -1){
							len += 1;
						} else {
							i = lastSpaceIndex;
						}
						currentHeight += documentData.finalLineHeight || documentData.finalSize*1.2;
						finalText.splice(i, lastSpaceIndex === i ? 1 : 0,"\r");
						//finalText = finalText.substr(0,i) + "\r" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);
						lastSpaceIndex = -1;
						lineWidth = 0;
					}else {
						lineWidth += cLength;
						lineWidth += trackingOffset;
					}
				}
				currentHeight += fontData.ascent*documentData.finalSize/100;
				if(this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {
					documentData.finalSize -= 1;
					documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;
				} else {
					documentData.finalText = finalText;
					len = documentData.finalText.length;
					flag = false;
				}
			}

		}
		lineWidth = - trackingOffset;
		cLength = 0;
		var uncollapsedSpaces = 0;
		var currentChar;
		for (i = 0;i < len ;i += 1) {
			newLineFlag = false;
			currentChar = documentData.finalText[i];
			charCode = currentChar.charCodeAt(0);
			if (charCode === 13 || charCode === 3) {
				uncollapsedSpaces = 0;
				lineWidths.push(lineWidth);
				maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;
				lineWidth = - 2 * trackingOffset;
				val = '';
				newLineFlag = true;
				currentLine += 1;
			}else{
				val = currentChar;
			}
			if(fontManager.chars){
				charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);
				cLength = newLineFlag ? 0 : charData.w*documentData.finalSize/100;
			}else{
				//var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);
				//tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;
				cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);
			}

			//
			if(currentChar === ' '){
				uncollapsedSpaces += cLength + trackingOffset;
			} else {
				lineWidth += cLength + trackingOffset + uncollapsedSpaces;
				uncollapsedSpaces = 0;
			}
			letters.push({l:cLength,an:cLength,add:currentSize,n:newLineFlag, anIndexes:[], val: val, line: currentLine, animatorJustifyOffset: 0});
			if(anchorGrouping == 2){
				currentSize += cLength;
				if(val === '' || val === ' ' || i === len - 1){
					if(val === '' || val === ' '){
						currentSize -= cLength;
					}
					while(currentPos<=i){
						letters[currentPos].an = currentSize;
						letters[currentPos].ind = index;
						letters[currentPos].extra = cLength;
						currentPos += 1;
					}
					index += 1;
					currentSize = 0;
				}
			}else if(anchorGrouping == 3){
				currentSize += cLength;
				if(val === '' || i === len - 1){
					if(val === ''){
						currentSize -= cLength;
					}
					while(currentPos<=i){
						letters[currentPos].an = currentSize;
						letters[currentPos].ind = index;
						letters[currentPos].extra = cLength;
						currentPos += 1;
					}
					currentSize = 0;
					index += 1;
				}
			}else{
				letters[index].ind = index;
				letters[index].extra = 0;
				index += 1;
			}
		}
		documentData.l = letters;
		maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;
		lineWidths.push(lineWidth);
		if(documentData.sz){
			documentData.boxWidth = documentData.sz[0];
			documentData.justifyOffset = 0;
		}else{
			documentData.boxWidth = maxLineWidth;
			switch(documentData.j){
				case 1:
					documentData.justifyOffset = - documentData.boxWidth;
					break;
				case 2:
					documentData.justifyOffset = - documentData.boxWidth/2;
					break;
				default:
					documentData.justifyOffset = 0;
			}
		}
		documentData.lineWidths = lineWidths;

		var animators = data.a, animatorData, letterData;
		jLen = animators.length;
		var based, ind, indexes = [];
		for(j=0;j<jLen;j+=1){
			animatorData = animators[j];
			if(animatorData.a.sc){
				documentData.strokeColorAnim = true;
			}
			if(animatorData.a.sw){
				documentData.strokeWidthAnim = true;
			}
			if(animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb){
				documentData.fillColorAnim = true;
			}
			ind = 0;
			based = animatorData.s.b;
			for(i=0;i<len;i+=1){
				letterData = letters[i];
				letterData.anIndexes[j] = ind;
				if((based == 1 && letterData.val !== '') || (based == 2 && letterData.val !== '' && letterData.val !== ' ') || (based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1)) || (based == 4 && (letterData.n || i == len - 1))){
					if(animatorData.s.rn === 1){
						indexes.push(ind);
					}
					ind += 1;
				}
			}
			data.a[j].s.totalChars = ind;
			var currentInd = -1, newInd;
			if(animatorData.s.rn === 1){
				for(i = 0; i < len; i += 1){
					letterData = letters[i];
					if(currentInd != letterData.anIndexes[j]){
						currentInd = letterData.anIndexes[j];
						newInd = indexes.splice(Math.floor(Math.random()*indexes.length),1)[0];
					}
					letterData.anIndexes[j] = newInd;
				}
			}
		}
		documentData.yOffset = documentData.finalLineHeight || documentData.finalSize*1.2;
		documentData.ls = documentData.ls || 0;
		documentData.ascent = fontData.ascent*documentData.finalSize/100;
	};

	TextProperty.prototype.updateDocumentData = function(newData, index) {
		index = index === undefined ? this.keysIndex : index;
		var dData = this.copyData({}, this.data.d.k[index].s);
		dData = this.copyData(dData, newData);
		this.data.d.k[index].s = dData;
		this.recalculate(index);
		this.elem.addDynamicProperty(this);
	};

	TextProperty.prototype.recalculate = function(index) {
		var dData = this.data.d.k[index].s;
		dData.__complete = false;
		this.keysIndex = 0;
		this._isFirstFrame = true;
		this.getValue(dData);
	}

	TextProperty.prototype.canResizeFont = function(_canResize) {
		this.canResize = _canResize;
		this.recalculate(this.keysIndex);
		this.elem.addDynamicProperty(this);
	};

	TextProperty.prototype.setMinimumFontSize = function(_fontValue) {
		this.minimumFontSize = Math.floor(_fontValue) || 1;
		this.recalculate(this.keysIndex);
		this.elem.addDynamicProperty(this);
	};

	var TextSelectorProp = (function(){
		var max = Math.max;
		var min = Math.min;
		var floor = Math.floor;

		function TextSelectorProp(elem,data){
			this._currentTextLength = -1;
			this.k = false;
			this.data = data;
			this.elem = elem;
			this.comp = elem.comp;
			this.finalS = 0;
			this.finalE = 0;
			this.initDynamicPropertyContainer(elem);
			this.s = PropertyFactory.getProp(elem,data.s || {k:0},0,0,this);
			if('e' in data){
				this.e = PropertyFactory.getProp(elem,data.e,0,0,this);
			}else{
				this.e = {v:100};
			}
			this.o = PropertyFactory.getProp(elem,data.o || {k:0},0,0,this);
			this.xe = PropertyFactory.getProp(elem,data.xe || {k:0},0,0,this);
			this.ne = PropertyFactory.getProp(elem,data.ne || {k:0},0,0,this);
			this.a = PropertyFactory.getProp(elem,data.a,0,0.01,this);
			if(!this.dynamicProperties.length){
				this.getValue();
			}
		}

		TextSelectorProp.prototype = {
			getMult: function(ind) {
				if(this._currentTextLength !== this.elem.textProperty.currentData.l.length) {
					this.getValue();
				}
				//var easer = bez.getEasingCurve(this.ne.v/100,0,1-this.xe.v/100,1);
				var x1 = 0;
				var y1 = 0;
				var x2 = 1;
				var y2 = 1;
				if(this.ne.v > 0) {
					x1 = this.ne.v / 100.0;
				}
				else {
					y1 = -this.ne.v / 100.0;
				}
				if(this.xe.v > 0) {
					x2 = 1.0 - this.xe.v / 100.0;
				}
				else {
					y2 = 1.0 + this.xe.v / 100.0;
				}
				var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;

				var mult = 0;
				var s = this.finalS;
				var e = this.finalE;
				var type = this.data.sh;
				if (type === 2){
					if (e === s) {
						mult = ind >= e ? 1 : 0;
					} else {
						mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));
					}
					mult = easer(mult);
				} else if(type === 3) {
					if (e === s) {
						mult = ind >= e ? 0 : 1;
					}else{
						mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s),1));
					}

					mult = easer(mult);
				} else if (type === 4) {
					if (e === s) {
						mult = 0;
					} else {
						mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));
						if (mult < 0.5) {
							mult *= 2;
						} else {
							mult = 1 - 2 * (mult - 0.5);
						}
					}
					mult = easer(mult);
				} else if (type === 5) {
					if (e === s){
						mult = 0;
					} else {
						var tot = e - s;
						/*ind += 0.5;
                    mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind;*/
						ind = min(max(0, ind + 0.5 - s), e - s);
						var x = -tot/2+ind;
						var a = tot/2;
						mult = Math.sqrt(1 - (x * x) / (a * a));
					}
					mult = easer(mult);
				} else if (type === 6) {
					if (e === s){
						mult = 0;
					} else {
						ind = min(max(0, ind + 0.5 - s), e - s);
						mult = (1 + (Math.cos((Math.PI + Math.PI * 2 * (ind) / (e - s))))) / 2;
					}
					mult = easer(mult);
				} else {
					if (ind >= floor(s)) {
						if (ind - s < 0) {
							mult = max(0, min(min(e, 1) - (s - ind), 1));
						} else {
							mult = max(0, min(e - ind, 1));
						}
					}
					mult = easer(mult);
				}
				return mult*this.a.v;
			},
			getValue: function(newCharsFlag) {
				this.iterateDynamicProperties();
				this._mdf = newCharsFlag || this._mdf;
				this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;
				if(newCharsFlag && this.data.r === 2) {
					this.e.v = this._currentTextLength;
				}
				var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;
				var o = this.o.v/divisor;
				var s = this.s.v/divisor + o;
				var e = (this.e.v/divisor) + o;
				if(s>e){
					var _s = s;
					s = e;
					e = _s;
				}
				this.finalS = s;
				this.finalE = e;
			}
		}
		extendPrototype([DynamicPropertyContainer], TextSelectorProp);

		function getTextSelectorProp(elem, data,arr) {
			return new TextSelectorProp(elem, data, arr);
		}

		return {
			getTextSelectorProp: getTextSelectorProp
		};
	}());


	var pool_factory = (function() {
		return function(initialLength, _create, _release, _clone) {

			var _length = 0;
			var _maxLength = initialLength;
			var pool = createSizedArray(_maxLength);

			var ob = {
				newElement: newElement,
				release: release
			};

			function newElement(){
				var element;
				if(_length){
					_length -= 1;
					element = pool[_length];
				} else {
					element = _create();
				}
				return element;
			}

			function release(element) {
				if(_length === _maxLength) {
					pool = pooling.double(pool);
					_maxLength = _maxLength*2;
				}
				if (_release) {
					_release(element);
				}
				pool[_length] = element;
				_length += 1;
			}

			function clone() {
				var clonedElement = newElement();
				return _clone(clonedElement);
			}

			return ob;
		};
	}());

	var pooling = (function(){

		function double(arr){
			return arr.concat(createSizedArray(arr.length));
		}

		return {
			double: double
		};
	}());
	var point_pool = (function(){

		function create() {
			return createTypedArray('float32', 2);
		}
		return pool_factory(8, create);
	}());
	var shape_pool = (function(){

		function create() {
			return new ShapePath();
		}

		function release(shapePath) {
			var len = shapePath._length, i;
			for(i = 0; i < len; i += 1) {
				point_pool.release(shapePath.v[i]);
				point_pool.release(shapePath.i[i]);
				point_pool.release(shapePath.o[i]);
				shapePath.v[i] = null;
				shapePath.i[i] = null;
				shapePath.o[i] = null;
			}
			shapePath._length = 0;
			shapePath.c = false;
		}

		function clone(shape) {
			var cloned = factory.newElement();
			var i, len = shape._length === undefined ? shape.v.length : shape._length;
			cloned.setLength(len);
			cloned.c = shape.c;
			var pt;

			for(i = 0; i < len; i += 1) {
				cloned.setTripleAt(shape.v[i][0],shape.v[i][1],shape.o[i][0],shape.o[i][1],shape.i[i][0],shape.i[i][1], i);
			}
			return cloned;
		}

		var factory = pool_factory(4, create, release);
		factory.clone = clone;

		return factory;
	}());
	var shapeCollection_pool = (function(){
		var ob = {
			newShapeCollection: newShapeCollection,
			release: release
		};

		var _length = 0;
		var _maxLength = 4;
		var pool = createSizedArray(_maxLength);

		function newShapeCollection(){
			var shapeCollection;
			if(_length){
				_length -= 1;
				shapeCollection = pool[_length];
			} else {
				shapeCollection = new ShapeCollection();
			}
			return shapeCollection;
		}

		function release(shapeCollection) {
			var i, len = shapeCollection._length;
			for(i = 0; i < len; i += 1) {
				shape_pool.release(shapeCollection.shapes[i]);
			}
			shapeCollection._length = 0;

			if(_length === _maxLength) {
				pool = pooling.double(pool);
				_maxLength = _maxLength*2;
			}
			pool[_length] = shapeCollection;
			_length += 1;
		}

		return ob;
	}());
	var segments_length_pool = (function(){

		function create() {
			return {
				lengths: [],
				totalLength: 0
			};
		}

		function release(element) {
			var i, len = element.lengths.length;
			for(i=0;i<len;i+=1) {
				bezier_length_pool.release(element.lengths[i]);
			}
			element.lengths.length = 0;
		}

		return pool_factory(8, create, release);
	}());
	var bezier_length_pool = (function(){

		function create() {
			return {
				addedLength: 0,
				percents: createTypedArray('float32', defaultCurveSegments),
				lengths: createTypedArray('float32', defaultCurveSegments),
			};
		}
		return pool_factory(8, create);
	}());
	function BaseRenderer(){}
	BaseRenderer.prototype.checkLayers = function(num){
		var i, len = this.layers.length, data;
		this.completeLayers = true;
		for (i = len - 1; i >= 0; i--) {
			if (!this.elements[i]) {
				data = this.layers[i];
				if(data.ip - data.st <= (num - this.layers[i].st) && data.op - data.st > (num - this.layers[i].st))
				{
					this.buildItem(i);
				}
			}
			this.completeLayers = this.elements[i] ? this.completeLayers:false;
		}
		this.checkPendingElements();
	};

	BaseRenderer.prototype.createItem = function(layer){
		switch(layer.ty){
			case 2:
				return this.createImage(layer);
			case 0:
				return this.createComp(layer);
			case 1:
				return this.createSolid(layer);
			case 3:
				return this.createNull(layer);
			case 4:
				return this.createShape(layer);
			case 5:
				return this.createText(layer);
			case 13:
				return this.createCamera(layer);
		}
		return this.createNull(layer);
	};

	BaseRenderer.prototype.createCamera = function(){
		throw new Error('You\'re using a 3d camera. Try the html renderer.');
	};

	BaseRenderer.prototype.buildAllItems = function(){
		var i, len = this.layers.length;
		for(i=0;i<len;i+=1){
			this.buildItem(i);
		}
		this.checkPendingElements();
	};

	BaseRenderer.prototype.includeLayers = function(newLayers){
		this.completeLayers = false;
		var i, len = newLayers.length;
		var j, jLen = this.layers.length;
		for(i=0;i<len;i+=1){
			j = 0;
			while(j<jLen){
				if(this.layers[j].id == newLayers[i].id){
					this.layers[j] = newLayers[i];
					break;
				}
				j += 1;
			}
		}
	};

	BaseRenderer.prototype.setProjectInterface = function(pInterface){
		this.globalData.projectInterface = pInterface;
	};

	BaseRenderer.prototype.initItems = function(){
		if(!this.globalData.progressiveLoad){
			this.buildAllItems();
		}
	};
	BaseRenderer.prototype.buildElementParenting = function(element, parentName, hierarchy) {
		var elements = this.elements;
		var layers = this.layers;
		var i=0, len = layers.length;
		while (i < len) {
			if (layers[i].ind == parentName) {
				if (!elements[i] || elements[i] === true) {
					this.buildItem(i);
					this.addPendingElement(element);
				} else {
					hierarchy.push(elements[i]);
					elements[i].setAsParent();
					if(layers[i].parent !== undefined) {
						this.buildElementParenting(element, layers[i].parent, hierarchy);
					} else {
						element.setHierarchy(hierarchy);
					}
				}
			}
			i += 1;
		}
	};

	BaseRenderer.prototype.addPendingElement = function(element){
		this.pendingElements.push(element);
	};

	BaseRenderer.prototype.searchExtraCompositions = function(assets){
		var i, len = assets.length;
		for(i=0;i<len;i+=1){
			if(assets[i].xt){
				var comp = this.createComp(assets[i]);
				comp.initExpressions();
				this.globalData.projectInterface.registerComposition(comp);
			}
		}
	};

	BaseRenderer.prototype.setupGlobalData = function(animData, fontsContainer) {
		this.globalData.fontManager = new FontManager();
		this.globalData.fontManager.addChars(animData.chars);
		this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);
		this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);
		this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);
		this.globalData.imageLoader = this.animationItem.imagePreloader;
		this.globalData.frameId = 0;
		this.globalData.frameRate = animData.fr;
		this.globalData.nm = animData.nm;
		this.globalData.compSize = {
			w: animData.w,
			h: animData.h
		}
	}
	function SVGRenderer(animationItem, config){
		this.animationItem = animationItem;
		this.layers = null;
		this.renderedFrame = -1;
		this.svgElement = createNS('svg');
		var ariaLabel = '';
		if (config && config.title) {
			var titleElement = createNS('title');
			var titleId = createElementID();
			titleElement.setAttribute('id', titleId);
			titleElement.textContent = config.title;
			this.svgElement.appendChild(titleElement);
			ariaLabel += titleId;
		}
		if (config && config.description) {
			var descElement = createNS('desc');
			var descId = createElementID();
			descElement.setAttribute('id', descId);
			descElement.textContent = config.description;
			this.svgElement.appendChild(descElement);
			ariaLabel += ' ' + descId;
		}
		if (ariaLabel) {
			this.svgElement.setAttribute('aria-labelledby', ariaLabel)
		}
		var defs = createNS( 'defs');
		this.svgElement.appendChild(defs);
		var maskElement = createNS('g');
		this.svgElement.appendChild(maskElement);
		this.layerElement = maskElement;
		this.renderConfig = {
			preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',
			imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',
			progressiveLoad: (config && config.progressiveLoad) || false,
			hideOnTransparent: (config && config.hideOnTransparent === false) ? false : true,
			viewBoxOnly: (config && config.viewBoxOnly) || false,
			viewBoxSize: (config && config.viewBoxSize) || false,
			className: (config && config.className) || '',
			id: (config && config.id) || '',
			focusable: config && config.focusable,
			filterSize: {
				width: config && config.filterSize && config.filterSize.width || '100%',
				height: config && config.filterSize && config.filterSize.height || '100%',
				x: config && config.filterSize && config.filterSize.x || '0%',
				y: config && config.filterSize && config.filterSize.y || '0%',
			}
		};

		this.globalData = {
			_mdf: false,
			frameNum: -1,
			defs: defs,
			renderConfig: this.renderConfig
		};
		this.elements = [];
		this.pendingElements = [];
		this.destroyed = false;
		this.rendererType = 'svg';

	}

	extendPrototype([BaseRenderer],SVGRenderer);

	SVGRenderer.prototype.createNull = function (data) {
		return new NullElement(data,this.globalData,this);
	};

	SVGRenderer.prototype.createShape = function (data) {
		return new SVGShapeElement(data,this.globalData,this);
	};

	SVGRenderer.prototype.createText = function (data) {
		return new SVGTextElement(data,this.globalData,this);

	};

	SVGRenderer.prototype.createImage = function (data) {
		return new IImageElement(data,this.globalData,this);
	};

	SVGRenderer.prototype.createComp = function (data) {
		return new SVGCompElement(data,this.globalData,this);

	};

	SVGRenderer.prototype.createSolid = function (data) {
		return new ISolidElement(data,this.globalData,this);
	};

	SVGRenderer.prototype.configAnimation = function(animData){
		this.svgElement.setAttribute('xmlns','http://www.w3.org/2000/svg');
		if(this.renderConfig.viewBoxSize) {
			this.svgElement.setAttribute('viewBox',this.renderConfig.viewBoxSize);
		} else {
			this.svgElement.setAttribute('viewBox','0 0 '+animData.w+' '+animData.h);
		}

		if(!this.renderConfig.viewBoxOnly) {
			this.svgElement.setAttribute('width',animData.w);
			this.svgElement.setAttribute('height',animData.h);
			this.svgElement.style.width = '100%';
			this.svgElement.style.height = '100%';
			this.svgElement.style.transform = 'translate3d(0,0,0)';
		}
		if (this.renderConfig.className) {
			this.svgElement.setAttribute('class', this.renderConfig.className);
		}
		if (this.renderConfig.id) {
			this.svgElement.setAttribute('id', this.renderConfig.id);
		}
		if (this.renderConfig.focusable !== undefined) {
			this.svgElement.setAttribute('focusable', this.renderConfig.focusable);
		}
		this.svgElement.setAttribute('preserveAspectRatio',this.renderConfig.preserveAspectRatio);
		//this.layerElement.style.transform = 'translate3d(0,0,0)';
		//this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = "0px 0px 0px";
		this.animationItem.wrapper.appendChild(this.svgElement);
		//Mask animation
		var defs = this.globalData.defs;

		this.setupGlobalData(animData, defs);
		this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;
		this.data = animData;

		var maskElement = createNS( 'clipPath');
		var rect = createNS('rect');
		rect.setAttribute('width',animData.w);
		rect.setAttribute('height',animData.h);
		rect.setAttribute('x',0);
		rect.setAttribute('y',0);
		var maskId = createElementID();
		maskElement.setAttribute('id', maskId);
		maskElement.appendChild(rect);
		this.layerElement.setAttribute("clip-path", "url(" + locationHref + "#"+maskId+")");

		defs.appendChild(maskElement);
		this.layers = animData.layers;
		this.elements = createSizedArray(animData.layers.length);
	};


	SVGRenderer.prototype.destroy = function () {
		this.animationItem.wrapper.innerHTML = '';
		this.layerElement = null;
		this.globalData.defs = null;
		var i, len = this.layers ? this.layers.length : 0;
		for (i = 0; i < len; i++) {
			if(this.elements[i]){
				this.elements[i].destroy();
			}
		}
		this.elements.length = 0;
		this.destroyed = true;
		this.animationItem = null;
	};

	SVGRenderer.prototype.updateContainerSize = function () {
	};

	SVGRenderer.prototype.buildItem  = function(pos){
		var elements = this.elements;
		if(elements[pos] || this.layers[pos].ty == 99){
			return;
		}
		elements[pos] = true;
		var element = this.createItem(this.layers[pos]);

		elements[pos] = element;
		if(expressionsPlugin){
			if(this.layers[pos].ty === 0){
				this.globalData.projectInterface.registerComposition(element);
			}
			element.initExpressions();
		}
		this.appendElementInPos(element,pos);
		if(this.layers[pos].tt){
			if(!this.elements[pos - 1] || this.elements[pos - 1] === true){
				this.buildItem(pos - 1);
				this.addPendingElement(element);
			} else {
				element.setMatte(elements[pos - 1].layerId);
			}
		}
	};

	SVGRenderer.prototype.checkPendingElements  = function(){
		while(this.pendingElements.length){
			var element = this.pendingElements.pop();
			element.checkParenting();
			if(element.data.tt){
				var i = 0, len = this.elements.length;
				while(i<len){
					if(this.elements[i] === element){
						element.setMatte(this.elements[i - 1].layerId);
						break;
					}
					i += 1;
				}
			}
		}
	};

	SVGRenderer.prototype.renderFrame = function(num){
		if(this.renderedFrame === num || this.destroyed){
			return;
		}
		if(num === null){
			num = this.renderedFrame;
		}else{
			this.renderedFrame = num;
		}
		// console.log('-------');
		// console.log('FRAME ',num);
		this.globalData.frameNum = num;
		this.globalData.frameId += 1;
		this.globalData.projectInterface.currentFrame = num;
		this.globalData._mdf = false;
		var i, len = this.layers.length;
		if(!this.completeLayers){
			this.checkLayers(num);
		}
		for (i = len - 1; i >= 0; i--) {
			if(this.completeLayers || this.elements[i]){
				this.elements[i].prepareFrame(num - this.layers[i].st);
			}
		}
		if(this.globalData._mdf) {
			for (i = 0; i < len; i += 1) {
				if(this.completeLayers || this.elements[i]){
					this.elements[i].renderFrame();
				}
			}
		}
	};

	SVGRenderer.prototype.appendElementInPos = function(element, pos){
		var newElement = element.getBaseElement();
		if(!newElement){
			return;
		}
		var i = 0;
		var nextElement;
		while(i<pos){
			if(this.elements[i] && this.elements[i]!== true && this.elements[i].getBaseElement()){
				nextElement = this.elements[i].getBaseElement();
			}
			i += 1;
		}
		if(nextElement){
			this.layerElement.insertBefore(newElement, nextElement);
		} else {
			this.layerElement.appendChild(newElement);
		}
	};

	SVGRenderer.prototype.hide = function(){
		this.layerElement.style.display = 'none';
	};

	SVGRenderer.prototype.show = function(){
		this.layerElement.style.display = 'block';
	};

	function CanvasRenderer(animationItem, config){
		this.animationItem = animationItem;
		this.renderConfig = {
			clearCanvas: (config && config.clearCanvas !== undefined) ? config.clearCanvas : true,
			context: (config && config.context) || null,
			progressiveLoad: (config && config.progressiveLoad) || false,
			preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',
			imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',
			className: (config && config.className) || '',
			id: (config && config.id) || '',
		};
		this.renderConfig.dpr = (config && config.dpr) || 1;
		if (this.animationItem.wrapper) {
			this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1;
		}
		this.renderedFrame = -1;
		this.globalData = {
			frameNum: -1,
			_mdf: false,
			renderConfig: this.renderConfig,
			currentGlobalAlpha: -1
		};
		this.contextData = new CVContextData();
		this.elements = [];
		this.pendingElements = [];
		this.transformMat = new Matrix();
		this.completeLayers = false;
		this.rendererType = 'canvas';
	}
	extendPrototype([BaseRenderer],CanvasRenderer);

	CanvasRenderer.prototype.createShape = function (data) {
		return new CVShapeElement(data, this.globalData, this);
	};

	CanvasRenderer.prototype.createText = function (data) {
		return new CVTextElement(data, this.globalData, this);
	};

	CanvasRenderer.prototype.createImage = function (data) {
		return new CVImageElement(data, this.globalData, this);
	};

	CanvasRenderer.prototype.createComp = function (data) {
		return new CVCompElement(data, this.globalData, this);
	};

	CanvasRenderer.prototype.createSolid = function (data) {
		return new CVSolidElement(data, this.globalData, this);
	};

	CanvasRenderer.prototype.createNull = SVGRenderer.prototype.createNull;

	CanvasRenderer.prototype.ctxTransform = function(props){
		if(props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0){
			return;
		}
		if(!this.renderConfig.clearCanvas){
			this.canvasContext.transform(props[0],props[1],props[4],props[5],props[12],props[13]);
			return;
		}
		this.transformMat.cloneFromProps(props);
		var cProps = this.contextData.cTr.props;
		this.transformMat.transform(cProps[0],cProps[1],cProps[2],cProps[3],cProps[4],cProps[5],cProps[6],cProps[7],cProps[8],cProps[9],cProps[10],cProps[11],cProps[12],cProps[13],cProps[14],cProps[15]);
		//this.contextData.cTr.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);
		this.contextData.cTr.cloneFromProps(this.transformMat.props);
		var trProps = this.contextData.cTr.props;
		this.canvasContext.setTransform(trProps[0],trProps[1],trProps[4],trProps[5],trProps[12],trProps[13]);
	};

	CanvasRenderer.prototype.ctxOpacity = function(op){
		/*if(op === 1){
        return;
    }*/
		if(!this.renderConfig.clearCanvas){
			this.canvasContext.globalAlpha *= op < 0 ? 0 : op;
			this.globalData.currentGlobalAlpha = this.contextData.cO;
			return;
		}
		this.contextData.cO *= op < 0 ? 0 : op;
		if(this.globalData.currentGlobalAlpha !== this.contextData.cO) {
			this.canvasContext.globalAlpha = this.contextData.cO;
			this.globalData.currentGlobalAlpha = this.contextData.cO;
		}
	};

	CanvasRenderer.prototype.reset = function(){
		if(!this.renderConfig.clearCanvas){
			this.canvasContext.restore();
			return;
		}
		this.contextData.reset();
	};

	CanvasRenderer.prototype.save = function(actionFlag){
		if(!this.renderConfig.clearCanvas){
			this.canvasContext.save();
			return;
		}
		if(actionFlag){
			this.canvasContext.save();
		}
		var props = this.contextData.cTr.props;
		if(this.contextData._length <= this.contextData.cArrPos) {
			this.contextData.duplicate();
		}
		var i, arr = this.contextData.saved[this.contextData.cArrPos];
		for (i = 0; i < 16; i += 1) {
			arr[i] = props[i];
		}
		this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO;
		this.contextData.cArrPos += 1;
	};

	CanvasRenderer.prototype.restore = function(actionFlag){
		if(!this.renderConfig.clearCanvas){
			this.canvasContext.restore();
			return;
		}
		if(actionFlag){
			this.canvasContext.restore();
			this.globalData.blendMode = 'source-over';
		}
		this.contextData.cArrPos -= 1;
		var popped = this.contextData.saved[this.contextData.cArrPos];
		var i,arr = this.contextData.cTr.props;
		for(i=0;i<16;i+=1){
			arr[i] = popped[i];
		}
		this.canvasContext.setTransform(popped[0],popped[1],popped[4],popped[5],popped[12],popped[13]);
		popped = this.contextData.savedOp[this.contextData.cArrPos];
		this.contextData.cO = popped;
		if(this.globalData.currentGlobalAlpha !== popped) {
			this.canvasContext.globalAlpha = popped;
			this.globalData.currentGlobalAlpha = popped;
		}
	};

	CanvasRenderer.prototype.configAnimation = function(animData){
		if(this.animationItem.wrapper){
			this.animationItem.container = createTag('canvas');
			this.animationItem.container.style.width = '100%';
			this.animationItem.container.style.height = '100%';
			//this.animationItem.container.style.transform = 'translate3d(0,0,0)';
			//this.animationItem.container.style.webkitTransform = 'translate3d(0,0,0)';
			this.animationItem.container.style.transformOrigin = this.animationItem.container.style.mozTransformOrigin = this.animationItem.container.style.webkitTransformOrigin = this.animationItem.container.style['-webkit-transform'] = "0px 0px 0px";
			this.animationItem.wrapper.appendChild(this.animationItem.container);
			this.canvasContext = this.animationItem.container.getContext('2d');
			if(this.renderConfig.className) {
				this.animationItem.container.setAttribute('class', this.renderConfig.className);
			}
			if(this.renderConfig.id) {
				this.animationItem.container.setAttribute('id', this.renderConfig.id);
			}
		}else{
			this.canvasContext = this.renderConfig.context;
		}
		this.data = animData;
		this.layers = animData.layers;
		this.transformCanvas = {
			w: animData.w,
			h:animData.h,
			sx:0,
			sy:0,
			tx:0,
			ty:0
		};
		this.setupGlobalData(animData, document.body);
		this.globalData.canvasContext = this.canvasContext;
		this.globalData.renderer = this;
		this.globalData.isDashed = false;
		this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;
		this.globalData.transformCanvas = this.transformCanvas;
		this.elements = createSizedArray(animData.layers.length);

		this.updateContainerSize();
	};

	CanvasRenderer.prototype.updateContainerSize = function () {
		this.reset();
		var elementWidth,elementHeight;
		if(this.animationItem.wrapper && this.animationItem.container){
			elementWidth = this.animationItem.wrapper.offsetWidth;
			elementHeight = this.animationItem.wrapper.offsetHeight;
			this.animationItem.container.setAttribute('width',elementWidth * this.renderConfig.dpr );
			this.animationItem.container.setAttribute('height',elementHeight * this.renderConfig.dpr);
		}else{
			elementWidth = this.canvasContext.canvas.width * this.renderConfig.dpr;
			elementHeight = this.canvasContext.canvas.height * this.renderConfig.dpr;
		}
		var elementRel,animationRel;
		if(this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1){
			var par = this.renderConfig.preserveAspectRatio.split(' ');
			var fillType = par[1] || 'meet';
			var pos = par[0] || 'xMidYMid';
			var xPos = pos.substr(0,4);
			var yPos = pos.substr(4);
			elementRel = elementWidth/elementHeight;
			animationRel = this.transformCanvas.w/this.transformCanvas.h;
			if(animationRel>elementRel && fillType === 'meet' || animationRel<elementRel && fillType === 'slice'){
				this.transformCanvas.sx = elementWidth/(this.transformCanvas.w/this.renderConfig.dpr);
				this.transformCanvas.sy = elementWidth/(this.transformCanvas.w/this.renderConfig.dpr);
			}else{
				this.transformCanvas.sx = elementHeight/(this.transformCanvas.h / this.renderConfig.dpr);
				this.transformCanvas.sy = elementHeight/(this.transformCanvas.h / this.renderConfig.dpr);
			}

			if(xPos === 'xMid' && ((animationRel<elementRel && fillType==='meet') || (animationRel>elementRel && fillType === 'slice'))){
				this.transformCanvas.tx = (elementWidth-this.transformCanvas.w*(elementHeight/this.transformCanvas.h))/2*this.renderConfig.dpr;
			} else if(xPos === 'xMax' && ((animationRel<elementRel && fillType==='meet') || (animationRel>elementRel && fillType === 'slice'))){
				this.transformCanvas.tx = (elementWidth-this.transformCanvas.w*(elementHeight/this.transformCanvas.h))*this.renderConfig.dpr;
			} else {
				this.transformCanvas.tx = 0;
			}
			if(yPos === 'YMid' && ((animationRel>elementRel && fillType==='meet') || (animationRel<elementRel && fillType === 'slice'))){
				this.transformCanvas.ty = ((elementHeight-this.transformCanvas.h*(elementWidth/this.transformCanvas.w))/2)*this.renderConfig.dpr;
			} else if(yPos === 'YMax' && ((animationRel>elementRel && fillType==='meet') || (animationRel<elementRel && fillType === 'slice'))){
				this.transformCanvas.ty = ((elementHeight-this.transformCanvas.h*(elementWidth/this.transformCanvas.w)))*this.renderConfig.dpr;
			} else {
				this.transformCanvas.ty = 0;
			}

		}else if(this.renderConfig.preserveAspectRatio == 'none'){
			this.transformCanvas.sx = elementWidth/(this.transformCanvas.w/this.renderConfig.dpr);
			this.transformCanvas.sy = elementHeight/(this.transformCanvas.h/this.renderConfig.dpr);
			this.transformCanvas.tx = 0;
			this.transformCanvas.ty = 0;
		}else{
			this.transformCanvas.sx = this.renderConfig.dpr;
			this.transformCanvas.sy = this.renderConfig.dpr;
			this.transformCanvas.tx = 0;
			this.transformCanvas.ty = 0;
		}
		this.transformCanvas.props = [this.transformCanvas.sx,0,0,0,0,this.transformCanvas.sy,0,0,0,0,1,0,this.transformCanvas.tx,this.transformCanvas.ty,0,1];
		/*var i, len = this.elements.length;
    for(i=0;i<len;i+=1){
        if(this.elements[i] && this.elements[i].data.ty === 0){
            this.elements[i].resize(this.globalData.transformCanvas);
        }
    }*/
		this.ctxTransform(this.transformCanvas.props);
		this.canvasContext.beginPath();
		this.canvasContext.rect(0,0,this.transformCanvas.w,this.transformCanvas.h);
		this.canvasContext.closePath();
		this.canvasContext.clip();

		this.renderFrame(this.renderedFrame, true);
	};

	CanvasRenderer.prototype.destroy = function () {
		if(this.renderConfig.clearCanvas) {
			this.animationItem.wrapper.innerHTML = '';
		}
		var i, len = this.layers ? this.layers.length : 0;
		for (i = len - 1; i >= 0; i-=1) {
			if(this.elements[i]) {
				this.elements[i].destroy();
			}
		}
		this.elements.length = 0;
		this.globalData.canvasContext = null;
		this.animationItem.container = null;
		this.destroyed = true;
	};

	CanvasRenderer.prototype.renderFrame = function(num, forceRender){
		if((this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender) || this.destroyed || num === -1){
			return;
		}
		this.renderedFrame = num;
		this.globalData.frameNum = num - this.animationItem._isFirstFrame;
		this.globalData.frameId += 1;
		this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;
		this.globalData.projectInterface.currentFrame = num;

		// console.log('--------');
		// console.log('NEW: ',num);
		var i, len = this.layers.length;
		if(!this.completeLayers){
			this.checkLayers(num);
		}

		for (i = 0; i < len; i++) {
			if(this.completeLayers || this.elements[i]){
				this.elements[i].prepareFrame(num - this.layers[i].st);
			}
		}
		if(this.globalData._mdf) {
			if(this.renderConfig.clearCanvas === true){
				this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);
			}else{
				this.save();
			}
			for (i = len - 1; i >= 0; i-=1) {
				if(this.completeLayers || this.elements[i]){
					this.elements[i].renderFrame();
				}
			}
			if(this.renderConfig.clearCanvas !== true){
				this.restore();
			}
		}
	};

	CanvasRenderer.prototype.buildItem = function(pos){
		var elements = this.elements;
		if(elements[pos] || this.layers[pos].ty == 99){
			return;
		}
		var element = this.createItem(this.layers[pos], this,this.globalData);
		elements[pos] = element;
		element.initExpressions();
		/*if(this.layers[pos].ty === 0){
        element.resize(this.globalData.transformCanvas);
    }*/
	};

	CanvasRenderer.prototype.checkPendingElements  = function(){
		while(this.pendingElements.length){
			var element = this.pendingElements.pop();
			element.checkParenting();
		}
	};

	CanvasRenderer.prototype.hide = function(){
		this.animationItem.container.style.display = 'none';
	};

	CanvasRenderer.prototype.show = function(){
		this.animationItem.container.style.display = 'block';
	};

	function HybridRenderer(animationItem, config){
		this.animationItem = animationItem;
		this.layers = null;
		this.renderedFrame = -1;
		this.renderConfig = {
			className: (config && config.className) || '',
			imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',
			hideOnTransparent: (config && config.hideOnTransparent === false) ? false : true,
			filterSize: {
				width: config && config.filterSize && config.filterSize.width || '400%',
				height: config && config.filterSize && config.filterSize.height || '400%',
				x: config && config.filterSize && config.filterSize.x || '-100%',
				y: config && config.filterSize && config.filterSize.y || '-100%',
			}
		};
		this.globalData = {
			_mdf: false,
			frameNum: -1,
			renderConfig: this.renderConfig
		};
		this.pendingElements = [];
		this.elements = [];
		this.threeDElements = [];
		this.destroyed = false;
		this.camera = null;
		this.supports3d = true;
		this.rendererType = 'html';

	}

	extendPrototype([BaseRenderer],HybridRenderer);

	HybridRenderer.prototype.buildItem = SVGRenderer.prototype.buildItem;

	HybridRenderer.prototype.checkPendingElements  = function(){
		while(this.pendingElements.length){
			var element = this.pendingElements.pop();
			element.checkParenting();
		}
	};

	HybridRenderer.prototype.appendElementInPos = function(element, pos){
		var newDOMElement = element.getBaseElement();
		if(!newDOMElement){
			return;
		}
		var layer = this.layers[pos];
		if(!layer.ddd || !this.supports3d){
			if(this.threeDElements) {
				this.addTo3dContainer(newDOMElement,pos);
			} else {
				var i = 0;
				var nextDOMElement, nextLayer, tmpDOMElement;
				while(i<pos){
					if(this.elements[i] && this.elements[i]!== true && this.elements[i].getBaseElement){
						nextLayer = this.elements[i];
						tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();
						nextDOMElement = tmpDOMElement || nextDOMElement;
					}
					i += 1;
				}
				if(nextDOMElement){
					if(!layer.ddd || !this.supports3d){
						this.layerElement.insertBefore(newDOMElement, nextDOMElement);
					}
				} else {
					if(!layer.ddd || !this.supports3d){
						this.layerElement.appendChild(newDOMElement);
					}
				}
			}

		} else {
			this.addTo3dContainer(newDOMElement,pos);
		}
	};

	HybridRenderer.prototype.createShape = function (data) {
		if(!this.supports3d){
			return new SVGShapeElement(data, this.globalData, this);
		}
		return new HShapeElement(data, this.globalData, this);
	};

	HybridRenderer.prototype.createText = function (data) {
		if(!this.supports3d){
			return new SVGTextElement(data, this.globalData, this);
		}
		return new HTextElement(data, this.globalData, this);
	};

	HybridRenderer.prototype.createCamera = function (data) {
		this.camera = new HCameraElement(data, this.globalData, this);
		return this.camera;
	};

	HybridRenderer.prototype.createImage = function (data) {
		if(!this.supports3d){
			return new IImageElement(data, this.globalData, this);
		}
		return new HImageElement(data, this.globalData, this);
	};

	HybridRenderer.prototype.createComp = function (data) {
		if(!this.supports3d){
			return new SVGCompElement(data, this.globalData, this);
		}
		return new HCompElement(data, this.globalData, this);

	};

	HybridRenderer.prototype.createSolid = function (data) {
		if(!this.supports3d){
			return new ISolidElement(data, this.globalData, this);
		}
		return new HSolidElement(data, this.globalData, this);
	};

	HybridRenderer.prototype.createNull = SVGRenderer.prototype.createNull;

	HybridRenderer.prototype.getThreeDContainerByPos = function(pos){
		var i = 0, len = this.threeDElements.length;
		while(i<len) {
			if(this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {
				return this.threeDElements[i].perspectiveElem;
			}
			i += 1;
		}
	};

	HybridRenderer.prototype.createThreeDContainer = function(pos, type){
		var perspectiveElem = createTag('div');
		styleDiv(perspectiveElem);
		var container = createTag('div');
		styleDiv(container);
		if(type === '3d') {
			perspectiveElem.style.width = this.globalData.compSize.w+'px';
			perspectiveElem.style.height = this.globalData.compSize.h+'px';
			perspectiveElem.style.transformOrigin = perspectiveElem.style.mozTransformOrigin = perspectiveElem.style.webkitTransformOrigin = "50% 50%";
			container.style.transform = container.style.webkitTransform = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';
		}

		perspectiveElem.appendChild(container);
		//this.resizerElem.appendChild(perspectiveElem);
		var threeDContainerData = {
			container:container,
			perspectiveElem:perspectiveElem,
			startPos: pos,
			endPos: pos,
			type: type
		};
		this.threeDElements.push(threeDContainerData);
		return threeDContainerData;
	};

	HybridRenderer.prototype.build3dContainers = function(){
		var i, len = this.layers.length;
		var lastThreeDContainerData;
		var currentContainer = '';
		for(i=0;i<len;i+=1){
			if(this.layers[i].ddd && this.layers[i].ty !== 3){
				if(currentContainer !== '3d'){
					currentContainer = '3d';
					lastThreeDContainerData = this.createThreeDContainer(i,'3d');
				}
				lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos,i);
			} else {
				if(currentContainer !== '2d'){
					currentContainer = '2d';
					lastThreeDContainerData = this.createThreeDContainer(i,'2d');
				}
				lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos,i);
			}
		}
		len = this.threeDElements.length;
		for(i = len - 1; i >= 0; i --) {
			this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);
		}
	};

	HybridRenderer.prototype.addTo3dContainer = function(elem,pos){
		var i = 0, len = this.threeDElements.length;
		while(i<len){
			if(pos <= this.threeDElements[i].endPos){
				var j = this.threeDElements[i].startPos;
				var nextElement;
				while(j<pos){
					if(this.elements[j] && this.elements[j].getBaseElement){
						nextElement = this.elements[j].getBaseElement();
					}
					j += 1;
				}
				if(nextElement){
					this.threeDElements[i].container.insertBefore(elem, nextElement);
				} else {
					this.threeDElements[i].container.appendChild(elem);
				}
				break;
			}
			i += 1;
		}
	};

	HybridRenderer.prototype.configAnimation = function(animData){
		var resizerElem = createTag('div');
		var wrapper = this.animationItem.wrapper;
		resizerElem.style.width = animData.w+'px';
		resizerElem.style.height = animData.h+'px';
		this.resizerElem = resizerElem;
		styleDiv(resizerElem);
		resizerElem.style.transformStyle = resizerElem.style.webkitTransformStyle = resizerElem.style.mozTransformStyle = "flat";
		if(this.renderConfig.className) {
			resizerElem.setAttribute('class', this.renderConfig.className);
		}
		wrapper.appendChild(resizerElem);

		resizerElem.style.overflow = 'hidden';
		var svg = createNS('svg');
		svg.setAttribute('width','1');
		svg.setAttribute('height','1');
		styleDiv(svg);
		this.resizerElem.appendChild(svg);
		var defs = createNS('defs');
		svg.appendChild(defs);
		this.data = animData;
		//Mask animation
		this.setupGlobalData(animData, svg);
		this.globalData.defs = defs;
		this.layers = animData.layers;
		this.layerElement = this.resizerElem;
		this.build3dContainers();
		this.updateContainerSize();
	};

	HybridRenderer.prototype.destroy = function () {
		this.animationItem.wrapper.innerHTML = '';
		this.animationItem.container = null;
		this.globalData.defs = null;
		var i, len = this.layers ? this.layers.length : 0;
		for (i = 0; i < len; i++) {
			this.elements[i].destroy();
		}
		this.elements.length = 0;
		this.destroyed = true;
		this.animationItem = null;
	};

	HybridRenderer.prototype.updateContainerSize = function () {
		var elementWidth = this.animationItem.wrapper.offsetWidth;
		var elementHeight = this.animationItem.wrapper.offsetHeight;
		var elementRel = elementWidth/elementHeight;
		var animationRel = this.globalData.compSize.w/this.globalData.compSize.h;
		var sx,sy,tx,ty;
		if(animationRel>elementRel){
			sx = elementWidth/(this.globalData.compSize.w);
			sy = elementWidth/(this.globalData.compSize.w);
			tx = 0;
			ty = ((elementHeight-this.globalData.compSize.h*(elementWidth/this.globalData.compSize.w))/2);
		}else{
			sx = elementHeight/(this.globalData.compSize.h);
			sy = elementHeight/(this.globalData.compSize.h);
			tx = (elementWidth-this.globalData.compSize.w*(elementHeight/this.globalData.compSize.h))/2;
			ty = 0;
		}
		this.resizerElem.style.transform = this.resizerElem.style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,'+sy+',0,0,0,0,1,0,'+tx+','+ty+',0,1)';
	};

	HybridRenderer.prototype.renderFrame = SVGRenderer.prototype.renderFrame;

	HybridRenderer.prototype.hide = function(){
		this.resizerElem.style.display = 'none';
	};

	HybridRenderer.prototype.show = function(){
		this.resizerElem.style.display = 'block';
	};

	HybridRenderer.prototype.initItems = function(){
		this.buildAllItems();
		if(this.camera){
			this.camera.setup();
		} else {
			var cWidth = this.globalData.compSize.w;
			var cHeight = this.globalData.compSize.h;
			var i, len = this.threeDElements.length;
			for(i=0;i<len;i+=1){
				this.threeDElements[i].perspectiveElem.style.perspective = this.threeDElements[i].perspectiveElem.style.webkitPerspective = Math.sqrt(Math.pow(cWidth,2) + Math.pow(cHeight,2)) + 'px';
			}
		}
	};

	HybridRenderer.prototype.searchExtraCompositions = function(assets){
		var i, len = assets.length;
		var floatingContainer = createTag('div');
		for(i=0;i<len;i+=1){
			if(assets[i].xt){
				var comp = this.createComp(assets[i],floatingContainer,this.globalData.comp,null);
				comp.initExpressions();
				this.globalData.projectInterface.registerComposition(comp);
			}
		}
	};

	function MaskElement(data,element,globalData) {
		this.data = data;
		this.element = element;
		this.globalData = globalData;
		this.storedData = [];
		this.masksProperties = this.data.masksProperties || [];
		this.maskElement = null;
		var defs = this.globalData.defs;
		var i, len = this.masksProperties ? this.masksProperties.length : 0;
		this.viewData = createSizedArray(len);
		this.solidPath = '';


		var path, properties = this.masksProperties;
		var count = 0;
		var currentMasks = [];
		var j, jLen;
		var layerId = createElementID();
		var rect, expansor, feMorph,x;
		var maskType = 'clipPath', maskRef = 'clip-path';
		for (i = 0; i < len; i++) {
			if((properties[i].mode !== 'a' && properties[i].mode !== 'n')|| properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x){
				maskType = 'mask';
				maskRef = 'mask';
			}

			if((properties[i].mode == 's' || properties[i].mode == 'i') && count === 0){
				rect = createNS( 'rect');
				rect.setAttribute('fill', '#ffffff');
				rect.setAttribute('width', this.element.comp.data.w || 0);
				rect.setAttribute('height', this.element.comp.data.h || 0);
				currentMasks.push(rect);
			} else {
				rect = null;
			}

			path = createNS( 'path');
			if(properties[i].mode == 'n') {
				// TODO move this to a factory or to a constructor
				this.viewData[i] = {
					op: PropertyFactory.getProp(this.element,properties[i].o,0,0.01,this.element),
					prop: ShapePropertyFactory.getShapeProp(this.element,properties[i],3),
					elem: path,
					lastPath: ''
				};
				defs.appendChild(path);
				continue;
			}
			count += 1;

			path.setAttribute('fill', properties[i].mode === 's' ? '#000000':'#ffffff');
			path.setAttribute('clip-rule','nonzero');
			var filterID;

			if (properties[i].x.k !== 0) {
				maskType = 'mask';
				maskRef = 'mask';
				x = PropertyFactory.getProp(this.element,properties[i].x,0,null,this.element);
				filterID = createElementID();
				expansor = createNS('filter');
				expansor.setAttribute('id',filterID);
				feMorph = createNS('feMorphology');
				feMorph.setAttribute('operator','erode');
				feMorph.setAttribute('in','SourceGraphic');
				feMorph.setAttribute('radius','0');
				expansor.appendChild(feMorph);
				defs.appendChild(expansor);
				path.setAttribute('stroke', properties[i].mode === 's' ? '#000000':'#ffffff');
			} else {
				feMorph = null;
				x = null;
			}

			// TODO move this to a factory or to a constructor
			this.storedData[i] = {
				elem: path,
				x: x,
				expan: feMorph,
				lastPath: '',
				lastOperator:'',
				filterId:filterID,
				lastRadius:0
			};
			if(properties[i].mode == 'i'){
				jLen = currentMasks.length;
				var g = createNS('g');
				for(j=0;j<jLen;j+=1){
					g.appendChild(currentMasks[j]);
				}
				var mask = createNS('mask');
				mask.setAttribute('mask-type','alpha');
				mask.setAttribute('id',layerId+'_'+count);
				mask.appendChild(path);
				defs.appendChild(mask);
				g.setAttribute('mask','url(' + locationHref + '#'+layerId+'_'+count+')');

				currentMasks.length = 0;
				currentMasks.push(g);
			}else{
				currentMasks.push(path);
			}
			if(properties[i].inv && !this.solidPath){
				this.solidPath = this.createLayerSolidPath();
			}
			// TODO move this to a factory or to a constructor
			this.viewData[i] = {
				elem: path,
				lastPath: '',
				op: PropertyFactory.getProp(this.element,properties[i].o,0,0.01,this.element),
				prop:ShapePropertyFactory.getShapeProp(this.element,properties[i],3),
				invRect: rect
			};
			if(!this.viewData[i].prop.k){
				this.drawPath(properties[i],this.viewData[i].prop.v,this.viewData[i]);
			}
		}

		this.maskElement = createNS( maskType);

		len = currentMasks.length;
		for(i=0;i<len;i+=1){
			this.maskElement.appendChild(currentMasks[i]);
		}

		if(count > 0){
			this.maskElement.setAttribute('id', layerId);
			this.element.maskedElement.setAttribute(maskRef, "url(" + locationHref + "#" + layerId + ")");
			defs.appendChild(this.maskElement);
		}
		if (this.viewData.length) {
			this.element.addRenderableComponent(this);
		}

	}

	MaskElement.prototype.getMaskProperty = function(pos){
		return this.viewData[pos].prop;
	};

	MaskElement.prototype.renderFrame = function (isFirstFrame) {
		var finalMat = this.element.finalTransform.mat;
		var i, len = this.masksProperties.length;
		for (i = 0; i < len; i++) {
			if(this.viewData[i].prop._mdf || isFirstFrame){
				this.drawPath(this.masksProperties[i],this.viewData[i].prop.v,this.viewData[i]);
			}
			if(this.viewData[i].op._mdf || isFirstFrame){
				this.viewData[i].elem.setAttribute('fill-opacity',this.viewData[i].op.v);
			}
			if(this.masksProperties[i].mode !== 'n'){
				if(this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)){
					this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS())
				}
				if(this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)){
					var feMorph = this.storedData[i].expan;
					if(this.storedData[i].x.v < 0){
						if(this.storedData[i].lastOperator !== 'erode'){
							this.storedData[i].lastOperator = 'erode';
							this.storedData[i].elem.setAttribute('filter','url(' + locationHref + '#'+this.storedData[i].filterId+')');
						}
						feMorph.setAttribute('radius',-this.storedData[i].x.v);
					}else{
						if(this.storedData[i].lastOperator !== 'dilate'){
							this.storedData[i].lastOperator = 'dilate';
							this.storedData[i].elem.setAttribute('filter',null);
						}
						this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v*2);

					}
				}
			}
		}
	};

	MaskElement.prototype.getMaskelement = function () {
		return this.maskElement;
	};

	MaskElement.prototype.createLayerSolidPath = function(){
		var path = 'M0,0 ';
		path += ' h' + this.globalData.compSize.w ;
		path += ' v' + this.globalData.compSize.h ;
		path += ' h-' + this.globalData.compSize.w ;
		path += ' v-' + this.globalData.compSize.h + ' ';
		return path;
	};

	MaskElement.prototype.drawPath = function(pathData,pathNodes,viewData){
		var pathString = " M"+pathNodes.v[0][0]+','+pathNodes.v[0][1];
		var i, len;
		len = pathNodes._length;
		for(i=1;i<len;i+=1){
			//pathString += " C"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + " "+pathNodes.i[i][0]+','+pathNodes.i[i][1] + " "+pathNodes.v[i][0]+','+pathNodes.v[i][1];
			pathString += " C"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + " "+pathNodes.i[i][0]+','+pathNodes.i[i][1] + " "+pathNodes.v[i][0]+','+pathNodes.v[i][1];
		}
		//pathString += " C"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + " "+pathNodes.i[0][0]+','+pathNodes.i[0][1] + " "+pathNodes.v[0][0]+','+pathNodes.v[0][1];
		if(pathNodes.c && len > 1){
			pathString += " C"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + " "+pathNodes.i[0][0]+','+pathNodes.i[0][1] + " "+pathNodes.v[0][0]+','+pathNodes.v[0][1];
		}
		//pathNodes.__renderedString = pathString;

		if(viewData.lastPath !== pathString){
			var pathShapeValue = '';
			if(viewData.elem){
				if(pathNodes.c){
					pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;
				}
				viewData.elem.setAttribute('d',pathShapeValue);
			}
			viewData.lastPath = pathString;
		}
	};

	MaskElement.prototype.destroy = function(){
		this.element = null;
		this.globalData = null;
		this.maskElement = null;
		this.data = null;
		this.masksProperties = null;
	};

	/**
	 * @file
	 * Handles AE's layer parenting property.
	 *
	 */

	function HierarchyElement(){}

	HierarchyElement.prototype = {
		/**
		 * @function
		 * Initializes hierarchy properties
		 *
		 */
		initHierarchy: function() {
			//element's parent list
			this.hierarchy = [];
			//if element is parent of another layer _isParent will be true
			this._isParent = false;
			this.checkParenting();
		},
		/**
		 * @function
		 * Sets layer's hierarchy.
		 * @param {array} hierarch
		 * layer's parent list
		 *
		 */
		setHierarchy: function(hierarchy){
			this.hierarchy = hierarchy;
		},
		/**
		 * @function
		 * Sets layer as parent.
		 *
		 */
		setAsParent: function() {
			this._isParent = true;
		},
		/**
		 * @function
		 * Searches layer's parenting chain
		 *
		 */
		checkParenting: function(){
			if (this.data.parent !== undefined){
				this.comp.buildElementParenting(this, this.data.parent, []);
			}
		}
	};
	/**
	 * @file
	 * Handles element's layer frame update.
	 * Checks layer in point and out point
	 *
	 */

	function FrameElement(){}

	FrameElement.prototype = {
		/**
		 * @function
		 * Initializes frame related properties.
		 *
		 */
		initFrame: function(){
			//set to true when inpoint is rendered
			this._isFirstFrame = false;
			//list of animated properties
			this.dynamicProperties = [];
			// If layer has been modified in current tick this will be true
			this._mdf = false;
		},
		/**
		 * @function
		 * Calculates all dynamic values
		 *
		 * @param {number} num
		 * current frame number in Layer's time
		 * @param {boolean} isVisible
		 * if layers is currently in range
		 *
		 */
		prepareProperties: function(num, isVisible) {
			var i, len = this.dynamicProperties.length;
			for (i = 0;i < len; i += 1) {
				if (isVisible || (this._isParent && this.dynamicProperties[i].propType === 'transform')) {
					this.dynamicProperties[i].getValue();
					if (this.dynamicProperties[i]._mdf) {
						this.globalData._mdf = true;
						this._mdf = true;
					}
				}
			}
		},
		addDynamicProperty: function(prop) {
			if(this.dynamicProperties.indexOf(prop) === -1) {
				this.dynamicProperties.push(prop);
			}
		}
	};
	function TransformElement(){}

	TransformElement.prototype = {
		initTransform: function() {
			this.finalTransform = {
				mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {o:0},
				_matMdf: false,
				_opMdf: false,
				mat: new Matrix()
			};
			if (this.data.ao) {
				this.finalTransform.mProp.autoOriented = true;
			}

			//TODO: check TYPE 11: Guided elements
			if (this.data.ty !== 11) {
				//this.createElements();
			}
		},
		renderTransform: function() {

			this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;
			this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;

			if (this.hierarchy) {
				var mat;
				var finalMat = this.finalTransform.mat;
				var i = 0, len = this.hierarchy.length;
				//Checking if any of the transformation matrices in the hierarchy chain has changed.
				if (!this.finalTransform._matMdf) {
					while (i < len) {
						if (this.hierarchy[i].finalTransform.mProp._mdf) {
							this.finalTransform._matMdf = true;
							break;
						}
						i += 1;
					}
				}

				if (this.finalTransform._matMdf) {
					mat = this.finalTransform.mProp.v.props;
					finalMat.cloneFromProps(mat);
					for (i = 0; i < len; i += 1) {
						mat = this.hierarchy[i].finalTransform.mProp.v.props;
						finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]);
					}
				}
			}
		},
		globalToLocal: function(pt) {
			var transforms = [];
			transforms.push(this.finalTransform);
			var flag = true;
			var comp = this.comp;
			while (flag) {
				if (comp.finalTransform) {
					if (comp.data.hasMask) {
						transforms.splice(0, 0, comp.finalTransform);
					}
					comp = comp.comp;
				} else {
					flag = false;
				}
			}
			var i, len = transforms.length,ptNew;
			for (i = 0; i < len; i += 1) {
				ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);
				//ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);
				pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];
			}
			return pt;
		},
		mHelper: new Matrix()
	};
	function RenderableElement(){

	}

	RenderableElement.prototype = {
		initRenderable: function() {
			//layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange
			this.isInRange = false;
			//layer's display state
			this.hidden = false;
			// If layer's transparency equals 0, it can be hidden
			this.isTransparent = false;
			//list of animated components
			this.renderableComponents = [];
		},
		addRenderableComponent: function(component) {
			if(this.renderableComponents.indexOf(component) === -1) {
				this.renderableComponents.push(component);
			}
		},
		removeRenderableComponent: function(component) {
			if(this.renderableComponents.indexOf(component) !== -1) {
				this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);
			}
		},
		prepareRenderableFrame: function(num) {
			this.checkLayerLimits(num);
		},
		checkTransparency: function(){
			if(this.finalTransform.mProp.o.v <= 0) {
				if(!this.isTransparent && this.globalData.renderConfig.hideOnTransparent){
					this.isTransparent = true;
					this.hide();
				}
			} else if(this.isTransparent) {
				this.isTransparent = false;
				this.show();
			}
		},
		/**
		 * @function
		 * Initializes frame related properties.
		 *
		 * @param {number} num
		 * current frame number in Layer's time
		 *
		 */
		checkLayerLimits: function(num) {
			if(this.data.ip - this.data.st <= num && this.data.op - this.data.st > num)
			{
				if(this.isInRange !== true){
					this.globalData._mdf = true;
					this._mdf = true;
					this.isInRange = true;
					this.show();
				}
			} else {
				if(this.isInRange !== false){
					this.globalData._mdf = true;
					this.isInRange = false;
					this.hide();
				}
			}
		},
		renderRenderable: function() {
			var i, len = this.renderableComponents.length;
			for(i = 0; i < len; i += 1) {
				this.renderableComponents[i].renderFrame(this._isFirstFrame);
			}
			/*this.maskManager.renderFrame(this.finalTransform.mat);
        this.renderableEffectsManager.renderFrame(this._isFirstFrame);*/
		},
		sourceRectAtTime: function(){
			return {
				top:0,
				left:0,
				width:100,
				height:100
			};
		},
		getLayerSize: function(){
			if(this.data.ty === 5){
				return {w:this.data.textData.width,h:this.data.textData.height};
			}else{
				return {w:this.data.width,h:this.data.height};
			}
		}
	};
	function RenderableDOMElement() {}

	(function(){
		var _prototype = {
			initElement: function(data,globalData,comp) {
				this.initFrame();
				this.initBaseData(data, globalData, comp);
				this.initTransform(data, globalData, comp);
				this.initHierarchy();
				this.initRenderable();
				this.initRendererElement();
				this.createContainerElements();
				this.createRenderableComponents();
				this.createContent();
				this.hide();
			},
			hide: function(){
				if (!this.hidden && (!this.isInRange || this.isTransparent)) {
					var elem = this.baseElement || this.layerElement;
					elem.style.display = 'none';
					this.hidden = true;
				}
			},
			show: function(){
				if (this.isInRange && !this.isTransparent){
					if (!this.data.hd) {
						var elem = this.baseElement || this.layerElement;
						elem.style.display = 'block';
					}
					this.hidden = false;
					this._isFirstFrame = true;
				}
			},
			renderFrame: function() {
				//If it is exported as hidden (data.hd === true) no need to render
				//If it is not visible no need to render
				if (this.data.hd || this.hidden) {
					return;
				}
				this.renderTransform();
				this.renderRenderable();
				this.renderElement();
				this.renderInnerContent();
				if (this._isFirstFrame) {
					this._isFirstFrame = false;
				}
			},
			renderInnerContent: function() {},
			prepareFrame: function(num) {
				this._mdf = false;
				this.prepareRenderableFrame(num);
				this.prepareProperties(num, this.isInRange);
				this.checkTransparency();
			},
			destroy: function(){
				this.innerElem =  null;
				this.destroyBaseElement();
			}
		};
		extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);
	}());
	function ProcessedElement(element, position) {
		this.elem = element;
		this.pos = position;
	}
	function SVGStyleData(data, level) {
		this.data = data;
		this.type = data.ty;
		this.d = '';
		this.lvl = level;
		this._mdf = false;
		this.closed = data.hd === true;
		this.pElem = createNS('path');
		this.msElem = null;
	}

	SVGStyleData.prototype.reset = function() {
		this.d = '';
		this._mdf = false;
	};
	function SVGShapeData(transformers, level, shape) {
		this.caches = [];
		this.styles = [];
		this.transformers = transformers;
		this.lStr = '';
		this.sh = shape;
		this.lvl = level;
		//TODO find if there are some cases where _isAnimated can be false.
		// For now, since shapes add up with other shapes. They have to be calculated every time.
		// One way of finding out is checking if all styles associated to this shape depend only of this shape
		this._isAnimated = !!shape.k;
		// TODO: commenting this for now since all shapes are animated
		var i = 0, len = transformers.length;
		while(i < len) {
			if(transformers[i].mProps.dynamicProperties.length) {
				this._isAnimated = true;
				break;
			}
			i += 1;
		}
	}

	SVGShapeData.prototype.setAsAnimated = function() {
		this._isAnimated = true;
	}
	function SVGTransformData(mProps, op, container) {
		this.transform = {
			mProps: mProps,
			op: op,
			container: container
		};
		this.elements = [];
		this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;
	}
	function SVGStrokeStyleData(elem, data, styleOb){
		this.initDynamicPropertyContainer(elem);
		this.getValue = this.iterateDynamicProperties;
		this.o = PropertyFactory.getProp(elem,data.o,0,0.01,this);
		this.w = PropertyFactory.getProp(elem,data.w,0,null,this);
		this.d = new DashProperty(elem,data.d||{},'svg',this);
		this.c = PropertyFactory.getProp(elem,data.c,1,255,this);
		this.style = styleOb;
		this._isAnimated = !!this._isAnimated;
	}

	extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);
	function SVGFillStyleData(elem, data, styleOb){
		this.initDynamicPropertyContainer(elem);
		this.getValue = this.iterateDynamicProperties;
		this.o = PropertyFactory.getProp(elem,data.o,0,0.01,this);
		this.c = PropertyFactory.getProp(elem,data.c,1,255,this);
		this.style = styleOb;
	}

	extendPrototype([DynamicPropertyContainer], SVGFillStyleData);
	function SVGGradientFillStyleData(elem, data, styleOb){
		this.initDynamicPropertyContainer(elem);
		this.getValue = this.iterateDynamicProperties;
		this.initGradientData(elem, data, styleOb);
	}

	SVGGradientFillStyleData.prototype.initGradientData = function(elem, data, styleOb){
		this.o = PropertyFactory.getProp(elem,data.o,0,0.01,this);
		this.s = PropertyFactory.getProp(elem,data.s,1,null,this);
		this.e = PropertyFactory.getProp(elem,data.e,1,null,this);
		this.h = PropertyFactory.getProp(elem,data.h||{k:0},0,0.01,this);
		this.a = PropertyFactory.getProp(elem,data.a||{k:0},0,degToRads,this);
		this.g = new GradientProperty(elem,data.g,this);
		this.style = styleOb;
		this.stops = [];
		this.setGradientData(styleOb.pElem, data);
		this.setGradientOpacity(data, styleOb);
		this._isAnimated = !!this._isAnimated;

	};

	SVGGradientFillStyleData.prototype.setGradientData = function(pathElement,data){

		var gradientId = createElementID();
		var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');
		gfill.setAttribute('id',gradientId);
		gfill.setAttribute('spreadMethod','pad');
		gfill.setAttribute('gradientUnits','userSpaceOnUse');
		var stops = [];
		var stop, j, jLen;
		jLen = data.g.p*4;
		for(j=0;j<jLen;j+=4){
			stop = createNS('stop');
			gfill.appendChild(stop);
			stops.push(stop);
		}
		pathElement.setAttribute( data.ty === 'gf' ? 'fill':'stroke','url(' + locationHref + '#'+gradientId+')');

		this.gf = gfill;
		this.cst = stops;
	};

	SVGGradientFillStyleData.prototype.setGradientOpacity = function(data, styleOb){
		if(this.g._hasOpacity && !this.g._collapsable){
			var stop, j, jLen;
			var mask = createNS("mask");
			var maskElement = createNS( 'path');
			mask.appendChild(maskElement);
			var opacityId = createElementID();
			var maskId = createElementID();
			mask.setAttribute('id',maskId);
			var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');
			opFill.setAttribute('id',opacityId);
			opFill.setAttribute('spreadMethod','pad');
			opFill.setAttribute('gradientUnits','userSpaceOnUse');
			jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;
			var stops = this.stops;
			for(j=data.g.p*4;j<jLen;j+=2){
				stop = createNS('stop');
				stop.setAttribute('stop-color','rgb(255,255,255)');
				opFill.appendChild(stop);
				stops.push(stop);
			}
			maskElement.setAttribute( data.ty === 'gf' ? 'fill':'stroke','url(' + locationHref + '#'+opacityId+')');
			this.of = opFill;
			this.ms = mask;
			this.ost = stops;
			this.maskId = maskId;
			styleOb.msElem = maskElement;
		}
	};

	extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);
	function SVGGradientStrokeStyleData(elem, data, styleOb){
		this.initDynamicPropertyContainer(elem);
		this.getValue = this.iterateDynamicProperties;
		this.w = PropertyFactory.getProp(elem,data.w,0,null,this);
		this.d = new DashProperty(elem,data.d||{},'svg',this);
		this.initGradientData(elem, data, styleOb);
		this._isAnimated = !!this._isAnimated;
	}

	extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);
	function ShapeGroupData() {
		this.it = [];
		this.prevViewData = [];
		this.gr = createNS('g');
	}
	var SVGElementsRenderer = (function() {
		var _identityMatrix = new Matrix();
		var _matrixHelper = new Matrix();

		var ob = {
			createRenderFunction: createRenderFunction
		}

		function createRenderFunction(data) {
			var ty = data.ty;
			switch(data.ty) {
				case 'fl':
					return renderFill;
				case 'gf':
					return renderGradient;
				case 'gs':
					return renderGradientStroke;
				case 'st':
					return renderStroke;
				case 'sh':
				case 'el':
				case 'rc':
				case 'sr':
					return renderPath;
				case 'tr':
					return renderContentTransform;
			}
		}

		function renderContentTransform(styleData, itemData, isFirstFrame) {
			if(isFirstFrame || itemData.transform.op._mdf){
				itemData.transform.container.setAttribute('opacity',itemData.transform.op.v);
			}
			if(isFirstFrame || itemData.transform.mProps._mdf){
				itemData.transform.container.setAttribute('transform',itemData.transform.mProps.v.to2dCSS());
			}
		}

		function renderPath(styleData, itemData, isFirstFrame) {
			var j, jLen,pathStringTransformed,redraw,pathNodes,l, lLen = itemData.styles.length;
			var lvl = itemData.lvl;
			var paths, mat, props, iterations, k;
			for(l=0;l<lLen;l+=1){
				redraw = itemData.sh._mdf || isFirstFrame;
				if(itemData.styles[l].lvl < lvl){
					mat = _matrixHelper.reset();
					iterations = lvl - itemData.styles[l].lvl;
					k = itemData.transformers.length-1;
					while(!redraw && iterations > 0) {
						redraw = itemData.transformers[k].mProps._mdf || redraw;
						iterations --;
						k --;
					}
					if(redraw) {
						iterations = lvl - itemData.styles[l].lvl;
						k = itemData.transformers.length-1;
						while(iterations > 0) {
							props = itemData.transformers[k].mProps.v.props;
							mat.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);
							iterations --;
							k --;
						}
					}
				} else {
					mat = _identityMatrix;
				}
				paths = itemData.sh.paths;
				jLen = paths._length;
				if(redraw){
					pathStringTransformed = '';
					for(j=0;j<jLen;j+=1){
						pathNodes = paths.shapes[j];
						if(pathNodes && pathNodes._length){
							pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);
						}
					}
					itemData.caches[l] = pathStringTransformed;
				} else {
					pathStringTransformed = itemData.caches[l];
				}
				itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;
				itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;
			}
		}

		function renderFill (styleData,itemData, isFirstFrame){
			var styleElem = itemData.style;

			if(itemData.c._mdf || isFirstFrame){
				styleElem.pElem.setAttribute('fill','rgb('+bm_floor(itemData.c.v[0])+','+bm_floor(itemData.c.v[1])+','+bm_floor(itemData.c.v[2])+')');
			}
			if(itemData.o._mdf || isFirstFrame){
				styleElem.pElem.setAttribute('fill-opacity',itemData.o.v);
			}
		};

		function renderGradientStroke (styleData, itemData, isFirstFrame) {
			renderGradient(styleData, itemData, isFirstFrame);
			renderStroke(styleData, itemData, isFirstFrame);
		}

		function renderGradient(styleData, itemData, isFirstFrame) {
			var gfill = itemData.gf;
			var hasOpacity = itemData.g._hasOpacity;
			var pt1 = itemData.s.v, pt2 = itemData.e.v;

			if (itemData.o._mdf || isFirstFrame) {
				var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';
				itemData.style.pElem.setAttribute(attr, itemData.o.v);
			}
			if (itemData.s._mdf || isFirstFrame) {
				var attr1 = styleData.t === 1 ? 'x1' : 'cx';
				var attr2 = attr1 === 'x1' ? 'y1' : 'cy';
				gfill.setAttribute(attr1, pt1[0]);
				gfill.setAttribute(attr2, pt1[1]);
				if (hasOpacity && !itemData.g._collapsable) {
					itemData.of.setAttribute(attr1, pt1[0]);
					itemData.of.setAttribute(attr2, pt1[1]);
				}
			}
			var stops, i, len, stop;
			if (itemData.g._cmdf || isFirstFrame) {
				stops = itemData.cst;
				var cValues = itemData.g.c;
				len = stops.length;
				for (i = 0; i < len; i += 1){
					stop = stops[i];
					stop.setAttribute('offset', cValues[i * 4] + '%');
					stop.setAttribute('stop-color','rgb('+ cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ','+cValues[i * 4 + 3] + ')');
				}
			}
			if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {
				var oValues = itemData.g.o;
				if(itemData.g._collapsable) {
					stops = itemData.cst;
				} else {
					stops = itemData.ost;
				}
				len = stops.length;
				for (i = 0; i < len; i += 1) {
					stop = stops[i];
					if(!itemData.g._collapsable) {
						stop.setAttribute('offset', oValues[i * 2] + '%');
					}
					stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);
				}
			}
			if (styleData.t === 1) {
				if (itemData.e._mdf  || isFirstFrame) {
					gfill.setAttribute('x2', pt2[0]);
					gfill.setAttribute('y2', pt2[1]);
					if (hasOpacity && !itemData.g._collapsable) {
						itemData.of.setAttribute('x2', pt2[0]);
						itemData.of.setAttribute('y2', pt2[1]);
					}
				}
			} else {
				var rad;
				if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {
					rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));
					gfill.setAttribute('r', rad);
					if(hasOpacity && !itemData.g._collapsable){
						itemData.of.setAttribute('r', rad);
					}
				}
				if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {
					if (!rad) {
						rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));
					}
					var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);

					var percent = itemData.h.v >= 1 ? 0.99 : itemData.h.v <= -1 ? -0.99: itemData.h.v;
					var dist = rad * percent;
					var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];
					var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];
					gfill.setAttribute('fx', x);
					gfill.setAttribute('fy', y);
					if (hasOpacity && !itemData.g._collapsable) {
						itemData.of.setAttribute('fx', x);
						itemData.of.setAttribute('fy', y);
					}
				}
				//gfill.setAttribute('fy','200');
			}
		};

		function renderStroke(styleData, itemData, isFirstFrame) {
			var styleElem = itemData.style;
			var d = itemData.d;
			if (d && (d._mdf || isFirstFrame) && d.dashStr) {
				styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);
				styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);
			}
			if(itemData.c && (itemData.c._mdf || isFirstFrame)){
				styleElem.pElem.setAttribute('stroke','rgb(' + bm_floor(itemData.c.v[0]) + ',' + bm_floor(itemData.c.v[1]) + ',' + bm_floor(itemData.c.v[2]) + ')');
			}
			if(itemData.o._mdf || isFirstFrame){
				styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);
			}
			if(itemData.w._mdf || isFirstFrame){
				styleElem.pElem.setAttribute('stroke-width', itemData.w.v);
				if(styleElem.msElem){
					styleElem.msElem.setAttribute('stroke-width', itemData.w.v);
				}
			}
		};

		return ob;
	}())
	function ShapeTransformManager() {
		this.sequences = {};
		this.sequenceList = [];
		this.transform_key_count = 0;
	}

	ShapeTransformManager.prototype = {
		addTransformSequence: function(transforms) {
			var i, len = transforms.length;
			var key = '_';
			for(i = 0; i < len; i += 1) {
				key += transforms[i].transform.key + '_';
			}
			var sequence = this.sequences[key];
			if(!sequence) {
				sequence = {
					transforms: [].concat(transforms),
					finalTransform: new Matrix(),
					_mdf: false
				};
				this.sequences[key] = sequence;
				this.sequenceList.push(sequence);
			}
			return sequence;
		},
		processSequence: function(sequence, isFirstFrame) {
			var i = 0, len = sequence.transforms.length, _mdf = isFirstFrame;
			while (i < len && !isFirstFrame) {
				if (sequence.transforms[i].transform.mProps._mdf) {
					_mdf = true;
					break;
				}
				i += 1
			}
			if (_mdf) {
				var props;
				sequence.finalTransform.reset();
				for (i = len - 1; i >= 0; i -= 1) {
					props = sequence.transforms[i].transform.mProps.v.props;
					sequence.finalTransform.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);
				}
			}
			sequence._mdf = _mdf;

		},
		processSequences: function(isFirstFrame) {
			var i, len = this.sequenceList.length;
			for (i = 0; i < len; i += 1) {
				this.processSequence(this.sequenceList[i], isFirstFrame);
			}

		},
		getNewKey: function() {
			return '_' + this.transform_key_count++;
		}
	}
	function CVShapeData(element, data, styles, transformsManager) {
		this.styledShapes = [];
		this.tr = [0,0,0,0,0,0];
		var ty = 4;
		if(data.ty == 'rc'){
			ty = 5;
		}else if(data.ty == 'el'){
			ty = 6;
		}else if(data.ty == 'sr'){
			ty = 7;
		}
		this.sh = ShapePropertyFactory.getShapeProp(element,data,ty,element);
		var i , len = styles.length,styledShape;
		for (i = 0; i < len; i += 1) {
			if (!styles[i].closed) {
				styledShape = {
					transforms: transformsManager.addTransformSequence(styles[i].transforms),
					trNodes: []
				}
				this.styledShapes.push(styledShape);
				styles[i].elements.push(styledShape);
			}
		}
	}

	CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;
	function BaseElement(){
	}

	BaseElement.prototype = {
		checkMasks: function(){
			if(!this.data.hasMask){
				return false;
			}
			var i = 0, len = this.data.masksProperties.length;
			while(i<len) {
				if((this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false)) {
					return true;
				}
				i += 1;
			}
			return false;
		},
		initExpressions: function(){
			this.layerInterface = LayerExpressionInterface(this);
			if(this.data.hasMask && this.maskManager) {
				this.layerInterface.registerMaskInterface(this.maskManager);
			}
			var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this,this.layerInterface);
			this.layerInterface.registerEffectsInterface(effectsInterface);

			if(this.data.ty === 0 || this.data.xt){
				this.compInterface = CompExpressionInterface(this);
			} else if(this.data.ty === 4){
				this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData,this.itemsData,this.layerInterface);
				this.layerInterface.content = this.layerInterface.shapeInterface;
			} else if(this.data.ty === 5){
				this.layerInterface.textInterface = TextExpressionInterface(this);
				this.layerInterface.text = this.layerInterface.textInterface;
			}
		},
		setBlendMode: function(){
			var blendModeValue = getBlendMode(this.data.bm);
			var elem = this.baseElement || this.layerElement;

			elem.style['mix-blend-mode'] = blendModeValue;
		},
		initBaseData: function(data, globalData, comp){
			this.globalData = globalData;
			this.comp = comp;
			this.data = data;
			this.layerId = createElementID();

			//Stretch factor for old animations missing this property.
			if(!this.data.sr){
				this.data.sr = 1;
			}
			// effects manager
			this.effectsManager = new EffectsManager(this.data,this,this.dynamicProperties);

		},
		getType: function(){
			return this.type;
		}
		,sourceRectAtTime: function(){}
	}
	function NullElement(data,globalData,comp){
		this.initFrame();
		this.initBaseData(data, globalData, comp);
		this.initFrame();
		this.initTransform(data, globalData, comp);
		this.initHierarchy();
	}

	NullElement.prototype.prepareFrame = function(num) {
		this.prepareProperties(num, true);
	};

	NullElement.prototype.renderFrame = function() {
	};

	NullElement.prototype.getBaseElement = function() {
		return null;
	};

	NullElement.prototype.destroy = function() {
	};

	NullElement.prototype.sourceRectAtTime = function() {
	};

	NullElement.prototype.hide = function() {
	};

	extendPrototype([BaseElement,TransformElement,HierarchyElement,FrameElement], NullElement);

	function SVGBaseElement(){
	}

	SVGBaseElement.prototype = {
		initRendererElement: function() {
			this.layerElement = createNS('g');
		},
		createContainerElements: function(){
			this.matteElement = createNS('g');
			this.transformedElement = this.layerElement;
			this.maskedElement = this.layerElement;
			this._sizeChanged = false;
			var layerElementParent = null;
			//If this layer acts as a mask for the following layer
			var filId, fil, gg;
			if (this.data.td) {
				if (this.data.td == 3 || this.data.td == 1) {
					var masker = createNS('mask');
					masker.setAttribute('id', this.layerId);
					masker.setAttribute('mask-type', this.data.td == 3 ? 'luminance' : 'alpha');
					masker.appendChild(this.layerElement);
					layerElementParent = masker;
					this.globalData.defs.appendChild(masker);
					// This is only for IE and Edge when mask if of type alpha
					if (!featureSupport.maskType && this.data.td == 1) {
						masker.setAttribute('mask-type', 'luminance');
						filId = createElementID();
						fil = filtersFactory.createFilter(filId);
						this.globalData.defs.appendChild(fil);
						fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());
						gg = createNS('g');
						gg.appendChild(this.layerElement);
						layerElementParent = gg;
						masker.appendChild(gg);
						gg.setAttribute('filter','url(' + locationHref + '#' + filId + ')');
					}
				} else if(this.data.td == 2) {
					var maskGroup = createNS('mask');
					maskGroup.setAttribute('id', this.layerId);
					maskGroup.setAttribute('mask-type','alpha');
					var maskGrouper = createNS('g');
					maskGroup.appendChild(maskGrouper);
					filId = createElementID();
					fil = filtersFactory.createFilter(filId);
					////

					// This solution doesn't work on Android when meta tag with viewport attribute is set
					/*var feColorMatrix = createNS('feColorMatrix');
                feColorMatrix.setAttribute('type', 'matrix');
                feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');
                feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1');
                fil.appendChild(feColorMatrix);*/
					////
					var feCTr = createNS('feComponentTransfer');
					feCTr.setAttribute('in','SourceGraphic');
					fil.appendChild(feCTr);
					var feFunc = createNS('feFuncA');
					feFunc.setAttribute('type','table');
					feFunc.setAttribute('tableValues','1.0 0.0');
					feCTr.appendChild(feFunc);
					////
					this.globalData.defs.appendChild(fil);
					var alphaRect = createNS('rect');
					alphaRect.setAttribute('width',  this.comp.data.w);
					alphaRect.setAttribute('height', this.comp.data.h);
					alphaRect.setAttribute('x','0');
					alphaRect.setAttribute('y','0');
					alphaRect.setAttribute('fill','#ffffff');
					alphaRect.setAttribute('opacity','0');
					maskGrouper.setAttribute('filter', 'url(' + locationHref + '#'+filId+')');
					maskGrouper.appendChild(alphaRect);
					maskGrouper.appendChild(this.layerElement);
					layerElementParent = maskGrouper;
					if (!featureSupport.maskType) {
						maskGroup.setAttribute('mask-type', 'luminance');
						fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());
						gg = createNS('g');
						maskGrouper.appendChild(alphaRect);
						gg.appendChild(this.layerElement);
						layerElementParent = gg;
						maskGrouper.appendChild(gg);
					}
					this.globalData.defs.appendChild(maskGroup);
				}
			} else if (this.data.tt) {
				this.matteElement.appendChild(this.layerElement);
				layerElementParent = this.matteElement;
				this.baseElement = this.matteElement;
			} else {
				this.baseElement = this.layerElement;
			}
			if (this.data.ln) {
				this.layerElement.setAttribute('id', this.data.ln);
			}
			if (this.data.cl) {
				this.layerElement.setAttribute('class', this.data.cl);
			}
			//Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped
			if (this.data.ty === 0 && !this.data.hd) {
				var cp = createNS( 'clipPath');
				var pt = createNS('path');
				pt.setAttribute('d','M0,0 L' + this.data.w + ',0' + ' L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');
				var clipId = createElementID();
				cp.setAttribute('id',clipId);
				cp.appendChild(pt);
				this.globalData.defs.appendChild(cp);

				if (this.checkMasks()) {
					var cpGroup = createNS('g');
					cpGroup.setAttribute('clip-path','url(' + locationHref + '#'+clipId + ')');
					cpGroup.appendChild(this.layerElement);
					this.transformedElement = cpGroup;
					if (layerElementParent) {
						layerElementParent.appendChild(this.transformedElement);
					} else {
						this.baseElement = this.transformedElement;
					}
				} else {
					this.layerElement.setAttribute('clip-path','url(' + locationHref + '#'+clipId+')');
				}

			}
			if (this.data.bm !== 0) {
				this.setBlendMode();
			}

		},
		renderElement: function() {
			if (this.finalTransform._matMdf) {
				this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS());
			}
			if (this.finalTransform._opMdf) {
				this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v);
			}
		},
		destroyBaseElement: function() {
			this.layerElement = null;
			this.matteElement = null;
			this.maskManager.destroy();
		},
		getBaseElement: function() {
			if (this.data.hd) {
				return null;
			}
			return this.baseElement;
		},
		createRenderableComponents: function() {
			this.maskManager = new MaskElement(this.data, this, this.globalData);
			this.renderableEffectsManager = new SVGEffects(this);
		},
		setMatte: function(id) {
			if (!this.matteElement) {
				return;
			}
			this.matteElement.setAttribute("mask", "url(" + locationHref + "#" + id + ")");
		}
	};
	function IShapeElement(){
	}

	IShapeElement.prototype = {
		addShapeToModifiers: function(data) {
			var i, len = this.shapeModifiers.length;
			for(i=0;i<len;i+=1){
				this.shapeModifiers[i].addShape(data);
			}
		},
		isShapeInAnimatedModifiers: function(data) {
			var i = 0, len = this.shapeModifiers.length;
			while(i < len) {
				if(this.shapeModifiers[i].isAnimatedWithShape(data)) {
					return true;
				}
			}
			return false;
		},
		renderModifiers: function() {
			if(!this.shapeModifiers.length){
				return;
			}
			var i, len = this.shapes.length;
			for(i=0;i<len;i+=1){
				this.shapes[i].sh.reset();
			}

			len = this.shapeModifiers.length;
			for(i=len-1;i>=0;i-=1){
				this.shapeModifiers[i].processShapes(this._isFirstFrame);
			}
		},
		lcEnum: {
			'1': 'butt',
			'2': 'round',
			'3': 'square'
		},
		ljEnum: {
			'1': 'miter',
			'2': 'round',
			'3': 'bevel'
		},
		searchProcessedElement: function(elem){
			var elements = this.processedElements;
			var i = 0, len = elements.length;
			while (i < len) {
				if (elements[i].elem === elem) {
					return elements[i].pos;
				}
				i += 1;
			}
			return 0;
		},
		addProcessedElement: function(elem, pos){
			var elements = this.processedElements;
			var i = elements.length;
			while(i) {
				i -= 1;
				if (elements[i].elem === elem) {
					elements[i].pos = pos;
					return;
				}
			}
			elements.push(new ProcessedElement(elem, pos));
		},
		prepareFrame: function(num) {
			this.prepareRenderableFrame(num);
			this.prepareProperties(num, this.isInRange);
		}
	};
	function ITextElement(){
	}

	ITextElement.prototype.initElement = function(data,globalData,comp){
		this.lettersChangedFlag = true;
		this.initFrame();
		this.initBaseData(data, globalData, comp);
		this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);
		this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);
		this.initTransform(data, globalData, comp);
		this.initHierarchy();
		this.initRenderable();
		this.initRendererElement();
		this.createContainerElements();
		this.createRenderableComponents();
		this.createContent();
		this.hide();
		this.textAnimator.searchProperties(this.dynamicProperties);
	};

	ITextElement.prototype.prepareFrame = function(num) {
		this._mdf = false;
		this.prepareRenderableFrame(num);
		this.prepareProperties(num, this.isInRange);
		if(this.textProperty._mdf || this.textProperty._isFirstFrame) {
			this.buildNewText();
			this.textProperty._isFirstFrame = false;
			this.textProperty._mdf = false;
		}
	};

	ITextElement.prototype.createPathShape = function(matrixHelper, shapes) {
		var j,jLen = shapes.length;
		var k, kLen, pathNodes;
		var shapeStr = '';
		for(j=0;j<jLen;j+=1){
			pathNodes = shapes[j].ks.k;
			shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);
		}
		return shapeStr;
	};

	ITextElement.prototype.updateDocumentData = function(newData, index) {
		this.textProperty.updateDocumentData(newData, index);
	};

	ITextElement.prototype.canResizeFont = function(_canResize) {
		this.textProperty.canResizeFont(_canResize);
	};

	ITextElement.prototype.setMinimumFontSize = function(_fontSize) {
		this.textProperty.setMinimumFontSize(_fontSize);
	};

	ITextElement.prototype.applyTextPropertiesToMatrix = function(documentData, matrixHelper, lineNumber, xPos, yPos) {
		if(documentData.ps){
			matrixHelper.translate(documentData.ps[0],documentData.ps[1] + documentData.ascent,0);
		}
		matrixHelper.translate(0,-documentData.ls,0);
		switch(documentData.j){
			case 1:
				matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]),0,0);
				break;
			case 2:
				matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber] )/2,0,0);
				break;
		}
		matrixHelper.translate(xPos, yPos, 0);
	};


	ITextElement.prototype.buildColor = function(colorData) {
		return 'rgb(' + Math.round(colorData[0]*255) + ',' + Math.round(colorData[1]*255) + ',' + Math.round(colorData[2]*255) + ')';
	};

	ITextElement.prototype.emptyProp = new LetterProps();

	ITextElement.prototype.destroy = function(){

	};
	function ICompElement(){}

	extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);

	ICompElement.prototype.initElement = function(data,globalData,comp) {
		this.initFrame();
		this.initBaseData(data, globalData, comp);
		this.initTransform(data, globalData, comp);
		this.initRenderable();
		this.initHierarchy();
		this.initRendererElement();
		this.createContainerElements();
		this.createRenderableComponents();
		if(this.data.xt || !globalData.progressiveLoad){
			this.buildAllItems();
		}
		this.hide();
	};

	/*ICompElement.prototype.hide = function(){
    if(!this.hidden){
        this.hideElement();
        var i,len = this.elements.length;
        for( i = 0; i < len; i+=1 ){
            if(this.elements[i]){
                this.elements[i].hide();
            }
        }
    }
};*/

	ICompElement.prototype.prepareFrame = function(num){
		this._mdf = false;
		this.prepareRenderableFrame(num);
		this.prepareProperties(num, this.isInRange);
		if(!this.isInRange && !this.data.xt){
			return;
		}

		if (!this.tm._placeholder) {
			var timeRemapped = this.tm.v;
			if(timeRemapped === this.data.op){
				timeRemapped = this.data.op - 1;
			}
			this.renderedFrame = timeRemapped;
		} else {
			this.renderedFrame = num/this.data.sr;
		}
		var i,len = this.elements.length;
		if(!this.completeLayers){
			this.checkLayers(this.renderedFrame);
		}
		//This iteration needs to be backwards because of how expressions connect between each other
		for( i = len - 1; i >= 0; i -= 1 ){
			if(this.completeLayers || this.elements[i]){
				this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);
				if(this.elements[i]._mdf) {
					this._mdf = true;
				}
			}
		}
	};

	ICompElement.prototype.renderInnerContent = function() {
		var i,len = this.layers.length;
		for( i = 0; i < len; i += 1 ){
			if(this.completeLayers || this.elements[i]){
				this.elements[i].renderFrame();
			}
		}
	};

	ICompElement.prototype.setElements = function(elems){
		this.elements = elems;
	};

	ICompElement.prototype.getElements = function(){
		return this.elements;
	};

	ICompElement.prototype.destroyElements = function(){
		var i,len = this.layers.length;
		for( i = 0; i < len; i+=1 ){
			if(this.elements[i]){
				this.elements[i].destroy();
			}
		}
	};

	ICompElement.prototype.destroy = function(){
		this.destroyElements();
		this.destroyBaseElement();
	};

	function IImageElement(data,globalData,comp){
		this.assetData = globalData.getAssetData(data.refId);
		this.initElement(data,globalData,comp);
		this.sourceRect = {top:0,left:0,width:this.assetData.w,height:this.assetData.h};
	}

	extendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement], IImageElement);

	IImageElement.prototype.createContent = function(){

		var assetPath = this.globalData.getAssetsPath(this.assetData);

		this.innerElem = createNS('image');
		this.innerElem.setAttribute('width',this.assetData.w+"px");
		this.innerElem.setAttribute('height',this.assetData.h+"px");
		this.innerElem.setAttribute('preserveAspectRatio',this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);
		this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink','href',assetPath);

		this.layerElement.appendChild(this.innerElem);
	};

	IImageElement.prototype.sourceRectAtTime = function() {
		return this.sourceRect;
	}
	function ISolidElement(data,globalData,comp){
		this.initElement(data,globalData,comp);
	}
	extendPrototype([IImageElement], ISolidElement);

	ISolidElement.prototype.createContent = function(){

		var rect = createNS('rect');
		////rect.style.width = this.data.sw;
		////rect.style.height = this.data.sh;
		////rect.style.fill = this.data.sc;
		rect.setAttribute('width',this.data.sw);
		rect.setAttribute('height',this.data.sh);
		rect.setAttribute('fill',this.data.sc);
		this.layerElement.appendChild(rect);
	};
	function SVGCompElement(data,globalData,comp){
		this.layers = data.layers;
		this.supports3d = true;
		this.completeLayers = false;
		this.pendingElements = [];
		this.elements = this.layers ? createSizedArray(this.layers.length) : [];
		//this.layerElement = createNS('g');
		this.initElement(data,globalData,comp);
		this.tm = data.tm ? PropertyFactory.getProp(this,data.tm,0,globalData.frameRate,this) : {_placeholder:true};
	}

	extendPrototype([SVGRenderer, ICompElement, SVGBaseElement], SVGCompElement);
	function SVGTextElement(data,globalData,comp){
		this.textSpans = [];
		this.renderType = 'svg';
		this.initElement(data,globalData,comp);
	}

	extendPrototype([BaseElement,TransformElement,SVGBaseElement,HierarchyElement,FrameElement,RenderableDOMElement,ITextElement], SVGTextElement);

	SVGTextElement.prototype.createContent = function(){

		if (this.data.singleShape && !this.globalData.fontManager.chars) {
			this.textContainer = createNS('text');
		}
	};

	SVGTextElement.prototype.buildTextContents = function(textArray) {
		var i = 0, len = textArray.length;
		var textContents = [], currentTextContent = '';
		while (i < len) {
			if(textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {
				textContents.push(currentTextContent);
				currentTextContent = '';
			} else {
				currentTextContent += textArray[i];
			}
			i += 1;
		}
		textContents.push(currentTextContent);
		return textContents;
	}

	SVGTextElement.prototype.buildNewText = function(){
		var i, len;

		var documentData = this.textProperty.currentData;
		this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);
		if(documentData.fc) {
			this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));
		}else{
			this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');
		}
		if(documentData.sc){
			this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));
			this.layerElement.setAttribute('stroke-width', documentData.sw);
		}
		this.layerElement.setAttribute('font-size', documentData.finalSize);
		var fontData = this.globalData.fontManager.getFontByName(documentData.f);
		if(fontData.fClass){
			this.layerElement.setAttribute('class',fontData.fClass);
		} else {
			this.layerElement.setAttribute('font-family', fontData.fFamily);
			var fWeight = documentData.fWeight, fStyle = documentData.fStyle;
			this.layerElement.setAttribute('font-style', fStyle);
			this.layerElement.setAttribute('font-weight', fWeight);
		}
		this.layerElement.setAttribute('aria-label', documentData.t);

		var letters = documentData.l || [];
		var usesGlyphs = !!this.globalData.fontManager.chars;
		len = letters.length;

		var tSpan;
		var matrixHelper = this.mHelper;
		var shapes, shapeStr = '', singleShape = this.data.singleShape;
		var xPos = 0, yPos = 0, firstLine = true;
		var trackingOffset = documentData.tr/1000*documentData.finalSize;
		if(singleShape && !usesGlyphs && !documentData.sz) {
			var tElement = this.textContainer;
			var justify = 'start';
			switch(documentData.j) {
				case 1:
					justify = 'end';
					break;
				case 2:
					justify = 'middle';
					break;
			}
			tElement.setAttribute('text-anchor',justify);
			tElement.setAttribute('letter-spacing',trackingOffset);
			var textContent = this.buildTextContents(documentData.finalText);
			len = textContent.length;
			yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;
			for ( i = 0; i < len; i += 1) {
				tSpan = this.textSpans[i] || createNS('tspan');
				tSpan.textContent = textContent[i];
				tSpan.setAttribute('x', 0);
				tSpan.setAttribute('y', yPos);
				tSpan.style.display = 'inherit';
				tElement.appendChild(tSpan);
				this.textSpans[i] = tSpan;
				yPos += documentData.finalLineHeight;
			}

			this.layerElement.appendChild(tElement);
		} else {
			var cachedSpansLength = this.textSpans.length;
			var shapeData, charData;
			for (i = 0; i < len; i += 1) {
				if(!usesGlyphs || !singleShape || i === 0){
					tSpan = cachedSpansLength > i ? this.textSpans[i] : createNS(usesGlyphs?'path':'text');
					if (cachedSpansLength <= i) {
						tSpan.setAttribute('stroke-linecap', 'butt');
						tSpan.setAttribute('stroke-linejoin','round');
						tSpan.setAttribute('stroke-miterlimit','4');
						this.textSpans[i] = tSpan;
						this.layerElement.appendChild(tSpan);
					}
					tSpan.style.display = 'inherit';
				}

				matrixHelper.reset();
				matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);
				if (singleShape) {
					if(letters[i].n) {
						xPos = -trackingOffset;
						yPos += documentData.yOffset;
						yPos += firstLine ? 1 : 0;
						firstLine = false;
					}
					this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);
					xPos += letters[i].l || 0;
					//xPos += letters[i].val === ' ' ? 0 : trackingOffset;
					xPos += trackingOffset;
				}
				if(usesGlyphs) {
					charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);
					shapeData = charData && charData.data || {};
					shapes = shapeData.shapes ? shapeData.shapes[0].it : [];
					if(!singleShape){
						tSpan.setAttribute('d',this.createPathShape(matrixHelper,shapes));
					} else {
						shapeStr += this.createPathShape(matrixHelper,shapes);
					}
				} else {
					if(singleShape) {
						tSpan.setAttribute("transform", "translate(" + matrixHelper.props[12] + "," + matrixHelper.props[13] + ")");
					}
					tSpan.textContent = letters[i].val;
					tSpan.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space","preserve");
				}
				//
			}
			if (singleShape && tSpan) {
				tSpan.setAttribute('d',shapeStr);
			}
		}
		while (i < this.textSpans.length){
			this.textSpans[i].style.display = 'none';
			i += 1;
		}

		this._sizeChanged = true;
	};

	SVGTextElement.prototype.sourceRectAtTime = function(time){
		this.prepareFrame(this.comp.renderedFrame - this.data.st);
		this.renderInnerContent();
		if(this._sizeChanged){
			this._sizeChanged = false;
			var textBox = this.layerElement.getBBox();
			this.bbox = {
				top: textBox.y,
				left: textBox.x,
				width: textBox.width,
				height: textBox.height
			};
		}
		return this.bbox;
	};

	SVGTextElement.prototype.renderInnerContent = function(){

		if(!this.data.singleShape){
			this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);
			if(this.lettersChangedFlag || this.textAnimator.lettersChangedFlag){
				this._sizeChanged = true;
				var  i,len;
				var renderedLetters = this.textAnimator.renderedLetters;

				var letters = this.textProperty.currentData.l;

				len = letters.length;
				var renderedLetter, textSpan;
				for(i=0;i<len;i+=1){
					if(letters[i].n){
						continue;
					}
					renderedLetter = renderedLetters[i];
					textSpan = this.textSpans[i];
					if(renderedLetter._mdf.m) {
						textSpan.setAttribute('transform',renderedLetter.m);
					}
					if(renderedLetter._mdf.o) {
						textSpan.setAttribute('opacity',renderedLetter.o);
					}
					if(renderedLetter._mdf.sw){
						textSpan.setAttribute('stroke-width',renderedLetter.sw);
					}
					if(renderedLetter._mdf.sc){
						textSpan.setAttribute('stroke',renderedLetter.sc);
					}
					if(renderedLetter._mdf.fc){
						textSpan.setAttribute('fill',renderedLetter.fc);
					}
				}
			}
		}
	};

	function SVGShapeElement(data,globalData,comp){
		//List of drawable elements
		this.shapes = [];
		// Full shape data
		this.shapesData = data.shapes;
		//List of styles that will be applied to shapes
		this.stylesList = [];
		//List of modifiers that will be applied to shapes
		this.shapeModifiers = [];
		//List of items in shape tree
		this.itemsData = [];
		//List of items in previous shape tree
		this.processedElements = [];
		// List of animated components
		this.animatedContents = [];
		this.initElement(data,globalData,comp);
		//Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.
		// List of elements that have been created
		this.prevViewData = [];
		//Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.
	}

	extendPrototype([BaseElement,TransformElement,SVGBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableDOMElement], SVGShapeElement);

	SVGShapeElement.prototype.initSecondaryElement = function() {
	};

	SVGShapeElement.prototype.identityMatrix = new Matrix();

	SVGShapeElement.prototype.buildExpressionInterface = function(){};

	SVGShapeElement.prototype.createContent = function(){
		this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement, 0, [], true);
		this.filterUniqueShapes();
	};

	/*
This method searches for multiple shapes that affect a single element and one of them is animated
*/
	SVGShapeElement.prototype.filterUniqueShapes = function(){
		var i, len = this.shapes.length, shape;
		var j, jLen = this.stylesList.length;
		var style, count = 0;
		var tempShapes = [];
		var areAnimated = false;
		for(j = 0; j < jLen; j += 1) {
			style = this.stylesList[j];
			areAnimated = false;
			tempShapes.length = 0;
			for(i = 0; i < len; i += 1) {
				shape = this.shapes[i];
				if(shape.styles.indexOf(style) !== -1) {
					tempShapes.push(shape);
					areAnimated = shape._isAnimated || areAnimated;
				}
			}
			if(tempShapes.length > 1 && areAnimated) {
				this.setShapesAsAnimated(tempShapes);
			}
		}
	}

	SVGShapeElement.prototype.setShapesAsAnimated = function(shapes){
		var i, len = shapes.length;
		for(i = 0; i < len; i += 1) {
			shapes[i].setAsAnimated();
		}
	}

	SVGShapeElement.prototype.createStyleElement = function(data, level){
		//TODO: prevent drawing of hidden styles
		var elementData;
		var styleOb = new SVGStyleData(data, level);

		var pathElement = styleOb.pElem;
		if(data.ty === 'st') {
			elementData = new SVGStrokeStyleData(this, data, styleOb);
		} else if(data.ty === 'fl') {
			elementData = new SVGFillStyleData(this, data, styleOb);
		} else if(data.ty === 'gf' || data.ty === 'gs') {
			var gradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;
			elementData = new gradientConstructor(this, data, styleOb);
			this.globalData.defs.appendChild(elementData.gf);
			if (elementData.maskId) {
				this.globalData.defs.appendChild(elementData.ms);
				this.globalData.defs.appendChild(elementData.of);
				pathElement.setAttribute('mask','url(' + locationHref + '#' + elementData.maskId + ')');
			}
		}

		if(data.ty === 'st' || data.ty === 'gs') {
			pathElement.setAttribute('stroke-linecap', this.lcEnum[data.lc] || 'round');
			pathElement.setAttribute('stroke-linejoin',this.ljEnum[data.lj] || 'round');
			pathElement.setAttribute('fill-opacity','0');
			if(data.lj === 1) {
				pathElement.setAttribute('stroke-miterlimit',data.ml);
			}
		}

		if(data.r === 2) {
			pathElement.setAttribute('fill-rule', 'evenodd');
		}

		if(data.ln){
			pathElement.setAttribute('id',data.ln);
		}
		if(data.cl){
			pathElement.setAttribute('class',data.cl);
		}
		if(data.bm){
			pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);
		}
		this.stylesList.push(styleOb);
		this.addToAnimatedContents(data, elementData);
		return elementData;
	};

	SVGShapeElement.prototype.createGroupElement = function(data) {
		var elementData = new ShapeGroupData();
		if(data.ln){
			elementData.gr.setAttribute('id',data.ln);
		}
		if(data.cl){
			elementData.gr.setAttribute('class',data.cl);
		}
		if(data.bm){
			elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);
		}
		return elementData;
	};

	SVGShapeElement.prototype.createTransformElement = function(data, container) {
		var transformProperty = TransformPropertyFactory.getTransformProperty(this,data,this);
		var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);
		this.addToAnimatedContents(data, elementData);
		return elementData;
	};

	SVGShapeElement.prototype.createShapeElement = function(data, ownTransformers, level) {
		var ty = 4;
		if(data.ty === 'rc'){
			ty = 5;
		}else if(data.ty === 'el'){
			ty = 6;
		}else if(data.ty === 'sr'){
			ty = 7;
		}
		var shapeProperty = ShapePropertyFactory.getShapeProp(this,data,ty,this);
		var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);
		this.shapes.push(elementData);
		this.addShapeToModifiers(elementData);
		this.addToAnimatedContents(data, elementData);
		return elementData;
	};

	SVGShapeElement.prototype.addToAnimatedContents = function(data, element) {
		var i = 0, len = this.animatedContents.length;
		while(i < len) {
			if(this.animatedContents[i].element === element) {
				return;
			}
			i += 1;
		}
		this.animatedContents.push({
			fn: SVGElementsRenderer.createRenderFunction(data),
			element: element,
			data: data
		});
	};

	SVGShapeElement.prototype.setElementStyles = function(elementData){
		var arr = elementData.styles;
		var j, jLen = this.stylesList.length;
		for (j = 0; j < jLen; j += 1) {
			if (!this.stylesList[j].closed) {
				arr.push(this.stylesList[j]);
			}
		}
	};

	SVGShapeElement.prototype.reloadShapes = function(){
		this._isFirstFrame = true;
		var i, len = this.itemsData.length;
		for( i = 0; i < len; i += 1) {
			this.prevViewData[i] = this.itemsData[i];
		}
		this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.layerElement, 0, [], true);
		this.filterUniqueShapes();
		len = this.dynamicProperties.length;
		for(i = 0; i < len; i += 1) {
			this.dynamicProperties[i].getValue();
		}
		this.renderModifiers();
	};

	SVGShapeElement.prototype.searchShapes = function(arr,itemsData,prevViewData,container, level, transformers, render){
		var ownTransformers = [].concat(transformers);
		var i, len = arr.length - 1;
		var j, jLen;
		var ownStyles = [], ownModifiers = [], styleOb, currentTransform, modifier, processedPos;
		for(i=len;i>=0;i-=1){
			processedPos = this.searchProcessedElement(arr[i]);
			if(!processedPos){
				arr[i]._render = render;
			} else {
				itemsData[i] = prevViewData[processedPos - 1];
			}
			if(arr[i].ty == 'fl' || arr[i].ty == 'st' || arr[i].ty == 'gf' || arr[i].ty == 'gs'){
				if(!processedPos){
					itemsData[i] = this.createStyleElement(arr[i], level);
				} else {
					itemsData[i].style.closed = false;
				}
				if(arr[i]._render){
					container.appendChild(itemsData[i].style.pElem);
				}
				ownStyles.push(itemsData[i].style);
			}else if(arr[i].ty == 'gr'){
				if(!processedPos){
					itemsData[i] = this.createGroupElement(arr[i]);
				} else {
					jLen = itemsData[i].it.length;
					for(j=0;j<jLen;j+=1){
						itemsData[i].prevViewData[j] = itemsData[i].it[j];
					}
				}
				this.searchShapes(arr[i].it,itemsData[i].it,itemsData[i].prevViewData,itemsData[i].gr, level + 1, ownTransformers, render);
				if(arr[i]._render){
					container.appendChild(itemsData[i].gr);
				}
			}else if(arr[i].ty == 'tr'){
				if(!processedPos){
					itemsData[i] = this.createTransformElement(arr[i], container);
				}
				currentTransform = itemsData[i].transform;
				ownTransformers.push(currentTransform);
			}else if(arr[i].ty == 'sh' || arr[i].ty == 'rc' || arr[i].ty == 'el' || arr[i].ty == 'sr'){
				if(!processedPos){
					itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);
				}
				this.setElementStyles(itemsData[i]);

			}else if(arr[i].ty == 'tm' || arr[i].ty == 'rd' || arr[i].ty == 'ms'){
				if(!processedPos){
					modifier = ShapeModifiers.getModifier(arr[i].ty);
					modifier.init(this,arr[i]);
					itemsData[i] = modifier;
					this.shapeModifiers.push(modifier);
				} else {
					modifier = itemsData[i];
					modifier.closed = false;
				}
				ownModifiers.push(modifier);
			}else if(arr[i].ty == 'rp'){
				if(!processedPos){
					modifier = ShapeModifiers.getModifier(arr[i].ty);
					itemsData[i] = modifier;
					modifier.init(this,arr,i,itemsData);
					this.shapeModifiers.push(modifier);
					render = false;
				}else{
					modifier = itemsData[i];
					modifier.closed = true;
				}
				ownModifiers.push(modifier);
			}
			this.addProcessedElement(arr[i], i + 1);
		}
		len = ownStyles.length;
		for(i=0;i<len;i+=1){
			ownStyles[i].closed = true;
		}
		len = ownModifiers.length;
		for(i=0;i<len;i+=1){
			ownModifiers[i].closed = true;
		}
	};

	SVGShapeElement.prototype.renderInnerContent = function() {
		this.renderModifiers();
		var i, len = this.stylesList.length;
		for(i=0;i<len;i+=1){
			this.stylesList[i].reset();
		}
		this.renderShape();

		for (i = 0; i < len; i += 1) {
			if (this.stylesList[i]._mdf || this._isFirstFrame) {
				if(this.stylesList[i].msElem){
					this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d);
					//Adding M0 0 fixes same mask bug on all browsers
					this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;
				}
				this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');
			}
		}
	};

	SVGShapeElement.prototype.renderShape = function() {
		var i, len = this.animatedContents.length;
		var animatedContent;
		for(i = 0; i < len; i += 1) {
			animatedContent = this.animatedContents[i];
			if((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {
				animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);
			}
		}
	}

	SVGShapeElement.prototype.destroy = function(){
		this.destroyBaseElement();
		this.shapesData = null;
		this.itemsData = null;
	};

	function SVGTintFilter(filter, filterManager){
		this.filterManager = filterManager;
		var feColorMatrix = createNS('feColorMatrix');
		feColorMatrix.setAttribute('type','matrix');
		feColorMatrix.setAttribute('color-interpolation-filters','linearRGB');
		feColorMatrix.setAttribute('values','0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');
		feColorMatrix.setAttribute('result','f1');
		filter.appendChild(feColorMatrix);
		feColorMatrix = createNS('feColorMatrix');
		feColorMatrix.setAttribute('type','matrix');
		feColorMatrix.setAttribute('color-interpolation-filters','sRGB');
		feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');
		feColorMatrix.setAttribute('result','f2');
		filter.appendChild(feColorMatrix);
		this.matrixFilter = feColorMatrix;
		if(filterManager.effectElements[2].p.v !== 100 || filterManager.effectElements[2].p.k){
			var feMerge = createNS('feMerge');
			filter.appendChild(feMerge);
			var feMergeNode;
			feMergeNode = createNS('feMergeNode');
			feMergeNode.setAttribute('in','SourceGraphic');
			feMerge.appendChild(feMergeNode);
			feMergeNode = createNS('feMergeNode');
			feMergeNode.setAttribute('in','f2');
			feMerge.appendChild(feMergeNode);
		}
	}

	SVGTintFilter.prototype.renderFrame = function(forceRender){
		if(forceRender || this.filterManager._mdf){
			var colorBlack = this.filterManager.effectElements[0].p.v;
			var colorWhite = this.filterManager.effectElements[1].p.v;
			var opacity = this.filterManager.effectElements[2].p.v/100;
			this.matrixFilter.setAttribute('values',(colorWhite[0]- colorBlack[0])+' 0 0 0 '+ colorBlack[0] +' '+ (colorWhite[1]- colorBlack[1]) +' 0 0 0 '+ colorBlack[1] +' '+ (colorWhite[2]- colorBlack[2]) +' 0 0 0 '+ colorBlack[2] +' 0 0 0 ' + opacity + ' 0');
		}
	};
	function SVGFillFilter(filter, filterManager){
		this.filterManager = filterManager;
		var feColorMatrix = createNS('feColorMatrix');
		feColorMatrix.setAttribute('type','matrix');
		feColorMatrix.setAttribute('color-interpolation-filters','sRGB');
		feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');
		filter.appendChild(feColorMatrix);
		this.matrixFilter = feColorMatrix;
	}
	SVGFillFilter.prototype.renderFrame = function(forceRender){
		if(forceRender || this.filterManager._mdf){
			var color = this.filterManager.effectElements[2].p.v;
			var opacity = this.filterManager.effectElements[6].p.v;
			this.matrixFilter.setAttribute('values','0 0 0 0 '+color[0]+' 0 0 0 0 '+color[1]+' 0 0 0 0 '+color[2]+' 0 0 0 '+opacity+' 0');
		}
	};
	function SVGGaussianBlurEffect(filter, filterManager){
		// Outset the filter region by 100% on all sides to accommodate blur expansion.
		filter.setAttribute('x','-100%');
		filter.setAttribute('y','-100%');
		filter.setAttribute('width','300%');
		filter.setAttribute('height','300%');

		this.filterManager = filterManager;
		var feGaussianBlur = createNS('feGaussianBlur');
		filter.appendChild(feGaussianBlur);
		this.feGaussianBlur = feGaussianBlur;
	}

	SVGGaussianBlurEffect.prototype.renderFrame = function(forceRender){
		if(forceRender || this.filterManager._mdf){
			// Empirical value, matching AE's blur appearance.
			var kBlurrinessToSigma = 0.3;
			var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma;

			// Dimensions mapping:
			//
			//   1 -> horizontal & vertical
			//   2 -> horizontal only
			//   3 -> vertical only
			//
			var dimensions = this.filterManager.effectElements[1].p.v;
			var sigmaX = (dimensions == 3) ? 0 : sigma;
			var sigmaY = (dimensions == 2) ? 0 : sigma;

			this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + " " + sigmaY);

			// Repeat edges mapping:
			//
			//   0 -> off -> duplicate
			//   1 -> on  -> wrap
			var edgeMode = (this.filterManager.effectElements[2].p.v == 1) ? 'wrap' : 'duplicate';
			this.feGaussianBlur.setAttribute('edgeMode', edgeMode);
		}
	}
	function SVGStrokeEffect(elem, filterManager){
		this.initialized = false;
		this.filterManager = filterManager;
		this.elem = elem;
		this.paths = [];
	}

	SVGStrokeEffect.prototype.initialize = function(){

		var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;
		var path,groupPath, i, len;
		if(this.filterManager.effectElements[1].p.v === 1){
			len = this.elem.maskManager.masksProperties.length;
			i = 0;
		} else {
			i = this.filterManager.effectElements[0].p.v - 1;
			len = i + 1;
		}
		groupPath = createNS('g');
		groupPath.setAttribute('fill','none');
		groupPath.setAttribute('stroke-linecap','round');
		groupPath.setAttribute('stroke-dashoffset',1);
		for(i;i<len;i+=1){
			path = createNS('path');
			groupPath.appendChild(path);
			this.paths.push({p:path,m:i});
		}
		if(this.filterManager.effectElements[10].p.v === 3){
			var mask = createNS('mask');
			var id = createElementID();
			mask.setAttribute('id',id);
			mask.setAttribute('mask-type','alpha');
			mask.appendChild(groupPath);
			this.elem.globalData.defs.appendChild(mask);
			var g = createNS('g');
			g.setAttribute('mask','url(' + locationHref + '#'+id+')');
			while (elemChildren[0]) {
				g.appendChild(elemChildren[0]);
			}
			this.elem.layerElement.appendChild(g);
			this.masker = mask;
			groupPath.setAttribute('stroke','#fff');
		} else if(this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2){
			if(this.filterManager.effectElements[10].p.v === 2){
				elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;
				while(elemChildren.length){
					this.elem.layerElement.removeChild(elemChildren[0]);
				}
			}
			this.elem.layerElement.appendChild(groupPath);
			this.elem.layerElement.removeAttribute('mask');
			groupPath.setAttribute('stroke','#fff');
		}
		this.initialized = true;
		this.pathMasker = groupPath;
	};

	SVGStrokeEffect.prototype.renderFrame = function(forceRender){
		if(!this.initialized){
			this.initialize();
		}
		var i, len = this.paths.length;
		var mask, path;
		for(i=0;i<len;i+=1){
			if(this.paths[i].m === -1) {
				continue;
			}
			mask = this.elem.maskManager.viewData[this.paths[i].m];
			path = this.paths[i].p;
			if(forceRender || this.filterManager._mdf || mask.prop._mdf){
				path.setAttribute('d',mask.lastPath);
			}
			if(forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf){
				var dasharrayValue;
				if(this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100){
					var s = Math.min(this.filterManager.effectElements[7].p.v,this.filterManager.effectElements[8].p.v)/100;
					var e = Math.max(this.filterManager.effectElements[7].p.v,this.filterManager.effectElements[8].p.v)/100;
					var l = path.getTotalLength();
					dasharrayValue = '0 0 0 ' + l*s + ' ';
					var lineLength = l*(e-s);
					var segment = 1+this.filterManager.effectElements[4].p.v*2*this.filterManager.effectElements[9].p.v/100;
					var units = Math.floor(lineLength/segment);
					var j;
					for(j=0;j<units;j+=1){
						dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v*2*this.filterManager.effectElements[9].p.v/100 + ' ';
					}
					dasharrayValue += '0 ' + l*10 + ' 0 0';
				} else {
					dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v*2*this.filterManager.effectElements[9].p.v/100;
				}
				path.setAttribute('stroke-dasharray',dasharrayValue);
			}
		}
		if(forceRender || this.filterManager.effectElements[4].p._mdf){
			this.pathMasker.setAttribute('stroke-width',this.filterManager.effectElements[4].p.v*2);
		}

		if(forceRender || this.filterManager.effectElements[6].p._mdf){
			this.pathMasker.setAttribute('opacity',this.filterManager.effectElements[6].p.v);
		}
		if(this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2){
			if(forceRender || this.filterManager.effectElements[3].p._mdf){
				var color = this.filterManager.effectElements[3].p.v;
				this.pathMasker.setAttribute('stroke','rgb('+bm_floor(color[0]*255)+','+bm_floor(color[1]*255)+','+bm_floor(color[2]*255)+')');
			}
		}
	};
	function SVGTritoneFilter(filter, filterManager){
		this.filterManager = filterManager;
		var feColorMatrix = createNS('feColorMatrix');
		feColorMatrix.setAttribute('type','matrix');
		feColorMatrix.setAttribute('color-interpolation-filters','linearRGB');
		feColorMatrix.setAttribute('values','0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');
		feColorMatrix.setAttribute('result','f1');
		filter.appendChild(feColorMatrix);
		var feComponentTransfer = createNS('feComponentTransfer');
		feComponentTransfer.setAttribute('color-interpolation-filters','sRGB');
		filter.appendChild(feComponentTransfer);
		this.matrixFilter = feComponentTransfer;
		var feFuncR = createNS('feFuncR');
		feFuncR.setAttribute('type','table');
		feComponentTransfer.appendChild(feFuncR);
		this.feFuncR = feFuncR;
		var feFuncG = createNS('feFuncG');
		feFuncG.setAttribute('type','table');
		feComponentTransfer.appendChild(feFuncG);
		this.feFuncG = feFuncG;
		var feFuncB = createNS('feFuncB');
		feFuncB.setAttribute('type','table');
		feComponentTransfer.appendChild(feFuncB);
		this.feFuncB = feFuncB;
	}

	SVGTritoneFilter.prototype.renderFrame = function(forceRender){
		if(forceRender || this.filterManager._mdf){
			var color1 = this.filterManager.effectElements[0].p.v;
			var color2 = this.filterManager.effectElements[1].p.v;
			var color3 = this.filterManager.effectElements[2].p.v;
			var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];
			var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];
			var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];
			this.feFuncR.setAttribute('tableValues', tableR);
			this.feFuncG.setAttribute('tableValues', tableG);
			this.feFuncB.setAttribute('tableValues', tableB);
			//var opacity = this.filterManager.effectElements[2].p.v/100;
			//this.matrixFilter.setAttribute('values',(colorWhite[0]- colorBlack[0])+' 0 0 0 '+ colorBlack[0] +' '+ (colorWhite[1]- colorBlack[1]) +' 0 0 0 '+ colorBlack[1] +' '+ (colorWhite[2]- colorBlack[2]) +' 0 0 0 '+ colorBlack[2] +' 0 0 0 ' + opacity + ' 0');
		}
	};
	function SVGProLevelsFilter(filter, filterManager){
		this.filterManager = filterManager;
		var effectElements = this.filterManager.effectElements;
		var feComponentTransfer = createNS('feComponentTransfer');
		var feFuncR, feFuncG, feFuncB;

		if(effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1){
			this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);
		}
		if(effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1){
			this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);
		}
		if(effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1){
			this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);
		}
		if(effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1){
			this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);
		}

		if(this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA){
			feComponentTransfer.setAttribute('color-interpolation-filters','sRGB');
			filter.appendChild(feComponentTransfer);
			feComponentTransfer = createNS('feComponentTransfer');
		}

		if(effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1){

			feComponentTransfer.setAttribute('color-interpolation-filters','sRGB');
			filter.appendChild(feComponentTransfer);
			this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);
			this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);
			this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);
		}
	}

	SVGProLevelsFilter.prototype.createFeFunc = function(type, feComponentTransfer) {
		var feFunc = createNS(type);
		feFunc.setAttribute('type','table');
		feComponentTransfer.appendChild(feFunc);
		return feFunc;
	};

	SVGProLevelsFilter.prototype.getTableValue = function(inputBlack, inputWhite, gamma, outputBlack, outputWhite) {
		var cnt = 0;
		var segments = 256;
		var perc;
		var min = Math.min(inputBlack, inputWhite);
		var max = Math.max(inputBlack, inputWhite);
		var table = Array.call(null,{length:segments});
		var colorValue;
		var pos = 0;
		var outputDelta = outputWhite - outputBlack;
		var inputDelta = inputWhite - inputBlack;
		while(cnt <= 256) {
			perc = cnt/256;
			if(perc <= min){
				colorValue = inputDelta < 0 ? outputWhite : outputBlack;
			} else if(perc >= max){
				colorValue = inputDelta < 0 ? outputBlack : outputWhite;
			} else {
				colorValue = (outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma));
			}
			table[pos++] = colorValue;
			cnt += 256/(segments-1);
		}
		return table.join(' ');
	};

	SVGProLevelsFilter.prototype.renderFrame = function(forceRender){
		if(forceRender || this.filterManager._mdf){
			var val, cnt, perc, bezier;
			var effectElements = this.filterManager.effectElements;
			if(this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)){
				val = this.getTableValue(effectElements[3].p.v,effectElements[4].p.v,effectElements[5].p.v,effectElements[6].p.v,effectElements[7].p.v);
				this.feFuncRComposed.setAttribute('tableValues',val);
				this.feFuncGComposed.setAttribute('tableValues',val);
				this.feFuncBComposed.setAttribute('tableValues',val);
			}


			if(this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)){
				val = this.getTableValue(effectElements[10].p.v,effectElements[11].p.v,effectElements[12].p.v,effectElements[13].p.v,effectElements[14].p.v);
				this.feFuncR.setAttribute('tableValues',val);
			}

			if(this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)){
				val = this.getTableValue(effectElements[17].p.v,effectElements[18].p.v,effectElements[19].p.v,effectElements[20].p.v,effectElements[21].p.v);
				this.feFuncG.setAttribute('tableValues',val);
			}

			if(this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)){
				val = this.getTableValue(effectElements[24].p.v,effectElements[25].p.v,effectElements[26].p.v,effectElements[27].p.v,effectElements[28].p.v);
				this.feFuncB.setAttribute('tableValues',val);
			}

			if(this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)){
				val = this.getTableValue(effectElements[31].p.v,effectElements[32].p.v,effectElements[33].p.v,effectElements[34].p.v,effectElements[35].p.v);
				this.feFuncA.setAttribute('tableValues',val);
			}

		}
	};
	function SVGDropShadowEffect(filter, filterManager) {
		var filterSize = filterManager.container.globalData.renderConfig.filterSize
		filter.setAttribute('x', filterSize.x);
		filter.setAttribute('y', filterSize.y);
		filter.setAttribute('width', filterSize.width);
		filter.setAttribute('height', filterSize.height);
		this.filterManager = filterManager;

		var feGaussianBlur = createNS('feGaussianBlur');
		feGaussianBlur.setAttribute('in','SourceAlpha');
		feGaussianBlur.setAttribute('result','drop_shadow_1');
		feGaussianBlur.setAttribute('stdDeviation','0');
		this.feGaussianBlur = feGaussianBlur;
		filter.appendChild(feGaussianBlur);

		var feOffset = createNS('feOffset');
		feOffset.setAttribute('dx','25');
		feOffset.setAttribute('dy','0');
		feOffset.setAttribute('in','drop_shadow_1');
		feOffset.setAttribute('result','drop_shadow_2');
		this.feOffset = feOffset;
		filter.appendChild(feOffset);
		var feFlood = createNS('feFlood');
		feFlood.setAttribute('flood-color','#00ff00');
		feFlood.setAttribute('flood-opacity','1');
		feFlood.setAttribute('result','drop_shadow_3');
		this.feFlood = feFlood;
		filter.appendChild(feFlood);

		var feComposite = createNS('feComposite');
		feComposite.setAttribute('in','drop_shadow_3');
		feComposite.setAttribute('in2','drop_shadow_2');
		feComposite.setAttribute('operator','in');
		feComposite.setAttribute('result','drop_shadow_4');
		filter.appendChild(feComposite);


		var feMerge = createNS('feMerge');
		filter.appendChild(feMerge);
		var feMergeNode;
		feMergeNode = createNS('feMergeNode');
		feMerge.appendChild(feMergeNode);
		feMergeNode = createNS('feMergeNode');
		feMergeNode.setAttribute('in','SourceGraphic');
		this.feMergeNode = feMergeNode;
		this.feMerge = feMerge;
		this.originalNodeAdded = false;
		feMerge.appendChild(feMergeNode);
	}

	SVGDropShadowEffect.prototype.renderFrame = function(forceRender){
		if(forceRender || this.filterManager._mdf){
			if(forceRender || this.filterManager.effectElements[4].p._mdf){
				this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);
			}
			if(forceRender || this.filterManager.effectElements[0].p._mdf){
				var col = this.filterManager.effectElements[0].p.v;
				this.feFlood.setAttribute('flood-color',rgbToHex(Math.round(col[0]*255),Math.round(col[1]*255),Math.round(col[2]*255)));
			}
			if(forceRender || this.filterManager.effectElements[1].p._mdf){
				this.feFlood.setAttribute('flood-opacity',this.filterManager.effectElements[1].p.v/255);
			}
			if(forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf){
				var distance = this.filterManager.effectElements[3].p.v;
				var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;
				var x = distance * Math.cos(angle);
				var y = distance * Math.sin(angle);
				this.feOffset.setAttribute('dx', x);
				this.feOffset.setAttribute('dy', y);
			}
			/*if(forceRender || this.filterManager.effectElements[5].p._mdf){
            if(this.filterManager.effectElements[5].p.v === 1 && this.originalNodeAdded) {
                this.feMerge.removeChild(this.feMergeNode);
                this.originalNodeAdded = false;
            } else if(this.filterManager.effectElements[5].p.v === 0 && !this.originalNodeAdded) {
                this.feMerge.appendChild(this.feMergeNode);
                this.originalNodeAdded = true;
            }
        }*/
		}
	};
	var _svgMatteSymbols = [];

	function SVGMatte3Effect(filterElem, filterManager, elem){
		this.initialized = false;
		this.filterManager = filterManager;
		this.filterElem = filterElem;
		this.elem = elem;
		elem.matteElement = createNS('g');
		elem.matteElement.appendChild(elem.layerElement);
		elem.matteElement.appendChild(elem.transformedElement);
		elem.baseElement = elem.matteElement;
	}

	SVGMatte3Effect.prototype.findSymbol = function(mask) {
		var i = 0, len = _svgMatteSymbols.length;
		while(i < len) {
			if(_svgMatteSymbols[i] === mask) {
				return _svgMatteSymbols[i];
			}
			i += 1;
		}
		return null;
	};

	SVGMatte3Effect.prototype.replaceInParent = function(mask, symbolId) {
		var parentNode = mask.layerElement.parentNode;
		if(!parentNode) {
			return;
		}
		var children = parentNode.children;
		var i = 0, len = children.length;
		while (i < len) {
			if (children[i] === mask.layerElement) {
				break;
			}
			i += 1;
		}
		var nextChild;
		if (i <= len - 2) {
			nextChild = children[i + 1];
		}
		var useElem = createNS('use');
		useElem.setAttribute('href', '#' + symbolId);
		if(nextChild) {
			parentNode.insertBefore(useElem, nextChild);
		} else {
			parentNode.appendChild(useElem);
		}
	};

	SVGMatte3Effect.prototype.setElementAsMask = function(elem, mask) {
		if(!this.findSymbol(mask)) {
			var symbolId = createElementID();
			var masker = createNS('mask');
			masker.setAttribute('id', mask.layerId);
			masker.setAttribute('mask-type', 'alpha');
			_svgMatteSymbols.push(mask);
			var defs = elem.globalData.defs;
			defs.appendChild(masker);
			var symbol = createNS('symbol');
			symbol.setAttribute('id', symbolId);
			this.replaceInParent(mask, symbolId);
			symbol.appendChild(mask.layerElement);
			defs.appendChild(symbol);
			var useElem = createNS('use');
			useElem.setAttribute('href', '#' + symbolId);
			masker.appendChild(useElem);
			mask.data.hd = false;
			mask.show();
		}
		elem.setMatte(mask.layerId);
	};

	SVGMatte3Effect.prototype.initialize = function() {
		var ind = this.filterManager.effectElements[0].p.v;
		var elements = this.elem.comp.elements;
		var i = 0, len = elements.length;
		while (i < len) {
			if (elements[i] && elements[i].data.ind === ind) {
				this.setElementAsMask(this.elem, elements[i]);
			}
			i += 1;
		}
		this.initialized = true;
	};

	SVGMatte3Effect.prototype.renderFrame = function() {
		if(!this.initialized) {
			this.initialize();
		}
	};
	function SVGEffects(elem){
		var i, len = elem.data.ef ? elem.data.ef.length : 0;
		var filId = createElementID();
		var fil = filtersFactory.createFilter(filId);
		var count = 0;
		this.filters = [];
		var filterManager;
		for(i=0;i<len;i+=1){
			filterManager = null;
			if(elem.data.ef[i].ty === 20){
				count += 1;
				filterManager = new SVGTintFilter(fil, elem.effectsManager.effectElements[i]);
			}else if(elem.data.ef[i].ty === 21){
				count += 1;
				filterManager = new SVGFillFilter(fil, elem.effectsManager.effectElements[i]);
			}else if(elem.data.ef[i].ty === 22){
				filterManager = new SVGStrokeEffect(elem, elem.effectsManager.effectElements[i]);
			}else if(elem.data.ef[i].ty === 23){
				count += 1;
				filterManager = new SVGTritoneFilter(fil, elem.effectsManager.effectElements[i]);
			}else if(elem.data.ef[i].ty === 24){
				count += 1;
				filterManager = new SVGProLevelsFilter(fil, elem.effectsManager.effectElements[i]);
			}else if(elem.data.ef[i].ty === 25){
				count += 1;
				filterManager = new SVGDropShadowEffect(fil, elem.effectsManager.effectElements[i]);
			}else if(elem.data.ef[i].ty === 28){
				//count += 1;
				filterManager = new SVGMatte3Effect(fil, elem.effectsManager.effectElements[i], elem);
			}else if(elem.data.ef[i].ty === 29){
				count += 1;
				filterManager = new SVGGaussianBlurEffect(fil, elem.effectsManager.effectElements[i]);
			}
			if(filterManager) {
				this.filters.push(filterManager);
			}
		}
		if(count){
			elem.globalData.defs.appendChild(fil);
			elem.layerElement.setAttribute('filter','url(' + locationHref + '#'+filId+')');
		}
		if (this.filters.length) {
			elem.addRenderableComponent(this);
		}
	}

	SVGEffects.prototype.renderFrame = function(_isFirstFrame){
		var i, len = this.filters.length;
		for(i=0;i<len;i+=1){
			this.filters[i].renderFrame(_isFirstFrame);
		}
	};
	function CVContextData() {
		this.saved = [];
		this.cArrPos = 0;
		this.cTr = new Matrix();
		this.cO = 1;
		var i, len = 15;
		this.savedOp = createTypedArray('float32', len);
		for(i=0;i<len;i+=1){
			this.saved[i] = createTypedArray('float32', 16);
		}
		this._length = len;
	}

	CVContextData.prototype.duplicate = function() {
		var newLength = this._length * 2;
		var currentSavedOp = this.savedOp;
		this.savedOp = createTypedArray('float32', newLength);
		this.savedOp.set(currentSavedOp);
		var i = 0;
		for(i = this._length; i < newLength; i += 1) {
			this.saved[i] = createTypedArray('float32', 16);
		}
		this._length = newLength;
	};

	CVContextData.prototype.reset = function() {
		this.cArrPos = 0;
		this.cTr.reset();
		this.cO = 1;
	};
	function CVBaseElement(){
	}

	CVBaseElement.prototype = {
		createElements: function(){},
		initRendererElement: function(){},
		createContainerElements: function(){
			this.canvasContext = this.globalData.canvasContext;
			this.renderableEffectsManager = new CVEffects(this);
		},
		createContent: function(){},
		setBlendMode: function(){
			var globalData = this.globalData;
			if(globalData.blendMode !== this.data.bm) {
				globalData.blendMode = this.data.bm;
				var blendModeValue = getBlendMode(this.data.bm);
				globalData.canvasContext.globalCompositeOperation = blendModeValue;
			}
		},
		createRenderableComponents: function(){
			this.maskManager = new CVMaskElement(this.data, this);
		},
		hideElement: function(){
			if (!this.hidden && (!this.isInRange || this.isTransparent)) {
				this.hidden = true;
			}
		},
		showElement: function(){
			if (this.isInRange && !this.isTransparent){
				this.hidden = false;
				this._isFirstFrame = true;
				this.maskManager._isFirstFrame = true;
			}
		},
		renderFrame: function() {
			if (this.hidden || this.data.hd) {
				return;
			}
			this.renderTransform();
			this.renderRenderable();
			this.setBlendMode();
			var forceRealStack = this.data.ty === 0;
			this.globalData.renderer.save(forceRealStack);
			this.globalData.renderer.ctxTransform(this.finalTransform.mat.props);
			this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v);
			this.renderInnerContent();
			this.globalData.renderer.restore(forceRealStack);
			if(this.maskManager.hasMasks) {
				this.globalData.renderer.restore(true);
			}
			if (this._isFirstFrame) {
				this._isFirstFrame = false;
			}
		},
		destroy: function(){
			this.canvasContext = null;
			this.data = null;
			this.globalData = null;
			this.maskManager.destroy();
		},
		mHelper: new Matrix()
	};
	CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;
	CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;

	function CVImageElement(data, globalData, comp){
		this.assetData = globalData.getAssetData(data.refId);
		this.img = globalData.imageLoader.getImage(this.assetData);
		this.initElement(data,globalData,comp);
	}
	extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);

	CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;
	CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;

	CVImageElement.prototype.createContent = function(){

		if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {
			var canvas = createTag('canvas');
			canvas.width = this.assetData.w;
			canvas.height = this.assetData.h;
			var ctx = canvas.getContext('2d');

			var imgW = this.img.width;
			var imgH = this.img.height;
			var imgRel = imgW / imgH;
			var canvasRel = this.assetData.w/this.assetData.h;
			var widthCrop, heightCrop;
			var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;
			if((imgRel > canvasRel && par === 'xMidYMid slice') || (imgRel < canvasRel && par !== 'xMidYMid slice')) {
				heightCrop = imgH;
				widthCrop = heightCrop*canvasRel;
			} else {
				widthCrop = imgW;
				heightCrop = widthCrop/canvasRel;
			}
			ctx.drawImage(this.img,(imgW-widthCrop)/2,(imgH-heightCrop)/2,widthCrop,heightCrop,0,0,this.assetData.w,this.assetData.h);
			this.img = canvas;
		}

	};

	CVImageElement.prototype.renderInnerContent = function(parentMatrix){
		this.canvasContext.drawImage(this.img, 0, 0);
	};

	CVImageElement.prototype.destroy = function(){
		this.img = null;
	};
	function CVCompElement(data, globalData, comp) {
		this.completeLayers = false;
		this.layers = data.layers;
		this.pendingElements = [];
		this.elements = createSizedArray(this.layers.length);
		this.initElement(data, globalData, comp);
		this.tm = data.tm ? PropertyFactory.getProp(this,data.tm,0,globalData.frameRate, this) : {_placeholder:true};
	}

	extendPrototype([CanvasRenderer, ICompElement, CVBaseElement], CVCompElement);

	CVCompElement.prototype.renderInnerContent = function() {
		var ctx = this.canvasContext;
		ctx.beginPath();
		ctx.moveTo(0, 0);
		ctx.lineTo(this.data.w, 0);
		ctx.lineTo(this.data.w, this.data.h);
		ctx.lineTo(0, this.data.h);
		ctx.lineTo(0, 0);
		ctx.clip();
		var i,len = this.layers.length;
		for( i = len - 1; i >= 0; i -= 1 ){
			if(this.completeLayers || this.elements[i]){
				this.elements[i].renderFrame();
			}
		}
	};

	CVCompElement.prototype.destroy = function(){
		var i,len = this.layers.length;
		for( i = len - 1; i >= 0; i -= 1 ){
			if(this.elements[i]) {
				this.elements[i].destroy();
			}
		}
		this.layers = null;
		this.elements = null;
	};

	function CVMaskElement(data,element){
		this.data = data;
		this.element = element;
		this.masksProperties = this.data.masksProperties || [];
		this.viewData = createSizedArray(this.masksProperties.length);
		var i, len = this.masksProperties.length, hasMasks = false;
		for (i = 0; i < len; i++) {
			if(this.masksProperties[i].mode !== 'n'){
				hasMasks = true;
			}
			this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element,this.masksProperties[i],3);
		}
		this.hasMasks = hasMasks;
		if(hasMasks) {
			this.element.addRenderableComponent(this);
		}
	}

	CVMaskElement.prototype.renderFrame = function () {
		if(!this.hasMasks){
			return;
		}
		var transform = this.element.finalTransform.mat;
		var ctx = this.element.canvasContext;
		var i, len = this.masksProperties.length;
		var pt,pts,data;
		ctx.beginPath();
		for (i = 0; i < len; i++) {
			if(this.masksProperties[i].mode !== 'n'){
				if (this.masksProperties[i].inv) {
					ctx.moveTo(0, 0);
					ctx.lineTo(this.element.globalData.compSize.w, 0);
					ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);
					ctx.lineTo(0, this.element.globalData.compSize.h);
					ctx.lineTo(0, 0);
				}
				data = this.viewData[i].v;
				pt = transform.applyToPointArray(data.v[0][0],data.v[0][1],0);
				ctx.moveTo(pt[0], pt[1]);
				var j, jLen = data._length;
				for (j = 1; j < jLen; j++) {
					pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);
					ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);
				}
				pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);
				ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);
			}
		}
		this.element.globalData.renderer.save(true);
		ctx.clip();
	};

	CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;

	CVMaskElement.prototype.destroy = function(){
		this.element = null;
	};
	function CVShapeElement(data, globalData, comp) {
		this.shapes = [];
		this.shapesData = data.shapes;
		this.stylesList = [];
		this.itemsData = [];
		this.prevViewData = [];
		this.shapeModifiers = [];
		this.processedElements = [];
		this.transformsManager = new ShapeTransformManager();
		this.initElement(data, globalData, comp);
	}

	extendPrototype([BaseElement,TransformElement,CVBaseElement,IShapeElement,HierarchyElement,FrameElement,RenderableElement], CVShapeElement);

	CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;

	CVShapeElement.prototype.transformHelper = {opacity:1,_opMdf:false};

	CVShapeElement.prototype.dashResetter = [];

	CVShapeElement.prototype.createContent = function(){
		this.searchShapes(this.shapesData,this.itemsData,this.prevViewData, true, []);
	};

	CVShapeElement.prototype.createStyleElement = function(data, transforms) {
		var styleElem = {
			data: data,
			type: data.ty,
			preTransforms: this.transformsManager.addTransformSequence(transforms),
			transforms: [],
			elements: [],
			closed: data.hd === true
		};
		var elementData = {};
		if(data.ty == 'fl' || data.ty == 'st'){
			elementData.c = PropertyFactory.getProp(this,data.c,1,255,this);
			if(!elementData.c.k){
				styleElem.co = 'rgb('+bm_floor(elementData.c.v[0])+','+bm_floor(elementData.c.v[1])+','+bm_floor(elementData.c.v[2])+')';
			}
		} else if (data.ty === 'gf' || data.ty === 'gs') {
			elementData.s = PropertyFactory.getProp(this,data.s,1,null,this);
			elementData.e = PropertyFactory.getProp(this,data.e,1,null,this);
			elementData.h = PropertyFactory.getProp(this,data.h||{k:0},0,0.01,this);
			elementData.a = PropertyFactory.getProp(this,data.a||{k:0},0,degToRads,this);
			elementData.g = new GradientProperty(this,data.g,this);
		}
		elementData.o = PropertyFactory.getProp(this,data.o,0,0.01,this);
		if(data.ty == 'st' || data.ty == 'gs') {
			styleElem.lc = this.lcEnum[data.lc] || 'round';
			styleElem.lj = this.ljEnum[data.lj] || 'round';
			if(data.lj == 1) {
				styleElem.ml = data.ml;
			}
			elementData.w = PropertyFactory.getProp(this,data.w,0,null,this);
			if(!elementData.w.k){
				styleElem.wi = elementData.w.v;
			}
			if(data.d){
				var d = new DashProperty(this,data.d,'canvas', this);
				elementData.d = d;
				if(!elementData.d.k){
					styleElem.da = elementData.d.dashArray;
					styleElem.do = elementData.d.dashoffset[0];
				}
			}
		} else {
			styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';
		}
		this.stylesList.push(styleElem);
		elementData.style = styleElem;
		return elementData;
	};

	CVShapeElement.prototype.createGroupElement = function(data) {
		var elementData = {
			it: [],
			prevViewData: []
		};
		return elementData;
	};

	CVShapeElement.prototype.createTransformElement = function(data) {
		var elementData = {
			transform : {
				opacity: 1,
				_opMdf:false,
				key: this.transformsManager.getNewKey(),
				op: PropertyFactory.getProp(this,data.o,0,0.01,this),
				mProps: TransformPropertyFactory.getTransformProperty(this,data,this)
			}
		};
		return elementData;
	};

	CVShapeElement.prototype.createShapeElement = function(data) {
		var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);

		this.shapes.push(elementData);
		this.addShapeToModifiers(elementData);
		return elementData;
	};

	CVShapeElement.prototype.reloadShapes = function() {
		this._isFirstFrame = true;
		var i, len = this.itemsData.length;
		for (i = 0; i < len; i += 1) {
			this.prevViewData[i] = this.itemsData[i];
		}
		this.searchShapes(this.shapesData,this.itemsData,this.prevViewData, true, []);
		len = this.dynamicProperties.length;
		for (i = 0; i < len; i += 1) {
			this.dynamicProperties[i].getValue();
		}
		this.renderModifiers();
		this.transformsManager.processSequences(this._isFirstFrame);
	};

	CVShapeElement.prototype.addTransformToStyleList = function(transform) {
		var i, len = this.stylesList.length;
		for (i = 0; i < len; i += 1) {
			if(!this.stylesList[i].closed) {
				this.stylesList[i].transforms.push(transform);
			}
		}
	}

	CVShapeElement.prototype.removeTransformFromStyleList = function() {
		var i, len = this.stylesList.length;
		for (i = 0; i < len; i += 1) {
			if(!this.stylesList[i].closed) {
				this.stylesList[i].transforms.pop();
			}
		}
	}

	CVShapeElement.prototype.closeStyles = function(styles) {
		var i, len = styles.length, j, jLen;
		for (i = 0; i < len; i += 1) {
			styles[i].closed = true;
		}
	}

	CVShapeElement.prototype.searchShapes = function(arr,itemsData, prevViewData, shouldRender, transforms){
		var i, len = arr.length - 1;
		var j, jLen;
		var ownStyles = [], ownModifiers = [], processedPos, modifier, currentTransform;
		var ownTransforms = [].concat(transforms);
		for(i=len;i>=0;i-=1){
			processedPos = this.searchProcessedElement(arr[i]);
			if(!processedPos){
				arr[i]._shouldRender = shouldRender;
			} else {
				itemsData[i] = prevViewData[processedPos - 1];
			}
			if(arr[i].ty == 'fl' || arr[i].ty == 'st'|| arr[i].ty == 'gf'|| arr[i].ty == 'gs'){
				if(!processedPos){
					itemsData[i] = this.createStyleElement(arr[i], ownTransforms);
				} else {
					itemsData[i].style.closed = false;
				}

				ownStyles.push(itemsData[i].style);
			}else if(arr[i].ty == 'gr'){
				if(!processedPos){
					itemsData[i] = this.createGroupElement(arr[i]);
				} else {
					jLen = itemsData[i].it.length;
					for(j=0;j<jLen;j+=1){
						itemsData[i].prevViewData[j] = itemsData[i].it[j];
					}
				}
				this.searchShapes(arr[i].it,itemsData[i].it,itemsData[i].prevViewData, shouldRender, ownTransforms);
			}else if(arr[i].ty == 'tr'){
				if(!processedPos){
					currentTransform = this.createTransformElement(arr[i]);
					itemsData[i] = currentTransform;
				}
				ownTransforms.push(itemsData[i]);
				this.addTransformToStyleList(itemsData[i]);
			}else if(arr[i].ty == 'sh' || arr[i].ty == 'rc' || arr[i].ty == 'el' || arr[i].ty == 'sr'){
				if(!processedPos){
					itemsData[i] = this.createShapeElement(arr[i]);
				}

			}else if(arr[i].ty == 'tm' || arr[i].ty == 'rd'){
				if(!processedPos){
					modifier = ShapeModifiers.getModifier(arr[i].ty);
					modifier.init(this,arr[i]);
					itemsData[i] = modifier;
					this.shapeModifiers.push(modifier);
				} else {
					modifier = itemsData[i];
					modifier.closed = false;
				}
				ownModifiers.push(modifier);
			} else if(arr[i].ty == 'rp'){
				if(!processedPos){
					modifier = ShapeModifiers.getModifier(arr[i].ty);
					itemsData[i] = modifier;
					modifier.init(this,arr,i,itemsData);
					this.shapeModifiers.push(modifier);
					shouldRender = false;
				}else{
					modifier = itemsData[i];
					modifier.closed = true;
				}
				ownModifiers.push(modifier);
			}
			this.addProcessedElement(arr[i], i + 1);
		}
		this.removeTransformFromStyleList();
		this.closeStyles(ownStyles);
		len = ownModifiers.length;
		for(i=0;i<len;i+=1){
			ownModifiers[i].closed = true;
		}
	};

	CVShapeElement.prototype.renderInnerContent = function() {
		this.transformHelper.opacity = 1;
		this.transformHelper._opMdf = false;
		this.renderModifiers();
		this.transformsManager.processSequences(this._isFirstFrame);
		this.renderShape(this.transformHelper,this.shapesData,this.itemsData,true);
	};

	CVShapeElement.prototype.renderShapeTransform = function(parentTransform, groupTransform) {
		var props, groupMatrix;
		if(parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {
			groupTransform.opacity = parentTransform.opacity;
			groupTransform.opacity *= groupTransform.op.v;
			groupTransform._opMdf = true;
		}
	};

	CVShapeElement.prototype.drawLayer = function() {
		var i, len = this.stylesList.length;
		var j, jLen, k, kLen,elems,nodes, renderer = this.globalData.renderer, ctx = this.globalData.canvasContext, type, currentStyle;
		for(i=0;i<len;i+=1){
			currentStyle = this.stylesList[i];
			type = currentStyle.type;

			//Skipping style when
			//Stroke width equals 0
			//style should not be rendered (extra unused repeaters)
			//current opacity equals 0
			//global opacity equals 0
			if(((type === 'st' || type === 'gs') && currentStyle.wi === 0) || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0){
				continue;
			}
			renderer.save();
			elems = currentStyle.elements;
			if(type === 'st' || type === 'gs'){
				ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;
				ctx.lineWidth = currentStyle.wi;
				ctx.lineCap = currentStyle.lc;
				ctx.lineJoin = currentStyle.lj;
				ctx.miterLimit = currentStyle.ml || 0;
			} else {
				ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;
			}
			renderer.ctxOpacity(currentStyle.coOp);
			if(type !== 'st' && type !== 'gs'){
				ctx.beginPath();
			}
			renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);
			jLen = elems.length;
			for(j=0;j<jLen;j+=1){
				if(type === 'st' || type === 'gs'){
					ctx.beginPath();
					if(currentStyle.da){
						ctx.setLineDash(currentStyle.da);
						ctx.lineDashOffset = currentStyle.do;
					}
				}
				nodes = elems[j].trNodes;
				kLen = nodes.length;

				for(k=0;k<kLen;k+=1){
					if(nodes[k].t == 'm'){
						ctx.moveTo(nodes[k].p[0],nodes[k].p[1]);
					}else if(nodes[k].t == 'c'){
						ctx.bezierCurveTo(nodes[k].pts[0],nodes[k].pts[1],nodes[k].pts[2],nodes[k].pts[3],nodes[k].pts[4],nodes[k].pts[5]);
					}else{
						ctx.closePath();
					}
				}
				if(type === 'st' || type === 'gs'){
					ctx.stroke();
					if(currentStyle.da){
						ctx.setLineDash(this.dashResetter);
					}
				}
			}
			if(type !== 'st' && type !== 'gs'){
				ctx.fill(currentStyle.r);
			}
			renderer.restore();
		}
	};

	CVShapeElement.prototype.renderShape = function(parentTransform,items,data,isMain){
		var i, len = items.length - 1;
		var groupTransform;
		groupTransform = parentTransform;
		for(i=len;i>=0;i-=1){
			if(items[i].ty == 'tr'){
				groupTransform = data[i].transform;
				this.renderShapeTransform(parentTransform, groupTransform);
			}else if(items[i].ty == 'sh' || items[i].ty == 'el' || items[i].ty == 'rc' || items[i].ty == 'sr'){
				this.renderPath(items[i],data[i]);
			}else if(items[i].ty == 'fl'){
				this.renderFill(items[i],data[i],groupTransform);
			}else if(items[i].ty == 'st'){
				this.renderStroke(items[i],data[i],groupTransform);
			}else if(items[i].ty == 'gf' || items[i].ty == 'gs'){
				this.renderGradientFill(items[i],data[i],groupTransform);
			}else if(items[i].ty == 'gr'){
				this.renderShape(groupTransform,items[i].it,data[i].it);
			}else if(items[i].ty == 'tm'){
				//
			}
		}
		if(isMain){
			this.drawLayer();
		}

	};

	CVShapeElement.prototype.renderStyledShape = function(styledShape, shape){
		if(this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {
			var shapeNodes = styledShape.trNodes;
			var paths = shape.paths;
			var i, len, j, jLen = paths._length;
			shapeNodes.length = 0;
			var groupTransformMat = styledShape.transforms.finalTransform;
			for (j = 0; j < jLen; j += 1) {
				var pathNodes = paths.shapes[j];
				if(pathNodes && pathNodes.v){
					len = pathNodes._length;
					for (i = 1; i < len; i += 1) {
						if (i === 1) {
							shapeNodes.push({
								t: 'm',
								p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)
							});
						}
						shapeNodes.push({
							t: 'c',
							pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])
						});
					}
					if (len === 1) {
						shapeNodes.push({
							t: 'm',
							p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)
						});
					}
					if (pathNodes.c && len) {
						shapeNodes.push({
							t: 'c',
							pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])
						});
						shapeNodes.push({
							t: 'z'
						});
					}
				}
			}
			styledShape.trNodes = shapeNodes;
		}
	}

	CVShapeElement.prototype.renderPath = function(pathData,itemData){
		if(pathData.hd !== true && pathData._shouldRender) {
			var i, len = itemData.styledShapes.length;
			for (i = 0; i < len; i += 1) {
				this.renderStyledShape(itemData.styledShapes[i], itemData.sh);
			}
		}
	};

	CVShapeElement.prototype.renderFill = function(styleData,itemData, groupTransform){
		var styleElem = itemData.style;

		if (itemData.c._mdf || this._isFirstFrame) {
			styleElem.co = 'rgb('
				+ bm_floor(itemData.c.v[0]) + ','
				+ bm_floor(itemData.c.v[1]) + ','
				+ bm_floor(itemData.c.v[2]) + ')';
		}
		if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {
			styleElem.coOp = itemData.o.v * groupTransform.opacity;
		}
	};

	CVShapeElement.prototype.renderGradientFill = function(styleData,itemData, groupTransform){
		var styleElem = itemData.style;
		if(!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || (styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf))) {
			var ctx = this.globalData.canvasContext;
			var grd;
			var pt1 = itemData.s.v, pt2 = itemData.e.v;
			if (styleData.t === 1) {
				grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);
			} else {
				var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));
				var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);

				var percent = itemData.h.v >= 1 ? 0.99 : itemData.h.v <= -1 ? -0.99: itemData.h.v;
				var dist = rad * percent;
				var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];
				var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];
				var grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);
			}

			var i, len = styleData.g.p;
			var cValues = itemData.g.c;
			var opacity = 1;

			for (i = 0; i < len; i += 1){
				if(itemData.g._hasOpacity && itemData.g._collapsable) {
					opacity = itemData.g.o[i*2 + 1];
				}
				grd.addColorStop(cValues[i * 4] / 100,'rgba('+ cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ','+cValues[i * 4 + 3] + ',' + opacity + ')');
			}
			styleElem.grd = grd;
		}
		styleElem.coOp = itemData.o.v*groupTransform.opacity;

	};

	CVShapeElement.prototype.renderStroke = function(styleData,itemData, groupTransform){
		var styleElem = itemData.style;
		var d = itemData.d;
		if(d && (d._mdf  || this._isFirstFrame)){
			styleElem.da = d.dashArray;
			styleElem.do = d.dashoffset[0];
		}
		if(itemData.c._mdf || this._isFirstFrame){
			styleElem.co = 'rgb('+bm_floor(itemData.c.v[0])+','+bm_floor(itemData.c.v[1])+','+bm_floor(itemData.c.v[2])+')';
		}
		if(itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame){
			styleElem.coOp = itemData.o.v*groupTransform.opacity;
		}
		if(itemData.w._mdf || this._isFirstFrame){
			styleElem.wi = itemData.w.v;
		}
	};


	CVShapeElement.prototype.destroy = function(){
		this.shapesData = null;
		this.globalData = null;
		this.canvasContext = null;
		this.stylesList.length = 0;
		this.itemsData.length = 0;
	};


	function CVSolidElement(data, globalData, comp) {
		this.initElement(data,globalData,comp);
	}
	extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);

	CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;
	CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;

	CVSolidElement.prototype.renderInnerContent = function() {
		var ctx = this.canvasContext;
		ctx.fillStyle = this.data.sc;
		ctx.fillRect(0, 0, this.data.sw, this.data.sh);
		//
	};
	function CVTextElement(data, globalData, comp){
		this.textSpans = [];
		this.yOffset = 0;
		this.fillColorAnim = false;
		this.strokeColorAnim = false;
		this.strokeWidthAnim = false;
		this.stroke = false;
		this.fill = false;
		this.justifyOffset = 0;
		this.currentRender = null;
		this.renderType = 'canvas';
		this.values = {
			fill: 'rgba(0,0,0,0)',
			stroke: 'rgba(0,0,0,0)',
			sWidth: 0,
			fValue: ''
		};
		this.initElement(data,globalData,comp);
	}
	extendPrototype([BaseElement,TransformElement,CVBaseElement,HierarchyElement,FrameElement,RenderableElement,ITextElement], CVTextElement);

	CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');

	CVTextElement.prototype.buildNewText = function(){
		var documentData = this.textProperty.currentData;
		this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);

		var hasFill = false;
		if(documentData.fc) {
			hasFill = true;
			this.values.fill = this.buildColor(documentData.fc);
		}else{
			this.values.fill = 'rgba(0,0,0,0)';
		}
		this.fill = hasFill;
		var hasStroke = false;
		if(documentData.sc){
			hasStroke = true;
			this.values.stroke = this.buildColor(documentData.sc);
			this.values.sWidth = documentData.sw;
		}
		var fontData = this.globalData.fontManager.getFontByName(documentData.f);
		var i, len;
		var letters = documentData.l;
		var matrixHelper = this.mHelper;
		this.stroke = hasStroke;
		this.values.fValue = documentData.finalSize + 'px '+ this.globalData.fontManager.getFontByName(documentData.f).fFamily;
		len = documentData.finalText.length;
		//this.tHelper.font = this.values.fValue;
		var charData, shapeData, k, kLen, shapes, j, jLen, pathNodes, commands, pathArr, singleShape = this.data.singleShape;
		var trackingOffset = documentData.tr/1000*documentData.finalSize;
		var xPos = 0, yPos = 0, firstLine = true;
		var cnt = 0;
		for (i = 0; i < len; i += 1) {
			charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);
			shapeData = charData && charData.data || {};
			matrixHelper.reset();
			if(singleShape && letters[i].n) {
				xPos = -trackingOffset;
				yPos += documentData.yOffset;
				yPos += firstLine ? 1 : 0;
				firstLine = false;
			}

			shapes = shapeData.shapes ? shapeData.shapes[0].it : [];
			jLen = shapes.length;
			matrixHelper.scale(documentData.finalSize/100,documentData.finalSize/100);
			if(singleShape){
				this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);
			}
			commands = createSizedArray(jLen);
			for(j=0;j<jLen;j+=1){
				kLen = shapes[j].ks.k.i.length;
				pathNodes = shapes[j].ks.k;
				pathArr = [];
				for(k=1;k<kLen;k+=1){
					if(k==1){
						pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0],pathNodes.v[0][1],0),matrixHelper.applyToY(pathNodes.v[0][0],pathNodes.v[0][1],0));
					}
					pathArr.push(matrixHelper.applyToX(pathNodes.o[k-1][0],pathNodes.o[k-1][1],0),matrixHelper.applyToY(pathNodes.o[k-1][0],pathNodes.o[k-1][1],0),matrixHelper.applyToX(pathNodes.i[k][0],pathNodes.i[k][1],0),matrixHelper.applyToY(pathNodes.i[k][0],pathNodes.i[k][1],0),matrixHelper.applyToX(pathNodes.v[k][0],pathNodes.v[k][1],0),matrixHelper.applyToY(pathNodes.v[k][0],pathNodes.v[k][1],0));
				}
				pathArr.push(matrixHelper.applyToX(pathNodes.o[k-1][0],pathNodes.o[k-1][1],0),matrixHelper.applyToY(pathNodes.o[k-1][0],pathNodes.o[k-1][1],0),matrixHelper.applyToX(pathNodes.i[0][0],pathNodes.i[0][1],0),matrixHelper.applyToY(pathNodes.i[0][0],pathNodes.i[0][1],0),matrixHelper.applyToX(pathNodes.v[0][0],pathNodes.v[0][1],0),matrixHelper.applyToY(pathNodes.v[0][0],pathNodes.v[0][1],0));
				commands[j] = pathArr;
			}
			if(singleShape){
				xPos += letters[i].l;
				xPos += trackingOffset;
			}
			if(this.textSpans[cnt]){
				this.textSpans[cnt].elem = commands;
			} else {
				this.textSpans[cnt] = {elem: commands};
			}
			cnt +=1;
		}
	};

	CVTextElement.prototype.renderInnerContent = function(){
		var ctx = this.canvasContext;
		var finalMat = this.finalTransform.mat.props;
		ctx.font = this.values.fValue;
		ctx.lineCap = 'butt';
		ctx.lineJoin = 'miter';
		ctx.miterLimit = 4;

		if(!this.data.singleShape){
			this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);
		}

		var  i,len, j, jLen, k, kLen;
		var renderedLetters = this.textAnimator.renderedLetters;

		var letters = this.textProperty.currentData.l;

		len = letters.length;
		var renderedLetter;
		var lastFill = null, lastStroke = null, lastStrokeW = null, commands, pathArr;
		for(i=0;i<len;i+=1){
			if(letters[i].n){
				continue;
			}
			renderedLetter = renderedLetters[i];
			if(renderedLetter){
				this.globalData.renderer.save();
				this.globalData.renderer.ctxTransform(renderedLetter.p);
				this.globalData.renderer.ctxOpacity(renderedLetter.o);
			}
			if(this.fill){
				if(renderedLetter && renderedLetter.fc){
					if(lastFill !== renderedLetter.fc){
						lastFill = renderedLetter.fc;
						ctx.fillStyle = renderedLetter.fc;
					}
				}else if(lastFill !== this.values.fill){
					lastFill = this.values.fill;
					ctx.fillStyle = this.values.fill;
				}
				commands = this.textSpans[i].elem;
				jLen = commands.length;
				this.globalData.canvasContext.beginPath();
				for(j=0;j<jLen;j+=1) {
					pathArr = commands[j];
					kLen = pathArr.length;
					this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);
					for (k = 2; k < kLen; k += 6) {
						this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);
					}
				}
				this.globalData.canvasContext.closePath();
				this.globalData.canvasContext.fill();
				///ctx.fillText(this.textSpans[i].val,0,0);
			}
			if(this.stroke){
				if(renderedLetter && renderedLetter.sw){
					if(lastStrokeW !== renderedLetter.sw){
						lastStrokeW = renderedLetter.sw;
						ctx.lineWidth = renderedLetter.sw;
					}
				}else if(lastStrokeW !== this.values.sWidth){
					lastStrokeW = this.values.sWidth;
					ctx.lineWidth = this.values.sWidth;
				}
				if(renderedLetter && renderedLetter.sc){
					if(lastStroke !== renderedLetter.sc){
						lastStroke = renderedLetter.sc;
						ctx.strokeStyle = renderedLetter.sc;
					}
				}else if(lastStroke !== this.values.stroke){
					lastStroke = this.values.stroke;
					ctx.strokeStyle = this.values.stroke;
				}
				commands = this.textSpans[i].elem;
				jLen = commands.length;
				this.globalData.canvasContext.beginPath();
				for(j=0;j<jLen;j+=1) {
					pathArr = commands[j];
					kLen = pathArr.length;
					this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);
					for (k = 2; k < kLen; k += 6) {
						this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);
					}
				}
				this.globalData.canvasContext.closePath();
				this.globalData.canvasContext.stroke();
				///ctx.strokeText(letters[i].val,0,0);
			}
			if(renderedLetter) {
				this.globalData.renderer.restore();
			}
		}
	};
	function CVEffects() {

	}
	CVEffects.prototype.renderFrame = function(){};
	function HBaseElement(data,globalData,comp){}
	HBaseElement.prototype = {
		checkBlendMode: function(){},
		initRendererElement: function(){
			this.baseElement = createTag(this.data.tg || 'div');
			if(this.data.hasMask) {
				this.svgElement = createNS('svg');
				this.layerElement = createNS('g');
				this.maskedElement = this.layerElement;
				this.svgElement.appendChild(this.layerElement);
				this.baseElement.appendChild(this.svgElement);
			} else {
				this.layerElement = this.baseElement;
			}
			styleDiv(this.baseElement);
		},
		createContainerElements: function(){
			this.renderableEffectsManager = new CVEffects(this);
			this.transformedElement = this.baseElement;
			this.maskedElement = this.layerElement;
			if (this.data.ln) {
				this.layerElement.setAttribute('id',this.data.ln);
			}
			if (this.data.cl) {
				this.layerElement.setAttribute('class', this.data.cl);
			}
			if (this.data.bm !== 0) {
				this.setBlendMode();
			}
		},
		renderElement: function() {
			if(this.finalTransform._matMdf){
				this.transformedElement.style.transform = this.transformedElement.style.webkitTransform = this.finalTransform.mat.toCSS();
			}
			if(this.finalTransform._opMdf){
				this.transformedElement.style.opacity = this.finalTransform.mProp.o.v;
			}
		},
		renderFrame: function() {
			//If it is exported as hidden (data.hd === true) no need to render
			//If it is not visible no need to render
			if (this.data.hd || this.hidden) {
				return;
			}
			this.renderTransform();
			this.renderRenderable();
			this.renderElement();
			this.renderInnerContent();
			if (this._isFirstFrame) {
				this._isFirstFrame = false;
			}
		},
		destroy: function(){
			this.layerElement = null;
			this.transformedElement = null;
			if(this.matteElement) {
				this.matteElement = null;
			}
			if(this.maskManager) {
				this.maskManager.destroy();
				this.maskManager = null;
			}
		},
		createRenderableComponents: function(){
			this.maskManager = new MaskElement(this.data, this, this.globalData);
		},
		addEffects: function(){
		},
		setMatte: function(){}
	};
	HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;
	HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;
	HBaseElement.prototype.buildElementParenting = HybridRenderer.prototype.buildElementParenting;
	function HSolidElement(data,globalData,comp){
		this.initElement(data,globalData,comp);
	}
	extendPrototype([BaseElement,TransformElement,HBaseElement,HierarchyElement,FrameElement,RenderableDOMElement], HSolidElement);

	HSolidElement.prototype.createContent = function(){
		var rect;
		if(this.data.hasMask){
			rect = createNS('rect');
			rect.setAttribute('width',this.data.sw);
			rect.setAttribute('height',this.data.sh);
			rect.setAttribute('fill',this.data.sc);
			this.svgElement.setAttribute('width',this.data.sw);
			this.svgElement.setAttribute('height',this.data.sh);
		} else {
			rect = createTag('div');
			rect.style.width = this.data.sw + 'px';
			rect.style.height = this.data.sh + 'px';
			rect.style.backgroundColor = this.data.sc;
		}
		this.layerElement.appendChild(rect);
	};

	function HCompElement(data,globalData,comp){
		this.layers = data.layers;
		this.supports3d = !data.hasMask;
		this.completeLayers = false;
		this.pendingElements = [];
		this.elements = this.layers ? createSizedArray(this.layers.length) : [];
		this.initElement(data,globalData,comp);
		this.tm = data.tm ? PropertyFactory.getProp(this,data.tm,0,globalData.frameRate,this) : {_placeholder:true};
	}

	extendPrototype([HybridRenderer, ICompElement, HBaseElement], HCompElement);
	HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;

	HCompElement.prototype.createContainerElements = function(){
		this._createBaseContainerElements();
		//divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';
		if(this.data.hasMask){
			this.svgElement.setAttribute('width',this.data.w);
			this.svgElement.setAttribute('height',this.data.h);
			this.transformedElement = this.baseElement;
		} else {
			this.transformedElement = this.layerElement;
		}
	};

	HCompElement.prototype.addTo3dContainer = function(elem,pos) {
		var j = 0;
		var nextElement;
		while(j<pos){
			if(this.elements[j] && this.elements[j].getBaseElement){
				nextElement = this.elements[j].getBaseElement();
			}
			j += 1;
		}
		if(nextElement){
			this.layerElement.insertBefore(elem, nextElement);
		} else {
			this.layerElement.appendChild(elem);
		}
	}

	function HShapeElement(data,globalData,comp){
		//List of drawable elements
		this.shapes = [];
		// Full shape data
		this.shapesData = data.shapes;
		//List of styles that will be applied to shapes
		this.stylesList = [];
		//List of modifiers that will be applied to shapes
		this.shapeModifiers = [];
		//List of items in shape tree
		this.itemsData = [];
		//List of items in previous shape tree
		this.processedElements = [];
		// List of animated components
		this.animatedContents = [];
		this.shapesContainer = createNS('g');
		this.initElement(data,globalData,comp);
		//Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.
		// List of elements that have been created
		this.prevViewData = [];
		this.currentBBox = {
			x:999999,
			y: -999999,
			h: 0,
			w: 0
		};
	}
	extendPrototype([BaseElement,TransformElement,HSolidElement,SVGShapeElement,HBaseElement,HierarchyElement,FrameElement,RenderableElement], HShapeElement);
	HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;

	HShapeElement.prototype.createContent = function(){
		var cont;
		this.baseElement.style.fontSize = 0;
		if (this.data.hasMask) {
			this.layerElement.appendChild(this.shapesContainer);
			cont = this.svgElement;
		} else {
			cont = createNS('svg');
			var size = this.comp.data ? this.comp.data : this.globalData.compSize;
			cont.setAttribute('width',size.w);
			cont.setAttribute('height',size.h);
			cont.appendChild(this.shapesContainer);
			this.layerElement.appendChild(cont);
		}

		this.searchShapes(this.shapesData,this.itemsData,this.prevViewData,this.shapesContainer,0, [], true);
		this.filterUniqueShapes();
		this.shapeCont = cont;
	};

	HShapeElement.prototype.getTransformedPoint = function(transformers, point) {
		var i, len = transformers.length;
		for(i = 0; i < len; i += 1) {
			point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);
		}
		return point;
	}

	HShapeElement.prototype.calculateShapeBoundingBox = function(item, boundingBox) {
		var shape = item.sh.v;
		var transformers = item.transformers;
		var i, len = shape._length, vPoint, oPoint, nextIPoint, nextVPoint, bounds;
		if (len <= 1) {
			return;
		}
		for (i = 0; i < len - 1; i += 1) {
			vPoint = this.getTransformedPoint(transformers, shape.v[i]);
			oPoint = this.getTransformedPoint(transformers, shape.o[i]);
			nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);
			nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);
			this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);
		}
		if(shape.c) {
			vPoint = this.getTransformedPoint(transformers, shape.v[i]);
			oPoint = this.getTransformedPoint(transformers, shape.o[i]);
			nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);
			nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);
			this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);
		}
	}

	HShapeElement.prototype.checkBounds = function(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {
		this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);
		var bounds = this.shapeBoundingBox;
		boundingBox.x = bm_min(bounds.left, boundingBox.x);
		boundingBox.xMax = bm_max(bounds.right, boundingBox.xMax);
		boundingBox.y = bm_min(bounds.top, boundingBox.y);
		boundingBox.yMax = bm_max(bounds.bottom, boundingBox.yMax);
	}

	HShapeElement.prototype.shapeBoundingBox = {
		left:0,
		right:0,
		top:0,
		bottom:0,
	}

	HShapeElement.prototype.tempBoundingBox = {
		x:0,
		xMax:0,
		y:0,
		yMax:0,
		width:0,
		height:0
	}

	HShapeElement.prototype.getBoundsOfCurve = function(p0, p1, p2, p3) {

		var bounds = [[p0[0],p3[0]], [p0[1],p3[1]]];

		for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {

			b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];
			a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];
			c = 3 * p1[i] - 3 * p0[i];

			b = b | 0;
			a = a | 0;
			c = c | 0;

			if (a === 0) {

				if (b === 0) {
					continue;
				}

				t = -c / b;

				if (0 < t && t < 1) {
					bounds[i].push(this.calculateF(t,p0,p1,p2,p3,i));
				}
				continue;
			}

			b2ac = b * b - 4 * c * a;

			if (b2ac < 0) {
				continue;
			}

			t1 = (-b + bm_sqrt(b2ac))/(2 * a);
			if (0 < t1 && t1 < 1) bounds[i].push(this.calculateF(t1,p0,p1,p2,p3,i));

			t2 = (-b - bm_sqrt(b2ac))/(2 * a);
			if (0 < t2 && t2 < 1) bounds[i].push(this.calculateF(t2,p0,p1,p2,p3,i));

		}

		this.shapeBoundingBox.left = bm_min.apply(null, bounds[0]);
		this.shapeBoundingBox.top = bm_min.apply(null, bounds[1]);
		this.shapeBoundingBox.right = bm_max.apply(null, bounds[0]);
		this.shapeBoundingBox.bottom = bm_max.apply(null, bounds[1]);
	};

	HShapeElement.prototype.calculateF = function(t, p0, p1, p2, p3, i) {
		return bm_pow(1-t, 3) * p0[i]
			+ 3 * bm_pow(1-t, 2) * t * p1[i]
			+ 3 * (1-t) * bm_pow(t, 2) * p2[i]
			+ bm_pow(t, 3) * p3[i];
	}

	HShapeElement.prototype.calculateBoundingBox = function(itemsData, boundingBox) {
		var i, len = itemsData.length, path;
		for(i = 0; i < len; i += 1) {
			if(itemsData[i] && itemsData[i].sh) {
				this.calculateShapeBoundingBox(itemsData[i], boundingBox)
			} else if(itemsData[i] && itemsData[i].it) {
				this.calculateBoundingBox(itemsData[i].it, boundingBox)
			}
		}
	}

	HShapeElement.prototype.currentBoxContains = function(box) {
		return this.currentBBox.x <= box.x
			&& this.currentBBox.y <= box.y
			&& this.currentBBox.width + this.currentBBox.x >= box.x + box.width
			&& this.currentBBox.height + this.currentBBox.y >= box.y + box.height
	}

	HShapeElement.prototype.renderInnerContent = function() {
		this._renderShapeFrame();

		if(!this.hidden && (this._isFirstFrame || this._mdf)) {
			var tempBoundingBox = this.tempBoundingBox;
			var max = 999999;
			tempBoundingBox.x = max;
			tempBoundingBox.xMax = -max;
			tempBoundingBox.y = max;
			tempBoundingBox.yMax = -max;
			this.calculateBoundingBox(this.itemsData, tempBoundingBox);
			tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;
			tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y;
			//var tempBoundingBox = this.shapeCont.getBBox();
			if(this.currentBoxContains(tempBoundingBox)) {
				return;
			}
			var changed = false;
			if(this.currentBBox.w !== tempBoundingBox.width){
				this.currentBBox.w = tempBoundingBox.width;
				this.shapeCont.setAttribute('width',tempBoundingBox.width);
				changed = true;
			}
			if(this.currentBBox.h !== tempBoundingBox.height){
				this.currentBBox.h = tempBoundingBox.height;
				this.shapeCont.setAttribute('height',tempBoundingBox.height);
				changed = true;
			}
			if(changed  || this.currentBBox.x !== tempBoundingBox.x  || this.currentBBox.y !== tempBoundingBox.y){
				this.currentBBox.w = tempBoundingBox.width;
				this.currentBBox.h = tempBoundingBox.height;
				this.currentBBox.x = tempBoundingBox.x;
				this.currentBBox.y = tempBoundingBox.y;

				this.shapeCont.setAttribute('viewBox',this.currentBBox.x+' '+this.currentBBox.y+' '+this.currentBBox.w+' '+this.currentBBox.h);
				this.shapeCont.style.transform = this.shapeCont.style.webkitTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';
			}
		}

	};
	function HTextElement(data,globalData,comp){
		this.textSpans = [];
		this.textPaths = [];
		this.currentBBox = {
			x:999999,
			y: -999999,
			h: 0,
			w: 0
		};
		this.renderType = 'svg';
		this.isMasked = false;
		this.initElement(data,globalData,comp);

	}
	extendPrototype([BaseElement,TransformElement,HBaseElement,HierarchyElement,FrameElement,RenderableDOMElement,ITextElement], HTextElement);

	HTextElement.prototype.createContent = function(){
		this.isMasked = this.checkMasks();
		if(this.isMasked){
			this.renderType = 'svg';
			this.compW = this.comp.data.w;
			this.compH = this.comp.data.h;
			this.svgElement.setAttribute('width',this.compW);
			this.svgElement.setAttribute('height',this.compH);
			var g = createNS('g');
			this.maskedElement.appendChild(g);
			this.innerElem = g;
		} else {
			this.renderType = 'html';
			this.innerElem = this.layerElement;
		}

		this.checkParenting();

	};

	HTextElement.prototype.buildNewText = function(){
		var documentData = this.textProperty.currentData;
		this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);
		var innerElemStyle = this.innerElem.style;
		innerElemStyle.color = innerElemStyle.fill = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';
		if(documentData.sc){
			innerElemStyle.stroke = this.buildColor(documentData.sc);
			innerElemStyle.strokeWidth = documentData.sw+'px';
		}
		var fontData = this.globalData.fontManager.getFontByName(documentData.f);
		if(!this.globalData.fontManager.chars){
			innerElemStyle.fontSize = documentData.finalSize+'px';
			innerElemStyle.lineHeight = documentData.finalSize+'px';
			if(fontData.fClass){
				this.innerElem.className = fontData.fClass;
			} else {
				innerElemStyle.fontFamily = fontData.fFamily;
				var fWeight = documentData.fWeight, fStyle = documentData.fStyle;
				innerElemStyle.fontStyle = fStyle;
				innerElemStyle.fontWeight = fWeight;
			}
		}
		var i, len;

		var letters = documentData.l;
		len = letters.length;
		var tSpan,tParent,tCont;
		var matrixHelper = this.mHelper;
		var shapes, shapeStr = '';
		var cnt = 0;
		for (i = 0;i < len ;i += 1) {
			if(this.globalData.fontManager.chars){
				if(!this.textPaths[cnt]){
					tSpan = createNS('path');
					tSpan.setAttribute('stroke-linecap', 'butt');
					tSpan.setAttribute('stroke-linejoin','round');
					tSpan.setAttribute('stroke-miterlimit','4');
				} else {
					tSpan = this.textPaths[cnt];
				}
				if(!this.isMasked){
					if(this.textSpans[cnt]){
						tParent = this.textSpans[cnt];
						tCont = tParent.children[0];
					} else {

						tParent = createTag('div');
						tParent.style.lineHeight = 0;
						tCont = createNS('svg');
						tCont.appendChild(tSpan);
						styleDiv(tParent);
					}
				}
			}else{
				if(!this.isMasked){
					if(this.textSpans[cnt]){
						tParent = this.textSpans[cnt];
						tSpan = this.textPaths[cnt];
					} else {
						tParent = createTag('span');
						styleDiv(tParent);
						tSpan = createTag('span');
						styleDiv(tSpan);
						tParent.appendChild(tSpan);
					}
				} else {
					tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');
				}
			}
			//tSpan.setAttribute('visibility', 'hidden');
			if(this.globalData.fontManager.chars){
				var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);
				var shapeData;
				if(charData){
					shapeData = charData.data;
				} else {
					shapeData = null;
				}
				matrixHelper.reset();
				if(shapeData && shapeData.shapes){
					shapes = shapeData.shapes[0].it;
					matrixHelper.scale(documentData.finalSize/100,documentData.finalSize/100);
					shapeStr = this.createPathShape(matrixHelper,shapes);
					tSpan.setAttribute('d',shapeStr);
				}
				if(!this.isMasked){
					this.innerElem.appendChild(tParent);
					if(shapeData && shapeData.shapes){

						//document.body.appendChild is needed to get exact measure of shape
						document.body.appendChild(tCont);
						var boundingBox = tCont.getBBox();
						tCont.setAttribute('width',boundingBox.width + 2);
						tCont.setAttribute('height',boundingBox.height + 2);
						tCont.setAttribute('viewBox',(boundingBox.x-1)+' '+ (boundingBox.y-1)+' '+ (boundingBox.width+2)+' '+ (boundingBox.height+2));
						tCont.style.transform = tCont.style.webkitTransform = 'translate(' + (boundingBox.x-1) + 'px,' + (boundingBox.y-1) + 'px)';

						letters[i].yOffset = boundingBox.y-1;

					} else{
						tCont.setAttribute('width',1);
						tCont.setAttribute('height',1);
					}
					tParent.appendChild(tCont);
				}else{
					this.innerElem.appendChild(tSpan);
				}
			}else{
				tSpan.textContent = letters[i].val;
				tSpan.setAttributeNS("http://www.w3.org/XML/1998/namespace", "xml:space","preserve");
				if(!this.isMasked){
					this.innerElem.appendChild(tParent);
					//
					tSpan.style.transform = tSpan.style.webkitTransform = 'translate3d(0,'+ -documentData.finalSize/1.2+'px,0)';
				} else {
					this.innerElem.appendChild(tSpan);
				}
			}
			//
			if(!this.isMasked){
				this.textSpans[cnt] = tParent;
			}else{
				this.textSpans[cnt] = tSpan;
			}
			this.textSpans[cnt].style.display = 'block';
			this.textPaths[cnt] = tSpan;
			cnt += 1;
		}
		while(cnt < this.textSpans.length){
			this.textSpans[cnt].style.display = 'none';
			cnt += 1;
		}
	};

	HTextElement.prototype.renderInnerContent = function() {

		if(this.data.singleShape){
			if(!this._isFirstFrame && !this.lettersChangedFlag){
				return;
			} else {
				// Todo Benchmark if using this is better than getBBox
				if(this.isMasked && this.finalTransform._matMdf){
					this.svgElement.setAttribute('viewBox',-this.finalTransform.mProp.p.v[0]+' '+ -this.finalTransform.mProp.p.v[1]+' '+this.compW+' '+this.compH);
					this.svgElement.style.transform = this.svgElement.style.webkitTransform = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';
				}
			}
		}

		this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);
		if(!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag){
			return;
		}
		var  i,len, count = 0;
		var renderedLetters = this.textAnimator.renderedLetters;

		var letters = this.textProperty.currentData.l;

		len = letters.length;
		var renderedLetter, textSpan, textPath;
		for(i=0;i<len;i+=1){
			if(letters[i].n){
				count += 1;
				continue;
			}
			textSpan = this.textSpans[i];
			textPath = this.textPaths[i];
			renderedLetter = renderedLetters[count];
			count += 1;
			if(renderedLetter._mdf.m) {
				if(!this.isMasked){
					textSpan.style.transform = textSpan.style.webkitTransform = renderedLetter.m;
				}else{
					textSpan.setAttribute('transform',renderedLetter.m);
				}
			}
			////textSpan.setAttribute('opacity',renderedLetter.o);
			textSpan.style.opacity = renderedLetter.o;
			if(renderedLetter.sw && renderedLetter._mdf.sw){
				textPath.setAttribute('stroke-width',renderedLetter.sw);
			}
			if(renderedLetter.sc && renderedLetter._mdf.sc){
				textPath.setAttribute('stroke',renderedLetter.sc);
			}
			if(renderedLetter.fc && renderedLetter._mdf.fc){
				textPath.setAttribute('fill',renderedLetter.fc);
				textPath.style.color = renderedLetter.fc;
			}
		}

		if(this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)){
			var boundingBox = this.innerElem.getBBox();

			if(this.currentBBox.w !== boundingBox.width){
				this.currentBBox.w = boundingBox.width;
				this.svgElement.setAttribute('width',boundingBox.width);
			}
			if(this.currentBBox.h !== boundingBox.height){
				this.currentBBox.h = boundingBox.height;
				this.svgElement.setAttribute('height',boundingBox.height);
			}

			var margin = 1;
			if(this.currentBBox.w !== (boundingBox.width + margin*2) || this.currentBBox.h !== (boundingBox.height + margin*2)  || this.currentBBox.x !== (boundingBox.x - margin)  || this.currentBBox.y !== (boundingBox.y - margin)){
				this.currentBBox.w = boundingBox.width + margin*2;
				this.currentBBox.h = boundingBox.height + margin*2;
				this.currentBBox.x = boundingBox.x - margin;
				this.currentBBox.y = boundingBox.y - margin;

				this.svgElement.setAttribute('viewBox',this.currentBBox.x+' '+this.currentBBox.y+' '+this.currentBBox.w+' '+this.currentBBox.h);
				this.svgElement.style.transform = this.svgElement.style.webkitTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';
			}
		}
	};
	function HImageElement(data,globalData,comp){
		this.assetData = globalData.getAssetData(data.refId);
		this.initElement(data,globalData,comp);
	}

	extendPrototype([BaseElement,TransformElement,HBaseElement,HSolidElement,HierarchyElement,FrameElement,RenderableElement], HImageElement);


	HImageElement.prototype.createContent = function(){
		var assetPath = this.globalData.getAssetsPath(this.assetData);
		var img = new Image();

		if(this.data.hasMask){
			this.imageElem = createNS('image');
			this.imageElem.setAttribute('width',this.assetData.w+"px");
			this.imageElem.setAttribute('height',this.assetData.h+"px");
			this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink','href',assetPath);
			this.layerElement.appendChild(this.imageElem);
			this.baseElement.setAttribute('width',this.assetData.w);
			this.baseElement.setAttribute('height',this.assetData.h);
		} else {
			this.layerElement.appendChild(img);
		}
		img.src = assetPath;
		if(this.data.ln){
			this.baseElement.setAttribute('id',this.data.ln);
		}
	};
	function HCameraElement(data,globalData,comp){
		this.initFrame();
		this.initBaseData(data,globalData,comp);
		this.initHierarchy();
		var getProp = PropertyFactory.getProp;
		this.pe = getProp(this,data.pe,0,0,this);
		if(data.ks.p.s){
			this.px = getProp(this,data.ks.p.x,1,0,this);
			this.py = getProp(this,data.ks.p.y,1,0,this);
			this.pz = getProp(this,data.ks.p.z,1,0,this);
		}else{
			this.p = getProp(this,data.ks.p,1,0,this);
		}
		if(data.ks.a){
			this.a = getProp(this,data.ks.a,1,0,this);
		}
		if(data.ks.or.k.length && data.ks.or.k[0].to){
			var i,len = data.ks.or.k.length;
			for(i=0;i<len;i+=1){
				data.ks.or.k[i].to = null;
				data.ks.or.k[i].ti = null;
			}
		}
		this.or = getProp(this,data.ks.or,1,degToRads,this);
		this.or.sh = true;
		this.rx = getProp(this,data.ks.rx,0,degToRads,this);
		this.ry = getProp(this,data.ks.ry,0,degToRads,this);
		this.rz = getProp(this,data.ks.rz,0,degToRads,this);
		this.mat = new Matrix();
		this._prevMat = new Matrix();
		this._isFirstFrame = true;

		// TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.
		this.finalTransform = {
			mProp: this
		};
	}
	extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);

	HCameraElement.prototype.setup = function() {
		var i, len = this.comp.threeDElements.length, comp;
		for(i=0;i<len;i+=1){
			//[perspectiveElem,container]
			comp = this.comp.threeDElements[i];
			if(comp.type === '3d') {
				comp.perspectiveElem.style.perspective = comp.perspectiveElem.style.webkitPerspective = this.pe.v+'px';
				comp.container.style.transformOrigin = comp.container.style.mozTransformOrigin = comp.container.style.webkitTransformOrigin = "0px 0px 0px";
				comp.perspectiveElem.style.transform = comp.perspectiveElem.style.webkitTransform = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';
			}
		}
	};

	HCameraElement.prototype.createElements = function(){
	};

	HCameraElement.prototype.hide = function(){
	};

	HCameraElement.prototype.renderFrame = function(){
		var _mdf = this._isFirstFrame;
		var i, len;
		if(this.hierarchy){
			len = this.hierarchy.length;
			for(i=0;i<len;i+=1){
				_mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;
			}
		}
		if(_mdf || this.pe._mdf || (this.p && this.p._mdf) || (this.px && (this.px._mdf || this.py._mdf || this.pz._mdf)) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || (this.a && this.a._mdf)) {
			this.mat.reset();

			if(this.hierarchy){
				var mat;
				len = this.hierarchy.length - 1;
				for (i = len; i >= 0; i -= 1) {
					var mTransf = this.hierarchy[i].finalTransform.mProp;
					this.mat.translate(-mTransf.p.v[0],-mTransf.p.v[1],mTransf.p.v[2]);
					this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);
					this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);
					this.mat.scale(1/mTransf.s.v[0],1/mTransf.s.v[1],1/mTransf.s.v[2]);
					this.mat.translate(mTransf.a.v[0],mTransf.a.v[1],mTransf.a.v[2]);
				}
			}
			if (this.p) {
				this.mat.translate(-this.p.v[0],-this.p.v[1],this.p.v[2]);
			} else {
				this.mat.translate(-this.px.v,-this.py.v,this.pz.v);
			}
			if (this.a) {
				var diffVector
				if (this.p) {
					diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];
				} else {
					diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];
				}
				var mag = Math.sqrt(Math.pow(diffVector[0],2)+Math.pow(diffVector[1],2)+Math.pow(diffVector[2],2));
				//var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));
				var lookDir = [diffVector[0]/mag,diffVector[1]/mag,diffVector[2]/mag];
				var lookLengthOnXZ = Math.sqrt( lookDir[2]*lookDir[2] + lookDir[0]*lookDir[0] );
				var m_rotationX = (Math.atan2( lookDir[1], lookLengthOnXZ ));
				var m_rotationY = (Math.atan2( lookDir[0], -lookDir[2]));
				this.mat.rotateY(m_rotationY).rotateX(-m_rotationX);

			}
			this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);
			this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);
			this.mat.translate(this.globalData.compSize.w/2,this.globalData.compSize.h/2,0);
			this.mat.translate(0,0,this.pe.v);




			var hasMatrixChanged = !this._prevMat.equals(this.mat);
			if((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {
				len = this.comp.threeDElements.length;
				var comp;
				for(i=0;i<len;i+=1){
					comp = this.comp.threeDElements[i];
					if(comp.type === '3d') {
						if(hasMatrixChanged) {
							comp.container.style.transform = comp.container.style.webkitTransform = this.mat.toCSS();
						}
						if(this.pe._mdf) {
							comp.perspectiveElem.style.perspective = comp.perspectiveElem.style.webkitPerspective = this.pe.v+'px';
						}
					}
				}
				this.mat.clone(this._prevMat);
			}
		}
		this._isFirstFrame = false;
	};

	HCameraElement.prototype.prepareFrame = function(num) {
		this.prepareProperties(num, true);
	};

	HCameraElement.prototype.destroy = function(){
	};
	HCameraElement.prototype.getBaseElement = function(){return null;};
	function HEffects() {
	}
	HEffects.prototype.renderFrame = function(){};
	var animationManager = (function(){
		var moduleOb = {};
		var registeredAnimations = [];
		var initTime = 0;
		var len = 0;
		var playingAnimationsNum = 0;
		var _stopped = true;
		var _isFrozen = false;

		function removeElement(ev){
			var i = 0;
			var animItem = ev.target;
			while(i<len) {
				if (registeredAnimations[i].animation === animItem) {
					registeredAnimations.splice(i, 1);
					i -= 1;
					len -= 1;
					if(!animItem.isPaused){
						subtractPlayingCount();
					}
				}
				i += 1;
			}
		}

		function registerAnimation(element, animationData){
			if(!element){
				return null;
			}
			var i=0;
			while(i<len){
				if(registeredAnimations[i].elem == element && registeredAnimations[i].elem !== null ){
					return registeredAnimations[i].animation;
				}
				i+=1;
			}
			var animItem = new AnimationItem();
			setupAnimation(animItem, element);
			animItem.setData(element, animationData);
			return animItem;
		}

		function getRegisteredAnimations() {
			var i, len = registeredAnimations.length;
			var animations = [];
			for(i = 0; i < len; i += 1) {
				animations.push(registeredAnimations[i].animation);
			}
			return animations;
		}

		function addPlayingCount(){
			playingAnimationsNum += 1;
			activate();
		}

		function subtractPlayingCount(){
			playingAnimationsNum -= 1;
		}

		function setupAnimation(animItem, element){
			animItem.addEventListener('destroy',removeElement);
			animItem.addEventListener('_active',addPlayingCount);
			animItem.addEventListener('_idle',subtractPlayingCount);
			registeredAnimations.push({elem: element,animation:animItem});
			len += 1;
		}

		function loadAnimation(params){
			var animItem = new AnimationItem();
			setupAnimation(animItem, null);
			animItem.setParams(params);
			return animItem;
		}


		function setSpeed(val,animation){
			var i;
			for(i=0;i<len;i+=1){
				registeredAnimations[i].animation.setSpeed(val, animation);
			}
		}

		function setDirection(val, animation){
			var i;
			for(i=0;i<len;i+=1){
				registeredAnimations[i].animation.setDirection(val, animation);
			}
		}

		function play(animation){
			var i;
			for(i=0;i<len;i+=1){
				registeredAnimations[i].animation.play(animation);
			}
		}
		function resume(nowTime) {
			var elapsedTime = nowTime - initTime;
			var i;
			for(i=0;i<len;i+=1){
				registeredAnimations[i].animation.advanceTime(elapsedTime);
			}
			initTime = nowTime;
			if(playingAnimationsNum && !_isFrozen) {
				window.requestAnimationFrame(resume);
			} else {
				_stopped = true;
			}
		}

		function first(nowTime){
			initTime = nowTime;
			window.requestAnimationFrame(resume);
		}

		function pause(animation) {
			var i;
			for(i=0;i<len;i+=1){
				registeredAnimations[i].animation.pause(animation);
			}
		}

		function goToAndStop(value,isFrame,animation) {
			var i;
			for(i=0;i<len;i+=1){
				registeredAnimations[i].animation.goToAndStop(value,isFrame,animation);
			}
		}

		function stop(animation) {
			var i;
			for(i=0;i<len;i+=1){
				registeredAnimations[i].animation.stop(animation);
			}
		}

		function togglePause(animation) {
			var i;
			for(i=0;i<len;i+=1){
				registeredAnimations[i].animation.togglePause(animation);
			}
		}

		function destroy(animation) {
			var i;
			for(i=(len-1);i>=0;i-=1){
				registeredAnimations[i].animation.destroy(animation);
			}
		}

		function searchAnimations(animationData, standalone, renderer){
			var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')),
				[].slice.call(document.getElementsByClassName('bodymovin')));
			var i, len = animElements.length;
			for(i=0;i<len;i+=1){
				if(renderer){
					animElements[i].setAttribute('data-bm-type',renderer);
				}
				registerAnimation(animElements[i], animationData);
			}
			if(standalone && len === 0){
				if(!renderer){
					renderer = 'svg';
				}
				var body = document.getElementsByTagName('body')[0];
				body.innerHTML = '';
				var div = createTag('div');
				div.style.width = '100%';
				div.style.height = '100%';
				div.setAttribute('data-bm-type',renderer);
				body.appendChild(div);
				registerAnimation(div, animationData);
			}
		}

		function resize(){
			var i;
			for(i=0;i<len;i+=1){
				registeredAnimations[i].animation.resize();
			}
		}

		function activate(){
			if(!_isFrozen && playingAnimationsNum){
				if(_stopped) {
					window.requestAnimationFrame(first);
					_stopped = false;
				}
			}
		}

		function freeze() {
			_isFrozen = true;
		}

		function unfreeze() {
			_isFrozen = false;
			activate();
		}

		moduleOb.registerAnimation = registerAnimation;
		moduleOb.loadAnimation = loadAnimation;
		moduleOb.setSpeed = setSpeed;
		moduleOb.setDirection = setDirection;
		moduleOb.play = play;
		moduleOb.pause = pause;
		moduleOb.stop = stop;
		moduleOb.togglePause = togglePause;
		moduleOb.searchAnimations = searchAnimations;
		moduleOb.resize = resize;
		//moduleOb.start = start;
		moduleOb.goToAndStop = goToAndStop;
		moduleOb.destroy = destroy;
		moduleOb.freeze = freeze;
		moduleOb.unfreeze = unfreeze;
		moduleOb.getRegisteredAnimations = getRegisteredAnimations;
		return moduleOb;
	}());

	var AnimationItem = function () {
		this._cbs = [];
		this.name = '';
		this.path = '';
		this.isLoaded = false;
		this.currentFrame = 0;
		this.currentRawFrame = 0;
		this.firstFrame = 0;
		this.totalFrames = 0;
		this.frameRate = 0;
		this.frameMult = 0;
		this.playSpeed = 1;
		this.playDirection = 1;
		this.playCount = 0;
		this.animationData = {};
		this.assets = [];
		this.isPaused = true;
		this.autoplay = false;
		this.loop = true;
		this.renderer = null;
		this.animationID = createElementID();
		this.assetsPath = '';
		this.timeCompleted = 0;
		this.segmentPos = 0;
		this.subframeEnabled = subframeEnabled;
		this.segments = [];
		this._idle = true;
		this._completedLoop = false;
		this.projectInterface = ProjectInterface();
		this.imagePreloader = new ImagePreloader();
	};

	extendPrototype([BaseEvent], AnimationItem);

	AnimationItem.prototype.setParams = function(params) {
		if(params.context){
			this.context = params.context;
		}
		if(params.wrapper || params.container){
			this.wrapper = params.wrapper || params.container;
		}
		var animType = params.animType ? params.animType : params.renderer ? params.renderer : 'svg';
		switch(animType){
			case 'canvas':
				this.renderer = new CanvasRenderer(this, params.rendererSettings);
				break;
			case 'svg':
				this.renderer = new SVGRenderer(this, params.rendererSettings);
				break;
			default:
				this.renderer = new HybridRenderer(this, params.rendererSettings);
				break;
		}
		this.renderer.setProjectInterface(this.projectInterface);
		this.animType = animType;

		if(params.loop === '' || params.loop === null){
		}else if(params.loop === false){
			this.loop = false;
		}else if(params.loop === true){
			this.loop = true;
		}else{
			this.loop = parseInt(params.loop);
		}
		this.autoplay = 'autoplay' in params ? params.autoplay : true;
		this.name = params.name ? params.name :  '';
		this.autoloadSegments = params.hasOwnProperty('autoloadSegments') ? params.autoloadSegments :  true;
		this.assetsPath = params.assetsPath;
		this.initialSegment = params.initialSegment;
		if (params.animationData) {
			this.configAnimation(params.animationData);
		} else if(params.path){

			if( params.path.lastIndexOf('\\') !== -1){
				this.path = params.path.substr(0,params.path.lastIndexOf('\\')+1);
			} else {
				this.path = params.path.substr(0,params.path.lastIndexOf('/')+1);
			}
			this.fileName = params.path.substr(params.path.lastIndexOf('/')+1);
			this.fileName = this.fileName.substr(0,this.fileName.lastIndexOf('.json'));

			assetLoader.load(params.path, this.configAnimation.bind(this), function() {
				this.trigger('data_failed');
			}.bind(this));
		}

	};

	AnimationItem.prototype.setData = function (wrapper, animationData) {
		var params = {
			wrapper: wrapper,
			animationData: animationData ? (typeof animationData  === "object") ? animationData : JSON.parse(animationData) : null
		};
		var wrapperAttributes = wrapper.attributes;

		params.path = wrapperAttributes.getNamedItem('data-animation-path') ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') ? wrapperAttributes.getNamedItem('data-bm-path').value :  wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';
		params.animType = wrapperAttributes.getNamedItem('data-anim-type') ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') ? wrapperAttributes.getNamedItem('bm-type').value :  wrapperAttributes.getNamedItem('data-bm-renderer') ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : 'canvas';

		var loop = wrapperAttributes.getNamedItem('data-anim-loop') ? wrapperAttributes.getNamedItem('data-anim-loop').value :  wrapperAttributes.getNamedItem('data-bm-loop') ? wrapperAttributes.getNamedItem('data-bm-loop').value :  wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';
		if(loop === ''){
		}else if(loop === 'false'){
			params.loop = false;
		}else if(loop === 'true'){
			params.loop = true;
		}else{
			params.loop = parseInt(loop);
		}
		var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') ? wrapperAttributes.getNamedItem('data-anim-autoplay').value :  wrapperAttributes.getNamedItem('data-bm-autoplay') ? wrapperAttributes.getNamedItem('data-bm-autoplay').value :  wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;
		params.autoplay = autoplay !== "false";

		params.name = wrapperAttributes.getNamedItem('data-name') ? wrapperAttributes.getNamedItem('data-name').value :  wrapperAttributes.getNamedItem('data-bm-name') ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value :  '';
		var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') ? wrapperAttributes.getNamedItem('data-anim-prerender').value :  wrapperAttributes.getNamedItem('data-bm-prerender') ? wrapperAttributes.getNamedItem('data-bm-prerender').value :  wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';

		if(prerender === 'false'){
			params.prerender = false;
		}
		this.setParams(params);
	};

	AnimationItem.prototype.includeLayers = function(data) {
		if(data.op > this.animationData.op){
			this.animationData.op = data.op;
			this.totalFrames = Math.floor(data.op - this.animationData.ip);
		}
		var layers = this.animationData.layers;
		var i, len = layers.length;
		var newLayers = data.layers;
		var j, jLen = newLayers.length;
		for(j=0;j<jLen;j+=1){
			i = 0;
			while(i<len){
				if(layers[i].id == newLayers[j].id){
					layers[i] = newLayers[j];
					break;
				}
				i += 1;
			}
		}
		if(data.chars || data.fonts){
			this.renderer.globalData.fontManager.addChars(data.chars);
			this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);
		}
		if(data.assets){
			len = data.assets.length;
			for(i = 0; i < len; i += 1){
				this.animationData.assets.push(data.assets[i]);
			}
		}
		this.animationData.__complete = false;
		dataManager.completeData(this.animationData,this.renderer.globalData.fontManager);
		this.renderer.includeLayers(data.layers);
		if(expressionsPlugin){
			expressionsPlugin.initExpressions(this);
		}
		this.loadNextSegment();
	};

	AnimationItem.prototype.loadNextSegment = function() {
		var segments = this.animationData.segments;
		if(!segments || segments.length === 0 || !this.autoloadSegments){
			this.trigger('data_ready');
			this.timeCompleted = this.totalFrames;
			return;
		}
		var segment = segments.shift();
		this.timeCompleted = segment.time * this.frameRate;
		var segmentPath = this.path+this.fileName+'_' + this.segmentPos + '.json';
		this.segmentPos += 1;
		assetLoader.load(segmentPath, this.includeLayers.bind(this), function() {
			this.trigger('data_failed');
		}.bind(this));
	};

	AnimationItem.prototype.loadSegments = function() {
		var segments = this.animationData.segments;
		if(!segments) {
			this.timeCompleted = this.totalFrames;
		}
		this.loadNextSegment();
	};

	AnimationItem.prototype.imagesLoaded = function() {
		this.trigger('loaded_images');
		this.checkLoaded()
	}

	AnimationItem.prototype.preloadImages = function() {
		this.imagePreloader.setAssetsPath(this.assetsPath);
		this.imagePreloader.setPath(this.path);
		this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));
	}

	AnimationItem.prototype.configAnimation = function (animData) {
		if(!this.renderer){
			return;
		}
		try {
			this.animationData = animData;

			if (this.initialSegment) {
				this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);
				this.firstFrame = Math.round(this.initialSegment[0]);
			} else {
				this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);
				this.firstFrame = Math.round(this.animationData.ip);
			}
			this.renderer.configAnimation(animData);
			if(!animData.assets){
				animData.assets = [];
			}

			this.assets = this.animationData.assets;
			this.frameRate = this.animationData.fr;
			this.frameMult = this.animationData.fr / 1000;
			this.renderer.searchExtraCompositions(animData.assets);
			this.trigger('config_ready');
			this.preloadImages();
			this.loadSegments();
			this.updaFrameModifier();
			this.waitForFontsLoaded();
		} catch(error) {
			this.triggerConfigError(error);
		}
	};

	AnimationItem.prototype.waitForFontsLoaded = function(){
		if(!this.renderer) {
			return;
		}
		if(this.renderer.globalData.fontManager.loaded()){
			this.checkLoaded();
		}else{
			setTimeout(this.waitForFontsLoaded.bind(this),20);
		}
	}

	AnimationItem.prototype.checkLoaded = function () {
		if (!this.isLoaded && this.renderer.globalData.fontManager.loaded() && (this.imagePreloader.loaded() || this.renderer.rendererType !== 'canvas')) {
			this.isLoaded = true;
			dataManager.completeData(this.animationData, this.renderer.globalData.fontManager);
			if(expressionsPlugin){
				expressionsPlugin.initExpressions(this);
			}
			this.renderer.initItems();
			setTimeout(function() {
				this.trigger('DOMLoaded');
			}.bind(this), 0);
			this.gotoFrame();
			if(this.autoplay){
				this.play();
			}
		}
	};

	AnimationItem.prototype.resize = function () {
		this.renderer.updateContainerSize();
	};

	AnimationItem.prototype.setSubframe = function(flag){
		this.subframeEnabled = flag ? true : false;
	};

	AnimationItem.prototype.gotoFrame = function () {
		this.currentFrame = this.subframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame;

		if(this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted){
			this.currentFrame = this.timeCompleted;
		}
		this.trigger('enterFrame');
		this.renderFrame();
	};

	AnimationItem.prototype.renderFrame = function () {
		if(this.isLoaded === false){
			return;
		}
		try {
			this.renderer.renderFrame(this.currentFrame + this.firstFrame);
		} catch(error) {
			this.triggerRenderFrameError(error);
		}
	};

	AnimationItem.prototype.play = function (name) {
		if(name && this.name != name){
			return;
		}
		if(this.isPaused === true){
			this.isPaused = false;
			if(this._idle){
				this._idle = false;
				this.trigger('_active');
			}
		}
	};

	AnimationItem.prototype.pause = function (name) {
		if(name && this.name != name){
			return;
		}
		if(this.isPaused === false){
			this.isPaused = true;
			this._idle = true;
			this.trigger('_idle');
		}
	};

	AnimationItem.prototype.togglePause = function (name) {
		if(name && this.name != name){
			return;
		}
		if(this.isPaused === true){
			this.play();
		}else{
			this.pause();
		}
	};

	AnimationItem.prototype.stop = function (name) {
		if(name && this.name != name){
			return;
		}
		this.pause();
		this.playCount = 0;
		this._completedLoop = false;
		this.setCurrentRawFrameValue(0);
	};

	AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {
		if(name && this.name != name){
			return;
		}
		if(isFrame){
			this.setCurrentRawFrameValue(value);
		}else{
			this.setCurrentRawFrameValue(value * this.frameModifier);
		}
		this.pause();
	};

	AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {
		this.goToAndStop(value, isFrame, name);
		this.play();
	};

	AnimationItem.prototype.advanceTime = function (value) {
		if (this.isPaused === true || this.isLoaded === false) {
			return;
		}
		var nextValue = this.currentRawFrame + value * this.frameModifier;
		var _isComplete = false;
		// Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.
		// If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.
		if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {
			if (!this.loop || this.playCount === this.loop) {
				if (!this.checkSegments(nextValue >  this.totalFrames ? nextValue % this.totalFrames : 0)) {
					_isComplete = true;
					nextValue = this.totalFrames - 1;
				}
			} else if (nextValue >= this.totalFrames) {
				this.playCount += 1;
				if (!this.checkSegments(nextValue % this.totalFrames)) {
					this.setCurrentRawFrameValue(nextValue % this.totalFrames);
					this._completedLoop = true;
					this.trigger('loopComplete');
				}
			} else {
				this.setCurrentRawFrameValue(nextValue);
			}
		} else if(nextValue < 0) {
			if (!this.checkSegments(nextValue % this.totalFrames)) {
				if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {
					this.setCurrentRawFrameValue(this.totalFrames + (nextValue % this.totalFrames));
					if(!this._completedLoop) {
						this._completedLoop = true;
					} else {
						this.trigger('loopComplete');
					}
				} else {
					_isComplete = true;
					nextValue = 0;
				}
			}
		} else {
			this.setCurrentRawFrameValue(nextValue);
		}
		if (_isComplete) {
			this.setCurrentRawFrameValue(nextValue);
			this.pause();
			this.trigger('complete');
		}
	};

	AnimationItem.prototype.adjustSegment = function(arr, offset){
		this.playCount = 0;
		if(arr[1] < arr[0]){
			if(this.frameModifier > 0){
				if(this.playSpeed < 0){
					this.setSpeed(-this.playSpeed);
				} else {
					this.setDirection(-1);
				}
			}
			this.timeCompleted = this.totalFrames = arr[0] - arr[1];
			this.firstFrame = arr[1];
			this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);
		} else if(arr[1] > arr[0]){
			if(this.frameModifier < 0){
				if(this.playSpeed < 0){
					this.setSpeed(-this.playSpeed);
				} else {
					this.setDirection(1);
				}
			}
			this.timeCompleted = this.totalFrames = arr[1] - arr[0];
			this.firstFrame = arr[0];
			this.setCurrentRawFrameValue(0.001 + offset);
		}
		this.trigger('segmentStart');
	};
	AnimationItem.prototype.setSegment = function (init,end) {
		var pendingFrame = -1;
		if(this.isPaused) {
			if (this.currentRawFrame + this.firstFrame < init) {
				pendingFrame = init;
			} else if (this.currentRawFrame + this.firstFrame > end) {
				pendingFrame = end - init;
			}
		}

		this.firstFrame = init;
		this.timeCompleted = this.totalFrames = end - init;
		if(pendingFrame !== -1) {
			this.goToAndStop(pendingFrame,true);
		}
	};

	AnimationItem.prototype.playSegments = function (arr, forceFlag) {
		if (forceFlag) {
			this.segments.length = 0;
		}
		if (typeof arr[0] === 'object') {
			var i, len = arr.length;
			for (i = 0; i < len; i += 1) {
				this.segments.push(arr[i]);
			}
		} else {
			this.segments.push(arr);
		}
		if (this.segments.length && forceFlag) {
			this.adjustSegment(this.segments.shift(), 0);
		}
		if (this.isPaused) {
			this.play();
		}
	};

	AnimationItem.prototype.resetSegments = function (forceFlag) {
		this.segments.length = 0;
		this.segments.push([this.animationData.ip,this.animationData.op]);
		//this.segments.push([this.animationData.ip*this.frameRate,Math.floor(this.animationData.op - this.animationData.ip+this.animationData.ip*this.frameRate)]);
		if (forceFlag) {
			this.checkSegments(0);
		}
	};
	AnimationItem.prototype.checkSegments = function(offset) {
		if (this.segments.length) {
			this.adjustSegment(this.segments.shift(), offset);
			return true;
		}
		return false;
	};

	AnimationItem.prototype.destroy = function (name) {
		if ((name && this.name != name) || !this.renderer) {
			return;
		}
		this.renderer.destroy();
		this.imagePreloader.destroy();
		this.trigger('destroy');
		this._cbs = null;
		this.onEnterFrame = this.onLoopComplete = this.onComplete = this.onSegmentStart = this.onDestroy = null;
		this.renderer = null;
	};

	AnimationItem.prototype.setCurrentRawFrameValue = function(value){
		this.currentRawFrame = value;
		this.gotoFrame();
	};

	AnimationItem.prototype.setSpeed = function (val) {
		this.playSpeed = val;
		this.updaFrameModifier();
	};

	AnimationItem.prototype.setDirection = function (val) {
		this.playDirection = val < 0 ? -1 : 1;
		this.updaFrameModifier();
	};

	AnimationItem.prototype.updaFrameModifier = function () {
		this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;
	};

	AnimationItem.prototype.getPath = function () {
		return this.path;
	};

	AnimationItem.prototype.getAssetsPath = function (assetData) {
		var path = '';
		if(assetData.e) {
			path = assetData.p;
		} else if(this.assetsPath){
			var imagePath = assetData.p;
			if(imagePath.indexOf('images/') !== -1){
				imagePath = imagePath.split('/')[1];
			}
			path = this.assetsPath + imagePath;
		} else {
			path = this.path;
			path += assetData.u ? assetData.u : '';
			path += assetData.p;
		}
		return path;
	};

	AnimationItem.prototype.getAssetData = function (id) {
		var i = 0, len = this.assets.length;
		while (i < len) {
			if(id == this.assets[i].id){
				return this.assets[i];
			}
			i += 1;
		}
	};

	AnimationItem.prototype.hide = function () {
		this.renderer.hide();
	};

	AnimationItem.prototype.show = function () {
		this.renderer.show();
	};

	AnimationItem.prototype.getDuration = function (isFrame) {
		return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;
	};

	AnimationItem.prototype.trigger = function(name){
		if(this._cbs && this._cbs[name]){
			switch(name){
				case 'enterFrame':
					this.triggerEvent(name,new BMEnterFrameEvent(name,this.currentFrame,this.totalFrames,this.frameModifier));
					break;
				case 'loopComplete':
					this.triggerEvent(name,new BMCompleteLoopEvent(name,this.loop,this.playCount,this.frameMult));
					break;
				case 'complete':
					this.triggerEvent(name,new BMCompleteEvent(name,this.frameMult));
					break;
				case 'segmentStart':
					this.triggerEvent(name,new BMSegmentStartEvent(name,this.firstFrame,this.totalFrames));
					break;
				case 'destroy':
					this.triggerEvent(name,new BMDestroyEvent(name,this));
					break;
				default:
					this.triggerEvent(name);
			}
		}
		if(name === 'enterFrame' && this.onEnterFrame){
			this.onEnterFrame.call(this,new BMEnterFrameEvent(name,this.currentFrame,this.totalFrames,this.frameMult));
		}
		if(name === 'loopComplete' && this.onLoopComplete){
			this.onLoopComplete.call(this,new BMCompleteLoopEvent(name,this.loop,this.playCount,this.frameMult));
		}
		if(name === 'complete' && this.onComplete){
			this.onComplete.call(this,new BMCompleteEvent(name,this.frameMult));
		}
		if(name === 'segmentStart' && this.onSegmentStart){
			this.onSegmentStart.call(this,new BMSegmentStartEvent(name,this.firstFrame,this.totalFrames));
		}
		if(name === 'destroy' && this.onDestroy){
			this.onDestroy.call(this,new BMDestroyEvent(name,this));
		}
	};

	AnimationItem.prototype.triggerRenderFrameError = function(nativeError) {

		var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);
		this.triggerEvent('error', error);

		if (this.onError) {
			this.onError.call(this, error);
		}
	}

	AnimationItem.prototype.triggerConfigError = function(nativeError) {

		var error = new BMConfigErrorEvent(nativeError, this.currentFrame);
		this.triggerEvent('error', error);

		if (this.onError) {
			this.onError.call(this, error);
		}
	}
	var Expressions = (function(){
		var ob = {};
		ob.initExpressions = initExpressions;


		function initExpressions(animation){

			var stackCount = 0;
			var registers = [];

			function pushExpression() {
				stackCount += 1;
			}

			function popExpression() {
				stackCount -= 1;
				if (stackCount === 0) {
					releaseInstances();
				}
			}

			function registerExpressionProperty(expression) {
				if (registers.indexOf(expression) === -1) {
					registers.push(expression)
				}
			}

			function releaseInstances() {
				var i, len = registers.length;
				for (i = 0; i < len; i += 1) {
					registers[i].release();
				}
				registers.length = 0;
			}

			animation.renderer.compInterface = CompExpressionInterface(animation.renderer);
			animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);
			animation.renderer.globalData.pushExpression = pushExpression;
			animation.renderer.globalData.popExpression = popExpression;
			animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;
		}
		return ob;
	}());

	expressionsPlugin = Expressions;

	var ExpressionManager = (function(){
		'use strict';
		var ob = {};
		var Math = BMMath;
		var window = null;
		var document = null;

		function $bm_isInstanceOfArray(arr) {
			return arr.constructor === Array || arr.constructor === Float32Array;
		}

		function isNumerable(tOfV, v) {
			return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number;
		}

		function $bm_neg(a){
			var tOfA = typeof a;
			if(tOfA === 'number' || tOfA === 'boolean'  || a instanceof Number ){
				return -a;
			}
			if($bm_isInstanceOfArray(a)){
				var i, lenA = a.length;
				var retArr = [];
				for(i=0;i<lenA;i+=1){
					retArr[i] = -a[i];
				}
				return retArr;
			}
			if (a.propType) {
				return a.v;
			}
		}

		var easeInBez = BezierFactory.getBezierEasing(0.333,0,.833,.833, 'easeIn').get;
		var easeOutBez = BezierFactory.getBezierEasing(0.167,0.167,.667,1, 'easeOut').get;
		var easeInOutBez = BezierFactory.getBezierEasing(.33,0,.667,1, 'easeInOut').get;

		function sum(a,b) {
			var tOfA = typeof a;
			var tOfB = typeof b;
			if(tOfA === 'string' || tOfB === 'string'){
				return a + b;
			}
			if(isNumerable(tOfA, a) && isNumerable(tOfB, b)) {
				return a + b;
			}
			if($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)){
				a = a.slice(0);
				a[0] = a[0] + b;
				return a;
			}
			if(isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)){
				b = b.slice(0);
				b[0] = a + b[0];
				return b;
			}
			if($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)){

				var i = 0, lenA = a.length, lenB = b.length;
				var retArr = [];
				while(i<lenA || i < lenB){
					if((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)){
						retArr[i] = a[i] + b[i];
					}else{
						retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];
					}
					i += 1;
				}
				return retArr;
			}
			return 0;
		}
		var add = sum;

		function sub(a,b) {
			var tOfA = typeof a;
			var tOfB = typeof b;
			if(isNumerable(tOfA, a) && isNumerable(tOfB, b)) {
				if(tOfA === 'string') {
					a = parseInt(a);
				}
				if(tOfB === 'string') {
					b = parseInt(b);
				}
				return a - b;
			}
			if( $bm_isInstanceOfArray(a) && isNumerable(tOfB, b)){
				a = a.slice(0);
				a[0] = a[0] - b;
				return a;
			}
			if(isNumerable(tOfA, a) &&  $bm_isInstanceOfArray(b)){
				b = b.slice(0);
				b[0] = a - b[0];
				return b;
			}
			if($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)){
				var i = 0, lenA = a.length, lenB = b.length;
				var retArr = [];
				while(i<lenA || i < lenB){
					if((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)){
						retArr[i] = a[i] - b[i];
					}else{
						retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];
					}
					i += 1;
				}
				return retArr;
			}
			return 0;
		}

		function mul(a,b) {
			var tOfA = typeof a;
			var tOfB = typeof b;
			var arr;
			if(isNumerable(tOfA, a) && isNumerable(tOfB, b)) {
				return a * b;
			}

			var i, len;
			if($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)){
				len = a.length;
				arr = createTypedArray('float32', len);
				for(i=0;i<len;i+=1){
					arr[i] = a[i] * b;
				}
				return arr;
			}
			if(isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)){
				len = b.length;
				arr = createTypedArray('float32', len);
				for(i=0;i<len;i+=1){
					arr[i] = a * b[i];
				}
				return arr;
			}
			return 0;
		}

		function div(a,b) {
			var tOfA = typeof a;
			var tOfB = typeof b;
			var arr;
			if(isNumerable(tOfA, a) && isNumerable(tOfB, b)) {
				return a / b;
			}
			var i, len;
			if($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)){
				len = a.length;
				arr = createTypedArray('float32', len);
				for(i=0;i<len;i+=1){
					arr[i] = a[i] / b;
				}
				return arr;
			}
			if(isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)){
				len = b.length;
				arr = createTypedArray('float32', len);
				for(i=0;i<len;i+=1){
					arr[i] = a / b[i];
				}
				return arr;
			}
			return 0;
		}
		function mod(a,b) {
			if(typeof a === 'string') {
				a = parseInt(a);
			}
			if(typeof b === 'string') {
				b = parseInt(b);
			}
			return a % b;
		}
		var $bm_sum = sum;
		var $bm_sub = sub;
		var $bm_mul = mul;
		var $bm_div = div;
		var $bm_mod = mod;

		function clamp(num, min, max) {
			if(min > max){
				var mm = max;
				max = min;
				min = mm;
			}
			return Math.min(Math.max(num, min), max);
		}

		function radiansToDegrees(val) {
			return val/degToRads;
		}
		var radians_to_degrees = radiansToDegrees;

		function degreesToRadians(val) {
			return val*degToRads;
		}
		var degrees_to_radians = radiansToDegrees;

		var helperLengthArray = [0,0,0,0,0,0];

		function length(arr1, arr2) {
			if (typeof arr1 === 'number' || arr1 instanceof Number) {
				arr2 = arr2 || 0;
				return Math.abs(arr1 - arr2);
			}
			if(!arr2) {
				arr2 = helperLengthArray;
			}
			var i, len = Math.min(arr1.length, arr2.length);
			var addedLength = 0;
			for (i = 0; i < len; i += 1) {
				addedLength += Math.pow(arr2[i] - arr1[i], 2);
			}
			return Math.sqrt(addedLength);
		}

		function normalize(vec) {
			return div(vec, length(vec));
		}

		function rgbToHsl(val) {
			var r = val[0]; var g = val[1]; var b = val[2];
			var max = Math.max(r, g, b), min = Math.min(r, g, b);
			var h, s, l = (max + min) / 2;

			if(max == min){
				h = s = 0; // achromatic
			}else{
				var d = max - min;
				s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
				switch(max){
					case r: h = (g - b) / d + (g < b ? 6 : 0); break;
					case g: h = (b - r) / d + 2; break;
					case b: h = (r - g) / d + 4; break;
				}
				h /= 6;
			}

			return [h, s, l,val[3]];
		}

		function hue2rgb(p, q, t){
			if(t < 0) t += 1;
			if(t > 1) t -= 1;
			if(t < 1/6) return p + (q - p) * 6 * t;
			if(t < 1/2) return q;
			if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;
			return p;
		}

		function hslToRgb(val){
			var h = val[0];
			var s = val[1];
			var l = val[2];

			var r, g, b;

			if(s === 0){
				r = g = b = l; // achromatic
			}else{

				var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
				var p = 2 * l - q;
				r = hue2rgb(p, q, h + 1/3);
				g = hue2rgb(p, q, h);
				b = hue2rgb(p, q, h - 1/3);
			}

			return [r, g , b, val[3]];
		}

		function linear(t, tMin, tMax, value1, value2){
			if(value1 === undefined || value2 === undefined){
				value1 = tMin;
				value2 = tMax;
				tMin = 0;
				tMax = 1;
			}
			if(tMax < tMin) {
				var _tMin = tMax;
				tMax = tMin;
				tMin = _tMin;
			}
			if(t <= tMin) {
				return value1;
			}else if(t >= tMax){
				return value2;
			}
			var perc = tMax === tMin ? 0 : (t-tMin)/(tMax-tMin);
			if(!value1.length){
				return value1 + (value2-value1)*perc;
			}
			var i, len = value1.length;
			var arr = createTypedArray('float32', len);
			for(i=0;i<len;i+=1){
				arr[i] = value1[i] + (value2[i]-value1[i])*perc;
			}
			return arr;
		}
		function random(min,max){
			if(max === undefined){
				if(min === undefined){
					min = 0;
					max = 1;
				} else {
					max = min;
					min = undefined;
				}
			}
			if(max.length){
				var i, len = max.length;
				if(!min){
					min = createTypedArray('float32', len);
				}
				var arr = createTypedArray('float32', len);
				var rnd = BMMath.random();
				for(i=0;i<len;i+=1){
					arr[i] = min[i] + rnd*(max[i]-min[i]);
				}
				return arr;
			}
			if(min === undefined){
				min = 0;
			}
			var rndm = BMMath.random();
			return min + rndm*(max-min);
		}

		function createPath(points, inTangents, outTangents, closed) {
			var i, len = points.length;
			var path = shape_pool.newElement();
			path.setPathData(!!closed, len);
			var arrPlaceholder = [0,0], inVertexPoint, outVertexPoint;
			for(i = 0; i < len; i += 1) {
				inVertexPoint = (inTangents && inTangents[i]) ? inTangents[i] : arrPlaceholder;
				outVertexPoint = (outTangents && outTangents[i]) ? outTangents[i] : arrPlaceholder;
				path.setTripleAt(points[i][0],points[i][1],outVertexPoint[0] + points[i][0],outVertexPoint[1] + points[i][1],inVertexPoint[0] + points[i][0],inVertexPoint[1] + points[i][1],i,true);
			}
			return path;
		}

		function initiateExpression(elem,data,property){
			var val = data.x;
			var needsVelocity = /velocity(?![\w\d])/.test(val);
			var _needsRandom = val.indexOf('random') !== -1;
			var elemType = elem.data.ty;
			var transform,$bm_transform,content,effect;
			var thisProperty = property;
			thisProperty.valueAtTime = thisProperty.getValueAtTime;
			Object.defineProperty(thisProperty, 'value', {
				get: function() {
					return thisProperty.v
				}
			})
			elem.comp.frameDuration = 1/elem.comp.globalData.frameRate;
			elem.comp.displayStartTime = 0;
			var inPoint = elem.data.ip/elem.comp.globalData.frameRate;
			var outPoint = elem.data.op/elem.comp.globalData.frameRate;
			var width = elem.data.sw ? elem.data.sw : 0;
			var height = elem.data.sh ? elem.data.sh : 0;
			var name = elem.data.nm;
			var loopIn, loop_in, loopOut, loop_out, smooth;
			var toWorld,fromWorld,fromComp,toComp,fromCompToSurface, position, rotation, anchorPoint, scale, thisLayer, thisComp,mask,valueAtTime,velocityAtTime;
			var __expression_functions = [];
			if(data.xf) {
				var i, len = data.xf.length;
				for(i = 0; i < len; i += 1) {
					__expression_functions[i] = eval('(function(){ return ' + data.xf[i] + '}())');
				}
			}

			var scoped_bm_rt;
			var expression_function = eval('[function _expression_function(){' + val+';scoped_bm_rt=$bm_rt}' + ']')[0];
			var numKeys = property.kf ? data.k.length : 0;

			var active = !this.data || this.data.hd !== true;

			var wiggle = function wiggle(freq,amp){
				var i,j, len = this.pv.length ? this.pv.length : 1;
				var addedAmps = createTypedArray('float32', len);
				freq = 5;
				var iterations = Math.floor(time*freq);
				i = 0;
				j = 0;
				while(i<iterations){
					//var rnd = BMMath.random();
					for(j=0;j<len;j+=1){
						addedAmps[j] += -amp + amp*2*BMMath.random();
						//addedAmps[j] += -amp + amp*2*rnd;
					}
					i += 1;
				}
				//var rnd2 = BMMath.random();
				var periods = time*freq;
				var perc = periods - Math.floor(periods);
				var arr = createTypedArray('float32', len);
				if(len>1){
					for(j=0;j<len;j+=1){
						arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*BMMath.random())*perc;
						//arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;
						//arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);
					}
					return arr;
				} else {
					return this.pv + addedAmps[0] + (-amp + amp*2*BMMath.random())*perc;
				}
			}.bind(this);

			if(thisProperty.loopIn) {
				loopIn = thisProperty.loopIn.bind(thisProperty);
				loop_in = loopIn;
			}

			if(thisProperty.loopOut) {
				loopOut = thisProperty.loopOut.bind(thisProperty);
				loop_out = loopOut;
			}

			if(thisProperty.smooth) {
				smooth = thisProperty.smooth.bind(thisProperty);
			}

			function loopInDuration(type,duration){
				return loopIn(type,duration,true);
			}

			function loopOutDuration(type,duration){
				return loopOut(type,duration,true);
			}

			if(this.getValueAtTime) {
				valueAtTime = this.getValueAtTime.bind(this);
			}

			if(this.getVelocityAtTime) {
				velocityAtTime = this.getVelocityAtTime.bind(this);
			}

			var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);

			function lookAt(elem1,elem2){
				var fVec = [elem2[0]-elem1[0],elem2[1]-elem1[1],elem2[2]-elem1[2]];
				var pitch = Math.atan2(fVec[0],Math.sqrt(fVec[1]*fVec[1]+fVec[2]*fVec[2]))/degToRads;
				var yaw = -Math.atan2(fVec[1],fVec[2])/degToRads;
				return [yaw,pitch,0];
			}

			function easeOut(t, tMin, tMax, val1, val2){
				return applyEase(easeOutBez, t, tMin, tMax, val1, val2);
			}

			function easeIn(t, tMin, tMax, val1, val2){
				return applyEase(easeInBez, t, tMin, tMax, val1, val2);
			}

			function ease(t, tMin, tMax, val1, val2){
				return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);
			}

			function applyEase(fn, t, tMin, tMax, val1, val2) {
				if(val1 === undefined){
					val1 = tMin;
					val2 = tMax;
				} else {
					t = (t - tMin) / (tMax - tMin);
				}
				t = t > 1 ? 1 : t < 0 ? 0 : t;
				var mult = fn(t);
				if($bm_isInstanceOfArray(val1)) {
					var i, len = val1.length;
					var arr = createTypedArray('float32', len);
					for (i = 0; i < len; i += 1) {
						arr[i] = (val2[i] - val1[i]) * mult + val1[i];
					}
					return arr;
				} else {
					return (val2 - val1) * mult + val1;
				}
			}

			function nearestKey(time){
				var i, len = data.k.length,index,keyTime;
				if(!data.k.length || typeof(data.k[0]) === 'number'){
					index = 0;
					keyTime = 0;
				} else {
					index = -1;
					time *= elem.comp.globalData.frameRate;
					if (time < data.k[0].t) {
						index = 1;
						keyTime = data.k[0].t;
					} else {
						for(i=0;i<len-1;i+=1){
							if(time === data.k[i].t){
								index = i + 1;
								keyTime = data.k[i].t;
								break;
							}else if(time>data.k[i].t && time<data.k[i+1].t){
								if(time-data.k[i].t > data.k[i+1].t - time){
									index = i + 2;
									keyTime = data.k[i+1].t;
								} else {
									index = i + 1;
									keyTime = data.k[i].t;
								}
								break;
							}
						}
						if(index === -1){
							index = i + 1;
							keyTime = data.k[i].t;
						}
					}

				}
				var ob = {};
				ob.index = index;
				ob.time = keyTime/elem.comp.globalData.frameRate;
				return ob;
			}

			function key(ind){
				var ob, i, len;
				if(!data.k.length || typeof(data.k[0]) === 'number'){
					throw new Error('The property has no keyframe at index ' + ind);
				}
				ind -= 1;
				ob = {
					time: data.k[ind].t/elem.comp.globalData.frameRate,
					value: []
				};
				var arr = data.k[ind].hasOwnProperty('s') ? data.k[ind].s : data.k[ind - 1].e;

				len = arr.length;
				for(i=0;i<len;i+=1){
					ob[i] = arr[i];
					ob.value[i] = arr[i]
				}
				return ob;
			}

			function framesToTime(frames, fps) {
				if (!fps) {
					fps = elem.comp.globalData.frameRate;
				}
				return frames / fps;
			}

			function timeToFrames(t, fps) {
				if (!t && t !== 0) {
					t = time;
				}
				if (!fps) {
					fps = elem.comp.globalData.frameRate;
				}
				return t * fps;
			}

			function seedRandom(seed){
				BMMath.seedrandom(randSeed + seed);
			}

			function sourceRectAtTime() {
				return elem.sourceRectAtTime();
			}

			function substring(init, end) {
				if(typeof value === 'string') {
					if(end === undefined) {
						return value.substring(init)
					}
					return value.substring(init, end)
				}
				return '';
			}

			function substr(init, end) {
				if(typeof value === 'string') {
					if(end === undefined) {
						return value.substr(init)
					}
					return value.substr(init, end)
				}
				return '';
			}

			function posterizeTime(framesPerSecond) {
				time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond
				value = valueAtTime(time)
			}

			var time, velocity, value, text, textIndex, textTotal, selectorValue;
			var index = elem.data.ind;
			var hasParent = !!(elem.hierarchy && elem.hierarchy.length);
			var parent;
			var randSeed = Math.floor(Math.random()*1000000);
			var globalData = elem.globalData;
			function executeExpression(_value) {
				// globalData.pushExpression();
				value = _value;
				if (_needsRandom) {
					seedRandom(randSeed);
				}
				if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {
					return value;
				}
				if(this.propType === 'textSelector'){
					textIndex = this.textIndex;
					textTotal = this.textTotal;
					selectorValue = this.selectorValue;
				}
				if (!thisLayer) {
					text = elem.layerInterface.text;
					thisLayer = elem.layerInterface;
					thisComp = elem.comp.compInterface;
					toWorld = thisLayer.toWorld.bind(thisLayer);
					fromWorld = thisLayer.fromWorld.bind(thisLayer);
					fromComp = thisLayer.fromComp.bind(thisLayer);
					toComp = thisLayer.toComp.bind(thisLayer);
					mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;
					fromCompToSurface = fromComp;
				}
				if (!transform) {
					transform = elem.layerInterface("ADBE Transform Group");
					$bm_transform = transform;
					if(transform) {
						anchorPoint = transform.anchorPoint;
						/*position = transform.position;
                    rotation = transform.rotation;
                    scale = transform.scale;*/
					}
				}

				if (elemType === 4 && !content) {
					content = thisLayer("ADBE Root Vectors Group");
				}
				if (!effect) {
					effect = thisLayer(4);
				}
				hasParent = !!(elem.hierarchy && elem.hierarchy.length);
				if (hasParent && !parent) {
					parent = elem.hierarchy[0].layerInterface;
				}
				time = this.comp.renderedFrame/this.comp.globalData.frameRate;
				if (needsVelocity) {
					velocity = velocityAtTime(time);
				}
				expression_function();
				this.frameExpressionId = elem.globalData.frameId;


				//TODO: Check if it's possible to return on ShapeInterface the .v value
				if (scoped_bm_rt.propType === "shape") {
					scoped_bm_rt = scoped_bm_rt.v;
				}
				// globalData.popExpression();
				return scoped_bm_rt;
			}
			return executeExpression;
		}

		ob.initiateExpression = initiateExpression;
		return ob;
	}());
	var expressionHelpers = (function(){

		function searchExpressions(elem,data,prop){
			if(data.x){
				prop.k = true;
				prop.x = true;
				prop.initiateExpression = ExpressionManager.initiateExpression;
				prop.effectsSequence.push(prop.initiateExpression(elem,data,prop).bind(prop));
			}
		}

		function getValueAtTime(frameNum) {
			frameNum *= this.elem.globalData.frameRate;
			frameNum -= this.offsetTime;
			if(frameNum !== this._cachingAtTime.lastFrame) {
				this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;
				this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);
				this._cachingAtTime.lastFrame = frameNum;
			}
			return this._cachingAtTime.value;

		}

		function getSpeedAtTime(frameNum) {
			var delta = -0.01;
			var v1 = this.getValueAtTime(frameNum);
			var v2 = this.getValueAtTime(frameNum + delta);
			var speed = 0;
			if(v1.length){
				var i;
				for(i=0;i<v1.length;i+=1){
					speed += Math.pow(v2[i] - v1[i], 2);
				}
				speed = Math.sqrt(speed) * 100;
			} else {
				speed = 0;
			}
			return speed;
		}

		function getVelocityAtTime(frameNum) {
			if(this.vel !== undefined){
				return this.vel;
			}
			var delta = -0.001;
			//frameNum += this.elem.data.st;
			var v1 = this.getValueAtTime(frameNum);
			var v2 = this.getValueAtTime(frameNum + delta);
			var velocity;
			if(v1.length){
				velocity = createTypedArray('float32', v1.length);
				var i;
				for(i=0;i<v1.length;i+=1){
					//removing frameRate
					//if needed, don't add it here
					//velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);
					velocity[i] = (v2[i] - v1[i])/delta;
				}
			} else {
				velocity = (v2 - v1)/delta;
			}
			return velocity;
		}

		function getStaticValueAtTime() {
			return this.pv;
		}

		function setGroupProperty(propertyGroup){
			this.propertyGroup = propertyGroup;
		}

		return {
			searchExpressions: searchExpressions,
			getSpeedAtTime: getSpeedAtTime,
			getVelocityAtTime: getVelocityAtTime,
			getValueAtTime: getValueAtTime,
			getStaticValueAtTime: getStaticValueAtTime,
			setGroupProperty: setGroupProperty,
		}
	}());
	(function addPropertyDecorator() {

		function loopOut(type,duration,durationFlag){
			if(!this.k || !this.keyframes){
				return this.pv;
			}
			type = type ? type.toLowerCase() : '';
			var currentFrame = this.comp.renderedFrame;
			var keyframes = this.keyframes;
			var lastKeyFrame = keyframes[keyframes.length - 1].t;
			if(currentFrame<=lastKeyFrame){
				return this.pv;
			}else{
				var cycleDuration, firstKeyFrame;
				if(!durationFlag){
					if(!duration || duration > keyframes.length - 1){
						duration = keyframes.length - 1;
					}
					firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;
					cycleDuration = lastKeyFrame - firstKeyFrame;
				} else {
					if(!duration){
						cycleDuration = Math.max(0,lastKeyFrame - this.elem.data.ip);
					} else {
						cycleDuration = Math.abs(lastKeyFrame - elem.comp.globalData.frameRate*duration);
					}
					firstKeyFrame = lastKeyFrame - cycleDuration;
				}
				var i, len, ret;
				if(type === 'pingpong') {
					var iterations = Math.floor((currentFrame - firstKeyFrame)/cycleDuration);
					if(iterations % 2 !== 0){
						return this.getValueAtTime(((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration +  firstKeyFrame)) / this.comp.globalData.frameRate, 0);
					}
				} else if(type === 'offset'){
					var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);
					var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);
					var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration +  firstKeyFrame) / this.comp.globalData.frameRate, 0);
					var repeats = Math.floor((currentFrame - firstKeyFrame)/cycleDuration);
					if(this.pv.length){
						ret = new Array(initV.length);
						len = ret.length;
						for(i=0;i<len;i+=1){
							ret[i] = (endV[i]-initV[i])*repeats + current[i];
						}
						return ret;
					}
					return (endV-initV)*repeats + current;
				} else if(type === 'continue'){
					var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);
					var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);
					if(this.pv.length){
						ret = new Array(lastValue.length);
						len = ret.length;
						for(i=0;i<len;i+=1){
							ret[i] = lastValue[i] + (lastValue[i]-nextLastValue[i])*((currentFrame - lastKeyFrame)/ this.comp.globalData.frameRate)/0.0005;
						}
						return ret;
					}
					return lastValue + (lastValue-nextLastValue)*(((currentFrame - lastKeyFrame))/0.001);
				}
				return this.getValueAtTime((((currentFrame - firstKeyFrame) % cycleDuration +  firstKeyFrame)) / this.comp.globalData.frameRate, 0);
			}
		}

		function loopIn(type,duration, durationFlag) {
			if(!this.k){
				return this.pv;
			}
			type = type ? type.toLowerCase() : '';
			var currentFrame = this.comp.renderedFrame;
			var keyframes = this.keyframes;
			var firstKeyFrame = keyframes[0].t;
			if(currentFrame>=firstKeyFrame){
				return this.pv;
			}else{
				var cycleDuration, lastKeyFrame;
				if(!durationFlag){
					if(!duration || duration > keyframes.length - 1){
						duration = keyframes.length - 1;
					}
					lastKeyFrame = keyframes[duration].t;
					cycleDuration = lastKeyFrame - firstKeyFrame;
				} else {
					if(!duration){
						cycleDuration = Math.max(0,this.elem.data.op - firstKeyFrame);
					} else {
						cycleDuration = Math.abs(elem.comp.globalData.frameRate*duration);
					}
					lastKeyFrame = firstKeyFrame + cycleDuration;
				}
				var i, len, ret;
				if(type === 'pingpong') {
					var iterations = Math.floor((firstKeyFrame - currentFrame)/cycleDuration);
					if(iterations % 2 === 0){
						return this.getValueAtTime((((firstKeyFrame - currentFrame)%cycleDuration +  firstKeyFrame)) / this.comp.globalData.frameRate, 0);
					}
				} else if(type === 'offset'){
					var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);
					var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);
					var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame)%cycleDuration +  firstKeyFrame) / this.comp.globalData.frameRate, 0);
					var repeats = Math.floor((firstKeyFrame - currentFrame)/cycleDuration)+1;
					if(this.pv.length){
						ret = new Array(initV.length);
						len = ret.length;
						for(i=0;i<len;i+=1){
							ret[i] = current[i]-(endV[i]-initV[i])*repeats;
						}
						return ret;
					}
					return current-(endV-initV)*repeats;
				} else if(type === 'continue'){
					var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);
					var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);
					if(this.pv.length){
						ret = new Array(firstValue.length);
						len = ret.length;
						for(i=0;i<len;i+=1){
							ret[i] = firstValue[i] + (firstValue[i]-nextFirstValue[i])*(firstKeyFrame - currentFrame)/0.001;
						}
						return ret;
					}
					return firstValue + (firstValue-nextFirstValue)*(firstKeyFrame - currentFrame)/0.001;
				}
				return this.getValueAtTime(((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration +  firstKeyFrame)) / this.comp.globalData.frameRate, 0);
			}
		}

		function smooth(width, samples) {
			if (!this.k){
				return this.pv;
			}
			width = (width || 0.4) * 0.5;
			samples = Math.floor(samples || 5);
			if (samples <= 1) {
				return this.pv;
			}
			var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;
			var initFrame = currentTime - width;
			var endFrame = currentTime + width;
			var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;
			var i = 0, j = 0;
			var value;
			if (this.pv.length) {
				value = createTypedArray('float32', this.pv.length);
			} else {
				value = 0;
			}
			var sampleValue;
			while (i < samples) {
				sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);
				if(this.pv.length) {
					for (j = 0; j < this.pv.length; j += 1) {
						value[j] += sampleValue[j];
					}
				} else {
					value += sampleValue;
				}
				i += 1;
			}
			if(this.pv.length) {
				for (j = 0; j < this.pv.length; j += 1) {
					value[j] /= samples;
				}
			} else {
				value /= samples;
			}
			return value;
		}

		function getValueAtTime(frameNum) {
			frameNum *= this.elem.globalData.frameRate;
			frameNum -= this.offsetTime;
			if(frameNum !== this._cachingAtTime.lastFrame) {
				this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;
				this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);
				this._cachingAtTime.lastFrame = frameNum;
			}
			return this._cachingAtTime.value;

		}

		function getTransformValueAtTime(time) {
			console.warn('Transform at time not supported');
		}

		function getTransformStaticValueAtTime(time) {

		}

		var getTransformProperty = TransformPropertyFactory.getTransformProperty;
		TransformPropertyFactory.getTransformProperty = function(elem, data, container) {
			var prop = getTransformProperty(elem, data, container);
			if(prop.dynamicProperties.length) {
				prop.getValueAtTime = getTransformValueAtTime.bind(prop);
			} else {
				prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);
			}
			prop.setGroupProperty = expressionHelpers.setGroupProperty;
			return prop;
		};

		var propertyGetProp = PropertyFactory.getProp;
		PropertyFactory.getProp = function(elem,data,type, mult, container){
			var prop = propertyGetProp(elem,data,type, mult, container);
			//prop.getVelocityAtTime = getVelocityAtTime;
			//prop.loopOut = loopOut;
			//prop.loopIn = loopIn;
			if(prop.kf){
				prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);
			} else {
				prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);
			}
			prop.setGroupProperty = expressionHelpers.setGroupProperty;
			prop.loopOut = loopOut;
			prop.loopIn = loopIn;
			prop.smooth = smooth;
			prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);
			prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);
			prop.numKeys = data.a === 1 ? data.k.length : 0;
			prop.propertyIndex = data.ix;
			var value = 0;
			if(type !== 0) {
				value = createTypedArray('float32', data.a === 1 ?  data.k[0].s.length : data.k.length);
			}
			prop._cachingAtTime = {
				lastFrame: initialDefaultFrame,
				lastIndex: 0,
				value: value
			};
			expressionHelpers.searchExpressions(elem,data,prop);
			if(prop.k){
				container.addDynamicProperty(prop);
			}

			return prop;
		};

		function getShapeValueAtTime(frameNum) {
			//For now this caching object is created only when needed instead of creating it when the shape is initialized.
			if (!this._cachingAtTime) {
				this._cachingAtTime = {
					shapeValue: shape_pool.clone(this.pv),
					lastIndex: 0,
					lastTime: initialDefaultFrame
				};
			}

			frameNum *= this.elem.globalData.frameRate;
			frameNum -= this.offsetTime;
			if(frameNum !== this._cachingAtTime.lastTime) {
				this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;
				this._cachingAtTime.lastTime = frameNum;
				this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);
			}
			return this._cachingAtTime.shapeValue;
		}

		var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();
		var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();

		function ShapeExpressions(){}
		ShapeExpressions.prototype = {
			vertices: function(prop, time){
				if (this.k) {
					this.getValue();
				}
				var shapePath = this.v;
				if(time !== undefined) {
					shapePath = this.getValueAtTime(time, 0);
				}
				var i, len = shapePath._length;
				var vertices = shapePath[prop];
				var points = shapePath.v;
				var arr = createSizedArray(len);
				for(i = 0; i < len; i += 1) {
					if(prop === 'i' || prop === 'o') {
						arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];
					} else {
						arr[i] = [vertices[i][0], vertices[i][1]];
					}

				}
				return arr;
			},
			points: function(time){
				return this.vertices('v', time);
			},
			inTangents: function(time){
				return this.vertices('i', time);
			},
			outTangents: function(time){
				return this.vertices('o', time);
			},
			isClosed: function(){
				return this.v.c;
			},
			pointOnPath: function(perc, time){
				var shapePath = this.v;
				if(time !== undefined) {
					shapePath = this.getValueAtTime(time, 0);
				}
				if(!this._segmentsLength) {
					this._segmentsLength = bez.getSegmentsLength(shapePath);
				}

				var segmentsLength = this._segmentsLength;
				var lengths = segmentsLength.lengths;
				var lengthPos = segmentsLength.totalLength * perc;
				var i = 0, len = lengths.length;
				var j = 0, jLen;
				var accumulatedLength = 0, pt;
				while(i < len) {
					if(accumulatedLength + lengths[i].addedLength > lengthPos) {
						var initIndex = i;
						var endIndex = (shapePath.c && i === len - 1) ? 0 : i + 1;
						var segmentPerc = (lengthPos - accumulatedLength)/lengths[i].addedLength;
						pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);
						break;
					} else {
						accumulatedLength += lengths[i].addedLength;
					}
					i += 1;
				}
				if(!pt){
					pt = shapePath.c ? [shapePath.v[0][0],shapePath.v[0][1]]:[shapePath.v[shapePath._length-1][0],shapePath.v[shapePath._length-1][1]];
				}
				return pt;
			},
			vectorOnPath: function(perc, time, vectorType){
				//perc doesn't use triple equality because it can be a Number object as well as a primitive.
				perc = perc == 1 ? this.v.c ? 0 : 0.999 : perc;
				var pt1 = this.pointOnPath(perc, time);
				var pt2 = this.pointOnPath(perc + 0.001, time);
				var xLength = pt2[0] - pt1[0];
				var yLength = pt2[1] - pt1[1];
				var magnitude = Math.sqrt(Math.pow(xLength,2) + Math.pow(yLength,2));
				if (magnitude === 0) {
					return [0,0];
				}
				var unitVector = vectorType === 'tangent' ? [xLength/magnitude, yLength/magnitude] : [-yLength/magnitude, xLength/magnitude];
				return unitVector;
			},
			tangentOnPath: function(perc, time){
				return this.vectorOnPath(perc, time, 'tangent');
			},
			normalOnPath: function(perc, time){
				return this.vectorOnPath(perc, time, 'normal');
			},
			setGroupProperty: expressionHelpers.setGroupProperty,
			getValueAtTime: expressionHelpers.getStaticValueAtTime
		};
		extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);
		extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);
		KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;
		KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;

		var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;
		ShapePropertyFactory.getShapeProp = function(elem,data,type, arr, trims){
			var prop = propertyGetShapeProp(elem,data,type, arr, trims);
			prop.propertyIndex = data.ix;
			prop.lock = false;
			if(type === 3){
				expressionHelpers.searchExpressions(elem,data.pt,prop);
			} else if(type === 4){
				expressionHelpers.searchExpressions(elem,data.ks,prop);
			}
			if(prop.k){
				elem.addDynamicProperty(prop);
			}
			return prop;
		};
	}());
	(function addDecorator() {

		function searchExpressions(){
			if(this.data.d.x){
				this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem,this.data.d,this);
				this.addEffect(this.getExpressionValue.bind(this));
				return true;
			}
		}

		TextProperty.prototype.getExpressionValue = function(currentValue, text) {
			var newValue = this.calculateExpression(text);
			if(currentValue.t !== newValue) {
				var newData = {};
				this.copyData(newData, currentValue);
				newData.t = newValue.toString();
				newData.__complete = false;
				return newData;
			}
			return currentValue;
		}

		TextProperty.prototype.searchProperty = function(){

			var isKeyframed = this.searchKeyframes();
			var hasExpressions = this.searchExpressions();
			this.kf = isKeyframed || hasExpressions;
			return this.kf;
		};

		TextProperty.prototype.searchExpressions = searchExpressions;

	}());
	var ShapeExpressionInterface = (function(){

		function iterateElements(shapes,view, propertyGroup){
			var arr = [];
			var i, len = shapes ? shapes.length : 0;
			for(i=0;i<len;i+=1){
				if(shapes[i].ty == 'gr'){
					arr.push(groupInterfaceFactory(shapes[i],view[i],propertyGroup));
				}else if(shapes[i].ty == 'fl'){
					arr.push(fillInterfaceFactory(shapes[i],view[i],propertyGroup));
				}else if(shapes[i].ty == 'st'){
					arr.push(strokeInterfaceFactory(shapes[i],view[i],propertyGroup));
				}else if(shapes[i].ty == 'tm'){
					arr.push(trimInterfaceFactory(shapes[i],view[i],propertyGroup));
				}else if(shapes[i].ty == 'tr'){
					//arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));
				}else if(shapes[i].ty == 'el'){
					arr.push(ellipseInterfaceFactory(shapes[i],view[i],propertyGroup));
				}else if(shapes[i].ty == 'sr'){
					arr.push(starInterfaceFactory(shapes[i],view[i],propertyGroup));
				} else if(shapes[i].ty == 'sh'){
					arr.push(pathInterfaceFactory(shapes[i],view[i],propertyGroup));
				} else if(shapes[i].ty == 'rc'){
					arr.push(rectInterfaceFactory(shapes[i],view[i],propertyGroup));
				} else if(shapes[i].ty == 'rd'){
					arr.push(roundedInterfaceFactory(shapes[i],view[i],propertyGroup));
				} else if(shapes[i].ty == 'rp'){
					arr.push(repeaterInterfaceFactory(shapes[i],view[i],propertyGroup));
				}
			}
			return arr;
		}

		function contentsInterfaceFactory(shape,view, propertyGroup){
			var interfaces;
			var interfaceFunction = function _interfaceFunction(value){
				var i = 0, len = interfaces.length;
				while(i<len){
					if(interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value){
						return interfaces[i];
					}
					i+=1;
				}
				if(typeof value === 'number'){
					return interfaces[value-1];
				}
			};
			interfaceFunction.propertyGroup = function(val){
				if(val === 1){
					return interfaceFunction;
				} else{
					return propertyGroup(val-1);
				}
			};
			interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);
			interfaceFunction.numProperties = interfaces.length;
			interfaceFunction.propertyIndex = shape.cix;
			interfaceFunction._name = shape.nm;

			return interfaceFunction;
		}

		function groupInterfaceFactory(shape,view, propertyGroup){
			var interfaceFunction = function _interfaceFunction(value){
				switch(value){
					case 'ADBE Vectors Group':
					case 'Contents':
					case 2:
						return interfaceFunction.content;
					//Not necessary for now. Keeping them here in case a new case appears
					//case 'ADBE Vector Transform Group':
					//case 3:
					default:
						return interfaceFunction.transform;
				}
			};
			interfaceFunction.propertyGroup = function(val){
				if(val === 1){
					return interfaceFunction;
				} else{
					return propertyGroup(val-1);
				}
			};
			var content = contentsInterfaceFactory(shape,view,interfaceFunction.propertyGroup);
			var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1],view.it[view.it.length - 1],interfaceFunction.propertyGroup);
			interfaceFunction.content = content;
			interfaceFunction.transform = transformInterface;
			Object.defineProperty(interfaceFunction, '_name', {
				get: function(){
					return shape.nm;
				}
			});
			//interfaceFunction.content = interfaceFunction;
			interfaceFunction.numProperties = shape.np;
			interfaceFunction.propertyIndex = shape.ix;
			interfaceFunction.nm = shape.nm;
			interfaceFunction.mn = shape.mn;
			return interfaceFunction;
		}

		function fillInterfaceFactory(shape,view,propertyGroup){
			function interfaceFunction(val){
				if(val === 'Color' || val === 'color'){
					return interfaceFunction.color;
				} else if(val === 'Opacity' || val === 'opacity'){
					return interfaceFunction.opacity;
				}
			}
			Object.defineProperties(interfaceFunction, {
				'color': {
					get: ExpressionPropertyInterface(view.c)
				},
				'opacity': {
					get: ExpressionPropertyInterface(view.o)
				},
				'_name': { value: shape.nm },
				'mn': { value: shape.mn }
			});

			view.c.setGroupProperty(propertyGroup);
			view.o.setGroupProperty(propertyGroup);
			return interfaceFunction;
		}

		function strokeInterfaceFactory(shape,view,propertyGroup){
			function _propertyGroup(val){
				if(val === 1){
					return ob;
				} else{
					return propertyGroup(val-1);
				}
			}
			function _dashPropertyGroup(val){
				if(val === 1){
					return dashOb;
				} else{
					return _propertyGroup(val-1);
				}
			}
			function addPropertyToDashOb(i) {
				Object.defineProperty(dashOb, shape.d[i].nm, {
					get: ExpressionPropertyInterface(view.d.dataProps[i].p)
				});
			}
			var i, len = shape.d ? shape.d.length : 0;
			var dashOb = {};
			for (i = 0; i < len; i += 1) {
				addPropertyToDashOb(i);
				view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);
			}

			function interfaceFunction(val){
				if(val === 'Color' || val === 'color'){
					return interfaceFunction.color;
				} else if(val === 'Opacity' || val === 'opacity'){
					return interfaceFunction.opacity;
				} else if(val === 'Stroke Width' || val === 'stroke width'){
					return interfaceFunction.strokeWidth;
				}
			}
			Object.defineProperties(interfaceFunction, {
				'color': {
					get: ExpressionPropertyInterface(view.c)
				},
				'opacity': {
					get: ExpressionPropertyInterface(view.o)
				},
				'strokeWidth': {
					get: ExpressionPropertyInterface(view.w)
				},
				'dash': {
					get: function() {
						return dashOb;
					}
				},
				'_name': { value: shape.nm },
				'mn': { value: shape.mn }
			});

			view.c.setGroupProperty(_propertyGroup);
			view.o.setGroupProperty(_propertyGroup);
			view.w.setGroupProperty(_propertyGroup);
			return interfaceFunction;
		}

		function trimInterfaceFactory(shape,view,propertyGroup){
			function _propertyGroup(val){
				if(val == 1){
					return interfaceFunction;
				} else {
					return propertyGroup(--val);
				}
			}
			interfaceFunction.propertyIndex = shape.ix;

			view.s.setGroupProperty(_propertyGroup);
			view.e.setGroupProperty(_propertyGroup);
			view.o.setGroupProperty(_propertyGroup);

			function interfaceFunction(val){
				if(val === shape.e.ix || val === 'End' || val === 'end'){
					return interfaceFunction.end;
				}
				if(val === shape.s.ix){
					return interfaceFunction.start;
				}
				if(val === shape.o.ix){
					return interfaceFunction.offset;
				}
			}
			interfaceFunction.propertyIndex = shape.ix;
			interfaceFunction.propertyGroup = propertyGroup;

			Object.defineProperties(interfaceFunction, {
				'start': {
					get: ExpressionPropertyInterface(view.s)
				},
				'end': {
					get: ExpressionPropertyInterface(view.e)
				},
				'offset': {
					get: ExpressionPropertyInterface(view.o)
				},
				'_name': { value: shape.nm }
			});
			interfaceFunction.mn = shape.mn;
			return interfaceFunction;
		}

		function transformInterfaceFactory(shape,view,propertyGroup){
			function _propertyGroup(val){
				if(val == 1){
					return interfaceFunction;
				} else {
					return propertyGroup(--val);
				}
			}
			view.transform.mProps.o.setGroupProperty(_propertyGroup);
			view.transform.mProps.p.setGroupProperty(_propertyGroup);
			view.transform.mProps.a.setGroupProperty(_propertyGroup);
			view.transform.mProps.s.setGroupProperty(_propertyGroup);
			view.transform.mProps.r.setGroupProperty(_propertyGroup);
			if(view.transform.mProps.sk){
				view.transform.mProps.sk.setGroupProperty(_propertyGroup);
				view.transform.mProps.sa.setGroupProperty(_propertyGroup);
			}
			view.transform.op.setGroupProperty(_propertyGroup);

			function interfaceFunction(value){
				if(shape.a.ix === value || value === 'Anchor Point'){
					return interfaceFunction.anchorPoint;
				}
				if(shape.o.ix === value || value === 'Opacity'){
					return interfaceFunction.opacity;
				}
				if(shape.p.ix === value || value === 'Position'){
					return interfaceFunction.position;
				}
				if(shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation'){
					return interfaceFunction.rotation;
				}
				if(shape.s.ix === value || value === 'Scale'){
					return interfaceFunction.scale;
				}
				if(shape.sk && shape.sk.ix === value || value === 'Skew'){
					return interfaceFunction.skew;
				}
				if(shape.sa && shape.sa.ix === value || value === 'Skew Axis'){
					return interfaceFunction.skewAxis;
				}

			}
			Object.defineProperties(interfaceFunction, {
				'opacity': {
					get: ExpressionPropertyInterface(view.transform.mProps.o)
				},
				'position': {
					get: ExpressionPropertyInterface(view.transform.mProps.p)
				},
				'anchorPoint': {
					get: ExpressionPropertyInterface(view.transform.mProps.a)
				},
				'scale': {
					get: ExpressionPropertyInterface(view.transform.mProps.s)
				},
				'rotation': {
					get: ExpressionPropertyInterface(view.transform.mProps.r)
				},
				'skew': {
					get: ExpressionPropertyInterface(view.transform.mProps.sk)
				},
				'skewAxis': {
					get: ExpressionPropertyInterface(view.transform.mProps.sa)
				},
				'_name': { value: shape.nm }
			});
			interfaceFunction.ty = 'tr';
			interfaceFunction.mn = shape.mn;
			interfaceFunction.propertyGroup = propertyGroup;
			return interfaceFunction;
		}

		function ellipseInterfaceFactory(shape,view,propertyGroup){
			function _propertyGroup(val){
				if(val == 1){
					return interfaceFunction;
				} else {
					return propertyGroup(--val);
				}
			}
			interfaceFunction.propertyIndex = shape.ix;
			var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;
			prop.s.setGroupProperty(_propertyGroup);
			prop.p.setGroupProperty(_propertyGroup);
			function interfaceFunction(value){
				if(shape.p.ix === value){
					return interfaceFunction.position;
				}
				if(shape.s.ix === value){
					return interfaceFunction.size;
				}
			}

			Object.defineProperties(interfaceFunction, {
				'size': {
					get: ExpressionPropertyInterface(prop.s)
				},
				'position': {
					get: ExpressionPropertyInterface(prop.p)
				},
				'_name': { value: shape.nm }
			});
			interfaceFunction.mn = shape.mn;
			return interfaceFunction;
		}

		function starInterfaceFactory(shape,view,propertyGroup){
			function _propertyGroup(val){
				if(val == 1){
					return interfaceFunction;
				} else {
					return propertyGroup(--val);
				}
			}
			var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;
			interfaceFunction.propertyIndex = shape.ix;
			prop.or.setGroupProperty(_propertyGroup);
			prop.os.setGroupProperty(_propertyGroup);
			prop.pt.setGroupProperty(_propertyGroup);
			prop.p.setGroupProperty(_propertyGroup);
			prop.r.setGroupProperty(_propertyGroup);
			if(shape.ir){
				prop.ir.setGroupProperty(_propertyGroup);
				prop.is.setGroupProperty(_propertyGroup);
			}

			function interfaceFunction(value){
				if(shape.p.ix === value){
					return interfaceFunction.position;
				}
				if(shape.r.ix === value){
					return interfaceFunction.rotation;
				}
				if(shape.pt.ix === value){
					return interfaceFunction.points;
				}
				if(shape.or.ix === value || 'ADBE Vector Star Outer Radius' === value){
					return interfaceFunction.outerRadius;
				}
				if(shape.os.ix === value){
					return interfaceFunction.outerRoundness;
				}
				if(shape.ir && (shape.ir.ix === value || 'ADBE Vector Star Inner Radius' === value)){
					return interfaceFunction.innerRadius;
				}
				if(shape.is && shape.is.ix === value){
					return interfaceFunction.innerRoundness;
				}

			}

			Object.defineProperties(interfaceFunction, {
				'position': {
					get: ExpressionPropertyInterface(prop.p)
				},
				'rotation': {
					get: ExpressionPropertyInterface(prop.r)
				},
				'points': {
					get: ExpressionPropertyInterface(prop.pt)
				},
				'outerRadius': {
					get: ExpressionPropertyInterface(prop.or)
				},
				'outerRoundness': {
					get: ExpressionPropertyInterface(prop.os)
				},
				'innerRadius': {
					get: ExpressionPropertyInterface(prop.ir)
				},
				'innerRoundness': {
					get: ExpressionPropertyInterface(prop.is)
				},
				'_name': { value: shape.nm }
			});
			interfaceFunction.mn = shape.mn;
			return interfaceFunction;
		}

		function rectInterfaceFactory(shape,view,propertyGroup){
			function _propertyGroup(val){
				if(val == 1){
					return interfaceFunction;
				} else {
					return propertyGroup(--val);
				}
			}
			var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;
			interfaceFunction.propertyIndex = shape.ix;
			prop.p.setGroupProperty(_propertyGroup);
			prop.s.setGroupProperty(_propertyGroup);
			prop.r.setGroupProperty(_propertyGroup);

			function interfaceFunction(value){
				if(shape.p.ix === value){
					return interfaceFunction.position;
				}
				if(shape.r.ix === value){
					return interfaceFunction.roundness;
				}
				if(shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size'){
					return interfaceFunction.size;
				}

			}
			Object.defineProperties(interfaceFunction, {
				'position': {
					get: ExpressionPropertyInterface(prop.p)
				},
				'roundness': {
					get: ExpressionPropertyInterface(prop.r)
				},
				'size': {
					get: ExpressionPropertyInterface(prop.s)
				},
				'_name': { value: shape.nm }
			});
			interfaceFunction.mn = shape.mn;
			return interfaceFunction;
		}

		function roundedInterfaceFactory(shape,view,propertyGroup){
			function _propertyGroup(val){
				if(val == 1){
					return interfaceFunction;
				} else {
					return propertyGroup(--val);
				}
			}
			var prop = view;
			interfaceFunction.propertyIndex = shape.ix;
			prop.rd.setGroupProperty(_propertyGroup);

			function interfaceFunction(value){
				if(shape.r.ix === value || 'Round Corners 1' === value){
					return interfaceFunction.radius;
				}

			}
			Object.defineProperties(interfaceFunction, {
				'radius': {
					get: ExpressionPropertyInterface(prop.rd)
				},
				'_name': { value: shape.nm }
			});
			interfaceFunction.mn = shape.mn;
			return interfaceFunction;
		}

		function repeaterInterfaceFactory(shape,view,propertyGroup){
			function _propertyGroup(val){
				if(val == 1){
					return interfaceFunction;
				} else {
					return propertyGroup(--val);
				}
			}
			var prop = view;
			interfaceFunction.propertyIndex = shape.ix;
			prop.c.setGroupProperty(_propertyGroup);
			prop.o.setGroupProperty(_propertyGroup);

			function interfaceFunction(value){
				if(shape.c.ix === value || 'Copies' === value){
					return interfaceFunction.copies;
				} else if(shape.o.ix === value || 'Offset' === value){
					return interfaceFunction.offset;
				}

			}
			Object.defineProperties(interfaceFunction, {
				'copies': {
					get: ExpressionPropertyInterface(prop.c)
				},
				'offset': {
					get: ExpressionPropertyInterface(prop.o)
				},
				'_name': { value: shape.nm }
			});
			interfaceFunction.mn = shape.mn;
			return interfaceFunction;
		}

		function pathInterfaceFactory(shape,view,propertyGroup){
			var prop = view.sh;
			function _propertyGroup(val){
				if(val == 1){
					return interfaceFunction;
				} else {
					return propertyGroup(--val);
				}
			}
			prop.setGroupProperty(_propertyGroup);

			function interfaceFunction(val){
				if(val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2){
					return interfaceFunction.path;
				}
			}
			Object.defineProperties(interfaceFunction, {
				'path': {
					get: function(){
						if(prop.k){
							prop.getValue();
						}
						return prop;
					}
				},
				'shape': {
					get: function(){
						if(prop.k){
							prop.getValue();
						}
						return prop;
					}
				},
				'_name': { value: shape.nm },
				'ix': { value: shape.ix },
				'propertyIndex': { value: shape.ix },
				'mn': { value: shape.mn }
			});
			return interfaceFunction;
		}

		return function(shapes,view,propertyGroup) {
			var interfaces;
			function _interfaceFunction(value){
				if(typeof value === 'number'){
					return interfaces[value-1];
				} else {
					var i = 0, len = interfaces.length;
					while(i<len){
						if(interfaces[i]._name === value){
							return interfaces[i];
						}
						i+=1;
					}
				}
			}
			_interfaceFunction.propertyGroup = propertyGroup;
			interfaces = iterateElements(shapes, view, _interfaceFunction);
			_interfaceFunction.numProperties = interfaces.length;
			return _interfaceFunction;
		};
	}());

	var TextExpressionInterface = (function(){
		return function(elem){
			var _prevValue, _sourceText;
			function _thisLayerFunction(){
			}
			Object.defineProperty(_thisLayerFunction, "sourceText", {
				get: function(){
					elem.textProperty.getValue()
					var stringValue = elem.textProperty.currentData.t;
					if(stringValue !== _prevValue) {
						elem.textProperty.currentData.t = _prevValue;
						_sourceText = new String(stringValue);
						//If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive
						_sourceText.value = stringValue ? stringValue : new String(stringValue);
					}
					return _sourceText;
				}
			});
			return _thisLayerFunction;
		};
	}());
	var LayerExpressionInterface = (function (){
		function toWorld(arr, time){
			var toWorldMat = new Matrix();
			toWorldMat.reset();
			var transformMat;
			if(time) {
				//Todo implement value at time on transform properties
				//transformMat = this._elem.finalTransform.mProp.getValueAtTime(time);
				transformMat = this._elem.finalTransform.mProp;
			} else {
				transformMat = this._elem.finalTransform.mProp;
			}
			transformMat.applyToMatrix(toWorldMat);
			if(this._elem.hierarchy && this._elem.hierarchy.length){
				var i, len = this._elem.hierarchy.length;
				for(i=0;i<len;i+=1){
					this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);
				}
				return toWorldMat.applyToPointArray(arr[0],arr[1],arr[2]||0);
			}
			return toWorldMat.applyToPointArray(arr[0],arr[1],arr[2]||0);
		}
		function fromWorld(arr, time){
			var toWorldMat = new Matrix();
			toWorldMat.reset();
			var transformMat;
			if(time) {
				//Todo implement value at time on transform properties
				//transformMat = this._elem.finalTransform.mProp.getValueAtTime(time);
				transformMat = this._elem.finalTransform.mProp;
			} else {
				transformMat = this._elem.finalTransform.mProp;
			}
			transformMat.applyToMatrix(toWorldMat);
			if(this._elem.hierarchy && this._elem.hierarchy.length){
				var i, len = this._elem.hierarchy.length;
				for(i=0;i<len;i+=1){
					this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);
				}
				return toWorldMat.inversePoint(arr);
			}
			return toWorldMat.inversePoint(arr);
		}
		function fromComp(arr){
			var toWorldMat = new Matrix();
			toWorldMat.reset();
			this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);
			if(this._elem.hierarchy && this._elem.hierarchy.length){
				var i, len = this._elem.hierarchy.length;
				for(i=0;i<len;i+=1){
					this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);
				}
				return toWorldMat.inversePoint(arr);
			}
			return toWorldMat.inversePoint(arr);
		}

		function sampleImage() {
			return [1,1,1,1];
		}


		return function(elem){

			var transformInterface;

			function _registerMaskInterface(maskManager){
				_thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);
			}
			function _registerEffectsInterface(effects){
				_thisLayerFunction.effect = effects;
			}

			function _thisLayerFunction(name){
				switch(name){
					case "ADBE Root Vectors Group":
					case "Contents":
					case 2:
						return _thisLayerFunction.shapeInterface;
					case 1:
					case 6:
					case "Transform":
					case "transform":
					case "ADBE Transform Group":
						return transformInterface;
					case 4:
					case "ADBE Effect Parade":
					case "effects":
					case "Effects":
						return _thisLayerFunction.effect;
				}
			}
			_thisLayerFunction.toWorld = toWorld;
			_thisLayerFunction.fromWorld = fromWorld;
			_thisLayerFunction.toComp = toWorld;
			_thisLayerFunction.fromComp = fromComp;
			_thisLayerFunction.sampleImage = sampleImage;
			_thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);
			_thisLayerFunction._elem = elem;
			transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);
			var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');
			Object.defineProperties(_thisLayerFunction,{
				hasParent: {
					get: function(){
						return elem.hierarchy.length;
					}
				},
				parent: {
					get: function(){
						return elem.hierarchy[0].layerInterface;
					}
				},
				rotation: getDescriptor(transformInterface, 'rotation'),
				scale: getDescriptor(transformInterface, 'scale'),
				position: getDescriptor(transformInterface, 'position'),
				opacity: getDescriptor(transformInterface, 'opacity'),
				anchorPoint: anchorPointDescriptor,
				anchor_point: anchorPointDescriptor,
				transform: {
					get: function () {
						return transformInterface;
					}
				},
				active: {
					get: function(){
						return elem.isInRange;
					}
				}
			});

			_thisLayerFunction.startTime = elem.data.st;
			_thisLayerFunction.index = elem.data.ind;
			_thisLayerFunction.source = elem.data.refId;
			_thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;
			_thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;
			_thisLayerFunction.inPoint = elem.data.ip/elem.comp.globalData.frameRate;
			_thisLayerFunction.outPoint = elem.data.op/elem.comp.globalData.frameRate;
			_thisLayerFunction._name = elem.data.nm;

			_thisLayerFunction.registerMaskInterface = _registerMaskInterface;
			_thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;
			return _thisLayerFunction;
		};
	}());

	var CompExpressionInterface = (function () {
		return function(comp) {
			function _thisLayerFunction(name) {
				var i = 0, len = comp.layers.length;
				while ( i < len) {
					if (comp.layers[i].nm === name || comp.layers[i].ind === name) {
						return comp.elements[i].layerInterface;
					}
					i += 1;
				}
				return null;
				//return {active:false};
			}
			Object.defineProperty(_thisLayerFunction, "_name", { value: comp.data.nm });
			_thisLayerFunction.layer = _thisLayerFunction;
			_thisLayerFunction.pixelAspect = 1;
			_thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;
			_thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;
			_thisLayerFunction.pixelAspect = 1;
			_thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;
			_thisLayerFunction.displayStartTime = 0;
			_thisLayerFunction.numLayers = comp.layers.length;
			return _thisLayerFunction;
		};
	}());
	var TransformExpressionInterface = (function (){
		return function(transform){
			function _thisFunction(name){
				switch(name){
					case "scale":
					case "Scale":
					case "ADBE Scale":
					case 6:
						return _thisFunction.scale;
					case "rotation":
					case "Rotation":
					case "ADBE Rotation":
					case "ADBE Rotate Z":
					case 10:
						return _thisFunction.rotation;
					case "ADBE Rotate X":
						return _thisFunction.xRotation;
					case "ADBE Rotate Y":
						return _thisFunction.yRotation;
					case "position":
					case "Position":
					case "ADBE Position":
					case 2:
						return _thisFunction.position;
					case 'ADBE Position_0':
						return _thisFunction.xPosition;
					case 'ADBE Position_1':
						return _thisFunction.yPosition;
					case 'ADBE Position_2':
						return _thisFunction.zPosition;
					case "anchorPoint":
					case "AnchorPoint":
					case "Anchor Point":
					case "ADBE AnchorPoint":
					case 1:
						return _thisFunction.anchorPoint;
					case "opacity":
					case "Opacity":
					case 11:
						return _thisFunction.opacity;
				}
			}

			Object.defineProperty(_thisFunction, "rotation", {
				get: ExpressionPropertyInterface(transform.r || transform.rz)
			});

			Object.defineProperty(_thisFunction, "zRotation", {
				get: ExpressionPropertyInterface(transform.rz || transform.r)
			});

			Object.defineProperty(_thisFunction, "xRotation", {
				get: ExpressionPropertyInterface(transform.rx)
			});

			Object.defineProperty(_thisFunction, "yRotation", {
				get: ExpressionPropertyInterface(transform.ry)
			});
			Object.defineProperty(_thisFunction, "scale", {
				get: ExpressionPropertyInterface(transform.s)
			});

			if(transform.p) {
				var _transformFactory = ExpressionPropertyInterface(transform.p);
			}
			Object.defineProperty(_thisFunction, "position", {
				get: function () {
					if(transform.p) {
						return _transformFactory();
					} else {
						return [transform.px.v, transform.py.v, transform.pz ? transform.pz.v : 0];
					}
				}
			});

			Object.defineProperty(_thisFunction, "xPosition", {
				get: ExpressionPropertyInterface(transform.px)
			});

			Object.defineProperty(_thisFunction, "yPosition", {
				get: ExpressionPropertyInterface(transform.py)
			});

			Object.defineProperty(_thisFunction, "zPosition", {
				get: ExpressionPropertyInterface(transform.pz)
			});

			Object.defineProperty(_thisFunction, "anchorPoint", {
				get: ExpressionPropertyInterface(transform.a)
			});

			Object.defineProperty(_thisFunction, "opacity", {
				get: ExpressionPropertyInterface(transform.o)
			});

			Object.defineProperty(_thisFunction, "skew", {
				get: ExpressionPropertyInterface(transform.sk)
			});

			Object.defineProperty(_thisFunction, "skewAxis", {
				get: ExpressionPropertyInterface(transform.sa)
			});

			Object.defineProperty(_thisFunction, "orientation", {
				get: ExpressionPropertyInterface(transform.or)
			});

			return _thisFunction;
		};
	}());
	var ProjectInterface = (function (){

		function registerComposition(comp){
			this.compositions.push(comp);
		}

		return function(){
			function _thisProjectFunction(name){
				var i = 0, len = this.compositions.length;
				while(i<len){
					if(this.compositions[i].data && this.compositions[i].data.nm === name){
						if(this.compositions[i].prepareFrame && this.compositions[i].data.xt) {
							this.compositions[i].prepareFrame(this.currentFrame);
						}
						return this.compositions[i].compInterface;
					}
					i+=1;
				}
			}

			_thisProjectFunction.compositions = [];
			_thisProjectFunction.currentFrame = 0;

			_thisProjectFunction.registerComposition = registerComposition;



			return _thisProjectFunction;
		};
	}());
	var EffectsExpressionInterface = (function (){
		var ob = {
			createEffectsInterface: createEffectsInterface
		};

		function createEffectsInterface(elem, propertyGroup){
			if(elem.effectsManager){

				var effectElements = [];
				var effectsData = elem.data.ef;
				var i, len = elem.effectsManager.effectElements.length;
				for(i=0;i<len;i+=1){
					effectElements.push(createGroupInterface(effectsData[i],elem.effectsManager.effectElements[i],propertyGroup,elem));
				}

				return function(name){
					var effects = elem.data.ef || [], i = 0, len = effects.length;
					while(i<len) {
						if(name === effects[i].nm || name === effects[i].mn || name === effects[i].ix){
							return effectElements[i];
						}
						i += 1;
					}
				};
			}
		}

		function createGroupInterface(data,elements, propertyGroup, elem){
			var effectElements = [];
			var i, len = data.ef.length;
			for(i=0;i<len;i+=1){
				if(data.ef[i].ty === 5){
					effectElements.push(createGroupInterface(data.ef[i],elements.effectElements[i],elements.effectElements[i].propertyGroup, elem));
				} else {
					effectElements.push(createValueInterface(elements.effectElements[i],data.ef[i].ty, elem, _propertyGroup));
				}
			}

			function _propertyGroup(val) {
				if(val === 1){
					return groupInterface;
				} else{
					return propertyGroup(val-1);
				}
			}

			var groupInterface = function(name){
				var effects = data.ef, i = 0, len = effects.length;
				while(i<len) {
					if(name === effects[i].nm || name === effects[i].mn || name === effects[i].ix){
						if(effects[i].ty === 5){
							return effectElements[i];
						} else {
							return effectElements[i]();
						}
					}
					i += 1;
				}
				return effectElements[0]();
			};

			groupInterface.propertyGroup = _propertyGroup;

			if(data.mn === 'ADBE Color Control'){
				Object.defineProperty(groupInterface, 'color', {
					get: function(){
						return effectElements[0]();
					}
				});
			}
			Object.defineProperty(groupInterface, 'numProperties', {
				get: function(){
					return data.np;
				}
			});
			groupInterface.active = groupInterface.enabled = data.en !== 0;
			return groupInterface;
		}

		function createValueInterface(element, type, elem, propertyGroup){
			var expressionProperty = ExpressionPropertyInterface(element.p);
			function interfaceFunction(){
				if(type === 10){
					return elem.comp.compInterface(element.p.v);
				}
				return expressionProperty();
			}

			if(element.p.setGroupProperty) {
				element.p.setGroupProperty(propertyGroup);
			}

			return interfaceFunction;
		}

		return ob;

	}());
	var MaskManagerInterface = (function(){

		function MaskInterface(mask, data){
			this._mask = mask;
			this._data = data;
		}
		Object.defineProperty(MaskInterface.prototype, 'maskPath', {
			get: function(){
				if(this._mask.prop.k){
					this._mask.prop.getValue();
				}
				return this._mask.prop;
			}
		});
		Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {
			get: function(){
				if(this._mask.op.k){
					this._mask.op.getValue();
				}
				return this._mask.op.v * 100;
			}
		});

		var MaskManager = function(maskManager, elem){
			var _maskManager = maskManager;
			var _elem = elem;
			var _masksInterfaces = createSizedArray(maskManager.viewData.length);
			var i, len = maskManager.viewData.length;
			for(i = 0; i < len; i += 1) {
				_masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);
			}

			var maskFunction = function(name){
				i = 0;
				while(i<len){
					if(maskManager.masksProperties[i].nm === name){
						return _masksInterfaces[i];
					}
					i += 1;
				}
			};
			return maskFunction;
		};
		return MaskManager;
	}());

	var ExpressionPropertyInterface = (function() {

		var defaultUnidimensionalValue = {pv:0, v:0, mult: 1}
		var defaultMultidimensionalValue = {pv:[0,0,0], v:[0,0,0], mult: 1}

		function completeProperty(expressionValue, property, type) {
			Object.defineProperty(expressionValue, 'velocity', {
				get: function(){
					return property.getVelocityAtTime(property.comp.currentFrame);
				}
			});
			expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;
			expressionValue.key = function(pos) {
				if (!expressionValue.numKeys) {
					return 0;
				} else {
					var value = '';
					if ('s' in property.keyframes[pos-1]) {
						value = property.keyframes[pos-1].s;
					} else if ('e' in property.keyframes[pos-2]) {
						value = property.keyframes[pos-2].e;
					} else {
						value = property.keyframes[pos-2].s;
					}
					var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value);
					valueProp.time = property.keyframes[pos-1].t / property.elem.comp.globalData.frameRate;
					return valueProp;
				}
			};
			expressionValue.valueAtTime = property.getValueAtTime;
			expressionValue.speedAtTime = property.getSpeedAtTime;
			expressionValue.velocityAtTime = property.getVelocityAtTime;
			expressionValue.propertyGroup = property.propertyGroup;
		}

		function UnidimensionalPropertyInterface(property) {
			if(!property || !('pv' in property)) {
				property = defaultUnidimensionalValue;
			}
			var mult = 1 / property.mult;
			var val = property.pv * mult;
			var expressionValue = new Number(val);
			expressionValue.value = val;
			completeProperty(expressionValue, property, 'unidimensional');

			return function() {
				if (property.k) {
					property.getValue();
				}
				val = property.v * mult;
				if(expressionValue.value !== val) {
					expressionValue = new Number(val);
					expressionValue.value = val;
					completeProperty(expressionValue, property, 'unidimensional');
				}
				return expressionValue;
			}
		}

		function MultidimensionalPropertyInterface(property) {
			if(!property || !('pv' in property)) {
				property = defaultMultidimensionalValue;
			}
			var mult = 1 / property.mult;
			var len = property.pv.length;
			var expressionValue = createTypedArray('float32', len);
			var arrValue = createTypedArray('float32', len);
			expressionValue.value = arrValue;
			completeProperty(expressionValue, property, 'multidimensional');

			return function() {
				if (property.k) {
					property.getValue();
				}
				for (var i = 0; i < len; i += 1) {
					expressionValue[i] = arrValue[i] = property.v[i] * mult;
				}
				return expressionValue;
			}
		}

		//TODO: try to avoid using this getter
		function defaultGetter() {
			return defaultUnidimensionalValue;
		}

		return function(property) {
			if(!property) {
				return defaultGetter;
			} else if (property.propType === 'unidimensional') {
				return UnidimensionalPropertyInterface(property);
			} else {
				return MultidimensionalPropertyInterface(property);
			}
		}
	}());

	(function(){

		var TextExpressionSelectorProp = (function(){

			function getValueProxy(index,total){
				this.textIndex = index+1;
				this.textTotal = total;
				this.v = this.getValue() * this.mult;
				return this.v;
			}

			return function TextExpressionSelectorProp(elem,data){
				this.pv = 1;
				this.comp = elem.comp;
				this.elem = elem;
				this.mult = 0.01;
				this.propType = 'textSelector';
				this.textTotal = data.totalChars;
				this.selectorValue = 100;
				this.lastValue = [1,1,1];
				this.k = true;
				this.x = true;
				this.getValue = ExpressionManager.initiateExpression.bind(this)(elem,data,this);
				this.getMult = getValueProxy;
				this.getVelocityAtTime = expressionHelpers.getVelocityAtTime;
				if(this.kf){
					this.getValueAtTime = expressionHelpers.getValueAtTime.bind(this);
				} else {
					this.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(this);
				}
				this.setGroupProperty = expressionHelpers.setGroupProperty;
			};
		}());

		var propertyGetTextProp = TextSelectorProp.getTextSelectorProp;
		TextSelectorProp.getTextSelectorProp = function(elem, data,arr){
			if(data.t === 1){
				return new TextExpressionSelectorProp(elem, data,arr);
			} else {
				return propertyGetTextProp(elem,data,arr);
			}
		};
	}());
	function SliderEffect(data,elem, container){
		this.p = PropertyFactory.getProp(elem,data.v,0,0,container);
	}
	function AngleEffect(data,elem, container){
		this.p = PropertyFactory.getProp(elem,data.v,0,0,container);
	}
	function ColorEffect(data,elem, container){
		this.p = PropertyFactory.getProp(elem,data.v,1,0,container);
	}
	function PointEffect(data,elem, container){
		this.p = PropertyFactory.getProp(elem,data.v,1,0,container);
	}
	function LayerIndexEffect(data,elem, container){
		this.p = PropertyFactory.getProp(elem,data.v,0,0,container);
	}
	function MaskIndexEffect(data,elem, container){
		this.p = PropertyFactory.getProp(elem,data.v,0,0,container);
	}
	function CheckboxEffect(data,elem, container){
		this.p = PropertyFactory.getProp(elem,data.v,0,0,container);
	}
	function NoValueEffect(){
		this.p = {};
	}
	function EffectsManager(){}
	function EffectsManager(data,element){
		var effects = data.ef || [];
		this.effectElements = [];
		var i,len = effects.length;
		var effectItem;
		for(i=0;i<len;i++) {
			effectItem = new GroupEffect(effects[i],element);
			this.effectElements.push(effectItem);
		}
	}

	function GroupEffect(data,element){
		this.init(data,element);
	}

	extendPrototype([DynamicPropertyContainer], GroupEffect);

	GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;

	GroupEffect.prototype.init = function(data,element){
		this.data = data;
		this.effectElements = [];
		this.initDynamicPropertyContainer(element);
		var i, len = this.data.ef.length;
		var eff, effects = this.data.ef;
		for(i=0;i<len;i+=1){
			eff = null;
			switch(effects[i].ty){
				case 0:
					eff = new SliderEffect(effects[i],element,this);
					break;
				case 1:
					eff = new AngleEffect(effects[i],element,this);
					break;
				case 2:
					eff = new ColorEffect(effects[i],element,this);
					break;
				case 3:
					eff = new PointEffect(effects[i],element,this);
					break;
				case 4:
				case 7:
					eff = new CheckboxEffect(effects[i],element,this);
					break;
				case 10:
					eff = new LayerIndexEffect(effects[i],element,this);
					break;
				case 11:
					eff = new MaskIndexEffect(effects[i],element,this);
					break;
				case 5:
					eff = new EffectsManager(effects[i],element,this);
					break;
				//case 6:
				default:
					eff = new NoValueEffect(effects[i],element,this);
					break;
			}
			if(eff) {
				this.effectElements.push(eff);
			}
		}
	};

	var lottie = {};

	var _isFrozen = false;

	function setLocationHref (href) {
		locationHref = href;
	}

	function searchAnimations() {
		if (standalone === true) {
			animationManager.searchAnimations(animationData, standalone, renderer);
		} else {
			animationManager.searchAnimations();
		}
	}

	function setSubframeRendering(flag) {
		subframeEnabled = flag;
	}

	function loadAnimation(params) {
		if (standalone === true) {
			params.animationData = JSON.parse(animationData);
		}
		return animationManager.loadAnimation(params);
	}

	function setQuality(value) {
		if (typeof value === 'string') {
			switch (value) {
				case 'high':
					defaultCurveSegments = 200;
					break;
				case 'medium':
					defaultCurveSegments = 50;
					break;
				case 'low':
					defaultCurveSegments = 10;
					break;
			}
		} else if (!isNaN(value) && value > 1) {
			defaultCurveSegments = value;
		}
		if (defaultCurveSegments >= 50) {
			roundValues(false);
		} else {
			roundValues(true);
		}
	}

	function inBrowser() {
		return typeof navigator !== 'undefined';
	}

	function installPlugin(type, plugin) {
		if (type === 'expressions') {
			expressionsPlugin = plugin;
		}
	}

	function getFactory(name) {
		switch (name) {
			case "propertyFactory":
				return PropertyFactory;
			case "shapePropertyFactory":
				return ShapePropertyFactory;
			case "matrix":
				return Matrix;
		}
	}

	lottie.play = animationManager.play;
	lottie.pause = animationManager.pause;
	lottie.setLocationHref = setLocationHref;
	lottie.togglePause = animationManager.togglePause;
	lottie.setSpeed = animationManager.setSpeed;
	lottie.setDirection = animationManager.setDirection;
	lottie.stop = animationManager.stop;
	lottie.searchAnimations = searchAnimations;
	lottie.registerAnimation = animationManager.registerAnimation;
	lottie.loadAnimation = loadAnimation;
	lottie.setSubframeRendering = setSubframeRendering;
	lottie.resize = animationManager.resize;
//lottie.start = start;
	lottie.goToAndStop = animationManager.goToAndStop;
	lottie.destroy = animationManager.destroy;
	lottie.setQuality = setQuality;
	lottie.inBrowser = inBrowser;
	lottie.installPlugin = installPlugin;
	lottie.freeze = animationManager.freeze;
	lottie.unfreeze = animationManager.unfreeze;
	lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;
	lottie.__getFactory = getFactory;
	lottie.version = '5.6.8';

	function checkReady() {
		if (document.readyState === "complete") {
			clearInterval(readyStateCheckInterval);
			searchAnimations();
		}
	}

	function getQueryVariable(variable) {
		var vars = queryString.split('&');
		for (var i = 0; i < vars.length; i++) {
			var pair = vars[i].split('=');
			if (decodeURIComponent(pair[0]) == variable) {
				return decodeURIComponent(pair[1]);
			}
		}
	}
	var standalone = '__[STANDALONE]__';
	var animationData = '__[ANIMATIONDATA]__';
	var renderer = '';
	if (standalone) {
		var scripts = document.getElementsByTagName('script');
		var index = scripts.length - 1;
		var myScript = scripts[index] || {
			src: ''
		};
		var queryString = myScript.src.replace(/^[^\?]+\??/, '');
		renderer = getQueryVariable('renderer');
	}
	var readyStateCheckInterval = setInterval(checkReady, 100);

	return lottie;
}));
assets/lib/sticky/jquery.sticky.js000064400000020572150755004310013312 0ustar00/*
 * By Elementor Team
 */
( function( $ ) {
	var Sticky = function( element, userSettings ) {
		var $element,
			isSticky = false,
			isFollowingParent = false,
			isReachedEffectsPoint = false,
			elements = {},
			settings;

		var defaultSettings = {
			to: 'top',
			offset: 0,
			effectsOffset: 0,
			parent: false,
			classes: {
				sticky: 'sticky',
				stickyActive: 'sticky-active',
				stickyEffects: 'sticky-effects',
				spacer: 'sticky-spacer',
			},
		};

		var initElements = function() {
			$element = $( element ).addClass( settings.classes.sticky );

			elements.$window = $( window );

			if ( settings.parent ) {
				if ( 'parent' === settings.parent ) {
					elements.$parent = $element.parent();
				} else {
					elements.$parent = $element.closest( settings.parent );
				}
			}
		};

		var initSettings = function() {
			settings = jQuery.extend( true, defaultSettings, userSettings );
		};

		var bindEvents = function() {
			elements.$window.on( {
				scroll: onWindowScroll,
				resize: onWindowResize,
			} );
		};

		var unbindEvents = function() {
			elements.$window
				.off( 'scroll', onWindowScroll )
				.off( 'resize', onWindowResize );
		};

		var init = function() {
			initSettings();

			initElements();

			bindEvents();

			checkPosition();
		};

		var backupCSS = function( $elementBackupCSS, backupState, properties ) {
			var css = {},
				elementStyle = $elementBackupCSS[ 0 ].style;

			properties.forEach( function( property ) {
				css[ property ] = undefined !== elementStyle[ property ] ? elementStyle[ property ] : '';
			} );

			$elementBackupCSS.data( 'css-backup-' + backupState, css );
		};

		var getCSSBackup = function( $elementCSSBackup, backupState ) {
			return $elementCSSBackup.data( 'css-backup-' + backupState );
		};

		var addSpacer = function() {
			elements.$spacer = $element.clone()
				.addClass( settings.classes.spacer )
				.css( {
					visibility: 'hidden',
					transition: 'none',
					animation: 'none',
				} );

			$element.after( elements.$spacer );
		};

		var removeSpacer = function() {
			elements.$spacer.remove();
		};

		var stickElement = function() {
			backupCSS( $element, 'unsticky', [ 'position', 'width', 'margin-top', 'margin-bottom', 'top', 'bottom' ] );

			var css = {
				position: 'fixed',
				width: getElementOuterSize( $element, 'width' ),
				marginTop: 0,
				marginBottom: 0,
			};

			css[ settings.to ] = settings.offset;

			css[ 'top' === settings.to ? 'bottom' : 'top' ] = '';

			$element
				.css( css )
				.addClass( settings.classes.stickyActive );
		};

		var unstickElement = function() {
			$element
				.css( getCSSBackup( $element, 'unsticky' ) )
				.removeClass( settings.classes.stickyActive );
		};

		var followParent = function() {
			backupCSS( elements.$parent, 'childNotFollowing', [ 'position' ] );

			elements.$parent.css( 'position', 'relative' );

			backupCSS( $element, 'notFollowing', [ 'position', 'top', 'bottom' ] );

			var css = {
				position: 'absolute',
			};

			css[ settings.to ] = '';

			css[ 'top' === settings.to ? 'bottom' : 'top' ] = 0;

			$element.css( css );

			isFollowingParent = true;
		};

		var unfollowParent = function() {
			elements.$parent.css( getCSSBackup( elements.$parent, 'childNotFollowing' ) );

			$element.css( getCSSBackup( $element, 'notFollowing' ) );

			isFollowingParent = false;
		};

		var getElementOuterSize = function( $elementOuterSize, dimension, includeMargins ) {
			var computedStyle = getComputedStyle( $elementOuterSize[ 0 ] ),
				elementSize = parseFloat( computedStyle[ dimension ] ),
				sides = 'height' === dimension ? [ 'top', 'bottom' ] : [ 'left', 'right' ],
				propertiesToAdd = [];

			if ( 'border-box' !== computedStyle.boxSizing ) {
				propertiesToAdd.push( 'border', 'padding' );
			}

			if ( includeMargins ) {
				propertiesToAdd.push( 'margin' );
			}

			propertiesToAdd.forEach( function( property ) {
				sides.forEach( function( side ) {
					elementSize += parseFloat( computedStyle[ property + '-' + side ] );
				} );
			} );

			return elementSize;
		};

		var getElementViewportOffset = function( $elementViewportOffset ) {
			var windowScrollTop = elements.$window.scrollTop(),
				elementHeight = getElementOuterSize( $elementViewportOffset, 'height' ),
				viewportHeight = innerHeight,
				elementOffsetFromTop = $elementViewportOffset.offset().top,
				distanceFromTop = elementOffsetFromTop - windowScrollTop,
				topFromBottom = distanceFromTop - viewportHeight;

			return {
				top: {
					fromTop: distanceFromTop,
					fromBottom: topFromBottom,
				},
				bottom: {
					fromTop: distanceFromTop + elementHeight,
					fromBottom: topFromBottom + elementHeight,
				},
			};
		};

		var stick = function() {
			addSpacer();

			stickElement();

			isSticky = true;

			$element.trigger( 'sticky:stick' );
		};

		var unstick = function() {
			unstickElement();

			removeSpacer();

			isSticky = false;

			$element.trigger( 'sticky:unstick' );
		};

		var checkParent = function() {
			var elementOffset = getElementViewportOffset( $element ),
				isTop = 'top' === settings.to;

			if ( isFollowingParent ) {
				var isNeedUnfollowing = isTop ? elementOffset.top.fromTop > settings.offset : elementOffset.bottom.fromBottom < -settings.offset;

				if ( isNeedUnfollowing ) {
					unfollowParent();
				}
			} else {
				var parentOffset = getElementViewportOffset( elements.$parent ),
					parentStyle = getComputedStyle( elements.$parent[ 0 ] ),
					borderWidthToDecrease = parseFloat( parentStyle[ isTop ? 'borderBottomWidth' : 'borderTopWidth' ] ),
					parentViewportDistance = isTop ? parentOffset.bottom.fromTop - borderWidthToDecrease : parentOffset.top.fromBottom + borderWidthToDecrease,
					isNeedFollowing = isTop ? parentViewportDistance <= elementOffset.bottom.fromTop : parentViewportDistance >= elementOffset.top.fromBottom;

				if ( isNeedFollowing ) {
					followParent();
				}
			}
		};

		var checkEffectsPoint = function( distanceFromTriggerPoint ) {
			if ( isReachedEffectsPoint && -distanceFromTriggerPoint < settings.effectsOffset ) {
				$element.removeClass( settings.classes.stickyEffects );

				isReachedEffectsPoint = false;
			} else if ( ! isReachedEffectsPoint && -distanceFromTriggerPoint >= settings.effectsOffset ) {
				$element.addClass( settings.classes.stickyEffects );

				isReachedEffectsPoint = true;
			}
		};

		var checkPosition = function() {
			var offset = settings.offset,
				distanceFromTriggerPoint;

			if ( isSticky ) {
				var spacerViewportOffset = getElementViewportOffset( elements.$spacer );

				distanceFromTriggerPoint = 'top' === settings.to ? spacerViewportOffset.top.fromTop - offset : -spacerViewportOffset.bottom.fromBottom - offset;

				if ( settings.parent ) {
					checkParent();
				}

				if ( distanceFromTriggerPoint > 0 ) {
					unstick();
				}
			} else {
				var elementViewportOffset = getElementViewportOffset( $element );

				distanceFromTriggerPoint = 'top' === settings.to ? elementViewportOffset.top.fromTop - offset : -elementViewportOffset.bottom.fromBottom - offset;

				if ( distanceFromTriggerPoint <= 0 ) {
					stick();

					if ( settings.parent ) {
						checkParent();
					}
				}
			}

			checkEffectsPoint( distanceFromTriggerPoint );
		};

		var onWindowScroll = function() {
			checkPosition();
		};

		var onWindowResize = function() {
			if ( ! isSticky ) {
				return;
			}

			unstickElement();

			stickElement();

			if ( settings.parent ) {
				// Force recalculation of the relation between the element and its parent
				isFollowingParent = false;

				checkParent();
			}
		};

		this.destroy = function() {
			if ( isSticky ) {
				unstick();
			}

			unbindEvents();

			$element.removeClass( settings.classes.sticky );
		};

		init();
	};

	$.fn.sticky = function( settings ) {
		var isCommand = 'string' === typeof settings;

		this.each( function() {
			var $this = $( this );

			if ( ! isCommand ) {
				$this.data( 'sticky', new Sticky( this, settings ) );

				return;
			}

			var instance = $this.data( 'sticky' );

			if ( ! instance ) {
				throw Error( 'Trying to perform the `' + settings + '` method prior to initialization' );
			}

			if ( ! instance[ settings ] ) {
				throw ReferenceError( 'Method `' + settings + '` not found in sticky instance' );
			}

			instance[ settings ].apply( instance, Array.prototype.slice.call( arguments, 1 ) );

			if ( 'destroy' === settings ) {
				$this.removeData( 'sticky' );
			}
		} );

		return this;
	};

	window.Sticky = Sticky;
} )( jQuery );
assets/lib/sticky/jquery.sticky.min.js000064400000014703150755004310014073 0ustar00(function($){var Sticky=function(element,userSettings){var $element,isSticky=false,isFollowingParent=false,isReachedEffectsPoint=false,elements={},settings;var defaultSettings={to:"top",offset:0,effectsOffset:0,parent:false,classes:{sticky:"sticky",stickyActive:"sticky-active",stickyEffects:"sticky-effects",spacer:"sticky-spacer"}};var initElements=function(){$element=$(element).addClass(settings.classes.sticky);elements.$window=$(window);if(settings.parent){if("parent"===settings.parent){elements.$parent=$element.parent()}else{elements.$parent=$element.closest(settings.parent)}}};var initSettings=function(){settings=jQuery.extend(true,defaultSettings,userSettings)};var bindEvents=function(){elements.$window.on({scroll:onWindowScroll,resize:onWindowResize})};var unbindEvents=function(){elements.$window.off("scroll",onWindowScroll).off("resize",onWindowResize)};var init=function(){initSettings();initElements();bindEvents();checkPosition()};var backupCSS=function($elementBackupCSS,backupState,properties){var css={},elementStyle=$elementBackupCSS[0].style;properties.forEach(function(property){css[property]=undefined!==elementStyle[property]?elementStyle[property]:""});$elementBackupCSS.data("css-backup-"+backupState,css)};var getCSSBackup=function($elementCSSBackup,backupState){return $elementCSSBackup.data("css-backup-"+backupState)};var addSpacer=function(){elements.$spacer=$element.clone().addClass(settings.classes.spacer).css({visibility:"hidden",transition:"none",animation:"none"});$element.after(elements.$spacer)};var removeSpacer=function(){elements.$spacer.remove()};var stickElement=function(){backupCSS($element,"unsticky",["position","width","margin-top","margin-bottom","top","bottom"]);var css={position:"fixed",width:getElementOuterSize($element,"width"),marginTop:0,marginBottom:0};css[settings.to]=settings.offset;css["top"===settings.to?"bottom":"top"]="";$element.css(css).addClass(settings.classes.stickyActive)};var unstickElement=function(){$element.css(getCSSBackup($element,"unsticky")).removeClass(settings.classes.stickyActive)};var followParent=function(){backupCSS(elements.$parent,"childNotFollowing",["position"]);elements.$parent.css("position","relative");backupCSS($element,"notFollowing",["position","top","bottom"]);var css={position:"absolute"};css[settings.to]="";css["top"===settings.to?"bottom":"top"]=0;$element.css(css);isFollowingParent=true};var unfollowParent=function(){elements.$parent.css(getCSSBackup(elements.$parent,"childNotFollowing"));$element.css(getCSSBackup($element,"notFollowing"));isFollowingParent=false};var getElementOuterSize=function($elementOuterSize,dimension,includeMargins){var computedStyle=getComputedStyle($elementOuterSize[0]),elementSize=parseFloat(computedStyle[dimension]),sides="height"===dimension?["top","bottom"]:["left","right"],propertiesToAdd=[];if("border-box"!==computedStyle.boxSizing){propertiesToAdd.push("border","padding")}if(includeMargins){propertiesToAdd.push("margin")}propertiesToAdd.forEach(function(property){sides.forEach(function(side){elementSize+=parseFloat(computedStyle[property+"-"+side])})});return elementSize};var getElementViewportOffset=function($elementViewportOffset){var windowScrollTop=elements.$window.scrollTop(),elementHeight=getElementOuterSize($elementViewportOffset,"height"),viewportHeight=innerHeight,elementOffsetFromTop=$elementViewportOffset.offset().top,distanceFromTop=elementOffsetFromTop-windowScrollTop,topFromBottom=distanceFromTop-viewportHeight;return{top:{fromTop:distanceFromTop,fromBottom:topFromBottom},bottom:{fromTop:distanceFromTop+elementHeight,fromBottom:topFromBottom+elementHeight}}};var stick=function(){addSpacer();stickElement();isSticky=true;$element.trigger("sticky:stick")};var unstick=function(){unstickElement();removeSpacer();isSticky=false;$element.trigger("sticky:unstick")};var checkParent=function(){var elementOffset=getElementViewportOffset($element),isTop="top"===settings.to;if(isFollowingParent){var isNeedUnfollowing=isTop?elementOffset.top.fromTop>settings.offset:elementOffset.bottom.fromBottom<-settings.offset;if(isNeedUnfollowing){unfollowParent()}}else{var parentOffset=getElementViewportOffset(elements.$parent),parentStyle=getComputedStyle(elements.$parent[0]),borderWidthToDecrease=parseFloat(parentStyle[isTop?"borderBottomWidth":"borderTopWidth"]),parentViewportDistance=isTop?parentOffset.bottom.fromTop-borderWidthToDecrease:parentOffset.top.fromBottom+borderWidthToDecrease,isNeedFollowing=isTop?parentViewportDistance<=elementOffset.bottom.fromTop:parentViewportDistance>=elementOffset.top.fromBottom;if(isNeedFollowing){followParent()}}};var checkEffectsPoint=function(distanceFromTriggerPoint){if(isReachedEffectsPoint&&-distanceFromTriggerPoint<settings.effectsOffset){$element.removeClass(settings.classes.stickyEffects);isReachedEffectsPoint=false}else if(!isReachedEffectsPoint&&-distanceFromTriggerPoint>=settings.effectsOffset){$element.addClass(settings.classes.stickyEffects);isReachedEffectsPoint=true}};var checkPosition=function(){var offset=settings.offset,distanceFromTriggerPoint;if(isSticky){var spacerViewportOffset=getElementViewportOffset(elements.$spacer);distanceFromTriggerPoint="top"===settings.to?spacerViewportOffset.top.fromTop-offset:-spacerViewportOffset.bottom.fromBottom-offset;if(settings.parent){checkParent()}if(distanceFromTriggerPoint>0){unstick()}}else{var elementViewportOffset=getElementViewportOffset($element);distanceFromTriggerPoint="top"===settings.to?elementViewportOffset.top.fromTop-offset:-elementViewportOffset.bottom.fromBottom-offset;if(distanceFromTriggerPoint<=0){stick();if(settings.parent){checkParent()}}}checkEffectsPoint(distanceFromTriggerPoint)};var onWindowScroll=function(){checkPosition()};var onWindowResize=function(){if(!isSticky){return}unstickElement();stickElement();if(settings.parent){isFollowingParent=false;checkParent()}};this.destroy=function(){if(isSticky){unstick()}unbindEvents();$element.removeClass(settings.classes.sticky)};init()};$.fn.sticky=function(settings){var isCommand="string"===typeof settings;this.each(function(){var $this=$(this);if(!isCommand){$this.data("sticky",new Sticky(this,settings));return}var instance=$this.data("sticky");if(!instance){throw Error("Trying to perform the `"+settings+"` method prior to initialization")}if(!instance[settings]){throw ReferenceError("Method `"+settings+"` not found in sticky instance")}instance[settings].apply(instance,Array.prototype.slice.call(arguments,1));if("destroy"===settings){$this.removeData("sticky")}});return this};window.Sticky=Sticky})(jQuery);assets/lib/dom-to-image/js/dom-to-image.min.js000064400000022352150755004310015112 0ustar00/*! dom-to-image 10-06-2017 */
/**
 * Dom-To-Image 2.6.0
 * https://github.com/tsayen/dom-to-image
 *
 * Released under the MIT license
 * https://github.com/tsayen/dom-to-image/blob/master/LICENSE
 */
!function(a){"use strict";function b(a,b){function c(a){return b.bgcolor&&(a.style.backgroundColor=b.bgcolor),b.width&&(a.style.width=b.width+"px"),b.height&&(a.style.height=b.height+"px"),b.style&&Object.keys(b.style).forEach(function(c){a.style[c]=b.style[c]}),a}return b=b||{},g(b),Promise.resolve(a).then(function(a){return i(a,b.filter,!0)}).then(j).then(k).then(c).then(function(c){return l(c,b.width||q.width(a),b.height||q.height(a))})}function c(a,b){return h(a,b||{}).then(function(b){return b.getContext("2d").getImageData(0,0,q.width(a),q.height(a)).data})}function d(a,b){return h(a,b||{}).then(function(a){return a.toDataURL()})}function e(a,b){return b=b||{},h(a,b).then(function(a){return a.toDataURL("image/jpeg",b.quality||1)})}function f(a,b){return h(a,b||{}).then(q.canvasToBlob)}function g(a){"undefined"==typeof a.imagePlaceholder?v.impl.options.imagePlaceholder=u.imagePlaceholder:v.impl.options.imagePlaceholder=a.imagePlaceholder,"undefined"==typeof a.cacheBust?v.impl.options.cacheBust=u.cacheBust:v.impl.options.cacheBust=a.cacheBust}function h(a,c){function d(a){var b=document.createElement("canvas");if(b.width=c.width||q.width(a),b.height=c.height||q.height(a),c.bgcolor){var d=b.getContext("2d");d.fillStyle=c.bgcolor,d.fillRect(0,0,b.width,b.height)}return b}return b(a,c).then(q.makeImage).then(q.delay(100)).then(function(b){var c=d(a);return c.getContext("2d").drawImage(b,0,0),c})}function i(a,b,c){function d(a){return a instanceof HTMLCanvasElement?q.makeImage(a.toDataURL()):a.cloneNode(!1)}function e(a,b,c){function d(a,b,c){var d=Promise.resolve();return b.forEach(function(b){d=d.then(function(){return i(b,c)}).then(function(b){b&&a.appendChild(b)})}),d}var e=a.childNodes;return 0===e.length?Promise.resolve(b):d(b,q.asArray(e),c).then(function(){return b})}function f(a,b){function c(){function c(a,b){function c(a,b){q.asArray(a).forEach(function(c){b.setProperty(c,a.getPropertyValue(c),a.getPropertyPriority(c))})}a.cssText?b.cssText=a.cssText:c(a,b)}c(window.getComputedStyle(a),b.style)}function d(){function c(c){function d(a,b,c){function d(a){var b=a.getPropertyValue("content");return a.cssText+" content: "+b+";"}function e(a){function b(b){return b+": "+a.getPropertyValue(b)+(a.getPropertyPriority(b)?" !important":"")}return q.asArray(a).map(b).join("; ")+";"}var f="."+a+":"+b,g=c.cssText?d(c):e(c);return document.createTextNode(f+"{"+g+"}")}var e=window.getComputedStyle(a,c),f=e.getPropertyValue("content");if(""!==f&&"none"!==f){var g=q.uid();b.className=b.className+" "+g;var h=document.createElement("style");h.appendChild(d(g,c,e)),b.appendChild(h)}}[":before",":after"].forEach(function(a){c(a)})}function e(){a instanceof HTMLTextAreaElement&&(b.innerHTML=a.value),a instanceof HTMLInputElement&&b.setAttribute("value",a.value)}function f(){b instanceof SVGElement&&(b.setAttribute("xmlns","http://www.w3.org/2000/svg"),b instanceof SVGRectElement&&["width","height"].forEach(function(a){var c=b.getAttribute(a);c&&b.style.setProperty(a,c)}))}return b instanceof Element?Promise.resolve().then(c).then(d).then(e).then(f).then(function(){return b}):b}return c||!b||b(a)?Promise.resolve(a).then(d).then(function(c){return e(a,c,b)}).then(function(b){return f(a,b)}):Promise.resolve()}function j(a){return s.resolveAll().then(function(b){var c=document.createElement("style");return a.appendChild(c),c.appendChild(document.createTextNode(b)),a})}function k(a){return t.inlineAll(a).then(function(){return a})}function l(a,b,c){return Promise.resolve(a).then(function(a){return a.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),(new XMLSerializer).serializeToString(a)}).then(q.escapeXhtml).then(function(a){return'<foreignObject x="0" y="0" width="100%" height="100%">'+a+"</foreignObject>"}).then(function(a){return'<svg xmlns="http://www.w3.org/2000/svg" width="'+b+'" height="'+c+'">'+a+"</svg>"}).then(function(a){return"data:image/svg+xml;charset=utf-8,"+a})}function m(){function a(){var a="application/font-woff",b="image/jpeg";return{woff:a,woff2:a,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:b,jpeg:b,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml"}}function b(a){var b=/\.([^\.\/]*?)$/g.exec(a);return b?b[1]:""}function c(c){var d=b(c).toLowerCase();return a()[d]||""}function d(a){return a.search(/^(data:)/)!==-1}function e(a){return new Promise(function(b){for(var c=window.atob(a.toDataURL().split(",")[1]),d=c.length,e=new Uint8Array(d),f=0;f<d;f++)e[f]=c.charCodeAt(f);b(new Blob([e],{type:"image/png"}))})}function f(a){return a.toBlob?new Promise(function(b){a.toBlob(b)}):e(a)}function g(a,b){var c=document.implementation.createHTMLDocument(),d=c.createElement("base");c.head.appendChild(d);var e=c.createElement("a");return c.body.appendChild(e),d.href=b,e.href=a,e.href}function h(){var a=0;return function(){function b(){return("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4)}return"u"+b()+a++}}function i(a){return new Promise(function(b,c){var d=new Image;d.onload=function(){b(d)},d.onerror=c,d.src=a})}function j(a){var b=3e4;return v.impl.options.cacheBust&&(a+=(/\?/.test(a)?"&":"?")+(new Date).getTime()),new Promise(function(c){function d(){if(4===g.readyState){if(200!==g.status)return void(h?c(h):f("cannot fetch resource: "+a+", status: "+g.status));var b=new FileReader;b.onloadend=function(){var a=b.result.split(/,/)[1];c(a)},b.readAsDataURL(g.response)}}function e(){h?c(h):f("timeout of "+b+"ms occured while fetching resource: "+a)}function f(a){console.error(a),c("")}var g=new XMLHttpRequest;g.onreadystatechange=d,g.ontimeout=e,g.responseType="blob",g.timeout=b,g.open("GET",a,!0),g.send();var h;if(v.impl.options.imagePlaceholder){var i=v.impl.options.imagePlaceholder.split(/,/);i&&i[1]&&(h=i[1])}})}function k(a,b){return"data:"+b+";base64,"+a}function l(a){return a.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1")}function m(a){return function(b){return new Promise(function(c){setTimeout(function(){c(b)},a)})}}function n(a){for(var b=[],c=a.length,d=0;d<c;d++)b.push(a[d]);return b}function o(a){return a.replace(/#/g,"%23").replace(/\n/g,"%0A")}function p(a){var b=r(a,"border-left-width"),c=r(a,"border-right-width");return a.scrollWidth+b+c}function q(a){var b=r(a,"border-top-width"),c=r(a,"border-bottom-width");return a.scrollHeight+b+c}function r(a,b){var c=window.getComputedStyle(a).getPropertyValue(b);return parseFloat(c.replace("px",""))}return{escape:l,parseExtension:b,mimeType:c,dataAsUrl:k,isDataUrl:d,canvasToBlob:f,resolveUrl:g,getAndEncode:j,uid:h(),delay:m,asArray:n,escapeXhtml:o,makeImage:i,width:p,height:q}}function n(){function a(a){return a.search(e)!==-1}function b(a){for(var b,c=[];null!==(b=e.exec(a));)c.push(b[1]);return c.filter(function(a){return!q.isDataUrl(a)})}function c(a,b,c,d){function e(a){return new RegExp("(url\\(['\"]?)("+q.escape(a)+")(['\"]?\\))","g")}return Promise.resolve(b).then(function(a){return c?q.resolveUrl(a,c):a}).then(d||q.getAndEncode).then(function(a){return q.dataAsUrl(a,q.mimeType(b))}).then(function(c){return a.replace(e(b),"$1"+c+"$3")})}function d(d,e,f){function g(){return!a(d)}return g()?Promise.resolve(d):Promise.resolve(d).then(b).then(function(a){var b=Promise.resolve(d);return a.forEach(function(a){b=b.then(function(b){return c(b,a,e,f)})}),b})}var e=/url\(['"]?([^'"]+?)['"]?\)/g;return{inlineAll:d,shouldProcess:a,impl:{readUrls:b,inline:c}}}function o(){function a(){return b(document).then(function(a){return Promise.all(a.map(function(a){return a.resolve()}))}).then(function(a){return a.join("\n")})}function b(){function a(a){return a.filter(function(a){return a.type===CSSRule.FONT_FACE_RULE}).filter(function(a){return r.shouldProcess(a.style.getPropertyValue("src"))})}function b(a){var b=[];return a.forEach(function(a){try{q.asArray(a.cssRules||[]).forEach(b.push.bind(b))}catch(c){console.log("Error while reading CSS rules from "+a.href,c.toString())}}),b}function c(a){return{resolve:function(){var b=(a.parentStyleSheet||{}).href;return r.inlineAll(a.cssText,b)},src:function(){return a.style.getPropertyValue("src")}}}return Promise.resolve(q.asArray(document.styleSheets)).then(b).then(a).then(function(a){return a.map(c)})}return{resolveAll:a,impl:{readAll:b}}}function p(){function a(a){function b(b){return q.isDataUrl(a.src)?Promise.resolve():Promise.resolve(a.src).then(b||q.getAndEncode).then(function(b){return q.dataAsUrl(b,q.mimeType(a.src))}).then(function(b){return new Promise(function(c,d){a.onload=c,a.onerror=d,a.src=b})})}return{inline:b}}function b(c){function d(a){var b=a.style.getPropertyValue("background");return b?r.inlineAll(b).then(function(b){a.style.setProperty("background",b,a.style.getPropertyPriority("background"))}).then(function(){return a}):Promise.resolve(a)}return c instanceof Element?d(c).then(function(){return c instanceof HTMLImageElement?a(c).inline():Promise.all(q.asArray(c.childNodes).map(function(a){return b(a)}))}):Promise.resolve(c)}return{inlineAll:b,impl:{newImage:a}}}var q=m(),r=n(),s=o(),t=p(),u={imagePlaceholder:void 0,cacheBust:!1},v={toSvg:b,toPng:d,toJpeg:e,toBlob:f,toPixelData:c,impl:{fontFaces:s,images:t,util:q,inliner:r,options:{}}};"undefined"!=typeof module?module.exports=v:a.domtoimage=v}(this);
assets/lib/dom-to-image/js/dom-to-image.js000064400000051365150755004310014336 0ustar00/**
 * Dom-To-Image 2.6.0
 * https://github.com/tsayen/dom-to-image
 *
 * Released under the MIT license
 * https://github.com/tsayen/dom-to-image/blob/master/LICENSE
 */

(function ( global ) {
	'use strict';

	var util = newUtil();
	var inliner = newInliner();
	var fontFaces = newFontFaces();
	var images = newImages();

	// Default impl options
	var defaultOptions = {
		// Default is to fail on error, no placeholder
		imagePlaceholder: undefined,
		// Default cache bust is false, it will use the cache
		cacheBust: false
	};

	var domtoimage = {
		toSvg: toSvg,
		toPng: toPng,
		toJpeg: toJpeg,
		toBlob: toBlob,
		toPixelData: toPixelData,
		impl: {
			fontFaces: fontFaces,
			images: images,
			util: util,
			inliner: inliner,
			options: {}
		}
	};

	if ( typeof module !== 'undefined' )
		module.exports = domtoimage;
	else
		global.domtoimage = domtoimage;


	/**
	 * @param {Node} node - The DOM Node object to render
	 * @param {Object} options - Rendering options
	 * @param {Function} options.filter - Should return true if passed node should be included in the output
	 *          (excluding node means excluding it's children as well). Not called on the root node.
	 * @param {String} options.bgcolor - color for the background, any valid CSS color value.
	 * @param {Number} options.width - width to be applied to node before rendering.
	 * @param {Number} options.height - height to be applied to node before rendering.
	 * @param {Object} options.style - an object whose properties to be copied to node's style before rendering.
	 * @param {Number} options.quality - a Number between 0 and 1 indicating image quality (applicable to JPEG only),
                defaults to 1.0.
	 * @param {String} options.imagePlaceholder - dataURL to use as a placeholder for failed images, default behaviour is to fail fast on images we can't fetch
	 * @param {Boolean} options.cacheBust - set to true to cache bust by appending the time to the request url
	 * @return {Promise} - A promise that is fulfilled with a SVG image data URL
	 * */
	function toSvg( node, options ) {
		options = options || {};
		copyOptions( options );
		return Promise.resolve( node )
			.then( embedFonts )
			.then( function ( node ) {
				return cloneNode( node, options.filter, true );
			} )
			.then( inlineImages )
			.then( applyOptions )
			.then( function ( clone ) {
				return makeSvgDataUri( clone,
					options.width || util.width( node ),
					options.height || util.height( node )
				);
			} );

		function applyOptions( clone ) {
			if ( options.bgcolor ) clone.style.backgroundColor = options.bgcolor;

			if ( options.width ) clone.style.width = options.width + 'px';
			if ( options.height ) clone.style.height = options.height + 'px';

			if ( options.style )
				Object.keys( options.style ).forEach( function ( property ) {
					clone.style[ property ] = options.style[ property ];
				} );

			return clone;
		}
	}

	/**
	 * @param {Node} node - The DOM Node object to render
	 * @param {Object} options - Rendering options, @see {@link toSvg}
	 * @return {Promise} - A promise that is fulfilled with a Uint8Array containing RGBA pixel data.
	 * */
	function toPixelData( node, options ) {
		return draw( node, options || {} )
			.then( function ( canvas ) {
				return canvas.getContext( '2d' ).getImageData(
					0,
					0,
					util.width( node ),
					util.height( node )
				).data;
			} );
	}

	/**
	 * @param {Node} node - The DOM Node object to render
	 * @param {Object} options - Rendering options, @see {@link toSvg}
	 * @return {Promise} - A promise that is fulfilled with a PNG image data URL
	 * */
	function toPng( node, options ) {
		return draw( node, options || {} )
			.then( function ( canvas ) {
				return canvas.toDataURL();
			} );
	}

	/**
	 * @param {Node} node - The DOM Node object to render
	 * @param {Object} options - Rendering options, @see {@link toSvg}
	 * @return {Promise} - A promise that is fulfilled with a JPEG image data URL
	 * */
	function toJpeg( node, options ) {
		options = options || {};
		return draw( node, options )
			.then( function ( canvas ) {
				return canvas.toDataURL( 'image/jpeg', options.quality || 1.0 );
			} );
	}

	/**
	 * @param {Node} node - The DOM Node object to render
	 * @param {Object} options - Rendering options, @see {@link toSvg}
	 * @return {Promise} - A promise that is fulfilled with a PNG image blob
	 * */
	function toBlob( node, options ) {
		return draw( node, options || {} )
			.then( util.canvasToBlob );
	}

	function copyOptions( options ) {
		// Copy options to impl options for use in impl
		if ( typeof (options.imagePlaceholder) === 'undefined' ) {
			domtoimage.impl.options.imagePlaceholder = defaultOptions.imagePlaceholder;
		} else {
			domtoimage.impl.options.imagePlaceholder = options.imagePlaceholder;
		}

		if ( typeof (options.cacheBust) === 'undefined' ) {
			domtoimage.impl.options.cacheBust = defaultOptions.cacheBust;
		} else {
			domtoimage.impl.options.cacheBust = options.cacheBust;
		}
	}

	function draw( domNode, options ) {
		return toSvg( domNode, options )
			.then( util.makeImage )
			.then( util.delay( 100 ) )
			.then( function ( image ) {
				var canvas = newCanvas( domNode );
				canvas.getContext( '2d' ).drawImage( image, 0, 0 );
				return canvas;
			} );

		function newCanvas( domNode ) {
			var canvas = document.createElement( 'canvas' );
			canvas.width = options.width || util.width( domNode );
			canvas.height = options.height || util.height( domNode );

			if ( options.bgcolor ) {
				var ctx = canvas.getContext( '2d' );
				ctx.fillStyle = options.bgcolor;
				ctx.fillRect( 0, 0, canvas.width, canvas.height );
			}

			return canvas;
		}
	}

	function cloneNode( node, filter, root ) {
		if ( ! root && filter && ! filter( node ) ) return Promise.resolve();

		return Promise.resolve( node )
			.then( makeNodeCopy )
			.then( function ( clone ) {
				return cloneChildren( node, clone, filter );
			} )
			.then( function ( clone ) {
				return processClone( node, clone );
			} );

		function makeNodeCopy( node ) {
			if ( node instanceof HTMLCanvasElement ) return util.makeImage( node.toDataURL() );
			return node.cloneNode( false );
		}

		function cloneChildren( original, clone, filter ) {
			var children = original.childNodes;
			if ( children.length === 0 ) return Promise.resolve( clone );

			return cloneChildrenInOrder( clone, util.asArray( children ), filter )
				.then( function () {
					return clone;
				} );

			function cloneChildrenInOrder( parent, children, filter ) {
				var done = Promise.resolve();
				children.forEach( function ( child ) {
					done = done
						.then( function () {
							return cloneNode( child, filter );
						} )
						.then( function ( childClone ) {
							if ( childClone ) parent.appendChild( childClone );
						} );
				} );
				return done;
			}
		}

		function processClone( original, clone ) {
			if ( ! (clone instanceof Element) ) return clone;

			return Promise.resolve()
				.then( cloneStyle )
				.then( clonePseudoElements )
				.then( copyUserInput )
				.then( fixSvg )
				.then( function () {
					return clone;
				} );

			function cloneStyle() {
				copyStyle( window.getComputedStyle( original ), clone.style );

				function copyStyle( source, target ) {
					if ( source.cssText ) target.cssText = source.cssText;
					else copyProperties( source, target );

					function copyProperties( source, target ) {
						util.asArray( source ).forEach( function ( name ) {
							target.setProperty(
								name,
								source.getPropertyValue( name ),
								source.getPropertyPriority( name )
							);
						} );
					}
				}
			}

			function clonePseudoElements() {
				[':before', ':after'].forEach( function ( element ) {
					clonePseudoElement( element );
				} );

				function clonePseudoElement( element ) {
					var style = window.getComputedStyle( original, element );
					var content = style.getPropertyValue( 'content' );

					if ( content === '' || content === 'none' ) return;

					var className = util.uid();
					clone.className = clone.className + ' ' + className;
					var styleElement = document.createElement( 'style' );
					styleElement.appendChild( formatPseudoElementStyle( className, element, style ) );
					clone.appendChild( styleElement );

					function formatPseudoElementStyle( className, element, style ) {
						var selector = '.' + className + ':' + element;
						var cssText = style.cssText ? formatCssText( style ) : formatCssProperties( style );
						return document.createTextNode( selector + '{' + cssText + '}' );

						function formatCssText( style ) {
							var content = style.getPropertyValue( 'content' );
							return style.cssText + ' content: ' + content + ';';
						}

						function formatCssProperties( style ) {

							return util.asArray( style )
								.map( formatProperty )
								.join( '; ' ) + ';';

							function formatProperty( name ) {
								return name + ': ' +
									style.getPropertyValue( name ) +
									(style.getPropertyPriority( name ) ? ' !important' : '');
							}
						}
					}
				}
			}

			function copyUserInput() {
				if ( original instanceof HTMLTextAreaElement ) clone.innerHTML = original.value;
				if ( original instanceof HTMLInputElement ) clone.setAttribute( "value", original.value );
			}

			function fixSvg() {
				if ( ! (clone instanceof SVGElement) ) return;
				clone.setAttribute( 'xmlns', 'http://www.w3.org/2000/svg' );

				if ( ! (clone instanceof SVGRectElement) ) return;
				['width', 'height'].forEach( function ( attribute ) {
					var value = clone.getAttribute( attribute );
					if ( ! value ) return;

					clone.style.setProperty( attribute, value );
				} );
			}
		}
	}

	function embedFonts( node ) {
		return fontFaces.resolveAll()
			.then( function ( cssText ) {
				var styleNode = document.createElement( 'style' );
				node.appendChild( styleNode );
				styleNode.appendChild( document.createTextNode( cssText ) );
				return node;
			} );
	}

	function inlineImages( node ) {
		return images.inlineAll( node )
			.then( function () {
				return node;
			} );
	}

	function makeSvgDataUri( node, width, height ) {
		return Promise.resolve( node )
			.then( function ( node ) {
				node.setAttribute( 'xmlns', 'http://www.w3.org/1999/xhtml' );
				return new XMLSerializer().serializeToString( node );
			} )
			.then( util.escapeXhtml )
			.then( function ( xhtml ) {
				return '<foreignObject x="0" y="0" width="100%" height="100%">' + xhtml + '</foreignObject>';
			} )
			.then( function ( foreignObject ) {
				return '<svg xmlns="http://www.w3.org/2000/svg" width="' + width + '" height="' + height + '">' +
					foreignObject + '</svg>';
			} )
			.then( function ( svg ) {
				return 'data:image/svg+xml;charset=utf-8,' + svg;
			} );
	}

	function newUtil() {
		return {
			escape: escape,
			parseExtension: parseExtension,
			mimeType: mimeType,
			dataAsUrl: dataAsUrl,
			isDataUrl: isDataUrl,
			canvasToBlob: canvasToBlob,
			resolveUrl: resolveUrl,
			getAndEncode: getAndEncode,
			uid: uid(),
			delay: delay,
			asArray: asArray,
			escapeXhtml: escapeXhtml,
			makeImage: makeImage,
			width: width,
			height: height
		};

		function mimes() {
			/*
			 * Only WOFF and EOT mime types for fonts are 'real'
			 * see http://www.iana.org/assignments/media-types/media-types.xhtml
			 */
			var WOFF = 'application/font-woff';
			var JPEG = 'image/jpeg';

			return {
				'woff': WOFF,
				'woff2': WOFF,
				'ttf': 'application/font-truetype',
				'eot': 'application/vnd.ms-fontobject',
				'png': 'image/png',
				'jpg': JPEG,
				'jpeg': JPEG,
				'gif': 'image/gif',
				'tiff': 'image/tiff',
				'svg': 'image/svg+xml'
			};
		}

		function parseExtension( url ) {
			var match = /\.([^\.\/]*?)$/g.exec( url );
			if ( match ) return match[ 1 ];
			else return '';
		}

		function mimeType( url ) {
			var extension = parseExtension( url ).toLowerCase();
			return mimes()[ extension ] || '';
		}

		function isDataUrl( url ) {
			return url.search( /^(data:)/ ) !== -1;
		}

		function toBlob( canvas ) {
			return new Promise( function ( resolve ) {
				var binaryString = window.atob( canvas.toDataURL().split( ',' )[ 1 ] );
				var length = binaryString.length;
				var binaryArray = new Uint8Array( length );

				for ( var i = 0; i < length; i++ )
					binaryArray[ i ] = binaryString.charCodeAt( i );

				resolve( new Blob( [binaryArray], {
					type: 'image/png'
				} ) );
			} );
		}

		function canvasToBlob( canvas ) {
			if ( canvas.toBlob )
				return new Promise( function ( resolve ) {
					canvas.toBlob( resolve );
				} );

			return toBlob( canvas );
		}

		function resolveUrl( url, baseUrl ) {
			var doc = document.implementation.createHTMLDocument();
			var base = doc.createElement( 'base' );
			doc.head.appendChild( base );
			var a = doc.createElement( 'a' );
			doc.body.appendChild( a );
			base.href = baseUrl;
			a.href = url;
			return a.href;
		}

		function uid() {
			var index = 0;

			return function () {
				return 'u' + fourRandomChars() + index++;

				function fourRandomChars() {
					/* see http://stackoverflow.com/a/6248722/2519373 */
					return ('0000' + (Math.random() * Math.pow( 36, 4 ) << 0).toString( 36 )).slice( -4 );
				}
			};
		}

		function makeImage( uri ) {
			return new Promise( function ( resolve, reject ) {
				var image = new Image();
				image.onload = function () {
					resolve( image );
				};
				image.onerror = reject;
				image.src = uri;
			} );
		}

		function getAndEncode( url ) {
			var TIMEOUT = 30000;
			if ( domtoimage.impl.options.cacheBust ) {
				// Cache bypass so we dont have CORS issues with cached images
				// Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache
				url += ((/\?/).test( url ) ? "&" : "?") + (new Date()).getTime();
			}

			return new Promise( function ( resolve ) {
				var request = new XMLHttpRequest();

				request.onreadystatechange = done;
				request.ontimeout = timeout;
				request.responseType = 'blob';
				request.timeout = TIMEOUT;
				request.open( 'GET', url, true );
				request.send();

				var placeholder;
				if ( domtoimage.impl.options.imagePlaceholder ) {
					var split = domtoimage.impl.options.imagePlaceholder.split( /,/ );
					if ( split && split[ 1 ] ) {
						placeholder = split[ 1 ];
					}
				}

				function done() {
					if ( request.readyState !== 4 ) return;

					if ( request.status !== 200 ) {
						if ( placeholder ) {
							resolve( placeholder );
						} else {
							fail( 'cannot fetch resource: ' + url + ', status: ' + request.status );
						}

						return;
					}

					var encoder = new FileReader();
					encoder.onloadend = function () {
						var content = encoder.result.split( /,/ )[ 1 ];
						resolve( content );
					};
					encoder.readAsDataURL( request.response );
				}

				function timeout() {
					if ( placeholder ) {
						resolve( placeholder );
					} else {
						fail( 'timeout of ' + TIMEOUT + 'ms occured while fetching resource: ' + url );
					}
				}

				function fail( message ) {
					console.error( message );
					resolve( '' );
				}
			} );
		}

		function dataAsUrl( content, type ) {
			return 'data:' + type + ';base64,' + content;
		}

		function escape( string ) {
			return string.replace( /([.*+?^${}()|\[\]\/\\])/g, '\\$1' );
		}

		function delay( ms ) {
			return function ( arg ) {
				return new Promise( function ( resolve ) {
					setTimeout( function () {
						resolve( arg );
					}, ms );
				} );
			};
		}

		function asArray( arrayLike ) {
			var array = [];
			var length = arrayLike.length;
			for ( var i = 0; i < length; i++ ) array.push( arrayLike[ i ] );
			return array;
		}

		function escapeXhtml( string ) {
			return string.replace( /#/g, '%23' ).replace( /\n/g, '%0A' );
		}

		function width( node ) {
			var leftBorder = px( node, 'border-left-width' );
			var rightBorder = px( node, 'border-right-width' );
			return node.scrollWidth + leftBorder + rightBorder;
		}

		function height( node ) {
			var topBorder = px( node, 'border-top-width' );
			var bottomBorder = px( node, 'border-bottom-width' );
			return node.scrollHeight + topBorder + bottomBorder;
		}

		function px( node, styleProperty ) {
			var value = window.getComputedStyle( node ).getPropertyValue( styleProperty );
			return parseFloat( value.replace( 'px', '' ) );
		}
	}

	function newInliner() {
		var URL_REGEX = /url\(['"]?([^'"]+?)['"]?\)/g;

		return {
			inlineAll: inlineAll,
			shouldProcess: shouldProcess,
			impl: {
				readUrls: readUrls,
				inline: inline
			}
		};

		function shouldProcess( string ) {
			return string.search( URL_REGEX ) !== -1;
		}

		function readUrls( string ) {
			var result = [];
			var match;
			while ( (match = URL_REGEX.exec( string )) !== null ) {
				result.push( match[ 1 ] );
			}
			return result.filter( function ( url ) {
				return ! util.isDataUrl( url );
			} );
		}

		function inline( string, url, baseUrl, get ) {
			return Promise.resolve( url )
				.then( function ( url ) {
					return baseUrl ? util.resolveUrl( url, baseUrl ) : url;
				} )
				.then( get || util.getAndEncode )
				.then( function ( data ) {
					return util.dataAsUrl( data, util.mimeType( url ) );
				} )
				.then( function ( dataUrl ) {
					return string.replace( urlAsRegex( url ), '$1' + dataUrl + '$3' );
				} );

			function urlAsRegex( url ) {
				return new RegExp( '(url\\([\'"]?)(' + util.escape( url ) + ')([\'"]?\\))', 'g' );
			}
		}

		function inlineAll( string, baseUrl, get ) {
			if ( nothingToInline() ) return Promise.resolve( string );

			return Promise.resolve( string )
				.then( readUrls )
				.then( function ( urls ) {
					var done = Promise.resolve( string );
					urls.forEach( function ( url ) {
						done = done.then( function ( string ) {
							return inline( string, url, baseUrl, get );
						} );
					} );
					return done;
				} );

			function nothingToInline() {
				return ! shouldProcess( string );
			}
		}
	}

	function newFontFaces() {
		return {
			resolveAll: resolveAll,
			impl: {
				readAll: readAll
			}
		};

		function resolveAll() {
			return readAll( document )
				.then( function ( webFonts ) {
					return Promise.all(
						webFonts.map( function ( webFont ) {
							return webFont.resolve();
						} )
					);
				} )
				.then( function ( cssStrings ) {
					return cssStrings.join( '\n' );
				} );
		}

		function readAll() {
			return Promise.resolve( util.asArray( document.styleSheets ) )
				.then( getCssRules )
				.then( selectWebFontRules )
				.then( function ( rules ) {
					return rules.map( newWebFont );
				} );

			function selectWebFontRules( cssRules ) {
				return cssRules
					.filter( function ( rule ) {
						return rule.type === CSSRule.FONT_FACE_RULE;
					} )
					.filter( function ( rule ) {
						return inliner.shouldProcess( rule.style.getPropertyValue( 'src' ) );
					} );
			}

			function getCssRules( styleSheets ) {
				var cssRules = [];
				styleSheets.forEach( function ( sheet ) {
					try {
						util.asArray( sheet.cssRules || [] ).forEach( cssRules.push.bind( cssRules ) );
					} catch ( e ) {
						console.log( 'Error while reading CSS rules from ' + sheet.href, e.toString() );
					}
				} );
				return cssRules;
			}

			function newWebFont( webFontRule ) {
				return {
					resolve: function resolve() {
						var baseUrl = (webFontRule.parentStyleSheet || {}).href;
						return inliner.inlineAll( webFontRule.cssText, baseUrl );
					},
					src: function () {
						return webFontRule.style.getPropertyValue( 'src' );
					}
				};
			}
		}
	}

	function newImages() {
		return {
			inlineAll: inlineAll,
			impl: {
				newImage: newImage
			}
		};

		function newImage( element ) {
			return {
				inline: inline
			};

			function inline( get ) {
				if ( util.isDataUrl( element.src ) ) return Promise.resolve();

				return Promise.resolve( element.src )
					.then( get || util.getAndEncode )
					.then( function ( data ) {
						return util.dataAsUrl( data, util.mimeType( element.src ) );
					} )
					.then( function ( dataUrl ) {
						return new Promise( function ( resolve, reject ) {
							element.onload = resolve;
							element.onerror = reject;
							element.src = dataUrl;
						} );
					} );
			}
		}

		function inlineAll( node ) {
			if ( ! (node instanceof Element) ) return Promise.resolve( node );

			return inlineBackground( node )
				.then( function () {
					if ( node instanceof HTMLImageElement )
						return newImage( node ).inline();
					else
						return Promise.all(
							util.asArray( node.childNodes ).map( function ( child ) {
								return inlineAll( child );
							} )
						);
				} );

			function inlineBackground( node ) {
				var background = node.style.getPropertyValue( 'background' );

				if ( ! background ) return Promise.resolve( node );

				return inliner.inlineAll( background )
					.then( function ( inlined ) {
						node.style.setProperty(
							'background',
							inlined,
							node.style.getPropertyPriority( 'background' )
						);
					} )
					.then( function () {
						return node;
					} );
			}
		}
	}
})( this );
assets/lib/smartmenus/jquery.smartmenus.js000064400000130347150755004310015074 0ustar00/*!
 * SmartMenus jQuery Plugin - v1.0.1 - November 1, 2016
 * http://www.smartmenus.org/
 *
 * Copyright Vasil Dinkov, Vadikom Web Ltd.
 * http://vadikom.com
 *
 * Licensed MIT
 */

(function(factory) {
	if (typeof define === 'function' && define.amd) {
		// AMD
		define(['jquery'], factory);
	} else if (typeof module === 'object' && typeof module.exports === 'object') {
		// CommonJS
		module.exports = factory(require('jquery'));
	} else {
		// Global jQuery
		factory(jQuery);
	}
} (function($) {

	var menuTrees = [],
		IE = !!window.createPopup, // detect it for the iframe shim
		mouse = false, // optimize for touch by default - we will detect for mouse input
		touchEvents = 'ontouchstart' in window, // we use this just to choose between toucn and pointer events, not for touch screen detection
		mouseDetectionEnabled = false,
		requestAnimationFrame = window.requestAnimationFrame || function(callback) { return setTimeout(callback, 1000 / 60); },
		cancelAnimationFrame = window.cancelAnimationFrame || function(id) { clearTimeout(id); };

	// Handle detection for mouse input (i.e. desktop browsers, tablets with a mouse, etc.)
	function initMouseDetection(disable) {
		var eNS = '.smartmenus_mouse';
		if (!mouseDetectionEnabled && !disable) {
			// if we get two consecutive mousemoves within 2 pixels from each other and within 300ms, we assume a real mouse/cursor is present
			// in practice, this seems like impossible to trick unintentianally with a real mouse and a pretty safe detection on touch devices (even with older browsers that do not support touch events)
			var firstTime = true,
				lastMove = null;
			$(document).bind(getEventsNS([
				['mousemove', function(e) {
					var thisMove = { x: e.pageX, y: e.pageY, timeStamp: new Date().getTime() };
					if (lastMove) {
						var deltaX = Math.abs(lastMove.x - thisMove.x),
							deltaY = Math.abs(lastMove.y - thisMove.y);
	 					if ((deltaX > 0 || deltaY > 0) && deltaX <= 2 && deltaY <= 2 && thisMove.timeStamp - lastMove.timeStamp <= 300) {
							mouse = true;
							// if this is the first check after page load, check if we are not over some item by chance and call the mouseenter handler if yes
							if (firstTime) {
								var $a = $(e.target).closest('a');
								if ($a.is('a')) {
									$.each(menuTrees, function() {
										if ($.contains(this.$root[0], $a[0])) {
											this.itemEnter({ currentTarget: $a[0] });
											return false;
										}
									});
								}
								firstTime = false;
							}
						}
					}
					lastMove = thisMove;
				}],
				[touchEvents ? 'touchstart' : 'pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut', function(e) {
					if (isTouchEvent(e.originalEvent)) {
						mouse = false;
					}
				}]
			], eNS));
			mouseDetectionEnabled = true;
		} else if (mouseDetectionEnabled && disable) {
			$(document).unbind(eNS);
			mouseDetectionEnabled = false;
		}
	}

	function isTouchEvent(e) {
		return !/^(4|mouse)$/.test(e.pointerType);
	}

	// returns a jQuery bind() ready object
	function getEventsNS(defArr, eNS) {
		if (!eNS) {
			eNS = '';
		}
		var obj = {};
		$.each(defArr, function(index, value) {
			obj[value[0].split(' ').join(eNS + ' ') + eNS] = value[1];
		});
		return obj;
	}

	$.SmartMenus = function(elm, options) {
		this.$root = $(elm);
		this.opts = options;
		this.rootId = ''; // internal
		this.accessIdPrefix = '';
		this.$subArrow = null;
		this.activatedItems = []; // stores last activated A's for each level
		this.visibleSubMenus = []; // stores visible sub menus UL's (might be in no particular order)
		this.showTimeout = 0;
		this.hideTimeout = 0;
		this.scrollTimeout = 0;
		this.clickActivated = false;
		this.focusActivated = false;
		this.zIndexInc = 0;
		this.idInc = 0;
		this.$firstLink = null; // we'll use these for some tests
		this.$firstSub = null; // at runtime so we'll cache them
		this.disabled = false;
		this.$disableOverlay = null;
		this.$touchScrollingSub = null;
		this.cssTransforms3d = 'perspective' in elm.style || 'webkitPerspective' in elm.style;
		this.wasCollapsible = false;
		this.init();
	};

	$.extend($.SmartMenus, {
		hideAll: function() {
			$.each(menuTrees, function() {
				this.menuHideAll();
			});
		},
		destroy: function() {
			while (menuTrees.length) {
				menuTrees[0].destroy();
			}
			initMouseDetection(true);
		},
		prototype: {
			init: function(refresh) {
				var self = this;

				if (!refresh) {
					menuTrees.push(this);

					this.rootId = (new Date().getTime() + Math.random() + '').replace(/\D/g, '');
					this.accessIdPrefix = 'sm-' + this.rootId + '-';

					if (this.$root.hasClass('sm-rtl')) {
						this.opts.rightToLeftSubMenus = true;
					}

					// init root (main menu)
					var eNS = '.smartmenus';
					this.$root
						.data('smartmenus', this)
						.attr('data-smartmenus-id', this.rootId)
						.dataSM('level', 1)
						.bind(getEventsNS([
							['mouseover focusin', $.proxy(this.rootOver, this)],
							['mouseout focusout', $.proxy(this.rootOut, this)],
							['keydown', $.proxy(this.rootKeyDown, this)]
						], eNS))
						.delegate('a', getEventsNS([
							['mouseenter', $.proxy(this.itemEnter, this)],
							['mouseleave', $.proxy(this.itemLeave, this)],
							['mousedown', $.proxy(this.itemDown, this)],
							['focus', $.proxy(this.itemFocus, this)],
							['blur', $.proxy(this.itemBlur, this)],
							['click', $.proxy(this.itemClick, this)]
						], eNS));

					// hide menus on tap or click outside the root UL
					eNS += this.rootId;
					if (this.opts.hideOnClick) {
						$(document).bind(getEventsNS([
							['touchstart', $.proxy(this.docTouchStart, this)],
							['touchmove', $.proxy(this.docTouchMove, this)],
							['touchend', $.proxy(this.docTouchEnd, this)],
							// for Opera Mobile < 11.5, webOS browser, etc. we'll check click too
							['click', $.proxy(this.docClick, this)]
						], eNS));
					}
					// hide sub menus on resize
					$(window).bind(getEventsNS([['resize orientationchange', $.proxy(this.winResize, this)]], eNS));

					if (this.opts.subIndicators) {
						this.$subArrow = $('<span/>').addClass('sub-arrow');
						if (this.opts.subIndicatorsText) {
							this.$subArrow.html(this.opts.subIndicatorsText);
						}
					}

					// make sure mouse detection is enabled
					initMouseDetection();
				}

				// init sub menus
				this.$firstSub = this.$root.find('ul').each(function() { self.menuInit($(this)); }).eq(0);

				this.$firstLink = this.$root.find('a').eq(0);

				// find current item
				if (this.opts.markCurrentItem) {
					var reDefaultDoc = /(index|default)\.[^#\?\/]*/i,
						reHash = /#.*/,
						locHref = window.location.href.replace(reDefaultDoc, ''),
						locHrefNoHash = locHref.replace(reHash, '');
					this.$root.find('a').each(function() {
						var href = this.href.replace(reDefaultDoc, ''),
							$this = $(this);
						if (href == locHref || href == locHrefNoHash) {
							$this.addClass('current');
							if (self.opts.markCurrentTree) {
								$this.parentsUntil('[data-smartmenus-id]', 'ul').each(function() {
									$(this).dataSM('parent-a').addClass('current');
								});
							}
						}
					});
				}

				// save initial state
				this.wasCollapsible = this.isCollapsible();
			},
			destroy: function(refresh) {
				if (!refresh) {
					var eNS = '.smartmenus';
					this.$root
						.removeData('smartmenus')
						.removeAttr('data-smartmenus-id')
						.removeDataSM('level')
						.unbind(eNS)
						.undelegate(eNS);
					eNS += this.rootId;
					$(document).unbind(eNS);
					$(window).unbind(eNS);
					if (this.opts.subIndicators) {
						this.$subArrow = null;
					}
				}
				this.menuHideAll();
				var self = this;
				this.$root.find('ul').each(function() {
						var $this = $(this);
						if ($this.dataSM('scroll-arrows')) {
							$this.dataSM('scroll-arrows').remove();
						}
						if ($this.dataSM('shown-before')) {
							if (self.opts.subMenusMinWidth || self.opts.subMenusMaxWidth) {
								$this.css({ width: '', minWidth: '', maxWidth: '' }).removeClass('sm-nowrap');
							}
							if ($this.dataSM('scroll-arrows')) {
								$this.dataSM('scroll-arrows').remove();
							}
							$this.css({ zIndex: '', top: '', left: '', marginLeft: '', marginTop: '', display: '' });
						}
						if (($this.attr('id') || '').indexOf(self.accessIdPrefix) == 0) {
							$this.removeAttr('id');
						}
					})
					.removeDataSM('in-mega')
					.removeDataSM('shown-before')
					.removeDataSM('ie-shim')
					.removeDataSM('scroll-arrows')
					.removeDataSM('parent-a')
					.removeDataSM('level')
					.removeDataSM('beforefirstshowfired')
					.removeAttr('role')
					.removeAttr('aria-hidden')
					.removeAttr('aria-labelledby')
					.removeAttr('aria-expanded');
				this.$root.find('a.has-submenu').each(function() {
						var $this = $(this);
						if ($this.attr('id').indexOf(self.accessIdPrefix) == 0) {
							$this.removeAttr('id');
						}
					})
					.removeClass('has-submenu')
					.removeDataSM('sub')
					.removeAttr('aria-haspopup')
					.removeAttr('aria-controls')
					.removeAttr('aria-expanded')
					.closest('li').removeDataSM('sub');
				if (this.opts.subIndicators) {
					this.$root.find('span.sub-arrow').remove();
				}
				if (this.opts.markCurrentItem) {
					this.$root.find('a.current').removeClass('current');
				}
				if (!refresh) {
					this.$root = null;
					this.$firstLink = null;
					this.$firstSub = null;
					if (this.$disableOverlay) {
						this.$disableOverlay.remove();
						this.$disableOverlay = null;
					}
					menuTrees.splice($.inArray(this, menuTrees), 1);
				}
			},
			disable: function(noOverlay) {
				if (!this.disabled) {
					this.menuHideAll();
					// display overlay over the menu to prevent interaction
					if (!noOverlay && !this.opts.isPopup && this.$root.is(':visible')) {
						var pos = this.$root.offset();
						this.$disableOverlay = $('<div class="sm-jquery-disable-overlay"/>').css({
							position: 'absolute',
							top: pos.top,
							left: pos.left,
							width: this.$root.outerWidth(),
							height: this.$root.outerHeight(),
							zIndex: this.getStartZIndex(true),
							opacity: 0
						}).appendTo(document.body);
					}
					this.disabled = true;
				}
			},
			docClick: function(e) {
				if (this.$touchScrollingSub) {
					this.$touchScrollingSub = null;
					return;
				}
				// hide on any click outside the menu or on a menu link
				if (this.visibleSubMenus.length && !$.contains(this.$root[0], e.target) || $(e.target).is('a')) {
					this.menuHideAll();
				}
			},
			docTouchEnd: function(e) {
				if (!this.lastTouch) {
					return;
				}
				if (this.visibleSubMenus.length && (this.lastTouch.x2 === undefined || this.lastTouch.x1 == this.lastTouch.x2) && (this.lastTouch.y2 === undefined || this.lastTouch.y1 == this.lastTouch.y2) && (!this.lastTouch.target || !$.contains(this.$root[0], this.lastTouch.target))) {
					if (this.hideTimeout) {
						clearTimeout(this.hideTimeout);
						this.hideTimeout = 0;
					}
					// hide with a delay to prevent triggering accidental unwanted click on some page element
					var self = this;
					this.hideTimeout = setTimeout(function() { self.menuHideAll(); }, 350);
				}
				this.lastTouch = null;
			},
			docTouchMove: function(e) {
				if (!this.lastTouch) {
					return;
				}
				var touchPoint = e.originalEvent.touches[0];
				this.lastTouch.x2 = touchPoint.pageX;
				this.lastTouch.y2 = touchPoint.pageY;
			},
			docTouchStart: function(e) {
				var touchPoint = e.originalEvent.touches[0];
				this.lastTouch = { x1: touchPoint.pageX, y1: touchPoint.pageY, target: touchPoint.target };
			},
			enable: function() {
				if (this.disabled) {
					if (this.$disableOverlay) {
						this.$disableOverlay.remove();
						this.$disableOverlay = null;
					}
					this.disabled = false;
				}
			},
			getClosestMenu: function(elm) {
				var $closestMenu = $(elm).closest('ul');
				while ($closestMenu.dataSM('in-mega')) {
					$closestMenu = $closestMenu.parent().closest('ul');
				}
				return $closestMenu[0] || null;
			},
			getHeight: function($elm) {
				return this.getOffset($elm, true);
			},
			// returns precise width/height float values
			getOffset: function($elm, height) {
				var old;
				if ($elm.css('display') == 'none') {
					old = { position: $elm[0].style.position, visibility: $elm[0].style.visibility };
					$elm.css({ position: 'absolute', visibility: 'hidden' }).show();
				}
				var box = $elm[0].getBoundingClientRect && $elm[0].getBoundingClientRect(),
					val = box && (height ? box.height || box.bottom - box.top : box.width || box.right - box.left);
				if (!val && val !== 0) {
					val = height ? $elm[0].offsetHeight : $elm[0].offsetWidth;
				}
				if (old) {
					$elm.hide().css(old);
				}
				return val;
			},
			getStartZIndex: function(root) {
				var zIndex = parseInt(this[root ? '$root' : '$firstSub'].css('z-index'));
				if (!root && isNaN(zIndex)) {
					zIndex = parseInt(this.$root.css('z-index'));
				}
				return !isNaN(zIndex) ? zIndex : 1;
			},
			getTouchPoint: function(e) {
				return e.touches && e.touches[0] || e.changedTouches && e.changedTouches[0] || e;
			},
			getViewport: function(height) {
				var name = height ? 'Height' : 'Width',
					val = document.documentElement['client' + name],
					val2 = window['inner' + name];
				if (val2) {
					val = Math.min(val, val2);
				}
				return val;
			},
			getViewportHeight: function() {
				return this.getViewport(true);
			},
			getViewportWidth: function() {
				return this.getViewport();
			},
			getWidth: function($elm) {
				return this.getOffset($elm);
			},
			handleEvents: function() {
				return !this.disabled && this.isCSSOn();
			},
			handleItemEvents: function($a) {
				return this.handleEvents() && !this.isLinkInMegaMenu($a);
			},
			isCollapsible: function() {
				return this.$firstSub.css('position') == 'static';
			},
			isCSSOn: function() {
				return this.$firstLink.css('display') == 'block';
			},
			isFixed: function() {
				var isFixed = this.$root.css('position') == 'fixed';
				if (!isFixed) {
					this.$root.parentsUntil('body').each(function() {
						if ($(this).css('position') == 'fixed') {
							isFixed = true;
							return false;
						}
					});
				}
				return isFixed;
			},
			isLinkInMegaMenu: function($a) {
				return $(this.getClosestMenu($a[0])).hasClass('mega-menu');
			},
			isTouchMode: function() {
				return !mouse || this.opts.noMouseOver || this.isCollapsible();
			},
			itemActivate: function($a, focus) {
				var $ul = $a.closest('ul'),
					level = $ul.dataSM('level');
				// if for some reason the parent item is not activated (e.g. this is an API call to activate the item), activate all parent items first
				if (level > 1 && (!this.activatedItems[level - 2] || this.activatedItems[level - 2][0] != $ul.dataSM('parent-a')[0])) {
					var self = this;
					$($ul.parentsUntil('[data-smartmenus-id]', 'ul').get().reverse()).add($ul).each(function() {
						self.itemActivate($(this).dataSM('parent-a'));
					});
				}
				// hide any visible deeper level sub menus
				if (!this.isCollapsible() || focus) {
					this.menuHideSubMenus(!this.activatedItems[level - 1] || this.activatedItems[level - 1][0] != $a[0] ? level - 1 : level);
				}
				// save new active item for this level
				this.activatedItems[level - 1] = $a;
				if (this.$root.triggerHandler('activate.smapi', $a[0]) === false) {
					return;
				}
				// show the sub menu if this item has one
				var $sub = $a.dataSM('sub');
				if ($sub && (this.isTouchMode() || (!this.opts.showOnClick || this.clickActivated))) {
					this.menuShow($sub);
				}
			},
			itemBlur: function(e) {
				var $a = $(e.currentTarget);
				if (!this.handleItemEvents($a)) {
					return;
				}
				this.$root.triggerHandler('blur.smapi', $a[0]);
			},
			itemClick: function(e) {
				var $a = $(e.currentTarget);
				if (!this.handleItemEvents($a)) {
					return;
				}
				if (this.$touchScrollingSub && this.$touchScrollingSub[0] == $a.closest('ul')[0]) {
					this.$touchScrollingSub = null;
					e.stopPropagation();
					return false;
				}
				if (this.$root.triggerHandler('click.smapi', $a[0]) === false) {
					return false;
				}
				var subArrowClicked = $(e.target).is('span.sub-arrow'),
					$sub = $a.dataSM('sub'),
					firstLevelSub = $sub ? $sub.dataSM('level') == 2 : false;
				// if the sub is not visible
				if ($sub && !$sub.is(':visible')) {
					if (this.opts.showOnClick && firstLevelSub) {
						this.clickActivated = true;
					}
					// try to activate the item and show the sub
					this.itemActivate($a);
					// if "itemActivate" showed the sub, prevent the click so that the link is not loaded
					// if it couldn't show it, then the sub menus are disabled with an !important declaration (e.g. via mobile styles) so let the link get loaded
					if ($sub.is(':visible')) {
						this.focusActivated = true;
						return false;
					}
				} else if (this.isCollapsible() && subArrowClicked) {
					this.itemActivate($a);
					this.menuHide($sub);
					return false;
				}
				if (this.opts.showOnClick && firstLevelSub || $a.hasClass('disabled') || this.$root.triggerHandler('select.smapi', $a[0]) === false) {
					return false;
				}
			},
			itemDown: function(e) {
				var $a = $(e.currentTarget);
				if (!this.handleItemEvents($a)) {
					return;
				}
				$a.dataSM('mousedown', true);
			},
			itemEnter: function(e) {
				var $a = $(e.currentTarget);
				if (!this.handleItemEvents($a)) {
					return;
				}
				if (!this.isTouchMode()) {
					if (this.showTimeout) {
						clearTimeout(this.showTimeout);
						this.showTimeout = 0;
					}
					var self = this;
					this.showTimeout = setTimeout(function() { self.itemActivate($a); }, this.opts.showOnClick && $a.closest('ul').dataSM('level') == 1 ? 1 : this.opts.showTimeout);
				}
				this.$root.triggerHandler('mouseenter.smapi', $a[0]);
			},
			itemFocus: function(e) {
				var $a = $(e.currentTarget);
				if (!this.handleItemEvents($a)) {
					return;
				}
				// fix (the mousedown check): in some browsers a tap/click produces consecutive focus + click events so we don't need to activate the item on focus
				if (this.focusActivated && (!this.isTouchMode() || !$a.dataSM('mousedown')) && (!this.activatedItems.length || this.activatedItems[this.activatedItems.length - 1][0] != $a[0])) {
					this.itemActivate($a, true);
				}
				this.$root.triggerHandler('focus.smapi', $a[0]);
			},
			itemLeave: function(e) {
				var $a = $(e.currentTarget);
				if (!this.handleItemEvents($a)) {
					return;
				}
				if (!this.isTouchMode()) {
					$a[0].blur();
					if (this.showTimeout) {
						clearTimeout(this.showTimeout);
						this.showTimeout = 0;
					}
				}
				$a.removeDataSM('mousedown');
				this.$root.triggerHandler('mouseleave.smapi', $a[0]);
			},
			menuHide: function($sub) {
				if (this.$root.triggerHandler('beforehide.smapi', $sub[0]) === false) {
					return;
				}
				$sub.stop(true, true);
				if ($sub.css('display') != 'none') {
					var complete = function() {
						// unset z-index
						$sub.css('z-index', '');
					};
					// if sub is collapsible (mobile view)
					if (this.isCollapsible()) {
						if (this.opts.collapsibleHideFunction) {
							this.opts.collapsibleHideFunction.call(this, $sub, complete);
						} else {
							$sub.hide(this.opts.collapsibleHideDuration, complete);
						}
					} else {
						if (this.opts.hideFunction) {
							this.opts.hideFunction.call(this, $sub, complete);
						} else {
							$sub.hide(this.opts.hideDuration, complete);
						}
					}
					// remove IE iframe shim
					if ($sub.dataSM('ie-shim')) {
						$sub.dataSM('ie-shim').remove().css({ '-webkit-transform': '', transform: '' });
					}
					// deactivate scrolling if it is activated for this sub
					if ($sub.dataSM('scroll')) {
						this.menuScrollStop($sub);
						$sub.css({ 'touch-action': '', '-ms-touch-action': '', '-webkit-transform': '', transform: '' })
							.unbind('.smartmenus_scroll').removeDataSM('scroll').dataSM('scroll-arrows').hide();
					}
					// unhighlight parent item + accessibility
					$sub.dataSM('parent-a').removeClass('highlighted').attr('aria-expanded', 'false');
					$sub.attr({
						'aria-expanded': 'false',
						'aria-hidden': 'true'
					});
					var level = $sub.dataSM('level');
					this.activatedItems.splice(level - 1, 1);
					this.visibleSubMenus.splice($.inArray($sub, this.visibleSubMenus), 1);
					this.$root.triggerHandler('hide.smapi', $sub[0]);
				}
			},
			menuHideAll: function() {
				if (this.showTimeout) {
					clearTimeout(this.showTimeout);
					this.showTimeout = 0;
				}
				// hide all subs
				// if it's a popup, this.visibleSubMenus[0] is the root UL
				var level = this.opts.isPopup ? 1 : 0;
				for (var i = this.visibleSubMenus.length - 1; i >= level; i--) {
					this.menuHide(this.visibleSubMenus[i]);
				}
				// hide root if it's popup
				if (this.opts.isPopup) {
					this.$root.stop(true, true);
					if (this.$root.is(':visible')) {
						if (this.opts.hideFunction) {
							this.opts.hideFunction.call(this, this.$root);
						} else {
							this.$root.hide(this.opts.hideDuration);
						}
						// remove IE iframe shim
						if (this.$root.dataSM('ie-shim')) {
							this.$root.dataSM('ie-shim').remove();
						}
					}
				}
				this.activatedItems = [];
				this.visibleSubMenus = [];
				this.clickActivated = false;
				this.focusActivated = false;
				// reset z-index increment
				this.zIndexInc = 0;
				this.$root.triggerHandler('hideAll.smapi');
			},
			menuHideSubMenus: function(level) {
				for (var i = this.activatedItems.length - 1; i >= level; i--) {
					var $sub = this.activatedItems[i].dataSM('sub');
					if ($sub) {
						this.menuHide($sub);
					}
				}
			},
			menuIframeShim: function($ul) {
				// create iframe shim for the menu
				if (IE && this.opts.overlapControlsInIE && !$ul.dataSM('ie-shim')) {
					$ul.dataSM('ie-shim', $('<iframe/>').attr({ src: 'javascript:0', tabindex: -9 })
						.css({ position: 'absolute', top: 'auto', left: '0', opacity: 0, border: '0' })
					);
				}
			},
			menuInit: function($ul) {
				if (!$ul.dataSM('in-mega')) {
					// mark UL's in mega drop downs (if any) so we can neglect them
					if ($ul.hasClass('mega-menu')) {
						$ul.find('ul').dataSM('in-mega', true);
					}
					// get level (much faster than, for example, using parentsUntil)
					var level = 2,
						par = $ul[0];
					while ((par = par.parentNode.parentNode) != this.$root[0]) {
						level++;
					}
					// cache stuff for quick access
					var $a = $ul.prevAll('a').eq(-1);
					// if the link is nested (e.g. in a heading)
					if (!$a.length) {
						$a = $ul.prevAll().find('a').eq(-1);
					}
					$a.addClass('has-submenu').dataSM('sub', $ul);
					$ul.dataSM('parent-a', $a)
						.dataSM('level', level)
						.parent().dataSM('sub', $ul);
					// accessibility
					var aId = $a.attr('id') || this.accessIdPrefix + (++this.idInc),
						ulId = $ul.attr('id') || this.accessIdPrefix + (++this.idInc);
					$a.attr({
						id: aId,
						'aria-haspopup': 'true',
						'aria-controls': ulId,
						'aria-expanded': 'false'
					});
					$ul.attr({
						id: ulId,
						'role': 'group',
						'aria-hidden': 'true',
						'aria-labelledby': aId,
						'aria-expanded': 'false'
					});
					// add sub indicator to parent item
					if (this.opts.subIndicators) {
						$a[this.opts.subIndicatorsPos](this.$subArrow.clone());
					}
				}
			},
			menuPosition: function($sub) {
				var $a = $sub.dataSM('parent-a'),
					$li = $a.closest('li'),
					$ul = $li.parent(),
					level = $sub.dataSM('level'),
					subW = this.getWidth($sub),
					subH = this.getHeight($sub),
					itemOffset = $a.offset(),
					itemX = itemOffset.left,
					itemY = itemOffset.top,
					itemW = this.getWidth($a),
					itemH = this.getHeight($a),
					$win = $(window),
					winX = $win.scrollLeft(),
					winY = $win.scrollTop(),
					winW = this.getViewportWidth(),
					winH = this.getViewportHeight(),
					horizontalParent = $ul.parent().is('[data-sm-horizontal-sub]') || level == 2 && !$ul.hasClass('sm-vertical'),
					rightToLeft = this.opts.rightToLeftSubMenus && !$li.is('[data-sm-reverse]') || !this.opts.rightToLeftSubMenus && $li.is('[data-sm-reverse]'),
					subOffsetX = level == 2 ? this.opts.mainMenuSubOffsetX : this.opts.subMenusSubOffsetX,
					subOffsetY = level == 2 ? this.opts.mainMenuSubOffsetY : this.opts.subMenusSubOffsetY,
					x, y;
				if (horizontalParent) {
					x = rightToLeft ? itemW - subW - subOffsetX : subOffsetX;
					y = this.opts.bottomToTopSubMenus ? -subH - subOffsetY : itemH + subOffsetY;
				} else {
					x = rightToLeft ? subOffsetX - subW : itemW - subOffsetX;
					y = this.opts.bottomToTopSubMenus ? itemH - subOffsetY - subH : subOffsetY;
				}
				if (this.opts.keepInViewport) {
					var absX = itemX + x,
						absY = itemY + y;
					if (rightToLeft && absX < winX) {
						x = horizontalParent ? winX - absX + x : itemW - subOffsetX;
					} else if (!rightToLeft && absX + subW > winX + winW) {
						x = horizontalParent ? winX + winW - subW - absX + x : subOffsetX - subW;
					}
					if (!horizontalParent) {
						if (subH < winH && absY + subH > winY + winH) {
							y += winY + winH - subH - absY;
						} else if (subH >= winH || absY < winY) {
							y += winY - absY;
						}
					}
					// do we need scrolling?
					// 0.49 used for better precision when dealing with float values
					if (horizontalParent && (absY + subH > winY + winH + 0.49 || absY < winY) || !horizontalParent && subH > winH + 0.49) {
						var self = this;
						if (!$sub.dataSM('scroll-arrows')) {
							$sub.dataSM('scroll-arrows', $([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0], $('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]])
								.bind({
									mouseenter: function() {
										$sub.dataSM('scroll').up = $(this).hasClass('scroll-up');
										self.menuScroll($sub);
									},
									mouseleave: function(e) {
										self.menuScrollStop($sub);
										self.menuScrollOut($sub, e);
									},
									'mousewheel DOMMouseScroll': function(e) { e.preventDefault(); }
								})
								.insertAfter($sub)
							);
						}
						// bind scroll events and save scroll data for this sub
						var eNS = '.smartmenus_scroll';
						$sub.dataSM('scroll', {
								y: this.cssTransforms3d ? 0 : y - itemH,
								step: 1,
								// cache stuff for faster recalcs later
								itemH: itemH,
								subH: subH,
								arrowDownH: this.getHeight($sub.dataSM('scroll-arrows').eq(1))
							})
							.bind(getEventsNS([
								['mouseover', function(e) { self.menuScrollOver($sub, e); }],
								['mouseout', function(e) { self.menuScrollOut($sub, e); }],
								['mousewheel DOMMouseScroll', function(e) { self.menuScrollMousewheel($sub, e); }]
							], eNS))
							.dataSM('scroll-arrows').css({ top: 'auto', left: '0', marginLeft: x + (parseInt($sub.css('border-left-width')) || 0), width: subW - (parseInt($sub.css('border-left-width')) || 0) - (parseInt($sub.css('border-right-width')) || 0), zIndex: $sub.css('z-index') })
								.eq(horizontalParent && this.opts.bottomToTopSubMenus ? 0 : 1).show();
						// when a menu tree is fixed positioned we allow scrolling via touch too
						// since there is no other way to access such long sub menus if no mouse is present
						if (this.isFixed()) {
							$sub.css({ 'touch-action': 'none', '-ms-touch-action': 'none' })
								.bind(getEventsNS([
									[touchEvents ? 'touchstart touchmove touchend' : 'pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp', function(e) {
										self.menuScrollTouch($sub, e);
									}]
								], eNS));
						}
					}
				}
				$sub.css({ top: 'auto', left: '0', marginLeft: x, marginTop: y - itemH });
				// IE iframe shim
				this.menuIframeShim($sub);
				if ($sub.dataSM('ie-shim')) {
					$sub.dataSM('ie-shim').css({ zIndex: $sub.css('z-index'), width: subW, height: subH, marginLeft: x, marginTop: y - itemH });
				}
			},
			menuScroll: function($sub, once, step) {
				var data = $sub.dataSM('scroll'),
					$arrows = $sub.dataSM('scroll-arrows'),
					end = data.up ? data.upEnd : data.downEnd,
					diff;
				if (!once && data.momentum) {
					data.momentum *= 0.92;
					diff = data.momentum;
					if (diff < 0.5) {
						this.menuScrollStop($sub);
						return;
					}
				} else {
					diff = step || (once || !this.opts.scrollAccelerate ? this.opts.scrollStep : Math.floor(data.step));
				}
				// hide any visible deeper level sub menus
				var level = $sub.dataSM('level');
				if (this.activatedItems[level - 1] && this.activatedItems[level - 1].dataSM('sub') && this.activatedItems[level - 1].dataSM('sub').is(':visible')) {
					this.menuHideSubMenus(level - 1);
				}
				data.y = data.up && end <= data.y || !data.up && end >= data.y ? data.y : (Math.abs(end - data.y) > diff ? data.y + (data.up ? diff : -diff) : end);
				$sub.add($sub.dataSM('ie-shim')).css(this.cssTransforms3d ? { '-webkit-transform': 'translate3d(0, ' + data.y + 'px, 0)', transform: 'translate3d(0, ' + data.y + 'px, 0)' } : { marginTop: data.y });
				// show opposite arrow if appropriate
				if (mouse && (data.up && data.y > data.downEnd || !data.up && data.y < data.upEnd)) {
					$arrows.eq(data.up ? 1 : 0).show();
				}
				// if we've reached the end
				if (data.y == end) {
					if (mouse) {
						$arrows.eq(data.up ? 0 : 1).hide();
					}
					this.menuScrollStop($sub);
				} else if (!once) {
					if (this.opts.scrollAccelerate && data.step < this.opts.scrollStep) {
						data.step += 0.2;
					}
					var self = this;
					this.scrollTimeout = requestAnimationFrame(function() { self.menuScroll($sub); });
				}
			},
			menuScrollMousewheel: function($sub, e) {
				if (this.getClosestMenu(e.target) == $sub[0]) {
					e = e.originalEvent;
					var up = (e.wheelDelta || -e.detail) > 0;
					if ($sub.dataSM('scroll-arrows').eq(up ? 0 : 1).is(':visible')) {
						$sub.dataSM('scroll').up = up;
						this.menuScroll($sub, true);
					}
				}
				e.preventDefault();
			},
			menuScrollOut: function($sub, e) {
				if (mouse) {
					if (!/^scroll-(up|down)/.test((e.relatedTarget || '').className) && ($sub[0] != e.relatedTarget && !$.contains($sub[0], e.relatedTarget) || this.getClosestMenu(e.relatedTarget) != $sub[0])) {
						$sub.dataSM('scroll-arrows').css('visibility', 'hidden');
					}
				}
			},
			menuScrollOver: function($sub, e) {
				if (mouse) {
					if (!/^scroll-(up|down)/.test(e.target.className) && this.getClosestMenu(e.target) == $sub[0]) {
						this.menuScrollRefreshData($sub);
						var data = $sub.dataSM('scroll'),
							upEnd = $(window).scrollTop() - $sub.dataSM('parent-a').offset().top - data.itemH;
						$sub.dataSM('scroll-arrows').eq(0).css('margin-top', upEnd).end()
							.eq(1).css('margin-top', upEnd + this.getViewportHeight() - data.arrowDownH).end()
							.css('visibility', 'visible');
					}
				}
			},
			menuScrollRefreshData: function($sub) {
				var data = $sub.dataSM('scroll'),
					upEnd = $(window).scrollTop() - $sub.dataSM('parent-a').offset().top - data.itemH;
				if (this.cssTransforms3d) {
					upEnd = -(parseFloat($sub.css('margin-top')) - upEnd);
				}
				$.extend(data, {
					upEnd: upEnd,
					downEnd: upEnd + this.getViewportHeight() - data.subH
				});
			},
			menuScrollStop: function($sub) {
				if (this.scrollTimeout) {
					cancelAnimationFrame(this.scrollTimeout);
					this.scrollTimeout = 0;
					$sub.dataSM('scroll').step = 1;
					return true;
				}
			},
			menuScrollTouch: function($sub, e) {
				e = e.originalEvent;
				if (isTouchEvent(e)) {
					var touchPoint = this.getTouchPoint(e);
					// neglect event if we touched a visible deeper level sub menu
					if (this.getClosestMenu(touchPoint.target) == $sub[0]) {
						var data = $sub.dataSM('scroll');
						if (/(start|down)$/i.test(e.type)) {
							if (this.menuScrollStop($sub)) {
								// if we were scrolling, just stop and don't activate any link on the first touch
								e.preventDefault();
								this.$touchScrollingSub = $sub;
							} else {
								this.$touchScrollingSub = null;
							}
							// update scroll data since the user might have zoomed, etc.
							this.menuScrollRefreshData($sub);
							// extend it with the touch properties
							$.extend(data, {
								touchStartY: touchPoint.pageY,
								touchStartTime: e.timeStamp
							});
						} else if (/move$/i.test(e.type)) {
							var prevY = data.touchY !== undefined ? data.touchY : data.touchStartY;
							if (prevY !== undefined && prevY != touchPoint.pageY) {
								this.$touchScrollingSub = $sub;
								var up = prevY < touchPoint.pageY;
								// changed direction? reset...
								if (data.up !== undefined && data.up != up) {
									$.extend(data, {
										touchStartY: touchPoint.pageY,
										touchStartTime: e.timeStamp
									});
								}
								$.extend(data, {
									up: up,
									touchY: touchPoint.pageY
								});
								this.menuScroll($sub, true, Math.abs(touchPoint.pageY - prevY));
							}
							e.preventDefault();
						} else { // touchend/pointerup
							if (data.touchY !== undefined) {
								if (data.momentum = Math.pow(Math.abs(touchPoint.pageY - data.touchStartY) / (e.timeStamp - data.touchStartTime), 2) * 15) {
									this.menuScrollStop($sub);
									this.menuScroll($sub);
									e.preventDefault();
								}
								delete data.touchY;
							}
						}
					}
				}
			},
			menuShow: function($sub) {
				if (!$sub.dataSM('beforefirstshowfired')) {
					$sub.dataSM('beforefirstshowfired', true);
					if (this.$root.triggerHandler('beforefirstshow.smapi', $sub[0]) === false) {
						return;
					}
				}
				if (this.$root.triggerHandler('beforeshow.smapi', $sub[0]) === false) {
					return;
				}
				$sub.dataSM('shown-before', true)
					.stop(true, true);
				if (!$sub.is(':visible')) {
					// highlight parent item
					var $a = $sub.dataSM('parent-a');
					if (this.opts.keepHighlighted || this.isCollapsible()) {
						$a.addClass('highlighted');
					}
					if (this.isCollapsible()) {
						$sub.removeClass('sm-nowrap').css({ zIndex: '', width: 'auto', minWidth: '', maxWidth: '', top: '', left: '', marginLeft: '', marginTop: '' });
					} else {
						// set z-index
						$sub.css('z-index', this.zIndexInc = (this.zIndexInc || this.getStartZIndex()) + 1);
						// min/max-width fix - no way to rely purely on CSS as all UL's are nested
						if (this.opts.subMenusMinWidth || this.opts.subMenusMaxWidth) {
							$sub.css({ width: 'auto', minWidth: '', maxWidth: '' }).addClass('sm-nowrap');
							if (this.opts.subMenusMinWidth) {
							 	$sub.css('min-width', this.opts.subMenusMinWidth);
							}
							if (this.opts.subMenusMaxWidth) {
							 	var noMaxWidth = this.getWidth($sub);
							 	$sub.css('max-width', this.opts.subMenusMaxWidth);
								if (noMaxWidth > this.getWidth($sub)) {
									$sub.removeClass('sm-nowrap').css('width', this.opts.subMenusMaxWidth);
								}
							}
						}
						this.menuPosition($sub);
						// insert IE iframe shim
						if ($sub.dataSM('ie-shim')) {
							$sub.dataSM('ie-shim').insertBefore($sub);
						}
					}
					var complete = function() {
						// fix: "overflow: hidden;" is not reset on animation complete in jQuery < 1.9.0 in Chrome when global "box-sizing: border-box;" is used
						$sub.css('overflow', '');
					};
					// if sub is collapsible (mobile view)
					if (this.isCollapsible()) {
						if (this.opts.collapsibleShowFunction) {
							this.opts.collapsibleShowFunction.call(this, $sub, complete);
						} else {
							$sub.show(this.opts.collapsibleShowDuration, complete);
						}
					} else {
						if (this.opts.showFunction) {
							this.opts.showFunction.call(this, $sub, complete);
						} else {
							$sub.show(this.opts.showDuration, complete);
						}
					}
					// accessibility
					$a.attr('aria-expanded', 'true');
					$sub.attr({
						'aria-expanded': 'true',
						'aria-hidden': 'false'
					});
					// store sub menu in visible array
					this.visibleSubMenus.push($sub);
					this.$root.triggerHandler('show.smapi', $sub[0]);
				}
			},
			popupHide: function(noHideTimeout) {
				if (this.hideTimeout) {
					clearTimeout(this.hideTimeout);
					this.hideTimeout = 0;
				}
				var self = this;
				this.hideTimeout = setTimeout(function() {
					self.menuHideAll();
				}, noHideTimeout ? 1 : this.opts.hideTimeout);
			},
			popupShow: function(left, top) {
				if (!this.opts.isPopup) {
					alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.');
					return;
				}
				if (this.hideTimeout) {
					clearTimeout(this.hideTimeout);
					this.hideTimeout = 0;
				}
				this.$root.dataSM('shown-before', true)
					.stop(true, true);
				if (!this.$root.is(':visible')) {
					this.$root.css({ left: left, top: top });
					// IE iframe shim
					this.menuIframeShim(this.$root);
					if (this.$root.dataSM('ie-shim')) {
						this.$root.dataSM('ie-shim').css({ zIndex: this.$root.css('z-index'), width: this.getWidth(this.$root), height: this.getHeight(this.$root), left: left, top: top }).insertBefore(this.$root);
					}
					// show menu
					var self = this,
						complete = function() {
							self.$root.css('overflow', '');
						};
					if (this.opts.showFunction) {
						this.opts.showFunction.call(this, this.$root, complete);
					} else {
						this.$root.show(this.opts.showDuration, complete);
					}
					this.visibleSubMenus[0] = this.$root;
				}
			},
			refresh: function() {
				this.destroy(true);
				this.init(true);
			},
			rootKeyDown: function(e) {
				if (!this.handleEvents()) {
					return;
				}
				switch (e.keyCode) {
					case 27: // reset on Esc
						var $activeTopItem = this.activatedItems[0];
						if ($activeTopItem) {
							this.menuHideAll();
							$activeTopItem[0].focus();
							var $sub = $activeTopItem.dataSM('sub');
							if ($sub) {
								this.menuHide($sub);
							}
						}
						break;
					case 32: // activate item's sub on Space
						var $target = $(e.target);
						if ($target.is('a') && this.handleItemEvents($target)) {
							var $sub = $target.dataSM('sub');
							if ($sub && !$sub.is(':visible')) {
								this.itemClick({ currentTarget: e.target });
								e.preventDefault();
							}
						}
						break;
				}
			},
			rootOut: function(e) {
				if (!this.handleEvents() || this.isTouchMode() || e.target == this.$root[0]) {
					return;
				}
				if (this.hideTimeout) {
					clearTimeout(this.hideTimeout);
					this.hideTimeout = 0;
				}
				if (!this.opts.showOnClick || !this.opts.hideOnClick) {
					var self = this;
					this.hideTimeout = setTimeout(function() { self.menuHideAll(); }, this.opts.hideTimeout);
				}
			},
			rootOver: function(e) {
				if (!this.handleEvents() || this.isTouchMode() || e.target == this.$root[0]) {
					return;
				}
				if (this.hideTimeout) {
					clearTimeout(this.hideTimeout);
					this.hideTimeout = 0;
				}
			},
			winResize: function(e) {
				if (!this.handleEvents()) {
					// we still need to resize the disable overlay if it's visible
					if (this.$disableOverlay) {
						var pos = this.$root.offset();
	 					this.$disableOverlay.css({
							top: pos.top,
							left: pos.left,
							width: this.$root.outerWidth(),
							height: this.$root.outerHeight()
						});
					}
					return;
				}
				// hide sub menus on resize - on mobile do it only on orientation change
				if (!('onorientationchange' in window) || e.type == 'orientationchange') {
					var isCollapsible = this.isCollapsible();
					// if it was collapsible before resize and still is, don't do it
					if (!(this.wasCollapsible && isCollapsible)) { 
						if (this.activatedItems.length) {
							this.activatedItems[this.activatedItems.length - 1][0].blur();
						}
						this.menuHideAll();
					}
					this.wasCollapsible = isCollapsible;
				}
			}
		}
	});

	$.fn.dataSM = function(key, val) {
		if (val) {
			return this.data(key + '_smartmenus', val);
		}
		return this.data(key + '_smartmenus');
	};

	$.fn.removeDataSM = function(key) {
		return this.removeData(key + '_smartmenus');
	};

	$.fn.smartmenus = function(options) {
		if (typeof options == 'string') {
			var args = arguments,
				method = options;
			Array.prototype.shift.call(args);
			return this.each(function() {
				var smartmenus = $(this).data('smartmenus');
				if (smartmenus && smartmenus[method]) {
					smartmenus[method].apply(smartmenus, args);
				}
			});
		}
		// [data-sm-options] attribute on the root UL
		var dataOpts = this.data('sm-options') || null;
		if (dataOpts) {
			try {
				dataOpts = eval('(' + dataOpts + ')');
			} catch(e) {
				dataOpts = null;
				alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.');
			};
		}
		return this.each(function() {
			new $.SmartMenus(this, $.extend({}, $.fn.smartmenus.defaults, options, dataOpts));
		});
	};

	// default settings
	$.fn.smartmenus.defaults = {
		isPopup:		false,		// is this a popup menu (can be shown via the popupShow/popupHide methods) or a permanent menu bar
		mainMenuSubOffsetX:	0,		// pixels offset from default position
		mainMenuSubOffsetY:	0,		// pixels offset from default position
		subMenusSubOffsetX:	0,		// pixels offset from default position
		subMenusSubOffsetY:	0,		// pixels offset from default position
		subMenusMinWidth:	'10em',		// min-width for the sub menus (any CSS unit) - if set, the fixed width set in CSS will be ignored
		subMenusMaxWidth:	'20em',		// max-width for the sub menus (any CSS unit) - if set, the fixed width set in CSS will be ignored
		subIndicators: 		true,		// create sub menu indicators - creates a SPAN and inserts it in the A
		subIndicatorsPos: 	'prepend',	// position of the SPAN relative to the menu item content ('prepend', 'append')
		subIndicatorsText:	'+',		// [optionally] add text in the SPAN (e.g. '+') (you may want to check the CSS for the sub indicators too)
		scrollStep: 		30,		// pixels step when scrolling long sub menus that do not fit in the viewport height
		scrollAccelerate:	true,		// accelerate scrolling or use a fixed step
		showTimeout:		250,		// timeout before showing the sub menus
		hideTimeout:		500,		// timeout before hiding the sub menus
		showDuration:		0,		// duration for show animation - set to 0 for no animation - matters only if showFunction:null
		showFunction:		null,		// custom function to use when showing a sub menu (the default is the jQuery 'show')
							// don't forget to call complete() at the end of whatever you do
							// e.g.: function($ul, complete) { $ul.fadeIn(250, complete); }
		hideDuration:		0,		// duration for hide animation - set to 0 for no animation - matters only if hideFunction:null
		hideFunction:		function($ul, complete) { $ul.fadeOut(200, complete); },	// custom function to use when hiding a sub menu (the default is the jQuery 'hide')
							// don't forget to call complete() at the end of whatever you do
							// e.g.: function($ul, complete) { $ul.fadeOut(250, complete); }
		collapsibleShowDuration:0,		// duration for show animation for collapsible sub menus - matters only if collapsibleShowFunction:null
		collapsibleShowFunction:function($ul, complete) { $ul.slideDown(200, complete); },	// custom function to use when showing a collapsible sub menu
							// (i.e. when mobile styles are used to make the sub menus collapsible)
		collapsibleHideDuration:0,		// duration for hide animation for collapsible sub menus - matters only if collapsibleHideFunction:null
		collapsibleHideFunction:function($ul, complete) { $ul.slideUp(200, complete); },	// custom function to use when hiding a collapsible sub menu
							// (i.e. when mobile styles are used to make the sub menus collapsible)
		showOnClick:		false,		// show the first-level sub menus onclick instead of onmouseover (i.e. mimic desktop app menus) (matters only for mouse input)
		hideOnClick:		true,		// hide the sub menus on click/tap anywhere on the page
		noMouseOver:		false,		// disable sub menus activation onmouseover (i.e. behave like in touch mode - use just mouse clicks) (matters only for mouse input)
		keepInViewport:		true,		// reposition the sub menus if needed to make sure they always appear inside the viewport
		keepHighlighted:	true,		// keep all ancestor items of the current sub menu highlighted (adds the 'highlighted' class to the A's)
		markCurrentItem:	false,		// automatically add the 'current' class to the A element of the item linking to the current URL
		markCurrentTree:	true,		// add the 'current' class also to the A elements of all ancestor items of the current item
		rightToLeftSubMenus:	false,		// right to left display of the sub menus (check the CSS for the sub indicators' position)
		bottomToTopSubMenus:	false,		// bottom to top display of the sub menus
		overlapControlsInIE:	true		// make sure sub menus appear on top of special OS controls in IE (i.e. SELECT, OBJECT, EMBED, etc.)
	};

	return $;
}));assets/lib/smartmenus/jquery.smartmenus.min.js000064400000061162150755004310015654 0ustar00/*! SmartMenus jQuery Plugin - v1.0.1 - November 1, 2016
 * http://www.smartmenus.org/
 * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).unbind(e),mouseDetectionEnabled=!1);else{var i=!0,s=null;$(document).bind(getEventsNS([["mousemove",function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}],[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut",function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)}]],e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};return $.each(t,function(t,s){i[s[0].split(" ").join(e+" ")+e]=s[1]}),i}var menuTrees=[],IE=!!window.createPopup,mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)};return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).bind(getEventsNS([["mouseover focusin",$.proxy(this.rootOver,this)],["mouseout focusout",$.proxy(this.rootOut,this)],["keydown",$.proxy(this.rootKeyDown,this)]],i)).delegate("a",getEventsNS([["mouseenter",$.proxy(this.itemEnter,this)],["mouseleave",$.proxy(this.itemLeave,this)],["mousedown",$.proxy(this.itemDown,this)],["focus",$.proxy(this.itemFocus,this)],["blur",$.proxy(this.itemBlur,this)],["click",$.proxy(this.itemClick,this)]],i)),i+=this.rootId,this.opts.hideOnClick&&$(document).bind(getEventsNS([["touchstart",$.proxy(this.docTouchStart,this)],["touchmove",$.proxy(this.docTouchMove,this)],["touchend",$.proxy(this.docTouchEnd,this)],["click",$.proxy(this.docClick,this)]],i)),$(window).bind(getEventsNS([["resize orientationchange",$.proxy(this.winResize,this)]],i)),this.opts.subIndicators&&(this.$subArrow=$("<span/>").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").unbind(e).undelegate(e),e+=this.rootId,$(document).unbind(e),$(window).unbind(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("ie-shim").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).is("a"))&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"block"==this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is("span.sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1;if(s&&!s.is(":visible")){if(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e),s.is(":visible"))return this.focusActivated=!0,!1}else if(this.isCollapsible()&&i)return this.itemActivate(e),this.menuHide(s),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("ie-shim")&&t.dataSM("ie-shim").remove().css({"-webkit-transform":"",transform:""}),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).unbind(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(this.$root.stop(!0,!0),this.$root.is(":visible")&&(this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration),this.$root.dataSM("ie-shim")&&this.$root.dataSM("ie-shim").remove())),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuIframeShim:function(t){IE&&this.opts.overlapControlsInIE&&!t.dataSM("ie-shim")&&t.dataSM("ie-shim",$("<iframe/>").attr({src:"javascript:0",tabindex:-9}).css({position:"absolute",top:"auto",left:"0",opacity:0,border:"0"}))},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),S=this.getViewportWidth(),b=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+S&&(e=g?f+S-r-y+e:w-r),g||(b>h&&I+h>v+b?i+=v+b-h-I:(h>=b||v>I)&&(i+=v-I)),g&&(I+h>v+b+.49||v>I)||!g&&h>b+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],$('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).bind({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var C=".smartmenus_scroll";t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).bind(getEventsNS([["mouseover",function(e){x.menuScrollOver(t,e)}],["mouseout",function(e){x.menuScrollOut(t,e)}],["mousewheel DOMMouseScroll",function(e){x.menuScrollMousewheel(t,e)}]],C)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()&&t.css({"touch-action":"none","-ms-touch-action":"none"}).bind(getEventsNS([[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp",function(e){x.menuScrollTouch(t,e)}]],C))}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m}),this.menuIframeShim(t),t.dataSM("ie-shim")&&t.dataSM("ie-shim").css({zIndex:t.css("z-index"),width:r,height:h,marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.add(t.dataSM("ie-shim")).css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y<o.upEnd)&&a.eq(o.up?1:0).show(),o.y==n)mouse&&a.eq(o.up?0:1).hide(),this.menuScrollStop(t);else if(!e){this.opts.scrollAccelerate&&o.step<this.opts.scrollStep&&(o.step+=.2);var h=this;this.scrollTimeout=requestAnimationFrame(function(){h.menuScroll(t)})}},menuScrollMousewheel:function(t,e){if(this.getClosestMenu(e.target)==t[0]){e=e.originalEvent;var i=(e.wheelDelta||-e.detail)>0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0).stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a");if((this.opts.keepHighlighted||this.isCollapsible())&&e.addClass("highlighted"),this.isCollapsible())t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var i=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),i>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t),t.dataSM("ie-shim")&&t.dataSM("ie-shim").insertBefore(t)}var s=function(){t.css("overflow","")};this.isCollapsible()?this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,s):t.show(this.opts.collapsibleShowDuration,s):this.opts.showFunction?this.opts.showFunction.call(this,t,s):t.show(this.opts.showDuration,s),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0).stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e}),this.menuIframeShim(this.$root),this.$root.dataSM("ie-shim")&&this.$root.dataSM("ie-shim").css({zIndex:this.$root.css("z-index"),width:this.getWidth(this.$root),height:this.getHeight(this.$root),left:t,top:e}).insertBefore(this.$root);var i=this,s=function(){i.$root.css("overflow","")};this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}var dataOpts=this.data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}return this.each(function(){new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"prepend",subIndicatorsText:"+",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,overlapControlsInIE:!0},$});assets/lib/font-awesome-pro/regular.js000064400000067300150755004310014023 0ustar00{
  "icons": [
	"abacus",
	"acorn",
	"ad",
	"address-book",
	"address-card",
	"adjust",
	"air-conditioner",
	"air-freshener",
	"alarm-clock",
	"alarm-exclamation",
	"alarm-plus",
	"alarm-snooze",
	"album",
	"album-collection",
	"alicorn",
	"alien",
	"alien-monster",
	"align-center",
	"align-justify",
	"align-left",
	"align-right",
	"align-slash",
	"allergies",
	"ambulance",
	"american-sign-language-interpreting",
	"amp-guitar",
	"analytics",
	"anchor",
	"angel",
	"angle-double-down",
	"angle-double-left",
	"angle-double-right",
	"angle-double-up",
	"angle-down",
	"angle-left",
	"angle-right",
	"angle-up",
	"angry",
	"ankh",
	"apple-alt",
	"apple-crate",
	"archive",
	"archway",
	"arrow-alt-circle-down",
	"arrow-alt-circle-left",
	"arrow-alt-circle-right",
	"arrow-alt-circle-up",
	"arrow-alt-down",
	"arrow-alt-from-bottom",
	"arrow-alt-from-left",
	"arrow-alt-from-right",
	"arrow-alt-from-top",
	"arrow-alt-left",
	"arrow-alt-right",
	"arrow-alt-square-down",
	"arrow-alt-square-left",
	"arrow-alt-square-right",
	"arrow-alt-square-up",
	"arrow-alt-to-bottom",
	"arrow-alt-to-left",
	"arrow-alt-to-right",
	"arrow-alt-to-top",
	"arrow-alt-up",
	"arrow-circle-down",
	"arrow-circle-left",
	"arrow-circle-right",
	"arrow-circle-up",
	"arrow-down",
	"arrow-from-bottom",
	"arrow-from-left",
	"arrow-from-right",
	"arrow-from-top",
	"arrow-left",
	"arrow-right",
	"arrow-square-down",
	"arrow-square-left",
	"arrow-square-right",
	"arrow-square-up",
	"arrow-to-bottom",
	"arrow-to-left",
	"arrow-to-right",
	"arrow-to-top",
	"arrow-up",
	"arrows",
	"arrows-alt",
	"arrows-alt-h",
	"arrows-alt-v",
	"arrows-h",
	"arrows-v",
	"assistive-listening-systems",
	"asterisk",
	"at",
	"atlas",
	"atom",
	"atom-alt",
	"audio-description",
	"award",
	"axe",
	"axe-battle",
	"baby",
	"baby-carriage",
	"backpack",
	"backspace",
	"backward",
	"bacon",
	"bacteria",
	"bacterium",
	"badge",
	"badge-check",
	"badge-dollar",
	"badge-percent",
	"badge-sheriff",
	"badger-honey",
	"bags-shopping",
	"bahai",
	"balance-scale",
	"balance-scale-left",
	"balance-scale-right",
	"ball-pile",
	"ballot",
	"ballot-check",
	"ban",
	"band-aid",
	"banjo",
	"barcode",
	"barcode-alt",
	"barcode-read",
	"barcode-scan",
	"bars",
	"baseball",
	"baseball-ball",
	"basketball-ball",
	"basketball-hoop",
	"bat",
	"bath",
	"battery-bolt",
	"battery-empty",
	"battery-full",
	"battery-half",
	"battery-quarter",
	"battery-slash",
	"battery-three-quarters",
	"bed",
	"bed-alt",
	"bed-bunk",
	"bed-empty",
	"beer",
	"bell",
	"bell-exclamation",
	"bell-on",
	"bell-plus",
	"bell-school",
	"bell-school-slash",
	"bell-slash",
	"bells",
	"betamax",
	"bezier-curve",
	"bible",
	"bicycle",
	"biking",
	"biking-mountain",
	"binoculars",
	"biohazard",
	"birthday-cake",
	"blanket",
	"blender",
	"blender-phone",
	"blind",
	"blinds",
	"blinds-open",
	"blinds-raised",
	"blog",
	"bold",
	"bolt",
	"bomb",
	"bone",
	"bone-break",
	"bong",
	"book",
	"book-alt",
	"book-dead",
	"book-heart",
	"book-medical",
	"book-open",
	"book-reader",
	"book-spells",
	"book-user",
	"bookmark",
	"books",
	"books-medical",
	"boombox",
	"boot",
	"booth-curtain",
	"border-all",
	"border-bottom",
	"border-center-h",
	"border-center-v",
	"border-inner",
	"border-left",
	"border-none",
	"border-outer",
	"border-right",
	"border-style",
	"border-style-alt",
	"border-top",
	"bow-arrow",
	"bowling-ball",
	"bowling-pins",
	"box",
	"box-alt",
	"box-ballot",
	"box-check",
	"box-fragile",
	"box-full",
	"box-heart",
	"box-open",
	"box-tissue",
	"box-up",
	"box-usd",
	"boxes",
	"boxes-alt",
	"boxing-glove",
	"brackets",
	"brackets-curly",
	"braille",
	"brain",
	"bread-loaf",
	"bread-slice",
	"briefcase",
	"briefcase-medical",
	"bring-forward",
	"bring-front",
	"broadcast-tower",
	"broom",
	"browser",
	"brush",
	"bug",
	"building",
	"bullhorn",
	"bullseye",
	"bullseye-arrow",
	"bullseye-pointer",
	"burger-soda",
	"burn",
	"burrito",
	"bus",
	"bus-alt",
	"bus-school",
	"business-time",
	"cabinet-filing",
	"cactus",
	"calculator",
	"calculator-alt",
	"calendar",
	"calendar-alt",
	"calendar-check",
	"calendar-day",
	"calendar-edit",
	"calendar-exclamation",
	"calendar-minus",
	"calendar-plus",
	"calendar-star",
	"calendar-times",
	"calendar-week",
	"camcorder",
	"camera",
	"camera-alt",
	"camera-home",
	"camera-movie",
	"camera-polaroid",
	"camera-retro",
	"campfire",
	"campground",
	"candle-holder",
	"candy-cane",
	"candy-corn",
	"cannabis",
	"capsules",
	"car",
	"car-alt",
	"car-battery",
	"car-building",
	"car-bump",
	"car-bus",
	"car-crash",
	"car-garage",
	"car-mechanic",
	"car-side",
	"car-tilt",
	"car-wash",
	"caravan",
	"caravan-alt",
	"caret-circle-down",
	"caret-circle-left",
	"caret-circle-right",
	"caret-circle-up",
	"caret-down",
	"caret-left",
	"caret-right",
	"caret-square-down",
	"caret-square-left",
	"caret-square-right",
	"caret-square-up",
	"caret-up",
	"carrot",
	"cars",
	"cart-arrow-down",
	"cart-plus",
	"cash-register",
	"cassette-tape",
	"cat",
	"cat-space",
	"cauldron",
	"cctv",
	"certificate",
	"chair",
	"chair-office",
	"chalkboard",
	"chalkboard-teacher",
	"charging-station",
	"chart-area",
	"chart-bar",
	"chart-line",
	"chart-line-down",
	"chart-network",
	"chart-pie",
	"chart-pie-alt",
	"chart-scatter",
	"check",
	"check-circle",
	"check-double",
	"check-square",
	"cheese",
	"cheese-swiss",
	"cheeseburger",
	"chess",
	"chess-bishop",
	"chess-bishop-alt",
	"chess-board",
	"chess-clock",
	"chess-clock-alt",
	"chess-king",
	"chess-king-alt",
	"chess-knight",
	"chess-knight-alt",
	"chess-pawn",
	"chess-pawn-alt",
	"chess-queen",
	"chess-queen-alt",
	"chess-rook",
	"chess-rook-alt",
	"chevron-circle-down",
	"chevron-circle-left",
	"chevron-circle-right",
	"chevron-circle-up",
	"chevron-double-down",
	"chevron-double-left",
	"chevron-double-right",
	"chevron-double-up",
	"chevron-down",
	"chevron-left",
	"chevron-right",
	"chevron-square-down",
	"chevron-square-left",
	"chevron-square-right",
	"chevron-square-up",
	"chevron-up",
	"child",
	"chimney",
	"church",
	"circle",
	"circle-notch",
	"city",
	"clarinet",
	"claw-marks",
	"clinic-medical",
	"clipboard",
	"clipboard-check",
	"clipboard-list",
	"clipboard-list-check",
	"clipboard-prescription",
	"clipboard-user",
	"clock",
	"clone",
	"closed-captioning",
	"cloud",
	"cloud-download",
	"cloud-download-alt",
	"cloud-drizzle",
	"cloud-hail",
	"cloud-hail-mixed",
	"cloud-meatball",
	"cloud-moon",
	"cloud-moon-rain",
	"cloud-music",
	"cloud-rain",
	"cloud-rainbow",
	"cloud-showers",
	"cloud-showers-heavy",
	"cloud-sleet",
	"cloud-snow",
	"cloud-sun",
	"cloud-sun-rain",
	"cloud-upload",
	"cloud-upload-alt",
	"clouds",
	"clouds-moon",
	"clouds-sun",
	"club",
	"cocktail",
	"code",
	"code-branch",
	"code-commit",
	"code-merge",
	"coffee",
	"coffee-pot",
	"coffee-togo",
	"coffin",
	"coffin-cross",
	"cog",
	"cogs",
	"coin",
	"coins",
	"columns",
	"comet",
	"comment",
	"comment-alt",
	"comment-alt-check",
	"comment-alt-dollar",
	"comment-alt-dots",
	"comment-alt-edit",
	"comment-alt-exclamation",
	"comment-alt-lines",
	"comment-alt-medical",
	"comment-alt-minus",
	"comment-alt-music",
	"comment-alt-plus",
	"comment-alt-slash",
	"comment-alt-smile",
	"comment-alt-times",
	"comment-check",
	"comment-dollar",
	"comment-dots",
	"comment-edit",
	"comment-exclamation",
	"comment-lines",
	"comment-medical",
	"comment-minus",
	"comment-music",
	"comment-plus",
	"comment-slash",
	"comment-smile",
	"comment-times",
	"comments",
	"comments-alt",
	"comments-alt-dollar",
	"comments-dollar",
	"compact-disc",
	"compass",
	"compass-slash",
	"compress",
	"compress-alt",
	"compress-arrows-alt",
	"compress-wide",
	"computer-classic",
	"computer-speaker",
	"concierge-bell",
	"construction",
	"container-storage",
	"conveyor-belt",
	"conveyor-belt-alt",
	"cookie",
	"cookie-bite",
	"copy",
	"copyright",
	"corn",
	"couch",
	"cow",
	"cowbell",
	"cowbell-more",
	"credit-card",
	"credit-card-blank",
	"credit-card-front",
	"cricket",
	"croissant",
	"crop",
	"crop-alt",
	"cross",
	"crosshairs",
	"crow",
	"crown",
	"crutch",
	"crutches",
	"cube",
	"cubes",
	"curling",
	"cut",
	"dagger",
	"database",
	"deaf",
	"debug",
	"deer",
	"deer-rudolph",
	"democrat",
	"desktop",
	"desktop-alt",
	"dewpoint",
	"dharmachakra",
	"diagnoses",
	"diamond",
	"dice",
	"dice-d10",
	"dice-d12",
	"dice-d20",
	"dice-d4",
	"dice-d6",
	"dice-d8",
	"dice-five",
	"dice-four",
	"dice-one",
	"dice-six",
	"dice-three",
	"dice-two",
	"digging",
	"digital-tachograph",
	"diploma",
	"directions",
	"disc-drive",
	"disease",
	"divide",
	"dizzy",
	"dna",
	"do-not-enter",
	"dog",
	"dog-leashed",
	"dollar-sign",
	"dolly",
	"dolly-empty",
	"dolly-flatbed",
	"dolly-flatbed-alt",
	"dolly-flatbed-empty",
	"donate",
	"door-closed",
	"door-open",
	"dot-circle",
	"dove",
	"download",
	"drafting-compass",
	"dragon",
	"draw-circle",
	"draw-polygon",
	"draw-square",
	"dreidel",
	"drone",
	"drone-alt",
	"drum",
	"drum-steelpan",
	"drumstick",
	"drumstick-bite",
	"dryer",
	"dryer-alt",
	"duck",
	"dumbbell",
	"dumpster",
	"dumpster-fire",
	"dungeon",
	"ear",
	"ear-muffs",
	"eclipse",
	"eclipse-alt",
	"edit",
	"egg",
	"egg-fried",
	"eject",
	"elephant",
	"ellipsis-h",
	"ellipsis-h-alt",
	"ellipsis-v",
	"ellipsis-v-alt",
	"empty-set",
	"engine-warning",
	"envelope",
	"envelope-open",
	"envelope-open-dollar",
	"envelope-open-text",
	"envelope-square",
	"equals",
	"eraser",
	"ethernet",
	"euro-sign",
	"exchange",
	"exchange-alt",
	"exclamation",
	"exclamation-circle",
	"exclamation-square",
	"exclamation-triangle",
	"expand",
	"expand-alt",
	"expand-arrows",
	"expand-arrows-alt",
	"expand-wide",
	"external-link",
	"external-link-alt",
	"external-link-square",
	"external-link-square-alt",
	"eye",
	"eye-dropper",
	"eye-evil",
	"eye-slash",
	"fan",
	"fan-table",
	"farm",
	"fast-backward",
	"fast-forward",
	"faucet",
	"faucet-drip",
	"fax",
	"feather",
	"feather-alt",
	"female",
	"field-hockey",
	"fighter-jet",
	"file",
	"file-alt",
	"file-archive",
	"file-audio",
	"file-certificate",
	"file-chart-line",
	"file-chart-pie",
	"file-check",
	"file-code",
	"file-contract",
	"file-csv",
	"file-download",
	"file-edit",
	"file-excel",
	"file-exclamation",
	"file-export",
	"file-image",
	"file-import",
	"file-invoice",
	"file-invoice-dollar",
	"file-medical",
	"file-medical-alt",
	"file-minus",
	"file-music",
	"file-pdf",
	"file-plus",
	"file-powerpoint",
	"file-prescription",
	"file-search",
	"file-signature",
	"file-spreadsheet",
	"file-times",
	"file-upload",
	"file-user",
	"file-video",
	"file-word",
	"files-medical",
	"fill",
	"fill-drip",
	"film",
	"film-alt",
	"film-canister",
	"filter",
	"fingerprint",
	"fire",
	"fire-alt",
	"fire-extinguisher",
	"fire-smoke",
	"fireplace",
	"first-aid",
	"fish",
	"fish-cooked",
	"fist-raised",
	"flag",
	"flag-alt",
	"flag-checkered",
	"flag-usa",
	"flame",
	"flashlight",
	"flask",
	"flask-poison",
	"flask-potion",
	"flower",
	"flower-daffodil",
	"flower-tulip",
	"flushed",
	"flute",
	"flux-capacitor",
	"fog",
	"folder",
	"folder-download",
	"folder-minus",
	"folder-open",
	"folder-plus",
	"folder-times",
	"folder-tree",
	"folder-upload",
	"folders",
	"font",
	"font-awesome-logo-full",
	"font-case",
	"football-ball",
	"football-helmet",
	"forklift",
	"forward",
	"fragile",
	"french-fries",
	"frog",
	"frosty-head",
	"frown",
	"frown-open",
	"function",
	"funnel-dollar",
	"futbol",
	"galaxy",
	"game-board",
	"game-board-alt",
	"game-console-handheld",
	"gamepad",
	"gamepad-alt",
	"garage",
	"garage-car",
	"garage-open",
	"gas-pump",
	"gas-pump-slash",
	"gavel",
	"gem",
	"genderless",
	"ghost",
	"gift",
	"gift-card",
	"gifts",
	"gingerbread-man",
	"glass",
	"glass-champagne",
	"glass-cheers",
	"glass-citrus",
	"glass-martini",
	"glass-martini-alt",
	"glass-whiskey",
	"glass-whiskey-rocks",
	"glasses",
	"glasses-alt",
	"globe",
	"globe-africa",
	"globe-americas",
	"globe-asia",
	"globe-europe",
	"globe-snow",
	"globe-stand",
	"golf-ball",
	"golf-club",
	"gopuram",
	"graduation-cap",
	"gramophone",
	"greater-than",
	"greater-than-equal",
	"grimace",
	"grin",
	"grin-alt",
	"grin-beam",
	"grin-beam-sweat",
	"grin-hearts",
	"grin-squint",
	"grin-squint-tears",
	"grin-stars",
	"grin-tears",
	"grin-tongue",
	"grin-tongue-squint",
	"grin-tongue-wink",
	"grin-wink",
	"grip-horizontal",
	"grip-lines",
	"grip-lines-vertical",
	"grip-vertical",
	"guitar",
	"guitar-electric",
	"guitars",
	"h-square",
	"h1",
	"h2",
	"h3",
	"h4",
	"hamburger",
	"hammer",
	"hammer-war",
	"hamsa",
	"hand-heart",
	"hand-holding",
	"hand-holding-box",
	"hand-holding-heart",
	"hand-holding-magic",
	"hand-holding-medical",
	"hand-holding-seedling",
	"hand-holding-usd",
	"hand-holding-water",
	"hand-lizard",
	"hand-middle-finger",
	"hand-paper",
	"hand-peace",
	"hand-point-down",
	"hand-point-left",
	"hand-point-right",
	"hand-point-up",
	"hand-pointer",
	"hand-receiving",
	"hand-rock",
	"hand-scissors",
	"hand-sparkles",
	"hand-spock",
	"hands",
	"hands-heart",
	"hands-helping",
	"hands-usd",
	"hands-wash",
	"handshake",
	"handshake-alt",
	"handshake-alt-slash",
	"handshake-slash",
	"hanukiah",
	"hard-hat",
	"hashtag",
	"hat-chef",
	"hat-cowboy",
	"hat-cowboy-side",
	"hat-santa",
	"hat-winter",
	"hat-witch",
	"hat-wizard",
	"hdd",
	"head-side",
	"head-side-brain",
	"head-side-cough",
	"head-side-cough-slash",
	"head-side-headphones",
	"head-side-mask",
	"head-side-medical",
	"head-side-virus",
	"head-vr",
	"heading",
	"headphones",
	"headphones-alt",
	"headset",
	"heart",
	"heart-broken",
	"heart-circle",
	"heart-rate",
	"heart-square",
	"heartbeat",
	"heat",
	"helicopter",
	"helmet-battle",
	"hexagon",
	"highlighter",
	"hiking",
	"hippo",
	"history",
	"hockey-mask",
	"hockey-puck",
	"hockey-sticks",
	"holly-berry",
	"home",
	"home-alt",
	"home-heart",
	"home-lg",
	"home-lg-alt",
	"hood-cloak",
	"horizontal-rule",
	"horse",
	"horse-head",
	"horse-saddle",
	"hospital",
	"hospital-alt",
	"hospital-symbol",
	"hospital-user",
	"hospitals",
	"hot-tub",
	"hotdog",
	"hotel",
	"hourglass",
	"hourglass-end",
	"hourglass-half",
	"hourglass-start",
	"house",
	"house-damage",
	"house-day",
	"house-flood",
	"house-leave",
	"house-night",
	"house-return",
	"house-signal",
	"house-user",
	"hryvnia",
	"humidity",
	"hurricane",
	"i-cursor",
	"ice-cream",
	"ice-skate",
	"icicles",
	"icons",
	"icons-alt",
	"id-badge",
	"id-card",
	"id-card-alt",
	"igloo",
	"image",
	"image-polaroid",
	"images",
	"inbox",
	"inbox-in",
	"inbox-out",
	"indent",
	"industry",
	"industry-alt",
	"infinity",
	"info",
	"info-circle",
	"info-square",
	"inhaler",
	"integral",
	"intersection",
	"inventory",
	"island-tropical",
	"italic",
	"jack-o-lantern",
	"jedi",
	"joint",
	"journal-whills",
	"joystick",
	"jug",
	"kaaba",
	"kazoo",
	"kerning",
	"key",
	"key-skeleton",
	"keyboard",
	"keynote",
	"khanda",
	"kidneys",
	"kiss",
	"kiss-beam",
	"kiss-wink-heart",
	"kite",
	"kiwi-bird",
	"knife-kitchen",
	"lambda",
	"lamp",
	"lamp-desk",
	"lamp-floor",
	"landmark",
	"landmark-alt",
	"language",
	"laptop",
	"laptop-code",
	"laptop-house",
	"laptop-medical",
	"lasso",
	"laugh",
	"laugh-beam",
	"laugh-squint",
	"laugh-wink",
	"layer-group",
	"layer-minus",
	"layer-plus",
	"leaf",
	"leaf-heart",
	"leaf-maple",
	"leaf-oak",
	"lemon",
	"less-than",
	"less-than-equal",
	"level-down",
	"level-down-alt",
	"level-up",
	"level-up-alt",
	"life-ring",
	"light-ceiling",
	"light-switch",
	"light-switch-off",
	"light-switch-on",
	"lightbulb",
	"lightbulb-dollar",
	"lightbulb-exclamation",
	"lightbulb-on",
	"lightbulb-slash",
	"lights-holiday",
	"line-columns",
	"line-height",
	"link",
	"lips",
	"lira-sign",
	"list",
	"list-alt",
	"list-music",
	"list-ol",
	"list-ul",
	"location",
	"location-arrow",
	"location-circle",
	"location-slash",
	"lock",
	"lock-alt",
	"lock-open",
	"lock-open-alt",
	"long-arrow-alt-down",
	"long-arrow-alt-left",
	"long-arrow-alt-right",
	"long-arrow-alt-up",
	"long-arrow-down",
	"long-arrow-left",
	"long-arrow-right",
	"long-arrow-up",
	"loveseat",
	"low-vision",
	"luchador",
	"luggage-cart",
	"lungs",
	"lungs-virus",
	"mace",
	"magic",
	"magnet",
	"mail-bulk",
	"mailbox",
	"male",
	"mandolin",
	"map",
	"map-marked",
	"map-marked-alt",
	"map-marker",
	"map-marker-alt",
	"map-marker-alt-slash",
	"map-marker-check",
	"map-marker-edit",
	"map-marker-exclamation",
	"map-marker-minus",
	"map-marker-plus",
	"map-marker-question",
	"map-marker-slash",
	"map-marker-smile",
	"map-marker-times",
	"map-pin",
	"map-signs",
	"marker",
	"mars",
	"mars-double",
	"mars-stroke",
	"mars-stroke-h",
	"mars-stroke-v",
	"mask",
	"meat",
	"medal",
	"medkit",
	"megaphone",
	"meh",
	"meh-blank",
	"meh-rolling-eyes",
	"memory",
	"menorah",
	"mercury",
	"meteor",
	"microchip",
	"microphone",
	"microphone-alt",
	"microphone-alt-slash",
	"microphone-slash",
	"microphone-stand",
	"microscope",
	"microwave",
	"mind-share",
	"minus",
	"minus-circle",
	"minus-hexagon",
	"minus-octagon",
	"minus-square",
	"mistletoe",
	"mitten",
	"mobile",
	"mobile-alt",
	"mobile-android",
	"mobile-android-alt",
	"money-bill",
	"money-bill-alt",
	"money-bill-wave",
	"money-bill-wave-alt",
	"money-check",
	"money-check-alt",
	"money-check-edit",
	"money-check-edit-alt",
	"monitor-heart-rate",
	"monkey",
	"monument",
	"moon",
	"moon-cloud",
	"moon-stars",
	"mortar-pestle",
	"mosque",
	"motorcycle",
	"mountain",
	"mountains",
	"mouse",
	"mouse-alt",
	"mouse-pointer",
	"mp3-player",
	"mug",
	"mug-hot",
	"mug-marshmallows",
	"mug-tea",
	"music",
	"music-alt",
	"music-alt-slash",
	"music-slash",
	"narwhal",
	"network-wired",
	"neuter",
	"newspaper",
	"not-equal",
	"notes-medical",
	"object-group",
	"object-ungroup",
	"octagon",
	"oil-can",
	"oil-temp",
	"om",
	"omega",
	"ornament",
	"otter",
	"outdent",
	"outlet",
	"oven",
	"overline",
	"page-break",
	"pager",
	"paint-brush",
	"paint-brush-alt",
	"paint-roller",
	"palette",
	"pallet",
	"pallet-alt",
	"paper-plane",
	"paperclip",
	"parachute-box",
	"paragraph",
	"paragraph-rtl",
	"parking",
	"parking-circle",
	"parking-circle-slash",
	"parking-slash",
	"passport",
	"pastafarianism",
	"paste",
	"pause",
	"pause-circle",
	"paw",
	"paw-alt",
	"paw-claws",
	"peace",
	"pegasus",
	"pen",
	"pen-alt",
	"pen-fancy",
	"pen-nib",
	"pen-square",
	"pencil",
	"pencil-alt",
	"pencil-paintbrush",
	"pencil-ruler",
	"pennant",
	"people-arrows",
	"people-carry",
	"pepper-hot",
	"percent",
	"percentage",
	"person-booth",
	"person-carry",
	"person-dolly",
	"person-dolly-empty",
	"person-sign",
	"phone",
	"phone-alt",
	"phone-laptop",
	"phone-office",
	"phone-plus",
	"phone-rotary",
	"phone-slash",
	"phone-square",
	"phone-square-alt",
	"phone-volume",
	"photo-video",
	"pi",
	"piano",
	"piano-keyboard",
	"pie",
	"pig",
	"piggy-bank",
	"pills",
	"pizza",
	"pizza-slice",
	"place-of-worship",
	"plane",
	"plane-alt",
	"plane-arrival",
	"plane-departure",
	"plane-slash",
	"planet-moon",
	"planet-ringed",
	"play",
	"play-circle",
	"plug",
	"plus",
	"plus-circle",
	"plus-hexagon",
	"plus-octagon",
	"plus-square",
	"podcast",
	"podium",
	"podium-star",
	"police-box",
	"poll",
	"poll-h",
	"poll-people",
	"poo",
	"poo-storm",
	"poop",
	"popcorn",
	"portal-enter",
	"portal-exit",
	"portrait",
	"pound-sign",
	"power-off",
	"pray",
	"praying-hands",
	"prescription",
	"prescription-bottle",
	"prescription-bottle-alt",
	"presentation",
	"print",
	"print-search",
	"print-slash",
	"procedures",
	"project-diagram",
	"projector",
	"pump-medical",
	"pump-soap",
	"pumpkin",
	"puzzle-piece",
	"qrcode",
	"question",
	"question-circle",
	"question-square",
	"quidditch",
	"quote-left",
	"quote-right",
	"quran",
	"rabbit",
	"rabbit-fast",
	"racquet",
	"radar",
	"radiation",
	"radiation-alt",
	"radio",
	"radio-alt",
	"rainbow",
	"raindrops",
	"ram",
	"ramp-loading",
	"random",
	"raygun",
	"receipt",
	"record-vinyl",
	"rectangle-landscape",
	"rectangle-portrait",
	"rectangle-wide",
	"recycle",
	"redo",
	"redo-alt",
	"refrigerator",
	"registered",
	"remove-format",
	"repeat",
	"repeat-1",
	"repeat-1-alt",
	"repeat-alt",
	"reply",
	"reply-all",
	"republican",
	"restroom",
	"retweet",
	"retweet-alt",
	"ribbon",
	"ring",
	"rings-wedding",
	"road",
	"robot",
	"rocket",
	"rocket-launch",
	"route",
	"route-highway",
	"route-interstate",
	"router",
	"rss",
	"rss-square",
	"ruble-sign",
	"ruler",
	"ruler-combined",
	"ruler-horizontal",
	"ruler-triangle",
	"ruler-vertical",
	"running",
	"rupee-sign",
	"rv",
	"sack",
	"sack-dollar",
	"sad-cry",
	"sad-tear",
	"salad",
	"sandwich",
	"satellite",
	"satellite-dish",
	"sausage",
	"save",
	"sax-hot",
	"saxophone",
	"scalpel",
	"scalpel-path",
	"scanner",
	"scanner-image",
	"scanner-keyboard",
	"scanner-touchscreen",
	"scarecrow",
	"scarf",
	"school",
	"screwdriver",
	"scroll",
	"scroll-old",
	"scrubber",
	"scythe",
	"sd-card",
	"search",
	"search-dollar",
	"search-location",
	"search-minus",
	"search-plus",
	"seedling",
	"send-back",
	"send-backward",
	"sensor",
	"sensor-alert",
	"sensor-fire",
	"sensor-on",
	"sensor-smoke",
	"server",
	"shapes",
	"share",
	"share-all",
	"share-alt",
	"share-alt-square",
	"share-square",
	"sheep",
	"shekel-sign",
	"shield",
	"shield-alt",
	"shield-check",
	"shield-cross",
	"shield-virus",
	"ship",
	"shipping-fast",
	"shipping-timed",
	"shish-kebab",
	"shoe-prints",
	"shopping-bag",
	"shopping-basket",
	"shopping-cart",
	"shovel",
	"shovel-snow",
	"shower",
	"shredder",
	"shuttle-van",
	"shuttlecock",
	"sickle",
	"sigma",
	"sign",
	"sign-in",
	"sign-in-alt",
	"sign-language",
	"sign-out",
	"sign-out-alt",
	"signal",
	"signal-1",
	"signal-2",
	"signal-3",
	"signal-4",
	"signal-alt",
	"signal-alt-1",
	"signal-alt-2",
	"signal-alt-3",
	"signal-alt-slash",
	"signal-slash",
	"signal-stream",
	"signature",
	"sim-card",
	"sink",
	"siren",
	"siren-on",
	"sitemap",
	"skating",
	"skeleton",
	"ski-jump",
	"ski-lift",
	"skiing",
	"skiing-nordic",
	"skull",
	"skull-cow",
	"skull-crossbones",
	"slash",
	"sledding",
	"sleigh",
	"sliders-h",
	"sliders-h-square",
	"sliders-v",
	"sliders-v-square",
	"smile",
	"smile-beam",
	"smile-plus",
	"smile-wink",
	"smog",
	"smoke",
	"smoking",
	"smoking-ban",
	"sms",
	"snake",
	"snooze",
	"snow-blowing",
	"snowboarding",
	"snowflake",
	"snowflakes",
	"snowman",
	"snowmobile",
	"snowplow",
	"soap",
	"socks",
	"solar-panel",
	"solar-system",
	"sort",
	"sort-alpha-down",
	"sort-alpha-down-alt",
	"sort-alpha-up",
	"sort-alpha-up-alt",
	"sort-alt",
	"sort-amount-down",
	"sort-amount-down-alt",
	"sort-amount-up",
	"sort-amount-up-alt",
	"sort-circle",
	"sort-circle-down",
	"sort-circle-up",
	"sort-down",
	"sort-numeric-down",
	"sort-numeric-down-alt",
	"sort-numeric-up",
	"sort-numeric-up-alt",
	"sort-shapes-down",
	"sort-shapes-down-alt",
	"sort-shapes-up",
	"sort-shapes-up-alt",
	"sort-size-down",
	"sort-size-down-alt",
	"sort-size-up",
	"sort-size-up-alt",
	"sort-up",
	"soup",
	"spa",
	"space-shuttle",
	"space-station-moon",
	"space-station-moon-alt",
	"spade",
	"sparkles",
	"speaker",
	"speakers",
	"spell-check",
	"spider",
	"spider-black-widow",
	"spider-web",
	"spinner",
	"spinner-third",
	"splotch",
	"spray-can",
	"sprinkler",
	"square",
	"square-full",
	"square-root",
	"square-root-alt",
	"squirrel",
	"staff",
	"stamp",
	"star",
	"star-and-crescent",
	"star-christmas",
	"star-exclamation",
	"star-half",
	"star-half-alt",
	"star-of-david",
	"star-of-life",
	"star-shooting",
	"starfighter",
	"starfighter-alt",
	"stars",
	"starship",
	"starship-freighter",
	"steak",
	"steering-wheel",
	"step-backward",
	"step-forward",
	"stethoscope",
	"sticky-note",
	"stocking",
	"stomach",
	"stop",
	"stop-circle",
	"stopwatch",
	"stopwatch-20",
	"store",
	"store-alt",
	"store-alt-slash",
	"store-slash",
	"stream",
	"street-view",
	"stretcher",
	"strikethrough",
	"stroopwafel",
	"subscript",
	"subway",
	"suitcase",
	"suitcase-rolling",
	"sun",
	"sun-cloud",
	"sun-dust",
	"sun-haze",
	"sunglasses",
	"sunrise",
	"sunset",
	"superscript",
	"surprise",
	"swatchbook",
	"swimmer",
	"swimming-pool",
	"sword",
	"sword-laser",
	"sword-laser-alt",
	"swords",
	"swords-laser",
	"synagogue",
	"sync",
	"sync-alt",
	"syringe",
	"table",
	"table-tennis",
	"tablet",
	"tablet-alt",
	"tablet-android",
	"tablet-android-alt",
	"tablet-rugged",
	"tablets",
	"tachometer",
	"tachometer-alt",
	"tachometer-alt-average",
	"tachometer-alt-fast",
	"tachometer-alt-fastest",
	"tachometer-alt-slow",
	"tachometer-alt-slowest",
	"tachometer-average",
	"tachometer-fast",
	"tachometer-fastest",
	"tachometer-slow",
	"tachometer-slowest",
	"taco",
	"tag",
	"tags",
	"tally",
	"tanakh",
	"tape",
	"tasks",
	"tasks-alt",
	"taxi",
	"teeth",
	"teeth-open",
	"telescope",
	"temperature-down",
	"temperature-frigid",
	"temperature-high",
	"temperature-hot",
	"temperature-low",
	"temperature-up",
	"tenge",
	"tennis-ball",
	"terminal",
	"text",
	"text-height",
	"text-size",
	"text-width",
	"th",
	"th-large",
	"th-list",
	"theater-masks",
	"thermometer",
	"thermometer-empty",
	"thermometer-full",
	"thermometer-half",
	"thermometer-quarter",
	"thermometer-three-quarters",
	"theta",
	"thumbs-down",
	"thumbs-up",
	"thumbtack",
	"thunderstorm",
	"thunderstorm-moon",
	"thunderstorm-sun",
	"ticket",
	"ticket-alt",
	"tilde",
	"times",
	"times-circle",
	"times-hexagon",
	"times-octagon",
	"times-square",
	"tint",
	"tint-slash",
	"tire",
	"tire-flat",
	"tire-pressure-warning",
	"tire-rugged",
	"tired",
	"toggle-off",
	"toggle-on",
	"toilet",
	"toilet-paper",
	"toilet-paper-alt",
	"toilet-paper-slash",
	"tombstone",
	"tombstone-alt",
	"toolbox",
	"tools",
	"tooth",
	"toothbrush",
	"torah",
	"torii-gate",
	"tornado",
	"tractor",
	"trademark",
	"traffic-cone",
	"traffic-light",
	"traffic-light-go",
	"traffic-light-slow",
	"traffic-light-stop",
	"trailer",
	"train",
	"tram",
	"transgender",
	"transgender-alt",
	"transporter",
	"transporter-1",
	"transporter-2",
	"transporter-3",
	"transporter-empty",
	"trash",
	"trash-alt",
	"trash-restore",
	"trash-restore-alt",
	"trash-undo",
	"trash-undo-alt",
	"treasure-chest",
	"tree",
	"tree-alt",
	"tree-christmas",
	"tree-decorated",
	"tree-large",
	"tree-palm",
	"trees",
	"triangle",
	"triangle-music",
	"trophy",
	"trophy-alt",
	"truck",
	"truck-container",
	"truck-couch",
	"truck-loading",
	"truck-monster",
	"truck-moving",
	"truck-pickup",
	"truck-plow",
	"truck-ramp",
	"trumpet",
	"tshirt",
	"tty",
	"turkey",
	"turntable",
	"turtle",
	"tv",
	"tv-alt",
	"tv-music",
	"tv-retro",
	"typewriter",
	"ufo",
	"ufo-beam",
	"umbrella",
	"umbrella-beach",
	"underline",
	"undo",
	"undo-alt",
	"unicorn",
	"union",
	"universal-access",
	"university",
	"unlink",
	"unlock",
	"unlock-alt",
	"upload",
	"usb-drive",
	"usd-circle",
	"usd-square",
	"user",
	"user-alien",
	"user-alt",
	"user-alt-slash",
	"user-astronaut",
	"user-chart",
	"user-check",
	"user-circle",
	"user-clock",
	"user-cog",
	"user-cowboy",
	"user-crown",
	"user-edit",
	"user-friends",
	"user-graduate",
	"user-hard-hat",
	"user-headset",
	"user-injured",
	"user-lock",
	"user-md",
	"user-md-chat",
	"user-minus",
	"user-music",
	"user-ninja",
	"user-nurse",
	"user-plus",
	"user-robot",
	"user-secret",
	"user-shield",
	"user-slash",
	"user-tag",
	"user-tie",
	"user-times",
	"user-unlock",
	"user-visor",
	"users",
	"users-class",
	"users-cog",
	"users-crown",
	"users-medical",
	"users-slash",
	"utensil-fork",
	"utensil-knife",
	"utensil-spoon",
	"utensils",
	"utensils-alt",
	"vacuum",
	"vacuum-robot",
	"value-absolute",
	"vector-square",
	"venus",
	"venus-double",
	"venus-mars",
	"vest",
	"vest-patches",
	"vhs",
	"vial",
	"vials",
	"video",
	"video-plus",
	"video-slash",
	"vihara",
	"violin",
	"virus",
	"virus-slash",
	"viruses",
	"voicemail",
	"volcano",
	"volleyball-ball",
	"volume",
	"volume-down",
	"volume-mute",
	"volume-off",
	"volume-slash",
	"volume-up",
	"vote-nay",
	"vote-yea",
	"vr-cardboard",
	"wagon-covered",
	"walker",
	"walkie-talkie",
	"walking",
	"wallet",
	"wand",
	"wand-magic",
	"warehouse",
	"warehouse-alt",
	"washer",
	"watch",
	"watch-calculator",
	"watch-fitness",
	"water",
	"water-lower",
	"water-rise",
	"wave-sine",
	"wave-square",
	"wave-triangle",
	"waveform",
	"waveform-path",
	"webcam",
	"webcam-slash",
	"weight",
	"weight-hanging",
	"whale",
	"wheat",
	"wheelchair",
	"whistle",
	"wifi",
	"wifi-1",
	"wifi-2",
	"wifi-slash",
	"wind",
	"wind-turbine",
	"wind-warning",
	"window",
	"window-alt",
	"window-close",
	"window-frame",
	"window-frame-open",
	"window-maximize",
	"window-minimize",
	"window-restore",
	"windsock",
	"wine-bottle",
	"wine-glass",
	"wine-glass-alt",
	"won-sign",
	"wreath",
	"wrench",
	"x-ray",
	"yen-sign",
	"yin-yang"
	]
}
assets/lib/font-awesome-pro/solid.js000064400000067300150755004310013474 0ustar00{
  "icons": [
	"abacus",
	"acorn",
	"ad",
	"address-book",
	"address-card",
	"adjust",
	"air-conditioner",
	"air-freshener",
	"alarm-clock",
	"alarm-exclamation",
	"alarm-plus",
	"alarm-snooze",
	"album",
	"album-collection",
	"alicorn",
	"alien",
	"alien-monster",
	"align-center",
	"align-justify",
	"align-left",
	"align-right",
	"align-slash",
	"allergies",
	"ambulance",
	"american-sign-language-interpreting",
	"amp-guitar",
	"analytics",
	"anchor",
	"angel",
	"angle-double-down",
	"angle-double-left",
	"angle-double-right",
	"angle-double-up",
	"angle-down",
	"angle-left",
	"angle-right",
	"angle-up",
	"angry",
	"ankh",
	"apple-alt",
	"apple-crate",
	"archive",
	"archway",
	"arrow-alt-circle-down",
	"arrow-alt-circle-left",
	"arrow-alt-circle-right",
	"arrow-alt-circle-up",
	"arrow-alt-down",
	"arrow-alt-from-bottom",
	"arrow-alt-from-left",
	"arrow-alt-from-right",
	"arrow-alt-from-top",
	"arrow-alt-left",
	"arrow-alt-right",
	"arrow-alt-square-down",
	"arrow-alt-square-left",
	"arrow-alt-square-right",
	"arrow-alt-square-up",
	"arrow-alt-to-bottom",
	"arrow-alt-to-left",
	"arrow-alt-to-right",
	"arrow-alt-to-top",
	"arrow-alt-up",
	"arrow-circle-down",
	"arrow-circle-left",
	"arrow-circle-right",
	"arrow-circle-up",
	"arrow-down",
	"arrow-from-bottom",
	"arrow-from-left",
	"arrow-from-right",
	"arrow-from-top",
	"arrow-left",
	"arrow-right",
	"arrow-square-down",
	"arrow-square-left",
	"arrow-square-right",
	"arrow-square-up",
	"arrow-to-bottom",
	"arrow-to-left",
	"arrow-to-right",
	"arrow-to-top",
	"arrow-up",
	"arrows",
	"arrows-alt",
	"arrows-alt-h",
	"arrows-alt-v",
	"arrows-h",
	"arrows-v",
	"assistive-listening-systems",
	"asterisk",
	"at",
	"atlas",
	"atom",
	"atom-alt",
	"audio-description",
	"award",
	"axe",
	"axe-battle",
	"baby",
	"baby-carriage",
	"backpack",
	"backspace",
	"backward",
	"bacon",
	"bacteria",
	"bacterium",
	"badge",
	"badge-check",
	"badge-dollar",
	"badge-percent",
	"badge-sheriff",
	"badger-honey",
	"bags-shopping",
	"bahai",
	"balance-scale",
	"balance-scale-left",
	"balance-scale-right",
	"ball-pile",
	"ballot",
	"ballot-check",
	"ban",
	"band-aid",
	"banjo",
	"barcode",
	"barcode-alt",
	"barcode-read",
	"barcode-scan",
	"bars",
	"baseball",
	"baseball-ball",
	"basketball-ball",
	"basketball-hoop",
	"bat",
	"bath",
	"battery-bolt",
	"battery-empty",
	"battery-full",
	"battery-half",
	"battery-quarter",
	"battery-slash",
	"battery-three-quarters",
	"bed",
	"bed-alt",
	"bed-bunk",
	"bed-empty",
	"beer",
	"bell",
	"bell-exclamation",
	"bell-on",
	"bell-plus",
	"bell-school",
	"bell-school-slash",
	"bell-slash",
	"bells",
	"betamax",
	"bezier-curve",
	"bible",
	"bicycle",
	"biking",
	"biking-mountain",
	"binoculars",
	"biohazard",
	"birthday-cake",
	"blanket",
	"blender",
	"blender-phone",
	"blind",
	"blinds",
	"blinds-open",
	"blinds-raised",
	"blog",
	"bold",
	"bolt",
	"bomb",
	"bone",
	"bone-break",
	"bong",
	"book",
	"book-alt",
	"book-dead",
	"book-heart",
	"book-medical",
	"book-open",
	"book-reader",
	"book-spells",
	"book-user",
	"bookmark",
	"books",
	"books-medical",
	"boombox",
	"boot",
	"booth-curtain",
	"border-all",
	"border-bottom",
	"border-center-h",
	"border-center-v",
	"border-inner",
	"border-left",
	"border-none",
	"border-outer",
	"border-right",
	"border-style",
	"border-style-alt",
	"border-top",
	"bow-arrow",
	"bowling-ball",
	"bowling-pins",
	"box",
	"box-alt",
	"box-ballot",
	"box-check",
	"box-fragile",
	"box-full",
	"box-heart",
	"box-open",
	"box-tissue",
	"box-up",
	"box-usd",
	"boxes",
	"boxes-alt",
	"boxing-glove",
	"brackets",
	"brackets-curly",
	"braille",
	"brain",
	"bread-loaf",
	"bread-slice",
	"briefcase",
	"briefcase-medical",
	"bring-forward",
	"bring-front",
	"broadcast-tower",
	"broom",
	"browser",
	"brush",
	"bug",
	"building",
	"bullhorn",
	"bullseye",
	"bullseye-arrow",
	"bullseye-pointer",
	"burger-soda",
	"burn",
	"burrito",
	"bus",
	"bus-alt",
	"bus-school",
	"business-time",
	"cabinet-filing",
	"cactus",
	"calculator",
	"calculator-alt",
	"calendar",
	"calendar-alt",
	"calendar-check",
	"calendar-day",
	"calendar-edit",
	"calendar-exclamation",
	"calendar-minus",
	"calendar-plus",
	"calendar-star",
	"calendar-times",
	"calendar-week",
	"camcorder",
	"camera",
	"camera-alt",
	"camera-home",
	"camera-movie",
	"camera-polaroid",
	"camera-retro",
	"campfire",
	"campground",
	"candle-holder",
	"candy-cane",
	"candy-corn",
	"cannabis",
	"capsules",
	"car",
	"car-alt",
	"car-battery",
	"car-building",
	"car-bump",
	"car-bus",
	"car-crash",
	"car-garage",
	"car-mechanic",
	"car-side",
	"car-tilt",
	"car-wash",
	"caravan",
	"caravan-alt",
	"caret-circle-down",
	"caret-circle-left",
	"caret-circle-right",
	"caret-circle-up",
	"caret-down",
	"caret-left",
	"caret-right",
	"caret-square-down",
	"caret-square-left",
	"caret-square-right",
	"caret-square-up",
	"caret-up",
	"carrot",
	"cars",
	"cart-arrow-down",
	"cart-plus",
	"cash-register",
	"cassette-tape",
	"cat",
	"cat-space",
	"cauldron",
	"cctv",
	"certificate",
	"chair",
	"chair-office",
	"chalkboard",
	"chalkboard-teacher",
	"charging-station",
	"chart-area",
	"chart-bar",
	"chart-line",
	"chart-line-down",
	"chart-network",
	"chart-pie",
	"chart-pie-alt",
	"chart-scatter",
	"check",
	"check-circle",
	"check-double",
	"check-square",
	"cheese",
	"cheese-swiss",
	"cheeseburger",
	"chess",
	"chess-bishop",
	"chess-bishop-alt",
	"chess-board",
	"chess-clock",
	"chess-clock-alt",
	"chess-king",
	"chess-king-alt",
	"chess-knight",
	"chess-knight-alt",
	"chess-pawn",
	"chess-pawn-alt",
	"chess-queen",
	"chess-queen-alt",
	"chess-rook",
	"chess-rook-alt",
	"chevron-circle-down",
	"chevron-circle-left",
	"chevron-circle-right",
	"chevron-circle-up",
	"chevron-double-down",
	"chevron-double-left",
	"chevron-double-right",
	"chevron-double-up",
	"chevron-down",
	"chevron-left",
	"chevron-right",
	"chevron-square-down",
	"chevron-square-left",
	"chevron-square-right",
	"chevron-square-up",
	"chevron-up",
	"child",
	"chimney",
	"church",
	"circle",
	"circle-notch",
	"city",
	"clarinet",
	"claw-marks",
	"clinic-medical",
	"clipboard",
	"clipboard-check",
	"clipboard-list",
	"clipboard-list-check",
	"clipboard-prescription",
	"clipboard-user",
	"clock",
	"clone",
	"closed-captioning",
	"cloud",
	"cloud-download",
	"cloud-download-alt",
	"cloud-drizzle",
	"cloud-hail",
	"cloud-hail-mixed",
	"cloud-meatball",
	"cloud-moon",
	"cloud-moon-rain",
	"cloud-music",
	"cloud-rain",
	"cloud-rainbow",
	"cloud-showers",
	"cloud-showers-heavy",
	"cloud-sleet",
	"cloud-snow",
	"cloud-sun",
	"cloud-sun-rain",
	"cloud-upload",
	"cloud-upload-alt",
	"clouds",
	"clouds-moon",
	"clouds-sun",
	"club",
	"cocktail",
	"code",
	"code-branch",
	"code-commit",
	"code-merge",
	"coffee",
	"coffee-pot",
	"coffee-togo",
	"coffin",
	"coffin-cross",
	"cog",
	"cogs",
	"coin",
	"coins",
	"columns",
	"comet",
	"comment",
	"comment-alt",
	"comment-alt-check",
	"comment-alt-dollar",
	"comment-alt-dots",
	"comment-alt-edit",
	"comment-alt-exclamation",
	"comment-alt-lines",
	"comment-alt-medical",
	"comment-alt-minus",
	"comment-alt-music",
	"comment-alt-plus",
	"comment-alt-slash",
	"comment-alt-smile",
	"comment-alt-times",
	"comment-check",
	"comment-dollar",
	"comment-dots",
	"comment-edit",
	"comment-exclamation",
	"comment-lines",
	"comment-medical",
	"comment-minus",
	"comment-music",
	"comment-plus",
	"comment-slash",
	"comment-smile",
	"comment-times",
	"comments",
	"comments-alt",
	"comments-alt-dollar",
	"comments-dollar",
	"compact-disc",
	"compass",
	"compass-slash",
	"compress",
	"compress-alt",
	"compress-arrows-alt",
	"compress-wide",
	"computer-classic",
	"computer-speaker",
	"concierge-bell",
	"construction",
	"container-storage",
	"conveyor-belt",
	"conveyor-belt-alt",
	"cookie",
	"cookie-bite",
	"copy",
	"copyright",
	"corn",
	"couch",
	"cow",
	"cowbell",
	"cowbell-more",
	"credit-card",
	"credit-card-blank",
	"credit-card-front",
	"cricket",
	"croissant",
	"crop",
	"crop-alt",
	"cross",
	"crosshairs",
	"crow",
	"crown",
	"crutch",
	"crutches",
	"cube",
	"cubes",
	"curling",
	"cut",
	"dagger",
	"database",
	"deaf",
	"debug",
	"deer",
	"deer-rudolph",
	"democrat",
	"desktop",
	"desktop-alt",
	"dewpoint",
	"dharmachakra",
	"diagnoses",
	"diamond",
	"dice",
	"dice-d10",
	"dice-d12",
	"dice-d20",
	"dice-d4",
	"dice-d6",
	"dice-d8",
	"dice-five",
	"dice-four",
	"dice-one",
	"dice-six",
	"dice-three",
	"dice-two",
	"digging",
	"digital-tachograph",
	"diploma",
	"directions",
	"disc-drive",
	"disease",
	"divide",
	"dizzy",
	"dna",
	"do-not-enter",
	"dog",
	"dog-leashed",
	"dollar-sign",
	"dolly",
	"dolly-empty",
	"dolly-flatbed",
	"dolly-flatbed-alt",
	"dolly-flatbed-empty",
	"donate",
	"door-closed",
	"door-open",
	"dot-circle",
	"dove",
	"download",
	"drafting-compass",
	"dragon",
	"draw-circle",
	"draw-polygon",
	"draw-square",
	"dreidel",
	"drone",
	"drone-alt",
	"drum",
	"drum-steelpan",
	"drumstick",
	"drumstick-bite",
	"dryer",
	"dryer-alt",
	"duck",
	"dumbbell",
	"dumpster",
	"dumpster-fire",
	"dungeon",
	"ear",
	"ear-muffs",
	"eclipse",
	"eclipse-alt",
	"edit",
	"egg",
	"egg-fried",
	"eject",
	"elephant",
	"ellipsis-h",
	"ellipsis-h-alt",
	"ellipsis-v",
	"ellipsis-v-alt",
	"empty-set",
	"engine-warning",
	"envelope",
	"envelope-open",
	"envelope-open-dollar",
	"envelope-open-text",
	"envelope-square",
	"equals",
	"eraser",
	"ethernet",
	"euro-sign",
	"exchange",
	"exchange-alt",
	"exclamation",
	"exclamation-circle",
	"exclamation-square",
	"exclamation-triangle",
	"expand",
	"expand-alt",
	"expand-arrows",
	"expand-arrows-alt",
	"expand-wide",
	"external-link",
	"external-link-alt",
	"external-link-square",
	"external-link-square-alt",
	"eye",
	"eye-dropper",
	"eye-evil",
	"eye-slash",
	"fan",
	"fan-table",
	"farm",
	"fast-backward",
	"fast-forward",
	"faucet",
	"faucet-drip",
	"fax",
	"feather",
	"feather-alt",
	"female",
	"field-hockey",
	"fighter-jet",
	"file",
	"file-alt",
	"file-archive",
	"file-audio",
	"file-certificate",
	"file-chart-line",
	"file-chart-pie",
	"file-check",
	"file-code",
	"file-contract",
	"file-csv",
	"file-download",
	"file-edit",
	"file-excel",
	"file-exclamation",
	"file-export",
	"file-image",
	"file-import",
	"file-invoice",
	"file-invoice-dollar",
	"file-medical",
	"file-medical-alt",
	"file-minus",
	"file-music",
	"file-pdf",
	"file-plus",
	"file-powerpoint",
	"file-prescription",
	"file-search",
	"file-signature",
	"file-spreadsheet",
	"file-times",
	"file-upload",
	"file-user",
	"file-video",
	"file-word",
	"files-medical",
	"fill",
	"fill-drip",
	"film",
	"film-alt",
	"film-canister",
	"filter",
	"fingerprint",
	"fire",
	"fire-alt",
	"fire-extinguisher",
	"fire-smoke",
	"fireplace",
	"first-aid",
	"fish",
	"fish-cooked",
	"fist-raised",
	"flag",
	"flag-alt",
	"flag-checkered",
	"flag-usa",
	"flame",
	"flashlight",
	"flask",
	"flask-poison",
	"flask-potion",
	"flower",
	"flower-daffodil",
	"flower-tulip",
	"flushed",
	"flute",
	"flux-capacitor",
	"fog",
	"folder",
	"folder-download",
	"folder-minus",
	"folder-open",
	"folder-plus",
	"folder-times",
	"folder-tree",
	"folder-upload",
	"folders",
	"font",
	"font-awesome-logo-full",
	"font-case",
	"football-ball",
	"football-helmet",
	"forklift",
	"forward",
	"fragile",
	"french-fries",
	"frog",
	"frosty-head",
	"frown",
	"frown-open",
	"function",
	"funnel-dollar",
	"futbol",
	"galaxy",
	"game-board",
	"game-board-alt",
	"game-console-handheld",
	"gamepad",
	"gamepad-alt",
	"garage",
	"garage-car",
	"garage-open",
	"gas-pump",
	"gas-pump-slash",
	"gavel",
	"gem",
	"genderless",
	"ghost",
	"gift",
	"gift-card",
	"gifts",
	"gingerbread-man",
	"glass",
	"glass-champagne",
	"glass-cheers",
	"glass-citrus",
	"glass-martini",
	"glass-martini-alt",
	"glass-whiskey",
	"glass-whiskey-rocks",
	"glasses",
	"glasses-alt",
	"globe",
	"globe-africa",
	"globe-americas",
	"globe-asia",
	"globe-europe",
	"globe-snow",
	"globe-stand",
	"golf-ball",
	"golf-club",
	"gopuram",
	"graduation-cap",
	"gramophone",
	"greater-than",
	"greater-than-equal",
	"grimace",
	"grin",
	"grin-alt",
	"grin-beam",
	"grin-beam-sweat",
	"grin-hearts",
	"grin-squint",
	"grin-squint-tears",
	"grin-stars",
	"grin-tears",
	"grin-tongue",
	"grin-tongue-squint",
	"grin-tongue-wink",
	"grin-wink",
	"grip-horizontal",
	"grip-lines",
	"grip-lines-vertical",
	"grip-vertical",
	"guitar",
	"guitar-electric",
	"guitars",
	"h-square",
	"h1",
	"h2",
	"h3",
	"h4",
	"hamburger",
	"hammer",
	"hammer-war",
	"hamsa",
	"hand-heart",
	"hand-holding",
	"hand-holding-box",
	"hand-holding-heart",
	"hand-holding-magic",
	"hand-holding-medical",
	"hand-holding-seedling",
	"hand-holding-usd",
	"hand-holding-water",
	"hand-lizard",
	"hand-middle-finger",
	"hand-paper",
	"hand-peace",
	"hand-point-down",
	"hand-point-left",
	"hand-point-right",
	"hand-point-up",
	"hand-pointer",
	"hand-receiving",
	"hand-rock",
	"hand-scissors",
	"hand-sparkles",
	"hand-spock",
	"hands",
	"hands-heart",
	"hands-helping",
	"hands-usd",
	"hands-wash",
	"handshake",
	"handshake-alt",
	"handshake-alt-slash",
	"handshake-slash",
	"hanukiah",
	"hard-hat",
	"hashtag",
	"hat-chef",
	"hat-cowboy",
	"hat-cowboy-side",
	"hat-santa",
	"hat-winter",
	"hat-witch",
	"hat-wizard",
	"hdd",
	"head-side",
	"head-side-brain",
	"head-side-cough",
	"head-side-cough-slash",
	"head-side-headphones",
	"head-side-mask",
	"head-side-medical",
	"head-side-virus",
	"head-vr",
	"heading",
	"headphones",
	"headphones-alt",
	"headset",
	"heart",
	"heart-broken",
	"heart-circle",
	"heart-rate",
	"heart-square",
	"heartbeat",
	"heat",
	"helicopter",
	"helmet-battle",
	"hexagon",
	"highlighter",
	"hiking",
	"hippo",
	"history",
	"hockey-mask",
	"hockey-puck",
	"hockey-sticks",
	"holly-berry",
	"home",
	"home-alt",
	"home-heart",
	"home-lg",
	"home-lg-alt",
	"hood-cloak",
	"horizontal-rule",
	"horse",
	"horse-head",
	"horse-saddle",
	"hospital",
	"hospital-alt",
	"hospital-symbol",
	"hospital-user",
	"hospitals",
	"hot-tub",
	"hotdog",
	"hotel",
	"hourglass",
	"hourglass-end",
	"hourglass-half",
	"hourglass-start",
	"house",
	"house-damage",
	"house-day",
	"house-flood",
	"house-leave",
	"house-night",
	"house-return",
	"house-signal",
	"house-user",
	"hryvnia",
	"humidity",
	"hurricane",
	"i-cursor",
	"ice-cream",
	"ice-skate",
	"icicles",
	"icons",
	"icons-alt",
	"id-badge",
	"id-card",
	"id-card-alt",
	"igloo",
	"image",
	"image-polaroid",
	"images",
	"inbox",
	"inbox-in",
	"inbox-out",
	"indent",
	"industry",
	"industry-alt",
	"infinity",
	"info",
	"info-circle",
	"info-square",
	"inhaler",
	"integral",
	"intersection",
	"inventory",
	"island-tropical",
	"italic",
	"jack-o-lantern",
	"jedi",
	"joint",
	"journal-whills",
	"joystick",
	"jug",
	"kaaba",
	"kazoo",
	"kerning",
	"key",
	"key-skeleton",
	"keyboard",
	"keynote",
	"khanda",
	"kidneys",
	"kiss",
	"kiss-beam",
	"kiss-wink-heart",
	"kite",
	"kiwi-bird",
	"knife-kitchen",
	"lambda",
	"lamp",
	"lamp-desk",
	"lamp-floor",
	"landmark",
	"landmark-alt",
	"language",
	"laptop",
	"laptop-code",
	"laptop-house",
	"laptop-medical",
	"lasso",
	"laugh",
	"laugh-beam",
	"laugh-squint",
	"laugh-wink",
	"layer-group",
	"layer-minus",
	"layer-plus",
	"leaf",
	"leaf-heart",
	"leaf-maple",
	"leaf-oak",
	"lemon",
	"less-than",
	"less-than-equal",
	"level-down",
	"level-down-alt",
	"level-up",
	"level-up-alt",
	"life-ring",
	"light-ceiling",
	"light-switch",
	"light-switch-off",
	"light-switch-on",
	"lightbulb",
	"lightbulb-dollar",
	"lightbulb-exclamation",
	"lightbulb-on",
	"lightbulb-slash",
	"lights-holiday",
	"line-columns",
	"line-height",
	"link",
	"lips",
	"lira-sign",
	"list",
	"list-alt",
	"list-music",
	"list-ol",
	"list-ul",
	"location",
	"location-arrow",
	"location-circle",
	"location-slash",
	"lock",
	"lock-alt",
	"lock-open",
	"lock-open-alt",
	"long-arrow-alt-down",
	"long-arrow-alt-left",
	"long-arrow-alt-right",
	"long-arrow-alt-up",
	"long-arrow-down",
	"long-arrow-left",
	"long-arrow-right",
	"long-arrow-up",
	"loveseat",
	"low-vision",
	"luchador",
	"luggage-cart",
	"lungs",
	"lungs-virus",
	"mace",
	"magic",
	"magnet",
	"mail-bulk",
	"mailbox",
	"male",
	"mandolin",
	"map",
	"map-marked",
	"map-marked-alt",
	"map-marker",
	"map-marker-alt",
	"map-marker-alt-slash",
	"map-marker-check",
	"map-marker-edit",
	"map-marker-exclamation",
	"map-marker-minus",
	"map-marker-plus",
	"map-marker-question",
	"map-marker-slash",
	"map-marker-smile",
	"map-marker-times",
	"map-pin",
	"map-signs",
	"marker",
	"mars",
	"mars-double",
	"mars-stroke",
	"mars-stroke-h",
	"mars-stroke-v",
	"mask",
	"meat",
	"medal",
	"medkit",
	"megaphone",
	"meh",
	"meh-blank",
	"meh-rolling-eyes",
	"memory",
	"menorah",
	"mercury",
	"meteor",
	"microchip",
	"microphone",
	"microphone-alt",
	"microphone-alt-slash",
	"microphone-slash",
	"microphone-stand",
	"microscope",
	"microwave",
	"mind-share",
	"minus",
	"minus-circle",
	"minus-hexagon",
	"minus-octagon",
	"minus-square",
	"mistletoe",
	"mitten",
	"mobile",
	"mobile-alt",
	"mobile-android",
	"mobile-android-alt",
	"money-bill",
	"money-bill-alt",
	"money-bill-wave",
	"money-bill-wave-alt",
	"money-check",
	"money-check-alt",
	"money-check-edit",
	"money-check-edit-alt",
	"monitor-heart-rate",
	"monkey",
	"monument",
	"moon",
	"moon-cloud",
	"moon-stars",
	"mortar-pestle",
	"mosque",
	"motorcycle",
	"mountain",
	"mountains",
	"mouse",
	"mouse-alt",
	"mouse-pointer",
	"mp3-player",
	"mug",
	"mug-hot",
	"mug-marshmallows",
	"mug-tea",
	"music",
	"music-alt",
	"music-alt-slash",
	"music-slash",
	"narwhal",
	"network-wired",
	"neuter",
	"newspaper",
	"not-equal",
	"notes-medical",
	"object-group",
	"object-ungroup",
	"octagon",
	"oil-can",
	"oil-temp",
	"om",
	"omega",
	"ornament",
	"otter",
	"outdent",
	"outlet",
	"oven",
	"overline",
	"page-break",
	"pager",
	"paint-brush",
	"paint-brush-alt",
	"paint-roller",
	"palette",
	"pallet",
	"pallet-alt",
	"paper-plane",
	"paperclip",
	"parachute-box",
	"paragraph",
	"paragraph-rtl",
	"parking",
	"parking-circle",
	"parking-circle-slash",
	"parking-slash",
	"passport",
	"pastafarianism",
	"paste",
	"pause",
	"pause-circle",
	"paw",
	"paw-alt",
	"paw-claws",
	"peace",
	"pegasus",
	"pen",
	"pen-alt",
	"pen-fancy",
	"pen-nib",
	"pen-square",
	"pencil",
	"pencil-alt",
	"pencil-paintbrush",
	"pencil-ruler",
	"pennant",
	"people-arrows",
	"people-carry",
	"pepper-hot",
	"percent",
	"percentage",
	"person-booth",
	"person-carry",
	"person-dolly",
	"person-dolly-empty",
	"person-sign",
	"phone",
	"phone-alt",
	"phone-laptop",
	"phone-office",
	"phone-plus",
	"phone-rotary",
	"phone-slash",
	"phone-square",
	"phone-square-alt",
	"phone-volume",
	"photo-video",
	"pi",
	"piano",
	"piano-keyboard",
	"pie",
	"pig",
	"piggy-bank",
	"pills",
	"pizza",
	"pizza-slice",
	"place-of-worship",
	"plane",
	"plane-alt",
	"plane-arrival",
	"plane-departure",
	"plane-slash",
	"planet-moon",
	"planet-ringed",
	"play",
	"play-circle",
	"plug",
	"plus",
	"plus-circle",
	"plus-hexagon",
	"plus-octagon",
	"plus-square",
	"podcast",
	"podium",
	"podium-star",
	"police-box",
	"poll",
	"poll-h",
	"poll-people",
	"poo",
	"poo-storm",
	"poop",
	"popcorn",
	"portal-enter",
	"portal-exit",
	"portrait",
	"pound-sign",
	"power-off",
	"pray",
	"praying-hands",
	"prescription",
	"prescription-bottle",
	"prescription-bottle-alt",
	"presentation",
	"print",
	"print-search",
	"print-slash",
	"procedures",
	"project-diagram",
	"projector",
	"pump-medical",
	"pump-soap",
	"pumpkin",
	"puzzle-piece",
	"qrcode",
	"question",
	"question-circle",
	"question-square",
	"quidditch",
	"quote-left",
	"quote-right",
	"quran",
	"rabbit",
	"rabbit-fast",
	"racquet",
	"radar",
	"radiation",
	"radiation-alt",
	"radio",
	"radio-alt",
	"rainbow",
	"raindrops",
	"ram",
	"ramp-loading",
	"random",
	"raygun",
	"receipt",
	"record-vinyl",
	"rectangle-landscape",
	"rectangle-portrait",
	"rectangle-wide",
	"recycle",
	"redo",
	"redo-alt",
	"refrigerator",
	"registered",
	"remove-format",
	"repeat",
	"repeat-1",
	"repeat-1-alt",
	"repeat-alt",
	"reply",
	"reply-all",
	"republican",
	"restroom",
	"retweet",
	"retweet-alt",
	"ribbon",
	"ring",
	"rings-wedding",
	"road",
	"robot",
	"rocket",
	"rocket-launch",
	"route",
	"route-highway",
	"route-interstate",
	"router",
	"rss",
	"rss-square",
	"ruble-sign",
	"ruler",
	"ruler-combined",
	"ruler-horizontal",
	"ruler-triangle",
	"ruler-vertical",
	"running",
	"rupee-sign",
	"rv",
	"sack",
	"sack-dollar",
	"sad-cry",
	"sad-tear",
	"salad",
	"sandwich",
	"satellite",
	"satellite-dish",
	"sausage",
	"save",
	"sax-hot",
	"saxophone",
	"scalpel",
	"scalpel-path",
	"scanner",
	"scanner-image",
	"scanner-keyboard",
	"scanner-touchscreen",
	"scarecrow",
	"scarf",
	"school",
	"screwdriver",
	"scroll",
	"scroll-old",
	"scrubber",
	"scythe",
	"sd-card",
	"search",
	"search-dollar",
	"search-location",
	"search-minus",
	"search-plus",
	"seedling",
	"send-back",
	"send-backward",
	"sensor",
	"sensor-alert",
	"sensor-fire",
	"sensor-on",
	"sensor-smoke",
	"server",
	"shapes",
	"share",
	"share-all",
	"share-alt",
	"share-alt-square",
	"share-square",
	"sheep",
	"shekel-sign",
	"shield",
	"shield-alt",
	"shield-check",
	"shield-cross",
	"shield-virus",
	"ship",
	"shipping-fast",
	"shipping-timed",
	"shish-kebab",
	"shoe-prints",
	"shopping-bag",
	"shopping-basket",
	"shopping-cart",
	"shovel",
	"shovel-snow",
	"shower",
	"shredder",
	"shuttle-van",
	"shuttlecock",
	"sickle",
	"sigma",
	"sign",
	"sign-in",
	"sign-in-alt",
	"sign-language",
	"sign-out",
	"sign-out-alt",
	"signal",
	"signal-1",
	"signal-2",
	"signal-3",
	"signal-4",
	"signal-alt",
	"signal-alt-1",
	"signal-alt-2",
	"signal-alt-3",
	"signal-alt-slash",
	"signal-slash",
	"signal-stream",
	"signature",
	"sim-card",
	"sink",
	"siren",
	"siren-on",
	"sitemap",
	"skating",
	"skeleton",
	"ski-jump",
	"ski-lift",
	"skiing",
	"skiing-nordic",
	"skull",
	"skull-cow",
	"skull-crossbones",
	"slash",
	"sledding",
	"sleigh",
	"sliders-h",
	"sliders-h-square",
	"sliders-v",
	"sliders-v-square",
	"smile",
	"smile-beam",
	"smile-plus",
	"smile-wink",
	"smog",
	"smoke",
	"smoking",
	"smoking-ban",
	"sms",
	"snake",
	"snooze",
	"snow-blowing",
	"snowboarding",
	"snowflake",
	"snowflakes",
	"snowman",
	"snowmobile",
	"snowplow",
	"soap",
	"socks",
	"solar-panel",
	"solar-system",
	"sort",
	"sort-alpha-down",
	"sort-alpha-down-alt",
	"sort-alpha-up",
	"sort-alpha-up-alt",
	"sort-alt",
	"sort-amount-down",
	"sort-amount-down-alt",
	"sort-amount-up",
	"sort-amount-up-alt",
	"sort-circle",
	"sort-circle-down",
	"sort-circle-up",
	"sort-down",
	"sort-numeric-down",
	"sort-numeric-down-alt",
	"sort-numeric-up",
	"sort-numeric-up-alt",
	"sort-shapes-down",
	"sort-shapes-down-alt",
	"sort-shapes-up",
	"sort-shapes-up-alt",
	"sort-size-down",
	"sort-size-down-alt",
	"sort-size-up",
	"sort-size-up-alt",
	"sort-up",
	"soup",
	"spa",
	"space-shuttle",
	"space-station-moon",
	"space-station-moon-alt",
	"spade",
	"sparkles",
	"speaker",
	"speakers",
	"spell-check",
	"spider",
	"spider-black-widow",
	"spider-web",
	"spinner",
	"spinner-third",
	"splotch",
	"spray-can",
	"sprinkler",
	"square",
	"square-full",
	"square-root",
	"square-root-alt",
	"squirrel",
	"staff",
	"stamp",
	"star",
	"star-and-crescent",
	"star-christmas",
	"star-exclamation",
	"star-half",
	"star-half-alt",
	"star-of-david",
	"star-of-life",
	"star-shooting",
	"starfighter",
	"starfighter-alt",
	"stars",
	"starship",
	"starship-freighter",
	"steak",
	"steering-wheel",
	"step-backward",
	"step-forward",
	"stethoscope",
	"sticky-note",
	"stocking",
	"stomach",
	"stop",
	"stop-circle",
	"stopwatch",
	"stopwatch-20",
	"store",
	"store-alt",
	"store-alt-slash",
	"store-slash",
	"stream",
	"street-view",
	"stretcher",
	"strikethrough",
	"stroopwafel",
	"subscript",
	"subway",
	"suitcase",
	"suitcase-rolling",
	"sun",
	"sun-cloud",
	"sun-dust",
	"sun-haze",
	"sunglasses",
	"sunrise",
	"sunset",
	"superscript",
	"surprise",
	"swatchbook",
	"swimmer",
	"swimming-pool",
	"sword",
	"sword-laser",
	"sword-laser-alt",
	"swords",
	"swords-laser",
	"synagogue",
	"sync",
	"sync-alt",
	"syringe",
	"table",
	"table-tennis",
	"tablet",
	"tablet-alt",
	"tablet-android",
	"tablet-android-alt",
	"tablet-rugged",
	"tablets",
	"tachometer",
	"tachometer-alt",
	"tachometer-alt-average",
	"tachometer-alt-fast",
	"tachometer-alt-fastest",
	"tachometer-alt-slow",
	"tachometer-alt-slowest",
	"tachometer-average",
	"tachometer-fast",
	"tachometer-fastest",
	"tachometer-slow",
	"tachometer-slowest",
	"taco",
	"tag",
	"tags",
	"tally",
	"tanakh",
	"tape",
	"tasks",
	"tasks-alt",
	"taxi",
	"teeth",
	"teeth-open",
	"telescope",
	"temperature-down",
	"temperature-frigid",
	"temperature-high",
	"temperature-hot",
	"temperature-low",
	"temperature-up",
	"tenge",
	"tennis-ball",
	"terminal",
	"text",
	"text-height",
	"text-size",
	"text-width",
	"th",
	"th-large",
	"th-list",
	"theater-masks",
	"thermometer",
	"thermometer-empty",
	"thermometer-full",
	"thermometer-half",
	"thermometer-quarter",
	"thermometer-three-quarters",
	"theta",
	"thumbs-down",
	"thumbs-up",
	"thumbtack",
	"thunderstorm",
	"thunderstorm-moon",
	"thunderstorm-sun",
	"ticket",
	"ticket-alt",
	"tilde",
	"times",
	"times-circle",
	"times-hexagon",
	"times-octagon",
	"times-square",
	"tint",
	"tint-slash",
	"tire",
	"tire-flat",
	"tire-pressure-warning",
	"tire-rugged",
	"tired",
	"toggle-off",
	"toggle-on",
	"toilet",
	"toilet-paper",
	"toilet-paper-alt",
	"toilet-paper-slash",
	"tombstone",
	"tombstone-alt",
	"toolbox",
	"tools",
	"tooth",
	"toothbrush",
	"torah",
	"torii-gate",
	"tornado",
	"tractor",
	"trademark",
	"traffic-cone",
	"traffic-light",
	"traffic-light-go",
	"traffic-light-slow",
	"traffic-light-stop",
	"trailer",
	"train",
	"tram",
	"transgender",
	"transgender-alt",
	"transporter",
	"transporter-1",
	"transporter-2",
	"transporter-3",
	"transporter-empty",
	"trash",
	"trash-alt",
	"trash-restore",
	"trash-restore-alt",
	"trash-undo",
	"trash-undo-alt",
	"treasure-chest",
	"tree",
	"tree-alt",
	"tree-christmas",
	"tree-decorated",
	"tree-large",
	"tree-palm",
	"trees",
	"triangle",
	"triangle-music",
	"trophy",
	"trophy-alt",
	"truck",
	"truck-container",
	"truck-couch",
	"truck-loading",
	"truck-monster",
	"truck-moving",
	"truck-pickup",
	"truck-plow",
	"truck-ramp",
	"trumpet",
	"tshirt",
	"tty",
	"turkey",
	"turntable",
	"turtle",
	"tv",
	"tv-alt",
	"tv-music",
	"tv-retro",
	"typewriter",
	"ufo",
	"ufo-beam",
	"umbrella",
	"umbrella-beach",
	"underline",
	"undo",
	"undo-alt",
	"unicorn",
	"union",
	"universal-access",
	"university",
	"unlink",
	"unlock",
	"unlock-alt",
	"upload",
	"usb-drive",
	"usd-circle",
	"usd-square",
	"user",
	"user-alien",
	"user-alt",
	"user-alt-slash",
	"user-astronaut",
	"user-chart",
	"user-check",
	"user-circle",
	"user-clock",
	"user-cog",
	"user-cowboy",
	"user-crown",
	"user-edit",
	"user-friends",
	"user-graduate",
	"user-hard-hat",
	"user-headset",
	"user-injured",
	"user-lock",
	"user-md",
	"user-md-chat",
	"user-minus",
	"user-music",
	"user-ninja",
	"user-nurse",
	"user-plus",
	"user-robot",
	"user-secret",
	"user-shield",
	"user-slash",
	"user-tag",
	"user-tie",
	"user-times",
	"user-unlock",
	"user-visor",
	"users",
	"users-class",
	"users-cog",
	"users-crown",
	"users-medical",
	"users-slash",
	"utensil-fork",
	"utensil-knife",
	"utensil-spoon",
	"utensils",
	"utensils-alt",
	"vacuum",
	"vacuum-robot",
	"value-absolute",
	"vector-square",
	"venus",
	"venus-double",
	"venus-mars",
	"vest",
	"vest-patches",
	"vhs",
	"vial",
	"vials",
	"video",
	"video-plus",
	"video-slash",
	"vihara",
	"violin",
	"virus",
	"virus-slash",
	"viruses",
	"voicemail",
	"volcano",
	"volleyball-ball",
	"volume",
	"volume-down",
	"volume-mute",
	"volume-off",
	"volume-slash",
	"volume-up",
	"vote-nay",
	"vote-yea",
	"vr-cardboard",
	"wagon-covered",
	"walker",
	"walkie-talkie",
	"walking",
	"wallet",
	"wand",
	"wand-magic",
	"warehouse",
	"warehouse-alt",
	"washer",
	"watch",
	"watch-calculator",
	"watch-fitness",
	"water",
	"water-lower",
	"water-rise",
	"wave-sine",
	"wave-square",
	"wave-triangle",
	"waveform",
	"waveform-path",
	"webcam",
	"webcam-slash",
	"weight",
	"weight-hanging",
	"whale",
	"wheat",
	"wheelchair",
	"whistle",
	"wifi",
	"wifi-1",
	"wifi-2",
	"wifi-slash",
	"wind",
	"wind-turbine",
	"wind-warning",
	"window",
	"window-alt",
	"window-close",
	"window-frame",
	"window-frame-open",
	"window-maximize",
	"window-minimize",
	"window-restore",
	"windsock",
	"wine-bottle",
	"wine-glass",
	"wine-glass-alt",
	"won-sign",
	"wreath",
	"wrench",
	"x-ray",
	"yen-sign",
	"yin-yang"
	]
}
assets/lib/font-awesome-pro/duotone.js000064400000067300150755004310014037 0ustar00{
  "icons": [
	"abacus",
	"acorn",
	"ad",
	"address-book",
	"address-card",
	"adjust",
	"air-conditioner",
	"air-freshener",
	"alarm-clock",
	"alarm-exclamation",
	"alarm-plus",
	"alarm-snooze",
	"album",
	"album-collection",
	"alicorn",
	"alien",
	"alien-monster",
	"align-center",
	"align-justify",
	"align-left",
	"align-right",
	"align-slash",
	"allergies",
	"ambulance",
	"american-sign-language-interpreting",
	"amp-guitar",
	"analytics",
	"anchor",
	"angel",
	"angle-double-down",
	"angle-double-left",
	"angle-double-right",
	"angle-double-up",
	"angle-down",
	"angle-left",
	"angle-right",
	"angle-up",
	"angry",
	"ankh",
	"apple-alt",
	"apple-crate",
	"archive",
	"archway",
	"arrow-alt-circle-down",
	"arrow-alt-circle-left",
	"arrow-alt-circle-right",
	"arrow-alt-circle-up",
	"arrow-alt-down",
	"arrow-alt-from-bottom",
	"arrow-alt-from-left",
	"arrow-alt-from-right",
	"arrow-alt-from-top",
	"arrow-alt-left",
	"arrow-alt-right",
	"arrow-alt-square-down",
	"arrow-alt-square-left",
	"arrow-alt-square-right",
	"arrow-alt-square-up",
	"arrow-alt-to-bottom",
	"arrow-alt-to-left",
	"arrow-alt-to-right",
	"arrow-alt-to-top",
	"arrow-alt-up",
	"arrow-circle-down",
	"arrow-circle-left",
	"arrow-circle-right",
	"arrow-circle-up",
	"arrow-down",
	"arrow-from-bottom",
	"arrow-from-left",
	"arrow-from-right",
	"arrow-from-top",
	"arrow-left",
	"arrow-right",
	"arrow-square-down",
	"arrow-square-left",
	"arrow-square-right",
	"arrow-square-up",
	"arrow-to-bottom",
	"arrow-to-left",
	"arrow-to-right",
	"arrow-to-top",
	"arrow-up",
	"arrows",
	"arrows-alt",
	"arrows-alt-h",
	"arrows-alt-v",
	"arrows-h",
	"arrows-v",
	"assistive-listening-systems",
	"asterisk",
	"at",
	"atlas",
	"atom",
	"atom-alt",
	"audio-description",
	"award",
	"axe",
	"axe-battle",
	"baby",
	"baby-carriage",
	"backpack",
	"backspace",
	"backward",
	"bacon",
	"bacteria",
	"bacterium",
	"badge",
	"badge-check",
	"badge-dollar",
	"badge-percent",
	"badge-sheriff",
	"badger-honey",
	"bags-shopping",
	"bahai",
	"balance-scale",
	"balance-scale-left",
	"balance-scale-right",
	"ball-pile",
	"ballot",
	"ballot-check",
	"ban",
	"band-aid",
	"banjo",
	"barcode",
	"barcode-alt",
	"barcode-read",
	"barcode-scan",
	"bars",
	"baseball",
	"baseball-ball",
	"basketball-ball",
	"basketball-hoop",
	"bat",
	"bath",
	"battery-bolt",
	"battery-empty",
	"battery-full",
	"battery-half",
	"battery-quarter",
	"battery-slash",
	"battery-three-quarters",
	"bed",
	"bed-alt",
	"bed-bunk",
	"bed-empty",
	"beer",
	"bell",
	"bell-exclamation",
	"bell-on",
	"bell-plus",
	"bell-school",
	"bell-school-slash",
	"bell-slash",
	"bells",
	"betamax",
	"bezier-curve",
	"bible",
	"bicycle",
	"biking",
	"biking-mountain",
	"binoculars",
	"biohazard",
	"birthday-cake",
	"blanket",
	"blender",
	"blender-phone",
	"blind",
	"blinds",
	"blinds-open",
	"blinds-raised",
	"blog",
	"bold",
	"bolt",
	"bomb",
	"bone",
	"bone-break",
	"bong",
	"book",
	"book-alt",
	"book-dead",
	"book-heart",
	"book-medical",
	"book-open",
	"book-reader",
	"book-spells",
	"book-user",
	"bookmark",
	"books",
	"books-medical",
	"boombox",
	"boot",
	"booth-curtain",
	"border-all",
	"border-bottom",
	"border-center-h",
	"border-center-v",
	"border-inner",
	"border-left",
	"border-none",
	"border-outer",
	"border-right",
	"border-style",
	"border-style-alt",
	"border-top",
	"bow-arrow",
	"bowling-ball",
	"bowling-pins",
	"box",
	"box-alt",
	"box-ballot",
	"box-check",
	"box-fragile",
	"box-full",
	"box-heart",
	"box-open",
	"box-tissue",
	"box-up",
	"box-usd",
	"boxes",
	"boxes-alt",
	"boxing-glove",
	"brackets",
	"brackets-curly",
	"braille",
	"brain",
	"bread-loaf",
	"bread-slice",
	"briefcase",
	"briefcase-medical",
	"bring-forward",
	"bring-front",
	"broadcast-tower",
	"broom",
	"browser",
	"brush",
	"bug",
	"building",
	"bullhorn",
	"bullseye",
	"bullseye-arrow",
	"bullseye-pointer",
	"burger-soda",
	"burn",
	"burrito",
	"bus",
	"bus-alt",
	"bus-school",
	"business-time",
	"cabinet-filing",
	"cactus",
	"calculator",
	"calculator-alt",
	"calendar",
	"calendar-alt",
	"calendar-check",
	"calendar-day",
	"calendar-edit",
	"calendar-exclamation",
	"calendar-minus",
	"calendar-plus",
	"calendar-star",
	"calendar-times",
	"calendar-week",
	"camcorder",
	"camera",
	"camera-alt",
	"camera-home",
	"camera-movie",
	"camera-polaroid",
	"camera-retro",
	"campfire",
	"campground",
	"candle-holder",
	"candy-cane",
	"candy-corn",
	"cannabis",
	"capsules",
	"car",
	"car-alt",
	"car-battery",
	"car-building",
	"car-bump",
	"car-bus",
	"car-crash",
	"car-garage",
	"car-mechanic",
	"car-side",
	"car-tilt",
	"car-wash",
	"caravan",
	"caravan-alt",
	"caret-circle-down",
	"caret-circle-left",
	"caret-circle-right",
	"caret-circle-up",
	"caret-down",
	"caret-left",
	"caret-right",
	"caret-square-down",
	"caret-square-left",
	"caret-square-right",
	"caret-square-up",
	"caret-up",
	"carrot",
	"cars",
	"cart-arrow-down",
	"cart-plus",
	"cash-register",
	"cassette-tape",
	"cat",
	"cat-space",
	"cauldron",
	"cctv",
	"certificate",
	"chair",
	"chair-office",
	"chalkboard",
	"chalkboard-teacher",
	"charging-station",
	"chart-area",
	"chart-bar",
	"chart-line",
	"chart-line-down",
	"chart-network",
	"chart-pie",
	"chart-pie-alt",
	"chart-scatter",
	"check",
	"check-circle",
	"check-double",
	"check-square",
	"cheese",
	"cheese-swiss",
	"cheeseburger",
	"chess",
	"chess-bishop",
	"chess-bishop-alt",
	"chess-board",
	"chess-clock",
	"chess-clock-alt",
	"chess-king",
	"chess-king-alt",
	"chess-knight",
	"chess-knight-alt",
	"chess-pawn",
	"chess-pawn-alt",
	"chess-queen",
	"chess-queen-alt",
	"chess-rook",
	"chess-rook-alt",
	"chevron-circle-down",
	"chevron-circle-left",
	"chevron-circle-right",
	"chevron-circle-up",
	"chevron-double-down",
	"chevron-double-left",
	"chevron-double-right",
	"chevron-double-up",
	"chevron-down",
	"chevron-left",
	"chevron-right",
	"chevron-square-down",
	"chevron-square-left",
	"chevron-square-right",
	"chevron-square-up",
	"chevron-up",
	"child",
	"chimney",
	"church",
	"circle",
	"circle-notch",
	"city",
	"clarinet",
	"claw-marks",
	"clinic-medical",
	"clipboard",
	"clipboard-check",
	"clipboard-list",
	"clipboard-list-check",
	"clipboard-prescription",
	"clipboard-user",
	"clock",
	"clone",
	"closed-captioning",
	"cloud",
	"cloud-download",
	"cloud-download-alt",
	"cloud-drizzle",
	"cloud-hail",
	"cloud-hail-mixed",
	"cloud-meatball",
	"cloud-moon",
	"cloud-moon-rain",
	"cloud-music",
	"cloud-rain",
	"cloud-rainbow",
	"cloud-showers",
	"cloud-showers-heavy",
	"cloud-sleet",
	"cloud-snow",
	"cloud-sun",
	"cloud-sun-rain",
	"cloud-upload",
	"cloud-upload-alt",
	"clouds",
	"clouds-moon",
	"clouds-sun",
	"club",
	"cocktail",
	"code",
	"code-branch",
	"code-commit",
	"code-merge",
	"coffee",
	"coffee-pot",
	"coffee-togo",
	"coffin",
	"coffin-cross",
	"cog",
	"cogs",
	"coin",
	"coins",
	"columns",
	"comet",
	"comment",
	"comment-alt",
	"comment-alt-check",
	"comment-alt-dollar",
	"comment-alt-dots",
	"comment-alt-edit",
	"comment-alt-exclamation",
	"comment-alt-lines",
	"comment-alt-medical",
	"comment-alt-minus",
	"comment-alt-music",
	"comment-alt-plus",
	"comment-alt-slash",
	"comment-alt-smile",
	"comment-alt-times",
	"comment-check",
	"comment-dollar",
	"comment-dots",
	"comment-edit",
	"comment-exclamation",
	"comment-lines",
	"comment-medical",
	"comment-minus",
	"comment-music",
	"comment-plus",
	"comment-slash",
	"comment-smile",
	"comment-times",
	"comments",
	"comments-alt",
	"comments-alt-dollar",
	"comments-dollar",
	"compact-disc",
	"compass",
	"compass-slash",
	"compress",
	"compress-alt",
	"compress-arrows-alt",
	"compress-wide",
	"computer-classic",
	"computer-speaker",
	"concierge-bell",
	"construction",
	"container-storage",
	"conveyor-belt",
	"conveyor-belt-alt",
	"cookie",
	"cookie-bite",
	"copy",
	"copyright",
	"corn",
	"couch",
	"cow",
	"cowbell",
	"cowbell-more",
	"credit-card",
	"credit-card-blank",
	"credit-card-front",
	"cricket",
	"croissant",
	"crop",
	"crop-alt",
	"cross",
	"crosshairs",
	"crow",
	"crown",
	"crutch",
	"crutches",
	"cube",
	"cubes",
	"curling",
	"cut",
	"dagger",
	"database",
	"deaf",
	"debug",
	"deer",
	"deer-rudolph",
	"democrat",
	"desktop",
	"desktop-alt",
	"dewpoint",
	"dharmachakra",
	"diagnoses",
	"diamond",
	"dice",
	"dice-d10",
	"dice-d12",
	"dice-d20",
	"dice-d4",
	"dice-d6",
	"dice-d8",
	"dice-five",
	"dice-four",
	"dice-one",
	"dice-six",
	"dice-three",
	"dice-two",
	"digging",
	"digital-tachograph",
	"diploma",
	"directions",
	"disc-drive",
	"disease",
	"divide",
	"dizzy",
	"dna",
	"do-not-enter",
	"dog",
	"dog-leashed",
	"dollar-sign",
	"dolly",
	"dolly-empty",
	"dolly-flatbed",
	"dolly-flatbed-alt",
	"dolly-flatbed-empty",
	"donate",
	"door-closed",
	"door-open",
	"dot-circle",
	"dove",
	"download",
	"drafting-compass",
	"dragon",
	"draw-circle",
	"draw-polygon",
	"draw-square",
	"dreidel",
	"drone",
	"drone-alt",
	"drum",
	"drum-steelpan",
	"drumstick",
	"drumstick-bite",
	"dryer",
	"dryer-alt",
	"duck",
	"dumbbell",
	"dumpster",
	"dumpster-fire",
	"dungeon",
	"ear",
	"ear-muffs",
	"eclipse",
	"eclipse-alt",
	"edit",
	"egg",
	"egg-fried",
	"eject",
	"elephant",
	"ellipsis-h",
	"ellipsis-h-alt",
	"ellipsis-v",
	"ellipsis-v-alt",
	"empty-set",
	"engine-warning",
	"envelope",
	"envelope-open",
	"envelope-open-dollar",
	"envelope-open-text",
	"envelope-square",
	"equals",
	"eraser",
	"ethernet",
	"euro-sign",
	"exchange",
	"exchange-alt",
	"exclamation",
	"exclamation-circle",
	"exclamation-square",
	"exclamation-triangle",
	"expand",
	"expand-alt",
	"expand-arrows",
	"expand-arrows-alt",
	"expand-wide",
	"external-link",
	"external-link-alt",
	"external-link-square",
	"external-link-square-alt",
	"eye",
	"eye-dropper",
	"eye-evil",
	"eye-slash",
	"fan",
	"fan-table",
	"farm",
	"fast-backward",
	"fast-forward",
	"faucet",
	"faucet-drip",
	"fax",
	"feather",
	"feather-alt",
	"female",
	"field-hockey",
	"fighter-jet",
	"file",
	"file-alt",
	"file-archive",
	"file-audio",
	"file-certificate",
	"file-chart-line",
	"file-chart-pie",
	"file-check",
	"file-code",
	"file-contract",
	"file-csv",
	"file-download",
	"file-edit",
	"file-excel",
	"file-exclamation",
	"file-export",
	"file-image",
	"file-import",
	"file-invoice",
	"file-invoice-dollar",
	"file-medical",
	"file-medical-alt",
	"file-minus",
	"file-music",
	"file-pdf",
	"file-plus",
	"file-powerpoint",
	"file-prescription",
	"file-search",
	"file-signature",
	"file-spreadsheet",
	"file-times",
	"file-upload",
	"file-user",
	"file-video",
	"file-word",
	"files-medical",
	"fill",
	"fill-drip",
	"film",
	"film-alt",
	"film-canister",
	"filter",
	"fingerprint",
	"fire",
	"fire-alt",
	"fire-extinguisher",
	"fire-smoke",
	"fireplace",
	"first-aid",
	"fish",
	"fish-cooked",
	"fist-raised",
	"flag",
	"flag-alt",
	"flag-checkered",
	"flag-usa",
	"flame",
	"flashlight",
	"flask",
	"flask-poison",
	"flask-potion",
	"flower",
	"flower-daffodil",
	"flower-tulip",
	"flushed",
	"flute",
	"flux-capacitor",
	"fog",
	"folder",
	"folder-download",
	"folder-minus",
	"folder-open",
	"folder-plus",
	"folder-times",
	"folder-tree",
	"folder-upload",
	"folders",
	"font",
	"font-awesome-logo-full",
	"font-case",
	"football-ball",
	"football-helmet",
	"forklift",
	"forward",
	"fragile",
	"french-fries",
	"frog",
	"frosty-head",
	"frown",
	"frown-open",
	"function",
	"funnel-dollar",
	"futbol",
	"galaxy",
	"game-board",
	"game-board-alt",
	"game-console-handheld",
	"gamepad",
	"gamepad-alt",
	"garage",
	"garage-car",
	"garage-open",
	"gas-pump",
	"gas-pump-slash",
	"gavel",
	"gem",
	"genderless",
	"ghost",
	"gift",
	"gift-card",
	"gifts",
	"gingerbread-man",
	"glass",
	"glass-champagne",
	"glass-cheers",
	"glass-citrus",
	"glass-martini",
	"glass-martini-alt",
	"glass-whiskey",
	"glass-whiskey-rocks",
	"glasses",
	"glasses-alt",
	"globe",
	"globe-africa",
	"globe-americas",
	"globe-asia",
	"globe-europe",
	"globe-snow",
	"globe-stand",
	"golf-ball",
	"golf-club",
	"gopuram",
	"graduation-cap",
	"gramophone",
	"greater-than",
	"greater-than-equal",
	"grimace",
	"grin",
	"grin-alt",
	"grin-beam",
	"grin-beam-sweat",
	"grin-hearts",
	"grin-squint",
	"grin-squint-tears",
	"grin-stars",
	"grin-tears",
	"grin-tongue",
	"grin-tongue-squint",
	"grin-tongue-wink",
	"grin-wink",
	"grip-horizontal",
	"grip-lines",
	"grip-lines-vertical",
	"grip-vertical",
	"guitar",
	"guitar-electric",
	"guitars",
	"h-square",
	"h1",
	"h2",
	"h3",
	"h4",
	"hamburger",
	"hammer",
	"hammer-war",
	"hamsa",
	"hand-heart",
	"hand-holding",
	"hand-holding-box",
	"hand-holding-heart",
	"hand-holding-magic",
	"hand-holding-medical",
	"hand-holding-seedling",
	"hand-holding-usd",
	"hand-holding-water",
	"hand-lizard",
	"hand-middle-finger",
	"hand-paper",
	"hand-peace",
	"hand-point-down",
	"hand-point-left",
	"hand-point-right",
	"hand-point-up",
	"hand-pointer",
	"hand-receiving",
	"hand-rock",
	"hand-scissors",
	"hand-sparkles",
	"hand-spock",
	"hands",
	"hands-heart",
	"hands-helping",
	"hands-usd",
	"hands-wash",
	"handshake",
	"handshake-alt",
	"handshake-alt-slash",
	"handshake-slash",
	"hanukiah",
	"hard-hat",
	"hashtag",
	"hat-chef",
	"hat-cowboy",
	"hat-cowboy-side",
	"hat-santa",
	"hat-winter",
	"hat-witch",
	"hat-wizard",
	"hdd",
	"head-side",
	"head-side-brain",
	"head-side-cough",
	"head-side-cough-slash",
	"head-side-headphones",
	"head-side-mask",
	"head-side-medical",
	"head-side-virus",
	"head-vr",
	"heading",
	"headphones",
	"headphones-alt",
	"headset",
	"heart",
	"heart-broken",
	"heart-circle",
	"heart-rate",
	"heart-square",
	"heartbeat",
	"heat",
	"helicopter",
	"helmet-battle",
	"hexagon",
	"highlighter",
	"hiking",
	"hippo",
	"history",
	"hockey-mask",
	"hockey-puck",
	"hockey-sticks",
	"holly-berry",
	"home",
	"home-alt",
	"home-heart",
	"home-lg",
	"home-lg-alt",
	"hood-cloak",
	"horizontal-rule",
	"horse",
	"horse-head",
	"horse-saddle",
	"hospital",
	"hospital-alt",
	"hospital-symbol",
	"hospital-user",
	"hospitals",
	"hot-tub",
	"hotdog",
	"hotel",
	"hourglass",
	"hourglass-end",
	"hourglass-half",
	"hourglass-start",
	"house",
	"house-damage",
	"house-day",
	"house-flood",
	"house-leave",
	"house-night",
	"house-return",
	"house-signal",
	"house-user",
	"hryvnia",
	"humidity",
	"hurricane",
	"i-cursor",
	"ice-cream",
	"ice-skate",
	"icicles",
	"icons",
	"icons-alt",
	"id-badge",
	"id-card",
	"id-card-alt",
	"igloo",
	"image",
	"image-polaroid",
	"images",
	"inbox",
	"inbox-in",
	"inbox-out",
	"indent",
	"industry",
	"industry-alt",
	"infinity",
	"info",
	"info-circle",
	"info-square",
	"inhaler",
	"integral",
	"intersection",
	"inventory",
	"island-tropical",
	"italic",
	"jack-o-lantern",
	"jedi",
	"joint",
	"journal-whills",
	"joystick",
	"jug",
	"kaaba",
	"kazoo",
	"kerning",
	"key",
	"key-skeleton",
	"keyboard",
	"keynote",
	"khanda",
	"kidneys",
	"kiss",
	"kiss-beam",
	"kiss-wink-heart",
	"kite",
	"kiwi-bird",
	"knife-kitchen",
	"lambda",
	"lamp",
	"lamp-desk",
	"lamp-floor",
	"landmark",
	"landmark-alt",
	"language",
	"laptop",
	"laptop-code",
	"laptop-house",
	"laptop-medical",
	"lasso",
	"laugh",
	"laugh-beam",
	"laugh-squint",
	"laugh-wink",
	"layer-group",
	"layer-minus",
	"layer-plus",
	"leaf",
	"leaf-heart",
	"leaf-maple",
	"leaf-oak",
	"lemon",
	"less-than",
	"less-than-equal",
	"level-down",
	"level-down-alt",
	"level-up",
	"level-up-alt",
	"life-ring",
	"light-ceiling",
	"light-switch",
	"light-switch-off",
	"light-switch-on",
	"lightbulb",
	"lightbulb-dollar",
	"lightbulb-exclamation",
	"lightbulb-on",
	"lightbulb-slash",
	"lights-holiday",
	"line-columns",
	"line-height",
	"link",
	"lips",
	"lira-sign",
	"list",
	"list-alt",
	"list-music",
	"list-ol",
	"list-ul",
	"location",
	"location-arrow",
	"location-circle",
	"location-slash",
	"lock",
	"lock-alt",
	"lock-open",
	"lock-open-alt",
	"long-arrow-alt-down",
	"long-arrow-alt-left",
	"long-arrow-alt-right",
	"long-arrow-alt-up",
	"long-arrow-down",
	"long-arrow-left",
	"long-arrow-right",
	"long-arrow-up",
	"loveseat",
	"low-vision",
	"luchador",
	"luggage-cart",
	"lungs",
	"lungs-virus",
	"mace",
	"magic",
	"magnet",
	"mail-bulk",
	"mailbox",
	"male",
	"mandolin",
	"map",
	"map-marked",
	"map-marked-alt",
	"map-marker",
	"map-marker-alt",
	"map-marker-alt-slash",
	"map-marker-check",
	"map-marker-edit",
	"map-marker-exclamation",
	"map-marker-minus",
	"map-marker-plus",
	"map-marker-question",
	"map-marker-slash",
	"map-marker-smile",
	"map-marker-times",
	"map-pin",
	"map-signs",
	"marker",
	"mars",
	"mars-double",
	"mars-stroke",
	"mars-stroke-h",
	"mars-stroke-v",
	"mask",
	"meat",
	"medal",
	"medkit",
	"megaphone",
	"meh",
	"meh-blank",
	"meh-rolling-eyes",
	"memory",
	"menorah",
	"mercury",
	"meteor",
	"microchip",
	"microphone",
	"microphone-alt",
	"microphone-alt-slash",
	"microphone-slash",
	"microphone-stand",
	"microscope",
	"microwave",
	"mind-share",
	"minus",
	"minus-circle",
	"minus-hexagon",
	"minus-octagon",
	"minus-square",
	"mistletoe",
	"mitten",
	"mobile",
	"mobile-alt",
	"mobile-android",
	"mobile-android-alt",
	"money-bill",
	"money-bill-alt",
	"money-bill-wave",
	"money-bill-wave-alt",
	"money-check",
	"money-check-alt",
	"money-check-edit",
	"money-check-edit-alt",
	"monitor-heart-rate",
	"monkey",
	"monument",
	"moon",
	"moon-cloud",
	"moon-stars",
	"mortar-pestle",
	"mosque",
	"motorcycle",
	"mountain",
	"mountains",
	"mouse",
	"mouse-alt",
	"mouse-pointer",
	"mp3-player",
	"mug",
	"mug-hot",
	"mug-marshmallows",
	"mug-tea",
	"music",
	"music-alt",
	"music-alt-slash",
	"music-slash",
	"narwhal",
	"network-wired",
	"neuter",
	"newspaper",
	"not-equal",
	"notes-medical",
	"object-group",
	"object-ungroup",
	"octagon",
	"oil-can",
	"oil-temp",
	"om",
	"omega",
	"ornament",
	"otter",
	"outdent",
	"outlet",
	"oven",
	"overline",
	"page-break",
	"pager",
	"paint-brush",
	"paint-brush-alt",
	"paint-roller",
	"palette",
	"pallet",
	"pallet-alt",
	"paper-plane",
	"paperclip",
	"parachute-box",
	"paragraph",
	"paragraph-rtl",
	"parking",
	"parking-circle",
	"parking-circle-slash",
	"parking-slash",
	"passport",
	"pastafarianism",
	"paste",
	"pause",
	"pause-circle",
	"paw",
	"paw-alt",
	"paw-claws",
	"peace",
	"pegasus",
	"pen",
	"pen-alt",
	"pen-fancy",
	"pen-nib",
	"pen-square",
	"pencil",
	"pencil-alt",
	"pencil-paintbrush",
	"pencil-ruler",
	"pennant",
	"people-arrows",
	"people-carry",
	"pepper-hot",
	"percent",
	"percentage",
	"person-booth",
	"person-carry",
	"person-dolly",
	"person-dolly-empty",
	"person-sign",
	"phone",
	"phone-alt",
	"phone-laptop",
	"phone-office",
	"phone-plus",
	"phone-rotary",
	"phone-slash",
	"phone-square",
	"phone-square-alt",
	"phone-volume",
	"photo-video",
	"pi",
	"piano",
	"piano-keyboard",
	"pie",
	"pig",
	"piggy-bank",
	"pills",
	"pizza",
	"pizza-slice",
	"place-of-worship",
	"plane",
	"plane-alt",
	"plane-arrival",
	"plane-departure",
	"plane-slash",
	"planet-moon",
	"planet-ringed",
	"play",
	"play-circle",
	"plug",
	"plus",
	"plus-circle",
	"plus-hexagon",
	"plus-octagon",
	"plus-square",
	"podcast",
	"podium",
	"podium-star",
	"police-box",
	"poll",
	"poll-h",
	"poll-people",
	"poo",
	"poo-storm",
	"poop",
	"popcorn",
	"portal-enter",
	"portal-exit",
	"portrait",
	"pound-sign",
	"power-off",
	"pray",
	"praying-hands",
	"prescription",
	"prescription-bottle",
	"prescription-bottle-alt",
	"presentation",
	"print",
	"print-search",
	"print-slash",
	"procedures",
	"project-diagram",
	"projector",
	"pump-medical",
	"pump-soap",
	"pumpkin",
	"puzzle-piece",
	"qrcode",
	"question",
	"question-circle",
	"question-square",
	"quidditch",
	"quote-left",
	"quote-right",
	"quran",
	"rabbit",
	"rabbit-fast",
	"racquet",
	"radar",
	"radiation",
	"radiation-alt",
	"radio",
	"radio-alt",
	"rainbow",
	"raindrops",
	"ram",
	"ramp-loading",
	"random",
	"raygun",
	"receipt",
	"record-vinyl",
	"rectangle-landscape",
	"rectangle-portrait",
	"rectangle-wide",
	"recycle",
	"redo",
	"redo-alt",
	"refrigerator",
	"registered",
	"remove-format",
	"repeat",
	"repeat-1",
	"repeat-1-alt",
	"repeat-alt",
	"reply",
	"reply-all",
	"republican",
	"restroom",
	"retweet",
	"retweet-alt",
	"ribbon",
	"ring",
	"rings-wedding",
	"road",
	"robot",
	"rocket",
	"rocket-launch",
	"route",
	"route-highway",
	"route-interstate",
	"router",
	"rss",
	"rss-square",
	"ruble-sign",
	"ruler",
	"ruler-combined",
	"ruler-horizontal",
	"ruler-triangle",
	"ruler-vertical",
	"running",
	"rupee-sign",
	"rv",
	"sack",
	"sack-dollar",
	"sad-cry",
	"sad-tear",
	"salad",
	"sandwich",
	"satellite",
	"satellite-dish",
	"sausage",
	"save",
	"sax-hot",
	"saxophone",
	"scalpel",
	"scalpel-path",
	"scanner",
	"scanner-image",
	"scanner-keyboard",
	"scanner-touchscreen",
	"scarecrow",
	"scarf",
	"school",
	"screwdriver",
	"scroll",
	"scroll-old",
	"scrubber",
	"scythe",
	"sd-card",
	"search",
	"search-dollar",
	"search-location",
	"search-minus",
	"search-plus",
	"seedling",
	"send-back",
	"send-backward",
	"sensor",
	"sensor-alert",
	"sensor-fire",
	"sensor-on",
	"sensor-smoke",
	"server",
	"shapes",
	"share",
	"share-all",
	"share-alt",
	"share-alt-square",
	"share-square",
	"sheep",
	"shekel-sign",
	"shield",
	"shield-alt",
	"shield-check",
	"shield-cross",
	"shield-virus",
	"ship",
	"shipping-fast",
	"shipping-timed",
	"shish-kebab",
	"shoe-prints",
	"shopping-bag",
	"shopping-basket",
	"shopping-cart",
	"shovel",
	"shovel-snow",
	"shower",
	"shredder",
	"shuttle-van",
	"shuttlecock",
	"sickle",
	"sigma",
	"sign",
	"sign-in",
	"sign-in-alt",
	"sign-language",
	"sign-out",
	"sign-out-alt",
	"signal",
	"signal-1",
	"signal-2",
	"signal-3",
	"signal-4",
	"signal-alt",
	"signal-alt-1",
	"signal-alt-2",
	"signal-alt-3",
	"signal-alt-slash",
	"signal-slash",
	"signal-stream",
	"signature",
	"sim-card",
	"sink",
	"siren",
	"siren-on",
	"sitemap",
	"skating",
	"skeleton",
	"ski-jump",
	"ski-lift",
	"skiing",
	"skiing-nordic",
	"skull",
	"skull-cow",
	"skull-crossbones",
	"slash",
	"sledding",
	"sleigh",
	"sliders-h",
	"sliders-h-square",
	"sliders-v",
	"sliders-v-square",
	"smile",
	"smile-beam",
	"smile-plus",
	"smile-wink",
	"smog",
	"smoke",
	"smoking",
	"smoking-ban",
	"sms",
	"snake",
	"snooze",
	"snow-blowing",
	"snowboarding",
	"snowflake",
	"snowflakes",
	"snowman",
	"snowmobile",
	"snowplow",
	"soap",
	"socks",
	"solar-panel",
	"solar-system",
	"sort",
	"sort-alpha-down",
	"sort-alpha-down-alt",
	"sort-alpha-up",
	"sort-alpha-up-alt",
	"sort-alt",
	"sort-amount-down",
	"sort-amount-down-alt",
	"sort-amount-up",
	"sort-amount-up-alt",
	"sort-circle",
	"sort-circle-down",
	"sort-circle-up",
	"sort-down",
	"sort-numeric-down",
	"sort-numeric-down-alt",
	"sort-numeric-up",
	"sort-numeric-up-alt",
	"sort-shapes-down",
	"sort-shapes-down-alt",
	"sort-shapes-up",
	"sort-shapes-up-alt",
	"sort-size-down",
	"sort-size-down-alt",
	"sort-size-up",
	"sort-size-up-alt",
	"sort-up",
	"soup",
	"spa",
	"space-shuttle",
	"space-station-moon",
	"space-station-moon-alt",
	"spade",
	"sparkles",
	"speaker",
	"speakers",
	"spell-check",
	"spider",
	"spider-black-widow",
	"spider-web",
	"spinner",
	"spinner-third",
	"splotch",
	"spray-can",
	"sprinkler",
	"square",
	"square-full",
	"square-root",
	"square-root-alt",
	"squirrel",
	"staff",
	"stamp",
	"star",
	"star-and-crescent",
	"star-christmas",
	"star-exclamation",
	"star-half",
	"star-half-alt",
	"star-of-david",
	"star-of-life",
	"star-shooting",
	"starfighter",
	"starfighter-alt",
	"stars",
	"starship",
	"starship-freighter",
	"steak",
	"steering-wheel",
	"step-backward",
	"step-forward",
	"stethoscope",
	"sticky-note",
	"stocking",
	"stomach",
	"stop",
	"stop-circle",
	"stopwatch",
	"stopwatch-20",
	"store",
	"store-alt",
	"store-alt-slash",
	"store-slash",
	"stream",
	"street-view",
	"stretcher",
	"strikethrough",
	"stroopwafel",
	"subscript",
	"subway",
	"suitcase",
	"suitcase-rolling",
	"sun",
	"sun-cloud",
	"sun-dust",
	"sun-haze",
	"sunglasses",
	"sunrise",
	"sunset",
	"superscript",
	"surprise",
	"swatchbook",
	"swimmer",
	"swimming-pool",
	"sword",
	"sword-laser",
	"sword-laser-alt",
	"swords",
	"swords-laser",
	"synagogue",
	"sync",
	"sync-alt",
	"syringe",
	"table",
	"table-tennis",
	"tablet",
	"tablet-alt",
	"tablet-android",
	"tablet-android-alt",
	"tablet-rugged",
	"tablets",
	"tachometer",
	"tachometer-alt",
	"tachometer-alt-average",
	"tachometer-alt-fast",
	"tachometer-alt-fastest",
	"tachometer-alt-slow",
	"tachometer-alt-slowest",
	"tachometer-average",
	"tachometer-fast",
	"tachometer-fastest",
	"tachometer-slow",
	"tachometer-slowest",
	"taco",
	"tag",
	"tags",
	"tally",
	"tanakh",
	"tape",
	"tasks",
	"tasks-alt",
	"taxi",
	"teeth",
	"teeth-open",
	"telescope",
	"temperature-down",
	"temperature-frigid",
	"temperature-high",
	"temperature-hot",
	"temperature-low",
	"temperature-up",
	"tenge",
	"tennis-ball",
	"terminal",
	"text",
	"text-height",
	"text-size",
	"text-width",
	"th",
	"th-large",
	"th-list",
	"theater-masks",
	"thermometer",
	"thermometer-empty",
	"thermometer-full",
	"thermometer-half",
	"thermometer-quarter",
	"thermometer-three-quarters",
	"theta",
	"thumbs-down",
	"thumbs-up",
	"thumbtack",
	"thunderstorm",
	"thunderstorm-moon",
	"thunderstorm-sun",
	"ticket",
	"ticket-alt",
	"tilde",
	"times",
	"times-circle",
	"times-hexagon",
	"times-octagon",
	"times-square",
	"tint",
	"tint-slash",
	"tire",
	"tire-flat",
	"tire-pressure-warning",
	"tire-rugged",
	"tired",
	"toggle-off",
	"toggle-on",
	"toilet",
	"toilet-paper",
	"toilet-paper-alt",
	"toilet-paper-slash",
	"tombstone",
	"tombstone-alt",
	"toolbox",
	"tools",
	"tooth",
	"toothbrush",
	"torah",
	"torii-gate",
	"tornado",
	"tractor",
	"trademark",
	"traffic-cone",
	"traffic-light",
	"traffic-light-go",
	"traffic-light-slow",
	"traffic-light-stop",
	"trailer",
	"train",
	"tram",
	"transgender",
	"transgender-alt",
	"transporter",
	"transporter-1",
	"transporter-2",
	"transporter-3",
	"transporter-empty",
	"trash",
	"trash-alt",
	"trash-restore",
	"trash-restore-alt",
	"trash-undo",
	"trash-undo-alt",
	"treasure-chest",
	"tree",
	"tree-alt",
	"tree-christmas",
	"tree-decorated",
	"tree-large",
	"tree-palm",
	"trees",
	"triangle",
	"triangle-music",
	"trophy",
	"trophy-alt",
	"truck",
	"truck-container",
	"truck-couch",
	"truck-loading",
	"truck-monster",
	"truck-moving",
	"truck-pickup",
	"truck-plow",
	"truck-ramp",
	"trumpet",
	"tshirt",
	"tty",
	"turkey",
	"turntable",
	"turtle",
	"tv",
	"tv-alt",
	"tv-music",
	"tv-retro",
	"typewriter",
	"ufo",
	"ufo-beam",
	"umbrella",
	"umbrella-beach",
	"underline",
	"undo",
	"undo-alt",
	"unicorn",
	"union",
	"universal-access",
	"university",
	"unlink",
	"unlock",
	"unlock-alt",
	"upload",
	"usb-drive",
	"usd-circle",
	"usd-square",
	"user",
	"user-alien",
	"user-alt",
	"user-alt-slash",
	"user-astronaut",
	"user-chart",
	"user-check",
	"user-circle",
	"user-clock",
	"user-cog",
	"user-cowboy",
	"user-crown",
	"user-edit",
	"user-friends",
	"user-graduate",
	"user-hard-hat",
	"user-headset",
	"user-injured",
	"user-lock",
	"user-md",
	"user-md-chat",
	"user-minus",
	"user-music",
	"user-ninja",
	"user-nurse",
	"user-plus",
	"user-robot",
	"user-secret",
	"user-shield",
	"user-slash",
	"user-tag",
	"user-tie",
	"user-times",
	"user-unlock",
	"user-visor",
	"users",
	"users-class",
	"users-cog",
	"users-crown",
	"users-medical",
	"users-slash",
	"utensil-fork",
	"utensil-knife",
	"utensil-spoon",
	"utensils",
	"utensils-alt",
	"vacuum",
	"vacuum-robot",
	"value-absolute",
	"vector-square",
	"venus",
	"venus-double",
	"venus-mars",
	"vest",
	"vest-patches",
	"vhs",
	"vial",
	"vials",
	"video",
	"video-plus",
	"video-slash",
	"vihara",
	"violin",
	"virus",
	"virus-slash",
	"viruses",
	"voicemail",
	"volcano",
	"volleyball-ball",
	"volume",
	"volume-down",
	"volume-mute",
	"volume-off",
	"volume-slash",
	"volume-up",
	"vote-nay",
	"vote-yea",
	"vr-cardboard",
	"wagon-covered",
	"walker",
	"walkie-talkie",
	"walking",
	"wallet",
	"wand",
	"wand-magic",
	"warehouse",
	"warehouse-alt",
	"washer",
	"watch",
	"watch-calculator",
	"watch-fitness",
	"water",
	"water-lower",
	"water-rise",
	"wave-sine",
	"wave-square",
	"wave-triangle",
	"waveform",
	"waveform-path",
	"webcam",
	"webcam-slash",
	"weight",
	"weight-hanging",
	"whale",
	"wheat",
	"wheelchair",
	"whistle",
	"wifi",
	"wifi-1",
	"wifi-2",
	"wifi-slash",
	"wind",
	"wind-turbine",
	"wind-warning",
	"window",
	"window-alt",
	"window-close",
	"window-frame",
	"window-frame-open",
	"window-maximize",
	"window-minimize",
	"window-restore",
	"windsock",
	"wine-bottle",
	"wine-glass",
	"wine-glass-alt",
	"won-sign",
	"wreath",
	"wrench",
	"x-ray",
	"yen-sign",
	"yin-yang"
	]
}
assets/lib/font-awesome-pro/light.js000064400000067300150755004310013471 0ustar00{
  "icons": [
	"abacus",
	"acorn",
	"ad",
	"address-book",
	"address-card",
	"adjust",
	"air-conditioner",
	"air-freshener",
	"alarm-clock",
	"alarm-exclamation",
	"alarm-plus",
	"alarm-snooze",
	"album",
	"album-collection",
	"alicorn",
	"alien",
	"alien-monster",
	"align-center",
	"align-justify",
	"align-left",
	"align-right",
	"align-slash",
	"allergies",
	"ambulance",
	"american-sign-language-interpreting",
	"amp-guitar",
	"analytics",
	"anchor",
	"angel",
	"angle-double-down",
	"angle-double-left",
	"angle-double-right",
	"angle-double-up",
	"angle-down",
	"angle-left",
	"angle-right",
	"angle-up",
	"angry",
	"ankh",
	"apple-alt",
	"apple-crate",
	"archive",
	"archway",
	"arrow-alt-circle-down",
	"arrow-alt-circle-left",
	"arrow-alt-circle-right",
	"arrow-alt-circle-up",
	"arrow-alt-down",
	"arrow-alt-from-bottom",
	"arrow-alt-from-left",
	"arrow-alt-from-right",
	"arrow-alt-from-top",
	"arrow-alt-left",
	"arrow-alt-right",
	"arrow-alt-square-down",
	"arrow-alt-square-left",
	"arrow-alt-square-right",
	"arrow-alt-square-up",
	"arrow-alt-to-bottom",
	"arrow-alt-to-left",
	"arrow-alt-to-right",
	"arrow-alt-to-top",
	"arrow-alt-up",
	"arrow-circle-down",
	"arrow-circle-left",
	"arrow-circle-right",
	"arrow-circle-up",
	"arrow-down",
	"arrow-from-bottom",
	"arrow-from-left",
	"arrow-from-right",
	"arrow-from-top",
	"arrow-left",
	"arrow-right",
	"arrow-square-down",
	"arrow-square-left",
	"arrow-square-right",
	"arrow-square-up",
	"arrow-to-bottom",
	"arrow-to-left",
	"arrow-to-right",
	"arrow-to-top",
	"arrow-up",
	"arrows",
	"arrows-alt",
	"arrows-alt-h",
	"arrows-alt-v",
	"arrows-h",
	"arrows-v",
	"assistive-listening-systems",
	"asterisk",
	"at",
	"atlas",
	"atom",
	"atom-alt",
	"audio-description",
	"award",
	"axe",
	"axe-battle",
	"baby",
	"baby-carriage",
	"backpack",
	"backspace",
	"backward",
	"bacon",
	"bacteria",
	"bacterium",
	"badge",
	"badge-check",
	"badge-dollar",
	"badge-percent",
	"badge-sheriff",
	"badger-honey",
	"bags-shopping",
	"bahai",
	"balance-scale",
	"balance-scale-left",
	"balance-scale-right",
	"ball-pile",
	"ballot",
	"ballot-check",
	"ban",
	"band-aid",
	"banjo",
	"barcode",
	"barcode-alt",
	"barcode-read",
	"barcode-scan",
	"bars",
	"baseball",
	"baseball-ball",
	"basketball-ball",
	"basketball-hoop",
	"bat",
	"bath",
	"battery-bolt",
	"battery-empty",
	"battery-full",
	"battery-half",
	"battery-quarter",
	"battery-slash",
	"battery-three-quarters",
	"bed",
	"bed-alt",
	"bed-bunk",
	"bed-empty",
	"beer",
	"bell",
	"bell-exclamation",
	"bell-on",
	"bell-plus",
	"bell-school",
	"bell-school-slash",
	"bell-slash",
	"bells",
	"betamax",
	"bezier-curve",
	"bible",
	"bicycle",
	"biking",
	"biking-mountain",
	"binoculars",
	"biohazard",
	"birthday-cake",
	"blanket",
	"blender",
	"blender-phone",
	"blind",
	"blinds",
	"blinds-open",
	"blinds-raised",
	"blog",
	"bold",
	"bolt",
	"bomb",
	"bone",
	"bone-break",
	"bong",
	"book",
	"book-alt",
	"book-dead",
	"book-heart",
	"book-medical",
	"book-open",
	"book-reader",
	"book-spells",
	"book-user",
	"bookmark",
	"books",
	"books-medical",
	"boombox",
	"boot",
	"booth-curtain",
	"border-all",
	"border-bottom",
	"border-center-h",
	"border-center-v",
	"border-inner",
	"border-left",
	"border-none",
	"border-outer",
	"border-right",
	"border-style",
	"border-style-alt",
	"border-top",
	"bow-arrow",
	"bowling-ball",
	"bowling-pins",
	"box",
	"box-alt",
	"box-ballot",
	"box-check",
	"box-fragile",
	"box-full",
	"box-heart",
	"box-open",
	"box-tissue",
	"box-up",
	"box-usd",
	"boxes",
	"boxes-alt",
	"boxing-glove",
	"brackets",
	"brackets-curly",
	"braille",
	"brain",
	"bread-loaf",
	"bread-slice",
	"briefcase",
	"briefcase-medical",
	"bring-forward",
	"bring-front",
	"broadcast-tower",
	"broom",
	"browser",
	"brush",
	"bug",
	"building",
	"bullhorn",
	"bullseye",
	"bullseye-arrow",
	"bullseye-pointer",
	"burger-soda",
	"burn",
	"burrito",
	"bus",
	"bus-alt",
	"bus-school",
	"business-time",
	"cabinet-filing",
	"cactus",
	"calculator",
	"calculator-alt",
	"calendar",
	"calendar-alt",
	"calendar-check",
	"calendar-day",
	"calendar-edit",
	"calendar-exclamation",
	"calendar-minus",
	"calendar-plus",
	"calendar-star",
	"calendar-times",
	"calendar-week",
	"camcorder",
	"camera",
	"camera-alt",
	"camera-home",
	"camera-movie",
	"camera-polaroid",
	"camera-retro",
	"campfire",
	"campground",
	"candle-holder",
	"candy-cane",
	"candy-corn",
	"cannabis",
	"capsules",
	"car",
	"car-alt",
	"car-battery",
	"car-building",
	"car-bump",
	"car-bus",
	"car-crash",
	"car-garage",
	"car-mechanic",
	"car-side",
	"car-tilt",
	"car-wash",
	"caravan",
	"caravan-alt",
	"caret-circle-down",
	"caret-circle-left",
	"caret-circle-right",
	"caret-circle-up",
	"caret-down",
	"caret-left",
	"caret-right",
	"caret-square-down",
	"caret-square-left",
	"caret-square-right",
	"caret-square-up",
	"caret-up",
	"carrot",
	"cars",
	"cart-arrow-down",
	"cart-plus",
	"cash-register",
	"cassette-tape",
	"cat",
	"cat-space",
	"cauldron",
	"cctv",
	"certificate",
	"chair",
	"chair-office",
	"chalkboard",
	"chalkboard-teacher",
	"charging-station",
	"chart-area",
	"chart-bar",
	"chart-line",
	"chart-line-down",
	"chart-network",
	"chart-pie",
	"chart-pie-alt",
	"chart-scatter",
	"check",
	"check-circle",
	"check-double",
	"check-square",
	"cheese",
	"cheese-swiss",
	"cheeseburger",
	"chess",
	"chess-bishop",
	"chess-bishop-alt",
	"chess-board",
	"chess-clock",
	"chess-clock-alt",
	"chess-king",
	"chess-king-alt",
	"chess-knight",
	"chess-knight-alt",
	"chess-pawn",
	"chess-pawn-alt",
	"chess-queen",
	"chess-queen-alt",
	"chess-rook",
	"chess-rook-alt",
	"chevron-circle-down",
	"chevron-circle-left",
	"chevron-circle-right",
	"chevron-circle-up",
	"chevron-double-down",
	"chevron-double-left",
	"chevron-double-right",
	"chevron-double-up",
	"chevron-down",
	"chevron-left",
	"chevron-right",
	"chevron-square-down",
	"chevron-square-left",
	"chevron-square-right",
	"chevron-square-up",
	"chevron-up",
	"child",
	"chimney",
	"church",
	"circle",
	"circle-notch",
	"city",
	"clarinet",
	"claw-marks",
	"clinic-medical",
	"clipboard",
	"clipboard-check",
	"clipboard-list",
	"clipboard-list-check",
	"clipboard-prescription",
	"clipboard-user",
	"clock",
	"clone",
	"closed-captioning",
	"cloud",
	"cloud-download",
	"cloud-download-alt",
	"cloud-drizzle",
	"cloud-hail",
	"cloud-hail-mixed",
	"cloud-meatball",
	"cloud-moon",
	"cloud-moon-rain",
	"cloud-music",
	"cloud-rain",
	"cloud-rainbow",
	"cloud-showers",
	"cloud-showers-heavy",
	"cloud-sleet",
	"cloud-snow",
	"cloud-sun",
	"cloud-sun-rain",
	"cloud-upload",
	"cloud-upload-alt",
	"clouds",
	"clouds-moon",
	"clouds-sun",
	"club",
	"cocktail",
	"code",
	"code-branch",
	"code-commit",
	"code-merge",
	"coffee",
	"coffee-pot",
	"coffee-togo",
	"coffin",
	"coffin-cross",
	"cog",
	"cogs",
	"coin",
	"coins",
	"columns",
	"comet",
	"comment",
	"comment-alt",
	"comment-alt-check",
	"comment-alt-dollar",
	"comment-alt-dots",
	"comment-alt-edit",
	"comment-alt-exclamation",
	"comment-alt-lines",
	"comment-alt-medical",
	"comment-alt-minus",
	"comment-alt-music",
	"comment-alt-plus",
	"comment-alt-slash",
	"comment-alt-smile",
	"comment-alt-times",
	"comment-check",
	"comment-dollar",
	"comment-dots",
	"comment-edit",
	"comment-exclamation",
	"comment-lines",
	"comment-medical",
	"comment-minus",
	"comment-music",
	"comment-plus",
	"comment-slash",
	"comment-smile",
	"comment-times",
	"comments",
	"comments-alt",
	"comments-alt-dollar",
	"comments-dollar",
	"compact-disc",
	"compass",
	"compass-slash",
	"compress",
	"compress-alt",
	"compress-arrows-alt",
	"compress-wide",
	"computer-classic",
	"computer-speaker",
	"concierge-bell",
	"construction",
	"container-storage",
	"conveyor-belt",
	"conveyor-belt-alt",
	"cookie",
	"cookie-bite",
	"copy",
	"copyright",
	"corn",
	"couch",
	"cow",
	"cowbell",
	"cowbell-more",
	"credit-card",
	"credit-card-blank",
	"credit-card-front",
	"cricket",
	"croissant",
	"crop",
	"crop-alt",
	"cross",
	"crosshairs",
	"crow",
	"crown",
	"crutch",
	"crutches",
	"cube",
	"cubes",
	"curling",
	"cut",
	"dagger",
	"database",
	"deaf",
	"debug",
	"deer",
	"deer-rudolph",
	"democrat",
	"desktop",
	"desktop-alt",
	"dewpoint",
	"dharmachakra",
	"diagnoses",
	"diamond",
	"dice",
	"dice-d10",
	"dice-d12",
	"dice-d20",
	"dice-d4",
	"dice-d6",
	"dice-d8",
	"dice-five",
	"dice-four",
	"dice-one",
	"dice-six",
	"dice-three",
	"dice-two",
	"digging",
	"digital-tachograph",
	"diploma",
	"directions",
	"disc-drive",
	"disease",
	"divide",
	"dizzy",
	"dna",
	"do-not-enter",
	"dog",
	"dog-leashed",
	"dollar-sign",
	"dolly",
	"dolly-empty",
	"dolly-flatbed",
	"dolly-flatbed-alt",
	"dolly-flatbed-empty",
	"donate",
	"door-closed",
	"door-open",
	"dot-circle",
	"dove",
	"download",
	"drafting-compass",
	"dragon",
	"draw-circle",
	"draw-polygon",
	"draw-square",
	"dreidel",
	"drone",
	"drone-alt",
	"drum",
	"drum-steelpan",
	"drumstick",
	"drumstick-bite",
	"dryer",
	"dryer-alt",
	"duck",
	"dumbbell",
	"dumpster",
	"dumpster-fire",
	"dungeon",
	"ear",
	"ear-muffs",
	"eclipse",
	"eclipse-alt",
	"edit",
	"egg",
	"egg-fried",
	"eject",
	"elephant",
	"ellipsis-h",
	"ellipsis-h-alt",
	"ellipsis-v",
	"ellipsis-v-alt",
	"empty-set",
	"engine-warning",
	"envelope",
	"envelope-open",
	"envelope-open-dollar",
	"envelope-open-text",
	"envelope-square",
	"equals",
	"eraser",
	"ethernet",
	"euro-sign",
	"exchange",
	"exchange-alt",
	"exclamation",
	"exclamation-circle",
	"exclamation-square",
	"exclamation-triangle",
	"expand",
	"expand-alt",
	"expand-arrows",
	"expand-arrows-alt",
	"expand-wide",
	"external-link",
	"external-link-alt",
	"external-link-square",
	"external-link-square-alt",
	"eye",
	"eye-dropper",
	"eye-evil",
	"eye-slash",
	"fan",
	"fan-table",
	"farm",
	"fast-backward",
	"fast-forward",
	"faucet",
	"faucet-drip",
	"fax",
	"feather",
	"feather-alt",
	"female",
	"field-hockey",
	"fighter-jet",
	"file",
	"file-alt",
	"file-archive",
	"file-audio",
	"file-certificate",
	"file-chart-line",
	"file-chart-pie",
	"file-check",
	"file-code",
	"file-contract",
	"file-csv",
	"file-download",
	"file-edit",
	"file-excel",
	"file-exclamation",
	"file-export",
	"file-image",
	"file-import",
	"file-invoice",
	"file-invoice-dollar",
	"file-medical",
	"file-medical-alt",
	"file-minus",
	"file-music",
	"file-pdf",
	"file-plus",
	"file-powerpoint",
	"file-prescription",
	"file-search",
	"file-signature",
	"file-spreadsheet",
	"file-times",
	"file-upload",
	"file-user",
	"file-video",
	"file-word",
	"files-medical",
	"fill",
	"fill-drip",
	"film",
	"film-alt",
	"film-canister",
	"filter",
	"fingerprint",
	"fire",
	"fire-alt",
	"fire-extinguisher",
	"fire-smoke",
	"fireplace",
	"first-aid",
	"fish",
	"fish-cooked",
	"fist-raised",
	"flag",
	"flag-alt",
	"flag-checkered",
	"flag-usa",
	"flame",
	"flashlight",
	"flask",
	"flask-poison",
	"flask-potion",
	"flower",
	"flower-daffodil",
	"flower-tulip",
	"flushed",
	"flute",
	"flux-capacitor",
	"fog",
	"folder",
	"folder-download",
	"folder-minus",
	"folder-open",
	"folder-plus",
	"folder-times",
	"folder-tree",
	"folder-upload",
	"folders",
	"font",
	"font-awesome-logo-full",
	"font-case",
	"football-ball",
	"football-helmet",
	"forklift",
	"forward",
	"fragile",
	"french-fries",
	"frog",
	"frosty-head",
	"frown",
	"frown-open",
	"function",
	"funnel-dollar",
	"futbol",
	"galaxy",
	"game-board",
	"game-board-alt",
	"game-console-handheld",
	"gamepad",
	"gamepad-alt",
	"garage",
	"garage-car",
	"garage-open",
	"gas-pump",
	"gas-pump-slash",
	"gavel",
	"gem",
	"genderless",
	"ghost",
	"gift",
	"gift-card",
	"gifts",
	"gingerbread-man",
	"glass",
	"glass-champagne",
	"glass-cheers",
	"glass-citrus",
	"glass-martini",
	"glass-martini-alt",
	"glass-whiskey",
	"glass-whiskey-rocks",
	"glasses",
	"glasses-alt",
	"globe",
	"globe-africa",
	"globe-americas",
	"globe-asia",
	"globe-europe",
	"globe-snow",
	"globe-stand",
	"golf-ball",
	"golf-club",
	"gopuram",
	"graduation-cap",
	"gramophone",
	"greater-than",
	"greater-than-equal",
	"grimace",
	"grin",
	"grin-alt",
	"grin-beam",
	"grin-beam-sweat",
	"grin-hearts",
	"grin-squint",
	"grin-squint-tears",
	"grin-stars",
	"grin-tears",
	"grin-tongue",
	"grin-tongue-squint",
	"grin-tongue-wink",
	"grin-wink",
	"grip-horizontal",
	"grip-lines",
	"grip-lines-vertical",
	"grip-vertical",
	"guitar",
	"guitar-electric",
	"guitars",
	"h-square",
	"h1",
	"h2",
	"h3",
	"h4",
	"hamburger",
	"hammer",
	"hammer-war",
	"hamsa",
	"hand-heart",
	"hand-holding",
	"hand-holding-box",
	"hand-holding-heart",
	"hand-holding-magic",
	"hand-holding-medical",
	"hand-holding-seedling",
	"hand-holding-usd",
	"hand-holding-water",
	"hand-lizard",
	"hand-middle-finger",
	"hand-paper",
	"hand-peace",
	"hand-point-down",
	"hand-point-left",
	"hand-point-right",
	"hand-point-up",
	"hand-pointer",
	"hand-receiving",
	"hand-rock",
	"hand-scissors",
	"hand-sparkles",
	"hand-spock",
	"hands",
	"hands-heart",
	"hands-helping",
	"hands-usd",
	"hands-wash",
	"handshake",
	"handshake-alt",
	"handshake-alt-slash",
	"handshake-slash",
	"hanukiah",
	"hard-hat",
	"hashtag",
	"hat-chef",
	"hat-cowboy",
	"hat-cowboy-side",
	"hat-santa",
	"hat-winter",
	"hat-witch",
	"hat-wizard",
	"hdd",
	"head-side",
	"head-side-brain",
	"head-side-cough",
	"head-side-cough-slash",
	"head-side-headphones",
	"head-side-mask",
	"head-side-medical",
	"head-side-virus",
	"head-vr",
	"heading",
	"headphones",
	"headphones-alt",
	"headset",
	"heart",
	"heart-broken",
	"heart-circle",
	"heart-rate",
	"heart-square",
	"heartbeat",
	"heat",
	"helicopter",
	"helmet-battle",
	"hexagon",
	"highlighter",
	"hiking",
	"hippo",
	"history",
	"hockey-mask",
	"hockey-puck",
	"hockey-sticks",
	"holly-berry",
	"home",
	"home-alt",
	"home-heart",
	"home-lg",
	"home-lg-alt",
	"hood-cloak",
	"horizontal-rule",
	"horse",
	"horse-head",
	"horse-saddle",
	"hospital",
	"hospital-alt",
	"hospital-symbol",
	"hospital-user",
	"hospitals",
	"hot-tub",
	"hotdog",
	"hotel",
	"hourglass",
	"hourglass-end",
	"hourglass-half",
	"hourglass-start",
	"house",
	"house-damage",
	"house-day",
	"house-flood",
	"house-leave",
	"house-night",
	"house-return",
	"house-signal",
	"house-user",
	"hryvnia",
	"humidity",
	"hurricane",
	"i-cursor",
	"ice-cream",
	"ice-skate",
	"icicles",
	"icons",
	"icons-alt",
	"id-badge",
	"id-card",
	"id-card-alt",
	"igloo",
	"image",
	"image-polaroid",
	"images",
	"inbox",
	"inbox-in",
	"inbox-out",
	"indent",
	"industry",
	"industry-alt",
	"infinity",
	"info",
	"info-circle",
	"info-square",
	"inhaler",
	"integral",
	"intersection",
	"inventory",
	"island-tropical",
	"italic",
	"jack-o-lantern",
	"jedi",
	"joint",
	"journal-whills",
	"joystick",
	"jug",
	"kaaba",
	"kazoo",
	"kerning",
	"key",
	"key-skeleton",
	"keyboard",
	"keynote",
	"khanda",
	"kidneys",
	"kiss",
	"kiss-beam",
	"kiss-wink-heart",
	"kite",
	"kiwi-bird",
	"knife-kitchen",
	"lambda",
	"lamp",
	"lamp-desk",
	"lamp-floor",
	"landmark",
	"landmark-alt",
	"language",
	"laptop",
	"laptop-code",
	"laptop-house",
	"laptop-medical",
	"lasso",
	"laugh",
	"laugh-beam",
	"laugh-squint",
	"laugh-wink",
	"layer-group",
	"layer-minus",
	"layer-plus",
	"leaf",
	"leaf-heart",
	"leaf-maple",
	"leaf-oak",
	"lemon",
	"less-than",
	"less-than-equal",
	"level-down",
	"level-down-alt",
	"level-up",
	"level-up-alt",
	"life-ring",
	"light-ceiling",
	"light-switch",
	"light-switch-off",
	"light-switch-on",
	"lightbulb",
	"lightbulb-dollar",
	"lightbulb-exclamation",
	"lightbulb-on",
	"lightbulb-slash",
	"lights-holiday",
	"line-columns",
	"line-height",
	"link",
	"lips",
	"lira-sign",
	"list",
	"list-alt",
	"list-music",
	"list-ol",
	"list-ul",
	"location",
	"location-arrow",
	"location-circle",
	"location-slash",
	"lock",
	"lock-alt",
	"lock-open",
	"lock-open-alt",
	"long-arrow-alt-down",
	"long-arrow-alt-left",
	"long-arrow-alt-right",
	"long-arrow-alt-up",
	"long-arrow-down",
	"long-arrow-left",
	"long-arrow-right",
	"long-arrow-up",
	"loveseat",
	"low-vision",
	"luchador",
	"luggage-cart",
	"lungs",
	"lungs-virus",
	"mace",
	"magic",
	"magnet",
	"mail-bulk",
	"mailbox",
	"male",
	"mandolin",
	"map",
	"map-marked",
	"map-marked-alt",
	"map-marker",
	"map-marker-alt",
	"map-marker-alt-slash",
	"map-marker-check",
	"map-marker-edit",
	"map-marker-exclamation",
	"map-marker-minus",
	"map-marker-plus",
	"map-marker-question",
	"map-marker-slash",
	"map-marker-smile",
	"map-marker-times",
	"map-pin",
	"map-signs",
	"marker",
	"mars",
	"mars-double",
	"mars-stroke",
	"mars-stroke-h",
	"mars-stroke-v",
	"mask",
	"meat",
	"medal",
	"medkit",
	"megaphone",
	"meh",
	"meh-blank",
	"meh-rolling-eyes",
	"memory",
	"menorah",
	"mercury",
	"meteor",
	"microchip",
	"microphone",
	"microphone-alt",
	"microphone-alt-slash",
	"microphone-slash",
	"microphone-stand",
	"microscope",
	"microwave",
	"mind-share",
	"minus",
	"minus-circle",
	"minus-hexagon",
	"minus-octagon",
	"minus-square",
	"mistletoe",
	"mitten",
	"mobile",
	"mobile-alt",
	"mobile-android",
	"mobile-android-alt",
	"money-bill",
	"money-bill-alt",
	"money-bill-wave",
	"money-bill-wave-alt",
	"money-check",
	"money-check-alt",
	"money-check-edit",
	"money-check-edit-alt",
	"monitor-heart-rate",
	"monkey",
	"monument",
	"moon",
	"moon-cloud",
	"moon-stars",
	"mortar-pestle",
	"mosque",
	"motorcycle",
	"mountain",
	"mountains",
	"mouse",
	"mouse-alt",
	"mouse-pointer",
	"mp3-player",
	"mug",
	"mug-hot",
	"mug-marshmallows",
	"mug-tea",
	"music",
	"music-alt",
	"music-alt-slash",
	"music-slash",
	"narwhal",
	"network-wired",
	"neuter",
	"newspaper",
	"not-equal",
	"notes-medical",
	"object-group",
	"object-ungroup",
	"octagon",
	"oil-can",
	"oil-temp",
	"om",
	"omega",
	"ornament",
	"otter",
	"outdent",
	"outlet",
	"oven",
	"overline",
	"page-break",
	"pager",
	"paint-brush",
	"paint-brush-alt",
	"paint-roller",
	"palette",
	"pallet",
	"pallet-alt",
	"paper-plane",
	"paperclip",
	"parachute-box",
	"paragraph",
	"paragraph-rtl",
	"parking",
	"parking-circle",
	"parking-circle-slash",
	"parking-slash",
	"passport",
	"pastafarianism",
	"paste",
	"pause",
	"pause-circle",
	"paw",
	"paw-alt",
	"paw-claws",
	"peace",
	"pegasus",
	"pen",
	"pen-alt",
	"pen-fancy",
	"pen-nib",
	"pen-square",
	"pencil",
	"pencil-alt",
	"pencil-paintbrush",
	"pencil-ruler",
	"pennant",
	"people-arrows",
	"people-carry",
	"pepper-hot",
	"percent",
	"percentage",
	"person-booth",
	"person-carry",
	"person-dolly",
	"person-dolly-empty",
	"person-sign",
	"phone",
	"phone-alt",
	"phone-laptop",
	"phone-office",
	"phone-plus",
	"phone-rotary",
	"phone-slash",
	"phone-square",
	"phone-square-alt",
	"phone-volume",
	"photo-video",
	"pi",
	"piano",
	"piano-keyboard",
	"pie",
	"pig",
	"piggy-bank",
	"pills",
	"pizza",
	"pizza-slice",
	"place-of-worship",
	"plane",
	"plane-alt",
	"plane-arrival",
	"plane-departure",
	"plane-slash",
	"planet-moon",
	"planet-ringed",
	"play",
	"play-circle",
	"plug",
	"plus",
	"plus-circle",
	"plus-hexagon",
	"plus-octagon",
	"plus-square",
	"podcast",
	"podium",
	"podium-star",
	"police-box",
	"poll",
	"poll-h",
	"poll-people",
	"poo",
	"poo-storm",
	"poop",
	"popcorn",
	"portal-enter",
	"portal-exit",
	"portrait",
	"pound-sign",
	"power-off",
	"pray",
	"praying-hands",
	"prescription",
	"prescription-bottle",
	"prescription-bottle-alt",
	"presentation",
	"print",
	"print-search",
	"print-slash",
	"procedures",
	"project-diagram",
	"projector",
	"pump-medical",
	"pump-soap",
	"pumpkin",
	"puzzle-piece",
	"qrcode",
	"question",
	"question-circle",
	"question-square",
	"quidditch",
	"quote-left",
	"quote-right",
	"quran",
	"rabbit",
	"rabbit-fast",
	"racquet",
	"radar",
	"radiation",
	"radiation-alt",
	"radio",
	"radio-alt",
	"rainbow",
	"raindrops",
	"ram",
	"ramp-loading",
	"random",
	"raygun",
	"receipt",
	"record-vinyl",
	"rectangle-landscape",
	"rectangle-portrait",
	"rectangle-wide",
	"recycle",
	"redo",
	"redo-alt",
	"refrigerator",
	"registered",
	"remove-format",
	"repeat",
	"repeat-1",
	"repeat-1-alt",
	"repeat-alt",
	"reply",
	"reply-all",
	"republican",
	"restroom",
	"retweet",
	"retweet-alt",
	"ribbon",
	"ring",
	"rings-wedding",
	"road",
	"robot",
	"rocket",
	"rocket-launch",
	"route",
	"route-highway",
	"route-interstate",
	"router",
	"rss",
	"rss-square",
	"ruble-sign",
	"ruler",
	"ruler-combined",
	"ruler-horizontal",
	"ruler-triangle",
	"ruler-vertical",
	"running",
	"rupee-sign",
	"rv",
	"sack",
	"sack-dollar",
	"sad-cry",
	"sad-tear",
	"salad",
	"sandwich",
	"satellite",
	"satellite-dish",
	"sausage",
	"save",
	"sax-hot",
	"saxophone",
	"scalpel",
	"scalpel-path",
	"scanner",
	"scanner-image",
	"scanner-keyboard",
	"scanner-touchscreen",
	"scarecrow",
	"scarf",
	"school",
	"screwdriver",
	"scroll",
	"scroll-old",
	"scrubber",
	"scythe",
	"sd-card",
	"search",
	"search-dollar",
	"search-location",
	"search-minus",
	"search-plus",
	"seedling",
	"send-back",
	"send-backward",
	"sensor",
	"sensor-alert",
	"sensor-fire",
	"sensor-on",
	"sensor-smoke",
	"server",
	"shapes",
	"share",
	"share-all",
	"share-alt",
	"share-alt-square",
	"share-square",
	"sheep",
	"shekel-sign",
	"shield",
	"shield-alt",
	"shield-check",
	"shield-cross",
	"shield-virus",
	"ship",
	"shipping-fast",
	"shipping-timed",
	"shish-kebab",
	"shoe-prints",
	"shopping-bag",
	"shopping-basket",
	"shopping-cart",
	"shovel",
	"shovel-snow",
	"shower",
	"shredder",
	"shuttle-van",
	"shuttlecock",
	"sickle",
	"sigma",
	"sign",
	"sign-in",
	"sign-in-alt",
	"sign-language",
	"sign-out",
	"sign-out-alt",
	"signal",
	"signal-1",
	"signal-2",
	"signal-3",
	"signal-4",
	"signal-alt",
	"signal-alt-1",
	"signal-alt-2",
	"signal-alt-3",
	"signal-alt-slash",
	"signal-slash",
	"signal-stream",
	"signature",
	"sim-card",
	"sink",
	"siren",
	"siren-on",
	"sitemap",
	"skating",
	"skeleton",
	"ski-jump",
	"ski-lift",
	"skiing",
	"skiing-nordic",
	"skull",
	"skull-cow",
	"skull-crossbones",
	"slash",
	"sledding",
	"sleigh",
	"sliders-h",
	"sliders-h-square",
	"sliders-v",
	"sliders-v-square",
	"smile",
	"smile-beam",
	"smile-plus",
	"smile-wink",
	"smog",
	"smoke",
	"smoking",
	"smoking-ban",
	"sms",
	"snake",
	"snooze",
	"snow-blowing",
	"snowboarding",
	"snowflake",
	"snowflakes",
	"snowman",
	"snowmobile",
	"snowplow",
	"soap",
	"socks",
	"solar-panel",
	"solar-system",
	"sort",
	"sort-alpha-down",
	"sort-alpha-down-alt",
	"sort-alpha-up",
	"sort-alpha-up-alt",
	"sort-alt",
	"sort-amount-down",
	"sort-amount-down-alt",
	"sort-amount-up",
	"sort-amount-up-alt",
	"sort-circle",
	"sort-circle-down",
	"sort-circle-up",
	"sort-down",
	"sort-numeric-down",
	"sort-numeric-down-alt",
	"sort-numeric-up",
	"sort-numeric-up-alt",
	"sort-shapes-down",
	"sort-shapes-down-alt",
	"sort-shapes-up",
	"sort-shapes-up-alt",
	"sort-size-down",
	"sort-size-down-alt",
	"sort-size-up",
	"sort-size-up-alt",
	"sort-up",
	"soup",
	"spa",
	"space-shuttle",
	"space-station-moon",
	"space-station-moon-alt",
	"spade",
	"sparkles",
	"speaker",
	"speakers",
	"spell-check",
	"spider",
	"spider-black-widow",
	"spider-web",
	"spinner",
	"spinner-third",
	"splotch",
	"spray-can",
	"sprinkler",
	"square",
	"square-full",
	"square-root",
	"square-root-alt",
	"squirrel",
	"staff",
	"stamp",
	"star",
	"star-and-crescent",
	"star-christmas",
	"star-exclamation",
	"star-half",
	"star-half-alt",
	"star-of-david",
	"star-of-life",
	"star-shooting",
	"starfighter",
	"starfighter-alt",
	"stars",
	"starship",
	"starship-freighter",
	"steak",
	"steering-wheel",
	"step-backward",
	"step-forward",
	"stethoscope",
	"sticky-note",
	"stocking",
	"stomach",
	"stop",
	"stop-circle",
	"stopwatch",
	"stopwatch-20",
	"store",
	"store-alt",
	"store-alt-slash",
	"store-slash",
	"stream",
	"street-view",
	"stretcher",
	"strikethrough",
	"stroopwafel",
	"subscript",
	"subway",
	"suitcase",
	"suitcase-rolling",
	"sun",
	"sun-cloud",
	"sun-dust",
	"sun-haze",
	"sunglasses",
	"sunrise",
	"sunset",
	"superscript",
	"surprise",
	"swatchbook",
	"swimmer",
	"swimming-pool",
	"sword",
	"sword-laser",
	"sword-laser-alt",
	"swords",
	"swords-laser",
	"synagogue",
	"sync",
	"sync-alt",
	"syringe",
	"table",
	"table-tennis",
	"tablet",
	"tablet-alt",
	"tablet-android",
	"tablet-android-alt",
	"tablet-rugged",
	"tablets",
	"tachometer",
	"tachometer-alt",
	"tachometer-alt-average",
	"tachometer-alt-fast",
	"tachometer-alt-fastest",
	"tachometer-alt-slow",
	"tachometer-alt-slowest",
	"tachometer-average",
	"tachometer-fast",
	"tachometer-fastest",
	"tachometer-slow",
	"tachometer-slowest",
	"taco",
	"tag",
	"tags",
	"tally",
	"tanakh",
	"tape",
	"tasks",
	"tasks-alt",
	"taxi",
	"teeth",
	"teeth-open",
	"telescope",
	"temperature-down",
	"temperature-frigid",
	"temperature-high",
	"temperature-hot",
	"temperature-low",
	"temperature-up",
	"tenge",
	"tennis-ball",
	"terminal",
	"text",
	"text-height",
	"text-size",
	"text-width",
	"th",
	"th-large",
	"th-list",
	"theater-masks",
	"thermometer",
	"thermometer-empty",
	"thermometer-full",
	"thermometer-half",
	"thermometer-quarter",
	"thermometer-three-quarters",
	"theta",
	"thumbs-down",
	"thumbs-up",
	"thumbtack",
	"thunderstorm",
	"thunderstorm-moon",
	"thunderstorm-sun",
	"ticket",
	"ticket-alt",
	"tilde",
	"times",
	"times-circle",
	"times-hexagon",
	"times-octagon",
	"times-square",
	"tint",
	"tint-slash",
	"tire",
	"tire-flat",
	"tire-pressure-warning",
	"tire-rugged",
	"tired",
	"toggle-off",
	"toggle-on",
	"toilet",
	"toilet-paper",
	"toilet-paper-alt",
	"toilet-paper-slash",
	"tombstone",
	"tombstone-alt",
	"toolbox",
	"tools",
	"tooth",
	"toothbrush",
	"torah",
	"torii-gate",
	"tornado",
	"tractor",
	"trademark",
	"traffic-cone",
	"traffic-light",
	"traffic-light-go",
	"traffic-light-slow",
	"traffic-light-stop",
	"trailer",
	"train",
	"tram",
	"transgender",
	"transgender-alt",
	"transporter",
	"transporter-1",
	"transporter-2",
	"transporter-3",
	"transporter-empty",
	"trash",
	"trash-alt",
	"trash-restore",
	"trash-restore-alt",
	"trash-undo",
	"trash-undo-alt",
	"treasure-chest",
	"tree",
	"tree-alt",
	"tree-christmas",
	"tree-decorated",
	"tree-large",
	"tree-palm",
	"trees",
	"triangle",
	"triangle-music",
	"trophy",
	"trophy-alt",
	"truck",
	"truck-container",
	"truck-couch",
	"truck-loading",
	"truck-monster",
	"truck-moving",
	"truck-pickup",
	"truck-plow",
	"truck-ramp",
	"trumpet",
	"tshirt",
	"tty",
	"turkey",
	"turntable",
	"turtle",
	"tv",
	"tv-alt",
	"tv-music",
	"tv-retro",
	"typewriter",
	"ufo",
	"ufo-beam",
	"umbrella",
	"umbrella-beach",
	"underline",
	"undo",
	"undo-alt",
	"unicorn",
	"union",
	"universal-access",
	"university",
	"unlink",
	"unlock",
	"unlock-alt",
	"upload",
	"usb-drive",
	"usd-circle",
	"usd-square",
	"user",
	"user-alien",
	"user-alt",
	"user-alt-slash",
	"user-astronaut",
	"user-chart",
	"user-check",
	"user-circle",
	"user-clock",
	"user-cog",
	"user-cowboy",
	"user-crown",
	"user-edit",
	"user-friends",
	"user-graduate",
	"user-hard-hat",
	"user-headset",
	"user-injured",
	"user-lock",
	"user-md",
	"user-md-chat",
	"user-minus",
	"user-music",
	"user-ninja",
	"user-nurse",
	"user-plus",
	"user-robot",
	"user-secret",
	"user-shield",
	"user-slash",
	"user-tag",
	"user-tie",
	"user-times",
	"user-unlock",
	"user-visor",
	"users",
	"users-class",
	"users-cog",
	"users-crown",
	"users-medical",
	"users-slash",
	"utensil-fork",
	"utensil-knife",
	"utensil-spoon",
	"utensils",
	"utensils-alt",
	"vacuum",
	"vacuum-robot",
	"value-absolute",
	"vector-square",
	"venus",
	"venus-double",
	"venus-mars",
	"vest",
	"vest-patches",
	"vhs",
	"vial",
	"vials",
	"video",
	"video-plus",
	"video-slash",
	"vihara",
	"violin",
	"virus",
	"virus-slash",
	"viruses",
	"voicemail",
	"volcano",
	"volleyball-ball",
	"volume",
	"volume-down",
	"volume-mute",
	"volume-off",
	"volume-slash",
	"volume-up",
	"vote-nay",
	"vote-yea",
	"vr-cardboard",
	"wagon-covered",
	"walker",
	"walkie-talkie",
	"walking",
	"wallet",
	"wand",
	"wand-magic",
	"warehouse",
	"warehouse-alt",
	"washer",
	"watch",
	"watch-calculator",
	"watch-fitness",
	"water",
	"water-lower",
	"water-rise",
	"wave-sine",
	"wave-square",
	"wave-triangle",
	"waveform",
	"waveform-path",
	"webcam",
	"webcam-slash",
	"weight",
	"weight-hanging",
	"whale",
	"wheat",
	"wheelchair",
	"whistle",
	"wifi",
	"wifi-1",
	"wifi-2",
	"wifi-slash",
	"wind",
	"wind-turbine",
	"wind-warning",
	"window",
	"window-alt",
	"window-close",
	"window-frame",
	"window-frame-open",
	"window-maximize",
	"window-minimize",
	"window-restore",
	"windsock",
	"wine-bottle",
	"wine-glass",
	"wine-glass-alt",
	"won-sign",
	"wreath",
	"wrench",
	"x-ray",
	"yen-sign",
	"yin-yang"
	]
}
assets/lib/font-awesome-pro/brands.js000064400000014430150755004310013627 0ustar00{
  "icons": [
	"500px",
	"accessible-icon",
	"accusoft",
	"acquisitions-incorporated",
	"adn",
	"adobe",
	"adversal",
	"affiliatetheme",
	"airbnb",
	"algolia",
	"alipay",
	"amazon",
	"amazon-pay",
	"amilia",
	"android",
	"angellist",
	"angrycreative",
	"angular",
	"app-store",
	"app-store-ios",
	"apper",
	"apple",
	"apple-pay",
	"artstation",
	"asymmetrik",
	"atlassian",
	"audible",
	"autoprefixer",
	"avianex",
	"aviato",
	"aws",
	"bandcamp",
	"battle-net",
	"behance",
	"behance-square",
	"bimobject",
	"bitbucket",
	"bitcoin",
	"bity",
	"black-tie",
	"blackberry",
	"blogger",
	"blogger-b",
	"bluetooth",
	"bluetooth-b",
	"bootstrap",
	"btc",
	"buffer",
	"buromobelexperte",
	"buy-n-large",
	"buysellads",
	"canadian-maple-leaf",
	"cc-amazon-pay",
	"cc-amex",
	"cc-apple-pay",
	"cc-diners-club",
	"cc-discover",
	"cc-jcb",
	"cc-mastercard",
	"cc-paypal",
	"cc-stripe",
	"cc-visa",
	"centercode",
	"centos",
	"chrome",
	"chromecast",
	"cloudflare",
	"cloudscale",
	"cloudsmith",
	"cloudversify",
	"codepen",
	"codiepie",
	"confluence",
	"connectdevelop",
	"contao",
	"cotton-bureau",
	"cpanel",
	"creative-commons",
	"creative-commons-by",
	"creative-commons-nc",
	"creative-commons-nc-eu",
	"creative-commons-nc-jp",
	"creative-commons-nd",
	"creative-commons-pd",
	"creative-commons-pd-alt",
	"creative-commons-remix",
	"creative-commons-sa",
	"creative-commons-sampling",
	"creative-commons-sampling-plus",
	"creative-commons-share",
	"creative-commons-zero",
	"critical-role",
	"css3",
	"css3-alt",
	"cuttlefish",
	"d-and-d",
	"d-and-d-beyond",
	"dailymotion",
	"dashcube",
	"deezer",
	"delicious",
	"deploydog",
	"deskpro",
	"dev",
	"deviantart",
	"dhl",
	"diaspora",
	"digg",
	"digital-ocean",
	"discord",
	"discourse",
	"dochub",
	"docker",
	"draft2digital",
	"dribbble",
	"dribbble-square",
	"dropbox",
	"drupal",
	"dyalog",
	"earlybirds",
	"ebay",
	"edge",
	"edge-legacy",
	"elementor",
	"ello",
	"ember",
	"empire",
	"envira",
	"erlang",
	"ethereum",
	"etsy",
	"evernote",
	"expeditedssl",
	"facebook",
	"facebook-f",
	"facebook-messenger",
	"facebook-square",
	"fantasy-flight-games",
	"fedex",
	"fedora",
	"figma",
	"firefox",
	"firefox-browser",
	"first-order",
	"first-order-alt",
	"firstdraft",
	"flickr",
	"flipboard",
	"fly",
	"font-awesome",
	"font-awesome-alt",
	"font-awesome-flag",
	"font-awesome-logo-full",
	"fonticons",
	"fonticons-fi",
	"fort-awesome",
	"fort-awesome-alt",
	"forumbee",
	"foursquare",
	"free-code-camp",
	"freebsd",
	"fulcrum",
	"galactic-republic",
	"galactic-senate",
	"get-pocket",
	"gg",
	"gg-circle",
	"git",
	"git-alt",
	"git-square",
	"github",
	"github-alt",
	"github-square",
	"gitkraken",
	"gitlab",
	"gitter",
	"glide",
	"glide-g",
	"gofore",
	"goodreads",
	"goodreads-g",
	"google",
	"google-drive",
	"google-pay",
	"google-play",
	"google-plus",
	"google-plus-g",
	"google-plus-square",
	"google-wallet",
	"gratipay",
	"grav",
	"gripfire",
	"grunt",
	"guilded",
	"gulp",
	"hacker-news",
	"hacker-news-square",
	"hackerrank",
	"hips",
	"hire-a-helper",
	"hive",
	"hooli",
	"hornbill",
	"hotjar",
	"houzz",
	"html5",
	"hubspot",
	"ideal",
	"imdb",
	"innosoft",
	"instagram",
	"instagram-square",
	"instalod",
	"intercom",
	"internet-explorer",
	"invision",
	"ioxhost",
	"itch-io",
	"itunes",
	"itunes-note",
	"java",
	"jedi-order",
	"jenkins",
	"jira",
	"joget",
	"joomla",
	"js",
	"js-square",
	"jsfiddle",
	"kaggle",
	"keybase",
	"keycdn",
	"kickstarter",
	"kickstarter-k",
	"korvue",
	"laravel",
	"lastfm",
	"lastfm-square",
	"leanpub",
	"less",
	"line",
	"linkedin",
	"linkedin-in",
	"linode",
	"linux",
	"lyft",
	"magento",
	"mailchimp",
	"mandalorian",
	"markdown",
	"mastodon",
	"maxcdn",
	"mdb",
	"medapps",
	"medium",
	"medium-m",
	"medrt",
	"meetup",
	"megaport",
	"mendeley",
	"microblog",
	"microsoft",
	"mix",
	"mixcloud",
	"mixer",
	"mizuni",
	"modx",
	"monero",
	"napster",
	"neos",
	"nimblr",
	"node",
	"node-js",
	"npm",
	"ns8",
	"nutritionix",
	"octopus-deploy",
	"odnoklassniki",
	"odnoklassniki-square",
	"old-republic",
	"opencart",
	"openid",
	"opera",
	"optin-monster",
	"orcid",
	"osi",
	"page4",
	"pagelines",
	"palfed",
	"patreon",
	"paypal",
	"penny-arcade",
	"perbyte",
	"periscope",
	"phabricator",
	"phoenix-framework",
	"phoenix-squadron",
	"php",
	"pied-piper",
	"pied-piper-alt",
	"pied-piper-hat",
	"pied-piper-pp",
	"pied-piper-square",
	"pinterest",
	"pinterest-p",
	"pinterest-square",
	"playstation",
	"product-hunt",
	"pushed",
	"python",
	"qq",
	"quinscape",
	"quora",
	"r-project",
	"raspberry-pi",
	"ravelry",
	"react",
	"reacteurope",
	"readme",
	"rebel",
	"red-river",
	"reddit",
	"reddit-alien",
	"reddit-square",
	"redhat",
	"renren",
	"replyd",
	"researchgate",
	"resolving",
	"rev",
	"rocketchat",
	"rockrms",
	"rust",
	"safari",
	"salesforce",
	"sass",
	"schlix",
	"scribd",
	"searchengin",
	"sellcast",
	"sellsy",
	"servicestack",
	"shirtsinbulk",
	"shopify",
	"shopware",
	"simplybuilt",
	"sistrix",
	"sith",
	"sketch",
	"skyatlas",
	"skype",
	"slack",
	"slack-hash",
	"slideshare",
	"snapchat",
	"snapchat-ghost",
	"snapchat-square",
	"soundcloud",
	"sourcetree",
	"speakap",
	"speaker-deck",
	"spotify",
	"squarespace",
	"stack-exchange",
	"stack-overflow",
	"stackpath",
	"staylinked",
	"steam",
	"steam-square",
	"steam-symbol",
	"sticker-mule",
	"strava",
	"stripe",
	"stripe-s",
	"studiovinari",
	"stumbleupon",
	"stumbleupon-circle",
	"superpowers",
	"supple",
	"suse",
	"swift",
	"symfony",
	"teamspeak",
	"telegram",
	"telegram-plane",
	"tencent-weibo",
	"the-red-yeti",
	"themeco",
	"themeisle",
	"think-peaks",
	"tiktok",
	"trade-federation",
	"trello",
	"tripadvisor",
	"tumblr",
	"tumblr-square",
	"twitch",
	"twitter",
	"twitter-square",
	"typo3",
	"uber",
	"ubuntu",
	"uikit",
	"umbraco",
	"uncharted",
	"uniregistry",
	"unity",
	"unsplash",
	"untappd",
	"ups",
	"usb",
	"usps",
	"ussunnah",
	"vaadin",
	"viacoin",
	"viadeo",
	"viadeo-square",
	"viber",
	"vimeo",
	"vimeo-square",
	"vimeo-v",
	"vine",
	"vk",
	"vnv",
	"vuejs",
	"watchman-monitoring",
	"waze",
	"weebly",
	"weibo",
	"weixin",
	"whatsapp",
	"whatsapp-square",
	"whmcs",
	"wikipedia-w",
	"windows",
	"wix",
	"wizards-of-the-coast",
	"wodu",
	"wolf-pack-battalion",
	"wordpress",
	"wordpress-simple",
	"wpbeginner",
	"wpexplorer",
	"wpforms",
	"wpressr",
	"xbox",
	"xing",
	"xing-square",
	"y-combinator",
	"yahoo",
	"yammer",
	"yandex",
	"yandex-international",
	"yarn",
	"yelp",
	"yoast",
	"youtube",
	"youtube-square",
	"zhihu"
	]
}
assets/lib/html2canvas/js/html2canvas.min.js000064400000501775150755004310015033 0ustar00/*!
 * html2canvas 1.0.0-rc.5 <https://html2canvas.hertzen.com>
 * Copyright (c) 2020 Niklas von Hertzen <https://hertzen.com>
 * Released under MIT License
 */
!function(A,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(A=A||self).html2canvas=e()}(this,function(){"use strict";
	/*! *****************************************************************************
		Copyright (c) Microsoft Corporation. All rights reserved.
		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

		THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
		KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
		WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
		MERCHANTABLITY OR NON-INFRINGEMENT.

		See the Apache Version 2.0 License for specific language governing permissions
		and limitations under the License.
		***************************************************************************** */var r=function(A,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(A,e){A.__proto__=e}||function(A,e){for(var t in e)e.hasOwnProperty(t)&&(A[t]=e[t])})(A,e)};function A(A,e){function t(){this.constructor=A}r(A,e),A.prototype=null===e?Object.create(e):(t.prototype=e.prototype,new t)}var K=function(){return(K=Object.assign||function(A){for(var e,t=1,r=arguments.length;t<r;t++)for(var n in e=arguments[t])Object.prototype.hasOwnProperty.call(e,n)&&(A[n]=e[n]);return A}).apply(this,arguments)};function a(B,s,o,i){return new(o||(o=Promise))(function(A,e){function t(A){try{n(i.next(A))}catch(A){e(A)}}function r(A){try{n(i.throw(A))}catch(A){e(A)}}function n(e){e.done?A(e.value):new o(function(A){A(e.value)}).then(t,r)}n((i=i.apply(B,s||[])).next())})}function S(t,r){var n,B,s,A,o={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]};return A={next:e(0),throw:e(1),return:e(2)},"function"==typeof Symbol&&(A[Symbol.iterator]=function(){return this}),A;function e(e){return function(A){return function(e){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,B&&(s=2&e[0]?B.return:e[0]?B.throw||((s=B.return)&&s.call(B),0):B.next)&&!(s=s.call(B,e[1])).done)return s;switch(B=0,s&&(e=[2&e[0],s.value]),e[0]){case 0:case 1:s=e;break;case 4:return o.label++,{value:e[1],done:!1};case 5:o.label++,B=e[1],e=[0];continue;case 7:e=o.ops.pop(),o.trys.pop();continue;default:if(!(s=0<(s=o.trys).length&&s[s.length-1])&&(6===e[0]||2===e[0])){o=0;continue}if(3===e[0]&&(!s||e[1]>s[0]&&e[1]<s[3])){o.label=e[1];break}if(6===e[0]&&o.label<s[1]){o.label=s[1],s=e;break}if(s&&o.label<s[2]){o.label=s[2],o.ops.push(e);break}s[2]&&o.ops.pop(),o.trys.pop();continue}e=r.call(t,o)}catch(A){e=[6,A],B=0}finally{n=s=0}if(5&e[0])throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}([e,A])}}}var I=(n.prototype.add=function(A,e,t,r){return new n(this.left+A,this.top+e,this.width+t,this.height+r)},n.fromClientRect=function(A){return new n(A.left,A.top,A.width,A.height)},n);function n(A,e,t,r){this.left=A,this.top=e,this.width=t,this.height=r}for(var T=function(A){return I.fromClientRect(A.getBoundingClientRect())},c=function(A){for(var e=[],t=0,r=A.length;t<r;){var n=A.charCodeAt(t++);if(55296<=n&&n<=56319&&t<r){var B=A.charCodeAt(t++);56320==(64512&B)?e.push(((1023&n)<<10)+(1023&B)+65536):(e.push(n),t--)}else e.push(n)}return e},l=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];if(String.fromCodePoint)return String.fromCodePoint.apply(String,A);var t=A.length;if(!t)return"";for(var r=[],n=-1,B="";++n<t;){var s=A[n];s<=65535?r.push(s):(s-=65536,r.push(55296+(s>>10),s%1024+56320)),(n+1===t||16384<r.length)&&(B+=String.fromCharCode.apply(String,r),r.length=0)}return B},e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Q="undefined"==typeof Uint8Array?[]:new Uint8Array(256),t=0;t<e.length;t++)Q[e.charCodeAt(t)]=t;function B(A,e,t){return A.slice?A.slice(e,t):new Uint16Array(Array.prototype.slice.call(A,e,t))}var s=(o.prototype.get=function(A){var e;if(0<=A){if(A<55296||56319<A&&A<=65535)return e=((e=this.index[A>>5])<<2)+(31&A),this.data[e];if(A<=65535)return e=((e=this.index[2048+(A-55296>>5)])<<2)+(31&A),this.data[e];if(A<this.highStart)return e=2080+(A>>11),e=this.index[e],e+=A>>5&63,e=((e=this.index[e])<<2)+(31&A),this.data[e];if(A<=1114111)return this.data[this.highValueIndex]}return this.errorValue},o);function o(A,e,t,r,n,B){this.initialValue=A,this.errorValue=e,this.highStart=t,this.highValueIndex=r,this.index=n,this.data=B}function C(A,e,t,r){var n=r[t];if(Array.isArray(A)?-1!==A.indexOf(n):A===n)for(var B=t;B<=r.length;){if((i=r[++B])===e)return!0;if(i!==H)break}if(n===H)for(B=t;0<B;){var s=r[--B];if(Array.isArray(A)?-1!==A.indexOf(s):A===s)for(var o=t;o<=r.length;){var i;if((i=r[++o])===e)return!0;if(i!==H)break}if(s!==H)break}return!1}function g(A,e){for(var t=A;0<=t;){var r=e[t];if(r!==H)return r;t--}return 0}function w(A,e,t,r,n){if(0===t[r])return Y;var B=r-1;if(Array.isArray(n)&&!0===n[B])return Y;var s=B-1,o=1+B,i=e[B],a=0<=s?e[s]:0,c=e[o];if(2===i&&3===c)return Y;if(-1!==j.indexOf(i))return"!";if(-1!==j.indexOf(c))return Y;if(-1!==$.indexOf(c))return Y;if(8===g(B,e))return"÷";if(11===q.get(A[B])&&(c===X||c===P||c===x))return Y;if(7===i||7===c)return Y;if(9===i)return Y;if(-1===[H,d,f].indexOf(i)&&9===c)return Y;if(-1!==[p,N,m,O,y].indexOf(c))return Y;if(g(B,e)===v)return Y;if(C(23,v,B,e))return Y;if(C([p,N],L,B,e))return Y;if(C(12,12,B,e))return Y;if(i===H)return"÷";if(23===i||23===c)return Y;if(16===c||16===i)return"÷";if(-1!==[d,f,L].indexOf(c)||14===i)return Y;if(36===a&&-1!==rA.indexOf(i))return Y;if(i===y&&36===c)return Y;if(c===R&&-1!==Z.concat(R,m,D,X,P,x).indexOf(i))return Y;if(-1!==Z.indexOf(c)&&i===D||-1!==Z.indexOf(i)&&c===D)return Y;if(i===M&&-1!==[X,P,x].indexOf(c)||-1!==[X,P,x].indexOf(i)&&c===b)return Y;if(-1!==Z.indexOf(i)&&-1!==AA.indexOf(c)||-1!==AA.indexOf(i)&&-1!==Z.indexOf(c))return Y;if(-1!==[M,b].indexOf(i)&&(c===D||-1!==[v,f].indexOf(c)&&e[1+o]===D)||-1!==[v,f].indexOf(i)&&c===D||i===D&&-1!==[D,y,O].indexOf(c))return Y;if(-1!==[D,y,O,p,N].indexOf(c))for(var Q=B;0<=Q;){if((w=e[Q])===D)return Y;if(-1===[y,O].indexOf(w))break;Q--}if(-1!==[M,b].indexOf(c))for(Q=-1!==[p,N].indexOf(i)?s:B;0<=Q;){var w;if((w=e[Q])===D)return Y;if(-1===[y,O].indexOf(w))break;Q--}if(J===i&&-1!==[J,G,V,z].indexOf(c)||-1!==[G,V].indexOf(i)&&-1!==[G,k].indexOf(c)||-1!==[k,z].indexOf(i)&&c===k)return Y;if(-1!==tA.indexOf(i)&&-1!==[R,b].indexOf(c)||-1!==tA.indexOf(c)&&i===M)return Y;if(-1!==Z.indexOf(i)&&-1!==Z.indexOf(c))return Y;if(i===O&&-1!==Z.indexOf(c))return Y;if(-1!==Z.concat(D).indexOf(i)&&c===v||-1!==Z.concat(D).indexOf(c)&&i===N)return Y;if(41===i&&41===c){for(var u=t[B],U=1;0<u&&41===e[--u];)U++;if(U%2!=0)return Y}return i===P&&c===x?Y:"÷"}function u(t,A){A||(A={lineBreak:"normal",wordBreak:"normal"});var e=function(A,n){void 0===n&&(n="strict");var B=[],s=[],o=[];return A.forEach(function(A,e){var t=q.get(A);if(50<t?(o.push(!0),t-=50):o.push(!1),-1!==["normal","auto","loose"].indexOf(n)&&-1!==[8208,8211,12316,12448].indexOf(A))return s.push(e),B.push(16);if(4!==t&&11!==t)return s.push(e),31===t?B.push("strict"===n?L:X):t===W?B.push(_):29===t?B.push(_):43===t?131072<=A&&A<=196605||196608<=A&&A<=262141?B.push(X):B.push(_):void B.push(t);if(0===e)return s.push(e),B.push(_);var r=B[e-1];return-1===eA.indexOf(r)?(s.push(s[e-1]),B.push(r)):(s.push(e),B.push(_))}),[s,B,o]}(t,A.lineBreak),r=e[0],n=e[1],B=e[2];return"break-all"!==A.wordBreak&&"break-word"!==A.wordBreak||(n=n.map(function(A){return-1!==[D,_,W].indexOf(A)?X:A})),[r,n,"keep-all"===A.wordBreak?B.map(function(A,e){return A&&19968<=t[e]&&t[e]<=40959}):void 0]}var i,U,E,F,h,H=10,d=13,f=15,p=17,N=18,m=19,R=20,L=21,v=22,O=24,D=25,b=26,M=27,y=28,_=30,P=32,x=33,V=34,z=35,X=37,J=38,G=39,k=40,W=42,Y="×",q=(i=function(A){var e,t,r,n,B,s=.75*A.length,o=A.length,i=0;"="===A[A.length-1]&&(s--,"="===A[A.length-2]&&s--);var a="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array&&void 0!==Uint8Array.prototype.slice?new ArrayBuffer(s):new Array(s),c=Array.isArray(a)?a:new Uint8Array(a);for(e=0;e<o;e+=4)t=Q[A.charCodeAt(e)],r=Q[A.charCodeAt(e+1)],n=Q[A.charCodeAt(e+2)],B=Q[A.charCodeAt(e+3)],c[i++]=t<<2|r>>4,c[i++]=(15&r)<<4|n>>2,c[i++]=(3&n)<<6|63&B;return a}("KwAAAAAAAAAACA4AIDoAAPAfAAACAAAAAAAIABAAGABAAEgAUABYAF4AZgBeAGYAYABoAHAAeABeAGYAfACEAIAAiACQAJgAoACoAK0AtQC9AMUAXgBmAF4AZgBeAGYAzQDVAF4AZgDRANkA3gDmAOwA9AD8AAQBDAEUARoBIgGAAIgAJwEvATcBPwFFAU0BTAFUAVwBZAFsAXMBewGDATAAiwGTAZsBogGkAawBtAG8AcIBygHSAdoB4AHoAfAB+AH+AQYCDgIWAv4BHgImAi4CNgI+AkUCTQJTAlsCYwJrAnECeQKBAk0CiQKRApkCoQKoArACuALAAsQCzAIwANQC3ALkAjAA7AL0AvwCAQMJAxADGAMwACADJgMuAzYDPgOAAEYDSgNSA1IDUgNaA1oDYANiA2IDgACAAGoDgAByA3YDfgOAAIQDgACKA5IDmgOAAIAAogOqA4AAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAK8DtwOAAIAAvwPHA88D1wPfAyAD5wPsA/QD/AOAAIAABAQMBBIEgAAWBB4EJgQuBDMEIAM7BEEEXgBJBCADUQRZBGEEaQQwADAAcQQ+AXkEgQSJBJEEgACYBIAAoASoBK8EtwQwAL8ExQSAAIAAgACAAIAAgACgAM0EXgBeAF4AXgBeAF4AXgBeANUEXgDZBOEEXgDpBPEE+QQBBQkFEQUZBSEFKQUxBTUFPQVFBUwFVAVcBV4AYwVeAGsFcwV7BYMFiwWSBV4AmgWgBacFXgBeAF4AXgBeAKsFXgCyBbEFugW7BcIFwgXIBcIFwgXQBdQF3AXkBesF8wX7BQMGCwYTBhsGIwYrBjMGOwZeAD8GRwZNBl4AVAZbBl4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAGMGXgBqBnEGXgBeAF4AXgBeAF4AXgBeAF4AXgB5BoAG4wSGBo4GkwaAAIADHgR5AF4AXgBeAJsGgABGA4AAowarBrMGswagALsGwwbLBjAA0wbaBtoG3QbaBtoG2gbaBtoG2gblBusG8wb7BgMHCwcTBxsHCwcjBysHMAc1BzUHOgdCB9oGSgdSB1oHYAfaBloHaAfaBlIH2gbaBtoG2gbaBtoG2gbaBjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHbQdeAF4ANQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQd1B30HNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B4MH2gaKB68EgACAAIAAgACAAIAAgACAAI8HlwdeAJ8HpweAAIAArwe3B14AXgC/B8UHygcwANAH2AfgB4AA6AfwBz4B+AcACFwBCAgPCBcIogEYAR8IJwiAAC8INwg/CCADRwhPCFcIXwhnCEoDGgSAAIAAgABvCHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIhAiLCI4IMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAANQc1BzUHNQc1BzUHNQc1BzUHNQc1B54INQc1B6II2gaqCLIIugiAAIAAvgjGCIAAgACAAIAAgACAAIAAgACAAIAAywiHAYAA0wiAANkI3QjlCO0I9Aj8CIAAgACAAAIJCgkSCRoJIgknCTYHLwk3CZYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiAAIAAAAFAAXgBeAGAAcABeAHwAQACQAKAArQC9AJ4AXgBeAE0A3gBRAN4A7AD8AMwBGgEAAKcBNwEFAUwBXAF4QkhCmEKnArcCgAHHAsABz4LAAcABwAHAAd+C6ABoAG+C/4LAAcABwAHAAc+DF4MAAcAB54M3gweDV4Nng3eDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEeDqABVg6WDqABoQ6gAaABoAHXDvcONw/3DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DncPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB7cPPwlGCU4JMACAAIAAgABWCV4JYQmAAGkJcAl4CXwJgAkwADAAMAAwAIgJgACLCZMJgACZCZ8JowmrCYAAswkwAF4AXgB8AIAAuwkABMMJyQmAAM4JgADVCTAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAqwYWBNkIMAAwADAAMADdCeAJ6AnuCR4E9gkwAP4JBQoNCjAAMACAABUK0wiAAB0KJAosCjQKgAAwADwKQwqAAEsKvQmdCVMKWwowADAAgACAALcEMACAAGMKgABrCjAAMAAwADAAMAAwADAAMAAwADAAMAAeBDAAMAAwADAAMAAwADAAMAAwADAAMAAwAIkEPQFzCnoKiQSCCooKkAqJBJgKoAqkCokEGAGsCrQKvArBCjAAMADJCtEKFQHZCuEK/gHpCvEKMAAwADAAMACAAIwE+QowAIAAPwEBCzAAMAAwADAAMACAAAkLEQswAIAAPwEZCyELgAAOCCkLMAAxCzkLMAAwADAAMAAwADAAXgBeAEELMAAwADAAMAAwADAAMAAwAEkLTQtVC4AAXAtkC4AAiQkwADAAMAAwADAAMAAwADAAbAtxC3kLgAuFC4sLMAAwAJMLlwufCzAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAApwswADAAMACAAIAAgACvC4AAgACAAIAAgACAALcLMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAvwuAAMcLgACAAIAAgACAAIAAyguAAIAAgACAAIAA0QswADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAANkLgACAAIAA4AswADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACJCR4E6AswADAAhwHwC4AA+AsADAgMEAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACAAIAAGAwdDCUMMAAwAC0MNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQw1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHPQwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADUHNQc1BzUHNQc1BzUHNQc2BzAAMAA5DDUHNQc1BzUHNQc1BzUHNQc1BzUHNQdFDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAATQxSDFoMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAF4AXgBeAF4AXgBeAF4AYgxeAGoMXgBxDHkMfwxeAIUMXgBeAI0MMAAwADAAMAAwAF4AXgCVDJ0MMAAwADAAMABeAF4ApQxeAKsMswy7DF4Awgy9DMoMXgBeAF4AXgBeAF4AXgBeAF4AXgDRDNkMeQBqCeAM3Ax8AOYM7Az0DPgMXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgCgAAANoAAHDQ4NFg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAeDSYNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAC4NMABeAF4ANg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAD4NRg1ODVYNXg1mDTAAbQ0wADAAMAAwADAAMAAwADAA2gbaBtoG2gbaBtoG2gbaBnUNeg3CBYANwgWFDdoGjA3aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gaUDZwNpA2oDdoG2gawDbcNvw3HDdoG2gbPDdYN3A3fDeYN2gbsDfMN2gbaBvoN/g3aBgYODg7aBl4AXgBeABYOXgBeACUG2gYeDl4AJA5eACwO2w3aBtoGMQ45DtoG2gbaBtoGQQ7aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B1EO2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQdZDjUHNQc1BzUHNQc1B2EONQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHaA41BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B3AO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B2EO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBkkOeA6gAKAAoAAwADAAMAAwAKAAoACgAKAAoACgAKAAgA4wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAD//wQABAAEAAQABAAEAAQABAAEAA0AAwABAAEAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAKABMAFwAeABsAGgAeABcAFgASAB4AGwAYAA8AGAAcAEsASwBLAEsASwBLAEsASwBLAEsAGAAYAB4AHgAeABMAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAFgAbABIAHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYADQARAB4ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkAFgAaABsAGwAbAB4AHQAdAB4ATwAXAB4ADQAeAB4AGgAbAE8ATwAOAFAAHQAdAB0ATwBPABcATwBPAE8AFgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwArAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAAQABAANAA0ASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAUAArACsAKwArACsAKwArACsABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAGgAaAFAAUABQAFAAUABMAB4AGwBQAB4AKwArACsABAAEAAQAKwBQAFAAUABQAFAAUAArACsAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUAArAFAAUAArACsABAArAAQABAAEAAQABAArACsAKwArAAQABAArACsABAAEAAQAKwArACsABAArACsAKwArACsAKwArAFAAUABQAFAAKwBQACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwAEAAQAUABQAFAABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQAKwArAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeABsAKwArACsAKwArACsAKwBQAAQABAAEAAQABAAEACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAKwArACsAKwArACsAKwArAAQABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwAEAFAAKwBQAFAAUABQAFAAUAArACsAKwBQAFAAUAArAFAAUABQAFAAKwArACsAUABQACsAUAArAFAAUAArACsAKwBQAFAAKwArACsAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQAKwArACsABAAEAAQAKwAEAAQABAAEACsAKwBQACsAKwArACsAKwArAAQAKwArACsAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAB4AHgAeAB4AHgAeABsAHgArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArAFAAUABQACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAB4AUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArACsAKwArACsAKwArAFAAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwArAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAKwBcAFwAKwBcACsAKwBcACsAKwArACsAKwArAFwAXABcAFwAKwBcAFwAXABcAFwAXABcACsAXABcAFwAKwBcACsAXAArACsAXABcACsAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgArACoAKgBcACsAKwBcAFwAXABcAFwAKwBcACsAKgAqACoAKgAqACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAFwAXABcAFwAUAAOAA4ADgAOAB4ADgAOAAkADgAOAA0ACQATABMAEwATABMACQAeABMAHgAeAB4ABAAEAB4AHgAeAB4AHgAeAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUAANAAQAHgAEAB4ABAAWABEAFgARAAQABABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAAQABAAEAAQABAANAAQABABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsADQANAB4AHgAeAB4AHgAeAAQAHgAeAB4AHgAeAB4AKwAeAB4ADgAOAA0ADgAeAB4AHgAeAB4ACQAJACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgAeAB4AHgBcAFwAXABcAFwAXAAqACoAKgAqAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAKgAqACoAKgAqACoAKgBcAFwAXAAqACoAKgAqAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAXAAqAEsASwBLAEsASwBLAEsASwBLAEsAKgAqACoAKgAqACoAUABQAFAAUABQAFAAKwBQACsAKwArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQACsAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwAEAAQABAAeAA0AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAEQArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAADQANAA0AUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAA0ADQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoADQANABUAXAANAB4ADQAbAFwAKgArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAB4AHgATABMADQANAA4AHgATABMAHgAEAAQABAAJACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAUABQAFAAUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwAeACsAKwArABMAEwBLAEsASwBLAEsASwBLAEsASwBLAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwBcAFwAXABcAFwAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcACsAKwArACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwAeAB4AXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsABABLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKgAqACoAKgAqACoAKgBcACoAKgAqACoAKgAqACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAUABQAFAAUABQAFAAUAArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4ADQANAA0ADQAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAHgAeAB4AHgBQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwANAA0ADQANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwBQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsABAAEAAQAHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAABABQAFAAUABQAAQABAAEAFAAUAAEAAQABAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAKwBQACsAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAKwArAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAKwAeAB4AHgAeAB4AHgAeAA4AHgArAA0ADQANAA0ADQANAA0ACQANAA0ADQAIAAQACwAEAAQADQAJAA0ADQAMAB0AHQAeABcAFwAWABcAFwAXABYAFwAdAB0AHgAeABQAFAAUAA0AAQABAAQABAAEAAQABAAJABoAGgAaABoAGgAaABoAGgAeABcAFwAdABUAFQAeAB4AHgAeAB4AHgAYABYAEQAVABUAFQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgANAB4ADQANAA0ADQAeAA0ADQANAAcAHgAeAB4AHgArAAQABAAEAAQABAAEAAQABAAEAAQAUABQACsAKwBPAFAAUABQAFAAUAAeAB4AHgAWABEATwBQAE8ATwBPAE8AUABQAFAAUABQAB4AHgAeABYAEQArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGgAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgBQABoAHgAdAB4AUAAeABoAHgAeAB4AHgAeAB4AHgAeAB4ATwAeAFAAGwAeAB4AUABQAFAAUABQAB4AHgAeAB0AHQAeAFAAHgBQAB4AUAAeAFAATwBQAFAAHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AUABQAFAAUABPAE8AUABQAFAAUABQAE8AUABQAE8AUABPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAE8ATwBPAE8ATwBPAE8ATwBPAE8AUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAATwAeAB4AKwArACsAKwAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB0AHQAeAB4AHgAdAB0AHgAeAB0AHgAeAB4AHQAeAB0AGwAbAB4AHQAeAB4AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB0AHgAdAB4AHQAdAB0AHQAdAB0AHgAdAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAdAB0AHQAdAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAlACUAHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB0AHQAeAB4AHgAeAB0AHQAdAB4AHgAdAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB0AHQAeAB4AHQAeAB4AHgAeAB0AHQAeAB4AHgAeACUAJQAdAB0AJQAeACUAJQAlACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHQAdAB0AHgAdACUAHQAdAB4AHQAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHQAdAB0AHQAlAB4AJQAlACUAHQAlACUAHQAdAB0AJQAlAB0AHQAlAB0AHQAlACUAJQAeAB0AHgAeAB4AHgAdAB0AJQAdAB0AHQAdAB0AHQAlACUAJQAlACUAHQAlACUAIAAlAB0AHQAlACUAJQAlACUAJQAlACUAHgAeAB4AJQAlACAAIAAgACAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeABcAFwAXABcAFwAXAB4AEwATACUAHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACUAJQBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwArACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAE8ATwBPAE8ATwBPAE8ATwAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeACsAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUAArACsAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQBQAFAAUABQACsAKwArACsAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAABAAEAAQAKwAEAAQAKwArACsAKwArAAQABAAEAAQAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsABAAEAAQAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsADQANAA0ADQANAA0ADQANAB4AKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAUABQAFAAUABQAA0ADQANAA0ADQANABQAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwANAA0ADQANAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAeAAQABAAEAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLACsADQArAB4AKwArAAQABAAEAAQAUABQAB4AUAArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwAEAAQABAAEAAQABAAEAAQABAAOAA0ADQATABMAHgAeAB4ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0AUABQAFAAUAAEAAQAKwArAAQADQANAB4AUAArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXABcAA0ADQANACoASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUAArACsAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANACsADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEcARwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwAeAAQABAANAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAEAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUAArACsAUAArACsAUABQACsAKwBQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAeAB4ADQANAA0ADQAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAArAAQABAArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAEAAQABAAEAAQABAAEACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAFgAWAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAKwBQACsAKwArACsAKwArAFAAKwArACsAKwBQACsAUAArAFAAKwBQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQACsAUAArAFAAKwBQACsAUABQACsAUAArACsAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAUABQAFAAUAArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUAArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAlACUAJQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeACUAJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeACUAJQAlACUAJQAeACUAJQAlACUAJQAgACAAIAAlACUAIAAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIQAhACEAIQAhACUAJQAgACAAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAIAAlACUAJQAlACAAJQAgACAAIAAgACAAIAAgACAAIAAlACUAJQAgACUAJQAlACUAIAAgACAAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeACUAHgAlAB4AJQAlACUAJQAlACAAJQAlACUAJQAeACUAHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAIAAgACAAIAAgAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFwAXABcAFQAVABUAHgAeAB4AHgAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAlACAAIAAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsA"),U=Array.isArray(i)?function(A){for(var e=A.length,t=[],r=0;r<e;r+=4)t.push(A[r+3]<<24|A[r+2]<<16|A[r+1]<<8|A[r]);return t}(i):new Uint32Array(i),E=Array.isArray(i)?function(A){for(var e=A.length,t=[],r=0;r<e;r+=2)t.push(A[r+1]<<8|A[r]);return t}(i):new Uint16Array(i),F=B(E,12,U[4]/2),h=2===U[5]?B(E,(24+U[4])/2):function(A,e,t){return A.slice?A.slice(e,t):new Uint32Array(Array.prototype.slice.call(A,e,t))}(U,Math.ceil((24+U[4])/4)),new s(U[0],U[1],U[2],U[3],F,h)),Z=[_,36],j=[1,2,3,5],$=[H,8],AA=[M,b],eA=j.concat($),tA=[J,G,k,V,z],rA=[f,d],nA=(BA.prototype.slice=function(){return l.apply(void 0,this.codePoints.slice(this.start,this.end))},BA);function BA(A,e,t,r){this.codePoints=A,this.required="!"===e,this.start=t,this.end=r}var sA,oA;(oA=sA||(sA={}))[oA.STRING_TOKEN=0]="STRING_TOKEN",oA[oA.BAD_STRING_TOKEN=1]="BAD_STRING_TOKEN",oA[oA.LEFT_PARENTHESIS_TOKEN=2]="LEFT_PARENTHESIS_TOKEN",oA[oA.RIGHT_PARENTHESIS_TOKEN=3]="RIGHT_PARENTHESIS_TOKEN",oA[oA.COMMA_TOKEN=4]="COMMA_TOKEN",oA[oA.HASH_TOKEN=5]="HASH_TOKEN",oA[oA.DELIM_TOKEN=6]="DELIM_TOKEN",oA[oA.AT_KEYWORD_TOKEN=7]="AT_KEYWORD_TOKEN",oA[oA.PREFIX_MATCH_TOKEN=8]="PREFIX_MATCH_TOKEN",oA[oA.DASH_MATCH_TOKEN=9]="DASH_MATCH_TOKEN",oA[oA.INCLUDE_MATCH_TOKEN=10]="INCLUDE_MATCH_TOKEN",oA[oA.LEFT_CURLY_BRACKET_TOKEN=11]="LEFT_CURLY_BRACKET_TOKEN",oA[oA.RIGHT_CURLY_BRACKET_TOKEN=12]="RIGHT_CURLY_BRACKET_TOKEN",oA[oA.SUFFIX_MATCH_TOKEN=13]="SUFFIX_MATCH_TOKEN",oA[oA.SUBSTRING_MATCH_TOKEN=14]="SUBSTRING_MATCH_TOKEN",oA[oA.DIMENSION_TOKEN=15]="DIMENSION_TOKEN",oA[oA.PERCENTAGE_TOKEN=16]="PERCENTAGE_TOKEN",oA[oA.NUMBER_TOKEN=17]="NUMBER_TOKEN",oA[oA.FUNCTION=18]="FUNCTION",oA[oA.FUNCTION_TOKEN=19]="FUNCTION_TOKEN",oA[oA.IDENT_TOKEN=20]="IDENT_TOKEN",oA[oA.COLUMN_TOKEN=21]="COLUMN_TOKEN",oA[oA.URL_TOKEN=22]="URL_TOKEN",oA[oA.BAD_URL_TOKEN=23]="BAD_URL_TOKEN",oA[oA.CDC_TOKEN=24]="CDC_TOKEN",oA[oA.CDO_TOKEN=25]="CDO_TOKEN",oA[oA.COLON_TOKEN=26]="COLON_TOKEN",oA[oA.SEMICOLON_TOKEN=27]="SEMICOLON_TOKEN",oA[oA.LEFT_SQUARE_BRACKET_TOKEN=28]="LEFT_SQUARE_BRACKET_TOKEN",oA[oA.RIGHT_SQUARE_BRACKET_TOKEN=29]="RIGHT_SQUARE_BRACKET_TOKEN",oA[oA.UNICODE_RANGE_TOKEN=30]="UNICODE_RANGE_TOKEN",oA[oA.WHITESPACE_TOKEN=31]="WHITESPACE_TOKEN",oA[oA.EOF_TOKEN=32]="EOF_TOKEN";function iA(A){return 48<=A&&A<=57}function aA(A){return iA(A)||65<=A&&A<=70||97<=A&&A<=102}function cA(A){return 10===A||9===A||32===A}function QA(A){return function(A){return function(A){return 97<=A&&A<=122}(A)||function(A){return 65<=A&&A<=90}(A)}(A)||function(A){return 128<=A}(A)||95===A}function wA(A){return QA(A)||iA(A)||45===A}function uA(A,e){return 92===A&&10!==e}function UA(A,e,t){return 45===A?QA(e)||uA(e,t):!!QA(A)||!(92!==A||!uA(A,e))}function lA(A,e,t){return 43===A||45===A?!!iA(e)||46===e&&iA(t):iA(46===A?e:A)}var CA={type:sA.LEFT_PARENTHESIS_TOKEN},gA={type:sA.RIGHT_PARENTHESIS_TOKEN},EA={type:sA.COMMA_TOKEN},FA={type:sA.SUFFIX_MATCH_TOKEN},hA={type:sA.PREFIX_MATCH_TOKEN},HA={type:sA.COLUMN_TOKEN},dA={type:sA.DASH_MATCH_TOKEN},fA={type:sA.INCLUDE_MATCH_TOKEN},pA={type:sA.LEFT_CURLY_BRACKET_TOKEN},NA={type:sA.RIGHT_CURLY_BRACKET_TOKEN},KA={type:sA.SUBSTRING_MATCH_TOKEN},IA={type:sA.BAD_URL_TOKEN},TA={type:sA.BAD_STRING_TOKEN},mA={type:sA.CDO_TOKEN},RA={type:sA.CDC_TOKEN},LA={type:sA.COLON_TOKEN},vA={type:sA.SEMICOLON_TOKEN},OA={type:sA.LEFT_SQUARE_BRACKET_TOKEN},DA={type:sA.RIGHT_SQUARE_BRACKET_TOKEN},bA={type:sA.WHITESPACE_TOKEN},SA={type:sA.EOF_TOKEN},MA=(yA.prototype.write=function(A){this._value=this._value.concat(c(A))},yA.prototype.read=function(){for(var A=[],e=this.consumeToken();e!==SA;)A.push(e),e=this.consumeToken();return A},yA.prototype.consumeToken=function(){var A=this.consumeCodePoint();switch(A){case 34:return this.consumeStringToken(34);case 35:var e=this.peekCodePoint(0),t=this.peekCodePoint(1),r=this.peekCodePoint(2);if(wA(e)||uA(t,r)){var n=UA(e,t,r)?2:1,B=this.consumeName();return{type:sA.HASH_TOKEN,value:B,flags:n}}break;case 36:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),FA;break;case 39:return this.consumeStringToken(39);case 40:return CA;case 41:return gA;case 42:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),KA;break;case 43:if(lA(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case 44:return EA;case 45:var s=A,o=this.peekCodePoint(0),i=this.peekCodePoint(1);if(lA(s,o,i))return this.reconsumeCodePoint(A),this.consumeNumericToken();if(UA(s,o,i))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();if(45===o&&62===i)return this.consumeCodePoint(),this.consumeCodePoint(),RA;break;case 46:if(lA(A,this.peekCodePoint(0),this.peekCodePoint(1)))return this.reconsumeCodePoint(A),this.consumeNumericToken();break;case 47:if(42===this.peekCodePoint(0))for(this.consumeCodePoint();;){var a=this.consumeCodePoint();if(42===a&&47===(a=this.consumeCodePoint()))return this.consumeToken();if(-1===a)return this.consumeToken()}break;case 58:return LA;case 59:return vA;case 60:if(33===this.peekCodePoint(0)&&45===this.peekCodePoint(1)&&45===this.peekCodePoint(2))return this.consumeCodePoint(),this.consumeCodePoint(),mA;break;case 64:var c=this.peekCodePoint(0),Q=this.peekCodePoint(1),w=this.peekCodePoint(2);if(UA(c,Q,w))return B=this.consumeName(),{type:sA.AT_KEYWORD_TOKEN,value:B};break;case 91:return OA;case 92:if(uA(A,this.peekCodePoint(0)))return this.reconsumeCodePoint(A),this.consumeIdentLikeToken();break;case 93:return DA;case 61:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),hA;break;case 123:return pA;case 125:return NA;case 117:case 85:var u=this.peekCodePoint(0),U=this.peekCodePoint(1);return 43!==u||!aA(U)&&63!==U||(this.consumeCodePoint(),this.consumeUnicodeRangeToken()),this.reconsumeCodePoint(A),this.consumeIdentLikeToken();case 124:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),dA;if(124===this.peekCodePoint(0))return this.consumeCodePoint(),HA;break;case 126:if(61===this.peekCodePoint(0))return this.consumeCodePoint(),fA;break;case-1:return SA}return cA(A)?(this.consumeWhiteSpace(),bA):iA(A)?(this.reconsumeCodePoint(A),this.consumeNumericToken()):QA(A)?(this.reconsumeCodePoint(A),this.consumeIdentLikeToken()):{type:sA.DELIM_TOKEN,value:l(A)}},yA.prototype.consumeCodePoint=function(){var A=this._value.shift();return void 0===A?-1:A},yA.prototype.reconsumeCodePoint=function(A){this._value.unshift(A)},yA.prototype.peekCodePoint=function(A){return A>=this._value.length?-1:this._value[A]},yA.prototype.consumeUnicodeRangeToken=function(){for(var A=[],e=this.consumeCodePoint();aA(e)&&A.length<6;)A.push(e),e=this.consumeCodePoint();for(var t=!1;63===e&&A.length<6;)A.push(e),e=this.consumeCodePoint(),t=!0;if(t){var r=parseInt(l.apply(void 0,A.map(function(A){return 63===A?48:A})),16),n=parseInt(l.apply(void 0,A.map(function(A){return 63===A?70:A})),16);return{type:sA.UNICODE_RANGE_TOKEN,start:r,end:n}}var B=parseInt(l.apply(void 0,A),16);if(45===this.peekCodePoint(0)&&aA(this.peekCodePoint(1))){this.consumeCodePoint(),e=this.consumeCodePoint();for(var s=[];aA(e)&&s.length<6;)s.push(e),e=this.consumeCodePoint();return n=parseInt(l.apply(void 0,s),16),{type:sA.UNICODE_RANGE_TOKEN,start:B,end:n}}return{type:sA.UNICODE_RANGE_TOKEN,start:B,end:B}},yA.prototype.consumeIdentLikeToken=function(){var A=this.consumeName();return"url"===A.toLowerCase()&&40===this.peekCodePoint(0)?(this.consumeCodePoint(),this.consumeUrlToken()):40===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:sA.FUNCTION_TOKEN,value:A}):{type:sA.IDENT_TOKEN,value:A}},yA.prototype.consumeUrlToken=function(){var A=[];if(this.consumeWhiteSpace(),-1===this.peekCodePoint(0))return{type:sA.URL_TOKEN,value:""};var e,t=this.peekCodePoint(0);if(39===t||34===t){var r=this.consumeStringToken(this.consumeCodePoint());return r.type===sA.STRING_TOKEN&&(this.consumeWhiteSpace(),-1===this.peekCodePoint(0)||41===this.peekCodePoint(0))?(this.consumeCodePoint(),{type:sA.URL_TOKEN,value:r.value}):(this.consumeBadUrlRemnants(),IA)}for(;;){var n=this.consumeCodePoint();if(-1===n||41===n)return{type:sA.URL_TOKEN,value:l.apply(void 0,A)};if(cA(n))return this.consumeWhiteSpace(),-1===this.peekCodePoint(0)||41===this.peekCodePoint(0)?(this.consumeCodePoint(),{type:sA.URL_TOKEN,value:l.apply(void 0,A)}):(this.consumeBadUrlRemnants(),IA);if(34===n||39===n||40===n||0<=(e=n)&&e<=8||11===e||14<=e&&e<=31||127===e)return this.consumeBadUrlRemnants(),IA;if(92===n){if(!uA(n,this.peekCodePoint(0)))return this.consumeBadUrlRemnants(),IA;A.push(this.consumeEscapedCodePoint())}else A.push(n)}},yA.prototype.consumeWhiteSpace=function(){for(;cA(this.peekCodePoint(0));)this.consumeCodePoint()},yA.prototype.consumeBadUrlRemnants=function(){for(;;){var A=this.consumeCodePoint();if(41===A||-1===A)return;uA(A,this.peekCodePoint(0))&&this.consumeEscapedCodePoint()}},yA.prototype.consumeStringSlice=function(A){for(var e="";0<A;){var t=Math.min(6e4,A);e+=l.apply(void 0,this._value.splice(0,t)),A-=t}return this._value.shift(),e},yA.prototype.consumeStringToken=function(A){for(var e="",t=0;;){var r=this._value[t];if(-1===r||void 0===r||r===A)return e+=this.consumeStringSlice(t),{type:sA.STRING_TOKEN,value:e};if(10===r)return this._value.splice(0,t),TA;if(92===r){var n=this._value[t+1];-1!==n&&void 0!==n&&(10===n?(e+=this.consumeStringSlice(t),t=-1,this._value.shift()):uA(r,n)&&(e+=this.consumeStringSlice(t),e+=l(this.consumeEscapedCodePoint()),t=-1))}t++}},yA.prototype.consumeNumber=function(){var A=[],e=4,t=this.peekCodePoint(0);for(43!==t&&45!==t||A.push(this.consumeCodePoint());iA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());t=this.peekCodePoint(0);var r=this.peekCodePoint(1);if(46===t&&iA(r))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),e=8;iA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());t=this.peekCodePoint(0),r=this.peekCodePoint(1);var n=this.peekCodePoint(2);if((69===t||101===t)&&((43===r||45===r)&&iA(n)||iA(r)))for(A.push(this.consumeCodePoint(),this.consumeCodePoint()),e=8;iA(this.peekCodePoint(0));)A.push(this.consumeCodePoint());return[function(A){var e=0,t=1;43!==A[e]&&45!==A[e]||(45===A[e]&&(t=-1),e++);for(var r=[];iA(A[e]);)r.push(A[e++]);var n=r.length?parseInt(l.apply(void 0,r),10):0;46===A[e]&&e++;for(var B=[];iA(A[e]);)B.push(A[e++]);var s=B.length,o=s?parseInt(l.apply(void 0,B),10):0;69!==A[e]&&101!==A[e]||e++;var i=1;43!==A[e]&&45!==A[e]||(45===A[e]&&(i=-1),e++);for(var a=[];iA(A[e]);)a.push(A[e++]);var c=a.length?parseInt(l.apply(void 0,a),10):0;return t*(n+o*Math.pow(10,-s))*Math.pow(10,i*c)}(A),e]},yA.prototype.consumeNumericToken=function(){var A=this.consumeNumber(),e=A[0],t=A[1],r=this.peekCodePoint(0),n=this.peekCodePoint(1),B=this.peekCodePoint(2);if(UA(r,n,B)){var s=this.consumeName();return{type:sA.DIMENSION_TOKEN,number:e,flags:t,unit:s}}return 37===r?(this.consumeCodePoint(),{type:sA.PERCENTAGE_TOKEN,number:e,flags:t}):{type:sA.NUMBER_TOKEN,number:e,flags:t}},yA.prototype.consumeEscapedCodePoint=function(){var A=this.consumeCodePoint();if(aA(A)){for(var e=l(A);aA(this.peekCodePoint(0))&&e.length<6;)e+=l(this.consumeCodePoint());cA(this.peekCodePoint(0))&&this.consumeCodePoint();var t=parseInt(e,16);return 0===t||function(A){return 55296<=A&&A<=57343}(t)||1114111<t?65533:t}return-1===A?65533:A},yA.prototype.consumeName=function(){for(var A="";;){var e=this.consumeCodePoint();if(wA(e))A+=l(e);else{if(!uA(e,this.peekCodePoint(0)))return this.reconsumeCodePoint(e),A;A+=l(this.consumeEscapedCodePoint())}}},yA);function yA(){this._value=[]}var _A=(PA.create=function(A){var e=new MA;return e.write(A),new PA(e.read())},PA.parseValue=function(A){return PA.create(A).parseComponentValue()},PA.parseValues=function(A){return PA.create(A).parseComponentValues()},PA.prototype.parseComponentValue=function(){for(var A=this.consumeToken();A.type===sA.WHITESPACE_TOKEN;)A=this.consumeToken();if(A.type===sA.EOF_TOKEN)throw new SyntaxError("Error parsing CSS component value, unexpected EOF");this.reconsumeToken(A);for(var e=this.consumeComponentValue();(A=this.consumeToken()).type===sA.WHITESPACE_TOKEN;);if(A.type===sA.EOF_TOKEN)return e;throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one")},PA.prototype.parseComponentValues=function(){for(var A=[];;){var e=this.consumeComponentValue();if(e.type===sA.EOF_TOKEN)return A;A.push(e),A.push()}},PA.prototype.consumeComponentValue=function(){var A=this.consumeToken();switch(A.type){case sA.LEFT_CURLY_BRACKET_TOKEN:case sA.LEFT_SQUARE_BRACKET_TOKEN:case sA.LEFT_PARENTHESIS_TOKEN:return this.consumeSimpleBlock(A.type);case sA.FUNCTION_TOKEN:return this.consumeFunction(A)}return A},PA.prototype.consumeSimpleBlock=function(A){for(var e={type:A,values:[]},t=this.consumeToken();;){if(t.type===sA.EOF_TOKEN||Be(t,A))return e;this.reconsumeToken(t),e.values.push(this.consumeComponentValue()),t=this.consumeToken()}},PA.prototype.consumeFunction=function(A){for(var e={name:A.value,values:[],type:sA.FUNCTION};;){var t=this.consumeToken();if(t.type===sA.EOF_TOKEN||t.type===sA.RIGHT_PARENTHESIS_TOKEN)return e;this.reconsumeToken(t),e.values.push(this.consumeComponentValue())}},PA.prototype.consumeToken=function(){var A=this._tokens.shift();return void 0===A?SA:A},PA.prototype.reconsumeToken=function(A){this._tokens.unshift(A)},PA);function PA(A){this._tokens=A}function xA(A){return A.type===sA.DIMENSION_TOKEN}function VA(A){return A.type===sA.NUMBER_TOKEN}function zA(A){return A.type===sA.IDENT_TOKEN}function XA(A){return A.type===sA.STRING_TOKEN}function JA(A,e){return zA(A)&&A.value===e}function GA(A){return A.type!==sA.WHITESPACE_TOKEN}function kA(A){return A.type!==sA.WHITESPACE_TOKEN&&A.type!==sA.COMMA_TOKEN}function WA(A){var e=[],t=[];return A.forEach(function(A){if(A.type===sA.COMMA_TOKEN){if(0===t.length)throw new Error("Error parsing function args, zero tokens for arg");return e.push(t),void(t=[])}A.type!==sA.WHITESPACE_TOKEN&&t.push(A)}),t.length&&e.push(t),e}function YA(A){return A.type===sA.NUMBER_TOKEN||A.type===sA.DIMENSION_TOKEN}function qA(A){return A.type===sA.PERCENTAGE_TOKEN||YA(A)}function ZA(A){return 1<A.length?[A[0],A[1]]:[A[0]]}function jA(A,e,t){var r=A[0],n=A[1];return[ae(r,e),ae(void 0!==n?n:r,t)]}function $A(A){return A.type===sA.DIMENSION_TOKEN&&("deg"===A.unit||"grad"===A.unit||"rad"===A.unit||"turn"===A.unit)}function Ae(A){switch(A.filter(zA).map(function(A){return A.value}).join(" ")){case"to bottom right":case"to right bottom":case"left top":case"top left":return[se,se];case"to top":case"bottom":return Qe(0);case"to bottom left":case"to left bottom":case"right top":case"top right":return[se,ie];case"to right":case"left":return Qe(90);case"to top left":case"to left top":case"right bottom":case"bottom right":return[ie,ie];case"to bottom":case"top":return Qe(180);case"to top right":case"to right top":case"left bottom":case"bottom left":return[ie,se];case"to left":case"right":return Qe(270)}return 0}function ee(A){return 0==(255&A)}function te(A){var e=255&A,t=255&A>>8,r=255&A>>16,n=255&A>>24;return e<255?"rgba("+n+","+r+","+t+","+e/255+")":"rgb("+n+","+r+","+t+")"}function re(A,e){if(A.type===sA.NUMBER_TOKEN)return A.number;if(A.type!==sA.PERCENTAGE_TOKEN)return 0;var t=3===e?1:255;return 3===e?A.number/100*t:Math.round(A.number/100*t)}function ne(A){var e=A.filter(kA);if(3===e.length){var t=e.map(re),r=t[0],n=t[1],B=t[2];return ue(r,n,B,1)}if(4!==e.length)return 0;var s=e.map(re),o=(r=s[0],n=s[1],B=s[2],s[3]);return ue(r,n,B,o)}var Be=function(A,e){return e===sA.LEFT_CURLY_BRACKET_TOKEN&&A.type===sA.RIGHT_CURLY_BRACKET_TOKEN||(e===sA.LEFT_SQUARE_BRACKET_TOKEN&&A.type===sA.RIGHT_SQUARE_BRACKET_TOKEN||e===sA.LEFT_PARENTHESIS_TOKEN&&A.type===sA.RIGHT_PARENTHESIS_TOKEN)},se={type:sA.NUMBER_TOKEN,number:0,flags:4},oe={type:sA.PERCENTAGE_TOKEN,number:50,flags:4},ie={type:sA.PERCENTAGE_TOKEN,number:100,flags:4},ae=function(A,e){if(A.type===sA.PERCENTAGE_TOKEN)return A.number/100*e;if(xA(A))switch(A.unit){case"rem":case"em":return 16*A.number;case"px":default:return A.number}return A.number},ce=function(A){if(A.type===sA.DIMENSION_TOKEN)switch(A.unit){case"deg":return Math.PI*A.number/180;case"grad":return Math.PI/200*A.number;case"rad":return A.number;case"turn":return 2*Math.PI*A.number}throw new Error("Unsupported angle type")},Qe=function(A){return Math.PI*A/180},we=function(A){if(A.type===sA.FUNCTION){var e=he[A.name];if(void 0===e)throw new Error('Attempting to parse an unsupported color function "'+A.name+'"');return e(A.values)}if(A.type===sA.HASH_TOKEN){if(3===A.value.length){var t=A.value.substring(0,1),r=A.value.substring(1,2),n=A.value.substring(2,3);return ue(parseInt(t+t,16),parseInt(r+r,16),parseInt(n+n,16),1)}if(4===A.value.length){t=A.value.substring(0,1),r=A.value.substring(1,2),n=A.value.substring(2,3);var B=A.value.substring(3,4);return ue(parseInt(t+t,16),parseInt(r+r,16),parseInt(n+n,16),parseInt(B+B,16)/255)}if(6===A.value.length){t=A.value.substring(0,2),r=A.value.substring(2,4),n=A.value.substring(4,6);return ue(parseInt(t,16),parseInt(r,16),parseInt(n,16),1)}if(8===A.value.length){t=A.value.substring(0,2),r=A.value.substring(2,4),n=A.value.substring(4,6),B=A.value.substring(6,8);return ue(parseInt(t,16),parseInt(r,16),parseInt(n,16),parseInt(B,16)/255)}}if(A.type===sA.IDENT_TOKEN){var s=He[A.value.toUpperCase()];if(void 0!==s)return s}return He.TRANSPARENT},ue=function(A,e,t,r){return(A<<24|e<<16|t<<8|Math.round(255*r)<<0)>>>0};function Ue(A,e,t){return t<0&&(t+=1),1<=t&&(t-=1),t<1/6?(e-A)*t*6+A:t<.5?e:t<2/3?6*(e-A)*(2/3-t)+A:A}function le(A){var e=A.filter(kA),t=e[0],r=e[1],n=e[2],B=e[3],s=(t.type===sA.NUMBER_TOKEN?Qe(t.number):ce(t))/(2*Math.PI),o=qA(r)?r.number/100:0,i=qA(n)?n.number/100:0,a=void 0!==B&&qA(B)?ae(B,1):1;if(0==o)return ue(255*i,255*i,255*i,1);var c=i<=.5?i*(1+o):i+o-i*o,Q=2*i-c,w=Ue(Q,c,s+1/3),u=Ue(Q,c,s),U=Ue(Q,c,s-1/3);return ue(255*w,255*u,255*U,a)}var Ce,ge,Ee,Fe,he={hsl:le,hsla:le,rgb:ne,rgba:ne},He={ALICEBLUE:4042850303,ANTIQUEWHITE:4209760255,AQUA:16777215,AQUAMARINE:2147472639,AZURE:4043309055,BEIGE:4126530815,BISQUE:4293182719,BLACK:255,BLANCHEDALMOND:4293643775,BLUE:65535,BLUEVIOLET:2318131967,BROWN:2771004159,BURLYWOOD:3736635391,CADETBLUE:1604231423,CHARTREUSE:2147418367,CHOCOLATE:3530104575,CORAL:4286533887,CORNFLOWERBLUE:1687547391,CORNSILK:4294499583,CRIMSON:3692313855,CYAN:16777215,DARKBLUE:35839,DARKCYAN:9145343,DARKGOLDENROD:3095837695,DARKGRAY:2846468607,DARKGREEN:6553855,DARKGREY:2846468607,DARKKHAKI:3182914559,DARKMAGENTA:2332068863,DARKOLIVEGREEN:1433087999,DARKORANGE:4287365375,DARKORCHID:2570243327,DARKRED:2332033279,DARKSALMON:3918953215,DARKSEAGREEN:2411499519,DARKSLATEBLUE:1211993087,DARKSLATEGRAY:793726975,DARKSLATEGREY:793726975,DARKTURQUOISE:13554175,DARKVIOLET:2483082239,DEEPPINK:4279538687,DEEPSKYBLUE:12582911,DIMGRAY:1768516095,DIMGREY:1768516095,DODGERBLUE:512819199,FIREBRICK:2988581631,FLORALWHITE:4294635775,FORESTGREEN:579543807,FUCHSIA:4278255615,GAINSBORO:3705462015,GHOSTWHITE:4177068031,GOLD:4292280575,GOLDENROD:3668254975,GRAY:2155905279,GREEN:8388863,GREENYELLOW:2919182335,GREY:2155905279,HONEYDEW:4043305215,HOTPINK:4285117695,INDIANRED:3445382399,INDIGO:1258324735,IVORY:4294963455,KHAKI:4041641215,LAVENDER:3873897215,LAVENDERBLUSH:4293981695,LAWNGREEN:2096890111,LEMONCHIFFON:4294626815,LIGHTBLUE:2916673279,LIGHTCORAL:4034953471,LIGHTCYAN:3774873599,LIGHTGOLDENRODYELLOW:4210742015,LIGHTGRAY:3553874943,LIGHTGREEN:2431553791,LIGHTGREY:3553874943,LIGHTPINK:4290167295,LIGHTSALMON:4288707327,LIGHTSEAGREEN:548580095,LIGHTSKYBLUE:2278488831,LIGHTSLATEGRAY:2005441023,LIGHTSLATEGREY:2005441023,LIGHTSTEELBLUE:2965692159,LIGHTYELLOW:4294959359,LIME:16711935,LIMEGREEN:852308735,LINEN:4210091775,MAGENTA:4278255615,MAROON:2147483903,MEDIUMAQUAMARINE:1724754687,MEDIUMBLUE:52735,MEDIUMORCHID:3126187007,MEDIUMPURPLE:2473647103,MEDIUMSEAGREEN:1018393087,MEDIUMSLATEBLUE:2070474495,MEDIUMSPRINGGREEN:16423679,MEDIUMTURQUOISE:1221709055,MEDIUMVIOLETRED:3340076543,MIDNIGHTBLUE:421097727,MINTCREAM:4127193855,MISTYROSE:4293190143,MOCCASIN:4293178879,NAVAJOWHITE:4292783615,NAVY:33023,OLDLACE:4260751103,OLIVE:2155872511,OLIVEDRAB:1804477439,ORANGE:4289003775,ORANGERED:4282712319,ORCHID:3664828159,PALEGOLDENROD:4008225535,PALEGREEN:2566625535,PALETURQUOISE:2951671551,PALEVIOLETRED:3681588223,PAPAYAWHIP:4293907967,PEACHPUFF:4292524543,PERU:3448061951,PINK:4290825215,PLUM:3718307327,POWDERBLUE:2967529215,PURPLE:2147516671,REBECCAPURPLE:1714657791,RED:4278190335,ROSYBROWN:3163525119,ROYALBLUE:1097458175,SADDLEBROWN:2336560127,SALMON:4202722047,SANDYBROWN:4104413439,SEAGREEN:780883967,SEASHELL:4294307583,SIENNA:2689740287,SILVER:3233857791,SKYBLUE:2278484991,SLATEBLUE:1784335871,SLATEGRAY:1887473919,SLATEGREY:1887473919,SNOW:4294638335,SPRINGGREEN:16744447,STEELBLUE:1182971135,TAN:3535047935,TEAL:8421631,THISTLE:3636451583,TOMATO:4284696575,TRANSPARENT:0,TURQUOISE:1088475391,VIOLET:4001558271,WHEAT:4125012991,WHITE:4294967295,WHITESMOKE:4126537215,YELLOW:4294902015,YELLOWGREEN:2597139199};(ge=Ce||(Ce={}))[ge.VALUE=0]="VALUE",ge[ge.LIST=1]="LIST",ge[ge.IDENT_VALUE=2]="IDENT_VALUE",ge[ge.TYPE_VALUE=3]="TYPE_VALUE",ge[ge.TOKEN_VALUE=4]="TOKEN_VALUE",(Fe=Ee||(Ee={}))[Fe.BORDER_BOX=0]="BORDER_BOX",Fe[Fe.PADDING_BOX=1]="PADDING_BOX";function de(A){var e=we(A[0]),t=A[1];return t&&qA(t)?{color:e,stop:t}:{color:e,stop:null}}function fe(A,t){var e=A[0],r=A[A.length-1];null===e.stop&&(e.stop=se),null===r.stop&&(r.stop=ie);for(var n=[],B=0,s=0;s<A.length;s++){var o=A[s].stop;if(null!==o){var i=ae(o,t);B<i?n.push(i):n.push(B),B=i}else n.push(null)}var a=null;for(s=0;s<n.length;s++){var c=n[s];if(null===c)null===a&&(a=s);else if(null!==a){for(var Q=s-a,w=(c-n[a-1])/(1+Q),u=1;u<=Q;u++)n[a+u-1]=w*u;a=null}}return A.map(function(A,e){return{color:A.color,stop:Math.max(Math.min(1,n[e]/t),0)}})}function pe(A,e,t){var r="number"==typeof A?A:function(A,e,t){var r=e/2,n=t/2,B=ae(A[0],e)-r,s=n-ae(A[1],t);return(Math.atan2(s,B)+2*Math.PI)%(2*Math.PI)}(A,e,t),n=Math.abs(e*Math.sin(r))+Math.abs(t*Math.cos(r)),B=e/2,s=t/2,o=n/2,i=Math.sin(r-Math.PI/2)*o,a=Math.cos(r-Math.PI/2)*o;return[n,B-a,B+a,s-i,s+i]}function Ne(A,e){return Math.sqrt(A*A+e*e)}function Ke(A,e,B,s,o){return[[0,0],[0,e],[A,0],[A,e]].reduce(function(A,e){var t=e[0],r=e[1],n=Ne(B-t,s-r);return(o?n<A.optimumDistance:n>A.optimumDistance)?{optimumCorner:e,optimumDistance:n}:A},{optimumDistance:o?1/0:-1/0,optimumCorner:null}).optimumCorner}function Ie(A){var n=Qe(180),B=[];return WA(A).forEach(function(A,e){if(0===e){var t=A[0];if(t.type===sA.IDENT_TOKEN&&-1!==["top","left","right","bottom"].indexOf(t.value))return void(n=Ae(A));if($A(t))return void(n=(ce(t)+Qe(270))%Qe(360))}var r=de(A);B.push(r)}),{angle:n,stops:B,type:xe.LINEAR_GRADIENT}}function Te(A){return 0===A[0]&&255===A[1]&&0===A[2]&&255===A[3]}var me={name:"background-clip",initialValue:"border-box",prefix:!(Fe[Fe.CONTENT_BOX=2]="CONTENT_BOX"),type:Ce.LIST,parse:function(A){return A.map(function(A){if(zA(A))switch(A.value){case"padding-box":return Ee.PADDING_BOX;case"content-box":return Ee.CONTENT_BOX}return Ee.BORDER_BOX})}},Re={name:"background-color",initialValue:"transparent",prefix:!1,type:Ce.TYPE_VALUE,format:"color"},Le=function(A,e,t,r,n){var B="http://www.w3.org/2000/svg",s=document.createElementNS(B,"svg"),o=document.createElementNS(B,"foreignObject");return s.setAttributeNS(null,"width",A.toString()),s.setAttributeNS(null,"height",e.toString()),o.setAttributeNS(null,"width","100%"),o.setAttributeNS(null,"height","100%"),o.setAttributeNS(null,"x",t.toString()),o.setAttributeNS(null,"y",r.toString()),o.setAttributeNS(null,"externalResourcesRequired","true"),s.appendChild(o),o.appendChild(n),s},ve=function(r){return new Promise(function(A,e){var t=new Image;t.onload=function(){return A(t)},t.onerror=e,t.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent((new XMLSerializer).serializeToString(r))})},Oe={get SUPPORT_RANGE_BOUNDS(){var A=function(A){if(A.createRange){var e=A.createRange();if(e.getBoundingClientRect){var t=A.createElement("boundtest");t.style.height="123px",t.style.display="block",A.body.appendChild(t),e.selectNode(t);var r=e.getBoundingClientRect(),n=Math.round(r.height);if(A.body.removeChild(t),123===n)return!0}}return!1}(document);return Object.defineProperty(Oe,"SUPPORT_RANGE_BOUNDS",{value:A}),A},get SUPPORT_SVG_DRAWING(){var A=function(A){var e=new Image,t=A.createElement("canvas"),r=t.getContext("2d");if(!r)return!1;e.src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";try{r.drawImage(e,0,0),t.toDataURL()}catch(A){return!1}return!0}(document);return Object.defineProperty(Oe,"SUPPORT_SVG_DRAWING",{value:A}),A},get SUPPORT_FOREIGNOBJECT_DRAWING(){var A="function"==typeof Array.from&&"function"==typeof window.fetch?function(r){var A=r.createElement("canvas"),n=100;A.width=n,A.height=n;var B=A.getContext("2d");if(!B)return Promise.reject(!1);B.fillStyle="rgb(0, 255, 0)",B.fillRect(0,0,n,n);var e=new Image,s=A.toDataURL();e.src=s;var t=Le(n,n,0,0,e);return B.fillStyle="red",B.fillRect(0,0,n,n),ve(t).then(function(A){B.drawImage(A,0,0);var e=B.getImageData(0,0,n,n).data;B.fillStyle="red",B.fillRect(0,0,n,n);var t=r.createElement("div");return t.style.backgroundImage="url("+s+")",t.style.height="100px",Te(e)?ve(Le(n,n,0,0,t)):Promise.reject(!1)}).then(function(A){return B.drawImage(A,0,0),Te(B.getImageData(0,0,n,n).data)}).catch(function(){return!1})}(document):Promise.resolve(!1);return Object.defineProperty(Oe,"SUPPORT_FOREIGNOBJECT_DRAWING",{value:A}),A},get SUPPORT_CORS_IMAGES(){var A=void 0!==(new Image).crossOrigin;return Object.defineProperty(Oe,"SUPPORT_CORS_IMAGES",{value:A}),A},get SUPPORT_RESPONSE_TYPE(){var A="string"==typeof(new XMLHttpRequest).responseType;return Object.defineProperty(Oe,"SUPPORT_RESPONSE_TYPE",{value:A}),A},get SUPPORT_CORS_XHR(){var A="withCredentials"in new XMLHttpRequest;return Object.defineProperty(Oe,"SUPPORT_CORS_XHR",{value:A}),A}},De=(be.prototype.debug=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&("undefined"!=typeof window&&window.console&&"function"==typeof console.debug?console.debug.apply(console,[this.id,this.getTime()+"ms"].concat(A)):this.info.apply(this,A))},be.prototype.getTime=function(){return Date.now()-this.start},be.create=function(A){be.instances[A.id]=new be(A)},be.destroy=function(A){delete be.instances[A]},be.getInstance=function(A){var e=be.instances[A];if(void 0===e)throw new Error("No logger instance found with id "+A);return e},be.prototype.info=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&"undefined"!=typeof window&&window.console&&"function"==typeof console.info&&console.info.apply(console,[this.id,this.getTime()+"ms"].concat(A))},be.prototype.error=function(){for(var A=[],e=0;e<arguments.length;e++)A[e]=arguments[e];this.enabled&&("undefined"!=typeof window&&window.console&&"function"==typeof console.error?console.error.apply(console,[this.id,this.getTime()+"ms"].concat(A)):this.info.apply(this,A))},be.instances={},be);function be(A){var e=A.id,t=A.enabled;this.id=e,this.enabled=t,this.start=Date.now()}var Se=(Me.create=function(A,e){return Me._caches[A]=new ye(A,e)},Me.destroy=function(A){delete Me._caches[A]},Me.open=function(A){var e=Me._caches[A];if(void 0!==e)return e;throw new Error('Cache with key "'+A+'" not found')},Me.getOrigin=function(A){var e=Me._link;return e?(e.href=A,e.href=e.href,e.protocol+e.hostname+e.port):"about:blank"},Me.isSameOrigin=function(A){return Me.getOrigin(A)===Me._origin},Me.setContext=function(A){Me._link=A.document.createElement("a"),Me._origin=Me.getOrigin(A.location.href)},Me.getInstance=function(){var A=Me._current;if(null===A)throw new Error("No cache instance attached");return A},Me.attachInstance=function(A){Me._current=A},Me.detachInstance=function(){Me._current=null},Me._caches={},Me._origin="about:blank",Me._current=null,Me);function Me(){}var ye=(_e.prototype.addImage=function(A){var e=Promise.resolve();return this.has(A)||(Ye(A)||Ge(A))&&(this._cache[A]=this.loadImage(A)),e},_e.prototype.match=function(A){return this._cache[A]},_e.prototype.loadImage=function(s){return a(this,void 0,void 0,function(){var e,r,t,n,B=this;return S(this,function(A){switch(A.label){case 0:return e=Se.isSameOrigin(s),r=!ke(s)&&!0===this._options.useCORS&&Oe.SUPPORT_CORS_IMAGES&&!e,t=!ke(s)&&!e&&"string"==typeof this._options.proxy&&Oe.SUPPORT_CORS_XHR&&!r,e||!1!==this._options.allowTaint||ke(s)||t||r?(n=s,t?[4,this.proxy(n)]:[3,2]):[2];case 1:n=A.sent(),A.label=2;case 2:return De.getInstance(this.id).debug("Added image "+s.substring(0,256)),[4,new Promise(function(A,e){var t=new Image;t.onload=function(){return A(t)},t.onerror=e,(We(n)||r)&&(t.crossOrigin="anonymous"),t.src=n,!0===t.complete&&setTimeout(function(){return A(t)},500),0<B._options.imageTimeout&&setTimeout(function(){return e("Timed out ("+B._options.imageTimeout+"ms) loading image")},B._options.imageTimeout)})];case 3:return[2,A.sent()]}})})},_e.prototype.has=function(A){return void 0!==this._cache[A]},_e.prototype.keys=function(){return Promise.resolve(Object.keys(this._cache))},_e.prototype.proxy=function(B){var s=this,o=this._options.proxy;if(!o)throw new Error("No proxy defined");var i=B.substring(0,256);return new Promise(function(e,t){var r=Oe.SUPPORT_RESPONSE_TYPE?"blob":"text",n=new XMLHttpRequest;if(n.onload=function(){if(200===n.status)if("text"==r)e(n.response);else{var A=new FileReader;A.addEventListener("load",function(){return e(A.result)},!1),A.addEventListener("error",function(A){return t(A)},!1),A.readAsDataURL(n.response)}else t("Failed to proxy resource "+i+" with status code "+n.status)},n.onerror=t,n.open("GET",o+"?url="+encodeURIComponent(B)+"&responseType="+r),"text"!=r&&n instanceof XMLHttpRequest&&(n.responseType=r),s._options.imageTimeout){var A=s._options.imageTimeout;n.timeout=A,n.ontimeout=function(){return t("Timed out ("+A+"ms) proxying "+i)}}n.send()})},_e);function _e(A,e){this.id=A,this._options=e,this._cache={}}function Pe(A){var n=rt.CIRCLE,B=Bt.FARTHEST_CORNER,s=[],o=[];return WA(A).forEach(function(A,e){var t=!0;if(0===e?t=A.reduce(function(A,e){if(zA(e))switch(e.value){case"center":return o.push(oe),!1;case"top":case"left":return o.push(se),!1;case"right":case"bottom":return o.push(ie),!1}else if(qA(e)||YA(e))return o.push(e),!1;return A},t):1===e&&(t=A.reduce(function(A,e){if(zA(e))switch(e.value){case"circle":return n=rt.CIRCLE,!1;case et:return n=rt.ELLIPSE,!1;case tt:case Ze:return B=Bt.CLOSEST_SIDE,!1;case je:return B=Bt.FARTHEST_SIDE,!1;case $e:return B=Bt.CLOSEST_CORNER,!1;case"cover":case At:return B=Bt.FARTHEST_CORNER,!1}else if(YA(e)||qA(e))return Array.isArray(B)||(B=[]),B.push(e),!1;return A},t)),t){var r=de(A);s.push(r)}}),{size:B,shape:n,stops:s,position:o,type:xe.RADIAL_GRADIENT}}var xe,Ve,ze=/^data:image\/svg\+xml/i,Xe=/^data:image\/.*;base64,/i,Je=/^data:image\/.*/i,Ge=function(A){return Oe.SUPPORT_SVG_DRAWING||!qe(A)},ke=function(A){return Je.test(A)},We=function(A){return Xe.test(A)},Ye=function(A){return"blob"===A.substr(0,4)},qe=function(A){return"svg"===A.substr(-3).toLowerCase()||ze.test(A)},Ze="closest-side",je="farthest-side",$e="closest-corner",At="farthest-corner",et="ellipse",tt="contain";(Ve=xe||(xe={}))[Ve.URL=0]="URL",Ve[Ve.LINEAR_GRADIENT=1]="LINEAR_GRADIENT",Ve[Ve.RADIAL_GRADIENT=2]="RADIAL_GRADIENT";var rt,nt,Bt,st;(nt=rt||(rt={}))[nt.CIRCLE=0]="CIRCLE",nt[nt.ELLIPSE=1]="ELLIPSE",(st=Bt||(Bt={}))[st.CLOSEST_SIDE=0]="CLOSEST_SIDE",st[st.FARTHEST_SIDE=1]="FARTHEST_SIDE",st[st.CLOSEST_CORNER=2]="CLOSEST_CORNER",st[st.FARTHEST_CORNER=3]="FARTHEST_CORNER";var ot=function(A){if(A.type===sA.URL_TOKEN){var e={url:A.value,type:xe.URL};return Se.getInstance().addImage(A.value),e}if(A.type!==sA.FUNCTION)throw new Error("Unsupported image type");var t=ct[A.name];if(void 0===t)throw new Error('Attempting to parse an unsupported image function "'+A.name+'"');return t(A.values)};var it,at,ct={"linear-gradient":function(A){var n=Qe(180),B=[];return WA(A).forEach(function(A,e){if(0===e){var t=A[0];if(t.type===sA.IDENT_TOKEN&&"to"===t.value)return void(n=Ae(A));if($A(t))return void(n=ce(t))}var r=de(A);B.push(r)}),{angle:n,stops:B,type:xe.LINEAR_GRADIENT}},"-moz-linear-gradient":Ie,"-ms-linear-gradient":Ie,"-o-linear-gradient":Ie,"-webkit-linear-gradient":Ie,"radial-gradient":function(A){var B=rt.CIRCLE,s=Bt.FARTHEST_CORNER,o=[],i=[];return WA(A).forEach(function(A,e){var t=!0;if(0===e){var r=!1;t=A.reduce(function(A,e){if(r)if(zA(e))switch(e.value){case"center":return i.push(oe),A;case"top":case"left":return i.push(se),A;case"right":case"bottom":return i.push(ie),A}else(qA(e)||YA(e))&&i.push(e);else if(zA(e))switch(e.value){case"circle":return B=rt.CIRCLE,!1;case et:return B=rt.ELLIPSE,!1;case"at":return!(r=!0);case Ze:return s=Bt.CLOSEST_SIDE,!1;case"cover":case je:return s=Bt.FARTHEST_SIDE,!1;case tt:case $e:return s=Bt.CLOSEST_CORNER,!1;case At:return s=Bt.FARTHEST_CORNER,!1}else if(YA(e)||qA(e))return Array.isArray(s)||(s=[]),s.push(e),!1;return A},t)}if(t){var n=de(A);o.push(n)}}),{size:s,shape:B,stops:o,position:i,type:xe.RADIAL_GRADIENT}},"-moz-radial-gradient":Pe,"-ms-radial-gradient":Pe,"-o-radial-gradient":Pe,"-webkit-radial-gradient":Pe,"-webkit-gradient":function(A){var e=Qe(180),s=[],o=xe.LINEAR_GRADIENT,t=rt.CIRCLE,r=Bt.FARTHEST_CORNER;return WA(A).forEach(function(A,e){var t=A[0];if(0===e){if(zA(t)&&"linear"===t.value)return void(o=xe.LINEAR_GRADIENT);if(zA(t)&&"radial"===t.value)return void(o=xe.RADIAL_GRADIENT)}if(t.type===sA.FUNCTION)if("from"===t.name){var r=we(t.values[0]);s.push({stop:se,color:r})}else if("to"===t.name)r=we(t.values[0]),s.push({stop:ie,color:r});else if("color-stop"===t.name){var n=t.values.filter(kA);if(2===n.length){r=we(n[1]);var B=n[0];VA(B)&&s.push({stop:{type:sA.PERCENTAGE_TOKEN,number:100*B.number,flags:B.flags},color:r})}}}),o===xe.LINEAR_GRADIENT?{angle:(e+Qe(180))%Qe(360),stops:s,type:o}:{size:r,shape:t,stops:s,position:[],type:o}}},Qt={name:"background-image",initialValue:"none",type:Ce.LIST,prefix:!1,parse:function(A){if(0===A.length)return[];var e=A[0];return e.type===sA.IDENT_TOKEN&&"none"===e.value?[]:A.filter(function(A){return kA(A)&&function(A){return A.type!==sA.FUNCTION||ct[A.name]}(A)}).map(ot)}},wt={name:"background-origin",initialValue:"border-box",prefix:!1,type:Ce.LIST,parse:function(A){return A.map(function(A){if(zA(A))switch(A.value){case"padding-box":return 1;case"content-box":return 2}return 0})}},ut={name:"background-position",initialValue:"0% 0%",type:Ce.LIST,prefix:!1,parse:function(A){return WA(A).map(function(A){return A.filter(qA)}).map(ZA)}};(at=it||(it={}))[at.REPEAT=0]="REPEAT",at[at.NO_REPEAT=1]="NO_REPEAT",at[at.REPEAT_X=2]="REPEAT_X";var Ut,lt,Ct={name:"background-repeat",initialValue:"repeat",prefix:!(at[at.REPEAT_Y=3]="REPEAT_Y"),type:Ce.LIST,parse:function(A){return WA(A).map(function(A){return A.filter(zA).map(function(A){return A.value}).join(" ")}).map(gt)}},gt=function(A){switch(A){case"no-repeat":return it.NO_REPEAT;case"repeat-x":case"repeat no-repeat":return it.REPEAT_X;case"repeat-y":case"no-repeat repeat":return it.REPEAT_Y;case"repeat":default:return it.REPEAT}};(lt=Ut||(Ut={})).AUTO="auto",lt.CONTAIN="contain";function Et(A){return{name:"border-"+A+"-color",initialValue:"transparent",prefix:!1,type:Ce.TYPE_VALUE,format:"color"}}function Ft(A){return{name:"border-radius-"+A,initialValue:"0 0",prefix:!1,type:Ce.LIST,parse:function(A){return ZA(A.filter(qA))}}}var ht,Ht,dt={name:"background-size",initialValue:"0",prefix:!(lt.COVER="cover"),type:Ce.LIST,parse:function(A){return WA(A).map(function(A){return A.filter(ft)})}},ft=function(A){return zA(A)||qA(A)},pt=Et("top"),Nt=Et("right"),Kt=Et("bottom"),It=Et("left"),Tt=Ft("top-left"),mt=Ft("top-right"),Rt=Ft("bottom-right"),Lt=Ft("bottom-left");(Ht=ht||(ht={}))[Ht.NONE=0]="NONE",Ht[Ht.SOLID=1]="SOLID";function vt(A){return{name:"border-"+A+"-style",initialValue:"solid",prefix:!1,type:Ce.IDENT_VALUE,parse:function(A){switch(A){case"none":return ht.NONE}return ht.SOLID}}}function Ot(A){return{name:"border-"+A+"-width",initialValue:"0",type:Ce.VALUE,prefix:!1,parse:function(A){return xA(A)?A.number:0}}}var Dt,bt,St=vt("top"),Mt=vt("right"),yt=vt("bottom"),_t=vt("left"),Pt=Ot("top"),xt=Ot("right"),Vt=Ot("bottom"),zt=Ot("left"),Xt={name:"color",initialValue:"transparent",prefix:!1,type:Ce.TYPE_VALUE,format:"color"},Jt={name:"display",initialValue:"inline-block",prefix:!1,type:Ce.LIST,parse:function(A){return A.filter(zA).reduce(function(A,e){return A|Gt(e.value)},0)}},Gt=function(A){switch(A){case"block":return 2;case"inline":return 4;case"run-in":return 8;case"flow":return 16;case"flow-root":return 32;case"table":return 64;case"flex":case"-webkit-flex":return 128;case"grid":case"-ms-grid":return 256;case"ruby":return 512;case"subgrid":return 1024;case"list-item":return 2048;case"table-row-group":return 4096;case"table-header-group":return 8192;case"table-footer-group":return 16384;case"table-row":return 32768;case"table-cell":return 65536;case"table-column-group":return 131072;case"table-column":return 262144;case"table-caption":return 524288;case"ruby-base":return 1048576;case"ruby-text":return 2097152;case"ruby-base-container":return 4194304;case"ruby-text-container":return 8388608;case"contents":return 16777216;case"inline-block":return 33554432;case"inline-list-item":return 67108864;case"inline-table":return 134217728;case"inline-flex":return 268435456;case"inline-grid":return 536870912}return 0};(bt=Dt||(Dt={}))[bt.NONE=0]="NONE",bt[bt.LEFT=1]="LEFT",bt[bt.RIGHT=2]="RIGHT",bt[bt.INLINE_START=3]="INLINE_START";var kt,Wt,Yt,qt,Zt={name:"float",initialValue:"none",prefix:!(bt[bt.INLINE_END=4]="INLINE_END"),type:Ce.IDENT_VALUE,parse:function(A){switch(A){case"left":return Dt.LEFT;case"right":return Dt.RIGHT;case"inline-start":return Dt.INLINE_START;case"inline-end":return Dt.INLINE_END}return Dt.NONE}},jt={name:"letter-spacing",initialValue:"0",prefix:!1,type:Ce.VALUE,parse:function(A){return A.type===sA.IDENT_TOKEN&&"normal"===A.value?0:A.type===sA.NUMBER_TOKEN?A.number:A.type===sA.DIMENSION_TOKEN?A.number:0}},$t={name:"line-break",initialValue:(Wt=kt||(kt={})).NORMAL="normal",prefix:!(Wt.STRICT="strict"),type:Ce.IDENT_VALUE,parse:function(A){switch(A){case"strict":return kt.STRICT;case"normal":default:return kt.NORMAL}}},Ar={name:"line-height",initialValue:"normal",prefix:!1,type:Ce.TOKEN_VALUE},er={name:"list-style-image",initialValue:"none",type:Ce.VALUE,prefix:!1,parse:function(A){return A.type===sA.IDENT_TOKEN&&"none"===A.value?null:ot(A)}};(qt=Yt||(Yt={}))[qt.INSIDE=0]="INSIDE";var tr,rr,nr={name:"list-style-position",initialValue:"outside",prefix:!(qt[qt.OUTSIDE=1]="OUTSIDE"),type:Ce.IDENT_VALUE,parse:function(A){switch(A){case"inside":return Yt.INSIDE;case"outside":default:return Yt.OUTSIDE}}};(rr=tr||(tr={}))[rr.NONE=-1]="NONE",rr[rr.DISC=0]="DISC",rr[rr.CIRCLE=1]="CIRCLE",rr[rr.SQUARE=2]="SQUARE",rr[rr.DECIMAL=3]="DECIMAL",rr[rr.CJK_DECIMAL=4]="CJK_DECIMAL",rr[rr.DECIMAL_LEADING_ZERO=5]="DECIMAL_LEADING_ZERO",rr[rr.LOWER_ROMAN=6]="LOWER_ROMAN",rr[rr.UPPER_ROMAN=7]="UPPER_ROMAN",rr[rr.LOWER_GREEK=8]="LOWER_GREEK",rr[rr.LOWER_ALPHA=9]="LOWER_ALPHA",rr[rr.UPPER_ALPHA=10]="UPPER_ALPHA",rr[rr.ARABIC_INDIC=11]="ARABIC_INDIC",rr[rr.ARMENIAN=12]="ARMENIAN",rr[rr.BENGALI=13]="BENGALI",rr[rr.CAMBODIAN=14]="CAMBODIAN",rr[rr.CJK_EARTHLY_BRANCH=15]="CJK_EARTHLY_BRANCH",rr[rr.CJK_HEAVENLY_STEM=16]="CJK_HEAVENLY_STEM",rr[rr.CJK_IDEOGRAPHIC=17]="CJK_IDEOGRAPHIC",rr[rr.DEVANAGARI=18]="DEVANAGARI",rr[rr.ETHIOPIC_NUMERIC=19]="ETHIOPIC_NUMERIC",rr[rr.GEORGIAN=20]="GEORGIAN",rr[rr.GUJARATI=21]="GUJARATI",rr[rr.GURMUKHI=22]="GURMUKHI",rr[rr.HEBREW=22]="HEBREW",rr[rr.HIRAGANA=23]="HIRAGANA",rr[rr.HIRAGANA_IROHA=24]="HIRAGANA_IROHA",rr[rr.JAPANESE_FORMAL=25]="JAPANESE_FORMAL",rr[rr.JAPANESE_INFORMAL=26]="JAPANESE_INFORMAL",rr[rr.KANNADA=27]="KANNADA",rr[rr.KATAKANA=28]="KATAKANA",rr[rr.KATAKANA_IROHA=29]="KATAKANA_IROHA",rr[rr.KHMER=30]="KHMER",rr[rr.KOREAN_HANGUL_FORMAL=31]="KOREAN_HANGUL_FORMAL",rr[rr.KOREAN_HANJA_FORMAL=32]="KOREAN_HANJA_FORMAL",rr[rr.KOREAN_HANJA_INFORMAL=33]="KOREAN_HANJA_INFORMAL",rr[rr.LAO=34]="LAO",rr[rr.LOWER_ARMENIAN=35]="LOWER_ARMENIAN",rr[rr.MALAYALAM=36]="MALAYALAM",rr[rr.MONGOLIAN=37]="MONGOLIAN",rr[rr.MYANMAR=38]="MYANMAR",rr[rr.ORIYA=39]="ORIYA",rr[rr.PERSIAN=40]="PERSIAN",rr[rr.SIMP_CHINESE_FORMAL=41]="SIMP_CHINESE_FORMAL",rr[rr.SIMP_CHINESE_INFORMAL=42]="SIMP_CHINESE_INFORMAL",rr[rr.TAMIL=43]="TAMIL",rr[rr.TELUGU=44]="TELUGU",rr[rr.THAI=45]="THAI",rr[rr.TIBETAN=46]="TIBETAN",rr[rr.TRAD_CHINESE_FORMAL=47]="TRAD_CHINESE_FORMAL",rr[rr.TRAD_CHINESE_INFORMAL=48]="TRAD_CHINESE_INFORMAL",rr[rr.UPPER_ARMENIAN=49]="UPPER_ARMENIAN",rr[rr.DISCLOSURE_OPEN=50]="DISCLOSURE_OPEN";function Br(A){return{name:"margin-"+A,initialValue:"0",prefix:!1,type:Ce.TOKEN_VALUE}}var sr,or,ir={name:"list-style-type",initialValue:"none",prefix:!(rr[rr.DISCLOSURE_CLOSED=51]="DISCLOSURE_CLOSED"),type:Ce.IDENT_VALUE,parse:function(A){switch(A){case"disc":return tr.DISC;case"circle":return tr.CIRCLE;case"square":return tr.SQUARE;case"decimal":return tr.DECIMAL;case"cjk-decimal":return tr.CJK_DECIMAL;case"decimal-leading-zero":return tr.DECIMAL_LEADING_ZERO;case"lower-roman":return tr.LOWER_ROMAN;case"upper-roman":return tr.UPPER_ROMAN;case"lower-greek":return tr.LOWER_GREEK;case"lower-alpha":return tr.LOWER_ALPHA;case"upper-alpha":return tr.UPPER_ALPHA;case"arabic-indic":return tr.ARABIC_INDIC;case"armenian":return tr.ARMENIAN;case"bengali":return tr.BENGALI;case"cambodian":return tr.CAMBODIAN;case"cjk-earthly-branch":return tr.CJK_EARTHLY_BRANCH;case"cjk-heavenly-stem":return tr.CJK_HEAVENLY_STEM;case"cjk-ideographic":return tr.CJK_IDEOGRAPHIC;case"devanagari":return tr.DEVANAGARI;case"ethiopic-numeric":return tr.ETHIOPIC_NUMERIC;case"georgian":return tr.GEORGIAN;case"gujarati":return tr.GUJARATI;case"gurmukhi":return tr.GURMUKHI;case"hebrew":return tr.HEBREW;case"hiragana":return tr.HIRAGANA;case"hiragana-iroha":return tr.HIRAGANA_IROHA;case"japanese-formal":return tr.JAPANESE_FORMAL;case"japanese-informal":return tr.JAPANESE_INFORMAL;case"kannada":return tr.KANNADA;case"katakana":return tr.KATAKANA;case"katakana-iroha":return tr.KATAKANA_IROHA;case"khmer":return tr.KHMER;case"korean-hangul-formal":return tr.KOREAN_HANGUL_FORMAL;case"korean-hanja-formal":return tr.KOREAN_HANJA_FORMAL;case"korean-hanja-informal":return tr.KOREAN_HANJA_INFORMAL;case"lao":return tr.LAO;case"lower-armenian":return tr.LOWER_ARMENIAN;case"malayalam":return tr.MALAYALAM;case"mongolian":return tr.MONGOLIAN;case"myanmar":return tr.MYANMAR;case"oriya":return tr.ORIYA;case"persian":return tr.PERSIAN;case"simp-chinese-formal":return tr.SIMP_CHINESE_FORMAL;case"simp-chinese-informal":return tr.SIMP_CHINESE_INFORMAL;case"tamil":return tr.TAMIL;case"telugu":return tr.TELUGU;case"thai":return tr.THAI;case"tibetan":return tr.TIBETAN;case"trad-chinese-formal":return tr.TRAD_CHINESE_FORMAL;case"trad-chinese-informal":return tr.TRAD_CHINESE_INFORMAL;case"upper-armenian":return tr.UPPER_ARMENIAN;case"disclosure-open":return tr.DISCLOSURE_OPEN;case"disclosure-closed":return tr.DISCLOSURE_CLOSED;case"none":default:return tr.NONE}}},ar=Br("top"),cr=Br("right"),Qr=Br("bottom"),wr=Br("left");(or=sr||(sr={}))[or.VISIBLE=0]="VISIBLE",or[or.HIDDEN=1]="HIDDEN",or[or.SCROLL=2]="SCROLL";function ur(A){return{name:"padding-"+A,initialValue:"0",prefix:!1,type:Ce.TYPE_VALUE,format:"length-percentage"}}var Ur,lr,Cr,gr,Er={name:"overflow",initialValue:"visible",prefix:!(or[or.AUTO=3]="AUTO"),type:Ce.LIST,parse:function(A){return A.filter(zA).map(function(A){switch(A.value){case"hidden":return sr.HIDDEN;case"scroll":return sr.SCROLL;case"auto":return sr.AUTO;case"visible":default:return sr.VISIBLE}})}},Fr={name:"overflow-wrap",initialValue:(lr=Ur||(Ur={})).NORMAL="normal",prefix:!(lr.BREAK_WORD="break-word"),type:Ce.IDENT_VALUE,parse:function(A){switch(A){case"break-word":return Ur.BREAK_WORD;case"normal":default:return Ur.NORMAL}}},hr=ur("top"),Hr=ur("right"),dr=ur("bottom"),fr=ur("left");(gr=Cr||(Cr={}))[gr.LEFT=0]="LEFT",gr[gr.CENTER=1]="CENTER";var pr,Nr,Kr={name:"text-align",initialValue:"left",prefix:!(gr[gr.RIGHT=2]="RIGHT"),type:Ce.IDENT_VALUE,parse:function(A){switch(A){case"right":return Cr.RIGHT;case"center":case"justify":return Cr.CENTER;case"left":default:return Cr.LEFT}}};(Nr=pr||(pr={}))[Nr.STATIC=0]="STATIC",Nr[Nr.RELATIVE=1]="RELATIVE",Nr[Nr.ABSOLUTE=2]="ABSOLUTE",Nr[Nr.FIXED=3]="FIXED";var Ir,Tr,mr={name:"position",initialValue:"static",prefix:!(Nr[Nr.STICKY=4]="STICKY"),type:Ce.IDENT_VALUE,parse:function(A){switch(A){case"relative":return pr.RELATIVE;case"absolute":return pr.ABSOLUTE;case"fixed":return pr.FIXED;case"sticky":return pr.STICKY}return pr.STATIC}},Rr={name:"text-shadow",initialValue:"none",type:Ce.LIST,prefix:!1,parse:function(A){return 1===A.length&&JA(A[0],"none")?[]:WA(A).map(function(A){for(var e={color:He.TRANSPARENT,offsetX:se,offsetY:se,blur:se},t=0,r=0;r<A.length;r++){var n=A[r];YA(n)?(0===t?e.offsetX=n:1===t?e.offsetY=n:e.blur=n,t++):e.color=we(n)}return e})}};(Tr=Ir||(Ir={}))[Tr.NONE=0]="NONE",Tr[Tr.LOWERCASE=1]="LOWERCASE",Tr[Tr.UPPERCASE=2]="UPPERCASE";var Lr,vr,Or={name:"text-transform",initialValue:"none",prefix:!(Tr[Tr.CAPITALIZE=3]="CAPITALIZE"),type:Ce.IDENT_VALUE,parse:function(A){switch(A){case"uppercase":return Ir.UPPERCASE;case"lowercase":return Ir.LOWERCASE;case"capitalize":return Ir.CAPITALIZE}return Ir.NONE}},Dr={name:"transform",initialValue:"none",prefix:!0,type:Ce.VALUE,parse:function(A){if(A.type===sA.IDENT_TOKEN&&"none"===A.value)return null;if(A.type!==sA.FUNCTION)return null;var e=br[A.name];if(void 0===e)throw new Error('Attempting to parse an unsupported transform function "'+A.name+'"');return e(A.values)}},br={matrix:function(A){var e=A.filter(function(A){return A.type===sA.NUMBER_TOKEN}).map(function(A){return A.number});return 6===e.length?e:null},matrix3d:function(A){var e=A.filter(function(A){return A.type===sA.NUMBER_TOKEN}).map(function(A){return A.number}),t=e[0],r=e[1],n=(e[2],e[3],e[4]),B=e[5],s=(e[6],e[7],e[8],e[9],e[10],e[11],e[12]),o=e[13];e[14],e[15];return 16===e.length?[t,r,n,B,s,o]:null}},Sr={type:sA.PERCENTAGE_TOKEN,number:50,flags:4},Mr=[Sr,Sr],yr={name:"transform-origin",initialValue:"50% 50%",prefix:!0,type:Ce.LIST,parse:function(A){var e=A.filter(qA);return 2!==e.length?Mr:[e[0],e[1]]}};(vr=Lr||(Lr={}))[vr.VISIBLE=0]="VISIBLE",vr[vr.HIDDEN=1]="HIDDEN";var _r,Pr,xr={name:"visible",initialValue:"none",prefix:!(vr[vr.COLLAPSE=2]="COLLAPSE"),type:Ce.IDENT_VALUE,parse:function(A){switch(A){case"hidden":return Lr.HIDDEN;case"collapse":return Lr.COLLAPSE;case"visible":default:return Lr.VISIBLE}}};(Pr=_r||(_r={})).NORMAL="normal",Pr.BREAK_ALL="break-all";var Vr,zr,Xr={name:"word-break",initialValue:"normal",prefix:!(Pr.KEEP_ALL="keep-all"),type:Ce.IDENT_VALUE,parse:function(A){switch(A){case"break-all":return _r.BREAK_ALL;case"keep-all":return _r.KEEP_ALL;case"normal":default:return _r.NORMAL}}},Jr={name:"z-index",initialValue:"auto",prefix:!1,type:Ce.VALUE,parse:function(A){if(A.type===sA.IDENT_TOKEN)return{auto:!0,order:0};if(VA(A))return{auto:!1,order:A.number};throw new Error("Invalid z-index number parsed")}},Gr={name:"opacity",initialValue:"1",type:Ce.VALUE,prefix:!1,parse:function(A){return VA(A)?A.number:1}},kr={name:"text-decoration-color",initialValue:"transparent",prefix:!1,type:Ce.TYPE_VALUE,format:"color"},Wr={name:"text-decoration-line",initialValue:"none",prefix:!1,type:Ce.LIST,parse:function(A){return A.filter(zA).map(function(A){switch(A.value){case"underline":return 1;case"overline":return 2;case"line-through":return 3;case"none":return 4}return 0}).filter(function(A){return 0!==A})}},Yr={name:"font-family",initialValue:"",prefix:!1,type:Ce.LIST,parse:function(A){return A.filter(qr).map(function(A){return A.value})}},qr=function(A){return A.type===sA.STRING_TOKEN||A.type===sA.IDENT_TOKEN},Zr={name:"font-size",initialValue:"0",prefix:!1,type:Ce.TYPE_VALUE,format:"length"},jr={name:"font-weight",initialValue:"normal",type:Ce.VALUE,prefix:!1,parse:function(A){if(VA(A))return A.number;if(zA(A))switch(A.value){case"bold":return 700;case"normal":default:return 400}return 400}},$r={name:"font-variant",initialValue:"none",type:Ce.LIST,prefix:!1,parse:function(A){return A.filter(zA).map(function(A){return A.value})}};(zr=Vr||(Vr={})).NORMAL="normal",zr.ITALIC="italic";function An(A,e){return 0!=(A&e)}function en(A,e,t){if(!A)return"";var r=A[Math.min(e,A.length-1)];return r?t?r.open:r.close:""}var tn={name:"font-style",initialValue:"normal",prefix:!(zr.OBLIQUE="oblique"),type:Ce.IDENT_VALUE,parse:function(A){switch(A){case"oblique":return Vr.OBLIQUE;case"italic":return Vr.ITALIC;case"normal":default:return Vr.NORMAL}}},rn={name:"content",initialValue:"none",type:Ce.LIST,prefix:!1,parse:function(A){if(0===A.length)return[];var e=A[0];return e.type===sA.IDENT_TOKEN&&"none"===e.value?[]:A}},nn={name:"counter-increment",initialValue:"none",prefix:!0,type:Ce.LIST,parse:function(A){if(0===A.length)return null;var e=A[0];if(e.type===sA.IDENT_TOKEN&&"none"===e.value)return null;for(var t=[],r=A.filter(GA),n=0;n<r.length;n++){var B=r[n],s=r[n+1];if(B.type===sA.IDENT_TOKEN){var o=s&&VA(s)?s.number:1;t.push({counter:B.value,increment:o})}}return t}},Bn={name:"counter-reset",initialValue:"none",prefix:!0,type:Ce.LIST,parse:function(A){if(0===A.length)return[];for(var e=[],t=A.filter(GA),r=0;r<t.length;r++){var n=t[r],B=t[r+1];if(zA(n)&&"none"!==n.value){var s=B&&VA(B)?B.number:0;e.push({counter:n.value,reset:s})}}return e}},sn={name:"quotes",initialValue:"none",prefix:!0,type:Ce.LIST,parse:function(A){if(0===A.length)return null;var e=A[0];if(e.type===sA.IDENT_TOKEN&&"none"===e.value)return null;var t=[],r=A.filter(XA);if(r.length%2!=0)return null;for(var n=0;n<r.length;n+=2){var B=r[n].value,s=r[n+1].value;t.push({open:B,close:s})}return t}},on={name:"box-shadow",initialValue:"none",type:Ce.LIST,prefix:!1,parse:function(A){return 1===A.length&&JA(A[0],"none")?[]:WA(A).map(function(A){for(var e={color:255,offsetX:se,offsetY:se,blur:se,spread:se,inset:!1},t=0,r=0;r<A.length;r++){var n=A[r];JA(n,"inset")?e.inset=!0:YA(n)?(0===t?e.offsetX=n:1===t?e.offsetY=n:2===t?e.blur=n:e.spread=n,t++):e.color=we(n)}return e})}},an=(cn.prototype.isVisible=function(){return 0<this.display&&0<this.opacity&&this.visibility===Lr.VISIBLE},cn.prototype.isTransparent=function(){return ee(this.backgroundColor)},cn.prototype.isTransformed=function(){return null!==this.transform},cn.prototype.isPositioned=function(){return this.position!==pr.STATIC},cn.prototype.isPositionedWithZIndex=function(){return this.isPositioned()&&!this.zIndex.auto},cn.prototype.isFloating=function(){return this.float!==Dt.NONE},cn.prototype.isInlineLevel=function(){return An(this.display,4)||An(this.display,33554432)||An(this.display,268435456)||An(this.display,536870912)||An(this.display,67108864)||An(this.display,134217728)},cn);function cn(A){this.backgroundClip=Un(me,A.backgroundClip),this.backgroundColor=Un(Re,A.backgroundColor),this.backgroundImage=Un(Qt,A.backgroundImage),this.backgroundOrigin=Un(wt,A.backgroundOrigin),this.backgroundPosition=Un(ut,A.backgroundPosition),this.backgroundRepeat=Un(Ct,A.backgroundRepeat),this.backgroundSize=Un(dt,A.backgroundSize),this.borderTopColor=Un(pt,A.borderTopColor),this.borderRightColor=Un(Nt,A.borderRightColor),this.borderBottomColor=Un(Kt,A.borderBottomColor),this.borderLeftColor=Un(It,A.borderLeftColor),this.borderTopLeftRadius=Un(Tt,A.borderTopLeftRadius),this.borderTopRightRadius=Un(mt,A.borderTopRightRadius),this.borderBottomRightRadius=Un(Rt,A.borderBottomRightRadius),this.borderBottomLeftRadius=Un(Lt,A.borderBottomLeftRadius),this.borderTopStyle=Un(St,A.borderTopStyle),this.borderRightStyle=Un(Mt,A.borderRightStyle),this.borderBottomStyle=Un(yt,A.borderBottomStyle),this.borderLeftStyle=Un(_t,A.borderLeftStyle),this.borderTopWidth=Un(Pt,A.borderTopWidth),this.borderRightWidth=Un(xt,A.borderRightWidth),this.borderBottomWidth=Un(Vt,A.borderBottomWidth),this.borderLeftWidth=Un(zt,A.borderLeftWidth),this.boxShadow=Un(on,A.boxShadow),this.color=Un(Xt,A.color),this.display=Un(Jt,A.display),this.float=Un(Zt,A.cssFloat),this.fontFamily=Un(Yr,A.fontFamily),this.fontSize=Un(Zr,A.fontSize),this.fontStyle=Un(tn,A.fontStyle),this.fontVariant=Un($r,A.fontVariant),this.fontWeight=Un(jr,A.fontWeight),this.letterSpacing=Un(jt,A.letterSpacing),this.lineBreak=Un($t,A.lineBreak),this.lineHeight=Un(Ar,A.lineHeight),this.listStyleImage=Un(er,A.listStyleImage),this.listStylePosition=Un(nr,A.listStylePosition),this.listStyleType=Un(ir,A.listStyleType),this.marginTop=Un(ar,A.marginTop),this.marginRight=Un(cr,A.marginRight),this.marginBottom=Un(Qr,A.marginBottom),this.marginLeft=Un(wr,A.marginLeft),this.opacity=Un(Gr,A.opacity);var e=Un(Er,A.overflow);this.overflowX=e[0],this.overflowY=e[1<e.length?1:0],this.overflowWrap=Un(Fr,A.overflowWrap),this.paddingTop=Un(hr,A.paddingTop),this.paddingRight=Un(Hr,A.paddingRight),this.paddingBottom=Un(dr,A.paddingBottom),this.paddingLeft=Un(fr,A.paddingLeft),this.position=Un(mr,A.position),this.textAlign=Un(Kr,A.textAlign),this.textDecorationColor=Un(kr,A.textDecorationColor||A.color),this.textDecorationLine=Un(Wr,A.textDecorationLine),this.textShadow=Un(Rr,A.textShadow),this.textTransform=Un(Or,A.textTransform),this.transform=Un(Dr,A.transform),this.transformOrigin=Un(yr,A.transformOrigin),this.visibility=Un(xr,A.visibility),this.wordBreak=Un(Xr,A.wordBreak),this.zIndex=Un(Jr,A.zIndex)}var Qn,wn=function(A){this.content=Un(rn,A.content),this.quotes=Un(sn,A.quotes)},un=function(A){this.counterIncrement=Un(nn,A.counterIncrement),this.counterReset=Un(Bn,A.counterReset)},Un=function(A,e){var t=new MA,r=null!=e?e.toString():A.initialValue;t.write(r);var n=new _A(t.read());switch(A.type){case Ce.IDENT_VALUE:var B=n.parseComponentValue();return A.parse(zA(B)?B.value:A.initialValue);case Ce.VALUE:return A.parse(n.parseComponentValue());case Ce.LIST:return A.parse(n.parseComponentValues());case Ce.TOKEN_VALUE:return n.parseComponentValue();case Ce.TYPE_VALUE:switch(A.format){case"angle":return ce(n.parseComponentValue());case"color":return we(n.parseComponentValue());case"image":return ot(n.parseComponentValue());case"length":var s=n.parseComponentValue();return YA(s)?s:se;case"length-percentage":var o=n.parseComponentValue();return qA(o)?o:se}}throw new Error("Attempting to parse unsupported css format type "+A.format)},ln=function(A){this.styles=new an(window.getComputedStyle(A,null)),this.textNodes=[],this.elements=[],null!==this.styles.transform&&uB(A)&&(A.style.transform="none"),this.bounds=T(A),this.flags=0},Cn=function(A,e){this.text=A,this.bounds=e},gn=function(A){var e=A.ownerDocument;if(e){var t=e.createElement("html2canvaswrapper");t.appendChild(A.cloneNode(!0));var r=A.parentNode;if(r){r.replaceChild(t,A);var n=T(t);return t.firstChild&&r.replaceChild(t.firstChild,t),n}}return new I(0,0,0,0)},En=function(A,e,t){var r=A.ownerDocument;if(!r)throw new Error("Node has no owner document");var n=r.createRange();return n.setStart(A,e),n.setEnd(A,e+t),I.fromClientRect(n.getBoundingClientRect())},Fn=function(A,e){return 0!==e.letterSpacing?c(A).map(function(A){return l(A)}):hn(A,e)},hn=function(A,e){for(var t,r=function(A,e){var t=c(A),r=u(t,e),n=r[0],B=r[1],s=r[2],o=t.length,i=0,a=0;return{next:function(){if(o<=a)return{done:!0,value:null};for(var A=Y;a<o&&(A=w(t,B,n,++a,s))===Y;);if(A===Y&&a!==o)return{done:!0,value:null};var e=new nA(t,A,i,a);return i=a,{value:e,done:!1}}}}(A,{lineBreak:e.lineBreak,wordBreak:e.overflowWrap===Ur.BREAK_WORD?"break-word":e.wordBreak}),n=[];!(t=r.next()).done;)t.value&&n.push(t.value.slice());return n},Hn=function(A,e){this.text=dn(A.data,e.textTransform),this.textBounds=function(A,t,r){var e=Fn(A,t),n=[],B=0;return e.forEach(function(A){if(t.textDecorationLine.length||0<A.trim().length)if(Oe.SUPPORT_RANGE_BOUNDS)n.push(new Cn(A,En(r,B,A.length)));else{var e=r.splitText(A.length);n.push(new Cn(A,gn(r))),r=e}else Oe.SUPPORT_RANGE_BOUNDS||(r=r.splitText(A.length));B+=A.length}),n}(this.text,e,A)},dn=function(A,e){switch(e){case Ir.LOWERCASE:return A.toLowerCase();case Ir.CAPITALIZE:return A.replace(fn,pn);case Ir.UPPERCASE:return A.toUpperCase();default:return A}},fn=/(^|\s|:|-|\(|\))([a-z])/g,pn=function(A,e,t){return 0<A.length?e+t.toUpperCase():A},Nn=(A(Kn,Qn=ln),Kn);function Kn(A){var e=Qn.call(this,A)||this;return e.src=A.currentSrc||A.src,e.intrinsicWidth=A.naturalWidth,e.intrinsicHeight=A.naturalHeight,Se.getInstance().addImage(e.src),e}var In,Tn=(A(mn,In=ln),mn);function mn(A){var e=In.call(this,A)||this;return e.canvas=A,e.intrinsicWidth=A.width,e.intrinsicHeight=A.height,e}var Rn,Ln=(A(vn,Rn=ln),vn);function vn(A){var e=Rn.call(this,A)||this,t=new XMLSerializer;return e.svg="data:image/svg+xml,"+encodeURIComponent(t.serializeToString(A)),e.intrinsicWidth=A.width.baseVal.value,e.intrinsicHeight=A.height.baseVal.value,Se.getInstance().addImage(e.svg),e}var On,Dn=(A(bn,On=ln),bn);function bn(A){var e=On.call(this,A)||this;return e.value=A.value,e}var Sn,Mn=(A(yn,Sn=ln),yn);function yn(A){var e=Sn.call(this,A)||this;return e.start=A.start,e.reversed="boolean"==typeof A.reversed&&!0===A.reversed,e}var _n,Pn=[{type:sA.DIMENSION_TOKEN,flags:0,unit:"px",number:3}],xn=[{type:sA.PERCENTAGE_TOKEN,flags:0,number:50}],Vn="checkbox",zn="radio",Xn="password",Jn=707406591,Gn=(A(kn,_n=ln),kn);function kn(A){var e=_n.call(this,A)||this;switch(e.type=A.type.toLowerCase(),e.checked=A.checked,e.value=function(A){var e=A.type===Xn?new Array(A.value.length+1).join("•"):A.value;return 0===e.length?A.placeholder||"":e}(A),e.type!==Vn&&e.type!==zn||(e.styles.backgroundColor=3739148031,e.styles.borderTopColor=e.styles.borderRightColor=e.styles.borderBottomColor=e.styles.borderLeftColor=2779096575,e.styles.borderTopWidth=e.styles.borderRightWidth=e.styles.borderBottomWidth=e.styles.borderLeftWidth=1,e.styles.borderTopStyle=e.styles.borderRightStyle=e.styles.borderBottomStyle=e.styles.borderLeftStyle=ht.SOLID,e.styles.backgroundClip=[Ee.BORDER_BOX],e.styles.backgroundOrigin=[0],e.bounds=function(A){return A.width>A.height?new I(A.left+(A.width-A.height)/2,A.top,A.height,A.height):A.width<A.height?new I(A.left,A.top+(A.height-A.width)/2,A.width,A.width):A}(e.bounds)),e.type){case Vn:e.styles.borderTopRightRadius=e.styles.borderTopLeftRadius=e.styles.borderBottomRightRadius=e.styles.borderBottomLeftRadius=Pn;break;case zn:e.styles.borderTopRightRadius=e.styles.borderTopLeftRadius=e.styles.borderBottomRightRadius=e.styles.borderBottomLeftRadius=xn}return e}var Wn,Yn=(A(qn,Wn=ln),qn);function qn(A){var e=Wn.call(this,A)||this,t=A.options[A.selectedIndex||0];return e.value=t&&t.text||"",e}var Zn,jn=(A($n,Zn=ln),$n);function $n(A){var e=Zn.call(this,A)||this;return e.value=A.value,e}function AB(A){return we(_A.create(A).parseComponentValue())}var eB,tB=(A(rB,eB=ln),rB);function rB(A){var e=eB.call(this,A)||this;e.src=A.src,e.width=parseInt(A.width,10)||0,e.height=parseInt(A.height,10)||0,e.backgroundColor=e.styles.backgroundColor;try{if(A.contentWindow&&A.contentWindow.document&&A.contentWindow.document.documentElement){e.tree=iB(A.contentWindow.document.documentElement);var t=A.contentWindow.document.documentElement?AB(getComputedStyle(A.contentWindow.document.documentElement).backgroundColor):He.TRANSPARENT,r=A.contentWindow.document.body?AB(getComputedStyle(A.contentWindow.document.body).backgroundColor):He.TRANSPARENT;e.backgroundColor=ee(t)?ee(r)?e.styles.backgroundColor:r:t}}catch(A){}return e}function nB(A){return"STYLE"===A.tagName}var BB=["OL","UL","MENU"],sB=function(A,e,t){for(var r=A.firstChild,n=void 0;r;r=n)if(n=r.nextSibling,QB(r)&&0<r.data.trim().length)e.textNodes.push(new Hn(r,e.styles));else if(wB(r)){var B=oB(r);B.styles.isVisible()&&(aB(r,B,t)?B.flags|=4:cB(B.styles)&&(B.flags|=2),-1!==BB.indexOf(r.tagName)&&(B.flags|=8),e.elements.push(B),dB(r)||gB(r)||fB(r)||sB(r,B,t))}},oB=function(A){return hB(A)?new Nn(A):FB(A)?new Tn(A):gB(A)?new Ln(A):UB(A)?new Dn(A):lB(A)?new Mn(A):CB(A)?new Gn(A):fB(A)?new Yn(A):dB(A)?new jn(A):HB(A)?new tB(A):new ln(A)},iB=function(A){var e=oB(A);return e.flags|=4,sB(A,e,e),e},aB=function(A,e,t){return e.styles.isPositionedWithZIndex()||e.styles.opacity<1||e.styles.isTransformed()||EB(A)&&t.styles.isTransparent()},cB=function(A){return A.isPositioned()||A.isFloating()},QB=function(A){return A.nodeType===Node.TEXT_NODE},wB=function(A){return A.nodeType===Node.ELEMENT_NODE},uB=function(A){return void 0!==A.style},UB=function(A){return"LI"===A.tagName},lB=function(A){return"OL"===A.tagName},CB=function(A){return"INPUT"===A.tagName},gB=function(A){return"svg"===A.tagName},EB=function(A){return"BODY"===A.tagName},FB=function(A){return"CANVAS"===A.tagName},hB=function(A){return"IMG"===A.tagName},HB=function(A){return"IFRAME"===A.tagName},dB=function(A){return"TEXTAREA"===A.tagName},fB=function(A){return"SELECT"===A.tagName},pB=(NB.prototype.getCounterValue=function(A){var e=this.counters[A];return e&&e.length?e[e.length-1]:1},NB.prototype.getCounterValues=function(A){var e=this.counters[A];return e||[]},NB.prototype.pop=function(A){var e=this;A.forEach(function(A){return e.counters[A].pop()})},NB.prototype.parse=function(A){var t=this,e=A.counterIncrement,r=A.counterReset,n=!0;null!==e&&e.forEach(function(A){var e=t.counters[A.counter];e&&0!==A.increment&&(n=!1,e[Math.max(0,e.length-1)]+=A.increment)});var B=[];return n&&r.forEach(function(A){var e=t.counters[A.counter];B.push(A.counter),e||(e=t.counters[A.counter]=[]),e.push(A.reset)}),B},NB);function NB(){this.counters={}}function KB(r,A,e,n,t,B){return r<A||e<r?yB(r,t,0<B.length):n.integers.reduce(function(A,e,t){for(;e<=r;)r-=e,A+=n.values[t];return A},"")+B}function IB(A,e,t,r){for(var n="";t||A--,n=r(A)+n,e<=(A/=e)*e;);return n}function TB(A,e,t,r,n){var B=t-e+1;return(A<0?"-":"")+(IB(Math.abs(A),B,r,function(A){return l(Math.floor(A%B)+e)})+n)}function mB(A,e,t){void 0===t&&(t=". ");var r=e.length;return IB(Math.abs(A),r,!1,function(A){return e[Math.floor(A%r)]})+t}function RB(A,e,t,r,n,B){if(A<-9999||9999<A)return yB(A,tr.CJK_DECIMAL,0<n.length);var s=Math.abs(A),o=n;if(0===s)return e[0]+o;for(var i=0;0<s&&i<=4;i++){var a=s%10;0==a&&An(B,1)&&""!==o?o=e[a]+o:1<a||1==a&&0===i||1==a&&1===i&&An(B,2)||1==a&&1===i&&An(B,4)&&100<A||1==a&&1<i&&An(B,8)?o=e[a]+(0<i?t[i-1]:"")+o:1==a&&0<i&&(o=t[i-1]+o),s=Math.floor(s/10)}return(A<0?r:"")+o}var LB,vB,OB={integers:[1e3,900,500,400,100,90,50,40,10,9,5,4,1],values:["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]},DB={integers:[9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["Ք","Փ","Ւ","Ց","Ր","Տ","Վ","Ս","Ռ","Ջ","Պ","Չ","Ո","Շ","Ն","Յ","Մ","Ճ","Ղ","Ձ","Հ","Կ","Ծ","Խ","Լ","Ի","Ժ","Թ","Ը","Է","Զ","Ե","Դ","Գ","Բ","Ա"]},bB={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,400,300,200,100,90,80,70,60,50,40,30,20,19,18,17,16,15,10,9,8,7,6,5,4,3,2,1],values:["י׳","ט׳","ח׳","ז׳","ו׳","ה׳","ד׳","ג׳","ב׳","א׳","ת","ש","ר","ק","צ","פ","ע","ס","נ","מ","ל","כ","יט","יח","יז","טז","טו","י","ט","ח","ז","ו","ה","ד","ג","ב","א"]},SB={integers:[1e4,9e3,8e3,7e3,6e3,5e3,4e3,3e3,2e3,1e3,900,800,700,600,500,400,300,200,100,90,80,70,60,50,40,30,20,10,9,8,7,6,5,4,3,2,1],values:["ჵ","ჰ","ჯ","ჴ","ხ","ჭ","წ","ძ","ც","ჩ","შ","ყ","ღ","ქ","ფ","ჳ","ტ","ს","რ","ჟ","პ","ო","ჲ","ნ","მ","ლ","კ","ი","თ","ჱ","ზ","ვ","ე","დ","გ","ბ","ა"]},MB="마이너스",yB=function(A,e,t){var r=t?". ":"",n=t?"、":"",B=t?", ":"",s=t?" ":"";switch(e){case tr.DISC:return"•"+s;case tr.CIRCLE:return"◦"+s;case tr.SQUARE:return"◾"+s;case tr.DECIMAL_LEADING_ZERO:var o=TB(A,48,57,!0,r);return o.length<4?"0"+o:o;case tr.CJK_DECIMAL:return mB(A,"〇一二三四五六七八九",n);case tr.LOWER_ROMAN:return KB(A,1,3999,OB,tr.DECIMAL,r).toLowerCase();case tr.UPPER_ROMAN:return KB(A,1,3999,OB,tr.DECIMAL,r);case tr.LOWER_GREEK:return TB(A,945,969,!1,r);case tr.LOWER_ALPHA:return TB(A,97,122,!1,r);case tr.UPPER_ALPHA:return TB(A,65,90,!1,r);case tr.ARABIC_INDIC:return TB(A,1632,1641,!0,r);case tr.ARMENIAN:case tr.UPPER_ARMENIAN:return KB(A,1,9999,DB,tr.DECIMAL,r);case tr.LOWER_ARMENIAN:return KB(A,1,9999,DB,tr.DECIMAL,r).toLowerCase();case tr.BENGALI:return TB(A,2534,2543,!0,r);case tr.CAMBODIAN:case tr.KHMER:return TB(A,6112,6121,!0,r);case tr.CJK_EARTHLY_BRANCH:return mB(A,"子丑寅卯辰巳午未申酉戌亥",n);case tr.CJK_HEAVENLY_STEM:return mB(A,"甲乙丙丁戊己庚辛壬癸",n);case tr.CJK_IDEOGRAPHIC:case tr.TRAD_CHINESE_INFORMAL:return RB(A,"零一二三四五六七八九","十百千萬","負",n,14);case tr.TRAD_CHINESE_FORMAL:return RB(A,"零壹貳參肆伍陸柒捌玖","拾佰仟萬","負",n,15);case tr.SIMP_CHINESE_INFORMAL:return RB(A,"零一二三四五六七八九","十百千萬","负",n,14);case tr.SIMP_CHINESE_FORMAL:return RB(A,"零壹贰叁肆伍陆柒捌玖","拾佰仟萬","负",n,15);case tr.JAPANESE_INFORMAL:return RB(A,"〇一二三四五六七八九","十百千万","マイナス",n,0);case tr.JAPANESE_FORMAL:return RB(A,"零壱弐参四伍六七八九","拾百千万","マイナス",n,7);case tr.KOREAN_HANGUL_FORMAL:return RB(A,"영일이삼사오육칠팔구","십백천만",MB,B,7);case tr.KOREAN_HANJA_INFORMAL:return RB(A,"零一二三四五六七八九","十百千萬",MB,B,0);case tr.KOREAN_HANJA_FORMAL:return RB(A,"零壹貳參四五六七八九","拾百千",MB,B,7);case tr.DEVANAGARI:return TB(A,2406,2415,!0,r);case tr.GEORGIAN:return KB(A,1,19999,SB,tr.DECIMAL,r);case tr.GUJARATI:return TB(A,2790,2799,!0,r);case tr.GURMUKHI:return TB(A,2662,2671,!0,r);case tr.HEBREW:return KB(A,1,10999,bB,tr.DECIMAL,r);case tr.HIRAGANA:return mB(A,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん");case tr.HIRAGANA_IROHA:return mB(A,"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす");case tr.KANNADA:return TB(A,3302,3311,!0,r);case tr.KATAKANA:return mB(A,"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン",n);case tr.KATAKANA_IROHA:return mB(A,"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス",n);case tr.LAO:return TB(A,3792,3801,!0,r);case tr.MONGOLIAN:return TB(A,6160,6169,!0,r);case tr.MYANMAR:return TB(A,4160,4169,!0,r);case tr.ORIYA:return TB(A,2918,2927,!0,r);case tr.PERSIAN:return TB(A,1776,1785,!0,r);case tr.TAMIL:return TB(A,3046,3055,!0,r);case tr.TELUGU:return TB(A,3174,3183,!0,r);case tr.THAI:return TB(A,3664,3673,!0,r);case tr.TIBETAN:return TB(A,3872,3881,!0,r);case tr.DECIMAL:default:return TB(A,48,57,!0,r)}},_B="data-html2canvas-ignore",PB=(xB.prototype.toIFrame=function(A,t){var e=this,r=XB(A,t);if(!r.contentWindow)return Promise.reject("Unable to find iframe window");var n=A.defaultView.pageXOffset,B=A.defaultView.pageYOffset,s=r.contentWindow,o=s.document,i=JB(r).then(function(){return a(e,void 0,void 0,function(){var e;return S(this,function(A){switch(A.label){case 0:return this.scrolledElements.forEach(YB),s&&(s.scrollTo(t.left,t.top),!/(iPad|iPhone|iPod)/g.test(navigator.userAgent)||s.scrollY===t.top&&s.scrollX===t.left||(o.documentElement.style.top=-t.top+"px",o.documentElement.style.left=-t.left+"px",o.documentElement.style.position="absolute")),e=this.options.onclone,void 0===this.clonedReferenceElement?[2,Promise.reject("Error finding the "+this.referenceElement.nodeName+" in the cloned document")]:o.fonts&&o.fonts.ready?[4,o.fonts.ready]:[3,2];case 1:A.sent(),A.label=2;case 2:return"function"==typeof e?[2,Promise.resolve().then(function(){return e(o)}).then(function(){return r})]:[2,r]}})})});return o.open(),o.write(kB(document.doctype)+"<html></html>"),WB(this.referenceElement.ownerDocument,n,B),o.replaceChild(o.adoptNode(this.documentElement),o.documentElement),o.close(),i},xB.prototype.createElementClone=function(A){return FB(A)?this.createCanvasClone(A):nB(A)?this.createStyleClone(A):A.cloneNode(!1)},xB.prototype.createStyleClone=function(A){try{var e=A.sheet;if(e&&e.cssRules){var t=[].slice.call(e.cssRules,0).reduce(function(A,e){return e&&"string"==typeof e.cssText?A+e.cssText:A},""),r=A.cloneNode(!1);return r.textContent=t,r}}catch(A){if(De.getInstance(this.options.id).error("Unable to access cssRules property",A),"SecurityError"!==A.name)throw A}return A.cloneNode(!1)},xB.prototype.createCanvasClone=function(A){if(this.options.inlineImages&&A.ownerDocument){var e=A.ownerDocument.createElement("img");try{return e.src=A.toDataURL(),e}catch(A){De.getInstance(this.options.id).info("Unable to clone canvas contents, canvas is tainted")}}var t=A.cloneNode(!1);try{t.width=A.width,t.height=A.height;var r=A.getContext("2d"),n=t.getContext("2d");return n&&(r?n.putImageData(r.getImageData(0,0,A.width,A.height),0,0):n.drawImage(A,0,0)),t}catch(A){}return t},xB.prototype.cloneNode=function(A){if(QB(A))return document.createTextNode(A.data);if(!A.ownerDocument)return A.cloneNode(!1);var e=A.ownerDocument.defaultView;if(uB(A)&&e){var t=this.createElementClone(A),r=e.getComputedStyle(A),n=e.getComputedStyle(A,":before"),B=e.getComputedStyle(A,":after");this.referenceElement===A&&(this.clonedReferenceElement=t),EB(t)&&$B(t);for(var s=this.counters.parse(new un(r)),o=this.resolvePseudoContent(A,t,n,LB.BEFORE),i=A.firstChild;i;i=i.nextSibling)wB(i)&&("SCRIPT"===i.tagName||i.hasAttribute(_B)||"function"==typeof this.options.ignoreElements&&this.options.ignoreElements(i))||this.options.copyStyles&&wB(i)&&nB(i)||t.appendChild(this.cloneNode(i));o&&t.insertBefore(o,t.firstChild);var a=this.resolvePseudoContent(A,t,B,LB.AFTER);return a&&t.appendChild(a),this.counters.pop(s),r&&this.options.copyStyles&&!HB(A)&&GB(r,t),0===A.scrollTop&&0===A.scrollLeft||this.scrolledElements.push([t,A.scrollLeft,A.scrollTop]),(dB(A)||fB(A))&&(dB(t)||fB(t))&&(t.value=A.value),t}return A.cloneNode(!1)},xB.prototype.resolvePseudoContent=function(U,A,e,t){var l=this;if(e){var r=e.content,C=A.ownerDocument;if(C&&r&&"none"!==r&&"-moz-alt-content"!==r&&"none"!==e.display){this.counters.parse(new un(e));var g=new wn(e),E=C.createElement("html2canvaspseudoelement");GB(e,E),g.content.forEach(function(A){if(A.type===sA.STRING_TOKEN)E.appendChild(C.createTextNode(A.value));else if(A.type===sA.URL_TOKEN){var e=C.createElement("img");e.src=A.value,e.style.opacity="1",E.appendChild(e)}else if(A.type===sA.FUNCTION){if("attr"===A.name){var t=A.values.filter(zA);t.length&&E.appendChild(C.createTextNode(U.getAttribute(t[0].value)||""))}else if("counter"===A.name){var r=A.values.filter(kA),n=r[0],B=r[1];if(n&&zA(n)){var s=l.counters.getCounterValue(n.value),o=B&&zA(B)?ir.parse(B.value):tr.DECIMAL;E.appendChild(C.createTextNode(yB(s,o,!1)))}}else if("counters"===A.name){var i=A.values.filter(kA),a=(n=i[0],i[1]);if(B=i[2],n&&zA(n)){var c=l.counters.getCounterValues(n.value),Q=B&&zA(B)?ir.parse(B.value):tr.DECIMAL,w=a&&a.type===sA.STRING_TOKEN?a.value:"",u=c.map(function(A){return yB(A,Q,!1)}).join(w);E.appendChild(C.createTextNode(u))}}}else if(A.type===sA.IDENT_TOKEN)switch(A.value){case"open-quote":E.appendChild(C.createTextNode(en(g.quotes,l.quoteDepth++,!0)));break;case"close-quote":E.appendChild(C.createTextNode(en(g.quotes,--l.quoteDepth,!1)));break;default:E.appendChild(C.createTextNode(A.value))}}),E.className=qB+" "+ZB;var n=t===LB.BEFORE?" "+qB:" "+ZB;return function(A){return"object"==typeof A.className}(A)?A.className.baseValue+=n:A.className+=n,E}}},xB.destroy=function(A){return!!A.parentNode&&(A.parentNode.removeChild(A),!0)},xB);function xB(A,e){if(this.options=e,this.scrolledElements=[],this.referenceElement=A,this.counters=new pB,this.quoteDepth=0,!A.ownerDocument)throw new Error("Cloned element does not have an owner document");this.documentElement=this.cloneNode(A.ownerDocument.documentElement)}(vB=LB||(LB={}))[vB.BEFORE=0]="BEFORE",vB[vB.AFTER=1]="AFTER";var VB,zB,XB=function(A,e){var t=A.createElement("iframe");return t.className="html2canvas-container",t.style.visibility="hidden",t.style.position="fixed",t.style.left="-10000px",t.style.top="0px",t.style.border="0",t.width=e.width.toString(),t.height=e.height.toString(),t.scrolling="no",t.setAttribute(_B,"true"),A.body.appendChild(t),t},JB=function(n){return new Promise(function(e,A){var t=n.contentWindow;if(!t)return A("No window assigned for iframe");var r=t.document;t.onload=n.onload=r.onreadystatechange=function(){t.onload=n.onload=r.onreadystatechange=null;var A=setInterval(function(){0<r.body.childNodes.length&&"complete"===r.readyState&&(clearInterval(A),e(n))},50)}})},GB=function(A,e){for(var t=A.length-1;0<=t;t--){var r=A.item(t);"content"!==r&&e.style.setProperty(r,A.getPropertyValue(r))}return e},kB=function(A){var e="";return A&&(e+="<!DOCTYPE ",A.name&&(e+=A.name),A.internalSubset&&(e+=A.internalSubset),A.publicId&&(e+='"'+A.publicId+'"'),A.systemId&&(e+='"'+A.systemId+'"'),e+=">"),e},WB=function(A,e,t){A&&A.defaultView&&(e!==A.defaultView.pageXOffset||t!==A.defaultView.pageYOffset)&&A.defaultView.scrollTo(e,t)},YB=function(A){var e=A[0],t=A[1],r=A[2];e.scrollLeft=t,e.scrollTop=r},qB="___html2canvas___pseudoelement_before",ZB="___html2canvas___pseudoelement_after",jB='{\n    content: "" !important;\n    display: none !important;\n}',$B=function(A){As(A,"."+qB+":before"+jB+"\n         ."+ZB+":after"+jB)},As=function(A,e){var t=A.ownerDocument;if(t){var r=t.createElement("style");r.textContent=e,A.appendChild(r)}};(zB=VB||(VB={}))[zB.VECTOR=0]="VECTOR",zB[zB.BEZIER_CURVE=1]="BEZIER_CURVE";function es(A,t){return A.length===t.length&&A.some(function(A,e){return A===t[e]})}var ts=(rs.prototype.add=function(A,e){return new rs(this.x+A,this.y+e)},rs);function rs(A,e){this.type=VB.VECTOR,this.x=A,this.y=e}function ns(A,e,t){return new ts(A.x+(e.x-A.x)*t,A.y+(e.y-A.y)*t)}var Bs=(ss.prototype.subdivide=function(A,e){var t=ns(this.start,this.startControl,A),r=ns(this.startControl,this.endControl,A),n=ns(this.endControl,this.end,A),B=ns(t,r,A),s=ns(r,n,A),o=ns(B,s,A);return e?new ss(this.start,t,B,o):new ss(o,s,n,this.end)},ss.prototype.add=function(A,e){return new ss(this.start.add(A,e),this.startControl.add(A,e),this.endControl.add(A,e),this.end.add(A,e))},ss.prototype.reverse=function(){return new ss(this.end,this.endControl,this.startControl,this.start)},ss);function ss(A,e,t,r){this.type=VB.BEZIER_CURVE,this.start=A,this.startControl=e,this.endControl=t,this.end=r}function os(A){return A.type===VB.BEZIER_CURVE}var is,as,cs=function(A){var e=A.styles,t=A.bounds,r=jA(e.borderTopLeftRadius,t.width,t.height),n=r[0],B=r[1],s=jA(e.borderTopRightRadius,t.width,t.height),o=s[0],i=s[1],a=jA(e.borderBottomRightRadius,t.width,t.height),c=a[0],Q=a[1],w=jA(e.borderBottomLeftRadius,t.width,t.height),u=w[0],U=w[1],l=[];l.push((n+o)/t.width),l.push((u+c)/t.width),l.push((B+U)/t.height),l.push((i+Q)/t.height);var C=Math.max.apply(Math,l);1<C&&(n/=C,B/=C,o/=C,i/=C,c/=C,Q/=C,u/=C,U/=C);var g=t.width-o,E=t.height-Q,F=t.width-c,h=t.height-U,H=e.borderTopWidth,d=e.borderRightWidth,f=e.borderBottomWidth,p=e.borderLeftWidth,N=ae(e.paddingTop,A.bounds.width),K=ae(e.paddingRight,A.bounds.width),I=ae(e.paddingBottom,A.bounds.width),T=ae(e.paddingLeft,A.bounds.width);this.topLeftBorderBox=0<n||0<B?us(t.left,t.top,n,B,is.TOP_LEFT):new ts(t.left,t.top),this.topRightBorderBox=0<o||0<i?us(t.left+g,t.top,o,i,is.TOP_RIGHT):new ts(t.left+t.width,t.top),this.bottomRightBorderBox=0<c||0<Q?us(t.left+F,t.top+E,c,Q,is.BOTTOM_RIGHT):new ts(t.left+t.width,t.top+t.height),this.bottomLeftBorderBox=0<u||0<U?us(t.left,t.top+h,u,U,is.BOTTOM_LEFT):new ts(t.left,t.top+t.height),this.topLeftPaddingBox=0<n||0<B?us(t.left+p,t.top+H,Math.max(0,n-p),Math.max(0,B-H),is.TOP_LEFT):new ts(t.left+p,t.top+H),this.topRightPaddingBox=0<o||0<i?us(t.left+Math.min(g,t.width+p),t.top+H,g>t.width+p?0:o-p,i-H,is.TOP_RIGHT):new ts(t.left+t.width-d,t.top+H),this.bottomRightPaddingBox=0<c||0<Q?us(t.left+Math.min(F,t.width-p),t.top+Math.min(E,t.height+H),Math.max(0,c-d),Q-f,is.BOTTOM_RIGHT):new ts(t.left+t.width-d,t.top+t.height-f),this.bottomLeftPaddingBox=0<u||0<U?us(t.left+p,t.top+h,Math.max(0,u-p),U-f,is.BOTTOM_LEFT):new ts(t.left+p,t.top+t.height-f),this.topLeftContentBox=0<n||0<B?us(t.left+p+T,t.top+H+N,Math.max(0,n-(p+T)),Math.max(0,B-(H+N)),is.TOP_LEFT):new ts(t.left+p+T,t.top+H+N),this.topRightContentBox=0<o||0<i?us(t.left+Math.min(g,t.width+p+T),t.top+H+N,g>t.width+p+T?0:o-p+T,i-(H+N),is.TOP_RIGHT):new ts(t.left+t.width-(d+K),t.top+H+N),this.bottomRightContentBox=0<c||0<Q?us(t.left+Math.min(F,t.width-(p+T)),t.top+Math.min(E,t.height+H+N),Math.max(0,c-(d+K)),Q-(f+I),is.BOTTOM_RIGHT):new ts(t.left+t.width-(d+K),t.top+t.height-(f+I)),this.bottomLeftContentBox=0<u||0<U?us(t.left+p+T,t.top+h,Math.max(0,u-(p+T)),U-(f+I),is.BOTTOM_LEFT):new ts(t.left+p+T,t.top+t.height-(f+I))};(as=is||(is={}))[as.TOP_LEFT=0]="TOP_LEFT",as[as.TOP_RIGHT=1]="TOP_RIGHT",as[as.BOTTOM_RIGHT=2]="BOTTOM_RIGHT",as[as.BOTTOM_LEFT=3]="BOTTOM_LEFT";function Qs(A){return[A.topLeftBorderBox,A.topRightBorderBox,A.bottomRightBorderBox,A.bottomLeftBorderBox]}function ws(A){return[A.topLeftPaddingBox,A.topRightPaddingBox,A.bottomRightPaddingBox,A.bottomLeftPaddingBox]}var us=function(A,e,t,r,n){var B=(Math.sqrt(2)-1)/3*4,s=t*B,o=r*B,i=A+t,a=e+r;switch(n){case is.TOP_LEFT:return new Bs(new ts(A,a),new ts(A,a-o),new ts(i-s,e),new ts(i,e));case is.TOP_RIGHT:return new Bs(new ts(A,e),new ts(A+s,e),new ts(i,a-o),new ts(i,a));case is.BOTTOM_RIGHT:return new Bs(new ts(i,e),new ts(i,e+o),new ts(A+s,a),new ts(A,a));case is.BOTTOM_LEFT:default:return new Bs(new ts(i,a),new ts(i-s,a),new ts(A,e+o),new ts(A,e))}},Us=function(A,e,t){this.type=0,this.offsetX=A,this.offsetY=e,this.matrix=t,this.target=6},ls=function(A,e){this.type=1,this.target=e,this.path=A},Cs=function(A){this.element=A,this.inlineLevel=[],this.nonInlineLevel=[],this.negativeZIndex=[],this.zeroOrAutoZIndexOrTransformedOrOpacity=[],this.positiveZIndex=[],this.nonPositionedFloats=[],this.nonPositionedInlineLevel=[]},gs=(Es.prototype.getParentEffects=function(){var A=this.effects.slice(0);if(this.container.styles.overflowX!==sr.VISIBLE){var e=Qs(this.curves),t=ws(this.curves);es(e,t)||A.push(new ls(t,6))}return A},Es);function Es(A,e){if(this.container=A,this.effects=e.slice(0),this.curves=new cs(A),null!==A.styles.transform){var t=A.bounds.left+A.styles.transformOrigin[0].number,r=A.bounds.top+A.styles.transformOrigin[1].number,n=A.styles.transform;this.effects.push(new Us(t,r,n))}if(A.styles.overflowX!==sr.VISIBLE){var B=Qs(this.curves),s=ws(this.curves);es(B,s)?this.effects.push(new ls(B,6)):(this.effects.push(new ls(B,2)),this.effects.push(new ls(s,4)))}}function Fs(A){var e=A.bounds,t=A.styles;return e.add(t.borderLeftWidth,t.borderTopWidth,-(t.borderRightWidth+t.borderLeftWidth),-(t.borderTopWidth+t.borderBottomWidth))}function hs(A){var e=A.styles,t=A.bounds,r=ae(e.paddingLeft,t.width),n=ae(e.paddingRight,t.width),B=ae(e.paddingTop,t.width),s=ae(e.paddingBottom,t.width);return t.add(r+e.borderLeftWidth,B+e.borderTopWidth,-(e.borderRightWidth+e.borderLeftWidth+r+n),-(e.borderTopWidth+e.borderBottomWidth+B+s))}function Hs(A,e,t){var r=function(A,e){return 0===A?e.bounds:2===A?hs(e):Fs(e)}(Ts(A.styles.backgroundOrigin,e),A),n=function(A,e){return A===Ee.BORDER_BOX?e.bounds:A===Ee.CONTENT_BOX?hs(e):Fs(e)}(Ts(A.styles.backgroundClip,e),A),B=Is(Ts(A.styles.backgroundSize,e),t,r),s=B[0],o=B[1],i=jA(Ts(A.styles.backgroundPosition,e),r.width-s,r.height-o);return[ms(Ts(A.styles.backgroundRepeat,e),i,B,r,n),Math.round(r.left+i[0]),Math.round(r.top+i[1]),s,o]}function ds(A){return zA(A)&&A.value===Ut.AUTO}function fs(A){return"number"==typeof A}var ps=function(c,Q,w,u){c.container.elements.forEach(function(A){var e=An(A.flags,4),t=An(A.flags,2),r=new gs(A,c.getParentEffects());An(A.styles.display,2048)&&u.push(r);var n=An(A.flags,8)?[]:u;if(e||t){var B=e||A.styles.isPositioned()?w:Q,s=new Cs(r);if(A.styles.isPositioned()||A.styles.opacity<1||A.styles.isTransformed()){var o=A.styles.zIndex.order;if(o<0){var i=0;B.negativeZIndex.some(function(A,e){return o>A.element.container.styles.zIndex.order?(i=e,!1):0<i}),B.negativeZIndex.splice(i,0,s)}else if(0<o){var a=0;B.positiveZIndex.some(function(A,e){return o>A.element.container.styles.zIndex.order?(a=e+1,!1):0<a}),B.positiveZIndex.splice(a,0,s)}else B.zeroOrAutoZIndexOrTransformedOrOpacity.push(s)}else A.styles.isFloating()?B.nonPositionedFloats.push(s):B.nonPositionedInlineLevel.push(s);ps(r,s,e?s:w,n)}else A.styles.isInlineLevel()?Q.inlineLevel.push(r):Q.nonInlineLevel.push(r),ps(r,Q,w,n);An(A.flags,8)&&Ns(A,n)})},Ns=function(A,e){for(var t=A instanceof Mn?A.start:1,r=A instanceof Mn&&A.reversed,n=0;n<e.length;n++){var B=e[n];B.container instanceof Dn&&"number"==typeof B.container.value&&0!==B.container.value&&(t=B.container.value),B.listValue=yB(t,B.container.styles.listStyleType,!0),t+=r?-1:1}},Ks=function(A,e,t,r){var n=[];return os(A)?n.push(A.subdivide(.5,!1)):n.push(A),os(t)?n.push(t.subdivide(.5,!0)):n.push(t),os(r)?n.push(r.subdivide(.5,!0).reverse()):n.push(r),os(e)?n.push(e.subdivide(.5,!1).reverse()):n.push(e),n},Is=function(A,e,t){var r=e[0],n=e[1],B=e[2],s=A[0],o=A[1];if(qA(s)&&o&&qA(o))return[ae(s,t.width),ae(o,t.height)];var i=fs(B);if(zA(s)&&(s.value===Ut.CONTAIN||s.value===Ut.COVER))return fs(B)?t.width/t.height<B!=(s.value===Ut.COVER)?[t.width,t.width/B]:[t.height*B,t.height]:[t.width,t.height];var a=fs(r),c=fs(n),Q=a||c;if(ds(s)&&(!o||ds(o)))return a&&c?[r,n]:i||Q?Q&&i?[a?r:n*B,c?n:r/B]:[a?r:t.width,c?n:t.height]:[t.width,t.height];if(i){var w=0,u=0;return qA(s)?w=ae(s,t.width):qA(o)&&(u=ae(o,t.height)),ds(s)?w=u*B:o&&!ds(o)||(u=w/B),[w,u]}var U=null,l=null;if(qA(s)?U=ae(s,t.width):o&&qA(o)&&(l=ae(o,t.height)),null===U||o&&!ds(o)||(l=a&&c?U/r*n:t.height),null!==l&&ds(s)&&(U=a&&c?l/n*r:t.width),null!==U&&null!==l)return[U,l];throw new Error("Unable to calculate background-size for element")},Ts=function(A,e){var t=A[e];return void 0===t?A[0]:t},ms=function(A,e,t,r,n){var B=e[0],s=e[1],o=t[0],i=t[1];switch(A){case it.REPEAT_X:return[new ts(Math.round(r.left),Math.round(r.top+s)),new ts(Math.round(r.left+r.width),Math.round(r.top+s)),new ts(Math.round(r.left+r.width),Math.round(i+r.top+s)),new ts(Math.round(r.left),Math.round(i+r.top+s))];case it.REPEAT_Y:return[new ts(Math.round(r.left+B),Math.round(r.top)),new ts(Math.round(r.left+B+o),Math.round(r.top)),new ts(Math.round(r.left+B+o),Math.round(r.height+r.top)),new ts(Math.round(r.left+B),Math.round(r.height+r.top))];case it.NO_REPEAT:return[new ts(Math.round(r.left+B),Math.round(r.top+s)),new ts(Math.round(r.left+B+o),Math.round(r.top+s)),new ts(Math.round(r.left+B+o),Math.round(r.top+s+i)),new ts(Math.round(r.left+B),Math.round(r.top+s+i))];default:return[new ts(Math.round(n.left),Math.round(n.top)),new ts(Math.round(n.left+n.width),Math.round(n.top)),new ts(Math.round(n.left+n.width),Math.round(n.height+n.top)),new ts(Math.round(n.left),Math.round(n.height+n.top))]}},Rs="Hidden Text",Ls=(vs.prototype.parseMetrics=function(A,e){var t=this._document.createElement("div"),r=this._document.createElement("img"),n=this._document.createElement("span"),B=this._document.body;t.style.visibility="hidden",t.style.fontFamily=A,t.style.fontSize=e,t.style.margin="0",t.style.padding="0",B.appendChild(t),r.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",r.width=1,r.height=1,r.style.margin="0",r.style.padding="0",r.style.verticalAlign="baseline",n.style.fontFamily=A,n.style.fontSize=e,n.style.margin="0",n.style.padding="0",n.appendChild(this._document.createTextNode(Rs)),t.appendChild(n),t.appendChild(r);var s=r.offsetTop-n.offsetTop+2;t.removeChild(n),t.appendChild(this._document.createTextNode(Rs)),t.style.lineHeight="normal",r.style.verticalAlign="super";var o=r.offsetTop-t.offsetTop+2;return B.removeChild(t),{baseline:s,middle:o}},vs.prototype.getMetrics=function(A,e){var t=A+" "+e;return void 0===this._data[t]&&(this._data[t]=this.parseMetrics(A,e)),this._data[t]},vs);function vs(A){this._data={},this._document=A}var Os=(Ds.prototype.applyEffects=function(A,e){for(var t=this;this._activeEffects.length;)this.popEffect();A.filter(function(A){return An(A.target,e)}).forEach(function(A){return t.applyEffect(A)})},Ds.prototype.applyEffect=function(A){this.ctx.save(),function(A){return 0===A.type}(A)&&(this.ctx.translate(A.offsetX,A.offsetY),this.ctx.transform(A.matrix[0],A.matrix[1],A.matrix[2],A.matrix[3],A.matrix[4],A.matrix[5]),this.ctx.translate(-A.offsetX,-A.offsetY)),function(A){return 1===A.type}(A)&&(this.path(A.path),this.ctx.clip()),this._activeEffects.push(A)},Ds.prototype.popEffect=function(){this._activeEffects.pop(),this.ctx.restore()},Ds.prototype.renderStack=function(t){return a(this,void 0,void 0,function(){var e;return S(this,function(A){switch(A.label){case 0:return(e=t.element.container.styles).isVisible()?(this.ctx.globalAlpha=e.opacity,[4,this.renderStackContent(t)]):[3,2];case 1:A.sent(),A.label=2;case 2:return[2]}})})},Ds.prototype.renderNode=function(e){return a(this,void 0,void 0,function(){return S(this,function(A){switch(A.label){case 0:return e.container.styles.isVisible()?[4,this.renderNodeBackgroundAndBorders(e)]:[3,3];case 1:return A.sent(),[4,this.renderNodeContent(e)];case 2:A.sent(),A.label=3;case 3:return[2]}})})},Ds.prototype.renderTextWithLetterSpacing=function(t,A){var r=this;0===A?this.ctx.fillText(t.text,t.bounds.left,t.bounds.top+t.bounds.height):c(t.text).map(function(A){return l(A)}).reduce(function(A,e){return r.ctx.fillText(e,A,t.bounds.top+t.bounds.height),A+r.ctx.measureText(e).width},t.bounds.left)},Ds.prototype.createFontStyle=function(A){var e=A.fontVariant.filter(function(A){return"normal"===A||"small-caps"===A}).join(""),t=A.fontFamily.join(", "),r=xA(A.fontSize)?""+A.fontSize.number+A.fontSize.unit:A.fontSize.number+"px";return[[A.fontStyle,e,A.fontWeight,r,t].join(" "),t,r]},Ds.prototype.renderTextNode=function(r,o){return a(this,void 0,void 0,function(){var e,t,n,B,s=this;return S(this,function(A){return e=this.createFontStyle(o),t=e[0],n=e[1],B=e[2],this.ctx.font=t,r.textBounds.forEach(function(r){s.ctx.fillStyle=te(o.color),s.renderTextWithLetterSpacing(r,o.letterSpacing);var A=o.textShadow;A.length&&r.text.trim().length&&(A.slice(0).reverse().forEach(function(A){s.ctx.shadowColor=te(A.color),s.ctx.shadowOffsetX=A.offsetX.number*s.options.scale,s.ctx.shadowOffsetY=A.offsetY.number*s.options.scale,s.ctx.shadowBlur=A.blur.number,s.ctx.fillText(r.text,r.bounds.left,r.bounds.top+r.bounds.height)}),s.ctx.shadowColor="",s.ctx.shadowOffsetX=0,s.ctx.shadowOffsetY=0,s.ctx.shadowBlur=0),o.textDecorationLine.length&&(s.ctx.fillStyle=te(o.textDecorationColor||o.color),o.textDecorationLine.forEach(function(A){switch(A){case 1:var e=s.fontMetrics.getMetrics(n,B).baseline;s.ctx.fillRect(r.bounds.left,Math.round(r.bounds.top+e),r.bounds.width,1);break;case 2:s.ctx.fillRect(r.bounds.left,Math.round(r.bounds.top),r.bounds.width,1);break;case 3:var t=s.fontMetrics.getMetrics(n,B).middle;s.ctx.fillRect(r.bounds.left,Math.ceil(r.bounds.top+t),r.bounds.width,1)}}))}),[2]})})},Ds.prototype.renderReplacedElement=function(A,e,t){if(t&&0<A.intrinsicWidth&&0<A.intrinsicHeight){var r=hs(A),n=ws(e);this.path(n),this.ctx.save(),this.ctx.clip(),this.ctx.drawImage(t,0,0,A.intrinsicWidth,A.intrinsicHeight,r.left,r.top,r.width,r.height),this.ctx.restore()}},Ds.prototype.renderNodeContent=function(l){return a(this,void 0,void 0,function(){var e,t,r,n,B,s,o,i,a,c,Q,w,u,U;return S(this,function(A){switch(A.label){case 0:this.applyEffects(l.effects,4),e=l.container,t=l.curves,r=e.styles,n=0,B=e.textNodes,A.label=1;case 1:return n<B.length?(s=B[n],[4,this.renderTextNode(s,r)]):[3,4];case 2:A.sent(),A.label=3;case 3:return n++,[3,1];case 4:if(!(e instanceof Nn))return[3,8];A.label=5;case 5:return A.trys.push([5,7,,8]),[4,this.options.cache.match(e.src)];case 6:return w=A.sent(),this.renderReplacedElement(e,t,w),[3,8];case 7:return A.sent(),De.getInstance(this.options.id).error("Error loading image "+e.src),[3,8];case 8:if(e instanceof Tn&&this.renderReplacedElement(e,t,e.canvas),!(e instanceof Ln))return[3,12];A.label=9;case 9:return A.trys.push([9,11,,12]),[4,this.options.cache.match(e.svg)];case 10:return w=A.sent(),this.renderReplacedElement(e,t,w),[3,12];case 11:return A.sent(),De.getInstance(this.options.id).error("Error loading svg "+e.svg.substring(0,255)),[3,12];case 12:return e instanceof tB&&e.tree?[4,new Ds({id:this.options.id,scale:this.options.scale,backgroundColor:e.backgroundColor,x:0,y:0,scrollX:0,scrollY:0,width:e.width,height:e.height,cache:this.options.cache,windowWidth:e.width,windowHeight:e.height}).render(e.tree)]:[3,14];case 13:o=A.sent(),e.width&&e.height&&this.ctx.drawImage(o,0,0,e.width,e.height,e.bounds.left,e.bounds.top,e.bounds.width,e.bounds.height),A.label=14;case 14:if(e instanceof Gn&&(i=Math.min(e.bounds.width,e.bounds.height),e.type===Vn?e.checked&&(this.ctx.save(),this.path([new ts(e.bounds.left+.39363*i,e.bounds.top+.79*i),new ts(e.bounds.left+.16*i,e.bounds.top+.5549*i),new ts(e.bounds.left+.27347*i,e.bounds.top+.44071*i),new ts(e.bounds.left+.39694*i,e.bounds.top+.5649*i),new ts(e.bounds.left+.72983*i,e.bounds.top+.23*i),new ts(e.bounds.left+.84*i,e.bounds.top+.34085*i),new ts(e.bounds.left+.39363*i,e.bounds.top+.79*i)]),this.ctx.fillStyle=te(Jn),this.ctx.fill(),this.ctx.restore()):e.type===zn&&e.checked&&(this.ctx.save(),this.ctx.beginPath(),this.ctx.arc(e.bounds.left+i/2,e.bounds.top+i/2,i/4,0,2*Math.PI,!0),this.ctx.fillStyle=te(Jn),this.ctx.fill(),this.ctx.restore())),bs(e)&&e.value.length){switch(this.ctx.font=this.createFontStyle(r)[0],this.ctx.fillStyle=te(r.color),this.ctx.textBaseline="middle",this.ctx.textAlign=Ms(e.styles.textAlign),U=hs(e),a=0,e.styles.textAlign){case Cr.CENTER:a+=U.width/2;break;case Cr.RIGHT:a+=U.width}c=U.add(a,0,0,-U.height/2+1),this.ctx.save(),this.path([new ts(U.left,U.top),new ts(U.left+U.width,U.top),new ts(U.left+U.width,U.top+U.height),new ts(U.left,U.top+U.height)]),this.ctx.clip(),this.renderTextWithLetterSpacing(new Cn(e.value,c),r.letterSpacing),this.ctx.restore(),this.ctx.textBaseline="bottom",this.ctx.textAlign="left"}if(!An(e.styles.display,2048))return[3,20];if(null===e.styles.listStyleImage)return[3,19];if((Q=e.styles.listStyleImage).type!==xe.URL)return[3,18];w=void 0,u=Q.url,A.label=15;case 15:return A.trys.push([15,17,,18]),[4,this.options.cache.match(u)];case 16:return w=A.sent(),this.ctx.drawImage(w,e.bounds.left-(w.width+10),e.bounds.top),[3,18];case 17:return A.sent(),De.getInstance(this.options.id).error("Error loading list-style-image "+u),[3,18];case 18:return[3,20];case 19:l.listValue&&e.styles.listStyleType!==tr.NONE&&(this.ctx.font=this.createFontStyle(r)[0],this.ctx.fillStyle=te(r.color),this.ctx.textBaseline="middle",this.ctx.textAlign="right",U=new I(e.bounds.left,e.bounds.top+ae(e.styles.paddingTop,e.bounds.width),e.bounds.width,function(A,e){return zA(A)&&"normal"===A.value?1.2*e:A.type===sA.NUMBER_TOKEN?e*A.number:qA(A)?ae(A,e):e}(r.lineHeight,r.fontSize.number)/2+1),this.renderTextWithLetterSpacing(new Cn(l.listValue,U),r.letterSpacing),this.ctx.textBaseline="bottom",this.ctx.textAlign="left"),A.label=20;case 20:return[2]}})})},Ds.prototype.renderStackContent=function(C){return a(this,void 0,void 0,function(){var e,t,r,n,B,s,o,i,a,c,Q,w,u,U,l;return S(this,function(A){switch(A.label){case 0:return[4,this.renderNodeBackgroundAndBorders(C.element)];case 1:A.sent(),e=0,t=C.negativeZIndex,A.label=2;case 2:return e<t.length?(l=t[e],[4,this.renderStack(l)]):[3,5];case 3:A.sent(),A.label=4;case 4:return e++,[3,2];case 5:return[4,this.renderNodeContent(C.element)];case 6:A.sent(),r=0,n=C.nonInlineLevel,A.label=7;case 7:return r<n.length?(l=n[r],[4,this.renderNode(l)]):[3,10];case 8:A.sent(),A.label=9;case 9:return r++,[3,7];case 10:B=0,s=C.nonPositionedFloats,A.label=11;case 11:return B<s.length?(l=s[B],[4,this.renderStack(l)]):[3,14];case 12:A.sent(),A.label=13;case 13:return B++,[3,11];case 14:o=0,i=C.nonPositionedInlineLevel,A.label=15;case 15:return o<i.length?(l=i[o],[4,this.renderStack(l)]):[3,18];case 16:A.sent(),A.label=17;case 17:return o++,[3,15];case 18:a=0,c=C.inlineLevel,A.label=19;case 19:return a<c.length?(l=c[a],[4,this.renderNode(l)]):[3,22];case 20:A.sent(),A.label=21;case 21:return a++,[3,19];case 22:Q=0,w=C.zeroOrAutoZIndexOrTransformedOrOpacity,A.label=23;case 23:return Q<w.length?(l=w[Q],[4,this.renderStack(l)]):[3,26];case 24:A.sent(),A.label=25;case 25:return Q++,[3,23];case 26:u=0,U=C.positiveZIndex,A.label=27;case 27:return u<U.length?(l=U[u],[4,this.renderStack(l)]):[3,30];case 28:A.sent(),A.label=29;case 29:return u++,[3,27];case 30:return[2]}})})},Ds.prototype.mask=function(A){this.ctx.beginPath(),this.ctx.moveTo(0,0),this.ctx.lineTo(this.canvas.width,0),this.ctx.lineTo(this.canvas.width,this.canvas.height),this.ctx.lineTo(0,this.canvas.height),this.ctx.lineTo(0,0),this.formatPath(A.slice(0).reverse()),this.ctx.closePath()},Ds.prototype.path=function(A){this.ctx.beginPath(),this.formatPath(A),this.ctx.closePath()},Ds.prototype.formatPath=function(A){var r=this;A.forEach(function(A,e){var t=os(A)?A.start:A;0===e?r.ctx.moveTo(t.x,t.y):r.ctx.lineTo(t.x,t.y),os(A)&&r.ctx.bezierCurveTo(A.startControl.x,A.startControl.y,A.endControl.x,A.endControl.y,A.end.x,A.end.y)})},Ds.prototype.renderRepeat=function(A,e,t,r){this.path(A),this.ctx.fillStyle=e,this.ctx.translate(t,r),this.ctx.fill(),this.ctx.translate(-t,-r)},Ds.prototype.resizeImage=function(A,e,t){if(A.width===e&&A.height===t)return A;var r=this.canvas.ownerDocument.createElement("canvas");return r.width=e,r.height=t,r.getContext("2d").drawImage(A,0,0,A.width,A.height,0,0,e,t),r},Ds.prototype.renderBackgroundImage=function(b){return a(this,void 0,void 0,function(){var O,e,D,t,r,n;return S(this,function(A){switch(A.label){case 0:O=b.styles.backgroundImage.length-1,e=function(e){var t,r,n,B,s,o,i,a,c,Q,w,u,U,l,C,g,E,F,h,H,d,f,p,N,K,I,T,m,R,L,v;return S(this,function(A){switch(A.label){case 0:if(e.type!==xe.URL)return[3,5];t=void 0,r=e.url,A.label=1;case 1:return A.trys.push([1,3,,4]),[4,D.options.cache.match(r)];case 2:return t=A.sent(),[3,4];case 3:return A.sent(),De.getInstance(D.options.id).error("Error loading background-image "+r),[3,4];case 4:return t&&(n=Hs(b,O,[t.width,t.height,t.width/t.height]),g=n[0],f=n[1],p=n[2],h=n[3],H=n[4],l=D.ctx.createPattern(D.resizeImage(t,h,H),"repeat"),D.renderRepeat(g,l,f,p)),[3,6];case 5:!function(A){return A.type===xe.LINEAR_GRADIENT}(e)?function(A){return A.type===xe.RADIAL_GRADIENT}(e)&&(C=Hs(b,O,[null,null,null]),g=C[0],E=C[1],F=C[2],h=C[3],H=C[4],d=0===e.position.length?[oe]:e.position,f=ae(d[0],h),p=ae(d[d.length-1],H),N=function(A,e,t,r,n){var B=0,s=0;switch(A.size){case Bt.CLOSEST_SIDE:A.shape===rt.CIRCLE?B=s=Math.min(Math.abs(e),Math.abs(e-r),Math.abs(t),Math.abs(t-n)):A.shape===rt.ELLIPSE&&(B=Math.min(Math.abs(e),Math.abs(e-r)),s=Math.min(Math.abs(t),Math.abs(t-n)));break;case Bt.CLOSEST_CORNER:if(A.shape===rt.CIRCLE)B=s=Math.min(Ne(e,t),Ne(e,t-n),Ne(e-r,t),Ne(e-r,t-n));else if(A.shape===rt.ELLIPSE){var o=Math.min(Math.abs(t),Math.abs(t-n))/Math.min(Math.abs(e),Math.abs(e-r)),i=Ke(r,n,e,t,!0),a=i[0],c=i[1];s=o*(B=Ne(a-e,(c-t)/o))}break;case Bt.FARTHEST_SIDE:A.shape===rt.CIRCLE?B=s=Math.max(Math.abs(e),Math.abs(e-r),Math.abs(t),Math.abs(t-n)):A.shape===rt.ELLIPSE&&(B=Math.max(Math.abs(e),Math.abs(e-r)),s=Math.max(Math.abs(t),Math.abs(t-n)));break;case Bt.FARTHEST_CORNER:if(A.shape===rt.CIRCLE)B=s=Math.max(Ne(e,t),Ne(e,t-n),Ne(e-r,t),Ne(e-r,t-n));else if(A.shape===rt.ELLIPSE){o=Math.max(Math.abs(t),Math.abs(t-n))/Math.max(Math.abs(e),Math.abs(e-r));var Q=Ke(r,n,e,t,!1);a=Q[0],c=Q[1],s=o*(B=Ne(a-e,(c-t)/o))}}return Array.isArray(A.size)&&(B=ae(A.size[0],r),s=2===A.size.length?ae(A.size[1],n):B),[B,s]}(e,f,p,h,H),K=N[0],I=N[1],0<K&&0<K&&(T=D.ctx.createRadialGradient(E+f,F+p,0,E+f,F+p,K),fe(e.stops,2*K).forEach(function(A){return T.addColorStop(A.stop,te(A.color))}),D.path(g),D.ctx.fillStyle=T,K!==I?(m=b.bounds.left+.5*b.bounds.width,R=b.bounds.top+.5*b.bounds.height,v=1/(L=I/K),D.ctx.save(),D.ctx.translate(m,R),D.ctx.transform(1,0,0,L,0,0),D.ctx.translate(-m,-R),D.ctx.fillRect(E,v*(F-R)+R,h,H*v),D.ctx.restore()):D.ctx.fill())):(B=Hs(b,O,[null,null,null]),g=B[0],f=B[1],p=B[2],h=B[3],H=B[4],s=pe(e.angle,h,H),o=s[0],i=s[1],a=s[2],c=s[3],Q=s[4],(w=document.createElement("canvas")).width=h,w.height=H,u=w.getContext("2d"),U=u.createLinearGradient(i,c,a,Q),fe(e.stops,o).forEach(function(A){return U.addColorStop(A.stop,te(A.color))}),u.fillStyle=U,u.fillRect(0,0,h,H),0<h&&0<H&&(l=D.ctx.createPattern(w,"repeat"),D.renderRepeat(g,l,f,p))),A.label=6;case 6:return O--,[2]}})},D=this,t=0,r=b.styles.backgroundImage.slice(0).reverse(),A.label=1;case 1:return t<r.length?(n=r[t],[5,e(n)]):[3,4];case 2:A.sent(),A.label=3;case 3:return t++,[3,1];case 4:return[2]}})})},Ds.prototype.renderBorder=function(e,t,r){return a(this,void 0,void 0,function(){return S(this,function(A){return this.path(function(A,e){switch(e){case 0:return Ks(A.topLeftBorderBox,A.topLeftPaddingBox,A.topRightBorderBox,A.topRightPaddingBox);case 1:return Ks(A.topRightBorderBox,A.topRightPaddingBox,A.bottomRightBorderBox,A.bottomRightPaddingBox);case 2:return Ks(A.bottomRightBorderBox,A.bottomRightPaddingBox,A.bottomLeftBorderBox,A.bottomLeftPaddingBox);case 3:default:return Ks(A.bottomLeftBorderBox,A.bottomLeftPaddingBox,A.topLeftBorderBox,A.topLeftPaddingBox)}}(r,t)),this.ctx.fillStyle=te(e),this.ctx.fill(),[2]})})},Ds.prototype.renderNodeBackgroundAndBorders=function(c){return a(this,void 0,void 0,function(){var e,t,r,n,B,s,o,i,a=this;return S(this,function(A){switch(A.label){case 0:return this.applyEffects(c.effects,2),e=c.container.styles,t=!ee(e.backgroundColor)||e.backgroundImage.length,r=[{style:e.borderTopStyle,color:e.borderTopColor},{style:e.borderRightStyle,color:e.borderRightColor},{style:e.borderBottomStyle,color:e.borderBottomColor},{style:e.borderLeftStyle,color:e.borderLeftColor}],n=Ss(Ts(e.backgroundClip,0),c.curves),t||e.boxShadow.length?(this.ctx.save(),this.path(n),this.ctx.clip(),ee(e.backgroundColor)||(this.ctx.fillStyle=te(e.backgroundColor),this.ctx.fill()),[4,this.renderBackgroundImage(c.container)]):[3,2];case 1:A.sent(),this.ctx.restore(),e.boxShadow.slice(0).reverse().forEach(function(A){a.ctx.save();var e=Qs(c.curves),t=A.inset?0:1e4,r=function(A,t,r,n,B){return A.map(function(A,e){switch(e){case 0:return A.add(t,r);case 1:return A.add(t+n,r);case 2:return A.add(t+n,r+B);case 3:return A.add(t,r+B)}return A})}(e,-t+(A.inset?1:-1)*A.spread.number,(A.inset?1:-1)*A.spread.number,A.spread.number*(A.inset?-2:2),A.spread.number*(A.inset?-2:2));A.inset?(a.path(e),a.ctx.clip(),a.mask(r)):(a.mask(e),a.ctx.clip(),a.path(r)),a.ctx.shadowOffsetX=A.offsetX.number+t,a.ctx.shadowOffsetY=A.offsetY.number,a.ctx.shadowColor=te(A.color),a.ctx.shadowBlur=A.blur.number,a.ctx.fillStyle=A.inset?te(A.color):"rgba(0,0,0,1)",a.ctx.fill(),a.ctx.restore()}),A.label=2;case 2:s=B=0,o=r,A.label=3;case 3:return s<o.length?(i=o[s]).style===ht.NONE||ee(i.color)?[3,5]:[4,this.renderBorder(i.color,B,c.curves)]:[3,7];case 4:A.sent(),A.label=5;case 5:B++,A.label=6;case 6:return s++,[3,3];case 7:return[2]}})})},Ds.prototype.render=function(t){return a(this,void 0,void 0,function(){var e;return S(this,function(A){switch(A.label){case 0:return this.options.backgroundColor&&(this.ctx.fillStyle=te(this.options.backgroundColor),this.ctx.fillRect(this.options.x-this.options.scrollX,this.options.y-this.options.scrollY,this.options.width,this.options.height)),e=function(A){var e=new gs(A,[]),t=new Cs(e),r=[];return ps(e,t,t,r),Ns(e.container,r),t}(t),[4,this.renderStack(e)];case 1:return A.sent(),this.applyEffects([],2),[2,this.canvas]}})})},Ds);function Ds(A){this._activeEffects=[],this.canvas=A.canvas?A.canvas:document.createElement("canvas"),this.ctx=this.canvas.getContext("2d"),(this.options=A).canvas||(this.canvas.width=Math.floor(A.width*A.scale),this.canvas.height=Math.floor(A.height*A.scale),this.canvas.style.width=A.width+"px",this.canvas.style.height=A.height+"px"),this.fontMetrics=new Ls(document),this.ctx.scale(this.options.scale,this.options.scale),this.ctx.translate(-A.x+A.scrollX,-A.y+A.scrollY),this.ctx.textBaseline="bottom",this._activeEffects=[],De.getInstance(A.id).debug("Canvas renderer initialized ("+A.width+"x"+A.height+" at "+A.x+","+A.y+") with scale "+A.scale)}var bs=function(A){return A instanceof jn||(A instanceof Yn||A instanceof Gn&&A.type!==zn&&A.type!==Vn)},Ss=function(A,e){switch(A){case Ee.BORDER_BOX:return Qs(e);case Ee.CONTENT_BOX:return function(A){return[A.topLeftContentBox,A.topRightContentBox,A.bottomRightContentBox,A.bottomLeftContentBox]}(e);case Ee.PADDING_BOX:default:return ws(e)}},Ms=function(A){switch(A){case Cr.CENTER:return"center";case Cr.RIGHT:return"right";case Cr.LEFT:default:return"left"}},ys=(_s.prototype.render=function(r){return a(this,void 0,void 0,function(){var e,t;return S(this,function(A){switch(A.label){case 0:return e=Le(Math.max(this.options.windowWidth,this.options.width)*this.options.scale,Math.max(this.options.windowHeight,this.options.height)*this.options.scale,this.options.scrollX*this.options.scale,this.options.scrollY*this.options.scale,r),[4,xs(e)];case 1:return t=A.sent(),this.options.backgroundColor&&(this.ctx.fillStyle=te(this.options.backgroundColor),this.ctx.fillRect(0,0,this.options.width*this.options.scale,this.options.height*this.options.scale)),this.ctx.drawImage(t,-this.options.x*this.options.scale,-this.options.y*this.options.scale),[2,this.canvas]}})})},_s);function _s(A){this.canvas=A.canvas?A.canvas:document.createElement("canvas"),this.ctx=this.canvas.getContext("2d"),this.options=A,this.canvas.width=Math.floor(A.width*A.scale),this.canvas.height=Math.floor(A.height*A.scale),this.canvas.style.width=A.width+"px",this.canvas.style.height=A.height+"px",this.ctx.scale(this.options.scale,this.options.scale),this.ctx.translate(-A.x+A.scrollX,-A.y+A.scrollY),De.getInstance(A.id).debug("EXPERIMENTAL ForeignObject renderer initialized ("+A.width+"x"+A.height+" at "+A.x+","+A.y+") with scale "+A.scale)}function Ps(A){return we(_A.create(A).parseComponentValue())}var xs=function(r){return new Promise(function(A,e){var t=new Image;t.onload=function(){A(t)},t.onerror=e,t.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent((new XMLSerializer).serializeToString(r))})};"undefined"!=typeof window&&Se.setContext(window);var Vs=function(p,N){return a(void 0,void 0,void 0,function(){var e,t,r,n,B,s,o,i,a,c,Q,w,u,U,l,C,g,E,F,h,H,d,f;return S(this,function(A){switch(A.label){case 0:if(!(e=p.ownerDocument))throw new Error("Element is not attached to a Document");if(!(t=e.defaultView))throw new Error("Document is not attached to a Window");return r=(Math.round(1e3*Math.random())+Date.now()).toString(16),n=EB(p)||function(A){return"HTML"===A.tagName}(p)?function(A){var e=A.body,t=A.documentElement;if(!e||!t)throw new Error("Unable to get document size");var r=Math.max(Math.max(e.scrollWidth,t.scrollWidth),Math.max(e.offsetWidth,t.offsetWidth),Math.max(e.clientWidth,t.clientWidth)),n=Math.max(Math.max(e.scrollHeight,t.scrollHeight),Math.max(e.offsetHeight,t.offsetHeight),Math.max(e.clientHeight,t.clientHeight));return new I(0,0,r,n)}(e):T(p),B=n.width,s=n.height,o=n.left,i=n.top,a=K({},{allowTaint:!1,imageTimeout:15e3,proxy:void 0,useCORS:!1},N),c={backgroundColor:"#ffffff",cache:N.cache?N.cache:Se.create(r,a),logging:!0,removeContainer:!0,foreignObjectRendering:!1,scale:t.devicePixelRatio||1,windowWidth:t.innerWidth,windowHeight:t.innerHeight,scrollX:t.pageXOffset,scrollY:t.pageYOffset,x:o,y:i,width:Math.ceil(B),height:Math.ceil(s),id:r},Q=K({},c,a,N),w=new I(Q.scrollX,Q.scrollY,Q.windowWidth,Q.windowHeight),De.create({id:r,enabled:Q.logging}),De.getInstance(r).debug("Starting document clone"),u=new PB(p,{id:r,onclone:Q.onclone,ignoreElements:Q.ignoreElements,inlineImages:Q.foreignObjectRendering,copyStyles:Q.foreignObjectRendering}),(U=u.clonedReferenceElement)?[4,u.toIFrame(e,w)]:[2,Promise.reject("Unable to find element in cloned iframe")];case 1:return l=A.sent(),C=e.documentElement?Ps(getComputedStyle(e.documentElement).backgroundColor):He.TRANSPARENT,g=e.body?Ps(getComputedStyle(e.body).backgroundColor):He.TRANSPARENT,E=N.backgroundColor,F="string"==typeof E?Ps(E):null===E?He.TRANSPARENT:4294967295,h=p===e.documentElement?ee(C)?ee(g)?F:g:C:F,H={id:r,cache:Q.cache,canvas:Q.canvas,backgroundColor:h,scale:Q.scale,x:Q.x,y:Q.y,scrollX:Q.scrollX,scrollY:Q.scrollY,width:Q.width,height:Q.height,windowWidth:Q.windowWidth,windowHeight:Q.windowHeight},Q.foreignObjectRendering?(De.getInstance(r).debug("Document cloned, using foreign object rendering"),[4,new ys(H).render(U)]):[3,3];case 2:return d=A.sent(),[3,5];case 3:return De.getInstance(r).debug("Document cloned, using computed rendering"),Se.attachInstance(Q.cache),De.getInstance(r).debug("Starting DOM parsing"),f=iB(U),Se.detachInstance(),h===f.styles.backgroundColor&&(f.styles.backgroundColor=He.TRANSPARENT),De.getInstance(r).debug("Starting renderer"),[4,new Os(H).render(f)];case 4:d=A.sent(),A.label=5;case 5:return!0===Q.removeContainer&&(PB.destroy(l)||De.getInstance(r).error("Cannot detach cloned iframe as it is not in the DOM anymore")),De.getInstance(r).debug("Finished rendering"),De.destroy(r),Se.destroy(r),[2,d]}})})};return function(A,e){return void 0===e&&(e={}),Vs(A,e)}});
assets/lib/html2canvas/js/html2canvas.js000064400001122327150755004310014242 0ustar00/*!
 * html2canvas 1.0.0-rc.5 <https://html2canvas.hertzen.com>
 * Copyright (c) 2020 Niklas von Hertzen <https://hertzen.com>
 * Released under MIT License
 */
(function (global, factory) {
	typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
		typeof define === 'function' && define.amd ? define(factory) :
			(global = global || self, global.html2canvas = factory());
}(this, function () { 'use strict';

	/*! *****************************************************************************
    Copyright (c) Microsoft Corporation. All rights reserved.
    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

    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
    MERCHANTABLITY OR NON-INFRINGEMENT.

    See the Apache Version 2.0 License for specific language governing permissions
    and limitations under the License.
    ***************************************************************************** */
	/* global Reflect, Promise */

	var extendStatics = function(d, b) {
		extendStatics = Object.setPrototypeOf ||
			({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
			function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
		return extendStatics(d, b);
	};

	function __extends(d, b) {
		extendStatics(d, b);
		function __() { this.constructor = d; }
		d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
	}

	var __assign = function() {
		__assign = Object.assign || function __assign(t) {
			for (var s, i = 1, n = arguments.length; i < n; i++) {
				s = arguments[i];
				for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
			}
			return t;
		};
		return __assign.apply(this, arguments);
	};

	function __awaiter(thisArg, _arguments, P, generator) {
		return new (P || (P = Promise))(function (resolve, reject) {
			function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
			function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
			function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
			step((generator = generator.apply(thisArg, _arguments || [])).next());
		});
	}

	function __generator(thisArg, body) {
		var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
		return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
		function verb(n) { return function (v) { return step([n, v]); }; }
		function step(op) {
			if (f) throw new TypeError("Generator is already executing.");
			while (_) try {
				if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
				if (y = 0, t) op = [op[0] & 2, t.value];
				switch (op[0]) {
					case 0: case 1: t = op; break;
					case 4: _.label++; return { value: op[1], done: false };
					case 5: _.label++; y = op[1]; op = [0]; continue;
					case 7: op = _.ops.pop(); _.trys.pop(); continue;
					default:
						if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
						if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
						if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
						if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
						if (t[2]) _.ops.pop();
						_.trys.pop(); continue;
				}
				op = body.call(thisArg, _);
			} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
			if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
		}
	}

	var Bounds = /** @class */ (function () {
		function Bounds(x, y, w, h) {
			this.left = x;
			this.top = y;
			this.width = w;
			this.height = h;
		}
		Bounds.prototype.add = function (x, y, w, h) {
			return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);
		};
		Bounds.fromClientRect = function (clientRect) {
			return new Bounds(clientRect.left, clientRect.top, clientRect.width, clientRect.height);
		};
		return Bounds;
	}());
	var parseBounds = function (node) {
		return Bounds.fromClientRect(node.getBoundingClientRect());
	};
	var parseDocumentSize = function (document) {
		var body = document.body;
		var documentElement = document.documentElement;
		if (!body || !documentElement) {
			throw new Error("Unable to get document size");
		}
		var width = Math.max(Math.max(body.scrollWidth, documentElement.scrollWidth), Math.max(body.offsetWidth, documentElement.offsetWidth), Math.max(body.clientWidth, documentElement.clientWidth));
		var height = Math.max(Math.max(body.scrollHeight, documentElement.scrollHeight), Math.max(body.offsetHeight, documentElement.offsetHeight), Math.max(body.clientHeight, documentElement.clientHeight));
		return new Bounds(0, 0, width, height);
	};

	/*
     * css-line-break 1.1.1 <https://github.com/niklasvh/css-line-break#readme>
     * Copyright (c) 2019 Niklas von Hertzen <https://hertzen.com>
     * Released under MIT License
     */
	var toCodePoints = function (str) {
		var codePoints = [];
		var i = 0;
		var length = str.length;
		while (i < length) {
			var value = str.charCodeAt(i++);
			if (value >= 0xd800 && value <= 0xdbff && i < length) {
				var extra = str.charCodeAt(i++);
				if ((extra & 0xfc00) === 0xdc00) {
					codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);
				}
				else {
					codePoints.push(value);
					i--;
				}
			}
			else {
				codePoints.push(value);
			}
		}
		return codePoints;
	};
	var fromCodePoint = function () {
		var codePoints = [];
		for (var _i = 0; _i < arguments.length; _i++) {
			codePoints[_i] = arguments[_i];
		}
		if (String.fromCodePoint) {
			return String.fromCodePoint.apply(String, codePoints);
		}
		var length = codePoints.length;
		if (!length) {
			return '';
		}
		var codeUnits = [];
		var index = -1;
		var result = '';
		while (++index < length) {
			var codePoint = codePoints[index];
			if (codePoint <= 0xffff) {
				codeUnits.push(codePoint);
			}
			else {
				codePoint -= 0x10000;
				codeUnits.push((codePoint >> 10) + 0xd800, codePoint % 0x400 + 0xdc00);
			}
			if (index + 1 === length || codeUnits.length > 0x4000) {
				result += String.fromCharCode.apply(String, codeUnits);
				codeUnits.length = 0;
			}
		}
		return result;
	};
	var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
	// Use a lookup table to find the index.
	var lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);
	for (var i = 0; i < chars.length; i++) {
		lookup[chars.charCodeAt(i)] = i;
	}
	var decode = function (base64) {
		var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;
		if (base64[base64.length - 1] === '=') {
			bufferLength--;
			if (base64[base64.length - 2] === '=') {
				bufferLength--;
			}
		}
		var buffer = typeof ArrayBuffer !== 'undefined' &&
		typeof Uint8Array !== 'undefined' &&
		typeof Uint8Array.prototype.slice !== 'undefined'
			? new ArrayBuffer(bufferLength)
			: new Array(bufferLength);
		var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);
		for (i = 0; i < len; i += 4) {
			encoded1 = lookup[base64.charCodeAt(i)];
			encoded2 = lookup[base64.charCodeAt(i + 1)];
			encoded3 = lookup[base64.charCodeAt(i + 2)];
			encoded4 = lookup[base64.charCodeAt(i + 3)];
			bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
			bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
			bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
		}
		return buffer;
	};
	var polyUint16Array = function (buffer) {
		var length = buffer.length;
		var bytes = [];
		for (var i = 0; i < length; i += 2) {
			bytes.push((buffer[i + 1] << 8) | buffer[i]);
		}
		return bytes;
	};
	var polyUint32Array = function (buffer) {
		var length = buffer.length;
		var bytes = [];
		for (var i = 0; i < length; i += 4) {
			bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);
		}
		return bytes;
	};

	/** Shift size for getting the index-2 table offset. */
	var UTRIE2_SHIFT_2 = 5;
	/** Shift size for getting the index-1 table offset. */
	var UTRIE2_SHIFT_1 = 6 + 5;
	/**
	 * Shift size for shifting left the index array values.
	 * Increases possible data size with 16-bit index values at the cost
	 * of compactability.
	 * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.
	 */
	var UTRIE2_INDEX_SHIFT = 2;
	/**
	 * Difference between the two shift sizes,
	 * for getting an index-1 offset from an index-2 offset. 6=11-5
	 */
	var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;
	/**
	 * The part of the index-2 table for U+D800..U+DBFF stores values for
	 * lead surrogate code _units_ not code _points_.
	 * Values for lead surrogate code _points_ are indexed with this portion of the table.
	 * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)
	 */
	var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;
	/** Number of entries in a data block. 32=0x20 */
	var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;
	/** Mask for getting the lower bits for the in-data-block offset. */
	var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;
	var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;
	/** Count the lengths of both BMP pieces. 2080=0x820 */
	var UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;
	/**
	 * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.
	 * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.
	 */
	var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;
	var UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */
	/**
	 * The index-1 table, only used for supplementary code points, at offset 2112=0x840.
	 * Variable length, for code points up to highStart, where the last single-value range starts.
	 * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.
	 * (For 0x100000 supplementary code points U+10000..U+10ffff.)
	 *
	 * The part of the index-2 table for supplementary code points starts
	 * after this index-1 table.
	 *
	 * Both the index-1 table and the following part of the index-2 table
	 * are omitted completely if there is only BMP data.
	 */
	var UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;
	/**
	 * Number of index-1 entries for the BMP. 32=0x20
	 * This part of the index-1 table is omitted from the serialized form.
	 */
	var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;
	/** Number of entries in an index-2 block. 64=0x40 */
	var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;
	/** Mask for getting the lower bits for the in-index-2-block offset. */
	var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;
	var slice16 = function (view, start, end) {
		if (view.slice) {
			return view.slice(start, end);
		}
		return new Uint16Array(Array.prototype.slice.call(view, start, end));
	};
	var slice32 = function (view, start, end) {
		if (view.slice) {
			return view.slice(start, end);
		}
		return new Uint32Array(Array.prototype.slice.call(view, start, end));
	};
	var createTrieFromBase64 = function (base64) {
		var buffer = decode(base64);
		var view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);
		var view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);
		var headerLength = 24;
		var index = slice16(view16, headerLength / 2, view32[4] / 2);
		var data = view32[5] === 2
			? slice16(view16, (headerLength + view32[4]) / 2)
			: slice32(view32, Math.ceil((headerLength + view32[4]) / 4));
		return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);
	};
	var Trie = /** @class */ (function () {
		function Trie(initialValue, errorValue, highStart, highValueIndex, index, data) {
			this.initialValue = initialValue;
			this.errorValue = errorValue;
			this.highStart = highStart;
			this.highValueIndex = highValueIndex;
			this.index = index;
			this.data = data;
		}
		/**
		 * Get the value for a code point as stored in the Trie.
		 *
		 * @param codePoint the code point
		 * @return the value
		 */
		Trie.prototype.get = function (codePoint) {
			var ix;
			if (codePoint >= 0) {
				if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {
					// Ordinary BMP code point, excluding leading surrogates.
					// BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.
					// 16 bit data is stored in the index array itself.
					ix = this.index[codePoint >> UTRIE2_SHIFT_2];
					ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
					return this.data[ix];
				}
				if (codePoint <= 0xffff) {
					// Lead Surrogate Code Point.  A Separate index section is stored for
					// lead surrogate code units and code points.
					//   The main index has the code unit data.
					//   For this function, we need the code point data.
					// Note: this expression could be refactored for slightly improved efficiency, but
					//       surrogate code points will be so rare in practice that it's not worth it.
					ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];
					ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
					return this.data[ix];
				}
				if (codePoint < this.highStart) {
					// Supplemental code point, use two-level lookup.
					ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);
					ix = this.index[ix];
					ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;
					ix = this.index[ix];
					ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);
					return this.data[ix];
				}
				if (codePoint <= 0x10ffff) {
					return this.data[this.highValueIndex];
				}
			}
			// Fall through.  The code point is outside of the legal range of 0..0x10ffff.
			return this.errorValue;
		};
		return Trie;
	}());

	var base64 = 'KwAAAAAAAAAACA4AIDoAAPAfAAACAAAAAAAIABAAGABAAEgAUABYAF4AZgBeAGYAYABoAHAAeABeAGYAfACEAIAAiACQAJgAoACoAK0AtQC9AMUAXgBmAF4AZgBeAGYAzQDVAF4AZgDRANkA3gDmAOwA9AD8AAQBDAEUARoBIgGAAIgAJwEvATcBPwFFAU0BTAFUAVwBZAFsAXMBewGDATAAiwGTAZsBogGkAawBtAG8AcIBygHSAdoB4AHoAfAB+AH+AQYCDgIWAv4BHgImAi4CNgI+AkUCTQJTAlsCYwJrAnECeQKBAk0CiQKRApkCoQKoArACuALAAsQCzAIwANQC3ALkAjAA7AL0AvwCAQMJAxADGAMwACADJgMuAzYDPgOAAEYDSgNSA1IDUgNaA1oDYANiA2IDgACAAGoDgAByA3YDfgOAAIQDgACKA5IDmgOAAIAAogOqA4AAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAK8DtwOAAIAAvwPHA88D1wPfAyAD5wPsA/QD/AOAAIAABAQMBBIEgAAWBB4EJgQuBDMEIAM7BEEEXgBJBCADUQRZBGEEaQQwADAAcQQ+AXkEgQSJBJEEgACYBIAAoASoBK8EtwQwAL8ExQSAAIAAgACAAIAAgACgAM0EXgBeAF4AXgBeAF4AXgBeANUEXgDZBOEEXgDpBPEE+QQBBQkFEQUZBSEFKQUxBTUFPQVFBUwFVAVcBV4AYwVeAGsFcwV7BYMFiwWSBV4AmgWgBacFXgBeAF4AXgBeAKsFXgCyBbEFugW7BcIFwgXIBcIFwgXQBdQF3AXkBesF8wX7BQMGCwYTBhsGIwYrBjMGOwZeAD8GRwZNBl4AVAZbBl4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAGMGXgBqBnEGXgBeAF4AXgBeAF4AXgBeAF4AXgB5BoAG4wSGBo4GkwaAAIADHgR5AF4AXgBeAJsGgABGA4AAowarBrMGswagALsGwwbLBjAA0wbaBtoG3QbaBtoG2gbaBtoG2gblBusG8wb7BgMHCwcTBxsHCwcjBysHMAc1BzUHOgdCB9oGSgdSB1oHYAfaBloHaAfaBlIH2gbaBtoG2gbaBtoG2gbaBjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHbQdeAF4ANQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQd1B30HNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B4MH2gaKB68EgACAAIAAgACAAIAAgACAAI8HlwdeAJ8HpweAAIAArwe3B14AXgC/B8UHygcwANAH2AfgB4AA6AfwBz4B+AcACFwBCAgPCBcIogEYAR8IJwiAAC8INwg/CCADRwhPCFcIXwhnCEoDGgSAAIAAgABvCHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIhAiLCI4IMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAANQc1BzUHNQc1BzUHNQc1BzUHNQc1B54INQc1B6II2gaqCLIIugiAAIAAvgjGCIAAgACAAIAAgACAAIAAgACAAIAAywiHAYAA0wiAANkI3QjlCO0I9Aj8CIAAgACAAAIJCgkSCRoJIgknCTYHLwk3CZYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiAAIAAAAFAAXgBeAGAAcABeAHwAQACQAKAArQC9AJ4AXgBeAE0A3gBRAN4A7AD8AMwBGgEAAKcBNwEFAUwBXAF4QkhCmEKnArcCgAHHAsABz4LAAcABwAHAAd+C6ABoAG+C/4LAAcABwAHAAc+DF4MAAcAB54M3gweDV4Nng3eDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEeDqABVg6WDqABoQ6gAaABoAHXDvcONw/3DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DncPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB7cPPwlGCU4JMACAAIAAgABWCV4JYQmAAGkJcAl4CXwJgAkwADAAMAAwAIgJgACLCZMJgACZCZ8JowmrCYAAswkwAF4AXgB8AIAAuwkABMMJyQmAAM4JgADVCTAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAqwYWBNkIMAAwADAAMADdCeAJ6AnuCR4E9gkwAP4JBQoNCjAAMACAABUK0wiAAB0KJAosCjQKgAAwADwKQwqAAEsKvQmdCVMKWwowADAAgACAALcEMACAAGMKgABrCjAAMAAwADAAMAAwADAAMAAwADAAMAAeBDAAMAAwADAAMAAwADAAMAAwADAAMAAwAIkEPQFzCnoKiQSCCooKkAqJBJgKoAqkCokEGAGsCrQKvArBCjAAMADJCtEKFQHZCuEK/gHpCvEKMAAwADAAMACAAIwE+QowAIAAPwEBCzAAMAAwADAAMACAAAkLEQswAIAAPwEZCyELgAAOCCkLMAAxCzkLMAAwADAAMAAwADAAXgBeAEELMAAwADAAMAAwADAAMAAwAEkLTQtVC4AAXAtkC4AAiQkwADAAMAAwADAAMAAwADAAbAtxC3kLgAuFC4sLMAAwAJMLlwufCzAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAApwswADAAMACAAIAAgACvC4AAgACAAIAAgACAALcLMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAvwuAAMcLgACAAIAAgACAAIAAyguAAIAAgACAAIAA0QswADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAANkLgACAAIAA4AswADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACJCR4E6AswADAAhwHwC4AA+AsADAgMEAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACAAIAAGAwdDCUMMAAwAC0MNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQw1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHPQwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADUHNQc1BzUHNQc1BzUHNQc2BzAAMAA5DDUHNQc1BzUHNQc1BzUHNQc1BzUHNQdFDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAATQxSDFoMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAF4AXgBeAF4AXgBeAF4AYgxeAGoMXgBxDHkMfwxeAIUMXgBeAI0MMAAwADAAMAAwAF4AXgCVDJ0MMAAwADAAMABeAF4ApQxeAKsMswy7DF4Awgy9DMoMXgBeAF4AXgBeAF4AXgBeAF4AXgDRDNkMeQBqCeAM3Ax8AOYM7Az0DPgMXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgCgAAANoAAHDQ4NFg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAeDSYNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAC4NMABeAF4ANg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAD4NRg1ODVYNXg1mDTAAbQ0wADAAMAAwADAAMAAwADAA2gbaBtoG2gbaBtoG2gbaBnUNeg3CBYANwgWFDdoGjA3aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gaUDZwNpA2oDdoG2gawDbcNvw3HDdoG2gbPDdYN3A3fDeYN2gbsDfMN2gbaBvoN/g3aBgYODg7aBl4AXgBeABYOXgBeACUG2gYeDl4AJA5eACwO2w3aBtoGMQ45DtoG2gbaBtoGQQ7aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B1EO2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQdZDjUHNQc1BzUHNQc1B2EONQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHaA41BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B3AO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B2EO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBkkOeA6gAKAAoAAwADAAMAAwAKAAoACgAKAAoACgAKAAgA4wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAD//wQABAAEAAQABAAEAAQABAAEAA0AAwABAAEAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAKABMAFwAeABsAGgAeABcAFgASAB4AGwAYAA8AGAAcAEsASwBLAEsASwBLAEsASwBLAEsAGAAYAB4AHgAeABMAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAFgAbABIAHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYADQARAB4ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkAFgAaABsAGwAbAB4AHQAdAB4ATwAXAB4ADQAeAB4AGgAbAE8ATwAOAFAAHQAdAB0ATwBPABcATwBPAE8AFgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwArAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAAQABAANAA0ASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAUAArACsAKwArACsAKwArACsABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAGgAaAFAAUABQAFAAUABMAB4AGwBQAB4AKwArACsABAAEAAQAKwBQAFAAUABQAFAAUAArACsAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUAArAFAAUAArACsABAArAAQABAAEAAQABAArACsAKwArAAQABAArACsABAAEAAQAKwArACsABAArACsAKwArACsAKwArAFAAUABQAFAAKwBQACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwAEAAQAUABQAFAABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQAKwArAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeABsAKwArACsAKwArACsAKwBQAAQABAAEAAQABAAEACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAKwArACsAKwArACsAKwArAAQABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwAEAFAAKwBQAFAAUABQAFAAUAArACsAKwBQAFAAUAArAFAAUABQAFAAKwArACsAUABQACsAUAArAFAAUAArACsAKwBQAFAAKwArACsAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQAKwArACsABAAEAAQAKwAEAAQABAAEACsAKwBQACsAKwArACsAKwArAAQAKwArACsAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAB4AHgAeAB4AHgAeABsAHgArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArAFAAUABQACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAB4AUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArACsAKwArACsAKwArAFAAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwArAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAKwBcAFwAKwBcACsAKwBcACsAKwArACsAKwArAFwAXABcAFwAKwBcAFwAXABcAFwAXABcACsAXABcAFwAKwBcACsAXAArACsAXABcACsAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgArACoAKgBcACsAKwBcAFwAXABcAFwAKwBcACsAKgAqACoAKgAqACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAFwAXABcAFwAUAAOAA4ADgAOAB4ADgAOAAkADgAOAA0ACQATABMAEwATABMACQAeABMAHgAeAB4ABAAEAB4AHgAeAB4AHgAeAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUAANAAQAHgAEAB4ABAAWABEAFgARAAQABABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAAQABAAEAAQABAANAAQABABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsADQANAB4AHgAeAB4AHgAeAAQAHgAeAB4AHgAeAB4AKwAeAB4ADgAOAA0ADgAeAB4AHgAeAB4ACQAJACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgAeAB4AHgBcAFwAXABcAFwAXAAqACoAKgAqAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAKgAqACoAKgAqACoAKgBcAFwAXAAqACoAKgAqAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAXAAqAEsASwBLAEsASwBLAEsASwBLAEsAKgAqACoAKgAqACoAUABQAFAAUABQAFAAKwBQACsAKwArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQACsAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwAEAAQABAAeAA0AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAEQArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAADQANAA0AUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAA0ADQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoADQANABUAXAANAB4ADQAbAFwAKgArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAB4AHgATABMADQANAA4AHgATABMAHgAEAAQABAAJACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAUABQAFAAUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwAeACsAKwArABMAEwBLAEsASwBLAEsASwBLAEsASwBLAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwBcAFwAXABcAFwAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcACsAKwArACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwAeAB4AXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsABABLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKgAqACoAKgAqACoAKgBcACoAKgAqACoAKgAqACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAUABQAFAAUABQAFAAUAArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4ADQANAA0ADQAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAHgAeAB4AHgBQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwANAA0ADQANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwBQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsABAAEAAQAHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAABABQAFAAUABQAAQABAAEAFAAUAAEAAQABAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAKwBQACsAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAKwArAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAKwAeAB4AHgAeAB4AHgAeAA4AHgArAA0ADQANAA0ADQANAA0ACQANAA0ADQAIAAQACwAEAAQADQAJAA0ADQAMAB0AHQAeABcAFwAWABcAFwAXABYAFwAdAB0AHgAeABQAFAAUAA0AAQABAAQABAAEAAQABAAJABoAGgAaABoAGgAaABoAGgAeABcAFwAdABUAFQAeAB4AHgAeAB4AHgAYABYAEQAVABUAFQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgANAB4ADQANAA0ADQAeAA0ADQANAAcAHgAeAB4AHgArAAQABAAEAAQABAAEAAQABAAEAAQAUABQACsAKwBPAFAAUABQAFAAUAAeAB4AHgAWABEATwBQAE8ATwBPAE8AUABQAFAAUABQAB4AHgAeABYAEQArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGgAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgBQABoAHgAdAB4AUAAeABoAHgAeAB4AHgAeAB4AHgAeAB4ATwAeAFAAGwAeAB4AUABQAFAAUABQAB4AHgAeAB0AHQAeAFAAHgBQAB4AUAAeAFAATwBQAFAAHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AUABQAFAAUABPAE8AUABQAFAAUABQAE8AUABQAE8AUABPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAE8ATwBPAE8ATwBPAE8ATwBPAE8AUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAATwAeAB4AKwArACsAKwAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB0AHQAeAB4AHgAdAB0AHgAeAB0AHgAeAB4AHQAeAB0AGwAbAB4AHQAeAB4AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB0AHgAdAB4AHQAdAB0AHQAdAB0AHgAdAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAdAB0AHQAdAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAlACUAHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB0AHQAeAB4AHgAeAB0AHQAdAB4AHgAdAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB0AHQAeAB4AHQAeAB4AHgAeAB0AHQAeAB4AHgAeACUAJQAdAB0AJQAeACUAJQAlACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHQAdAB0AHgAdACUAHQAdAB4AHQAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHQAdAB0AHQAlAB4AJQAlACUAHQAlACUAHQAdAB0AJQAlAB0AHQAlAB0AHQAlACUAJQAeAB0AHgAeAB4AHgAdAB0AJQAdAB0AHQAdAB0AHQAlACUAJQAlACUAHQAlACUAIAAlAB0AHQAlACUAJQAlACUAJQAlACUAHgAeAB4AJQAlACAAIAAgACAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeABcAFwAXABcAFwAXAB4AEwATACUAHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACUAJQBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwArACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAE8ATwBPAE8ATwBPAE8ATwAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeACsAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUAArACsAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQBQAFAAUABQACsAKwArACsAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAABAAEAAQAKwAEAAQAKwArACsAKwArAAQABAAEAAQAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsABAAEAAQAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsADQANAA0ADQANAA0ADQANAB4AKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAUABQAFAAUABQAA0ADQANAA0ADQANABQAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwANAA0ADQANAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAeAAQABAAEAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLACsADQArAB4AKwArAAQABAAEAAQAUABQAB4AUAArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwAEAAQABAAEAAQABAAEAAQABAAOAA0ADQATABMAHgAeAB4ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0AUABQAFAAUAAEAAQAKwArAAQADQANAB4AUAArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXABcAA0ADQANACoASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUAArACsAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANACsADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEcARwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwAeAAQABAANAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAEAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUAArACsAUAArACsAUABQACsAKwBQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAeAB4ADQANAA0ADQAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAArAAQABAArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAEAAQABAAEAAQABAAEACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAFgAWAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAKwBQACsAKwArACsAKwArAFAAKwArACsAKwBQACsAUAArAFAAKwBQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQACsAUAArAFAAKwBQACsAUABQACsAUAArACsAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAUABQAFAAUAArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUAArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAlACUAJQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeACUAJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeACUAJQAlACUAJQAeACUAJQAlACUAJQAgACAAIAAlACUAIAAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIQAhACEAIQAhACUAJQAgACAAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAIAAlACUAJQAlACAAJQAgACAAIAAgACAAIAAgACAAIAAlACUAJQAgACUAJQAlACUAIAAgACAAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeACUAHgAlAB4AJQAlACUAJQAlACAAJQAlACUAJQAeACUAHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAIAAgACAAIAAgAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFwAXABcAFQAVABUAHgAeAB4AHgAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAlACAAIAAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsA';

	/* @flow */
	var LETTER_NUMBER_MODIFIER = 50;
	// Non-tailorable Line Breaking Classes
	var BK = 1; //  Cause a line break (after)
	var CR = 2; //  Cause a line break (after), except between CR and LF
	var LF = 3; //  Cause a line break (after)
	var CM = 4; //  Prohibit a line break between the character and the preceding character
	var NL = 5; //  Cause a line break (after)
	var WJ = 7; //  Prohibit line breaks before and after
	var ZW = 8; //  Provide a break opportunity
	var GL = 9; //  Prohibit line breaks before and after
	var SP = 10; // Enable indirect line breaks
	var ZWJ = 11; // Prohibit line breaks within joiner sequences
	// Break Opportunities
	var B2 = 12; //  Provide a line break opportunity before and after the character
	var BA = 13; //  Generally provide a line break opportunity after the character
	var BB = 14; //  Generally provide a line break opportunity before the character
	var HY = 15; //  Provide a line break opportunity after the character, except in numeric context
	var CB = 16; //   Provide a line break opportunity contingent on additional information
	// Characters Prohibiting Certain Breaks
	var CL = 17; //  Prohibit line breaks before
	var CP = 18; //  Prohibit line breaks before
	var EX = 19; //  Prohibit line breaks before
	var IN = 20; //  Allow only indirect line breaks between pairs
	var NS = 21; //  Allow only indirect line breaks before
	var OP = 22; //  Prohibit line breaks after
	var QU = 23; //  Act like they are both opening and closing
	// Numeric Context
	var IS = 24; //  Prevent breaks after any and before numeric
	var NU = 25; //  Form numeric expressions for line breaking purposes
	var PO = 26; //  Do not break following a numeric expression
	var PR = 27; //  Do not break in front of a numeric expression
	var SY = 28; //  Prevent a break before; and allow a break after
	// Other Characters
	var AI = 29; //  Act like AL when the resolvedEAW is N; otherwise; act as ID
	var AL = 30; //  Are alphabetic characters or symbols that are used with alphabetic characters
	var CJ = 31; //  Treat as NS or ID for strict or normal breaking.
	var EB = 32; //  Do not break from following Emoji Modifier
	var EM = 33; //  Do not break from preceding Emoji Base
	var H2 = 34; //  Form Korean syllable blocks
	var H3 = 35; //  Form Korean syllable blocks
	var HL = 36; //  Do not break around a following hyphen; otherwise act as Alphabetic
	var ID = 37; //  Break before or after; except in some numeric context
	var JL = 38; //  Form Korean syllable blocks
	var JV = 39; //  Form Korean syllable blocks
	var JT = 40; //  Form Korean syllable blocks
	var RI = 41; //  Keep pairs together. For pairs; break before and after other classes
	var SA = 42; //  Provide a line break opportunity contingent on additional, language-specific context analysis
	var XX = 43; //  Have as yet unknown line breaking behavior or unassigned code positions
	var BREAK_MANDATORY = '!';
	var BREAK_NOT_ALLOWED = '×';
	var BREAK_ALLOWED = '÷';
	var UnicodeTrie = createTrieFromBase64(base64);
	var ALPHABETICS = [AL, HL];
	var HARD_LINE_BREAKS = [BK, CR, LF, NL];
	var SPACE = [SP, ZW];
	var PREFIX_POSTFIX = [PR, PO];
	var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);
	var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];
	var HYPHEN = [HY, BA];
	var codePointsToCharacterClasses = function (codePoints, lineBreak) {
		if (lineBreak === void 0) { lineBreak = 'strict'; }
		var types = [];
		var indicies = [];
		var categories = [];
		codePoints.forEach(function (codePoint, index) {
			var classType = UnicodeTrie.get(codePoint);
			if (classType > LETTER_NUMBER_MODIFIER) {
				categories.push(true);
				classType -= LETTER_NUMBER_MODIFIER;
			}
			else {
				categories.push(false);
			}
			if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {
				// U+2010, – U+2013, 〜 U+301C, ゠ U+30A0
				if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {
					indicies.push(index);
					return types.push(CB);
				}
			}
			if (classType === CM || classType === ZWJ) {
				// LB10 Treat any remaining combining mark or ZWJ as AL.
				if (index === 0) {
					indicies.push(index);
					return types.push(AL);
				}
				// LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of
				// the base character in all of the following rules. Treat ZWJ as if it were CM.
				var prev = types[index - 1];
				if (LINE_BREAKS.indexOf(prev) === -1) {
					indicies.push(indicies[index - 1]);
					return types.push(prev);
				}
				indicies.push(index);
				return types.push(AL);
			}
			indicies.push(index);
			if (classType === CJ) {
				return types.push(lineBreak === 'strict' ? NS : ID);
			}
			if (classType === SA) {
				return types.push(AL);
			}
			if (classType === AI) {
				return types.push(AL);
			}
			// For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL
			// and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised
			// to take into account the actual line breaking properties for these characters.
			if (classType === XX) {
				if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {
					return types.push(ID);
				}
				else {
					return types.push(AL);
				}
			}
			types.push(classType);
		});
		return [indicies, types, categories];
	};
	var isAdjacentWithSpaceIgnored = function (a, b, currentIndex, classTypes) {
		var current = classTypes[currentIndex];
		if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {
			var i = currentIndex;
			while (i <= classTypes.length) {
				i++;
				var next = classTypes[i];
				if (next === b) {
					return true;
				}
				if (next !== SP) {
					break;
				}
			}
		}
		if (current === SP) {
			var i = currentIndex;
			while (i > 0) {
				i--;
				var prev = classTypes[i];
				if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {
					var n = currentIndex;
					while (n <= classTypes.length) {
						n++;
						var next = classTypes[n];
						if (next === b) {
							return true;
						}
						if (next !== SP) {
							break;
						}
					}
				}
				if (prev !== SP) {
					break;
				}
			}
		}
		return false;
	};
	var previousNonSpaceClassType = function (currentIndex, classTypes) {
		var i = currentIndex;
		while (i >= 0) {
			var type = classTypes[i];
			if (type === SP) {
				i--;
			}
			else {
				return type;
			}
		}
		return 0;
	};
	var _lineBreakAtIndex = function (codePoints, classTypes, indicies, index, forbiddenBreaks) {
		if (indicies[index] === 0) {
			return BREAK_NOT_ALLOWED;
		}
		var currentIndex = index - 1;
		if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {
			return BREAK_NOT_ALLOWED;
		}
		var beforeIndex = currentIndex - 1;
		var afterIndex = currentIndex + 1;
		var current = classTypes[currentIndex];
		// LB4 Always break after hard line breaks.
		// LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.
		var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;
		var next = classTypes[afterIndex];
		if (current === CR && next === LF) {
			return BREAK_NOT_ALLOWED;
		}
		if (HARD_LINE_BREAKS.indexOf(current) !== -1) {
			return BREAK_MANDATORY;
		}
		// LB6 Do not break before hard line breaks.
		if (HARD_LINE_BREAKS.indexOf(next) !== -1) {
			return BREAK_NOT_ALLOWED;
		}
		// LB7 Do not break before spaces or zero width space.
		if (SPACE.indexOf(next) !== -1) {
			return BREAK_NOT_ALLOWED;
		}
		// LB8 Break before any character following a zero-width space, even if one or more spaces intervene.
		if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {
			return BREAK_ALLOWED;
		}
		// LB8a Do not break between a zero width joiner and an ideograph, emoji base or emoji modifier.
		if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ && (next === ID || next === EB || next === EM)) {
			return BREAK_NOT_ALLOWED;
		}
		// LB11 Do not break before or after Word joiner and related characters.
		if (current === WJ || next === WJ) {
			return BREAK_NOT_ALLOWED;
		}
		// LB12 Do not break after NBSP and related characters.
		if (current === GL) {
			return BREAK_NOT_ALLOWED;
		}
		// LB12a Do not break before NBSP and related characters, except after spaces and hyphens.
		if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {
			return BREAK_NOT_ALLOWED;
		}
		// LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.
		if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {
			return BREAK_NOT_ALLOWED;
		}
		// LB14 Do not break after ‘[’, even after spaces.
		if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {
			return BREAK_NOT_ALLOWED;
		}
		// LB15 Do not break within ‘”[’, even with intervening spaces.
		if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {
			return BREAK_NOT_ALLOWED;
		}
		// LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.
		if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {
			return BREAK_NOT_ALLOWED;
		}
		// LB17 Do not break within ‘——’, even with intervening spaces.
		if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {
			return BREAK_NOT_ALLOWED;
		}
		// LB18 Break after spaces.
		if (current === SP) {
			return BREAK_ALLOWED;
		}
		// LB19 Do not break before or after quotation marks, such as ‘ ” ’.
		if (current === QU || next === QU) {
			return BREAK_NOT_ALLOWED;
		}
		// LB20 Break before and after unresolved CB.
		if (next === CB || current === CB) {
			return BREAK_ALLOWED;
		}
		// LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.
		if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {
			return BREAK_NOT_ALLOWED;
		}
		// LB21a Don't break after Hebrew + Hyphen.
		if (before === HL && HYPHEN.indexOf(current) !== -1) {
			return BREAK_NOT_ALLOWED;
		}
		// LB21b Don’t break between Solidus and Hebrew letters.
		if (current === SY && next === HL) {
			return BREAK_NOT_ALLOWED;
		}
		// LB22 Do not break between two ellipses, or between letters, numbers or exclamations and ellipsis.
		if (next === IN && ALPHABETICS.concat(IN, EX, NU, ID, EB, EM).indexOf(current) !== -1) {
			return BREAK_NOT_ALLOWED;
		}
		// LB23 Do not break between digits and letters.
		if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {
			return BREAK_NOT_ALLOWED;
		}
		// LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.
		if ((current === PR && [ID, EB, EM].indexOf(next) !== -1) ||
			([ID, EB, EM].indexOf(current) !== -1 && next === PO)) {
			return BREAK_NOT_ALLOWED;
		}
		// LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.
		if ((ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||
			(PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)) {
			return BREAK_NOT_ALLOWED;
		}
		// LB25 Do not break between the following pairs of classes relevant to numbers:
		if (
			// (PR | PO) × ( OP | HY )? NU
			([PR, PO].indexOf(current) !== -1 &&
				(next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||
			// ( OP | HY ) × NU
			([OP, HY].indexOf(current) !== -1 && next === NU) ||
			// NU ×	(NU | SY | IS)
			(current === NU && [NU, SY, IS].indexOf(next) !== -1)) {
			return BREAK_NOT_ALLOWED;
		}
		// NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)
		if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {
			var prevIndex = currentIndex;
			while (prevIndex >= 0) {
				var type = classTypes[prevIndex];
				if (type === NU) {
					return BREAK_NOT_ALLOWED;
				}
				else if ([SY, IS].indexOf(type) !== -1) {
					prevIndex--;
				}
				else {
					break;
				}
			}
		}
		// NU (NU | SY | IS)* (CL | CP)? × (PO | PR))
		if ([PR, PO].indexOf(next) !== -1) {
			var prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;
			while (prevIndex >= 0) {
				var type = classTypes[prevIndex];
				if (type === NU) {
					return BREAK_NOT_ALLOWED;
				}
				else if ([SY, IS].indexOf(type) !== -1) {
					prevIndex--;
				}
				else {
					break;
				}
			}
		}
		// LB26 Do not break a Korean syllable.
		if ((JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||
			([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||
			([JT, H3].indexOf(current) !== -1 && next === JT)) {
			return BREAK_NOT_ALLOWED;
		}
		// LB27 Treat a Korean Syllable Block the same as ID.
		if ((KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||
			(KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)) {
			return BREAK_NOT_ALLOWED;
		}
		// LB28 Do not break between alphabetics (“at”).
		if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {
			return BREAK_NOT_ALLOWED;
		}
		// LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).
		if (current === IS && ALPHABETICS.indexOf(next) !== -1) {
			return BREAK_NOT_ALLOWED;
		}
		// LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.
		if ((ALPHABETICS.concat(NU).indexOf(current) !== -1 && next === OP) ||
			(ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)) {
			return BREAK_NOT_ALLOWED;
		}
		// LB30a Break between two regional indicator symbols if and only if there are an even number of regional
		// indicators preceding the position of the break.
		if (current === RI && next === RI) {
			var i = indicies[currentIndex];
			var count = 1;
			while (i > 0) {
				i--;
				if (classTypes[i] === RI) {
					count++;
				}
				else {
					break;
				}
			}
			if (count % 2 !== 0) {
				return BREAK_NOT_ALLOWED;
			}
		}
		// LB30b Do not break between an emoji base and an emoji modifier.
		if (current === EB && next === EM) {
			return BREAK_NOT_ALLOWED;
		}
		return BREAK_ALLOWED;
	};
	var cssFormattedClasses = function (codePoints, options) {
		if (!options) {
			options = { lineBreak: 'normal', wordBreak: 'normal' };
		}
		var _a = codePointsToCharacterClasses(codePoints, options.lineBreak), indicies = _a[0], classTypes = _a[1], isLetterNumber = _a[2];
		if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {
			classTypes = classTypes.map(function (type) { return ([NU, AL, SA].indexOf(type) !== -1 ? ID : type); });
		}
		var forbiddenBreakpoints = options.wordBreak === 'keep-all'
			? isLetterNumber.map(function (letterNumber, i) {
				return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;
			})
			: undefined;
		return [indicies, classTypes, forbiddenBreakpoints];
	};
	var Break = /** @class */ (function () {
		function Break(codePoints, lineBreak, start, end) {
			this.codePoints = codePoints;
			this.required = lineBreak === BREAK_MANDATORY;
			this.start = start;
			this.end = end;
		}
		Break.prototype.slice = function () {
			return fromCodePoint.apply(void 0, this.codePoints.slice(this.start, this.end));
		};
		return Break;
	}());
	var LineBreaker = function (str, options) {
		var codePoints = toCodePoints(str);
		var _a = cssFormattedClasses(codePoints, options), indicies = _a[0], classTypes = _a[1], forbiddenBreakpoints = _a[2];
		var length = codePoints.length;
		var lastEnd = 0;
		var nextIndex = 0;
		return {
			next: function () {
				if (nextIndex >= length) {
					return { done: true, value: null };
				}
				var lineBreak = BREAK_NOT_ALLOWED;
				while (nextIndex < length &&
				(lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===
				BREAK_NOT_ALLOWED) { }
				if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {
					var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);
					lastEnd = nextIndex;
					return { value: value, done: false };
				}
				return { done: true, value: null };
			},
		};
	};

	// https://www.w3.org/TR/css-syntax-3
	var TokenType;
	(function (TokenType) {
		TokenType[TokenType["STRING_TOKEN"] = 0] = "STRING_TOKEN";
		TokenType[TokenType["BAD_STRING_TOKEN"] = 1] = "BAD_STRING_TOKEN";
		TokenType[TokenType["LEFT_PARENTHESIS_TOKEN"] = 2] = "LEFT_PARENTHESIS_TOKEN";
		TokenType[TokenType["RIGHT_PARENTHESIS_TOKEN"] = 3] = "RIGHT_PARENTHESIS_TOKEN";
		TokenType[TokenType["COMMA_TOKEN"] = 4] = "COMMA_TOKEN";
		TokenType[TokenType["HASH_TOKEN"] = 5] = "HASH_TOKEN";
		TokenType[TokenType["DELIM_TOKEN"] = 6] = "DELIM_TOKEN";
		TokenType[TokenType["AT_KEYWORD_TOKEN"] = 7] = "AT_KEYWORD_TOKEN";
		TokenType[TokenType["PREFIX_MATCH_TOKEN"] = 8] = "PREFIX_MATCH_TOKEN";
		TokenType[TokenType["DASH_MATCH_TOKEN"] = 9] = "DASH_MATCH_TOKEN";
		TokenType[TokenType["INCLUDE_MATCH_TOKEN"] = 10] = "INCLUDE_MATCH_TOKEN";
		TokenType[TokenType["LEFT_CURLY_BRACKET_TOKEN"] = 11] = "LEFT_CURLY_BRACKET_TOKEN";
		TokenType[TokenType["RIGHT_CURLY_BRACKET_TOKEN"] = 12] = "RIGHT_CURLY_BRACKET_TOKEN";
		TokenType[TokenType["SUFFIX_MATCH_TOKEN"] = 13] = "SUFFIX_MATCH_TOKEN";
		TokenType[TokenType["SUBSTRING_MATCH_TOKEN"] = 14] = "SUBSTRING_MATCH_TOKEN";
		TokenType[TokenType["DIMENSION_TOKEN"] = 15] = "DIMENSION_TOKEN";
		TokenType[TokenType["PERCENTAGE_TOKEN"] = 16] = "PERCENTAGE_TOKEN";
		TokenType[TokenType["NUMBER_TOKEN"] = 17] = "NUMBER_TOKEN";
		TokenType[TokenType["FUNCTION"] = 18] = "FUNCTION";
		TokenType[TokenType["FUNCTION_TOKEN"] = 19] = "FUNCTION_TOKEN";
		TokenType[TokenType["IDENT_TOKEN"] = 20] = "IDENT_TOKEN";
		TokenType[TokenType["COLUMN_TOKEN"] = 21] = "COLUMN_TOKEN";
		TokenType[TokenType["URL_TOKEN"] = 22] = "URL_TOKEN";
		TokenType[TokenType["BAD_URL_TOKEN"] = 23] = "BAD_URL_TOKEN";
		TokenType[TokenType["CDC_TOKEN"] = 24] = "CDC_TOKEN";
		TokenType[TokenType["CDO_TOKEN"] = 25] = "CDO_TOKEN";
		TokenType[TokenType["COLON_TOKEN"] = 26] = "COLON_TOKEN";
		TokenType[TokenType["SEMICOLON_TOKEN"] = 27] = "SEMICOLON_TOKEN";
		TokenType[TokenType["LEFT_SQUARE_BRACKET_TOKEN"] = 28] = "LEFT_SQUARE_BRACKET_TOKEN";
		TokenType[TokenType["RIGHT_SQUARE_BRACKET_TOKEN"] = 29] = "RIGHT_SQUARE_BRACKET_TOKEN";
		TokenType[TokenType["UNICODE_RANGE_TOKEN"] = 30] = "UNICODE_RANGE_TOKEN";
		TokenType[TokenType["WHITESPACE_TOKEN"] = 31] = "WHITESPACE_TOKEN";
		TokenType[TokenType["EOF_TOKEN"] = 32] = "EOF_TOKEN";
	})(TokenType || (TokenType = {}));
	var FLAG_UNRESTRICTED = 1 << 0;
	var FLAG_ID = 1 << 1;
	var FLAG_INTEGER = 1 << 2;
	var FLAG_NUMBER = 1 << 3;
	var LINE_FEED = 0x000a;
	var SOLIDUS = 0x002f;
	var REVERSE_SOLIDUS = 0x005c;
	var CHARACTER_TABULATION = 0x0009;
	var SPACE$1 = 0x0020;
	var QUOTATION_MARK = 0x0022;
	var EQUALS_SIGN = 0x003d;
	var NUMBER_SIGN = 0x0023;
	var DOLLAR_SIGN = 0x0024;
	var PERCENTAGE_SIGN = 0x0025;
	var APOSTROPHE = 0x0027;
	var LEFT_PARENTHESIS = 0x0028;
	var RIGHT_PARENTHESIS = 0x0029;
	var LOW_LINE = 0x005f;
	var HYPHEN_MINUS = 0x002d;
	var EXCLAMATION_MARK = 0x0021;
	var LESS_THAN_SIGN = 0x003c;
	var GREATER_THAN_SIGN = 0x003e;
	var COMMERCIAL_AT = 0x0040;
	var LEFT_SQUARE_BRACKET = 0x005b;
	var RIGHT_SQUARE_BRACKET = 0x005d;
	var CIRCUMFLEX_ACCENT = 0x003d;
	var LEFT_CURLY_BRACKET = 0x007b;
	var QUESTION_MARK = 0x003f;
	var RIGHT_CURLY_BRACKET = 0x007d;
	var VERTICAL_LINE = 0x007c;
	var TILDE = 0x007e;
	var CONTROL = 0x0080;
	var REPLACEMENT_CHARACTER = 0xfffd;
	var ASTERISK = 0x002a;
	var PLUS_SIGN = 0x002b;
	var COMMA = 0x002c;
	var COLON = 0x003a;
	var SEMICOLON = 0x003b;
	var FULL_STOP = 0x002e;
	var NULL = 0x0000;
	var BACKSPACE = 0x0008;
	var LINE_TABULATION = 0x000b;
	var SHIFT_OUT = 0x000e;
	var INFORMATION_SEPARATOR_ONE = 0x001f;
	var DELETE = 0x007f;
	var EOF = -1;
	var ZERO = 0x0030;
	var a = 0x0061;
	var e = 0x0065;
	var f = 0x0066;
	var u = 0x0075;
	var z = 0x007a;
	var A = 0x0041;
	var E = 0x0045;
	var F = 0x0046;
	var U = 0x0055;
	var Z = 0x005a;
	var isDigit = function (codePoint) { return codePoint >= ZERO && codePoint <= 0x0039; };
	var isSurrogateCodePoint = function (codePoint) { return codePoint >= 0xd800 && codePoint <= 0xdfff; };
	var isHex = function (codePoint) {
		return isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);
	};
	var isLowerCaseLetter = function (codePoint) { return codePoint >= a && codePoint <= z; };
	var isUpperCaseLetter = function (codePoint) { return codePoint >= A && codePoint <= Z; };
	var isLetter = function (codePoint) { return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint); };
	var isNonASCIICodePoint = function (codePoint) { return codePoint >= CONTROL; };
	var isWhiteSpace = function (codePoint) {
		return codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE$1;
	};
	var isNameStartCodePoint = function (codePoint) {
		return isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;
	};
	var isNameCodePoint = function (codePoint) {
		return isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;
	};
	var isNonPrintableCodePoint = function (codePoint) {
		return ((codePoint >= NULL && codePoint <= BACKSPACE) ||
			codePoint === LINE_TABULATION ||
			(codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||
			codePoint === DELETE);
	};
	var isValidEscape = function (c1, c2) {
		if (c1 !== REVERSE_SOLIDUS) {
			return false;
		}
		return c2 !== LINE_FEED;
	};
	var isIdentifierStart = function (c1, c2, c3) {
		if (c1 === HYPHEN_MINUS) {
			return isNameStartCodePoint(c2) || isValidEscape(c2, c3);
		}
		else if (isNameStartCodePoint(c1)) {
			return true;
		}
		else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {
			return true;
		}
		return false;
	};
	var isNumberStart = function (c1, c2, c3) {
		if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
			if (isDigit(c2)) {
				return true;
			}
			return c2 === FULL_STOP && isDigit(c3);
		}
		if (c1 === FULL_STOP) {
			return isDigit(c2);
		}
		return isDigit(c1);
	};
	var stringToNumber = function (codePoints) {
		var c = 0;
		var sign = 1;
		if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {
			if (codePoints[c] === HYPHEN_MINUS) {
				sign = -1;
			}
			c++;
		}
		var integers = [];
		while (isDigit(codePoints[c])) {
			integers.push(codePoints[c++]);
		}
		var int = integers.length ? parseInt(fromCodePoint.apply(void 0, integers), 10) : 0;
		if (codePoints[c] === FULL_STOP) {
			c++;
		}
		var fraction = [];
		while (isDigit(codePoints[c])) {
			fraction.push(codePoints[c++]);
		}
		var fracd = fraction.length;
		var frac = fracd ? parseInt(fromCodePoint.apply(void 0, fraction), 10) : 0;
		if (codePoints[c] === E || codePoints[c] === e) {
			c++;
		}
		var expsign = 1;
		if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {
			if (codePoints[c] === HYPHEN_MINUS) {
				expsign = -1;
			}
			c++;
		}
		var exponent = [];
		while (isDigit(codePoints[c])) {
			exponent.push(codePoints[c++]);
		}
		var exp = exponent.length ? parseInt(fromCodePoint.apply(void 0, exponent), 10) : 0;
		return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);
	};
	var LEFT_PARENTHESIS_TOKEN = {
		type: TokenType.LEFT_PARENTHESIS_TOKEN
	};
	var RIGHT_PARENTHESIS_TOKEN = {
		type: TokenType.RIGHT_PARENTHESIS_TOKEN
	};
	var COMMA_TOKEN = { type: TokenType.COMMA_TOKEN };
	var SUFFIX_MATCH_TOKEN = { type: TokenType.SUFFIX_MATCH_TOKEN };
	var PREFIX_MATCH_TOKEN = { type: TokenType.PREFIX_MATCH_TOKEN };
	var COLUMN_TOKEN = { type: TokenType.COLUMN_TOKEN };
	var DASH_MATCH_TOKEN = { type: TokenType.DASH_MATCH_TOKEN };
	var INCLUDE_MATCH_TOKEN = { type: TokenType.INCLUDE_MATCH_TOKEN };
	var LEFT_CURLY_BRACKET_TOKEN = {
		type: TokenType.LEFT_CURLY_BRACKET_TOKEN
	};
	var RIGHT_CURLY_BRACKET_TOKEN = {
		type: TokenType.RIGHT_CURLY_BRACKET_TOKEN
	};
	var SUBSTRING_MATCH_TOKEN = { type: TokenType.SUBSTRING_MATCH_TOKEN };
	var BAD_URL_TOKEN = { type: TokenType.BAD_URL_TOKEN };
	var BAD_STRING_TOKEN = { type: TokenType.BAD_STRING_TOKEN };
	var CDO_TOKEN = { type: TokenType.CDO_TOKEN };
	var CDC_TOKEN = { type: TokenType.CDC_TOKEN };
	var COLON_TOKEN = { type: TokenType.COLON_TOKEN };
	var SEMICOLON_TOKEN = { type: TokenType.SEMICOLON_TOKEN };
	var LEFT_SQUARE_BRACKET_TOKEN = {
		type: TokenType.LEFT_SQUARE_BRACKET_TOKEN
	};
	var RIGHT_SQUARE_BRACKET_TOKEN = {
		type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN
	};
	var WHITESPACE_TOKEN = { type: TokenType.WHITESPACE_TOKEN };
	var EOF_TOKEN = { type: TokenType.EOF_TOKEN };
	var Tokenizer = /** @class */ (function () {
		function Tokenizer() {
			this._value = [];
		}
		Tokenizer.prototype.write = function (chunk) {
			this._value = this._value.concat(toCodePoints(chunk));
		};
		Tokenizer.prototype.read = function () {
			var tokens = [];
			var token = this.consumeToken();
			while (token !== EOF_TOKEN) {
				tokens.push(token);
				token = this.consumeToken();
			}
			return tokens;
		};
		Tokenizer.prototype.consumeToken = function () {
			var codePoint = this.consumeCodePoint();
			switch (codePoint) {
				case QUOTATION_MARK:
					return this.consumeStringToken(QUOTATION_MARK);
				case NUMBER_SIGN:
					var c1 = this.peekCodePoint(0);
					var c2 = this.peekCodePoint(1);
					var c3 = this.peekCodePoint(2);
					if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {
						var flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;
						var value = this.consumeName();
						return { type: TokenType.HASH_TOKEN, value: value, flags: flags };
					}
					break;
				case DOLLAR_SIGN:
					if (this.peekCodePoint(0) === EQUALS_SIGN) {
						this.consumeCodePoint();
						return SUFFIX_MATCH_TOKEN;
					}
					break;
				case APOSTROPHE:
					return this.consumeStringToken(APOSTROPHE);
				case LEFT_PARENTHESIS:
					return LEFT_PARENTHESIS_TOKEN;
				case RIGHT_PARENTHESIS:
					return RIGHT_PARENTHESIS_TOKEN;
				case ASTERISK:
					if (this.peekCodePoint(0) === EQUALS_SIGN) {
						this.consumeCodePoint();
						return SUBSTRING_MATCH_TOKEN;
					}
					break;
				case PLUS_SIGN:
					if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {
						this.reconsumeCodePoint(codePoint);
						return this.consumeNumericToken();
					}
					break;
				case COMMA:
					return COMMA_TOKEN;
				case HYPHEN_MINUS:
					var e1 = codePoint;
					var e2 = this.peekCodePoint(0);
					var e3 = this.peekCodePoint(1);
					if (isNumberStart(e1, e2, e3)) {
						this.reconsumeCodePoint(codePoint);
						return this.consumeNumericToken();
					}
					if (isIdentifierStart(e1, e2, e3)) {
						this.reconsumeCodePoint(codePoint);
						return this.consumeIdentLikeToken();
					}
					if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {
						this.consumeCodePoint();
						this.consumeCodePoint();
						return CDC_TOKEN;
					}
					break;
				case FULL_STOP:
					if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {
						this.reconsumeCodePoint(codePoint);
						return this.consumeNumericToken();
					}
					break;
				case SOLIDUS:
					if (this.peekCodePoint(0) === ASTERISK) {
						this.consumeCodePoint();
						while (true) {
							var c = this.consumeCodePoint();
							if (c === ASTERISK) {
								c = this.consumeCodePoint();
								if (c === SOLIDUS) {
									return this.consumeToken();
								}
							}
							if (c === EOF) {
								return this.consumeToken();
							}
						}
					}
					break;
				case COLON:
					return COLON_TOKEN;
				case SEMICOLON:
					return SEMICOLON_TOKEN;
				case LESS_THAN_SIGN:
					if (this.peekCodePoint(0) === EXCLAMATION_MARK &&
						this.peekCodePoint(1) === HYPHEN_MINUS &&
						this.peekCodePoint(2) === HYPHEN_MINUS) {
						this.consumeCodePoint();
						this.consumeCodePoint();
						return CDO_TOKEN;
					}
					break;
				case COMMERCIAL_AT:
					var a1 = this.peekCodePoint(0);
					var a2 = this.peekCodePoint(1);
					var a3 = this.peekCodePoint(2);
					if (isIdentifierStart(a1, a2, a3)) {
						var value = this.consumeName();
						return { type: TokenType.AT_KEYWORD_TOKEN, value: value };
					}
					break;
				case LEFT_SQUARE_BRACKET:
					return LEFT_SQUARE_BRACKET_TOKEN;
				case REVERSE_SOLIDUS:
					if (isValidEscape(codePoint, this.peekCodePoint(0))) {
						this.reconsumeCodePoint(codePoint);
						return this.consumeIdentLikeToken();
					}
					break;
				case RIGHT_SQUARE_BRACKET:
					return RIGHT_SQUARE_BRACKET_TOKEN;
				case CIRCUMFLEX_ACCENT:
					if (this.peekCodePoint(0) === EQUALS_SIGN) {
						this.consumeCodePoint();
						return PREFIX_MATCH_TOKEN;
					}
					break;
				case LEFT_CURLY_BRACKET:
					return LEFT_CURLY_BRACKET_TOKEN;
				case RIGHT_CURLY_BRACKET:
					return RIGHT_CURLY_BRACKET_TOKEN;
				case u:
				case U:
					var u1 = this.peekCodePoint(0);
					var u2 = this.peekCodePoint(1);
					if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {
						this.consumeCodePoint();
						this.consumeUnicodeRangeToken();
					}
					this.reconsumeCodePoint(codePoint);
					return this.consumeIdentLikeToken();
				case VERTICAL_LINE:
					if (this.peekCodePoint(0) === EQUALS_SIGN) {
						this.consumeCodePoint();
						return DASH_MATCH_TOKEN;
					}
					if (this.peekCodePoint(0) === VERTICAL_LINE) {
						this.consumeCodePoint();
						return COLUMN_TOKEN;
					}
					break;
				case TILDE:
					if (this.peekCodePoint(0) === EQUALS_SIGN) {
						this.consumeCodePoint();
						return INCLUDE_MATCH_TOKEN;
					}
					break;
				case EOF:
					return EOF_TOKEN;
			}
			if (isWhiteSpace(codePoint)) {
				this.consumeWhiteSpace();
				return WHITESPACE_TOKEN;
			}
			if (isDigit(codePoint)) {
				this.reconsumeCodePoint(codePoint);
				return this.consumeNumericToken();
			}
			if (isNameStartCodePoint(codePoint)) {
				this.reconsumeCodePoint(codePoint);
				return this.consumeIdentLikeToken();
			}
			return { type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint) };
		};
		Tokenizer.prototype.consumeCodePoint = function () {
			var value = this._value.shift();
			return typeof value === 'undefined' ? -1 : value;
		};
		Tokenizer.prototype.reconsumeCodePoint = function (codePoint) {
			this._value.unshift(codePoint);
		};
		Tokenizer.prototype.peekCodePoint = function (delta) {
			if (delta >= this._value.length) {
				return -1;
			}
			return this._value[delta];
		};
		Tokenizer.prototype.consumeUnicodeRangeToken = function () {
			var digits = [];
			var codePoint = this.consumeCodePoint();
			while (isHex(codePoint) && digits.length < 6) {
				digits.push(codePoint);
				codePoint = this.consumeCodePoint();
			}
			var questionMarks = false;
			while (codePoint === QUESTION_MARK && digits.length < 6) {
				digits.push(codePoint);
				codePoint = this.consumeCodePoint();
				questionMarks = true;
			}
			if (questionMarks) {
				var start_1 = parseInt(fromCodePoint.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? ZERO : digit); })), 16);
				var end = parseInt(fromCodePoint.apply(void 0, digits.map(function (digit) { return (digit === QUESTION_MARK ? F : digit); })), 16);
				return { type: TokenType.UNICODE_RANGE_TOKEN, start: start_1, end: end };
			}
			var start = parseInt(fromCodePoint.apply(void 0, digits), 16);
			if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {
				this.consumeCodePoint();
				codePoint = this.consumeCodePoint();
				var endDigits = [];
				while (isHex(codePoint) && endDigits.length < 6) {
					endDigits.push(codePoint);
					codePoint = this.consumeCodePoint();
				}
				var end = parseInt(fromCodePoint.apply(void 0, endDigits), 16);
				return { type: TokenType.UNICODE_RANGE_TOKEN, start: start, end: end };
			}
			else {
				return { type: TokenType.UNICODE_RANGE_TOKEN, start: start, end: start };
			}
		};
		Tokenizer.prototype.consumeIdentLikeToken = function () {
			var value = this.consumeName();
			if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {
				this.consumeCodePoint();
				return this.consumeUrlToken();
			}
			else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {
				this.consumeCodePoint();
				return { type: TokenType.FUNCTION_TOKEN, value: value };
			}
			return { type: TokenType.IDENT_TOKEN, value: value };
		};
		Tokenizer.prototype.consumeUrlToken = function () {
			var value = [];
			this.consumeWhiteSpace();
			if (this.peekCodePoint(0) === EOF) {
				return { type: TokenType.URL_TOKEN, value: '' };
			}
			var next = this.peekCodePoint(0);
			if (next === APOSTROPHE || next === QUOTATION_MARK) {
				var stringToken = this.consumeStringToken(this.consumeCodePoint());
				if (stringToken.type === TokenType.STRING_TOKEN) {
					this.consumeWhiteSpace();
					if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
						this.consumeCodePoint();
						return { type: TokenType.URL_TOKEN, value: stringToken.value };
					}
				}
				this.consumeBadUrlRemnants();
				return BAD_URL_TOKEN;
			}
			while (true) {
				var codePoint = this.consumeCodePoint();
				if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {
					return { type: TokenType.URL_TOKEN, value: fromCodePoint.apply(void 0, value) };
				}
				else if (isWhiteSpace(codePoint)) {
					this.consumeWhiteSpace();
					if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {
						this.consumeCodePoint();
						return { type: TokenType.URL_TOKEN, value: fromCodePoint.apply(void 0, value) };
					}
					this.consumeBadUrlRemnants();
					return BAD_URL_TOKEN;
				}
				else if (codePoint === QUOTATION_MARK ||
					codePoint === APOSTROPHE ||
					codePoint === LEFT_PARENTHESIS ||
					isNonPrintableCodePoint(codePoint)) {
					this.consumeBadUrlRemnants();
					return BAD_URL_TOKEN;
				}
				else if (codePoint === REVERSE_SOLIDUS) {
					if (isValidEscape(codePoint, this.peekCodePoint(0))) {
						value.push(this.consumeEscapedCodePoint());
					}
					else {
						this.consumeBadUrlRemnants();
						return BAD_URL_TOKEN;
					}
				}
				else {
					value.push(codePoint);
				}
			}
		};
		Tokenizer.prototype.consumeWhiteSpace = function () {
			while (isWhiteSpace(this.peekCodePoint(0))) {
				this.consumeCodePoint();
			}
		};
		Tokenizer.prototype.consumeBadUrlRemnants = function () {
			while (true) {
				var codePoint = this.consumeCodePoint();
				if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {
					return;
				}
				if (isValidEscape(codePoint, this.peekCodePoint(0))) {
					this.consumeEscapedCodePoint();
				}
			}
		};
		Tokenizer.prototype.consumeStringSlice = function (count) {
			var SLICE_STACK_SIZE = 60000;
			var value = '';
			while (count > 0) {
				var amount = Math.min(SLICE_STACK_SIZE, count);
				value += fromCodePoint.apply(void 0, this._value.splice(0, amount));
				count -= amount;
			}
			this._value.shift();
			return value;
		};
		Tokenizer.prototype.consumeStringToken = function (endingCodePoint) {
			var value = '';
			var i = 0;
			do {
				var codePoint = this._value[i];
				if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {
					value += this.consumeStringSlice(i);
					return { type: TokenType.STRING_TOKEN, value: value };
				}
				if (codePoint === LINE_FEED) {
					this._value.splice(0, i);
					return BAD_STRING_TOKEN;
				}
				if (codePoint === REVERSE_SOLIDUS) {
					var next = this._value[i + 1];
					if (next !== EOF && next !== undefined) {
						if (next === LINE_FEED) {
							value += this.consumeStringSlice(i);
							i = -1;
							this._value.shift();
						}
						else if (isValidEscape(codePoint, next)) {
							value += this.consumeStringSlice(i);
							value += fromCodePoint(this.consumeEscapedCodePoint());
							i = -1;
						}
					}
				}
				i++;
			} while (true);
		};
		Tokenizer.prototype.consumeNumber = function () {
			var repr = [];
			var type = FLAG_INTEGER;
			var c1 = this.peekCodePoint(0);
			if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {
				repr.push(this.consumeCodePoint());
			}
			while (isDigit(this.peekCodePoint(0))) {
				repr.push(this.consumeCodePoint());
			}
			c1 = this.peekCodePoint(0);
			var c2 = this.peekCodePoint(1);
			if (c1 === FULL_STOP && isDigit(c2)) {
				repr.push(this.consumeCodePoint(), this.consumeCodePoint());
				type = FLAG_NUMBER;
				while (isDigit(this.peekCodePoint(0))) {
					repr.push(this.consumeCodePoint());
				}
			}
			c1 = this.peekCodePoint(0);
			c2 = this.peekCodePoint(1);
			var c3 = this.peekCodePoint(2);
			if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {
				repr.push(this.consumeCodePoint(), this.consumeCodePoint());
				type = FLAG_NUMBER;
				while (isDigit(this.peekCodePoint(0))) {
					repr.push(this.consumeCodePoint());
				}
			}
			return [stringToNumber(repr), type];
		};
		Tokenizer.prototype.consumeNumericToken = function () {
			var _a = this.consumeNumber(), number = _a[0], flags = _a[1];
			var c1 = this.peekCodePoint(0);
			var c2 = this.peekCodePoint(1);
			var c3 = this.peekCodePoint(2);
			if (isIdentifierStart(c1, c2, c3)) {
				var unit = this.consumeName();
				return { type: TokenType.DIMENSION_TOKEN, number: number, flags: flags, unit: unit };
			}
			if (c1 === PERCENTAGE_SIGN) {
				this.consumeCodePoint();
				return { type: TokenType.PERCENTAGE_TOKEN, number: number, flags: flags };
			}
			return { type: TokenType.NUMBER_TOKEN, number: number, flags: flags };
		};
		Tokenizer.prototype.consumeEscapedCodePoint = function () {
			var codePoint = this.consumeCodePoint();
			if (isHex(codePoint)) {
				var hex = fromCodePoint(codePoint);
				while (isHex(this.peekCodePoint(0)) && hex.length < 6) {
					hex += fromCodePoint(this.consumeCodePoint());
				}
				if (isWhiteSpace(this.peekCodePoint(0))) {
					this.consumeCodePoint();
				}
				var hexCodePoint = parseInt(hex, 16);
				if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {
					return REPLACEMENT_CHARACTER;
				}
				return hexCodePoint;
			}
			if (codePoint === EOF) {
				return REPLACEMENT_CHARACTER;
			}
			return codePoint;
		};
		Tokenizer.prototype.consumeName = function () {
			var result = '';
			while (true) {
				var codePoint = this.consumeCodePoint();
				if (isNameCodePoint(codePoint)) {
					result += fromCodePoint(codePoint);
				}
				else if (isValidEscape(codePoint, this.peekCodePoint(0))) {
					result += fromCodePoint(this.consumeEscapedCodePoint());
				}
				else {
					this.reconsumeCodePoint(codePoint);
					return result;
				}
			}
		};
		return Tokenizer;
	}());

	var Parser = /** @class */ (function () {
		function Parser(tokens) {
			this._tokens = tokens;
		}
		Parser.create = function (value) {
			var tokenizer = new Tokenizer();
			tokenizer.write(value);
			return new Parser(tokenizer.read());
		};
		Parser.parseValue = function (value) {
			return Parser.create(value).parseComponentValue();
		};
		Parser.parseValues = function (value) {
			return Parser.create(value).parseComponentValues();
		};
		Parser.prototype.parseComponentValue = function () {
			var token = this.consumeToken();
			while (token.type === TokenType.WHITESPACE_TOKEN) {
				token = this.consumeToken();
			}
			if (token.type === TokenType.EOF_TOKEN) {
				throw new SyntaxError("Error parsing CSS component value, unexpected EOF");
			}
			this.reconsumeToken(token);
			var value = this.consumeComponentValue();
			do {
				token = this.consumeToken();
			} while (token.type === TokenType.WHITESPACE_TOKEN);
			if (token.type === TokenType.EOF_TOKEN) {
				return value;
			}
			throw new SyntaxError("Error parsing CSS component value, multiple values found when expecting only one");
		};
		Parser.prototype.parseComponentValues = function () {
			var values = [];
			while (true) {
				var value = this.consumeComponentValue();
				if (value.type === TokenType.EOF_TOKEN) {
					return values;
				}
				values.push(value);
				values.push();
			}
		};
		Parser.prototype.consumeComponentValue = function () {
			var token = this.consumeToken();
			switch (token.type) {
				case TokenType.LEFT_CURLY_BRACKET_TOKEN:
				case TokenType.LEFT_SQUARE_BRACKET_TOKEN:
				case TokenType.LEFT_PARENTHESIS_TOKEN:
					return this.consumeSimpleBlock(token.type);
				case TokenType.FUNCTION_TOKEN:
					return this.consumeFunction(token);
			}
			return token;
		};
		Parser.prototype.consumeSimpleBlock = function (type) {
			var block = { type: type, values: [] };
			var token = this.consumeToken();
			while (true) {
				if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {
					return block;
				}
				this.reconsumeToken(token);
				block.values.push(this.consumeComponentValue());
				token = this.consumeToken();
			}
		};
		Parser.prototype.consumeFunction = function (functionToken) {
			var cssFunction = {
				name: functionToken.value,
				values: [],
				type: TokenType.FUNCTION
			};
			while (true) {
				var token = this.consumeToken();
				if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {
					return cssFunction;
				}
				this.reconsumeToken(token);
				cssFunction.values.push(this.consumeComponentValue());
			}
		};
		Parser.prototype.consumeToken = function () {
			var token = this._tokens.shift();
			return typeof token === 'undefined' ? EOF_TOKEN : token;
		};
		Parser.prototype.reconsumeToken = function (token) {
			this._tokens.unshift(token);
		};
		return Parser;
	}());
	var isDimensionToken = function (token) { return token.type === TokenType.DIMENSION_TOKEN; };
	var isNumberToken = function (token) { return token.type === TokenType.NUMBER_TOKEN; };
	var isIdentToken = function (token) { return token.type === TokenType.IDENT_TOKEN; };
	var isStringToken = function (token) { return token.type === TokenType.STRING_TOKEN; };
	var isIdentWithValue = function (token, value) {
		return isIdentToken(token) && token.value === value;
	};
	var nonWhiteSpace = function (token) { return token.type !== TokenType.WHITESPACE_TOKEN; };
	var nonFunctionArgSeparator = function (token) {
		return token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;
	};
	var parseFunctionArgs = function (tokens) {
		var args = [];
		var arg = [];
		tokens.forEach(function (token) {
			if (token.type === TokenType.COMMA_TOKEN) {
				if (arg.length === 0) {
					throw new Error("Error parsing function args, zero tokens for arg");
				}
				args.push(arg);
				arg = [];
				return;
			}
			if (token.type !== TokenType.WHITESPACE_TOKEN) {
				arg.push(token);
			}
		});
		if (arg.length) {
			args.push(arg);
		}
		return args;
	};
	var isEndingTokenFor = function (token, type) {
		if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {
			return true;
		}
		if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {
			return true;
		}
		return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;
	};

	var isLength = function (token) {
		return token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;
	};

	var isLengthPercentage = function (token) {
		return token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);
	};
	var parseLengthPercentageTuple = function (tokens) {
		return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];
	};
	var ZERO_LENGTH = {
		type: TokenType.NUMBER_TOKEN,
		number: 0,
		flags: FLAG_INTEGER
	};
	var FIFTY_PERCENT = {
		type: TokenType.PERCENTAGE_TOKEN,
		number: 50,
		flags: FLAG_INTEGER
	};
	var HUNDRED_PERCENT = {
		type: TokenType.PERCENTAGE_TOKEN,
		number: 100,
		flags: FLAG_INTEGER
	};
	var getAbsoluteValueForTuple = function (tuple, width, height) {
		var x = tuple[0], y = tuple[1];
		return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];
	};
	var getAbsoluteValue = function (token, parent) {
		if (token.type === TokenType.PERCENTAGE_TOKEN) {
			return (token.number / 100) * parent;
		}
		if (isDimensionToken(token)) {
			switch (token.unit) {
				case 'rem':
				case 'em':
					return 16 * token.number; // TODO use correct font-size
				case 'px':
				default:
					return token.number;
			}
		}
		return token.number;
	};

	var DEG = 'deg';
	var GRAD = 'grad';
	var RAD = 'rad';
	var TURN = 'turn';
	var angle = {
		name: 'angle',
		parse: function (value) {
			if (value.type === TokenType.DIMENSION_TOKEN) {
				switch (value.unit) {
					case DEG:
						return (Math.PI * value.number) / 180;
					case GRAD:
						return (Math.PI / 200) * value.number;
					case RAD:
						return value.number;
					case TURN:
						return Math.PI * 2 * value.number;
				}
			}
			throw new Error("Unsupported angle type");
		}
	};
	var isAngle = function (value) {
		if (value.type === TokenType.DIMENSION_TOKEN) {
			if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {
				return true;
			}
		}
		return false;
	};
	var parseNamedSide = function (tokens) {
		var sideOrCorner = tokens
			.filter(isIdentToken)
			.map(function (ident) { return ident.value; })
			.join(' ');
		switch (sideOrCorner) {
			case 'to bottom right':
			case 'to right bottom':
			case 'left top':
			case 'top left':
				return [ZERO_LENGTH, ZERO_LENGTH];
			case 'to top':
			case 'bottom':
				return deg(0);
			case 'to bottom left':
			case 'to left bottom':
			case 'right top':
			case 'top right':
				return [ZERO_LENGTH, HUNDRED_PERCENT];
			case 'to right':
			case 'left':
				return deg(90);
			case 'to top left':
			case 'to left top':
			case 'right bottom':
			case 'bottom right':
				return [HUNDRED_PERCENT, HUNDRED_PERCENT];
			case 'to bottom':
			case 'top':
				return deg(180);
			case 'to top right':
			case 'to right top':
			case 'left bottom':
			case 'bottom left':
				return [HUNDRED_PERCENT, ZERO_LENGTH];
			case 'to left':
			case 'right':
				return deg(270);
		}
		return 0;
	};
	var deg = function (deg) { return (Math.PI * deg) / 180; };

	var color = {
		name: 'color',
		parse: function (value) {
			if (value.type === TokenType.FUNCTION) {
				var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];
				if (typeof colorFunction === 'undefined') {
					throw new Error("Attempting to parse an unsupported color function \"" + value.name + "\"");
				}
				return colorFunction(value.values);
			}
			if (value.type === TokenType.HASH_TOKEN) {
				if (value.value.length === 3) {
					var r = value.value.substring(0, 1);
					var g = value.value.substring(1, 2);
					var b = value.value.substring(2, 3);
					return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);
				}
				if (value.value.length === 4) {
					var r = value.value.substring(0, 1);
					var g = value.value.substring(1, 2);
					var b = value.value.substring(2, 3);
					var a = value.value.substring(3, 4);
					return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);
				}
				if (value.value.length === 6) {
					var r = value.value.substring(0, 2);
					var g = value.value.substring(2, 4);
					var b = value.value.substring(4, 6);
					return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);
				}
				if (value.value.length === 8) {
					var r = value.value.substring(0, 2);
					var g = value.value.substring(2, 4);
					var b = value.value.substring(4, 6);
					var a = value.value.substring(6, 8);
					return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);
				}
			}
			if (value.type === TokenType.IDENT_TOKEN) {
				var namedColor = COLORS[value.value.toUpperCase()];
				if (typeof namedColor !== 'undefined') {
					return namedColor;
				}
			}
			return COLORS.TRANSPARENT;
		}
	};
	var isTransparent = function (color) { return (0xff & color) === 0; };
	var asString = function (color) {
		var alpha = 0xff & color;
		var blue = 0xff & (color >> 8);
		var green = 0xff & (color >> 16);
		var red = 0xff & (color >> 24);
		return alpha < 255 ? "rgba(" + red + "," + green + "," + blue + "," + alpha / 255 + ")" : "rgb(" + red + "," + green + "," + blue + ")";
	};
	var pack = function (r, g, b, a) {
		return ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;
	};
	var getTokenColorValue = function (token, i) {
		if (token.type === TokenType.NUMBER_TOKEN) {
			return token.number;
		}
		if (token.type === TokenType.PERCENTAGE_TOKEN) {
			var max = i === 3 ? 1 : 255;
			return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);
		}
		return 0;
	};
	var rgb = function (args) {
		var tokens = args.filter(nonFunctionArgSeparator);
		if (tokens.length === 3) {
			var _a = tokens.map(getTokenColorValue), r = _a[0], g = _a[1], b = _a[2];
			return pack(r, g, b, 1);
		}
		if (tokens.length === 4) {
			var _b = tokens.map(getTokenColorValue), r = _b[0], g = _b[1], b = _b[2], a = _b[3];
			return pack(r, g, b, a);
		}
		return 0;
	};
	function hue2rgb(t1, t2, hue) {
		if (hue < 0) {
			hue += 1;
		}
		if (hue >= 1) {
			hue -= 1;
		}
		if (hue < 1 / 6) {
			return (t2 - t1) * hue * 6 + t1;
		}
		else if (hue < 1 / 2) {
			return t2;
		}
		else if (hue < 2 / 3) {
			return (t2 - t1) * 6 * (2 / 3 - hue) + t1;
		}
		else {
			return t1;
		}
	}
	var hsl = function (args) {
		var tokens = args.filter(nonFunctionArgSeparator);
		var hue = tokens[0], saturation = tokens[1], lightness = tokens[2], alpha = tokens[3];
		var h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(hue)) / (Math.PI * 2);
		var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;
		var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;
		var a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;
		if (s === 0) {
			return pack(l * 255, l * 255, l * 255, 1);
		}
		var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;
		var t1 = l * 2 - t2;
		var r = hue2rgb(t1, t2, h + 1 / 3);
		var g = hue2rgb(t1, t2, h);
		var b = hue2rgb(t1, t2, h - 1 / 3);
		return pack(r * 255, g * 255, b * 255, a);
	};
	var SUPPORTED_COLOR_FUNCTIONS = {
		hsl: hsl,
		hsla: hsl,
		rgb: rgb,
		rgba: rgb
	};
	var COLORS = {
		ALICEBLUE: 0xf0f8ffff,
		ANTIQUEWHITE: 0xfaebd7ff,
		AQUA: 0x00ffffff,
		AQUAMARINE: 0x7fffd4ff,
		AZURE: 0xf0ffffff,
		BEIGE: 0xf5f5dcff,
		BISQUE: 0xffe4c4ff,
		BLACK: 0x000000ff,
		BLANCHEDALMOND: 0xffebcdff,
		BLUE: 0x0000ffff,
		BLUEVIOLET: 0x8a2be2ff,
		BROWN: 0xa52a2aff,
		BURLYWOOD: 0xdeb887ff,
		CADETBLUE: 0x5f9ea0ff,
		CHARTREUSE: 0x7fff00ff,
		CHOCOLATE: 0xd2691eff,
		CORAL: 0xff7f50ff,
		CORNFLOWERBLUE: 0x6495edff,
		CORNSILK: 0xfff8dcff,
		CRIMSON: 0xdc143cff,
		CYAN: 0x00ffffff,
		DARKBLUE: 0x00008bff,
		DARKCYAN: 0x008b8bff,
		DARKGOLDENROD: 0xb886bbff,
		DARKGRAY: 0xa9a9a9ff,
		DARKGREEN: 0x006400ff,
		DARKGREY: 0xa9a9a9ff,
		DARKKHAKI: 0xbdb76bff,
		DARKMAGENTA: 0x8b008bff,
		DARKOLIVEGREEN: 0x556b2fff,
		DARKORANGE: 0xff8c00ff,
		DARKORCHID: 0x9932ccff,
		DARKRED: 0x8b0000ff,
		DARKSALMON: 0xe9967aff,
		DARKSEAGREEN: 0x8fbc8fff,
		DARKSLATEBLUE: 0x483d8bff,
		DARKSLATEGRAY: 0x2f4f4fff,
		DARKSLATEGREY: 0x2f4f4fff,
		DARKTURQUOISE: 0x00ced1ff,
		DARKVIOLET: 0x9400d3ff,
		DEEPPINK: 0xff1493ff,
		DEEPSKYBLUE: 0x00bfffff,
		DIMGRAY: 0x696969ff,
		DIMGREY: 0x696969ff,
		DODGERBLUE: 0x1e90ffff,
		FIREBRICK: 0xb22222ff,
		FLORALWHITE: 0xfffaf0ff,
		FORESTGREEN: 0x228b22ff,
		FUCHSIA: 0xff00ffff,
		GAINSBORO: 0xdcdcdcff,
		GHOSTWHITE: 0xf8f8ffff,
		GOLD: 0xffd700ff,
		GOLDENROD: 0xdaa520ff,
		GRAY: 0x808080ff,
		GREEN: 0x008000ff,
		GREENYELLOW: 0xadff2fff,
		GREY: 0x808080ff,
		HONEYDEW: 0xf0fff0ff,
		HOTPINK: 0xff69b4ff,
		INDIANRED: 0xcd5c5cff,
		INDIGO: 0x4b0082ff,
		IVORY: 0xfffff0ff,
		KHAKI: 0xf0e68cff,
		LAVENDER: 0xe6e6faff,
		LAVENDERBLUSH: 0xfff0f5ff,
		LAWNGREEN: 0x7cfc00ff,
		LEMONCHIFFON: 0xfffacdff,
		LIGHTBLUE: 0xadd8e6ff,
		LIGHTCORAL: 0xf08080ff,
		LIGHTCYAN: 0xe0ffffff,
		LIGHTGOLDENRODYELLOW: 0xfafad2ff,
		LIGHTGRAY: 0xd3d3d3ff,
		LIGHTGREEN: 0x90ee90ff,
		LIGHTGREY: 0xd3d3d3ff,
		LIGHTPINK: 0xffb6c1ff,
		LIGHTSALMON: 0xffa07aff,
		LIGHTSEAGREEN: 0x20b2aaff,
		LIGHTSKYBLUE: 0x87cefaff,
		LIGHTSLATEGRAY: 0x778899ff,
		LIGHTSLATEGREY: 0x778899ff,
		LIGHTSTEELBLUE: 0xb0c4deff,
		LIGHTYELLOW: 0xffffe0ff,
		LIME: 0x00ff00ff,
		LIMEGREEN: 0x32cd32ff,
		LINEN: 0xfaf0e6ff,
		MAGENTA: 0xff00ffff,
		MAROON: 0x800000ff,
		MEDIUMAQUAMARINE: 0x66cdaaff,
		MEDIUMBLUE: 0x0000cdff,
		MEDIUMORCHID: 0xba55d3ff,
		MEDIUMPURPLE: 0x9370dbff,
		MEDIUMSEAGREEN: 0x3cb371ff,
		MEDIUMSLATEBLUE: 0x7b68eeff,
		MEDIUMSPRINGGREEN: 0x00fa9aff,
		MEDIUMTURQUOISE: 0x48d1ccff,
		MEDIUMVIOLETRED: 0xc71585ff,
		MIDNIGHTBLUE: 0x191970ff,
		MINTCREAM: 0xf5fffaff,
		MISTYROSE: 0xffe4e1ff,
		MOCCASIN: 0xffe4b5ff,
		NAVAJOWHITE: 0xffdeadff,
		NAVY: 0x000080ff,
		OLDLACE: 0xfdf5e6ff,
		OLIVE: 0x808000ff,
		OLIVEDRAB: 0x6b8e23ff,
		ORANGE: 0xffa500ff,
		ORANGERED: 0xff4500ff,
		ORCHID: 0xda70d6ff,
		PALEGOLDENROD: 0xeee8aaff,
		PALEGREEN: 0x98fb98ff,
		PALETURQUOISE: 0xafeeeeff,
		PALEVIOLETRED: 0xdb7093ff,
		PAPAYAWHIP: 0xffefd5ff,
		PEACHPUFF: 0xffdab9ff,
		PERU: 0xcd853fff,
		PINK: 0xffc0cbff,
		PLUM: 0xdda0ddff,
		POWDERBLUE: 0xb0e0e6ff,
		PURPLE: 0x800080ff,
		REBECCAPURPLE: 0x663399ff,
		RED: 0xff0000ff,
		ROSYBROWN: 0xbc8f8fff,
		ROYALBLUE: 0x4169e1ff,
		SADDLEBROWN: 0x8b4513ff,
		SALMON: 0xfa8072ff,
		SANDYBROWN: 0xf4a460ff,
		SEAGREEN: 0x2e8b57ff,
		SEASHELL: 0xfff5eeff,
		SIENNA: 0xa0522dff,
		SILVER: 0xc0c0c0ff,
		SKYBLUE: 0x87ceebff,
		SLATEBLUE: 0x6a5acdff,
		SLATEGRAY: 0x708090ff,
		SLATEGREY: 0x708090ff,
		SNOW: 0xfffafaff,
		SPRINGGREEN: 0x00ff7fff,
		STEELBLUE: 0x4682b4ff,
		TAN: 0xd2b48cff,
		TEAL: 0x008080ff,
		THISTLE: 0xd8bfd8ff,
		TOMATO: 0xff6347ff,
		TRANSPARENT: 0x00000000,
		TURQUOISE: 0x40e0d0ff,
		VIOLET: 0xee82eeff,
		WHEAT: 0xf5deb3ff,
		WHITE: 0xffffffff,
		WHITESMOKE: 0xf5f5f5ff,
		YELLOW: 0xffff00ff,
		YELLOWGREEN: 0x9acd32ff
	};

	var PropertyDescriptorParsingType;
	(function (PropertyDescriptorParsingType) {
		PropertyDescriptorParsingType[PropertyDescriptorParsingType["VALUE"] = 0] = "VALUE";
		PropertyDescriptorParsingType[PropertyDescriptorParsingType["LIST"] = 1] = "LIST";
		PropertyDescriptorParsingType[PropertyDescriptorParsingType["IDENT_VALUE"] = 2] = "IDENT_VALUE";
		PropertyDescriptorParsingType[PropertyDescriptorParsingType["TYPE_VALUE"] = 3] = "TYPE_VALUE";
		PropertyDescriptorParsingType[PropertyDescriptorParsingType["TOKEN_VALUE"] = 4] = "TOKEN_VALUE";
	})(PropertyDescriptorParsingType || (PropertyDescriptorParsingType = {}));

	var BACKGROUND_CLIP;
	(function (BACKGROUND_CLIP) {
		BACKGROUND_CLIP[BACKGROUND_CLIP["BORDER_BOX"] = 0] = "BORDER_BOX";
		BACKGROUND_CLIP[BACKGROUND_CLIP["PADDING_BOX"] = 1] = "PADDING_BOX";
		BACKGROUND_CLIP[BACKGROUND_CLIP["CONTENT_BOX"] = 2] = "CONTENT_BOX";
	})(BACKGROUND_CLIP || (BACKGROUND_CLIP = {}));
	var backgroundClip = {
		name: 'background-clip',
		initialValue: 'border-box',
		prefix: false,
		type: PropertyDescriptorParsingType.LIST,
		parse: function (tokens) {
			return tokens.map(function (token) {
				if (isIdentToken(token)) {
					switch (token.value) {
						case 'padding-box':
							return BACKGROUND_CLIP.PADDING_BOX;
						case 'content-box':
							return BACKGROUND_CLIP.CONTENT_BOX;
					}
				}
				return BACKGROUND_CLIP.BORDER_BOX;
			});
		}
	};

	var backgroundColor = {
		name: "background-color",
		initialValue: 'transparent',
		prefix: false,
		type: PropertyDescriptorParsingType.TYPE_VALUE,
		format: 'color'
	};

	var parseColorStop = function (args) {
		var color$1 = color.parse(args[0]);
		var stop = args[1];
		return stop && isLengthPercentage(stop) ? { color: color$1, stop: stop } : { color: color$1, stop: null };
	};
	var processColorStops = function (stops, lineLength) {
		var first = stops[0];
		var last = stops[stops.length - 1];
		if (first.stop === null) {
			first.stop = ZERO_LENGTH;
		}
		if (last.stop === null) {
			last.stop = HUNDRED_PERCENT;
		}
		var processStops = [];
		var previous = 0;
		for (var i = 0; i < stops.length; i++) {
			var stop_1 = stops[i].stop;
			if (stop_1 !== null) {
				var absoluteValue = getAbsoluteValue(stop_1, lineLength);
				if (absoluteValue > previous) {
					processStops.push(absoluteValue);
				}
				else {
					processStops.push(previous);
				}
				previous = absoluteValue;
			}
			else {
				processStops.push(null);
			}
		}
		var gapBegin = null;
		for (var i = 0; i < processStops.length; i++) {
			var stop_2 = processStops[i];
			if (stop_2 === null) {
				if (gapBegin === null) {
					gapBegin = i;
				}
			}
			else if (gapBegin !== null) {
				var gapLength = i - gapBegin;
				var beforeGap = processStops[gapBegin - 1];
				var gapValue = (stop_2 - beforeGap) / (gapLength + 1);
				for (var g = 1; g <= gapLength; g++) {
					processStops[gapBegin + g - 1] = gapValue * g;
				}
				gapBegin = null;
			}
		}
		return stops.map(function (_a, i) {
			var color = _a.color;
			return { color: color, stop: Math.max(Math.min(1, processStops[i] / lineLength), 0) };
		});
	};
	var getAngleFromCorner = function (corner, width, height) {
		var centerX = width / 2;
		var centerY = height / 2;
		var x = getAbsoluteValue(corner[0], width) - centerX;
		var y = centerY - getAbsoluteValue(corner[1], height);
		return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);
	};
	var calculateGradientDirection = function (angle, width, height) {
		var radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);
		var lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));
		var halfWidth = width / 2;
		var halfHeight = height / 2;
		var halfLineLength = lineLength / 2;
		var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;
		var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;
		return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];
	};
	var distance = function (a, b) { return Math.sqrt(a * a + b * b); };
	var findCorner = function (width, height, x, y, closest) {
		var corners = [[0, 0], [0, height], [width, 0], [width, height]];
		return corners.reduce(function (stat, corner) {
			var cx = corner[0], cy = corner[1];
			var d = distance(x - cx, y - cy);
			if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {
				return {
					optimumCorner: corner,
					optimumDistance: d
				};
			}
			return stat;
		}, {
			optimumDistance: closest ? Infinity : -Infinity,
			optimumCorner: null
		}).optimumCorner;
	};
	var calculateRadius = function (gradient, x, y, width, height) {
		var rx = 0;
		var ry = 0;
		switch (gradient.size) {
			case CSSRadialExtent.CLOSEST_SIDE:
				// The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.
				// If the shape is an ellipse, it exactly meets the closest side in each dimension.
				if (gradient.shape === CSSRadialShape.CIRCLE) {
					rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));
				}
				else if (gradient.shape === CSSRadialShape.ELLIPSE) {
					rx = Math.min(Math.abs(x), Math.abs(x - width));
					ry = Math.min(Math.abs(y), Math.abs(y - height));
				}
				break;
			case CSSRadialExtent.CLOSEST_CORNER:
				// The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.
				// If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.
				if (gradient.shape === CSSRadialShape.CIRCLE) {
					rx = ry = Math.min(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));
				}
				else if (gradient.shape === CSSRadialShape.ELLIPSE) {
					// Compute the ratio ry/rx (which is to be the same as for "closest-side")
					var c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));
					var _a = findCorner(width, height, x, y, true), cx = _a[0], cy = _a[1];
					rx = distance(cx - x, (cy - y) / c);
					ry = c * rx;
				}
				break;
			case CSSRadialExtent.FARTHEST_SIDE:
				// Same as closest-side, except the ending shape is sized based on the farthest side(s)
				if (gradient.shape === CSSRadialShape.CIRCLE) {
					rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));
				}
				else if (gradient.shape === CSSRadialShape.ELLIPSE) {
					rx = Math.max(Math.abs(x), Math.abs(x - width));
					ry = Math.max(Math.abs(y), Math.abs(y - height));
				}
				break;
			case CSSRadialExtent.FARTHEST_CORNER:
				// Same as closest-corner, except the ending shape is sized based on the farthest corner.
				// If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.
				if (gradient.shape === CSSRadialShape.CIRCLE) {
					rx = ry = Math.max(distance(x, y), distance(x, y - height), distance(x - width, y), distance(x - width, y - height));
				}
				else if (gradient.shape === CSSRadialShape.ELLIPSE) {
					// Compute the ratio ry/rx (which is to be the same as for "farthest-side")
					var c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));
					var _b = findCorner(width, height, x, y, false), cx = _b[0], cy = _b[1];
					rx = distance(cx - x, (cy - y) / c);
					ry = c * rx;
				}
				break;
		}
		if (Array.isArray(gradient.size)) {
			rx = getAbsoluteValue(gradient.size[0], width);
			ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;
		}
		return [rx, ry];
	};

	var linearGradient = function (tokens) {
		var angle$1 = deg(180);
		var stops = [];
		parseFunctionArgs(tokens).forEach(function (arg, i) {
			if (i === 0) {
				var firstToken = arg[0];
				if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {
					angle$1 = parseNamedSide(arg);
					return;
				}
				else if (isAngle(firstToken)) {
					angle$1 = angle.parse(firstToken);
					return;
				}
			}
			var colorStop = parseColorStop(arg);
			stops.push(colorStop);
		});
		return { angle: angle$1, stops: stops, type: CSSImageType.LINEAR_GRADIENT };
	};

	var prefixLinearGradient = function (tokens) {
		var angle$1 = deg(180);
		var stops = [];
		parseFunctionArgs(tokens).forEach(function (arg, i) {
			if (i === 0) {
				var firstToken = arg[0];
				if (firstToken.type === TokenType.IDENT_TOKEN &&
					['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1) {
					angle$1 = parseNamedSide(arg);
					return;
				}
				else if (isAngle(firstToken)) {
					angle$1 = (angle.parse(firstToken) + deg(270)) % deg(360);
					return;
				}
			}
			var colorStop = parseColorStop(arg);
			stops.push(colorStop);
		});
		return {
			angle: angle$1,
			stops: stops,
			type: CSSImageType.LINEAR_GRADIENT
		};
	};

	var testRangeBounds = function (document) {
		var TEST_HEIGHT = 123;
		if (document.createRange) {
			var range = document.createRange();
			if (range.getBoundingClientRect) {
				var testElement = document.createElement('boundtest');
				testElement.style.height = TEST_HEIGHT + "px";
				testElement.style.display = 'block';
				document.body.appendChild(testElement);
				range.selectNode(testElement);
				var rangeBounds = range.getBoundingClientRect();
				var rangeHeight = Math.round(rangeBounds.height);
				document.body.removeChild(testElement);
				if (rangeHeight === TEST_HEIGHT) {
					return true;
				}
			}
		}
		return false;
	};
	var testCORS = function () { return typeof new Image().crossOrigin !== 'undefined'; };
	var testResponseType = function () { return typeof new XMLHttpRequest().responseType === 'string'; };
	var testSVG = function (document) {
		var img = new Image();
		var canvas = document.createElement('canvas');
		var ctx = canvas.getContext('2d');
		if (!ctx) {
			return false;
		}
		img.src = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";
		try {
			ctx.drawImage(img, 0, 0);
			canvas.toDataURL();
		}
		catch (e) {
			return false;
		}
		return true;
	};
	var isGreenPixel = function (data) {
		return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;
	};
	var testForeignObject = function (document) {
		var canvas = document.createElement('canvas');
		var size = 100;
		canvas.width = size;
		canvas.height = size;
		var ctx = canvas.getContext('2d');
		if (!ctx) {
			return Promise.reject(false);
		}
		ctx.fillStyle = 'rgb(0, 255, 0)';
		ctx.fillRect(0, 0, size, size);
		var img = new Image();
		var greenImageSrc = canvas.toDataURL();
		img.src = greenImageSrc;
		var svg = createForeignObjectSVG(size, size, 0, 0, img);
		ctx.fillStyle = 'red';
		ctx.fillRect(0, 0, size, size);
		return loadSerializedSVG(svg)
			.then(function (img) {
				ctx.drawImage(img, 0, 0);
				var data = ctx.getImageData(0, 0, size, size).data;
				ctx.fillStyle = 'red';
				ctx.fillRect(0, 0, size, size);
				var node = document.createElement('div');
				node.style.backgroundImage = "url(" + greenImageSrc + ")";
				node.style.height = size + "px";
				// Firefox 55 does not render inline <img /> tags
				return isGreenPixel(data)
					? loadSerializedSVG(createForeignObjectSVG(size, size, 0, 0, node))
					: Promise.reject(false);
			})
			.then(function (img) {
				ctx.drawImage(img, 0, 0);
				// Edge does not render background-images
				return isGreenPixel(ctx.getImageData(0, 0, size, size).data);
			})
			.catch(function () { return false; });
	};
	var createForeignObjectSVG = function (width, height, x, y, node) {
		var xmlns = 'http://www.w3.org/2000/svg';
		var svg = document.createElementNS(xmlns, 'svg');
		var foreignObject = document.createElementNS(xmlns, 'foreignObject');
		svg.setAttributeNS(null, 'width', width.toString());
		svg.setAttributeNS(null, 'height', height.toString());
		foreignObject.setAttributeNS(null, 'width', '100%');
		foreignObject.setAttributeNS(null, 'height', '100%');
		foreignObject.setAttributeNS(null, 'x', x.toString());
		foreignObject.setAttributeNS(null, 'y', y.toString());
		foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');
		svg.appendChild(foreignObject);
		foreignObject.appendChild(node);
		return svg;
	};
	var loadSerializedSVG = function (svg) {
		return new Promise(function (resolve, reject) {
			var img = new Image();
			img.onload = function () { return resolve(img); };
			img.onerror = reject;
			img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg));
		});
	};
	var FEATURES = {
		get SUPPORT_RANGE_BOUNDS() {
			var value = testRangeBounds(document);
			Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', { value: value });
			return value;
		},
		get SUPPORT_SVG_DRAWING() {
			var value = testSVG(document);
			Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', { value: value });
			return value;
		},
		get SUPPORT_FOREIGNOBJECT_DRAWING() {
			var value = typeof Array.from === 'function' && typeof window.fetch === 'function'
				? testForeignObject(document)
				: Promise.resolve(false);
			Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', { value: value });
			return value;
		},
		get SUPPORT_CORS_IMAGES() {
			var value = testCORS();
			Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', { value: value });
			return value;
		},
		get SUPPORT_RESPONSE_TYPE() {
			var value = testResponseType();
			Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', { value: value });
			return value;
		},
		get SUPPORT_CORS_XHR() {
			var value = 'withCredentials' in new XMLHttpRequest();
			Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', { value: value });
			return value;
		}
	};

	var Logger = /** @class */ (function () {
		function Logger(_a) {
			var id = _a.id, enabled = _a.enabled;
			this.id = id;
			this.enabled = enabled;
			this.start = Date.now();
		}
		// eslint-disable-next-line @typescript-eslint/no-explicit-any
		Logger.prototype.debug = function () {
			var args = [];
			for (var _i = 0; _i < arguments.length; _i++) {
				args[_i] = arguments[_i];
			}
			if (this.enabled) {
				// eslint-disable-next-line no-console
				if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {
					// eslint-disable-next-line no-console
					console.debug.apply(console, [this.id, this.getTime() + "ms"].concat(args));
				}
				else {
					this.info.apply(this, args);
				}
			}
		};
		Logger.prototype.getTime = function () {
			return Date.now() - this.start;
		};
		Logger.create = function (options) {
			Logger.instances[options.id] = new Logger(options);
		};
		Logger.destroy = function (id) {
			delete Logger.instances[id];
		};
		Logger.getInstance = function (id) {
			var instance = Logger.instances[id];
			if (typeof instance === 'undefined') {
				throw new Error("No logger instance found with id " + id);
			}
			return instance;
		};
		// eslint-disable-next-line @typescript-eslint/no-explicit-any
		Logger.prototype.info = function () {
			var args = [];
			for (var _i = 0; _i < arguments.length; _i++) {
				args[_i] = arguments[_i];
			}
			if (this.enabled) {
				// eslint-disable-next-line no-console
				if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {
					// eslint-disable-next-line no-console
					console.info.apply(console, [this.id, this.getTime() + "ms"].concat(args));
				}
			}
		};
		// eslint-disable-next-line @typescript-eslint/no-explicit-any
		Logger.prototype.error = function () {
			var args = [];
			for (var _i = 0; _i < arguments.length; _i++) {
				args[_i] = arguments[_i];
			}
			if (this.enabled) {
				// eslint-disable-next-line no-console
				if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {
					// eslint-disable-next-line no-console
					console.error.apply(console, [this.id, this.getTime() + "ms"].concat(args));
				}
				else {
					this.info.apply(this, args);
				}
			}
		};
		Logger.instances = {};
		return Logger;
	}());

	var CacheStorage = /** @class */ (function () {
		function CacheStorage() {
		}
		CacheStorage.create = function (name, options) {
			return (CacheStorage._caches[name] = new Cache(name, options));
		};
		CacheStorage.destroy = function (name) {
			delete CacheStorage._caches[name];
		};
		CacheStorage.open = function (name) {
			var cache = CacheStorage._caches[name];
			if (typeof cache !== 'undefined') {
				return cache;
			}
			throw new Error("Cache with key \"" + name + "\" not found");
		};
		CacheStorage.getOrigin = function (url) {
			var link = CacheStorage._link;
			if (!link) {
				return 'about:blank';
			}
			link.href = url;
			link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/
			return link.protocol + link.hostname + link.port;
		};
		CacheStorage.isSameOrigin = function (src) {
			return CacheStorage.getOrigin(src) === CacheStorage._origin;
		};
		CacheStorage.setContext = function (window) {
			CacheStorage._link = window.document.createElement('a');
			CacheStorage._origin = CacheStorage.getOrigin(window.location.href);
		};
		CacheStorage.getInstance = function () {
			var current = CacheStorage._current;
			if (current === null) {
				throw new Error("No cache instance attached");
			}
			return current;
		};
		CacheStorage.attachInstance = function (cache) {
			CacheStorage._current = cache;
		};
		CacheStorage.detachInstance = function () {
			CacheStorage._current = null;
		};
		CacheStorage._caches = {};
		CacheStorage._origin = 'about:blank';
		CacheStorage._current = null;
		return CacheStorage;
	}());
	var Cache = /** @class */ (function () {
		function Cache(id, options) {
			this.id = id;
			this._options = options;
			this._cache = {};
		}
		Cache.prototype.addImage = function (src) {
			var result = Promise.resolve();
			if (this.has(src)) {
				return result;
			}
			if (isBlobImage(src) || isRenderable(src)) {
				this._cache[src] = this.loadImage(src);
				return result;
			}
			return result;
		};
		// eslint-disable-next-line @typescript-eslint/no-explicit-any
		Cache.prototype.match = function (src) {
			return this._cache[src];
		};
		Cache.prototype.loadImage = function (key) {
			return __awaiter(this, void 0, void 0, function () {
				var isSameOrigin, useCORS, useProxy, src;
				var _this = this;
				return __generator(this, function (_a) {
					switch (_a.label) {
						case 0:
							isSameOrigin = CacheStorage.isSameOrigin(key);
							useCORS = !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;
							useProxy = !isInlineImage(key) &&
								!isSameOrigin &&
								typeof this._options.proxy === 'string' &&
								FEATURES.SUPPORT_CORS_XHR &&
								!useCORS;
							if (!isSameOrigin && this._options.allowTaint === false && !isInlineImage(key) && !useProxy && !useCORS) {
								return [2 /*return*/];
							}
							src = key;
							if (!useProxy) return [3 /*break*/, 2];
							return [4 /*yield*/, this.proxy(src)];
						case 1:
							src = _a.sent();
							_a.label = 2;
						case 2:
							Logger.getInstance(this.id).debug("Added image " + key.substring(0, 256));
							return [4 /*yield*/, new Promise(function (resolve, reject) {
								var img = new Image();
								img.onload = function () { return resolve(img); };
								img.onerror = reject;
								//ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous
								if (isInlineBase64Image(src) || useCORS) {
									img.crossOrigin = 'anonymous';
								}
								img.src = src;
								if (img.complete === true) {
									// Inline XML images may fail to parse, throwing an Error later on
									setTimeout(function () { return resolve(img); }, 500);
								}
								if (_this._options.imageTimeout > 0) {
									setTimeout(function () { return reject("Timed out (" + _this._options.imageTimeout + "ms) loading image"); }, _this._options.imageTimeout);
								}
							})];
						case 3: return [2 /*return*/, _a.sent()];
					}
				});
			});
		};
		Cache.prototype.has = function (key) {
			return typeof this._cache[key] !== 'undefined';
		};
		Cache.prototype.keys = function () {
			return Promise.resolve(Object.keys(this._cache));
		};
		Cache.prototype.proxy = function (src) {
			var _this = this;
			var proxy = this._options.proxy;
			if (!proxy) {
				throw new Error('No proxy defined');
			}
			var key = src.substring(0, 256);
			return new Promise(function (resolve, reject) {
				var responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';
				var xhr = new XMLHttpRequest();
				xhr.onload = function () {
					if (xhr.status === 200) {
						if (responseType === 'text') {
							resolve(xhr.response);
						}
						else {
							var reader_1 = new FileReader();
							reader_1.addEventListener('load', function () { return resolve(reader_1.result); }, false);
							reader_1.addEventListener('error', function (e) { return reject(e); }, false);
							reader_1.readAsDataURL(xhr.response);
						}
					}
					else {
						reject("Failed to proxy resource " + key + " with status code " + xhr.status);
					}
				};
				xhr.onerror = reject;
				xhr.open('GET', proxy + "?url=" + encodeURIComponent(src) + "&responseType=" + responseType);
				if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {
					xhr.responseType = responseType;
				}
				if (_this._options.imageTimeout) {
					var timeout_1 = _this._options.imageTimeout;
					xhr.timeout = timeout_1;
					xhr.ontimeout = function () { return reject("Timed out (" + timeout_1 + "ms) proxying " + key); };
				}
				xhr.send();
			});
		};
		return Cache;
	}());
	var INLINE_SVG = /^data:image\/svg\+xml/i;
	var INLINE_BASE64 = /^data:image\/.*;base64,/i;
	var INLINE_IMG = /^data:image\/.*/i;
	var isRenderable = function (src) { return FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src); };
	var isInlineImage = function (src) { return INLINE_IMG.test(src); };
	var isInlineBase64Image = function (src) { return INLINE_BASE64.test(src); };
	var isBlobImage = function (src) { return src.substr(0, 4) === 'blob'; };
	var isSVG = function (src) { return src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src); };

	var webkitGradient = function (tokens) {
		var angle = deg(180);
		var stops = [];
		var type = CSSImageType.LINEAR_GRADIENT;
		var shape = CSSRadialShape.CIRCLE;
		var size = CSSRadialExtent.FARTHEST_CORNER;
		var position = [];
		parseFunctionArgs(tokens).forEach(function (arg, i) {
			var firstToken = arg[0];
			if (i === 0) {
				if (isIdentToken(firstToken) && firstToken.value === 'linear') {
					type = CSSImageType.LINEAR_GRADIENT;
					return;
				}
				else if (isIdentToken(firstToken) && firstToken.value === 'radial') {
					type = CSSImageType.RADIAL_GRADIENT;
					return;
				}
			}
			if (firstToken.type === TokenType.FUNCTION) {
				if (firstToken.name === 'from') {
					var color$1 = color.parse(firstToken.values[0]);
					stops.push({ stop: ZERO_LENGTH, color: color$1 });
				}
				else if (firstToken.name === 'to') {
					var color$1 = color.parse(firstToken.values[0]);
					stops.push({ stop: HUNDRED_PERCENT, color: color$1 });
				}
				else if (firstToken.name === 'color-stop') {
					var values = firstToken.values.filter(nonFunctionArgSeparator);
					if (values.length === 2) {
						var color$1 = color.parse(values[1]);
						var stop_1 = values[0];
						if (isNumberToken(stop_1)) {
							stops.push({
								stop: { type: TokenType.PERCENTAGE_TOKEN, number: stop_1.number * 100, flags: stop_1.flags },
								color: color$1
							});
						}
					}
				}
			}
		});
		return type === CSSImageType.LINEAR_GRADIENT
			? {
				angle: (angle + deg(180)) % deg(360),
				stops: stops,
				type: type
			}
			: { size: size, shape: shape, stops: stops, position: position, type: type };
	};

	var CLOSEST_SIDE = 'closest-side';
	var FARTHEST_SIDE = 'farthest-side';
	var CLOSEST_CORNER = 'closest-corner';
	var FARTHEST_CORNER = 'farthest-corner';
	var CIRCLE = 'circle';
	var ELLIPSE = 'ellipse';
	var COVER = 'cover';
	var CONTAIN = 'contain';
	var radialGradient = function (tokens) {
		var shape = CSSRadialShape.CIRCLE;
		var size = CSSRadialExtent.FARTHEST_CORNER;
		var stops = [];
		var position = [];
		parseFunctionArgs(tokens).forEach(function (arg, i) {
			var isColorStop = true;
			if (i === 0) {
				var isAtPosition_1 = false;
				isColorStop = arg.reduce(function (acc, token) {
					if (isAtPosition_1) {
						if (isIdentToken(token)) {
							switch (token.value) {
								case 'center':
									position.push(FIFTY_PERCENT);
									return acc;
								case 'top':
								case 'left':
									position.push(ZERO_LENGTH);
									return acc;
								case 'right':
								case 'bottom':
									position.push(HUNDRED_PERCENT);
									return acc;
							}
						}
						else if (isLengthPercentage(token) || isLength(token)) {
							position.push(token);
						}
					}
					else if (isIdentToken(token)) {
						switch (token.value) {
							case CIRCLE:
								shape = CSSRadialShape.CIRCLE;
								return false;
							case ELLIPSE:
								shape = CSSRadialShape.ELLIPSE;
								return false;
							case 'at':
								isAtPosition_1 = true;
								return false;
							case CLOSEST_SIDE:
								size = CSSRadialExtent.CLOSEST_SIDE;
								return false;
							case COVER:
							case FARTHEST_SIDE:
								size = CSSRadialExtent.FARTHEST_SIDE;
								return false;
							case CONTAIN:
							case CLOSEST_CORNER:
								size = CSSRadialExtent.CLOSEST_CORNER;
								return false;
							case FARTHEST_CORNER:
								size = CSSRadialExtent.FARTHEST_CORNER;
								return false;
						}
					}
					else if (isLength(token) || isLengthPercentage(token)) {
						if (!Array.isArray(size)) {
							size = [];
						}
						size.push(token);
						return false;
					}
					return acc;
				}, isColorStop);
			}
			if (isColorStop) {
				var colorStop = parseColorStop(arg);
				stops.push(colorStop);
			}
		});
		return { size: size, shape: shape, stops: stops, position: position, type: CSSImageType.RADIAL_GRADIENT };
	};

	var prefixRadialGradient = function (tokens) {
		var shape = CSSRadialShape.CIRCLE;
		var size = CSSRadialExtent.FARTHEST_CORNER;
		var stops = [];
		var position = [];
		parseFunctionArgs(tokens).forEach(function (arg, i) {
			var isColorStop = true;
			if (i === 0) {
				isColorStop = arg.reduce(function (acc, token) {
					if (isIdentToken(token)) {
						switch (token.value) {
							case 'center':
								position.push(FIFTY_PERCENT);
								return false;
							case 'top':
							case 'left':
								position.push(ZERO_LENGTH);
								return false;
							case 'right':
							case 'bottom':
								position.push(HUNDRED_PERCENT);
								return false;
						}
					}
					else if (isLengthPercentage(token) || isLength(token)) {
						position.push(token);
						return false;
					}
					return acc;
				}, isColorStop);
			}
			else if (i === 1) {
				isColorStop = arg.reduce(function (acc, token) {
					if (isIdentToken(token)) {
						switch (token.value) {
							case CIRCLE:
								shape = CSSRadialShape.CIRCLE;
								return false;
							case ELLIPSE:
								shape = CSSRadialShape.ELLIPSE;
								return false;
							case CONTAIN:
							case CLOSEST_SIDE:
								size = CSSRadialExtent.CLOSEST_SIDE;
								return false;
							case FARTHEST_SIDE:
								size = CSSRadialExtent.FARTHEST_SIDE;
								return false;
							case CLOSEST_CORNER:
								size = CSSRadialExtent.CLOSEST_CORNER;
								return false;
							case COVER:
							case FARTHEST_CORNER:
								size = CSSRadialExtent.FARTHEST_CORNER;
								return false;
						}
					}
					else if (isLength(token) || isLengthPercentage(token)) {
						if (!Array.isArray(size)) {
							size = [];
						}
						size.push(token);
						return false;
					}
					return acc;
				}, isColorStop);
			}
			if (isColorStop) {
				var colorStop = parseColorStop(arg);
				stops.push(colorStop);
			}
		});
		return { size: size, shape: shape, stops: stops, position: position, type: CSSImageType.RADIAL_GRADIENT };
	};

	var CSSImageType;
	(function (CSSImageType) {
		CSSImageType[CSSImageType["URL"] = 0] = "URL";
		CSSImageType[CSSImageType["LINEAR_GRADIENT"] = 1] = "LINEAR_GRADIENT";
		CSSImageType[CSSImageType["RADIAL_GRADIENT"] = 2] = "RADIAL_GRADIENT";
	})(CSSImageType || (CSSImageType = {}));
	var isLinearGradient = function (background) {
		return background.type === CSSImageType.LINEAR_GRADIENT;
	};
	var isRadialGradient = function (background) {
		return background.type === CSSImageType.RADIAL_GRADIENT;
	};
	var CSSRadialShape;
	(function (CSSRadialShape) {
		CSSRadialShape[CSSRadialShape["CIRCLE"] = 0] = "CIRCLE";
		CSSRadialShape[CSSRadialShape["ELLIPSE"] = 1] = "ELLIPSE";
	})(CSSRadialShape || (CSSRadialShape = {}));
	var CSSRadialExtent;
	(function (CSSRadialExtent) {
		CSSRadialExtent[CSSRadialExtent["CLOSEST_SIDE"] = 0] = "CLOSEST_SIDE";
		CSSRadialExtent[CSSRadialExtent["FARTHEST_SIDE"] = 1] = "FARTHEST_SIDE";
		CSSRadialExtent[CSSRadialExtent["CLOSEST_CORNER"] = 2] = "CLOSEST_CORNER";
		CSSRadialExtent[CSSRadialExtent["FARTHEST_CORNER"] = 3] = "FARTHEST_CORNER";
	})(CSSRadialExtent || (CSSRadialExtent = {}));
	var image = {
		name: 'image',
		parse: function (value) {
			if (value.type === TokenType.URL_TOKEN) {
				var image_1 = { url: value.value, type: CSSImageType.URL };
				CacheStorage.getInstance().addImage(value.value);
				return image_1;
			}
			if (value.type === TokenType.FUNCTION) {
				var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];
				if (typeof imageFunction === 'undefined') {
					throw new Error("Attempting to parse an unsupported image function \"" + value.name + "\"");
				}
				return imageFunction(value.values);
			}
			throw new Error("Unsupported image type");
		}
	};
	function isSupportedImage(value) {
		return value.type !== TokenType.FUNCTION || SUPPORTED_IMAGE_FUNCTIONS[value.name];
	}
	var SUPPORTED_IMAGE_FUNCTIONS = {
		'linear-gradient': linearGradient,
		'-moz-linear-gradient': prefixLinearGradient,
		'-ms-linear-gradient': prefixLinearGradient,
		'-o-linear-gradient': prefixLinearGradient,
		'-webkit-linear-gradient': prefixLinearGradient,
		'radial-gradient': radialGradient,
		'-moz-radial-gradient': prefixRadialGradient,
		'-ms-radial-gradient': prefixRadialGradient,
		'-o-radial-gradient': prefixRadialGradient,
		'-webkit-radial-gradient': prefixRadialGradient,
		'-webkit-gradient': webkitGradient
	};

	var backgroundImage = {
		name: 'background-image',
		initialValue: 'none',
		type: PropertyDescriptorParsingType.LIST,
		prefix: false,
		parse: function (tokens) {
			if (tokens.length === 0) {
				return [];
			}
			var first = tokens[0];
			if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {
				return [];
			}
			return tokens.filter(function (value) { return nonFunctionArgSeparator(value) && isSupportedImage(value); }).map(image.parse);
		}
	};

	var backgroundOrigin = {
		name: 'background-origin',
		initialValue: 'border-box',
		prefix: false,
		type: PropertyDescriptorParsingType.LIST,
		parse: function (tokens) {
			return tokens.map(function (token) {
				if (isIdentToken(token)) {
					switch (token.value) {
						case 'padding-box':
							return 1 /* PADDING_BOX */;
						case 'content-box':
							return 2 /* CONTENT_BOX */;
					}
				}
				return 0 /* BORDER_BOX */;
			});
		}
	};

	var backgroundPosition = {
		name: 'background-position',
		initialValue: '0% 0%',
		type: PropertyDescriptorParsingType.LIST,
		prefix: false,
		parse: function (tokens) {
			return parseFunctionArgs(tokens)
				.map(function (values) { return values.filter(isLengthPercentage); })
				.map(parseLengthPercentageTuple);
		}
	};

	var BACKGROUND_REPEAT;
	(function (BACKGROUND_REPEAT) {
		BACKGROUND_REPEAT[BACKGROUND_REPEAT["REPEAT"] = 0] = "REPEAT";
		BACKGROUND_REPEAT[BACKGROUND_REPEAT["NO_REPEAT"] = 1] = "NO_REPEAT";
		BACKGROUND_REPEAT[BACKGROUND_REPEAT["REPEAT_X"] = 2] = "REPEAT_X";
		BACKGROUND_REPEAT[BACKGROUND_REPEAT["REPEAT_Y"] = 3] = "REPEAT_Y";
	})(BACKGROUND_REPEAT || (BACKGROUND_REPEAT = {}));
	var backgroundRepeat = {
		name: 'background-repeat',
		initialValue: 'repeat',
		prefix: false,
		type: PropertyDescriptorParsingType.LIST,
		parse: function (tokens) {
			return parseFunctionArgs(tokens)
				.map(function (values) {
					return values
						.filter(isIdentToken)
						.map(function (token) { return token.value; })
						.join(' ');
				})
				.map(parseBackgroundRepeat);
		}
	};
	var parseBackgroundRepeat = function (value) {
		switch (value) {
			case 'no-repeat':
				return BACKGROUND_REPEAT.NO_REPEAT;
			case 'repeat-x':
			case 'repeat no-repeat':
				return BACKGROUND_REPEAT.REPEAT_X;
			case 'repeat-y':
			case 'no-repeat repeat':
				return BACKGROUND_REPEAT.REPEAT_Y;
			case 'repeat':
			default:
				return BACKGROUND_REPEAT.REPEAT;
		}
	};

	var BACKGROUND_SIZE;
	(function (BACKGROUND_SIZE) {
		BACKGROUND_SIZE["AUTO"] = "auto";
		BACKGROUND_SIZE["CONTAIN"] = "contain";
		BACKGROUND_SIZE["COVER"] = "cover";
	})(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));
	var backgroundSize = {
		name: 'background-size',
		initialValue: '0',
		prefix: false,
		type: PropertyDescriptorParsingType.LIST,
		parse: function (tokens) {
			return parseFunctionArgs(tokens).map(function (values) { return values.filter(isBackgroundSizeInfoToken); });
		}
	};
	var isBackgroundSizeInfoToken = function (value) {
		return isIdentToken(value) || isLengthPercentage(value);
	};

	var borderColorForSide = function (side) { return ({
		name: "border-" + side + "-color",
		initialValue: 'transparent',
		prefix: false,
		type: PropertyDescriptorParsingType.TYPE_VALUE,
		format: 'color'
	}); };
	var borderTopColor = borderColorForSide('top');
	var borderRightColor = borderColorForSide('right');
	var borderBottomColor = borderColorForSide('bottom');
	var borderLeftColor = borderColorForSide('left');

	var borderRadiusForSide = function (side) { return ({
		name: "border-radius-" + side,
		initialValue: '0 0',
		prefix: false,
		type: PropertyDescriptorParsingType.LIST,
		parse: function (tokens) { return parseLengthPercentageTuple(tokens.filter(isLengthPercentage)); }
	}); };
	var borderTopLeftRadius = borderRadiusForSide('top-left');
	var borderTopRightRadius = borderRadiusForSide('top-right');
	var borderBottomRightRadius = borderRadiusForSide('bottom-right');
	var borderBottomLeftRadius = borderRadiusForSide('bottom-left');

	var BORDER_STYLE;
	(function (BORDER_STYLE) {
		BORDER_STYLE[BORDER_STYLE["NONE"] = 0] = "NONE";
		BORDER_STYLE[BORDER_STYLE["SOLID"] = 1] = "SOLID";
	})(BORDER_STYLE || (BORDER_STYLE = {}));
	var borderStyleForSide = function (side) { return ({
		name: "border-" + side + "-style",
		initialValue: 'solid',
		prefix: false,
		type: PropertyDescriptorParsingType.IDENT_VALUE,
		parse: function (style) {
			switch (style) {
				case 'none':
					return BORDER_STYLE.NONE;
			}
			return BORDER_STYLE.SOLID;
		}
	}); };
	var borderTopStyle = borderStyleForSide('top');
	var borderRightStyle = borderStyleForSide('right');
	var borderBottomStyle = borderStyleForSide('bottom');
	var borderLeftStyle = borderStyleForSide('left');

	var borderWidthForSide = function (side) { return ({
		name: "border-" + side + "-width",
		initialValue: '0',
		type: PropertyDescriptorParsingType.VALUE,
		prefix: false,
		parse: function (token) {
			if (isDimensionToken(token)) {
				return token.number;
			}
			return 0;
		}
	}); };
	var borderTopWidth = borderWidthForSide('top');
	var borderRightWidth = borderWidthForSide('right');
	var borderBottomWidth = borderWidthForSide('bottom');
	var borderLeftWidth = borderWidthForSide('left');

	var color$1 = {
		name: "color",
		initialValue: 'transparent',
		prefix: false,
		type: PropertyDescriptorParsingType.TYPE_VALUE,
		format: 'color'
	};

	var display = {
		name: 'display',
		initialValue: 'inline-block',
		prefix: false,
		type: PropertyDescriptorParsingType.LIST,
		parse: function (tokens) {
			return tokens.filter(isIdentToken).reduce(function (bit, token) {
				return bit | parseDisplayValue(token.value);
			}, 0 /* NONE */);
		}
	};
	var parseDisplayValue = function (display) {
		switch (display) {
			case 'block':
				return 2 /* BLOCK */;
			case 'inline':
				return 4 /* INLINE */;
			case 'run-in':
				return 8 /* RUN_IN */;
			case 'flow':
				return 16 /* FLOW */;
			case 'flow-root':
				return 32 /* FLOW_ROOT */;
			case 'table':
				return 64 /* TABLE */;
			case 'flex':
			case '-webkit-flex':
				return 128 /* FLEX */;
			case 'grid':
			case '-ms-grid':
				return 256 /* GRID */;
			case 'ruby':
				return 512 /* RUBY */;
			case 'subgrid':
				return 1024 /* SUBGRID */;
			case 'list-item':
				return 2048 /* LIST_ITEM */;
			case 'table-row-group':
				return 4096 /* TABLE_ROW_GROUP */;
			case 'table-header-group':
				return 8192 /* TABLE_HEADER_GROUP */;
			case 'table-footer-group':
				return 16384 /* TABLE_FOOTER_GROUP */;
			case 'table-row':
				return 32768 /* TABLE_ROW */;
			case 'table-cell':
				return 65536 /* TABLE_CELL */;
			case 'table-column-group':
				return 131072 /* TABLE_COLUMN_GROUP */;
			case 'table-column':
				return 262144 /* TABLE_COLUMN */;
			case 'table-caption':
				return 524288 /* TABLE_CAPTION */;
			case 'ruby-base':
				return 1048576 /* RUBY_BASE */;
			case 'ruby-text':
				return 2097152 /* RUBY_TEXT */;
			case 'ruby-base-container':
				return 4194304 /* RUBY_BASE_CONTAINER */;
			case 'ruby-text-container':
				return 8388608 /* RUBY_TEXT_CONTAINER */;
			case 'contents':
				return 16777216 /* CONTENTS */;
			case 'inline-block':
				return 33554432 /* INLINE_BLOCK */;
			case 'inline-list-item':
				return 67108864 /* INLINE_LIST_ITEM */;
			case 'inline-table':
				return 134217728 /* INLINE_TABLE */;
			case 'inline-flex':
				return 268435456 /* INLINE_FLEX */;
			case 'inline-grid':
				return 536870912 /* INLINE_GRID */;
		}
		return 0 /* NONE */;
	};

	var FLOAT;
	(function (FLOAT) {
		FLOAT[FLOAT["NONE"] = 0] = "NONE";
		FLOAT[FLOAT["LEFT"] = 1] = "LEFT";
		FLOAT[FLOAT["RIGHT"] = 2] = "RIGHT";
		FLOAT[FLOAT["INLINE_START"] = 3] = "INLINE_START";
		FLOAT[FLOAT["INLINE_END"] = 4] = "INLINE_END";
	})(FLOAT || (FLOAT = {}));
	var float = {
		name: 'float',
		initialValue: 'none',
		prefix: false,
		type: PropertyDescriptorParsingType.IDENT_VALUE,
		parse: function (float) {
			switch (float) {
				case 'left':
					return FLOAT.LEFT;
				case 'right':
					return FLOAT.RIGHT;
				case 'inline-start':
					return FLOAT.INLINE_START;
				case 'inline-end':
					return FLOAT.INLINE_END;
			}
			return FLOAT.NONE;
		}
	};

	var letterSpacing = {
		name: 'letter-spacing',
		initialValue: '0',
		prefix: false,
		type: PropertyDescriptorParsingType.VALUE,
		parse: function (token) {
			if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {
				return 0;
			}
			if (token.type === TokenType.NUMBER_TOKEN) {
				return token.number;
			}
			if (token.type === TokenType.DIMENSION_TOKEN) {
				return token.number;
			}
			return 0;
		}
	};

	var LINE_BREAK;
	(function (LINE_BREAK) {
		LINE_BREAK["NORMAL"] = "normal";
		LINE_BREAK["STRICT"] = "strict";
	})(LINE_BREAK || (LINE_BREAK = {}));
	var lineBreak = {
		name: 'line-break',
		initialValue: 'normal',
		prefix: false,
		type: PropertyDescriptorParsingType.IDENT_VALUE,
		parse: function (lineBreak) {
			switch (lineBreak) {
				case 'strict':
					return LINE_BREAK.STRICT;
				case 'normal':
				default:
					return LINE_BREAK.NORMAL;
			}
		}
	};

	var lineHeight = {
		name: 'line-height',
		initialValue: 'normal',
		prefix: false,
		type: PropertyDescriptorParsingType.TOKEN_VALUE
	};
	var computeLineHeight = function (token, fontSize) {
		if (isIdentToken(token) && token.value === 'normal') {
			return 1.2 * fontSize;
		}
		else if (token.type === TokenType.NUMBER_TOKEN) {
			return fontSize * token.number;
		}
		else if (isLengthPercentage(token)) {
			return getAbsoluteValue(token, fontSize);
		}
		return fontSize;
	};

	var listStyleImage = {
		name: 'list-style-image',
		initialValue: 'none',
		type: PropertyDescriptorParsingType.VALUE,
		prefix: false,
		parse: function (token) {
			if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {
				return null;
			}
			return image.parse(token);
		}
	};

	var LIST_STYLE_POSITION;
	(function (LIST_STYLE_POSITION) {
		LIST_STYLE_POSITION[LIST_STYLE_POSITION["INSIDE"] = 0] = "INSIDE";
		LIST_STYLE_POSITION[LIST_STYLE_POSITION["OUTSIDE"] = 1] = "OUTSIDE";
	})(LIST_STYLE_POSITION || (LIST_STYLE_POSITION = {}));
	var listStylePosition = {
		name: 'list-style-position',
		initialValue: 'outside',
		prefix: false,
		type: PropertyDescriptorParsingType.IDENT_VALUE,
		parse: function (position) {
			switch (position) {
				case 'inside':
					return LIST_STYLE_POSITION.INSIDE;
				case 'outside':
				default:
					return LIST_STYLE_POSITION.OUTSIDE;
			}
		}
	};

	var LIST_STYLE_TYPE;
	(function (LIST_STYLE_TYPE) {
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["NONE"] = -1] = "NONE";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["DISC"] = 0] = "DISC";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["CIRCLE"] = 1] = "CIRCLE";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["SQUARE"] = 2] = "SQUARE";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["DECIMAL"] = 3] = "DECIMAL";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["CJK_DECIMAL"] = 4] = "CJK_DECIMAL";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["DECIMAL_LEADING_ZERO"] = 5] = "DECIMAL_LEADING_ZERO";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["LOWER_ROMAN"] = 6] = "LOWER_ROMAN";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["UPPER_ROMAN"] = 7] = "UPPER_ROMAN";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["LOWER_GREEK"] = 8] = "LOWER_GREEK";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["LOWER_ALPHA"] = 9] = "LOWER_ALPHA";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["UPPER_ALPHA"] = 10] = "UPPER_ALPHA";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["ARABIC_INDIC"] = 11] = "ARABIC_INDIC";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["ARMENIAN"] = 12] = "ARMENIAN";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["BENGALI"] = 13] = "BENGALI";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["CAMBODIAN"] = 14] = "CAMBODIAN";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["CJK_EARTHLY_BRANCH"] = 15] = "CJK_EARTHLY_BRANCH";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["CJK_HEAVENLY_STEM"] = 16] = "CJK_HEAVENLY_STEM";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["CJK_IDEOGRAPHIC"] = 17] = "CJK_IDEOGRAPHIC";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["DEVANAGARI"] = 18] = "DEVANAGARI";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["ETHIOPIC_NUMERIC"] = 19] = "ETHIOPIC_NUMERIC";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["GEORGIAN"] = 20] = "GEORGIAN";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["GUJARATI"] = 21] = "GUJARATI";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["GURMUKHI"] = 22] = "GURMUKHI";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["HEBREW"] = 22] = "HEBREW";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["HIRAGANA"] = 23] = "HIRAGANA";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["HIRAGANA_IROHA"] = 24] = "HIRAGANA_IROHA";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["JAPANESE_FORMAL"] = 25] = "JAPANESE_FORMAL";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["JAPANESE_INFORMAL"] = 26] = "JAPANESE_INFORMAL";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["KANNADA"] = 27] = "KANNADA";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["KATAKANA"] = 28] = "KATAKANA";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["KATAKANA_IROHA"] = 29] = "KATAKANA_IROHA";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["KHMER"] = 30] = "KHMER";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["KOREAN_HANGUL_FORMAL"] = 31] = "KOREAN_HANGUL_FORMAL";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["KOREAN_HANJA_FORMAL"] = 32] = "KOREAN_HANJA_FORMAL";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["KOREAN_HANJA_INFORMAL"] = 33] = "KOREAN_HANJA_INFORMAL";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["LAO"] = 34] = "LAO";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["LOWER_ARMENIAN"] = 35] = "LOWER_ARMENIAN";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["MALAYALAM"] = 36] = "MALAYALAM";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["MONGOLIAN"] = 37] = "MONGOLIAN";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["MYANMAR"] = 38] = "MYANMAR";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["ORIYA"] = 39] = "ORIYA";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["PERSIAN"] = 40] = "PERSIAN";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["SIMP_CHINESE_FORMAL"] = 41] = "SIMP_CHINESE_FORMAL";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["SIMP_CHINESE_INFORMAL"] = 42] = "SIMP_CHINESE_INFORMAL";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["TAMIL"] = 43] = "TAMIL";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["TELUGU"] = 44] = "TELUGU";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["THAI"] = 45] = "THAI";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["TIBETAN"] = 46] = "TIBETAN";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["TRAD_CHINESE_FORMAL"] = 47] = "TRAD_CHINESE_FORMAL";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["TRAD_CHINESE_INFORMAL"] = 48] = "TRAD_CHINESE_INFORMAL";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["UPPER_ARMENIAN"] = 49] = "UPPER_ARMENIAN";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["DISCLOSURE_OPEN"] = 50] = "DISCLOSURE_OPEN";
		LIST_STYLE_TYPE[LIST_STYLE_TYPE["DISCLOSURE_CLOSED"] = 51] = "DISCLOSURE_CLOSED";
	})(LIST_STYLE_TYPE || (LIST_STYLE_TYPE = {}));
	var listStyleType = {
		name: 'list-style-type',
		initialValue: 'none',
		prefix: false,
		type: PropertyDescriptorParsingType.IDENT_VALUE,
		parse: function (type) {
			switch (type) {
				case 'disc':
					return LIST_STYLE_TYPE.DISC;
				case 'circle':
					return LIST_STYLE_TYPE.CIRCLE;
				case 'square':
					return LIST_STYLE_TYPE.SQUARE;
				case 'decimal':
					return LIST_STYLE_TYPE.DECIMAL;
				case 'cjk-decimal':
					return LIST_STYLE_TYPE.CJK_DECIMAL;
				case 'decimal-leading-zero':
					return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;
				case 'lower-roman':
					return LIST_STYLE_TYPE.LOWER_ROMAN;
				case 'upper-roman':
					return LIST_STYLE_TYPE.UPPER_ROMAN;
				case 'lower-greek':
					return LIST_STYLE_TYPE.LOWER_GREEK;
				case 'lower-alpha':
					return LIST_STYLE_TYPE.LOWER_ALPHA;
				case 'upper-alpha':
					return LIST_STYLE_TYPE.UPPER_ALPHA;
				case 'arabic-indic':
					return LIST_STYLE_TYPE.ARABIC_INDIC;
				case 'armenian':
					return LIST_STYLE_TYPE.ARMENIAN;
				case 'bengali':
					return LIST_STYLE_TYPE.BENGALI;
				case 'cambodian':
					return LIST_STYLE_TYPE.CAMBODIAN;
				case 'cjk-earthly-branch':
					return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;
				case 'cjk-heavenly-stem':
					return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;
				case 'cjk-ideographic':
					return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;
				case 'devanagari':
					return LIST_STYLE_TYPE.DEVANAGARI;
				case 'ethiopic-numeric':
					return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;
				case 'georgian':
					return LIST_STYLE_TYPE.GEORGIAN;
				case 'gujarati':
					return LIST_STYLE_TYPE.GUJARATI;
				case 'gurmukhi':
					return LIST_STYLE_TYPE.GURMUKHI;
				case 'hebrew':
					return LIST_STYLE_TYPE.HEBREW;
				case 'hiragana':
					return LIST_STYLE_TYPE.HIRAGANA;
				case 'hiragana-iroha':
					return LIST_STYLE_TYPE.HIRAGANA_IROHA;
				case 'japanese-formal':
					return LIST_STYLE_TYPE.JAPANESE_FORMAL;
				case 'japanese-informal':
					return LIST_STYLE_TYPE.JAPANESE_INFORMAL;
				case 'kannada':
					return LIST_STYLE_TYPE.KANNADA;
				case 'katakana':
					return LIST_STYLE_TYPE.KATAKANA;
				case 'katakana-iroha':
					return LIST_STYLE_TYPE.KATAKANA_IROHA;
				case 'khmer':
					return LIST_STYLE_TYPE.KHMER;
				case 'korean-hangul-formal':
					return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;
				case 'korean-hanja-formal':
					return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;
				case 'korean-hanja-informal':
					return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;
				case 'lao':
					return LIST_STYLE_TYPE.LAO;
				case 'lower-armenian':
					return LIST_STYLE_TYPE.LOWER_ARMENIAN;
				case 'malayalam':
					return LIST_STYLE_TYPE.MALAYALAM;
				case 'mongolian':
					return LIST_STYLE_TYPE.MONGOLIAN;
				case 'myanmar':
					return LIST_STYLE_TYPE.MYANMAR;
				case 'oriya':
					return LIST_STYLE_TYPE.ORIYA;
				case 'persian':
					return LIST_STYLE_TYPE.PERSIAN;
				case 'simp-chinese-formal':
					return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;
				case 'simp-chinese-informal':
					return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;
				case 'tamil':
					return LIST_STYLE_TYPE.TAMIL;
				case 'telugu':
					return LIST_STYLE_TYPE.TELUGU;
				case 'thai':
					return LIST_STYLE_TYPE.THAI;
				case 'tibetan':
					return LIST_STYLE_TYPE.TIBETAN;
				case 'trad-chinese-formal':
					return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;
				case 'trad-chinese-informal':
					return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;
				case 'upper-armenian':
					return LIST_STYLE_TYPE.UPPER_ARMENIAN;
				case 'disclosure-open':
					return LIST_STYLE_TYPE.DISCLOSURE_OPEN;
				case 'disclosure-closed':
					return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;
				case 'none':
				default:
					return LIST_STYLE_TYPE.NONE;
			}
		}
	};

	var marginForSide = function (side) { return ({
		name: "margin-" + side,
		initialValue: '0',
		prefix: false,
		type: PropertyDescriptorParsingType.TOKEN_VALUE
	}); };
	var marginTop = marginForSide('top');
	var marginRight = marginForSide('right');
	var marginBottom = marginForSide('bottom');
	var marginLeft = marginForSide('left');

	var OVERFLOW;
	(function (OVERFLOW) {
		OVERFLOW[OVERFLOW["VISIBLE"] = 0] = "VISIBLE";
		OVERFLOW[OVERFLOW["HIDDEN"] = 1] = "HIDDEN";
		OVERFLOW[OVERFLOW["SCROLL"] = 2] = "SCROLL";
		OVERFLOW[OVERFLOW["AUTO"] = 3] = "AUTO";
	})(OVERFLOW || (OVERFLOW = {}));
	var overflow = {
		name: 'overflow',
		initialValue: 'visible',
		prefix: false,
		type: PropertyDescriptorParsingType.LIST,
		parse: function (tokens) {
			return tokens.filter(isIdentToken).map(function (overflow) {
				switch (overflow.value) {
					case 'hidden':
						return OVERFLOW.HIDDEN;
					case 'scroll':
						return OVERFLOW.SCROLL;
					case 'auto':
						return OVERFLOW.AUTO;
					case 'visible':
					default:
						return OVERFLOW.VISIBLE;
				}
			});
		}
	};

	var OVERFLOW_WRAP;
	(function (OVERFLOW_WRAP) {
		OVERFLOW_WRAP["NORMAL"] = "normal";
		OVERFLOW_WRAP["BREAK_WORD"] = "break-word";
	})(OVERFLOW_WRAP || (OVERFLOW_WRAP = {}));
	var overflowWrap = {
		name: 'overflow-wrap',
		initialValue: 'normal',
		prefix: false,
		type: PropertyDescriptorParsingType.IDENT_VALUE,
		parse: function (overflow) {
			switch (overflow) {
				case 'break-word':
					return OVERFLOW_WRAP.BREAK_WORD;
				case 'normal':
				default:
					return OVERFLOW_WRAP.NORMAL;
			}
		}
	};

	var paddingForSide = function (side) { return ({
		name: "padding-" + side,
		initialValue: '0',
		prefix: false,
		type: PropertyDescriptorParsingType.TYPE_VALUE,
		format: 'length-percentage'
	}); };
	var paddingTop = paddingForSide('top');
	var paddingRight = paddingForSide('right');
	var paddingBottom = paddingForSide('bottom');
	var paddingLeft = paddingForSide('left');

	var TEXT_ALIGN;
	(function (TEXT_ALIGN) {
		TEXT_ALIGN[TEXT_ALIGN["LEFT"] = 0] = "LEFT";
		TEXT_ALIGN[TEXT_ALIGN["CENTER"] = 1] = "CENTER";
		TEXT_ALIGN[TEXT_ALIGN["RIGHT"] = 2] = "RIGHT";
	})(TEXT_ALIGN || (TEXT_ALIGN = {}));
	var textAlign = {
		name: 'text-align',
		initialValue: 'left',
		prefix: false,
		type: PropertyDescriptorParsingType.IDENT_VALUE,
		parse: function (textAlign) {
			switch (textAlign) {
				case 'right':
					return TEXT_ALIGN.RIGHT;
				case 'center':
				case 'justify':
					return TEXT_ALIGN.CENTER;
				case 'left':
				default:
					return TEXT_ALIGN.LEFT;
			}
		}
	};

	var POSITION;
	(function (POSITION) {
		POSITION[POSITION["STATIC"] = 0] = "STATIC";
		POSITION[POSITION["RELATIVE"] = 1] = "RELATIVE";
		POSITION[POSITION["ABSOLUTE"] = 2] = "ABSOLUTE";
		POSITION[POSITION["FIXED"] = 3] = "FIXED";
		POSITION[POSITION["STICKY"] = 4] = "STICKY";
	})(POSITION || (POSITION = {}));
	var position = {
		name: 'position',
		initialValue: 'static',
		prefix: false,
		type: PropertyDescriptorParsingType.IDENT_VALUE,
		parse: function (position) {
			switch (position) {
				case 'relative':
					return POSITION.RELATIVE;
				case 'absolute':
					return POSITION.ABSOLUTE;
				case 'fixed':
					return POSITION.FIXED;
				case 'sticky':
					return POSITION.STICKY;
			}
			return POSITION.STATIC;
		}
	};

	var textShadow = {
		name: 'text-shadow',
		initialValue: 'none',
		type: PropertyDescriptorParsingType.LIST,
		prefix: false,
		parse: function (tokens) {
			if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {
				return [];
			}
			return parseFunctionArgs(tokens).map(function (values) {
				var shadow = {
					color: COLORS.TRANSPARENT,
					offsetX: ZERO_LENGTH,
					offsetY: ZERO_LENGTH,
					blur: ZERO_LENGTH
				};
				var c = 0;
				for (var i = 0; i < values.length; i++) {
					var token = values[i];
					if (isLength(token)) {
						if (c === 0) {
							shadow.offsetX = token;
						}
						else if (c === 1) {
							shadow.offsetY = token;
						}
						else {
							shadow.blur = token;
						}
						c++;
					}
					else {
						shadow.color = color.parse(token);
					}
				}
				return shadow;
			});
		}
	};

	var TEXT_TRANSFORM;
	(function (TEXT_TRANSFORM) {
		TEXT_TRANSFORM[TEXT_TRANSFORM["NONE"] = 0] = "NONE";
		TEXT_TRANSFORM[TEXT_TRANSFORM["LOWERCASE"] = 1] = "LOWERCASE";
		TEXT_TRANSFORM[TEXT_TRANSFORM["UPPERCASE"] = 2] = "UPPERCASE";
		TEXT_TRANSFORM[TEXT_TRANSFORM["CAPITALIZE"] = 3] = "CAPITALIZE";
	})(TEXT_TRANSFORM || (TEXT_TRANSFORM = {}));
	var textTransform = {
		name: 'text-transform',
		initialValue: 'none',
		prefix: false,
		type: PropertyDescriptorParsingType.IDENT_VALUE,
		parse: function (textTransform) {
			switch (textTransform) {
				case 'uppercase':
					return TEXT_TRANSFORM.UPPERCASE;
				case 'lowercase':
					return TEXT_TRANSFORM.LOWERCASE;
				case 'capitalize':
					return TEXT_TRANSFORM.CAPITALIZE;
			}
			return TEXT_TRANSFORM.NONE;
		}
	};

	var transform = {
		name: 'transform',
		initialValue: 'none',
		prefix: true,
		type: PropertyDescriptorParsingType.VALUE,
		parse: function (token) {
			if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {
				return null;
			}
			if (token.type === TokenType.FUNCTION) {
				var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];
				if (typeof transformFunction === 'undefined') {
					throw new Error("Attempting to parse an unsupported transform function \"" + token.name + "\"");
				}
				return transformFunction(token.values);
			}
			return null;
		}
	};
	var matrix = function (args) {
		var values = args.filter(function (arg) { return arg.type === TokenType.NUMBER_TOKEN; }).map(function (arg) { return arg.number; });
		return values.length === 6 ? values : null;
	};
	// doesn't support 3D transforms at the moment
	var matrix3d = function (args) {
		var values = args.filter(function (arg) { return arg.type === TokenType.NUMBER_TOKEN; }).map(function (arg) { return arg.number; });
		var a1 = values[0], b1 = values[1], _a = values[2], _b = values[3], a2 = values[4], b2 = values[5], _c = values[6], _d = values[7], _e = values[8], _f = values[9], _g = values[10], _h = values[11], a4 = values[12], b4 = values[13], _j = values[14], _k = values[15];
		return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;
	};
	var SUPPORTED_TRANSFORM_FUNCTIONS = {
		matrix: matrix,
		matrix3d: matrix3d
	};

	var DEFAULT_VALUE = {
		type: TokenType.PERCENTAGE_TOKEN,
		number: 50,
		flags: FLAG_INTEGER
	};
	var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];
	var transformOrigin = {
		name: 'transform-origin',
		initialValue: '50% 50%',
		prefix: true,
		type: PropertyDescriptorParsingType.LIST,
		parse: function (tokens) {
			var origins = tokens.filter(isLengthPercentage);
			if (origins.length !== 2) {
				return DEFAULT;
			}
			return [origins[0], origins[1]];
		}
	};

	var VISIBILITY;
	(function (VISIBILITY) {
		VISIBILITY[VISIBILITY["VISIBLE"] = 0] = "VISIBLE";
		VISIBILITY[VISIBILITY["HIDDEN"] = 1] = "HIDDEN";
		VISIBILITY[VISIBILITY["COLLAPSE"] = 2] = "COLLAPSE";
	})(VISIBILITY || (VISIBILITY = {}));
	var visibility = {
		name: 'visible',
		initialValue: 'none',
		prefix: false,
		type: PropertyDescriptorParsingType.IDENT_VALUE,
		parse: function (visibility) {
			switch (visibility) {
				case 'hidden':
					return VISIBILITY.HIDDEN;
				case 'collapse':
					return VISIBILITY.COLLAPSE;
				case 'visible':
				default:
					return VISIBILITY.VISIBLE;
			}
		}
	};

	var WORD_BREAK;
	(function (WORD_BREAK) {
		WORD_BREAK["NORMAL"] = "normal";
		WORD_BREAK["BREAK_ALL"] = "break-all";
		WORD_BREAK["KEEP_ALL"] = "keep-all";
	})(WORD_BREAK || (WORD_BREAK = {}));
	var wordBreak = {
		name: 'word-break',
		initialValue: 'normal',
		prefix: false,
		type: PropertyDescriptorParsingType.IDENT_VALUE,
		parse: function (wordBreak) {
			switch (wordBreak) {
				case 'break-all':
					return WORD_BREAK.BREAK_ALL;
				case 'keep-all':
					return WORD_BREAK.KEEP_ALL;
				case 'normal':
				default:
					return WORD_BREAK.NORMAL;
			}
		}
	};

	var zIndex = {
		name: 'z-index',
		initialValue: 'auto',
		prefix: false,
		type: PropertyDescriptorParsingType.VALUE,
		parse: function (token) {
			if (token.type === TokenType.IDENT_TOKEN) {
				return { auto: true, order: 0 };
			}
			if (isNumberToken(token)) {
				return { auto: false, order: token.number };
			}
			throw new Error("Invalid z-index number parsed");
		}
	};

	var opacity = {
		name: 'opacity',
		initialValue: '1',
		type: PropertyDescriptorParsingType.VALUE,
		prefix: false,
		parse: function (token) {
			if (isNumberToken(token)) {
				return token.number;
			}
			return 1;
		}
	};

	var textDecorationColor = {
		name: "text-decoration-color",
		initialValue: 'transparent',
		prefix: false,
		type: PropertyDescriptorParsingType.TYPE_VALUE,
		format: 'color'
	};

	var textDecorationLine = {
		name: 'text-decoration-line',
		initialValue: 'none',
		prefix: false,
		type: PropertyDescriptorParsingType.LIST,
		parse: function (tokens) {
			return tokens
				.filter(isIdentToken)
				.map(function (token) {
					switch (token.value) {
						case 'underline':
							return 1 /* UNDERLINE */;
						case 'overline':
							return 2 /* OVERLINE */;
						case 'line-through':
							return 3 /* LINE_THROUGH */;
						case 'none':
							return 4 /* BLINK */;
					}
					return 0 /* NONE */;
				})
				.filter(function (line) { return line !== 0 /* NONE */; });
		}
	};

	var fontFamily = {
		name: "font-family",
		initialValue: '',
		prefix: false,
		type: PropertyDescriptorParsingType.LIST,
		parse: function (tokens) {
			return tokens.filter(isStringToken$1).map(function (token) { return token.value; });
		}
	};
	var isStringToken$1 = function (token) {
		return token.type === TokenType.STRING_TOKEN || token.type === TokenType.IDENT_TOKEN;
	};

	var fontSize = {
		name: "font-size",
		initialValue: '0',
		prefix: false,
		type: PropertyDescriptorParsingType.TYPE_VALUE,
		format: 'length'
	};

	var fontWeight = {
		name: 'font-weight',
		initialValue: 'normal',
		type: PropertyDescriptorParsingType.VALUE,
		prefix: false,
		parse: function (token) {
			if (isNumberToken(token)) {
				return token.number;
			}
			if (isIdentToken(token)) {
				switch (token.value) {
					case 'bold':
						return 700;
					case 'normal':
					default:
						return 400;
				}
			}
			return 400;
		}
	};

	var fontVariant = {
		name: 'font-variant',
		initialValue: 'none',
		type: PropertyDescriptorParsingType.LIST,
		prefix: false,
		parse: function (tokens) {
			return tokens.filter(isIdentToken).map(function (token) { return token.value; });
		}
	};

	var FONT_STYLE;
	(function (FONT_STYLE) {
		FONT_STYLE["NORMAL"] = "normal";
		FONT_STYLE["ITALIC"] = "italic";
		FONT_STYLE["OBLIQUE"] = "oblique";
	})(FONT_STYLE || (FONT_STYLE = {}));
	var fontStyle = {
		name: 'font-style',
		initialValue: 'normal',
		prefix: false,
		type: PropertyDescriptorParsingType.IDENT_VALUE,
		parse: function (overflow) {
			switch (overflow) {
				case 'oblique':
					return FONT_STYLE.OBLIQUE;
				case 'italic':
					return FONT_STYLE.ITALIC;
				case 'normal':
				default:
					return FONT_STYLE.NORMAL;
			}
		}
	};

	var contains = function (bit, value) { return (bit & value) !== 0; };

	var content = {
		name: 'content',
		initialValue: 'none',
		type: PropertyDescriptorParsingType.LIST,
		prefix: false,
		parse: function (tokens) {
			if (tokens.length === 0) {
				return [];
			}
			var first = tokens[0];
			if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {
				return [];
			}
			return tokens;
		}
	};

	var counterIncrement = {
		name: 'counter-increment',
		initialValue: 'none',
		prefix: true,
		type: PropertyDescriptorParsingType.LIST,
		parse: function (tokens) {
			if (tokens.length === 0) {
				return null;
			}
			var first = tokens[0];
			if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {
				return null;
			}
			var increments = [];
			var filtered = tokens.filter(nonWhiteSpace);
			for (var i = 0; i < filtered.length; i++) {
				var counter = filtered[i];
				var next = filtered[i + 1];
				if (counter.type === TokenType.IDENT_TOKEN) {
					var increment = next && isNumberToken(next) ? next.number : 1;
					increments.push({ counter: counter.value, increment: increment });
				}
			}
			return increments;
		}
	};

	var counterReset = {
		name: 'counter-reset',
		initialValue: 'none',
		prefix: true,
		type: PropertyDescriptorParsingType.LIST,
		parse: function (tokens) {
			if (tokens.length === 0) {
				return [];
			}
			var resets = [];
			var filtered = tokens.filter(nonWhiteSpace);
			for (var i = 0; i < filtered.length; i++) {
				var counter = filtered[i];
				var next = filtered[i + 1];
				if (isIdentToken(counter) && counter.value !== 'none') {
					var reset = next && isNumberToken(next) ? next.number : 0;
					resets.push({ counter: counter.value, reset: reset });
				}
			}
			return resets;
		}
	};

	var quotes = {
		name: 'quotes',
		initialValue: 'none',
		prefix: true,
		type: PropertyDescriptorParsingType.LIST,
		parse: function (tokens) {
			if (tokens.length === 0) {
				return null;
			}
			var first = tokens[0];
			if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {
				return null;
			}
			var quotes = [];
			var filtered = tokens.filter(isStringToken);
			if (filtered.length % 2 !== 0) {
				return null;
			}
			for (var i = 0; i < filtered.length; i += 2) {
				var open_1 = filtered[i].value;
				var close_1 = filtered[i + 1].value;
				quotes.push({ open: open_1, close: close_1 });
			}
			return quotes;
		}
	};
	var getQuote = function (quotes, depth, open) {
		if (!quotes) {
			return '';
		}
		var quote = quotes[Math.min(depth, quotes.length - 1)];
		if (!quote) {
			return '';
		}
		return open ? quote.open : quote.close;
	};

	var boxShadow = {
		name: 'box-shadow',
		initialValue: 'none',
		type: PropertyDescriptorParsingType.LIST,
		prefix: false,
		parse: function (tokens) {
			if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {
				return [];
			}
			return parseFunctionArgs(tokens).map(function (values) {
				var shadow = {
					color: 0x000000ff,
					offsetX: ZERO_LENGTH,
					offsetY: ZERO_LENGTH,
					blur: ZERO_LENGTH,
					spread: ZERO_LENGTH,
					inset: false
				};
				var c = 0;
				for (var i = 0; i < values.length; i++) {
					var token = values[i];
					if (isIdentWithValue(token, 'inset')) {
						shadow.inset = true;
					}
					else if (isLength(token)) {
						if (c === 0) {
							shadow.offsetX = token;
						}
						else if (c === 1) {
							shadow.offsetY = token;
						}
						else if (c === 2) {
							shadow.blur = token;
						}
						else {
							shadow.spread = token;
						}
						c++;
					}
					else {
						shadow.color = color.parse(token);
					}
				}
				return shadow;
			});
		}
	};

	var CSSParsedDeclaration = /** @class */ (function () {
		function CSSParsedDeclaration(declaration) {
			this.backgroundClip = parse(backgroundClip, declaration.backgroundClip);
			this.backgroundColor = parse(backgroundColor, declaration.backgroundColor);
			this.backgroundImage = parse(backgroundImage, declaration.backgroundImage);
			this.backgroundOrigin = parse(backgroundOrigin, declaration.backgroundOrigin);
			this.backgroundPosition = parse(backgroundPosition, declaration.backgroundPosition);
			this.backgroundRepeat = parse(backgroundRepeat, declaration.backgroundRepeat);
			this.backgroundSize = parse(backgroundSize, declaration.backgroundSize);
			this.borderTopColor = parse(borderTopColor, declaration.borderTopColor);
			this.borderRightColor = parse(borderRightColor, declaration.borderRightColor);
			this.borderBottomColor = parse(borderBottomColor, declaration.borderBottomColor);
			this.borderLeftColor = parse(borderLeftColor, declaration.borderLeftColor);
			this.borderTopLeftRadius = parse(borderTopLeftRadius, declaration.borderTopLeftRadius);
			this.borderTopRightRadius = parse(borderTopRightRadius, declaration.borderTopRightRadius);
			this.borderBottomRightRadius = parse(borderBottomRightRadius, declaration.borderBottomRightRadius);
			this.borderBottomLeftRadius = parse(borderBottomLeftRadius, declaration.borderBottomLeftRadius);
			this.borderTopStyle = parse(borderTopStyle, declaration.borderTopStyle);
			this.borderRightStyle = parse(borderRightStyle, declaration.borderRightStyle);
			this.borderBottomStyle = parse(borderBottomStyle, declaration.borderBottomStyle);
			this.borderLeftStyle = parse(borderLeftStyle, declaration.borderLeftStyle);
			this.borderTopWidth = parse(borderTopWidth, declaration.borderTopWidth);
			this.borderRightWidth = parse(borderRightWidth, declaration.borderRightWidth);
			this.borderBottomWidth = parse(borderBottomWidth, declaration.borderBottomWidth);
			this.borderLeftWidth = parse(borderLeftWidth, declaration.borderLeftWidth);
			this.boxShadow = parse(boxShadow, declaration.boxShadow);
			this.color = parse(color$1, declaration.color);
			this.display = parse(display, declaration.display);
			this.float = parse(float, declaration.cssFloat);
			this.fontFamily = parse(fontFamily, declaration.fontFamily);
			this.fontSize = parse(fontSize, declaration.fontSize);
			this.fontStyle = parse(fontStyle, declaration.fontStyle);
			this.fontVariant = parse(fontVariant, declaration.fontVariant);
			this.fontWeight = parse(fontWeight, declaration.fontWeight);
			this.letterSpacing = parse(letterSpacing, declaration.letterSpacing);
			this.lineBreak = parse(lineBreak, declaration.lineBreak);
			this.lineHeight = parse(lineHeight, declaration.lineHeight);
			this.listStyleImage = parse(listStyleImage, declaration.listStyleImage);
			this.listStylePosition = parse(listStylePosition, declaration.listStylePosition);
			this.listStyleType = parse(listStyleType, declaration.listStyleType);
			this.marginTop = parse(marginTop, declaration.marginTop);
			this.marginRight = parse(marginRight, declaration.marginRight);
			this.marginBottom = parse(marginBottom, declaration.marginBottom);
			this.marginLeft = parse(marginLeft, declaration.marginLeft);
			this.opacity = parse(opacity, declaration.opacity);
			var overflowTuple = parse(overflow, declaration.overflow);
			this.overflowX = overflowTuple[0];
			this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];
			this.overflowWrap = parse(overflowWrap, declaration.overflowWrap);
			this.paddingTop = parse(paddingTop, declaration.paddingTop);
			this.paddingRight = parse(paddingRight, declaration.paddingRight);
			this.paddingBottom = parse(paddingBottom, declaration.paddingBottom);
			this.paddingLeft = parse(paddingLeft, declaration.paddingLeft);
			this.position = parse(position, declaration.position);
			this.textAlign = parse(textAlign, declaration.textAlign);
			this.textDecorationColor = parse(textDecorationColor, declaration.textDecorationColor || declaration.color);
			this.textDecorationLine = parse(textDecorationLine, declaration.textDecorationLine);
			this.textShadow = parse(textShadow, declaration.textShadow);
			this.textTransform = parse(textTransform, declaration.textTransform);
			this.transform = parse(transform, declaration.transform);
			this.transformOrigin = parse(transformOrigin, declaration.transformOrigin);
			this.visibility = parse(visibility, declaration.visibility);
			this.wordBreak = parse(wordBreak, declaration.wordBreak);
			this.zIndex = parse(zIndex, declaration.zIndex);
		}
		CSSParsedDeclaration.prototype.isVisible = function () {
			return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;
		};
		CSSParsedDeclaration.prototype.isTransparent = function () {
			return isTransparent(this.backgroundColor);
		};
		CSSParsedDeclaration.prototype.isTransformed = function () {
			return this.transform !== null;
		};
		CSSParsedDeclaration.prototype.isPositioned = function () {
			return this.position !== POSITION.STATIC;
		};
		CSSParsedDeclaration.prototype.isPositionedWithZIndex = function () {
			return this.isPositioned() && !this.zIndex.auto;
		};
		CSSParsedDeclaration.prototype.isFloating = function () {
			return this.float !== FLOAT.NONE;
		};
		CSSParsedDeclaration.prototype.isInlineLevel = function () {
			return (contains(this.display, 4 /* INLINE */) ||
				contains(this.display, 33554432 /* INLINE_BLOCK */) ||
				contains(this.display, 268435456 /* INLINE_FLEX */) ||
				contains(this.display, 536870912 /* INLINE_GRID */) ||
				contains(this.display, 67108864 /* INLINE_LIST_ITEM */) ||
				contains(this.display, 134217728 /* INLINE_TABLE */));
		};
		return CSSParsedDeclaration;
	}());
	var CSSParsedPseudoDeclaration = /** @class */ (function () {
		function CSSParsedPseudoDeclaration(declaration) {
			this.content = parse(content, declaration.content);
			this.quotes = parse(quotes, declaration.quotes);
		}
		return CSSParsedPseudoDeclaration;
	}());
	var CSSParsedCounterDeclaration = /** @class */ (function () {
		function CSSParsedCounterDeclaration(declaration) {
			this.counterIncrement = parse(counterIncrement, declaration.counterIncrement);
			this.counterReset = parse(counterReset, declaration.counterReset);
		}
		return CSSParsedCounterDeclaration;
	}());
	// eslint-disable-next-line @typescript-eslint/no-explicit-any
	var parse = function (descriptor, style) {
		var tokenizer = new Tokenizer();
		var value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;
		tokenizer.write(value);
		var parser = new Parser(tokenizer.read());
		switch (descriptor.type) {
			case PropertyDescriptorParsingType.IDENT_VALUE:
				var token = parser.parseComponentValue();
				return descriptor.parse(isIdentToken(token) ? token.value : descriptor.initialValue);
			case PropertyDescriptorParsingType.VALUE:
				return descriptor.parse(parser.parseComponentValue());
			case PropertyDescriptorParsingType.LIST:
				return descriptor.parse(parser.parseComponentValues());
			case PropertyDescriptorParsingType.TOKEN_VALUE:
				return parser.parseComponentValue();
			case PropertyDescriptorParsingType.TYPE_VALUE:
				switch (descriptor.format) {
					case 'angle':
						return angle.parse(parser.parseComponentValue());
					case 'color':
						return color.parse(parser.parseComponentValue());
					case 'image':
						return image.parse(parser.parseComponentValue());
					case 'length':
						var length_1 = parser.parseComponentValue();
						return isLength(length_1) ? length_1 : ZERO_LENGTH;
					case 'length-percentage':
						var value_1 = parser.parseComponentValue();
						return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;
				}
		}
		throw new Error("Attempting to parse unsupported css format type " + descriptor.format);
	};

	var ElementContainer = /** @class */ (function () {
		function ElementContainer(element) {
			this.styles = new CSSParsedDeclaration(window.getComputedStyle(element, null));
			this.textNodes = [];
			this.elements = [];
			if (this.styles.transform !== null && isHTMLElementNode(element)) {
				// getBoundingClientRect takes transforms into account
				element.style.transform = 'none';
			}
			this.bounds = parseBounds(element);
			this.flags = 0;
		}
		return ElementContainer;
	}());

	var TextBounds = /** @class */ (function () {
		function TextBounds(text, bounds) {
			this.text = text;
			this.bounds = bounds;
		}
		return TextBounds;
	}());
	var parseTextBounds = function (value, styles, node) {
		var textList = breakText(value, styles);
		var textBounds = [];
		var offset = 0;
		textList.forEach(function (text) {
			if (styles.textDecorationLine.length || text.trim().length > 0) {
				if (FEATURES.SUPPORT_RANGE_BOUNDS) {
					textBounds.push(new TextBounds(text, getRangeBounds(node, offset, text.length)));
				}
				else {
					var replacementNode = node.splitText(text.length);
					textBounds.push(new TextBounds(text, getWrapperBounds(node)));
					node = replacementNode;
				}
			}
			else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {
				node = node.splitText(text.length);
			}
			offset += text.length;
		});
		return textBounds;
	};
	var getWrapperBounds = function (node) {
		var ownerDocument = node.ownerDocument;
		if (ownerDocument) {
			var wrapper = ownerDocument.createElement('html2canvaswrapper');
			wrapper.appendChild(node.cloneNode(true));
			var parentNode = node.parentNode;
			if (parentNode) {
				parentNode.replaceChild(wrapper, node);
				var bounds = parseBounds(wrapper);
				if (wrapper.firstChild) {
					parentNode.replaceChild(wrapper.firstChild, wrapper);
				}
				return bounds;
			}
		}
		return new Bounds(0, 0, 0, 0);
	};
	var getRangeBounds = function (node, offset, length) {
		var ownerDocument = node.ownerDocument;
		if (!ownerDocument) {
			throw new Error('Node has no owner document');
		}
		var range = ownerDocument.createRange();
		range.setStart(node, offset);
		range.setEnd(node, offset + length);
		return Bounds.fromClientRect(range.getBoundingClientRect());
	};
	var breakText = function (value, styles) {
		return styles.letterSpacing !== 0 ? toCodePoints(value).map(function (i) { return fromCodePoint(i); }) : breakWords(value, styles);
	};
	var breakWords = function (str, styles) {
		var breaker = LineBreaker(str, {
			lineBreak: styles.lineBreak,
			wordBreak: styles.overflowWrap === OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : styles.wordBreak
		});
		var words = [];
		var bk;
		while (!(bk = breaker.next()).done) {
			if (bk.value) {
				words.push(bk.value.slice());
			}
		}
		return words;
	};

	var TextContainer = /** @class */ (function () {
		function TextContainer(node, styles) {
			this.text = transform$1(node.data, styles.textTransform);
			this.textBounds = parseTextBounds(this.text, styles, node);
		}
		return TextContainer;
	}());
	var transform$1 = function (text, transform) {
		switch (transform) {
			case TEXT_TRANSFORM.LOWERCASE:
				return text.toLowerCase();
			case TEXT_TRANSFORM.CAPITALIZE:
				return text.replace(CAPITALIZE, capitalize);
			case TEXT_TRANSFORM.UPPERCASE:
				return text.toUpperCase();
			default:
				return text;
		}
	};
	var CAPITALIZE = /(^|\s|:|-|\(|\))([a-z])/g;
	var capitalize = function (m, p1, p2) {
		if (m.length > 0) {
			return p1 + p2.toUpperCase();
		}
		return m;
	};

	var ImageElementContainer = /** @class */ (function (_super) {
		__extends(ImageElementContainer, _super);
		function ImageElementContainer(img) {
			var _this = _super.call(this, img) || this;
			_this.src = img.currentSrc || img.src;
			_this.intrinsicWidth = img.naturalWidth;
			_this.intrinsicHeight = img.naturalHeight;
			CacheStorage.getInstance().addImage(_this.src);
			return _this;
		}
		return ImageElementContainer;
	}(ElementContainer));

	var CanvasElementContainer = /** @class */ (function (_super) {
		__extends(CanvasElementContainer, _super);
		function CanvasElementContainer(canvas) {
			var _this = _super.call(this, canvas) || this;
			_this.canvas = canvas;
			_this.intrinsicWidth = canvas.width;
			_this.intrinsicHeight = canvas.height;
			return _this;
		}
		return CanvasElementContainer;
	}(ElementContainer));

	var SVGElementContainer = /** @class */ (function (_super) {
		__extends(SVGElementContainer, _super);
		function SVGElementContainer(img) {
			var _this = _super.call(this, img) || this;
			var s = new XMLSerializer();
			_this.svg = "data:image/svg+xml," + encodeURIComponent(s.serializeToString(img));
			_this.intrinsicWidth = img.width.baseVal.value;
			_this.intrinsicHeight = img.height.baseVal.value;
			CacheStorage.getInstance().addImage(_this.svg);
			return _this;
		}
		return SVGElementContainer;
	}(ElementContainer));

	var LIElementContainer = /** @class */ (function (_super) {
		__extends(LIElementContainer, _super);
		function LIElementContainer(element) {
			var _this = _super.call(this, element) || this;
			_this.value = element.value;
			return _this;
		}
		return LIElementContainer;
	}(ElementContainer));

	var OLElementContainer = /** @class */ (function (_super) {
		__extends(OLElementContainer, _super);
		function OLElementContainer(element) {
			var _this = _super.call(this, element) || this;
			_this.start = element.start;
			_this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;
			return _this;
		}
		return OLElementContainer;
	}(ElementContainer));

	var CHECKBOX_BORDER_RADIUS = [
		{
			type: TokenType.DIMENSION_TOKEN,
			flags: 0,
			unit: 'px',
			number: 3
		}
	];
	var RADIO_BORDER_RADIUS = [
		{
			type: TokenType.PERCENTAGE_TOKEN,
			flags: 0,
			number: 50
		}
	];
	var reformatInputBounds = function (bounds) {
		if (bounds.width > bounds.height) {
			return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);
		}
		else if (bounds.width < bounds.height) {
			return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);
		}
		return bounds;
	};
	var getInputValue = function (node) {
		var value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\u2022') : node.value;
		return value.length === 0 ? node.placeholder || '' : value;
	};
	var CHECKBOX = 'checkbox';
	var RADIO = 'radio';
	var PASSWORD = 'password';
	var INPUT_COLOR = 0x2a2a2aff;
	var InputElementContainer = /** @class */ (function (_super) {
		__extends(InputElementContainer, _super);
		function InputElementContainer(input) {
			var _this = _super.call(this, input) || this;
			_this.type = input.type.toLowerCase();
			_this.checked = input.checked;
			_this.value = getInputValue(input);
			if (_this.type === CHECKBOX || _this.type === RADIO) {
				_this.styles.backgroundColor = 0xdededeff;
				_this.styles.borderTopColor = _this.styles.borderRightColor = _this.styles.borderBottomColor = _this.styles.borderLeftColor = 0xa5a5a5ff;
				_this.styles.borderTopWidth = _this.styles.borderRightWidth = _this.styles.borderBottomWidth = _this.styles.borderLeftWidth = 1;
				_this.styles.borderTopStyle = _this.styles.borderRightStyle = _this.styles.borderBottomStyle = _this.styles.borderLeftStyle =
					BORDER_STYLE.SOLID;
				_this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX];
				_this.styles.backgroundOrigin = [0 /* BORDER_BOX */];
				_this.bounds = reformatInputBounds(_this.bounds);
			}
			switch (_this.type) {
				case CHECKBOX:
					_this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = CHECKBOX_BORDER_RADIUS;
					break;
				case RADIO:
					_this.styles.borderTopRightRadius = _this.styles.borderTopLeftRadius = _this.styles.borderBottomRightRadius = _this.styles.borderBottomLeftRadius = RADIO_BORDER_RADIUS;
					break;
			}
			return _this;
		}
		return InputElementContainer;
	}(ElementContainer));

	var SelectElementContainer = /** @class */ (function (_super) {
		__extends(SelectElementContainer, _super);
		function SelectElementContainer(element) {
			var _this = _super.call(this, element) || this;
			var option = element.options[element.selectedIndex || 0];
			_this.value = option ? option.text || '' : '';
			return _this;
		}
		return SelectElementContainer;
	}(ElementContainer));

	var TextareaElementContainer = /** @class */ (function (_super) {
		__extends(TextareaElementContainer, _super);
		function TextareaElementContainer(element) {
			var _this = _super.call(this, element) || this;
			_this.value = element.value;
			return _this;
		}
		return TextareaElementContainer;
	}(ElementContainer));

	var parseColor = function (value) { return color.parse(Parser.create(value).parseComponentValue()); };
	var IFrameElementContainer = /** @class */ (function (_super) {
		__extends(IFrameElementContainer, _super);
		function IFrameElementContainer(iframe) {
			var _this = _super.call(this, iframe) || this;
			_this.src = iframe.src;
			_this.width = parseInt(iframe.width, 10) || 0;
			_this.height = parseInt(iframe.height, 10) || 0;
			_this.backgroundColor = _this.styles.backgroundColor;
			try {
				if (iframe.contentWindow &&
					iframe.contentWindow.document &&
					iframe.contentWindow.document.documentElement) {
					_this.tree = parseTree(iframe.contentWindow.document.documentElement);
					// http://www.w3.org/TR/css3-background/#special-backgrounds
					var documentBackgroundColor = iframe.contentWindow.document.documentElement
						? parseColor(getComputedStyle(iframe.contentWindow.document.documentElement)
							.backgroundColor)
						: COLORS.TRANSPARENT;
					var bodyBackgroundColor = iframe.contentWindow.document.body
						? parseColor(getComputedStyle(iframe.contentWindow.document.body).backgroundColor)
						: COLORS.TRANSPARENT;
					_this.backgroundColor = isTransparent(documentBackgroundColor)
						? isTransparent(bodyBackgroundColor)
							? _this.styles.backgroundColor
							: bodyBackgroundColor
						: documentBackgroundColor;
				}
			}
			catch (e) { }
			return _this;
		}
		return IFrameElementContainer;
	}(ElementContainer));

	var LIST_OWNERS = ['OL', 'UL', 'MENU'];
	var parseNodeTree = function (node, parent, root) {
		for (var childNode = node.firstChild, nextNode = void 0; childNode; childNode = nextNode) {
			nextNode = childNode.nextSibling;
			if (isTextNode(childNode) && childNode.data.trim().length > 0) {
				parent.textNodes.push(new TextContainer(childNode, parent.styles));
			}
			else if (isElementNode(childNode)) {
				var container = createContainer(childNode);
				if (container.styles.isVisible()) {
					if (createsRealStackingContext(childNode, container, root)) {
						container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;
					}
					else if (createsStackingContext(container.styles)) {
						container.flags |= 2 /* CREATES_STACKING_CONTEXT */;
					}
					if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {
						container.flags |= 8 /* IS_LIST_OWNER */;
					}
					parent.elements.push(container);
					if (!isTextareaElement(childNode) && !isSVGElement(childNode) && !isSelectElement(childNode)) {
						parseNodeTree(childNode, container, root);
					}
				}
			}
		}
	};
	var createContainer = function (element) {
		if (isImageElement(element)) {
			return new ImageElementContainer(element);
		}
		if (isCanvasElement(element)) {
			return new CanvasElementContainer(element);
		}
		if (isSVGElement(element)) {
			return new SVGElementContainer(element);
		}
		if (isLIElement(element)) {
			return new LIElementContainer(element);
		}
		if (isOLElement(element)) {
			return new OLElementContainer(element);
		}
		if (isInputElement(element)) {
			return new InputElementContainer(element);
		}
		if (isSelectElement(element)) {
			return new SelectElementContainer(element);
		}
		if (isTextareaElement(element)) {
			return new TextareaElementContainer(element);
		}
		if (isIFrameElement(element)) {
			return new IFrameElementContainer(element);
		}
		return new ElementContainer(element);
	};
	var parseTree = function (element) {
		var container = createContainer(element);
		container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;
		parseNodeTree(element, container, container);
		return container;
	};
	var createsRealStackingContext = function (node, container, root) {
		return (container.styles.isPositionedWithZIndex() ||
			container.styles.opacity < 1 ||
			container.styles.isTransformed() ||
			(isBodyElement(node) && root.styles.isTransparent()));
	};
	var createsStackingContext = function (styles) { return styles.isPositioned() || styles.isFloating(); };
	var isTextNode = function (node) { return node.nodeType === Node.TEXT_NODE; };
	var isElementNode = function (node) { return node.nodeType === Node.ELEMENT_NODE; };
	var isHTMLElementNode = function (node) {
		return typeof node.style !== 'undefined';
	};
	var isSVGElementNode = function (element) {
		return typeof element.className === 'object';
	};
	var isLIElement = function (node) { return node.tagName === 'LI'; };
	var isOLElement = function (node) { return node.tagName === 'OL'; };
	var isInputElement = function (node) { return node.tagName === 'INPUT'; };
	var isHTMLElement = function (node) { return node.tagName === 'HTML'; };
	var isSVGElement = function (node) { return node.tagName === 'svg'; };
	var isBodyElement = function (node) { return node.tagName === 'BODY'; };
	var isCanvasElement = function (node) { return node.tagName === 'CANVAS'; };
	var isImageElement = function (node) { return node.tagName === 'IMG'; };
	var isIFrameElement = function (node) { return node.tagName === 'IFRAME'; };
	var isStyleElement = function (node) { return node.tagName === 'STYLE'; };
	var isScriptElement = function (node) { return node.tagName === 'SCRIPT'; };
	var isTextareaElement = function (node) { return node.tagName === 'TEXTAREA'; };
	var isSelectElement = function (node) { return node.tagName === 'SELECT'; };

	var CounterState = /** @class */ (function () {
		function CounterState() {
			this.counters = {};
		}
		CounterState.prototype.getCounterValue = function (name) {
			var counter = this.counters[name];
			if (counter && counter.length) {
				return counter[counter.length - 1];
			}
			return 1;
		};
		CounterState.prototype.getCounterValues = function (name) {
			var counter = this.counters[name];
			return counter ? counter : [];
		};
		CounterState.prototype.pop = function (counters) {
			var _this = this;
			counters.forEach(function (counter) { return _this.counters[counter].pop(); });
		};
		CounterState.prototype.parse = function (style) {
			var _this = this;
			var counterIncrement = style.counterIncrement;
			var counterReset = style.counterReset;
			var canReset = true;
			if (counterIncrement !== null) {
				counterIncrement.forEach(function (entry) {
					var counter = _this.counters[entry.counter];
					if (counter && entry.increment !== 0) {
						canReset = false;
						counter[Math.max(0, counter.length - 1)] += entry.increment;
					}
				});
			}
			var counterNames = [];
			if (canReset) {
				counterReset.forEach(function (entry) {
					var counter = _this.counters[entry.counter];
					counterNames.push(entry.counter);
					if (!counter) {
						counter = _this.counters[entry.counter] = [];
					}
					counter.push(entry.reset);
				});
			}
			return counterNames;
		};
		return CounterState;
	}());
	var ROMAN_UPPER = {
		integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],
		values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']
	};
	var ARMENIAN = {
		integers: [
			9000,
			8000,
			7000,
			6000,
			5000,
			4000,
			3000,
			2000,
			1000,
			900,
			800,
			700,
			600,
			500,
			400,
			300,
			200,
			100,
			90,
			80,
			70,
			60,
			50,
			40,
			30,
			20,
			10,
			9,
			8,
			7,
			6,
			5,
			4,
			3,
			2,
			1
		],
		values: [
			'Ք',
			'Փ',
			'Ւ',
			'Ց',
			'Ր',
			'Տ',
			'Վ',
			'Ս',
			'Ռ',
			'Ջ',
			'Պ',
			'Չ',
			'Ո',
			'Շ',
			'Ն',
			'Յ',
			'Մ',
			'Ճ',
			'Ղ',
			'Ձ',
			'Հ',
			'Կ',
			'Ծ',
			'Խ',
			'Լ',
			'Ի',
			'Ժ',
			'Թ',
			'Ը',
			'Է',
			'Զ',
			'Ե',
			'Դ',
			'Գ',
			'Բ',
			'Ա'
		]
	};
	var HEBREW = {
		integers: [
			10000,
			9000,
			8000,
			7000,
			6000,
			5000,
			4000,
			3000,
			2000,
			1000,
			400,
			300,
			200,
			100,
			90,
			80,
			70,
			60,
			50,
			40,
			30,
			20,
			19,
			18,
			17,
			16,
			15,
			10,
			9,
			8,
			7,
			6,
			5,
			4,
			3,
			2,
			1
		],
		values: [
			'י׳',
			'ט׳',
			'ח׳',
			'ז׳',
			'ו׳',
			'ה׳',
			'ד׳',
			'ג׳',
			'ב׳',
			'א׳',
			'ת',
			'ש',
			'ר',
			'ק',
			'צ',
			'פ',
			'ע',
			'ס',
			'נ',
			'מ',
			'ל',
			'כ',
			'יט',
			'יח',
			'יז',
			'טז',
			'טו',
			'י',
			'ט',
			'ח',
			'ז',
			'ו',
			'ה',
			'ד',
			'ג',
			'ב',
			'א'
		]
	};
	var GEORGIAN = {
		integers: [
			10000,
			9000,
			8000,
			7000,
			6000,
			5000,
			4000,
			3000,
			2000,
			1000,
			900,
			800,
			700,
			600,
			500,
			400,
			300,
			200,
			100,
			90,
			80,
			70,
			60,
			50,
			40,
			30,
			20,
			10,
			9,
			8,
			7,
			6,
			5,
			4,
			3,
			2,
			1
		],
		values: [
			'ჵ',
			'ჰ',
			'ჯ',
			'ჴ',
			'ხ',
			'ჭ',
			'წ',
			'ძ',
			'ც',
			'ჩ',
			'შ',
			'ყ',
			'ღ',
			'ქ',
			'ფ',
			'ჳ',
			'ტ',
			'ს',
			'რ',
			'ჟ',
			'პ',
			'ო',
			'ჲ',
			'ნ',
			'მ',
			'ლ',
			'კ',
			'ი',
			'თ',
			'ჱ',
			'ზ',
			'ვ',
			'ე',
			'დ',
			'გ',
			'ბ',
			'ა'
		]
	};
	var createAdditiveCounter = function (value, min, max, symbols, fallback, suffix) {
		if (value < min || value > max) {
			return createCounterText(value, fallback, suffix.length > 0);
		}
		return (symbols.integers.reduce(function (string, integer, index) {
			while (value >= integer) {
				value -= integer;
				string += symbols.values[index];
			}
			return string;
		}, '') + suffix);
	};
	var createCounterStyleWithSymbolResolver = function (value, codePointRangeLength, isNumeric, resolver) {
		var string = '';
		do {
			if (!isNumeric) {
				value--;
			}
			string = resolver(value) + string;
			value /= codePointRangeLength;
		} while (value * codePointRangeLength >= codePointRangeLength);
		return string;
	};
	var createCounterStyleFromRange = function (value, codePointRangeStart, codePointRangeEnd, isNumeric, suffix) {
		var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;
		return ((value < 0 ? '-' : '') +
			(createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, function (codePoint) {
					return fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart);
				}) +
				suffix));
	};
	var createCounterStyleFromSymbols = function (value, symbols, suffix) {
		if (suffix === void 0) { suffix = '. '; }
		var codePointRangeLength = symbols.length;
		return (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, false, function (codePoint) { return symbols[Math.floor(codePoint % codePointRangeLength)]; }) + suffix);
	};
	var CJK_ZEROS = 1 << 0;
	var CJK_TEN_COEFFICIENTS = 1 << 1;
	var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;
	var CJK_HUNDRED_COEFFICIENTS = 1 << 3;
	var createCJKCounter = function (value, numbers, multipliers, negativeSign, suffix, flags) {
		if (value < -9999 || value > 9999) {
			return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);
		}
		var tmp = Math.abs(value);
		var string = suffix;
		if (tmp === 0) {
			return numbers[0] + string;
		}
		for (var digit = 0; tmp > 0 && digit <= 4; digit++) {
			var coefficient = tmp % 10;
			if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {
				string = numbers[coefficient] + string;
			}
			else if (coefficient > 1 ||
				(coefficient === 1 && digit === 0) ||
				(coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||
				(coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||
				(coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))) {
				string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;
			}
			else if (coefficient === 1 && digit > 0) {
				string = multipliers[digit - 1] + string;
			}
			tmp = Math.floor(tmp / 10);
		}
		return (value < 0 ? negativeSign : '') + string;
	};
	var CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';
	var CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';
	var JAPANESE_NEGATIVE = 'マイナス';
	var KOREAN_NEGATIVE = '마이너스';
	var createCounterText = function (value, type, appendSuffix) {
		var defaultSuffix = appendSuffix ? '. ' : '';
		var cjkSuffix = appendSuffix ? '、' : '';
		var koreanSuffix = appendSuffix ? ', ' : '';
		var spaceSuffix = appendSuffix ? ' ' : '';
		switch (type) {
			case LIST_STYLE_TYPE.DISC:
				return '•' + spaceSuffix;
			case LIST_STYLE_TYPE.CIRCLE:
				return '◦' + spaceSuffix;
			case LIST_STYLE_TYPE.SQUARE:
				return '◾' + spaceSuffix;
			case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:
				var string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
				return string.length < 4 ? "0" + string : string;
			case LIST_STYLE_TYPE.CJK_DECIMAL:
				return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);
			case LIST_STYLE_TYPE.LOWER_ROMAN:
				return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase();
			case LIST_STYLE_TYPE.UPPER_ROMAN:
				return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);
			case LIST_STYLE_TYPE.LOWER_GREEK:
				return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);
			case LIST_STYLE_TYPE.LOWER_ALPHA:
				return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);
			case LIST_STYLE_TYPE.UPPER_ALPHA:
				return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);
			case LIST_STYLE_TYPE.ARABIC_INDIC:
				return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);
			case LIST_STYLE_TYPE.ARMENIAN:
			case LIST_STYLE_TYPE.UPPER_ARMENIAN:
				return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);
			case LIST_STYLE_TYPE.LOWER_ARMENIAN:
				return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix).toLowerCase();
			case LIST_STYLE_TYPE.BENGALI:
				return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);
			case LIST_STYLE_TYPE.CAMBODIAN:
			case LIST_STYLE_TYPE.KHMER:
				return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);
			case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:
				return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);
			case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:
				return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);
			case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:
			case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:
				return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
			case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:
				return createCJKCounter(value, '零壹貳參肆伍陸柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '負', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
			case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:
				return createCJKCounter(value, '零一二三四五六七八九', CHINESE_INFORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
			case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:
				return createCJKCounter(value, '零壹贰叁肆伍陆柒捌玖', CHINESE_FORMAL_MULTIPLIERS, '负', cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS);
			case LIST_STYLE_TYPE.JAPANESE_INFORMAL:
				return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);
			case LIST_STYLE_TYPE.JAPANESE_FORMAL:
				return createCJKCounter(value, '零壱弐参四伍六七八九', '拾百千万', JAPANESE_NEGATIVE, cjkSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
			case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:
				return createCJKCounter(value, '영일이삼사오육칠팔구', '십백천만', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
			case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:
				return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);
			case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:
				return createCJKCounter(value, '零壹貳參四五六七八九', '拾百千', KOREAN_NEGATIVE, koreanSuffix, CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS);
			case LIST_STYLE_TYPE.DEVANAGARI:
				return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);
			case LIST_STYLE_TYPE.GEORGIAN:
				return createAdditiveCounter(value, 1, 19999, GEORGIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);
			case LIST_STYLE_TYPE.GUJARATI:
				return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);
			case LIST_STYLE_TYPE.GURMUKHI:
				return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);
			case LIST_STYLE_TYPE.HEBREW:
				return createAdditiveCounter(value, 1, 10999, HEBREW, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);
			case LIST_STYLE_TYPE.HIRAGANA:
				return createCounterStyleFromSymbols(value, 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん');
			case LIST_STYLE_TYPE.HIRAGANA_IROHA:
				return createCounterStyleFromSymbols(value, 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす');
			case LIST_STYLE_TYPE.KANNADA:
				return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);
			case LIST_STYLE_TYPE.KATAKANA:
				return createCounterStyleFromSymbols(value, 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン', cjkSuffix);
			case LIST_STYLE_TYPE.KATAKANA_IROHA:
				return createCounterStyleFromSymbols(value, 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス', cjkSuffix);
			case LIST_STYLE_TYPE.LAO:
				return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);
			case LIST_STYLE_TYPE.MONGOLIAN:
				return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);
			case LIST_STYLE_TYPE.MYANMAR:
				return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);
			case LIST_STYLE_TYPE.ORIYA:
				return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);
			case LIST_STYLE_TYPE.PERSIAN:
				return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);
			case LIST_STYLE_TYPE.TAMIL:
				return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);
			case LIST_STYLE_TYPE.TELUGU:
				return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);
			case LIST_STYLE_TYPE.THAI:
				return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);
			case LIST_STYLE_TYPE.TIBETAN:
				return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);
			case LIST_STYLE_TYPE.DECIMAL:
			default:
				return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);
		}
	};

	var IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';
	var DocumentCloner = /** @class */ (function () {
		function DocumentCloner(element, options) {
			this.options = options;
			this.scrolledElements = [];
			this.referenceElement = element;
			this.counters = new CounterState();
			this.quoteDepth = 0;
			if (!element.ownerDocument) {
				throw new Error('Cloned element does not have an owner document');
			}
			this.documentElement = this.cloneNode(element.ownerDocument.documentElement);
		}
		DocumentCloner.prototype.toIFrame = function (ownerDocument, windowSize) {
			var _this = this;
			var iframe = createIFrameContainer(ownerDocument, windowSize);
			if (!iframe.contentWindow) {
				return Promise.reject("Unable to find iframe window");
			}
			var scrollX = ownerDocument.defaultView.pageXOffset;
			var scrollY = ownerDocument.defaultView.pageYOffset;
			var cloneWindow = iframe.contentWindow;
			var documentClone = cloneWindow.document;
			/* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle
             if window url is about:blank, we can assign the url to current by writing onto the document
             */
			var iframeLoad = iframeLoader(iframe).then(function () { return __awaiter(_this, void 0, void 0, function () {
				var onclone;
				return __generator(this, function (_a) {
					switch (_a.label) {
						case 0:
							this.scrolledElements.forEach(restoreNodeScroll);
							if (cloneWindow) {
								cloneWindow.scrollTo(windowSize.left, windowSize.top);
								if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&
									(cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)) {
									documentClone.documentElement.style.top = -windowSize.top + 'px';
									documentClone.documentElement.style.left = -windowSize.left + 'px';
									documentClone.documentElement.style.position = 'absolute';
								}
							}
							onclone = this.options.onclone;
							if (typeof this.clonedReferenceElement === 'undefined') {
								return [2 /*return*/, Promise.reject("Error finding the " + this.referenceElement.nodeName + " in the cloned document")];
							}
							if (!(documentClone.fonts && documentClone.fonts.ready)) return [3 /*break*/, 2];
							return [4 /*yield*/, documentClone.fonts.ready];
						case 1:
							_a.sent();
							_a.label = 2;
						case 2:
							if (typeof onclone === 'function') {
								return [2 /*return*/, Promise.resolve()
									.then(function () { return onclone(documentClone); })
									.then(function () { return iframe; })];
							}
							return [2 /*return*/, iframe];
					}
				});
			}); });
			documentClone.open();
			documentClone.write(serializeDoctype(document.doctype) + "<html></html>");
			// Chrome scrolls the parent document for some reason after the write to the cloned window???
			restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);
			documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);
			documentClone.close();
			return iframeLoad;
		};
		DocumentCloner.prototype.createElementClone = function (node) {
			if (isCanvasElement(node)) {
				return this.createCanvasClone(node);
			}
			/*
            if (isIFrameElement(node)) {
                return this.createIFrameClone(node);
            }
    */
			if (isStyleElement(node)) {
				return this.createStyleClone(node);
			}
			return node.cloneNode(false);
		};
		DocumentCloner.prototype.createStyleClone = function (node) {
			try {
				var sheet = node.sheet;
				if (sheet && sheet.cssRules) {
					var css = [].slice.call(sheet.cssRules, 0).reduce(function (css, rule) {
						if (rule && typeof rule.cssText === 'string') {
							return css + rule.cssText;
						}
						return css;
					}, '');
					var style = node.cloneNode(false);
					style.textContent = css;
					return style;
				}
			}
			catch (e) {
				// accessing node.sheet.cssRules throws a DOMException
				Logger.getInstance(this.options.id).error('Unable to access cssRules property', e);
				if (e.name !== 'SecurityError') {
					throw e;
				}
			}
			return node.cloneNode(false);
		};
		DocumentCloner.prototype.createCanvasClone = function (canvas) {
			if (this.options.inlineImages && canvas.ownerDocument) {
				var img = canvas.ownerDocument.createElement('img');
				try {
					img.src = canvas.toDataURL();
					return img;
				}
				catch (e) {
					Logger.getInstance(this.options.id).info("Unable to clone canvas contents, canvas is tainted");
				}
			}
			var clonedCanvas = canvas.cloneNode(false);
			try {
				clonedCanvas.width = canvas.width;
				clonedCanvas.height = canvas.height;
				var ctx = canvas.getContext('2d');
				var clonedCtx = clonedCanvas.getContext('2d');
				if (clonedCtx) {
					if (ctx) {
						clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);
					}
					else {
						clonedCtx.drawImage(canvas, 0, 0);
					}
				}
				return clonedCanvas;
			}
			catch (e) { }
			return clonedCanvas;
		};
		/*
        createIFrameClone(iframe: HTMLIFrameElement) {
            const tempIframe = <HTMLIFrameElement>iframe.cloneNode(false);
            const iframeKey = generateIframeKey();
            tempIframe.setAttribute('data-html2canvas-internal-iframe-key', iframeKey);

            const {width, height} = parseBounds(iframe);

            this.resourceLoader.cache[iframeKey] = getIframeDocumentElement(iframe, this.options)
                .then(documentElement => {
                    return this.renderer(
                        documentElement,
                        {
                            allowTaint: this.options.allowTaint,
                            backgroundColor: '#ffffff',
                            canvas: null,
                            imageTimeout: this.options.imageTimeout,
                            logging: this.options.logging,
                            proxy: this.options.proxy,
                            removeContainer: this.options.removeContainer,
                            scale: this.options.scale,
                            foreignObjectRendering: this.options.foreignObjectRendering,
                            useCORS: this.options.useCORS,
                            target: new CanvasRenderer(),
                            width,
                            height,
                            x: 0,
                            y: 0,
                            windowWidth: documentElement.ownerDocument.defaultView.innerWidth,
                            windowHeight: documentElement.ownerDocument.defaultView.innerHeight,
                            scrollX: documentElement.ownerDocument.defaultView.pageXOffset,
                            scrollY: documentElement.ownerDocument.defaultView.pageYOffset
                        },
                    );
                })
                .then(
                    (canvas: HTMLCanvasElement) =>
                        new Promise((resolve, reject) => {
                            const iframeCanvas = document.createElement('img');
                            iframeCanvas.onload = () => resolve(canvas);
                            iframeCanvas.onerror = (event) => {
                                // Empty iframes may result in empty "data:," URLs, which are invalid from the <img>'s point of view
                                // and instead of `onload` cause `onerror` and unhandled rejection warnings
                                // https://github.com/niklasvh/html2canvas/issues/1502
                                iframeCanvas.src == 'data:,' ? resolve(canvas) : reject(event);
                            };
                            iframeCanvas.src = canvas.toDataURL();
                            if (tempIframe.parentNode && iframe.ownerDocument && iframe.ownerDocument.defaultView) {
                                tempIframe.parentNode.replaceChild(
                                    copyCSSStyles(
                                        iframe.ownerDocument.defaultView.getComputedStyle(iframe),
                                        iframeCanvas
                                    ),
                                    tempIframe
                                );
                            }
                        })
                );
            return tempIframe;
        }
    */
		DocumentCloner.prototype.cloneNode = function (node) {
			if (isTextNode(node)) {
				return document.createTextNode(node.data);
			}
			if (!node.ownerDocument) {
				return node.cloneNode(false);
			}
			var window = node.ownerDocument.defaultView;
			if (isHTMLElementNode(node) && window) {
				var clone = this.createElementClone(node);
				var style = window.getComputedStyle(node);
				var styleBefore = window.getComputedStyle(node, ':before');
				var styleAfter = window.getComputedStyle(node, ':after');
				if (this.referenceElement === node) {
					this.clonedReferenceElement = clone;
				}
				if (isBodyElement(clone)) {
					createPseudoHideStyles(clone);
				}
				var counters = this.counters.parse(new CSSParsedCounterDeclaration(style));
				var before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);
				for (var child = node.firstChild; child; child = child.nextSibling) {
					if (!isElementNode(child) ||
						(!isScriptElement(child) &&
							!child.hasAttribute(IGNORE_ATTRIBUTE) &&
							(typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))) {
						if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {
							clone.appendChild(this.cloneNode(child));
						}
					}
				}
				if (before) {
					clone.insertBefore(before, clone.firstChild);
				}
				var after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);
				if (after) {
					clone.appendChild(after);
				}
				this.counters.pop(counters);
				if (style && this.options.copyStyles && !isIFrameElement(node)) {
					copyCSSStyles(style, clone);
				}
				//this.inlineAllImages(clone);
				if (node.scrollTop !== 0 || node.scrollLeft !== 0) {
					this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);
				}
				if ((isTextareaElement(node) || isSelectElement(node)) &&
					(isTextareaElement(clone) || isSelectElement(clone))) {
					clone.value = node.value;
				}
				return clone;
			}
			return node.cloneNode(false);
		};
		DocumentCloner.prototype.resolvePseudoContent = function (node, clone, style, pseudoElt) {
			var _this = this;
			if (!style) {
				return;
			}
			var value = style.content;
			var document = clone.ownerDocument;
			if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {
				return;
			}
			this.counters.parse(new CSSParsedCounterDeclaration(style));
			var declaration = new CSSParsedPseudoDeclaration(style);
			var anonymousReplacedElement = document.createElement('html2canvaspseudoelement');
			copyCSSStyles(style, anonymousReplacedElement);
			declaration.content.forEach(function (token) {
				if (token.type === TokenType.STRING_TOKEN) {
					anonymousReplacedElement.appendChild(document.createTextNode(token.value));
				}
				else if (token.type === TokenType.URL_TOKEN) {
					var img = document.createElement('img');
					img.src = token.value;
					img.style.opacity = '1';
					anonymousReplacedElement.appendChild(img);
				}
				else if (token.type === TokenType.FUNCTION) {
					if (token.name === 'attr') {
						var attr = token.values.filter(isIdentToken);
						if (attr.length) {
							anonymousReplacedElement.appendChild(document.createTextNode(node.getAttribute(attr[0].value) || ''));
						}
					}
					else if (token.name === 'counter') {
						var _a = token.values.filter(nonFunctionArgSeparator), counter = _a[0], counterStyle = _a[1];
						if (counter && isIdentToken(counter)) {
							var counterState = _this.counters.getCounterValue(counter.value);
							var counterType = counterStyle && isIdentToken(counterStyle)
								? listStyleType.parse(counterStyle.value)
								: LIST_STYLE_TYPE.DECIMAL;
							anonymousReplacedElement.appendChild(document.createTextNode(createCounterText(counterState, counterType, false)));
						}
					}
					else if (token.name === 'counters') {
						var _b = token.values.filter(nonFunctionArgSeparator), counter = _b[0], delim = _b[1], counterStyle = _b[2];
						if (counter && isIdentToken(counter)) {
							var counterStates = _this.counters.getCounterValues(counter.value);
							var counterType_1 = counterStyle && isIdentToken(counterStyle)
								? listStyleType.parse(counterStyle.value)
								: LIST_STYLE_TYPE.DECIMAL;
							var separator = delim && delim.type === TokenType.STRING_TOKEN ? delim.value : '';
							var text = counterStates
								.map(function (value) { return createCounterText(value, counterType_1, false); })
								.join(separator);
							anonymousReplacedElement.appendChild(document.createTextNode(text));
						}
					}
				}
				else if (token.type === TokenType.IDENT_TOKEN) {
					switch (token.value) {
						case 'open-quote':
							anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, _this.quoteDepth++, true)));
							break;
						case 'close-quote':
							anonymousReplacedElement.appendChild(document.createTextNode(getQuote(declaration.quotes, --_this.quoteDepth, false)));
							break;
						default:
							// safari doesn't parse string tokens correctly because of lack of quotes
							anonymousReplacedElement.appendChild(document.createTextNode(token.value));
					}
				}
			});
			anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
			var newClassName = pseudoElt === PseudoElementType.BEFORE
				? " " + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE
				: " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
			if (isSVGElementNode(clone)) {
				clone.className.baseValue += newClassName;
			}
			else {
				clone.className += newClassName;
			}
			return anonymousReplacedElement;
		};
		DocumentCloner.destroy = function (container) {
			if (container.parentNode) {
				container.parentNode.removeChild(container);
				return true;
			}
			return false;
		};
		return DocumentCloner;
	}());
	var PseudoElementType;
	(function (PseudoElementType) {
		PseudoElementType[PseudoElementType["BEFORE"] = 0] = "BEFORE";
		PseudoElementType[PseudoElementType["AFTER"] = 1] = "AFTER";
	})(PseudoElementType || (PseudoElementType = {}));
	var createIFrameContainer = function (ownerDocument, bounds) {
		var cloneIframeContainer = ownerDocument.createElement('iframe');
		cloneIframeContainer.className = 'html2canvas-container';
		cloneIframeContainer.style.visibility = 'hidden';
		cloneIframeContainer.style.position = 'fixed';
		cloneIframeContainer.style.left = '-10000px';
		cloneIframeContainer.style.top = '0px';
		cloneIframeContainer.style.border = '0';
		cloneIframeContainer.width = bounds.width.toString();
		cloneIframeContainer.height = bounds.height.toString();
		cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it
		cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');
		ownerDocument.body.appendChild(cloneIframeContainer);
		return cloneIframeContainer;
	};
	var iframeLoader = function (iframe) {
		return new Promise(function (resolve, reject) {
			var cloneWindow = iframe.contentWindow;
			if (!cloneWindow) {
				return reject("No window assigned for iframe");
			}
			var documentClone = cloneWindow.document;
			cloneWindow.onload = iframe.onload = documentClone.onreadystatechange = function () {
				cloneWindow.onload = iframe.onload = documentClone.onreadystatechange = null;
				var interval = setInterval(function () {
					if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {
						clearInterval(interval);
						resolve(iframe);
					}
				}, 50);
			};
		});
	};
	var copyCSSStyles = function (style, target) {
		// Edge does not provide value for cssText
		for (var i = style.length - 1; i >= 0; i--) {
			var property = style.item(i);
			// Safari shows pseudoelements if content is set
			if (property !== 'content') {
				target.style.setProperty(property, style.getPropertyValue(property));
			}
		}
		return target;
	};
	var serializeDoctype = function (doctype) {
		var str = '';
		if (doctype) {
			str += '<!DOCTYPE ';
			if (doctype.name) {
				str += doctype.name;
			}
			if (doctype.internalSubset) {
				str += doctype.internalSubset;
			}
			if (doctype.publicId) {
				str += "\"" + doctype.publicId + "\"";
			}
			if (doctype.systemId) {
				str += "\"" + doctype.systemId + "\"";
			}
			str += '>';
		}
		return str;
	};
	var restoreOwnerScroll = function (ownerDocument, x, y) {
		if (ownerDocument &&
			ownerDocument.defaultView &&
			(x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)) {
			ownerDocument.defaultView.scrollTo(x, y);
		}
	};
	var restoreNodeScroll = function (_a) {
		var element = _a[0], x = _a[1], y = _a[2];
		element.scrollLeft = x;
		element.scrollTop = y;
	};
	var PSEUDO_BEFORE = ':before';
	var PSEUDO_AFTER = ':after';
	var PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';
	var PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';
	var PSEUDO_HIDE_ELEMENT_STYLE = "{\n    content: \"\" !important;\n    display: none !important;\n}";
	var createPseudoHideStyles = function (body) {
		createStyles(body, "." + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + PSEUDO_BEFORE + PSEUDO_HIDE_ELEMENT_STYLE + "\n         ." + PSEUDO_HIDE_ELEMENT_CLASS_AFTER + PSEUDO_AFTER + PSEUDO_HIDE_ELEMENT_STYLE);
	};
	var createStyles = function (body, styles) {
		var document = body.ownerDocument;
		if (document) {
			var style = document.createElement('style');
			style.textContent = styles;
			body.appendChild(style);
		}
	};

	var PathType;
	(function (PathType) {
		PathType[PathType["VECTOR"] = 0] = "VECTOR";
		PathType[PathType["BEZIER_CURVE"] = 1] = "BEZIER_CURVE";
	})(PathType || (PathType = {}));
	var equalPath = function (a, b) {
		if (a.length === b.length) {
			return a.some(function (v, i) { return v === b[i]; });
		}
		return false;
	};
	var transformPath = function (path, deltaX, deltaY, deltaW, deltaH) {
		return path.map(function (point, index) {
			switch (index) {
				case 0:
					return point.add(deltaX, deltaY);
				case 1:
					return point.add(deltaX + deltaW, deltaY);
				case 2:
					return point.add(deltaX + deltaW, deltaY + deltaH);
				case 3:
					return point.add(deltaX, deltaY + deltaH);
			}
			return point;
		});
	};

	var Vector = /** @class */ (function () {
		function Vector(x, y) {
			this.type = PathType.VECTOR;
			this.x = x;
			this.y = y;
		}
		Vector.prototype.add = function (deltaX, deltaY) {
			return new Vector(this.x + deltaX, this.y + deltaY);
		};
		return Vector;
	}());

	var lerp = function (a, b, t) {
		return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);
	};
	var BezierCurve = /** @class */ (function () {
		function BezierCurve(start, startControl, endControl, end) {
			this.type = PathType.BEZIER_CURVE;
			this.start = start;
			this.startControl = startControl;
			this.endControl = endControl;
			this.end = end;
		}
		BezierCurve.prototype.subdivide = function (t, firstHalf) {
			var ab = lerp(this.start, this.startControl, t);
			var bc = lerp(this.startControl, this.endControl, t);
			var cd = lerp(this.endControl, this.end, t);
			var abbc = lerp(ab, bc, t);
			var bccd = lerp(bc, cd, t);
			var dest = lerp(abbc, bccd, t);
			return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);
		};
		BezierCurve.prototype.add = function (deltaX, deltaY) {
			return new BezierCurve(this.start.add(deltaX, deltaY), this.startControl.add(deltaX, deltaY), this.endControl.add(deltaX, deltaY), this.end.add(deltaX, deltaY));
		};
		BezierCurve.prototype.reverse = function () {
			return new BezierCurve(this.end, this.endControl, this.startControl, this.start);
		};
		return BezierCurve;
	}());
	var isBezierCurve = function (path) { return path.type === PathType.BEZIER_CURVE; };

	var BoundCurves = /** @class */ (function () {
		function BoundCurves(element) {
			var styles = element.styles;
			var bounds = element.bounds;
			var _a = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height), tlh = _a[0], tlv = _a[1];
			var _b = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height), trh = _b[0], trv = _b[1];
			var _c = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height), brh = _c[0], brv = _c[1];
			var _d = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height), blh = _d[0], blv = _d[1];
			var factors = [];
			factors.push((tlh + trh) / bounds.width);
			factors.push((blh + brh) / bounds.width);
			factors.push((tlv + blv) / bounds.height);
			factors.push((trv + brv) / bounds.height);
			var maxFactor = Math.max.apply(Math, factors);
			if (maxFactor > 1) {
				tlh /= maxFactor;
				tlv /= maxFactor;
				trh /= maxFactor;
				trv /= maxFactor;
				brh /= maxFactor;
				brv /= maxFactor;
				blh /= maxFactor;
				blv /= maxFactor;
			}
			var topWidth = bounds.width - trh;
			var rightHeight = bounds.height - brv;
			var bottomWidth = bounds.width - brh;
			var leftHeight = bounds.height - blv;
			var borderTopWidth = styles.borderTopWidth;
			var borderRightWidth = styles.borderRightWidth;
			var borderBottomWidth = styles.borderBottomWidth;
			var borderLeftWidth = styles.borderLeftWidth;
			var paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);
			var paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);
			var paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);
			var paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);
			this.topLeftBorderBox =
				tlh > 0 || tlv > 0
					? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)
					: new Vector(bounds.left, bounds.top);
			this.topRightBorderBox =
				trh > 0 || trv > 0
					? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)
					: new Vector(bounds.left + bounds.width, bounds.top);
			this.bottomRightBorderBox =
				brh > 0 || brv > 0
					? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)
					: new Vector(bounds.left + bounds.width, bounds.top + bounds.height);
			this.bottomLeftBorderBox =
				blh > 0 || blv > 0
					? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)
					: new Vector(bounds.left, bounds.top + bounds.height);
			this.topLeftPaddingBox =
				tlh > 0 || tlv > 0
					? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + borderTopWidth, Math.max(0, tlh - borderLeftWidth), Math.max(0, tlv - borderTopWidth), CORNER.TOP_LEFT)
					: new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);
			this.topRightPaddingBox =
				trh > 0 || trv > 0
					? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth), bounds.top + borderTopWidth, topWidth > bounds.width + borderLeftWidth ? 0 : trh - borderLeftWidth, trv - borderTopWidth, CORNER.TOP_RIGHT)
					: new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);
			this.bottomRightPaddingBox =
				brh > 0 || brv > 0
					? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth), Math.max(0, brh - borderRightWidth), brv - borderBottomWidth, CORNER.BOTTOM_RIGHT)
					: new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + bounds.height - borderBottomWidth);
			this.bottomLeftPaddingBox =
				blh > 0 || blv > 0
					? getCurvePoints(bounds.left + borderLeftWidth, bounds.top + leftHeight, Math.max(0, blh - borderLeftWidth), blv - borderBottomWidth, CORNER.BOTTOM_LEFT)
					: new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);
			this.topLeftContentBox =
				tlh > 0 || tlv > 0
					? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop, Math.max(0, tlh - (borderLeftWidth + paddingLeft)), Math.max(0, tlv - (borderTopWidth + paddingTop)), CORNER.TOP_LEFT)
					: new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);
			this.topRightContentBox =
				trh > 0 || trv > 0
					? getCurvePoints(bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft), bounds.top + borderTopWidth + paddingTop, topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft, trv - (borderTopWidth + paddingTop), CORNER.TOP_RIGHT)
					: new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + borderTopWidth + paddingTop);
			this.bottomRightContentBox =
				brh > 0 || brv > 0
					? getCurvePoints(bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)), bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop), Math.max(0, brh - (borderRightWidth + paddingRight)), brv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_RIGHT)
					: new Vector(bounds.left + bounds.width - (borderRightWidth + paddingRight), bounds.top + bounds.height - (borderBottomWidth + paddingBottom));
			this.bottomLeftContentBox =
				blh > 0 || blv > 0
					? getCurvePoints(bounds.left + borderLeftWidth + paddingLeft, bounds.top + leftHeight, Math.max(0, blh - (borderLeftWidth + paddingLeft)), blv - (borderBottomWidth + paddingBottom), CORNER.BOTTOM_LEFT)
					: new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + bounds.height - (borderBottomWidth + paddingBottom));
		}
		return BoundCurves;
	}());
	var CORNER;
	(function (CORNER) {
		CORNER[CORNER["TOP_LEFT"] = 0] = "TOP_LEFT";
		CORNER[CORNER["TOP_RIGHT"] = 1] = "TOP_RIGHT";
		CORNER[CORNER["BOTTOM_RIGHT"] = 2] = "BOTTOM_RIGHT";
		CORNER[CORNER["BOTTOM_LEFT"] = 3] = "BOTTOM_LEFT";
	})(CORNER || (CORNER = {}));
	var getCurvePoints = function (x, y, r1, r2, position) {
		var kappa = 4 * ((Math.sqrt(2) - 1) / 3);
		var ox = r1 * kappa; // control point offset horizontal
		var oy = r2 * kappa; // control point offset vertical
		var xm = x + r1; // x-middle
		var ym = y + r2; // y-middle
		switch (position) {
			case CORNER.TOP_LEFT:
				return new BezierCurve(new Vector(x, ym), new Vector(x, ym - oy), new Vector(xm - ox, y), new Vector(xm, y));
			case CORNER.TOP_RIGHT:
				return new BezierCurve(new Vector(x, y), new Vector(x + ox, y), new Vector(xm, ym - oy), new Vector(xm, ym));
			case CORNER.BOTTOM_RIGHT:
				return new BezierCurve(new Vector(xm, y), new Vector(xm, y + oy), new Vector(x + ox, ym), new Vector(x, ym));
			case CORNER.BOTTOM_LEFT:
			default:
				return new BezierCurve(new Vector(xm, ym), new Vector(xm - ox, ym), new Vector(x, y + oy), new Vector(x, y));
		}
	};
	var calculateBorderBoxPath = function (curves) {
		return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];
	};
	var calculateContentBoxPath = function (curves) {
		return [
			curves.topLeftContentBox,
			curves.topRightContentBox,
			curves.bottomRightContentBox,
			curves.bottomLeftContentBox
		];
	};
	var calculatePaddingBoxPath = function (curves) {
		return [
			curves.topLeftPaddingBox,
			curves.topRightPaddingBox,
			curves.bottomRightPaddingBox,
			curves.bottomLeftPaddingBox
		];
	};

	var TransformEffect = /** @class */ (function () {
		function TransformEffect(offsetX, offsetY, matrix) {
			this.type = 0 /* TRANSFORM */;
			this.offsetX = offsetX;
			this.offsetY = offsetY;
			this.matrix = matrix;
			this.target = 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */;
		}
		return TransformEffect;
	}());
	var ClipEffect = /** @class */ (function () {
		function ClipEffect(path, target) {
			this.type = 1 /* CLIP */;
			this.target = target;
			this.path = path;
		}
		return ClipEffect;
	}());
	var isTransformEffect = function (effect) {
		return effect.type === 0 /* TRANSFORM */;
	};
	var isClipEffect = function (effect) { return effect.type === 1 /* CLIP */; };

	var StackingContext = /** @class */ (function () {
		function StackingContext(container) {
			this.element = container;
			this.inlineLevel = [];
			this.nonInlineLevel = [];
			this.negativeZIndex = [];
			this.zeroOrAutoZIndexOrTransformedOrOpacity = [];
			this.positiveZIndex = [];
			this.nonPositionedFloats = [];
			this.nonPositionedInlineLevel = [];
		}
		return StackingContext;
	}());
	var ElementPaint = /** @class */ (function () {
		function ElementPaint(element, parentStack) {
			this.container = element;
			this.effects = parentStack.slice(0);
			this.curves = new BoundCurves(element);
			if (element.styles.transform !== null) {
				var offsetX = element.bounds.left + element.styles.transformOrigin[0].number;
				var offsetY = element.bounds.top + element.styles.transformOrigin[1].number;
				var matrix = element.styles.transform;
				this.effects.push(new TransformEffect(offsetX, offsetY, matrix));
			}
			if (element.styles.overflowX !== OVERFLOW.VISIBLE) {
				var borderBox = calculateBorderBoxPath(this.curves);
				var paddingBox = calculatePaddingBoxPath(this.curves);
				if (equalPath(borderBox, paddingBox)) {
					this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));
				}
				else {
					this.effects.push(new ClipEffect(borderBox, 2 /* BACKGROUND_BORDERS */));
					this.effects.push(new ClipEffect(paddingBox, 4 /* CONTENT */));
				}
			}
		}
		ElementPaint.prototype.getParentEffects = function () {
			var effects = this.effects.slice(0);
			if (this.container.styles.overflowX !== OVERFLOW.VISIBLE) {
				var borderBox = calculateBorderBoxPath(this.curves);
				var paddingBox = calculatePaddingBoxPath(this.curves);
				if (!equalPath(borderBox, paddingBox)) {
					effects.push(new ClipEffect(paddingBox, 2 /* BACKGROUND_BORDERS */ | 4 /* CONTENT */));
				}
			}
			return effects;
		};
		return ElementPaint;
	}());
	var parseStackTree = function (parent, stackingContext, realStackingContext, listItems) {
		parent.container.elements.forEach(function (child) {
			var treatAsRealStackingContext = contains(child.flags, 4 /* CREATES_REAL_STACKING_CONTEXT */);
			var createsStackingContext = contains(child.flags, 2 /* CREATES_STACKING_CONTEXT */);
			var paintContainer = new ElementPaint(child, parent.getParentEffects());
			if (contains(child.styles.display, 2048 /* LIST_ITEM */)) {
				listItems.push(paintContainer);
			}
			var listOwnerItems = contains(child.flags, 8 /* IS_LIST_OWNER */) ? [] : listItems;
			if (treatAsRealStackingContext || createsStackingContext) {
				var parentStack = treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;
				var stack = new StackingContext(paintContainer);
				if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {
					var order_1 = child.styles.zIndex.order;
					if (order_1 < 0) {
						var index_1 = 0;
						parentStack.negativeZIndex.some(function (current, i) {
							if (order_1 > current.element.container.styles.zIndex.order) {
								index_1 = i;
								return false;
							}
							else if (index_1 > 0) {
								return true;
							}
							return false;
						});
						parentStack.negativeZIndex.splice(index_1, 0, stack);
					}
					else if (order_1 > 0) {
						var index_2 = 0;
						parentStack.positiveZIndex.some(function (current, i) {
							if (order_1 > current.element.container.styles.zIndex.order) {
								index_2 = i + 1;
								return false;
							}
							else if (index_2 > 0) {
								return true;
							}
							return false;
						});
						parentStack.positiveZIndex.splice(index_2, 0, stack);
					}
					else {
						parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);
					}
				}
				else {
					if (child.styles.isFloating()) {
						parentStack.nonPositionedFloats.push(stack);
					}
					else {
						parentStack.nonPositionedInlineLevel.push(stack);
					}
				}
				parseStackTree(paintContainer, stack, treatAsRealStackingContext ? stack : realStackingContext, listOwnerItems);
			}
			else {
				if (child.styles.isInlineLevel()) {
					stackingContext.inlineLevel.push(paintContainer);
				}
				else {
					stackingContext.nonInlineLevel.push(paintContainer);
				}
				parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);
			}
			if (contains(child.flags, 8 /* IS_LIST_OWNER */)) {
				processListItems(child, listOwnerItems);
			}
		});
	};
	var processListItems = function (owner, elements) {
		var numbering = owner instanceof OLElementContainer ? owner.start : 1;
		var reversed = owner instanceof OLElementContainer ? owner.reversed : false;
		for (var i = 0; i < elements.length; i++) {
			var item = elements[i];
			if (item.container instanceof LIElementContainer &&
				typeof item.container.value === 'number' &&
				item.container.value !== 0) {
				numbering = item.container.value;
			}
			item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);
			numbering += reversed ? -1 : 1;
		}
	};
	var parseStackingContexts = function (container) {
		var paintContainer = new ElementPaint(container, []);
		var root = new StackingContext(paintContainer);
		var listItems = [];
		parseStackTree(paintContainer, root, root, listItems);
		processListItems(paintContainer.container, listItems);
		return root;
	};

	var parsePathForBorder = function (curves, borderSide) {
		switch (borderSide) {
			case 0:
				return createPathFromCurves(curves.topLeftBorderBox, curves.topLeftPaddingBox, curves.topRightBorderBox, curves.topRightPaddingBox);
			case 1:
				return createPathFromCurves(curves.topRightBorderBox, curves.topRightPaddingBox, curves.bottomRightBorderBox, curves.bottomRightPaddingBox);
			case 2:
				return createPathFromCurves(curves.bottomRightBorderBox, curves.bottomRightPaddingBox, curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox);
			case 3:
			default:
				return createPathFromCurves(curves.bottomLeftBorderBox, curves.bottomLeftPaddingBox, curves.topLeftBorderBox, curves.topLeftPaddingBox);
		}
	};
	var createPathFromCurves = function (outer1, inner1, outer2, inner2) {
		var path = [];
		if (isBezierCurve(outer1)) {
			path.push(outer1.subdivide(0.5, false));
		}
		else {
			path.push(outer1);
		}
		if (isBezierCurve(outer2)) {
			path.push(outer2.subdivide(0.5, true));
		}
		else {
			path.push(outer2);
		}
		if (isBezierCurve(inner2)) {
			path.push(inner2.subdivide(0.5, true).reverse());
		}
		else {
			path.push(inner2);
		}
		if (isBezierCurve(inner1)) {
			path.push(inner1.subdivide(0.5, false).reverse());
		}
		else {
			path.push(inner1);
		}
		return path;
	};

	var paddingBox = function (element) {
		var bounds = element.bounds;
		var styles = element.styles;
		return bounds.add(styles.borderLeftWidth, styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth), -(styles.borderTopWidth + styles.borderBottomWidth));
	};
	var contentBox = function (element) {
		var styles = element.styles;
		var bounds = element.bounds;
		var paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);
		var paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);
		var paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);
		var paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);
		return bounds.add(paddingLeft + styles.borderLeftWidth, paddingTop + styles.borderTopWidth, -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight), -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom));
	};

	var calculateBackgroundPositioningArea = function (backgroundOrigin, element) {
		if (backgroundOrigin === 0 /* BORDER_BOX */) {
			return element.bounds;
		}
		if (backgroundOrigin === 2 /* CONTENT_BOX */) {
			return contentBox(element);
		}
		return paddingBox(element);
	};
	var calculateBackgroundPaintingArea = function (backgroundClip, element) {
		if (backgroundClip === BACKGROUND_CLIP.BORDER_BOX) {
			return element.bounds;
		}
		if (backgroundClip === BACKGROUND_CLIP.CONTENT_BOX) {
			return contentBox(element);
		}
		return paddingBox(element);
	};
	var calculateBackgroundRendering = function (container, index, intrinsicSize) {
		var backgroundPositioningArea = calculateBackgroundPositioningArea(getBackgroundValueForIndex(container.styles.backgroundOrigin, index), container);
		var backgroundPaintingArea = calculateBackgroundPaintingArea(getBackgroundValueForIndex(container.styles.backgroundClip, index), container);
		var backgroundImageSize = calculateBackgroundSize(getBackgroundValueForIndex(container.styles.backgroundSize, index), intrinsicSize, backgroundPositioningArea);
		var sizeWidth = backgroundImageSize[0], sizeHeight = backgroundImageSize[1];
		var position = getAbsoluteValueForTuple(getBackgroundValueForIndex(container.styles.backgroundPosition, index), backgroundPositioningArea.width - sizeWidth, backgroundPositioningArea.height - sizeHeight);
		var path = calculateBackgroundRepeatPath(getBackgroundValueForIndex(container.styles.backgroundRepeat, index), position, backgroundImageSize, backgroundPositioningArea, backgroundPaintingArea);
		var offsetX = Math.round(backgroundPositioningArea.left + position[0]);
		var offsetY = Math.round(backgroundPositioningArea.top + position[1]);
		return [path, offsetX, offsetY, sizeWidth, sizeHeight];
	};
	var isAuto = function (token) { return isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO; };
	var hasIntrinsicValue = function (value) { return typeof value === 'number'; };
	var calculateBackgroundSize = function (size, _a, bounds) {
		var intrinsicWidth = _a[0], intrinsicHeight = _a[1], intrinsicProportion = _a[2];
		var first = size[0], second = size[1];
		if (isLengthPercentage(first) && second && isLengthPercentage(second)) {
			return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];
		}
		var hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);
		if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {
			if (hasIntrinsicValue(intrinsicProportion)) {
				var targetRatio = bounds.width / bounds.height;
				return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)
					? [bounds.width, bounds.width / intrinsicProportion]
					: [bounds.height * intrinsicProportion, bounds.height];
			}
			return [bounds.width, bounds.height];
		}
		var hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);
		var hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);
		var hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;
		// If the background-size is auto or auto auto:
		if (isAuto(first) && (!second || isAuto(second))) {
			// If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.
			if (hasIntrinsicWidth && hasIntrinsicHeight) {
				return [intrinsicWidth, intrinsicHeight];
			}
			// If the image has no intrinsic dimensions and has no intrinsic proportions,
			// it's rendered at the size of the background positioning area.
			if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {
				return [bounds.width, bounds.height];
			}
			// TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.
			// If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.
			// The other dimension is computed using the specified dimension and the intrinsic proportions.
			if (hasIntrinsicDimensions && hasIntrinsicProportion) {
				var width_1 = hasIntrinsicWidth
					? intrinsicWidth
					: intrinsicHeight * intrinsicProportion;
				var height_1 = hasIntrinsicHeight
					? intrinsicHeight
					: intrinsicWidth / intrinsicProportion;
				return [width_1, height_1];
			}
			// If the image has only one intrinsic dimension but has no intrinsic proportions,
			// it's rendered using the specified dimension and the other dimension of the background positioning area.
			var width_2 = hasIntrinsicWidth ? intrinsicWidth : bounds.width;
			var height_2 = hasIntrinsicHeight ? intrinsicHeight : bounds.height;
			return [width_2, height_2];
		}
		// If the image has intrinsic proportions, it's stretched to the specified dimension.
		// The unspecified dimension is computed using the specified dimension and the intrinsic proportions.
		if (hasIntrinsicProportion) {
			var width_3 = 0;
			var height_3 = 0;
			if (isLengthPercentage(first)) {
				width_3 = getAbsoluteValue(first, bounds.width);
			}
			else if (isLengthPercentage(second)) {
				height_3 = getAbsoluteValue(second, bounds.height);
			}
			if (isAuto(first)) {
				width_3 = height_3 * intrinsicProportion;
			}
			else if (!second || isAuto(second)) {
				height_3 = width_3 / intrinsicProportion;
			}
			return [width_3, height_3];
		}
		// If the image has no intrinsic proportions, it's stretched to the specified dimension.
		// The unspecified dimension is computed using the image's corresponding intrinsic dimension,
		// if there is one. If there is no such intrinsic dimension,
		// it becomes the corresponding dimension of the background positioning area.
		var width = null;
		var height = null;
		if (isLengthPercentage(first)) {
			width = getAbsoluteValue(first, bounds.width);
		}
		else if (second && isLengthPercentage(second)) {
			height = getAbsoluteValue(second, bounds.height);
		}
		if (width !== null && (!second || isAuto(second))) {
			height =
				hasIntrinsicWidth && hasIntrinsicHeight
					? (width / intrinsicWidth) * intrinsicHeight
					: bounds.height;
		}
		if (height !== null && isAuto(first)) {
			width =
				hasIntrinsicWidth && hasIntrinsicHeight
					? (height / intrinsicHeight) * intrinsicWidth
					: bounds.width;
		}
		if (width !== null && height !== null) {
			return [width, height];
		}
		throw new Error("Unable to calculate background-size for element");
	};
	var getBackgroundValueForIndex = function (values, index) {
		var value = values[index];
		if (typeof value === 'undefined') {
			return values[0];
		}
		return value;
	};
	var calculateBackgroundRepeatPath = function (repeat, _a, _b, backgroundPositioningArea, backgroundPaintingArea) {
		var x = _a[0], y = _a[1];
		var width = _b[0], height = _b[1];
		switch (repeat) {
			case BACKGROUND_REPEAT.REPEAT_X:
				return [
					new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),
					new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(backgroundPositioningArea.top + y)),
					new Vector(Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width), Math.round(height + backgroundPositioningArea.top + y)),
					new Vector(Math.round(backgroundPositioningArea.left), Math.round(height + backgroundPositioningArea.top + y))
				];
			case BACKGROUND_REPEAT.REPEAT_Y:
				return [
					new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),
					new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top)),
					new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)),
					new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top))
				];
			case BACKGROUND_REPEAT.NO_REPEAT:
				return [
					new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y)),
					new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y)),
					new Vector(Math.round(backgroundPositioningArea.left + x + width), Math.round(backgroundPositioningArea.top + y + height)),
					new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top + y + height))
				];
			default:
				return [
					new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),
					new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.top)),
					new Vector(Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)),
					new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top))
				];
		}
	};

	var SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';

	var SAMPLE_TEXT = 'Hidden Text';
	var FontMetrics = /** @class */ (function () {
		function FontMetrics(document) {
			this._data = {};
			this._document = document;
		}
		FontMetrics.prototype.parseMetrics = function (fontFamily, fontSize) {
			var container = this._document.createElement('div');
			var img = this._document.createElement('img');
			var span = this._document.createElement('span');
			var body = this._document.body;
			container.style.visibility = 'hidden';
			container.style.fontFamily = fontFamily;
			container.style.fontSize = fontSize;
			container.style.margin = '0';
			container.style.padding = '0';
			body.appendChild(container);
			img.src = SMALL_IMAGE;
			img.width = 1;
			img.height = 1;
			img.style.margin = '0';
			img.style.padding = '0';
			img.style.verticalAlign = 'baseline';
			span.style.fontFamily = fontFamily;
			span.style.fontSize = fontSize;
			span.style.margin = '0';
			span.style.padding = '0';
			span.appendChild(this._document.createTextNode(SAMPLE_TEXT));
			container.appendChild(span);
			container.appendChild(img);
			var baseline = img.offsetTop - span.offsetTop + 2;
			container.removeChild(span);
			container.appendChild(this._document.createTextNode(SAMPLE_TEXT));
			container.style.lineHeight = 'normal';
			img.style.verticalAlign = 'super';
			var middle = img.offsetTop - container.offsetTop + 2;
			body.removeChild(container);
			return { baseline: baseline, middle: middle };
		};
		FontMetrics.prototype.getMetrics = function (fontFamily, fontSize) {
			var key = fontFamily + " " + fontSize;
			if (typeof this._data[key] === 'undefined') {
				this._data[key] = this.parseMetrics(fontFamily, fontSize);
			}
			return this._data[key];
		};
		return FontMetrics;
	}());

	var MASK_OFFSET = 10000;
	var CanvasRenderer = /** @class */ (function () {
		function CanvasRenderer(options) {
			this._activeEffects = [];
			this.canvas = options.canvas ? options.canvas : document.createElement('canvas');
			this.ctx = this.canvas.getContext('2d');
			this.options = options;
			if (!options.canvas) {
				this.canvas.width = Math.floor(options.width * options.scale);
				this.canvas.height = Math.floor(options.height * options.scale);
				this.canvas.style.width = options.width + "px";
				this.canvas.style.height = options.height + "px";
			}
			this.fontMetrics = new FontMetrics(document);
			this.ctx.scale(this.options.scale, this.options.scale);
			this.ctx.translate(-options.x + options.scrollX, -options.y + options.scrollY);
			this.ctx.textBaseline = 'bottom';
			this._activeEffects = [];
			Logger.getInstance(options.id).debug("Canvas renderer initialized (" + options.width + "x" + options.height + " at " + options.x + "," + options.y + ") with scale " + options.scale);
		}
		CanvasRenderer.prototype.applyEffects = function (effects, target) {
			var _this = this;
			while (this._activeEffects.length) {
				this.popEffect();
			}
			effects.filter(function (effect) { return contains(effect.target, target); }).forEach(function (effect) { return _this.applyEffect(effect); });
		};
		CanvasRenderer.prototype.applyEffect = function (effect) {
			this.ctx.save();
			if (isTransformEffect(effect)) {
				this.ctx.translate(effect.offsetX, effect.offsetY);
				this.ctx.transform(effect.matrix[0], effect.matrix[1], effect.matrix[2], effect.matrix[3], effect.matrix[4], effect.matrix[5]);
				this.ctx.translate(-effect.offsetX, -effect.offsetY);
			}
			if (isClipEffect(effect)) {
				this.path(effect.path);
				this.ctx.clip();
			}
			this._activeEffects.push(effect);
		};
		CanvasRenderer.prototype.popEffect = function () {
			this._activeEffects.pop();
			this.ctx.restore();
		};
		CanvasRenderer.prototype.renderStack = function (stack) {
			return __awaiter(this, void 0, void 0, function () {
				var styles;
				return __generator(this, function (_a) {
					switch (_a.label) {
						case 0:
							styles = stack.element.container.styles;
							if (!styles.isVisible()) return [3 /*break*/, 2];
							this.ctx.globalAlpha = styles.opacity;
							return [4 /*yield*/, this.renderStackContent(stack)];
						case 1:
							_a.sent();
							_a.label = 2;
						case 2: return [2 /*return*/];
					}
				});
			});
		};
		CanvasRenderer.prototype.renderNode = function (paint) {
			return __awaiter(this, void 0, void 0, function () {
				return __generator(this, function (_a) {
					switch (_a.label) {
						case 0:
							if (!paint.container.styles.isVisible()) return [3 /*break*/, 3];
							return [4 /*yield*/, this.renderNodeBackgroundAndBorders(paint)];
						case 1:
							_a.sent();
							return [4 /*yield*/, this.renderNodeContent(paint)];
						case 2:
							_a.sent();
							_a.label = 3;
						case 3: return [2 /*return*/];
					}
				});
			});
		};
		CanvasRenderer.prototype.renderTextWithLetterSpacing = function (text, letterSpacing) {
			var _this = this;
			if (letterSpacing === 0) {
				this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);
			}
			else {
				var letters = toCodePoints(text.text).map(function (i) { return fromCodePoint(i); });
				letters.reduce(function (left, letter) {
					_this.ctx.fillText(letter, left, text.bounds.top + text.bounds.height);
					return left + _this.ctx.measureText(letter).width;
				}, text.bounds.left);
			}
		};
		CanvasRenderer.prototype.createFontStyle = function (styles) {
			var fontVariant = styles.fontVariant
				.filter(function (variant) { return variant === 'normal' || variant === 'small-caps'; })
				.join('');
			var fontFamily = styles.fontFamily.join(', ');
			var fontSize = isDimensionToken(styles.fontSize)
				? "" + styles.fontSize.number + styles.fontSize.unit
				: styles.fontSize.number + "px";
			return [
				[styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),
				fontFamily,
				fontSize
			];
		};
		CanvasRenderer.prototype.renderTextNode = function (text, styles) {
			return __awaiter(this, void 0, void 0, function () {
				var _a, font, fontFamily, fontSize;
				var _this = this;
				return __generator(this, function (_b) {
					_a = this.createFontStyle(styles), font = _a[0], fontFamily = _a[1], fontSize = _a[2];
					this.ctx.font = font;
					text.textBounds.forEach(function (text) {
						_this.ctx.fillStyle = asString(styles.color);
						_this.renderTextWithLetterSpacing(text, styles.letterSpacing);
						var textShadows = styles.textShadow;
						if (textShadows.length && text.text.trim().length) {
							textShadows
								.slice(0)
								.reverse()
								.forEach(function (textShadow) {
									_this.ctx.shadowColor = asString(textShadow.color);
									_this.ctx.shadowOffsetX = textShadow.offsetX.number * _this.options.scale;
									_this.ctx.shadowOffsetY = textShadow.offsetY.number * _this.options.scale;
									_this.ctx.shadowBlur = textShadow.blur.number;
									_this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + text.bounds.height);
								});
							_this.ctx.shadowColor = '';
							_this.ctx.shadowOffsetX = 0;
							_this.ctx.shadowOffsetY = 0;
							_this.ctx.shadowBlur = 0;
						}
						if (styles.textDecorationLine.length) {
							_this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);
							styles.textDecorationLine.forEach(function (textDecorationLine) {
								switch (textDecorationLine) {
									case 1 /* UNDERLINE */:
										// Draws a line at the baseline of the font
										// TODO As some browsers display the line as more than 1px if the font-size is big,
										// need to take that into account both in position and size
										var baseline = _this.fontMetrics.getMetrics(fontFamily, fontSize).baseline;
										_this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top + baseline), text.bounds.width, 1);
										break;
									case 2 /* OVERLINE */:
										_this.ctx.fillRect(text.bounds.left, Math.round(text.bounds.top), text.bounds.width, 1);
										break;
									case 3 /* LINE_THROUGH */:
										// TODO try and find exact position for line-through
										var middle = _this.fontMetrics.getMetrics(fontFamily, fontSize).middle;
										_this.ctx.fillRect(text.bounds.left, Math.ceil(text.bounds.top + middle), text.bounds.width, 1);
										break;
								}
							});
						}
					});
					return [2 /*return*/];
				});
			});
		};
		CanvasRenderer.prototype.renderReplacedElement = function (container, curves, image) {
			if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {
				var box = contentBox(container);
				var path = calculatePaddingBoxPath(curves);
				this.path(path);
				this.ctx.save();
				this.ctx.clip();
				this.ctx.drawImage(image, 0, 0, container.intrinsicWidth, container.intrinsicHeight, box.left, box.top, box.width, box.height);
				this.ctx.restore();
			}
		};
		CanvasRenderer.prototype.renderNodeContent = function (paint) {
			return __awaiter(this, void 0, void 0, function () {
				var container, curves, styles, _i, _a, child, image, e_1, image, e_2, iframeRenderer, canvas, size, bounds, x, textBounds, img, image, url, e_3, bounds;
				return __generator(this, function (_b) {
					switch (_b.label) {
						case 0:
							this.applyEffects(paint.effects, 4 /* CONTENT */);
							container = paint.container;
							curves = paint.curves;
							styles = container.styles;
							_i = 0, _a = container.textNodes;
							_b.label = 1;
						case 1:
							if (!(_i < _a.length)) return [3 /*break*/, 4];
							child = _a[_i];
							return [4 /*yield*/, this.renderTextNode(child, styles)];
						case 2:
							_b.sent();
							_b.label = 3;
						case 3:
							_i++;
							return [3 /*break*/, 1];
						case 4:
							if (!(container instanceof ImageElementContainer)) return [3 /*break*/, 8];
							_b.label = 5;
						case 5:
							_b.trys.push([5, 7, , 8]);
							return [4 /*yield*/, this.options.cache.match(container.src)];
						case 6:
							image = _b.sent();
							this.renderReplacedElement(container, curves, image);
							return [3 /*break*/, 8];
						case 7:
							e_1 = _b.sent();
							Logger.getInstance(this.options.id).error("Error loading image " + container.src);
							return [3 /*break*/, 8];
						case 8:
							if (container instanceof CanvasElementContainer) {
								this.renderReplacedElement(container, curves, container.canvas);
							}
							if (!(container instanceof SVGElementContainer)) return [3 /*break*/, 12];
							_b.label = 9;
						case 9:
							_b.trys.push([9, 11, , 12]);
							return [4 /*yield*/, this.options.cache.match(container.svg)];
						case 10:
							image = _b.sent();
							this.renderReplacedElement(container, curves, image);
							return [3 /*break*/, 12];
						case 11:
							e_2 = _b.sent();
							Logger.getInstance(this.options.id).error("Error loading svg " + container.svg.substring(0, 255));
							return [3 /*break*/, 12];
						case 12:
							if (!(container instanceof IFrameElementContainer && container.tree)) return [3 /*break*/, 14];
							iframeRenderer = new CanvasRenderer({
								id: this.options.id,
								scale: this.options.scale,
								backgroundColor: container.backgroundColor,
								x: 0,
								y: 0,
								scrollX: 0,
								scrollY: 0,
								width: container.width,
								height: container.height,
								cache: this.options.cache,
								windowWidth: container.width,
								windowHeight: container.height
							});
							return [4 /*yield*/, iframeRenderer.render(container.tree)];
						case 13:
							canvas = _b.sent();
							if (container.width && container.height) {
								this.ctx.drawImage(canvas, 0, 0, container.width, container.height, container.bounds.left, container.bounds.top, container.bounds.width, container.bounds.height);
							}
							_b.label = 14;
						case 14:
							if (container instanceof InputElementContainer) {
								size = Math.min(container.bounds.width, container.bounds.height);
								if (container.type === CHECKBOX) {
									if (container.checked) {
										this.ctx.save();
										this.path([
											new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),
											new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),
											new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),
											new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),
											new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),
											new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),
											new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)
										]);
										this.ctx.fillStyle = asString(INPUT_COLOR);
										this.ctx.fill();
										this.ctx.restore();
									}
								}
								else if (container.type === RADIO) {
									if (container.checked) {
										this.ctx.save();
										this.ctx.beginPath();
										this.ctx.arc(container.bounds.left + size / 2, container.bounds.top + size / 2, size / 4, 0, Math.PI * 2, true);
										this.ctx.fillStyle = asString(INPUT_COLOR);
										this.ctx.fill();
										this.ctx.restore();
									}
								}
							}
							if (isTextInputElement(container) && container.value.length) {
								this.ctx.font = this.createFontStyle(styles)[0];
								this.ctx.fillStyle = asString(styles.color);
								this.ctx.textBaseline = 'middle';
								this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);
								bounds = contentBox(container);
								x = 0;
								switch (container.styles.textAlign) {
									case TEXT_ALIGN.CENTER:
										x += bounds.width / 2;
										break;
									case TEXT_ALIGN.RIGHT:
										x += bounds.width;
										break;
								}
								textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);
								this.ctx.save();
								this.path([
									new Vector(bounds.left, bounds.top),
									new Vector(bounds.left + bounds.width, bounds.top),
									new Vector(bounds.left + bounds.width, bounds.top + bounds.height),
									new Vector(bounds.left, bounds.top + bounds.height)
								]);
								this.ctx.clip();
								this.renderTextWithLetterSpacing(new TextBounds(container.value, textBounds), styles.letterSpacing);
								this.ctx.restore();
								this.ctx.textBaseline = 'bottom';
								this.ctx.textAlign = 'left';
							}
							if (!contains(container.styles.display, 2048 /* LIST_ITEM */)) return [3 /*break*/, 20];
							if (!(container.styles.listStyleImage !== null)) return [3 /*break*/, 19];
							img = container.styles.listStyleImage;
							if (!(img.type === CSSImageType.URL)) return [3 /*break*/, 18];
							image = void 0;
							url = img.url;
							_b.label = 15;
						case 15:
							_b.trys.push([15, 17, , 18]);
							return [4 /*yield*/, this.options.cache.match(url)];
						case 16:
							image = _b.sent();
							this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);
							return [3 /*break*/, 18];
						case 17:
							e_3 = _b.sent();
							Logger.getInstance(this.options.id).error("Error loading list-style-image " + url);
							return [3 /*break*/, 18];
						case 18: return [3 /*break*/, 20];
						case 19:
							if (paint.listValue && container.styles.listStyleType !== LIST_STYLE_TYPE.NONE) {
								this.ctx.font = this.createFontStyle(styles)[0];
								this.ctx.fillStyle = asString(styles.color);
								this.ctx.textBaseline = 'middle';
								this.ctx.textAlign = 'right';
								bounds = new Bounds(container.bounds.left, container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width), container.bounds.width, computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1);
								this.renderTextWithLetterSpacing(new TextBounds(paint.listValue, bounds), styles.letterSpacing);
								this.ctx.textBaseline = 'bottom';
								this.ctx.textAlign = 'left';
							}
							_b.label = 20;
						case 20: return [2 /*return*/];
					}
				});
			});
		};
		CanvasRenderer.prototype.renderStackContent = function (stack) {
			return __awaiter(this, void 0, void 0, function () {
				var _i, _a, child, _b, _c, child, _d, _e, child, _f, _g, child, _h, _j, child, _k, _l, child, _m, _o, child;
				return __generator(this, function (_p) {
					switch (_p.label) {
						case 0:
							// https://www.w3.org/TR/css-position-3/#painting-order
							// 1. the background and borders of the element forming the stacking context.
							return [4 /*yield*/, this.renderNodeBackgroundAndBorders(stack.element)];
						case 1:
							// https://www.w3.org/TR/css-position-3/#painting-order
							// 1. the background and borders of the element forming the stacking context.
							_p.sent();
							_i = 0, _a = stack.negativeZIndex;
							_p.label = 2;
						case 2:
							if (!(_i < _a.length)) return [3 /*break*/, 5];
							child = _a[_i];
							return [4 /*yield*/, this.renderStack(child)];
						case 3:
							_p.sent();
							_p.label = 4;
						case 4:
							_i++;
							return [3 /*break*/, 2];
						case 5:
							// 3. For all its in-flow, non-positioned, block-level descendants in tree order:
							return [4 /*yield*/, this.renderNodeContent(stack.element)];
						case 6:
							// 3. For all its in-flow, non-positioned, block-level descendants in tree order:
							_p.sent();
							_b = 0, _c = stack.nonInlineLevel;
							_p.label = 7;
						case 7:
							if (!(_b < _c.length)) return [3 /*break*/, 10];
							child = _c[_b];
							return [4 /*yield*/, this.renderNode(child)];
						case 8:
							_p.sent();
							_p.label = 9;
						case 9:
							_b++;
							return [3 /*break*/, 7];
						case 10:
							_d = 0, _e = stack.nonPositionedFloats;
							_p.label = 11;
						case 11:
							if (!(_d < _e.length)) return [3 /*break*/, 14];
							child = _e[_d];
							return [4 /*yield*/, this.renderStack(child)];
						case 12:
							_p.sent();
							_p.label = 13;
						case 13:
							_d++;
							return [3 /*break*/, 11];
						case 14:
							_f = 0, _g = stack.nonPositionedInlineLevel;
							_p.label = 15;
						case 15:
							if (!(_f < _g.length)) return [3 /*break*/, 18];
							child = _g[_f];
							return [4 /*yield*/, this.renderStack(child)];
						case 16:
							_p.sent();
							_p.label = 17;
						case 17:
							_f++;
							return [3 /*break*/, 15];
						case 18:
							_h = 0, _j = stack.inlineLevel;
							_p.label = 19;
						case 19:
							if (!(_h < _j.length)) return [3 /*break*/, 22];
							child = _j[_h];
							return [4 /*yield*/, this.renderNode(child)];
						case 20:
							_p.sent();
							_p.label = 21;
						case 21:
							_h++;
							return [3 /*break*/, 19];
						case 22:
							_k = 0, _l = stack.zeroOrAutoZIndexOrTransformedOrOpacity;
							_p.label = 23;
						case 23:
							if (!(_k < _l.length)) return [3 /*break*/, 26];
							child = _l[_k];
							return [4 /*yield*/, this.renderStack(child)];
						case 24:
							_p.sent();
							_p.label = 25;
						case 25:
							_k++;
							return [3 /*break*/, 23];
						case 26:
							_m = 0, _o = stack.positiveZIndex;
							_p.label = 27;
						case 27:
							if (!(_m < _o.length)) return [3 /*break*/, 30];
							child = _o[_m];
							return [4 /*yield*/, this.renderStack(child)];
						case 28:
							_p.sent();
							_p.label = 29;
						case 29:
							_m++;
							return [3 /*break*/, 27];
						case 30: return [2 /*return*/];
					}
				});
			});
		};
		CanvasRenderer.prototype.mask = function (paths) {
			this.ctx.beginPath();
			this.ctx.moveTo(0, 0);
			this.ctx.lineTo(this.canvas.width, 0);
			this.ctx.lineTo(this.canvas.width, this.canvas.height);
			this.ctx.lineTo(0, this.canvas.height);
			this.ctx.lineTo(0, 0);
			this.formatPath(paths.slice(0).reverse());
			this.ctx.closePath();
		};
		CanvasRenderer.prototype.path = function (paths) {
			this.ctx.beginPath();
			this.formatPath(paths);
			this.ctx.closePath();
		};
		CanvasRenderer.prototype.formatPath = function (paths) {
			var _this = this;
			paths.forEach(function (point, index) {
				var start = isBezierCurve(point) ? point.start : point;
				if (index === 0) {
					_this.ctx.moveTo(start.x, start.y);
				}
				else {
					_this.ctx.lineTo(start.x, start.y);
				}
				if (isBezierCurve(point)) {
					_this.ctx.bezierCurveTo(point.startControl.x, point.startControl.y, point.endControl.x, point.endControl.y, point.end.x, point.end.y);
				}
			});
		};
		CanvasRenderer.prototype.renderRepeat = function (path, pattern, offsetX, offsetY) {
			this.path(path);
			this.ctx.fillStyle = pattern;
			this.ctx.translate(offsetX, offsetY);
			this.ctx.fill();
			this.ctx.translate(-offsetX, -offsetY);
		};
		CanvasRenderer.prototype.resizeImage = function (image, width, height) {
			if (image.width === width && image.height === height) {
				return image;
			}
			var canvas = this.canvas.ownerDocument.createElement('canvas');
			canvas.width = width;
			canvas.height = height;
			var ctx = canvas.getContext('2d');
			ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);
			return canvas;
		};
		CanvasRenderer.prototype.renderBackgroundImage = function (container) {
			return __awaiter(this, void 0, void 0, function () {
				var index, _loop_1, this_1, _i, _a, backgroundImage;
				return __generator(this, function (_b) {
					switch (_b.label) {
						case 0:
							index = container.styles.backgroundImage.length - 1;
							_loop_1 = function (backgroundImage) {
								var image, url, e_4, _a, path, x, y, width, height, pattern, _b, path, x, y, width, height, _c, lineLength, x0, x1, y0, y1, canvas, ctx, gradient_1, pattern, _d, path, left, top_1, width, height, position, x, y, _e, rx, ry, radialGradient_1, midX, midY, f, invF;
								return __generator(this, function (_f) {
									switch (_f.label) {
										case 0:
											if (!(backgroundImage.type === CSSImageType.URL)) return [3 /*break*/, 5];
											image = void 0;
											url = backgroundImage.url;
											_f.label = 1;
										case 1:
											_f.trys.push([1, 3, , 4]);
											return [4 /*yield*/, this_1.options.cache.match(url)];
										case 2:
											image = _f.sent();
											return [3 /*break*/, 4];
										case 3:
											e_4 = _f.sent();
											Logger.getInstance(this_1.options.id).error("Error loading background-image " + url);
											return [3 /*break*/, 4];
										case 4:
											if (image) {
												_a = calculateBackgroundRendering(container, index, [
													image.width,
													image.height,
													image.width / image.height
												]), path = _a[0], x = _a[1], y = _a[2], width = _a[3], height = _a[4];
												pattern = this_1.ctx.createPattern(this_1.resizeImage(image, width, height), 'repeat');
												this_1.renderRepeat(path, pattern, x, y);
											}
											return [3 /*break*/, 6];
										case 5:
											if (isLinearGradient(backgroundImage)) {
												_b = calculateBackgroundRendering(container, index, [null, null, null]), path = _b[0], x = _b[1], y = _b[2], width = _b[3], height = _b[4];
												_c = calculateGradientDirection(backgroundImage.angle, width, height), lineLength = _c[0], x0 = _c[1], x1 = _c[2], y0 = _c[3], y1 = _c[4];
												canvas = document.createElement('canvas');
												canvas.width = width;
												canvas.height = height;
												ctx = canvas.getContext('2d');
												gradient_1 = ctx.createLinearGradient(x0, y0, x1, y1);
												processColorStops(backgroundImage.stops, lineLength).forEach(function (colorStop) {
													return gradient_1.addColorStop(colorStop.stop, asString(colorStop.color));
												});
												ctx.fillStyle = gradient_1;
												ctx.fillRect(0, 0, width, height);
												if (width > 0 && height > 0) {
													pattern = this_1.ctx.createPattern(canvas, 'repeat');
													this_1.renderRepeat(path, pattern, x, y);
												}
											}
											else if (isRadialGradient(backgroundImage)) {
												_d = calculateBackgroundRendering(container, index, [
													null,
													null,
													null
												]), path = _d[0], left = _d[1], top_1 = _d[2], width = _d[3], height = _d[4];
												position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;
												x = getAbsoluteValue(position[0], width);
												y = getAbsoluteValue(position[position.length - 1], height);
												_e = calculateRadius(backgroundImage, x, y, width, height), rx = _e[0], ry = _e[1];
												if (rx > 0 && rx > 0) {
													radialGradient_1 = this_1.ctx.createRadialGradient(left + x, top_1 + y, 0, left + x, top_1 + y, rx);
													processColorStops(backgroundImage.stops, rx * 2).forEach(function (colorStop) {
														return radialGradient_1.addColorStop(colorStop.stop, asString(colorStop.color));
													});
													this_1.path(path);
													this_1.ctx.fillStyle = radialGradient_1;
													if (rx !== ry) {
														midX = container.bounds.left + 0.5 * container.bounds.width;
														midY = container.bounds.top + 0.5 * container.bounds.height;
														f = ry / rx;
														invF = 1 / f;
														this_1.ctx.save();
														this_1.ctx.translate(midX, midY);
														this_1.ctx.transform(1, 0, 0, f, 0, 0);
														this_1.ctx.translate(-midX, -midY);
														this_1.ctx.fillRect(left, invF * (top_1 - midY) + midY, width, height * invF);
														this_1.ctx.restore();
													}
													else {
														this_1.ctx.fill();
													}
												}
											}
											_f.label = 6;
										case 6:
											index--;
											return [2 /*return*/];
									}
								});
							};
							this_1 = this;
							_i = 0, _a = container.styles.backgroundImage.slice(0).reverse();
							_b.label = 1;
						case 1:
							if (!(_i < _a.length)) return [3 /*break*/, 4];
							backgroundImage = _a[_i];
							return [5 /*yield**/, _loop_1(backgroundImage)];
						case 2:
							_b.sent();
							_b.label = 3;
						case 3:
							_i++;
							return [3 /*break*/, 1];
						case 4: return [2 /*return*/];
					}
				});
			});
		};
		CanvasRenderer.prototype.renderBorder = function (color, side, curvePoints) {
			return __awaiter(this, void 0, void 0, function () {
				return __generator(this, function (_a) {
					this.path(parsePathForBorder(curvePoints, side));
					this.ctx.fillStyle = asString(color);
					this.ctx.fill();
					return [2 /*return*/];
				});
			});
		};
		CanvasRenderer.prototype.renderNodeBackgroundAndBorders = function (paint) {
			return __awaiter(this, void 0, void 0, function () {
				var styles, hasBackground, borders, backgroundPaintingArea, side, _i, borders_1, border;
				var _this = this;
				return __generator(this, function (_a) {
					switch (_a.label) {
						case 0:
							this.applyEffects(paint.effects, 2 /* BACKGROUND_BORDERS */);
							styles = paint.container.styles;
							hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;
							borders = [
								{ style: styles.borderTopStyle, color: styles.borderTopColor },
								{ style: styles.borderRightStyle, color: styles.borderRightColor },
								{ style: styles.borderBottomStyle, color: styles.borderBottomColor },
								{ style: styles.borderLeftStyle, color: styles.borderLeftColor }
							];
							backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(getBackgroundValueForIndex(styles.backgroundClip, 0), paint.curves);
							if (!(hasBackground || styles.boxShadow.length)) return [3 /*break*/, 2];
							this.ctx.save();
							this.path(backgroundPaintingArea);
							this.ctx.clip();
							if (!isTransparent(styles.backgroundColor)) {
								this.ctx.fillStyle = asString(styles.backgroundColor);
								this.ctx.fill();
							}
							return [4 /*yield*/, this.renderBackgroundImage(paint.container)];
						case 1:
							_a.sent();
							this.ctx.restore();
							styles.boxShadow
								.slice(0)
								.reverse()
								.forEach(function (shadow) {
									_this.ctx.save();
									var borderBoxArea = calculateBorderBoxPath(paint.curves);
									var maskOffset = shadow.inset ? 0 : MASK_OFFSET;
									var shadowPaintingArea = transformPath(borderBoxArea, -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number, (shadow.inset ? 1 : -1) * shadow.spread.number, shadow.spread.number * (shadow.inset ? -2 : 2), shadow.spread.number * (shadow.inset ? -2 : 2));
									if (shadow.inset) {
										_this.path(borderBoxArea);
										_this.ctx.clip();
										_this.mask(shadowPaintingArea);
									}
									else {
										_this.mask(borderBoxArea);
										_this.ctx.clip();
										_this.path(shadowPaintingArea);
									}
									_this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;
									_this.ctx.shadowOffsetY = shadow.offsetY.number;
									_this.ctx.shadowColor = asString(shadow.color);
									_this.ctx.shadowBlur = shadow.blur.number;
									_this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';
									_this.ctx.fill();
									_this.ctx.restore();
								});
							_a.label = 2;
						case 2:
							side = 0;
							_i = 0, borders_1 = borders;
							_a.label = 3;
						case 3:
							if (!(_i < borders_1.length)) return [3 /*break*/, 7];
							border = borders_1[_i];
							if (!(border.style !== BORDER_STYLE.NONE && !isTransparent(border.color))) return [3 /*break*/, 5];
							return [4 /*yield*/, this.renderBorder(border.color, side, paint.curves)];
						case 4:
							_a.sent();
							_a.label = 5;
						case 5:
							side++;
							_a.label = 6;
						case 6:
							_i++;
							return [3 /*break*/, 3];
						case 7: return [2 /*return*/];
					}
				});
			});
		};
		CanvasRenderer.prototype.render = function (element) {
			return __awaiter(this, void 0, void 0, function () {
				var stack;
				return __generator(this, function (_a) {
					switch (_a.label) {
						case 0:
							if (this.options.backgroundColor) {
								this.ctx.fillStyle = asString(this.options.backgroundColor);
								this.ctx.fillRect(this.options.x - this.options.scrollX, this.options.y - this.options.scrollY, this.options.width, this.options.height);
							}
							stack = parseStackingContexts(element);
							return [4 /*yield*/, this.renderStack(stack)];
						case 1:
							_a.sent();
							this.applyEffects([], 2 /* BACKGROUND_BORDERS */);
							return [2 /*return*/, this.canvas];
					}
				});
			});
		};
		return CanvasRenderer;
	}());
	var isTextInputElement = function (container) {
		if (container instanceof TextareaElementContainer) {
			return true;
		}
		else if (container instanceof SelectElementContainer) {
			return true;
		}
		else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {
			return true;
		}
		return false;
	};
	var calculateBackgroundCurvedPaintingArea = function (clip, curves) {
		switch (clip) {
			case BACKGROUND_CLIP.BORDER_BOX:
				return calculateBorderBoxPath(curves);
			case BACKGROUND_CLIP.CONTENT_BOX:
				return calculateContentBoxPath(curves);
			case BACKGROUND_CLIP.PADDING_BOX:
			default:
				return calculatePaddingBoxPath(curves);
		}
	};
	var canvasTextAlign = function (textAlign) {
		switch (textAlign) {
			case TEXT_ALIGN.CENTER:
				return 'center';
			case TEXT_ALIGN.RIGHT:
				return 'right';
			case TEXT_ALIGN.LEFT:
			default:
				return 'left';
		}
	};

	var ForeignObjectRenderer = /** @class */ (function () {
		function ForeignObjectRenderer(options) {
			this.canvas = options.canvas ? options.canvas : document.createElement('canvas');
			this.ctx = this.canvas.getContext('2d');
			this.options = options;
			this.canvas.width = Math.floor(options.width * options.scale);
			this.canvas.height = Math.floor(options.height * options.scale);
			this.canvas.style.width = options.width + "px";
			this.canvas.style.height = options.height + "px";
			this.ctx.scale(this.options.scale, this.options.scale);
			this.ctx.translate(-options.x + options.scrollX, -options.y + options.scrollY);
			Logger.getInstance(options.id).debug("EXPERIMENTAL ForeignObject renderer initialized (" + options.width + "x" + options.height + " at " + options.x + "," + options.y + ") with scale " + options.scale);
		}
		ForeignObjectRenderer.prototype.render = function (element) {
			return __awaiter(this, void 0, void 0, function () {
				var svg, img;
				return __generator(this, function (_a) {
					switch (_a.label) {
						case 0:
							svg = createForeignObjectSVG(Math.max(this.options.windowWidth, this.options.width) * this.options.scale, Math.max(this.options.windowHeight, this.options.height) * this.options.scale, this.options.scrollX * this.options.scale, this.options.scrollY * this.options.scale, element);
							return [4 /*yield*/, loadSerializedSVG$1(svg)];
						case 1:
							img = _a.sent();
							if (this.options.backgroundColor) {
								this.ctx.fillStyle = asString(this.options.backgroundColor);
								this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);
							}
							this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);
							return [2 /*return*/, this.canvas];
					}
				});
			});
		};
		return ForeignObjectRenderer;
	}());
	var loadSerializedSVG$1 = function (svg) {
		return new Promise(function (resolve, reject) {
			var img = new Image();
			img.onload = function () {
				resolve(img);
			};
			img.onerror = reject;
			img.src = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg));
		});
	};

	var _this = undefined;
	var parseColor$1 = function (value) { return color.parse(Parser.create(value).parseComponentValue()); };
	var html2canvas = function (element, options) {
		if (options === void 0) { options = {}; }
		return renderElement(element, options);
	};
	if (typeof window !== "undefined") {
		CacheStorage.setContext(window);
	}
	var renderElement = function (element, opts) { return __awaiter(_this, void 0, void 0, function () {
		var ownerDocument, defaultView, instanceName, _a, width, height, left, top, defaultResourceOptions, resourceOptions, defaultOptions, options, windowBounds, documentCloner, clonedElement, container, documentBackgroundColor, bodyBackgroundColor, bgColor, defaultBackgroundColor, backgroundColor, renderOptions, canvas, renderer, root, renderer;
		return __generator(this, function (_b) {
			switch (_b.label) {
				case 0:
					ownerDocument = element.ownerDocument;
					if (!ownerDocument) {
						throw new Error("Element is not attached to a Document");
					}
					defaultView = ownerDocument.defaultView;
					if (!defaultView) {
						throw new Error("Document is not attached to a Window");
					}
					instanceName = (Math.round(Math.random() * 1000) + Date.now()).toString(16);
					_a = isBodyElement(element) || isHTMLElement(element) ? parseDocumentSize(ownerDocument) : parseBounds(element), width = _a.width, height = _a.height, left = _a.left, top = _a.top;
					defaultResourceOptions = {
						allowTaint: false,
						imageTimeout: 15000,
						proxy: undefined,
						useCORS: false
					};
					resourceOptions = __assign({}, defaultResourceOptions, opts);
					defaultOptions = {
						backgroundColor: '#ffffff',
						cache: opts.cache ? opts.cache : CacheStorage.create(instanceName, resourceOptions),
						logging: true,
						removeContainer: true,
						foreignObjectRendering: false,
						scale: defaultView.devicePixelRatio || 1,
						windowWidth: defaultView.innerWidth,
						windowHeight: defaultView.innerHeight,
						scrollX: defaultView.pageXOffset,
						scrollY: defaultView.pageYOffset,
						x: left,
						y: top,
						width: Math.ceil(width),
						height: Math.ceil(height),
						id: instanceName
					};
					options = __assign({}, defaultOptions, resourceOptions, opts);
					windowBounds = new Bounds(options.scrollX, options.scrollY, options.windowWidth, options.windowHeight);
					Logger.create({ id: instanceName, enabled: options.logging });
					Logger.getInstance(instanceName).debug("Starting document clone");
					documentCloner = new DocumentCloner(element, {
						id: instanceName,
						onclone: options.onclone,
						ignoreElements: options.ignoreElements,
						inlineImages: options.foreignObjectRendering,
						copyStyles: options.foreignObjectRendering
					});
					clonedElement = documentCloner.clonedReferenceElement;
					if (!clonedElement) {
						return [2 /*return*/, Promise.reject("Unable to find element in cloned iframe")];
					}
					return [4 /*yield*/, documentCloner.toIFrame(ownerDocument, windowBounds)];
				case 1:
					container = _b.sent();
					documentBackgroundColor = ownerDocument.documentElement
						? parseColor$1(getComputedStyle(ownerDocument.documentElement).backgroundColor)
						: COLORS.TRANSPARENT;
					bodyBackgroundColor = ownerDocument.body
						? parseColor$1(getComputedStyle(ownerDocument.body).backgroundColor)
						: COLORS.TRANSPARENT;
					bgColor = opts.backgroundColor;
					defaultBackgroundColor = typeof bgColor === 'string' ? parseColor$1(bgColor) : bgColor === null ? COLORS.TRANSPARENT : 0xffffffff;
					backgroundColor = element === ownerDocument.documentElement
						? isTransparent(documentBackgroundColor)
							? isTransparent(bodyBackgroundColor)
								? defaultBackgroundColor
								: bodyBackgroundColor
							: documentBackgroundColor
						: defaultBackgroundColor;
					renderOptions = {
						id: instanceName,
						cache: options.cache,
						canvas: options.canvas,
						backgroundColor: backgroundColor,
						scale: options.scale,
						x: options.x,
						y: options.y,
						scrollX: options.scrollX,
						scrollY: options.scrollY,
						width: options.width,
						height: options.height,
						windowWidth: options.windowWidth,
						windowHeight: options.windowHeight
					};
					if (!options.foreignObjectRendering) return [3 /*break*/, 3];
					Logger.getInstance(instanceName).debug("Document cloned, using foreign object rendering");
					renderer = new ForeignObjectRenderer(renderOptions);
					return [4 /*yield*/, renderer.render(clonedElement)];
				case 2:
					canvas = _b.sent();
					return [3 /*break*/, 5];
				case 3:
					Logger.getInstance(instanceName).debug("Document cloned, using computed rendering");
					CacheStorage.attachInstance(options.cache);
					Logger.getInstance(instanceName).debug("Starting DOM parsing");
					root = parseTree(clonedElement);
					CacheStorage.detachInstance();
					if (backgroundColor === root.styles.backgroundColor) {
						root.styles.backgroundColor = COLORS.TRANSPARENT;
					}
					Logger.getInstance(instanceName).debug("Starting renderer");
					renderer = new CanvasRenderer(renderOptions);
					return [4 /*yield*/, renderer.render(root)];
				case 4:
					canvas = _b.sent();
					_b.label = 5;
				case 5:
					if (options.removeContainer === true) {
						if (!DocumentCloner.destroy(container)) {
							Logger.getInstance(instanceName).error("Cannot detach cloned iframe as it is not in the DOM anymore");
						}
					}
					Logger.getInstance(instanceName).debug("Finished rendering");
					Logger.destroy(instanceName);
					CacheStorage.destroy(instanceName);
					return [2 /*return*/, canvas];
			}
		});
	}); };

	return html2canvas;

}));
//# sourceMappingURL=html2canvas.js.map
assets/js/nav-menu.fd64b77e7258ee4c6205.bundle.min.js000064400000006254150755004310015442 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[42],{5389:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=elementorModules.frontend.handlers.Base.extend({stretchElement:null,getDefaultSettings:()=>({selectors:{menu:".elementor-nav-menu",anchorLink:".elementor-nav-menu--main .elementor-item-anchor",dropdownMenu:".elementor-nav-menu__container.elementor-nav-menu--dropdown",menuToggle:".elementor-menu-toggle"}}),getDefaultElements(){var e=this.getSettings("selectors"),t={};return t.$menu=this.$element.find(e.menu),t.$anchorLink=this.$element.find(e.anchorLink),t.$dropdownMenu=this.$element.find(e.dropdownMenu),t.$dropdownMenuFinalItems=t.$dropdownMenu.find(".menu-item:not(.menu-item-has-children) > a"),t.$menuToggle=this.$element.find(e.menuToggle),t.$links=t.$dropdownMenu.find("a.elementor-item"),t},bindEvents(){this.elements.$menu.length&&(this.elements.$menuToggle.on("click",this.toggleMenu.bind(this)),this.getElementSettings("full_width")&&this.elements.$dropdownMenuFinalItems.on("click",this.toggleMenu.bind(this,!1)),elementorFrontend.addListenerOnce(this.$element.data("model-cid"),"resize",this.stretchMenu))},initStretchElement(){this.stretchElement=new elementorModules.frontend.tools.StretchElement({element:this.elements.$dropdownMenu})},toggleNavLinksTabIndex(e=!0){this.elements.$links.attr("tabindex",e?0:-1)},toggleMenu(e){var t=this.elements.$menuToggle.hasClass("elementor-active");"boolean"!=typeof e&&(e=!t),this.elements.$menuToggle.attr("aria-expanded",e),this.elements.$dropdownMenu.attr("aria-hidden",!e),this.elements.$menuToggle.toggleClass("elementor-active",e),this.toggleNavLinksTabIndex(e),e&&this.getElementSettings("full_width")&&this.stretchElement.stretch()},followMenuAnchors(){var e=this;e.elements.$anchorLink.each((function(){location.pathname===this.pathname&&""!==this.hash&&e.followMenuAnchor(jQuery(this))}))},followMenuAnchor(e){const t=e[0].hash;let n,s=-300;try{n=jQuery(decodeURIComponent(t))}catch(e){return}if(n.length){if(!n.hasClass("elementor-menu-anchor")){var o=jQuery(window).height()/2;s=-n.outerHeight()+o}elementorFrontend.waypoint(n,(function(t){"down"===t?e.addClass("elementor-item-active"):e.removeClass("elementor-item-active")}),{offset:"50%",triggerOnce:!1}),elementorFrontend.waypoint(n,(function(t){"down"===t?e.removeClass("elementor-item-active"):e.addClass("elementor-item-active")}),{offset:s,triggerOnce:!1})}},stretchMenu(){this.getElementSettings("full_width")?(this.stretchElement.stretch(),this.elements.$dropdownMenu.css("top",this.elements.$menuToggle.outerHeight())):this.stretchElement.reset()},onInit(){if(elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),!this.elements.$menu.length)return;const e=this.getElementSettings().submenu_icon.value;let t="";e&&(t=e.indexOf("<")>-1?e:`<i class="${e}"></i>`),this.elements.$menu.smartmenus({subIndicators:""!==t,subIndicatorsText:t,subIndicatorsPos:"append",subMenusMaxWidth:"1000px"}),this.initStretchElement(),this.stretchMenu(),elementorFrontend.isEditMode()||this.followMenuAnchors()},onElementChange(e){"full_width"===e&&this.stretchMenu()}});t.default=n}}]);assets/js/preloaded-elements-handlers.js000064400000770600150755004310014401 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["preloaded-elements-handlers"],{

/***/ "../assets/dev/js/frontend/preloaded-elements-handlers.js":
/*!****************************************************************!*\
  !*** ../assets/dev/js/frontend/preloaded-elements-handlers.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

var _frontendLegacy = _interopRequireDefault(__webpack_require__(/*! modules/animated-headline/assets/js/frontend/frontend-legacy */ "../modules/animated-headline/assets/js/frontend/frontend-legacy.js"));

var _frontendLegacy2 = _interopRequireDefault(__webpack_require__(/*! modules/carousel/assets/js/frontend/frontend-legacy */ "../modules/carousel/assets/js/frontend/frontend-legacy.js"));

var _frontendLegacy3 = _interopRequireDefault(__webpack_require__(/*! modules/countdown/assets/js/frontend/frontend-legacy */ "../modules/countdown/assets/js/frontend/frontend-legacy.js"));

var _frontendLegacy4 = _interopRequireDefault(__webpack_require__(/*! modules/forms/assets/js/frontend/frontend-legacy */ "../modules/forms/assets/js/frontend/frontend-legacy.js"));

var _frontendLegacy5 = _interopRequireDefault(__webpack_require__(/*! modules/gallery/assets/js/frontend/frontend-legacy */ "../modules/gallery/assets/js/frontend/frontend-legacy.js"));

var _frontendLegacy6 = _interopRequireDefault(__webpack_require__(/*! modules/hotspot/assets/js/frontend/frontend-legacy */ "../modules/hotspot/assets/js/frontend/frontend-legacy.js"));

var _frontendLegacy7 = _interopRequireDefault(__webpack_require__(/*! modules/lottie/assets/js/frontend/frontend-legacy */ "../modules/lottie/assets/js/frontend/frontend-legacy.js"));

var _frontendLegacy8 = _interopRequireDefault(__webpack_require__(/*! modules/nav-menu/assets/js/frontend/frontend-legacy */ "../modules/nav-menu/assets/js/frontend/frontend-legacy.js"));

var _frontendLegacy9 = _interopRequireDefault(__webpack_require__(/*! modules/popup/assets/js/frontend/frontend-legacy */ "../modules/popup/assets/js/frontend/frontend-legacy.js"));

var _frontendLegacy10 = _interopRequireDefault(__webpack_require__(/*! modules/posts/assets/js/frontend/frontend-legacy */ "../modules/posts/assets/js/frontend/frontend-legacy.js"));

var _frontendLegacy11 = _interopRequireDefault(__webpack_require__(/*! modules/share-buttons/assets/js/frontend/frontend-legacy */ "../modules/share-buttons/assets/js/frontend/frontend-legacy.js"));

var _frontendLegacy12 = _interopRequireDefault(__webpack_require__(/*! modules/slides/assets/js/frontend/frontend-legacy */ "../modules/slides/assets/js/frontend/frontend-legacy.js"));

var _frontendLegacy13 = _interopRequireDefault(__webpack_require__(/*! modules/social/assets/js/frontend/frontend-legacy */ "../modules/social/assets/js/frontend/frontend-legacy.js"));

var _frontendLegacy14 = _interopRequireDefault(__webpack_require__(/*! modules/table-of-contents/assets/js/frontend/frontend-legacy */ "../modules/table-of-contents/assets/js/frontend/frontend-legacy.js"));

var _frontendLegacy15 = _interopRequireDefault(__webpack_require__(/*! modules/theme-builder/assets/js/frontend/frontend-legacy */ "../modules/theme-builder/assets/js/frontend/frontend-legacy.js"));

var _frontendLegacy16 = _interopRequireDefault(__webpack_require__(/*! modules/theme-elements/assets/js/frontend/frontend-legacy */ "../modules/theme-elements/assets/js/frontend/frontend-legacy.js"));

var _frontendLegacy17 = _interopRequireDefault(__webpack_require__(/*! modules/woocommerce/assets/js/frontend/frontend-legacy */ "../modules/woocommerce/assets/js/frontend/frontend-legacy.js"));

const extendDefaultHandlers = defaultHandlers => {
  const handlers = {
    animatedText: _frontendLegacy.default,
    carousel: _frontendLegacy2.default,
    countdown: _frontendLegacy3.default,
    form: _frontendLegacy4.default,
    gallery: _frontendLegacy5.default,
    hotspot: _frontendLegacy6.default,
    lottie: _frontendLegacy7.default,
    nav_menu: _frontendLegacy8.default,
    popup: _frontendLegacy9.default,
    posts: _frontendLegacy10.default,
    share_buttons: _frontendLegacy11.default,
    slides: _frontendLegacy12.default,
    social: _frontendLegacy13.default,
    themeBuilder: _frontendLegacy15.default,
    themeElements: _frontendLegacy16.default,
    woocommerce: _frontendLegacy17.default,
    tableOfContents: _frontendLegacy14.default
  };
  return { ...defaultHandlers,
    ...handlers
  };
};

elementorProFrontend.on('elementor-pro/modules/init:before', () => {
  elementorFrontend.hooks.addFilter('elementor-pro/frontend/handlers', extendDefaultHandlers);
});

/***/ }),

/***/ "../assets/dev/js/frontend/utils/icons/e-icons.js":
/*!********************************************************!*\
  !*** ../assets/dev/js/frontend/utils/icons/e-icons.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.close = void 0;

var _manager = _interopRequireDefault(__webpack_require__(/*! ./manager */ "../assets/dev/js/frontend/utils/icons/manager.js"));

// This file is automatically generated, please don't change anything in this file.
const iconsManager = new _manager.default('eicon');
const close = {
  get element() {
    const svgData = {
      path: 'M742 167L500 408 258 167C246 154 233 150 217 150 196 150 179 158 167 167 154 179 150 196 150 212 150 229 154 242 171 254L408 500 167 742C138 771 138 800 167 829 196 858 225 858 254 829L496 587 738 829C750 842 767 846 783 846 800 846 817 842 829 829 842 817 846 804 846 783 846 767 842 750 829 737L588 500 833 258C863 229 863 200 833 171 804 137 775 137 742 167Z',
      width: 1000,
      height: 1000
    };
    return iconsManager.createSvgElement('close', svgData);
  }

};
exports.close = close;

/***/ }),

/***/ "../assets/dev/js/frontend/utils/icons/manager.js":
/*!********************************************************!*\
  !*** ../assets/dev/js/frontend/utils/icons/manager.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));

class IconsManager {
  constructor(elementsPrefix) {
    this.prefix = `${elementsPrefix}-`;

    if (!IconsManager.symbolsContainer) {
      const symbolsContainerId = 'e-font-icon-svg-symbols';
      IconsManager.symbolsContainer = document.getElementById(symbolsContainerId);

      if (!IconsManager.symbolsContainer) {
        IconsManager.symbolsContainer = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
        IconsManager.symbolsContainer.setAttributeNS(null, 'style', 'display: none;');
        IconsManager.symbolsContainer.setAttributeNS(null, 'class', symbolsContainerId);
        document.body.appendChild(IconsManager.symbolsContainer);
      }
    }
  }

  createSvgElement(name, {
    path,
    width,
    height
  }) {
    const elementName = this.prefix + name,
          elementSelector = '#' + this.prefix + name; // Create symbol if not exist yet.

    if (!IconsManager.iconsUsageList.includes(elementName)) {
      if (!IconsManager.symbolsContainer.querySelector(elementSelector)) {
        const symbol = document.createElementNS('http://www.w3.org/2000/svg', 'symbol');
        symbol.id = elementName;
        symbol.innerHTML = '<path d="' + path + '"></path>';
        symbol.setAttributeNS(null, 'viewBox', '0 0 ' + width + ' ' + height);
        IconsManager.symbolsContainer.appendChild(symbol);
      }

      IconsManager.iconsUsageList.push(elementName);
    }

    const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
    svg.innerHTML = '<use xlink:href="' + elementSelector + '" />';
    svg.setAttributeNS(null, 'class', 'e-font-icon-svg e-' + elementName);
    return svg;
  }

}

exports.default = IconsManager;
(0, _defineProperty2.default)(IconsManager, "symbolsContainer", void 0);
(0, _defineProperty2.default)(IconsManager, "iconsUsageList", []);

/***/ }),

/***/ "../assets/dev/js/frontend/utils/scroll.js":
/*!*************************************************!*\
  !*** ../assets/dev/js/frontend/utils/scroll.js ***!
  \*************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

if (window.elementorCommon) {
  window.elementorCommon.helpers.softDeprecated('Scroll util from "/dev/js/frontend/utils/scroll"', '3.1.0', 'elementorModules.utils.Scroll');
}

var _default = elementorModules.utils.Scroll;
exports.default = _default;

/***/ }),

/***/ "../modules/animated-headline/assets/js/frontend/frontend-legacy.js":
/*!**************************************************************************!*\
  !*** ../modules/animated-headline/assets/js/frontend/frontend-legacy.js ***!
  \**************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _animatedHeadlines = _interopRequireDefault(__webpack_require__(/*! ./handlers/animated-headlines */ "../modules/animated-headline/assets/js/frontend/handlers/animated-headlines.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('animated-headline', _animatedHeadlines.default);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/animated-headline/assets/js/frontend/handlers/animated-headlines.js":
/*!**************************************************************************************!*\
  !*** ../modules/animated-headline/assets/js/frontend/handlers/animated-headlines.js ***!
  \**************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _scroll = _interopRequireDefault(__webpack_require__(/*! elementor-pro/frontend/utils/scroll */ "../assets/dev/js/frontend/utils/scroll.js"));

var _default = elementorModules.frontend.handlers.Base.extend({
  svgPaths: {
    circle: ['M325,18C228.7-8.3,118.5,8.3,78,21C22.4,38.4,4.6,54.6,5.6,77.6c1.4,32.4,52.2,54,142.6,63.7 c66.2,7.1,212.2,7.5,273.5-8.3c64.4-16.6,104.3-57.6,33.8-98.2C386.7-4.9,179.4-1.4,126.3,20.7'],
    underline_zigzag: ['M9.3,127.3c49.3-3,150.7-7.6,199.7-7.4c121.9,0.4,189.9,0.4,282.3,7.2C380.1,129.6,181.2,130.6,70,139 c82.6-2.9,254.2-1,335.9,1.3c-56,1.4-137.2-0.3-197.1,9'],
    x: ['M497.4,23.9C301.6,40,155.9,80.6,4,144.4', 'M14.1,27.6c204.5,20.3,393.8,74,467.3,111.7'],
    strikethrough: ['M3,75h493.5'],
    curly: ['M3,146.1c17.1-8.8,33.5-17.8,51.4-17.8c15.6,0,17.1,18.1,30.2,18.1c22.9,0,36-18.6,53.9-18.6 c17.1,0,21.3,18.5,37.5,18.5c21.3,0,31.8-18.6,49-18.6c22.1,0,18.8,18.8,36.8,18.8c18.8,0,37.5-18.6,49-18.6c20.4,0,17.1,19,36.8,19 c22.9,0,36.8-20.6,54.7-18.6c17.7,1.4,7.1,19.5,33.5,18.8c17.1,0,47.2-6.5,61.1-15.6'],
    diagonal: ['M13.5,15.5c131,13.7,289.3,55.5,475,125.5'],
    double: ['M8.4,143.1c14.2-8,97.6-8.8,200.6-9.2c122.3-0.4,287.5,7.2,287.5,7.2', 'M8,19.4c72.3-5.3,162-7.8,216-7.8c54,0,136.2,0,267,7.8'],
    double_underline: ['M5,125.4c30.5-3.8,137.9-7.6,177.3-7.6c117.2,0,252.2,4.7,312.7,7.6', 'M26.9,143.8c55.1-6.1,126-6.3,162.2-6.1c46.5,0.2,203.9,3.2,268.9,6.4'],
    underline: ['M7.7,145.6C109,125,299.9,116.2,401,121.3c42.1,2.2,87.6,11.8,87.3,25.7']
  },

  getDefaultSettings() {
    const iterationDelay = this.getElementSettings('rotate_iteration_delay'),
          settings = {
      animationDelay: iterationDelay || 2500,
      //letters effect
      lettersDelay: iterationDelay * 0.02 || 50,
      //typing effect
      typeLettersDelay: iterationDelay * 0.06 || 150,
      selectionDuration: iterationDelay * 0.2 || 500,
      //clip effect
      revealDuration: iterationDelay * 0.24 || 600,
      revealAnimationDelay: iterationDelay * 0.6 || 1500,
      // Highlighted headline
      highlightAnimationDuration: this.getElementSettings('highlight_animation_duration') || 1200,
      highlightAnimationDelay: this.getElementSettings('highlight_iteration_delay') || 8000
    };
    settings.typeAnimationDelay = settings.selectionDuration + 800;
    settings.selectors = {
      headline: '.elementor-headline',
      dynamicWrapper: '.elementor-headline-dynamic-wrapper',
      dynamicText: '.elementor-headline-dynamic-text'
    };
    settings.classes = {
      dynamicText: 'elementor-headline-dynamic-text',
      dynamicLetter: 'elementor-headline-dynamic-letter',
      textActive: 'elementor-headline-text-active',
      textInactive: 'elementor-headline-text-inactive',
      letters: 'elementor-headline-letters',
      animationIn: 'elementor-headline-animation-in',
      typeSelected: 'elementor-headline-typing-selected',
      activateHighlight: 'e-animated',
      hideHighlight: 'e-hide-highlight'
    };
    return settings;
  },

  getDefaultElements() {
    var selectors = this.getSettings('selectors');
    return {
      $headline: this.$element.find(selectors.headline),
      $dynamicWrapper: this.$element.find(selectors.dynamicWrapper),
      $dynamicText: this.$element.find(selectors.dynamicText)
    };
  },

  getNextWord($word) {
    return $word.is(':last-child') ? $word.parent().children().eq(0) : $word.next();
  },

  switchWord($oldWord, $newWord) {
    $oldWord.removeClass('elementor-headline-text-active').addClass('elementor-headline-text-inactive');
    $newWord.removeClass('elementor-headline-text-inactive').addClass('elementor-headline-text-active');
    this.setDynamicWrapperWidth($newWord);
  },

  singleLetters() {
    var classes = this.getSettings('classes');
    this.elements.$dynamicText.each(function () {
      var $word = jQuery(this),
          letters = $word.text().split(''),
          isActive = $word.hasClass(classes.textActive);
      $word.empty();
      letters.forEach(function (letter) {
        var $letter = jQuery('<span>', {
          class: classes.dynamicLetter
        }).text(letter);

        if (isActive) {
          $letter.addClass(classes.animationIn);
        }

        $word.append($letter);
      });
      $word.css('opacity', 1);
    });
  },

  showLetter($letter, $word, bool, duration) {
    var self = this,
        classes = this.getSettings('classes');
    $letter.addClass(classes.animationIn);

    if (!$letter.is(':last-child')) {
      setTimeout(function () {
        self.showLetter($letter.next(), $word, bool, duration);
      }, duration);
    } else if (!bool) {
      setTimeout(function () {
        self.hideWord($word);
      }, self.getSettings('animationDelay'));
    }
  },

  hideLetter($letter, $word, bool, duration) {
    var self = this,
        settings = this.getSettings();
    $letter.removeClass(settings.classes.animationIn);

    if (!$letter.is(':last-child')) {
      setTimeout(function () {
        self.hideLetter($letter.next(), $word, bool, duration);
      }, duration);
    } else if (bool) {
      setTimeout(function () {
        self.hideWord(self.getNextWord($word));
      }, self.getSettings('animationDelay'));
    }
  },

  showWord($word, $duration) {
    var self = this,
        settings = self.getSettings(),
        animationType = self.getElementSettings('animation_type');

    if ('typing' === animationType) {
      self.showLetter($word.find('.' + settings.classes.dynamicLetter).eq(0), $word, false, $duration);
      $word.addClass(settings.classes.textActive).removeClass(settings.classes.textInactive);
    } else if ('clip' === animationType) {
      self.elements.$dynamicWrapper.animate({
        width: $word.width() + 10
      }, settings.revealDuration, function () {
        setTimeout(function () {
          self.hideWord($word);
        }, settings.revealAnimationDelay);
      });
    }
  },

  hideWord($word) {
    var self = this,
        settings = self.getSettings(),
        classes = settings.classes,
        letterSelector = '.' + classes.dynamicLetter,
        animationType = self.getElementSettings('animation_type'),
        nextWord = self.getNextWord($word);

    if (!this.isLoopMode && $word.is(':last-child')) {
      return;
    }

    if ('typing' === animationType) {
      self.elements.$dynamicWrapper.addClass(classes.typeSelected);
      setTimeout(function () {
        self.elements.$dynamicWrapper.removeClass(classes.typeSelected);
        $word.addClass(settings.classes.textInactive).removeClass(classes.textActive).children(letterSelector).removeClass(classes.animationIn);
      }, settings.selectionDuration);
      setTimeout(function () {
        self.showWord(nextWord, settings.typeLettersDelay);
      }, settings.typeAnimationDelay);
    } else if (self.elements.$headline.hasClass(classes.letters)) {
      var bool = $word.children(letterSelector).length >= nextWord.children(letterSelector).length;
      self.hideLetter($word.find(letterSelector).eq(0), $word, bool, settings.lettersDelay);
      self.showLetter(nextWord.find(letterSelector).eq(0), nextWord, bool, settings.lettersDelay);
      self.setDynamicWrapperWidth(nextWord);
    } else if ('clip' === animationType) {
      self.elements.$dynamicWrapper.animate({
        width: '2px'
      }, settings.revealDuration, function () {
        self.switchWord($word, nextWord);
        self.showWord(nextWord);
      });
    } else {
      self.switchWord($word, nextWord);
      setTimeout(function () {
        self.hideWord(nextWord);
      }, settings.animationDelay);
    }
  },

  setDynamicWrapperWidth($word) {
    const animationType = this.getElementSettings('animation_type');

    if ('clip' !== animationType && 'typing' !== animationType) {
      this.elements.$dynamicWrapper.css('width', $word.width());
    }
  },

  animateHeadline() {
    var self = this,
        animationType = self.getElementSettings('animation_type'),
        $dynamicWrapper = self.elements.$dynamicWrapper;

    if ('clip' === animationType) {
      $dynamicWrapper.width($dynamicWrapper.width() + 10);
    } else if ('typing' !== animationType) {
      self.setDynamicWrapperWidth(self.elements.$dynamicText);
    } //trigger animation


    setTimeout(function () {
      self.hideWord(self.elements.$dynamicText.eq(0));
    }, self.getSettings('animationDelay'));
  },

  getSvgPaths(pathName) {
    var pathsInfo = this.svgPaths[pathName],
        $paths = jQuery();
    pathsInfo.forEach(function (pathInfo) {
      $paths = $paths.add(jQuery('<path>', {
        d: pathInfo
      }));
    });
    return $paths;
  },

  addHighlight() {
    const elementSettings = this.getElementSettings(),
          $svg = jQuery('<svg>', {
      xmlns: 'http://www.w3.org/2000/svg',
      viewBox: '0 0 500 150',
      preserveAspectRatio: 'none'
    }).html(this.getSvgPaths(elementSettings.marker));
    this.elements.$dynamicWrapper.append($svg[0].outerHTML);
  },

  rotateHeadline() {
    var settings = this.getSettings(); //insert <span> for each letter of a changing word

    if (this.elements.$headline.hasClass(settings.classes.letters)) {
      this.singleLetters();
    } //initialise headline animation


    this.animateHeadline();
  },

  initHeadline() {
    const headlineStyle = this.getElementSettings('headline_style');

    if ('rotate' === headlineStyle) {
      this.rotateHeadline();
    } else if ('highlight' === headlineStyle) {
      this.addHighlight();
      this.activateHighlightAnimation();
    }

    this.deactivateScrollListener();
  },

  activateHighlightAnimation() {
    const settings = this.getSettings(),
          classes = settings.classes,
          $headline = this.elements.$headline;
    $headline.removeClass(classes.hideHighlight).addClass(classes.activateHighlight);

    if (!this.isLoopMode) {
      return;
    }

    setTimeout(() => {
      $headline.removeClass(classes.activateHighligh).addClass(classes.hideHighlight);
    }, settings.highlightAnimationDuration + settings.highlightAnimationDelay * .8);
    setTimeout(() => {
      this.activateHighlightAnimation(false);
    }, settings.highlightAnimationDuration + settings.highlightAnimationDelay);
  },

  activateScrollListener() {
    const scrollBuffer = -100;
    this.intersectionObservers.startAnimation.observer = _scroll.default.scrollObserver({
      offset: `0px 0px ${scrollBuffer}px`,
      callback: event => {
        if (event.isInViewport) {
          this.initHeadline();
        }
      }
    });
    this.intersectionObservers.startAnimation.element = this.elements.$headline[0];
    this.intersectionObservers.startAnimation.observer.observe(this.intersectionObservers.startAnimation.element);
  },

  deactivateScrollListener() {
    this.intersectionObservers.startAnimation.observer.unobserve(this.intersectionObservers.startAnimation.element);
  },

  onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
    this.intersectionObservers = {
      startAnimation: {
        observer: null,
        element: null
      }
    };
    this.isLoopMode = 'yes' === this.getElementSettings('loop');
    this.activateScrollListener();
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/carousel/assets/js/frontend/frontend-legacy.js":
/*!*****************************************************************!*\
  !*** ../modules/carousel/assets/js/frontend/frontend-legacy.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _mediaCarousel = _interopRequireDefault(__webpack_require__(/*! ./handlers/media-carousel */ "../modules/carousel/assets/js/frontend/handlers/media-carousel.js"));

var _testimonialCarousel = _interopRequireDefault(__webpack_require__(/*! ./handlers/testimonial-carousel */ "../modules/carousel/assets/js/frontend/handlers/testimonial-carousel.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('media-carousel', _mediaCarousel.default);
    elementorFrontend.elementsHandler.attachHandler('testimonial-carousel', _testimonialCarousel.default);
    elementorFrontend.elementsHandler.attachHandler('reviews', _testimonialCarousel.default);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/carousel/assets/js/frontend/handlers/base.js":
/*!***************************************************************!*\
  !*** ../modules/carousel/assets/js/frontend/handlers/base.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class CarouselBase extends elementorModules.frontend.handlers.SwiperBase {
  getDefaultSettings() {
    return {
      selectors: {
        swiperContainer: '.elementor-main-swiper',
        swiperSlide: '.swiper-slide'
      },
      slidesPerView: {
        widescreen: 3,
        desktop: 3,
        laptop: 3,
        tablet_extra: 3,
        tablet: 2,
        mobile_extra: 2,
        mobile: 1
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors'),
          elements = {
      $swiperContainer: this.$element.find(selectors.swiperContainer)
    };
    elements.$slides = elements.$swiperContainer.find(selectors.swiperSlide);
    return elements;
  }

  getEffect() {
    return this.getElementSettings('effect');
  }

  getDeviceSlidesPerView(device) {
    const slidesPerViewKey = 'slides_per_view' + ('desktop' === device ? '' : '_' + device);
    return Math.min(this.getSlidesCount(), +this.getElementSettings(slidesPerViewKey) || this.getSettings('slidesPerView')[device]);
  }

  getSlidesPerView(device) {
    if ('slide' === this.getEffect()) {
      return this.getDeviceSlidesPerView(device);
    }

    return 1;
  }

  getDeviceSlidesToScroll(device) {
    const slidesToScrollKey = 'slides_to_scroll' + ('desktop' === device ? '' : '_' + device);
    return Math.min(this.getSlidesCount(), +this.getElementSettings(slidesToScrollKey) || 1);
  }

  getSlidesToScroll(device) {
    if ('slide' === this.getEffect()) {
      return this.getDeviceSlidesToScroll(device);
    }

    return 1;
  }

  getSpaceBetween(device) {
    let propertyName = 'space_between';

    if (device && 'desktop' !== device) {
      propertyName += '_' + device;
    }

    return this.getElementSettings(propertyName).size || 0;
  }

  getSwiperOptions() {
    const elementSettings = this.getElementSettings();
    const swiperOptions = {
      grabCursor: true,
      initialSlide: this.getInitialSlide(),
      slidesPerView: this.getSlidesPerView('desktop'),
      slidesPerGroup: this.getSlidesToScroll('desktop'),
      spaceBetween: this.getSpaceBetween(),
      loop: 'yes' === elementSettings.loop,
      speed: elementSettings.speed,
      effect: this.getEffect(),
      preventClicksPropagation: false,
      slideToClickedSlide: true,
      handleElementorBreakpoints: true
    };

    if (elementSettings.show_arrows) {
      swiperOptions.navigation = {
        prevEl: '.elementor-swiper-button-prev',
        nextEl: '.elementor-swiper-button-next'
      };
    }

    if (elementSettings.pagination) {
      swiperOptions.pagination = {
        el: '.swiper-pagination',
        type: elementSettings.pagination,
        clickable: true
      };
    }

    if ('cube' !== this.getEffect()) {
      const breakpointsSettings = {},
            breakpoints = elementorFrontend.config.responsive.activeBreakpoints;
      Object.keys(breakpoints).forEach(breakpointName => {
        breakpointsSettings[breakpoints[breakpointName].value] = {
          slidesPerView: this.getSlidesPerView(breakpointName),
          slidesPerGroup: this.getSlidesToScroll(breakpointName),
          spaceBetween: this.getSpaceBetween(breakpointName)
        };
      });
      swiperOptions.breakpoints = breakpointsSettings;
    }

    if (!this.isEdit && elementSettings.autoplay) {
      swiperOptions.autoplay = {
        delay: elementSettings.autoplay_speed,
        disableOnInteraction: !!elementSettings.pause_on_interaction
      };
    }

    return swiperOptions;
  }

  getDeviceBreakpointValue(device) {
    if (!this.breakpointsDictionary) {
      const breakpoints = elementorFrontend.config.responsive.activeBreakpoints;
      this.breakpointsDictionary = {};
      Object.keys(breakpoints).forEach(breakpointName => {
        this.breakpointsDictionary[breakpointName] = breakpoints[breakpointName].value;
      });
    }

    return this.breakpointsDictionary[device];
  }

  updateSpaceBetween(propertyName) {
    const deviceMatch = propertyName.match('space_between_(.*)'),
          device = deviceMatch ? deviceMatch[1] : 'desktop',
          newSpaceBetween = this.getSpaceBetween(device);

    if ('desktop' !== device) {
      this.swiper.params.breakpoints[this.getDeviceBreakpointValue(device)].spaceBetween = newSpaceBetween;
    } else {
      this.swiper.params.spaceBetween = newSpaceBetween;
    }

    this.swiper.params.spaceBetween = newSpaceBetween;
    this.swiper.update();
  }

  async onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
    const elementSettings = this.getElementSettings();

    if (1 >= this.getSlidesCount()) {
      return;
    }

    const Swiper = elementorFrontend.utils.swiper;
    this.swiper = await new Swiper(this.elements.$swiperContainer, this.getSwiperOptions());

    if ('yes' === elementSettings.pause_on_hover) {
      this.togglePauseOnHover(true);
    } // Expose the swiper instance in the frontend


    this.elements.$swiperContainer.data('swiper', this.swiper);
  }

  getChangeableProperties() {
    return {
      autoplay: 'autoplay',
      pause_on_hover: 'pauseOnHover',
      pause_on_interaction: 'disableOnInteraction',
      autoplay_speed: 'delay',
      speed: 'speed',
      width: 'width'
    };
  }

  updateSwiperOption(propertyName) {
    if (0 === propertyName.indexOf('width')) {
      this.swiper.update();
      return;
    }

    const elementSettings = this.getElementSettings(),
          newSettingValue = elementSettings[propertyName],
          changeableProperties = this.getChangeableProperties();
    let propertyToUpdate = changeableProperties[propertyName],
        valueToUpdate = newSettingValue; // Handle special cases where the value to update is not the value that the Swiper library accepts

    switch (propertyName) {
      case 'autoplay':
        if (newSettingValue) {
          valueToUpdate = {
            delay: elementSettings.autoplay_speed,
            disableOnInteraction: 'yes' === elementSettings.pause_on_interaction
          };
        } else {
          valueToUpdate = false;
        }

        break;

      case 'autoplay_speed':
        propertyToUpdate = 'autoplay';
        valueToUpdate = {
          delay: newSettingValue,
          disableOnInteraction: 'yes' === elementSettings.pause_on_interaction
        };
        break;

      case 'pause_on_hover':
        this.togglePauseOnHover('yes' === newSettingValue);
        break;

      case 'pause_on_interaction':
        valueToUpdate = 'yes' === newSettingValue;
        break;
    } // 'pause_on_hover' is implemented by the handler with event listeners, not the Swiper library


    if ('pause_on_hover' !== propertyName) {
      this.swiper.params[propertyToUpdate] = valueToUpdate;
    }

    this.swiper.update();
  }

  onElementChange(propertyName) {
    if (1 >= this.getSlidesCount()) {
      return;
    }

    if (0 === propertyName.indexOf('width')) {
      this.swiper.update(); // If there is another thumbs slider, like in the Media Carousel widget.

      if (this.thumbsSwiper) {
        this.thumbsSwiper.update();
      }

      return;
    } // This is for handling the responsive control 'space_between'.
    // Responsive controls require a separate way of handling, and some currently don't work
    // (Swiper bug, currently exists in v5.3.6) TODO: update Swiper when bug is fixed and handle responsive controls


    if (0 === propertyName.indexOf('space_between')) {
      this.updateSpaceBetween(propertyName);
      return;
    }

    const changeableProperties = this.getChangeableProperties();

    if (changeableProperties.hasOwnProperty(propertyName)) {
      this.updateSwiperOption(propertyName);
    }
  }

  onEditSettingsChange(propertyName) {
    if (1 >= this.getSlidesCount()) {
      return;
    }

    if ('activeItemIndex' === propertyName) {
      this.swiper.slideToLoop(this.getEditSettings('activeItemIndex') - 1);
    }
  }

}

exports.default = CarouselBase;

/***/ }),

/***/ "../modules/carousel/assets/js/frontend/handlers/media-carousel.js":
/*!*************************************************************************!*\
  !*** ../modules/carousel/assets/js/frontend/handlers/media-carousel.js ***!
  \*************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/carousel/assets/js/frontend/handlers/base.js"));

class MediaCarousel extends _base.default {
  isSlideshow() {
    return 'slideshow' === this.getElementSettings('skin');
  }

  getDefaultSettings(...args) {
    const defaultSettings = super.getDefaultSettings(...args);

    if (this.isSlideshow()) {
      defaultSettings.selectors.thumbsSwiper = '.elementor-thumbnails-swiper';
      defaultSettings.slidesPerView = {
        widescreen: 5,
        desktop: 5,
        laptop: 5,
        tablet_extra: 5,
        tablet: 4,
        mobile_extra: 4,
        mobile: 3
      };
    }

    return defaultSettings;
  }

  getSlidesPerViewSettingNames() {
    if (!this.slideshowElementSettings) {
      this.slideshowElementSettings = ['slides_per_view'];
      const activeBreakpoints = elementorFrontend.config.responsive.activeBreakpoints;
      Object.keys(activeBreakpoints).forEach(breakpointName => {
        this.slideshowElementSettings.push('slides_per_view_' + breakpointName);
      });
    }

    return this.slideshowElementSettings;
  }

  getElementSettings(setting) {
    if (-1 !== this.getSlidesPerViewSettingNames().indexOf(setting) && this.isSlideshow()) {
      setting = 'slideshow_' + setting;
    }

    return super.getElementSettings(setting);
  }

  getDefaultElements(...args) {
    const selectors = this.getSettings('selectors'),
          defaultElements = super.getDefaultElements(...args);

    if (this.isSlideshow()) {
      defaultElements.$thumbsSwiper = this.$element.find(selectors.thumbsSwiper);
    }

    return defaultElements;
  }

  getEffect() {
    if ('coverflow' === this.getElementSettings('skin')) {
      return 'coverflow';
    }

    return super.getEffect();
  }

  getSlidesPerView(device) {
    if (this.isSlideshow()) {
      return 1;
    }

    if ('coverflow' === this.getElementSettings('skin')) {
      return this.getDeviceSlidesPerView(device);
    }

    return super.getSlidesPerView(device);
  }

  getSwiperOptions() {
    const options = super.getSwiperOptions();

    if (this.isSlideshow()) {
      options.loopedSlides = this.getSlidesCount();
      delete options.pagination;
      delete options.breakpoints;
    }

    return options;
  }

  async onInit() {
    await super.onInit();
    const slidesCount = this.getSlidesCount();

    if (!this.isSlideshow() || 1 >= slidesCount) {
      return;
    }

    const elementSettings = this.getElementSettings(),
          loop = 'yes' === elementSettings.loop,
          breakpointsSettings = {},
          breakpoints = elementorFrontend.config.responsive.activeBreakpoints,
          desktopSlidesPerView = this.getDeviceSlidesPerView('desktop');
    Object.keys(breakpoints).forEach(breakpointName => {
      breakpointsSettings[breakpoints[breakpointName].value] = {
        slidesPerView: this.getDeviceSlidesPerView(breakpointName),
        spaceBetween: this.getSpaceBetween(breakpointName)
      };
    });
    const thumbsSliderOptions = {
      slidesPerView: desktopSlidesPerView,
      initialSlide: this.getInitialSlide(),
      centeredSlides: elementSettings.centered_slides,
      slideToClickedSlide: true,
      spaceBetween: this.getSpaceBetween(),
      loopedSlides: slidesCount,
      loop,
      breakpoints: breakpointsSettings,
      handleElementorBreakpoints: true
    };
    const Swiper = elementorFrontend.utils.swiper;
    this.swiper.controller.control = this.thumbsSwiper = await new Swiper(this.elements.$thumbsSwiper, thumbsSliderOptions); // Expose the swiper instance in the frontend

    this.elements.$thumbsSwiper.data('swiper', this.thumbsSwiper);
    this.thumbsSwiper.controller.control = this.swiper;
  }

}

exports.default = MediaCarousel;

/***/ }),

/***/ "../modules/carousel/assets/js/frontend/handlers/testimonial-carousel.js":
/*!*******************************************************************************!*\
  !*** ../modules/carousel/assets/js/frontend/handlers/testimonial-carousel.js ***!
  \*******************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/carousel/assets/js/frontend/handlers/base.js"));

class TestimonialCarousel extends _base.default {
  getDefaultSettings() {
    const defaultSettings = super.getDefaultSettings();
    defaultSettings.slidesPerView = {
      desktop: 1
    };
    Object.keys(elementorFrontend.config.responsive.activeBreakpoints).forEach(breakpointName => {
      defaultSettings.slidesPerView[breakpointName] = 1;
    });

    if (defaultSettings.loop) {
      defaultSettings.loopedSlides = this.getSlidesCount();
    }

    return defaultSettings;
  }

  getEffect() {
    return 'slide';
  }

}

exports.default = TestimonialCarousel;

/***/ }),

/***/ "../modules/countdown/assets/js/frontend/frontend-legacy.js":
/*!******************************************************************!*\
  !*** ../modules/countdown/assets/js/frontend/frontend-legacy.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _countdown = _interopRequireDefault(__webpack_require__(/*! ./handlers/countdown */ "../modules/countdown/assets/js/frontend/handlers/countdown.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('countdown', _countdown.default);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/countdown/assets/js/frontend/handlers/countdown.js":
/*!*********************************************************************!*\
  !*** ../modules/countdown/assets/js/frontend/handlers/countdown.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  cache: null,

  cacheElements() {
    const $countDown = this.$element.find('.elementor-countdown-wrapper');
    this.cache = {
      $countDown,
      timeInterval: null,
      elements: {
        $countdown: $countDown.find('.elementor-countdown-wrapper'),
        $daysSpan: $countDown.find('.elementor-countdown-days'),
        $hoursSpan: $countDown.find('.elementor-countdown-hours'),
        $minutesSpan: $countDown.find('.elementor-countdown-minutes'),
        $secondsSpan: $countDown.find('.elementor-countdown-seconds'),
        $expireMessage: $countDown.parent().find('.elementor-countdown-expire--message')
      },
      data: {
        id: this.$element.data('id'),
        endTime: new Date($countDown.data('date') * 1000),
        actions: $countDown.data('expire-actions'),
        evergreenInterval: $countDown.data('evergreen-interval')
      }
    };
  },

  onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
    this.cacheElements();

    if (0 < this.cache.data.evergreenInterval) {
      this.cache.data.endTime = this.getEvergreenDate();
    }

    this.initializeClock();
  },

  updateClock() {
    const self = this,
          timeRemaining = this.getTimeRemaining(this.cache.data.endTime);
    jQuery.each(timeRemaining.parts, function (timePart) {
      const $element = self.cache.elements['$' + timePart + 'Span'];
      let partValue = this.toString();

      if (1 === partValue.length) {
        partValue = 0 + partValue;
      }

      if ($element.length) {
        $element.text(partValue);
      }
    });

    if (timeRemaining.total <= 0) {
      clearInterval(this.cache.timeInterval);
      this.runActions();
    }
  },

  initializeClock() {
    const self = this;
    this.updateClock();
    this.cache.timeInterval = setInterval(function () {
      self.updateClock();
    }, 1000);
  },

  runActions() {
    const self = this; // Trigger general event for 3rd patry actions

    self.$element.trigger('countdown_expire', self.$element);

    if (!this.cache.data.actions) {
      return;
    }

    this.cache.data.actions.forEach(function (action) {
      switch (action.type) {
        case 'hide':
          self.cache.$countDown.hide();
          break;

        case 'redirect':
          if (action.redirect_url) {
            window.location.href = action.redirect_url;
          }

          break;

        case 'message':
          self.cache.elements.$expireMessage.show();
          break;
      }
    });
  },

  getTimeRemaining(endTime) {
    const timeRemaining = endTime - new Date();
    let seconds = Math.floor(timeRemaining / 1000 % 60),
        minutes = Math.floor(timeRemaining / 1000 / 60 % 60),
        hours = Math.floor(timeRemaining / (1000 * 60 * 60) % 24),
        days = Math.floor(timeRemaining / (1000 * 60 * 60 * 24));

    if (days < 0 || hours < 0 || minutes < 0) {
      seconds = minutes = hours = days = 0;
    }

    return {
      total: timeRemaining,
      parts: {
        days,
        hours,
        minutes,
        seconds
      }
    };
  },

  getEvergreenDate() {
    const self = this,
          id = this.cache.data.id,
          interval = this.cache.data.evergreenInterval,
          dueDateKey = id + '-evergreen_due_date',
          intervalKey = id + '-evergreen_interval',
          localData = {
      dueDate: localStorage.getItem(dueDateKey),
      interval: localStorage.getItem(intervalKey)
    },
          initEvergreen = function () {
      var evergreenDueDate = new Date();
      self.cache.data.endTime = evergreenDueDate.setSeconds(evergreenDueDate.getSeconds() + interval);
      localStorage.setItem(dueDateKey, self.cache.data.endTime);
      localStorage.setItem(intervalKey, interval);
      return self.cache.data.endTime;
    };

    if (null === localData.dueDate && null === localData.interval) {
      return initEvergreen();
    }

    if (null !== localData.dueDate && interval !== parseInt(localData.interval, 10)) {
      return initEvergreen();
    }

    if (localData.dueDate > 0 && parseInt(localData.interval, 10) === interval) {
      return localData.dueDate;
    }
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/forms/assets/js/frontend/frontend-legacy.js":
/*!**************************************************************!*\
  !*** ../modules/forms/assets/js/frontend/frontend-legacy.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _formSteps = _interopRequireDefault(__webpack_require__(/*! ./handlers/form-steps */ "../modules/forms/assets/js/frontend/handlers/form-steps.js"));

var _formSender = _interopRequireDefault(__webpack_require__(/*! ./handlers/form-sender */ "../modules/forms/assets/js/frontend/handlers/form-sender.js"));

var _formRedirect = _interopRequireDefault(__webpack_require__(/*! ./handlers/form-redirect */ "../modules/forms/assets/js/frontend/handlers/form-redirect.js"));

var _recaptcha = _interopRequireDefault(__webpack_require__(/*! ./handlers/recaptcha */ "../modules/forms/assets/js/frontend/handlers/recaptcha.js"));

var _date = _interopRequireDefault(__webpack_require__(/*! ./handlers/fields/date */ "../modules/forms/assets/js/frontend/handlers/fields/date.js"));

var _time = _interopRequireDefault(__webpack_require__(/*! ./handlers/fields/time */ "../modules/forms/assets/js/frontend/handlers/fields/time.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    const formHandlers = [_formSteps.default, _formSender.default, _formRedirect.default];
    elementorFrontend.elementsHandler.attachHandler('form', [...formHandlers, _recaptcha.default, _date.default, _time.default]);
    elementorFrontend.elementsHandler.attachHandler('subscribe', formHandlers);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/forms/assets/js/frontend/handlers/fields/data-time-field-base.js":
/*!***********************************************************************************!*\
  !*** ../modules/forms/assets/js/frontend/handlers/fields/data-time-field-base.js ***!
  \***********************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class DataTimeFieldBase extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        fields: this.getFieldsSelector()
      },
      classes: {
        useNative: 'elementor-use-native'
      }
    };
  }

  getDefaultElements() {
    const {
      selectors
    } = this.getDefaultSettings();
    return {
      $fields: this.$element.find(selectors.fields)
    };
  }

  addPicker(element) {
    const {
      classes
    } = this.getDefaultSettings(),
          $element = jQuery(element);

    if ($element.hasClass(classes.useNative)) {
      return;
    }

    element.flatpickr(this.getPickerOptions(element));
  }

  onInit(...args) {
    super.onInit(...args);
    this.elements.$fields.each((index, element) => this.addPicker(element));
  }

}

exports.default = DataTimeFieldBase;

/***/ }),

/***/ "../modules/forms/assets/js/frontend/handlers/fields/date.js":
/*!*******************************************************************!*\
  !*** ../modules/forms/assets/js/frontend/handlers/fields/date.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _dataTimeFieldBase = _interopRequireDefault(__webpack_require__(/*! ./data-time-field-base */ "../modules/forms/assets/js/frontend/handlers/fields/data-time-field-base.js"));

class DateField extends _dataTimeFieldBase.default {
  getFieldsSelector() {
    return '.elementor-date-field';
  }

  getPickerOptions(element) {
    const $element = jQuery(element);
    return {
      minDate: $element.attr('min') || null,
      maxDate: $element.attr('max') || null,
      allowInput: true
    };
  }

}

exports.default = DateField;

/***/ }),

/***/ "../modules/forms/assets/js/frontend/handlers/fields/time.js":
/*!*******************************************************************!*\
  !*** ../modules/forms/assets/js/frontend/handlers/fields/time.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _dataTimeFieldBase = _interopRequireDefault(__webpack_require__(/*! ./data-time-field-base */ "../modules/forms/assets/js/frontend/handlers/fields/data-time-field-base.js"));

class TimeField extends _dataTimeFieldBase.default {
  getFieldsSelector() {
    return '.elementor-time-field';
  }

  getPickerOptions() {
    return {
      noCalendar: true,
      enableTime: true,
      allowInput: true
    };
  }

}

exports.default = TimeField;

/***/ }),

/***/ "../modules/forms/assets/js/frontend/handlers/form-redirect.js":
/*!*********************************************************************!*\
  !*** ../modules/forms/assets/js/frontend/handlers/form-redirect.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  getDefaultSettings() {
    return {
      selectors: {
        form: '.elementor-form'
      }
    };
  },

  getDefaultElements() {
    var selectors = this.getSettings('selectors'),
        elements = {};
    elements.$form = this.$element.find(selectors.form);
    return elements;
  },

  bindEvents() {
    this.elements.$form.on('form_destruct', this.handleSubmit);
  },

  handleSubmit(event, response) {
    if ('undefined' !== typeof response.data.redirect_url) {
      location.href = response.data.redirect_url;
    }
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/forms/assets/js/frontend/handlers/form-sender.js":
/*!*******************************************************************!*\
  !*** ../modules/forms/assets/js/frontend/handlers/form-sender.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  getDefaultSettings() {
    return {
      selectors: {
        form: '.elementor-form',
        submitButton: '[type="submit"]'
      },
      action: 'elementor_pro_forms_send_form',
      ajaxUrl: elementorProFrontend.config.ajaxurl
    };
  },

  getDefaultElements() {
    const selectors = this.getSettings('selectors'),
          elements = {};
    elements.$form = this.$element.find(selectors.form);
    elements.$submitButton = elements.$form.find(selectors.submitButton);
    return elements;
  },

  bindEvents() {
    this.elements.$form.on('submit', this.handleSubmit);
    const $fileInput = this.elements.$form.find('input[type=file]');

    if ($fileInput.length) {
      $fileInput.on('change', this.validateFileSize);
    }
  },

  validateFileSize(event) {
    const $field = jQuery(event.currentTarget),
          files = $field[0].files;

    if (!files.length) {
      return;
    }

    const maxSize = parseInt($field.attr('data-maxsize')) * 1024 * 1024,
          maxSizeMessage = $field.attr('data-maxsize-message');
    const filesArray = Array.prototype.slice.call(files);
    filesArray.forEach(file => {
      if (maxSize < file.size) {
        $field.parent().addClass('elementor-error').append('<span class="elementor-message elementor-message-danger elementor-help-inline elementor-form-help-inline" role="alert">' + maxSizeMessage + '</span>').find(':input').attr('aria-invalid', 'true');
        this.elements.$form.trigger('error');
      }
    });
  },

  beforeSend() {
    const $form = this.elements.$form;
    $form.animate({
      opacity: '0.45'
    }, 500).addClass('elementor-form-waiting');
    $form.find('.elementor-message').remove();
    $form.find('.elementor-error').removeClass('elementor-error');
    $form.find('div.elementor-field-group').removeClass('error').find('span.elementor-form-help-inline').remove().end().find(':input').attr('aria-invalid', 'false');
    this.elements.$submitButton.attr('disabled', 'disabled').find('> span').prepend('<span class="elementor-button-text elementor-form-spinner"><i class="fa fa-spinner fa-spin"></i>&nbsp;</span>');
  },

  getFormData() {
    const formData = new FormData(this.elements.$form[0]);
    formData.append('action', this.getSettings('action'));
    formData.append('referrer', location.toString());
    return formData;
  },

  onSuccess(response) {
    const $form = this.elements.$form;
    this.elements.$submitButton.removeAttr('disabled').find('.elementor-form-spinner').remove();
    $form.animate({
      opacity: '1'
    }, 100).removeClass('elementor-form-waiting');

    if (!response.success) {
      if (response.data.errors) {
        jQuery.each(response.data.errors, function (key, title) {
          $form.find('#form-field-' + key).parent().addClass('elementor-error').append('<span class="elementor-message elementor-message-danger elementor-help-inline elementor-form-help-inline" role="alert">' + title + '</span>').find(':input').attr('aria-invalid', 'true');
        });
        $form.trigger('error');
      }

      $form.append('<div class="elementor-message elementor-message-danger" role="alert">' + response.data.message + '</div>');
    } else {
      $form.trigger('submit_success', response.data); // For actions like redirect page

      $form.trigger('form_destruct', response.data);
      $form.trigger('reset');

      if ('undefined' !== typeof response.data.message && '' !== response.data.message) {
        $form.append('<div class="elementor-message elementor-message-success" role="alert">' + response.data.message + '</div>');
      }
    }
  },

  onError(xhr, desc) {
    const $form = this.elements.$form;
    $form.append('<div class="elementor-message elementor-message-danger" role="alert">' + desc + '</div>');
    this.elements.$submitButton.html(this.elements.$submitButton.text()).removeAttr('disabled');
    $form.animate({
      opacity: '1'
    }, 100).removeClass('elementor-form-waiting');
    $form.trigger('error');
  },

  handleSubmit(event) {
    const self = this,
          $form = this.elements.$form;
    event.preventDefault();

    if ($form.hasClass('elementor-form-waiting')) {
      return false;
    }

    this.beforeSend();
    jQuery.ajax({
      url: self.getSettings('ajaxUrl'),
      type: 'POST',
      dataType: 'json',
      data: self.getFormData(),
      processData: false,
      contentType: false,
      success: self.onSuccess,
      error: self.onError
    });
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/forms/assets/js/frontend/handlers/form-steps.js":
/*!******************************************************************!*\
  !*** ../modules/forms/assets/js/frontend/handlers/form-steps.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class FormSteps extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        form: '.elementor-form',
        fieldsWrapper: '.elementor-form-fields-wrapper',
        fieldGroup: '.elementor-field-group',
        stepWrapper: '.elementor-field-type-step',
        stepField: '.e-field-step',
        submitWrapper: '.elementor-field-type-submit',
        submitButton: '[type="submit"]',
        buttons: '.e-form__buttons',
        buttonWrapper: '.e-form__buttons__wrapper',
        button: '.e-form__buttons__wrapper__button',
        indicator: '.e-form__indicators__indicator',
        indicatorProgress: '.e-form__indicators__indicator__progress',
        indicatorProgressMeter: '.e-form__indicators__indicator__progress__meter',
        formHelpInline: '.elementor-form-help-inline'
      },
      classes: {
        hidden: 'elementor-hidden',
        column: 'elementor-column',
        fieldGroup: 'elementor-field-group',
        elementorButton: 'elementor-button',
        step: 'e-form__step',
        buttons: 'e-form__buttons',
        buttonWrapper: 'e-form__buttons__wrapper',
        button: 'e-form__buttons__wrapper__button',
        indicators: 'e-form__indicators',
        indicator: 'e-form__indicators__indicator',
        indicatorIcon: 'e-form__indicators__indicator__icon',
        indicatorNumber: 'e-form__indicators__indicator__number',
        indicatorLabel: 'e-form__indicators__indicator__label',
        indicatorProgress: 'e-form__indicators__indicator__progress',
        indicatorProgressMeter: 'e-form__indicators__indicator__progress__meter',
        indicatorSeparator: 'e-form__indicators__indicator__separator',
        indicatorInactive: 'e-form__indicators__indicator--state-inactive',
        indicatorActive: 'e-form__indicators__indicator--state-active',
        indicatorCompleted: 'e-form__indicators__indicator--state-completed',
        indicatorShapeCircle: 'e-form__indicators__indicator--shape-circle',
        indicatorShapeSquare: 'e-form__indicators__indicator--shape-square',
        indicatorShapeRounded: 'e-form__indicators__indicator--shape-rounded',
        indicatorShapeNone: 'e-form__indicators__indicator--shape-none'
      }
    };
  }

  getDefaultElements() {
    const {
      selectors
    } = this.getSettings(),
          elements = {
      $form: this.$element.find(selectors.form)
    };
    elements.$fieldsWrapper = elements.$form.children(selectors.fieldsWrapper);
    elements.$stepWrapper = elements.$fieldsWrapper.children(selectors.stepWrapper);
    elements.$stepField = elements.$stepWrapper.children(selectors.stepField);
    elements.$fieldGroup = elements.$fieldsWrapper.children(selectors.fieldGroup);
    elements.$submitWrapper = elements.$fieldsWrapper.children(selectors.submitWrapper);
    elements.$submitButton = elements.$submitWrapper.children(selectors.submitButton);
    return elements;
  }

  onInit(...args) {
    super.onInit(...args);

    if (!this.isStepsExist()) {
      return;
    }

    this.data = {
      steps: [],
      indicatorsWithObjectTags: []
    };
    this.state = {
      currentStep: 0,
      stepsType: '',
      stepsShape: ''
    };
    this.buildSteps();
    this.elements = { ...this.elements,
      ...this.createStepsIndicators(),
      ...this.createStepsButtons()
    };
    this.initProgressBar();
    this.extractResponsiveSizeFromSubmitWrapper();
  }

  bindEvents() {
    if (!this.isStepsExist()) {
      return;
    }

    this.elements.$form.on({
      submit: () => this.resetForm(),
      keydown: e => {
        if (13 === e.keyCode && !this.isLastStep() && 'textarea' !== e.target.localName) {
          e.preventDefault();
          this.applyStep('next');
        }
      },
      error: () => this.onFormError()
    });
  }

  isStepsExist() {
    return this.elements.$stepWrapper.length;
  }

  initProgressBar() {
    const stepsSettings = this.getElementSettings();

    if ('progress_bar' === stepsSettings.step_type) {
      this.setProgressBar();
    }
  }

  buildSteps() {
    this.elements.$stepWrapper.each((index, el) => {
      const {
        selectors,
        classes
      } = this.getSettings(),
            $currentStep = jQuery(el);
      $currentStep.addClass(classes.step).removeClass(classes.fieldGroup, classes.column);

      if (index) {
        $currentStep.addClass(classes.hidden);
      }

      this.setStepData($currentStep.children(selectors.stepField));
      $currentStep.append($currentStep.nextUntil(this.elements.$stepWrapper).not(this.elements.$submitWrapper));
    });
  }

  setStepData($stepElement) {
    const dataAttributes = ['label', 'previousButton', 'nextButton', 'iconUrl', 'iconLibrary', 'icon'],
          stepData = {};
    dataAttributes.forEach(attr => {
      const attrValue = $stepElement.attr('data-' + attr);

      if (attrValue) {
        stepData[attr] = attrValue;
      }
    });
    this.data.steps.push(stepData);
  }

  createStepsIndicators() {
    const stepsSettings = this.getElementSettings(),
          stepsElements = {};

    if ('none' !== stepsSettings.step_type) {
      const {
        selectors,
        classes
      } = this.getSettings(),
            indicatorsTypeClass = classes.indicators + '--type-' + stepsSettings.step_type,
            indicatorsClasses = [classes.indicators, indicatorsTypeClass];
      stepsElements.$indicatorsWrapper = jQuery('<div>', {
        class: indicatorsClasses.join(' ')
      });
      stepsElements.$indicatorsWrapper.append(this.buildIndicators());
      this.elements.$fieldsWrapper.before(stepsElements.$indicatorsWrapper);

      if ('progress_bar' === stepsSettings.step_type) {
        stepsElements.$progressBar = stepsElements.$indicatorsWrapper.find(selectors.indicatorProgress);
        stepsElements.$progressBarMeter = stepsElements.$indicatorsWrapper.find(selectors.indicatorProgressMeter);
      } else {
        stepsElements.$indicators = stepsElements.$indicatorsWrapper.find(selectors.indicator);
        stepsElements.$currentIndicator = stepsElements.$indicators.eq(this.state.currentStep);
      }
    }

    this.saveIndicatorsState();
    return stepsElements;
  }

  buildIndicators() {
    const stepsSettings = this.getElementSettings();
    return 'progress_bar' === stepsSettings.step_type ? this.buildProgressBar() : this.buildIndicatorsFromStepsData();
  }

  buildProgressBar() {
    const {
      classes
    } = this.getSettings(),
          $progressBar = jQuery('<div>', {
      class: classes.indicatorProgress
    }),
          $progressBarMeter = jQuery('<div>', {
      class: classes.indicatorProgressMeter
    });
    $progressBar.append($progressBarMeter);
    return $progressBar;
  }

  getProgressBarValue() {
    const totalSteps = this.data.steps.length,
          currentStep = this.state.currentStep,
          percentage = currentStep ? (currentStep + 1) / totalSteps * 100 : 100 / totalSteps;
    return Math.floor(percentage) + '%';
  }

  setProgressBar() {
    const progressBarValue = this.getProgressBarValue();
    this.updateProgressMeterCSSVariable(progressBarValue);
    this.elements.$progressBarMeter.text(progressBarValue);
  }

  updateProgressMeterCSSVariable(value) {
    this.$element[0].style.setProperty('--e-form-steps-indicator-progress-meter-width', value);
  }

  saveIndicatorsState() {
    const stepsSettings = this.getElementSettings();
    this.state.stepsType = stepsSettings.step_type;

    if (!['none', 'text', 'progress_bar'].includes(stepsSettings.step_type)) {
      this.state.stepsShape = stepsSettings.step_icon_shape;
    }
  }

  buildIndicatorsFromStepsData() {
    const indicators = [];
    this.data.steps.forEach((stepObj, index) => {
      if (index) {
        indicators.push(this.getStepSeparator());
      }

      indicators.push(this.getStepIndicatorElement(stepObj, index));
    });
    return indicators;
  }

  getStepIndicatorElement(stepObj, index) {
    const {
      classes
    } = this.getSettings(),
          stepsSettings = this.getElementSettings(),
          indicatorStateClass = this.getIndicatorStateClass(index),
          indicatorClasses = [classes.indicator, indicatorStateClass],
          $stepIndicator = jQuery('<div>', {
      class: indicatorClasses.join(' ')
    });

    if (stepsSettings.step_type.includes('icon')) {
      $stepIndicator.append(this.getStepIconElement(stepObj));
    }

    if (stepsSettings.step_type.includes('number')) {
      $stepIndicator.append(this.getStepNumberElement(index));
    }

    if (stepsSettings.step_type.includes('text')) {
      $stepIndicator.append(this.getStepLabelElement(stepObj.label));
    }

    return $stepIndicator;
  }

  getIndicatorStateClass(index) {
    const {
      classes
    } = this.getSettings();

    if (index < this.state.currentStep) {
      return classes.indicatorCompleted;
    } else if (index > this.state.currentStep) {
      return classes.indicatorInactive;
    }

    return classes.indicatorActive;
  }

  getIndicatorShapeClass() {
    const stepsSettings = this.getElementSettings(),
          {
      classes
    } = this.getSettings();
    return classes['indicatorShape' + this.firstLetterToUppercase(stepsSettings.step_icon_shape)];
  }

  firstLetterToUppercase(str) {
    return str.charAt(0).toUpperCase() + str.slice(1);
  }

  getStepNumberElement(index) {
    const {
      classes
    } = this.getSettings(),
          numberClasses = [classes.indicatorNumber, this.getIndicatorShapeClass()];
    return jQuery('<div>', {
      class: numberClasses.join(' '),
      text: index + 1
    });
  }

  getStepIconElement(stepObj) {
    const {
      classes
    } = this.getSettings(),
          iconClasses = [classes.indicatorIcon, this.getIndicatorShapeClass()],
          $icon = jQuery('<div>', {
      class: iconClasses.join(' ')
    });

    if (stepObj.icon) {
      $icon.html(stepObj.icon);
    } else {
      let $iconElement;

      if (stepObj.iconLibrary) {
        $iconElement = jQuery('<i>', {
          class: stepObj.iconLibrary
        });
      } else {
        // Using the attributes inline when creating the object, otherwise the data attribute will not work.
        $iconElement = jQuery(`<object type="image/svg+xml" data="${stepObj.iconUrl}"></object>`); // Updating an indicator svg fill color, when loaded inside an object tag with a separated scope.

        $iconElement.on('load', event => {
          event.target.contentDocument.querySelector('svg').style.fill = $iconElement.css('fill');
        }); // Storing the indicators elements that contain object tags in order to change their fill color on steps change.

        this.data.indicatorsWithObjectTags.push($iconElement);
      }

      $icon.append($iconElement);
    }

    return $icon;
  }

  getStepLabelElement(label) {
    const {
      classes
    } = this.getSettings();
    return jQuery('<label>', {
      class: classes.indicatorLabel,
      text: label
    });
  }

  getStepSeparator() {
    const {
      classes
    } = this.getSettings();
    return jQuery('<div>', {
      class: classes.indicatorSeparator
    });
  }

  createStepsButtons() {
    const {
      selectors
    } = this.getSettings(),
          stepsElements = {};
    this.injectButtonsToSteps(stepsElements);
    stepsElements.$buttonsContainer = this.elements.$stepWrapper.find(selectors.buttons);
    stepsElements.$buttonsWrappers = stepsElements.$buttonsContainer.children(selectors.buttonWrapper);
    return stepsElements;
  }

  injectButtonsToSteps() {
    const totalSteps = this.elements.$stepWrapper.length;
    this.elements.$stepWrapper.each((index, el) => {
      const $el = jQuery(el),
            $container = this.getButtonsContainer();
      let $nextButton;

      if (index) {
        $container.append(this.getStepButton('previous', index));
        $nextButton = index === totalSteps - 1 ? this.getSubmitButton() : this.getStepButton('next', index);
      } else {
        $nextButton = this.getStepButton('next', index);
      }

      $container.append($nextButton);
      $el.append($container);
    });
  }

  getButtonsContainer() {
    const {
      classes
    } = this.getSettings(),
          stepsSettings = this.getElementSettings(),
          buttonColumnWidthClasses = [classes.buttons, classes.column, 'elementor-col-' + stepsSettings.button_width];
    return jQuery('<div>', {
      class: buttonColumnWidthClasses.join(' ')
    });
  }

  extractResponsiveSizeFromSubmitWrapper() {
    let sizeClasses = [];
    this.elements.$submitWrapper.removeClass((index, className) => {
      var _className$match;

      sizeClasses = (_className$match = className.match(/elementor-(sm|md)-[0-9]+/g)) === null || _className$match === void 0 ? void 0 : _className$match.join(' ');
      return sizeClasses;
    });
    this.elements.$buttonsContainer.addClass(sizeClasses);
  }

  getStepButton(buttonType, index) {
    const {
      classes
    } = this.getSettings(),
          $button = this.getButton(buttonType, index).on('click', () => this.applyStep(buttonType)),
          buttonWrapperClasses = [classes.fieldGroup, classes.buttonWrapper, 'elementor-field-type-' + buttonType];
    return jQuery('<div>', {
      class: buttonWrapperClasses.join(' ')
    }).append($button);
  }

  getSubmitButton() {
    const {
      classes
    } = this.getSettings();
    this.elements.$submitButton.addClass(classes.button); // TODO: When a solution for the conditions will be found, check if can remove the elementor-col-x manipulation.

    return this.elements.$submitWrapper.attr('class', (index, className) => {
      return this.replaceClassNameColSize(className, '');
    }).removeClass(classes.column).removeClass(classes.buttons).addClass(classes.buttonWrapper);
  }

  replaceClassNameColSize(className, value) {
    return className.replace(/elementor-col-([0-9]+)/g, value);
  }

  getButton(buttonType, index) {
    const {
      classes
    } = this.getSettings(),
          submitSizeClass = this.elements.$submitButton.attr('class').match(/elementor-size-([^\W\d]+)/g),
          buttonClasses = [classes.elementorButton, submitSizeClass, classes.button, classes.button + '-' + buttonType];
    return jQuery('<button>', {
      type: 'button',
      text: this.getButtonLabel(buttonType, index),
      class: buttonClasses.join(' ')
    });
  }

  getButtonLabel(buttonType, index) {
    const stepsSettings = this.getElementSettings(),
          stepData = this.data.steps[index],
          buttonName = buttonType + 'Button',
          buttonSettingsProp = `step_${buttonType}_label`;
    return stepData[buttonName] || stepsSettings[buttonSettingsProp];
  }

  applyStep(direction) {
    const nextIndex = 'next' === direction ? this.state.currentStep + 1 : this.state.currentStep - 1;

    if ('next' === direction && !this.isFieldsValid(this.elements.$stepWrapper)) {
      return false;
    }

    this.goToStep(nextIndex);
    this.state.currentStep = nextIndex;

    if ('progress_bar' === this.state.stepsType) {
      this.setProgressBar();
    } else if ('none' !== this.state.stepsType) {
      this.updateIndicatorsState(direction);
    }
  }

  goToStep(index) {
    const {
      classes
    } = this.getSettings();
    this.elements.$stepWrapper.eq(this.state.currentStep).addClass(classes.hidden);
    this.elements.$stepWrapper.eq(index).removeClass(classes.hidden).children(this.getSettings('selectors.fieldGroup')).first().find(':input').first().trigger('focus');
  }

  isFieldsValid($stepWrapper) {
    let isValid = true;
    $stepWrapper.eq(this.state.currentStep).find('.elementor-field-group :input').each((index, el) => {
      if (!el.checkValidity()) {
        el.reportValidity();
        return isValid = false;
      }
    });
    return isValid;
  }

  isLastStep() {
    return this.state.currentStep === this.data.steps.length - 1;
  }

  resetForm() {
    this.state.currentStep = 0;
    this.resetSteps();

    if ('progress_bar' === this.state.stepsType) {
      this.setProgressBar();
    } else if ('none' !== this.state.stepsType) {
      this.elements.$currentIndicator = this.elements.$indicators.eq(this.state.currentStep);
      this.resetIndicators();
    }
  }

  resetSteps() {
    const {
      classes
    } = this.getSettings();
    this.elements.$stepWrapper.addClass(classes.hidden).eq(0).removeClass(classes.hidden);
  }

  resetIndicators() {
    const {
      classes
    } = this.getSettings(),
          stateTypes = ['inactive', 'active', 'completed'],
          stateClasses = stateTypes.map(state => classes.indicator + '--state-' + state);
    this.elements.$indicators.removeClass(stateClasses.join(' ')).not(this.elements.$indicators.eq(0)).addClass(classes.indicatorInactive);
    this.elements.$indicators.eq(0).addClass(classes.indicatorActive);
  }

  updateIndicatorsState(direction) {
    const {
      classes
    } = this.getSettings(),
          indicatorsClasses = {
      current: {
        remove: classes.indicatorActive,
        add: 'next' === direction ? classes.indicatorCompleted : classes.indicatorInactive
      },
      next: {
        remove: 'next' === direction ? classes.indicatorInactive : classes.indicatorCompleted,
        add: classes.indicatorActive
      }
    };
    this.elements.$currentIndicator.removeClass(indicatorsClasses.current.remove).addClass(indicatorsClasses.current.add);
    this.elements.$currentIndicator = this.elements.$indicators.eq(this.state.currentStep);
    this.elements.$currentIndicator.removeClass(indicatorsClasses.next.remove).addClass(indicatorsClasses.next.add); // Updating an indicator svg fill color, if loaded inside an object tag.

    this.data.indicatorsWithObjectTags.forEach($element => {
      $element.contents().children('svg').css('fill', $element.css('fill'));
    });
  }

  updateValue(updatedValue) {
    const actionsMap = {
      step_type: () => this.updateStepsType(),
      step_icon_shape: () => this.updateStepsShape(),
      step_next_label: () => this.updateStepButtonsLabel('next'),
      step_previous_label: () => this.updateStepButtonsLabel('previous')
    };

    if (actionsMap[updatedValue]) {
      actionsMap[updatedValue]();
    }
  }

  updateStepsType() {
    const stepsSettings = this.getElementSettings();

    if (this.elements.$indicatorsWrapper) {
      this.elements.$indicatorsWrapper.remove();
    }

    if ('none' !== stepsSettings.step_type) {
      this.rebuildIndicators();
    }

    this.state.stepsType = stepsSettings.step_type;
  }

  rebuildIndicators() {
    this.elements = { ...this.elements,
      ...this.createStepsIndicators()
    };
    this.initProgressBar();
  }

  updateStepsShape() {
    const stepsSettings = this.getElementSettings(),
          {
      selectors,
      classes
    } = this.getSettings(),
          shapeClassStart = classes.indicator + '--shape-',
          currentShapeClass = shapeClassStart + this.state.stepsShape,
          newShapeClass = shapeClassStart + stepsSettings.step_icon_shape;
    let elementsTargetType = '';

    if (stepsSettings.step_type.includes('icon')) {
      elementsTargetType = 'icon';
    } else if (stepsSettings.step_type.includes('number')) {
      elementsTargetType = 'number';
    }

    this.elements.$indicators.children(selectors.indicator + '__' + elementsTargetType).removeClass(currentShapeClass).addClass(newShapeClass);
    this.state.stepsShape = stepsSettings.step_icon_shape;
  }

  updateStepButtonsLabel(buttonType) {
    const {
      selectors
    } = this.getSettings(),
          buttonSelector = {
      previous: selectors.button + '-previous',
      next: selectors.button + '-next'
    };
    this.elements.$stepWrapper.each((index, el) => {
      jQuery(el).find(buttonSelector[buttonType]).text(this.getButtonLabel(buttonType, index));
    });
  }

  onFormError() {
    const {
      selectors
    } = this.getSettings(),
          $errorStepElement = this.elements.$form.find(selectors.formHelpInline).closest(selectors.stepWrapper);

    if ($errorStepElement.length) {
      this.goToStep($errorStepElement.index());
    }
  }

  onElementChange(updatedValue) {
    if (!this.isStepsExist()) {
      return;
    }

    this.updateValue(updatedValue);
  }

}

exports.default = FormSteps;

/***/ }),

/***/ "../modules/forms/assets/js/frontend/handlers/recaptcha.js":
/*!*****************************************************************!*\
  !*** ../modules/forms/assets/js/frontend/handlers/recaptcha.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class Recaptcha extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        recaptcha: '.elementor-g-recaptcha:last',
        submit: 'button[type="submit"]',
        recaptchaResponse: '[name="g-recaptcha-response"]'
      }
    };
  }

  getDefaultElements() {
    const {
      selectors
    } = this.getDefaultSettings(),
          elements = {
      $recaptcha: this.$element.find(selectors.recaptcha)
    };
    elements.$form = elements.$recaptcha.parents('form');
    elements.$submit = elements.$form.find(selectors.submit);
    return elements;
  }

  bindEvents() {
    this.onRecaptchaApiReady();
  }

  isActive(settings) {
    const {
      selectors
    } = this.getDefaultSettings();
    return settings.$element.find(selectors.recaptcha).length;
  }

  addRecaptcha() {
    const settings = this.elements.$recaptcha.data(),
          isV2 = 'v3' !== settings.type,
          captchaIds = [];
    captchaIds.forEach(id => window.grecaptcha.reset(id));
    const widgetId = window.grecaptcha.render(this.elements.$recaptcha[0], settings);
    this.elements.$form.on('reset error', () => {
      window.grecaptcha.reset(widgetId);
    });

    if (isV2) {
      this.elements.$recaptcha.data('widgetId', widgetId);
    } else {
      captchaIds.push(widgetId);
      this.elements.$submit.on('click', e => this.onV3FormSubmit(e, widgetId));
    }
  }

  onV3FormSubmit(e, widgetId) {
    e.preventDefault();
    window.grecaptcha.ready(() => {
      const $form = this.elements.$form;
      grecaptcha.execute(widgetId, {
        action: this.elements.$recaptcha.data('action')
      }).then(token => {
        if (this.elements.$recaptchaResponse) {
          this.elements.$recaptchaResponse.val(token);
        } else {
          this.elements.$recaptchaResponse = jQuery('<input>', {
            type: 'hidden',
            value: token,
            name: 'g-recaptcha-response'
          });
          $form.append(this.elements.$recaptchaResponse);
        } // Support old browsers.


        const bcSupport = !$form[0].reportValidity || 'function' !== typeof $form[0].reportValidity;

        if (bcSupport || $form[0].reportValidity()) {
          $form.trigger('submit');
        }
      });
    });
  }

  onRecaptchaApiReady() {
    if (window.grecaptcha && window.grecaptcha.render) {
      this.addRecaptcha();
    } else {
      // If not ready check again by timeout..
      setTimeout(() => this.onRecaptchaApiReady(), 350);
    }
  }

}

exports.default = Recaptcha;

/***/ }),

/***/ "../modules/gallery/assets/js/frontend/frontend-legacy.js":
/*!****************************************************************!*\
  !*** ../modules/gallery/assets/js/frontend/frontend-legacy.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _handler = _interopRequireDefault(__webpack_require__(/*! ./handler */ "../modules/gallery/assets/js/frontend/handler.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('gallery', _handler.default);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/gallery/assets/js/frontend/handler.js":
/*!********************************************************!*\
  !*** ../modules/gallery/assets/js/frontend/handler.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class galleryHandler extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        container: '.elementor-gallery__container',
        galleryTitles: '.elementor-gallery-title',
        galleryImages: '.e-gallery-image',
        galleryItemOverlay: '.elementor-gallery-item__overlay',
        galleryItemContent: '.elementor-gallery-item__content'
      },
      classes: {
        activeTitle: 'elementor-item-active'
      }
    };
  }

  getDefaultElements() {
    const {
      selectors
    } = this.getSettings(),
          elements = {
      $container: this.$element.find(selectors.container),
      $titles: this.$element.find(selectors.galleryTitles)
    };
    elements.$items = elements.$container.children();
    elements.$images = elements.$items.children(selectors.galleryImages);
    elements.$itemsOverlay = elements.$items.children(selectors.galleryItemOverlay);
    elements.$itemsContent = elements.$items.children(selectors.galleryItemContent);
    elements.$itemsContentElements = elements.$itemsContent.children();
    return elements;
  }

  getGallerySettings() {
    const settings = this.getElementSettings(),
          activeBreakpoints = elementorFrontend.config.responsive.activeBreakpoints,
          activeBreakpointsKeys = Object.keys(activeBreakpoints),
          breakPointSettings = {},
          desktopIdealRowHeight = elementorFrontend.getDeviceSetting('desktop', settings, 'ideal_row_height');
    activeBreakpointsKeys.forEach(breakpoint => {
      // The Gallery widget currently does not support widescreen.
      if ('widescreen' !== breakpoint) {
        const idealRowHeight = elementorFrontend.getDeviceSetting(breakpoint, settings, 'ideal_row_height');
        breakPointSettings[activeBreakpoints[breakpoint].value] = {
          horizontalGap: elementorFrontend.getDeviceSetting(breakpoint, settings, 'gap').size,
          verticalGap: elementorFrontend.getDeviceSetting(breakpoint, settings, 'gap').size,
          columns: elementorFrontend.getDeviceSetting(breakpoint, settings, 'columns'),
          idealRowHeight: idealRowHeight === null || idealRowHeight === void 0 ? void 0 : idealRowHeight.size
        };
      }
    });
    return {
      type: settings.gallery_layout,
      idealRowHeight: desktopIdealRowHeight === null || desktopIdealRowHeight === void 0 ? void 0 : desktopIdealRowHeight.size,
      container: this.elements.$container,
      columns: settings.columns,
      aspectRatio: settings.aspect_ratio,
      lastRow: 'normal',
      horizontalGap: elementorFrontend.getDeviceSetting('desktop', settings, 'gap').size,
      verticalGap: elementorFrontend.getDeviceSetting('desktop', settings, 'gap').size,
      animationDuration: settings.content_animation_duration,
      breakpoints: breakPointSettings,
      rtl: elementorFrontend.config.is_rtl,
      lazyLoad: 'yes' === settings.lazyload
    };
  }

  initGallery() {
    this.gallery = new EGallery(this.getGallerySettings());
    this.toggleAllAnimationsClasses();
  }

  removeAnimationClasses($element) {
    $element.removeClass((index, className) => (className.match(/elementor-animated-item-\S+/g) || []).join(' '));
  }

  toggleOverlayHoverAnimation() {
    this.removeAnimationClasses(this.elements.$itemsOverlay);
    const hoverAnimation = this.getElementSettings('background_overlay_hover_animation');

    if (hoverAnimation) {
      this.elements.$itemsOverlay.addClass('elementor-animated-item--' + hoverAnimation);
    }
  }

  toggleOverlayContentAnimation() {
    this.removeAnimationClasses(this.elements.$itemsContentElements);
    const contentHoverAnimation = this.getElementSettings('content_hover_animation');

    if (contentHoverAnimation) {
      this.elements.$itemsContentElements.addClass('elementor-animated-item--' + contentHoverAnimation);
    }
  }

  toggleOverlayContentSequencedAnimation() {
    this.elements.$itemsContent.toggleClass('elementor-gallery--sequenced-animation', 'yes' === this.getElementSettings('content_sequenced_animation'));
  }

  toggleImageHoverAnimation() {
    const imageHoverAnimation = this.getElementSettings('image_hover_animation');
    this.removeAnimationClasses(this.elements.$images);

    if (imageHoverAnimation) {
      this.elements.$images.addClass('elementor-animated-item--' + imageHoverAnimation);
    }
  }

  toggleAllAnimationsClasses() {
    const elementSettings = this.getElementSettings(),
          animation = elementSettings.background_overlay_hover_animation || elementSettings.content_hover_animation || elementSettings.image_hover_animation;
    this.elements.$items.toggleClass('elementor-animated-content', !!animation);
    this.toggleImageHoverAnimation();
    this.toggleOverlayHoverAnimation();
    this.toggleOverlayContentAnimation();
    this.toggleOverlayContentSequencedAnimation();
  }

  toggleAnimationClasses(settingKey) {
    if ('content_sequenced_animation' === settingKey) {
      this.toggleOverlayContentSequencedAnimation();
    }

    if ('background_overlay_hover_animation' === settingKey) {
      this.toggleOverlayHoverAnimation();
    }

    if ('content_hover_animation' === settingKey) {
      this.toggleOverlayContentAnimation();
    }

    if ('image_hover_animation' === settingKey) {
      this.toggleImageHoverAnimation();
    }
  }

  setGalleryTags(id) {
    this.gallery.setSettings('tags', 'all' === id ? [] : ['' + id]);
  }

  bindEvents() {
    this.elements.$titles.on('click', this.galleriesNavigationListener.bind(this));
  }

  galleriesNavigationListener(event) {
    const classes = this.getSettings('classes'),
          clickedElement = jQuery(event.target); // Make sure no other gallery title has an active class

    this.elements.$titles.removeClass(classes.activeTitle); // Give the gallery being activated the active class

    clickedElement.addClass(classes.activeTitle);
    this.setGalleryTags(clickedElement.data('gallery-index'));

    const updateLightboxGroup = () => this.setLightboxGalleryIndex(clickedElement.data('gallery-index')); // Wait for the gallery to filter before grouping items for the Light-box


    setTimeout(updateLightboxGroup, 1000);
  }

  setLightboxGalleryIndex(index = 'all') {
    if ('all' === index) {
      return this.elements.$items.attr('data-elementor-lightbox-slideshow', 'all_' + this.getID());
    }

    this.elements.$items.not('.e-gallery-item--hidden').attr('data-elementor-lightbox-slideshow', index + '_' + this.getID());
  }

  onInit(...args) {
    super.onInit(...args);

    if (elementorFrontend.isEditMode() && 1 <= this.$element.find('.elementor-widget-empty-icon').length) {
      this.$element.addClass('elementor-widget-empty');
    }

    if (!this.elements.$container.length) {
      return;
    }

    this.initGallery();
    this.elements.$titles.first().trigger('click');
  }

  getSettingsDictionary() {
    if (this.settingsDictionary) {
      return this.settingsDictionary;
    }

    const activeBreakpoints = elementorFrontend.config.responsive.activeBreakpoints,
          activeBreakpointsKeys = Object.keys(activeBreakpoints);
    const settingsDictionary = {
      columns: ['columns'],
      gap: ['horizontalGap', 'verticalGap'],
      ideal_row_height: ['idealRowHeight']
    };
    activeBreakpointsKeys.forEach(breakpoint => {
      // The Gallery widget currently does not support widescreen.
      if ('widescreen' === breakpoint) {
        return;
      }

      settingsDictionary['columns_' + breakpoint] = ['breakpoints.' + activeBreakpoints[breakpoint].value + '.columns'];
      settingsDictionary['gap_' + breakpoint] = ['breakpoints.' + activeBreakpoints[breakpoint].value + '.horizontalGap', 'breakpoints.' + activeBreakpoints[breakpoint].value + '.verticalGap'];
      settingsDictionary['ideal_row_height_' + breakpoint] = ['breakpoints.' + activeBreakpoints[breakpoint].value + '.idealRowHeight'];
    });
    settingsDictionary.aspect_ratio = ['aspectRatio'];
    this.settingsDictionary = settingsDictionary;
    return this.settingsDictionary;
  }

  onElementChange(settingKey) {
    if (-1 !== ['background_overlay_hover_animation', 'content_hover_animation', 'image_hover_animation', 'content_sequenced_animation'].indexOf(settingKey)) {
      this.toggleAnimationClasses(settingKey);
      return;
    }

    const settingsDictionary = this.getSettingsDictionary();
    const settingsToUpdate = settingsDictionary[settingKey];

    if (settingsToUpdate) {
      const gallerySettings = this.getGallerySettings();
      settingsToUpdate.forEach(settingToUpdate => {
        this.gallery.setSettings(settingToUpdate, this.getItems(gallerySettings, settingToUpdate));
      });
    }
  }

  onDestroy() {
    super.onDestroy();

    if (this.gallery) {
      this.gallery.destroy();
    }
  }

}

exports.default = galleryHandler;

/***/ }),

/***/ "../modules/hotspot/assets/js/frontend/frontend-legacy.js":
/*!****************************************************************!*\
  !*** ../modules/hotspot/assets/js/frontend/frontend-legacy.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _hotspot = _interopRequireDefault(__webpack_require__(/*! ./handlers/hotspot */ "../modules/hotspot/assets/js/frontend/handlers/hotspot.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('hotspot', _hotspot.default);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/hotspot/assets/js/frontend/handlers/hotspot.js":
/*!*****************************************************************!*\
  !*** ../modules/hotspot/assets/js/frontend/handlers/hotspot.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class Hotspot extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        hotspot: '.e-hotspot',
        tooltip: '.e-hotspot__tooltip'
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors');
    return {
      $hotspot: this.$element.find(selectors.hotspot),
      $hotspotsExcludesLinks: this.$element.find(selectors.hotspot).filter(':not(.e-hotspot--no-tooltip)'),
      $tooltip: this.$element.find(selectors.tooltip)
    };
  }

  bindEvents() {
    const tooltipTrigger = this.getCurrentDeviceSetting('tooltip_trigger'),
          tooltipTriggerEvent = 'mouseenter' === tooltipTrigger ? 'mouseleave mouseenter' : tooltipTrigger;

    if (tooltipTriggerEvent !== 'none') {
      this.elements.$hotspotsExcludesLinks.on(tooltipTriggerEvent, event => this.onHotspotTriggerEvent(event));
    }
  }

  onDeviceModeChange() {
    this.elements.$hotspotsExcludesLinks.off();
    this.bindEvents();
  }

  onHotspotTriggerEvent(event) {
    const elementTarget = jQuery(event.target),
          isHotspotButtonEvent = elementTarget.closest('.e-hotspot__button').length,
          isTooltipMouseLeave = 'mouseleave' === event.type && (elementTarget.is('.e-hotspot--tooltip-position') || elementTarget.parents('.e-hotspot--tooltip-position').length),
          isMobile = 'mobile' === elementorFrontend.getCurrentDeviceMode(),
          isHotspotLink = elementTarget.closest('.e-hotspot--link').length,
          triggerTooltip = !(isHotspotLink && isMobile && ('mouseleave' === event.type || 'mouseenter' === event.type));

    if (triggerTooltip && (isHotspotButtonEvent || isTooltipMouseLeave)) {
      const currentHotspot = jQuery(event.currentTarget);
      this.elements.$hotspot.not(currentHotspot).removeClass('e-hotspot--active');
      currentHotspot.toggleClass('e-hotspot--active');
    }
  } // Fix bad UX of "Sequenced Animation" when editing other controls


  editorAddSequencedAnimation() {
    this.elements.$hotspot.toggleClass('e-hotspot--sequenced', 'yes' === this.getElementSettings('hotspot_sequenced_animation'));
  }

  hotspotSequencedAnimation() {
    const elementSettings = this.getElementSettings(),
          isSequencedAnimation = elementSettings.hotspot_sequenced_animation;

    if ('no' === isSequencedAnimation) {
      return;
    } //start sequenced animation when element on viewport


    const hotspotObserver = elementorModules.utils.Scroll.scrollObserver({
      callback: event => {
        if (event.isInViewport) {
          hotspotObserver.unobserve(this.$element[0]); //add delay for each hotspot

          this.elements.$hotspot.each((index, element) => {
            if (0 === index) {
              return;
            }

            const sequencedAnimation = elementSettings.hotspot_sequenced_animation_duration,
                  sequencedAnimationDuration = sequencedAnimation ? sequencedAnimation.size : 1000,
                  animationDelay = index * (sequencedAnimationDuration / this.elements.$hotspot.length);
            element.style.animationDelay = animationDelay + 'ms';
          });
        }
      }
    });
    hotspotObserver.observe(this.$element[0]);
  }

  setTooltipPositionControl() {
    const elementSettings = this.getElementSettings(),
          isDirectionAnimation = 'undefined' !== typeof elementSettings.tooltip_animation && elementSettings.tooltip_animation.match(/^e-hotspot--(slide|fade)-direction/);

    if (isDirectionAnimation) {
      this.elements.$tooltip.removeClass('e-hotspot--tooltip-animation-from-left e-hotspot--tooltip-animation-from-top e-hotspot--tooltip-animation-from-right e-hotspot--tooltip-animation-from-bottom');
      this.elements.$tooltip.addClass('e-hotspot--tooltip-animation-from-' + elementSettings.tooltip_position);
    }
  }

  onInit(...args) {
    super.onInit(...args);
    this.hotspotSequencedAnimation();
    this.setTooltipPositionControl();

    if (window.elementor) {
      elementor.listenTo(elementor.channels.deviceMode, 'change', () => this.onDeviceModeChange());
    }
  }

  onElementChange(propertyName) {
    if (propertyName.startsWith('tooltip_position')) {
      this.setTooltipPositionControl();
    }

    if (propertyName.startsWith('hotspot_sequenced_animation')) {
      this.editorAddSequencedAnimation();
    }
  }

}

exports.default = Hotspot;

/***/ }),

/***/ "../modules/lottie/assets/js/frontend/frontend-legacy.js":
/*!***************************************************************!*\
  !*** ../modules/lottie/assets/js/frontend/frontend-legacy.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _handler = _interopRequireDefault(__webpack_require__(/*! ./handler */ "../modules/lottie/assets/js/frontend/handler.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('lottie', _handler.default);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/lottie/assets/js/frontend/handler.js":
/*!*******************************************************!*\
  !*** ../modules/lottie/assets/js/frontend/handler.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class lottieHandler extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        container: '.e-lottie__container',
        containerLink: '.e-lottie__container__link',
        animation: '.e-lottie__animation',
        caption: '.e-lottie__caption'
      },
      classes: {
        caption: 'e-lottie__caption'
      }
    };
  }

  getDefaultElements() {
    const {
      selectors
    } = this.getSettings();
    return {
      $widgetWrapper: this.$element,
      $container: this.$element.find(selectors.container),
      $containerLink: this.$element.find(selectors.containerLink),
      $animation: this.$element.find(selectors.animation),
      $caption: this.$element.find(selectors.caption),
      $sectionParent: this.$element.closest('.elementor-section'),
      $columnParent: this.$element.closest('.elementor-column')
    };
  }

  onInit(...args) {
    super.onInit(...args);
    this.lottie = null;
    this.state = {
      isAnimationScrollUpdateNeededOnFirstLoad: true,
      isNewLoopCycle: false,
      isInViewport: false,
      loop: false,
      animationDirection: 'forward',
      currentAnimationTrigger: '',
      effectsRelativeTo: '',
      hoverOutMode: '',
      hoverArea: '',
      caption: '',
      playAnimationCount: 0,
      animationSpeed: 0,
      linkTimeout: 0,
      viewportOffset: {
        start: 0,
        end: 100
      }
    };
    this.intersectionObservers = {
      animation: {
        observer: null,
        element: null
      },
      lazyload: {
        observer: null,
        element: null
      }
    };
    this.animationFrameRequest = {
      timer: null,
      lastScrollY: 0
    };
    this.listeners = {
      collection: [],
      elements: {
        $widgetArea: {
          triggerAnimationHoverIn: null,
          triggerAnimationHoverOut: null
        },
        $container: {
          triggerAnimationClick: null
        }
      }
    };
    this.initLottie();
  }

  initLottie() {
    const lottieSettings = this.getLottieSettings();

    if (lottieSettings.lazyload) {
      this.lazyloadLottie();
    } else {
      this.generateLottie();
    }
  }

  lazyloadLottie() {
    const bufferHeightBeforeTriggerLottie = 200;
    this.intersectionObservers.lazyload.observer = elementorModules.utils.Scroll.scrollObserver({
      offset: `0px 0px ${bufferHeightBeforeTriggerLottie}px`,
      callback: event => {
        if (event.isInViewport) {
          this.generateLottie();
          this.intersectionObservers.lazyload.observer.unobserve(this.intersectionObservers.lazyload.element);
        }
      }
    });
    this.intersectionObservers.lazyload.element = this.elements.$container[0];
    this.intersectionObservers.lazyload.observer.observe(this.intersectionObservers.lazyload.element);
  }

  generateLottie() {
    this.createLottieInstance();
    this.setLottieEvents();
  }

  createLottieInstance() {
    const lottieSettings = this.getLottieSettings();
    this.lottie = bodymovin.loadAnimation({
      container: this.elements.$animation[0],
      path: this.getAnimationPath(),
      renderer: lottieSettings.renderer,
      autoplay: false,
      // We always want to trigger the animation manually for considering start/end frame.
      name: 'lottie-widget'
    }); // Expose the lottie instance in the frontend.

    this.elements.$animation.data('lottie', this.lottie);
  }

  getAnimationPath() {
    var _lottieSettings$sourc, _lottieSettings$sourc2;

    const lottieSettings = this.getLottieSettings();

    if ((_lottieSettings$sourc = lottieSettings.source_json) !== null && _lottieSettings$sourc !== void 0 && _lottieSettings$sourc.url && 'json' === lottieSettings.source_json.url.toLowerCase().substr(-4)) {
      return lottieSettings.source_json.url;
    } else if ((_lottieSettings$sourc2 = lottieSettings.source_external_url) !== null && _lottieSettings$sourc2 !== void 0 && _lottieSettings$sourc2.url) {
      return lottieSettings.source_external_url.url;
    } // Default animation path.


    return elementorProFrontend.config.lottie.defaultAnimationUrl;
  }

  setCaption() {
    const lottieSettings = this.getLottieSettings();

    if ('external_url' === lottieSettings.source || 'media_file' === lottieSettings.source && 'custom' === lottieSettings.caption_source) {
      const $captionElement = this.getCaptionElement();
      $captionElement.text(lottieSettings.caption);
    }
  }

  getCaptionElement() {
    if (!this.elements.$caption.length) {
      const {
        classes
      } = this.getSettings();
      this.elements.$caption = jQuery('<p>', {
        class: classes.caption
      });
      this.elements.$container.append(this.elements.$caption);
      return this.elements.$caption;
    }

    return this.elements.$caption;
  }

  setLottieEvents() {
    this.lottie.addEventListener('DOMLoaded', () => this.onLottieDomLoaded());
    this.lottie.addEventListener('complete', () => this.onComplete());
  }

  saveInitialValues() {
    var _lottieSettings$play_;

    const lottieSettings = this.getLottieSettings();
    /*
    These values of the animation are being changed during the animation runtime
    and saved in the lottie instance (and not in the state) for the instance expose in the frontend.
     */

    this.lottie.__initialTotalFrames = this.lottie.totalFrames;
    this.lottie.__initialFirstFrame = this.lottie.firstFrame;
    this.state.currentAnimationTrigger = lottieSettings.trigger;
    this.state.effectsRelativeTo = lottieSettings.effects_relative_to;
    this.state.viewportOffset.start = lottieSettings.viewport ? lottieSettings.viewport.sizes.start : 0;
    this.state.viewportOffset.end = lottieSettings.viewport ? lottieSettings.viewport.sizes.end : 100;
    this.state.animationSpeed = (_lottieSettings$play_ = lottieSettings.play_speed) === null || _lottieSettings$play_ === void 0 ? void 0 : _lottieSettings$play_.size;
    this.state.linkTimeout = lottieSettings.link_timeout;
    this.state.caption = lottieSettings.caption;
    this.state.loop = lottieSettings.loop;
  }

  setAnimationFirstFrame() {
    const frame = this.getAnimationFrames();
    /*
    We need to subtract the initial first frame from the first frame for handling scenarios
    when the animation first frame is not 0, this way we always get the relevant first frame.
    example: when start point is 70 and initial first frame is 60, the animation should start at 10.
     */

    frame.first = frame.first - this.lottie.__initialFirstFrame;
    this.lottie.goToAndStop(frame.first, true);
  }

  initAnimationTrigger() {
    const lottieSettings = this.getLottieSettings();

    switch (lottieSettings.trigger) {
      case 'none':
        this.playLottie();
        break;

      case 'arriving_to_viewport':
        this.playAnimationWhenArrivingToViewport();
        break;

      case 'bind_to_scroll':
        this.playAnimationWhenBindToScroll();
        break;

      case 'on_click':
        this.bindAnimationClickEvents();
        break;

      case 'on_hover':
        this.bindAnimationHoverEvents();
        break;
    }
  }

  playAnimationWhenArrivingToViewport() {
    const offset = this.getOffset();
    this.intersectionObservers.animation.observer = elementorModules.utils.Scroll.scrollObserver({
      offset: `${offset.end}% 0% ${offset.start}%`,
      callback: event => {
        if (event.isInViewport) {
          this.state.isInViewport = true;
          this.playLottie();
        } else {
          this.state.isInViewport = false;
          this.lottie.pause();
        }
      }
    });
    this.intersectionObservers.animation.element = this.elements.$widgetWrapper[0];
    this.intersectionObservers.animation.observer.observe(this.intersectionObservers.animation.element);
  }

  getOffset() {
    const lottieSettings = this.getLottieSettings(),
          start = -lottieSettings.viewport.sizes.start || 0,
          end = -(100 - lottieSettings.viewport.sizes.end) || 0;
    return {
      start,
      end
    };
  }

  playAnimationWhenBindToScroll() {
    const lottieSettings = this.getLottieSettings(),
          offset = this.getOffset(); // Generate scroll detection by Intersection Observer API

    this.intersectionObservers.animation.observer = elementorModules.utils.Scroll.scrollObserver({
      offset: `${offset.end}% 0% ${offset.start}%`,
      callback: event => this.onLottieIntersection(event)
    });
    this.intersectionObservers.animation.element = 'viewport' === lottieSettings.effects_relative_to ? this.elements.$widgetWrapper[0] : document.documentElement;
    this.intersectionObservers.animation.observer.observe(this.intersectionObservers.animation.element);
  }

  updateAnimationByScrollPosition() {
    const lottieSettings = this.getLottieSettings();
    let percentage;

    if ('page' === lottieSettings.effects_relative_to) {
      percentage = this.getLottiePagePercentage();
    } else if ('fixed' === this.getCurrentDeviceSetting('_position')) {
      percentage = this.getLottieViewportHeightPercentage();
    } else {
      percentage = this.getLottieViewportPercentage();
    }

    let nextFrameToPlay = this.getFrameNumberByPercent(percentage);
    nextFrameToPlay = nextFrameToPlay - this.lottie.__initialFirstFrame;
    this.lottie.goToAndStop(nextFrameToPlay, true);
  }

  getLottieViewportPercentage() {
    return elementorModules.utils.Scroll.getElementViewportPercentage(this.elements.$widgetWrapper, this.getOffset());
  }

  getLottiePagePercentage() {
    return elementorModules.utils.Scroll.getPageScrollPercentage(this.getOffset());
  }

  getLottieViewportHeightPercentage() {
    return elementorModules.utils.Scroll.getPageScrollPercentage(this.getOffset(), window.innerHeight);
  }
  /**
   * @param {number} percent - Percent value between 0-100
   */


  getFrameNumberByPercent(percent) {
    const frame = this.getAnimationFrames();
    /*
    In mobile devices the document height can be 'stretched' at the top and bottom points of the document,
    this 'stretched' will make percent to be either negative or larger than 100, therefore we need to limit percent between 0-100.
    */

    percent = Math.min(100, Math.max(0, percent)); // Getting frame number by percent of range, considering start/end frame values if exist.

    return frame.first + (frame.last - frame.first) * percent / 100;
  }

  getAnimationFrames() {
    const lottieSettings = this.getLottieSettings(),
          currentFrame = this.getAnimationCurrentFrame(),
          startPoint = this.getAnimationRange().start,
          endPoint = this.getAnimationRange().end;
    let firstFrame = this.lottie.__initialFirstFrame,
        lastFrame = 0 === this.lottie.__initialFirstFrame ? this.lottie.__initialTotalFrames : this.lottie.__initialFirstFrame + this.lottie.__initialTotalFrames; // Limiting min start point to animation first frame.

    if (startPoint && startPoint > firstFrame) {
      firstFrame = startPoint;
    } // limiting max end point to animation last frame.


    if (endPoint && endPoint < lastFrame) {
      lastFrame = endPoint;
    }
    /*
    Getting the relevant first frame after loop complete and when not bind to scroll.
    when the animation is in progress (no when a new loop start), the first frame should be the current frame.
    when the trigger is bind_to_scroll we DON'T need to get this functionality.
    */


    if (!this.state.isNewLoopCycle && 'bind_to_scroll' !== lottieSettings.trigger) {
      // When we have a custom start point, we need to check if the start point is larger than the last pause stop of the animation.
      firstFrame = startPoint && startPoint > currentFrame ? startPoint : currentFrame;
    } // Reverse Mode.


    if ('backward' === this.state.animationDirection && this.isReverseMode()) {
      firstFrame = currentFrame;
      lastFrame = startPoint && startPoint > this.lottie.__initialFirstFrame ? startPoint : this.lottie.__initialFirstFrame;
    }

    return {
      first: firstFrame,
      last: lastFrame,
      current: currentFrame,
      total: this.lottie.__initialTotalFrames
    };
  }

  getAnimationRange() {
    const lottieSettings = this.getLottieSettings();
    return {
      start: this.getInitialFrameNumberByPercent(lottieSettings.start_point.size),
      end: this.getInitialFrameNumberByPercent(lottieSettings.end_point.size)
    };
  }

  getInitialFrameNumberByPercent(percent) {
    percent = Math.min(100, Math.max(0, percent));
    return this.lottie.__initialFirstFrame + (this.lottie.__initialTotalFrames - this.lottie.__initialFirstFrame) * percent / 100;
  }

  getAnimationCurrentFrame() {
    // When pausing the animation (when out of viewport) the first frame of the animation changes.
    return 0 === this.lottie.firstFrame ? this.lottie.currentFrame : this.lottie.firstFrame + this.lottie.currentFrame;
  }

  setLinkTimeout() {
    var _lottieSettings$custo;

    const lottieSettings = this.getLottieSettings();

    if ('on_click' === lottieSettings.trigger && (_lottieSettings$custo = lottieSettings.custom_link) !== null && _lottieSettings$custo !== void 0 && _lottieSettings$custo.url && lottieSettings.link_timeout) {
      this.elements.$containerLink.on('click', event => {
        event.preventDefault();

        if (!this.isEdit) {
          setTimeout(() => {
            const tabTarget = 'on' === lottieSettings.custom_link.is_external ? '_blank' : '_self';
            window.open(lottieSettings.custom_link.url, tabTarget);
          }, lottieSettings.link_timeout);
        }
      });
    }
  }

  bindAnimationClickEvents() {
    this.listeners.elements.$container.triggerAnimationClick = () => {
      this.playLottie();
    };

    this.addSessionEventListener(this.elements.$container, 'click', this.listeners.elements.$container.triggerAnimationClick);
  }

  getLottieSettings() {
    const lottieSettings = this.getElementSettings();
    return { ...lottieSettings,
      lazyload: 'yes' === lottieSettings.lazyload,
      loop: 'yes' === lottieSettings.loop
    };
  }

  playLottie() {
    const frame = this.getAnimationFrames();
    this.lottie.stop();
    this.lottie.playSegments([frame.first, frame.last], true); // We reset the loop cycle state after playing the animation.

    this.state.isNewLoopCycle = false;
  }

  bindAnimationHoverEvents() {
    this.createAnimationHoverInEvents();
    this.createAnimationHoverOutEvents();
  }

  createAnimationHoverInEvents() {
    const lottieSettings = this.getLottieSettings(),
          $widgetArea = this.getHoverAreaElement();
    this.state.hoverArea = lottieSettings.hover_area;

    this.listeners.elements.$widgetArea.triggerAnimationHoverIn = () => {
      this.state.animationDirection = 'forward';
      this.playLottie();
    };

    this.addSessionEventListener($widgetArea, 'mouseenter', this.listeners.elements.$widgetArea.triggerAnimationHoverIn);
  }
  /**
   * @param {jQuery} $el
   * @param {string} event - event type
   * @param {Function} callback
   */


  addSessionEventListener($el, event, callback) {
    $el.on(event, callback);
    this.listeners.collection.push({
      $el,
      event,
      callback
    });
  }

  createAnimationHoverOutEvents() {
    const lottieSettings = this.getLottieSettings(),
          $widgetArea = this.getHoverAreaElement();

    if ('pause' === lottieSettings.on_hover_out || 'reverse' === lottieSettings.on_hover_out) {
      this.state.hoverOutMode = lottieSettings.on_hover_out;

      this.listeners.elements.$widgetArea.triggerAnimationHoverOut = () => {
        if ('pause' === lottieSettings.on_hover_out) {
          this.lottie.pause();
        } else {
          this.state.animationDirection = 'backward';
          this.playLottie();
        }
      };

      this.addSessionEventListener($widgetArea, 'mouseleave', this.listeners.elements.$widgetArea.triggerAnimationHoverOut);
    }
  }

  getHoverAreaElement() {
    const lottieSettings = this.getLottieSettings();

    if ('section' === lottieSettings.hover_area) {
      return this.elements.$sectionParent;
    } else if ('column' === lottieSettings.hover_area) {
      return this.elements.$columnParent;
    }

    return this.elements.$container;
  }

  setLoopOnAnimationComplete() {
    const lottieSettings = this.getLottieSettings();
    this.state.isNewLoopCycle = true;

    if (lottieSettings.loop && !this.isReverseMode()) {
      this.setLoopWhenNotReverse();
    } else if (lottieSettings.loop && this.isReverseMode()) {
      this.setReverseAnimationOnLoop();
    } else if (!lottieSettings.loop && this.isReverseMode()) {
      this.setReverseAnimationOnSingleTrigger();
    }
  }

  isReverseMode() {
    const lottieSettings = this.getLottieSettings();
    return 'yes' === lottieSettings.reverse_animation || 'reverse' === lottieSettings.on_hover_out && 'backward' === this.state.animationDirection;
  }

  setLoopWhenNotReverse() {
    const lottieSettings = this.getLottieSettings();

    if (lottieSettings.number_of_times > 0) {
      this.state.playAnimationCount++;

      if (this.state.playAnimationCount < lottieSettings.number_of_times) {
        this.playLottie();
      } else {
        this.state.playAnimationCount = 0;
      }
    } else {
      this.playLottie();
    }
  }

  setReverseAnimationOnLoop() {
    const lottieSettings = this.getLottieSettings();
    /*
    We trigger the reverse animation:
    either when we don't have any value in the 'Number of Times" field, and then it will be an infinite forward/backward loop,
    or, when we have a value in the 'Number of Times" field and then we need to limit the number of times of the loop cycles.
     */

    if (!lottieSettings.number_of_times || this.state.playAnimationCount < lottieSettings.number_of_times) {
      this.state.animationDirection = 'forward' === this.state.animationDirection ? 'backward' : 'forward';
      this.playLottie();
      /*
      We need to increment the count only on the backward movements,
      because forward movement + backward movement are equal together to one full movement count.
      */

      if ('backward' === this.state.animationDirection) {
        this.state.playAnimationCount++;
      }
    } else {
      // Reset the values for the loop counting for the next trigger.
      this.state.playAnimationCount = 0;
      this.state.animationDirection = 'forward';
    }
  }

  setReverseAnimationOnSingleTrigger() {
    if (this.state.playAnimationCount < 1) {
      this.state.playAnimationCount++;
      this.state.animationDirection = 'backward';
      this.playLottie();
    } else if (this.state.playAnimationCount >= 1 && 'forward' === this.state.animationDirection) {
      this.state.animationDirection = 'backward';
      this.playLottie();
    } else {
      this.state.playAnimationCount = 0;
      this.state.animationDirection = 'forward';
    }
  }

  setAnimationSpeed() {
    const lottieSettings = this.getLottieSettings();

    if (lottieSettings.play_speed) {
      this.lottie.setSpeed(lottieSettings.play_speed.size);
    }
  }

  onElementChange() {
    this.updateLottieValues();
    this.resetAnimationTrigger();
  }

  updateLottieValues() {
    var _lottieSettings$play_2;

    const lottieSettings = this.getLottieSettings(),
          valuesComparison = [{
      sourceVal: (_lottieSettings$play_2 = lottieSettings.play_speed) === null || _lottieSettings$play_2 === void 0 ? void 0 : _lottieSettings$play_2.size,
      stateProp: 'animationSpeed',
      callback: () => this.setAnimationSpeed()
    }, {
      sourceVal: lottieSettings.link_timeout,
      stateProp: 'linkTimeout',
      callback: () => this.setLinkTimeout()
    }, {
      sourceVal: lottieSettings.caption,
      stateProp: 'caption',
      callback: () => this.setCaption()
    }, {
      sourceVal: lottieSettings.effects_relative_to,
      stateProp: 'effectsRelativeTo',
      callback: () => this.updateAnimationByScrollPosition()
    }, {
      sourceVal: lottieSettings.loop,
      stateProp: 'loop',
      callback: () => this.onLoopStateChange()
    }];
    valuesComparison.forEach(item => {
      if ('undefined' !== typeof item.sourceVal && item.sourceVal !== this.state[item.stateProp]) {
        this.state[item.stateProp] = item.sourceVal;
        item.callback();
      }
    });
  }

  onLoopStateChange() {
    const isInActiveViewportMode = 'arriving_to_viewport' === this.state.currentAnimationTrigger && this.state.isInViewport;

    if (this.state.loop && (isInActiveViewportMode || 'none' === this.state.currentAnimationTrigger)) {
      this.playLottie();
    }
  }

  resetAnimationTrigger() {
    const lottieSettings = this.getLottieSettings(),
          isTriggerChange = lottieSettings.trigger !== this.state.currentAnimationTrigger,
          isViewportOffsetChange = lottieSettings.viewport ? this.isViewportOffsetChange() : false,
          isHoverOutModeChange = lottieSettings.on_hover_out ? this.isHoverOutModeChange() : false,
          isHoverAreaChange = lottieSettings.hover_area ? this.isHoverAreaChange() : false;

    if (isTriggerChange || isViewportOffsetChange || isHoverOutModeChange || isHoverAreaChange) {
      this.removeAnimationFrameRequests();
      this.removeObservers();
      this.removeEventListeners();
      this.initAnimationTrigger();
    }
  }

  isViewportOffsetChange() {
    const lottieSettings = this.getLottieSettings(),
          isStartOffsetChange = lottieSettings.viewport.sizes.start !== this.state.viewportOffset.start,
          isEndOffsetChange = lottieSettings.viewport.sizes.end !== this.state.viewportOffset.end;
    return isStartOffsetChange || isEndOffsetChange;
  }

  isHoverOutModeChange() {
    const lottieSettings = this.getLottieSettings();
    return lottieSettings.on_hover_out !== this.state.hoverOutMode;
  }

  isHoverAreaChange() {
    const lottieSettings = this.getLottieSettings();
    return lottieSettings.hover_area !== this.state.hoverArea;
  }

  removeEventListeners() {
    this.listeners.collection.forEach(listener => {
      listener.$el.off(listener.event, null, listener.callback);
    });
  }

  removeObservers() {
    // Removing all observers.
    for (const type in this.intersectionObservers) {
      if (this.intersectionObservers[type].observer && this.intersectionObservers[type].element) {
        this.intersectionObservers[type].observer.unobserve(this.intersectionObservers[type].element);
      }
    }
  }

  removeAnimationFrameRequests() {
    cancelAnimationFrame(this.animationFrameRequest.timer);
  }

  onDestroy() {
    super.onDestroy();
    this.destroyLottie();
  }

  destroyLottie() {
    this.removeAnimationFrameRequests();
    this.removeObservers();
    this.removeEventListeners();
    this.elements.$animation.removeData('lottie');

    if (this.lottie) {
      this.lottie.destroy();
    }
  }

  onLottieDomLoaded() {
    this.saveInitialValues();
    this.setAnimationSpeed();
    this.setLinkTimeout();
    this.setCaption();
    this.setAnimationFirstFrame();
    this.initAnimationTrigger();
  }

  onComplete() {
    this.setLoopOnAnimationComplete();
  }

  onLottieIntersection(event) {
    if (event.isInViewport) {
      /*
      It's required to update the animation progress on first load when lottie is inside the viewport on load
      but, there is a problem when the browser is refreshed when the scroll bar is not in 0 position,
      in this scenario, after the refresh the browser will trigger 2 scroll events
      one trigger on immediate load and second after a f ew ms to move the scroll bar to previous position (before refresh)
      therefore, we use the this.state.isAnimationScrollUpdateNeededOnFirstLoad flag
      to make sure that this.updateAnimationByScrollPosition() function will be triggered only once.
       */
      if (this.state.isAnimationScrollUpdateNeededOnFirstLoad) {
        this.state.isAnimationScrollUpdateNeededOnFirstLoad = false;
        this.updateAnimationByScrollPosition();
      }

      this.animationFrameRequest.timer = requestAnimationFrame(() => this.onAnimationFrameRequest());
    } else {
      const frame = this.getAnimationFrames(),
            finalFrame = 'up' === event.intersectionScrollDirection ? frame.first : frame.last;
      this.state.isAnimationScrollUpdateNeededOnFirstLoad = false;
      cancelAnimationFrame(this.animationFrameRequest.timer); // Set the animation values to min/max when out of viewport.

      this.lottie.goToAndStop(finalFrame, true);
    }
  }

  onAnimationFrameRequest() {
    // Making calculation only when there is a change with the scroll position.
    if (window.scrollY !== this.animationFrameRequest.lastScrollY) {
      this.updateAnimationByScrollPosition();
      this.animationFrameRequest.lastScrollY = window.scrollY;
    }

    this.animationFrameRequest.timer = requestAnimationFrame(() => this.onAnimationFrameRequest());
  }

}

exports.default = lottieHandler;

/***/ }),

/***/ "../modules/nav-menu/assets/js/frontend/frontend-legacy.js":
/*!*****************************************************************!*\
  !*** ../modules/nav-menu/assets/js/frontend/frontend-legacy.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _navMenu = _interopRequireDefault(__webpack_require__(/*! ./handlers/nav-menu */ "../modules/nav-menu/assets/js/frontend/handlers/nav-menu.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();

    if (jQuery.fn.smartmenus) {
      // Override the default stupid detection
      jQuery.SmartMenus.prototype.isCSSOn = function () {
        return true;
      };

      if (elementorFrontend.config.is_rtl) {
        jQuery.fn.smartmenus.defaults.rightToLeftSubMenus = true;
      }
    }

    elementorFrontend.elementsHandler.attachHandler('nav-menu', _navMenu.default);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/nav-menu/assets/js/frontend/handlers/nav-menu.js":
/*!*******************************************************************!*\
  !*** ../modules/nav-menu/assets/js/frontend/handlers/nav-menu.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  stretchElement: null,

  getDefaultSettings() {
    return {
      selectors: {
        menu: '.elementor-nav-menu',
        anchorLink: '.elementor-nav-menu--main .elementor-item-anchor',
        dropdownMenu: '.elementor-nav-menu__container.elementor-nav-menu--dropdown',
        menuToggle: '.elementor-menu-toggle'
      }
    };
  },

  getDefaultElements() {
    var selectors = this.getSettings('selectors'),
        elements = {};
    elements.$menu = this.$element.find(selectors.menu);
    elements.$anchorLink = this.$element.find(selectors.anchorLink);
    elements.$dropdownMenu = this.$element.find(selectors.dropdownMenu);
    elements.$dropdownMenuFinalItems = elements.$dropdownMenu.find('.menu-item:not(.menu-item-has-children) > a');
    elements.$menuToggle = this.$element.find(selectors.menuToggle);
    elements.$links = elements.$dropdownMenu.find('a.elementor-item');
    return elements;
  },

  bindEvents() {
    if (!this.elements.$menu.length) {
      return;
    }

    this.elements.$menuToggle.on('click', this.toggleMenu.bind(this));

    if (this.getElementSettings('full_width')) {
      this.elements.$dropdownMenuFinalItems.on('click', this.toggleMenu.bind(this, false));
    }

    elementorFrontend.addListenerOnce(this.$element.data('model-cid'), 'resize', this.stretchMenu);
  },

  initStretchElement() {
    this.stretchElement = new elementorModules.frontend.tools.StretchElement({
      element: this.elements.$dropdownMenu
    });
  },

  toggleNavLinksTabIndex(enabled = true) {
    this.elements.$links.attr('tabindex', enabled ? 0 : -1);
  },

  toggleMenu(show) {
    var isDropdownVisible = this.elements.$menuToggle.hasClass('elementor-active');

    if ('boolean' !== typeof show) {
      show = !isDropdownVisible;
    }

    this.elements.$menuToggle.attr('aria-expanded', show);
    this.elements.$dropdownMenu.attr('aria-hidden', !show);
    this.elements.$menuToggle.toggleClass('elementor-active', show);
    this.toggleNavLinksTabIndex(show);

    if (show && this.getElementSettings('full_width')) {
      this.stretchElement.stretch();
    }
  },

  followMenuAnchors() {
    var self = this;
    self.elements.$anchorLink.each(function () {
      if (location.pathname === this.pathname && '' !== this.hash) {
        self.followMenuAnchor(jQuery(this));
      }
    });
  },

  followMenuAnchor($element) {
    const anchorSelector = $element[0].hash;
    let offset = -300,
        $anchor;

    try {
      // `decodeURIComponent` for UTF8 characters in the hash.
      $anchor = jQuery(decodeURIComponent(anchorSelector));
    } catch (e) {
      return;
    }

    if (!$anchor.length) {
      return;
    }

    if (!$anchor.hasClass('elementor-menu-anchor')) {
      var halfViewport = jQuery(window).height() / 2;
      offset = -$anchor.outerHeight() + halfViewport;
    }

    elementorFrontend.waypoint($anchor, function (direction) {
      if ('down' === direction) {
        $element.addClass('elementor-item-active');
      } else {
        $element.removeClass('elementor-item-active');
      }
    }, {
      offset: '50%',
      triggerOnce: false
    });
    elementorFrontend.waypoint($anchor, function (direction) {
      if ('down' === direction) {
        $element.removeClass('elementor-item-active');
      } else {
        $element.addClass('elementor-item-active');
      }
    }, {
      offset,
      triggerOnce: false
    });
  },

  stretchMenu() {
    if (this.getElementSettings('full_width')) {
      this.stretchElement.stretch();
      this.elements.$dropdownMenu.css('top', this.elements.$menuToggle.outerHeight());
    } else {
      this.stretchElement.reset();
    }
  },

  onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);

    if (!this.elements.$menu.length) {
      return;
    }

    const elementSettings = this.getElementSettings(),
          iconValue = elementSettings.submenu_icon.value;
    let subIndicatorsContent = '';

    if (iconValue) {
      // The value of iconValue can be either className inside the editor or a markup in the frontend.
      subIndicatorsContent = iconValue.indexOf('<') > -1 ? iconValue : `<i class="${iconValue}"></i>`;
    } // subIndicators param - Added for backwards compatibility:
    // If the old 'indicator' control value = 'none', the <span class="sub-arrow"> wrapper element is removed


    this.elements.$menu.smartmenus({
      subIndicators: '' !== subIndicatorsContent,
      subIndicatorsText: subIndicatorsContent,
      subIndicatorsPos: 'append',
      subMenusMaxWidth: '1000px'
    });
    this.initStretchElement();
    this.stretchMenu();

    if (!elementorFrontend.isEditMode()) {
      this.followMenuAnchors();
    }
  },

  onElementChange(propertyName) {
    if ('full_width' === propertyName) {
      this.stretchMenu();
    }
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/document.js":
/*!*******************************************************!*\
  !*** ../modules/popup/assets/js/frontend/document.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _triggers = _interopRequireDefault(__webpack_require__(/*! ./triggers */ "../modules/popup/assets/js/frontend/triggers.js"));

var _timing = _interopRequireDefault(__webpack_require__(/*! ./timing */ "../modules/popup/assets/js/frontend/timing.js"));

var _eIcons = __webpack_require__(/*! @elementor-pro/e-icons */ "../assets/dev/js/frontend/utils/icons/e-icons.js");

// Temporary solution, when core 3.5.0 will be the minimum version, is should be replaced with @elementor/e-icons.
class _default extends elementorModules.frontend.Document {
  bindEvents() {
    const openSelector = this.getDocumentSettings('open_selector');

    if (openSelector) {
      elementorFrontend.elements.$body.on('click', openSelector, this.showModal.bind(this));
    }
  }

  startTiming() {
    const timing = new _timing.default(this.getDocumentSettings('timing'), this);

    if (timing.check()) {
      this.initTriggers();
    }
  }

  initTriggers() {
    this.triggers = new _triggers.default(this.getDocumentSettings('triggers'), this);
  }

  showModal(avoidMultiple) {
    const settings = this.getDocumentSettings();

    if (!this.isEdit) {
      if (!elementorFrontend.isWPPreviewMode()) {
        if (this.getStorage('disable')) {
          return;
        }

        if (avoidMultiple && elementorProFrontend.modules.popup.popupPopped && settings.avoid_multiple_popups) {
          return;
        }
      } // A clean copy of the element without previous initializations and events


      this.$element = jQuery(this.elementHTML);
      this.elements.$elements = this.$element.find(this.getSettings('selectors.elements'));
    }

    const modal = this.getModal(),
          $closeButton = modal.getElements('closeButton');
    modal.setMessage(this.$element).show();

    if (!this.isEdit) {
      if (settings.close_button_delay) {
        $closeButton.hide();
        clearTimeout(this.closeButtonTimeout);
        this.closeButtonTimeout = setTimeout(() => $closeButton.show(), settings.close_button_delay * 1000);
      }

      super.runElementsHandlers();
    }

    this.setEntranceAnimation();

    if (!settings.timing || !settings.timing.times_count) {
      this.countTimes();
    }

    elementorProFrontend.modules.popup.popupPopped = true;
  }

  setEntranceAnimation() {
    const $widgetContent = this.getModal().getElements('widgetContent'),
          settings = this.getDocumentSettings(),
          newAnimation = elementorFrontend.getCurrentDeviceSetting(settings, 'entrance_animation');

    if (this.currentAnimation) {
      $widgetContent.removeClass(this.currentAnimation);
    }

    this.currentAnimation = newAnimation;

    if (!newAnimation) {
      return;
    }

    const animationDuration = settings.entrance_animation_duration.size;
    $widgetContent.addClass(newAnimation);
    setTimeout(() => $widgetContent.removeClass(newAnimation), animationDuration * 1000);
  }

  setExitAnimation() {
    const modal = this.getModal(),
          settings = this.getDocumentSettings(),
          $widgetContent = modal.getElements('widgetContent'),
          newAnimation = elementorFrontend.getCurrentDeviceSetting(settings, 'exit_animation'),
          animationDuration = newAnimation ? settings.entrance_animation_duration.size : 0;
    setTimeout(() => {
      if (newAnimation) {
        $widgetContent.removeClass(newAnimation + ' reverse');
      }

      if (!this.isEdit) {
        this.$element.remove();
        modal.getElements('widget').hide();
      }
    }, animationDuration * 1000);

    if (newAnimation) {
      $widgetContent.addClass(newAnimation + ' reverse');
    }
  }

  initModal() {
    let modal;

    this.getModal = () => {
      if (!modal) {
        const settings = this.getDocumentSettings(),
              id = this.getSettings('id'),
              triggerPopupEvent = eventType => elementorFrontend.elements.$document.trigger('elementor/popup/' + eventType, [id, this]);

        let classes = 'elementor-popup-modal';

        if (settings.classes) {
          classes += ' ' + settings.classes;
        }

        const modalProperties = {
          id: 'elementor-popup-modal-' + id,
          className: classes,
          closeButton: true,
          preventScroll: settings.prevent_scroll,
          onShow: () => triggerPopupEvent('show'),
          onHide: () => triggerPopupEvent('hide'),
          effects: {
            hide: () => {
              if (settings.timing && settings.timing.times_count) {
                this.countTimes();
              }

              this.setExitAnimation();
            },
            show: 'show'
          },
          hide: {
            auto: !!settings.close_automatically,
            autoDelay: settings.close_automatically * 1000,
            onBackgroundClick: !settings.prevent_close_on_background_click,
            onOutsideClick: !settings.prevent_close_on_background_click,
            onEscKeyPress: !settings.prevent_close_on_esc_key,
            ignore: '.flatpickr-calendar'
          },
          position: {
            enable: false
          }
        };

        if (elementorFrontend.config.experimentalFeatures.e_font_icon_svg) {
          modalProperties.closeButtonOptions = {
            iconElement: _eIcons.close.element
          };
        } // This line should be moved to the condition above, as an 'else' case, once the core minimum version is 3.5.0.


        modalProperties.closeButtonClass = 'eicon-close';
        modal = elementorFrontend.getDialogsManager().createWidget('lightbox', modalProperties);
        modal.getElements('widgetContent').addClass('animated');
        const $closeButton = modal.getElements('closeButton');

        if (this.isEdit) {
          $closeButton.off('click');

          modal.hide = () => {};
        }

        this.setCloseButtonPosition();
      }

      return modal;
    };
  }

  setCloseButtonPosition() {
    const modal = this.getModal(),
          closeButtonPosition = this.getDocumentSettings('close_button_position'),
          $closeButton = modal.getElements('closeButton');
    $closeButton.appendTo(modal.getElements('outside' === closeButtonPosition ? 'widget' : 'widgetContent'));
  }

  disable() {
    this.setStorage('disable', true);
  }

  setStorage(key, value, options) {
    elementorFrontend.storage.set(`popup_${this.getSettings('id')}_${key}`, value, options);
  }

  getStorage(key, options) {
    return elementorFrontend.storage.get(`popup_${this.getSettings('id')}_${key}`, options);
  }

  countTimes() {
    const displayTimes = this.getStorage('times') || 0;
    this.setStorage('times', displayTimes + 1);
  }

  runElementsHandlers() {}

  async onInit() {
    super.onInit(); // In case that the library was not loaded, it indicates a Core version that enables dynamic loading.

    if (!window.DialogsManager) {
      await elementorFrontend.utils.assetsLoader.load('script', 'dialog');
    }

    this.initModal();

    if (this.isEdit) {
      this.showModal();
      return;
    }

    this.$element.show().remove();
    this.elementHTML = this.$element[0].outerHTML;

    if (elementorFrontend.isEditMode()) {
      return;
    }

    if (elementorFrontend.isWPPreviewMode() && elementorFrontend.config.post.id === this.getSettings('id')) {
      this.showModal();
      return;
    }

    this.startTiming();
  }

  onSettingsChange(model) {
    const changedKey = Object.keys(model.changed)[0];

    if (-1 !== changedKey.indexOf('entrance_animation')) {
      this.setEntranceAnimation();
    }

    if ('exit_animation' === changedKey) {
      this.setExitAnimation();
    }

    if ('close_button_position' === changedKey) {
      this.setCloseButtonPosition();
    }
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/frontend-legacy.js":
/*!**************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/frontend-legacy.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _document = _interopRequireDefault(__webpack_require__(/*! ./document */ "../modules/popup/assets/js/frontend/document.js"));

var _formsAction = _interopRequireDefault(__webpack_require__(/*! ./handlers/forms-action */ "../modules/popup/assets/js/frontend/handlers/forms-action.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.hooks.addAction('elementor/frontend/documents-manager/init-classes', this.addDocumentClass);
    elementorFrontend.elementsHandler.attachHandler('form', _formsAction.default);
    elementorFrontend.on('components:init', () => this.onFrontendComponentsInit());

    if (!elementorFrontend.isEditMode() && !elementorFrontend.isWPPreviewMode()) {
      this.setViewsAndSessions();
    }
  }

  addDocumentClass(documentsManager) {
    documentsManager.addDocumentClass('popup', _document.default);
  }

  setViewsAndSessions() {
    const pageViews = elementorFrontend.storage.get('pageViews') || 0;
    elementorFrontend.storage.set('pageViews', pageViews + 1);
    const activeSession = elementorFrontend.storage.get('activeSession', {
      session: true
    });

    if (!activeSession) {
      elementorFrontend.storage.set('activeSession', true, {
        session: true
      });
      const sessions = elementorFrontend.storage.get('sessions') || 0;
      elementorFrontend.storage.set('sessions', sessions + 1);
    }
  }

  showPopup(settings) {
    const popup = elementorFrontend.documentsManager.documents[settings.id];

    if (!popup) {
      return;
    }

    const modal = popup.getModal();

    if (settings.toggle && modal.isVisible()) {
      modal.hide();
    } else {
      popup.showModal();
    }
  }

  closePopup(settings, event) {
    const popupID = jQuery(event.target).parents('[data-elementor-type="popup"]').data('elementorId');

    if (!popupID) {
      return;
    }

    const document = elementorFrontend.documentsManager.documents[popupID];
    document.getModal().hide();

    if (settings.do_not_show_again) {
      document.disable();
    }
  }

  onFrontendComponentsInit() {
    elementorFrontend.utils.urlActions.addAction('popup:open', settings => this.showPopup(settings));
    elementorFrontend.utils.urlActions.addAction('popup:close', (settings, event) => this.closePopup(settings, event));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/handlers/forms-action.js":
/*!********************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/handlers/forms-action.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  getDefaultSettings() {
    return {
      selectors: {
        form: '.elementor-form'
      }
    };
  },

  getDefaultElements() {
    var selectors = this.getSettings('selectors'),
        elements = {};
    elements.$form = this.$element.find(selectors.form);
    return elements;
  },

  bindEvents() {
    this.elements.$form.on('submit_success', this.handleFormAction);
  },

  handleFormAction(event, response) {
    if ('undefined' === typeof response.data.popup) {
      return;
    }

    const popupSettings = response.data.popup;

    if ('open' === popupSettings.action) {
      return elementorProFrontend.modules.popup.showPopup(popupSettings);
    }

    setTimeout(() => {
      return elementorProFrontend.modules.popup.closePopup(popupSettings, event);
    }, 1000);
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing.js":
/*!*****************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing.js ***!
  \*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _pageViews = _interopRequireDefault(__webpack_require__(/*! ./timing/page-views */ "../modules/popup/assets/js/frontend/timing/page-views.js"));

var _sessions = _interopRequireDefault(__webpack_require__(/*! ./timing/sessions */ "../modules/popup/assets/js/frontend/timing/sessions.js"));

var _url = _interopRequireDefault(__webpack_require__(/*! ./timing/url */ "../modules/popup/assets/js/frontend/timing/url.js"));

var _sources = _interopRequireDefault(__webpack_require__(/*! ./timing/sources */ "../modules/popup/assets/js/frontend/timing/sources.js"));

var _loggedIn = _interopRequireDefault(__webpack_require__(/*! ./timing/logged-in */ "../modules/popup/assets/js/frontend/timing/logged-in.js"));

var _devices = _interopRequireDefault(__webpack_require__(/*! ./timing/devices */ "../modules/popup/assets/js/frontend/timing/devices.js"));

var _times = _interopRequireDefault(__webpack_require__(/*! ./timing/times */ "../modules/popup/assets/js/frontend/timing/times.js"));

var _browsers = _interopRequireDefault(__webpack_require__(/*! ./timing/browsers */ "../modules/popup/assets/js/frontend/timing/browsers.js"));

class _default extends elementorModules.Module {
  constructor(settings, document) {
    super(settings);
    this.document = document;
    this.timingClasses = {
      page_views: _pageViews.default,
      sessions: _sessions.default,
      url: _url.default,
      sources: _sources.default,
      logged_in: _loggedIn.default,
      devices: _devices.default,
      times: _times.default,
      browsers: _browsers.default
    };
  }

  check() {
    const settings = this.getSettings();
    let checkPassed = true;
    jQuery.each(this.timingClasses, (key, TimingClass) => {
      if (!settings[key]) {
        return;
      }

      const timing = new TimingClass(settings, this.document);

      if (!timing.check()) {
        checkPassed = false;
      }
    });
    return checkPassed;
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/base.js":
/*!**********************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/base.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor(settings, document) {
    super(settings);
    this.document = document;
  }

  getTimingSetting(settingKey) {
    return this.getSettings(this.getName() + '_' + settingKey);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/browsers.js":
/*!**************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/browsers.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));

class _default extends _base.default {
  getName() {
    return 'browsers';
  }

  check() {
    if ('all' === this.getTimingSetting('browsers')) {
      return true;
    }

    const targetedBrowsers = this.getTimingSetting('browsers_options'),
          browserDetectionFlags = elementorFrontend.utils.environment;
    return targetedBrowsers.some(browserName => browserDetectionFlags[browserName]);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/devices.js":
/*!*************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/devices.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));

class _default extends _base.default {
  getName() {
    return 'devices';
  }

  check() {
    return -1 !== this.getTimingSetting('devices').indexOf(elementorFrontend.getCurrentDeviceMode());
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/logged-in.js":
/*!***************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/logged-in.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));

class _default extends _base.default {
  getName() {
    return 'logged_in';
  }

  check() {
    const userConfig = elementorFrontend.config.user;

    if (!userConfig) {
      return true;
    }

    if ('all' === this.getTimingSetting('users')) {
      return false;
    }

    const userRolesInHideList = this.getTimingSetting('roles').filter(role => -1 !== userConfig.roles.indexOf(role));
    return !userRolesInHideList.length;
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/page-views.js":
/*!****************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/page-views.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));

class _default extends _base.default {
  getName() {
    return 'page_views';
  }

  check() {
    const pageViews = elementorFrontend.storage.get('pageViews'),
          name = this.getName();
    let initialPageViews = this.document.getStorage(name + '_initialPageViews');

    if (!initialPageViews) {
      this.document.setStorage(name + '_initialPageViews', pageViews);
      initialPageViews = pageViews;
    }

    return pageViews - initialPageViews >= this.getTimingSetting('views');
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/sessions.js":
/*!**************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/sessions.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));

class _default extends _base.default {
  getName() {
    return 'sessions';
  }

  check() {
    const sessions = elementorFrontend.storage.get('sessions'),
          name = this.getName();
    let initialSessions = this.document.getStorage(name + '_initialSessions');

    if (!initialSessions) {
      this.document.setStorage(name + '_initialSessions', sessions);
      initialSessions = sessions;
    }

    return sessions - initialSessions >= this.getTimingSetting('sessions');
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/sources.js":
/*!*************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/sources.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));

class _default extends _base.default {
  getName() {
    return 'sources';
  }

  check() {
    const sources = this.getTimingSetting('sources');

    if (3 === sources.length) {
      return true;
    }

    const referrer = document.referrer.replace(/https?:\/\/(?:www\.)?/, ''),
          isInternal = 0 === referrer.indexOf(location.host.replace('www.', ''));

    if (isInternal) {
      return -1 !== sources.indexOf('internal');
    }

    if (-1 !== sources.indexOf('external')) {
      return true;
    }

    if (-1 !== sources.indexOf('search')) {
      return /^(google|yahoo|bing|yandex|baidu)\./.test(referrer);
    }

    return false;
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/times.js":
/*!***********************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/times.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));

class _default extends _base.default {
  getName() {
    return 'times';
  }

  check() {
    const displayTimes = this.document.getStorage('times') || 0;
    return this.getTimingSetting('times') > displayTimes;
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/url.js":
/*!*********************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/url.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));

class _default extends _base.default {
  getName() {
    return 'url';
  }

  check() {
    const url = this.getTimingSetting('url'),
          action = this.getTimingSetting('action'),
          referrer = document.referrer;

    if ('regex' !== action) {
      return 'hide' === action ^ -1 !== referrer.indexOf(url);
    }

    let regexp;

    try {
      regexp = new RegExp(url);
    } catch (e) {
      return false;
    }

    return regexp.test(referrer);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/triggers.js":
/*!*******************************************************!*\
  !*** ../modules/popup/assets/js/frontend/triggers.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _pageLoad = _interopRequireDefault(__webpack_require__(/*! ./triggers/page-load */ "../modules/popup/assets/js/frontend/triggers/page-load.js"));

var _scrolling = _interopRequireDefault(__webpack_require__(/*! ./triggers/scrolling */ "../modules/popup/assets/js/frontend/triggers/scrolling.js"));

var _scrollingTo = _interopRequireDefault(__webpack_require__(/*! ./triggers/scrolling-to */ "../modules/popup/assets/js/frontend/triggers/scrolling-to.js"));

var _click = _interopRequireDefault(__webpack_require__(/*! ./triggers/click */ "../modules/popup/assets/js/frontend/triggers/click.js"));

var _inactivity = _interopRequireDefault(__webpack_require__(/*! ./triggers/inactivity */ "../modules/popup/assets/js/frontend/triggers/inactivity.js"));

var _exitIntent = _interopRequireDefault(__webpack_require__(/*! ./triggers/exit-intent */ "../modules/popup/assets/js/frontend/triggers/exit-intent.js"));

class _default extends elementorModules.Module {
  constructor(settings, document) {
    super(settings);
    this.document = document;
    this.triggers = [];
    this.triggerClasses = {
      page_load: _pageLoad.default,
      scrolling: _scrolling.default,
      scrolling_to: _scrollingTo.default,
      click: _click.default,
      inactivity: _inactivity.default,
      exit_intent: _exitIntent.default
    };
    this.runTriggers();
  }

  runTriggers() {
    const settings = this.getSettings();
    jQuery.each(this.triggerClasses, (key, TriggerClass) => {
      if (!settings[key]) {
        return;
      }

      const trigger = new TriggerClass(settings, () => this.onTriggerFired());
      trigger.run();
      this.triggers.push(trigger);
    });
  }

  destroyTriggers() {
    this.triggers.forEach(trigger => trigger.destroy());
    this.triggers = [];
  }

  onTriggerFired() {
    this.document.showModal(true);
    this.destroyTriggers();
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/triggers/base.js":
/*!************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/triggers/base.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor(settings, callback) {
    super(settings);
    this.callback = callback;
  }

  getTriggerSetting(settingKey) {
    return this.getSettings(this.getName() + '_' + settingKey);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/triggers/click.js":
/*!*************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/triggers/click.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));

class _default extends _base.default {
  constructor(...args) {
    super(...args);
    this.checkClick = this.checkClick.bind(this);
    this.clicksCount = 0;
  }

  getName() {
    return 'click';
  }

  checkClick() {
    this.clicksCount++;

    if (this.clicksCount === this.getTriggerSetting('times')) {
      this.callback();
    }
  }

  run() {
    elementorFrontend.elements.$body.on('click', this.checkClick);
  }

  destroy() {
    elementorFrontend.elements.$body.off('click', this.checkClick);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/triggers/exit-intent.js":
/*!*******************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/triggers/exit-intent.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));

class _default extends _base.default {
  constructor(...args) {
    super(...args);
    this.detectExitIntent = this.detectExitIntent.bind(this);
  }

  getName() {
    return 'exit_intent';
  }

  detectExitIntent(event) {
    if (event.clientY <= 0) {
      this.callback();
    }
  }

  run() {
    elementorFrontend.elements.$window.on('mouseleave', this.detectExitIntent);
  }

  destroy() {
    elementorFrontend.elements.$window.off('mouseleave', this.detectExitIntent);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/triggers/inactivity.js":
/*!******************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/triggers/inactivity.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));

class _default extends _base.default {
  constructor(...args) {
    super(...args);
    this.restartTimer = this.restartTimer.bind(this);
  }

  getName() {
    return 'inactivity';
  }

  run() {
    this.startTimer();
    elementorFrontend.elements.$document.on('keypress mousemove', this.restartTimer);
  }

  startTimer() {
    this.timeOut = setTimeout(this.callback, this.getTriggerSetting('time') * 1000);
  }

  clearTimer() {
    clearTimeout(this.timeOut);
  }

  restartTimer() {
    this.clearTimer();
    this.startTimer();
  }

  destroy() {
    this.clearTimer();
    elementorFrontend.elements.$document.off('keypress mousemove', this.restartTimer);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/triggers/page-load.js":
/*!*****************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/triggers/page-load.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));

class _default extends _base.default {
  getName() {
    return 'page_load';
  }

  run() {
    this.timeout = setTimeout(this.callback, this.getTriggerSetting('delay') * 1000);
  }

  destroy() {
    clearTimeout(this.timeout);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/triggers/scrolling-to.js":
/*!********************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/triggers/scrolling-to.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));

class _default extends _base.default {
  getName() {
    return 'scrolling_to';
  }

  run() {
    let $targetElement;

    try {
      $targetElement = jQuery(this.getTriggerSetting('selector'));
    } catch (e) {
      return;
    }

    this.waypointInstance = elementorFrontend.waypoint($targetElement, this.callback)[0];
  }

  destroy() {
    if (this.waypointInstance) {
      this.waypointInstance.destroy();
    }
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/triggers/scrolling.js":
/*!*****************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/triggers/scrolling.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));

class _default extends _base.default {
  constructor(...args) {
    super(...args);
    this.checkScroll = this.checkScroll.bind(this);
    this.lastScrollOffset = 0;
  }

  getName() {
    return 'scrolling';
  }

  checkScroll() {
    const scrollDirection = scrollY > this.lastScrollOffset ? 'down' : 'up',
          requestedDirection = this.getTriggerSetting('direction');
    this.lastScrollOffset = scrollY;

    if (scrollDirection !== requestedDirection) {
      return;
    }

    if ('up' === scrollDirection) {
      this.callback();
      return;
    }

    const fullScroll = elementorFrontend.elements.$document.height() - innerHeight,
          scrollPercent = scrollY / fullScroll * 100;

    if (scrollPercent >= this.getTriggerSetting('offset')) {
      this.callback();
    }
  }

  run() {
    elementorFrontend.elements.$window.on('scroll', this.checkScroll);
  }

  destroy() {
    elementorFrontend.elements.$window.off('scroll', this.checkScroll);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/posts/assets/js/frontend/frontend-legacy.js":
/*!**************************************************************!*\
  !*** ../modules/posts/assets/js/frontend/frontend-legacy.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _posts = _interopRequireDefault(__webpack_require__(/*! ./handlers/posts */ "../modules/posts/assets/js/frontend/handlers/posts.js"));

var _cards = _interopRequireDefault(__webpack_require__(/*! ./handlers/cards */ "../modules/posts/assets/js/frontend/handlers/cards.js"));

var _portfolio = _interopRequireDefault(__webpack_require__(/*! ./handlers/portfolio */ "../modules/posts/assets/js/frontend/handlers/portfolio.js"));

var _loadMore = _interopRequireDefault(__webpack_require__(/*! ./handlers/load-more */ "../modules/posts/assets/js/frontend/handlers/load-more.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    ['classic', 'full_content', 'cards'].forEach(skinName => {
      elementorFrontend.elementsHandler.attachHandler('posts', _loadMore.default, skinName);
    });
    elementorFrontend.elementsHandler.attachHandler('posts', _posts.default, 'classic');
    elementorFrontend.elementsHandler.attachHandler('posts', _posts.default, 'full_content');
    elementorFrontend.elementsHandler.attachHandler('posts', _cards.default, 'cards');
    elementorFrontend.elementsHandler.attachHandler('portfolio', _portfolio.default);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/posts/assets/js/frontend/handlers/cards.js":
/*!*************************************************************!*\
  !*** ../modules/posts/assets/js/frontend/handlers/cards.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _posts = _interopRequireDefault(__webpack_require__(/*! ./posts */ "../modules/posts/assets/js/frontend/handlers/posts.js"));

var _default = _posts.default.extend({
  getSkinPrefix() {
    return 'cards_';
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/posts/assets/js/frontend/handlers/load-more.js":
/*!*****************************************************************!*\
  !*** ../modules/posts/assets/js/frontend/handlers/load-more.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class LoadMore extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        postsContainer: '.elementor-posts-container',
        loadMoreButton: '.elementor-button',
        loadMoreSpinnerWrapper: '.e-load-more-spinner',
        loadMoreSpinner: '.e-load-more-spinner i, .e-load-more-spinner svg',
        loadMoreAnchor: '.e-load-more-anchor'
      },
      classes: {
        loadMoreSpin: 'eicon-animation-spin',
        loadMoreIsLoading: 'e-load-more-pagination-loading',
        loadMorePaginationEnd: 'e-load-more-pagination-end',
        loadMoreNoSpinner: 'e-load-more-no-spinner'
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors');
    return {
      postsWidgetWrapper: this.$element[0],
      postsContainer: this.$element[0].querySelector(selectors.postsContainer),
      loadMoreButton: this.$element[0].querySelector(selectors.loadMoreButton),
      loadMoreSpinnerWrapper: this.$element[0].querySelector(selectors.loadMoreSpinnerWrapper),
      loadMoreSpinner: this.$element[0].querySelector(selectors.loadMoreSpinner),
      loadMoreAnchor: this.$element[0].querySelector(selectors.loadMoreAnchor)
    };
  }

  bindEvents() {
    super.bindEvents(); // Handle load more functionality for on-click type.

    if (!this.elements.loadMoreButton) {
      return;
    }

    this.elements.loadMoreButton.addEventListener('click', event => {
      if (this.isLoading) {
        return;
      }

      event.preventDefault();
      this.handlePostsQuery();
    });
  }

  onInit() {
    super.onInit();
    this.classes = this.getSettings('classes');
    this.isLoading = false;
    const paginationType = this.getElementSettings('pagination_type');

    if ('load_more_on_click' !== paginationType && 'load_more_infinite_scroll' !== paginationType) {
      return;
    }

    this.isInfinteScroll = 'load_more_infinite_scroll' === paginationType; // When spinner is not available, the button's text should not be hidden.

    this.isSpinnerAvailable = this.getElementSettings('load_more_spinner').value;

    if (!this.isSpinnerAvailable) {
      this.elements.postsWidgetWrapper.classList.add(this.classes.loadMoreNoSpinner);
    }

    if (this.isInfinteScroll) {
      this.handleInfiniteScroll();
    } else if (this.elements.loadMoreSpinnerWrapper) {
      // Instead of creating 2 spinners for on-click and infinity-scroll, one spinner will be used so it should be appended to the button in on-click mode.
      this.elements.loadMoreButton.insertAdjacentElement('beforeEnd', this.elements.loadMoreSpinnerWrapper);
    } // Set the post id and element id for the ajax request.


    this.elementId = this.getID();
    this.postId = elementorFrontendConfig.post.id; // Set the current page and last page for handling the load more post and when no more posts to show.

    this.currentPage = parseInt(this.elements.loadMoreAnchor.getAttribute('data-page'));
    this.maxPage = parseInt(this.elements.loadMoreAnchor.getAttribute('data-max-page'));

    if (this.currentPage === this.maxPage) {
      this.handleUiWhenNoPosts();
    }
  } // Handle load more functionality for infinity-scroll type.


  handleInfiniteScroll() {
    if (this.isEdit) {
      return;
    }

    this.observer = elementorModules.utils.Scroll.scrollObserver({
      callback: event => {
        if (!event.isInViewport || this.isLoading) {
          return;
        } // When the observer is triggered it won't be triggered without scrolling, but sometimes there will be no scrollbar to trigger it again.


        this.observer.unobserve(this.elements.loadMoreAnchor);
        this.handlePostsQuery().then(() => {
          if (this.currentPage !== this.maxPage) {
            this.observer.observe(this.elements.loadMoreAnchor);
          }
        });
      }
    });
    this.observer.observe(this.elements.loadMoreAnchor);
  }

  handleUiBeforeLoading() {
    this.isLoading = true;

    if (this.elements.loadMoreSpinner) {
      this.elements.loadMoreSpinner.classList.add(this.classes.loadMoreSpin);
    }

    this.elements.postsWidgetWrapper.classList.add(this.classes.loadMoreIsLoading);
  }

  handleUiAfterLoading() {
    this.isLoading = false;

    if (this.elements.loadMoreSpinner) {
      this.elements.loadMoreSpinner.classList.remove(this.classes.loadMoreSpin);
    }

    if (this.isInfinteScroll && this.elements.loadMoreSpinnerWrapper) {
      // Since the spinner has to be shown after the new content (posts), it should be appended after the anchor element.
      this.elements.loadMoreAnchor.insertAdjacentElement('afterend', this.elements.loadMoreSpinnerWrapper);
    }

    this.elements.postsWidgetWrapper.classList.remove(this.classes.loadMoreIsLoading);
  }

  handleUiWhenNoPosts() {
    this.elements.postsWidgetWrapper.classList.add(this.classes.loadMorePaginationEnd);
  }

  handleSuccessFetch(result) {
    this.handleUiAfterLoading();
    const posts = result.querySelectorAll('.elementor-posts-container > article');
    const nextPageUrl = result.querySelector('.e-load-more-anchor').getAttribute('data-next-page'); // Converting HTMLCollection to an Array and iterate it.

    const postsHTML = [...posts].reduce((accumulator, post) => {
      return accumulator + post.outerHTML;
    }, '');
    this.elements.postsContainer.insertAdjacentHTML('beforeend', postsHTML);
    this.elements.loadMoreAnchor.setAttribute('data-page', this.currentPage);
    this.elements.loadMoreAnchor.setAttribute('data-next-page', nextPageUrl);

    if (this.currentPage === this.maxPage) {
      this.handleUiWhenNoPosts();
    }
  }

  handlePostsQuery() {
    this.handleUiBeforeLoading();
    this.currentPage++;
    const nextPageUrl = this.elements.loadMoreAnchor.getAttribute('data-next-page');
    return fetch(nextPageUrl).then(response => response.text()).then(html => {
      // Convert the HTML string into a document object
      const parser = new DOMParser();
      const doc = parser.parseFromString(html, 'text/html');
      this.handleSuccessFetch(doc);
    }).catch(err => {
      console.warn('Something went wrong.', err);
    });
  }

}

exports.default = LoadMore;

/***/ }),

/***/ "../modules/posts/assets/js/frontend/handlers/portfolio.js":
/*!*****************************************************************!*\
  !*** ../modules/posts/assets/js/frontend/handlers/portfolio.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _posts = _interopRequireDefault(__webpack_require__(/*! ./posts */ "../modules/posts/assets/js/frontend/handlers/posts.js"));

var _default = _posts.default.extend({
  isActive(settings) {
    return settings.$element.find('.elementor-portfolio').length;
  },

  getSkinPrefix() {
    return '';
  },

  getDefaultSettings() {
    var settings = _posts.default.prototype.getDefaultSettings.apply(this, arguments);

    settings.transitionDuration = 450;
    jQuery.extend(settings.classes, {
      active: 'elementor-active',
      item: 'elementor-portfolio-item',
      ghostItem: 'elementor-portfolio-ghost-item'
    });
    return settings;
  },

  getDefaultElements() {
    var elements = _posts.default.prototype.getDefaultElements.apply(this, arguments);

    elements.$filterButtons = this.$element.find('.elementor-portfolio__filter');
    return elements;
  },

  getOffset(itemIndex, itemWidth, itemHeight) {
    var settings = this.getSettings(),
        itemGap = this.elements.$postsContainer.width() / settings.colsCount - itemWidth;
    itemGap += itemGap / (settings.colsCount - 1);
    return {
      start: (itemWidth + itemGap) * (itemIndex % settings.colsCount),
      top: (itemHeight + itemGap) * Math.floor(itemIndex / settings.colsCount)
    };
  },

  getClosureMethodsNames() {
    var baseClosureMethods = _posts.default.prototype.getClosureMethodsNames.apply(this, arguments);

    return baseClosureMethods.concat(['onFilterButtonClick']);
  },

  filterItems(term) {
    var $posts = this.elements.$posts,
        activeClass = this.getSettings('classes.active'),
        termSelector = '.elementor-filter-' + term;

    if ('__all' === term) {
      $posts.addClass(activeClass);
      return;
    }

    $posts.not(termSelector).removeClass(activeClass);
    $posts.filter(termSelector).addClass(activeClass);
  },

  removeExtraGhostItems() {
    var settings = this.getSettings(),
        $shownItems = this.elements.$posts.filter(':visible'),
        emptyColumns = (settings.colsCount - $shownItems.length % settings.colsCount) % settings.colsCount,
        $ghostItems = this.elements.$postsContainer.find('.' + settings.classes.ghostItem);
    $ghostItems.slice(emptyColumns).remove();
  },

  handleEmptyColumns() {
    this.removeExtraGhostItems();
    var settings = this.getSettings(),
        $shownItems = this.elements.$posts.filter(':visible'),
        $ghostItems = this.elements.$postsContainer.find('.' + settings.classes.ghostItem),
        emptyColumns = (settings.colsCount - ($shownItems.length + $ghostItems.length) % settings.colsCount) % settings.colsCount;

    for (var i = 0; i < emptyColumns; i++) {
      this.elements.$postsContainer.append(jQuery('<div>', {
        class: settings.classes.item + ' ' + settings.classes.ghostItem
      }));
    }
  },

  showItems($activeHiddenItems) {
    $activeHiddenItems.show();
    setTimeout(function () {
      $activeHiddenItems.css({
        opacity: 1
      });
    });
  },

  hideItems($inactiveShownItems) {
    $inactiveShownItems.hide();
  },

  arrangeGrid() {
    var $ = jQuery,
        self = this,
        settings = self.getSettings(),
        $activeItems = self.elements.$posts.filter('.' + settings.classes.active),
        $inactiveItems = self.elements.$posts.not('.' + settings.classes.active),
        $shownItems = self.elements.$posts.filter(':visible'),
        $activeOrShownItems = $activeItems.add($shownItems),
        $activeShownItems = $activeItems.filter(':visible'),
        $activeHiddenItems = $activeItems.filter(':hidden'),
        $inactiveShownItems = $inactiveItems.filter(':visible'),
        itemWidth = $shownItems.outerWidth(),
        itemHeight = $shownItems.outerHeight();
    self.elements.$posts.css('transition-duration', settings.transitionDuration + 'ms');
    self.showItems($activeHiddenItems);

    if (self.isEdit) {
      self.fitImages();
    }

    self.handleEmptyColumns();

    if (self.isMasonryEnabled()) {
      self.hideItems($inactiveShownItems);
      self.showItems($activeHiddenItems);
      self.handleEmptyColumns();
      self.runMasonry();
      return;
    }

    $inactiveShownItems.css({
      opacity: 0,
      transform: 'scale3d(0.2, 0.2, 1)'
    });
    $activeShownItems.each(function () {
      var $item = $(this),
          currentOffset = self.getOffset($activeOrShownItems.index($item), itemWidth, itemHeight),
          requiredOffset = self.getOffset($shownItems.index($item), itemWidth, itemHeight);

      if (currentOffset.start === requiredOffset.start && currentOffset.top === requiredOffset.top) {
        return;
      }

      requiredOffset.start -= currentOffset.start;
      requiredOffset.top -= currentOffset.top;

      if (elementorFrontend.config.is_rtl) {
        requiredOffset.start *= -1;
      }

      $item.css({
        transitionDuration: '',
        transform: 'translate3d(' + requiredOffset.start + 'px, ' + requiredOffset.top + 'px, 0)'
      });
    });
    setTimeout(function () {
      $activeItems.each(function () {
        var $item = $(this),
            currentOffset = self.getOffset($activeOrShownItems.index($item), itemWidth, itemHeight),
            requiredOffset = self.getOffset($activeItems.index($item), itemWidth, itemHeight);
        $item.css({
          transitionDuration: settings.transitionDuration + 'ms'
        });
        requiredOffset.start -= currentOffset.start;
        requiredOffset.top -= currentOffset.top;

        if (elementorFrontend.config.is_rtl) {
          requiredOffset.start *= -1;
        }

        setTimeout(function () {
          $item.css('transform', 'translate3d(' + requiredOffset.start + 'px, ' + requiredOffset.top + 'px, 0)');
        });
      });
    });
    setTimeout(function () {
      self.hideItems($inactiveShownItems);
      $activeItems.css({
        transitionDuration: '',
        transform: 'translate3d(0px, 0px, 0px)'
      });
      self.handleEmptyColumns();
    }, settings.transitionDuration);
  },

  activeFilterButton(filter) {
    var activeClass = this.getSettings('classes.active'),
        $filterButtons = this.elements.$filterButtons,
        $button = $filterButtons.filter('[data-filter="' + filter + '"]');
    $filterButtons.removeClass(activeClass);
    $button.addClass(activeClass);
  },

  setFilter(filter) {
    this.activeFilterButton(filter);
    this.filterItems(filter);
    this.arrangeGrid();
  },

  refreshGrid() {
    this.setColsCountSettings();
    this.arrangeGrid();
  },

  bindEvents() {
    _posts.default.prototype.bindEvents.apply(this, arguments);

    this.elements.$filterButtons.on('click', this.onFilterButtonClick);
  },

  isMasonryEnabled() {
    return !!this.getElementSettings('masonry');
  },

  run() {
    _posts.default.prototype.run.apply(this, arguments);

    this.setColsCountSettings();
    this.setFilter('__all');
    this.handleEmptyColumns();
  },

  onFilterButtonClick(event) {
    this.setFilter(jQuery(event.currentTarget).data('filter'));
  },

  onWindowResize() {
    _posts.default.prototype.onWindowResize.apply(this, arguments);

    this.refreshGrid();
  },

  onElementChange(propertyName) {
    _posts.default.prototype.onElementChange.apply(this, arguments);

    if ('classic_item_ratio' === propertyName) {
      this.refreshGrid();
    }
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/posts/assets/js/frontend/handlers/posts.js":
/*!*************************************************************!*\
  !*** ../modules/posts/assets/js/frontend/handlers/posts.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  getSkinPrefix() {
    return 'classic_';
  },

  bindEvents() {
    var cid = this.getModelCID();
    elementorFrontend.addListenerOnce(cid, 'resize', this.onWindowResize);
  },

  getClosureMethodsNames() {
    return elementorModules.frontend.handlers.Base.prototype.getClosureMethodsNames.apply(this, arguments).concat(['fitImages', 'onWindowResize', 'runMasonry']);
  },

  getDefaultSettings() {
    return {
      classes: {
        fitHeight: 'elementor-fit-height',
        hasItemRatio: 'elementor-has-item-ratio'
      },
      selectors: {
        postsContainer: '.elementor-posts-container',
        post: '.elementor-post',
        postThumbnail: '.elementor-post__thumbnail',
        postThumbnailImage: '.elementor-post__thumbnail img'
      }
    };
  },

  getDefaultElements() {
    var selectors = this.getSettings('selectors');
    return {
      $postsContainer: this.$element.find(selectors.postsContainer),
      $posts: this.$element.find(selectors.post)
    };
  },

  fitImage($post) {
    var settings = this.getSettings(),
        $imageParent = $post.find(settings.selectors.postThumbnail),
        $image = $imageParent.find('img'),
        image = $image[0];

    if (!image) {
      return;
    }

    var imageParentRatio = $imageParent.outerHeight() / $imageParent.outerWidth(),
        imageRatio = image.naturalHeight / image.naturalWidth;
    $imageParent.toggleClass(settings.classes.fitHeight, imageRatio < imageParentRatio);
  },

  fitImages() {
    var $ = jQuery,
        self = this,
        itemRatio = getComputedStyle(this.$element[0], ':after').content,
        settings = this.getSettings();
    this.elements.$postsContainer.toggleClass(settings.classes.hasItemRatio, !!itemRatio.match(/\d/));

    if (self.isMasonryEnabled()) {
      return;
    }

    this.elements.$posts.each(function () {
      var $post = $(this),
          $image = $post.find(settings.selectors.postThumbnailImage);
      self.fitImage($post);
      $image.on('load', function () {
        self.fitImage($post);
      });
    });
  },

  setColsCountSettings() {
    var currentDeviceMode = elementorFrontend.getCurrentDeviceMode(),
        settings = this.getElementSettings(),
        skinPrefix = this.getSkinPrefix(),
        colsCount;

    switch (currentDeviceMode) {
      case 'mobile':
        colsCount = settings[skinPrefix + 'columns_mobile'];
        break;

      case 'tablet':
        colsCount = settings[skinPrefix + 'columns_tablet'];
        break;

      default:
        colsCount = settings[skinPrefix + 'columns'];
    }

    this.setSettings('colsCount', colsCount);
  },

  isMasonryEnabled() {
    return !!this.getElementSettings(this.getSkinPrefix() + 'masonry');
  },

  initMasonry() {
    imagesLoaded(this.elements.$posts, this.runMasonry);
  },

  runMasonry() {
    var elements = this.elements;
    elements.$posts.css({
      marginTop: '',
      transitionDuration: ''
    });
    this.setColsCountSettings();
    var colsCount = this.getSettings('colsCount'),
        hasMasonry = this.isMasonryEnabled() && colsCount >= 2;
    elements.$postsContainer.toggleClass('elementor-posts-masonry', hasMasonry);

    if (!hasMasonry) {
      elements.$postsContainer.height('');
      return;
    }
    /* The `verticalSpaceBetween` variable is setup in a way that supports older versions of the portfolio widget */


    var verticalSpaceBetween = this.getElementSettings(this.getSkinPrefix() + 'row_gap.size');

    if ('' === this.getSkinPrefix() && '' === verticalSpaceBetween) {
      verticalSpaceBetween = this.getElementSettings(this.getSkinPrefix() + 'item_gap.size');
    }

    var masonry = new elementorModules.utils.Masonry({
      container: elements.$postsContainer,
      items: elements.$posts.filter(':visible'),
      columnsCount: this.getSettings('colsCount'),
      verticalSpaceBetween
    });
    masonry.run();
  },

  run() {
    // For slow browsers
    setTimeout(this.fitImages, 0);
    this.initMasonry();
  },

  onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
    this.bindEvents();
    this.run();
  },

  onWindowResize() {
    this.fitImages();
    this.runMasonry();
  },

  onElementChange() {
    this.fitImages();
    setTimeout(this.runMasonry);
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/share-buttons/assets/js/frontend/frontend-legacy.js":
/*!**********************************************************************!*\
  !*** ../modules/share-buttons/assets/js/frontend/frontend-legacy.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _shareButtons = _interopRequireDefault(__webpack_require__(/*! ./handlers/share-buttons */ "../modules/share-buttons/assets/js/frontend/handlers/share-buttons.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('share-buttons', _shareButtons.default);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/share-buttons/assets/js/frontend/handlers/share-buttons.js":
/*!*****************************************************************************!*\
  !*** ../modules/share-buttons/assets/js/frontend/handlers/share-buttons.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  async onInit() {
    if (!this.isActive()) {
      return;
    }

    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
    const elementSettings = this.getElementSettings(),
          classes = this.getSettings('classes'),
          isCustomURL = elementSettings.share_url && elementSettings.share_url.url,
          shareLinkSettings = {
      classPrefix: classes.shareLinkPrefix
    };

    if (isCustomURL) {
      shareLinkSettings.url = elementSettings.share_url.url;
    } else {
      shareLinkSettings.url = location.href;
      shareLinkSettings.title = elementorFrontend.config.post.title;
      shareLinkSettings.text = elementorFrontend.config.post.excerpt;
      shareLinkSettings.image = elementorFrontend.config.post.featuredImage;
    }
    /**
     * First check of the ShareLink is for detecting if the optimized mode is disabled and the library should be loaded dynamically.
     * Checking if the assetsLoader exist, in case that the library is not loaded due to Ad Blockers and not because the optimized mode is enabled.
     */


    if (!window.ShareLink && elementorFrontend.utils.assetsLoader) {
      await elementorFrontend.utils.assetsLoader.load('script', 'share-link');
    }
    /**
     * The following condition should remain regardless of the share-link dynamic loading.
     * Ad Blockers may block the share script. (/assets/lib/share-link/share-link.js).
     */


    if (!this.elements.$shareButton.shareLink) {
      return;
    }

    this.elements.$shareButton.shareLink(shareLinkSettings);
  },

  getDefaultSettings() {
    return {
      selectors: {
        shareButton: '.elementor-share-btn'
      },
      classes: {
        shareLinkPrefix: 'elementor-share-btn_'
      }
    };
  },

  getDefaultElements() {
    var selectors = this.getSettings('selectors');
    return {
      $shareButton: this.$element.find(selectors.shareButton)
    };
  },

  isActive() {
    return !elementorFrontend.isEditMode();
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/slides/assets/js/frontend/frontend-legacy.js":
/*!***************************************************************!*\
  !*** ../modules/slides/assets/js/frontend/frontend-legacy.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _slides = _interopRequireDefault(__webpack_require__(/*! ./handlers/slides */ "../modules/slides/assets/js/frontend/handlers/slides.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('slides', _slides.default);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/slides/assets/js/frontend/handlers/slides.js":
/*!***************************************************************!*\
  !*** ../modules/slides/assets/js/frontend/handlers/slides.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class SlidesHandler extends elementorModules.frontend.handlers.SwiperBase {
  getDefaultSettings() {
    return {
      selectors: {
        slider: '.elementor-slides-wrapper',
        slide: '.swiper-slide',
        slideInnerContents: '.swiper-slide-contents',
        activeSlide: '.swiper-slide-active',
        activeDuplicate: '.swiper-slide-duplicate-active'
      },
      classes: {
        animated: 'animated',
        kenBurnsActive: 'elementor-ken-burns--active',
        slideBackground: 'swiper-slide-bg'
      },
      attributes: {
        dataSliderOptions: 'slider_options',
        dataAnimation: 'animation'
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors'),
          elements = {
      $swiperContainer: this.$element.find(selectors.slider)
    };
    elements.$slides = elements.$swiperContainer.find(selectors.slide);
    return elements;
  }

  getSwiperOptions() {
    const elementSettings = this.getElementSettings(),
          swiperOptions = {
      autoplay: this.getAutoplayConfig(),
      grabCursor: true,
      initialSlide: this.getInitialSlide(),
      slidesPerView: 1,
      slidesPerGroup: 1,
      loop: 'yes' === elementSettings.infinite,
      speed: elementSettings.transition_speed,
      effect: elementSettings.transition,
      observeParents: true,
      observer: true,
      handleElementorBreakpoints: true,
      on: {
        slideChange: () => {
          this.handleKenBurns();
        }
      }
    };
    const showArrows = 'arrows' === elementSettings.navigation || 'both' === elementSettings.navigation,
          pagination = 'dots' === elementSettings.navigation || 'both' === elementSettings.navigation;

    if (showArrows) {
      swiperOptions.navigation = {
        prevEl: '.elementor-swiper-button-prev',
        nextEl: '.elementor-swiper-button-next'
      };
    }

    if (pagination) {
      swiperOptions.pagination = {
        el: '.swiper-pagination',
        type: 'bullets',
        clickable: true
      };
    }

    if (true === swiperOptions.loop) {
      swiperOptions.loopedSlides = this.getSlidesCount();
    }

    if ('fade' === swiperOptions.effect) {
      swiperOptions.fadeEffect = {
        crossFade: true
      };
    }

    return swiperOptions;
  }

  getAutoplayConfig() {
    const elementSettings = this.getElementSettings();

    if ('yes' !== elementSettings.autoplay) {
      return false;
    }

    return {
      stopOnLastSlide: true,
      // Has no effect in infinite mode by default.
      delay: elementSettings.autoplay_speed,
      disableOnInteraction: 'yes' === elementSettings.pause_on_interaction
    };
  }

  initSingleSlideAnimations() {
    const settings = this.getSettings(),
          animation = this.elements.$swiperContainer.data(settings.attributes.dataAnimation);
    this.elements.$swiperContainer.find('.' + settings.classes.slideBackground).addClass(settings.classes.kenBurnsActive); // If there is an animation, get the container of the slide's inner contents and add the animation classes to it

    if (animation) {
      this.elements.$swiperContainer.find(settings.selectors.slideInnerContents).addClass(settings.classes.animated + ' ' + animation);
    }
  }

  async initSlider() {
    const $slider = this.elements.$swiperContainer,
          settings = this.getSettings(),
          elementSettings = this.getElementSettings(),
          animation = $slider.data(settings.attributes.dataAnimation);

    if (!$slider.length) {
      return;
    }

    if (1 >= this.getSlidesCount()) {
      return;
    }

    const Swiper = elementorFrontend.utils.swiper;
    this.swiper = await new Swiper($slider, this.getSwiperOptions()); // Expose the swiper instance in the frontend

    $slider.data('swiper', this.swiper); // The Ken Burns effect will only apply on the specific slides that toggled the effect ON,
    // since it depends on an additional class besides 'elementor-ken-burns--active'

    this.handleKenBurns();

    if (elementSettings.pause_on_hover) {
      this.togglePauseOnHover(true);
    }

    if (!animation) {
      return;
    }

    this.swiper.on('slideChangeTransitionStart', function () {
      const $sliderContent = $slider.find(settings.selectors.slideInnerContents);
      $sliderContent.removeClass(settings.classes.animated + ' ' + animation).hide();
    });
    this.swiper.on('slideChangeTransitionEnd', function () {
      const $currentSlide = $slider.find(settings.selectors.slideInnerContents);
      $currentSlide.show().addClass(settings.classes.animated + ' ' + animation);
    });
  }

  onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);

    if (2 > this.getSlidesCount()) {
      this.initSingleSlideAnimations();
      return;
    }

    this.initSlider();
  }

  getChangeableProperties() {
    return {
      pause_on_hover: 'pauseOnHover',
      pause_on_interaction: 'disableOnInteraction',
      autoplay_speed: 'delay',
      transition_speed: 'speed'
    };
  }

  updateSwiperOption(propertyName) {
    if (0 === propertyName.indexOf('width')) {
      this.swiper.update();
      return;
    }

    const elementSettings = this.getElementSettings(),
          newSettingValue = elementSettings[propertyName],
          changeableProperties = this.getChangeableProperties();
    let propertyToUpdate = changeableProperties[propertyName],
        valueToUpdate = newSettingValue; // Handle special cases where the value to update is not the value that the Swiper library accepts

    switch (propertyName) {
      case 'autoplay_speed':
        propertyToUpdate = 'autoplay';
        valueToUpdate = {
          delay: newSettingValue,
          disableOnInteraction: 'yes' === elementSettings.pause_on_interaction
        };
        break;

      case 'pause_on_hover':
        this.togglePauseOnHover('yes' === newSettingValue);
        break;

      case 'pause_on_interaction':
        valueToUpdate = 'yes' === newSettingValue;
        break;
    } // 'pause_on_hover' is implemented by the handler with event listeners, not the Swiper library


    if ('pause_on_hover' !== propertyName) {
      this.swiper.params[propertyToUpdate] = valueToUpdate;
    }

    this.swiper.update();
  }

  onElementChange(propertyName) {
    if (1 >= this.getSlidesCount()) {
      return;
    }

    const changeableProperties = this.getChangeableProperties();

    if (changeableProperties.hasOwnProperty(propertyName)) {
      this.updateSwiperOption(propertyName);
    }
  }

  onEditSettingsChange(propertyName) {
    if (1 >= this.getSlidesCount()) {
      return;
    }

    if ('activeItemIndex' === propertyName) {
      this.swiper.slideToLoop(this.getEditSettings('activeItemIndex') - 1);
    }
  }

}

exports.default = SlidesHandler;

/***/ }),

/***/ "../modules/social/assets/js/frontend/frontend-legacy.js":
/*!***************************************************************!*\
  !*** ../modules/social/assets/js/frontend/frontend-legacy.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _facebook = _interopRequireDefault(__webpack_require__(/*! ./handlers/facebook */ "../modules/social/assets/js/frontend/handlers/facebook.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('facebook-button', _facebook.default);
    elementorFrontend.elementsHandler.attachHandler('facebook-comments', _facebook.default);
    elementorFrontend.elementsHandler.attachHandler('facebook-embed', _facebook.default);
    elementorFrontend.elementsHandler.attachHandler('facebook-page', _facebook.default);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/social/assets/js/frontend/handlers/facebook.js":
/*!*****************************************************************!*\
  !*** ../modules/social/assets/js/frontend/handlers/facebook.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class FacebookHandler extends elementorModules.frontend.handlers.Base {
  getConfig() {
    return elementorProFrontend.config.facebook_sdk;
  }

  setConfig(prop, value) {
    elementorProFrontend.config.facebook_sdk[prop] = value;
  }

  parse() {
    // On FB SDK is loaded, parse current element
    FB.XFBML.parse(this.$element[0]);
  }

  loadSDK() {
    const config = this.getConfig(); // Preventing from ajax request to be sent multiple times when loading multiple widgets

    if (config.isLoading || config.isLoaded) {
      return;
    }

    this.setConfig('isLoading', true);
    jQuery.ajax({
      url: 'https://connect.facebook.net/' + config.lang + '/sdk.js',
      dataType: 'script',
      cache: true,
      success: () => {
        FB.init({
          appId: config.app_id,
          version: 'v2.10',
          xfbml: false
        });
        this.setConfig('isLoaded', true);
        this.setConfig('isLoading', false);
        elementorFrontend.elements.$document.trigger('fb:sdk:loaded');
      }
    });
  }

  onInit(...args) {
    super.onInit(...args);
    this.loadSDK();
    const config = this.getConfig();

    if (config.isLoaded) {
      this.parse();
    } else {
      elementorFrontend.elements.$document.on('fb:sdk:loaded', () => this.parse());
    }
  }

}

exports.default = FacebookHandler;

/***/ }),

/***/ "../modules/table-of-contents/assets/js/frontend/frontend-legacy.js":
/*!**************************************************************************!*\
  !*** ../modules/table-of-contents/assets/js/frontend/frontend-legacy.js ***!
  \**************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _tableOfContents = _interopRequireDefault(__webpack_require__(/*! ./handlers/table-of-contents */ "../modules/table-of-contents/assets/js/frontend/handlers/table-of-contents.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('table-of-contents', _tableOfContents.default);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/table-of-contents/assets/js/frontend/handlers/table-of-contents.js":
/*!*************************************************************************************!*\
  !*** ../modules/table-of-contents/assets/js/frontend/handlers/table-of-contents.js ***!
  \*************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class TOCHandler extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    const elementSettings = this.getElementSettings(),
          listWrapperTag = 'numbers' === elementSettings.marker_view ? 'ol' : 'ul';
    return {
      selectors: {
        widgetContainer: '.elementor-widget-container',
        postContentContainer: '.elementor:not([data-elementor-type="header"]):not([data-elementor-type="footer"]):not([data-elementor-type="popup"])',
        expandButton: '.elementor-toc__toggle-button--expand',
        collapseButton: '.elementor-toc__toggle-button--collapse',
        body: '.elementor-toc__body',
        headerTitle: '.elementor-toc__header-title'
      },
      classes: {
        anchor: 'elementor-menu-anchor',
        listWrapper: 'elementor-toc__list-wrapper',
        listItem: 'elementor-toc__list-item',
        listTextWrapper: 'elementor-toc__list-item-text-wrapper',
        firstLevelListItem: 'elementor-toc__top-level',
        listItemText: 'elementor-toc__list-item-text',
        activeItem: 'elementor-item-active',
        headingAnchor: 'elementor-toc__heading-anchor',
        collapsed: 'elementor-toc--collapsed'
      },
      listWrapperTag
    };
  }

  getDefaultElements() {
    const settings = this.getSettings();
    return {
      $pageContainer: this.getContainer(),
      $widgetContainer: this.$element.find(settings.selectors.widgetContainer),
      $expandButton: this.$element.find(settings.selectors.expandButton),
      $collapseButton: this.$element.find(settings.selectors.collapseButton),
      $tocBody: this.$element.find(settings.selectors.body),
      $listItems: this.$element.find('.' + settings.classes.listItem)
    };
  }

  getContainer() {
    const settings = this.getSettings(),
          elementSettings = this.getElementSettings(); // If there is a custom container defined by the user, use it as the headings-scan container

    if (elementSettings.container) {
      return jQuery(elementSettings.container);
    } // Get the document wrapper element in which the TOC is located


    const $documentWrapper = this.$element.parents('.elementor'); // If the TOC container is a popup, only scan the popup for headings

    if ('popup' === $documentWrapper.attr('data-elementor-type')) {
      return $documentWrapper;
    } // If the TOC container is anything other than a popup, scan only the post/page content for headings


    return jQuery(settings.selectors.postContentContainer);
  }

  bindEvents() {
    const elementSettings = this.getElementSettings();

    if (elementSettings.minimize_box) {
      this.elements.$expandButton.on('click', () => this.expandBox());
      this.elements.$collapseButton.on('click', () => this.collapseBox());
    }

    if (elementSettings.collapse_subitems) {
      this.elements.$listItems.on('hover', event => jQuery(event.target).slideToggle());
    }
  }

  getHeadings() {
    // Get all headings from document by user-selected tags
    const elementSettings = this.getElementSettings(),
          tags = elementSettings.headings_by_tags.join(','),
          selectors = this.getSettings('selectors'),
          excludedSelectors = elementSettings.exclude_headings_by_selector;
    return this.elements.$pageContainer.find(tags).not(selectors.headerTitle).filter((index, heading) => {
      return !jQuery(heading).closest(excludedSelectors).length; // Handle excluded selectors if there are any
    });
  }

  addAnchorsBeforeHeadings() {
    const classes = this.getSettings('classes'); // Add an anchor element right before each TOC heading to create anchors for TOC links

    this.elements.$headings.before(index => {
      // Check if the heading element itself has an ID, or if it is a widget which includes a main heading element, whether the widget wrapper has an ID
      if (jQuery(this.elements.$headings[index]).data('hasOwnID')) {
        return;
      }

      return `<span id="${classes.headingAnchor}-${index}" class="${classes.anchor} "></span>`;
    });
  }

  activateItem($listItem) {
    const classes = this.getSettings('classes');
    this.deactivateActiveItem($listItem);
    $listItem.addClass(classes.activeItem);
    this.$activeItem = $listItem;

    if (!this.getElementSettings('collapse_subitems')) {
      return;
    }

    let $activeList;

    if ($listItem.hasClass(classes.firstLevelListItem)) {
      $activeList = $listItem.parent().next();
    } else {
      $activeList = $listItem.parents('.' + classes.listWrapper).eq(-2);
    }

    if (!$activeList.length) {
      delete this.$activeList;
      return;
    }

    this.$activeList = $activeList;
    this.$activeList.stop().slideDown();
  }

  deactivateActiveItem($activeToBe) {
    if (!this.$activeItem || this.$activeItem.is($activeToBe)) {
      return;
    }

    const {
      classes
    } = this.getSettings();
    this.$activeItem.removeClass(classes.activeItem);

    if (this.$activeList && (!$activeToBe || !this.$activeList[0].contains($activeToBe[0]))) {
      this.$activeList.slideUp();
    }
  }

  followAnchor($element, index) {
    const anchorSelector = $element[0].hash;
    let $anchor;

    try {
      // `decodeURIComponent` for UTF8 characters in the hash.
      $anchor = jQuery(decodeURIComponent(anchorSelector));
    } catch (e) {
      return;
    }

    elementorFrontend.waypoint($anchor, direction => {
      if (this.itemClicked) {
        return;
      }

      const id = $anchor.attr('id');

      if ('down' === direction) {
        this.viewportItems[id] = true;
        this.activateItem($element);
      } else {
        delete this.viewportItems[id];
        this.activateItem(this.$listItemTexts.eq(index - 1));
      }
    }, {
      offset: 'bottom-in-view',
      triggerOnce: false
    });
    elementorFrontend.waypoint($anchor, direction => {
      if (this.itemClicked) {
        return;
      }

      const id = $anchor.attr('id');

      if ('down' === direction) {
        delete this.viewportItems[id];

        if (Object.keys(this.viewportItems).length) {
          this.activateItem(this.$listItemTexts.eq(index + 1));
        }
      } else {
        this.viewportItems[id] = true;
        this.activateItem($element);
      }
    }, {
      offset: 0,
      triggerOnce: false
    });
  }

  followAnchors() {
    this.$listItemTexts.each((index, element) => this.followAnchor(jQuery(element), index));
  }

  populateTOC() {
    this.listItemPointer = 0;
    const elementSettings = this.getElementSettings();

    if (elementSettings.hierarchical_view) {
      this.createNestedList();
    } else {
      this.createFlatList();
    }

    this.$listItemTexts = this.$element.find('.elementor-toc__list-item-text');
    this.$listItemTexts.on('click', this.onListItemClick.bind(this));

    if (!elementorFrontend.isEditMode()) {
      this.followAnchors();
    }
  }

  createNestedList() {
    this.headingsData.forEach((heading, index) => {
      heading.level = 0;

      for (let i = index - 1; i >= 0; i--) {
        const currentOrderedItem = this.headingsData[i];

        if (currentOrderedItem.tag <= heading.tag) {
          heading.level = currentOrderedItem.level;

          if (currentOrderedItem.tag < heading.tag) {
            heading.level++;
          }

          break;
        }
      }
    });
    this.elements.$tocBody.html(this.getNestedLevel(0));
  }

  createFlatList() {
    this.elements.$tocBody.html(this.getNestedLevel());
  }

  getNestedLevel(level) {
    const settings = this.getSettings(),
          elementSettings = this.getElementSettings(),
          icon = this.getElementSettings('icon');
    let renderedIcon;

    if (icon) {
      // We generate the icon markup in PHP and make it available via get_frontend_settings(). As a result, the
      // rendered icon is not available in the editor, so in the editor we use the regular <i> tag.
      if (elementorFrontend.config.experimentalFeatures.e_font_icon_svg && !elementorFrontend.isEditMode()) {
        renderedIcon = icon.rendered_tag;
      } else {
        renderedIcon = `<i class="${icon.value}"></i>`;
      }
    } // Open new list/nested list


    let html = `<${settings.listWrapperTag} class="${settings.classes.listWrapper}">`; // for each list item, build its markup.

    while (this.listItemPointer < this.headingsData.length) {
      const currentItem = this.headingsData[this.listItemPointer];
      let listItemTextClasses = settings.classes.listItemText;

      if (0 === currentItem.level) {
        // If the current list item is a top level item, give it the first level class
        listItemTextClasses += ' ' + settings.classes.firstLevelListItem;
      }

      if (level > currentItem.level) {
        break;
      }

      if (level === currentItem.level) {
        html += `<li class="${settings.classes.listItem}">`;
        html += `<div class="${settings.classes.listTextWrapper}">`;
        let liContent = `<a href="#${currentItem.anchorLink}" class="${listItemTextClasses}">${currentItem.text}</a>`; // If list type is bullets, add the bullet icon as an <i> tag

        if ('bullets' === elementSettings.marker_view && icon) {
          liContent = `${renderedIcon}${liContent}`;
        }

        html += liContent;
        html += '</div>';
        this.listItemPointer++;
        const nextItem = this.headingsData[this.listItemPointer];

        if (nextItem && level < nextItem.level) {
          // If a new nested list has to be created under the current item,
          // this entire method is called recursively (outside the while loop, a list wrapper is created)
          html += this.getNestedLevel(nextItem.level);
        }

        html += '</li>';
      }
    }

    html += `</${settings.listWrapperTag}>`;
    return html;
  }

  handleNoHeadingsFound() {
    let noHeadingsText = elementorProFrontend.config.i18n.toc_no_headings_found;

    if (elementorFrontend.isEditMode()) {
      noHeadingsText = elementorPro.translate('toc_no_headings_found');
    }

    return this.elements.$tocBody.html(noHeadingsText);
  }

  collapseOnInit() {
    const minimizedOn = this.getElementSettings('minimized_on'),
          currentDeviceMode = elementorFrontend.getCurrentDeviceMode();

    if ('tablet' === minimizedOn && 'desktop' !== currentDeviceMode || 'mobile' === minimizedOn && 'mobile' === currentDeviceMode) {
      this.collapseBox();
    }
  }

  getHeadingAnchorLink(index, classes) {
    const headingID = this.elements.$headings[index].id,
          wrapperID = this.elements.$headings[index].closest('.elementor-widget').id;
    let anchorLink = '';

    if (headingID) {
      anchorLink = headingID;
    } else if (wrapperID) {
      // If the heading itself has an ID, we don't want to overwrite it
      anchorLink = wrapperID;
    } // If there is no existing ID, use the heading text to create a semantic ID


    if (headingID || wrapperID) {
      jQuery(this.elements.$headings[index]).data('hasOwnID', true);
    } else {
      anchorLink = `${classes.headingAnchor}-${index}`;
    }

    return anchorLink;
  }

  setHeadingsData() {
    this.headingsData = [];
    const classes = this.getSettings('classes'); // Create an array for simplifying TOC list creation

    this.elements.$headings.each((index, element) => {
      const anchorLink = this.getHeadingAnchorLink(index, classes);
      this.headingsData.push({
        tag: +element.nodeName.slice(1),
        text: element.textContent,
        anchorLink
      });
    });
  }

  run() {
    this.elements.$headings = this.getHeadings();

    if (!this.elements.$headings.length) {
      return this.handleNoHeadingsFound();
    }

    this.setHeadingsData();

    if (!elementorFrontend.isEditMode()) {
      this.addAnchorsBeforeHeadings();
    }

    this.populateTOC();

    if (this.getElementSettings('minimize_box')) {
      this.collapseOnInit();
    }
  }

  expandBox() {
    const boxHeight = this.getCurrentDeviceSetting('min_height');
    this.$element.removeClass(this.getSettings('classes.collapsed'));
    this.elements.$tocBody.slideDown(); // return container to the full height in case a min-height is defined by the user

    this.elements.$widgetContainer.css('min-height', boxHeight.size + boxHeight.unit);
  }

  collapseBox() {
    this.$element.addClass(this.getSettings('classes.collapsed'));
    this.elements.$tocBody.slideUp(); // close container in case a min-height is defined by the user

    this.elements.$widgetContainer.css('min-height', '0px');
  }

  onInit(...args) {
    super.onInit(...args);
    this.viewportItems = [];
    jQuery(() => this.run());
  }

  onListItemClick(event) {
    this.itemClicked = true;
    setTimeout(() => this.itemClicked = false, 2000);
    const $clickedItem = jQuery(event.target),
          $list = $clickedItem.parent().next(),
          collapseNestedList = this.getElementSettings('collapse_subitems');
    let listIsActive;

    if (collapseNestedList && $clickedItem.hasClass(this.getSettings('classes.firstLevelListItem'))) {
      if ($list.is(':visible')) {
        listIsActive = true;
      }
    }

    this.activateItem($clickedItem);

    if (collapseNestedList && listIsActive) {
      $list.slideUp();
    }
  }

}

exports.default = TOCHandler;

/***/ }),

/***/ "../modules/theme-builder/assets/js/frontend/frontend-legacy.js":
/*!**********************************************************************!*\
  !*** ../modules/theme-builder/assets/js/frontend/frontend-legacy.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _archivePostsSkinClassic = _interopRequireDefault(__webpack_require__(/*! ./handlers/archive-posts-skin-classic */ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-classic.js"));

var _archivePostsSkinCards = _interopRequireDefault(__webpack_require__(/*! ./handlers/archive-posts-skin-cards */ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-cards.js"));

var _archivePostsLoadMore = _interopRequireDefault(__webpack_require__(/*! ./handlers/archive-posts-load-more */ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-load-more.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    ['archive_classic', 'archive_full_content', 'archive_cards'].forEach(skinName => {
      elementorFrontend.elementsHandler.attachHandler('archive-posts', _archivePostsLoadMore.default, skinName);
    });
    elementorFrontend.elementsHandler.attachHandler('archive-posts', _archivePostsSkinClassic.default, 'archive_classic');
    elementorFrontend.elementsHandler.attachHandler('archive-posts', _archivePostsSkinClassic.default, 'archive_full_content');
    elementorFrontend.elementsHandler.attachHandler('archive-posts', _archivePostsSkinCards.default, 'archive_cards');
    jQuery(function () {
      // Go to elementor element - if the URL is something like http://domain.com/any-page?preview=true&theme_template_id=6479
      var match = location.search.match(/theme_template_id=(\d*)/),
          $element = match ? jQuery('.elementor-' + match[1]) : [];

      if ($element.length) {
        jQuery('html, body').animate({
          scrollTop: $element.offset().top - window.innerHeight / 2
        });
      }
    });
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-load-more.js":
/*!***************************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/frontend/handlers/archive-posts-load-more.js ***!
  \***************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _loadMore = _interopRequireDefault(__webpack_require__(/*! ../../../../../posts/assets/js/frontend/handlers/load-more */ "../modules/posts/assets/js/frontend/handlers/load-more.js"));

class ArchivePostsLoadMore extends _loadMore.default {}

exports.default = ArchivePostsLoadMore;

/***/ }),

/***/ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-cards.js":
/*!****************************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-cards.js ***!
  \****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _cards = _interopRequireDefault(__webpack_require__(/*! ../../../../../posts/assets/js/frontend/handlers/cards */ "../modules/posts/assets/js/frontend/handlers/cards.js"));

var _default = _cards.default.extend({
  getSkinPrefix() {
    return 'archive_cards_';
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-classic.js":
/*!******************************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-classic.js ***!
  \******************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _posts = _interopRequireDefault(__webpack_require__(/*! ../../../../../posts/assets/js/frontend/handlers/posts */ "../modules/posts/assets/js/frontend/handlers/posts.js"));

var _default = _posts.default.extend({
  getSkinPrefix() {
    return 'archive_classic_';
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/theme-elements/assets/js/frontend/frontend-legacy.js":
/*!***********************************************************************!*\
  !*** ../modules/theme-elements/assets/js/frontend/frontend-legacy.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _searchForm = _interopRequireDefault(__webpack_require__(/*! ./handlers/search-form */ "../modules/theme-elements/assets/js/frontend/handlers/search-form.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('search-form', _searchForm.default);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/theme-elements/assets/js/frontend/handlers/search-form.js":
/*!****************************************************************************!*\
  !*** ../modules/theme-elements/assets/js/frontend/handlers/search-form.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  getDefaultSettings() {
    return {
      selectors: {
        wrapper: '.elementor-search-form',
        container: '.elementor-search-form__container',
        icon: '.elementor-search-form__icon',
        input: '.elementor-search-form__input',
        toggle: '.elementor-search-form__toggle',
        submit: '.elementor-search-form__submit',
        closeButton: '.dialog-close-button'
      },
      classes: {
        isFocus: 'elementor-search-form--focus',
        isFullScreen: 'elementor-search-form--full-screen',
        lightbox: 'elementor-lightbox'
      }
    };
  },

  getDefaultElements() {
    var selectors = this.getSettings('selectors'),
        elements = {};
    elements.$wrapper = this.$element.find(selectors.wrapper);
    elements.$container = this.$element.find(selectors.container);
    elements.$input = this.$element.find(selectors.input);
    elements.$icon = this.$element.find(selectors.icon);
    elements.$toggle = this.$element.find(selectors.toggle);
    elements.$submit = this.$element.find(selectors.submit);
    elements.$closeButton = this.$element.find(selectors.closeButton);
    return elements;
  },

  bindEvents() {
    var self = this,
        $container = self.elements.$container,
        $closeButton = self.elements.$closeButton,
        $input = self.elements.$input,
        $wrapper = self.elements.$wrapper,
        $icon = self.elements.$icon,
        skin = this.getElementSettings('skin'),
        classes = this.getSettings('classes');

    if ('full_screen' === skin) {
      // Activate full-screen mode on click
      self.elements.$toggle.on('click', function () {
        $container.toggleClass(classes.isFullScreen).toggleClass(classes.lightbox);
        $input.trigger('focus');
      }); // Deactivate full-screen mode on click or on esc.

      $container.on('click', function (event) {
        if ($container.hasClass(classes.isFullScreen) && $container[0] === event.target) {
          $container.removeClass(classes.isFullScreen).removeClass(classes.lightbox);
        }
      });
      $closeButton.on('click', function () {
        $container.removeClass(classes.isFullScreen).removeClass(classes.lightbox);
      });
      elementorFrontend.elements.$document.on('keyup', function (event) {
        var ESC_KEY = 27;

        if (ESC_KEY === event.keyCode) {
          if ($container.hasClass(classes.isFullScreen)) {
            $container.trigger('click');
          }
        }
      });
    } else {
      // Apply focus style on wrapper element when input is focused
      $input.on({
        focus() {
          $wrapper.addClass(classes.isFocus);
        },

        blur() {
          $wrapper.removeClass(classes.isFocus);
        }

      });
    }

    if ('minimal' === skin) {
      // Apply focus style on wrapper element when icon is clicked in minimal skin
      $icon.on('click', function () {
        $wrapper.addClass(classes.isFocus);
        $input.trigger('focus');
      });
    }
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/woocommerce/assets/js/frontend/frontend-legacy.js":
/*!********************************************************************!*\
  !*** ../modules/woocommerce/assets/js/frontend/frontend-legacy.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _menuCart = _interopRequireDefault(__webpack_require__(/*! ./handlers/menu-cart */ "../modules/woocommerce/assets/js/frontend/handlers/menu-cart.js"));

var _checkoutPage = _interopRequireDefault(__webpack_require__(/*! ./handlers/checkout-page */ "../modules/woocommerce/assets/js/frontend/handlers/checkout-page.js"));

var _cart = _interopRequireDefault(__webpack_require__(/*! ./handlers/cart */ "../modules/woocommerce/assets/js/frontend/handlers/cart.js"));

var _myAccount = _interopRequireDefault(__webpack_require__(/*! ./handlers/my-account */ "../modules/woocommerce/assets/js/frontend/handlers/my-account.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('woocommerce-menu-cart', _menuCart.default);
    elementorFrontend.elementsHandler.attachHandler('woocommerce-checkout-page', _checkoutPage.default);
    elementorFrontend.elementsHandler.attachHandler('woocommerce-cart', _cart.default);
    elementorFrontend.elementsHandler.attachHandler('woocommerce-my-account', _myAccount.default);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/woocommerce/assets/js/frontend/handlers/base.js":
/*!******************************************************************!*\
  !*** ../modules/woocommerce/assets/js/frontend/handlers/base.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class Base extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        stickyRightColumn: '.e-sticky-right-column'
      },
      classes: {
        stickyRightColumnActive: 'e-sticky-right-column--active'
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors');
    return {
      $stickyRightColumn: this.$element.find(selectors.stickyRightColumn)
    };
  }

  bindEvents() {
    // Add our wrapper class around the select2 whenever it is opened.
    elementorFrontend.elements.$document.on('select2:open', event => {
      this.addSelect2Wrapper(event);
    });
  }

  addSelect2Wrapper(event) {
    // The select element is recaptured every time because the markup can refresh
    const selectElement = jQuery(event.target).data('select2');

    if (selectElement.$dropdown) {
      selectElement.$dropdown.addClass('e-woo-select2-wrapper');
    }
  }

  isStickyRightColumnActive() {
    const classes = this.getSettings('classes');
    return this.elements.$stickyRightColumn.hasClass(classes.stickyRightColumnActive);
  }

  activateStickyRightColumn() {
    const elementSettings = this.getElementSettings(),
          $wpAdminBar = elementorFrontend.elements.$wpAdminBar,
          classes = this.getSettings('classes');
    let stickyOptionsOffset = elementSettings.sticky_right_column_offset || 0;

    if ($wpAdminBar.length && 'fixed' === $wpAdminBar.css('position')) {
      stickyOptionsOffset += $wpAdminBar.height();
    }

    if ('yes' === this.getElementSettings('sticky_right_column')) {
      this.elements.$stickyRightColumn.addClass(classes.stickyRightColumnActive);
      this.elements.$stickyRightColumn.css('top', stickyOptionsOffset + 'px');
    }
  }

  deactivateStickyRightColumn() {
    if (!this.isStickyRightColumnActive()) {
      return;
    }

    const classes = this.getSettings('classes');
    this.elements.$stickyRightColumn.removeClass(classes.stickyRightColumnActive);
  }
  /**
   * Activates the sticky column
   *
   * @return {void}
   */


  toggleStickyRightColumn() {
    if (!this.getElementSettings('sticky_right_column')) {
      this.deactivateStickyRightColumn();
      return;
    }

    if (!this.isStickyRightColumnActive()) {
      this.activateStickyRightColumn();
    }
  }

  equalizeElementHeight($element) {
    if ($element.length) {
      $element.removeAttr('style'); // first remove the custom height we added so that the new height can be re-calculated according to the content

      let maxHeight = 0;
      $element.each((index, element) => {
        maxHeight = Math.max(maxHeight, element.offsetHeight);
      });

      if (0 < maxHeight) {
        $element.css({
          height: maxHeight + 'px'
        });
      }
    }
  }

}

exports.default = Base;

/***/ }),

/***/ "../modules/woocommerce/assets/js/frontend/handlers/cart.js":
/*!******************************************************************!*\
  !*** ../modules/woocommerce/assets/js/frontend/handlers/cart.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/woocommerce/assets/js/frontend/handlers/base.js"));

class Cart extends _base.default {
  getDefaultSettings(...args) {
    const defaultSettings = super.getDefaultSettings(...args);
    return {
      selectors: { ...defaultSettings.selectors,
        shippingForm: '.shipping-calculator-form',
        quantityInput: '.qty',
        updateCartButton: 'button[name=update_cart]',
        wpHttpRefererInputs: '[name=_wp_http_referer]',
        hiddenInput: 'input[type=hidden]',
        productRemove: '.product-remove a'
      },
      classes: defaultSettings.classes,
      ajaxUrl: elementorProFrontend.config.ajaxurl
    };
  }

  getDefaultElements(...args) {
    const selectors = this.getSettings('selectors');
    return { ...super.getDefaultElements(...args),
      $shippingForm: this.$element.find(selectors.shippingForm),
      $stickyColumn: this.$element.find(selectors.stickyColumn),
      $hiddenInput: this.$element.find(selectors.hiddenInput)
    };
  }

  bindEvents() {
    super.bindEvents();
    const selectors = this.getSettings('selectors');
    elementorFrontend.elements.$body.on('wc_fragments_refreshed', () => this.applyButtonsHoverAnimation());

    if ('yes' === this.getElementSettings('update_cart_automatically')) {
      this.$element.on('click', selectors.quantityInput, () => this.updateCart());
    }

    if (elementorFrontend.isEditMode() || elementorFrontend.isWPPreviewMode()) {
      elementorFrontend.elements.$body.on('wc_fragments_loaded wc_fragments_refreshed', () => {
        this.modifyWpHttpReferer();
        this.disableActions();
      });
    }
  }

  onInit(...args) {
    super.onInit(...args);
    this.toggleStickyRightColumn();
    this.hideHiddenInputsParentElements();

    if (elementorFrontend.isEditMode()) {
      this.elements.$shippingForm.show();
    }

    this.applyButtonsHoverAnimation();

    if (elementorFrontend.isEditMode() || elementorFrontend.isWPPreviewMode()) {
      this.modifyWpHttpReferer();
      this.disableActions();
    }
  }
  /**
   * Using the WooCommerce Cart controls (quantity, remove product) in the editor will cause the cart to disappear.
   * This is because WooCommerce does an ajax round trip where it modifies the cart, then loads that cart into the
   * current page and attempts to grab the elements from that page via ajax. In the Editor, if the page is not
   * published yet, it fetches an empty page that does not contain the required elements. As a result, the cart
   * is rendered empty.
   *
   * Due to this issue, the cart controls (quantity, remove product) need to be disabled in the Editor.
   */


  disableActions() {
    const selectors = this.getSettings('selectors');
    this.$element.find(selectors.updateCartButton).attr({
      disabled: 'disabled',
      'aria-disabled': 'true'
    });

    if (elementorFrontend.isEditMode()) {
      this.$element.find(selectors.quantityInput).attr('disabled', 'disabled');
      this.$element.find(selectors.productRemove).css('pointer-events', 'none');
    }
  }

  onElementChange(propertyName) {
    if ('sticky_right_column' === propertyName) {
      this.toggleStickyRightColumn();
    }
  }

  onDestroy(...args) {
    super.onDestroy(...args);
    this.deactivateStickyRightColumn();
  }

  updateCart() {
    const selectors = this.getSettings('selectors');
    clearTimeout(this._debounce);
    this._debounce = setTimeout(() => {
      this.$element.find(selectors.updateCartButton).trigger('click');
    }, 600);
  }

  applyButtonsHoverAnimation() {
    const elementSettings = this.getElementSettings();

    if (elementSettings.checkout_button_hover_animation) {
      // This element is recaptured every time because the cart markup can refresh
      jQuery('.checkout-button').addClass('elementor-animation-' + elementSettings.checkout_button_hover_animation);
    }

    if (elementSettings.forms_buttons_hover_animation) {
      // This element is recaptured every time because the cart markup can refresh
      jQuery('.shop_table .button').addClass('elementor-animation-' + elementSettings.forms_buttons_hover_animation);
    }
  }
  /**
   * In the editor, WC Frontend JS does not fire (not registered).
   * This causes that hidden inputs parent paragraph elements do not get display:none
   * as they would have on the front end.
   * So this function manually display:none the parent elements of these hidden inputs to avoid having
   * gaps/spaces in the layout caused by these parent elements' margins/paddings.
   */


  hideHiddenInputsParentElements() {
    if (this.isEdit) {
      if (this.elements.$hiddenInput) {
        this.elements.$hiddenInput.parent('.form-row').addClass('elementor-hidden');
      }
    }
  }

  modifyWpHttpReferer() {
    const selectors = this.getSettings('selectors');

    if (elementorFrontend.isEditMode()) {
      this.$element.find(selectors.wpHttpRefererInputs).attr('value', elementor.documents.getCurrent().config.urls.wp_preview);
    }
  }

}

exports.default = Cart;

/***/ }),

/***/ "../modules/woocommerce/assets/js/frontend/handlers/checkout-page.js":
/*!***************************************************************************!*\
  !*** ../modules/woocommerce/assets/js/frontend/handlers/checkout-page.js ***!
  \***************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/woocommerce/assets/js/frontend/handlers/base.js"));

class Checkout extends _base.default {
  getDefaultSettings(...args) {
    const defaultSettings = super.getDefaultSettings(...args);
    return {
      selectors: { ...defaultSettings.selectors,
        container: '.elementor-widget-woocommerce-checkout-page',
        loginForm: '.e-woocommerce-login-anchor',
        loginSubmit: '.e-woocommerce-form-login-submit',
        loginSection: '.e-woocommerce-login-section',
        showCouponForm: '.e-show-coupon-form',
        couponSection: '.e-coupon-anchor',
        showLoginForm: '.e-show-login',
        applyCoupon: '.e-apply-coupon',
        checkoutForm: 'form.woocommerce-checkout',
        couponBox: '.e-coupon-box',
        address: 'address',
        wpHttpRefererInputs: '[name="_wp_http_referer"]'
      },
      classes: defaultSettings.classes,
      ajaxUrl: elementorProFrontend.config.ajaxurl
    };
  }

  getDefaultElements(...args) {
    const selectors = this.getSettings('selectors');
    return { ...super.getDefaultElements(...args),
      $container: this.$element.find(selectors.container),
      $loginForm: this.$element.find(selectors.loginForm),
      $showCouponForm: this.$element.find(selectors.showCouponForm),
      $couponSection: this.$element.find(selectors.couponSection),
      $showLoginForm: this.$element.find(selectors.showLoginForm),
      $applyCoupon: this.$element.find(selectors.applyCoupon),
      $loginSubmit: this.$element.find(selectors.loginSubmit),
      $couponBox: this.$element.find(selectors.couponBox),
      $checkoutForm: this.$element.find(selectors.checkoutForm),
      $loginSection: this.$element.find(selectors.loginSection),
      $address: this.$element.find(selectors.address)
    };
  }

  bindEvents(...args) {
    super.bindEvents(...args);
    this.elements.$showCouponForm.on('click', event => {
      event.preventDefault();
      this.elements.$couponSection.slideToggle();
    });
    this.elements.$showLoginForm.on('click', event => {
      event.preventDefault();
      this.elements.$loginForm.slideToggle();
    });
    this.elements.$applyCoupon.on('click', event => {
      event.preventDefault();
      this.applyCoupon();
    });
    this.elements.$loginSubmit.on('click', event => {
      event.preventDefault();
      this.loginUser();
    });
    elementorFrontend.elements.$body.on('updated_checkout', () => {
      this.applyPurchaseButtonHoverAnimation();
      this.updateWpReferers();
    });
  }

  onInit(...args) {
    super.onInit(...args);
    this.toggleStickyRightColumn();
    this.updateWpReferers();
    this.equalizeElementHeight(this.elements.$address); // equalize <address> boxes height

    if (elementorFrontend.isEditMode()) {
      this.elements.$loginForm.show();
      this.elements.$couponSection.show();
      this.applyPurchaseButtonHoverAnimation();
    }
  }

  onElementChange(propertyName) {
    if ('sticky_right_column' === propertyName) {
      this.toggleStickyRightColumn();
    }
  }

  onDestroy(...args) {
    super.onDestroy(...args);
    this.deactivateStickyRightColumn();
  }

  applyPurchaseButtonHoverAnimation() {
    const purchaseButtonHoverAnimation = this.getElementSettings('purchase_button_hover_animation');

    if (purchaseButtonHoverAnimation) {
      // This element is recaptured every time because the checkout markup can refresh
      jQuery('#place_order').addClass('elementor-animation-' + purchaseButtonHoverAnimation);
    }
  }

  applyCoupon() {
    // wc_checkout_params is required to continue, ensure the object exists
    // eslint-disable-next-line camelcase
    if (!wc_checkout_params) {
      return;
    }

    this.startProcessing(this.elements.$couponBox);
    const data = {
      security: wc_checkout_params.apply_coupon_nonce,
      coupon_code: this.elements.$couponBox.find('input[name="coupon_code"]').val()
    };
    jQuery.ajax({
      type: 'POST',
      url: wc_checkout_params.wc_ajax_url.toString().replace('%%endpoint%%', 'apply_coupon'),
      context: this,
      data,

      success(code) {
        jQuery('.woocommerce-error, .woocommerce-message').remove();
        this.elements.$couponBox.removeClass('processing').unblock();

        if (code) {
          this.elements.$checkoutForm.before(code);
          this.elements.$couponSection.slideUp();
          elementorFrontend.elements.$body.trigger('applied_coupon_in_checkout', [data.coupon_code]);
          elementorFrontend.elements.$body.trigger('update_checkout', {
            update_shipping_method: false
          });
        }
      },

      dataType: 'html'
    });
  }

  loginUser() {
    this.startProcessing(this.elements.$loginSection);
    const data = {
      action: 'elementor_woocommerce_checkout_login_user',
      username: this.elements.$loginSection.find('input[name="username"]').val(),
      password: this.elements.$loginSection.find('input[name="password"]').val(),
      nonce: this.elements.$loginSection.find('input[name="woocommerce-login-nonce"]').val(),
      remember: this.elements.$loginSection.find('input#rememberme').prop('checked')
    };
    jQuery.ajax({
      type: 'POST',
      url: this.getSettings('ajaxUrl'),
      context: this,
      data,

      success(code) {
        code = JSON.parse(code);
        this.elements.$loginSection.removeClass('processing').unblock();
        const messages = jQuery('.woocommerce-error, .woocommerce-message');
        messages.remove();

        if (code.logged_in) {
          location.reload();
        } else {
          this.elements.$checkoutForm.before(code.message);
        }
      }

    });
  }

  startProcessing($form) {
    if ($form.is('.processing')) {
      return;
    }
    /**
     * .block() is from a jQuery blockUI plugin loaded by WooCommerce. This code is based on WooCommerce
     * core in order for the Checkout widget to behave the same as WooCommerce Checkout pages.
     */


    $form.addClass('processing').block({
      message: null,
      overlayCSS: {
        background: '#fff',
        opacity: 0.6
      }
    });
  }
  /**
   * `elementorPostId` and `elementorWidgetId` are added to the url in the `_wp_http_referer` input which is then
   * received when WooCommerce does it's `update_order_review` ajax, and extracted from this url and used with our
   * `load_widget_before_wc_ajax` method.
   */


  updateWpReferers() {
    const selectors = this.getSettings('selectors'),
          wpHttpRefererInputs = this.$element.find(selectors.wpHttpRefererInputs),
          url = new URL(document.location);
    url.searchParams.set('elementorPostId', elementorFrontend.config.post.id);
    url.searchParams.set('elementorWidgetId', this.getID());
    wpHttpRefererInputs.attr('value', url);
  }

}

exports.default = Checkout;

/***/ }),

/***/ "../modules/woocommerce/assets/js/frontend/handlers/menu-cart.js":
/*!***********************************************************************!*\
  !*** ../modules/woocommerce/assets/js/frontend/handlers/menu-cart.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        container: '.elementor-menu-cart__container',
        main: '.elementor-menu-cart__main',
        toggle: '.elementor-menu-cart__toggle',
        toggleButton: '#elementor-menu-cart__toggle_button',
        toggleWrapper: '.elementor-menu-cart__toggle_wrapper',
        closeButton: '.elementor-menu-cart__close-button'
      },
      classes: {
        isShown: 'elementor-menu-cart--shown'
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors');
    return {
      $container: this.$element.find(selectors.container),
      $main: this.$element.find(selectors.main),
      $toggleWrapper: this.$element.find(selectors.toggleWrapper),
      $closeButton: this.$element.find(selectors.closeButton)
    };
  }

  toggleCart() {
    if (!this.isCartOpen) {
      this.showCart();
    } else {
      this.hideCart();
    }
  }

  showCart() {
    if (this.isCartOpen) {
      return;
    }

    const classes = this.getSettings('classes'),
          selectors = this.getSettings('selectors');
    this.isCartOpen = true;
    this.$element.addClass(classes.isShown);
    this.$element.find(selectors.toggleButton).attr('aria-expanded', true);
    this.elements.$main.attr('aria-hidden', false);
    this.elements.$container.attr('aria-hidden', false);
  }

  hideCart() {
    if (!this.isCartOpen) {
      return;
    }

    const classes = this.getSettings('classes'),
          selectors = this.getSettings('selectors');
    this.isCartOpen = false;
    this.$element.removeClass(classes.isShown);
    this.$element.find(selectors.toggleButton).attr('aria-expanded', false);
    this.elements.$main.attr('aria-hidden', true);
    this.elements.$container.attr('aria-hidden', true);
  }

  automaticallyOpenCart() {
    const settings = this.getElementSettings();

    if ('yes' === settings.automatically_open_cart) {
      this.showCart();
    }
  }

  bindEvents() {
    const menuCart = elementorProFrontend.config.menu_cart,
          noQueryParams = -1 === menuCart.cart_page_url.indexOf('?'),
          currentUrl = noQueryParams ? window.location.origin + window.location.pathname : window.location.href,
          cartUrl = menuCart.cart_page_url,
          isCart = menuCart.cart_page_url === currentUrl,
          isCheckout = menuCart.checkout_page_url === currentUrl,
          selectors = this.getSettings('selectors'),
          settings = this.getElementSettings(),
          classes = this.getSettings('classes'); // If on cart page or checkout page don't open cart, rather stay on, or go to cart page, and bail from init.

    if (isCart && isCheckout) {
      this.$element.find(selectors.toggleButton).attr('href', cartUrl);
      return;
    } // Cache cart open state.


    this.isCartOpen = this.$element.hasClass(classes.isShown);

    if ('mouseover' === settings.open_cart) {
      // Enable opening of mini-cart and side-cart by hover (include click so we can `preventDefault()` page-top jump on click).
      this.elements.$toggleWrapper.on('mouseover click', selectors.toggleButton, event => {
        event.preventDefault();
        this.showCart();
      }); // Close Cart on mouseleave.

      this.elements.$toggleWrapper.on('mouseleave', () => this.hideCart());
    } else {
      // Enable opening of mini-cart and side-cart by click.
      this.elements.$toggleWrapper.on('click', selectors.toggleButton, event => {
        event.preventDefault();
        this.toggleCart();
      });
    } // Listen for clicks outside to close any open cart.


    elementorFrontend.elements.$document.on('click', event => {
      if (!this.isCartOpen) {
        return;
      }

      const $target = jQuery(event.target); // Don't close if this is click on the main panel or toggle button.

      if ($target.closest(this.elements.$main).length || $target.closest(selectors.toggle).length) {
        return;
      }

      this.hideCart();
    });
    this.elements.$closeButton.on('click', event => {
      event.preventDefault();
      this.hideCart();
    });
    elementorFrontend.elements.$document.on('keyup', event => {
      var ESC_KEY = 27;

      if (ESC_KEY === event.keyCode) {
        this.hideCart();
      }
    }); // Option to open cart on add to cart.

    elementorFrontend.elements.$body.on('added_to_cart', () => this.automaticallyOpenCart());
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/woocommerce/assets/js/frontend/handlers/my-account.js":
/*!************************************************************************!*\
  !*** ../modules/woocommerce/assets/js/frontend/handlers/my-account.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/woocommerce/assets/js/frontend/handlers/base.js"));

class MyAccountHandler extends _base.default {
  getDefaultSettings() {
    return {
      selectors: {
        address: 'address',
        tabLinks: '.woocommerce-MyAccount-navigation-link a',
        viewOrderButtons: '.my_account_orders .woocommerce-button.view',
        viewOrderLinks: '.woocommerce-orders-table__cell-order-number a',
        authForms: 'form.login, form.register',
        tabWrapper: '.e-my-account-tab',
        tabItem: '.woocommerce-MyAccount-navigation li',
        allPageElements: '[e-my-account-page]',
        purchasenote: 'tr.product-purchase-note'
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors');
    return {
      $address: this.$element.find(selectors.address),
      $tabLinks: this.$element.find(selectors.tabLinks),
      $viewOrderButtons: this.$element.find(selectors.viewOrderButtons),
      $viewOrderLinks: this.$element.find(selectors.viewOrderLinks),
      $authForms: this.$element.find(selectors.authForms),
      $tabWrapper: this.$element.find(selectors.tabWrapper),
      $tabItem: this.$element.find(selectors.tabItem),
      $allPageElements: this.$element.find(selectors.allPageElements),
      $purchasenote: this.$element.find(selectors.purchasenote)
    };
  }

  editorInitTabs() {
    this.elements.$allPageElements.each((index, element) => {
      const currentPage = element.getAttribute('e-my-account-page');
      let $linksToThisPage;

      switch (currentPage) {
        case 'view-order':
          $linksToThisPage = this.elements.$viewOrderLinks.add(this.elements.$viewOrderButtons);
          break;

        default:
          $linksToThisPage = this.$element.find('.woocommerce-MyAccount-navigation-link--' + currentPage);
      }

      $linksToThisPage.on('click', () => {
        this.currentPage = currentPage;
        this.editorShowTab();
      });
    });
  }

  editorShowTab() {
    const $currentPage = this.$element.find('[e-my-account-page="' + this.currentPage + '"]');
    this.$element.attr('e-my-account-page', this.currentPage);
    this.elements.$allPageElements.hide();
    $currentPage.show();
    this.toggleEndpointClasses();

    if ('view-order' !== this.currentPage) {
      this.elements.$tabItem.removeClass('is-active');
      this.$element.find('.woocommerce-MyAccount-navigation-link--' + this.currentPage).addClass('is-active');
    }
    /**
     * We need to run equalizeElementHeights() again when the 'edit-address' or 'view-order' tab is shown, because jQuery cannot
     * get the height of hidden elements, and this tab was hidden on initial page load in the editor.
     */


    if ('edit-address' === this.currentPage || 'view-order' === this.currentPage) {
      this.equalizeElementHeights();
    }
  }

  toggleEndpointClasses() {
    const wcPages = ['dashboard', 'orders', 'view-order', 'downloads', 'edit-account', 'edit-address', 'payment-methods'];
    this.elements.$tabWrapper.removeClass('e-my-account-tab__' + wcPages.join(' e-my-account-tab__'));

    if (wcPages.includes(this.currentPage)) {
      this.elements.$tabWrapper.addClass('e-my-account-tab__' + this.currentPage);
    }
  }

  applyButtonsHoverAnimation() {
    const elementSettings = this.getElementSettings();

    if (elementSettings.forms_buttons_hover_animation) {
      this.$element.find('.woocommerce button.button').addClass('elementor-animation-' + elementSettings.forms_buttons_hover_animation);
    }

    if (elementSettings.tables_button_hover_animation) {
      this.$element.find('.order-again .button, td .button, .woocommerce-pagination .button').addClass('elementor-animation-' + elementSettings.tables_button_hover_animation);
    }
  }

  equalizeElementHeights() {
    this.equalizeElementHeight(this.elements.$address); // equalize <address> boxes height

    if (!this.isEdit) {
      // Auth forms do not display in the Editor
      this.equalizeElementHeight(this.elements.$authForms); // equalize login/reg boxes height
    }
  }
  /**
   * WooCommerce prints the Purchase Note separated from the product name by a border and padding.
   * In Elementor's Order Summary design, the product name and purchase note are displayed un-separated.
   * To achieve this design, it is necessary to access the Product Name line before the Purchase Note line to adjust
   * its padding. Since this cannot be achieved in CSS, it is done in this method.
   */


  removePaddingBetweenPurchaseNote() {
    if (this.elements.$purchasenote) {
      this.elements.$purchasenote.each((index, element) => {
        jQuery(element).prev().children('td').addClass('product-purchase-note-is-below');
      });
    }
  }

  onElementChange(propertyName) {
    // When the 'General Text' Typography or 'Section' Padding is changed, the height of the boxes need to update as well.
    if (0 === propertyName.indexOf('general_text_typography') || 0 === propertyName.indexOf('sections_padding')) {
      this.equalizeElementHeights();
    }

    if (0 === propertyName.indexOf('forms_rows_gap')) {
      this.removePaddingBetweenPurchaseNote();
    }
  }

  bindEvents() {
    super.bindEvents(); // The heights of the Registration and Login boxes need to be recaclulated and equalized when
    // WooCommerce adds validation messages (such as the password strength meter) into these sections.

    elementorFrontend.elements.$body.on('keyup change', '.register #reg_password', () => {
      this.equalizeElementHeights();
    });
  }

  onInit(...args) {
    super.onInit(...args);

    if (this.isEdit) {
      this.editorInitTabs();

      if (!this.$element.attr('e-my-account-page')) {
        this.currentPage = 'dashboard';
      } else {
        this.currentPage = this.$element.attr('e-my-account-page');
      }

      this.editorShowTab();
    }

    this.applyButtonsHoverAnimation();
    this.equalizeElementHeights();
    this.removePaddingBetweenPurchaseNote();
  }

}

exports.default = MyAccountHandler;

/***/ })

},
/******/ __webpack_require__ => { // webpackRuntimeModules
/******/ "use strict";
/******/ 
/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
/******/ __webpack_require__.O(0, ["frontend"], () => (__webpack_exec__("../assets/dev/js/frontend/preloaded-elements-handlers.js")));
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ }
]);
//# sourceMappingURL=preloaded-elements-handlers.js.mapassets/js/archive-posts.22a6d49be96f6e1aa290.bundle.js000064400000036476150755004310015776 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["archive-posts"],{

/***/ "../modules/posts/assets/js/frontend/handlers/cards.js":
/*!*************************************************************!*\
  !*** ../modules/posts/assets/js/frontend/handlers/cards.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _posts = _interopRequireDefault(__webpack_require__(/*! ./posts */ "../modules/posts/assets/js/frontend/handlers/posts.js"));

var _default = _posts.default.extend({
  getSkinPrefix() {
    return 'cards_';
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/posts/assets/js/frontend/handlers/load-more.js":
/*!*****************************************************************!*\
  !*** ../modules/posts/assets/js/frontend/handlers/load-more.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class LoadMore extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        postsContainer: '.elementor-posts-container',
        loadMoreButton: '.elementor-button',
        loadMoreSpinnerWrapper: '.e-load-more-spinner',
        loadMoreSpinner: '.e-load-more-spinner i, .e-load-more-spinner svg',
        loadMoreAnchor: '.e-load-more-anchor'
      },
      classes: {
        loadMoreSpin: 'eicon-animation-spin',
        loadMoreIsLoading: 'e-load-more-pagination-loading',
        loadMorePaginationEnd: 'e-load-more-pagination-end',
        loadMoreNoSpinner: 'e-load-more-no-spinner'
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors');
    return {
      postsWidgetWrapper: this.$element[0],
      postsContainer: this.$element[0].querySelector(selectors.postsContainer),
      loadMoreButton: this.$element[0].querySelector(selectors.loadMoreButton),
      loadMoreSpinnerWrapper: this.$element[0].querySelector(selectors.loadMoreSpinnerWrapper),
      loadMoreSpinner: this.$element[0].querySelector(selectors.loadMoreSpinner),
      loadMoreAnchor: this.$element[0].querySelector(selectors.loadMoreAnchor)
    };
  }

  bindEvents() {
    super.bindEvents(); // Handle load more functionality for on-click type.

    if (!this.elements.loadMoreButton) {
      return;
    }

    this.elements.loadMoreButton.addEventListener('click', event => {
      if (this.isLoading) {
        return;
      }

      event.preventDefault();
      this.handlePostsQuery();
    });
  }

  onInit() {
    super.onInit();
    this.classes = this.getSettings('classes');
    this.isLoading = false;
    const paginationType = this.getElementSettings('pagination_type');

    if ('load_more_on_click' !== paginationType && 'load_more_infinite_scroll' !== paginationType) {
      return;
    }

    this.isInfinteScroll = 'load_more_infinite_scroll' === paginationType; // When spinner is not available, the button's text should not be hidden.

    this.isSpinnerAvailable = this.getElementSettings('load_more_spinner').value;

    if (!this.isSpinnerAvailable) {
      this.elements.postsWidgetWrapper.classList.add(this.classes.loadMoreNoSpinner);
    }

    if (this.isInfinteScroll) {
      this.handleInfiniteScroll();
    } else if (this.elements.loadMoreSpinnerWrapper) {
      // Instead of creating 2 spinners for on-click and infinity-scroll, one spinner will be used so it should be appended to the button in on-click mode.
      this.elements.loadMoreButton.insertAdjacentElement('beforeEnd', this.elements.loadMoreSpinnerWrapper);
    } // Set the post id and element id for the ajax request.


    this.elementId = this.getID();
    this.postId = elementorFrontendConfig.post.id; // Set the current page and last page for handling the load more post and when no more posts to show.

    this.currentPage = parseInt(this.elements.loadMoreAnchor.getAttribute('data-page'));
    this.maxPage = parseInt(this.elements.loadMoreAnchor.getAttribute('data-max-page'));

    if (this.currentPage === this.maxPage) {
      this.handleUiWhenNoPosts();
    }
  } // Handle load more functionality for infinity-scroll type.


  handleInfiniteScroll() {
    if (this.isEdit) {
      return;
    }

    this.observer = elementorModules.utils.Scroll.scrollObserver({
      callback: event => {
        if (!event.isInViewport || this.isLoading) {
          return;
        } // When the observer is triggered it won't be triggered without scrolling, but sometimes there will be no scrollbar to trigger it again.


        this.observer.unobserve(this.elements.loadMoreAnchor);
        this.handlePostsQuery().then(() => {
          if (this.currentPage !== this.maxPage) {
            this.observer.observe(this.elements.loadMoreAnchor);
          }
        });
      }
    });
    this.observer.observe(this.elements.loadMoreAnchor);
  }

  handleUiBeforeLoading() {
    this.isLoading = true;

    if (this.elements.loadMoreSpinner) {
      this.elements.loadMoreSpinner.classList.add(this.classes.loadMoreSpin);
    }

    this.elements.postsWidgetWrapper.classList.add(this.classes.loadMoreIsLoading);
  }

  handleUiAfterLoading() {
    this.isLoading = false;

    if (this.elements.loadMoreSpinner) {
      this.elements.loadMoreSpinner.classList.remove(this.classes.loadMoreSpin);
    }

    if (this.isInfinteScroll && this.elements.loadMoreSpinnerWrapper) {
      // Since the spinner has to be shown after the new content (posts), it should be appended after the anchor element.
      this.elements.loadMoreAnchor.insertAdjacentElement('afterend', this.elements.loadMoreSpinnerWrapper);
    }

    this.elements.postsWidgetWrapper.classList.remove(this.classes.loadMoreIsLoading);
  }

  handleUiWhenNoPosts() {
    this.elements.postsWidgetWrapper.classList.add(this.classes.loadMorePaginationEnd);
  }

  handleSuccessFetch(result) {
    this.handleUiAfterLoading();
    const posts = result.querySelectorAll('.elementor-posts-container > article');
    const nextPageUrl = result.querySelector('.e-load-more-anchor').getAttribute('data-next-page'); // Converting HTMLCollection to an Array and iterate it.

    const postsHTML = [...posts].reduce((accumulator, post) => {
      return accumulator + post.outerHTML;
    }, '');
    this.elements.postsContainer.insertAdjacentHTML('beforeend', postsHTML);
    this.elements.loadMoreAnchor.setAttribute('data-page', this.currentPage);
    this.elements.loadMoreAnchor.setAttribute('data-next-page', nextPageUrl);

    if (this.currentPage === this.maxPage) {
      this.handleUiWhenNoPosts();
    }
  }

  handlePostsQuery() {
    this.handleUiBeforeLoading();
    this.currentPage++;
    const nextPageUrl = this.elements.loadMoreAnchor.getAttribute('data-next-page');
    return fetch(nextPageUrl).then(response => response.text()).then(html => {
      // Convert the HTML string into a document object
      const parser = new DOMParser();
      const doc = parser.parseFromString(html, 'text/html');
      this.handleSuccessFetch(doc);
    }).catch(err => {
      console.warn('Something went wrong.', err);
    });
  }

}

exports.default = LoadMore;

/***/ }),

/***/ "../modules/posts/assets/js/frontend/handlers/posts.js":
/*!*************************************************************!*\
  !*** ../modules/posts/assets/js/frontend/handlers/posts.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  getSkinPrefix() {
    return 'classic_';
  },

  bindEvents() {
    var cid = this.getModelCID();
    elementorFrontend.addListenerOnce(cid, 'resize', this.onWindowResize);
  },

  getClosureMethodsNames() {
    return elementorModules.frontend.handlers.Base.prototype.getClosureMethodsNames.apply(this, arguments).concat(['fitImages', 'onWindowResize', 'runMasonry']);
  },

  getDefaultSettings() {
    return {
      classes: {
        fitHeight: 'elementor-fit-height',
        hasItemRatio: 'elementor-has-item-ratio'
      },
      selectors: {
        postsContainer: '.elementor-posts-container',
        post: '.elementor-post',
        postThumbnail: '.elementor-post__thumbnail',
        postThumbnailImage: '.elementor-post__thumbnail img'
      }
    };
  },

  getDefaultElements() {
    var selectors = this.getSettings('selectors');
    return {
      $postsContainer: this.$element.find(selectors.postsContainer),
      $posts: this.$element.find(selectors.post)
    };
  },

  fitImage($post) {
    var settings = this.getSettings(),
        $imageParent = $post.find(settings.selectors.postThumbnail),
        $image = $imageParent.find('img'),
        image = $image[0];

    if (!image) {
      return;
    }

    var imageParentRatio = $imageParent.outerHeight() / $imageParent.outerWidth(),
        imageRatio = image.naturalHeight / image.naturalWidth;
    $imageParent.toggleClass(settings.classes.fitHeight, imageRatio < imageParentRatio);
  },

  fitImages() {
    var $ = jQuery,
        self = this,
        itemRatio = getComputedStyle(this.$element[0], ':after').content,
        settings = this.getSettings();
    this.elements.$postsContainer.toggleClass(settings.classes.hasItemRatio, !!itemRatio.match(/\d/));

    if (self.isMasonryEnabled()) {
      return;
    }

    this.elements.$posts.each(function () {
      var $post = $(this),
          $image = $post.find(settings.selectors.postThumbnailImage);
      self.fitImage($post);
      $image.on('load', function () {
        self.fitImage($post);
      });
    });
  },

  setColsCountSettings() {
    var currentDeviceMode = elementorFrontend.getCurrentDeviceMode(),
        settings = this.getElementSettings(),
        skinPrefix = this.getSkinPrefix(),
        colsCount;

    switch (currentDeviceMode) {
      case 'mobile':
        colsCount = settings[skinPrefix + 'columns_mobile'];
        break;

      case 'tablet':
        colsCount = settings[skinPrefix + 'columns_tablet'];
        break;

      default:
        colsCount = settings[skinPrefix + 'columns'];
    }

    this.setSettings('colsCount', colsCount);
  },

  isMasonryEnabled() {
    return !!this.getElementSettings(this.getSkinPrefix() + 'masonry');
  },

  initMasonry() {
    imagesLoaded(this.elements.$posts, this.runMasonry);
  },

  runMasonry() {
    var elements = this.elements;
    elements.$posts.css({
      marginTop: '',
      transitionDuration: ''
    });
    this.setColsCountSettings();
    var colsCount = this.getSettings('colsCount'),
        hasMasonry = this.isMasonryEnabled() && colsCount >= 2;
    elements.$postsContainer.toggleClass('elementor-posts-masonry', hasMasonry);

    if (!hasMasonry) {
      elements.$postsContainer.height('');
      return;
    }
    /* The `verticalSpaceBetween` variable is setup in a way that supports older versions of the portfolio widget */


    var verticalSpaceBetween = this.getElementSettings(this.getSkinPrefix() + 'row_gap.size');

    if ('' === this.getSkinPrefix() && '' === verticalSpaceBetween) {
      verticalSpaceBetween = this.getElementSettings(this.getSkinPrefix() + 'item_gap.size');
    }

    var masonry = new elementorModules.utils.Masonry({
      container: elements.$postsContainer,
      items: elements.$posts.filter(':visible'),
      columnsCount: this.getSettings('colsCount'),
      verticalSpaceBetween
    });
    masonry.run();
  },

  run() {
    // For slow browsers
    setTimeout(this.fitImages, 0);
    this.initMasonry();
  },

  onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
    this.bindEvents();
    this.run();
  },

  onWindowResize() {
    this.fitImages();
    this.runMasonry();
  },

  onElementChange() {
    this.fitImages();
    setTimeout(this.runMasonry);
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-load-more.js":
/*!***************************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/frontend/handlers/archive-posts-load-more.js ***!
  \***************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _loadMore = _interopRequireDefault(__webpack_require__(/*! ../../../../../posts/assets/js/frontend/handlers/load-more */ "../modules/posts/assets/js/frontend/handlers/load-more.js"));

class ArchivePostsLoadMore extends _loadMore.default {}

exports.default = ArchivePostsLoadMore;

/***/ }),

/***/ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-cards.js":
/*!****************************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-cards.js ***!
  \****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _cards = _interopRequireDefault(__webpack_require__(/*! ../../../../../posts/assets/js/frontend/handlers/cards */ "../modules/posts/assets/js/frontend/handlers/cards.js"));

var _default = _cards.default.extend({
  getSkinPrefix() {
    return 'archive_cards_';
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-classic.js":
/*!******************************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-classic.js ***!
  \******************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _posts = _interopRequireDefault(__webpack_require__(/*! ../../../../../posts/assets/js/frontend/handlers/posts */ "../modules/posts/assets/js/frontend/handlers/posts.js"));

var _default = _posts.default.extend({
  getSkinPrefix() {
    return 'archive_classic_';
  }

});

exports.default = _default;

/***/ })

}]);
//# sourceMappingURL=archive-posts.22a6d49be96f6e1aa290.bundle.js.mapassets/js/load-more.cd76720206dc6d21abc0.bundle.js000064400000015325150755004310015032 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["load-more"],{

/***/ "../modules/posts/assets/js/frontend/handlers/load-more.js":
/*!*****************************************************************!*\
  !*** ../modules/posts/assets/js/frontend/handlers/load-more.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class LoadMore extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        postsContainer: '.elementor-posts-container',
        loadMoreButton: '.elementor-button',
        loadMoreSpinnerWrapper: '.e-load-more-spinner',
        loadMoreSpinner: '.e-load-more-spinner i, .e-load-more-spinner svg',
        loadMoreAnchor: '.e-load-more-anchor'
      },
      classes: {
        loadMoreSpin: 'eicon-animation-spin',
        loadMoreIsLoading: 'e-load-more-pagination-loading',
        loadMorePaginationEnd: 'e-load-more-pagination-end',
        loadMoreNoSpinner: 'e-load-more-no-spinner'
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors');
    return {
      postsWidgetWrapper: this.$element[0],
      postsContainer: this.$element[0].querySelector(selectors.postsContainer),
      loadMoreButton: this.$element[0].querySelector(selectors.loadMoreButton),
      loadMoreSpinnerWrapper: this.$element[0].querySelector(selectors.loadMoreSpinnerWrapper),
      loadMoreSpinner: this.$element[0].querySelector(selectors.loadMoreSpinner),
      loadMoreAnchor: this.$element[0].querySelector(selectors.loadMoreAnchor)
    };
  }

  bindEvents() {
    super.bindEvents(); // Handle load more functionality for on-click type.

    if (!this.elements.loadMoreButton) {
      return;
    }

    this.elements.loadMoreButton.addEventListener('click', event => {
      if (this.isLoading) {
        return;
      }

      event.preventDefault();
      this.handlePostsQuery();
    });
  }

  onInit() {
    super.onInit();
    this.classes = this.getSettings('classes');
    this.isLoading = false;
    const paginationType = this.getElementSettings('pagination_type');

    if ('load_more_on_click' !== paginationType && 'load_more_infinite_scroll' !== paginationType) {
      return;
    }

    this.isInfinteScroll = 'load_more_infinite_scroll' === paginationType; // When spinner is not available, the button's text should not be hidden.

    this.isSpinnerAvailable = this.getElementSettings('load_more_spinner').value;

    if (!this.isSpinnerAvailable) {
      this.elements.postsWidgetWrapper.classList.add(this.classes.loadMoreNoSpinner);
    }

    if (this.isInfinteScroll) {
      this.handleInfiniteScroll();
    } else if (this.elements.loadMoreSpinnerWrapper) {
      // Instead of creating 2 spinners for on-click and infinity-scroll, one spinner will be used so it should be appended to the button in on-click mode.
      this.elements.loadMoreButton.insertAdjacentElement('beforeEnd', this.elements.loadMoreSpinnerWrapper);
    } // Set the post id and element id for the ajax request.


    this.elementId = this.getID();
    this.postId = elementorFrontendConfig.post.id; // Set the current page and last page for handling the load more post and when no more posts to show.

    this.currentPage = parseInt(this.elements.loadMoreAnchor.getAttribute('data-page'));
    this.maxPage = parseInt(this.elements.loadMoreAnchor.getAttribute('data-max-page'));

    if (this.currentPage === this.maxPage) {
      this.handleUiWhenNoPosts();
    }
  } // Handle load more functionality for infinity-scroll type.


  handleInfiniteScroll() {
    if (this.isEdit) {
      return;
    }

    this.observer = elementorModules.utils.Scroll.scrollObserver({
      callback: event => {
        if (!event.isInViewport || this.isLoading) {
          return;
        } // When the observer is triggered it won't be triggered without scrolling, but sometimes there will be no scrollbar to trigger it again.


        this.observer.unobserve(this.elements.loadMoreAnchor);
        this.handlePostsQuery().then(() => {
          if (this.currentPage !== this.maxPage) {
            this.observer.observe(this.elements.loadMoreAnchor);
          }
        });
      }
    });
    this.observer.observe(this.elements.loadMoreAnchor);
  }

  handleUiBeforeLoading() {
    this.isLoading = true;

    if (this.elements.loadMoreSpinner) {
      this.elements.loadMoreSpinner.classList.add(this.classes.loadMoreSpin);
    }

    this.elements.postsWidgetWrapper.classList.add(this.classes.loadMoreIsLoading);
  }

  handleUiAfterLoading() {
    this.isLoading = false;

    if (this.elements.loadMoreSpinner) {
      this.elements.loadMoreSpinner.classList.remove(this.classes.loadMoreSpin);
    }

    if (this.isInfinteScroll && this.elements.loadMoreSpinnerWrapper) {
      // Since the spinner has to be shown after the new content (posts), it should be appended after the anchor element.
      this.elements.loadMoreAnchor.insertAdjacentElement('afterend', this.elements.loadMoreSpinnerWrapper);
    }

    this.elements.postsWidgetWrapper.classList.remove(this.classes.loadMoreIsLoading);
  }

  handleUiWhenNoPosts() {
    this.elements.postsWidgetWrapper.classList.add(this.classes.loadMorePaginationEnd);
  }

  handleSuccessFetch(result) {
    this.handleUiAfterLoading();
    const posts = result.querySelectorAll('.elementor-posts-container > article');
    const nextPageUrl = result.querySelector('.e-load-more-anchor').getAttribute('data-next-page'); // Converting HTMLCollection to an Array and iterate it.

    const postsHTML = [...posts].reduce((accumulator, post) => {
      return accumulator + post.outerHTML;
    }, '');
    this.elements.postsContainer.insertAdjacentHTML('beforeend', postsHTML);
    this.elements.loadMoreAnchor.setAttribute('data-page', this.currentPage);
    this.elements.loadMoreAnchor.setAttribute('data-next-page', nextPageUrl);

    if (this.currentPage === this.maxPage) {
      this.handleUiWhenNoPosts();
    }
  }

  handlePostsQuery() {
    this.handleUiBeforeLoading();
    this.currentPage++;
    const nextPageUrl = this.elements.loadMoreAnchor.getAttribute('data-next-page');
    return fetch(nextPageUrl).then(response => response.text()).then(html => {
      // Convert the HTML string into a document object
      const parser = new DOMParser();
      const doc = parser.parseFromString(html, 'text/html');
      this.handleSuccessFetch(doc);
    }).catch(err => {
      console.warn('Something went wrong.', err);
    });
  }

}

exports.default = LoadMore;

/***/ })

}]);
//# sourceMappingURL=load-more.cd76720206dc6d21abc0.bundle.js.mapassets/js/table-of-contents.f5cd05278297a9d229e1.bundle.min.js000064400000016327150755004310017160 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[838],{5791:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class TOCHandler extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{widgetContainer:".elementor-widget-container",postContentContainer:'.elementor:not([data-elementor-type="header"]):not([data-elementor-type="footer"]):not([data-elementor-type="popup"])',expandButton:".elementor-toc__toggle-button--expand",collapseButton:".elementor-toc__toggle-button--collapse",body:".elementor-toc__body",headerTitle:".elementor-toc__header-title"},classes:{anchor:"elementor-menu-anchor",listWrapper:"elementor-toc__list-wrapper",listItem:"elementor-toc__list-item",listTextWrapper:"elementor-toc__list-item-text-wrapper",firstLevelListItem:"elementor-toc__top-level",listItemText:"elementor-toc__list-item-text",activeItem:"elementor-item-active",headingAnchor:"elementor-toc__heading-anchor",collapsed:"elementor-toc--collapsed"},listWrapperTag:"numbers"===this.getElementSettings().marker_view?"ol":"ul"}}getDefaultElements(){const e=this.getSettings();return{$pageContainer:this.getContainer(),$widgetContainer:this.$element.find(e.selectors.widgetContainer),$expandButton:this.$element.find(e.selectors.expandButton),$collapseButton:this.$element.find(e.selectors.collapseButton),$tocBody:this.$element.find(e.selectors.body),$listItems:this.$element.find("."+e.classes.listItem)}}getContainer(){const e=this.getSettings(),t=this.getElementSettings();if(t.container)return jQuery(t.container);const s=this.$element.parents(".elementor");return"popup"===s.attr("data-elementor-type")?s:jQuery(e.selectors.postContentContainer)}bindEvents(){const e=this.getElementSettings();e.minimize_box&&(this.elements.$expandButton.on("click",(()=>this.expandBox())),this.elements.$collapseButton.on("click",(()=>this.collapseBox()))),e.collapse_subitems&&this.elements.$listItems.on("hover",(e=>jQuery(e.target).slideToggle()))}getHeadings(){const e=this.getElementSettings(),t=e.headings_by_tags.join(","),s=this.getSettings("selectors"),i=e.exclude_headings_by_selector;return this.elements.$pageContainer.find(t).not(s.headerTitle).filter(((e,t)=>!jQuery(t).closest(i).length))}addAnchorsBeforeHeadings(){const e=this.getSettings("classes");this.elements.$headings.before((t=>{if(!jQuery(this.elements.$headings[t]).data("hasOwnID"))return`<span id="${e.headingAnchor}-${t}" class="${e.anchor} "></span>`}))}activateItem(e){const t=this.getSettings("classes");if(this.deactivateActiveItem(e),e.addClass(t.activeItem),this.$activeItem=e,!this.getElementSettings("collapse_subitems"))return;let s;s=e.hasClass(t.firstLevelListItem)?e.parent().next():e.parents("."+t.listWrapper).eq(-2),s.length?(this.$activeList=s,this.$activeList.stop().slideDown()):delete this.$activeList}deactivateActiveItem(e){if(!this.$activeItem||this.$activeItem.is(e))return;const{classes:t}=this.getSettings();this.$activeItem.removeClass(t.activeItem),!this.$activeList||e&&this.$activeList[0].contains(e[0])||this.$activeList.slideUp()}followAnchor(e,t){const s=e[0].hash;let i;try{i=jQuery(decodeURIComponent(s))}catch(e){return}elementorFrontend.waypoint(i,(s=>{if(this.itemClicked)return;const n=i.attr("id");"down"===s?(this.viewportItems[n]=!0,this.activateItem(e)):(delete this.viewportItems[n],this.activateItem(this.$listItemTexts.eq(t-1)))}),{offset:"bottom-in-view",triggerOnce:!1}),elementorFrontend.waypoint(i,(s=>{if(this.itemClicked)return;const n=i.attr("id");"down"===s?(delete this.viewportItems[n],Object.keys(this.viewportItems).length&&this.activateItem(this.$listItemTexts.eq(t+1))):(this.viewportItems[n]=!0,this.activateItem(e))}),{offset:0,triggerOnce:!1})}followAnchors(){this.$listItemTexts.each(((e,t)=>this.followAnchor(jQuery(t),e)))}populateTOC(){this.listItemPointer=0;this.getElementSettings().hierarchical_view?this.createNestedList():this.createFlatList(),this.$listItemTexts=this.$element.find(".elementor-toc__list-item-text"),this.$listItemTexts.on("click",this.onListItemClick.bind(this)),elementorFrontend.isEditMode()||this.followAnchors()}createNestedList(){this.headingsData.forEach(((e,t)=>{e.level=0;for(let s=t-1;s>=0;s--){const t=this.headingsData[s];if(t.tag<=e.tag){e.level=t.level,t.tag<e.tag&&e.level++;break}}})),this.elements.$tocBody.html(this.getNestedLevel(0))}createFlatList(){this.elements.$tocBody.html(this.getNestedLevel())}getNestedLevel(e){const t=this.getSettings(),s=this.getElementSettings(),i=this.getElementSettings("icon");let n;i&&(n=elementorFrontend.config.experimentalFeatures.e_font_icon_svg&&!elementorFrontend.isEditMode()?i.rendered_tag:`<i class="${i.value}"></i>`);let l=`<${t.listWrapperTag} class="${t.classes.listWrapper}">`;for(;this.listItemPointer<this.headingsData.length;){const o=this.headingsData[this.listItemPointer];let a=t.classes.listItemText;if(0===o.level&&(a+=" "+t.classes.firstLevelListItem),e>o.level)break;if(e===o.level){l+=`<li class="${t.classes.listItem}">`,l+=`<div class="${t.classes.listTextWrapper}">`;let r=`<a href="#${o.anchorLink}" class="${a}">${o.text}</a>`;"bullets"===s.marker_view&&i&&(r=`${n}${r}`),l+=r,l+="</div>",this.listItemPointer++;const h=this.headingsData[this.listItemPointer];h&&e<h.level&&(l+=this.getNestedLevel(h.level)),l+="</li>"}}return l+=`</${t.listWrapperTag}>`,l}handleNoHeadingsFound(){let e=elementorProFrontend.config.i18n.toc_no_headings_found;return elementorFrontend.isEditMode()&&(e=elementorPro.translate("toc_no_headings_found")),this.elements.$tocBody.html(e)}collapseOnInit(){const e=this.getElementSettings("minimized_on"),t=elementorFrontend.getCurrentDeviceMode();("tablet"===e&&"desktop"!==t||"mobile"===e&&"mobile"===t)&&this.collapseBox()}getHeadingAnchorLink(e,t){const s=this.elements.$headings[e].id,i=this.elements.$headings[e].closest(".elementor-widget").id;let n="";return s?n=s:i&&(n=i),s||i?jQuery(this.elements.$headings[e]).data("hasOwnID",!0):n=`${t.headingAnchor}-${e}`,n}setHeadingsData(){this.headingsData=[];const e=this.getSettings("classes");this.elements.$headings.each(((t,s)=>{const i=this.getHeadingAnchorLink(t,e);this.headingsData.push({tag:+s.nodeName.slice(1),text:s.textContent,anchorLink:i})}))}run(){if(this.elements.$headings=this.getHeadings(),!this.elements.$headings.length)return this.handleNoHeadingsFound();this.setHeadingsData(),elementorFrontend.isEditMode()||this.addAnchorsBeforeHeadings(),this.populateTOC(),this.getElementSettings("minimize_box")&&this.collapseOnInit()}expandBox(){const e=this.getCurrentDeviceSetting("min_height");this.$element.removeClass(this.getSettings("classes.collapsed")),this.elements.$tocBody.slideDown(),this.elements.$widgetContainer.css("min-height",e.size+e.unit)}collapseBox(){this.$element.addClass(this.getSettings("classes.collapsed")),this.elements.$tocBody.slideUp(),this.elements.$widgetContainer.css("min-height","0px")}onInit(...e){super.onInit(...e),this.viewportItems=[],jQuery((()=>this.run()))}onListItemClick(e){this.itemClicked=!0,setTimeout((()=>this.itemClicked=!1),2e3);const t=jQuery(e.target),s=t.parent().next(),i=this.getElementSettings("collapse_subitems");let n;i&&t.hasClass(this.getSettings("classes.firstLevelListItem"))&&s.is(":visible")&&(n=!0),this.activateItem(t),i&&n&&s.slideUp()}}t.default=TOCHandler}}]);assets/js/video-playlist.5ee0445e2c9b1f2ed68f.bundle.js000064400000141545150755004310016234 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["video-playlist"],{

/***/ "../modules/video-playlist/assets/js/frontend/base-tabs.js":
/*!*****************************************************************!*\
  !*** ../modules/video-playlist/assets/js/frontend/base-tabs.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

// Copied from the core, original path: elementor/assets/dev/js/frontend/handlers/base-tabs.js.
class baseTabs extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        tablist: '[role="tablist"]',
        tabTitle: '.e-tab-title',
        tabContent: '.e-tab-content'
      },
      classes: {
        active: 'e-active'
      },
      showTabFn: 'show',
      hideTabFn: 'hide',
      toggleSelf: true,
      hidePrevious: true,
      autoExpand: true,
      keyDirection: {
        ArrowLeft: elementorFrontendConfig.is_rtl ? 1 : -1,
        ArrowUp: -1,
        ArrowRight: elementorFrontendConfig.is_rtl ? -1 : 1,
        ArrowDown: 1
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors');
    return {
      $tabTitles: this.findElement(selectors.tabTitle),
      $tabContents: this.findElement(selectors.tabContent)
    };
  }

  activateDefaultTab(videoId) {
    const settings = this.getSettings();

    if (!settings.autoExpand || 'editor' === settings.autoExpand && !this.isEdit) {
      return;
    }

    const defaultActiveTab = this.getEditSettings('activeItemIndex') || videoId || 1,
          originalToggleMethods = {
      showTabFn: settings.showTabFn,
      hideTabFn: settings.hideTabFn
    }; // Toggle tabs without animation to avoid jumping.

    this.setSettings({
      showTabFn: 'show',
      hideTabFn: 'hide'
    });
    this.changeActiveTab(defaultActiveTab); // Return back original toggle effects.

    this.setSettings(originalToggleMethods);
  }

  handleKeyboardNavigation(event) {
    const tab = event.currentTarget,
          $tabList = jQuery(tab.closest(this.getSettings('selectors').tablist)),
          $tabs = $tabList.find(this.getSettings('selectors').tabTitle),
          isVertical = 'vertical' === $tabList.attr('aria-orientation');

    switch (event.key) {
      case 'ArrowLeft':
      case 'ArrowRight':
        if (isVertical) {
          return;
        }

        break;

      case 'ArrowUp':
      case 'ArrowDown':
        if (!isVertical) {
          return;
        }

        event.preventDefault();
        break;

      case 'Home':
        event.preventDefault();
        $tabs.first().trigger('focus');
        return;

      case 'End':
        event.preventDefault();
        $tabs.last().trigger('focus');
        return;

      default:
        return;
    }

    const tabIndex = tab.getAttribute('data-tab') - 1,
          direction = this.getSettings('keyDirection')[event.key],
          nextTab = $tabs[tabIndex + direction];

    if (nextTab) {
      nextTab.focus();
    } else if (-1 === tabIndex + direction) {
      $tabs.last().trigger('focus');
    } else {
      $tabs.first().trigger('focus');
    }
  }

  deactivateActiveTab(tabIndex) {
    const settings = this.getSettings(),
          activeClass = settings.classes.active,
          activeFilter = tabIndex ? '[data-tab="' + tabIndex + '"]' : '.' + activeClass,
          $activeTitle = this.elements.$tabTitles.filter(activeFilter),
          $activeContent = this.elements.$tabContents.filter(activeFilter);
    $activeTitle.add($activeContent).removeClass(activeClass);
    $activeTitle.attr({
      tabindex: '-1',
      'aria-selected': 'false'
    });
    $activeContent[settings.hideTabFn]();
    $activeContent.attr('hidden', 'hidden');
  }

  activateTab(tabIndex) {
    const settings = this.getSettings(),
          activeClass = settings.classes.active,
          $requestedTitle = this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]'),
          $requestedContent = this.elements.$tabContents.filter('[data-tab="' + tabIndex + '"]'),
          animationDuration = 'show' === settings.showTabFn ? 0 : 400;
    $requestedTitle.add($requestedContent).addClass(activeClass);
    $requestedTitle.attr({
      tabindex: '0',
      'aria-selected': 'true'
    });
    $requestedContent[settings.showTabFn](animationDuration, () => elementorFrontend.elements.$window.trigger('resize'));
    $requestedContent.removeAttr('hidden');
  }

  isActiveTab(tabIndex) {
    return this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]').hasClass(this.getSettings('classes.active'));
  }

  bindEvents() {
    this.elements.$tabTitles.on({
      keydown: event => {
        // Support for old markup that includes an `<a>` tag in the tab.
        if (jQuery(event.target).is('a') && `Enter` === event.key) {
          event.preventDefault();
        } // We listen to keydowon event for these keys in order to prevent undesired page scrolling.


        if (['End', 'Home', 'ArrowUp', 'ArrowDown'].includes(event.key)) {
          this.handleKeyboardNavigation(event);
        }
      },
      keyup: event => {
        switch (event.key) {
          case 'ArrowLeft':
          case 'ArrowRight':
            this.handleKeyboardNavigation(event);
            break;

          case 'Enter':
          case 'Space':
            event.preventDefault();
            this.changeActiveTab(event.currentTarget.getAttribute('data-tab'));
            break;
        }
      },
      click: event => {
        event.preventDefault();
        this.changeActiveTab(event.currentTarget.getAttribute('data-tab'));
      }
    });
  }

  onInit(...args) {
    super.onInit(...args); //this.activateDefaultTab();
  }

  changeActiveTab(tabIndex) {
    const isActiveTab = this.isActiveTab(tabIndex),
          settings = this.getSettings();

    if ((settings.toggleSelf || !isActiveTab) && settings.hidePrevious) {
      this.deactivateActiveTab();
    }

    if (!settings.hidePrevious && isActiveTab) {
      this.deactivateActiveTab(tabIndex);
    }

    if (!isActiveTab) {
      this.activateTab(tabIndex);
    }
  }

}

exports.default = baseTabs;

/***/ }),

/***/ "../modules/video-playlist/assets/js/frontend/event-trigger.js":
/*!*********************************************************************!*\
  !*** ../modules/video-playlist/assets/js/frontend/event-trigger.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = triggerEvent;

var _playlistEvent = _interopRequireDefault(__webpack_require__(/*! ./playlist-event */ "../modules/video-playlist/assets/js/frontend/playlist-event.js"));

// Functions to get objects for the playlist event object.
function getEventTabsObject(widgetObject) {
  const currentInnerTabsTitleElements = widgetObject.elements.$innerTabs.filter('.e-active').find('.e-inner-tabs-wrapper .e-inner-tab-title');

  if (currentInnerTabsTitleElements.length) {
    const activeInnerTabTitleElement = currentInnerTabsTitleElements.filter('.e-inner-tab-active');
    return {
      name: activeInnerTabTitleElement.text().trim(),
      index: activeInnerTabTitleElement.index() + 1
    };
  }

  return {
    name: 'none',
    index: 'none'
  };
}

function getEventPlaylistObject(widgetObject, positionInVideoList) {
  const currentVideoIndex = positionInVideoList || widgetObject.currentPlaylistItemIndex;
  return {
    name: widgetObject.getElementSettings('playlist_title'),
    currentItem: currentVideoIndex,
    amount: widgetObject.playlistItemsArray.filter(video => video.videoType !== 'section').length
  };
}

function getEventVideoObject(widgetObject, positionInVideoList) {
  const currentVideoIndex = positionInVideoList || widgetObject.currentPlaylistItemIndex,
        currentVideo = widgetObject.playlistItemsArray[currentVideoIndex - 1];
  return {
    provider: currentVideo.videoType,
    url: currentVideo.videoUrl,
    title: currentVideo.videoTitle,
    duration: currentVideo.videoDuration
  };
}

async function getEventEventObject(widgetObject, eventType, eventTrigger, positionInVideoList) {
  const currentVideoIndex = positionInVideoList || widgetObject.currentPlaylistItemIndex,
        currentVideo = widgetObject.playlistItemsArray[currentVideoIndex - 1];
  return {
    type: eventType,
    time: await currentVideo.playerInstance.getCurrentTime(),
    element: widgetObject.$element,
    trigger: eventTrigger,
    watchCount: currentVideo.playerInstance.watchCount
  };
}

async function triggerEvent(widgetObject, eventType, eventTrigger, positionInVideoList) {
  const currentEvent = new _playlistEvent.default({
    event: await getEventEventObject(widgetObject, eventType, eventTrigger, positionInVideoList),
    tab: getEventTabsObject(widgetObject),
    playlist: getEventPlaylistObject(widgetObject, positionInVideoList),
    video: getEventVideoObject(widgetObject, positionInVideoList)
  });
  jQuery('body').trigger('elementor-video-playList', currentEvent);
}

/***/ }),

/***/ "../modules/video-playlist/assets/js/frontend/handler.js":
/*!***************************************************************!*\
  !*** ../modules/video-playlist/assets/js/frontend/handler.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _baseTabs = _interopRequireDefault(__webpack_require__(/*! ./base-tabs */ "../modules/video-playlist/assets/js/frontend/base-tabs.js"));

var _playerYoutube = _interopRequireDefault(__webpack_require__(/*! ./player-youtube */ "../modules/video-playlist/assets/js/frontend/player-youtube.js"));

var _playerVimeo = _interopRequireDefault(__webpack_require__(/*! ./player-vimeo */ "../modules/video-playlist/assets/js/frontend/player-vimeo.js"));

var _playerHosted = _interopRequireDefault(__webpack_require__(/*! ./player-hosted */ "../modules/video-playlist/assets/js/frontend/player-hosted.js"));

var _scrollUtils = __webpack_require__(/*! ./scroll-utils */ "../modules/video-playlist/assets/js/frontend/scroll-utils.js");

var _innerTabs = __webpack_require__(/*! ./inner-tabs */ "../modules/video-playlist/assets/js/frontend/inner-tabs.js");

var _urlParams = __webpack_require__(/*! ./url-params */ "../modules/video-playlist/assets/js/frontend/url-params.js");

var _eventTrigger = _interopRequireDefault(__webpack_require__(/*! ./event-trigger */ "../modules/video-playlist/assets/js/frontend/event-trigger.js"));

class VideoPlaylistHandler extends _baseTabs.default {
  getDefaultSettings() {
    const defaultSettings = super.getDefaultSettings(),
          selectors = {
      tabsWrapper: '.e-tabs-items-wrapper',
      tabsItems: '.e-tabs-items',
      toggleVideosDisplayButton: '.e-tabs-toggle-videos-display-button',
      videos: '.e-tabs-content-wrapper .e-tab-content',
      innerTabs: '.e-tabs-inner-tabs .e-tab-content',
      imageOverlay: '.elementor-custom-embed-image-overlay'
    };
    return { ...defaultSettings,
      selectors: { ...defaultSettings.selectors,
        ...selectors
      }
    };
  }

  getDefaultElements() {
    const elements = super.getDefaultElements(),
          selectors = this.getSettings('selectors');
    return { ...elements,
      $tabsWrapper: this.findElement(selectors.tabsWrapper),
      $tabsItems: this.findElement(selectors.tabsItems),
      $toggleVideosDisplayButton: this.findElement(selectors.toggleVideosDisplayButton),
      $videos: this.findElement(selectors.videos),
      $innerTabs: this.findElement(selectors.innerTabs),
      $imageOverlay: this.findElement(selectors.imageOverlay)
    };
  }

  initEditorListeners() {
    super.initEditorListeners();
    this.editorListeners.push({
      event: 'elementorPlaylistWidget:fetchVideoData',
      to: elementor.channels.editor,
      callback: e => {
        this.getCurrentPlayerSelected().setVideoProviderData().then(() => {
          e.currentItem = this.getCurrentItemSelected();
          elementor.channels.editor.trigger('elementorPlaylistWidget:setVideoData', e);
        });
      }
    });
  }

  bindEvents() {
    super.bindEvents(); // Handle the click on the image overlay.

    this.elements.$imageOverlay.on({
      click: e => {
        // Remove image overlay if the user clicked it and play the video in case it is not playing.
        e.currentTarget.remove();
        this.getCurrentPlayerSelected().play();
      }
    }); // Handle the inner tab functionality.

    this.elements.$innerTabs.on({
      click: event => {
        (0, _innerTabs.handleInnerTabs)(event, this);
      }
    }); // Handle scroll on the right panel to make the "shadows" effect when the panel is scrollable.

    this.elements.$tabsItems.on({
      scroll: event => {
        (0, _scrollUtils.handleVideosPanelScroll)(this.elements, event);
      }
    }); // Handle the closing/opening right panel in mobile mode.

    this.elements.$toggleVideosDisplayButton.on({
      click: event => {
        jQuery(event.target).toggleClass('rotate-up');
        jQuery(event.target).toggleClass('rotate-down');
        this.elements.$tabsWrapper.slideToggle('slow');
      }
    });
  }

  onInit(...args) {
    super.onInit(...args);
    this.playlistId = this.getID(); // Handle watched videos.

    this.storageKey = 'watched_videos_' + this.getID();
    const storageObject = elementorFrontend.storage.get(this.storageKey);

    if (storageObject) {
      this.watchedVideosArray = JSON.parse(storageObject);
    } else {
      this.watchedVideosArray = [];
    }

    this.watchedIndication = this.getElementSettings('show_watched_indication'); // Handle indication for scrolling in the right panel.

    (0, _scrollUtils.handleVideosPanelScroll)(this.elements); // Handle the video player functionality, includes "on load" and "next up".

    this.isAutoplayOnLoad = 'yes' === this.getElementSettings('autoplay_on_load');
    this.isAutoplayNextUp = 'yes' === this.getElementSettings('autoplay_next');
    this.isFirstVideoActivated = true;
    this.createPlaylistItems(); // Handle display for show more/less button.

    this.isCollapsible = this.getElementSettings('inner_tab_is_content_collapsible');
    this.innerTabsHeightLimit = this.getElementSettings('inner_tab_collapsible_height'); // Keep track of the element that supposed to be paused since the user selected other video.

    this.currentPlayingPlaylistItemIndex = 1; // Handle the first initial activation of the video in the playlist.

    this.activateInitialVideo(); // Handle Inner Tab activation in edit mode.

    this.activateInnerTabInEditMode();
  }

  onEditSettingsChange(propertyName) {
    // The condition will be true when the user clicks the widget to open the edit panel.
    if ('panel' === propertyName) {
      // The boolean below will prevent running twice the activateDefaultTab function when widget first load and user click the item to play it.
      this.preventTabActivation = true;
    }

    if ('activeItemIndex' !== propertyName) {
      return;
    }

    if (this.preventTabActivation) {
      this.preventTabActivation = false;
      return;
    }

    this.activateDefaultTab();
  }

  activateInitialVideo() {
    this.isPageOnLoad = true;
    const isLazyLoad = !!this.getElementSettings('lazy_load'),
          initialTabIndex = (0, _urlParams.handleURLParams)(this.playlistId, this.playlistItemsArray);
    let isUrlParamsExist = false;

    if (initialTabIndex) {
      this.currentPlaylistItemIndex = initialTabIndex;
      this.currentPlayingPlaylistItemIndex = initialTabIndex;
      isUrlParamsExist = true;
    } else {
      this.currentPlaylistItemIndex = 1;
      this.currentPlayingPlaylistItemIndex = 1;
    } // When there are no url parameters and on-load is on, the video should be played, means the url parameters should be set.


    if (this.isAutoplayOnLoad && !isUrlParamsExist) {
      (0, _urlParams.setVideoParams)(this.playlistId, this.playlistItemsArray, this.currentPlaylistItemIndex);
    }

    this.handleFirstVideoActivation(isLazyLoad);
  }
  /*
  	The scenarios for playing the first video after page load:
  	- lazy load off - video will load on page load before user scroll video to view.
  	- lazy load on - video will load when user scroll the video to view.
     */


  handleFirstVideoActivation(isLazyLoad) {
    if (!isLazyLoad) {
      this.activateDefaultTab(this.currentPlaylistItemIndex); // No need to use the observer since "lazy load is" off.

      return;
    }

    const playlistElement = document.querySelector('.elementor-element-' + this.playlistId + ' .e-tabs-main-area'),
          observer = elementorModules.utils.Scroll.scrollObserver({
      callback: event => {
        if (event.isInViewport) {
          this.activateDefaultTab(this.currentPlaylistItemIndex);
          observer.unobserve(playlistElement);
        }
      }
    });
    observer.observe(playlistElement);
  }

  getCurrentItemSelected() {
    return this.playlistItemsArray[this.currentPlaylistItemIndex - 1];
  }

  getCurrentPlayerSelected() {
    return this.getCurrentItemSelected().playerInstance;
  }

  getCurrentPlayerPlaying() {
    return this.playlistItemsArray[this.currentPlayingPlaylistItemIndex - 1].playerInstance;
  } // Handle video selection.


  isVideoShouldBePlayed() {
    // When user select other video, the current video will be paused if is playing.
    if (this.currentPlayingPlaylistItemIndex !== this.currentPlaylistItemIndex) {
      if (this.getCurrentPlayerPlaying()) {
        this.getCurrentPlayerPlaying().pause();
      }

      this.currentPlayingPlaylistItemIndex = this.currentPlaylistItemIndex; // When user select the same video, the current video will be paused if is playing.
    } else if (this.getCurrentPlayerPlaying().isVideoPlaying) {
      this.getCurrentPlayerPlaying().pause();
      return false;
    } // When none of the videos are playing, the selected video should be played.


    return true;
  }

  activateInnerTabInEditMode() {
    if (this.isEdit && this.getEditSettings('innerActiveIndex')) {
      const innerTabActivated = this.getEditSettings('innerActiveIndex'),
            innerTabs = jQuery(this.elements.$innerTabs.eq(this.currentPlaylistItemIndex - 1).find('.e-inner-tab-title a'));
      innerTabs[innerTabActivated].click();
    }
  } // Handle video creation including event listeners and playing video if needed.


  handleVideo(playListItem) {
    // If the video already created (visited once), then just play it if it's not playing already, otherwise pause it.
    if (playListItem.playerInstance) {
      if (this.isVideoShouldBePlayed()) {
        // Remove image overlay if first video item is playing without clicking the image overlay.
        if (1 === this.currentPlaylistItemIndex && this.elements.$imageOverlay) {
          this.elements.$imageOverlay.remove();
        }

        this.playVideoAfterCreation(playListItem);
      }
    } else {
      // If the video is not created yet (first visit), then create the video instance and the event listeners.
      const players = {
        youtube: _playerYoutube.default,
        vimeo: _playerVimeo.default,
        hosted: _playerHosted.default
      }; // Initiating player object.
      // The second parameter holds the video item when event trigger occur with setTimeout.

      playListItem.playerInstance = new players[playListItem.videoType](playListItem, this.currentPlaylistItemIndex);
      playListItem.playerInstance.create().then(() => {
        if (this.isVideoShouldBePlayed()) {
          this.playVideoOnCreation(playListItem);
        } // Handle the functionality when video full screen mode changes.


        playListItem.playerInstance.handleFullScreenChange(isEnterFullScreenMode => {
          // Trigger event when enter/exit full screen mode.
          (0, _eventTrigger.default)(this, isEnterFullScreenMode ? 'videoFullScreen' : 'videoExitFullScreen', 'click');
        }); // Handle the functionality when video play.

        playListItem.playerInstance.handlePlayed(() => {
          const currentPlaylistItem = this.getCurrentItemSelected();
          let videoTrigger = 'click';

          if (currentPlaylistItem.isAutoplayOnLoad) {
            videoTrigger = 'onLoad';
            playListItem.isAutoplayOnLoad = false;
          } else if (currentPlaylistItem.isAutoPlayNextUp) {
            videoTrigger = 'nextVideo';
          } // Trigger event when video started.


          (0, _eventTrigger.default)(this, currentPlaylistItem.playerInstance.isVideoPausedLocal ? 'videoResume' : 'videoStart', videoTrigger);
        }); // Handle the functionality when video ended.

        playListItem.playerInstance.handleEnded(() => {
          // Trigger event when video ended.
          (0, _eventTrigger.default)(this, 'videoEnded', 'click'); // Handle the indication for videos that have been watched and ended.

          if (this.watchedIndication) {
            this.elements.$tabTitles.filter('.e-active').addClass('watched-video');
          }

          const endedVideoId = this.getCurrentItemSelected().dataItemId;

          if (!this.watchedVideosArray.includes(endedVideoId) && this.watchedIndication) {
            this.watchedVideosArray.push(this.getCurrentItemSelected().dataItemId);
            elementorFrontend.storage.set(this.storageKey, JSON.stringify(this.watchedVideosArray));
          } // Handle "next up" functionality.


          if (this.isAutoplayNextUp) {
            // If there are more videos in the list, play next video.
            if (this.playlistItemsArray.length >= ++this.currentPlaylistItemIndex) {
              // Handle the logic for playing next video.
              while ('section' === this.getCurrentItemSelected().videoType) {
                this.currentPlaylistItemIndex++; // When last video in the playlist ended, we reset the this.currentPlaylistItemIndex to the last playlist item index.

                if (this.playlistItemsArray.length < this.currentPlaylistItemIndex) {
                  this.currentPlaylistItemIndex = this.playlistItemsArray.length;
                  return;
                }
              }

              this.changeActiveTab(this.currentPlaylistItemIndex, true);
            }
          }
        }); // Handle the functionality when video paused.
        // The handlePaused will trigger event with setTimeout, positionInVideoList will keep track for the paused video when selecting other video.

        playListItem.playerInstance.handlePaused(positionInVideoList => {
          // Trigger event when video paused.
          (0, _eventTrigger.default)(this, 'videoPaused', 'click', positionInVideoList);
        });
      });
    }
  } // Handle the actual playing of the video that already exists (already created before).


  playVideoAfterCreation(playListItem) {
    playListItem.playerInstance.play();
  } // Handle the actual playing of the video when the video is created.


  playVideoOnCreation(playListItem) {
    // Play the video according to "on load" and "next up" indications.
    if (this.isAutoplayOnLoad) {
      playListItem.isAutoplayOnLoad = true; // Mute the initiated video when "autoplay onload" and then play.

      playListItem.playerInstance.mute();
      playListItem.playerInstance.play();
      this.isAutoplayOnLoad = false;
    } else if (!this.isFirstVideoActivated) {
      playListItem.isAutoPlayNextUp = true;
      playListItem.playerInstance.play();
    }

    this.isFirstVideoActivated = false;
  }

  createPlaylistItems() {
    this.playlistItemsArray = [];
    this.elements.$videos.each((index, tabContent) => {
      const playListItem = {};
      const $tabContent = jQuery(tabContent);
      playListItem.videoUrl = $tabContent.attr('data-video-url');
      playListItem.videoType = $tabContent.attr('data-video-type');
      playListItem.videoTitle = $tabContent.attr('data-video-title');
      playListItem.videoDuration = $tabContent.attr('data-video-duration');
      playListItem.tabContent = tabContent;
      playListItem.dataTab = index + 1;
      playListItem.dataItemId = this.getElementSettings().tabs[index]._id;
      this.playlistItemsArray.push(playListItem);
    }); // When the page loads,the code checks which videos already watched and adding a class accordingly.

    if (this.watchedVideosArray.length > 0 && this.watchedIndication) {
      this.watchedVideosArray.forEach(watchedVideoId => {
        const watchedPlaylistItem = this.playlistItemsArray.find(playlistItem => playlistItem.dataItemId === watchedVideoId);
        this.elements.$tabTitles.filter('[data-tab="' + watchedPlaylistItem.dataTab + '"]').addClass('watched-video');
      });
    }
  }

  changeActiveTab(tabIndex, isVideoSelectedAutomatically) {
    super.changeActiveTab(tabIndex);

    if (this.playlistItemsArray[tabIndex - 1] && this.playlistItemsArray[tabIndex - 1].videoType !== 'section') {
      this.currentPlaylistItemIndex = parseInt(tabIndex);

      if (isVideoSelectedAutomatically) {
        this.currentPlayingPlaylistItemIndex = this.currentPlaylistItemIndex;
      } // Handle on creation of the video and working with it.


      this.handleVideo(this.getCurrentItemSelected(), isVideoSelectedAutomatically); // Set Video params in url only if its not the first video when page load.

      if (!this.isPageOnLoad) {
        (0, _urlParams.setVideoParams)(this.playlistId, this.playlistItemsArray, this.currentPlaylistItemIndex);
      }

      this.isPageOnLoad = false; // Handle the display for the inner tabs buttons as long there are actually inner tabs.

      if (jQuery(this.elements.$innerTabs.eq(tabIndex - 1)).find('.e-inner-tab-content').length > 0) {
        const innerTabsContent = this.elements.$innerTabs.filter('.e-active').find('.e-inner-tab-content');
        (0, _innerTabs.handleInnerTabsButtonsDisplay)(innerTabsContent.toArray(), this.isCollapsible, this.innerTabsHeightLimit);
      }
    }
  }

}

exports.default = VideoPlaylistHandler;

/***/ }),

/***/ "../modules/video-playlist/assets/js/frontend/inner-tabs.js":
/*!******************************************************************!*\
  !*** ../modules/video-playlist/assets/js/frontend/inner-tabs.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.handleInnerTabs = handleInnerTabs;
exports.handleInnerTabsButtonsDisplay = handleInnerTabsButtonsDisplay;
exports.onTabContentButtonsClick = onTabContentButtonsClick;

var _eventTrigger = _interopRequireDefault(__webpack_require__(/*! ./event-trigger */ "../modules/video-playlist/assets/js/frontend/event-trigger.js"));

function toggleInnerTabs(event, clickedTab, widgetObject) {
  const activeTabWrapper = event.currentTarget,
        tabTitles = activeTabWrapper.querySelectorAll('.e-inner-tab-title');

  if (clickedTab.hasClass('e-inner-tab-active') || tabTitles.length < 2) {
    return;
  }

  const tabsContents = activeTabWrapper.querySelectorAll('.e-inner-tab-content');
  tabTitles.forEach(tabTitle => {
    tabTitle.classList.toggle('e-inner-tab-active');
  });
  tabsContents.forEach(tabContent => {
    tabContent.toggleAttribute('hidden');
    tabContent.classList.toggle('e-inner-tab-active');
  });
  handleInnerTabsButtonsDisplay(Array.from(tabsContents), widgetObject.isCollapsible, widgetObject.innerTabsHeightLimit); // Trigger event when tab open.

  (0, _eventTrigger.default)(widgetObject, 'tabOpened', 'click');
}

function handleInnerTabs(event, widgetObject) {
  const clickedTarget = event.target;
  const clickedTagType = clickedTarget.tagName; // Handle click on tab on desktop mode.

  if (clickedTarget.classList.contains('e-inner-tab-title-text')) {
    event.preventDefault();
    const $clickedTab = jQuery(clickedTarget).parent('.e-inner-tab-title');
    toggleInnerTabs(event, $clickedTab, widgetObject);
  } // Handle click on tab on mobile mode.


  if (clickedTarget.classList.contains('e-tab-mobile-title')) {
    const $clickedTab = jQuery(clickedTarget);
    toggleInnerTabs(event, $clickedTab, widgetObject);
  } // Handle click on show-less buttons in tab content.


  if ('button' === clickedTagType.toLowerCase()) {
    onTabContentButtonsClick(event, widgetObject);
  }
}

function handleInnerTabsButtonsDisplay(tabsContents, isCollapsible, innerTabsHeightLimit) {
  if (!isCollapsible) {
    return;
  }

  const activeInnerTab = tabsContents.filter(tabsContent => tabsContent.classList.contains('e-inner-tab-active')),
        innerTabScrollableHeight = activeInnerTab[0].querySelector('.e-inner-tab-text > div').offsetHeight,
        innerTabsLimitHeight = parseInt(innerTabsHeightLimit.size);

  if (innerTabsLimitHeight && innerTabScrollableHeight > innerTabsLimitHeight) {
    activeInnerTab[0].classList.add('show-inner-tab-buttons');
  }
}

function onTabContentButtonsClick(event, widgetObject) {
  const $tabsContent = jQuery(event.currentTarget).find('.e-inner-tab-content'),
        $activeTabContent = $tabsContent.filter('.e-inner-tab-active'),
        buttonsElements = $activeTabContent.find('button');
  buttonsElements.toggleClass('show-button');
  $activeTabContent.toggleClass('show-full-height');
  const eventType = $activeTabContent.hasClass('show-full-height') ? 'tabExpanded' : 'tabCollapsed'; // Trigger event when collapsed/expanded clicked.

  (0, _eventTrigger.default)(widgetObject, eventType, 'click');
}

/***/ }),

/***/ "../modules/video-playlist/assets/js/frontend/player-base.js":
/*!*******************************************************************!*\
  !*** ../modules/video-playlist/assets/js/frontend/player-base.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class PlayerBase {
  constructor(playlistItem, videoIndex) {
    this.playlistItem = playlistItem;
    this.positionInVideoList = videoIndex;
  }

  formatDuration(duration) {
    const dateObj = new Date(duration * 1000),
          hours = dateObj.getUTCHours(),
          minutes = dateObj.getUTCMinutes(),
          seconds = dateObj.getSeconds();

    if (hours !== 0) {
      return `${hours.toString()}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
    }

    return `${minutes.toString()}:${seconds.toString().padStart(2, '0')}`;
  }

}

exports.default = PlayerBase;

/***/ }),

/***/ "../modules/video-playlist/assets/js/frontend/player-hosted.js":
/*!*********************************************************************!*\
  !*** ../modules/video-playlist/assets/js/frontend/player-hosted.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _playerBase = _interopRequireDefault(__webpack_require__(/*! ./player-base */ "../modules/video-playlist/assets/js/frontend/player-base.js"));

class playerHosted extends _playerBase.default {
  constructor(playlistItem, videoIndex) {
    super(playlistItem, videoIndex);
    this.playerObject = null;
    this.watchCount = 0;
    this.isVideoPlaying = false;
    this.isVideoPausedLocal = false;
    this.isVideoSeeking = false;
    this.isVideoEnded = false;
    this.isReady = false;
  }

  create() {
    const videoPromise = new Promise(resolve => {
      const video = document.createElement('video');
      video.setAttribute('controls', '');
      const text = document.createTextNode('Sorry, your browser doesn\'t support embedded videos.');
      const source = document.createElement('source');
      source.setAttribute('src', this.playlistItem.videoUrl);
      source.setAttribute('type', 'video/' + this.playlistItem.videoUrl.split('.').pop());
      video.appendChild(source);
      video.appendChild(text);
      this.playerObject = video;
      this.playlistItem.tabContent.querySelector('div').replaceWith(this.playerObject);
      this.playerObject.addEventListener('canplay', () => {
        // Indication that the video is loaded and can be played and paused.
        this.isReady = true;
        resolve();
      }); // Seeked event indicates that the seeking has been finished, so we reset the boolean for that.

      this.playerObject.addEventListener('seeked', () => {
        this.isVideoSeeking = false;
      }); // Seeking event indicates that the seeking is currently happening, so we change the boolean.

      this.playerObject.addEventListener('seeking', () => {
        clearTimeout(this.seekTimeOut);
        this.isVideoSeeking = true;
      });
    });
    return videoPromise;
  }

  handleEnded(callback) {
    this.playerObject.addEventListener('ended', () => {
      this.watchCount++; // This property will prevent automatic pause trigger when video ended.

      this.isVideoEnded = true;
      this.isVideoPlaying = false;
      callback(this.playlistItem);
    });
  }

  handlePaused(callback) {
    this.playerObject.addEventListener('pause', () => {
      // Prevent pause trigger when the user is seeking video or when the video automatically trigger pause event when ended.
      this.seekTimeOut = setTimeout(() => {
        if (!this.isVideoSeeking && !this.isVideoEnded) {
          callback(this.positionInVideoList); // Indication to know when there is a resume trigger event.

          this.isVideoPausedLocal = true;
        } else {
          this.isVideoEnded = false;
        }
      }, 30);
    });
  }

  handlePlayed(callback) {
    this.playerObject.addEventListener('play', () => {
      // Prevent play trigger when user is seeking video.
      if (!this.isVideoSeeking) {
        callback(this.playlistItem);
      }
    });
  }

  handleFullScreenChange(callback) {
    // Wrapping with jQuery to easily listen all 3 prefixed screen change.
    jQuery(this.playerObject).on('webkitfullscreenchange mozfullscreenchange fullscreenchange', () => {
      callback(document.fullscreenElement);
    });
  }

  getCurrentTime() {
    return this.playerObject.currentTime;
  }

  play() {
    if (!this.isReady) {
      return;
    }

    this.isVideoPlaying = true;
    this.playerObject.play();
  }

  pause() {
    if (!this.isReady) {
      return;
    }

    this.isVideoPlaying = false;
    this.playerObject.pause();
  }

  mute() {
    this.playerObject.muted = true;
  }

}

exports.default = playerHosted;

/***/ }),

/***/ "../modules/video-playlist/assets/js/frontend/player-vimeo.js":
/*!********************************************************************!*\
  !*** ../modules/video-playlist/assets/js/frontend/player-vimeo.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _playerBase = _interopRequireDefault(__webpack_require__(/*! ./player-base */ "../modules/video-playlist/assets/js/frontend/player-base.js"));

class playerVimeo extends _playerBase.default {
  constructor(playlistItem, videoIndex) {
    super(playlistItem, videoIndex);
    this.apiProvider = elementorFrontend.utils.vimeo;
    this.playerObject = null;
    this.watchCount = 0;
    this.isVideoInFullScreenChange = false;
    this.isReady = false;
  }

  create() {
    this.currentVideoID = this.apiProvider.getVideoIDFromURL(this.playlistItem.videoUrl);
    return new Promise(resolve => {
      this.apiProvider.onApiReady(apiObject => {
        const playerOptions = {
          id: this.currentVideoID,
          autoplay: true
        };
        this.playerObject = new apiObject.Player(this.playlistItem.tabContent.querySelector('div'), playerOptions); // Indication that the video is loaded and can be played and paused.

        this.playerObject.ready().then(() => {
          this.isReady = true;
          resolve();
        });
      });
    });
  }

  handleEnded(callback) {
    this.playerObject.on('ended', () => {
      this.watchCount++;
      callback(this.playlistItem);
    });
  }

  handlePaused(callback) {
    this.playerObject.on('pause', event => {
      // Prevent "pause" event trigger when page loads with vimeo video and when vimeo video ended, or when entering/exiting full-screen mode.
      if (0 === event.percent || event.percent >= 1 || this.isVideoInFullScreenChange) {
        return;
      }

      callback(this.positionInVideoList);
    });
  }

  handlePlayed(callback) {
    this.playerObject.on('play', () => {
      if (this.isVideoInFullScreenChange) {
        // Full screen change ended with all the extra events (pause and play).
        this.isVideoInFullScreenChange = false;
        return;
      }

      callback(this.playlistItem);
    });
  }

  handleFullScreenChange(callback) {
    this.playerObject.element.addEventListener('fullscreenchange', () => {
      callback(document.fullscreenElement);
      this.isVideoInFullScreenChange = true;
    });
  }

  getCurrentTime() {
    return this.playerObject.getCurrentTime().then(seconds => seconds);
  }

  play() {
    if (!this.isReady) {
      return;
    }

    this.playerObject.play();
  }

  pause() {
    if (!this.isReady) {
      return;
    }

    this.playerObject.pause();
  }

  mute() {
    this.playerObject.setMuted(true);
  }

  async setVideoProviderData() {
    if (!this.currentVideoID && 9 === !this.currentVideoID.length) {
      return;
    }

    const videoId = await this.playerObject.getVideoId();
    const response = await fetch('https://vimeo.com/api/v2/video/' + videoId + '.json');
    const videoData = await response.json();
    this.playlistItem.duration = this.formatDuration(videoData[0].duration);
    this.playlistItem.video_title = videoData[0].title;
    this.playlistItem.thumbnail = {
      url: videoData[0].thumbnail_medium
    };
    return this.playlistItem;
  }

}

exports.default = playerVimeo;

/***/ }),

/***/ "../modules/video-playlist/assets/js/frontend/player-youtube.js":
/*!**********************************************************************!*\
  !*** ../modules/video-playlist/assets/js/frontend/player-youtube.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _playerBase = _interopRequireDefault(__webpack_require__(/*! ./player-base */ "../modules/video-playlist/assets/js/frontend/player-base.js"));

class playerYoutube extends _playerBase.default {
  constructor(playlistItem, videoIndex) {
    super(playlistItem, videoIndex);
    this.apiProvider = elementorFrontend.utils.youtube;
    this.playerObject = null;
    this.watchCount = 0;
    this.isVideoPlaying = false;
    this.isVideoPausedLocal = false;
    this.isVideoEnded = false;
    this.seekSequenceArray = [];
    this.pauseCurrentTime = null;
    this.isReady = false;
  }

  create() {
    this.currentVideoID = this.apiProvider.getVideoIDFromURL(this.playlistItem.videoUrl);
    const videoPromise = new Promise(resolve => {
      this.apiProvider.onApiReady(apiObject => {
        const playerOptions = {
          width: '773',
          videoId: this.currentVideoID,
          playerVars: {
            rel: 0,
            showinfo: 0,
            ecver: 2
          },
          events: {
            onReady: () => {
              // Indication that the video is loaded and can be played and paused.
              this.isReady = true;
              resolve();
            }
          }
        };
        this.playerObject = new apiObject.Player(this.playlistItem.tabContent.querySelector('div'), playerOptions);
        this.playerObject.addEventListener('onStateChange', event => {
          // Buffering state.
          if (3 === event.data) {
            // When user is seeking we want to prevent triggering for "pause" and "play".
            // Seeking means a sequence as [2,3], so we check that 2 (pause) is exist before adding "3" (buffering).
            // If there is no "2", it means that this is not a seeking event and we can reset the array.
            if (2 === this.seekSequenceArray[this.seekSequenceArray.length - 1]) {
              this.seekSequenceArray.push(3);
            } else {
              this.seekSequenceArray = [];
              clearTimeout(this.seekTimeOut);
            }
          }
        });
      });
    });
    return videoPromise;
  }

  handleEnded(callback) {
    this.playerObject.addEventListener('onStateChange', event => {
      // Ended state.
      if (0 === event.data) {
        this.watchCount++; // Prevent "video start" event when we seek to "0" on video ended event.
        // We seek to "0" to prevent the display of suggested videos by youtube when video ended.

        this.isVideoEnded = true;
        event.target.seekTo(0);
        event.target.stopVideo();
        this.isVideoPlaying = false;
        callback();
      }
    });
  }

  handlePaused(callback) {
    this.playerObject.addEventListener('onStateChange', event => {
      // Pause state.
      if (2 === event.data) {
        // The pause event can be the start of seek event ([2,3] sequence) so we reset the sequence array and adding 2.
        this.seekSequenceArray = [];
        this.seekSequenceArray.push(2); // Save the current time when pause event occur.

        this.pauseCurrentTime = this.playerObject.playerInfo.currentTime; // We use here a setTimeout, since we don't want to fire the pause event before we can be sure that its not part of seek event.

        this.seekTimeOut = setTimeout(() => {
          if (2 === this.seekSequenceArray.length && 2 === this.seekSequenceArray[0] && 3 === this.seekSequenceArray[1]) {
            this.seekSequenceArray = [];
            clearTimeout(this.seekTimeOut);
          } else {
            callback(this.positionInVideoList); // Indication to know when there is a resume trigger event.

            this.isVideoPausedLocal = true;
          }
        }, 1000);
      }
    });
  }

  handlePlayed(callback) {
    this.playerObject.addEventListener('onStateChange', event => {
      // Prevent "video start" event when we seek to "0" on video ended event.
      if (1 === event.data && !this.isVideoEnded) {
        // Prevent "play" event when it is a seek event ([2,3] sequence).
        if (!(2 === this.seekSequenceArray.length && 2 === this.seekSequenceArray[0] && 3 === this.seekSequenceArray[1])) {
          callback();
        }
      } else {
        this.isVideoEnded = false;
      }
    });
  }

  handleError(callback) {
    this.playerObject.addEventListener('onError', () => {
      callback();
    });
  }

  handleFullScreenChange(callback) {
    this.playerObject.h.addEventListener('fullscreenchange', () => {
      callback(document.fullscreenElement);
    });
  }

  getCurrentTime() {
    const currentTime = this.pauseCurrentTime ? this.pauseCurrentTime : this.playerObject.playerInfo.currentTime;
    this.pauseCurrentTime = null;
    return currentTime;
  }

  play() {
    if (!this.isReady) {
      return;
    }

    this.isVideoPlaying = true;
    this.playerObject.playVideo();
  }

  pause() {
    if (!this.isReady) {
      return;
    }

    this.isVideoPlaying = false;
    this.playerObject.pauseVideo();
  }

  mute() {
    this.playerObject.mute();
  }

  async setVideoProviderData() {
    if (!this.isReady) {
      return;
    }

    if (this.currentVideoID && 11 === this.currentVideoID.length) {
      this.playlistItem.thumbnail = {
        url: 'http://img.youtube.com/vi/' + this.playerObject.getVideoData().video_id + '/maxresdefault.jpg'
      };
      this.playlistItem.video_title = this.playerObject.getVideoData().title;
      this.playlistItem.duration = this.formatDuration(this.playerObject.getDuration());
    } else {
      this.playlistItem.thumbnail = {
        url: ''
      };
      this.playlistItem.video_title = '';
      this.playlistItem.duration = '';
    }
  }

}

exports.default = playerYoutube;

/***/ }),

/***/ "../modules/video-playlist/assets/js/frontend/playlist-event.js":
/*!**********************************************************************!*\
  !*** ../modules/video-playlist/assets/js/frontend/playlist-event.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

// state transfer object
class PlaylistEvent {
  constructor({
    event,
    tab,
    playlist,
    video
  }) {
    this.event = {
      type: event.type || '',
      time: event.time || 0,
      element: event.element,
      trigger: event.trigger || '',
      watchCount: event.watchCount || 0
    };
    this.tab = {
      name: tab.name,
      index: tab.index
    };
    this.playlist = {
      name: playlist.name,
      currentItem: playlist.currentItem,
      amount: playlist.amount
    };
    this.video = {
      provider: video.provider,
      url: video.url,
      title: video.title,
      duration: video.duration
    };
  }

}

exports.default = PlaylistEvent;

/***/ }),

/***/ "../modules/video-playlist/assets/js/frontend/scroll-utils.js":
/*!********************************************************************!*\
  !*** ../modules/video-playlist/assets/js/frontend/scroll-utils.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.handleVideosPanelScroll = handleVideosPanelScroll;

// Handle the display of top/bottom shadows in playlist item's panel.
function handleVideosPanelScroll(elements, event) {
  if (!event) {
    if (elements.$tabsItems[0].offsetHeight < elements.$tabsItems[0].scrollHeight) {
      elements.$tabsWrapper.addClass('bottom-shadow');
    }

    return;
  }

  if (event.target.scrollTop > 0) {
    elements.$tabsWrapper.addClass('top-shadow');
  } else {
    elements.$tabsWrapper.removeClass('top-shadow');
  }

  if (event.target.offsetHeight + event.target.scrollTop >= event.target.scrollHeight) {
    elements.$tabsWrapper.removeClass('bottom-shadow');
  } else {
    elements.$tabsWrapper.addClass('bottom-shadow');
  }
}

/***/ }),

/***/ "../modules/video-playlist/assets/js/frontend/url-params.js":
/*!******************************************************************!*\
  !*** ../modules/video-playlist/assets/js/frontend/url-params.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.handleURLParams = handleURLParams;
exports.setVideoParams = setVideoParams;

// Handling the functionality for existing/not-existing url params.
function handleURLParams(playlistId, playlistItemsArray) {
  const params = new URLSearchParams(location.search),
        videoId = params.get('video'),
        playlistName = params.get('playlist'),
        defaultTabIndex = 1; // When there is no data in params, the first video in the list should be active by returning false.

  if (!playlistName) {
    return false;
  } // When there is data in params, we return the tab number for the video.


  if (playlistName === playlistId) {
    const videoItem = playlistItemsArray.find(playlistItem => videoId === playlistItem.dataItemId),
          tabIndex = videoItem ? videoItem.dataTab : defaultTabIndex;

    if (!tabIndex) {
      setVideoParams(playlistId, playlistItemsArray, defaultTabIndex);
    }

    return tabIndex || false;
  }
} // Setting the playlist id and video id on the url.


function setVideoParams(playlistId, playlistItemsArray, videoId) {
  const params = new URLSearchParams(location.search);
  params.set('playlist', playlistId);
  params.set('video', playlistItemsArray[videoId - 1].dataItemId);
  history.replaceState({}, '', location.pathname + '?' + params);
}

/***/ })

}]);
//# sourceMappingURL=video-playlist.5ee0445e2c9b1f2ed68f.bundle.js.mapassets/js/screenshot.js000064400000716623150755004310011214 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js":
/*!********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/array/from.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/array/from */ "../node_modules/core-js/library/fn/array/from.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/array/is-array */ "../node_modules/core-js/library/fn/array/is-array.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/create.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/create.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/create */ "../node_modules/core-js/library/fn/object/create.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js":
/*!**********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js ***!
  \**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/define-properties */ "../node_modules/core-js/library/fn/object/define-properties.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js":
/*!********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/define-property */ "../node_modules/core-js/library/fn/object/define-property.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js":
/*!********************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js ***!
  \********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-own-property-descriptor */ "../node_modules/core-js/library/fn/object/get-own-property-descriptor.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js":
/*!*********************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js ***!
  \*********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-own-property-descriptors */ "../node_modules/core-js/library/fn/object/get-own-property-descriptors.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js":
/*!*****************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js ***!
  \*****************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-own-property-symbols */ "../node_modules/core-js/library/fn/object/get-own-property-symbols.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-prototype-of */ "../node_modules/core-js/library/fn/object/get-prototype-of.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/keys.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/keys */ "../node_modules/core-js/library/fn/object/keys.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/set-prototype-of */ "../node_modules/core-js/library/fn/object/set-prototype-of.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/promise.js":
/*!*****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/promise.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/promise */ "../node_modules/core-js/library/fn/promise.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/reflect/construct */ "../node_modules/core-js/library/fn/reflect/construct.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/reflect/get.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/reflect/get.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/reflect/get */ "../node_modules/core-js/library/fn/reflect/get.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js":
/*!****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/symbol.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/symbol */ "../node_modules/core-js/library/fn/symbol/index.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js ***!
  \*************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/symbol/iterator */ "../node_modules/core-js/library/fn/symbol/iterator.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js":
/*!**************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js ***!
  \**************************************************************************/
/***/ ((module) => {

function _arrayLikeToArray(arr, len) {
  if (len == null || len > arr.length) len = arr.length;

  for (var i = 0, arr2 = new Array(len); i < len; i++) {
    arr2[i] = arr[i];
  }

  return arr2;
}

module.exports = _arrayLikeToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Array$isArray = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/is-array */ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js");

var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js");

function _arrayWithoutHoles(arr) {
  if (_Array$isArray(arr)) return arrayLikeToArray(arr);
}

module.exports = _arrayWithoutHoles;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js ***!
  \*******************************************************************************/
/***/ ((module) => {

function _assertThisInitialized(self) {
  if (self === void 0) {
    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  }

  return self;
}

module.exports = _assertThisInitialized;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js ***!
  \************************************************************************/
/***/ ((module) => {

function _classCallCheck(instance, Constructor) {
  if (!(instance instanceof Constructor)) {
    throw new TypeError("Cannot call a class as a function");
  }
}

module.exports = _classCallCheck;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/createClass.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

function _defineProperties(target, props) {
  for (var i = 0; i < props.length; i++) {
    var descriptor = props[i];
    descriptor.enumerable = descriptor.enumerable || false;
    descriptor.configurable = true;
    if ("value" in descriptor) descriptor.writable = true;

    _Object$defineProperty(target, descriptor.key, descriptor);
  }
}

function _createClass(Constructor, protoProps, staticProps) {
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
  if (staticProps) _defineProperties(Constructor, staticProps);
  return Constructor;
}

module.exports = _createClass;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/createSuper.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/construct */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js");

var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js");

var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ "../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js");

var possibleConstructorReturn = __webpack_require__(/*! ./possibleConstructorReturn.js */ "../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js");

function _createSuper(Derived) {
  var hasNativeReflectConstruct = isNativeReflectConstruct();
  return function _createSuperInternal() {
    var Super = getPrototypeOf(Derived),
        result;

    if (hasNativeReflectConstruct) {
      var NewTarget = getPrototypeOf(this).constructor;
      result = _Reflect$construct(Super, arguments, NewTarget);
    } else {
      result = Super.apply(this, arguments);
    }

    return possibleConstructorReturn(this, result);
  };
}

module.exports = _createSuper;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

function _defineProperty(obj, key, value) {
  if (key in obj) {
    _Object$defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
  } else {
    obj[key] = value;
  }

  return obj;
}

module.exports = _defineProperty;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/get.js":
/*!*************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/get.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$get = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/get */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/get.js");

var _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-descriptor */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js");

var superPropBase = __webpack_require__(/*! ./superPropBase.js */ "../node_modules/@babel/runtime-corejs2/helpers/superPropBase.js");

function _get(target, property, receiver) {
  if (typeof Reflect !== "undefined" && _Reflect$get) {
    module.exports = _get = _Reflect$get;
    module.exports.default = module.exports, module.exports.__esModule = true;
  } else {
    module.exports = _get = function _get(target, property, receiver) {
      var base = superPropBase(target, property);
      if (!base) return;

      var desc = _Object$getOwnPropertyDescriptor(base, property);

      if (desc.get) {
        return desc.get.call(receiver);
      }

      return desc.value;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  }

  return _get(target, property, receiver || target);
}

module.exports = _get;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/set-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js");

var _Object$getPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js");

function _getPrototypeOf(o) {
  module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {
    return o.__proto__ || _Object$getPrototypeOf(o);
  };
  module.exports.default = module.exports, module.exports.__esModule = true;
  return _getPrototypeOf(o);
}

module.exports = _getPrototypeOf;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js":
/*!******************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/inherits.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$create = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/create */ "../node_modules/@babel/runtime-corejs2/core-js/object/create.js");

var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js");

function _inherits(subClass, superClass) {
  if (typeof superClass !== "function" && superClass !== null) {
    throw new TypeError("Super expression must either be null or a function");
  }

  subClass.prototype = _Object$create(superClass && superClass.prototype, {
    constructor: {
      value: subClass,
      writable: true,
      configurable: true
    }
  });
  if (superClass) setPrototypeOf(subClass, superClass);
}

module.exports = _inherits;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js ***!
  \*******************************************************************************/
/***/ ((module) => {

function _interopRequireDefault(obj) {
  return obj && obj.__esModule ? obj : {
    "default": obj
  };
}

module.exports = _interopRequireDefault;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js":
/*!**********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js ***!
  \**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/construct */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js");

function _isNativeReflectConstruct() {
  if (typeof Reflect === "undefined" || !_Reflect$construct) return false;
  if (_Reflect$construct.sham) return false;
  if (typeof Proxy === "function") return true;

  try {
    Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));
    return true;
  } catch (e) {
    return false;
  }
}

module.exports = _isNativeReflectConstruct;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js ***!
  \*************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

var _Array$from = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/from */ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js");

function _iterableToArray(iter) {
  if (typeof _Symbol !== "undefined" && iter[_Symbol$iterator] != null || iter["@@iterator"] != null) return _Array$from(iter);
}

module.exports = _iterableToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js ***!
  \***************************************************************************/
/***/ ((module) => {

function _nonIterableSpread() {
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}

module.exports = _nonIterableSpread;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$keys = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js");

var _Object$getOwnPropertySymbols = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-symbols */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js");

var _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-descriptor */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js");

var _Object$getOwnPropertyDescriptors = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-descriptors */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js");

var _Object$defineProperties = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-properties */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js");

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var defineProperty = __webpack_require__(/*! ./defineProperty.js */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js");

function ownKeys(object, enumerableOnly) {
  var keys = _Object$keys(object);

  if (_Object$getOwnPropertySymbols) {
    var symbols = _Object$getOwnPropertySymbols(object);

    if (enumerableOnly) {
      symbols = symbols.filter(function (sym) {
        return _Object$getOwnPropertyDescriptor(object, sym).enumerable;
      });
    }

    keys.push.apply(keys, symbols);
  }

  return keys;
}

function _objectSpread2(target) {
  for (var i = 1; i < arguments.length; i++) {
    var source = arguments[i] != null ? arguments[i] : {};

    if (i % 2) {
      ownKeys(Object(source), true).forEach(function (key) {
        defineProperty(target, key, source[key]);
      });
    } else if (_Object$getOwnPropertyDescriptors) {
      _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source));
    } else {
      ownKeys(Object(source)).forEach(function (key) {
        _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key));
      });
    }
  }

  return target;
}

module.exports = _objectSpread2;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js":
/*!***********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js ***!
  \***********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _typeof = __webpack_require__(/*! @babel/runtime-corejs2/helpers/typeof */ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js").default;

var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js");

function _possibleConstructorReturn(self, call) {
  if (call && (_typeof(call) === "object" || typeof call === "function")) {
    return call;
  }

  return assertThisInitialized(self);
}

module.exports = _possibleConstructorReturn;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/set-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js");

function _setPrototypeOf(o, p) {
  module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {
    o.__proto__ = p;
    return o;
  };

  module.exports.default = module.exports, module.exports.__esModule = true;
  return _setPrototypeOf(o, p);
}

module.exports = _setPrototypeOf;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/superPropBase.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/superPropBase.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js");

function _superPropBase(object, property) {
  while (!Object.prototype.hasOwnProperty.call(object, property)) {
    object = getPrototypeOf(object);
    if (object === null) break;
  }

  return object;
}

module.exports = _superPropBase;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js");

var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js");

var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js");

var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js");

function _toConsumableArray(arr) {
  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
}

module.exports = _toConsumableArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js":
/*!****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/typeof.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

function _typeof(obj) {
  "@babel/helpers - typeof";

  if (typeof _Symbol === "function" && typeof _Symbol$iterator === "symbol") {
    module.exports = _typeof = function _typeof(obj) {
      return typeof obj;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  } else {
    module.exports = _typeof = function _typeof(obj) {
      return obj && typeof _Symbol === "function" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? "symbol" : typeof obj;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  }

  return _typeof(obj);
}

module.exports = _typeof;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js":
/*!************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js ***!
  \************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Array$from = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/from */ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js");

var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js");

function _unsupportedIterableToArray(o, minLen) {
  if (!o) return;
  if (typeof o === "string") return arrayLikeToArray(o, minLen);
  var n = Object.prototype.toString.call(o).slice(8, -1);
  if (n === "Object" && o.constructor) n = o.constructor.name;
  if (n === "Map" || n === "Set") return _Array$from(o);
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
}

module.exports = _unsupportedIterableToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/core-js/library/fn/array/from.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/fn/array/from.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../../modules/es6.array.from */ "../node_modules/core-js/library/modules/es6.array.from.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Array.from;


/***/ }),

/***/ "../node_modules/core-js/library/fn/array/is-array.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/fn/array/is-array.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.array.is-array */ "../node_modules/core-js/library/modules/es6.array.is-array.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Array.isArray;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/create.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/create.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.create */ "../node_modules/core-js/library/modules/es6.object.create.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function create(P, D) {
  return $Object.create(P, D);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/define-properties.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/define-properties.js ***!
  \**********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.define-properties */ "../node_modules/core-js/library/modules/es6.object.define-properties.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function defineProperties(T, D) {
  return $Object.defineProperties(T, D);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/define-property.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/define-property.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.define-property */ "../node_modules/core-js/library/modules/es6.object.define-property.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function defineProperty(it, key, desc) {
  return $Object.defineProperty(it, key, desc);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-own-property-descriptor.js":
/*!********************************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-own-property-descriptor.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.get-own-property-descriptor */ "../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function getOwnPropertyDescriptor(it, key) {
  return $Object.getOwnPropertyDescriptor(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-own-property-descriptors.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-own-property-descriptors.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es7.object.get-own-property-descriptors */ "../node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.getOwnPropertyDescriptors;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-own-property-symbols.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-own-property-symbols.js ***!
  \*****************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.symbol */ "../node_modules/core-js/library/modules/es6.symbol.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.getOwnPropertySymbols;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-prototype-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-prototype-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.get-prototype-of */ "../node_modules/core-js/library/modules/es6.object.get-prototype-of.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.getPrototypeOf;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/keys.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/keys.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.keys */ "../node_modules/core-js/library/modules/es6.object.keys.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.keys;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/set-prototype-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/set-prototype-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.set-prototype-of */ "../node_modules/core-js/library/modules/es6.object.set-prototype-of.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.setPrototypeOf;


/***/ }),

/***/ "../node_modules/core-js/library/fn/promise.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/library/fn/promise.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../modules/es6.object.to-string */ "../node_modules/core-js/library/modules/es6.object.to-string.js");
__webpack_require__(/*! ../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../modules/web.dom.iterable */ "../node_modules/core-js/library/modules/web.dom.iterable.js");
__webpack_require__(/*! ../modules/es6.promise */ "../node_modules/core-js/library/modules/es6.promise.js");
__webpack_require__(/*! ../modules/es7.promise.finally */ "../node_modules/core-js/library/modules/es7.promise.finally.js");
__webpack_require__(/*! ../modules/es7.promise.try */ "../node_modules/core-js/library/modules/es7.promise.try.js");
module.exports = __webpack_require__(/*! ../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Promise;


/***/ }),

/***/ "../node_modules/core-js/library/fn/reflect/construct.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/fn/reflect/construct.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.reflect.construct */ "../node_modules/core-js/library/modules/es6.reflect.construct.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Reflect.construct;


/***/ }),

/***/ "../node_modules/core-js/library/fn/reflect/get.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/library/fn/reflect/get.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.reflect.get */ "../node_modules/core-js/library/modules/es6.reflect.get.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Reflect.get;


/***/ }),

/***/ "../node_modules/core-js/library/fn/symbol/index.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/fn/symbol/index.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.symbol */ "../node_modules/core-js/library/modules/es6.symbol.js");
__webpack_require__(/*! ../../modules/es6.object.to-string */ "../node_modules/core-js/library/modules/es6.object.to-string.js");
__webpack_require__(/*! ../../modules/es7.symbol.async-iterator */ "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js");
__webpack_require__(/*! ../../modules/es7.symbol.observable */ "../node_modules/core-js/library/modules/es7.symbol.observable.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Symbol;


/***/ }),

/***/ "../node_modules/core-js/library/fn/symbol/iterator.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/fn/symbol/iterator.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../../modules/web.dom.iterable */ "../node_modules/core-js/library/modules/web.dom.iterable.js");
module.exports = __webpack_require__(/*! ../../modules/_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js").f('iterator');


/***/ }),

/***/ "../node_modules/core-js/library/modules/_a-function.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_a-function.js ***!
  \**************************************************************/
/***/ ((module) => {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_add-to-unscopables.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_add-to-unscopables.js ***!
  \**********************************************************************/
/***/ ((module) => {

module.exports = function () { /* empty */ };


/***/ }),

/***/ "../node_modules/core-js/library/modules/_an-instance.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_an-instance.js ***!
  \***************************************************************/
/***/ ((module) => {

module.exports = function (it, Constructor, name, forbiddenField) {
  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
    throw TypeError(name + ': incorrect invocation!');
  } return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_an-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_an-object.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-includes.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-includes.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "../node_modules/core-js/library/modules/_to-absolute-index.js");
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_bind.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_bind.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var invoke = __webpack_require__(/*! ./_invoke */ "../node_modules/core-js/library/modules/_invoke.js");
var arraySlice = [].slice;
var factories = {};

var construct = function (F, len, args) {
  if (!(len in factories)) {
    for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';
    // eslint-disable-next-line no-new-func
    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
  } return factories[len](F, args);
};

module.exports = Function.bind || function bind(that /* , ...args */) {
  var fn = aFunction(this);
  var partArgs = arraySlice.call(arguments, 1);
  var bound = function (/* args... */) {
    var args = partArgs.concat(arraySlice.call(arguments));
    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
  };
  if (isObject(fn.prototype)) bound.prototype = fn.prototype;
  return bound;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_classof.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_classof.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_cof.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_cof.js ***!
  \*******************************************************/
/***/ ((module) => {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_core.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_core.js ***!
  \********************************************************/
/***/ ((module) => {

var core = module.exports = { version: '2.6.12' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/library/modules/_create-property.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_create-property.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $defineProperty = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");

module.exports = function (object, index, value) {
  if (index in object) $defineProperty.f(object, index, createDesc(0, value));
  else object[index] = value;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_ctx.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_ctx.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// optional / simple context binding
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_defined.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_defined.js ***!
  \***********************************************************/
/***/ ((module) => {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_descriptors.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_descriptors.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_dom-create.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_dom-create.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_enum-bug-keys.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_enum-bug-keys.js ***!
  \*****************************************************************/
/***/ ((module) => {

// IE 8- don't enum bug keys
module.exports = (
  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');


/***/ }),

/***/ "../node_modules/core-js/library/modules/_enum-keys.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_enum-keys.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// all enumerable object keys, includes symbols
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
module.exports = function (it) {
  var result = getKeys(it);
  var getSymbols = gOPS.f;
  if (getSymbols) {
    var symbols = getSymbols(it);
    var isEnum = pIE.f;
    var i = 0;
    var key;
    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
  } return result;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_export.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_export.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var IS_WRAP = type & $export.W;
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE];
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
  var key, own, out;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    if (own && has(exports, key)) continue;
    // export native or passed
    out = own ? target[key] : source[key];
    // prevent global pollution for namespaces
    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
    // bind timers to global for call from export context
    : IS_BIND && own ? ctx(out, global)
    // wrap global constructors for prevent change them in library
    : IS_WRAP && target[key] == out ? (function (C) {
      var F = function (a, b, c) {
        if (this instanceof C) {
          switch (arguments.length) {
            case 0: return new C();
            case 1: return new C(a);
            case 2: return new C(a, b);
          } return new C(a, b, c);
        } return C.apply(this, arguments);
      };
      F[PROTOTYPE] = C[PROTOTYPE];
      return F;
    // make static versions for prototype methods
    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
    if (IS_PROTO) {
      (exports.virtual || (exports.virtual = {}))[key] = out;
      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
    }
  }
};
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_fails.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_fails.js ***!
  \*********************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_for-of.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_for-of.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var call = __webpack_require__(/*! ./_iter-call */ "../node_modules/core-js/library/modules/_iter-call.js");
var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "../node_modules/core-js/library/modules/_is-array-iter.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "../node_modules/core-js/library/modules/core.get-iterator-method.js");
var BREAK = {};
var RETURN = {};
var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
  var f = ctx(fn, that, entries ? 2 : 1);
  var index = 0;
  var length, step, iterator, result;
  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
  // fast case for arrays with default iterator
  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
    if (result === BREAK || result === RETURN) return result;
  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
    result = call(iterator, f, step.value, entries);
    if (result === BREAK || result === RETURN) return result;
  }
};
exports.BREAK = BREAK;
exports.RETURN = RETURN;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_global.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_global.js ***!
  \**********************************************************/
/***/ ((module) => {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/library/modules/_has.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_has.js ***!
  \*******************************************************/
/***/ ((module) => {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_hide.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_hide.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_html.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_html.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").document;
module.exports = document && document.documentElement;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_ie8-dom-define.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_ie8-dom-define.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_invoke.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_invoke.js ***!
  \**********************************************************/
/***/ ((module) => {

// fast apply, http://jsperf.lnkit.com/fast-apply/5
module.exports = function (fn, args, that) {
  var un = that === undefined;
  switch (args.length) {
    case 0: return un ? fn()
                      : fn.call(that);
    case 1: return un ? fn(args[0])
                      : fn.call(that, args[0]);
    case 2: return un ? fn(args[0], args[1])
                      : fn.call(that, args[0], args[1]);
    case 3: return un ? fn(args[0], args[1], args[2])
                      : fn.call(that, args[0], args[1], args[2]);
    case 4: return un ? fn(args[0], args[1], args[2], args[3])
                      : fn.call(that, args[0], args[1], args[2], args[3]);
  } return fn.apply(that, args);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iobject.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iobject.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-array-iter.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-array-iter.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// check on default Array iterator
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var ArrayProto = Array.prototype;

module.exports = function (it) {
  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-array.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-array.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-object.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-call.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-call.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// call something on iterator step with safe closing on error
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
module.exports = function (iterator, fn, value, entries) {
  try {
    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
  // 7.4.6 IteratorClose(iterator, completion)
  } catch (e) {
    var ret = iterator['return'];
    if (ret !== undefined) anObject(ret.call(iterator));
    throw e;
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-create.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-create.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var descriptor = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var IteratorPrototype = {};

// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
__webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js")(IteratorPrototype, __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator'), function () { return this; });

module.exports = function (Constructor, NAME, next) {
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
  setToStringTag(Constructor, NAME + ' Iterator');
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-define.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-define.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var $iterCreate = __webpack_require__(/*! ./_iter-create */ "../node_modules/core-js/library/modules/_iter-create.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';

var returnThis = function () { return this; };

module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
  $iterCreate(Constructor, NAME, next);
  var getMethod = function (kind) {
    if (!BUGGY && kind in proto) return proto[kind];
    switch (kind) {
      case KEYS: return function keys() { return new Constructor(this, kind); };
      case VALUES: return function values() { return new Constructor(this, kind); };
    } return function entries() { return new Constructor(this, kind); };
  };
  var TAG = NAME + ' Iterator';
  var DEF_VALUES = DEFAULT == VALUES;
  var VALUES_BUG = false;
  var proto = Base.prototype;
  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
  var $default = $native || getMethod(DEFAULT);
  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
  var methods, key, IteratorPrototype;
  // Fix native
  if ($anyNative) {
    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
      // Set @@toStringTag to native iterators
      setToStringTag(IteratorPrototype, TAG, true);
      // fix for some old engines
      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
    }
  }
  // fix Array#{values, @@iterator}.name in V8 / FF
  if (DEF_VALUES && $native && $native.name !== VALUES) {
    VALUES_BUG = true;
    $default = function values() { return $native.call(this); };
  }
  // Define iterator
  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
    hide(proto, ITERATOR, $default);
  }
  // Plug for library
  Iterators[NAME] = $default;
  Iterators[TAG] = returnThis;
  if (DEFAULT) {
    methods = {
      values: DEF_VALUES ? $default : getMethod(VALUES),
      keys: IS_SET ? $default : getMethod(KEYS),
      entries: $entries
    };
    if (FORCED) for (key in methods) {
      if (!(key in proto)) redefine(proto, key, methods[key]);
    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
  }
  return methods;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-detect.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-detect.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var SAFE_CLOSING = false;

try {
  var riter = [7][ITERATOR]();
  riter['return'] = function () { SAFE_CLOSING = true; };
  // eslint-disable-next-line no-throw-literal
  Array.from(riter, function () { throw 2; });
} catch (e) { /* empty */ }

module.exports = function (exec, skipClosing) {
  if (!skipClosing && !SAFE_CLOSING) return false;
  var safe = false;
  try {
    var arr = [7];
    var iter = arr[ITERATOR]();
    iter.next = function () { return { done: safe = true }; };
    arr[ITERATOR] = function () { return iter; };
    exec(arr);
  } catch (e) { /* empty */ }
  return safe;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-step.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-step.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = function (done, value) {
  return { value: value, done: !!done };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iterators.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iterators.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = {};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_library.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_library.js ***!
  \***********************************************************/
/***/ ((module) => {

module.exports = true;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_meta.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_meta.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var META = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js")('meta');
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var setDesc = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var id = 0;
var isExtensible = Object.isExtensible || function () {
  return true;
};
var FREEZE = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return isExtensible(Object.preventExtensions({}));
});
var setMeta = function (it) {
  setDesc(it, META, { value: {
    i: 'O' + ++id, // object ID
    w: {}          // weak collections IDs
  } });
};
var fastKey = function (it, create) {
  // return primitive with prefix
  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return 'F';
    // not necessary to add metadata
    if (!create) return 'E';
    // add missing metadata
    setMeta(it);
  // return object ID
  } return it[META].i;
};
var getWeak = function (it, create) {
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return true;
    // not necessary to add metadata
    if (!create) return false;
    // add missing metadata
    setMeta(it);
  // return hash weak collections IDs
  } return it[META].w;
};
// add metadata on freeze-family methods calling
var onFreeze = function (it) {
  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
  return it;
};
var meta = module.exports = {
  KEY: META,
  NEED: false,
  fastKey: fastKey,
  getWeak: getWeak,
  onFreeze: onFreeze
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_microtask.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_microtask.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var macrotask = __webpack_require__(/*! ./_task */ "../node_modules/core-js/library/modules/_task.js").set;
var Observer = global.MutationObserver || global.WebKitMutationObserver;
var process = global.process;
var Promise = global.Promise;
var isNode = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js")(process) == 'process';

module.exports = function () {
  var head, last, notify;

  var flush = function () {
    var parent, fn;
    if (isNode && (parent = process.domain)) parent.exit();
    while (head) {
      fn = head.fn;
      head = head.next;
      try {
        fn();
      } catch (e) {
        if (head) notify();
        else last = undefined;
        throw e;
      }
    } last = undefined;
    if (parent) parent.enter();
  };

  // Node.js
  if (isNode) {
    notify = function () {
      process.nextTick(flush);
    };
  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
  } else if (Observer && !(global.navigator && global.navigator.standalone)) {
    var toggle = true;
    var node = document.createTextNode('');
    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
    notify = function () {
      node.data = toggle = !toggle;
    };
  // environments with maybe non-completely correct, but existent Promise
  } else if (Promise && Promise.resolve) {
    // Promise.resolve without an argument throws an error in LG WebOS 2
    var promise = Promise.resolve(undefined);
    notify = function () {
      promise.then(flush);
    };
  // for other environments - macrotask based on:
  // - setImmediate
  // - MessageChannel
  // - window.postMessag
  // - onreadystatechange
  // - setTimeout
  } else {
    notify = function () {
      // strange IE + webpack dev server bug - use .call(global)
      macrotask.call(global, flush);
    };
  }

  return function (fn) {
    var task = { fn: fn, next: undefined };
    if (last) last.next = task;
    if (!head) {
      head = task;
      notify();
    } last = task;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_new-promise-capability.js":
/*!**************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_new-promise-capability.js ***!
  \**************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 25.4.1.5 NewPromiseCapability(C)
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");

function PromiseCapability(C) {
  var resolve, reject;
  this.promise = new C(function ($$resolve, $$reject) {
    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
    resolve = $$resolve;
    reject = $$reject;
  });
  this.resolve = aFunction(resolve);
  this.reject = aFunction(reject);
}

module.exports.f = function (C) {
  return new PromiseCapability(C);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-create.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-create.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var dPs = __webpack_require__(/*! ./_object-dps */ "../node_modules/core-js/library/modules/_object-dps.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');
var Empty = function () { /* empty */ };
var PROTOTYPE = 'prototype';

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = __webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js")('iframe');
  var i = enumBugKeys.length;
  var lt = '<';
  var gt = '>';
  var iframeDocument;
  iframe.style.display = 'none';
  __webpack_require__(/*! ./_html */ "../node_modules/core-js/library/modules/_html.js").appendChild(iframe);
  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
  // createDict = iframe.contentWindow.Object;
  // html.removeChild(iframe);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
  iframeDocument.close();
  createDict = iframeDocument.F;
  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
  return createDict();
};

module.exports = Object.create || function create(O, Properties) {
  var result;
  if (O !== null) {
    Empty[PROTOTYPE] = anObject(O);
    result = new Empty();
    Empty[PROTOTYPE] = null;
    // add "__proto__" for Object.getPrototypeOf polyfill
    result[IE_PROTO] = O;
  } else result = createDict();
  return Properties === undefined ? result : dPs(result, Properties);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-dp.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-dp.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/library/modules/_ie8-dom-define.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var dP = Object.defineProperty;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-dps.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-dps.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");

module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var keys = getKeys(Properties);
  var length = keys.length;
  var i = 0;
  var P;
  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopd.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopd.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/library/modules/_ie8-dom-define.js");
var gOPD = Object.getOwnPropertyDescriptor;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? gOPD : function getOwnPropertyDescriptor(O, P) {
  O = toIObject(O);
  P = toPrimitive(P, true);
  if (IE8_DOM_DEFINE) try {
    return gOPD(O, P);
  } catch (e) { /* empty */ }
  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopn-ext.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopn-ext.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var gOPN = __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js").f;
var toString = {}.toString;

var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
  ? Object.getOwnPropertyNames(window) : [];

var getWindowNames = function (it) {
  try {
    return gOPN(it);
  } catch (e) {
    return windowNames.slice();
  }
};

module.exports.f = function getOwnPropertyNames(it) {
  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopn.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopn.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/library/modules/_object-keys-internal.js");
var hiddenKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js").concat('length', 'prototype');

exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
  return $keys(O, hiddenKeys);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gops.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gops.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports) => {

exports.f = Object.getOwnPropertySymbols;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gpo.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gpo.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');
var ObjectProto = Object.prototype;

module.exports = Object.getPrototypeOf || function (O) {
  O = toObject(O);
  if (has(O, IE_PROTO)) return O[IE_PROTO];
  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
    return O.constructor.prototype;
  } return O instanceof Object ? ObjectProto : null;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-keys-internal.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-keys-internal.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var arrayIndexOf = __webpack_require__(/*! ./_array-includes */ "../node_modules/core-js/library/modules/_array-includes.js")(false);
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');

module.exports = function (object, names) {
  var O = toIObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (has(O, key = names[i++])) {
    ~arrayIndexOf(result, key) || result.push(key);
  }
  return result;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-keys.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-keys.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/library/modules/_object-keys-internal.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js");

module.exports = Object.keys || function keys(O) {
  return $keys(O, enumBugKeys);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-pie.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-pie.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports) => {

exports.f = {}.propertyIsEnumerable;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-sap.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-sap.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// most Object methods by ES6 should accept primitives
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
module.exports = function (KEY, exec) {
  var fn = (core.Object || {})[KEY] || Object[KEY];
  var exp = {};
  exp[KEY] = exec(fn);
  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_own-keys.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_own-keys.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// all object keys, includes non-enumerable and symbols
var gOPN = __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js");
var gOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var Reflect = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Reflect;
module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
  var keys = gOPN.f(anObject(it));
  var getSymbols = gOPS.f;
  return getSymbols ? keys.concat(getSymbols(it)) : keys;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_perform.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_perform.js ***!
  \***********************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return { e: false, v: exec() };
  } catch (e) {
    return { e: true, v: e };
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_promise-resolve.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_promise-resolve.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/library/modules/_new-promise-capability.js");

module.exports = function (C, x) {
  anObject(C);
  if (isObject(x) && x.constructor === C) return x;
  var promiseCapability = newPromiseCapability.f(C);
  var resolve = promiseCapability.resolve;
  resolve(x);
  return promiseCapability.promise;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_property-desc.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_property-desc.js ***!
  \*****************************************************************/
/***/ ((module) => {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_redefine-all.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_redefine-all.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
module.exports = function (target, src, safe) {
  for (var key in src) {
    if (safe && target[key]) target[key] = src[key];
    else hide(target, key, src[key]);
  } return target;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_redefine.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_redefine.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-proto.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-proto.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var check = function (O, proto) {
  anObject(O);
  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
};
module.exports = {
  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
    function (test, buggy, set) {
      try {
        set = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js")(Function.call, __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js").f(Object.prototype, '__proto__').set, 2);
        set(test, []);
        buggy = !(test instanceof Array);
      } catch (e) { buggy = true; }
      return function setPrototypeOf(O, proto) {
        check(O, proto);
        if (buggy) O.__proto__ = proto;
        else set(O, proto);
        return O;
      };
    }({}, false) : undefined),
  check: check
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-species.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-species.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species');

module.exports = function (KEY) {
  var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
    configurable: true,
    get: function () { return this; }
  });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-to-string-tag.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-to-string-tag.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var def = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');

module.exports = function (it, tag, stat) {
  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_shared-key.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_shared-key.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js")('keys');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
module.exports = function (key) {
  return shared[key] || (shared[key] = uid(key));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_shared.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_shared.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js") ? 'pure' : 'global',
  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_species-constructor.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_species-constructor.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.3.20 SpeciesConstructor(O, defaultConstructor)
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species');
module.exports = function (O, D) {
  var C = anObject(O).constructor;
  var S;
  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_string-at.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_string-at.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_task.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_task.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var invoke = __webpack_require__(/*! ./_invoke */ "../node_modules/core-js/library/modules/_invoke.js");
var html = __webpack_require__(/*! ./_html */ "../node_modules/core-js/library/modules/_html.js");
var cel = __webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var process = global.process;
var setTask = global.setImmediate;
var clearTask = global.clearImmediate;
var MessageChannel = global.MessageChannel;
var Dispatch = global.Dispatch;
var counter = 0;
var queue = {};
var ONREADYSTATECHANGE = 'onreadystatechange';
var defer, channel, port;
var run = function () {
  var id = +this;
  // eslint-disable-next-line no-prototype-builtins
  if (queue.hasOwnProperty(id)) {
    var fn = queue[id];
    delete queue[id];
    fn();
  }
};
var listener = function (event) {
  run.call(event.data);
};
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
if (!setTask || !clearTask) {
  setTask = function setImmediate(fn) {
    var args = [];
    var i = 1;
    while (arguments.length > i) args.push(arguments[i++]);
    queue[++counter] = function () {
      // eslint-disable-next-line no-new-func
      invoke(typeof fn == 'function' ? fn : Function(fn), args);
    };
    defer(counter);
    return counter;
  };
  clearTask = function clearImmediate(id) {
    delete queue[id];
  };
  // Node.js 0.8-
  if (__webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js")(process) == 'process') {
    defer = function (id) {
      process.nextTick(ctx(run, id, 1));
    };
  // Sphere (JS game engine) Dispatch API
  } else if (Dispatch && Dispatch.now) {
    defer = function (id) {
      Dispatch.now(ctx(run, id, 1));
    };
  // Browsers with MessageChannel, includes WebWorkers
  } else if (MessageChannel) {
    channel = new MessageChannel();
    port = channel.port2;
    channel.port1.onmessage = listener;
    defer = ctx(port.postMessage, port, 1);
  // Browsers with postMessage, skip WebWorkers
  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
    defer = function (id) {
      global.postMessage(id + '', '*');
    };
    global.addEventListener('message', listener, false);
  // IE8-
  } else if (ONREADYSTATECHANGE in cel('script')) {
    defer = function (id) {
      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
        html.removeChild(this);
        run.call(id);
      };
    };
  // Rest old browsers
  } else {
    defer = function (id) {
      setTimeout(ctx(run, id, 1), 0);
    };
  }
}
module.exports = {
  set: setTask,
  clear: clearTask
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-absolute-index.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-absolute-index.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-integer.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-integer.js ***!
  \**************************************************************/
/***/ ((module) => {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-iobject.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-iobject.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/library/modules/_iobject.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-length.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-length.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.15 ToLength
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-object.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-primitive.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-primitive.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_uid.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_uid.js ***!
  \*******************************************************/
/***/ ((module) => {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_user-agent.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_user-agent.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var navigator = global.navigator;

module.exports = navigator && navigator.userAgent || '';


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks-define.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks-define.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var wksExt = __webpack_require__(/*! ./_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js");
var defineProperty = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
module.exports = function (name) {
  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks-ext.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks-ext.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

exports.f = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js");


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var store = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js")('wks');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
var Symbol = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),

/***/ "../node_modules/core-js/library/modules/core.get-iterator-method.js":
/*!***************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/core.get-iterator-method.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/library/modules/_classof.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
module.exports = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js").getIteratorMethod = function (it) {
  if (it != undefined) return it[ITERATOR]
    || it['@@iterator']
    || Iterators[classof(it)];
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.from.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.from.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var call = __webpack_require__(/*! ./_iter-call */ "../node_modules/core-js/library/modules/_iter-call.js");
var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "../node_modules/core-js/library/modules/_is-array-iter.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var createProperty = __webpack_require__(/*! ./_create-property */ "../node_modules/core-js/library/modules/_create-property.js");
var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "../node_modules/core-js/library/modules/core.get-iterator-method.js");

$export($export.S + $export.F * !__webpack_require__(/*! ./_iter-detect */ "../node_modules/core-js/library/modules/_iter-detect.js")(function (iter) { Array.from(iter); }), 'Array', {
  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
    var O = toObject(arrayLike);
    var C = typeof this == 'function' ? this : Array;
    var aLen = arguments.length;
    var mapfn = aLen > 1 ? arguments[1] : undefined;
    var mapping = mapfn !== undefined;
    var index = 0;
    var iterFn = getIterFn(O);
    var length, result, step, iterator;
    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
    // if object isn't iterable or it's array with default iterator - use simple case
    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
      }
    } else {
      length = toLength(O.length);
      for (result = new C(length); length > index; index++) {
        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
      }
    }
    result.length = index;
    return result;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.is-array.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.is-array.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");

$export($export.S, 'Array', { isArray: __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.iterator.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.iterator.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/library/modules/_add-to-unscopables.js");
var step = __webpack_require__(/*! ./_iter-step */ "../node_modules/core-js/library/modules/_iter-step.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");

// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
module.exports = __webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/library/modules/_iter-define.js")(Array, 'Array', function (iterated, kind) {
  this._t = toIObject(iterated); // target
  this._i = 0;                   // next index
  this._k = kind;                // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var kind = this._k;
  var index = this._i++;
  if (!O || index >= O.length) {
    this._t = undefined;
    return step(1);
  }
  if (kind == 'keys') return step(0, index);
  if (kind == 'values') return step(0, O[index]);
  return step(0, [index, O[index]]);
}, 'values');

// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
Iterators.Arguments = Iterators.Array;

addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.create.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.create.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
$export($export.S, 'Object', { create: __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.define-properties.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.define-properties.js ***!
  \*******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js"), 'Object', { defineProperties: __webpack_require__(/*! ./_object-dps */ "../node_modules/core-js/library/modules/_object-dps.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.define-property.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.define-property.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js"), 'Object', { defineProperty: __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js":
/*!*****************************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js ***!
  \*****************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var $getOwnPropertyDescriptor = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js").f;

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('getOwnPropertyDescriptor', function () {
  return function getOwnPropertyDescriptor(it, key) {
    return $getOwnPropertyDescriptor(toIObject(it), key);
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.get-prototype-of.js":
/*!******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.get-prototype-of.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 Object.getPrototypeOf(O)
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var $getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('getPrototypeOf', function () {
  return function getPrototypeOf(it) {
    return $getPrototypeOf(toObject(it));
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.keys.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.keys.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 Object.keys(O)
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var $keys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('keys', function () {
  return function keys(it) {
    return $keys(toObject(it));
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.set-prototype-of.js":
/*!******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.set-prototype-of.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.3.19 Object.setPrototypeOf(O, proto)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(/*! ./_set-proto */ "../node_modules/core-js/library/modules/_set-proto.js").set });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.to-string.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.to-string.js ***!
  \***********************************************************************/
/***/ (() => {



/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.promise.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.promise.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/library/modules/_classof.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var anInstance = __webpack_require__(/*! ./_an-instance */ "../node_modules/core-js/library/modules/_an-instance.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");
var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "../node_modules/core-js/library/modules/_species-constructor.js");
var task = __webpack_require__(/*! ./_task */ "../node_modules/core-js/library/modules/_task.js").set;
var microtask = __webpack_require__(/*! ./_microtask */ "../node_modules/core-js/library/modules/_microtask.js")();
var newPromiseCapabilityModule = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/library/modules/_new-promise-capability.js");
var perform = __webpack_require__(/*! ./_perform */ "../node_modules/core-js/library/modules/_perform.js");
var userAgent = __webpack_require__(/*! ./_user-agent */ "../node_modules/core-js/library/modules/_user-agent.js");
var promiseResolve = __webpack_require__(/*! ./_promise-resolve */ "../node_modules/core-js/library/modules/_promise-resolve.js");
var PROMISE = 'Promise';
var TypeError = global.TypeError;
var process = global.process;
var versions = process && process.versions;
var v8 = versions && versions.v8 || '';
var $Promise = global[PROMISE];
var isNode = classof(process) == 'process';
var empty = function () { /* empty */ };
var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;

var USE_NATIVE = !!function () {
  try {
    // correct subclassing with @@species support
    var promise = $Promise.resolve(1);
    var FakePromise = (promise.constructor = {})[__webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species')] = function (exec) {
      exec(empty, empty);
    };
    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
    return (isNode || typeof PromiseRejectionEvent == 'function')
      && promise.then(empty) instanceof FakePromise
      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
      // we can't detect it synchronously, so just check versions
      && v8.indexOf('6.6') !== 0
      && userAgent.indexOf('Chrome/66') === -1;
  } catch (e) { /* empty */ }
}();

// helpers
var isThenable = function (it) {
  var then;
  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
};
var notify = function (promise, isReject) {
  if (promise._n) return;
  promise._n = true;
  var chain = promise._c;
  microtask(function () {
    var value = promise._v;
    var ok = promise._s == 1;
    var i = 0;
    var run = function (reaction) {
      var handler = ok ? reaction.ok : reaction.fail;
      var resolve = reaction.resolve;
      var reject = reaction.reject;
      var domain = reaction.domain;
      var result, then, exited;
      try {
        if (handler) {
          if (!ok) {
            if (promise._h == 2) onHandleUnhandled(promise);
            promise._h = 1;
          }
          if (handler === true) result = value;
          else {
            if (domain) domain.enter();
            result = handler(value); // may throw
            if (domain) {
              domain.exit();
              exited = true;
            }
          }
          if (result === reaction.promise) {
            reject(TypeError('Promise-chain cycle'));
          } else if (then = isThenable(result)) {
            then.call(result, resolve, reject);
          } else resolve(result);
        } else reject(value);
      } catch (e) {
        if (domain && !exited) domain.exit();
        reject(e);
      }
    };
    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
    promise._c = [];
    promise._n = false;
    if (isReject && !promise._h) onUnhandled(promise);
  });
};
var onUnhandled = function (promise) {
  task.call(global, function () {
    var value = promise._v;
    var unhandled = isUnhandled(promise);
    var result, handler, console;
    if (unhandled) {
      result = perform(function () {
        if (isNode) {
          process.emit('unhandledRejection', value, promise);
        } else if (handler = global.onunhandledrejection) {
          handler({ promise: promise, reason: value });
        } else if ((console = global.console) && console.error) {
          console.error('Unhandled promise rejection', value);
        }
      });
      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
    } promise._a = undefined;
    if (unhandled && result.e) throw result.v;
  });
};
var isUnhandled = function (promise) {
  return promise._h !== 1 && (promise._a || promise._c).length === 0;
};
var onHandleUnhandled = function (promise) {
  task.call(global, function () {
    var handler;
    if (isNode) {
      process.emit('rejectionHandled', promise);
    } else if (handler = global.onrejectionhandled) {
      handler({ promise: promise, reason: promise._v });
    }
  });
};
var $reject = function (value) {
  var promise = this;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  promise._v = value;
  promise._s = 2;
  if (!promise._a) promise._a = promise._c.slice();
  notify(promise, true);
};
var $resolve = function (value) {
  var promise = this;
  var then;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  try {
    if (promise === value) throw TypeError("Promise can't be resolved itself");
    if (then = isThenable(value)) {
      microtask(function () {
        var wrapper = { _w: promise, _d: false }; // wrap
        try {
          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
        } catch (e) {
          $reject.call(wrapper, e);
        }
      });
    } else {
      promise._v = value;
      promise._s = 1;
      notify(promise, false);
    }
  } catch (e) {
    $reject.call({ _w: promise, _d: false }, e); // wrap
  }
};

// constructor polyfill
if (!USE_NATIVE) {
  // 25.4.3.1 Promise(executor)
  $Promise = function Promise(executor) {
    anInstance(this, $Promise, PROMISE, '_h');
    aFunction(executor);
    Internal.call(this);
    try {
      executor(ctx($resolve, this, 1), ctx($reject, this, 1));
    } catch (err) {
      $reject.call(this, err);
    }
  };
  // eslint-disable-next-line no-unused-vars
  Internal = function Promise(executor) {
    this._c = [];             // <- awaiting reactions
    this._a = undefined;      // <- checked in isUnhandled reactions
    this._s = 0;              // <- state
    this._d = false;          // <- done
    this._v = undefined;      // <- value
    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
    this._n = false;          // <- notify
  };
  Internal.prototype = __webpack_require__(/*! ./_redefine-all */ "../node_modules/core-js/library/modules/_redefine-all.js")($Promise.prototype, {
    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
    then: function then(onFulfilled, onRejected) {
      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
      reaction.fail = typeof onRejected == 'function' && onRejected;
      reaction.domain = isNode ? process.domain : undefined;
      this._c.push(reaction);
      if (this._a) this._a.push(reaction);
      if (this._s) notify(this, false);
      return reaction.promise;
    },
    // 25.4.5.1 Promise.prototype.catch(onRejected)
    'catch': function (onRejected) {
      return this.then(undefined, onRejected);
    }
  });
  OwnPromiseCapability = function () {
    var promise = new Internal();
    this.promise = promise;
    this.resolve = ctx($resolve, promise, 1);
    this.reject = ctx($reject, promise, 1);
  };
  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
    return C === $Promise || C === Wrapper
      ? new OwnPromiseCapability(C)
      : newGenericPromiseCapability(C);
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
__webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js")($Promise, PROMISE);
__webpack_require__(/*! ./_set-species */ "../node_modules/core-js/library/modules/_set-species.js")(PROMISE);
Wrapper = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js")[PROMISE];

// statics
$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
  // 25.4.4.5 Promise.reject(r)
  reject: function reject(r) {
    var capability = newPromiseCapability(this);
    var $$reject = capability.reject;
    $$reject(r);
    return capability.promise;
  }
});
$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
  // 25.4.4.6 Promise.resolve(x)
  resolve: function resolve(x) {
    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
  }
});
$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(/*! ./_iter-detect */ "../node_modules/core-js/library/modules/_iter-detect.js")(function (iter) {
  $Promise.all(iter)['catch'](empty);
})), PROMISE, {
  // 25.4.4.1 Promise.all(iterable)
  all: function all(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var resolve = capability.resolve;
    var reject = capability.reject;
    var result = perform(function () {
      var values = [];
      var index = 0;
      var remaining = 1;
      forOf(iterable, false, function (promise) {
        var $index = index++;
        var alreadyCalled = false;
        values.push(undefined);
        remaining++;
        C.resolve(promise).then(function (value) {
          if (alreadyCalled) return;
          alreadyCalled = true;
          values[$index] = value;
          --remaining || resolve(values);
        }, reject);
      });
      --remaining || resolve(values);
    });
    if (result.e) reject(result.v);
    return capability.promise;
  },
  // 25.4.4.4 Promise.race(iterable)
  race: function race(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var reject = capability.reject;
    var result = perform(function () {
      forOf(iterable, false, function (promise) {
        C.resolve(promise).then(capability.resolve, reject);
      });
    });
    if (result.e) reject(result.v);
    return capability.promise;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.reflect.construct.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.reflect.construct.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var bind = __webpack_require__(/*! ./_bind */ "../node_modules/core-js/library/modules/_bind.js");
var rConstruct = (__webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Reflect || {}).construct;

// MS Edge supports only 2 arguments and argumentsList argument is optional
// FF Nightly sets third argument as `new.target`, but does not create `this` from it
var NEW_TARGET_BUG = fails(function () {
  function F() { /* empty */ }
  return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);
});
var ARGS_BUG = !fails(function () {
  rConstruct(function () { /* empty */ });
});

$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {
  construct: function construct(Target, args /* , newTarget */) {
    aFunction(Target);
    anObject(args);
    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
    if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);
    if (Target == newTarget) {
      // w/o altered newTarget, optimization for 0-4 arguments
      switch (args.length) {
        case 0: return new Target();
        case 1: return new Target(args[0]);
        case 2: return new Target(args[0], args[1]);
        case 3: return new Target(args[0], args[1], args[2]);
        case 4: return new Target(args[0], args[1], args[2], args[3]);
      }
      // w/o altered newTarget, lot of arguments case
      var $args = [null];
      $args.push.apply($args, args);
      return new (bind.apply(Target, $args))();
    }
    // with altered newTarget, not support built-in constructors
    var proto = newTarget.prototype;
    var instance = create(isObject(proto) ? proto : Object.prototype);
    var result = Function.apply.call(Target, instance, args);
    return isObject(result) ? result : instance;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.reflect.get.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.reflect.get.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.6 Reflect.get(target, propertyKey [, receiver])
var gOPD = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js");
var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");

function get(target, propertyKey /* , receiver */) {
  var receiver = arguments.length < 3 ? target : arguments[2];
  var desc, proto;
  if (anObject(target) === receiver) return target[propertyKey];
  if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')
    ? desc.value
    : desc.get !== undefined
      ? desc.get.call(receiver)
      : undefined;
  if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);
}

$export($export.S, 'Reflect', { get: get });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.string.iterator.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.string.iterator.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $at = __webpack_require__(/*! ./_string-at */ "../node_modules/core-js/library/modules/_string-at.js")(true);

// 21.1.3.27 String.prototype[@@iterator]()
__webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/library/modules/_iter-define.js")(String, 'String', function (iterated) {
  this._t = String(iterated); // target
  this._i = 0;                // next index
// 21.1.5.2.1 %StringIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var index = this._i;
  var point;
  if (index >= O.length) return { value: undefined, done: true };
  point = $at(O, index);
  this._i += point.length;
  return { value: point, done: false };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.symbol.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.symbol.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// ECMAScript 6 symbols shim
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var META = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js").KEY;
var $fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
var wks = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js");
var wksExt = __webpack_require__(/*! ./_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js");
var wksDefine = __webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js");
var enumKeys = __webpack_require__(/*! ./_enum-keys */ "../node_modules/core-js/library/modules/_enum-keys.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var _create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var gOPNExt = __webpack_require__(/*! ./_object-gopn-ext */ "../node_modules/core-js/library/modules/_object-gopn-ext.js");
var $GOPD = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js");
var $GOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var $DP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var $keys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPD = $GOPD.f;
var dP = $DP.f;
var gOPN = gOPNExt.f;
var $Symbol = global.Symbol;
var $JSON = global.JSON;
var _stringify = $JSON && $JSON.stringify;
var PROTOTYPE = 'prototype';
var HIDDEN = wks('_hidden');
var TO_PRIMITIVE = wks('toPrimitive');
var isEnum = {}.propertyIsEnumerable;
var SymbolRegistry = shared('symbol-registry');
var AllSymbols = shared('symbols');
var OPSymbols = shared('op-symbols');
var ObjectProto = Object[PROTOTYPE];
var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
var QObject = global.QObject;
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;

// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
var setSymbolDesc = DESCRIPTORS && $fails(function () {
  return _create(dP({}, 'a', {
    get: function () { return dP(this, 'a', { value: 7 }).a; }
  })).a != 7;
}) ? function (it, key, D) {
  var protoDesc = gOPD(ObjectProto, key);
  if (protoDesc) delete ObjectProto[key];
  dP(it, key, D);
  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
} : dP;

var wrap = function (tag) {
  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
  sym._k = tag;
  return sym;
};

var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
  return typeof it == 'symbol';
} : function (it) {
  return it instanceof $Symbol;
};

var $defineProperty = function defineProperty(it, key, D) {
  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
  anObject(it);
  key = toPrimitive(key, true);
  anObject(D);
  if (has(AllSymbols, key)) {
    if (!D.enumerable) {
      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
      it[HIDDEN][key] = true;
    } else {
      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
      D = _create(D, { enumerable: createDesc(0, false) });
    } return setSymbolDesc(it, key, D);
  } return dP(it, key, D);
};
var $defineProperties = function defineProperties(it, P) {
  anObject(it);
  var keys = enumKeys(P = toIObject(P));
  var i = 0;
  var l = keys.length;
  var key;
  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
  return it;
};
var $create = function create(it, P) {
  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
};
var $propertyIsEnumerable = function propertyIsEnumerable(key) {
  var E = isEnum.call(this, key = toPrimitive(key, true));
  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
  it = toIObject(it);
  key = toPrimitive(key, true);
  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
  var D = gOPD(it, key);
  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
  return D;
};
var $getOwnPropertyNames = function getOwnPropertyNames(it) {
  var names = gOPN(toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
  } return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
  var IS_OP = it === ObjectProto;
  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
  } return result;
};

// 19.4.1.1 Symbol([description])
if (!USE_NATIVE) {
  $Symbol = function Symbol() {
    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
    var $set = function (value) {
      if (this === ObjectProto) $set.call(OPSymbols, value);
      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
      setSymbolDesc(this, tag, createDesc(1, value));
    };
    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
    return wrap(tag);
  };
  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
    return this._k;
  });

  $GOPD.f = $getOwnPropertyDescriptor;
  $DP.f = $defineProperty;
  __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js").f = gOPNExt.f = $getOwnPropertyNames;
  __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js").f = $propertyIsEnumerable;
  $GOPS.f = $getOwnPropertySymbols;

  if (DESCRIPTORS && !__webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js")) {
    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
  }

  wksExt.f = function (name) {
    return wrap(wks(name));
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });

for (var es6Symbols = (
  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);

for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);

$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
  // 19.4.2.1 Symbol.for(key)
  'for': function (key) {
    return has(SymbolRegistry, key += '')
      ? SymbolRegistry[key]
      : SymbolRegistry[key] = $Symbol(key);
  },
  // 19.4.2.5 Symbol.keyFor(sym)
  keyFor: function keyFor(sym) {
    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
  },
  useSetter: function () { setter = true; },
  useSimple: function () { setter = false; }
});

$export($export.S + $export.F * !USE_NATIVE, 'Object', {
  // 19.1.2.2 Object.create(O [, Properties])
  create: $create,
  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
  defineProperty: $defineProperty,
  // 19.1.2.3 Object.defineProperties(O, Properties)
  defineProperties: $defineProperties,
  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
  // 19.1.2.7 Object.getOwnPropertyNames(O)
  getOwnPropertyNames: $getOwnPropertyNames,
  // 19.1.2.8 Object.getOwnPropertySymbols(O)
  getOwnPropertySymbols: $getOwnPropertySymbols
});

// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
// https://bugs.chromium.org/p/v8/issues/detail?id=3443
var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });

$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
    return $GOPS.f(toObject(it));
  }
});

// 24.3.2 JSON.stringify(value [, replacer [, space]])
$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
  var S = $Symbol();
  // MS Edge converts symbol values to JSON as {}
  // WebKit converts symbol values to JSON as null
  // V8 throws on boxed symbols
  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
})), 'JSON', {
  stringify: function stringify(it) {
    var args = [it];
    var i = 1;
    var replacer, $replacer;
    while (arguments.length > i) args.push(arguments[i++]);
    $replacer = replacer = args[1];
    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
    if (!isArray(replacer)) replacer = function (key, value) {
      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
      if (!isSymbol(value)) return value;
    };
    args[1] = replacer;
    return _stringify.apply($JSON, args);
  }
});

// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
// 19.4.3.5 Symbol.prototype[@@toStringTag]
setToStringTag($Symbol, 'Symbol');
// 20.2.1.9 Math[@@toStringTag]
setToStringTag(Math, 'Math', true);
// 24.3.3 JSON[@@toStringTag]
setToStringTag(global.JSON, 'JSON', true);


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js":
/*!******************************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js ***!
  \******************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-object-getownpropertydescriptors
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var ownKeys = __webpack_require__(/*! ./_own-keys */ "../node_modules/core-js/library/modules/_own-keys.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var gOPD = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js");
var createProperty = __webpack_require__(/*! ./_create-property */ "../node_modules/core-js/library/modules/_create-property.js");

$export($export.S, 'Object', {
  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
    var O = toIObject(object);
    var getDesc = gOPD.f;
    var keys = ownKeys(O);
    var result = {};
    var i = 0;
    var key, desc;
    while (keys.length > i) {
      desc = getDesc(O, key = keys[i++]);
      if (desc !== undefined) createProperty(result, key, desc);
    }
    return result;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.promise.finally.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.promise.finally.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// https://github.com/tc39/proposal-promise-finally

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "../node_modules/core-js/library/modules/_species-constructor.js");
var promiseResolve = __webpack_require__(/*! ./_promise-resolve */ "../node_modules/core-js/library/modules/_promise-resolve.js");

$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
  var C = speciesConstructor(this, core.Promise || global.Promise);
  var isFunction = typeof onFinally == 'function';
  return this.then(
    isFunction ? function (x) {
      return promiseResolve(C, onFinally()).then(function () { return x; });
    } : onFinally,
    isFunction ? function (e) {
      return promiseResolve(C, onFinally()).then(function () { throw e; });
    } : onFinally
  );
} });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.promise.try.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.promise.try.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/tc39/proposal-promise-try
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/library/modules/_new-promise-capability.js");
var perform = __webpack_require__(/*! ./_perform */ "../node_modules/core-js/library/modules/_perform.js");

$export($export.S, 'Promise', { 'try': function (callbackfn) {
  var promiseCapability = newPromiseCapability.f(this);
  var result = perform(callbackfn);
  (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
  return promiseCapability.promise;
} });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js":
/*!****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.symbol.async-iterator.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js")('asyncIterator');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.symbol.observable.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.symbol.observable.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js")('observable');


/***/ }),

/***/ "../node_modules/core-js/library/modules/web.dom.iterable.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/web.dom.iterable.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./es6.array.iterator */ "../node_modules/core-js/library/modules/es6.array.iterator.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var TO_STRING_TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');

var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
  'TextTrackList,TouchList').split(',');

for (var i = 0; i < DOMIterables.length; i++) {
  var NAME = DOMIterables[i];
  var Collection = global[NAME];
  var proto = Collection && Collection.prototype;
  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
  Iterators[NAME] = Iterators.Array;
}


/***/ }),

/***/ "../node_modules/core-js/modules/_a-function.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_a-function.js ***!
  \******************************************************/
/***/ ((module) => {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_add-to-unscopables.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/_add-to-unscopables.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 22.1.3.31 Array.prototype[@@unscopables]
var UNSCOPABLES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('unscopables');
var ArrayProto = Array.prototype;
if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js")(ArrayProto, UNSCOPABLES, {});
module.exports = function (key) {
  ArrayProto[UNSCOPABLES][key] = true;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_an-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_an-object.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-includes.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/_array-includes.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/modules/_to-iobject.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "../node_modules/core-js/modules/_to-absolute-index.js");
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-methods.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_array-methods.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 0 -> Array#forEach
// 1 -> Array#map
// 2 -> Array#filter
// 3 -> Array#some
// 4 -> Array#every
// 5 -> Array#find
// 6 -> Array#findIndex
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js");
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/modules/_iobject.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/modules/_to-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var asc = __webpack_require__(/*! ./_array-species-create */ "../node_modules/core-js/modules/_array-species-create.js");
module.exports = function (TYPE, $create) {
  var IS_MAP = TYPE == 1;
  var IS_FILTER = TYPE == 2;
  var IS_SOME = TYPE == 3;
  var IS_EVERY = TYPE == 4;
  var IS_FIND_INDEX = TYPE == 6;
  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
  var create = $create || asc;
  return function ($this, callbackfn, that) {
    var O = toObject($this);
    var self = IObject(O);
    var f = ctx(callbackfn, that, 3);
    var length = toLength(self.length);
    var index = 0;
    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
    var val, res;
    for (;length > index; index++) if (NO_HOLES || index in self) {
      val = self[index];
      res = f(val, index, O);
      if (TYPE) {
        if (IS_MAP) result[index] = res;   // map
        else if (res) switch (TYPE) {
          case 3: return true;             // some
          case 5: return val;              // find
          case 6: return index;            // findIndex
          case 2: result.push(val);        // filter
        } else if (IS_EVERY) return false; // every
      }
    }
    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-species-constructor.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/modules/_array-species-constructor.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/modules/_is-array.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('species');

module.exports = function (original) {
  var C;
  if (isArray(original)) {
    C = original.constructor;
    // cross-realm fallback
    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
    if (isObject(C)) {
      C = C[SPECIES];
      if (C === null) C = undefined;
    }
  } return C === undefined ? Array : C;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-species-create.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_array-species-create.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
var speciesConstructor = __webpack_require__(/*! ./_array-species-constructor */ "../node_modules/core-js/modules/_array-species-constructor.js");

module.exports = function (original, length) {
  return new (speciesConstructor(original))(length);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_classof.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_classof.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_cof.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_cof.js ***!
  \***********************************************/
/***/ ((module) => {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_core.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_core.js ***!
  \************************************************/
/***/ ((module) => {

var core = module.exports = { version: '2.6.12' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/modules/_ctx.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_ctx.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// optional / simple context binding
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/modules/_a-function.js");
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_defined.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_defined.js ***!
  \***************************************************/
/***/ ((module) => {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_descriptors.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_descriptors.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/modules/_dom-create.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_dom-create.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),

/***/ "../node_modules/core-js/modules/_enum-bug-keys.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_enum-bug-keys.js ***!
  \*********************************************************/
/***/ ((module) => {

// IE 8- don't enum bug keys
module.exports = (
  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');


/***/ }),

/***/ "../node_modules/core-js/modules/_export.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_export.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js");
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
  var key, own, out, exp;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    // export native or passed
    out = (own ? target : source)[key];
    // bind timers to global for call from export context
    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // extend global
    if (target) redefine(target, key, out, type & $export.U);
    // export
    if (exports[key] != out) hide(exports, key, exp);
    if (IS_PROTO && expProto[key] != out) expProto[key] = out;
  }
};
global.core = core;
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),

/***/ "../node_modules/core-js/modules/_fails.js":
/*!*************************************************!*\
  !*** ../node_modules/core-js/modules/_fails.js ***!
  \*************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),

/***/ "../node_modules/core-js/modules/_function-to-string.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/_function-to-string.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('native-function-to-string', Function.toString);


/***/ }),

/***/ "../node_modules/core-js/modules/_global.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_global.js ***!
  \**************************************************/
/***/ ((module) => {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/modules/_has.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_has.js ***!
  \***********************************************/
/***/ ((module) => {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_hide.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_hide.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/modules/_property-desc.js");
module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_html.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_html.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").document;
module.exports = document && document.documentElement;


/***/ }),

/***/ "../node_modules/core-js/modules/_ie8-dom-define.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/_ie8-dom-define.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () {
  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/modules/_iobject.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_iobject.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-array.js":
/*!****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-array.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-object.js ***!
  \*****************************************************/
/***/ ((module) => {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),

/***/ "../node_modules/core-js/modules/_iter-create.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_iter-create.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/modules/_object-create.js");
var descriptor = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/modules/_property-desc.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/modules/_set-to-string-tag.js");
var IteratorPrototype = {};

// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
__webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js")(IteratorPrototype, __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('iterator'), function () { return this; });

module.exports = function (Constructor, NAME, next) {
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
  setToStringTag(Constructor, NAME + ' Iterator');
};


/***/ }),

/***/ "../node_modules/core-js/modules/_iter-define.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_iter-define.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/modules/_library.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/modules/_iterators.js");
var $iterCreate = __webpack_require__(/*! ./_iter-create */ "../node_modules/core-js/modules/_iter-create.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/modules/_set-to-string-tag.js");
var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/modules/_object-gpo.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('iterator');
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';

var returnThis = function () { return this; };

module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
  $iterCreate(Constructor, NAME, next);
  var getMethod = function (kind) {
    if (!BUGGY && kind in proto) return proto[kind];
    switch (kind) {
      case KEYS: return function keys() { return new Constructor(this, kind); };
      case VALUES: return function values() { return new Constructor(this, kind); };
    } return function entries() { return new Constructor(this, kind); };
  };
  var TAG = NAME + ' Iterator';
  var DEF_VALUES = DEFAULT == VALUES;
  var VALUES_BUG = false;
  var proto = Base.prototype;
  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
  var $default = $native || getMethod(DEFAULT);
  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
  var methods, key, IteratorPrototype;
  // Fix native
  if ($anyNative) {
    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
      // Set @@toStringTag to native iterators
      setToStringTag(IteratorPrototype, TAG, true);
      // fix for some old engines
      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
    }
  }
  // fix Array#{values, @@iterator}.name in V8 / FF
  if (DEF_VALUES && $native && $native.name !== VALUES) {
    VALUES_BUG = true;
    $default = function values() { return $native.call(this); };
  }
  // Define iterator
  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
    hide(proto, ITERATOR, $default);
  }
  // Plug for library
  Iterators[NAME] = $default;
  Iterators[TAG] = returnThis;
  if (DEFAULT) {
    methods = {
      values: DEF_VALUES ? $default : getMethod(VALUES),
      keys: IS_SET ? $default : getMethod(KEYS),
      entries: $entries
    };
    if (FORCED) for (key in methods) {
      if (!(key in proto)) redefine(proto, key, methods[key]);
    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
  }
  return methods;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_iter-step.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_iter-step.js ***!
  \*****************************************************/
/***/ ((module) => {

module.exports = function (done, value) {
  return { value: value, done: !!done };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_iterators.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_iterators.js ***!
  \*****************************************************/
/***/ ((module) => {

module.exports = {};


/***/ }),

/***/ "../node_modules/core-js/modules/_library.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_library.js ***!
  \***************************************************/
/***/ ((module) => {

module.exports = false;


/***/ }),

/***/ "../node_modules/core-js/modules/_object-create.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_object-create.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var dPs = __webpack_require__(/*! ./_object-dps */ "../node_modules/core-js/modules/_object-dps.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/modules/_enum-bug-keys.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/modules/_shared-key.js")('IE_PROTO');
var Empty = function () { /* empty */ };
var PROTOTYPE = 'prototype';

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = __webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/modules/_dom-create.js")('iframe');
  var i = enumBugKeys.length;
  var lt = '<';
  var gt = '>';
  var iframeDocument;
  iframe.style.display = 'none';
  __webpack_require__(/*! ./_html */ "../node_modules/core-js/modules/_html.js").appendChild(iframe);
  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
  // createDict = iframe.contentWindow.Object;
  // html.removeChild(iframe);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
  iframeDocument.close();
  createDict = iframeDocument.F;
  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
  return createDict();
};

module.exports = Object.create || function create(O, Properties) {
  var result;
  if (O !== null) {
    Empty[PROTOTYPE] = anObject(O);
    result = new Empty();
    Empty[PROTOTYPE] = null;
    // add "__proto__" for Object.getPrototypeOf polyfill
    result[IE_PROTO] = O;
  } else result = createDict();
  return Properties === undefined ? result : dPs(result, Properties);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-dp.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_object-dp.js ***!
  \*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/modules/_ie8-dom-define.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/modules/_to-primitive.js");
var dP = Object.defineProperty;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-dps.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_object-dps.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/modules/_object-keys.js");

module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var keys = getKeys(Properties);
  var length = keys.length;
  var i = 0;
  var P;
  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-gpo.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_object-gpo.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/modules/_to-object.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/modules/_shared-key.js")('IE_PROTO');
var ObjectProto = Object.prototype;

module.exports = Object.getPrototypeOf || function (O) {
  O = toObject(O);
  if (has(O, IE_PROTO)) return O[IE_PROTO];
  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
    return O.constructor.prototype;
  } return O instanceof Object ? ObjectProto : null;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-keys-internal.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_object-keys-internal.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/modules/_to-iobject.js");
var arrayIndexOf = __webpack_require__(/*! ./_array-includes */ "../node_modules/core-js/modules/_array-includes.js")(false);
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/modules/_shared-key.js")('IE_PROTO');

module.exports = function (object, names) {
  var O = toIObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (has(O, key = names[i++])) {
    ~arrayIndexOf(result, key) || result.push(key);
  }
  return result;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-keys.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_object-keys.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/modules/_object-keys-internal.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/modules/_enum-bug-keys.js");

module.exports = Object.keys || function keys(O) {
  return $keys(O, enumBugKeys);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_property-desc.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_property-desc.js ***!
  \*********************************************************/
/***/ ((module) => {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_redefine.js":
/*!****************************************************!*\
  !*** ../node_modules/core-js/modules/_redefine.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var SRC = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js")('src');
var $toString = __webpack_require__(/*! ./_function-to-string */ "../node_modules/core-js/modules/_function-to-string.js");
var TO_STRING = 'toString';
var TPL = ('' + $toString).split(TO_STRING);

__webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js").inspectSource = function (it) {
  return $toString.call(it);
};

(module.exports = function (O, key, val, safe) {
  var isFunction = typeof val == 'function';
  if (isFunction) has(val, 'name') || hide(val, 'name', key);
  if (O[key] === val) return;
  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
  if (O === global) {
    O[key] = val;
  } else if (!safe) {
    delete O[key];
    hide(O, key, val);
  } else if (O[key]) {
    O[key] = val;
  } else {
    hide(O, key, val);
  }
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, TO_STRING, function toString() {
  return typeof this == 'function' && this[SRC] || $toString.call(this);
});


/***/ }),

/***/ "../node_modules/core-js/modules/_set-to-string-tag.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/_set-to-string-tag.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var def = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js").f;
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag');

module.exports = function (it, tag, stat) {
  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
};


/***/ }),

/***/ "../node_modules/core-js/modules/_shared-key.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_shared-key.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('keys');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js");
module.exports = function (key) {
  return shared[key] || (shared[key] = uid(key));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_shared.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_shared.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(/*! ./_library */ "../node_modules/core-js/modules/_library.js") ? 'pure' : 'global',
  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});


/***/ }),

/***/ "../node_modules/core-js/modules/_strict-method.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_strict-method.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js");

module.exports = function (method, arg) {
  return !!method && fails(function () {
    // eslint-disable-next-line no-useless-call
    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);
  });
};


/***/ }),

/***/ "../node_modules/core-js/modules/_string-at.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_string-at.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-absolute-index.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/_to-absolute-index.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-integer.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_to-integer.js ***!
  \******************************************************/
/***/ ((module) => {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-iobject.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_to-iobject.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/modules/_iobject.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-length.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_to-length.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.15 ToLength
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_to-object.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-primitive.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/modules/_to-primitive.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),

/***/ "../node_modules/core-js/modules/_uid.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_uid.js ***!
  \***********************************************/
/***/ ((module) => {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_wks.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_wks.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var store = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('wks');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js");
var Symbol = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.filter.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.filter.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $filter = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(2);

$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "../node_modules/core-js/modules/_strict-method.js")([].filter, true), 'Array', {
  // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
  filter: function filter(callbackfn /* , thisArg */) {
    return $filter(this, callbackfn, arguments[1]);
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.find.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.find.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $find = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(5);
var KEY = 'find';
var forced = true;
// Shouldn't skip holes
if (KEY in []) Array(1)[KEY](function () { forced = false; });
$export($export.P + $export.F * forced, 'Array', {
  find: function find(callbackfn /* , that = undefined */) {
    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  }
});
__webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/modules/_add-to-unscopables.js")(KEY);


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.iterator.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.iterator.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/modules/_add-to-unscopables.js");
var step = __webpack_require__(/*! ./_iter-step */ "../node_modules/core-js/modules/_iter-step.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/modules/_iterators.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/modules/_to-iobject.js");

// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
module.exports = __webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/modules/_iter-define.js")(Array, 'Array', function (iterated, kind) {
  this._t = toIObject(iterated); // target
  this._i = 0;                   // next index
  this._k = kind;                // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var kind = this._k;
  var index = this._i++;
  if (!O || index >= O.length) {
    this._t = undefined;
    return step(1);
  }
  if (kind == 'keys') return step(0, index);
  if (kind == 'values') return step(0, O[index]);
  return step(0, [index, O[index]]);
}, 'values');

// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
Iterators.Arguments = Iterators.Array;

addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.map.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.map.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $map = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(1);

$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "../node_modules/core-js/modules/_strict-method.js")([].map, true), 'Array', {
  // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
  map: function map(callbackfn /* , thisArg */) {
    return $map(this, callbackfn, arguments[1]);
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.object.to-string.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.object.to-string.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 19.1.3.6 Object.prototype.toString()
var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/modules/_classof.js");
var test = {};
test[__webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag')] = 'z';
if (test + '' != '[object z]') {
  __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js")(Object.prototype, 'toString', function toString() {
    return '[object ' + classof(this) + ']';
  }, true);
}


/***/ }),

/***/ "../node_modules/core-js/modules/es6.string.iterator.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.string.iterator.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $at = __webpack_require__(/*! ./_string-at */ "../node_modules/core-js/modules/_string-at.js")(true);

// 21.1.3.27 String.prototype[@@iterator]()
__webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/modules/_iter-define.js")(String, 'String', function (iterated) {
  this._t = String(iterated); // target
  this._i = 0;                // next index
// 21.1.5.2.1 %StringIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var index = this._i;
  var point;
  if (index >= O.length) return { value: undefined, done: true };
  point = $at(O, index);
  this._i += point.length;
  return { value: point, done: false };
});


/***/ }),

/***/ "../node_modules/core-js/modules/web.dom.iterable.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/web.dom.iterable.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $iterators = __webpack_require__(/*! ./es6.array.iterator */ "../node_modules/core-js/modules/es6.array.iterator.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/modules/_object-keys.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/modules/_iterators.js");
var wks = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js");
var ITERATOR = wks('iterator');
var TO_STRING_TAG = wks('toStringTag');
var ArrayValues = Iterators.Array;

var DOMIterables = {
  CSSRuleList: true, // TODO: Not spec compliant, should be false.
  CSSStyleDeclaration: false,
  CSSValueList: false,
  ClientRectList: false,
  DOMRectList: false,
  DOMStringList: false,
  DOMTokenList: true,
  DataTransferItemList: false,
  FileList: false,
  HTMLAllCollection: false,
  HTMLCollection: false,
  HTMLFormElement: false,
  HTMLSelectElement: false,
  MediaList: true, // TODO: Not spec compliant, should be false.
  MimeTypeArray: false,
  NamedNodeMap: false,
  NodeList: true,
  PaintRequestList: false,
  Plugin: false,
  PluginArray: false,
  SVGLengthList: false,
  SVGNumberList: false,
  SVGPathSegList: false,
  SVGPointList: false,
  SVGStringList: false,
  SVGTransformList: false,
  SourceBufferList: false,
  StyleSheetList: true, // TODO: Not spec compliant, should be false.
  TextTrackCueList: false,
  TextTrackList: false,
  TouchList: false
};

for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
  var NAME = collections[i];
  var explicit = DOMIterables[NAME];
  var Collection = global[NAME];
  var proto = Collection && Collection.prototype;
  var key;
  if (proto) {
    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
    Iterators[NAME] = ArrayValues;
    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);
  }
}


/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be in strict mode.
(() => {
"use strict";
/*!**************************************************************!*\
  !*** ../modules/screenshots/assets/js/preview/screenshot.js ***!
  \**************************************************************/


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

var _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/promise */ "../node_modules/@babel/runtime-corejs2/core-js/promise.js"));

__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

__webpack_require__(/*! core-js/modules/es6.array.filter.js */ "../node_modules/core-js/modules/es6.array.filter.js");

__webpack_require__(/*! core-js/modules/es6.string.iterator.js */ "../node_modules/core-js/modules/es6.string.iterator.js");

__webpack_require__(/*! core-js/modules/es6.object.to-string.js */ "../node_modules/core-js/modules/es6.object.to-string.js");

__webpack_require__(/*! core-js/modules/es6.array.iterator.js */ "../node_modules/core-js/modules/es6.array.iterator.js");

__webpack_require__(/*! core-js/modules/web.dom.iterable.js */ "../node_modules/core-js/modules/web.dom.iterable.js");

var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/toConsumableArray */ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/get */ "../node_modules/@babel/runtime-corejs2/helpers/get.js"));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/getPrototypeOf */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

/* global ElementorScreenshotConfig */
var Screenshot = /*#__PURE__*/function (_elementorModules$Vie) {
  (0, _inherits2.default)(Screenshot, _elementorModules$Vie);

  var _super = (0, _createSuper2.default)(Screenshot);

  function Screenshot() {
    (0, _classCallCheck2.default)(this, Screenshot);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Screenshot, [{
    key: "getDefaultSettings",
    value: function getDefaultSettings() {
      return (0, _objectSpread2.default)({
        empty_content_headline: 'Empty Content.',
        crop: {
          width: 1200,
          height: 1500
        },
        excluded_external_css_urls: ['https://kit-pro.fontawesome.com'],
        external_images_urls: ['https://i.ytimg.com' // Youtube images domain.
        ],
        timeout: 15000,
        // Wait until screenshot taken or fail in 15 secs.
        render_timeout: 5000,
        // Wait until all the element will be loaded or 5 sec and then take screenshot.
        timerLabel: null,
        timer_label: "".concat(ElementorScreenshotConfig.post_id, " - timer"),
        image_placeholder: 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=',
        isDebug: elementorCommonConfig.isElementorDebug,
        isDebugSvg: false
      }, ElementorScreenshotConfig);
    }
  }, {
    key: "getDefaultElements",
    value: function getDefaultElements() {
      var $elementor = jQuery(ElementorScreenshotConfig.selector);
      var $sections = $elementor.find(' .elementor-section-wrap > .elementor-section');
      return {
        $elementor: $elementor,
        $sections: $sections,
        $firstSection: $sections.first(),
        $notElementorElements: elementorCommon.elements.$body.find('> *:not(style, link)').not($elementor),
        $head: jQuery('head')
      };
    }
  }, {
    key: "onInit",
    value: function onInit() {
      (0, _get2.default)((0, _getPrototypeOf2.default)(Screenshot.prototype), "onInit", this).call(this);
      this.log('Screenshot init', 'time');
      /**
       * hold the timeout timer
       *
       * @type {number|null}
       */

      this.timeoutTimer = setTimeout(this.screenshotFailed.bind(this), this.getSettings('timeout'));
      return this.captureScreenshot();
    }
    /**
     * The main method for this class.
     */

  }, {
    key: "captureScreenshot",
    value: function captureScreenshot() {
      if (!this.elements.$elementor.length) {
        elementorCommon.helpers.consoleWarn('Screenshots: The content of this page is empty, the module will create a fake conent just for this screenshot.');
        this.createFakeContent();
      }

      this.removeUnnecessaryElements();
      this.handleIFrames();
      this.removeFirstSectionMargin();
      this.handleLinks();
      this.loadExternalCss();
      this.loadExternalImages();
      return _promise.default.resolve().then(this.createImage.bind(this)).then(this.createImageElement.bind(this)).then(this.cropCanvas.bind(this)).then(this.save.bind(this)).then(this.screenshotSucceed.bind(this)).catch(this.screenshotFailed.bind(this));
    }
    /**
     * Fake content for documents that dont have any content.
     */

  }, {
    key: "createFakeContent",
    value: function createFakeContent() {
      this.elements.$elementor = jQuery('<div>').css({
        height: this.getSettings('crop.height'),
        width: this.getSettings('crop.width'),
        display: 'flex',
        alignItems: 'center',
        justifyContent: 'center'
      });
      this.elements.$elementor.append(jQuery('<h1>').css({
        fontSize: '85px'
      }).html(this.getSettings('empty_content_headline')));
      document.body.prepend(this.elements.$elementor);
    }
    /**
     * CSS from another server cannot be loaded with the current dom to image library.
     * this method take all the links from another domain and proxy them.
     */

  }, {
    key: "loadExternalCss",
    value: function loadExternalCss() {
      var _this = this;

      var excludedUrls = [this.getSettings('home_url')].concat((0, _toConsumableArray2.default)(this.getSettings('excluded_external_css_urls')));
      var notSelector = excludedUrls.map(function (url) {
        return "[href^=\"".concat(url, "\"]");
      }).join(', ');
      jQuery('link').not(notSelector).each(function (index, el) {
        var $link = jQuery(el),
            $newLink = $link.clone();
        $newLink.attr('href', _this.getScreenshotProxyUrl($link.attr('href')));

        _this.elements.$head.append($newLink);

        $link.remove();
      });
    }
    /**
     * Make a proxy to images urls that has some problems with cross origin (like youtube).
     */

  }, {
    key: "loadExternalImages",
    value: function loadExternalImages() {
      var _this2 = this;

      var selector = this.getSettings('external_images_urls').map(function (url) {
        return "img[src^=\"".concat(url, "\"]");
      }).join(', ');
      jQuery(selector).each(function (index, el) {
        var $img = jQuery(el);
        $img.attr('src', _this2.getScreenshotProxyUrl($img.attr('src')));
      });
    }
    /**
     * Html to images libraries can not snapshot IFrames
     * this method convert all the IFrames to some other elements.
     */

  }, {
    key: "handleIFrames",
    value: function handleIFrames() {
      this.elements.$elementor.find('iframe').each(function (index, el) {
        var $iframe = jQuery(el),
            $iframeMask = jQuery('<div />', {
          css: {
            background: 'gray',
            width: $iframe.width(),
            height: $iframe.height()
          }
        });
        $iframe.before($iframeMask);
        $iframe.remove();
      });
    }
    /**
     * Remove all the sections that should not be in the screenshot.
     */

  }, {
    key: "removeUnnecessaryElements",
    value: function removeUnnecessaryElements() {
      var _this3 = this;

      var currentHeight = 0;
      this.elements.$sections.filter(function (index, el) {
        var shouldBeRemoved = false;

        if (currentHeight >= _this3.getSettings('crop.height')) {
          shouldBeRemoved = true;
        }

        currentHeight += jQuery(el).outerHeight();
        return shouldBeRemoved;
      }).each(function (index, el) {
        el.remove();
      }); // Some 3rd party plugins inject elements into the dom, so this method removes all
      // the elements that was injected, to make sure that it capture a screenshot only of the post itself.

      this.elements.$notElementorElements.remove();
    }
    /**
     * Some urls make some problems to the svg parser.
     * this method convert all the urls to just '/'.
     */

  }, {
    key: "handleLinks",
    value: function handleLinks() {
      elementorCommon.elements.$body.find('a').attr('href', '/');
    }
    /**
     * Remove unnecessary margin from the first element of the post (singles and footers).
     */

  }, {
    key: "removeFirstSectionMargin",
    value: function removeFirstSectionMargin() {
      this.elements.$firstSection.css({
        marginTop: 0
      });
    }
    /**
     * Creates a png image.
     *
     * @return {Promise<unknown>} -
     */

  }, {
    key: "createImage",
    value: function createImage() {
      var _this4 = this;

      var pageLoadedPromise = new _promise.default(function (resolve) {
        window.addEventListener('load', function () {
          resolve();
        });
      });
      var timeOutPromise = new _promise.default(function (resolve) {
        setTimeout(function () {
          resolve();
        }, _this4.getSettings('render_timeout'));
      });
      return _promise.default.race([pageLoadedPromise, timeOutPromise]).then(function () {
        _this4.log('Start creating screenshot.');

        if (_this4.getSettings('isDebugSvg')) {
          domtoimage.toSvg(document.body, {
            imagePlaceholder: _this4.getSettings('image_placeholder')
          }).then(function (svg) {
            return _this4.download(svg);
          });
          return _promise.default.reject('Debug SVG.');
        } // TODO: Extract to util function.


        var isSafari = /^((?!chrome|android).)*safari/i.test(window.userAgent); // Safari browser has some problems with the images that dom-to-images
        // library creates, so in this specific case the screenshot uses html2canvas.
        // Note that dom-to-image creates more accurate screenshot in "not safari" browsers.

        if (isSafari) {
          _this4.log('Creating screenshot with "html2canvas"');

          return html2canvas(document.body).then(function (canvas) {
            return canvas.toDataURL('image/png');
          });
        }

        _this4.log('Creating screenshot with "dom-to-image"');

        return domtoimage.toPng(document.body, {
          imagePlaceholder: _this4.getSettings('image_placeholder')
        });
      });
    }
    /**
     * Download a uri, use for debugging the svg that created from dom to image libraries.
     *
     * @param {string} uri
     */

  }, {
    key: "download",
    value: function download(uri) {
      var $link = jQuery('<a/>', {
        href: uri,
        download: 'debugSvg.svg',
        html: 'Download SVG'
      });
      elementorCommon.elements.$body.append($link);
      $link.trigger('click');
    }
    /**
     * Creates fake image element to get the size of the image later on.
     *
     * @param {string} dataUrl
     * @return {Promise<HTMLImageElement>} -
     */

  }, {
    key: "createImageElement",
    value: function createImageElement(dataUrl) {
      var image = new Image();
      image.src = dataUrl;
      return new _promise.default(function (resolve) {
        image.onload = function () {
          return resolve(image);
        };
      });
    }
    /**
     * Crop the image to requested sizes.
     *
     * @param {HTMLImageElement} image
     * @return {Promise<unknown>} -
     */

  }, {
    key: "cropCanvas",
    value: function cropCanvas(image) {
      var width = this.getSettings('crop.width');
      var height = this.getSettings('crop.height');
      var cropCanvas = document.createElement('canvas'),
          cropContext = cropCanvas.getContext('2d'),
          ratio = width / image.width;
      cropCanvas.width = width;
      cropCanvas.height = height > image.height ? image.height : height;
      cropContext.drawImage(image, 0, 0, image.width, image.height, 0, 0, image.width * ratio, image.height * ratio);
      return _promise.default.resolve(cropCanvas);
    }
    /**
     * Send the image to the server.
     *
     * @param {HTMLCanvasElement} canvas
     * @return {Promise<unknown>} -
     */

  }, {
    key: "save",
    value: function save(canvas) {
      var _this5 = this;

      return new _promise.default(function (resolve, reject) {
        elementorCommon.ajax.addRequest('screenshot_save', {
          data: {
            post_id: _this5.getSettings('post_id'),
            screenshot: canvas.toDataURL('image/png')
          },
          success: function success(url) {
            _this5.log("Screenshot created: ".concat(encodeURI(url)));

            resolve(url);
          },
          error: function error() {
            _this5.log('Failed to create screenshot.');

            reject();
          }
        });
      });
    }
    /**
     * Mark this post screenshot as failed.
     */

  }, {
    key: "markAsFailed",
    value: function markAsFailed() {
      var _this6 = this;

      return new _promise.default(function (resolve, reject) {
        elementorCommon.ajax.addRequest('screenshot_failed', {
          data: {
            post_id: _this6.getSettings('post_id')
          },
          success: function success() {
            _this6.log("Marked as failed.");

            resolve();
          },
          error: function error() {
            _this6.log('Failed to mark this screenshot as failed.');

            reject();
          }
        });
      });
    }
    /**
     * @param {string} url
     * @return {string} -
     */

  }, {
    key: "getScreenshotProxyUrl",
    value: function getScreenshotProxyUrl(url) {
      return "".concat(this.getSettings('home_url'), "?screenshot_proxy&nonce=").concat(this.getSettings('nonce'), "&href=").concat(url);
    }
    /**
     * Notify that the screenshot has been succeed.
     *
     * @param {string} imageUrl
     */

  }, {
    key: "screenshotSucceed",
    value: function screenshotSucceed(imageUrl) {
      this.screenshotDone(true, imageUrl);
    }
    /**
     * Notify that the screenshot has been failed.
     *
     * @param {Error} e
     */

  }, {
    key: "screenshotFailed",
    value: function screenshotFailed(e) {
      var _this7 = this;

      this.log(e, null);
      this.markAsFailed().then(function () {
        return _this7.screenshotDone(false);
      });
    }
    /**
     * Final method of the screenshot.
     *
     * @param {boolean} success
     * @param {string} imageUrl
     */

  }, {
    key: "screenshotDone",
    value: function screenshotDone(success) {
      var imageUrl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
      clearTimeout(this.timeoutTimer);
      this.timeoutTimer = null; // Send the message to the parent window and not to the top.
      // e.g: The `Theme builder` is loaded into an iFrame so the message of the screenshot
      // should be sent to the `Theme builder` window and not to the top window.

      window.parent.postMessage({
        name: 'capture-screenshot-done',
        success: success,
        id: this.getSettings('post_id'),
        imageUrl: imageUrl
      }, '*');
      this.log("Screenshot ".concat(success ? 'Succeed' : 'Failed', "."), 'timeEnd');
    }
    /**
     * Log messages for debugging.
     *
     * @param {any} message
     * @param {string?} timerMethod
     */

  }, {
    key: "log",
    value: function log(message) {
      var timerMethod = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'timeLog';

      if (!this.getSettings('isDebug')) {
        return;
      } // eslint-disable-next-line no-console


      console.log('string' === typeof message ? "".concat(this.getSettings('post_id'), " - ").concat(message) : message);

      if (timerMethod) {
        // eslint-disable-next-line no-console
        console[timerMethod](this.getSettings('timer_label'));
      }
    }
  }]);
  return Screenshot;
}(elementorModules.ViewModule);

jQuery(function () {
  new Screenshot();
});
})();

/******/ })()
;
//# sourceMappingURL=screenshot.js.mapassets/js/media-carousel.15b78f70034df8ffebad.bundle.min.js000064400000015273150755004310017017 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[534],{2539:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class CarouselBase extends elementorModules.frontend.handlers.SwiperBase{getDefaultSettings(){return{selectors:{swiperContainer:".elementor-main-swiper",swiperSlide:".swiper-slide"},slidesPerView:{widescreen:3,desktop:3,laptop:3,tablet_extra:3,tablet:2,mobile_extra:2,mobile:1}}}getDefaultElements(){const e=this.getSettings("selectors"),t={$swiperContainer:this.$element.find(e.swiperContainer)};return t.$slides=t.$swiperContainer.find(e.swiperSlide),t}getEffect(){return this.getElementSettings("effect")}getDeviceSlidesPerView(e){const t="slides_per_view"+("desktop"===e?"":"_"+e);return Math.min(this.getSlidesCount(),+this.getElementSettings(t)||this.getSettings("slidesPerView")[e])}getSlidesPerView(e){return"slide"===this.getEffect()?this.getDeviceSlidesPerView(e):1}getDeviceSlidesToScroll(e){const t="slides_to_scroll"+("desktop"===e?"":"_"+e);return Math.min(this.getSlidesCount(),+this.getElementSettings(t)||1)}getSlidesToScroll(e){return"slide"===this.getEffect()?this.getDeviceSlidesToScroll(e):1}getSpaceBetween(e){let t="space_between";return e&&"desktop"!==e&&(t+="_"+e),this.getElementSettings(t).size||0}getSwiperOptions(){const e=this.getElementSettings(),t={grabCursor:!0,initialSlide:this.getInitialSlide(),slidesPerView:this.getSlidesPerView("desktop"),slidesPerGroup:this.getSlidesToScroll("desktop"),spaceBetween:this.getSpaceBetween(),loop:"yes"===e.loop,speed:e.speed,effect:this.getEffect(),preventClicksPropagation:!1,slideToClickedSlide:!0,handleElementorBreakpoints:!0};if(e.show_arrows&&(t.navigation={prevEl:".elementor-swiper-button-prev",nextEl:".elementor-swiper-button-next"}),e.pagination&&(t.pagination={el:".swiper-pagination",type:e.pagination,clickable:!0}),"cube"!==this.getEffect()){const e={},i=elementorFrontend.config.responsive.activeBreakpoints;Object.keys(i).forEach((t=>{e[i[t].value]={slidesPerView:this.getSlidesPerView(t),slidesPerGroup:this.getSlidesToScroll(t),spaceBetween:this.getSpaceBetween(t)}})),t.breakpoints=e}return!this.isEdit&&e.autoplay&&(t.autoplay={delay:e.autoplay_speed,disableOnInteraction:!!e.pause_on_interaction}),t}getDeviceBreakpointValue(e){if(!this.breakpointsDictionary){const e=elementorFrontend.config.responsive.activeBreakpoints;this.breakpointsDictionary={},Object.keys(e).forEach((t=>{this.breakpointsDictionary[t]=e[t].value}))}return this.breakpointsDictionary[e]}updateSpaceBetween(e){const t=e.match("space_between_(.*)"),i=t?t[1]:"desktop",s=this.getSpaceBetween(i);"desktop"!==i?this.swiper.params.breakpoints[this.getDeviceBreakpointValue(i)].spaceBetween=s:this.swiper.params.spaceBetween=s,this.swiper.params.spaceBetween=s,this.swiper.update()}async onInit(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments);const e=this.getElementSettings();if(1>=this.getSlidesCount())return;const t=elementorFrontend.utils.swiper;this.swiper=await new t(this.elements.$swiperContainer,this.getSwiperOptions()),"yes"===e.pause_on_hover&&this.togglePauseOnHover(!0),this.elements.$swiperContainer.data("swiper",this.swiper)}getChangeableProperties(){return{autoplay:"autoplay",pause_on_hover:"pauseOnHover",pause_on_interaction:"disableOnInteraction",autoplay_speed:"delay",speed:"speed",width:"width"}}updateSwiperOption(e){if(0===e.indexOf("width"))return void this.swiper.update();const t=this.getElementSettings(),i=t[e];let s=this.getChangeableProperties()[e],n=i;switch(e){case"autoplay":n=!!i&&{delay:t.autoplay_speed,disableOnInteraction:"yes"===t.pause_on_interaction};break;case"autoplay_speed":s="autoplay",n={delay:i,disableOnInteraction:"yes"===t.pause_on_interaction};break;case"pause_on_hover":this.togglePauseOnHover("yes"===i);break;case"pause_on_interaction":n="yes"===i}"pause_on_hover"!==e&&(this.swiper.params[s]=n),this.swiper.update()}onElementChange(e){if(1>=this.getSlidesCount())return;if(0===e.indexOf("width"))return this.swiper.update(),void(this.thumbsSwiper&&this.thumbsSwiper.update());if(0===e.indexOf("space_between"))return void this.updateSpaceBetween(e);this.getChangeableProperties().hasOwnProperty(e)&&this.updateSwiperOption(e)}onEditSettingsChange(e){1>=this.getSlidesCount()||"activeItemIndex"===e&&this.swiper.slideToLoop(this.getEditSettings("activeItemIndex")-1)}}t.default=CarouselBase},7393:(e,t,i)=>{"use strict";var s=i(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=s(i(2539));class MediaCarousel extends n.default{isSlideshow(){return"slideshow"===this.getElementSettings("skin")}getDefaultSettings(...e){const t=super.getDefaultSettings(...e);return this.isSlideshow()&&(t.selectors.thumbsSwiper=".elementor-thumbnails-swiper",t.slidesPerView={widescreen:5,desktop:5,laptop:5,tablet_extra:5,tablet:4,mobile_extra:4,mobile:3}),t}getSlidesPerViewSettingNames(){if(!this.slideshowElementSettings){this.slideshowElementSettings=["slides_per_view"];const e=elementorFrontend.config.responsive.activeBreakpoints;Object.keys(e).forEach((e=>{this.slideshowElementSettings.push("slides_per_view_"+e)}))}return this.slideshowElementSettings}getElementSettings(e){return-1!==this.getSlidesPerViewSettingNames().indexOf(e)&&this.isSlideshow()&&(e="slideshow_"+e),super.getElementSettings(e)}getDefaultElements(...e){const t=this.getSettings("selectors"),i=super.getDefaultElements(...e);return this.isSlideshow()&&(i.$thumbsSwiper=this.$element.find(t.thumbsSwiper)),i}getEffect(){return"coverflow"===this.getElementSettings("skin")?"coverflow":super.getEffect()}getSlidesPerView(e){return this.isSlideshow()?1:"coverflow"===this.getElementSettings("skin")?this.getDeviceSlidesPerView(e):super.getSlidesPerView(e)}getSwiperOptions(){const e=super.getSwiperOptions();return this.isSlideshow()&&(e.loopedSlides=this.getSlidesCount(),delete e.pagination,delete e.breakpoints),e}async onInit(){await super.onInit();const e=this.getSlidesCount();if(!this.isSlideshow()||1>=e)return;const t=this.getElementSettings(),i="yes"===t.loop,s={},n=elementorFrontend.config.responsive.activeBreakpoints,r=this.getDeviceSlidesPerView("desktop");Object.keys(n).forEach((e=>{s[n[e].value]={slidesPerView:this.getDeviceSlidesPerView(e),spaceBetween:this.getSpaceBetween(e)}}));const o={slidesPerView:r,initialSlide:this.getInitialSlide(),centeredSlides:t.centered_slides,slideToClickedSlide:!0,spaceBetween:this.getSpaceBetween(),loopedSlides:e,loop:i,breakpoints:s,handleElementorBreakpoints:!0},l=elementorFrontend.utils.swiper;this.swiper.controller.control=this.thumbsSwiper=await new l(this.elements.$thumbsSwiper,o),this.elements.$thumbsSwiper.data("swiper",this.thumbsSwiper),this.thumbsSwiper.controller.control=this.swiper}}t.default=MediaCarousel}}]);assets/js/nav-menu.e248eec66bc3d5587cf6.bundle.js000064400000012765150755004310015027 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["nav-menu"],{

/***/ "../modules/nav-menu/assets/js/frontend/handlers/nav-menu.js":
/*!*******************************************************************!*\
  !*** ../modules/nav-menu/assets/js/frontend/handlers/nav-menu.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  stretchElement: null,

  getDefaultSettings() {
    return {
      selectors: {
        menu: '.elementor-nav-menu',
        anchorLink: '.elementor-nav-menu--main .elementor-item-anchor',
        dropdownMenu: '.elementor-nav-menu__container.elementor-nav-menu--dropdown',
        menuToggle: '.elementor-menu-toggle'
      }
    };
  },

  getDefaultElements() {
    var selectors = this.getSettings('selectors'),
        elements = {};
    elements.$menu = this.$element.find(selectors.menu);
    elements.$anchorLink = this.$element.find(selectors.anchorLink);
    elements.$dropdownMenu = this.$element.find(selectors.dropdownMenu);
    elements.$dropdownMenuFinalItems = elements.$dropdownMenu.find('.menu-item:not(.menu-item-has-children) > a');
    elements.$menuToggle = this.$element.find(selectors.menuToggle);
    elements.$links = elements.$dropdownMenu.find('a.elementor-item');
    return elements;
  },

  bindEvents() {
    if (!this.elements.$menu.length) {
      return;
    }

    this.elements.$menuToggle.on('click', this.toggleMenu.bind(this));

    if (this.getElementSettings('full_width')) {
      this.elements.$dropdownMenuFinalItems.on('click', this.toggleMenu.bind(this, false));
    }

    elementorFrontend.addListenerOnce(this.$element.data('model-cid'), 'resize', this.stretchMenu);
  },

  initStretchElement() {
    this.stretchElement = new elementorModules.frontend.tools.StretchElement({
      element: this.elements.$dropdownMenu
    });
  },

  toggleNavLinksTabIndex(enabled = true) {
    this.elements.$links.attr('tabindex', enabled ? 0 : -1);
  },

  toggleMenu(show) {
    var isDropdownVisible = this.elements.$menuToggle.hasClass('elementor-active');

    if ('boolean' !== typeof show) {
      show = !isDropdownVisible;
    }

    this.elements.$menuToggle.attr('aria-expanded', show);
    this.elements.$dropdownMenu.attr('aria-hidden', !show);
    this.elements.$menuToggle.toggleClass('elementor-active', show);
    this.toggleNavLinksTabIndex(show);

    if (show && this.getElementSettings('full_width')) {
      this.stretchElement.stretch();
    }
  },

  followMenuAnchors() {
    var self = this;
    self.elements.$anchorLink.each(function () {
      if (location.pathname === this.pathname && '' !== this.hash) {
        self.followMenuAnchor(jQuery(this));
      }
    });
  },

  followMenuAnchor($element) {
    const anchorSelector = $element[0].hash;
    let offset = -300,
        $anchor;

    try {
      // `decodeURIComponent` for UTF8 characters in the hash.
      $anchor = jQuery(decodeURIComponent(anchorSelector));
    } catch (e) {
      return;
    }

    if (!$anchor.length) {
      return;
    }

    if (!$anchor.hasClass('elementor-menu-anchor')) {
      var halfViewport = jQuery(window).height() / 2;
      offset = -$anchor.outerHeight() + halfViewport;
    }

    elementorFrontend.waypoint($anchor, function (direction) {
      if ('down' === direction) {
        $element.addClass('elementor-item-active');
      } else {
        $element.removeClass('elementor-item-active');
      }
    }, {
      offset: '50%',
      triggerOnce: false
    });
    elementorFrontend.waypoint($anchor, function (direction) {
      if ('down' === direction) {
        $element.removeClass('elementor-item-active');
      } else {
        $element.addClass('elementor-item-active');
      }
    }, {
      offset,
      triggerOnce: false
    });
  },

  stretchMenu() {
    if (this.getElementSettings('full_width')) {
      this.stretchElement.stretch();
      this.elements.$dropdownMenu.css('top', this.elements.$menuToggle.outerHeight());
    } else {
      this.stretchElement.reset();
    }
  },

  onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);

    if (!this.elements.$menu.length) {
      return;
    }

    const elementSettings = this.getElementSettings(),
          iconValue = elementSettings.submenu_icon.value;
    let subIndicatorsContent = '';

    if (iconValue) {
      // The value of iconValue can be either className inside the editor or a markup in the frontend.
      subIndicatorsContent = iconValue.indexOf('<') > -1 ? iconValue : `<i class="${iconValue}"></i>`;
    } // subIndicators param - Added for backwards compatibility:
    // If the old 'indicator' control value = 'none', the <span class="sub-arrow"> wrapper element is removed


    this.elements.$menu.smartmenus({
      subIndicators: '' !== subIndicatorsContent,
      subIndicatorsText: subIndicatorsContent,
      subIndicatorsPos: 'append',
      subMenusMaxWidth: '1000px'
    });
    this.initStretchElement();
    this.stretchMenu();

    if (!elementorFrontend.isEditMode()) {
      this.followMenuAnchors();
    }
  },

  onElementChange(propertyName) {
    if ('full_width' === propertyName) {
      this.stretchMenu();
    }
  }

});

exports.default = _default;

/***/ })

}]);
//# sourceMappingURL=nav-menu.e248eec66bc3d5587cf6.bundle.js.mapassets/js/social.b17f5f1767e41333a1dc.bundle.js000064400000003707150755004310014363 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["social"],{

/***/ "../modules/social/assets/js/frontend/handlers/facebook.js":
/*!*****************************************************************!*\
  !*** ../modules/social/assets/js/frontend/handlers/facebook.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class FacebookHandler extends elementorModules.frontend.handlers.Base {
  getConfig() {
    return elementorProFrontend.config.facebook_sdk;
  }

  setConfig(prop, value) {
    elementorProFrontend.config.facebook_sdk[prop] = value;
  }

  parse() {
    // On FB SDK is loaded, parse current element
    FB.XFBML.parse(this.$element[0]);
  }

  loadSDK() {
    const config = this.getConfig(); // Preventing from ajax request to be sent multiple times when loading multiple widgets

    if (config.isLoading || config.isLoaded) {
      return;
    }

    this.setConfig('isLoading', true);
    jQuery.ajax({
      url: 'https://connect.facebook.net/' + config.lang + '/sdk.js',
      dataType: 'script',
      cache: true,
      success: () => {
        FB.init({
          appId: config.app_id,
          version: 'v2.10',
          xfbml: false
        });
        this.setConfig('isLoaded', true);
        this.setConfig('isLoading', false);
        elementorFrontend.elements.$document.trigger('fb:sdk:loaded');
      }
    });
  }

  onInit(...args) {
    super.onInit(...args);
    this.loadSDK();
    const config = this.getConfig();

    if (config.isLoaded) {
      this.parse();
    } else {
      elementorFrontend.elements.$document.on('fb:sdk:loaded', () => this.parse());
    }
  }

}

exports.default = FacebookHandler;

/***/ })

}]);
//# sourceMappingURL=social.b17f5f1767e41333a1dc.bundle.js.mapassets/js/editor.js000064400002446501150755004310010322 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js":
/*!********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/array/from.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/array/from */ "../node_modules/core-js/library/fn/array/from.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/array/is-array */ "../node_modules/core-js/library/fn/array/is-array.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/json/stringify */ "../node_modules/core-js/library/fn/json/stringify.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/assign.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/assign.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/assign */ "../node_modules/core-js/library/fn/object/assign.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/create.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/create.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/create */ "../node_modules/core-js/library/fn/object/create.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js":
/*!********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/define-property */ "../node_modules/core-js/library/fn/object/define-property.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/entries.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/entries.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/entries */ "../node_modules/core-js/library/fn/object/entries.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js":
/*!********************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js ***!
  \********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-own-property-descriptor */ "../node_modules/core-js/library/fn/object/get-own-property-descriptor.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-prototype-of */ "../node_modules/core-js/library/fn/object/get-prototype-of.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/keys.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/keys */ "../node_modules/core-js/library/fn/object/keys.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/set-prototype-of */ "../node_modules/core-js/library/fn/object/set-prototype-of.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/values.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/values */ "../node_modules/core-js/library/fn/object/values.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/parse-int.js":
/*!*******************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/parse-int.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/parse-int */ "../node_modules/core-js/library/fn/parse-int.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/promise.js":
/*!*****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/promise.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/promise */ "../node_modules/core-js/library/fn/promise.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/reflect/construct */ "../node_modules/core-js/library/fn/reflect/construct.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/reflect/get.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/reflect/get.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/reflect/get */ "../node_modules/core-js/library/fn/reflect/get.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js":
/*!****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/symbol.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/symbol */ "../node_modules/core-js/library/fn/symbol/index.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js ***!
  \*************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/symbol/iterator */ "../node_modules/core-js/library/fn/symbol/iterator.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/weak-map.js":
/*!******************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/weak-map.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/weak-map */ "../node_modules/core-js/library/fn/weak-map.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js":
/*!**************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js ***!
  \**************************************************************************/
/***/ ((module) => {

function _arrayLikeToArray(arr, len) {
  if (len == null || len > arr.length) len = arr.length;

  for (var i = 0, arr2 = new Array(len); i < len; i++) {
    arr2[i] = arr[i];
  }

  return arr2;
}

module.exports = _arrayLikeToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Array$isArray = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/is-array */ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js");

function _arrayWithHoles(arr) {
  if (_Array$isArray(arr)) return arr;
}

module.exports = _arrayWithHoles;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Array$isArray = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/is-array */ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js");

var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js");

function _arrayWithoutHoles(arr) {
  if (_Array$isArray(arr)) return arrayLikeToArray(arr);
}

module.exports = _arrayWithoutHoles;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js ***!
  \*******************************************************************************/
/***/ ((module) => {

function _assertThisInitialized(self) {
  if (self === void 0) {
    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  }

  return self;
}

module.exports = _assertThisInitialized;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/asyncToGenerator.js":
/*!**************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/asyncToGenerator.js ***!
  \**************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Promise = __webpack_require__(/*! @babel/runtime-corejs2/core-js/promise */ "../node_modules/@babel/runtime-corejs2/core-js/promise.js");

function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
  try {
    var info = gen[key](arg);
    var value = info.value;
  } catch (error) {
    reject(error);
    return;
  }

  if (info.done) {
    resolve(value);
  } else {
    _Promise.resolve(value).then(_next, _throw);
  }
}

function _asyncToGenerator(fn) {
  return function () {
    var self = this,
        args = arguments;
    return new _Promise(function (resolve, reject) {
      var gen = fn.apply(self, args);

      function _next(value) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
      }

      function _throw(err) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
      }

      _next(undefined);
    });
  };
}

module.exports = _asyncToGenerator;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js ***!
  \************************************************************************/
/***/ ((module) => {

function _classCallCheck(instance, Constructor) {
  if (!(instance instanceof Constructor)) {
    throw new TypeError("Cannot call a class as a function");
  }
}

module.exports = _classCallCheck;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/createClass.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

function _defineProperties(target, props) {
  for (var i = 0; i < props.length; i++) {
    var descriptor = props[i];
    descriptor.enumerable = descriptor.enumerable || false;
    descriptor.configurable = true;
    if ("value" in descriptor) descriptor.writable = true;

    _Object$defineProperty(target, descriptor.key, descriptor);
  }
}

function _createClass(Constructor, protoProps, staticProps) {
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
  if (staticProps) _defineProperties(Constructor, staticProps);
  return Constructor;
}

module.exports = _createClass;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/createSuper.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/construct */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js");

var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js");

var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ "../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js");

var possibleConstructorReturn = __webpack_require__(/*! ./possibleConstructorReturn.js */ "../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js");

function _createSuper(Derived) {
  var hasNativeReflectConstruct = isNativeReflectConstruct();
  return function _createSuperInternal() {
    var Super = getPrototypeOf(Derived),
        result;

    if (hasNativeReflectConstruct) {
      var NewTarget = getPrototypeOf(this).constructor;
      result = _Reflect$construct(Super, arguments, NewTarget);
    } else {
      result = Super.apply(this, arguments);
    }

    return possibleConstructorReturn(this, result);
  };
}

module.exports = _createSuper;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

function _defineProperty(obj, key, value) {
  if (key in obj) {
    _Object$defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
  } else {
    obj[key] = value;
  }

  return obj;
}

module.exports = _defineProperty;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/get.js":
/*!*************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/get.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$get = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/get */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/get.js");

var _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-descriptor */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js");

var superPropBase = __webpack_require__(/*! ./superPropBase.js */ "../node_modules/@babel/runtime-corejs2/helpers/superPropBase.js");

function _get(target, property, receiver) {
  if (typeof Reflect !== "undefined" && _Reflect$get) {
    module.exports = _get = _Reflect$get;
    module.exports.default = module.exports, module.exports.__esModule = true;
  } else {
    module.exports = _get = function _get(target, property, receiver) {
      var base = superPropBase(target, property);
      if (!base) return;

      var desc = _Object$getOwnPropertyDescriptor(base, property);

      if (desc.get) {
        return desc.get.call(receiver);
      }

      return desc.value;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  }

  return _get(target, property, receiver || target);
}

module.exports = _get;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/set-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js");

var _Object$getPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js");

function _getPrototypeOf(o) {
  module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {
    return o.__proto__ || _Object$getPrototypeOf(o);
  };
  module.exports.default = module.exports, module.exports.__esModule = true;
  return _getPrototypeOf(o);
}

module.exports = _getPrototypeOf;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js":
/*!******************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/inherits.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$create = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/create */ "../node_modules/@babel/runtime-corejs2/core-js/object/create.js");

var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js");

function _inherits(subClass, superClass) {
  if (typeof superClass !== "function" && superClass !== null) {
    throw new TypeError("Super expression must either be null or a function");
  }

  subClass.prototype = _Object$create(superClass && superClass.prototype, {
    constructor: {
      value: subClass,
      writable: true,
      configurable: true
    }
  });
  if (superClass) setPrototypeOf(subClass, superClass);
}

module.exports = _inherits;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js ***!
  \*******************************************************************************/
/***/ ((module) => {

function _interopRequireDefault(obj) {
  return obj && obj.__esModule ? obj : {
    "default": obj
  };
}

module.exports = _interopRequireDefault;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js":
/*!********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _typeof = __webpack_require__(/*! @babel/runtime-corejs2/helpers/typeof */ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js").default;

var _WeakMap = __webpack_require__(/*! @babel/runtime-corejs2/core-js/weak-map */ "../node_modules/@babel/runtime-corejs2/core-js/weak-map.js");

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-descriptor */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js");

function _getRequireWildcardCache(nodeInterop) {
  if (typeof _WeakMap !== "function") return null;
  var cacheBabelInterop = new _WeakMap();
  var cacheNodeInterop = new _WeakMap();
  return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
    return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
  })(nodeInterop);
}

function _interopRequireWildcard(obj, nodeInterop) {
  if (!nodeInterop && obj && obj.__esModule) {
    return obj;
  }

  if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") {
    return {
      "default": obj
    };
  }

  var cache = _getRequireWildcardCache(nodeInterop);

  if (cache && cache.has(obj)) {
    return cache.get(obj);
  }

  var newObj = {};
  var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor;

  for (var key in obj) {
    if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
      var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null;

      if (desc && (desc.get || desc.set)) {
        _Object$defineProperty(newObj, key, desc);
      } else {
        newObj[key] = obj[key];
      }
    }
  }

  newObj["default"] = obj;

  if (cache) {
    cache.set(obj, newObj);
  }

  return newObj;
}

module.exports = _interopRequireWildcard;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js":
/*!**********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js ***!
  \**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/construct */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js");

function _isNativeReflectConstruct() {
  if (typeof Reflect === "undefined" || !_Reflect$construct) return false;
  if (_Reflect$construct.sham) return false;
  if (typeof Proxy === "function") return true;

  try {
    Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));
    return true;
  } catch (e) {
    return false;
  }
}

module.exports = _isNativeReflectConstruct;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js ***!
  \*************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

var _Array$from = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/from */ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js");

function _iterableToArray(iter) {
  if (typeof _Symbol !== "undefined" && iter[_Symbol$iterator] != null || iter["@@iterator"] != null) return _Array$from(iter);
}

module.exports = _iterableToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js":
/*!******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js ***!
  \******************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

function _iterableToArrayLimit(arr, i) {
  var _i = arr && (typeof _Symbol !== "undefined" && arr[_Symbol$iterator] || arr["@@iterator"]);

  if (_i == null) return;
  var _arr = [];
  var _n = true;
  var _d = false;

  var _s, _e;

  try {
    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
      _arr.push(_s.value);

      if (i && _arr.length === i) break;
    }
  } catch (err) {
    _d = true;
    _e = err;
  } finally {
    try {
      if (!_n && _i["return"] != null) _i["return"]();
    } finally {
      if (_d) throw _e;
    }
  }

  return _arr;
}

module.exports = _iterableToArrayLimit;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js ***!
  \*************************************************************************/
/***/ ((module) => {

function _nonIterableRest() {
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}

module.exports = _nonIterableRest;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js ***!
  \***************************************************************************/
/***/ ((module) => {

function _nonIterableSpread() {
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}

module.exports = _nonIterableSpread;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js":
/*!***********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js ***!
  \***********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _typeof = __webpack_require__(/*! @babel/runtime-corejs2/helpers/typeof */ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js").default;

var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js");

function _possibleConstructorReturn(self, call) {
  if (call && (_typeof(call) === "object" || typeof call === "function")) {
    return call;
  }

  return assertThisInitialized(self);
}

module.exports = _possibleConstructorReturn;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/set-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js");

function _setPrototypeOf(o, p) {
  module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {
    o.__proto__ = p;
    return o;
  };

  module.exports.default = module.exports, module.exports.__esModule = true;
  return _setPrototypeOf(o, p);
}

module.exports = _setPrototypeOf;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js");

var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js");

var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js");

var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js");

function _slicedToArray(arr, i) {
  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
}

module.exports = _slicedToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/superPropBase.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/superPropBase.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js");

function _superPropBase(object, property) {
  while (!Object.prototype.hasOwnProperty.call(object, property)) {
    object = getPrototypeOf(object);
    if (object === null) break;
  }

  return object;
}

module.exports = _superPropBase;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js");

var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js");

var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js");

var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js");

function _toConsumableArray(arr) {
  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
}

module.exports = _toConsumableArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js":
/*!****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/typeof.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

function _typeof(obj) {
  "@babel/helpers - typeof";

  if (typeof _Symbol === "function" && typeof _Symbol$iterator === "symbol") {
    module.exports = _typeof = function _typeof(obj) {
      return typeof obj;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  } else {
    module.exports = _typeof = function _typeof(obj) {
      return obj && typeof _Symbol === "function" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? "symbol" : typeof obj;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  }

  return _typeof(obj);
}

module.exports = _typeof;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js":
/*!************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js ***!
  \************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Array$from = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/from */ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js");

var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js");

function _unsupportedIterableToArray(o, minLen) {
  if (!o) return;
  if (typeof o === "string") return arrayLikeToArray(o, minLen);
  var n = Object.prototype.toString.call(o).slice(8, -1);
  if (n === "Object" && o.constructor) n = o.constructor.name;
  if (n === "Map" || n === "Set") return _Array$from(o);
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
}

module.exports = _unsupportedIterableToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime/regenerator/index.js":
/*!***********************************************************!*\
  !*** ../node_modules/@babel/runtime/regenerator/index.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! regenerator-runtime */ "../node_modules/regenerator-runtime/runtime.js");


/***/ }),

/***/ "../assets/dev/js/editor/element-editor-module.js":
/*!********************************************************!*\
  !*** ../assets/dev/js/editor/element-editor-module.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

module.exports = elementorModules.editor.utils.Module.extend({
  elementType: null,
  __construct: function __construct(elementType) {
    this.elementType = elementType;
    this.addEditorListener();
  },
  addEditorListener: function addEditorListener() {
    var self = this;

    if (self.onElementChange) {
      var eventName = 'change';

      if ('global' !== self.elementType) {
        eventName += ':' + self.elementType;
      }

      elementor.channels.editor.on(eventName, function (controlView, elementView) {
        self.onElementChange(controlView.model.get('name'), controlView, elementView);
      });
    }
  },

  /**
   * Add a spinner to a control inside its control title.
   *
   * @param {string} controlName - The control name to add the spinner to.
   *
   * @return {void}
   */
  addControlSpinner: function addControlSpinner(controlName) {
    var $el = this.getEditorControlView(controlName).$el,
        $input = $el.find(':input'); // Exit if there is a spinner already.

    if ($el.find('.elementor-control-spinner').length) {
      return;
    }

    $input.attr('disabled', true);
    $el.find('.elementor-control-title').after('<span class="elementor-control-spinner"><i class="eicon-spinner eicon-animation-spin"></i>&nbsp;</span>');
  },

  /**
   * Remove a spinner from a control.
   *
   * @param {string} controlName - The control name to remove the spinner from.
   *
   * @return {void}
   */
  removeControlSpinner: function removeControlSpinner(controlName) {
    var $controlEl = this.getEditorControlView(controlName).$el;
    $controlEl.find(':input').attr('disabled', false);
    $controlEl.find('.elementor-control-spinner').remove();
  },

  /**
   * Add an error message under the control.
   *
   * @param {string} controlName - The control name to add the error to.
   * @param {string} error - Set an error message.
   * @param {string} location - A CSS selector to the element which the error will be appended to.
   *
   * @return {void}
   */
  addControlError: function addControlError(controlName, error) {
    var location = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.elementor-control-content';
    var $el = this.getEditorControlView(controlName).$el; // Remove any existing error in order to override it.

    if ($el.find('.e-control-error').length) {
      $el.find('.e-control-error').remove();
    } // Select only the first elements to prevent cases where the error is added to many elements.
    // (usually in repeater controls).


    $el.find(location).first().after("<span class=\"elementor-control-field-description e-control-error\">".concat(error, "</span>"));
  },

  /**
   * Remove the control error message.
   *
   * @param {string} controlName - The control name to add the error to.
   *
   * @return {void}
   */
  removeControlError: function removeControlError(controlName) {
    var $el = this.getEditorControlView(controlName).$el;
    $el.find('.e-control-error').remove();
  },

  /**
   * Remove any indicators that are related to the control. (e.g. spinner, error, etc.)
   *
   * @param {string} controlName - The control name to reset.
   *
   * @return {void}
   */
  resetControlIndicators: function resetControlIndicators(controlName) {
    this.removeControlSpinner(controlName);
    this.removeControlError(controlName);
  },
  addSectionListener: function addSectionListener(section, callback) {
    var self = this;
    elementor.channels.editor.on('section:activated', function (sectionName, editor) {
      var model = editor.getOption('editedElementView').getEditModel(),
          currentElementType = model.get('elType'),
          _arguments = arguments;

      if ('widget' === currentElementType) {
        currentElementType = model.get('widgetType');
      }

      if (self.elementType === currentElementType && section === sectionName) {
        setTimeout(function () {
          callback.apply(self, _arguments);
        }, 10);
      }
    });
  }
});

/***/ }),

/***/ "../assets/dev/js/editor/inline-controls-stack.js":
/*!********************************************************!*\
  !*** ../assets/dev/js/editor/inline-controls-stack.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


__webpack_require__(/*! core-js/modules/es6.object.to-string.js */ "../node_modules/core-js/modules/es6.object.to-string.js");

__webpack_require__(/*! core-js/modules/es6.array.iterator.js */ "../node_modules/core-js/modules/es6.array.iterator.js");

__webpack_require__(/*! core-js/modules/web.dom.iterable.js */ "../node_modules/core-js/modules/web.dom.iterable.js");

module.exports = elementorModules.editor.views.ControlsStack.extend({
  activeTab: 'content',
  activeSection: 'settings',
  initialize: function initialize() {
    this.collection = new Backbone.Collection(_.values(this.options.controls));
  },
  filter: function filter(model) {
    if ('section' === model.get('type')) {
      return true;
    }

    var section = model.get('section');
    return !section || section === this.activeSection;
  },
  childViewOptions: function childViewOptions() {
    return {
      elementSettingsModel: this.model
    };
  }
});

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/commands/conditions-config.js":
/*!************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/commands/conditions-config.js ***!
  \************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ConditionsConfig = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var ConditionsConfig = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(ConditionsConfig, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(ConditionsConfig);

  function ConditionsConfig() {
    (0, _classCallCheck2.default)(this, ConditionsConfig);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ConditionsConfig, null, [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return 'site-editor/conditions-config/{id}';
    }
  }]);
  return ConditionsConfig;
}($e.modules.CommandData);

exports.ConditionsConfig = ConditionsConfig;
(0, _defineProperty2.default)(ConditionsConfig, "signature", 'site-editor/conditions-config');
var _default = ConditionsConfig;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/commands/index.js":
/*!************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/commands/index.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "Templates", {
  enumerable: true,
  get: function get() {
    return _templates.Templates;
  }
});

_Object$defineProperty(exports, "ConditionsConfig", {
  enumerable: true,
  get: function get() {
    return _conditionsConfig.ConditionsConfig;
  }
});

_Object$defineProperty(exports, "TemplatesConditions", {
  enumerable: true,
  get: function get() {
    return _templatesConditions.TemplatesConditions;
  }
});

_Object$defineProperty(exports, "TemplatesConditionsConflicts", {
  enumerable: true,
  get: function get() {
    return _templatesConditionsConflicts.TemplatesConditionsConflicts;
  }
});

var _templates = __webpack_require__(/*! ./templates */ "../core/app/modules/site-editor/assets/js/data/commands/templates.js");

var _conditionsConfig = __webpack_require__(/*! ./conditions-config */ "../core/app/modules/site-editor/assets/js/data/commands/conditions-config.js");

var _templatesConditions = __webpack_require__(/*! ./templates-conditions */ "../core/app/modules/site-editor/assets/js/data/commands/templates-conditions.js");

var _templatesConditionsConflicts = __webpack_require__(/*! ./templates-conditions-conflicts */ "../core/app/modules/site-editor/assets/js/data/commands/templates-conditions-conflicts.js");

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/commands/templates-conditions-conflicts.js":
/*!*************************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/commands/templates-conditions-conflicts.js ***!
  \*************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.TemplatesConditionsConflicts = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var TemplatesConditionsConflicts = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(TemplatesConditionsConflicts, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(TemplatesConditionsConflicts);

  function TemplatesConditionsConflicts() {
    (0, _classCallCheck2.default)(this, TemplatesConditionsConflicts);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(TemplatesConditionsConflicts, null, [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return "".concat(TemplatesConditionsConflicts.signature, "/{id}");
    }
  }]);
  return TemplatesConditionsConflicts;
}($e.modules.CommandData);

exports.TemplatesConditionsConflicts = TemplatesConditionsConflicts;
(0, _defineProperty2.default)(TemplatesConditionsConflicts, "signature", 'site-editor/templates-conditions-conflicts');
var _default = TemplatesConditionsConflicts;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/commands/templates-conditions.js":
/*!***************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/commands/templates-conditions.js ***!
  \***************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.TemplatesConditions = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var TemplatesConditions = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(TemplatesConditions, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(TemplatesConditions);

  function TemplatesConditions() {
    (0, _classCallCheck2.default)(this, TemplatesConditions);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(TemplatesConditions, null, [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return 'site-editor/templates-conditions/{id}';
    }
  }]);
  return TemplatesConditions;
}($e.modules.CommandData);

exports.TemplatesConditions = TemplatesConditions;
(0, _defineProperty2.default)(TemplatesConditions, "signature", 'site-editor/templates-conditions');
var _default = TemplatesConditions;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/commands/templates.js":
/*!****************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/commands/templates.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Templates = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var Templates = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(Templates, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(Templates);

  function Templates() {
    (0, _classCallCheck2.default)(this, Templates);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Templates, null, [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return 'site-editor/templates/{id}';
    }
  }]);
  return Templates;
}($e.modules.CommandData);

exports.Templates = Templates;
(0, _defineProperty2.default)(Templates, "signature", 'site-editor/templates');
var _default = Templates;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/component.js":
/*!*******************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/component.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var dataCommands = _interopRequireWildcard(__webpack_require__(/*! ./commands */ "../core/app/modules/site-editor/assets/js/data/commands/index.js"));

var Component = /*#__PURE__*/function (_$e$modules$Component) {
  (0, _inherits2.default)(Component, _$e$modules$Component);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "getNamespace",
    value: function getNamespace() {
      return this.constructor.namespace;
    }
  }, {
    key: "defaultData",
    value: function defaultData() {
      return this.importCommands(dataCommands);
    }
  }]);
  return Component;
}($e.modules.ComponentBase);

exports.default = Component;
(0, _defineProperty2.default)(Component, "namespace", 'site-editor');

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/editor.js":
/*!***********************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/editor.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _component = _interopRequireDefault(__webpack_require__(/*! ./data/component */ "../core/app/modules/site-editor/assets/js/data/component.js"));

var _commands = __webpack_require__(/*! ./data/commands */ "../core/app/modules/site-editor/assets/js/data/commands/index.js");

var Module = /*#__PURE__*/function (_elementorModules$edi) {
  (0, _inherits2.default)(Module, _elementorModules$edi);

  var _super = (0, _createSuper2.default)(Module);

  function Module() {
    (0, _classCallCheck2.default)(this, Module);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Module, [{
    key: "onElementorInit",
    value: function onElementorInit() {
      var config = elementor.documents.getCurrent().config;

      if (config.support_site_editor) {
        $e.components.register(new _component.default());
        $e.data.deleteCache($e.components.get(_component.default.namespace), _commands.Templates.signature);
      }
    }
  }]);
  return Module;
}(elementorModules.editor.utils.Module);

exports.default = Module;

/***/ }),

/***/ "../modules/assets-manager/assets/js/editor/editor.js":
/*!************************************************************!*\
  !*** ../modules/assets-manager/assets/js/editor/editor.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


module.exports = elementorModules.editor.utils.Module.extend({
  onElementorInit: function onElementorInit() {
    var FontsManager = __webpack_require__(/*! ./font-manager */ "../modules/assets-manager/assets/js/editor/font-manager.js");

    this.assets = {
      font: new FontsManager()
    };
  }
});

/***/ }),

/***/ "../modules/assets-manager/assets/js/editor/font-manager.js":
/*!******************************************************************!*\
  !*** ../modules/assets-manager/assets/js/editor/font-manager.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

module.exports = elementorModules.Module.extend({
  _enqueuedFonts: [],
  _enqueuedTypekit: false,
  onFontChange: function onFontChange(fontType, font) {
    if ('custom' !== fontType && 'typekit' !== fontType) {
      return;
    }

    if (-1 !== this._enqueuedFonts.indexOf(font)) {
      return;
    }

    if ('typekit' === fontType && this._enqueuedTypekit) {
      return;
    }

    this.getCustomFont(fontType, font);
  },
  getCustomFont: function getCustomFont(fontType, font) {
    elementorPro.ajax.addRequest('assets_manager_panel_action_data', {
      unique_id: 'font_' + fontType + font,
      data: {
        service: 'font',
        type: fontType,
        font: font
      },
      success: function success(data) {
        if (data.font_face) {
          elementor.$previewContents.find('style').last().after('<style type="text/css">' + data.font_face + '</style>');
        }

        if (data.font_url) {
          elementor.$previewContents.find('link').last().after('<link href="' + data.font_url + '" rel="stylesheet" type="text/css">');
        }
      }
    });

    this._enqueuedFonts.push(font);

    if ('typekit' === fontType) {
      this._enqueuedTypekit = true;
    }
  },
  onInit: function onInit() {
    elementor.channels.editor.on('font:insertion', this.onFontChange.bind(this));
  }
});

/***/ }),

/***/ "../modules/custom-css/assets/js/editor/editor.js":
/*!********************************************************!*\
  !*** ../modules/custom-css/assets/js/editor/editor.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(/*! core-js/modules/es6.regexp.replace.js */ "../node_modules/core-js/modules/es6.regexp.replace.js");

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _default = /*#__PURE__*/function (_elementorModules$edi) {
  (0, _inherits2.default)(_default, _elementorModules$edi);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "addCustomCss",
    value: function addCustomCss(css, context) {
      if (!context) {
        return;
      }

      var model = context.model,
          customCSS = model.get('settings').get('custom_css');
      var selector = '.elementor-element.elementor-element-' + model.get('id');

      if ('document' === model.get('elType')) {
        selector = elementor.config.document.settings.cssWrapperSelector;
      }

      if (customCSS) {
        css += customCSS.replace(/selector/g, selector);
      }

      return css;
    }
  }, {
    key: "onElementorInit",
    value: function onElementorInit() {
      elementor.hooks.addFilter('editor/style/styleText', this.addCustomCss);
      elementor.on('navigator:init', this.onNavigatorInit.bind(this));
    }
  }, {
    key: "onNavigatorInit",
    value: function onNavigatorInit() {
      elementor.navigator.indicators.customCSS = {
        icon: 'code-bold',
        settingKeys: ['custom_css'],
        title: elementorPro.translate('custom_css'),
        section: 'section_custom_css'
      };
    }
  }]);
  return _default;
}(elementorModules.editor.utils.Module);

exports.default = _default;

/***/ }),

/***/ "../modules/flip-box/assets/js/editor/editor.js":
/*!******************************************************!*\
  !*** ../modules/flip-box/assets/js/editor/editor.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

module.exports = elementorModules.editor.utils.Module.extend({
  onElementorInit: function onElementorInit() {
    elementor.channels.editor.on('section:activated', this.onSectionActivated);
  },
  onSectionActivated: function onSectionActivated(sectionName, editor) {
    var editedElement = editor.getOption('editedElementView');

    if ('flip-box' !== editedElement.model.get('widgetType')) {
      return;
    }

    var isSideBSection = -1 !== ['section_side_b_content', 'section_style_b'].indexOf(sectionName);
    editedElement.$el.toggleClass('elementor-flip-box--flipped', isSideBSection);
    var $backLayer = editedElement.$el.find('.elementor-flip-box__back');

    if (isSideBSection) {
      $backLayer.css('transition', 'none');
    }

    if (!isSideBSection) {
      setTimeout(function () {
        $backLayer.css('transition', '');
      }, 10);
    }
  }
});

/***/ }),

/***/ "../modules/forms/assets/js/editor/component.js":
/*!******************************************************!*\
  !*** ../modules/forms/assets/js/editor/component.js ***!
  \******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var hooks = _interopRequireWildcard(__webpack_require__(/*! ./hooks/ */ "../modules/forms/assets/js/editor/hooks/index.js"));

var Component = /*#__PURE__*/function (_$e$modules$Component) {
  (0, _inherits2.default)(Component, _$e$modules$Component);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "getNamespace",
    value: function getNamespace() {
      return 'forms';
    }
  }, {
    key: "defaultHooks",
    value: function defaultHooks() {
      return this.importHooks(hooks);
    }
  }]);
  return Component;
}($e.modules.ComponentBase);

exports.default = Component;

/***/ }),

/***/ "../modules/forms/assets/js/editor/fields-map-control.js":
/*!***************************************************************!*\
  !*** ../modules/forms/assets/js/editor/fields-map-control.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

module.exports = elementor.modules.controls.Repeater.extend({
  onBeforeRender: function onBeforeRender() {
    this.$el.hide();
  },
  updateMap: function updateMap(fields) {
    var self = this,
        savedMapObject = {};
    self.collection.each(function (model) {
      savedMapObject[model.get('remote_id')] = model.get('local_id');
    });
    self.collection.reset();

    _.each(fields, function (field) {
      var model = {
        remote_id: field.remote_id,
        remote_label: field.remote_label,
        remote_type: field.remote_type ? field.remote_type : '',
        remote_required: field.remote_required ? field.remote_required : false,
        local_id: savedMapObject[field.remote_id] ? savedMapObject[field.remote_id] : ''
      };
      self.collection.add(model);
    });

    self.render();
  },
  onRender: function onRender() {
    elementor.modules.controls.Base.prototype.onRender.apply(this, arguments);
    var self = this;
    self.children.each(function (view) {
      var localFieldsControl = view.children.last(),
          options = {
        '': '- ' + elementor.translate('None') + ' -'
      },
          label = view.model.get('remote_label');

      if (view.model.get('remote_required')) {
        label += '<span class="elementor-required">*</span>';
      }

      _.each(self.elementSettingsModel.get('form_fields').models, function (model, index) {
        // If it's an email field, add only email fields from thr form
        var remoteType = view.model.get('remote_type');

        if ('text' !== remoteType && remoteType !== model.get('field_type')) {
          return;
        }

        options[model.get('custom_id')] = model.get('field_label') || 'Field #' + (index + 1);
      });

      localFieldsControl.model.set('label', label);
      localFieldsControl.model.set('options', options);
      localFieldsControl.render();
      view.$el.find('.elementor-repeater-row-tools').hide();
      view.$el.find('.elementor-repeater-row-controls').removeClass('elementor-repeater-row-controls').find('.elementor-control').css({
        paddingBottom: 0
      });
    });
    self.$el.find('.elementor-button-wrapper').remove();

    if (self.children.length) {
      self.$el.show();
    }
  }
});

/***/ }),

/***/ "../modules/forms/assets/js/editor/fields-repeater-control.js":
/*!********************************************************************!*\
  !*** ../modules/forms/assets/js/editor/fields-repeater-control.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _get3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/get */ "../node_modules/@babel/runtime-corejs2/helpers/get.js"));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/getPrototypeOf */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _fieldsRepeaterRow = _interopRequireDefault(__webpack_require__(/*! ./fields-repeater-row */ "../modules/forms/assets/js/editor/fields-repeater-row.js"));

module.exports = /*#__PURE__*/function (_elementor$modules$co) {
  (0, _inherits2.default)(_class, _elementor$modules$co);

  var _super = (0, _createSuper2.default)(_class);

  function _class() {
    (0, _classCallCheck2.default)(this, _class);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_class, [{
    key: "className",
    value: function className() {
      var classes = (0, _get3.default)((0, _getPrototypeOf2.default)(_class.prototype), "className", this).call(this);
      classes += ' elementor-control-type-repeater';
      return classes;
    }
  }, {
    key: "getChildView",
    value: function getChildView() {
      return _fieldsRepeaterRow.default;
    }
  }, {
    key: "initialize",
    value: function initialize() {
      var _get2,
          _this = this;

      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      (_get2 = (0, _get3.default)((0, _getPrototypeOf2.default)(_class.prototype), "initialize", this)).call.apply(_get2, [this].concat(args));

      var formFields = this.container.settings.get('form_fields');
      this.listenTo(formFields, 'change', function (model) {
        return _this.onFormFieldChange(model);
      }).listenTo(formFields, 'remove', function (model) {
        return _this.onFormFieldRemove(model);
      });
    }
  }, {
    key: "getFirstChild",
    value: function getFirstChild() {
      return this.children.findByModel(this.collection.models[0]);
    }
  }, {
    key: "lockFirstStep",
    value: function lockFirstStep() {
      var firstChild = this.getFirstChild();

      if ('step' !== firstChild.model.get('field_type')) {
        return;
      }

      var stepFields = this.collection.where({
        field_type: 'step'
      });

      if (1 < stepFields.length) {
        firstChild.toggleFieldTypeControl(false);
        firstChild.toggleTools(false);
      }

      firstChild.toggleSort(false);
    }
  }, {
    key: "onFormFieldChange",
    value: function onFormFieldChange(model) {
      var fieldType = model.changed.field_type;

      if (!fieldType || 'step' !== fieldType && 'step' !== model._previousAttributes.field_type) {
        return;
      }

      var isStep = 'step' === fieldType;
      this.children.findByModel(model).toggleStepField(isStep);
      this.onStepFieldChanged(isStep);
    }
  }, {
    key: "onFormFieldRemove",
    value: function onFormFieldRemove(model) {
      if ('step' === model.get('field_type')) {
        this.onStepFieldChanged(false);
      }
    }
  }, {
    key: "onStepFieldChanged",
    value: function onStepFieldChanged(isStep) {
      if (isStep) {
        this.lockFirstStep();
        return;
      }

      var stepFields = this.collection.where({
        field_type: 'step'
      });

      if (stepFields.length > 1) {
        return;
      }

      var firstChild = this.getFirstChild();

      if (1 === stepFields.length) {
        firstChild.toggleTools(true);
        firstChild.toggleFieldTypeControl(true);
        return;
      }

      firstChild.toggleSort(true);
    }
  }, {
    key: "onAddChild",
    value: function onAddChild(childView) {
      (0, _get3.default)((0, _getPrototypeOf2.default)(_class.prototype), "onAddChild", this).call(this, childView);

      if ('step' === childView.model.get('field_type')) {
        this.lockFirstStep();
        childView.toggleStepField(true);
      }
    }
  }]);
  return _class;
}(elementor.modules.controls.Repeater);

/***/ }),

/***/ "../modules/forms/assets/js/editor/fields-repeater-row.js":
/*!****************************************************************!*\
  !*** ../modules/forms/assets/js/editor/fields-repeater-row.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _default = /*#__PURE__*/function (_elementor$modules$co) {
  (0, _inherits2.default)(_default, _elementor$modules$co);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "toggleFieldTypeControl",
    value: function toggleFieldTypeControl(show) {
      var fieldTypeModel = this.collection.findWhere({
        name: 'field_type'
      }),
          fieldTypeControl = this.children.findByModel(fieldTypeModel);
      fieldTypeControl.$el.toggle(show);
    }
  }, {
    key: "toggleStepField",
    value: function toggleStepField(isStep) {
      this.$el.toggleClass('elementor-repeater-row--form-step', isStep);
    }
  }, {
    key: "toggleTools",
    value: function toggleTools(show) {
      this.ui.removeButton.add(this.ui.duplicateButton).toggle(show);
    }
  }]);
  return _default;
}(elementor.modules.controls.RepeaterRow);

exports.default = _default;

/***/ }),

/***/ "../modules/forms/assets/js/editor/fields/acceptance.js":
/*!**************************************************************!*\
  !*** ../modules/forms/assets/js/editor/fields/acceptance.js ***!
  \**************************************************************/
/***/ ((module) => {

"use strict";


module.exports = elementorModules.editor.utils.Module.extend({
  renderField: function renderField(inputField, item, i, settings) {
    var itemClasses = _.escape(item.css_classes),
        required = '',
        label = '',
        checked = '';

    if (item.required) {
      required = 'required';
    }

    if (item.acceptance_text) {
      label = '<label for="form_field_' + i + '">' + item.acceptance_text + '</label>';
    }

    if (item.checked_by_default) {
      checked = ' checked="checked"';
    }

    return '<div class="elementor-field-subgroup">' + '<span class="elementor-field-option">' + '<input size="1" type="checkbox"' + checked + ' class="elementor-acceptance-field elementor-field elementor-size-' + settings.input_size + ' ' + itemClasses + '" name="form_field_' + i + '" id="form_field_' + i + '" ' + required + ' > ' + label + '</span></div>';
  },
  onInit: function onInit() {
    elementor.hooks.addFilter('elementor_pro/forms/content_template/field/acceptance', this.renderField, 10, 4);
  }
});

/***/ }),

/***/ "../modules/forms/assets/js/editor/fields/date.js":
/*!********************************************************!*\
  !*** ../modules/forms/assets/js/editor/fields/date.js ***!
  \********************************************************/
/***/ ((module) => {

"use strict";


module.exports = elementorModules.editor.utils.Module.extend({
  renderField: function renderField(inputField, item, i, settings) {
    var itemClasses = _.escape(item.css_classes),
        required = '',
        min = '',
        max = '',
        placeholder = '';

    if (item.required) {
      required = 'required';
    }

    if (item.min_date) {
      min = ' min="' + item.min_date + '"';
    }

    if (item.max_date) {
      max = ' max="' + item.max_date + '"';
    }

    if (item.placeholder) {
      placeholder = ' placeholder="' + item.placeholder + '"';
    }

    if ('yes' === item.use_native_date) {
      itemClasses += ' elementor-use-native';
    }

    return '<input size="1"' + min + max + placeholder + ' pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}" type="date" class="elementor-field-textual elementor-date-field elementor-field elementor-size-' + settings.input_size + ' ' + itemClasses + '" name="form_field_' + i + '" id="form_field_' + i + '" ' + required + ' >';
  },
  onInit: function onInit() {
    elementor.hooks.addFilter('elementor_pro/forms/content_template/field/date', this.renderField, 10, 4);
  }
});

/***/ }),

/***/ "../modules/forms/assets/js/editor/fields/tel.js":
/*!*******************************************************!*\
  !*** ../modules/forms/assets/js/editor/fields/tel.js ***!
  \*******************************************************/
/***/ ((module) => {

"use strict";


module.exports = elementorModules.editor.utils.Module.extend({
  renderField: function renderField(inputField, item, i, settings) {
    var itemClasses = _.escape(item.css_classes),
        required = '',
        placeholder = '';

    if (item.required) {
      required = 'required';
    }

    if (item.placeholder) {
      placeholder = ' placeholder="' + item.placeholder + '"';
    }

    itemClasses = 'elementor-field-textual ' + itemClasses;
    return '<input size="1" type="' + item.field_type + '" class="elementor-field-textual elementor-field elementor-size-' + settings.input_size + ' ' + itemClasses + '" name="form_field_' + i + '" id="form_field_' + i + '" ' + required + ' ' + placeholder + ' pattern="[0-9()-]" >';
  },
  onInit: function onInit() {
    elementor.hooks.addFilter('elementor_pro/forms/content_template/field/tel', this.renderField, 10, 4);
  }
});

/***/ }),

/***/ "../modules/forms/assets/js/editor/fields/time.js":
/*!********************************************************!*\
  !*** ../modules/forms/assets/js/editor/fields/time.js ***!
  \********************************************************/
/***/ ((module) => {

"use strict";


module.exports = elementorModules.editor.utils.Module.extend({
  renderField: function renderField(inputField, item, i, settings) {
    var itemClasses = _.escape(item.css_classes),
        required = '',
        placeholder = '';

    if (item.required) {
      required = 'required';
    }

    if (item.placeholder) {
      placeholder = ' placeholder="' + item.placeholder + '"';
    }

    if ('yes' === item.use_native_time) {
      itemClasses += ' elementor-use-native';
    }

    return '<input size="1" type="time"' + placeholder + ' class="elementor-field-textual elementor-time-field elementor-field elementor-size-' + settings.input_size + ' ' + itemClasses + '" name="form_field_' + i + '" id="form_field_' + i + '" ' + required + ' >';
  },
  onInit: function onInit() {
    elementor.hooks.addFilter('elementor_pro/forms/content_template/field/time', this.renderField, 10, 4);
  }
});

/***/ }),

/***/ "../modules/forms/assets/js/editor/fields/upload.js":
/*!**********************************************************!*\
  !*** ../modules/forms/assets/js/editor/fields/upload.js ***!
  \**********************************************************/
/***/ ((module) => {

"use strict";


module.exports = elementorModules.editor.utils.Module.extend({
  renderField: function renderField(inputField, item, i, settings) {
    var itemClasses = _.escape(item.css_classes),
        required = '',
        multiple = '',
        fieldName = 'form_field_';

    if (item.required) {
      required = 'required';
    }

    if (item.allow_multiple_upload) {
      multiple = ' multiple="multiple"';
      fieldName += '[]';
    }

    return '<input size="1"  type="file" class="elementor-file-field elementor-field elementor-size-' + settings.input_size + ' ' + itemClasses + '" name="' + fieldName + '" id="form_field_' + i + '" ' + required + multiple + ' >';
  },
  onInit: function onInit() {
    elementor.hooks.addFilter('elementor_pro/forms/content_template/field/upload', this.renderField, 10, 4);
  }
});

/***/ }),

/***/ "../modules/forms/assets/js/editor/hooks/data/form-fields-sanitize-custom-id.js":
/*!**************************************************************************************!*\
  !*** ../modules/forms/assets/js/editor/hooks/data/form-fields-sanitize-custom-id.js ***!
  \**************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.FormFieldsSanitizeCustomId = void 0;

__webpack_require__(/*! core-js/modules/es6.regexp.match.js */ "../node_modules/core-js/modules/es6.regexp.match.js");

__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/assertThisInitialized */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var FormFieldsSanitizeCustomId = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(FormFieldsSanitizeCustomId, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(FormFieldsSanitizeCustomId);

  function FormFieldsSanitizeCustomId() {
    var _this;

    (0, _classCallCheck2.default)(this, FormFieldsSanitizeCustomId);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "ID_SANITIZE_FILTER", /[^\w]/g);
    return _this;
  }

  (0, _createClass2.default)(FormFieldsSanitizeCustomId, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/elements/settings';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-forms-fields-sanitize-custom-id';
    }
  }, {
    key: "getContainerType",
    value: function getContainerType() {
      return 'repeater';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      return undefined !== args.settings.custom_id;
    }
  }, {
    key: "apply",
    value: function apply(args) {
      var _args$containers = args.containers,
          containers = _args$containers === void 0 ? [args.container] : _args$containers,
          settings = args.settings,
          custom_id = settings.custom_id; // eslint-disable-line camelcase

      if (custom_id.match(this.ID_SANITIZE_FILTER)) {
        // Re-render with old settings.
        containers.forEach(function (container) {
          var panelView = container.panel.getControlView('form_fields'),
              currentItemView = panelView.children.findByModel(container.settings),
              idView = currentItemView.children.find(function (view) {
            return 'custom_id' === view.model.get('name');
          });
          idView.render();
          idView.$el.find('input').trigger('focus');
        }); // Hook-Break.

        return false;
      }

      return true;
    }
  }]);
  return FormFieldsSanitizeCustomId;
}($e.modules.hookData.Dependency);

exports.FormFieldsSanitizeCustomId = FormFieldsSanitizeCustomId;
var _default = FormFieldsSanitizeCustomId;
exports.default = _default;

/***/ }),

/***/ "../modules/forms/assets/js/editor/hooks/data/form-fields-set-custom-id.js":
/*!*********************************************************************************!*\
  !*** ../modules/forms/assets/js/editor/hooks/data/form-fields-set-custom-id.js ***!
  \*********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.FormFieldsSetCustomId = void 0;

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var FormFieldsSetCustomId = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(FormFieldsSetCustomId, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(FormFieldsSetCustomId);

  function FormFieldsSetCustomId() {
    (0, _classCallCheck2.default)(this, FormFieldsSetCustomId);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(FormFieldsSetCustomId, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/repeater/insert';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-forms-fields-set-custom-id';
    }
  }, {
    key: "getContainerType",
    value: function getContainerType() {
      return 'widget';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      return 'form_fields' === args.name;
    }
  }, {
    key: "apply",
    value: function apply(args, model) {
      var _args$containers = args.containers,
          containers = _args$containers === void 0 ? [args.container] : _args$containers,
          isDuplicate = $e.commands.isCurrentFirstTrace('document/repeater/duplicate');
      containers.forEach(function (
      /** Container */
      container) {
        var itemContainer = container.repeaters.form_fields.children.find(function (childrenContainer) {
          // Sometimes, one of children is {Empty}.
          if (childrenContainer) {
            return model.get('_id') === childrenContainer.id;
          }

          return false;
        });

        if (!isDuplicate && itemContainer.settings.get('custom_id')) {
          return;
        }

        $e.run('document/elements/settings', {
          container: itemContainer,
          settings: {
            custom_id: 'field_' + itemContainer.id
          },
          options: {
            external: true
          }
        });
      });
      return true;
    }
  }]);
  return FormFieldsSetCustomId;
}($e.modules.hookData.After);

exports.FormFieldsSetCustomId = FormFieldsSetCustomId;
var _default = FormFieldsSetCustomId;
exports.default = _default;

/***/ }),

/***/ "../modules/forms/assets/js/editor/hooks/data/form-fields-step.js":
/*!************************************************************************!*\
  !*** ../modules/forms/assets/js/editor/hooks/data/form-fields-step.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.FormFieldsAddFirstStep = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var FormFieldsAddFirstStep = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(FormFieldsAddFirstStep, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(FormFieldsAddFirstStep);

  function FormFieldsAddFirstStep() {
    (0, _classCallCheck2.default)(this, FormFieldsAddFirstStep);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(FormFieldsAddFirstStep, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/elements/settings';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-forms-fields-first-step';
    }
  }, {
    key: "getContainerType",
    value: function getContainerType() {
      return 'repeater';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      var _args$containers = args.containers,
          containers = _args$containers === void 0 ? [args.container] : _args$containers;
      return 'form' === containers[0].parent.parent.model.get('widgetType') && 'step' === args.settings.field_type;
    }
  }, {
    key: "apply",
    value: function apply(args) {
      var _args$containers2 = args.containers,
          containers = _args$containers2 === void 0 ? [args.container] : _args$containers2;
      containers.forEach(function (
      /** Container */
      container) {
        var firstItem = container.parent.children[0];

        if ('step' === firstItem.settings.get('field_type')) {
          return;
        }

        $e.run('document/repeater/insert', {
          container: container.parent.parent,
          // widget
          name: 'form_fields',
          model: {
            field_type: 'step'
          },
          options: {
            at: 0,
            external: true
          }
        });
      });
      return true;
    }
  }]);
  return FormFieldsAddFirstStep;
}($e.modules.hookData.After);

exports.FormFieldsAddFirstStep = FormFieldsAddFirstStep;
var _default = FormFieldsAddFirstStep;
exports.default = _default;

/***/ }),

/***/ "../modules/forms/assets/js/editor/hooks/data/form-sanitize-id.js":
/*!************************************************************************!*\
  !*** ../modules/forms/assets/js/editor/hooks/data/form-sanitize-id.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.FormSanitizeId = void 0;

__webpack_require__(/*! core-js/modules/es6.regexp.match.js */ "../node_modules/core-js/modules/es6.regexp.match.js");

__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/assertThisInitialized */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var FormSanitizeId = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(FormSanitizeId, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(FormSanitizeId);

  function FormSanitizeId() {
    var _this;

    (0, _classCallCheck2.default)(this, FormSanitizeId);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "ID_SANITIZE_FILTER", /[^\w]/g);
    return _this;
  }

  (0, _createClass2.default)(FormSanitizeId, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/elements/settings';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-forms-sanitize-id';
    }
  }, {
    key: "getContainerType",
    value: function getContainerType() {
      return 'widget';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      return undefined !== args.settings.form_id;
    }
  }, {
    key: "apply",
    value: function apply(args) {
      var container = args.container,
          settings = args.settings;
      var form_id = settings.form_id; // eslint-disable-line camelcase
      // Re-render with old settings.

      if (form_id.match(this.ID_SANITIZE_FILTER)) {
        var formIdView = container.panel.getControlView('form_id');
        formIdView.render();
        formIdView.$el.find('input').trigger('focus'); // Hook-Break.

        return false;
      }

      return true;
    }
  }]);
  return FormSanitizeId;
}($e.modules.hookData.Dependency);

exports.FormSanitizeId = FormSanitizeId;
var _default = FormSanitizeId;
exports.default = _default;

/***/ }),

/***/ "../modules/forms/assets/js/editor/hooks/data/index.js":
/*!*************************************************************!*\
  !*** ../modules/forms/assets/js/editor/hooks/data/index.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "FormFieldsSanitizeCustomId", {
  enumerable: true,
  get: function get() {
    return _formFieldsSanitizeCustomId.FormFieldsSanitizeCustomId;
  }
});

_Object$defineProperty(exports, "FormFieldsSetCustomId", {
  enumerable: true,
  get: function get() {
    return _formFieldsSetCustomId.FormFieldsSetCustomId;
  }
});

_Object$defineProperty(exports, "FormFieldsAddFirstStep", {
  enumerable: true,
  get: function get() {
    return _formFieldsStep.FormFieldsAddFirstStep;
  }
});

_Object$defineProperty(exports, "FormSanitizeId", {
  enumerable: true,
  get: function get() {
    return _formSanitizeId.FormSanitizeId;
  }
});

var _formFieldsSanitizeCustomId = __webpack_require__(/*! ./form-fields-sanitize-custom-id */ "../modules/forms/assets/js/editor/hooks/data/form-fields-sanitize-custom-id.js");

var _formFieldsSetCustomId = __webpack_require__(/*! ./form-fields-set-custom-id */ "../modules/forms/assets/js/editor/hooks/data/form-fields-set-custom-id.js");

var _formFieldsStep = __webpack_require__(/*! ./form-fields-step */ "../modules/forms/assets/js/editor/hooks/data/form-fields-step.js");

var _formSanitizeId = __webpack_require__(/*! ./form-sanitize-id */ "../modules/forms/assets/js/editor/hooks/data/form-sanitize-id.js");

/***/ }),

/***/ "../modules/forms/assets/js/editor/hooks/index.js":
/*!********************************************************!*\
  !*** ../modules/forms/assets/js/editor/hooks/index.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _Object$keys = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

var _data = __webpack_require__(/*! ./data/ */ "../modules/forms/assets/js/editor/hooks/data/index.js");

_Object$keys(_data).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _data[key]) return;

  _Object$defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _data[key];
    }
  });
});

var _ui = __webpack_require__(/*! ./ui/ */ "../modules/forms/assets/js/editor/hooks/ui/index.js");

_Object$keys(_ui).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _ui[key]) return;

  _Object$defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _ui[key];
    }
  });
});

/***/ }),

/***/ "../modules/forms/assets/js/editor/hooks/ui/form-fields-update-shortcode.js":
/*!**********************************************************************************!*\
  !*** ../modules/forms/assets/js/editor/hooks/ui/form-fields-update-shortcode.js ***!
  \**********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.FormFieldsUpdateShortCode = void 0;

__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var FormFieldsUpdateShortCode = /*#__PURE__*/function (_$e$modules$hookUI$Af) {
  (0, _inherits2.default)(FormFieldsUpdateShortCode, _$e$modules$hookUI$Af);

  var _super = (0, _createSuper2.default)(FormFieldsUpdateShortCode);

  function FormFieldsUpdateShortCode() {
    (0, _classCallCheck2.default)(this, FormFieldsUpdateShortCode);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(FormFieldsUpdateShortCode, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/elements/settings';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-forms-fields-update-shortcode';
    }
  }, {
    key: "getContainerType",
    value: function getContainerType() {
      return 'repeater';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      if (!$e.routes.isPartOf('panel/editor') || undefined === args.settings.custom_id) {
        return false;
      }

      return true;
    }
  }, {
    key: "apply",
    value: function apply(args) {
      var _args$containers = args.containers,
          containers = _args$containers === void 0 ? [args.container] : _args$containers;
      containers.forEach(function (
      /** Container */
      container) {
        var panelView = container.panel.getControlView('form_fields'),
            currentItemView = panelView.children.find(function (view) {
          return container.id === view.model.get('_id');
        }),
            shortcodeView = currentItemView.children.find(function (view) {
          return 'shortcode' === view.model.get('name');
        });
        shortcodeView.render();
      });
    }
  }]);
  return FormFieldsUpdateShortCode;
}($e.modules.hookUI.After);

exports.FormFieldsUpdateShortCode = FormFieldsUpdateShortCode;
var _default = FormFieldsUpdateShortCode;
exports.default = _default;

/***/ }),

/***/ "../modules/forms/assets/js/editor/hooks/ui/index.js":
/*!***********************************************************!*\
  !*** ../modules/forms/assets/js/editor/hooks/ui/index.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "FormFieldsUpdateShortCode", {
  enumerable: true,
  get: function get() {
    return _formFieldsUpdateShortcode.FormFieldsUpdateShortCode;
  }
});

var _formFieldsUpdateShortcode = __webpack_require__(/*! ./form-fields-update-shortcode */ "../modules/forms/assets/js/editor/hooks/ui/form-fields-update-shortcode.js");

/***/ }),

/***/ "../modules/forms/assets/js/editor/integrations/activecampaign.js":
/*!************************************************************************!*\
  !*** ../modules/forms/assets/js/editor/integrations/activecampaign.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var BaseIntegrationModule = __webpack_require__(/*! ./base */ "../modules/forms/assets/js/editor/integrations/base.js");

module.exports = BaseIntegrationModule.extend({
  fields: {},
  getName: function getName() {
    return 'activecampaign';
  },
  onElementChange: function onElementChange(setting) {
    switch (setting) {
      case 'activecampaign_api_credentials_source':
      case 'activecampaign_api_key':
      case 'activecampaign_api_url':
        this.onApiUpdate();
        break;

      case 'activecampaign_list':
        this.onListUpdate();
        break;
    }
  },
  onApiUpdate: function onApiUpdate() {
    var self = this,
        apikeyControlView = self.getEditorControlView('activecampaign_api_key'),
        apiUrlControlView = self.getEditorControlView('activecampaign_api_url'),
        apiCredControlView = self.getEditorControlView('activecampaign_api_credentials_source');

    if ('default' !== apiCredControlView.getControlValue() && ('' === apikeyControlView.getControlValue() || '' === apiUrlControlView.getControlValue())) {
      self.updateOptions('activecampaign_list', []);
      self.getEditorControlView('activecampaign_list').setValue('');
      return;
    }

    self.addControlSpinner('activecampaign_list');
    var cacheKey = this.getCacheKey({
      controls: [apiCredControlView.getControlValue(), apiUrlControlView.getControlValue(), apikeyControlView.getControlValue()]
    });
    self.getActiveCampaignCache('lists', 'activecampaign_list', cacheKey).done(function (data) {
      self.updateOptions('activecampaign_list', data.lists);
      self.fields = data.fields;
    });
  },
  onListUpdate: function onListUpdate() {
    this.updateFieldsMapping();
  },
  updateFieldsMapping: function updateFieldsMapping() {
    var controlView = this.getEditorControlView('activecampaign_list');

    if (!controlView.getControlValue()) {
      return;
    }

    var remoteFields = [{
      remote_label: elementor.translate('Email'),
      remote_type: 'email',
      remote_id: 'email',
      remote_required: true
    }, {
      remote_label: elementor.translate('First Name'),
      remote_type: 'text',
      remote_id: 'first_name',
      remote_required: false
    }, {
      remote_label: elementor.translate('Last Name'),
      remote_type: 'text',
      remote_id: 'last_name',
      remote_required: false
    }, {
      remote_label: elementor.translate('Phone'),
      remote_type: 'text',
      remote_id: 'phone',
      remote_required: false
    }, {
      remote_label: elementor.translate('Organization name'),
      remote_type: 'text',
      remote_id: 'orgname',
      remote_required: false
    }];

    for (var field in this.fields) {
      if (this.fields.hasOwnProperty(field)) {
        remoteFields.push(this.fields[field]);
      }
    }

    this.getEditorControlView('activecampaign_fields_map').updateMap(remoteFields);
  },
  getActiveCampaignCache: function getActiveCampaignCache(type, action, cacheKey, requestArgs) {
    if (_.has(this.cache[type], cacheKey)) {
      var data = {};
      data[type] = this.cache[type][cacheKey];
      return jQuery.Deferred().resolve(data);
    }

    requestArgs = _.extend({}, requestArgs, {
      service: 'activecampaign',
      activecampaign_action: action,
      api_key: this.getEditorControlView('activecampaign_api_key').getControlValue(),
      api_url: this.getEditorControlView('activecampaign_api_url').getControlValue(),
      api_cred: this.getEditorControlView('activecampaign_api_credentials_source').getControlValue()
    });
    return this.fetchCache(type, cacheKey, requestArgs);
  }
});

/***/ }),

/***/ "../modules/forms/assets/js/editor/integrations/base.js":
/*!**************************************************************!*\
  !*** ../modules/forms/assets/js/editor/integrations/base.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

var _stringify = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/json/stringify */ "../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js"));

var ElementEditorModule = __webpack_require__(/*! elementor-pro/editor/element-editor-module */ "../assets/dev/js/editor/element-editor-module.js");

module.exports = ElementEditorModule.extend({
  __construct: function __construct() {
    this.cache = {};

    ElementEditorModule.prototype.__construct.apply(this, arguments);
  },
  getName: function getName() {
    return '';
  },
  getCacheKey: function getCacheKey(args) {
    return (0, _stringify.default)({
      service: this.getName(),
      data: args
    });
  },
  fetchCache: function fetchCache(type, cacheKey, requestArgs) {
    var _this = this;

    var immediately = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
    return elementorPro.ajax.addRequest('forms_panel_action_data', {
      unique_id: 'integrations_' + this.getName(),
      data: requestArgs,
      success: function success(data) {
        _this.cache[type] = _.extend({}, _this.cache[type]);
        _this.cache[type][cacheKey] = data[type];
      }
    }, immediately);
  },
  updateOptions: function updateOptions(name, options) {
    var controlView = this.getEditorControlView(name);

    if (controlView) {
      this.getEditorControlModel(name).set('options', options);
      controlView.render();
    }
  },
  onInit: function onInit() {
    this.addSectionListener('section_' + this.getName(), this.onSectionActive);
  },
  onSectionActive: function onSectionActive() {
    this.onApiUpdate();
  },
  onApiUpdate: function onApiUpdate() {}
});

/***/ }),

/***/ "../modules/forms/assets/js/editor/integrations/convertkit.js":
/*!********************************************************************!*\
  !*** ../modules/forms/assets/js/editor/integrations/convertkit.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var BaseIntegrationModule = __webpack_require__(/*! ./base */ "../modules/forms/assets/js/editor/integrations/base.js");

module.exports = BaseIntegrationModule.extend({
  getName: function getName() {
    return 'convertkit';
  },
  onElementChange: function onElementChange(setting) {
    switch (setting) {
      case 'convertkit_api_key_source':
      case 'convertkit_custom_api_key':
        this.onApiUpdate();
        break;

      case 'convertkit_form':
        this.onListUpdate();
        break;
    }
  },
  onApiUpdate: function onApiUpdate() {
    var self = this,
        apiKeyControlView = self.getEditorControlView('convertkit_api_key_source'),
        customApikeyControlView = self.getEditorControlView('convertkit_custom_api_key');

    if ('default' !== apiKeyControlView.getControlValue() && '' === customApikeyControlView.getControlValue()) {
      self.updateOptions('convertkit_form', []);
      self.getEditorControlView('convertkit_form').setValue('');
      return;
    }

    self.addControlSpinner('convertkit_form');
    var cacheKey = this.getCacheKey({
      type: 'data',
      controls: [apiKeyControlView.getControlValue(), customApikeyControlView.getControlValue()]
    });
    self.getConvertKitCache('data', 'convertkit_get_forms', cacheKey).done(function (data) {
      self.updateOptions('convertkit_form', data.data.forms);
      self.updateOptions('convertkit_tags', data.data.tags);
    });
  },
  onListUpdate: function onListUpdate() {
    this.updateFieldsMapping();
  },
  updateFieldsMapping: function updateFieldsMapping() {
    var controlView = this.getEditorControlView('convertkit_form');

    if (!controlView.getControlValue()) {
      return;
    }

    var remoteFields = [{
      remote_label: elementor.translate('Email'),
      remote_type: 'email',
      remote_id: 'email',
      remote_required: true
    }, {
      remote_label: elementor.translate('First Name'),
      remote_type: 'text',
      remote_id: 'first_name',
      remote_required: false
    }];
    this.getEditorControlView('convertkit_fields_map').updateMap(remoteFields);
  },
  getConvertKitCache: function getConvertKitCache(type, action, cacheKey, requestArgs) {
    if (_.has(this.cache[type], cacheKey)) {
      var data = {};
      data[type] = this.cache[type][cacheKey];
      return jQuery.Deferred().resolve(data);
    }

    requestArgs = _.extend({}, requestArgs, {
      service: 'convertkit',
      convertkit_action: action,
      api_key: this.getEditorControlView('convertkit_api_key_source').getControlValue(),
      custom_api_key: this.getEditorControlView('convertkit_custom_api_key').getControlValue()
    });
    return this.fetchCache(type, cacheKey, requestArgs);
  }
});

/***/ }),

/***/ "../modules/forms/assets/js/editor/integrations/drip.js":
/*!**************************************************************!*\
  !*** ../modules/forms/assets/js/editor/integrations/drip.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var BaseIntegrationModule = __webpack_require__(/*! ./base */ "../modules/forms/assets/js/editor/integrations/base.js");

module.exports = BaseIntegrationModule.extend({
  getName: function getName() {
    return 'drip';
  },
  onElementChange: function onElementChange(setting) {
    switch (setting) {
      case 'drip_api_token_source':
      case 'drip_custom_api_token':
        this.onApiUpdate();
        break;

      case 'drip_account':
        this.onDripAccountsUpdate();
        break;
    }
  },
  onApiUpdate: function onApiUpdate() {
    var self = this,
        controlView = self.getEditorControlView('drip_api_token_source'),
        customControlView = self.getEditorControlView('drip_custom_api_token');

    if ('default' !== controlView.getControlValue() && '' === customControlView.getControlValue()) {
      self.updateOptions('drip_account', []);
      self.getEditorControlView('drip_account').setValue('');
      return;
    }

    self.addControlSpinner('drip_account');
    this.getCacheKey({
      type: 'accounts',
      controls: [controlView.getControlValue(), customControlView.getControlValue()]
    });
    self.getDripCache('accounts', 'accounts', controlView.getControlValue()).done(function (data) {
      self.updateOptions('drip_account', data.accounts);
    });
  },
  onDripAccountsUpdate: function onDripAccountsUpdate() {
    this.updateFieldsMapping();
  },
  updateFieldsMapping: function updateFieldsMapping() {
    var controlView = this.getEditorControlView('drip_account');

    if (!controlView.getControlValue()) {
      return;
    }

    var remoteFields = {
      remote_label: elementor.translate('Email'),
      remote_type: 'email',
      remote_id: 'email',
      remote_required: true
    };
    this.getEditorControlView('drip_fields_map').updateMap([remoteFields]);
  },
  getDripCache: function getDripCache(type, action, cacheKey, requestArgs) {
    if (_.has(this.cache[type], cacheKey)) {
      var data = {};
      data[type] = this.cache[type][cacheKey];
      return jQuery.Deferred().resolve(data);
    }

    requestArgs = _.extend({}, requestArgs, {
      service: 'drip',
      drip_action: action,
      api_token: this.getEditorControlView('drip_api_token_source').getControlValue(),
      custom_api_token: this.getEditorControlView('drip_custom_api_token').getControlValue()
    });
    return this.fetchCache(type, cacheKey, requestArgs);
  }
});

/***/ }),

/***/ "../modules/forms/assets/js/editor/integrations/getresponse.js":
/*!*********************************************************************!*\
  !*** ../modules/forms/assets/js/editor/integrations/getresponse.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var BaseIntegrationModule = __webpack_require__(/*! ./base */ "../modules/forms/assets/js/editor/integrations/base.js");

module.exports = BaseIntegrationModule.extend({
  getName: function getName() {
    return 'getresponse';
  },
  onElementChange: function onElementChange(setting) {
    switch (setting) {
      case 'getresponse_custom_api_key':
      case 'getresponse_api_key_source':
        this.onApiUpdate();
        break;

      case 'getresponse_list':
        this.onGetResonseListUpdate();
        break;
    }
  },
  onApiUpdate: function onApiUpdate() {
    var self = this,
        controlView = self.getEditorControlView('getresponse_api_key_source'),
        customControlView = self.getEditorControlView('getresponse_custom_api_key');

    if ('default' !== controlView.getControlValue() && '' === customControlView.getControlValue()) {
      self.updateOptions('getresponse_list', []);
      self.getEditorControlView('getresponse_list').setValue('');
      return;
    }

    self.addControlSpinner('getresponse_list');
    var cacheKey = this.getCacheKey({
      type: 'lists',
      controls: [controlView.getControlValue(), customControlView.getControlValue()]
    });
    self.getCache('lists', 'lists', cacheKey).done(function (data) {
      self.updateOptions('getresponse_list', data.lists);
    });
  },
  onGetResonseListUpdate: function onGetResonseListUpdate() {
    this.updatGetResonseList();
  },
  updatGetResonseList: function updatGetResonseList() {
    var self = this,
        controlView = self.getEditorControlView('getresponse_list');

    if (!controlView.getControlValue()) {
      return;
    }

    self.addControlSpinner('getresponse_fields_map');
    var cacheKey = this.getCacheKey({
      type: 'fields',
      controls: [controlView.getControlValue()]
    });
    self.getCache('fields', 'get_fields', cacheKey, {
      getresponse_list: controlView.getControlValue()
    }).done(function (data) {
      self.getEditorControlView('getresponse_fields_map').updateMap(data.fields);
    });
  },
  getCache: function getCache(type, action, cacheKey, requestArgs) {
    if (_.has(this.cache[type], cacheKey)) {
      var data = {};
      data[type] = this.cache[type][cacheKey];
      return jQuery.Deferred().resolve(data);
    }

    requestArgs = _.extend({}, requestArgs, {
      service: 'getresponse',
      getresponse_action: action,
      api_key: this.getEditorControlView('getresponse_api_key_source').getControlValue(),
      custom_api_key: this.getEditorControlView('getresponse_custom_api_key').getControlValue()
    });
    return this.fetchCache(type, cacheKey, requestArgs);
  },
  onSectionActive: function onSectionActive() {
    BaseIntegrationModule.prototype.onSectionActive.apply(this, arguments);
    this.updatGetResonseList();
  }
});

/***/ }),

/***/ "../modules/forms/assets/js/editor/integrations/mailchimp.js":
/*!*******************************************************************!*\
  !*** ../modules/forms/assets/js/editor/integrations/mailchimp.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

var _values = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/values */ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js"));

var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/toConsumableArray */ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js"));

var BaseIntegrationModule = __webpack_require__(/*! ./base */ "../modules/forms/assets/js/editor/integrations/base.js");

module.exports = BaseIntegrationModule.extend({
  getName: function getName() {
    return 'mailchimp';
  },
  onElementChange: function onElementChange(setting) {
    switch (setting) {
      case 'mailchimp_api_key_source':
      case 'mailchimp_api_key':
        this.onApiUpdate();
        break;

      case 'mailchimp_list':
        this.onMailchimpListUpdate();
        break;
    }
  },
  onApiUpdate: function onApiUpdate() {
    var self = this,
        controlView = self.getEditorControlView('mailchimp_api_key'),
        GlobalApiKeycontrolView = self.getEditorControlView('mailchimp_api_key_source');

    if ('default' !== GlobalApiKeycontrolView.getControlValue() && '' === controlView.getControlValue()) {
      self.updateOptions('mailchimp_list', []);
      self.getEditorControlView('mailchimp_list').setValue('');
      return;
    } // Add a spinner to the `Audience` list control.


    self.resetControlIndicators('mailchimp_list');
    self.addControlSpinner('mailchimp_list');
    var cacheKey = this.getCacheKey({
      type: 'lists',
      controls: [controlView.getControlValue(), GlobalApiKeycontrolView.getControlValue()]
    }); // Fetch data

    self.getMailchimpCache('lists', 'lists', cacheKey).done(function (data) {
      self.updateOptions('mailchimp_list', data.lists);
      self.updatMailchimpList();
    }).fail(function (error) {
      self.addControlError('mailchimp_list', error);
    }).always(function () {
      self.removeControlSpinner('mailchimp_list');
    });
  },
  onMailchimpListUpdate: function onMailchimpListUpdate() {
    this.updateOptions('mailchimp_groups', []);
    this.getEditorControlView('mailchimp_groups').setValue('');
    this.updatMailchimpList();
  },
  updatMailchimpList: function updatMailchimpList() {
    var self = this,
        controlView = self.getEditorControlView('mailchimp_list');

    if (!controlView.getControlValue()) {
      return;
    } // Add a spinner to the groups select box.


    self.resetControlIndicators('mailchimp_groups');
    self.addControlSpinner('mailchimp_groups');
    this.getCacheKey({
      type: 'list_details',
      controls: [controlView.getControlValue()]
    }); // Fetch The data

    self.getMailchimpCache('list_details', 'list_details', controlView.getControlValue(), {
      mailchimp_list: controlView.getControlValue()
    }).done(function (data) {
      self.updateOptions('mailchimp_groups', data.list_details.groups);
      self.getEditorControlView('mailchimp_fields_map').updateMap(data.list_details.fields);
    }).fail(function (error) {
      self.addControlError('mailchimp_groups', error);
    }).always(function () {
      self.removeControlSpinner('mailchimp_groups');
    }); // Get list fields.
    // The requests needed to be executed immediately in order to fill the `Field Mapping` select-boxes
    // without waiting for other requests to finish.

    var args = {
      type: 'fields',
      action: 'fields',
      cacheKey: controlView.getControlValue(),
      args: {
        mailchimp_list: controlView.getControlValue()
      },
      immediately: true
    };
    self.getMailchimpCache.apply(self, (0, _toConsumableArray2.default)((0, _values.default)(args))).done(function (data) {
      self.getEditorControlView('mailchimp_fields_map').updateMap(data.fields);
    });
  },
  getMailchimpCache: function getMailchimpCache(type, action, cacheKey, requestArgs) {
    var immediately = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;

    if (_.has(this.cache[type], cacheKey)) {
      var data = {};
      data[type] = this.cache[type][cacheKey];
      return jQuery.Deferred().resolve(data);
    }

    requestArgs = _.extend({}, requestArgs, {
      service: 'mailchimp',
      mailchimp_action: action,
      api_key: this.getEditorControlView('mailchimp_api_key').getControlValue(),
      use_global_api_key: this.getEditorControlView('mailchimp_api_key_source').getControlValue()
    });
    return this.fetchCache(type, cacheKey, requestArgs, immediately);
  },
  onSectionActive: function onSectionActive() {
    BaseIntegrationModule.prototype.onSectionActive.apply(this, arguments);
    this.onApiUpdate();
  }
});

/***/ }),

/***/ "../modules/forms/assets/js/editor/integrations/mailerlite.js":
/*!********************************************************************!*\
  !*** ../modules/forms/assets/js/editor/integrations/mailerlite.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var BaseIntegrationModule = __webpack_require__(/*! ./base */ "../modules/forms/assets/js/editor/integrations/base.js");

module.exports = BaseIntegrationModule.extend({
  fields: {},
  getName: function getName() {
    return 'mailerlite';
  },
  onElementChange: function onElementChange(setting) {
    switch (setting) {
      case 'mailerlite_api_key_source':
      case 'mailerlite_custom_api_key':
        this.onMailerliteApiKeyUpdate();
        break;

      case 'mailerlite_group':
        this.updateFieldsMapping();
        break;
    }
  },
  onMailerliteApiKeyUpdate: function onMailerliteApiKeyUpdate() {
    var self = this,
        controlView = self.getEditorControlView('mailerlite_custom_api_key'),
        GlobalApiKeycontrolView = self.getEditorControlView('mailerlite_api_key_source');

    if ('default' !== GlobalApiKeycontrolView.getControlValue() && '' === controlView.getControlValue()) {
      self.updateOptions('mailerlite_group', []);
      self.getEditorControlView('mailerlite_group').setValue('');
      return;
    }

    self.addControlSpinner('mailerlite_group');
    var cacheKey = this.getCacheKey({
      type: 'groups',
      controls: [controlView.getControlValue(), GlobalApiKeycontrolView.getControlValue()]
    });
    self.getMailerliteCache('groups', 'groups', cacheKey).done(function (data) {
      self.updateOptions('mailerlite_group', data.groups);
      self.fields = data.fields;
    });
  },
  updateFieldsMapping: function updateFieldsMapping() {
    var controlView = this.getEditorControlView('mailerlite_group');

    if (!controlView.getControlValue()) {
      return;
    }

    var remoteFields = [{
      remote_label: elementor.translate('Email'),
      remote_type: 'email',
      remote_id: 'email',
      remote_required: true
    }, {
      remote_label: elementor.translate('Name'),
      remote_type: 'text',
      remote_id: 'name',
      remote_required: false
    }, {
      remote_label: elementor.translate('Last Name'),
      remote_type: 'text',
      remote_id: 'last_name',
      remote_required: false
    }, {
      remote_label: elementor.translate('Company'),
      remote_type: 'text',
      remote_id: 'company',
      remote_required: false
    }, {
      remote_label: elementor.translate('Phone'),
      remote_type: 'text',
      remote_id: 'phone',
      remote_required: false
    }, {
      remote_label: elementor.translate('Country'),
      remote_type: 'text',
      remote_id: 'country',
      remote_required: false
    }, {
      remote_label: elementor.translate('State'),
      remote_type: 'text',
      remote_id: 'state',
      remote_required: false
    }, {
      remote_label: elementor.translate('City'),
      remote_type: 'text',
      remote_id: 'city',
      remote_required: false
    }, {
      remote_label: elementor.translate('Zip'),
      remote_type: 'text',
      remote_id: 'zip',
      remote_required: false
    }];

    for (var field in this.fields) {
      if (this.fields.hasOwnProperty(field)) {
        remoteFields.push(this.fields[field]);
      }
    }

    this.getEditorControlView('mailerlite_fields_map').updateMap(remoteFields);
  },
  getMailerliteCache: function getMailerliteCache(type, action, cacheKey, requestArgs) {
    if (_.has(this.cache[type], cacheKey)) {
      var data = {};
      data[type] = this.cache[type][cacheKey];
      return jQuery.Deferred().resolve(data);
    }

    requestArgs = _.extend({}, requestArgs, {
      service: 'mailerlite',
      mailerlite_action: action,
      custom_api_key: this.getEditorControlView('mailerlite_custom_api_key').getControlValue(),
      api_key: this.getEditorControlView('mailerlite_api_key_source').getControlValue()
    });
    return this.fetchCache(type, cacheKey, requestArgs);
  },
  onSectionActive: function onSectionActive() {
    BaseIntegrationModule.prototype.onSectionActive.apply(this, arguments);
    this.onMailerliteApiKeyUpdate();
  }
});

/***/ }),

/***/ "../modules/forms/assets/js/editor/module.js":
/*!***************************************************!*\
  !*** ../modules/forms/assets/js/editor/module.js ***!
  \***************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _component = _interopRequireDefault(__webpack_require__(/*! ./component */ "../modules/forms/assets/js/editor/component.js"));

var FormsModule = /*#__PURE__*/function (_elementorModules$edi) {
  (0, _inherits2.default)(FormsModule, _elementorModules$edi);

  var _super = (0, _createSuper2.default)(FormsModule);

  function FormsModule() {
    (0, _classCallCheck2.default)(this, FormsModule);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(FormsModule, [{
    key: "onElementorInit",
    value: function onElementorInit() {
      var ReplyToField = __webpack_require__(/*! ./reply-to-field */ "../modules/forms/assets/js/editor/reply-to-field.js"),
          Recaptcha = __webpack_require__(/*! ./recaptcha */ "../modules/forms/assets/js/editor/recaptcha.js"),
          MailerLite = __webpack_require__(/*! ./integrations/mailerlite */ "../modules/forms/assets/js/editor/integrations/mailerlite.js"),
          Mailchimp = __webpack_require__(/*! ./integrations/mailchimp */ "../modules/forms/assets/js/editor/integrations/mailchimp.js"),
          Drip = __webpack_require__(/*! ./integrations/drip */ "../modules/forms/assets/js/editor/integrations/drip.js"),
          ActiveCampaign = __webpack_require__(/*! ./integrations/activecampaign */ "../modules/forms/assets/js/editor/integrations/activecampaign.js"),
          GetResponse = __webpack_require__(/*! ./integrations/getresponse */ "../modules/forms/assets/js/editor/integrations/getresponse.js"),
          ConvertKit = __webpack_require__(/*! ./integrations/convertkit */ "../modules/forms/assets/js/editor/integrations/convertkit.js");

      this.replyToField = new ReplyToField();
      this.mailchimp = new Mailchimp('form');
      this.recaptcha = new Recaptcha('form');
      this.drip = new Drip('form');
      this.activecampaign = new ActiveCampaign('form');
      this.getresponse = new GetResponse('form');
      this.convertkit = new ConvertKit('form');
      this.mailerlite = new MailerLite('form'); // Form fields

      var TimeField = __webpack_require__(/*! ./fields/time */ "../modules/forms/assets/js/editor/fields/time.js"),
          DateField = __webpack_require__(/*! ./fields/date */ "../modules/forms/assets/js/editor/fields/date.js"),
          AcceptanceField = __webpack_require__(/*! ./fields/acceptance */ "../modules/forms/assets/js/editor/fields/acceptance.js"),
          UploadField = __webpack_require__(/*! ./fields/upload */ "../modules/forms/assets/js/editor/fields/upload.js"),
          TelField = __webpack_require__(/*! ./fields/tel */ "../modules/forms/assets/js/editor/fields/tel.js");

      this.Fields = {
        time: new TimeField('form'),
        date: new DateField('form'),
        tel: new TelField('form'),
        acceptance: new AcceptanceField('form'),
        upload: new UploadField('form')
      };
      elementor.addControlView('Fields_map', __webpack_require__(/*! ./fields-map-control */ "../modules/forms/assets/js/editor/fields-map-control.js"));
      elementor.addControlView('form-fields-repeater', __webpack_require__(/*! ./fields-repeater-control */ "../modules/forms/assets/js/editor/fields-repeater-control.js"));
    }
  }, {
    key: "onElementorInitComponents",
    value: function onElementorInitComponents() {
      $e.components.register(new _component.default({
        manager: this
      }));
    }
  }]);
  return FormsModule;
}(elementorModules.editor.utils.Module);

exports.default = FormsModule;

/***/ }),

/***/ "../modules/forms/assets/js/editor/recaptcha.js":
/*!******************************************************!*\
  !*** ../modules/forms/assets/js/editor/recaptcha.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

module.exports = elementorModules.editor.utils.Module.extend({
  enqueueRecaptchaJs: function enqueueRecaptchaJs(url, type) {
    if (!elementorFrontend.elements.$body.find('[src="' + url + '"]').length) {
      elementorFrontend.elements.$body.append('<scr' + 'ipt src="' + url + '" id="recaptcha-' + type + '"</scri' + 'pt>');
    }
  },
  renderField: function renderField(inputField, item) {
    inputField += '<div class="elementor-field ' + item.field_type + ' ">';
    inputField += this.getDataSettings(item);
    inputField += '</div>';
    return inputField;
  },
  getDataSettings: function getDataSettings(item) {
    var config = elementorPro.config.forms[item.field_type],
        srcURL = 'https://www.google.com/recaptcha/api.js?render=explicit';

    if (!config.enabled) {
      return '<div class="elementor-alert elementor-alert-info">' + config.setup_message + '</div>';
    }

    var recaptchaData = 'data-sitekey="' + config.site_key + '" data-type="' + config.type + '"';

    switch (config.type) {
      case 'v3':
        recaptchaData += ' data-action="form" data-size="invisible" data-badge="' + item.recaptcha_badge + '"';
        break;

      case 'v2_checkbox':
        recaptchaData += ' data-theme="' + item.recaptcha_style + '"';
        recaptchaData += ' data-size="' + item.recaptcha_size + '"';
        break;
    }

    this.enqueueRecaptchaJs(srcURL, config.type);
    return '<div class="elementor-g-recaptcha' + _.escape(item.css_classes) + '" ' + recaptchaData + '></div>';
  },
  filterItem: function filterItem(item) {
    if ('recaptcha' === item.field_type) {
      item.field_label = false;
    }

    return item;
  },
  onInit: function onInit() {
    elementor.hooks.addFilter('elementor_pro/forms/content_template/item', this.filterItem);
    elementor.hooks.addFilter('elementor_pro/forms/content_template/field/recaptcha', this.renderField, 10, 2);
    elementor.hooks.addFilter('elementor_pro/forms/content_template/field/recaptcha_v3', this.renderField, 10, 2);
  }
});

/***/ }),

/***/ "../modules/forms/assets/js/editor/reply-to-field.js":
/*!***********************************************************!*\
  !*** ../modules/forms/assets/js/editor/reply-to-field.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

module.exports = function () {
  var editor, editedModel, replyToControl;

  var setReplyToControl = function setReplyToControl() {
    replyToControl = editor.collection.findWhere({
      name: 'email_reply_to'
    });
  };

  var getReplyToView = function getReplyToView() {
    return editor.children.findByModelCid(replyToControl.cid);
  };

  var refreshReplyToElement = function refreshReplyToElement() {
    var replyToView = getReplyToView();

    if (replyToView) {
      replyToView.render();
    }
  };

  var updateReplyToOptions = function updateReplyToOptions() {
    var settingsModel = editedModel.get('settings'),
        emailModels = settingsModel.get('form_fields').where({
      field_type: 'email'
    }),
        emailFields;
    emailModels = _.reject(emailModels, {
      field_label: ''
    });
    emailFields = _.map(emailModels, function (model) {
      return {
        id: model.get('custom_id'),
        label: elementorPro.translate('x_field', [model.get('field_label')])
      };
    });
    replyToControl.set('options', {
      '': replyToControl.get('options')['']
    });

    _.each(emailFields, function (emailField) {
      replyToControl.get('options')[emailField.id] = emailField.label;
    });

    refreshReplyToElement();
  };

  var updateDefaultReplyTo = function updateDefaultReplyTo(settingsModel) {
    replyToControl.get('options')[''] = settingsModel.get('email_from');
    refreshReplyToElement();
  };

  var onFormFieldsChange = function onFormFieldsChange(changedModel) {
    // If it's repeater field
    if (changedModel.get('custom_id')) {
      if ('email' === changedModel.get('field_type')) {
        updateReplyToOptions();
      }
    }

    if (changedModel.changed.email_from) {
      updateDefaultReplyTo(changedModel);
    }
  };

  var onPanelShow = function onPanelShow(panel, model) {
    editor = panel.getCurrentPageView();
    editedModel = model;
    setReplyToControl();
    var settingsModel = editedModel.get('settings');
    settingsModel.on('change', onFormFieldsChange);
    updateDefaultReplyTo(settingsModel);
    updateReplyToOptions();
  };

  var init = function init() {
    elementor.hooks.addAction('panel/open_editor/widget/form', onPanelShow);
  };

  init();
};

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/commands-data/index.js":
/*!************************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/commands-data/index.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "Templates", {
  enumerable: true,
  get: function get() {
    return _templates.Templates;
  }
});

var _templates = __webpack_require__(/*! ./templates */ "../modules/global-widget/assets/js/editor/commands-data/templates.js");

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/commands-data/templates.js":
/*!****************************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/commands-data/templates.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Templates = void 0;

var _entries = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/entries */ "../node_modules/@babel/runtime-corejs2/core-js/object/entries.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

/**
 * Data command: 'document/global/templates', accessing 'global-widget/templates' remote endpoint.
 * Used to get global templates from the backend/cache.
 */
var Templates = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(Templates, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(Templates);

  function Templates() {
    (0, _classCallCheck2.default)(this, Templates);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Templates, [{
    key: "onAfterApply",
    value: function onAfterApply() {
      var _this = this;

      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      var result = arguments.length > 1 ? arguments[1] : undefined;
      // TODO: Remove - Manually handling of cache - This behavior should be automatically handled by passed `options` to $e.data.
      $e.data.deleteCache(this.component, 'document/global/global-widget/templates', args.query);
      (0, _entries.default)(result.data).forEach(function (_ref) {
        var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
            templateID = _ref2[0],
            data = _ref2[1];

        $e.data.setCache(_this.component, "document/global/global-widget/templates/".concat(templateID), {}, data);
      });
    }
  }], [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return 'global-widget/templates';
    }
  }]);
  return Templates;
}($e.modules.CommandData);

exports.Templates = Templates;
var _default = Templates;
exports.default = _default;

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/commands-internal/index.js":
/*!****************************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/commands-internal/index.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "SaveTemplates", {
  enumerable: true,
  get: function get() {
    return _saveTemplates.SaveTemplates;
  }
});

var _saveTemplates = __webpack_require__(/*! ./save-templates */ "../modules/global-widget/assets/js/editor/commands-internal/save-templates.js");

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/commands-internal/save-templates.js":
/*!*************************************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/commands-internal/save-templates.js ***!
  \*************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.SaveTemplates = void 0;

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/promise */ "../node_modules/@babel/runtime-corejs2/core-js/promise.js"));

var _stringify = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/json/stringify */ "../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js"));

var _entries = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/entries */ "../node_modules/@babel/runtime-corejs2/core-js/object/entries.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

/**
 * The command should run over all changed global widgets and
 * update the settings of the `document/global/global-widget/templates`,
 * And save cache templates according to the widget(s) which are under the save process.
 */
var SaveTemplates = /*#__PURE__*/function (_$e$modules$CommandIn) {
  (0, _inherits2.default)(SaveTemplates, _$e$modules$CommandIn);

  var _super = (0, _createSuper2.default)(SaveTemplates);

  function SaveTemplates() {
    (0, _classCallCheck2.default)(this, SaveTemplates);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(SaveTemplates, [{
    key: "apply",
    value: function apply() {
      var _this = this;

      var templateModels = this.getCurrentTemplatesModels(this.component.changedContainersId);

      if (!templateModels.length) {
        return;
      }

      return new _promise.default(function (resolve, reject) {
        elementorCommon.ajax.addRequest('update_templates', {
          data: {
            templates: templateModels.map(function (templateModel) {
              // Map it to backend format.
              return {
                id: templateModel.get('id'),
                content: (0, _stringify.default)([templateModel.toJSON()]),
                source: 'local',
                type: 'widget'
              };
            })
          },
          error: reject,
          success: function success() {
            /**
             * Since is used `document/global/global-widget/templates` to hold all globals template data.
             * And currently there are no request to update template data on each update of global widget,
             * editing the template will be not synced with The real latest data.
             * In other words, if dont update templates on each save,
             * Then the new created template will be different with the actual (saved) one, so updating the globals template
             * according to saved global widget is the solution.
             */
            // Clear changed containers.
            _this.component.changedContainersId = {};
            templateModels.forEach(function (template) {
              var settings = template.get('settings');
              $e.data.setCache(_this.component, "document/global/global-widget/templates/".concat(template.id), {}, {
                settings: settings
              });
            });
            resolve(templateModels);
          }
        });
      });
    }
  }, {
    key: "getCurrentTemplatesModels",
    value: function getCurrentTemplatesModels(changedContainersId) {
      var _this2 = this;

      var templatesData = [];
      (0, _entries.default)(changedContainersId).forEach(function (_ref) {
        var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
            templateID = _ref2[0],
            containerId = _ref2[1];

        var templateData = $e.data.getCache(_this2.component, "document/global/global-widget/templates/".concat(templateID));

        if (!templateData) {
          if ($e.devTools) {
            $e.devTools.log.warn("$e.data.getCache( component, `document/global/global-widget/templates/".concat(templateID, "` ) - not found."));
          }
        }

        var container = elementor.getContainer(containerId);

        if (!container) {
          return;
        }

        templatesData.push(new Backbone.Model({
          id: templateID,
          elType: 'widget',
          widgetType: container.model.get('widgetType'),
          settings: container.settings.toJSON({
            remove: 'default'
          }),
          templateID: templateID
        }));
      });
      return templatesData;
    }
  }]);
  return SaveTemplates;
}($e.modules.CommandInternalBase);

exports.SaveTemplates = SaveTemplates;
var _default = SaveTemplates;
exports.default = _default;

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/commands/index.js":
/*!*******************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/commands/index.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "Link", {
  enumerable: true,
  get: function get() {
    return _link.Link;
  }
});

_Object$defineProperty(exports, "Unlink", {
  enumerable: true,
  get: function get() {
    return _unlink.Unlink;
  }
});

var _link = __webpack_require__(/*! ./link */ "../modules/global-widget/assets/js/editor/commands/link.js");

var _unlink = __webpack_require__(/*! ./unlink */ "../modules/global-widget/assets/js/editor/commands/unlink.js");

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/commands/link.js":
/*!******************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/commands/link.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Link = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var Link = /*#__PURE__*/function (_$e$modules$document$) {
  (0, _inherits2.default)(Link, _$e$modules$document$);

  var _super = (0, _createSuper2.default)(Link);

  function Link() {
    (0, _classCallCheck2.default)(this, Link);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Link, [{
    key: "validateArgs",
    value: function validateArgs(args) {
      this.requireContainer(args);
      this.requireArgumentConstructor('data', Object, args);
      var _args$containers = args.containers,
          containers = _args$containers === void 0 ? [args.container] : _args$containers;
      containers.forEach(function (
      /* Container */
      container) {
        if ('global' === container.model.get('widgetType')) {
          throw Error("Invalid container, id: '".concat(container.id, "' is already global."));
        }
      });
    }
  }, {
    key: "getHistory",
    value: function getHistory(args) {
      var data = args.data;
      return {
        title: elementor.widgetsCache[data.widgetType].title,
        subTitle: data.title,
        type: elementorPro.translate('linked_to_global')
      };
    }
  }, {
    key: "apply",
    value: function apply(args) {
      var _this = this;

      var data = args.data,
          _args$containers2 = args.containers,
          containers = _args$containers2 === void 0 ? [args.container] : _args$containers2;
      containers.forEach(function (
      /** Container */
      container) {
        var widgetModel = container.model,
            widgetModelIndex = widgetModel.collection.indexOf(widgetModel);
        data.elType = data.type;
        data.settings = widgetModel.get('settings').attributes;
        data.widgetType = widgetModel.get('widgetType');
        var elementModel = elementorPro.modules.globalWidget.addGlobalWidget(data.template_id, data),
            elementModelAttributes = elementModel.attributes;
        $e.data.setCache(_this.component, "document/global/global-widget/templates/".concat(data.template_id), {}, data);
        $e.run('document/elements/create', {
          container: container.parent,
          model: {
            id: elementor.helpers.getUniqueID(),
            elType: elementModelAttributes.elType,
            widgetType: elementModelAttributes.widgetType,
            templateID: data.template_id
          },
          options: {
            at: widgetModelIndex
          }
        });
        $e.run('document/elements/delete', {
          container: container
        });
      });
      $e.route('panel/elements/global');
    }
  }]);
  return Link;
}($e.modules.document.CommandHistory);

exports.Link = Link;
var _default = Link;
exports.default = _default;

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/commands/unlink.js":
/*!********************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/commands/unlink.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Unlink = void 0;

var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js"));

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/asyncToGenerator */ "../node_modules/@babel/runtime-corejs2/helpers/asyncToGenerator.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var Unlink = /*#__PURE__*/function (_$e$modules$document$) {
  (0, _inherits2.default)(Unlink, _$e$modules$document$);

  var _super = (0, _createSuper2.default)(Unlink);

  function Unlink() {
    (0, _classCallCheck2.default)(this, Unlink);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Unlink, [{
    key: "validateArgs",
    value: function validateArgs(args) {
      this.requireContainer(args);
    }
  }, {
    key: "getHistory",
    value: function getHistory(args) {
      var _args$containers = args.containers,
          containers = _args$containers === void 0 ? [args.container] : _args$containers;
      return {
        title: elementor.helpers.getModelLabel(containers[0].model),
        // TODO: add support multi containers.
        type: elementorPro.translate('unlink_widget')
      };
    }
  }, {
    key: "apply",
    value: function () {
      var _apply = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(args) {
        var _args$containers2, containers, ids, _yield$$e$data$get, data;

        return _regenerator.default.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                _args$containers2 = args.containers, containers = _args$containers2 === void 0 ? [args.container] : _args$containers2;
                ids = containers.map(function (
                /** Container */
                container) {
                  return container.model.get('templateID');
                });
                _context.next = 4;
                return $e.data.get('document/global/templates', {
                  ids: ids
                });

              case 4:
                _yield$$e$data$get = _context.sent;
                data = _yield$$e$data$get.data;
                containers.forEach(function (
                /** Container */
                container) {
                  var id = container.model.get('templateID'),
                      elementModel = elementorPro.modules.globalWidget.createGlobalModel(id, data[id]);
                  $e.run('document/elements/create', {
                    container: container.parent,
                    model: {
                      id: elementor.helpers.getUniqueID(),
                      elType: 'widget',
                      widgetType: elementModel.get('widgetType'),
                      settings: elementorCommon.helpers.cloneObject(elementModel.get('settings').attributes),
                      defaultEditSettings: elementorCommon.helpers.cloneObject(elementModel.get('editSettings').attributes)
                    },
                    options: {
                      at: container.model.collection.indexOf(container.model),
                      edit: true
                    }
                  });
                  $e.run('document/elements/delete', {
                    container: container
                  });
                });

              case 7:
              case "end":
                return _context.stop();
            }
          }
        }, _callee);
      }));

      function apply(_x) {
        return _apply.apply(this, arguments);
      }

      return apply;
    }()
  }]);
  return Unlink;
}($e.modules.document.CommandHistory);

exports.Unlink = Unlink;
var _default = Unlink;
exports.default = _default;

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/component.js":
/*!**************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/component.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _parseInt2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/parse-int */ "../node_modules/@babel/runtime-corejs2/core-js/parse-int.js"));

var _entries = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/entries */ "../node_modules/@babel/runtime-corejs2/core-js/object/entries.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/assertThisInitialized */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js"));

var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/get */ "../node_modules/@babel/runtime-corejs2/helpers/get.js"));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/getPrototypeOf */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var commands = _interopRequireWildcard(__webpack_require__(/*! ./commands/ */ "../modules/global-widget/assets/js/editor/commands/index.js"));

var commandsInternal = _interopRequireWildcard(__webpack_require__(/*! ./commands-internal/ */ "../modules/global-widget/assets/js/editor/commands-internal/index.js"));

var commandsData = _interopRequireWildcard(__webpack_require__(/*! ./commands-data/ */ "../modules/global-widget/assets/js/editor/commands-data/index.js"));

var hooks = _interopRequireWildcard(__webpack_require__(/*! ./hooks/ */ "../modules/global-widget/assets/js/editor/hooks/index.js"));

var Component = /*#__PURE__*/function (_$e$modules$Component) {
  (0, _inherits2.default)(Component, _$e$modules$Component);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    var _this;

    (0, _classCallCheck2.default)(this, Component);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "notLoadedTemplatesIds", []);
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "lastChangedContainers", null);
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "changedContainersId", {});
    return _this;
  }

  (0, _createClass2.default)(Component, [{
    key: "registerAPI",
    value: function registerAPI() {
      var _this2 = this;

      (0, _get2.default)((0, _getPrototypeOf2.default)(Component.prototype), "registerAPI", this).call(this); // TODO: Remove when route hooks are available.

      $e.routes.on('run:after', function (component, route) {
        if ('panel/elements/global' === route) {
          _this2.onRoutePanelElementsGlobal();
        }
      });
    }
  }, {
    key: "getNamespace",
    value: function getNamespace() {
      return 'document/global';
    }
  }, {
    key: "defaultCommands",
    value: function defaultCommands() {
      return this.importCommands(commands);
    }
  }, {
    key: "defaultCommandsInternal",
    value: function defaultCommandsInternal() {
      return this.importCommands(commandsInternal);
    }
  }, {
    key: "defaultData",
    value: function defaultData() {
      return this.importCommands(commandsData);
    }
  }, {
    key: "defaultHooks",
    value: function defaultHooks() {
      return this.importHooks(hooks);
    }
  }, {
    key: "onRoutePanelElementsGlobal",
    value: function onRoutePanelElementsGlobal() {
      var _this3 = this;

      if (this.notLoadedTemplatesIds.length) {
        $e.data.get('document/global/templates', {
          ids: this.notLoadedTemplatesIds
        }).then(function () {
          // Clear.
          _this3.notLoadedTemplatesIds = [];
        });
      }
    }
    /**
     * Update each 'Backbone.Model' will handle issue when the global widget saved only in draft.
     * Scenario for better understanding the issue:
     * - Have global widget save with custom color, refresh the editor.
     * - Change it to global global color and save as draft (no update template).
     * - Create another global-widget from same template.
     * - Update one of first global widget that saved in draft to use custom color.
     * - By dependency of only 'container.settings' the new template will have the new custom color,
     *      but new custom color will unseen (since it has global).
     *
     * @param {Object} targetContainer Container class
     */

  }, {
    key: "updateGlobalsRecursive",
    value: function updateGlobalsRecursive(targetContainer) {
      var modelsToUpdate = ['dynamic', 'globals', 'settings'];
      elementor.getPreviewContainer().forEachChildrenRecursive(function (container) {
        // Will skip self.
        if (targetContainer !== container && (0, _parseInt2.default)(container.model.get('templateID')) === (0, _parseInt2.default)(targetContainer.model.get('templateID'))) {
          modelsToUpdate.forEach(function (modelName) {
            var model = targetContainer[modelName];

            if (model instanceof Backbone.Model) {
              var accordingTo = 'settings' === modelName ? targetContainer.settings.attributes : model.changed;
              (0, _entries.default)(accordingTo).forEach(function (_ref) {
                var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
                    key = _ref2[0],
                    setting = _ref2[1];

                container[modelName].set(key, setting);
              });
            }
          });
          container.render();
        }
      });
    }
  }]);
  return Component;
}($e.modules.ComponentBase);

exports.default = Component;

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/hooks/data/document/elements/set-settings/global-widget-prepare-update.js":
/*!***************************************************************************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/hooks/data/document/elements/set-settings/global-widget-prepare-update.js ***!
  \***************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.GlobalWidgetPrepareUpdate = void 0;

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

/**
 * Hook is responsible for saving last changed global widget and update
 * which containers are needed for updating the template.
 */
var GlobalWidgetPrepareUpdate = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(GlobalWidgetPrepareUpdate, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(GlobalWidgetPrepareUpdate);

  function GlobalWidgetPrepareUpdate() {
    (0, _classCallCheck2.default)(this, GlobalWidgetPrepareUpdate);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(GlobalWidgetPrepareUpdate, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/elements/set-settings';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-global-widget-prepare-update';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      var _args$containers = args.containers,
          containers = _args$containers === void 0 ? [args.container] : _args$containers;
      return containers.some(function (container) {
        return container.renderer.model.get('templateID');
      });
    }
  }, {
    key: "apply",
    value: function apply(args) {
      var _args$containers2 = args.containers,
          containers = _args$containers2 === void 0 ? [args.container] : _args$containers2,
          component = $e.components.get('document/global');
      component.lastChangedContainers = containers.map(function (container) {
        return container.renderer;
      });
      containers.forEach(function (container) {
        component.changedContainersId[container.renderer.model.get('templateID')] = container.renderer.id;
      });
    }
  }]);
  return GlobalWidgetPrepareUpdate;
}($e.modules.hookData.After);

exports.GlobalWidgetPrepareUpdate = GlobalWidgetPrepareUpdate;
var _default = GlobalWidgetPrepareUpdate;
exports.default = _default;

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/hooks/data/document/history/end-log/global-widget-do-update.js":
/*!****************************************************************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/hooks/data/document/history/end-log/global-widget-do-update.js ***!
  \****************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.GlobalWidgetDoUpdate = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

/**
 * On after all `document/elements/set-settings` has stop, the history mechanism will call to
 * `document/history/end-log` the hook will update all other global widgets according to this last change.
 */
var GlobalWidgetDoUpdate = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(GlobalWidgetDoUpdate, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(GlobalWidgetDoUpdate);

  function GlobalWidgetDoUpdate() {
    (0, _classCallCheck2.default)(this, GlobalWidgetDoUpdate);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(GlobalWidgetDoUpdate, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/history/end-log';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-global-widget-do-update';
    }
  }, {
    key: "getConditions",
    value: function getConditions() {
      return $e.components.get('document/global').lastChangedContainers;
    }
  }, {
    key: "apply",
    value: function apply() {
      var component = $e.components.get('document/global'),
          containers = component.lastChangedContainers;
      containers.forEach(function (container) {
        return component.updateGlobalsRecursive(container);
      });
      component.lastChangedContainers = null;
    }
  }]);
  return GlobalWidgetDoUpdate;
}($e.modules.hookData.After);

exports.GlobalWidgetDoUpdate = GlobalWidgetDoUpdate;
var _default = GlobalWidgetDoUpdate;
exports.default = _default;

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/hooks/data/document/save/save/global-widget-save-templates.js":
/*!***************************************************************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/hooks/data/document/save/save/global-widget-save-templates.js ***!
  \***************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.GlobalWidgetSaveTemplates = void 0;

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

/**
 * The hook is responsible for updating the global templates, on editor save,
 * hook will run 'document/global/save-templates' to handle the save.
 */
var GlobalWidgetSaveTemplates = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(GlobalWidgetSaveTemplates, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(GlobalWidgetSaveTemplates);

  function GlobalWidgetSaveTemplates() {
    (0, _classCallCheck2.default)(this, GlobalWidgetSaveTemplates);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(GlobalWidgetSaveTemplates, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/save/save';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-global-widget-save-templates';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      if (!(0, _keys.default)($e.components.get('document/global').changedContainersId).length) {
        return false;
      }

      var _args$document = args.document,
          document = _args$document === void 0 ? elementor.documents.getCurrent() : _args$document;
      return document.config.panel.has_elements && args.status && -1 !== ['private', 'publish'].indexOf(args.status);
    }
  }, {
    key: "apply",
    value: function apply() {
      $e.internal('document/global/save-templates');
    }
  }]);
  return GlobalWidgetSaveTemplates;
}($e.modules.hookData.After);

exports.GlobalWidgetSaveTemplates = GlobalWidgetSaveTemplates;
var _default = GlobalWidgetSaveTemplates;
exports.default = _default;

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/hooks/data/editor/documents/attach-preview/global-widget-load-templates.js":
/*!****************************************************************************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/hooks/data/editor/documents/attach-preview/global-widget-load-templates.js ***!
  \****************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.GlobalWidgetLoadTemplates = void 0;

var _entries = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/entries */ "../node_modules/@babel/runtime-corejs2/core-js/object/entries.js"));

var _parseInt2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/parse-int */ "../node_modules/@babel/runtime-corejs2/core-js/parse-int.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

/**
 * Hook responsible to load current active templates ( global widget that are in used ) to `$e.data.cache`,
 * also it tells the component which templates are not active and required to be loaded from the backend.
 */
var GlobalWidgetLoadTemplates = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(GlobalWidgetLoadTemplates, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(GlobalWidgetLoadTemplates);

  function GlobalWidgetLoadTemplates() {
    (0, _classCallCheck2.default)(this, GlobalWidgetLoadTemplates);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(GlobalWidgetLoadTemplates, [{
    key: "initialize",
    value:
    /**
     * Since the hook called on each document load, but requires to run only the initial attach preview.
     *
     * @type {boolean}
     */
    function initialize() {
      var _this = this;

      // Since 'initialize' called before the component is registered.
      // TODO: apply this logic at HookBase for '.initialize.
      setTimeout(function () {
        _this.component = $e.components.get('document/global');
      });
    }
  }, {
    key: "getCommand",
    value: function getCommand() {
      return 'editor/documents/attach-preview';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-global-widget-load-templates';
    }
  }, {
    key: "getConditions",
    value: function getConditions() {
      return !GlobalWidgetLoadTemplates.calledOnce;
    }
  }, {
    key: "apply",
    value: function apply() {
      var _this2 = this;

      GlobalWidgetLoadTemplates.calledOnce = true;
      (0, _entries.default)(elementorPro.config.widget_templates).forEach(function (_ref) {
        var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
            id = _ref2[0],
            data = _ref2[1];

        elementorPro.modules.globalWidget.addGlobalWidget(id, data);

        _this2.addTemplateToCache(id);
      });
    }
  }, {
    key: "addTemplateToCache",
    value: function addTemplateToCache(id) {
      var container = elementor.getPreviewContainer().findChildrenRecursive(function (i) {
        return (0, _parseInt2.default)(i.model.get('templateID')) === (0, _parseInt2.default)(id);
      });

      if (!container) {
        return this.component.notLoadedTemplatesIds.push(id);
      }

      var args = {
        id: container.model.get('templateID'),
        elType: 'widget',
        widgetType: container.model.get('widgetType'),
        settings: container.settings.toJSON({
          remove: 'default'
        }),
        templateID: container.model.get('templateID')
      };
      $e.data.setCache(this.component, "document/global/global-widget/templates/".concat(id), {}, args);
    }
  }]);
  return GlobalWidgetLoadTemplates;
}($e.modules.hookData.After);

exports.GlobalWidgetLoadTemplates = GlobalWidgetLoadTemplates;
(0, _defineProperty2.default)(GlobalWidgetLoadTemplates, "calledOnce", false);
var _default = GlobalWidgetLoadTemplates;
exports.default = _default;

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/hooks/data/index.js":
/*!*********************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/hooks/data/index.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "GlobalWidgetPrepareUpdate", {
  enumerable: true,
  get: function get() {
    return _globalWidgetPrepareUpdate.GlobalWidgetPrepareUpdate;
  }
});

_Object$defineProperty(exports, "GlobalWidgetDoUpdate", {
  enumerable: true,
  get: function get() {
    return _globalWidgetDoUpdate.GlobalWidgetDoUpdate;
  }
});

_Object$defineProperty(exports, "GlobalWidgetSaveTemplates", {
  enumerable: true,
  get: function get() {
    return _globalWidgetSaveTemplates.GlobalWidgetSaveTemplates;
  }
});

_Object$defineProperty(exports, "GlobalWidgetLoadTemplates", {
  enumerable: true,
  get: function get() {
    return _globalWidgetLoadTemplates.GlobalWidgetLoadTemplates;
  }
});

var _globalWidgetPrepareUpdate = __webpack_require__(/*! ./document/elements/set-settings/global-widget-prepare-update */ "../modules/global-widget/assets/js/editor/hooks/data/document/elements/set-settings/global-widget-prepare-update.js");

var _globalWidgetDoUpdate = __webpack_require__(/*! ./document/history/end-log/global-widget-do-update */ "../modules/global-widget/assets/js/editor/hooks/data/document/history/end-log/global-widget-do-update.js");

var _globalWidgetSaveTemplates = __webpack_require__(/*! ./document/save/save/global-widget-save-templates */ "../modules/global-widget/assets/js/editor/hooks/data/document/save/save/global-widget-save-templates.js");

var _globalWidgetLoadTemplates = __webpack_require__(/*! ./editor/documents/attach-preview/global-widget-load-templates */ "../modules/global-widget/assets/js/editor/hooks/data/editor/documents/attach-preview/global-widget-load-templates.js");

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/hooks/index.js":
/*!****************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/hooks/index.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _Object$keys = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

var _data = __webpack_require__(/*! ./data/ */ "../modules/global-widget/assets/js/editor/hooks/data/index.js");

_Object$keys(_data).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _data[key]) return;

  _Object$defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _data[key];
    }
  });
});

var _ui = __webpack_require__(/*! ./ui/ */ "../modules/global-widget/assets/js/editor/hooks/ui/index.js");

_Object$keys(_ui).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _ui[key]) return;

  _Object$defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _ui[key];
    }
  });
});

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/hooks/ui/document/elements/set-settings/global-widget-history-update.js":
/*!*************************************************************************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/hooks/ui/document/elements/set-settings/global-widget-history-update.js ***!
  \*************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.GlobalWidgetHistoryUpdate = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

/**
 * Since editing of global widget applies changes to the all widgets with the same template id,
 * the same needs to be done on undo/redo.
 */
var GlobalWidgetHistoryUpdate = /*#__PURE__*/function (_$e$modules$hookUI$Af) {
  (0, _inherits2.default)(GlobalWidgetHistoryUpdate, _$e$modules$hookUI$Af);

  var _super = (0, _createSuper2.default)(GlobalWidgetHistoryUpdate);

  function GlobalWidgetHistoryUpdate() {
    (0, _classCallCheck2.default)(this, GlobalWidgetHistoryUpdate);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(GlobalWidgetHistoryUpdate, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/elements/set-settings';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-global-widget-history-update';
    }
  }, {
    key: "getContainerType",
    value: function getContainerType() {
      return 'widget';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      var _args$containers = args.containers,
          containers = _args$containers === void 0 ? [args.container] : _args$containers;
      return !elementor.documents.getCurrent().history.getActive() && containers.some(function (container) {
        return container.model.get('templateID');
      });
    }
  }, {
    key: "apply",
    value: function apply(args) {
      var _args$containers2 = args.containers,
          containers = _args$containers2 === void 0 ? [args.container] : _args$containers2;
      containers.forEach(function (container) {
        return $e.components.get('document/global').updateGlobalsRecursive(container);
      });
    }
  }]);
  return GlobalWidgetHistoryUpdate;
}($e.modules.hookUI.After);

exports.GlobalWidgetHistoryUpdate = GlobalWidgetHistoryUpdate;
var _default = GlobalWidgetHistoryUpdate;
exports.default = _default;

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/hooks/ui/index.js":
/*!*******************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/hooks/ui/index.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "GlobalWidgetHistoryUpdate", {
  enumerable: true,
  get: function get() {
    return _globalWidgetHistoryUpdate.GlobalWidgetHistoryUpdate;
  }
});

var _globalWidgetHistoryUpdate = __webpack_require__(/*! ./document/elements/set-settings/global-widget-history-update */ "../modules/global-widget/assets/js/editor/hooks/ui/document/elements/set-settings/global-widget-history-update.js");

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/module.js":
/*!***********************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/module.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _assign = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/assign */ "../node_modules/@babel/runtime-corejs2/core-js/object/assign.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/assertThisInitialized */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var _component = _interopRequireDefault(__webpack_require__(/*! ./component */ "../modules/global-widget/assets/js/editor/component.js"));

var Module = /*#__PURE__*/function (_elementorModules$edi) {
  (0, _inherits2.default)(Module, _elementorModules$edi);

  var _super = (0, _createSuper2.default)(Module);

  function Module() {
    var _this;

    (0, _classCallCheck2.default)(this, Module);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "panelWidgets", new Backbone.Collection());
    return _this;
  }

  (0, _createClass2.default)(Module, [{
    key: "addGlobalWidget",
    value: function addGlobalWidget(templateId, templateData) {
      return this.panelWidgets.add(this.createGlobalModel(templateId, templateData));
    }
  }, {
    key: "createGlobalModel",
    value: function createGlobalModel(templateId, templateData) {
      templateData = (0, _assign.default)({}, templateData, {
        id: templateId,
        categories: [],
        icon: elementor.widgetsCache[templateData.widgetType].icon,
        widgetType: templateData.widgetType,
        custom: {
          templateID: templateId
        }
      });
      var elementModel = new elementor.modules.elements.models.Element(templateData);
      elementModel.set('id', templateId);
      return elementModel;
    }
  }, {
    key: "setWidgetType",
    value: function setWidgetType() {
      elementor.hooks.addFilter('element/view', function (DefaultView, model) {
        if (model.get('templateID')) {
          return __webpack_require__(/*! ./widget/view */ "../modules/global-widget/assets/js/editor/widget/view.js").default;
        }

        return DefaultView;
      });
      elementor.hooks.addFilter('element/model', function (DefaultModel, attrs) {
        if (attrs.templateID) {
          return __webpack_require__(/*! ./widget/model */ "../modules/global-widget/assets/js/editor/widget/model.js").default;
        }

        return DefaultModel;
      });
    }
  }, {
    key: "registerTemplateType",
    value: function registerTemplateType() {
      elementor.templates.registerTemplateType('widget', {
        showInLibrary: false,
        saveDialog: {
          title: elementorPro.translate('global_widget_save_title'),
          description: elementorPro.translate('global_widget_save_description')
        },
        prepareSavedData: function prepareSavedData(data) {
          data.widgetType = data.content[0].widgetType;
          return data;
        },
        ajaxParams: {
          success: this.onWidgetTemplateSaved.bind(this)
        }
      });
    }
  }, {
    key: "addPanelPage",
    value: function addPanelPage() {
      elementor.getPanelView().addPage('globalWidget', {
        view: __webpack_require__(/*! ./views/panel-page */ "../modules/global-widget/assets/js/editor/views/panel-page.js")
      });
    }
  }, {
    key: "getGlobalModels",
    value: function getGlobalModels(id) {
      elementorCommon.helpers.softDeprecated('elementorPro.modules.globalWidget.getGlobalModels( id )', '3.5.0', '$e.data.getCache( `document/global/global-widget/templates/${ id }` )');
      return $e.data.getCache(this.component, "document/global/global-widget/templates/".concat(id));
    }
  }, {
    key: "saveTemplates",
    value: function saveTemplates() {
      elementorCommon.helpers.softDeprecated('elementorPro.modules.globalWidget.saveTemplates()', '3.5.0', "$e.internal( 'document/global/save-templates' )");
      $e.internal('document/global/save-templates');
    }
  }, {
    key: "requestGlobalModelSettings",
    value: function requestGlobalModelSettings(globalModel, callback) {
      elementorCommon.helpers.softDeprecated('elementorPro.modules.globalWidget.requestGlobalModelSettings()', '3.5.0', "$e.data.get( 'document/global/templates' )");
      $e.data.get('document/global/templates', {
        ids: globalModel.id
      }).then(function (data) {
        callback(data);
      });
    }
  }, {
    key: "setWidgetContextMenuSaveAction",
    value: function setWidgetContextMenuSaveAction() {
      elementor.hooks.addFilter('elements/widget/contextMenuGroups', function (groups, widget) {
        var saveGroup = _.findWhere(groups, {
          name: 'save'
        });

        if (!saveGroup) {
          return groups;
        }

        var saveAction = _.findWhere(saveGroup.actions, {
          name: 'save'
        });

        saveAction.callback = widget.save.bind(widget);
        delete saveAction.shortcut;
        return groups;
      });
    }
  }, {
    key: "onElementorInit",
    value: function onElementorInit() {
      var _this2 = this;

      elementor.on('panel:init', function () {
        elementor.hooks.addFilter('panel/elements/regionViews', function (regionViews) {
          _.extend(regionViews.global, {
            view: __webpack_require__(/*! ./views/global-templates-view */ "../modules/global-widget/assets/js/editor/views/global-templates-view.js"),
            options: {
              collection: _this2.panelWidgets
            }
          });

          return regionViews;
        });
      });
      this.registerTemplateType();
      this.setWidgetContextMenuSaveAction();
      this.setWidgetType();
    }
  }, {
    key: "onElementorInitComponents",
    value: function onElementorInitComponents() {
      $e.components.register(new _component.default());
      $e.data.get('document/global/templates', {}, {
        refresh: true
      });
    }
  }, {
    key: "onElementorPreviewLoaded",
    value: function onElementorPreviewLoaded(isFirst) {
      if (!isFirst) {
        return;
      }

      this.addPanelPage();
      $e.routes.register('panel/editor', 'global', function (args) {
        elementor.getPanelView().setPage('globalWidget', 'Global Editing', {
          editedView: args.view
        });
      });
    }
  }, {
    key: "onWidgetTemplateSaved",
    value: function onWidgetTemplateSaved(data) {
      elementor.templates.layout.hideModal();
      var container = elementor.getContainer(elementor.templates.layout.modalContent.currentView.model.id);
      $e.run('document/global/link', {
        container: container,
        data: data
      });
    }
  }]);
  return Module;
}(elementorModules.editor.utils.Module);

exports.default = Module;

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/views/global-templates-view.js":
/*!********************************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/views/global-templates-view.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


module.exports = elementor.modules.layouts.panel.pages.elements.views.Elements.extend({
  id: 'elementor-global-templates',
  getEmptyView: function getEmptyView() {
    if (this.collection.length) {
      return null;
    }

    return __webpack_require__(/*! ./no-templates */ "../modules/global-widget/assets/js/editor/views/no-templates.js");
  },
  onFilterEmpty: function onFilterEmpty() {}
});

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/views/no-templates.js":
/*!***********************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/views/no-templates.js ***!
  \***********************************************************************/
/***/ ((module) => {

"use strict";


var GlobalWidgetsView = elementor.modules.layouts.panel.pages.elements.views.Global;
module.exports = GlobalWidgetsView.extend({
  template: '#tmpl-elementor-panel-global-widget-no-templates',
  id: 'elementor-panel-global-widget-no-templates',
  className: 'elementor-nerd-box elementor-panel-nerd-box e-responsive-panel-stretch'
});

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/views/panel-page.js":
/*!*********************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/views/panel-page.js ***!
  \*********************************************************************/
/***/ ((module) => {

"use strict";


module.exports = Marionette.ItemView.extend({
  id: 'elementor-panel-global-widget',
  template: '#tmpl-elementor-panel-global-widget',
  ui: {
    editButton: '#elementor-global-widget-locked-edit .elementor-button',
    unlinkButton: '#elementor-global-widget-locked-unlink .elementor-button',
    loading: '#elementor-global-widget-loading'
  },
  events: {
    'click @ui.editButton': 'onEditButtonClick',
    'click @ui.unlinkButton': 'onUnlinkButtonClick'
  },
  initialize: function initialize() {
    this.initUnlinkDialog();
  },
  buildUnlinkDialog: function buildUnlinkDialog() {
    var self = this;
    return elementorCommon.dialogsManager.createWidget('confirm', {
      id: 'elementor-global-widget-unlink-dialog',
      headerMessage: elementorPro.translate('unlink_widget'),
      message: elementorPro.translate('dialog_confirm_unlink'),
      position: {
        my: 'center center',
        at: 'center center'
      },
      strings: {
        confirm: elementorPro.translate('unlink'),
        cancel: elementorPro.translate('cancel')
      },
      onConfirm: function onConfirm() {
        self.getOption('editedView').unlink();
      }
    });
  },
  initUnlinkDialog: function initUnlinkDialog() {
    var dialog;

    this.getUnlinkDialog = function () {
      if (!dialog) {
        dialog = this.buildUnlinkDialog();
      }

      return dialog;
    };
  },
  editGlobalModel: function editGlobalModel() {
    var editedView = this.getOption('editedView');
    $e.run('panel/editor/open', {
      model: editedView.getEditModel(),
      view: editedView
    });
  },
  onEditButtonClick: function onEditButtonClick() {
    this.editGlobalModel();
  },
  onUnlinkButtonClick: function onUnlinkButtonClick() {
    this.getUnlinkDialog().show();
  }
});

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/widget/model.js":
/*!*****************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/widget/model.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/get */ "../node_modules/@babel/runtime-corejs2/helpers/get.js"));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/getPrototypeOf */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var ElementModel = elementor.modules.elements.models.Element;

var Model = /*#__PURE__*/function (_ElementModel) {
  (0, _inherits2.default)(Model, _ElementModel);

  var _super = (0, _createSuper2.default)(Model);

  function Model() {
    (0, _classCallCheck2.default)(this, Model);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Model, [{
    key: "initSettings",
    value: function initSettings() {
      // If global widget is created, the settings should come from recent template.
      // The widget that's hold the panel may not have the recent data, the template can be changed during the editing.
      if ($e.commands.is('document/elements/create')) {
        return this.initSettingsFromTemplate();
      }

      (0, _get2.default)((0, _getPrototypeOf2.default)(Model.prototype), "initSettings", this).call(this);
    }
  }, {
    key: "initEditSettings",
    value: function initEditSettings() {
      (0, _get2.default)((0, _getPrototypeOf2.default)(Model.prototype), "initEditSettings", this).call(this); // Set default edit tab.

      this.get('editSettings').set('editTab', 'global');
    }
  }, {
    key: "initSettingsFromTemplate",
    value: function initSettingsFromTemplate() {
      var id = this.get('templateID'),
          component = $e.components.get('document/global'),
          data = $e.data.getCache(component, "document/global/global-widget/templates/".concat(id)) || this.attributes,
          elementModel = elementorPro.modules.globalWidget.createGlobalModel(id, data);
      this.set('settings', elementModel.get('settings'));
      elementorFrontend.config.elements.data[this.cid] = this.get('settings');
    }
  }]);
  return Model;
}(ElementModel);

exports.default = Model;

/***/ }),

/***/ "../modules/global-widget/assets/js/editor/widget/view.js":
/*!****************************************************************!*\
  !*** ../modules/global-widget/assets/js/editor/widget/view.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(/*! core-js/modules/es6.array.filter.js */ "../node_modules/core-js/modules/es6.array.filter.js");

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/get */ "../node_modules/@babel/runtime-corejs2/helpers/get.js"));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/getPrototypeOf */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var WidgetView = elementor.modules.elements.views.Widget;

var View = /*#__PURE__*/function (_WidgetView) {
  (0, _inherits2.default)(View, _WidgetView);

  var _super = (0, _createSuper2.default)(View);

  function View() {
    (0, _classCallCheck2.default)(this, View);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(View, [{
    key: "className",
    value: function className() {
      return (0, _get2.default)((0, _getPrototypeOf2.default)(View.prototype), "className", this).call(this) + ' elementor-global-widget elementor-global-' + this.model.get('templateID');
    }
  }, {
    key: "addInlineEditingAttributes",
    value: function addInlineEditingAttributes() {// See `this.removeInlineAddingAttributes` for more information.
    }
  }, {
    key: "unlink",
    value: function unlink() {
      $e.run('document/global/unlink', {
        container: this.getContainer()
      });
    }
  }, {
    key: "onEditRequest",
    value: function onEditRequest() {
      $e.route('panel/editor/global', {
        view: this
      });
    }
  }, {
    key: "getContextMenuGroups",
    value: function getContextMenuGroups() {
      // Remove 'Save as global' for global widget view.
      return (0, _get2.default)((0, _getPrototypeOf2.default)(View.prototype), "getContextMenuGroups", this).call(this).filter(function (group) {
        return 'save' !== group.name;
      });
    }
  }, {
    key: "getContainer",
    value: function getContainer() {
      if (this.container) {
        return this.container;
      }

      var container = (0, _get2.default)((0, _getPrototypeOf2.default)(View.prototype), "getContainer", this).call(this);
      container.label = container.label + ' (' + elementorPro.translate('global') + ')';
      return container;
    }
  }, {
    key: "render",
    value: function render() {
      (0, _get2.default)((0, _getPrototypeOf2.default)(View.prototype), "render", this).call(this);
      setTimeout(this.removeInlineAddingAttributes.bind(this));
    }
    /**
     * The issue is complex:
     * 1. There is a mechanism in the editor which responsible for adding inline the method below: `addInlineEditingAttributes`.
     * 2. There is a mechanism in the backend that adds inline attributes for each widget most of the time.
     *      its effect also the Global-Widget itself, in two ways:
     *      1. global-widget instance is calling to `$this->get_original_element_instance()->render_content();`.
     *          It means that the mechanism in the backend with adds the inline attributes will be triggered.
     *      2. each time you 'leave the editing mode' for most of the widgets it triggers `renderRemoteServer()`,
     *          which sends a request for `remoteRendering` for 'non-global widget' (the server doesn't know that it
     *          was linked to a template), that will trigger the original widget without knowing it's a part of the
     *          global mechanism.
     *          eventually it will trigger the logic of the backend for adding the inline attributes.
     */

  }, {
    key: "removeInlineAddingAttributes",
    value: function removeInlineAddingAttributes() {
      var globalWidgetElementDom = this.el.querySelector('.elementor-inline-editing');

      if (globalWidgetElementDom) {
        globalWidgetElementDom.classList.remove('elementor-inline-editing');
      }
    }
  }]);
  return View;
}(WidgetView);

exports.default = View;

/***/ }),

/***/ "../modules/library/assets/js/editor.js":
/*!**********************************************!*\
  !*** ../modules/library/assets/js/editor.js ***!
  \**********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


module.exports = elementorModules.editor.utils.Module.extend({
  onElementorPreviewLoaded: function onElementorPreviewLoaded() {
    var EditButton = __webpack_require__(/*! ./editor/edit-button */ "../modules/library/assets/js/editor/edit-button.js");

    this.editButton = new EditButton();
  }
});

/***/ }),

/***/ "../modules/library/assets/js/editor/edit-button.js":
/*!**********************************************************!*\
  !*** ../modules/library/assets/js/editor/edit-button.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

module.exports = function () {
  var self = this;

  self.onPanelShow = function (panel) {
    var model = panel.content.currentView.collection.findWhere({
      name: 'template_id'
    });
    self.templateIdView = panel.content.currentView.children.findByModelCid(model.cid); // Change Edit link on render & on change template.

    self.templateIdView.elementSettingsModel.on('change', self.onTemplateIdChange);
    self.templateIdView.on('render', self.onTemplateIdChange);
  };

  self.onTemplateIdChange = function () {
    var templateID = self.templateIdView.elementSettingsModel.get('template_id'),
        $editButton = self.templateIdView.$el.find('.elementor-edit-template');

    if (!templateID) {
      $editButton.remove();
      return;
    }

    var editUrl = ElementorConfig.home_url + '?p=' + templateID + '&elementor';

    if ($editButton.length) {
      $editButton.prop('href', editUrl);
    } else {
      $editButton = jQuery('<a />', {
        target: '_blank',
        class: 'elementor-button elementor-button-default elementor-edit-template',
        href: editUrl,
        html: '<i class="eicon-pencil" /> ' + elementorPro.config.i18n.edit_template
      });
      self.templateIdView.$el.find('.elementor-control-input-wrapper').after($editButton);
    }
  };

  self.init = function () {
    elementor.hooks.addAction('panel/open_editor/widget/template', self.onPanelShow);
  };

  self.init();
};

/***/ }),

/***/ "../modules/motion-fx/assets/js/editor/editor.js":
/*!*******************************************************!*\
  !*** ../modules/motion-fx/assets/js/editor/editor.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _default = /*#__PURE__*/function (_elementorModules$edi) {
  (0, _inherits2.default)(_default, _elementorModules$edi);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "onElementorInit",
    value: function onElementorInit() {
      elementor.on('navigator:init', this.onNavigatorInit.bind(this));
    }
  }, {
    key: "onNavigatorInit",
    value: function onNavigatorInit() {
      elementor.navigator.indicators.motionFX = {
        icon: 'flash',
        title: elementorPro.translate('motion_effects'),
        settingKeys: ['motion_fx_motion_fx_scrolling', 'motion_fx_motion_fx_mouse', 'background_motion_fx_motion_fx_scrolling', 'background_motion_fx_motion_fx_mouse'],
        section: 'section_effects'
      };
    }
  }]);
  return _default;
}(elementorModules.editor.utils.Module);

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/editor/component.js":
/*!******************************************************!*\
  !*** ../modules/popup/assets/js/editor/component.js ***!
  \******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/assertThisInitialized */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var hooks = _interopRequireWildcard(__webpack_require__(/*! ./hooks/ */ "../modules/popup/assets/js/editor/hooks/index.js"));

var PopupComponent = /*#__PURE__*/function (_$e$modules$Component) {
  (0, _inherits2.default)(PopupComponent, _$e$modules$Component);

  var _super = (0, _createSuper2.default)(PopupComponent);

  function PopupComponent() {
    var _this;

    (0, _classCallCheck2.default)(this, PopupComponent);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onPageSettingsCloseHandler", null);
    return _this;
  }

  (0, _createClass2.default)(PopupComponent, [{
    key: "getNamespace",
    value: function getNamespace() {
      return 'document/popup';
    }
  }, {
    key: "defaultHooks",
    value: function defaultHooks() {
      return this.importHooks(hooks);
    }
  }]);
  return PopupComponent;
}($e.modules.ComponentBase);

exports.default = PopupComponent;

/***/ }),

/***/ "../modules/popup/assets/js/editor/controls/display-settings.js":
/*!**********************************************************************!*\
  !*** ../modules/popup/assets/js/editor/controls/display-settings.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

__webpack_require__(/*! core-js/modules/es6.regexp.replace.js */ "../node_modules/core-js/modules/es6.regexp.replace.js");

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/get */ "../node_modules/@babel/runtime-corejs2/helpers/get.js"));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/getPrototypeOf */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _default = /*#__PURE__*/function (_elementorModules$edi) {
  (0, _inherits2.default)(_default, _elementorModules$edi);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    var _this;

    (0, _classCallCheck2.default)(this, _default);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    _this.template = _.noop;
    _this.activeTab = 'content';

    _this.listenTo(_this.model, 'change', _this.onModelChange);

    return _this;
  }

  (0, _createClass2.default)(_default, [{
    key: "getNamespaceArray",
    value: function getNamespaceArray() {
      return ['popup', 'display-settings'];
    }
  }, {
    key: "className",
    value: function className() {
      return (0, _get2.default)((0, _getPrototypeOf2.default)(_default.prototype), "className", this).call(this) + ' elementor-popup__display-settings';
    }
  }, {
    key: "toggleGroup",
    value: function toggleGroup(groupName, $groupElement) {
      $groupElement.toggleClass('elementor-active', !!this.model.get(groupName));
    }
  }, {
    key: "onRenderTemplate",
    value: function onRenderTemplate() {
      this.activateFirstSection();
    }
  }, {
    key: "onRender",
    value: function onRender() {
      var _this2 = this;

      var name = this.getOption('name');
      var $groupWrapper;
      this.children.each(function (child) {
        var type = child.model.get('type');

        if ('heading' !== type) {
          if ($groupWrapper) {
            $groupWrapper.append(child.$el);
          }

          return;
        }

        var groupName = child.model.get('name').replace('_heading', '');
        $groupWrapper = jQuery('<div>', {
          id: "elementor-popup__".concat(name, "-controls-group--").concat(groupName),
          class: 'elementor-popup__display-settings_controls_group'
        });
        var $imageWrapper = jQuery('<div>', {
          class: 'elementor-popup__display-settings_controls_group__icon'
        }),
            $image = jQuery('<img>', {
          src: elementorPro.config.urls.modules + "popup/assets/images/".concat(name, "/").concat(groupName, ".svg")
        });
        $imageWrapper.html($image);
        $groupWrapper.html($imageWrapper);
        child.$el.before($groupWrapper);
        $groupWrapper.append(child.$el);

        _this2.toggleGroup(groupName, $groupWrapper);
      });
    }
  }, {
    key: "onModelChange",
    value: function onModelChange() {
      var changedControlName = (0, _keys.default)(this.model.changed)[0],
          changedControlView = this.getControlViewByName(changedControlName);

      if ('switcher' !== changedControlView.model.get('type')) {
        return;
      }

      this.toggleGroup(changedControlName, changedControlView.$el.parent());
    }
  }]);
  return _default;
}(elementorModules.editor.views.ControlsStack);

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/editor/hooks/data/index.js":
/*!*************************************************************!*\
  !*** ../modules/popup/assets/js/editor/hooks/data/index.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "PopupSave", {
  enumerable: true,
  get: function get() {
    return _save.PopupSave;
  }
});

var _save = __webpack_require__(/*! ./save */ "../modules/popup/assets/js/editor/hooks/data/save.js");

/***/ }),

/***/ "../modules/popup/assets/js/editor/hooks/data/save.js":
/*!************************************************************!*\
  !*** ../modules/popup/assets/js/editor/hooks/data/save.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.PopupSave = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var PopupSave = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(PopupSave, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(PopupSave);

  function PopupSave() {
    (0, _classCallCheck2.default)(this, PopupSave);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(PopupSave, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/save/save';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-popup-save';
    }
  }, {
    key: "getConditions",
    value: function getConditions() {
      return 'popup' === elementor.config.document.type;
    }
  }, {
    key: "apply",
    value: function apply() {
      var settings = {};
      jQuery.each(elementorPro.modules.popup.displaySettingsTypes, function (type, data) {
        settings[type] = data.model.toJSON({
          remove: ['default']
        });
      });
      elementorPro.ajax.addRequest('popup_save_display_settings', {
        data: {
          settings: settings
        }
      });
    }
  }]);
  return PopupSave;
}($e.modules.hookData.After);

exports.PopupSave = PopupSave;
var _default = PopupSave;
exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/editor/hooks/index.js":
/*!********************************************************!*\
  !*** ../modules/popup/assets/js/editor/hooks/index.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _Object$keys = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

var _data = __webpack_require__(/*! ./data/ */ "../modules/popup/assets/js/editor/hooks/data/index.js");

_Object$keys(_data).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _data[key]) return;

  _Object$defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _data[key];
    }
  });
});

var _ui = __webpack_require__(/*! ./ui/ */ "../modules/popup/assets/js/editor/hooks/ui/index.js");

_Object$keys(_ui).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _ui[key]) return;

  _Object$defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _ui[key];
    }
  });
});

/***/ }),

/***/ "../modules/popup/assets/js/editor/hooks/ui/base/base-hook-popup-after.js":
/*!********************************************************************************!*\
  !*** ../modules/popup/assets/js/editor/hooks/ui/base/base-hook-popup-after.js ***!
  \********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _get3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/get */ "../node_modules/@babel/runtime-corejs2/helpers/get.js"));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/getPrototypeOf */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var BaseHookPopupAfter = /*#__PURE__*/function (_$e$modules$hookUI$Af) {
  (0, _inherits2.default)(BaseHookPopupAfter, _$e$modules$hookUI$Af);

  var _super = (0, _createSuper2.default)(BaseHookPopupAfter);

  function BaseHookPopupAfter() {
    (0, _classCallCheck2.default)(this, BaseHookPopupAfter);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(BaseHookPopupAfter, [{
    key: "run",
    value: function run() {
      var _get2;

      this.component = this.component || $e.components.get('document/popup');

      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      return (_get2 = (0, _get3.default)((0, _getPrototypeOf2.default)(BaseHookPopupAfter.prototype), "run", this)).call.apply(_get2, [this].concat(args));
    }
  }]);
  return BaseHookPopupAfter;
}($e.modules.hookUI.After);

exports.default = BaseHookPopupAfter;

/***/ }),

/***/ "../modules/popup/assets/js/editor/hooks/ui/editor/documents/close/remove-instructions.js":
/*!************************************************************************************************!*\
  !*** ../modules/popup/assets/js/editor/hooks/ui/editor/documents/close/remove-instructions.js ***!
  \************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.PopupRemoveInstructions = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _baseHookPopupAfter = _interopRequireDefault(__webpack_require__(/*! ../../../base/base-hook-popup-after */ "../modules/popup/assets/js/editor/hooks/ui/base/base-hook-popup-after.js"));

var PopupRemoveInstructions = /*#__PURE__*/function (_BaseHookPopupAfter) {
  (0, _inherits2.default)(PopupRemoveInstructions, _BaseHookPopupAfter);

  var _super = (0, _createSuper2.default)(PopupRemoveInstructions);

  function PopupRemoveInstructions() {
    (0, _classCallCheck2.default)(this, PopupRemoveInstructions);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(PopupRemoveInstructions, [{
    key: "getCommand",
    value: function getCommand() {
      return 'editor/documents/unload';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-popup-remove-instructions';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      var document = args.document;
      return 'popup' === document.config.type && !elementor.config.user.introduction.popupSettings;
    }
  }, {
    key: "apply",
    value: function apply() {
      $e.components.get('panel/page-settings').off('route/close', this.component.onPageSettingsCloseHandler);
    }
  }]);
  return PopupRemoveInstructions;
}(_baseHookPopupAfter.default);

exports.PopupRemoveInstructions = PopupRemoveInstructions;
var _default = PopupRemoveInstructions;
exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/editor/hooks/ui/editor/documents/close/remove-library-tab.js":
/*!***********************************************************************************************!*\
  !*** ../modules/popup/assets/js/editor/hooks/ui/editor/documents/close/remove-library-tab.js ***!
  \***********************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.PopupRemoveLibraryTab = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var PopupRemoveLibraryTab = /*#__PURE__*/function (_$e$modules$hookUI$Af) {
  (0, _inherits2.default)(PopupRemoveLibraryTab, _$e$modules$hookUI$Af);

  var _super = (0, _createSuper2.default)(PopupRemoveLibraryTab);

  function PopupRemoveLibraryTab() {
    (0, _classCallCheck2.default)(this, PopupRemoveLibraryTab);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(PopupRemoveLibraryTab, [{
    key: "getCommand",
    value: function getCommand() {
      return 'editor/documents/unload';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-popup-remove-library-tab';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      var document = args.document;
      return 'popup' === document.config.type;
    }
  }, {
    key: "apply",
    value: function apply() {
      $e.components.get('library').removeTab('templates/popups');
    }
  }]);
  return PopupRemoveLibraryTab;
}($e.modules.hookUI.After);

exports.PopupRemoveLibraryTab = PopupRemoveLibraryTab;
var _default = PopupRemoveLibraryTab;
exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/editor/hooks/ui/editor/documents/close/remove-triggers.js":
/*!********************************************************************************************!*\
  !*** ../modules/popup/assets/js/editor/hooks/ui/editor/documents/close/remove-triggers.js ***!
  \********************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.PopupRemoveTriggers = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var PopupRemoveTriggers = /*#__PURE__*/function (_$e$modules$hookUI$Af) {
  (0, _inherits2.default)(PopupRemoveTriggers, _$e$modules$hookUI$Af);

  var _super = (0, _createSuper2.default)(PopupRemoveTriggers);

  function PopupRemoveTriggers() {
    (0, _classCallCheck2.default)(this, PopupRemoveTriggers);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(PopupRemoveTriggers, [{
    key: "getCommand",
    value: function getCommand() {
      return 'editor/documents/unload';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-popup-remove-triggers';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      var document = args.document;
      return 'popup' === document.config.type;
    }
  }, {
    key: "apply",
    value: function apply() {
      this.removePanelFooterSubmenuItems();
      this.removePublishTabs();
    }
  }, {
    key: "removePanelFooterSubmenuItems",
    value: function removePanelFooterSubmenuItems() {
      var displaySettingsTypes = elementorPro.modules.popup.displaySettingsTypes;
      jQuery.each(displaySettingsTypes, function (type) {
        elementor.getPanelView().footer.currentView.removeSubMenuItem('saver-options', {
          name: type
        });
      });
    }
  }, {
    key: "removePublishTabs",
    value: function removePublishTabs() {
      var component = $e.components.get('theme-builder-publish'),
          displaySettingsTypes = elementorPro.modules.popup.displaySettingsTypes;
      jQuery.each(displaySettingsTypes, function (type) {
        component.removeTab(type);
      });
    }
  }]);
  return PopupRemoveTriggers;
}($e.modules.hookUI.After);

exports.PopupRemoveTriggers = PopupRemoveTriggers;
var _default = PopupRemoveTriggers;
exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/editor/hooks/ui/editor/documents/open/add-instructions.js":
/*!********************************************************************************************!*\
  !*** ../modules/popup/assets/js/editor/hooks/ui/editor/documents/open/add-instructions.js ***!
  \********************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.PopupAddInstructions = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _baseHookPopupAfter = _interopRequireDefault(__webpack_require__(/*! ../../../base/base-hook-popup-after */ "../modules/popup/assets/js/editor/hooks/ui/base/base-hook-popup-after.js"));

var PopupAddInstructions = /*#__PURE__*/function (_BaseHookPopupAfter) {
  (0, _inherits2.default)(PopupAddInstructions, _BaseHookPopupAfter);

  var _super = (0, _createSuper2.default)(PopupAddInstructions);

  function PopupAddInstructions() {
    (0, _classCallCheck2.default)(this, PopupAddInstructions);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(PopupAddInstructions, [{
    key: "getCommand",
    value: function getCommand() {
      return 'editor/documents/open';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-popup-add-instructions';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      var document = elementor.documents.get(args.id);
      return 'popup' === document.config.type && !elementor.config.user.introduction.popupSettings;
    }
  }, {
    key: "apply",
    value: function apply() {
      // Expose for the remove hook.
      this.component.onPageSettingsCloseHandler = this.onPageSettingsClose.bind(this);
      $e.components.get('panel/page-settings').on('route/close', this.component.onPageSettingsCloseHandler);
    }
  }, {
    key: "onPageSettingsClose",
    value: function onPageSettingsClose() {
      var introduction = this.getIntroduction();
      introduction.show(elementor.getPanelView().footer.currentView.ui.settings[0]);
      introduction.setViewed();
      $e.components.get('panel/page-settings').off('route/close', this.component.onPageSettingsCloseHandler);
    }
  }, {
    key: "getIntroduction",
    value: function getIntroduction() {
      return new elementorModules.editor.utils.Introduction({
        introductionKey: 'popupSettings',
        dialogOptions: {
          id: 'elementor-popup-settings-introduction',
          headerMessage: '<i class="eicon-info"></i>' + elementorPro.translate('popup_settings_introduction_title'),
          message: elementorPro.translate('popup_settings_introduction_message'),
          closeButton: true,
          closeButtonClass: 'eicon-close',
          position: {
            my: 'left bottom',
            at: 'right bottom-5',
            autoRefresh: true
          },
          hide: {
            onOutsideClick: false
          }
        }
      });
    }
  }]);
  return PopupAddInstructions;
}(_baseHookPopupAfter.default);

exports.PopupAddInstructions = PopupAddInstructions;
var _default = PopupAddInstructions;
exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/editor/hooks/ui/editor/documents/open/add-library-tab.js":
/*!*******************************************************************************************!*\
  !*** ../modules/popup/assets/js/editor/hooks/ui/editor/documents/open/add-library-tab.js ***!
  \*******************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.PopupAddLibraryTab = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var PopupAddLibraryTab = /*#__PURE__*/function (_$e$modules$hookUI$Af) {
  (0, _inherits2.default)(PopupAddLibraryTab, _$e$modules$hookUI$Af);

  var _super = (0, _createSuper2.default)(PopupAddLibraryTab);

  function PopupAddLibraryTab() {
    (0, _classCallCheck2.default)(this, PopupAddLibraryTab);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(PopupAddLibraryTab, [{
    key: "getCommand",
    value: function getCommand() {
      return 'editor/documents/open';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-popup-add-library-tab';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      var document = elementor.documents.get(args.id);
      return 'popup' === document.config.type;
    }
  }, {
    key: "apply",
    value: function apply() {
      $e.components.get('library').addTab('templates/popups', {
        title: elementorPro.translate('popups'),
        filter: {
          source: 'remote',
          type: 'popup'
        }
      }, 1);
    }
  }]);
  return PopupAddLibraryTab;
}($e.modules.hookUI.After);

exports.PopupAddLibraryTab = PopupAddLibraryTab;
var _default = PopupAddLibraryTab;
exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/editor/hooks/ui/editor/documents/open/add-triggers.js":
/*!****************************************************************************************!*\
  !*** ../modules/popup/assets/js/editor/hooks/ui/editor/documents/open/add-triggers.js ***!
  \****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.PopupAddTriggers = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _displaySettings = _interopRequireDefault(__webpack_require__(/*! modules/popup/assets/js/editor/controls/display-settings */ "../modules/popup/assets/js/editor/controls/display-settings.js"));

var PopupAddTriggers = /*#__PURE__*/function (_$e$modules$hookUI$Af) {
  (0, _inherits2.default)(PopupAddTriggers, _$e$modules$hookUI$Af);

  var _super = (0, _createSuper2.default)(PopupAddTriggers);

  function PopupAddTriggers() {
    (0, _classCallCheck2.default)(this, PopupAddTriggers);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(PopupAddTriggers, [{
    key: "getCommand",
    value: function getCommand() {
      return 'editor/documents/open';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-popup-add-triggers';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      var document = elementor.documents.get(args.id);
      return 'popup' === document.config.type;
    }
  }, {
    key: "apply",
    value: function apply() {
      if (elementor.panel) {
        this.addUI();
      } else {
        // First open, the panel is not available yet.
        elementor.on('preview:loaded', this.addUI.bind(this));
      }
    }
  }, {
    key: "addUI",
    value: function addUI() {
      // Since 'addUI' can be called each document load, if 'theme-builder-publish/triggers' exists, the UI already exist.
      if ($e.routes.commands['theme-builder-publish/triggers']) {
        return;
      }

      this.addPanelFooterSubmenuItems();
      this.addPublishTabs();
    }
  }, {
    key: "addPublishTabs",
    value: function addPublishTabs() {
      var config = elementor.config.document.displaySettings,
          component = $e.components.get('theme-builder-publish'),
          module = elementorPro.modules.popup;
      jQuery.each(module.displaySettingsTypes, function (type, data) {
        // Init models for editor save.
        data.model = new elementorModules.editor.elements.models.BaseSettings(config[type].settings, {
          controls: config[type].controls
        });
        component.addTab(type, {
          View: _displaySettings.default,
          viewOptions: {
            name: type,
            id: "elementor-popup-".concat(type, "__controls"),
            model: data.model,
            controls: data.model.controls
          },
          name: type,
          title: elementorPro.translate(type),
          description: elementorPro.translate("popup_publish_screen_".concat(type, "_description")),
          image: elementorPro.config.urls.modules + "popup/assets/images/".concat(type, "-tab.svg")
        });
      });
    }
  }, {
    key: "addPanelFooterSubmenuItems",
    value: function addPanelFooterSubmenuItems() {
      var component = $e.components.get('theme-builder-publish'),
          displaySettingsTypes = elementorPro.modules.popup.displaySettingsTypes;
      jQuery.each(displaySettingsTypes, function (type, data) {
        elementor.getPanelView().footer.currentView.addSubMenuItem('saver-options', {
          before: 'save-template',
          name: type,
          icon: data.icon,
          title: elementorPro.translate(type),
          callback: function callback() {
            return $e.route(component.getTabRoute(type));
          }
        });
      });
    }
  }]);
  return PopupAddTriggers;
}($e.modules.hookUI.After);

exports.PopupAddTriggers = PopupAddTriggers;
var _default = PopupAddTriggers;
exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/editor/hooks/ui/index.js":
/*!***********************************************************!*\
  !*** ../modules/popup/assets/js/editor/hooks/ui/index.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "PopupAddInstructions", {
  enumerable: true,
  get: function get() {
    return _addInstructions.PopupAddInstructions;
  }
});

_Object$defineProperty(exports, "PopupAddLibraryTab", {
  enumerable: true,
  get: function get() {
    return _addLibraryTab.PopupAddLibraryTab;
  }
});

_Object$defineProperty(exports, "PopupAddTriggers", {
  enumerable: true,
  get: function get() {
    return _addTriggers.PopupAddTriggers;
  }
});

_Object$defineProperty(exports, "PopupRemoveInstructions", {
  enumerable: true,
  get: function get() {
    return _removeInstructions.PopupRemoveInstructions;
  }
});

_Object$defineProperty(exports, "PopupRemoveLibraryTab", {
  enumerable: true,
  get: function get() {
    return _removeLibraryTab.PopupRemoveLibraryTab;
  }
});

_Object$defineProperty(exports, "PopupRemoveTriggers", {
  enumerable: true,
  get: function get() {
    return _removeTriggers.PopupRemoveTriggers;
  }
});

var _addInstructions = __webpack_require__(/*! ./editor/documents/open/add-instructions */ "../modules/popup/assets/js/editor/hooks/ui/editor/documents/open/add-instructions.js");

var _addLibraryTab = __webpack_require__(/*! ./editor/documents/open/add-library-tab */ "../modules/popup/assets/js/editor/hooks/ui/editor/documents/open/add-library-tab.js");

var _addTriggers = __webpack_require__(/*! ./editor/documents/open/add-triggers */ "../modules/popup/assets/js/editor/hooks/ui/editor/documents/open/add-triggers.js");

var _removeInstructions = __webpack_require__(/*! ./editor/documents/close/remove-instructions */ "../modules/popup/assets/js/editor/hooks/ui/editor/documents/close/remove-instructions.js");

var _removeLibraryTab = __webpack_require__(/*! ./editor/documents/close/remove-library-tab */ "../modules/popup/assets/js/editor/hooks/ui/editor/documents/close/remove-library-tab.js");

var _removeTriggers = __webpack_require__(/*! ./editor/documents/close/remove-triggers */ "../modules/popup/assets/js/editor/hooks/ui/editor/documents/close/remove-triggers.js");

/***/ }),

/***/ "../modules/popup/assets/js/editor/module.js":
/*!***************************************************!*\
  !*** ../modules/popup/assets/js/editor/module.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _component = _interopRequireDefault(__webpack_require__(/*! ./component */ "../modules/popup/assets/js/editor/component.js"));

var PopupModule = /*#__PURE__*/function (_elementorModules$edi) {
  (0, _inherits2.default)(PopupModule, _elementorModules$edi);

  var _super = (0, _createSuper2.default)(PopupModule);

  function PopupModule() {
    var _this;

    (0, _classCallCheck2.default)(this, PopupModule);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    _this.displaySettingsTypes = {
      triggers: {
        icon: 'eicon-click'
      },
      timing: {
        icon: 'eicon-cog'
      }
    };
    return _this;
  }

  (0, _createClass2.default)(PopupModule, [{
    key: "onElementorLoaded",
    value: function onElementorLoaded() {
      this.component = $e.components.register(new _component.default({
        manager: this
      }));
    }
  }]);
  return PopupModule;
}(elementorModules.editor.utils.Module);

module.exports = PopupModule;

/***/ }),

/***/ "../modules/query-control/assets/js/editor.js":
/*!****************************************************!*\
  !*** ../modules/query-control/assets/js/editor.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


module.exports = elementorModules.editor.utils.Module.extend({
  onElementorPreviewLoaded: function onElementorPreviewLoaded() {
    elementor.addControlView('Query', __webpack_require__(/*! ./editor/query-control */ "../modules/query-control/assets/js/editor/query-control.js"));
  }
});

/***/ }),

/***/ "../modules/query-control/assets/js/editor/query-control.js":
/*!******************************************************************!*\
  !*** ../modules/query-control/assets/js/editor/query-control.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

module.exports = elementor.modules.controls.Select2.extend({
  cache: null,
  isTitlesReceived: false,
  getSelect2Placeholder: function getSelect2Placeholder() {
    return {
      id: '',
      text: elementorPro.translate('all')
    };
  },
  getControlValueByName: function getControlValueByName(controlName) {
    var name = this.model.get('group_prefix') + controlName;
    return this.elementSettingsModel.attributes[name];
  },
  getQueryDataDeprecated: function getQueryDataDeprecated() {
    return {
      filter_type: this.model.get('filter_type'),
      object_type: this.model.get('object_type'),
      include_type: this.model.get('include_type'),
      query: this.model.get('query')
    };
  },
  getQueryData: function getQueryData() {
    // Use a clone to keep model data unchanged:
    var autocomplete = elementorCommon.helpers.cloneObject(this.model.get('autocomplete'));

    if (_.isEmpty(autocomplete.query)) {
      autocomplete.query = {};
    } // Specific for Group_Control_Query


    if ('cpt_tax' === autocomplete.object) {
      autocomplete.object = 'tax';

      if (_.isEmpty(autocomplete.query) || _.isEmpty(autocomplete.query.post_type)) {
        autocomplete.query.post_type = this.getControlValueByName('post_type');
      }
    }

    return {
      autocomplete: autocomplete
    };
  },
  getSelect2DefaultOptions: function getSelect2DefaultOptions() {
    var self = this;
    return jQuery.extend(elementor.modules.controls.Select2.prototype.getSelect2DefaultOptions.apply(this, arguments), {
      ajax: {
        transport: function transport(params, success, failure) {
          var bcFormat = !_.isEmpty(self.model.get('filter_type'));
          var data = {},
              action = 'panel_posts_control_filter_autocomplete';

          if (bcFormat) {
            data = self.getQueryDataDeprecated();
            action = 'panel_posts_control_filter_autocomplete_deprecated';
          } else {
            data = self.getQueryData();
          }

          data.q = params.data.q;
          return elementorPro.ajax.addRequest(action, {
            data: data,
            success: success,
            error: failure
          });
        },
        data: function data(params) {
          return {
            q: params.term,
            page: params.page
          };
        },
        cache: true
      },
      escapeMarkup: function escapeMarkup(markup) {
        return markup;
      },
      minimumInputLength: 1
    });
  },
  getValueTitles: function getValueTitles() {
    var self = this,
        data = {},
        bcFormat = !_.isEmpty(this.model.get('filter_type'));
    var ids = this.getControlValue(),
        action = 'query_control_value_titles',
        filterTypeName = 'autocomplete',
        filterType = {};

    if (bcFormat) {
      filterTypeName = 'filter_type';
      filterType = this.model.get(filterTypeName).object;
      data.filter_type = filterType;
      data.object_type = self.model.get('object_type');
      data.include_type = self.model.get('include_type');
      data.unique_id = '' + self.cid + filterType;
      action = 'query_control_value_titles_deprecated';
    } else {
      filterType = this.model.get(filterTypeName).object;
      data.get_titles = self.getQueryData().autocomplete;
      data.unique_id = '' + self.cid + filterType;
    }

    if (!ids || !filterType) {
      return;
    }

    if (!_.isArray(ids)) {
      ids = [ids];
    }

    elementorCommon.ajax.loadObjects({
      action: action,
      ids: ids,
      data: data,
      before: function before() {
        self.addControlSpinner();
      },
      success: function success(ajaxData) {
        self.isTitlesReceived = true;
        self.model.set('options', ajaxData);
        self.render();
      }
    });
  },
  addControlSpinner: function addControlSpinner() {
    this.ui.select.prop('disabled', true);
    this.$el.find('.elementor-control-title').after('<span class="elementor-control-spinner">&nbsp;<i class="eicon-spinner eicon-animation-spin"></i>&nbsp;</span>');
  },
  onReady: function onReady() {
    if (!this.isTitlesReceived) {
      this.getValueTitles();
    }
  }
});

/***/ }),

/***/ "../modules/screenshots/assets/js/editor/component.js":
/*!************************************************************!*\
  !*** ../modules/screenshots/assets/js/editor/component.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var dataHooks = _interopRequireWildcard(__webpack_require__(/*! ./hooks/data */ "../modules/screenshots/assets/js/editor/hooks/data/index.js"));

var _default = /*#__PURE__*/function (_$e$modules$Component) {
  (0, _inherits2.default)(_default, _$e$modules$Component);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "getNamespace",
    value: function getNamespace() {
      return 'screenshots';
    }
  }, {
    key: "defaultHooks",
    value: function defaultHooks() {
      return this.importHooks(dataHooks);
    }
  }]);
  return _default;
}($e.modules.ComponentBase);

exports.default = _default;

/***/ }),

/***/ "../modules/screenshots/assets/js/editor/hooks/data/document/save/save/delete-screenshot.js":
/*!**************************************************************************************************!*\
  !*** ../modules/screenshots/assets/js/editor/hooks/data/document/save/save/delete-screenshot.js ***!
  \**************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.DeleteScreenshot = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var DeleteScreenshot = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(DeleteScreenshot, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(DeleteScreenshot);

  function DeleteScreenshot() {
    (0, _classCallCheck2.default)(this, DeleteScreenshot);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(DeleteScreenshot, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/save/save';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      var status = args.status,
          config = elementor.documents.getCurrent().config;
      return 'publish' === status && config.support_site_editor;
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'document/save/save::delete-screenshot';
    }
  }, {
    key: "apply",
    value: function apply() {
      var postId = elementor.documents.getCurrent().id;
      return elementorCommon.ajax.addRequest('screenshot_delete', {
        unique_id: "delete_screenshot_".concat(postId),
        data: {
          post_id: postId
        }
      });
    }
  }]);
  return DeleteScreenshot;
}($e.modules.hookData.After);

exports.DeleteScreenshot = DeleteScreenshot;
var _default = DeleteScreenshot;
exports.default = _default;

/***/ }),

/***/ "../modules/screenshots/assets/js/editor/hooks/data/index.js":
/*!*******************************************************************!*\
  !*** ../modules/screenshots/assets/js/editor/hooks/data/index.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "DeleteScreenshot", {
  enumerable: true,
  get: function get() {
    return _deleteScreenshot.DeleteScreenshot;
  }
});

var _deleteScreenshot = __webpack_require__(/*! ./document/save/save/delete-screenshot */ "../modules/screenshots/assets/js/editor/hooks/data/document/save/save/delete-screenshot.js");

/***/ }),

/***/ "../modules/screenshots/assets/js/editor/module.js":
/*!*********************************************************!*\
  !*** ../modules/screenshots/assets/js/editor/module.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _component = _interopRequireDefault(__webpack_require__(/*! ./component */ "../modules/screenshots/assets/js/editor/component.js"));

var Module = /*#__PURE__*/function (_elementorModules$edi) {
  (0, _inherits2.default)(Module, _elementorModules$edi);

  var _super = (0, _createSuper2.default)(Module);

  function Module() {
    (0, _classCallCheck2.default)(this, Module);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Module, [{
    key: "onElementorInit",
    value: function onElementorInit() {
      $e.components.register(new _component.default());
    }
  }]);
  return Module;
}(elementorModules.editor.utils.Module);

exports.default = Module;

/***/ }),

/***/ "../modules/scroll-snap/assets/js/editor/component.js":
/*!************************************************************!*\
  !*** ../modules/scroll-snap/assets/js/editor/component.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var hooks = _interopRequireWildcard(__webpack_require__(/*! ./hooks/ui */ "../modules/scroll-snap/assets/js/editor/hooks/ui/index.js"));

var ScrollSnapComponent = /*#__PURE__*/function (_$e$modules$Component) {
  (0, _inherits2.default)(ScrollSnapComponent, _$e$modules$Component);

  var _super = (0, _createSuper2.default)(ScrollSnapComponent);

  function ScrollSnapComponent() {
    (0, _classCallCheck2.default)(this, ScrollSnapComponent);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ScrollSnapComponent, [{
    key: "getNamespace",
    value: function getNamespace() {
      return 'scroll-snap';
    }
  }, {
    key: "defaultHooks",
    value: function defaultHooks() {
      return this.importHooks(hooks);
    }
  }]);
  return ScrollSnapComponent;
}($e.modules.ComponentBase);

exports.default = ScrollSnapComponent;

/***/ }),

/***/ "../modules/scroll-snap/assets/js/editor/hooks/ui/document/elements/settings/focus-preview.js":
/*!****************************************************************************************************!*\
  !*** ../modules/scroll-snap/assets/js/editor/hooks/ui/document/elements/settings/focus-preview.js ***!
  \****************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.FocusPreview = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var FocusPreview = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(FocusPreview, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(FocusPreview);

  function FocusPreview() {
    (0, _classCallCheck2.default)(this, FocusPreview);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(FocusPreview, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/elements/settings';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'focus-preview--document/elements/settings';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      var _args$settings$scroll;

      return ((_args$settings$scroll = args.settings.scroll_snap_padding) === null || _args$settings$scroll === void 0 ? void 0 : _args$settings$scroll.size) !== '';
    }
  }, {
    key: "apply",
    value: function apply() {
      setTimeout(function () {
        elementor.$preview[0].contentWindow.scrollBy(0, 0);
      }, 100);
    }
  }]);
  return FocusPreview;
}($e.modules.hookData.After);

exports.FocusPreview = FocusPreview;
var _default = FocusPreview;
exports.default = _default;

/***/ }),

/***/ "../modules/scroll-snap/assets/js/editor/hooks/ui/index.js":
/*!*****************************************************************!*\
  !*** ../modules/scroll-snap/assets/js/editor/hooks/ui/index.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "FocusPreview", {
  enumerable: true,
  get: function get() {
    return _focusPreview.FocusPreview;
  }
});

var _focusPreview = __webpack_require__(/*! ./document/elements/settings/focus-preview */ "../modules/scroll-snap/assets/js/editor/hooks/ui/document/elements/settings/focus-preview.js");

/***/ }),

/***/ "../modules/scroll-snap/assets/js/editor/module.js":
/*!*********************************************************!*\
  !*** ../modules/scroll-snap/assets/js/editor/module.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/get */ "../node_modules/@babel/runtime-corejs2/helpers/get.js"));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/getPrototypeOf */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _component = _interopRequireDefault(__webpack_require__(/*! ./component */ "../modules/scroll-snap/assets/js/editor/component.js"));

var Module = /*#__PURE__*/function (_elementorModules$edi) {
  (0, _inherits2.default)(Module, _elementorModules$edi);

  var _super = (0, _createSuper2.default)(Module);

  function Module() {
    (0, _classCallCheck2.default)(this, Module);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Module, [{
    key: "onInit",
    value:
    /**
     * Init
     */
    function onInit() {
      (0, _get2.default)((0, _getPrototypeOf2.default)(Module.prototype), "onInit", this).call(this);
      $e.components.register(new _component.default());
    }
  }]);
  return Module;
}(elementorModules.editor.utils.Module);

exports.default = Module;

/***/ }),

/***/ "../modules/share-buttons/assets/js/editor/editor.js":
/*!***********************************************************!*\
  !*** ../modules/share-buttons/assets/js/editor/editor.js ***!
  \***********************************************************/
/***/ ((module) => {

"use strict";


module.exports = elementorModules.editor.utils.Module.extend({
  config: elementorPro.config.shareButtonsNetworks,
  networksClassDictionary: {
    google: 'fab fa-google-plus',
    pocket: 'fab fa-get-pocket',
    email: 'fas fa-envelope',
    print: 'fas fa-print'
  },
  getNetworkClass: function getNetworkClass(networkName) {
    var networkClass = this.networksClassDictionary[networkName] || 'fab fa-' + networkName;

    if (elementor.config.icons_update_needed) {
      networkClass = 'fa ' + networkClass;
    }

    return networkClass;
  },
  getNetworkTitle: function getNetworkTitle(buttonSettings) {
    var _this$getNetworkData;

    // BC for items that are already selected and have been removed from the options list.
    return buttonSettings.text || ((_this$getNetworkData = this.getNetworkData(buttonSettings)) === null || _this$getNetworkData === void 0 ? void 0 : _this$getNetworkData.title);
  },
  getNetworkData: function getNetworkData(buttonSettings) {
    return this.config[buttonSettings.button];
  },
  hasCounter: function hasCounter(networkName, settings) {
    return 'icon' !== settings.view && 'yes' === settings.show_counter && this.config[networkName].has_counter;
  }
});

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/conditions/repeater-row.js":
/*!****************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/conditions/repeater-row.js ***!
  \****************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

module.exports = elementor.modules.controls.RepeaterRow.extend({
  template: '#tmpl-elementor-theme-builder-conditions-repeater-row',
  childViewContainer: '.elementor-theme-builder-conditions-repeater-row-controls',
  conflictCheckedOnFirstRender: false,
  id: function id() {
    return 'elementor-condition-id-' + this.model.get('_id');
  },
  onBeforeRender: function onBeforeRender() {
    var subNameModel = this.collection.findWhere({
      name: 'sub_name'
    }),
        subIdModel = this.collection.findWhere({
      name: 'sub_id'
    }),
        subConditionConfig = this.config.conditions[this.model.attributes.sub_name];
    subNameModel.attributes.groups = this.getOptions();

    if (subConditionConfig && subConditionConfig.controls) {
      _(subConditionConfig.controls).each(function (control) {
        subIdModel.set(control);
        subIdModel.set('name', 'sub_id');
      });
    }
  },
  initialize: function initialize() {
    elementor.modules.controls.RepeaterRow.prototype.initialize.apply(this, arguments);
    this.config = elementor.config.document.theme_builder;
  },
  updateOptions: function updateOptions() {
    if (this.model.changed.name) {
      this.model.set({
        sub_name: '',
        sub_id: ''
      });
    }

    if (this.model.changed.name || this.model.changed.sub_name) {
      this.model.set('sub_id', '', {
        silent: true
      });
      var subIdModel = this.collection.findWhere({
        name: 'sub_id'
      });
      subIdModel.set({
        type: 'select',
        options: {
          '': 'All'
        }
      });
      this.render();
    }

    if (this.model.changed.type) {
      this.setTypeAttribute();
    }
  },
  getOptions: function getOptions() {
    var self = this,
        conditionConfig = self.config.conditions[this.model.get('name')];

    if (!conditionConfig) {
      return;
    }

    var options = {
      '': conditionConfig.all_label
    };

    _(conditionConfig.sub_conditions).each(function (conditionId, conditionIndex) {
      var subConditionConfig = self.config.conditions[conditionId],
          group;

      if (!subConditionConfig) {
        return;
      }

      if (subConditionConfig.sub_conditions.length) {
        group = {
          label: subConditionConfig.label,
          options: {}
        };
        group.options[conditionId] = subConditionConfig.all_label;

        _(subConditionConfig.sub_conditions).each(function (subConditionId) {
          group.options[subConditionId] = self.config.conditions[subConditionId].label;
        }); // Use a sting key - to keep order


        options['key' + conditionIndex] = group;
      } else {
        options[conditionId] = subConditionConfig.label;
      }
    });

    return options;
  },
  setTypeAttribute: function setTypeAttribute() {
    var typeView = this.children.findByModel(this.collection.findWhere({
      name: 'type'
    }));
    typeView.$el.attr('data-elementor-condition-type', typeView.getControlValue());
  },
  // Moved from `modules/theme-builder/assets/js/editor/conditions/repeater.js`.
  checkConflicts: function checkConflicts() {
    var modelId = this.model.get('_id'),
        rowId = 'elementor-condition-id-' + modelId,
        errorMessageId = 'elementor-conditions-conflict-message-' + modelId,
        $error = jQuery('#' + errorMessageId); // On render - the row isn't exist, so don't cache it.

    jQuery('#' + rowId).removeClass('elementor-error');
    $error.remove();
    elementorPro.ajax.addRequest('theme_builder_conditions_check_conflicts', {
      unique_id: rowId,
      data: {
        condition: this.model.toJSON()
      },
      success: function success(data) {
        if (!_.isEmpty(data)) {
          jQuery('#' + rowId).addClass('elementor-error').after('<div id="' + errorMessageId + '" class="elementor-conditions-conflict-message">' + data + '</div>');
        }
      }
    });
  },
  onRender: function onRender() {
    var nameModel = this.collection.findWhere({
      name: 'name'
    }),
        subNameModel = this.collection.findWhere({
      name: 'sub_name'
    }),
        subIdModel = this.collection.findWhere({
      name: 'sub_id'
    }),
        nameView = this.children.findByModel(nameModel),
        subNameView = this.children.findByModel(subNameModel),
        subIdView = this.children.findByModel(subIdModel),
        conditionConfig = this.config.conditions[this.model.attributes.name],
        subConditionConfig = this.config.conditions[this.model.attributes.sub_name],
        typeConfig = this.config.types[this.config.settings.template_type];

    if (typeConfig.condition_type === nameView.getControlValue() && 'general' !== nameView.getControlValue() && !_.isEmpty(conditionConfig.sub_conditions)) {
      nameView.$el.hide();
    }

    if (!conditionConfig || _.isEmpty(conditionConfig.sub_conditions) && _.isEmpty(conditionConfig.controls) || !nameView.getControlValue() || 'general' === nameView.getControlValue()) {
      subNameView.$el.hide();
    }

    if (!subConditionConfig || _.isEmpty(subConditionConfig.controls) || !subNameView.getControlValue()) {
      subIdView.$el.hide();
    } // Avoid set a `single` for a-l-l singular types. (conflicted with 404 & custom cpt like Shops and Events plugins).


    if ('singular' === typeConfig.condition_type) {
      if ('' === subNameView.getControlValue()) {
        subNameView.setValue('post');
      }
    }

    this.setTypeAttribute();

    if (!this.conflictCheckedOnFirstRender) {
      this.checkConflicts();
      this.conflictCheckedOnFirstRender = true;
    }
  },
  onModelChange: function onModelChange() {
    this.updateOptions();
    this.checkConflicts();
  }
});

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/conditions/repeater.js":
/*!************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/conditions/repeater.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

var _repeaterRow = _interopRequireDefault(__webpack_require__(/*! ./repeater-row */ "../modules/theme-builder/assets/js/editor/conditions/repeater-row.js"));

module.exports = elementor.modules.controls.Repeater.extend({
  childView: _repeaterRow.default,
  updateActiveRow: function updateActiveRow() {},
  initialize: function initialize() {
    elementor.modules.controls.Repeater.prototype.initialize.apply(this, arguments);
    this.config = elementor.config.document.theme_builder;
    this.updateConditionsOptions(this.config.settings.template_type);
  },
  updateConditionsOptions: function updateConditionsOptions(templateType) {
    var self = this,
        conditionType = self.config.types[templateType].condition_type,
        options = {};

    _([conditionType]).each(function (conditionId, conditionIndex) {
      var conditionConfig = self.config.conditions[conditionId],
          group = {
        label: conditionConfig.label,
        options: {}
      };
      group.options[conditionId] = conditionConfig.all_label;

      _(conditionConfig.sub_conditions).each(function (subConditionId) {
        group.options[subConditionId] = self.config.conditions[subConditionId].label;
      });

      options[conditionIndex] = group;
    });

    var fields = this.model.get('fields');
    fields[1].default = conditionType;

    if ('general' === conditionType) {
      fields[1].groups = options;
    } else {
      fields[2].groups = options;
    }
  },
  onRender: function onRender() {
    this.ui.btnAddRow.text(elementorPro.translate('add_condition'));
  }
});

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/conditions/view.js":
/*!********************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/conditions/view.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var inlineControlsStack = __webpack_require__(/*! elementor-pro/editor/inline-controls-stack.js */ "../assets/dev/js/editor/inline-controls-stack.js");

module.exports = inlineControlsStack.extend({
  id: 'elementor-theme-builder-conditions-view',
  template: '#tmpl-elementor-theme-builder-conditions-view',
  childViewContainer: '#elementor-theme-builder-conditions-controls',
  childViewOptions: function childViewOptions() {
    return {
      elementSettingsModel: this.model
    };
  }
});

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/hooks/data/document/elements/settings/index.js":
/*!************************************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/hooks/data/document/elements/settings/index.js ***!
  \************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "ThemeBuilderSaveAndReload", {
  enumerable: true,
  get: function get() {
    return _saveAndReload.ThemeBuilderSaveAndReload;
  }
});

_Object$defineProperty(exports, "ThemeBuilderUpdatePreviewOptions", {
  enumerable: true,
  get: function get() {
    return _updatePreviewOptions.ThemeBuilderUpdatePreviewOptions;
  }
});

var _saveAndReload = __webpack_require__(/*! ./save-and-reload */ "../modules/theme-builder/assets/js/editor/hooks/data/document/elements/settings/save-and-reload.js");

var _updatePreviewOptions = __webpack_require__(/*! ./update-preview-options */ "../modules/theme-builder/assets/js/editor/hooks/data/document/elements/settings/update-preview-options.js");

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/hooks/data/document/elements/settings/save-and-reload.js":
/*!**********************************************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/hooks/data/document/elements/settings/save-and-reload.js ***!
  \**********************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ThemeBuilderSaveAndReload = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

/**
 * Hook fired when template: 'single' page layout changed.
 */
var ThemeBuilderSaveAndReload = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(ThemeBuilderSaveAndReload, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(ThemeBuilderSaveAndReload);

  function ThemeBuilderSaveAndReload() {
    (0, _classCallCheck2.default)(this, ThemeBuilderSaveAndReload);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ThemeBuilderSaveAndReload, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/elements/settings';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-theme-builder-save-and-reload';
    }
  }, {
    key: "getContainerType",
    value: function getContainerType() {
      return 'document';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      return args.settings && args.settings.page_template;
    }
  }, {
    key: "apply",
    value: function apply() {
      $e.run('document/save/auto', {
        force: true,
        onSuccess: function onSuccess() {
          elementor.reloadPreview();
          elementor.once('preview:loaded', function () {
            $e.route('panel/page-settings/settings');
          });
        }
      });
    }
  }]);
  return ThemeBuilderSaveAndReload;
}($e.modules.hookData.After);

exports.ThemeBuilderSaveAndReload = ThemeBuilderSaveAndReload;
var _default = ThemeBuilderSaveAndReload;
exports.default = _default;

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/hooks/data/document/elements/settings/update-preview-options.js":
/*!*****************************************************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/hooks/data/document/elements/settings/update-preview-options.js ***!
  \*****************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ThemeBuilderUpdatePreviewOptions = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var ThemeBuilderUpdatePreviewOptions = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(ThemeBuilderUpdatePreviewOptions, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(ThemeBuilderUpdatePreviewOptions);

  function ThemeBuilderUpdatePreviewOptions() {
    (0, _classCallCheck2.default)(this, ThemeBuilderUpdatePreviewOptions);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ThemeBuilderUpdatePreviewOptions, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/elements/settings';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-theme-builder-update-preview-options';
    }
  }, {
    key: "getContainerType",
    value: function getContainerType() {
      return 'document';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      return args.settings && args.settings.preview_type;
    }
  }, {
    key: "apply",
    value: function apply(args) {
      var _args$containers = args.containers,
          containers = _args$containers === void 0 ? [args.container] : _args$containers,
          themeBuilder = elementorPro.modules.themeBuilder;
      $e.run('document/elements/settings', {
        containers: containers,
        settings: {
          preview_id: '',
          preview_search_term: ''
        }
      });

      if ($e.routes.is('panel/page-settings/settings')) {
        themeBuilder.updatePreviewIdOptions(true);
      }
    }
  }]);
  return ThemeBuilderUpdatePreviewOptions;
}($e.modules.hookData.After);

exports.ThemeBuilderUpdatePreviewOptions = ThemeBuilderUpdatePreviewOptions;
var _default = ThemeBuilderUpdatePreviewOptions;
exports.default = _default;

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/hooks/data/document/save/save-conditions.js":
/*!*********************************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/hooks/data/document/save/save-conditions.js ***!
  \*********************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ThemeBuilderSaveConditions = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var ThemeBuilderSaveConditions = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(ThemeBuilderSaveConditions, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(ThemeBuilderSaveConditions);

  function ThemeBuilderSaveConditions() {
    (0, _classCallCheck2.default)(this, ThemeBuilderSaveConditions);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ThemeBuilderSaveConditions, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/save/save';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-theme-builder-save-conditions';
    }
  }, {
    key: "getConditions",
    value: function getConditions() {
      return !!elementor.config.document.theme_builder;
    }
  }, {
    key: "apply",
    value: function apply() {
      var conditionsModel = elementorPro.modules.themeBuilder.conditionsModel;
      elementorPro.ajax.addRequest('theme_builder_save_conditions', {
        data: conditionsModel.toJSON({
          remove: ['default']
        }),
        success: function success() {
          elementor.config.document.theme_builder.settings.conditions = conditionsModel.get('conditions');
        }
      });
    }
  }]);
  return ThemeBuilderSaveConditions;
}($e.modules.hookData.After);

exports.ThemeBuilderSaveConditions = ThemeBuilderSaveConditions;
var _default = ThemeBuilderSaveConditions;
exports.default = _default;

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/hooks/data/document/save/show-conditions.js":
/*!*********************************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/hooks/data/document/save/show-conditions.js ***!
  \*********************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ThemeBuilderShowConditions = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var ThemeBuilderShowConditions = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(ThemeBuilderShowConditions, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(ThemeBuilderShowConditions);

  function ThemeBuilderShowConditions() {
    (0, _classCallCheck2.default)(this, ThemeBuilderShowConditions);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ThemeBuilderShowConditions, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/save/default';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-theme-builder-show-conditions';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      var _args$force = args.force,
          force = _args$force === void 0 ? false : _args$force; // If force save, do not show conditions.

      if (force) {
        return false;
      }

      var showConditions = false;
      var themeBuilder = elementor.config.document.theme_builder;

      if (themeBuilder) {
        var hasConditions = themeBuilder.settings.conditions.length,
            hasLocation = themeBuilder.settings.location,
            isDraft = 'draft' === elementor.settings.page.model.get('post_status');

        if (hasLocation && (!hasConditions || isDraft)) {
          showConditions = true;
        }
      }

      return showConditions;
    }
  }, {
    key: "apply",
    value: function apply() {
      $e.route('theme-builder-publish/conditions');
      return false; // HookBreak.
    }
  }]);
  return ThemeBuilderShowConditions;
}($e.modules.hookData.Dependency);

exports.ThemeBuilderShowConditions = ThemeBuilderShowConditions;
var _default = ThemeBuilderShowConditions;
exports.default = _default;

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/hooks/data/editor/documents/preview/preview-break.js":
/*!******************************************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/hooks/data/editor/documents/preview/preview-break.js ***!
  \******************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ThemeBuilderPreviewBreak = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var ThemeBuilderPreviewBreak = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(ThemeBuilderPreviewBreak, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(ThemeBuilderPreviewBreak);

  function ThemeBuilderPreviewBreak() {
    (0, _classCallCheck2.default)(this, ThemeBuilderPreviewBreak);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ThemeBuilderPreviewBreak, [{
    key: "getCommand",
    value: function getCommand() {
      return 'editor/documents/preview';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-theme-builder-preview-break';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      // If preview is forced, do not break it.
      if (args.force) {
        return false;
      }

      return !!elementor.documents.get(args.id).config.theme_builder;
    }
  }, {
    key: "apply",
    value: function apply() {
      return false; // HookBreak.
    }
  }]);
  return ThemeBuilderPreviewBreak;
}($e.modules.hookData.Dependency);

exports.ThemeBuilderPreviewBreak = ThemeBuilderPreviewBreak;
var _default = ThemeBuilderPreviewBreak;
exports.default = _default;

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/hooks/data/index.js":
/*!*********************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/hooks/data/index.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _Object$keys = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

var _exportNames = {
  ThemeBuilderSaveConditions: true,
  ThemeBuilderShowConditions: true,
  ThemeBuilderPreviewBreak: true
};

_Object$defineProperty(exports, "ThemeBuilderSaveConditions", {
  enumerable: true,
  get: function get() {
    return _saveConditions.ThemeBuilderSaveConditions;
  }
});

_Object$defineProperty(exports, "ThemeBuilderShowConditions", {
  enumerable: true,
  get: function get() {
    return _showConditions.ThemeBuilderShowConditions;
  }
});

_Object$defineProperty(exports, "ThemeBuilderPreviewBreak", {
  enumerable: true,
  get: function get() {
    return _previewBreak.ThemeBuilderPreviewBreak;
  }
});

var _settings = __webpack_require__(/*! ./document/elements/settings */ "../modules/theme-builder/assets/js/editor/hooks/data/document/elements/settings/index.js");

_Object$keys(_settings).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
  if (key in exports && exports[key] === _settings[key]) return;

  _Object$defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _settings[key];
    }
  });
});

var _saveConditions = __webpack_require__(/*! ./document/save/save-conditions */ "../modules/theme-builder/assets/js/editor/hooks/data/document/save/save-conditions.js");

var _showConditions = __webpack_require__(/*! ./document/save/show-conditions */ "../modules/theme-builder/assets/js/editor/hooks/data/document/save/show-conditions.js");

var _previewBreak = __webpack_require__(/*! ./editor/documents/preview/preview-break */ "../modules/theme-builder/assets/js/editor/hooks/data/editor/documents/preview/preview-break.js");

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/hooks/index.js":
/*!****************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/hooks/index.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _Object$keys = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

var _data = __webpack_require__(/*! ./data/ */ "../modules/theme-builder/assets/js/editor/hooks/data/index.js");

_Object$keys(_data).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _data[key]) return;

  _Object$defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _data[key];
    }
  });
});

var _ui = __webpack_require__(/*! ./ui/ */ "../modules/theme-builder/assets/js/editor/hooks/ui/index.js");

_Object$keys(_ui).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _ui[key]) return;

  _Object$defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _ui[key];
    }
  });
});

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/hooks/ui/editor/document/elements/settings/toggle-menu-conditions.js":
/*!**********************************************************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/hooks/ui/editor/document/elements/settings/toggle-menu-conditions.js ***!
  \**********************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ThemeBuilderToggleMenuConditions = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var ThemeBuilderToggleMenuConditions = /*#__PURE__*/function (_$e$modules$hookUI$Af) {
  (0, _inherits2.default)(ThemeBuilderToggleMenuConditions, _$e$modules$hookUI$Af);

  var _super = (0, _createSuper2.default)(ThemeBuilderToggleMenuConditions);

  function ThemeBuilderToggleMenuConditions() {
    (0, _classCallCheck2.default)(this, ThemeBuilderToggleMenuConditions);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ThemeBuilderToggleMenuConditions, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/elements/settings';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-theme-builder-toggle-menu-conditions';
    }
  }, {
    key: "getContainerType",
    value: function getContainerType() {
      return 'document';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      return args.settings && args.settings.location;
    }
  }, {
    key: "apply",
    value: function apply() {
      var themeBuilder = elementorPro.modules.themeBuilder;
      themeBuilder.ui.menuConditions.toggle(!!elementor.config.document.theme_builder.settings.location);
    }
  }]);
  return ThemeBuilderToggleMenuConditions;
}($e.modules.hookUI.After);

exports.ThemeBuilderToggleMenuConditions = ThemeBuilderToggleMenuConditions;
var _default = ThemeBuilderToggleMenuConditions;
exports.default = _default;

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/hooks/ui/editor/documents/close/remove-editor-ui.js":
/*!*****************************************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/hooks/ui/editor/documents/close/remove-editor-ui.js ***!
  \*****************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ThemeBuilderRemoveEditorUI = void 0;

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var ThemeBuilderRemoveEditorUI = /*#__PURE__*/function (_$e$modules$hookUI$Af) {
  (0, _inherits2.default)(ThemeBuilderRemoveEditorUI, _$e$modules$hookUI$Af);

  var _super = (0, _createSuper2.default)(ThemeBuilderRemoveEditorUI);

  function ThemeBuilderRemoveEditorUI() {
    (0, _classCallCheck2.default)(this, ThemeBuilderRemoveEditorUI);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ThemeBuilderRemoveEditorUI, [{
    key: "getCommand",
    value: function getCommand() {
      return 'editor/documents/unload';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-theme-builder-remove-editor-ui';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      var document = args.document;
      return document.config.theme_builder;
    }
  }, {
    key: "apply",
    value: function apply() {
      this.removePanelFooterSubmenuItems();
      this.removePublishTabs();
    }
  }, {
    key: "removePanelFooterSubmenuItems",
    value: function removePanelFooterSubmenuItems() {
      var footerView = elementor.getPanelView().footer.currentView,
          behavior = footerView._behaviors[(0, _keys.default)(footerView.behaviors()).indexOf('saver')];

      elementor.getPanelView().footer.currentView.removeSubMenuItem('saver-options', {
        name: 'conditions'
      });
      behavior.ui.buttonPreview.tipsy('enable').removeClass('elementor-panel-footer-theme-builder-buttons-wrapper elementor-toggle-state');
    }
  }, {
    key: "removePublishTabs",
    value: function removePublishTabs() {
      var component = $e.components.get('theme-builder-publish');
      component.removeTab('conditions');
    }
  }]);
  return ThemeBuilderRemoveEditorUI;
}($e.modules.hookUI.After);

exports.ThemeBuilderRemoveEditorUI = ThemeBuilderRemoveEditorUI;
var _default = ThemeBuilderRemoveEditorUI;
exports.default = _default;

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/hooks/ui/editor/documents/open/add-editor-ui.js":
/*!*************************************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/hooks/ui/editor/documents/open/add-editor-ui.js ***!
  \*************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ThemeBuilderAddEditorUI = void 0;

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _view = _interopRequireDefault(__webpack_require__(/*! ../../../../../conditions/view */ "../modules/theme-builder/assets/js/editor/conditions/view.js"));

var ThemeBuilderAddEditorUI = /*#__PURE__*/function (_$e$modules$hookUI$Af) {
  (0, _inherits2.default)(ThemeBuilderAddEditorUI, _$e$modules$hookUI$Af);

  var _super = (0, _createSuper2.default)(ThemeBuilderAddEditorUI);

  function ThemeBuilderAddEditorUI() {
    (0, _classCallCheck2.default)(this, ThemeBuilderAddEditorUI);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ThemeBuilderAddEditorUI, [{
    key: "getCommand",
    value: function getCommand() {
      return 'editor/documents/open';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-theme-builder-add-editor-ui';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      return elementor.documents.get(args.id).config.theme_builder;
    }
  }, {
    key: "apply",
    value: function apply() {
      if (elementor.panel) {
        this.addUI();
      } else {
        // First open, the panel is not available yet.
        elementor.once('preview:loaded', this.addUI.bind(this));
      }
    }
  }, {
    key: "addUI",
    value: function addUI() {
      this.addRepeaterControlView();
      this.addPanelFooterSubmenuItems();
      this.addPublishTabs();
    }
  }, {
    key: "addRepeaterControlView",
    value: function addRepeaterControlView() {
      elementor.addControlView('Conditions_repeater', __webpack_require__(/*! ../../../../../conditions/repeater */ "../modules/theme-builder/assets/js/editor/conditions/repeater.js"));
    }
  }, {
    key: "addPublishTabs",
    value: function addPublishTabs() {
      var component = $e.components.get('theme-builder-publish'),
          themeBuilderModuleConfig = elementor.config.document.theme_builder,
          settings = themeBuilderModuleConfig.settings;
      component.manager.conditionsModel = new elementorModules.editor.elements.models.BaseSettings(settings, {
        controls: themeBuilderModuleConfig.template_conditions.controls
      });
      component.addTab('conditions', {
        title: elementorPro.translate('conditions'),
        View: _view.default,
        viewOptions: {
          model: component.manager.conditionsModel,
          controls: component.manager.conditionsModel.controls
        },
        name: 'conditions',
        description: elementorPro.translate('conditions_publish_screen_description'),
        image: elementorPro.config.urls.modules + 'theme-builder/assets/images/conditions-tab.svg'
      });
    }
  }, {
    key: "addPanelFooterSubmenuItems",
    value: function addPanelFooterSubmenuItems() {
      var footerView = elementor.getPanelView().footer.currentView,
          behavior = footerView._behaviors[(0, _keys.default)(footerView.behaviors()).indexOf('saver')];

      footerView.ui.menuConditions = footerView.addSubMenuItem('saver-options', {
        before: 'save-template',
        name: 'conditions',
        icon: 'eicon-flow',
        title: elementorPro.translate('display_conditions'),
        callback: function callback() {
          return $e.route('theme-builder-publish/conditions');
        }
      });
      footerView.ui.menuConditions.toggle(!!elementor.config.document.theme_builder.settings.location);
      behavior.ui.buttonPreview.tipsy('disable').html(jQuery('#tmpl-elementor-theme-builder-button-preview').html()).addClass('elementor-panel-footer-theme-builder-buttons-wrapper elementor-toggle-state');
    }
  }]);
  return ThemeBuilderAddEditorUI;
}($e.modules.hookUI.After);

exports.ThemeBuilderAddEditorUI = ThemeBuilderAddEditorUI;
var _default = ThemeBuilderAddEditorUI;
exports.default = _default;

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/hooks/ui/index.js":
/*!*******************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/hooks/ui/index.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "ThemeBuilderAddEditorUI", {
  enumerable: true,
  get: function get() {
    return _addEditorUi.ThemeBuilderAddEditorUI;
  }
});

_Object$defineProperty(exports, "ThemeBuilderRemoveEditorUI", {
  enumerable: true,
  get: function get() {
    return _removeEditorUi.ThemeBuilderRemoveEditorUI;
  }
});

_Object$defineProperty(exports, "ThemeBuilderToggleMenuConditions", {
  enumerable: true,
  get: function get() {
    return _toggleMenuConditions.ThemeBuilderToggleMenuConditions;
  }
});

_Object$defineProperty(exports, "ThemeBuilderFooterSaverAfterSave", {
  enumerable: true,
  get: function get() {
    return _after.ThemeBuilderFooterSaverAfterSave;
  }
});

var _addEditorUi = __webpack_require__(/*! ./editor/documents/open/add-editor-ui */ "../modules/theme-builder/assets/js/editor/hooks/ui/editor/documents/open/add-editor-ui.js");

var _removeEditorUi = __webpack_require__(/*! ./editor/documents/close/remove-editor-ui */ "../modules/theme-builder/assets/js/editor/hooks/ui/editor/documents/close/remove-editor-ui.js");

var _toggleMenuConditions = __webpack_require__(/*! ./editor/document/elements/settings/toggle-menu-conditions */ "../modules/theme-builder/assets/js/editor/hooks/ui/editor/document/elements/settings/toggle-menu-conditions.js");

var _after = __webpack_require__(/*! ./save/after */ "../modules/theme-builder/assets/js/editor/hooks/ui/save/after.js");

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/hooks/ui/save/after.js":
/*!************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/hooks/ui/save/after.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.ThemeBuilderFooterSaverAfterSave = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var ThemeBuilderFooterSaverAfterSave = /*#__PURE__*/function (_$e$modules$hookUI$Af) {
  (0, _inherits2.default)(ThemeBuilderFooterSaverAfterSave, _$e$modules$hookUI$Af);

  var _super = (0, _createSuper2.default)(ThemeBuilderFooterSaverAfterSave);

  function ThemeBuilderFooterSaverAfterSave() {
    (0, _classCallCheck2.default)(this, ThemeBuilderFooterSaverAfterSave);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ThemeBuilderFooterSaverAfterSave, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/save/save';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'theme-builder-footer-saver-after-save';
    }
  }, {
    key: "getConditions",
    value: function getConditions() {
      return elementor.config.document.support_site_editor;
    }
  }, {
    key: "apply",
    value: function apply(args, result) {
      var status = args.status;

      if (result.statusChanged) {
        this.onPageStatusChange(status);
      }
    }
  }, {
    key: "onPageStatusChange",
    value: function onPageStatusChange(newStatus) {
      if ('publish' !== newStatus) {
        return;
      }

      var options = {
        classes: 'e-theme-builder-save-toaster',
        message: elementor.config.document.panel.messages.publish_notification,
        buttons: [{
          name: 'open_site_editor',
          text: '<i class="eicon-external-link-square"></i><span class="e-theme-builder-toaster-button-text">' + elementorPro.translate('open_site_editor') + '</span>',
          callback: function callback() {
            $e.run('app/open');
          }
        }, {
          name: 'view_live_site',
          text: '<i class="eicon-preview-medium"></i><span class="e-theme-builder-toaster-button-text">' + elementorPro.translate('view_live_site') + '</span>',
          callback: function callback() {
            open(elementor.config.document.urls.permalink);
          }
        }]
      };
      elementor.notifications.showToast(options);
    }
  }]);
  return ThemeBuilderFooterSaverAfterSave;
}($e.modules.hookUI.After);

exports.ThemeBuilderFooterSaverAfterSave = ThemeBuilderFooterSaverAfterSave;

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/module.js":
/*!***********************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/module.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty2 = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty2(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(/*! core-js/modules/es6.regexp.split.js */ "../node_modules/core-js/modules/es6.regexp.split.js");

var _defineProperty = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _get3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/get */ "../node_modules/@babel/runtime-corejs2/helpers/get.js"));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/getPrototypeOf */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _component = _interopRequireDefault(__webpack_require__(/*! ./publish/component */ "../modules/theme-builder/assets/js/editor/publish/component.js"));

var ThemeBuilderModule = /*#__PURE__*/function (_elementorModules$edi) {
  (0, _inherits2.default)(ThemeBuilderModule, _elementorModules$edi);

  var _super = (0, _createSuper2.default)(ThemeBuilderModule);

  function ThemeBuilderModule() {
    (0, _classCallCheck2.default)(this, ThemeBuilderModule);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ThemeBuilderModule, [{
    key: "__construct",
    value: function __construct() {
      var _get2;

      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      (_get2 = (0, _get3.default)((0, _getPrototypeOf2.default)(ThemeBuilderModule.prototype), "__construct", this)).call.apply(_get2, [this].concat(args));

      (0, _defineProperty.default)(elementorPro.config, 'theme_builder', {
        get: function get() {
          elementorCommon.helpers.softDeprecated('theme_builder', '2.9.0', 'elementor.config.document.theme_builder');
          return elementor.config.document.theme_builder;
        }
      });
    }
  }, {
    key: "onElementorLoaded",
    value: function onElementorLoaded() {
      this.component = $e.components.register(new _component.default({
        manager: this
      }));
      elementor.on('document:loaded', this.onDocumentLoaded.bind(this));
      elementor.on('document:unload', this.onDocumentUnloaded.bind(this));
      this.onApplyPreview = this.onApplyPreview.bind(this);
      this.onSectionPreviewSettingsActive = this.onSectionPreviewSettingsActive.bind(this);
    }
  }, {
    key: "onDocumentLoaded",
    value: function onDocumentLoaded(document) {
      if (!document.config.theme_builder) {
        return;
      }

      elementor.getPanelView().on('set:page:page_settings', this.updatePreviewIdOptions);
      elementor.channels.editor.on('elementorThemeBuilder:ApplyPreview', this.onApplyPreview);
      elementor.channels.editor.on('page_settings:preview_settings:activated', this.onSectionPreviewSettingsActive);
    }
  }, {
    key: "onDocumentUnloaded",
    value: function onDocumentUnloaded(document) {
      if (!document.config.theme_builder) {
        return;
      }

      elementor.getPanelView().off('set:page:page_settings', this.updatePreviewIdOptions);
      elementor.channels.editor.off('elementorThemeBuilder:ApplyPreview', this.onApplyPreview);
      elementor.channels.editor.off('page_settings:preview_settings:activated', this.onSectionPreviewSettingsActive);
    }
  }, {
    key: "saveAndReload",
    value: function saveAndReload() {
      $e.run('document/save/auto', {
        force: true,
        onSuccess: function onSuccess() {
          elementor.dynamicTags.cleanCache();
          elementor.reloadPreview();
        }
      });
    }
  }, {
    key: "onApplyPreview",
    value: function onApplyPreview() {
      this.saveAndReload();
    }
  }, {
    key: "onSectionPreviewSettingsActive",
    value: function onSectionPreviewSettingsActive() {
      this.updatePreviewIdOptions(true);
    }
  }, {
    key: "updatePreviewIdOptions",
    value: function updatePreviewIdOptions(render) {
      var previewType = elementor.settings.page.model.get('preview_type');

      if (!previewType) {
        return;
      }

      previewType = previewType.split('/');
      var currentView = elementor.getPanelView().getCurrentPageView(),
          controlModel = currentView.collection.findWhere({
        name: 'preview_id'
      });

      if ('author' === previewType[1]) {
        controlModel.set({
          autocomplete: {
            object: 'author'
          }
        });
      } else if ('taxonomy' === previewType[0]) {
        controlModel.set({
          autocomplete: {
            object: 'tax',
            query: {
              taxonomy: previewType[1]
            }
          }
        });
      } else if ('single' === previewType[0]) {
        controlModel.set({
          autocomplete: {
            object: 'post',
            query: {
              post_type: previewType[1]
            }
          }
        });
      } else {
        controlModel.set({
          autocomplete: {
            object: ''
          }
        });
      }

      if (true === render) {
        // Can be model.
        var controlView = currentView.children.findByModel(controlModel);
        controlView.render();
        controlView.$el.toggle(!!controlModel.get('autocomplete').object);
      }
    }
  }]);
  return ThemeBuilderModule;
}(elementorModules.editor.utils.Module);

exports.default = ThemeBuilderModule;

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/publish/component.js":
/*!**********************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/publish/component.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/get */ "../node_modules/@babel/runtime-corejs2/helpers/get.js"));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/getPrototypeOf */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _content = _interopRequireDefault(__webpack_require__(/*! ./content */ "../modules/theme-builder/assets/js/editor/publish/content.js"));

var _layout = _interopRequireDefault(__webpack_require__(/*! ./layout */ "../modules/theme-builder/assets/js/editor/publish/layout.js"));

var hooks = _interopRequireWildcard(__webpack_require__(/*! ../hooks */ "../modules/theme-builder/assets/js/editor/hooks/index.js"));

var Component = /*#__PURE__*/function (_$e$modules$Component) {
  (0, _inherits2.default)(Component, _$e$modules$Component);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "getNamespace",
    value: function getNamespace() {
      // TODO: should be 'theme-builder/publish'.
      return 'theme-builder-publish';
    }
  }, {
    key: "getModalLayout",
    value: function getModalLayout() {
      return _layout.default;
    }
  }, {
    key: "defaultCommands",
    value: function defaultCommands() {
      var _this = this;

      return {
        next: function next() {
          var tabs = (0, _keys.default)(_this.tabs),
              next = tabs[_this.currentTabIndex + 1];

          if (next) {
            $e.route(_this.getTabRoute(next));
          }
        },
        save: function save() {
          $e.run('document/save/default', {
            force: true
          });

          _this.layout.hideModal();
        },
        'preview-settings': function previewSettings() {
          // TODO: This is function is not part of this component.
          var panel = elementor.getPanelView();
          $e.route('panel/page-settings/settings');

          panel.getCurrentPageView().activateSection('preview_settings')._renderChildren();
        }
      };
    }
  }, {
    key: "defaultHooks",
    value: function defaultHooks() {
      return this.importHooks(hooks);
    }
  }, {
    key: "getTabsWrapperSelector",
    value: function getTabsWrapperSelector() {
      return '#elementor-publish__tabs';
    }
  }, {
    key: "renderTab",
    value: function renderTab(tab) {
      var tabs = this.getTabs(),
          keys = (0, _keys.default)(tabs),
          tabArgs = tabs[tab];
      this.currentTabIndex = keys.indexOf(tab);
      var isLastTab = !keys[this.currentTabIndex + 1];
      this.layout.modalContent.currentView.screen.show(new tabArgs.View(tabArgs.viewOptions));
      this.layout.modal.getElements('next').toggle(!isLastTab);
      this.layout.modal.getElements('publish').toggleClass('elementor-button-success', isLastTab);
    }
  }, {
    key: "activateTab",
    value: function activateTab(tab) {
      $e.routes.saveState(this.getNamespace());
      (0, _get2.default)((0, _getPrototypeOf2.default)(Component.prototype), "activateTab", this).call(this, tab);
    }
  }, {
    key: "open",
    value: function open() {
      (0, _get2.default)((0, _getPrototypeOf2.default)(Component.prototype), "open", this).call(this);

      if (!this.layoutContent) {
        this.layout.showLogo();
        this.layout.modalContent.show(new _content.default({
          component: this
        }));
        this.layoutContent = true;
      }

      return true;
    }
  }]);
  return Component;
}($e.modules.ComponentModalBase);

exports.default = Component;

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/publish/content.js":
/*!********************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/publish/content.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _default = /*#__PURE__*/function (_Marionette$LayoutVie) {
  (0, _inherits2.default)(_default, _Marionette$LayoutVie);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "id",
    value: function id() {
      return 'elementor-publish';
    }
  }, {
    key: "getTemplate",
    value: function getTemplate() {
      return Marionette.TemplateCache.get('#tmpl-elementor-component-publish');
    }
  }, {
    key: "regions",
    value: function regions() {
      return {
        screen: '#elementor-publish__screen'
      };
    }
  }, {
    key: "templateHelpers",
    value: function templateHelpers() {
      return {
        tabs: this.getOption('component').getTabs()
      };
    }
  }]);
  return _default;
}(Marionette.LayoutView);

exports.default = _default;

/***/ }),

/***/ "../modules/theme-builder/assets/js/editor/publish/layout.js":
/*!*******************************************************************!*\
  !*** ../modules/theme-builder/assets/js/editor/publish/layout.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/get */ "../node_modules/@babel/runtime-corejs2/helpers/get.js"));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/getPrototypeOf */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _default = /*#__PURE__*/function (_elementorModules$com) {
  (0, _inherits2.default)(_default, _elementorModules$com);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "getModalOptions",
    value: function getModalOptions() {
      return {
        id: 'elementor-publish__modal',
        hide: {
          onButtonClick: false
        }
      };
    }
  }, {
    key: "getLogoOptions",
    value: function getLogoOptions() {
      return {
        title: elementorPro.translate('publish_settings')
      };
    }
  }, {
    key: "initModal",
    value: function initModal() {
      (0, _get2.default)((0, _getPrototypeOf2.default)(_default.prototype), "initModal", this).call(this);
      this.modal.addButton({
        name: 'publish',
        text: elementorPro.translate('save_and_close'),
        callback: function callback() {
          return $e.run('theme-builder-publish/save');
        }
      });
      this.modal.addButton({
        name: 'next',
        text: elementorPro.translate('next'),
        callback: function callback() {
          return $e.run('theme-builder-publish/next');
        }
      });
      var $publishButton = this.modal.getElements('publish');
      this.modal.getElements('next').addClass('elementor-button-success').add($publishButton).addClass('elementor-button').removeClass('dialog-button');
    }
  }]);
  return _default;
}(elementorModules.common.views.modal.Layout);

exports.default = _default;

/***/ }),

/***/ "../modules/theme-elements/assets/js/editor/comments-skin.js":
/*!*******************************************************************!*\
  !*** ../modules/theme-elements/assets/js/editor/comments-skin.js ***!
  \*******************************************************************/
/***/ ((module) => {

"use strict";


module.exports = function () {
  var self = this;

  self.onPanelShow = function (panel, model) {
    var settingsModel = model.get('settings'); // If no skins - set the skin to `theme_comments`.

    if (!settingsModel.controls._skin.default) {
      settingsModel.set('_skin', 'theme_comments');
    }
  };

  self.init = function () {
    elementor.hooks.addAction('panel/open_editor/widget/post-comments', self.onPanelShow);
  };

  self.init();
};

/***/ }),

/***/ "../modules/theme-elements/assets/js/editor/editor.js":
/*!************************************************************!*\
  !*** ../modules/theme-elements/assets/js/editor/editor.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


module.exports = elementorModules.editor.utils.Module.extend({
  onElementorPreviewLoaded: function onElementorPreviewLoaded() {
    var CommentsSkin = __webpack_require__(/*! ./comments-skin */ "../modules/theme-elements/assets/js/editor/comments-skin.js");

    this.commentsSkin = new CommentsSkin();
  }
});

/***/ }),

/***/ "../modules/video-playlist/assets/js/editor/component.js":
/*!***************************************************************!*\
  !*** ../modules/video-playlist/assets/js/editor/component.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var hooks = _interopRequireWildcard(__webpack_require__(/*! ./hooks/ui */ "../modules/video-playlist/assets/js/editor/hooks/ui/index.js"));

var VideoPlaylistComponent = /*#__PURE__*/function (_$e$modules$Component) {
  (0, _inherits2.default)(VideoPlaylistComponent, _$e$modules$Component);

  var _super = (0, _createSuper2.default)(VideoPlaylistComponent);

  function VideoPlaylistComponent() {
    (0, _classCallCheck2.default)(this, VideoPlaylistComponent);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(VideoPlaylistComponent, [{
    key: "getNamespace",
    value: function getNamespace() {
      return 'video-playlist';
    }
  }, {
    key: "defaultHooks",
    value: function defaultHooks() {
      return this.importHooks(hooks);
    }
  }]);
  return VideoPlaylistComponent;
}($e.modules.ComponentBase);

exports.default = VideoPlaylistComponent;

/***/ }),

/***/ "../modules/video-playlist/assets/js/editor/hooks/ui/document/elements/settings/active-tab.js":
/*!****************************************************************************************************!*\
  !*** ../modules/video-playlist/assets/js/editor/hooks/ui/document/elements/settings/active-tab.js ***!
  \****************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ActiveTab = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

/**
 * Hook fired when template: 'single' page layout changed.
 */
var ActiveTab = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(ActiveTab, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(ActiveTab);

  function ActiveTab() {
    (0, _classCallCheck2.default)(this, ActiveTab);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ActiveTab, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/elements/settings';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'active-tab--document/elements/settings';
    }
  }, {
    key: "getContainerType",
    value: function getContainerType() {
      return 'repeater';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      return args.settings.inner_tab_content_1 || args.settings.inner_tab_content_2;
    }
  }, {
    key: "apply",
    value: function apply(args) {
      if (args.settings.inner_tab_content_1) {
        args.container.view.model.get('editSettings').set('innerActiveIndex', 0);
      } else if (args.settings.inner_tab_content_2) {
        args.container.view.model.get('editSettings').set('innerActiveIndex', 1);
      }
    }
  }]);
  return ActiveTab;
}($e.modules.hookData.After);

exports.ActiveTab = ActiveTab;
var _default = ActiveTab;
exports.default = _default;

/***/ }),

/***/ "../modules/video-playlist/assets/js/editor/hooks/ui/index.js":
/*!********************************************************************!*\
  !*** ../modules/video-playlist/assets/js/editor/hooks/ui/index.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "ActiveTab", {
  enumerable: true,
  get: function get() {
    return _activeTab.ActiveTab;
  }
});

var _activeTab = __webpack_require__(/*! ./document/elements/settings/active-tab */ "../modules/video-playlist/assets/js/editor/hooks/ui/document/elements/settings/active-tab.js");

/***/ }),

/***/ "../modules/video-playlist/assets/js/editor/module.js":
/*!************************************************************!*\
  !*** ../modules/video-playlist/assets/js/editor/module.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/get */ "../node_modules/@babel/runtime-corejs2/helpers/get.js"));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/getPrototypeOf */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _component = _interopRequireDefault(__webpack_require__(/*! ./component */ "../modules/video-playlist/assets/js/editor/component.js"));

var Module = /*#__PURE__*/function (_elementorModules$edi) {
  (0, _inherits2.default)(Module, _elementorModules$edi);

  var _super = (0, _createSuper2.default)(Module);

  function Module() {
    (0, _classCallCheck2.default)(this, Module);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Module, [{
    key: "onInit",
    value:
    /**
     * Init
     */
    function onInit() {
      (0, _get2.default)((0, _getPrototypeOf2.default)(Module.prototype), "onInit", this).call(this);
      $e.components.register(new _component.default());
    }
  }, {
    key: "onElementorLoaded",
    value: function onElementorLoaded() {
      elementor.channels.editor.on('elementorPlaylistWidget:setVideoData', function (e) {
        $e.run('document/elements/settings', {
          container: e.container,
          settings: {
            thumbnail: {
              url: e.currentItem.thumbnail ? e.currentItem.thumbnail.url : ''
            },
            title: e.currentItem.video_title ? e.currentItem.video_title : '',
            duration: e.currentItem.duration ? e.currentItem.duration : ''
          },
          options: {
            external: true
          }
        });
      });
    }
  }]);
  return Module;
}(elementorModules.editor.utils.Module);

exports.default = Module;

/***/ }),

/***/ "../modules/woocommerce/assets/js/editor/component.js":
/*!************************************************************!*\
  !*** ../modules/woocommerce/assets/js/editor/component.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var hooks = _interopRequireWildcard(__webpack_require__(/*! ./hooks/ */ "../modules/woocommerce/assets/js/editor/hooks/index.js"));

var Component = /*#__PURE__*/function (_$e$modules$Component) {
  (0, _inherits2.default)(Component, _$e$modules$Component);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "getNamespace",
    value: function getNamespace() {
      return 'woocommerce';
    }
  }, {
    key: "defaultHooks",
    value: function defaultHooks() {
      return this.importHooks(hooks);
    }
  }]);
  return Component;
}($e.modules.ComponentBase);

exports.default = Component;

/***/ }),

/***/ "../modules/woocommerce/assets/js/editor/hooks/data/create-widget-activate-settings-modal.js":
/*!***************************************************************************************************!*\
  !*** ../modules/woocommerce/assets/js/editor/hooks/data/create-widget-activate-settings-modal.js ***!
  \***************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.WoocommerceCreateWidgetActivateSettingsModal = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var WoocommerceCreateWidgetActivateSettingsModal = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(WoocommerceCreateWidgetActivateSettingsModal, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(WoocommerceCreateWidgetActivateSettingsModal);

  function WoocommerceCreateWidgetActivateSettingsModal() {
    (0, _classCallCheck2.default)(this, WoocommerceCreateWidgetActivateSettingsModal);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(WoocommerceCreateWidgetActivateSettingsModal, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/elements/create';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-woocommerce-create-widget-activate-settings-modal';
    }
  }, {
    key: "getContainerType",
    value: function getContainerType() {
      return 'column';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args, container) {
      return elementorPro.modules.woocommerce.pageSettingsWidgets.hasOwnProperty(container.model.get('widgetType'));
    }
  }, {
    key: "apply",
    value: function apply(args, container) {
      elementorPro.modules.woocommerce.onCreateWidget(container);
    }
  }]);
  return WoocommerceCreateWidgetActivateSettingsModal;
}($e.modules.hookData.After);

exports.WoocommerceCreateWidgetActivateSettingsModal = WoocommerceCreateWidgetActivateSettingsModal;

/***/ }),

/***/ "../modules/woocommerce/assets/js/editor/hooks/data/delete-widget-deactivate-settings-modal.js":
/*!*****************************************************************************************************!*\
  !*** ../modules/woocommerce/assets/js/editor/hooks/data/delete-widget-deactivate-settings-modal.js ***!
  \*****************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.WoocommerceDeleteWidgetDeactivateSettingsModal = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var WoocommerceDeleteWidgetDeactivateSettingsModal = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(WoocommerceDeleteWidgetDeactivateSettingsModal, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(WoocommerceDeleteWidgetDeactivateSettingsModal);

  function WoocommerceDeleteWidgetDeactivateSettingsModal() {
    (0, _classCallCheck2.default)(this, WoocommerceDeleteWidgetDeactivateSettingsModal);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(WoocommerceDeleteWidgetDeactivateSettingsModal, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/elements/delete';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-woocommerce-delete-widget-deactivate-settings-modal';
    }
  }, {
    key: "getContainerType",
    value: function getContainerType() {
      return 'widget';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args, container) {
      return elementorPro.modules.woocommerce.pageSettingsWidgets.hasOwnProperty(container.model.get('widgetType'));
    }
  }, {
    key: "apply",
    value: function apply(args, container) {
      elementorPro.modules.woocommerce.onDeleteWidget(container);
    }
  }]);
  return WoocommerceDeleteWidgetDeactivateSettingsModal;
}($e.modules.hookData.After);

exports.WoocommerceDeleteWidgetDeactivateSettingsModal = WoocommerceDeleteWidgetDeactivateSettingsModal;

/***/ }),

/***/ "../modules/woocommerce/assets/js/editor/hooks/data/index.js":
/*!*******************************************************************!*\
  !*** ../modules/woocommerce/assets/js/editor/hooks/data/index.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "WoocommerceSaveShowModal", {
  enumerable: true,
  get: function get() {
    return _saveShowModal.WoocommerceSaveShowModal;
  }
});

_Object$defineProperty(exports, "WoocommerceCreateWidgetActivateSettingsModal", {
  enumerable: true,
  get: function get() {
    return _createWidgetActivateSettingsModal.WoocommerceCreateWidgetActivateSettingsModal;
  }
});

_Object$defineProperty(exports, "WoocommerceDeleteWidgetDeactivateSettingsModal", {
  enumerable: true,
  get: function get() {
    return _deleteWidgetDeactivateSettingsModal.WoocommerceDeleteWidgetDeactivateSettingsModal;
  }
});

var _saveShowModal = __webpack_require__(/*! ./save-show-modal */ "../modules/woocommerce/assets/js/editor/hooks/data/save-show-modal.js");

var _createWidgetActivateSettingsModal = __webpack_require__(/*! ./create-widget-activate-settings-modal */ "../modules/woocommerce/assets/js/editor/hooks/data/create-widget-activate-settings-modal.js");

var _deleteWidgetDeactivateSettingsModal = __webpack_require__(/*! ./delete-widget-deactivate-settings-modal */ "../modules/woocommerce/assets/js/editor/hooks/data/delete-widget-deactivate-settings-modal.js");

/***/ }),

/***/ "../modules/woocommerce/assets/js/editor/hooks/data/save-show-modal.js":
/*!*****************************************************************************!*\
  !*** ../modules/woocommerce/assets/js/editor/hooks/data/save-show-modal.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.WoocommerceSaveShowModal = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var WoocommerceSaveShowModal = /*#__PURE__*/function (_$e$modules$hookData$) {
  (0, _inherits2.default)(WoocommerceSaveShowModal, _$e$modules$hookData$);

  var _super = (0, _createSuper2.default)(WoocommerceSaveShowModal);

  function WoocommerceSaveShowModal() {
    (0, _classCallCheck2.default)(this, WoocommerceSaveShowModal);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(WoocommerceSaveShowModal, [{
    key: "getCommand",
    value: function getCommand() {
      return 'document/save/save';
    }
  }, {
    key: "getId",
    value: function getId() {
      return 'elementor-pro-woocommerce-save-show-modal';
    }
  }, {
    key: "getConditions",
    value: function getConditions(args) {
      return args.status && -1 !== ['private', 'publish'].indexOf(args.status);
    }
  }, {
    key: "apply",
    value: function apply() {
      elementorPro.modules.woocommerce.onUpdateDocument();
    }
  }]);
  return WoocommerceSaveShowModal;
}($e.modules.hookData.After);

exports.WoocommerceSaveShowModal = WoocommerceSaveShowModal;

/***/ }),

/***/ "../modules/woocommerce/assets/js/editor/hooks/index.js":
/*!**************************************************************!*\
  !*** ../modules/woocommerce/assets/js/editor/hooks/index.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _Object$keys = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

var _data = __webpack_require__(/*! ./data/ */ "../modules/woocommerce/assets/js/editor/hooks/data/index.js");

_Object$keys(_data).forEach(function (key) {
  if (key === "default" || key === "__esModule") return;
  if (key in exports && exports[key] === _data[key]) return;

  _Object$defineProperty(exports, key, {
    enumerable: true,
    get: function get() {
      return _data[key];
    }
  });
});

/***/ }),

/***/ "../modules/woocommerce/assets/js/editor/module.js":
/*!*********************************************************!*\
  !*** ../modules/woocommerce/assets/js/editor/module.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _component = _interopRequireDefault(__webpack_require__(/*! ./component */ "../modules/woocommerce/assets/js/editor/component.js"));

var WoocommerceModule = /*#__PURE__*/function (_elementorModules$edi) {
  (0, _inherits2.default)(WoocommerceModule, _elementorModules$edi);

  var _super = (0, _createSuper2.default)(WoocommerceModule);

  function WoocommerceModule() {
    var _this;

    (0, _classCallCheck2.default)(this, WoocommerceModule);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    _this = _super.call.apply(_super, [this].concat(args));
    _this.pageSettingsWidgets = {
      'woocommerce-checkout-page': {
        headerMessage: __('Want to save this as your checkout page?', 'elementor-pro'),
        message: __('Changes you make here will override your existing WooCommerce settings.', 'elementor-pro'),
        confirmMessage: __('You\'ve updated your checkout page.', 'elementor-pro'),
        cancelMessage: __('<h3>Set up a checkout page</h3><br>Without a checkout page, visitors can\'t complete transactions on your site. To set one up, go to Site Settings.', 'elementor-pro'),
        failedMessage: __('<h3>Sorry, something went wrong.</h3><br>To define a checkout page for your site, head over to Site Settings.', 'elementor-pro'),
        optionName: 'woocommerce_checkout_page_id',
        woocommercePageName: 'checkout'
      },
      'woocommerce-cart': {
        headerMessage: __('Want to save this as your cart page?', 'elementor-pro'),
        message: __('Changes you make here will override your existing WooCommerce settings.', 'elementor-pro'),
        confirmMessage: __('You\'ve updated your cart page.', 'elementor-pro'),
        cancelMessage: __('<h3>Set up a cart page</h3><br>The cart page shows an order summary. To set one up, go to Site Settings.', 'elementor-pro'),
        failedMessage: __('<h3>Sorry, something went wrong.</h3><br>To define a cart page for your site, head over to Site Settings.', 'elementor-pro'),
        optionName: 'woocommerce_cart_page_id',
        woocommercePageName: 'cart'
      },
      'woocommerce-my-account': {
        headerMessage: __('Want to save this as your my account page?', 'elementor-pro'),
        message: __('Changes you make here will override your existing WooCommerce settings.', 'elementor-pro'),
        confirmMessage: __('You\'ve updated your my account page.', 'elementor-pro'),
        cancelMessage: __('<h3>Set up a My Account page</h3><br>Without it, customers can\'t update their billing details, review past orders, etc. To set up My Account, go to Site Settings.', 'elementor-pro'),
        failedMessage: __('<h3>Sorry, something went wrong.</h3><br>To define a my account page for your site, head over to Site Settings.', 'elementor-pro'),
        optionName: 'woocommerce_myaccount_page_id',
        woocommercePageName: 'myaccount'
      }
    };
    _this.createdPageSettingsWidgets = [];
    return _this;
  }

  (0, _createClass2.default)(WoocommerceModule, [{
    key: "onElementorLoaded",
    value: function onElementorLoaded() {
      this.component = $e.components.register(new _component.default({
        manager: this
      }));
    }
  }, {
    key: "onCreateWidget",
    value: function onCreateWidget(container) {
      var widgetType = container.model.get('widgetType');

      if (undefined === this.createdPageSettingsWidgets[widgetType]) {
        this.createdPageSettingsWidgets[widgetType] = 0;
      }

      this.createdPageSettingsWidgets[widgetType]++;
    }
  }, {
    key: "onDeleteWidget",
    value: function onDeleteWidget(container) {
      var widgetType = container.model.get('widgetType');
      this.createdPageSettingsWidgets[widgetType]--;

      if (!this.createdPageSettingsWidgets[widgetType]) {
        delete this.createdPageSettingsWidgets[widgetType];
      }
    }
  }, {
    key: "onUpdateDocument",
    value: function onUpdateDocument() {
      var _this2 = this;

      var saveWoocommercePageSettingKeys = (0, _keys.default)(this.createdPageSettingsWidgets),
          lastWidgetCreated = saveWoocommercePageSettingKeys[saveWoocommercePageSettingKeys.length - 1],
          postId = elementor.documents.getCurrent().id;

      if (1 !== saveWoocommercePageSettingKeys.length) {
        return;
      }

      var lastWidgetCreatedOptions = this.pageSettingsWidgets[lastWidgetCreated]; // Bail if this page is already set as the corresponding WC page.

      if (postId === elementorPro.config.woocommercePages[lastWidgetCreatedOptions.woocommercePageName]) {
        return;
      }

      elementorCommon.dialogsManager.createWidget('confirm', {
        id: 'elementor-woocommerce-save-pages',
        className: 'e-global__confirm-add',
        headerMessage: lastWidgetCreatedOptions.headerMessage,
        message: lastWidgetCreatedOptions.message,
        position: {
          my: 'center center',
          at: 'center center'
        },
        strings: {
          confirm: __('Save', 'elementor-pro'),
          cancel: __('No thanks', 'elementor-pro')
        },
        onConfirm: function onConfirm() {
          return _this2.onConfirmModal(lastWidgetCreatedOptions);
        },
        onCancel: function onCancel() {
          return _this2.onCancelModal(lastWidgetCreatedOptions);
        }
      }).show();
      this.createdPageSettingsWidgets = [];
    }
  }, {
    key: "onConfirmModal",
    value: function onConfirmModal(lastWidgetCreatedOptions) {
      var _this3 = this;

      elementorPro.ajax.addRequest('woocommerce_update_page_option', {
        data: {
          option_name: lastWidgetCreatedOptions.optionName
        },
        success: function success() {
          elementor.notifications.showToast({
            message: lastWidgetCreatedOptions.confirmMessage
          });
        },
        error: function error() {
          return _this3.showPagesSettingsToast(lastWidgetCreatedOptions.failedMessage);
        }
      });
    }
  }, {
    key: "onCancelModal",
    value: function onCancelModal(lastWidgetCreatedOptions) {
      this.showPagesSettingsToast(lastWidgetCreatedOptions.cancelMessage);
    }
  }, {
    key: "showPagesSettingsToast",
    value: function showPagesSettingsToast(message) {
      var buttons = [];
      elementor.notifications.initToast();
      buttons.push({
        name: 'take_me_there',
        text: __('Take me there', 'elementor'),
        callback: this.openWoocommercePagesSettings
      });
      elementor.notifications.showToast({
        message: message,
        buttons: buttons
      });
    }
  }, {
    key: "openWoocommercePagesSettings",
    value: function openWoocommercePagesSettings() {
      var isWPPreviewMode = elementorCommon.elements.$body.hasClass('elementor-editor-preview');

      if (isWPPreviewMode) {
        elementor.exitPreviewMode();
      }

      var isInSettingsPanelActive = 'panel/global/menu' === elementor.documents.currentDocument.config.panel.default_route;

      if (isInSettingsPanelActive) {
        $e.run('panel/global/close');
        return;
      } // TODO: Open Settings Panel for Global/WooCommerce/WooCommerce_Pages When Site Settings is merged with the Checkout Widget.


      $e.run('editor/documents/switch', {
        id: elementor.config.kit_id,
        mode: 'autosave'
      }).then(function () {
        return $e.route('panel/global/settings-woocommerce');
      });
    }
  }]);
  return WoocommerceModule;
}(elementorModules.editor.utils.Module);

module.exports = WoocommerceModule;

/***/ }),

/***/ "../node_modules/core-js/library/fn/array/from.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/fn/array/from.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../../modules/es6.array.from */ "../node_modules/core-js/library/modules/es6.array.from.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Array.from;


/***/ }),

/***/ "../node_modules/core-js/library/fn/array/is-array.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/fn/array/is-array.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.array.is-array */ "../node_modules/core-js/library/modules/es6.array.is-array.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Array.isArray;


/***/ }),

/***/ "../node_modules/core-js/library/fn/json/stringify.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/fn/json/stringify.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js");
var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });
module.exports = function stringify(it) { // eslint-disable-line no-unused-vars
  return $JSON.stringify.apply($JSON, arguments);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/assign.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/assign.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.assign */ "../node_modules/core-js/library/modules/es6.object.assign.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.assign;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/create.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/create.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.create */ "../node_modules/core-js/library/modules/es6.object.create.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function create(P, D) {
  return $Object.create(P, D);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/define-property.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/define-property.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.define-property */ "../node_modules/core-js/library/modules/es6.object.define-property.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function defineProperty(it, key, desc) {
  return $Object.defineProperty(it, key, desc);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/entries.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/entries.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es7.object.entries */ "../node_modules/core-js/library/modules/es7.object.entries.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.entries;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-own-property-descriptor.js":
/*!********************************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-own-property-descriptor.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.get-own-property-descriptor */ "../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function getOwnPropertyDescriptor(it, key) {
  return $Object.getOwnPropertyDescriptor(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-prototype-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-prototype-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.get-prototype-of */ "../node_modules/core-js/library/modules/es6.object.get-prototype-of.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.getPrototypeOf;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/keys.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/keys.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.keys */ "../node_modules/core-js/library/modules/es6.object.keys.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.keys;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/set-prototype-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/set-prototype-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.set-prototype-of */ "../node_modules/core-js/library/modules/es6.object.set-prototype-of.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.setPrototypeOf;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/values.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/values.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es7.object.values */ "../node_modules/core-js/library/modules/es7.object.values.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.values;


/***/ }),

/***/ "../node_modules/core-js/library/fn/parse-int.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/fn/parse-int.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../modules/es6.parse-int */ "../node_modules/core-js/library/modules/es6.parse-int.js");
module.exports = __webpack_require__(/*! ../modules/_core */ "../node_modules/core-js/library/modules/_core.js").parseInt;


/***/ }),

/***/ "../node_modules/core-js/library/fn/promise.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/library/fn/promise.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../modules/es6.object.to-string */ "../node_modules/core-js/library/modules/es6.object.to-string.js");
__webpack_require__(/*! ../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../modules/web.dom.iterable */ "../node_modules/core-js/library/modules/web.dom.iterable.js");
__webpack_require__(/*! ../modules/es6.promise */ "../node_modules/core-js/library/modules/es6.promise.js");
__webpack_require__(/*! ../modules/es7.promise.finally */ "../node_modules/core-js/library/modules/es7.promise.finally.js");
__webpack_require__(/*! ../modules/es7.promise.try */ "../node_modules/core-js/library/modules/es7.promise.try.js");
module.exports = __webpack_require__(/*! ../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Promise;


/***/ }),

/***/ "../node_modules/core-js/library/fn/reflect/construct.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/fn/reflect/construct.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.reflect.construct */ "../node_modules/core-js/library/modules/es6.reflect.construct.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Reflect.construct;


/***/ }),

/***/ "../node_modules/core-js/library/fn/reflect/get.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/library/fn/reflect/get.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.reflect.get */ "../node_modules/core-js/library/modules/es6.reflect.get.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Reflect.get;


/***/ }),

/***/ "../node_modules/core-js/library/fn/symbol/index.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/fn/symbol/index.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.symbol */ "../node_modules/core-js/library/modules/es6.symbol.js");
__webpack_require__(/*! ../../modules/es6.object.to-string */ "../node_modules/core-js/library/modules/es6.object.to-string.js");
__webpack_require__(/*! ../../modules/es7.symbol.async-iterator */ "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js");
__webpack_require__(/*! ../../modules/es7.symbol.observable */ "../node_modules/core-js/library/modules/es7.symbol.observable.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Symbol;


/***/ }),

/***/ "../node_modules/core-js/library/fn/symbol/iterator.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/fn/symbol/iterator.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../../modules/web.dom.iterable */ "../node_modules/core-js/library/modules/web.dom.iterable.js");
module.exports = __webpack_require__(/*! ../../modules/_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js").f('iterator');


/***/ }),

/***/ "../node_modules/core-js/library/fn/weak-map.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/library/fn/weak-map.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../modules/es6.object.to-string */ "../node_modules/core-js/library/modules/es6.object.to-string.js");
__webpack_require__(/*! ../modules/web.dom.iterable */ "../node_modules/core-js/library/modules/web.dom.iterable.js");
__webpack_require__(/*! ../modules/es6.weak-map */ "../node_modules/core-js/library/modules/es6.weak-map.js");
__webpack_require__(/*! ../modules/es7.weak-map.of */ "../node_modules/core-js/library/modules/es7.weak-map.of.js");
__webpack_require__(/*! ../modules/es7.weak-map.from */ "../node_modules/core-js/library/modules/es7.weak-map.from.js");
module.exports = __webpack_require__(/*! ../modules/_core */ "../node_modules/core-js/library/modules/_core.js").WeakMap;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_a-function.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_a-function.js ***!
  \**************************************************************/
/***/ ((module) => {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_add-to-unscopables.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_add-to-unscopables.js ***!
  \**********************************************************************/
/***/ ((module) => {

module.exports = function () { /* empty */ };


/***/ }),

/***/ "../node_modules/core-js/library/modules/_an-instance.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_an-instance.js ***!
  \***************************************************************/
/***/ ((module) => {

module.exports = function (it, Constructor, name, forbiddenField) {
  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
    throw TypeError(name + ': incorrect invocation!');
  } return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_an-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_an-object.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-includes.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-includes.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "../node_modules/core-js/library/modules/_to-absolute-index.js");
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-methods.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-methods.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 0 -> Array#forEach
// 1 -> Array#map
// 2 -> Array#filter
// 3 -> Array#some
// 4 -> Array#every
// 5 -> Array#find
// 6 -> Array#findIndex
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/library/modules/_iobject.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var asc = __webpack_require__(/*! ./_array-species-create */ "../node_modules/core-js/library/modules/_array-species-create.js");
module.exports = function (TYPE, $create) {
  var IS_MAP = TYPE == 1;
  var IS_FILTER = TYPE == 2;
  var IS_SOME = TYPE == 3;
  var IS_EVERY = TYPE == 4;
  var IS_FIND_INDEX = TYPE == 6;
  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
  var create = $create || asc;
  return function ($this, callbackfn, that) {
    var O = toObject($this);
    var self = IObject(O);
    var f = ctx(callbackfn, that, 3);
    var length = toLength(self.length);
    var index = 0;
    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
    var val, res;
    for (;length > index; index++) if (NO_HOLES || index in self) {
      val = self[index];
      res = f(val, index, O);
      if (TYPE) {
        if (IS_MAP) result[index] = res;   // map
        else if (res) switch (TYPE) {
          case 3: return true;             // some
          case 5: return val;              // find
          case 6: return index;            // findIndex
          case 2: result.push(val);        // filter
        } else if (IS_EVERY) return false; // every
      }
    }
    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-species-constructor.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-species-constructor.js ***!
  \*****************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species');

module.exports = function (original) {
  var C;
  if (isArray(original)) {
    C = original.constructor;
    // cross-realm fallback
    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
    if (isObject(C)) {
      C = C[SPECIES];
      if (C === null) C = undefined;
    }
  } return C === undefined ? Array : C;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-species-create.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-species-create.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
var speciesConstructor = __webpack_require__(/*! ./_array-species-constructor */ "../node_modules/core-js/library/modules/_array-species-constructor.js");

module.exports = function (original, length) {
  return new (speciesConstructor(original))(length);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_bind.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_bind.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var invoke = __webpack_require__(/*! ./_invoke */ "../node_modules/core-js/library/modules/_invoke.js");
var arraySlice = [].slice;
var factories = {};

var construct = function (F, len, args) {
  if (!(len in factories)) {
    for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';
    // eslint-disable-next-line no-new-func
    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
  } return factories[len](F, args);
};

module.exports = Function.bind || function bind(that /* , ...args */) {
  var fn = aFunction(this);
  var partArgs = arraySlice.call(arguments, 1);
  var bound = function (/* args... */) {
    var args = partArgs.concat(arraySlice.call(arguments));
    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
  };
  if (isObject(fn.prototype)) bound.prototype = fn.prototype;
  return bound;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_classof.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_classof.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_cof.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_cof.js ***!
  \*******************************************************/
/***/ ((module) => {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_collection-weak.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_collection-weak.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var redefineAll = __webpack_require__(/*! ./_redefine-all */ "../node_modules/core-js/library/modules/_redefine-all.js");
var getWeak = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js").getWeak;
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var anInstance = __webpack_require__(/*! ./_an-instance */ "../node_modules/core-js/library/modules/_an-instance.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");
var createArrayMethod = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/library/modules/_array-methods.js");
var $has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var validate = __webpack_require__(/*! ./_validate-collection */ "../node_modules/core-js/library/modules/_validate-collection.js");
var arrayFind = createArrayMethod(5);
var arrayFindIndex = createArrayMethod(6);
var id = 0;

// fallback for uncaught frozen keys
var uncaughtFrozenStore = function (that) {
  return that._l || (that._l = new UncaughtFrozenStore());
};
var UncaughtFrozenStore = function () {
  this.a = [];
};
var findUncaughtFrozen = function (store, key) {
  return arrayFind(store.a, function (it) {
    return it[0] === key;
  });
};
UncaughtFrozenStore.prototype = {
  get: function (key) {
    var entry = findUncaughtFrozen(this, key);
    if (entry) return entry[1];
  },
  has: function (key) {
    return !!findUncaughtFrozen(this, key);
  },
  set: function (key, value) {
    var entry = findUncaughtFrozen(this, key);
    if (entry) entry[1] = value;
    else this.a.push([key, value]);
  },
  'delete': function (key) {
    var index = arrayFindIndex(this.a, function (it) {
      return it[0] === key;
    });
    if (~index) this.a.splice(index, 1);
    return !!~index;
  }
};

module.exports = {
  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
    var C = wrapper(function (that, iterable) {
      anInstance(that, C, NAME, '_i');
      that._t = NAME;      // collection type
      that._i = id++;      // collection id
      that._l = undefined; // leak store for uncaught frozen objects
      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
    });
    redefineAll(C.prototype, {
      // 23.3.3.2 WeakMap.prototype.delete(key)
      // 23.4.3.3 WeakSet.prototype.delete(value)
      'delete': function (key) {
        if (!isObject(key)) return false;
        var data = getWeak(key);
        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
        return data && $has(data, this._i) && delete data[this._i];
      },
      // 23.3.3.4 WeakMap.prototype.has(key)
      // 23.4.3.4 WeakSet.prototype.has(value)
      has: function has(key) {
        if (!isObject(key)) return false;
        var data = getWeak(key);
        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
        return data && $has(data, this._i);
      }
    });
    return C;
  },
  def: function (that, key, value) {
    var data = getWeak(anObject(key), true);
    if (data === true) uncaughtFrozenStore(that).set(key, value);
    else data[that._i] = value;
    return that;
  },
  ufstore: uncaughtFrozenStore
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_collection.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_collection.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var meta = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var redefineAll = __webpack_require__(/*! ./_redefine-all */ "../node_modules/core-js/library/modules/_redefine-all.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");
var anInstance = __webpack_require__(/*! ./_an-instance */ "../node_modules/core-js/library/modules/_an-instance.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var each = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/library/modules/_array-methods.js")(0);
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");

module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
  var Base = global[NAME];
  var C = Base;
  var ADDER = IS_MAP ? 'set' : 'add';
  var proto = C && C.prototype;
  var O = {};
  if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
    new C().entries().next();
  }))) {
    // create collection constructor
    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
    redefineAll(C.prototype, methods);
    meta.NEED = true;
  } else {
    C = wrapper(function (target, iterable) {
      anInstance(target, C, NAME, '_c');
      target._c = new Base();
      if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);
    });
    each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {
      var IS_ADDER = KEY == 'add' || KEY == 'set';
      if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {
        anInstance(this, C, KEY);
        if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;
        var result = this._c[KEY](a === 0 ? 0 : a, b);
        return IS_ADDER ? this : result;
      });
    });
    IS_WEAK || dP(C.prototype, 'size', {
      get: function () {
        return this._c.size;
      }
    });
  }

  setToStringTag(C, NAME);

  O[NAME] = C;
  $export($export.G + $export.W + $export.F, O);

  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);

  return C;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_core.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_core.js ***!
  \********************************************************/
/***/ ((module) => {

var core = module.exports = { version: '2.6.12' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/library/modules/_create-property.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_create-property.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $defineProperty = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");

module.exports = function (object, index, value) {
  if (index in object) $defineProperty.f(object, index, createDesc(0, value));
  else object[index] = value;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_ctx.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_ctx.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// optional / simple context binding
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_defined.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_defined.js ***!
  \***********************************************************/
/***/ ((module) => {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_descriptors.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_descriptors.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_dom-create.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_dom-create.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_enum-bug-keys.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_enum-bug-keys.js ***!
  \*****************************************************************/
/***/ ((module) => {

// IE 8- don't enum bug keys
module.exports = (
  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');


/***/ }),

/***/ "../node_modules/core-js/library/modules/_enum-keys.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_enum-keys.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// all enumerable object keys, includes symbols
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
module.exports = function (it) {
  var result = getKeys(it);
  var getSymbols = gOPS.f;
  if (getSymbols) {
    var symbols = getSymbols(it);
    var isEnum = pIE.f;
    var i = 0;
    var key;
    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
  } return result;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_export.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_export.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var IS_WRAP = type & $export.W;
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE];
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
  var key, own, out;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    if (own && has(exports, key)) continue;
    // export native or passed
    out = own ? target[key] : source[key];
    // prevent global pollution for namespaces
    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
    // bind timers to global for call from export context
    : IS_BIND && own ? ctx(out, global)
    // wrap global constructors for prevent change them in library
    : IS_WRAP && target[key] == out ? (function (C) {
      var F = function (a, b, c) {
        if (this instanceof C) {
          switch (arguments.length) {
            case 0: return new C();
            case 1: return new C(a);
            case 2: return new C(a, b);
          } return new C(a, b, c);
        } return C.apply(this, arguments);
      };
      F[PROTOTYPE] = C[PROTOTYPE];
      return F;
    // make static versions for prototype methods
    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
    if (IS_PROTO) {
      (exports.virtual || (exports.virtual = {}))[key] = out;
      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
    }
  }
};
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_fails.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_fails.js ***!
  \*********************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_for-of.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_for-of.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var call = __webpack_require__(/*! ./_iter-call */ "../node_modules/core-js/library/modules/_iter-call.js");
var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "../node_modules/core-js/library/modules/_is-array-iter.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "../node_modules/core-js/library/modules/core.get-iterator-method.js");
var BREAK = {};
var RETURN = {};
var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
  var f = ctx(fn, that, entries ? 2 : 1);
  var index = 0;
  var length, step, iterator, result;
  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
  // fast case for arrays with default iterator
  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
    if (result === BREAK || result === RETURN) return result;
  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
    result = call(iterator, f, step.value, entries);
    if (result === BREAK || result === RETURN) return result;
  }
};
exports.BREAK = BREAK;
exports.RETURN = RETURN;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_global.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_global.js ***!
  \**********************************************************/
/***/ ((module) => {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/library/modules/_has.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_has.js ***!
  \*******************************************************/
/***/ ((module) => {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_hide.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_hide.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_html.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_html.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").document;
module.exports = document && document.documentElement;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_ie8-dom-define.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_ie8-dom-define.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_invoke.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_invoke.js ***!
  \**********************************************************/
/***/ ((module) => {

// fast apply, http://jsperf.lnkit.com/fast-apply/5
module.exports = function (fn, args, that) {
  var un = that === undefined;
  switch (args.length) {
    case 0: return un ? fn()
                      : fn.call(that);
    case 1: return un ? fn(args[0])
                      : fn.call(that, args[0]);
    case 2: return un ? fn(args[0], args[1])
                      : fn.call(that, args[0], args[1]);
    case 3: return un ? fn(args[0], args[1], args[2])
                      : fn.call(that, args[0], args[1], args[2]);
    case 4: return un ? fn(args[0], args[1], args[2], args[3])
                      : fn.call(that, args[0], args[1], args[2], args[3]);
  } return fn.apply(that, args);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iobject.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iobject.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-array-iter.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-array-iter.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// check on default Array iterator
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var ArrayProto = Array.prototype;

module.exports = function (it) {
  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-array.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-array.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-object.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-call.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-call.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// call something on iterator step with safe closing on error
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
module.exports = function (iterator, fn, value, entries) {
  try {
    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
  // 7.4.6 IteratorClose(iterator, completion)
  } catch (e) {
    var ret = iterator['return'];
    if (ret !== undefined) anObject(ret.call(iterator));
    throw e;
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-create.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-create.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var descriptor = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var IteratorPrototype = {};

// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
__webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js")(IteratorPrototype, __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator'), function () { return this; });

module.exports = function (Constructor, NAME, next) {
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
  setToStringTag(Constructor, NAME + ' Iterator');
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-define.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-define.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var $iterCreate = __webpack_require__(/*! ./_iter-create */ "../node_modules/core-js/library/modules/_iter-create.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';

var returnThis = function () { return this; };

module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
  $iterCreate(Constructor, NAME, next);
  var getMethod = function (kind) {
    if (!BUGGY && kind in proto) return proto[kind];
    switch (kind) {
      case KEYS: return function keys() { return new Constructor(this, kind); };
      case VALUES: return function values() { return new Constructor(this, kind); };
    } return function entries() { return new Constructor(this, kind); };
  };
  var TAG = NAME + ' Iterator';
  var DEF_VALUES = DEFAULT == VALUES;
  var VALUES_BUG = false;
  var proto = Base.prototype;
  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
  var $default = $native || getMethod(DEFAULT);
  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
  var methods, key, IteratorPrototype;
  // Fix native
  if ($anyNative) {
    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
      // Set @@toStringTag to native iterators
      setToStringTag(IteratorPrototype, TAG, true);
      // fix for some old engines
      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
    }
  }
  // fix Array#{values, @@iterator}.name in V8 / FF
  if (DEF_VALUES && $native && $native.name !== VALUES) {
    VALUES_BUG = true;
    $default = function values() { return $native.call(this); };
  }
  // Define iterator
  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
    hide(proto, ITERATOR, $default);
  }
  // Plug for library
  Iterators[NAME] = $default;
  Iterators[TAG] = returnThis;
  if (DEFAULT) {
    methods = {
      values: DEF_VALUES ? $default : getMethod(VALUES),
      keys: IS_SET ? $default : getMethod(KEYS),
      entries: $entries
    };
    if (FORCED) for (key in methods) {
      if (!(key in proto)) redefine(proto, key, methods[key]);
    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
  }
  return methods;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-detect.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-detect.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var SAFE_CLOSING = false;

try {
  var riter = [7][ITERATOR]();
  riter['return'] = function () { SAFE_CLOSING = true; };
  // eslint-disable-next-line no-throw-literal
  Array.from(riter, function () { throw 2; });
} catch (e) { /* empty */ }

module.exports = function (exec, skipClosing) {
  if (!skipClosing && !SAFE_CLOSING) return false;
  var safe = false;
  try {
    var arr = [7];
    var iter = arr[ITERATOR]();
    iter.next = function () { return { done: safe = true }; };
    arr[ITERATOR] = function () { return iter; };
    exec(arr);
  } catch (e) { /* empty */ }
  return safe;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-step.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-step.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = function (done, value) {
  return { value: value, done: !!done };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iterators.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iterators.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = {};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_library.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_library.js ***!
  \***********************************************************/
/***/ ((module) => {

module.exports = true;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_meta.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_meta.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var META = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js")('meta');
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var setDesc = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var id = 0;
var isExtensible = Object.isExtensible || function () {
  return true;
};
var FREEZE = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return isExtensible(Object.preventExtensions({}));
});
var setMeta = function (it) {
  setDesc(it, META, { value: {
    i: 'O' + ++id, // object ID
    w: {}          // weak collections IDs
  } });
};
var fastKey = function (it, create) {
  // return primitive with prefix
  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return 'F';
    // not necessary to add metadata
    if (!create) return 'E';
    // add missing metadata
    setMeta(it);
  // return object ID
  } return it[META].i;
};
var getWeak = function (it, create) {
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return true;
    // not necessary to add metadata
    if (!create) return false;
    // add missing metadata
    setMeta(it);
  // return hash weak collections IDs
  } return it[META].w;
};
// add metadata on freeze-family methods calling
var onFreeze = function (it) {
  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
  return it;
};
var meta = module.exports = {
  KEY: META,
  NEED: false,
  fastKey: fastKey,
  getWeak: getWeak,
  onFreeze: onFreeze
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_microtask.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_microtask.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var macrotask = __webpack_require__(/*! ./_task */ "../node_modules/core-js/library/modules/_task.js").set;
var Observer = global.MutationObserver || global.WebKitMutationObserver;
var process = global.process;
var Promise = global.Promise;
var isNode = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js")(process) == 'process';

module.exports = function () {
  var head, last, notify;

  var flush = function () {
    var parent, fn;
    if (isNode && (parent = process.domain)) parent.exit();
    while (head) {
      fn = head.fn;
      head = head.next;
      try {
        fn();
      } catch (e) {
        if (head) notify();
        else last = undefined;
        throw e;
      }
    } last = undefined;
    if (parent) parent.enter();
  };

  // Node.js
  if (isNode) {
    notify = function () {
      process.nextTick(flush);
    };
  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
  } else if (Observer && !(global.navigator && global.navigator.standalone)) {
    var toggle = true;
    var node = document.createTextNode('');
    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
    notify = function () {
      node.data = toggle = !toggle;
    };
  // environments with maybe non-completely correct, but existent Promise
  } else if (Promise && Promise.resolve) {
    // Promise.resolve without an argument throws an error in LG WebOS 2
    var promise = Promise.resolve(undefined);
    notify = function () {
      promise.then(flush);
    };
  // for other environments - macrotask based on:
  // - setImmediate
  // - MessageChannel
  // - window.postMessag
  // - onreadystatechange
  // - setTimeout
  } else {
    notify = function () {
      // strange IE + webpack dev server bug - use .call(global)
      macrotask.call(global, flush);
    };
  }

  return function (fn) {
    var task = { fn: fn, next: undefined };
    if (last) last.next = task;
    if (!head) {
      head = task;
      notify();
    } last = task;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_new-promise-capability.js":
/*!**************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_new-promise-capability.js ***!
  \**************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 25.4.1.5 NewPromiseCapability(C)
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");

function PromiseCapability(C) {
  var resolve, reject;
  this.promise = new C(function ($$resolve, $$reject) {
    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
    resolve = $$resolve;
    reject = $$reject;
  });
  this.resolve = aFunction(resolve);
  this.reject = aFunction(reject);
}

module.exports.f = function (C) {
  return new PromiseCapability(C);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-assign.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-assign.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 19.1.2.1 Object.assign(target, source, ...)
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/library/modules/_iobject.js");
var $assign = Object.assign;

// should work with symbols and should have deterministic property order (V8 bug)
module.exports = !$assign || __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  var A = {};
  var B = {};
  // eslint-disable-next-line no-undef
  var S = Symbol();
  var K = 'abcdefghijklmnopqrst';
  A[S] = 7;
  K.split('').forEach(function (k) { B[k] = k; });
  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
  var T = toObject(target);
  var aLen = arguments.length;
  var index = 1;
  var getSymbols = gOPS.f;
  var isEnum = pIE.f;
  while (aLen > index) {
    var S = IObject(arguments[index++]);
    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
    var length = keys.length;
    var j = 0;
    var key;
    while (length > j) {
      key = keys[j++];
      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
    }
  } return T;
} : $assign;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-create.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-create.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var dPs = __webpack_require__(/*! ./_object-dps */ "../node_modules/core-js/library/modules/_object-dps.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');
var Empty = function () { /* empty */ };
var PROTOTYPE = 'prototype';

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = __webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js")('iframe');
  var i = enumBugKeys.length;
  var lt = '<';
  var gt = '>';
  var iframeDocument;
  iframe.style.display = 'none';
  __webpack_require__(/*! ./_html */ "../node_modules/core-js/library/modules/_html.js").appendChild(iframe);
  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
  // createDict = iframe.contentWindow.Object;
  // html.removeChild(iframe);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
  iframeDocument.close();
  createDict = iframeDocument.F;
  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
  return createDict();
};

module.exports = Object.create || function create(O, Properties) {
  var result;
  if (O !== null) {
    Empty[PROTOTYPE] = anObject(O);
    result = new Empty();
    Empty[PROTOTYPE] = null;
    // add "__proto__" for Object.getPrototypeOf polyfill
    result[IE_PROTO] = O;
  } else result = createDict();
  return Properties === undefined ? result : dPs(result, Properties);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-dp.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-dp.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/library/modules/_ie8-dom-define.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var dP = Object.defineProperty;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-dps.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-dps.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");

module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var keys = getKeys(Properties);
  var length = keys.length;
  var i = 0;
  var P;
  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopd.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopd.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/library/modules/_ie8-dom-define.js");
var gOPD = Object.getOwnPropertyDescriptor;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? gOPD : function getOwnPropertyDescriptor(O, P) {
  O = toIObject(O);
  P = toPrimitive(P, true);
  if (IE8_DOM_DEFINE) try {
    return gOPD(O, P);
  } catch (e) { /* empty */ }
  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopn-ext.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopn-ext.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var gOPN = __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js").f;
var toString = {}.toString;

var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
  ? Object.getOwnPropertyNames(window) : [];

var getWindowNames = function (it) {
  try {
    return gOPN(it);
  } catch (e) {
    return windowNames.slice();
  }
};

module.exports.f = function getOwnPropertyNames(it) {
  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopn.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopn.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/library/modules/_object-keys-internal.js");
var hiddenKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js").concat('length', 'prototype');

exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
  return $keys(O, hiddenKeys);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gops.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gops.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports) => {

exports.f = Object.getOwnPropertySymbols;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gpo.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gpo.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');
var ObjectProto = Object.prototype;

module.exports = Object.getPrototypeOf || function (O) {
  O = toObject(O);
  if (has(O, IE_PROTO)) return O[IE_PROTO];
  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
    return O.constructor.prototype;
  } return O instanceof Object ? ObjectProto : null;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-keys-internal.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-keys-internal.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var arrayIndexOf = __webpack_require__(/*! ./_array-includes */ "../node_modules/core-js/library/modules/_array-includes.js")(false);
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');

module.exports = function (object, names) {
  var O = toIObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (has(O, key = names[i++])) {
    ~arrayIndexOf(result, key) || result.push(key);
  }
  return result;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-keys.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-keys.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/library/modules/_object-keys-internal.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js");

module.exports = Object.keys || function keys(O) {
  return $keys(O, enumBugKeys);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-pie.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-pie.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports) => {

exports.f = {}.propertyIsEnumerable;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-sap.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-sap.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// most Object methods by ES6 should accept primitives
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
module.exports = function (KEY, exec) {
  var fn = (core.Object || {})[KEY] || Object[KEY];
  var exp = {};
  exp[KEY] = exec(fn);
  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-to-array.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-to-array.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var isEnum = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js").f;
module.exports = function (isEntries) {
  return function (it) {
    var O = toIObject(it);
    var keys = getKeys(O);
    var length = keys.length;
    var i = 0;
    var result = [];
    var key;
    while (length > i) {
      key = keys[i++];
      if (!DESCRIPTORS || isEnum.call(O, key)) {
        result.push(isEntries ? [key, O[key]] : O[key]);
      }
    }
    return result;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_parse-int.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_parse-int.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var $parseInt = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").parseInt;
var $trim = __webpack_require__(/*! ./_string-trim */ "../node_modules/core-js/library/modules/_string-trim.js").trim;
var ws = __webpack_require__(/*! ./_string-ws */ "../node_modules/core-js/library/modules/_string-ws.js");
var hex = /^[-+]?0[xX]/;

module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {
  var string = $trim(String(str), 3);
  return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
} : $parseInt;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_perform.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_perform.js ***!
  \***********************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return { e: false, v: exec() };
  } catch (e) {
    return { e: true, v: e };
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_promise-resolve.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_promise-resolve.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/library/modules/_new-promise-capability.js");

module.exports = function (C, x) {
  anObject(C);
  if (isObject(x) && x.constructor === C) return x;
  var promiseCapability = newPromiseCapability.f(C);
  var resolve = promiseCapability.resolve;
  resolve(x);
  return promiseCapability.promise;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_property-desc.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_property-desc.js ***!
  \*****************************************************************/
/***/ ((module) => {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_redefine-all.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_redefine-all.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
module.exports = function (target, src, safe) {
  for (var key in src) {
    if (safe && target[key]) target[key] = src[key];
    else hide(target, key, src[key]);
  } return target;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_redefine.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_redefine.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-collection-from.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-collection-from.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://tc39.github.io/proposal-setmap-offrom/
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");

module.exports = function (COLLECTION) {
  $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {
    var mapFn = arguments[1];
    var mapping, A, n, cb;
    aFunction(this);
    mapping = mapFn !== undefined;
    if (mapping) aFunction(mapFn);
    if (source == undefined) return new this();
    A = [];
    if (mapping) {
      n = 0;
      cb = ctx(mapFn, arguments[2], 2);
      forOf(source, false, function (nextItem) {
        A.push(cb(nextItem, n++));
      });
    } else {
      forOf(source, false, A.push, A);
    }
    return new this(A);
  } });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-collection-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-collection-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://tc39.github.io/proposal-setmap-offrom/
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");

module.exports = function (COLLECTION) {
  $export($export.S, COLLECTION, { of: function of() {
    var length = arguments.length;
    var A = new Array(length);
    while (length--) A[length] = arguments[length];
    return new this(A);
  } });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-proto.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-proto.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var check = function (O, proto) {
  anObject(O);
  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
};
module.exports = {
  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
    function (test, buggy, set) {
      try {
        set = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js")(Function.call, __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js").f(Object.prototype, '__proto__').set, 2);
        set(test, []);
        buggy = !(test instanceof Array);
      } catch (e) { buggy = true; }
      return function setPrototypeOf(O, proto) {
        check(O, proto);
        if (buggy) O.__proto__ = proto;
        else set(O, proto);
        return O;
      };
    }({}, false) : undefined),
  check: check
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-species.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-species.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species');

module.exports = function (KEY) {
  var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
    configurable: true,
    get: function () { return this; }
  });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-to-string-tag.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-to-string-tag.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var def = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');

module.exports = function (it, tag, stat) {
  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_shared-key.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_shared-key.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js")('keys');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
module.exports = function (key) {
  return shared[key] || (shared[key] = uid(key));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_shared.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_shared.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js") ? 'pure' : 'global',
  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_species-constructor.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_species-constructor.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.3.20 SpeciesConstructor(O, defaultConstructor)
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species');
module.exports = function (O, D) {
  var C = anObject(O).constructor;
  var S;
  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_string-at.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_string-at.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_string-trim.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_string-trim.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var spaces = __webpack_require__(/*! ./_string-ws */ "../node_modules/core-js/library/modules/_string-ws.js");
var space = '[' + spaces + ']';
var non = '\u200b\u0085';
var ltrim = RegExp('^' + space + space + '*');
var rtrim = RegExp(space + space + '*$');

var exporter = function (KEY, exec, ALIAS) {
  var exp = {};
  var FORCE = fails(function () {
    return !!spaces[KEY]() || non[KEY]() != non;
  });
  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
  if (ALIAS) exp[ALIAS] = fn;
  $export($export.P + $export.F * FORCE, 'String', exp);
};

// 1 -> String#trimLeft
// 2 -> String#trimRight
// 3 -> String#trim
var trim = exporter.trim = function (string, TYPE) {
  string = String(defined(string));
  if (TYPE & 1) string = string.replace(ltrim, '');
  if (TYPE & 2) string = string.replace(rtrim, '');
  return string;
};

module.exports = exporter;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_string-ws.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_string-ws.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
  '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';


/***/ }),

/***/ "../node_modules/core-js/library/modules/_task.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_task.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var invoke = __webpack_require__(/*! ./_invoke */ "../node_modules/core-js/library/modules/_invoke.js");
var html = __webpack_require__(/*! ./_html */ "../node_modules/core-js/library/modules/_html.js");
var cel = __webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var process = global.process;
var setTask = global.setImmediate;
var clearTask = global.clearImmediate;
var MessageChannel = global.MessageChannel;
var Dispatch = global.Dispatch;
var counter = 0;
var queue = {};
var ONREADYSTATECHANGE = 'onreadystatechange';
var defer, channel, port;
var run = function () {
  var id = +this;
  // eslint-disable-next-line no-prototype-builtins
  if (queue.hasOwnProperty(id)) {
    var fn = queue[id];
    delete queue[id];
    fn();
  }
};
var listener = function (event) {
  run.call(event.data);
};
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
if (!setTask || !clearTask) {
  setTask = function setImmediate(fn) {
    var args = [];
    var i = 1;
    while (arguments.length > i) args.push(arguments[i++]);
    queue[++counter] = function () {
      // eslint-disable-next-line no-new-func
      invoke(typeof fn == 'function' ? fn : Function(fn), args);
    };
    defer(counter);
    return counter;
  };
  clearTask = function clearImmediate(id) {
    delete queue[id];
  };
  // Node.js 0.8-
  if (__webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js")(process) == 'process') {
    defer = function (id) {
      process.nextTick(ctx(run, id, 1));
    };
  // Sphere (JS game engine) Dispatch API
  } else if (Dispatch && Dispatch.now) {
    defer = function (id) {
      Dispatch.now(ctx(run, id, 1));
    };
  // Browsers with MessageChannel, includes WebWorkers
  } else if (MessageChannel) {
    channel = new MessageChannel();
    port = channel.port2;
    channel.port1.onmessage = listener;
    defer = ctx(port.postMessage, port, 1);
  // Browsers with postMessage, skip WebWorkers
  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
    defer = function (id) {
      global.postMessage(id + '', '*');
    };
    global.addEventListener('message', listener, false);
  // IE8-
  } else if (ONREADYSTATECHANGE in cel('script')) {
    defer = function (id) {
      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
        html.removeChild(this);
        run.call(id);
      };
    };
  // Rest old browsers
  } else {
    defer = function (id) {
      setTimeout(ctx(run, id, 1), 0);
    };
  }
}
module.exports = {
  set: setTask,
  clear: clearTask
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-absolute-index.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-absolute-index.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-integer.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-integer.js ***!
  \**************************************************************/
/***/ ((module) => {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-iobject.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-iobject.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/library/modules/_iobject.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-length.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-length.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.15 ToLength
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-object.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-primitive.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-primitive.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_uid.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_uid.js ***!
  \*******************************************************/
/***/ ((module) => {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_user-agent.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_user-agent.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var navigator = global.navigator;

module.exports = navigator && navigator.userAgent || '';


/***/ }),

/***/ "../node_modules/core-js/library/modules/_validate-collection.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_validate-collection.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
module.exports = function (it, TYPE) {
  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks-define.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks-define.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var wksExt = __webpack_require__(/*! ./_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js");
var defineProperty = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
module.exports = function (name) {
  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks-ext.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks-ext.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

exports.f = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js");


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var store = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js")('wks');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
var Symbol = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),

/***/ "../node_modules/core-js/library/modules/core.get-iterator-method.js":
/*!***************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/core.get-iterator-method.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/library/modules/_classof.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
module.exports = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js").getIteratorMethod = function (it) {
  if (it != undefined) return it[ITERATOR]
    || it['@@iterator']
    || Iterators[classof(it)];
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.from.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.from.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var call = __webpack_require__(/*! ./_iter-call */ "../node_modules/core-js/library/modules/_iter-call.js");
var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "../node_modules/core-js/library/modules/_is-array-iter.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var createProperty = __webpack_require__(/*! ./_create-property */ "../node_modules/core-js/library/modules/_create-property.js");
var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "../node_modules/core-js/library/modules/core.get-iterator-method.js");

$export($export.S + $export.F * !__webpack_require__(/*! ./_iter-detect */ "../node_modules/core-js/library/modules/_iter-detect.js")(function (iter) { Array.from(iter); }), 'Array', {
  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
    var O = toObject(arrayLike);
    var C = typeof this == 'function' ? this : Array;
    var aLen = arguments.length;
    var mapfn = aLen > 1 ? arguments[1] : undefined;
    var mapping = mapfn !== undefined;
    var index = 0;
    var iterFn = getIterFn(O);
    var length, result, step, iterator;
    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
    // if object isn't iterable or it's array with default iterator - use simple case
    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
      }
    } else {
      length = toLength(O.length);
      for (result = new C(length); length > index; index++) {
        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
      }
    }
    result.length = index;
    return result;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.is-array.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.is-array.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");

$export($export.S, 'Array', { isArray: __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.iterator.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.iterator.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/library/modules/_add-to-unscopables.js");
var step = __webpack_require__(/*! ./_iter-step */ "../node_modules/core-js/library/modules/_iter-step.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");

// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
module.exports = __webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/library/modules/_iter-define.js")(Array, 'Array', function (iterated, kind) {
  this._t = toIObject(iterated); // target
  this._i = 0;                   // next index
  this._k = kind;                // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var kind = this._k;
  var index = this._i++;
  if (!O || index >= O.length) {
    this._t = undefined;
    return step(1);
  }
  if (kind == 'keys') return step(0, index);
  if (kind == 'values') return step(0, O[index]);
  return step(0, [index, O[index]]);
}, 'values');

// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
Iterators.Arguments = Iterators.Array;

addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.assign.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.assign.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.3.1 Object.assign(target, source)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");

$export($export.S + $export.F, 'Object', { assign: __webpack_require__(/*! ./_object-assign */ "../node_modules/core-js/library/modules/_object-assign.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.create.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.create.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
$export($export.S, 'Object', { create: __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.define-property.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.define-property.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js"), 'Object', { defineProperty: __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js":
/*!*****************************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js ***!
  \*****************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var $getOwnPropertyDescriptor = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js").f;

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('getOwnPropertyDescriptor', function () {
  return function getOwnPropertyDescriptor(it, key) {
    return $getOwnPropertyDescriptor(toIObject(it), key);
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.get-prototype-of.js":
/*!******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.get-prototype-of.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 Object.getPrototypeOf(O)
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var $getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('getPrototypeOf', function () {
  return function getPrototypeOf(it) {
    return $getPrototypeOf(toObject(it));
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.keys.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.keys.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 Object.keys(O)
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var $keys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('keys', function () {
  return function keys(it) {
    return $keys(toObject(it));
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.set-prototype-of.js":
/*!******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.set-prototype-of.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.3.19 Object.setPrototypeOf(O, proto)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(/*! ./_set-proto */ "../node_modules/core-js/library/modules/_set-proto.js").set });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.to-string.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.to-string.js ***!
  \***********************************************************************/
/***/ (() => {



/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.parse-int.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.parse-int.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var $parseInt = __webpack_require__(/*! ./_parse-int */ "../node_modules/core-js/library/modules/_parse-int.js");
// 18.2.5 parseInt(string, radix)
$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.promise.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.promise.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/library/modules/_classof.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var anInstance = __webpack_require__(/*! ./_an-instance */ "../node_modules/core-js/library/modules/_an-instance.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");
var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "../node_modules/core-js/library/modules/_species-constructor.js");
var task = __webpack_require__(/*! ./_task */ "../node_modules/core-js/library/modules/_task.js").set;
var microtask = __webpack_require__(/*! ./_microtask */ "../node_modules/core-js/library/modules/_microtask.js")();
var newPromiseCapabilityModule = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/library/modules/_new-promise-capability.js");
var perform = __webpack_require__(/*! ./_perform */ "../node_modules/core-js/library/modules/_perform.js");
var userAgent = __webpack_require__(/*! ./_user-agent */ "../node_modules/core-js/library/modules/_user-agent.js");
var promiseResolve = __webpack_require__(/*! ./_promise-resolve */ "../node_modules/core-js/library/modules/_promise-resolve.js");
var PROMISE = 'Promise';
var TypeError = global.TypeError;
var process = global.process;
var versions = process && process.versions;
var v8 = versions && versions.v8 || '';
var $Promise = global[PROMISE];
var isNode = classof(process) == 'process';
var empty = function () { /* empty */ };
var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;

var USE_NATIVE = !!function () {
  try {
    // correct subclassing with @@species support
    var promise = $Promise.resolve(1);
    var FakePromise = (promise.constructor = {})[__webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species')] = function (exec) {
      exec(empty, empty);
    };
    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
    return (isNode || typeof PromiseRejectionEvent == 'function')
      && promise.then(empty) instanceof FakePromise
      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
      // we can't detect it synchronously, so just check versions
      && v8.indexOf('6.6') !== 0
      && userAgent.indexOf('Chrome/66') === -1;
  } catch (e) { /* empty */ }
}();

// helpers
var isThenable = function (it) {
  var then;
  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
};
var notify = function (promise, isReject) {
  if (promise._n) return;
  promise._n = true;
  var chain = promise._c;
  microtask(function () {
    var value = promise._v;
    var ok = promise._s == 1;
    var i = 0;
    var run = function (reaction) {
      var handler = ok ? reaction.ok : reaction.fail;
      var resolve = reaction.resolve;
      var reject = reaction.reject;
      var domain = reaction.domain;
      var result, then, exited;
      try {
        if (handler) {
          if (!ok) {
            if (promise._h == 2) onHandleUnhandled(promise);
            promise._h = 1;
          }
          if (handler === true) result = value;
          else {
            if (domain) domain.enter();
            result = handler(value); // may throw
            if (domain) {
              domain.exit();
              exited = true;
            }
          }
          if (result === reaction.promise) {
            reject(TypeError('Promise-chain cycle'));
          } else if (then = isThenable(result)) {
            then.call(result, resolve, reject);
          } else resolve(result);
        } else reject(value);
      } catch (e) {
        if (domain && !exited) domain.exit();
        reject(e);
      }
    };
    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
    promise._c = [];
    promise._n = false;
    if (isReject && !promise._h) onUnhandled(promise);
  });
};
var onUnhandled = function (promise) {
  task.call(global, function () {
    var value = promise._v;
    var unhandled = isUnhandled(promise);
    var result, handler, console;
    if (unhandled) {
      result = perform(function () {
        if (isNode) {
          process.emit('unhandledRejection', value, promise);
        } else if (handler = global.onunhandledrejection) {
          handler({ promise: promise, reason: value });
        } else if ((console = global.console) && console.error) {
          console.error('Unhandled promise rejection', value);
        }
      });
      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
    } promise._a = undefined;
    if (unhandled && result.e) throw result.v;
  });
};
var isUnhandled = function (promise) {
  return promise._h !== 1 && (promise._a || promise._c).length === 0;
};
var onHandleUnhandled = function (promise) {
  task.call(global, function () {
    var handler;
    if (isNode) {
      process.emit('rejectionHandled', promise);
    } else if (handler = global.onrejectionhandled) {
      handler({ promise: promise, reason: promise._v });
    }
  });
};
var $reject = function (value) {
  var promise = this;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  promise._v = value;
  promise._s = 2;
  if (!promise._a) promise._a = promise._c.slice();
  notify(promise, true);
};
var $resolve = function (value) {
  var promise = this;
  var then;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  try {
    if (promise === value) throw TypeError("Promise can't be resolved itself");
    if (then = isThenable(value)) {
      microtask(function () {
        var wrapper = { _w: promise, _d: false }; // wrap
        try {
          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
        } catch (e) {
          $reject.call(wrapper, e);
        }
      });
    } else {
      promise._v = value;
      promise._s = 1;
      notify(promise, false);
    }
  } catch (e) {
    $reject.call({ _w: promise, _d: false }, e); // wrap
  }
};

// constructor polyfill
if (!USE_NATIVE) {
  // 25.4.3.1 Promise(executor)
  $Promise = function Promise(executor) {
    anInstance(this, $Promise, PROMISE, '_h');
    aFunction(executor);
    Internal.call(this);
    try {
      executor(ctx($resolve, this, 1), ctx($reject, this, 1));
    } catch (err) {
      $reject.call(this, err);
    }
  };
  // eslint-disable-next-line no-unused-vars
  Internal = function Promise(executor) {
    this._c = [];             // <- awaiting reactions
    this._a = undefined;      // <- checked in isUnhandled reactions
    this._s = 0;              // <- state
    this._d = false;          // <- done
    this._v = undefined;      // <- value
    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
    this._n = false;          // <- notify
  };
  Internal.prototype = __webpack_require__(/*! ./_redefine-all */ "../node_modules/core-js/library/modules/_redefine-all.js")($Promise.prototype, {
    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
    then: function then(onFulfilled, onRejected) {
      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
      reaction.fail = typeof onRejected == 'function' && onRejected;
      reaction.domain = isNode ? process.domain : undefined;
      this._c.push(reaction);
      if (this._a) this._a.push(reaction);
      if (this._s) notify(this, false);
      return reaction.promise;
    },
    // 25.4.5.1 Promise.prototype.catch(onRejected)
    'catch': function (onRejected) {
      return this.then(undefined, onRejected);
    }
  });
  OwnPromiseCapability = function () {
    var promise = new Internal();
    this.promise = promise;
    this.resolve = ctx($resolve, promise, 1);
    this.reject = ctx($reject, promise, 1);
  };
  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
    return C === $Promise || C === Wrapper
      ? new OwnPromiseCapability(C)
      : newGenericPromiseCapability(C);
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
__webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js")($Promise, PROMISE);
__webpack_require__(/*! ./_set-species */ "../node_modules/core-js/library/modules/_set-species.js")(PROMISE);
Wrapper = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js")[PROMISE];

// statics
$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
  // 25.4.4.5 Promise.reject(r)
  reject: function reject(r) {
    var capability = newPromiseCapability(this);
    var $$reject = capability.reject;
    $$reject(r);
    return capability.promise;
  }
});
$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
  // 25.4.4.6 Promise.resolve(x)
  resolve: function resolve(x) {
    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
  }
});
$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(/*! ./_iter-detect */ "../node_modules/core-js/library/modules/_iter-detect.js")(function (iter) {
  $Promise.all(iter)['catch'](empty);
})), PROMISE, {
  // 25.4.4.1 Promise.all(iterable)
  all: function all(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var resolve = capability.resolve;
    var reject = capability.reject;
    var result = perform(function () {
      var values = [];
      var index = 0;
      var remaining = 1;
      forOf(iterable, false, function (promise) {
        var $index = index++;
        var alreadyCalled = false;
        values.push(undefined);
        remaining++;
        C.resolve(promise).then(function (value) {
          if (alreadyCalled) return;
          alreadyCalled = true;
          values[$index] = value;
          --remaining || resolve(values);
        }, reject);
      });
      --remaining || resolve(values);
    });
    if (result.e) reject(result.v);
    return capability.promise;
  },
  // 25.4.4.4 Promise.race(iterable)
  race: function race(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var reject = capability.reject;
    var result = perform(function () {
      forOf(iterable, false, function (promise) {
        C.resolve(promise).then(capability.resolve, reject);
      });
    });
    if (result.e) reject(result.v);
    return capability.promise;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.reflect.construct.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.reflect.construct.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var bind = __webpack_require__(/*! ./_bind */ "../node_modules/core-js/library/modules/_bind.js");
var rConstruct = (__webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Reflect || {}).construct;

// MS Edge supports only 2 arguments and argumentsList argument is optional
// FF Nightly sets third argument as `new.target`, but does not create `this` from it
var NEW_TARGET_BUG = fails(function () {
  function F() { /* empty */ }
  return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);
});
var ARGS_BUG = !fails(function () {
  rConstruct(function () { /* empty */ });
});

$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {
  construct: function construct(Target, args /* , newTarget */) {
    aFunction(Target);
    anObject(args);
    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
    if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);
    if (Target == newTarget) {
      // w/o altered newTarget, optimization for 0-4 arguments
      switch (args.length) {
        case 0: return new Target();
        case 1: return new Target(args[0]);
        case 2: return new Target(args[0], args[1]);
        case 3: return new Target(args[0], args[1], args[2]);
        case 4: return new Target(args[0], args[1], args[2], args[3]);
      }
      // w/o altered newTarget, lot of arguments case
      var $args = [null];
      $args.push.apply($args, args);
      return new (bind.apply(Target, $args))();
    }
    // with altered newTarget, not support built-in constructors
    var proto = newTarget.prototype;
    var instance = create(isObject(proto) ? proto : Object.prototype);
    var result = Function.apply.call(Target, instance, args);
    return isObject(result) ? result : instance;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.reflect.get.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.reflect.get.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.6 Reflect.get(target, propertyKey [, receiver])
var gOPD = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js");
var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");

function get(target, propertyKey /* , receiver */) {
  var receiver = arguments.length < 3 ? target : arguments[2];
  var desc, proto;
  if (anObject(target) === receiver) return target[propertyKey];
  if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')
    ? desc.value
    : desc.get !== undefined
      ? desc.get.call(receiver)
      : undefined;
  if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);
}

$export($export.S, 'Reflect', { get: get });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.string.iterator.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.string.iterator.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $at = __webpack_require__(/*! ./_string-at */ "../node_modules/core-js/library/modules/_string-at.js")(true);

// 21.1.3.27 String.prototype[@@iterator]()
__webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/library/modules/_iter-define.js")(String, 'String', function (iterated) {
  this._t = String(iterated); // target
  this._i = 0;                // next index
// 21.1.5.2.1 %StringIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var index = this._i;
  var point;
  if (index >= O.length) return { value: undefined, done: true };
  point = $at(O, index);
  this._i += point.length;
  return { value: point, done: false };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.symbol.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.symbol.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// ECMAScript 6 symbols shim
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var META = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js").KEY;
var $fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
var wks = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js");
var wksExt = __webpack_require__(/*! ./_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js");
var wksDefine = __webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js");
var enumKeys = __webpack_require__(/*! ./_enum-keys */ "../node_modules/core-js/library/modules/_enum-keys.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var _create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var gOPNExt = __webpack_require__(/*! ./_object-gopn-ext */ "../node_modules/core-js/library/modules/_object-gopn-ext.js");
var $GOPD = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js");
var $GOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var $DP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var $keys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPD = $GOPD.f;
var dP = $DP.f;
var gOPN = gOPNExt.f;
var $Symbol = global.Symbol;
var $JSON = global.JSON;
var _stringify = $JSON && $JSON.stringify;
var PROTOTYPE = 'prototype';
var HIDDEN = wks('_hidden');
var TO_PRIMITIVE = wks('toPrimitive');
var isEnum = {}.propertyIsEnumerable;
var SymbolRegistry = shared('symbol-registry');
var AllSymbols = shared('symbols');
var OPSymbols = shared('op-symbols');
var ObjectProto = Object[PROTOTYPE];
var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
var QObject = global.QObject;
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;

// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
var setSymbolDesc = DESCRIPTORS && $fails(function () {
  return _create(dP({}, 'a', {
    get: function () { return dP(this, 'a', { value: 7 }).a; }
  })).a != 7;
}) ? function (it, key, D) {
  var protoDesc = gOPD(ObjectProto, key);
  if (protoDesc) delete ObjectProto[key];
  dP(it, key, D);
  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
} : dP;

var wrap = function (tag) {
  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
  sym._k = tag;
  return sym;
};

var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
  return typeof it == 'symbol';
} : function (it) {
  return it instanceof $Symbol;
};

var $defineProperty = function defineProperty(it, key, D) {
  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
  anObject(it);
  key = toPrimitive(key, true);
  anObject(D);
  if (has(AllSymbols, key)) {
    if (!D.enumerable) {
      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
      it[HIDDEN][key] = true;
    } else {
      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
      D = _create(D, { enumerable: createDesc(0, false) });
    } return setSymbolDesc(it, key, D);
  } return dP(it, key, D);
};
var $defineProperties = function defineProperties(it, P) {
  anObject(it);
  var keys = enumKeys(P = toIObject(P));
  var i = 0;
  var l = keys.length;
  var key;
  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
  return it;
};
var $create = function create(it, P) {
  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
};
var $propertyIsEnumerable = function propertyIsEnumerable(key) {
  var E = isEnum.call(this, key = toPrimitive(key, true));
  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
  it = toIObject(it);
  key = toPrimitive(key, true);
  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
  var D = gOPD(it, key);
  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
  return D;
};
var $getOwnPropertyNames = function getOwnPropertyNames(it) {
  var names = gOPN(toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
  } return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
  var IS_OP = it === ObjectProto;
  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
  } return result;
};

// 19.4.1.1 Symbol([description])
if (!USE_NATIVE) {
  $Symbol = function Symbol() {
    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
    var $set = function (value) {
      if (this === ObjectProto) $set.call(OPSymbols, value);
      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
      setSymbolDesc(this, tag, createDesc(1, value));
    };
    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
    return wrap(tag);
  };
  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
    return this._k;
  });

  $GOPD.f = $getOwnPropertyDescriptor;
  $DP.f = $defineProperty;
  __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js").f = gOPNExt.f = $getOwnPropertyNames;
  __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js").f = $propertyIsEnumerable;
  $GOPS.f = $getOwnPropertySymbols;

  if (DESCRIPTORS && !__webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js")) {
    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
  }

  wksExt.f = function (name) {
    return wrap(wks(name));
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });

for (var es6Symbols = (
  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);

for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);

$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
  // 19.4.2.1 Symbol.for(key)
  'for': function (key) {
    return has(SymbolRegistry, key += '')
      ? SymbolRegistry[key]
      : SymbolRegistry[key] = $Symbol(key);
  },
  // 19.4.2.5 Symbol.keyFor(sym)
  keyFor: function keyFor(sym) {
    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
  },
  useSetter: function () { setter = true; },
  useSimple: function () { setter = false; }
});

$export($export.S + $export.F * !USE_NATIVE, 'Object', {
  // 19.1.2.2 Object.create(O [, Properties])
  create: $create,
  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
  defineProperty: $defineProperty,
  // 19.1.2.3 Object.defineProperties(O, Properties)
  defineProperties: $defineProperties,
  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
  // 19.1.2.7 Object.getOwnPropertyNames(O)
  getOwnPropertyNames: $getOwnPropertyNames,
  // 19.1.2.8 Object.getOwnPropertySymbols(O)
  getOwnPropertySymbols: $getOwnPropertySymbols
});

// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
// https://bugs.chromium.org/p/v8/issues/detail?id=3443
var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });

$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
    return $GOPS.f(toObject(it));
  }
});

// 24.3.2 JSON.stringify(value [, replacer [, space]])
$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
  var S = $Symbol();
  // MS Edge converts symbol values to JSON as {}
  // WebKit converts symbol values to JSON as null
  // V8 throws on boxed symbols
  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
})), 'JSON', {
  stringify: function stringify(it) {
    var args = [it];
    var i = 1;
    var replacer, $replacer;
    while (arguments.length > i) args.push(arguments[i++]);
    $replacer = replacer = args[1];
    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
    if (!isArray(replacer)) replacer = function (key, value) {
      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
      if (!isSymbol(value)) return value;
    };
    args[1] = replacer;
    return _stringify.apply($JSON, args);
  }
});

// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
// 19.4.3.5 Symbol.prototype[@@toStringTag]
setToStringTag($Symbol, 'Symbol');
// 20.2.1.9 Math[@@toStringTag]
setToStringTag(Math, 'Math', true);
// 24.3.3 JSON[@@toStringTag]
setToStringTag(global.JSON, 'JSON', true);


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.weak-map.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.weak-map.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var each = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/library/modules/_array-methods.js")(0);
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var meta = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js");
var assign = __webpack_require__(/*! ./_object-assign */ "../node_modules/core-js/library/modules/_object-assign.js");
var weak = __webpack_require__(/*! ./_collection-weak */ "../node_modules/core-js/library/modules/_collection-weak.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var validate = __webpack_require__(/*! ./_validate-collection */ "../node_modules/core-js/library/modules/_validate-collection.js");
var NATIVE_WEAK_MAP = __webpack_require__(/*! ./_validate-collection */ "../node_modules/core-js/library/modules/_validate-collection.js");
var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;
var WEAK_MAP = 'WeakMap';
var getWeak = meta.getWeak;
var isExtensible = Object.isExtensible;
var uncaughtFrozenStore = weak.ufstore;
var InternalMap;

var wrapper = function (get) {
  return function WeakMap() {
    return get(this, arguments.length > 0 ? arguments[0] : undefined);
  };
};

var methods = {
  // 23.3.3.3 WeakMap.prototype.get(key)
  get: function get(key) {
    if (isObject(key)) {
      var data = getWeak(key);
      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
      return data ? data[this._i] : undefined;
    }
  },
  // 23.3.3.5 WeakMap.prototype.set(key, value)
  set: function set(key, value) {
    return weak.def(validate(this, WEAK_MAP), key, value);
  }
};

// 23.3 WeakMap Objects
var $WeakMap = module.exports = __webpack_require__(/*! ./_collection */ "../node_modules/core-js/library/modules/_collection.js")(WEAK_MAP, wrapper, methods, weak, true, true);

// IE11 WeakMap frozen keys fix
if (NATIVE_WEAK_MAP && IS_IE11) {
  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
  assign(InternalMap.prototype, methods);
  meta.NEED = true;
  each(['delete', 'has', 'get', 'set'], function (key) {
    var proto = $WeakMap.prototype;
    var method = proto[key];
    redefine(proto, key, function (a, b) {
      // store frozen objects on internal weakmap shim
      if (isObject(a) && !isExtensible(a)) {
        if (!this._f) this._f = new InternalMap();
        var result = this._f[key](a, b);
        return key == 'set' ? this : result;
      // store all the rest on native weakmap
      } return method.call(this, a, b);
    });
  });
}


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.object.entries.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.object.entries.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-object-values-entries
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var $entries = __webpack_require__(/*! ./_object-to-array */ "../node_modules/core-js/library/modules/_object-to-array.js")(true);

$export($export.S, 'Object', {
  entries: function entries(it) {
    return $entries(it);
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.object.values.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.object.values.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-object-values-entries
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var $values = __webpack_require__(/*! ./_object-to-array */ "../node_modules/core-js/library/modules/_object-to-array.js")(false);

$export($export.S, 'Object', {
  values: function values(it) {
    return $values(it);
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.promise.finally.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.promise.finally.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// https://github.com/tc39/proposal-promise-finally

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "../node_modules/core-js/library/modules/_species-constructor.js");
var promiseResolve = __webpack_require__(/*! ./_promise-resolve */ "../node_modules/core-js/library/modules/_promise-resolve.js");

$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
  var C = speciesConstructor(this, core.Promise || global.Promise);
  var isFunction = typeof onFinally == 'function';
  return this.then(
    isFunction ? function (x) {
      return promiseResolve(C, onFinally()).then(function () { return x; });
    } : onFinally,
    isFunction ? function (e) {
      return promiseResolve(C, onFinally()).then(function () { throw e; });
    } : onFinally
  );
} });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.promise.try.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.promise.try.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/tc39/proposal-promise-try
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/library/modules/_new-promise-capability.js");
var perform = __webpack_require__(/*! ./_perform */ "../node_modules/core-js/library/modules/_perform.js");

$export($export.S, 'Promise', { 'try': function (callbackfn) {
  var promiseCapability = newPromiseCapability.f(this);
  var result = perform(callbackfn);
  (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
  return promiseCapability.promise;
} });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js":
/*!****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.symbol.async-iterator.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js")('asyncIterator');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.symbol.observable.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.symbol.observable.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js")('observable');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.weak-map.from.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.weak-map.from.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from
__webpack_require__(/*! ./_set-collection-from */ "../node_modules/core-js/library/modules/_set-collection-from.js")('WeakMap');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.weak-map.of.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.weak-map.of.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of
__webpack_require__(/*! ./_set-collection-of */ "../node_modules/core-js/library/modules/_set-collection-of.js")('WeakMap');


/***/ }),

/***/ "../node_modules/core-js/library/modules/web.dom.iterable.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/web.dom.iterable.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./es6.array.iterator */ "../node_modules/core-js/library/modules/es6.array.iterator.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var TO_STRING_TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');

var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
  'TextTrackList,TouchList').split(',');

for (var i = 0; i < DOMIterables.length; i++) {
  var NAME = DOMIterables[i];
  var Collection = global[NAME];
  var proto = Collection && Collection.prototype;
  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
  Iterators[NAME] = Iterators.Array;
}


/***/ }),

/***/ "../node_modules/core-js/modules/_a-function.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_a-function.js ***!
  \******************************************************/
/***/ ((module) => {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_add-to-unscopables.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/_add-to-unscopables.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 22.1.3.31 Array.prototype[@@unscopables]
var UNSCOPABLES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('unscopables');
var ArrayProto = Array.prototype;
if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js")(ArrayProto, UNSCOPABLES, {});
module.exports = function (key) {
  ArrayProto[UNSCOPABLES][key] = true;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_advance-string-index.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_advance-string-index.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var at = __webpack_require__(/*! ./_string-at */ "../node_modules/core-js/modules/_string-at.js")(true);

 // `AdvanceStringIndex` abstract operation
// https://tc39.github.io/ecma262/#sec-advancestringindex
module.exports = function (S, index, unicode) {
  return index + (unicode ? at(S, index).length : 1);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_an-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_an-object.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-includes.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/_array-includes.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/modules/_to-iobject.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "../node_modules/core-js/modules/_to-absolute-index.js");
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-methods.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_array-methods.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 0 -> Array#forEach
// 1 -> Array#map
// 2 -> Array#filter
// 3 -> Array#some
// 4 -> Array#every
// 5 -> Array#find
// 6 -> Array#findIndex
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js");
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/modules/_iobject.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/modules/_to-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var asc = __webpack_require__(/*! ./_array-species-create */ "../node_modules/core-js/modules/_array-species-create.js");
module.exports = function (TYPE, $create) {
  var IS_MAP = TYPE == 1;
  var IS_FILTER = TYPE == 2;
  var IS_SOME = TYPE == 3;
  var IS_EVERY = TYPE == 4;
  var IS_FIND_INDEX = TYPE == 6;
  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
  var create = $create || asc;
  return function ($this, callbackfn, that) {
    var O = toObject($this);
    var self = IObject(O);
    var f = ctx(callbackfn, that, 3);
    var length = toLength(self.length);
    var index = 0;
    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
    var val, res;
    for (;length > index; index++) if (NO_HOLES || index in self) {
      val = self[index];
      res = f(val, index, O);
      if (TYPE) {
        if (IS_MAP) result[index] = res;   // map
        else if (res) switch (TYPE) {
          case 3: return true;             // some
          case 5: return val;              // find
          case 6: return index;            // findIndex
          case 2: result.push(val);        // filter
        } else if (IS_EVERY) return false; // every
      }
    }
    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-species-constructor.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/modules/_array-species-constructor.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/modules/_is-array.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('species');

module.exports = function (original) {
  var C;
  if (isArray(original)) {
    C = original.constructor;
    // cross-realm fallback
    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
    if (isObject(C)) {
      C = C[SPECIES];
      if (C === null) C = undefined;
    }
  } return C === undefined ? Array : C;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-species-create.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_array-species-create.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
var speciesConstructor = __webpack_require__(/*! ./_array-species-constructor */ "../node_modules/core-js/modules/_array-species-constructor.js");

module.exports = function (original, length) {
  return new (speciesConstructor(original))(length);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_classof.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_classof.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_cof.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_cof.js ***!
  \***********************************************/
/***/ ((module) => {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_core.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_core.js ***!
  \************************************************/
/***/ ((module) => {

var core = module.exports = { version: '2.6.12' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/modules/_ctx.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_ctx.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// optional / simple context binding
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/modules/_a-function.js");
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_defined.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_defined.js ***!
  \***************************************************/
/***/ ((module) => {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_descriptors.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_descriptors.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/modules/_dom-create.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_dom-create.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),

/***/ "../node_modules/core-js/modules/_enum-bug-keys.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_enum-bug-keys.js ***!
  \*********************************************************/
/***/ ((module) => {

// IE 8- don't enum bug keys
module.exports = (
  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');


/***/ }),

/***/ "../node_modules/core-js/modules/_export.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_export.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js");
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
  var key, own, out, exp;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    // export native or passed
    out = (own ? target : source)[key];
    // bind timers to global for call from export context
    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // extend global
    if (target) redefine(target, key, out, type & $export.U);
    // export
    if (exports[key] != out) hide(exports, key, exp);
    if (IS_PROTO && expProto[key] != out) expProto[key] = out;
  }
};
global.core = core;
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),

/***/ "../node_modules/core-js/modules/_fails.js":
/*!*************************************************!*\
  !*** ../node_modules/core-js/modules/_fails.js ***!
  \*************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),

/***/ "../node_modules/core-js/modules/_fix-re-wks.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_fix-re-wks.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

__webpack_require__(/*! ./es6.regexp.exec */ "../node_modules/core-js/modules/es6.regexp.exec.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
var wks = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js");
var regexpExec = __webpack_require__(/*! ./_regexp-exec */ "../node_modules/core-js/modules/_regexp-exec.js");

var SPECIES = wks('species');

var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
  // #replace needs built-in support for named groups.
  // #match works fine because it just return the exec results, even if it has
  // a "grops" property.
  var re = /./;
  re.exec = function () {
    var result = [];
    result.groups = { a: '7' };
    return result;
  };
  return ''.replace(re, '$<a>') !== '7';
});

var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {
  // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
  var re = /(?:)/;
  var originalExec = re.exec;
  re.exec = function () { return originalExec.apply(this, arguments); };
  var result = 'ab'.split(re);
  return result.length === 2 && result[0] === 'a' && result[1] === 'b';
})();

module.exports = function (KEY, length, exec) {
  var SYMBOL = wks(KEY);

  var DELEGATES_TO_SYMBOL = !fails(function () {
    // String methods call symbol-named RegEp methods
    var O = {};
    O[SYMBOL] = function () { return 7; };
    return ''[KEY](O) != 7;
  });

  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {
    // Symbol-named RegExp methods call .exec
    var execCalled = false;
    var re = /a/;
    re.exec = function () { execCalled = true; return null; };
    if (KEY === 'split') {
      // RegExp[@@split] doesn't call the regex's exec method, but first creates
      // a new one. We need to return the patched regex when creating the new one.
      re.constructor = {};
      re.constructor[SPECIES] = function () { return re; };
    }
    re[SYMBOL]('');
    return !execCalled;
  }) : undefined;

  if (
    !DELEGATES_TO_SYMBOL ||
    !DELEGATES_TO_EXEC ||
    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||
    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
  ) {
    var nativeRegExpMethod = /./[SYMBOL];
    var fns = exec(
      defined,
      SYMBOL,
      ''[KEY],
      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {
        if (regexp.exec === regexpExec) {
          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
            // The native String method already delegates to @@method (this
            // polyfilled function), leasing to infinite recursion.
            // We avoid it by directly calling the native @@method method.
            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
          }
          return { done: true, value: nativeMethod.call(str, regexp, arg2) };
        }
        return { done: false };
      }
    );
    var strfn = fns[0];
    var rxfn = fns[1];

    redefine(String.prototype, KEY, strfn);
    hide(RegExp.prototype, SYMBOL, length == 2
      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
      // 21.2.5.11 RegExp.prototype[@@split](string, limit)
      ? function (string, arg) { return rxfn.call(string, this, arg); }
      // 21.2.5.6 RegExp.prototype[@@match](string)
      // 21.2.5.9 RegExp.prototype[@@search](string)
      : function (string) { return rxfn.call(string, this); }
    );
  }
};


/***/ }),

/***/ "../node_modules/core-js/modules/_flags.js":
/*!*************************************************!*\
  !*** ../node_modules/core-js/modules/_flags.js ***!
  \*************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 21.2.5.3 get RegExp.prototype.flags
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
module.exports = function () {
  var that = anObject(this);
  var result = '';
  if (that.global) result += 'g';
  if (that.ignoreCase) result += 'i';
  if (that.multiline) result += 'm';
  if (that.unicode) result += 'u';
  if (that.sticky) result += 'y';
  return result;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_function-to-string.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/_function-to-string.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('native-function-to-string', Function.toString);


/***/ }),

/***/ "../node_modules/core-js/modules/_global.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_global.js ***!
  \**************************************************/
/***/ ((module) => {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/modules/_has.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_has.js ***!
  \***********************************************/
/***/ ((module) => {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_hide.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_hide.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/modules/_property-desc.js");
module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_html.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_html.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").document;
module.exports = document && document.documentElement;


/***/ }),

/***/ "../node_modules/core-js/modules/_ie8-dom-define.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/_ie8-dom-define.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () {
  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/modules/_iobject.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_iobject.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-array.js":
/*!****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-array.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-object.js ***!
  \*****************************************************/
/***/ ((module) => {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-regexp.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-regexp.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.8 IsRegExp(argument)
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
var MATCH = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('match');
module.exports = function (it) {
  var isRegExp;
  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
};


/***/ }),

/***/ "../node_modules/core-js/modules/_iter-create.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_iter-create.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/modules/_object-create.js");
var descriptor = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/modules/_property-desc.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/modules/_set-to-string-tag.js");
var IteratorPrototype = {};

// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
__webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js")(IteratorPrototype, __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('iterator'), function () { return this; });

module.exports = function (Constructor, NAME, next) {
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
  setToStringTag(Constructor, NAME + ' Iterator');
};


/***/ }),

/***/ "../node_modules/core-js/modules/_iter-define.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_iter-define.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/modules/_library.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/modules/_iterators.js");
var $iterCreate = __webpack_require__(/*! ./_iter-create */ "../node_modules/core-js/modules/_iter-create.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/modules/_set-to-string-tag.js");
var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/modules/_object-gpo.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('iterator');
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';

var returnThis = function () { return this; };

module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
  $iterCreate(Constructor, NAME, next);
  var getMethod = function (kind) {
    if (!BUGGY && kind in proto) return proto[kind];
    switch (kind) {
      case KEYS: return function keys() { return new Constructor(this, kind); };
      case VALUES: return function values() { return new Constructor(this, kind); };
    } return function entries() { return new Constructor(this, kind); };
  };
  var TAG = NAME + ' Iterator';
  var DEF_VALUES = DEFAULT == VALUES;
  var VALUES_BUG = false;
  var proto = Base.prototype;
  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
  var $default = $native || getMethod(DEFAULT);
  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
  var methods, key, IteratorPrototype;
  // Fix native
  if ($anyNative) {
    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
      // Set @@toStringTag to native iterators
      setToStringTag(IteratorPrototype, TAG, true);
      // fix for some old engines
      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
    }
  }
  // fix Array#{values, @@iterator}.name in V8 / FF
  if (DEF_VALUES && $native && $native.name !== VALUES) {
    VALUES_BUG = true;
    $default = function values() { return $native.call(this); };
  }
  // Define iterator
  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
    hide(proto, ITERATOR, $default);
  }
  // Plug for library
  Iterators[NAME] = $default;
  Iterators[TAG] = returnThis;
  if (DEFAULT) {
    methods = {
      values: DEF_VALUES ? $default : getMethod(VALUES),
      keys: IS_SET ? $default : getMethod(KEYS),
      entries: $entries
    };
    if (FORCED) for (key in methods) {
      if (!(key in proto)) redefine(proto, key, methods[key]);
    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
  }
  return methods;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_iter-step.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_iter-step.js ***!
  \*****************************************************/
/***/ ((module) => {

module.exports = function (done, value) {
  return { value: value, done: !!done };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_iterators.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_iterators.js ***!
  \*****************************************************/
/***/ ((module) => {

module.exports = {};


/***/ }),

/***/ "../node_modules/core-js/modules/_library.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_library.js ***!
  \***************************************************/
/***/ ((module) => {

module.exports = false;


/***/ }),

/***/ "../node_modules/core-js/modules/_object-create.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_object-create.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var dPs = __webpack_require__(/*! ./_object-dps */ "../node_modules/core-js/modules/_object-dps.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/modules/_enum-bug-keys.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/modules/_shared-key.js")('IE_PROTO');
var Empty = function () { /* empty */ };
var PROTOTYPE = 'prototype';

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = __webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/modules/_dom-create.js")('iframe');
  var i = enumBugKeys.length;
  var lt = '<';
  var gt = '>';
  var iframeDocument;
  iframe.style.display = 'none';
  __webpack_require__(/*! ./_html */ "../node_modules/core-js/modules/_html.js").appendChild(iframe);
  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
  // createDict = iframe.contentWindow.Object;
  // html.removeChild(iframe);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
  iframeDocument.close();
  createDict = iframeDocument.F;
  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
  return createDict();
};

module.exports = Object.create || function create(O, Properties) {
  var result;
  if (O !== null) {
    Empty[PROTOTYPE] = anObject(O);
    result = new Empty();
    Empty[PROTOTYPE] = null;
    // add "__proto__" for Object.getPrototypeOf polyfill
    result[IE_PROTO] = O;
  } else result = createDict();
  return Properties === undefined ? result : dPs(result, Properties);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-dp.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_object-dp.js ***!
  \*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/modules/_ie8-dom-define.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/modules/_to-primitive.js");
var dP = Object.defineProperty;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-dps.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_object-dps.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/modules/_object-keys.js");

module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var keys = getKeys(Properties);
  var length = keys.length;
  var i = 0;
  var P;
  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-gpo.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_object-gpo.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/modules/_to-object.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/modules/_shared-key.js")('IE_PROTO');
var ObjectProto = Object.prototype;

module.exports = Object.getPrototypeOf || function (O) {
  O = toObject(O);
  if (has(O, IE_PROTO)) return O[IE_PROTO];
  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
    return O.constructor.prototype;
  } return O instanceof Object ? ObjectProto : null;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-keys-internal.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_object-keys-internal.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/modules/_to-iobject.js");
var arrayIndexOf = __webpack_require__(/*! ./_array-includes */ "../node_modules/core-js/modules/_array-includes.js")(false);
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/modules/_shared-key.js")('IE_PROTO');

module.exports = function (object, names) {
  var O = toIObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (has(O, key = names[i++])) {
    ~arrayIndexOf(result, key) || result.push(key);
  }
  return result;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-keys.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_object-keys.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/modules/_object-keys-internal.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/modules/_enum-bug-keys.js");

module.exports = Object.keys || function keys(O) {
  return $keys(O, enumBugKeys);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_property-desc.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_property-desc.js ***!
  \*********************************************************/
/***/ ((module) => {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_redefine.js":
/*!****************************************************!*\
  !*** ../node_modules/core-js/modules/_redefine.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var SRC = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js")('src');
var $toString = __webpack_require__(/*! ./_function-to-string */ "../node_modules/core-js/modules/_function-to-string.js");
var TO_STRING = 'toString';
var TPL = ('' + $toString).split(TO_STRING);

__webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js").inspectSource = function (it) {
  return $toString.call(it);
};

(module.exports = function (O, key, val, safe) {
  var isFunction = typeof val == 'function';
  if (isFunction) has(val, 'name') || hide(val, 'name', key);
  if (O[key] === val) return;
  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
  if (O === global) {
    O[key] = val;
  } else if (!safe) {
    delete O[key];
    hide(O, key, val);
  } else if (O[key]) {
    O[key] = val;
  } else {
    hide(O, key, val);
  }
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, TO_STRING, function toString() {
  return typeof this == 'function' && this[SRC] || $toString.call(this);
});


/***/ }),

/***/ "../node_modules/core-js/modules/_regexp-exec-abstract.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_regexp-exec-abstract.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/modules/_classof.js");
var builtinExec = RegExp.prototype.exec;

 // `RegExpExec` abstract operation
// https://tc39.github.io/ecma262/#sec-regexpexec
module.exports = function (R, S) {
  var exec = R.exec;
  if (typeof exec === 'function') {
    var result = exec.call(R, S);
    if (typeof result !== 'object') {
      throw new TypeError('RegExp exec method returned something other than an Object or null');
    }
    return result;
  }
  if (classof(R) !== 'RegExp') {
    throw new TypeError('RegExp#exec called on incompatible receiver');
  }
  return builtinExec.call(R, S);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_regexp-exec.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_regexp-exec.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var regexpFlags = __webpack_require__(/*! ./_flags */ "../node_modules/core-js/modules/_flags.js");

var nativeExec = RegExp.prototype.exec;
// This always refers to the native implementation, because the
// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,
// which loads this file before patching the method.
var nativeReplace = String.prototype.replace;

var patchedExec = nativeExec;

var LAST_INDEX = 'lastIndex';

var UPDATES_LAST_INDEX_WRONG = (function () {
  var re1 = /a/,
      re2 = /b*/g;
  nativeExec.call(re1, 'a');
  nativeExec.call(re2, 'a');
  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;
})();

// nonparticipating capturing group, copied from es5-shim's String#split patch.
var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;

var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;

if (PATCH) {
  patchedExec = function exec(str) {
    var re = this;
    var lastIndex, reCopy, match, i;

    if (NPCG_INCLUDED) {
      reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re));
    }
    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];

    match = nativeExec.call(re, str);

    if (UPDATES_LAST_INDEX_WRONG && match) {
      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;
    }
    if (NPCG_INCLUDED && match && match.length > 1) {
      // Fix browsers whose `exec` methods don't consistently return `undefined`
      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
      // eslint-disable-next-line no-loop-func
      nativeReplace.call(match[0], reCopy, function () {
        for (i = 1; i < arguments.length - 2; i++) {
          if (arguments[i] === undefined) match[i] = undefined;
        }
      });
    }

    return match;
  };
}

module.exports = patchedExec;


/***/ }),

/***/ "../node_modules/core-js/modules/_set-to-string-tag.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/_set-to-string-tag.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var def = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js").f;
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag');

module.exports = function (it, tag, stat) {
  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
};


/***/ }),

/***/ "../node_modules/core-js/modules/_shared-key.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_shared-key.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('keys');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js");
module.exports = function (key) {
  return shared[key] || (shared[key] = uid(key));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_shared.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_shared.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(/*! ./_library */ "../node_modules/core-js/modules/_library.js") ? 'pure' : 'global',
  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});


/***/ }),

/***/ "../node_modules/core-js/modules/_species-constructor.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/modules/_species-constructor.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.3.20 SpeciesConstructor(O, defaultConstructor)
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/modules/_a-function.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('species');
module.exports = function (O, D) {
  var C = anObject(O).constructor;
  var S;
  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_strict-method.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_strict-method.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js");

module.exports = function (method, arg) {
  return !!method && fails(function () {
    // eslint-disable-next-line no-useless-call
    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);
  });
};


/***/ }),

/***/ "../node_modules/core-js/modules/_string-at.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_string-at.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-absolute-index.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/_to-absolute-index.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-integer.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_to-integer.js ***!
  \******************************************************/
/***/ ((module) => {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-iobject.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_to-iobject.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/modules/_iobject.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-length.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_to-length.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.15 ToLength
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_to-object.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-primitive.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/modules/_to-primitive.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),

/***/ "../node_modules/core-js/modules/_uid.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_uid.js ***!
  \***********************************************/
/***/ ((module) => {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_wks.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_wks.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var store = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('wks');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js");
var Symbol = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.filter.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.filter.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $filter = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(2);

$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "../node_modules/core-js/modules/_strict-method.js")([].filter, true), 'Array', {
  // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
  filter: function filter(callbackfn /* , thisArg */) {
    return $filter(this, callbackfn, arguments[1]);
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.find.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.find.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $find = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(5);
var KEY = 'find';
var forced = true;
// Shouldn't skip holes
if (KEY in []) Array(1)[KEY](function () { forced = false; });
$export($export.P + $export.F * forced, 'Array', {
  find: function find(callbackfn /* , that = undefined */) {
    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  }
});
__webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/modules/_add-to-unscopables.js")(KEY);


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.iterator.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.iterator.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/modules/_add-to-unscopables.js");
var step = __webpack_require__(/*! ./_iter-step */ "../node_modules/core-js/modules/_iter-step.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/modules/_iterators.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/modules/_to-iobject.js");

// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
module.exports = __webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/modules/_iter-define.js")(Array, 'Array', function (iterated, kind) {
  this._t = toIObject(iterated); // target
  this._i = 0;                   // next index
  this._k = kind;                // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var kind = this._k;
  var index = this._i++;
  if (!O || index >= O.length) {
    this._t = undefined;
    return step(1);
  }
  if (kind == 'keys') return step(0, index);
  if (kind == 'values') return step(0, O[index]);
  return step(0, [index, O[index]]);
}, 'values');

// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
Iterators.Arguments = Iterators.Array;

addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.map.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.map.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $map = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(1);

$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "../node_modules/core-js/modules/_strict-method.js")([].map, true), 'Array', {
  // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
  map: function map(callbackfn /* , thisArg */) {
    return $map(this, callbackfn, arguments[1]);
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.function.name.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.function.name.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js").f;
var FProto = Function.prototype;
var nameRE = /^\s*function ([^ (]*)/;
var NAME = 'name';

// 19.2.4.2 name
NAME in FProto || __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") && dP(FProto, NAME, {
  configurable: true,
  get: function () {
    try {
      return ('' + this).match(nameRE)[1];
    } catch (e) {
      return '';
    }
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.object.to-string.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.object.to-string.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 19.1.3.6 Object.prototype.toString()
var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/modules/_classof.js");
var test = {};
test[__webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag')] = 'z';
if (test + '' != '[object z]') {
  __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js")(Object.prototype, 'toString', function toString() {
    return '[object ' + classof(this) + ']';
  }, true);
}


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.exec.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.exec.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var regexpExec = __webpack_require__(/*! ./_regexp-exec */ "../node_modules/core-js/modules/_regexp-exec.js");
__webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js")({
  target: 'RegExp',
  proto: true,
  forced: regexpExec !== /./.exec
}, {
  exec: regexpExec
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.match.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.match.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var advanceStringIndex = __webpack_require__(/*! ./_advance-string-index */ "../node_modules/core-js/modules/_advance-string-index.js");
var regExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ "../node_modules/core-js/modules/_regexp-exec-abstract.js");

// @@match logic
__webpack_require__(/*! ./_fix-re-wks */ "../node_modules/core-js/modules/_fix-re-wks.js")('match', 1, function (defined, MATCH, $match, maybeCallNative) {
  return [
    // `String.prototype.match` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.match
    function match(regexp) {
      var O = defined(this);
      var fn = regexp == undefined ? undefined : regexp[MATCH];
      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
    },
    // `RegExp.prototype[@@match]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match
    function (regexp) {
      var res = maybeCallNative($match, regexp, this);
      if (res.done) return res.value;
      var rx = anObject(regexp);
      var S = String(this);
      if (!rx.global) return regExpExec(rx, S);
      var fullUnicode = rx.unicode;
      rx.lastIndex = 0;
      var A = [];
      var n = 0;
      var result;
      while ((result = regExpExec(rx, S)) !== null) {
        var matchStr = String(result[0]);
        A[n] = matchStr;
        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
        n++;
      }
      return n === 0 ? null : A;
    }
  ];
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.replace.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.replace.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/modules/_to-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var advanceStringIndex = __webpack_require__(/*! ./_advance-string-index */ "../node_modules/core-js/modules/_advance-string-index.js");
var regExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ "../node_modules/core-js/modules/_regexp-exec-abstract.js");
var max = Math.max;
var min = Math.min;
var floor = Math.floor;
var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g;
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g;

var maybeToString = function (it) {
  return it === undefined ? it : String(it);
};

// @@replace logic
__webpack_require__(/*! ./_fix-re-wks */ "../node_modules/core-js/modules/_fix-re-wks.js")('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {
  return [
    // `String.prototype.replace` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.replace
    function replace(searchValue, replaceValue) {
      var O = defined(this);
      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];
      return fn !== undefined
        ? fn.call(searchValue, O, replaceValue)
        : $replace.call(String(O), searchValue, replaceValue);
    },
    // `RegExp.prototype[@@replace]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
    function (regexp, replaceValue) {
      var res = maybeCallNative($replace, regexp, this, replaceValue);
      if (res.done) return res.value;

      var rx = anObject(regexp);
      var S = String(this);
      var functionalReplace = typeof replaceValue === 'function';
      if (!functionalReplace) replaceValue = String(replaceValue);
      var global = rx.global;
      if (global) {
        var fullUnicode = rx.unicode;
        rx.lastIndex = 0;
      }
      var results = [];
      while (true) {
        var result = regExpExec(rx, S);
        if (result === null) break;
        results.push(result);
        if (!global) break;
        var matchStr = String(result[0]);
        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
      }
      var accumulatedResult = '';
      var nextSourcePosition = 0;
      for (var i = 0; i < results.length; i++) {
        result = results[i];
        var matched = String(result[0]);
        var position = max(min(toInteger(result.index), S.length), 0);
        var captures = [];
        // NOTE: This is equivalent to
        //   captures = result.slice(1).map(maybeToString)
        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
        // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
        var namedCaptures = result.groups;
        if (functionalReplace) {
          var replacerArgs = [matched].concat(captures, position, S);
          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
          var replacement = String(replaceValue.apply(undefined, replacerArgs));
        } else {
          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
        }
        if (position >= nextSourcePosition) {
          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
          nextSourcePosition = position + matched.length;
        }
      }
      return accumulatedResult + S.slice(nextSourcePosition);
    }
  ];

    // https://tc39.github.io/ecma262/#sec-getsubstitution
  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {
    var tailPos = position + matched.length;
    var m = captures.length;
    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
    if (namedCaptures !== undefined) {
      namedCaptures = toObject(namedCaptures);
      symbols = SUBSTITUTION_SYMBOLS;
    }
    return $replace.call(replacement, symbols, function (match, ch) {
      var capture;
      switch (ch.charAt(0)) {
        case '$': return '$';
        case '&': return matched;
        case '`': return str.slice(0, position);
        case "'": return str.slice(tailPos);
        case '<':
          capture = namedCaptures[ch.slice(1, -1)];
          break;
        default: // \d\d?
          var n = +ch;
          if (n === 0) return match;
          if (n > m) {
            var f = floor(n / 10);
            if (f === 0) return match;
            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
            return match;
          }
          capture = captures[n - 1];
      }
      return capture === undefined ? '' : capture;
    });
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.split.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.split.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var isRegExp = __webpack_require__(/*! ./_is-regexp */ "../node_modules/core-js/modules/_is-regexp.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "../node_modules/core-js/modules/_species-constructor.js");
var advanceStringIndex = __webpack_require__(/*! ./_advance-string-index */ "../node_modules/core-js/modules/_advance-string-index.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var callRegExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ "../node_modules/core-js/modules/_regexp-exec-abstract.js");
var regexpExec = __webpack_require__(/*! ./_regexp-exec */ "../node_modules/core-js/modules/_regexp-exec.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js");
var $min = Math.min;
var $push = [].push;
var $SPLIT = 'split';
var LENGTH = 'length';
var LAST_INDEX = 'lastIndex';
var MAX_UINT32 = 0xffffffff;

// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError
var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });

// @@split logic
__webpack_require__(/*! ./_fix-re-wks */ "../node_modules/core-js/modules/_fix-re-wks.js")('split', 2, function (defined, SPLIT, $split, maybeCallNative) {
  var internalSplit;
  if (
    'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
    'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
    'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||
    '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||
    '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
    ''[$SPLIT](/.?/)[LENGTH]
  ) {
    // based on es5-shim implementation, need to rework it
    internalSplit = function (separator, limit) {
      var string = String(this);
      if (separator === undefined && limit === 0) return [];
      // If `separator` is not a regex, use native split
      if (!isRegExp(separator)) return $split.call(string, separator, limit);
      var output = [];
      var flags = (separator.ignoreCase ? 'i' : '') +
                  (separator.multiline ? 'm' : '') +
                  (separator.unicode ? 'u' : '') +
                  (separator.sticky ? 'y' : '');
      var lastLastIndex = 0;
      var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;
      // Make `global` and avoid `lastIndex` issues by working with a copy
      var separatorCopy = new RegExp(separator.source, flags + 'g');
      var match, lastIndex, lastLength;
      while (match = regexpExec.call(separatorCopy, string)) {
        lastIndex = separatorCopy[LAST_INDEX];
        if (lastIndex > lastLastIndex) {
          output.push(string.slice(lastLastIndex, match.index));
          if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));
          lastLength = match[0][LENGTH];
          lastLastIndex = lastIndex;
          if (output[LENGTH] >= splitLimit) break;
        }
        if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop
      }
      if (lastLastIndex === string[LENGTH]) {
        if (lastLength || !separatorCopy.test('')) output.push('');
      } else output.push(string.slice(lastLastIndex));
      return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
    };
  // Chakra, V8
  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {
    internalSplit = function (separator, limit) {
      return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);
    };
  } else {
    internalSplit = $split;
  }

  return [
    // `String.prototype.split` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.split
    function split(separator, limit) {
      var O = defined(this);
      var splitter = separator == undefined ? undefined : separator[SPLIT];
      return splitter !== undefined
        ? splitter.call(separator, O, limit)
        : internalSplit.call(String(O), separator, limit);
    },
    // `RegExp.prototype[@@split]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split
    //
    // NOTE: This cannot be properly polyfilled in engines that don't support
    // the 'y' flag.
    function (regexp, limit) {
      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);
      if (res.done) return res.value;

      var rx = anObject(regexp);
      var S = String(this);
      var C = speciesConstructor(rx, RegExp);

      var unicodeMatching = rx.unicode;
      var flags = (rx.ignoreCase ? 'i' : '') +
                  (rx.multiline ? 'm' : '') +
                  (rx.unicode ? 'u' : '') +
                  (SUPPORTS_Y ? 'y' : 'g');

      // ^(? + rx + ) is needed, in combination with some S slicing, to
      // simulate the 'y' flag.
      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);
      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
      if (lim === 0) return [];
      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
      var p = 0;
      var q = 0;
      var A = [];
      while (q < S.length) {
        splitter.lastIndex = SUPPORTS_Y ? q : 0;
        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));
        var e;
        if (
          z === null ||
          (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p
        ) {
          q = advanceStringIndex(S, q, unicodeMatching);
        } else {
          A.push(S.slice(p, q));
          if (A.length === lim) return A;
          for (var i = 1; i <= z.length - 1; i++) {
            A.push(z[i]);
            if (A.length === lim) return A;
          }
          q = p = e;
        }
      }
      A.push(S.slice(p));
      return A;
    }
  ];
});


/***/ }),

/***/ "../node_modules/core-js/modules/es7.array.includes.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/es7.array.includes.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/tc39/Array.prototype.includes
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $includes = __webpack_require__(/*! ./_array-includes */ "../node_modules/core-js/modules/_array-includes.js")(true);

$export($export.P, 'Array', {
  includes: function includes(el /* , fromIndex = 0 */) {
    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
  }
});

__webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/modules/_add-to-unscopables.js")('includes');


/***/ }),

/***/ "../node_modules/core-js/modules/web.dom.iterable.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/web.dom.iterable.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $iterators = __webpack_require__(/*! ./es6.array.iterator */ "../node_modules/core-js/modules/es6.array.iterator.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/modules/_object-keys.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/modules/_iterators.js");
var wks = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js");
var ITERATOR = wks('iterator');
var TO_STRING_TAG = wks('toStringTag');
var ArrayValues = Iterators.Array;

var DOMIterables = {
  CSSRuleList: true, // TODO: Not spec compliant, should be false.
  CSSStyleDeclaration: false,
  CSSValueList: false,
  ClientRectList: false,
  DOMRectList: false,
  DOMStringList: false,
  DOMTokenList: true,
  DataTransferItemList: false,
  FileList: false,
  HTMLAllCollection: false,
  HTMLCollection: false,
  HTMLFormElement: false,
  HTMLSelectElement: false,
  MediaList: true, // TODO: Not spec compliant, should be false.
  MimeTypeArray: false,
  NamedNodeMap: false,
  NodeList: true,
  PaintRequestList: false,
  Plugin: false,
  PluginArray: false,
  SVGLengthList: false,
  SVGNumberList: false,
  SVGPathSegList: false,
  SVGPointList: false,
  SVGStringList: false,
  SVGTransformList: false,
  SourceBufferList: false,
  StyleSheetList: true, // TODO: Not spec compliant, should be false.
  TextTrackCueList: false,
  TextTrackList: false,
  TouchList: false
};

for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
  var NAME = collections[i];
  var explicit = DOMIterables[NAME];
  var Collection = global[NAME];
  var proto = Collection && Collection.prototype;
  var key;
  if (proto) {
    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
    Iterators[NAME] = ArrayValues;
    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);
  }
}


/***/ }),

/***/ "../node_modules/regenerator-runtime/runtime.js":
/*!******************************************************!*\
  !*** ../node_modules/regenerator-runtime/runtime.js ***!
  \******************************************************/
/***/ ((module) => {

/**
 * Copyright (c) 2014-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

var runtime = (function (exports) {
  "use strict";

  var Op = Object.prototype;
  var hasOwn = Op.hasOwnProperty;
  var undefined; // More compressible than void 0.
  var $Symbol = typeof Symbol === "function" ? Symbol : {};
  var iteratorSymbol = $Symbol.iterator || "@@iterator";
  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";

  function define(obj, key, value) {
    Object.defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
    return obj[key];
  }
  try {
    // IE 8 has a broken Object.defineProperty that only works on DOM objects.
    define({}, "");
  } catch (err) {
    define = function(obj, key, value) {
      return obj[key] = value;
    };
  }

  function wrap(innerFn, outerFn, self, tryLocsList) {
    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
    var generator = Object.create(protoGenerator.prototype);
    var context = new Context(tryLocsList || []);

    // The ._invoke method unifies the implementations of the .next,
    // .throw, and .return methods.
    generator._invoke = makeInvokeMethod(innerFn, self, context);

    return generator;
  }
  exports.wrap = wrap;

  // Try/catch helper to minimize deoptimizations. Returns a completion
  // record like context.tryEntries[i].completion. This interface could
  // have been (and was previously) designed to take a closure to be
  // invoked without arguments, but in all the cases we care about we
  // already have an existing method we want to call, so there's no need
  // to create a new function object. We can even get away with assuming
  // the method takes exactly one argument, since that happens to be true
  // in every case, so we don't have to touch the arguments object. The
  // only additional allocation required is the completion record, which
  // has a stable shape and so hopefully should be cheap to allocate.
  function tryCatch(fn, obj, arg) {
    try {
      return { type: "normal", arg: fn.call(obj, arg) };
    } catch (err) {
      return { type: "throw", arg: err };
    }
  }

  var GenStateSuspendedStart = "suspendedStart";
  var GenStateSuspendedYield = "suspendedYield";
  var GenStateExecuting = "executing";
  var GenStateCompleted = "completed";

  // Returning this object from the innerFn has the same effect as
  // breaking out of the dispatch switch statement.
  var ContinueSentinel = {};

  // Dummy constructor functions that we use as the .constructor and
  // .constructor.prototype properties for functions that return Generator
  // objects. For full spec compliance, you may wish to configure your
  // minifier not to mangle the names of these two functions.
  function Generator() {}
  function GeneratorFunction() {}
  function GeneratorFunctionPrototype() {}

  // This is a polyfill for %IteratorPrototype% for environments that
  // don't natively support it.
  var IteratorPrototype = {};
  IteratorPrototype[iteratorSymbol] = function () {
    return this;
  };

  var getProto = Object.getPrototypeOf;
  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
  if (NativeIteratorPrototype &&
      NativeIteratorPrototype !== Op &&
      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
    // This environment has a native %IteratorPrototype%; use it instead
    // of the polyfill.
    IteratorPrototype = NativeIteratorPrototype;
  }

  var Gp = GeneratorFunctionPrototype.prototype =
    Generator.prototype = Object.create(IteratorPrototype);
  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
  GeneratorFunctionPrototype.constructor = GeneratorFunction;
  GeneratorFunction.displayName = define(
    GeneratorFunctionPrototype,
    toStringTagSymbol,
    "GeneratorFunction"
  );

  // Helper for defining the .next, .throw, and .return methods of the
  // Iterator interface in terms of a single ._invoke method.
  function defineIteratorMethods(prototype) {
    ["next", "throw", "return"].forEach(function(method) {
      define(prototype, method, function(arg) {
        return this._invoke(method, arg);
      });
    });
  }

  exports.isGeneratorFunction = function(genFun) {
    var ctor = typeof genFun === "function" && genFun.constructor;
    return ctor
      ? ctor === GeneratorFunction ||
        // For the native GeneratorFunction constructor, the best we can
        // do is to check its .name property.
        (ctor.displayName || ctor.name) === "GeneratorFunction"
      : false;
  };

  exports.mark = function(genFun) {
    if (Object.setPrototypeOf) {
      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
    } else {
      genFun.__proto__ = GeneratorFunctionPrototype;
      define(genFun, toStringTagSymbol, "GeneratorFunction");
    }
    genFun.prototype = Object.create(Gp);
    return genFun;
  };

  // Within the body of any async function, `await x` is transformed to
  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
  // `hasOwn.call(value, "__await")` to determine if the yielded value is
  // meant to be awaited.
  exports.awrap = function(arg) {
    return { __await: arg };
  };

  function AsyncIterator(generator, PromiseImpl) {
    function invoke(method, arg, resolve, reject) {
      var record = tryCatch(generator[method], generator, arg);
      if (record.type === "throw") {
        reject(record.arg);
      } else {
        var result = record.arg;
        var value = result.value;
        if (value &&
            typeof value === "object" &&
            hasOwn.call(value, "__await")) {
          return PromiseImpl.resolve(value.__await).then(function(value) {
            invoke("next", value, resolve, reject);
          }, function(err) {
            invoke("throw", err, resolve, reject);
          });
        }

        return PromiseImpl.resolve(value).then(function(unwrapped) {
          // When a yielded Promise is resolved, its final value becomes
          // the .value of the Promise<{value,done}> result for the
          // current iteration.
          result.value = unwrapped;
          resolve(result);
        }, function(error) {
          // If a rejected Promise was yielded, throw the rejection back
          // into the async generator function so it can be handled there.
          return invoke("throw", error, resolve, reject);
        });
      }
    }

    var previousPromise;

    function enqueue(method, arg) {
      function callInvokeWithMethodAndArg() {
        return new PromiseImpl(function(resolve, reject) {
          invoke(method, arg, resolve, reject);
        });
      }

      return previousPromise =
        // If enqueue has been called before, then we want to wait until
        // all previous Promises have been resolved before calling invoke,
        // so that results are always delivered in the correct order. If
        // enqueue has not been called before, then it is important to
        // call invoke immediately, without waiting on a callback to fire,
        // so that the async generator function has the opportunity to do
        // any necessary setup in a predictable way. This predictability
        // is why the Promise constructor synchronously invokes its
        // executor callback, and why async functions synchronously
        // execute code before the first await. Since we implement simple
        // async functions in terms of async generators, it is especially
        // important to get this right, even though it requires care.
        previousPromise ? previousPromise.then(
          callInvokeWithMethodAndArg,
          // Avoid propagating failures to Promises returned by later
          // invocations of the iterator.
          callInvokeWithMethodAndArg
        ) : callInvokeWithMethodAndArg();
    }

    // Define the unified helper method that is used to implement .next,
    // .throw, and .return (see defineIteratorMethods).
    this._invoke = enqueue;
  }

  defineIteratorMethods(AsyncIterator.prototype);
  AsyncIterator.prototype[asyncIteratorSymbol] = function () {
    return this;
  };
  exports.AsyncIterator = AsyncIterator;

  // Note that simple async functions are implemented on top of
  // AsyncIterator objects; they just return a Promise for the value of
  // the final result produced by the iterator.
  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {
    if (PromiseImpl === void 0) PromiseImpl = Promise;

    var iter = new AsyncIterator(
      wrap(innerFn, outerFn, self, tryLocsList),
      PromiseImpl
    );

    return exports.isGeneratorFunction(outerFn)
      ? iter // If outerFn is a generator, return the full iterator.
      : iter.next().then(function(result) {
          return result.done ? result.value : iter.next();
        });
  };

  function makeInvokeMethod(innerFn, self, context) {
    var state = GenStateSuspendedStart;

    return function invoke(method, arg) {
      if (state === GenStateExecuting) {
        throw new Error("Generator is already running");
      }

      if (state === GenStateCompleted) {
        if (method === "throw") {
          throw arg;
        }

        // Be forgiving, per 25.3.3.3.3 of the spec:
        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
        return doneResult();
      }

      context.method = method;
      context.arg = arg;

      while (true) {
        var delegate = context.delegate;
        if (delegate) {
          var delegateResult = maybeInvokeDelegate(delegate, context);
          if (delegateResult) {
            if (delegateResult === ContinueSentinel) continue;
            return delegateResult;
          }
        }

        if (context.method === "next") {
          // Setting context._sent for legacy support of Babel's
          // function.sent implementation.
          context.sent = context._sent = context.arg;

        } else if (context.method === "throw") {
          if (state === GenStateSuspendedStart) {
            state = GenStateCompleted;
            throw context.arg;
          }

          context.dispatchException(context.arg);

        } else if (context.method === "return") {
          context.abrupt("return", context.arg);
        }

        state = GenStateExecuting;

        var record = tryCatch(innerFn, self, context);
        if (record.type === "normal") {
          // If an exception is thrown from innerFn, we leave state ===
          // GenStateExecuting and loop back for another invocation.
          state = context.done
            ? GenStateCompleted
            : GenStateSuspendedYield;

          if (record.arg === ContinueSentinel) {
            continue;
          }

          return {
            value: record.arg,
            done: context.done
          };

        } else if (record.type === "throw") {
          state = GenStateCompleted;
          // Dispatch the exception by looping back around to the
          // context.dispatchException(context.arg) call above.
          context.method = "throw";
          context.arg = record.arg;
        }
      }
    };
  }

  // Call delegate.iterator[context.method](context.arg) and handle the
  // result, either by returning a { value, done } result from the
  // delegate iterator, or by modifying context.method and context.arg,
  // setting context.delegate to null, and returning the ContinueSentinel.
  function maybeInvokeDelegate(delegate, context) {
    var method = delegate.iterator[context.method];
    if (method === undefined) {
      // A .throw or .return when the delegate iterator has no .throw
      // method always terminates the yield* loop.
      context.delegate = null;

      if (context.method === "throw") {
        // Note: ["return"] must be used for ES3 parsing compatibility.
        if (delegate.iterator["return"]) {
          // If the delegate iterator has a return method, give it a
          // chance to clean up.
          context.method = "return";
          context.arg = undefined;
          maybeInvokeDelegate(delegate, context);

          if (context.method === "throw") {
            // If maybeInvokeDelegate(context) changed context.method from
            // "return" to "throw", let that override the TypeError below.
            return ContinueSentinel;
          }
        }

        context.method = "throw";
        context.arg = new TypeError(
          "The iterator does not provide a 'throw' method");
      }

      return ContinueSentinel;
    }

    var record = tryCatch(method, delegate.iterator, context.arg);

    if (record.type === "throw") {
      context.method = "throw";
      context.arg = record.arg;
      context.delegate = null;
      return ContinueSentinel;
    }

    var info = record.arg;

    if (! info) {
      context.method = "throw";
      context.arg = new TypeError("iterator result is not an object");
      context.delegate = null;
      return ContinueSentinel;
    }

    if (info.done) {
      // Assign the result of the finished delegate to the temporary
      // variable specified by delegate.resultName (see delegateYield).
      context[delegate.resultName] = info.value;

      // Resume execution at the desired location (see delegateYield).
      context.next = delegate.nextLoc;

      // If context.method was "throw" but the delegate handled the
      // exception, let the outer generator proceed normally. If
      // context.method was "next", forget context.arg since it has been
      // "consumed" by the delegate iterator. If context.method was
      // "return", allow the original .return call to continue in the
      // outer generator.
      if (context.method !== "return") {
        context.method = "next";
        context.arg = undefined;
      }

    } else {
      // Re-yield the result returned by the delegate method.
      return info;
    }

    // The delegate iterator is finished, so forget it and continue with
    // the outer generator.
    context.delegate = null;
    return ContinueSentinel;
  }

  // Define Generator.prototype.{next,throw,return} in terms of the
  // unified ._invoke helper method.
  defineIteratorMethods(Gp);

  define(Gp, toStringTagSymbol, "Generator");

  // A Generator should always return itself as the iterator object when the
  // @@iterator function is called on it. Some browsers' implementations of the
  // iterator prototype chain incorrectly implement this, causing the Generator
  // object to not be returned from this call. This ensures that doesn't happen.
  // See https://github.com/facebook/regenerator/issues/274 for more details.
  Gp[iteratorSymbol] = function() {
    return this;
  };

  Gp.toString = function() {
    return "[object Generator]";
  };

  function pushTryEntry(locs) {
    var entry = { tryLoc: locs[0] };

    if (1 in locs) {
      entry.catchLoc = locs[1];
    }

    if (2 in locs) {
      entry.finallyLoc = locs[2];
      entry.afterLoc = locs[3];
    }

    this.tryEntries.push(entry);
  }

  function resetTryEntry(entry) {
    var record = entry.completion || {};
    record.type = "normal";
    delete record.arg;
    entry.completion = record;
  }

  function Context(tryLocsList) {
    // The root entry object (effectively a try statement without a catch
    // or a finally block) gives us a place to store values thrown from
    // locations where there is no enclosing try statement.
    this.tryEntries = [{ tryLoc: "root" }];
    tryLocsList.forEach(pushTryEntry, this);
    this.reset(true);
  }

  exports.keys = function(object) {
    var keys = [];
    for (var key in object) {
      keys.push(key);
    }
    keys.reverse();

    // Rather than returning an object with a next method, we keep
    // things simple and return the next function itself.
    return function next() {
      while (keys.length) {
        var key = keys.pop();
        if (key in object) {
          next.value = key;
          next.done = false;
          return next;
        }
      }

      // To avoid creating an additional object, we just hang the .value
      // and .done properties off the next function object itself. This
      // also ensures that the minifier will not anonymize the function.
      next.done = true;
      return next;
    };
  };

  function values(iterable) {
    if (iterable) {
      var iteratorMethod = iterable[iteratorSymbol];
      if (iteratorMethod) {
        return iteratorMethod.call(iterable);
      }

      if (typeof iterable.next === "function") {
        return iterable;
      }

      if (!isNaN(iterable.length)) {
        var i = -1, next = function next() {
          while (++i < iterable.length) {
            if (hasOwn.call(iterable, i)) {
              next.value = iterable[i];
              next.done = false;
              return next;
            }
          }

          next.value = undefined;
          next.done = true;

          return next;
        };

        return next.next = next;
      }
    }

    // Return an iterator with no values.
    return { next: doneResult };
  }
  exports.values = values;

  function doneResult() {
    return { value: undefined, done: true };
  }

  Context.prototype = {
    constructor: Context,

    reset: function(skipTempReset) {
      this.prev = 0;
      this.next = 0;
      // Resetting context._sent for legacy support of Babel's
      // function.sent implementation.
      this.sent = this._sent = undefined;
      this.done = false;
      this.delegate = null;

      this.method = "next";
      this.arg = undefined;

      this.tryEntries.forEach(resetTryEntry);

      if (!skipTempReset) {
        for (var name in this) {
          // Not sure about the optimal order of these conditions:
          if (name.charAt(0) === "t" &&
              hasOwn.call(this, name) &&
              !isNaN(+name.slice(1))) {
            this[name] = undefined;
          }
        }
      }
    },

    stop: function() {
      this.done = true;

      var rootEntry = this.tryEntries[0];
      var rootRecord = rootEntry.completion;
      if (rootRecord.type === "throw") {
        throw rootRecord.arg;
      }

      return this.rval;
    },

    dispatchException: function(exception) {
      if (this.done) {
        throw exception;
      }

      var context = this;
      function handle(loc, caught) {
        record.type = "throw";
        record.arg = exception;
        context.next = loc;

        if (caught) {
          // If the dispatched exception was caught by a catch block,
          // then let that catch block handle the exception normally.
          context.method = "next";
          context.arg = undefined;
        }

        return !! caught;
      }

      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        var record = entry.completion;

        if (entry.tryLoc === "root") {
          // Exception thrown outside of any try block that could handle
          // it, so set the completion value of the entire function to
          // throw the exception.
          return handle("end");
        }

        if (entry.tryLoc <= this.prev) {
          var hasCatch = hasOwn.call(entry, "catchLoc");
          var hasFinally = hasOwn.call(entry, "finallyLoc");

          if (hasCatch && hasFinally) {
            if (this.prev < entry.catchLoc) {
              return handle(entry.catchLoc, true);
            } else if (this.prev < entry.finallyLoc) {
              return handle(entry.finallyLoc);
            }

          } else if (hasCatch) {
            if (this.prev < entry.catchLoc) {
              return handle(entry.catchLoc, true);
            }

          } else if (hasFinally) {
            if (this.prev < entry.finallyLoc) {
              return handle(entry.finallyLoc);
            }

          } else {
            throw new Error("try statement without catch or finally");
          }
        }
      }
    },

    abrupt: function(type, arg) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.tryLoc <= this.prev &&
            hasOwn.call(entry, "finallyLoc") &&
            this.prev < entry.finallyLoc) {
          var finallyEntry = entry;
          break;
        }
      }

      if (finallyEntry &&
          (type === "break" ||
           type === "continue") &&
          finallyEntry.tryLoc <= arg &&
          arg <= finallyEntry.finallyLoc) {
        // Ignore the finally entry if control is not jumping to a
        // location outside the try/catch block.
        finallyEntry = null;
      }

      var record = finallyEntry ? finallyEntry.completion : {};
      record.type = type;
      record.arg = arg;

      if (finallyEntry) {
        this.method = "next";
        this.next = finallyEntry.finallyLoc;
        return ContinueSentinel;
      }

      return this.complete(record);
    },

    complete: function(record, afterLoc) {
      if (record.type === "throw") {
        throw record.arg;
      }

      if (record.type === "break" ||
          record.type === "continue") {
        this.next = record.arg;
      } else if (record.type === "return") {
        this.rval = this.arg = record.arg;
        this.method = "return";
        this.next = "end";
      } else if (record.type === "normal" && afterLoc) {
        this.next = afterLoc;
      }

      return ContinueSentinel;
    },

    finish: function(finallyLoc) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.finallyLoc === finallyLoc) {
          this.complete(entry.completion, entry.afterLoc);
          resetTryEntry(entry);
          return ContinueSentinel;
        }
      }
    },

    "catch": function(tryLoc) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.tryLoc === tryLoc) {
          var record = entry.completion;
          if (record.type === "throw") {
            var thrown = record.arg;
            resetTryEntry(entry);
          }
          return thrown;
        }
      }

      // The context.catch method must only be called with a location
      // argument that corresponds to a known catch block.
      throw new Error("illegal catch attempt");
    },

    delegateYield: function(iterable, resultName, nextLoc) {
      this.delegate = {
        iterator: values(iterable),
        resultName: resultName,
        nextLoc: nextLoc
      };

      if (this.method === "next") {
        // Deliberately forget the last sent value so that we don't
        // accidentally pass it on to the delegate.
        this.arg = undefined;
      }

      return ContinueSentinel;
    }
  };

  // Regardless of whether this script is executing as a CommonJS module
  // or not, return the runtime object so that we can declare the variable
  // regeneratorRuntime in the outer scope, which allows this module to be
  // injected easily by `bin/regenerator --include-runtime script.js`.
  return exports;

}(
  // If this script is executing as a CommonJS module, use module.exports
  // as the regeneratorRuntime namespace. Otherwise create a new empty
  // object. Either way, the resulting object will be used to initialize
  // the regeneratorRuntime variable at the top of this file.
   true ? module.exports : 0
));

try {
  regeneratorRuntime = runtime;
} catch (accidentalStrictMode) {
  // This module should not be running in strict mode, so the above
  // assignment should always work unless something is misconfigured. Just
  // in case runtime.js accidentally runs in strict mode, we can escape
  // strict mode using a global Function call. This could conceivably fail
  // if a Content Security Policy forbids using Function, but in that case
  // the proper solution is to fix the accidental strict mode problem. If
  // you've misconfigured your bundler to force strict mode and applied a
  // CSP to forbid Function, and you're not willing to fix either of those
  // problems, please detail your unique predicament in a GitHub issue.
  Function("r", "regeneratorRuntime = r")(runtime);
}


/***/ }),

/***/ "@wordpress/i18n":
/*!**************************!*\
  !*** external "wp.i18n" ***!
  \**************************/
/***/ ((module) => {

"use strict";
module.exports = wp.i18n;

/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be in strict mode.
(() => {
"use strict";
/*!*****************************************!*\
  !*** ../assets/dev/js/editor/editor.js ***!
  \*****************************************/


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

__webpack_require__(/*! core-js/modules/es7.array.includes.js */ "../node_modules/core-js/modules/es7.array.includes.js");

var _editor = _interopRequireDefault(__webpack_require__(/*! ../../../../modules/custom-css/assets/js/editor/editor */ "../modules/custom-css/assets/js/editor/editor.js"));

var _editor2 = _interopRequireDefault(__webpack_require__(/*! ../../../../modules/motion-fx/assets/js/editor/editor */ "../modules/motion-fx/assets/js/editor/editor.js"));

var _module = _interopRequireDefault(__webpack_require__(/*! modules/popup/assets/js/editor/module */ "../modules/popup/assets/js/editor/module.js"));

var _module2 = _interopRequireDefault(__webpack_require__(/*! modules/global-widget/assets/js/editor/module */ "../modules/global-widget/assets/js/editor/module.js"));

var _module3 = _interopRequireDefault(__webpack_require__(/*! modules/theme-builder/assets/js/editor/module */ "../modules/theme-builder/assets/js/editor/module.js"));

var _module4 = _interopRequireDefault(__webpack_require__(/*! modules/forms/assets/js/editor/module */ "../modules/forms/assets/js/editor/module.js"));

var _module5 = _interopRequireDefault(__webpack_require__(/*! modules/screenshots/assets/js/editor/module */ "../modules/screenshots/assets/js/editor/module.js"));

var _editor3 = _interopRequireDefault(__webpack_require__(/*! ../../../../core/app/modules/site-editor/assets/js/editor */ "../core/app/modules/site-editor/assets/js/editor.js"));

var _module6 = _interopRequireDefault(__webpack_require__(/*! modules/video-playlist/assets/js/editor/module */ "../modules/video-playlist/assets/js/editor/module.js"));

var _module7 = _interopRequireDefault(__webpack_require__(/*! modules/woocommerce/assets/js/editor/module */ "../modules/woocommerce/assets/js/editor/module.js"));

var _module8 = _interopRequireDefault(__webpack_require__(/*! modules/scroll-snap/assets/js/editor/module */ "../modules/scroll-snap/assets/js/editor/module.js"));

var ElementorPro = Marionette.Application.extend({
  config: {},
  modules: {},
  initModules: function initModules() {
    var QueryControl = __webpack_require__(/*! modules/query-control/assets/js/editor */ "../modules/query-control/assets/js/editor.js"),
        Library = __webpack_require__(/*! modules/library/assets/js/editor */ "../modules/library/assets/js/editor.js"),
        FlipBox = __webpack_require__(/*! modules/flip-box/assets/js/editor/editor */ "../modules/flip-box/assets/js/editor/editor.js"),
        ShareButtons = __webpack_require__(/*! modules/share-buttons/assets/js/editor/editor */ "../modules/share-buttons/assets/js/editor/editor.js"),
        AssetsManager = __webpack_require__(/*! modules/assets-manager/assets/js/editor/editor */ "../modules/assets-manager/assets/js/editor/editor.js"),
        ThemeElements = __webpack_require__(/*! modules/theme-elements/assets/js/editor/editor */ "../modules/theme-elements/assets/js/editor/editor.js");

    this.modules = {
      queryControl: new QueryControl(),
      forms: new _module4.default(),
      library: new Library(),
      customCSS: new _editor.default(),
      globalWidget: new _module2.default(),
      flipBox: new FlipBox(),
      motionFX: new _editor2.default(),
      shareButtons: new ShareButtons(),
      assetsManager: new AssetsManager(),
      themeElements: new ThemeElements(),
      themeBuilder: new _module3.default(),
      siteEditor: new _editor3.default(),
      screenshots: new _module5.default(),
      woocommerce: new _module7.default(),
      // Popup is depended on Theme Builder.
      popup: new _module.default(),
      videoPlaylistModule: new _module6.default(),
      ScrollSnapModule: new _module8.default()
    };
  },
  ajax: {
    prepareArgs: function prepareArgs(args) {
      args[0] = 'pro_' + args[0];
      return args;
    },
    send: function send() {
      return elementorCommon.ajax.send.apply(elementorCommon.ajax, this.prepareArgs(arguments));
    },
    addRequest: function addRequest() {
      return elementorCommon.ajax.addRequest.apply(elementorCommon.ajax, this.prepareArgs(arguments));
    }
  },
  translate: function translate(stringKey, templateArgs) {
    return elementorCommon.translate(stringKey, null, templateArgs, this.config.i18n);
  },
  onStart: function onStart() {
    var _this = this;

    this.config = elementorProEditorConfig;
    this.initModules();
    jQuery(window).on('elementor:init', function () {
      return _this.onElementorInit();
    }).on('elementor/connect/success/editor-pro-activate', this.onActivateSuccess);
  },
  onElementorInit: function onElementorInit() {
    var _this2 = this;

    elementor.on('preview:loaded', function () {
      return _this2.onElementorPreviewLoaded();
    });
    elementorPro.libraryRemoveGetProButtons();
    elementorCommon.debug.addURLToWatch('elementor-pro/assets');
  },
  onElementorPreviewLoaded: function onElementorPreviewLoaded() {
    elementor.$preview[0].contentWindow.elementorPro = this;
  },
  libraryRemoveGetProButtons: function libraryRemoveGetProButtons() {
    elementor.hooks.addFilter('elementor/editor/template-library/template/action-button', function (viewID, templateData) {
      var _elementor$config, _elementor$config$lib;

      // eslint-disable-next-line camelcase
      if (templateData.accessLevel === undefined || ((_elementor$config = elementor.config) === null || _elementor$config === void 0 ? void 0 : (_elementor$config$lib = _elementor$config.library_connect) === null || _elementor$config$lib === void 0 ? void 0 : _elementor$config$lib.current_access_level) === undefined) {
        // BC support.
        return templateData.isPro && !elementorPro.config.isActive ? '#tmpl-elementor-pro-template-library-activate-license-button' : '#tmpl-elementor-template-library-insert-button';
      } // When the template should be at least "pro" and the license is not active.


      if (templateData.accessLevel > 0 && !elementorPro.config.isActive) {
        return '#tmpl-elementor-pro-template-library-activate-license-button';
      } // When the template access levels is greater than the current license access level it should
      // return the "core" view template which is by default "go pro" or "go expert" button.


      if (templateData.accessLevel > elementor.config.library_connect.current_access_level) {
        return viewID;
      } // When the current license can insert the template.


      return '#tmpl-elementor-template-library-insert-button';
    });
  },
  onActivateSuccess: function onActivateSuccess() {
    // Hide notice.
    elementor.noticeBar.onCloseClick(); // Mark site connect for insert templates connect screen.

    elementor.config.library_connect.is_connected = true; // Mark pro is active - for `this.libraryRemoveGetProButtons`.

    elementorPro.config.isActive = true;
    elementor.notifications.showToast({
      message: elementor.translate('connected_successfully')
    });
  },
  // TODO: Move to core
  validateHTMLTag: function validateHTMLTag(tag) {
    var validHTMLTags = ['article', 'aside', 'div', 'footer', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'main', 'nav', 'p', 'section', 'span'];
    return validHTMLTags.includes(tag.toLowerCase()) ? tag : 'div';
  }
});
window.elementorPro = new ElementorPro();
elementorPro.start();
})();

/******/ })()
;
//# sourceMappingURL=editor.js.mapassets/js/webpack-pro.runtime.min.js000064400000011545150755004310013504 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(()=>{"use strict";var e,r,_,a={},n={};function __webpack_require__(e){var r=n[e];if(void 0!==r)return r.exports;var _=n[e]={exports:{}};return a[e](_,_.exports,__webpack_require__),_.exports}__webpack_require__.m=a,e=[],__webpack_require__.O=(r,_,a,n)=>{if(!_){var c=1/0;for(o=0;o<e.length;o++){for(var[_,a,n]=e[o],i=!0,t=0;t<_.length;t++)(!1&n||c>=n)&&Object.keys(__webpack_require__.O).every((e=>__webpack_require__.O[e](_[t])))?_.splice(t--,1):(i=!1,n<c&&(c=n));if(i){e.splice(o--,1);var b=a();void 0!==b&&(r=b)}}return r}n=n||0;for(var o=e.length;o>0&&e[o-1][2]>n;o--)e[o]=e[o-1];e[o]=[_,a,n]},__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce(((r,_)=>(__webpack_require__.f[_](e,r),r)),[])),__webpack_require__.u=e=>714===e?"code-highlight.dc74fd78a051eda07b3a.bundle.min.js":721===e?"video-playlist.780d8267a738bfbd96a6.bundle.min.js":256===e?"paypal-button.21471ef12592606560a0.bundle.min.js":241===e?"progress-tracker.ad310e07a2a9063dd3ed.bundle.min.js":26===e?"animated-headline.37960d9fb9ab8b6e43cd.bundle.min.js":534===e?"media-carousel.15b78f70034df8ffebad.bundle.min.js":369===e?"carousel.6a71b6c6e34400c456a5.bundle.min.js":804===e?"countdown.71f117e09cc4a2aa3dba.bundle.min.js":888===e?"hotspot.ba3b762edc3da9c7a076.bundle.min.js":680===e?"form.0fc25ba6639255b98660.bundle.min.js":121===e?"gallery.6af8f19f91f1b16c3ab6.bundle.min.js":288===e?"lottie.b83968ecec2e4fd1b62c.bundle.min.js":42===e?"nav-menu.fd64b77e7258ee4c6205.bundle.min.js":50===e?"popup.7b71aedb401104b93788.bundle.min.js":985===e?"load-more.921f61dba5d476ec2720.bundle.min.js":287===e?"posts.2a35b76ad8ea8f612cd7.bundle.min.js":824===e?"portfolio.c214590e93207960ce64.bundle.min.js":58===e?"share-buttons.42abb737a0de191a4ee9.bundle.min.js":114===e?"slides.39da68ee3c8123589b2e.bundle.min.js":443===e?"social.787445e9f143597c5be5.bundle.min.js":838===e?"table-of-contents.f5cd05278297a9d229e1.bundle.min.js":685===e?"archive-posts.77eccfe3d546a58d3f1f.bundle.min.js":858===e?"search-form.e36b4b7c26157bb965fe.bundle.min.js":102===e?"woocommerce-menu-cart.4c85f15cfbc02b4718c9.bundle.min.js":124===e?"woocommerce-checkout-page.ca82a3335f2823da4209.bundle.min.js":859===e?"woocommerce-cart.e2a9101be21a228a4575.bundle.min.js":979===e?"woocommerce-my-account.29644c6bcc614d12067e.bundle.min.js":void 0,__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r={},_="elementor-pro:",__webpack_require__.l=(e,a,n,c)=>{if(r[e])r[e].push(a);else{var i,t;if(void 0!==n)for(var b=document.getElementsByTagName("script"),o=0;o<b.length;o++){var u=b[o];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==_+n){i=u;break}}i||(t=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,__webpack_require__.nc&&i.setAttribute("nonce",__webpack_require__.nc),i.setAttribute("data-webpack",_+n),i.src=e),r[e]=[a];var onScriptComplete=(_,a)=>{i.onerror=i.onload=null,clearTimeout(d);var n=r[e];if(delete r[e],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach((e=>e(a))),_)return _(a)},d=setTimeout(onScriptComplete.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=onScriptComplete.bind(null,i.onerror),i.onload=onScriptComplete.bind(null,i.onload),t&&document.head.appendChild(i)}},(()=>{var e;__webpack_require__.g.importScripts&&(e=__webpack_require__.g.location+"");var r=__webpack_require__.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var _=r.getElementsByTagName("script");_.length&&(e=_[_.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),__webpack_require__.p=e})(),(()=>{var e={396:0};__webpack_require__.f.j=(r,_)=>{var a=__webpack_require__.o(e,r)?e[r]:void 0;if(0!==a)if(a)_.push(a[2]);else if(396!=r){var n=new Promise(((_,n)=>a=e[r]=[_,n]));_.push(a[2]=n);var c=__webpack_require__.p+__webpack_require__.u(r),i=new Error;__webpack_require__.l(c,(_=>{if(__webpack_require__.o(e,r)&&(0!==(a=e[r])&&(e[r]=void 0),a)){var n=_&&("load"===_.type?"missing":_.type),c=_&&_.target&&_.target.src;i.message="Loading chunk "+r+" failed.\n("+n+": "+c+")",i.name="ChunkLoadError",i.type=n,i.request=c,a[1](i)}}),"chunk-"+r,r)}else e[r]=0},__webpack_require__.O.j=r=>0===e[r];var webpackJsonpCallback=(r,_)=>{var a,n,[c,i,t]=_,b=0;for(a in i)__webpack_require__.o(i,a)&&(__webpack_require__.m[a]=i[a]);if(t)var o=t(__webpack_require__);for(r&&r(_);b<c.length;b++)n=c[b],__webpack_require__.o(e,n)&&e[n]&&e[n][0](),e[c[b]]=0;return __webpack_require__.O(o)},r=self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[];r.forEach(webpackJsonpCallback.bind(null,0)),r.push=webpackJsonpCallback.bind(null,r.push.bind(r))})()})();assets/js/woocommerce-checkout-page.acd4a2b8bc03ed32111f.bundle.js000064400000025527150755004310020345 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["woocommerce-checkout-page"],{

/***/ "../modules/woocommerce/assets/js/frontend/handlers/base.js":
/*!******************************************************************!*\
  !*** ../modules/woocommerce/assets/js/frontend/handlers/base.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class Base extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        stickyRightColumn: '.e-sticky-right-column'
      },
      classes: {
        stickyRightColumnActive: 'e-sticky-right-column--active'
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors');
    return {
      $stickyRightColumn: this.$element.find(selectors.stickyRightColumn)
    };
  }

  bindEvents() {
    // Add our wrapper class around the select2 whenever it is opened.
    elementorFrontend.elements.$document.on('select2:open', event => {
      this.addSelect2Wrapper(event);
    });
  }

  addSelect2Wrapper(event) {
    // The select element is recaptured every time because the markup can refresh
    const selectElement = jQuery(event.target).data('select2');

    if (selectElement.$dropdown) {
      selectElement.$dropdown.addClass('e-woo-select2-wrapper');
    }
  }

  isStickyRightColumnActive() {
    const classes = this.getSettings('classes');
    return this.elements.$stickyRightColumn.hasClass(classes.stickyRightColumnActive);
  }

  activateStickyRightColumn() {
    const elementSettings = this.getElementSettings(),
          $wpAdminBar = elementorFrontend.elements.$wpAdminBar,
          classes = this.getSettings('classes');
    let stickyOptionsOffset = elementSettings.sticky_right_column_offset || 0;

    if ($wpAdminBar.length && 'fixed' === $wpAdminBar.css('position')) {
      stickyOptionsOffset += $wpAdminBar.height();
    }

    if ('yes' === this.getElementSettings('sticky_right_column')) {
      this.elements.$stickyRightColumn.addClass(classes.stickyRightColumnActive);
      this.elements.$stickyRightColumn.css('top', stickyOptionsOffset + 'px');
    }
  }

  deactivateStickyRightColumn() {
    if (!this.isStickyRightColumnActive()) {
      return;
    }

    const classes = this.getSettings('classes');
    this.elements.$stickyRightColumn.removeClass(classes.stickyRightColumnActive);
  }
  /**
   * Activates the sticky column
   *
   * @return {void}
   */


  toggleStickyRightColumn() {
    if (!this.getElementSettings('sticky_right_column')) {
      this.deactivateStickyRightColumn();
      return;
    }

    if (!this.isStickyRightColumnActive()) {
      this.activateStickyRightColumn();
    }
  }

  equalizeElementHeight($element) {
    if ($element.length) {
      $element.removeAttr('style'); // first remove the custom height we added so that the new height can be re-calculated according to the content

      let maxHeight = 0;
      $element.each((index, element) => {
        maxHeight = Math.max(maxHeight, element.offsetHeight);
      });

      if (0 < maxHeight) {
        $element.css({
          height: maxHeight + 'px'
        });
      }
    }
  }

}

exports.default = Base;

/***/ }),

/***/ "../modules/woocommerce/assets/js/frontend/handlers/checkout-page.js":
/*!***************************************************************************!*\
  !*** ../modules/woocommerce/assets/js/frontend/handlers/checkout-page.js ***!
  \***************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/woocommerce/assets/js/frontend/handlers/base.js"));

class Checkout extends _base.default {
  getDefaultSettings(...args) {
    const defaultSettings = super.getDefaultSettings(...args);
    return {
      selectors: { ...defaultSettings.selectors,
        container: '.elementor-widget-woocommerce-checkout-page',
        loginForm: '.e-woocommerce-login-anchor',
        loginSubmit: '.e-woocommerce-form-login-submit',
        loginSection: '.e-woocommerce-login-section',
        showCouponForm: '.e-show-coupon-form',
        couponSection: '.e-coupon-anchor',
        showLoginForm: '.e-show-login',
        applyCoupon: '.e-apply-coupon',
        checkoutForm: 'form.woocommerce-checkout',
        couponBox: '.e-coupon-box',
        address: 'address',
        wpHttpRefererInputs: '[name="_wp_http_referer"]'
      },
      classes: defaultSettings.classes,
      ajaxUrl: elementorProFrontend.config.ajaxurl
    };
  }

  getDefaultElements(...args) {
    const selectors = this.getSettings('selectors');
    return { ...super.getDefaultElements(...args),
      $container: this.$element.find(selectors.container),
      $loginForm: this.$element.find(selectors.loginForm),
      $showCouponForm: this.$element.find(selectors.showCouponForm),
      $couponSection: this.$element.find(selectors.couponSection),
      $showLoginForm: this.$element.find(selectors.showLoginForm),
      $applyCoupon: this.$element.find(selectors.applyCoupon),
      $loginSubmit: this.$element.find(selectors.loginSubmit),
      $couponBox: this.$element.find(selectors.couponBox),
      $checkoutForm: this.$element.find(selectors.checkoutForm),
      $loginSection: this.$element.find(selectors.loginSection),
      $address: this.$element.find(selectors.address)
    };
  }

  bindEvents(...args) {
    super.bindEvents(...args);
    this.elements.$showCouponForm.on('click', event => {
      event.preventDefault();
      this.elements.$couponSection.slideToggle();
    });
    this.elements.$showLoginForm.on('click', event => {
      event.preventDefault();
      this.elements.$loginForm.slideToggle();
    });
    this.elements.$applyCoupon.on('click', event => {
      event.preventDefault();
      this.applyCoupon();
    });
    this.elements.$loginSubmit.on('click', event => {
      event.preventDefault();
      this.loginUser();
    });
    elementorFrontend.elements.$body.on('updated_checkout', () => {
      this.applyPurchaseButtonHoverAnimation();
      this.updateWpReferers();
    });
  }

  onInit(...args) {
    super.onInit(...args);
    this.toggleStickyRightColumn();
    this.updateWpReferers();
    this.equalizeElementHeight(this.elements.$address); // equalize <address> boxes height

    if (elementorFrontend.isEditMode()) {
      this.elements.$loginForm.show();
      this.elements.$couponSection.show();
      this.applyPurchaseButtonHoverAnimation();
    }
  }

  onElementChange(propertyName) {
    if ('sticky_right_column' === propertyName) {
      this.toggleStickyRightColumn();
    }
  }

  onDestroy(...args) {
    super.onDestroy(...args);
    this.deactivateStickyRightColumn();
  }

  applyPurchaseButtonHoverAnimation() {
    const purchaseButtonHoverAnimation = this.getElementSettings('purchase_button_hover_animation');

    if (purchaseButtonHoverAnimation) {
      // This element is recaptured every time because the checkout markup can refresh
      jQuery('#place_order').addClass('elementor-animation-' + purchaseButtonHoverAnimation);
    }
  }

  applyCoupon() {
    // wc_checkout_params is required to continue, ensure the object exists
    // eslint-disable-next-line camelcase
    if (!wc_checkout_params) {
      return;
    }

    this.startProcessing(this.elements.$couponBox);
    const data = {
      security: wc_checkout_params.apply_coupon_nonce,
      coupon_code: this.elements.$couponBox.find('input[name="coupon_code"]').val()
    };
    jQuery.ajax({
      type: 'POST',
      url: wc_checkout_params.wc_ajax_url.toString().replace('%%endpoint%%', 'apply_coupon'),
      context: this,
      data,

      success(code) {
        jQuery('.woocommerce-error, .woocommerce-message').remove();
        this.elements.$couponBox.removeClass('processing').unblock();

        if (code) {
          this.elements.$checkoutForm.before(code);
          this.elements.$couponSection.slideUp();
          elementorFrontend.elements.$body.trigger('applied_coupon_in_checkout', [data.coupon_code]);
          elementorFrontend.elements.$body.trigger('update_checkout', {
            update_shipping_method: false
          });
        }
      },

      dataType: 'html'
    });
  }

  loginUser() {
    this.startProcessing(this.elements.$loginSection);
    const data = {
      action: 'elementor_woocommerce_checkout_login_user',
      username: this.elements.$loginSection.find('input[name="username"]').val(),
      password: this.elements.$loginSection.find('input[name="password"]').val(),
      nonce: this.elements.$loginSection.find('input[name="woocommerce-login-nonce"]').val(),
      remember: this.elements.$loginSection.find('input#rememberme').prop('checked')
    };
    jQuery.ajax({
      type: 'POST',
      url: this.getSettings('ajaxUrl'),
      context: this,
      data,

      success(code) {
        code = JSON.parse(code);
        this.elements.$loginSection.removeClass('processing').unblock();
        const messages = jQuery('.woocommerce-error, .woocommerce-message');
        messages.remove();

        if (code.logged_in) {
          location.reload();
        } else {
          this.elements.$checkoutForm.before(code.message);
        }
      }

    });
  }

  startProcessing($form) {
    if ($form.is('.processing')) {
      return;
    }
    /**
     * .block() is from a jQuery blockUI plugin loaded by WooCommerce. This code is based on WooCommerce
     * core in order for the Checkout widget to behave the same as WooCommerce Checkout pages.
     */


    $form.addClass('processing').block({
      message: null,
      overlayCSS: {
        background: '#fff',
        opacity: 0.6
      }
    });
  }
  /**
   * `elementorPostId` and `elementorWidgetId` are added to the url in the `_wp_http_referer` input which is then
   * received when WooCommerce does it's `update_order_review` ajax, and extracted from this url and used with our
   * `load_widget_before_wc_ajax` method.
   */


  updateWpReferers() {
    const selectors = this.getSettings('selectors'),
          wpHttpRefererInputs = this.$element.find(selectors.wpHttpRefererInputs),
          url = new URL(document.location);
    url.searchParams.set('elementorPostId', elementorFrontend.config.post.id);
    url.searchParams.set('elementorWidgetId', this.getID());
    wpHttpRefererInputs.attr('value', url);
  }

}

exports.default = Checkout;

/***/ })

}]);
//# sourceMappingURL=woocommerce-checkout-page.acd4a2b8bc03ed32111f.bundle.js.mapassets/js/lottie.b83968ecec2e4fd1b62c.bundle.min.js000064400000034174150755004310015430 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[288],{4927:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;class lottieHandler extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{container:".e-lottie__container",containerLink:".e-lottie__container__link",animation:".e-lottie__animation",caption:".e-lottie__caption"},classes:{caption:"e-lottie__caption"}}}getDefaultElements(){const{selectors:t}=this.getSettings();return{$widgetWrapper:this.$element,$container:this.$element.find(t.container),$containerLink:this.$element.find(t.containerLink),$animation:this.$element.find(t.animation),$caption:this.$element.find(t.caption),$sectionParent:this.$element.closest(".elementor-section"),$columnParent:this.$element.closest(".elementor-column")}}onInit(...t){super.onInit(...t),this.lottie=null,this.state={isAnimationScrollUpdateNeededOnFirstLoad:!0,isNewLoopCycle:!1,isInViewport:!1,loop:!1,animationDirection:"forward",currentAnimationTrigger:"",effectsRelativeTo:"",hoverOutMode:"",hoverArea:"",caption:"",playAnimationCount:0,animationSpeed:0,linkTimeout:0,viewportOffset:{start:0,end:100}},this.intersectionObservers={animation:{observer:null,element:null},lazyload:{observer:null,element:null}},this.animationFrameRequest={timer:null,lastScrollY:0},this.listeners={collection:[],elements:{$widgetArea:{triggerAnimationHoverIn:null,triggerAnimationHoverOut:null},$container:{triggerAnimationClick:null}}},this.initLottie()}initLottie(){this.getLottieSettings().lazyload?this.lazyloadLottie():this.generateLottie()}lazyloadLottie(){this.intersectionObservers.lazyload.observer=elementorModules.utils.Scroll.scrollObserver({offset:"0px 0px 200px",callback:t=>{t.isInViewport&&(this.generateLottie(),this.intersectionObservers.lazyload.observer.unobserve(this.intersectionObservers.lazyload.element))}}),this.intersectionObservers.lazyload.element=this.elements.$container[0],this.intersectionObservers.lazyload.observer.observe(this.intersectionObservers.lazyload.element)}generateLottie(){this.createLottieInstance(),this.setLottieEvents()}createLottieInstance(){const t=this.getLottieSettings();this.lottie=bodymovin.loadAnimation({container:this.elements.$animation[0],path:this.getAnimationPath(),renderer:t.renderer,autoplay:!1,name:"lottie-widget"}),this.elements.$animation.data("lottie",this.lottie)}getAnimationPath(){var t,e;const i=this.getLottieSettings();return null!==(t=i.source_json)&&void 0!==t&&t.url&&"json"===i.source_json.url.toLowerCase().substr(-4)?i.source_json.url:null!==(e=i.source_external_url)&&void 0!==e&&e.url?i.source_external_url.url:elementorProFrontend.config.lottie.defaultAnimationUrl}setCaption(){const t=this.getLottieSettings();if("external_url"===t.source||"media_file"===t.source&&"custom"===t.caption_source){this.getCaptionElement().text(t.caption)}}getCaptionElement(){if(!this.elements.$caption.length){const{classes:t}=this.getSettings();return this.elements.$caption=jQuery("<p>",{class:t.caption}),this.elements.$container.append(this.elements.$caption),this.elements.$caption}return this.elements.$caption}setLottieEvents(){this.lottie.addEventListener("DOMLoaded",(()=>this.onLottieDomLoaded())),this.lottie.addEventListener("complete",(()=>this.onComplete()))}saveInitialValues(){var t;const e=this.getLottieSettings();this.lottie.__initialTotalFrames=this.lottie.totalFrames,this.lottie.__initialFirstFrame=this.lottie.firstFrame,this.state.currentAnimationTrigger=e.trigger,this.state.effectsRelativeTo=e.effects_relative_to,this.state.viewportOffset.start=e.viewport?e.viewport.sizes.start:0,this.state.viewportOffset.end=e.viewport?e.viewport.sizes.end:100,this.state.animationSpeed=null===(t=e.play_speed)||void 0===t?void 0:t.size,this.state.linkTimeout=e.link_timeout,this.state.caption=e.caption,this.state.loop=e.loop}setAnimationFirstFrame(){const t=this.getAnimationFrames();t.first=t.first-this.lottie.__initialFirstFrame,this.lottie.goToAndStop(t.first,!0)}initAnimationTrigger(){switch(this.getLottieSettings().trigger){case"none":this.playLottie();break;case"arriving_to_viewport":this.playAnimationWhenArrivingToViewport();break;case"bind_to_scroll":this.playAnimationWhenBindToScroll();break;case"on_click":this.bindAnimationClickEvents();break;case"on_hover":this.bindAnimationHoverEvents()}}playAnimationWhenArrivingToViewport(){const t=this.getOffset();this.intersectionObservers.animation.observer=elementorModules.utils.Scroll.scrollObserver({offset:`${t.end}% 0% ${t.start}%`,callback:t=>{t.isInViewport?(this.state.isInViewport=!0,this.playLottie()):(this.state.isInViewport=!1,this.lottie.pause())}}),this.intersectionObservers.animation.element=this.elements.$widgetWrapper[0],this.intersectionObservers.animation.observer.observe(this.intersectionObservers.animation.element)}getOffset(){const t=this.getLottieSettings();return{start:-t.viewport.sizes.start||0,end:-(100-t.viewport.sizes.end)||0}}playAnimationWhenBindToScroll(){const t=this.getLottieSettings(),e=this.getOffset();this.intersectionObservers.animation.observer=elementorModules.utils.Scroll.scrollObserver({offset:`${e.end}% 0% ${e.start}%`,callback:t=>this.onLottieIntersection(t)}),this.intersectionObservers.animation.element="viewport"===t.effects_relative_to?this.elements.$widgetWrapper[0]:document.documentElement,this.intersectionObservers.animation.observer.observe(this.intersectionObservers.animation.element)}updateAnimationByScrollPosition(){let t;t="page"===this.getLottieSettings().effects_relative_to?this.getLottiePagePercentage():"fixed"===this.getCurrentDeviceSetting("_position")?this.getLottieViewportHeightPercentage():this.getLottieViewportPercentage();let e=this.getFrameNumberByPercent(t);e-=this.lottie.__initialFirstFrame,this.lottie.goToAndStop(e,!0)}getLottieViewportPercentage(){return elementorModules.utils.Scroll.getElementViewportPercentage(this.elements.$widgetWrapper,this.getOffset())}getLottiePagePercentage(){return elementorModules.utils.Scroll.getPageScrollPercentage(this.getOffset())}getLottieViewportHeightPercentage(){return elementorModules.utils.Scroll.getPageScrollPercentage(this.getOffset(),window.innerHeight)}getFrameNumberByPercent(t){const e=this.getAnimationFrames();return t=Math.min(100,Math.max(0,t)),e.first+(e.last-e.first)*t/100}getAnimationFrames(){const t=this.getLottieSettings(),e=this.getAnimationCurrentFrame(),i=this.getAnimationRange().start,s=this.getAnimationRange().end;let n=this.lottie.__initialFirstFrame,o=0===this.lottie.__initialFirstFrame?this.lottie.__initialTotalFrames:this.lottie.__initialFirstFrame+this.lottie.__initialTotalFrames;return i&&i>n&&(n=i),s&&s<o&&(o=s),this.state.isNewLoopCycle||"bind_to_scroll"===t.trigger||(n=i&&i>e?i:e),"backward"===this.state.animationDirection&&this.isReverseMode()&&(n=e,o=i&&i>this.lottie.__initialFirstFrame?i:this.lottie.__initialFirstFrame),{first:n,last:o,current:e,total:this.lottie.__initialTotalFrames}}getAnimationRange(){const t=this.getLottieSettings();return{start:this.getInitialFrameNumberByPercent(t.start_point.size),end:this.getInitialFrameNumberByPercent(t.end_point.size)}}getInitialFrameNumberByPercent(t){return t=Math.min(100,Math.max(0,t)),this.lottie.__initialFirstFrame+(this.lottie.__initialTotalFrames-this.lottie.__initialFirstFrame)*t/100}getAnimationCurrentFrame(){return 0===this.lottie.firstFrame?this.lottie.currentFrame:this.lottie.firstFrame+this.lottie.currentFrame}setLinkTimeout(){var t;const e=this.getLottieSettings();"on_click"===e.trigger&&null!==(t=e.custom_link)&&void 0!==t&&t.url&&e.link_timeout&&this.elements.$containerLink.on("click",(t=>{t.preventDefault(),this.isEdit||setTimeout((()=>{const t="on"===e.custom_link.is_external?"_blank":"_self";window.open(e.custom_link.url,t)}),e.link_timeout)}))}bindAnimationClickEvents(){this.listeners.elements.$container.triggerAnimationClick=()=>{this.playLottie()},this.addSessionEventListener(this.elements.$container,"click",this.listeners.elements.$container.triggerAnimationClick)}getLottieSettings(){const t=this.getElementSettings();return{...t,lazyload:"yes"===t.lazyload,loop:"yes"===t.loop}}playLottie(){const t=this.getAnimationFrames();this.lottie.stop(),this.lottie.playSegments([t.first,t.last],!0),this.state.isNewLoopCycle=!1}bindAnimationHoverEvents(){this.createAnimationHoverInEvents(),this.createAnimationHoverOutEvents()}createAnimationHoverInEvents(){const t=this.getLottieSettings(),e=this.getHoverAreaElement();this.state.hoverArea=t.hover_area,this.listeners.elements.$widgetArea.triggerAnimationHoverIn=()=>{this.state.animationDirection="forward",this.playLottie()},this.addSessionEventListener(e,"mouseenter",this.listeners.elements.$widgetArea.triggerAnimationHoverIn)}addSessionEventListener(t,e,i){t.on(e,i),this.listeners.collection.push({$el:t,event:e,callback:i})}createAnimationHoverOutEvents(){const t=this.getLottieSettings(),e=this.getHoverAreaElement();"pause"!==t.on_hover_out&&"reverse"!==t.on_hover_out||(this.state.hoverOutMode=t.on_hover_out,this.listeners.elements.$widgetArea.triggerAnimationHoverOut=()=>{"pause"===t.on_hover_out?this.lottie.pause():(this.state.animationDirection="backward",this.playLottie())},this.addSessionEventListener(e,"mouseleave",this.listeners.elements.$widgetArea.triggerAnimationHoverOut))}getHoverAreaElement(){const t=this.getLottieSettings();return"section"===t.hover_area?this.elements.$sectionParent:"column"===t.hover_area?this.elements.$columnParent:this.elements.$container}setLoopOnAnimationComplete(){const t=this.getLottieSettings();this.state.isNewLoopCycle=!0,t.loop&&!this.isReverseMode()?this.setLoopWhenNotReverse():t.loop&&this.isReverseMode()?this.setReverseAnimationOnLoop():!t.loop&&this.isReverseMode()&&this.setReverseAnimationOnSingleTrigger()}isReverseMode(){const t=this.getLottieSettings();return"yes"===t.reverse_animation||"reverse"===t.on_hover_out&&"backward"===this.state.animationDirection}setLoopWhenNotReverse(){const t=this.getLottieSettings();t.number_of_times>0?(this.state.playAnimationCount++,this.state.playAnimationCount<t.number_of_times?this.playLottie():this.state.playAnimationCount=0):this.playLottie()}setReverseAnimationOnLoop(){const t=this.getLottieSettings();!t.number_of_times||this.state.playAnimationCount<t.number_of_times?(this.state.animationDirection="forward"===this.state.animationDirection?"backward":"forward",this.playLottie(),"backward"===this.state.animationDirection&&this.state.playAnimationCount++):(this.state.playAnimationCount=0,this.state.animationDirection="forward")}setReverseAnimationOnSingleTrigger(){this.state.playAnimationCount<1?(this.state.playAnimationCount++,this.state.animationDirection="backward",this.playLottie()):this.state.playAnimationCount>=1&&"forward"===this.state.animationDirection?(this.state.animationDirection="backward",this.playLottie()):(this.state.playAnimationCount=0,this.state.animationDirection="forward")}setAnimationSpeed(){const t=this.getLottieSettings();t.play_speed&&this.lottie.setSpeed(t.play_speed.size)}onElementChange(){this.updateLottieValues(),this.resetAnimationTrigger()}updateLottieValues(){var t;const e=this.getLottieSettings();[{sourceVal:null===(t=e.play_speed)||void 0===t?void 0:t.size,stateProp:"animationSpeed",callback:()=>this.setAnimationSpeed()},{sourceVal:e.link_timeout,stateProp:"linkTimeout",callback:()=>this.setLinkTimeout()},{sourceVal:e.caption,stateProp:"caption",callback:()=>this.setCaption()},{sourceVal:e.effects_relative_to,stateProp:"effectsRelativeTo",callback:()=>this.updateAnimationByScrollPosition()},{sourceVal:e.loop,stateProp:"loop",callback:()=>this.onLoopStateChange()}].forEach((t=>{void 0!==t.sourceVal&&t.sourceVal!==this.state[t.stateProp]&&(this.state[t.stateProp]=t.sourceVal,t.callback())}))}onLoopStateChange(){const t="arriving_to_viewport"===this.state.currentAnimationTrigger&&this.state.isInViewport;this.state.loop&&(t||"none"===this.state.currentAnimationTrigger)&&this.playLottie()}resetAnimationTrigger(){const t=this.getLottieSettings(),e=t.trigger!==this.state.currentAnimationTrigger,i=!!t.viewport&&this.isViewportOffsetChange(),s=!!t.on_hover_out&&this.isHoverOutModeChange(),n=!!t.hover_area&&this.isHoverAreaChange();(e||i||s||n)&&(this.removeAnimationFrameRequests(),this.removeObservers(),this.removeEventListeners(),this.initAnimationTrigger())}isViewportOffsetChange(){const t=this.getLottieSettings(),e=t.viewport.sizes.start!==this.state.viewportOffset.start,i=t.viewport.sizes.end!==this.state.viewportOffset.end;return e||i}isHoverOutModeChange(){return this.getLottieSettings().on_hover_out!==this.state.hoverOutMode}isHoverAreaChange(){return this.getLottieSettings().hover_area!==this.state.hoverArea}removeEventListeners(){this.listeners.collection.forEach((t=>{t.$el.off(t.event,null,t.callback)}))}removeObservers(){for(const t in this.intersectionObservers)this.intersectionObservers[t].observer&&this.intersectionObservers[t].element&&this.intersectionObservers[t].observer.unobserve(this.intersectionObservers[t].element)}removeAnimationFrameRequests(){cancelAnimationFrame(this.animationFrameRequest.timer)}onDestroy(){super.onDestroy(),this.destroyLottie()}destroyLottie(){this.removeAnimationFrameRequests(),this.removeObservers(),this.removeEventListeners(),this.elements.$animation.removeData("lottie"),this.lottie&&this.lottie.destroy()}onLottieDomLoaded(){this.saveInitialValues(),this.setAnimationSpeed(),this.setLinkTimeout(),this.setCaption(),this.setAnimationFirstFrame(),this.initAnimationTrigger()}onComplete(){this.setLoopOnAnimationComplete()}onLottieIntersection(t){if(t.isInViewport)this.state.isAnimationScrollUpdateNeededOnFirstLoad&&(this.state.isAnimationScrollUpdateNeededOnFirstLoad=!1,this.updateAnimationByScrollPosition()),this.animationFrameRequest.timer=requestAnimationFrame((()=>this.onAnimationFrameRequest()));else{const e=this.getAnimationFrames(),i="up"===t.intersectionScrollDirection?e.first:e.last;this.state.isAnimationScrollUpdateNeededOnFirstLoad=!1,cancelAnimationFrame(this.animationFrameRequest.timer),this.lottie.goToAndStop(i,!0)}}onAnimationFrameRequest(){window.scrollY!==this.animationFrameRequest.lastScrollY&&(this.updateAnimationByScrollPosition(),this.animationFrameRequest.lastScrollY=window.scrollY),this.animationFrameRequest.timer=requestAnimationFrame((()=>this.onAnimationFrameRequest()))}}e.default=lottieHandler}}]);assets/js/carousel.364bbaf018e09f58c819.bundle.js000064400000023503150755004310014735 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["carousel"],{

/***/ "../modules/carousel/assets/js/frontend/handlers/base.js":
/*!***************************************************************!*\
  !*** ../modules/carousel/assets/js/frontend/handlers/base.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class CarouselBase extends elementorModules.frontend.handlers.SwiperBase {
  getDefaultSettings() {
    return {
      selectors: {
        swiperContainer: '.elementor-main-swiper',
        swiperSlide: '.swiper-slide'
      },
      slidesPerView: {
        widescreen: 3,
        desktop: 3,
        laptop: 3,
        tablet_extra: 3,
        tablet: 2,
        mobile_extra: 2,
        mobile: 1
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors'),
          elements = {
      $swiperContainer: this.$element.find(selectors.swiperContainer)
    };
    elements.$slides = elements.$swiperContainer.find(selectors.swiperSlide);
    return elements;
  }

  getEffect() {
    return this.getElementSettings('effect');
  }

  getDeviceSlidesPerView(device) {
    const slidesPerViewKey = 'slides_per_view' + ('desktop' === device ? '' : '_' + device);
    return Math.min(this.getSlidesCount(), +this.getElementSettings(slidesPerViewKey) || this.getSettings('slidesPerView')[device]);
  }

  getSlidesPerView(device) {
    if ('slide' === this.getEffect()) {
      return this.getDeviceSlidesPerView(device);
    }

    return 1;
  }

  getDeviceSlidesToScroll(device) {
    const slidesToScrollKey = 'slides_to_scroll' + ('desktop' === device ? '' : '_' + device);
    return Math.min(this.getSlidesCount(), +this.getElementSettings(slidesToScrollKey) || 1);
  }

  getSlidesToScroll(device) {
    if ('slide' === this.getEffect()) {
      return this.getDeviceSlidesToScroll(device);
    }

    return 1;
  }

  getSpaceBetween(device) {
    let propertyName = 'space_between';

    if (device && 'desktop' !== device) {
      propertyName += '_' + device;
    }

    return this.getElementSettings(propertyName).size || 0;
  }

  getSwiperOptions() {
    const elementSettings = this.getElementSettings();
    const swiperOptions = {
      grabCursor: true,
      initialSlide: this.getInitialSlide(),
      slidesPerView: this.getSlidesPerView('desktop'),
      slidesPerGroup: this.getSlidesToScroll('desktop'),
      spaceBetween: this.getSpaceBetween(),
      loop: 'yes' === elementSettings.loop,
      speed: elementSettings.speed,
      effect: this.getEffect(),
      preventClicksPropagation: false,
      slideToClickedSlide: true,
      handleElementorBreakpoints: true
    };

    if (elementSettings.show_arrows) {
      swiperOptions.navigation = {
        prevEl: '.elementor-swiper-button-prev',
        nextEl: '.elementor-swiper-button-next'
      };
    }

    if (elementSettings.pagination) {
      swiperOptions.pagination = {
        el: '.swiper-pagination',
        type: elementSettings.pagination,
        clickable: true
      };
    }

    if ('cube' !== this.getEffect()) {
      const breakpointsSettings = {},
            breakpoints = elementorFrontend.config.responsive.activeBreakpoints;
      Object.keys(breakpoints).forEach(breakpointName => {
        breakpointsSettings[breakpoints[breakpointName].value] = {
          slidesPerView: this.getSlidesPerView(breakpointName),
          slidesPerGroup: this.getSlidesToScroll(breakpointName),
          spaceBetween: this.getSpaceBetween(breakpointName)
        };
      });
      swiperOptions.breakpoints = breakpointsSettings;
    }

    if (!this.isEdit && elementSettings.autoplay) {
      swiperOptions.autoplay = {
        delay: elementSettings.autoplay_speed,
        disableOnInteraction: !!elementSettings.pause_on_interaction
      };
    }

    return swiperOptions;
  }

  getDeviceBreakpointValue(device) {
    if (!this.breakpointsDictionary) {
      const breakpoints = elementorFrontend.config.responsive.activeBreakpoints;
      this.breakpointsDictionary = {};
      Object.keys(breakpoints).forEach(breakpointName => {
        this.breakpointsDictionary[breakpointName] = breakpoints[breakpointName].value;
      });
    }

    return this.breakpointsDictionary[device];
  }

  updateSpaceBetween(propertyName) {
    const deviceMatch = propertyName.match('space_between_(.*)'),
          device = deviceMatch ? deviceMatch[1] : 'desktop',
          newSpaceBetween = this.getSpaceBetween(device);

    if ('desktop' !== device) {
      this.swiper.params.breakpoints[this.getDeviceBreakpointValue(device)].spaceBetween = newSpaceBetween;
    } else {
      this.swiper.params.spaceBetween = newSpaceBetween;
    }

    this.swiper.params.spaceBetween = newSpaceBetween;
    this.swiper.update();
  }

  async onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
    const elementSettings = this.getElementSettings();

    if (1 >= this.getSlidesCount()) {
      return;
    }

    const Swiper = elementorFrontend.utils.swiper;
    this.swiper = await new Swiper(this.elements.$swiperContainer, this.getSwiperOptions());

    if ('yes' === elementSettings.pause_on_hover) {
      this.togglePauseOnHover(true);
    } // Expose the swiper instance in the frontend


    this.elements.$swiperContainer.data('swiper', this.swiper);
  }

  getChangeableProperties() {
    return {
      autoplay: 'autoplay',
      pause_on_hover: 'pauseOnHover',
      pause_on_interaction: 'disableOnInteraction',
      autoplay_speed: 'delay',
      speed: 'speed',
      width: 'width'
    };
  }

  updateSwiperOption(propertyName) {
    if (0 === propertyName.indexOf('width')) {
      this.swiper.update();
      return;
    }

    const elementSettings = this.getElementSettings(),
          newSettingValue = elementSettings[propertyName],
          changeableProperties = this.getChangeableProperties();
    let propertyToUpdate = changeableProperties[propertyName],
        valueToUpdate = newSettingValue; // Handle special cases where the value to update is not the value that the Swiper library accepts

    switch (propertyName) {
      case 'autoplay':
        if (newSettingValue) {
          valueToUpdate = {
            delay: elementSettings.autoplay_speed,
            disableOnInteraction: 'yes' === elementSettings.pause_on_interaction
          };
        } else {
          valueToUpdate = false;
        }

        break;

      case 'autoplay_speed':
        propertyToUpdate = 'autoplay';
        valueToUpdate = {
          delay: newSettingValue,
          disableOnInteraction: 'yes' === elementSettings.pause_on_interaction
        };
        break;

      case 'pause_on_hover':
        this.togglePauseOnHover('yes' === newSettingValue);
        break;

      case 'pause_on_interaction':
        valueToUpdate = 'yes' === newSettingValue;
        break;
    } // 'pause_on_hover' is implemented by the handler with event listeners, not the Swiper library


    if ('pause_on_hover' !== propertyName) {
      this.swiper.params[propertyToUpdate] = valueToUpdate;
    }

    this.swiper.update();
  }

  onElementChange(propertyName) {
    if (1 >= this.getSlidesCount()) {
      return;
    }

    if (0 === propertyName.indexOf('width')) {
      this.swiper.update(); // If there is another thumbs slider, like in the Media Carousel widget.

      if (this.thumbsSwiper) {
        this.thumbsSwiper.update();
      }

      return;
    } // This is for handling the responsive control 'space_between'.
    // Responsive controls require a separate way of handling, and some currently don't work
    // (Swiper bug, currently exists in v5.3.6) TODO: update Swiper when bug is fixed and handle responsive controls


    if (0 === propertyName.indexOf('space_between')) {
      this.updateSpaceBetween(propertyName);
      return;
    }

    const changeableProperties = this.getChangeableProperties();

    if (changeableProperties.hasOwnProperty(propertyName)) {
      this.updateSwiperOption(propertyName);
    }
  }

  onEditSettingsChange(propertyName) {
    if (1 >= this.getSlidesCount()) {
      return;
    }

    if ('activeItemIndex' === propertyName) {
      this.swiper.slideToLoop(this.getEditSettings('activeItemIndex') - 1);
    }
  }

}

exports.default = CarouselBase;

/***/ }),

/***/ "../modules/carousel/assets/js/frontend/handlers/testimonial-carousel.js":
/*!*******************************************************************************!*\
  !*** ../modules/carousel/assets/js/frontend/handlers/testimonial-carousel.js ***!
  \*******************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/carousel/assets/js/frontend/handlers/base.js"));

class TestimonialCarousel extends _base.default {
  getDefaultSettings() {
    const defaultSettings = super.getDefaultSettings();
    defaultSettings.slidesPerView = {
      desktop: 1
    };
    Object.keys(elementorFrontend.config.responsive.activeBreakpoints).forEach(breakpointName => {
      defaultSettings.slidesPerView[breakpointName] = 1;
    });

    if (defaultSettings.loop) {
      defaultSettings.loopedSlides = this.getSlidesCount();
    }

    return defaultSettings;
  }

  getEffect() {
    return 'slide';
  }

}

exports.default = TestimonialCarousel;

/***/ })

}]);
//# sourceMappingURL=carousel.364bbaf018e09f58c819.bundle.js.mapassets/js/frontend.js000064400000126736150755004310010656 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["frontend"],{

/***/ "../node_modules/@babel/runtime/helpers/defineProperty.js":
/*!****************************************************************!*\
  !*** ../node_modules/@babel/runtime/helpers/defineProperty.js ***!
  \****************************************************************/
/***/ ((module) => {

function _defineProperty(obj, key, value) {
  if (key in obj) {
    Object.defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
  } else {
    obj[key] = value;
  }

  return obj;
}

module.exports = _defineProperty;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
  \***********************************************************************/
/***/ ((module) => {

function _interopRequireDefault(obj) {
  return obj && obj.__esModule ? obj : {
    "default": obj
  };
}

module.exports = _interopRequireDefault;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../assets/dev/js/frontend/frontend.js":
/*!*********************************************!*\
  !*** ../assets/dev/js/frontend/frontend.js ***!
  \*********************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

__webpack_require__(/*! ../public-path */ "../assets/dev/js/public-path.js");

var _frontend = _interopRequireDefault(__webpack_require__(/*! ../../../../modules/motion-fx/assets/js/frontend/frontend */ "../modules/motion-fx/assets/js/frontend/frontend.js"));

var _frontend2 = _interopRequireDefault(__webpack_require__(/*! ../../../../modules/sticky/assets/js/frontend/frontend */ "../modules/sticky/assets/js/frontend/frontend.js"));

var _frontend3 = _interopRequireDefault(__webpack_require__(/*! ../../../../modules/code-highlight/assets/js/frontend/frontend */ "../modules/code-highlight/assets/js/frontend/frontend.js"));

var _frontend4 = _interopRequireDefault(__webpack_require__(/*! ../../../../modules/video-playlist/assets/js/frontend/frontend */ "../modules/video-playlist/assets/js/frontend/frontend.js"));

var _frontend5 = _interopRequireDefault(__webpack_require__(/*! ../../../../modules/payments/assets/js/frontend/frontend */ "../modules/payments/assets/js/frontend/frontend.js"));

var _frontend6 = _interopRequireDefault(__webpack_require__(/*! ../../../../modules/progress-tracker/assets/js/frontend/frontend */ "../modules/progress-tracker/assets/js/frontend/frontend.js"));

class ElementorProFrontend extends elementorModules.ViewModule {
  onInit() {
    super.onInit();
    this.config = ElementorProFrontendConfig;
    this.modules = {};
  }

  bindEvents() {
    jQuery(window).on('elementor/frontend/init', this.onElementorFrontendInit.bind(this));
  }

  initModules() {
    // Handlers that should be available by default for sections usage.
    let handlers = {
      motionFX: _frontend.default,
      sticky: _frontend2.default,
      codeHighlight: _frontend3.default,
      videoPlaylist: _frontend4.default,
      payments: _frontend5.default,
      progressTracker: _frontend6.default
    }; // Keep this line before applying filter on the handlers.

    elementorProFrontend.trigger('elementor-pro/modules/init:before');
    handlers = elementorFrontend.hooks.applyFilters('elementor-pro/frontend/handlers', handlers);
    jQuery.each(handlers, (moduleName, ModuleClass) => {
      this.modules[moduleName] = new ModuleClass();
    }); // TODO: BC Since 2.9.0

    this.modules.linkActions = {
      addAction: (...args) => {
        elementorFrontend.utils.urlActions.addAction(...args);
      }
    };
  }

  onElementorFrontendInit() {
    this.initModules();
  }

}

window.elementorProFrontend = new ElementorProFrontend();

/***/ }),

/***/ "../assets/dev/js/public-path.js":
/*!***************************************!*\
  !*** ../assets/dev/js/public-path.js ***!
  \***************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


/* eslint-disable camelcase */
__webpack_require__.p = ElementorProFrontendConfig.urls.assets + 'js/';

/***/ }),

/***/ "../modules/code-highlight/assets/js/frontend/frontend.js":
/*!****************************************************************!*\
  !*** ../modules/code-highlight/assets/js/frontend/frontend.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('code-highlight', () => __webpack_require__.e(/*! import() | code-highlight */ "code-highlight").then(__webpack_require__.bind(__webpack_require__, /*! ./handler */ "../modules/code-highlight/assets/js/frontend/handler.js")));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/motion-fx/assets/js/frontend/frontend.js":
/*!***********************************************************!*\
  !*** ../modules/motion-fx/assets/js/frontend/frontend.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _handler = _interopRequireDefault(__webpack_require__(/*! ./handler */ "../modules/motion-fx/assets/js/frontend/handler.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('global', _handler.default, null);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/motion-fx/assets/js/frontend/handler.js":
/*!**********************************************************!*\
  !*** ../modules/motion-fx/assets/js/frontend/handler.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _motionFx = _interopRequireDefault(__webpack_require__(/*! ./motion-fx/motion-fx */ "../modules/motion-fx/assets/js/frontend/motion-fx/motion-fx.js"));

class _default extends elementorModules.frontend.handlers.Base {
  __construct(...args) {
    super.__construct(...args);

    this.toggle = elementorFrontend.debounce(this.toggle, 200);
  }

  getDefaultSettings() {
    return {
      selectors: {
        container: '.elementor-widget-container'
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors');
    return {
      $container: this.$element.find(selectors.container)
    };
  }

  bindEvents() {
    elementorFrontend.elements.$window.on('resize', this.toggle);
  }

  unbindEvents() {
    elementorFrontend.elements.$window.off('resize', this.toggle);
  }

  addCSSTransformEvents() {
    // Remove CSS transition variable that assigned from scroll.js in order to allow the transition of the CSS-Transform.
    const motionFxScrolling = this.getElementSettings('motion_fx_motion_fx_scrolling');

    if (motionFxScrolling && !this.isTransitionEventAdded) {
      this.isTransitionEventAdded = true;
      this.elements.$container.on('mouseenter', () => {
        this.elements.$container.css('--e-transform-transition-duration', '');
      });
    }
  }

  initEffects() {
    this.effects = {
      translateY: {
        interaction: 'scroll',
        actions: ['translateY']
      },
      translateX: {
        interaction: 'scroll',
        actions: ['translateX']
      },
      rotateZ: {
        interaction: 'scroll',
        actions: ['rotateZ']
      },
      scale: {
        interaction: 'scroll',
        actions: ['scale']
      },
      opacity: {
        interaction: 'scroll',
        actions: ['opacity']
      },
      blur: {
        interaction: 'scroll',
        actions: ['blur']
      },
      mouseTrack: {
        interaction: 'mouseMove',
        actions: ['translateXY']
      },
      tilt: {
        interaction: 'mouseMove',
        actions: ['tilt']
      }
    };
  }

  prepareOptions(name) {
    const elementSettings = this.getElementSettings(),
          type = 'motion_fx' === name ? 'element' : 'background',
          interactions = {};
    jQuery.each(elementSettings, (key, value) => {
      const keyRegex = new RegExp('^' + name + '_(.+?)_effect'),
            keyMatches = key.match(keyRegex);

      if (!keyMatches || !value) {
        return;
      }

      const options = {},
            effectName = keyMatches[1];
      jQuery.each(elementSettings, (subKey, subValue) => {
        const subKeyRegex = new RegExp(name + '_' + effectName + '_(.+)'),
              subKeyMatches = subKey.match(subKeyRegex);

        if (!subKeyMatches) {
          return;
        }

        const subFieldName = subKeyMatches[1];

        if ('effect' === subFieldName) {
          return;
        }

        if ('object' === typeof subValue) {
          subValue = Object.keys(subValue.sizes).length ? subValue.sizes : subValue.size;
        }

        options[subKeyMatches[1]] = subValue;
      });
      const effect = this.effects[effectName],
            interactionName = effect.interaction;

      if (!interactions[interactionName]) {
        interactions[interactionName] = {};
      }

      effect.actions.forEach(action => interactions[interactionName][action] = options);
    });
    let $element = this.$element,
        $dimensionsElement;
    const elementType = this.getElementType();

    if ('element' === type && 'section' !== elementType) {
      $dimensionsElement = $element;
      let childElementSelector;

      if ('column' === elementType) {
        childElementSelector = elementorFrontend.config.legacyMode.elementWrappers ? '.elementor-column-wrap' : '.elementor-widget-wrap';
      } else {
        childElementSelector = '.elementor-widget-container';
      }

      $element = $element.find('> ' + childElementSelector);
    }

    const options = {
      type,
      interactions,
      elementSettings,
      $element,
      $dimensionsElement,
      refreshDimensions: this.isEdit,
      range: elementSettings[name + '_range'],
      classes: {
        element: 'elementor-motion-effects-element',
        parent: 'elementor-motion-effects-parent',
        backgroundType: 'elementor-motion-effects-element-type-background',
        container: 'elementor-motion-effects-container',
        layer: 'elementor-motion-effects-layer',
        perspective: 'elementor-motion-effects-perspective'
      }
    };

    if (!options.range && 'fixed' === this.getCurrentDeviceSetting('_position')) {
      options.range = 'page';
    }

    if ('fixed' === this.getCurrentDeviceSetting('_position')) {
      options.isFixedPosition = true;
    }

    if ('background' === type && 'column' === this.getElementType()) {
      options.addBackgroundLayerTo = ' > .elementor-element-populated';
    }

    return options;
  }

  activate(name) {
    const options = this.prepareOptions(name);

    if (jQuery.isEmptyObject(options.interactions)) {
      return;
    }

    this[name] = new _motionFx.default(options);
  }

  deactivate(name) {
    if (this[name]) {
      this[name].destroy();
      delete this[name];
    }
  }

  toggle() {
    const currentDeviceMode = elementorFrontend.getCurrentDeviceMode(),
          elementSettings = this.getElementSettings();
    ['motion_fx', 'background_motion_fx'].forEach(name => {
      const devices = elementSettings[name + '_devices'],
            isCurrentModeActive = !devices || -1 !== devices.indexOf(currentDeviceMode);

      if (isCurrentModeActive && (elementSettings[name + '_motion_fx_scrolling'] || elementSettings[name + '_motion_fx_mouse'])) {
        if (this[name]) {
          this.refreshInstance(name);
        } else {
          this.activate(name);
        }
      } else {
        this.deactivate(name);
      }
    });
  }

  refreshInstance(instanceName) {
    const instance = this[instanceName];

    if (!instance) {
      return;
    }

    const preparedOptions = this.prepareOptions(instanceName);
    instance.setSettings(preparedOptions);
    instance.refresh();
  }

  onInit() {
    super.onInit();
    this.initEffects();
    this.addCSSTransformEvents();
    this.toggle();
  }

  onElementChange(propertyName) {
    if (/motion_fx_((scrolling)|(mouse)|(devices))$/.test(propertyName)) {
      if ('motion_fx_motion_fx_scrolling' === propertyName) {
        this.addCSSTransformEvents();
      }

      this.toggle();
      return;
    }

    const propertyMatches = propertyName.match('.*?(motion_fx|_transform)');

    if (propertyMatches) {
      const instanceName = propertyMatches[0].match('(_transform)') ? 'motion_fx' : propertyMatches[0];
      this.refreshInstance(instanceName);

      if (!this[instanceName]) {
        this.activate(instanceName);
      }
    }

    if (/^_position/.test(propertyName)) {
      ['motion_fx', 'background_motion_fx'].forEach(instanceName => {
        this.refreshInstance(instanceName);
      });
    }
  }

  onDestroy() {
    super.onDestroy();
    ['motion_fx', 'background_motion_fx'].forEach(name => {
      this.deactivate(name);
    });
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/motion-fx/assets/js/frontend/motion-fx/actions.js":
/*!********************************************************************!*\
  !*** ../modules/motion-fx/assets/js/frontend/motion-fx/actions.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  getMovePointFromPassedPercents(movableRange, passedPercents) {
    const movePoint = passedPercents / movableRange * 100;
    return +movePoint.toFixed(2);
  }

  getEffectValueFromMovePoint(range, movePoint) {
    return range * movePoint / 100;
  }

  getStep(passedPercents, options) {
    if ('element' === this.getSettings('type')) {
      return this.getElementStep(passedPercents, options);
    }

    return this.getBackgroundStep(passedPercents, options);
  }

  getElementStep(passedPercents, options) {
    return -(passedPercents - 50) * options.speed;
  }

  getBackgroundStep(passedPercents, options) {
    const movableRange = this.getSettings('dimensions.movable' + options.axis.toUpperCase());
    return -this.getEffectValueFromMovePoint(movableRange, passedPercents);
  }

  getDirectionMovePoint(passedPercents, direction, range) {
    let movePoint;

    if (passedPercents < range.start) {
      if ('out-in' === direction) {
        movePoint = 0;
      } else if ('in-out' === direction) {
        movePoint = 100;
      } else {
        movePoint = this.getMovePointFromPassedPercents(range.start, passedPercents);

        if ('in-out-in' === direction) {
          movePoint = 100 - movePoint;
        }
      }
    } else if (passedPercents < range.end) {
      if ('in-out-in' === direction) {
        movePoint = 0;
      } else if ('out-in-out' === direction) {
        movePoint = 100;
      } else {
        movePoint = this.getMovePointFromPassedPercents(range.end - range.start, passedPercents - range.start);

        if ('in-out' === direction) {
          movePoint = 100 - movePoint;
        }
      }
    } else if ('in-out' === direction) {
      movePoint = 0;
    } else if ('out-in' === direction) {
      movePoint = 100;
    } else {
      movePoint = this.getMovePointFromPassedPercents(100 - range.end, 100 - passedPercents);

      if ('in-out-in' === direction) {
        movePoint = 100 - movePoint;
      }
    }

    return movePoint;
  }

  translateX(actionData, passedPercents) {
    actionData.axis = 'x';
    actionData.unit = 'px';
    this.transform('translateX', passedPercents, actionData);
  }

  translateY(actionData, passedPercents) {
    actionData.axis = 'y';
    actionData.unit = 'px';
    this.transform('translateY', passedPercents, actionData);
  }

  translateXY(actionData, passedPercentsX, passedPercentsY) {
    this.translateX(actionData, passedPercentsX);
    this.translateY(actionData, passedPercentsY);
  }

  tilt(actionData, passedPercentsX, passedPercentsY) {
    const options = {
      speed: actionData.speed / 10,
      direction: actionData.direction
    };
    this.rotateX(options, passedPercentsY);
    this.rotateY(options, 100 - passedPercentsX);
  }

  rotateX(actionData, passedPercents) {
    actionData.axis = 'x';
    actionData.unit = 'deg';
    this.transform('rotateX', passedPercents, actionData);
  }

  rotateY(actionData, passedPercents) {
    actionData.axis = 'y';
    actionData.unit = 'deg';
    this.transform('rotateY', passedPercents, actionData);
  }

  rotateZ(actionData, passedPercents) {
    actionData.unit = 'deg';
    this.transform('rotateZ', passedPercents, actionData);
  }

  scale(actionData, passedPercents) {
    const movePoint = this.getDirectionMovePoint(passedPercents, actionData.direction, actionData.range);
    this.updateRulePart('transform', 'scale', 1 + actionData.speed * movePoint / 1000);
  }

  transform(action, passedPercents, actionData) {
    if (actionData.direction) {
      passedPercents = 100 - passedPercents;
    }

    this.updateRulePart('transform', action, this.getStep(passedPercents, actionData) + actionData.unit);
  }

  setCSSTransformVariables(elementSettings) {
    this.CSSTransformVariables = [];
    jQuery.each(elementSettings, (settingKey, settingValue) => {
      const transformKeyMatches = settingKey.match(/_transform_(.+?)_effect/m);

      if (transformKeyMatches && settingValue) {
        if ('perspective' === transformKeyMatches[1]) {
          this.CSSTransformVariables.unshift(transformKeyMatches[1]);
          return;
        }

        if (this.CSSTransformVariables.includes(transformKeyMatches[1])) {
          return;
        }

        this.CSSTransformVariables.push(transformKeyMatches[1]);
      }
    });
  }

  opacity(actionData, passedPercents) {
    const movePoint = this.getDirectionMovePoint(passedPercents, actionData.direction, actionData.range),
          level = actionData.level / 10,
          opacity = 1 - level + this.getEffectValueFromMovePoint(level, movePoint);
    this.$element.css({
      opacity,
      'will-change': 'opacity'
    });
  }

  blur(actionData, passedPercents) {
    const movePoint = this.getDirectionMovePoint(passedPercents, actionData.direction, actionData.range),
          blur = actionData.level - this.getEffectValueFromMovePoint(actionData.level, movePoint);
    this.updateRulePart('filter', 'blur', blur + 'px');
  }

  updateRulePart(ruleName, key, value) {
    if (!this.rulesVariables[ruleName]) {
      this.rulesVariables[ruleName] = {};
    }

    if (!this.rulesVariables[ruleName][key]) {
      this.rulesVariables[ruleName][key] = true;
      this.updateRule(ruleName);
    }

    const cssVarKey = `--${key}`;
    this.$element[0].style.setProperty(cssVarKey, value);
  }

  updateRule(ruleName) {
    let value = '';
    value += this.concatTransformCSSProperties(ruleName);
    value += this.concatTransformMotionEffectCSSProperties(ruleName);
    this.$element.css(ruleName, value);
  }

  concatTransformCSSProperties(ruleName) {
    let value = '';

    if ('transform' === ruleName) {
      jQuery.each(this.CSSTransformVariables, (index, variableKey) => {
        const variableName = variableKey;

        if (variableKey.startsWith('flip')) {
          variableKey = variableKey.replace('flip', 'scale');
        } // Adding default value because of the hover state. if there is no default the transform will break.


        const defaultUnit = variableKey.startsWith('rotate') || variableKey.startsWith('skew') ? 'deg' : 'px',
              defaultValue = variableKey.startsWith('scale') ? 1 : 0 + defaultUnit;
        value += `${variableKey}(var(--e-transform-${variableName}, ${defaultValue}))`;
      });
    }

    return value;
  }

  concatTransformMotionEffectCSSProperties(ruleName) {
    let value = '';
    jQuery.each(this.rulesVariables[ruleName], variableKey => {
      value += `${variableKey}(var(--${variableKey}))`;
    });
    return value;
  }

  runAction(actionName, actionData, passedPercents, ...args) {
    if (actionData.affectedRange) {
      if (actionData.affectedRange.start > passedPercents) {
        passedPercents = actionData.affectedRange.start;
      }

      if (actionData.affectedRange.end < passedPercents) {
        passedPercents = actionData.affectedRange.end;
      }
    }

    this[actionName](actionData, passedPercents, ...args);
  }

  refresh() {
    this.rulesVariables = {};
    this.CSSTransformVariables = [];
    this.$element.css({
      transform: '',
      filter: '',
      opacity: '',
      'will-change': ''
    });
  }

  onInit() {
    this.$element = this.getSettings('$targetElement');
    this.refresh();
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/motion-fx/assets/js/frontend/motion-fx/interactions/base.js":
/*!******************************************************************************!*\
  !*** ../modules/motion-fx/assets/js/frontend/motion-fx/interactions/base.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));

class _default extends elementorModules.ViewModule {
  constructor(...args) {
    super(...args);
    (0, _defineProperty2.default)(this, "onInsideViewport", () => {
      this.run();
      this.animationFrameRequest = requestAnimationFrame(this.onInsideViewport);
    });
  }

  __construct(options) {
    this.motionFX = options.motionFX;

    if (!this.intersectionObservers) {
      this.setElementInViewportObserver();
    }
  }

  setElementInViewportObserver() {
    this.intersectionObserver = elementorModules.utils.Scroll.scrollObserver({
      callback: event => {
        if (event.isInViewport) {
          this.onInsideViewport();
        } else {
          this.removeAnimationFrameRequest();
        }
      }
    });
    this.intersectionObserver.observe(this.motionFX.elements.$parent[0]);
  }

  runCallback(...args) {
    const callback = this.getSettings('callback');
    callback(...args);
  }

  removeIntersectionObserver() {
    if (this.intersectionObserver) {
      this.intersectionObserver.unobserve(this.motionFX.elements.$parent[0]);
    }
  }

  removeAnimationFrameRequest() {
    if (this.animationFrameRequest) {
      cancelAnimationFrame(this.animationFrameRequest);
    }
  }

  destroy() {
    this.removeAnimationFrameRequest();
    this.removeIntersectionObserver();
  }

  onInit() {
    super.onInit();
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/motion-fx/assets/js/frontend/motion-fx/interactions/mouse-move.js":
/*!************************************************************************************!*\
  !*** ../modules/motion-fx/assets/js/frontend/motion-fx/interactions/mouse-move.js ***!
  \************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/motion-fx/assets/js/frontend/motion-fx/interactions/base.js"));

class MouseMoveInteraction extends _base.default {
  bindEvents() {
    if (!MouseMoveInteraction.mouseTracked) {
      elementorFrontend.elements.$window.on('mousemove', MouseMoveInteraction.updateMousePosition);
      MouseMoveInteraction.mouseTracked = true;
    }
  }

  run() {
    const mousePosition = MouseMoveInteraction.mousePosition,
          oldMousePosition = this.oldMousePosition;

    if (oldMousePosition.x === mousePosition.x && oldMousePosition.y === mousePosition.y) {
      return;
    }

    this.oldMousePosition = {
      x: mousePosition.x,
      y: mousePosition.y
    };
    const passedPercentsX = 100 / innerWidth * mousePosition.x,
          passedPercentsY = 100 / innerHeight * mousePosition.y;
    this.runCallback(passedPercentsX, passedPercentsY);
  }

  onInit() {
    this.oldMousePosition = {};
    super.onInit();
  }

}

exports.default = MouseMoveInteraction;
MouseMoveInteraction.mousePosition = {};

MouseMoveInteraction.updateMousePosition = event => {
  MouseMoveInteraction.mousePosition = {
    x: event.clientX,
    y: event.clientY
  };
};

/***/ }),

/***/ "../modules/motion-fx/assets/js/frontend/motion-fx/interactions/scroll.js":
/*!********************************************************************************!*\
  !*** ../modules/motion-fx/assets/js/frontend/motion-fx/interactions/scroll.js ***!
  \********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/motion-fx/assets/js/frontend/motion-fx/interactions/base.js"));

class _default extends _base.default {
  run() {
    if (pageYOffset === this.windowScrollTop) {
      return false;
    }

    this.onScrollMovement();
    this.windowScrollTop = pageYOffset;
  }

  onScrollMovement() {
    this.updateMotionFxDimensions();
    this.updateAnimation();
    this.resetTransitionVariable();
  }

  resetTransitionVariable() {
    this.motionFX.$element.css('--e-transform-transition-duration', '100ms');
  }

  updateMotionFxDimensions() {
    const motionFXSettings = this.motionFX.getSettings();

    if (motionFXSettings.refreshDimensions) {
      this.motionFX.defineDimensions();
    }
  }

  updateAnimation() {
    let passedRangePercents;

    if ('page' === this.motionFX.getSettings('range')) {
      passedRangePercents = elementorModules.utils.Scroll.getPageScrollPercentage();
    } else if (this.motionFX.getSettings('isFixedPosition')) {
      passedRangePercents = elementorModules.utils.Scroll.getPageScrollPercentage({}, window.innerHeight);
    } else {
      passedRangePercents = elementorModules.utils.Scroll.getElementViewportPercentage(this.motionFX.elements.$parent);
    }

    this.runCallback(passedRangePercents);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/motion-fx/assets/js/frontend/motion-fx/motion-fx.js":
/*!**********************************************************************!*\
  !*** ../modules/motion-fx/assets/js/frontend/motion-fx/motion-fx.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _scroll = _interopRequireDefault(__webpack_require__(/*! ./interactions/scroll */ "../modules/motion-fx/assets/js/frontend/motion-fx/interactions/scroll.js"));

var _mouseMove = _interopRequireDefault(__webpack_require__(/*! ./interactions/mouse-move */ "../modules/motion-fx/assets/js/frontend/motion-fx/interactions/mouse-move.js"));

var _actions = _interopRequireDefault(__webpack_require__(/*! ./actions */ "../modules/motion-fx/assets/js/frontend/motion-fx/actions.js"));

class _default extends elementorModules.ViewModule {
  getDefaultSettings() {
    return {
      type: 'element',
      $element: null,
      $dimensionsElement: null,
      addBackgroundLayerTo: null,
      interactions: {},
      refreshDimensions: false,
      range: 'viewport',
      classes: {
        element: 'motion-fx-element',
        parent: 'motion-fx-parent',
        backgroundType: 'motion-fx-element-type-background',
        container: 'motion-fx-container',
        layer: 'motion-fx-layer',
        perspective: 'motion-fx-perspective'
      }
    };
  }

  bindEvents() {
    this.onWindowResize = this.onWindowResize.bind(this);
    elementorFrontend.elements.$window.on('resize', this.onWindowResize);
  }

  unbindEvents() {
    elementorFrontend.elements.$window.off('resize', this.onWindowResize);
  }

  addBackgroundLayer() {
    const settings = this.getSettings();
    this.elements.$motionFXContainer = jQuery('<div>', {
      class: settings.classes.container
    });
    this.elements.$motionFXLayer = jQuery('<div>', {
      class: settings.classes.layer
    });
    this.updateBackgroundLayerSize();
    this.elements.$motionFXContainer.prepend(this.elements.$motionFXLayer);
    const $addBackgroundLayerTo = settings.addBackgroundLayerTo ? this.$element.find(settings.addBackgroundLayerTo) : this.$element;
    $addBackgroundLayerTo.prepend(this.elements.$motionFXContainer);
  }

  removeBackgroundLayer() {
    this.elements.$motionFXContainer.remove();
  }

  updateBackgroundLayerSize() {
    const settings = this.getSettings(),
          speed = {
      x: 0,
      y: 0
    },
          mouseInteraction = settings.interactions.mouseMove,
          scrollInteraction = settings.interactions.scroll;

    if (mouseInteraction && mouseInteraction.translateXY) {
      speed.x = mouseInteraction.translateXY.speed * 10;
      speed.y = mouseInteraction.translateXY.speed * 10;
    }

    if (scrollInteraction) {
      if (scrollInteraction.translateX) {
        speed.x = scrollInteraction.translateX.speed * 10;
      }

      if (scrollInteraction.translateY) {
        speed.y = scrollInteraction.translateY.speed * 10;
      }
    }

    this.elements.$motionFXLayer.css({
      width: 100 + speed.x + '%',
      height: 100 + speed.y + '%'
    });
  }

  defineDimensions() {
    const $dimensionsElement = this.getSettings('$dimensionsElement') || this.$element,
          elementOffset = $dimensionsElement.offset();
    const dimensions = {
      elementHeight: $dimensionsElement.outerHeight(),
      elementWidth: $dimensionsElement.outerWidth(),
      elementTop: elementOffset.top,
      elementLeft: elementOffset.left
    };
    dimensions.elementRange = dimensions.elementHeight + innerHeight;
    this.setSettings('dimensions', dimensions);

    if ('background' === this.getSettings('type')) {
      this.defineBackgroundLayerDimensions();
    }
  }

  defineBackgroundLayerDimensions() {
    const dimensions = this.getSettings('dimensions');
    dimensions.layerHeight = this.elements.$motionFXLayer.height();
    dimensions.layerWidth = this.elements.$motionFXLayer.width();
    dimensions.movableX = dimensions.layerWidth - dimensions.elementWidth;
    dimensions.movableY = dimensions.layerHeight - dimensions.elementHeight;
    this.setSettings('dimensions', dimensions);
  }

  initInteractionsTypes() {
    this.interactionsTypes = {
      scroll: _scroll.default,
      mouseMove: _mouseMove.default
    };
  }

  prepareSpecialActions() {
    const settings = this.getSettings(),
          hasTiltEffect = !!(settings.interactions.mouseMove && settings.interactions.mouseMove.tilt);
    this.elements.$parent.toggleClass(settings.classes.perspective, hasTiltEffect);
  }

  cleanSpecialActions() {
    const settings = this.getSettings();
    this.elements.$parent.removeClass(settings.classes.perspective);
  }

  runInteractions() {
    const settings = this.getSettings();
    this.actions.setCSSTransformVariables(settings.elementSettings);
    this.prepareSpecialActions();
    jQuery.each(settings.interactions, (interactionName, actions) => {
      this.interactions[interactionName] = new this.interactionsTypes[interactionName]({
        motionFX: this,
        callback: (...args) => {
          jQuery.each(actions, (actionName, actionData) => this.actions.runAction(actionName, actionData, ...args));
        }
      });
      this.interactions[interactionName].run();
    });
  }

  destroyInteractions() {
    this.cleanSpecialActions();
    jQuery.each(this.interactions, (interactionName, interaction) => interaction.destroy());
    this.interactions = {};
  }

  refresh() {
    this.actions.setSettings(this.getSettings());

    if ('background' === this.getSettings('type')) {
      this.updateBackgroundLayerSize();
      this.defineBackgroundLayerDimensions();
    }

    this.actions.refresh();
    this.destroyInteractions();
    this.runInteractions();
  }

  destroy() {
    this.destroyInteractions();
    this.actions.refresh();
    const settings = this.getSettings();
    this.$element.removeClass(settings.classes.element);
    this.elements.$parent.removeClass(settings.classes.parent);

    if ('background' === settings.type) {
      this.$element.removeClass(settings.classes.backgroundType);
      this.removeBackgroundLayer();
    }
  }

  onInit() {
    super.onInit();
    const settings = this.getSettings();
    this.$element = settings.$element;
    this.elements.$parent = this.$element.parent();
    this.$element.addClass(settings.classes.element);
    this.elements.$parent = this.$element.parent();
    this.elements.$parent.addClass(settings.classes.parent);

    if ('background' === settings.type) {
      this.$element.addClass(settings.classes.backgroundType);
      this.addBackgroundLayer();
    }

    this.defineDimensions();
    settings.$targetElement = 'element' === settings.type ? this.$element : this.elements.$motionFXLayer;
    this.interactions = {};
    this.actions = new _actions.default(settings);
    this.initInteractionsTypes();
    this.runInteractions();
  }

  onWindowResize() {
    this.defineDimensions();
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/payments/assets/js/frontend/frontend.js":
/*!**********************************************************!*\
  !*** ../modules/payments/assets/js/frontend/frontend.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('paypal-button', () => __webpack_require__.e(/*! import() | paypal-button */ "paypal-button").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/paypal-button */ "../modules/payments/assets/js/frontend/handlers/paypal-button.js")));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/progress-tracker/assets/js/frontend/frontend.js":
/*!******************************************************************!*\
  !*** ../modules/progress-tracker/assets/js/frontend/frontend.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('progress-tracker', () => __webpack_require__.e(/*! import() | progress-tracker */ "progress-tracker").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/progress-tracker */ "../modules/progress-tracker/assets/js/frontend/handlers/progress-tracker.js")));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/sticky/assets/js/frontend/frontend.js":
/*!********************************************************!*\
  !*** ../modules/sticky/assets/js/frontend/frontend.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _sticky = _interopRequireDefault(__webpack_require__(/*! ./handlers/sticky */ "../modules/sticky/assets/js/frontend/handlers/sticky.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('section', _sticky.default, null);
    elementorFrontend.elementsHandler.attachHandler('widget', _sticky.default, null);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/sticky/assets/js/frontend/handlers/sticky.js":
/*!***************************************************************!*\
  !*** ../modules/sticky/assets/js/frontend/handlers/sticky.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  bindEvents() {
    elementorFrontend.addListenerOnce(this.getUniqueHandlerID() + 'sticky', 'resize', this.run);
  },

  unbindEvents() {
    elementorFrontend.removeListeners(this.getUniqueHandlerID() + 'sticky', 'resize', this.run);
  },

  isStickyInstanceActive() {
    return undefined !== this.$element.data('sticky');
  },

  /**
   * Get the current active setting value for a responsive control.
   *
   * @param {string} setting
   *
   * @return {any} - Setting value.
   */
  getResponsiveSetting(setting) {
    const elementSettings = this.getElementSettings();
    return elementorFrontend.getCurrentDeviceSetting(elementSettings, setting);
  },

  /**
   * Return an array of settings names for responsive control (e.g. `settings`, `setting_tablet`, `setting_mobile` ).
   *
   * @param {string} setting
   *
   * @return {string[]} - List of settings.
   */
  getResponsiveSettingList(setting) {
    const breakpoints = Object.keys(elementorFrontend.config.responsive.activeBreakpoints);
    return ['', ...breakpoints].map(suffix => {
      return suffix ? `${setting}_${suffix}` : setting;
    });
  },

  activate() {
    var elementSettings = this.getElementSettings(),
        stickyOptions = {
      to: elementSettings.sticky,
      offset: this.getResponsiveSetting('sticky_offset'),
      effectsOffset: this.getResponsiveSetting('sticky_effects_offset'),
      classes: {
        sticky: 'elementor-sticky',
        stickyActive: 'elementor-sticky--active elementor-section--handles-inside',
        stickyEffects: 'elementor-sticky--effects',
        spacer: 'elementor-sticky__spacer'
      }
    },
        $wpAdminBar = elementorFrontend.elements.$wpAdminBar;

    if (elementSettings.sticky_parent) {
      stickyOptions.parent = '.elementor-widget-wrap';
    }

    if ($wpAdminBar.length && 'top' === elementSettings.sticky && 'fixed' === $wpAdminBar.css('position')) {
      stickyOptions.offset += $wpAdminBar.height();
    }

    this.$element.sticky(stickyOptions);
  },

  deactivate() {
    if (!this.isStickyInstanceActive()) {
      return;
    }

    this.$element.sticky('destroy');
  },

  run(refresh) {
    if (!this.getElementSettings('sticky')) {
      this.deactivate();
      return;
    }

    var currentDeviceMode = elementorFrontend.getCurrentDeviceMode(),
        activeDevices = this.getElementSettings('sticky_on');

    if (-1 !== activeDevices.indexOf(currentDeviceMode)) {
      if (true === refresh) {
        this.reactivate();
      } else if (!this.isStickyInstanceActive()) {
        this.activate();
      }
    } else {
      this.deactivate();
    }
  },

  reactivate() {
    this.deactivate();
    this.activate();
  },

  onElementChange(settingKey) {
    if (-1 !== ['sticky', 'sticky_on'].indexOf(settingKey)) {
      this.run(true);
    } // Settings that trigger a re-activation when changed.


    const settings = [...this.getResponsiveSettingList('sticky_offset'), ...this.getResponsiveSettingList('sticky_effects_offset'), 'sticky_parent'];

    if (-1 !== settings.indexOf(settingKey)) {
      this.reactivate();
    }
  },

  /**
   * Listen to device mode changes and re-initialize the sticky.
   *
   * @return {void}
   */
  onDeviceModeChange() {
    // Wait for the call stack to be empty.
    // The `run` function requests the current device mode from the CSS so it's not ready immediately.
    // (need to wait for the `deviceMode` event to change the CSS).
    // See `elementorFrontend.getCurrentDeviceMode()` for reference.
    setTimeout(() => {
      this.run(true);
    });
  },

  onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);

    if (elementorFrontend.isEditMode()) {
      elementor.listenTo(elementor.channels.deviceMode, 'change', () => this.onDeviceModeChange());
    }

    this.run();
  },

  onDestroy() {
    elementorModules.frontend.handlers.Base.prototype.onDestroy.apply(this, arguments);
    this.deactivate();
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/video-playlist/assets/js/frontend/frontend.js":
/*!****************************************************************!*\
  !*** ../modules/video-playlist/assets/js/frontend/frontend.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.hooks.addAction('frontend/element_ready/video-playlist.default', $element => {
      __webpack_require__.e(/*! import() | video-playlist */ "video-playlist").then(__webpack_require__.bind(__webpack_require__, /*! ./handler */ "../modules/video-playlist/assets/js/frontend/handler.js")).then(({
        default: dynamicHandler
      }) => {
        elementorFrontend.elementsHandler.addHandler(dynamicHandler, {
          $element,
          toggleSelf: false
        });
      });
    });
  }

}

exports.default = _default;

/***/ })

},
/******/ __webpack_require__ => { // webpackRuntimeModules
/******/ "use strict";
/******/ 
/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
/******/ var __webpack_exports__ = (__webpack_exec__("../assets/dev/js/frontend/frontend.js"));
/******/ }
]);
//# sourceMappingURL=frontend.js.mapassets/js/share-buttons.42abb737a0de191a4ee9.bundle.min.js000064400000002274150755004310016624 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[58],{9327:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=elementorModules.frontend.handlers.Base.extend({async onInit(){if(!this.isActive())return;elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments);const e=this.getElementSettings(),t=this.getSettings("classes"),s=e.share_url&&e.share_url.url,n={classPrefix:t.shareLinkPrefix};s?n.url=e.share_url.url:(n.url=location.href,n.title=elementorFrontend.config.post.title,n.text=elementorFrontend.config.post.excerpt,n.image=elementorFrontend.config.post.featuredImage),!window.ShareLink&&elementorFrontend.utils.assetsLoader&&await elementorFrontend.utils.assetsLoader.load("script","share-link"),this.elements.$shareButton.shareLink&&this.elements.$shareButton.shareLink(n)},getDefaultSettings:()=>({selectors:{shareButton:".elementor-share-btn"},classes:{shareLinkPrefix:"elementor-share-btn_"}}),getDefaultElements(){var e=this.getSettings("selectors");return{$shareButton:this.$element.find(e.shareButton)}},isActive:()=>!elementorFrontend.isEditMode()});t.default=s}}]);assets/js/woocommerce-my-account.d52e81c74f27be09eb2e.bundle.js000064400000024056150755004310017655 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["woocommerce-my-account"],{

/***/ "../modules/woocommerce/assets/js/frontend/handlers/base.js":
/*!******************************************************************!*\
  !*** ../modules/woocommerce/assets/js/frontend/handlers/base.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class Base extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        stickyRightColumn: '.e-sticky-right-column'
      },
      classes: {
        stickyRightColumnActive: 'e-sticky-right-column--active'
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors');
    return {
      $stickyRightColumn: this.$element.find(selectors.stickyRightColumn)
    };
  }

  bindEvents() {
    // Add our wrapper class around the select2 whenever it is opened.
    elementorFrontend.elements.$document.on('select2:open', event => {
      this.addSelect2Wrapper(event);
    });
  }

  addSelect2Wrapper(event) {
    // The select element is recaptured every time because the markup can refresh
    const selectElement = jQuery(event.target).data('select2');

    if (selectElement.$dropdown) {
      selectElement.$dropdown.addClass('e-woo-select2-wrapper');
    }
  }

  isStickyRightColumnActive() {
    const classes = this.getSettings('classes');
    return this.elements.$stickyRightColumn.hasClass(classes.stickyRightColumnActive);
  }

  activateStickyRightColumn() {
    const elementSettings = this.getElementSettings(),
          $wpAdminBar = elementorFrontend.elements.$wpAdminBar,
          classes = this.getSettings('classes');
    let stickyOptionsOffset = elementSettings.sticky_right_column_offset || 0;

    if ($wpAdminBar.length && 'fixed' === $wpAdminBar.css('position')) {
      stickyOptionsOffset += $wpAdminBar.height();
    }

    if ('yes' === this.getElementSettings('sticky_right_column')) {
      this.elements.$stickyRightColumn.addClass(classes.stickyRightColumnActive);
      this.elements.$stickyRightColumn.css('top', stickyOptionsOffset + 'px');
    }
  }

  deactivateStickyRightColumn() {
    if (!this.isStickyRightColumnActive()) {
      return;
    }

    const classes = this.getSettings('classes');
    this.elements.$stickyRightColumn.removeClass(classes.stickyRightColumnActive);
  }
  /**
   * Activates the sticky column
   *
   * @return {void}
   */


  toggleStickyRightColumn() {
    if (!this.getElementSettings('sticky_right_column')) {
      this.deactivateStickyRightColumn();
      return;
    }

    if (!this.isStickyRightColumnActive()) {
      this.activateStickyRightColumn();
    }
  }

  equalizeElementHeight($element) {
    if ($element.length) {
      $element.removeAttr('style'); // first remove the custom height we added so that the new height can be re-calculated according to the content

      let maxHeight = 0;
      $element.each((index, element) => {
        maxHeight = Math.max(maxHeight, element.offsetHeight);
      });

      if (0 < maxHeight) {
        $element.css({
          height: maxHeight + 'px'
        });
      }
    }
  }

}

exports.default = Base;

/***/ }),

/***/ "../modules/woocommerce/assets/js/frontend/handlers/my-account.js":
/*!************************************************************************!*\
  !*** ../modules/woocommerce/assets/js/frontend/handlers/my-account.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/woocommerce/assets/js/frontend/handlers/base.js"));

class MyAccountHandler extends _base.default {
  getDefaultSettings() {
    return {
      selectors: {
        address: 'address',
        tabLinks: '.woocommerce-MyAccount-navigation-link a',
        viewOrderButtons: '.my_account_orders .woocommerce-button.view',
        viewOrderLinks: '.woocommerce-orders-table__cell-order-number a',
        authForms: 'form.login, form.register',
        tabWrapper: '.e-my-account-tab',
        tabItem: '.woocommerce-MyAccount-navigation li',
        allPageElements: '[e-my-account-page]',
        purchasenote: 'tr.product-purchase-note'
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors');
    return {
      $address: this.$element.find(selectors.address),
      $tabLinks: this.$element.find(selectors.tabLinks),
      $viewOrderButtons: this.$element.find(selectors.viewOrderButtons),
      $viewOrderLinks: this.$element.find(selectors.viewOrderLinks),
      $authForms: this.$element.find(selectors.authForms),
      $tabWrapper: this.$element.find(selectors.tabWrapper),
      $tabItem: this.$element.find(selectors.tabItem),
      $allPageElements: this.$element.find(selectors.allPageElements),
      $purchasenote: this.$element.find(selectors.purchasenote)
    };
  }

  editorInitTabs() {
    this.elements.$allPageElements.each((index, element) => {
      const currentPage = element.getAttribute('e-my-account-page');
      let $linksToThisPage;

      switch (currentPage) {
        case 'view-order':
          $linksToThisPage = this.elements.$viewOrderLinks.add(this.elements.$viewOrderButtons);
          break;

        default:
          $linksToThisPage = this.$element.find('.woocommerce-MyAccount-navigation-link--' + currentPage);
      }

      $linksToThisPage.on('click', () => {
        this.currentPage = currentPage;
        this.editorShowTab();
      });
    });
  }

  editorShowTab() {
    const $currentPage = this.$element.find('[e-my-account-page="' + this.currentPage + '"]');
    this.$element.attr('e-my-account-page', this.currentPage);
    this.elements.$allPageElements.hide();
    $currentPage.show();
    this.toggleEndpointClasses();

    if ('view-order' !== this.currentPage) {
      this.elements.$tabItem.removeClass('is-active');
      this.$element.find('.woocommerce-MyAccount-navigation-link--' + this.currentPage).addClass('is-active');
    }
    /**
     * We need to run equalizeElementHeights() again when the 'edit-address' or 'view-order' tab is shown, because jQuery cannot
     * get the height of hidden elements, and this tab was hidden on initial page load in the editor.
     */


    if ('edit-address' === this.currentPage || 'view-order' === this.currentPage) {
      this.equalizeElementHeights();
    }
  }

  toggleEndpointClasses() {
    const wcPages = ['dashboard', 'orders', 'view-order', 'downloads', 'edit-account', 'edit-address', 'payment-methods'];
    this.elements.$tabWrapper.removeClass('e-my-account-tab__' + wcPages.join(' e-my-account-tab__'));

    if (wcPages.includes(this.currentPage)) {
      this.elements.$tabWrapper.addClass('e-my-account-tab__' + this.currentPage);
    }
  }

  applyButtonsHoverAnimation() {
    const elementSettings = this.getElementSettings();

    if (elementSettings.forms_buttons_hover_animation) {
      this.$element.find('.woocommerce button.button').addClass('elementor-animation-' + elementSettings.forms_buttons_hover_animation);
    }

    if (elementSettings.tables_button_hover_animation) {
      this.$element.find('.order-again .button, td .button, .woocommerce-pagination .button').addClass('elementor-animation-' + elementSettings.tables_button_hover_animation);
    }
  }

  equalizeElementHeights() {
    this.equalizeElementHeight(this.elements.$address); // equalize <address> boxes height

    if (!this.isEdit) {
      // Auth forms do not display in the Editor
      this.equalizeElementHeight(this.elements.$authForms); // equalize login/reg boxes height
    }
  }
  /**
   * WooCommerce prints the Purchase Note separated from the product name by a border and padding.
   * In Elementor's Order Summary design, the product name and purchase note are displayed un-separated.
   * To achieve this design, it is necessary to access the Product Name line before the Purchase Note line to adjust
   * its padding. Since this cannot be achieved in CSS, it is done in this method.
   */


  removePaddingBetweenPurchaseNote() {
    if (this.elements.$purchasenote) {
      this.elements.$purchasenote.each((index, element) => {
        jQuery(element).prev().children('td').addClass('product-purchase-note-is-below');
      });
    }
  }

  onElementChange(propertyName) {
    // When the 'General Text' Typography or 'Section' Padding is changed, the height of the boxes need to update as well.
    if (0 === propertyName.indexOf('general_text_typography') || 0 === propertyName.indexOf('sections_padding')) {
      this.equalizeElementHeights();
    }

    if (0 === propertyName.indexOf('forms_rows_gap')) {
      this.removePaddingBetweenPurchaseNote();
    }
  }

  bindEvents() {
    super.bindEvents(); // The heights of the Registration and Login boxes need to be recaclulated and equalized when
    // WooCommerce adds validation messages (such as the password strength meter) into these sections.

    elementorFrontend.elements.$body.on('keyup change', '.register #reg_password', () => {
      this.equalizeElementHeights();
    });
  }

  onInit(...args) {
    super.onInit(...args);

    if (this.isEdit) {
      this.editorInitTabs();

      if (!this.$element.attr('e-my-account-page')) {
        this.currentPage = 'dashboard';
      } else {
        this.currentPage = this.$element.attr('e-my-account-page');
      }

      this.editorShowTab();
    }

    this.applyButtonsHoverAnimation();
    this.equalizeElementHeights();
    this.removePaddingBetweenPurchaseNote();
  }

}

exports.default = MyAccountHandler;

/***/ })

}]);
//# sourceMappingURL=woocommerce-my-account.d52e81c74f27be09eb2e.bundle.js.mapassets/js/editor.min.js000064400000621245150755004310011102 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(()=>{var e={75453:(e,t,n)=>{e.exports=n(7421)},59396:(e,t,n)=>{e.exports=n(70157)},32009:(e,t,n)=>{e.exports=n(89710)},15149:(e,t,n)=>{e.exports=n(66458)},38401:(e,t,n)=>{e.exports=n(14710)},67394:(e,t,n)=>{e.exports=n(43153)},38923:(e,t,n)=>{e.exports=n(8531)},23587:(e,t,n)=>{e.exports=n(32622)},82055:(e,t,n)=>{e.exports=n(58535)},83452:(e,t,n)=>{e.exports=n(97220)},28274:(e,t,n)=>{e.exports=n(65135)},35657:(e,t,n)=>{e.exports=n(69591)},14176:(e,t,n)=>{e.exports=n(34345)},73220:(e,t,n)=>{e.exports=n(76483)},75499:(e,t,n)=>{e.exports=n(43094)},78282:(e,t,n)=>{e.exports=n(17641)},41281:(e,t,n)=>{e.exports=n(19103)},50093:(e,t,n)=>{e.exports=n(39871)},93168:(e,t,n)=>{e.exports=n(89999)},72292:e=>{e.exports=function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o},e.exports.default=e.exports,e.exports.__esModule=!0},86870:(e,t,n)=>{var o=n(59396);e.exports=function _arrayWithHoles(e){if(o(e))return e},e.exports.default=e.exports,e.exports.__esModule=!0},35693:(e,t,n)=>{var o=n(59396),r=n(72292);e.exports=function _arrayWithoutHoles(e){if(o(e))return r(e)},e.exports.default=e.exports,e.exports.__esModule=!0},38852:e=>{e.exports=function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.default=e.exports,e.exports.__esModule=!0},49117:(e,t,n)=>{var o=n(73220);function asyncGeneratorStep(e,t,n,r,i,a,l){try{var u=e[a](l),s=u.value}catch(e){return void n(e)}u.done?t(s):o.resolve(s).then(r,i)}e.exports=function _asyncToGenerator(e){return function(){var t=this,n=arguments;return new o((function(o,r){var i=e.apply(t,n);function _next(e){asyncGeneratorStep(i,o,r,_next,_throw,"next",e)}function _throw(e){asyncGeneratorStep(i,o,r,_next,_throw,"throw",e)}_next(void 0)}))}},e.exports.default=e.exports,e.exports.__esModule=!0},11959:e=>{e.exports=function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.default=e.exports,e.exports.__esModule=!0},39041:(e,t,n)=>{var o=n(67394);function _defineProperties(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),o(e,r.key,r)}}e.exports=function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e},e.exports.default=e.exports,e.exports.__esModule=!0},68537:(e,t,n)=>{var o=n(75499),r=n(44263),i=n(898),a=n(59771);e.exports=function _createSuper(e){var t=i();return function _createSuperInternal(){var n,i=r(e);if(t){var l=r(this).constructor;n=o(i,arguments,l)}else n=i.apply(this,arguments);return a(this,n)}},e.exports.default=e.exports,e.exports.__esModule=!0},18042:(e,t,n)=>{var o=n(67394);e.exports=function _defineProperty(e,t,n){return t in e?o(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},e.exports.default=e.exports,e.exports.__esModule=!0},76700:(e,t,n)=>{var o=n(78282),r=n(23587),i=n(49445);function _get(t,n,a){return"undefined"!=typeof Reflect&&o?(e.exports=_get=o,e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=_get=function _get(e,t,n){var o=i(e,t);if(o){var a=r(o,t);return a.get?a.get.call(n):a.value}},e.exports.default=e.exports,e.exports.__esModule=!0),_get(t,n,a||t)}e.exports=_get,e.exports.default=e.exports,e.exports.__esModule=!0},44263:(e,t,n)=>{var o=n(28274),r=n(82055);function _getPrototypeOf(t){return e.exports=_getPrototypeOf=o?r:function _getPrototypeOf(e){return e.__proto__||r(e)},e.exports.default=e.exports,e.exports.__esModule=!0,_getPrototypeOf(t)}e.exports=_getPrototypeOf,e.exports.default=e.exports,e.exports.__esModule=!0},77371:(e,t,n)=>{var o=n(38401),r=n(76870);e.exports=function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=o(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&r(e,t)},e.exports.default=e.exports,e.exports.__esModule=!0},67971:e=>{e.exports=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}},e.exports.default=e.exports,e.exports.__esModule=!0},52369:(e,t,n)=>{var o=n(24596).default,r=n(93168),i=n(67394),a=n(23587);function _getRequireWildcardCache(e){if("function"!=typeof r)return null;var t=new r,n=new r;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?n:t})(e)}e.exports=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==o(e)&&"function"!=typeof e)return{default:e};var n=_getRequireWildcardCache(t);if(n&&n.has(e))return n.get(e);var r={},l=i&&a;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var s=l?a(e,u):null;s&&(s.get||s.set)?i(r,u,s):r[u]=e[u]}return r.default=e,n&&n.set(e,r),r},e.exports.default=e.exports,e.exports.__esModule=!0},898:(e,t,n)=>{var o=n(75499);e.exports=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!o)return!1;if(o.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(o(Boolean,[],(function(){}))),!0}catch(e){return!1}},e.exports.default=e.exports,e.exports.__esModule=!0},95915:(e,t,n)=>{var o=n(41281),r=n(50093),i=n(75453);e.exports=function _iterableToArray(e){if(void 0!==o&&null!=e[r]||null!=e["@@iterator"])return i(e)},e.exports.default=e.exports,e.exports.__esModule=!0},79968:(e,t,n)=>{var o=n(41281),r=n(50093);e.exports=function _iterableToArrayLimit(e,t){var n=e&&(void 0!==o&&e[r]||e["@@iterator"]);if(null!=n){var i,a,l=[],u=!0,s=!1;try{for(n=n.call(e);!(u=(i=n.next()).done)&&(l.push(i.value),!t||l.length!==t);u=!0);}catch(e){s=!0,a=e}finally{try{u||null==n.return||n.return()}finally{if(s)throw a}}return l}},e.exports.default=e.exports,e.exports.__esModule=!0},39198:e=>{e.exports=function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},84360:e=>{e.exports=function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},59771:(e,t,n)=>{var o=n(24596).default,r=n(38852);e.exports=function _possibleConstructorReturn(e,t){return!t||"object"!==o(t)&&"function"!=typeof t?r(e):t},e.exports.default=e.exports,e.exports.__esModule=!0},76870:(e,t,n)=>{var o=n(28274);function _setPrototypeOf(t,n){return e.exports=_setPrototypeOf=o||function _setPrototypeOf(e,t){return e.__proto__=t,e},e.exports.default=e.exports,e.exports.__esModule=!0,_setPrototypeOf(t,n)}e.exports=_setPrototypeOf,e.exports.default=e.exports,e.exports.__esModule=!0},47834:(e,t,n)=>{var o=n(86870),r=n(79968),i=n(24594),a=n(39198);e.exports=function _slicedToArray(e,t){return o(e)||r(e,t)||i(e,t)||a()},e.exports.default=e.exports,e.exports.__esModule=!0},49445:(e,t,n)=>{var o=n(44263);e.exports=function _superPropBase(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=o(e)););return e},e.exports.default=e.exports,e.exports.__esModule=!0},74846:(e,t,n)=>{var o=n(35693),r=n(95915),i=n(24594),a=n(84360);e.exports=function _toConsumableArray(e){return o(e)||r(e)||i(e)||a()},e.exports.default=e.exports,e.exports.__esModule=!0},24596:(e,t,n)=>{var o=n(41281),r=n(50093);function _typeof(t){return"function"==typeof o&&"symbol"==typeof r?(e.exports=_typeof=function _typeof(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=_typeof=function _typeof(e){return e&&"function"==typeof o&&e.constructor===o&&e!==o.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),_typeof(t)}e.exports=_typeof,e.exports.default=e.exports,e.exports.__esModule=!0},24594:(e,t,n)=>{var o=n(75453),r=n(72292);e.exports=function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?o(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0},57135:(e,t,n)=>{e.exports=n(86248)},88331:(e,t,n)=>{"use strict";n(71954),e.exports=elementorModules.editor.utils.Module.extend({elementType:null,__construct:function __construct(e){this.elementType=e,this.addEditorListener()},addEditorListener:function addEditorListener(){var e=this;if(e.onElementChange){var t="change";"global"!==e.elementType&&(t+=":"+e.elementType),elementor.channels.editor.on(t,(function(t,n){e.onElementChange(t.model.get("name"),t,n)}))}},addControlSpinner:function addControlSpinner(e){var t=this.getEditorControlView(e).$el,n=t.find(":input");t.find(".elementor-control-spinner").length||(n.attr("disabled",!0),t.find(".elementor-control-title").after('<span class="elementor-control-spinner"><i class="eicon-spinner eicon-animation-spin"></i>&nbsp;</span>'))},removeControlSpinner:function removeControlSpinner(e){var t=this.getEditorControlView(e).$el;t.find(":input").attr("disabled",!1),t.find(".elementor-control-spinner").remove()},addControlError:function addControlError(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".elementor-control-content",o=this.getEditorControlView(e).$el;o.find(".e-control-error").length&&o.find(".e-control-error").remove(),o.find(n).first().after('<span class="elementor-control-field-description e-control-error">'.concat(t,"</span>"))},removeControlError:function removeControlError(e){this.getEditorControlView(e).$el.find(".e-control-error").remove()},resetControlIndicators:function resetControlIndicators(e){this.removeControlSpinner(e),this.removeControlError(e)},addSectionListener:function addSectionListener(e,t){var n=this;elementor.channels.editor.on("section:activated",(function(o,r){var i=r.getOption("editedElementView").getEditModel(),a=i.get("elType"),l=arguments;"widget"===a&&(a=i.get("widgetType")),n.elementType===a&&e===o&&setTimeout((function(){t.apply(n,l)}),10)}))}})},16683:(e,t,n)=>{"use strict";n(76139),n(12897),n(93085),e.exports=elementorModules.editor.views.ControlsStack.extend({activeTab:"content",activeSection:"settings",initialize:function initialize(){this.collection=new Backbone.Collection(_.values(this.options.controls))},filter:function filter(e){if("section"===e.get("type"))return!0;var t=e.get("section");return!t||t===this.activeSection},childViewOptions:function childViewOptions(){return{elementSettingsModel:this.model}}})},79924:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.ConditionsConfig=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=r(n(18042)),d=function(e){(0,l.default)(ConditionsConfig,e);var t=(0,u.default)(ConditionsConfig);function ConditionsConfig(){return(0,i.default)(this,ConditionsConfig),t.apply(this,arguments)}return(0,a.default)(ConditionsConfig,null,[{key:"getEndpointFormat",value:function getEndpointFormat(){return"site-editor/conditions-config/{id}"}}]),ConditionsConfig}($e.modules.CommandData);t.ConditionsConfig=d,(0,s.default)(d,"signature","site-editor/conditions-config");var c=d;t.default=c},2410:(e,t,n)=>{"use strict";var o=n(67394);o(t,"__esModule",{value:!0}),o(t,"Templates",{enumerable:!0,get:function get(){return r.Templates}}),o(t,"ConditionsConfig",{enumerable:!0,get:function get(){return i.ConditionsConfig}}),o(t,"TemplatesConditions",{enumerable:!0,get:function get(){return a.TemplatesConditions}}),o(t,"TemplatesConditionsConflicts",{enumerable:!0,get:function get(){return l.TemplatesConditionsConflicts}});var r=n(49672),i=n(79924),a=n(19743),l=n(52924)},52924:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.TemplatesConditionsConflicts=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=r(n(18042)),d=function(e){(0,l.default)(TemplatesConditionsConflicts,e);var t=(0,u.default)(TemplatesConditionsConflicts);function TemplatesConditionsConflicts(){return(0,i.default)(this,TemplatesConditionsConflicts),t.apply(this,arguments)}return(0,a.default)(TemplatesConditionsConflicts,null,[{key:"getEndpointFormat",value:function getEndpointFormat(){return"".concat(TemplatesConditionsConflicts.signature,"/{id}")}}]),TemplatesConditionsConflicts}($e.modules.CommandData);t.TemplatesConditionsConflicts=d,(0,s.default)(d,"signature","site-editor/templates-conditions-conflicts");var c=d;t.default=c},19743:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.TemplatesConditions=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=r(n(18042)),d=function(e){(0,l.default)(TemplatesConditions,e);var t=(0,u.default)(TemplatesConditions);function TemplatesConditions(){return(0,i.default)(this,TemplatesConditions),t.apply(this,arguments)}return(0,a.default)(TemplatesConditions,null,[{key:"getEndpointFormat",value:function getEndpointFormat(){return"site-editor/templates-conditions/{id}"}}]),TemplatesConditions}($e.modules.CommandData);t.TemplatesConditions=d,(0,s.default)(d,"signature","site-editor/templates-conditions");var c=d;t.default=c},49672:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.Templates=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=r(n(18042)),d=function(e){(0,l.default)(Templates,e);var t=(0,u.default)(Templates);function Templates(){return(0,i.default)(this,Templates),t.apply(this,arguments)}return(0,a.default)(Templates,null,[{key:"getEndpointFormat",value:function getEndpointFormat(){return"site-editor/templates/{id}"}}]),Templates}($e.modules.CommandData);t.Templates=d,(0,s.default)(d,"signature","site-editor/templates");var c=d;t.default=c},88704:(e,t,n)=>{"use strict";var o=n(67394),r=n(52369),i=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var a=i(n(11959)),l=i(n(39041)),u=i(n(77371)),s=i(n(68537)),d=i(n(18042)),c=r(n(2410)),p=function(e){(0,u.default)(Component,e);var t=(0,s.default)(Component);function Component(){return(0,a.default)(this,Component),t.apply(this,arguments)}return(0,l.default)(Component,[{key:"getNamespace",value:function getNamespace(){return this.constructor.namespace}},{key:"defaultData",value:function defaultData(){return this.importCommands(c)}}]),Component}($e.modules.ComponentBase);t.default=p,(0,d.default)(p,"namespace","site-editor")},12946:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=r(n(88704)),d=n(2410),c=function(e){(0,l.default)(Module,e);var t=(0,u.default)(Module);function Module(){return(0,i.default)(this,Module),t.apply(this,arguments)}return(0,a.default)(Module,[{key:"onElementorInit",value:function onElementorInit(){elementor.documents.getCurrent().config.support_site_editor&&($e.components.register(new s.default),$e.data.deleteCache($e.components.get(s.default.namespace),d.Templates.signature))}}]),Module}(elementorModules.editor.utils.Module);t.default=c},65726:(e,t,n)=>{"use strict";e.exports=elementorModules.editor.utils.Module.extend({onElementorInit:function onElementorInit(){var e=n(39427);this.assets={font:new e}}})},39427:(e,t,n)=>{"use strict";n(71954),e.exports=elementorModules.Module.extend({_enqueuedFonts:[],_enqueuedTypekit:!1,onFontChange:function onFontChange(e,t){"custom"!==e&&"typekit"!==e||-1===this._enqueuedFonts.indexOf(t)&&("typekit"===e&&this._enqueuedTypekit||this.getCustomFont(e,t))},getCustomFont:function getCustomFont(e,t){elementorPro.ajax.addRequest("assets_manager_panel_action_data",{unique_id:"font_"+e+t,data:{service:"font",type:e,font:t},success:function success(e){e.font_face&&elementor.$previewContents.find("style").last().after('<style type="text/css">'+e.font_face+"</style>"),e.font_url&&elementor.$previewContents.find("link").last().after('<link href="'+e.font_url+'" rel="stylesheet" type="text/css">')}}),this._enqueuedFonts.push(t),"typekit"===e&&(this._enqueuedTypekit=!0)},onInit:function onInit(){elementor.channels.editor.on("font:insertion",this.onFontChange.bind(this))}})},33130:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0,n(84208);var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(_default,e);var t=(0,u.default)(_default);function _default(){return(0,i.default)(this,_default),t.apply(this,arguments)}return(0,a.default)(_default,[{key:"addCustomCss",value:function addCustomCss(e,t){if(t){var n=t.model,o=n.get("settings").get("custom_css"),r=".elementor-element.elementor-element-"+n.get("id");return"document"===n.get("elType")&&(r=elementor.config.document.settings.cssWrapperSelector),o&&(e+=o.replace(/selector/g,r)),e}}},{key:"onElementorInit",value:function onElementorInit(){elementor.hooks.addFilter("editor/style/styleText",this.addCustomCss),elementor.on("navigator:init",this.onNavigatorInit.bind(this))}},{key:"onNavigatorInit",value:function onNavigatorInit(){elementor.navigator.indicators.customCSS={icon:"code-bold",settingKeys:["custom_css"],title:elementorPro.translate("custom_css"),section:"section_custom_css"}}}]),_default}(elementorModules.editor.utils.Module);t.default=s},7600:(e,t,n)=>{"use strict";n(71954),e.exports=elementorModules.editor.utils.Module.extend({onElementorInit:function onElementorInit(){elementor.channels.editor.on("section:activated",this.onSectionActivated)},onSectionActivated:function onSectionActivated(e,t){var n=t.getOption("editedElementView");if("flip-box"===n.model.get("widgetType")){var o=-1!==["section_side_b_content","section_style_b"].indexOf(e);n.$el.toggleClass("elementor-flip-box--flipped",o);var r=n.$el.find(".elementor-flip-box__back");o&&r.css("transition","none"),o||setTimeout((function(){r.css("transition","")}),10)}}})},51828:(e,t,n)=>{"use strict";var o=n(67394),r=n(52369),i=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var a=i(n(11959)),l=i(n(39041)),u=i(n(77371)),s=i(n(68537)),d=r(n(97820)),c=function(e){(0,u.default)(Component,e);var t=(0,s.default)(Component);function Component(){return(0,a.default)(this,Component),t.apply(this,arguments)}return(0,l.default)(Component,[{key:"getNamespace",value:function getNamespace(){return"forms"}},{key:"defaultHooks",value:function defaultHooks(){return this.importHooks(d)}}]),Component}($e.modules.ComponentBase);t.default=c},51096:(e,t,n)=>{"use strict";n(71954),e.exports=elementor.modules.controls.Repeater.extend({onBeforeRender:function onBeforeRender(){this.$el.hide()},updateMap:function updateMap(e){var t=this,n={};t.collection.each((function(e){n[e.get("remote_id")]=e.get("local_id")})),t.collection.reset(),_.each(e,(function(e){var o={remote_id:e.remote_id,remote_label:e.remote_label,remote_type:e.remote_type?e.remote_type:"",remote_required:!!e.remote_required&&e.remote_required,local_id:n[e.remote_id]?n[e.remote_id]:""};t.collection.add(o)})),t.render()},onRender:function onRender(){elementor.modules.controls.Base.prototype.onRender.apply(this,arguments);var e=this;e.children.each((function(t){var n=t.children.last(),o={"":"- "+elementor.translate("None")+" -"},r=t.model.get("remote_label");t.model.get("remote_required")&&(r+='<span class="elementor-required">*</span>'),_.each(e.elementSettingsModel.get("form_fields").models,(function(e,n){var r=t.model.get("remote_type");"text"!==r&&r!==e.get("field_type")||(o[e.get("custom_id")]=e.get("field_label")||"Field #"+(n+1))})),n.model.set("label",r),n.model.set("options",o),n.render(),t.$el.find(".elementor-repeater-row-tools").hide(),t.$el.find(".elementor-repeater-row-controls").removeClass("elementor-repeater-row-controls").find(".elementor-control").css({paddingBottom:0})})),e.$el.find(".elementor-button-wrapper").remove(),e.children.length&&e.$el.show()}})},17455:(e,t,n)=>{"use strict";var o=n(67971),r=o(n(11959)),i=o(n(39041)),a=o(n(76700)),l=o(n(44263)),u=o(n(77371)),s=o(n(68537)),d=o(n(65876));e.exports=function(e){(0,u.default)(_class,e);var t=(0,s.default)(_class);function _class(){return(0,r.default)(this,_class),t.apply(this,arguments)}return(0,i.default)(_class,[{key:"className",value:function className(){var e=(0,a.default)((0,l.default)(_class.prototype),"className",this).call(this);return e+=" elementor-control-type-repeater"}},{key:"getChildView",value:function getChildView(){return d.default}},{key:"initialize",value:function initialize(){for(var e,t=this,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];(e=(0,a.default)((0,l.default)(_class.prototype),"initialize",this)).call.apply(e,[this].concat(o));var i=this.container.settings.get("form_fields");this.listenTo(i,"change",(function(e){return t.onFormFieldChange(e)})).listenTo(i,"remove",(function(e){return t.onFormFieldRemove(e)}))}},{key:"getFirstChild",value:function getFirstChild(){return this.children.findByModel(this.collection.models[0])}},{key:"lockFirstStep",value:function lockFirstStep(){var e=this.getFirstChild();"step"===e.model.get("field_type")&&(1<this.collection.where({field_type:"step"}).length&&(e.toggleFieldTypeControl(!1),e.toggleTools(!1)),e.toggleSort(!1))}},{key:"onFormFieldChange",value:function onFormFieldChange(e){var t=e.changed.field_type;if(t&&("step"===t||"step"===e._previousAttributes.field_type)){var n="step"===t;this.children.findByModel(e).toggleStepField(n),this.onStepFieldChanged(n)}}},{key:"onFormFieldRemove",value:function onFormFieldRemove(e){"step"===e.get("field_type")&&this.onStepFieldChanged(!1)}},{key:"onStepFieldChanged",value:function onStepFieldChanged(e){if(e)this.lockFirstStep();else{var t=this.collection.where({field_type:"step"});if(!(t.length>1)){var n=this.getFirstChild();if(1===t.length)return n.toggleTools(!0),void n.toggleFieldTypeControl(!0);n.toggleSort(!0)}}}},{key:"onAddChild",value:function onAddChild(e){(0,a.default)((0,l.default)(_class.prototype),"onAddChild",this).call(this,e),"step"===e.model.get("field_type")&&(this.lockFirstStep(),e.toggleStepField(!0))}}]),_class}(elementor.modules.controls.Repeater)},65876:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(_default,e);var t=(0,u.default)(_default);function _default(){return(0,i.default)(this,_default),t.apply(this,arguments)}return(0,a.default)(_default,[{key:"toggleFieldTypeControl",value:function toggleFieldTypeControl(e){var t=this.collection.findWhere({name:"field_type"});this.children.findByModel(t).$el.toggle(e)}},{key:"toggleStepField",value:function toggleStepField(e){this.$el.toggleClass("elementor-repeater-row--form-step",e)}},{key:"toggleTools",value:function toggleTools(e){this.ui.removeButton.add(this.ui.duplicateButton).toggle(e)}}]),_default}(elementor.modules.controls.RepeaterRow);t.default=s},99960:e=>{"use strict";e.exports=elementorModules.editor.utils.Module.extend({renderField:function renderField(e,t,n,o){var r=_.escape(t.css_classes),i="",a="",l="";return t.required&&(i="required"),t.acceptance_text&&(a='<label for="form_field_'+n+'">'+t.acceptance_text+"</label>"),t.checked_by_default&&(l=' checked="checked"'),'<div class="elementor-field-subgroup"><span class="elementor-field-option"><input size="1" type="checkbox"'+l+' class="elementor-acceptance-field elementor-field elementor-size-'+o.input_size+" "+r+'" name="form_field_'+n+'" id="form_field_'+n+'" '+i+" > "+a+"</span></div>"},onInit:function onInit(){elementor.hooks.addFilter("elementor_pro/forms/content_template/field/acceptance",this.renderField,10,4)}})},82787:e=>{"use strict";e.exports=elementorModules.editor.utils.Module.extend({renderField:function renderField(e,t,n,o){var r=_.escape(t.css_classes),i="",a="",l="",u="";return t.required&&(i="required"),t.min_date&&(a=' min="'+t.min_date+'"'),t.max_date&&(l=' max="'+t.max_date+'"'),t.placeholder&&(u=' placeholder="'+t.placeholder+'"'),"yes"===t.use_native_date&&(r+=" elementor-use-native"),'<input size="1"'+a+l+u+' pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}" type="date" class="elementor-field-textual elementor-date-field elementor-field elementor-size-'+o.input_size+" "+r+'" name="form_field_'+n+'" id="form_field_'+n+'" '+i+" >"},onInit:function onInit(){elementor.hooks.addFilter("elementor_pro/forms/content_template/field/date",this.renderField,10,4)}})},33726:e=>{"use strict";e.exports=elementorModules.editor.utils.Module.extend({renderField:function renderField(e,t,n,o){var r=_.escape(t.css_classes),i="",a="";return t.required&&(i="required"),t.placeholder&&(a=' placeholder="'+t.placeholder+'"'),r="elementor-field-textual "+r,'<input size="1" type="'+t.field_type+'" class="elementor-field-textual elementor-field elementor-size-'+o.input_size+" "+r+'" name="form_field_'+n+'" id="form_field_'+n+'" '+i+" "+a+' pattern="[0-9()-]" >'},onInit:function onInit(){elementor.hooks.addFilter("elementor_pro/forms/content_template/field/tel",this.renderField,10,4)}})},29706:e=>{"use strict";e.exports=elementorModules.editor.utils.Module.extend({renderField:function renderField(e,t,n,o){var r=_.escape(t.css_classes),i="",a="";return t.required&&(i="required"),t.placeholder&&(a=' placeholder="'+t.placeholder+'"'),"yes"===t.use_native_time&&(r+=" elementor-use-native"),'<input size="1" type="time"'+a+' class="elementor-field-textual elementor-time-field elementor-field elementor-size-'+o.input_size+" "+r+'" name="form_field_'+n+'" id="form_field_'+n+'" '+i+" >"},onInit:function onInit(){elementor.hooks.addFilter("elementor_pro/forms/content_template/field/time",this.renderField,10,4)}})},43666:e=>{"use strict";e.exports=elementorModules.editor.utils.Module.extend({renderField:function renderField(e,t,n,o){var r=_.escape(t.css_classes),i="",a="",l="form_field_";return t.required&&(i="required"),t.allow_multiple_upload&&(a=' multiple="multiple"',l+="[]"),'<input size="1"  type="file" class="elementor-file-field elementor-field elementor-size-'+o.input_size+" "+r+'" name="'+l+'" id="form_field_'+n+'" '+i+a+" >"},onInit:function onInit(){elementor.hooks.addFilter("elementor_pro/forms/content_template/field/upload",this.renderField,10,4)}})},6366:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.FormFieldsSanitizeCustomId=void 0,n(64828),n(71954);var i=r(n(11959)),a=r(n(39041)),l=r(n(38852)),u=r(n(77371)),s=r(n(68537)),d=r(n(18042)),c=function(e){(0,u.default)(FormFieldsSanitizeCustomId,e);var t=(0,s.default)(FormFieldsSanitizeCustomId);function FormFieldsSanitizeCustomId(){var e;(0,i.default)(this,FormFieldsSanitizeCustomId);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return e=t.call.apply(t,[this].concat(o)),(0,d.default)((0,l.default)(e),"ID_SANITIZE_FILTER",/[^\w]/g),e}return(0,a.default)(FormFieldsSanitizeCustomId,[{key:"getCommand",value:function getCommand(){return"document/elements/settings"}},{key:"getId",value:function getId(){return"elementor-pro-forms-fields-sanitize-custom-id"}},{key:"getContainerType",value:function getContainerType(){return"repeater"}},{key:"getConditions",value:function getConditions(e){return void 0!==e.settings.custom_id}},{key:"apply",value:function apply(e){var t=e.containers,n=void 0===t?[e.container]:t;return!e.settings.custom_id.match(this.ID_SANITIZE_FILTER)||(n.forEach((function(e){var t=e.panel.getControlView("form_fields").children.findByModel(e.settings).children.find((function(e){return"custom_id"===e.model.get("name")}));t.render(),t.$el.find("input").trigger("focus")})),!1)}}]),FormFieldsSanitizeCustomId}($e.modules.hookData.Dependency);t.FormFieldsSanitizeCustomId=c;var p=c;t.default=p},73610:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.FormFieldsSetCustomId=void 0,n(99745),n(71954);var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(FormFieldsSetCustomId,e);var t=(0,u.default)(FormFieldsSetCustomId);function FormFieldsSetCustomId(){return(0,i.default)(this,FormFieldsSetCustomId),t.apply(this,arguments)}return(0,a.default)(FormFieldsSetCustomId,[{key:"getCommand",value:function getCommand(){return"document/repeater/insert"}},{key:"getId",value:function getId(){return"elementor-pro-forms-fields-set-custom-id"}},{key:"getContainerType",value:function getContainerType(){return"widget"}},{key:"getConditions",value:function getConditions(e){return"form_fields"===e.name}},{key:"apply",value:function apply(e,t){var n=e.containers,o=void 0===n?[e.container]:n,r=$e.commands.isCurrentFirstTrace("document/repeater/duplicate");return o.forEach((function(e){var n=e.repeaters.form_fields.children.find((function(e){return!!e&&t.get("_id")===e.id}));!r&&n.settings.get("custom_id")||$e.run("document/elements/settings",{container:n,settings:{custom_id:"field_"+n.id},options:{external:!0}})})),!0}}]),FormFieldsSetCustomId}($e.modules.hookData.After);t.FormFieldsSetCustomId=s;var d=s;t.default=d},19945:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.FormFieldsAddFirstStep=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(FormFieldsAddFirstStep,e);var t=(0,u.default)(FormFieldsAddFirstStep);function FormFieldsAddFirstStep(){return(0,i.default)(this,FormFieldsAddFirstStep),t.apply(this,arguments)}return(0,a.default)(FormFieldsAddFirstStep,[{key:"getCommand",value:function getCommand(){return"document/elements/settings"}},{key:"getId",value:function getId(){return"elementor-pro-forms-fields-first-step"}},{key:"getContainerType",value:function getContainerType(){return"repeater"}},{key:"getConditions",value:function getConditions(e){var t=e.containers;return"form"===(void 0===t?[e.container]:t)[0].parent.parent.model.get("widgetType")&&"step"===e.settings.field_type}},{key:"apply",value:function apply(e){var t=e.containers;return(void 0===t?[e.container]:t).forEach((function(e){"step"!==e.parent.children[0].settings.get("field_type")&&$e.run("document/repeater/insert",{container:e.parent.parent,name:"form_fields",model:{field_type:"step"},options:{at:0,external:!0}})})),!0}}]),FormFieldsAddFirstStep}($e.modules.hookData.After);t.FormFieldsAddFirstStep=s;var d=s;t.default=d},38945:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.FormSanitizeId=void 0,n(64828),n(71954);var i=r(n(11959)),a=r(n(39041)),l=r(n(38852)),u=r(n(77371)),s=r(n(68537)),d=r(n(18042)),c=function(e){(0,u.default)(FormSanitizeId,e);var t=(0,s.default)(FormSanitizeId);function FormSanitizeId(){var e;(0,i.default)(this,FormSanitizeId);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return e=t.call.apply(t,[this].concat(o)),(0,d.default)((0,l.default)(e),"ID_SANITIZE_FILTER",/[^\w]/g),e}return(0,a.default)(FormSanitizeId,[{key:"getCommand",value:function getCommand(){return"document/elements/settings"}},{key:"getId",value:function getId(){return"elementor-pro-forms-sanitize-id"}},{key:"getContainerType",value:function getContainerType(){return"widget"}},{key:"getConditions",value:function getConditions(e){return void 0!==e.settings.form_id}},{key:"apply",value:function apply(e){var t=e.container;if(e.settings.form_id.match(this.ID_SANITIZE_FILTER)){var n=t.panel.getControlView("form_id");return n.render(),n.$el.find("input").trigger("focus"),!1}return!0}}]),FormSanitizeId}($e.modules.hookData.Dependency);t.FormSanitizeId=c;var p=c;t.default=p},18998:(e,t,n)=>{"use strict";var o=n(67394);o(t,"__esModule",{value:!0}),o(t,"FormFieldsSanitizeCustomId",{enumerable:!0,get:function get(){return r.FormFieldsSanitizeCustomId}}),o(t,"FormFieldsSetCustomId",{enumerable:!0,get:function get(){return i.FormFieldsSetCustomId}}),o(t,"FormFieldsAddFirstStep",{enumerable:!0,get:function get(){return a.FormFieldsAddFirstStep}}),o(t,"FormSanitizeId",{enumerable:!0,get:function get(){return l.FormSanitizeId}});var r=n(6366),i=n(73610),a=n(19945),l=n(38945)},97820:(e,t,n)=>{"use strict";var o=n(67394),r=n(83452);o(t,"__esModule",{value:!0});var i=n(18998);r(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===i[e]||o(t,e,{enumerable:!0,get:function get(){return i[e]}}))}));var a=n(41618);r(a).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===a[e]||o(t,e,{enumerable:!0,get:function get(){return a[e]}}))}))},61645:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.FormFieldsUpdateShortCode=void 0,n(71954);var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(FormFieldsUpdateShortCode,e);var t=(0,u.default)(FormFieldsUpdateShortCode);function FormFieldsUpdateShortCode(){return(0,i.default)(this,FormFieldsUpdateShortCode),t.apply(this,arguments)}return(0,a.default)(FormFieldsUpdateShortCode,[{key:"getCommand",value:function getCommand(){return"document/elements/settings"}},{key:"getId",value:function getId(){return"elementor-pro-forms-fields-update-shortcode"}},{key:"getContainerType",value:function getContainerType(){return"repeater"}},{key:"getConditions",value:function getConditions(e){return!(!$e.routes.isPartOf("panel/editor")||void 0===e.settings.custom_id)}},{key:"apply",value:function apply(e){var t=e.containers;(void 0===t?[e.container]:t).forEach((function(e){e.panel.getControlView("form_fields").children.find((function(t){return e.id===t.model.get("_id")})).children.find((function(e){return"shortcode"===e.model.get("name")})).render()}))}}]),FormFieldsUpdateShortCode}($e.modules.hookUI.After);t.FormFieldsUpdateShortCode=s;var d=s;t.default=d},41618:(e,t,n)=>{"use strict";var o=n(67394);o(t,"__esModule",{value:!0}),o(t,"FormFieldsUpdateShortCode",{enumerable:!0,get:function get(){return r.FormFieldsUpdateShortCode}});var r=n(61645)},89633:(e,t,n)=>{"use strict";var o=n(64e3);e.exports=o.extend({fields:{},getName:function getName(){return"activecampaign"},onElementChange:function onElementChange(e){switch(e){case"activecampaign_api_credentials_source":case"activecampaign_api_key":case"activecampaign_api_url":this.onApiUpdate();break;case"activecampaign_list":this.onListUpdate()}},onApiUpdate:function onApiUpdate(){var e=this,t=e.getEditorControlView("activecampaign_api_key"),n=e.getEditorControlView("activecampaign_api_url"),o=e.getEditorControlView("activecampaign_api_credentials_source");if("default"!==o.getControlValue()&&(""===t.getControlValue()||""===n.getControlValue()))return e.updateOptions("activecampaign_list",[]),void e.getEditorControlView("activecampaign_list").setValue("");e.addControlSpinner("activecampaign_list");var r=this.getCacheKey({controls:[o.getControlValue(),n.getControlValue(),t.getControlValue()]});e.getActiveCampaignCache("lists","activecampaign_list",r).done((function(t){e.updateOptions("activecampaign_list",t.lists),e.fields=t.fields}))},onListUpdate:function onListUpdate(){this.updateFieldsMapping()},updateFieldsMapping:function updateFieldsMapping(){if(this.getEditorControlView("activecampaign_list").getControlValue()){var e=[{remote_label:elementor.translate("Email"),remote_type:"email",remote_id:"email",remote_required:!0},{remote_label:elementor.translate("First Name"),remote_type:"text",remote_id:"first_name",remote_required:!1},{remote_label:elementor.translate("Last Name"),remote_type:"text",remote_id:"last_name",remote_required:!1},{remote_label:elementor.translate("Phone"),remote_type:"text",remote_id:"phone",remote_required:!1},{remote_label:elementor.translate("Organization name"),remote_type:"text",remote_id:"orgname",remote_required:!1}];for(var t in this.fields)this.fields.hasOwnProperty(t)&&e.push(this.fields[t]);this.getEditorControlView("activecampaign_fields_map").updateMap(e)}},getActiveCampaignCache:function getActiveCampaignCache(e,t,n,o){if(_.has(this.cache[e],n)){var r={};return r[e]=this.cache[e][n],jQuery.Deferred().resolve(r)}return o=_.extend({},o,{service:"activecampaign",activecampaign_action:t,api_key:this.getEditorControlView("activecampaign_api_key").getControlValue(),api_url:this.getEditorControlView("activecampaign_api_url").getControlValue(),api_cred:this.getEditorControlView("activecampaign_api_credentials_source").getControlValue()}),this.fetchCache(e,n,o)}})},64e3:(e,t,n)=>{"use strict";var o=n(67971)(n(32009)),r=n(88331);e.exports=r.extend({__construct:function __construct(){this.cache={},r.prototype.__construct.apply(this,arguments)},getName:function getName(){return""},getCacheKey:function getCacheKey(e){return(0,o.default)({service:this.getName(),data:e})},fetchCache:function fetchCache(e,t,n){var o=this,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return elementorPro.ajax.addRequest("forms_panel_action_data",{unique_id:"integrations_"+this.getName(),data:n,success:function success(n){o.cache[e]=_.extend({},o.cache[e]),o.cache[e][t]=n[e]}},r)},updateOptions:function updateOptions(e,t){var n=this.getEditorControlView(e);n&&(this.getEditorControlModel(e).set("options",t),n.render())},onInit:function onInit(){this.addSectionListener("section_"+this.getName(),this.onSectionActive)},onSectionActive:function onSectionActive(){this.onApiUpdate()},onApiUpdate:function onApiUpdate(){}})},91362:(e,t,n)=>{"use strict";var o=n(64e3);e.exports=o.extend({getName:function getName(){return"convertkit"},onElementChange:function onElementChange(e){switch(e){case"convertkit_api_key_source":case"convertkit_custom_api_key":this.onApiUpdate();break;case"convertkit_form":this.onListUpdate()}},onApiUpdate:function onApiUpdate(){var e=this,t=e.getEditorControlView("convertkit_api_key_source"),n=e.getEditorControlView("convertkit_custom_api_key");if("default"!==t.getControlValue()&&""===n.getControlValue())return e.updateOptions("convertkit_form",[]),void e.getEditorControlView("convertkit_form").setValue("");e.addControlSpinner("convertkit_form");var o=this.getCacheKey({type:"data",controls:[t.getControlValue(),n.getControlValue()]});e.getConvertKitCache("data","convertkit_get_forms",o).done((function(t){e.updateOptions("convertkit_form",t.data.forms),e.updateOptions("convertkit_tags",t.data.tags)}))},onListUpdate:function onListUpdate(){this.updateFieldsMapping()},updateFieldsMapping:function updateFieldsMapping(){if(this.getEditorControlView("convertkit_form").getControlValue()){var e=[{remote_label:elementor.translate("Email"),remote_type:"email",remote_id:"email",remote_required:!0},{remote_label:elementor.translate("First Name"),remote_type:"text",remote_id:"first_name",remote_required:!1}];this.getEditorControlView("convertkit_fields_map").updateMap(e)}},getConvertKitCache:function getConvertKitCache(e,t,n,o){if(_.has(this.cache[e],n)){var r={};return r[e]=this.cache[e][n],jQuery.Deferred().resolve(r)}return o=_.extend({},o,{service:"convertkit",convertkit_action:t,api_key:this.getEditorControlView("convertkit_api_key_source").getControlValue(),custom_api_key:this.getEditorControlView("convertkit_custom_api_key").getControlValue()}),this.fetchCache(e,n,o)}})},88775:(e,t,n)=>{"use strict";var o=n(64e3);e.exports=o.extend({getName:function getName(){return"drip"},onElementChange:function onElementChange(e){switch(e){case"drip_api_token_source":case"drip_custom_api_token":this.onApiUpdate();break;case"drip_account":this.onDripAccountsUpdate()}},onApiUpdate:function onApiUpdate(){var e=this,t=e.getEditorControlView("drip_api_token_source"),n=e.getEditorControlView("drip_custom_api_token");if("default"!==t.getControlValue()&&""===n.getControlValue())return e.updateOptions("drip_account",[]),void e.getEditorControlView("drip_account").setValue("");e.addControlSpinner("drip_account"),this.getCacheKey({type:"accounts",controls:[t.getControlValue(),n.getControlValue()]}),e.getDripCache("accounts","accounts",t.getControlValue()).done((function(t){e.updateOptions("drip_account",t.accounts)}))},onDripAccountsUpdate:function onDripAccountsUpdate(){this.updateFieldsMapping()},updateFieldsMapping:function updateFieldsMapping(){if(this.getEditorControlView("drip_account").getControlValue()){var e={remote_label:elementor.translate("Email"),remote_type:"email",remote_id:"email",remote_required:!0};this.getEditorControlView("drip_fields_map").updateMap([e])}},getDripCache:function getDripCache(e,t,n,o){if(_.has(this.cache[e],n)){var r={};return r[e]=this.cache[e][n],jQuery.Deferred().resolve(r)}return o=_.extend({},o,{service:"drip",drip_action:t,api_token:this.getEditorControlView("drip_api_token_source").getControlValue(),custom_api_token:this.getEditorControlView("drip_custom_api_token").getControlValue()}),this.fetchCache(e,n,o)}})},15870:(e,t,n)=>{"use strict";var o=n(64e3);e.exports=o.extend({getName:function getName(){return"getresponse"},onElementChange:function onElementChange(e){switch(e){case"getresponse_custom_api_key":case"getresponse_api_key_source":this.onApiUpdate();break;case"getresponse_list":this.onGetResonseListUpdate()}},onApiUpdate:function onApiUpdate(){var e=this,t=e.getEditorControlView("getresponse_api_key_source"),n=e.getEditorControlView("getresponse_custom_api_key");if("default"!==t.getControlValue()&&""===n.getControlValue())return e.updateOptions("getresponse_list",[]),void e.getEditorControlView("getresponse_list").setValue("");e.addControlSpinner("getresponse_list");var o=this.getCacheKey({type:"lists",controls:[t.getControlValue(),n.getControlValue()]});e.getCache("lists","lists",o).done((function(t){e.updateOptions("getresponse_list",t.lists)}))},onGetResonseListUpdate:function onGetResonseListUpdate(){this.updatGetResonseList()},updatGetResonseList:function updatGetResonseList(){var e=this,t=e.getEditorControlView("getresponse_list");if(t.getControlValue()){e.addControlSpinner("getresponse_fields_map");var n=this.getCacheKey({type:"fields",controls:[t.getControlValue()]});e.getCache("fields","get_fields",n,{getresponse_list:t.getControlValue()}).done((function(t){e.getEditorControlView("getresponse_fields_map").updateMap(t.fields)}))}},getCache:function getCache(e,t,n,o){if(_.has(this.cache[e],n)){var r={};return r[e]=this.cache[e][n],jQuery.Deferred().resolve(r)}return o=_.extend({},o,{service:"getresponse",getresponse_action:t,api_key:this.getEditorControlView("getresponse_api_key_source").getControlValue(),custom_api_key:this.getEditorControlView("getresponse_custom_api_key").getControlValue()}),this.fetchCache(e,n,o)},onSectionActive:function onSectionActive(){o.prototype.onSectionActive.apply(this,arguments),this.updatGetResonseList()}})},16165:(e,t,n)=>{"use strict";var o=n(67971),r=o(n(35657)),i=o(n(74846)),a=n(64e3);e.exports=a.extend({getName:function getName(){return"mailchimp"},onElementChange:function onElementChange(e){switch(e){case"mailchimp_api_key_source":case"mailchimp_api_key":this.onApiUpdate();break;case"mailchimp_list":this.onMailchimpListUpdate()}},onApiUpdate:function onApiUpdate(){var e=this,t=e.getEditorControlView("mailchimp_api_key"),n=e.getEditorControlView("mailchimp_api_key_source");if("default"!==n.getControlValue()&&""===t.getControlValue())return e.updateOptions("mailchimp_list",[]),void e.getEditorControlView("mailchimp_list").setValue("");e.resetControlIndicators("mailchimp_list"),e.addControlSpinner("mailchimp_list");var o=this.getCacheKey({type:"lists",controls:[t.getControlValue(),n.getControlValue()]});e.getMailchimpCache("lists","lists",o).done((function(t){e.updateOptions("mailchimp_list",t.lists),e.updatMailchimpList()})).fail((function(t){e.addControlError("mailchimp_list",t)})).always((function(){e.removeControlSpinner("mailchimp_list")}))},onMailchimpListUpdate:function onMailchimpListUpdate(){this.updateOptions("mailchimp_groups",[]),this.getEditorControlView("mailchimp_groups").setValue(""),this.updatMailchimpList()},updatMailchimpList:function updatMailchimpList(){var e=this,t=e.getEditorControlView("mailchimp_list");if(t.getControlValue()){e.resetControlIndicators("mailchimp_groups"),e.addControlSpinner("mailchimp_groups"),this.getCacheKey({type:"list_details",controls:[t.getControlValue()]}),e.getMailchimpCache("list_details","list_details",t.getControlValue(),{mailchimp_list:t.getControlValue()}).done((function(t){e.updateOptions("mailchimp_groups",t.list_details.groups),e.getEditorControlView("mailchimp_fields_map").updateMap(t.list_details.fields)})).fail((function(t){e.addControlError("mailchimp_groups",t)})).always((function(){e.removeControlSpinner("mailchimp_groups")}));var n={type:"fields",action:"fields",cacheKey:t.getControlValue(),args:{mailchimp_list:t.getControlValue()},immediately:!0};e.getMailchimpCache.apply(e,(0,i.default)((0,r.default)(n))).done((function(t){e.getEditorControlView("mailchimp_fields_map").updateMap(t.fields)}))}},getMailchimpCache:function getMailchimpCache(e,t,n,o){var r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(_.has(this.cache[e],n)){var i={};return i[e]=this.cache[e][n],jQuery.Deferred().resolve(i)}return o=_.extend({},o,{service:"mailchimp",mailchimp_action:t,api_key:this.getEditorControlView("mailchimp_api_key").getControlValue(),use_global_api_key:this.getEditorControlView("mailchimp_api_key_source").getControlValue()}),this.fetchCache(e,n,o,r)},onSectionActive:function onSectionActive(){a.prototype.onSectionActive.apply(this,arguments),this.onApiUpdate()}})},83852:(e,t,n)=>{"use strict";var o=n(64e3);e.exports=o.extend({fields:{},getName:function getName(){return"mailerlite"},onElementChange:function onElementChange(e){switch(e){case"mailerlite_api_key_source":case"mailerlite_custom_api_key":this.onMailerliteApiKeyUpdate();break;case"mailerlite_group":this.updateFieldsMapping()}},onMailerliteApiKeyUpdate:function onMailerliteApiKeyUpdate(){var e=this,t=e.getEditorControlView("mailerlite_custom_api_key"),n=e.getEditorControlView("mailerlite_api_key_source");if("default"!==n.getControlValue()&&""===t.getControlValue())return e.updateOptions("mailerlite_group",[]),void e.getEditorControlView("mailerlite_group").setValue("");e.addControlSpinner("mailerlite_group");var o=this.getCacheKey({type:"groups",controls:[t.getControlValue(),n.getControlValue()]});e.getMailerliteCache("groups","groups",o).done((function(t){e.updateOptions("mailerlite_group",t.groups),e.fields=t.fields}))},updateFieldsMapping:function updateFieldsMapping(){if(this.getEditorControlView("mailerlite_group").getControlValue()){var e=[{remote_label:elementor.translate("Email"),remote_type:"email",remote_id:"email",remote_required:!0},{remote_label:elementor.translate("Name"),remote_type:"text",remote_id:"name",remote_required:!1},{remote_label:elementor.translate("Last Name"),remote_type:"text",remote_id:"last_name",remote_required:!1},{remote_label:elementor.translate("Company"),remote_type:"text",remote_id:"company",remote_required:!1},{remote_label:elementor.translate("Phone"),remote_type:"text",remote_id:"phone",remote_required:!1},{remote_label:elementor.translate("Country"),remote_type:"text",remote_id:"country",remote_required:!1},{remote_label:elementor.translate("State"),remote_type:"text",remote_id:"state",remote_required:!1},{remote_label:elementor.translate("City"),remote_type:"text",remote_id:"city",remote_required:!1},{remote_label:elementor.translate("Zip"),remote_type:"text",remote_id:"zip",remote_required:!1}];for(var t in this.fields)this.fields.hasOwnProperty(t)&&e.push(this.fields[t]);this.getEditorControlView("mailerlite_fields_map").updateMap(e)}},getMailerliteCache:function getMailerliteCache(e,t,n,o){if(_.has(this.cache[e],n)){var r={};return r[e]=this.cache[e][n],jQuery.Deferred().resolve(r)}return o=_.extend({},o,{service:"mailerlite",mailerlite_action:t,custom_api_key:this.getEditorControlView("mailerlite_custom_api_key").getControlValue(),api_key:this.getEditorControlView("mailerlite_api_key_source").getControlValue()}),this.fetchCache(e,n,o)},onSectionActive:function onSectionActive(){o.prototype.onSectionActive.apply(this,arguments),this.onMailerliteApiKeyUpdate()}})},54577:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=r(n(51828)),d=function(e){(0,l.default)(FormsModule,e);var t=(0,u.default)(FormsModule);function FormsModule(){return(0,i.default)(this,FormsModule),t.apply(this,arguments)}return(0,a.default)(FormsModule,[{key:"onElementorInit",value:function onElementorInit(){var e=n(20763),t=n(96922),o=n(83852),r=n(16165),i=n(88775),a=n(89633),l=n(15870),u=n(91362);this.replyToField=new e,this.mailchimp=new r("form"),this.recaptcha=new t("form"),this.drip=new i("form"),this.activecampaign=new a("form"),this.getresponse=new l("form"),this.convertkit=new u("form"),this.mailerlite=new o("form");var s=n(29706),d=n(82787),c=n(99960),p=n(43666),f=n(33726);this.Fields={time:new s("form"),date:new d("form"),tel:new f("form"),acceptance:new c("form"),upload:new p("form")},elementor.addControlView("Fields_map",n(51096)),elementor.addControlView("form-fields-repeater",n(17455))}},{key:"onElementorInitComponents",value:function onElementorInitComponents(){$e.components.register(new s.default({manager:this}))}}]),FormsModule}(elementorModules.editor.utils.Module);t.default=d},96922:(e,t,n)=>{"use strict";n(71954),e.exports=elementorModules.editor.utils.Module.extend({enqueueRecaptchaJs:function enqueueRecaptchaJs(e,t){elementorFrontend.elements.$body.find('[src="'+e+'"]').length||elementorFrontend.elements.$body.append('<script src="'+e+'" id="recaptcha-'+t+'"<\/script>')},renderField:function renderField(e,t){return e+='<div class="elementor-field '+t.field_type+' ">',e+=this.getDataSettings(t),e+="</div>"},getDataSettings:function getDataSettings(e){var t=elementorPro.config.forms[e.field_type];if(!t.enabled)return'<div class="elementor-alert elementor-alert-info">'+t.setup_message+"</div>";var n='data-sitekey="'+t.site_key+'" data-type="'+t.type+'"';switch(t.type){case"v3":n+=' data-action="form" data-size="invisible" data-badge="'+e.recaptcha_badge+'"';break;case"v2_checkbox":n+=' data-theme="'+e.recaptcha_style+'"',n+=' data-size="'+e.recaptcha_size+'"'}return this.enqueueRecaptchaJs("https://www.google.com/recaptcha/api.js?render=explicit",t.type),'<div class="elementor-g-recaptcha'+_.escape(e.css_classes)+'" '+n+"></div>"},filterItem:function filterItem(e){return"recaptcha"===e.field_type&&(e.field_label=!1),e},onInit:function onInit(){elementor.hooks.addFilter("elementor_pro/forms/content_template/item",this.filterItem),elementor.hooks.addFilter("elementor_pro/forms/content_template/field/recaptcha",this.renderField,10,2),elementor.hooks.addFilter("elementor_pro/forms/content_template/field/recaptcha_v3",this.renderField,10,2)}})},20763:(e,t,n)=>{"use strict";n(90286),e.exports=function(){var e,t,n,o=function refreshReplyToElement(){var t=function getReplyToView(){return e.children.findByModelCid(n.cid)}();t&&t.render()},r=function updateReplyToOptions(){var e,r=t.get("settings").get("form_fields").where({field_type:"email"});r=_.reject(r,{field_label:""}),e=_.map(r,(function(e){return{id:e.get("custom_id"),label:elementorPro.translate("x_field",[e.get("field_label")])}})),n.set("options",{"":n.get("options")[""]}),_.each(e,(function(e){n.get("options")[e.id]=e.label})),o()},i=function updateDefaultReplyTo(e){n.get("options")[""]=e.get("email_from"),o()},a=function onFormFieldsChange(e){e.get("custom_id")&&"email"===e.get("field_type")&&r(),e.changed.email_from&&i(e)},l=function onPanelShow(o,l){e=o.getCurrentPageView(),t=l,function setReplyToControl(){n=e.collection.findWhere({name:"email_reply_to"})}();var u=t.get("settings");u.on("change",a),i(u),r()};!function init(){elementor.hooks.addAction("panel/open_editor/widget/form",l)}()}},31529:(e,t,n)=>{"use strict";var o=n(67394);o(t,"__esModule",{value:!0}),o(t,"Templates",{enumerable:!0,get:function get(){return r.Templates}});var r=n(13730)},13730:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.Templates=void 0;var i=r(n(38923)),a=r(n(47834)),l=r(n(11959)),u=r(n(39041)),s=r(n(77371)),d=r(n(68537)),c=function(e){(0,s.default)(Templates,e);var t=(0,d.default)(Templates);function Templates(){return(0,l.default)(this,Templates),t.apply(this,arguments)}return(0,u.default)(Templates,[{key:"onAfterApply",value:function onAfterApply(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;$e.data.deleteCache(this.component,"document/global/global-widget/templates",t.query),(0,i.default)(n.data).forEach((function(t){var n=(0,a.default)(t,2),o=n[0],r=n[1];$e.data.setCache(e.component,"document/global/global-widget/templates/".concat(o),{},r)}))}}],[{key:"getEndpointFormat",value:function getEndpointFormat(){return"global-widget/templates"}}]),Templates}($e.modules.CommandData);t.Templates=c;var p=c;t.default=p},76712:(e,t,n)=>{"use strict";var o=n(67394);o(t,"__esModule",{value:!0}),o(t,"SaveTemplates",{enumerable:!0,get:function get(){return r.SaveTemplates}});var r=n(69600)},69600:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.SaveTemplates=void 0,n(90286);var i=r(n(73220)),a=r(n(32009)),l=r(n(38923)),u=r(n(47834)),s=r(n(11959)),d=r(n(39041)),c=r(n(77371)),p=r(n(68537)),f=function(e){(0,c.default)(SaveTemplates,e);var t=(0,p.default)(SaveTemplates);function SaveTemplates(){return(0,s.default)(this,SaveTemplates),t.apply(this,arguments)}return(0,d.default)(SaveTemplates,[{key:"apply",value:function apply(){var e=this,t=this.getCurrentTemplatesModels(this.component.changedContainersId);if(t.length)return new i.default((function(n,o){elementorCommon.ajax.addRequest("update_templates",{data:{templates:t.map((function(e){return{id:e.get("id"),content:(0,a.default)([e.toJSON()]),source:"local",type:"widget"}}))},error:o,success:function success(){e.component.changedContainersId={},t.forEach((function(t){var n=t.get("settings");$e.data.setCache(e.component,"document/global/global-widget/templates/".concat(t.id),{},{settings:n})})),n(t)}})}))}},{key:"getCurrentTemplatesModels",value:function getCurrentTemplatesModels(e){var t=this,n=[];return(0,l.default)(e).forEach((function(e){var o=(0,u.default)(e,2),r=o[0],i=o[1];$e.data.getCache(t.component,"document/global/global-widget/templates/".concat(r))||$e.devTools&&$e.devTools.log.warn("$e.data.getCache( component, `document/global/global-widget/templates/".concat(r,"` ) - not found."));var a=elementor.getContainer(i);a&&n.push(new Backbone.Model({id:r,elType:"widget",widgetType:a.model.get("widgetType"),settings:a.settings.toJSON({remove:"default"}),templateID:r}))})),n}}]),SaveTemplates}($e.modules.CommandInternalBase);t.SaveTemplates=f;var m=f;t.default=m},90413:(e,t,n)=>{"use strict";var o=n(67394);o(t,"__esModule",{value:!0}),o(t,"Link",{enumerable:!0,get:function get(){return r.Link}}),o(t,"Unlink",{enumerable:!0,get:function get(){return i.Unlink}});var r=n(4147),i=n(29582)},4147:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.Link=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(Link,e);var t=(0,u.default)(Link);function Link(){return(0,i.default)(this,Link),t.apply(this,arguments)}return(0,a.default)(Link,[{key:"validateArgs",value:function validateArgs(e){this.requireContainer(e),this.requireArgumentConstructor("data",Object,e);var t=e.containers;(void 0===t?[e.container]:t).forEach((function(e){if("global"===e.model.get("widgetType"))throw Error("Invalid container, id: '".concat(e.id,"' is already global."))}))}},{key:"getHistory",value:function getHistory(e){var t=e.data;return{title:elementor.widgetsCache[t.widgetType].title,subTitle:t.title,type:elementorPro.translate("linked_to_global")}}},{key:"apply",value:function apply(e){var t=this,n=e.data,o=e.containers;(void 0===o?[e.container]:o).forEach((function(e){var o=e.model,r=o.collection.indexOf(o);n.elType=n.type,n.settings=o.get("settings").attributes,n.widgetType=o.get("widgetType");var i=elementorPro.modules.globalWidget.addGlobalWidget(n.template_id,n).attributes;$e.data.setCache(t.component,"document/global/global-widget/templates/".concat(n.template_id),{},n),$e.run("document/elements/create",{container:e.parent,model:{id:elementor.helpers.getUniqueID(),elType:i.elType,widgetType:i.widgetType,templateID:n.template_id},options:{at:r}}),$e.run("document/elements/delete",{container:e})})),$e.route("panel/elements/global")}}]),Link}($e.modules.document.CommandHistory);t.Link=s;var d=s;t.default=d},29582:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.Unlink=void 0;var i=r(n(57135));n(90286);var a=r(n(49117)),l=r(n(11959)),u=r(n(39041)),s=r(n(77371)),d=r(n(68537)),c=function(e){(0,s.default)(Unlink,e);var t,n=(0,d.default)(Unlink);function Unlink(){return(0,l.default)(this,Unlink),n.apply(this,arguments)}return(0,u.default)(Unlink,[{key:"validateArgs",value:function validateArgs(e){this.requireContainer(e)}},{key:"getHistory",value:function getHistory(e){var t=e.containers,n=void 0===t?[e.container]:t;return{title:elementor.helpers.getModelLabel(n[0].model),type:elementorPro.translate("unlink_widget")}}},{key:"apply",value:(t=(0,a.default)(i.default.mark((function _callee(e){var t,n,o,r,a;return i.default.wrap((function _callee$(i){for(;;)switch(i.prev=i.next){case 0:return t=e.containers,n=void 0===t?[e.container]:t,o=n.map((function(e){return e.model.get("templateID")})),i.next=4,$e.data.get("document/global/templates",{ids:o});case 4:r=i.sent,a=r.data,n.forEach((function(e){var t=e.model.get("templateID"),n=elementorPro.modules.globalWidget.createGlobalModel(t,a[t]);$e.run("document/elements/create",{container:e.parent,model:{id:elementor.helpers.getUniqueID(),elType:"widget",widgetType:n.get("widgetType"),settings:elementorCommon.helpers.cloneObject(n.get("settings").attributes),defaultEditSettings:elementorCommon.helpers.cloneObject(n.get("editSettings").attributes)},options:{at:e.model.collection.indexOf(e.model),edit:!0}}),$e.run("document/elements/delete",{container:e})}));case 7:case"end":return i.stop()}}),_callee)}))),function apply(e){return t.apply(this,arguments)})}]),Unlink}($e.modules.document.CommandHistory);t.Unlink=c;var p=c;t.default=p},60118:(e,t,n)=>{"use strict";var o=n(67394),r=n(52369),i=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var a=i(n(14176)),l=i(n(38923)),u=i(n(47834)),s=i(n(11959)),d=i(n(39041)),c=i(n(38852)),p=i(n(76700)),f=i(n(44263)),m=i(n(77371)),g=i(n(68537)),v=i(n(18042)),h=r(n(90413)),y=r(n(76712)),_=r(n(31529)),b=r(n(33311)),C=function(e){(0,m.default)(Component,e);var t=(0,g.default)(Component);function Component(){var e;(0,s.default)(this,Component);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return e=t.call.apply(t,[this].concat(o)),(0,v.default)((0,c.default)(e),"notLoadedTemplatesIds",[]),(0,v.default)((0,c.default)(e),"lastChangedContainers",null),(0,v.default)((0,c.default)(e),"changedContainersId",{}),e}return(0,d.default)(Component,[{key:"registerAPI",value:function registerAPI(){var e=this;(0,p.default)((0,f.default)(Component.prototype),"registerAPI",this).call(this),$e.routes.on("run:after",(function(t,n){"panel/elements/global"===n&&e.onRoutePanelElementsGlobal()}))}},{key:"getNamespace",value:function getNamespace(){return"document/global"}},{key:"defaultCommands",value:function defaultCommands(){return this.importCommands(h)}},{key:"defaultCommandsInternal",value:function defaultCommandsInternal(){return this.importCommands(y)}},{key:"defaultData",value:function defaultData(){return this.importCommands(_)}},{key:"defaultHooks",value:function defaultHooks(){return this.importHooks(b)}},{key:"onRoutePanelElementsGlobal",value:function onRoutePanelElementsGlobal(){var e=this;this.notLoadedTemplatesIds.length&&$e.data.get("document/global/templates",{ids:this.notLoadedTemplatesIds}).then((function(){e.notLoadedTemplatesIds=[]}))}},{key:"updateGlobalsRecursive",value:function updateGlobalsRecursive(e){var t=["dynamic","globals","settings"];elementor.getPreviewContainer().forEachChildrenRecursive((function(n){e!==n&&(0,a.default)(n.model.get("templateID"))===(0,a.default)(e.model.get("templateID"))&&(t.forEach((function(t){var o=e[t];if(o instanceof Backbone.Model){var r="settings"===t?e.settings.attributes:o.changed;(0,l.default)(r).forEach((function(e){var o=(0,u.default)(e,2),r=o[0],i=o[1];n[t].set(r,i)}))}})),n.render())}))}}]),Component}($e.modules.ComponentBase);t.default=C},47756:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.GlobalWidgetPrepareUpdate=void 0,n(90286);var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(GlobalWidgetPrepareUpdate,e);var t=(0,u.default)(GlobalWidgetPrepareUpdate);function GlobalWidgetPrepareUpdate(){return(0,i.default)(this,GlobalWidgetPrepareUpdate),t.apply(this,arguments)}return(0,a.default)(GlobalWidgetPrepareUpdate,[{key:"getCommand",value:function getCommand(){return"document/elements/set-settings"}},{key:"getId",value:function getId(){return"elementor-pro-global-widget-prepare-update"}},{key:"getConditions",value:function getConditions(e){var t=e.containers;return(void 0===t?[e.container]:t).some((function(e){return e.renderer.model.get("templateID")}))}},{key:"apply",value:function apply(e){var t=e.containers,n=void 0===t?[e.container]:t,o=$e.components.get("document/global");o.lastChangedContainers=n.map((function(e){return e.renderer})),n.forEach((function(e){o.changedContainersId[e.renderer.model.get("templateID")]=e.renderer.id}))}}]),GlobalWidgetPrepareUpdate}($e.modules.hookData.After);t.GlobalWidgetPrepareUpdate=s;var d=s;t.default=d},60272:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.GlobalWidgetDoUpdate=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(GlobalWidgetDoUpdate,e);var t=(0,u.default)(GlobalWidgetDoUpdate);function GlobalWidgetDoUpdate(){return(0,i.default)(this,GlobalWidgetDoUpdate),t.apply(this,arguments)}return(0,a.default)(GlobalWidgetDoUpdate,[{key:"getCommand",value:function getCommand(){return"document/history/end-log"}},{key:"getId",value:function getId(){return"elementor-pro-global-widget-do-update"}},{key:"getConditions",value:function getConditions(){return $e.components.get("document/global").lastChangedContainers}},{key:"apply",value:function apply(){var e=$e.components.get("document/global");e.lastChangedContainers.forEach((function(t){return e.updateGlobalsRecursive(t)})),e.lastChangedContainers=null}}]),GlobalWidgetDoUpdate}($e.modules.hookData.After);t.GlobalWidgetDoUpdate=s;var d=s;t.default=d},68578:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.GlobalWidgetSaveTemplates=void 0;var i=r(n(83452)),a=r(n(11959)),l=r(n(39041)),u=r(n(77371)),s=r(n(68537)),d=function(e){(0,u.default)(GlobalWidgetSaveTemplates,e);var t=(0,s.default)(GlobalWidgetSaveTemplates);function GlobalWidgetSaveTemplates(){return(0,a.default)(this,GlobalWidgetSaveTemplates),t.apply(this,arguments)}return(0,l.default)(GlobalWidgetSaveTemplates,[{key:"getCommand",value:function getCommand(){return"document/save/save"}},{key:"getId",value:function getId(){return"elementor-pro-global-widget-save-templates"}},{key:"getConditions",value:function getConditions(e){if(!(0,i.default)($e.components.get("document/global").changedContainersId).length)return!1;var t=e.document;return(void 0===t?elementor.documents.getCurrent():t).config.panel.has_elements&&e.status&&-1!==["private","publish"].indexOf(e.status)}},{key:"apply",value:function apply(){$e.internal("document/global/save-templates")}}]),GlobalWidgetSaveTemplates}($e.modules.hookData.After);t.GlobalWidgetSaveTemplates=d;var c=d;t.default=c},32523:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.GlobalWidgetLoadTemplates=void 0;var i=r(n(38923)),a=r(n(14176)),l=r(n(47834)),u=r(n(11959)),s=r(n(39041)),d=r(n(77371)),c=r(n(68537)),p=r(n(18042)),f=function(e){(0,d.default)(GlobalWidgetLoadTemplates,e);var t=(0,c.default)(GlobalWidgetLoadTemplates);function GlobalWidgetLoadTemplates(){return(0,u.default)(this,GlobalWidgetLoadTemplates),t.apply(this,arguments)}return(0,s.default)(GlobalWidgetLoadTemplates,[{key:"initialize",value:function initialize(){var e=this;setTimeout((function(){e.component=$e.components.get("document/global")}))}},{key:"getCommand",value:function getCommand(){return"editor/documents/attach-preview"}},{key:"getId",value:function getId(){return"elementor-pro-global-widget-load-templates"}},{key:"getConditions",value:function getConditions(){return!GlobalWidgetLoadTemplates.calledOnce}},{key:"apply",value:function apply(){var e=this;GlobalWidgetLoadTemplates.calledOnce=!0,(0,i.default)(elementorPro.config.widget_templates).forEach((function(t){var n=(0,l.default)(t,2),o=n[0],r=n[1];elementorPro.modules.globalWidget.addGlobalWidget(o,r),e.addTemplateToCache(o)}))}},{key:"addTemplateToCache",value:function addTemplateToCache(e){var t=elementor.getPreviewContainer().findChildrenRecursive((function(t){return(0,a.default)(t.model.get("templateID"))===(0,a.default)(e)}));if(!t)return this.component.notLoadedTemplatesIds.push(e);var n={id:t.model.get("templateID"),elType:"widget",widgetType:t.model.get("widgetType"),settings:t.settings.toJSON({remove:"default"}),templateID:t.model.get("templateID")};$e.data.setCache(this.component,"document/global/global-widget/templates/".concat(e),{},n)}}]),GlobalWidgetLoadTemplates}($e.modules.hookData.After);t.GlobalWidgetLoadTemplates=f,(0,p.default)(f,"calledOnce",!1);var m=f;t.default=m},61113:(e,t,n)=>{"use strict";var o=n(67394);o(t,"__esModule",{value:!0}),o(t,"GlobalWidgetPrepareUpdate",{enumerable:!0,get:function get(){return r.GlobalWidgetPrepareUpdate}}),o(t,"GlobalWidgetDoUpdate",{enumerable:!0,get:function get(){return i.GlobalWidgetDoUpdate}}),o(t,"GlobalWidgetSaveTemplates",{enumerable:!0,get:function get(){return a.GlobalWidgetSaveTemplates}}),o(t,"GlobalWidgetLoadTemplates",{enumerable:!0,get:function get(){return l.GlobalWidgetLoadTemplates}});var r=n(47756),i=n(60272),a=n(68578),l=n(32523)},33311:(e,t,n)=>{"use strict";var o=n(67394),r=n(83452);o(t,"__esModule",{value:!0});var i=n(61113);r(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===i[e]||o(t,e,{enumerable:!0,get:function get(){return i[e]}}))}));var a=n(19353);r(a).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===a[e]||o(t,e,{enumerable:!0,get:function get(){return a[e]}}))}))},80423:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.GlobalWidgetHistoryUpdate=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(GlobalWidgetHistoryUpdate,e);var t=(0,u.default)(GlobalWidgetHistoryUpdate);function GlobalWidgetHistoryUpdate(){return(0,i.default)(this,GlobalWidgetHistoryUpdate),t.apply(this,arguments)}return(0,a.default)(GlobalWidgetHistoryUpdate,[{key:"getCommand",value:function getCommand(){return"document/elements/set-settings"}},{key:"getId",value:function getId(){return"elementor-pro-global-widget-history-update"}},{key:"getContainerType",value:function getContainerType(){return"widget"}},{key:"getConditions",value:function getConditions(e){var t=e.containers,n=void 0===t?[e.container]:t;return!elementor.documents.getCurrent().history.getActive()&&n.some((function(e){return e.model.get("templateID")}))}},{key:"apply",value:function apply(e){var t=e.containers;(void 0===t?[e.container]:t).forEach((function(e){return $e.components.get("document/global").updateGlobalsRecursive(e)}))}}]),GlobalWidgetHistoryUpdate}($e.modules.hookUI.After);t.GlobalWidgetHistoryUpdate=s;var d=s;t.default=d},19353:(e,t,n)=>{"use strict";var o=n(67394);o(t,"__esModule",{value:!0}),o(t,"GlobalWidgetHistoryUpdate",{enumerable:!0,get:function get(){return r.GlobalWidgetHistoryUpdate}});var r=n(80423)},53425:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(15149)),a=r(n(11959)),l=r(n(39041)),u=r(n(38852)),s=r(n(77371)),d=r(n(68537)),c=r(n(18042)),p=r(n(60118)),f=function(e){(0,s.default)(Module,e);var t=(0,d.default)(Module);function Module(){var e;(0,a.default)(this,Module);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return e=t.call.apply(t,[this].concat(o)),(0,c.default)((0,u.default)(e),"panelWidgets",new Backbone.Collection),e}return(0,l.default)(Module,[{key:"addGlobalWidget",value:function addGlobalWidget(e,t){return this.panelWidgets.add(this.createGlobalModel(e,t))}},{key:"createGlobalModel",value:function createGlobalModel(e,t){t=(0,i.default)({},t,{id:e,categories:[],icon:elementor.widgetsCache[t.widgetType].icon,widgetType:t.widgetType,custom:{templateID:e}});var n=new elementor.modules.elements.models.Element(t);return n.set("id",e),n}},{key:"setWidgetType",value:function setWidgetType(){elementor.hooks.addFilter("element/view",(function(e,t){return t.get("templateID")?n(43501).default:e})),elementor.hooks.addFilter("element/model",(function(e,t){return t.templateID?n(53402).default:e}))}},{key:"registerTemplateType",value:function registerTemplateType(){elementor.templates.registerTemplateType("widget",{showInLibrary:!1,saveDialog:{title:elementorPro.translate("global_widget_save_title"),description:elementorPro.translate("global_widget_save_description")},prepareSavedData:function prepareSavedData(e){return e.widgetType=e.content[0].widgetType,e},ajaxParams:{success:this.onWidgetTemplateSaved.bind(this)}})}},{key:"addPanelPage",value:function addPanelPage(){elementor.getPanelView().addPage("globalWidget",{view:n(91022)})}},{key:"getGlobalModels",value:function getGlobalModels(e){return elementorCommon.helpers.softDeprecated("elementorPro.modules.globalWidget.getGlobalModels( id )","3.5.0","$e.data.getCache( `document/global/global-widget/templates/${ id }` )"),$e.data.getCache(this.component,"document/global/global-widget/templates/".concat(e))}},{key:"saveTemplates",value:function saveTemplates(){elementorCommon.helpers.softDeprecated("elementorPro.modules.globalWidget.saveTemplates()","3.5.0","$e.internal( 'document/global/save-templates' )"),$e.internal("document/global/save-templates")}},{key:"requestGlobalModelSettings",value:function requestGlobalModelSettings(e,t){elementorCommon.helpers.softDeprecated("elementorPro.modules.globalWidget.requestGlobalModelSettings()","3.5.0","$e.data.get( 'document/global/templates' )"),$e.data.get("document/global/templates",{ids:e.id}).then((function(e){t(e)}))}},{key:"setWidgetContextMenuSaveAction",value:function setWidgetContextMenuSaveAction(){elementor.hooks.addFilter("elements/widget/contextMenuGroups",(function(e,t){var n=_.findWhere(e,{name:"save"});if(!n)return e;var o=_.findWhere(n.actions,{name:"save"});return o.callback=t.save.bind(t),delete o.shortcut,e}))}},{key:"onElementorInit",value:function onElementorInit(){var e=this;elementor.on("panel:init",(function(){elementor.hooks.addFilter("panel/elements/regionViews",(function(t){return _.extend(t.global,{view:n(38017),options:{collection:e.panelWidgets}}),t}))})),this.registerTemplateType(),this.setWidgetContextMenuSaveAction(),this.setWidgetType()}},{key:"onElementorInitComponents",value:function onElementorInitComponents(){$e.components.register(new p.default),$e.data.get("document/global/templates",{},{refresh:!0})}},{key:"onElementorPreviewLoaded",value:function onElementorPreviewLoaded(e){e&&(this.addPanelPage(),$e.routes.register("panel/editor","global",(function(e){elementor.getPanelView().setPage("globalWidget","Global Editing",{editedView:e.view})})))}},{key:"onWidgetTemplateSaved",value:function onWidgetTemplateSaved(e){elementor.templates.layout.hideModal();var t=elementor.getContainer(elementor.templates.layout.modalContent.currentView.model.id);$e.run("document/global/link",{container:t,data:e})}}]),Module}(elementorModules.editor.utils.Module);t.default=f},38017:(e,t,n)=>{"use strict";e.exports=elementor.modules.layouts.panel.pages.elements.views.Elements.extend({id:"elementor-global-templates",getEmptyView:function getEmptyView(){return this.collection.length?null:n(2747)},onFilterEmpty:function onFilterEmpty(){}})},2747:e=>{"use strict";var t=elementor.modules.layouts.panel.pages.elements.views.Global;e.exports=t.extend({template:"#tmpl-elementor-panel-global-widget-no-templates",id:"elementor-panel-global-widget-no-templates",className:"elementor-nerd-box elementor-panel-nerd-box e-responsive-panel-stretch"})},91022:e=>{"use strict";e.exports=Marionette.ItemView.extend({id:"elementor-panel-global-widget",template:"#tmpl-elementor-panel-global-widget",ui:{editButton:"#elementor-global-widget-locked-edit .elementor-button",unlinkButton:"#elementor-global-widget-locked-unlink .elementor-button",loading:"#elementor-global-widget-loading"},events:{"click @ui.editButton":"onEditButtonClick","click @ui.unlinkButton":"onUnlinkButtonClick"},initialize:function initialize(){this.initUnlinkDialog()},buildUnlinkDialog:function buildUnlinkDialog(){var e=this;return elementorCommon.dialogsManager.createWidget("confirm",{id:"elementor-global-widget-unlink-dialog",headerMessage:elementorPro.translate("unlink_widget"),message:elementorPro.translate("dialog_confirm_unlink"),position:{my:"center center",at:"center center"},strings:{confirm:elementorPro.translate("unlink"),cancel:elementorPro.translate("cancel")},onConfirm:function onConfirm(){e.getOption("editedView").unlink()}})},initUnlinkDialog:function initUnlinkDialog(){var e;this.getUnlinkDialog=function(){return e||(e=this.buildUnlinkDialog()),e}},editGlobalModel:function editGlobalModel(){var e=this.getOption("editedView");$e.run("panel/editor/open",{model:e.getEditModel(),view:e})},onEditButtonClick:function onEditButtonClick(){this.editGlobalModel()},onUnlinkButtonClick:function onUnlinkButtonClick(){this.getUnlinkDialog().show()}})},53402:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(76700)),u=r(n(44263)),s=r(n(77371)),d=r(n(68537)),c=function(e){(0,s.default)(Model,e);var t=(0,d.default)(Model);function Model(){return(0,i.default)(this,Model),t.apply(this,arguments)}return(0,a.default)(Model,[{key:"initSettings",value:function initSettings(){if($e.commands.is("document/elements/create"))return this.initSettingsFromTemplate();(0,l.default)((0,u.default)(Model.prototype),"initSettings",this).call(this)}},{key:"initEditSettings",value:function initEditSettings(){(0,l.default)((0,u.default)(Model.prototype),"initEditSettings",this).call(this),this.get("editSettings").set("editTab","global")}},{key:"initSettingsFromTemplate",value:function initSettingsFromTemplate(){var e=this.get("templateID"),t=$e.components.get("document/global"),n=$e.data.getCache(t,"document/global/global-widget/templates/".concat(e))||this.attributes,o=elementorPro.modules.globalWidget.createGlobalModel(e,n);this.set("settings",o.get("settings")),elementorFrontend.config.elements.data[this.cid]=this.get("settings")}}]),Model}(elementor.modules.elements.models.Element);t.default=c},43501:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0,n(64434),n(99745);var i=r(n(11959)),a=r(n(39041)),l=r(n(76700)),u=r(n(44263)),s=r(n(77371)),d=r(n(68537)),c=function(e){(0,s.default)(View,e);var t=(0,d.default)(View);function View(){return(0,i.default)(this,View),t.apply(this,arguments)}return(0,a.default)(View,[{key:"className",value:function className(){return(0,l.default)((0,u.default)(View.prototype),"className",this).call(this)+" elementor-global-widget elementor-global-"+this.model.get("templateID")}},{key:"addInlineEditingAttributes",value:function addInlineEditingAttributes(){}},{key:"unlink",value:function unlink(){$e.run("document/global/unlink",{container:this.getContainer()})}},{key:"onEditRequest",value:function onEditRequest(){$e.route("panel/editor/global",{view:this})}},{key:"getContextMenuGroups",value:function getContextMenuGroups(){return(0,l.default)((0,u.default)(View.prototype),"getContextMenuGroups",this).call(this).filter((function(e){return"save"!==e.name}))}},{key:"getContainer",value:function getContainer(){if(this.container)return this.container;var e=(0,l.default)((0,u.default)(View.prototype),"getContainer",this).call(this);return e.label=e.label+" ("+elementorPro.translate("global")+")",e}},{key:"render",value:function render(){(0,l.default)((0,u.default)(View.prototype),"render",this).call(this),setTimeout(this.removeInlineAddingAttributes.bind(this))}},{key:"removeInlineAddingAttributes",value:function removeInlineAddingAttributes(){var e=this.el.querySelector(".elementor-inline-editing");e&&e.classList.remove("elementor-inline-editing")}}]),View}(elementor.modules.elements.views.Widget);t.default=c},81891:(e,t,n)=>{"use strict";e.exports=elementorModules.editor.utils.Module.extend({onElementorPreviewLoaded:function onElementorPreviewLoaded(){var e=n(7471);this.editButton=new e}})},7471:(e,t,n)=>{"use strict";n(71954),e.exports=function(){var e=this;e.onPanelShow=function(t){var n=t.content.currentView.collection.findWhere({name:"template_id"});e.templateIdView=t.content.currentView.children.findByModelCid(n.cid),e.templateIdView.elementSettingsModel.on("change",e.onTemplateIdChange),e.templateIdView.on("render",e.onTemplateIdChange)},e.onTemplateIdChange=function(){var t=e.templateIdView.elementSettingsModel.get("template_id"),n=e.templateIdView.$el.find(".elementor-edit-template");if(t){var o=ElementorConfig.home_url+"?p="+t+"&elementor";n.length?n.prop("href",o):(n=jQuery("<a />",{target:"_blank",class:"elementor-button elementor-button-default elementor-edit-template",href:o,html:'<i class="eicon-pencil" /> '+elementorPro.config.i18n.edit_template}),e.templateIdView.$el.find(".elementor-control-input-wrapper").after(n))}else n.remove()},e.init=function(){elementor.hooks.addAction("panel/open_editor/widget/template",e.onPanelShow)},e.init()}},42511:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(_default,e);var t=(0,u.default)(_default);function _default(){return(0,i.default)(this,_default),t.apply(this,arguments)}return(0,a.default)(_default,[{key:"onElementorInit",value:function onElementorInit(){elementor.on("navigator:init",this.onNavigatorInit.bind(this))}},{key:"onNavigatorInit",value:function onNavigatorInit(){elementor.navigator.indicators.motionFX={icon:"flash",title:elementorPro.translate("motion_effects"),settingKeys:["motion_fx_motion_fx_scrolling","motion_fx_motion_fx_mouse","background_motion_fx_motion_fx_scrolling","background_motion_fx_motion_fx_mouse"],section:"section_effects"}}}]),_default}(elementorModules.editor.utils.Module);t.default=s},50936:(e,t,n)=>{"use strict";var o=n(67394),r=n(52369),i=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var a=i(n(11959)),l=i(n(39041)),u=i(n(38852)),s=i(n(77371)),d=i(n(68537)),c=i(n(18042)),p=r(n(9523)),f=function(e){(0,s.default)(PopupComponent,e);var t=(0,d.default)(PopupComponent);function PopupComponent(){var e;(0,a.default)(this,PopupComponent);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return e=t.call.apply(t,[this].concat(o)),(0,c.default)((0,u.default)(e),"onPageSettingsCloseHandler",null),e}return(0,l.default)(PopupComponent,[{key:"getNamespace",value:function getNamespace(){return"document/popup"}},{key:"defaultHooks",value:function defaultHooks(){return this.importHooks(p)}}]),PopupComponent}($e.modules.ComponentBase);t.default=f},13595:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(83452));n(84208);var a=r(n(11959)),l=r(n(39041)),u=r(n(76700)),s=r(n(44263)),d=r(n(77371)),c=r(n(68537)),p=function(e){(0,d.default)(_default,e);var t=(0,c.default)(_default);function _default(){var e;(0,a.default)(this,_default);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(e=t.call.apply(t,[this].concat(o))).template=_.noop,e.activeTab="content",e.listenTo(e.model,"change",e.onModelChange),e}return(0,l.default)(_default,[{key:"getNamespaceArray",value:function getNamespaceArray(){return["popup","display-settings"]}},{key:"className",value:function className(){return(0,u.default)((0,s.default)(_default.prototype),"className",this).call(this)+" elementor-popup__display-settings"}},{key:"toggleGroup",value:function toggleGroup(e,t){t.toggleClass("elementor-active",!!this.model.get(e))}},{key:"onRenderTemplate",value:function onRenderTemplate(){this.activateFirstSection()}},{key:"onRender",value:function onRender(){var e,t=this,n=this.getOption("name");this.children.each((function(o){if("heading"===o.model.get("type")){var r=o.model.get("name").replace("_heading","");e=jQuery("<div>",{id:"elementor-popup__".concat(n,"-controls-group--").concat(r),class:"elementor-popup__display-settings_controls_group"});var i=jQuery("<div>",{class:"elementor-popup__display-settings_controls_group__icon"}),a=jQuery("<img>",{src:elementorPro.config.urls.modules+"popup/assets/images/".concat(n,"/").concat(r,".svg")});i.html(a),e.html(i),o.$el.before(e),e.append(o.$el),t.toggleGroup(r,e)}else e&&e.append(o.$el)}))}},{key:"onModelChange",value:function onModelChange(){var e=(0,i.default)(this.model.changed)[0],t=this.getControlViewByName(e);"switcher"===t.model.get("type")&&this.toggleGroup(e,t.$el.parent())}}]),_default}(elementorModules.editor.views.ControlsStack);t.default=p},77633:(e,t,n)=>{"use strict";var o=n(67394);o(t,"__esModule",{value:!0}),o(t,"PopupSave",{enumerable:!0,get:function get(){return r.PopupSave}});var r=n(21119)},21119:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.PopupSave=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(PopupSave,e);var t=(0,u.default)(PopupSave);function PopupSave(){return(0,i.default)(this,PopupSave),t.apply(this,arguments)}return(0,a.default)(PopupSave,[{key:"getCommand",value:function getCommand(){return"document/save/save"}},{key:"getId",value:function getId(){return"elementor-pro-popup-save"}},{key:"getConditions",value:function getConditions(){return"popup"===elementor.config.document.type}},{key:"apply",value:function apply(){var e={};jQuery.each(elementorPro.modules.popup.displaySettingsTypes,(function(t,n){e[t]=n.model.toJSON({remove:["default"]})})),elementorPro.ajax.addRequest("popup_save_display_settings",{data:{settings:e}})}}]),PopupSave}($e.modules.hookData.After);t.PopupSave=s;var d=s;t.default=d},9523:(e,t,n)=>{"use strict";var o=n(67394),r=n(83452);o(t,"__esModule",{value:!0});var i=n(77633);r(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===i[e]||o(t,e,{enumerable:!0,get:function get(){return i[e]}}))}));var a=n(19204);r(a).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===a[e]||o(t,e,{enumerable:!0,get:function get(){return a[e]}}))}))},63910:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(76700)),u=r(n(44263)),s=r(n(77371)),d=r(n(68537)),c=function(e){(0,s.default)(BaseHookPopupAfter,e);var t=(0,d.default)(BaseHookPopupAfter);function BaseHookPopupAfter(){return(0,i.default)(this,BaseHookPopupAfter),t.apply(this,arguments)}return(0,a.default)(BaseHookPopupAfter,[{key:"run",value:function run(){var e;this.component=this.component||$e.components.get("document/popup");for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return(e=(0,l.default)((0,u.default)(BaseHookPopupAfter.prototype),"run",this)).call.apply(e,[this].concat(n))}}]),BaseHookPopupAfter}($e.modules.hookUI.After);t.default=c},63698:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.PopupRemoveInstructions=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(PopupRemoveInstructions,e);var t=(0,u.default)(PopupRemoveInstructions);function PopupRemoveInstructions(){return(0,i.default)(this,PopupRemoveInstructions),t.apply(this,arguments)}return(0,a.default)(PopupRemoveInstructions,[{key:"getCommand",value:function getCommand(){return"editor/documents/unload"}},{key:"getId",value:function getId(){return"elementor-pro-popup-remove-instructions"}},{key:"getConditions",value:function getConditions(e){return"popup"===e.document.config.type&&!elementor.config.user.introduction.popupSettings}},{key:"apply",value:function apply(){$e.components.get("panel/page-settings").off("route/close",this.component.onPageSettingsCloseHandler)}}]),PopupRemoveInstructions}(r(n(63910)).default);t.PopupRemoveInstructions=s;var d=s;t.default=d},67271:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.PopupRemoveLibraryTab=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(PopupRemoveLibraryTab,e);var t=(0,u.default)(PopupRemoveLibraryTab);function PopupRemoveLibraryTab(){return(0,i.default)(this,PopupRemoveLibraryTab),t.apply(this,arguments)}return(0,a.default)(PopupRemoveLibraryTab,[{key:"getCommand",value:function getCommand(){return"editor/documents/unload"}},{key:"getId",value:function getId(){return"elementor-pro-popup-remove-library-tab"}},{key:"getConditions",value:function getConditions(e){return"popup"===e.document.config.type}},{key:"apply",value:function apply(){$e.components.get("library").removeTab("templates/popups")}}]),PopupRemoveLibraryTab}($e.modules.hookUI.After);t.PopupRemoveLibraryTab=s;var d=s;t.default=d},26094:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.PopupRemoveTriggers=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(PopupRemoveTriggers,e);var t=(0,u.default)(PopupRemoveTriggers);function PopupRemoveTriggers(){return(0,i.default)(this,PopupRemoveTriggers),t.apply(this,arguments)}return(0,a.default)(PopupRemoveTriggers,[{key:"getCommand",value:function getCommand(){return"editor/documents/unload"}},{key:"getId",value:function getId(){return"elementor-pro-popup-remove-triggers"}},{key:"getConditions",value:function getConditions(e){return"popup"===e.document.config.type}},{key:"apply",value:function apply(){this.removePanelFooterSubmenuItems(),this.removePublishTabs()}},{key:"removePanelFooterSubmenuItems",value:function removePanelFooterSubmenuItems(){var e=elementorPro.modules.popup.displaySettingsTypes;jQuery.each(e,(function(e){elementor.getPanelView().footer.currentView.removeSubMenuItem("saver-options",{name:e})}))}},{key:"removePublishTabs",value:function removePublishTabs(){var e=$e.components.get("theme-builder-publish"),t=elementorPro.modules.popup.displaySettingsTypes;jQuery.each(t,(function(t){e.removeTab(t)}))}}]),PopupRemoveTriggers}($e.modules.hookUI.After);t.PopupRemoveTriggers=s;var d=s;t.default=d},48873:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.PopupAddInstructions=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(PopupAddInstructions,e);var t=(0,u.default)(PopupAddInstructions);function PopupAddInstructions(){return(0,i.default)(this,PopupAddInstructions),t.apply(this,arguments)}return(0,a.default)(PopupAddInstructions,[{key:"getCommand",value:function getCommand(){return"editor/documents/open"}},{key:"getId",value:function getId(){return"elementor-pro-popup-add-instructions"}},{key:"getConditions",value:function getConditions(e){return"popup"===elementor.documents.get(e.id).config.type&&!elementor.config.user.introduction.popupSettings}},{key:"apply",value:function apply(){this.component.onPageSettingsCloseHandler=this.onPageSettingsClose.bind(this),$e.components.get("panel/page-settings").on("route/close",this.component.onPageSettingsCloseHandler)}},{key:"onPageSettingsClose",value:function onPageSettingsClose(){var e=this.getIntroduction();e.show(elementor.getPanelView().footer.currentView.ui.settings[0]),e.setViewed(),$e.components.get("panel/page-settings").off("route/close",this.component.onPageSettingsCloseHandler)}},{key:"getIntroduction",value:function getIntroduction(){return new elementorModules.editor.utils.Introduction({introductionKey:"popupSettings",dialogOptions:{id:"elementor-popup-settings-introduction",headerMessage:'<i class="eicon-info"></i>'+elementorPro.translate("popup_settings_introduction_title"),message:elementorPro.translate("popup_settings_introduction_message"),closeButton:!0,closeButtonClass:"eicon-close",position:{my:"left bottom",at:"right bottom-5",autoRefresh:!0},hide:{onOutsideClick:!1}}})}}]),PopupAddInstructions}(r(n(63910)).default);t.PopupAddInstructions=s;var d=s;t.default=d},21989:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.PopupAddLibraryTab=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(PopupAddLibraryTab,e);var t=(0,u.default)(PopupAddLibraryTab);function PopupAddLibraryTab(){return(0,i.default)(this,PopupAddLibraryTab),t.apply(this,arguments)}return(0,a.default)(PopupAddLibraryTab,[{key:"getCommand",value:function getCommand(){return"editor/documents/open"}},{key:"getId",value:function getId(){return"elementor-pro-popup-add-library-tab"}},{key:"getConditions",value:function getConditions(e){return"popup"===elementor.documents.get(e.id).config.type}},{key:"apply",value:function apply(){$e.components.get("library").addTab("templates/popups",{title:elementorPro.translate("popups"),filter:{source:"remote",type:"popup"}},1)}}]),PopupAddLibraryTab}($e.modules.hookUI.After);t.PopupAddLibraryTab=s;var d=s;t.default=d},76607:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.PopupAddTriggers=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=r(n(13595)),d=function(e){(0,l.default)(PopupAddTriggers,e);var t=(0,u.default)(PopupAddTriggers);function PopupAddTriggers(){return(0,i.default)(this,PopupAddTriggers),t.apply(this,arguments)}return(0,a.default)(PopupAddTriggers,[{key:"getCommand",value:function getCommand(){return"editor/documents/open"}},{key:"getId",value:function getId(){return"elementor-pro-popup-add-triggers"}},{key:"getConditions",value:function getConditions(e){return"popup"===elementor.documents.get(e.id).config.type}},{key:"apply",value:function apply(){elementor.panel?this.addUI():elementor.on("preview:loaded",this.addUI.bind(this))}},{key:"addUI",value:function addUI(){$e.routes.commands["theme-builder-publish/triggers"]||(this.addPanelFooterSubmenuItems(),this.addPublishTabs())}},{key:"addPublishTabs",value:function addPublishTabs(){var e=elementor.config.document.displaySettings,t=$e.components.get("theme-builder-publish"),n=elementorPro.modules.popup;jQuery.each(n.displaySettingsTypes,(function(n,o){o.model=new elementorModules.editor.elements.models.BaseSettings(e[n].settings,{controls:e[n].controls}),t.addTab(n,{View:s.default,viewOptions:{name:n,id:"elementor-popup-".concat(n,"__controls"),model:o.model,controls:o.model.controls},name:n,title:elementorPro.translate(n),description:elementorPro.translate("popup_publish_screen_".concat(n,"_description")),image:elementorPro.config.urls.modules+"popup/assets/images/".concat(n,"-tab.svg")})}))}},{key:"addPanelFooterSubmenuItems",value:function addPanelFooterSubmenuItems(){var e=$e.components.get("theme-builder-publish"),t=elementorPro.modules.popup.displaySettingsTypes;jQuery.each(t,(function(t,n){elementor.getPanelView().footer.currentView.addSubMenuItem("saver-options",{before:"save-template",name:t,icon:n.icon,title:elementorPro.translate(t),callback:function callback(){return $e.route(e.getTabRoute(t))}})}))}}]),PopupAddTriggers}($e.modules.hookUI.After);t.PopupAddTriggers=d;var c=d;t.default=c},19204:(e,t,n)=>{"use strict";var o=n(67394);o(t,"__esModule",{value:!0}),o(t,"PopupAddInstructions",{enumerable:!0,get:function get(){return r.PopupAddInstructions}}),o(t,"PopupAddLibraryTab",{enumerable:!0,get:function get(){return i.PopupAddLibraryTab}}),o(t,"PopupAddTriggers",{enumerable:!0,get:function get(){return a.PopupAddTriggers}}),o(t,"PopupRemoveInstructions",{enumerable:!0,get:function get(){return l.PopupRemoveInstructions}}),o(t,"PopupRemoveLibraryTab",{enumerable:!0,get:function get(){return u.PopupRemoveLibraryTab}}),o(t,"PopupRemoveTriggers",{enumerable:!0,get:function get(){return s.PopupRemoveTriggers}});var r=n(48873),i=n(21989),a=n(76607),l=n(63698),u=n(67271),s=n(26094)},18754:(e,t,n)=>{"use strict";var o=n(67971),r=o(n(11959)),i=o(n(39041)),a=o(n(77371)),l=o(n(68537)),u=o(n(50936)),s=function(e){(0,a.default)(PopupModule,e);var t=(0,l.default)(PopupModule);function PopupModule(){var e;(0,r.default)(this,PopupModule);for(var n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];return(e=t.call.apply(t,[this].concat(o))).displaySettingsTypes={triggers:{icon:"eicon-click"},timing:{icon:"eicon-cog"}},e}return(0,i.default)(PopupModule,[{key:"onElementorLoaded",value:function onElementorLoaded(){this.component=$e.components.register(new u.default({manager:this}))}}]),PopupModule}(elementorModules.editor.utils.Module);e.exports=s},7693:(e,t,n)=>{"use strict";e.exports=elementorModules.editor.utils.Module.extend({onElementorPreviewLoaded:function onElementorPreviewLoaded(){elementor.addControlView("Query",n(15418))}})},15418:(e,t,n)=>{"use strict";n(71954),e.exports=elementor.modules.controls.Select2.extend({cache:null,isTitlesReceived:!1,getSelect2Placeholder:function getSelect2Placeholder(){return{id:"",text:elementorPro.translate("all")}},getControlValueByName:function getControlValueByName(e){var t=this.model.get("group_prefix")+e;return this.elementSettingsModel.attributes[t]},getQueryDataDeprecated:function getQueryDataDeprecated(){return{filter_type:this.model.get("filter_type"),object_type:this.model.get("object_type"),include_type:this.model.get("include_type"),query:this.model.get("query")}},getQueryData:function getQueryData(){var e=elementorCommon.helpers.cloneObject(this.model.get("autocomplete"));return _.isEmpty(e.query)&&(e.query={}),"cpt_tax"===e.object&&(e.object="tax",(_.isEmpty(e.query)||_.isEmpty(e.query.post_type))&&(e.query.post_type=this.getControlValueByName("post_type"))),{autocomplete:e}},getSelect2DefaultOptions:function getSelect2DefaultOptions(){var e=this;return jQuery.extend(elementor.modules.controls.Select2.prototype.getSelect2DefaultOptions.apply(this,arguments),{ajax:{transport:function transport(t,n,o){var r={},i="panel_posts_control_filter_autocomplete";return!_.isEmpty(e.model.get("filter_type"))?(r=e.getQueryDataDeprecated(),i="panel_posts_control_filter_autocomplete_deprecated"):r=e.getQueryData(),r.q=t.data.q,elementorPro.ajax.addRequest(i,{data:r,success:n,error:o})},data:function data(e){return{q:e.term,page:e.page}},cache:!0},escapeMarkup:function escapeMarkup(e){return e},minimumInputLength:1})},getValueTitles:function getValueTitles(){var e=this,t={},n=!_.isEmpty(this.model.get("filter_type")),o=this.getControlValue(),r="query_control_value_titles",i="autocomplete",a={};n?(i="filter_type",a=this.model.get(i).object,t.filter_type=a,t.object_type=e.model.get("object_type"),t.include_type=e.model.get("include_type"),t.unique_id=""+e.cid+a,r="query_control_value_titles_deprecated"):(a=this.model.get(i).object,t.get_titles=e.getQueryData().autocomplete,t.unique_id=""+e.cid+a),o&&a&&(_.isArray(o)||(o=[o]),elementorCommon.ajax.loadObjects({action:r,ids:o,data:t,before:function before(){e.addControlSpinner()},success:function success(t){e.isTitlesReceived=!0,e.model.set("options",t),e.render()}}))},addControlSpinner:function addControlSpinner(){this.ui.select.prop("disabled",!0),this.$el.find(".elementor-control-title").after('<span class="elementor-control-spinner">&nbsp;<i class="eicon-spinner eicon-animation-spin"></i>&nbsp;</span>')},onReady:function onReady(){this.isTitlesReceived||this.getValueTitles()}})},54793:(e,t,n)=>{"use strict";var o=n(67394),r=n(52369),i=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var a=i(n(11959)),l=i(n(39041)),u=i(n(77371)),s=i(n(68537)),d=r(n(79860)),c=function(e){(0,u.default)(_default,e);var t=(0,s.default)(_default);function _default(){return(0,a.default)(this,_default),t.apply(this,arguments)}return(0,l.default)(_default,[{key:"getNamespace",value:function getNamespace(){return"screenshots"}},{key:"defaultHooks",value:function defaultHooks(){return this.importHooks(d)}}]),_default}($e.modules.ComponentBase);t.default=c},55765:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.DeleteScreenshot=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(DeleteScreenshot,e);var t=(0,u.default)(DeleteScreenshot);function DeleteScreenshot(){return(0,i.default)(this,DeleteScreenshot),t.apply(this,arguments)}return(0,a.default)(DeleteScreenshot,[{key:"getCommand",value:function getCommand(){return"document/save/save"}},{key:"getConditions",value:function getConditions(e){var t=e.status,n=elementor.documents.getCurrent().config;return"publish"===t&&n.support_site_editor}},{key:"getId",value:function getId(){return"document/save/save::delete-screenshot"}},{key:"apply",value:function apply(){var e=elementor.documents.getCurrent().id;return elementorCommon.ajax.addRequest("screenshot_delete",{unique_id:"delete_screenshot_".concat(e),data:{post_id:e}})}}]),DeleteScreenshot}($e.modules.hookData.After);t.DeleteScreenshot=s;var d=s;t.default=d},79860:(e,t,n)=>{"use strict";var o=n(67394);o(t,"__esModule",{value:!0}),o(t,"DeleteScreenshot",{enumerable:!0,get:function get(){return r.DeleteScreenshot}});var r=n(55765)},66882:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=r(n(54793)),d=function(e){(0,l.default)(Module,e);var t=(0,u.default)(Module);function Module(){return(0,i.default)(this,Module),t.apply(this,arguments)}return(0,a.default)(Module,[{key:"onElementorInit",value:function onElementorInit(){$e.components.register(new s.default)}}]),Module}(elementorModules.editor.utils.Module);t.default=d},92287:(e,t,n)=>{"use strict";var o=n(67394),r=n(52369),i=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var a=i(n(11959)),l=i(n(39041)),u=i(n(77371)),s=i(n(68537)),d=r(n(93741)),c=function(e){(0,u.default)(ScrollSnapComponent,e);var t=(0,s.default)(ScrollSnapComponent);function ScrollSnapComponent(){return(0,a.default)(this,ScrollSnapComponent),t.apply(this,arguments)}return(0,l.default)(ScrollSnapComponent,[{key:"getNamespace",value:function getNamespace(){return"scroll-snap"}},{key:"defaultHooks",value:function defaultHooks(){return this.importHooks(d)}}]),ScrollSnapComponent}($e.modules.ComponentBase);t.default=c},27140:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.FocusPreview=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(FocusPreview,e);var t=(0,u.default)(FocusPreview);function FocusPreview(){return(0,i.default)(this,FocusPreview),t.apply(this,arguments)}return(0,a.default)(FocusPreview,[{key:"getCommand",value:function getCommand(){return"document/elements/settings"}},{key:"getId",value:function getId(){return"focus-preview--document/elements/settings"}},{key:"getConditions",value:function getConditions(e){var t;return""!==(null===(t=e.settings.scroll_snap_padding)||void 0===t?void 0:t.size)}},{key:"apply",value:function apply(){setTimeout((function(){elementor.$preview[0].contentWindow.scrollBy(0,0)}),100)}}]),FocusPreview}($e.modules.hookData.After);t.FocusPreview=s;var d=s;t.default=d},93741:(e,t,n)=>{"use strict";var o=n(67394);o(t,"__esModule",{value:!0}),o(t,"FocusPreview",{enumerable:!0,get:function get(){return r.FocusPreview}});var r=n(27140)},25509:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(76700)),u=r(n(44263)),s=r(n(77371)),d=r(n(68537)),c=r(n(92287)),p=function(e){(0,s.default)(Module,e);var t=(0,d.default)(Module);function Module(){return(0,i.default)(this,Module),t.apply(this,arguments)}return(0,a.default)(Module,[{key:"onInit",value:function onInit(){(0,l.default)((0,u.default)(Module.prototype),"onInit",this).call(this),$e.components.register(new c.default)}}]),Module}(elementorModules.editor.utils.Module);t.default=p},78550:e=>{"use strict";e.exports=elementorModules.editor.utils.Module.extend({config:elementorPro.config.shareButtonsNetworks,networksClassDictionary:{google:"fab fa-google-plus",pocket:"fab fa-get-pocket",email:"fas fa-envelope",print:"fas fa-print"},getNetworkClass:function getNetworkClass(e){var t=this.networksClassDictionary[e]||"fab fa-"+e;return elementor.config.icons_update_needed&&(t="fa "+t),t},getNetworkTitle:function getNetworkTitle(e){var t;return e.text||(null===(t=this.getNetworkData(e))||void 0===t?void 0:t.title)},getNetworkData:function getNetworkData(e){return this.config[e.button]},hasCounter:function hasCounter(e,t){return"icon"!==t.view&&"yes"===t.show_counter&&this.config[e].has_counter}})},56719:(e,t,n)=>{"use strict";n(99745),e.exports=elementor.modules.controls.RepeaterRow.extend({template:"#tmpl-elementor-theme-builder-conditions-repeater-row",childViewContainer:".elementor-theme-builder-conditions-repeater-row-controls",conflictCheckedOnFirstRender:!1,id:function id(){return"elementor-condition-id-"+this.model.get("_id")},onBeforeRender:function onBeforeRender(){var e=this.collection.findWhere({name:"sub_name"}),t=this.collection.findWhere({name:"sub_id"}),n=this.config.conditions[this.model.attributes.sub_name];e.attributes.groups=this.getOptions(),n&&n.controls&&_(n.controls).each((function(e){t.set(e),t.set("name","sub_id")}))},initialize:function initialize(){elementor.modules.controls.RepeaterRow.prototype.initialize.apply(this,arguments),this.config=elementor.config.document.theme_builder},updateOptions:function updateOptions(){(this.model.changed.name&&this.model.set({sub_name:"",sub_id:""}),this.model.changed.name||this.model.changed.sub_name)&&(this.model.set("sub_id","",{silent:!0}),this.collection.findWhere({name:"sub_id"}).set({type:"select",options:{"":"All"}}),this.render());this.model.changed.type&&this.setTypeAttribute()},getOptions:function getOptions(){var e=this,t=e.config.conditions[this.model.get("name")];if(t){var n={"":t.all_label};return _(t.sub_conditions).each((function(t,o){var r,i=e.config.conditions[t];i&&(i.sub_conditions.length?((r={label:i.label,options:{}}).options[t]=i.all_label,_(i.sub_conditions).each((function(t){r.options[t]=e.config.conditions[t].label})),n["key"+o]=r):n[t]=i.label)})),n}},setTypeAttribute:function setTypeAttribute(){var e=this.children.findByModel(this.collection.findWhere({name:"type"}));e.$el.attr("data-elementor-condition-type",e.getControlValue())},checkConflicts:function checkConflicts(){var e=this.model.get("_id"),t="elementor-condition-id-"+e,n="elementor-conditions-conflict-message-"+e,o=jQuery("#"+n);jQuery("#"+t).removeClass("elementor-error"),o.remove(),elementorPro.ajax.addRequest("theme_builder_conditions_check_conflicts",{unique_id:t,data:{condition:this.model.toJSON()},success:function success(e){_.isEmpty(e)||jQuery("#"+t).addClass("elementor-error").after('<div id="'+n+'" class="elementor-conditions-conflict-message">'+e+"</div>")}})},onRender:function onRender(){var e=this.collection.findWhere({name:"name"}),t=this.collection.findWhere({name:"sub_name"}),n=this.collection.findWhere({name:"sub_id"}),o=this.children.findByModel(e),r=this.children.findByModel(t),i=this.children.findByModel(n),a=this.config.conditions[this.model.attributes.name],l=this.config.conditions[this.model.attributes.sub_name],u=this.config.types[this.config.settings.template_type];u.condition_type!==o.getControlValue()||"general"===o.getControlValue()||_.isEmpty(a.sub_conditions)||o.$el.hide(),(!a||_.isEmpty(a.sub_conditions)&&_.isEmpty(a.controls)||!o.getControlValue()||"general"===o.getControlValue())&&r.$el.hide(),l&&!_.isEmpty(l.controls)&&r.getControlValue()||i.$el.hide(),"singular"===u.condition_type&&""===r.getControlValue()&&r.setValue("post"),this.setTypeAttribute(),this.conflictCheckedOnFirstRender||(this.checkConflicts(),this.conflictCheckedOnFirstRender=!0)},onModelChange:function onModelChange(){this.updateOptions(),this.checkConflicts()}})},10847:(e,t,n)=>{"use strict";var o=n(67971)(n(56719));e.exports=elementor.modules.controls.Repeater.extend({childView:o.default,updateActiveRow:function updateActiveRow(){},initialize:function initialize(){elementor.modules.controls.Repeater.prototype.initialize.apply(this,arguments),this.config=elementor.config.document.theme_builder,this.updateConditionsOptions(this.config.settings.template_type)},updateConditionsOptions:function updateConditionsOptions(e){var t=this,n=t.config.types[e].condition_type,o={};_([n]).each((function(e,n){var r=t.config.conditions[e],i={label:r.label,options:{}};i.options[e]=r.all_label,_(r.sub_conditions).each((function(e){i.options[e]=t.config.conditions[e].label})),o[n]=i}));var r=this.model.get("fields");r[1].default=n,"general"===n?r[1].groups=o:r[2].groups=o},onRender:function onRender(){this.ui.btnAddRow.text(elementorPro.translate("add_condition"))}})},55219:(e,t,n)=>{"use strict";var o=n(16683);e.exports=o.extend({id:"elementor-theme-builder-conditions-view",template:"#tmpl-elementor-theme-builder-conditions-view",childViewContainer:"#elementor-theme-builder-conditions-controls",childViewOptions:function childViewOptions(){return{elementSettingsModel:this.model}}})},40242:(e,t,n)=>{"use strict";var o=n(67394);o(t,"__esModule",{value:!0}),o(t,"ThemeBuilderSaveAndReload",{enumerable:!0,get:function get(){return r.ThemeBuilderSaveAndReload}}),o(t,"ThemeBuilderUpdatePreviewOptions",{enumerable:!0,get:function get(){return i.ThemeBuilderUpdatePreviewOptions}});var r=n(73062),i=n(25961)},73062:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.ThemeBuilderSaveAndReload=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(ThemeBuilderSaveAndReload,e);var t=(0,u.default)(ThemeBuilderSaveAndReload);function ThemeBuilderSaveAndReload(){return(0,i.default)(this,ThemeBuilderSaveAndReload),t.apply(this,arguments)}return(0,a.default)(ThemeBuilderSaveAndReload,[{key:"getCommand",value:function getCommand(){return"document/elements/settings"}},{key:"getId",value:function getId(){return"elementor-pro-theme-builder-save-and-reload"}},{key:"getContainerType",value:function getContainerType(){return"document"}},{key:"getConditions",value:function getConditions(e){return e.settings&&e.settings.page_template}},{key:"apply",value:function apply(){$e.run("document/save/auto",{force:!0,onSuccess:function onSuccess(){elementor.reloadPreview(),elementor.once("preview:loaded",(function(){$e.route("panel/page-settings/settings")}))}})}}]),ThemeBuilderSaveAndReload}($e.modules.hookData.After);t.ThemeBuilderSaveAndReload=s;var d=s;t.default=d},25961:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.ThemeBuilderUpdatePreviewOptions=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(ThemeBuilderUpdatePreviewOptions,e);var t=(0,u.default)(ThemeBuilderUpdatePreviewOptions);function ThemeBuilderUpdatePreviewOptions(){return(0,i.default)(this,ThemeBuilderUpdatePreviewOptions),t.apply(this,arguments)}return(0,a.default)(ThemeBuilderUpdatePreviewOptions,[{key:"getCommand",value:function getCommand(){return"document/elements/settings"}},{key:"getId",value:function getId(){return"elementor-pro-theme-builder-update-preview-options"}},{key:"getContainerType",value:function getContainerType(){return"document"}},{key:"getConditions",value:function getConditions(e){return e.settings&&e.settings.preview_type}},{key:"apply",value:function apply(e){var t=e.containers,n=void 0===t?[e.container]:t,o=elementorPro.modules.themeBuilder;$e.run("document/elements/settings",{containers:n,settings:{preview_id:"",preview_search_term:""}}),$e.routes.is("panel/page-settings/settings")&&o.updatePreviewIdOptions(!0)}}]),ThemeBuilderUpdatePreviewOptions}($e.modules.hookData.After);t.ThemeBuilderUpdatePreviewOptions=s;var d=s;t.default=d},48760:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.ThemeBuilderSaveConditions=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(ThemeBuilderSaveConditions,e);var t=(0,u.default)(ThemeBuilderSaveConditions);function ThemeBuilderSaveConditions(){return(0,i.default)(this,ThemeBuilderSaveConditions),t.apply(this,arguments)}return(0,a.default)(ThemeBuilderSaveConditions,[{key:"getCommand",value:function getCommand(){return"document/save/save"}},{key:"getId",value:function getId(){return"elementor-pro-theme-builder-save-conditions"}},{key:"getConditions",value:function getConditions(){return!!elementor.config.document.theme_builder}},{key:"apply",value:function apply(){var e=elementorPro.modules.themeBuilder.conditionsModel;elementorPro.ajax.addRequest("theme_builder_save_conditions",{data:e.toJSON({remove:["default"]}),success:function success(){elementor.config.document.theme_builder.settings.conditions=e.get("conditions")}})}}]),ThemeBuilderSaveConditions}($e.modules.hookData.After);t.ThemeBuilderSaveConditions=s;var d=s;t.default=d},91350:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.ThemeBuilderShowConditions=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(ThemeBuilderShowConditions,e);var t=(0,u.default)(ThemeBuilderShowConditions);function ThemeBuilderShowConditions(){return(0,i.default)(this,ThemeBuilderShowConditions),t.apply(this,arguments)}return(0,a.default)(ThemeBuilderShowConditions,[{key:"getCommand",value:function getCommand(){return"document/save/default"}},{key:"getId",value:function getId(){return"elementor-pro-theme-builder-show-conditions"}},{key:"getConditions",value:function getConditions(e){var t=e.force;if(void 0!==t&&t)return!1;var n=!1,o=elementor.config.document.theme_builder;if(o){var r=o.settings.conditions.length,i=o.settings.location,a="draft"===elementor.settings.page.model.get("post_status");!i||r&&!a||(n=!0)}return n}},{key:"apply",value:function apply(){return $e.route("theme-builder-publish/conditions"),!1}}]),ThemeBuilderShowConditions}($e.modules.hookData.Dependency);t.ThemeBuilderShowConditions=s;var d=s;t.default=d},45604:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.ThemeBuilderPreviewBreak=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(ThemeBuilderPreviewBreak,e);var t=(0,u.default)(ThemeBuilderPreviewBreak);function ThemeBuilderPreviewBreak(){return(0,i.default)(this,ThemeBuilderPreviewBreak),t.apply(this,arguments)}return(0,a.default)(ThemeBuilderPreviewBreak,[{key:"getCommand",value:function getCommand(){return"editor/documents/preview"}},{key:"getId",value:function getId(){return"elementor-pro-theme-builder-preview-break"}},{key:"getConditions",value:function getConditions(e){return!e.force&&!!elementor.documents.get(e.id).config.theme_builder}},{key:"apply",value:function apply(){return!1}}]),ThemeBuilderPreviewBreak}($e.modules.hookData.Dependency);t.ThemeBuilderPreviewBreak=s;var d=s;t.default=d},1613:(e,t,n)=>{"use strict";var o=n(67394),r=n(83452);o(t,"__esModule",{value:!0});var i={ThemeBuilderSaveConditions:!0,ThemeBuilderShowConditions:!0,ThemeBuilderPreviewBreak:!0};o(t,"ThemeBuilderSaveConditions",{enumerable:!0,get:function get(){return l.ThemeBuilderSaveConditions}}),o(t,"ThemeBuilderShowConditions",{enumerable:!0,get:function get(){return u.ThemeBuilderShowConditions}}),o(t,"ThemeBuilderPreviewBreak",{enumerable:!0,get:function get(){return s.ThemeBuilderPreviewBreak}});var a=n(40242);r(a).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(i,e)||e in t&&t[e]===a[e]||o(t,e,{enumerable:!0,get:function get(){return a[e]}}))}));var l=n(48760),u=n(91350),s=n(45604)},19101:(e,t,n)=>{"use strict";var o=n(67394),r=n(83452);o(t,"__esModule",{value:!0});var i=n(1613);r(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===i[e]||o(t,e,{enumerable:!0,get:function get(){return i[e]}}))}));var a=n(84539);r(a).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===a[e]||o(t,e,{enumerable:!0,get:function get(){return a[e]}}))}))},97310:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.ThemeBuilderToggleMenuConditions=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(ThemeBuilderToggleMenuConditions,e);var t=(0,u.default)(ThemeBuilderToggleMenuConditions);function ThemeBuilderToggleMenuConditions(){return(0,i.default)(this,ThemeBuilderToggleMenuConditions),t.apply(this,arguments)}return(0,a.default)(ThemeBuilderToggleMenuConditions,[{key:"getCommand",value:function getCommand(){return"document/elements/settings"}},{key:"getId",value:function getId(){return"elementor-pro-theme-builder-toggle-menu-conditions"}},{key:"getContainerType",value:function getContainerType(){return"document"}},{key:"getConditions",value:function getConditions(e){return e.settings&&e.settings.location}},{key:"apply",value:function apply(){elementorPro.modules.themeBuilder.ui.menuConditions.toggle(!!elementor.config.document.theme_builder.settings.location)}}]),ThemeBuilderToggleMenuConditions}($e.modules.hookUI.After);t.ThemeBuilderToggleMenuConditions=s;var d=s;t.default=d},72726:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.ThemeBuilderRemoveEditorUI=void 0;var i=r(n(83452)),a=r(n(11959)),l=r(n(39041)),u=r(n(77371)),s=r(n(68537)),d=function(e){(0,u.default)(ThemeBuilderRemoveEditorUI,e);var t=(0,s.default)(ThemeBuilderRemoveEditorUI);function ThemeBuilderRemoveEditorUI(){return(0,a.default)(this,ThemeBuilderRemoveEditorUI),t.apply(this,arguments)}return(0,l.default)(ThemeBuilderRemoveEditorUI,[{key:"getCommand",value:function getCommand(){return"editor/documents/unload"}},{key:"getId",value:function getId(){return"elementor-pro-theme-builder-remove-editor-ui"}},{key:"getConditions",value:function getConditions(e){return e.document.config.theme_builder}},{key:"apply",value:function apply(){this.removePanelFooterSubmenuItems(),this.removePublishTabs()}},{key:"removePanelFooterSubmenuItems",value:function removePanelFooterSubmenuItems(){var e=elementor.getPanelView().footer.currentView,t=e._behaviors[(0,i.default)(e.behaviors()).indexOf("saver")];elementor.getPanelView().footer.currentView.removeSubMenuItem("saver-options",{name:"conditions"}),t.ui.buttonPreview.tipsy("enable").removeClass("elementor-panel-footer-theme-builder-buttons-wrapper elementor-toggle-state")}},{key:"removePublishTabs",value:function removePublishTabs(){$e.components.get("theme-builder-publish").removeTab("conditions")}}]),ThemeBuilderRemoveEditorUI}($e.modules.hookUI.After);t.ThemeBuilderRemoveEditorUI=d;var c=d;t.default=c},67443:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.ThemeBuilderAddEditorUI=void 0;var i=r(n(83452)),a=r(n(11959)),l=r(n(39041)),u=r(n(77371)),s=r(n(68537)),d=r(n(55219)),c=function(e){(0,u.default)(ThemeBuilderAddEditorUI,e);var t=(0,s.default)(ThemeBuilderAddEditorUI);function ThemeBuilderAddEditorUI(){return(0,a.default)(this,ThemeBuilderAddEditorUI),t.apply(this,arguments)}return(0,l.default)(ThemeBuilderAddEditorUI,[{key:"getCommand",value:function getCommand(){return"editor/documents/open"}},{key:"getId",value:function getId(){return"elementor-pro-theme-builder-add-editor-ui"}},{key:"getConditions",value:function getConditions(e){return elementor.documents.get(e.id).config.theme_builder}},{key:"apply",value:function apply(){elementor.panel?this.addUI():elementor.once("preview:loaded",this.addUI.bind(this))}},{key:"addUI",value:function addUI(){this.addRepeaterControlView(),this.addPanelFooterSubmenuItems(),this.addPublishTabs()}},{key:"addRepeaterControlView",value:function addRepeaterControlView(){elementor.addControlView("Conditions_repeater",n(10847))}},{key:"addPublishTabs",value:function addPublishTabs(){var e=$e.components.get("theme-builder-publish"),t=elementor.config.document.theme_builder,n=t.settings;e.manager.conditionsModel=new elementorModules.editor.elements.models.BaseSettings(n,{controls:t.template_conditions.controls}),e.addTab("conditions",{title:elementorPro.translate("conditions"),View:d.default,viewOptions:{model:e.manager.conditionsModel,controls:e.manager.conditionsModel.controls},name:"conditions",description:elementorPro.translate("conditions_publish_screen_description"),image:elementorPro.config.urls.modules+"theme-builder/assets/images/conditions-tab.svg"})}},{key:"addPanelFooterSubmenuItems",value:function addPanelFooterSubmenuItems(){var e=elementor.getPanelView().footer.currentView,t=e._behaviors[(0,i.default)(e.behaviors()).indexOf("saver")];e.ui.menuConditions=e.addSubMenuItem("saver-options",{before:"save-template",name:"conditions",icon:"eicon-flow",title:elementorPro.translate("display_conditions"),callback:function callback(){return $e.route("theme-builder-publish/conditions")}}),e.ui.menuConditions.toggle(!!elementor.config.document.theme_builder.settings.location),t.ui.buttonPreview.tipsy("disable").html(jQuery("#tmpl-elementor-theme-builder-button-preview").html()).addClass("elementor-panel-footer-theme-builder-buttons-wrapper elementor-toggle-state")}}]),ThemeBuilderAddEditorUI}($e.modules.hookUI.After);t.ThemeBuilderAddEditorUI=c;var p=c;t.default=p},84539:(e,t,n)=>{"use strict";var o=n(67394);o(t,"__esModule",{value:!0}),o(t,"ThemeBuilderAddEditorUI",{enumerable:!0,get:function get(){return r.ThemeBuilderAddEditorUI}}),o(t,"ThemeBuilderRemoveEditorUI",{enumerable:!0,get:function get(){return i.ThemeBuilderRemoveEditorUI}}),o(t,"ThemeBuilderToggleMenuConditions",{enumerable:!0,get:function get(){return a.ThemeBuilderToggleMenuConditions}}),o(t,"ThemeBuilderFooterSaverAfterSave",{enumerable:!0,get:function get(){return l.ThemeBuilderFooterSaverAfterSave}});var r=n(67443),i=n(72726),a=n(97310),l=n(91030)},91030:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.ThemeBuilderFooterSaverAfterSave=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(ThemeBuilderFooterSaverAfterSave,e);var t=(0,u.default)(ThemeBuilderFooterSaverAfterSave);function ThemeBuilderFooterSaverAfterSave(){return(0,i.default)(this,ThemeBuilderFooterSaverAfterSave),t.apply(this,arguments)}return(0,a.default)(ThemeBuilderFooterSaverAfterSave,[{key:"getCommand",value:function getCommand(){return"document/save/save"}},{key:"getId",value:function getId(){return"theme-builder-footer-saver-after-save"}},{key:"getConditions",value:function getConditions(){return elementor.config.document.support_site_editor}},{key:"apply",value:function apply(e,t){var n=e.status;t.statusChanged&&this.onPageStatusChange(n)}},{key:"onPageStatusChange",value:function onPageStatusChange(e){if("publish"===e){var t={classes:"e-theme-builder-save-toaster",message:elementor.config.document.panel.messages.publish_notification,buttons:[{name:"open_site_editor",text:'<i class="eicon-external-link-square"></i><span class="e-theme-builder-toaster-button-text">'+elementorPro.translate("open_site_editor")+"</span>",callback:function callback(){$e.run("app/open")}},{name:"view_live_site",text:'<i class="eicon-preview-medium"></i><span class="e-theme-builder-toaster-button-text">'+elementorPro.translate("view_live_site")+"</span>",callback:function callback(){open(elementor.config.document.urls.permalink)}}]};elementor.notifications.showToast(t)}}}]),ThemeBuilderFooterSaverAfterSave}($e.modules.hookUI.After);t.ThemeBuilderFooterSaverAfterSave=s},64087:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0,n(99236);var i=r(n(67394)),a=r(n(11959)),l=r(n(39041)),u=r(n(76700)),s=r(n(44263)),d=r(n(77371)),c=r(n(68537)),p=r(n(81922)),f=function(e){(0,d.default)(ThemeBuilderModule,e);var t=(0,c.default)(ThemeBuilderModule);function ThemeBuilderModule(){return(0,a.default)(this,ThemeBuilderModule),t.apply(this,arguments)}return(0,l.default)(ThemeBuilderModule,[{key:"__construct",value:function __construct(){for(var e,t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];(e=(0,u.default)((0,s.default)(ThemeBuilderModule.prototype),"__construct",this)).call.apply(e,[this].concat(n)),(0,i.default)(elementorPro.config,"theme_builder",{get:function get(){return elementorCommon.helpers.softDeprecated("theme_builder","2.9.0","elementor.config.document.theme_builder"),elementor.config.document.theme_builder}})}},{key:"onElementorLoaded",value:function onElementorLoaded(){this.component=$e.components.register(new p.default({manager:this})),elementor.on("document:loaded",this.onDocumentLoaded.bind(this)),elementor.on("document:unload",this.onDocumentUnloaded.bind(this)),this.onApplyPreview=this.onApplyPreview.bind(this),this.onSectionPreviewSettingsActive=this.onSectionPreviewSettingsActive.bind(this)}},{key:"onDocumentLoaded",value:function onDocumentLoaded(e){e.config.theme_builder&&(elementor.getPanelView().on("set:page:page_settings",this.updatePreviewIdOptions),elementor.channels.editor.on("elementorThemeBuilder:ApplyPreview",this.onApplyPreview),elementor.channels.editor.on("page_settings:preview_settings:activated",this.onSectionPreviewSettingsActive))}},{key:"onDocumentUnloaded",value:function onDocumentUnloaded(e){e.config.theme_builder&&(elementor.getPanelView().off("set:page:page_settings",this.updatePreviewIdOptions),elementor.channels.editor.off("elementorThemeBuilder:ApplyPreview",this.onApplyPreview),elementor.channels.editor.off("page_settings:preview_settings:activated",this.onSectionPreviewSettingsActive))}},{key:"saveAndReload",value:function saveAndReload(){$e.run("document/save/auto",{force:!0,onSuccess:function onSuccess(){elementor.dynamicTags.cleanCache(),elementor.reloadPreview()}})}},{key:"onApplyPreview",value:function onApplyPreview(){this.saveAndReload()}},{key:"onSectionPreviewSettingsActive",value:function onSectionPreviewSettingsActive(){this.updatePreviewIdOptions(!0)}},{key:"updatePreviewIdOptions",value:function updatePreviewIdOptions(e){var t=elementor.settings.page.model.get("preview_type");if(t){t=t.split("/");var n=elementor.getPanelView().getCurrentPageView(),o=n.collection.findWhere({name:"preview_id"});if("author"===t[1]?o.set({autocomplete:{object:"author"}}):"taxonomy"===t[0]?o.set({autocomplete:{object:"tax",query:{taxonomy:t[1]}}}):"single"===t[0]?o.set({autocomplete:{object:"post",query:{post_type:t[1]}}}):o.set({autocomplete:{object:""}}),!0===e){var r=n.children.findByModel(o);r.render(),r.$el.toggle(!!o.get("autocomplete").object)}}}}]),ThemeBuilderModule}(elementorModules.editor.utils.Module);t.default=f},81922:(e,t,n)=>{"use strict";var o=n(67394),r=n(52369),i=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var a=i(n(83452)),l=i(n(11959)),u=i(n(39041)),s=i(n(76700)),d=i(n(44263)),c=i(n(77371)),p=i(n(68537)),f=i(n(76144)),m=i(n(12591)),g=r(n(19101)),v=function(e){(0,c.default)(Component,e);var t=(0,p.default)(Component);function Component(){return(0,l.default)(this,Component),t.apply(this,arguments)}return(0,u.default)(Component,[{key:"getNamespace",value:function getNamespace(){return"theme-builder-publish"}},{key:"getModalLayout",value:function getModalLayout(){return m.default}},{key:"defaultCommands",value:function defaultCommands(){var e=this;return{next:function next(){var next=(0,a.default)(e.tabs)[e.currentTabIndex+1];next&&$e.route(e.getTabRoute(next))},save:function save(){$e.run("document/save/default",{force:!0}),e.layout.hideModal()},"preview-settings":function previewSettings(){var e=elementor.getPanelView();$e.route("panel/page-settings/settings"),e.getCurrentPageView().activateSection("preview_settings")._renderChildren()}}}},{key:"defaultHooks",value:function defaultHooks(){return this.importHooks(g)}},{key:"getTabsWrapperSelector",value:function getTabsWrapperSelector(){return"#elementor-publish__tabs"}},{key:"renderTab",value:function renderTab(e){var t=this.getTabs(),n=(0,a.default)(t),o=t[e];this.currentTabIndex=n.indexOf(e);var r=!n[this.currentTabIndex+1];this.layout.modalContent.currentView.screen.show(new o.View(o.viewOptions)),this.layout.modal.getElements("next").toggle(!r),this.layout.modal.getElements("publish").toggleClass("elementor-button-success",r)}},{key:"activateTab",value:function activateTab(e){$e.routes.saveState(this.getNamespace()),(0,s.default)((0,d.default)(Component.prototype),"activateTab",this).call(this,e)}},{key:"open",value:function open(){return(0,s.default)((0,d.default)(Component.prototype),"open",this).call(this),this.layoutContent||(this.layout.showLogo(),this.layout.modalContent.show(new f.default({component:this})),this.layoutContent=!0),!0}}]),Component}($e.modules.ComponentModalBase);t.default=v},76144:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(_default,e);var t=(0,u.default)(_default);function _default(){return(0,i.default)(this,_default),t.apply(this,arguments)}return(0,a.default)(_default,[{key:"id",value:function id(){return"elementor-publish"}},{key:"getTemplate",value:function getTemplate(){return Marionette.TemplateCache.get("#tmpl-elementor-component-publish")}},{key:"regions",value:function regions(){return{screen:"#elementor-publish__screen"}}},{key:"templateHelpers",value:function templateHelpers(){return{tabs:this.getOption("component").getTabs()}}}]),_default}(Marionette.LayoutView);t.default=s},12591:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(76700)),u=r(n(44263)),s=r(n(77371)),d=r(n(68537)),c=function(e){(0,s.default)(_default,e);var t=(0,d.default)(_default);function _default(){return(0,i.default)(this,_default),t.apply(this,arguments)}return(0,a.default)(_default,[{key:"getModalOptions",value:function getModalOptions(){return{id:"elementor-publish__modal",hide:{onButtonClick:!1}}}},{key:"getLogoOptions",value:function getLogoOptions(){return{title:elementorPro.translate("publish_settings")}}},{key:"initModal",value:function initModal(){(0,l.default)((0,u.default)(_default.prototype),"initModal",this).call(this),this.modal.addButton({name:"publish",text:elementorPro.translate("save_and_close"),callback:function callback(){return $e.run("theme-builder-publish/save")}}),this.modal.addButton({name:"next",text:elementorPro.translate("next"),callback:function callback(){return $e.run("theme-builder-publish/next")}});var e=this.modal.getElements("publish");this.modal.getElements("next").addClass("elementor-button-success").add(e).addClass("elementor-button").removeClass("dialog-button")}}]),_default}(elementorModules.common.views.modal.Layout);t.default=c},27783:e=>{"use strict";e.exports=function(){var e=this;e.onPanelShow=function(e,t){var n=t.get("settings");n.controls._skin.default||n.set("_skin","theme_comments")},e.init=function(){elementor.hooks.addAction("panel/open_editor/widget/post-comments",e.onPanelShow)},e.init()}},19247:(e,t,n)=>{"use strict";e.exports=elementorModules.editor.utils.Module.extend({onElementorPreviewLoaded:function onElementorPreviewLoaded(){var e=n(27783);this.commentsSkin=new e}})},73052:(e,t,n)=>{"use strict";var o=n(67394),r=n(52369),i=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var a=i(n(11959)),l=i(n(39041)),u=i(n(77371)),s=i(n(68537)),d=r(n(5618)),c=function(e){(0,u.default)(VideoPlaylistComponent,e);var t=(0,s.default)(VideoPlaylistComponent);function VideoPlaylistComponent(){return(0,a.default)(this,VideoPlaylistComponent),t.apply(this,arguments)}return(0,l.default)(VideoPlaylistComponent,[{key:"getNamespace",value:function getNamespace(){return"video-playlist"}},{key:"defaultHooks",value:function defaultHooks(){return this.importHooks(d)}}]),VideoPlaylistComponent}($e.modules.ComponentBase);t.default=c},40187:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=t.ActiveTab=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(ActiveTab,e);var t=(0,u.default)(ActiveTab);function ActiveTab(){return(0,i.default)(this,ActiveTab),t.apply(this,arguments)}return(0,a.default)(ActiveTab,[{key:"getCommand",value:function getCommand(){return"document/elements/settings"}},{key:"getId",value:function getId(){return"active-tab--document/elements/settings"}},{key:"getContainerType",value:function getContainerType(){return"repeater"}},{key:"getConditions",value:function getConditions(e){return e.settings.inner_tab_content_1||e.settings.inner_tab_content_2}},{key:"apply",value:function apply(e){e.settings.inner_tab_content_1?e.container.view.model.get("editSettings").set("innerActiveIndex",0):e.settings.inner_tab_content_2&&e.container.view.model.get("editSettings").set("innerActiveIndex",1)}}]),ActiveTab}($e.modules.hookData.After);t.ActiveTab=s;var d=s;t.default=d},5618:(e,t,n)=>{"use strict";var o=n(67394);o(t,"__esModule",{value:!0}),o(t,"ActiveTab",{enumerable:!0,get:function get(){return r.ActiveTab}});var r=n(40187)},93213:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(76700)),u=r(n(44263)),s=r(n(77371)),d=r(n(68537)),c=r(n(73052)),p=function(e){(0,s.default)(Module,e);var t=(0,d.default)(Module);function Module(){return(0,i.default)(this,Module),t.apply(this,arguments)}return(0,a.default)(Module,[{key:"onInit",value:function onInit(){(0,l.default)((0,u.default)(Module.prototype),"onInit",this).call(this),$e.components.register(new c.default)}},{key:"onElementorLoaded",value:function onElementorLoaded(){elementor.channels.editor.on("elementorPlaylistWidget:setVideoData",(function(e){$e.run("document/elements/settings",{container:e.container,settings:{thumbnail:{url:e.currentItem.thumbnail?e.currentItem.thumbnail.url:""},title:e.currentItem.video_title?e.currentItem.video_title:"",duration:e.currentItem.duration?e.currentItem.duration:""},options:{external:!0}})}))}}]),Module}(elementorModules.editor.utils.Module);t.default=p},78657:(e,t,n)=>{"use strict";var o=n(67394),r=n(52369),i=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var a=i(n(11959)),l=i(n(39041)),u=i(n(77371)),s=i(n(68537)),d=r(n(9945)),c=function(e){(0,u.default)(Component,e);var t=(0,s.default)(Component);function Component(){return(0,a.default)(this,Component),t.apply(this,arguments)}return(0,l.default)(Component,[{key:"getNamespace",value:function getNamespace(){return"woocommerce"}},{key:"defaultHooks",value:function defaultHooks(){return this.importHooks(d)}}]),Component}($e.modules.ComponentBase);t.default=c},15238:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.WoocommerceCreateWidgetActivateSettingsModal=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(WoocommerceCreateWidgetActivateSettingsModal,e);var t=(0,u.default)(WoocommerceCreateWidgetActivateSettingsModal);function WoocommerceCreateWidgetActivateSettingsModal(){return(0,i.default)(this,WoocommerceCreateWidgetActivateSettingsModal),t.apply(this,arguments)}return(0,a.default)(WoocommerceCreateWidgetActivateSettingsModal,[{key:"getCommand",value:function getCommand(){return"document/elements/create"}},{key:"getId",value:function getId(){return"elementor-pro-woocommerce-create-widget-activate-settings-modal"}},{key:"getContainerType",value:function getContainerType(){return"column"}},{key:"getConditions",value:function getConditions(e,t){return elementorPro.modules.woocommerce.pageSettingsWidgets.hasOwnProperty(t.model.get("widgetType"))}},{key:"apply",value:function apply(e,t){elementorPro.modules.woocommerce.onCreateWidget(t)}}]),WoocommerceCreateWidgetActivateSettingsModal}($e.modules.hookData.After);t.WoocommerceCreateWidgetActivateSettingsModal=s},23309:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.WoocommerceDeleteWidgetDeactivateSettingsModal=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(WoocommerceDeleteWidgetDeactivateSettingsModal,e);var t=(0,u.default)(WoocommerceDeleteWidgetDeactivateSettingsModal);function WoocommerceDeleteWidgetDeactivateSettingsModal(){return(0,i.default)(this,WoocommerceDeleteWidgetDeactivateSettingsModal),t.apply(this,arguments)}return(0,a.default)(WoocommerceDeleteWidgetDeactivateSettingsModal,[{key:"getCommand",value:function getCommand(){return"document/elements/delete"}},{key:"getId",value:function getId(){return"elementor-pro-woocommerce-delete-widget-deactivate-settings-modal"}},{key:"getContainerType",value:function getContainerType(){return"widget"}},{key:"getConditions",value:function getConditions(e,t){return elementorPro.modules.woocommerce.pageSettingsWidgets.hasOwnProperty(t.model.get("widgetType"))}},{key:"apply",value:function apply(e,t){elementorPro.modules.woocommerce.onDeleteWidget(t)}}]),WoocommerceDeleteWidgetDeactivateSettingsModal}($e.modules.hookData.After);t.WoocommerceDeleteWidgetDeactivateSettingsModal=s},75952:(e,t,n)=>{"use strict";var o=n(67394);o(t,"__esModule",{value:!0}),o(t,"WoocommerceSaveShowModal",{enumerable:!0,get:function get(){return r.WoocommerceSaveShowModal}}),o(t,"WoocommerceCreateWidgetActivateSettingsModal",{enumerable:!0,get:function get(){return i.WoocommerceCreateWidgetActivateSettingsModal}}),o(t,"WoocommerceDeleteWidgetDeactivateSettingsModal",{enumerable:!0,get:function get(){return a.WoocommerceDeleteWidgetDeactivateSettingsModal}});var r=n(52938),i=n(15238),a=n(23309)},52938:(e,t,n)=>{"use strict";var o=n(67394),r=n(67971);o(t,"__esModule",{value:!0}),t.WoocommerceSaveShowModal=void 0;var i=r(n(11959)),a=r(n(39041)),l=r(n(77371)),u=r(n(68537)),s=function(e){(0,l.default)(WoocommerceSaveShowModal,e);var t=(0,u.default)(WoocommerceSaveShowModal);function WoocommerceSaveShowModal(){return(0,i.default)(this,WoocommerceSaveShowModal),t.apply(this,arguments)}return(0,a.default)(WoocommerceSaveShowModal,[{key:"getCommand",value:function getCommand(){return"document/save/save"}},{key:"getId",value:function getId(){return"elementor-pro-woocommerce-save-show-modal"}},{key:"getConditions",value:function getConditions(e){return e.status&&-1!==["private","publish"].indexOf(e.status)}},{key:"apply",value:function apply(){elementorPro.modules.woocommerce.onUpdateDocument()}}]),WoocommerceSaveShowModal}($e.modules.hookData.After);t.WoocommerceSaveShowModal=s},9945:(e,t,n)=>{"use strict";var o=n(67394),r=n(83452);o(t,"__esModule",{value:!0});var i=n(75952);r(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===i[e]||o(t,e,{enumerable:!0,get:function get(){return i[e]}}))}))},94265:(e,t,n)=>{"use strict";var o=n(18194).__,r=n(67971),i=r(n(83452)),a=r(n(11959)),l=r(n(39041)),u=r(n(77371)),s=r(n(68537)),d=r(n(78657)),c=function(e){(0,u.default)(WoocommerceModule,e);var t=(0,s.default)(WoocommerceModule);function WoocommerceModule(){var e;(0,a.default)(this,WoocommerceModule);for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return(e=t.call.apply(t,[this].concat(r))).pageSettingsWidgets={"woocommerce-checkout-page":{headerMessage:o("Want to save this as your checkout page?","elementor-pro"),message:o("Changes you make here will override your existing WooCommerce settings.","elementor-pro"),confirmMessage:o("You've updated your checkout page.","elementor-pro"),cancelMessage:o("<h3>Set up a checkout page</h3><br>Without a checkout page, visitors can't complete transactions on your site. To set one up, go to Site Settings.","elementor-pro"),failedMessage:o("<h3>Sorry, something went wrong.</h3><br>To define a checkout page for your site, head over to Site Settings.","elementor-pro"),optionName:"woocommerce_checkout_page_id",woocommercePageName:"checkout"},"woocommerce-cart":{headerMessage:o("Want to save this as your cart page?","elementor-pro"),message:o("Changes you make here will override your existing WooCommerce settings.","elementor-pro"),confirmMessage:o("You've updated your cart page.","elementor-pro"),cancelMessage:o("<h3>Set up a cart page</h3><br>The cart page shows an order summary. To set one up, go to Site Settings.","elementor-pro"),failedMessage:o("<h3>Sorry, something went wrong.</h3><br>To define a cart page for your site, head over to Site Settings.","elementor-pro"),optionName:"woocommerce_cart_page_id",woocommercePageName:"cart"},"woocommerce-my-account":{headerMessage:o("Want to save this as your my account page?","elementor-pro"),message:o("Changes you make here will override your existing WooCommerce settings.","elementor-pro"),confirmMessage:o("You've updated your my account page.","elementor-pro"),cancelMessage:o("<h3>Set up a My Account page</h3><br>Without it, customers can't update their billing details, review past orders, etc. To set up My Account, go to Site Settings.","elementor-pro"),failedMessage:o("<h3>Sorry, something went wrong.</h3><br>To define a my account page for your site, head over to Site Settings.","elementor-pro"),optionName:"woocommerce_myaccount_page_id",woocommercePageName:"myaccount"}},e.createdPageSettingsWidgets=[],e}return(0,l.default)(WoocommerceModule,[{key:"onElementorLoaded",value:function onElementorLoaded(){this.component=$e.components.register(new d.default({manager:this}))}},{key:"onCreateWidget",value:function onCreateWidget(e){var t=e.model.get("widgetType");void 0===this.createdPageSettingsWidgets[t]&&(this.createdPageSettingsWidgets[t]=0),this.createdPageSettingsWidgets[t]++}},{key:"onDeleteWidget",value:function onDeleteWidget(e){var t=e.model.get("widgetType");this.createdPageSettingsWidgets[t]--,this.createdPageSettingsWidgets[t]||delete this.createdPageSettingsWidgets[t]}},{key:"onUpdateDocument",value:function onUpdateDocument(){var e=this,t=(0,i.default)(this.createdPageSettingsWidgets),n=t[t.length-1],r=elementor.documents.getCurrent().id;if(1===t.length){var a=this.pageSettingsWidgets[n];r!==elementorPro.config.woocommercePages[a.woocommercePageName]&&(elementorCommon.dialogsManager.createWidget("confirm",{id:"elementor-woocommerce-save-pages",className:"e-global__confirm-add",headerMessage:a.headerMessage,message:a.message,position:{my:"center center",at:"center center"},strings:{confirm:o("Save","elementor-pro"),cancel:o("No thanks","elementor-pro")},onConfirm:function onConfirm(){return e.onConfirmModal(a)},onCancel:function onCancel(){return e.onCancelModal(a)}}).show(),this.createdPageSettingsWidgets=[])}}},{key:"onConfirmModal",value:function onConfirmModal(e){var t=this;elementorPro.ajax.addRequest("woocommerce_update_page_option",{data:{option_name:e.optionName},success:function success(){elementor.notifications.showToast({message:e.confirmMessage})},error:function error(){return t.showPagesSettingsToast(e.failedMessage)}})}},{key:"onCancelModal",value:function onCancelModal(e){this.showPagesSettingsToast(e.cancelMessage)}},{key:"showPagesSettingsToast",value:function showPagesSettingsToast(e){var t=[];elementor.notifications.initToast(),t.push({name:"take_me_there",text:o("Take me there","elementor"),callback:this.openWoocommercePagesSettings}),elementor.notifications.showToast({message:e,buttons:t})}},{key:"openWoocommercePagesSettings",value:function openWoocommercePagesSettings(){elementorCommon.elements.$body.hasClass("elementor-editor-preview")&&elementor.exitPreviewMode(),"panel/global/menu"===elementor.documents.currentDocument.config.panel.default_route?$e.run("panel/global/close"):$e.run("editor/documents/switch",{id:elementor.config.kit_id,mode:"autosave"}).then((function(){return $e.route("panel/global/settings-woocommerce")}))}}]),WoocommerceModule}(elementorModules.editor.utils.Module);e.exports=c},7421:(e,t,n)=>{n(99572),n(37627),e.exports=n(47208).Array.from},70157:(e,t,n)=>{n(42580),e.exports=n(47208).Array.isArray},89710:(e,t,n)=>{var o=n(47208),r=o.JSON||(o.JSON={stringify:JSON.stringify});e.exports=function stringify(e){return r.stringify.apply(r,arguments)}},66458:(e,t,n)=>{n(99954),e.exports=n(47208).Object.assign},14710:(e,t,n)=>{n(30785);var o=n(47208).Object;e.exports=function create(e,t){return o.create(e,t)}},43153:(e,t,n)=>{n(40168);var o=n(47208).Object;e.exports=function defineProperty(e,t,n){return o.defineProperty(e,t,n)}},8531:(e,t,n)=>{n(95260),e.exports=n(47208).Object.entries},32622:(e,t,n)=>{n(18576);var o=n(47208).Object;e.exports=function getOwnPropertyDescriptor(e,t){return o.getOwnPropertyDescriptor(e,t)}},58535:(e,t,n)=>{n(4840),e.exports=n(47208).Object.getPrototypeOf},97220:(e,t,n)=>{n(5453),e.exports=n(47208).Object.keys},65135:(e,t,n)=>{n(13890),e.exports=n(47208).Object.setPrototypeOf},69591:(e,t,n)=>{n(57188),e.exports=n(47208).Object.values},34345:(e,t,n)=>{n(24399),e.exports=n(47208).parseInt},76483:(e,t,n)=>{n(70285),n(99572),n(74114),n(86082),n(81522),n(25757),e.exports=n(47208).Promise},43094:(e,t,n)=>{n(11320),e.exports=n(47208).Reflect.construct},17641:(e,t,n)=>{n(36600),e.exports=n(47208).Reflect.get},19103:(e,t,n)=>{n(54370),n(70285),n(87573),n(97224),e.exports=n(47208).Symbol},39871:(e,t,n)=>{n(99572),n(74114),e.exports=n(7273).f("iterator")},89999:(e,t,n)=>{n(70285),n(74114),n(23337),n(10143),n(92797),e.exports=n(47208).WeakMap},26610:e=>{e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},29697:e=>{e.exports=function(){}},54677:e=>{e.exports=function(e,t,n,o){if(!(e instanceof t)||void 0!==o&&o in e)throw TypeError(n+": incorrect invocation!");return e}},30498:(e,t,n)=>{var o=n(39632);e.exports=function(e){if(!o(e))throw TypeError(e+" is not an object!");return e}},69191:(e,t,n)=>{var o=n(1504),r=n(37154),i=n(46723);e.exports=function(e){return function(t,n,a){var l,u=o(t),s=r(u.length),d=i(a,s);if(e&&n!=n){for(;s>d;)if((l=u[d++])!=l)return!0}else for(;s>d;d++)if((e||d in u)&&u[d]===n)return e||d||0;return!e&&-1}}},97647:(e,t,n)=>{var o=n(61725),r=n(13115),i=n(60061),a=n(37154),l=n(41904);e.exports=function(e,t){var n=1==e,u=2==e,s=3==e,d=4==e,c=6==e,p=5==e||c,f=t||l;return function(t,l,m){for(var g,v,h=i(t),y=r(h),_=o(l,m,3),b=a(y.length),C=0,w=n?f(t,b):u?f(t,0):void 0;b>C;C++)if((p||C in y)&&(v=_(g=y[C],C,h),e))if(n)w[C]=v;else if(v)switch(e){case 3:return!0;case 5:return g;case 6:return C;case 2:w.push(g)}else if(d)return!1;return c?-1:s||d?d:w}}},88320:(e,t,n)=>{var o=n(39632),r=n(7359),i=n(24300)("species");e.exports=function(e){var t;return r(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!r(t.prototype)||(t=void 0),o(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},41904:(e,t,n)=>{var o=n(88320);e.exports=function(e,t){return new(o(e))(t)}},45515:(e,t,n)=>{"use strict";var o=n(26610),r=n(39632),i=n(19897),a=[].slice,l={},construct=function(e,t,n){if(!(t in l)){for(var o=[],r=0;r<t;r++)o[r]="a["+r+"]";l[t]=Function("F,a","return new F("+o.join(",")+")")}return l[t](e,n)};e.exports=Function.bind||function bind(e){var t=o(this),n=a.call(arguments,1),bound=function(){var o=n.concat(a.call(arguments));return this instanceof bound?construct(t,o.length,o):i(t,o,e)};return r(t.prototype)&&(bound.prototype=t.prototype),bound}},8312:(e,t,n)=>{var o=n(41352),r=n(24300)("toStringTag"),i="Arguments"==o(function(){return arguments}());e.exports=function(e){var t,n,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),r))?n:i?o(t):"Object"==(a=o(t))&&"function"==typeof t.callee?"Arguments":a}},41352:e=>{var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},92600:(e,t,n)=>{"use strict";var o=n(13199),r=n(6758).getWeak,i=n(30498),a=n(39632),l=n(54677),u=n(25985),s=n(97647),d=n(20657),c=n(41081),p=s(5),f=s(6),m=0,uncaughtFrozenStore=function(e){return e._l||(e._l=new UncaughtFrozenStore)},UncaughtFrozenStore=function(){this.a=[]},findUncaughtFrozen=function(e,t){return p(e.a,(function(e){return e[0]===t}))};UncaughtFrozenStore.prototype={get:function(e){var t=findUncaughtFrozen(this,e);if(t)return t[1]},has:function(e){return!!findUncaughtFrozen(this,e)},set:function(e,t){var n=findUncaughtFrozen(this,e);n?n[1]=t:this.a.push([e,t])},delete:function(e){var t=f(this.a,(function(t){return t[0]===e}));return~t&&this.a.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,i){var s=e((function(e,o){l(e,s,t,"_i"),e._t=t,e._i=m++,e._l=void 0,null!=o&&u(o,n,e[i],e)}));return o(s.prototype,{delete:function(e){if(!a(e))return!1;var n=r(e);return!0===n?uncaughtFrozenStore(c(this,t)).delete(e):n&&d(n,this._i)&&delete n[this._i]},has:function has(e){if(!a(e))return!1;var n=r(e);return!0===n?uncaughtFrozenStore(c(this,t)).has(e):n&&d(n,this._i)}}),s},def:function(e,t,n){var o=r(i(t),!0);return!0===o?uncaughtFrozenStore(e).set(t,n):o[e._i]=n,e},ufstore:uncaughtFrozenStore}},70770:(e,t,n)=>{"use strict";var o=n(43280),r=n(98310),i=n(6758),a=n(90472),l=n(62292),u=n(13199),s=n(25985),d=n(54677),c=n(39632),p=n(2413),f=n(60510).f,m=n(97647)(0),g=n(75179);e.exports=function(e,t,n,v,h,y){var _=o[e],b=_,C=h?"set":"add",w=b&&b.prototype,k={};return g&&"function"==typeof b&&(y||w.forEach&&!a((function(){(new b).entries().next()})))?(b=t((function(t,n){d(t,b,e,"_c"),t._c=new _,null!=n&&s(n,h,t[C],t)})),m("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),(function(e){var t="add"==e||"set"==e;!(e in w)||y&&"clear"==e||l(b.prototype,e,(function(n,o){if(d(this,b,e),!t&&y&&!c(n))return"get"==e&&void 0;var r=this._c[e](0===n?0:n,o);return t?this:r}))})),y||f(b.prototype,"size",{get:function(){return this._c.size}})):(b=v.getConstructor(t,e,h,C),u(b.prototype,n),i.NEED=!0),p(b,e),k[e]=b,r(r.G+r.W+r.F,k),y||v.setStrong(b,e,h),b}},47208:e=>{var t=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=t)},87352:(e,t,n)=>{"use strict";var o=n(60510),r=n(48439);e.exports=function(e,t,n){t in e?o.f(e,t,r(0,n)):e[t]=n}},61725:(e,t,n)=>{var o=n(26610);e.exports=function(e,t,n){if(o(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,o){return e.call(t,n,o)};case 3:return function(n,o,r){return e.call(t,n,o,r)}}return function(){return e.apply(t,arguments)}}},18239:e=>{e.exports=function(e){if(null==e)throw TypeError("Can't call method on  "+e);return e}},75179:(e,t,n)=>{e.exports=!n(90472)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},48765:(e,t,n)=>{var o=n(39632),r=n(43280).document,i=o(r)&&o(r.createElement);e.exports=function(e){return i?r.createElement(e):{}}},31986:e=>{e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},42266:(e,t,n)=>{var o=n(86425),r=n(97739),i=n(67410);e.exports=function(e){var t=o(e),n=r.f;if(n)for(var a,l=n(e),u=i.f,s=0;l.length>s;)u.call(e,a=l[s++])&&t.push(a);return t}},98310:(e,t,n)=>{var o=n(43280),r=n(47208),i=n(61725),a=n(62292),l=n(20657),$export=function(e,t,n){var u,s,d,c=e&$export.F,p=e&$export.G,f=e&$export.S,m=e&$export.P,g=e&$export.B,v=e&$export.W,h=p?r:r[t]||(r[t]={}),y=h.prototype,_=p?o:f?o[t]:(o[t]||{}).prototype;for(u in p&&(n=t),n)(s=!c&&_&&void 0!==_[u])&&l(h,u)||(d=s?_[u]:n[u],h[u]=p&&"function"!=typeof _[u]?n[u]:g&&s?i(d,o):v&&_[u]==d?function(e){var F=function(t,n,o){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,o)}return e.apply(this,arguments)};return F.prototype=e.prototype,F}(d):m&&"function"==typeof d?i(Function.call,d):d,m&&((h.virtual||(h.virtual={}))[u]=d,e&$export.R&&y&&!y[u]&&a(y,u,d)))};$export.F=1,$export.G=2,$export.S=4,$export.P=8,$export.B=16,$export.W=32,$export.U=64,$export.R=128,e.exports=$export},90472:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},25985:(e,t,n)=>{var o=n(61725),r=n(93086),i=n(11827),a=n(30498),l=n(37154),u=n(26116),s={},d={},c=e.exports=function(e,t,n,c,p){var f,m,g,v,h=p?function(){return e}:u(e),y=o(n,c,t?2:1),_=0;if("function"!=typeof h)throw TypeError(e+" is not iterable!");if(i(h)){for(f=l(e.length);f>_;_++)if((v=t?y(a(m=e[_])[0],m[1]):y(e[_]))===s||v===d)return v}else for(g=h.call(e);!(m=g.next()).done;)if((v=r(g,y,m.value,t))===s||v===d)return v};c.BREAK=s,c.RETURN=d},43280:e=>{var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},20657:e=>{var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},62292:(e,t,n)=>{var o=n(60510),r=n(48439);e.exports=n(75179)?function(e,t,n){return o.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},92477:(e,t,n)=>{var o=n(43280).document;e.exports=o&&o.documentElement},64457:(e,t,n)=>{e.exports=!n(75179)&&!n(90472)((function(){return 7!=Object.defineProperty(n(48765)("div"),"a",{get:function(){return 7}}).a}))},19897:e=>{e.exports=function(e,t,n){var o=void 0===n;switch(t.length){case 0:return o?e():e.call(n);case 1:return o?e(t[0]):e.call(n,t[0]);case 2:return o?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return o?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return o?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},13115:(e,t,n)=>{var o=n(41352);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==o(e)?e.split(""):Object(e)}},11827:(e,t,n)=>{var o=n(79105),r=n(24300)("iterator"),i=Array.prototype;e.exports=function(e){return void 0!==e&&(o.Array===e||i[r]===e)}},7359:(e,t,n)=>{var o=n(41352);e.exports=Array.isArray||function isArray(e){return"Array"==o(e)}},39632:e=>{e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},93086:(e,t,n)=>{var o=n(30498);e.exports=function(e,t,n,r){try{return r?t(o(n)[0],n[1]):t(n)}catch(t){var i=e.return;throw void 0!==i&&o(i.call(e)),t}}},19802:(e,t,n)=>{"use strict";var o=n(82488),r=n(48439),i=n(2413),a={};n(62292)(a,n(24300)("iterator"),(function(){return this})),e.exports=function(e,t,n){e.prototype=o(a,{next:r(1,n)}),i(e,t+" Iterator")}},6125:(e,t,n)=>{"use strict";var o=n(36794),r=n(98310),i=n(19312),a=n(62292),l=n(79105),u=n(19802),s=n(2413),d=n(999),c=n(24300)("iterator"),p=!([].keys&&"next"in[].keys()),f="keys",m="values",returnThis=function(){return this};e.exports=function(e,t,n,g,v,h,y){u(n,t,g);var _,b,C,getMethod=function(e){if(!p&&e in S)return S[e];switch(e){case f:return function keys(){return new n(this,e)};case m:return function values(){return new n(this,e)}}return function entries(){return new n(this,e)}},w=t+" Iterator",k=v==m,x=!1,S=e.prototype,T=S[c]||S["@@iterator"]||v&&S[v],M=T||getMethod(v),P=v?k?getMethod("entries"):M:void 0,I="Array"==t&&S.entries||T;if(I&&(C=d(I.call(new e)))!==Object.prototype&&C.next&&(s(C,w,!0),o||"function"==typeof C[c]||a(C,c,returnThis)),k&&T&&T.name!==m&&(x=!0,M=function values(){return T.call(this)}),o&&!y||!p&&!x&&S[c]||a(S,c,M),l[t]=M,l[w]=returnThis,v)if(_={values:k?M:getMethod(m),keys:h?M:getMethod(f),entries:P},y)for(b in _)b in S||i(S,b,_[b]);else r(r.P+r.F*(p||x),t,_);return _}},26797:(e,t,n)=>{var o=n(24300)("iterator"),r=!1;try{var i=[7][o]();i.return=function(){r=!0},Array.from(i,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!r)return!1;var n=!1;try{var i=[7],a=i[o]();a.next=function(){return{done:n=!0}},i[o]=function(){return a},e(i)}catch(e){}return n}},9329:e=>{e.exports=function(e,t){return{value:t,done:!!e}}},79105:e=>{e.exports={}},36794:e=>{e.exports=!0},6758:(e,t,n)=>{var o=n(54251)("meta"),r=n(39632),i=n(20657),a=n(60510).f,l=0,u=Object.isExtensible||function(){return!0},s=!n(90472)((function(){return u(Object.preventExtensions({}))})),setMeta=function(e){a(e,o,{value:{i:"O"+ ++l,w:{}}})},d=e.exports={KEY:o,NEED:!1,fastKey:function(e,t){if(!r(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,o)){if(!u(e))return"F";if(!t)return"E";setMeta(e)}return e[o].i},getWeak:function(e,t){if(!i(e,o)){if(!u(e))return!0;if(!t)return!1;setMeta(e)}return e[o].w},onFreeze:function(e){return s&&d.NEED&&u(e)&&!i(e,o)&&setMeta(e),e}}},4326:(e,t,n)=>{var o=n(43280),r=n(6022).set,i=o.MutationObserver||o.WebKitMutationObserver,a=o.process,l=o.Promise,u="process"==n(41352)(a);e.exports=function(){var e,t,n,flush=function(){var o,r;for(u&&(o=a.domain)&&o.exit();e;){r=e.fn,e=e.next;try{r()}catch(o){throw e?n():t=void 0,o}}t=void 0,o&&o.enter()};if(u)n=function(){a.nextTick(flush)};else if(!i||o.navigator&&o.navigator.standalone)if(l&&l.resolve){var s=l.resolve(void 0);n=function(){s.then(flush)}}else n=function(){r.call(o,flush)};else{var d=!0,c=document.createTextNode("");new i(flush).observe(c,{characterData:!0}),n=function(){c.data=d=!d}}return function(o){var r={fn:o,next:void 0};t&&(t.next=r),e||(e=r,n()),t=r}}},88579:(e,t,n)=>{"use strict";var o=n(26610);function PromiseCapability(e){var t,n;this.promise=new e((function(e,o){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=o})),this.resolve=o(t),this.reject=o(n)}e.exports.f=function(e){return new PromiseCapability(e)}},77995:(e,t,n)=>{"use strict";var o=n(75179),r=n(86425),i=n(97739),a=n(67410),l=n(60061),u=n(13115),s=Object.assign;e.exports=!s||n(90472)((function(){var e={},t={},n=Symbol(),o="abcdefghijklmnopqrst";return e[n]=7,o.split("").forEach((function(e){t[e]=e})),7!=s({},e)[n]||Object.keys(s({},t)).join("")!=o}))?function assign(e,t){for(var n=l(e),s=arguments.length,d=1,c=i.f,p=a.f;s>d;)for(var f,m=u(arguments[d++]),g=c?r(m).concat(c(m)):r(m),v=g.length,h=0;v>h;)f=g[h++],o&&!p.call(m,f)||(n[f]=m[f]);return n}:s},82488:(e,t,n)=>{var o=n(30498),r=n(36607),i=n(31986),a=n(18478)("IE_PROTO"),Empty=function(){},createDict=function(){var e,t=n(48765)("iframe"),o=i.length;for(t.style.display="none",n(92477).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),createDict=e.F;o--;)delete createDict.prototype[i[o]];return createDict()};e.exports=Object.create||function create(e,t){var n;return null!==e?(Empty.prototype=o(e),n=new Empty,Empty.prototype=null,n[a]=e):n=createDict(),void 0===t?n:r(n,t)}},60510:(e,t,n)=>{var o=n(30498),r=n(64457),i=n(12737),a=Object.defineProperty;t.f=n(75179)?Object.defineProperty:function defineProperty(e,t,n){if(o(e),t=i(t,!0),o(n),r)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},36607:(e,t,n)=>{var o=n(60510),r=n(30498),i=n(86425);e.exports=n(75179)?Object.defineProperties:function defineProperties(e,t){r(e);for(var n,a=i(t),l=a.length,u=0;l>u;)o.f(e,n=a[u++],t[n]);return e}},83264:(e,t,n)=>{var o=n(67410),r=n(48439),i=n(1504),a=n(12737),l=n(20657),u=n(64457),s=Object.getOwnPropertyDescriptor;t.f=n(75179)?s:function getOwnPropertyDescriptor(e,t){if(e=i(e),t=a(t,!0),u)try{return s(e,t)}catch(e){}if(l(e,t))return r(!o.f.call(e,t),e[t])}},26084:(e,t,n)=>{var o=n(1504),r=n(8772).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function getOwnPropertyNames(e){return a&&"[object Window]"==i.call(e)?function(e){try{return r(e)}catch(e){return a.slice()}}(e):r(o(e))}},8772:(e,t,n)=>{var o=n(65326),r=n(31986).concat("length","prototype");t.f=Object.getOwnPropertyNames||function getOwnPropertyNames(e){return o(e,r)}},97739:(e,t)=>{t.f=Object.getOwnPropertySymbols},999:(e,t,n)=>{var o=n(20657),r=n(60061),i=n(18478)("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=r(e),o(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},65326:(e,t,n)=>{var o=n(20657),r=n(1504),i=n(69191)(!1),a=n(18478)("IE_PROTO");e.exports=function(e,t){var n,l=r(e),u=0,s=[];for(n in l)n!=a&&o(l,n)&&s.push(n);for(;t.length>u;)o(l,n=t[u++])&&(~i(s,n)||s.push(n));return s}},86425:(e,t,n)=>{var o=n(65326),r=n(31986);e.exports=Object.keys||function keys(e){return o(e,r)}},67410:(e,t)=>{t.f={}.propertyIsEnumerable},57972:(e,t,n)=>{var o=n(98310),r=n(47208),i=n(90472);e.exports=function(e,t){var n=(r.Object||{})[e]||Object[e],a={};a[e]=t(n),o(o.S+o.F*i((function(){n(1)})),"Object",a)}},9480:(e,t,n)=>{var o=n(75179),r=n(86425),i=n(1504),a=n(67410).f;e.exports=function(e){return function(t){for(var n,l=i(t),u=r(l),s=u.length,d=0,c=[];s>d;)n=u[d++],o&&!a.call(l,n)||c.push(e?[n,l[n]]:l[n]);return c}}},60162:(e,t,n)=>{var o=n(43280).parseInt,r=n(71963).trim,i=n(18458),a=/^[-+]?0[xX]/;e.exports=8!==o(i+"08")||22!==o(i+"0x16")?function parseInt(e,t){var n=r(String(e),3);return o(n,t>>>0||(a.test(n)?16:10))}:o},52745:e=>{e.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},88747:(e,t,n)=>{var o=n(30498),r=n(39632),i=n(88579);e.exports=function(e,t){if(o(e),r(t)&&t.constructor===e)return t;var n=i.f(e);return(0,n.resolve)(t),n.promise}},48439:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},13199:(e,t,n)=>{var o=n(62292);e.exports=function(e,t,n){for(var r in t)n&&e[r]?e[r]=t[r]:o(e,r,t[r]);return e}},19312:(e,t,n)=>{e.exports=n(62292)},14689:(e,t,n)=>{"use strict";var o=n(98310),r=n(26610),i=n(61725),a=n(25985);e.exports=function(e){o(o.S,e,{from:function from(e){var t,n,o,l,u=arguments[1];return r(this),(t=void 0!==u)&&r(u),null==e?new this:(n=[],t?(o=0,l=i(u,arguments[2],2),a(e,!1,(function(e){n.push(l(e,o++))}))):a(e,!1,n.push,n),new this(n))}})}},7883:(e,t,n)=>{"use strict";var o=n(98310);e.exports=function(e){o(o.S,e,{of:function of(){for(var e=arguments.length,t=new Array(e);e--;)t[e]=arguments[e];return new this(t)}})}},25574:(e,t,n)=>{var o=n(39632),r=n(30498),check=function(e,t){if(r(e),!o(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,o){try{(o=n(61725)(Function.call,n(83264).f(Object.prototype,"__proto__").set,2))(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function setPrototypeOf(e,n){return check(e,n),t?e.__proto__=n:o(e,n),e}}({},!1):void 0),check}},5698:(e,t,n)=>{"use strict";var o=n(43280),r=n(47208),i=n(60510),a=n(75179),l=n(24300)("species");e.exports=function(e){var t="function"==typeof r[e]?r[e]:o[e];a&&t&&!t[l]&&i.f(t,l,{configurable:!0,get:function(){return this}})}},2413:(e,t,n)=>{var o=n(60510).f,r=n(20657),i=n(24300)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,i)&&o(e,i,{configurable:!0,value:t})}},18478:(e,t,n)=>{var o=n(29990)("keys"),r=n(54251);e.exports=function(e){return o[e]||(o[e]=r(e))}},29990:(e,t,n)=>{var o=n(47208),r=n(43280),i="__core-js_shared__",a=r[i]||(r[i]={});(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:o.version,mode:n(36794)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},73732:(e,t,n)=>{var o=n(30498),r=n(26610),i=n(24300)("species");e.exports=function(e,t){var n,a=o(e).constructor;return void 0===a||null==(n=o(a)[i])?t:r(n)}},78502:(e,t,n)=>{var o=n(58290),r=n(18239);e.exports=function(e){return function(t,n){var i,a,l=String(r(t)),u=o(n),s=l.length;return u<0||u>=s?e?"":void 0:(i=l.charCodeAt(u))<55296||i>56319||u+1===s||(a=l.charCodeAt(u+1))<56320||a>57343?e?l.charAt(u):i:e?l.slice(u,u+2):a-56320+(i-55296<<10)+65536}}},71963:(e,t,n)=>{var o=n(98310),r=n(18239),i=n(90472),a=n(18458),l="["+a+"]",u=RegExp("^"+l+l+"*"),s=RegExp(l+l+"*$"),exporter=function(e,t,n){var r={},l=i((function(){return!!a[e]()||"​…"!="​…"[e]()})),u=r[e]=l?t(d):a[e];n&&(r[n]=u),o(o.P+o.F*l,"String",r)},d=exporter.trim=function(e,t){return e=String(r(e)),1&t&&(e=e.replace(u,"")),2&t&&(e=e.replace(s,"")),e};e.exports=exporter},18458:e=>{e.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},6022:(e,t,n)=>{var o,r,i,a=n(61725),l=n(19897),u=n(92477),s=n(48765),d=n(43280),c=d.process,p=d.setImmediate,f=d.clearImmediate,m=d.MessageChannel,g=d.Dispatch,v=0,h={},y="onreadystatechange",run=function(){var e=+this;if(h.hasOwnProperty(e)){var t=h[e];delete h[e],t()}},listener=function(e){run.call(e.data)};p&&f||(p=function setImmediate(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return h[++v]=function(){l("function"==typeof e?e:Function(e),t)},o(v),v},f=function clearImmediate(e){delete h[e]},"process"==n(41352)(c)?o=function(e){c.nextTick(a(run,e,1))}:g&&g.now?o=function(e){g.now(a(run,e,1))}:m?(i=(r=new m).port2,r.port1.onmessage=listener,o=a(i.postMessage,i,1)):d.addEventListener&&"function"==typeof postMessage&&!d.importScripts?(o=function(e){d.postMessage(e+"","*")},d.addEventListener("message",listener,!1)):o=y in s("script")?function(e){u.appendChild(s("script")).onreadystatechange=function(){u.removeChild(this),run.call(e)}}:function(e){setTimeout(a(run,e,1),0)}),e.exports={set:p,clear:f}},46723:(e,t,n)=>{var o=n(58290),r=Math.max,i=Math.min;e.exports=function(e,t){return(e=o(e))<0?r(e+t,0):i(e,t)}},58290:e=>{var t=Math.ceil,n=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?n:t)(e)}},1504:(e,t,n)=>{var o=n(13115),r=n(18239);e.exports=function(e){return o(r(e))}},37154:(e,t,n)=>{var o=n(58290),r=Math.min;e.exports=function(e){return e>0?r(o(e),9007199254740991):0}},60061:(e,t,n)=>{var o=n(18239);e.exports=function(e){return Object(o(e))}},12737:(e,t,n)=>{var o=n(39632);e.exports=function(e,t){if(!o(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!o(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},54251:e=>{var t=0,n=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+n).toString(36))}},35701:(e,t,n)=>{var o=n(43280).navigator;e.exports=o&&o.userAgent||""},41081:(e,t,n)=>{var o=n(39632);e.exports=function(e,t){if(!o(e)||e._t!==t)throw TypeError("Incompatible receiver, "+t+" required!");return e}},31164:(e,t,n)=>{var o=n(43280),r=n(47208),i=n(36794),a=n(7273),l=n(60510).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=i?{}:o.Symbol||{});"_"==e.charAt(0)||e in t||l(t,e,{value:a.f(e)})}},7273:(e,t,n)=>{t.f=n(24300)},24300:(e,t,n)=>{var o=n(29990)("wks"),r=n(54251),i=n(43280).Symbol,a="function"==typeof i;(e.exports=function(e){return o[e]||(o[e]=a&&i[e]||(a?i:r)("Symbol."+e))}).store=o},26116:(e,t,n)=>{var o=n(8312),r=n(24300)("iterator"),i=n(79105);e.exports=n(47208).getIteratorMethod=function(e){if(null!=e)return e[r]||e["@@iterator"]||i[o(e)]}},37627:(e,t,n)=>{"use strict";var o=n(61725),r=n(98310),i=n(60061),a=n(93086),l=n(11827),u=n(37154),s=n(87352),d=n(26116);r(r.S+r.F*!n(26797)((function(e){Array.from(e)})),"Array",{from:function from(e){var t,n,r,c,p=i(e),f="function"==typeof this?this:Array,m=arguments.length,g=m>1?arguments[1]:void 0,v=void 0!==g,h=0,y=d(p);if(v&&(g=o(g,m>2?arguments[2]:void 0,2)),null==y||f==Array&&l(y))for(n=new f(t=u(p.length));t>h;h++)s(n,h,v?g(p[h],h):p[h]);else for(c=y.call(p),n=new f;!(r=c.next()).done;h++)s(n,h,v?a(c,g,[r.value,h],!0):r.value);return n.length=h,n}})},42580:(e,t,n)=>{var o=n(98310);o(o.S,"Array",{isArray:n(7359)})},84411:(e,t,n)=>{"use strict";var o=n(29697),r=n(9329),i=n(79105),a=n(1504);e.exports=n(6125)(Array,"Array",(function(e,t){this._t=a(e),this._i=0,this._k=t}),(function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,r(1)):r(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},99954:(e,t,n)=>{var o=n(98310);o(o.S+o.F,"Object",{assign:n(77995)})},30785:(e,t,n)=>{var o=n(98310);o(o.S,"Object",{create:n(82488)})},40168:(e,t,n)=>{var o=n(98310);o(o.S+o.F*!n(75179),"Object",{defineProperty:n(60510).f})},18576:(e,t,n)=>{var o=n(1504),r=n(83264).f;n(57972)("getOwnPropertyDescriptor",(function(){return function getOwnPropertyDescriptor(e,t){return r(o(e),t)}}))},4840:(e,t,n)=>{var o=n(60061),r=n(999);n(57972)("getPrototypeOf",(function(){return function getPrototypeOf(e){return r(o(e))}}))},5453:(e,t,n)=>{var o=n(60061),r=n(86425);n(57972)("keys",(function(){return function keys(e){return r(o(e))}}))},13890:(e,t,n)=>{var o=n(98310);o(o.S,"Object",{setPrototypeOf:n(25574).set})},70285:()=>{},24399:(e,t,n)=>{var o=n(98310),r=n(60162);o(o.G+o.F*(parseInt!=r),{parseInt:r})},86082:(e,t,n)=>{"use strict";var o,r,i,a,l=n(36794),u=n(43280),s=n(61725),d=n(8312),c=n(98310),p=n(39632),f=n(26610),m=n(54677),g=n(25985),v=n(73732),h=n(6022).set,y=n(4326)(),_=n(88579),b=n(52745),C=n(35701),w=n(88747),k="Promise",x=u.TypeError,S=u.process,T=S&&S.versions,M=T&&T.v8||"",P=u.Promise,I="process"==d(S),empty=function(){},A=r=_.f,E=!!function(){try{var e=P.resolve(1),t=(e.constructor={})[n(24300)("species")]=function(e){e(empty,empty)};return(I||"function"==typeof PromiseRejectionEvent)&&e.then(empty)instanceof t&&0!==M.indexOf("6.6")&&-1===C.indexOf("Chrome/66")}catch(e){}}(),isThenable=function(e){var t;return!(!p(e)||"function"!=typeof(t=e.then))&&t},notify=function(e,t){if(!e._n){e._n=!0;var n=e._c;y((function(){for(var o=e._v,r=1==e._s,i=0,run=function(t){var n,i,a,l=r?t.ok:t.fail,u=t.resolve,s=t.reject,d=t.domain;try{l?(r||(2==e._h&&onHandleUnhandled(e),e._h=1),!0===l?n=o:(d&&d.enter(),n=l(o),d&&(d.exit(),a=!0)),n===t.promise?s(x("Promise-chain cycle")):(i=isThenable(n))?i.call(n,u,s):u(n)):s(o)}catch(e){d&&!a&&d.exit(),s(e)}};n.length>i;)run(n[i++]);e._c=[],e._n=!1,t&&!e._h&&onUnhandled(e)}))}},onUnhandled=function(e){h.call(u,(function(){var t,n,o,r=e._v,i=isUnhandled(e);if(i&&(t=b((function(){I?S.emit("unhandledRejection",r,e):(n=u.onunhandledrejection)?n({promise:e,reason:r}):(o=u.console)&&o.error&&o.error("Unhandled promise rejection",r)})),e._h=I||isUnhandled(e)?2:1),e._a=void 0,i&&t.e)throw t.v}))},isUnhandled=function(e){return 1!==e._h&&0===(e._a||e._c).length},onHandleUnhandled=function(e){h.call(u,(function(){var t;I?S.emit("rejectionHandled",e):(t=u.onrejectionhandled)&&t({promise:e,reason:e._v})}))},$reject=function(e){var t=this;t._d||(t._d=!0,(t=t._w||t)._v=e,t._s=2,t._a||(t._a=t._c.slice()),notify(t,!0))},$resolve=function(e){var t,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===e)throw x("Promise can't be resolved itself");(t=isThenable(e))?y((function(){var o={_w:n,_d:!1};try{t.call(e,s($resolve,o,1),s($reject,o,1))}catch(e){$reject.call(o,e)}})):(n._v=e,n._s=1,notify(n,!1))}catch(e){$reject.call({_w:n,_d:!1},e)}}};E||(P=function Promise(e){m(this,P,k,"_h"),f(e),o.call(this);try{e(s($resolve,this,1),s($reject,this,1))}catch(e){$reject.call(this,e)}},(o=function Promise(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(13199)(P.prototype,{then:function then(e,t){var n=A(v(this,P));return n.ok="function"!=typeof e||e,n.fail="function"==typeof t&&t,n.domain=I?S.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&notify(this,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),i=function(){var e=new o;this.promise=e,this.resolve=s($resolve,e,1),this.reject=s($reject,e,1)},_.f=A=function(e){return e===P||e===a?new i(e):r(e)}),c(c.G+c.W+c.F*!E,{Promise:P}),n(2413)(P,k),n(5698)(k),a=n(47208).Promise,c(c.S+c.F*!E,k,{reject:function reject(e){var t=A(this);return(0,t.reject)(e),t.promise}}),c(c.S+c.F*(l||!E),k,{resolve:function resolve(e){return w(l&&this===a?P:this,e)}}),c(c.S+c.F*!(E&&n(26797)((function(e){P.all(e).catch(empty)}))),k,{all:function all(e){var t=this,n=A(t),o=n.resolve,r=n.reject,i=b((function(){var n=[],i=0,a=1;g(e,!1,(function(e){var l=i++,u=!1;n.push(void 0),a++,t.resolve(e).then((function(e){u||(u=!0,n[l]=e,--a||o(n))}),r)})),--a||o(n)}));return i.e&&r(i.v),n.promise},race:function race(e){var t=this,n=A(t),o=n.reject,r=b((function(){g(e,!1,(function(e){t.resolve(e).then(n.resolve,o)}))}));return r.e&&o(r.v),n.promise}})},11320:(e,t,n)=>{var o=n(98310),r=n(82488),i=n(26610),a=n(30498),l=n(39632),u=n(90472),s=n(45515),d=(n(43280).Reflect||{}).construct,c=u((function(){function F(){}return!(d((function(){}),[],F)instanceof F)})),p=!u((function(){d((function(){}))}));o(o.S+o.F*(c||p),"Reflect",{construct:function construct(e,t){i(e),a(t);var n=arguments.length<3?e:i(arguments[2]);if(p&&!c)return d(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var o=[null];return o.push.apply(o,t),new(s.apply(e,o))}var u=n.prototype,f=r(l(u)?u:Object.prototype),m=Function.apply.call(e,f,t);return l(m)?m:f}})},36600:(e,t,n)=>{var o=n(83264),r=n(999),i=n(20657),a=n(98310),l=n(39632),u=n(30498);a(a.S,"Reflect",{get:function get(e,t){var n,a,s=arguments.length<3?e:arguments[2];return u(e)===s?e[t]:(n=o.f(e,t))?i(n,"value")?n.value:void 0!==n.get?n.get.call(s):void 0:l(a=r(e))?get(a,t,s):void 0}})},99572:(e,t,n)=>{"use strict";var o=n(78502)(!0);n(6125)(String,"String",(function(e){this._t=String(e),this._i=0}),(function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=o(t,n),this._i+=e.length,{value:e,done:!1})}))},54370:(e,t,n)=>{"use strict";var o=n(43280),r=n(20657),i=n(75179),a=n(98310),l=n(19312),u=n(6758).KEY,s=n(90472),d=n(29990),c=n(2413),p=n(54251),f=n(24300),m=n(7273),g=n(31164),v=n(42266),h=n(7359),y=n(30498),_=n(39632),b=n(60061),C=n(1504),w=n(12737),k=n(48439),x=n(82488),S=n(26084),T=n(83264),M=n(97739),P=n(60510),I=n(86425),A=T.f,E=P.f,O=S.f,V=o.Symbol,W=o.JSON,L=W&&W.stringify,R=f("_hidden"),B=f("toPrimitive"),D={}.propertyIsEnumerable,j=d("symbol-registry"),$=d("symbols"),U=d("op-symbols"),G=Object.prototype,N="function"==typeof V&&!!M.f,q=o.QObject,z=!q||!q.prototype||!q.prototype.findChild,H=i&&s((function(){return 7!=x(E({},"a",{get:function(){return E(this,"a",{value:7}).a}})).a}))?function(e,t,n){var o=A(G,t);o&&delete G[t],E(e,t,n),o&&e!==G&&E(G,t,o)}:E,wrap=function(e){var t=$[e]=x(V.prototype);return t._k=e,t},Q=N&&"symbol"==typeof V.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof V},K=function defineProperty(e,t,n){return e===G&&K(U,t,n),y(e),t=w(t,!0),y(n),r($,t)?(n.enumerable?(r(e,R)&&e[R][t]&&(e[R][t]=!1),n=x(n,{enumerable:k(0,!1)})):(r(e,R)||E(e,R,k(1,{})),e[R][t]=!0),H(e,t,n)):E(e,t,n)},J=function defineProperties(e,t){y(e);for(var n,o=v(t=C(t)),r=0,i=o.length;i>r;)K(e,n=o[r++],t[n]);return e},Y=function propertyIsEnumerable(e){var t=D.call(this,e=w(e,!0));return!(this===G&&r($,e)&&!r(U,e))&&(!(t||!r(this,e)||!r($,e)||r(this,R)&&this[R][e])||t)},X=function getOwnPropertyDescriptor(e,t){if(e=C(e),t=w(t,!0),e!==G||!r($,t)||r(U,t)){var n=A(e,t);return!n||!r($,t)||r(e,R)&&e[R][t]||(n.enumerable=!0),n}},Z=function getOwnPropertyNames(e){for(var t,n=O(C(e)),o=[],i=0;n.length>i;)r($,t=n[i++])||t==R||t==u||o.push(t);return o},ee=function getOwnPropertySymbols(e){for(var t,n=e===G,o=O(n?U:C(e)),i=[],a=0;o.length>a;)!r($,t=o[a++])||n&&!r(G,t)||i.push($[t]);return i};N||(l((V=function Symbol(){if(this instanceof V)throw TypeError("Symbol is not a constructor!");var e=p(arguments.length>0?arguments[0]:void 0),$set=function(t){this===G&&$set.call(U,t),r(this,R)&&r(this[R],e)&&(this[R][e]=!1),H(this,e,k(1,t))};return i&&z&&H(G,e,{configurable:!0,set:$set}),wrap(e)}).prototype,"toString",(function toString(){return this._k})),T.f=X,P.f=K,n(8772).f=S.f=Z,n(67410).f=Y,M.f=ee,i&&!n(36794)&&l(G,"propertyIsEnumerable",Y,!0),m.f=function(e){return wrap(f(e))}),a(a.G+a.W+a.F*!N,{Symbol:V});for(var te="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ne=0;te.length>ne;)f(te[ne++]);for(var oe=I(f.store),re=0;oe.length>re;)g(oe[re++]);a(a.S+a.F*!N,"Symbol",{for:function(e){return r(j,e+="")?j[e]:j[e]=V(e)},keyFor:function keyFor(e){if(!Q(e))throw TypeError(e+" is not a symbol!");for(var t in j)if(j[t]===e)return t},useSetter:function(){z=!0},useSimple:function(){z=!1}}),a(a.S+a.F*!N,"Object",{create:function create(e,t){return void 0===t?x(e):J(x(e),t)},defineProperty:K,defineProperties:J,getOwnPropertyDescriptor:X,getOwnPropertyNames:Z,getOwnPropertySymbols:ee});var ie=s((function(){M.f(1)}));a(a.S+a.F*ie,"Object",{getOwnPropertySymbols:function getOwnPropertySymbols(e){return M.f(b(e))}}),W&&a(a.S+a.F*(!N||s((function(){var e=V();return"[null]"!=L([e])||"{}"!=L({a:e})||"{}"!=L(Object(e))}))),"JSON",{stringify:function stringify(e){for(var t,n,o=[e],r=1;arguments.length>r;)o.push(arguments[r++]);if(n=t=o[1],(_(t)||void 0!==e)&&!Q(e))return h(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!Q(t))return t}),o[1]=t,L.apply(W,o)}}),V.prototype[B]||n(62292)(V.prototype,B,V.prototype.valueOf),c(V,"Symbol"),c(Math,"Math",!0),c(o.JSON,"JSON",!0)},23337:(e,t,n)=>{"use strict";var o,r=n(43280),i=n(97647)(0),a=n(19312),l=n(6758),u=n(77995),s=n(92600),d=n(39632),c=n(41081),p=n(41081),f=!r.ActiveXObject&&"ActiveXObject"in r,m="WeakMap",g=l.getWeak,v=Object.isExtensible,h=s.ufstore,wrapper=function(e){return function WeakMap(){return e(this,arguments.length>0?arguments[0]:void 0)}},y={get:function get(e){if(d(e)){var t=g(e);return!0===t?h(c(this,m)).get(e):t?t[this._i]:void 0}},set:function set(e,t){return s.def(c(this,m),e,t)}},_=e.exports=n(70770)(m,wrapper,y,s,!0,!0);p&&f&&(u((o=s.getConstructor(wrapper,m)).prototype,y),l.NEED=!0,i(["delete","has","get","set"],(function(e){var t=_.prototype,n=t[e];a(t,e,(function(t,r){if(d(t)&&!v(t)){this._f||(this._f=new o);var i=this._f[e](t,r);return"set"==e?this:i}return n.call(this,t,r)}))})))},95260:(e,t,n)=>{var o=n(98310),r=n(9480)(!0);o(o.S,"Object",{entries:function entries(e){return r(e)}})},57188:(e,t,n)=>{var o=n(98310),r=n(9480)(!1);o(o.S,"Object",{values:function values(e){return r(e)}})},81522:(e,t,n)=>{"use strict";var o=n(98310),r=n(47208),i=n(43280),a=n(73732),l=n(88747);o(o.P+o.R,"Promise",{finally:function(e){var t=a(this,r.Promise||i.Promise),n="function"==typeof e;return this.then(n?function(n){return l(t,e()).then((function(){return n}))}:e,n?function(n){return l(t,e()).then((function(){throw n}))}:e)}})},25757:(e,t,n)=>{"use strict";var o=n(98310),r=n(88579),i=n(52745);o(o.S,"Promise",{try:function(e){var t=r.f(this),n=i(e);return(n.e?t.reject:t.resolve)(n.v),t.promise}})},87573:(e,t,n)=>{n(31164)("asyncIterator")},97224:(e,t,n)=>{n(31164)("observable")},92797:(e,t,n)=>{n(14689)("WeakMap")},10143:(e,t,n)=>{n(7883)("WeakMap")},74114:(e,t,n)=>{n(84411);for(var o=n(43280),r=n(62292),i=n(79105),a=n(24300)("toStringTag"),l="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),u=0;u<l.length;u++){var s=l[u],d=o[s],c=d&&d.prototype;c&&!c[a]&&r(c,a,s),i[s]=i.Array}},22761:e=>{e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},42094:(e,t,n)=>{var o=n(62190)("unscopables"),r=Array.prototype;null==r[o]&&n(74216)(r,o,{}),e.exports=function(e){r[o][e]=!0}},88492:(e,t,n)=>{"use strict";var o=n(12070)(!0);e.exports=function(e,t,n){return t+(n?o(e,t).length:1)}},6365:(e,t,n)=>{var o=n(67334);e.exports=function(e){if(!o(e))throw TypeError(e+" is not an object!");return e}},59021:(e,t,n)=>{var o=n(15703),r=n(26078),i=n(78615);e.exports=function(e){return function(t,n,a){var l,u=o(t),s=r(u.length),d=i(a,s);if(e&&n!=n){for(;s>d;)if((l=u[d++])!=l)return!0}else for(;s>d;d++)if((e||d in u)&&u[d]===n)return e||d||0;return!e&&-1}}},78309:(e,t,n)=>{var o=n(11528),r=n(8467),i=n(26033),a=n(26078),l=n(63531);e.exports=function(e,t){var n=1==e,u=2==e,s=3==e,d=4==e,c=6==e,p=5==e||c,f=t||l;return function(t,l,m){for(var g,v,h=i(t),y=r(h),_=o(l,m,3),b=a(y.length),C=0,w=n?f(t,b):u?f(t,0):void 0;b>C;C++)if((p||C in y)&&(v=_(g=y[C],C,h),e))if(n)w[C]=v;else if(v)switch(e){case 3:return!0;case 5:return g;case 6:return C;case 2:w.push(g)}else if(d)return!1;return c?-1:s||d?d:w}}},81071:(e,t,n)=>{var o=n(67334),r=n(99141),i=n(62190)("species");e.exports=function(e){var t;return r(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!r(t.prototype)||(t=void 0),o(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},63531:(e,t,n)=>{var o=n(81071);e.exports=function(e,t){return new(o(e))(t)}},20106:(e,t,n)=>{var o=n(26688),r=n(62190)("toStringTag"),i="Arguments"==o(function(){return arguments}());e.exports=function(e){var t,n,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),r))?n:i?o(t):"Object"==(a=o(t))&&"function"==typeof t.callee?"Arguments":a}},26688:e=>{var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},60066:e=>{var t=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=t)},11528:(e,t,n)=>{var o=n(22761);e.exports=function(e,t,n){if(o(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,o){return e.call(t,n,o)};case 3:return function(n,o,r){return e.call(t,n,o,r)}}return function(){return e.apply(t,arguments)}}},61622:e=>{e.exports=function(e){if(null==e)throw TypeError("Can't call method on  "+e);return e}},36628:(e,t,n)=>{e.exports=!n(48625)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},5050:(e,t,n)=>{var o=n(67334),r=n(38113).document,i=o(r)&&o(r.createElement);e.exports=function(e){return i?r.createElement(e):{}}},33603:e=>{e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},65772:(e,t,n)=>{var o=n(38113),r=n(60066),i=n(74216),a=n(17738),l=n(11528),$export=function(e,t,n){var u,s,d,c,p=e&$export.F,f=e&$export.G,m=e&$export.S,g=e&$export.P,v=e&$export.B,h=f?o:m?o[t]||(o[t]={}):(o[t]||{}).prototype,y=f?r:r[t]||(r[t]={}),_=y.prototype||(y.prototype={});for(u in f&&(n=t),n)d=((s=!p&&h&&void 0!==h[u])?h:n)[u],c=v&&s?l(d,o):g&&"function"==typeof d?l(Function.call,d):d,h&&a(h,u,d,e&$export.U),y[u]!=d&&i(y,u,c),g&&_[u]!=d&&(_[u]=d)};o.core=r,$export.F=1,$export.G=2,$export.S=4,$export.P=8,$export.B=16,$export.W=32,$export.U=64,$export.R=128,e.exports=$export},48625:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},48897:(e,t,n)=>{"use strict";n(25846);var o=n(17738),r=n(74216),i=n(48625),a=n(61622),l=n(62190),u=n(43288),s=l("species"),d=!i((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),c=function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();e.exports=function(e,t,n){var p=l(e),f=!i((function(){var t={};return t[p]=function(){return 7},7!=""[e](t)})),m=f?!i((function(){var t=!1,n=/a/;return n.exec=function(){return t=!0,null},"split"===e&&(n.constructor={},n.constructor[s]=function(){return n}),n[p](""),!t})):void 0;if(!f||!m||"replace"===e&&!d||"split"===e&&!c){var g=/./[p],v=n(a,p,""[e],(function maybeCallNative(e,t,n,o,r){return t.exec===u?f&&!r?{done:!0,value:g.call(t,n,o)}:{done:!0,value:e.call(n,t,o)}:{done:!1}})),h=v[0],y=v[1];o(String.prototype,e,h),r(RegExp.prototype,p,2==t?function(e,t){return y.call(e,this,t)}:function(e){return y.call(e,this)})}}},74859:(e,t,n)=>{"use strict";var o=n(6365);e.exports=function(){var e=o(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},20646:(e,t,n)=>{e.exports=n(8655)("native-function-to-string",Function.toString)},38113:e=>{var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},54040:e=>{var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},74216:(e,t,n)=>{var o=n(98558),r=n(36061);e.exports=n(36628)?function(e,t,n){return o.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},8954:(e,t,n)=>{var o=n(38113).document;e.exports=o&&o.documentElement},5100:(e,t,n)=>{e.exports=!n(36628)&&!n(48625)((function(){return 7!=Object.defineProperty(n(5050)("div"),"a",{get:function(){return 7}}).a}))},8467:(e,t,n)=>{var o=n(26688);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==o(e)?e.split(""):Object(e)}},99141:(e,t,n)=>{var o=n(26688);e.exports=Array.isArray||function isArray(e){return"Array"==o(e)}},67334:e=>{e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},94587:(e,t,n)=>{var o=n(67334),r=n(26688),i=n(62190)("match");e.exports=function(e){var t;return o(e)&&(void 0!==(t=e[i])?!!t:"RegExp"==r(e))}},46445:(e,t,n)=>{"use strict";var o=n(82897),r=n(36061),i=n(55727),a={};n(74216)(a,n(62190)("iterator"),(function(){return this})),e.exports=function(e,t,n){e.prototype=o(a,{next:r(1,n)}),i(e,t+" Iterator")}},61195:(e,t,n)=>{"use strict";var o=n(81422),r=n(65772),i=n(17738),a=n(74216),l=n(23988),u=n(46445),s=n(55727),d=n(19002),c=n(62190)("iterator"),p=!([].keys&&"next"in[].keys()),f="keys",m="values",returnThis=function(){return this};e.exports=function(e,t,n,g,v,h,y){u(n,t,g);var _,b,C,getMethod=function(e){if(!p&&e in S)return S[e];switch(e){case f:return function keys(){return new n(this,e)};case m:return function values(){return new n(this,e)}}return function entries(){return new n(this,e)}},w=t+" Iterator",k=v==m,x=!1,S=e.prototype,T=S[c]||S["@@iterator"]||v&&S[v],M=T||getMethod(v),P=v?k?getMethod("entries"):M:void 0,I="Array"==t&&S.entries||T;if(I&&(C=d(I.call(new e)))!==Object.prototype&&C.next&&(s(C,w,!0),o||"function"==typeof C[c]||a(C,c,returnThis)),k&&T&&T.name!==m&&(x=!0,M=function values(){return T.call(this)}),o&&!y||!p&&!x&&S[c]||a(S,c,M),l[t]=M,l[w]=returnThis,v)if(_={values:k?M:getMethod(m),keys:h?M:getMethod(f),entries:P},y)for(b in _)b in S||i(S,b,_[b]);else r(r.P+r.F*(p||x),t,_);return _}},35038:e=>{e.exports=function(e,t){return{value:t,done:!!e}}},23988:e=>{e.exports={}},81422:e=>{e.exports=!1},82897:(e,t,n)=>{var o=n(6365),r=n(7331),i=n(33603),a=n(28034)("IE_PROTO"),Empty=function(){},createDict=function(){var e,t=n(5050)("iframe"),o=i.length;for(t.style.display="none",n(8954).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),createDict=e.F;o--;)delete createDict.prototype[i[o]];return createDict()};e.exports=Object.create||function create(e,t){var n;return null!==e?(Empty.prototype=o(e),n=new Empty,Empty.prototype=null,n[a]=e):n=createDict(),void 0===t?n:r(n,t)}},98558:(e,t,n)=>{var o=n(6365),r=n(5100),i=n(31382),a=Object.defineProperty;t.f=n(36628)?Object.defineProperty:function defineProperty(e,t,n){if(o(e),t=i(t,!0),o(n),r)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},7331:(e,t,n)=>{var o=n(98558),r=n(6365),i=n(42912);e.exports=n(36628)?Object.defineProperties:function defineProperties(e,t){r(e);for(var n,a=i(t),l=a.length,u=0;l>u;)o.f(e,n=a[u++],t[n]);return e}},19002:(e,t,n)=>{var o=n(54040),r=n(26033),i=n(28034)("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=r(e),o(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},75547:(e,t,n)=>{var o=n(54040),r=n(15703),i=n(59021)(!1),a=n(28034)("IE_PROTO");e.exports=function(e,t){var n,l=r(e),u=0,s=[];for(n in l)n!=a&&o(l,n)&&s.push(n);for(;t.length>u;)o(l,n=t[u++])&&(~i(s,n)||s.push(n));return s}},42912:(e,t,n)=>{var o=n(75547),r=n(33603);e.exports=Object.keys||function keys(e){return o(e,r)}},36061:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},17738:(e,t,n)=>{var o=n(38113),r=n(74216),i=n(54040),a=n(25078)("src"),l=n(20646),u="toString",s=(""+l).split(u);n(60066).inspectSource=function(e){return l.call(e)},(e.exports=function(e,t,n,l){var u="function"==typeof n;u&&(i(n,"name")||r(n,"name",t)),e[t]!==n&&(u&&(i(n,a)||r(n,a,e[t]?""+e[t]:s.join(String(t)))),e===o?e[t]=n:l?e[t]?e[t]=n:r(e,t,n):(delete e[t],r(e,t,n)))})(Function.prototype,u,(function toString(){return"function"==typeof this&&this[a]||l.call(this)}))},62404:(e,t,n)=>{"use strict";var o=n(20106),r=RegExp.prototype.exec;e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var i=n.call(e,t);if("object"!=typeof i)throw new TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==o(e))throw new TypeError("RegExp#exec called on incompatible receiver");return r.call(e,t)}},43288:(e,t,n)=>{"use strict";var o,r,i=n(74859),a=RegExp.prototype.exec,l=String.prototype.replace,u=a,s=(o=/a/,r=/b*/g,a.call(o,"a"),a.call(r,"a"),0!==o.lastIndex||0!==r.lastIndex),d=void 0!==/()??/.exec("")[1];(s||d)&&(u=function exec(e){var t,n,o,r,u=this;return d&&(n=new RegExp("^"+u.source+"$(?!\\s)",i.call(u))),s&&(t=u.lastIndex),o=a.call(u,e),s&&o&&(u.lastIndex=u.global?o.index+o[0].length:t),d&&o&&o.length>1&&l.call(o[0],n,(function(){for(r=1;r<arguments.length-2;r++)void 0===arguments[r]&&(o[r]=void 0)})),o}),e.exports=u},55727:(e,t,n)=>{var o=n(98558).f,r=n(54040),i=n(62190)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,i)&&o(e,i,{configurable:!0,value:t})}},28034:(e,t,n)=>{var o=n(8655)("keys"),r=n(25078);e.exports=function(e){return o[e]||(o[e]=r(e))}},8655:(e,t,n)=>{var o=n(60066),r=n(38113),i="__core-js_shared__",a=r[i]||(r[i]={});(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:o.version,mode:n(81422)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},11987:(e,t,n)=>{var o=n(6365),r=n(22761),i=n(62190)("species");e.exports=function(e,t){var n,a=o(e).constructor;return void 0===a||null==(n=o(a)[i])?t:r(n)}},10225:(e,t,n)=>{"use strict";var o=n(48625);e.exports=function(e,t){return!!e&&o((function(){t?e.call(null,(function(){}),1):e.call(null)}))}},12070:(e,t,n)=>{var o=n(3338),r=n(61622);e.exports=function(e){return function(t,n){var i,a,l=String(r(t)),u=o(n),s=l.length;return u<0||u>=s?e?"":void 0:(i=l.charCodeAt(u))<55296||i>56319||u+1===s||(a=l.charCodeAt(u+1))<56320||a>57343?e?l.charAt(u):i:e?l.slice(u,u+2):a-56320+(i-55296<<10)+65536}}},78615:(e,t,n)=>{var o=n(3338),r=Math.max,i=Math.min;e.exports=function(e,t){return(e=o(e))<0?r(e+t,0):i(e,t)}},3338:e=>{var t=Math.ceil,n=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?n:t)(e)}},15703:(e,t,n)=>{var o=n(8467),r=n(61622);e.exports=function(e){return o(r(e))}},26078:(e,t,n)=>{var o=n(3338),r=Math.min;e.exports=function(e){return e>0?r(o(e),9007199254740991):0}},26033:(e,t,n)=>{var o=n(61622);e.exports=function(e){return Object(o(e))}},31382:(e,t,n)=>{var o=n(67334);e.exports=function(e,t){if(!o(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!o(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},25078:e=>{var t=0,n=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+n).toString(36))}},62190:(e,t,n)=>{var o=n(8655)("wks"),r=n(25078),i=n(38113).Symbol,a="function"==typeof i;(e.exports=function(e){return o[e]||(o[e]=a&&i[e]||(a?i:r)("Symbol."+e))}).store=o},64434:(e,t,n)=>{"use strict";var o=n(65772),r=n(78309)(2);o(o.P+o.F*!n(10225)([].filter,!0),"Array",{filter:function filter(e){return r(this,e,arguments[1])}})},71954:(e,t,n)=>{"use strict";var o=n(65772),r=n(78309)(5),i="find",a=!0;i in[]&&Array(1).find((function(){a=!1})),o(o.P+o.F*a,"Array",{find:function find(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}}),n(42094)(i)},12897:(e,t,n)=>{"use strict";var o=n(42094),r=n(35038),i=n(23988),a=n(15703);e.exports=n(61195)(Array,"Array",(function(e,t){this._t=a(e),this._i=0,this._k=t}),(function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,r(1)):r(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},90286:(e,t,n)=>{"use strict";var o=n(65772),r=n(78309)(1);o(o.P+o.F*!n(10225)([].map,!0),"Array",{map:function map(e){return r(this,e,arguments[1])}})},99745:(e,t,n)=>{var o=n(98558).f,r=Function.prototype,i=/^\s*function ([^ (]*)/,a="name";a in r||n(36628)&&o(r,a,{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(e){return""}}})},76139:(e,t,n)=>{"use strict";var o=n(20106),r={};r[n(62190)("toStringTag")]="z",r+""!="[object z]"&&n(17738)(Object.prototype,"toString",(function toString(){return"[object "+o(this)+"]"}),!0)},25846:(e,t,n)=>{"use strict";var o=n(43288);n(65772)({target:"RegExp",proto:!0,forced:o!==/./.exec},{exec:o})},64828:(e,t,n)=>{"use strict";var o=n(6365),r=n(26078),i=n(88492),a=n(62404);n(48897)("match",1,(function(e,t,n,l){return[function match(n){var o=e(this),r=null==n?void 0:n[t];return void 0!==r?r.call(n,o):new RegExp(n)[t](String(o))},function(e){var t=l(n,e,this);if(t.done)return t.value;var u=o(e),s=String(this);if(!u.global)return a(u,s);var d=u.unicode;u.lastIndex=0;for(var c,p=[],f=0;null!==(c=a(u,s));){var m=String(c[0]);p[f]=m,""===m&&(u.lastIndex=i(s,r(u.lastIndex),d)),f++}return 0===f?null:p}]}))},84208:(e,t,n)=>{"use strict";var o=n(6365),r=n(26033),i=n(26078),a=n(3338),l=n(88492),u=n(62404),s=Math.max,d=Math.min,c=Math.floor,p=/\$([$&`']|\d\d?|<[^>]*>)/g,f=/\$([$&`']|\d\d?)/g;n(48897)("replace",2,(function(e,t,n,m){return[function replace(o,r){var i=e(this),a=null==o?void 0:o[t];return void 0!==a?a.call(o,i,r):n.call(String(i),o,r)},function(e,t){var r=m(n,e,this,t);if(r.done)return r.value;var c=o(e),p=String(this),f="function"==typeof t;f||(t=String(t));var g=c.global;if(g){var v=c.unicode;c.lastIndex=0}for(var h=[];;){var y=u(c,p);if(null===y)break;if(h.push(y),!g)break;""===String(y[0])&&(c.lastIndex=l(p,i(c.lastIndex),v))}for(var _,b="",C=0,w=0;w<h.length;w++){y=h[w];for(var k=String(y[0]),x=s(d(a(y.index),p.length),0),S=[],T=1;T<y.length;T++)S.push(void 0===(_=y[T])?_:String(_));var M=y.groups;if(f){var P=[k].concat(S,x,p);void 0!==M&&P.push(M);var I=String(t.apply(void 0,P))}else I=getSubstitution(k,p,x,S,M,t);x>=C&&(b+=p.slice(C,x)+I,C=x+k.length)}return b+p.slice(C)}];function getSubstitution(e,t,o,i,a,l){var u=o+e.length,s=i.length,d=f;return void 0!==a&&(a=r(a),d=p),n.call(l,d,(function(n,r){var l;switch(r.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,o);case"'":return t.slice(u);case"<":l=a[r.slice(1,-1)];break;default:var d=+r;if(0===d)return n;if(d>s){var p=c(d/10);return 0===p?n:p<=s?void 0===i[p-1]?r.charAt(1):i[p-1]+r.charAt(1):n}l=i[d-1]}return void 0===l?"":l}))}}))},99236:(e,t,n)=>{"use strict";var o=n(94587),r=n(6365),i=n(11987),a=n(88492),l=n(26078),u=n(62404),s=n(43288),d=n(48625),c=Math.min,p=[].push,f=4294967295,m=!d((function(){RegExp(f,"y")}));n(48897)("split",2,(function(e,t,n,d){var g;return g="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,t){var r=String(this);if(void 0===e&&0===t)return[];if(!o(e))return n.call(r,e,t);for(var i,a,l,u=[],d=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),c=0,m=void 0===t?f:t>>>0,g=new RegExp(e.source,d+"g");(i=s.call(g,r))&&!((a=g.lastIndex)>c&&(u.push(r.slice(c,i.index)),i.length>1&&i.index<r.length&&p.apply(u,i.slice(1)),l=i[0].length,c=a,u.length>=m));)g.lastIndex===i.index&&g.lastIndex++;return c===r.length?!l&&g.test("")||u.push(""):u.push(r.slice(c)),u.length>m?u.slice(0,m):u}:"0".split(void 0,0).length?function(e,t){return void 0===e&&0===t?[]:n.call(this,e,t)}:n,[function split(n,o){var r=e(this),i=null==n?void 0:n[t];return void 0!==i?i.call(n,r,o):g.call(String(r),n,o)},function(e,t){var o=d(g,e,this,t,g!==n);if(o.done)return o.value;var s=r(e),p=String(this),v=i(s,RegExp),h=s.unicode,y=(s.ignoreCase?"i":"")+(s.multiline?"m":"")+(s.unicode?"u":"")+(m?"y":"g"),_=new v(m?s:"^(?:"+s.source+")",y),b=void 0===t?f:t>>>0;if(0===b)return[];if(0===p.length)return null===u(_,p)?[p]:[];for(var C=0,w=0,k=[];w<p.length;){_.lastIndex=m?w:0;var x,S=u(_,m?p:p.slice(w));if(null===S||(x=c(l(_.lastIndex+(m?0:w)),p.length))===C)w=a(p,w,h);else{if(k.push(p.slice(C,w)),k.length===b)return k;for(var T=1;T<=S.length-1;T++)if(k.push(S[T]),k.length===b)return k;w=C=x}}return k.push(p.slice(C)),k}]}))},38081:(e,t,n)=>{"use strict";var o=n(65772),r=n(59021)(!0);o(o.P,"Array",{includes:function includes(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}}),n(42094)("includes")},93085:(e,t,n)=>{for(var o=n(12897),r=n(42912),i=n(17738),a=n(38113),l=n(74216),u=n(23988),s=n(62190),d=s("iterator"),c=s("toStringTag"),p=u.Array,f={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},m=r(f),g=0;g<m.length;g++){var v,h=m[g],y=f[h],_=a[h],b=_&&_.prototype;if(b&&(b[d]||l(b,d,p),b[c]||l(b,c,h),u[h]=p,y))for(v in o)b[v]||i(b,v,o[v],!0)}},86248:e=>{var t=function(e){"use strict";var t,n=Object.prototype,o=n.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",l=r.toStringTag||"@@toStringTag";function define(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{define({},"")}catch(e){define=function(e,t,n){return e[t]=n}}function wrap(e,t,n,o){var r=t&&t.prototype instanceof Generator?t:Generator,i=Object.create(r.prototype),a=new Context(o||[]);return i._invoke=function makeInvokeMethod(e,t,n){var o=u;return function invoke(r,i){if(o===d)throw new Error("Generator is already running");if(o===c){if("throw"===r)throw i;return doneResult()}for(n.method=r,n.arg=i;;){var a=n.delegate;if(a){var l=maybeInvokeDelegate(a,n);if(l){if(l===p)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===u)throw o=c,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var f=tryCatch(e,t,n);if("normal"===f.type){if(o=n.done?c:s,f.arg===p)continue;return{value:f.arg,done:n.done}}"throw"===f.type&&(o=c,n.method="throw",n.arg=f.arg)}}}(e,n,a),i}function tryCatch(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=wrap;var u="suspendedStart",s="suspendedYield",d="executing",c="completed",p={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}var f={};f[i]=function(){return this};var m=Object.getPrototypeOf,g=m&&m(m(values([])));g&&g!==n&&o.call(g,i)&&(f=g);var v=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(f);function defineIteratorMethods(e){["next","throw","return"].forEach((function(t){define(e,t,(function(e){return this._invoke(t,e)}))}))}function AsyncIterator(e,t){function invoke(n,r,i,a){var l=tryCatch(e[n],e,r);if("throw"!==l.type){var u=l.arg,s=u.value;return s&&"object"==typeof s&&o.call(s,"__await")?t.resolve(s.__await).then((function(e){invoke("next",e,i,a)}),(function(e){invoke("throw",e,i,a)})):t.resolve(s).then((function(e){u.value=e,i(u)}),(function(e){return invoke("throw",e,i,a)}))}a(l.arg)}var n;this._invoke=function enqueue(e,o){function callInvokeWithMethodAndArg(){return new t((function(t,n){invoke(e,o,t,n)}))}return n=n?n.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg()}}function maybeInvokeDelegate(e,n){var o=e.iterator[n.method];if(o===t){if(n.delegate=null,"throw"===n.method){if(e.iterator.return&&(n.method="return",n.arg=t,maybeInvokeDelegate(e,n),"throw"===n.method))return p;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var r=tryCatch(o,e.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,p;var i=r.arg;return i?i.done?(n[e.resultName]=i.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,p):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,p)}function pushTryEntry(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function resetTryEntry(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function Context(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(pushTryEntry,this),this.reset(!0)}function values(e){if(e){var n=e[i];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function next(){for(;++r<e.length;)if(o.call(e,r))return next.value=e[r],next.done=!1,next;return next.value=t,next.done=!0,next};return a.next=a}}return{next:doneResult}}function doneResult(){return{value:t,done:!0}}return GeneratorFunction.prototype=v.constructor=GeneratorFunctionPrototype,GeneratorFunctionPrototype.constructor=GeneratorFunction,GeneratorFunction.displayName=define(GeneratorFunctionPrototype,l,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===GeneratorFunction||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,GeneratorFunctionPrototype):(e.__proto__=GeneratorFunctionPrototype,define(e,l,"GeneratorFunction")),e.prototype=Object.create(v),e},e.awrap=function(e){return{__await:e}},defineIteratorMethods(AsyncIterator.prototype),AsyncIterator.prototype[a]=function(){return this},e.AsyncIterator=AsyncIterator,e.async=function(t,n,o,r,i){void 0===i&&(i=Promise);var a=new AsyncIterator(wrap(t,n,o,r),i);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},defineIteratorMethods(v),define(v,l,"Generator"),v[i]=function(){return this},v.toString=function(){return"[object Generator]"},e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function next(){for(;t.length;){var n=t.pop();if(n in e)return next.value=n,next.done=!1,next}return next.done=!0,next}},e.values=values,Context.prototype={constructor:Context,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(resetTryEntry),!e)for(var n in this)"t"===n.charAt(0)&&o.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function handle(o,r){return a.type="throw",a.arg=e,n.next=o,r&&(n.method="next",n.arg=t),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r],a=i.completion;if("root"===i.tryLoc)return handle("end");if(i.tryLoc<=this.prev){var l=o.call(i,"catchLoc"),u=o.call(i,"finallyLoc");if(l&&u){if(this.prev<i.catchLoc)return handle(i.catchLoc,!0);if(this.prev<i.finallyLoc)return handle(i.finallyLoc)}else if(l){if(this.prev<i.catchLoc)return handle(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return handle(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var i=r;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method="next",this.next=i.finallyLoc,p):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),p},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),resetTryEntry(n),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;resetTryEntry(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,o){return this.delegate={iterator:values(e),resultName:n,nextLoc:o},"next"===this.method&&(this.arg=t),p}},e}(e.exports);try{regeneratorRuntime=t}catch(e){Function("r","regeneratorRuntime = r")(t)}},18194:e=>{"use strict";e.exports=wp.i18n}},t={};function __webpack_require__(n){var o=t[n];if(void 0!==o)return o.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,__webpack_require__),r.exports}(()=>{"use strict";var e=__webpack_require__(67971);__webpack_require__(38081);var t=e(__webpack_require__(33130)),n=e(__webpack_require__(42511)),o=e(__webpack_require__(18754)),r=e(__webpack_require__(53425)),i=e(__webpack_require__(64087)),a=e(__webpack_require__(54577)),l=e(__webpack_require__(66882)),u=e(__webpack_require__(12946)),s=e(__webpack_require__(93213)),d=e(__webpack_require__(94265)),c=e(__webpack_require__(25509)),p=Marionette.Application.extend({config:{},modules:{},initModules:function initModules(){var e=__webpack_require__(7693),p=__webpack_require__(81891),f=__webpack_require__(7600),m=__webpack_require__(78550),g=__webpack_require__(65726),v=__webpack_require__(19247);this.modules={queryControl:new e,forms:new a.default,library:new p,customCSS:new t.default,globalWidget:new r.default,flipBox:new f,motionFX:new n.default,shareButtons:new m,assetsManager:new g,themeElements:new v,themeBuilder:new i.default,siteEditor:new u.default,screenshots:new l.default,woocommerce:new d.default,popup:new o.default,videoPlaylistModule:new s.default,ScrollSnapModule:new c.default}},ajax:{prepareArgs:function prepareArgs(e){return e[0]="pro_"+e[0],e},send:function send(){return elementorCommon.ajax.send.apply(elementorCommon.ajax,this.prepareArgs(arguments))},addRequest:function addRequest(){return elementorCommon.ajax.addRequest.apply(elementorCommon.ajax,this.prepareArgs(arguments))}},translate:function translate(e,t){return elementorCommon.translate(e,null,t,this.config.i18n)},onStart:function onStart(){var e=this;this.config=elementorProEditorConfig,this.initModules(),jQuery(window).on("elementor:init",(function(){return e.onElementorInit()})).on("elementor/connect/success/editor-pro-activate",this.onActivateSuccess)},onElementorInit:function onElementorInit(){var e=this;elementor.on("preview:loaded",(function(){return e.onElementorPreviewLoaded()})),elementorPro.libraryRemoveGetProButtons(),elementorCommon.debug.addURLToWatch("elementor-pro/assets")},onElementorPreviewLoaded:function onElementorPreviewLoaded(){elementor.$preview[0].contentWindow.elementorPro=this},libraryRemoveGetProButtons:function libraryRemoveGetProButtons(){elementor.hooks.addFilter("elementor/editor/template-library/template/action-button",(function(e,t){var n,o;return void 0===t.accessLevel||void 0===(null===(n=elementor.config)||void 0===n||null===(o=n.library_connect)||void 0===o?void 0:o.current_access_level)?t.isPro&&!elementorPro.config.isActive?"#tmpl-elementor-pro-template-library-activate-license-button":"#tmpl-elementor-template-library-insert-button":t.accessLevel>0&&!elementorPro.config.isActive?"#tmpl-elementor-pro-template-library-activate-license-button":t.accessLevel>elementor.config.library_connect.current_access_level?e:"#tmpl-elementor-template-library-insert-button"}))},onActivateSuccess:function onActivateSuccess(){elementor.noticeBar.onCloseClick(),elementor.config.library_connect.is_connected=!0,elementorPro.config.isActive=!0,elementor.notifications.showToast({message:elementor.translate("connected_successfully")})},validateHTMLTag:function validateHTMLTag(e){return["article","aside","div","footer","h1","h2","h3","h4","h5","h6","header","main","nav","p","section","span"].includes(e.toLowerCase())?e:"div"}});window.elementorPro=new p,elementorPro.start()})()})();assets/js/elements-handlers.min.js000064400000057334150755004310013230 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[437],{7319:(e,t,n)=>{"use strict";var s=n(7914),o=s(n(556)),r=s(n(4113)),l=s(n(2398)),i=s(n(3615)),a=s(n(3524)),d=s(n(676)),u=s(n(5169)),c=s(n(6852)),m=s(n(9047)),h=s(n(6463)),f=s(n(7133)),g=s(n(1871)),_=s(n(3781)),p=s(n(7786)),v=s(n(7466)),b=s(n(4173)),M=s(n(1273));const extendDefaultHandlers=e=>({...e,...{animatedText:o.default,carousel:r.default,countdown:l.default,hotspot:i.default,form:a.default,gallery:d.default,lottie:u.default,nav_menu:c.default,popup:m.default,posts:h.default,share_buttons:f.default,slides:g.default,social:_.default,themeBuilder:v.default,themeElements:b.default,woocommerce:M.default,tableOfContents:p.default}});elementorProFrontend.on("elementor-pro/modules/init:before",(()=>{elementorFrontend.hooks.addFilter("elementor-pro/frontend/handlers",extendDefaultHandlers)}))},2993:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.close=void 0;const o=new(s(n(8544)).default)("eicon"),r={get element(){return o.createSvgElement("close",{path:"M742 167L500 408 258 167C246 154 233 150 217 150 196 150 179 158 167 167 154 179 150 196 150 212 150 229 154 242 171 254L408 500 167 742C138 771 138 800 167 829 196 858 225 858 254 829L496 587 738 829C750 842 767 846 783 846 800 846 817 842 829 829 842 817 846 804 846 783 846 767 842 750 829 737L588 500 833 258C863 229 863 200 833 171 804 137 775 137 742 167Z",width:1e3,height:1e3})}};t.close=r},8544:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(5526));class IconsManager{constructor(e){if(this.prefix=`${e}-`,!IconsManager.symbolsContainer){const e="e-font-icon-svg-symbols";IconsManager.symbolsContainer=document.getElementById(e),IconsManager.symbolsContainer||(IconsManager.symbolsContainer=document.createElementNS("http://www.w3.org/2000/svg","svg"),IconsManager.symbolsContainer.setAttributeNS(null,"style","display: none;"),IconsManager.symbolsContainer.setAttributeNS(null,"class",e),document.body.appendChild(IconsManager.symbolsContainer))}}createSvgElement(e,{path:t,width:n,height:s}){const o=this.prefix+e,r="#"+this.prefix+e;if(!IconsManager.iconsUsageList.includes(o)){if(!IconsManager.symbolsContainer.querySelector(r)){const e=document.createElementNS("http://www.w3.org/2000/svg","symbol");e.id=o,e.innerHTML='<path d="'+t+'"></path>',e.setAttributeNS(null,"viewBox","0 0 "+n+" "+s),IconsManager.symbolsContainer.appendChild(e)}IconsManager.iconsUsageList.push(o)}const l=document.createElementNS("http://www.w3.org/2000/svg","svg");return l.innerHTML='<use xlink:href="'+r+'" />',l.setAttributeNS(null,"class","e-font-icon-svg e-"+o),l}}t.default=IconsManager,(0,o.default)(IconsManager,"symbolsContainer",void 0),(0,o.default)(IconsManager,"iconsUsageList",[])},556:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("animated-headline",(()=>n.e(26).then(n.bind(n,7750))))}}t.default=_default},4113:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("media-carousel",(()=>n.e(534).then(n.bind(n,7393)))),elementorFrontend.elementsHandler.attachHandler("testimonial-carousel",(()=>n.e(369).then(n.bind(n,1507)))),elementorFrontend.elementsHandler.attachHandler("reviews",(()=>n.e(369).then(n.bind(n,1507))))}}t.default=_default},2398:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("countdown",(()=>n.e(804).then(n.bind(n,7097))))}}t.default=_default},3524:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("form",[()=>n.e(680).then(n.bind(n,9706)),()=>n.e(680).then(n.bind(n,7300)),()=>n.e(680).then(n.bind(n,611)),()=>n.e(680).then(n.bind(n,4610)),()=>n.e(680).then(n.bind(n,9228)),()=>n.e(680).then(n.bind(n,6374))]),elementorFrontend.elementsHandler.attachHandler("subscribe",[()=>n.e(680).then(n.bind(n,9706)),()=>n.e(680).then(n.bind(n,7300)),()=>n.e(680).then(n.bind(n,611))])}}t.default=_default},676:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("gallery",(()=>n.e(121).then(n.bind(n,5357))))}}t.default=_default},3615:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("hotspot",(()=>n.e(888).then(n.bind(n,9556))))}}t.default=_default},5169:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("lottie",(()=>n.e(288).then(n.bind(n,4927))))}}t.default=_default},6852:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),jQuery.fn.smartmenus&&(jQuery.SmartMenus.prototype.isCSSOn=function(){return!0},elementorFrontend.config.is_rtl&&(jQuery.fn.smartmenus.defaults.rightToLeftSubMenus=!0)),elementorFrontend.elementsHandler.attachHandler("nav-menu",(()=>n.e(42).then(n.bind(n,5389))))}}t.default=_default},2731:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(9545)),r=s(n(4339)),l=n(2993);class _default extends elementorModules.frontend.Document{bindEvents(){const e=this.getDocumentSettings("open_selector");e&&elementorFrontend.elements.$body.on("click",e,this.showModal.bind(this))}startTiming(){new r.default(this.getDocumentSettings("timing"),this).check()&&this.initTriggers()}initTriggers(){this.triggers=new o.default(this.getDocumentSettings("triggers"),this)}showModal(e){const t=this.getDocumentSettings();if(!this.isEdit){if(!elementorFrontend.isWPPreviewMode()){if(this.getStorage("disable"))return;if(e&&elementorProFrontend.modules.popup.popupPopped&&t.avoid_multiple_popups)return}this.$element=jQuery(this.elementHTML),this.elements.$elements=this.$element.find(this.getSettings("selectors.elements"))}const n=this.getModal(),s=n.getElements("closeButton");n.setMessage(this.$element).show(),this.isEdit||(t.close_button_delay&&(s.hide(),clearTimeout(this.closeButtonTimeout),this.closeButtonTimeout=setTimeout((()=>s.show()),1e3*t.close_button_delay)),super.runElementsHandlers()),this.setEntranceAnimation(),t.timing&&t.timing.times_count||this.countTimes(),elementorProFrontend.modules.popup.popupPopped=!0}setEntranceAnimation(){const e=this.getModal().getElements("widgetContent"),t=this.getDocumentSettings(),n=elementorFrontend.getCurrentDeviceSetting(t,"entrance_animation");if(this.currentAnimation&&e.removeClass(this.currentAnimation),this.currentAnimation=n,!n)return;const s=t.entrance_animation_duration.size;e.addClass(n),setTimeout((()=>e.removeClass(n)),1e3*s)}setExitAnimation(){const e=this.getModal(),t=this.getDocumentSettings(),n=e.getElements("widgetContent"),s=elementorFrontend.getCurrentDeviceSetting(t,"exit_animation"),o=s?t.entrance_animation_duration.size:0;setTimeout((()=>{s&&n.removeClass(s+" reverse"),this.isEdit||(this.$element.remove(),e.getElements("widget").hide())}),1e3*o),s&&n.addClass(s+" reverse")}initModal(){let e;this.getModal=()=>{if(!e){const t=this.getDocumentSettings(),n=this.getSettings("id"),triggerPopupEvent=e=>elementorFrontend.elements.$document.trigger("elementor/popup/"+e,[n,this]);let s="elementor-popup-modal";t.classes&&(s+=" "+t.classes);const o={id:"elementor-popup-modal-"+n,className:s,closeButton:!0,preventScroll:t.prevent_scroll,onShow:()=>triggerPopupEvent("show"),onHide:()=>triggerPopupEvent("hide"),effects:{hide:()=>{t.timing&&t.timing.times_count&&this.countTimes(),this.setExitAnimation()},show:"show"},hide:{auto:!!t.close_automatically,autoDelay:1e3*t.close_automatically,onBackgroundClick:!t.prevent_close_on_background_click,onOutsideClick:!t.prevent_close_on_background_click,onEscKeyPress:!t.prevent_close_on_esc_key,ignore:".flatpickr-calendar"},position:{enable:!1}};elementorFrontend.config.experimentalFeatures.e_font_icon_svg&&(o.closeButtonOptions={iconElement:l.close.element}),o.closeButtonClass="eicon-close",e=elementorFrontend.getDialogsManager().createWidget("lightbox",o),e.getElements("widgetContent").addClass("animated");const r=e.getElements("closeButton");this.isEdit&&(r.off("click"),e.hide=()=>{}),this.setCloseButtonPosition()}return e}}setCloseButtonPosition(){const e=this.getModal(),t=this.getDocumentSettings("close_button_position");e.getElements("closeButton").appendTo(e.getElements("outside"===t?"widget":"widgetContent"))}disable(){this.setStorage("disable",!0)}setStorage(e,t,n){elementorFrontend.storage.set(`popup_${this.getSettings("id")}_${e}`,t,n)}getStorage(e,t){return elementorFrontend.storage.get(`popup_${this.getSettings("id")}_${e}`,t)}countTimes(){const e=this.getStorage("times")||0;this.setStorage("times",e+1)}runElementsHandlers(){}async onInit(){super.onInit(),window.DialogsManager||await elementorFrontend.utils.assetsLoader.load("script","dialog"),this.initModal(),this.isEdit?this.showModal():(this.$element.show().remove(),this.elementHTML=this.$element[0].outerHTML,elementorFrontend.isEditMode()||(elementorFrontend.isWPPreviewMode()&&elementorFrontend.config.post.id===this.getSettings("id")?this.showModal():this.startTiming()))}onSettingsChange(e){const t=Object.keys(e.changed)[0];-1!==t.indexOf("entrance_animation")&&this.setEntranceAnimation(),"exit_animation"===t&&this.setExitAnimation(),"close_button_position"===t&&this.setCloseButtonPosition()}}t.default=_default},9047:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(2731));class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.hooks.addAction("elementor/frontend/documents-manager/init-classes",this.addDocumentClass),elementorFrontend.elementsHandler.attachHandler("form",(()=>n.e(50).then(n.bind(n,3573)))),elementorFrontend.on("components:init",(()=>this.onFrontendComponentsInit())),elementorFrontend.isEditMode()||elementorFrontend.isWPPreviewMode()||this.setViewsAndSessions()}addDocumentClass(e){e.addDocumentClass("popup",o.default)}setViewsAndSessions(){const e=elementorFrontend.storage.get("pageViews")||0;elementorFrontend.storage.set("pageViews",e+1);if(!elementorFrontend.storage.get("activeSession",{session:!0})){elementorFrontend.storage.set("activeSession",!0,{session:!0});const e=elementorFrontend.storage.get("sessions")||0;elementorFrontend.storage.set("sessions",e+1)}}showPopup(e){const t=elementorFrontend.documentsManager.documents[e.id];if(!t)return;const n=t.getModal();e.toggle&&n.isVisible()?n.hide():t.showModal()}closePopup(e,t){const n=jQuery(t.target).parents('[data-elementor-type="popup"]').data("elementorId");if(!n)return;const s=elementorFrontend.documentsManager.documents[n];s.getModal().hide(),e.do_not_show_again&&s.disable()}onFrontendComponentsInit(){elementorFrontend.utils.urlActions.addAction("popup:open",(e=>this.showPopup(e))),elementorFrontend.utils.urlActions.addAction("popup:close",((e,t)=>this.closePopup(e,t)))}}t.default=_default},4339:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(275)),r=s(n(1795)),l=s(n(2894)),i=s(n(1306)),a=s(n(9912)),d=s(n(3245)),u=s(n(6850)),c=s(n(8937));class _default extends elementorModules.Module{constructor(e,t){super(e),this.document=t,this.timingClasses={page_views:o.default,sessions:r.default,url:l.default,sources:i.default,logged_in:a.default,devices:d.default,times:u.default,browsers:c.default}}check(){const e=this.getSettings();let t=!0;return jQuery.each(this.timingClasses,((n,s)=>{if(!e[n])return;new s(e,this.document).check()||(t=!1)})),t}}t.default=_default},3565:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(e,t){super(e),this.document=t}getTimingSetting(e){return this.getSettings(this.getName()+"_"+e)}}t.default=_default},8937:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(3565));class _default extends o.default{getName(){return"browsers"}check(){if("all"===this.getTimingSetting("browsers"))return!0;const e=this.getTimingSetting("browsers_options"),t=elementorFrontend.utils.environment;return e.some((e=>t[e]))}}t.default=_default},3245:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(3565));class _default extends o.default{getName(){return"devices"}check(){return-1!==this.getTimingSetting("devices").indexOf(elementorFrontend.getCurrentDeviceMode())}}t.default=_default},9912:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(3565));class _default extends o.default{getName(){return"logged_in"}check(){const e=elementorFrontend.config.user;if(!e)return!0;if("all"===this.getTimingSetting("users"))return!1;return!this.getTimingSetting("roles").filter((t=>-1!==e.roles.indexOf(t))).length}}t.default=_default},275:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(3565));class _default extends o.default{getName(){return"page_views"}check(){const e=elementorFrontend.storage.get("pageViews"),t=this.getName();let n=this.document.getStorage(t+"_initialPageViews");return n||(this.document.setStorage(t+"_initialPageViews",e),n=e),e-n>=this.getTimingSetting("views")}}t.default=_default},1795:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(3565));class _default extends o.default{getName(){return"sessions"}check(){const e=elementorFrontend.storage.get("sessions"),t=this.getName();let n=this.document.getStorage(t+"_initialSessions");return n||(this.document.setStorage(t+"_initialSessions",e),n=e),e-n>=this.getTimingSetting("sessions")}}t.default=_default},1306:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(3565));class _default extends o.default{getName(){return"sources"}check(){const e=this.getTimingSetting("sources");if(3===e.length)return!0;const t=document.referrer.replace(/https?:\/\/(?:www\.)?/,"");return 0===t.indexOf(location.host.replace("www.",""))?-1!==e.indexOf("internal"):-1!==e.indexOf("external")||-1!==e.indexOf("search")&&/^(google|yahoo|bing|yandex|baidu)\./.test(t)}}t.default=_default},6850:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(3565));class _default extends o.default{getName(){return"times"}check(){const e=this.document.getStorage("times")||0;return this.getTimingSetting("times")>e}}t.default=_default},2894:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(3565));class _default extends o.default{getName(){return"url"}check(){const e=this.getTimingSetting("url"),t=this.getTimingSetting("action"),n=document.referrer;if("regex"!==t)return"hide"===t^-1!==n.indexOf(e);let s;try{s=new RegExp(e)}catch(e){return!1}return s.test(n)}}t.default=_default},9545:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(974)),r=s(n(8330)),l=s(n(1220)),i=s(n(9863)),a=s(n(1055)),d=s(n(9972));class _default extends elementorModules.Module{constructor(e,t){super(e),this.document=t,this.triggers=[],this.triggerClasses={page_load:o.default,scrolling:r.default,scrolling_to:l.default,click:i.default,inactivity:a.default,exit_intent:d.default},this.runTriggers()}runTriggers(){const e=this.getSettings();jQuery.each(this.triggerClasses,((t,n)=>{if(!e[t])return;const s=new n(e,(()=>this.onTriggerFired()));s.run(),this.triggers.push(s)}))}destroyTriggers(){this.triggers.forEach((e=>e.destroy())),this.triggers=[]}onTriggerFired(){this.document.showModal(!0),this.destroyTriggers()}}t.default=_default},144:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(e,t){super(e),this.callback=t}getTriggerSetting(e){return this.getSettings(this.getName()+"_"+e)}}t.default=_default},9863:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(144));class _default extends o.default{constructor(...e){super(...e),this.checkClick=this.checkClick.bind(this),this.clicksCount=0}getName(){return"click"}checkClick(){this.clicksCount++,this.clicksCount===this.getTriggerSetting("times")&&this.callback()}run(){elementorFrontend.elements.$body.on("click",this.checkClick)}destroy(){elementorFrontend.elements.$body.off("click",this.checkClick)}}t.default=_default},9972:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(144));class _default extends o.default{constructor(...e){super(...e),this.detectExitIntent=this.detectExitIntent.bind(this)}getName(){return"exit_intent"}detectExitIntent(e){e.clientY<=0&&this.callback()}run(){elementorFrontend.elements.$window.on("mouseleave",this.detectExitIntent)}destroy(){elementorFrontend.elements.$window.off("mouseleave",this.detectExitIntent)}}t.default=_default},1055:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(144));class _default extends o.default{constructor(...e){super(...e),this.restartTimer=this.restartTimer.bind(this)}getName(){return"inactivity"}run(){this.startTimer(),elementorFrontend.elements.$document.on("keypress mousemove",this.restartTimer)}startTimer(){this.timeOut=setTimeout(this.callback,1e3*this.getTriggerSetting("time"))}clearTimer(){clearTimeout(this.timeOut)}restartTimer(){this.clearTimer(),this.startTimer()}destroy(){this.clearTimer(),elementorFrontend.elements.$document.off("keypress mousemove",this.restartTimer)}}t.default=_default},974:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(144));class _default extends o.default{getName(){return"page_load"}run(){this.timeout=setTimeout(this.callback,1e3*this.getTriggerSetting("delay"))}destroy(){clearTimeout(this.timeout)}}t.default=_default},1220:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(144));class _default extends o.default{getName(){return"scrolling_to"}run(){let e;try{e=jQuery(this.getTriggerSetting("selector"))}catch(e){return}this.waypointInstance=elementorFrontend.waypoint(e,this.callback)[0]}destroy(){this.waypointInstance&&this.waypointInstance.destroy()}}t.default=_default},8330:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=s(n(144));class _default extends o.default{constructor(...e){super(...e),this.checkScroll=this.checkScroll.bind(this),this.lastScrollOffset=0}getName(){return"scrolling"}checkScroll(){const e=scrollY>this.lastScrollOffset?"down":"up",t=this.getTriggerSetting("direction");if(this.lastScrollOffset=scrollY,e!==t)return;if("up"===e)return void this.callback();const n=elementorFrontend.elements.$document.height()-innerHeight;scrollY/n*100>=this.getTriggerSetting("offset")&&this.callback()}run(){elementorFrontend.elements.$window.on("scroll",this.checkScroll)}destroy(){elementorFrontend.elements.$window.off("scroll",this.checkScroll)}}t.default=_default},6463:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),["classic","full_content","cards"].forEach((e=>{elementorFrontend.elementsHandler.attachHandler("posts",(()=>n.e(985).then(n.bind(n,9738))),e)})),elementorFrontend.elementsHandler.attachHandler("posts",(()=>n.e(287).then(n.bind(n,2926))),"classic"),elementorFrontend.elementsHandler.attachHandler("posts",(()=>n.e(287).then(n.bind(n,2926))),"full_content"),elementorFrontend.elementsHandler.attachHandler("posts",(()=>n.e(287).then(n.bind(n,8014))),"cards"),elementorFrontend.elementsHandler.attachHandler("portfolio",(()=>n.e(824).then(n.bind(n,2763))))}}t.default=_default},7133:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("share-buttons",(()=>n.e(58).then(n.bind(n,9327))))}}t.default=_default},1871:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("slides",(()=>n.e(114).then(n.bind(n,7956))))}}t.default=_default},3781:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("facebook-button",(()=>n.e(443).then(n.bind(n,908)))),elementorFrontend.elementsHandler.attachHandler("facebook-comments",(()=>n.e(443).then(n.bind(n,908)))),elementorFrontend.elementsHandler.attachHandler("facebook-embed",(()=>n.e(443).then(n.bind(n,908)))),elementorFrontend.elementsHandler.attachHandler("facebook-page",(()=>n.e(443).then(n.bind(n,908))))}}t.default=_default},7786:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("table-of-contents",(()=>n.e(838).then(n.bind(n,5791))))}}t.default=_default},7466:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),["archive_classic","archive_full_content","archive_cards"].forEach((e=>{elementorFrontend.elementsHandler.attachHandler("archive-posts",(()=>n.e(685).then(n.bind(n,2231))),e)})),elementorFrontend.elementsHandler.attachHandler("archive-posts",(()=>n.e(685).then(n.bind(n,3824))),"archive_classic"),elementorFrontend.elementsHandler.attachHandler("archive-posts",(()=>n.e(685).then(n.bind(n,3824))),"archive_full_content"),elementorFrontend.elementsHandler.attachHandler("archive-posts",(()=>n.e(685).then(n.bind(n,7177))),"archive_cards"),jQuery((function(){var e=location.search.match(/theme_template_id=(\d*)/),t=e?jQuery(".elementor-"+e[1]):[];t.length&&jQuery("html, body").animate({scrollTop:t.offset().top-window.innerHeight/2})}))}}t.default=_default},4173:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("search-form",(()=>n.e(858).then(n.bind(n,188))))}}t.default=_default},1273:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("woocommerce-menu-cart",(()=>n.e(102).then(n.bind(n,9428)))),elementorFrontend.elementsHandler.attachHandler("woocommerce-checkout-page",(()=>n.e(124).then(n.bind(n,9903)))),elementorFrontend.elementsHandler.attachHandler("woocommerce-cart",(()=>n.e(859).then(n.bind(n,3898)))),elementorFrontend.elementsHandler.attachHandler("woocommerce-my-account",(()=>n.e(979).then(n.bind(n,4838))))}}t.default=_default}},e=>{"use strict";e.O(0,[819],(()=>{return t=7319,e(e.s=t);var t}));e.O()}]);assets/js/gallery.6af8f19f91f1b16c3ab6.bundle.min.js000064400000013154150755004310015477 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[121],{5357:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class galleryHandler extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{container:".elementor-gallery__container",galleryTitles:".elementor-gallery-title",galleryImages:".e-gallery-image",galleryItemOverlay:".elementor-gallery-item__overlay",galleryItemContent:".elementor-gallery-item__content"},classes:{activeTitle:"elementor-item-active"}}}getDefaultElements(){const{selectors:e}=this.getSettings(),t={$container:this.$element.find(e.container),$titles:this.$element.find(e.galleryTitles)};return t.$items=t.$container.children(),t.$images=t.$items.children(e.galleryImages),t.$itemsOverlay=t.$items.children(e.galleryItemOverlay),t.$itemsContent=t.$items.children(e.galleryItemContent),t.$itemsContentElements=t.$itemsContent.children(),t}getGallerySettings(){const e=this.getElementSettings(),t=elementorFrontend.config.responsive.activeBreakpoints,n=Object.keys(t),i={},a=elementorFrontend.getDeviceSetting("desktop",e,"ideal_row_height");return n.forEach((n=>{if("widescreen"!==n){const a=elementorFrontend.getDeviceSetting(n,e,"ideal_row_height");i[t[n].value]={horizontalGap:elementorFrontend.getDeviceSetting(n,e,"gap").size,verticalGap:elementorFrontend.getDeviceSetting(n,e,"gap").size,columns:elementorFrontend.getDeviceSetting(n,e,"columns"),idealRowHeight:null==a?void 0:a.size}}})),{type:e.gallery_layout,idealRowHeight:null==a?void 0:a.size,container:this.elements.$container,columns:e.columns,aspectRatio:e.aspect_ratio,lastRow:"normal",horizontalGap:elementorFrontend.getDeviceSetting("desktop",e,"gap").size,verticalGap:elementorFrontend.getDeviceSetting("desktop",e,"gap").size,animationDuration:e.content_animation_duration,breakpoints:i,rtl:elementorFrontend.config.is_rtl,lazyLoad:"yes"===e.lazyload}}initGallery(){this.gallery=new EGallery(this.getGallerySettings()),this.toggleAllAnimationsClasses()}removeAnimationClasses(e){e.removeClass(((e,t)=>(t.match(/elementor-animated-item-\S+/g)||[]).join(" ")))}toggleOverlayHoverAnimation(){this.removeAnimationClasses(this.elements.$itemsOverlay);const e=this.getElementSettings("background_overlay_hover_animation");e&&this.elements.$itemsOverlay.addClass("elementor-animated-item--"+e)}toggleOverlayContentAnimation(){this.removeAnimationClasses(this.elements.$itemsContentElements);const e=this.getElementSettings("content_hover_animation");e&&this.elements.$itemsContentElements.addClass("elementor-animated-item--"+e)}toggleOverlayContentSequencedAnimation(){this.elements.$itemsContent.toggleClass("elementor-gallery--sequenced-animation","yes"===this.getElementSettings("content_sequenced_animation"))}toggleImageHoverAnimation(){const e=this.getElementSettings("image_hover_animation");this.removeAnimationClasses(this.elements.$images),e&&this.elements.$images.addClass("elementor-animated-item--"+e)}toggleAllAnimationsClasses(){const e=this.getElementSettings(),t=e.background_overlay_hover_animation||e.content_hover_animation||e.image_hover_animation;this.elements.$items.toggleClass("elementor-animated-content",!!t),this.toggleImageHoverAnimation(),this.toggleOverlayHoverAnimation(),this.toggleOverlayContentAnimation(),this.toggleOverlayContentSequencedAnimation()}toggleAnimationClasses(e){"content_sequenced_animation"===e&&this.toggleOverlayContentSequencedAnimation(),"background_overlay_hover_animation"===e&&this.toggleOverlayHoverAnimation(),"content_hover_animation"===e&&this.toggleOverlayContentAnimation(),"image_hover_animation"===e&&this.toggleImageHoverAnimation()}setGalleryTags(e){this.gallery.setSettings("tags","all"===e?[]:[""+e])}bindEvents(){this.elements.$titles.on("click",this.galleriesNavigationListener.bind(this))}galleriesNavigationListener(e){const t=this.getSettings("classes"),n=jQuery(e.target);this.elements.$titles.removeClass(t.activeTitle),n.addClass(t.activeTitle),this.setGalleryTags(n.data("gallery-index"));setTimeout((()=>this.setLightboxGalleryIndex(n.data("gallery-index"))),1e3)}setLightboxGalleryIndex(e="all"){if("all"===e)return this.elements.$items.attr("data-elementor-lightbox-slideshow","all_"+this.getID());this.elements.$items.not(".e-gallery-item--hidden").attr("data-elementor-lightbox-slideshow",e+"_"+this.getID())}onInit(...e){super.onInit(...e),elementorFrontend.isEditMode()&&1<=this.$element.find(".elementor-widget-empty-icon").length&&this.$element.addClass("elementor-widget-empty"),this.elements.$container.length&&(this.initGallery(),this.elements.$titles.first().trigger("click"))}getSettingsDictionary(){if(this.settingsDictionary)return this.settingsDictionary;const e=elementorFrontend.config.responsive.activeBreakpoints,t=Object.keys(e),n={columns:["columns"],gap:["horizontalGap","verticalGap"],ideal_row_height:["idealRowHeight"]};return t.forEach((t=>{"widescreen"!==t&&(n["columns_"+t]=["breakpoints."+e[t].value+".columns"],n["gap_"+t]=["breakpoints."+e[t].value+".horizontalGap","breakpoints."+e[t].value+".verticalGap"],n["ideal_row_height_"+t]=["breakpoints."+e[t].value+".idealRowHeight"])})),n.aspect_ratio=["aspectRatio"],this.settingsDictionary=n,this.settingsDictionary}onElementChange(e){if(-1!==["background_overlay_hover_animation","content_hover_animation","image_hover_animation","content_sequenced_animation"].indexOf(e))return void this.toggleAnimationClasses(e);const t=this.getSettingsDictionary()[e];if(t){const e=this.getGallerySettings();t.forEach((t=>{this.gallery.setSettings(t,this.getItems(e,t))}))}}onDestroy(){super.onDestroy(),this.gallery&&this.gallery.destroy()}}t.default=galleryHandler}}]);assets/js/paypal-button.21471ef12592606560a0.bundle.min.js000064400000001547150755004310016163 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[256],{9593:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class PayPalHandler extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{button:".elementor-button.elementor-paypal-legacy",errors:".elementor-message-danger"}}}getDefaultElements(){const e=this.getSettings();return{wrapper:this.$element[0],button:this.$element[0].querySelector(e.selectors.button),errors:this.$element[0].querySelectorAll(e.selectors.errors)}}handleClick(e){0<this.elements.errors.length&&(e.preventDefault(),this.elements.errors.forEach((e=>{e.classList.remove("elementor-hidden")})))}bindEvents(){this.elements.button.addEventListener("click",this.handleClick.bind(this))}}t.default=PayPalHandler}}]);assets/js/jszip.vendor.9ec53381c344ee903f3e.bundle.min.js.LICENSE.txt000064400000000602150755004310020227 0ustar00/*!

JSZip v3.6.0 - A JavaScript class for generating and reading zip files
<http://stuartk.com/jszip>

(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.

JSZip uses the library pako released under the MIT license :
https://github.com/nodeca/pako/blob/master/LICENSE
*/
assets/js/woocommerce-checkout-page.ca82a3335f2823da4209.bundle.min.js000064400000014235150755004310020637 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[124],{427:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class Base extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{stickyRightColumn:".e-sticky-right-column"},classes:{stickyRightColumnActive:"e-sticky-right-column--active"}}}getDefaultElements(){const e=this.getSettings("selectors");return{$stickyRightColumn:this.$element.find(e.stickyRightColumn)}}bindEvents(){elementorFrontend.elements.$document.on("select2:open",(e=>{this.addSelect2Wrapper(e)}))}addSelect2Wrapper(e){const t=jQuery(e.target).data("select2");t.$dropdown&&t.$dropdown.addClass("e-woo-select2-wrapper")}isStickyRightColumnActive(){const e=this.getSettings("classes");return this.elements.$stickyRightColumn.hasClass(e.stickyRightColumnActive)}activateStickyRightColumn(){const e=this.getElementSettings(),t=elementorFrontend.elements.$wpAdminBar,o=this.getSettings("classes");let n=e.sticky_right_column_offset||0;t.length&&"fixed"===t.css("position")&&(n+=t.height()),"yes"===this.getElementSettings("sticky_right_column")&&(this.elements.$stickyRightColumn.addClass(o.stickyRightColumnActive),this.elements.$stickyRightColumn.css("top",n+"px"))}deactivateStickyRightColumn(){if(!this.isStickyRightColumnActive())return;const e=this.getSettings("classes");this.elements.$stickyRightColumn.removeClass(e.stickyRightColumnActive)}toggleStickyRightColumn(){this.getElementSettings("sticky_right_column")?this.isStickyRightColumnActive()||this.activateStickyRightColumn():this.deactivateStickyRightColumn()}equalizeElementHeight(e){if(e.length){e.removeAttr("style");let t=0;e.each(((e,o)=>{t=Math.max(t,o.offsetHeight)})),0<t&&e.css({height:t+"px"})}}}t.default=Base},9903:(e,t,o)=>{"use strict";var n=o(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=n(o(427));class Checkout extends s.default{getDefaultSettings(...e){const t=super.getDefaultSettings(...e);return{selectors:{...t.selectors,container:".elementor-widget-woocommerce-checkout-page",loginForm:".e-woocommerce-login-anchor",loginSubmit:".e-woocommerce-form-login-submit",loginSection:".e-woocommerce-login-section",showCouponForm:".e-show-coupon-form",couponSection:".e-coupon-anchor",showLoginForm:".e-show-login",applyCoupon:".e-apply-coupon",checkoutForm:"form.woocommerce-checkout",couponBox:".e-coupon-box",address:"address",wpHttpRefererInputs:'[name="_wp_http_referer"]'},classes:t.classes,ajaxUrl:elementorProFrontend.config.ajaxurl}}getDefaultElements(...e){const t=this.getSettings("selectors");return{...super.getDefaultElements(...e),$container:this.$element.find(t.container),$loginForm:this.$element.find(t.loginForm),$showCouponForm:this.$element.find(t.showCouponForm),$couponSection:this.$element.find(t.couponSection),$showLoginForm:this.$element.find(t.showLoginForm),$applyCoupon:this.$element.find(t.applyCoupon),$loginSubmit:this.$element.find(t.loginSubmit),$couponBox:this.$element.find(t.couponBox),$checkoutForm:this.$element.find(t.checkoutForm),$loginSection:this.$element.find(t.loginSection),$address:this.$element.find(t.address)}}bindEvents(...e){super.bindEvents(...e),this.elements.$showCouponForm.on("click",(e=>{e.preventDefault(),this.elements.$couponSection.slideToggle()})),this.elements.$showLoginForm.on("click",(e=>{e.preventDefault(),this.elements.$loginForm.slideToggle()})),this.elements.$applyCoupon.on("click",(e=>{e.preventDefault(),this.applyCoupon()})),this.elements.$loginSubmit.on("click",(e=>{e.preventDefault(),this.loginUser()})),elementorFrontend.elements.$body.on("updated_checkout",(()=>{this.applyPurchaseButtonHoverAnimation(),this.updateWpReferers()}))}onInit(...e){super.onInit(...e),this.toggleStickyRightColumn(),this.updateWpReferers(),this.equalizeElementHeight(this.elements.$address),elementorFrontend.isEditMode()&&(this.elements.$loginForm.show(),this.elements.$couponSection.show(),this.applyPurchaseButtonHoverAnimation())}onElementChange(e){"sticky_right_column"===e&&this.toggleStickyRightColumn()}onDestroy(...e){super.onDestroy(...e),this.deactivateStickyRightColumn()}applyPurchaseButtonHoverAnimation(){const e=this.getElementSettings("purchase_button_hover_animation");e&&jQuery("#place_order").addClass("elementor-animation-"+e)}applyCoupon(){if(!wc_checkout_params)return;this.startProcessing(this.elements.$couponBox);const e={security:wc_checkout_params.apply_coupon_nonce,coupon_code:this.elements.$couponBox.find('input[name="coupon_code"]').val()};jQuery.ajax({type:"POST",url:wc_checkout_params.wc_ajax_url.toString().replace("%%endpoint%%","apply_coupon"),context:this,data:e,success(t){jQuery(".woocommerce-error, .woocommerce-message").remove(),this.elements.$couponBox.removeClass("processing").unblock(),t&&(this.elements.$checkoutForm.before(t),this.elements.$couponSection.slideUp(),elementorFrontend.elements.$body.trigger("applied_coupon_in_checkout",[e.coupon_code]),elementorFrontend.elements.$body.trigger("update_checkout",{update_shipping_method:!1}))},dataType:"html"})}loginUser(){this.startProcessing(this.elements.$loginSection);const e={action:"elementor_woocommerce_checkout_login_user",username:this.elements.$loginSection.find('input[name="username"]').val(),password:this.elements.$loginSection.find('input[name="password"]').val(),nonce:this.elements.$loginSection.find('input[name="woocommerce-login-nonce"]').val(),remember:this.elements.$loginSection.find("input#rememberme").prop("checked")};jQuery.ajax({type:"POST",url:this.getSettings("ajaxUrl"),context:this,data:e,success(e){e=JSON.parse(e),this.elements.$loginSection.removeClass("processing").unblock();jQuery(".woocommerce-error, .woocommerce-message").remove(),e.logged_in?location.reload():this.elements.$checkoutForm.before(e.message)}})}startProcessing(e){e.is(".processing")||e.addClass("processing").block({message:null,overlayCSS:{background:"#fff",opacity:.6}})}updateWpReferers(){const e=this.getSettings("selectors"),t=this.$element.find(e.wpHttpRefererInputs),o=new URL(document.location);o.searchParams.set("elementorPostId",elementorFrontend.config.post.id),o.searchParams.set("elementorWidgetId",this.getID()),t.attr("value",o)}}t.default=Checkout}}]);assets/js/woocommerce-menu-cart.4c85f15cfbc02b4718c9.bundle.min.js000064400000005456150755004310020174 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[102],{9428:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{container:".elementor-menu-cart__container",main:".elementor-menu-cart__main",toggle:".elementor-menu-cart__toggle",toggleButton:"#elementor-menu-cart__toggle_button",toggleWrapper:".elementor-menu-cart__toggle_wrapper",closeButton:".elementor-menu-cart__close-button"},classes:{isShown:"elementor-menu-cart--shown"}}}getDefaultElements(){const e=this.getSettings("selectors");return{$container:this.$element.find(e.container),$main:this.$element.find(e.main),$toggleWrapper:this.$element.find(e.toggleWrapper),$closeButton:this.$element.find(e.closeButton)}}toggleCart(){this.isCartOpen?this.hideCart():this.showCart()}showCart(){if(this.isCartOpen)return;const e=this.getSettings("classes"),t=this.getSettings("selectors");this.isCartOpen=!0,this.$element.addClass(e.isShown),this.$element.find(t.toggleButton).attr("aria-expanded",!0),this.elements.$main.attr("aria-hidden",!1),this.elements.$container.attr("aria-hidden",!1)}hideCart(){if(!this.isCartOpen)return;const e=this.getSettings("classes"),t=this.getSettings("selectors");this.isCartOpen=!1,this.$element.removeClass(e.isShown),this.$element.find(t.toggleButton).attr("aria-expanded",!1),this.elements.$main.attr("aria-hidden",!0),this.elements.$container.attr("aria-hidden",!0)}automaticallyOpenCart(){"yes"===this.getElementSettings().automatically_open_cart&&this.showCart()}bindEvents(){const e=elementorProFrontend.config.menu_cart,t=-1===e.cart_page_url.indexOf("?")?window.location.origin+window.location.pathname:window.location.href,n=e.cart_page_url,s=e.cart_page_url===t,i=e.checkout_page_url===t,o=this.getSettings("selectors"),r=this.getElementSettings(),a=this.getSettings("classes");s&&i?this.$element.find(o.toggleButton).attr("href",n):(this.isCartOpen=this.$element.hasClass(a.isShown),"mouseover"===r.open_cart?(this.elements.$toggleWrapper.on("mouseover click",o.toggleButton,(e=>{e.preventDefault(),this.showCart()})),this.elements.$toggleWrapper.on("mouseleave",(()=>this.hideCart()))):this.elements.$toggleWrapper.on("click",o.toggleButton,(e=>{e.preventDefault(),this.toggleCart()})),elementorFrontend.elements.$document.on("click",(e=>{if(!this.isCartOpen)return;const t=jQuery(e.target);t.closest(this.elements.$main).length||t.closest(o.toggle).length||this.hideCart()})),this.elements.$closeButton.on("click",(e=>{e.preventDefault(),this.hideCart()})),elementorFrontend.elements.$document.on("keyup",(e=>{27===e.keyCode&&this.hideCart()})),elementorFrontend.elements.$body.on("added_to_cart",(()=>this.automaticallyOpenCart())))}}t.default=_default}}]);assets/js/woocommerce-cart.39ccd7e510e98f3afb01.bundle.js000064400000022031150755004310016513 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["woocommerce-cart"],{

/***/ "../modules/woocommerce/assets/js/frontend/handlers/base.js":
/*!******************************************************************!*\
  !*** ../modules/woocommerce/assets/js/frontend/handlers/base.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class Base extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        stickyRightColumn: '.e-sticky-right-column'
      },
      classes: {
        stickyRightColumnActive: 'e-sticky-right-column--active'
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors');
    return {
      $stickyRightColumn: this.$element.find(selectors.stickyRightColumn)
    };
  }

  bindEvents() {
    // Add our wrapper class around the select2 whenever it is opened.
    elementorFrontend.elements.$document.on('select2:open', event => {
      this.addSelect2Wrapper(event);
    });
  }

  addSelect2Wrapper(event) {
    // The select element is recaptured every time because the markup can refresh
    const selectElement = jQuery(event.target).data('select2');

    if (selectElement.$dropdown) {
      selectElement.$dropdown.addClass('e-woo-select2-wrapper');
    }
  }

  isStickyRightColumnActive() {
    const classes = this.getSettings('classes');
    return this.elements.$stickyRightColumn.hasClass(classes.stickyRightColumnActive);
  }

  activateStickyRightColumn() {
    const elementSettings = this.getElementSettings(),
          $wpAdminBar = elementorFrontend.elements.$wpAdminBar,
          classes = this.getSettings('classes');
    let stickyOptionsOffset = elementSettings.sticky_right_column_offset || 0;

    if ($wpAdminBar.length && 'fixed' === $wpAdminBar.css('position')) {
      stickyOptionsOffset += $wpAdminBar.height();
    }

    if ('yes' === this.getElementSettings('sticky_right_column')) {
      this.elements.$stickyRightColumn.addClass(classes.stickyRightColumnActive);
      this.elements.$stickyRightColumn.css('top', stickyOptionsOffset + 'px');
    }
  }

  deactivateStickyRightColumn() {
    if (!this.isStickyRightColumnActive()) {
      return;
    }

    const classes = this.getSettings('classes');
    this.elements.$stickyRightColumn.removeClass(classes.stickyRightColumnActive);
  }
  /**
   * Activates the sticky column
   *
   * @return {void}
   */


  toggleStickyRightColumn() {
    if (!this.getElementSettings('sticky_right_column')) {
      this.deactivateStickyRightColumn();
      return;
    }

    if (!this.isStickyRightColumnActive()) {
      this.activateStickyRightColumn();
    }
  }

  equalizeElementHeight($element) {
    if ($element.length) {
      $element.removeAttr('style'); // first remove the custom height we added so that the new height can be re-calculated according to the content

      let maxHeight = 0;
      $element.each((index, element) => {
        maxHeight = Math.max(maxHeight, element.offsetHeight);
      });

      if (0 < maxHeight) {
        $element.css({
          height: maxHeight + 'px'
        });
      }
    }
  }

}

exports.default = Base;

/***/ }),

/***/ "../modules/woocommerce/assets/js/frontend/handlers/cart.js":
/*!******************************************************************!*\
  !*** ../modules/woocommerce/assets/js/frontend/handlers/cart.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/woocommerce/assets/js/frontend/handlers/base.js"));

class Cart extends _base.default {
  getDefaultSettings(...args) {
    const defaultSettings = super.getDefaultSettings(...args);
    return {
      selectors: { ...defaultSettings.selectors,
        shippingForm: '.shipping-calculator-form',
        quantityInput: '.qty',
        updateCartButton: 'button[name=update_cart]',
        wpHttpRefererInputs: '[name=_wp_http_referer]',
        hiddenInput: 'input[type=hidden]',
        productRemove: '.product-remove a'
      },
      classes: defaultSettings.classes,
      ajaxUrl: elementorProFrontend.config.ajaxurl
    };
  }

  getDefaultElements(...args) {
    const selectors = this.getSettings('selectors');
    return { ...super.getDefaultElements(...args),
      $shippingForm: this.$element.find(selectors.shippingForm),
      $stickyColumn: this.$element.find(selectors.stickyColumn),
      $hiddenInput: this.$element.find(selectors.hiddenInput)
    };
  }

  bindEvents() {
    super.bindEvents();
    const selectors = this.getSettings('selectors');
    elementorFrontend.elements.$body.on('wc_fragments_refreshed', () => this.applyButtonsHoverAnimation());

    if ('yes' === this.getElementSettings('update_cart_automatically')) {
      this.$element.on('click', selectors.quantityInput, () => this.updateCart());
    }

    if (elementorFrontend.isEditMode() || elementorFrontend.isWPPreviewMode()) {
      elementorFrontend.elements.$body.on('wc_fragments_loaded wc_fragments_refreshed', () => {
        this.modifyWpHttpReferer();
        this.disableActions();
      });
    }
  }

  onInit(...args) {
    super.onInit(...args);
    this.toggleStickyRightColumn();
    this.hideHiddenInputsParentElements();

    if (elementorFrontend.isEditMode()) {
      this.elements.$shippingForm.show();
    }

    this.applyButtonsHoverAnimation();

    if (elementorFrontend.isEditMode() || elementorFrontend.isWPPreviewMode()) {
      this.modifyWpHttpReferer();
      this.disableActions();
    }
  }
  /**
   * Using the WooCommerce Cart controls (quantity, remove product) in the editor will cause the cart to disappear.
   * This is because WooCommerce does an ajax round trip where it modifies the cart, then loads that cart into the
   * current page and attempts to grab the elements from that page via ajax. In the Editor, if the page is not
   * published yet, it fetches an empty page that does not contain the required elements. As a result, the cart
   * is rendered empty.
   *
   * Due to this issue, the cart controls (quantity, remove product) need to be disabled in the Editor.
   */


  disableActions() {
    const selectors = this.getSettings('selectors');
    this.$element.find(selectors.updateCartButton).attr({
      disabled: 'disabled',
      'aria-disabled': 'true'
    });

    if (elementorFrontend.isEditMode()) {
      this.$element.find(selectors.quantityInput).attr('disabled', 'disabled');
      this.$element.find(selectors.productRemove).css('pointer-events', 'none');
    }
  }

  onElementChange(propertyName) {
    if ('sticky_right_column' === propertyName) {
      this.toggleStickyRightColumn();
    }
  }

  onDestroy(...args) {
    super.onDestroy(...args);
    this.deactivateStickyRightColumn();
  }

  updateCart() {
    const selectors = this.getSettings('selectors');
    clearTimeout(this._debounce);
    this._debounce = setTimeout(() => {
      this.$element.find(selectors.updateCartButton).trigger('click');
    }, 600);
  }

  applyButtonsHoverAnimation() {
    const elementSettings = this.getElementSettings();

    if (elementSettings.checkout_button_hover_animation) {
      // This element is recaptured every time because the cart markup can refresh
      jQuery('.checkout-button').addClass('elementor-animation-' + elementSettings.checkout_button_hover_animation);
    }

    if (elementSettings.forms_buttons_hover_animation) {
      // This element is recaptured every time because the cart markup can refresh
      jQuery('.shop_table .button').addClass('elementor-animation-' + elementSettings.forms_buttons_hover_animation);
    }
  }
  /**
   * In the editor, WC Frontend JS does not fire (not registered).
   * This causes that hidden inputs parent paragraph elements do not get display:none
   * as they would have on the front end.
   * So this function manually display:none the parent elements of these hidden inputs to avoid having
   * gaps/spaces in the layout caused by these parent elements' margins/paddings.
   */


  hideHiddenInputsParentElements() {
    if (this.isEdit) {
      if (this.elements.$hiddenInput) {
        this.elements.$hiddenInput.parent('.form-row').addClass('elementor-hidden');
      }
    }
  }

  modifyWpHttpReferer() {
    const selectors = this.getSettings('selectors');

    if (elementorFrontend.isEditMode()) {
      this.$element.find(selectors.wpHttpRefererInputs).attr('value', elementor.documents.getCurrent().config.urls.wp_preview);
    }
  }

}

exports.default = Cart;

/***/ })

}]);
//# sourceMappingURL=woocommerce-cart.39ccd7e510e98f3afb01.bundle.js.mapassets/js/woocommerce-menu-cart.cf8829a628c66ec7c688.bundle.js000064400000012125150755004310017353 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["woocommerce-menu-cart"],{

/***/ "../modules/woocommerce/assets/js/frontend/handlers/menu-cart.js":
/*!***********************************************************************!*\
  !*** ../modules/woocommerce/assets/js/frontend/handlers/menu-cart.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        container: '.elementor-menu-cart__container',
        main: '.elementor-menu-cart__main',
        toggle: '.elementor-menu-cart__toggle',
        toggleButton: '#elementor-menu-cart__toggle_button',
        toggleWrapper: '.elementor-menu-cart__toggle_wrapper',
        closeButton: '.elementor-menu-cart__close-button'
      },
      classes: {
        isShown: 'elementor-menu-cart--shown'
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors');
    return {
      $container: this.$element.find(selectors.container),
      $main: this.$element.find(selectors.main),
      $toggleWrapper: this.$element.find(selectors.toggleWrapper),
      $closeButton: this.$element.find(selectors.closeButton)
    };
  }

  toggleCart() {
    if (!this.isCartOpen) {
      this.showCart();
    } else {
      this.hideCart();
    }
  }

  showCart() {
    if (this.isCartOpen) {
      return;
    }

    const classes = this.getSettings('classes'),
          selectors = this.getSettings('selectors');
    this.isCartOpen = true;
    this.$element.addClass(classes.isShown);
    this.$element.find(selectors.toggleButton).attr('aria-expanded', true);
    this.elements.$main.attr('aria-hidden', false);
    this.elements.$container.attr('aria-hidden', false);
  }

  hideCart() {
    if (!this.isCartOpen) {
      return;
    }

    const classes = this.getSettings('classes'),
          selectors = this.getSettings('selectors');
    this.isCartOpen = false;
    this.$element.removeClass(classes.isShown);
    this.$element.find(selectors.toggleButton).attr('aria-expanded', false);
    this.elements.$main.attr('aria-hidden', true);
    this.elements.$container.attr('aria-hidden', true);
  }

  automaticallyOpenCart() {
    const settings = this.getElementSettings();

    if ('yes' === settings.automatically_open_cart) {
      this.showCart();
    }
  }

  bindEvents() {
    const menuCart = elementorProFrontend.config.menu_cart,
          noQueryParams = -1 === menuCart.cart_page_url.indexOf('?'),
          currentUrl = noQueryParams ? window.location.origin + window.location.pathname : window.location.href,
          cartUrl = menuCart.cart_page_url,
          isCart = menuCart.cart_page_url === currentUrl,
          isCheckout = menuCart.checkout_page_url === currentUrl,
          selectors = this.getSettings('selectors'),
          settings = this.getElementSettings(),
          classes = this.getSettings('classes'); // If on cart page or checkout page don't open cart, rather stay on, or go to cart page, and bail from init.

    if (isCart && isCheckout) {
      this.$element.find(selectors.toggleButton).attr('href', cartUrl);
      return;
    } // Cache cart open state.


    this.isCartOpen = this.$element.hasClass(classes.isShown);

    if ('mouseover' === settings.open_cart) {
      // Enable opening of mini-cart and side-cart by hover (include click so we can `preventDefault()` page-top jump on click).
      this.elements.$toggleWrapper.on('mouseover click', selectors.toggleButton, event => {
        event.preventDefault();
        this.showCart();
      }); // Close Cart on mouseleave.

      this.elements.$toggleWrapper.on('mouseleave', () => this.hideCart());
    } else {
      // Enable opening of mini-cart and side-cart by click.
      this.elements.$toggleWrapper.on('click', selectors.toggleButton, event => {
        event.preventDefault();
        this.toggleCart();
      });
    } // Listen for clicks outside to close any open cart.


    elementorFrontend.elements.$document.on('click', event => {
      if (!this.isCartOpen) {
        return;
      }

      const $target = jQuery(event.target); // Don't close if this is click on the main panel or toggle button.

      if ($target.closest(this.elements.$main).length || $target.closest(selectors.toggle).length) {
        return;
      }

      this.hideCart();
    });
    this.elements.$closeButton.on('click', event => {
      event.preventDefault();
      this.hideCart();
    });
    elementorFrontend.elements.$document.on('keyup', event => {
      var ESC_KEY = 27;

      if (ESC_KEY === event.keyCode) {
        this.hideCart();
      }
    }); // Option to open cart on add to cart.

    elementorFrontend.elements.$body.on('added_to_cart', () => this.automaticallyOpenCart());
  }

}

exports.default = _default;

/***/ })

}]);
//# sourceMappingURL=woocommerce-menu-cart.cf8829a628c66ec7c688.bundle.js.mapassets/js/archive-posts.77eccfe3d546a58d3f1f.bundle.min.js000064400000017173150755004310016724 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[685,985,287],{8014:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(s(2926)).default.extend({getSkinPrefix:()=>"cards_"});t.default=o},9738:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class LoadMore extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{postsContainer:".elementor-posts-container",loadMoreButton:".elementor-button",loadMoreSpinnerWrapper:".e-load-more-spinner",loadMoreSpinner:".e-load-more-spinner i, .e-load-more-spinner svg",loadMoreAnchor:".e-load-more-anchor"},classes:{loadMoreSpin:"eicon-animation-spin",loadMoreIsLoading:"e-load-more-pagination-loading",loadMorePaginationEnd:"e-load-more-pagination-end",loadMoreNoSpinner:"e-load-more-no-spinner"}}}getDefaultElements(){const e=this.getSettings("selectors");return{postsWidgetWrapper:this.$element[0],postsContainer:this.$element[0].querySelector(e.postsContainer),loadMoreButton:this.$element[0].querySelector(e.loadMoreButton),loadMoreSpinnerWrapper:this.$element[0].querySelector(e.loadMoreSpinnerWrapper),loadMoreSpinner:this.$element[0].querySelector(e.loadMoreSpinner),loadMoreAnchor:this.$element[0].querySelector(e.loadMoreAnchor)}}bindEvents(){super.bindEvents(),this.elements.loadMoreButton&&this.elements.loadMoreButton.addEventListener("click",(e=>{this.isLoading||(e.preventDefault(),this.handlePostsQuery())}))}onInit(){super.onInit(),this.classes=this.getSettings("classes"),this.isLoading=!1;const e=this.getElementSettings("pagination_type");"load_more_on_click"!==e&&"load_more_infinite_scroll"!==e||(this.isInfinteScroll="load_more_infinite_scroll"===e,this.isSpinnerAvailable=this.getElementSettings("load_more_spinner").value,this.isSpinnerAvailable||this.elements.postsWidgetWrapper.classList.add(this.classes.loadMoreNoSpinner),this.isInfinteScroll?this.handleInfiniteScroll():this.elements.loadMoreSpinnerWrapper&&this.elements.loadMoreButton.insertAdjacentElement("beforeEnd",this.elements.loadMoreSpinnerWrapper),this.elementId=this.getID(),this.postId=elementorFrontendConfig.post.id,this.currentPage=parseInt(this.elements.loadMoreAnchor.getAttribute("data-page")),this.maxPage=parseInt(this.elements.loadMoreAnchor.getAttribute("data-max-page")),this.currentPage===this.maxPage&&this.handleUiWhenNoPosts())}handleInfiniteScroll(){this.isEdit||(this.observer=elementorModules.utils.Scroll.scrollObserver({callback:e=>{e.isInViewport&&!this.isLoading&&(this.observer.unobserve(this.elements.loadMoreAnchor),this.handlePostsQuery().then((()=>{this.currentPage!==this.maxPage&&this.observer.observe(this.elements.loadMoreAnchor)})))}}),this.observer.observe(this.elements.loadMoreAnchor))}handleUiBeforeLoading(){this.isLoading=!0,this.elements.loadMoreSpinner&&this.elements.loadMoreSpinner.classList.add(this.classes.loadMoreSpin),this.elements.postsWidgetWrapper.classList.add(this.classes.loadMoreIsLoading)}handleUiAfterLoading(){this.isLoading=!1,this.elements.loadMoreSpinner&&this.elements.loadMoreSpinner.classList.remove(this.classes.loadMoreSpin),this.isInfinteScroll&&this.elements.loadMoreSpinnerWrapper&&this.elements.loadMoreAnchor.insertAdjacentElement("afterend",this.elements.loadMoreSpinnerWrapper),this.elements.postsWidgetWrapper.classList.remove(this.classes.loadMoreIsLoading)}handleUiWhenNoPosts(){this.elements.postsWidgetWrapper.classList.add(this.classes.loadMorePaginationEnd)}handleSuccessFetch(e){this.handleUiAfterLoading();const t=e.querySelectorAll(".elementor-posts-container > article"),s=e.querySelector(".e-load-more-anchor").getAttribute("data-next-page"),n=[...t].reduce(((e,t)=>e+t.outerHTML),"");this.elements.postsContainer.insertAdjacentHTML("beforeend",n),this.elements.loadMoreAnchor.setAttribute("data-page",this.currentPage),this.elements.loadMoreAnchor.setAttribute("data-next-page",s),this.currentPage===this.maxPage&&this.handleUiWhenNoPosts()}handlePostsQuery(){this.handleUiBeforeLoading(),this.currentPage++;const e=this.elements.loadMoreAnchor.getAttribute("data-next-page");return fetch(e).then((e=>e.text())).then((e=>{const t=(new DOMParser).parseFromString(e,"text/html");this.handleSuccessFetch(t)})).catch((e=>{console.warn("Something went wrong.",e)}))}}t.default=LoadMore},2926:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=elementorModules.frontend.handlers.Base.extend({getSkinPrefix:()=>"classic_",bindEvents(){var e=this.getModelCID();elementorFrontend.addListenerOnce(e,"resize",this.onWindowResize)},getClosureMethodsNames(){return elementorModules.frontend.handlers.Base.prototype.getClosureMethodsNames.apply(this,arguments).concat(["fitImages","onWindowResize","runMasonry"])},getDefaultSettings:()=>({classes:{fitHeight:"elementor-fit-height",hasItemRatio:"elementor-has-item-ratio"},selectors:{postsContainer:".elementor-posts-container",post:".elementor-post",postThumbnail:".elementor-post__thumbnail",postThumbnailImage:".elementor-post__thumbnail img"}}),getDefaultElements(){var e=this.getSettings("selectors");return{$postsContainer:this.$element.find(e.postsContainer),$posts:this.$element.find(e.post)}},fitImage(e){var t=this.getSettings(),s=e.find(t.selectors.postThumbnail),n=s.find("img")[0];if(n){var o=s.outerHeight()/s.outerWidth(),i=n.naturalHeight/n.naturalWidth;s.toggleClass(t.classes.fitHeight,i<o)}},fitImages(){var e=jQuery,t=this,s=getComputedStyle(this.$element[0],":after").content,n=this.getSettings();this.elements.$postsContainer.toggleClass(n.classes.hasItemRatio,!!s.match(/\d/)),t.isMasonryEnabled()||this.elements.$posts.each((function(){var s=e(this),o=s.find(n.selectors.postThumbnailImage);t.fitImage(s),o.on("load",(function(){t.fitImage(s)}))}))},setColsCountSettings(){var e,t=elementorFrontend.getCurrentDeviceMode(),s=this.getElementSettings(),n=this.getSkinPrefix();switch(t){case"mobile":e=s[n+"columns_mobile"];break;case"tablet":e=s[n+"columns_tablet"];break;default:e=s[n+"columns"]}this.setSettings("colsCount",e)},isMasonryEnabled(){return!!this.getElementSettings(this.getSkinPrefix()+"masonry")},initMasonry(){imagesLoaded(this.elements.$posts,this.runMasonry)},runMasonry(){var e=this.elements;e.$posts.css({marginTop:"",transitionDuration:""}),this.setColsCountSettings();var t=this.getSettings("colsCount"),s=this.isMasonryEnabled()&&t>=2;if(e.$postsContainer.toggleClass("elementor-posts-masonry",s),s){var n=this.getElementSettings(this.getSkinPrefix()+"row_gap.size");""===this.getSkinPrefix()&&""===n&&(n=this.getElementSettings(this.getSkinPrefix()+"item_gap.size")),new elementorModules.utils.Masonry({container:e.$postsContainer,items:e.$posts.filter(":visible"),columnsCount:this.getSettings("colsCount"),verticalSpaceBetween:n}).run()}else e.$postsContainer.height("")},run(){setTimeout(this.fitImages,0),this.initMasonry()},onInit(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.bindEvents(),this.run()},onWindowResize(){this.fitImages(),this.runMasonry()},onElementChange(){this.fitImages(),setTimeout(this.runMasonry)}});t.default=s},2231:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(s(9738));class ArchivePostsLoadMore extends o.default{}t.default=ArchivePostsLoadMore},7177:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(s(8014)).default.extend({getSkinPrefix:()=>"archive_cards_"});t.default=o},3824:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=n(s(2926)).default.extend({getSkinPrefix:()=>"archive_classic_"});t.default=o}}]);assets/js/hotspot.ba3b762edc3da9c7a076.bundle.min.js000064400000005401150755004310015604 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[888],{9556:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;class Hotspot extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{hotspot:".e-hotspot",tooltip:".e-hotspot__tooltip"}}}getDefaultElements(){const t=this.getSettings("selectors");return{$hotspot:this.$element.find(t.hotspot),$hotspotsExcludesLinks:this.$element.find(t.hotspot).filter(":not(.e-hotspot--no-tooltip)"),$tooltip:this.$element.find(t.tooltip)}}bindEvents(){const t=this.getCurrentDeviceSetting("tooltip_trigger"),e="mouseenter"===t?"mouseleave mouseenter":t;"none"!==e&&this.elements.$hotspotsExcludesLinks.on(e,(t=>this.onHotspotTriggerEvent(t)))}onDeviceModeChange(){this.elements.$hotspotsExcludesLinks.off(),this.bindEvents()}onHotspotTriggerEvent(t){const e=jQuery(t.target),o=e.closest(".e-hotspot__button").length,s="mouseleave"===t.type&&(e.is(".e-hotspot--tooltip-position")||e.parents(".e-hotspot--tooltip-position").length),n="mobile"===elementorFrontend.getCurrentDeviceMode();if(!(e.closest(".e-hotspot--link").length&&n&&("mouseleave"===t.type||"mouseenter"===t.type))&&(o||s)){const e=jQuery(t.currentTarget);this.elements.$hotspot.not(e).removeClass("e-hotspot--active"),e.toggleClass("e-hotspot--active")}}editorAddSequencedAnimation(){this.elements.$hotspot.toggleClass("e-hotspot--sequenced","yes"===this.getElementSettings("hotspot_sequenced_animation"))}hotspotSequencedAnimation(){const t=this.getElementSettings();if("no"===t.hotspot_sequenced_animation)return;const e=elementorModules.utils.Scroll.scrollObserver({callback:o=>{o.isInViewport&&(e.unobserve(this.$element[0]),this.elements.$hotspot.each(((e,o)=>{if(0===e)return;const s=t.hotspot_sequenced_animation_duration,n=e*((s?s.size:1e3)/this.elements.$hotspot.length);o.style.animationDelay=n+"ms"})))}});e.observe(this.$element[0])}setTooltipPositionControl(){const t=this.getElementSettings();void 0!==t.tooltip_animation&&t.tooltip_animation.match(/^e-hotspot--(slide|fade)-direction/)&&(this.elements.$tooltip.removeClass("e-hotspot--tooltip-animation-from-left e-hotspot--tooltip-animation-from-top e-hotspot--tooltip-animation-from-right e-hotspot--tooltip-animation-from-bottom"),this.elements.$tooltip.addClass("e-hotspot--tooltip-animation-from-"+t.tooltip_position))}onInit(...t){super.onInit(...t),this.hotspotSequencedAnimation(),this.setTooltipPositionControl(),window.elementor&&elementor.listenTo(elementor.channels.deviceMode,"change",(()=>this.onDeviceModeChange()))}onElementChange(t){t.startsWith("tooltip_position")&&this.setTooltipPositionControl(),t.startsWith("hotspot_sequenced_animation")&&this.editorAddSequencedAnimation()}}e.default=Hotspot}}]);assets/js/search-form.e36b4b7c26157bb965fe.bundle.min.js000064400000003567150755004310016201 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[858],{188:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=elementorModules.frontend.handlers.Base.extend({getDefaultSettings:()=>({selectors:{wrapper:".elementor-search-form",container:".elementor-search-form__container",icon:".elementor-search-form__icon",input:".elementor-search-form__input",toggle:".elementor-search-form__toggle",submit:".elementor-search-form__submit",closeButton:".dialog-close-button"},classes:{isFocus:"elementor-search-form--focus",isFullScreen:"elementor-search-form--full-screen",lightbox:"elementor-lightbox"}}),getDefaultElements(){var e=this.getSettings("selectors"),t={};return t.$wrapper=this.$element.find(e.wrapper),t.$container=this.$element.find(e.container),t.$input=this.$element.find(e.input),t.$icon=this.$element.find(e.icon),t.$toggle=this.$element.find(e.toggle),t.$submit=this.$element.find(e.submit),t.$closeButton=this.$element.find(e.closeButton),t},bindEvents(){var e=this,t=e.elements.$container,s=e.elements.$closeButton,n=e.elements.$input,l=e.elements.$wrapper,o=e.elements.$icon,r=this.getElementSettings("skin"),i=this.getSettings("classes");"full_screen"===r?(e.elements.$toggle.on("click",(function(){t.toggleClass(i.isFullScreen).toggleClass(i.lightbox),n.trigger("focus")})),t.on("click",(function(e){t.hasClass(i.isFullScreen)&&t[0]===e.target&&t.removeClass(i.isFullScreen).removeClass(i.lightbox)})),s.on("click",(function(){t.removeClass(i.isFullScreen).removeClass(i.lightbox)})),elementorFrontend.elements.$document.on("keyup",(function(e){27===e.keyCode&&t.hasClass(i.isFullScreen)&&t.trigger("click")}))):n.on({focus(){l.addClass(i.isFocus)},blur(){l.removeClass(i.isFocus)}}),"minimal"===r&&o.on("click",(function(){l.addClass(i.isFocus),n.trigger("focus")}))}});t.default=s}}]);assets/js/load-more.921f61dba5d476ec2720.bundle.min.js000064400000010154150755004310015545 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[985],{9738:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class LoadMore extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{postsContainer:".elementor-posts-container",loadMoreButton:".elementor-button",loadMoreSpinnerWrapper:".e-load-more-spinner",loadMoreSpinner:".e-load-more-spinner i, .e-load-more-spinner svg",loadMoreAnchor:".e-load-more-anchor"},classes:{loadMoreSpin:"eicon-animation-spin",loadMoreIsLoading:"e-load-more-pagination-loading",loadMorePaginationEnd:"e-load-more-pagination-end",loadMoreNoSpinner:"e-load-more-no-spinner"}}}getDefaultElements(){const e=this.getSettings("selectors");return{postsWidgetWrapper:this.$element[0],postsContainer:this.$element[0].querySelector(e.postsContainer),loadMoreButton:this.$element[0].querySelector(e.loadMoreButton),loadMoreSpinnerWrapper:this.$element[0].querySelector(e.loadMoreSpinnerWrapper),loadMoreSpinner:this.$element[0].querySelector(e.loadMoreSpinner),loadMoreAnchor:this.$element[0].querySelector(e.loadMoreAnchor)}}bindEvents(){super.bindEvents(),this.elements.loadMoreButton&&this.elements.loadMoreButton.addEventListener("click",(e=>{this.isLoading||(e.preventDefault(),this.handlePostsQuery())}))}onInit(){super.onInit(),this.classes=this.getSettings("classes"),this.isLoading=!1;const e=this.getElementSettings("pagination_type");"load_more_on_click"!==e&&"load_more_infinite_scroll"!==e||(this.isInfinteScroll="load_more_infinite_scroll"===e,this.isSpinnerAvailable=this.getElementSettings("load_more_spinner").value,this.isSpinnerAvailable||this.elements.postsWidgetWrapper.classList.add(this.classes.loadMoreNoSpinner),this.isInfinteScroll?this.handleInfiniteScroll():this.elements.loadMoreSpinnerWrapper&&this.elements.loadMoreButton.insertAdjacentElement("beforeEnd",this.elements.loadMoreSpinnerWrapper),this.elementId=this.getID(),this.postId=elementorFrontendConfig.post.id,this.currentPage=parseInt(this.elements.loadMoreAnchor.getAttribute("data-page")),this.maxPage=parseInt(this.elements.loadMoreAnchor.getAttribute("data-max-page")),this.currentPage===this.maxPage&&this.handleUiWhenNoPosts())}handleInfiniteScroll(){this.isEdit||(this.observer=elementorModules.utils.Scroll.scrollObserver({callback:e=>{e.isInViewport&&!this.isLoading&&(this.observer.unobserve(this.elements.loadMoreAnchor),this.handlePostsQuery().then((()=>{this.currentPage!==this.maxPage&&this.observer.observe(this.elements.loadMoreAnchor)})))}}),this.observer.observe(this.elements.loadMoreAnchor))}handleUiBeforeLoading(){this.isLoading=!0,this.elements.loadMoreSpinner&&this.elements.loadMoreSpinner.classList.add(this.classes.loadMoreSpin),this.elements.postsWidgetWrapper.classList.add(this.classes.loadMoreIsLoading)}handleUiAfterLoading(){this.isLoading=!1,this.elements.loadMoreSpinner&&this.elements.loadMoreSpinner.classList.remove(this.classes.loadMoreSpin),this.isInfinteScroll&&this.elements.loadMoreSpinnerWrapper&&this.elements.loadMoreAnchor.insertAdjacentElement("afterend",this.elements.loadMoreSpinnerWrapper),this.elements.postsWidgetWrapper.classList.remove(this.classes.loadMoreIsLoading)}handleUiWhenNoPosts(){this.elements.postsWidgetWrapper.classList.add(this.classes.loadMorePaginationEnd)}handleSuccessFetch(e){this.handleUiAfterLoading();const t=e.querySelectorAll(".elementor-posts-container > article"),s=e.querySelector(".e-load-more-anchor").getAttribute("data-next-page"),n=[...t].reduce(((e,t)=>e+t.outerHTML),"");this.elements.postsContainer.insertAdjacentHTML("beforeend",n),this.elements.loadMoreAnchor.setAttribute("data-page",this.currentPage),this.elements.loadMoreAnchor.setAttribute("data-next-page",s),this.currentPage===this.maxPage&&this.handleUiWhenNoPosts()}handlePostsQuery(){this.handleUiBeforeLoading(),this.currentPage++;const e=this.elements.loadMoreAnchor.getAttribute("data-next-page");return fetch(e).then((e=>e.text())).then((e=>{const t=(new DOMParser).parseFromString(e,"text/html");this.handleSuccessFetch(t)})).catch((e=>{console.warn("Something went wrong.",e)}))}}t.default=LoadMore}}]);assets/js/media-carousel.b5cf350f530535d64364.bundle.js000064400000031507150755004310015644 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["media-carousel"],{

/***/ "../modules/carousel/assets/js/frontend/handlers/base.js":
/*!***************************************************************!*\
  !*** ../modules/carousel/assets/js/frontend/handlers/base.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class CarouselBase extends elementorModules.frontend.handlers.SwiperBase {
  getDefaultSettings() {
    return {
      selectors: {
        swiperContainer: '.elementor-main-swiper',
        swiperSlide: '.swiper-slide'
      },
      slidesPerView: {
        widescreen: 3,
        desktop: 3,
        laptop: 3,
        tablet_extra: 3,
        tablet: 2,
        mobile_extra: 2,
        mobile: 1
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors'),
          elements = {
      $swiperContainer: this.$element.find(selectors.swiperContainer)
    };
    elements.$slides = elements.$swiperContainer.find(selectors.swiperSlide);
    return elements;
  }

  getEffect() {
    return this.getElementSettings('effect');
  }

  getDeviceSlidesPerView(device) {
    const slidesPerViewKey = 'slides_per_view' + ('desktop' === device ? '' : '_' + device);
    return Math.min(this.getSlidesCount(), +this.getElementSettings(slidesPerViewKey) || this.getSettings('slidesPerView')[device]);
  }

  getSlidesPerView(device) {
    if ('slide' === this.getEffect()) {
      return this.getDeviceSlidesPerView(device);
    }

    return 1;
  }

  getDeviceSlidesToScroll(device) {
    const slidesToScrollKey = 'slides_to_scroll' + ('desktop' === device ? '' : '_' + device);
    return Math.min(this.getSlidesCount(), +this.getElementSettings(slidesToScrollKey) || 1);
  }

  getSlidesToScroll(device) {
    if ('slide' === this.getEffect()) {
      return this.getDeviceSlidesToScroll(device);
    }

    return 1;
  }

  getSpaceBetween(device) {
    let propertyName = 'space_between';

    if (device && 'desktop' !== device) {
      propertyName += '_' + device;
    }

    return this.getElementSettings(propertyName).size || 0;
  }

  getSwiperOptions() {
    const elementSettings = this.getElementSettings();
    const swiperOptions = {
      grabCursor: true,
      initialSlide: this.getInitialSlide(),
      slidesPerView: this.getSlidesPerView('desktop'),
      slidesPerGroup: this.getSlidesToScroll('desktop'),
      spaceBetween: this.getSpaceBetween(),
      loop: 'yes' === elementSettings.loop,
      speed: elementSettings.speed,
      effect: this.getEffect(),
      preventClicksPropagation: false,
      slideToClickedSlide: true,
      handleElementorBreakpoints: true
    };

    if (elementSettings.show_arrows) {
      swiperOptions.navigation = {
        prevEl: '.elementor-swiper-button-prev',
        nextEl: '.elementor-swiper-button-next'
      };
    }

    if (elementSettings.pagination) {
      swiperOptions.pagination = {
        el: '.swiper-pagination',
        type: elementSettings.pagination,
        clickable: true
      };
    }

    if ('cube' !== this.getEffect()) {
      const breakpointsSettings = {},
            breakpoints = elementorFrontend.config.responsive.activeBreakpoints;
      Object.keys(breakpoints).forEach(breakpointName => {
        breakpointsSettings[breakpoints[breakpointName].value] = {
          slidesPerView: this.getSlidesPerView(breakpointName),
          slidesPerGroup: this.getSlidesToScroll(breakpointName),
          spaceBetween: this.getSpaceBetween(breakpointName)
        };
      });
      swiperOptions.breakpoints = breakpointsSettings;
    }

    if (!this.isEdit && elementSettings.autoplay) {
      swiperOptions.autoplay = {
        delay: elementSettings.autoplay_speed,
        disableOnInteraction: !!elementSettings.pause_on_interaction
      };
    }

    return swiperOptions;
  }

  getDeviceBreakpointValue(device) {
    if (!this.breakpointsDictionary) {
      const breakpoints = elementorFrontend.config.responsive.activeBreakpoints;
      this.breakpointsDictionary = {};
      Object.keys(breakpoints).forEach(breakpointName => {
        this.breakpointsDictionary[breakpointName] = breakpoints[breakpointName].value;
      });
    }

    return this.breakpointsDictionary[device];
  }

  updateSpaceBetween(propertyName) {
    const deviceMatch = propertyName.match('space_between_(.*)'),
          device = deviceMatch ? deviceMatch[1] : 'desktop',
          newSpaceBetween = this.getSpaceBetween(device);

    if ('desktop' !== device) {
      this.swiper.params.breakpoints[this.getDeviceBreakpointValue(device)].spaceBetween = newSpaceBetween;
    } else {
      this.swiper.params.spaceBetween = newSpaceBetween;
    }

    this.swiper.params.spaceBetween = newSpaceBetween;
    this.swiper.update();
  }

  async onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
    const elementSettings = this.getElementSettings();

    if (1 >= this.getSlidesCount()) {
      return;
    }

    const Swiper = elementorFrontend.utils.swiper;
    this.swiper = await new Swiper(this.elements.$swiperContainer, this.getSwiperOptions());

    if ('yes' === elementSettings.pause_on_hover) {
      this.togglePauseOnHover(true);
    } // Expose the swiper instance in the frontend


    this.elements.$swiperContainer.data('swiper', this.swiper);
  }

  getChangeableProperties() {
    return {
      autoplay: 'autoplay',
      pause_on_hover: 'pauseOnHover',
      pause_on_interaction: 'disableOnInteraction',
      autoplay_speed: 'delay',
      speed: 'speed',
      width: 'width'
    };
  }

  updateSwiperOption(propertyName) {
    if (0 === propertyName.indexOf('width')) {
      this.swiper.update();
      return;
    }

    const elementSettings = this.getElementSettings(),
          newSettingValue = elementSettings[propertyName],
          changeableProperties = this.getChangeableProperties();
    let propertyToUpdate = changeableProperties[propertyName],
        valueToUpdate = newSettingValue; // Handle special cases where the value to update is not the value that the Swiper library accepts

    switch (propertyName) {
      case 'autoplay':
        if (newSettingValue) {
          valueToUpdate = {
            delay: elementSettings.autoplay_speed,
            disableOnInteraction: 'yes' === elementSettings.pause_on_interaction
          };
        } else {
          valueToUpdate = false;
        }

        break;

      case 'autoplay_speed':
        propertyToUpdate = 'autoplay';
        valueToUpdate = {
          delay: newSettingValue,
          disableOnInteraction: 'yes' === elementSettings.pause_on_interaction
        };
        break;

      case 'pause_on_hover':
        this.togglePauseOnHover('yes' === newSettingValue);
        break;

      case 'pause_on_interaction':
        valueToUpdate = 'yes' === newSettingValue;
        break;
    } // 'pause_on_hover' is implemented by the handler with event listeners, not the Swiper library


    if ('pause_on_hover' !== propertyName) {
      this.swiper.params[propertyToUpdate] = valueToUpdate;
    }

    this.swiper.update();
  }

  onElementChange(propertyName) {
    if (1 >= this.getSlidesCount()) {
      return;
    }

    if (0 === propertyName.indexOf('width')) {
      this.swiper.update(); // If there is another thumbs slider, like in the Media Carousel widget.

      if (this.thumbsSwiper) {
        this.thumbsSwiper.update();
      }

      return;
    } // This is for handling the responsive control 'space_between'.
    // Responsive controls require a separate way of handling, and some currently don't work
    // (Swiper bug, currently exists in v5.3.6) TODO: update Swiper when bug is fixed and handle responsive controls


    if (0 === propertyName.indexOf('space_between')) {
      this.updateSpaceBetween(propertyName);
      return;
    }

    const changeableProperties = this.getChangeableProperties();

    if (changeableProperties.hasOwnProperty(propertyName)) {
      this.updateSwiperOption(propertyName);
    }
  }

  onEditSettingsChange(propertyName) {
    if (1 >= this.getSlidesCount()) {
      return;
    }

    if ('activeItemIndex' === propertyName) {
      this.swiper.slideToLoop(this.getEditSettings('activeItemIndex') - 1);
    }
  }

}

exports.default = CarouselBase;

/***/ }),

/***/ "../modules/carousel/assets/js/frontend/handlers/media-carousel.js":
/*!*************************************************************************!*\
  !*** ../modules/carousel/assets/js/frontend/handlers/media-carousel.js ***!
  \*************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/carousel/assets/js/frontend/handlers/base.js"));

class MediaCarousel extends _base.default {
  isSlideshow() {
    return 'slideshow' === this.getElementSettings('skin');
  }

  getDefaultSettings(...args) {
    const defaultSettings = super.getDefaultSettings(...args);

    if (this.isSlideshow()) {
      defaultSettings.selectors.thumbsSwiper = '.elementor-thumbnails-swiper';
      defaultSettings.slidesPerView = {
        widescreen: 5,
        desktop: 5,
        laptop: 5,
        tablet_extra: 5,
        tablet: 4,
        mobile_extra: 4,
        mobile: 3
      };
    }

    return defaultSettings;
  }

  getSlidesPerViewSettingNames() {
    if (!this.slideshowElementSettings) {
      this.slideshowElementSettings = ['slides_per_view'];
      const activeBreakpoints = elementorFrontend.config.responsive.activeBreakpoints;
      Object.keys(activeBreakpoints).forEach(breakpointName => {
        this.slideshowElementSettings.push('slides_per_view_' + breakpointName);
      });
    }

    return this.slideshowElementSettings;
  }

  getElementSettings(setting) {
    if (-1 !== this.getSlidesPerViewSettingNames().indexOf(setting) && this.isSlideshow()) {
      setting = 'slideshow_' + setting;
    }

    return super.getElementSettings(setting);
  }

  getDefaultElements(...args) {
    const selectors = this.getSettings('selectors'),
          defaultElements = super.getDefaultElements(...args);

    if (this.isSlideshow()) {
      defaultElements.$thumbsSwiper = this.$element.find(selectors.thumbsSwiper);
    }

    return defaultElements;
  }

  getEffect() {
    if ('coverflow' === this.getElementSettings('skin')) {
      return 'coverflow';
    }

    return super.getEffect();
  }

  getSlidesPerView(device) {
    if (this.isSlideshow()) {
      return 1;
    }

    if ('coverflow' === this.getElementSettings('skin')) {
      return this.getDeviceSlidesPerView(device);
    }

    return super.getSlidesPerView(device);
  }

  getSwiperOptions() {
    const options = super.getSwiperOptions();

    if (this.isSlideshow()) {
      options.loopedSlides = this.getSlidesCount();
      delete options.pagination;
      delete options.breakpoints;
    }

    return options;
  }

  async onInit() {
    await super.onInit();
    const slidesCount = this.getSlidesCount();

    if (!this.isSlideshow() || 1 >= slidesCount) {
      return;
    }

    const elementSettings = this.getElementSettings(),
          loop = 'yes' === elementSettings.loop,
          breakpointsSettings = {},
          breakpoints = elementorFrontend.config.responsive.activeBreakpoints,
          desktopSlidesPerView = this.getDeviceSlidesPerView('desktop');
    Object.keys(breakpoints).forEach(breakpointName => {
      breakpointsSettings[breakpoints[breakpointName].value] = {
        slidesPerView: this.getDeviceSlidesPerView(breakpointName),
        spaceBetween: this.getSpaceBetween(breakpointName)
      };
    });
    const thumbsSliderOptions = {
      slidesPerView: desktopSlidesPerView,
      initialSlide: this.getInitialSlide(),
      centeredSlides: elementSettings.centered_slides,
      slideToClickedSlide: true,
      spaceBetween: this.getSpaceBetween(),
      loopedSlides: slidesCount,
      loop,
      breakpoints: breakpointsSettings,
      handleElementorBreakpoints: true
    };
    const Swiper = elementorFrontend.utils.swiper;
    this.swiper.controller.control = this.thumbsSwiper = await new Swiper(this.elements.$thumbsSwiper, thumbsSliderOptions); // Expose the swiper instance in the frontend

    this.elements.$thumbsSwiper.data('swiper', this.thumbsSwiper);
    this.thumbsSwiper.controller.control = this.swiper;
  }

}

exports.default = MediaCarousel;

/***/ })

}]);
//# sourceMappingURL=media-carousel.b5cf350f530535d64364.bundle.js.mapassets/js/countdown.6b48da864045c1ea0edd.bundle.js000064400000011513150755004310015262 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["countdown"],{

/***/ "../modules/countdown/assets/js/frontend/handlers/countdown.js":
/*!*********************************************************************!*\
  !*** ../modules/countdown/assets/js/frontend/handlers/countdown.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  cache: null,

  cacheElements() {
    const $countDown = this.$element.find('.elementor-countdown-wrapper');
    this.cache = {
      $countDown,
      timeInterval: null,
      elements: {
        $countdown: $countDown.find('.elementor-countdown-wrapper'),
        $daysSpan: $countDown.find('.elementor-countdown-days'),
        $hoursSpan: $countDown.find('.elementor-countdown-hours'),
        $minutesSpan: $countDown.find('.elementor-countdown-minutes'),
        $secondsSpan: $countDown.find('.elementor-countdown-seconds'),
        $expireMessage: $countDown.parent().find('.elementor-countdown-expire--message')
      },
      data: {
        id: this.$element.data('id'),
        endTime: new Date($countDown.data('date') * 1000),
        actions: $countDown.data('expire-actions'),
        evergreenInterval: $countDown.data('evergreen-interval')
      }
    };
  },

  onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
    this.cacheElements();

    if (0 < this.cache.data.evergreenInterval) {
      this.cache.data.endTime = this.getEvergreenDate();
    }

    this.initializeClock();
  },

  updateClock() {
    const self = this,
          timeRemaining = this.getTimeRemaining(this.cache.data.endTime);
    jQuery.each(timeRemaining.parts, function (timePart) {
      const $element = self.cache.elements['$' + timePart + 'Span'];
      let partValue = this.toString();

      if (1 === partValue.length) {
        partValue = 0 + partValue;
      }

      if ($element.length) {
        $element.text(partValue);
      }
    });

    if (timeRemaining.total <= 0) {
      clearInterval(this.cache.timeInterval);
      this.runActions();
    }
  },

  initializeClock() {
    const self = this;
    this.updateClock();
    this.cache.timeInterval = setInterval(function () {
      self.updateClock();
    }, 1000);
  },

  runActions() {
    const self = this; // Trigger general event for 3rd patry actions

    self.$element.trigger('countdown_expire', self.$element);

    if (!this.cache.data.actions) {
      return;
    }

    this.cache.data.actions.forEach(function (action) {
      switch (action.type) {
        case 'hide':
          self.cache.$countDown.hide();
          break;

        case 'redirect':
          if (action.redirect_url) {
            window.location.href = action.redirect_url;
          }

          break;

        case 'message':
          self.cache.elements.$expireMessage.show();
          break;
      }
    });
  },

  getTimeRemaining(endTime) {
    const timeRemaining = endTime - new Date();
    let seconds = Math.floor(timeRemaining / 1000 % 60),
        minutes = Math.floor(timeRemaining / 1000 / 60 % 60),
        hours = Math.floor(timeRemaining / (1000 * 60 * 60) % 24),
        days = Math.floor(timeRemaining / (1000 * 60 * 60 * 24));

    if (days < 0 || hours < 0 || minutes < 0) {
      seconds = minutes = hours = days = 0;
    }

    return {
      total: timeRemaining,
      parts: {
        days,
        hours,
        minutes,
        seconds
      }
    };
  },

  getEvergreenDate() {
    const self = this,
          id = this.cache.data.id,
          interval = this.cache.data.evergreenInterval,
          dueDateKey = id + '-evergreen_due_date',
          intervalKey = id + '-evergreen_interval',
          localData = {
      dueDate: localStorage.getItem(dueDateKey),
      interval: localStorage.getItem(intervalKey)
    },
          initEvergreen = function () {
      var evergreenDueDate = new Date();
      self.cache.data.endTime = evergreenDueDate.setSeconds(evergreenDueDate.getSeconds() + interval);
      localStorage.setItem(dueDateKey, self.cache.data.endTime);
      localStorage.setItem(intervalKey, interval);
      return self.cache.data.endTime;
    };

    if (null === localData.dueDate && null === localData.interval) {
      return initEvergreen();
    }

    if (null !== localData.dueDate && interval !== parseInt(localData.interval, 10)) {
      return initEvergreen();
    }

    if (localData.dueDate > 0 && parseInt(localData.interval, 10) === interval) {
      return localData.dueDate;
    }
  }

});

exports.default = _default;

/***/ })

}]);
//# sourceMappingURL=countdown.6b48da864045c1ea0edd.bundle.js.mapassets/js/lottie.dccf7257e6cc366bc6bd.bundle.js000064400000061775150755004310014734 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["lottie"],{

/***/ "../modules/lottie/assets/js/frontend/handler.js":
/*!*******************************************************!*\
  !*** ../modules/lottie/assets/js/frontend/handler.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class lottieHandler extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        container: '.e-lottie__container',
        containerLink: '.e-lottie__container__link',
        animation: '.e-lottie__animation',
        caption: '.e-lottie__caption'
      },
      classes: {
        caption: 'e-lottie__caption'
      }
    };
  }

  getDefaultElements() {
    const {
      selectors
    } = this.getSettings();
    return {
      $widgetWrapper: this.$element,
      $container: this.$element.find(selectors.container),
      $containerLink: this.$element.find(selectors.containerLink),
      $animation: this.$element.find(selectors.animation),
      $caption: this.$element.find(selectors.caption),
      $sectionParent: this.$element.closest('.elementor-section'),
      $columnParent: this.$element.closest('.elementor-column')
    };
  }

  onInit(...args) {
    super.onInit(...args);
    this.lottie = null;
    this.state = {
      isAnimationScrollUpdateNeededOnFirstLoad: true,
      isNewLoopCycle: false,
      isInViewport: false,
      loop: false,
      animationDirection: 'forward',
      currentAnimationTrigger: '',
      effectsRelativeTo: '',
      hoverOutMode: '',
      hoverArea: '',
      caption: '',
      playAnimationCount: 0,
      animationSpeed: 0,
      linkTimeout: 0,
      viewportOffset: {
        start: 0,
        end: 100
      }
    };
    this.intersectionObservers = {
      animation: {
        observer: null,
        element: null
      },
      lazyload: {
        observer: null,
        element: null
      }
    };
    this.animationFrameRequest = {
      timer: null,
      lastScrollY: 0
    };
    this.listeners = {
      collection: [],
      elements: {
        $widgetArea: {
          triggerAnimationHoverIn: null,
          triggerAnimationHoverOut: null
        },
        $container: {
          triggerAnimationClick: null
        }
      }
    };
    this.initLottie();
  }

  initLottie() {
    const lottieSettings = this.getLottieSettings();

    if (lottieSettings.lazyload) {
      this.lazyloadLottie();
    } else {
      this.generateLottie();
    }
  }

  lazyloadLottie() {
    const bufferHeightBeforeTriggerLottie = 200;
    this.intersectionObservers.lazyload.observer = elementorModules.utils.Scroll.scrollObserver({
      offset: `0px 0px ${bufferHeightBeforeTriggerLottie}px`,
      callback: event => {
        if (event.isInViewport) {
          this.generateLottie();
          this.intersectionObservers.lazyload.observer.unobserve(this.intersectionObservers.lazyload.element);
        }
      }
    });
    this.intersectionObservers.lazyload.element = this.elements.$container[0];
    this.intersectionObservers.lazyload.observer.observe(this.intersectionObservers.lazyload.element);
  }

  generateLottie() {
    this.createLottieInstance();
    this.setLottieEvents();
  }

  createLottieInstance() {
    const lottieSettings = this.getLottieSettings();
    this.lottie = bodymovin.loadAnimation({
      container: this.elements.$animation[0],
      path: this.getAnimationPath(),
      renderer: lottieSettings.renderer,
      autoplay: false,
      // We always want to trigger the animation manually for considering start/end frame.
      name: 'lottie-widget'
    }); // Expose the lottie instance in the frontend.

    this.elements.$animation.data('lottie', this.lottie);
  }

  getAnimationPath() {
    var _lottieSettings$sourc, _lottieSettings$sourc2;

    const lottieSettings = this.getLottieSettings();

    if ((_lottieSettings$sourc = lottieSettings.source_json) !== null && _lottieSettings$sourc !== void 0 && _lottieSettings$sourc.url && 'json' === lottieSettings.source_json.url.toLowerCase().substr(-4)) {
      return lottieSettings.source_json.url;
    } else if ((_lottieSettings$sourc2 = lottieSettings.source_external_url) !== null && _lottieSettings$sourc2 !== void 0 && _lottieSettings$sourc2.url) {
      return lottieSettings.source_external_url.url;
    } // Default animation path.


    return elementorProFrontend.config.lottie.defaultAnimationUrl;
  }

  setCaption() {
    const lottieSettings = this.getLottieSettings();

    if ('external_url' === lottieSettings.source || 'media_file' === lottieSettings.source && 'custom' === lottieSettings.caption_source) {
      const $captionElement = this.getCaptionElement();
      $captionElement.text(lottieSettings.caption);
    }
  }

  getCaptionElement() {
    if (!this.elements.$caption.length) {
      const {
        classes
      } = this.getSettings();
      this.elements.$caption = jQuery('<p>', {
        class: classes.caption
      });
      this.elements.$container.append(this.elements.$caption);
      return this.elements.$caption;
    }

    return this.elements.$caption;
  }

  setLottieEvents() {
    this.lottie.addEventListener('DOMLoaded', () => this.onLottieDomLoaded());
    this.lottie.addEventListener('complete', () => this.onComplete());
  }

  saveInitialValues() {
    var _lottieSettings$play_;

    const lottieSettings = this.getLottieSettings();
    /*
    These values of the animation are being changed during the animation runtime
    and saved in the lottie instance (and not in the state) for the instance expose in the frontend.
     */

    this.lottie.__initialTotalFrames = this.lottie.totalFrames;
    this.lottie.__initialFirstFrame = this.lottie.firstFrame;
    this.state.currentAnimationTrigger = lottieSettings.trigger;
    this.state.effectsRelativeTo = lottieSettings.effects_relative_to;
    this.state.viewportOffset.start = lottieSettings.viewport ? lottieSettings.viewport.sizes.start : 0;
    this.state.viewportOffset.end = lottieSettings.viewport ? lottieSettings.viewport.sizes.end : 100;
    this.state.animationSpeed = (_lottieSettings$play_ = lottieSettings.play_speed) === null || _lottieSettings$play_ === void 0 ? void 0 : _lottieSettings$play_.size;
    this.state.linkTimeout = lottieSettings.link_timeout;
    this.state.caption = lottieSettings.caption;
    this.state.loop = lottieSettings.loop;
  }

  setAnimationFirstFrame() {
    const frame = this.getAnimationFrames();
    /*
    We need to subtract the initial first frame from the first frame for handling scenarios
    when the animation first frame is not 0, this way we always get the relevant first frame.
    example: when start point is 70 and initial first frame is 60, the animation should start at 10.
     */

    frame.first = frame.first - this.lottie.__initialFirstFrame;
    this.lottie.goToAndStop(frame.first, true);
  }

  initAnimationTrigger() {
    const lottieSettings = this.getLottieSettings();

    switch (lottieSettings.trigger) {
      case 'none':
        this.playLottie();
        break;

      case 'arriving_to_viewport':
        this.playAnimationWhenArrivingToViewport();
        break;

      case 'bind_to_scroll':
        this.playAnimationWhenBindToScroll();
        break;

      case 'on_click':
        this.bindAnimationClickEvents();
        break;

      case 'on_hover':
        this.bindAnimationHoverEvents();
        break;
    }
  }

  playAnimationWhenArrivingToViewport() {
    const offset = this.getOffset();
    this.intersectionObservers.animation.observer = elementorModules.utils.Scroll.scrollObserver({
      offset: `${offset.end}% 0% ${offset.start}%`,
      callback: event => {
        if (event.isInViewport) {
          this.state.isInViewport = true;
          this.playLottie();
        } else {
          this.state.isInViewport = false;
          this.lottie.pause();
        }
      }
    });
    this.intersectionObservers.animation.element = this.elements.$widgetWrapper[0];
    this.intersectionObservers.animation.observer.observe(this.intersectionObservers.animation.element);
  }

  getOffset() {
    const lottieSettings = this.getLottieSettings(),
          start = -lottieSettings.viewport.sizes.start || 0,
          end = -(100 - lottieSettings.viewport.sizes.end) || 0;
    return {
      start,
      end
    };
  }

  playAnimationWhenBindToScroll() {
    const lottieSettings = this.getLottieSettings(),
          offset = this.getOffset(); // Generate scroll detection by Intersection Observer API

    this.intersectionObservers.animation.observer = elementorModules.utils.Scroll.scrollObserver({
      offset: `${offset.end}% 0% ${offset.start}%`,
      callback: event => this.onLottieIntersection(event)
    });
    this.intersectionObservers.animation.element = 'viewport' === lottieSettings.effects_relative_to ? this.elements.$widgetWrapper[0] : document.documentElement;
    this.intersectionObservers.animation.observer.observe(this.intersectionObservers.animation.element);
  }

  updateAnimationByScrollPosition() {
    const lottieSettings = this.getLottieSettings();
    let percentage;

    if ('page' === lottieSettings.effects_relative_to) {
      percentage = this.getLottiePagePercentage();
    } else if ('fixed' === this.getCurrentDeviceSetting('_position')) {
      percentage = this.getLottieViewportHeightPercentage();
    } else {
      percentage = this.getLottieViewportPercentage();
    }

    let nextFrameToPlay = this.getFrameNumberByPercent(percentage);
    nextFrameToPlay = nextFrameToPlay - this.lottie.__initialFirstFrame;
    this.lottie.goToAndStop(nextFrameToPlay, true);
  }

  getLottieViewportPercentage() {
    return elementorModules.utils.Scroll.getElementViewportPercentage(this.elements.$widgetWrapper, this.getOffset());
  }

  getLottiePagePercentage() {
    return elementorModules.utils.Scroll.getPageScrollPercentage(this.getOffset());
  }

  getLottieViewportHeightPercentage() {
    return elementorModules.utils.Scroll.getPageScrollPercentage(this.getOffset(), window.innerHeight);
  }
  /**
   * @param {number} percent - Percent value between 0-100
   */


  getFrameNumberByPercent(percent) {
    const frame = this.getAnimationFrames();
    /*
    In mobile devices the document height can be 'stretched' at the top and bottom points of the document,
    this 'stretched' will make percent to be either negative or larger than 100, therefore we need to limit percent between 0-100.
    */

    percent = Math.min(100, Math.max(0, percent)); // Getting frame number by percent of range, considering start/end frame values if exist.

    return frame.first + (frame.last - frame.first) * percent / 100;
  }

  getAnimationFrames() {
    const lottieSettings = this.getLottieSettings(),
          currentFrame = this.getAnimationCurrentFrame(),
          startPoint = this.getAnimationRange().start,
          endPoint = this.getAnimationRange().end;
    let firstFrame = this.lottie.__initialFirstFrame,
        lastFrame = 0 === this.lottie.__initialFirstFrame ? this.lottie.__initialTotalFrames : this.lottie.__initialFirstFrame + this.lottie.__initialTotalFrames; // Limiting min start point to animation first frame.

    if (startPoint && startPoint > firstFrame) {
      firstFrame = startPoint;
    } // limiting max end point to animation last frame.


    if (endPoint && endPoint < lastFrame) {
      lastFrame = endPoint;
    }
    /*
    Getting the relevant first frame after loop complete and when not bind to scroll.
    when the animation is in progress (no when a new loop start), the first frame should be the current frame.
    when the trigger is bind_to_scroll we DON'T need to get this functionality.
    */


    if (!this.state.isNewLoopCycle && 'bind_to_scroll' !== lottieSettings.trigger) {
      // When we have a custom start point, we need to check if the start point is larger than the last pause stop of the animation.
      firstFrame = startPoint && startPoint > currentFrame ? startPoint : currentFrame;
    } // Reverse Mode.


    if ('backward' === this.state.animationDirection && this.isReverseMode()) {
      firstFrame = currentFrame;
      lastFrame = startPoint && startPoint > this.lottie.__initialFirstFrame ? startPoint : this.lottie.__initialFirstFrame;
    }

    return {
      first: firstFrame,
      last: lastFrame,
      current: currentFrame,
      total: this.lottie.__initialTotalFrames
    };
  }

  getAnimationRange() {
    const lottieSettings = this.getLottieSettings();
    return {
      start: this.getInitialFrameNumberByPercent(lottieSettings.start_point.size),
      end: this.getInitialFrameNumberByPercent(lottieSettings.end_point.size)
    };
  }

  getInitialFrameNumberByPercent(percent) {
    percent = Math.min(100, Math.max(0, percent));
    return this.lottie.__initialFirstFrame + (this.lottie.__initialTotalFrames - this.lottie.__initialFirstFrame) * percent / 100;
  }

  getAnimationCurrentFrame() {
    // When pausing the animation (when out of viewport) the first frame of the animation changes.
    return 0 === this.lottie.firstFrame ? this.lottie.currentFrame : this.lottie.firstFrame + this.lottie.currentFrame;
  }

  setLinkTimeout() {
    var _lottieSettings$custo;

    const lottieSettings = this.getLottieSettings();

    if ('on_click' === lottieSettings.trigger && (_lottieSettings$custo = lottieSettings.custom_link) !== null && _lottieSettings$custo !== void 0 && _lottieSettings$custo.url && lottieSettings.link_timeout) {
      this.elements.$containerLink.on('click', event => {
        event.preventDefault();

        if (!this.isEdit) {
          setTimeout(() => {
            const tabTarget = 'on' === lottieSettings.custom_link.is_external ? '_blank' : '_self';
            window.open(lottieSettings.custom_link.url, tabTarget);
          }, lottieSettings.link_timeout);
        }
      });
    }
  }

  bindAnimationClickEvents() {
    this.listeners.elements.$container.triggerAnimationClick = () => {
      this.playLottie();
    };

    this.addSessionEventListener(this.elements.$container, 'click', this.listeners.elements.$container.triggerAnimationClick);
  }

  getLottieSettings() {
    const lottieSettings = this.getElementSettings();
    return { ...lottieSettings,
      lazyload: 'yes' === lottieSettings.lazyload,
      loop: 'yes' === lottieSettings.loop
    };
  }

  playLottie() {
    const frame = this.getAnimationFrames();
    this.lottie.stop();
    this.lottie.playSegments([frame.first, frame.last], true); // We reset the loop cycle state after playing the animation.

    this.state.isNewLoopCycle = false;
  }

  bindAnimationHoverEvents() {
    this.createAnimationHoverInEvents();
    this.createAnimationHoverOutEvents();
  }

  createAnimationHoverInEvents() {
    const lottieSettings = this.getLottieSettings(),
          $widgetArea = this.getHoverAreaElement();
    this.state.hoverArea = lottieSettings.hover_area;

    this.listeners.elements.$widgetArea.triggerAnimationHoverIn = () => {
      this.state.animationDirection = 'forward';
      this.playLottie();
    };

    this.addSessionEventListener($widgetArea, 'mouseenter', this.listeners.elements.$widgetArea.triggerAnimationHoverIn);
  }
  /**
   * @param {jQuery} $el
   * @param {string} event - event type
   * @param {Function} callback
   */


  addSessionEventListener($el, event, callback) {
    $el.on(event, callback);
    this.listeners.collection.push({
      $el,
      event,
      callback
    });
  }

  createAnimationHoverOutEvents() {
    const lottieSettings = this.getLottieSettings(),
          $widgetArea = this.getHoverAreaElement();

    if ('pause' === lottieSettings.on_hover_out || 'reverse' === lottieSettings.on_hover_out) {
      this.state.hoverOutMode = lottieSettings.on_hover_out;

      this.listeners.elements.$widgetArea.triggerAnimationHoverOut = () => {
        if ('pause' === lottieSettings.on_hover_out) {
          this.lottie.pause();
        } else {
          this.state.animationDirection = 'backward';
          this.playLottie();
        }
      };

      this.addSessionEventListener($widgetArea, 'mouseleave', this.listeners.elements.$widgetArea.triggerAnimationHoverOut);
    }
  }

  getHoverAreaElement() {
    const lottieSettings = this.getLottieSettings();

    if ('section' === lottieSettings.hover_area) {
      return this.elements.$sectionParent;
    } else if ('column' === lottieSettings.hover_area) {
      return this.elements.$columnParent;
    }

    return this.elements.$container;
  }

  setLoopOnAnimationComplete() {
    const lottieSettings = this.getLottieSettings();
    this.state.isNewLoopCycle = true;

    if (lottieSettings.loop && !this.isReverseMode()) {
      this.setLoopWhenNotReverse();
    } else if (lottieSettings.loop && this.isReverseMode()) {
      this.setReverseAnimationOnLoop();
    } else if (!lottieSettings.loop && this.isReverseMode()) {
      this.setReverseAnimationOnSingleTrigger();
    }
  }

  isReverseMode() {
    const lottieSettings = this.getLottieSettings();
    return 'yes' === lottieSettings.reverse_animation || 'reverse' === lottieSettings.on_hover_out && 'backward' === this.state.animationDirection;
  }

  setLoopWhenNotReverse() {
    const lottieSettings = this.getLottieSettings();

    if (lottieSettings.number_of_times > 0) {
      this.state.playAnimationCount++;

      if (this.state.playAnimationCount < lottieSettings.number_of_times) {
        this.playLottie();
      } else {
        this.state.playAnimationCount = 0;
      }
    } else {
      this.playLottie();
    }
  }

  setReverseAnimationOnLoop() {
    const lottieSettings = this.getLottieSettings();
    /*
    We trigger the reverse animation:
    either when we don't have any value in the 'Number of Times" field, and then it will be an infinite forward/backward loop,
    or, when we have a value in the 'Number of Times" field and then we need to limit the number of times of the loop cycles.
     */

    if (!lottieSettings.number_of_times || this.state.playAnimationCount < lottieSettings.number_of_times) {
      this.state.animationDirection = 'forward' === this.state.animationDirection ? 'backward' : 'forward';
      this.playLottie();
      /*
      We need to increment the count only on the backward movements,
      because forward movement + backward movement are equal together to one full movement count.
      */

      if ('backward' === this.state.animationDirection) {
        this.state.playAnimationCount++;
      }
    } else {
      // Reset the values for the loop counting for the next trigger.
      this.state.playAnimationCount = 0;
      this.state.animationDirection = 'forward';
    }
  }

  setReverseAnimationOnSingleTrigger() {
    if (this.state.playAnimationCount < 1) {
      this.state.playAnimationCount++;
      this.state.animationDirection = 'backward';
      this.playLottie();
    } else if (this.state.playAnimationCount >= 1 && 'forward' === this.state.animationDirection) {
      this.state.animationDirection = 'backward';
      this.playLottie();
    } else {
      this.state.playAnimationCount = 0;
      this.state.animationDirection = 'forward';
    }
  }

  setAnimationSpeed() {
    const lottieSettings = this.getLottieSettings();

    if (lottieSettings.play_speed) {
      this.lottie.setSpeed(lottieSettings.play_speed.size);
    }
  }

  onElementChange() {
    this.updateLottieValues();
    this.resetAnimationTrigger();
  }

  updateLottieValues() {
    var _lottieSettings$play_2;

    const lottieSettings = this.getLottieSettings(),
          valuesComparison = [{
      sourceVal: (_lottieSettings$play_2 = lottieSettings.play_speed) === null || _lottieSettings$play_2 === void 0 ? void 0 : _lottieSettings$play_2.size,
      stateProp: 'animationSpeed',
      callback: () => this.setAnimationSpeed()
    }, {
      sourceVal: lottieSettings.link_timeout,
      stateProp: 'linkTimeout',
      callback: () => this.setLinkTimeout()
    }, {
      sourceVal: lottieSettings.caption,
      stateProp: 'caption',
      callback: () => this.setCaption()
    }, {
      sourceVal: lottieSettings.effects_relative_to,
      stateProp: 'effectsRelativeTo',
      callback: () => this.updateAnimationByScrollPosition()
    }, {
      sourceVal: lottieSettings.loop,
      stateProp: 'loop',
      callback: () => this.onLoopStateChange()
    }];
    valuesComparison.forEach(item => {
      if ('undefined' !== typeof item.sourceVal && item.sourceVal !== this.state[item.stateProp]) {
        this.state[item.stateProp] = item.sourceVal;
        item.callback();
      }
    });
  }

  onLoopStateChange() {
    const isInActiveViewportMode = 'arriving_to_viewport' === this.state.currentAnimationTrigger && this.state.isInViewport;

    if (this.state.loop && (isInActiveViewportMode || 'none' === this.state.currentAnimationTrigger)) {
      this.playLottie();
    }
  }

  resetAnimationTrigger() {
    const lottieSettings = this.getLottieSettings(),
          isTriggerChange = lottieSettings.trigger !== this.state.currentAnimationTrigger,
          isViewportOffsetChange = lottieSettings.viewport ? this.isViewportOffsetChange() : false,
          isHoverOutModeChange = lottieSettings.on_hover_out ? this.isHoverOutModeChange() : false,
          isHoverAreaChange = lottieSettings.hover_area ? this.isHoverAreaChange() : false;

    if (isTriggerChange || isViewportOffsetChange || isHoverOutModeChange || isHoverAreaChange) {
      this.removeAnimationFrameRequests();
      this.removeObservers();
      this.removeEventListeners();
      this.initAnimationTrigger();
    }
  }

  isViewportOffsetChange() {
    const lottieSettings = this.getLottieSettings(),
          isStartOffsetChange = lottieSettings.viewport.sizes.start !== this.state.viewportOffset.start,
          isEndOffsetChange = lottieSettings.viewport.sizes.end !== this.state.viewportOffset.end;
    return isStartOffsetChange || isEndOffsetChange;
  }

  isHoverOutModeChange() {
    const lottieSettings = this.getLottieSettings();
    return lottieSettings.on_hover_out !== this.state.hoverOutMode;
  }

  isHoverAreaChange() {
    const lottieSettings = this.getLottieSettings();
    return lottieSettings.hover_area !== this.state.hoverArea;
  }

  removeEventListeners() {
    this.listeners.collection.forEach(listener => {
      listener.$el.off(listener.event, null, listener.callback);
    });
  }

  removeObservers() {
    // Removing all observers.
    for (const type in this.intersectionObservers) {
      if (this.intersectionObservers[type].observer && this.intersectionObservers[type].element) {
        this.intersectionObservers[type].observer.unobserve(this.intersectionObservers[type].element);
      }
    }
  }

  removeAnimationFrameRequests() {
    cancelAnimationFrame(this.animationFrameRequest.timer);
  }

  onDestroy() {
    super.onDestroy();
    this.destroyLottie();
  }

  destroyLottie() {
    this.removeAnimationFrameRequests();
    this.removeObservers();
    this.removeEventListeners();
    this.elements.$animation.removeData('lottie');

    if (this.lottie) {
      this.lottie.destroy();
    }
  }

  onLottieDomLoaded() {
    this.saveInitialValues();
    this.setAnimationSpeed();
    this.setLinkTimeout();
    this.setCaption();
    this.setAnimationFirstFrame();
    this.initAnimationTrigger();
  }

  onComplete() {
    this.setLoopOnAnimationComplete();
  }

  onLottieIntersection(event) {
    if (event.isInViewport) {
      /*
      It's required to update the animation progress on first load when lottie is inside the viewport on load
      but, there is a problem when the browser is refreshed when the scroll bar is not in 0 position,
      in this scenario, after the refresh the browser will trigger 2 scroll events
      one trigger on immediate load and second after a f ew ms to move the scroll bar to previous position (before refresh)
      therefore, we use the this.state.isAnimationScrollUpdateNeededOnFirstLoad flag
      to make sure that this.updateAnimationByScrollPosition() function will be triggered only once.
       */
      if (this.state.isAnimationScrollUpdateNeededOnFirstLoad) {
        this.state.isAnimationScrollUpdateNeededOnFirstLoad = false;
        this.updateAnimationByScrollPosition();
      }

      this.animationFrameRequest.timer = requestAnimationFrame(() => this.onAnimationFrameRequest());
    } else {
      const frame = this.getAnimationFrames(),
            finalFrame = 'up' === event.intersectionScrollDirection ? frame.first : frame.last;
      this.state.isAnimationScrollUpdateNeededOnFirstLoad = false;
      cancelAnimationFrame(this.animationFrameRequest.timer); // Set the animation values to min/max when out of viewport.

      this.lottie.goToAndStop(finalFrame, true);
    }
  }

  onAnimationFrameRequest() {
    // Making calculation only when there is a change with the scroll position.
    if (window.scrollY !== this.animationFrameRequest.lastScrollY) {
      this.updateAnimationByScrollPosition();
      this.animationFrameRequest.lastScrollY = window.scrollY;
    }

    this.animationFrameRequest.timer = requestAnimationFrame(() => this.onAnimationFrameRequest());
  }

}

exports.default = lottieHandler;

/***/ })

}]);
//# sourceMappingURL=lottie.dccf7257e6cc366bc6bd.bundle.js.mapassets/js/code-highlight.cc6c8eb49e0aff6d419e.bundle.js000064400000001775150755004310016311 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["code-highlight"],{

/***/ "../modules/code-highlight/assets/js/frontend/handler.js":
/*!***************************************************************!*\
  !*** ../modules/code-highlight/assets/js/frontend/handler.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class codeHighlightHandler extends elementorModules.frontend.handlers.Base {
  onInit(...args) {
    super.onInit(...args);
    Prism.highlightAllUnder(this.$element[0], false);
  }

  onElementChange() {
    // Handle the changes for "Word Wrap" feature
    Prism.highlightAllUnder(this.$element[0], false);
  }

}

exports.default = codeHighlightHandler;

/***/ })

}]);
//# sourceMappingURL=code-highlight.cc6c8eb49e0aff6d419e.bundle.js.mapassets/js/portfolio.c214590e93207960ce64.bundle.min.js000064400000015653150755004310015502 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[824],{2763:(t,e,s)=>{"use strict";var i=s(7914);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=i(s(2926)),o=n.default.extend({isActive:t=>t.$element.find(".elementor-portfolio").length,getSkinPrefix:()=>"",getDefaultSettings(){var t=n.default.prototype.getDefaultSettings.apply(this,arguments);return t.transitionDuration=450,jQuery.extend(t.classes,{active:"elementor-active",item:"elementor-portfolio-item",ghostItem:"elementor-portfolio-ghost-item"}),t},getDefaultElements(){var t=n.default.prototype.getDefaultElements.apply(this,arguments);return t.$filterButtons=this.$element.find(".elementor-portfolio__filter"),t},getOffset(t,e,s){var i=this.getSettings(),n=this.elements.$postsContainer.width()/i.colsCount-e;return{start:(e+(n+=n/(i.colsCount-1)))*(t%i.colsCount),top:(s+n)*Math.floor(t/i.colsCount)}},getClosureMethodsNames(){return n.default.prototype.getClosureMethodsNames.apply(this,arguments).concat(["onFilterButtonClick"])},filterItems(t){var e=this.elements.$posts,s=this.getSettings("classes.active"),i=".elementor-filter-"+t;"__all"!==t?(e.not(i).removeClass(s),e.filter(i).addClass(s)):e.addClass(s)},removeExtraGhostItems(){var t=this.getSettings(),e=this.elements.$posts.filter(":visible"),s=(t.colsCount-e.length%t.colsCount)%t.colsCount;this.elements.$postsContainer.find("."+t.classes.ghostItem).slice(s).remove()},handleEmptyColumns(){this.removeExtraGhostItems();for(var t=this.getSettings(),e=this.elements.$posts.filter(":visible"),s=this.elements.$postsContainer.find("."+t.classes.ghostItem),i=(t.colsCount-(e.length+s.length)%t.colsCount)%t.colsCount,n=0;n<i;n++)this.elements.$postsContainer.append(jQuery("<div>",{class:t.classes.item+" "+t.classes.ghostItem}))},showItems(t){t.show(),setTimeout((function(){t.css({opacity:1})}))},hideItems(t){t.hide()},arrangeGrid(){var t=jQuery,e=this,s=e.getSettings(),i=e.elements.$posts.filter("."+s.classes.active),n=e.elements.$posts.not("."+s.classes.active),o=e.elements.$posts.filter(":visible"),r=i.add(o),a=i.filter(":visible"),l=i.filter(":hidden"),h=n.filter(":visible"),m=o.outerWidth(),u=o.outerHeight();if(e.elements.$posts.css("transition-duration",s.transitionDuration+"ms"),e.showItems(l),e.isEdit&&e.fitImages(),e.handleEmptyColumns(),e.isMasonryEnabled())return e.hideItems(h),e.showItems(l),e.handleEmptyColumns(),void e.runMasonry();h.css({opacity:0,transform:"scale3d(0.2, 0.2, 1)"}),a.each((function(){var s=t(this),i=e.getOffset(r.index(s),m,u),n=e.getOffset(o.index(s),m,u);i.start===n.start&&i.top===n.top||(n.start-=i.start,n.top-=i.top,elementorFrontend.config.is_rtl&&(n.start*=-1),s.css({transitionDuration:"",transform:"translate3d("+n.start+"px, "+n.top+"px, 0)"}))})),setTimeout((function(){i.each((function(){var n=t(this),o=e.getOffset(r.index(n),m,u),a=e.getOffset(i.index(n),m,u);n.css({transitionDuration:s.transitionDuration+"ms"}),a.start-=o.start,a.top-=o.top,elementorFrontend.config.is_rtl&&(a.start*=-1),setTimeout((function(){n.css("transform","translate3d("+a.start+"px, "+a.top+"px, 0)")}))}))})),setTimeout((function(){e.hideItems(h),i.css({transitionDuration:"",transform:"translate3d(0px, 0px, 0px)"}),e.handleEmptyColumns()}),s.transitionDuration)},activeFilterButton(t){var e=this.getSettings("classes.active"),s=this.elements.$filterButtons,i=s.filter('[data-filter="'+t+'"]');s.removeClass(e),i.addClass(e)},setFilter(t){this.activeFilterButton(t),this.filterItems(t),this.arrangeGrid()},refreshGrid(){this.setColsCountSettings(),this.arrangeGrid()},bindEvents(){n.default.prototype.bindEvents.apply(this,arguments),this.elements.$filterButtons.on("click",this.onFilterButtonClick)},isMasonryEnabled(){return!!this.getElementSettings("masonry")},run(){n.default.prototype.run.apply(this,arguments),this.setColsCountSettings(),this.setFilter("__all"),this.handleEmptyColumns()},onFilterButtonClick(t){this.setFilter(jQuery(t.currentTarget).data("filter"))},onWindowResize(){n.default.prototype.onWindowResize.apply(this,arguments),this.refreshGrid()},onElementChange(t){n.default.prototype.onElementChange.apply(this,arguments),"classic_item_ratio"===t&&this.refreshGrid()}});e.default=o},2926:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var s=elementorModules.frontend.handlers.Base.extend({getSkinPrefix:()=>"classic_",bindEvents(){var t=this.getModelCID();elementorFrontend.addListenerOnce(t,"resize",this.onWindowResize)},getClosureMethodsNames(){return elementorModules.frontend.handlers.Base.prototype.getClosureMethodsNames.apply(this,arguments).concat(["fitImages","onWindowResize","runMasonry"])},getDefaultSettings:()=>({classes:{fitHeight:"elementor-fit-height",hasItemRatio:"elementor-has-item-ratio"},selectors:{postsContainer:".elementor-posts-container",post:".elementor-post",postThumbnail:".elementor-post__thumbnail",postThumbnailImage:".elementor-post__thumbnail img"}}),getDefaultElements(){var t=this.getSettings("selectors");return{$postsContainer:this.$element.find(t.postsContainer),$posts:this.$element.find(t.post)}},fitImage(t){var e=this.getSettings(),s=t.find(e.selectors.postThumbnail),i=s.find("img")[0];if(i){var n=s.outerHeight()/s.outerWidth(),o=i.naturalHeight/i.naturalWidth;s.toggleClass(e.classes.fitHeight,o<n)}},fitImages(){var t=jQuery,e=this,s=getComputedStyle(this.$element[0],":after").content,i=this.getSettings();this.elements.$postsContainer.toggleClass(i.classes.hasItemRatio,!!s.match(/\d/)),e.isMasonryEnabled()||this.elements.$posts.each((function(){var s=t(this),n=s.find(i.selectors.postThumbnailImage);e.fitImage(s),n.on("load",(function(){e.fitImage(s)}))}))},setColsCountSettings(){var t,e=elementorFrontend.getCurrentDeviceMode(),s=this.getElementSettings(),i=this.getSkinPrefix();switch(e){case"mobile":t=s[i+"columns_mobile"];break;case"tablet":t=s[i+"columns_tablet"];break;default:t=s[i+"columns"]}this.setSettings("colsCount",t)},isMasonryEnabled(){return!!this.getElementSettings(this.getSkinPrefix()+"masonry")},initMasonry(){imagesLoaded(this.elements.$posts,this.runMasonry)},runMasonry(){var t=this.elements;t.$posts.css({marginTop:"",transitionDuration:""}),this.setColsCountSettings();var e=this.getSettings("colsCount"),s=this.isMasonryEnabled()&&e>=2;if(t.$postsContainer.toggleClass("elementor-posts-masonry",s),s){var i=this.getElementSettings(this.getSkinPrefix()+"row_gap.size");""===this.getSkinPrefix()&&""===i&&(i=this.getElementSettings(this.getSkinPrefix()+"item_gap.size")),new elementorModules.utils.Masonry({container:t.$postsContainer,items:t.$posts.filter(":visible"),columnsCount:this.getSettings("colsCount"),verticalSpaceBetween:i}).run()}else t.$postsContainer.height("")},run(){setTimeout(this.fitImages,0),this.initMasonry()},onInit(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.bindEvents(),this.run()},onWindowResize(){this.fitImages(),this.runMasonry()},onElementChange(){this.fitImages(),setTimeout(this.runMasonry)}});e.default=s}}]);assets/js/form-submission-admin.js000064400002250532150755004310013253 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js":
/*!********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/array/from.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/array/from */ "../node_modules/core-js/library/fn/array/from.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/array/is-array */ "../node_modules/core-js/library/fn/array/is-array.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/date/now.js":
/*!******************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/date/now.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/date/now */ "../node_modules/core-js/library/fn/date/now.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/assign.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/assign.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/assign */ "../node_modules/core-js/library/fn/object/assign.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/create.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/create.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/create */ "../node_modules/core-js/library/fn/object/create.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js":
/*!**********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js ***!
  \**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/define-properties */ "../node_modules/core-js/library/fn/object/define-properties.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js":
/*!********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/define-property */ "../node_modules/core-js/library/fn/object/define-property.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/entries.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/entries.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/entries */ "../node_modules/core-js/library/fn/object/entries.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js":
/*!********************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js ***!
  \********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-own-property-descriptor */ "../node_modules/core-js/library/fn/object/get-own-property-descriptor.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js":
/*!*********************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js ***!
  \*********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-own-property-descriptors */ "../node_modules/core-js/library/fn/object/get-own-property-descriptors.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js":
/*!*****************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js ***!
  \*****************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-own-property-symbols */ "../node_modules/core-js/library/fn/object/get-own-property-symbols.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-prototype-of */ "../node_modules/core-js/library/fn/object/get-prototype-of.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/keys.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/keys */ "../node_modules/core-js/library/fn/object/keys.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/set-prototype-of */ "../node_modules/core-js/library/fn/object/set-prototype-of.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/values.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/values */ "../node_modules/core-js/library/fn/object/values.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/promise.js":
/*!*****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/promise.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/promise */ "../node_modules/core-js/library/fn/promise.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/reflect/construct */ "../node_modules/core-js/library/fn/reflect/construct.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js":
/*!****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/symbol.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/symbol */ "../node_modules/core-js/library/fn/symbol/index.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js ***!
  \*************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/symbol/iterator */ "../node_modules/core-js/library/fn/symbol/iterator.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/weak-map.js":
/*!******************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/weak-map.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/weak-map */ "../node_modules/core-js/library/fn/weak-map.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js":
/*!**************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js ***!
  \**************************************************************************/
/***/ ((module) => {

function _arrayLikeToArray(arr, len) {
  if (len == null || len > arr.length) len = arr.length;

  for (var i = 0, arr2 = new Array(len); i < len; i++) {
    arr2[i] = arr[i];
  }

  return arr2;
}

module.exports = _arrayLikeToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Array$isArray = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/is-array */ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js");

function _arrayWithHoles(arr) {
  if (_Array$isArray(arr)) return arr;
}

module.exports = _arrayWithHoles;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Array$isArray = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/is-array */ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js");

var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js");

function _arrayWithoutHoles(arr) {
  if (_Array$isArray(arr)) return arrayLikeToArray(arr);
}

module.exports = _arrayWithoutHoles;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js ***!
  \*******************************************************************************/
/***/ ((module) => {

function _assertThisInitialized(self) {
  if (self === void 0) {
    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  }

  return self;
}

module.exports = _assertThisInitialized;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js ***!
  \************************************************************************/
/***/ ((module) => {

function _classCallCheck(instance, Constructor) {
  if (!(instance instanceof Constructor)) {
    throw new TypeError("Cannot call a class as a function");
  }
}

module.exports = _classCallCheck;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/createClass.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

function _defineProperties(target, props) {
  for (var i = 0; i < props.length; i++) {
    var descriptor = props[i];
    descriptor.enumerable = descriptor.enumerable || false;
    descriptor.configurable = true;
    if ("value" in descriptor) descriptor.writable = true;

    _Object$defineProperty(target, descriptor.key, descriptor);
  }
}

function _createClass(Constructor, protoProps, staticProps) {
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
  if (staticProps) _defineProperties(Constructor, staticProps);
  return Constructor;
}

module.exports = _createClass;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/createSuper.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/construct */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js");

var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js");

var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ "../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js");

var possibleConstructorReturn = __webpack_require__(/*! ./possibleConstructorReturn.js */ "../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js");

function _createSuper(Derived) {
  var hasNativeReflectConstruct = isNativeReflectConstruct();
  return function _createSuperInternal() {
    var Super = getPrototypeOf(Derived),
        result;

    if (hasNativeReflectConstruct) {
      var NewTarget = getPrototypeOf(this).constructor;
      result = _Reflect$construct(Super, arguments, NewTarget);
    } else {
      result = Super.apply(this, arguments);
    }

    return possibleConstructorReturn(this, result);
  };
}

module.exports = _createSuper;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

function _defineProperty(obj, key, value) {
  if (key in obj) {
    _Object$defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
  } else {
    obj[key] = value;
  }

  return obj;
}

module.exports = _defineProperty;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/extends.js":
/*!*****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/extends.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$assign = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/assign */ "../node_modules/@babel/runtime-corejs2/core-js/object/assign.js");

function _extends() {
  module.exports = _extends = _Object$assign || function (target) {
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i];

      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }

    return target;
  };

  module.exports.default = module.exports, module.exports.__esModule = true;
  return _extends.apply(this, arguments);
}

module.exports = _extends;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/set-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js");

var _Object$getPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js");

function _getPrototypeOf(o) {
  module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {
    return o.__proto__ || _Object$getPrototypeOf(o);
  };
  module.exports.default = module.exports, module.exports.__esModule = true;
  return _getPrototypeOf(o);
}

module.exports = _getPrototypeOf;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js":
/*!******************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/inherits.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$create = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/create */ "../node_modules/@babel/runtime-corejs2/core-js/object/create.js");

var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js");

function _inherits(subClass, superClass) {
  if (typeof superClass !== "function" && superClass !== null) {
    throw new TypeError("Super expression must either be null or a function");
  }

  subClass.prototype = _Object$create(superClass && superClass.prototype, {
    constructor: {
      value: subClass,
      writable: true,
      configurable: true
    }
  });
  if (superClass) setPrototypeOf(subClass, superClass);
}

module.exports = _inherits;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js ***!
  \*******************************************************************************/
/***/ ((module) => {

function _interopRequireDefault(obj) {
  return obj && obj.__esModule ? obj : {
    "default": obj
  };
}

module.exports = _interopRequireDefault;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js":
/*!********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _typeof = __webpack_require__(/*! @babel/runtime-corejs2/helpers/typeof */ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js").default;

var _WeakMap = __webpack_require__(/*! @babel/runtime-corejs2/core-js/weak-map */ "../node_modules/@babel/runtime-corejs2/core-js/weak-map.js");

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-descriptor */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js");

function _getRequireWildcardCache(nodeInterop) {
  if (typeof _WeakMap !== "function") return null;
  var cacheBabelInterop = new _WeakMap();
  var cacheNodeInterop = new _WeakMap();
  return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
    return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
  })(nodeInterop);
}

function _interopRequireWildcard(obj, nodeInterop) {
  if (!nodeInterop && obj && obj.__esModule) {
    return obj;
  }

  if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") {
    return {
      "default": obj
    };
  }

  var cache = _getRequireWildcardCache(nodeInterop);

  if (cache && cache.has(obj)) {
    return cache.get(obj);
  }

  var newObj = {};
  var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor;

  for (var key in obj) {
    if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
      var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null;

      if (desc && (desc.get || desc.set)) {
        _Object$defineProperty(newObj, key, desc);
      } else {
        newObj[key] = obj[key];
      }
    }
  }

  newObj["default"] = obj;

  if (cache) {
    cache.set(obj, newObj);
  }

  return newObj;
}

module.exports = _interopRequireWildcard;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js":
/*!**********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js ***!
  \**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/construct */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js");

function _isNativeReflectConstruct() {
  if (typeof Reflect === "undefined" || !_Reflect$construct) return false;
  if (_Reflect$construct.sham) return false;
  if (typeof Proxy === "function") return true;

  try {
    Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));
    return true;
  } catch (e) {
    return false;
  }
}

module.exports = _isNativeReflectConstruct;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js ***!
  \*************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

var _Array$from = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/from */ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js");

function _iterableToArray(iter) {
  if (typeof _Symbol !== "undefined" && iter[_Symbol$iterator] != null || iter["@@iterator"] != null) return _Array$from(iter);
}

module.exports = _iterableToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js":
/*!******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js ***!
  \******************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

function _iterableToArrayLimit(arr, i) {
  var _i = arr && (typeof _Symbol !== "undefined" && arr[_Symbol$iterator] || arr["@@iterator"]);

  if (_i == null) return;
  var _arr = [];
  var _n = true;
  var _d = false;

  var _s, _e;

  try {
    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
      _arr.push(_s.value);

      if (i && _arr.length === i) break;
    }
  } catch (err) {
    _d = true;
    _e = err;
  } finally {
    try {
      if (!_n && _i["return"] != null) _i["return"]();
    } finally {
      if (_d) throw _e;
    }
  }

  return _arr;
}

module.exports = _iterableToArrayLimit;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js ***!
  \*************************************************************************/
/***/ ((module) => {

function _nonIterableRest() {
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}

module.exports = _nonIterableRest;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js ***!
  \***************************************************************************/
/***/ ((module) => {

function _nonIterableSpread() {
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}

module.exports = _nonIterableSpread;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$keys = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js");

var _Object$getOwnPropertySymbols = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-symbols */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js");

var _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-descriptor */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js");

var _Object$getOwnPropertyDescriptors = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-descriptors */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js");

var _Object$defineProperties = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-properties */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js");

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var defineProperty = __webpack_require__(/*! ./defineProperty.js */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js");

function ownKeys(object, enumerableOnly) {
  var keys = _Object$keys(object);

  if (_Object$getOwnPropertySymbols) {
    var symbols = _Object$getOwnPropertySymbols(object);

    if (enumerableOnly) {
      symbols = symbols.filter(function (sym) {
        return _Object$getOwnPropertyDescriptor(object, sym).enumerable;
      });
    }

    keys.push.apply(keys, symbols);
  }

  return keys;
}

function _objectSpread2(target) {
  for (var i = 1; i < arguments.length; i++) {
    var source = arguments[i] != null ? arguments[i] : {};

    if (i % 2) {
      ownKeys(Object(source), true).forEach(function (key) {
        defineProperty(target, key, source[key]);
      });
    } else if (_Object$getOwnPropertyDescriptors) {
      _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source));
    } else {
      ownKeys(Object(source)).forEach(function (key) {
        _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key));
      });
    }
  }

  return target;
}

module.exports = _objectSpread2;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js":
/*!***********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js ***!
  \***********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _typeof = __webpack_require__(/*! @babel/runtime-corejs2/helpers/typeof */ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js").default;

var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js");

function _possibleConstructorReturn(self, call) {
  if (call && (_typeof(call) === "object" || typeof call === "function")) {
    return call;
  }

  return assertThisInitialized(self);
}

module.exports = _possibleConstructorReturn;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/set-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js");

function _setPrototypeOf(o, p) {
  module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {
    o.__proto__ = p;
    return o;
  };

  module.exports.default = module.exports, module.exports.__esModule = true;
  return _setPrototypeOf(o, p);
}

module.exports = _setPrototypeOf;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js");

var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js");

var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js");

var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js");

function _slicedToArray(arr, i) {
  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
}

module.exports = _slicedToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js");

var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js");

var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js");

var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js");

function _toConsumableArray(arr) {
  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
}

module.exports = _toConsumableArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js":
/*!****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/typeof.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

function _typeof(obj) {
  "@babel/helpers - typeof";

  if (typeof _Symbol === "function" && typeof _Symbol$iterator === "symbol") {
    module.exports = _typeof = function _typeof(obj) {
      return typeof obj;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  } else {
    module.exports = _typeof = function _typeof(obj) {
      return obj && typeof _Symbol === "function" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? "symbol" : typeof obj;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  }

  return _typeof(obj);
}

module.exports = _typeof;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js":
/*!************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js ***!
  \************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Array$from = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/from */ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js");

var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js");

function _unsupportedIterableToArray(o, minLen) {
  if (!o) return;
  if (typeof o === "string") return arrayLikeToArray(o, minLen);
  var n = Object.prototype.toString.call(o).slice(8, -1);
  if (n === "Object" && o.constructor) n = o.constructor.name;
  if (n === "Map" || n === "Set") return _Array$from(o);
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
}

module.exports = _unsupportedIterableToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@reach/router/es/index.js":
/*!*************************************************!*\
  !*** ../node_modules/@reach/router/es/index.js ***!
  \*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Link": () => (/* binding */ Link),
/* harmony export */   "Location": () => (/* binding */ Location),
/* harmony export */   "LocationProvider": () => (/* binding */ LocationProvider),
/* harmony export */   "Match": () => (/* binding */ Match),
/* harmony export */   "Redirect": () => (/* binding */ Redirect),
/* harmony export */   "Router": () => (/* binding */ Router),
/* harmony export */   "ServerLocation": () => (/* binding */ ServerLocation),
/* harmony export */   "createHistory": () => (/* reexport safe */ _lib_history__WEBPACK_IMPORTED_MODULE_6__.createHistory),
/* harmony export */   "createMemorySource": () => (/* reexport safe */ _lib_history__WEBPACK_IMPORTED_MODULE_6__.createMemorySource),
/* harmony export */   "isRedirect": () => (/* binding */ isRedirect),
/* harmony export */   "navigate": () => (/* reexport safe */ _lib_history__WEBPACK_IMPORTED_MODULE_6__.navigate),
/* harmony export */   "redirectTo": () => (/* binding */ redirectTo),
/* harmony export */   "globalHistory": () => (/* reexport safe */ _lib_history__WEBPACK_IMPORTED_MODULE_6__.globalHistory),
/* harmony export */   "matchPath": () => (/* reexport safe */ _lib_utils__WEBPACK_IMPORTED_MODULE_5__.match),
/* harmony export */   "useLocation": () => (/* binding */ useLocation),
/* harmony export */   "useNavigate": () => (/* binding */ useNavigate),
/* harmony export */   "useParams": () => (/* binding */ useParams),
/* harmony export */   "useMatch": () => (/* binding */ useMatch)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var invariant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! invariant */ "../node_modules/invariant/browser.js");
/* harmony import */ var invariant__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(invariant__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var create_react_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! create-react-context */ "../node_modules/create-react-context/lib/index.js");
/* harmony import */ var create_react_context__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(create_react_context__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var react_lifecycles_compat__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-lifecycles-compat */ "../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js");
/* harmony import */ var _lib_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib/utils */ "../node_modules/@reach/router/es/lib/utils.js");
/* harmony import */ var _lib_history__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/history */ "../node_modules/@reach/router/es/lib/history.js");
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }

/* eslint-disable jsx-a11y/anchor-has-content */








////////////////////////////////////////////////////////////////////////////////

var createNamedContext = function createNamedContext(name, defaultValue) {
  var Ctx = create_react_context__WEBPACK_IMPORTED_MODULE_3___default()(defaultValue);
  Ctx.displayName = name;
  return Ctx;
};

////////////////////////////////////////////////////////////////////////////////
// Location Context/Provider
var LocationContext = createNamedContext("Location");

// sets up a listener if there isn't one already so apps don't need to be
// wrapped in some top level provider
var Location = function Location(_ref) {
  var children = _ref.children;
  return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
    LocationContext.Consumer,
    null,
    function (context) {
      return context ? children(context) : react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
        LocationProvider,
        null,
        children
      );
    }
  );
};

var LocationProvider = function (_React$Component) {
  _inherits(LocationProvider, _React$Component);

  function LocationProvider() {
    var _temp, _this, _ret;

    _classCallCheck(this, LocationProvider);

    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {
      context: _this.getContext(),
      refs: { unlisten: null }
    }, _temp), _possibleConstructorReturn(_this, _ret);
  }

  LocationProvider.prototype.getContext = function getContext() {
    var _props$history = this.props.history,
        navigate = _props$history.navigate,
        location = _props$history.location;

    return { navigate: navigate, location: location };
  };

  LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {
    if (isRedirect(error)) {
      var _navigate = this.props.history.navigate;

      _navigate(error.uri, { replace: true });
    } else {
      throw error;
    }
  };

  LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
    if (prevState.context.location !== this.state.context.location) {
      this.props.history._onTransitionComplete();
    }
  };

  LocationProvider.prototype.componentDidMount = function componentDidMount() {
    var _this2 = this;

    var refs = this.state.refs,
        history = this.props.history;

    history._onTransitionComplete();
    refs.unlisten = history.listen(function () {
      Promise.resolve().then(function () {
        // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306
        requestAnimationFrame(function () {
          if (!_this2.unmounted) {
            _this2.setState(function () {
              return { context: _this2.getContext() };
            });
          }
        });
      });
    });
  };

  LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {
    var refs = this.state.refs;

    this.unmounted = true;
    refs.unlisten();
  };

  LocationProvider.prototype.render = function render() {
    var context = this.state.context,
        children = this.props.children;

    return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
      LocationContext.Provider,
      { value: context },
      typeof children === "function" ? children(context) : children || null
    );
  };

  return LocationProvider;
}((react__WEBPACK_IMPORTED_MODULE_0___default().Component));

////////////////////////////////////////////////////////////////////////////////


LocationProvider.defaultProps = {
  history: _lib_history__WEBPACK_IMPORTED_MODULE_6__.globalHistory
};
 true ? LocationProvider.propTypes = {
  history: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object.isRequired)
} : 0;
var ServerLocation = function ServerLocation(_ref2) {
  var url = _ref2.url,
      children = _ref2.children;

  var searchIndex = url.indexOf("?");
  var searchExists = searchIndex > -1;
  var pathname = void 0;
  var search = "";
  var hash = "";

  if (searchExists) {
    pathname = url.substring(0, searchIndex);
    search = url.substring(searchIndex);
  } else {
    pathname = url;
  }

  return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
    LocationContext.Provider,
    {
      value: {
        location: {
          pathname: pathname,
          search: search,
          hash: hash
        },
        navigate: function navigate() {
          throw new Error("You can't call navigate on the server.");
        }
      }
    },
    children
  );
};
////////////////////////////////////////////////////////////////////////////////
// Sets baseuri and basepath for nested routers and links
var BaseContext = createNamedContext("Base", { baseuri: "/", basepath: "/" });

////////////////////////////////////////////////////////////////////////////////
// The main event, welcome to the show everybody.
var Router = function Router(props) {
  return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
    BaseContext.Consumer,
    null,
    function (baseContext) {
      return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
        Location,
        null,
        function (locationContext) {
          return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(RouterImpl, _extends({}, baseContext, locationContext, props));
        }
      );
    }
  );
};

var RouterImpl = function (_React$PureComponent) {
  _inherits(RouterImpl, _React$PureComponent);

  function RouterImpl() {
    _classCallCheck(this, RouterImpl);

    return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));
  }

  RouterImpl.prototype.render = function render() {
    var _props = this.props,
        location = _props.location,
        _navigate2 = _props.navigate,
        basepath = _props.basepath,
        primary = _props.primary,
        children = _props.children,
        baseuri = _props.baseuri,
        _props$component = _props.component,
        component = _props$component === undefined ? "div" : _props$component,
        domProps = _objectWithoutProperties(_props, ["location", "navigate", "basepath", "primary", "children", "baseuri", "component"]);

    var routes = react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(children).reduce(function (array, child) {
      var routes = createRoute(basepath)(child);
      return array.concat(routes);
    }, []);
    var pathname = location.pathname;


    var match = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.pick)(routes, pathname);

    if (match) {
      var params = match.params,
          uri = match.uri,
          route = match.route,
          element = match.route.value;

      // remove the /* from the end for child routes relative paths

      basepath = route.default ? basepath : route.path.replace(/\*$/, "");

      var props = _extends({}, params, {
        uri: uri,
        location: location,
        navigate: function navigate(to, options) {
          return _navigate2((0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.resolve)(to, uri), options);
        }
      });

      var clone = react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(element, props, element.props.children ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
        Router,
        { location: location, primary: primary },
        element.props.children
      ) : undefined);

      // using 'div' for < 16.3 support
      var FocusWrapper = primary ? FocusHandler : component;
      // don't pass any props to 'div'
      var wrapperProps = primary ? _extends({ uri: uri, location: location, component: component }, domProps) : domProps;

      return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
        BaseContext.Provider,
        { value: { baseuri: uri, basepath: basepath } },
        react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
          FocusWrapper,
          wrapperProps,
          clone
        )
      );
    } else {
      // Not sure if we want this, would require index routes at every level
      // warning(
      //   false,
      //   `<Router basepath="${basepath}">\n\nNothing matched:\n\t${
      //     location.pathname
      //   }\n\nPaths checked: \n\t${routes
      //     .map(route => route.path)
      //     .join(
      //       "\n\t"
      //     )}\n\nTo get rid of this warning, add a default NotFound component as child of Router:
      //   \n\tlet NotFound = () => <div>Not Found!</div>
      //   \n\t<Router>\n\t  <NotFound default/>\n\t  {/* ... */}\n\t</Router>`
      // );
      return null;
    }
  };

  return RouterImpl;
}((react__WEBPACK_IMPORTED_MODULE_0___default().PureComponent));

RouterImpl.defaultProps = {
  primary: true
};


var FocusContext = createNamedContext("Focus");

var FocusHandler = function FocusHandler(_ref3) {
  var uri = _ref3.uri,
      location = _ref3.location,
      component = _ref3.component,
      domProps = _objectWithoutProperties(_ref3, ["uri", "location", "component"]);

  return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
    FocusContext.Consumer,
    null,
    function (requestFocus) {
      return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(FocusHandlerImpl, _extends({}, domProps, {
        component: component,
        requestFocus: requestFocus,
        uri: uri,
        location: location
      }));
    }
  );
};

// don't focus on initial render
var initialRender = true;
var focusHandlerCount = 0;

var FocusHandlerImpl = function (_React$Component2) {
  _inherits(FocusHandlerImpl, _React$Component2);

  function FocusHandlerImpl() {
    var _temp2, _this4, _ret2;

    _classCallCheck(this, FocusHandlerImpl);

    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
      args[_key2] = arguments[_key2];
    }

    return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {
      if (!_this4.state.shouldFocus && node) {
        node.focus();
      }
    }, _temp2), _possibleConstructorReturn(_this4, _ret2);
  }

  FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {
    var initial = prevState.uri == null;
    if (initial) {
      return _extends({
        shouldFocus: true
      }, nextProps);
    } else {
      var myURIChanged = nextProps.uri !== prevState.uri;
      var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;
      return _extends({
        shouldFocus: myURIChanged || navigatedUpToMe
      }, nextProps);
    }
  };

  FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {
    focusHandlerCount++;
    this.focus();
  };

  FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {
    focusHandlerCount--;
    if (focusHandlerCount === 0) {
      initialRender = true;
    }
  };

  FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
    if (prevProps.location !== this.props.location && this.state.shouldFocus) {
      this.focus();
    }
  };

  FocusHandlerImpl.prototype.focus = function focus() {
    if (false) {}

    var requestFocus = this.props.requestFocus;


    if (requestFocus) {
      requestFocus(this.node);
    } else {
      if (initialRender) {
        initialRender = false;
      } else if (this.node) {
        // React polyfills [autofocus] and it fires earlier than cDM,
        // so we were stealing focus away, this line prevents that.
        if (!this.node.contains(document.activeElement)) {
          this.node.focus();
        }
      }
    }
  };

  FocusHandlerImpl.prototype.render = function render() {
    var _this5 = this;

    var _props2 = this.props,
        children = _props2.children,
        style = _props2.style,
        requestFocus = _props2.requestFocus,
        _props2$component = _props2.component,
        Comp = _props2$component === undefined ? "div" : _props2$component,
        uri = _props2.uri,
        location = _props2.location,
        domProps = _objectWithoutProperties(_props2, ["children", "style", "requestFocus", "component", "uri", "location"]);

    return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
      Comp,
      _extends({
        style: _extends({ outline: "none" }, style),
        tabIndex: "-1",
        ref: function ref(n) {
          return _this5.node = n;
        }
      }, domProps),
      react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
        FocusContext.Provider,
        { value: this.requestFocus },
        this.props.children
      )
    );
  };

  return FocusHandlerImpl;
}((react__WEBPACK_IMPORTED_MODULE_0___default().Component));

(0,react_lifecycles_compat__WEBPACK_IMPORTED_MODULE_4__.polyfill)(FocusHandlerImpl);

var k = function k() {};

////////////////////////////////////////////////////////////////////////////////
var forwardRef = (react__WEBPACK_IMPORTED_MODULE_0___default().forwardRef);

if (typeof forwardRef === "undefined") {
  forwardRef = function forwardRef(C) {
    return C;
  };
}

var Link = forwardRef(function (_ref4, ref) {
  var innerRef = _ref4.innerRef,
      props = _objectWithoutProperties(_ref4, ["innerRef"]);

  return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
    BaseContext.Consumer,
    null,
    function (_ref5) {
      var basepath = _ref5.basepath,
          baseuri = _ref5.baseuri;
      return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
        Location,
        null,
        function (_ref6) {
          var location = _ref6.location,
              navigate = _ref6.navigate;

          var to = props.to,
              state = props.state,
              replace = props.replace,
              _props$getProps = props.getProps,
              getProps = _props$getProps === undefined ? k : _props$getProps,
              anchorProps = _objectWithoutProperties(props, ["to", "state", "replace", "getProps"]);

          var href = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.resolve)(to, baseuri);
          var encodedHref = encodeURI(href);
          var isCurrent = location.pathname === encodedHref;
          var isPartiallyCurrent = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.startsWith)(location.pathname, encodedHref);

          return react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", _extends({
            ref: ref || innerRef,
            "aria-current": isCurrent ? "page" : undefined
          }, anchorProps, getProps({ isCurrent: isCurrent, isPartiallyCurrent: isPartiallyCurrent, href: href, location: location }), {
            href: href,
            onClick: function onClick(event) {
              if (anchorProps.onClick) anchorProps.onClick(event);
              if (shouldNavigate(event)) {
                event.preventDefault();
                var shouldReplace = replace;
                if (typeof replace !== "boolean" && isCurrent) {
                  var _location$state = _extends({}, location.state),
                      key = _location$state.key,
                      restState = _objectWithoutProperties(_location$state, ["key"]);

                  shouldReplace = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.shallowCompare)(_extends({}, state), restState);
                }
                navigate(href, {
                  state: state,
                  replace: shouldReplace
                });
              }
            }
          }));
        }
      );
    }
  );
});

Link.displayName = "Link";

 true ? Link.propTypes = {
  to: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string.isRequired)
} : 0;

////////////////////////////////////////////////////////////////////////////////
function RedirectRequest(uri) {
  this.uri = uri;
}

var isRedirect = function isRedirect(o) {
  return o instanceof RedirectRequest;
};

var redirectTo = function redirectTo(to) {
  throw new RedirectRequest(to);
};

var RedirectImpl = function (_React$Component3) {
  _inherits(RedirectImpl, _React$Component3);

  function RedirectImpl() {
    _classCallCheck(this, RedirectImpl);

    return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));
  }

  // Support React < 16 with this hook
  RedirectImpl.prototype.componentDidMount = function componentDidMount() {
    var _props3 = this.props,
        navigate = _props3.navigate,
        to = _props3.to,
        from = _props3.from,
        _props3$replace = _props3.replace,
        replace = _props3$replace === undefined ? true : _props3$replace,
        state = _props3.state,
        noThrow = _props3.noThrow,
        baseuri = _props3.baseuri,
        props = _objectWithoutProperties(_props3, ["navigate", "to", "from", "replace", "state", "noThrow", "baseuri"]);

    Promise.resolve().then(function () {
      var resolvedTo = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.resolve)(to, baseuri);
      navigate((0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.insertParams)(resolvedTo, props), { replace: replace, state: state });
    });
  };

  RedirectImpl.prototype.render = function render() {
    var _props4 = this.props,
        navigate = _props4.navigate,
        to = _props4.to,
        from = _props4.from,
        replace = _props4.replace,
        state = _props4.state,
        noThrow = _props4.noThrow,
        baseuri = _props4.baseuri,
        props = _objectWithoutProperties(_props4, ["navigate", "to", "from", "replace", "state", "noThrow", "baseuri"]);

    var resolvedTo = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.resolve)(to, baseuri);
    if (!noThrow) redirectTo((0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.insertParams)(resolvedTo, props));
    return null;
  };

  return RedirectImpl;
}((react__WEBPACK_IMPORTED_MODULE_0___default().Component));

var Redirect = function Redirect(props) {
  return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
    BaseContext.Consumer,
    null,
    function (_ref7) {
      var baseuri = _ref7.baseuri;
      return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
        Location,
        null,
        function (locationContext) {
          return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(RedirectImpl, _extends({}, locationContext, { baseuri: baseuri }, props));
        }
      );
    }
  );
};

 true ? Redirect.propTypes = {
  from: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
  to: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string.isRequired)
} : 0;

////////////////////////////////////////////////////////////////////////////////
var Match = function Match(_ref8) {
  var path = _ref8.path,
      children = _ref8.children;
  return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
    BaseContext.Consumer,
    null,
    function (_ref9) {
      var baseuri = _ref9.baseuri;
      return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
        Location,
        null,
        function (_ref10) {
          var navigate = _ref10.navigate,
              location = _ref10.location;

          var resolvedPath = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.resolve)(path, baseuri);
          var result = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.match)(resolvedPath, location.pathname);
          return children({
            navigate: navigate,
            location: location,
            match: result ? _extends({}, result.params, {
              uri: result.uri,
              path: path
            }) : null
          });
        }
      );
    }
  );
};

////////////////////////////////////////////////////////////////////////////////
// Hooks

var useLocation = function useLocation() {
  var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(LocationContext);

  if (!context) {
    throw new Error("useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");
  }

  return context.location;
};

var useNavigate = function useNavigate() {
  var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(LocationContext);

  if (!context) {
    throw new Error("useNavigate hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");
  }

  return context.navigate;
};

var useParams = function useParams() {
  var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(BaseContext);

  if (!context) {
    throw new Error("useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");
  }

  var location = useLocation();

  var results = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.match)(context.basepath, location.pathname);

  return results ? results.params : null;
};

var useMatch = function useMatch(path) {
  if (!path) {
    throw new Error("useMatch(path: string) requires an argument of a string to match against");
  }
  var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(BaseContext);

  if (!context) {
    throw new Error("useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");
  }

  var location = useLocation();

  var resolvedPath = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.resolve)(path, context.baseuri);
  var result = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.match)(resolvedPath, location.pathname);
  return result ? _extends({}, result.params, {
    uri: result.uri,
    path: path
  }) : null;
};

////////////////////////////////////////////////////////////////////////////////
// Junk
var stripSlashes = function stripSlashes(str) {
  return str.replace(/(^\/+|\/+$)/g, "");
};

var createRoute = function createRoute(basepath) {
  return function (element) {
    if (!element) {
      return null;
    }

    if (element.type === (react__WEBPACK_IMPORTED_MODULE_0___default().Fragment) && element.props.children) {
      return react__WEBPACK_IMPORTED_MODULE_0___default().Children.map(element.props.children, createRoute(basepath));
    }
    !(element.props.path || element.props.default || element.type === Redirect) ?  true ? invariant__WEBPACK_IMPORTED_MODULE_2___default()(false, "<Router>: Children of <Router> must have a `path` or `default` prop, or be a `<Redirect>`. None found on element type `" + element.type + "`") : 0 : void 0;

    !!(element.type === Redirect && (!element.props.from || !element.props.to)) ?  true ? invariant__WEBPACK_IMPORTED_MODULE_2___default()(false, "<Redirect from=\"" + element.props.from + "\" to=\"" + element.props.to + "\"/> requires both \"from\" and \"to\" props when inside a <Router>.") : 0 : void 0;

    !!(element.type === Redirect && !(0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.validateRedirect)(element.props.from, element.props.to)) ?  true ? invariant__WEBPACK_IMPORTED_MODULE_2___default()(false, "<Redirect from=\"" + element.props.from + " to=\"" + element.props.to + "\"/> has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.") : 0 : void 0;

    if (element.props.default) {
      return { value: element, default: true };
    }

    var elementPath = element.type === Redirect ? element.props.from : element.props.path;

    var path = elementPath === "/" ? basepath : stripSlashes(basepath) + "/" + stripSlashes(elementPath);

    return {
      value: element,
      default: element.props.default,
      path: element.props.children ? stripSlashes(path) + "/*" : path
    };
  };
};

var shouldNavigate = function shouldNavigate(event) {
  return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);
};

////////////////////////////////////////////////////////////////////////


/***/ }),

/***/ "../node_modules/@reach/router/es/lib/history.js":
/*!*******************************************************!*\
  !*** ../node_modules/@reach/router/es/lib/history.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "globalHistory": () => (/* binding */ globalHistory),
/* harmony export */   "navigate": () => (/* binding */ navigate),
/* harmony export */   "createHistory": () => (/* binding */ createHistory),
/* harmony export */   "createMemorySource": () => (/* binding */ createMemorySource)
/* harmony export */ });
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

var getLocation = function getLocation(source) {
  var _source$location = source.location,
      search = _source$location.search,
      hash = _source$location.hash,
      href = _source$location.href,
      origin = _source$location.origin,
      protocol = _source$location.protocol,
      host = _source$location.host,
      hostname = _source$location.hostname,
      port = _source$location.port;
  var pathname = source.location.pathname;


  if (!pathname && href && canUseDOM) {
    var url = new URL(href);
    pathname = url.pathname;
  }

  return {
    pathname: encodeURI(decodeURI(pathname)),
    search: search,
    hash: hash,
    href: href,
    origin: origin,
    protocol: protocol,
    host: host,
    hostname: hostname,
    port: port,
    state: source.history.state,
    key: source.history.state && source.history.state.key || "initial"
  };
};

var createHistory = function createHistory(source, options) {
  var listeners = [];
  var location = getLocation(source);
  var transitioning = false;
  var resolveTransition = function resolveTransition() {};

  return {
    get location() {
      return location;
    },

    get transitioning() {
      return transitioning;
    },

    _onTransitionComplete: function _onTransitionComplete() {
      transitioning = false;
      resolveTransition();
    },
    listen: function listen(listener) {
      listeners.push(listener);

      var popstateListener = function popstateListener() {
        location = getLocation(source);
        listener({ location: location, action: "POP" });
      };

      source.addEventListener("popstate", popstateListener);

      return function () {
        source.removeEventListener("popstate", popstateListener);
        listeners = listeners.filter(function (fn) {
          return fn !== listener;
        });
      };
    },
    navigate: function navigate(to) {
      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
          state = _ref.state,
          _ref$replace = _ref.replace,
          replace = _ref$replace === undefined ? false : _ref$replace;

      if (typeof to === "number") {
        source.history.go(to);
      } else {
        state = _extends({}, state, { key: Date.now() + "" });
        // try...catch iOS Safari limits to 100 pushState calls
        try {
          if (transitioning || replace) {
            source.history.replaceState(state, null, to);
          } else {
            source.history.pushState(state, null, to);
          }
        } catch (e) {
          source.location[replace ? "replace" : "assign"](to);
        }
      }

      location = getLocation(source);
      transitioning = true;
      var transition = new Promise(function (res) {
        return resolveTransition = res;
      });
      listeners.forEach(function (listener) {
        return listener({ location: location, action: "PUSH" });
      });
      return transition;
    }
  };
};

////////////////////////////////////////////////////////////////////////////////
// Stores history entries in memory for testing or other platforms like Native
var createMemorySource = function createMemorySource() {
  var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "/";

  var searchIndex = initialPath.indexOf("?");
  var initialLocation = {
    pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,
    search: searchIndex > -1 ? initialPath.substr(searchIndex) : ""
  };
  var index = 0;
  var stack = [initialLocation];
  var states = [null];

  return {
    get location() {
      return stack[index];
    },
    addEventListener: function addEventListener(name, fn) {},
    removeEventListener: function removeEventListener(name, fn) {},

    history: {
      get entries() {
        return stack;
      },
      get index() {
        return index;
      },
      get state() {
        return states[index];
      },
      pushState: function pushState(state, _, uri) {
        var _uri$split = uri.split("?"),
            pathname = _uri$split[0],
            _uri$split$ = _uri$split[1],
            search = _uri$split$ === undefined ? "" : _uri$split$;

        index++;
        stack.push({ pathname: pathname, search: search.length ? "?" + search : search });
        states.push(state);
      },
      replaceState: function replaceState(state, _, uri) {
        var _uri$split2 = uri.split("?"),
            pathname = _uri$split2[0],
            _uri$split2$ = _uri$split2[1],
            search = _uri$split2$ === undefined ? "" : _uri$split2$;

        stack[index] = { pathname: pathname, search: search };
        states[index] = state;
      },
      go: function go(to) {
        var newIndex = index + to;

        if (newIndex < 0 || newIndex > states.length - 1) {
          return;
        }

        index = newIndex;
      }
    }
  };
};

////////////////////////////////////////////////////////////////////////////////
// global history - uses window.history as the source if available, otherwise a
// memory history
var canUseDOM = !!(typeof window !== "undefined" && window.document && window.document.createElement);
var getSource = function getSource() {
  return canUseDOM ? window : createMemorySource();
};

var globalHistory = createHistory(getSource());
var navigate = globalHistory.navigate;

////////////////////////////////////////////////////////////////////////////////



/***/ }),

/***/ "../node_modules/@reach/router/es/lib/utils.js":
/*!*****************************************************!*\
  !*** ../node_modules/@reach/router/es/lib/utils.js ***!
  \*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "startsWith": () => (/* binding */ startsWith),
/* harmony export */   "pick": () => (/* binding */ pick),
/* harmony export */   "match": () => (/* binding */ match),
/* harmony export */   "resolve": () => (/* binding */ resolve),
/* harmony export */   "insertParams": () => (/* binding */ insertParams),
/* harmony export */   "validateRedirect": () => (/* binding */ validateRedirect),
/* harmony export */   "shallowCompare": () => (/* binding */ shallowCompare)
/* harmony export */ });
/* harmony import */ var invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! invariant */ "../node_modules/invariant/browser.js");
/* harmony import */ var invariant__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(invariant__WEBPACK_IMPORTED_MODULE_0__);


////////////////////////////////////////////////////////////////////////////////
// startsWith(string, search) - Check if `string` starts with `search`
var startsWith = function startsWith(string, search) {
  return string.substr(0, search.length) === search;
};

////////////////////////////////////////////////////////////////////////////////
// pick(routes, uri)
//
// Ranks and picks the best route to match. Each segment gets the highest
// amount of points, then the type of segment gets an additional amount of
// points where
//
//     static > dynamic > splat > root
//
// This way we don't have to worry about the order of our routes, let the
// computers do it.
//
// A route looks like this
//
//     { path, default, value }
//
// And a returned match looks like:
//
//     { route, params, uri }
//
// I know, I should use TypeScript not comments for these types.
var pick = function pick(routes, uri) {
  var match = void 0;
  var default_ = void 0;

  var _uri$split = uri.split("?"),
      uriPathname = _uri$split[0];

  var uriSegments = segmentize(uriPathname);
  var isRootUri = uriSegments[0] === "";
  var ranked = rankRoutes(routes);

  for (var i = 0, l = ranked.length; i < l; i++) {
    var missed = false;
    var route = ranked[i].route;

    if (route.default) {
      default_ = {
        route: route,
        params: {},
        uri: uri
      };
      continue;
    }

    var routeSegments = segmentize(route.path);
    var params = {};
    var max = Math.max(uriSegments.length, routeSegments.length);
    var index = 0;

    for (; index < max; index++) {
      var routeSegment = routeSegments[index];
      var uriSegment = uriSegments[index];

      if (isSplat(routeSegment)) {
        // Hit a splat, just grab the rest, and return a match
        // uri:   /files/documents/work
        // route: /files/*
        var param = routeSegment.slice(1) || "*";
        params[param] = uriSegments.slice(index).map(decodeURIComponent).join("/");
        break;
      }

      if (uriSegment === undefined) {
        // URI is shorter than the route, no match
        // uri:   /users
        // route: /users/:userId
        missed = true;
        break;
      }

      var dynamicMatch = paramRe.exec(routeSegment);

      if (dynamicMatch && !isRootUri) {
        var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;
        !matchIsNotReserved ?  true ? invariant__WEBPACK_IMPORTED_MODULE_0___default()(false, "<Router> dynamic segment \"" + dynamicMatch[1] + "\" is a reserved name. Please use a different name in path \"" + route.path + "\".") : 0 : void 0;
        var value = decodeURIComponent(uriSegment);
        params[dynamicMatch[1]] = value;
      } else if (routeSegment !== uriSegment) {
        // Current segments don't match, not dynamic, not splat, so no match
        // uri:   /users/123/settings
        // route: /users/:id/profile
        missed = true;
        break;
      }
    }

    if (!missed) {
      match = {
        route: route,
        params: params,
        uri: "/" + uriSegments.slice(0, index).join("/")
      };
      break;
    }
  }

  return match || default_ || null;
};

////////////////////////////////////////////////////////////////////////////////
// match(path, uri) - Matches just one path to a uri, also lol
var match = function match(path, uri) {
  return pick([{ path: path }], uri);
};

////////////////////////////////////////////////////////////////////////////////
// resolve(to, basepath)
//
// Resolves URIs as though every path is a directory, no files.  Relative URIs
// in the browser can feel awkward because not only can you be "in a directory"
// you can be "at a file", too. For example
//
//     browserSpecResolve('foo', '/bar/') => /bar/foo
//     browserSpecResolve('foo', '/bar') => /foo
//
// But on the command line of a file system, it's not as complicated, you can't
// `cd` from a file, only directories.  This way, links have to know less about
// their current path. To go deeper you can do this:
//
//     <Link to="deeper"/>
//     // instead of
//     <Link to=`{${props.uri}/deeper}`/>
//
// Just like `cd`, if you want to go deeper from the command line, you do this:
//
//     cd deeper
//     # not
//     cd $(pwd)/deeper
//
// By treating every path as a directory, linking to relative paths should
// require less contextual information and (fingers crossed) be more intuitive.
var resolve = function resolve(to, base) {
  // /foo/bar, /baz/qux => /foo/bar
  if (startsWith(to, "/")) {
    return to;
  }

  var _to$split = to.split("?"),
      toPathname = _to$split[0],
      toQuery = _to$split[1];

  var _base$split = base.split("?"),
      basePathname = _base$split[0];

  var toSegments = segmentize(toPathname);
  var baseSegments = segmentize(basePathname);

  // ?a=b, /users?b=c => /users?a=b
  if (toSegments[0] === "") {
    return addQuery(basePathname, toQuery);
  }

  // profile, /users/789 => /users/789/profile
  if (!startsWith(toSegments[0], ".")) {
    var pathname = baseSegments.concat(toSegments).join("/");
    return addQuery((basePathname === "/" ? "" : "/") + pathname, toQuery);
  }

  // ./         /users/123  =>  /users/123
  // ../        /users/123  =>  /users
  // ../..      /users/123  =>  /
  // ../../one  /a/b/c/d    =>  /a/b/one
  // .././one   /a/b/c/d    =>  /a/b/c/one
  var allSegments = baseSegments.concat(toSegments);
  var segments = [];
  for (var i = 0, l = allSegments.length; i < l; i++) {
    var segment = allSegments[i];
    if (segment === "..") segments.pop();else if (segment !== ".") segments.push(segment);
  }

  return addQuery("/" + segments.join("/"), toQuery);
};

////////////////////////////////////////////////////////////////////////////////
// insertParams(path, params)

var insertParams = function insertParams(path, params) {
  var _path$split = path.split("?"),
      pathBase = _path$split[0],
      _path$split$ = _path$split[1],
      query = _path$split$ === undefined ? "" : _path$split$;

  var segments = segmentize(pathBase);
  var constructedPath = "/" + segments.map(function (segment) {
    var match = paramRe.exec(segment);
    return match ? params[match[1]] : segment;
  }).join("/");
  var _params$location = params.location;
  _params$location = _params$location === undefined ? {} : _params$location;
  var _params$location$sear = _params$location.search,
      search = _params$location$sear === undefined ? "" : _params$location$sear;

  var searchSplit = search.split("?")[1] || "";
  constructedPath = addQuery(constructedPath, query, searchSplit);
  return constructedPath;
};

var validateRedirect = function validateRedirect(from, to) {
  var filter = function filter(segment) {
    return isDynamic(segment);
  };
  var fromString = segmentize(from).filter(filter).sort().join("/");
  var toString = segmentize(to).filter(filter).sort().join("/");
  return fromString === toString;
};

////////////////////////////////////////////////////////////////////////////////
// Junk
var paramRe = /^:(.+)/;

var SEGMENT_POINTS = 4;
var STATIC_POINTS = 3;
var DYNAMIC_POINTS = 2;
var SPLAT_PENALTY = 1;
var ROOT_POINTS = 1;

var isRootSegment = function isRootSegment(segment) {
  return segment === "";
};
var isDynamic = function isDynamic(segment) {
  return paramRe.test(segment);
};
var isSplat = function isSplat(segment) {
  return segment && segment[0] === "*";
};

var rankRoute = function rankRoute(route, index) {
  var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {
    score += SEGMENT_POINTS;
    if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;
    return score;
  }, 0);
  return { route: route, score: score, index: index };
};

var rankRoutes = function rankRoutes(routes) {
  return routes.map(rankRoute).sort(function (a, b) {
    return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;
  });
};

var segmentize = function segmentize(uri) {
  return uri
  // strip starting/ending slashes
  .replace(/(^\/+|\/+$)/g, "").split("/");
};

var addQuery = function addQuery(pathname) {
  for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
    query[_key - 1] = arguments[_key];
  }

  query = query.filter(function (q) {
    return q && q.length > 0;
  });
  return pathname + (query && query.length > 0 ? "?" + query.join("&") : "");
};

var reservedNames = ["uri", "path"];

/**
 * Shallow compares two objects.
 * @param {Object} obj1 The first object to compare.
 * @param {Object} obj2 The second object to compare.
 */
var shallowCompare = function shallowCompare(obj1, obj2) {
  var obj1Keys = Object.keys(obj1);
  return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {
    return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];
  });
};

////////////////////////////////////////////////////////////////////////////////


/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/app.js":
/*!***********************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/app.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = App;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");

var _noticesContext = __webpack_require__(/*! ./context/notices-context */ "../modules/forms/submissions/assets/js/admin/context/notices-context.js");

var _settingsContext = __webpack_require__(/*! ./context/settings-context */ "../modules/forms/submissions/assets/js/admin/context/settings-context.js");

var _notices = _interopRequireDefault(__webpack_require__(/*! ./components/notices */ "../modules/forms/submissions/assets/js/admin/components/notices.js"));

var _item = _interopRequireDefault(__webpack_require__(/*! ./pages/item */ "../modules/forms/submissions/assets/js/admin/pages/item.js"));

var _pages = _interopRequireDefault(__webpack_require__(/*! ./pages */ "../modules/forms/submissions/assets/js/admin/pages/index.js"));

var _reachRouterHashHistory = __webpack_require__(/*! reach-router-hash-history */ "../node_modules/reach-router-hash-history/index.js");

var history = (0, _router.createHistory)((0, _reachRouterHashHistory.createHashSource)());

function App() {
  return /*#__PURE__*/_react.default.createElement("div", {
    id: "elementor-form-submissions"
  }, /*#__PURE__*/_react.default.createElement(_settingsContext.SettingsProvider, {
    value: window.elementorSubmissionsConfig
  }, /*#__PURE__*/_react.default.createElement(_noticesContext.NoticesProvider, null, /*#__PURE__*/_react.default.createElement(_notices.default, null), /*#__PURE__*/_react.default.createElement(_router.LocationProvider, {
    history: history
  }, /*#__PURE__*/_react.default.createElement(_router.Router, null, /*#__PURE__*/_react.default.createElement(_pages.default, {
    path: "/"
  }), /*#__PURE__*/_react.default.createElement(_item.default, {
    path: "/:id"
  }))))));
}

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/bulk-action-select.js":
/*!*************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/bulk-action-select.js ***!
  \*************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.BulkActionSelect = BulkActionSelect;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));

var _React = _react.default,
    useState = _React.useState,
    useCallback = _React.useCallback;

function BulkActionSelect(props) {
  var _useState = useState(''),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      value = _useState2[0],
      setValue = _useState2[1],
      applyAction = useCallback(function (e) {
    e.preventDefault();
    var action = props.actions.find(function (item) {
      return item.value === value;
    });

    if (!action) {
      return;
    }

    action.onApply();
    setValue('');
  }, [value, props.actions]);

  return /*#__PURE__*/_react.default.createElement("form", {
    className: "actions bulkactions ".concat(props.className),
    onSubmit: applyAction
  }, /*#__PURE__*/_react.default.createElement("label", {
    htmlFor: "bulk-action-selector-top",
    className: "screen-reader-text"
  }, __('Select bulk action', 'elementor-pro')), /*#__PURE__*/_react.default.createElement("select", {
    name: "action",
    value: value,
    onChange: function onChange(e) {
      return setValue(e.target.value);
    }
  }, /*#__PURE__*/_react.default.createElement("option", {
    value: "",
    disabled: true
  }, __('Bulk actions', 'elementor-pro')), props.actions.map(function (action) {
    return /*#__PURE__*/_react.default.createElement("option", {
      key: action.value,
      value: action.value
    }, action.label);
  })), /*#__PURE__*/_react.default.createElement("input", {
    type: "submit",
    className: "button action",
    value: __('Apply', 'elementor-pro')
  }));
}

BulkActionSelect.propTypes = {
  className: _propTypes.default.string,
  actions: _propTypes.default.arrayOf(_propTypes.default.shape({
    label: _propTypes.default.string.isRequired,
    value: _propTypes.default.string.isRequired,
    onApply: _propTypes.default.func.isRequired
  })).isRequired
};
BulkActionSelect.defaultProps = {
  className: ''
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/checkbox/bulk.js":
/*!********************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/checkbox/bulk.js ***!
  \********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Bulk;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/toConsumableArray */ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js"));

var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));

var _React = _react.default,
    useCallback = _React.useCallback;

function Bulk(props) {
  var onChange = useCallback(function (e) {
    var value = e.target.checked ? (0, _toConsumableArray2.default)(props.allValues) : [];
    props.onChange(value);
  }, [props.onChange, props.checkedGroup, props.allValues]);
  return /*#__PURE__*/_react.default.createElement("input", {
    type: "checkbox",
    checked: props.checkedGroup.length === props.allValues.length && props.allValues.length > 0,
    onChange: onChange
  });
}

Bulk.propTypes = {
  checkedGroup: _propTypes.default.array.isRequired,
  allValues: _propTypes.default.array.isRequired,
  onChange: _propTypes.default.func.isRequired
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/checkbox/index.js":
/*!*********************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/checkbox/index.js ***!
  \*********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Checkbox;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.array.filter.js */ "../node_modules/core-js/modules/es6.array.filter.js");

__webpack_require__(/*! core-js/modules/es6.string.includes.js */ "../node_modules/core-js/modules/es6.string.includes.js");

__webpack_require__(/*! core-js/modules/es7.array.includes.js */ "../node_modules/core-js/modules/es7.array.includes.js");

var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/toConsumableArray */ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js"));

var _bulk = _interopRequireDefault(__webpack_require__(/*! ./bulk */ "../modules/forms/submissions/assets/js/admin/components/checkbox/bulk.js"));

var _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));

var _React = _react.default,
    useCallback = _React.useCallback;

function Checkbox(props) {
  var onChange = useCallback(function (e) {
    var value = e.target.checked ? [].concat((0, _toConsumableArray2.default)(props.checkedGroup), [props.value]) : props.checkedGroup.filter(function (checkedItem) {
      return checkedItem !== props.value;
    });
    props.onChange(value);
  }, [props.onChange, props.checkedGroup, props.value]);
  return /*#__PURE__*/_react.default.createElement("input", {
    type: "checkbox",
    checked: props.checkedGroup.includes(props.value),
    onChange: onChange
  });
}

Checkbox.propTypes = {
  checkedGroup: _propTypes.default.array.isRequired,
  value: _propTypes.default.number.isRequired,
  onChange: _propTypes.default.func.isRequired
};
Checkbox.Bulk = _bulk.default;

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/date-filter.js":
/*!******************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/date-filter.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = DateFilter;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

__webpack_require__(/*! core-js/modules/es6.array.filter.js */ "../node_modules/core-js/modules/es6.array.filter.js");

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _React = _react.default,
    useState = _React.useState,
    useMemo = _React.useMemo,
    useCallback = _React.useCallback;

function DateFilter(props) {
  var _useState = useState(false),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      forceCustomSelect = _useState2[0],
      setForceCustomSelect = _useState2[1]; // All the options of the select input


  var options = useMemo(function () {
    var format = function format(date) {
      return wp.date.date('Y-m-d', date);
    },
        now = new Date(),
        yesterday = new Date(now),
        last7Days = new Date(now),
        last30Days = new Date(now);

    yesterday.setDate(yesterday.getDate() - 1);
    last7Days.setDate(last7Days.getDate() - 7);
    last30Days.setDate(last30Days.getDate() - 30);
    return [{
      label: __('All Time', 'elementor-pro'),
      value: 'all',
      filter: {
        before: null,
        after: null
      }
    }, {
      label: __('Today', 'elementor-pro'),
      value: 'today',
      filter: {
        before: null,
        after: format(now)
      }
    }, {
      label: __('Yesterday', 'elementor-pro'),
      value: 'yesterday',
      filter: {
        before: format(yesterday),
        after: format(yesterday)
      }
    }, {
      label: __('Last 7 days', 'elementor-pro'),
      value: 'last7',
      filter: {
        before: null,
        after: format(last7Days)
      }
    }, {
      label: __('Last 30 days', 'elementor-pro'),
      value: 'last_30',
      filter: {
        before: null,
        after: format(last30Days)
      }
    }, {
      label: __('Custom', 'elementor-pro'),
      value: 'custom',
      filter: {
        before: null,
        after: null
      }
    }];
  }, []); // Response to show the selected value of the select.

  var selectedValue = useMemo(function () {
    if (forceCustomSelect) {
      return 'custom';
    }

    var selected = options.find(function (option) {
      return option.filter.after === props.value.after && option.filter.before === props.value.before;
    });

    if (!selected) {
      return 'custom';
    }

    return selected.value;
  }, [options, props.value, forceCustomSelect]); // On select changed.

  var onSelectChanged = useCallback(function (_ref) {
    var value = _ref.target.value;
    var selected = options.find(function (option) {
      return option.value === value;
    });
    setForceCustomSelect('custom' === selected.value);
    props.onChange(selected.filter);
  }, [options]); // On date inputs changed.

  var onDateInputChanged = useCallback(function (value) {
    if (selectedValue !== 'custom') {
      return;
    }

    props.onChange(value);
  }, [selectedValue]);
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, props.label && /*#__PURE__*/_react.default.createElement("label", {
    htmlFor: "filter-by-".concat(props.name),
    className: "screen-reader-text"
  }, props.label), /*#__PURE__*/_react.default.createElement("select", {
    id: "filter-by-".concat(props.name),
    value: selectedValue,
    onChange: onSelectChanged
  }, options.map(function (_ref2) {
    var value = _ref2.value,
        label = _ref2.label;
    return /*#__PURE__*/_react.default.createElement("option", {
      key: value,
      value: value
    }, " ", label, " ");
  })), 'custom' === selectedValue && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("input", {
    type: "date",
    "aria-label": __('Start Date', 'elementor-pro'),
    value: props.value.after || '',
    onChange: function onChange(_ref3) {
      var value = _ref3.target.value;
      return onDateInputChanged({
        after: value
      });
    }
  }), "\xA0 - \xA0", /*#__PURE__*/_react.default.createElement("input", {
    type: "date",
    "aria-label": __('End Date', 'elementor-pro'),
    value: props.value.before || '',
    onChange: function onChange(_ref4) {
      var value = _ref4.target.value;
      return onDateInputChanged({
        before: value
      });
    }
  })));
}

DateFilter.propTypes = {
  value: PropTypes.shape({
    after: PropTypes.string,
    before: PropTypes.string
  }),
  label: PropTypes.string,
  onChange: PropTypes.func.isRequired,
  name: PropTypes.string.isRequired
};
DateFilter.defaultProps = {
  value: {
    after: null,
    before: null
  },
  options: []
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/export-button.js":
/*!********************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/export-button.js ***!
  \********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = ExportButton;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var _useExport = __webpack_require__(/*! modules/forms/submissions/assets/js/admin/hooks/use-export */ "../modules/forms/submissions/assets/js/admin/hooks/use-export.js");

var _buttonContentOptions;

var _React = _react.default,
    useMemo = _React.useMemo;
var buttonContentOptions = (_buttonContentOptions = {}, (0, _defineProperty2.default)(_buttonContentOptions, _useExport.EXPORT_MODE_ALL, __('Export All to CSV', 'elementor-pro')), (0, _defineProperty2.default)(_buttonContentOptions, _useExport.EXPORT_MODE_FILTERED, __('Export Filtered to CSV', 'elementor-pro')), (0, _defineProperty2.default)(_buttonContentOptions, _useExport.EXPORT_MODE_SELECTED, __('Export Selected to CSV', 'elementor-pro')), _buttonContentOptions);

function ExportButton(props) {
  var ProgressPercentage = useMemo(function () {
    if (!props.progress) {
      return 0;
    }

    var _props$progress = props.progress,
        count = _props$progress.count,
        success = _props$progress.success;

    if (0 === count || 0 === success) {
      return 0;
    }

    return Math.round(success / count * 100);
  }, [props.progress]);
  return /*#__PURE__*/_react.default.createElement("button", {
    className: "button button-primary e-export-button",
    onClick: function onClick() {
      return !props.disabled && props.onClick();
    },
    disabled: props.disabled
  }, props.isLoading ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("i", {
    className: "eicon-loading eicon-animation-spin"
  }), " \xA0", /*#__PURE__*/_react.default.createElement("span", null, " ", ProgressPercentage, "% "), " \xA0", __('Click to Cancel', 'elementor-pro')) : buttonContentOptions[props.mode]);
}

ExportButton.propTypes = {
  onClick: PropTypes.func.isRequired,
  isLoading: PropTypes.bool,
  mode: PropTypes.oneOf([_useExport.EXPORT_MODE_ALL, _useExport.EXPORT_MODE_SELECTED, _useExport.EXPORT_MODE_FILTERED]),
  disabled: PropTypes.bool,
  progress: PropTypes.shape({
    count: PropTypes.number,
    success: PropTypes.number
  })
};
ExportButton.defaultProps = {
  isLoading: false,
  hasSelected: false,
  disabled: false
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/form-actions-log.js":
/*!***********************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/form-actions-log.js ***!
  \***********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = FormActionsLog;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

var _postBox = _interopRequireDefault(__webpack_require__(/*! ./post-box */ "../modules/forms/submissions/assets/js/admin/components/post-box.js"));

var _date = __webpack_require__(/*! ../utils/date */ "../modules/forms/submissions/assets/js/admin/utils/date.js");

var _noticeMessages = _interopRequireDefault(__webpack_require__(/*! ../notice-messages */ "../modules/forms/submissions/assets/js/admin/notice-messages.js"));

function FormActionsLog(props) {
  return /*#__PURE__*/_react.default.createElement(_postBox.default, {
    header: /*#__PURE__*/_react.default.createElement("h2", null, __('Actions Log', 'elementor-pro'))
  }, 0 === props.actions.length && /*#__PURE__*/_react.default.createElement("div", {
    className: "inside"
  }, /*#__PURE__*/_react.default.createElement("p", {
    style: {
      margin: 0
    }
  }, " ", __('No form actions.', 'elementor-pro'), " ")), props.actions.map(function (actionLog) {
    return /*#__PURE__*/_react.default.createElement("div", {
      className: "inside e-form-submissions-action-log e-form-submissions-action-log--".concat('success' === actionLog.status ? 'success' : 'error'),
      key: actionLog.name
    }, /*#__PURE__*/_react.default.createElement("p", null, /*#__PURE__*/_react.default.createElement("strong", {
      className: "e-form-submissions-action-log__label"
    }, " ", actionLog.label, " "), /*#__PURE__*/_react.default.createElement("i", {
      className: "".concat('success' === actionLog.status ? 'eicon-success eicon-check-circle-o' : 'eicon-error eicon-warning', " e-form-submissions-action-log__icon")
    }), /*#__PURE__*/_react.default.createElement("span", {
      className: "e-form-submissions-action-log__date"
    }, " ", (0, _date.formatToLocalDateTime)(actionLog.created_at), " ")), /*#__PURE__*/_react.default.createElement("p", {
      className: "e-form-submissions-action-log__message"
    }, actionLog.log || _noticeMessages.default.actionLogs[actionLog.status]()));
  }));
}

FormActionsLog.propTypes = {
  actions: PropTypes.arrayOf(PropTypes.shape({
    status: PropTypes.oneOf(['success', 'failed']),
    name: PropTypes.string,
    label: PropTypes.string,
    created_at: PropTypes.string,
    log: PropTypes.string
  })).isRequired
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/link.js":
/*!***********************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/link.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Link;

var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/extends */ "../node_modules/@babel/runtime-corejs2/helpers/extends.js"));

__webpack_require__(/*! core-js/modules/es6.regexp.split.js */ "../node_modules/core-js/modules/es6.regexp.split.js");

var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");

function Link(props) {
  var ref = (0, _react.useRef)();
  (0, _react.useEffect)(function () {
    if (!ref.current) {
      return;
    }

    ref.current.setAttribute('href', "".concat(location.href.split('#')[0], "#").concat(props.to));
  }, [props.to, ref.current]);
  return /*#__PURE__*/_react.default.createElement(_router.Link, (0, _extends2.default)({}, props, {
    ref: ref
  }));
}

Link.propTypes = (0, _objectSpread2.default)({}, _router.Link.propTypes);

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/links-filter.js":
/*!*******************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/links-filter.js ***!
  \*******************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = LinksFilter;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.array.filter.js */ "../node_modules/core-js/modules/es6.array.filter.js");

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _React = _react.default,
    useCallback = _React.useCallback,
    useMemo = _React.useMemo;

function LinksFilter(props) {
  var onChange = useCallback(function (e, value) {
    e.preventDefault();

    if (!props.onChange) {
      return;
    }

    props.onChange(value);
  }, []);
  var options = useMemo(function () {
    return props.options.filter(function (option) {
      return option.shouldShow;
    });
  }, [props.options]);
  return /*#__PURE__*/_react.default.createElement("ul", {
    className: "subsubsub"
  }, options.map(function (option, index) {
    var isLast = index + 1 === options.length;
    return /*#__PURE__*/_react.default.createElement("li", {
      key: option.value
    }, "\xA0", /*#__PURE__*/_react.default.createElement("a", {
      href: "#",
      className: option.value === props.value ? 'current' : '',
      onClick: function onClick(e) {
        return onChange(e, option.value);
      }
    }, option.label, undefined !== option.count && /*#__PURE__*/_react.default.createElement("span", {
      className: "count"
    }, " (", option.count, ")")), "\xA0", isLast ? '' : '|');
  }));
}

LinksFilter.propTypes = {
  options: PropTypes.arrayOf(PropTypes.shape({
    value: PropTypes.string,
    label: PropTypes.string,
    count: PropTypes.number,
    shouldShow: PropTypes.bool
  })),
  value: PropTypes.string,
  onChange: PropTypes.func
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/notice.js":
/*!*************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/notice.js ***!
  \*************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Notice;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _noticesContext = __webpack_require__(/*! ../context/notices-context */ "../modules/forms/submissions/assets/js/admin/context/notices-context.js");

function Notice(props) {
  return /*#__PURE__*/_react.default.createElement("div", {
    className: "notice notice-".concat(props.model.type, " ").concat(props.model.dismissible ? 'is-dismissible' : '')
  }, /*#__PURE__*/_react.default.createElement("p", null, props.model.message, props.model.undoAction && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "\xA0", /*#__PURE__*/_react.default.createElement("a", {
    href: "#",
    onClick: function onClick(e) {
      e.preventDefault();
      props.model.undoAction();
    }
  }, __('Undo', 'elementor-pro')))), props.model.dismissible && /*#__PURE__*/_react.default.createElement("button", {
    type: "button",
    className: "notice-dismiss",
    onClick: props.dismiss
  }, /*#__PURE__*/_react.default.createElement("span", {
    className: "screen-reader-text"
  }, __('Dismiss this notice.', 'elementor-pro'))));
}

Notice.propTypes = {
  model: PropTypes.shape({
    key: PropTypes.number.isRequired,
    message: PropTypes.string.isRequired,
    type: PropTypes.oneOf([_noticesContext.NOTICE_TYPE_SUCCESS, _noticesContext.NOTICE_TYPE_ERROR]).isRequired,
    dismissible: PropTypes.bool,
    undoAction: PropTypes.func
  }),
  dismiss: PropTypes.func
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/notices.js":
/*!**************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/notices.js ***!
  \**************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Notices;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _noticesContext = __webpack_require__(/*! ../context/notices-context */ "../modules/forms/submissions/assets/js/admin/context/notices-context.js");

var _notice = _interopRequireDefault(__webpack_require__(/*! ./notice */ "../modules/forms/submissions/assets/js/admin/components/notice.js"));

function Notices() {
  var _useNoticesContext = (0, _noticesContext.useNoticesContext)(),
      notices = _useNoticesContext.notices,
      _dismiss = _useNoticesContext.dismiss;

  return notices.map(function (notice) {
    return /*#__PURE__*/_react.default.createElement(_notice.default, {
      key: notice.key,
      model: notice,
      dismiss: function dismiss() {
        return _dismiss(notice.key);
      }
    });
  });
}

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/pagination.js":
/*!*****************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/pagination.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Pagination;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _React = _react.default,
    useCallback = _React.useCallback,
    useMemo = _React.useMemo;
/**
 * The characters » ‹, ›, » are flipped automatically in RTL.
 *
 * @see https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Web_Localizability/Creating_localizable_web_applications#D'ont_use_text_as_decoration
 *
 * @param {any} props
 * @return {JSX.Element|string} -
 * @class
 */

function Pagination(props) {
  var canNavigateBack = useMemo(function () {
    return 1 !== props.currentPage;
  }, [props.currentPage]);
  var canNavigateNext = useMemo(function () {
    return props.lastPage > props.currentPage;
  }, [props.currentPage, props.lastPage]);
  var NavigateBackElement = canNavigateBack ? 'a' : 'span';
  var NavigateNextElement = canNavigateNext ? 'a' : 'span';
  var navigate = useCallback(function (e, shouldNavigate, page) {
    e.preventDefault();

    if (!shouldNavigate) {
      return;
    }

    props.onChange(page);
  }, [props.onChange]);

  if (!props.currentPage) {
    return '';
  }

  return /*#__PURE__*/_react.default.createElement("div", {
    className: "tablenav-pages ".concat(props.lastPage <= 1 && 'one-page')
  }, /*#__PURE__*/_react.default.createElement("span", {
    className: "displaying-num"
  }, props.total, " ", __('items', 'elementor-pro')), 1 < props.lastPage && /*#__PURE__*/_react.default.createElement("span", {
    className: "pagination-links"
  }, /*#__PURE__*/_react.default.createElement(NavigateBackElement, {
    className: "tablenav-pages-navspan button ".concat(!canNavigateBack && 'disabled'),
    onClick: function onClick(e) {
      return navigate(e, canNavigateBack, 1);
    }
  }, "\xAB"), "\xA0", /*#__PURE__*/_react.default.createElement(NavigateBackElement, {
    className: "tablenav-pages-navspan button ".concat(!canNavigateBack && 'disabled'),
    onClick: function onClick(e) {
      return navigate(e, canNavigateBack, props.currentPage - 1);
    }
  }, "\u2039"), /*#__PURE__*/_react.default.createElement("span", {
    className: "paging-input"
  }, /*#__PURE__*/_react.default.createElement("span", {
    className: "screen-reader-text"
  }, __('Current Page', 'elementor-pro')), /*#__PURE__*/_react.default.createElement("span", {
    className: "paging-input",
    style: {
      margin: '0 6px'
    }
  }, /*#__PURE__*/_react.default.createElement("span", {
    className: "tablenav-paging-text"
  }, props.currentPage, " ", __('of', 'elementor-pro'), /*#__PURE__*/_react.default.createElement("span", {
    className: "total-pages",
    style: {
      margin: '0'
    }
  }, " ", props.lastPage)))), /*#__PURE__*/_react.default.createElement(NavigateNextElement, {
    className: "tablenav-pages-navspan button ".concat(!canNavigateNext && 'disabled'),
    onClick: function onClick(e) {
      return navigate(e, canNavigateNext, props.currentPage + 1);
    }
  }, "\u203A"), "\xA0", /*#__PURE__*/_react.default.createElement(NavigateNextElement, {
    className: "tablenav-pages-navspan button ".concat(!canNavigateNext && 'disabled'),
    onClick: function onClick(e) {
      return navigate(e, canNavigateNext, props.lastPage);
    }
  }, "\xBB")));
}

Pagination.propTypes = {
  currentPage: PropTypes.number,
  total: PropTypes.number,
  lastPage: PropTypes.number,
  perPage: PropTypes.number,
  onChange: PropTypes.func.isRequired
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/post-box.js":
/*!***************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/post-box.js ***!
  \***************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = PostBox;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

function PostBox(props) {
  return /*#__PURE__*/_react.default.createElement("div", {
    className: "postbox"
  }, /*#__PURE__*/_react.default.createElement("div", {
    className: "postbox-header"
  }, props.header), /*#__PURE__*/_react.default.createElement("div", {
    className: "inner"
  }, props.children));
}

PostBox.propTypes = {
  header: PropTypes.oneOfType([PropTypes.string, PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
  children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)])
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/referer-filter.js":
/*!*********************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/referer-filter.js ***!
  \*********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = RefererFilter;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/toConsumableArray */ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

__webpack_require__(/*! core-js/modules/es6.regexp.search.js */ "../node_modules/core-js/modules/es6.regexp.search.js");

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _React = _react.default,
    useEffect = _React.useEffect,
    useRef = _React.useRef,
    useState = _React.useState;

function renderSelect2(el, onChange) {
  jQuery(el).select2({
    allowClear: true,
    placeholder: __('All Pages', 'elementor-pro'),
    dir: elementorCommon.config.isRTL ? 'rtl' : 'ltr',
    ajax: {
      delay: 400,
      transport: function transport(_ref, success, failure) {
        var search = _ref.data.search;
        return $e.data.get('form-submissions/referer', {
          search: search
        }, {
          refresh: true
        }).then(success).catch(failure);
      },
      data: function data(params) {
        return {
          search: params.term
        };
      },
      processResults: function processResults(_ref2) {
        var data = _ref2.data;
        return {
          results: data.data.map(function (_ref3) {
            var value = _ref3.value,
                label = _ref3.label;
            return {
              id: encodeURIComponent(value),
              text: label
            };
          })
        };
      },
      cache: true
    },
    minimumInputLength: 3
  }).on('select2:select select2:unselect', function (e) {
    onChange(e.target.value);
  });
}

function RefererFilter(props) {
  var _useState = useState([{
    value: '',
    label: __('All Pages', 'elementor-pro')
  }]),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      options = _useState2[0],
      setOptions = _useState2[1];

  var ref = useRef();
  useEffect(function () {
    var $select2 = null;

    if (props.value) {
      $e.data.get('form-submissions/referer', {
        value: props.value
      }, {
        refresh: true
      }).then(function (_ref4) {
        var data = _ref4.data;
        return setOptions(function (prev) {
          return [].concat((0, _toConsumableArray2.default)(prev), (0, _toConsumableArray2.default)(data.data));
        });
      }).then(function () {
        return $select2 = renderSelect2(ref.current, props.onChange);
      });
    } else {
      $select2 = renderSelect2(ref.current, props.onChange);
    }

    return function () {
      if (!$select2) {
        return;
      }

      $select2.select2('destroy').off('select2:select select2:unselect');
    };
  }, []);
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("label", {
    htmlFor: "filter-by-referer",
    className: "screen-reader-text"
  }, __('Filter by Page', 'elementor-pro')), /*#__PURE__*/_react.default.createElement("select", {
    ref: ref,
    id: "filter-by-referer",
    value: props.value
  }, options.map(function (_ref5) {
    var value = _ref5.value,
        label = _ref5.label;
    return /*#__PURE__*/_react.default.createElement("option", {
      key: value,
      value: encodeURIComponent(value)
    }, " ", label, " ");
  })));
}

RefererFilter.propTypes = {
  value: PropTypes.string,
  onChange: PropTypes.func.isRequired
};
RefererFilter.defaultProps = {
  value: ''
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/resource-filter.js":
/*!**********************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/resource-filter.js ***!
  \**********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = ResourceFilter;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/toConsumableArray */ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _React = _react.default,
    useState = _React.useState,
    useEffect = _React.useEffect;

function ResourceFilter(props) {
  var _useState = useState([]),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      localOptions = _useState2[0],
      setLocalOptions = _useState2[1];

  useEffect(function () {
    $e.data.get(props.resourceOptions.command, props.resourceOptions.args, {
      refresh: true
    }).then(function (result) {
      return setLocalOptions(result.data.data);
    });
  }, []);
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, props.label && /*#__PURE__*/_react.default.createElement("label", {
    htmlFor: "filter-by-".concat(props.name),
    className: "screen-reader-text"
  }, props.label), /*#__PURE__*/_react.default.createElement("select", {
    id: "filter-by-".concat(props.name),
    value: props.value,
    onChange: function onChange(e) {
      return props.onChange(e.target.value);
    }
  }, [].concat((0, _toConsumableArray2.default)(props.options), (0, _toConsumableArray2.default)(localOptions)).map(function (_ref) {
    var value = _ref.value,
        label = _ref.label;
    return /*#__PURE__*/_react.default.createElement("option", {
      key: value,
      value: value
    }, " ", label, " ");
  })));
}

ResourceFilter.propTypes = {
  value: PropTypes.string,
  onChange: PropTypes.func.isRequired,
  label: PropTypes.string,
  name: PropTypes.string.isRequired,
  options: PropTypes.arrayOf(PropTypes.shape({
    label: PropTypes.string,
    value: PropTypes.string
  })),
  resourceOptions: PropTypes.shape({
    command: PropTypes.string,
    args: PropTypes.object
  })
};
ResourceFilter.defaultProps = {
  value: '',
  options: []
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/search-box.js":
/*!*****************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/search-box.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = SearchBox;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _React = _react.default,
    useState = _React.useState,
    useRef = _React.useRef,
    useCallback = _React.useCallback; // in milliseconds

var DEFAULT_DEBOUNCE_TIMEOUT = 600;
/**
 * First render - nothing happens.
 * Second render - the query string value fills the search (should not trigger the debounce here in order to avoid onChange call)
 * Third render - the user type and the debounce get activate, and then it send the value up in the component tree.
 *
 * @param {any} props
 * @return {JSX.Element} -
 * @class
 */

function SearchBox(props) {
  var _useState = useState(props.value || ''),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      localValue = _useState2[0],
      setLocalValue = _useState2[1],
      debounceHandler = useRef(null);

  var onChange = useCallback(function (e) {
    if (debounceHandler.current) {
      clearTimeout(debounceHandler.current);
    }

    var value = e.target.value;
    setLocalValue(value);
    debounceHandler.current = setTimeout(function () {
      return props.onChange(value);
    }, props.debounceTimeout);
  }, []);
  return /*#__PURE__*/_react.default.createElement("p", {
    className: "search-box e-form-submissions-search"
  }, props.label && /*#__PURE__*/_react.default.createElement("label", {
    className: "screen-reader-text",
    htmlFor: "search-input"
  }, props.label), props.isSearching && /*#__PURE__*/_react.default.createElement("span", {
    className: "e-form-submissions-search__spinner"
  }, /*#__PURE__*/_react.default.createElement("i", {
    className: "eicon-loading eicon-animation-spin"
  })), /*#__PURE__*/_react.default.createElement("input", {
    type: "search",
    id: "search-input",
    name: "s",
    value: localValue,
    onChange: onChange,
    placeholder: __('Search...', 'elementor-pro')
  }));
}

SearchBox.propTypes = {
  value: PropTypes.string,
  onChange: PropTypes.func.isRequired,
  label: PropTypes.string,
  debounceTimeout: PropTypes.number,
  isSearching: PropTypes.bool
};
SearchBox.defaultProps = {
  debounceTimeout: DEFAULT_DEBOUNCE_TIMEOUT,
  isSearching: false
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/submission-row.js":
/*!*********************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/submission-row.js ***!
  \*********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = SubmissionRow;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _link = _interopRequireDefault(__webpack_require__(/*! ./link */ "../modules/forms/submissions/assets/js/admin/components/link.js"));

var _wpTable = _interopRequireDefault(__webpack_require__(/*! ./wp-table */ "../modules/forms/submissions/assets/js/admin/components/wp-table/index.js"));

var _date = __webpack_require__(/*! ../utils/date */ "../modules/forms/submissions/assets/js/admin/utils/date.js");

var _React = _react.default,
    useState = _React.useState;

function SubmissionRow(props) {
  var _useState = useState(false),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      isMobileRowOpen = _useState2[0],
      setIsMobileRowOpen = _useState2[1];

  return /*#__PURE__*/_react.default.createElement(_wpTable.default.Row, {
    className: isMobileRowOpen ? 'is-expanded' : '',
    style: {
      fontWeight: !props.item.is_read ? 'bold' : 'inherit'
    }
  }, /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, {
    component: "th",
    className: "check-column"
  }, props.checkBoxComponent), /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, {
    className: "has-row-actions column-primary"
  }, 'trash' === props.item.status ? props.item.main.value : /*#__PURE__*/_react.default.createElement(_link.default, {
    to: "/".concat(props.item.id),
    "aria-label": "View"
  }, props.item.main.value), props.rowActionComponent, /*#__PURE__*/_react.default.createElement("button", {
    type: "button",
    className: "toggle-row",
    onClick: function onClick() {
      return setIsMobileRowOpen(function (prev) {
        return !prev;
      });
    }
  }, /*#__PURE__*/_react.default.createElement("span", {
    className: "screen-reader-text"
  }, __('Show more details', 'elementor-pro')))), /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, {
    className: "column-actions",
    colName: props.tableTitles.actions_log_status.label
  }, props.item.actions_count > 0 && /*#__PURE__*/_react.default.createElement("i", {
    className: "".concat(props.item.actions_count === props.item.actions_succeeded_count ? 'eicon-success eicon-check-circle-o' : 'eicon-error eicon-warning'),
    title: "".concat(props.item.actions_succeeded_count, "/").concat(props.item.actions_count, " ").concat(__('Succeed', 'elementor-pro'))
  })), /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, {
    className: "column-form",
    colName: props.tableTitles.form.label
  }, props.item.post && /*#__PURE__*/_react.default.createElement("a", {
    href: props.item.post.edit_url,
    target: "_blank",
    rel: "noreferrer"
  }, props.item.form.name, " (", props.item.form.element_id, ")")), /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, {
    className: "column-page",
    colName: props.tableTitles.page.label
  }, /*#__PURE__*/_react.default.createElement("a", {
    href: props.item.referer,
    target: "_blank",
    rel: "noreferrer",
    title: props.item.referer_title
  }, props.item.referer_title || /*#__PURE__*/_react.default.createElement("i", {
    className: "eicon-editor-external-link e-form-submissions-referer-icon"
  }))), /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, {
    className: "column-id",
    colName: props.tableTitles.id.label
  }, props.item.id), /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, {
    className: "column-date",
    colName: props.tableTitles.created_at.label
  }, (0, _date.formatToLocalDateTime)(props.item.created_at)));
}

SubmissionRow.propTypes = {
  // The resource item that the table present.
  item: PropTypes.object.isRequired,
  tableTitles: PropTypes.objectOf(PropTypes.shape({
    label: PropTypes.string
  })),
  rowActionComponent: PropTypes.node,
  checkBoxComponent: PropTypes.node
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/acceptance.js":
/*!**********************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/acceptance.js ***!
  \**********************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Acceptance;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js");

var _React = _react.default,
    useState = _React.useState;

function Acceptance(props) {
  var _useState = useState(props.value),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      localValue = _useState2[0],
      setLocalValue = _useState2[1];

  return /*#__PURE__*/_react.default.createElement("label", {
    className: "e-form-submissions-value-label"
  }, /*#__PURE__*/_react.default.createElement("input", {
    type: "checkbox",
    value: "on",
    checked: props.isEditMode ? 'on' === localValue : 'on' === props.value,
    onChange: function onChange(e) {
      var value = e.target.checked ? 'on' : '';
      setLocalValue(value);
      props.onChange(value);
    },
    disabled: !props.isEditMode
  }));
}

Acceptance.propTypes = (0, _objectSpread2.default)({}, _index.basePropTypes);

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/checkbox.js":
/*!********************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/checkbox.js ***!
  \********************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Checkbox;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.regexp.split.js */ "../node_modules/core-js/modules/es6.regexp.split.js");

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

__webpack_require__(/*! core-js/modules/es6.string.includes.js */ "../node_modules/core-js/modules/es6.string.includes.js");

__webpack_require__(/*! core-js/modules/es7.array.includes.js */ "../node_modules/core-js/modules/es7.array.includes.js");

__webpack_require__(/*! core-js/modules/es6.array.filter.js */ "../node_modules/core-js/modules/es6.array.filter.js");

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/toConsumableArray */ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js");

var _useWatch = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-watch */ "../modules/forms/submissions/assets/js/admin/hooks/use-watch.js"));

var _useFormFieldOptions = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-form-field-options */ "../modules/forms/submissions/assets/js/admin/hooks/use-form-field-options.js"));

var _React = _react.default,
    useState = _React.useState,
    useMemo = _React.useMemo;

function Checkbox(props) {
  var value = useMemo(function () {
    return props.value.split(', ');
  }, [props.value]),
      _useState = useState(value),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      localValue = _useState2[0],
      setLocalValue = _useState2[1];

  (0, _useWatch.default)(function () {
    return props.onChange(localValue.join(', '));
  }, [localValue]);
  var options = (0, _useFormFieldOptions.default)(props.field.options);
  return options.map(function (option) {
    return /*#__PURE__*/_react.default.createElement("label", {
      className: "e-form-submissions-value-label",
      key: option.value
    }, /*#__PURE__*/_react.default.createElement("input", {
      type: "checkbox",
      value: option.value,
      checked: props.isEditMode ? localValue.includes(option.value) : value.includes(option.value),
      onChange: function onChange(e) {
        var checked = e.target.checked;
        setLocalValue(function (prev) {
          if (!checked) {
            prev = prev.filter(function (item) {
              return item !== option.value;
            });
          } else {
            prev = [].concat((0, _toConsumableArray2.default)(prev), [option.value]);
          }

          return prev;
        });
      },
      disabled: !props.isEditMode
    }), option.label);
  });
}

Checkbox.propTypes = (0, _objectSpread2.default)({}, _index.basePropTypes);

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/date.js":
/*!****************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/date.js ***!
  \****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Date;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js");

var _text = _interopRequireDefault(__webpack_require__(/*! ./text */ "../modules/forms/submissions/assets/js/admin/components/submission-value/text.js"));

var _date = __webpack_require__(/*! ../../utils/date */ "../modules/forms/submissions/assets/js/admin/utils/date.js");

function Date(props) {
  return /*#__PURE__*/_react.default.createElement(_text.default, {
    value: props.value,
    isEditMode: props.isEditMode,
    onChange: props.onChange,
    field: props.field
  }, props.value && (0, _date.formatToLocalDate)(props.value));
}

Date.propTypes = (0, _objectSpread2.default)({}, _index.basePropTypes);

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/email.js":
/*!*****************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/email.js ***!
  \*****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Email;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js");

var _text = _interopRequireDefault(__webpack_require__(/*! ./text */ "../modules/forms/submissions/assets/js/admin/components/submission-value/text.js"));

function Email(props) {
  return /*#__PURE__*/_react.default.createElement(_text.default, {
    value: props.value,
    isEditMode: props.isEditMode,
    onChange: props.onChange,
    field: props.field
  }, props.value && /*#__PURE__*/_react.default.createElement("a", {
    href: "mailto:".concat(props.value)
  }, props.value));
}

Email.propTypes = (0, _objectSpread2.default)({}, _index.basePropTypes);

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js":
/*!*****************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/index.js ***!
  \*****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = SubmissionValue;
exports.basePropTypes = void 0;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var _objectSpread3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _entries = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/entries */ "../node_modules/@babel/runtime-corejs2/core-js/object/entries.js"));

var _text = _interopRequireDefault(__webpack_require__(/*! ./text */ "../modules/forms/submissions/assets/js/admin/components/submission-value/text.js"));

var _email = _interopRequireDefault(__webpack_require__(/*! ./email */ "../modules/forms/submissions/assets/js/admin/components/submission-value/email.js"));

var _tel = _interopRequireDefault(__webpack_require__(/*! ./tel */ "../modules/forms/submissions/assets/js/admin/components/submission-value/tel.js"));

var _url = _interopRequireDefault(__webpack_require__(/*! ./url */ "../modules/forms/submissions/assets/js/admin/components/submission-value/url.js"));

var _radio = _interopRequireDefault(__webpack_require__(/*! ./radio */ "../modules/forms/submissions/assets/js/admin/components/submission-value/radio.js"));

var _select = _interopRequireDefault(__webpack_require__(/*! ./select */ "../modules/forms/submissions/assets/js/admin/components/submission-value/select.js"));

var _checkbox = _interopRequireDefault(__webpack_require__(/*! ./checkbox */ "../modules/forms/submissions/assets/js/admin/components/submission-value/checkbox.js"));

var _acceptance = _interopRequireDefault(__webpack_require__(/*! ./acceptance */ "../modules/forms/submissions/assets/js/admin/components/submission-value/acceptance.js"));

var _upload = _interopRequireDefault(__webpack_require__(/*! ./upload */ "../modules/forms/submissions/assets/js/admin/components/submission-value/upload.js"));

var _date = _interopRequireDefault(__webpack_require__(/*! ./date */ "../modules/forms/submissions/assets/js/admin/components/submission-value/date.js"));

var _time = _interopRequireDefault(__webpack_require__(/*! ./time */ "../modules/forms/submissions/assets/js/admin/components/submission-value/time.js"));

var _textarea = _interopRequireDefault(__webpack_require__(/*! ./textarea */ "../modules/forms/submissions/assets/js/admin/components/submission-value/textarea.js"));

var _React = _react.default,
    useMemo = _React.useMemo;
var defaultComponent = _text.default;
var components = (0, _entries.default)({
  Email: _email.default,
  Tel: _tel.default,
  Url: _url.default,
  Radio: _radio.default,
  Select: _select.default,
  Checkbox: _checkbox.default,
  Acceptance: _acceptance.default,
  Upload: _upload.default,
  Date: _date.default,
  Time: _time.default,
  Textarea: _textarea.default,
  Text: _text.default
}).reduce(function (current, _ref) {
  var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
      key = _ref2[0],
      component = _ref2[1];

  return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, current), {}, (0, _defineProperty2.default)({}, key.toLowerCase(), component));
}, {});
var basePropTypes = {
  value: PropTypes.string,
  isEditMode: PropTypes.bool,
  onChange: PropTypes.func.isRequired,
  field: PropTypes.shape({
    id: PropTypes.string.isRequired,
    type: PropTypes.string,
    options: PropTypes.arrayOf(PropTypes.string),
    is_multiple: PropTypes.bool
  })
};
exports.basePropTypes = basePropTypes;

function SubmissionValue(props) {
  var Component = useMemo(function () {
    var _props$field;

    var key = (_props$field = props.field) === null || _props$field === void 0 ? void 0 : _props$field.type;
    return components.hasOwnProperty(key) ? components[key] : defaultComponent;
  }, [props.field, props.value]);
  return /*#__PURE__*/_react.default.createElement(Component, {
    value: props.value,
    field: props.field,
    isEditMode: props.isEditMode,
    onChange: function onChange(value) {
      return props.onChange(props.field.id, value);
    }
  });
}

SubmissionValue.propTypes = (0, _objectSpread3.default)({}, basePropTypes);
SubmissionValue.defaultProps = {
  isEditMode: false
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/radio.js":
/*!*****************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/radio.js ***!
  \*****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Radio;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js");

var _useFormFieldOptions = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-form-field-options */ "../modules/forms/submissions/assets/js/admin/hooks/use-form-field-options.js"));

var _React = _react.default,
    useState = _React.useState;

function Radio(props) {
  var _useState = useState(props.value),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      localValue = _useState2[0],
      setLocalValue = _useState2[1];

  var options = (0, _useFormFieldOptions.default)(props.field.options);
  return options.map(function (option) {
    return /*#__PURE__*/_react.default.createElement("label", {
      className: "e-form-submissions-value-label",
      key: option.value
    }, /*#__PURE__*/_react.default.createElement("input", {
      type: "radio",
      value: option.value,
      checked: props.isEditMode ? option.value === localValue : option.value === props.value,
      onChange: function onChange() {
        setLocalValue(option.value);
        props.onChange(option.value);
      },
      disabled: !props.isEditMode
    }), option.label);
  });
}

Radio.propTypes = (0, _objectSpread2.default)({}, _index.basePropTypes);

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/select.js":
/*!******************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/select.js ***!
  \******************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Select;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _from = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/array/from */ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

__webpack_require__(/*! core-js/modules/es6.regexp.split.js */ "../node_modules/core-js/modules/es6.regexp.split.js");

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js");

var _useFormFieldOptions = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-form-field-options */ "../modules/forms/submissions/assets/js/admin/hooks/use-form-field-options.js"));

var _React = _react.default,
    useState = _React.useState;

function Select(props) {
  var value = props.field.is_multiple ? props.value.split(', ') : props.value;

  var _useState = useState(value),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      localValue = _useState2[0],
      setLocalValue = _useState2[1];

  var options = (0, _useFormFieldOptions.default)(props.field.options);
  return /*#__PURE__*/_react.default.createElement("select", {
    value: props.isEditMode ? localValue : value,
    multiple: props.field.is_multiple,
    onChange: function onChange(e) {
      var selectedValues = (0, _from.default)(e.target.selectedOptions, function (option) {
        return option.value;
      });
      setLocalValue(props.field.is_multiple ? selectedValues : selectedValues[0]);
      props.onChange(selectedValues.join(', '));
    },
    disabled: !props.isEditMode
  }, options.map(function (option) {
    return /*#__PURE__*/_react.default.createElement("option", {
      value: option.value,
      key: option.value
    }, option.label);
  }));
}

Select.propTypes = (0, _objectSpread2.default)({}, _index.basePropTypes);

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/tel.js":
/*!***************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/tel.js ***!
  \***************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Tel;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js");

var _text = _interopRequireDefault(__webpack_require__(/*! ./text */ "../modules/forms/submissions/assets/js/admin/components/submission-value/text.js"));

function Tel(props) {
  return /*#__PURE__*/_react.default.createElement(_text.default, {
    value: props.value,
    isEditMode: props.isEditMode,
    onChange: props.onChange,
    field: props.field
  }, props.value && /*#__PURE__*/_react.default.createElement("a", {
    href: "tel:".concat(props.value)
  }, props.value));
}

Tel.propTypes = (0, _objectSpread2.default)({}, _index.basePropTypes);

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/text.js":
/*!****************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/text.js ***!
  \****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Text;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js");

var _React = _react.default,
    useState = _React.useState,
    useMemo = _React.useMemo;
var availableInputTypes = {
  email: 'email',
  date: 'date',
  time: 'time',
  tel: 'tel',
  url: 'url',
  number: 'number',
  text: 'text'
};
var defaultInputType = availableInputTypes.text;

function Text(props) {
  var _useState = useState(props.value),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      localValue = _useState2[0],
      setLocalValue = _useState2[1];

  var inputType = useMemo(function () {
    var _props$field;

    return availableInputTypes.hasOwnProperty((_props$field = props.field) === null || _props$field === void 0 ? void 0 : _props$field.type) ? availableInputTypes[props.field.type] : defaultInputType;
  }, [props.field]);
  return props.isEditMode ? /*#__PURE__*/_react.default.createElement("input", {
    type: inputType,
    value: localValue,
    onChange: function onChange(_ref) {
      var value = _ref.target.value;
      setLocalValue(value);
      props.onChange(value);
    }
  }) : props.children || props.value;
}

Text.propTypes = (0, _objectSpread2.default)({
  children: PropTypes.oneOfType([PropTypes.node, PropTypes.string])
}, _index.basePropTypes);

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/textarea.js":
/*!********************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/textarea.js ***!
  \********************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Textarea;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js");

var _React = _react.default,
    useState = _React.useState;

function Textarea(props) {
  var _useState = useState(props.value),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      localValue = _useState2[0],
      setLocalValue = _useState2[1];

  return props.isEditMode ? /*#__PURE__*/_react.default.createElement("textarea", {
    value: props.isEditMode ? localValue : props.value,
    rows: "4",
    onChange: function onChange(e) {
      var value = e.target.value;
      setLocalValue(value);
      props.onChange(value);
    }
  }) : props.value;
}

Textarea.propTypes = (0, _objectSpread2.default)({}, _index.basePropTypes);

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/time.js":
/*!****************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/time.js ***!
  \****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Time;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js");

var _text = _interopRequireDefault(__webpack_require__(/*! ./text */ "../modules/forms/submissions/assets/js/admin/components/submission-value/text.js"));

var _date = __webpack_require__(/*! ../../utils/date */ "../modules/forms/submissions/assets/js/admin/utils/date.js");

function Time(props) {
  return /*#__PURE__*/_react.default.createElement(_text.default, {
    value: props.value,
    isEditMode: props.isEditMode,
    onChange: props.onChange,
    field: props.field
  }, props.value && (0, _date.formatToLocalTime)("2000-01-01 ".concat(props.value)));
}

Time.propTypes = (0, _objectSpread2.default)({}, _index.basePropTypes);

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/upload.js":
/*!******************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/upload.js ***!
  \******************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Upload;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

__webpack_require__(/*! core-js/modules/es6.regexp.split.js */ "../node_modules/core-js/modules/es6.regexp.split.js");

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js");

function Upload(props) {
  var value = props.value.split(' , ');
  return value.map(function (path) {
    return /*#__PURE__*/_react.default.createElement("div", {
      key: path
    }, /*#__PURE__*/_react.default.createElement("a", {
      href: path,
      target: "_blank",
      rel: "noreferrer"
    }, path));
  });
}

Upload.propTypes = (0, _objectSpread2.default)({}, _index.basePropTypes);

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/url.js":
/*!***************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/url.js ***!
  \***************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Url;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js");

var _text = _interopRequireDefault(__webpack_require__(/*! ./text */ "../modules/forms/submissions/assets/js/admin/components/submission-value/text.js"));

function Url(props) {
  return /*#__PURE__*/_react.default.createElement(_text.default, {
    value: props.value,
    isEditMode: props.isEditMode,
    onChange: props.onChange,
    field: props.field
  }, props.value && /*#__PURE__*/_react.default.createElement("a", {
    href: props.value,
    target: "_blank",
    rel: "noreferrer"
  }, props.value));
}

Url.propTypes = (0, _objectSpread2.default)({}, _index.basePropTypes);

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/wp-table/body.js":
/*!********************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/wp-table/body.js ***!
  \********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Body;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

function Body(props) {
  return /*#__PURE__*/_react.default.createElement("tbody", {
    id: "the-list"
  }, props.children);
}

Body.propTypes = {
  children: PropTypes.any
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/wp-table/cell.js":
/*!********************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/wp-table/cell.js ***!
  \********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Cell;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

function Cell(props) {
  var Component = props.component;
  return /*#__PURE__*/_react.default.createElement(Component, {
    className: props.className,
    style: props.style,
    "data-colname": props.colName,
    colSpan: props.colSpan
  }, props.children);
}

Cell.propTypes = {
  component: PropTypes.string,
  children: PropTypes.any,
  className: PropTypes.string,
  style: PropTypes.object,
  colName: PropTypes.string,
  colSpan: PropTypes.number
};
Cell.defaultProps = {
  component: 'td',
  className: ''
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/wp-table/footer.js":
/*!**********************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/wp-table/footer.js ***!
  \**********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Footer;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

function Footer(props) {
  return /*#__PURE__*/_react.default.createElement("tfoot", null, props.children);
}

Footer.propTypes = {
  children: PropTypes.any
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/wp-table/header.js":
/*!**********************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/wp-table/header.js ***!
  \**********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Header;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

function Header(props) {
  return /*#__PURE__*/_react.default.createElement("thead", null, props.children);
}

Header.propTypes = {
  children: PropTypes.any
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/wp-table/index.js":
/*!*********************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/wp-table/index.js ***!
  \*********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = WpTable;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _header = _interopRequireDefault(__webpack_require__(/*! ./header */ "../modules/forms/submissions/assets/js/admin/components/wp-table/header.js"));

var _body = _interopRequireDefault(__webpack_require__(/*! ./body */ "../modules/forms/submissions/assets/js/admin/components/wp-table/body.js"));

var _footer = _interopRequireDefault(__webpack_require__(/*! ./footer */ "../modules/forms/submissions/assets/js/admin/components/wp-table/footer.js"));

var _row = _interopRequireDefault(__webpack_require__(/*! ./row */ "../modules/forms/submissions/assets/js/admin/components/wp-table/row.js"));

var _cell = _interopRequireDefault(__webpack_require__(/*! ./cell */ "../modules/forms/submissions/assets/js/admin/components/wp-table/cell.js"));

var _orderableCell = _interopRequireDefault(__webpack_require__(/*! ./orderable-cell */ "../modules/forms/submissions/assets/js/admin/components/wp-table/orderable-cell.js"));

var _rowActions = _interopRequireDefault(__webpack_require__(/*! ./row-actions */ "../modules/forms/submissions/assets/js/admin/components/wp-table/row-actions.js"));

function WpTable(props) {
  return /*#__PURE__*/_react.default.createElement("table", {
    className: "wp-list-table widefat fixed table-view-list ".concat(props.className),
    style: props.style
  }, props.children);
}

WpTable.propTypes = {
  children: PropTypes.any,
  style: PropTypes.object,
  className: PropTypes.string
};
WpTable.defaultProps = {
  className: ''
};
WpTable.Header = _header.default;
WpTable.Body = _body.default;
WpTable.Footer = _footer.default;
WpTable.Row = _row.default;
WpTable.Cell = _cell.default;
WpTable.OrderableCell = _orderableCell.default;
WpTable.RowActions = _rowActions.default;

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/wp-table/orderable-cell.js":
/*!******************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/wp-table/orderable-cell.js ***!
  \******************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = OrderableCell;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _cell = _interopRequireDefault(__webpack_require__(/*! ./cell */ "../modules/forms/submissions/assets/js/admin/components/wp-table/cell.js"));

function OrderableCell(props) {
  var className = "".concat(props.className, " sortable ").concat(props.order.current.by === props.order.key && "sorted ".concat(props.order.current.direction));
  return /*#__PURE__*/_react.default.createElement(_cell.default, {
    component: props.component,
    style: props.style,
    className: className
  }, /*#__PURE__*/_react.default.createElement("a", {
    href: "#",
    onClick: function onClick() {
      return props.order.onChange({
        by: props.order.key,
        direction: props.order.key === props.order.current.by && 'asc' === props.order.current.direction ? 'desc' : 'asc'
      });
    }
  }, /*#__PURE__*/_react.default.createElement("span", null, props.children), /*#__PURE__*/_react.default.createElement("span", {
    className: "sorting-indicator"
  })));
}

OrderableCell.propTypes = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, _cell.default.propTypes), {}, {
  order: PropTypes.shape({
    key: PropTypes.string.isRequired,
    current: PropTypes.shape({
      by: PropTypes.string,
      direction: PropTypes.oneOf(['asc', 'desc'])
    }).isRequired,
    onChange: PropTypes.func.isRequired
  }).isRequired
});
OrderableCell.defaultProps = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, _cell.default.defaultProps), {}, {
  component: 'th'
});

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/wp-table/row-actions.js":
/*!***************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/wp-table/row-actions.js ***!
  \***************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = RowActions;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/extends */ "../node_modules/@babel/runtime-corejs2/helpers/extends.js"));

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

function RowActions(props) {
  return /*#__PURE__*/_react.default.createElement("div", {
    className: "row-actions",
    style: {
      fontWeight: 'normal'
    }
  }, props.actions.map(function (action, index) {
    var isLastAction = index + 1 === props.actions.length;
    var ActionComponent = action.component || 'a';
    return /*#__PURE__*/_react.default.createElement("span", {
      key: action.key,
      className: action.className
    }, /*#__PURE__*/_react.default.createElement(ActionComponent, (0, _extends2.default)({
      href: "#",
      "aria-label": action.label,
      onClick: function onClick(e) {
        e.preventDefault();
        action.onApply(props.item);
      }
    }, action.props ? action.props(props.item) : {}), action.label), !isLastAction && /*#__PURE__*/_react.default.createElement("span", null, "\xA0|\xA0"));
  }));
}

RowActions.propTypes = {
  actions: PropTypes.arrayOf(PropTypes.shape({
    key: PropTypes.string.isRequired,
    label: PropTypes.string.isRequired,
    onApply: PropTypes.func,
    className: PropTypes.string,
    props: PropTypes.func,
    component: PropTypes.any
  })),
  // The resource item that the table present.
  item: PropTypes.object
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/components/wp-table/row.js":
/*!*******************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/components/wp-table/row.js ***!
  \*******************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Row;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

function Row(props) {
  return /*#__PURE__*/_react.default.createElement("tr", {
    style: props.style,
    className: props.className
  }, props.children);
}

Row.propTypes = {
  children: PropTypes.any,
  style: PropTypes.object,
  className: PropTypes.string
};
Row.defaultProps = {
  style: {},
  className: ''
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/context/notices-context.js":
/*!*******************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/context/notices-context.js ***!
  \*******************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.useNoticesContext = useNoticesContext;
exports.NoticesProvider = NoticesProvider;
exports.NOTICE_TYPE_ERROR = exports.NOTICE_TYPE_SUCCESS = void 0;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _now = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/date/now */ "../node_modules/@babel/runtime-corejs2/core-js/date/now.js"));

__webpack_require__(/*! core-js/modules/es6.array.filter.js */ "../node_modules/core-js/modules/es6.array.filter.js");

var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/toConsumableArray */ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _React = _react.default,
    createContext = _React.createContext,
    useState = _React.useState,
    useCallback = _React.useCallback,
    useContext = _React.useContext;
var NOTICE_TYPE_SUCCESS = 'success';
exports.NOTICE_TYPE_SUCCESS = NOTICE_TYPE_SUCCESS;
var NOTICE_TYPE_ERROR = 'error';
exports.NOTICE_TYPE_ERROR = NOTICE_TYPE_ERROR;
var NoticesContext = createContext({
  notices: []
});
/**
 * Use Notifications context.
 *
 * @return {{}} -
 */

function useNoticesContext() {
  return useContext(NoticesContext);
}
/**
 * Notification Provider.
 *
 * @param {any} props
 * @return {JSX.Element} -
 * @class
 */


function NoticesProvider(props) {
  var _useState = useState([]),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      notices = _useState2[0],
      setNotices = _useState2[1]; // Dismiss notification (remove from view).


  var dismiss = useCallback(function (key) {
    setNotices(function (prev) {
      return prev.filter(function (notice) {
        return notice.key !== key;
      });
    });
  }, []); // Add notification (show in view).

  var notify = useCallback(function (_ref) {
    var message = _ref.message,
        undoAction = _ref.undoAction,
        type = _ref.type,
        _ref$dismissible = _ref.dismissible,
        dismissible = _ref$dismissible === void 0 ? true : _ref$dismissible;

    if (!message) {
      return;
    }

    var key = (0, _now.default)() + Math.random();
    setNotices(function (prev) {
      return [{
        key: key,
        message: message,
        type: type,
        undoAction: undoAction,
        dismissible: dismissible
      }].concat((0, _toConsumableArray2.default)(prev));
    });

    if (props.dismissTimeout) {
      setTimeout(function () {
        return dismiss(key);
      }, props.dismissTimeout);
    }
  }, []); // Notify an error message

  var notifyError = useCallback(function (message) {
    notify({
      message: message,
      type: NOTICE_TYPE_ERROR
    });
  }, [notify]); // Notify a success message

  var notifySuccess = useCallback(function (message, undoAction) {
    notify({
      message: message,
      undoAction: undoAction,
      type: NOTICE_TYPE_SUCCESS
    });
  }, [notify]);
  return /*#__PURE__*/_react.default.createElement(NoticesContext.Provider, {
    value: {
      notices: notices,
      notify: notify,
      notifyError: notifyError,
      notifySuccess: notifySuccess,
      dismiss: dismiss
    }
  }, props.children);
}

NoticesProvider.propTypes = {
  children: PropTypes.any,
  dismissTimeout: PropTypes.number
};
NoticesProvider.defaultProps = {
  dismissTimeout: 4000
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/context/settings-context.js":
/*!********************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/context/settings-context.js ***!
  \********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.useSettingsContext = useSettingsContext;
exports.SettingsProvider = SettingsProvider;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _React = _react.default,
    createContext = _React.createContext,
    useContext = _React.useContext;
var SettingsContext = createContext({});
/**
 * Consume the context
 *
 * @return {{emptyTrashDays: number}} -
 */

function useSettingsContext() {
  return useContext(SettingsContext);
}
/**
 * Settings Provider
 *
 * @param {any} props
 * @return {JSX.Element} -
 * @class
 */


function SettingsProvider(props) {
  return /*#__PURE__*/_react.default.createElement(SettingsContext.Provider, {
    value: props.value
  }, props.children);
}

SettingsProvider.propTypes = {
  children: PropTypes.any,
  value: PropTypes.object.isRequired
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/data/commands/export.js":
/*!****************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/data/commands/export.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.Export = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var Export = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(Export, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(Export);

  function Export() {
    (0, _classCallCheck2.default)(this, Export);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Export, [{
    key: "onCatchApply",
    value: function onCatchApply() {// Do nothing. (override parent behavior)
    }
  }], [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return 'form-submissions/export/{id}';
    }
  }]);
  return Export;
}($e.modules.CommandData);

exports.Export = Export;

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/data/commands/forms-index.js":
/*!*********************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/data/commands/forms-index.js ***!
  \*********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.Index = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var Index = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(Index, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(Index);

  function Index() {
    (0, _classCallCheck2.default)(this, Index);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Index, null, [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return 'forms/{id}';
    }
  }]);
  return Index;
}($e.modules.CommandData);

exports.Index = Index;

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/data/commands/index.js":
/*!***************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/data/commands/index.js ***!
  \***************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "Restore", {
  enumerable: true,
  get: function get() {
    return _restore.Restore;
  }
});

_Object$defineProperty(exports, "Export", {
  enumerable: true,
  get: function get() {
    return _export.Export;
  }
});

_Object$defineProperty(exports, "Referer", {
  enumerable: true,
  get: function get() {
    return _referer.Referer;
  }
});

exports.Index = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _restore = __webpack_require__(/*! ./restore */ "../modules/forms/submissions/assets/js/admin/data/commands/restore.js");

var _export = __webpack_require__(/*! ./export */ "../modules/forms/submissions/assets/js/admin/data/commands/export.js");

var _referer = __webpack_require__(/*! ./referer */ "../modules/forms/submissions/assets/js/admin/data/commands/referer.js");

var Index = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(Index, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(Index);

  function Index() {
    (0, _classCallCheck2.default)(this, Index);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Index, null, [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return 'form-submissions/{id}';
    }
  }]);
  return Index;
}($e.modules.CommandData);

exports.Index = Index;

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/data/commands/referer.js":
/*!*****************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/data/commands/referer.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.Referer = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var Referer = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(Referer, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(Referer);

  function Referer() {
    (0, _classCallCheck2.default)(this, Referer);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Referer, null, [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return 'form-submissions/referer/{id}';
    }
  }]);
  return Referer;
}($e.modules.CommandData);

exports.Referer = Referer;

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/data/commands/restore.js":
/*!*****************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/data/commands/restore.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.Restore = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var Restore = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(Restore, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(Restore);

  function Restore() {
    (0, _classCallCheck2.default)(this, Restore);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Restore, null, [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return 'form-submissions/restore/{id}';
    }
  }]);
  return Restore;
}($e.modules.CommandData);

exports.Restore = Restore;

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/data/component.js":
/*!**********************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/data/component.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var dataCommands = _interopRequireWildcard(__webpack_require__(/*! ./commands */ "../modules/forms/submissions/assets/js/admin/data/commands/index.js"));

var Component = /*#__PURE__*/function (_$e$modules$Component) {
  (0, _inherits2.default)(Component, _$e$modules$Component);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "getNamespace",
    value: function getNamespace() {
      return 'form-submissions';
    }
  }, {
    key: "defaultData",
    value: function defaultData() {
      return this.importCommands(dataCommands);
    }
  }]);
  return Component;
}($e.modules.ComponentBase);

exports.default = Component;

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/data/forms-component.js":
/*!****************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/data/forms-component.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var dataCommands = _interopRequireWildcard(__webpack_require__(/*! ./commands/forms-index */ "../modules/forms/submissions/assets/js/admin/data/commands/forms-index.js"));

var FormsComponent = /*#__PURE__*/function (_$e$modules$Component) {
  (0, _inherits2.default)(FormsComponent, _$e$modules$Component);

  var _super = (0, _createSuper2.default)(FormsComponent);

  function FormsComponent() {
    (0, _classCallCheck2.default)(this, FormsComponent);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(FormsComponent, [{
    key: "getNamespace",
    value: function getNamespace() {
      return this.constructor.namespace;
    }
  }, {
    key: "defaultData",
    value: function defaultData() {
      return this.importCommands(dataCommands);
    }
  }]);
  return FormsComponent;
}($e.modules.ComponentBase);

exports.default = FormsComponent;
(0, _defineProperty2.default)(FormsComponent, "namespace", 'forms');

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/hooks/use-data-action.js":
/*!*****************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/hooks/use-data-action.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var React = __webpack_require__(/*! react */ "react");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = useDataAction;
exports.STATUS_ERROR = exports.STATUS_SUCCESS = exports.STATUS_LOADING = exports.STATUS_IDLE = void 0;

var _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/promise */ "../node_modules/@babel/runtime-corejs2/core-js/promise.js"));

var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/toConsumableArray */ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _React = React,
    useRef = _React.useRef,
    useCallback = _React.useCallback,
    useState = _React.useState,
    useMemo = _React.useMemo;
var STATUS_IDLE = 'idle';
exports.STATUS_IDLE = STATUS_IDLE;
var STATUS_LOADING = 'loading';
exports.STATUS_LOADING = STATUS_LOADING;
var STATUS_SUCCESS = 'success';
exports.STATUS_SUCCESS = STATUS_SUCCESS;
var STATUS_ERROR = 'error';
exports.STATUS_ERROR = STATUS_ERROR;

function useDataAction(action) {
  var deps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
  var abortControllerRef = useRef();

  var _useState = useState(STATUS_IDLE),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      status = _useState2[0],
      setStatus = _useState2[1]; // To avoid multiple declaration of the action callback, it memorize the argument that SHOULD
  // trigger a new declaration of the action callback.


  var calculatedDeps = useMemo(function () {
    return [].concat((0, _toConsumableArray2.default)(deps), [status]);
  }, [deps, status]);
  var wrappedAction = useCallback(function () {
    if (abortControllerRef.current) {
      abortControllerRef.current.abort();
    }

    abortControllerRef.current = new AbortController();
    setStatus(STATUS_LOADING);

    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    return action(args, {
      abortController: abortControllerRef.current,
      status: status
    }).then(function (result) {
      setStatus(STATUS_SUCCESS);
      return result;
    }).catch(function (error) {
      setStatus(STATUS_ERROR);
      return _promise.default.reject(error);
    });
  }, [calculatedDeps]);
  return [wrappedAction, {
    abortController: abortControllerRef.current,
    status: status
  }];
}

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/hooks/use-export.js":
/*!************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/hooks/use-export.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var React = __webpack_require__(/*! react */ "react");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.useExport = useExport;
exports.EXPORT_MODE_FILTERED = exports.EXPORT_MODE_SELECTED = exports.EXPORT_MODE_ALL = void 0;

var _entries = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/entries */ "../node_modules/@babel/runtime-corejs2/core-js/object/entries.js"));

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/promise */ "../node_modules/@babel/runtime-corejs2/core-js/promise.js"));

var _values = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/values */ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js"));

__webpack_require__(/*! core-js/modules/es6.array.filter.js */ "../node_modules/core-js/modules/es6.array.filter.js");

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

__webpack_require__(/*! core-js/modules/es6.regexp.replace.js */ "../node_modules/core-js/modules/es6.regexp.replace.js");

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _objectSpread3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _useDataAction3 = _interopRequireWildcard(__webpack_require__(/*! ./use-data-action */ "../modules/forms/submissions/assets/js/admin/hooks/use-data-action.js"));

var _downloadBlob = _interopRequireDefault(__webpack_require__(/*! ../utils/download-blob */ "../modules/forms/submissions/assets/js/admin/utils/download-blob.js"));

var _noticesContext = __webpack_require__(/*! ../context/notices-context */ "../modules/forms/submissions/assets/js/admin/context/notices-context.js");

var EXPORT_MODE_ALL = 'all';
exports.EXPORT_MODE_ALL = EXPORT_MODE_ALL;
var EXPORT_MODE_SELECTED = 'selected';
exports.EXPORT_MODE_SELECTED = EXPORT_MODE_SELECTED;
var EXPORT_MODE_FILTERED = 'filtered';
exports.EXPORT_MODE_FILTERED = EXPORT_MODE_FILTERED;
var _React = React,
    useState = _React.useState,
    useMemo = _React.useMemo;
var ZIP_NAME_FORMAT = 'elementor-submissions-export-{DATE}';
var EXPORT_FILE_NAME_FORMAT = 'elementor-submissions-export-{FORM_LABEL}-{DATE}';
var DEFAULT_MAX_ROWS_PER_REQUEST = 10000;
var defaultOptions = {
  maxRowsPerRequest: DEFAULT_MAX_ROWS_PER_REQUEST,
  checked: [],
  filter: {}
};
/**
 * Export functionality
 *
 * @param {any} hookOptions
 * @return {(any|{mode: (string), progress: {success: number, count: number}, status: string})[]} -
 */

function useExport(hookOptions) {
  var options = useMemo(function () {
    return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, defaultOptions), hookOptions);
  }, [hookOptions]);

  var _useNoticesContext = (0, _noticesContext.useNoticesContext)(),
      notifyError = _useNoticesContext.notifyError;

  var _useState = useState({
    count: 0,
    success: 0
  }),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      progress = _useState2[0],
      setProgress = _useState2[1];

  var mode = useMemo(function () {
    if (options.checked.length > 0) {
      return EXPORT_MODE_SELECTED;
    }

    var filter = Object.fromEntries((0, _entries.default)(options.filter).filter(function (_ref) {
      var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
          value = _ref2[1];

      return value;
    }));

    if (1 === (0, _keys.default)(filter).length && 'all' === filter.status) {
      return EXPORT_MODE_ALL;
    }

    return EXPORT_MODE_FILTERED;
  }, [options.checked, options.filter]);

  var _useDataAction = (0, _useDataAction3.default)(function (_ref3, _ref4) {
    var _ref5 = (0, _slicedToArray2.default)(_ref3, 2),
        query = _ref5[0],
        total = _ref5[1];

    var abortController = _ref4.abortController,
        status = _ref4.status;

    if (status === _useDataAction3.STATUS_LOADING && abortController) {
      abortController.abort();
      return _promise.default.reject({
        message: 'Aborted'
      });
    }

    var numberOfRequests = Math.ceil(total / options.maxRowsPerRequest);
    var exportDataByForm = {};

    var promise = _promise.default.resolve();

    setProgress({
      count: numberOfRequests,
      success: 0
    });

    var _loop = function _loop(i) {
      promise = promise.then(function () {
        return $e.data.get('form-submissions/export', (0, _objectSpread3.default)((0, _objectSpread3.default)({}, query), {}, {
          per_page: options.maxRowsPerRequest,
          page: i
        }), {
          refresh: true,
          signal: abortController.signal
        });
      }).then(function (result) {
        var shouldSaveHeaders = 1 === i;
        exportDataByForm = mergeFormExportData(result.data.data, exportDataByForm, shouldSaveHeaders);
        setProgress(function (prev) {
          return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, prev), {}, {
            success: i
          });
        });
      });
    };

    for (var i = 1; i <= numberOfRequests; i++) {
      _loop(i);
    }

    return promise.then(function () {
      return downloadExportsResults((0, _values.default)(exportDataByForm));
    }).catch(function (error) {
      return notifyError(error.message);
    });
  }, [options.maxRowsPerRequest]),
      _useDataAction2 = (0, _slicedToArray2.default)(_useDataAction, 2),
      exportSubmissions = _useDataAction2[0],
      exportStatus = _useDataAction2[1].status;

  return [exportSubmissions, {
    mode: mode,
    progress: progress,
    status: exportStatus
  }];
}
/**
 * Merge data from one response into the current data from all the other responses.
 *
 * @param {Array} response
 * @param {any} current
 * @param {boolean} shouldSaveHeaders
 * @return {any} -
 */


function mergeFormExportData(response, current, shouldSaveHeaders) {
  response.forEach(function (formResult) {
    var _current$formResult$i;

    // The first row of each csv response is the headers row. When it merges all csv responses, it deletes
    // the headers for each response except from the first one, the result will be only one row headers in the final csv.
    if (!shouldSaveHeaders) {
      delete formResult.content[0];
    }

    current = (0, _objectSpread3.default)((0, _objectSpread3.default)({}, current), {}, (0, _defineProperty2.default)({}, formResult.id, (0, _objectSpread3.default)((0, _objectSpread3.default)({}, formResult), {}, {
      content: (((_current$formResult$i = current[formResult.id]) === null || _current$formResult$i === void 0 ? void 0 : _current$formResult$i.content) || '') + formResult.content.join('\n')
    })));
  });
  return current;
}
/**
 * Merge all the promises result into one csv and download it.
 *
 * @param {Array} dataResults
 */


function downloadExportsResults(dataResults) {
  var currentDate = wp.date.date('Y-m-d');
  var files = dataResults.map(function (item) {
    return transformFormResultIntoBlob(item, currentDate);
  }); // If there is only one form file, just download it as csv instead of compressing it into a zip file.

  if (1 === files.length) {
    (0, _downloadBlob.default)(files[0].blob, files[0].filename);
    return;
  }

  __webpack_require__.e(/*! import() | jszip.vendor */ "jszip.vendor").then(__webpack_require__.t.bind(__webpack_require__, /*! jszip */ "../node_modules/jszip/dist/jszip.min.js", 23)).then(function (_ref6) {
    var JSZip = _ref6.default;
    var zip = new JSZip();
    files.forEach(function (_ref7) {
      var filename = _ref7.filename,
          blob = _ref7.blob;
      return zip.file(filename, blob);
    });
    return zip.generateAsync({
      type: 'blob'
    });
  }).then(function (zipBlob) {
    (0, _downloadBlob.default)(zipBlob, ZIP_NAME_FORMAT.replace('{DATE}', currentDate));
  });
}
/**
 * Transform the merged result from the server into a blob.
 *
 * @param {any} formResult
 * @param {Date} currentDate
 * @return {{filename: string, blob: Blob}} -
 */


function transformFormResultIntoBlob(formResult, currentDate) {
  return {
    filename: EXPORT_FILE_NAME_FORMAT.replace('{FORM_LABEL}', formResult.form_label).replace('{DATE}', currentDate).concat(".".concat(formResult.extension)),
    blob: new Blob([// UTF-8 BOM to support microsoft excel
    // ref: https://stackoverflow.com/questions/31959487/utf-8-encoidng-issue-when-exporting-csv-file-javascript
    "\uFEFF", formResult.content], {
      type: formResult.mimetype
    })
  };
}

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/hooks/use-form-field-options.js":
/*!************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/hooks/use-form-field-options.js ***!
  \************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var React = __webpack_require__(/*! react */ "react");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = useFormFieldOptions;

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

__webpack_require__(/*! core-js/modules/es6.regexp.split.js */ "../node_modules/core-js/modules/es6.regexp.split.js");

var _React = React,
    useMemo = _React.useMemo;
/**
 * The options that received from the API is an array of strings,
 * each string can be a regular value e.g: 'red' or 'blue'
 * or a pair of label and value e.g: 'Red|red' or 'Blue|blue'
 * this parse the array and return an object of 'value' and 'label'
 *
 * @param {Array} options
 */

function useFormFieldOptions(options) {
  return useMemo(function () {
    return options.map(function (rawOption) {
      var _rawOption$split = rawOption.split('|'),
          _rawOption$split2 = (0, _slicedToArray2.default)(_rawOption$split, 2),
          label = _rawOption$split2[0],
          value = _rawOption$split2[1];

      return {
        label: label,
        value: value === undefined ? label : value
      };
    });
  }, [options]);
}

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/hooks/use-methods-reducer.js":
/*!*********************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/hooks/use-methods-reducer.js ***!
  \*********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var React = __webpack_require__(/*! react */ "react");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = useMethodsReducer;

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var _objectSpread3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

/**
 * Creates a more convenient way to use `useReducer`.
 * Inspired by useMethods package
 *
 * @see https://github.com/pelotom/use-methods
 *
 * @param {any} methods
 * @param {any} initialState
 * @param {any} init
 * @return {Array<any>} -
 */
function useMethodsReducer(methods, initialState) {
  var init = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;

  var _React$useReducer = React.useReducer(function (currentState, action) {
    if (!methods.hasOwnProperty(action.type)) {
      throw Error("The action type ".concat(action.type, " is not exists"));
    }

    return methods[action.type](currentState, action.payload);
  }, initialState, init),
      _React$useReducer2 = (0, _slicedToArray2.default)(_React$useReducer, 2),
      state = _React$useReducer2[0],
      dispatch = _React$useReducer2[1];

  return [state, generateActions(methods, dispatch), dispatch];
}
/**
 * Bind all the actions to the dispatcher.
 *
 * @param {any} methods
 * @param {Function} dispatch
 * @return {{}} -
 */


function generateActions(methods, dispatch) {
  return (0, _keys.default)(methods).reduce(function (current, type) {
    return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, current), {}, (0, _defineProperty2.default)({}, type, function (payload) {
      return dispatch({
        type: type,
        payload: payload
      });
    }));
  }, {});
}

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/hooks/use-rest-data-list.js":
/*!********************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/hooks/use-rest-data-list.js ***!
  \********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var React = __webpack_require__(/*! react */ "react");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = useRestDataList;

__webpack_require__(/*! core-js/modules/es6.array.filter.js */ "../node_modules/core-js/modules/es6.array.filter.js");

__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

__webpack_require__(/*! core-js/modules/es6.string.includes.js */ "../node_modules/core-js/modules/es6.string.includes.js");

__webpack_require__(/*! core-js/modules/es7.array.includes.js */ "../node_modules/core-js/modules/es7.array.includes.js");

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _entries = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/entries */ "../node_modules/@babel/runtime-corejs2/core-js/object/entries.js"));

var _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/array/is-array */ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/toConsumableArray */ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _objectSpread5 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _useMethodsReducer3 = _interopRequireDefault(__webpack_require__(/*! ./use-methods-reducer */ "../modules/forms/submissions/assets/js/admin/hooks/use-methods-reducer.js"));

var _useRouterQueryString3 = _interopRequireDefault(__webpack_require__(/*! ./use-router-query-string */ "../modules/forms/submissions/assets/js/admin/hooks/use-router-query-string.js"));

var _useDataAction5 = _interopRequireDefault(__webpack_require__(/*! ./use-data-action */ "../modules/forms/submissions/assets/js/admin/hooks/use-data-action.js"));

var _React = React,
    useState = _React.useState,
    useEffect = _React.useEffect,
    useMemo = _React.useMemo;
/**
 * Default options for the use function
 *
 * @type {{useRouterQueryString: boolean, allowedFilters: Array}}
 */

var defaultOptions = {
  allowedFilters: [],
  useRouterQueryString: false,
  hooks: {
    afterFetch: function afterFetch() {}
  }
};
var defaultQueryArgs = ['order', 'order_by', 'page', 'per_page'];
var currentFlatQuery = {};
/**
 * Main function
 *
 * @param {any} command
 * @param {Object} options
 * @return {{fetchData: any, data: any, meta: any, query: any, fetchOptions: any, actions: {setOrder: any, setFilter: any, setPage: any}}} -
 */

function useRestDataList(command) {
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  options = (0, _objectSpread5.default)((0, _objectSpread5.default)({}, defaultOptions), options);

  var queryArgs = [].concat(defaultQueryArgs, (0, _toConsumableArray2.default)(options.allowedFilters)),
      _useState = useState(false),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      fetchOptions = _useState2[0],
      setFetchOptions = _useState2[1],
      _useState3 = useState({
    data: [],
    meta: {}
  }),
      _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
      _useState4$ = _useState4[0],
      data = _useState4$.data,
      meta = _useState4$.meta,
      setFetchResult = _useState4[1],
      _useQuery = useQuery(),
      query = _useQuery.query,
      flatQuery = _useQuery.flatQuery,
      _useQuery$actions = _useQuery.actions,
      setFilter = _useQuery$actions.setFilter,
      setPage = _useQuery$actions.setPage,
      setOrder = _useQuery$actions.setOrder,
      setInitial = _useQuery$actions.setInitial,
      _useRouterQueryString = (0, _useRouterQueryString3.default)(queryArgs),
      _useRouterQueryString2 = (0, _slicedToArray2.default)(_useRouterQueryString, 2),
      routerQueryString = _useRouterQueryString2[0],
      setRouterQueryString = _useRouterQueryString2[1]; // There is a weird bug, when calling the fetch data function from another function
  // the flatQuery inside the function is an old version of the flatQuery and not the updated one.
  // this cause a wrong request to the server that retrieve a wrong result.


  currentFlatQuery = flatQuery; // Fetch all the fetch options.

  var _useDataAction = (0, _useDataAction5.default)(function (args, _ref) {
    var abortController = _ref.abortController;
    return $e.data.options(command, {}, {
      signal: abortController.signal
    }).then(function (result) {
      return normalizeFetchOptionsResult(result.data, options.allowedFilters);
    }).then(function (normalizedResult) {
      return setFetchOptions(normalizedResult);
    });
  }, [command]),
      _useDataAction2 = (0, _slicedToArray2.default)(_useDataAction, 2),
      fetchFetchOptions = _useDataAction2[0],
      fetchOptionsStatus = _useDataAction2[1].status; // The fetch data action.


  var _useDataAction3 = (0, _useDataAction5.default)(function (args, _ref2) {
    var abortController = _ref2.abortController;
    return $e.data.get(command, currentFlatQuery, {
      refresh: true,
      signal: abortController.signal
    }).then(function (response) {
      return setFetchResult(response.data);
    }).then(function () {
      return options.hooks.afterFetch();
    });
  }, [command, flatQuery]),
      _useDataAction4 = (0, _slicedToArray2.default)(_useDataAction3, 2),
      fetchData = _useDataAction4[0],
      fetchDataStatus = _useDataAction4[1].status; // Runs on render only and fetch all the "fetch options".


  useEffect(function () {
    fetchFetchOptions();
  }, []); // When the fetch options in ready it prepare the query for the fetch.
  // This effect should be run only once and only when the fetchOptions is ready.

  useEffect(function () {
    var _fetchOptions$page, _fetchOptions$per_pag, _fetchOptions$order_b, _fetchOptions$order;

    if (!fetchOptions) {
      return;
    }

    var queryStringResult = options.useRouterQueryString ? routerQueryString : {};
    setInitial({
      filter: (0, _keys.default)(fetchOptions.filter).reduce(function (current, key) {
        var _fetchOptions$filter, _fetchOptions$filter$;

        return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, current), {}, (0, _defineProperty2.default)({}, key, (queryStringResult === null || queryStringResult === void 0 ? void 0 : queryStringResult[key]) || (fetchOptions === null || fetchOptions === void 0 ? void 0 : (_fetchOptions$filter = fetchOptions.filter) === null || _fetchOptions$filter === void 0 ? void 0 : (_fetchOptions$filter$ = _fetchOptions$filter[key]) === null || _fetchOptions$filter$ === void 0 ? void 0 : _fetchOptions$filter$.default) || null));
      }, {}),
      page: queryStringResult.page || ((_fetchOptions$page = fetchOptions.page) === null || _fetchOptions$page === void 0 ? void 0 : _fetchOptions$page.default) || 1,
      perPage: queryStringResult.per_page || ((_fetchOptions$per_pag = fetchOptions.per_page) === null || _fetchOptions$per_pag === void 0 ? void 0 : _fetchOptions$per_pag.default) || null,
      order: {
        by: queryStringResult.order_by || ((_fetchOptions$order_b = fetchOptions.order_by) === null || _fetchOptions$order_b === void 0 ? void 0 : _fetchOptions$order_b.default) || null,
        direction: queryStringResult.order || ((_fetchOptions$order = fetchOptions.order) === null || _fetchOptions$order === void 0 ? void 0 : _fetchOptions$order.default) || null
      }
    });
  }, [fetchOptions]); // This effect runs every time the query object changes, and it fetch the data from the server.

  useEffect(function () {
    if (!query.ready) {
      return;
    }

    if (options.useRouterQueryString) {
      setRouterQueryString(flatQuery);
    }

    fetchData();
  }, [flatQuery]);
  return {
    data: data,
    meta: meta,
    query: query,
    flatQuery: flatQuery,
    fetchOptions: fetchOptions,
    fetchData: fetchData,
    statuses: {
      fetchDataStatus: fetchDataStatus,
      fetchOptionsStatus: fetchOptionsStatus
    },
    actions: {
      setFilter: setFilter,
      setOrder: setOrder,
      setPage: setPage
    }
  };
}
/**
 * A reducer for the query of the rest list fetch.
 *
 * @return {{perPage: any, page: number}|{filter: any, page: number}|{ready: boolean}|{page: any}|(any|{})|Array|{sort: any}} -
 */


function useQuery() {
  var _useMethodsReducer = (0, _useMethodsReducer3.default)({
    setFilter: function setFilter(state, filter) {
      return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, state), {}, {
        page: 1,
        filter: (0, _objectSpread5.default)((0, _objectSpread5.default)({}, state.filter), filter)
      });
    },
    setPage: function setPage(state, page) {
      return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, state), {}, {
        page: page
      });
    },
    setPerPage: function setPerPage(state, perPage) {
      return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, state), {}, {
        page: 1,
        perPage: perPage
      });
    },
    setOrder: function setOrder(state, order) {
      return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, state), {}, {
        order: order
      });
    },
    setInitial: function setInitial(state, payload) {
      return (0, _objectSpread5.default)((0, _objectSpread5.default)((0, _objectSpread5.default)({}, state), payload), {}, {
        ready: true
      });
    }
  }, {
    ready: false,
    filter: {},
    page: 1,
    perPage: null,
    order: {
      by: 'id',
      direction: 'desc'
    }
  }),
      _useMethodsReducer2 = (0, _slicedToArray2.default)(_useMethodsReducer, 2),
      query = _useMethodsReducer2[0],
      actions = _useMethodsReducer2[1];

  var flatQuery = useMemo(function () {
    return Object.fromEntries((0, _entries.default)((0, _objectSpread5.default)((0, _objectSpread5.default)({}, query.filter), {}, {
      page: query.page,
      per_page: query.perPage,
      order: query.order.direction,
      order_by: query.order.by
    })).filter(function (_ref3) {
      var _ref4 = (0, _slicedToArray2.default)(_ref3, 2),
          value = _ref4[1];

      // Removes all the falsy values from the flatQuery. In JS empty array is not a falsy value
      // so there is a special case that checks array and removes it from the flatQuery if it is an empty array.
      if ((0, _isArray.default)(value) && 0 === value.length) {
        return false;
      }

      return !!value;
    }));
  }, [query]);
  return {
    query: query,
    flatQuery: flatQuery,
    actions: actions
  };
}
/**
 * Normalize the fetch options that returns from the server
 *
 * @param {any} data
 * @param {Array<string>} allowedFilters
 * @return {{}} -
 */


function normalizeFetchOptionsResult(data, allowedFilters) {
  var endpoint = data.endpoints.find(function (dataEndpoint) {
    return dataEndpoint.methods.includes('GET');
  });

  if (!endpoint) {
    return {};
  }

  return (0, _entries.default)(endpoint.args).reduce(function (current, _ref5) {
    var _value$additionalProp;

    var _ref6 = (0, _slicedToArray2.default)(_ref5, 2),
        key = _ref6[0],
        value = _ref6[1];

    if (defaultQueryArgs.includes(key)) {
      return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, current), {}, (0, _defineProperty2.default)({}, key, value));
    }

    if (((_value$additionalProp = value.additionalProperties) === null || _value$additionalProp === void 0 ? void 0 : _value$additionalProp.context) !== 'filter' || !allowedFilters.includes(key)) {
      return (0, _objectSpread5.default)({}, current);
    }

    return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, current), {}, {
      filter: (0, _objectSpread5.default)((0, _objectSpread5.default)({}, current.filter), {}, (0, _defineProperty2.default)({}, key, value))
    });
  }, {
    filter: {}
  });
}

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/hooks/use-router-query-string.js":
/*!*************************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/hooks/use-router-query-string.js ***!
  \*************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var React = __webpack_require__(/*! react */ "react");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = useRouterQueryString;

__webpack_require__(/*! core-js/modules/es6.regexp.split.js */ "../node_modules/core-js/modules/es6.regexp.split.js");

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var _objectSpread3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");

var _React = React,
    useEffect = _React.useEffect,
    useState = _React.useState;
/**
 * Manage the router query string base on "hash" history.
 *
 * @param {string[]} queryArgs
 * @return {Array<any, any>} -
 */

function useRouterQueryString() {
  var queryArgs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];

  var location = (0, _router.useLocation)(),
      _useState = useState(false),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      isLocationRead = _useState2[0],
      setIsLocationRead = _useState2[1],
      _useState3 = useState(false),
      _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
      query = _useState4[0],
      setQuery = _useState4[1]; // Read the query string (only at first render)


  useEffect(function () {
    if (!(location !== null && location !== void 0 && location.pathname) || isLocationRead) {
      return;
    }

    var parsedQueryString = queryArgs.reduce(function (current, arg) {
      var value = wp.url.getQueryArg(location.pathname, arg);

      if (undefined === value) {
        return current;
      }

      return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, current), {}, (0, _defineProperty2.default)({}, arg, value));
    }, {});
    setQuery(parsedQueryString);
    setIsLocationRead(true);
  }, [location]); // Update the query string based on the query.

  useEffect(function () {
    if (!query) {
      return;
    }

    var basePath = location.pathname.split('?')[0] || '/';
    history.pushState(undefined, undefined, "#".concat(wp.url.addQueryArgs(basePath, query)));
  }, [query]);
  return [query, setQuery];
}

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/hooks/use-watch.js":
/*!***********************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/hooks/use-watch.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var React = __webpack_require__(/*! react */ "react");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = useWatch;
var _React = React,
    useEffect = _React.useEffect,
    useRef = _React.useRef;

function useWatch(callback, deps) {
  var isFirstRender = useRef(true);
  useEffect(function () {
    if (isFirstRender.current) {
      isFirstRender.current = false;
      return;
    }

    callback();
  }, deps);
}

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/notice-messages.js":
/*!***********************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/notice-messages.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");

var generalError = function generalError() {
  return __('Something went wrong, please try again later.', 'elementor-pro');
};

var _default = {
  trashed: {
    success: function success() {
      var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
      return (0, _i18n.sprintf)((0, _i18n._n)('%d submission moved to Trash.', '%d submissions moved to Trash.', count, 'elementor-pro'), count);
    },
    error: generalError
  },
  deleted: {
    success: function success() {
      var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
      return (0, _i18n.sprintf)((0, _i18n._n)('%d submission permanently deleted.', '%d submissions permanently deleted.', count, 'elementor-pro'), count);
    },
    error: generalError
  },
  updated: {
    success: function success() {
      var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
      return (0, _i18n.sprintf)((0, _i18n._n)('Submission has been successfully updated.', '%d submissions have been successfully updated.', count, 'elementor-pro'), count);
    },
    error: generalError
  },
  restored: {
    success: function success() {
      var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
      return (0, _i18n.sprintf)((0, _i18n._n)('%d submission restored from Trash.', '%d submissions restored from Trash.', count, 'elementor-pro'), count);
    },
    error: generalError
  },
  markedAsRead: {
    success: function success() {
      return null;
    },
    error: generalError
  },
  markedAsUnread: {
    success: function success() {
      return null;
    },
    error: generalError
  },
  actionLogs: {
    success: function success() {
      return __('Action completed successfully.', 'elementor-pro');
    },
    failed: function failed() {
      return __('Action failed to run, please check your integration.', 'elementor-pro');
    }
  }
};
exports.default = _default;

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/pages/index.js":
/*!*******************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/pages/index.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Index;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/promise */ "../node_modules/@babel/runtime-corejs2/core-js/promise.js"));

var _entries = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/entries */ "../node_modules/@babel/runtime-corejs2/core-js/object/entries.js"));

__webpack_require__(/*! core-js/modules/es6.array.filter.js */ "../node_modules/core-js/modules/es6.array.filter.js");

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

__webpack_require__(/*! core-js/modules/es6.string.includes.js */ "../node_modules/core-js/modules/es6.string.includes.js");

__webpack_require__(/*! core-js/modules/es7.array.includes.js */ "../node_modules/core-js/modules/es7.array.includes.js");

__webpack_require__(/*! core-js/modules/es6.regexp.search.js */ "../node_modules/core-js/modules/es6.regexp.search.js");

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/extends */ "../node_modules/@babel/runtime-corejs2/helpers/extends.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _checkbox = _interopRequireDefault(__webpack_require__(/*! ../components/checkbox */ "../modules/forms/submissions/assets/js/admin/components/checkbox/index.js"));

var _dateFilter = _interopRequireDefault(__webpack_require__(/*! ../components/date-filter */ "../modules/forms/submissions/assets/js/admin/components/date-filter.js"));

var _exportButton = _interopRequireDefault(__webpack_require__(/*! ../components/export-button */ "../modules/forms/submissions/assets/js/admin/components/export-button.js"));

var _link = _interopRequireDefault(__webpack_require__(/*! ../components/link */ "../modules/forms/submissions/assets/js/admin/components/link.js"));

var _linksFilter = _interopRequireDefault(__webpack_require__(/*! ../components/links-filter */ "../modules/forms/submissions/assets/js/admin/components/links-filter.js"));

var _noticeMessages = _interopRequireDefault(__webpack_require__(/*! ../notice-messages */ "../modules/forms/submissions/assets/js/admin/notice-messages.js"));

var _pagination = _interopRequireDefault(__webpack_require__(/*! ../components/pagination */ "../modules/forms/submissions/assets/js/admin/components/pagination.js"));

var _refererFilter = _interopRequireDefault(__webpack_require__(/*! ../components/referer-filter */ "../modules/forms/submissions/assets/js/admin/components/referer-filter.js"));

var _resourceFilter = _interopRequireDefault(__webpack_require__(/*! ../components/resource-filter */ "../modules/forms/submissions/assets/js/admin/components/resource-filter.js"));

var _searchBox = _interopRequireDefault(__webpack_require__(/*! ../components/search-box */ "../modules/forms/submissions/assets/js/admin/components/search-box.js"));

var _submissionRow = _interopRequireDefault(__webpack_require__(/*! ../components/submission-row */ "../modules/forms/submissions/assets/js/admin/components/submission-row.js"));

var _useDataAction7 = _interopRequireWildcard(__webpack_require__(/*! ../hooks/use-data-action */ "../modules/forms/submissions/assets/js/admin/hooks/use-data-action.js"));

var _useRestDataList2 = _interopRequireDefault(__webpack_require__(/*! ../hooks/use-rest-data-list */ "../modules/forms/submissions/assets/js/admin/hooks/use-rest-data-list.js"));

var _wpTable = _interopRequireDefault(__webpack_require__(/*! ../components/wp-table */ "../modules/forms/submissions/assets/js/admin/components/wp-table/index.js"));

var _bulkActionSelect = __webpack_require__(/*! ../components/bulk-action-select */ "../modules/forms/submissions/assets/js/admin/components/bulk-action-select.js");

var _useExport3 = __webpack_require__(/*! ../hooks/use-export */ "../modules/forms/submissions/assets/js/admin/hooks/use-export.js");

var _noticesContext = __webpack_require__(/*! ../context/notices-context */ "../modules/forms/submissions/assets/js/admin/context/notices-context.js");

var _settingsContext = __webpack_require__(/*! ../context/settings-context */ "../modules/forms/submissions/assets/js/admin/context/settings-context.js");

var _React = _react.default,
    useMemo = _React.useMemo,
    useState = _React.useState;
var SEARCH_FILTER_KEY = 'search';
var STATUS_FILTER_KEY = 'status';
var FORM_FILTER_KEY = 'form';
var REFERER_FILTER_KEY = 'referer';
var AFTER_FILTER_KEY = 'after';
var BEFORE_FILTER_KEY = 'before';

function Index() {
  var _meta$pagination2, _fetchOptions$filter, _fetchOptions$filter2, _fetchOptions$filter3, _fetchOptions$filter4;

  var _useNoticesContext = (0, _noticesContext.useNoticesContext)(),
      notifyError = _useNoticesContext.notifyError,
      notifySuccess = _useNoticesContext.notifySuccess;

  var _useSettingsContext = (0, _settingsContext.useSettingsContext)(),
      isTrashEnabled = _useSettingsContext.isTrashEnabled;

  var _useState = useState([]),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      checked = _useState2[0],
      setChecked = _useState2[1];

  var _useRestDataList = (0, _useRestDataList2.default)('form-submissions/index', {
    allowedFilters: [SEARCH_FILTER_KEY, STATUS_FILTER_KEY, FORM_FILTER_KEY, REFERER_FILTER_KEY, AFTER_FILTER_KEY, BEFORE_FILTER_KEY],
    useRouterQueryString: true,
    hooks: {
      afterFetch: function afterFetch() {
        return setChecked([]);
      }
    }
  }),
      data = _useRestDataList.data,
      meta = _useRestDataList.meta,
      fetchOptions = _useRestDataList.fetchOptions,
      fetchData = _useRestDataList.fetchData,
      flatQuery = _useRestDataList.flatQuery,
      _useRestDataList$quer = _useRestDataList.query,
      order = _useRestDataList$quer.order,
      filter = _useRestDataList$quer.filter,
      _useRestDataList$stat = _useRestDataList.statuses,
      fetchOptionsStatus = _useRestDataList$stat.fetchOptionsStatus,
      fetchDataStatus = _useRestDataList$stat.fetchDataStatus,
      _useRestDataList$acti = _useRestDataList.actions,
      setFilter = _useRestDataList$acti.setFilter,
      setOrder = _useRestDataList$acti.setOrder,
      setPage = _useRestDataList$acti.setPage;

  var isTrashFilterOn = useMemo(function () {
    return 'trash' === filter[STATUS_FILTER_KEY];
  }, [filter[STATUS_FILTER_KEY]]);

  var _useExport = (0, _useExport3.useExport)({
    checked: checked,
    filter: filter
  }),
      _useExport2 = (0, _slicedToArray2.default)(_useExport, 2),
      exportSubmissions = _useExport2[0],
      exportOptions = _useExport2[1];

  var _useDataAction = (0, _useDataAction7.default)(function (_ref, _ref2) {
    var _ref3 = (0, _slicedToArray2.default)(_ref, 2),
        query = _ref3[0],
        isRead = _ref3[1];

    var abortController = _ref2.abortController;

    if (!validateRestAction(query)) {
      return _promise.default.reject();
    }

    var messages = _noticeMessages.default[isRead ? 'markedAsRead' : 'markedAsUnread'];
    return $e.data.update('form-submissions/index', {
      is_read: isRead
    }, query, {
      signal: abortController.signal
    }).then(function (result) {
      var _result$data$meta;

      return notifySuccess(messages.success(((_result$data$meta = result.data.meta) === null || _result$data$meta === void 0 ? void 0 : _result$data$meta.affected) || 1));
    }).then(fetchData).catch(function () {
      return notifyError(messages.error());
    });
  }),
      _useDataAction2 = (0, _slicedToArray2.default)(_useDataAction, 1),
      updateRead = _useDataAction2[0];

  var _useDataAction3 = (0, _useDataAction7.default)(function (_ref4, _ref5) {
    var _ref6 = (0, _slicedToArray2.default)(_ref4, 1),
        query = _ref6[0];

    var abortController = _ref5.abortController;

    if (!validateRestAction(query)) {
      return _promise.default.reject();
    }

    return $e.data.update('form-submissions/restore', {}, query, {
      signal: abortController.signal
    }).then(function (result) {
      var _result$data$meta2;

      return notifySuccess(_noticeMessages.default.restored.success(((_result$data$meta2 = result.data.meta) === null || _result$data$meta2 === void 0 ? void 0 : _result$data$meta2.affected) || 1));
    }).then(fetchData).catch(function () {
      return notifyError(_noticeMessages.default.restored.error());
    });
  }),
      _useDataAction4 = (0, _slicedToArray2.default)(_useDataAction3, 1),
      restoreItems = _useDataAction4[0];

  var _useDataAction5 = (0, _useDataAction7.default)(function (_ref7, _ref8) {
    var _ref9 = (0, _slicedToArray2.default)(_ref7, 1),
        query = _ref9[0];

    var abortController = _ref8.abortController;

    if (!validateRestAction(query)) {
      return _promise.default.reject();
    }

    var messages = _noticeMessages.default[query.force ? 'deleted' : 'trashed'];
    return $e.data.delete('form-submissions/index', query, {
      signal: abortController.signal
    }).then(function (result) {
      var _result$data$meta3;

      return notifySuccess(messages.success(((_result$data$meta3 = result.data.meta) === null || _result$data$meta3 === void 0 ? void 0 : _result$data$meta3.affected) || 1), query.force ? null : function () {
        return restoreItems(query);
      });
    }).then(fetchData).catch(function () {
      return notifyError(messages.error());
    });
  }),
      _useDataAction6 = (0, _slicedToArray2.default)(_useDataAction5, 1),
      deleteItems = _useDataAction6[0];

  var rowActions = useMemo(function () {
    return [{
      key: 'view',
      label: __('View', 'elementor-pro'),
      shouldShow: function shouldShow(item) {
        return 'trash' !== item.status;
      },
      props: function props(item) {
        return {
          to: "/".concat(item.id),
          // override the default behavior of click event
          onClick: undefined
        };
      },
      component: _link.default
    }, {
      key: 'restore',
      label: __('Restore', 'elementor-pro'),
      onApply: function onApply(item) {
        return restoreItems({
          id: item.id
        });
      },
      shouldShow: function shouldShow(item) {
        return 'trash' === item.status;
      }
    }, {
      key: 'trash',
      label: __('Trash', 'elementor-pro'),
      onApply: function onApply(item) {
        return deleteItems({
          id: item.id
        });
      },
      shouldShow: function shouldShow(item) {
        return 'trash' !== item.status && isTrashEnabled;
      },
      className: 'trash'
    }, {
      key: 'delete',
      label: __('Delete Permanently', 'elementor-pro'),
      onApply: function onApply(item) {
        return deleteItems({
          id: item.id,
          force: 1
        });
      },
      shouldShow: function shouldShow(item) {
        return 'trash' === item.status || !isTrashEnabled;
      },
      className: 'trash'
    }, {
      key: 'read',
      label: __('Mark as Read', 'elementor-pro'),
      onApply: function onApply(item) {
        return updateRead({
          id: item.id
        }, true);
      },
      shouldShow: function shouldShow(item) {
        return 'trash' !== item.status && !item.is_read;
      }
    }, {
      key: 'unread',
      label: __('Mark as Unread', 'elementor-pro'),
      onApply: function onApply(item) {
        return updateRead({
          id: item.id
        }, false);
      },
      shouldShow: function shouldShow(item) {
        return 'trash' !== item.status && item.is_read;
      }
    }];
  }, []);
  var bulkActions = useMemo(function () {
    return [{
      label: __('Mark as Read', 'elementor-pro'),
      value: 'read',
      onApply: function onApply() {
        return updateRead({
          ids: checked
        }, true);
      },
      shouldShow: function shouldShow() {
        return !isTrashFilterOn;
      }
    }, {
      label: __('Mark as Unread', 'elementor-pro'),
      value: 'unread',
      onApply: function onApply() {
        return updateRead({
          ids: checked
        }, false);
      },
      shouldShow: function shouldShow() {
        return !isTrashFilterOn;
      }
    }, {
      label: __('Move to Trash', 'elementor-pro'),
      value: 'trash',
      onApply: function onApply() {
        return deleteItems({
          ids: checked
        });
      },
      shouldShow: function shouldShow() {
        return !isTrashFilterOn && isTrashEnabled;
      }
    }, {
      label: __('Delete Permanently', 'elementor-pro'),
      value: 'delete',
      onApply: function onApply() {
        return deleteItems({
          ids: checked,
          force: 1
        });
      },
      shouldShow: function shouldShow() {
        return isTrashFilterOn || !isTrashEnabled;
      }
    }, {
      label: __('Restore', 'elementor-pro'),
      value: 'restore',
      onApply: function onApply() {
        return restoreItems({
          ids: checked
        });
      },
      shouldShow: function shouldShow() {
        return isTrashFilterOn;
      }
    }].filter(function (action) {
      return action.shouldShow();
    });
  }, [checked, isTrashFilterOn]);
  var tableTitles = useMemo(function () {
    return {
      main_meta_id: {
        label: __('Main', 'elementor-pro'),
        className: 'column-primary'
      },
      actions_log_status: {
        label: __('Actions Status', 'elementor-pro'),
        className: 'column-actions'
      },
      form: {
        label: __('Form', 'elementor-pro'),
        className: 'column-form'
      },
      page: {
        label: __('Page', 'elementor-pro'),
        className: 'column-page'
      },
      id: {
        label: __('ID', 'elementor-pro'),
        className: 'column-id'
      },
      created_at: {
        label: __('Submission Date', 'elementor-pro'),
        className: 'column-date'
      }
    };
  }, []);

  var headerFooterRow = /*#__PURE__*/_react.default.createElement(_wpTable.default.Row, null, /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, {
    className: "manage-column bulk-checkbox-column"
  }, /*#__PURE__*/_react.default.createElement(_checkbox.default.Bulk, {
    checkedGroup: checked,
    onChange: setChecked,
    allValues: data.map(function (checkedItem) {
      return checkedItem.id;
    })
  })), (0, _entries.default)(tableTitles).map(function (_ref10) {
    var _fetchOptions$order_b;

    var _ref11 = (0, _slicedToArray2.default)(_ref10, 2),
        key = _ref11[0],
        tableTitle = _ref11[1];

    var cellProps = {
      component: 'th',
      className: "manage-column ".concat(tableTitle.className || '')
    };

    if ((_fetchOptions$order_b = fetchOptions.order_by) !== null && _fetchOptions$order_b !== void 0 && _fetchOptions$order_b.enum.includes(key)) {
      return /*#__PURE__*/_react.default.createElement(_wpTable.default.OrderableCell, (0, _extends2.default)({}, cellProps, {
        key: key,
        order: {
          key: key,
          current: order,
          onChange: function onChange(value) {
            return setOrder(value);
          }
        }
      }), tableTitle.label);
    }

    return /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, (0, _extends2.default)({
      key: key
    }, cellProps), tableTitle.label);
  }));

  var exportButton = /*#__PURE__*/_react.default.createElement("div", {
    className: "alignright"
  }, /*#__PURE__*/_react.default.createElement(_exportButton.default, {
    onClick: function onClick() {
      var _meta$pagination;

      exportSubmissions(_useExport3.EXPORT_MODE_SELECTED === exportOptions.mode ? {
        ids: checked
      } : (0, _objectSpread2.default)({}, flatQuery), checked.length || ((_meta$pagination = meta.pagination) === null || _meta$pagination === void 0 ? void 0 : _meta$pagination.total));
    },
    isLoading: _useDataAction7.STATUS_LOADING === exportOptions.status,
    progress: exportOptions.progress,
    mode: exportOptions.mode,
    disabled: !((_meta$pagination2 = meta.pagination) !== null && _meta$pagination2 !== void 0 && _meta$pagination2.total) && _useDataAction7.STATUS_LOADING !== exportOptions.status
  }));

  var tablePagination = meta.pagination && /*#__PURE__*/_react.default.createElement(_pagination.default, {
    total: meta.pagination.total,
    currentPage: meta.pagination.current_page,
    lastPage: meta.pagination.last_page,
    perPage: meta.pagination.per_page,
    onChange: function onChange(value) {
      return setPage(value);
    }
  });

  if (_useDataAction7.STATUS_SUCCESS !== fetchOptionsStatus) {
    return __('Loading...', 'elementor-pro');
  }

  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, ((_fetchOptions$filter = fetchOptions.filter) === null || _fetchOptions$filter === void 0 ? void 0 : _fetchOptions$filter[SEARCH_FILTER_KEY]) && /*#__PURE__*/_react.default.createElement(_searchBox.default, {
    key: SEARCH_FILTER_KEY,
    value: filter[SEARCH_FILTER_KEY],
    onChange: function onChange(value) {
      return setFilter((0, _defineProperty2.default)({}, SEARCH_FILTER_KEY, value));
    },
    isSearching: !!filter[SEARCH_FILTER_KEY] && fetchDataStatus === _useDataAction7.STATUS_LOADING
  }), ((_fetchOptions$filter2 = fetchOptions.filter) === null || _fetchOptions$filter2 === void 0 ? void 0 : _fetchOptions$filter2[STATUS_FILTER_KEY]) && /*#__PURE__*/_react.default.createElement(_linksFilter.default, {
    options: fetchOptions.filter[STATUS_FILTER_KEY].enum.map(function (value) {
      var _meta$count, _meta$count2;

      return {
        value: value,
        label: fetchOptions.filter[STATUS_FILTER_KEY].additionalProperties.options.labels[value],
        count: (_meta$count = meta.count) === null || _meta$count === void 0 ? void 0 : _meta$count[value],
        shouldShow: 'all' === value || ((_meta$count2 = meta.count) === null || _meta$count2 === void 0 ? void 0 : _meta$count2[value]) > 0
      };
    }),
    value: filter[STATUS_FILTER_KEY],
    onChange: function onChange(value) {
      return setFilter((0, _defineProperty2.default)({}, STATUS_FILTER_KEY, value));
    }
  }), /*#__PURE__*/_react.default.createElement("div", {
    className: "clear"
  }), /*#__PURE__*/_react.default.createElement("div", {
    className: "tablenav top"
  }, /*#__PURE__*/_react.default.createElement(_bulkActionSelect.BulkActionSelect, {
    actions: bulkActions,
    className: "alignleft"
  }), /*#__PURE__*/_react.default.createElement("div", {
    className: "alignleft actions"
  }, ((_fetchOptions$filter3 = fetchOptions.filter) === null || _fetchOptions$filter3 === void 0 ? void 0 : _fetchOptions$filter3[REFERER_FILTER_KEY]) && /*#__PURE__*/_react.default.createElement(_refererFilter.default, {
    value: filter[REFERER_FILTER_KEY] || '',
    onChange: function onChange(value) {
      return setFilter((0, _defineProperty2.default)({}, REFERER_FILTER_KEY, value));
    }
  }), ((_fetchOptions$filter4 = fetchOptions.filter) === null || _fetchOptions$filter4 === void 0 ? void 0 : _fetchOptions$filter4[FORM_FILTER_KEY]) && /*#__PURE__*/_react.default.createElement(_resourceFilter.default, {
    value: filter[FORM_FILTER_KEY] || '',
    onChange: function onChange(value) {
      return setFilter((0, _defineProperty2.default)({}, FORM_FILTER_KEY, value));
    },
    options: [{
      value: '',
      label: __('All Forms', 'elementor-pro')
    }],
    resourceOptions: fetchOptions.filter[FORM_FILTER_KEY].additionalProperties.options,
    name: FORM_FILTER_KEY,
    label: __('Filter by form', 'elementor-pro')
  }), /*#__PURE__*/_react.default.createElement(_dateFilter.default, {
    value: {
      after: filter[AFTER_FILTER_KEY],
      before: filter[BEFORE_FILTER_KEY]
    },
    onChange: function onChange(_ref12) {
      var after = _ref12.after,
          before = _ref12.before;
      setFilter((0, _objectSpread2.default)((0, _objectSpread2.default)({}, after !== undefined ? (0, _defineProperty2.default)({}, AFTER_FILTER_KEY, after) : {}), before !== undefined ? (0, _defineProperty2.default)({}, BEFORE_FILTER_KEY, before) : {}));
    },
    label: __('Filter by date', 'elementor-pro'),
    name: "date"
  })), exportButton, tablePagination), /*#__PURE__*/_react.default.createElement(_wpTable.default, {
    className: "e-form-submissions-list-table striped table-view-list"
  }, headerFooterRow && /*#__PURE__*/_react.default.createElement(_wpTable.default.Header, null, headerFooterRow), /*#__PURE__*/_react.default.createElement(_wpTable.default.Body, null, 0 === data.length && /*#__PURE__*/_react.default.createElement(_wpTable.default.Row, {
    className: "no-items"
  }, /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, {
    className: "colspanchange",
    colSpan: 7
  }, __('No submissions found.', 'elementor-pro'))), data.map(function (item) {
    var filteredRowActions = rowActions.filter(function (action) {
      return action.shouldShow(item);
    });
    return /*#__PURE__*/_react.default.createElement(_submissionRow.default, {
      key: item.id,
      item: item,
      tableTitles: tableTitles,
      checkBoxComponent: /*#__PURE__*/_react.default.createElement(_checkbox.default, {
        checkedGroup: checked,
        onChange: setChecked,
        value: item.id
      }),
      rowActionComponent: /*#__PURE__*/_react.default.createElement(_wpTable.default.RowActions, {
        actions: filteredRowActions,
        item: item
      })
    });
  })), headerFooterRow && /*#__PURE__*/_react.default.createElement(_wpTable.default.Footer, null, headerFooterRow)), /*#__PURE__*/_react.default.createElement("div", {
    className: "tablenav bottom"
  }, /*#__PURE__*/_react.default.createElement(_bulkActionSelect.BulkActionSelect, {
    actions: bulkActions,
    className: "alignleft"
  }), exportButton, tablePagination)));
}

function validateRestAction(query) {
  return query.id || query.ids && query.ids.length > 0;
}

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/pages/item.js":
/*!******************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/pages/item.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Item;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

__webpack_require__(/*! core-js/modules/es6.object.to-string.js */ "../node_modules/core-js/modules/es6.object.to-string.js");

__webpack_require__(/*! core-js/modules/es6.array.iterator.js */ "../node_modules/core-js/modules/es6.array.iterator.js");

__webpack_require__(/*! core-js/modules/web.dom.iterable.js */ "../node_modules/core-js/modules/web.dom.iterable.js");

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var _objectSpread4 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _wpTable = _interopRequireDefault(__webpack_require__(/*! ../components/wp-table */ "../modules/forms/submissions/assets/js/admin/components/wp-table/index.js"));

var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");

var _noticesContext = __webpack_require__(/*! ../context/notices-context */ "../modules/forms/submissions/assets/js/admin/context/notices-context.js");

var _postBox = _interopRequireDefault(__webpack_require__(/*! ../components/post-box */ "../modules/forms/submissions/assets/js/admin/components/post-box.js"));

var _formActionsLog = _interopRequireDefault(__webpack_require__(/*! ../components/form-actions-log */ "../modules/forms/submissions/assets/js/admin/components/form-actions-log.js"));

var _noticeMessages = _interopRequireDefault(__webpack_require__(/*! ../notice-messages */ "../modules/forms/submissions/assets/js/admin/notice-messages.js"));

var _useDataAction5 = _interopRequireWildcard(__webpack_require__(/*! ../hooks/use-data-action */ "../modules/forms/submissions/assets/js/admin/hooks/use-data-action.js"));

var _date = __webpack_require__(/*! ../utils/date */ "../modules/forms/submissions/assets/js/admin/utils/date.js");

var _submissionValue = _interopRequireDefault(__webpack_require__(/*! ../components/submission-value */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js"));

var _settingsContext = __webpack_require__(/*! ../context/settings-context */ "../modules/forms/submissions/assets/js/admin/context/settings-context.js");

var _React = _react.default,
    useEffect = _React.useEffect,
    useState = _React.useState,
    useMemo = _React.useMemo;

function Item(props) {
  var _data$form2;

  var _useState = useState({
    data: {},
    meta: {}
  }),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      data = _useState2[0].data,
      setFetchResult = _useState2[1],
      _useState3 = useState(null),
      _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
      error = _useState4[0],
      setError = _useState4[1],
      _useState5 = useState(false),
      _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
      isEditMode = _useState6[0],
      setIsEditMode = _useState6[1],
      _useState7 = useState({}),
      _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
      formData = _useState8[0],
      setFormData = _useState8[1],
      navigate = (0, _router.useNavigate)(),
      _useNoticesContext = (0, _noticesContext.useNoticesContext)(),
      notifySuccess = _useNoticesContext.notifySuccess,
      notifyError = _useNoticesContext.notifyError,
      _useSettingsContext = (0, _settingsContext.useSettingsContext)(),
      isTrashEnabled = _useSettingsContext.isTrashEnabled;

  var fields = useMemo(function () {
    var _data$form;

    return (_data$form = data.form) === null || _data$form === void 0 ? void 0 : _data$form.fields.reduce(function (current, field) {
      return (0, _objectSpread4.default)((0, _objectSpread4.default)({}, current), {}, (0, _defineProperty2.default)({}, field.id, field));
    }, {});
  }, [(_data$form2 = data.form) === null || _data$form2 === void 0 ? void 0 : _data$form2.fields]); // Fetch a single submission on first render

  useEffect(function () {
    $e.data.get('form-submissions/index', {
      id: props.id
    }, {
      refresh: true
    }).then(function (result) {
      setFetchResult(result.data);
      return result.data;
    }).then(function (resultData) {
      if (resultData.data.is_read) {
        return;
      } // Mark the submission as read if is not read already


      $e.data.update('form-submissions/index', {
        is_read: true
      }, {
        id: props.id
      });
    }).catch(function (e) {
      return setError(e);
    });
  }, []); // Move submission to trash

  var _useDataAction = (0, _useDataAction5.default)(function (_ref, _ref2) {
    var _ref3 = (0, _slicedToArray2.default)(_ref, 1),
        _ref3$ = _ref3[0],
        query = _ref3$ === void 0 ? {} : _ref3$;

    var abortController = _ref2.abortController;
    var messages = _noticeMessages.default[query.force ? 'deleted' : 'trashed'];
    return $e.data.delete('form-submissions/index', (0, _objectSpread4.default)({
      id: props.id
    }, query), {
      signal: abortController.signal
    }).then(function () {
      return notifySuccess(messages.success(1));
    }).then(function () {
      return navigate('/');
    }).catch(function () {
      return notifyError(messages.error());
    });
  }, [props.id]),
      _useDataAction2 = (0, _slicedToArray2.default)(_useDataAction, 1),
      deleteItem = _useDataAction2[0]; // Update field values.


  var _useDataAction3 = (0, _useDataAction5.default)(function (_ref4) {
    var _ref5 = (0, _slicedToArray2.default)(_ref4, 1),
        values = _ref5[0];

    return $e.data.update('form-submissions/index', {
      values: values
    }, {
      id: props.id
    }).then(function (result) {
      return setFetchResult(result.data);
    }).then(function () {
      setIsEditMode(false);
      setFormData({});
    }).then(function () {
      return notifySuccess(_noticeMessages.default.updated.success(1));
    }).catch(function () {
      return notifyError(_noticeMessages.default.updated.error());
    });
  }, [props.id]),
      _useDataAction4 = (0, _slicedToArray2.default)(_useDataAction3, 2),
      update = _useDataAction4[0],
      updateStatus = _useDataAction4[1].status;

  if (!(0, _keys.default)(data).length) {
    if (error) {
      return /*#__PURE__*/_react.default.createElement("p", null, " ", error.message || __('Not Found', 'elementor-pro'), " ");
    }

    return __('Loading...', 'elementor-pro');
  }

  return /*#__PURE__*/_react.default.createElement("div", {
    id: "poststuff"
  }, /*#__PURE__*/_react.default.createElement("form", {
    id: "post-body",
    className: "metabox-holder columns-2",
    onSubmit: function onSubmit(e) {
      e.preventDefault();

      if (!isEditMode || updateStatus === _useDataAction5.STATUS_LOADING) {
        return;
      }

      update(formData);
    }
  }, /*#__PURE__*/_react.default.createElement("div", {
    id: "post-body-content"
  }, /*#__PURE__*/_react.default.createElement("div", {
    className: "e-form-submissions-main"
  }, /*#__PURE__*/_react.default.createElement(_postBox.default, {
    header: /*#__PURE__*/_react.default.createElement("div", {
      className: "e-form-submissions-main__header"
    }, /*#__PURE__*/_react.default.createElement("h2", null, __('Submission', 'elementor-pro'), " #", data.id), /*#__PURE__*/_react.default.createElement("button", {
      onClick: function onClick(e) {
        e.preventDefault();

        if (updateStatus === _useDataAction5.STATUS_LOADING) {
          return;
        }

        setIsEditMode(function (prev) {
          return !prev;
        });
      },
      className: "button button-secondary",
      type: "button",
      disabled: updateStatus === _useDataAction5.STATUS_LOADING
    }, isEditMode ? __('Cancel', 'elementor-pro') : __('Edit', 'elementor-pro')))
  }, /*#__PURE__*/_react.default.createElement(_wpTable.default, {
    className: "e-form-submissions-item-table"
  }, /*#__PURE__*/_react.default.createElement(_wpTable.default.Body, null, data.values.map(function (value) {
    var _fields$value$key;

    return /*#__PURE__*/_react.default.createElement(_wpTable.default.Row, {
      key: value.id
    }, /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, null, (fields === null || fields === void 0 ? void 0 : (_fields$value$key = fields[value.key]) === null || _fields$value$key === void 0 ? void 0 : _fields$value$key.label) || value.key), /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, null, /*#__PURE__*/_react.default.createElement(_submissionValue.default, {
      value: value.value,
      field: (fields === null || fields === void 0 ? void 0 : fields[value.key]) || {
        id: value.key,
        type: 'text'
      },
      isEditMode: isEditMode,
      onChange: function onChange(id, fieldValue) {
        return setFormData(function (prev) {
          return (0, _objectSpread4.default)((0, _objectSpread4.default)({}, prev), {}, (0, _defineProperty2.default)({}, id, fieldValue));
        });
      }
    })));
  }))))), data.form_actions_log && /*#__PURE__*/_react.default.createElement(_formActionsLog.default, {
    actions: data.form_actions_log
  })), /*#__PURE__*/_react.default.createElement("div", {
    className: "postbox-container",
    id: "postbox-container-1"
  }, /*#__PURE__*/_react.default.createElement(_postBox.default, {
    header: /*#__PURE__*/_react.default.createElement("h2", null, __('Additional Info', 'elementor-pro'), " ")
  }, /*#__PURE__*/_react.default.createElement("div", {
    className: "submitbox"
  }, /*#__PURE__*/_react.default.createElement("div", {
    id: "misc-publishing-actions"
  }, data.post && /*#__PURE__*/_react.default.createElement("div", {
    className: "misc-pub-section"
  }, __('Form:', 'elementor-pro'), " ", /*#__PURE__*/_react.default.createElement("a", {
    href: data.post.edit_url,
    target: "_blank",
    rel: "noreferrer"
  }, data.form.name, " (#", data.form.element_id, ")")), /*#__PURE__*/_react.default.createElement("div", {
    className: "misc-pub-section"
  }, __('Page:', 'elementor-pro'), " ", /*#__PURE__*/_react.default.createElement("a", {
    href: data.referer,
    target: "_blank",
    rel: "noreferrer"
  }, data.referer_title || /*#__PURE__*/_react.default.createElement("i", {
    className: "eicon-editor-external-link e-form-submissions-referer-icon"
  }))), /*#__PURE__*/_react.default.createElement("div", {
    className: "misc-pub-section"
  }, __('Create Date:', 'elementor-pro'), " ", /*#__PURE__*/_react.default.createElement("strong", null, (0, _date.formatToLocalDateTime)(data.created_at))), /*#__PURE__*/_react.default.createElement("div", {
    className: "misc-pub-section"
  }, __('Update Date:', 'elementor-pro'), " ", /*#__PURE__*/_react.default.createElement("strong", null, (0, _date.formatToLocalDateTime)(data.updated_at))), data.user_name && /*#__PURE__*/_react.default.createElement("div", {
    className: "misc-pub-section"
  }, __('User Name:', 'elementor-pro'), " ", /*#__PURE__*/_react.default.createElement("strong", null, data.user_name)), /*#__PURE__*/_react.default.createElement("div", {
    className: "misc-pub-section"
  }, __('User IP:', 'elementor-pro'), " ", /*#__PURE__*/_react.default.createElement("strong", null, data.user_ip)), /*#__PURE__*/_react.default.createElement("div", {
    className: "misc-pub-section"
  }, __('User Agent:', 'elementor-pro'), " ", /*#__PURE__*/_react.default.createElement("strong", null, data.user_agent))), /*#__PURE__*/_react.default.createElement("div", {
    id: "major-publishing-actions"
  }, /*#__PURE__*/_react.default.createElement("div", {
    id: "delete-action"
  }, /*#__PURE__*/_react.default.createElement("a", {
    className: "submitdelete deletion",
    href: "#",
    onClick: function onClick(e) {
      e.preventDefault();
      deleteItem({
        force: isTrashEnabled ? 0 : 1
      });
    }
  }, isTrashEnabled ? __('Move to Trash', 'elementor-pro') : __('Delete Permanently', 'elementor-pro'))), /*#__PURE__*/_react.default.createElement("div", {
    id: "publishing-action"
  }, /*#__PURE__*/_react.default.createElement("button", {
    type: "submit",
    name: "save",
    id: "publish",
    className: "button button-primary button-large",
    disabled: !isEditMode || updateStatus === _useDataAction5.STATUS_LOADING
  }, __('Update', 'elementor-pro'))), /*#__PURE__*/_react.default.createElement("div", {
    className: "clear"
  })))))), /*#__PURE__*/_react.default.createElement("br", {
    className: "clear"
  }));
}

Item.propTypes = {
  id: PropTypes.string
};

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/utils/date.js":
/*!******************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/utils/date.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.formatToLocalDate = formatToLocalDate;
exports.formatToLocalTime = formatToLocalTime;
exports.formatToLocalDateTime = formatToLocalDateTime;
var momentLocale = moment.localeData();

function formatToLocalDate(dateString) {
  return wp.date.format(momentLocale.longDateFormat('LL'), dateString);
}

function formatToLocalTime(dateString) {
  return wp.date.format(momentLocale.longDateFormat('LT'), dateString);
}

function formatToLocalDateTime(dateString) {
  return "".concat(formatToLocalDate(dateString), " ").concat(formatToLocalTime(dateString));
}

/***/ }),

/***/ "../modules/forms/submissions/assets/js/admin/utils/download-blob.js":
/*!***************************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/utils/download-blob.js ***!
  \***************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = downloadBlob;

/**
 * A util function to make sure the user download the blob data.
 *
 * @param {any} blob
 * @param {string} filename
 */
function downloadBlob(blob) {
  var filename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
  var link = document.createElement('a');
  link.setAttribute('href', URL.createObjectURL(blob));
  link.style.visibility = 'hidden';

  if (filename) {
    link.setAttribute('download', filename);
  }

  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
}

/***/ }),

/***/ "../node_modules/core-js/library/fn/array/from.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/fn/array/from.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../../modules/es6.array.from */ "../node_modules/core-js/library/modules/es6.array.from.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Array.from;


/***/ }),

/***/ "../node_modules/core-js/library/fn/array/is-array.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/fn/array/is-array.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.array.is-array */ "../node_modules/core-js/library/modules/es6.array.is-array.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Array.isArray;


/***/ }),

/***/ "../node_modules/core-js/library/fn/date/now.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/library/fn/date/now.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.date.now */ "../node_modules/core-js/library/modules/es6.date.now.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Date.now;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/assign.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/assign.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.assign */ "../node_modules/core-js/library/modules/es6.object.assign.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.assign;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/create.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/create.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.create */ "../node_modules/core-js/library/modules/es6.object.create.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function create(P, D) {
  return $Object.create(P, D);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/define-properties.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/define-properties.js ***!
  \**********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.define-properties */ "../node_modules/core-js/library/modules/es6.object.define-properties.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function defineProperties(T, D) {
  return $Object.defineProperties(T, D);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/define-property.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/define-property.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.define-property */ "../node_modules/core-js/library/modules/es6.object.define-property.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function defineProperty(it, key, desc) {
  return $Object.defineProperty(it, key, desc);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/entries.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/entries.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es7.object.entries */ "../node_modules/core-js/library/modules/es7.object.entries.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.entries;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-own-property-descriptor.js":
/*!********************************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-own-property-descriptor.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.get-own-property-descriptor */ "../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function getOwnPropertyDescriptor(it, key) {
  return $Object.getOwnPropertyDescriptor(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-own-property-descriptors.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-own-property-descriptors.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es7.object.get-own-property-descriptors */ "../node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.getOwnPropertyDescriptors;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-own-property-symbols.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-own-property-symbols.js ***!
  \*****************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.symbol */ "../node_modules/core-js/library/modules/es6.symbol.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.getOwnPropertySymbols;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-prototype-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-prototype-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.get-prototype-of */ "../node_modules/core-js/library/modules/es6.object.get-prototype-of.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.getPrototypeOf;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/keys.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/keys.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.keys */ "../node_modules/core-js/library/modules/es6.object.keys.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.keys;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/set-prototype-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/set-prototype-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.set-prototype-of */ "../node_modules/core-js/library/modules/es6.object.set-prototype-of.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.setPrototypeOf;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/values.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/values.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es7.object.values */ "../node_modules/core-js/library/modules/es7.object.values.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.values;


/***/ }),

/***/ "../node_modules/core-js/library/fn/promise.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/library/fn/promise.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../modules/es6.object.to-string */ "../node_modules/core-js/library/modules/es6.object.to-string.js");
__webpack_require__(/*! ../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../modules/web.dom.iterable */ "../node_modules/core-js/library/modules/web.dom.iterable.js");
__webpack_require__(/*! ../modules/es6.promise */ "../node_modules/core-js/library/modules/es6.promise.js");
__webpack_require__(/*! ../modules/es7.promise.finally */ "../node_modules/core-js/library/modules/es7.promise.finally.js");
__webpack_require__(/*! ../modules/es7.promise.try */ "../node_modules/core-js/library/modules/es7.promise.try.js");
module.exports = __webpack_require__(/*! ../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Promise;


/***/ }),

/***/ "../node_modules/core-js/library/fn/reflect/construct.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/fn/reflect/construct.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.reflect.construct */ "../node_modules/core-js/library/modules/es6.reflect.construct.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Reflect.construct;


/***/ }),

/***/ "../node_modules/core-js/library/fn/symbol/index.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/fn/symbol/index.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.symbol */ "../node_modules/core-js/library/modules/es6.symbol.js");
__webpack_require__(/*! ../../modules/es6.object.to-string */ "../node_modules/core-js/library/modules/es6.object.to-string.js");
__webpack_require__(/*! ../../modules/es7.symbol.async-iterator */ "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js");
__webpack_require__(/*! ../../modules/es7.symbol.observable */ "../node_modules/core-js/library/modules/es7.symbol.observable.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Symbol;


/***/ }),

/***/ "../node_modules/core-js/library/fn/symbol/iterator.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/fn/symbol/iterator.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../../modules/web.dom.iterable */ "../node_modules/core-js/library/modules/web.dom.iterable.js");
module.exports = __webpack_require__(/*! ../../modules/_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js").f('iterator');


/***/ }),

/***/ "../node_modules/core-js/library/fn/weak-map.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/library/fn/weak-map.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../modules/es6.object.to-string */ "../node_modules/core-js/library/modules/es6.object.to-string.js");
__webpack_require__(/*! ../modules/web.dom.iterable */ "../node_modules/core-js/library/modules/web.dom.iterable.js");
__webpack_require__(/*! ../modules/es6.weak-map */ "../node_modules/core-js/library/modules/es6.weak-map.js");
__webpack_require__(/*! ../modules/es7.weak-map.of */ "../node_modules/core-js/library/modules/es7.weak-map.of.js");
__webpack_require__(/*! ../modules/es7.weak-map.from */ "../node_modules/core-js/library/modules/es7.weak-map.from.js");
module.exports = __webpack_require__(/*! ../modules/_core */ "../node_modules/core-js/library/modules/_core.js").WeakMap;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_a-function.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_a-function.js ***!
  \**************************************************************/
/***/ ((module) => {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_add-to-unscopables.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_add-to-unscopables.js ***!
  \**********************************************************************/
/***/ ((module) => {

module.exports = function () { /* empty */ };


/***/ }),

/***/ "../node_modules/core-js/library/modules/_an-instance.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_an-instance.js ***!
  \***************************************************************/
/***/ ((module) => {

module.exports = function (it, Constructor, name, forbiddenField) {
  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
    throw TypeError(name + ': incorrect invocation!');
  } return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_an-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_an-object.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-includes.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-includes.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "../node_modules/core-js/library/modules/_to-absolute-index.js");
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-methods.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-methods.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 0 -> Array#forEach
// 1 -> Array#map
// 2 -> Array#filter
// 3 -> Array#some
// 4 -> Array#every
// 5 -> Array#find
// 6 -> Array#findIndex
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/library/modules/_iobject.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var asc = __webpack_require__(/*! ./_array-species-create */ "../node_modules/core-js/library/modules/_array-species-create.js");
module.exports = function (TYPE, $create) {
  var IS_MAP = TYPE == 1;
  var IS_FILTER = TYPE == 2;
  var IS_SOME = TYPE == 3;
  var IS_EVERY = TYPE == 4;
  var IS_FIND_INDEX = TYPE == 6;
  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
  var create = $create || asc;
  return function ($this, callbackfn, that) {
    var O = toObject($this);
    var self = IObject(O);
    var f = ctx(callbackfn, that, 3);
    var length = toLength(self.length);
    var index = 0;
    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
    var val, res;
    for (;length > index; index++) if (NO_HOLES || index in self) {
      val = self[index];
      res = f(val, index, O);
      if (TYPE) {
        if (IS_MAP) result[index] = res;   // map
        else if (res) switch (TYPE) {
          case 3: return true;             // some
          case 5: return val;              // find
          case 6: return index;            // findIndex
          case 2: result.push(val);        // filter
        } else if (IS_EVERY) return false; // every
      }
    }
    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-species-constructor.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-species-constructor.js ***!
  \*****************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species');

module.exports = function (original) {
  var C;
  if (isArray(original)) {
    C = original.constructor;
    // cross-realm fallback
    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
    if (isObject(C)) {
      C = C[SPECIES];
      if (C === null) C = undefined;
    }
  } return C === undefined ? Array : C;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-species-create.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-species-create.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
var speciesConstructor = __webpack_require__(/*! ./_array-species-constructor */ "../node_modules/core-js/library/modules/_array-species-constructor.js");

module.exports = function (original, length) {
  return new (speciesConstructor(original))(length);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_bind.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_bind.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var invoke = __webpack_require__(/*! ./_invoke */ "../node_modules/core-js/library/modules/_invoke.js");
var arraySlice = [].slice;
var factories = {};

var construct = function (F, len, args) {
  if (!(len in factories)) {
    for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';
    // eslint-disable-next-line no-new-func
    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
  } return factories[len](F, args);
};

module.exports = Function.bind || function bind(that /* , ...args */) {
  var fn = aFunction(this);
  var partArgs = arraySlice.call(arguments, 1);
  var bound = function (/* args... */) {
    var args = partArgs.concat(arraySlice.call(arguments));
    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
  };
  if (isObject(fn.prototype)) bound.prototype = fn.prototype;
  return bound;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_classof.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_classof.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_cof.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_cof.js ***!
  \*******************************************************/
/***/ ((module) => {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_collection-weak.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_collection-weak.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var redefineAll = __webpack_require__(/*! ./_redefine-all */ "../node_modules/core-js/library/modules/_redefine-all.js");
var getWeak = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js").getWeak;
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var anInstance = __webpack_require__(/*! ./_an-instance */ "../node_modules/core-js/library/modules/_an-instance.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");
var createArrayMethod = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/library/modules/_array-methods.js");
var $has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var validate = __webpack_require__(/*! ./_validate-collection */ "../node_modules/core-js/library/modules/_validate-collection.js");
var arrayFind = createArrayMethod(5);
var arrayFindIndex = createArrayMethod(6);
var id = 0;

// fallback for uncaught frozen keys
var uncaughtFrozenStore = function (that) {
  return that._l || (that._l = new UncaughtFrozenStore());
};
var UncaughtFrozenStore = function () {
  this.a = [];
};
var findUncaughtFrozen = function (store, key) {
  return arrayFind(store.a, function (it) {
    return it[0] === key;
  });
};
UncaughtFrozenStore.prototype = {
  get: function (key) {
    var entry = findUncaughtFrozen(this, key);
    if (entry) return entry[1];
  },
  has: function (key) {
    return !!findUncaughtFrozen(this, key);
  },
  set: function (key, value) {
    var entry = findUncaughtFrozen(this, key);
    if (entry) entry[1] = value;
    else this.a.push([key, value]);
  },
  'delete': function (key) {
    var index = arrayFindIndex(this.a, function (it) {
      return it[0] === key;
    });
    if (~index) this.a.splice(index, 1);
    return !!~index;
  }
};

module.exports = {
  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
    var C = wrapper(function (that, iterable) {
      anInstance(that, C, NAME, '_i');
      that._t = NAME;      // collection type
      that._i = id++;      // collection id
      that._l = undefined; // leak store for uncaught frozen objects
      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
    });
    redefineAll(C.prototype, {
      // 23.3.3.2 WeakMap.prototype.delete(key)
      // 23.4.3.3 WeakSet.prototype.delete(value)
      'delete': function (key) {
        if (!isObject(key)) return false;
        var data = getWeak(key);
        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
        return data && $has(data, this._i) && delete data[this._i];
      },
      // 23.3.3.4 WeakMap.prototype.has(key)
      // 23.4.3.4 WeakSet.prototype.has(value)
      has: function has(key) {
        if (!isObject(key)) return false;
        var data = getWeak(key);
        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
        return data && $has(data, this._i);
      }
    });
    return C;
  },
  def: function (that, key, value) {
    var data = getWeak(anObject(key), true);
    if (data === true) uncaughtFrozenStore(that).set(key, value);
    else data[that._i] = value;
    return that;
  },
  ufstore: uncaughtFrozenStore
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_collection.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_collection.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var meta = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var redefineAll = __webpack_require__(/*! ./_redefine-all */ "../node_modules/core-js/library/modules/_redefine-all.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");
var anInstance = __webpack_require__(/*! ./_an-instance */ "../node_modules/core-js/library/modules/_an-instance.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var each = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/library/modules/_array-methods.js")(0);
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");

module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
  var Base = global[NAME];
  var C = Base;
  var ADDER = IS_MAP ? 'set' : 'add';
  var proto = C && C.prototype;
  var O = {};
  if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
    new C().entries().next();
  }))) {
    // create collection constructor
    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
    redefineAll(C.prototype, methods);
    meta.NEED = true;
  } else {
    C = wrapper(function (target, iterable) {
      anInstance(target, C, NAME, '_c');
      target._c = new Base();
      if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);
    });
    each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {
      var IS_ADDER = KEY == 'add' || KEY == 'set';
      if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {
        anInstance(this, C, KEY);
        if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;
        var result = this._c[KEY](a === 0 ? 0 : a, b);
        return IS_ADDER ? this : result;
      });
    });
    IS_WEAK || dP(C.prototype, 'size', {
      get: function () {
        return this._c.size;
      }
    });
  }

  setToStringTag(C, NAME);

  O[NAME] = C;
  $export($export.G + $export.W + $export.F, O);

  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);

  return C;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_core.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_core.js ***!
  \********************************************************/
/***/ ((module) => {

var core = module.exports = { version: '2.6.12' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/library/modules/_create-property.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_create-property.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $defineProperty = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");

module.exports = function (object, index, value) {
  if (index in object) $defineProperty.f(object, index, createDesc(0, value));
  else object[index] = value;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_ctx.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_ctx.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// optional / simple context binding
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_defined.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_defined.js ***!
  \***********************************************************/
/***/ ((module) => {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_descriptors.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_descriptors.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_dom-create.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_dom-create.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_enum-bug-keys.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_enum-bug-keys.js ***!
  \*****************************************************************/
/***/ ((module) => {

// IE 8- don't enum bug keys
module.exports = (
  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');


/***/ }),

/***/ "../node_modules/core-js/library/modules/_enum-keys.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_enum-keys.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// all enumerable object keys, includes symbols
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
module.exports = function (it) {
  var result = getKeys(it);
  var getSymbols = gOPS.f;
  if (getSymbols) {
    var symbols = getSymbols(it);
    var isEnum = pIE.f;
    var i = 0;
    var key;
    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
  } return result;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_export.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_export.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var IS_WRAP = type & $export.W;
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE];
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
  var key, own, out;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    if (own && has(exports, key)) continue;
    // export native or passed
    out = own ? target[key] : source[key];
    // prevent global pollution for namespaces
    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
    // bind timers to global for call from export context
    : IS_BIND && own ? ctx(out, global)
    // wrap global constructors for prevent change them in library
    : IS_WRAP && target[key] == out ? (function (C) {
      var F = function (a, b, c) {
        if (this instanceof C) {
          switch (arguments.length) {
            case 0: return new C();
            case 1: return new C(a);
            case 2: return new C(a, b);
          } return new C(a, b, c);
        } return C.apply(this, arguments);
      };
      F[PROTOTYPE] = C[PROTOTYPE];
      return F;
    // make static versions for prototype methods
    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
    if (IS_PROTO) {
      (exports.virtual || (exports.virtual = {}))[key] = out;
      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
    }
  }
};
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_fails.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_fails.js ***!
  \*********************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_for-of.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_for-of.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var call = __webpack_require__(/*! ./_iter-call */ "../node_modules/core-js/library/modules/_iter-call.js");
var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "../node_modules/core-js/library/modules/_is-array-iter.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "../node_modules/core-js/library/modules/core.get-iterator-method.js");
var BREAK = {};
var RETURN = {};
var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
  var f = ctx(fn, that, entries ? 2 : 1);
  var index = 0;
  var length, step, iterator, result;
  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
  // fast case for arrays with default iterator
  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
    if (result === BREAK || result === RETURN) return result;
  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
    result = call(iterator, f, step.value, entries);
    if (result === BREAK || result === RETURN) return result;
  }
};
exports.BREAK = BREAK;
exports.RETURN = RETURN;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_global.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_global.js ***!
  \**********************************************************/
/***/ ((module) => {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/library/modules/_has.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_has.js ***!
  \*******************************************************/
/***/ ((module) => {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_hide.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_hide.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_html.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_html.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").document;
module.exports = document && document.documentElement;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_ie8-dom-define.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_ie8-dom-define.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_invoke.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_invoke.js ***!
  \**********************************************************/
/***/ ((module) => {

// fast apply, http://jsperf.lnkit.com/fast-apply/5
module.exports = function (fn, args, that) {
  var un = that === undefined;
  switch (args.length) {
    case 0: return un ? fn()
                      : fn.call(that);
    case 1: return un ? fn(args[0])
                      : fn.call(that, args[0]);
    case 2: return un ? fn(args[0], args[1])
                      : fn.call(that, args[0], args[1]);
    case 3: return un ? fn(args[0], args[1], args[2])
                      : fn.call(that, args[0], args[1], args[2]);
    case 4: return un ? fn(args[0], args[1], args[2], args[3])
                      : fn.call(that, args[0], args[1], args[2], args[3]);
  } return fn.apply(that, args);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iobject.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iobject.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-array-iter.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-array-iter.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// check on default Array iterator
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var ArrayProto = Array.prototype;

module.exports = function (it) {
  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-array.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-array.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-object.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-call.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-call.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// call something on iterator step with safe closing on error
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
module.exports = function (iterator, fn, value, entries) {
  try {
    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
  // 7.4.6 IteratorClose(iterator, completion)
  } catch (e) {
    var ret = iterator['return'];
    if (ret !== undefined) anObject(ret.call(iterator));
    throw e;
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-create.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-create.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var descriptor = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var IteratorPrototype = {};

// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
__webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js")(IteratorPrototype, __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator'), function () { return this; });

module.exports = function (Constructor, NAME, next) {
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
  setToStringTag(Constructor, NAME + ' Iterator');
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-define.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-define.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var $iterCreate = __webpack_require__(/*! ./_iter-create */ "../node_modules/core-js/library/modules/_iter-create.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';

var returnThis = function () { return this; };

module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
  $iterCreate(Constructor, NAME, next);
  var getMethod = function (kind) {
    if (!BUGGY && kind in proto) return proto[kind];
    switch (kind) {
      case KEYS: return function keys() { return new Constructor(this, kind); };
      case VALUES: return function values() { return new Constructor(this, kind); };
    } return function entries() { return new Constructor(this, kind); };
  };
  var TAG = NAME + ' Iterator';
  var DEF_VALUES = DEFAULT == VALUES;
  var VALUES_BUG = false;
  var proto = Base.prototype;
  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
  var $default = $native || getMethod(DEFAULT);
  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
  var methods, key, IteratorPrototype;
  // Fix native
  if ($anyNative) {
    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
      // Set @@toStringTag to native iterators
      setToStringTag(IteratorPrototype, TAG, true);
      // fix for some old engines
      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
    }
  }
  // fix Array#{values, @@iterator}.name in V8 / FF
  if (DEF_VALUES && $native && $native.name !== VALUES) {
    VALUES_BUG = true;
    $default = function values() { return $native.call(this); };
  }
  // Define iterator
  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
    hide(proto, ITERATOR, $default);
  }
  // Plug for library
  Iterators[NAME] = $default;
  Iterators[TAG] = returnThis;
  if (DEFAULT) {
    methods = {
      values: DEF_VALUES ? $default : getMethod(VALUES),
      keys: IS_SET ? $default : getMethod(KEYS),
      entries: $entries
    };
    if (FORCED) for (key in methods) {
      if (!(key in proto)) redefine(proto, key, methods[key]);
    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
  }
  return methods;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-detect.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-detect.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var SAFE_CLOSING = false;

try {
  var riter = [7][ITERATOR]();
  riter['return'] = function () { SAFE_CLOSING = true; };
  // eslint-disable-next-line no-throw-literal
  Array.from(riter, function () { throw 2; });
} catch (e) { /* empty */ }

module.exports = function (exec, skipClosing) {
  if (!skipClosing && !SAFE_CLOSING) return false;
  var safe = false;
  try {
    var arr = [7];
    var iter = arr[ITERATOR]();
    iter.next = function () { return { done: safe = true }; };
    arr[ITERATOR] = function () { return iter; };
    exec(arr);
  } catch (e) { /* empty */ }
  return safe;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-step.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-step.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = function (done, value) {
  return { value: value, done: !!done };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iterators.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iterators.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = {};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_library.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_library.js ***!
  \***********************************************************/
/***/ ((module) => {

module.exports = true;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_meta.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_meta.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var META = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js")('meta');
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var setDesc = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var id = 0;
var isExtensible = Object.isExtensible || function () {
  return true;
};
var FREEZE = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return isExtensible(Object.preventExtensions({}));
});
var setMeta = function (it) {
  setDesc(it, META, { value: {
    i: 'O' + ++id, // object ID
    w: {}          // weak collections IDs
  } });
};
var fastKey = function (it, create) {
  // return primitive with prefix
  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return 'F';
    // not necessary to add metadata
    if (!create) return 'E';
    // add missing metadata
    setMeta(it);
  // return object ID
  } return it[META].i;
};
var getWeak = function (it, create) {
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return true;
    // not necessary to add metadata
    if (!create) return false;
    // add missing metadata
    setMeta(it);
  // return hash weak collections IDs
  } return it[META].w;
};
// add metadata on freeze-family methods calling
var onFreeze = function (it) {
  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
  return it;
};
var meta = module.exports = {
  KEY: META,
  NEED: false,
  fastKey: fastKey,
  getWeak: getWeak,
  onFreeze: onFreeze
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_microtask.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_microtask.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var macrotask = __webpack_require__(/*! ./_task */ "../node_modules/core-js/library/modules/_task.js").set;
var Observer = global.MutationObserver || global.WebKitMutationObserver;
var process = global.process;
var Promise = global.Promise;
var isNode = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js")(process) == 'process';

module.exports = function () {
  var head, last, notify;

  var flush = function () {
    var parent, fn;
    if (isNode && (parent = process.domain)) parent.exit();
    while (head) {
      fn = head.fn;
      head = head.next;
      try {
        fn();
      } catch (e) {
        if (head) notify();
        else last = undefined;
        throw e;
      }
    } last = undefined;
    if (parent) parent.enter();
  };

  // Node.js
  if (isNode) {
    notify = function () {
      process.nextTick(flush);
    };
  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
  } else if (Observer && !(global.navigator && global.navigator.standalone)) {
    var toggle = true;
    var node = document.createTextNode('');
    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
    notify = function () {
      node.data = toggle = !toggle;
    };
  // environments with maybe non-completely correct, but existent Promise
  } else if (Promise && Promise.resolve) {
    // Promise.resolve without an argument throws an error in LG WebOS 2
    var promise = Promise.resolve(undefined);
    notify = function () {
      promise.then(flush);
    };
  // for other environments - macrotask based on:
  // - setImmediate
  // - MessageChannel
  // - window.postMessag
  // - onreadystatechange
  // - setTimeout
  } else {
    notify = function () {
      // strange IE + webpack dev server bug - use .call(global)
      macrotask.call(global, flush);
    };
  }

  return function (fn) {
    var task = { fn: fn, next: undefined };
    if (last) last.next = task;
    if (!head) {
      head = task;
      notify();
    } last = task;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_new-promise-capability.js":
/*!**************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_new-promise-capability.js ***!
  \**************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 25.4.1.5 NewPromiseCapability(C)
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");

function PromiseCapability(C) {
  var resolve, reject;
  this.promise = new C(function ($$resolve, $$reject) {
    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
    resolve = $$resolve;
    reject = $$reject;
  });
  this.resolve = aFunction(resolve);
  this.reject = aFunction(reject);
}

module.exports.f = function (C) {
  return new PromiseCapability(C);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-assign.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-assign.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 19.1.2.1 Object.assign(target, source, ...)
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/library/modules/_iobject.js");
var $assign = Object.assign;

// should work with symbols and should have deterministic property order (V8 bug)
module.exports = !$assign || __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  var A = {};
  var B = {};
  // eslint-disable-next-line no-undef
  var S = Symbol();
  var K = 'abcdefghijklmnopqrst';
  A[S] = 7;
  K.split('').forEach(function (k) { B[k] = k; });
  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
  var T = toObject(target);
  var aLen = arguments.length;
  var index = 1;
  var getSymbols = gOPS.f;
  var isEnum = pIE.f;
  while (aLen > index) {
    var S = IObject(arguments[index++]);
    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
    var length = keys.length;
    var j = 0;
    var key;
    while (length > j) {
      key = keys[j++];
      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
    }
  } return T;
} : $assign;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-create.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-create.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var dPs = __webpack_require__(/*! ./_object-dps */ "../node_modules/core-js/library/modules/_object-dps.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');
var Empty = function () { /* empty */ };
var PROTOTYPE = 'prototype';

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = __webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js")('iframe');
  var i = enumBugKeys.length;
  var lt = '<';
  var gt = '>';
  var iframeDocument;
  iframe.style.display = 'none';
  __webpack_require__(/*! ./_html */ "../node_modules/core-js/library/modules/_html.js").appendChild(iframe);
  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
  // createDict = iframe.contentWindow.Object;
  // html.removeChild(iframe);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
  iframeDocument.close();
  createDict = iframeDocument.F;
  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
  return createDict();
};

module.exports = Object.create || function create(O, Properties) {
  var result;
  if (O !== null) {
    Empty[PROTOTYPE] = anObject(O);
    result = new Empty();
    Empty[PROTOTYPE] = null;
    // add "__proto__" for Object.getPrototypeOf polyfill
    result[IE_PROTO] = O;
  } else result = createDict();
  return Properties === undefined ? result : dPs(result, Properties);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-dp.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-dp.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/library/modules/_ie8-dom-define.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var dP = Object.defineProperty;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-dps.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-dps.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");

module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var keys = getKeys(Properties);
  var length = keys.length;
  var i = 0;
  var P;
  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopd.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopd.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/library/modules/_ie8-dom-define.js");
var gOPD = Object.getOwnPropertyDescriptor;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? gOPD : function getOwnPropertyDescriptor(O, P) {
  O = toIObject(O);
  P = toPrimitive(P, true);
  if (IE8_DOM_DEFINE) try {
    return gOPD(O, P);
  } catch (e) { /* empty */ }
  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopn-ext.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopn-ext.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var gOPN = __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js").f;
var toString = {}.toString;

var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
  ? Object.getOwnPropertyNames(window) : [];

var getWindowNames = function (it) {
  try {
    return gOPN(it);
  } catch (e) {
    return windowNames.slice();
  }
};

module.exports.f = function getOwnPropertyNames(it) {
  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopn.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopn.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/library/modules/_object-keys-internal.js");
var hiddenKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js").concat('length', 'prototype');

exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
  return $keys(O, hiddenKeys);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gops.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gops.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports) => {

exports.f = Object.getOwnPropertySymbols;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gpo.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gpo.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');
var ObjectProto = Object.prototype;

module.exports = Object.getPrototypeOf || function (O) {
  O = toObject(O);
  if (has(O, IE_PROTO)) return O[IE_PROTO];
  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
    return O.constructor.prototype;
  } return O instanceof Object ? ObjectProto : null;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-keys-internal.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-keys-internal.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var arrayIndexOf = __webpack_require__(/*! ./_array-includes */ "../node_modules/core-js/library/modules/_array-includes.js")(false);
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');

module.exports = function (object, names) {
  var O = toIObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (has(O, key = names[i++])) {
    ~arrayIndexOf(result, key) || result.push(key);
  }
  return result;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-keys.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-keys.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/library/modules/_object-keys-internal.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js");

module.exports = Object.keys || function keys(O) {
  return $keys(O, enumBugKeys);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-pie.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-pie.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports) => {

exports.f = {}.propertyIsEnumerable;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-sap.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-sap.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// most Object methods by ES6 should accept primitives
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
module.exports = function (KEY, exec) {
  var fn = (core.Object || {})[KEY] || Object[KEY];
  var exp = {};
  exp[KEY] = exec(fn);
  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-to-array.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-to-array.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var isEnum = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js").f;
module.exports = function (isEntries) {
  return function (it) {
    var O = toIObject(it);
    var keys = getKeys(O);
    var length = keys.length;
    var i = 0;
    var result = [];
    var key;
    while (length > i) {
      key = keys[i++];
      if (!DESCRIPTORS || isEnum.call(O, key)) {
        result.push(isEntries ? [key, O[key]] : O[key]);
      }
    }
    return result;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_own-keys.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_own-keys.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// all object keys, includes non-enumerable and symbols
var gOPN = __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js");
var gOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var Reflect = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Reflect;
module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
  var keys = gOPN.f(anObject(it));
  var getSymbols = gOPS.f;
  return getSymbols ? keys.concat(getSymbols(it)) : keys;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_perform.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_perform.js ***!
  \***********************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return { e: false, v: exec() };
  } catch (e) {
    return { e: true, v: e };
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_promise-resolve.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_promise-resolve.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/library/modules/_new-promise-capability.js");

module.exports = function (C, x) {
  anObject(C);
  if (isObject(x) && x.constructor === C) return x;
  var promiseCapability = newPromiseCapability.f(C);
  var resolve = promiseCapability.resolve;
  resolve(x);
  return promiseCapability.promise;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_property-desc.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_property-desc.js ***!
  \*****************************************************************/
/***/ ((module) => {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_redefine-all.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_redefine-all.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
module.exports = function (target, src, safe) {
  for (var key in src) {
    if (safe && target[key]) target[key] = src[key];
    else hide(target, key, src[key]);
  } return target;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_redefine.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_redefine.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-collection-from.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-collection-from.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://tc39.github.io/proposal-setmap-offrom/
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");

module.exports = function (COLLECTION) {
  $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {
    var mapFn = arguments[1];
    var mapping, A, n, cb;
    aFunction(this);
    mapping = mapFn !== undefined;
    if (mapping) aFunction(mapFn);
    if (source == undefined) return new this();
    A = [];
    if (mapping) {
      n = 0;
      cb = ctx(mapFn, arguments[2], 2);
      forOf(source, false, function (nextItem) {
        A.push(cb(nextItem, n++));
      });
    } else {
      forOf(source, false, A.push, A);
    }
    return new this(A);
  } });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-collection-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-collection-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://tc39.github.io/proposal-setmap-offrom/
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");

module.exports = function (COLLECTION) {
  $export($export.S, COLLECTION, { of: function of() {
    var length = arguments.length;
    var A = new Array(length);
    while (length--) A[length] = arguments[length];
    return new this(A);
  } });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-proto.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-proto.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var check = function (O, proto) {
  anObject(O);
  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
};
module.exports = {
  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
    function (test, buggy, set) {
      try {
        set = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js")(Function.call, __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js").f(Object.prototype, '__proto__').set, 2);
        set(test, []);
        buggy = !(test instanceof Array);
      } catch (e) { buggy = true; }
      return function setPrototypeOf(O, proto) {
        check(O, proto);
        if (buggy) O.__proto__ = proto;
        else set(O, proto);
        return O;
      };
    }({}, false) : undefined),
  check: check
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-species.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-species.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species');

module.exports = function (KEY) {
  var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
    configurable: true,
    get: function () { return this; }
  });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-to-string-tag.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-to-string-tag.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var def = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');

module.exports = function (it, tag, stat) {
  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_shared-key.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_shared-key.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js")('keys');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
module.exports = function (key) {
  return shared[key] || (shared[key] = uid(key));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_shared.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_shared.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js") ? 'pure' : 'global',
  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_species-constructor.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_species-constructor.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.3.20 SpeciesConstructor(O, defaultConstructor)
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species');
module.exports = function (O, D) {
  var C = anObject(O).constructor;
  var S;
  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_string-at.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_string-at.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_task.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_task.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var invoke = __webpack_require__(/*! ./_invoke */ "../node_modules/core-js/library/modules/_invoke.js");
var html = __webpack_require__(/*! ./_html */ "../node_modules/core-js/library/modules/_html.js");
var cel = __webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var process = global.process;
var setTask = global.setImmediate;
var clearTask = global.clearImmediate;
var MessageChannel = global.MessageChannel;
var Dispatch = global.Dispatch;
var counter = 0;
var queue = {};
var ONREADYSTATECHANGE = 'onreadystatechange';
var defer, channel, port;
var run = function () {
  var id = +this;
  // eslint-disable-next-line no-prototype-builtins
  if (queue.hasOwnProperty(id)) {
    var fn = queue[id];
    delete queue[id];
    fn();
  }
};
var listener = function (event) {
  run.call(event.data);
};
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
if (!setTask || !clearTask) {
  setTask = function setImmediate(fn) {
    var args = [];
    var i = 1;
    while (arguments.length > i) args.push(arguments[i++]);
    queue[++counter] = function () {
      // eslint-disable-next-line no-new-func
      invoke(typeof fn == 'function' ? fn : Function(fn), args);
    };
    defer(counter);
    return counter;
  };
  clearTask = function clearImmediate(id) {
    delete queue[id];
  };
  // Node.js 0.8-
  if (__webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js")(process) == 'process') {
    defer = function (id) {
      process.nextTick(ctx(run, id, 1));
    };
  // Sphere (JS game engine) Dispatch API
  } else if (Dispatch && Dispatch.now) {
    defer = function (id) {
      Dispatch.now(ctx(run, id, 1));
    };
  // Browsers with MessageChannel, includes WebWorkers
  } else if (MessageChannel) {
    channel = new MessageChannel();
    port = channel.port2;
    channel.port1.onmessage = listener;
    defer = ctx(port.postMessage, port, 1);
  // Browsers with postMessage, skip WebWorkers
  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
    defer = function (id) {
      global.postMessage(id + '', '*');
    };
    global.addEventListener('message', listener, false);
  // IE8-
  } else if (ONREADYSTATECHANGE in cel('script')) {
    defer = function (id) {
      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
        html.removeChild(this);
        run.call(id);
      };
    };
  // Rest old browsers
  } else {
    defer = function (id) {
      setTimeout(ctx(run, id, 1), 0);
    };
  }
}
module.exports = {
  set: setTask,
  clear: clearTask
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-absolute-index.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-absolute-index.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-integer.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-integer.js ***!
  \**************************************************************/
/***/ ((module) => {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-iobject.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-iobject.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/library/modules/_iobject.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-length.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-length.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.15 ToLength
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-object.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-primitive.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-primitive.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_uid.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_uid.js ***!
  \*******************************************************/
/***/ ((module) => {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_user-agent.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_user-agent.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var navigator = global.navigator;

module.exports = navigator && navigator.userAgent || '';


/***/ }),

/***/ "../node_modules/core-js/library/modules/_validate-collection.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_validate-collection.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
module.exports = function (it, TYPE) {
  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks-define.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks-define.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var wksExt = __webpack_require__(/*! ./_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js");
var defineProperty = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
module.exports = function (name) {
  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks-ext.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks-ext.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

exports.f = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js");


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var store = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js")('wks');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
var Symbol = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),

/***/ "../node_modules/core-js/library/modules/core.get-iterator-method.js":
/*!***************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/core.get-iterator-method.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/library/modules/_classof.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
module.exports = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js").getIteratorMethod = function (it) {
  if (it != undefined) return it[ITERATOR]
    || it['@@iterator']
    || Iterators[classof(it)];
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.from.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.from.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var call = __webpack_require__(/*! ./_iter-call */ "../node_modules/core-js/library/modules/_iter-call.js");
var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "../node_modules/core-js/library/modules/_is-array-iter.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var createProperty = __webpack_require__(/*! ./_create-property */ "../node_modules/core-js/library/modules/_create-property.js");
var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "../node_modules/core-js/library/modules/core.get-iterator-method.js");

$export($export.S + $export.F * !__webpack_require__(/*! ./_iter-detect */ "../node_modules/core-js/library/modules/_iter-detect.js")(function (iter) { Array.from(iter); }), 'Array', {
  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
    var O = toObject(arrayLike);
    var C = typeof this == 'function' ? this : Array;
    var aLen = arguments.length;
    var mapfn = aLen > 1 ? arguments[1] : undefined;
    var mapping = mapfn !== undefined;
    var index = 0;
    var iterFn = getIterFn(O);
    var length, result, step, iterator;
    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
    // if object isn't iterable or it's array with default iterator - use simple case
    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
      }
    } else {
      length = toLength(O.length);
      for (result = new C(length); length > index; index++) {
        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
      }
    }
    result.length = index;
    return result;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.is-array.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.is-array.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");

$export($export.S, 'Array', { isArray: __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.iterator.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.iterator.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/library/modules/_add-to-unscopables.js");
var step = __webpack_require__(/*! ./_iter-step */ "../node_modules/core-js/library/modules/_iter-step.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");

// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
module.exports = __webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/library/modules/_iter-define.js")(Array, 'Array', function (iterated, kind) {
  this._t = toIObject(iterated); // target
  this._i = 0;                   // next index
  this._k = kind;                // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var kind = this._k;
  var index = this._i++;
  if (!O || index >= O.length) {
    this._t = undefined;
    return step(1);
  }
  if (kind == 'keys') return step(0, index);
  if (kind == 'values') return step(0, O[index]);
  return step(0, [index, O[index]]);
}, 'values');

// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
Iterators.Arguments = Iterators.Array;

addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.date.now.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.date.now.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 20.3.3.1 / 15.9.4.4 Date.now()
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");

$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.assign.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.assign.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.3.1 Object.assign(target, source)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");

$export($export.S + $export.F, 'Object', { assign: __webpack_require__(/*! ./_object-assign */ "../node_modules/core-js/library/modules/_object-assign.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.create.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.create.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
$export($export.S, 'Object', { create: __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.define-properties.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.define-properties.js ***!
  \*******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js"), 'Object', { defineProperties: __webpack_require__(/*! ./_object-dps */ "../node_modules/core-js/library/modules/_object-dps.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.define-property.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.define-property.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js"), 'Object', { defineProperty: __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js":
/*!*****************************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js ***!
  \*****************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var $getOwnPropertyDescriptor = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js").f;

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('getOwnPropertyDescriptor', function () {
  return function getOwnPropertyDescriptor(it, key) {
    return $getOwnPropertyDescriptor(toIObject(it), key);
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.get-prototype-of.js":
/*!******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.get-prototype-of.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 Object.getPrototypeOf(O)
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var $getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('getPrototypeOf', function () {
  return function getPrototypeOf(it) {
    return $getPrototypeOf(toObject(it));
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.keys.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.keys.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 Object.keys(O)
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var $keys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('keys', function () {
  return function keys(it) {
    return $keys(toObject(it));
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.set-prototype-of.js":
/*!******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.set-prototype-of.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.3.19 Object.setPrototypeOf(O, proto)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(/*! ./_set-proto */ "../node_modules/core-js/library/modules/_set-proto.js").set });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.to-string.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.to-string.js ***!
  \***********************************************************************/
/***/ (() => {



/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.promise.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.promise.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/library/modules/_classof.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var anInstance = __webpack_require__(/*! ./_an-instance */ "../node_modules/core-js/library/modules/_an-instance.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");
var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "../node_modules/core-js/library/modules/_species-constructor.js");
var task = __webpack_require__(/*! ./_task */ "../node_modules/core-js/library/modules/_task.js").set;
var microtask = __webpack_require__(/*! ./_microtask */ "../node_modules/core-js/library/modules/_microtask.js")();
var newPromiseCapabilityModule = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/library/modules/_new-promise-capability.js");
var perform = __webpack_require__(/*! ./_perform */ "../node_modules/core-js/library/modules/_perform.js");
var userAgent = __webpack_require__(/*! ./_user-agent */ "../node_modules/core-js/library/modules/_user-agent.js");
var promiseResolve = __webpack_require__(/*! ./_promise-resolve */ "../node_modules/core-js/library/modules/_promise-resolve.js");
var PROMISE = 'Promise';
var TypeError = global.TypeError;
var process = global.process;
var versions = process && process.versions;
var v8 = versions && versions.v8 || '';
var $Promise = global[PROMISE];
var isNode = classof(process) == 'process';
var empty = function () { /* empty */ };
var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;

var USE_NATIVE = !!function () {
  try {
    // correct subclassing with @@species support
    var promise = $Promise.resolve(1);
    var FakePromise = (promise.constructor = {})[__webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species')] = function (exec) {
      exec(empty, empty);
    };
    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
    return (isNode || typeof PromiseRejectionEvent == 'function')
      && promise.then(empty) instanceof FakePromise
      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
      // we can't detect it synchronously, so just check versions
      && v8.indexOf('6.6') !== 0
      && userAgent.indexOf('Chrome/66') === -1;
  } catch (e) { /* empty */ }
}();

// helpers
var isThenable = function (it) {
  var then;
  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
};
var notify = function (promise, isReject) {
  if (promise._n) return;
  promise._n = true;
  var chain = promise._c;
  microtask(function () {
    var value = promise._v;
    var ok = promise._s == 1;
    var i = 0;
    var run = function (reaction) {
      var handler = ok ? reaction.ok : reaction.fail;
      var resolve = reaction.resolve;
      var reject = reaction.reject;
      var domain = reaction.domain;
      var result, then, exited;
      try {
        if (handler) {
          if (!ok) {
            if (promise._h == 2) onHandleUnhandled(promise);
            promise._h = 1;
          }
          if (handler === true) result = value;
          else {
            if (domain) domain.enter();
            result = handler(value); // may throw
            if (domain) {
              domain.exit();
              exited = true;
            }
          }
          if (result === reaction.promise) {
            reject(TypeError('Promise-chain cycle'));
          } else if (then = isThenable(result)) {
            then.call(result, resolve, reject);
          } else resolve(result);
        } else reject(value);
      } catch (e) {
        if (domain && !exited) domain.exit();
        reject(e);
      }
    };
    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
    promise._c = [];
    promise._n = false;
    if (isReject && !promise._h) onUnhandled(promise);
  });
};
var onUnhandled = function (promise) {
  task.call(global, function () {
    var value = promise._v;
    var unhandled = isUnhandled(promise);
    var result, handler, console;
    if (unhandled) {
      result = perform(function () {
        if (isNode) {
          process.emit('unhandledRejection', value, promise);
        } else if (handler = global.onunhandledrejection) {
          handler({ promise: promise, reason: value });
        } else if ((console = global.console) && console.error) {
          console.error('Unhandled promise rejection', value);
        }
      });
      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
    } promise._a = undefined;
    if (unhandled && result.e) throw result.v;
  });
};
var isUnhandled = function (promise) {
  return promise._h !== 1 && (promise._a || promise._c).length === 0;
};
var onHandleUnhandled = function (promise) {
  task.call(global, function () {
    var handler;
    if (isNode) {
      process.emit('rejectionHandled', promise);
    } else if (handler = global.onrejectionhandled) {
      handler({ promise: promise, reason: promise._v });
    }
  });
};
var $reject = function (value) {
  var promise = this;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  promise._v = value;
  promise._s = 2;
  if (!promise._a) promise._a = promise._c.slice();
  notify(promise, true);
};
var $resolve = function (value) {
  var promise = this;
  var then;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  try {
    if (promise === value) throw TypeError("Promise can't be resolved itself");
    if (then = isThenable(value)) {
      microtask(function () {
        var wrapper = { _w: promise, _d: false }; // wrap
        try {
          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
        } catch (e) {
          $reject.call(wrapper, e);
        }
      });
    } else {
      promise._v = value;
      promise._s = 1;
      notify(promise, false);
    }
  } catch (e) {
    $reject.call({ _w: promise, _d: false }, e); // wrap
  }
};

// constructor polyfill
if (!USE_NATIVE) {
  // 25.4.3.1 Promise(executor)
  $Promise = function Promise(executor) {
    anInstance(this, $Promise, PROMISE, '_h');
    aFunction(executor);
    Internal.call(this);
    try {
      executor(ctx($resolve, this, 1), ctx($reject, this, 1));
    } catch (err) {
      $reject.call(this, err);
    }
  };
  // eslint-disable-next-line no-unused-vars
  Internal = function Promise(executor) {
    this._c = [];             // <- awaiting reactions
    this._a = undefined;      // <- checked in isUnhandled reactions
    this._s = 0;              // <- state
    this._d = false;          // <- done
    this._v = undefined;      // <- value
    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
    this._n = false;          // <- notify
  };
  Internal.prototype = __webpack_require__(/*! ./_redefine-all */ "../node_modules/core-js/library/modules/_redefine-all.js")($Promise.prototype, {
    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
    then: function then(onFulfilled, onRejected) {
      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
      reaction.fail = typeof onRejected == 'function' && onRejected;
      reaction.domain = isNode ? process.domain : undefined;
      this._c.push(reaction);
      if (this._a) this._a.push(reaction);
      if (this._s) notify(this, false);
      return reaction.promise;
    },
    // 25.4.5.1 Promise.prototype.catch(onRejected)
    'catch': function (onRejected) {
      return this.then(undefined, onRejected);
    }
  });
  OwnPromiseCapability = function () {
    var promise = new Internal();
    this.promise = promise;
    this.resolve = ctx($resolve, promise, 1);
    this.reject = ctx($reject, promise, 1);
  };
  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
    return C === $Promise || C === Wrapper
      ? new OwnPromiseCapability(C)
      : newGenericPromiseCapability(C);
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
__webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js")($Promise, PROMISE);
__webpack_require__(/*! ./_set-species */ "../node_modules/core-js/library/modules/_set-species.js")(PROMISE);
Wrapper = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js")[PROMISE];

// statics
$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
  // 25.4.4.5 Promise.reject(r)
  reject: function reject(r) {
    var capability = newPromiseCapability(this);
    var $$reject = capability.reject;
    $$reject(r);
    return capability.promise;
  }
});
$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
  // 25.4.4.6 Promise.resolve(x)
  resolve: function resolve(x) {
    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
  }
});
$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(/*! ./_iter-detect */ "../node_modules/core-js/library/modules/_iter-detect.js")(function (iter) {
  $Promise.all(iter)['catch'](empty);
})), PROMISE, {
  // 25.4.4.1 Promise.all(iterable)
  all: function all(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var resolve = capability.resolve;
    var reject = capability.reject;
    var result = perform(function () {
      var values = [];
      var index = 0;
      var remaining = 1;
      forOf(iterable, false, function (promise) {
        var $index = index++;
        var alreadyCalled = false;
        values.push(undefined);
        remaining++;
        C.resolve(promise).then(function (value) {
          if (alreadyCalled) return;
          alreadyCalled = true;
          values[$index] = value;
          --remaining || resolve(values);
        }, reject);
      });
      --remaining || resolve(values);
    });
    if (result.e) reject(result.v);
    return capability.promise;
  },
  // 25.4.4.4 Promise.race(iterable)
  race: function race(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var reject = capability.reject;
    var result = perform(function () {
      forOf(iterable, false, function (promise) {
        C.resolve(promise).then(capability.resolve, reject);
      });
    });
    if (result.e) reject(result.v);
    return capability.promise;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.reflect.construct.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.reflect.construct.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var bind = __webpack_require__(/*! ./_bind */ "../node_modules/core-js/library/modules/_bind.js");
var rConstruct = (__webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Reflect || {}).construct;

// MS Edge supports only 2 arguments and argumentsList argument is optional
// FF Nightly sets third argument as `new.target`, but does not create `this` from it
var NEW_TARGET_BUG = fails(function () {
  function F() { /* empty */ }
  return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);
});
var ARGS_BUG = !fails(function () {
  rConstruct(function () { /* empty */ });
});

$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {
  construct: function construct(Target, args /* , newTarget */) {
    aFunction(Target);
    anObject(args);
    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
    if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);
    if (Target == newTarget) {
      // w/o altered newTarget, optimization for 0-4 arguments
      switch (args.length) {
        case 0: return new Target();
        case 1: return new Target(args[0]);
        case 2: return new Target(args[0], args[1]);
        case 3: return new Target(args[0], args[1], args[2]);
        case 4: return new Target(args[0], args[1], args[2], args[3]);
      }
      // w/o altered newTarget, lot of arguments case
      var $args = [null];
      $args.push.apply($args, args);
      return new (bind.apply(Target, $args))();
    }
    // with altered newTarget, not support built-in constructors
    var proto = newTarget.prototype;
    var instance = create(isObject(proto) ? proto : Object.prototype);
    var result = Function.apply.call(Target, instance, args);
    return isObject(result) ? result : instance;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.string.iterator.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.string.iterator.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $at = __webpack_require__(/*! ./_string-at */ "../node_modules/core-js/library/modules/_string-at.js")(true);

// 21.1.3.27 String.prototype[@@iterator]()
__webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/library/modules/_iter-define.js")(String, 'String', function (iterated) {
  this._t = String(iterated); // target
  this._i = 0;                // next index
// 21.1.5.2.1 %StringIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var index = this._i;
  var point;
  if (index >= O.length) return { value: undefined, done: true };
  point = $at(O, index);
  this._i += point.length;
  return { value: point, done: false };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.symbol.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.symbol.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// ECMAScript 6 symbols shim
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var META = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js").KEY;
var $fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
var wks = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js");
var wksExt = __webpack_require__(/*! ./_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js");
var wksDefine = __webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js");
var enumKeys = __webpack_require__(/*! ./_enum-keys */ "../node_modules/core-js/library/modules/_enum-keys.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var _create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var gOPNExt = __webpack_require__(/*! ./_object-gopn-ext */ "../node_modules/core-js/library/modules/_object-gopn-ext.js");
var $GOPD = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js");
var $GOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var $DP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var $keys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPD = $GOPD.f;
var dP = $DP.f;
var gOPN = gOPNExt.f;
var $Symbol = global.Symbol;
var $JSON = global.JSON;
var _stringify = $JSON && $JSON.stringify;
var PROTOTYPE = 'prototype';
var HIDDEN = wks('_hidden');
var TO_PRIMITIVE = wks('toPrimitive');
var isEnum = {}.propertyIsEnumerable;
var SymbolRegistry = shared('symbol-registry');
var AllSymbols = shared('symbols');
var OPSymbols = shared('op-symbols');
var ObjectProto = Object[PROTOTYPE];
var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
var QObject = global.QObject;
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;

// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
var setSymbolDesc = DESCRIPTORS && $fails(function () {
  return _create(dP({}, 'a', {
    get: function () { return dP(this, 'a', { value: 7 }).a; }
  })).a != 7;
}) ? function (it, key, D) {
  var protoDesc = gOPD(ObjectProto, key);
  if (protoDesc) delete ObjectProto[key];
  dP(it, key, D);
  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
} : dP;

var wrap = function (tag) {
  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
  sym._k = tag;
  return sym;
};

var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
  return typeof it == 'symbol';
} : function (it) {
  return it instanceof $Symbol;
};

var $defineProperty = function defineProperty(it, key, D) {
  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
  anObject(it);
  key = toPrimitive(key, true);
  anObject(D);
  if (has(AllSymbols, key)) {
    if (!D.enumerable) {
      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
      it[HIDDEN][key] = true;
    } else {
      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
      D = _create(D, { enumerable: createDesc(0, false) });
    } return setSymbolDesc(it, key, D);
  } return dP(it, key, D);
};
var $defineProperties = function defineProperties(it, P) {
  anObject(it);
  var keys = enumKeys(P = toIObject(P));
  var i = 0;
  var l = keys.length;
  var key;
  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
  return it;
};
var $create = function create(it, P) {
  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
};
var $propertyIsEnumerable = function propertyIsEnumerable(key) {
  var E = isEnum.call(this, key = toPrimitive(key, true));
  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
  it = toIObject(it);
  key = toPrimitive(key, true);
  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
  var D = gOPD(it, key);
  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
  return D;
};
var $getOwnPropertyNames = function getOwnPropertyNames(it) {
  var names = gOPN(toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
  } return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
  var IS_OP = it === ObjectProto;
  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
  } return result;
};

// 19.4.1.1 Symbol([description])
if (!USE_NATIVE) {
  $Symbol = function Symbol() {
    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
    var $set = function (value) {
      if (this === ObjectProto) $set.call(OPSymbols, value);
      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
      setSymbolDesc(this, tag, createDesc(1, value));
    };
    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
    return wrap(tag);
  };
  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
    return this._k;
  });

  $GOPD.f = $getOwnPropertyDescriptor;
  $DP.f = $defineProperty;
  __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js").f = gOPNExt.f = $getOwnPropertyNames;
  __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js").f = $propertyIsEnumerable;
  $GOPS.f = $getOwnPropertySymbols;

  if (DESCRIPTORS && !__webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js")) {
    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
  }

  wksExt.f = function (name) {
    return wrap(wks(name));
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });

for (var es6Symbols = (
  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);

for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);

$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
  // 19.4.2.1 Symbol.for(key)
  'for': function (key) {
    return has(SymbolRegistry, key += '')
      ? SymbolRegistry[key]
      : SymbolRegistry[key] = $Symbol(key);
  },
  // 19.4.2.5 Symbol.keyFor(sym)
  keyFor: function keyFor(sym) {
    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
  },
  useSetter: function () { setter = true; },
  useSimple: function () { setter = false; }
});

$export($export.S + $export.F * !USE_NATIVE, 'Object', {
  // 19.1.2.2 Object.create(O [, Properties])
  create: $create,
  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
  defineProperty: $defineProperty,
  // 19.1.2.3 Object.defineProperties(O, Properties)
  defineProperties: $defineProperties,
  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
  // 19.1.2.7 Object.getOwnPropertyNames(O)
  getOwnPropertyNames: $getOwnPropertyNames,
  // 19.1.2.8 Object.getOwnPropertySymbols(O)
  getOwnPropertySymbols: $getOwnPropertySymbols
});

// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
// https://bugs.chromium.org/p/v8/issues/detail?id=3443
var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });

$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
    return $GOPS.f(toObject(it));
  }
});

// 24.3.2 JSON.stringify(value [, replacer [, space]])
$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
  var S = $Symbol();
  // MS Edge converts symbol values to JSON as {}
  // WebKit converts symbol values to JSON as null
  // V8 throws on boxed symbols
  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
})), 'JSON', {
  stringify: function stringify(it) {
    var args = [it];
    var i = 1;
    var replacer, $replacer;
    while (arguments.length > i) args.push(arguments[i++]);
    $replacer = replacer = args[1];
    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
    if (!isArray(replacer)) replacer = function (key, value) {
      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
      if (!isSymbol(value)) return value;
    };
    args[1] = replacer;
    return _stringify.apply($JSON, args);
  }
});

// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
// 19.4.3.5 Symbol.prototype[@@toStringTag]
setToStringTag($Symbol, 'Symbol');
// 20.2.1.9 Math[@@toStringTag]
setToStringTag(Math, 'Math', true);
// 24.3.3 JSON[@@toStringTag]
setToStringTag(global.JSON, 'JSON', true);


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.weak-map.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.weak-map.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var each = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/library/modules/_array-methods.js")(0);
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var meta = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js");
var assign = __webpack_require__(/*! ./_object-assign */ "../node_modules/core-js/library/modules/_object-assign.js");
var weak = __webpack_require__(/*! ./_collection-weak */ "../node_modules/core-js/library/modules/_collection-weak.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var validate = __webpack_require__(/*! ./_validate-collection */ "../node_modules/core-js/library/modules/_validate-collection.js");
var NATIVE_WEAK_MAP = __webpack_require__(/*! ./_validate-collection */ "../node_modules/core-js/library/modules/_validate-collection.js");
var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;
var WEAK_MAP = 'WeakMap';
var getWeak = meta.getWeak;
var isExtensible = Object.isExtensible;
var uncaughtFrozenStore = weak.ufstore;
var InternalMap;

var wrapper = function (get) {
  return function WeakMap() {
    return get(this, arguments.length > 0 ? arguments[0] : undefined);
  };
};

var methods = {
  // 23.3.3.3 WeakMap.prototype.get(key)
  get: function get(key) {
    if (isObject(key)) {
      var data = getWeak(key);
      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
      return data ? data[this._i] : undefined;
    }
  },
  // 23.3.3.5 WeakMap.prototype.set(key, value)
  set: function set(key, value) {
    return weak.def(validate(this, WEAK_MAP), key, value);
  }
};

// 23.3 WeakMap Objects
var $WeakMap = module.exports = __webpack_require__(/*! ./_collection */ "../node_modules/core-js/library/modules/_collection.js")(WEAK_MAP, wrapper, methods, weak, true, true);

// IE11 WeakMap frozen keys fix
if (NATIVE_WEAK_MAP && IS_IE11) {
  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
  assign(InternalMap.prototype, methods);
  meta.NEED = true;
  each(['delete', 'has', 'get', 'set'], function (key) {
    var proto = $WeakMap.prototype;
    var method = proto[key];
    redefine(proto, key, function (a, b) {
      // store frozen objects on internal weakmap shim
      if (isObject(a) && !isExtensible(a)) {
        if (!this._f) this._f = new InternalMap();
        var result = this._f[key](a, b);
        return key == 'set' ? this : result;
      // store all the rest on native weakmap
      } return method.call(this, a, b);
    });
  });
}


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.object.entries.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.object.entries.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-object-values-entries
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var $entries = __webpack_require__(/*! ./_object-to-array */ "../node_modules/core-js/library/modules/_object-to-array.js")(true);

$export($export.S, 'Object', {
  entries: function entries(it) {
    return $entries(it);
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js":
/*!******************************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js ***!
  \******************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-object-getownpropertydescriptors
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var ownKeys = __webpack_require__(/*! ./_own-keys */ "../node_modules/core-js/library/modules/_own-keys.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var gOPD = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js");
var createProperty = __webpack_require__(/*! ./_create-property */ "../node_modules/core-js/library/modules/_create-property.js");

$export($export.S, 'Object', {
  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
    var O = toIObject(object);
    var getDesc = gOPD.f;
    var keys = ownKeys(O);
    var result = {};
    var i = 0;
    var key, desc;
    while (keys.length > i) {
      desc = getDesc(O, key = keys[i++]);
      if (desc !== undefined) createProperty(result, key, desc);
    }
    return result;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.object.values.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.object.values.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-object-values-entries
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var $values = __webpack_require__(/*! ./_object-to-array */ "../node_modules/core-js/library/modules/_object-to-array.js")(false);

$export($export.S, 'Object', {
  values: function values(it) {
    return $values(it);
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.promise.finally.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.promise.finally.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// https://github.com/tc39/proposal-promise-finally

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "../node_modules/core-js/library/modules/_species-constructor.js");
var promiseResolve = __webpack_require__(/*! ./_promise-resolve */ "../node_modules/core-js/library/modules/_promise-resolve.js");

$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
  var C = speciesConstructor(this, core.Promise || global.Promise);
  var isFunction = typeof onFinally == 'function';
  return this.then(
    isFunction ? function (x) {
      return promiseResolve(C, onFinally()).then(function () { return x; });
    } : onFinally,
    isFunction ? function (e) {
      return promiseResolve(C, onFinally()).then(function () { throw e; });
    } : onFinally
  );
} });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.promise.try.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.promise.try.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/tc39/proposal-promise-try
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/library/modules/_new-promise-capability.js");
var perform = __webpack_require__(/*! ./_perform */ "../node_modules/core-js/library/modules/_perform.js");

$export($export.S, 'Promise', { 'try': function (callbackfn) {
  var promiseCapability = newPromiseCapability.f(this);
  var result = perform(callbackfn);
  (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
  return promiseCapability.promise;
} });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js":
/*!****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.symbol.async-iterator.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js")('asyncIterator');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.symbol.observable.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.symbol.observable.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js")('observable');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.weak-map.from.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.weak-map.from.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from
__webpack_require__(/*! ./_set-collection-from */ "../node_modules/core-js/library/modules/_set-collection-from.js")('WeakMap');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.weak-map.of.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.weak-map.of.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of
__webpack_require__(/*! ./_set-collection-of */ "../node_modules/core-js/library/modules/_set-collection-of.js")('WeakMap');


/***/ }),

/***/ "../node_modules/core-js/library/modules/web.dom.iterable.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/web.dom.iterable.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./es6.array.iterator */ "../node_modules/core-js/library/modules/es6.array.iterator.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var TO_STRING_TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');

var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
  'TextTrackList,TouchList').split(',');

for (var i = 0; i < DOMIterables.length; i++) {
  var NAME = DOMIterables[i];
  var Collection = global[NAME];
  var proto = Collection && Collection.prototype;
  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
  Iterators[NAME] = Iterators.Array;
}


/***/ }),

/***/ "../node_modules/core-js/modules/_a-function.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_a-function.js ***!
  \******************************************************/
/***/ ((module) => {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_add-to-unscopables.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/_add-to-unscopables.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 22.1.3.31 Array.prototype[@@unscopables]
var UNSCOPABLES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('unscopables');
var ArrayProto = Array.prototype;
if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js")(ArrayProto, UNSCOPABLES, {});
module.exports = function (key) {
  ArrayProto[UNSCOPABLES][key] = true;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_advance-string-index.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_advance-string-index.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var at = __webpack_require__(/*! ./_string-at */ "../node_modules/core-js/modules/_string-at.js")(true);

 // `AdvanceStringIndex` abstract operation
// https://tc39.github.io/ecma262/#sec-advancestringindex
module.exports = function (S, index, unicode) {
  return index + (unicode ? at(S, index).length : 1);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_an-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_an-object.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-includes.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/_array-includes.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/modules/_to-iobject.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "../node_modules/core-js/modules/_to-absolute-index.js");
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-methods.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_array-methods.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 0 -> Array#forEach
// 1 -> Array#map
// 2 -> Array#filter
// 3 -> Array#some
// 4 -> Array#every
// 5 -> Array#find
// 6 -> Array#findIndex
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js");
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/modules/_iobject.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/modules/_to-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var asc = __webpack_require__(/*! ./_array-species-create */ "../node_modules/core-js/modules/_array-species-create.js");
module.exports = function (TYPE, $create) {
  var IS_MAP = TYPE == 1;
  var IS_FILTER = TYPE == 2;
  var IS_SOME = TYPE == 3;
  var IS_EVERY = TYPE == 4;
  var IS_FIND_INDEX = TYPE == 6;
  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
  var create = $create || asc;
  return function ($this, callbackfn, that) {
    var O = toObject($this);
    var self = IObject(O);
    var f = ctx(callbackfn, that, 3);
    var length = toLength(self.length);
    var index = 0;
    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
    var val, res;
    for (;length > index; index++) if (NO_HOLES || index in self) {
      val = self[index];
      res = f(val, index, O);
      if (TYPE) {
        if (IS_MAP) result[index] = res;   // map
        else if (res) switch (TYPE) {
          case 3: return true;             // some
          case 5: return val;              // find
          case 6: return index;            // findIndex
          case 2: result.push(val);        // filter
        } else if (IS_EVERY) return false; // every
      }
    }
    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-species-constructor.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/modules/_array-species-constructor.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/modules/_is-array.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('species');

module.exports = function (original) {
  var C;
  if (isArray(original)) {
    C = original.constructor;
    // cross-realm fallback
    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
    if (isObject(C)) {
      C = C[SPECIES];
      if (C === null) C = undefined;
    }
  } return C === undefined ? Array : C;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-species-create.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_array-species-create.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
var speciesConstructor = __webpack_require__(/*! ./_array-species-constructor */ "../node_modules/core-js/modules/_array-species-constructor.js");

module.exports = function (original, length) {
  return new (speciesConstructor(original))(length);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_classof.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_classof.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_cof.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_cof.js ***!
  \***********************************************/
/***/ ((module) => {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_core.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_core.js ***!
  \************************************************/
/***/ ((module) => {

var core = module.exports = { version: '2.6.12' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/modules/_ctx.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_ctx.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// optional / simple context binding
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/modules/_a-function.js");
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_defined.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_defined.js ***!
  \***************************************************/
/***/ ((module) => {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_descriptors.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_descriptors.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/modules/_dom-create.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_dom-create.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),

/***/ "../node_modules/core-js/modules/_enum-bug-keys.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_enum-bug-keys.js ***!
  \*********************************************************/
/***/ ((module) => {

// IE 8- don't enum bug keys
module.exports = (
  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');


/***/ }),

/***/ "../node_modules/core-js/modules/_export.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_export.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js");
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
  var key, own, out, exp;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    // export native or passed
    out = (own ? target : source)[key];
    // bind timers to global for call from export context
    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // extend global
    if (target) redefine(target, key, out, type & $export.U);
    // export
    if (exports[key] != out) hide(exports, key, exp);
    if (IS_PROTO && expProto[key] != out) expProto[key] = out;
  }
};
global.core = core;
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),

/***/ "../node_modules/core-js/modules/_fails-is-regexp.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/_fails-is-regexp.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var MATCH = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('match');
module.exports = function (KEY) {
  var re = /./;
  try {
    '/./'[KEY](re);
  } catch (e) {
    try {
      re[MATCH] = false;
      return !'/./'[KEY](re);
    } catch (f) { /* empty */ }
  } return true;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_fails.js":
/*!*************************************************!*\
  !*** ../node_modules/core-js/modules/_fails.js ***!
  \*************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),

/***/ "../node_modules/core-js/modules/_fix-re-wks.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_fix-re-wks.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

__webpack_require__(/*! ./es6.regexp.exec */ "../node_modules/core-js/modules/es6.regexp.exec.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
var wks = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js");
var regexpExec = __webpack_require__(/*! ./_regexp-exec */ "../node_modules/core-js/modules/_regexp-exec.js");

var SPECIES = wks('species');

var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
  // #replace needs built-in support for named groups.
  // #match works fine because it just return the exec results, even if it has
  // a "grops" property.
  var re = /./;
  re.exec = function () {
    var result = [];
    result.groups = { a: '7' };
    return result;
  };
  return ''.replace(re, '$<a>') !== '7';
});

var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {
  // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
  var re = /(?:)/;
  var originalExec = re.exec;
  re.exec = function () { return originalExec.apply(this, arguments); };
  var result = 'ab'.split(re);
  return result.length === 2 && result[0] === 'a' && result[1] === 'b';
})();

module.exports = function (KEY, length, exec) {
  var SYMBOL = wks(KEY);

  var DELEGATES_TO_SYMBOL = !fails(function () {
    // String methods call symbol-named RegEp methods
    var O = {};
    O[SYMBOL] = function () { return 7; };
    return ''[KEY](O) != 7;
  });

  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {
    // Symbol-named RegExp methods call .exec
    var execCalled = false;
    var re = /a/;
    re.exec = function () { execCalled = true; return null; };
    if (KEY === 'split') {
      // RegExp[@@split] doesn't call the regex's exec method, but first creates
      // a new one. We need to return the patched regex when creating the new one.
      re.constructor = {};
      re.constructor[SPECIES] = function () { return re; };
    }
    re[SYMBOL]('');
    return !execCalled;
  }) : undefined;

  if (
    !DELEGATES_TO_SYMBOL ||
    !DELEGATES_TO_EXEC ||
    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||
    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
  ) {
    var nativeRegExpMethod = /./[SYMBOL];
    var fns = exec(
      defined,
      SYMBOL,
      ''[KEY],
      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {
        if (regexp.exec === regexpExec) {
          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
            // The native String method already delegates to @@method (this
            // polyfilled function), leasing to infinite recursion.
            // We avoid it by directly calling the native @@method method.
            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
          }
          return { done: true, value: nativeMethod.call(str, regexp, arg2) };
        }
        return { done: false };
      }
    );
    var strfn = fns[0];
    var rxfn = fns[1];

    redefine(String.prototype, KEY, strfn);
    hide(RegExp.prototype, SYMBOL, length == 2
      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
      // 21.2.5.11 RegExp.prototype[@@split](string, limit)
      ? function (string, arg) { return rxfn.call(string, this, arg); }
      // 21.2.5.6 RegExp.prototype[@@match](string)
      // 21.2.5.9 RegExp.prototype[@@search](string)
      : function (string) { return rxfn.call(string, this); }
    );
  }
};


/***/ }),

/***/ "../node_modules/core-js/modules/_flags.js":
/*!*************************************************!*\
  !*** ../node_modules/core-js/modules/_flags.js ***!
  \*************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 21.2.5.3 get RegExp.prototype.flags
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
module.exports = function () {
  var that = anObject(this);
  var result = '';
  if (that.global) result += 'g';
  if (that.ignoreCase) result += 'i';
  if (that.multiline) result += 'm';
  if (that.unicode) result += 'u';
  if (that.sticky) result += 'y';
  return result;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_function-to-string.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/_function-to-string.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('native-function-to-string', Function.toString);


/***/ }),

/***/ "../node_modules/core-js/modules/_global.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_global.js ***!
  \**************************************************/
/***/ ((module) => {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/modules/_has.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_has.js ***!
  \***********************************************/
/***/ ((module) => {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_hide.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_hide.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/modules/_property-desc.js");
module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_html.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_html.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").document;
module.exports = document && document.documentElement;


/***/ }),

/***/ "../node_modules/core-js/modules/_ie8-dom-define.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/_ie8-dom-define.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () {
  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/modules/_iobject.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_iobject.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-array.js":
/*!****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-array.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-object.js ***!
  \*****************************************************/
/***/ ((module) => {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-regexp.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-regexp.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.8 IsRegExp(argument)
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
var MATCH = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('match');
module.exports = function (it) {
  var isRegExp;
  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
};


/***/ }),

/***/ "../node_modules/core-js/modules/_iter-create.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_iter-create.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/modules/_object-create.js");
var descriptor = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/modules/_property-desc.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/modules/_set-to-string-tag.js");
var IteratorPrototype = {};

// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
__webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js")(IteratorPrototype, __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('iterator'), function () { return this; });

module.exports = function (Constructor, NAME, next) {
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
  setToStringTag(Constructor, NAME + ' Iterator');
};


/***/ }),

/***/ "../node_modules/core-js/modules/_iter-define.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_iter-define.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/modules/_library.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/modules/_iterators.js");
var $iterCreate = __webpack_require__(/*! ./_iter-create */ "../node_modules/core-js/modules/_iter-create.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/modules/_set-to-string-tag.js");
var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/modules/_object-gpo.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('iterator');
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';

var returnThis = function () { return this; };

module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
  $iterCreate(Constructor, NAME, next);
  var getMethod = function (kind) {
    if (!BUGGY && kind in proto) return proto[kind];
    switch (kind) {
      case KEYS: return function keys() { return new Constructor(this, kind); };
      case VALUES: return function values() { return new Constructor(this, kind); };
    } return function entries() { return new Constructor(this, kind); };
  };
  var TAG = NAME + ' Iterator';
  var DEF_VALUES = DEFAULT == VALUES;
  var VALUES_BUG = false;
  var proto = Base.prototype;
  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
  var $default = $native || getMethod(DEFAULT);
  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
  var methods, key, IteratorPrototype;
  // Fix native
  if ($anyNative) {
    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
      // Set @@toStringTag to native iterators
      setToStringTag(IteratorPrototype, TAG, true);
      // fix for some old engines
      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
    }
  }
  // fix Array#{values, @@iterator}.name in V8 / FF
  if (DEF_VALUES && $native && $native.name !== VALUES) {
    VALUES_BUG = true;
    $default = function values() { return $native.call(this); };
  }
  // Define iterator
  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
    hide(proto, ITERATOR, $default);
  }
  // Plug for library
  Iterators[NAME] = $default;
  Iterators[TAG] = returnThis;
  if (DEFAULT) {
    methods = {
      values: DEF_VALUES ? $default : getMethod(VALUES),
      keys: IS_SET ? $default : getMethod(KEYS),
      entries: $entries
    };
    if (FORCED) for (key in methods) {
      if (!(key in proto)) redefine(proto, key, methods[key]);
    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
  }
  return methods;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_iter-step.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_iter-step.js ***!
  \*****************************************************/
/***/ ((module) => {

module.exports = function (done, value) {
  return { value: value, done: !!done };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_iterators.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_iterators.js ***!
  \*****************************************************/
/***/ ((module) => {

module.exports = {};


/***/ }),

/***/ "../node_modules/core-js/modules/_library.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_library.js ***!
  \***************************************************/
/***/ ((module) => {

module.exports = false;


/***/ }),

/***/ "../node_modules/core-js/modules/_object-create.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_object-create.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var dPs = __webpack_require__(/*! ./_object-dps */ "../node_modules/core-js/modules/_object-dps.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/modules/_enum-bug-keys.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/modules/_shared-key.js")('IE_PROTO');
var Empty = function () { /* empty */ };
var PROTOTYPE = 'prototype';

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = __webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/modules/_dom-create.js")('iframe');
  var i = enumBugKeys.length;
  var lt = '<';
  var gt = '>';
  var iframeDocument;
  iframe.style.display = 'none';
  __webpack_require__(/*! ./_html */ "../node_modules/core-js/modules/_html.js").appendChild(iframe);
  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
  // createDict = iframe.contentWindow.Object;
  // html.removeChild(iframe);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
  iframeDocument.close();
  createDict = iframeDocument.F;
  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
  return createDict();
};

module.exports = Object.create || function create(O, Properties) {
  var result;
  if (O !== null) {
    Empty[PROTOTYPE] = anObject(O);
    result = new Empty();
    Empty[PROTOTYPE] = null;
    // add "__proto__" for Object.getPrototypeOf polyfill
    result[IE_PROTO] = O;
  } else result = createDict();
  return Properties === undefined ? result : dPs(result, Properties);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-dp.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_object-dp.js ***!
  \*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/modules/_ie8-dom-define.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/modules/_to-primitive.js");
var dP = Object.defineProperty;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-dps.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_object-dps.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/modules/_object-keys.js");

module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var keys = getKeys(Properties);
  var length = keys.length;
  var i = 0;
  var P;
  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-gpo.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_object-gpo.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/modules/_to-object.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/modules/_shared-key.js")('IE_PROTO');
var ObjectProto = Object.prototype;

module.exports = Object.getPrototypeOf || function (O) {
  O = toObject(O);
  if (has(O, IE_PROTO)) return O[IE_PROTO];
  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
    return O.constructor.prototype;
  } return O instanceof Object ? ObjectProto : null;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-keys-internal.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_object-keys-internal.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/modules/_to-iobject.js");
var arrayIndexOf = __webpack_require__(/*! ./_array-includes */ "../node_modules/core-js/modules/_array-includes.js")(false);
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/modules/_shared-key.js")('IE_PROTO');

module.exports = function (object, names) {
  var O = toIObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (has(O, key = names[i++])) {
    ~arrayIndexOf(result, key) || result.push(key);
  }
  return result;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-keys.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_object-keys.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/modules/_object-keys-internal.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/modules/_enum-bug-keys.js");

module.exports = Object.keys || function keys(O) {
  return $keys(O, enumBugKeys);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_property-desc.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_property-desc.js ***!
  \*********************************************************/
/***/ ((module) => {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_redefine.js":
/*!****************************************************!*\
  !*** ../node_modules/core-js/modules/_redefine.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var SRC = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js")('src');
var $toString = __webpack_require__(/*! ./_function-to-string */ "../node_modules/core-js/modules/_function-to-string.js");
var TO_STRING = 'toString';
var TPL = ('' + $toString).split(TO_STRING);

__webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js").inspectSource = function (it) {
  return $toString.call(it);
};

(module.exports = function (O, key, val, safe) {
  var isFunction = typeof val == 'function';
  if (isFunction) has(val, 'name') || hide(val, 'name', key);
  if (O[key] === val) return;
  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
  if (O === global) {
    O[key] = val;
  } else if (!safe) {
    delete O[key];
    hide(O, key, val);
  } else if (O[key]) {
    O[key] = val;
  } else {
    hide(O, key, val);
  }
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, TO_STRING, function toString() {
  return typeof this == 'function' && this[SRC] || $toString.call(this);
});


/***/ }),

/***/ "../node_modules/core-js/modules/_regexp-exec-abstract.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_regexp-exec-abstract.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/modules/_classof.js");
var builtinExec = RegExp.prototype.exec;

 // `RegExpExec` abstract operation
// https://tc39.github.io/ecma262/#sec-regexpexec
module.exports = function (R, S) {
  var exec = R.exec;
  if (typeof exec === 'function') {
    var result = exec.call(R, S);
    if (typeof result !== 'object') {
      throw new TypeError('RegExp exec method returned something other than an Object or null');
    }
    return result;
  }
  if (classof(R) !== 'RegExp') {
    throw new TypeError('RegExp#exec called on incompatible receiver');
  }
  return builtinExec.call(R, S);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_regexp-exec.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_regexp-exec.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var regexpFlags = __webpack_require__(/*! ./_flags */ "../node_modules/core-js/modules/_flags.js");

var nativeExec = RegExp.prototype.exec;
// This always refers to the native implementation, because the
// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,
// which loads this file before patching the method.
var nativeReplace = String.prototype.replace;

var patchedExec = nativeExec;

var LAST_INDEX = 'lastIndex';

var UPDATES_LAST_INDEX_WRONG = (function () {
  var re1 = /a/,
      re2 = /b*/g;
  nativeExec.call(re1, 'a');
  nativeExec.call(re2, 'a');
  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;
})();

// nonparticipating capturing group, copied from es5-shim's String#split patch.
var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;

var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;

if (PATCH) {
  patchedExec = function exec(str) {
    var re = this;
    var lastIndex, reCopy, match, i;

    if (NPCG_INCLUDED) {
      reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re));
    }
    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];

    match = nativeExec.call(re, str);

    if (UPDATES_LAST_INDEX_WRONG && match) {
      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;
    }
    if (NPCG_INCLUDED && match && match.length > 1) {
      // Fix browsers whose `exec` methods don't consistently return `undefined`
      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
      // eslint-disable-next-line no-loop-func
      nativeReplace.call(match[0], reCopy, function () {
        for (i = 1; i < arguments.length - 2; i++) {
          if (arguments[i] === undefined) match[i] = undefined;
        }
      });
    }

    return match;
  };
}

module.exports = patchedExec;


/***/ }),

/***/ "../node_modules/core-js/modules/_same-value.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_same-value.js ***!
  \******************************************************/
/***/ ((module) => {

// 7.2.9 SameValue(x, y)
module.exports = Object.is || function is(x, y) {
  // eslint-disable-next-line no-self-compare
  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_set-to-string-tag.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/_set-to-string-tag.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var def = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js").f;
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag');

module.exports = function (it, tag, stat) {
  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
};


/***/ }),

/***/ "../node_modules/core-js/modules/_shared-key.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_shared-key.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('keys');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js");
module.exports = function (key) {
  return shared[key] || (shared[key] = uid(key));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_shared.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_shared.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(/*! ./_library */ "../node_modules/core-js/modules/_library.js") ? 'pure' : 'global',
  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});


/***/ }),

/***/ "../node_modules/core-js/modules/_species-constructor.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/modules/_species-constructor.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.3.20 SpeciesConstructor(O, defaultConstructor)
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/modules/_a-function.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('species');
module.exports = function (O, D) {
  var C = anObject(O).constructor;
  var S;
  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_strict-method.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_strict-method.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js");

module.exports = function (method, arg) {
  return !!method && fails(function () {
    // eslint-disable-next-line no-useless-call
    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);
  });
};


/***/ }),

/***/ "../node_modules/core-js/modules/_string-at.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_string-at.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_string-context.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/_string-context.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// helper for String#{startsWith, endsWith, includes}
var isRegExp = __webpack_require__(/*! ./_is-regexp */ "../node_modules/core-js/modules/_is-regexp.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");

module.exports = function (that, searchString, NAME) {
  if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
  return String(defined(that));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-absolute-index.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/_to-absolute-index.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-integer.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_to-integer.js ***!
  \******************************************************/
/***/ ((module) => {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-iobject.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_to-iobject.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/modules/_iobject.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-length.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_to-length.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.15 ToLength
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_to-object.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-primitive.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/modules/_to-primitive.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),

/***/ "../node_modules/core-js/modules/_uid.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_uid.js ***!
  \***********************************************/
/***/ ((module) => {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_wks.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_wks.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var store = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('wks');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js");
var Symbol = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.filter.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.filter.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $filter = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(2);

$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "../node_modules/core-js/modules/_strict-method.js")([].filter, true), 'Array', {
  // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
  filter: function filter(callbackfn /* , thisArg */) {
    return $filter(this, callbackfn, arguments[1]);
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.find.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.find.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $find = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(5);
var KEY = 'find';
var forced = true;
// Shouldn't skip holes
if (KEY in []) Array(1)[KEY](function () { forced = false; });
$export($export.P + $export.F * forced, 'Array', {
  find: function find(callbackfn /* , that = undefined */) {
    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  }
});
__webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/modules/_add-to-unscopables.js")(KEY);


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.iterator.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.iterator.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/modules/_add-to-unscopables.js");
var step = __webpack_require__(/*! ./_iter-step */ "../node_modules/core-js/modules/_iter-step.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/modules/_iterators.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/modules/_to-iobject.js");

// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
module.exports = __webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/modules/_iter-define.js")(Array, 'Array', function (iterated, kind) {
  this._t = toIObject(iterated); // target
  this._i = 0;                   // next index
  this._k = kind;                // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var kind = this._k;
  var index = this._i++;
  if (!O || index >= O.length) {
    this._t = undefined;
    return step(1);
  }
  if (kind == 'keys') return step(0, index);
  if (kind == 'values') return step(0, O[index]);
  return step(0, [index, O[index]]);
}, 'values');

// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
Iterators.Arguments = Iterators.Array;

addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.map.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.map.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $map = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(1);

$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "../node_modules/core-js/modules/_strict-method.js")([].map, true), 'Array', {
  // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
  map: function map(callbackfn /* , thisArg */) {
    return $map(this, callbackfn, arguments[1]);
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.function.name.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.function.name.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js").f;
var FProto = Function.prototype;
var nameRE = /^\s*function ([^ (]*)/;
var NAME = 'name';

// 19.2.4.2 name
NAME in FProto || __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") && dP(FProto, NAME, {
  configurable: true,
  get: function () {
    try {
      return ('' + this).match(nameRE)[1];
    } catch (e) {
      return '';
    }
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.object.to-string.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.object.to-string.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 19.1.3.6 Object.prototype.toString()
var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/modules/_classof.js");
var test = {};
test[__webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag')] = 'z';
if (test + '' != '[object z]') {
  __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js")(Object.prototype, 'toString', function toString() {
    return '[object ' + classof(this) + ']';
  }, true);
}


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.exec.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.exec.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var regexpExec = __webpack_require__(/*! ./_regexp-exec */ "../node_modules/core-js/modules/_regexp-exec.js");
__webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js")({
  target: 'RegExp',
  proto: true,
  forced: regexpExec !== /./.exec
}, {
  exec: regexpExec
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.replace.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.replace.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/modules/_to-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var advanceStringIndex = __webpack_require__(/*! ./_advance-string-index */ "../node_modules/core-js/modules/_advance-string-index.js");
var regExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ "../node_modules/core-js/modules/_regexp-exec-abstract.js");
var max = Math.max;
var min = Math.min;
var floor = Math.floor;
var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g;
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g;

var maybeToString = function (it) {
  return it === undefined ? it : String(it);
};

// @@replace logic
__webpack_require__(/*! ./_fix-re-wks */ "../node_modules/core-js/modules/_fix-re-wks.js")('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {
  return [
    // `String.prototype.replace` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.replace
    function replace(searchValue, replaceValue) {
      var O = defined(this);
      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];
      return fn !== undefined
        ? fn.call(searchValue, O, replaceValue)
        : $replace.call(String(O), searchValue, replaceValue);
    },
    // `RegExp.prototype[@@replace]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
    function (regexp, replaceValue) {
      var res = maybeCallNative($replace, regexp, this, replaceValue);
      if (res.done) return res.value;

      var rx = anObject(regexp);
      var S = String(this);
      var functionalReplace = typeof replaceValue === 'function';
      if (!functionalReplace) replaceValue = String(replaceValue);
      var global = rx.global;
      if (global) {
        var fullUnicode = rx.unicode;
        rx.lastIndex = 0;
      }
      var results = [];
      while (true) {
        var result = regExpExec(rx, S);
        if (result === null) break;
        results.push(result);
        if (!global) break;
        var matchStr = String(result[0]);
        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
      }
      var accumulatedResult = '';
      var nextSourcePosition = 0;
      for (var i = 0; i < results.length; i++) {
        result = results[i];
        var matched = String(result[0]);
        var position = max(min(toInteger(result.index), S.length), 0);
        var captures = [];
        // NOTE: This is equivalent to
        //   captures = result.slice(1).map(maybeToString)
        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
        // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
        var namedCaptures = result.groups;
        if (functionalReplace) {
          var replacerArgs = [matched].concat(captures, position, S);
          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
          var replacement = String(replaceValue.apply(undefined, replacerArgs));
        } else {
          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
        }
        if (position >= nextSourcePosition) {
          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
          nextSourcePosition = position + matched.length;
        }
      }
      return accumulatedResult + S.slice(nextSourcePosition);
    }
  ];

    // https://tc39.github.io/ecma262/#sec-getsubstitution
  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {
    var tailPos = position + matched.length;
    var m = captures.length;
    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
    if (namedCaptures !== undefined) {
      namedCaptures = toObject(namedCaptures);
      symbols = SUBSTITUTION_SYMBOLS;
    }
    return $replace.call(replacement, symbols, function (match, ch) {
      var capture;
      switch (ch.charAt(0)) {
        case '$': return '$';
        case '&': return matched;
        case '`': return str.slice(0, position);
        case "'": return str.slice(tailPos);
        case '<':
          capture = namedCaptures[ch.slice(1, -1)];
          break;
        default: // \d\d?
          var n = +ch;
          if (n === 0) return match;
          if (n > m) {
            var f = floor(n / 10);
            if (f === 0) return match;
            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
            return match;
          }
          capture = captures[n - 1];
      }
      return capture === undefined ? '' : capture;
    });
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.search.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.search.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var sameValue = __webpack_require__(/*! ./_same-value */ "../node_modules/core-js/modules/_same-value.js");
var regExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ "../node_modules/core-js/modules/_regexp-exec-abstract.js");

// @@search logic
__webpack_require__(/*! ./_fix-re-wks */ "../node_modules/core-js/modules/_fix-re-wks.js")('search', 1, function (defined, SEARCH, $search, maybeCallNative) {
  return [
    // `String.prototype.search` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.search
    function search(regexp) {
      var O = defined(this);
      var fn = regexp == undefined ? undefined : regexp[SEARCH];
      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
    },
    // `RegExp.prototype[@@search]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search
    function (regexp) {
      var res = maybeCallNative($search, regexp, this);
      if (res.done) return res.value;
      var rx = anObject(regexp);
      var S = String(this);
      var previousLastIndex = rx.lastIndex;
      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;
      var result = regExpExec(rx, S);
      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;
      return result === null ? -1 : result.index;
    }
  ];
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.split.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.split.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var isRegExp = __webpack_require__(/*! ./_is-regexp */ "../node_modules/core-js/modules/_is-regexp.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "../node_modules/core-js/modules/_species-constructor.js");
var advanceStringIndex = __webpack_require__(/*! ./_advance-string-index */ "../node_modules/core-js/modules/_advance-string-index.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var callRegExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ "../node_modules/core-js/modules/_regexp-exec-abstract.js");
var regexpExec = __webpack_require__(/*! ./_regexp-exec */ "../node_modules/core-js/modules/_regexp-exec.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js");
var $min = Math.min;
var $push = [].push;
var $SPLIT = 'split';
var LENGTH = 'length';
var LAST_INDEX = 'lastIndex';
var MAX_UINT32 = 0xffffffff;

// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError
var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });

// @@split logic
__webpack_require__(/*! ./_fix-re-wks */ "../node_modules/core-js/modules/_fix-re-wks.js")('split', 2, function (defined, SPLIT, $split, maybeCallNative) {
  var internalSplit;
  if (
    'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
    'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
    'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||
    '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||
    '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
    ''[$SPLIT](/.?/)[LENGTH]
  ) {
    // based on es5-shim implementation, need to rework it
    internalSplit = function (separator, limit) {
      var string = String(this);
      if (separator === undefined && limit === 0) return [];
      // If `separator` is not a regex, use native split
      if (!isRegExp(separator)) return $split.call(string, separator, limit);
      var output = [];
      var flags = (separator.ignoreCase ? 'i' : '') +
                  (separator.multiline ? 'm' : '') +
                  (separator.unicode ? 'u' : '') +
                  (separator.sticky ? 'y' : '');
      var lastLastIndex = 0;
      var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;
      // Make `global` and avoid `lastIndex` issues by working with a copy
      var separatorCopy = new RegExp(separator.source, flags + 'g');
      var match, lastIndex, lastLength;
      while (match = regexpExec.call(separatorCopy, string)) {
        lastIndex = separatorCopy[LAST_INDEX];
        if (lastIndex > lastLastIndex) {
          output.push(string.slice(lastLastIndex, match.index));
          if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));
          lastLength = match[0][LENGTH];
          lastLastIndex = lastIndex;
          if (output[LENGTH] >= splitLimit) break;
        }
        if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop
      }
      if (lastLastIndex === string[LENGTH]) {
        if (lastLength || !separatorCopy.test('')) output.push('');
      } else output.push(string.slice(lastLastIndex));
      return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
    };
  // Chakra, V8
  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {
    internalSplit = function (separator, limit) {
      return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);
    };
  } else {
    internalSplit = $split;
  }

  return [
    // `String.prototype.split` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.split
    function split(separator, limit) {
      var O = defined(this);
      var splitter = separator == undefined ? undefined : separator[SPLIT];
      return splitter !== undefined
        ? splitter.call(separator, O, limit)
        : internalSplit.call(String(O), separator, limit);
    },
    // `RegExp.prototype[@@split]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split
    //
    // NOTE: This cannot be properly polyfilled in engines that don't support
    // the 'y' flag.
    function (regexp, limit) {
      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);
      if (res.done) return res.value;

      var rx = anObject(regexp);
      var S = String(this);
      var C = speciesConstructor(rx, RegExp);

      var unicodeMatching = rx.unicode;
      var flags = (rx.ignoreCase ? 'i' : '') +
                  (rx.multiline ? 'm' : '') +
                  (rx.unicode ? 'u' : '') +
                  (SUPPORTS_Y ? 'y' : 'g');

      // ^(? + rx + ) is needed, in combination with some S slicing, to
      // simulate the 'y' flag.
      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);
      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
      if (lim === 0) return [];
      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
      var p = 0;
      var q = 0;
      var A = [];
      while (q < S.length) {
        splitter.lastIndex = SUPPORTS_Y ? q : 0;
        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));
        var e;
        if (
          z === null ||
          (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p
        ) {
          q = advanceStringIndex(S, q, unicodeMatching);
        } else {
          A.push(S.slice(p, q));
          if (A.length === lim) return A;
          for (var i = 1; i <= z.length - 1; i++) {
            A.push(z[i]);
            if (A.length === lim) return A;
          }
          q = p = e;
        }
      }
      A.push(S.slice(p));
      return A;
    }
  ];
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.string.includes.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.string.includes.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// 21.1.3.7 String.prototype.includes(searchString, position = 0)

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var context = __webpack_require__(/*! ./_string-context */ "../node_modules/core-js/modules/_string-context.js");
var INCLUDES = 'includes';

$export($export.P + $export.F * __webpack_require__(/*! ./_fails-is-regexp */ "../node_modules/core-js/modules/_fails-is-regexp.js")(INCLUDES), 'String', {
  includes: function includes(searchString /* , position = 0 */) {
    return !!~context(this, searchString, INCLUDES)
      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es7.array.includes.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/es7.array.includes.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/tc39/Array.prototype.includes
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $includes = __webpack_require__(/*! ./_array-includes */ "../node_modules/core-js/modules/_array-includes.js")(true);

$export($export.P, 'Array', {
  includes: function includes(el /* , fromIndex = 0 */) {
    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
  }
});

__webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/modules/_add-to-unscopables.js")('includes');


/***/ }),

/***/ "../node_modules/core-js/modules/web.dom.iterable.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/web.dom.iterable.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $iterators = __webpack_require__(/*! ./es6.array.iterator */ "../node_modules/core-js/modules/es6.array.iterator.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/modules/_object-keys.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/modules/_iterators.js");
var wks = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js");
var ITERATOR = wks('iterator');
var TO_STRING_TAG = wks('toStringTag');
var ArrayValues = Iterators.Array;

var DOMIterables = {
  CSSRuleList: true, // TODO: Not spec compliant, should be false.
  CSSStyleDeclaration: false,
  CSSValueList: false,
  ClientRectList: false,
  DOMRectList: false,
  DOMStringList: false,
  DOMTokenList: true,
  DataTransferItemList: false,
  FileList: false,
  HTMLAllCollection: false,
  HTMLCollection: false,
  HTMLFormElement: false,
  HTMLSelectElement: false,
  MediaList: true, // TODO: Not spec compliant, should be false.
  MimeTypeArray: false,
  NamedNodeMap: false,
  NodeList: true,
  PaintRequestList: false,
  Plugin: false,
  PluginArray: false,
  SVGLengthList: false,
  SVGNumberList: false,
  SVGPathSegList: false,
  SVGPointList: false,
  SVGStringList: false,
  SVGTransformList: false,
  SourceBufferList: false,
  StyleSheetList: true, // TODO: Not spec compliant, should be false.
  TextTrackCueList: false,
  TextTrackList: false,
  TouchList: false
};

for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
  var NAME = collections[i];
  var explicit = DOMIterables[NAME];
  var Collection = global[NAME];
  var proto = Collection && Collection.prototype;
  var key;
  if (proto) {
    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
    Iterators[NAME] = ArrayValues;
    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);
  }
}


/***/ }),

/***/ "../node_modules/create-react-context/lib/implementation.js":
/*!******************************************************************!*\
  !*** ../node_modules/create-react-context/lib/implementation.js ***!
  \******************************************************************/
/***/ ((module, exports, __webpack_require__) => {

"use strict";


exports.__esModule = true;

var _react = __webpack_require__(/*! react */ "react");

var _react2 = _interopRequireDefault(_react);

var _propTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");

var _propTypes2 = _interopRequireDefault(_propTypes);

var _gud = __webpack_require__(/*! gud */ "../node_modules/gud/index.js");

var _gud2 = _interopRequireDefault(_gud);

var _warning = __webpack_require__(/*! warning */ "../node_modules/warning/warning.js");

var _warning2 = _interopRequireDefault(_warning);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }

var MAX_SIGNED_31_BIT_INT = 1073741823;

// Inlined Object.is polyfill.
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
function objectIs(x, y) {
  if (x === y) {
    return x !== 0 || 1 / x === 1 / y;
  } else {
    return x !== x && y !== y;
  }
}

function createEventEmitter(value) {
  var handlers = [];
  return {
    on: function on(handler) {
      handlers.push(handler);
    },
    off: function off(handler) {
      handlers = handlers.filter(function (h) {
        return h !== handler;
      });
    },
    get: function get() {
      return value;
    },
    set: function set(newValue, changedBits) {
      value = newValue;
      handlers.forEach(function (handler) {
        return handler(value, changedBits);
      });
    }
  };
}

function onlyChild(children) {
  return Array.isArray(children) ? children[0] : children;
}

function createReactContext(defaultValue, calculateChangedBits) {
  var _Provider$childContex, _Consumer$contextType;

  var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';

  var Provider = function (_Component) {
    _inherits(Provider, _Component);

    function Provider() {
      var _temp, _this, _ret;

      _classCallCheck(this, Provider);

      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);
    }

    Provider.prototype.getChildContext = function getChildContext() {
      var _ref;

      return _ref = {}, _ref[contextProp] = this.emitter, _ref;
    };

    Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
      if (this.props.value !== nextProps.value) {
        var oldValue = this.props.value;
        var newValue = nextProps.value;
        var changedBits = void 0;

        if (objectIs(oldValue, newValue)) {
          changedBits = 0; // No change
        } else {
          changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;
          if (true) {
            (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);
          }

          changedBits |= 0;

          if (changedBits !== 0) {
            this.emitter.set(nextProps.value, changedBits);
          }
        }
      }
    };

    Provider.prototype.render = function render() {
      return this.props.children;
    };

    return Provider;
  }(_react.Component);

  Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);

  var Consumer = function (_Component2) {
    _inherits(Consumer, _Component2);

    function Consumer() {
      var _temp2, _this2, _ret2;

      _classCallCheck(this, Consumer);

      for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }

      return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {
        value: _this2.getValue()
      }, _this2.onUpdate = function (newValue, changedBits) {
        var observedBits = _this2.observedBits | 0;
        if ((observedBits & changedBits) !== 0) {
          _this2.setState({ value: _this2.getValue() });
        }
      }, _temp2), _possibleConstructorReturn(_this2, _ret2);
    }

    Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
      var observedBits = nextProps.observedBits;

      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default
      : observedBits;
    };

    Consumer.prototype.componentDidMount = function componentDidMount() {
      if (this.context[contextProp]) {
        this.context[contextProp].on(this.onUpdate);
      }
      var observedBits = this.props.observedBits;

      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default
      : observedBits;
    };

    Consumer.prototype.componentWillUnmount = function componentWillUnmount() {
      if (this.context[contextProp]) {
        this.context[contextProp].off(this.onUpdate);
      }
    };

    Consumer.prototype.getValue = function getValue() {
      if (this.context[contextProp]) {
        return this.context[contextProp].get();
      } else {
        return defaultValue;
      }
    };

    Consumer.prototype.render = function render() {
      return onlyChild(this.props.children)(this.state.value);
    };

    return Consumer;
  }(_react.Component);

  Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);


  return {
    Provider: Provider,
    Consumer: Consumer
  };
}

exports.default = createReactContext;
module.exports = exports['default'];

/***/ }),

/***/ "../node_modules/create-react-context/lib/index.js":
/*!*********************************************************!*\
  !*** ../node_modules/create-react-context/lib/index.js ***!
  \*********************************************************/
/***/ ((module, exports, __webpack_require__) => {

"use strict";


exports.__esModule = true;

var _react = __webpack_require__(/*! react */ "react");

var _react2 = _interopRequireDefault(_react);

var _implementation = __webpack_require__(/*! ./implementation */ "../node_modules/create-react-context/lib/implementation.js");

var _implementation2 = _interopRequireDefault(_implementation);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

exports.default = _react2.default.createContext || _implementation2.default;
module.exports = exports['default'];

/***/ }),

/***/ "../node_modules/gud/index.js":
/*!************************************!*\
  !*** ../node_modules/gud/index.js ***!
  \************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// @flow


var key = '__global_unique_id__';

module.exports = function() {
  return __webpack_require__.g[key] = (__webpack_require__.g[key] || 0) + 1;
};


/***/ }),

/***/ "../node_modules/invariant/browser.js":
/*!********************************************!*\
  !*** ../node_modules/invariant/browser.js ***!
  \********************************************/
/***/ ((module) => {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



/**
 * Use invariant() to assert state which your program assumes to be true.
 *
 * Provide sprintf-style format (only %s is supported) and arguments
 * to provide information about what broke and what you were
 * expecting.
 *
 * The invariant message will be stripped in production, but the invariant
 * will remain to ensure logic does not differ in production.
 */

var invariant = function(condition, format, a, b, c, d, e, f) {
  if (true) {
    if (format === undefined) {
      throw new Error('invariant requires an error message argument');
    }
  }

  if (!condition) {
    var error;
    if (format === undefined) {
      error = new Error(
        'Minified exception occurred; use the non-minified dev environment ' +
        'for the full error message and additional helpful warnings.'
      );
    } else {
      var args = [a, b, c, d, e, f];
      var argIndex = 0;
      error = new Error(
        format.replace(/%s/g, function() { return args[argIndex++]; })
      );
      error.name = 'Invariant Violation';
    }

    error.framesToPop = 1; // we don't care about invariant's own frame
    throw error;
  }
};

module.exports = invariant;


/***/ }),

/***/ "../node_modules/object-assign/index.js":
/*!**********************************************!*\
  !*** ../node_modules/object-assign/index.js ***!
  \**********************************************/
/***/ ((module) => {

"use strict";
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/


/* eslint-disable no-unused-vars */
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var propIsEnumerable = Object.prototype.propertyIsEnumerable;

function toObject(val) {
	if (val === null || val === undefined) {
		throw new TypeError('Object.assign cannot be called with null or undefined');
	}

	return Object(val);
}

function shouldUseNative() {
	try {
		if (!Object.assign) {
			return false;
		}

		// Detect buggy property enumeration order in older V8 versions.

		// https://bugs.chromium.org/p/v8/issues/detail?id=4118
		var test1 = new String('abc');  // eslint-disable-line no-new-wrappers
		test1[5] = 'de';
		if (Object.getOwnPropertyNames(test1)[0] === '5') {
			return false;
		}

		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
		var test2 = {};
		for (var i = 0; i < 10; i++) {
			test2['_' + String.fromCharCode(i)] = i;
		}
		var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
			return test2[n];
		});
		if (order2.join('') !== '0123456789') {
			return false;
		}

		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
		var test3 = {};
		'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
			test3[letter] = letter;
		});
		if (Object.keys(Object.assign({}, test3)).join('') !==
				'abcdefghijklmnopqrst') {
			return false;
		}

		return true;
	} catch (err) {
		// We don't expect any of the above to throw, but better to be safe.
		return false;
	}
}

module.exports = shouldUseNative() ? Object.assign : function (target, source) {
	var from;
	var to = toObject(target);
	var symbols;

	for (var s = 1; s < arguments.length; s++) {
		from = Object(arguments[s]);

		for (var key in from) {
			if (hasOwnProperty.call(from, key)) {
				to[key] = from[key];
			}
		}

		if (getOwnPropertySymbols) {
			symbols = getOwnPropertySymbols(from);
			for (var i = 0; i < symbols.length; i++) {
				if (propIsEnumerable.call(from, symbols[i])) {
					to[symbols[i]] = from[symbols[i]];
				}
			}
		}
	}

	return to;
};


/***/ }),

/***/ "../node_modules/prop-types/checkPropTypes.js":
/*!****************************************************!*\
  !*** ../node_modules/prop-types/checkPropTypes.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



var printWarning = function() {};

if (true) {
  var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js");
  var loggedTypeFailures = {};
  var has = Function.call.bind(Object.prototype.hasOwnProperty);

  printWarning = function(text) {
    var message = 'Warning: ' + text;
    if (typeof console !== 'undefined') {
      console.error(message);
    }
    try {
      // --- Welcome to debugging React ---
      // This error was thrown as a convenience so that you can use this stack
      // to find the callsite that caused this warning to fire.
      throw new Error(message);
    } catch (x) {}
  };
}

/**
 * Assert that the values match with the type specs.
 * Error messages are memorized and will only be shown once.
 *
 * @param {object} typeSpecs Map of name to a ReactPropType
 * @param {object} values Runtime values that need to be type-checked
 * @param {string} location e.g. "prop", "context", "child context"
 * @param {string} componentName Name of the component for error messages.
 * @param {?Function} getStack Returns the component stack.
 * @private
 */
function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
  if (true) {
    for (var typeSpecName in typeSpecs) {
      if (has(typeSpecs, typeSpecName)) {
        var error;
        // Prop type validation may throw. In case they do, we don't want to
        // fail the render phase where it didn't fail before. So we log it.
        // After these have been cleaned up, we'll let them throw.
        try {
          // This is intentionally an invariant that gets caught. It's the same
          // behavior as without this statement except with a better message.
          if (typeof typeSpecs[typeSpecName] !== 'function') {
            var err = Error(
              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +
              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'
            );
            err.name = 'Invariant Violation';
            throw err;
          }
          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
        } catch (ex) {
          error = ex;
        }
        if (error && !(error instanceof Error)) {
          printWarning(
            (componentName || 'React class') + ': type specification of ' +
            location + ' `' + typeSpecName + '` is invalid; the type checker ' +
            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +
            'You may have forgotten to pass an argument to the type checker ' +
            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +
            'shape all require an argument).'
          );
        }
        if (error instanceof Error && !(error.message in loggedTypeFailures)) {
          // Only monitor this failure once because there tends to be a lot of the
          // same error.
          loggedTypeFailures[error.message] = true;

          var stack = getStack ? getStack() : '';

          printWarning(
            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')
          );
        }
      }
    }
  }
}

/**
 * Resets warning cache when testing.
 *
 * @private
 */
checkPropTypes.resetWarningCache = function() {
  if (true) {
    loggedTypeFailures = {};
  }
}

module.exports = checkPropTypes;


/***/ }),

/***/ "../node_modules/prop-types/factoryWithTypeCheckers.js":
/*!*************************************************************!*\
  !*** ../node_modules/prop-types/factoryWithTypeCheckers.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/react-is/index.js");
var assign = __webpack_require__(/*! object-assign */ "../node_modules/object-assign/index.js");

var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js");
var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "../node_modules/prop-types/checkPropTypes.js");

var has = Function.call.bind(Object.prototype.hasOwnProperty);
var printWarning = function() {};

if (true) {
  printWarning = function(text) {
    var message = 'Warning: ' + text;
    if (typeof console !== 'undefined') {
      console.error(message);
    }
    try {
      // --- Welcome to debugging React ---
      // This error was thrown as a convenience so that you can use this stack
      // to find the callsite that caused this warning to fire.
      throw new Error(message);
    } catch (x) {}
  };
}

function emptyFunctionThatReturnsNull() {
  return null;
}

module.exports = function(isValidElement, throwOnDirectAccess) {
  /* global Symbol */
  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.

  /**
   * Returns the iterator method function contained on the iterable object.
   *
   * Be sure to invoke the function with the iterable as context:
   *
   *     var iteratorFn = getIteratorFn(myIterable);
   *     if (iteratorFn) {
   *       var iterator = iteratorFn.call(myIterable);
   *       ...
   *     }
   *
   * @param {?object} maybeIterable
   * @return {?function}
   */
  function getIteratorFn(maybeIterable) {
    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
    if (typeof iteratorFn === 'function') {
      return iteratorFn;
    }
  }

  /**
   * Collection of methods that allow declaration and validation of props that are
   * supplied to React components. Example usage:
   *
   *   var Props = require('ReactPropTypes');
   *   var MyArticle = React.createClass({
   *     propTypes: {
   *       // An optional string prop named "description".
   *       description: Props.string,
   *
   *       // A required enum prop named "category".
   *       category: Props.oneOf(['News','Photos']).isRequired,
   *
   *       // A prop named "dialog" that requires an instance of Dialog.
   *       dialog: Props.instanceOf(Dialog).isRequired
   *     },
   *     render: function() { ... }
   *   });
   *
   * A more formal specification of how these methods are used:
   *
   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
   *   decl := ReactPropTypes.{type}(.isRequired)?
   *
   * Each and every declaration produces a function with the same signature. This
   * allows the creation of custom validation functions. For example:
   *
   *  var MyLink = React.createClass({
   *    propTypes: {
   *      // An optional string or URI prop named "href".
   *      href: function(props, propName, componentName) {
   *        var propValue = props[propName];
   *        if (propValue != null && typeof propValue !== 'string' &&
   *            !(propValue instanceof URI)) {
   *          return new Error(
   *            'Expected a string or an URI for ' + propName + ' in ' +
   *            componentName
   *          );
   *        }
   *      }
   *    },
   *    render: function() {...}
   *  });
   *
   * @internal
   */

  var ANONYMOUS = '<<anonymous>>';

  // Important!
  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
  var ReactPropTypes = {
    array: createPrimitiveTypeChecker('array'),
    bool: createPrimitiveTypeChecker('boolean'),
    func: createPrimitiveTypeChecker('function'),
    number: createPrimitiveTypeChecker('number'),
    object: createPrimitiveTypeChecker('object'),
    string: createPrimitiveTypeChecker('string'),
    symbol: createPrimitiveTypeChecker('symbol'),

    any: createAnyTypeChecker(),
    arrayOf: createArrayOfTypeChecker,
    element: createElementTypeChecker(),
    elementType: createElementTypeTypeChecker(),
    instanceOf: createInstanceTypeChecker,
    node: createNodeChecker(),
    objectOf: createObjectOfTypeChecker,
    oneOf: createEnumTypeChecker,
    oneOfType: createUnionTypeChecker,
    shape: createShapeTypeChecker,
    exact: createStrictShapeTypeChecker,
  };

  /**
   * inlined Object.is polyfill to avoid requiring consumers ship their own
   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
   */
  /*eslint-disable no-self-compare*/
  function is(x, y) {
    // SameValue algorithm
    if (x === y) {
      // Steps 1-5, 7-10
      // Steps 6.b-6.e: +0 != -0
      return x !== 0 || 1 / x === 1 / y;
    } else {
      // Step 6.a: NaN == NaN
      return x !== x && y !== y;
    }
  }
  /*eslint-enable no-self-compare*/

  /**
   * We use an Error-like object for backward compatibility as people may call
   * PropTypes directly and inspect their output. However, we don't use real
   * Errors anymore. We don't inspect their stack anyway, and creating them
   * is prohibitively expensive if they are created too often, such as what
   * happens in oneOfType() for any type before the one that matched.
   */
  function PropTypeError(message) {
    this.message = message;
    this.stack = '';
  }
  // Make `instanceof Error` still work for returned errors.
  PropTypeError.prototype = Error.prototype;

  function createChainableTypeChecker(validate) {
    if (true) {
      var manualPropTypeCallCache = {};
      var manualPropTypeWarningCount = 0;
    }
    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
      componentName = componentName || ANONYMOUS;
      propFullName = propFullName || propName;

      if (secret !== ReactPropTypesSecret) {
        if (throwOnDirectAccess) {
          // New behavior only for users of `prop-types` package
          var err = new Error(
            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
            'Use `PropTypes.checkPropTypes()` to call them. ' +
            'Read more at http://fb.me/use-check-prop-types'
          );
          err.name = 'Invariant Violation';
          throw err;
        } else if ( true && typeof console !== 'undefined') {
          // Old behavior for people using React.PropTypes
          var cacheKey = componentName + ':' + propName;
          if (
            !manualPropTypeCallCache[cacheKey] &&
            // Avoid spamming the console because they are often not actionable except for lib authors
            manualPropTypeWarningCount < 3
          ) {
            printWarning(
              'You are manually calling a React.PropTypes validation ' +
              'function for the `' + propFullName + '` prop on `' + componentName  + '`. This is deprecated ' +
              'and will throw in the standalone `prop-types` package. ' +
              'You may be seeing this warning due to a third-party PropTypes ' +
              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'
            );
            manualPropTypeCallCache[cacheKey] = true;
            manualPropTypeWarningCount++;
          }
        }
      }
      if (props[propName] == null) {
        if (isRequired) {
          if (props[propName] === null) {
            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
          }
          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
        }
        return null;
      } else {
        return validate(props, propName, componentName, location, propFullName);
      }
    }

    var chainedCheckType = checkType.bind(null, false);
    chainedCheckType.isRequired = checkType.bind(null, true);

    return chainedCheckType;
  }

  function createPrimitiveTypeChecker(expectedType) {
    function validate(props, propName, componentName, location, propFullName, secret) {
      var propValue = props[propName];
      var propType = getPropType(propValue);
      if (propType !== expectedType) {
        // `propValue` being instance of, say, date/regexp, pass the 'object'
        // check, but we can offer a more precise error message here rather than
        // 'of type `object`'.
        var preciseType = getPreciseType(propValue);

        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createAnyTypeChecker() {
    return createChainableTypeChecker(emptyFunctionThatReturnsNull);
  }

  function createArrayOfTypeChecker(typeChecker) {
    function validate(props, propName, componentName, location, propFullName) {
      if (typeof typeChecker !== 'function') {
        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
      }
      var propValue = props[propName];
      if (!Array.isArray(propValue)) {
        var propType = getPropType(propValue);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
      }
      for (var i = 0; i < propValue.length; i++) {
        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
        if (error instanceof Error) {
          return error;
        }
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createElementTypeChecker() {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      if (!isValidElement(propValue)) {
        var propType = getPropType(propValue);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createElementTypeTypeChecker() {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      if (!ReactIs.isValidElementType(propValue)) {
        var propType = getPropType(propValue);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createInstanceTypeChecker(expectedClass) {
    function validate(props, propName, componentName, location, propFullName) {
      if (!(props[propName] instanceof expectedClass)) {
        var expectedClassName = expectedClass.name || ANONYMOUS;
        var actualClassName = getClassName(props[propName]);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createEnumTypeChecker(expectedValues) {
    if (!Array.isArray(expectedValues)) {
      if (true) {
        if (arguments.length > 1) {
          printWarning(
            'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +
            'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'
          );
        } else {
          printWarning('Invalid argument supplied to oneOf, expected an array.');
        }
      }
      return emptyFunctionThatReturnsNull;
    }

    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      for (var i = 0; i < expectedValues.length; i++) {
        if (is(propValue, expectedValues[i])) {
          return null;
        }
      }

      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {
        var type = getPreciseType(value);
        if (type === 'symbol') {
          return String(value);
        }
        return value;
      });
      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
    }
    return createChainableTypeChecker(validate);
  }

  function createObjectOfTypeChecker(typeChecker) {
    function validate(props, propName, componentName, location, propFullName) {
      if (typeof typeChecker !== 'function') {
        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
      }
      var propValue = props[propName];
      var propType = getPropType(propValue);
      if (propType !== 'object') {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
      }
      for (var key in propValue) {
        if (has(propValue, key)) {
          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
          if (error instanceof Error) {
            return error;
          }
        }
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createUnionTypeChecker(arrayOfTypeCheckers) {
    if (!Array.isArray(arrayOfTypeCheckers)) {
       true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0;
      return emptyFunctionThatReturnsNull;
    }

    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
      var checker = arrayOfTypeCheckers[i];
      if (typeof checker !== 'function') {
        printWarning(
          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +
          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'
        );
        return emptyFunctionThatReturnsNull;
      }
    }

    function validate(props, propName, componentName, location, propFullName) {
      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
        var checker = arrayOfTypeCheckers[i];
        if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
          return null;
        }
      }

      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
    }
    return createChainableTypeChecker(validate);
  }

  function createNodeChecker() {
    function validate(props, propName, componentName, location, propFullName) {
      if (!isNode(props[propName])) {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createShapeTypeChecker(shapeTypes) {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      var propType = getPropType(propValue);
      if (propType !== 'object') {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
      }
      for (var key in shapeTypes) {
        var checker = shapeTypes[key];
        if (!checker) {
          continue;
        }
        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
        if (error) {
          return error;
        }
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createStrictShapeTypeChecker(shapeTypes) {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      var propType = getPropType(propValue);
      if (propType !== 'object') {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
      }
      // We need to check all keys in case some are required but missing from
      // props.
      var allKeys = assign({}, props[propName], shapeTypes);
      for (var key in allKeys) {
        var checker = shapeTypes[key];
        if (!checker) {
          return new PropTypeError(
            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +
            '\nBad object: ' + JSON.stringify(props[propName], null, '  ') +
            '\nValid keys: ' +  JSON.stringify(Object.keys(shapeTypes), null, '  ')
          );
        }
        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
        if (error) {
          return error;
        }
      }
      return null;
    }

    return createChainableTypeChecker(validate);
  }

  function isNode(propValue) {
    switch (typeof propValue) {
      case 'number':
      case 'string':
      case 'undefined':
        return true;
      case 'boolean':
        return !propValue;
      case 'object':
        if (Array.isArray(propValue)) {
          return propValue.every(isNode);
        }
        if (propValue === null || isValidElement(propValue)) {
          return true;
        }

        var iteratorFn = getIteratorFn(propValue);
        if (iteratorFn) {
          var iterator = iteratorFn.call(propValue);
          var step;
          if (iteratorFn !== propValue.entries) {
            while (!(step = iterator.next()).done) {
              if (!isNode(step.value)) {
                return false;
              }
            }
          } else {
            // Iterator will provide entry [k,v] tuples rather than values.
            while (!(step = iterator.next()).done) {
              var entry = step.value;
              if (entry) {
                if (!isNode(entry[1])) {
                  return false;
                }
              }
            }
          }
        } else {
          return false;
        }

        return true;
      default:
        return false;
    }
  }

  function isSymbol(propType, propValue) {
    // Native Symbol.
    if (propType === 'symbol') {
      return true;
    }

    // falsy value can't be a Symbol
    if (!propValue) {
      return false;
    }

    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
    if (propValue['@@toStringTag'] === 'Symbol') {
      return true;
    }

    // Fallback for non-spec compliant Symbols which are polyfilled.
    if (typeof Symbol === 'function' && propValue instanceof Symbol) {
      return true;
    }

    return false;
  }

  // Equivalent of `typeof` but with special handling for array and regexp.
  function getPropType(propValue) {
    var propType = typeof propValue;
    if (Array.isArray(propValue)) {
      return 'array';
    }
    if (propValue instanceof RegExp) {
      // Old webkits (at least until Android 4.0) return 'function' rather than
      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
      // passes PropTypes.object.
      return 'object';
    }
    if (isSymbol(propType, propValue)) {
      return 'symbol';
    }
    return propType;
  }

  // This handles more types than `getPropType`. Only used for error messages.
  // See `createPrimitiveTypeChecker`.
  function getPreciseType(propValue) {
    if (typeof propValue === 'undefined' || propValue === null) {
      return '' + propValue;
    }
    var propType = getPropType(propValue);
    if (propType === 'object') {
      if (propValue instanceof Date) {
        return 'date';
      } else if (propValue instanceof RegExp) {
        return 'regexp';
      }
    }
    return propType;
  }

  // Returns a string that is postfixed to a warning about an invalid type.
  // For example, "undefined" or "of type array"
  function getPostfixForTypeWarning(value) {
    var type = getPreciseType(value);
    switch (type) {
      case 'array':
      case 'object':
        return 'an ' + type;
      case 'boolean':
      case 'date':
      case 'regexp':
        return 'a ' + type;
      default:
        return type;
    }
  }

  // Returns class name of the object, if any.
  function getClassName(propValue) {
    if (!propValue.constructor || !propValue.constructor.name) {
      return ANONYMOUS;
    }
    return propValue.constructor.name;
  }

  ReactPropTypes.checkPropTypes = checkPropTypes;
  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;
  ReactPropTypes.PropTypes = ReactPropTypes;

  return ReactPropTypes;
};


/***/ }),

/***/ "../node_modules/prop-types/index.js":
/*!*******************************************!*\
  !*** ../node_modules/prop-types/index.js ***!
  \*******************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

if (true) {
  var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/react-is/index.js");

  // By explicitly using `prop-types` you are opting into new development behavior.
  // http://fb.me/prop-types-in-prod
  var throwOnDirectAccess = true;
  module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "../node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess);
} else {}


/***/ }),

/***/ "../node_modules/prop-types/lib/ReactPropTypesSecret.js":
/*!**************************************************************!*\
  !*** ../node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
  \**************************************************************/
/***/ ((module) => {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';

module.exports = ReactPropTypesSecret;


/***/ }),

/***/ "../node_modules/reach-router-hash-history/index.js":
/*!**********************************************************!*\
  !*** ../node_modules/reach-router-hash-history/index.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "createHashSource": () => (/* binding */ createHashSource)
/* harmony export */ });
// take some code from
// https://github.com/ReactTraining/history/blob/master/modules/createHashHistory.js

function getHashPath() {
  // We can't use window.location.hash here because it's not
  // consistent across browsers - Firefox will pre-decode it!
  const href = window.location.href;
  const hashIndex = href.indexOf('#');
  return hashIndex === -1 ? '' : href.substring(hashIndex + 1);
}

function pushHashPath(path) {
  window.location.hash = '#' + path;
}

function replaceHashPath(path) {
  const hashIndex = window.location.href.indexOf('#');
  window.location.replace(
    window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path
  );
}

let createHashSource = (initialPathname = '/') => {
  let index = 0;
  // let stack = [{ pathname: initialPathname, search: '' }];
  // let states = [];

  return {
    get location() {
      return { pathname: getHashPath(), search: '' };
      // return stack[index];
    },
    addEventListener(name, fn) {
      if (name === 'popstate') {
        window.addEventListener('hashchange', fn);
      }
    },
    removeEventListener(name, fn) {
      if (name === 'popstate') {
        window.addEventListener('hashchange', fn);
      }
    },
    history: {
      get entries() {
        return [{ pathname: getHashPath(), search: '' }];
        // return stack;
      },
      get index() {
        return index;
      },
      get state() {
        return undefined;
        // return states[index];
      },
      pushState(state, _, uri) {
        pushHashPath(uri);
        // let [pathname, search = ''] = uri.split('?');
        // index++;
        // stack.push({ pathname, search });
        // states.push(state);
      },
      replaceState(state, _, uri) {
        replaceHashPath(uri);
        // let [pathname, search = ''] = uri.split('?');
        // stack[index] = { pathname, search };
        // states[index] = state;
      }
    }
  };
};




/***/ }),

/***/ "../node_modules/react-is/cjs/react-is.development.js":
/*!************************************************************!*\
  !*** ../node_modules/react-is/cjs/react-is.development.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";
/** @license React v16.13.1
 * react-is.development.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */





if (true) {
  (function() {
'use strict';

// The Symbol used to tag the ReactElement-like types. If there is no native Symbol
// nor polyfill, then a plain number is used for performance.
var hasSymbol = typeof Symbol === 'function' && Symbol.for;
var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
// (unstable) APIs that have been removed. Can we remove the symbols?

var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;
var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;

function isValidElementType(type) {
  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
}

function typeOf(object) {
  if (typeof object === 'object' && object !== null) {
    var $$typeof = object.$$typeof;

    switch ($$typeof) {
      case REACT_ELEMENT_TYPE:
        var type = object.type;

        switch (type) {
          case REACT_ASYNC_MODE_TYPE:
          case REACT_CONCURRENT_MODE_TYPE:
          case REACT_FRAGMENT_TYPE:
          case REACT_PROFILER_TYPE:
          case REACT_STRICT_MODE_TYPE:
          case REACT_SUSPENSE_TYPE:
            return type;

          default:
            var $$typeofType = type && type.$$typeof;

            switch ($$typeofType) {
              case REACT_CONTEXT_TYPE:
              case REACT_FORWARD_REF_TYPE:
              case REACT_LAZY_TYPE:
              case REACT_MEMO_TYPE:
              case REACT_PROVIDER_TYPE:
                return $$typeofType;

              default:
                return $$typeof;
            }

        }

      case REACT_PORTAL_TYPE:
        return $$typeof;
    }
  }

  return undefined;
} // AsyncMode is deprecated along with isAsyncMode

var AsyncMode = REACT_ASYNC_MODE_TYPE;
var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
var ContextConsumer = REACT_CONTEXT_TYPE;
var ContextProvider = REACT_PROVIDER_TYPE;
var Element = REACT_ELEMENT_TYPE;
var ForwardRef = REACT_FORWARD_REF_TYPE;
var Fragment = REACT_FRAGMENT_TYPE;
var Lazy = REACT_LAZY_TYPE;
var Memo = REACT_MEMO_TYPE;
var Portal = REACT_PORTAL_TYPE;
var Profiler = REACT_PROFILER_TYPE;
var StrictMode = REACT_STRICT_MODE_TYPE;
var Suspense = REACT_SUSPENSE_TYPE;
var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated

function isAsyncMode(object) {
  {
    if (!hasWarnedAboutDeprecatedIsAsyncMode) {
      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint

      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');
    }
  }

  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
}
function isConcurrentMode(object) {
  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
}
function isContextConsumer(object) {
  return typeOf(object) === REACT_CONTEXT_TYPE;
}
function isContextProvider(object) {
  return typeOf(object) === REACT_PROVIDER_TYPE;
}
function isElement(object) {
  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
}
function isForwardRef(object) {
  return typeOf(object) === REACT_FORWARD_REF_TYPE;
}
function isFragment(object) {
  return typeOf(object) === REACT_FRAGMENT_TYPE;
}
function isLazy(object) {
  return typeOf(object) === REACT_LAZY_TYPE;
}
function isMemo(object) {
  return typeOf(object) === REACT_MEMO_TYPE;
}
function isPortal(object) {
  return typeOf(object) === REACT_PORTAL_TYPE;
}
function isProfiler(object) {
  return typeOf(object) === REACT_PROFILER_TYPE;
}
function isStrictMode(object) {
  return typeOf(object) === REACT_STRICT_MODE_TYPE;
}
function isSuspense(object) {
  return typeOf(object) === REACT_SUSPENSE_TYPE;
}

exports.AsyncMode = AsyncMode;
exports.ConcurrentMode = ConcurrentMode;
exports.ContextConsumer = ContextConsumer;
exports.ContextProvider = ContextProvider;
exports.Element = Element;
exports.ForwardRef = ForwardRef;
exports.Fragment = Fragment;
exports.Lazy = Lazy;
exports.Memo = Memo;
exports.Portal = Portal;
exports.Profiler = Profiler;
exports.StrictMode = StrictMode;
exports.Suspense = Suspense;
exports.isAsyncMode = isAsyncMode;
exports.isConcurrentMode = isConcurrentMode;
exports.isContextConsumer = isContextConsumer;
exports.isContextProvider = isContextProvider;
exports.isElement = isElement;
exports.isForwardRef = isForwardRef;
exports.isFragment = isFragment;
exports.isLazy = isLazy;
exports.isMemo = isMemo;
exports.isPortal = isPortal;
exports.isProfiler = isProfiler;
exports.isStrictMode = isStrictMode;
exports.isSuspense = isSuspense;
exports.isValidElementType = isValidElementType;
exports.typeOf = typeOf;
  })();
}


/***/ }),

/***/ "../node_modules/react-is/index.js":
/*!*****************************************!*\
  !*** ../node_modules/react-is/index.js ***!
  \*****************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


if (false) {} else {
  module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "../node_modules/react-is/cjs/react-is.development.js");
}


/***/ }),

/***/ "../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "polyfill": () => (/* binding */ polyfill)
/* harmony export */ });
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

function componentWillMount() {
  // Call this.constructor.gDSFP to support sub-classes.
  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);
  if (state !== null && state !== undefined) {
    this.setState(state);
  }
}

function componentWillReceiveProps(nextProps) {
  // Call this.constructor.gDSFP to support sub-classes.
  // Use the setState() updater to ensure state isn't stale in certain edge cases.
  function updater(prevState) {
    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);
    return state !== null && state !== undefined ? state : null;
  }
  // Binding "this" is important for shallow renderer support.
  this.setState(updater.bind(this));
}

function componentWillUpdate(nextProps, nextState) {
  try {
    var prevProps = this.props;
    var prevState = this.state;
    this.props = nextProps;
    this.state = nextState;
    this.__reactInternalSnapshotFlag = true;
    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(
      prevProps,
      prevState
    );
  } finally {
    this.props = prevProps;
    this.state = prevState;
  }
}

// React may warn about cWM/cWRP/cWU methods being deprecated.
// Add a flag to suppress these warnings for this special case.
componentWillMount.__suppressDeprecationWarning = true;
componentWillReceiveProps.__suppressDeprecationWarning = true;
componentWillUpdate.__suppressDeprecationWarning = true;

function polyfill(Component) {
  var prototype = Component.prototype;

  if (!prototype || !prototype.isReactComponent) {
    throw new Error('Can only polyfill class components');
  }

  if (
    typeof Component.getDerivedStateFromProps !== 'function' &&
    typeof prototype.getSnapshotBeforeUpdate !== 'function'
  ) {
    return Component;
  }

  // If new component APIs are defined, "unsafe" lifecycles won't be called.
  // Error if any of these lifecycles are present,
  // Because they would work differently between older and newer (16.3+) versions of React.
  var foundWillMountName = null;
  var foundWillReceivePropsName = null;
  var foundWillUpdateName = null;
  if (typeof prototype.componentWillMount === 'function') {
    foundWillMountName = 'componentWillMount';
  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {
    foundWillMountName = 'UNSAFE_componentWillMount';
  }
  if (typeof prototype.componentWillReceiveProps === 'function') {
    foundWillReceivePropsName = 'componentWillReceiveProps';
  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {
    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';
  }
  if (typeof prototype.componentWillUpdate === 'function') {
    foundWillUpdateName = 'componentWillUpdate';
  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {
    foundWillUpdateName = 'UNSAFE_componentWillUpdate';
  }
  if (
    foundWillMountName !== null ||
    foundWillReceivePropsName !== null ||
    foundWillUpdateName !== null
  ) {
    var componentName = Component.displayName || Component.name;
    var newApiName =
      typeof Component.getDerivedStateFromProps === 'function'
        ? 'getDerivedStateFromProps()'
        : 'getSnapshotBeforeUpdate()';

    throw Error(
      'Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n' +
        componentName +
        ' uses ' +
        newApiName +
        ' but also contains the following legacy lifecycles:' +
        (foundWillMountName !== null ? '\n  ' + foundWillMountName : '') +
        (foundWillReceivePropsName !== null
          ? '\n  ' + foundWillReceivePropsName
          : '') +
        (foundWillUpdateName !== null ? '\n  ' + foundWillUpdateName : '') +
        '\n\nThe above lifecycles should be removed. Learn more about this warning here:\n' +
        'https://fb.me/react-async-component-lifecycle-hooks'
    );
  }

  // React <= 16.2 does not support static getDerivedStateFromProps.
  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.
  // Newer versions of React will ignore these lifecycles if gDSFP exists.
  if (typeof Component.getDerivedStateFromProps === 'function') {
    prototype.componentWillMount = componentWillMount;
    prototype.componentWillReceiveProps = componentWillReceiveProps;
  }

  // React <= 16.2 does not support getSnapshotBeforeUpdate.
  // As a workaround, use cWU to invoke the new lifecycle.
  // Newer versions of React will ignore that lifecycle if gSBU exists.
  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {
    if (typeof prototype.componentDidUpdate !== 'function') {
      throw new Error(
        'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'
      );
    }

    prototype.componentWillUpdate = componentWillUpdate;

    var componentDidUpdate = prototype.componentDidUpdate;

    prototype.componentDidUpdate = function componentDidUpdatePolyfill(
      prevProps,
      prevState,
      maybeSnapshot
    ) {
      // 16.3+ will not execute our will-update method;
      // It will pass a snapshot value to did-update though.
      // Older versions will require our polyfilled will-update value.
      // We need to handle both cases, but can't just check for the presence of "maybeSnapshot",
      // Because for <= 15.x versions this might be a "prevContext" object.
      // We also can't just check "__reactInternalSnapshot",
      // Because get-snapshot might return a falsy value.
      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.
      var snapshot = this.__reactInternalSnapshotFlag
        ? this.__reactInternalSnapshot
        : maybeSnapshot;

      componentDidUpdate.call(this, prevProps, prevState, snapshot);
    };
  }

  return Component;
}




/***/ }),

/***/ "../node_modules/warning/warning.js":
/*!******************************************!*\
  !*** ../node_modules/warning/warning.js ***!
  \******************************************/
/***/ ((module) => {

"use strict";
/**
 * Copyright (c) 2014-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



/**
 * Similar to invariant but only logs a warning if the condition is not met.
 * This can be used to log issues in development environments in critical
 * paths. Removing the logging code for production environments will keep the
 * same logic and follow the same code paths.
 */

var __DEV__ = "development" !== 'production';

var warning = function() {};

if (__DEV__) {
  var printWarning = function printWarning(format, args) {
    var len = arguments.length;
    args = new Array(len > 1 ? len - 1 : 0);
    for (var key = 1; key < len; key++) {
      args[key - 1] = arguments[key];
    }
    var argIndex = 0;
    var message = 'Warning: ' +
      format.replace(/%s/g, function() {
        return args[argIndex++];
      });
    if (typeof console !== 'undefined') {
      console.error(message);
    }
    try {
      // --- Welcome to debugging React ---
      // This error was thrown as a convenience so that you can use this stack
      // to find the callsite that caused this warning to fire.
      throw new Error(message);
    } catch (x) {}
  }

  warning = function(condition, format, args) {
    var len = arguments.length;
    args = new Array(len > 2 ? len - 2 : 0);
    for (var key = 2; key < len; key++) {
      args[key - 2] = arguments[key];
    }
    if (format === undefined) {
      throw new Error(
          '`warning(condition, format, ...args)` requires a warning ' +
          'message argument'
      );
    }
    if (!condition) {
      printWarning.apply(null, [format].concat(args));
    }
  };
}

module.exports = warning;


/***/ }),

/***/ "react":
/*!************************!*\
  !*** external "React" ***!
  \************************/
/***/ ((module) => {

"use strict";
module.exports = React;

/***/ }),

/***/ "@wordpress/i18n":
/*!**************************!*\
  !*** external "wp.i18n" ***!
  \**************************/
/***/ ((module) => {

"use strict";
module.exports = wp.i18n;

/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = __webpack_modules__;
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/compat get default export */
/******/ 	(() => {
/******/ 		// getDefaultExport function for compatibility with non-harmony modules
/******/ 		__webpack_require__.n = (module) => {
/******/ 			var getter = module && module.__esModule ?
/******/ 				() => (module['default']) :
/******/ 				() => (module);
/******/ 			__webpack_require__.d(getter, { a: getter });
/******/ 			return getter;
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/create fake namespace object */
/******/ 	(() => {
/******/ 		var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);
/******/ 		var leafPrototypes;
/******/ 		// create a fake namespace object
/******/ 		// mode & 1: value is a module id, require it
/******/ 		// mode & 2: merge all properties of value into the ns
/******/ 		// mode & 4: return value when already ns object
/******/ 		// mode & 16: return value when it's Promise-like
/******/ 		// mode & 8|1: behave like require
/******/ 		__webpack_require__.t = function(value, mode) {
/******/ 			if(mode & 1) value = this(value);
/******/ 			if(mode & 8) return value;
/******/ 			if(typeof value === 'object' && value) {
/******/ 				if((mode & 4) && value.__esModule) return value;
/******/ 				if((mode & 16) && typeof value.then === 'function') return value;
/******/ 			}
/******/ 			var ns = Object.create(null);
/******/ 			__webpack_require__.r(ns);
/******/ 			var def = {};
/******/ 			leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];
/******/ 			for(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {
/******/ 				Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));
/******/ 			}
/******/ 			def['default'] = () => (value);
/******/ 			__webpack_require__.d(ns, def);
/******/ 			return ns;
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/define property getters */
/******/ 	(() => {
/******/ 		// define getter functions for harmony exports
/******/ 		__webpack_require__.d = (exports, definition) => {
/******/ 			for(var key in definition) {
/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ 				}
/******/ 			}
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/ensure chunk */
/******/ 	(() => {
/******/ 		__webpack_require__.f = {};
/******/ 		// This file contains only the entry chunk.
/******/ 		// The chunk loading function for additional chunks
/******/ 		__webpack_require__.e = (chunkId) => {
/******/ 			return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {
/******/ 				__webpack_require__.f[key](chunkId, promises);
/******/ 				return promises;
/******/ 			}, []));
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/get javascript chunk filename */
/******/ 	(() => {
/******/ 		// This function allow to reference async chunks
/******/ 		__webpack_require__.u = (chunkId) => {
/******/ 			// return url for filenames not based on template
/******/ 			if (chunkId === "jszip.vendor") return "" + chunkId + ".8911033537a0c9d6e5f8.bundle.js";
/******/ 			// return url for filenames based on template
/******/ 			return undefined;
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/global */
/******/ 	(() => {
/******/ 		__webpack_require__.g = (function() {
/******/ 			if (typeof globalThis === 'object') return globalThis;
/******/ 			try {
/******/ 				return this || new Function('return this')();
/******/ 			} catch (e) {
/******/ 				if (typeof window === 'object') return window;
/******/ 			}
/******/ 		})();
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
/******/ 	(() => {
/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/load script */
/******/ 	(() => {
/******/ 		var inProgress = {};
/******/ 		var dataWebpackPrefix = "elementor-pro:";
/******/ 		// loadScript function to load a script via script tag
/******/ 		__webpack_require__.l = (url, done, key, chunkId) => {
/******/ 			if(inProgress[url]) { inProgress[url].push(done); return; }
/******/ 			var script, needAttach;
/******/ 			if(key !== undefined) {
/******/ 				var scripts = document.getElementsByTagName("script");
/******/ 				for(var i = 0; i < scripts.length; i++) {
/******/ 					var s = scripts[i];
/******/ 					if(s.getAttribute("src") == url || s.getAttribute("data-webpack") == dataWebpackPrefix + key) { script = s; break; }
/******/ 				}
/******/ 			}
/******/ 			if(!script) {
/******/ 				needAttach = true;
/******/ 				script = document.createElement('script');
/******/ 		
/******/ 				script.charset = 'utf-8';
/******/ 				script.timeout = 120;
/******/ 				if (__webpack_require__.nc) {
/******/ 					script.setAttribute("nonce", __webpack_require__.nc);
/******/ 				}
/******/ 				script.setAttribute("data-webpack", dataWebpackPrefix + key);
/******/ 				script.src = url;
/******/ 			}
/******/ 			inProgress[url] = [done];
/******/ 			var onScriptComplete = (prev, event) => {
/******/ 				// avoid mem leaks in IE.
/******/ 				script.onerror = script.onload = null;
/******/ 				clearTimeout(timeout);
/******/ 				var doneFns = inProgress[url];
/******/ 				delete inProgress[url];
/******/ 				script.parentNode && script.parentNode.removeChild(script);
/******/ 				doneFns && doneFns.forEach((fn) => (fn(event)));
/******/ 				if(prev) return prev(event);
/******/ 			}
/******/ 			;
/******/ 			var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);
/******/ 			script.onerror = onScriptComplete.bind(null, script.onerror);
/******/ 			script.onload = onScriptComplete.bind(null, script.onload);
/******/ 			needAttach && document.head.appendChild(script);
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/make namespace object */
/******/ 	(() => {
/******/ 		// define __esModule on exports
/******/ 		__webpack_require__.r = (exports) => {
/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 			}
/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/publicPath */
/******/ 	(() => {
/******/ 		var scriptUrl;
/******/ 		if (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + "";
/******/ 		var document = __webpack_require__.g.document;
/******/ 		if (!scriptUrl && document) {
/******/ 			if (document.currentScript)
/******/ 				scriptUrl = document.currentScript.src
/******/ 			if (!scriptUrl) {
/******/ 				var scripts = document.getElementsByTagName("script");
/******/ 				if(scripts.length) scriptUrl = scripts[scripts.length - 1].src
/******/ 			}
/******/ 		}
/******/ 		// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration
/******/ 		// or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic.
/******/ 		if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser");
/******/ 		scriptUrl = scriptUrl.replace(/#.*$/, "").replace(/\?.*$/, "").replace(/\/[^\/]+$/, "/");
/******/ 		__webpack_require__.p = scriptUrl;
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/jsonp chunk loading */
/******/ 	(() => {
/******/ 		// no baseURI
/******/ 		
/******/ 		// object to store loaded and loading chunks
/******/ 		// undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/ 		// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
/******/ 		var installedChunks = {
/******/ 			"form-submission-admin": 0
/******/ 		};
/******/ 		
/******/ 		__webpack_require__.f.j = (chunkId, promises) => {
/******/ 				// JSONP chunk loading for javascript
/******/ 				var installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;
/******/ 				if(installedChunkData !== 0) { // 0 means "already installed".
/******/ 		
/******/ 					// a Promise means "currently loading".
/******/ 					if(installedChunkData) {
/******/ 						promises.push(installedChunkData[2]);
/******/ 					} else {
/******/ 						if(true) { // all chunks have JS
/******/ 							// setup Promise in chunk cache
/******/ 							var promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));
/******/ 							promises.push(installedChunkData[2] = promise);
/******/ 		
/******/ 							// start chunk loading
/******/ 							var url = __webpack_require__.p + __webpack_require__.u(chunkId);
/******/ 							// create error before stack unwound to get useful stacktrace later
/******/ 							var error = new Error();
/******/ 							var loadingEnded = (event) => {
/******/ 								if(__webpack_require__.o(installedChunks, chunkId)) {
/******/ 									installedChunkData = installedChunks[chunkId];
/******/ 									if(installedChunkData !== 0) installedChunks[chunkId] = undefined;
/******/ 									if(installedChunkData) {
/******/ 										var errorType = event && (event.type === 'load' ? 'missing' : event.type);
/******/ 										var realSrc = event && event.target && event.target.src;
/******/ 										error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
/******/ 										error.name = 'ChunkLoadError';
/******/ 										error.type = errorType;
/******/ 										error.request = realSrc;
/******/ 										installedChunkData[1](error);
/******/ 									}
/******/ 								}
/******/ 							};
/******/ 							__webpack_require__.l(url, loadingEnded, "chunk-" + chunkId, chunkId);
/******/ 						} else installedChunks[chunkId] = 0;
/******/ 					}
/******/ 				}
/******/ 		};
/******/ 		
/******/ 		// no prefetching
/******/ 		
/******/ 		// no preloaded
/******/ 		
/******/ 		// no HMR
/******/ 		
/******/ 		// no HMR manifest
/******/ 		
/******/ 		// no on chunks loaded
/******/ 		
/******/ 		// install a JSONP callback for chunk loading
/******/ 		var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
/******/ 			var [chunkIds, moreModules, runtime] = data;
/******/ 			// add "moreModules" to the modules object,
/******/ 			// then flag all "chunkIds" as loaded and fire callback
/******/ 			var moduleId, chunkId, i = 0;
/******/ 			for(moduleId in moreModules) {
/******/ 				if(__webpack_require__.o(moreModules, moduleId)) {
/******/ 					__webpack_require__.m[moduleId] = moreModules[moduleId];
/******/ 				}
/******/ 			}
/******/ 			if(runtime) var result = runtime(__webpack_require__);
/******/ 			if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
/******/ 			for(;i < chunkIds.length; i++) {
/******/ 				chunkId = chunkIds[i];
/******/ 				if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
/******/ 					installedChunks[chunkId][0]();
/******/ 				}
/******/ 				installedChunks[chunkIds[i]] = 0;
/******/ 			}
/******/ 		
/******/ 		}
/******/ 		
/******/ 		var chunkLoadingGlobal = self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || [];
/******/ 		chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
/******/ 		chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
/******/ 	})();
/******/ 	
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be in strict mode.
(() => {
"use strict";
/*!*************************************************************!*\
  !*** ../modules/forms/submissions/assets/js/admin/admin.js ***!
  \*************************************************************/


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _component = _interopRequireDefault(__webpack_require__(/*! ./data/component */ "../modules/forms/submissions/assets/js/admin/data/component.js"));

var _formsComponent = _interopRequireDefault(__webpack_require__(/*! ./data/forms-component */ "../modules/forms/submissions/assets/js/admin/data/forms-component.js"));

var _app = _interopRequireDefault(__webpack_require__(/*! ./app */ "../modules/forms/submissions/assets/js/admin/app.js"));

$e.components.register(new _component.default());
$e.components.register(new _formsComponent.default());
var AppWrapper = elementorCommon.config.isDebug ? _react.default.StrictMode : _react.default.Fragment;
ReactDOM.render( /*#__PURE__*/_react.default.createElement(AppWrapper, null, /*#__PURE__*/_react.default.createElement(_app.default, null)), document.getElementById('e-form-submissions'));
})();

/******/ })()
;
//# sourceMappingURL=form-submission-admin.js.mapassets/js/slides.6d3f738223ac9b3c9b7a.bundle.js000064400000016456150755004310014471 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["slides"],{

/***/ "../modules/slides/assets/js/frontend/handlers/slides.js":
/*!***************************************************************!*\
  !*** ../modules/slides/assets/js/frontend/handlers/slides.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class SlidesHandler extends elementorModules.frontend.handlers.SwiperBase {
  getDefaultSettings() {
    return {
      selectors: {
        slider: '.elementor-slides-wrapper',
        slide: '.swiper-slide',
        slideInnerContents: '.swiper-slide-contents',
        activeSlide: '.swiper-slide-active',
        activeDuplicate: '.swiper-slide-duplicate-active'
      },
      classes: {
        animated: 'animated',
        kenBurnsActive: 'elementor-ken-burns--active',
        slideBackground: 'swiper-slide-bg'
      },
      attributes: {
        dataSliderOptions: 'slider_options',
        dataAnimation: 'animation'
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors'),
          elements = {
      $swiperContainer: this.$element.find(selectors.slider)
    };
    elements.$slides = elements.$swiperContainer.find(selectors.slide);
    return elements;
  }

  getSwiperOptions() {
    const elementSettings = this.getElementSettings(),
          swiperOptions = {
      autoplay: this.getAutoplayConfig(),
      grabCursor: true,
      initialSlide: this.getInitialSlide(),
      slidesPerView: 1,
      slidesPerGroup: 1,
      loop: 'yes' === elementSettings.infinite,
      speed: elementSettings.transition_speed,
      effect: elementSettings.transition,
      observeParents: true,
      observer: true,
      handleElementorBreakpoints: true,
      on: {
        slideChange: () => {
          this.handleKenBurns();
        }
      }
    };
    const showArrows = 'arrows' === elementSettings.navigation || 'both' === elementSettings.navigation,
          pagination = 'dots' === elementSettings.navigation || 'both' === elementSettings.navigation;

    if (showArrows) {
      swiperOptions.navigation = {
        prevEl: '.elementor-swiper-button-prev',
        nextEl: '.elementor-swiper-button-next'
      };
    }

    if (pagination) {
      swiperOptions.pagination = {
        el: '.swiper-pagination',
        type: 'bullets',
        clickable: true
      };
    }

    if (true === swiperOptions.loop) {
      swiperOptions.loopedSlides = this.getSlidesCount();
    }

    if ('fade' === swiperOptions.effect) {
      swiperOptions.fadeEffect = {
        crossFade: true
      };
    }

    return swiperOptions;
  }

  getAutoplayConfig() {
    const elementSettings = this.getElementSettings();

    if ('yes' !== elementSettings.autoplay) {
      return false;
    }

    return {
      stopOnLastSlide: true,
      // Has no effect in infinite mode by default.
      delay: elementSettings.autoplay_speed,
      disableOnInteraction: 'yes' === elementSettings.pause_on_interaction
    };
  }

  initSingleSlideAnimations() {
    const settings = this.getSettings(),
          animation = this.elements.$swiperContainer.data(settings.attributes.dataAnimation);
    this.elements.$swiperContainer.find('.' + settings.classes.slideBackground).addClass(settings.classes.kenBurnsActive); // If there is an animation, get the container of the slide's inner contents and add the animation classes to it

    if (animation) {
      this.elements.$swiperContainer.find(settings.selectors.slideInnerContents).addClass(settings.classes.animated + ' ' + animation);
    }
  }

  async initSlider() {
    const $slider = this.elements.$swiperContainer,
          settings = this.getSettings(),
          elementSettings = this.getElementSettings(),
          animation = $slider.data(settings.attributes.dataAnimation);

    if (!$slider.length) {
      return;
    }

    if (1 >= this.getSlidesCount()) {
      return;
    }

    const Swiper = elementorFrontend.utils.swiper;
    this.swiper = await new Swiper($slider, this.getSwiperOptions()); // Expose the swiper instance in the frontend

    $slider.data('swiper', this.swiper); // The Ken Burns effect will only apply on the specific slides that toggled the effect ON,
    // since it depends on an additional class besides 'elementor-ken-burns--active'

    this.handleKenBurns();

    if (elementSettings.pause_on_hover) {
      this.togglePauseOnHover(true);
    }

    if (!animation) {
      return;
    }

    this.swiper.on('slideChangeTransitionStart', function () {
      const $sliderContent = $slider.find(settings.selectors.slideInnerContents);
      $sliderContent.removeClass(settings.classes.animated + ' ' + animation).hide();
    });
    this.swiper.on('slideChangeTransitionEnd', function () {
      const $currentSlide = $slider.find(settings.selectors.slideInnerContents);
      $currentSlide.show().addClass(settings.classes.animated + ' ' + animation);
    });
  }

  onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);

    if (2 > this.getSlidesCount()) {
      this.initSingleSlideAnimations();
      return;
    }

    this.initSlider();
  }

  getChangeableProperties() {
    return {
      pause_on_hover: 'pauseOnHover',
      pause_on_interaction: 'disableOnInteraction',
      autoplay_speed: 'delay',
      transition_speed: 'speed'
    };
  }

  updateSwiperOption(propertyName) {
    if (0 === propertyName.indexOf('width')) {
      this.swiper.update();
      return;
    }

    const elementSettings = this.getElementSettings(),
          newSettingValue = elementSettings[propertyName],
          changeableProperties = this.getChangeableProperties();
    let propertyToUpdate = changeableProperties[propertyName],
        valueToUpdate = newSettingValue; // Handle special cases where the value to update is not the value that the Swiper library accepts

    switch (propertyName) {
      case 'autoplay_speed':
        propertyToUpdate = 'autoplay';
        valueToUpdate = {
          delay: newSettingValue,
          disableOnInteraction: 'yes' === elementSettings.pause_on_interaction
        };
        break;

      case 'pause_on_hover':
        this.togglePauseOnHover('yes' === newSettingValue);
        break;

      case 'pause_on_interaction':
        valueToUpdate = 'yes' === newSettingValue;
        break;
    } // 'pause_on_hover' is implemented by the handler with event listeners, not the Swiper library


    if ('pause_on_hover' !== propertyName) {
      this.swiper.params[propertyToUpdate] = valueToUpdate;
    }

    this.swiper.update();
  }

  onElementChange(propertyName) {
    if (1 >= this.getSlidesCount()) {
      return;
    }

    const changeableProperties = this.getChangeableProperties();

    if (changeableProperties.hasOwnProperty(propertyName)) {
      this.updateSwiperOption(propertyName);
    }
  }

  onEditSettingsChange(propertyName) {
    if (1 >= this.getSlidesCount()) {
      return;
    }

    if ('activeItemIndex' === propertyName) {
      this.swiper.slideToLoop(this.getEditSettings('activeItemIndex') - 1);
    }
  }

}

exports.default = SlidesHandler;

/***/ })

}]);
//# sourceMappingURL=slides.6d3f738223ac9b3c9b7a.bundle.js.mapassets/js/carousel.6a71b6c6e34400c456a5.bundle.min.js000064400000011510150755004310015413 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[369],{2539:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class CarouselBase extends elementorModules.frontend.handlers.SwiperBase{getDefaultSettings(){return{selectors:{swiperContainer:".elementor-main-swiper",swiperSlide:".swiper-slide"},slidesPerView:{widescreen:3,desktop:3,laptop:3,tablet_extra:3,tablet:2,mobile_extra:2,mobile:1}}}getDefaultElements(){const e=this.getSettings("selectors"),t={$swiperContainer:this.$element.find(e.swiperContainer)};return t.$slides=t.$swiperContainer.find(e.swiperSlide),t}getEffect(){return this.getElementSettings("effect")}getDeviceSlidesPerView(e){const t="slides_per_view"+("desktop"===e?"":"_"+e);return Math.min(this.getSlidesCount(),+this.getElementSettings(t)||this.getSettings("slidesPerView")[e])}getSlidesPerView(e){return"slide"===this.getEffect()?this.getDeviceSlidesPerView(e):1}getDeviceSlidesToScroll(e){const t="slides_to_scroll"+("desktop"===e?"":"_"+e);return Math.min(this.getSlidesCount(),+this.getElementSettings(t)||1)}getSlidesToScroll(e){return"slide"===this.getEffect()?this.getDeviceSlidesToScroll(e):1}getSpaceBetween(e){let t="space_between";return e&&"desktop"!==e&&(t+="_"+e),this.getElementSettings(t).size||0}getSwiperOptions(){const e=this.getElementSettings(),t={grabCursor:!0,initialSlide:this.getInitialSlide(),slidesPerView:this.getSlidesPerView("desktop"),slidesPerGroup:this.getSlidesToScroll("desktop"),spaceBetween:this.getSpaceBetween(),loop:"yes"===e.loop,speed:e.speed,effect:this.getEffect(),preventClicksPropagation:!1,slideToClickedSlide:!0,handleElementorBreakpoints:!0};if(e.show_arrows&&(t.navigation={prevEl:".elementor-swiper-button-prev",nextEl:".elementor-swiper-button-next"}),e.pagination&&(t.pagination={el:".swiper-pagination",type:e.pagination,clickable:!0}),"cube"!==this.getEffect()){const e={},i=elementorFrontend.config.responsive.activeBreakpoints;Object.keys(i).forEach((t=>{e[i[t].value]={slidesPerView:this.getSlidesPerView(t),slidesPerGroup:this.getSlidesToScroll(t),spaceBetween:this.getSpaceBetween(t)}})),t.breakpoints=e}return!this.isEdit&&e.autoplay&&(t.autoplay={delay:e.autoplay_speed,disableOnInteraction:!!e.pause_on_interaction}),t}getDeviceBreakpointValue(e){if(!this.breakpointsDictionary){const e=elementorFrontend.config.responsive.activeBreakpoints;this.breakpointsDictionary={},Object.keys(e).forEach((t=>{this.breakpointsDictionary[t]=e[t].value}))}return this.breakpointsDictionary[e]}updateSpaceBetween(e){const t=e.match("space_between_(.*)"),i=t?t[1]:"desktop",s=this.getSpaceBetween(i);"desktop"!==i?this.swiper.params.breakpoints[this.getDeviceBreakpointValue(i)].spaceBetween=s:this.swiper.params.spaceBetween=s,this.swiper.params.spaceBetween=s,this.swiper.update()}async onInit(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments);const e=this.getElementSettings();if(1>=this.getSlidesCount())return;const t=elementorFrontend.utils.swiper;this.swiper=await new t(this.elements.$swiperContainer,this.getSwiperOptions()),"yes"===e.pause_on_hover&&this.togglePauseOnHover(!0),this.elements.$swiperContainer.data("swiper",this.swiper)}getChangeableProperties(){return{autoplay:"autoplay",pause_on_hover:"pauseOnHover",pause_on_interaction:"disableOnInteraction",autoplay_speed:"delay",speed:"speed",width:"width"}}updateSwiperOption(e){if(0===e.indexOf("width"))return void this.swiper.update();const t=this.getElementSettings(),i=t[e];let s=this.getChangeableProperties()[e],n=i;switch(e){case"autoplay":n=!!i&&{delay:t.autoplay_speed,disableOnInteraction:"yes"===t.pause_on_interaction};break;case"autoplay_speed":s="autoplay",n={delay:i,disableOnInteraction:"yes"===t.pause_on_interaction};break;case"pause_on_hover":this.togglePauseOnHover("yes"===i);break;case"pause_on_interaction":n="yes"===i}"pause_on_hover"!==e&&(this.swiper.params[s]=n),this.swiper.update()}onElementChange(e){if(1>=this.getSlidesCount())return;if(0===e.indexOf("width"))return this.swiper.update(),void(this.thumbsSwiper&&this.thumbsSwiper.update());if(0===e.indexOf("space_between"))return void this.updateSpaceBetween(e);this.getChangeableProperties().hasOwnProperty(e)&&this.updateSwiperOption(e)}onEditSettingsChange(e){1>=this.getSlidesCount()||"activeItemIndex"===e&&this.swiper.slideToLoop(this.getEditSettings("activeItemIndex")-1)}}t.default=CarouselBase},1507:(e,t,i)=>{"use strict";var s=i(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=s(i(2539));class TestimonialCarousel extends n.default{getDefaultSettings(){const e=super.getDefaultSettings();return e.slidesPerView={desktop:1},Object.keys(elementorFrontend.config.responsive.activeBreakpoints).forEach((t=>{e.slidesPerView[t]=1})),e.loop&&(e.loopedSlides=this.getSlidesCount()),e}getEffect(){return"slide"}}t.default=TestimonialCarousel}}]);assets/js/jszip.vendor.8911033537a0c9d6e5f8.bundle.js000064400000302070150755004310015412 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["jszip.vendor"],{

/***/ "../node_modules/jszip/dist/jszip.min.js":
/*!***********************************************!*\
  !*** ../node_modules/jszip/dist/jszip.min.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/*!

JSZip v3.6.0 - A JavaScript class for generating and reading zip files
<http://stuartk.com/jszip>

(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.

JSZip uses the library pako released under the MIT license :
https://github.com/nodeca/pako/blob/master/LICENSE
*/

!function(e){if(true)module.exports=e();else {}}(function(){return function s(a,o,u){function h(r,e){if(!o[r]){if(!a[r]){var t=undefined;if(!e&&t)return require(r,!0);if(f)return f(r,!0);var n=new Error("Cannot find module '"+r+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return h(t||e)},i,i.exports,s,a,o,u)}return o[r].exports}for(var f=undefined,e=0;e<u.length;e++)h(u[e]);return h}({1:[function(l,t,n){(function(r){!function(e){"object"==typeof n&&void 0!==t?t.exports=e():("undefined"!=typeof window?window:void 0!==r?r:"undefined"!=typeof self?self:this).JSZip=e()}(function(){return function s(a,o,u){function h(t,e){if(!o[t]){if(!a[t]){var r="function"==typeof l&&l;if(!e&&r)return r(t,!0);if(f)return f(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[t]={exports:{}};a[t][0].call(i.exports,function(e){return h(a[t][1][e]||e)},i,i.exports,s,a,o,u)}return o[t].exports}for(var f="function"==typeof l&&l,e=0;e<u.length;e++)h(u[e]);return h}({1:[function(l,t,n){(function(r){!function(e){"object"==typeof n&&void 0!==t?t.exports=e():("undefined"!=typeof window?window:void 0!==r?r:"undefined"!=typeof self?self:this).JSZip=e()}(function(){return function s(a,o,u){function h(t,e){if(!o[t]){if(!a[t]){var r="function"==typeof l&&l;if(!e&&r)return r(t,!0);if(f)return f(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[t]={exports:{}};a[t][0].call(i.exports,function(e){return h(a[t][1][e]||e)},i,i.exports,s,a,o,u)}return o[t].exports}for(var f="function"==typeof l&&l,e=0;e<u.length;e++)h(u[e]);return h}({1:[function(l,t,n){(function(r){!function(e){"object"==typeof n&&void 0!==t?t.exports=e():("undefined"!=typeof window?window:void 0!==r?r:"undefined"!=typeof self?self:this).JSZip=e()}(function(){return function s(a,o,u){function h(t,e){if(!o[t]){if(!a[t]){var r="function"==typeof l&&l;if(!e&&r)return r(t,!0);if(f)return f(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[t]={exports:{}};a[t][0].call(i.exports,function(e){return h(a[t][1][e]||e)},i,i.exports,s,a,o,u)}return o[t].exports}for(var f="function"==typeof l&&l,e=0;e<u.length;e++)h(u[e]);return h}({1:[function(l,t,n){(function(r){!function(e){"object"==typeof n&&void 0!==t?t.exports=e():("undefined"!=typeof window?window:void 0!==r?r:"undefined"!=typeof self?self:this).JSZip=e()}(function(){return function s(a,o,u){function h(t,e){if(!o[t]){if(!a[t]){var r="function"==typeof l&&l;if(!e&&r)return r(t,!0);if(f)return f(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[t]={exports:{}};a[t][0].call(i.exports,function(e){return h(a[t][1][e]||e)},i,i.exports,s,a,o,u)}return o[t].exports}for(var f="function"==typeof l&&l,e=0;e<u.length;e++)h(u[e]);return h}({1:[function(l,t,n){(function(r){!function(e){"object"==typeof n&&void 0!==t?t.exports=e():("undefined"!=typeof window?window:void 0!==r?r:"undefined"!=typeof self?self:this).JSZip=e()}(function(){return function s(a,o,u){function h(t,e){if(!o[t]){if(!a[t]){var r="function"==typeof l&&l;if(!e&&r)return r(t,!0);if(f)return f(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[t]={exports:{}};a[t][0].call(i.exports,function(e){return h(a[t][1][e]||e)},i,i.exports,s,a,o,u)}return o[t].exports}for(var f="function"==typeof l&&l,e=0;e<u.length;e++)h(u[e]);return h}({1:[function(e,t,r){"use strict";var c=e("./utils"),l=e("./support"),p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.encode=function(e){for(var t,r,n,i,s,a,o,u=[],h=0,f=e.length,l=f,d="string"!==c.getTypeOf(e);h<e.length;)l=f-h,n=d?(t=e[h++],r=h<f?e[h++]:0,h<f?e[h++]:0):(t=e.charCodeAt(h++),r=h<f?e.charCodeAt(h++):0,h<f?e.charCodeAt(h++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<l?(15&r)<<2|n>>6:64,o=2<l?63&n:64,u.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return u.join("")},r.decode=function(e){var t,r,n,i,s,a,o=0,u=0;if("data:"===e.substr(0,"data:".length))throw new Error("Invalid base64 input, it looks like a data url.");var h,f=3*(e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error("Invalid base64 input, bad content length.");for(h=l.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),h[u++]=t,64!==s&&(h[u++]=r),64!==a&&(h[u++]=n);return h}},{"./support":30,"./utils":32}],2:[function(e,t,r){"use strict";var n=e("./external"),i=e("./stream/DataWorker"),s=e("./stream/Crc32Probe"),a=e("./stream/DataLengthProbe");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),t=this;return e.on("end",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a("uncompressedSize")).pipe(t.compressWorker(r)).pipe(new a("compressedSize")).withStreamInfo("compression",t)},t.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(e,t,r){"use strict";var n=e("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(e){return new n("STORE compression")},uncompressWorker:function(){return new n("STORE decompression")}},r.DEFLATE=e("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(e,t,r){"use strict";var n=e("./utils"),a=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?"string"!==n.getTypeOf(e)?function(e,t,r){var n=a,i=0+r;e^=-1;for(var s=0;s<i;s++)e=e>>>8^n[255&(e^t[s])];return-1^e}(0|t,e,e.length):function(e,t,r){var n=a,i=0+r;e^=-1;for(var s=0;s<i;s++)e=e>>>8^n[255&(e^t.charCodeAt(s))];return-1^e}(0|t,e,e.length):0}},{"./utils":32}],5:[function(e,t,r){"use strict";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){"use strict";var n;n="undefined"!=typeof Promise?Promise:e("lie"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,i=e("pako"),s=e("./utils"),a=e("./stream/GenericWorker"),o=n?"uint8array":"array";function u(e,t){a.call(this,"FlateWorker/"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic="\b\0",s.inherits(u,a),u.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,e.data),!1)},u.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},u.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},u.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(e){return new u("Deflate",e)},r.uncompressWorker=function(){return new u("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(e,t,r){"use strict";function I(e,t){var r,n="";for(r=0;r<t;r++)n+=String.fromCharCode(255&e),e>>>=8;return n}function i(e,t,r,n,i,s){var a,o,u=e.file,h=e.compression,f=s!==B.utf8encode,l=O.transformTo("string",s(u.name)),d=O.transformTo("string",B.utf8encode(u.name)),c=u.comment,p=O.transformTo("string",s(c)),m=O.transformTo("string",B.utf8encode(c)),_=d.length!==u.name.length,g=m.length!==c.length,v="",b="",w="",y=u.dir,k=u.date,x={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(x.crc32=e.crc32,x.compressedSize=e.compressedSize,x.uncompressedSize=e.uncompressedSize);var S=0;t&&(S|=8),f||!_&&!g||(S|=2048);var z,E=0,C=0;y&&(E|=16),"UNIX"===i?(C=798,E|=((z=u.unixPermissions)||(z=y?16893:33204),(65535&z)<<16)):(C=20,E|=63&(u.dosPermissions||0)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v+="up"+I((b=I(1,1)+I(T(l),4)+d).length,2)+b),g&&(v+="uc"+I((w=I(1,1)+I(T(p),4)+m).length,2)+w);var A="";return A+="\n\0",A+=I(S,2),A+=h.magic,A+=I(a,2),A+=I(o,2),A+=I(x.crc32,4),A+=I(x.compressedSize,4),A+=I(x.uncompressedSize,4),A+=I(l.length,2),A+=I(v.length,2),{fileRecord:R.LOCAL_FILE_HEADER+A+l+v,dirRecord:R.CENTRAL_FILE_HEADER+I(C,2)+A+I(p.length,2)+"\0\0\0\0"+I(E,4)+I(n,4)+l+v+p}}var O=e("../utils"),s=e("../stream/GenericWorker"),B=e("../utf8"),T=e("../crc32"),R=e("../signature");function n(e,t,r,n){s.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}O.inherits(n,s),n.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,s.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},n.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=i(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},n.prototype.closedSource=function(e){this.accumulate=!1;var t,r=this.streamFiles&&!e.file.dir,n=i(e,r,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(n.dirRecord),r)this.push({data:(t=e,R.DATA_DESCRIPTOR+I(t.crc32,4)+I(t.compressedSize,4)+I(t.uncompressedSize,4)),meta:{percent:100}});else for(this.push({data:n.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},n.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t<this.dirRecords.length;t++)this.push({data:this.dirRecords[t],meta:{percent:100}});var r,n,i,s,a,o,u=this.bytesWritten-e,h=(r=this.dirRecords.length,n=u,i=e,s=this.zipComment,a=this.encodeFileName,o=O.transformTo("string",a(s)),R.CENTRAL_DIRECTORY_END+"\0\0\0\0"+I(r,2)+I(r,2)+I(n,4)+I(i,4)+I(o.length,2)+o);this.push({data:h,meta:{percent:100}})},n.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},n.prototype.registerPrevious=function(e){this._sources.push(e);var t=this;return e.on("data",function(e){t.processChunk(e)}),e.on("end",function(){t.closedSource(t.previous.streamInfo),t._sources.length?t.prepareNextSource():t.end()}),e.on("error",function(e){t.error(e)}),this},n.prototype.resume=function(){return!!s.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},n.prototype.error=function(e){var t=this._sources;if(!s.prototype.error.call(this,e))return!1;for(var r=0;r<t.length;r++)try{t[r].error(e)}catch(e){}return!0},n.prototype.lock=function(){s.prototype.lock.call(this);for(var e=this._sources,t=0;t<e.length;t++)e[t].lock()},t.exports=n},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(e,t,r){"use strict";var h=e("../compressions"),n=e("./ZipFileWorker");r.generateWorker=function(e,a,t){var o=new n(a.streamFiles,t,a.platform,a.encodeFileName),u=0;try{e.forEach(function(e,t){u++;var r=function(e,t){var r=e||t,n=h[r];if(!n)throw new Error(r+" is not a valid compression method !");return n}(t.options.compression,a.compression),n=t.options.compressionOptions||a.compressionOptions||{},i=t.dir,s=t.date;t._compressWorker(r,n).withStreamInfo("file",{name:e,dir:i,date:s,comment:t.comment||"",unixPermissions:t.unixPermissions,dosPermissions:t.dosPermissions}).pipe(o)}),o.entriesCount=u}catch(e){o.error(e)}return o}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(e,t,r){"use strict";function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files={},this.comment=null,this.root="",this.clone=function(){var e=new n;for(var t in this)"function"!=typeof this[t]&&(e[t]=this[t]);return e}}(n.prototype=e("./object")).loadAsync=e("./load"),n.support=e("./support"),n.defaults=e("./defaults"),n.version="3.5.0",n.loadAsync=function(e,t){return(new n).loadAsync(e,t)},n.external=e("./external"),t.exports=n},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(e,t,r){"use strict";var n=e("./utils"),i=e("./external"),o=e("./utf8"),u=e("./zipEntries"),s=e("./stream/Crc32Probe"),h=e("./nodejsUtils");function f(n){return new i.Promise(function(e,t){var r=n.decompressed.getContentWorker().pipe(new s);r.on("error",function(e){t(e)}).on("end",function(){r.streamInfo.crc32!==n.decompressed.crc32?t(new Error("Corrupted zip : CRC32 mismatch")):e()}).resume()})}t.exports=function(e,s){var a=this;return s=n.extend(s||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:o.utf8decode}),h.isNode&&h.isStream(e)?i.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):n.prepareContent("the loaded zip file",e,!0,s.optimizedBinaryString,s.base64).then(function(e){var t=new u(s);return t.load(e),t}).then(function(e){var t=[i.Promise.resolve(e)],r=e.files;if(s.checkCRC32)for(var n=0;n<r.length;n++)t.push(f(r[n]));return i.Promise.all(t)}).then(function(e){for(var t=e.shift(),r=t.files,n=0;n<r.length;n++){var i=r[n];a.file(i.fileNameStr,i.decompressed,{binary:!0,optimizedBinaryString:!0,date:i.date,dir:i.dir,comment:i.fileCommentStr.length?i.fileCommentStr:null,unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions,createFolders:s.createFolders})}return t.zipComment.length&&(a.comment=t.zipComment),a})}},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(e,t,r){"use strict";var n=e("../utils"),i=e("../stream/GenericWorker");function s(e,t){i.call(this,"Nodejs stream input adapter for "+e),this._upstreamEnded=!1,this._bindStream(t)}n.inherits(s,i),s.prototype._bindStream=function(e){var t=this;(this._stream=e).pause(),e.on("data",function(e){t.push({data:e,meta:{percent:0}})}).on("error",function(e){t.isPaused?this.generatedError=e:t.error(e)}).on("end",function(){t.isPaused?t._upstreamEnded=!0:t.end()})},s.prototype.pause=function(){return!!i.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},t.exports=s},{"../stream/GenericWorker":28,"../utils":32}],13:[function(e,t,r){"use strict";var i=e("readable-stream").Readable;function n(e,t,r){i.call(this,t),this._helper=e;var n=this;e.on("data",function(e,t){n.push(e)||n._helper.pause(),r&&r(t)}).on("error",function(e){n.emit("error",e)}).on("end",function(){n.push(null)})}e("../utils").inherits(n,i),n.prototype._read=function(){this._helper.resume()},t.exports=n},{"../utils":32,"readable-stream":16}],14:[function(e,t,r){"use strict";t.exports={isNode:"undefined"!=typeof Buffer,newBufferFrom:function(e,t){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(e,t);if("number"==typeof e)throw new Error('The "data" argument must not be a number');return new Buffer(e,t)},allocBuffer:function(e){if(Buffer.alloc)return Buffer.alloc(e);var t=new Buffer(e);return t.fill(0),t},isBuffer:function(e){return Buffer.isBuffer(e)},isStream:function(e){return e&&"function"==typeof e.on&&"function"==typeof e.pause&&"function"==typeof e.resume}}},{}],15:[function(e,t,r){"use strict";function s(e,t,r){var n,i=f.getTypeOf(t),s=f.extend(r||{},d);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),"string"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(e=h(e)),s.createFolders&&(n=function(e){"/"===e.slice(-1)&&(e=e.substring(0,e.length-1));var t=e.lastIndexOf("/");return 0<t?e.substring(0,t):""}(e))&&g.call(this,n,!0);var a,o="string"===i&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!o),(t instanceof c&&0===t.uncompressedSize||s.dir||!t||0===t.length)&&(s.base64=!1,s.binary=!0,t="",s.compression="STORE",i="string"),a=t instanceof c||t instanceof l?t:m.isNode&&m.isStream(t)?new _(e,t):f.prepareContent(e,t,s.binary,s.optimizedBinaryString,s.base64);var u=new p(e,a,s);this.files[e]=u}function h(e){return"/"!==e.slice(-1)&&(e+="/"),e}var i=e("./utf8"),f=e("./utils"),l=e("./stream/GenericWorker"),a=e("./stream/StreamHelper"),d=e("./defaults"),c=e("./compressedObject"),p=e("./zipObject"),o=e("./generate"),m=e("./nodejsUtils"),_=e("./nodejs/NodejsStreamInputAdapter"),g=function(e,t){return t=void 0!==t?t:d.createFolders,e=h(e),this.files[e]||s.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function u(e){return"[object RegExp]"===Object.prototype.toString.call(e)}var n={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(e){var t,r,n;for(t in this.files)this.files.hasOwnProperty(t)&&(n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n))},filter:function(r){var n=[];return this.forEach(function(e,t){r(e,t)&&n.push(t)}),n},file:function(e,t,r){if(1!==arguments.length)return e=this.root+e,s.call(this,e,t,r),this;if(u(e)){var n=e;return this.filter(function(e,t){return!t.dir&&n.test(e)})}var i=this.files[this.root+e];return i&&!i.dir?i:null},folder:function(r){if(!r)return this;if(u(r))return this.filter(function(e,t){return t.dir&&r.test(e)});var e=this.root+r,t=g.call(this,e),n=this.clone();return n.root=t.name,n},remove:function(r){r=this.root+r;var e=this.files[r];if(e||("/"!==r.slice(-1)&&(r+="/"),e=this.files[r]),e&&!e.dir)delete this.files[r];else for(var t=this.filter(function(e,t){return t.name.slice(0,r.length)===r}),n=0;n<t.length;n++)delete this.files[t[n].name];return this},generate:function(e){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(e){var t,r={};try{if((r=f.extend(e||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:i.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),"binarystring"===r.type&&(r.type="string"),!r.type)throw new Error("No output type specified.");f.checkSupport(r.type),"darwin"!==r.platform&&"freebsd"!==r.platform&&"linux"!==r.platform&&"sunos"!==r.platform||(r.platform="UNIX"),"win32"===r.platform&&(r.platform="DOS");var n=r.comment||this.comment||"";t=o.generateWorker(this,r,n)}catch(e){(t=new l("error")).error(e)}return new a(t,r.type||"string",r.mimeType)},generateAsync:function(e,t){return this.generateInternalStream(e).accumulate(t)},generateNodeStream:function(e,t){return(e=e||{}).type||(e.type="nodebuffer"),this.generateInternalStream(e).toNodejsStream(t)}};t.exports=n},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(e,t,r){t.exports=e("stream")},{stream:void 0}],17:[function(e,t,r){"use strict";var n=e("./DataReader");function i(e){n.call(this,e);for(var t=0;t<this.data.length;t++)e[t]=255&e[t]}e("../utils").inherits(i,n),i.prototype.byteAt=function(e){return this.data[this.zero+e]},i.prototype.lastIndexOfSignature=function(e){for(var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===t&&this.data[s+1]===r&&this.data[s+2]===n&&this.data[s+3]===i)return s-this.zero;return-1},i.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),i=e.charCodeAt(3),s=this.readData(4);return t===s[0]&&r===s[1]&&n===s[2]&&i===s[3]},i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./DataReader":18}],18:[function(e,t,r){"use strict";var n=e("../utils");function i(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length<this.zero+e||e<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+e+"). Corrupted zip ?")},setIndex:function(e){this.checkIndex(e),this.index=e},skip:function(e){this.setIndex(this.index+e)},byteAt:function(e){},readInt:function(e){var t,r=0;for(this.checkOffset(e),t=this.index+e-1;t>=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo("string",this.readData(e))},readData:function(e){},lastIndexOfSignature:function(e){},readAndCheckSignature:function(e){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=i},{"../utils":32}],19:[function(e,t,r){"use strict";var n=e("./Uint8ArrayReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(e,t,r){"use strict";var n=e("./DataReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},i.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},i.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},i.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./DataReader":18}],21:[function(e,t,r){"use strict";var n=e("./ArrayReader");function i(e){n.call(this,e)}e("../utils").inherits(i,n),i.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=i},{"../utils":32,"./ArrayReader":17}],22:[function(e,t,r){"use strict";var n=e("../utils"),i=e("../support"),s=e("./ArrayReader"),a=e("./StringReader"),o=e("./NodeBufferReader"),u=e("./Uint8ArrayReader");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),"string"!==t||i.uint8array?"nodebuffer"===t?new o(e):i.uint8array?new u(n.transformTo("uint8array",e)):new s(n.transformTo("array",e)):new a(e)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(e,t,r){"use strict";r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b"},{}],24:[function(e,t,r){"use strict";var n=e("./GenericWorker"),i=e("../utils");function s(e){n.call(this,"ConvertWorker to "+e),this.destType=e}i.inherits(s,n),s.prototype.processChunk=function(e){this.push({data:i.transformTo(this.destType,e.data),meta:e.meta})},t.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(e,t,r){"use strict";var n=e("./GenericWorker"),i=e("../crc32");function s(){n.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}e("../utils").inherits(s,n),s.prototype.processChunk=function(e){this.streamInfo.crc32=i(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(e,t,r){"use strict";var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataLengthProbe for "+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(s,i),s.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}i.prototype.processChunk.call(this,e)},t.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(e,t,r){"use strict";var n=e("../utils"),i=e("./GenericWorker");function s(e){i.call(this,"DataWorker");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,e.then(function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()},function(e){t.error(e)})}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":e=this.data.substring(this.index,t);break;case"uint8array":e=this.data.subarray(this.index,t);break;case"array":case"nodebuffer":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(e,t,r){"use strict";function n(e){this.name=e||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit("data",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit("error",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit("error",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r<this._listeners[e].length;r++)this._listeners[e][r].call(this,t)},pipe:function(e){return e.registerPrevious(this)},registerPrevious:function(e){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.streamInfo=e.streamInfo,this.mergeStreamInfo(),this.previous=e;var t=this;return e.on("data",function(e){t.processChunk(e)}),e.on("end",function(){t.end()}),e.on("error",function(e){t.error(e)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var e=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),e=!0),this.previous&&this.previous.resume(),!e},flush:function(){},processChunk:function(e){this.push(e)},withStreamInfo:function(e,t){return this.extraStreamInfo[e]=t,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var e in this.extraStreamInfo)this.extraStreamInfo.hasOwnProperty(e)&&(this.streamInfo[e]=this.extraStreamInfo[e])},lock:function(){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var e="Worker "+this.name;return this.previous?this.previous+" -> "+e:e}},t.exports=n},{}],29:[function(e,t,r){"use strict";var h=e("../utils"),i=e("./ConvertWorker"),s=e("./GenericWorker"),f=e("../base64"),n=e("../support"),a=e("../external"),o=null;if(n.nodestream)try{o=e("../nodejs/NodejsStreamOutputAdapter")}catch(e){}function u(e,t,r){var n=t;switch(t){case"blob":case"arraybuffer":n="uint8array";break;case"base64":n="string"}try{this._internalType=n,this._outputType=t,this._mimeType=r,h.checkSupport(n),this._worker=e.pipe(new i(n)),e.lock()}catch(e){this._worker=new s("error"),this._worker.error(e)}}u.prototype={accumulate:function(e){return o=this,u=e,new a.Promise(function(t,r){var n=[],i=o._internalType,s=o._outputType,a=o._mimeType;o.on("data",function(e,t){n.push(e),u&&u(t)}).on("error",function(e){n=[],r(e)}).on("end",function(){try{var e=function(e,t,r){switch(e){case"blob":return h.newBlob(h.transformTo("arraybuffer",t),r);case"base64":return f.encode(t);default:return h.transformTo(e,t)}}(s,function(e,t){var r,n=0,i=null,s=0;for(r=0;r<t.length;r++)s+=t[r].length;switch(e){case"string":return t.join("");case"array":return Array.prototype.concat.apply([],t);case"uint8array":for(i=new Uint8Array(s),r=0;r<t.length;r++)i.set(t[r],n),n+=t[r].length;return i;case"nodebuffer":return Buffer.concat(t);default:throw new Error("concat : unsupported type '"+e+"'")}}(i,n),a);t(e)}catch(e){r(e)}n=[]}).resume()});var o,u},on:function(e,t){var r=this;return"data"===e?this._worker.on(e,function(e){t.call(r,e.data,e.meta)}):this._worker.on(e,function(){h.delay(t,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(e){if(h.checkSupport("nodestream"),"nodebuffer"!==this._outputType)throw new Error(this._outputType+" is not supported by this method");return new o(this,{objectMode:"nodebuffer"!==this._outputType},e)}},t.exports=u},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(e,t,r){"use strict";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array,r.nodebuffer="undefined"!=typeof Buffer,r.uint8array="undefined"!=typeof Uint8Array,"undefined"==typeof ArrayBuffer)r.blob=!1;else{var n=new ArrayBuffer(0);try{r.blob=0===new Blob([n],{type:"application/zip"}).size}catch(e){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);i.append(n),r.blob=0===i.getBlob("application/zip").size}catch(e){r.blob=!1}}}try{r.nodestream=!!e("readable-stream").Readable}catch(e){r.nodestream=!1}},{"readable-stream":16}],31:[function(e,t,s){"use strict";for(var o=e("./utils"),u=e("./support"),r=e("./nodejsUtils"),n=e("./stream/GenericWorker"),h=new Array(256),i=0;i<256;i++)h[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;function a(){n.call(this,"utf-8 decode"),this.leftOver=null}function f(){n.call(this,"utf-8 encode")}h[254]=h[254]=1,s.utf8encode=function(e){return u.nodebuffer?r.newBufferFrom(e,"utf-8"):function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=u.uint8array?new Uint8Array(o):new Array(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t}(e)},s.utf8decode=function(e){return u.nodebuffer?o.transformTo("nodebuffer",e).toString("utf-8"):function(e){var t,r,n,i,s=e.length,a=new Array(2*s);for(t=r=0;t<s;)if((n=e[t++])<128)a[r++]=n;else if(4<(i=h[n]))a[r++]=65533,t+=i-1;else{for(n&=2===i?31:3===i?15:7;1<i&&t<s;)n=n<<6|63&e[t++],i--;1<i?a[r++]=65533:n<65536?a[r++]=n:(n-=65536,a[r++]=55296|n>>10&1023,a[r++]=56320|1023&n)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(e=o.transformTo(u.uint8array?"uint8array":"array",e))},o.inherits(a,n),a.prototype.processChunk=function(e){var t=o.transformTo(u.uint8array?"uint8array":"array",e.data);if(this.leftOver&&this.leftOver.length){if(u.uint8array){var r=t;(t=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),t.set(r,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var n=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+h[e[r]]>t?r:t}(t),i=t;n!==t.length&&(u.uint8array?(i=t.subarray(0,n),this.leftOver=t.subarray(n,t.length)):(i=t.slice(0,n),this.leftOver=t.slice(n,t.length))),this.push({data:s.utf8decode(i),meta:e.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(f,n),f.prototype.processChunk=function(e){this.push({data:s.utf8encode(e.data),meta:e.meta})},s.Utf8EncodeWorker=f},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(e,t,o){"use strict";var u=e("./support"),h=e("./base64"),r=e("./nodejsUtils"),n=e("set-immediate-shim"),f=e("./external");function i(e){return e}function l(e,t){for(var r=0;r<e.length;++r)t[r]=255&e.charCodeAt(r);return t}o.newBlob=function(t,r){o.checkSupport("blob");try{return new Blob([t],{type:r})}catch(e){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return n.append(t),n.getBlob(r)}catch(e){throw new Error("Bug : can't construct the Blob.")}}};var s={stringifyByChunk:function(e,t,r){var n=[],i=0,s=e.length;if(s<=r)return String.fromCharCode.apply(null,e);for(;i<s;)"array"===t||"nodebuffer"===t?n.push(String.fromCharCode.apply(null,e.slice(i,Math.min(i+r,s)))):n.push(String.fromCharCode.apply(null,e.subarray(i,Math.min(i+r,s)))),i+=r;return n.join("")},stringifyByChar:function(e){for(var t="",r=0;r<e.length;r++)t+=String.fromCharCode(e[r]);return t},applyCanBeUsed:{uint8array:function(){try{return u.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(e){return!1}}(),nodebuffer:function(){try{return u.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(e){return!1}}()}};function a(e){var t=65536,r=o.getTypeOf(e),n=!0;if("uint8array"===r?n=s.applyCanBeUsed.uint8array:"nodebuffer"===r&&(n=s.applyCanBeUsed.nodebuffer),n)for(;1<t;)try{return s.stringifyByChunk(e,r,t)}catch(e){t=Math.floor(t/2)}return s.stringifyByChar(e)}function d(e,t){for(var r=0;r<e.length;r++)t[r]=e[r];return t}o.applyFromCharCode=a;var c={};c.string={string:i,array:function(e){return l(e,new Array(e.length))},arraybuffer:function(e){return c.string.uint8array(e).buffer},uint8array:function(e){return l(e,new Uint8Array(e.length))},nodebuffer:function(e){return l(e,r.allocBuffer(e.length))}},c.array={string:a,array:i,arraybuffer:function(e){return new Uint8Array(e).buffer},uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(e)}},c.arraybuffer={string:function(e){return a(new Uint8Array(e))},array:function(e){return d(new Uint8Array(e),new Array(e.byteLength))},arraybuffer:i,uint8array:function(e){return new Uint8Array(e)},nodebuffer:function(e){return r.newBufferFrom(new Uint8Array(e))}},c.uint8array={string:a,array:function(e){return d(e,new Array(e.length))},arraybuffer:function(e){return e.buffer},uint8array:i,nodebuffer:function(e){return r.newBufferFrom(e)}},c.nodebuffer={string:a,array:function(e){return d(e,new Array(e.length))},arraybuffer:function(e){return c.nodebuffer.uint8array(e).buffer},uint8array:function(e){return d(e,new Uint8Array(e.length))},nodebuffer:i},o.transformTo=function(e,t){if(t=t||"",!e)return t;o.checkSupport(e);var r=o.getTypeOf(t);return c[r][e](t)},o.getTypeOf=function(e){return"string"==typeof e?"string":"[object Array]"===Object.prototype.toString.call(e)?"array":u.nodebuffer&&r.isBuffer(e)?"nodebuffer":u.uint8array&&e instanceof Uint8Array?"uint8array":u.arraybuffer&&e instanceof ArrayBuffer?"arraybuffer":void 0},o.checkSupport=function(e){if(!u[e.toLowerCase()])throw new Error(e+" is not supported by this platform")},o.MAX_VALUE_16BITS=65535,o.MAX_VALUE_32BITS=-1,o.pretty=function(e){var t,r,n="";for(r=0;r<(e||"").length;r++)n+="\\x"+((t=e.charCodeAt(r))<16?"0":"")+t.toString(16).toUpperCase();return n},o.delay=function(e,t,r){n(function(){e.apply(r||null,t||[])})},o.inherits=function(e,t){function r(){}r.prototype=t.prototype,e.prototype=new r},o.extend=function(){var e,t,r={};for(e=0;e<arguments.length;e++)for(t in arguments[e])arguments[e].hasOwnProperty(t)&&void 0===r[t]&&(r[t]=arguments[e][t]);return r},o.prepareContent=function(n,e,i,s,a){return f.Promise.resolve(e).then(function(n){return u.blob&&(n instanceof Blob||-1!==["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(n)))&&"undefined"!=typeof FileReader?new f.Promise(function(t,r){var e=new FileReader;e.onload=function(e){t(e.target.result)},e.onerror=function(e){r(e.target.error)},e.readAsArrayBuffer(n)}):n}).then(function(e){var t,r=o.getTypeOf(e);return r?("arraybuffer"===r?e=o.transformTo("uint8array",e):"string"===r&&(a?e=h.decode(e):i&&!0!==s&&(e=l(t=e,u.uint8array?new Uint8Array(t.length):new Array(t.length)))),e):f.Promise.reject(new Error("Can't read the data of '"+n+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,"set-immediate-shim":54}],33:[function(e,t,r){"use strict";var n=e("./reader/readerFor"),i=e("./utils"),s=e("./signature"),a=e("./zipEntry"),o=(e("./utf8"),e("./support"));function u(e){this.files=[],this.loadOptions=e}u.prototype={checkSignature:function(e){if(!this.reader.readAndCheckSignature(e)){this.reader.index-=4;var t=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+i.pretty(t)+", expected "+i.pretty(e)+")")}},isSignature:function(e,t){var r=this.reader.index;this.reader.setIndex(e);var n=this.reader.readString(4)===t;return this.reader.setIndex(r),n},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var e=this.reader.readData(this.zipCommentLength),t=o.uint8array?"uint8array":"array",r=i.transformTo(t,e);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var e,t,r,n=this.zip64EndOfCentralSize-44;0<n;)e=this.reader.readInt(2),t=this.reader.readInt(4),r=this.reader.readData(t),this.zip64ExtensibleData[e]={id:e,length:t,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var e,t;for(e=0;e<this.files.length;e++)t=this.files[e],this.reader.setIndex(t.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),t.readLocalPart(this.reader),t.handleUTF8(),t.processAttributes()},readCentralDir:function(){var e;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(e=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(e);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var e=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(e<0)throw this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error("Corrupted zip: can't find end of central directory"):new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");this.reader.setIndex(e);var t=e;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===i.MAX_VALUE_16BITS||this.diskWithCentralDirStart===i.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===i.MAX_VALUE_16BITS||this.centralDirRecords===i.MAX_VALUE_16BITS||this.centralDirSize===i.MAX_VALUE_32BITS||this.centralDirOffset===i.MAX_VALUE_32BITS){if(this.zip64=!0,(e=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(e),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var n=t-r;if(0<n)this.isSignature(t,s.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error("Corrupted zip: missing "+Math.abs(n)+" bytes.")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=u},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utf8":31,"./utils":32,"./zipEntry":34}],34:[function(e,t,r){"use strict";var n=e("./reader/readerFor"),s=e("./utils"),i=e("./compressedObject"),a=e("./crc32"),o=e("./utf8"),u=e("./compressions"),h=e("./support");function f(e,t){this.options=e,this.loadOptions=t}f.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(null===(t=function(e){for(var t in u)if(u.hasOwnProperty(t)&&u[t].magic===e)return u[t];return null}(this.compressionMethod)))throw new Error("Corrupted zip : compression "+s.pretty(this.compressionMethod)+" unknown (inner file : "+s.transformTo("string",this.fileName)+")");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==e&&(this.dosPermissions=63&this.externalFileAttributes),3==e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(e){if(this.extraFields[1]){var t=n(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=t.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=t.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=t.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=t.readInt(4))}},readExtraFields:function(e){var t,r,n,i=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index+4<i;)t=e.readInt(2),r=e.readInt(2),n=e.readData(r),this.extraFields[t]={id:t,length:r,value:n};e.setIndex(i)},handleUTF8:function(){var e=h.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var t=this.findExtraFieldUnicodePath();if(null!==t)this.fileNameStr=t;else{var r=s.transformTo(e,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var n=this.findExtraFieldUnicodeComment();if(null!==n)this.fileCommentStr=n;else{var i=s.transformTo(e,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(i)}}},findExtraFieldUnicodePath:function(){var e=this.extraFields[28789];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileName)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null},findExtraFieldUnicodeComment:function(){var e=this.extraFields[25461];if(e){var t=n(e.value);return 1!==t.readInt(1)?null:a(this.fileComment)!==t.readInt(4)?null:o.utf8decode(t.readData(e.length-5))}return null}},t.exports=f},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(e,t,r){"use strict";function n(e,t,r){this.name=e,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=t,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=e("./stream/StreamHelper"),i=e("./stream/DataWorker"),a=e("./utf8"),o=e("./compressedObject"),u=e("./stream/GenericWorker");n.prototype={internalStream:function(e){var t=null,r="string";try{if(!e)throw new Error("No output type specified.");var n="string"===(r=e.toLowerCase())||"text"===r;"binarystring"!==r&&"text"!==r||(r="string"),t=this._decompressWorker();var i=!this._dataBinary;i&&!n&&(t=t.pipe(new a.Utf8EncodeWorker)),!i&&n&&(t=t.pipe(new a.Utf8DecodeWorker))}catch(e){(t=new u("error")).error(e)}return new s(t,r,"")},async:function(e,t){return this.internalStream(e).accumulate(t)},nodeStream:function(e,t){return this.internalStream(e||"nodebuffer").toNodejsStream(t)},_compressWorker:function(e,t){if(this._data instanceof o&&this._data.compression.magic===e.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,e,t)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof u?this._data:new i(this._data)}};for(var h=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],f=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},l=0;l<h.length;l++)n.prototype[h[l]]=f;t.exports=n},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(e,f,t){(function(t){"use strict";var r,n,e=t.MutationObserver||t.WebKitMutationObserver;if(e){var i=0,s=new e(h),a=t.document.createTextNode("");s.observe(a,{characterData:!0}),r=function(){a.data=i=++i%2}}else if(t.setImmediate||void 0===t.MessageChannel)r="document"in t&&"onreadystatechange"in t.document.createElement("script")?function(){var e=t.document.createElement("script");e.onreadystatechange=function(){h(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(h,0)};else{var o=new t.MessageChannel;o.port1.onmessage=h,r=function(){o.port2.postMessage(0)}}var u=[];function h(){var e,t;n=!0;for(var r=u.length;r;){for(t=u,u=[],e=-1;++e<r;)t[e]();r=u.length}n=!1}f.exports=function(e){1!==u.push(e)||n||r()}}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],37:[function(e,t,r){"use strict";var i=e("immediate");function h(){}var f={},s=["REJECTED"],a=["FULFILLED"],n=["PENDING"];function o(e){if("function"!=typeof e)throw new TypeError("resolver must be a function");this.state=n,this.queue=[],this.outcome=void 0,e!==h&&c(this,e)}function u(e,t,r){this.promise=e,"function"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),"function"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function l(t,r,n){i(function(){var e;try{e=r(n)}catch(e){return f.reject(t,e)}e===t?f.reject(t,new TypeError("Cannot resolve promise with itself")):f.resolve(t,e)})}function d(e){var t=e&&e.then;if(e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof t)return function(){t.apply(e,arguments)}}function c(t,e){var r=!1;function n(e){r||(r=!0,f.reject(t,e))}function i(e){r||(r=!0,f.resolve(t,e))}var s=p(function(){e(i,n)});"error"===s.status&&n(s.value)}function p(e,t){var r={};try{r.value=e(t),r.status="success"}catch(e){r.status="error",r.value=e}return r}(t.exports=o).prototype.finally=function(t){if("function"!=typeof t)return this;var r=this.constructor;return this.then(function(e){return r.resolve(t()).then(function(){return e})},function(e){return r.resolve(t()).then(function(){throw e})})},o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){if("function"!=typeof e&&this.state===a||"function"!=typeof t&&this.state===s)return this;var r=new this.constructor(h);return this.state!==n?l(r,this.state===a?e:t,this.outcome):this.queue.push(new u(r,e,t)),r},u.prototype.callFulfilled=function(e){f.resolve(this.promise,e)},u.prototype.otherCallFulfilled=function(e){l(this.promise,this.onFulfilled,e)},u.prototype.callRejected=function(e){f.reject(this.promise,e)},u.prototype.otherCallRejected=function(e){l(this.promise,this.onRejected,e)},f.resolve=function(e,t){var r=p(d,t);if("error"===r.status)return f.reject(e,r.value);var n=r.value;if(n)c(e,n);else{e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t)}return e},f.reject=function(e,t){e.state=s,e.outcome=t;for(var r=-1,n=e.queue.length;++r<n;)e.queue[r].callRejected(t);return e},o.resolve=function(e){return e instanceof this?e:f.resolve(new this(h),e)},o.reject=function(e){var t=new this(h);return f.reject(t,e)},o.all=function(e){var r=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var n=e.length,i=!1;if(!n)return this.resolve([]);for(var s=new Array(n),a=0,t=-1,o=new this(h);++t<n;)u(e[t],t);return o;function u(e,t){r.resolve(e).then(function(e){s[t]=e,++a!==n||i||(i=!0,f.resolve(o,s))},function(e){i||(i=!0,f.reject(o,e))})}},o.race=function(e){if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var t=e.length,r=!1;if(!t)return this.resolve([]);for(var n,i=-1,s=new this(h);++i<t;)n=e[i],this.resolve(n).then(function(e){r||(r=!0,f.resolve(s,e))},function(e){r||(r=!0,f.reject(s,e))});return s}},{immediate:36}],38:[function(e,t,r){"use strict";var n={};(0,e("./lib/utils/common").assign)(n,e("./lib/deflate"),e("./lib/inflate"),e("./lib/zlib/constants")),t.exports=n},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(e,t,r){"use strict";var a=e("./zlib/deflate"),o=e("./utils/common"),u=e("./utils/strings"),i=e("./zlib/messages"),s=e("./zlib/zstream"),h=Object.prototype.toString,f=0,l=-1,d=0,c=8;function p(e){if(!(this instanceof p))return new p(e);this.options=o.assign({level:l,method:c,chunkSize:16384,windowBits:15,memLevel:8,strategy:d,to:""},e||{});var t=this.options;t.raw&&0<t.windowBits?t.windowBits=-t.windowBits:t.gzip&&0<t.windowBits&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(r!==f)throw new Error(i[r]);if(t.header&&a.deflateSetHeader(this.strm,t.header),t.dictionary){var n;if(n="string"==typeof t.dictionary?u.string2buf(t.dictionary):"[object ArrayBuffer]"===h.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(r=a.deflateSetDictionary(this.strm,n))!==f)throw new Error(i[r]);this._dict_set=!0}}function n(e,t){var r=new p(t);if(r.push(e,!0),r.err)throw r.msg||i[r.err];return r.result}p.prototype.push=function(e,t){var r,n,i=this.strm,s=this.options.chunkSize;if(this.ended)return!1;n=t===~~t?t:!0===t?4:0,"string"==typeof e?i.input=u.string2buf(e):"[object ArrayBuffer]"===h.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;do{if(0===i.avail_out&&(i.output=new o.Buf8(s),i.next_out=0,i.avail_out=s),1!==(r=a.deflate(i,n))&&r!==f)return this.onEnd(r),!(this.ended=!0);0!==i.avail_out&&(0!==i.avail_in||4!==n&&2!==n)||("string"===this.options.to?this.onData(u.buf2binstring(o.shrinkBuf(i.output,i.next_out))):this.onData(o.shrinkBuf(i.output,i.next_out)))}while((0<i.avail_in||0===i.avail_out)&&1!==r);return 4===n?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===f):2!==n||(this.onEnd(f),!(i.avail_out=0))},p.prototype.onData=function(e){this.chunks.push(e)},p.prototype.onEnd=function(e){e===f&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=p,r.deflate=n,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,n(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,n(e,t)}},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(e,t,r){"use strict";var d=e("./zlib/inflate"),c=e("./utils/common"),p=e("./utils/strings"),m=e("./zlib/constants"),n=e("./zlib/messages"),i=e("./zlib/zstream"),s=e("./zlib/gzheader"),_=Object.prototype.toString;function a(e){if(!(this instanceof a))return new a(e);this.options=c.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&0<=t.windowBits&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(0<=t.windowBits&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),15<t.windowBits&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new i,this.strm.avail_out=0;var r=d.inflateInit2(this.strm,t.windowBits);if(r!==m.Z_OK)throw new Error(n[r]);this.header=new s,d.inflateGetHeader(this.strm,this.header)}function o(e,t){var r=new a(t);if(r.push(e,!0),r.err)throw r.msg||n[r.err];return r.result}a.prototype.push=function(e,t){var r,n,i,s,a,o,u=this.strm,h=this.options.chunkSize,f=this.options.dictionary,l=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?m.Z_FINISH:m.Z_NO_FLUSH,"string"==typeof e?u.input=p.binstring2buf(e):"[object ArrayBuffer]"===_.call(e)?u.input=new Uint8Array(e):u.input=e,u.next_in=0,u.avail_in=u.input.length;do{if(0===u.avail_out&&(u.output=new c.Buf8(h),u.next_out=0,u.avail_out=h),(r=d.inflate(u,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&f&&(o="string"==typeof f?p.string2buf(f):"[object ArrayBuffer]"===_.call(f)?new Uint8Array(f):f,r=d.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===l&&(r=m.Z_OK,l=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);u.next_out&&(0!==u.avail_out&&r!==m.Z_STREAM_END&&(0!==u.avail_in||n!==m.Z_FINISH&&n!==m.Z_SYNC_FLUSH)||("string"===this.options.to?(i=p.utf8border(u.output,u.next_out),s=u.next_out-i,a=p.buf2string(u.output,i),u.next_out=s,u.avail_out=h-s,s&&c.arraySet(u.output,u.output,i,s,0),this.onData(a)):this.onData(c.shrinkBuf(u.output,u.next_out)))),0===u.avail_in&&0===u.avail_out&&(l=!0)}while((0<u.avail_in||0===u.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(n=m.Z_FINISH),n===m.Z_FINISH?(r=d.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):n!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(u.avail_out=0))},a.prototype.onData=function(e){this.chunks.push(e)},a.prototype.onEnd=function(e){e===m.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=c.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,o(e,t)},r.ungzip=o},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(e,t,r){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var n in r)r.hasOwnProperty(n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){var t,r,n,i,s,a;for(t=n=0,r=e.length;t<r;t++)n+=e[t].length;for(a=new Uint8Array(n),t=i=0,r=e.length;t<r;t++)s=e[t],a.set(s,i),i+=s.length;return a}},s={arraySet:function(e,t,r,n,i){for(var s=0;s<n;s++)e[i+s]=t[r+s]},flattenChunks:function(e){return[].concat.apply([],e)}};r.setTyped=function(e){e?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,i)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(n)},{}],42:[function(e,t,r){"use strict";var u=e("./common"),i=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var h=new u.Buf8(256),n=0;n<256;n++)h[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;function f(e,t){if(t<65537&&(e.subarray&&s||!e.subarray&&i))return String.fromCharCode.apply(null,u.shrinkBuf(e,t));for(var r="",n=0;n<t;n++)r+=String.fromCharCode(e[n]);return r}h[254]=h[254]=1,r.string2buf=function(e){var t,r,n,i,s,a=e.length,o=0;for(i=0;i<a;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),o+=r<128?1:r<2048?2:r<65536?3:4;for(t=new u.Buf8(o),i=s=0;s<o;i++)55296==(64512&(r=e.charCodeAt(i)))&&i+1<a&&56320==(64512&(n=e.charCodeAt(i+1)))&&(r=65536+(r-55296<<10)+(n-56320),i++),r<128?t[s++]=r:(r<2048?t[s++]=192|r>>>6:(r<65536?t[s++]=224|r>>>12:(t[s++]=240|r>>>18,t[s++]=128|r>>>12&63),t[s++]=128|r>>>6&63),t[s++]=128|63&r);return t},r.buf2binstring=function(e){return f(e,e.length)},r.binstring2buf=function(e){for(var t=new u.Buf8(e.length),r=0,n=t.length;r<n;r++)t[r]=e.charCodeAt(r);return t},r.buf2string=function(e,t){var r,n,i,s,a=t||e.length,o=new Array(2*a);for(r=n=0;r<a;)if((i=e[r++])<128)o[n++]=i;else if(4<(s=h[i]))o[n++]=65533,r+=s-1;else{for(i&=2===s?31:3===s?15:7;1<s&&r<a;)i=i<<6|63&e[r++],s--;1<s?o[n++]=65533:i<65536?o[n++]=i:(i-=65536,o[n++]=55296|i>>10&1023,o[n++]=56320|1023&i)}return f(o,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;0<=r&&128==(192&e[r]);)r--;return r<0?t:0===r?t:r+h[e[r]]>t?r:t}},{"./common":41}],43:[function(e,t,r){"use strict";t.exports=function(e,t,r,n){for(var i=65535&e|0,s=e>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(i=i+t[n++]|0)|0,--a;);i%=65521,s%=65521}return i|s<<16|0}},{}],44:[function(e,t,r){"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(e,t,r){"use strict";var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}},{}],46:[function(e,t,r){"use strict";var u,d=e("../utils/common"),h=e("./trees"),c=e("./adler32"),p=e("./crc32"),n=e("./messages"),f=0,l=0,m=-2,i=2,_=8,s=286,a=30,o=19,g=2*s+1,v=15,b=3,w=258,y=w+b+1,k=42,x=113;function S(e,t){return e.msg=n[t],t}function z(e){return(e<<1)-(4<e?9:0)}function E(e){for(var t=e.length;0<=--t;)e[t]=0}function C(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(d.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function A(e,t){h._tr_flush_block(e,0<=e.block_start?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,C(e.strm)}function I(e,t){e.pending_buf[e.pending++]=t}function O(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function B(e,t){var r,n,i=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,u=e.strstart>e.w_size-y?e.strstart-(e.w_size-y):0,h=e.window,f=e.w_mask,l=e.prev,d=e.strstart+w,c=h[s+a-1],p=h[s+a];e.prev_length>=e.good_match&&(i>>=2),o>e.lookahead&&(o=e.lookahead);do{if(h[(r=t)+a]===p&&h[r+a-1]===c&&h[r]===h[s]&&h[++r]===h[s+1]){s+=2,r++;do{}while(h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&h[++s]===h[++r]&&s<d);if(n=w-(d-s),s=d-w,a<n){if(e.match_start=t,o<=(a=n))break;c=h[s+a-1],p=h[s+a]}}}while((t=l[t&f])>u&&0!=--i);return a<=e.lookahead?a:e.lookahead}function T(e){var t,r,n,i,s,a,o,u,h,f,l=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=l+(l-y)){for(d.arraySet(e.window,e.window,l,l,0),e.match_start-=l,e.strstart-=l,e.block_start-=l,t=r=e.hash_size;n=e.head[--t],e.head[t]=l<=n?n-l:0,--r;);for(t=r=l;n=e.prev[--t],e.prev[t]=l<=n?n-l:0,--r;);i+=l}if(0===e.strm.avail_in)break;if(a=e.strm,o=e.window,u=e.strstart+e.lookahead,f=void 0,(h=i)<(f=a.avail_in)&&(f=h),r=0===f?0:(a.avail_in-=f,d.arraySet(o,a.input,a.next_in,f,u),1===a.state.wrap?a.adler=c(a.adler,o,f,u):2===a.state.wrap&&(a.adler=p(a.adler,o,f,u)),a.next_in+=f,a.total_in+=f,f),e.lookahead+=r,e.lookahead+e.insert>=b)for(s=e.strstart-e.insert,e.ins_h=e.window[s],e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[s+b-1])&e.hash_mask,e.prev[s&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=s,s++,e.insert--,!(e.lookahead+e.insert<b)););}while(e.lookahead<y&&0!==e.strm.avail_in)}function R(e,t){for(var r,n;;){if(e.lookahead<y){if(T(e),e.lookahead<y&&t===f)return 1;if(0===e.lookahead)break}if(r=0,e.lookahead>=b&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+b-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==r&&e.strstart-r<=e.w_size-y&&(e.match_length=B(e,r)),e.match_length>=b)if(n=h._tr_tally(e,e.strstart-e.match_start,e.match_length-b),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=b){for(e.match_length--;e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+b-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart,0!=--e.match_length;);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else n=h._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<b-1?e.strstart:b-1,4===t?(A(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(A(e,!1),0===e.strm.avail_out)?1:2}function D(e,t){for(var r,n,i;;){if(e.lookahead<y){if(T(e),e.lookahead<y&&t===f)return 1;if(0===e.lookahead)break}if(r=0,e.lookahead>=b&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+b-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=b-1,0!==r&&e.prev_length<e.max_lazy_match&&e.strstart-r<=e.w_size-y&&(e.match_length=B(e,r),e.match_length<=5&&(1===e.strategy||e.match_length===b&&4096<e.strstart-e.match_start)&&(e.match_length=b-1)),e.prev_length>=b&&e.match_length<=e.prev_length){for(i=e.strstart+e.lookahead-b,n=h._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-b),e.lookahead-=e.prev_length-1,e.prev_length-=2;++e.strstart<=i&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+b-1])&e.hash_mask,r=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!=--e.prev_length;);if(e.match_available=0,e.match_length=b-1,e.strstart++,n&&(A(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if((n=h._tr_tally(e,0,e.window[e.strstart-1]))&&A(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=h._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<b-1?e.strstart:b-1,4===t?(A(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(A(e,!1),0===e.strm.avail_out)?1:2}function F(e,t,r,n,i){this.good_length=e,this.max_lazy=t,this.nice_length=r,this.max_chain=n,this.func=i}function N(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=_,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new d.Buf16(2*g),this.dyn_dtree=new d.Buf16(2*(2*a+1)),this.bl_tree=new d.Buf16(2*(2*o+1)),E(this.dyn_ltree),E(this.dyn_dtree),E(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new d.Buf16(v+1),this.heap=new d.Buf16(2*s+1),E(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new d.Buf16(2*s+1),E(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function U(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=i,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?k:x,e.adler=2===t.wrap?0:1,t.last_flush=f,h._tr_init(t),l):S(e,m)}function P(e){var t,r=U(e);return r===l&&((t=e.state).window_size=2*t.w_size,E(t.head),t.max_lazy_match=u[t.level].max_lazy,t.good_match=u[t.level].good_length,t.nice_match=u[t.level].nice_length,t.max_chain_length=u[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=b-1,t.match_available=0,t.ins_h=0),r}function L(e,t,r,n,i,s){if(!e)return m;var a=1;if(-1===t&&(t=6),n<0?(a=0,n=-n):15<n&&(a=2,n-=16),i<1||9<i||r!==_||n<8||15<n||t<0||9<t||s<0||4<s)return S(e,m);8===n&&(n=9);var o=new N;return(e.state=o).strm=e,o.wrap=a,o.gzhead=null,o.w_bits=n,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+b-1)/b),o.window=new d.Buf8(2*o.w_size),o.head=new d.Buf16(o.hash_size),o.prev=new d.Buf16(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new d.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=t,o.strategy=s,o.method=r,P(e)}u=[new F(0,0,0,0,function(e,t){var r=65535;for(r>e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(T(e),0===e.lookahead&&t===f)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,A(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-y&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(A(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(A(e,!1),e.strm.avail_out),1)}),new F(4,4,8,4,R),new F(4,5,16,8,R),new F(4,6,32,32,R),new F(4,4,16,16,D),new F(8,16,32,32,D),new F(8,16,128,128,D),new F(8,32,128,256,D),new F(32,128,258,1024,D),new F(32,258,258,4096,D)],r.deflateInit=function(e,t){return L(e,t,_,15,8,0)},r.deflateInit2=L,r.deflateReset=P,r.deflateResetKeep=U,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?m:(e.state.gzhead=t,l):m},r.deflate=function(e,t){var r,n,i,s;if(!e||!e.state||5<t||t<0)return e?S(e,m):m;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||666===n.status&&4!==t)return S(e,0===e.avail_out?-5:m);if(n.strm=e,r=n.last_flush,n.last_flush=t,n.status===k)if(2===n.wrap)e.adler=0,I(n,31),I(n,139),I(n,8),n.gzhead?(I(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),I(n,255&n.gzhead.time),I(n,n.gzhead.time>>8&255),I(n,n.gzhead.time>>16&255),I(n,n.gzhead.time>>24&255),I(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),I(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(I(n,255&n.gzhead.extra.length),I(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=p(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(I(n,0),I(n,0),I(n,0),I(n,0),I(n,0),I(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),I(n,3),n.status=x);else{var a=_+(n.w_bits-8<<4)<<8;a|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(a|=32),a+=31-a%31,n.status=x,O(n,a),0!==n.strstart&&(O(n,e.adler>>>16),O(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(i=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),C(e),i=n.pending,n.pending!==n.pending_buf_size));)I(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),C(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,I(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){i=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),C(e),i=n.pending,n.pending===n.pending_buf_size)){s=1;break}s=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,I(n,s)}while(0!==s);n.gzhead.hcrc&&n.pending>i&&(e.adler=p(e.adler,n.pending_buf,n.pending-i,i)),0===s&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&C(e),n.pending+2<=n.pending_buf_size&&(I(n,255&e.adler),I(n,e.adler>>8&255),e.adler=0,n.status=x)):n.status=x),0!==n.pending){if(C(e),0===e.avail_out)return n.last_flush=-1,l}else if(0===e.avail_in&&z(t)<=z(r)&&4!==t)return S(e,-5);if(666===n.status&&0!==e.avail_in)return S(e,-5);if(0!==e.avail_in||0!==n.lookahead||t!==f&&666!==n.status){var o=2===n.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(T(e),0===e.lookahead)){if(t===f)return 1;break}if(e.match_length=0,r=h._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(A(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(A(e,!1),0===e.strm.avail_out)?1:2}(n,t):3===n.strategy?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=w){if(T(e),e.lookahead<=w&&t===f)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=b&&0<e.strstart&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+w;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&i<s);e.match_length=w-(s-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=b?(r=h._tr_tally(e,1,e.match_length-b),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=h._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(A(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(A(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(A(e,!1),0===e.strm.avail_out)?1:2}(n,t):u[n.level].func(n,t);if(3!==o&&4!==o||(n.status=666),1===o||3===o)return 0===e.avail_out&&(n.last_flush=-1),l;if(2===o&&(1===t?h._tr_align(n):5!==t&&(h._tr_stored_block(n,0,0,!1),3===t&&(E(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),C(e),0===e.avail_out))return n.last_flush=-1,l}return 4!==t?l:n.wrap<=0?1:(2===n.wrap?(I(n,255&e.adler),I(n,e.adler>>8&255),I(n,e.adler>>16&255),I(n,e.adler>>24&255),I(n,255&e.total_in),I(n,e.total_in>>8&255),I(n,e.total_in>>16&255),I(n,e.total_in>>24&255)):(O(n,e.adler>>>16),O(n,65535&e.adler)),C(e),0<n.wrap&&(n.wrap=-n.wrap),0!==n.pending?l:1)},r.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==k&&69!==t&&73!==t&&91!==t&&103!==t&&t!==x&&666!==t?S(e,m):(e.state=null,t===x?S(e,-3):l):m},r.deflateSetDictionary=function(e,t){var r,n,i,s,a,o,u,h,f=t.length;if(!e||!e.state)return m;if(2===(s=(r=e.state).wrap)||1===s&&r.status!==k||r.lookahead)return m;for(1===s&&(e.adler=c(e.adler,t,f,0)),r.wrap=0,f>=r.w_size&&(0===s&&(E(r.head),r.strstart=0,r.block_start=0,r.insert=0),h=new d.Buf8(r.w_size),d.arraySet(h,t,f-r.w_size,r.w_size,0),t=h,f=r.w_size),a=e.avail_in,o=e.next_in,u=e.input,e.avail_in=f,e.next_in=0,e.input=t,T(r);r.lookahead>=b;){for(n=r.strstart,i=r.lookahead-(b-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[n+b-1])&r.hash_mask,r.prev[n&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=n,n++,--i;);r.strstart=n,r.lookahead=b-1,T(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=b-1,r.match_available=0,e.next_in=o,e.input=u,e.avail_in=a,r.wrap=s,l},r.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(e,t,r){"use strict";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],48:[function(e,t,r){"use strict";t.exports=function(e,t){var r,n,i,s,a,o,u,h,f,l,d,c,p,m,_,g,v,b,w,y,k,x,S,z,E;r=e.state,n=e.next_in,z=e.input,i=n+(e.avail_in-5),s=e.next_out,E=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),u=r.dmax,h=r.wsize,f=r.whave,l=r.wnext,d=r.window,c=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,v=(1<<r.distbits)-1;e:do{p<15&&(c+=z[n++]<<p,p+=8,c+=z[n++]<<p,p+=8),b=m[c&g];t:for(;;){if(c>>>=w=b>>>24,p-=w,0==(w=b>>>16&255))E[s++]=65535&b;else{if(!(16&w)){if(0==(64&w)){b=m[(65535&b)+(c&(1<<w)-1)];continue t}if(32&w){r.mode=12;break e}e.msg="invalid literal/length code",r.mode=30;break e}y=65535&b,(w&=15)&&(p<w&&(c+=z[n++]<<p,p+=8),y+=c&(1<<w)-1,c>>>=w,p-=w),p<15&&(c+=z[n++]<<p,p+=8,c+=z[n++]<<p,p+=8),b=_[c&v];r:for(;;){if(c>>>=w=b>>>24,p-=w,!(16&(w=b>>>16&255))){if(0==(64&w)){b=_[(65535&b)+(c&(1<<w)-1)];continue r}e.msg="invalid distance code",r.mode=30;break e}if(k=65535&b,p<(w&=15)&&(c+=z[n++]<<p,(p+=8)<w&&(c+=z[n++]<<p,p+=8)),u<(k+=c&(1<<w)-1)){e.msg="invalid distance too far back",r.mode=30;break e}if(c>>>=w,p-=w,(w=s-a)<k){if(f<(w=k-w)&&r.sane){e.msg="invalid distance too far back",r.mode=30;break e}if(S=d,(x=0)===l){if(x+=h-w,w<y){for(y-=w;E[s++]=d[x++],--w;);x=s-k,S=E}}else if(l<w){if(x+=h+l-w,(w-=l)<y){for(y-=w;E[s++]=d[x++],--w;);if(x=0,l<y){for(y-=w=l;E[s++]=d[x++],--w;);x=s-k,S=E}}}else if(x+=l-w,w<y){for(y-=w;E[s++]=d[x++],--w;);x=s-k,S=E}for(;2<y;)E[s++]=S[x++],E[s++]=S[x++],E[s++]=S[x++],y-=3;y&&(E[s++]=S[x++],1<y&&(E[s++]=S[x++]))}else{for(x=s-k;E[s++]=E[x++],E[s++]=E[x++],E[s++]=E[x++],2<(y-=3););y&&(E[s++]=E[x++],1<y&&(E[s++]=E[x++]))}break}}break}}while(n<i&&s<o);n-=y=p>>3,c&=(1<<(p-=y<<3))-1,e.next_in=n,e.next_out=s,e.avail_in=n<i?i-n+5:5-(n-i),e.avail_out=s<o?o-s+257:257-(s-o),r.hold=c,r.bits=p}},{}],49:[function(e,t,r){"use strict";var I=e("../utils/common"),O=e("./adler32"),B=e("./crc32"),T=e("./inffast"),R=e("./inftrees"),D=1,F=2,N=0,U=-2,P=1,n=852,i=592;function L(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=P,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new I.Buf32(n),t.distcode=t.distdyn=new I.Buf32(i),t.sane=1,t.back=-1,N):U}function o(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,a(e)):U}function u(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||15<t)?U:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,o(e))):U}function h(e,t){var r,n;return e?(n=new s,(e.state=n).window=null,(r=u(e,t))!==N&&(e.state=null),r):U}var f,l,d=!0;function j(e){if(d){var t;for(f=new I.Buf32(512),l=new I.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(R(D,e.lens,0,288,f,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;R(F,e.lens,0,32,l,0,e.work,{bits:5}),d=!1}e.lencode=f,e.lenbits=9,e.distcode=l,e.distbits=5}function Z(e,t,r,n){var i,s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),n>=s.wsize?(I.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n<(i=s.wsize-s.wnext)&&(i=n),I.arraySet(s.window,t,r-n,i,s.wnext),(n-=i)?(I.arraySet(s.window,t,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}r.inflateReset=o,r.inflateReset2=u,r.inflateResetKeep=a,r.inflateInit=function(e){return h(e,15)},r.inflateInit2=h,r.inflate=function(e,t){var r,n,i,s,a,o,u,h,f,l,d,c,p,m,_,g,v,b,w,y,k,x,S,z,E=0,C=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return U;12===(r=e.state).mode&&(r.mode=13),a=e.next_out,i=e.output,u=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,h=r.hold,f=r.bits,l=o,d=u,x=N;e:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;f<16;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(2&r.wrap&&35615===h){C[r.check=0]=255&h,C[1]=h>>>8&255,r.check=B(r.check,C,2,0),f=h=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&h)<<8)+(h>>8))%31){e.msg="incorrect header check",r.mode=30;break}if(8!=(15&h)){e.msg="unknown compression method",r.mode=30;break}if(f-=4,k=8+(15&(h>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){e.msg="invalid window size",r.mode=30;break}r.dmax=1<<k,e.adler=r.check=1,r.mode=512&h?10:12,f=h=0;break;case 2:for(;f<16;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(r.flags=h,8!=(255&r.flags)){e.msg="unknown compression method",r.mode=30;break}if(57344&r.flags){e.msg="unknown header flags set",r.mode=30;break}r.head&&(r.head.text=h>>8&1),512&r.flags&&(C[0]=255&h,C[1]=h>>>8&255,r.check=B(r.check,C,2,0)),f=h=0,r.mode=3;case 3:for(;f<32;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}r.head&&(r.head.time=h),512&r.flags&&(C[0]=255&h,C[1]=h>>>8&255,C[2]=h>>>16&255,C[3]=h>>>24&255,r.check=B(r.check,C,4,0)),f=h=0,r.mode=4;case 4:for(;f<16;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}r.head&&(r.head.xflags=255&h,r.head.os=h>>8),512&r.flags&&(C[0]=255&h,C[1]=h>>>8&255,r.check=B(r.check,C,2,0)),f=h=0,r.mode=5;case 5:if(1024&r.flags){for(;f<16;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}r.length=h,r.head&&(r.head.extra_len=h),512&r.flags&&(C[0]=255&h,C[1]=h>>>8&255,r.check=B(r.check,C,2,0)),f=h=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(c=r.length)&&(c=o),c&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,n,s,c,k)),512&r.flags&&(r.check=B(r.check,n,c,s)),o-=c,s+=c,r.length-=c),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break e;for(c=0;k=n[s+c++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&c<o;);if(512&r.flags&&(r.check=B(r.check,n,c,s)),o-=c,s+=c,k)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break e;for(c=0;k=n[s+c++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&c<o;);if(512&r.flags&&(r.check=B(r.check,n,c,s)),o-=c,s+=c,k)break e}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;f<16;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(h!==(65535&r.check)){e.msg="header crc mismatch",r.mode=30;break}f=h=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;f<32;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}e.adler=r.check=L(h),f=h=0,r.mode=11;case 11:if(0===r.havedict)return e.next_out=a,e.avail_out=u,e.next_in=s,e.avail_in=o,r.hold=h,r.bits=f,2;e.adler=r.check=1,r.mode=12;case 12:if(5===t||6===t)break e;case 13:if(r.last){h>>>=7&f,f-=7&f,r.mode=27;break}for(;f<3;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}switch(r.last=1&h,f-=1,3&(h>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==t)break;h>>>=2,f-=2;break e;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=30}h>>>=2,f-=2;break;case 14:for(h>>>=7&f,f-=7&f;f<32;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if((65535&h)!=(h>>>16^65535)){e.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&h,f=h=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(c=r.length){if(o<c&&(c=o),u<c&&(c=u),0===c)break e;I.arraySet(i,n,s,c,a),o-=c,s+=c,u-=c,a+=c,r.length-=c;break}r.mode=12;break;case 17:for(;f<14;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(r.nlen=257+(31&h),h>>>=5,f-=5,r.ndist=1+(31&h),h>>>=5,f-=5,r.ncode=4+(15&h),h>>>=4,f-=4,286<r.nlen||30<r.ndist){e.msg="too many length or distance symbols",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;f<3;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}r.lens[A[r.have++]]=7&h,h>>>=3,f-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=R(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(E=r.lencode[h&(1<<r.lenbits)-1])>>>16&255,v=65535&E,!((_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(v<16)h>>>=_,f-=_,r.lens[r.have++]=v;else{if(16===v){for(z=_+2;f<z;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(h>>>=_,f-=_,0===r.have){e.msg="invalid bit length repeat",r.mode=30;break}k=r.lens[r.have-1],c=3+(3&h),h>>>=2,f-=2}else if(17===v){for(z=_+3;f<z;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}f-=_,k=0,c=3+(7&(h>>>=_)),h>>>=3,f-=3}else{for(z=_+7;f<z;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}f-=_,k=0,c=11+(127&(h>>>=_)),h>>>=7,f-=7}if(r.have+c>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=30;break}for(;c--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=R(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){e.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=R(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){e.msg="invalid distances set",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(6<=o&&258<=u){e.next_out=a,e.avail_out=u,e.next_in=s,e.avail_in=o,r.hold=h,r.bits=f,T(e,d),a=e.next_out,i=e.output,u=e.avail_out,s=e.next_in,n=e.input,o=e.avail_in,h=r.hold,f=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(E=r.lencode[h&(1<<r.lenbits)-1])>>>16&255,v=65535&E,!((_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(g&&0==(240&g)){for(b=_,w=g,y=v;g=(E=r.lencode[y+((h&(1<<b+w)-1)>>b)])>>>16&255,v=65535&E,!(b+(_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}h>>>=b,f-=b,r.back+=b}if(h>>>=_,f-=_,r.back+=_,r.length=v,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){e.msg="invalid literal/length code",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;f<z;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}r.length+=h&(1<<r.extra)-1,h>>>=r.extra,f-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(E=r.distcode[h&(1<<r.distbits)-1])>>>16&255,v=65535&E,!((_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(0==(240&g)){for(b=_,w=g,y=v;g=(E=r.distcode[y+((h&(1<<b+w)-1)>>b)])>>>16&255,v=65535&E,!(b+(_=E>>>24)<=f);){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}h>>>=b,f-=b,r.back+=b}if(h>>>=_,f-=_,r.back+=_,64&g){e.msg="invalid distance code",r.mode=30;break}r.offset=v,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;f<z;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}r.offset+=h&(1<<r.extra)-1,h>>>=r.extra,f-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===u)break e;if(c=d-u,r.offset>c){if((c=r.offset-c)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=30;break}p=c>r.wnext?(c-=r.wnext,r.wsize-c):r.wnext-c,c>r.length&&(c=r.length),m=r.window}else m=i,p=a-r.offset,c=r.length;for(u<c&&(c=u),u-=c,r.length-=c;i[a++]=m[p++],--c;);0===r.length&&(r.mode=21);break;case 26:if(0===u)break e;i[a++]=r.length,u--,r.mode=21;break;case 27:if(r.wrap){for(;f<32;){if(0===o)break e;o--,h|=n[s++]<<f,f+=8}if(d-=u,e.total_out+=d,r.total+=d,d&&(e.adler=r.check=r.flags?B(r.check,i,d,a-d):O(r.check,i,d,a-d)),d=u,(r.flags?h:L(h))!==r.check){e.msg="incorrect data check",r.mode=30;break}f=h=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;f<32;){if(0===o)break e;o--,h+=n[s++]<<f,f+=8}if(h!==(4294967295&r.total)){e.msg="incorrect length check",r.mode=30;break}f=h=0}r.mode=29;case 29:x=1;break e;case 30:x=-3;break e;case 31:return-4;case 32:default:return U}return e.next_out=a,e.avail_out=u,e.next_in=s,e.avail_in=o,r.hold=h,r.bits=f,(r.wsize||d!==e.avail_out&&r.mode<30&&(r.mode<27||4!==t))&&Z(e,e.output,e.next_out,d-e.avail_out)?(r.mode=31,-4):(l-=e.avail_in,d-=e.avail_out,e.total_in+=l,e.total_out+=d,r.total+=d,r.wrap&&d&&(e.adler=r.check=r.flags?B(r.check,i,d,e.next_out-d):O(r.check,i,d,e.next_out-d)),e.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==l&&0===d||4===t)&&x===N&&(x=-5),x)},r.inflateEnd=function(e){if(!e||!e.state)return U;var t=e.state;return t.window&&(t.window=null),e.state=null,N},r.inflateGetHeader=function(e,t){var r;return e&&e.state?0==(2&(r=e.state).wrap)?U:((r.head=t).done=!1,N):U},r.inflateSetDictionary=function(e,t){var r,n=t.length;return e&&e.state?0!==(r=e.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,t,n,0)!==r.check?-3:Z(e,t,n,n)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(e,t,r){"use strict";var D=e("../utils/common"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(e,t,r,n,i,s,a,o){var u,h,f,l,d,c,p,m,_,g=o.bits,v=0,b=0,w=0,y=0,k=0,x=0,S=0,z=0,E=0,C=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),T=null,R=0;for(v=0;v<=15;v++)O[v]=0;for(b=0;b<n;b++)O[t[r+b]]++;for(k=g,y=15;1<=y&&0===O[y];y--);if(y<k&&(k=y),0===y)return i[s++]=20971520,i[s++]=20971520,o.bits=1,0;for(w=1;w<y&&0===O[w];w++);for(k<w&&(k=w),v=z=1;v<=15;v++)if(z<<=1,(z-=O[v])<0)return-1;if(0<z&&(0===e||1!==y))return-1;for(B[1]=0,v=1;v<15;v++)B[v+1]=B[v]+O[v];for(b=0;b<n;b++)0!==t[r+b]&&(a[B[t[r+b]]++]=b);if(c=0===e?(A=T=a,19):1===e?(A=F,I-=257,T=N,R-=257,256):(A=U,T=P,-1),v=w,d=s,S=b=C=0,f=-1,l=(E=1<<(x=k))-1,1===e&&852<E||2===e&&592<E)return 1;for(;;){for(p=v-S,_=a[b]<c?(m=0,a[b]):a[b]>c?(m=T[R+a[b]],A[I+a[b]]):(m=96,0),u=1<<v-S,w=h=1<<x;i[d+(C>>S)+(h-=u)]=p<<24|m<<16|_|0,0!==h;);for(u=1<<v-1;C&u;)u>>=1;if(0!==u?(C&=u-1,C+=u):C=0,b++,0==--O[v]){if(v===y)break;v=t[r+a[b]]}if(k<v&&(C&l)!==f){for(0===S&&(S=k),d+=w,z=1<<(x=v-S);x+S<y&&!((z-=O[x+S])<=0);)x++,z<<=1;if(E+=1<<x,1===e&&852<E||2===e&&592<E)return 1;i[f=C&l]=k<<24|x<<16|d-s|0}}return 0!==C&&(i[d+C]=v-S<<24|64<<16|0),o.bits=k,0}},{"../utils/common":41}],51:[function(e,t,r){"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],52:[function(e,t,r){"use strict";var o=e("../utils/common");function n(e){for(var t=e.length;0<=--t;)e[t]=0}var _=15,i=16,u=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],h=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],f=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],l=new Array(576);n(l);var d=new Array(60);n(d);var c=new Array(512);n(c);var p=new Array(256);n(p);var m=new Array(29);n(m);var g,v,b,w=new Array(30);function y(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function s(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function k(e){return e<256?c[e]:c[256+(e>>>7)]}function x(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function S(e,t,r){e.bi_valid>i-r?(e.bi_buf|=t<<e.bi_valid&65535,x(e,e.bi_buf),e.bi_buf=t>>i-e.bi_valid,e.bi_valid+=r-i):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=r)}function z(e,t,r){S(e,r[2*t],r[2*t+1])}function E(e,t){for(var r=0;r|=1&e,e>>>=1,r<<=1,0<--t;);return r>>>1}function C(e,t,r){var n,i,s=new Array(_+1),a=0;for(n=1;n<=_;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=t;i++){var o=e[2*i+1];0!==o&&(e[2*i]=E(s[o]++,o))}}function A(e){var t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function I(e){8<e.bi_valid?x(e,e.bi_buf):0<e.bi_valid&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function O(e,t,r,n){var i=2*t,s=2*r;return e[i]<e[s]||e[i]===e[s]&&n[t]<=n[r]}function B(e,t,r){for(var n=e.heap[r],i=r<<1;i<=e.heap_len&&(i<e.heap_len&&O(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!O(t,n,e.heap[i],e.depth));)e.heap[r]=e.heap[i],r=i,i<<=1;e.heap[r]=n}function T(e,t,r){var n,i,s,a,o=0;if(0!==e.last_lit)for(;n=e.pending_buf[e.d_buf+2*o]<<8|e.pending_buf[e.d_buf+2*o+1],i=e.pending_buf[e.l_buf+o],o++,0===n?z(e,i,t):(z(e,(s=p[i])+256+1,t),0!==(a=u[s])&&S(e,i-=m[s],a),z(e,s=k(--n),r),0!==(a=h[s])&&S(e,n-=w[s],a)),o<e.last_lit;);z(e,256,t)}function R(e,t){var r,n,i,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,u=t.stat_desc.elems,h=-1;for(e.heap_len=0,e.heap_max=573,r=0;r<u;r++)0!==s[2*r]?(e.heap[++e.heap_len]=h=r,e.depth[r]=0):s[2*r+1]=0;for(;e.heap_len<2;)s[2*(i=e.heap[++e.heap_len]=h<2?++h:0)]=1,e.depth[i]=0,e.opt_len--,o&&(e.static_len-=a[2*i+1]);for(t.max_code=h,r=e.heap_len>>1;1<=r;r--)B(e,s,r);for(i=u;r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],B(e,s,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,s[2*i]=s[2*r]+s[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,s[2*r+1]=s[2*n+1]=i,e.heap[1]=i++,B(e,s,1),2<=e.heap_len;);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,s,a,o,u=t.dyn_tree,h=t.max_code,f=t.stat_desc.static_tree,l=t.stat_desc.has_stree,d=t.stat_desc.extra_bits,c=t.stat_desc.extra_base,p=t.stat_desc.max_length,m=0;for(s=0;s<=_;s++)e.bl_count[s]=0;for(u[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<573;r++)p<(s=u[2*u[2*(n=e.heap[r])+1]+1]+1)&&(s=p,m++),u[2*n+1]=s,h<n||(e.bl_count[s]++,a=0,c<=n&&(a=d[n-c]),o=u[2*n],e.opt_len+=o*(s+a),l&&(e.static_len+=o*(f[2*n+1]+a)));if(0!==m){do{for(s=p-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(n=e.bl_count[s];0!==n;)h<(i=e.heap[--r])||(u[2*i+1]!==s&&(e.opt_len+=(s-u[2*i+1])*u[2*i],u[2*i+1]=s),n--)}}(e,t),C(s,h,e.bl_count)}function D(e,t,r){var n,i,s=-1,a=t[1],o=0,u=7,h=4;for(0===a&&(u=138,h=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=t[2*(n+1)+1],++o<u&&i===a||(o<h?e.bl_tree[2*i]+=o:0!==i?(i!==s&&e.bl_tree[2*i]++,e.bl_tree[32]++):o<=10?e.bl_tree[34]++:e.bl_tree[36]++,s=i,h=(o=0)===a?(u=138,3):i===a?(u=6,3):(u=7,4))}function F(e,t,r){var n,i,s=-1,a=t[1],o=0,u=7,h=4;for(0===a&&(u=138,h=3),n=0;n<=r;n++)if(i=a,a=t[2*(n+1)+1],!(++o<u&&i===a)){if(o<h)for(;z(e,i,e.bl_tree),0!=--o;);else 0!==i?(i!==s&&(z(e,i,e.bl_tree),o--),z(e,16,e.bl_tree),S(e,o-3,2)):o<=10?(z(e,17,e.bl_tree),S(e,o-3,3)):(z(e,18,e.bl_tree),S(e,o-11,7));s=i,h=(o=0)===a?(u=138,3):i===a?(u=6,3):(u=7,4)}}n(w);var N=!1;function U(e,t,r,n){var i,s,a;S(e,0+(n?1:0),3),s=t,a=r,I(i=e),x(i,a),x(i,~a),o.arraySet(i.pending_buf,i.window,s,a,i.pending),i.pending+=a}r._tr_init=function(e){N||(function(){var e,t,r,n,i,s=new Array(_+1);for(n=r=0;n<28;n++)for(m[n]=r,e=0;e<1<<u[n];e++)p[r++]=n;for(p[r-1]=n,n=i=0;n<16;n++)for(w[n]=i,e=0;e<1<<h[n];e++)c[i++]=n;for(i>>=7;n<30;n++)for(w[n]=i<<7,e=0;e<1<<h[n]-7;e++)c[256+i++]=n;for(t=0;t<=_;t++)s[t]=0;for(e=0;e<=143;)l[2*e+1]=8,e++,s[8]++;for(;e<=255;)l[2*e+1]=9,e++,s[9]++;for(;e<=279;)l[2*e+1]=7,e++,s[7]++;for(;e<=287;)l[2*e+1]=8,e++,s[8]++;for(C(l,287,s),e=0;e<30;e++)d[2*e+1]=5,d[2*e]=E(e,5);g=new y(l,u,257,286,_),v=new y(d,h,0,30,_),b=new y(new Array(0),a,0,19,7)}(),N=!0),e.l_desc=new s(e.dyn_ltree,g),e.d_desc=new s(e.dyn_dtree,v),e.bl_desc=new s(e.bl_tree,b),e.bi_buf=0,e.bi_valid=0,A(e)},r._tr_stored_block=U,r._tr_flush_block=function(e,t,r,n){var i,s,a=0;0<e.level?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),R(e,e.l_desc),R(e,e.d_desc),a=function(e){var t;for(D(e,e.dyn_ltree,e.l_desc.max_code),D(e,e.dyn_dtree,e.d_desc.max_code),R(e,e.bl_desc),t=18;3<=t&&0===e.bl_tree[2*f[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),i=e.opt_len+3+7>>>3,(s=e.static_len+3+7>>>3)<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==t?U(e,t,r,n):4===e.strategy||s===i?(S(e,2+(n?1:0),3),T(e,l,d)):(S(e,4+(n?1:0),3),function(e,t,r,n){var i;for(S(e,t-257,5),S(e,r-1,5),S(e,n-4,4),i=0;i<n;i++)S(e,e.bl_tree[2*f[i]+1],3);F(e,e.dyn_ltree,t-1),F(e,e.dyn_dtree,r-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),T(e,e.dyn_ltree,e.dyn_dtree)),A(e),n&&I(e)},r._tr_tally=function(e,t,r){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(p[r]+256+1)]++,e.dyn_dtree[2*k(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){var t;S(e,2,3),z(e,256,l),16===(t=e).bi_valid?(x(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):8<=t.bi_valid&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}},{"../utils/common":41}],53:[function(e,t,r){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(e,t,r){"use strict";t.exports="function"==typeof setImmediate?setImmediate:function(){var e=[].slice.apply(arguments);e.splice(1,0,0),setTimeout.apply(null,e)}},{}]},{},[10])(10)})}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,void 0!==r?r:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)})}).call(this,"undefined"!=typeof __webpack_require__.g?__webpack_require__.g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)});

/***/ })

}]);
//# sourceMappingURL=jszip.vendor.8911033537a0c9d6e5f8.bundle.js.mapassets/js/qunit-tests.min.js000064400000000450150755004310012101 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(()=>{"use strict";var r={52797:()=>{}},e={};function __webpack_require__(_){var t=e[_];if(void 0!==t)return t.exports;var o=e[_]={exports:{}};return r[_](o,o.exports,__webpack_require__),o.exports}new(__webpack_require__(52797).EditorBootstrapPro)})();assets/js/woocommerce-my-account.29644c6bcc614d12067e.bundle.min.js000064400000012623150755004310020206 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[979],{427:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class Base extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{stickyRightColumn:".e-sticky-right-column"},classes:{stickyRightColumnActive:"e-sticky-right-column--active"}}}getDefaultElements(){const e=this.getSettings("selectors");return{$stickyRightColumn:this.$element.find(e.stickyRightColumn)}}bindEvents(){elementorFrontend.elements.$document.on("select2:open",(e=>{this.addSelect2Wrapper(e)}))}addSelect2Wrapper(e){const t=jQuery(e.target).data("select2");t.$dropdown&&t.$dropdown.addClass("e-woo-select2-wrapper")}isStickyRightColumnActive(){const e=this.getSettings("classes");return this.elements.$stickyRightColumn.hasClass(e.stickyRightColumnActive)}activateStickyRightColumn(){const e=this.getElementSettings(),t=elementorFrontend.elements.$wpAdminBar,s=this.getSettings("classes");let i=e.sticky_right_column_offset||0;t.length&&"fixed"===t.css("position")&&(i+=t.height()),"yes"===this.getElementSettings("sticky_right_column")&&(this.elements.$stickyRightColumn.addClass(s.stickyRightColumnActive),this.elements.$stickyRightColumn.css("top",i+"px"))}deactivateStickyRightColumn(){if(!this.isStickyRightColumnActive())return;const e=this.getSettings("classes");this.elements.$stickyRightColumn.removeClass(e.stickyRightColumnActive)}toggleStickyRightColumn(){this.getElementSettings("sticky_right_column")?this.isStickyRightColumnActive()||this.activateStickyRightColumn():this.deactivateStickyRightColumn()}equalizeElementHeight(e){if(e.length){e.removeAttr("style");let t=0;e.each(((e,s)=>{t=Math.max(t,s.offsetHeight)})),0<t&&e.css({height:t+"px"})}}}t.default=Base},4838:(e,t,s)=>{"use strict";var i=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(s(427));class MyAccountHandler extends n.default{getDefaultSettings(){return{selectors:{address:"address",tabLinks:".woocommerce-MyAccount-navigation-link a",viewOrderButtons:".my_account_orders .woocommerce-button.view",viewOrderLinks:".woocommerce-orders-table__cell-order-number a",authForms:"form.login, form.register",tabWrapper:".e-my-account-tab",tabItem:".woocommerce-MyAccount-navigation li",allPageElements:"[e-my-account-page]",purchasenote:"tr.product-purchase-note"}}}getDefaultElements(){const e=this.getSettings("selectors");return{$address:this.$element.find(e.address),$tabLinks:this.$element.find(e.tabLinks),$viewOrderButtons:this.$element.find(e.viewOrderButtons),$viewOrderLinks:this.$element.find(e.viewOrderLinks),$authForms:this.$element.find(e.authForms),$tabWrapper:this.$element.find(e.tabWrapper),$tabItem:this.$element.find(e.tabItem),$allPageElements:this.$element.find(e.allPageElements),$purchasenote:this.$element.find(e.purchasenote)}}editorInitTabs(){this.elements.$allPageElements.each(((e,t)=>{const s=t.getAttribute("e-my-account-page");let i;switch(s){case"view-order":i=this.elements.$viewOrderLinks.add(this.elements.$viewOrderButtons);break;default:i=this.$element.find(".woocommerce-MyAccount-navigation-link--"+s)}i.on("click",(()=>{this.currentPage=s,this.editorShowTab()}))}))}editorShowTab(){const e=this.$element.find('[e-my-account-page="'+this.currentPage+'"]');this.$element.attr("e-my-account-page",this.currentPage),this.elements.$allPageElements.hide(),e.show(),this.toggleEndpointClasses(),"view-order"!==this.currentPage&&(this.elements.$tabItem.removeClass("is-active"),this.$element.find(".woocommerce-MyAccount-navigation-link--"+this.currentPage).addClass("is-active")),"edit-address"!==this.currentPage&&"view-order"!==this.currentPage||this.equalizeElementHeights()}toggleEndpointClasses(){const e=["dashboard","orders","view-order","downloads","edit-account","edit-address","payment-methods"];this.elements.$tabWrapper.removeClass("e-my-account-tab__"+e.join(" e-my-account-tab__")),e.includes(this.currentPage)&&this.elements.$tabWrapper.addClass("e-my-account-tab__"+this.currentPage)}applyButtonsHoverAnimation(){const e=this.getElementSettings();e.forms_buttons_hover_animation&&this.$element.find(".woocommerce button.button").addClass("elementor-animation-"+e.forms_buttons_hover_animation),e.tables_button_hover_animation&&this.$element.find(".order-again .button, td .button, .woocommerce-pagination .button").addClass("elementor-animation-"+e.tables_button_hover_animation)}equalizeElementHeights(){this.equalizeElementHeight(this.elements.$address),this.isEdit||this.equalizeElementHeight(this.elements.$authForms)}removePaddingBetweenPurchaseNote(){this.elements.$purchasenote&&this.elements.$purchasenote.each(((e,t)=>{jQuery(t).prev().children("td").addClass("product-purchase-note-is-below")}))}onElementChange(e){0!==e.indexOf("general_text_typography")&&0!==e.indexOf("sections_padding")||this.equalizeElementHeights(),0===e.indexOf("forms_rows_gap")&&this.removePaddingBetweenPurchaseNote()}bindEvents(){super.bindEvents(),elementorFrontend.elements.$body.on("keyup change",".register #reg_password",(()=>{this.equalizeElementHeights()}))}onInit(...e){super.onInit(...e),this.isEdit&&(this.editorInitTabs(),this.$element.attr("e-my-account-page")?this.currentPage=this.$element.attr("e-my-account-page"):this.currentPage="dashboard",this.editorShowTab()),this.applyButtonsHoverAnimation(),this.equalizeElementHeights(),this.removePaddingBetweenPurchaseNote()}}t.default=MyAccountHandler}}]);assets/js/admin.js000064400001006404150755004310010115 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js":
/*!********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/array/from.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/array/from */ "../node_modules/core-js/library/fn/array/from.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/array/is-array */ "../node_modules/core-js/library/fn/array/is-array.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/json/stringify */ "../node_modules/core-js/library/fn/json/stringify.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/create.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/create.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/create */ "../node_modules/core-js/library/fn/object/create.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js":
/*!********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/define-property */ "../node_modules/core-js/library/fn/object/define-property.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/entries.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/entries.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/entries */ "../node_modules/core-js/library/fn/object/entries.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js":
/*!********************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js ***!
  \********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-own-property-descriptor */ "../node_modules/core-js/library/fn/object/get-own-property-descriptor.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-prototype-of */ "../node_modules/core-js/library/fn/object/get-prototype-of.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/set-prototype-of */ "../node_modules/core-js/library/fn/object/set-prototype-of.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/reflect/construct */ "../node_modules/core-js/library/fn/reflect/construct.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/reflect/get.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/reflect/get.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/reflect/get */ "../node_modules/core-js/library/fn/reflect/get.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js":
/*!****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/symbol.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/symbol */ "../node_modules/core-js/library/fn/symbol/index.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js ***!
  \*************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/symbol/iterator */ "../node_modules/core-js/library/fn/symbol/iterator.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js":
/*!**************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js ***!
  \**************************************************************************/
/***/ ((module) => {

function _arrayLikeToArray(arr, len) {
  if (len == null || len > arr.length) len = arr.length;

  for (var i = 0, arr2 = new Array(len); i < len; i++) {
    arr2[i] = arr[i];
  }

  return arr2;
}

module.exports = _arrayLikeToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Array$isArray = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/is-array */ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js");

var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js");

function _arrayWithoutHoles(arr) {
  if (_Array$isArray(arr)) return arrayLikeToArray(arr);
}

module.exports = _arrayWithoutHoles;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js ***!
  \*******************************************************************************/
/***/ ((module) => {

function _assertThisInitialized(self) {
  if (self === void 0) {
    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  }

  return self;
}

module.exports = _assertThisInitialized;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js ***!
  \************************************************************************/
/***/ ((module) => {

function _classCallCheck(instance, Constructor) {
  if (!(instance instanceof Constructor)) {
    throw new TypeError("Cannot call a class as a function");
  }
}

module.exports = _classCallCheck;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/createClass.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

function _defineProperties(target, props) {
  for (var i = 0; i < props.length; i++) {
    var descriptor = props[i];
    descriptor.enumerable = descriptor.enumerable || false;
    descriptor.configurable = true;
    if ("value" in descriptor) descriptor.writable = true;

    _Object$defineProperty(target, descriptor.key, descriptor);
  }
}

function _createClass(Constructor, protoProps, staticProps) {
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
  if (staticProps) _defineProperties(Constructor, staticProps);
  return Constructor;
}

module.exports = _createClass;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/createSuper.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/construct */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js");

var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js");

var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ "../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js");

var possibleConstructorReturn = __webpack_require__(/*! ./possibleConstructorReturn.js */ "../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js");

function _createSuper(Derived) {
  var hasNativeReflectConstruct = isNativeReflectConstruct();
  return function _createSuperInternal() {
    var Super = getPrototypeOf(Derived),
        result;

    if (hasNativeReflectConstruct) {
      var NewTarget = getPrototypeOf(this).constructor;
      result = _Reflect$construct(Super, arguments, NewTarget);
    } else {
      result = Super.apply(this, arguments);
    }

    return possibleConstructorReturn(this, result);
  };
}

module.exports = _createSuper;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/get.js":
/*!*************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/get.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$get = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/get */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/get.js");

var _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-descriptor */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js");

var superPropBase = __webpack_require__(/*! ./superPropBase.js */ "../node_modules/@babel/runtime-corejs2/helpers/superPropBase.js");

function _get(target, property, receiver) {
  if (typeof Reflect !== "undefined" && _Reflect$get) {
    module.exports = _get = _Reflect$get;
    module.exports.default = module.exports, module.exports.__esModule = true;
  } else {
    module.exports = _get = function _get(target, property, receiver) {
      var base = superPropBase(target, property);
      if (!base) return;

      var desc = _Object$getOwnPropertyDescriptor(base, property);

      if (desc.get) {
        return desc.get.call(receiver);
      }

      return desc.value;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  }

  return _get(target, property, receiver || target);
}

module.exports = _get;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/set-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js");

var _Object$getPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js");

function _getPrototypeOf(o) {
  module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {
    return o.__proto__ || _Object$getPrototypeOf(o);
  };
  module.exports.default = module.exports, module.exports.__esModule = true;
  return _getPrototypeOf(o);
}

module.exports = _getPrototypeOf;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js":
/*!******************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/inherits.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$create = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/create */ "../node_modules/@babel/runtime-corejs2/core-js/object/create.js");

var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js");

function _inherits(subClass, superClass) {
  if (typeof superClass !== "function" && superClass !== null) {
    throw new TypeError("Super expression must either be null or a function");
  }

  subClass.prototype = _Object$create(superClass && superClass.prototype, {
    constructor: {
      value: subClass,
      writable: true,
      configurable: true
    }
  });
  if (superClass) setPrototypeOf(subClass, superClass);
}

module.exports = _inherits;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js ***!
  \*******************************************************************************/
/***/ ((module) => {

function _interopRequireDefault(obj) {
  return obj && obj.__esModule ? obj : {
    "default": obj
  };
}

module.exports = _interopRequireDefault;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js":
/*!**********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js ***!
  \**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/construct */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js");

function _isNativeReflectConstruct() {
  if (typeof Reflect === "undefined" || !_Reflect$construct) return false;
  if (_Reflect$construct.sham) return false;
  if (typeof Proxy === "function") return true;

  try {
    Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));
    return true;
  } catch (e) {
    return false;
  }
}

module.exports = _isNativeReflectConstruct;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js ***!
  \*************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

var _Array$from = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/from */ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js");

function _iterableToArray(iter) {
  if (typeof _Symbol !== "undefined" && iter[_Symbol$iterator] != null || iter["@@iterator"] != null) return _Array$from(iter);
}

module.exports = _iterableToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js ***!
  \***************************************************************************/
/***/ ((module) => {

function _nonIterableSpread() {
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}

module.exports = _nonIterableSpread;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js":
/*!***********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js ***!
  \***********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _typeof = __webpack_require__(/*! @babel/runtime-corejs2/helpers/typeof */ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js").default;

var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js");

function _possibleConstructorReturn(self, call) {
  if (call && (_typeof(call) === "object" || typeof call === "function")) {
    return call;
  }

  return assertThisInitialized(self);
}

module.exports = _possibleConstructorReturn;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/set-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js");

function _setPrototypeOf(o, p) {
  module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {
    o.__proto__ = p;
    return o;
  };

  module.exports.default = module.exports, module.exports.__esModule = true;
  return _setPrototypeOf(o, p);
}

module.exports = _setPrototypeOf;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/superPropBase.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/superPropBase.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js");

function _superPropBase(object, property) {
  while (!Object.prototype.hasOwnProperty.call(object, property)) {
    object = getPrototypeOf(object);
    if (object === null) break;
  }

  return object;
}

module.exports = _superPropBase;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js");

var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js");

var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js");

var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js");

function _toConsumableArray(arr) {
  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
}

module.exports = _toConsumableArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js":
/*!****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/typeof.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

function _typeof(obj) {
  "@babel/helpers - typeof";

  if (typeof _Symbol === "function" && typeof _Symbol$iterator === "symbol") {
    module.exports = _typeof = function _typeof(obj) {
      return typeof obj;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  } else {
    module.exports = _typeof = function _typeof(obj) {
      return obj && typeof _Symbol === "function" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? "symbol" : typeof obj;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  }

  return _typeof(obj);
}

module.exports = _typeof;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js":
/*!************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js ***!
  \************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Array$from = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/from */ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js");

var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js");

function _unsupportedIterableToArray(o, minLen) {
  if (!o) return;
  if (typeof o === "string") return arrayLikeToArray(o, minLen);
  var n = Object.prototype.toString.call(o).slice(8, -1);
  if (n === "Object" && o.constructor) n = o.constructor.name;
  if (n === "Map" || n === "Set") return _Array$from(o);
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
}

module.exports = _unsupportedIterableToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../modules/assets-manager/assets/js/admin.js":
/*!****************************************************!*\
  !*** ../modules/assets-manager/assets/js/admin.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

var _elementorFontManager = _interopRequireDefault(__webpack_require__(/*! ./admin/elementor-font-manager */ "../modules/assets-manager/assets/js/admin/elementor-font-manager.js"));

var _elementorCustomIcons = _interopRequireDefault(__webpack_require__(/*! ./admin/elementor-custom-icons */ "../modules/assets-manager/assets/js/admin/elementor-custom-icons.js"));

module.exports = function () {
  var TypekitAdmin = __webpack_require__(/*! ./admin/typekit */ "../modules/assets-manager/assets/js/admin/typekit.js"),
      CustomIcon = _elementorCustomIcons.default,
      FontAwesomeProAdmin = __webpack_require__(/*! ./admin/font-awesome-pro */ "../modules/assets-manager/assets/js/admin/font-awesome-pro.js").default;

  this.fontManager = new _elementorFontManager.default();
  this.typekit = new TypekitAdmin();
  this.fontAwesomePro = new FontAwesomeProAdmin();
  this.customIcons = new CustomIcon();
};

/***/ }),

/***/ "../modules/assets-manager/assets/js/admin/custom-assets-base.js":
/*!***********************************************************************!*\
  !*** ../modules/assets-manager/assets/js/admin/custom-assets-base.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var CustomAssetsBase = /*#__PURE__*/function (_elementorModules$Vie) {
  (0, _inherits2.default)(CustomAssetsBase, _elementorModules$Vie);

  var _super = (0, _createSuper2.default)(CustomAssetsBase);

  function CustomAssetsBase() {
    (0, _classCallCheck2.default)(this, CustomAssetsBase);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(CustomAssetsBase, [{
    key: "showAlertDialog",
    value: function showAlertDialog(id, message) {
      var onConfirm = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
      var onHide = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
      var alertData = {
        id: id,
        message: message
      };

      if (onConfirm) {
        alertData.onConfirm = onConfirm;
      }

      if (onHide) {
        alertData.onHide = onHide;
      } // Save the instance of the alert dialog to check for its visibility later


      if (!this.alertWidget) {
        this.alertWidget = elementorCommon.dialogsManager.createWidget('alert', alertData);
      }

      this.alertWidget.show();
    }
  }, {
    key: "onDialogDismiss",
    value: function onDialogDismiss() {
      // WP's publish button gets a disabled class on submit attempt
      this.elements.$publishButton.removeClass('disabled'); // Prevent WP's publish spinner from appearing on publish attempt

      this.elements.$publishButtonSpinner.removeClass('is-active');
    }
  }, {
    key: "handleSubmit",
    value: function handleSubmit(event) {
      var _this = this;

      // if we know there is a file already, return to continue submission normally
      if (this.fileWasUploaded) {
        return;
      }

      var hasValue = this.checkInputsForValues(); // method exists in the child classes
      // If the file input is not empty, continue the submission process

      if (hasValue) {
        this.fileWasUploaded = true;
        this.elements.$postForm.trigger('submit');
        return;
      }

      event.preventDefault(); // prevent new asset submission
      // If no value was found, stop submission and display a notice modal

      this.showAlertDialog('noData', this.getSettings('notice'), function () {
        return _this.onDialogDismiss();
      }, // onConfirm
      function () {
        return _this.onDialogDismiss();
      } // onHide
      );
      return false;
    }
  }, {
    key: "bindEvents",
    value: function bindEvents() {
      this.elements.$postForm.on('submit', this.handleSubmit.bind(this));
    }
  }]);
  return CustomAssetsBase;
}(elementorModules.ViewModule);

var _default = CustomAssetsBase;
exports.default = _default;

/***/ }),

/***/ "../modules/assets-manager/assets/js/admin/elementor-custom-icons.js":
/*!***************************************************************************!*\
  !*** ../modules/assets-manager/assets/js/admin/elementor-custom-icons.js ***!
  \***************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _stringify = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/json/stringify */ "../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js"));

__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

__webpack_require__(/*! core-js/modules/es6.regexp.replace.js */ "../node_modules/core-js/modules/es6.regexp.replace.js");

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/get */ "../node_modules/@babel/runtime-corejs2/helpers/get.js"));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/getPrototypeOf */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _customAssetsBase = _interopRequireDefault(__webpack_require__(/*! ./custom-assets-base */ "../modules/assets-manager/assets/js/admin/custom-assets-base.js"));

var _elementorProDropzone = _interopRequireDefault(__webpack_require__(/*! ./fields/elementor-pro-dropzone */ "../modules/assets-manager/assets/js/admin/fields/elementor-pro-dropzone.js"));

var CustomIcons = /*#__PURE__*/function (_CustomAssetsBase) {
  (0, _inherits2.default)(CustomIcons, _CustomAssetsBase);

  var _super = (0, _createSuper2.default)(CustomIcons);

  function CustomIcons() {
    (0, _classCallCheck2.default)(this, CustomIcons);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(CustomIcons, [{
    key: "getDefaultSettings",
    value: function getDefaultSettings() {
      return {
        fields: {
          dropzone: _elementorProDropzone.default
        },
        classes: {
          editPageClass: 'post-type-elementor_icons',
          editPhp: 'edit-php',
          hasIcons: 'elementor--has-icons'
        },
        selectors: {
          editPageClass: 'post-type-elementor_icons',
          title: '#title',
          metaboxContainer: '#elementor-custom-icons-metabox',
          metabox: '.elementor-custom-icons-metabox',
          closeHandle: 'button.handlediv',
          iconsTemplate: '#elementor-icons-template',
          dataInput: '#elementor_custom_icon_set_config',
          dropzone: '.zip_upload',
          submitDelete: '.submitdelete',
          dayInput: '#hidden_jj',
          mmInput: '#hidden_mm',
          yearInput: '#hidden_aa',
          hourInput: '#hidden_hh',
          minuteInput: '#hidden_mn',
          publishButton: '#publish',
          publishButtonSpinner: '#publishing-action > .spinner',
          submitMetabox: '#postbox-container-1',
          postForm: '#post',
          fileInput: '#zip_upload',
          iconSetConfigInput: '#elementor_custom_icon_set_config'
        },
        templates: {
          icon: '<li><div class="icon"><i class="{{icon}}"></i><div class="icon-name">{{label}}</div></div></li>',
          header: jQuery('#elementor-custom-icons-template-header').html(),
          footer: jQuery('#elementor-custom-icons-template-footer').html(),
          duplicatePrefix: jQuery('#elementor-custom-icons-template-duplicate-prefix').html()
        },
        notice: ElementorProConfig.i18n.fontsUploadEmptyNotice
      };
    }
  }, {
    key: "getDefaultElements",
    value: function getDefaultElements() {
      var elements = {},
          selectors = this.getSettings('selectors');
      jQuery.each(selectors, function (element, selector) {
        elements['$' + element] = jQuery(selector);
      });
      return elements;
    }
  }, {
    key: "bindEvents",
    value: function bindEvents() {
      (0, _get2.default)((0, _getPrototypeOf2.default)(CustomIcons.prototype), "bindEvents", this).call(this);

      if ('' !== this.getData()) {
        this.bindOnTitleChange();
      }
    }
  }, {
    key: "bindOnTitleChange",
    value: function bindOnTitleChange() {
      var _this = this;

      var $title = this.elements.$title,
          onTitleInput = function onTitleInput(event) {
        return _this.onTitleInput(event);
      };

      $title.on('input change', onTitleInput);
    }
  }, {
    key: "removeCloseHandle",
    value: function removeCloseHandle() {
      var $metaboxContainer = this.elements.$metaboxContainer;
      $metaboxContainer.find('h2').remove();
      $metaboxContainer.find('button').remove();
      $metaboxContainer.removeClass('closed').removeClass('postbox');
    }
  }, {
    key: "prepareIconName",
    value: function prepareIconName(icon) {
      var iconName = icon.replace('_', ' ').replace('-', ' ');
      return elementorCommon.helpers.upperCaseWords(iconName);
    }
  }, {
    key: "getCreatedOn",
    value: function getCreatedOn() {
      var _this$elements = this.elements,
          $dayInput = _this$elements.$dayInput,
          $mmInput = _this$elements.$mmInput,
          $yearInput = _this$elements.$yearInput,
          $hourInput = _this$elements.$hourInput,
          $minuteInput = _this$elements.$minuteInput;
      return {
        day: $dayInput.val(),
        mm: $mmInput.val(),
        year: $yearInput.val(),
        hour: $hourInput.val(),
        minute: $minuteInput.val()
      };
    }
  }, {
    key: "enqueueCSS",
    value: function enqueueCSS(url) {
      if (!elementorCommon.elements.$document.find('link[href="' + url + '"]').length) {
        elementorCommon.elements.$document.find('link').last().after('<link href="' + url + '" rel="stylesheet" type="text/css">');
      }
    }
  }, {
    key: "setData",
    value: function setData(data) {
      this.elements.$dataInput.val((0, _stringify.default)(data));
    }
  }, {
    key: "getData",
    value: function getData() {
      var value = this.elements.$dataInput.val();
      return '' === value ? '' : JSON.parse(value);
    }
  }, {
    key: "renderIconList",
    value: function renderIconList(config) {
      var _this2 = this;

      var iconTemplate = this.getSettings('templates.icon');
      return config.icons.map(function (icon) {
        var data = {
          icon: config.displayPrefix + ' ' + config.prefix + icon,
          label: _this2.prepareIconName(icon)
        };
        return elementorCommon.compileTemplate(iconTemplate, data);
      }).join('\n');
    }
  }, {
    key: "renderIcons",
    value: function renderIcons(config) {
      var _this$elements2 = this.elements,
          $metaboxContainer = _this$elements2.$metaboxContainer,
          $metabox = _this$elements2.$metabox,
          $submitMetabox = _this$elements2.$submitMetabox;

      var _this$getSettings = this.getSettings('templates'),
          header = _this$getSettings.header,
          footer = _this$getSettings.footer;

      $metaboxContainer.addClass(this.getSettings('classes.hasIcons'));
      $submitMetabox.show();
      this.setData(config);
      this.enqueueCSS(config.url);
      $metabox.html('');
      $metaboxContainer.prepend(elementorCommon.compileTemplate(header, config));
      $metabox.append('<ul>' + this.renderIconList(config) + '</ul>');
      $metaboxContainer.append(elementorCommon.compileTemplate(footer, this.getCreatedOn()));
    }
  }, {
    key: "onTitleInput",
    value: function onTitleInput(event) {
      var data = this.getData();
      data.label = event.target.value;
      this.setData(data);
    }
  }, {
    key: "checkInputsForValues",
    value: function checkInputsForValues() {
      // If creating new icon set - check the file input for a value
      // If editing an existing icon set - check the icon set config input for a value
      if ('' !== this.elements.$fileInput.val() || '' !== this.elements.$iconSetConfigInput.val()) {
        return true;
      }

      return false;
    }
  }, {
    key: "onSuccess",
    value: function onSuccess(data) {
      var _this3 = this;

      // it is possible to add a `dropzoneElement` param to this method for implementing upload progress bar
      if (data.data.errors) {
        var id, message;
        jQuery.each(data.data.errors, function (errorId, errorMessage) {
          id = errorId;
          message = errorMessage;
          return false;
        });
        return this.showAlertDialog(id, message);
      }

      if (data.data.config.duplicate_prefix) {
        delete data.data.config.duplicatePrefix;
        return this.showAlertDialog('duplicate-prefix', this.getSettings('templates.duplicatePrefix'), function () {
          return _this3.saveInitialUpload(data.data.config);
        });
      }

      this.saveInitialUpload(data.data.config);
    }
  }, {
    key: "saveInitialUpload",
    value: function saveInitialUpload(config) {
      this.setData(config);
      var _this$elements3 = this.elements,
          $publishButton = _this$elements3.$publishButton,
          $title = _this$elements3.$title,
          $submitMetabox = _this$elements3.$submitMetabox;
      $submitMetabox.show();

      if ('' === $title.val()) {
        $title.val(config.name);
      }

      this.fileWasUploaded = true; // Flag to prevent infinite loop in the handleSubmit() method

      $publishButton.trigger('click');
    }
  }, {
    key: "onInit",
    value: function onInit() {
      var _this4 = this;

      var $body = elementorCommon.elements.$body,
          _this$getSettings2 = this.getSettings('classes'),
          editPageClass = _this$getSettings2.editPageClass,
          editPhp = _this$getSettings2.editPhp;

      if (!$body.hasClass(editPageClass) || $body.hasClass(editPhp)) {
        return;
      }

      (0, _get2.default)((0, _getPrototypeOf2.default)(CustomIcons.prototype), "onInit", this).call(this);
      this.removeCloseHandle();
      var dropzoneFieldClass = this.getSettings('fields.dropzone'),
          dropzoneField = new dropzoneFieldClass(),
          config = this.getData(),
          _this$elements4 = this.elements,
          $dropzone = _this$elements4.$dropzone,
          $metaboxContainer = _this$elements4.$metaboxContainer;

      if ('' === config) {
        $dropzone.show('fast');
        dropzoneField.setSettings('onSuccess', function () {
          return _this4.onSuccess.apply(_this4, arguments);
        });
      } else {
        this.renderIcons(config);
      }

      $metaboxContainer.show('fast');
    }
  }]);
  return CustomIcons;
}(_customAssetsBase.default);

var _default = CustomIcons;
exports.default = _default;

/***/ }),

/***/ "../modules/assets-manager/assets/js/admin/elementor-font-manager.js":
/*!***************************************************************************!*\
  !*** ../modules/assets-manager/assets/js/admin/elementor-font-manager.js ***!
  \***************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(/*! core-js/modules/es6.regexp.replace.js */ "../node_modules/core-js/modules/es6.regexp.replace.js");

__webpack_require__(/*! core-js/modules/es6.array.slice.js */ "../node_modules/core-js/modules/es6.array.slice.js");

__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _get3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/get */ "../node_modules/@babel/runtime-corejs2/helpers/get.js"));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/getPrototypeOf */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _customAssetsBase = _interopRequireDefault(__webpack_require__(/*! ./custom-assets-base */ "../modules/assets-manager/assets/js/admin/custom-assets-base.js"));

var _elementorProUpload = _interopRequireDefault(__webpack_require__(/*! ./fields/elementor-pro-upload */ "../modules/assets-manager/assets/js/admin/fields/elementor-pro-upload.js"));

var _elementorProRepeater = _interopRequireDefault(__webpack_require__(/*! ./fields/elementor-pro-repeater */ "../modules/assets-manager/assets/js/admin/fields/elementor-pro-repeater.js"));

var CustomFontsManager = /*#__PURE__*/function (_CustomAssetsBase) {
  (0, _inherits2.default)(CustomFontsManager, _CustomAssetsBase);

  var _super = (0, _createSuper2.default)(CustomFontsManager);

  function CustomFontsManager() {
    (0, _classCallCheck2.default)(this, CustomFontsManager);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(CustomFontsManager, [{
    key: "getDefaultSettings",
    value: function getDefaultSettings() {
      return {
        fields: {
          upload: _elementorProUpload.default,
          repeater: _elementorProRepeater.default
        },
        selectors: {
          editPageClass: 'post-type-elementor_font',
          title: '#title',
          repeaterBlock: '.repeater-block',
          repeaterTitle: '.repeater-title',
          removeRowBtn: '.remove-repeater-row',
          editRowBtn: '.toggle-repeater-row',
          closeRowBtn: '.close-repeater-row',
          styleInput: '.font_style',
          weightInput: '.font_weight',
          customFontsMetaBox: '#elementor-font-custommetabox',
          closeHandle: 'button.handlediv',
          toolbar: '.elementor-field-toolbar',
          inlinePreview: '.inline-preview',
          fileUrlInput: '.elementor-field-file input[type="text"]',
          postForm: '#post',
          publishButton: '#publish',
          publishButtonSpinner: '#publishing-action > .spinner'
        },
        notice: ElementorProConfig.i18n.fontsUploadEmptyNotice,
        fontLabelTemplate: '<ul class="row-font-label">' + '<li class="row-font-weight">{{weight}}</li>' + '<li class="row-font-style">{{style}}</li>' + '<li class="row-font-preview">{{preview}}</li>' + '{{toolbar}}' + '</ul>'
      };
    }
  }, {
    key: "getDefaultElements",
    value: function getDefaultElements() {
      var selectors = this.getSettings('selectors');
      return {
        $postForm: jQuery(selectors.postForm),
        $publishButton: jQuery(selectors.publishButton),
        $publishButtonSpinner: jQuery(selectors.publishButtonSpinner),
        $closeHandle: jQuery(selectors.closeHandle),
        $customFontsMetaBox: jQuery(selectors.customFontsMetaBox),
        $title: jQuery(selectors.title)
      };
    }
  }, {
    key: "renderTemplate",
    value: function renderTemplate(tpl, data) {
      var re = /{{([^}}]+)?}}/g;
      var match;

      while (match = re.exec(tpl)) {
        // eslint-disable-line no-cond-assign
        tpl = tpl.replace(match[0], data[match[1]]);
      }

      return tpl;
    }
  }, {
    key: "ucFirst",
    value: function ucFirst(string) {
      return string.charAt(0).toUpperCase() + string.slice(1);
    }
  }, {
    key: "getPreviewStyle",
    value: function getPreviewStyle($table) {
      var selectors = this.getSettings('selectors'),
          fontFamily = this.elements.$title.val(),
          style = $table.find('select' + selectors.styleInput).first().val(),
          weight = $table.find('select' + selectors.weightInput).first().val();
      return {
        style: this.ucFirst(style),
        weight: this.ucFirst(weight),
        styleAttribute: 'font-family: ' + fontFamily + ' ;font-style: ' + style + '; font-weight: ' + weight + ';'
      };
    }
  }, {
    key: "updateRowLabel",
    value: function updateRowLabel(event, $table) {
      var selectors = this.getSettings('selectors'),
          fontLabelTemplate = this.getSettings('fontLabelTemplate'),
          $block = $table.closest(selectors.repeaterBlock),
          $deleteBtn = $block.find(selectors.removeRowBtn).first(),
          $editBtn = $block.find(selectors.editRowBtn).first(),
          $closeBtn = $block.find(selectors.closeRowBtn).first(),
          $toolbar = $table.find(selectors.toolbar).last().clone(),
          previewStyle = this.getPreviewStyle($table);

      if ($editBtn.length > 0) {
        $editBtn.not(selectors.toolbar + ' ' + selectors.editRowBtn).remove();
      }

      if ($closeBtn.length > 0) {
        $closeBtn.not(selectors.toolbar + ' ' + selectors.closeRowBtn).remove();
      }

      if ($deleteBtn.length > 0) {
        $deleteBtn.not(selectors.toolbar + ' ' + selectors.removeRowBtn).remove();
      }

      var toolbarHtml = jQuery('<li class="row-font-actions">').append($toolbar)[0].outerHTML;
      return this.renderTemplate(fontLabelTemplate, {
        weight: '<span class="label">Weight:</span>' + previewStyle.weight,
        style: '<span class="label">Style:</span>' + previewStyle.style,
        preview: '<span style="' + previewStyle.styleAttribute + '">Elementor is making the web beautiful</span>',
        toolbar: toolbarHtml
      });
    }
  }, {
    key: "onRepeaterToggleVisible",
    value: function onRepeaterToggleVisible(event, $btn, $table) {
      var selectors = this.getSettings('selectors'),
          $previewElement = $table.find(selectors.inlinePreview),
          previewStyle = this.getPreviewStyle($table);
      $previewElement.attr('style', previewStyle.styleAttribute);
    }
  }, {
    key: "onRepeaterNewRow",
    value: function onRepeaterNewRow(event, $btn, $block) {
      var selectors = this.getSettings('selectors');
      $block.find(selectors.removeRowBtn).first().remove();
      $block.find(selectors.editRowBtn).first().remove();
      $block.find(selectors.closeRowBtn).first().remove();
    }
  }, {
    key: "maybeToggle",
    value: function maybeToggle(event) {
      event.preventDefault();
      var selectors = this.getSettings('selectors');

      if (jQuery(this).is(':visible') && !jQuery(event.target).hasClass(selectors.editRowBtn)) {
        jQuery(this).find(selectors.editRowBtn).trigger('click');
      }
    }
  }, {
    key: "onInputChange",
    value: function onInputChange(event) {
      var $el = jQuery(event.target).next(),
          fields = this.getSettings('fields');
      fields.upload.setFields($el);
      fields.upload.setLabels($el);
      fields.upload.replaceButtonClass($el);
    }
  }, {
    key: "bindEvents",
    value: function bindEvents() {
      var selectors = this.getSettings('selectors');
      jQuery(document).on('repeaterComputedLabel', this.updateRowLabel.bind(this)).on('onRepeaterToggleVisible', this.onRepeaterToggleVisible.bind(this)).on('onRepeaterNewRow', this.onRepeaterNewRow.bind(this)).on('click', selectors.repeaterTitle, this.maybeToggle.bind(this)).on('input', selectors.fileUrlInput, this.onInputChange.bind(this));
      (0, _get3.default)((0, _getPrototypeOf2.default)(CustomFontsManager.prototype), "bindEvents", this).call(this);
    }
  }, {
    key: "checkInputsForValues",
    value: function checkInputsForValues() {
      var selectors = this.getSettings('selectors');
      var hasValue = false; // Check the file inputs for a value

      jQuery(selectors.fileUrlInput).each(function (index, element) {
        if ('' !== jQuery(element).val()) {
          hasValue = true;
          return false; // If a value was found, break the loop
        }
      });
      return hasValue;
    }
  }, {
    key: "removeCloseHandle",
    value: function removeCloseHandle() {
      this.elements.$closeHandle.remove();
      this.elements.$customFontsMetaBox.removeClass('closed').removeClass('postbox');
    }
  }, {
    key: "titleRequired",
    value: function titleRequired() {
      this.elements.$title.prop('required', true);
    }
  }, {
    key: "onInit",
    value: function onInit() {
      var _get2;

      var settings = this.getSettings();

      if (!jQuery('body').hasClass(settings.selectors.editPageClass)) {
        return;
      }

      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      (_get2 = (0, _get3.default)((0, _getPrototypeOf2.default)(CustomFontsManager.prototype), "onInit", this)).call.apply(_get2, [this].concat(args));

      this.removeCloseHandle();
      this.titleRequired();
      settings.fields.upload.init();
      settings.fields.repeater.init();
    }
  }]);
  return CustomFontsManager;
}(_customAssetsBase.default);

exports.default = CustomFontsManager;

/***/ }),

/***/ "../modules/assets-manager/assets/js/admin/fields/elementor-pro-dropzone.js":
/*!**********************************************************************************!*\
  !*** ../modules/assets-manager/assets/js/admin/fields/elementor-pro-dropzone.js ***!
  \**********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _entries = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/entries */ "../node_modules/@babel/runtime-corejs2/core-js/object/entries.js"));

var _stringify = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/json/stringify */ "../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _get2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/get */ "../node_modules/@babel/runtime-corejs2/helpers/get.js"));

var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/getPrototypeOf */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var DropZoneField = /*#__PURE__*/function (_elementorModules$Vie) {
  (0, _inherits2.default)(DropZoneField, _elementorModules$Vie);

  var _super = (0, _createSuper2.default)(DropZoneField);

  function DropZoneField() {
    (0, _classCallCheck2.default)(this, DropZoneField);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(DropZoneField, [{
    key: "getDefaultSettings",
    value: function getDefaultSettings() {
      var baseSelector = '.elementor-dropzone-field';
      return {
        droppedFiles: false,
        selectors: {
          dropZone: baseSelector,
          input: baseSelector + ' [type="file"]',
          label: baseSelector + 'label',
          errorMsg: baseSelector + '.box__error span',
          restart: baseSelector + '.box__restart',
          browseButton: baseSelector + ' .elementor--dropzone--upload__browse',
          postId: '#post_ID'
        },
        classes: {
          drag: 'is-dragover',
          error: 'is-error',
          success: 'is-success',
          upload: 'is-uploading'
        },
        onSuccess: null,
        onError: null
      };
    }
  }, {
    key: "getDefaultElements",
    value: function getDefaultElements() {
      var elements = {};
      var selectors = this.getSettings('selectors');
      jQuery.each(selectors, function (element, selector) {
        elements['$' + element] = jQuery(selector);
      });
      return elements;
    }
  }, {
    key: "bindEvents",
    value: function bindEvents() {
      var _this = this;

      var _this$elements = this.elements,
          $dropZone = _this$elements.$dropZone,
          $browseButton = _this$elements.$browseButton,
          $input = _this$elements.$input;

      var _this$getSettings = this.getSettings('classes'),
          drag = _this$getSettings.drag;

      $browseButton.on('click', function () {
        return $input.trigger('click');
      });
      $dropZone.on('drag dragstart dragend dragover dragenter dragleave drop', function (event) {
        event.preventDefault();
        event.stopPropagation();
      }).on('dragover dragenter', function () {
        $dropZone.addClass(drag);
      }).on('dragleave dragend drop', function () {
        $dropZone.removeClass(drag);
      }).on('drop change', function (event) {
        if ('change' === event.type) {
          _this.setSettings('droppedFiles', event.originalEvent.target.files);
        } else {
          _this.setSettings('droppedFiles', event.originalEvent.dataTransfer.files);
        }

        _this.handleUpload();
      });
    }
  }, {
    key: "handleUpload",
    value: function handleUpload() {
      var _arguments = arguments;
      var droppedFiles = this.getSettings('droppedFiles');

      if (!droppedFiles) {
        return;
      }

      var _this$elements2 = this.elements,
          $input = _this$elements2.$input,
          $dropZone = _this$elements2.$dropZone,
          $postId = _this$elements2.$postId,
          $errorMsg = _this$elements2.$errorMsg,
          _this$getSettings2 = this.getSettings('classes'),
          error = _this$getSettings2.error,
          _success = _this$getSettings2.success,
          upload = _this$getSettings2.upload,
          _this$getSettings3 = this.getSettings(),
          onSuccess = _this$getSettings3.onSuccess,
          onError = _this$getSettings3.onError,
          ajaxData = new FormData(),
          fieldName = $input.attr('name'),
          actionKey = 'pro_assets_manager_custom_icon_upload',
          self = this;

      (0, _entries.default)(droppedFiles).forEach(function (file) {
        ajaxData.append(fieldName, file[1]);
      });
      ajaxData.append('actions', (0, _stringify.default)({
        pro_assets_manager_custom_icon_upload: {
          action: actionKey,
          data: {
            post_id: $postId.val()
          }
        }
      }));
      $dropZone.removeClass(_success).removeClass(error);
      elementorCommon.ajax.send('ajax', {
        data: ajaxData,
        cache: false,
        enctype: 'multipart/form-data',
        contentType: false,
        processData: false,
        //TODO: Do something with upload progress

        /*xhr: () => {
        	const xhr = jQuery.ajaxSettings.xhr();
        	xhr.upload.onprogress = ( evt ) => {
        		if ( evt.lengthComputable ) {
        			const percentComplete = Math.round( ( evt.loaded * 100 / evt.total ) );
        		}
        	};
        		return xhr;
        },*/
        complete: function complete() {
          $dropZone.removeClass(upload);
        },
        success: function success(response) {
          var data = response.responses[actionKey];
          $dropZone.addClass(data.success ? _success : error);

          if (data.success) {
            if (onSuccess) {
              onSuccess(data, self);
            }
          } else {
            $errorMsg.text(data.error);

            if (onError) {
              onError(self, _arguments);
            }
          }
        },
        error: function error() {
          if ('function' === typeof onError) {
            onError(self, _arguments);
          }
        }
      });
    }
  }, {
    key: "onInit",
    value: function onInit() {
      (0, _get2.default)((0, _getPrototypeOf2.default)(DropZoneField.prototype), "onInit", this).call(this);
      elementorCommon.elements.$document.trigger('onDropzoneLoaded', [this]);
    }
  }]);
  return DropZoneField;
}(elementorModules.ViewModule);

var _default = DropZoneField;
exports.default = _default;

/***/ }),

/***/ "../modules/assets-manager/assets/js/admin/fields/elementor-pro-repeater.js":
/*!**********************************************************************************!*\
  !*** ../modules/assets-manager/assets/js/admin/fields/elementor-pro-repeater.js ***!
  \**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/typeof */ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js"));

__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

__webpack_require__(/*! core-js/modules/es6.regexp.replace.js */ "../node_modules/core-js/modules/es6.regexp.replace.js");

__webpack_require__(/*! core-js/modules/es6.regexp.constructor.js */ "../node_modules/core-js/modules/es6.regexp.constructor.js");

__webpack_require__(/*! core-js/modules/es6.object.to-string.js */ "../node_modules/core-js/modules/es6.object.to-string.js");

__webpack_require__(/*! core-js/modules/es6.regexp.to-string.js */ "../node_modules/core-js/modules/es6.regexp.to-string.js");

module.exports = {
  selectors: {
    add: '.add-repeater-row',
    remove: '.remove-repeater-row',
    toggle: '.toggle-repeater-row',
    close: '.close-repeater-row',
    sort: '.sort-repeater-row',
    table: '.form-table',
    block: '.repeater-block',
    repeaterLabel: '.repeater-title',
    repeaterField: '.elementor-field-repeater'
  },
  counters: [],
  trigger: function trigger(eventName, params) {
    jQuery(document).trigger(eventName, params);
  },
  triggerHandler: function triggerHandler(eventName, params) {
    return jQuery(document).triggerHandler(eventName, params);
  },
  countBlocks: function countBlocks($btn) {
    return $btn.closest(this.selectors.repeaterField).find(this.selectors.block).length || 0;
  },
  add: function add(btn) {
    var self = this,
        $btn = jQuery(btn),
        id = $btn.data('template-id'),
        repeaterBlock;

    if (!self.counters.hasOwnProperty(id)) {
      self.counters[id] = self.countBlocks($btn);
    }

    self.counters[id] += 1;
    repeaterBlock = jQuery('#' + id).html();
    repeaterBlock = self.replaceAll('__counter__', self.counters[id], repeaterBlock);
    $btn.before(repeaterBlock);
    self.trigger('onRepeaterNewRow', [$btn, $btn.prev()]);
  },
  remove: function remove(btn) {
    var self = this;
    jQuery(btn).closest(self.selectors.block).remove();
  },
  toggle: function toggle(btn) {
    var self = this,
        $btn = jQuery(btn),
        $table = $btn.closest(self.selectors.block).find(self.selectors.table),
        $toggleLabel = $btn.closest(self.selectors.block).find(self.selectors.repeaterLabel);
    $table.toggle(0, 'none', function () {
      if ($table.is(':visible')) {
        $table.closest(self.selectors.block).addClass('block-visible');
        self.trigger('onRepeaterToggleVisible', [$btn, $table, $toggleLabel]);
      } else {
        $table.closest(self.selectors.block).removeClass('block-visible');
        self.trigger('onRepeaterToggleHidden', [$btn, $table, $toggleLabel]);
      }
    });
    $toggleLabel.toggle(); // Update row label

    self.updateRowLabel(btn);
  },
  close: function close(btn) {
    var self = this,
        $btn = jQuery(btn),
        $table = $btn.closest(self.selectors.block).find(self.selectors.table),
        $toggleLabel = $btn.closest(self.selectors.block).find(self.selectors.repeaterLabel);
    $table.closest(self.selectors.block).removeClass('block-visible');
    $table.hide();
    self.trigger('onRepeaterToggleHidden', [$btn, $table, $toggleLabel]);
    $toggleLabel.show();
    self.updateRowLabel(btn);
  },
  updateRowLabel: function updateRowLabel(btn) {
    var self = this,
        $btn = jQuery(btn),
        $table = $btn.closest(self.selectors.block).find(self.selectors.table),
        $toggleLabel = $btn.closest(self.selectors.block).find(self.selectors.repeaterLabel);
    var selector = $toggleLabel.data('selector'); // For some browsers, `attr` is undefined; for others,  `attr` is false.  Check for both.

    if ((0, _typeof2.default)(selector) !== ( true ? "undefined" : 0) && false !== selector) {
      var value = false,
          std = $toggleLabel.data('default');

      if ($table.find(selector).length) {
        value = $table.find(selector).val();
      } //filter hook


      var computedLabel = self.triggerHandler('repeaterComputedLabel', [$table, $toggleLabel, value]); // For some browsers, `attr` is undefined; for others,  `attr` is false.  Check for both.

      if (undefined !== computedLabel && false !== computedLabel) {
        value = computedLabel;
      } // Fallback to default row label


      if (undefined === value || false === value) {
        value = std;
      }

      $toggleLabel.html(value);
    }
  },
  replaceAll: function replaceAll(search, replace, string) {
    return string.replace(new RegExp(search, 'g'), replace);
  },
  init: function init() {
    var self = this;
    jQuery(document).on('click', this.selectors.add, function (event) {
      event.preventDefault();
      self.add(jQuery(this), event);
    }).on('click', this.selectors.remove, function (event) {
      event.preventDefault(); // eslint-disable-next-line no-alert

      var result = confirm(jQuery(this).data('confirm').toString());

      if (!result) {
        return;
      }

      self.remove(jQuery(this), event);
    }).on('click', this.selectors.toggle, function (event) {
      event.preventDefault();
      event.stopPropagation();
      self.toggle(jQuery(this), event);
    }).on('click', this.selectors.close, function (event) {
      event.preventDefault();
      event.stopPropagation();
      self.close(jQuery(this), event);
    });
    jQuery(this.selectors.toggle).each(function () {
      self.updateRowLabel(jQuery(this));
    });
    this.trigger('onRepeaterLoaded', [this]);
  }
};

/***/ }),

/***/ "../modules/assets-manager/assets/js/admin/fields/elementor-pro-upload.js":
/*!********************************************************************************!*\
  !*** ../modules/assets-manager/assets/js/admin/fields/elementor-pro-upload.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

__webpack_require__(/*! core-js/modules/es6.regexp.split.js */ "../node_modules/core-js/modules/es6.regexp.split.js");

__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/toConsumableArray */ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js"));

module.exports = {
  $btn: null,
  fileId: null,
  fileUrl: null,
  fileFrame: [],
  selectors: {
    uploadBtnClass: 'elementor-upload-btn',
    clearBtnClass: 'elementor-upload-clear-btn',
    uploadBtn: '.elementor-upload-btn',
    clearBtn: '.elementor-upload-clear-btn',
    inputURLField: '.elementor-field-file input[type="text"]'
  },
  hasValue: function hasValue() {
    return '' !== jQuery(this.fileUrl).val();
  },
  setLabels: function setLabels($el) {
    if (!this.hasValue()) {
      $el.val($el.data('upload_text'));
    } else {
      $el.val($el.data('remove_text'));
    }
  },
  setFields: function setFields(el) {
    var self = this;
    self.fileUrl = jQuery(el).prev();
    self.fileId = jQuery(self.fileUrl).prev();
  },
  setUploadParams: function setUploadParams(ext, name) {
    var uploader = this.fileFrame[name].uploader.uploader;
    uploader.param('uploadType', ext);
    uploader.param('uploadTypeCaller', 'elementor-admin-font-upload');
    uploader.param('post_id', this.getPostId());
  },
  setUploadMimeType: function setUploadMimeType(frame, ext) {
    // Set {ext} as only allowed upload extensions
    var oldExtensions = _wpPluploadSettings.defaults.filters.mime_types[0].extensions,
        self = this;
    frame.on('ready', function () {
      _wpPluploadSettings.defaults.filters.mime_types[0].extensions = ext;
    });
    frame.on('close', function () {
      // restore allowed upload extensions
      _wpPluploadSettings.defaults.filters.mime_types[0].extensions = oldExtensions;
      self.replaceButtonClass(self.$btn);
    });
  },
  replaceButtonClass: function replaceButtonClass(el) {
    if (this.hasValue()) {
      jQuery(el).removeClass(this.selectors.uploadBtnClass).addClass(this.selectors.clearBtnClass);
    } else {
      jQuery(el).removeClass(this.selectors.clearBtnClass).addClass(this.selectors.uploadBtnClass);
    }

    this.setLabels(el);
  },
  uploadFile: function uploadFile(el) {
    var _this = this;

    var self = this,
        $el = jQuery(el),
        mime = $el.attr('data-mime_type') || '',
        ext = $el.attr('data-ext') || false,
        name = $el.attr('id'); // If the media frame already exists, reopen it.

    if ('undefined' !== typeof self.fileFrame[name]) {
      if (ext) {
        self.setUploadParams(ext, name);
      }

      self.fileFrame[name].open();
      return;
    } // Create the media frame.


    self.fileFrame[name] = wp.media({
      library: {
        type: [].concat((0, _toConsumableArray2.default)(mime.split(',')), [mime.split(',').join('')])
      },
      title: $el.data('box_title'),
      button: {
        text: $el.data('box_action')
      },
      multiple: false
    }); // When an file is selected, run a callback.

    self.fileFrame[name].on('select', function () {
      // We set multiple to false so only get one image from the uploader
      var attachment = self.fileFrame[name].state().get('selection').first().toJSON(); // Do something with attachment.id and/or attachment.url here

      jQuery(self.fileId).val(attachment.id);
      jQuery(self.fileUrl).val(attachment.url);
      self.replaceButtonClass(el);
      self.updatePreview(el);
    });
    self.fileFrame[name].on('open', function () {
      var selectedId = _this.fileId.val();

      if (!selectedId) {
        return;
      }

      var selection = self.fileFrame[name].state().get('selection');
      selection.add(wp.media.attachment(selectedId));
    });
    self.setUploadMimeType(self.fileFrame[name], ext); // Finally, open the modal

    self.fileFrame[name].open();

    if (ext) {
      self.setUploadParams(ext, name);
    }
  },
  updatePreview: function updatePreview(el) {
    var self = this,
        $ul = jQuery(el).parent().find('ul'),
        $li = jQuery('<li>'),
        showUrlType = jQuery(el).data('preview_anchor') || 'full';
    $ul.html('');

    if (self.hasValue() && 'none' !== showUrlType) {
      var anchor = jQuery(self.fileUrl).val();

      if ('full' !== showUrlType) {
        anchor = anchor.substring(anchor.lastIndexOf('/') + 1);
      }

      $li.html('<a href="' + jQuery(self.fileUrl).val() + '" download>' + anchor + '</a>');
      $ul.append($li);
    }
  },
  setup: function setup() {
    var self = this;
    jQuery(self.selectors.uploadBtn + ', ' + self.selectors.clearBtn).each(function () {
      self.setFields(jQuery(this));
      self.updatePreview(jQuery(this));
      self.setLabels(jQuery(this));
      self.replaceButtonClass(jQuery(this));
    });
  },
  getPostId: function getPostId() {
    return jQuery('#post_ID').val();
  },
  handleUploadClick: function handleUploadClick(event) {
    event.preventDefault();
    var $element = jQuery(event.target);

    if ('text' === $element.attr('type')) {
      return $element.next().removeClass(this.selectors.clearBtnClass).addClass(this.selectors.uploadBtnClass).trigger('click');
    }

    this.$btn = $element;
    this.setFields($element);
    this.uploadFile($element);
  },
  init: function init() {
    var _this2 = this;

    var self = this,
        _this$selectors = this.selectors,
        uploadBtn = _this$selectors.uploadBtn,
        inputURLField = _this$selectors.inputURLField,
        clearBtn = _this$selectors.clearBtn,
        handleUpload = function handleUpload(event) {
      return _this2.handleUploadClick(event);
    };

    jQuery(document).on('click', uploadBtn, handleUpload);
    jQuery(document).on('click', inputURLField, function (event) {
      if ('' !== event.target.value) {
        handleUpload(event);
      }
    });
    jQuery(document).on('click', clearBtn, function (event) {
      event.preventDefault();
      var $element = jQuery(this);
      self.setFields($element);
      jQuery(self.fileUrl).val('');
      jQuery(self.fileId).val('');
      self.updatePreview($element);
      self.replaceButtonClass($element);
    });
    this.setup();
    jQuery(document).on('onRepeaterNewRow', function () {
      self.setup();
    });
  }
};

/***/ }),

/***/ "../modules/assets-manager/assets/js/admin/font-awesome-pro.js":
/*!*********************************************************************!*\
  !*** ../modules/assets-manager/assets/js/admin/font-awesome-pro.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _default = /*#__PURE__*/function (_elementorModules$Vie) {
  (0, _inherits2.default)(_default, _elementorModules$Vie);

  var _super = (0, _createSuper2.default)(_default);

  function _default() {
    (0, _classCallCheck2.default)(this, _default);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(_default, [{
    key: "getDefaultSettings",
    value: function getDefaultSettings() {
      return {
        selectors: {
          button: '#elementor_pro_fa_pro_validate_button',
          kitIdField: '#elementor_font_awesome_pro_kit_id'
        }
      };
    }
  }, {
    key: "getDefaultElements",
    value: function getDefaultElements() {
      var elements = {};
      var selectors = this.getSettings('selectors');
      jQuery.each(selectors, function (element, selector) {
        elements['$' + element] = jQuery(selector);
      });
      return elements;
    }
  }, {
    key: "bindEvents",
    value: function bindEvents() {
      var _this = this;

      var _this$elements = this.elements,
          $button = _this$elements.$button,
          $kitIdField = _this$elements.$kitIdField;
      $button.on('click', function (event) {
        event.preventDefault();

        _this.testKitUrl();
      });
      $kitIdField.on('change', function () {
        _this.setState('clear');
      });
    }
  }, {
    key: "setState",
    value: function setState(type) {
      var classes = ['loading', 'success', 'error'],
          $button = this.elements.$button;
      var currentClass, classIndex;

      for (classIndex in classes) {
        currentClass = classes[classIndex];

        if (type === currentClass) {
          $button.addClass(currentClass);
        } else {
          $button.removeClass(currentClass);
        }
      }
    }
  }, {
    key: "testKitUrl",
    value: function testKitUrl() {
      this.setState('loading');
      var self = this,
          kitID = this.elements.$kitIdField.val();

      if ('' === kitID) {
        this.setState('clear');
        return;
      }

      jQuery.ajax({
        url: 'https://kit.fontawesome.com/' + kitID + '.js',
        method: 'GET',
        complete: function complete(xhr) {
          if (200 !== xhr.status) {
            self.setState('error');
          } else {
            self.setState('success');
          }
        }
      });
    }
  }]);
  return _default;
}(elementorModules.ViewModule);

exports.default = _default;

/***/ }),

/***/ "../modules/assets-manager/assets/js/admin/typekit.js":
/*!************************************************************!*\
  !*** ../modules/assets-manager/assets/js/admin/typekit.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


__webpack_require__(/*! core-js/modules/es6.regexp.replace.js */ "../node_modules/core-js/modules/es6.regexp.replace.js");

module.exports = function () {
  var self = this;

  self.cacheElements = function () {
    this.cache = {
      $button: jQuery('#elementor_pro_typekit_validate_button'),
      $kitIdField: jQuery('#elementor_typekit-kit-id'),
      $dataLabelSpan: jQuery('.elementor-pro-typekit-data')
    };
  };

  self.bindEvents = function () {
    this.cache.$button.on('click', function (event) {
      event.preventDefault();
      self.fetchFonts();
    });
    this.cache.$kitIdField.on('change', function () {
      self.setState('clear');
    });
  };

  self.fetchFonts = function () {
    this.setState('loading');
    this.cache.$dataLabelSpan.addClass('hidden');
    var kitID = this.cache.$kitIdField.val();

    if ('' === kitID) {
      this.setState('clear');
      return;
    }

    jQuery.post(ajaxurl, {
      action: 'elementor_pro_admin_fetch_fonts',
      kit_id: kitID,
      _nonce: self.cache.$button.data('nonce')
    }).done(function (data) {
      if (data.success) {
        var template = self.cache.$button.data('found');
        template = template.replace('{{count}}', data.data.count);
        self.cache.$dataLabelSpan.html(template).removeClass('hidden');
        self.setState('success');
      } else {
        self.setState('error');
      }
    }).fail(function () {
      self.setState();
    });
  };

  self.setState = function (type) {
    var classes = ['loading', 'success', 'error'],
        currentClass,
        classIndex;

    for (classIndex in classes) {
      currentClass = classes[classIndex];

      if (type === currentClass) {
        this.cache.$button.addClass(currentClass);
      } else {
        this.cache.$button.removeClass(currentClass);
      }
    }
  };

  self.init = function () {
    this.cacheElements();
    this.bindEvents();
  };

  self.init();
};

/***/ }),

/***/ "../modules/forms/assets/js/admin.js":
/*!*******************************************!*\
  !*** ../modules/forms/assets/js/admin.js ***!
  \*******************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


module.exports = function () {
  var ApiValidations = __webpack_require__(/*! ./admin/api-validations */ "../modules/forms/assets/js/admin/api-validations.js");

  this.dripButton = new ApiValidations('drip_api_token');
  this.getResponse = new ApiValidations('getresponse_api_key');
  this.convertKit = new ApiValidations('convertkit_api_key');
  this.mailChimp = new ApiValidations('mailchimp_api_key');
  this.mailerLite = new ApiValidations('mailerlite_api_key');
  this.activeCcampaign = new ApiValidations('activecampaign_api_key', 'activecampaign_api_url');
};

/***/ }),

/***/ "../modules/forms/assets/js/admin/api-validations.js":
/*!***********************************************************!*\
  !*** ../modules/forms/assets/js/admin/api-validations.js ***!
  \***********************************************************/
/***/ ((module) => {

"use strict";


module.exports = function (key, fieldID) {
  var self = this;

  self.cacheElements = function () {
    this.cache = {
      $button: jQuery('#elementor_pro_' + key + '_button'),
      $apiKeyField: jQuery('#elementor_pro_' + key),
      $apiUrlField: jQuery('#elementor_pro_' + fieldID)
    };
  };

  self.bindEvents = function () {
    this.cache.$button.on('click', function (event) {
      event.preventDefault();
      self.validateApi();
    });
    this.cache.$apiKeyField.on('change', function () {
      self.setState('clear');
    });
  };

  self.validateApi = function () {
    this.setState('loading');
    var apiKey = this.cache.$apiKeyField.val();

    if ('' === apiKey) {
      this.setState('clear');
      return;
    }

    if (this.cache.$apiUrlField.length && '' === this.cache.$apiUrlField.val()) {
      this.setState('clear');
      return;
    }

    jQuery.post(ajaxurl, {
      action: self.cache.$button.data('action'),
      api_key: apiKey,
      api_url: this.cache.$apiUrlField.val(),
      _nonce: self.cache.$button.data('nonce')
    }).done(function (data) {
      if (data.success) {
        self.setState('success');
      } else {
        self.setState('error');
      }
    }).fail(function () {
      self.setState();
    });
  };

  self.setState = function (type) {
    var classes = ['loading', 'success', 'error'],
        currentClass,
        classIndex;

    for (classIndex in classes) {
      currentClass = classes[classIndex];

      if (type === currentClass) {
        this.cache.$button.addClass(currentClass);
      } else {
        this.cache.$button.removeClass(currentClass);
      }
    }
  };

  self.init = function () {
    this.cacheElements();
    this.bindEvents();
  };

  self.init();
};

/***/ }),

/***/ "../modules/library/assets/js/admin.js":
/*!*********************************************!*\
  !*** ../modules/library/assets/js/admin.js ***!
  \*********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


module.exports = function () {
  var EditButton = __webpack_require__(/*! ./admin/edit-button */ "../modules/library/assets/js/admin/edit-button.js");

  this.editButton = new EditButton();
};

/***/ }),

/***/ "../modules/library/assets/js/admin/edit-button.js":
/*!*********************************************************!*\
  !*** ../modules/library/assets/js/admin/edit-button.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

module.exports = function () {
  var self = this;

  self.init = function () {
    jQuery(document).on('change', '.elementor-widget-template-select', function () {
      var $this = jQuery(this),
          templateID = $this.val(),
          $editButton = $this.parents('p').find('.elementor-edit-template'),
          type = $this.find('[value="' + templateID + '"]').data('type');

      if ('page' !== type) {
        // 'widget' is editable only from Elementor page
        $editButton.hide();
        return;
      }

      var editUrl = ElementorProConfig.i18n.home_url + '?p=' + templateID + '&elementor';
      $editButton.prop('href', editUrl).show();
    });
  };

  self.init();
};

/***/ }),

/***/ "../modules/role-manager/assets/js/admin.js":
/*!**************************************************!*\
  !*** ../modules/role-manager/assets/js/admin.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


module.exports = function () {
  var AdvancedRoleManager = __webpack_require__(/*! ./admin/role-mananger */ "../modules/role-manager/assets/js/admin/role-mananger.js");

  this.advancedRoleManager = new AdvancedRoleManager();
};

/***/ }),

/***/ "../modules/role-manager/assets/js/admin/role-mananger.js":
/*!****************************************************************!*\
  !*** ../modules/role-manager/assets/js/admin/role-mananger.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

module.exports = function () {
  var self = this;

  self.cacheElements = function () {
    this.cache = {
      $checkBox: jQuery('input[name="elementor_exclude_user_roles[]"]'),
      $advanced: jQuery('#elementor_advanced_role_manager')
    };
  };

  self.bindEvents = function () {
    this.cache.$checkBox.on('change', function (event) {
      event.preventDefault();
      self.checkBoxUpdate(jQuery(this));
    });
  };

  self.checkBoxUpdate = function ($element) {
    var role = $element.val();

    if ($element.is(':checked')) {
      self.cache.$advanced.find('div.' + role).addClass('hidden');
    } else {
      self.cache.$advanced.find('div.' + role).removeClass('hidden');
    }
  };

  self.init = function () {
    if (!jQuery('body').hasClass('elementor_page_elementor-role-manager')) {
      return;
    }

    this.cacheElements();
    this.bindEvents();
  };

  self.init();
};

/***/ }),

/***/ "../modules/theme-builder/assets/js/admin/admin.js":
/*!*********************************************************!*\
  !*** ../modules/theme-builder/assets/js/admin/admin.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


module.exports = function () {
  var CreateTemplateDialog = __webpack_require__(/*! ./create-template-dialog */ "../modules/theme-builder/assets/js/admin/create-template-dialog.js");

  this.createTemplateDialog = new CreateTemplateDialog();
};

/***/ }),

/***/ "../modules/theme-builder/assets/js/admin/create-template-dialog.js":
/*!**************************************************************************!*\
  !*** ../modules/theme-builder/assets/js/admin/create-template-dialog.js ***!
  \**************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

module.exports = function () {
  var selectors = {
    templateTypeInput: '#elementor-new-template__form__template-type',
    locationWrapper: '#elementor-new-template__form__location__wrapper',
    postTypeWrapper: '#elementor-new-template__form__post-type__wrapper'
  };
  var elements = {
    $templateTypeInput: null,
    $locationWrapper: null,
    $postTypeWrapper: null
  };

  var setElements = function setElements() {
    jQuery.each(selectors, function (key, selector) {
      key = '$' + key;
      elements[key] = elementorNewTemplate.layout.getModal().getElements('content').find(selector);
    });
  };

  var setLocationFieldVisibility = function setLocationFieldVisibility() {
    elements.$locationWrapper.toggle('section' === elements.$templateTypeInput.val());
    elements.$postTypeWrapper.toggle('single' === elements.$templateTypeInput.val());
  };

  var run = function run() {
    setElements();
    setLocationFieldVisibility();
    elements.$templateTypeInput.on('change', setLocationFieldVisibility);
  };

  this.init = function () {
    if (!window.elementorNewTemplate) {
      return;
    } // Make sure the modal has already been initialized


    elementorNewTemplate.layout.getModal();
    run();
  };

  jQuery(setTimeout.bind(window, this.init));
};

/***/ }),

/***/ "../node_modules/core-js/library/fn/array/from.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/fn/array/from.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../../modules/es6.array.from */ "../node_modules/core-js/library/modules/es6.array.from.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Array.from;


/***/ }),

/***/ "../node_modules/core-js/library/fn/array/is-array.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/fn/array/is-array.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.array.is-array */ "../node_modules/core-js/library/modules/es6.array.is-array.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Array.isArray;


/***/ }),

/***/ "../node_modules/core-js/library/fn/json/stringify.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/fn/json/stringify.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js");
var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });
module.exports = function stringify(it) { // eslint-disable-line no-unused-vars
  return $JSON.stringify.apply($JSON, arguments);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/create.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/create.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.create */ "../node_modules/core-js/library/modules/es6.object.create.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function create(P, D) {
  return $Object.create(P, D);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/define-property.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/define-property.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.define-property */ "../node_modules/core-js/library/modules/es6.object.define-property.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function defineProperty(it, key, desc) {
  return $Object.defineProperty(it, key, desc);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/entries.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/entries.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es7.object.entries */ "../node_modules/core-js/library/modules/es7.object.entries.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.entries;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-own-property-descriptor.js":
/*!********************************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-own-property-descriptor.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.get-own-property-descriptor */ "../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function getOwnPropertyDescriptor(it, key) {
  return $Object.getOwnPropertyDescriptor(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-prototype-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-prototype-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.get-prototype-of */ "../node_modules/core-js/library/modules/es6.object.get-prototype-of.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.getPrototypeOf;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/set-prototype-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/set-prototype-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.set-prototype-of */ "../node_modules/core-js/library/modules/es6.object.set-prototype-of.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.setPrototypeOf;


/***/ }),

/***/ "../node_modules/core-js/library/fn/reflect/construct.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/fn/reflect/construct.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.reflect.construct */ "../node_modules/core-js/library/modules/es6.reflect.construct.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Reflect.construct;


/***/ }),

/***/ "../node_modules/core-js/library/fn/reflect/get.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/library/fn/reflect/get.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.reflect.get */ "../node_modules/core-js/library/modules/es6.reflect.get.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Reflect.get;


/***/ }),

/***/ "../node_modules/core-js/library/fn/symbol/index.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/fn/symbol/index.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.symbol */ "../node_modules/core-js/library/modules/es6.symbol.js");
__webpack_require__(/*! ../../modules/es6.object.to-string */ "../node_modules/core-js/library/modules/es6.object.to-string.js");
__webpack_require__(/*! ../../modules/es7.symbol.async-iterator */ "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js");
__webpack_require__(/*! ../../modules/es7.symbol.observable */ "../node_modules/core-js/library/modules/es7.symbol.observable.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Symbol;


/***/ }),

/***/ "../node_modules/core-js/library/fn/symbol/iterator.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/fn/symbol/iterator.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../../modules/web.dom.iterable */ "../node_modules/core-js/library/modules/web.dom.iterable.js");
module.exports = __webpack_require__(/*! ../../modules/_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js").f('iterator');


/***/ }),

/***/ "../node_modules/core-js/library/modules/_a-function.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_a-function.js ***!
  \**************************************************************/
/***/ ((module) => {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_add-to-unscopables.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_add-to-unscopables.js ***!
  \**********************************************************************/
/***/ ((module) => {

module.exports = function () { /* empty */ };


/***/ }),

/***/ "../node_modules/core-js/library/modules/_an-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_an-object.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-includes.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-includes.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "../node_modules/core-js/library/modules/_to-absolute-index.js");
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_bind.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_bind.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var invoke = __webpack_require__(/*! ./_invoke */ "../node_modules/core-js/library/modules/_invoke.js");
var arraySlice = [].slice;
var factories = {};

var construct = function (F, len, args) {
  if (!(len in factories)) {
    for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';
    // eslint-disable-next-line no-new-func
    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
  } return factories[len](F, args);
};

module.exports = Function.bind || function bind(that /* , ...args */) {
  var fn = aFunction(this);
  var partArgs = arraySlice.call(arguments, 1);
  var bound = function (/* args... */) {
    var args = partArgs.concat(arraySlice.call(arguments));
    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
  };
  if (isObject(fn.prototype)) bound.prototype = fn.prototype;
  return bound;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_classof.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_classof.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_cof.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_cof.js ***!
  \*******************************************************/
/***/ ((module) => {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_core.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_core.js ***!
  \********************************************************/
/***/ ((module) => {

var core = module.exports = { version: '2.6.12' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/library/modules/_create-property.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_create-property.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $defineProperty = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");

module.exports = function (object, index, value) {
  if (index in object) $defineProperty.f(object, index, createDesc(0, value));
  else object[index] = value;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_ctx.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_ctx.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// optional / simple context binding
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_defined.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_defined.js ***!
  \***********************************************************/
/***/ ((module) => {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_descriptors.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_descriptors.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_dom-create.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_dom-create.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_enum-bug-keys.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_enum-bug-keys.js ***!
  \*****************************************************************/
/***/ ((module) => {

// IE 8- don't enum bug keys
module.exports = (
  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');


/***/ }),

/***/ "../node_modules/core-js/library/modules/_enum-keys.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_enum-keys.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// all enumerable object keys, includes symbols
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
module.exports = function (it) {
  var result = getKeys(it);
  var getSymbols = gOPS.f;
  if (getSymbols) {
    var symbols = getSymbols(it);
    var isEnum = pIE.f;
    var i = 0;
    var key;
    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
  } return result;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_export.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_export.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var IS_WRAP = type & $export.W;
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE];
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
  var key, own, out;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    if (own && has(exports, key)) continue;
    // export native or passed
    out = own ? target[key] : source[key];
    // prevent global pollution for namespaces
    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
    // bind timers to global for call from export context
    : IS_BIND && own ? ctx(out, global)
    // wrap global constructors for prevent change them in library
    : IS_WRAP && target[key] == out ? (function (C) {
      var F = function (a, b, c) {
        if (this instanceof C) {
          switch (arguments.length) {
            case 0: return new C();
            case 1: return new C(a);
            case 2: return new C(a, b);
          } return new C(a, b, c);
        } return C.apply(this, arguments);
      };
      F[PROTOTYPE] = C[PROTOTYPE];
      return F;
    // make static versions for prototype methods
    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
    if (IS_PROTO) {
      (exports.virtual || (exports.virtual = {}))[key] = out;
      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
    }
  }
};
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_fails.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_fails.js ***!
  \*********************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_global.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_global.js ***!
  \**********************************************************/
/***/ ((module) => {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/library/modules/_has.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_has.js ***!
  \*******************************************************/
/***/ ((module) => {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_hide.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_hide.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_html.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_html.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").document;
module.exports = document && document.documentElement;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_ie8-dom-define.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_ie8-dom-define.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_invoke.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_invoke.js ***!
  \**********************************************************/
/***/ ((module) => {

// fast apply, http://jsperf.lnkit.com/fast-apply/5
module.exports = function (fn, args, that) {
  var un = that === undefined;
  switch (args.length) {
    case 0: return un ? fn()
                      : fn.call(that);
    case 1: return un ? fn(args[0])
                      : fn.call(that, args[0]);
    case 2: return un ? fn(args[0], args[1])
                      : fn.call(that, args[0], args[1]);
    case 3: return un ? fn(args[0], args[1], args[2])
                      : fn.call(that, args[0], args[1], args[2]);
    case 4: return un ? fn(args[0], args[1], args[2], args[3])
                      : fn.call(that, args[0], args[1], args[2], args[3]);
  } return fn.apply(that, args);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iobject.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iobject.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-array-iter.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-array-iter.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// check on default Array iterator
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var ArrayProto = Array.prototype;

module.exports = function (it) {
  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-array.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-array.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-object.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-call.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-call.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// call something on iterator step with safe closing on error
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
module.exports = function (iterator, fn, value, entries) {
  try {
    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
  // 7.4.6 IteratorClose(iterator, completion)
  } catch (e) {
    var ret = iterator['return'];
    if (ret !== undefined) anObject(ret.call(iterator));
    throw e;
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-create.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-create.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var descriptor = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var IteratorPrototype = {};

// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
__webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js")(IteratorPrototype, __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator'), function () { return this; });

module.exports = function (Constructor, NAME, next) {
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
  setToStringTag(Constructor, NAME + ' Iterator');
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-define.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-define.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var $iterCreate = __webpack_require__(/*! ./_iter-create */ "../node_modules/core-js/library/modules/_iter-create.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';

var returnThis = function () { return this; };

module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
  $iterCreate(Constructor, NAME, next);
  var getMethod = function (kind) {
    if (!BUGGY && kind in proto) return proto[kind];
    switch (kind) {
      case KEYS: return function keys() { return new Constructor(this, kind); };
      case VALUES: return function values() { return new Constructor(this, kind); };
    } return function entries() { return new Constructor(this, kind); };
  };
  var TAG = NAME + ' Iterator';
  var DEF_VALUES = DEFAULT == VALUES;
  var VALUES_BUG = false;
  var proto = Base.prototype;
  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
  var $default = $native || getMethod(DEFAULT);
  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
  var methods, key, IteratorPrototype;
  // Fix native
  if ($anyNative) {
    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
      // Set @@toStringTag to native iterators
      setToStringTag(IteratorPrototype, TAG, true);
      // fix for some old engines
      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
    }
  }
  // fix Array#{values, @@iterator}.name in V8 / FF
  if (DEF_VALUES && $native && $native.name !== VALUES) {
    VALUES_BUG = true;
    $default = function values() { return $native.call(this); };
  }
  // Define iterator
  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
    hide(proto, ITERATOR, $default);
  }
  // Plug for library
  Iterators[NAME] = $default;
  Iterators[TAG] = returnThis;
  if (DEFAULT) {
    methods = {
      values: DEF_VALUES ? $default : getMethod(VALUES),
      keys: IS_SET ? $default : getMethod(KEYS),
      entries: $entries
    };
    if (FORCED) for (key in methods) {
      if (!(key in proto)) redefine(proto, key, methods[key]);
    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
  }
  return methods;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-detect.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-detect.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var SAFE_CLOSING = false;

try {
  var riter = [7][ITERATOR]();
  riter['return'] = function () { SAFE_CLOSING = true; };
  // eslint-disable-next-line no-throw-literal
  Array.from(riter, function () { throw 2; });
} catch (e) { /* empty */ }

module.exports = function (exec, skipClosing) {
  if (!skipClosing && !SAFE_CLOSING) return false;
  var safe = false;
  try {
    var arr = [7];
    var iter = arr[ITERATOR]();
    iter.next = function () { return { done: safe = true }; };
    arr[ITERATOR] = function () { return iter; };
    exec(arr);
  } catch (e) { /* empty */ }
  return safe;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-step.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-step.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = function (done, value) {
  return { value: value, done: !!done };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iterators.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iterators.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = {};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_library.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_library.js ***!
  \***********************************************************/
/***/ ((module) => {

module.exports = true;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_meta.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_meta.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var META = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js")('meta');
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var setDesc = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var id = 0;
var isExtensible = Object.isExtensible || function () {
  return true;
};
var FREEZE = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return isExtensible(Object.preventExtensions({}));
});
var setMeta = function (it) {
  setDesc(it, META, { value: {
    i: 'O' + ++id, // object ID
    w: {}          // weak collections IDs
  } });
};
var fastKey = function (it, create) {
  // return primitive with prefix
  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return 'F';
    // not necessary to add metadata
    if (!create) return 'E';
    // add missing metadata
    setMeta(it);
  // return object ID
  } return it[META].i;
};
var getWeak = function (it, create) {
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return true;
    // not necessary to add metadata
    if (!create) return false;
    // add missing metadata
    setMeta(it);
  // return hash weak collections IDs
  } return it[META].w;
};
// add metadata on freeze-family methods calling
var onFreeze = function (it) {
  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
  return it;
};
var meta = module.exports = {
  KEY: META,
  NEED: false,
  fastKey: fastKey,
  getWeak: getWeak,
  onFreeze: onFreeze
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-create.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-create.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var dPs = __webpack_require__(/*! ./_object-dps */ "../node_modules/core-js/library/modules/_object-dps.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');
var Empty = function () { /* empty */ };
var PROTOTYPE = 'prototype';

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = __webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js")('iframe');
  var i = enumBugKeys.length;
  var lt = '<';
  var gt = '>';
  var iframeDocument;
  iframe.style.display = 'none';
  __webpack_require__(/*! ./_html */ "../node_modules/core-js/library/modules/_html.js").appendChild(iframe);
  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
  // createDict = iframe.contentWindow.Object;
  // html.removeChild(iframe);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
  iframeDocument.close();
  createDict = iframeDocument.F;
  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
  return createDict();
};

module.exports = Object.create || function create(O, Properties) {
  var result;
  if (O !== null) {
    Empty[PROTOTYPE] = anObject(O);
    result = new Empty();
    Empty[PROTOTYPE] = null;
    // add "__proto__" for Object.getPrototypeOf polyfill
    result[IE_PROTO] = O;
  } else result = createDict();
  return Properties === undefined ? result : dPs(result, Properties);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-dp.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-dp.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/library/modules/_ie8-dom-define.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var dP = Object.defineProperty;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-dps.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-dps.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");

module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var keys = getKeys(Properties);
  var length = keys.length;
  var i = 0;
  var P;
  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopd.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopd.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/library/modules/_ie8-dom-define.js");
var gOPD = Object.getOwnPropertyDescriptor;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? gOPD : function getOwnPropertyDescriptor(O, P) {
  O = toIObject(O);
  P = toPrimitive(P, true);
  if (IE8_DOM_DEFINE) try {
    return gOPD(O, P);
  } catch (e) { /* empty */ }
  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopn-ext.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopn-ext.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var gOPN = __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js").f;
var toString = {}.toString;

var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
  ? Object.getOwnPropertyNames(window) : [];

var getWindowNames = function (it) {
  try {
    return gOPN(it);
  } catch (e) {
    return windowNames.slice();
  }
};

module.exports.f = function getOwnPropertyNames(it) {
  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopn.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopn.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/library/modules/_object-keys-internal.js");
var hiddenKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js").concat('length', 'prototype');

exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
  return $keys(O, hiddenKeys);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gops.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gops.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports) => {

exports.f = Object.getOwnPropertySymbols;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gpo.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gpo.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');
var ObjectProto = Object.prototype;

module.exports = Object.getPrototypeOf || function (O) {
  O = toObject(O);
  if (has(O, IE_PROTO)) return O[IE_PROTO];
  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
    return O.constructor.prototype;
  } return O instanceof Object ? ObjectProto : null;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-keys-internal.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-keys-internal.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var arrayIndexOf = __webpack_require__(/*! ./_array-includes */ "../node_modules/core-js/library/modules/_array-includes.js")(false);
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');

module.exports = function (object, names) {
  var O = toIObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (has(O, key = names[i++])) {
    ~arrayIndexOf(result, key) || result.push(key);
  }
  return result;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-keys.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-keys.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/library/modules/_object-keys-internal.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js");

module.exports = Object.keys || function keys(O) {
  return $keys(O, enumBugKeys);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-pie.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-pie.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports) => {

exports.f = {}.propertyIsEnumerable;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-sap.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-sap.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// most Object methods by ES6 should accept primitives
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
module.exports = function (KEY, exec) {
  var fn = (core.Object || {})[KEY] || Object[KEY];
  var exp = {};
  exp[KEY] = exec(fn);
  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-to-array.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-to-array.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var isEnum = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js").f;
module.exports = function (isEntries) {
  return function (it) {
    var O = toIObject(it);
    var keys = getKeys(O);
    var length = keys.length;
    var i = 0;
    var result = [];
    var key;
    while (length > i) {
      key = keys[i++];
      if (!DESCRIPTORS || isEnum.call(O, key)) {
        result.push(isEntries ? [key, O[key]] : O[key]);
      }
    }
    return result;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_property-desc.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_property-desc.js ***!
  \*****************************************************************/
/***/ ((module) => {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_redefine.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_redefine.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-proto.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-proto.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var check = function (O, proto) {
  anObject(O);
  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
};
module.exports = {
  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
    function (test, buggy, set) {
      try {
        set = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js")(Function.call, __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js").f(Object.prototype, '__proto__').set, 2);
        set(test, []);
        buggy = !(test instanceof Array);
      } catch (e) { buggy = true; }
      return function setPrototypeOf(O, proto) {
        check(O, proto);
        if (buggy) O.__proto__ = proto;
        else set(O, proto);
        return O;
      };
    }({}, false) : undefined),
  check: check
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-to-string-tag.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-to-string-tag.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var def = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');

module.exports = function (it, tag, stat) {
  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_shared-key.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_shared-key.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js")('keys');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
module.exports = function (key) {
  return shared[key] || (shared[key] = uid(key));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_shared.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_shared.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js") ? 'pure' : 'global',
  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_string-at.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_string-at.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-absolute-index.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-absolute-index.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-integer.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-integer.js ***!
  \**************************************************************/
/***/ ((module) => {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-iobject.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-iobject.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/library/modules/_iobject.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-length.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-length.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.15 ToLength
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-object.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-primitive.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-primitive.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_uid.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_uid.js ***!
  \*******************************************************/
/***/ ((module) => {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks-define.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks-define.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var wksExt = __webpack_require__(/*! ./_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js");
var defineProperty = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
module.exports = function (name) {
  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks-ext.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks-ext.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

exports.f = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js");


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var store = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js")('wks');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
var Symbol = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),

/***/ "../node_modules/core-js/library/modules/core.get-iterator-method.js":
/*!***************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/core.get-iterator-method.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/library/modules/_classof.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
module.exports = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js").getIteratorMethod = function (it) {
  if (it != undefined) return it[ITERATOR]
    || it['@@iterator']
    || Iterators[classof(it)];
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.from.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.from.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var call = __webpack_require__(/*! ./_iter-call */ "../node_modules/core-js/library/modules/_iter-call.js");
var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "../node_modules/core-js/library/modules/_is-array-iter.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var createProperty = __webpack_require__(/*! ./_create-property */ "../node_modules/core-js/library/modules/_create-property.js");
var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "../node_modules/core-js/library/modules/core.get-iterator-method.js");

$export($export.S + $export.F * !__webpack_require__(/*! ./_iter-detect */ "../node_modules/core-js/library/modules/_iter-detect.js")(function (iter) { Array.from(iter); }), 'Array', {
  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
    var O = toObject(arrayLike);
    var C = typeof this == 'function' ? this : Array;
    var aLen = arguments.length;
    var mapfn = aLen > 1 ? arguments[1] : undefined;
    var mapping = mapfn !== undefined;
    var index = 0;
    var iterFn = getIterFn(O);
    var length, result, step, iterator;
    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
    // if object isn't iterable or it's array with default iterator - use simple case
    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
      }
    } else {
      length = toLength(O.length);
      for (result = new C(length); length > index; index++) {
        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
      }
    }
    result.length = index;
    return result;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.is-array.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.is-array.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");

$export($export.S, 'Array', { isArray: __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.iterator.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.iterator.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/library/modules/_add-to-unscopables.js");
var step = __webpack_require__(/*! ./_iter-step */ "../node_modules/core-js/library/modules/_iter-step.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");

// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
module.exports = __webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/library/modules/_iter-define.js")(Array, 'Array', function (iterated, kind) {
  this._t = toIObject(iterated); // target
  this._i = 0;                   // next index
  this._k = kind;                // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var kind = this._k;
  var index = this._i++;
  if (!O || index >= O.length) {
    this._t = undefined;
    return step(1);
  }
  if (kind == 'keys') return step(0, index);
  if (kind == 'values') return step(0, O[index]);
  return step(0, [index, O[index]]);
}, 'values');

// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
Iterators.Arguments = Iterators.Array;

addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.create.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.create.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
$export($export.S, 'Object', { create: __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.define-property.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.define-property.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js"), 'Object', { defineProperty: __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js":
/*!*****************************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js ***!
  \*****************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var $getOwnPropertyDescriptor = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js").f;

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('getOwnPropertyDescriptor', function () {
  return function getOwnPropertyDescriptor(it, key) {
    return $getOwnPropertyDescriptor(toIObject(it), key);
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.get-prototype-of.js":
/*!******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.get-prototype-of.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 Object.getPrototypeOf(O)
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var $getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('getPrototypeOf', function () {
  return function getPrototypeOf(it) {
    return $getPrototypeOf(toObject(it));
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.set-prototype-of.js":
/*!******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.set-prototype-of.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.3.19 Object.setPrototypeOf(O, proto)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(/*! ./_set-proto */ "../node_modules/core-js/library/modules/_set-proto.js").set });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.to-string.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.to-string.js ***!
  \***********************************************************************/
/***/ (() => {



/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.reflect.construct.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.reflect.construct.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var bind = __webpack_require__(/*! ./_bind */ "../node_modules/core-js/library/modules/_bind.js");
var rConstruct = (__webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Reflect || {}).construct;

// MS Edge supports only 2 arguments and argumentsList argument is optional
// FF Nightly sets third argument as `new.target`, but does not create `this` from it
var NEW_TARGET_BUG = fails(function () {
  function F() { /* empty */ }
  return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);
});
var ARGS_BUG = !fails(function () {
  rConstruct(function () { /* empty */ });
});

$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {
  construct: function construct(Target, args /* , newTarget */) {
    aFunction(Target);
    anObject(args);
    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
    if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);
    if (Target == newTarget) {
      // w/o altered newTarget, optimization for 0-4 arguments
      switch (args.length) {
        case 0: return new Target();
        case 1: return new Target(args[0]);
        case 2: return new Target(args[0], args[1]);
        case 3: return new Target(args[0], args[1], args[2]);
        case 4: return new Target(args[0], args[1], args[2], args[3]);
      }
      // w/o altered newTarget, lot of arguments case
      var $args = [null];
      $args.push.apply($args, args);
      return new (bind.apply(Target, $args))();
    }
    // with altered newTarget, not support built-in constructors
    var proto = newTarget.prototype;
    var instance = create(isObject(proto) ? proto : Object.prototype);
    var result = Function.apply.call(Target, instance, args);
    return isObject(result) ? result : instance;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.reflect.get.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.reflect.get.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.6 Reflect.get(target, propertyKey [, receiver])
var gOPD = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js");
var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");

function get(target, propertyKey /* , receiver */) {
  var receiver = arguments.length < 3 ? target : arguments[2];
  var desc, proto;
  if (anObject(target) === receiver) return target[propertyKey];
  if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')
    ? desc.value
    : desc.get !== undefined
      ? desc.get.call(receiver)
      : undefined;
  if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);
}

$export($export.S, 'Reflect', { get: get });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.string.iterator.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.string.iterator.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $at = __webpack_require__(/*! ./_string-at */ "../node_modules/core-js/library/modules/_string-at.js")(true);

// 21.1.3.27 String.prototype[@@iterator]()
__webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/library/modules/_iter-define.js")(String, 'String', function (iterated) {
  this._t = String(iterated); // target
  this._i = 0;                // next index
// 21.1.5.2.1 %StringIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var index = this._i;
  var point;
  if (index >= O.length) return { value: undefined, done: true };
  point = $at(O, index);
  this._i += point.length;
  return { value: point, done: false };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.symbol.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.symbol.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// ECMAScript 6 symbols shim
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var META = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js").KEY;
var $fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
var wks = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js");
var wksExt = __webpack_require__(/*! ./_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js");
var wksDefine = __webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js");
var enumKeys = __webpack_require__(/*! ./_enum-keys */ "../node_modules/core-js/library/modules/_enum-keys.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var _create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var gOPNExt = __webpack_require__(/*! ./_object-gopn-ext */ "../node_modules/core-js/library/modules/_object-gopn-ext.js");
var $GOPD = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js");
var $GOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var $DP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var $keys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPD = $GOPD.f;
var dP = $DP.f;
var gOPN = gOPNExt.f;
var $Symbol = global.Symbol;
var $JSON = global.JSON;
var _stringify = $JSON && $JSON.stringify;
var PROTOTYPE = 'prototype';
var HIDDEN = wks('_hidden');
var TO_PRIMITIVE = wks('toPrimitive');
var isEnum = {}.propertyIsEnumerable;
var SymbolRegistry = shared('symbol-registry');
var AllSymbols = shared('symbols');
var OPSymbols = shared('op-symbols');
var ObjectProto = Object[PROTOTYPE];
var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
var QObject = global.QObject;
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;

// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
var setSymbolDesc = DESCRIPTORS && $fails(function () {
  return _create(dP({}, 'a', {
    get: function () { return dP(this, 'a', { value: 7 }).a; }
  })).a != 7;
}) ? function (it, key, D) {
  var protoDesc = gOPD(ObjectProto, key);
  if (protoDesc) delete ObjectProto[key];
  dP(it, key, D);
  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
} : dP;

var wrap = function (tag) {
  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
  sym._k = tag;
  return sym;
};

var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
  return typeof it == 'symbol';
} : function (it) {
  return it instanceof $Symbol;
};

var $defineProperty = function defineProperty(it, key, D) {
  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
  anObject(it);
  key = toPrimitive(key, true);
  anObject(D);
  if (has(AllSymbols, key)) {
    if (!D.enumerable) {
      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
      it[HIDDEN][key] = true;
    } else {
      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
      D = _create(D, { enumerable: createDesc(0, false) });
    } return setSymbolDesc(it, key, D);
  } return dP(it, key, D);
};
var $defineProperties = function defineProperties(it, P) {
  anObject(it);
  var keys = enumKeys(P = toIObject(P));
  var i = 0;
  var l = keys.length;
  var key;
  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
  return it;
};
var $create = function create(it, P) {
  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
};
var $propertyIsEnumerable = function propertyIsEnumerable(key) {
  var E = isEnum.call(this, key = toPrimitive(key, true));
  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
  it = toIObject(it);
  key = toPrimitive(key, true);
  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
  var D = gOPD(it, key);
  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
  return D;
};
var $getOwnPropertyNames = function getOwnPropertyNames(it) {
  var names = gOPN(toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
  } return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
  var IS_OP = it === ObjectProto;
  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
  } return result;
};

// 19.4.1.1 Symbol([description])
if (!USE_NATIVE) {
  $Symbol = function Symbol() {
    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
    var $set = function (value) {
      if (this === ObjectProto) $set.call(OPSymbols, value);
      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
      setSymbolDesc(this, tag, createDesc(1, value));
    };
    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
    return wrap(tag);
  };
  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
    return this._k;
  });

  $GOPD.f = $getOwnPropertyDescriptor;
  $DP.f = $defineProperty;
  __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js").f = gOPNExt.f = $getOwnPropertyNames;
  __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js").f = $propertyIsEnumerable;
  $GOPS.f = $getOwnPropertySymbols;

  if (DESCRIPTORS && !__webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js")) {
    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
  }

  wksExt.f = function (name) {
    return wrap(wks(name));
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });

for (var es6Symbols = (
  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);

for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);

$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
  // 19.4.2.1 Symbol.for(key)
  'for': function (key) {
    return has(SymbolRegistry, key += '')
      ? SymbolRegistry[key]
      : SymbolRegistry[key] = $Symbol(key);
  },
  // 19.4.2.5 Symbol.keyFor(sym)
  keyFor: function keyFor(sym) {
    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
  },
  useSetter: function () { setter = true; },
  useSimple: function () { setter = false; }
});

$export($export.S + $export.F * !USE_NATIVE, 'Object', {
  // 19.1.2.2 Object.create(O [, Properties])
  create: $create,
  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
  defineProperty: $defineProperty,
  // 19.1.2.3 Object.defineProperties(O, Properties)
  defineProperties: $defineProperties,
  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
  // 19.1.2.7 Object.getOwnPropertyNames(O)
  getOwnPropertyNames: $getOwnPropertyNames,
  // 19.1.2.8 Object.getOwnPropertySymbols(O)
  getOwnPropertySymbols: $getOwnPropertySymbols
});

// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
// https://bugs.chromium.org/p/v8/issues/detail?id=3443
var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });

$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
    return $GOPS.f(toObject(it));
  }
});

// 24.3.2 JSON.stringify(value [, replacer [, space]])
$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
  var S = $Symbol();
  // MS Edge converts symbol values to JSON as {}
  // WebKit converts symbol values to JSON as null
  // V8 throws on boxed symbols
  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
})), 'JSON', {
  stringify: function stringify(it) {
    var args = [it];
    var i = 1;
    var replacer, $replacer;
    while (arguments.length > i) args.push(arguments[i++]);
    $replacer = replacer = args[1];
    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
    if (!isArray(replacer)) replacer = function (key, value) {
      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
      if (!isSymbol(value)) return value;
    };
    args[1] = replacer;
    return _stringify.apply($JSON, args);
  }
});

// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
// 19.4.3.5 Symbol.prototype[@@toStringTag]
setToStringTag($Symbol, 'Symbol');
// 20.2.1.9 Math[@@toStringTag]
setToStringTag(Math, 'Math', true);
// 24.3.3 JSON[@@toStringTag]
setToStringTag(global.JSON, 'JSON', true);


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.object.entries.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.object.entries.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-object-values-entries
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var $entries = __webpack_require__(/*! ./_object-to-array */ "../node_modules/core-js/library/modules/_object-to-array.js")(true);

$export($export.S, 'Object', {
  entries: function entries(it) {
    return $entries(it);
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js":
/*!****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.symbol.async-iterator.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js")('asyncIterator');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.symbol.observable.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.symbol.observable.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js")('observable');


/***/ }),

/***/ "../node_modules/core-js/library/modules/web.dom.iterable.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/web.dom.iterable.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./es6.array.iterator */ "../node_modules/core-js/library/modules/es6.array.iterator.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var TO_STRING_TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');

var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
  'TextTrackList,TouchList').split(',');

for (var i = 0; i < DOMIterables.length; i++) {
  var NAME = DOMIterables[i];
  var Collection = global[NAME];
  var proto = Collection && Collection.prototype;
  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
  Iterators[NAME] = Iterators.Array;
}


/***/ }),

/***/ "../node_modules/core-js/modules/_a-function.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_a-function.js ***!
  \******************************************************/
/***/ ((module) => {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_add-to-unscopables.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/_add-to-unscopables.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 22.1.3.31 Array.prototype[@@unscopables]
var UNSCOPABLES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('unscopables');
var ArrayProto = Array.prototype;
if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js")(ArrayProto, UNSCOPABLES, {});
module.exports = function (key) {
  ArrayProto[UNSCOPABLES][key] = true;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_advance-string-index.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_advance-string-index.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var at = __webpack_require__(/*! ./_string-at */ "../node_modules/core-js/modules/_string-at.js")(true);

 // `AdvanceStringIndex` abstract operation
// https://tc39.github.io/ecma262/#sec-advancestringindex
module.exports = function (S, index, unicode) {
  return index + (unicode ? at(S, index).length : 1);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_an-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_an-object.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-includes.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/_array-includes.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/modules/_to-iobject.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "../node_modules/core-js/modules/_to-absolute-index.js");
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-methods.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_array-methods.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 0 -> Array#forEach
// 1 -> Array#map
// 2 -> Array#filter
// 3 -> Array#some
// 4 -> Array#every
// 5 -> Array#find
// 6 -> Array#findIndex
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js");
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/modules/_iobject.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/modules/_to-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var asc = __webpack_require__(/*! ./_array-species-create */ "../node_modules/core-js/modules/_array-species-create.js");
module.exports = function (TYPE, $create) {
  var IS_MAP = TYPE == 1;
  var IS_FILTER = TYPE == 2;
  var IS_SOME = TYPE == 3;
  var IS_EVERY = TYPE == 4;
  var IS_FIND_INDEX = TYPE == 6;
  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
  var create = $create || asc;
  return function ($this, callbackfn, that) {
    var O = toObject($this);
    var self = IObject(O);
    var f = ctx(callbackfn, that, 3);
    var length = toLength(self.length);
    var index = 0;
    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
    var val, res;
    for (;length > index; index++) if (NO_HOLES || index in self) {
      val = self[index];
      res = f(val, index, O);
      if (TYPE) {
        if (IS_MAP) result[index] = res;   // map
        else if (res) switch (TYPE) {
          case 3: return true;             // some
          case 5: return val;              // find
          case 6: return index;            // findIndex
          case 2: result.push(val);        // filter
        } else if (IS_EVERY) return false; // every
      }
    }
    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-species-constructor.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/modules/_array-species-constructor.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/modules/_is-array.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('species');

module.exports = function (original) {
  var C;
  if (isArray(original)) {
    C = original.constructor;
    // cross-realm fallback
    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
    if (isObject(C)) {
      C = C[SPECIES];
      if (C === null) C = undefined;
    }
  } return C === undefined ? Array : C;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-species-create.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_array-species-create.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
var speciesConstructor = __webpack_require__(/*! ./_array-species-constructor */ "../node_modules/core-js/modules/_array-species-constructor.js");

module.exports = function (original, length) {
  return new (speciesConstructor(original))(length);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_classof.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_classof.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_cof.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_cof.js ***!
  \***********************************************/
/***/ ((module) => {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_core.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_core.js ***!
  \************************************************/
/***/ ((module) => {

var core = module.exports = { version: '2.6.12' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/modules/_ctx.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_ctx.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// optional / simple context binding
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/modules/_a-function.js");
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_defined.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_defined.js ***!
  \***************************************************/
/***/ ((module) => {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_descriptors.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_descriptors.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/modules/_dom-create.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_dom-create.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),

/***/ "../node_modules/core-js/modules/_enum-bug-keys.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_enum-bug-keys.js ***!
  \*********************************************************/
/***/ ((module) => {

// IE 8- don't enum bug keys
module.exports = (
  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');


/***/ }),

/***/ "../node_modules/core-js/modules/_export.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_export.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js");
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
  var key, own, out, exp;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    // export native or passed
    out = (own ? target : source)[key];
    // bind timers to global for call from export context
    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // extend global
    if (target) redefine(target, key, out, type & $export.U);
    // export
    if (exports[key] != out) hide(exports, key, exp);
    if (IS_PROTO && expProto[key] != out) expProto[key] = out;
  }
};
global.core = core;
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),

/***/ "../node_modules/core-js/modules/_fails.js":
/*!*************************************************!*\
  !*** ../node_modules/core-js/modules/_fails.js ***!
  \*************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),

/***/ "../node_modules/core-js/modules/_fix-re-wks.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_fix-re-wks.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

__webpack_require__(/*! ./es6.regexp.exec */ "../node_modules/core-js/modules/es6.regexp.exec.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
var wks = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js");
var regexpExec = __webpack_require__(/*! ./_regexp-exec */ "../node_modules/core-js/modules/_regexp-exec.js");

var SPECIES = wks('species');

var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
  // #replace needs built-in support for named groups.
  // #match works fine because it just return the exec results, even if it has
  // a "grops" property.
  var re = /./;
  re.exec = function () {
    var result = [];
    result.groups = { a: '7' };
    return result;
  };
  return ''.replace(re, '$<a>') !== '7';
});

var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {
  // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
  var re = /(?:)/;
  var originalExec = re.exec;
  re.exec = function () { return originalExec.apply(this, arguments); };
  var result = 'ab'.split(re);
  return result.length === 2 && result[0] === 'a' && result[1] === 'b';
})();

module.exports = function (KEY, length, exec) {
  var SYMBOL = wks(KEY);

  var DELEGATES_TO_SYMBOL = !fails(function () {
    // String methods call symbol-named RegEp methods
    var O = {};
    O[SYMBOL] = function () { return 7; };
    return ''[KEY](O) != 7;
  });

  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {
    // Symbol-named RegExp methods call .exec
    var execCalled = false;
    var re = /a/;
    re.exec = function () { execCalled = true; return null; };
    if (KEY === 'split') {
      // RegExp[@@split] doesn't call the regex's exec method, but first creates
      // a new one. We need to return the patched regex when creating the new one.
      re.constructor = {};
      re.constructor[SPECIES] = function () { return re; };
    }
    re[SYMBOL]('');
    return !execCalled;
  }) : undefined;

  if (
    !DELEGATES_TO_SYMBOL ||
    !DELEGATES_TO_EXEC ||
    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||
    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
  ) {
    var nativeRegExpMethod = /./[SYMBOL];
    var fns = exec(
      defined,
      SYMBOL,
      ''[KEY],
      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {
        if (regexp.exec === regexpExec) {
          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
            // The native String method already delegates to @@method (this
            // polyfilled function), leasing to infinite recursion.
            // We avoid it by directly calling the native @@method method.
            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
          }
          return { done: true, value: nativeMethod.call(str, regexp, arg2) };
        }
        return { done: false };
      }
    );
    var strfn = fns[0];
    var rxfn = fns[1];

    redefine(String.prototype, KEY, strfn);
    hide(RegExp.prototype, SYMBOL, length == 2
      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
      // 21.2.5.11 RegExp.prototype[@@split](string, limit)
      ? function (string, arg) { return rxfn.call(string, this, arg); }
      // 21.2.5.6 RegExp.prototype[@@match](string)
      // 21.2.5.9 RegExp.prototype[@@search](string)
      : function (string) { return rxfn.call(string, this); }
    );
  }
};


/***/ }),

/***/ "../node_modules/core-js/modules/_flags.js":
/*!*************************************************!*\
  !*** ../node_modules/core-js/modules/_flags.js ***!
  \*************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 21.2.5.3 get RegExp.prototype.flags
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
module.exports = function () {
  var that = anObject(this);
  var result = '';
  if (that.global) result += 'g';
  if (that.ignoreCase) result += 'i';
  if (that.multiline) result += 'm';
  if (that.unicode) result += 'u';
  if (that.sticky) result += 'y';
  return result;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_function-to-string.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/_function-to-string.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('native-function-to-string', Function.toString);


/***/ }),

/***/ "../node_modules/core-js/modules/_global.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_global.js ***!
  \**************************************************/
/***/ ((module) => {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/modules/_has.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_has.js ***!
  \***********************************************/
/***/ ((module) => {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_hide.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_hide.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/modules/_property-desc.js");
module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_html.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_html.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").document;
module.exports = document && document.documentElement;


/***/ }),

/***/ "../node_modules/core-js/modules/_ie8-dom-define.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/_ie8-dom-define.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () {
  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/modules/_inherit-if-required.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/modules/_inherit-if-required.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var setPrototypeOf = __webpack_require__(/*! ./_set-proto */ "../node_modules/core-js/modules/_set-proto.js").set;
module.exports = function (that, target, C) {
  var S = target.constructor;
  var P;
  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
    setPrototypeOf(that, P);
  } return that;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_iobject.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_iobject.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-array.js":
/*!****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-array.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-object.js ***!
  \*****************************************************/
/***/ ((module) => {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-regexp.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-regexp.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.8 IsRegExp(argument)
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
var MATCH = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('match');
module.exports = function (it) {
  var isRegExp;
  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
};


/***/ }),

/***/ "../node_modules/core-js/modules/_library.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_library.js ***!
  \***************************************************/
/***/ ((module) => {

module.exports = false;


/***/ }),

/***/ "../node_modules/core-js/modules/_object-dp.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_object-dp.js ***!
  \*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/modules/_ie8-dom-define.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/modules/_to-primitive.js");
var dP = Object.defineProperty;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-gopd.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_object-gopd.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/modules/_object-pie.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/modules/_property-desc.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/modules/_to-iobject.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/modules/_to-primitive.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/modules/_ie8-dom-define.js");
var gOPD = Object.getOwnPropertyDescriptor;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? gOPD : function getOwnPropertyDescriptor(O, P) {
  O = toIObject(O);
  P = toPrimitive(P, true);
  if (IE8_DOM_DEFINE) try {
    return gOPD(O, P);
  } catch (e) { /* empty */ }
  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-gopn.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_object-gopn.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/modules/_object-keys-internal.js");
var hiddenKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/modules/_enum-bug-keys.js").concat('length', 'prototype');

exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
  return $keys(O, hiddenKeys);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-keys-internal.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_object-keys-internal.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/modules/_to-iobject.js");
var arrayIndexOf = __webpack_require__(/*! ./_array-includes */ "../node_modules/core-js/modules/_array-includes.js")(false);
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/modules/_shared-key.js")('IE_PROTO');

module.exports = function (object, names) {
  var O = toIObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (has(O, key = names[i++])) {
    ~arrayIndexOf(result, key) || result.push(key);
  }
  return result;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-pie.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_object-pie.js ***!
  \******************************************************/
/***/ ((__unused_webpack_module, exports) => {

exports.f = {}.propertyIsEnumerable;


/***/ }),

/***/ "../node_modules/core-js/modules/_property-desc.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_property-desc.js ***!
  \*********************************************************/
/***/ ((module) => {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_redefine.js":
/*!****************************************************!*\
  !*** ../node_modules/core-js/modules/_redefine.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var SRC = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js")('src');
var $toString = __webpack_require__(/*! ./_function-to-string */ "../node_modules/core-js/modules/_function-to-string.js");
var TO_STRING = 'toString';
var TPL = ('' + $toString).split(TO_STRING);

__webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js").inspectSource = function (it) {
  return $toString.call(it);
};

(module.exports = function (O, key, val, safe) {
  var isFunction = typeof val == 'function';
  if (isFunction) has(val, 'name') || hide(val, 'name', key);
  if (O[key] === val) return;
  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
  if (O === global) {
    O[key] = val;
  } else if (!safe) {
    delete O[key];
    hide(O, key, val);
  } else if (O[key]) {
    O[key] = val;
  } else {
    hide(O, key, val);
  }
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, TO_STRING, function toString() {
  return typeof this == 'function' && this[SRC] || $toString.call(this);
});


/***/ }),

/***/ "../node_modules/core-js/modules/_regexp-exec-abstract.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_regexp-exec-abstract.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/modules/_classof.js");
var builtinExec = RegExp.prototype.exec;

 // `RegExpExec` abstract operation
// https://tc39.github.io/ecma262/#sec-regexpexec
module.exports = function (R, S) {
  var exec = R.exec;
  if (typeof exec === 'function') {
    var result = exec.call(R, S);
    if (typeof result !== 'object') {
      throw new TypeError('RegExp exec method returned something other than an Object or null');
    }
    return result;
  }
  if (classof(R) !== 'RegExp') {
    throw new TypeError('RegExp#exec called on incompatible receiver');
  }
  return builtinExec.call(R, S);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_regexp-exec.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_regexp-exec.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var regexpFlags = __webpack_require__(/*! ./_flags */ "../node_modules/core-js/modules/_flags.js");

var nativeExec = RegExp.prototype.exec;
// This always refers to the native implementation, because the
// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,
// which loads this file before patching the method.
var nativeReplace = String.prototype.replace;

var patchedExec = nativeExec;

var LAST_INDEX = 'lastIndex';

var UPDATES_LAST_INDEX_WRONG = (function () {
  var re1 = /a/,
      re2 = /b*/g;
  nativeExec.call(re1, 'a');
  nativeExec.call(re2, 'a');
  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;
})();

// nonparticipating capturing group, copied from es5-shim's String#split patch.
var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;

var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;

if (PATCH) {
  patchedExec = function exec(str) {
    var re = this;
    var lastIndex, reCopy, match, i;

    if (NPCG_INCLUDED) {
      reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re));
    }
    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];

    match = nativeExec.call(re, str);

    if (UPDATES_LAST_INDEX_WRONG && match) {
      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;
    }
    if (NPCG_INCLUDED && match && match.length > 1) {
      // Fix browsers whose `exec` methods don't consistently return `undefined`
      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
      // eslint-disable-next-line no-loop-func
      nativeReplace.call(match[0], reCopy, function () {
        for (i = 1; i < arguments.length - 2; i++) {
          if (arguments[i] === undefined) match[i] = undefined;
        }
      });
    }

    return match;
  };
}

module.exports = patchedExec;


/***/ }),

/***/ "../node_modules/core-js/modules/_set-proto.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_set-proto.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var check = function (O, proto) {
  anObject(O);
  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
};
module.exports = {
  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
    function (test, buggy, set) {
      try {
        set = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js")(Function.call, __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/modules/_object-gopd.js").f(Object.prototype, '__proto__').set, 2);
        set(test, []);
        buggy = !(test instanceof Array);
      } catch (e) { buggy = true; }
      return function setPrototypeOf(O, proto) {
        check(O, proto);
        if (buggy) O.__proto__ = proto;
        else set(O, proto);
        return O;
      };
    }({}, false) : undefined),
  check: check
};


/***/ }),

/***/ "../node_modules/core-js/modules/_set-species.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_set-species.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('species');

module.exports = function (KEY) {
  var C = global[KEY];
  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
    configurable: true,
    get: function () { return this; }
  });
};


/***/ }),

/***/ "../node_modules/core-js/modules/_shared-key.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_shared-key.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('keys');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js");
module.exports = function (key) {
  return shared[key] || (shared[key] = uid(key));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_shared.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_shared.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(/*! ./_library */ "../node_modules/core-js/modules/_library.js") ? 'pure' : 'global',
  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});


/***/ }),

/***/ "../node_modules/core-js/modules/_species-constructor.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/modules/_species-constructor.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.3.20 SpeciesConstructor(O, defaultConstructor)
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/modules/_a-function.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('species');
module.exports = function (O, D) {
  var C = anObject(O).constructor;
  var S;
  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_strict-method.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_strict-method.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js");

module.exports = function (method, arg) {
  return !!method && fails(function () {
    // eslint-disable-next-line no-useless-call
    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);
  });
};


/***/ }),

/***/ "../node_modules/core-js/modules/_string-at.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_string-at.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-absolute-index.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/_to-absolute-index.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-integer.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_to-integer.js ***!
  \******************************************************/
/***/ ((module) => {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-iobject.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_to-iobject.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/modules/_iobject.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-length.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_to-length.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.15 ToLength
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_to-object.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-primitive.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/modules/_to-primitive.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),

/***/ "../node_modules/core-js/modules/_uid.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_uid.js ***!
  \***********************************************/
/***/ ((module) => {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_wks.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_wks.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var store = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('wks');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js");
var Symbol = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.find.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.find.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $find = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(5);
var KEY = 'find';
var forced = true;
// Shouldn't skip holes
if (KEY in []) Array(1)[KEY](function () { forced = false; });
$export($export.P + $export.F * forced, 'Array', {
  find: function find(callbackfn /* , that = undefined */) {
    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  }
});
__webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/modules/_add-to-unscopables.js")(KEY);


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.map.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.map.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $map = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(1);

$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "../node_modules/core-js/modules/_strict-method.js")([].map, true), 'Array', {
  // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
  map: function map(callbackfn /* , thisArg */) {
    return $map(this, callbackfn, arguments[1]);
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.slice.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.slice.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var html = __webpack_require__(/*! ./_html */ "../node_modules/core-js/modules/_html.js");
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "../node_modules/core-js/modules/_to-absolute-index.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var arraySlice = [].slice;

// fallback for not array-like ES3 strings and DOM objects
$export($export.P + $export.F * __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () {
  if (html) arraySlice.call(html);
}), 'Array', {
  slice: function slice(begin, end) {
    var len = toLength(this.length);
    var klass = cof(this);
    end = end === undefined ? len : end;
    if (klass == 'Array') return arraySlice.call(this, begin, end);
    var start = toAbsoluteIndex(begin, len);
    var upTo = toAbsoluteIndex(end, len);
    var size = toLength(upTo - start);
    var cloned = new Array(size);
    var i = 0;
    for (; i < size; i++) cloned[i] = klass == 'String'
      ? this.charAt(start + i)
      : this[start + i];
    return cloned;
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.function.name.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.function.name.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js").f;
var FProto = Function.prototype;
var nameRE = /^\s*function ([^ (]*)/;
var NAME = 'name';

// 19.2.4.2 name
NAME in FProto || __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") && dP(FProto, NAME, {
  configurable: true,
  get: function () {
    try {
      return ('' + this).match(nameRE)[1];
    } catch (e) {
      return '';
    }
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.object.to-string.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.object.to-string.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 19.1.3.6 Object.prototype.toString()
var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/modules/_classof.js");
var test = {};
test[__webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag')] = 'z';
if (test + '' != '[object z]') {
  __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js")(Object.prototype, 'toString', function toString() {
    return '[object ' + classof(this) + ']';
  }, true);
}


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.constructor.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.constructor.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var inheritIfRequired = __webpack_require__(/*! ./_inherit-if-required */ "../node_modules/core-js/modules/_inherit-if-required.js");
var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js").f;
var gOPN = __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/modules/_object-gopn.js").f;
var isRegExp = __webpack_require__(/*! ./_is-regexp */ "../node_modules/core-js/modules/_is-regexp.js");
var $flags = __webpack_require__(/*! ./_flags */ "../node_modules/core-js/modules/_flags.js");
var $RegExp = global.RegExp;
var Base = $RegExp;
var proto = $RegExp.prototype;
var re1 = /a/g;
var re2 = /a/g;
// "new" creates a new object, old webkit buggy here
var CORRECT_NEW = new $RegExp(re1) !== re1;

if (__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") && (!CORRECT_NEW || __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () {
  re2[__webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('match')] = false;
  // RegExp constructor can alter flags and IsRegExp works correct with @@match
  return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';
}))) {
  $RegExp = function RegExp(p, f) {
    var tiRE = this instanceof $RegExp;
    var piRE = isRegExp(p);
    var fiU = f === undefined;
    return !tiRE && piRE && p.constructor === $RegExp && fiU ? p
      : inheritIfRequired(CORRECT_NEW
        ? new Base(piRE && !fiU ? p.source : p, f)
        : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)
      , tiRE ? this : proto, $RegExp);
  };
  var proxy = function (key) {
    key in $RegExp || dP($RegExp, key, {
      configurable: true,
      get: function () { return Base[key]; },
      set: function (it) { Base[key] = it; }
    });
  };
  for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);
  proto.constructor = $RegExp;
  $RegExp.prototype = proto;
  __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js")(global, 'RegExp', $RegExp);
}

__webpack_require__(/*! ./_set-species */ "../node_modules/core-js/modules/_set-species.js")('RegExp');


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.exec.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.exec.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var regexpExec = __webpack_require__(/*! ./_regexp-exec */ "../node_modules/core-js/modules/_regexp-exec.js");
__webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js")({
  target: 'RegExp',
  proto: true,
  forced: regexpExec !== /./.exec
}, {
  exec: regexpExec
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.flags.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.flags.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 21.2.5.3 get RegExp.prototype.flags()
if (__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") && /./g.flags != 'g') __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js").f(RegExp.prototype, 'flags', {
  configurable: true,
  get: __webpack_require__(/*! ./_flags */ "../node_modules/core-js/modules/_flags.js")
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.replace.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.replace.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/modules/_to-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var advanceStringIndex = __webpack_require__(/*! ./_advance-string-index */ "../node_modules/core-js/modules/_advance-string-index.js");
var regExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ "../node_modules/core-js/modules/_regexp-exec-abstract.js");
var max = Math.max;
var min = Math.min;
var floor = Math.floor;
var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g;
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g;

var maybeToString = function (it) {
  return it === undefined ? it : String(it);
};

// @@replace logic
__webpack_require__(/*! ./_fix-re-wks */ "../node_modules/core-js/modules/_fix-re-wks.js")('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {
  return [
    // `String.prototype.replace` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.replace
    function replace(searchValue, replaceValue) {
      var O = defined(this);
      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];
      return fn !== undefined
        ? fn.call(searchValue, O, replaceValue)
        : $replace.call(String(O), searchValue, replaceValue);
    },
    // `RegExp.prototype[@@replace]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
    function (regexp, replaceValue) {
      var res = maybeCallNative($replace, regexp, this, replaceValue);
      if (res.done) return res.value;

      var rx = anObject(regexp);
      var S = String(this);
      var functionalReplace = typeof replaceValue === 'function';
      if (!functionalReplace) replaceValue = String(replaceValue);
      var global = rx.global;
      if (global) {
        var fullUnicode = rx.unicode;
        rx.lastIndex = 0;
      }
      var results = [];
      while (true) {
        var result = regExpExec(rx, S);
        if (result === null) break;
        results.push(result);
        if (!global) break;
        var matchStr = String(result[0]);
        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
      }
      var accumulatedResult = '';
      var nextSourcePosition = 0;
      for (var i = 0; i < results.length; i++) {
        result = results[i];
        var matched = String(result[0]);
        var position = max(min(toInteger(result.index), S.length), 0);
        var captures = [];
        // NOTE: This is equivalent to
        //   captures = result.slice(1).map(maybeToString)
        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
        // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
        var namedCaptures = result.groups;
        if (functionalReplace) {
          var replacerArgs = [matched].concat(captures, position, S);
          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
          var replacement = String(replaceValue.apply(undefined, replacerArgs));
        } else {
          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
        }
        if (position >= nextSourcePosition) {
          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
          nextSourcePosition = position + matched.length;
        }
      }
      return accumulatedResult + S.slice(nextSourcePosition);
    }
  ];

    // https://tc39.github.io/ecma262/#sec-getsubstitution
  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {
    var tailPos = position + matched.length;
    var m = captures.length;
    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
    if (namedCaptures !== undefined) {
      namedCaptures = toObject(namedCaptures);
      symbols = SUBSTITUTION_SYMBOLS;
    }
    return $replace.call(replacement, symbols, function (match, ch) {
      var capture;
      switch (ch.charAt(0)) {
        case '$': return '$';
        case '&': return matched;
        case '`': return str.slice(0, position);
        case "'": return str.slice(tailPos);
        case '<':
          capture = namedCaptures[ch.slice(1, -1)];
          break;
        default: // \d\d?
          var n = +ch;
          if (n === 0) return match;
          if (n > m) {
            var f = floor(n / 10);
            if (f === 0) return match;
            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
            return match;
          }
          capture = captures[n - 1];
      }
      return capture === undefined ? '' : capture;
    });
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.split.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.split.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var isRegExp = __webpack_require__(/*! ./_is-regexp */ "../node_modules/core-js/modules/_is-regexp.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "../node_modules/core-js/modules/_species-constructor.js");
var advanceStringIndex = __webpack_require__(/*! ./_advance-string-index */ "../node_modules/core-js/modules/_advance-string-index.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var callRegExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ "../node_modules/core-js/modules/_regexp-exec-abstract.js");
var regexpExec = __webpack_require__(/*! ./_regexp-exec */ "../node_modules/core-js/modules/_regexp-exec.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js");
var $min = Math.min;
var $push = [].push;
var $SPLIT = 'split';
var LENGTH = 'length';
var LAST_INDEX = 'lastIndex';
var MAX_UINT32 = 0xffffffff;

// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError
var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });

// @@split logic
__webpack_require__(/*! ./_fix-re-wks */ "../node_modules/core-js/modules/_fix-re-wks.js")('split', 2, function (defined, SPLIT, $split, maybeCallNative) {
  var internalSplit;
  if (
    'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
    'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
    'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||
    '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||
    '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
    ''[$SPLIT](/.?/)[LENGTH]
  ) {
    // based on es5-shim implementation, need to rework it
    internalSplit = function (separator, limit) {
      var string = String(this);
      if (separator === undefined && limit === 0) return [];
      // If `separator` is not a regex, use native split
      if (!isRegExp(separator)) return $split.call(string, separator, limit);
      var output = [];
      var flags = (separator.ignoreCase ? 'i' : '') +
                  (separator.multiline ? 'm' : '') +
                  (separator.unicode ? 'u' : '') +
                  (separator.sticky ? 'y' : '');
      var lastLastIndex = 0;
      var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;
      // Make `global` and avoid `lastIndex` issues by working with a copy
      var separatorCopy = new RegExp(separator.source, flags + 'g');
      var match, lastIndex, lastLength;
      while (match = regexpExec.call(separatorCopy, string)) {
        lastIndex = separatorCopy[LAST_INDEX];
        if (lastIndex > lastLastIndex) {
          output.push(string.slice(lastLastIndex, match.index));
          if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));
          lastLength = match[0][LENGTH];
          lastLastIndex = lastIndex;
          if (output[LENGTH] >= splitLimit) break;
        }
        if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop
      }
      if (lastLastIndex === string[LENGTH]) {
        if (lastLength || !separatorCopy.test('')) output.push('');
      } else output.push(string.slice(lastLastIndex));
      return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
    };
  // Chakra, V8
  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {
    internalSplit = function (separator, limit) {
      return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);
    };
  } else {
    internalSplit = $split;
  }

  return [
    // `String.prototype.split` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.split
    function split(separator, limit) {
      var O = defined(this);
      var splitter = separator == undefined ? undefined : separator[SPLIT];
      return splitter !== undefined
        ? splitter.call(separator, O, limit)
        : internalSplit.call(String(O), separator, limit);
    },
    // `RegExp.prototype[@@split]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split
    //
    // NOTE: This cannot be properly polyfilled in engines that don't support
    // the 'y' flag.
    function (regexp, limit) {
      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);
      if (res.done) return res.value;

      var rx = anObject(regexp);
      var S = String(this);
      var C = speciesConstructor(rx, RegExp);

      var unicodeMatching = rx.unicode;
      var flags = (rx.ignoreCase ? 'i' : '') +
                  (rx.multiline ? 'm' : '') +
                  (rx.unicode ? 'u' : '') +
                  (SUPPORTS_Y ? 'y' : 'g');

      // ^(? + rx + ) is needed, in combination with some S slicing, to
      // simulate the 'y' flag.
      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);
      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
      if (lim === 0) return [];
      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
      var p = 0;
      var q = 0;
      var A = [];
      while (q < S.length) {
        splitter.lastIndex = SUPPORTS_Y ? q : 0;
        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));
        var e;
        if (
          z === null ||
          (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p
        ) {
          q = advanceStringIndex(S, q, unicodeMatching);
        } else {
          A.push(S.slice(p, q));
          if (A.length === lim) return A;
          for (var i = 1; i <= z.length - 1; i++) {
            A.push(z[i]);
            if (A.length === lim) return A;
          }
          q = p = e;
        }
      }
      A.push(S.slice(p));
      return A;
    }
  ];
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.to-string.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.to-string.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

__webpack_require__(/*! ./es6.regexp.flags */ "../node_modules/core-js/modules/es6.regexp.flags.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var $flags = __webpack_require__(/*! ./_flags */ "../node_modules/core-js/modules/_flags.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js");
var TO_STRING = 'toString';
var $toString = /./[TO_STRING];

var define = function (fn) {
  __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js")(RegExp.prototype, TO_STRING, fn, true);
};

// 21.2.5.14 RegExp.prototype.toString()
if (__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {
  define(function toString() {
    var R = anObject(this);
    return '/'.concat(R.source, '/',
      'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
  });
// FF44- RegExp#toString has a wrong name
} else if ($toString.name != TO_STRING) {
  define(function toString() {
    return $toString.call(this);
  });
}


/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be in strict mode.
(() => {
"use strict";
/*!***************************************!*\
  !*** ../assets/dev/js/admin/admin.js ***!
  \***************************************/


var modules = {
  widget_template_edit_button: __webpack_require__(/*! modules/library/assets/js/admin */ "../modules/library/assets/js/admin.js"),
  forms_integrations: __webpack_require__(/*! modules/forms/assets/js/admin */ "../modules/forms/assets/js/admin.js"),
  AssetsManager: __webpack_require__(/*! modules/assets-manager/assets/js/admin */ "../modules/assets-manager/assets/js/admin.js"),
  RoleManager: __webpack_require__(/*! modules/role-manager/assets/js/admin */ "../modules/role-manager/assets/js/admin.js"),
  ThemeBuilder: __webpack_require__(/*! modules/theme-builder/assets/js/admin/admin */ "../modules/theme-builder/assets/js/admin/admin.js")
};
window.elementorProAdmin = {
  widget_template_edit_button: new modules.widget_template_edit_button(),
  forms_integrations: new modules.forms_integrations(),
  assetsManager: new modules.AssetsManager(),
  roleManager: new modules.RoleManager(),
  themeBuilder: new modules.ThemeBuilder()
};
jQuery(function () {
  elementorProAdmin.roleManager.advancedRoleManager.init();
});
})();

/******/ })()
;
//# sourceMappingURL=admin.js.mapassets/js/custom-code.min.js000064400000260117150755004310012033 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(()=>{var t={75453:(t,e,n)=>{t.exports=n(7421)},59396:(t,e,n)=>{t.exports=n(70157)},32009:(t,e,n)=>{t.exports=n(89710)},15149:(t,e,n)=>{t.exports=n(66458)},38401:(t,e,n)=>{t.exports=n(14710)},92937:(t,e,n)=>{t.exports=n(23022)},67394:(t,e,n)=>{t.exports=n(43153)},23587:(t,e,n)=>{t.exports=n(32622)},63774:(t,e,n)=>{t.exports=n(27410)},95315:(t,e,n)=>{t.exports=n(19035)},82055:(t,e,n)=>{t.exports=n(58535)},83452:(t,e,n)=>{t.exports=n(97220)},28274:(t,e,n)=>{t.exports=n(65135)},35657:(t,e,n)=>{t.exports=n(69591)},73220:(t,e,n)=>{t.exports=n(76483)},75499:(t,e,n)=>{t.exports=n(43094)},41281:(t,e,n)=>{t.exports=n(19103)},50093:(t,e,n)=>{t.exports=n(39871)},93168:(t,e,n)=>{t.exports=n(89999)},72292:t=>{t.exports=function _arrayLikeToArray(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r},t.exports.default=t.exports,t.exports.__esModule=!0},86870:(t,e,n)=>{var r=n(59396);t.exports=function _arrayWithHoles(t){if(r(t))return t},t.exports.default=t.exports,t.exports.__esModule=!0},35693:(t,e,n)=>{var r=n(59396),o=n(72292);t.exports=function _arrayWithoutHoles(t){if(r(t))return o(t)},t.exports.default=t.exports,t.exports.__esModule=!0},38852:t=>{t.exports=function _assertThisInitialized(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t},t.exports.default=t.exports,t.exports.__esModule=!0},49117:(t,e,n)=>{var r=n(73220);function asyncGeneratorStep(t,e,n,o,i,a,u){try{var s=t[a](u),c=s.value}catch(t){return void n(t)}s.done?e(c):r.resolve(c).then(o,i)}t.exports=function _asyncToGenerator(t){return function(){var e=this,n=arguments;return new r((function(r,o){var i=t.apply(e,n);function _next(t){asyncGeneratorStep(i,r,o,_next,_throw,"next",t)}function _throw(t){asyncGeneratorStep(i,r,o,_next,_throw,"throw",t)}_next(void 0)}))}},t.exports.default=t.exports,t.exports.__esModule=!0},11959:t=>{t.exports=function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.default=t.exports,t.exports.__esModule=!0},39041:(t,e,n)=>{var r=n(67394);function _defineProperties(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),r(t,o.key,o)}}t.exports=function _createClass(t,e,n){return e&&_defineProperties(t.prototype,e),n&&_defineProperties(t,n),t},t.exports.default=t.exports,t.exports.__esModule=!0},68537:(t,e,n)=>{var r=n(75499),o=n(44263),i=n(898),a=n(59771);t.exports=function _createSuper(t){var e=i();return function _createSuperInternal(){var n,i=o(t);if(e){var u=o(this).constructor;n=r(i,arguments,u)}else n=i.apply(this,arguments);return a(this,n)}},t.exports.default=t.exports,t.exports.__esModule=!0},18042:(t,e,n)=>{var r=n(67394);t.exports=function _defineProperty(t,e,n){return e in t?r(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},t.exports.default=t.exports,t.exports.__esModule=!0},37959:(t,e,n)=>{var r=n(15149);function _extends(){return t.exports=_extends=r||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},t.exports.default=t.exports,t.exports.__esModule=!0,_extends.apply(this,arguments)}t.exports=_extends,t.exports.default=t.exports,t.exports.__esModule=!0},44263:(t,e,n)=>{var r=n(28274),o=n(82055);function _getPrototypeOf(e){return t.exports=_getPrototypeOf=r?o:function _getPrototypeOf(t){return t.__proto__||o(t)},t.exports.default=t.exports,t.exports.__esModule=!0,_getPrototypeOf(e)}t.exports=_getPrototypeOf,t.exports.default=t.exports,t.exports.__esModule=!0},77371:(t,e,n)=>{var r=n(38401),o=n(76870);t.exports=function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=r(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)},t.exports.default=t.exports,t.exports.__esModule=!0},67971:t=>{t.exports=function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}},t.exports.default=t.exports,t.exports.__esModule=!0},52369:(t,e,n)=>{var r=n(24596).default,o=n(93168),i=n(67394),a=n(23587);function _getRequireWildcardCache(t){if("function"!=typeof o)return null;var e=new o,n=new o;return(_getRequireWildcardCache=function _getRequireWildcardCache(t){return t?n:e})(t)}t.exports=function _interopRequireWildcard(t,e){if(!e&&t&&t.__esModule)return t;if(null===t||"object"!==r(t)&&"function"!=typeof t)return{default:t};var n=_getRequireWildcardCache(e);if(n&&n.has(t))return n.get(t);var o={},u=i&&a;for(var s in t)if("default"!==s&&Object.prototype.hasOwnProperty.call(t,s)){var c=u?a(t,s):null;c&&(c.get||c.set)?i(o,s,c):o[s]=t[s]}return o.default=t,n&&n.set(t,o),o},t.exports.default=t.exports,t.exports.__esModule=!0},898:(t,e,n)=>{var r=n(75499);t.exports=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!r)return!1;if(r.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(r(Boolean,[],(function(){}))),!0}catch(t){return!1}},t.exports.default=t.exports,t.exports.__esModule=!0},95915:(t,e,n)=>{var r=n(41281),o=n(50093),i=n(75453);t.exports=function _iterableToArray(t){if(void 0!==r&&null!=t[o]||null!=t["@@iterator"])return i(t)},t.exports.default=t.exports,t.exports.__esModule=!0},79968:(t,e,n)=>{var r=n(41281),o=n(50093);t.exports=function _iterableToArrayLimit(t,e){var n=t&&(void 0!==r&&t[o]||t["@@iterator"]);if(null!=n){var i,a,u=[],s=!0,c=!1;try{for(n=n.call(t);!(s=(i=n.next()).done)&&(u.push(i.value),!e||u.length!==e);s=!0);}catch(t){c=!0,a=t}finally{try{s||null==n.return||n.return()}finally{if(c)throw a}}return u}},t.exports.default=t.exports,t.exports.__esModule=!0},39198:t=>{t.exports=function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.default=t.exports,t.exports.__esModule=!0},84360:t=>{t.exports=function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.default=t.exports,t.exports.__esModule=!0},84899:(t,e,n)=>{var r=n(83452),o=n(95315),i=n(23587),a=n(63774),u=n(92937),s=n(67394),c=n(18042);function ownKeys(t,e){var n=r(t);if(o){var a=o(t);e&&(a=a.filter((function(e){return i(t,e).enumerable}))),n.push.apply(n,a)}return n}t.exports=function _objectSpread2(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(n),!0).forEach((function(e){c(t,e,n[e])})):a?u(t,a(n)):ownKeys(Object(n)).forEach((function(e){s(t,e,i(n,e))}))}return t},t.exports.default=t.exports,t.exports.__esModule=!0},59771:(t,e,n)=>{var r=n(24596).default,o=n(38852);t.exports=function _possibleConstructorReturn(t,e){return!e||"object"!==r(e)&&"function"!=typeof e?o(t):e},t.exports.default=t.exports,t.exports.__esModule=!0},76870:(t,e,n)=>{var r=n(28274);function _setPrototypeOf(e,n){return t.exports=_setPrototypeOf=r||function _setPrototypeOf(t,e){return t.__proto__=e,t},t.exports.default=t.exports,t.exports.__esModule=!0,_setPrototypeOf(e,n)}t.exports=_setPrototypeOf,t.exports.default=t.exports,t.exports.__esModule=!0},47834:(t,e,n)=>{var r=n(86870),o=n(79968),i=n(24594),a=n(39198);t.exports=function _slicedToArray(t,e){return r(t)||o(t,e)||i(t,e)||a()},t.exports.default=t.exports,t.exports.__esModule=!0},74846:(t,e,n)=>{var r=n(35693),o=n(95915),i=n(24594),a=n(84360);t.exports=function _toConsumableArray(t){return r(t)||o(t)||i(t)||a()},t.exports.default=t.exports,t.exports.__esModule=!0},24596:(t,e,n)=>{var r=n(41281),o=n(50093);function _typeof(e){return"function"==typeof r&&"symbol"==typeof o?(t.exports=_typeof=function _typeof(t){return typeof t},t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=_typeof=function _typeof(t){return t&&"function"==typeof r&&t.constructor===r&&t!==r.prototype?"symbol":typeof t},t.exports.default=t.exports,t.exports.__esModule=!0),_typeof(e)}t.exports=_typeof,t.exports.default=t.exports,t.exports.__esModule=!0},24594:(t,e,n)=>{var r=n(75453),o=n(72292);t.exports=function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return o(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?r(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(t,e):void 0}},t.exports.default=t.exports,t.exports.__esModule=!0},57135:(t,e,n)=>{t.exports=n(86248)},55246:(t,e,n)=>{"use strict";var r=n(63804),o=n(67394),i=n(67971);o(e,"__esModule",{value:!0}),e.default=e.BaseContext=void 0;var a=i(n(73220)),u=i(n(84899)),s=i(n(11959)),c=i(n(39041)),l=i(n(38852)),f=i(n(77371)),d=i(n(68537)),p=function(t){(0,f.default)(BaseContext,t);var e=(0,d.default)(BaseContext);function BaseContext(t){var n;return(0,s.default)(this,BaseContext),(n=e.call(this,t)).state={action:{current:null,loading:!1,error:null,errorMeta:{}},updateActionState:n.updateActionState.bind((0,l.default)(n)),resetActionState:n.resetActionState.bind((0,l.default)(n))},n}return(0,c.default)(BaseContext,[{key:"executeAction",value:function executeAction(t,e){var n=this;return this.updateActionState({current:t,loading:!0,error:null,errorMeta:{}}),e().then((function(t){return n.resetActionState(),a.default.resolve(t)})).catch((function(e){return n.updateActionState({current:t,loading:!1,error:e.message,errorMeta:e}),a.default.reject(e)}))}},{key:"updateActionState",value:function updateActionState(t){return this.setState((function(e){return{action:(0,u.default)((0,u.default)({},e.action),t)}}))}},{key:"resetActionState",value:function resetActionState(){this.updateActionState({current:null,loading:!1,error:null,errorMeta:{}})}}]),BaseContext}(r.Component);e.BaseContext=p;var v=p;e.default=v},78221:(t,e,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(e,"__esModule",{value:!0}),e.default=e.ConditionsProvider=e.Context=void 0;var u=a(n(63804)),s=a(n(35657)),c=a(n(83452)),l=a(n(73220));n(90286),n(76139),n(44321),n(99745),n(10195),n(71954);var f=a(n(84899)),d=a(n(11959)),p=a(n(39041)),v=a(n(38852)),h=a(n(77371)),y=a(n(68537)),m=a(n(18042)),g=a(n(79537)),x=a(n(3145)),b=a(n(55246)),C=n(2410),S=u.default.createContext();e.Context=S;var w=function(t){(0,h.default)(ConditionsProvider,t);var e=(0,y.default)(ConditionsProvider);function ConditionsProvider(t){var n;return(0,d.default)(this,ConditionsProvider),n=e.call(this,t),(0,m.default)((0,v.default)(n),"conditionsConfig",null),n.state=(0,f.default)((0,f.default)({},n.state),{},{conditions:{},updateConditionItemState:n.updateConditionItemState.bind((0,v.default)(n)),removeConditionItemInState:n.removeConditionItemInState.bind((0,v.default)(n)),createConditionItemInState:n.createConditionItemInState.bind((0,v.default)(n)),findConditionItemInState:n.findConditionItemInState.bind((0,v.default)(n)),saveConditions:n.saveConditions.bind((0,v.default)(n))}),n}return(0,p.default)(ConditionsProvider,[{key:"componentDidMount",value:function componentDidMount(){var t=this;this.executeAction(ConditionsProvider.actions.FETCH_CONFIG,(function(){return x.default.create()})).then((function(e){return t.conditionsConfig=e})).then(this.normalizeConditionsState.bind(this)).then(this.setSubIdTitles.bind(this))}},{key:"saveConditions",value:function saveConditions(){var t=this,e=(0,s.default)(this.state.conditions).map((function(t){return t.forDb()}));return this.executeAction(ConditionsProvider.actions.SAVE,(function(){return $e.data.update(C.TemplatesConditions.signature,{conditions:e},{id:t.props.currentTemplate.id})})).then((function(){var e=(0,s.default)(t.state.conditions).map((function(t){return t.forContext()}));t.props.onConditionsSaved(t.props.currentTemplate.id,{conditions:e,instances:t.conditionsConfig.calculateInstances((0,s.default)(t.state.conditions)),isActive:!(!(0,c.default)(t.state.conditions).length||"publish"!==t.props.currentTemplate.status)})}))}},{key:"checkConflicts",value:function checkConflicts(t){var e=this;return this.executeAction(ConditionsProvider.actions.CHECK_CONFLICTS,(function(){return $e.data.get(C.TemplatesConditionsConflicts.signature,{post_id:e.props.currentTemplate.id,condition:t.clone().toString()})})).then((function(n){return e.updateConditionItemState(t.id,{conflictErrors:(0,s.default)(n.data)},!1)}))}},{key:"fetchSubIdsTitles",value:function fetchSubIdsTitles(t){return new l.default((function(e){return elementorCommon.ajax.loadObjects({action:"query_control_value_titles",ids:_.isArray(t.subId)?t.subId:[t.subId],data:{get_titles:t.subIdAutocomplete,unique_id:elementorCommon.helpers.getUniqueId()},success:function success(t){e(t)}})}))}},{key:"normalizeConditionsState",value:function normalizeConditionsState(){var t=this;this.updateConditionsState((function(){return t.props.currentTemplate.conditions.reduce((function(e,n){var r=new g.default((0,f.default)((0,f.default)({},n),{},{default:t.props.currentTemplate.defaultCondition,options:t.conditionsConfig.getOptions(),subOptions:t.conditionsConfig.getSubOptions(n.name),subIdAutocomplete:t.conditionsConfig.getSubIdAutocomplete(n.sub),supIdOptions:n.subId?[{value:n.subId,label:n.subId}]:[]}));return(0,f.default)((0,f.default)({},e),{},(0,m.default)({},r.id,r))}),{})})).then((function(){(0,s.default)(t.state.conditions).forEach((function(e){return t.checkConflicts(e)}))}))}},{key:"setSubIdTitles",value:function setSubIdTitles(){var t=this;return(0,s.default)(this.state.conditions).forEach((function(e){if(e.subId)return t.fetchSubIdsTitles(e).then((function(n){return t.updateConditionItemState(e.id,{subIdOptions:[{label:(0,s.default)(n)[0],value:e.subId}]},!1)}))}))}},{key:"updateConditionItemState",value:function updateConditionItemState(t,e){var n=this,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e.name&&(e.subOptions=this.conditionsConfig.getSubOptions(e.name)),(e.sub||e.name)&&(e.subIdAutocomplete=this.conditionsConfig.getSubIdAutocomplete(e.sub),e.subIdOptions=[]),this.updateConditionsState((function(n){var r=n[t];return(0,f.default)((0,f.default)({},n),{},(0,m.default)({},t,r.clone().set(e)))})).then((function(){r&&n.checkConflicts(n.findConditionItemInState(t))}))}},{key:"removeConditionItemInState",value:function removeConditionItemInState(t){this.updateConditionsState((function(e){var n=(0,f.default)({},e);return delete n[t],n}))}},{key:"createConditionItemInState",value:function createConditionItemInState(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],n=this.props.currentTemplate.defaultCondition,r=new g.default({name:n,default:n,options:this.conditionsConfig.getOptions(),subOptions:this.conditionsConfig.getSubOptions(n),subIdAutocomplete:this.conditionsConfig.getSubIdAutocomplete("")});this.updateConditionsState((function(t){return(0,f.default)((0,f.default)({},t),{},(0,m.default)({},r.id,r))})).then((function(){e&&t.checkConflicts(r)}))}},{key:"findConditionItemInState",value:function findConditionItemInState(t){return(0,s.default)(this.state.conditions).find((function(e){return e.id===t}))}},{key:"updateConditionsState",value:function updateConditionsState(t){var e=this;return new l.default((function(n){return e.setState((function(e){return{conditions:t(e.conditions)}}),n)}))}},{key:"render",value:function render(){if(this.state.action.current===ConditionsProvider.actions.FETCH_CONFIG){if(this.state.error)return u.default.createElement("h3",null,r("Error:","elementor-pro")," ",this.state.error);if(this.state.loading)return u.default.createElement("h3",null,r("Loading","elementor-pro"),"...")}return u.default.createElement(S.Provider,{value:this.state},this.props.children)}}]),ConditionsProvider}(b.default);e.ConditionsProvider=w,(0,m.default)(w,"propTypes",{children:o.any.isRequired,currentTemplate:o.object.isRequired,onConditionsSaved:o.func.isRequired,validateConflicts:o.bool}),(0,m.default)(w,"defaultProps",{validateConflicts:!0}),(0,m.default)(w,"actions",{FETCH_CONFIG:"fetch-config",SAVE:"save",CHECK_CONFLICTS:"check-conflicts"});var O=w;e.default=O},79537:(t,e,n)=>{"use strict";var r=n(67394),o=n(67971);r(e,"__esModule",{value:!0}),e.default=void 0,n(64434),n(3777),n(38081),n(99745),n(10195);var i=o(n(15149)),a=o(n(59396)),u=o(n(83452)),s=o(n(32009)),c=o(n(11959)),l=o(n(39041)),f=o(n(18042)),d=function(){function Condition(t){(0,c.default)(this,Condition),(0,f.default)(this,"id",elementorCommon.helpers.getUniqueId()),(0,f.default)(this,"default",""),(0,f.default)(this,"type","include"),(0,f.default)(this,"name",""),(0,f.default)(this,"sub",""),(0,f.default)(this,"subId",""),(0,f.default)(this,"options",[]),(0,f.default)(this,"subOptions",[]),(0,f.default)(this,"subIdAutocomplete",[]),(0,f.default)(this,"subIdOptions",[]),(0,f.default)(this,"conflictErrors",[]),this.set(t)}return(0,l.default)(Condition,[{key:"set",value:function set(t){return(0,i.default)(this,t),this}},{key:"clone",value:function clone(){return(0,i.default)(new Condition,this)}},{key:"remove",value:function remove(t){var e=this;return(0,a.default)(t)||(t=[t]),t.forEach((function(t){delete e[t]})),this}},{key:"only",value:function only(t){(0,a.default)(t)||(t=[t]);var e=(0,u.default)(this).filter((function(e){return!t.includes(e)}));return this.remove(e),this}},{key:"toJson",value:function toJson(){return(0,s.default)(this)}},{key:"toString",value:function toString(){return this.forDb().filter((function(t){return t})).join("/")}},{key:"forDb",value:function forDb(){return[this.type,this.name,this.sub,this.subId]}},{key:"forContext",value:function forContext(){return{type:this.type,name:this.name,sub:this.sub,subId:this.subId}}}]),Condition}();e.default=d},3145:(t,e,n)=>{"use strict";var r=n(18194).__,o=n(67394),i=n(67971);o(e,"__esModule",{value:!0}),e.default=e.ConditionsConfig=void 0;var a=i(n(35657)),u=i(n(83452)),s=i(n(73220));n(90286),n(10195),n(99745);var c=i(n(84899)),l=i(n(24596)),f=i(n(74846)),d=i(n(11959)),p=i(n(39041)),v=i(n(18042)),h=n(2410),y=function(){function ConditionsConfig(t){(0,d.default)(this,ConditionsConfig),(0,v.default)(this,"config",null),this.config=t}return(0,p.default)(ConditionsConfig,[{key:"getOptions",value:function getOptions(){return this.getSubOptions("general",!0).map((function(t){return{label:t.label,value:t.value}}))}},{key:"getSubOptions",value:function getSubOptions(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.config[t];return r?[{label:r.all_label,value:n?t:""}].concat((0,f.default)(r.sub_conditions.map((function(t){var n=e.config[t];return{label:n.label,value:t,children:n.sub_conditions.length?e.getSubOptions(t,!0):null}})))):[]}},{key:"getSubIdAutocomplete",value:function getSubIdAutocomplete(t){var e,n=this.config[t];if(!n||"object"!==(0,l.default)(n.controls))return{};var r=(0,a.default)(n.controls);return null!=r&&null!==(e=r[0])&&void 0!==e&&e.autocomplete?r[0].autocomplete:{}}},{key:"calculateInstances",value:function calculateInstances(t){var e=this,n=t.reduce((function(t,n){if("exclude"===n.type)return t;var r=n.sub||n.name,o=e.config[r];if(!o)return t;var i=n.subId?"".concat(o.label," #").concat(n.subId):o.all_label;return(0,c.default)((0,c.default)({},t),{},(0,v.default)({},r,i))}),{});return 0===(0,u.default)(n).length&&(n=[r("No instances","elementor-pro")]),n}}],[{key:"create",value:function create(){return ConditionsConfig.instance?s.default.resolve(ConditionsConfig.instance):$e.data.get(h.ConditionsConfig.signature).then((function(t){return ConditionsConfig.instance=new ConditionsConfig(t.data),ConditionsConfig.instance}))}}]),ConditionsConfig}();e.ConditionsConfig=y,(0,v.default)(y,"instance",void 0);var m=y;e.default=m},79924:(t,e,n)=>{"use strict";var r=n(67394),o=n(67971);r(e,"__esModule",{value:!0}),e.default=e.ConditionsConfig=void 0;var i=o(n(11959)),a=o(n(39041)),u=o(n(77371)),s=o(n(68537)),c=o(n(18042)),l=function(t){(0,u.default)(ConditionsConfig,t);var e=(0,s.default)(ConditionsConfig);function ConditionsConfig(){return(0,i.default)(this,ConditionsConfig),e.apply(this,arguments)}return(0,a.default)(ConditionsConfig,null,[{key:"getEndpointFormat",value:function getEndpointFormat(){return"site-editor/conditions-config/{id}"}}]),ConditionsConfig}($e.modules.CommandData);e.ConditionsConfig=l,(0,c.default)(l,"signature","site-editor/conditions-config");var f=l;e.default=f},2410:(t,e,n)=>{"use strict";var r=n(67394);r(e,"__esModule",{value:!0}),r(e,"Templates",{enumerable:!0,get:function get(){return o.Templates}}),r(e,"ConditionsConfig",{enumerable:!0,get:function get(){return i.ConditionsConfig}}),r(e,"TemplatesConditions",{enumerable:!0,get:function get(){return a.TemplatesConditions}}),r(e,"TemplatesConditionsConflicts",{enumerable:!0,get:function get(){return u.TemplatesConditionsConflicts}});var o=n(49672),i=n(79924),a=n(19743),u=n(52924)},52924:(t,e,n)=>{"use strict";var r=n(67394),o=n(67971);r(e,"__esModule",{value:!0}),e.default=e.TemplatesConditionsConflicts=void 0;var i=o(n(11959)),a=o(n(39041)),u=o(n(77371)),s=o(n(68537)),c=o(n(18042)),l=function(t){(0,u.default)(TemplatesConditionsConflicts,t);var e=(0,s.default)(TemplatesConditionsConflicts);function TemplatesConditionsConflicts(){return(0,i.default)(this,TemplatesConditionsConflicts),e.apply(this,arguments)}return(0,a.default)(TemplatesConditionsConflicts,null,[{key:"getEndpointFormat",value:function getEndpointFormat(){return"".concat(TemplatesConditionsConflicts.signature,"/{id}")}}]),TemplatesConditionsConflicts}($e.modules.CommandData);e.TemplatesConditionsConflicts=l,(0,c.default)(l,"signature","site-editor/templates-conditions-conflicts");var f=l;e.default=f},19743:(t,e,n)=>{"use strict";var r=n(67394),o=n(67971);r(e,"__esModule",{value:!0}),e.default=e.TemplatesConditions=void 0;var i=o(n(11959)),a=o(n(39041)),u=o(n(77371)),s=o(n(68537)),c=o(n(18042)),l=function(t){(0,u.default)(TemplatesConditions,t);var e=(0,s.default)(TemplatesConditions);function TemplatesConditions(){return(0,i.default)(this,TemplatesConditions),e.apply(this,arguments)}return(0,a.default)(TemplatesConditions,null,[{key:"getEndpointFormat",value:function getEndpointFormat(){return"site-editor/templates-conditions/{id}"}}]),TemplatesConditions}($e.modules.CommandData);e.TemplatesConditions=l,(0,c.default)(l,"signature","site-editor/templates-conditions");var f=l;e.default=f},49672:(t,e,n)=>{"use strict";var r=n(67394),o=n(67971);r(e,"__esModule",{value:!0}),e.default=e.Templates=void 0;var i=o(n(11959)),a=o(n(39041)),u=o(n(77371)),s=o(n(68537)),c=o(n(18042)),l=function(t){(0,u.default)(Templates,t);var e=(0,s.default)(Templates);function Templates(){return(0,i.default)(this,Templates),e.apply(this,arguments)}return(0,a.default)(Templates,null,[{key:"getEndpointFormat",value:function getEndpointFormat(){return"site-editor/templates/{id}"}}]),Templates}($e.modules.CommandData);e.Templates=l,(0,c.default)(l,"signature","site-editor/templates");var f=l;e.default=f},88704:(t,e,n)=>{"use strict";var r=n(67394),o=n(52369),i=n(67971);r(e,"__esModule",{value:!0}),e.default=void 0;var a=i(n(11959)),u=i(n(39041)),s=i(n(77371)),c=i(n(68537)),l=i(n(18042)),f=o(n(2410)),d=function(t){(0,s.default)(Component,t);var e=(0,c.default)(Component);function Component(){return(0,a.default)(this,Component),e.apply(this,arguments)}return(0,u.default)(Component,[{key:"getNamespace",value:function getNamespace(){return this.constructor.namespace}},{key:"defaultData",value:function defaultData(){return this.importCommands(f)}}]),Component}($e.modules.ComponentBase);e.default=d,(0,l.default)(d,"namespace","site-editor")},73391:(t,e,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(e,"__esModule",{value:!0}),e.default=ConditionConflicts;var u=a(n(63804));n(90286);var s=n(78675);function ConditionConflicts(t){if(!t.conflicts.length)return"";var e=t.conflicts.map((function(t){return u.default.createElement(s.Button,{key:t.template_id,target:"_blank",url:t.edit_url,text:t.template_title})}));return u.default.createElement(s.Text,{className:"e-site-editor-conditions__conflict",variant:"sm"},r("Elementor recognized that you have set this location for other templates: ","elementor-pro")," ",e)}ConditionConflicts.propTypes={conflicts:o.array.isRequired}},87072:(t,e,n)=>{"use strict";var r=n(23615),o=n(67394),i=n(67971);o(e,"__esModule",{value:!0}),e.default=ConditionName;var a=i(n(63804));n(99745);var u=n(78675);function ConditionName(t){if("general"!==t.default)return"";return a.default.createElement("div",{className:"e-site-editor-conditions__input-wrapper"},a.default.createElement(u.Select,{options:t.options,value:t.name,onChange:function onChange(e){return t.updateConditions(t.id,{name:e.target.value,sub:"",subId:""})}}))}ConditionName.propTypes={updateConditions:r.func.isRequired,id:r.string.isRequired,name:r.string.isRequired,options:r.array.isRequired,default:r.string.isRequired},ConditionName.defaultProps={name:""}},72888:(t,e,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(e,"__esModule",{value:!0}),e.default=ConditionSubId;var u=a(n(63804)),s=a(n(83452));n(10195);var c=n(78675);function ConditionSubId(t){if(!t.sub||!(0,s.default)(t.subIdAutocomplete).length)return"";var e=u.default.useMemo((function(){return function getSettings(t){return{allowClear:!1,placeholder:r("All","elementor-pro"),dir:elementorCommon.config.isRTL?"rtl":"ltr",ajax:{transport:function transport(e,n,r){return elementorCommon.ajax.addRequest("pro_panel_posts_control_filter_autocomplete",{data:{q:e.data.q,autocomplete:t},success:n,error:r})},data:function data(t){return{q:t.term,page:t.page}},cache:!0},escapeMarkup:function escapeMarkup(t){return t},minimumInputLength:1}}(t.subIdAutocomplete)}),[t.subIdAutocomplete]);return u.default.createElement("div",{className:"e-site-editor-conditions__input-wrapper"},u.default.createElement(c.Select2,{onChange:function onChange(e){return t.updateConditions(t.id,{subId:e.target.value})},value:t.subId,settings:e,options:t.subIdOptions}))}ConditionSubId.propTypes={subIdAutocomplete:o.object,id:o.string.isRequired,sub:o.string,subId:o.string,updateConditions:o.func,subIdOptions:o.array},ConditionSubId.defaultProps={subId:"",subIdOptions:[]}},74090:(t,e,n)=>{"use strict";var r=n(23615),o=n(67394),i=n(67971);o(e,"__esModule",{value:!0}),e.default=ConditionSub;var a=i(n(63804));n(99745),n(10195);var u=n(78675);function ConditionSub(t){if("general"===t.name||!t.subOptions.length)return"";return a.default.createElement("div",{className:"e-site-editor-conditions__input-wrapper"},a.default.createElement(u.Select,{options:t.subOptions,value:t.sub,onChange:function onChange(e){return t.updateConditions(t.id,{sub:e.target.value,subId:""})}}))}ConditionSub.propTypes={updateConditions:r.func.isRequired,id:r.string.isRequired,name:r.string.isRequired,sub:r.string.isRequired,subOptions:r.array.isRequired},ConditionSub.defaultProps={sub:"",subOptions:{}}},44172:(t,e,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(e,"__esModule",{value:!0}),e.default=ConditionType;var u=a(n(63804)),s=n(78675);function ConditionType(t){var e=u.default.createRef(),n=[{label:r("Include","elementor-pro"),value:"include"},{label:r("Exclude","elementor-pro"),value:"exclude"}];return u.default.useEffect((function(){e.current.setAttribute("data-elementor-condition-type",t.type)})),u.default.createElement("div",{className:"e-site-editor-conditions__input-wrapper e-site-editor-conditions__input-wrapper--condition-type",ref:e},u.default.createElement(s.Select,{options:n,value:t.type,onChange:function onChange(e){t.updateConditions(t.id,{type:e.target.value})}}))}ConditionType.propTypes={updateConditions:o.func.isRequired,id:o.string.isRequired,type:o.string.isRequired},ConditionType.defaultProps={type:""}},7707:(t,e,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(e,"__esModule",{value:!0}),e.default=ConditionsRows;var u=a(n(63804)),s=a(n(37959)),c=a(n(35657));n(90286);var l=n(78221),f=n(78675),d=a(n(44172)),p=a(n(87072)),v=a(n(74090)),h=a(n(72888)),y=a(n(73391));function ConditionsRows(t){var e=u.default.useContext(l.Context),n=e.conditions,o=e.createConditionItemInState,i=e.updateConditionItemState,a=e.removeConditionItemInState,m=e.saveConditions,g=e.action,x=e.resetActionState,_=(0,c.default)(n).map((function(t){return u.default.createElement("div",{key:t.id},u.default.createElement("div",{className:"e-site-editor-conditions__row"},u.default.createElement("div",{className:"e-site-editor-conditions__row-controls ".concat(t.conflictErrors.length&&"e-site-editor-conditions__row-controls--error")},u.default.createElement(d.default,(0,s.default)({},t,{updateConditions:i})),u.default.createElement("div",{className:"e-site-editor-conditions__row-controls-inner"},u.default.createElement(p.default,(0,s.default)({},t,{updateConditions:i})),u.default.createElement(v.default,(0,s.default)({},t,{updateConditions:i})),u.default.createElement(h.default,(0,s.default)({},t,{updateConditions:i})))),u.default.createElement(f.Button,{className:"e-site-editor-conditions__remove-condition",text:r("Delete","elementor-pro"),icon:"eicon-close",hideText:!0,onClick:function onClick(){return a(t.id)}})),u.default.createElement(y.default,{conflicts:t.conflictErrors}))})),b=g.current===l.ConditionsProvider.actions.SAVE&&g.loading;return u.default.createElement(u.default.Fragment,null,g.error&&u.default.createElement(f.Dialog,{text:g.error,dismissButtonText:r("Go Back","elementor-pro"),dismissButtonOnClick:x,approveButtonText:r("Learn More","elementor-pro"),approveButtonColor:"link",approveButtonUrl:"https://go.elementor.com/app-theme-builder-conditions-load-issue",approveButtonTarget:"_target"}),u.default.createElement("div",{className:"e-site-editor-conditions__rows"},_),u.default.createElement("div",{className:"e-site-editor-conditions__add-button-container"},u.default.createElement(f.Button,{className:"e-site-editor-conditions__add-button",variant:"contained",size:"lg",text:r("Add Condition","elementor-pro"),onClick:o})),u.default.createElement("div",{className:"e-site-editor-conditions__footer"},u.default.createElement(f.Button,{variant:"contained",color:"primary",size:"lg",hideText:b,icon:b?"eicon-loading eicon-animation-spin":"",text:r("Save & Close","elementor-pro"),onClick:function onClick(){return m().then(t.onAfterSave)}})))}ConditionsRows.propTypes={onAfterSave:o.func}},40474:(t,e,n)=>{"use strict";var r=n(18194).__,o=n(67394),i=n(67971);o(e,"__esModule",{value:!0}),e.default=void 0;var a=i(n(63804)),u=i(n(11959)),s=i(n(39041)),c=i(n(38852)),l=i(n(77371)),f=i(n(68537)),d=i(n(88704)),p=i(n(34312)),v=function(t){(0,l.default)(CustomCode,t);var e=(0,f.default)(CustomCode);function CustomCode(){var t;return(0,u.default)(this,CustomCode),t=e.call(this),jQuery(t.initialize.bind((0,c.default)(t))),t}return(0,s.default)(CustomCode,[{key:"initialize",value:function initialize(){$e.components.register(new d.default),ReactDOM.render(a.default.createElement(p.default,null),document.querySelector(".post-conditions")),this.addTipsyToFields(),this.addDescription(),this.addLocationChangeHandler(),this.setOptionsPlacementVisibility("elementor_body_end"===jQuery("#location").val())}},{key:"addTipsyToFields",value:function addTipsyToFields(){jQuery(".elementor-field-label i[data-info]").tipsy({title:function title(){return this.getAttribute("data-info")},gravity:function gravity(){return"s"}})}},{key:"addDescription",value:function addDescription(){var t="<p>"+r("Manage and create all of your custom code here.<br />Organize all of your custom code and incorporate code snippets in your site. Add tracking codes, meta titles, and other scripts. Set display conditions, locations, and priority all from one place.","elementor-pro")+'&nbsp;<a target="_blank" href="https://go.elementor.com/wp-dash-custom-code">'+r("Learn more","elementor-pro")+"</a></p>";jQuery(t).insertBefore(".wp-header-end")}},{key:"addLocationChangeHandler",value:function addLocationChangeHandler(){var t=this;jQuery("#location").on("change",(function(e){t.setOptionsPlacementVisibility("elementor_body_end"===e.target.value)}))}},{key:"setOptionsPlacementVisibility",value:function setOptionsPlacementVisibility(t){jQuery(".elementor-custom-code-options-placement").toggleClass("show",t)}}]),CustomCode}(elementorModules.Module);e.default=v,elementorProAdmin.customCode=new v},34312:(t,e,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971),u=n(52369);i(e,"__esModule",{value:!0}),e.default=ConditionsModal;var s=u(n(63804)),c=a(n(57135));n(90286),n(99745);var l=a(n(35657)),f=a(n(32009)),d=a(n(49117)),p=a(n(84899)),v=a(n(47834)),h=n(78675),y=a(n(86250)),m=a(n(3145));function ConditionsModal(){var t=(0,s.useState)(!1),e=(0,v.default)(t,2),n=e[0],o=e[1],i=(0,s.useState)({conditions:null,instances:null}),a=(0,v.default)(i,2),u=a[0],g=a[1],x=(0,s.useRef)(!1),_=elementorProAdmin.customCode.post,b=(0,s.useMemo)((function(){return{$form:jQuery("#post"),$formConditions:jQuery("<input />"),$publishButton:jQuery("#publish"),title:{$label:jQuery("#title-prompt-text"),$input:jQuery("#title")}}}),[]),C=function onPostSubmit(){var t=b.title;t.$input.attr("value").length||(t.$label.addClass("screen-reader-text"),t.$input.attr("value",r("Elementor Custom-Code #","elementor-pro")+elementorProAdmin.customCode.post.ID))},S=function onPublishClick(t){if("auto-draft"===_.post_status&&!n&&!x.current){t.preventDefault();var e=[{name:"general",sub:"",subId:"",type:"include"}];g((function(t){return(0,p.default)((0,p.default)({},t),{},{conditions:e})})),o(!0)}},w=function(){var t=(0,d.default)(c.default.mark((function _callee(){var t;return c.default.wrap((function _callee$(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,m.default.create();case 2:t=e.sent,$e.data.get("site-editor/templates-conditions",{id:_.ID},{refresh:!0}).then((function(e){var n=(0,l.default)(e.data).map((function(t){return{type:t.type,name:t.name,sub:t.sub_name,subId:t.sub_id}})),r=(0,l.default)(t.calculateInstances(n)).join(",");g((function(t){return(0,p.default)((0,p.default)({},t),{},{conditions:n,instances:r})}))}));case 4:case"end":return e.stop()}}),_callee)})));return function initData(){return t.apply(this,arguments)}}();return(0,s.useEffect)((function(){w(),function bindEvents(){b.$publishButton.on("click",S),b.$form.on("submit",C)}()}),[]),_&&u.conditions?s.default.createElement(s.default.Fragment,null,s.default.createElement(h.Text,{tag:"span",className:"post-conditions-display"},s.default.createElement("b",null,u.instances+" ")),s.default.createElement(h.Button,{onClick:function onClick(){return o(!0)},text:r("Edit","elementor"),variant:"underlined"}),s.default.createElement(h.ModalProvider,{show:n,setShow:o,title:r("Publish Settings","elementor"),icon:"eps-app__logo eicon-elementor"},s.default.createElement(h.CssGrid,{columns:1,spacing:700},s.default.createElement("section",null,s.default.createElement(y.default,{id:_.ID,status:_.post_status,conditions:u.conditions,onConditionsSaved:function onConditionsSaved(t){var e=t.conditions,n=(0,l.default)(t.instances).join(","),r=b.$form,i=b.$formConditions,a=b.$publishButton;x.current=!0,g((function(t){return(0,p.default)((0,p.default)({},t),{},{conditions:e,instances:n})})),"auto-draft"!==_.post_status&&"draft"!==_.post_status||i.attr("type","hidden").attr("name","_conditions").attr("value",(0,f.default)(e)).appendTo(r),a.trigger("click"),o(!1)},onAfterSave:function onAfterSave(){}}))))):s.default.createElement(s.default.Fragment,null,s.default.createElement(h.Text,{tag:"span"},r("Loading","elementor")),s.default.createElement(h.Icon,{className:"spinner"}))}ConditionsModal.propTypes={children:o.object}},86250:(t,e,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(e,"__esModule",{value:!0}),e.default=Conditions;var u=a(n(63804)),s=a(n(84899)),c=n(78675),l=a(n(78221)),f=a(n(7707));function Conditions(t){var e=(0,s.default)((0,s.default)({},t),{},{defaultCondition:"general"});return u.default.createElement("section",{className:"e-site-editor-conditions"},u.default.createElement("div",{className:"e-site-editor-conditions__header"},u.default.createElement("img",{className:"e-site-editor-conditions__header-image",src:"".concat(elementorAppProConfig.baseUrl,"/modules/theme-builder/assets/images/conditions-tab.svg"),alt:r("Conditions","elementor-pro")}),u.default.createElement(c.Heading,{variant:"h1",tag:"h1"},r("Where Do You Want to Display Your Code?","elementor-pro")),u.default.createElement(c.Text,{variant:"md"},r("Set the conditions that determine where your code snippet is used throughout your site.","elementor-pro"),u.default.createElement("br",null),r("For example, choose 'Entire Site' to display the code snippet across your site.","elementor-pro"))),u.default.createElement(l.default,{validateConflicts:!1,currentTemplate:e,onConditionsSaved:function onConditionsSaved(e,n){$e.data.setCache($e.components.get("site-editor"),"site-editor/templates-conditions",{id:e},n.conditions),t.onConditionsSaved(n)}},u.default.createElement(f.default,{onAfterSave:t.onAfterSave})))}Conditions.propTypes={id:o.number,status:o.string.isRequired,conditions:o.array,onConditionsSaved:o.func,onAfterSave:o.func.isRequired},Conditions.defaultProps={conditions:[],onConditionsSaved:function onConditionsSaved(){}}},7421:(t,e,n)=>{n(99572),n(37627),t.exports=n(47208).Array.from},70157:(t,e,n)=>{n(42580),t.exports=n(47208).Array.isArray},89710:(t,e,n)=>{var r=n(47208),o=r.JSON||(r.JSON={stringify:JSON.stringify});t.exports=function stringify(t){return o.stringify.apply(o,arguments)}},66458:(t,e,n)=>{n(99954),t.exports=n(47208).Object.assign},14710:(t,e,n)=>{n(30785);var r=n(47208).Object;t.exports=function create(t,e){return r.create(t,e)}},23022:(t,e,n)=>{n(23078);var r=n(47208).Object;t.exports=function defineProperties(t,e){return r.defineProperties(t,e)}},43153:(t,e,n)=>{n(40168);var r=n(47208).Object;t.exports=function defineProperty(t,e,n){return r.defineProperty(t,e,n)}},32622:(t,e,n)=>{n(18576);var r=n(47208).Object;t.exports=function getOwnPropertyDescriptor(t,e){return r.getOwnPropertyDescriptor(t,e)}},27410:(t,e,n)=>{n(67685),t.exports=n(47208).Object.getOwnPropertyDescriptors},19035:(t,e,n)=>{n(54370),t.exports=n(47208).Object.getOwnPropertySymbols},58535:(t,e,n)=>{n(4840),t.exports=n(47208).Object.getPrototypeOf},97220:(t,e,n)=>{n(5453),t.exports=n(47208).Object.keys},65135:(t,e,n)=>{n(13890),t.exports=n(47208).Object.setPrototypeOf},69591:(t,e,n)=>{n(57188),t.exports=n(47208).Object.values},76483:(t,e,n)=>{n(70285),n(99572),n(74114),n(86082),n(81522),n(25757),t.exports=n(47208).Promise},43094:(t,e,n)=>{n(11320),t.exports=n(47208).Reflect.construct},19103:(t,e,n)=>{n(54370),n(70285),n(87573),n(97224),t.exports=n(47208).Symbol},39871:(t,e,n)=>{n(99572),n(74114),t.exports=n(7273).f("iterator")},89999:(t,e,n)=>{n(70285),n(74114),n(23337),n(10143),n(92797),t.exports=n(47208).WeakMap},26610:t=>{t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},29697:t=>{t.exports=function(){}},54677:t=>{t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},30498:(t,e,n)=>{var r=n(39632);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},69191:(t,e,n)=>{var r=n(1504),o=n(37154),i=n(46723);t.exports=function(t){return function(e,n,a){var u,s=r(e),c=o(s.length),l=i(a,c);if(t&&n!=n){for(;c>l;)if((u=s[l++])!=u)return!0}else for(;c>l;l++)if((t||l in s)&&s[l]===n)return t||l||0;return!t&&-1}}},97647:(t,e,n)=>{var r=n(61725),o=n(13115),i=n(60061),a=n(37154),u=n(41904);t.exports=function(t,e){var n=1==t,s=2==t,c=3==t,l=4==t,f=6==t,d=5==t||f,p=e||u;return function(e,u,v){for(var h,y,m=i(e),g=o(m),x=r(u,v,3),_=a(g.length),b=0,C=n?p(e,_):s?p(e,0):void 0;_>b;b++)if((d||b in g)&&(y=x(h=g[b],b,m),t))if(n)C[b]=y;else if(y)switch(t){case 3:return!0;case 5:return h;case 6:return b;case 2:C.push(h)}else if(l)return!1;return f?-1:c||l?l:C}}},88320:(t,e,n)=>{var r=n(39632),o=n(7359),i=n(24300)("species");t.exports=function(t){var e;return o(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!o(e.prototype)||(e=void 0),r(e)&&null===(e=e[i])&&(e=void 0)),void 0===e?Array:e}},41904:(t,e,n)=>{var r=n(88320);t.exports=function(t,e){return new(r(t))(e)}},45515:(t,e,n)=>{"use strict";var r=n(26610),o=n(39632),i=n(19897),a=[].slice,u={},construct=function(t,e,n){if(!(e in u)){for(var r=[],o=0;o<e;o++)r[o]="a["+o+"]";u[e]=Function("F,a","return new F("+r.join(",")+")")}return u[e](t,n)};t.exports=Function.bind||function bind(t){var e=r(this),n=a.call(arguments,1),bound=function(){var r=n.concat(a.call(arguments));return this instanceof bound?construct(e,r.length,r):i(e,r,t)};return o(e.prototype)&&(bound.prototype=e.prototype),bound}},8312:(t,e,n)=>{var r=n(41352),o=n(24300)("toStringTag"),i="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?n:i?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},41352:t=>{var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},92600:(t,e,n)=>{"use strict";var r=n(13199),o=n(6758).getWeak,i=n(30498),a=n(39632),u=n(54677),s=n(25985),c=n(97647),l=n(20657),f=n(41081),d=c(5),p=c(6),v=0,uncaughtFrozenStore=function(t){return t._l||(t._l=new UncaughtFrozenStore)},UncaughtFrozenStore=function(){this.a=[]},findUncaughtFrozen=function(t,e){return d(t.a,(function(t){return t[0]===e}))};UncaughtFrozenStore.prototype={get:function(t){var e=findUncaughtFrozen(this,t);if(e)return e[1]},has:function(t){return!!findUncaughtFrozen(this,t)},set:function(t,e){var n=findUncaughtFrozen(this,t);n?n[1]=e:this.a.push([t,e])},delete:function(t){var e=p(this.a,(function(e){return e[0]===t}));return~e&&this.a.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,n,i){var c=t((function(t,r){u(t,c,e,"_i"),t._t=e,t._i=v++,t._l=void 0,null!=r&&s(r,n,t[i],t)}));return r(c.prototype,{delete:function(t){if(!a(t))return!1;var n=o(t);return!0===n?uncaughtFrozenStore(f(this,e)).delete(t):n&&l(n,this._i)&&delete n[this._i]},has:function has(t){if(!a(t))return!1;var n=o(t);return!0===n?uncaughtFrozenStore(f(this,e)).has(t):n&&l(n,this._i)}}),c},def:function(t,e,n){var r=o(i(e),!0);return!0===r?uncaughtFrozenStore(t).set(e,n):r[t._i]=n,t},ufstore:uncaughtFrozenStore}},70770:(t,e,n)=>{"use strict";var r=n(43280),o=n(98310),i=n(6758),a=n(90472),u=n(62292),s=n(13199),c=n(25985),l=n(54677),f=n(39632),d=n(2413),p=n(60510).f,v=n(97647)(0),h=n(75179);t.exports=function(t,e,n,y,m,g){var x=r[t],_=x,b=m?"set":"add",C=_&&_.prototype,S={};return h&&"function"==typeof _&&(g||C.forEach&&!a((function(){(new _).entries().next()})))?(_=e((function(e,n){l(e,_,t,"_c"),e._c=new x,null!=n&&c(n,m,e[b],e)})),v("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),(function(t){var e="add"==t||"set"==t;!(t in C)||g&&"clear"==t||u(_.prototype,t,(function(n,r){if(l(this,_,t),!e&&g&&!f(n))return"get"==t&&void 0;var o=this._c[t](0===n?0:n,r);return e?this:o}))})),g||p(_.prototype,"size",{get:function(){return this._c.size}})):(_=y.getConstructor(e,t,m,b),s(_.prototype,n),i.NEED=!0),d(_,t),S[t]=_,o(o.G+o.W+o.F,S),g||y.setStrong(_,t,m),_}},47208:t=>{var e=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=e)},87352:(t,e,n)=>{"use strict";var r=n(60510),o=n(48439);t.exports=function(t,e,n){e in t?r.f(t,e,o(0,n)):t[e]=n}},61725:(t,e,n)=>{var r=n(26610);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},18239:t=>{t.exports=function(t){if(null==t)throw TypeError("Can't call method on  "+t);return t}},75179:(t,e,n)=>{t.exports=!n(90472)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},48765:(t,e,n)=>{var r=n(39632),o=n(43280).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},31986:t=>{t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},42266:(t,e,n)=>{var r=n(86425),o=n(97739),i=n(67410);t.exports=function(t){var e=r(t),n=o.f;if(n)for(var a,u=n(t),s=i.f,c=0;u.length>c;)s.call(t,a=u[c++])&&e.push(a);return e}},98310:(t,e,n)=>{var r=n(43280),o=n(47208),i=n(61725),a=n(62292),u=n(20657),$export=function(t,e,n){var s,c,l,f=t&$export.F,d=t&$export.G,p=t&$export.S,v=t&$export.P,h=t&$export.B,y=t&$export.W,m=d?o:o[e]||(o[e]={}),g=m.prototype,x=d?r:p?r[e]:(r[e]||{}).prototype;for(s in d&&(n=e),n)(c=!f&&x&&void 0!==x[s])&&u(m,s)||(l=c?x[s]:n[s],m[s]=d&&"function"!=typeof x[s]?n[s]:h&&c?i(l,r):y&&x[s]==l?function(t){var F=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return F.prototype=t.prototype,F}(l):v&&"function"==typeof l?i(Function.call,l):l,v&&((m.virtual||(m.virtual={}))[s]=l,t&$export.R&&g&&!g[s]&&a(g,s,l)))};$export.F=1,$export.G=2,$export.S=4,$export.P=8,$export.B=16,$export.W=32,$export.U=64,$export.R=128,t.exports=$export},90472:t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},25985:(t,e,n)=>{var r=n(61725),o=n(93086),i=n(11827),a=n(30498),u=n(37154),s=n(26116),c={},l={},f=t.exports=function(t,e,n,f,d){var p,v,h,y,m=d?function(){return t}:s(t),g=r(n,f,e?2:1),x=0;if("function"!=typeof m)throw TypeError(t+" is not iterable!");if(i(m)){for(p=u(t.length);p>x;x++)if((y=e?g(a(v=t[x])[0],v[1]):g(t[x]))===c||y===l)return y}else for(h=m.call(t);!(v=h.next()).done;)if((y=o(h,g,v.value,e))===c||y===l)return y};f.BREAK=c,f.RETURN=l},43280:t=>{var e=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},20657:t=>{var e={}.hasOwnProperty;t.exports=function(t,n){return e.call(t,n)}},62292:(t,e,n)=>{var r=n(60510),o=n(48439);t.exports=n(75179)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},92477:(t,e,n)=>{var r=n(43280).document;t.exports=r&&r.documentElement},64457:(t,e,n)=>{t.exports=!n(75179)&&!n(90472)((function(){return 7!=Object.defineProperty(n(48765)("div"),"a",{get:function(){return 7}}).a}))},19897:t=>{t.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},13115:(t,e,n)=>{var r=n(41352);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},11827:(t,e,n)=>{var r=n(79105),o=n(24300)("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},7359:(t,e,n)=>{var r=n(41352);t.exports=Array.isArray||function isArray(t){return"Array"==r(t)}},39632:t=>{t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},93086:(t,e,n)=>{var r=n(30498);t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(e){var i=t.return;throw void 0!==i&&r(i.call(t)),e}}},19802:(t,e,n)=>{"use strict";var r=n(82488),o=n(48439),i=n(2413),a={};n(62292)(a,n(24300)("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+" Iterator")}},6125:(t,e,n)=>{"use strict";var r=n(36794),o=n(98310),i=n(19312),a=n(62292),u=n(79105),s=n(19802),c=n(2413),l=n(999),f=n(24300)("iterator"),d=!([].keys&&"next"in[].keys()),p="keys",v="values",returnThis=function(){return this};t.exports=function(t,e,n,h,y,m,g){s(n,e,h);var x,_,b,getMethod=function(t){if(!d&&t in O)return O[t];switch(t){case p:return function keys(){return new n(this,t)};case v:return function values(){return new n(this,t)}}return function entries(){return new n(this,t)}},C=e+" Iterator",S=y==v,w=!1,O=t.prototype,E=O[f]||O["@@iterator"]||y&&O[y],P=E||getMethod(y),I=y?S?getMethod("entries"):P:void 0,T="Array"==e&&O.entries||E;if(T&&(b=l(T.call(new t)))!==Object.prototype&&b.next&&(c(b,C,!0),r||"function"==typeof b[f]||a(b,f,returnThis)),S&&E&&E.name!==v&&(w=!0,P=function values(){return E.call(this)}),r&&!g||!d&&!w&&O[f]||a(O,f,P),u[e]=P,u[C]=returnThis,y)if(x={values:S?P:getMethod(v),keys:m?P:getMethod(p),entries:I},g)for(_ in x)_ in O||i(O,_,x[_]);else o(o.P+o.F*(d||w),e,x);return x}},26797:(t,e,n)=>{var r=n(24300)("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],a=i[r]();a.next=function(){return{done:n=!0}},i[r]=function(){return a},t(i)}catch(t){}return n}},9329:t=>{t.exports=function(t,e){return{value:e,done:!!t}}},79105:t=>{t.exports={}},36794:t=>{t.exports=!0},6758:(t,e,n)=>{var r=n(54251)("meta"),o=n(39632),i=n(20657),a=n(60510).f,u=0,s=Object.isExtensible||function(){return!0},c=!n(90472)((function(){return s(Object.preventExtensions({}))})),setMeta=function(t){a(t,r,{value:{i:"O"+ ++u,w:{}}})},l=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,r)){if(!s(t))return"F";if(!e)return"E";setMeta(t)}return t[r].i},getWeak:function(t,e){if(!i(t,r)){if(!s(t))return!0;if(!e)return!1;setMeta(t)}return t[r].w},onFreeze:function(t){return c&&l.NEED&&s(t)&&!i(t,r)&&setMeta(t),t}}},4326:(t,e,n)=>{var r=n(43280),o=n(6022).set,i=r.MutationObserver||r.WebKitMutationObserver,a=r.process,u=r.Promise,s="process"==n(41352)(a);t.exports=function(){var t,e,n,flush=function(){var r,o;for(s&&(r=a.domain)&&r.exit();t;){o=t.fn,t=t.next;try{o()}catch(r){throw t?n():e=void 0,r}}e=void 0,r&&r.enter()};if(s)n=function(){a.nextTick(flush)};else if(!i||r.navigator&&r.navigator.standalone)if(u&&u.resolve){var c=u.resolve(void 0);n=function(){c.then(flush)}}else n=function(){o.call(r,flush)};else{var l=!0,f=document.createTextNode("");new i(flush).observe(f,{characterData:!0}),n=function(){f.data=l=!l}}return function(r){var o={fn:r,next:void 0};e&&(e.next=o),t||(t=o,n()),e=o}}},88579:(t,e,n)=>{"use strict";var r=n(26610);function PromiseCapability(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)}t.exports.f=function(t){return new PromiseCapability(t)}},77995:(t,e,n)=>{"use strict";var r=n(75179),o=n(86425),i=n(97739),a=n(67410),u=n(60061),s=n(13115),c=Object.assign;t.exports=!c||n(90472)((function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=c({},t)[n]||Object.keys(c({},e)).join("")!=r}))?function assign(t,e){for(var n=u(t),c=arguments.length,l=1,f=i.f,d=a.f;c>l;)for(var p,v=s(arguments[l++]),h=f?o(v).concat(f(v)):o(v),y=h.length,m=0;y>m;)p=h[m++],r&&!d.call(v,p)||(n[p]=v[p]);return n}:c},82488:(t,e,n)=>{var r=n(30498),o=n(36607),i=n(31986),a=n(18478)("IE_PROTO"),Empty=function(){},createDict=function(){var t,e=n(48765)("iframe"),r=i.length;for(e.style.display="none",n(92477).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),createDict=t.F;r--;)delete createDict.prototype[i[r]];return createDict()};t.exports=Object.create||function create(t,e){var n;return null!==t?(Empty.prototype=r(t),n=new Empty,Empty.prototype=null,n[a]=t):n=createDict(),void 0===e?n:o(n,e)}},60510:(t,e,n)=>{var r=n(30498),o=n(64457),i=n(12737),a=Object.defineProperty;e.f=n(75179)?Object.defineProperty:function defineProperty(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},36607:(t,e,n)=>{var r=n(60510),o=n(30498),i=n(86425);t.exports=n(75179)?Object.defineProperties:function defineProperties(t,e){o(t);for(var n,a=i(e),u=a.length,s=0;u>s;)r.f(t,n=a[s++],e[n]);return t}},83264:(t,e,n)=>{var r=n(67410),o=n(48439),i=n(1504),a=n(12737),u=n(20657),s=n(64457),c=Object.getOwnPropertyDescriptor;e.f=n(75179)?c:function getOwnPropertyDescriptor(t,e){if(t=i(t),e=a(e,!0),s)try{return c(t,e)}catch(t){}if(u(t,e))return o(!r.f.call(t,e),t[e])}},26084:(t,e,n)=>{var r=n(1504),o=n(8772).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function getOwnPropertyNames(t){return a&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(t){return a.slice()}}(t):o(r(t))}},8772:(t,e,n)=>{var r=n(65326),o=n(31986).concat("length","prototype");e.f=Object.getOwnPropertyNames||function getOwnPropertyNames(t){return r(t,o)}},97739:(t,e)=>{e.f=Object.getOwnPropertySymbols},999:(t,e,n)=>{var r=n(20657),o=n(60061),i=n(18478)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},65326:(t,e,n)=>{var r=n(20657),o=n(1504),i=n(69191)(!1),a=n(18478)("IE_PROTO");t.exports=function(t,e){var n,u=o(t),s=0,c=[];for(n in u)n!=a&&r(u,n)&&c.push(n);for(;e.length>s;)r(u,n=e[s++])&&(~i(c,n)||c.push(n));return c}},86425:(t,e,n)=>{var r=n(65326),o=n(31986);t.exports=Object.keys||function keys(t){return r(t,o)}},67410:(t,e)=>{e.f={}.propertyIsEnumerable},57972:(t,e,n)=>{var r=n(98310),o=n(47208),i=n(90472);t.exports=function(t,e){var n=(o.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*i((function(){n(1)})),"Object",a)}},9480:(t,e,n)=>{var r=n(75179),o=n(86425),i=n(1504),a=n(67410).f;t.exports=function(t){return function(e){for(var n,u=i(e),s=o(u),c=s.length,l=0,f=[];c>l;)n=s[l++],r&&!a.call(u,n)||f.push(t?[n,u[n]]:u[n]);return f}}},64344:(t,e,n)=>{var r=n(8772),o=n(97739),i=n(30498),a=n(43280).Reflect;t.exports=a&&a.ownKeys||function ownKeys(t){var e=r.f(i(t)),n=o.f;return n?e.concat(n(t)):e}},52745:t=>{t.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},88747:(t,e,n)=>{var r=n(30498),o=n(39632),i=n(88579);t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t);return(0,n.resolve)(e),n.promise}},48439:t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},13199:(t,e,n)=>{var r=n(62292);t.exports=function(t,e,n){for(var o in e)n&&t[o]?t[o]=e[o]:r(t,o,e[o]);return t}},19312:(t,e,n)=>{t.exports=n(62292)},14689:(t,e,n)=>{"use strict";var r=n(98310),o=n(26610),i=n(61725),a=n(25985);t.exports=function(t){r(r.S,t,{from:function from(t){var e,n,r,u,s=arguments[1];return o(this),(e=void 0!==s)&&o(s),null==t?new this:(n=[],e?(r=0,u=i(s,arguments[2],2),a(t,!1,(function(t){n.push(u(t,r++))}))):a(t,!1,n.push,n),new this(n))}})}},7883:(t,e,n)=>{"use strict";var r=n(98310);t.exports=function(t){r(r.S,t,{of:function of(){for(var t=arguments.length,e=new Array(t);t--;)e[t]=arguments[t];return new this(e)}})}},25574:(t,e,n)=>{var r=n(39632),o=n(30498),check=function(t,e){if(o(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{(r=n(61725)(Function.call,n(83264).f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function setPrototypeOf(t,n){return check(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check}},5698:(t,e,n)=>{"use strict";var r=n(43280),o=n(47208),i=n(60510),a=n(75179),u=n(24300)("species");t.exports=function(t){var e="function"==typeof o[t]?o[t]:r[t];a&&e&&!e[u]&&i.f(e,u,{configurable:!0,get:function(){return this}})}},2413:(t,e,n)=>{var r=n(60510).f,o=n(20657),i=n(24300)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},18478:(t,e,n)=>{var r=n(29990)("keys"),o=n(54251);t.exports=function(t){return r[t]||(r[t]=o(t))}},29990:(t,e,n)=>{var r=n(47208),o=n(43280),i="__core-js_shared__",a=o[i]||(o[i]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(36794)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},73732:(t,e,n)=>{var r=n(30498),o=n(26610),i=n(24300)("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||null==(n=r(a)[i])?e:o(n)}},78502:(t,e,n)=>{var r=n(58290),o=n(18239);t.exports=function(t){return function(e,n){var i,a,u=String(o(e)),s=r(n),c=u.length;return s<0||s>=c?t?"":void 0:(i=u.charCodeAt(s))<55296||i>56319||s+1===c||(a=u.charCodeAt(s+1))<56320||a>57343?t?u.charAt(s):i:t?u.slice(s,s+2):a-56320+(i-55296<<10)+65536}}},6022:(t,e,n)=>{var r,o,i,a=n(61725),u=n(19897),s=n(92477),c=n(48765),l=n(43280),f=l.process,d=l.setImmediate,p=l.clearImmediate,v=l.MessageChannel,h=l.Dispatch,y=0,m={},g="onreadystatechange",run=function(){var t=+this;if(m.hasOwnProperty(t)){var e=m[t];delete m[t],e()}},listener=function(t){run.call(t.data)};d&&p||(d=function setImmediate(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return m[++y]=function(){u("function"==typeof t?t:Function(t),e)},r(y),y},p=function clearImmediate(t){delete m[t]},"process"==n(41352)(f)?r=function(t){f.nextTick(a(run,t,1))}:h&&h.now?r=function(t){h.now(a(run,t,1))}:v?(i=(o=new v).port2,o.port1.onmessage=listener,r=a(i.postMessage,i,1)):l.addEventListener&&"function"==typeof postMessage&&!l.importScripts?(r=function(t){l.postMessage(t+"","*")},l.addEventListener("message",listener,!1)):r=g in c("script")?function(t){s.appendChild(c("script")).onreadystatechange=function(){s.removeChild(this),run.call(t)}}:function(t){setTimeout(a(run,t,1),0)}),t.exports={set:d,clear:p}},46723:(t,e,n)=>{var r=n(58290),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},58290:t=>{var e=Math.ceil,n=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?n:e)(t)}},1504:(t,e,n)=>{var r=n(13115),o=n(18239);t.exports=function(t){return r(o(t))}},37154:(t,e,n)=>{var r=n(58290),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},60061:(t,e,n)=>{var r=n(18239);t.exports=function(t){return Object(r(t))}},12737:(t,e,n)=>{var r=n(39632);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},54251:t=>{var e=0,n=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++e+n).toString(36))}},35701:(t,e,n)=>{var r=n(43280).navigator;t.exports=r&&r.userAgent||""},41081:(t,e,n)=>{var r=n(39632);t.exports=function(t,e){if(!r(t)||t._t!==e)throw TypeError("Incompatible receiver, "+e+" required!");return t}},31164:(t,e,n)=>{var r=n(43280),o=n(47208),i=n(36794),a=n(7273),u=n(60510).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||u(e,t,{value:a.f(t)})}},7273:(t,e,n)=>{e.f=n(24300)},24300:(t,e,n)=>{var r=n(29990)("wks"),o=n(54251),i=n(43280).Symbol,a="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))}).store=r},26116:(t,e,n)=>{var r=n(8312),o=n(24300)("iterator"),i=n(79105);t.exports=n(47208).getIteratorMethod=function(t){if(null!=t)return t[o]||t["@@iterator"]||i[r(t)]}},37627:(t,e,n)=>{"use strict";var r=n(61725),o=n(98310),i=n(60061),a=n(93086),u=n(11827),s=n(37154),c=n(87352),l=n(26116);o(o.S+o.F*!n(26797)((function(t){Array.from(t)})),"Array",{from:function from(t){var e,n,o,f,d=i(t),p="function"==typeof this?this:Array,v=arguments.length,h=v>1?arguments[1]:void 0,y=void 0!==h,m=0,g=l(d);if(y&&(h=r(h,v>2?arguments[2]:void 0,2)),null==g||p==Array&&u(g))for(n=new p(e=s(d.length));e>m;m++)c(n,m,y?h(d[m],m):d[m]);else for(f=g.call(d),n=new p;!(o=f.next()).done;m++)c(n,m,y?a(f,h,[o.value,m],!0):o.value);return n.length=m,n}})},42580:(t,e,n)=>{var r=n(98310);r(r.S,"Array",{isArray:n(7359)})},84411:(t,e,n)=>{"use strict";var r=n(29697),o=n(9329),i=n(79105),a=n(1504);t.exports=n(6125)(Array,"Array",(function(t,e){this._t=a(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},99954:(t,e,n)=>{var r=n(98310);r(r.S+r.F,"Object",{assign:n(77995)})},30785:(t,e,n)=>{var r=n(98310);r(r.S,"Object",{create:n(82488)})},23078:(t,e,n)=>{var r=n(98310);r(r.S+r.F*!n(75179),"Object",{defineProperties:n(36607)})},40168:(t,e,n)=>{var r=n(98310);r(r.S+r.F*!n(75179),"Object",{defineProperty:n(60510).f})},18576:(t,e,n)=>{var r=n(1504),o=n(83264).f;n(57972)("getOwnPropertyDescriptor",(function(){return function getOwnPropertyDescriptor(t,e){return o(r(t),e)}}))},4840:(t,e,n)=>{var r=n(60061),o=n(999);n(57972)("getPrototypeOf",(function(){return function getPrototypeOf(t){return o(r(t))}}))},5453:(t,e,n)=>{var r=n(60061),o=n(86425);n(57972)("keys",(function(){return function keys(t){return o(r(t))}}))},13890:(t,e,n)=>{var r=n(98310);r(r.S,"Object",{setPrototypeOf:n(25574).set})},70285:()=>{},86082:(t,e,n)=>{"use strict";var r,o,i,a,u=n(36794),s=n(43280),c=n(61725),l=n(8312),f=n(98310),d=n(39632),p=n(26610),v=n(54677),h=n(25985),y=n(73732),m=n(6022).set,g=n(4326)(),x=n(88579),_=n(52745),b=n(35701),C=n(88747),S="Promise",w=s.TypeError,O=s.process,E=O&&O.versions,P=E&&E.v8||"",I=s.Promise,T="process"==l(O),empty=function(){},j=o=x.f,k=!!function(){try{var t=I.resolve(1),e=(t.constructor={})[n(24300)("species")]=function(t){t(empty,empty)};return(T||"function"==typeof PromiseRejectionEvent)&&t.then(empty)instanceof e&&0!==P.indexOf("6.6")&&-1===b.indexOf("Chrome/66")}catch(t){}}(),isThenable=function(t){var e;return!(!d(t)||"function"!=typeof(e=t.then))&&e},notify=function(t,e){if(!t._n){t._n=!0;var n=t._c;g((function(){for(var r=t._v,o=1==t._s,i=0,run=function(e){var n,i,a,u=o?e.ok:e.fail,s=e.resolve,c=e.reject,l=e.domain;try{u?(o||(2==t._h&&onHandleUnhandled(t),t._h=1),!0===u?n=r:(l&&l.enter(),n=u(r),l&&(l.exit(),a=!0)),n===e.promise?c(w("Promise-chain cycle")):(i=isThenable(n))?i.call(n,s,c):s(n)):c(r)}catch(t){l&&!a&&l.exit(),c(t)}};n.length>i;)run(n[i++]);t._c=[],t._n=!1,e&&!t._h&&onUnhandled(t)}))}},onUnhandled=function(t){m.call(s,(function(){var e,n,r,o=t._v,i=isUnhandled(t);if(i&&(e=_((function(){T?O.emit("unhandledRejection",o,t):(n=s.onunhandledrejection)?n({promise:t,reason:o}):(r=s.console)&&r.error&&r.error("Unhandled promise rejection",o)})),t._h=T||isUnhandled(t)?2:1),t._a=void 0,i&&e.e)throw e.v}))},isUnhandled=function(t){return 1!==t._h&&0===(t._a||t._c).length},onHandleUnhandled=function(t){m.call(s,(function(){var e;T?O.emit("rejectionHandled",t):(e=s.onrejectionhandled)&&e({promise:t,reason:t._v})}))},$reject=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),notify(e,!0))},$resolve=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw w("Promise can't be resolved itself");(e=isThenable(t))?g((function(){var r={_w:n,_d:!1};try{e.call(t,c($resolve,r,1),c($reject,r,1))}catch(t){$reject.call(r,t)}})):(n._v=t,n._s=1,notify(n,!1))}catch(t){$reject.call({_w:n,_d:!1},t)}}};k||(I=function Promise(t){v(this,I,S,"_h"),p(t),r.call(this);try{t(c($resolve,this,1),c($reject,this,1))}catch(t){$reject.call(this,t)}},(r=function Promise(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(13199)(I.prototype,{then:function then(t,e){var n=j(y(this,I));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=T?O.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&notify(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),i=function(){var t=new r;this.promise=t,this.resolve=c($resolve,t,1),this.reject=c($reject,t,1)},x.f=j=function(t){return t===I||t===a?new i(t):o(t)}),f(f.G+f.W+f.F*!k,{Promise:I}),n(2413)(I,S),n(5698)(S),a=n(47208).Promise,f(f.S+f.F*!k,S,{reject:function reject(t){var e=j(this);return(0,e.reject)(t),e.promise}}),f(f.S+f.F*(u||!k),S,{resolve:function resolve(t){return C(u&&this===a?I:this,t)}}),f(f.S+f.F*!(k&&n(26797)((function(t){I.all(t).catch(empty)}))),S,{all:function all(t){var e=this,n=j(e),r=n.resolve,o=n.reject,i=_((function(){var n=[],i=0,a=1;h(t,!1,(function(t){var u=i++,s=!1;n.push(void 0),a++,e.resolve(t).then((function(t){s||(s=!0,n[u]=t,--a||r(n))}),o)})),--a||r(n)}));return i.e&&o(i.v),n.promise},race:function race(t){var e=this,n=j(e),r=n.reject,o=_((function(){h(t,!1,(function(t){e.resolve(t).then(n.resolve,r)}))}));return o.e&&r(o.v),n.promise}})},11320:(t,e,n)=>{var r=n(98310),o=n(82488),i=n(26610),a=n(30498),u=n(39632),s=n(90472),c=n(45515),l=(n(43280).Reflect||{}).construct,f=s((function(){function F(){}return!(l((function(){}),[],F)instanceof F)})),d=!s((function(){l((function(){}))}));r(r.S+r.F*(f||d),"Reflect",{construct:function construct(t,e){i(t),a(e);var n=arguments.length<3?t:i(arguments[2]);if(d&&!f)return l(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var r=[null];return r.push.apply(r,e),new(c.apply(t,r))}var s=n.prototype,p=o(u(s)?s:Object.prototype),v=Function.apply.call(t,p,e);return u(v)?v:p}})},99572:(t,e,n)=>{"use strict";var r=n(78502)(!0);n(6125)(String,"String",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})}))},54370:(t,e,n)=>{"use strict";var r=n(43280),o=n(20657),i=n(75179),a=n(98310),u=n(19312),s=n(6758).KEY,c=n(90472),l=n(29990),f=n(2413),d=n(54251),p=n(24300),v=n(7273),h=n(31164),y=n(42266),m=n(7359),g=n(30498),x=n(39632),_=n(60061),b=n(1504),C=n(12737),S=n(48439),w=n(82488),O=n(26084),E=n(83264),P=n(97739),I=n(60510),T=n(86425),j=E.f,k=I.f,A=O.f,M=r.Symbol,R=r.JSON,L=R&&R.stringify,N=p("_hidden"),D=p("toPrimitive"),G={}.propertyIsEnumerable,q=l("symbol-registry"),W=l("symbols"),B=l("op-symbols"),$=Object.prototype,z="function"==typeof M&&!!P.f,H=r.QObject,U=!H||!H.prototype||!H.prototype.findChild,V=i&&c((function(){return 7!=w(k({},"a",{get:function(){return k(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=j($,e);r&&delete $[e],k(t,e,n),r&&t!==$&&k($,e,r)}:k,wrap=function(t){var e=W[t]=w(M.prototype);return e._k=t,e},K=z&&"symbol"==typeof M.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof M},Q=function defineProperty(t,e,n){return t===$&&Q(B,e,n),g(t),e=C(e,!0),g(n),o(W,e)?(n.enumerable?(o(t,N)&&t[N][e]&&(t[N][e]=!1),n=w(n,{enumerable:S(0,!1)})):(o(t,N)||k(t,N,S(1,{})),t[N][e]=!0),V(t,e,n)):k(t,e,n)},J=function defineProperties(t,e){g(t);for(var n,r=y(e=b(e)),o=0,i=r.length;i>o;)Q(t,n=r[o++],e[n]);return t},Y=function propertyIsEnumerable(t){var e=G.call(this,t=C(t,!0));return!(this===$&&o(W,t)&&!o(B,t))&&(!(e||!o(this,t)||!o(W,t)||o(this,N)&&this[N][t])||e)},X=function getOwnPropertyDescriptor(t,e){if(t=b(t),e=C(e,!0),t!==$||!o(W,e)||o(B,e)){var n=j(t,e);return!n||!o(W,e)||o(t,N)&&t[N][e]||(n.enumerable=!0),n}},Z=function getOwnPropertyNames(t){for(var e,n=A(b(t)),r=[],i=0;n.length>i;)o(W,e=n[i++])||e==N||e==s||r.push(e);return r},tt=function getOwnPropertySymbols(t){for(var e,n=t===$,r=A(n?B:b(t)),i=[],a=0;r.length>a;)!o(W,e=r[a++])||n&&!o($,e)||i.push(W[e]);return i};z||(u((M=function Symbol(){if(this instanceof M)throw TypeError("Symbol is not a constructor!");var t=d(arguments.length>0?arguments[0]:void 0),$set=function(e){this===$&&$set.call(B,e),o(this,N)&&o(this[N],t)&&(this[N][t]=!1),V(this,t,S(1,e))};return i&&U&&V($,t,{configurable:!0,set:$set}),wrap(t)}).prototype,"toString",(function toString(){return this._k})),E.f=X,I.f=Q,n(8772).f=O.f=Z,n(67410).f=Y,P.f=tt,i&&!n(36794)&&u($,"propertyIsEnumerable",Y,!0),v.f=function(t){return wrap(p(t))}),a(a.G+a.W+a.F*!z,{Symbol:M});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nt=0;et.length>nt;)p(et[nt++]);for(var rt=T(p.store),ot=0;rt.length>ot;)h(rt[ot++]);a(a.S+a.F*!z,"Symbol",{for:function(t){return o(q,t+="")?q[t]:q[t]=M(t)},keyFor:function keyFor(t){if(!K(t))throw TypeError(t+" is not a symbol!");for(var e in q)if(q[e]===t)return e},useSetter:function(){U=!0},useSimple:function(){U=!1}}),a(a.S+a.F*!z,"Object",{create:function create(t,e){return void 0===e?w(t):J(w(t),e)},defineProperty:Q,defineProperties:J,getOwnPropertyDescriptor:X,getOwnPropertyNames:Z,getOwnPropertySymbols:tt});var it=c((function(){P.f(1)}));a(a.S+a.F*it,"Object",{getOwnPropertySymbols:function getOwnPropertySymbols(t){return P.f(_(t))}}),R&&a(a.S+a.F*(!z||c((function(){var t=M();return"[null]"!=L([t])||"{}"!=L({a:t})||"{}"!=L(Object(t))}))),"JSON",{stringify:function stringify(t){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=e=r[1],(x(e)||void 0!==t)&&!K(t))return m(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!K(e))return e}),r[1]=e,L.apply(R,r)}}),M.prototype[D]||n(62292)(M.prototype,D,M.prototype.valueOf),f(M,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},23337:(t,e,n)=>{"use strict";var r,o=n(43280),i=n(97647)(0),a=n(19312),u=n(6758),s=n(77995),c=n(92600),l=n(39632),f=n(41081),d=n(41081),p=!o.ActiveXObject&&"ActiveXObject"in o,v="WeakMap",h=u.getWeak,y=Object.isExtensible,m=c.ufstore,wrapper=function(t){return function WeakMap(){return t(this,arguments.length>0?arguments[0]:void 0)}},g={get:function get(t){if(l(t)){var e=h(t);return!0===e?m(f(this,v)).get(t):e?e[this._i]:void 0}},set:function set(t,e){return c.def(f(this,v),t,e)}},x=t.exports=n(70770)(v,wrapper,g,c,!0,!0);d&&p&&(s((r=c.getConstructor(wrapper,v)).prototype,g),u.NEED=!0,i(["delete","has","get","set"],(function(t){var e=x.prototype,n=e[t];a(e,t,(function(e,o){if(l(e)&&!y(e)){this._f||(this._f=new r);var i=this._f[t](e,o);return"set"==t?this:i}return n.call(this,e,o)}))})))},67685:(t,e,n)=>{var r=n(98310),o=n(64344),i=n(1504),a=n(83264),u=n(87352);r(r.S,"Object",{getOwnPropertyDescriptors:function getOwnPropertyDescriptors(t){for(var e,n,r=i(t),s=a.f,c=o(r),l={},f=0;c.length>f;)void 0!==(n=s(r,e=c[f++]))&&u(l,e,n);return l}})},57188:(t,e,n)=>{var r=n(98310),o=n(9480)(!1);r(r.S,"Object",{values:function values(t){return o(t)}})},81522:(t,e,n)=>{"use strict";var r=n(98310),o=n(47208),i=n(43280),a=n(73732),u=n(88747);r(r.P+r.R,"Promise",{finally:function(t){var e=a(this,o.Promise||i.Promise),n="function"==typeof t;return this.then(n?function(n){return u(e,t()).then((function(){return n}))}:t,n?function(n){return u(e,t()).then((function(){throw n}))}:t)}})},25757:(t,e,n)=>{"use strict";var r=n(98310),o=n(88579),i=n(52745);r(r.S,"Promise",{try:function(t){var e=o.f(this),n=i(t);return(n.e?e.reject:e.resolve)(n.v),e.promise}})},87573:(t,e,n)=>{n(31164)("asyncIterator")},97224:(t,e,n)=>{n(31164)("observable")},92797:(t,e,n)=>{n(14689)("WeakMap")},10143:(t,e,n)=>{n(7883)("WeakMap")},74114:(t,e,n)=>{n(84411);for(var r=n(43280),o=n(62292),i=n(79105),a=n(24300)("toStringTag"),u="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),s=0;s<u.length;s++){var c=u[s],l=r[c],f=l&&l.prototype;f&&!f[a]&&o(f,a,c),i[c]=i.Array}},22761:t=>{t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},42094:(t,e,n)=>{var r=n(62190)("unscopables"),o=Array.prototype;null==o[r]&&n(74216)(o,r,{}),t.exports=function(t){o[r][t]=!0}},6365:(t,e,n)=>{var r=n(67334);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},59021:(t,e,n)=>{var r=n(15703),o=n(26078),i=n(78615);t.exports=function(t){return function(e,n,a){var u,s=r(e),c=o(s.length),l=i(a,c);if(t&&n!=n){for(;c>l;)if((u=s[l++])!=u)return!0}else for(;c>l;l++)if((t||l in s)&&s[l]===n)return t||l||0;return!t&&-1}}},78309:(t,e,n)=>{var r=n(11528),o=n(8467),i=n(26033),a=n(26078),u=n(63531);t.exports=function(t,e){var n=1==t,s=2==t,c=3==t,l=4==t,f=6==t,d=5==t||f,p=e||u;return function(e,u,v){for(var h,y,m=i(e),g=o(m),x=r(u,v,3),_=a(g.length),b=0,C=n?p(e,_):s?p(e,0):void 0;_>b;b++)if((d||b in g)&&(y=x(h=g[b],b,m),t))if(n)C[b]=y;else if(y)switch(t){case 3:return!0;case 5:return h;case 6:return b;case 2:C.push(h)}else if(l)return!1;return f?-1:c||l?l:C}}},81071:(t,e,n)=>{var r=n(67334),o=n(99141),i=n(62190)("species");t.exports=function(t){var e;return o(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!o(e.prototype)||(e=void 0),r(e)&&null===(e=e[i])&&(e=void 0)),void 0===e?Array:e}},63531:(t,e,n)=>{var r=n(81071);t.exports=function(t,e){return new(r(t))(e)}},20106:(t,e,n)=>{var r=n(26688),o=n(62190)("toStringTag"),i="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?n:i?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},26688:t=>{var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},60066:t=>{var e=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=e)},11528:(t,e,n)=>{var r=n(22761);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},61622:t=>{t.exports=function(t){if(null==t)throw TypeError("Can't call method on  "+t);return t}},36628:(t,e,n)=>{t.exports=!n(48625)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},5050:(t,e,n)=>{var r=n(67334),o=n(38113).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},65772:(t,e,n)=>{var r=n(38113),o=n(60066),i=n(74216),a=n(17738),u=n(11528),$export=function(t,e,n){var s,c,l,f,d=t&$export.F,p=t&$export.G,v=t&$export.S,h=t&$export.P,y=t&$export.B,m=p?r:v?r[e]||(r[e]={}):(r[e]||{}).prototype,g=p?o:o[e]||(o[e]={}),x=g.prototype||(g.prototype={});for(s in p&&(n=e),n)l=((c=!d&&m&&void 0!==m[s])?m:n)[s],f=y&&c?u(l,r):h&&"function"==typeof l?u(Function.call,l):l,m&&a(m,s,l,t&$export.U),g[s]!=l&&i(g,s,f),h&&x[s]!=l&&(x[s]=l)};r.core=o,$export.F=1,$export.G=2,$export.S=4,$export.P=8,$export.B=16,$export.W=32,$export.U=64,$export.R=128,t.exports=$export},86570:(t,e,n)=>{var r=n(62190)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,!"/./"[t](e)}catch(t){}}return!0}},48625:t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},74859:(t,e,n)=>{"use strict";var r=n(6365);t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},20646:(t,e,n)=>{t.exports=n(8655)("native-function-to-string",Function.toString)},38113:t=>{var e=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},54040:t=>{var e={}.hasOwnProperty;t.exports=function(t,n){return e.call(t,n)}},74216:(t,e,n)=>{var r=n(98558),o=n(36061);t.exports=n(36628)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},5100:(t,e,n)=>{t.exports=!n(36628)&&!n(48625)((function(){return 7!=Object.defineProperty(n(5050)("div"),"a",{get:function(){return 7}}).a}))},8467:(t,e,n)=>{var r=n(26688);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},99141:(t,e,n)=>{var r=n(26688);t.exports=Array.isArray||function isArray(t){return"Array"==r(t)}},67334:t=>{t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},94587:(t,e,n)=>{var r=n(67334),o=n(26688),i=n(62190)("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==o(t))}},81422:t=>{t.exports=!1},98558:(t,e,n)=>{var r=n(6365),o=n(5100),i=n(31382),a=Object.defineProperty;e.f=n(36628)?Object.defineProperty:function defineProperty(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},36061:t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},17738:(t,e,n)=>{var r=n(38113),o=n(74216),i=n(54040),a=n(25078)("src"),u=n(20646),s="toString",c=(""+u).split(s);n(60066).inspectSource=function(t){return u.call(t)},(t.exports=function(t,e,n,u){var s="function"==typeof n;s&&(i(n,"name")||o(n,"name",e)),t[e]!==n&&(s&&(i(n,a)||o(n,a,t[e]?""+t[e]:c.join(String(e)))),t===r?t[e]=n:u?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,s,(function toString(){return"function"==typeof this&&this[a]||u.call(this)}))},8655:(t,e,n)=>{var r=n(60066),o=n(38113),i="__core-js_shared__",a=o[i]||(o[i]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(81422)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},10225:(t,e,n)=>{"use strict";var r=n(48625);t.exports=function(t,e){return!!t&&r((function(){e?t.call(null,(function(){}),1):t.call(null)}))}},465:(t,e,n)=>{var r=n(94587),o=n(61622);t.exports=function(t,e,n){if(r(e))throw TypeError("String#"+n+" doesn't accept regex!");return String(o(t))}},65776:(t,e,n)=>{var r=n(65772),o=n(48625),i=n(61622),a=/"/g,createHTML=function(t,e,n,r){var o=String(i(t)),u="<"+e;return""!==n&&(u+=" "+n+'="'+String(r).replace(a,"&quot;")+'"'),u+">"+o+"</"+e+">"};t.exports=function(t,e){var n={};n[t]=e(createHTML),r(r.P+r.F*o((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3})),"String",n)}},78615:(t,e,n)=>{var r=n(3338),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},3338:t=>{var e=Math.ceil,n=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?n:e)(t)}},15703:(t,e,n)=>{var r=n(8467),o=n(61622);t.exports=function(t){return r(o(t))}},26078:(t,e,n)=>{var r=n(3338),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},26033:(t,e,n)=>{var r=n(61622);t.exports=function(t){return Object(r(t))}},31382:(t,e,n)=>{var r=n(67334);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},25078:t=>{var e=0,n=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++e+n).toString(36))}},62190:(t,e,n)=>{var r=n(8655)("wks"),o=n(25078),i=n(38113).Symbol,a="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))}).store=r},64434:(t,e,n)=>{"use strict";var r=n(65772),o=n(78309)(2);r(r.P+r.F*!n(10225)([].filter,!0),"Array",{filter:function filter(t){return o(this,t,arguments[1])}})},71954:(t,e,n)=>{"use strict";var r=n(65772),o=n(78309)(5),i="find",a=!0;i in[]&&Array(1).find((function(){a=!1})),r(r.P+r.F*a,"Array",{find:function find(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n(42094)(i)},90286:(t,e,n)=>{"use strict";var r=n(65772),o=n(78309)(1);r(r.P+r.F*!n(10225)([].map,!0),"Array",{map:function map(t){return o(this,t,arguments[1])}})},99745:(t,e,n)=>{var r=n(98558).f,o=Function.prototype,i=/^\s*function ([^ (]*)/,a="name";a in o||n(36628)&&r(o,a,{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(t){return""}}})},76139:(t,e,n)=>{"use strict";var r=n(20106),o={};o[n(62190)("toStringTag")]="z",o+""!="[object z]"&&n(17738)(Object.prototype,"toString",(function toString(){return"[object "+r(this)+"]"}),!0)},40751:(t,e,n)=>{n(36628)&&"g"!=/./g.flags&&n(98558).f(RegExp.prototype,"flags",{configurable:!0,get:n(74859)})},44321:(t,e,n)=>{"use strict";n(40751);var r=n(6365),o=n(74859),i=n(36628),a="toString",u=/./.toString,define=function(t){n(17738)(RegExp.prototype,a,t,!0)};n(48625)((function(){return"/a/b"!=u.call({source:"a",flags:"b"})}))?define((function toString(){var t=r(this);return"/".concat(t.source,"/","flags"in t?t.flags:!i&&t instanceof RegExp?o.call(t):void 0)})):u.name!=a&&define((function toString(){return u.call(this)}))},3777:(t,e,n)=>{"use strict";var r=n(65772),o=n(465),i="includes";r(r.P+r.F*n(86570)(i),"String",{includes:function includes(t){return!!~o(this,t,i).indexOf(t,arguments.length>1?arguments[1]:void 0)}})},10195:(t,e,n)=>{"use strict";n(65776)("sub",(function(t){return function sub(){return t(this,"sub","","")}}))},38081:(t,e,n)=>{"use strict";var r=n(65772),o=n(59021)(!0);r(r.P,"Array",{includes:function includes(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),n(42094)("includes")},58772:(t,e,n)=>{"use strict";var r=n(90331);function emptyFunction(){}function emptyFunctionWithReset(){}emptyFunctionWithReset.resetWarningCache=emptyFunction,t.exports=function(){function shim(t,e,n,o,i,a){if(a!==r){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function getShim(){return shim}shim.isRequired=shim;var t={array:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,elementType:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim,checkPropTypes:emptyFunctionWithReset,resetWarningCache:emptyFunction};return t.PropTypes=t,t}},23615:(t,e,n)=>{t.exports=n(58772)()},90331:t=>{"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},86248:t=>{var e=function(t){"use strict";var e,n=Object.prototype,r=n.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function define(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{define({},"")}catch(t){define=function(t,e,n){return t[e]=n}}function wrap(t,e,n,r){var o=e&&e.prototype instanceof Generator?e:Generator,i=Object.create(o.prototype),a=new Context(r||[]);return i._invoke=function makeInvokeMethod(t,e,n){var r=s;return function invoke(o,i){if(r===l)throw new Error("Generator is already running");if(r===f){if("throw"===o)throw i;return doneResult()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var u=maybeInvokeDelegate(a,n);if(u){if(u===d)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===s)throw r=f,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=l;var p=tryCatch(t,e,n);if("normal"===p.type){if(r=n.done?f:c,p.arg===d)continue;return{value:p.arg,done:n.done}}"throw"===p.type&&(r=f,n.method="throw",n.arg=p.arg)}}}(t,n,a),i}function tryCatch(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=wrap;var s="suspendedStart",c="suspendedYield",l="executing",f="completed",d={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}var p={};p[i]=function(){return this};var v=Object.getPrototypeOf,h=v&&v(v(values([])));h&&h!==n&&r.call(h,i)&&(p=h);var y=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(p);function defineIteratorMethods(t){["next","throw","return"].forEach((function(e){define(t,e,(function(t){return this._invoke(e,t)}))}))}function AsyncIterator(t,e){function invoke(n,o,i,a){var u=tryCatch(t[n],t,o);if("throw"!==u.type){var s=u.arg,c=s.value;return c&&"object"==typeof c&&r.call(c,"__await")?e.resolve(c.__await).then((function(t){invoke("next",t,i,a)}),(function(t){invoke("throw",t,i,a)})):e.resolve(c).then((function(t){s.value=t,i(s)}),(function(t){return invoke("throw",t,i,a)}))}a(u.arg)}var n;this._invoke=function enqueue(t,r){function callInvokeWithMethodAndArg(){return new e((function(e,n){invoke(t,r,e,n)}))}return n=n?n.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg()}}function maybeInvokeDelegate(t,n){var r=t.iterator[n.method];if(r===e){if(n.delegate=null,"throw"===n.method){if(t.iterator.return&&(n.method="return",n.arg=e,maybeInvokeDelegate(t,n),"throw"===n.method))return d;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var o=tryCatch(r,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,d;var i=o.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,d):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,d)}function pushTryEntry(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function resetTryEntry(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function Context(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(pushTryEntry,this),this.reset(!0)}function values(t){if(t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,a=function next(){for(;++o<t.length;)if(r.call(t,o))return next.value=t[o],next.done=!1,next;return next.value=e,next.done=!0,next};return a.next=a}}return{next:doneResult}}function doneResult(){return{value:e,done:!0}}return GeneratorFunction.prototype=y.constructor=GeneratorFunctionPrototype,GeneratorFunctionPrototype.constructor=GeneratorFunction,GeneratorFunction.displayName=define(GeneratorFunctionPrototype,u,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===GeneratorFunction||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,GeneratorFunctionPrototype):(t.__proto__=GeneratorFunctionPrototype,define(t,u,"GeneratorFunction")),t.prototype=Object.create(y),t},t.awrap=function(t){return{__await:t}},defineIteratorMethods(AsyncIterator.prototype),AsyncIterator.prototype[a]=function(){return this},t.AsyncIterator=AsyncIterator,t.async=function(e,n,r,o,i){void 0===i&&(i=Promise);var a=new AsyncIterator(wrap(e,n,r,o),i);return t.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},defineIteratorMethods(y),define(y,u,"Generator"),y[i]=function(){return this},y.toString=function(){return"[object Generator]"},t.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function next(){for(;e.length;){var n=e.pop();if(n in t)return next.value=n,next.done=!1,next}return next.done=!0,next}},t.values=values,Context.prototype={constructor:Context,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(resetTryEntry),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function handle(r,o){return a.type="throw",a.arg=t,n.next=r,o&&(n.method="next",n.arg=e),!!o}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return handle("end");if(i.tryLoc<=this.prev){var u=r.call(i,"catchLoc"),s=r.call(i,"finallyLoc");if(u&&s){if(this.prev<i.catchLoc)return handle(i.catchLoc,!0);if(this.prev<i.finallyLoc)return handle(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return handle(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return handle(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,d):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),d},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),resetTryEntry(n),d}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;resetTryEntry(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:values(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),d}},t}(t.exports);try{regeneratorRuntime=e}catch(t){Function("r","regeneratorRuntime = r")(e)}},63804:t=>{"use strict";t.exports=React},78675:t=>{"use strict";t.exports=elementorAppPackages.appUi},18194:t=>{"use strict";t.exports=wp.i18n}},e={};(function __webpack_require__(n){var r=e[n];if(void 0!==r)return r.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,__webpack_require__),o.exports})(40474)})();assets/js/search-form.fda69e244861c6890e79.bundle.js000064400000007327150755004310015274 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["search-form"],{

/***/ "../modules/theme-elements/assets/js/frontend/handlers/search-form.js":
/*!****************************************************************************!*\
  !*** ../modules/theme-elements/assets/js/frontend/handlers/search-form.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  getDefaultSettings() {
    return {
      selectors: {
        wrapper: '.elementor-search-form',
        container: '.elementor-search-form__container',
        icon: '.elementor-search-form__icon',
        input: '.elementor-search-form__input',
        toggle: '.elementor-search-form__toggle',
        submit: '.elementor-search-form__submit',
        closeButton: '.dialog-close-button'
      },
      classes: {
        isFocus: 'elementor-search-form--focus',
        isFullScreen: 'elementor-search-form--full-screen',
        lightbox: 'elementor-lightbox'
      }
    };
  },

  getDefaultElements() {
    var selectors = this.getSettings('selectors'),
        elements = {};
    elements.$wrapper = this.$element.find(selectors.wrapper);
    elements.$container = this.$element.find(selectors.container);
    elements.$input = this.$element.find(selectors.input);
    elements.$icon = this.$element.find(selectors.icon);
    elements.$toggle = this.$element.find(selectors.toggle);
    elements.$submit = this.$element.find(selectors.submit);
    elements.$closeButton = this.$element.find(selectors.closeButton);
    return elements;
  },

  bindEvents() {
    var self = this,
        $container = self.elements.$container,
        $closeButton = self.elements.$closeButton,
        $input = self.elements.$input,
        $wrapper = self.elements.$wrapper,
        $icon = self.elements.$icon,
        skin = this.getElementSettings('skin'),
        classes = this.getSettings('classes');

    if ('full_screen' === skin) {
      // Activate full-screen mode on click
      self.elements.$toggle.on('click', function () {
        $container.toggleClass(classes.isFullScreen).toggleClass(classes.lightbox);
        $input.trigger('focus');
      }); // Deactivate full-screen mode on click or on esc.

      $container.on('click', function (event) {
        if ($container.hasClass(classes.isFullScreen) && $container[0] === event.target) {
          $container.removeClass(classes.isFullScreen).removeClass(classes.lightbox);
        }
      });
      $closeButton.on('click', function () {
        $container.removeClass(classes.isFullScreen).removeClass(classes.lightbox);
      });
      elementorFrontend.elements.$document.on('keyup', function (event) {
        var ESC_KEY = 27;

        if (ESC_KEY === event.keyCode) {
          if ($container.hasClass(classes.isFullScreen)) {
            $container.trigger('click');
          }
        }
      });
    } else {
      // Apply focus style on wrapper element when input is focused
      $input.on({
        focus() {
          $wrapper.addClass(classes.isFocus);
        },

        blur() {
          $wrapper.removeClass(classes.isFocus);
        }

      });
    }

    if ('minimal' === skin) {
      // Apply focus style on wrapper element when icon is clicked in minimal skin
      $icon.on('click', function () {
        $wrapper.addClass(classes.isFocus);
        $input.trigger('focus');
      });
    }
  }

});

exports.default = _default;

/***/ })

}]);
//# sourceMappingURL=search-form.fda69e244861c6890e79.bundle.js.mapassets/js/elements-handlers.js000064400000177471150755004310012453 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["elements-handlers"],{

/***/ "../assets/dev/js/frontend/elements-handlers.js":
/*!******************************************************!*\
  !*** ../assets/dev/js/frontend/elements-handlers.js ***!
  \******************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

var _frontend = _interopRequireDefault(__webpack_require__(/*! modules/animated-headline/assets/js/frontend/frontend */ "../modules/animated-headline/assets/js/frontend/frontend.js"));

var _frontend2 = _interopRequireDefault(__webpack_require__(/*! modules/carousel/assets/js/frontend/frontend */ "../modules/carousel/assets/js/frontend/frontend.js"));

var _frontend3 = _interopRequireDefault(__webpack_require__(/*! modules/countdown/assets/js/frontend/frontend */ "../modules/countdown/assets/js/frontend/frontend.js"));

var _frontend4 = _interopRequireDefault(__webpack_require__(/*! modules/hotspot/assets/js/frontend/frontend */ "../modules/hotspot/assets/js/frontend/frontend.js"));

var _frontend5 = _interopRequireDefault(__webpack_require__(/*! modules/forms/assets/js/frontend/frontend */ "../modules/forms/assets/js/frontend/frontend.js"));

var _frontend6 = _interopRequireDefault(__webpack_require__(/*! modules/gallery/assets/js/frontend/frontend */ "../modules/gallery/assets/js/frontend/frontend.js"));

var _frontend7 = _interopRequireDefault(__webpack_require__(/*! modules/lottie/assets/js/frontend/frontend */ "../modules/lottie/assets/js/frontend/frontend.js"));

var _frontend8 = _interopRequireDefault(__webpack_require__(/*! modules/nav-menu/assets/js/frontend/frontend */ "../modules/nav-menu/assets/js/frontend/frontend.js"));

var _frontend9 = _interopRequireDefault(__webpack_require__(/*! modules/popup/assets/js/frontend/frontend */ "../modules/popup/assets/js/frontend/frontend.js"));

var _frontend10 = _interopRequireDefault(__webpack_require__(/*! modules/posts/assets/js/frontend/frontend */ "../modules/posts/assets/js/frontend/frontend.js"));

var _frontend11 = _interopRequireDefault(__webpack_require__(/*! modules/share-buttons/assets/js/frontend/frontend */ "../modules/share-buttons/assets/js/frontend/frontend.js"));

var _frontend12 = _interopRequireDefault(__webpack_require__(/*! modules/slides/assets/js/frontend/frontend */ "../modules/slides/assets/js/frontend/frontend.js"));

var _frontend13 = _interopRequireDefault(__webpack_require__(/*! modules/social/assets/js/frontend/frontend */ "../modules/social/assets/js/frontend/frontend.js"));

var _frontend14 = _interopRequireDefault(__webpack_require__(/*! modules/table-of-contents/assets/js/frontend/frontend */ "../modules/table-of-contents/assets/js/frontend/frontend.js"));

var _frontend15 = _interopRequireDefault(__webpack_require__(/*! modules/theme-builder/assets/js/frontend/frontend */ "../modules/theme-builder/assets/js/frontend/frontend.js"));

var _frontend16 = _interopRequireDefault(__webpack_require__(/*! modules/theme-elements/assets/js/frontend/frontend */ "../modules/theme-elements/assets/js/frontend/frontend.js"));

var _frontend17 = _interopRequireDefault(__webpack_require__(/*! modules/woocommerce/assets/js/frontend/frontend */ "../modules/woocommerce/assets/js/frontend/frontend.js"));

const extendDefaultHandlers = defaultHandlers => {
  const handlers = {
    animatedText: _frontend.default,
    carousel: _frontend2.default,
    countdown: _frontend3.default,
    hotspot: _frontend4.default,
    form: _frontend5.default,
    gallery: _frontend6.default,
    lottie: _frontend7.default,
    nav_menu: _frontend8.default,
    popup: _frontend9.default,
    posts: _frontend10.default,
    share_buttons: _frontend11.default,
    slides: _frontend12.default,
    social: _frontend13.default,
    themeBuilder: _frontend15.default,
    themeElements: _frontend16.default,
    woocommerce: _frontend17.default,
    tableOfContents: _frontend14.default
  };
  return { ...defaultHandlers,
    ...handlers
  };
};

elementorProFrontend.on('elementor-pro/modules/init:before', () => {
  elementorFrontend.hooks.addFilter('elementor-pro/frontend/handlers', extendDefaultHandlers);
});

/***/ }),

/***/ "../assets/dev/js/frontend/utils/icons/e-icons.js":
/*!********************************************************!*\
  !*** ../assets/dev/js/frontend/utils/icons/e-icons.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.close = void 0;

var _manager = _interopRequireDefault(__webpack_require__(/*! ./manager */ "../assets/dev/js/frontend/utils/icons/manager.js"));

// This file is automatically generated, please don't change anything in this file.
const iconsManager = new _manager.default('eicon');
const close = {
  get element() {
    const svgData = {
      path: 'M742 167L500 408 258 167C246 154 233 150 217 150 196 150 179 158 167 167 154 179 150 196 150 212 150 229 154 242 171 254L408 500 167 742C138 771 138 800 167 829 196 858 225 858 254 829L496 587 738 829C750 842 767 846 783 846 800 846 817 842 829 829 842 817 846 804 846 783 846 767 842 750 829 737L588 500 833 258C863 229 863 200 833 171 804 137 775 137 742 167Z',
      width: 1000,
      height: 1000
    };
    return iconsManager.createSvgElement('close', svgData);
  }

};
exports.close = close;

/***/ }),

/***/ "../assets/dev/js/frontend/utils/icons/manager.js":
/*!********************************************************!*\
  !*** ../assets/dev/js/frontend/utils/icons/manager.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "../node_modules/@babel/runtime/helpers/defineProperty.js"));

class IconsManager {
  constructor(elementsPrefix) {
    this.prefix = `${elementsPrefix}-`;

    if (!IconsManager.symbolsContainer) {
      const symbolsContainerId = 'e-font-icon-svg-symbols';
      IconsManager.symbolsContainer = document.getElementById(symbolsContainerId);

      if (!IconsManager.symbolsContainer) {
        IconsManager.symbolsContainer = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
        IconsManager.symbolsContainer.setAttributeNS(null, 'style', 'display: none;');
        IconsManager.symbolsContainer.setAttributeNS(null, 'class', symbolsContainerId);
        document.body.appendChild(IconsManager.symbolsContainer);
      }
    }
  }

  createSvgElement(name, {
    path,
    width,
    height
  }) {
    const elementName = this.prefix + name,
          elementSelector = '#' + this.prefix + name; // Create symbol if not exist yet.

    if (!IconsManager.iconsUsageList.includes(elementName)) {
      if (!IconsManager.symbolsContainer.querySelector(elementSelector)) {
        const symbol = document.createElementNS('http://www.w3.org/2000/svg', 'symbol');
        symbol.id = elementName;
        symbol.innerHTML = '<path d="' + path + '"></path>';
        symbol.setAttributeNS(null, 'viewBox', '0 0 ' + width + ' ' + height);
        IconsManager.symbolsContainer.appendChild(symbol);
      }

      IconsManager.iconsUsageList.push(elementName);
    }

    const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
    svg.innerHTML = '<use xlink:href="' + elementSelector + '" />';
    svg.setAttributeNS(null, 'class', 'e-font-icon-svg e-' + elementName);
    return svg;
  }

}

exports.default = IconsManager;
(0, _defineProperty2.default)(IconsManager, "symbolsContainer", void 0);
(0, _defineProperty2.default)(IconsManager, "iconsUsageList", []);

/***/ }),

/***/ "../modules/animated-headline/assets/js/frontend/frontend.js":
/*!*******************************************************************!*\
  !*** ../modules/animated-headline/assets/js/frontend/frontend.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('animated-headline', () => __webpack_require__.e(/*! import() | animated-headline */ "animated-headline").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/animated-headlines */ "../modules/animated-headline/assets/js/frontend/handlers/animated-headlines.js")));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/carousel/assets/js/frontend/frontend.js":
/*!**********************************************************!*\
  !*** ../modules/carousel/assets/js/frontend/frontend.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('media-carousel', () => __webpack_require__.e(/*! import() | media-carousel */ "media-carousel").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/media-carousel */ "../modules/carousel/assets/js/frontend/handlers/media-carousel.js")));
    elementorFrontend.elementsHandler.attachHandler('testimonial-carousel', () => __webpack_require__.e(/*! import() | carousel */ "carousel").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/testimonial-carousel */ "../modules/carousel/assets/js/frontend/handlers/testimonial-carousel.js")));
    elementorFrontend.elementsHandler.attachHandler('reviews', () => __webpack_require__.e(/*! import() | carousel */ "carousel").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/testimonial-carousel */ "../modules/carousel/assets/js/frontend/handlers/testimonial-carousel.js")));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/countdown/assets/js/frontend/frontend.js":
/*!***********************************************************!*\
  !*** ../modules/countdown/assets/js/frontend/frontend.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('countdown', () => __webpack_require__.e(/*! import() | countdown */ "countdown").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/countdown */ "../modules/countdown/assets/js/frontend/handlers/countdown.js")));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/forms/assets/js/frontend/frontend.js":
/*!*******************************************************!*\
  !*** ../modules/forms/assets/js/frontend/frontend.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('form', [() => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/form-steps */ "../modules/forms/assets/js/frontend/handlers/form-steps.js")), () => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/form-sender */ "../modules/forms/assets/js/frontend/handlers/form-sender.js")), () => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/form-redirect */ "../modules/forms/assets/js/frontend/handlers/form-redirect.js")), () => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/fields/date */ "../modules/forms/assets/js/frontend/handlers/fields/date.js")), () => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/recaptcha */ "../modules/forms/assets/js/frontend/handlers/recaptcha.js")), () => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/fields/time */ "../modules/forms/assets/js/frontend/handlers/fields/time.js"))]);
    elementorFrontend.elementsHandler.attachHandler('subscribe', [() => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/form-steps */ "../modules/forms/assets/js/frontend/handlers/form-steps.js")), () => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/form-sender */ "../modules/forms/assets/js/frontend/handlers/form-sender.js")), () => __webpack_require__.e(/*! import() | form */ "form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/form-redirect */ "../modules/forms/assets/js/frontend/handlers/form-redirect.js"))]);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/gallery/assets/js/frontend/frontend.js":
/*!*********************************************************!*\
  !*** ../modules/gallery/assets/js/frontend/frontend.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('gallery', () => __webpack_require__.e(/*! import() | gallery */ "gallery").then(__webpack_require__.bind(__webpack_require__, /*! ./handler */ "../modules/gallery/assets/js/frontend/handler.js")));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/hotspot/assets/js/frontend/frontend.js":
/*!*********************************************************!*\
  !*** ../modules/hotspot/assets/js/frontend/frontend.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('hotspot', () => __webpack_require__.e(/*! import() | hotspot */ "hotspot").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/hotspot */ "../modules/hotspot/assets/js/frontend/handlers/hotspot.js")));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/lottie/assets/js/frontend/frontend.js":
/*!********************************************************!*\
  !*** ../modules/lottie/assets/js/frontend/frontend.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('lottie', () => __webpack_require__.e(/*! import() | lottie */ "lottie").then(__webpack_require__.bind(__webpack_require__, /*! ./handler */ "../modules/lottie/assets/js/frontend/handler.js")));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/nav-menu/assets/js/frontend/frontend.js":
/*!**********************************************************!*\
  !*** ../modules/nav-menu/assets/js/frontend/frontend.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();

    if (jQuery.fn.smartmenus) {
      // Override the default stupid detection
      jQuery.SmartMenus.prototype.isCSSOn = function () {
        return true;
      };

      if (elementorFrontend.config.is_rtl) {
        jQuery.fn.smartmenus.defaults.rightToLeftSubMenus = true;
      }
    }

    elementorFrontend.elementsHandler.attachHandler('nav-menu', () => __webpack_require__.e(/*! import() | nav-menu */ "nav-menu").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/nav-menu */ "../modules/nav-menu/assets/js/frontend/handlers/nav-menu.js")));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/document.js":
/*!*******************************************************!*\
  !*** ../modules/popup/assets/js/frontend/document.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _triggers = _interopRequireDefault(__webpack_require__(/*! ./triggers */ "../modules/popup/assets/js/frontend/triggers.js"));

var _timing = _interopRequireDefault(__webpack_require__(/*! ./timing */ "../modules/popup/assets/js/frontend/timing.js"));

var _eIcons = __webpack_require__(/*! @elementor-pro/e-icons */ "../assets/dev/js/frontend/utils/icons/e-icons.js");

// Temporary solution, when core 3.5.0 will be the minimum version, is should be replaced with @elementor/e-icons.
class _default extends elementorModules.frontend.Document {
  bindEvents() {
    const openSelector = this.getDocumentSettings('open_selector');

    if (openSelector) {
      elementorFrontend.elements.$body.on('click', openSelector, this.showModal.bind(this));
    }
  }

  startTiming() {
    const timing = new _timing.default(this.getDocumentSettings('timing'), this);

    if (timing.check()) {
      this.initTriggers();
    }
  }

  initTriggers() {
    this.triggers = new _triggers.default(this.getDocumentSettings('triggers'), this);
  }

  showModal(avoidMultiple) {
    const settings = this.getDocumentSettings();

    if (!this.isEdit) {
      if (!elementorFrontend.isWPPreviewMode()) {
        if (this.getStorage('disable')) {
          return;
        }

        if (avoidMultiple && elementorProFrontend.modules.popup.popupPopped && settings.avoid_multiple_popups) {
          return;
        }
      } // A clean copy of the element without previous initializations and events


      this.$element = jQuery(this.elementHTML);
      this.elements.$elements = this.$element.find(this.getSettings('selectors.elements'));
    }

    const modal = this.getModal(),
          $closeButton = modal.getElements('closeButton');
    modal.setMessage(this.$element).show();

    if (!this.isEdit) {
      if (settings.close_button_delay) {
        $closeButton.hide();
        clearTimeout(this.closeButtonTimeout);
        this.closeButtonTimeout = setTimeout(() => $closeButton.show(), settings.close_button_delay * 1000);
      }

      super.runElementsHandlers();
    }

    this.setEntranceAnimation();

    if (!settings.timing || !settings.timing.times_count) {
      this.countTimes();
    }

    elementorProFrontend.modules.popup.popupPopped = true;
  }

  setEntranceAnimation() {
    const $widgetContent = this.getModal().getElements('widgetContent'),
          settings = this.getDocumentSettings(),
          newAnimation = elementorFrontend.getCurrentDeviceSetting(settings, 'entrance_animation');

    if (this.currentAnimation) {
      $widgetContent.removeClass(this.currentAnimation);
    }

    this.currentAnimation = newAnimation;

    if (!newAnimation) {
      return;
    }

    const animationDuration = settings.entrance_animation_duration.size;
    $widgetContent.addClass(newAnimation);
    setTimeout(() => $widgetContent.removeClass(newAnimation), animationDuration * 1000);
  }

  setExitAnimation() {
    const modal = this.getModal(),
          settings = this.getDocumentSettings(),
          $widgetContent = modal.getElements('widgetContent'),
          newAnimation = elementorFrontend.getCurrentDeviceSetting(settings, 'exit_animation'),
          animationDuration = newAnimation ? settings.entrance_animation_duration.size : 0;
    setTimeout(() => {
      if (newAnimation) {
        $widgetContent.removeClass(newAnimation + ' reverse');
      }

      if (!this.isEdit) {
        this.$element.remove();
        modal.getElements('widget').hide();
      }
    }, animationDuration * 1000);

    if (newAnimation) {
      $widgetContent.addClass(newAnimation + ' reverse');
    }
  }

  initModal() {
    let modal;

    this.getModal = () => {
      if (!modal) {
        const settings = this.getDocumentSettings(),
              id = this.getSettings('id'),
              triggerPopupEvent = eventType => elementorFrontend.elements.$document.trigger('elementor/popup/' + eventType, [id, this]);

        let classes = 'elementor-popup-modal';

        if (settings.classes) {
          classes += ' ' + settings.classes;
        }

        const modalProperties = {
          id: 'elementor-popup-modal-' + id,
          className: classes,
          closeButton: true,
          preventScroll: settings.prevent_scroll,
          onShow: () => triggerPopupEvent('show'),
          onHide: () => triggerPopupEvent('hide'),
          effects: {
            hide: () => {
              if (settings.timing && settings.timing.times_count) {
                this.countTimes();
              }

              this.setExitAnimation();
            },
            show: 'show'
          },
          hide: {
            auto: !!settings.close_automatically,
            autoDelay: settings.close_automatically * 1000,
            onBackgroundClick: !settings.prevent_close_on_background_click,
            onOutsideClick: !settings.prevent_close_on_background_click,
            onEscKeyPress: !settings.prevent_close_on_esc_key,
            ignore: '.flatpickr-calendar'
          },
          position: {
            enable: false
          }
        };

        if (elementorFrontend.config.experimentalFeatures.e_font_icon_svg) {
          modalProperties.closeButtonOptions = {
            iconElement: _eIcons.close.element
          };
        } // This line should be moved to the condition above, as an 'else' case, once the core minimum version is 3.5.0.


        modalProperties.closeButtonClass = 'eicon-close';
        modal = elementorFrontend.getDialogsManager().createWidget('lightbox', modalProperties);
        modal.getElements('widgetContent').addClass('animated');
        const $closeButton = modal.getElements('closeButton');

        if (this.isEdit) {
          $closeButton.off('click');

          modal.hide = () => {};
        }

        this.setCloseButtonPosition();
      }

      return modal;
    };
  }

  setCloseButtonPosition() {
    const modal = this.getModal(),
          closeButtonPosition = this.getDocumentSettings('close_button_position'),
          $closeButton = modal.getElements('closeButton');
    $closeButton.appendTo(modal.getElements('outside' === closeButtonPosition ? 'widget' : 'widgetContent'));
  }

  disable() {
    this.setStorage('disable', true);
  }

  setStorage(key, value, options) {
    elementorFrontend.storage.set(`popup_${this.getSettings('id')}_${key}`, value, options);
  }

  getStorage(key, options) {
    return elementorFrontend.storage.get(`popup_${this.getSettings('id')}_${key}`, options);
  }

  countTimes() {
    const displayTimes = this.getStorage('times') || 0;
    this.setStorage('times', displayTimes + 1);
  }

  runElementsHandlers() {}

  async onInit() {
    super.onInit(); // In case that the library was not loaded, it indicates a Core version that enables dynamic loading.

    if (!window.DialogsManager) {
      await elementorFrontend.utils.assetsLoader.load('script', 'dialog');
    }

    this.initModal();

    if (this.isEdit) {
      this.showModal();
      return;
    }

    this.$element.show().remove();
    this.elementHTML = this.$element[0].outerHTML;

    if (elementorFrontend.isEditMode()) {
      return;
    }

    if (elementorFrontend.isWPPreviewMode() && elementorFrontend.config.post.id === this.getSettings('id')) {
      this.showModal();
      return;
    }

    this.startTiming();
  }

  onSettingsChange(model) {
    const changedKey = Object.keys(model.changed)[0];

    if (-1 !== changedKey.indexOf('entrance_animation')) {
      this.setEntranceAnimation();
    }

    if ('exit_animation' === changedKey) {
      this.setExitAnimation();
    }

    if ('close_button_position' === changedKey) {
      this.setCloseButtonPosition();
    }
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/frontend.js":
/*!*******************************************************!*\
  !*** ../modules/popup/assets/js/frontend/frontend.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _document = _interopRequireDefault(__webpack_require__(/*! ./document */ "../modules/popup/assets/js/frontend/document.js"));

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.hooks.addAction('elementor/frontend/documents-manager/init-classes', this.addDocumentClass);
    elementorFrontend.elementsHandler.attachHandler('form', () => __webpack_require__.e(/*! import() | popup */ "popup").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/forms-action */ "../modules/popup/assets/js/frontend/handlers/forms-action.js")));
    elementorFrontend.on('components:init', () => this.onFrontendComponentsInit());

    if (!elementorFrontend.isEditMode() && !elementorFrontend.isWPPreviewMode()) {
      this.setViewsAndSessions();
    }
  }

  addDocumentClass(documentsManager) {
    documentsManager.addDocumentClass('popup', _document.default);
  }

  setViewsAndSessions() {
    const pageViews = elementorFrontend.storage.get('pageViews') || 0;
    elementorFrontend.storage.set('pageViews', pageViews + 1);
    const activeSession = elementorFrontend.storage.get('activeSession', {
      session: true
    });

    if (!activeSession) {
      elementorFrontend.storage.set('activeSession', true, {
        session: true
      });
      const sessions = elementorFrontend.storage.get('sessions') || 0;
      elementorFrontend.storage.set('sessions', sessions + 1);
    }
  }

  showPopup(settings) {
    const popup = elementorFrontend.documentsManager.documents[settings.id];

    if (!popup) {
      return;
    }

    const modal = popup.getModal();

    if (settings.toggle && modal.isVisible()) {
      modal.hide();
    } else {
      popup.showModal();
    }
  }

  closePopup(settings, event) {
    const popupID = jQuery(event.target).parents('[data-elementor-type="popup"]').data('elementorId');

    if (!popupID) {
      return;
    }

    const document = elementorFrontend.documentsManager.documents[popupID];
    document.getModal().hide();

    if (settings.do_not_show_again) {
      document.disable();
    }
  }

  onFrontendComponentsInit() {
    elementorFrontend.utils.urlActions.addAction('popup:open', settings => this.showPopup(settings));
    elementorFrontend.utils.urlActions.addAction('popup:close', (settings, event) => this.closePopup(settings, event));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing.js":
/*!*****************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing.js ***!
  \*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _pageViews = _interopRequireDefault(__webpack_require__(/*! ./timing/page-views */ "../modules/popup/assets/js/frontend/timing/page-views.js"));

var _sessions = _interopRequireDefault(__webpack_require__(/*! ./timing/sessions */ "../modules/popup/assets/js/frontend/timing/sessions.js"));

var _url = _interopRequireDefault(__webpack_require__(/*! ./timing/url */ "../modules/popup/assets/js/frontend/timing/url.js"));

var _sources = _interopRequireDefault(__webpack_require__(/*! ./timing/sources */ "../modules/popup/assets/js/frontend/timing/sources.js"));

var _loggedIn = _interopRequireDefault(__webpack_require__(/*! ./timing/logged-in */ "../modules/popup/assets/js/frontend/timing/logged-in.js"));

var _devices = _interopRequireDefault(__webpack_require__(/*! ./timing/devices */ "../modules/popup/assets/js/frontend/timing/devices.js"));

var _times = _interopRequireDefault(__webpack_require__(/*! ./timing/times */ "../modules/popup/assets/js/frontend/timing/times.js"));

var _browsers = _interopRequireDefault(__webpack_require__(/*! ./timing/browsers */ "../modules/popup/assets/js/frontend/timing/browsers.js"));

class _default extends elementorModules.Module {
  constructor(settings, document) {
    super(settings);
    this.document = document;
    this.timingClasses = {
      page_views: _pageViews.default,
      sessions: _sessions.default,
      url: _url.default,
      sources: _sources.default,
      logged_in: _loggedIn.default,
      devices: _devices.default,
      times: _times.default,
      browsers: _browsers.default
    };
  }

  check() {
    const settings = this.getSettings();
    let checkPassed = true;
    jQuery.each(this.timingClasses, (key, TimingClass) => {
      if (!settings[key]) {
        return;
      }

      const timing = new TimingClass(settings, this.document);

      if (!timing.check()) {
        checkPassed = false;
      }
    });
    return checkPassed;
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/base.js":
/*!**********************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/base.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor(settings, document) {
    super(settings);
    this.document = document;
  }

  getTimingSetting(settingKey) {
    return this.getSettings(this.getName() + '_' + settingKey);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/browsers.js":
/*!**************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/browsers.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));

class _default extends _base.default {
  getName() {
    return 'browsers';
  }

  check() {
    if ('all' === this.getTimingSetting('browsers')) {
      return true;
    }

    const targetedBrowsers = this.getTimingSetting('browsers_options'),
          browserDetectionFlags = elementorFrontend.utils.environment;
    return targetedBrowsers.some(browserName => browserDetectionFlags[browserName]);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/devices.js":
/*!*************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/devices.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));

class _default extends _base.default {
  getName() {
    return 'devices';
  }

  check() {
    return -1 !== this.getTimingSetting('devices').indexOf(elementorFrontend.getCurrentDeviceMode());
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/logged-in.js":
/*!***************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/logged-in.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));

class _default extends _base.default {
  getName() {
    return 'logged_in';
  }

  check() {
    const userConfig = elementorFrontend.config.user;

    if (!userConfig) {
      return true;
    }

    if ('all' === this.getTimingSetting('users')) {
      return false;
    }

    const userRolesInHideList = this.getTimingSetting('roles').filter(role => -1 !== userConfig.roles.indexOf(role));
    return !userRolesInHideList.length;
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/page-views.js":
/*!****************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/page-views.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));

class _default extends _base.default {
  getName() {
    return 'page_views';
  }

  check() {
    const pageViews = elementorFrontend.storage.get('pageViews'),
          name = this.getName();
    let initialPageViews = this.document.getStorage(name + '_initialPageViews');

    if (!initialPageViews) {
      this.document.setStorage(name + '_initialPageViews', pageViews);
      initialPageViews = pageViews;
    }

    return pageViews - initialPageViews >= this.getTimingSetting('views');
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/sessions.js":
/*!**************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/sessions.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));

class _default extends _base.default {
  getName() {
    return 'sessions';
  }

  check() {
    const sessions = elementorFrontend.storage.get('sessions'),
          name = this.getName();
    let initialSessions = this.document.getStorage(name + '_initialSessions');

    if (!initialSessions) {
      this.document.setStorage(name + '_initialSessions', sessions);
      initialSessions = sessions;
    }

    return sessions - initialSessions >= this.getTimingSetting('sessions');
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/sources.js":
/*!*************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/sources.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));

class _default extends _base.default {
  getName() {
    return 'sources';
  }

  check() {
    const sources = this.getTimingSetting('sources');

    if (3 === sources.length) {
      return true;
    }

    const referrer = document.referrer.replace(/https?:\/\/(?:www\.)?/, ''),
          isInternal = 0 === referrer.indexOf(location.host.replace('www.', ''));

    if (isInternal) {
      return -1 !== sources.indexOf('internal');
    }

    if (-1 !== sources.indexOf('external')) {
      return true;
    }

    if (-1 !== sources.indexOf('search')) {
      return /^(google|yahoo|bing|yandex|baidu)\./.test(referrer);
    }

    return false;
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/times.js":
/*!***********************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/times.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));

class _default extends _base.default {
  getName() {
    return 'times';
  }

  check() {
    const displayTimes = this.document.getStorage('times') || 0;
    return this.getTimingSetting('times') > displayTimes;
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/timing/url.js":
/*!*********************************************************!*\
  !*** ../modules/popup/assets/js/frontend/timing/url.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/timing/base.js"));

class _default extends _base.default {
  getName() {
    return 'url';
  }

  check() {
    const url = this.getTimingSetting('url'),
          action = this.getTimingSetting('action'),
          referrer = document.referrer;

    if ('regex' !== action) {
      return 'hide' === action ^ -1 !== referrer.indexOf(url);
    }

    let regexp;

    try {
      regexp = new RegExp(url);
    } catch (e) {
      return false;
    }

    return regexp.test(referrer);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/triggers.js":
/*!*******************************************************!*\
  !*** ../modules/popup/assets/js/frontend/triggers.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _pageLoad = _interopRequireDefault(__webpack_require__(/*! ./triggers/page-load */ "../modules/popup/assets/js/frontend/triggers/page-load.js"));

var _scrolling = _interopRequireDefault(__webpack_require__(/*! ./triggers/scrolling */ "../modules/popup/assets/js/frontend/triggers/scrolling.js"));

var _scrollingTo = _interopRequireDefault(__webpack_require__(/*! ./triggers/scrolling-to */ "../modules/popup/assets/js/frontend/triggers/scrolling-to.js"));

var _click = _interopRequireDefault(__webpack_require__(/*! ./triggers/click */ "../modules/popup/assets/js/frontend/triggers/click.js"));

var _inactivity = _interopRequireDefault(__webpack_require__(/*! ./triggers/inactivity */ "../modules/popup/assets/js/frontend/triggers/inactivity.js"));

var _exitIntent = _interopRequireDefault(__webpack_require__(/*! ./triggers/exit-intent */ "../modules/popup/assets/js/frontend/triggers/exit-intent.js"));

class _default extends elementorModules.Module {
  constructor(settings, document) {
    super(settings);
    this.document = document;
    this.triggers = [];
    this.triggerClasses = {
      page_load: _pageLoad.default,
      scrolling: _scrolling.default,
      scrolling_to: _scrollingTo.default,
      click: _click.default,
      inactivity: _inactivity.default,
      exit_intent: _exitIntent.default
    };
    this.runTriggers();
  }

  runTriggers() {
    const settings = this.getSettings();
    jQuery.each(this.triggerClasses, (key, TriggerClass) => {
      if (!settings[key]) {
        return;
      }

      const trigger = new TriggerClass(settings, () => this.onTriggerFired());
      trigger.run();
      this.triggers.push(trigger);
    });
  }

  destroyTriggers() {
    this.triggers.forEach(trigger => trigger.destroy());
    this.triggers = [];
  }

  onTriggerFired() {
    this.document.showModal(true);
    this.destroyTriggers();
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/triggers/base.js":
/*!************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/triggers/base.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor(settings, callback) {
    super(settings);
    this.callback = callback;
  }

  getTriggerSetting(settingKey) {
    return this.getSettings(this.getName() + '_' + settingKey);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/triggers/click.js":
/*!*************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/triggers/click.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));

class _default extends _base.default {
  constructor(...args) {
    super(...args);
    this.checkClick = this.checkClick.bind(this);
    this.clicksCount = 0;
  }

  getName() {
    return 'click';
  }

  checkClick() {
    this.clicksCount++;

    if (this.clicksCount === this.getTriggerSetting('times')) {
      this.callback();
    }
  }

  run() {
    elementorFrontend.elements.$body.on('click', this.checkClick);
  }

  destroy() {
    elementorFrontend.elements.$body.off('click', this.checkClick);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/triggers/exit-intent.js":
/*!*******************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/triggers/exit-intent.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));

class _default extends _base.default {
  constructor(...args) {
    super(...args);
    this.detectExitIntent = this.detectExitIntent.bind(this);
  }

  getName() {
    return 'exit_intent';
  }

  detectExitIntent(event) {
    if (event.clientY <= 0) {
      this.callback();
    }
  }

  run() {
    elementorFrontend.elements.$window.on('mouseleave', this.detectExitIntent);
  }

  destroy() {
    elementorFrontend.elements.$window.off('mouseleave', this.detectExitIntent);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/triggers/inactivity.js":
/*!******************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/triggers/inactivity.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));

class _default extends _base.default {
  constructor(...args) {
    super(...args);
    this.restartTimer = this.restartTimer.bind(this);
  }

  getName() {
    return 'inactivity';
  }

  run() {
    this.startTimer();
    elementorFrontend.elements.$document.on('keypress mousemove', this.restartTimer);
  }

  startTimer() {
    this.timeOut = setTimeout(this.callback, this.getTriggerSetting('time') * 1000);
  }

  clearTimer() {
    clearTimeout(this.timeOut);
  }

  restartTimer() {
    this.clearTimer();
    this.startTimer();
  }

  destroy() {
    this.clearTimer();
    elementorFrontend.elements.$document.off('keypress mousemove', this.restartTimer);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/triggers/page-load.js":
/*!*****************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/triggers/page-load.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));

class _default extends _base.default {
  getName() {
    return 'page_load';
  }

  run() {
    this.timeout = setTimeout(this.callback, this.getTriggerSetting('delay') * 1000);
  }

  destroy() {
    clearTimeout(this.timeout);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/triggers/scrolling-to.js":
/*!********************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/triggers/scrolling-to.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));

class _default extends _base.default {
  getName() {
    return 'scrolling_to';
  }

  run() {
    let $targetElement;

    try {
      $targetElement = jQuery(this.getTriggerSetting('selector'));
    } catch (e) {
      return;
    }

    this.waypointInstance = elementorFrontend.waypoint($targetElement, this.callback)[0];
  }

  destroy() {
    if (this.waypointInstance) {
      this.waypointInstance.destroy();
    }
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/popup/assets/js/frontend/triggers/scrolling.js":
/*!*****************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/triggers/scrolling.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/popup/assets/js/frontend/triggers/base.js"));

class _default extends _base.default {
  constructor(...args) {
    super(...args);
    this.checkScroll = this.checkScroll.bind(this);
    this.lastScrollOffset = 0;
  }

  getName() {
    return 'scrolling';
  }

  checkScroll() {
    const scrollDirection = scrollY > this.lastScrollOffset ? 'down' : 'up',
          requestedDirection = this.getTriggerSetting('direction');
    this.lastScrollOffset = scrollY;

    if (scrollDirection !== requestedDirection) {
      return;
    }

    if ('up' === scrollDirection) {
      this.callback();
      return;
    }

    const fullScroll = elementorFrontend.elements.$document.height() - innerHeight,
          scrollPercent = scrollY / fullScroll * 100;

    if (scrollPercent >= this.getTriggerSetting('offset')) {
      this.callback();
    }
  }

  run() {
    elementorFrontend.elements.$window.on('scroll', this.checkScroll);
  }

  destroy() {
    elementorFrontend.elements.$window.off('scroll', this.checkScroll);
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/posts/assets/js/frontend/frontend.js":
/*!*******************************************************!*\
  !*** ../modules/posts/assets/js/frontend/frontend.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    ['classic', 'full_content', 'cards'].forEach(skinName => {
      elementorFrontend.elementsHandler.attachHandler('posts', () => __webpack_require__.e(/*! import() | load-more */ "load-more").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/load-more */ "../modules/posts/assets/js/frontend/handlers/load-more.js")), skinName);
    });
    elementorFrontend.elementsHandler.attachHandler('posts', () => __webpack_require__.e(/*! import() | posts */ "posts").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/posts */ "../modules/posts/assets/js/frontend/handlers/posts.js")), 'classic');
    elementorFrontend.elementsHandler.attachHandler('posts', () => __webpack_require__.e(/*! import() | posts */ "posts").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/posts */ "../modules/posts/assets/js/frontend/handlers/posts.js")), 'full_content');
    elementorFrontend.elementsHandler.attachHandler('posts', () => __webpack_require__.e(/*! import() | posts */ "posts").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/cards */ "../modules/posts/assets/js/frontend/handlers/cards.js")), 'cards');
    elementorFrontend.elementsHandler.attachHandler('portfolio', () => __webpack_require__.e(/*! import() | portfolio */ "portfolio").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/portfolio */ "../modules/posts/assets/js/frontend/handlers/portfolio.js")));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/share-buttons/assets/js/frontend/frontend.js":
/*!***************************************************************!*\
  !*** ../modules/share-buttons/assets/js/frontend/frontend.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('share-buttons', () => __webpack_require__.e(/*! import() | share-buttons */ "share-buttons").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/share-buttons */ "../modules/share-buttons/assets/js/frontend/handlers/share-buttons.js")));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/slides/assets/js/frontend/frontend.js":
/*!********************************************************!*\
  !*** ../modules/slides/assets/js/frontend/frontend.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('slides', () => __webpack_require__.e(/*! import() | slides */ "slides").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/slides */ "../modules/slides/assets/js/frontend/handlers/slides.js")));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/social/assets/js/frontend/frontend.js":
/*!********************************************************!*\
  !*** ../modules/social/assets/js/frontend/frontend.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('facebook-button', () => __webpack_require__.e(/*! import() | social */ "social").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/facebook */ "../modules/social/assets/js/frontend/handlers/facebook.js")));
    elementorFrontend.elementsHandler.attachHandler('facebook-comments', () => __webpack_require__.e(/*! import() | social */ "social").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/facebook */ "../modules/social/assets/js/frontend/handlers/facebook.js")));
    elementorFrontend.elementsHandler.attachHandler('facebook-embed', () => __webpack_require__.e(/*! import() | social */ "social").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/facebook */ "../modules/social/assets/js/frontend/handlers/facebook.js")));
    elementorFrontend.elementsHandler.attachHandler('facebook-page', () => __webpack_require__.e(/*! import() | social */ "social").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/facebook */ "../modules/social/assets/js/frontend/handlers/facebook.js")));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/table-of-contents/assets/js/frontend/frontend.js":
/*!*******************************************************************!*\
  !*** ../modules/table-of-contents/assets/js/frontend/frontend.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('table-of-contents', () => __webpack_require__.e(/*! import() | table-of-contents */ "table-of-contents").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/table-of-contents */ "../modules/table-of-contents/assets/js/frontend/handlers/table-of-contents.js")));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/theme-builder/assets/js/frontend/frontend.js":
/*!***************************************************************!*\
  !*** ../modules/theme-builder/assets/js/frontend/frontend.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    ['archive_classic', 'archive_full_content', 'archive_cards'].forEach(skinName => {
      elementorFrontend.elementsHandler.attachHandler('archive-posts', () => __webpack_require__.e(/*! import() | archive-posts */ "archive-posts").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/archive-posts-load-more */ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-load-more.js")), skinName);
    });
    elementorFrontend.elementsHandler.attachHandler('archive-posts', () => __webpack_require__.e(/*! import() | archive-posts */ "archive-posts").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/archive-posts-skin-classic */ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-classic.js")), 'archive_classic');
    elementorFrontend.elementsHandler.attachHandler('archive-posts', () => __webpack_require__.e(/*! import() | archive-posts */ "archive-posts").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/archive-posts-skin-classic */ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-classic.js")), 'archive_full_content');
    elementorFrontend.elementsHandler.attachHandler('archive-posts', () => __webpack_require__.e(/*! import() | archive-posts */ "archive-posts").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/archive-posts-skin-cards */ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-cards.js")), 'archive_cards');
    jQuery(function () {
      // Go to elementor element - if the URL is something like http://domain.com/any-page?preview=true&theme_template_id=6479
      var match = location.search.match(/theme_template_id=(\d*)/),
          $element = match ? jQuery('.elementor-' + match[1]) : [];

      if ($element.length) {
        jQuery('html, body').animate({
          scrollTop: $element.offset().top - window.innerHeight / 2
        });
      }
    });
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/theme-elements/assets/js/frontend/frontend.js":
/*!****************************************************************!*\
  !*** ../modules/theme-elements/assets/js/frontend/frontend.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('search-form', () => __webpack_require__.e(/*! import() | search-form */ "search-form").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/search-form */ "../modules/theme-elements/assets/js/frontend/handlers/search-form.js")));
  }

}

exports.default = _default;

/***/ }),

/***/ "../modules/woocommerce/assets/js/frontend/frontend.js":
/*!*************************************************************!*\
  !*** ../modules/woocommerce/assets/js/frontend/frontend.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class _default extends elementorModules.Module {
  constructor() {
    super();
    elementorFrontend.elementsHandler.attachHandler('woocommerce-menu-cart', () => __webpack_require__.e(/*! import() | woocommerce-menu-cart */ "woocommerce-menu-cart").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/menu-cart */ "../modules/woocommerce/assets/js/frontend/handlers/menu-cart.js")));
    elementorFrontend.elementsHandler.attachHandler('woocommerce-checkout-page', () => __webpack_require__.e(/*! import() | woocommerce-checkout-page */ "woocommerce-checkout-page").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/checkout-page */ "../modules/woocommerce/assets/js/frontend/handlers/checkout-page.js")));
    elementorFrontend.elementsHandler.attachHandler('woocommerce-cart', () => __webpack_require__.e(/*! import() | woocommerce-cart */ "woocommerce-cart").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/cart */ "../modules/woocommerce/assets/js/frontend/handlers/cart.js")));
    elementorFrontend.elementsHandler.attachHandler('woocommerce-my-account', () => __webpack_require__.e(/*! import() | woocommerce-my-account */ "woocommerce-my-account").then(__webpack_require__.bind(__webpack_require__, /*! ./handlers/my-account */ "../modules/woocommerce/assets/js/frontend/handlers/my-account.js")));
  }

}

exports.default = _default;

/***/ })

},
/******/ __webpack_require__ => { // webpackRuntimeModules
/******/ "use strict";
/******/ 
/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
/******/ __webpack_require__.O(0, ["frontend"], () => (__webpack_exec__("../assets/dev/js/frontend/elements-handlers.js")));
/******/ var __webpack_exports__ = __webpack_require__.O();
/******/ }
]);
//# sourceMappingURL=elements-handlers.js.mapassets/js/video-playlist.780d8267a738bfbd96a6.bundle.min.js000064400000054340150755004310016664 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[721],{1591:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class baseTabs extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{tablist:'[role="tablist"]',tabTitle:".e-tab-title",tabContent:".e-tab-content"},classes:{active:"e-active"},showTabFn:"show",hideTabFn:"hide",toggleSelf:!0,hidePrevious:!0,autoExpand:!0,keyDirection:{ArrowLeft:elementorFrontendConfig.is_rtl?1:-1,ArrowUp:-1,ArrowRight:elementorFrontendConfig.is_rtl?-1:1,ArrowDown:1}}}getDefaultElements(){const e=this.getSettings("selectors");return{$tabTitles:this.findElement(e.tabTitle),$tabContents:this.findElement(e.tabContent)}}activateDefaultTab(e){const t=this.getSettings();if(!t.autoExpand||"editor"===t.autoExpand&&!this.isEdit)return;const i=this.getEditSettings("activeItemIndex")||e||1,s={showTabFn:t.showTabFn,hideTabFn:t.hideTabFn};this.setSettings({showTabFn:"show",hideTabFn:"hide"}),this.changeActiveTab(i),this.setSettings(s)}handleKeyboardNavigation(e){const t=e.currentTarget,i=jQuery(t.closest(this.getSettings("selectors").tablist)),s=i.find(this.getSettings("selectors").tabTitle),a="vertical"===i.attr("aria-orientation");switch(e.key){case"ArrowLeft":case"ArrowRight":if(a)return;break;case"ArrowUp":case"ArrowDown":if(!a)return;e.preventDefault();break;case"Home":return e.preventDefault(),void s.first().trigger("focus");case"End":return e.preventDefault(),void s.last().trigger("focus");default:return}const n=t.getAttribute("data-tab")-1,r=this.getSettings("keyDirection")[e.key],l=s[n+r];l?l.focus():-1===n+r?s.last().trigger("focus"):s.first().trigger("focus")}deactivateActiveTab(e){const t=this.getSettings(),i=t.classes.active,s=e?'[data-tab="'+e+'"]':"."+i,a=this.elements.$tabTitles.filter(s),n=this.elements.$tabContents.filter(s);a.add(n).removeClass(i),a.attr({tabindex:"-1","aria-selected":"false"}),n[t.hideTabFn](),n.attr("hidden","hidden")}activateTab(e){const t=this.getSettings(),i=t.classes.active,s=this.elements.$tabTitles.filter('[data-tab="'+e+'"]'),a=this.elements.$tabContents.filter('[data-tab="'+e+'"]'),n="show"===t.showTabFn?0:400;s.add(a).addClass(i),s.attr({tabindex:"0","aria-selected":"true"}),a[t.showTabFn](n,(()=>elementorFrontend.elements.$window.trigger("resize"))),a.removeAttr("hidden")}isActiveTab(e){return this.elements.$tabTitles.filter('[data-tab="'+e+'"]').hasClass(this.getSettings("classes.active"))}bindEvents(){this.elements.$tabTitles.on({keydown:e=>{jQuery(e.target).is("a")&&"Enter"===e.key&&e.preventDefault(),["End","Home","ArrowUp","ArrowDown"].includes(e.key)&&this.handleKeyboardNavigation(e)},keyup:e=>{switch(e.key){case"ArrowLeft":case"ArrowRight":this.handleKeyboardNavigation(e);break;case"Enter":case"Space":e.preventDefault(),this.changeActiveTab(e.currentTarget.getAttribute("data-tab"))}},click:e=>{e.preventDefault(),this.changeActiveTab(e.currentTarget.getAttribute("data-tab"))}})}onInit(...e){super.onInit(...e)}changeActiveTab(e){const t=this.isActiveTab(e),i=this.getSettings();!i.toggleSelf&&t||!i.hidePrevious||this.deactivateActiveTab(),!i.hidePrevious&&t&&this.deactivateActiveTab(e),t||this.activateTab(e)}}t.default=baseTabs},870:(e,t,i)=>{"use strict";var s=i(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=async function triggerEvent(e,t,i,s){const n=new a.default({event:await getEventEventObject(e,t,i,s),tab:getEventTabsObject(e),playlist:getEventPlaylistObject(e,s),video:getEventVideoObject(e,s)});jQuery("body").trigger("elementor-video-playList",n)};var a=s(i(9147));function getEventTabsObject(e){const t=e.elements.$innerTabs.filter(".e-active").find(".e-inner-tabs-wrapper .e-inner-tab-title");if(t.length){const e=t.filter(".e-inner-tab-active");return{name:e.text().trim(),index:e.index()+1}}return{name:"none",index:"none"}}function getEventPlaylistObject(e,t){const i=t||e.currentPlaylistItemIndex;return{name:e.getElementSettings("playlist_title"),currentItem:i,amount:e.playlistItemsArray.filter((e=>"section"!==e.videoType)).length}}function getEventVideoObject(e,t){const i=t||e.currentPlaylistItemIndex,s=e.playlistItemsArray[i-1];return{provider:s.videoType,url:s.videoUrl,title:s.videoTitle,duration:s.videoDuration}}async function getEventEventObject(e,t,i,s){const a=s||e.currentPlaylistItemIndex,n=e.playlistItemsArray[a-1];return{type:t,time:await n.playerInstance.getCurrentTime(),element:e.$element,trigger:i,watchCount:n.playerInstance.watchCount}}},1427:(e,t,i)=>{"use strict";var s=i(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=s(i(1591)),n=s(i(832)),r=s(i(9980)),l=s(i(8803)),o=i(5721),d=i(6940),h=i(3276),c=s(i(870));class VideoPlaylistHandler extends a.default{getDefaultSettings(){const e=super.getDefaultSettings();return{...e,selectors:{...e.selectors,tabsWrapper:".e-tabs-items-wrapper",tabsItems:".e-tabs-items",toggleVideosDisplayButton:".e-tabs-toggle-videos-display-button",videos:".e-tabs-content-wrapper .e-tab-content",innerTabs:".e-tabs-inner-tabs .e-tab-content",imageOverlay:".elementor-custom-embed-image-overlay"}}}getDefaultElements(){const e=super.getDefaultElements(),t=this.getSettings("selectors");return{...e,$tabsWrapper:this.findElement(t.tabsWrapper),$tabsItems:this.findElement(t.tabsItems),$toggleVideosDisplayButton:this.findElement(t.toggleVideosDisplayButton),$videos:this.findElement(t.videos),$innerTabs:this.findElement(t.innerTabs),$imageOverlay:this.findElement(t.imageOverlay)}}initEditorListeners(){super.initEditorListeners(),this.editorListeners.push({event:"elementorPlaylistWidget:fetchVideoData",to:elementor.channels.editor,callback:e=>{this.getCurrentPlayerSelected().setVideoProviderData().then((()=>{e.currentItem=this.getCurrentItemSelected(),elementor.channels.editor.trigger("elementorPlaylistWidget:setVideoData",e)}))}})}bindEvents(){super.bindEvents(),this.elements.$imageOverlay.on({click:e=>{e.currentTarget.remove(),this.getCurrentPlayerSelected().play()}}),this.elements.$innerTabs.on({click:e=>{(0,d.handleInnerTabs)(e,this)}}),this.elements.$tabsItems.on({scroll:e=>{(0,o.handleVideosPanelScroll)(this.elements,e)}}),this.elements.$toggleVideosDisplayButton.on({click:e=>{jQuery(e.target).toggleClass("rotate-up"),jQuery(e.target).toggleClass("rotate-down"),this.elements.$tabsWrapper.slideToggle("slow")}})}onInit(...e){super.onInit(...e),this.playlistId=this.getID(),this.storageKey="watched_videos_"+this.getID();const t=elementorFrontend.storage.get(this.storageKey);this.watchedVideosArray=t?JSON.parse(t):[],this.watchedIndication=this.getElementSettings("show_watched_indication"),(0,o.handleVideosPanelScroll)(this.elements),this.isAutoplayOnLoad="yes"===this.getElementSettings("autoplay_on_load"),this.isAutoplayNextUp="yes"===this.getElementSettings("autoplay_next"),this.isFirstVideoActivated=!0,this.createPlaylistItems(),this.isCollapsible=this.getElementSettings("inner_tab_is_content_collapsible"),this.innerTabsHeightLimit=this.getElementSettings("inner_tab_collapsible_height"),this.currentPlayingPlaylistItemIndex=1,this.activateInitialVideo(),this.activateInnerTabInEditMode()}onEditSettingsChange(e){"panel"===e&&(this.preventTabActivation=!0),"activeItemIndex"===e&&(this.preventTabActivation?this.preventTabActivation=!1:this.activateDefaultTab())}activateInitialVideo(){this.isPageOnLoad=!0;const e=!!this.getElementSettings("lazy_load"),t=(0,h.handleURLParams)(this.playlistId,this.playlistItemsArray);let i=!1;t?(this.currentPlaylistItemIndex=t,this.currentPlayingPlaylistItemIndex=t,i=!0):(this.currentPlaylistItemIndex=1,this.currentPlayingPlaylistItemIndex=1),this.isAutoplayOnLoad&&!i&&(0,h.setVideoParams)(this.playlistId,this.playlistItemsArray,this.currentPlaylistItemIndex),this.handleFirstVideoActivation(e)}handleFirstVideoActivation(e){if(!e)return void this.activateDefaultTab(this.currentPlaylistItemIndex);const t=document.querySelector(".elementor-element-"+this.playlistId+" .e-tabs-main-area"),i=elementorModules.utils.Scroll.scrollObserver({callback:e=>{e.isInViewport&&(this.activateDefaultTab(this.currentPlaylistItemIndex),i.unobserve(t))}});i.observe(t)}getCurrentItemSelected(){return this.playlistItemsArray[this.currentPlaylistItemIndex-1]}getCurrentPlayerSelected(){return this.getCurrentItemSelected().playerInstance}getCurrentPlayerPlaying(){return this.playlistItemsArray[this.currentPlayingPlaylistItemIndex-1].playerInstance}isVideoShouldBePlayed(){if(this.currentPlayingPlaylistItemIndex!==this.currentPlaylistItemIndex)this.getCurrentPlayerPlaying()&&this.getCurrentPlayerPlaying().pause(),this.currentPlayingPlaylistItemIndex=this.currentPlaylistItemIndex;else if(this.getCurrentPlayerPlaying().isVideoPlaying)return this.getCurrentPlayerPlaying().pause(),!1;return!0}activateInnerTabInEditMode(){if(this.isEdit&&this.getEditSettings("innerActiveIndex")){const e=this.getEditSettings("innerActiveIndex");jQuery(this.elements.$innerTabs.eq(this.currentPlaylistItemIndex-1).find(".e-inner-tab-title a"))[e].click()}}handleVideo(e){if(e.playerInstance)this.isVideoShouldBePlayed()&&(1===this.currentPlaylistItemIndex&&this.elements.$imageOverlay&&this.elements.$imageOverlay.remove(),this.playVideoAfterCreation(e));else{const t={youtube:n.default,vimeo:r.default,hosted:l.default};e.playerInstance=new t[e.videoType](e,this.currentPlaylistItemIndex),e.playerInstance.create().then((()=>{this.isVideoShouldBePlayed()&&this.playVideoOnCreation(e),e.playerInstance.handleFullScreenChange((e=>{(0,c.default)(this,e?"videoFullScreen":"videoExitFullScreen","click")})),e.playerInstance.handlePlayed((()=>{const t=this.getCurrentItemSelected();let i="click";t.isAutoplayOnLoad?(i="onLoad",e.isAutoplayOnLoad=!1):t.isAutoPlayNextUp&&(i="nextVideo"),(0,c.default)(this,t.playerInstance.isVideoPausedLocal?"videoResume":"videoStart",i)})),e.playerInstance.handleEnded((()=>{(0,c.default)(this,"videoEnded","click"),this.watchedIndication&&this.elements.$tabTitles.filter(".e-active").addClass("watched-video");const e=this.getCurrentItemSelected().dataItemId;if(!this.watchedVideosArray.includes(e)&&this.watchedIndication&&(this.watchedVideosArray.push(this.getCurrentItemSelected().dataItemId),elementorFrontend.storage.set(this.storageKey,JSON.stringify(this.watchedVideosArray))),this.isAutoplayNextUp&&this.playlistItemsArray.length>=++this.currentPlaylistItemIndex){for(;"section"===this.getCurrentItemSelected().videoType;)if(this.currentPlaylistItemIndex++,this.playlistItemsArray.length<this.currentPlaylistItemIndex)return void(this.currentPlaylistItemIndex=this.playlistItemsArray.length);this.changeActiveTab(this.currentPlaylistItemIndex,!0)}})),e.playerInstance.handlePaused((e=>{(0,c.default)(this,"videoPaused","click",e)}))}))}}playVideoAfterCreation(e){e.playerInstance.play()}playVideoOnCreation(e){this.isAutoplayOnLoad?(e.isAutoplayOnLoad=!0,e.playerInstance.mute(),e.playerInstance.play(),this.isAutoplayOnLoad=!1):this.isFirstVideoActivated||(e.isAutoPlayNextUp=!0,e.playerInstance.play()),this.isFirstVideoActivated=!1}createPlaylistItems(){this.playlistItemsArray=[],this.elements.$videos.each(((e,t)=>{const i={},s=jQuery(t);i.videoUrl=s.attr("data-video-url"),i.videoType=s.attr("data-video-type"),i.videoTitle=s.attr("data-video-title"),i.videoDuration=s.attr("data-video-duration"),i.tabContent=t,i.dataTab=e+1,i.dataItemId=this.getElementSettings().tabs[e]._id,this.playlistItemsArray.push(i)})),this.watchedVideosArray.length>0&&this.watchedIndication&&this.watchedVideosArray.forEach((e=>{const t=this.playlistItemsArray.find((t=>t.dataItemId===e));this.elements.$tabTitles.filter('[data-tab="'+t.dataTab+'"]').addClass("watched-video")}))}changeActiveTab(e,t){if(super.changeActiveTab(e),this.playlistItemsArray[e-1]&&"section"!==this.playlistItemsArray[e-1].videoType&&(this.currentPlaylistItemIndex=parseInt(e),t&&(this.currentPlayingPlaylistItemIndex=this.currentPlaylistItemIndex),this.handleVideo(this.getCurrentItemSelected(),t),this.isPageOnLoad||(0,h.setVideoParams)(this.playlistId,this.playlistItemsArray,this.currentPlaylistItemIndex),this.isPageOnLoad=!1,jQuery(this.elements.$innerTabs.eq(e-1)).find(".e-inner-tab-content").length>0)){const e=this.elements.$innerTabs.filter(".e-active").find(".e-inner-tab-content");(0,d.handleInnerTabsButtonsDisplay)(e.toArray(),this.isCollapsible,this.innerTabsHeightLimit)}}}t.default=VideoPlaylistHandler},6940:(e,t,i)=>{"use strict";var s=i(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.handleInnerTabs=function handleInnerTabs(e,t){const i=e.target,s=i.tagName;if(i.classList.contains("e-inner-tab-title-text")){e.preventDefault();const s=jQuery(i).parent(".e-inner-tab-title");toggleInnerTabs(e,s,t)}if(i.classList.contains("e-tab-mobile-title")){const s=jQuery(i);toggleInnerTabs(e,s,t)}"button"===s.toLowerCase()&&onTabContentButtonsClick(e,t)},t.handleInnerTabsButtonsDisplay=handleInnerTabsButtonsDisplay,t.onTabContentButtonsClick=onTabContentButtonsClick;var a=s(i(870));function toggleInnerTabs(e,t,i){const s=e.currentTarget,n=s.querySelectorAll(".e-inner-tab-title");if(t.hasClass("e-inner-tab-active")||n.length<2)return;const r=s.querySelectorAll(".e-inner-tab-content");n.forEach((e=>{e.classList.toggle("e-inner-tab-active")})),r.forEach((e=>{e.toggleAttribute("hidden"),e.classList.toggle("e-inner-tab-active")})),handleInnerTabsButtonsDisplay(Array.from(r),i.isCollapsible,i.innerTabsHeightLimit),(0,a.default)(i,"tabOpened","click")}function handleInnerTabsButtonsDisplay(e,t,i){if(!t)return;const s=e.filter((e=>e.classList.contains("e-inner-tab-active"))),a=s[0].querySelector(".e-inner-tab-text > div").offsetHeight,n=parseInt(i.size);n&&a>n&&s[0].classList.add("show-inner-tab-buttons")}function onTabContentButtonsClick(e,t){const i=jQuery(e.currentTarget).find(".e-inner-tab-content").filter(".e-inner-tab-active");i.find("button").toggleClass("show-button"),i.toggleClass("show-full-height");const s=i.hasClass("show-full-height")?"tabExpanded":"tabCollapsed";(0,a.default)(t,s,"click")}},1198:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default=class PlayerBase{constructor(e,t){this.playlistItem=e,this.positionInVideoList=t}formatDuration(e){const t=new Date(1e3*e),i=t.getUTCHours(),s=t.getUTCMinutes(),a=t.getSeconds();return 0!==i?`${i.toString()}:${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}`:`${s.toString()}:${a.toString().padStart(2,"0")}`}}},8803:(e,t,i)=>{"use strict";var s=i(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=s(i(1198));class playerHosted extends a.default{constructor(e,t){super(e,t),this.playerObject=null,this.watchCount=0,this.isVideoPlaying=!1,this.isVideoPausedLocal=!1,this.isVideoSeeking=!1,this.isVideoEnded=!1,this.isReady=!1}create(){return new Promise((e=>{const t=document.createElement("video");t.setAttribute("controls","");const i=document.createTextNode("Sorry, your browser doesn't support embedded videos."),s=document.createElement("source");s.setAttribute("src",this.playlistItem.videoUrl),s.setAttribute("type","video/"+this.playlistItem.videoUrl.split(".").pop()),t.appendChild(s),t.appendChild(i),this.playerObject=t,this.playlistItem.tabContent.querySelector("div").replaceWith(this.playerObject),this.playerObject.addEventListener("canplay",(()=>{this.isReady=!0,e()})),this.playerObject.addEventListener("seeked",(()=>{this.isVideoSeeking=!1})),this.playerObject.addEventListener("seeking",(()=>{clearTimeout(this.seekTimeOut),this.isVideoSeeking=!0}))}))}handleEnded(e){this.playerObject.addEventListener("ended",(()=>{this.watchCount++,this.isVideoEnded=!0,this.isVideoPlaying=!1,e(this.playlistItem)}))}handlePaused(e){this.playerObject.addEventListener("pause",(()=>{this.seekTimeOut=setTimeout((()=>{this.isVideoSeeking||this.isVideoEnded?this.isVideoEnded=!1:(e(this.positionInVideoList),this.isVideoPausedLocal=!0)}),30)}))}handlePlayed(e){this.playerObject.addEventListener("play",(()=>{this.isVideoSeeking||e(this.playlistItem)}))}handleFullScreenChange(e){jQuery(this.playerObject).on("webkitfullscreenchange mozfullscreenchange fullscreenchange",(()=>{e(document.fullscreenElement)}))}getCurrentTime(){return this.playerObject.currentTime}play(){this.isReady&&(this.isVideoPlaying=!0,this.playerObject.play())}pause(){this.isReady&&(this.isVideoPlaying=!1,this.playerObject.pause())}mute(){this.playerObject.muted=!0}}t.default=playerHosted},9980:(e,t,i)=>{"use strict";var s=i(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=s(i(1198));class playerVimeo extends a.default{constructor(e,t){super(e,t),this.apiProvider=elementorFrontend.utils.vimeo,this.playerObject=null,this.watchCount=0,this.isVideoInFullScreenChange=!1,this.isReady=!1}create(){return this.currentVideoID=this.apiProvider.getVideoIDFromURL(this.playlistItem.videoUrl),new Promise((e=>{this.apiProvider.onApiReady((t=>{const i={id:this.currentVideoID,autoplay:!0};this.playerObject=new t.Player(this.playlistItem.tabContent.querySelector("div"),i),this.playerObject.ready().then((()=>{this.isReady=!0,e()}))}))}))}handleEnded(e){this.playerObject.on("ended",(()=>{this.watchCount++,e(this.playlistItem)}))}handlePaused(e){this.playerObject.on("pause",(t=>{0===t.percent||t.percent>=1||this.isVideoInFullScreenChange||e(this.positionInVideoList)}))}handlePlayed(e){this.playerObject.on("play",(()=>{this.isVideoInFullScreenChange?this.isVideoInFullScreenChange=!1:e(this.playlistItem)}))}handleFullScreenChange(e){this.playerObject.element.addEventListener("fullscreenchange",(()=>{e(document.fullscreenElement),this.isVideoInFullScreenChange=!0}))}getCurrentTime(){return this.playerObject.getCurrentTime().then((e=>e))}play(){this.isReady&&this.playerObject.play()}pause(){this.isReady&&this.playerObject.pause()}mute(){this.playerObject.setMuted(!0)}async setVideoProviderData(){if(!this.currentVideoID&&9===!this.currentVideoID.length)return;const e=await this.playerObject.getVideoId(),t=await fetch("https://vimeo.com/api/v2/video/"+e+".json"),i=await t.json();return this.playlistItem.duration=this.formatDuration(i[0].duration),this.playlistItem.video_title=i[0].title,this.playlistItem.thumbnail={url:i[0].thumbnail_medium},this.playlistItem}}t.default=playerVimeo},832:(e,t,i)=>{"use strict";var s=i(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=s(i(1198));class playerYoutube extends a.default{constructor(e,t){super(e,t),this.apiProvider=elementorFrontend.utils.youtube,this.playerObject=null,this.watchCount=0,this.isVideoPlaying=!1,this.isVideoPausedLocal=!1,this.isVideoEnded=!1,this.seekSequenceArray=[],this.pauseCurrentTime=null,this.isReady=!1}create(){this.currentVideoID=this.apiProvider.getVideoIDFromURL(this.playlistItem.videoUrl);return new Promise((e=>{this.apiProvider.onApiReady((t=>{const i={width:"773",videoId:this.currentVideoID,playerVars:{rel:0,showinfo:0,ecver:2},events:{onReady:()=>{this.isReady=!0,e()}}};this.playerObject=new t.Player(this.playlistItem.tabContent.querySelector("div"),i),this.playerObject.addEventListener("onStateChange",(e=>{3===e.data&&(2===this.seekSequenceArray[this.seekSequenceArray.length-1]?this.seekSequenceArray.push(3):(this.seekSequenceArray=[],clearTimeout(this.seekTimeOut)))}))}))}))}handleEnded(e){this.playerObject.addEventListener("onStateChange",(t=>{0===t.data&&(this.watchCount++,this.isVideoEnded=!0,t.target.seekTo(0),t.target.stopVideo(),this.isVideoPlaying=!1,e())}))}handlePaused(e){this.playerObject.addEventListener("onStateChange",(t=>{2===t.data&&(this.seekSequenceArray=[],this.seekSequenceArray.push(2),this.pauseCurrentTime=this.playerObject.playerInfo.currentTime,this.seekTimeOut=setTimeout((()=>{2===this.seekSequenceArray.length&&2===this.seekSequenceArray[0]&&3===this.seekSequenceArray[1]?(this.seekSequenceArray=[],clearTimeout(this.seekTimeOut)):(e(this.positionInVideoList),this.isVideoPausedLocal=!0)}),1e3))}))}handlePlayed(e){this.playerObject.addEventListener("onStateChange",(t=>{1!==t.data||this.isVideoEnded?this.isVideoEnded=!1:2===this.seekSequenceArray.length&&2===this.seekSequenceArray[0]&&3===this.seekSequenceArray[1]||e()}))}handleError(e){this.playerObject.addEventListener("onError",(()=>{e()}))}handleFullScreenChange(e){this.playerObject.h.addEventListener("fullscreenchange",(()=>{e(document.fullscreenElement)}))}getCurrentTime(){const e=this.pauseCurrentTime?this.pauseCurrentTime:this.playerObject.playerInfo.currentTime;return this.pauseCurrentTime=null,e}play(){this.isReady&&(this.isVideoPlaying=!0,this.playerObject.playVideo())}pause(){this.isReady&&(this.isVideoPlaying=!1,this.playerObject.pauseVideo())}mute(){this.playerObject.mute()}async setVideoProviderData(){this.isReady&&(this.currentVideoID&&11===this.currentVideoID.length?(this.playlistItem.thumbnail={url:"http://img.youtube.com/vi/"+this.playerObject.getVideoData().video_id+"/maxresdefault.jpg"},this.playlistItem.video_title=this.playerObject.getVideoData().title,this.playlistItem.duration=this.formatDuration(this.playerObject.getDuration())):(this.playlistItem.thumbnail={url:""},this.playlistItem.video_title="",this.playlistItem.duration=""))}}t.default=playerYoutube},9147:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default=class PlaylistEvent{constructor({event:e,tab:t,playlist:i,video:s}){this.event={type:e.type||"",time:e.time||0,element:e.element,trigger:e.trigger||"",watchCount:e.watchCount||0},this.tab={name:t.name,index:t.index},this.playlist={name:i.name,currentItem:i.currentItem,amount:i.amount},this.video={provider:s.provider,url:s.url,title:s.title,duration:s.duration}}}},5721:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.handleVideosPanelScroll=function handleVideosPanelScroll(e,t){if(!t)return void(e.$tabsItems[0].offsetHeight<e.$tabsItems[0].scrollHeight&&e.$tabsWrapper.addClass("bottom-shadow"));t.target.scrollTop>0?e.$tabsWrapper.addClass("top-shadow"):e.$tabsWrapper.removeClass("top-shadow");t.target.offsetHeight+t.target.scrollTop>=t.target.scrollHeight?e.$tabsWrapper.removeClass("bottom-shadow"):e.$tabsWrapper.addClass("bottom-shadow")}},3276:(e,t)=>{"use strict";function setVideoParams(e,t,i){const s=new URLSearchParams(location.search);s.set("playlist",e),s.set("video",t[i-1].dataItemId),history.replaceState({},"",location.pathname+"?"+s)}Object.defineProperty(t,"__esModule",{value:!0}),t.handleURLParams=function handleURLParams(e,t){const i=new URLSearchParams(location.search),s=i.get("video"),a=i.get("playlist");if(!a)return!1;if(a===e){const i=t.find((e=>s===e.dataItemId)),a=i?i.dataTab:1;return a||setVideoParams(e,t,1),a||!1}},t.setVideoParams=setVideoParams}}]);assets/js/form.0fc25ba6639255b98660.bundle.min.js000064400000045636150755004310014517 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[680],{8906:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class DataTimeFieldBase extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{fields:this.getFieldsSelector()},classes:{useNative:"elementor-use-native"}}}getDefaultElements(){const{selectors:e}=this.getDefaultSettings();return{$fields:this.$element.find(e.fields)}}addPicker(e){const{classes:t}=this.getDefaultSettings();jQuery(e).hasClass(t.useNative)||e.flatpickr(this.getPickerOptions(e))}onInit(...e){super.onInit(...e),this.elements.$fields.each(((e,t)=>this.addPicker(t)))}}t.default=DataTimeFieldBase},4610:(e,t,s)=>{"use strict";var r=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=r(s(8906));class DateField extends i.default{getFieldsSelector(){return".elementor-date-field"}getPickerOptions(e){const t=jQuery(e);return{minDate:t.attr("min")||null,maxDate:t.attr("max")||null,allowInput:!0}}}t.default=DateField},6374:(e,t,s)=>{"use strict";var r=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=r(s(8906));class TimeField extends i.default{getFieldsSelector(){return".elementor-time-field"}getPickerOptions(){return{noCalendar:!0,enableTime:!0,allowInput:!0}}}t.default=TimeField},611:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=elementorModules.frontend.handlers.Base.extend({getDefaultSettings:()=>({selectors:{form:".elementor-form"}}),getDefaultElements(){var e=this.getSettings("selectors"),t={};return t.$form=this.$element.find(e.form),t},bindEvents(){this.elements.$form.on("form_destruct",this.handleSubmit)},handleSubmit(e,t){void 0!==t.data.redirect_url&&(location.href=t.data.redirect_url)}});t.default=s},7300:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=elementorModules.frontend.handlers.Base.extend({getDefaultSettings:()=>({selectors:{form:".elementor-form",submitButton:'[type="submit"]'},action:"elementor_pro_forms_send_form",ajaxUrl:elementorProFrontend.config.ajaxurl}),getDefaultElements(){const e=this.getSettings("selectors"),t={};return t.$form=this.$element.find(e.form),t.$submitButton=t.$form.find(e.submitButton),t},bindEvents(){this.elements.$form.on("submit",this.handleSubmit);const e=this.elements.$form.find("input[type=file]");e.length&&e.on("change",this.validateFileSize)},validateFileSize(e){const t=jQuery(e.currentTarget),s=t[0].files;if(!s.length)return;const r=1024*parseInt(t.attr("data-maxsize"))*1024,i=t.attr("data-maxsize-message");Array.prototype.slice.call(s).forEach((e=>{r<e.size&&(t.parent().addClass("elementor-error").append('<span class="elementor-message elementor-message-danger elementor-help-inline elementor-form-help-inline" role="alert">'+i+"</span>").find(":input").attr("aria-invalid","true"),this.elements.$form.trigger("error"))}))},beforeSend(){const e=this.elements.$form;e.animate({opacity:"0.45"},500).addClass("elementor-form-waiting"),e.find(".elementor-message").remove(),e.find(".elementor-error").removeClass("elementor-error"),e.find("div.elementor-field-group").removeClass("error").find("span.elementor-form-help-inline").remove().end().find(":input").attr("aria-invalid","false"),this.elements.$submitButton.attr("disabled","disabled").find("> span").prepend('<span class="elementor-button-text elementor-form-spinner"><i class="fa fa-spinner fa-spin"></i>&nbsp;</span>')},getFormData(){const e=new FormData(this.elements.$form[0]);return e.append("action",this.getSettings("action")),e.append("referrer",location.toString()),e},onSuccess(e){const t=this.elements.$form;this.elements.$submitButton.removeAttr("disabled").find(".elementor-form-spinner").remove(),t.animate({opacity:"1"},100).removeClass("elementor-form-waiting"),e.success?(t.trigger("submit_success",e.data),t.trigger("form_destruct",e.data),t.trigger("reset"),void 0!==e.data.message&&""!==e.data.message&&t.append('<div class="elementor-message elementor-message-success" role="alert">'+e.data.message+"</div>")):(e.data.errors&&(jQuery.each(e.data.errors,(function(e,s){t.find("#form-field-"+e).parent().addClass("elementor-error").append('<span class="elementor-message elementor-message-danger elementor-help-inline elementor-form-help-inline" role="alert">'+s+"</span>").find(":input").attr("aria-invalid","true")})),t.trigger("error")),t.append('<div class="elementor-message elementor-message-danger" role="alert">'+e.data.message+"</div>"))},onError(e,t){const s=this.elements.$form;s.append('<div class="elementor-message elementor-message-danger" role="alert">'+t+"</div>"),this.elements.$submitButton.html(this.elements.$submitButton.text()).removeAttr("disabled"),s.animate({opacity:"1"},100).removeClass("elementor-form-waiting"),s.trigger("error")},handleSubmit(e){const t=this,s=this.elements.$form;if(e.preventDefault(),s.hasClass("elementor-form-waiting"))return!1;this.beforeSend(),jQuery.ajax({url:t.getSettings("ajaxUrl"),type:"POST",dataType:"json",data:t.getFormData(),processData:!1,contentType:!1,success:t.onSuccess,error:t.onError})}});t.default=s},9706:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class FormSteps extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{form:".elementor-form",fieldsWrapper:".elementor-form-fields-wrapper",fieldGroup:".elementor-field-group",stepWrapper:".elementor-field-type-step",stepField:".e-field-step",submitWrapper:".elementor-field-type-submit",submitButton:'[type="submit"]',buttons:".e-form__buttons",buttonWrapper:".e-form__buttons__wrapper",button:".e-form__buttons__wrapper__button",indicator:".e-form__indicators__indicator",indicatorProgress:".e-form__indicators__indicator__progress",indicatorProgressMeter:".e-form__indicators__indicator__progress__meter",formHelpInline:".elementor-form-help-inline"},classes:{hidden:"elementor-hidden",column:"elementor-column",fieldGroup:"elementor-field-group",elementorButton:"elementor-button",step:"e-form__step",buttons:"e-form__buttons",buttonWrapper:"e-form__buttons__wrapper",button:"e-form__buttons__wrapper__button",indicators:"e-form__indicators",indicator:"e-form__indicators__indicator",indicatorIcon:"e-form__indicators__indicator__icon",indicatorNumber:"e-form__indicators__indicator__number",indicatorLabel:"e-form__indicators__indicator__label",indicatorProgress:"e-form__indicators__indicator__progress",indicatorProgressMeter:"e-form__indicators__indicator__progress__meter",indicatorSeparator:"e-form__indicators__indicator__separator",indicatorInactive:"e-form__indicators__indicator--state-inactive",indicatorActive:"e-form__indicators__indicator--state-active",indicatorCompleted:"e-form__indicators__indicator--state-completed",indicatorShapeCircle:"e-form__indicators__indicator--shape-circle",indicatorShapeSquare:"e-form__indicators__indicator--shape-square",indicatorShapeRounded:"e-form__indicators__indicator--shape-rounded",indicatorShapeNone:"e-form__indicators__indicator--shape-none"}}}getDefaultElements(){const{selectors:e}=this.getSettings(),t={$form:this.$element.find(e.form)};return t.$fieldsWrapper=t.$form.children(e.fieldsWrapper),t.$stepWrapper=t.$fieldsWrapper.children(e.stepWrapper),t.$stepField=t.$stepWrapper.children(e.stepField),t.$fieldGroup=t.$fieldsWrapper.children(e.fieldGroup),t.$submitWrapper=t.$fieldsWrapper.children(e.submitWrapper),t.$submitButton=t.$submitWrapper.children(e.submitButton),t}onInit(...e){super.onInit(...e),this.isStepsExist()&&(this.data={steps:[],indicatorsWithObjectTags:[]},this.state={currentStep:0,stepsType:"",stepsShape:""},this.buildSteps(),this.elements={...this.elements,...this.createStepsIndicators(),...this.createStepsButtons()},this.initProgressBar(),this.extractResponsiveSizeFromSubmitWrapper())}bindEvents(){this.isStepsExist()&&this.elements.$form.on({submit:()=>this.resetForm(),keydown:e=>{13!==e.keyCode||this.isLastStep()||"textarea"===e.target.localName||(e.preventDefault(),this.applyStep("next"))},error:()=>this.onFormError()})}isStepsExist(){return this.elements.$stepWrapper.length}initProgressBar(){"progress_bar"===this.getElementSettings().step_type&&this.setProgressBar()}buildSteps(){this.elements.$stepWrapper.each(((e,t)=>{const{selectors:s,classes:r}=this.getSettings(),i=jQuery(t);i.addClass(r.step).removeClass(r.fieldGroup,r.column),e&&i.addClass(r.hidden),this.setStepData(i.children(s.stepField)),i.append(i.nextUntil(this.elements.$stepWrapper).not(this.elements.$submitWrapper))}))}setStepData(e){const t={};["label","previousButton","nextButton","iconUrl","iconLibrary","icon"].forEach((s=>{const r=e.attr("data-"+s);r&&(t[s]=r)})),this.data.steps.push(t)}createStepsIndicators(){const e=this.getElementSettings(),t={};if("none"!==e.step_type){const{selectors:s,classes:r}=this.getSettings(),i=r.indicators+"--type-"+e.step_type,n=[r.indicators,i];t.$indicatorsWrapper=jQuery("<div>",{class:n.join(" ")}),t.$indicatorsWrapper.append(this.buildIndicators()),this.elements.$fieldsWrapper.before(t.$indicatorsWrapper),"progress_bar"===e.step_type?(t.$progressBar=t.$indicatorsWrapper.find(s.indicatorProgress),t.$progressBarMeter=t.$indicatorsWrapper.find(s.indicatorProgressMeter)):(t.$indicators=t.$indicatorsWrapper.find(s.indicator),t.$currentIndicator=t.$indicators.eq(this.state.currentStep))}return this.saveIndicatorsState(),t}buildIndicators(){return"progress_bar"===this.getElementSettings().step_type?this.buildProgressBar():this.buildIndicatorsFromStepsData()}buildProgressBar(){const{classes:e}=this.getSettings(),t=jQuery("<div>",{class:e.indicatorProgress}),s=jQuery("<div>",{class:e.indicatorProgressMeter});return t.append(s),t}getProgressBarValue(){const e=this.data.steps.length,t=this.state.currentStep,s=t?(t+1)/e*100:100/e;return Math.floor(s)+"%"}setProgressBar(){const e=this.getProgressBarValue();this.updateProgressMeterCSSVariable(e),this.elements.$progressBarMeter.text(e)}updateProgressMeterCSSVariable(e){this.$element[0].style.setProperty("--e-form-steps-indicator-progress-meter-width",e)}saveIndicatorsState(){const e=this.getElementSettings();this.state.stepsType=e.step_type,["none","text","progress_bar"].includes(e.step_type)||(this.state.stepsShape=e.step_icon_shape)}buildIndicatorsFromStepsData(){const e=[];return this.data.steps.forEach(((t,s)=>{s&&e.push(this.getStepSeparator()),e.push(this.getStepIndicatorElement(t,s))})),e}getStepIndicatorElement(e,t){const{classes:s}=this.getSettings(),r=this.getElementSettings(),i=this.getIndicatorStateClass(t),n=[s.indicator,i],a=jQuery("<div>",{class:n.join(" ")});return r.step_type.includes("icon")&&a.append(this.getStepIconElement(e)),r.step_type.includes("number")&&a.append(this.getStepNumberElement(t)),r.step_type.includes("text")&&a.append(this.getStepLabelElement(e.label)),a}getIndicatorStateClass(e){const{classes:t}=this.getSettings();return e<this.state.currentStep?t.indicatorCompleted:e>this.state.currentStep?t.indicatorInactive:t.indicatorActive}getIndicatorShapeClass(){const e=this.getElementSettings(),{classes:t}=this.getSettings();return t["indicatorShape"+this.firstLetterToUppercase(e.step_icon_shape)]}firstLetterToUppercase(e){return e.charAt(0).toUpperCase()+e.slice(1)}getStepNumberElement(e){const{classes:t}=this.getSettings(),s=[t.indicatorNumber,this.getIndicatorShapeClass()];return jQuery("<div>",{class:s.join(" "),text:e+1})}getStepIconElement(e){const{classes:t}=this.getSettings(),s=[t.indicatorIcon,this.getIndicatorShapeClass()],r=jQuery("<div>",{class:s.join(" ")});if(e.icon)r.html(e.icon);else{let t;e.iconLibrary?t=jQuery("<i>",{class:e.iconLibrary}):(t=jQuery(`<object type="image/svg+xml" data="${e.iconUrl}"></object>`),t.on("load",(e=>{e.target.contentDocument.querySelector("svg").style.fill=t.css("fill")})),this.data.indicatorsWithObjectTags.push(t)),r.append(t)}return r}getStepLabelElement(e){const{classes:t}=this.getSettings();return jQuery("<label>",{class:t.indicatorLabel,text:e})}getStepSeparator(){const{classes:e}=this.getSettings();return jQuery("<div>",{class:e.indicatorSeparator})}createStepsButtons(){const{selectors:e}=this.getSettings(),t={};return this.injectButtonsToSteps(t),t.$buttonsContainer=this.elements.$stepWrapper.find(e.buttons),t.$buttonsWrappers=t.$buttonsContainer.children(e.buttonWrapper),t}injectButtonsToSteps(){const e=this.elements.$stepWrapper.length;this.elements.$stepWrapper.each(((t,s)=>{const r=jQuery(s),i=this.getButtonsContainer();let n;t?(i.append(this.getStepButton("previous",t)),n=t===e-1?this.getSubmitButton():this.getStepButton("next",t)):n=this.getStepButton("next",t),i.append(n),r.append(i)}))}getButtonsContainer(){const{classes:e}=this.getSettings(),t=this.getElementSettings(),s=[e.buttons,e.column,"elementor-col-"+t.button_width];return jQuery("<div>",{class:s.join(" ")})}extractResponsiveSizeFromSubmitWrapper(){let e=[];this.elements.$submitWrapper.removeClass(((t,s)=>{var r;return e=null===(r=s.match(/elementor-(sm|md)-[0-9]+/g))||void 0===r?void 0:r.join(" "),e})),this.elements.$buttonsContainer.addClass(e)}getStepButton(e,t){const{classes:s}=this.getSettings(),r=this.getButton(e,t).on("click",(()=>this.applyStep(e))),i=[s.fieldGroup,s.buttonWrapper,"elementor-field-type-"+e];return jQuery("<div>",{class:i.join(" ")}).append(r)}getSubmitButton(){const{classes:e}=this.getSettings();return this.elements.$submitButton.addClass(e.button),this.elements.$submitWrapper.attr("class",((e,t)=>this.replaceClassNameColSize(t,""))).removeClass(e.column).removeClass(e.buttons).addClass(e.buttonWrapper)}replaceClassNameColSize(e,t){return e.replace(/elementor-col-([0-9]+)/g,t)}getButton(e,t){const{classes:s}=this.getSettings(),r=this.elements.$submitButton.attr("class").match(/elementor-size-([^\W\d]+)/g),i=[s.elementorButton,r,s.button,s.button+"-"+e];return jQuery("<button>",{type:"button",text:this.getButtonLabel(e,t),class:i.join(" ")})}getButtonLabel(e,t){const s=this.getElementSettings(),r=`step_${e}_label`;return this.data.steps[t][e+"Button"]||s[r]}applyStep(e){const t="next"===e?this.state.currentStep+1:this.state.currentStep-1;if("next"===e&&!this.isFieldsValid(this.elements.$stepWrapper))return!1;this.goToStep(t),this.state.currentStep=t,"progress_bar"===this.state.stepsType?this.setProgressBar():"none"!==this.state.stepsType&&this.updateIndicatorsState(e)}goToStep(e){const{classes:t}=this.getSettings();this.elements.$stepWrapper.eq(this.state.currentStep).addClass(t.hidden),this.elements.$stepWrapper.eq(e).removeClass(t.hidden).children(this.getSettings("selectors.fieldGroup")).first().find(":input").first().trigger("focus")}isFieldsValid(e){let t=!0;return e.eq(this.state.currentStep).find(".elementor-field-group :input").each(((e,s)=>{if(!s.checkValidity())return s.reportValidity(),t=!1})),t}isLastStep(){return this.state.currentStep===this.data.steps.length-1}resetForm(){this.state.currentStep=0,this.resetSteps(),"progress_bar"===this.state.stepsType?this.setProgressBar():"none"!==this.state.stepsType&&(this.elements.$currentIndicator=this.elements.$indicators.eq(this.state.currentStep),this.resetIndicators())}resetSteps(){const{classes:e}=this.getSettings();this.elements.$stepWrapper.addClass(e.hidden).eq(0).removeClass(e.hidden)}resetIndicators(){const{classes:e}=this.getSettings(),t=["inactive","active","completed"].map((t=>e.indicator+"--state-"+t));this.elements.$indicators.removeClass(t.join(" ")).not(this.elements.$indicators.eq(0)).addClass(e.indicatorInactive),this.elements.$indicators.eq(0).addClass(e.indicatorActive)}updateIndicatorsState(e){const{classes:t}=this.getSettings(),s={current:{remove:t.indicatorActive,add:"next"===e?t.indicatorCompleted:t.indicatorInactive},next:{remove:"next"===e?t.indicatorInactive:t.indicatorCompleted,add:t.indicatorActive}};this.elements.$currentIndicator.removeClass(s.current.remove).addClass(s.current.add),this.elements.$currentIndicator=this.elements.$indicators.eq(this.state.currentStep),this.elements.$currentIndicator.removeClass(s.next.remove).addClass(s.next.add),this.data.indicatorsWithObjectTags.forEach((e=>{e.contents().children("svg").css("fill",e.css("fill"))}))}updateValue(e){const t={step_type:()=>this.updateStepsType(),step_icon_shape:()=>this.updateStepsShape(),step_next_label:()=>this.updateStepButtonsLabel("next"),step_previous_label:()=>this.updateStepButtonsLabel("previous")};t[e]&&t[e]()}updateStepsType(){const e=this.getElementSettings();this.elements.$indicatorsWrapper&&this.elements.$indicatorsWrapper.remove(),"none"!==e.step_type&&this.rebuildIndicators(),this.state.stepsType=e.step_type}rebuildIndicators(){this.elements={...this.elements,...this.createStepsIndicators()},this.initProgressBar()}updateStepsShape(){const e=this.getElementSettings(),{selectors:t,classes:s}=this.getSettings(),r=s.indicator+"--shape-",i=r+this.state.stepsShape,n=r+e.step_icon_shape;let a="";e.step_type.includes("icon")?a="icon":e.step_type.includes("number")&&(a="number"),this.elements.$indicators.children(t.indicator+"__"+a).removeClass(i).addClass(n),this.state.stepsShape=e.step_icon_shape}updateStepButtonsLabel(e){const{selectors:t}=this.getSettings(),s={previous:t.button+"-previous",next:t.button+"-next"};this.elements.$stepWrapper.each(((t,r)=>{jQuery(r).find(s[e]).text(this.getButtonLabel(e,t))}))}onFormError(){const{selectors:e}=this.getSettings(),t=this.elements.$form.find(e.formHelpInline).closest(e.stepWrapper);t.length&&this.goToStep(t.index())}onElementChange(e){this.isStepsExist()&&this.updateValue(e)}}t.default=FormSteps},9228:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class Recaptcha extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{recaptcha:".elementor-g-recaptcha:last",submit:'button[type="submit"]',recaptchaResponse:'[name="g-recaptcha-response"]'}}}getDefaultElements(){const{selectors:e}=this.getDefaultSettings(),t={$recaptcha:this.$element.find(e.recaptcha)};return t.$form=t.$recaptcha.parents("form"),t.$submit=t.$form.find(e.submit),t}bindEvents(){this.onRecaptchaApiReady()}isActive(e){const{selectors:t}=this.getDefaultSettings();return e.$element.find(t.recaptcha).length}addRecaptcha(){const e=this.elements.$recaptcha.data(),t="v3"!==e.type,s=[];s.forEach((e=>window.grecaptcha.reset(e)));const r=window.grecaptcha.render(this.elements.$recaptcha[0],e);this.elements.$form.on("reset error",(()=>{window.grecaptcha.reset(r)})),t?this.elements.$recaptcha.data("widgetId",r):(s.push(r),this.elements.$submit.on("click",(e=>this.onV3FormSubmit(e,r))))}onV3FormSubmit(e,t){e.preventDefault(),window.grecaptcha.ready((()=>{const e=this.elements.$form;grecaptcha.execute(t,{action:this.elements.$recaptcha.data("action")}).then((t=>{this.elements.$recaptchaResponse?this.elements.$recaptchaResponse.val(t):(this.elements.$recaptchaResponse=jQuery("<input>",{type:"hidden",value:t,name:"g-recaptcha-response"}),e.append(this.elements.$recaptchaResponse));(!e[0].reportValidity||"function"!=typeof e[0].reportValidity||e[0].reportValidity())&&e.trigger("submit")}))}))}onRecaptchaApiReady(){window.grecaptcha&&window.grecaptcha.render?this.addRecaptcha():setTimeout((()=>this.onRecaptchaApiReady()),350)}}t.default=Recaptcha}}]);assets/js/posts.2a35b76ad8ea8f612cd7.bundle.min.js000064400000006073150755004310015210 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[287],{8014:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(2926)).default.extend({getSkinPrefix:()=>"cards_"});t.default=i},2926:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=elementorModules.frontend.handlers.Base.extend({getSkinPrefix:()=>"classic_",bindEvents(){var e=this.getModelCID();elementorFrontend.addListenerOnce(e,"resize",this.onWindowResize)},getClosureMethodsNames(){return elementorModules.frontend.handlers.Base.prototype.getClosureMethodsNames.apply(this,arguments).concat(["fitImages","onWindowResize","runMasonry"])},getDefaultSettings:()=>({classes:{fitHeight:"elementor-fit-height",hasItemRatio:"elementor-has-item-ratio"},selectors:{postsContainer:".elementor-posts-container",post:".elementor-post",postThumbnail:".elementor-post__thumbnail",postThumbnailImage:".elementor-post__thumbnail img"}}),getDefaultElements(){var e=this.getSettings("selectors");return{$postsContainer:this.$element.find(e.postsContainer),$posts:this.$element.find(e.post)}},fitImage(e){var t=this.getSettings(),s=e.find(t.selectors.postThumbnail),n=s.find("img")[0];if(n){var i=s.outerHeight()/s.outerWidth(),o=n.naturalHeight/n.naturalWidth;s.toggleClass(t.classes.fitHeight,o<i)}},fitImages(){var e=jQuery,t=this,s=getComputedStyle(this.$element[0],":after").content,n=this.getSettings();this.elements.$postsContainer.toggleClass(n.classes.hasItemRatio,!!s.match(/\d/)),t.isMasonryEnabled()||this.elements.$posts.each((function(){var s=e(this),i=s.find(n.selectors.postThumbnailImage);t.fitImage(s),i.on("load",(function(){t.fitImage(s)}))}))},setColsCountSettings(){var e,t=elementorFrontend.getCurrentDeviceMode(),s=this.getElementSettings(),n=this.getSkinPrefix();switch(t){case"mobile":e=s[n+"columns_mobile"];break;case"tablet":e=s[n+"columns_tablet"];break;default:e=s[n+"columns"]}this.setSettings("colsCount",e)},isMasonryEnabled(){return!!this.getElementSettings(this.getSkinPrefix()+"masonry")},initMasonry(){imagesLoaded(this.elements.$posts,this.runMasonry)},runMasonry(){var e=this.elements;e.$posts.css({marginTop:"",transitionDuration:""}),this.setColsCountSettings();var t=this.getSettings("colsCount"),s=this.isMasonryEnabled()&&t>=2;if(e.$postsContainer.toggleClass("elementor-posts-masonry",s),s){var n=this.getElementSettings(this.getSkinPrefix()+"row_gap.size");""===this.getSkinPrefix()&&""===n&&(n=this.getElementSettings(this.getSkinPrefix()+"item_gap.size")),new elementorModules.utils.Masonry({container:e.$postsContainer,items:e.$posts.filter(":visible"),columnsCount:this.getSettings("colsCount"),verticalSpaceBetween:n}).run()}else e.$postsContainer.height("")},run(){setTimeout(this.fitImages,0),this.initMasonry()},onInit(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.bindEvents(),this.run()},onWindowResize(){this.fitImages(),this.runMasonry()},onElementChange(){this.fitImages(),setTimeout(this.runMasonry)}});t.default=s}}]);assets/js/progress-tracker.ad310e07a2a9063dd3ed.bundle.min.js000064400000012247150755004310017312 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[241],{9728:(e,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var s=class CircularProgress{constructor(e,r){this.settings=r,this.lastKnownProgress=null,this.circularProgressTracker=e.find(".elementor-scrolling-tracker-circular")[0],this.circularCurrentProgress=this.circularProgressTracker.getElementsByClassName("current-progress")[0],this.circularCurrentProgressPercentage=this.circularProgressTracker.getElementsByClassName("current-progress-percentage")[0];const s=2*this.circularCurrentProgress.r.baseVal.value*Math.PI;this.circularCurrentProgress.style.strokeDasharray=`${s} ${s}`,this.circularCurrentProgress.style.strokeDashoffset=s,this.elements=this.cacheElements(),this.resizeObserver=new ResizeObserver((()=>{this.lastKnownProgress&&this.updateProgress(this.lastKnownProgress)})),this.resizeObserver.observe(this.circularProgressTracker)}cacheElements(){return{circularProgressTracker:this.circularProgressTracker,circularCurrentProgress:this.circularCurrentProgress,circularCurrentProgressPercentage:this.circularCurrentProgressPercentage}}updateProgress(e){if(e<=0)return this.elements.circularCurrentProgress.style.display="none",void(this.elements.circularCurrentProgressPercentage.style.display="none");this.elements.circularCurrentProgress.style.display="block",this.elements.circularCurrentProgressPercentage.style.display="block";const r=2*this.elements.circularCurrentProgress.r.baseVal.value*Math.PI,s=r-e/100*r;this.lastKnownProgress=e,this.elements.circularCurrentProgress.style.strokeDasharray=`${r} ${r}`,this.elements.circularCurrentProgress.style.strokeDashoffset="ltr"===this.settings.direction?-s:s,"yes"===this.settings.percentage&&(this.elements.circularCurrentProgressPercentage.innerHTML=Math.round(e)+"%")}onDestroy(){this.resizeObserver.unobserve(this.circularProgressTracker)}};r.default=s},9696:(e,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var s=class LinearProgress{constructor(e,r){this.settings=r,this.linearProgressTracker=e.find(".elementor-scrolling-tracker-horizontal")[0],this.linearCurrentProgress=this.linearProgressTracker.getElementsByClassName("current-progress")[0],this.linearCurrentProgressPercentage=this.linearProgressTracker.getElementsByClassName("current-progress-percentage")[0],this.elements=this.cacheElements()}cacheElements(){return{linearProgressTracker:this.linearProgressTracker,linearCurrentProgress:this.linearCurrentProgress,linearCurrentProgressPercentage:this.linearCurrentProgressPercentage}}updateProgress(e){e<1?this.elements.linearCurrentProgress.style.display="none":(this.elements.linearCurrentProgress.style.display="flex",this.elements.linearCurrentProgress.style.width=e+"%","yes"===this.settings.percentage&&this.elements.linearCurrentProgress.getBoundingClientRect().width>1.5*this.elements.linearCurrentProgressPercentage.getBoundingClientRect().width?(this.elements.linearCurrentProgressPercentage.innerHTML=Math.round(e)+"%",this.elements.linearCurrentProgressPercentage.style.color=getComputedStyle(this.linearCurrentProgress).getPropertyValue("--percentage-color")):this.elements.linearCurrentProgressPercentage.style.color="transparent")}};r.default=s},6440:(e,r,s)=>{"use strict";var t=s(7914);Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var n=t(s(9728)),l=t(s(9696));class ProgressTracker extends elementorModules.frontend.handlers.Base{onInit(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.circular="circular"===this.getElementSettings().type;const e=this.circular?n.default:l.default;this.progressBar=new e(this.$element,this.getElementSettings()),this.progressPercentage=0,this.scrollHandler(),this.handler=this.scrollHandler.bind(this),this.initListeners()}getTrackingElementSelector(){let e;switch(this.getElementSettings().relative_to){case"selector":e=jQuery(this.getElementSettings().selector);break;case"post_content":e=jQuery(".elementor-widget-theme-post-content");break;default:e=this.isScrollSnap()?jQuery("#e-scroll-snap-container"):elementorFrontend.elements.$body}return e}isScrollSnap(){return"yes"===(this.isEdit?elementor.settings.page.model.attributes.scroll_snap:elementorFrontend.config.settings.page.scroll_snap)}addScrollSnapContainer(){this.isScrollSnap()&&!jQuery("#e-scroll-snap-container").length&&jQuery("body").wrapInner('<div id="e-scroll-snap-container" />')}scrollHandler(){this.addScrollSnapContainer();const e=this.getTrackingElementSelector(),r=e.is(elementorFrontend.elements.$body)||e.is(jQuery("#e-scroll-snap-container"))?-100:0;this.progressPercentage=elementorModules.utils.Scroll.getElementViewportPercentage(this.getTrackingElementSelector(),{start:r,end:-100}),this.progressBar.updateProgress(this.progressPercentage)}initListeners(){window.addEventListener("scroll",this.handler),elementorFrontend.elements.$body[0].addEventListener("scroll",this.handler)}onDestroy(){this.progressBar.onDestroy&&this.progressBar.onDestroy(),window.removeEventListener("scroll",this.handler),elementorFrontend.elements.$body[0].removeEventListener("scroll",this.handler)}}var i=ProgressTracker;r.default=i}}]);assets/js/slides.39da68ee3c8123589b2e.bundle.min.js000064400000007366150755004310015203 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[114],{7956:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class SlidesHandler extends elementorModules.frontend.handlers.SwiperBase{getDefaultSettings(){return{selectors:{slider:".elementor-slides-wrapper",slide:".swiper-slide",slideInnerContents:".swiper-slide-contents",activeSlide:".swiper-slide-active",activeDuplicate:".swiper-slide-duplicate-active"},classes:{animated:"animated",kenBurnsActive:"elementor-ken-burns--active",slideBackground:"swiper-slide-bg"},attributes:{dataSliderOptions:"slider_options",dataAnimation:"animation"}}}getDefaultElements(){const e=this.getSettings("selectors"),t={$swiperContainer:this.$element.find(e.slider)};return t.$slides=t.$swiperContainer.find(e.slide),t}getSwiperOptions(){const e=this.getElementSettings(),t={autoplay:this.getAutoplayConfig(),grabCursor:!0,initialSlide:this.getInitialSlide(),slidesPerView:1,slidesPerGroup:1,loop:"yes"===e.infinite,speed:e.transition_speed,effect:e.transition,observeParents:!0,observer:!0,handleElementorBreakpoints:!0,on:{slideChange:()=>{this.handleKenBurns()}}},i="arrows"===e.navigation||"both"===e.navigation,s="dots"===e.navigation||"both"===e.navigation;return i&&(t.navigation={prevEl:".elementor-swiper-button-prev",nextEl:".elementor-swiper-button-next"}),s&&(t.pagination={el:".swiper-pagination",type:"bullets",clickable:!0}),!0===t.loop&&(t.loopedSlides=this.getSlidesCount()),"fade"===t.effect&&(t.fadeEffect={crossFade:!0}),t}getAutoplayConfig(){const e=this.getElementSettings();return"yes"===e.autoplay&&{stopOnLastSlide:!0,delay:e.autoplay_speed,disableOnInteraction:"yes"===e.pause_on_interaction}}initSingleSlideAnimations(){const e=this.getSettings(),t=this.elements.$swiperContainer.data(e.attributes.dataAnimation);this.elements.$swiperContainer.find("."+e.classes.slideBackground).addClass(e.classes.kenBurnsActive),t&&this.elements.$swiperContainer.find(e.selectors.slideInnerContents).addClass(e.classes.animated+" "+t)}async initSlider(){const e=this.elements.$swiperContainer,t=this.getSettings(),i=this.getElementSettings(),s=e.data(t.attributes.dataAnimation);if(!e.length)return;if(1>=this.getSlidesCount())return;const n=elementorFrontend.utils.swiper;this.swiper=await new n(e,this.getSwiperOptions()),e.data("swiper",this.swiper),this.handleKenBurns(),i.pause_on_hover&&this.togglePauseOnHover(!0),s&&(this.swiper.on("slideChangeTransitionStart",(function(){e.find(t.selectors.slideInnerContents).removeClass(t.classes.animated+" "+s).hide()})),this.swiper.on("slideChangeTransitionEnd",(function(){e.find(t.selectors.slideInnerContents).show().addClass(t.classes.animated+" "+s)})))}onInit(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),2>this.getSlidesCount()?this.initSingleSlideAnimations():this.initSlider()}getChangeableProperties(){return{pause_on_hover:"pauseOnHover",pause_on_interaction:"disableOnInteraction",autoplay_speed:"delay",transition_speed:"speed"}}updateSwiperOption(e){if(0===e.indexOf("width"))return void this.swiper.update();const t=this.getElementSettings(),i=t[e];let s=this.getChangeableProperties()[e],n=i;switch(e){case"autoplay_speed":s="autoplay",n={delay:i,disableOnInteraction:"yes"===t.pause_on_interaction};break;case"pause_on_hover":this.togglePauseOnHover("yes"===i);break;case"pause_on_interaction":n="yes"===i}"pause_on_hover"!==e&&(this.swiper.params[s]=n),this.swiper.update()}onElementChange(e){if(1>=this.getSlidesCount())return;this.getChangeableProperties().hasOwnProperty(e)&&this.updateSwiperOption(e)}onEditSettingsChange(e){1>=this.getSlidesCount()||"activeItemIndex"===e&&this.swiper.slideToLoop(this.getEditSettings("activeItemIndex")-1)}}t.default=SlidesHandler}}]);assets/js/preview.min.js000064400000107770150755004310011277 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(()=>{var t={38401:(t,e,r)=>{t.exports=r(14710)},67394:(t,e,r)=>{t.exports=r(43153)},82055:(t,e,r)=>{t.exports=r(58535)},28274:(t,e,r)=>{t.exports=r(65135)},75499:(t,e,r)=>{t.exports=r(43094)},41281:(t,e,r)=>{t.exports=r(19103)},50093:(t,e,r)=>{t.exports=r(39871)},38852:t=>{t.exports=function _assertThisInitialized(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t},t.exports.default=t.exports,t.exports.__esModule=!0},11959:t=>{t.exports=function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.default=t.exports,t.exports.__esModule=!0},39041:(t,e,r)=>{var n=r(67394);function _defineProperties(t,e){for(var r=0;r<e.length;r++){var o=e[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),n(t,o.key,o)}}t.exports=function _createClass(t,e,r){return e&&_defineProperties(t.prototype,e),r&&_defineProperties(t,r),t},t.exports.default=t.exports,t.exports.__esModule=!0},68537:(t,e,r)=>{var n=r(75499),o=r(44263),i=r(898),u=r(59771);t.exports=function _createSuper(t){var e=i();return function _createSuperInternal(){var r,i=o(t);if(e){var c=o(this).constructor;r=n(i,arguments,c)}else r=i.apply(this,arguments);return u(this,r)}},t.exports.default=t.exports,t.exports.__esModule=!0},44263:(t,e,r)=>{var n=r(28274),o=r(82055);function _getPrototypeOf(e){return t.exports=_getPrototypeOf=n?o:function _getPrototypeOf(t){return t.__proto__||o(t)},t.exports.default=t.exports,t.exports.__esModule=!0,_getPrototypeOf(e)}t.exports=_getPrototypeOf,t.exports.default=t.exports,t.exports.__esModule=!0},77371:(t,e,r)=>{var n=r(38401),o=r(76870);t.exports=function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=n(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)},t.exports.default=t.exports,t.exports.__esModule=!0},67971:t=>{t.exports=function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}},t.exports.default=t.exports,t.exports.__esModule=!0},898:(t,e,r)=>{var n=r(75499);t.exports=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!n)return!1;if(n.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(n(Boolean,[],(function(){}))),!0}catch(t){return!1}},t.exports.default=t.exports,t.exports.__esModule=!0},59771:(t,e,r)=>{var n=r(24596).default,o=r(38852);t.exports=function _possibleConstructorReturn(t,e){return!e||"object"!==n(e)&&"function"!=typeof e?o(t):e},t.exports.default=t.exports,t.exports.__esModule=!0},76870:(t,e,r)=>{var n=r(28274);function _setPrototypeOf(e,r){return t.exports=_setPrototypeOf=n||function _setPrototypeOf(t,e){return t.__proto__=e,t},t.exports.default=t.exports,t.exports.__esModule=!0,_setPrototypeOf(e,r)}t.exports=_setPrototypeOf,t.exports.default=t.exports,t.exports.__esModule=!0},24596:(t,e,r)=>{var n=r(41281),o=r(50093);function _typeof(e){return"function"==typeof n&&"symbol"==typeof o?(t.exports=_typeof=function _typeof(t){return typeof t},t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=_typeof=function _typeof(t){return t&&"function"==typeof n&&t.constructor===n&&t!==n.prototype?"symbol":typeof t},t.exports.default=t.exports,t.exports.__esModule=!0),_typeof(e)}t.exports=_typeof,t.exports.default=t.exports,t.exports.__esModule=!0},49021:(t,e,r)=>{"use strict";var n=r(67394),o=r(67971);n(e,"__esModule",{value:!0}),e.default=void 0,r(6632),r(76139),r(2235);var i=o(r(11959)),u=o(r(39041)),c=o(r(77371)),s=o(r(68537)),a=function(t){(0,c.default)(Preview,t);var e=(0,s.default)(Preview);function Preview(){var t;return(0,i.default)(this,Preview),t=e.call(this),elementorFrontend.on("components:init",(function(){return t.onFrontendComponentsInit()})),t}return(0,u.default)(Preview,[{key:"createDocumentsHandles",value:function createDocumentsHandles(){var t=this;jQuery.each(elementorFrontend.documentsManager.documents,(function(e,r){var n=r.$element;if(!n.hasClass("elementor-edit-mode")&&!r.$element.children(".elementor-document-handle").length){var o=jQuery("<div>",{class:"elementor-document-handle"}),i=jQuery("<i>",{class:"eicon-edit"}),u=n.data("elementor-title"),c=jQuery("<div>",{class:"elementor-document-handle__title"}).text(elementorPro.translate("edit_element",[u]));o.append(i,c),o.on("click",(function(){return t.onDocumentHandleClick(r)})),n.prepend(o)}}))}},{key:"onDocumentHandleClick",value:function onDocumentHandleClick(t){elementorCommon.api.internal("panel/state-loading"),elementorCommon.api.run("editor/documents/switch",{id:t.getSettings("id")}).finally((function(){return elementorCommon.api.internal("panel/state-ready")}))}},{key:"onFrontendComponentsInit",value:function onFrontendComponentsInit(){var t=this;this.createDocumentsHandles(),elementor.on("document:loaded",(function(){return t.createDocumentsHandles()}))}}]),Preview}(elementorModules.ViewModule);e.default=a,window.elementorProPreview=new a},14710:(t,e,r)=>{r(30785);var n=r(47208).Object;t.exports=function create(t,e){return n.create(t,e)}},43153:(t,e,r)=>{r(40168);var n=r(47208).Object;t.exports=function defineProperty(t,e,r){return n.defineProperty(t,e,r)}},58535:(t,e,r)=>{r(4840),t.exports=r(47208).Object.getPrototypeOf},65135:(t,e,r)=>{r(13890),t.exports=r(47208).Object.setPrototypeOf},43094:(t,e,r)=>{r(11320),t.exports=r(47208).Reflect.construct},19103:(t,e,r)=>{r(54370),r(70285),r(87573),r(97224),t.exports=r(47208).Symbol},39871:(t,e,r)=>{r(99572),r(74114),t.exports=r(7273).f("iterator")},26610:t=>{t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},29697:t=>{t.exports=function(){}},30498:(t,e,r)=>{var n=r(39632);t.exports=function(t){if(!n(t))throw TypeError(t+" is not an object!");return t}},69191:(t,e,r)=>{var n=r(1504),o=r(37154),i=r(46723);t.exports=function(t){return function(e,r,u){var c,s=n(e),a=o(s.length),f=i(u,a);if(t&&r!=r){for(;a>f;)if((c=s[f++])!=c)return!0}else for(;a>f;f++)if((t||f in s)&&s[f]===r)return t||f||0;return!t&&-1}}},45515:(t,e,r)=>{"use strict";var n=r(26610),o=r(39632),i=r(19897),u=[].slice,c={},construct=function(t,e,r){if(!(e in c)){for(var n=[],o=0;o<e;o++)n[o]="a["+o+"]";c[e]=Function("F,a","return new F("+n.join(",")+")")}return c[e](t,r)};t.exports=Function.bind||function bind(t){var e=n(this),r=u.call(arguments,1),bound=function(){var n=r.concat(u.call(arguments));return this instanceof bound?construct(e,n.length,n):i(e,n,t)};return o(e.prototype)&&(bound.prototype=e.prototype),bound}},41352:t=>{var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},47208:t=>{var e=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=e)},61725:(t,e,r)=>{var n=r(26610);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,o){return t.call(e,r,n,o)}}return function(){return t.apply(e,arguments)}}},18239:t=>{t.exports=function(t){if(null==t)throw TypeError("Can't call method on  "+t);return t}},75179:(t,e,r)=>{t.exports=!r(90472)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},48765:(t,e,r)=>{var n=r(39632),o=r(43280).document,i=n(o)&&n(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},31986:t=>{t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},42266:(t,e,r)=>{var n=r(86425),o=r(97739),i=r(67410);t.exports=function(t){var e=n(t),r=o.f;if(r)for(var u,c=r(t),s=i.f,a=0;c.length>a;)s.call(t,u=c[a++])&&e.push(u);return e}},98310:(t,e,r)=>{var n=r(43280),o=r(47208),i=r(61725),u=r(62292),c=r(20657),$export=function(t,e,r){var s,a,f,p=t&$export.F,l=t&$export.G,v=t&$export.S,y=t&$export.P,h=t&$export.B,d=t&$export.W,x=l?o:o[e]||(o[e]={}),m=x.prototype,_=l?n:v?n[e]:(n[e]||{}).prototype;for(s in l&&(r=e),r)(a=!p&&_&&void 0!==_[s])&&c(x,s)||(f=a?_[s]:r[s],x[s]=l&&"function"!=typeof _[s]?r[s]:h&&a?i(f,n):d&&_[s]==f?function(t){var F=function(e,r,n){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,r)}return new t(e,r,n)}return t.apply(this,arguments)};return F.prototype=t.prototype,F}(f):y&&"function"==typeof f?i(Function.call,f):f,y&&((x.virtual||(x.virtual={}))[s]=f,t&$export.R&&m&&!m[s]&&u(m,s,f)))};$export.F=1,$export.G=2,$export.S=4,$export.P=8,$export.B=16,$export.W=32,$export.U=64,$export.R=128,t.exports=$export},90472:t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},43280:t=>{var e=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},20657:t=>{var e={}.hasOwnProperty;t.exports=function(t,r){return e.call(t,r)}},62292:(t,e,r)=>{var n=r(60510),o=r(48439);t.exports=r(75179)?function(t,e,r){return n.f(t,e,o(1,r))}:function(t,e,r){return t[e]=r,t}},92477:(t,e,r)=>{var n=r(43280).document;t.exports=n&&n.documentElement},64457:(t,e,r)=>{t.exports=!r(75179)&&!r(90472)((function(){return 7!=Object.defineProperty(r(48765)("div"),"a",{get:function(){return 7}}).a}))},19897:t=>{t.exports=function(t,e,r){var n=void 0===r;switch(e.length){case 0:return n?t():t.call(r);case 1:return n?t(e[0]):t.call(r,e[0]);case 2:return n?t(e[0],e[1]):t.call(r,e[0],e[1]);case 3:return n?t(e[0],e[1],e[2]):t.call(r,e[0],e[1],e[2]);case 4:return n?t(e[0],e[1],e[2],e[3]):t.call(r,e[0],e[1],e[2],e[3])}return t.apply(r,e)}},13115:(t,e,r)=>{var n=r(41352);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==n(t)?t.split(""):Object(t)}},7359:(t,e,r)=>{var n=r(41352);t.exports=Array.isArray||function isArray(t){return"Array"==n(t)}},39632:t=>{t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},19802:(t,e,r)=>{"use strict";var n=r(82488),o=r(48439),i=r(2413),u={};r(62292)(u,r(24300)("iterator"),(function(){return this})),t.exports=function(t,e,r){t.prototype=n(u,{next:o(1,r)}),i(t,e+" Iterator")}},6125:(t,e,r)=>{"use strict";var n=r(36794),o=r(98310),i=r(19312),u=r(62292),c=r(79105),s=r(19802),a=r(2413),f=r(999),p=r(24300)("iterator"),l=!([].keys&&"next"in[].keys()),v="keys",y="values",returnThis=function(){return this};t.exports=function(t,e,r,h,d,x,m){s(r,e,h);var _,g,b,getMethod=function(t){if(!l&&t in S)return S[t];switch(t){case v:return function keys(){return new r(this,t)};case y:return function values(){return new r(this,t)}}return function entries(){return new r(this,t)}},w=e+" Iterator",O=d==y,P=!1,S=t.prototype,j=S[p]||S["@@iterator"]||d&&S[d],M=j||getMethod(d),E=d?O?getMethod("entries"):M:void 0,T="Array"==e&&S.entries||j;if(T&&(b=f(T.call(new t)))!==Object.prototype&&b.next&&(a(b,w,!0),n||"function"==typeof b[p]||u(b,p,returnThis)),O&&j&&j.name!==y&&(P=!0,M=function values(){return j.call(this)}),n&&!m||!l&&!P&&S[p]||u(S,p,M),c[e]=M,c[w]=returnThis,d)if(_={values:O?M:getMethod(y),keys:x?M:getMethod(v),entries:E},m)for(g in _)g in S||i(S,g,_[g]);else o(o.P+o.F*(l||P),e,_);return _}},9329:t=>{t.exports=function(t,e){return{value:e,done:!!t}}},79105:t=>{t.exports={}},36794:t=>{t.exports=!0},6758:(t,e,r)=>{var n=r(54251)("meta"),o=r(39632),i=r(20657),u=r(60510).f,c=0,s=Object.isExtensible||function(){return!0},a=!r(90472)((function(){return s(Object.preventExtensions({}))})),setMeta=function(t){u(t,n,{value:{i:"O"+ ++c,w:{}}})},f=t.exports={KEY:n,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,n)){if(!s(t))return"F";if(!e)return"E";setMeta(t)}return t[n].i},getWeak:function(t,e){if(!i(t,n)){if(!s(t))return!0;if(!e)return!1;setMeta(t)}return t[n].w},onFreeze:function(t){return a&&f.NEED&&s(t)&&!i(t,n)&&setMeta(t),t}}},82488:(t,e,r)=>{var n=r(30498),o=r(36607),i=r(31986),u=r(18478)("IE_PROTO"),Empty=function(){},createDict=function(){var t,e=r(48765)("iframe"),n=i.length;for(e.style.display="none",r(92477).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),createDict=t.F;n--;)delete createDict.prototype[i[n]];return createDict()};t.exports=Object.create||function create(t,e){var r;return null!==t?(Empty.prototype=n(t),r=new Empty,Empty.prototype=null,r[u]=t):r=createDict(),void 0===e?r:o(r,e)}},60510:(t,e,r)=>{var n=r(30498),o=r(64457),i=r(12737),u=Object.defineProperty;e.f=r(75179)?Object.defineProperty:function defineProperty(t,e,r){if(n(t),e=i(e,!0),n(r),o)try{return u(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[e]=r.value),t}},36607:(t,e,r)=>{var n=r(60510),o=r(30498),i=r(86425);t.exports=r(75179)?Object.defineProperties:function defineProperties(t,e){o(t);for(var r,u=i(e),c=u.length,s=0;c>s;)n.f(t,r=u[s++],e[r]);return t}},83264:(t,e,r)=>{var n=r(67410),o=r(48439),i=r(1504),u=r(12737),c=r(20657),s=r(64457),a=Object.getOwnPropertyDescriptor;e.f=r(75179)?a:function getOwnPropertyDescriptor(t,e){if(t=i(t),e=u(e,!0),s)try{return a(t,e)}catch(t){}if(c(t,e))return o(!n.f.call(t,e),t[e])}},26084:(t,e,r)=>{var n=r(1504),o=r(8772).f,i={}.toString,u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function getOwnPropertyNames(t){return u&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(t){return u.slice()}}(t):o(n(t))}},8772:(t,e,r)=>{var n=r(65326),o=r(31986).concat("length","prototype");e.f=Object.getOwnPropertyNames||function getOwnPropertyNames(t){return n(t,o)}},97739:(t,e)=>{e.f=Object.getOwnPropertySymbols},999:(t,e,r)=>{var n=r(20657),o=r(60061),i=r(18478)("IE_PROTO"),u=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),n(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},65326:(t,e,r)=>{var n=r(20657),o=r(1504),i=r(69191)(!1),u=r(18478)("IE_PROTO");t.exports=function(t,e){var r,c=o(t),s=0,a=[];for(r in c)r!=u&&n(c,r)&&a.push(r);for(;e.length>s;)n(c,r=e[s++])&&(~i(a,r)||a.push(r));return a}},86425:(t,e,r)=>{var n=r(65326),o=r(31986);t.exports=Object.keys||function keys(t){return n(t,o)}},67410:(t,e)=>{e.f={}.propertyIsEnumerable},57972:(t,e,r)=>{var n=r(98310),o=r(47208),i=r(90472);t.exports=function(t,e){var r=(o.Object||{})[t]||Object[t],u={};u[t]=e(r),n(n.S+n.F*i((function(){r(1)})),"Object",u)}},48439:t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},19312:(t,e,r)=>{t.exports=r(62292)},25574:(t,e,r)=>{var n=r(39632),o=r(30498),check=function(t,e){if(o(t),!n(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,n){try{(n=r(61725)(Function.call,r(83264).f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function setPrototypeOf(t,r){return check(t,r),e?t.__proto__=r:n(t,r),t}}({},!1):void 0),check}},2413:(t,e,r)=>{var n=r(60510).f,o=r(20657),i=r(24300)("toStringTag");t.exports=function(t,e,r){t&&!o(t=r?t:t.prototype,i)&&n(t,i,{configurable:!0,value:e})}},18478:(t,e,r)=>{var n=r(29990)("keys"),o=r(54251);t.exports=function(t){return n[t]||(n[t]=o(t))}},29990:(t,e,r)=>{var n=r(47208),o=r(43280),i="__core-js_shared__",u=o[i]||(o[i]={});(t.exports=function(t,e){return u[t]||(u[t]=void 0!==e?e:{})})("versions",[]).push({version:n.version,mode:r(36794)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},78502:(t,e,r)=>{var n=r(58290),o=r(18239);t.exports=function(t){return function(e,r){var i,u,c=String(o(e)),s=n(r),a=c.length;return s<0||s>=a?t?"":void 0:(i=c.charCodeAt(s))<55296||i>56319||s+1===a||(u=c.charCodeAt(s+1))<56320||u>57343?t?c.charAt(s):i:t?c.slice(s,s+2):u-56320+(i-55296<<10)+65536}}},46723:(t,e,r)=>{var n=r(58290),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=n(t))<0?o(t+e,0):i(t,e)}},58290:t=>{var e=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:e)(t)}},1504:(t,e,r)=>{var n=r(13115),o=r(18239);t.exports=function(t){return n(o(t))}},37154:(t,e,r)=>{var n=r(58290),o=Math.min;t.exports=function(t){return t>0?o(n(t),9007199254740991):0}},60061:(t,e,r)=>{var n=r(18239);t.exports=function(t){return Object(n(t))}},12737:(t,e,r)=>{var n=r(39632);t.exports=function(t,e){if(!n(t))return t;var r,o;if(e&&"function"==typeof(r=t.toString)&&!n(o=r.call(t)))return o;if("function"==typeof(r=t.valueOf)&&!n(o=r.call(t)))return o;if(!e&&"function"==typeof(r=t.toString)&&!n(o=r.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},54251:t=>{var e=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++e+r).toString(36))}},31164:(t,e,r)=>{var n=r(43280),o=r(47208),i=r(36794),u=r(7273),c=r(60510).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:n.Symbol||{});"_"==t.charAt(0)||t in e||c(e,t,{value:u.f(t)})}},7273:(t,e,r)=>{e.f=r(24300)},24300:(t,e,r)=>{var n=r(29990)("wks"),o=r(54251),i=r(43280).Symbol,u="function"==typeof i;(t.exports=function(t){return n[t]||(n[t]=u&&i[t]||(u?i:o)("Symbol."+t))}).store=n},84411:(t,e,r)=>{"use strict";var n=r(29697),o=r(9329),i=r(79105),u=r(1504);t.exports=r(6125)(Array,"Array",(function(t,e){this._t=u(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?r:"values"==e?t[r]:[r,t[r]])}),"values"),i.Arguments=i.Array,n("keys"),n("values"),n("entries")},30785:(t,e,r)=>{var n=r(98310);n(n.S,"Object",{create:r(82488)})},40168:(t,e,r)=>{var n=r(98310);n(n.S+n.F*!r(75179),"Object",{defineProperty:r(60510).f})},4840:(t,e,r)=>{var n=r(60061),o=r(999);r(57972)("getPrototypeOf",(function(){return function getPrototypeOf(t){return o(n(t))}}))},13890:(t,e,r)=>{var n=r(98310);n(n.S,"Object",{setPrototypeOf:r(25574).set})},70285:()=>{},11320:(t,e,r)=>{var n=r(98310),o=r(82488),i=r(26610),u=r(30498),c=r(39632),s=r(90472),a=r(45515),f=(r(43280).Reflect||{}).construct,p=s((function(){function F(){}return!(f((function(){}),[],F)instanceof F)})),l=!s((function(){f((function(){}))}));n(n.S+n.F*(p||l),"Reflect",{construct:function construct(t,e){i(t),u(e);var r=arguments.length<3?t:i(arguments[2]);if(l&&!p)return f(t,e,r);if(t==r){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var n=[null];return n.push.apply(n,e),new(a.apply(t,n))}var s=r.prototype,v=o(c(s)?s:Object.prototype),y=Function.apply.call(t,v,e);return c(y)?y:v}})},99572:(t,e,r)=>{"use strict";var n=r(78502)(!0);r(6125)(String,"String",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,r=this._i;return r>=e.length?{value:void 0,done:!0}:(t=n(e,r),this._i+=t.length,{value:t,done:!1})}))},54370:(t,e,r)=>{"use strict";var n=r(43280),o=r(20657),i=r(75179),u=r(98310),c=r(19312),s=r(6758).KEY,a=r(90472),f=r(29990),p=r(2413),l=r(54251),v=r(24300),y=r(7273),h=r(31164),d=r(42266),x=r(7359),m=r(30498),_=r(39632),g=r(60061),b=r(1504),w=r(12737),O=r(48439),P=r(82488),S=r(26084),j=r(83264),M=r(97739),E=r(60510),T=r(86425),k=j.f,C=E.f,L=S.f,A=n.Symbol,N=n.JSON,I=N&&N.stringify,R=v("_hidden"),D=v("toPrimitive"),G={}.propertyIsEnumerable,H=f("symbol-registry"),B=f("symbols"),W=f("op-symbols"),V=Object.prototype,z="function"==typeof A&&!!M.f,U=n.QObject,K=!U||!U.prototype||!U.prototype.findChild,Q=i&&a((function(){return 7!=P(C({},"a",{get:function(){return C(this,"a",{value:7}).a}})).a}))?function(t,e,r){var n=k(V,e);n&&delete V[e],C(t,e,r),n&&t!==V&&C(V,e,n)}:C,wrap=function(t){var e=B[t]=P(A.prototype);return e._k=t,e},q=z&&"symbol"==typeof A.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof A},J=function defineProperty(t,e,r){return t===V&&J(W,e,r),m(t),e=w(e,!0),m(r),o(B,e)?(r.enumerable?(o(t,R)&&t[R][e]&&(t[R][e]=!1),r=P(r,{enumerable:O(0,!1)})):(o(t,R)||C(t,R,O(1,{})),t[R][e]=!0),Q(t,e,r)):C(t,e,r)},Y=function defineProperties(t,e){m(t);for(var r,n=d(e=b(e)),o=0,i=n.length;i>o;)J(t,r=n[o++],e[r]);return t},$=function propertyIsEnumerable(t){var e=G.call(this,t=w(t,!0));return!(this===V&&o(B,t)&&!o(W,t))&&(!(e||!o(this,t)||!o(B,t)||o(this,R)&&this[R][t])||e)},X=function getOwnPropertyDescriptor(t,e){if(t=b(t),e=w(e,!0),t!==V||!o(B,e)||o(W,e)){var r=k(t,e);return!r||!o(B,e)||o(t,R)&&t[R][e]||(r.enumerable=!0),r}},Z=function getOwnPropertyNames(t){for(var e,r=L(b(t)),n=[],i=0;r.length>i;)o(B,e=r[i++])||e==R||e==s||n.push(e);return n},tt=function getOwnPropertySymbols(t){for(var e,r=t===V,n=L(r?W:b(t)),i=[],u=0;n.length>u;)!o(B,e=n[u++])||r&&!o(V,e)||i.push(B[e]);return i};z||(c((A=function Symbol(){if(this instanceof A)throw TypeError("Symbol is not a constructor!");var t=l(arguments.length>0?arguments[0]:void 0),$set=function(e){this===V&&$set.call(W,e),o(this,R)&&o(this[R],t)&&(this[R][t]=!1),Q(this,t,O(1,e))};return i&&K&&Q(V,t,{configurable:!0,set:$set}),wrap(t)}).prototype,"toString",(function toString(){return this._k})),j.f=X,E.f=J,r(8772).f=S.f=Z,r(67410).f=$,M.f=tt,i&&!r(36794)&&c(V,"propertyIsEnumerable",$,!0),y.f=function(t){return wrap(v(t))}),u(u.G+u.W+u.F*!z,{Symbol:A});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),rt=0;et.length>rt;)v(et[rt++]);for(var nt=T(v.store),ot=0;nt.length>ot;)h(nt[ot++]);u(u.S+u.F*!z,"Symbol",{for:function(t){return o(H,t+="")?H[t]:H[t]=A(t)},keyFor:function keyFor(t){if(!q(t))throw TypeError(t+" is not a symbol!");for(var e in H)if(H[e]===t)return e},useSetter:function(){K=!0},useSimple:function(){K=!1}}),u(u.S+u.F*!z,"Object",{create:function create(t,e){return void 0===e?P(t):Y(P(t),e)},defineProperty:J,defineProperties:Y,getOwnPropertyDescriptor:X,getOwnPropertyNames:Z,getOwnPropertySymbols:tt});var it=a((function(){M.f(1)}));u(u.S+u.F*it,"Object",{getOwnPropertySymbols:function getOwnPropertySymbols(t){return M.f(g(t))}}),N&&u(u.S+u.F*(!z||a((function(){var t=A();return"[null]"!=I([t])||"{}"!=I({a:t})||"{}"!=I(Object(t))}))),"JSON",{stringify:function stringify(t){for(var e,r,n=[t],o=1;arguments.length>o;)n.push(arguments[o++]);if(r=e=n[1],(_(e)||void 0!==t)&&!q(t))return x(e)||(e=function(t,e){if("function"==typeof r&&(e=r.call(this,t,e)),!q(e))return e}),n[1]=e,I.apply(N,n)}}),A.prototype[D]||r(62292)(A.prototype,D,A.prototype.valueOf),p(A,"Symbol"),p(Math,"Math",!0),p(n.JSON,"JSON",!0)},87573:(t,e,r)=>{r(31164)("asyncIterator")},97224:(t,e,r)=>{r(31164)("observable")},74114:(t,e,r)=>{r(84411);for(var n=r(43280),o=r(62292),i=r(79105),u=r(24300)("toStringTag"),c="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),s=0;s<c.length;s++){var a=c[s],f=n[a],p=f&&f.prototype;p&&!p[u]&&o(p,u,a),i[a]=i.Array}},22761:t=>{t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},35824:t=>{t.exports=function(t,e,r,n){if(!(t instanceof e)||void 0!==n&&n in t)throw TypeError(r+": incorrect invocation!");return t}},6365:(t,e,r)=>{var n=r(67334);t.exports=function(t){if(!n(t))throw TypeError(t+" is not an object!");return t}},20106:(t,e,r)=>{var n=r(26688),o=r(62190)("toStringTag"),i="Arguments"==n(function(){return arguments}());t.exports=function(t){var e,r,u;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?r:i?n(e):"Object"==(u=n(e))&&"function"==typeof e.callee?"Arguments":u}},26688:t=>{var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},60066:t=>{var e=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=e)},11528:(t,e,r)=>{var n=r(22761);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,o){return t.call(e,r,n,o)}}return function(){return t.apply(e,arguments)}}},36628:(t,e,r)=>{t.exports=!r(48625)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},5050:(t,e,r)=>{var n=r(67334),o=r(38113).document,i=n(o)&&n(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},65772:(t,e,r)=>{var n=r(38113),o=r(60066),i=r(74216),u=r(17738),c=r(11528),$export=function(t,e,r){var s,a,f,p,l=t&$export.F,v=t&$export.G,y=t&$export.S,h=t&$export.P,d=t&$export.B,x=v?n:y?n[e]||(n[e]={}):(n[e]||{}).prototype,m=v?o:o[e]||(o[e]={}),_=m.prototype||(m.prototype={});for(s in v&&(r=e),r)f=((a=!l&&x&&void 0!==x[s])?x:r)[s],p=d&&a?c(f,n):h&&"function"==typeof f?c(Function.call,f):f,x&&u(x,s,f,t&$export.U),m[s]!=f&&i(m,s,p),h&&_[s]!=f&&(_[s]=f)};n.core=o,$export.F=1,$export.G=2,$export.S=4,$export.P=8,$export.B=16,$export.W=32,$export.U=64,$export.R=128,t.exports=$export},48625:t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},91891:(t,e,r)=>{var n=r(11528),o=r(33221),i=r(28908),u=r(6365),c=r(26078),s=r(7107),a={},f={},p=t.exports=function(t,e,r,p,l){var v,y,h,d,x=l?function(){return t}:s(t),m=n(r,p,e?2:1),_=0;if("function"!=typeof x)throw TypeError(t+" is not iterable!");if(i(x)){for(v=c(t.length);v>_;_++)if((d=e?m(u(y=t[_])[0],y[1]):m(t[_]))===a||d===f)return d}else for(h=x.call(t);!(y=h.next()).done;)if((d=o(h,m,y.value,e))===a||d===f)return d};p.BREAK=a,p.RETURN=f},20646:(t,e,r)=>{t.exports=r(8655)("native-function-to-string",Function.toString)},38113:t=>{var e=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},54040:t=>{var e={}.hasOwnProperty;t.exports=function(t,r){return e.call(t,r)}},74216:(t,e,r)=>{var n=r(98558),o=r(36061);t.exports=r(36628)?function(t,e,r){return n.f(t,e,o(1,r))}:function(t,e,r){return t[e]=r,t}},8954:(t,e,r)=>{var n=r(38113).document;t.exports=n&&n.documentElement},5100:(t,e,r)=>{t.exports=!r(36628)&&!r(48625)((function(){return 7!=Object.defineProperty(r(5050)("div"),"a",{get:function(){return 7}}).a}))},97757:t=>{t.exports=function(t,e,r){var n=void 0===r;switch(e.length){case 0:return n?t():t.call(r);case 1:return n?t(e[0]):t.call(r,e[0]);case 2:return n?t(e[0],e[1]):t.call(r,e[0],e[1]);case 3:return n?t(e[0],e[1],e[2]):t.call(r,e[0],e[1],e[2]);case 4:return n?t(e[0],e[1],e[2],e[3]):t.call(r,e[0],e[1],e[2],e[3])}return t.apply(r,e)}},28908:(t,e,r)=>{var n=r(23988),o=r(62190)("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(n.Array===t||i[o]===t)}},67334:t=>{t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},33221:(t,e,r)=>{var n=r(6365);t.exports=function(t,e,r,o){try{return o?e(n(r)[0],r[1]):e(r)}catch(e){var i=t.return;throw void 0!==i&&n(i.call(t)),e}}},73143:(t,e,r)=>{var n=r(62190)("iterator"),o=!1;try{var i=[7][n]();i.return=function(){o=!0},Array.from(i,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var r=!1;try{var i=[7],u=i[n]();u.next=function(){return{done:r=!0}},i[n]=function(){return u},t(i)}catch(t){}return r}},23988:t=>{t.exports={}},81422:t=>{t.exports=!1},63492:(t,e,r)=>{var n=r(38113),o=r(59124).set,i=n.MutationObserver||n.WebKitMutationObserver,u=n.process,c=n.Promise,s="process"==r(26688)(u);t.exports=function(){var t,e,r,flush=function(){var n,o;for(s&&(n=u.domain)&&n.exit();t;){o=t.fn,t=t.next;try{o()}catch(n){throw t?r():e=void 0,n}}e=void 0,n&&n.enter()};if(s)r=function(){u.nextTick(flush)};else if(!i||n.navigator&&n.navigator.standalone)if(c&&c.resolve){var a=c.resolve(void 0);r=function(){a.then(flush)}}else r=function(){o.call(n,flush)};else{var f=!0,p=document.createTextNode("");new i(flush).observe(p,{characterData:!0}),r=function(){p.data=f=!f}}return function(n){var o={fn:n,next:void 0};e&&(e.next=o),t||(t=o,r()),e=o}}},58577:(t,e,r)=>{"use strict";var n=r(22761);function PromiseCapability(t){var e,r;this.promise=new t((function(t,n){if(void 0!==e||void 0!==r)throw TypeError("Bad Promise constructor");e=t,r=n})),this.resolve=n(e),this.reject=n(r)}t.exports.f=function(t){return new PromiseCapability(t)}},98558:(t,e,r)=>{var n=r(6365),o=r(5100),i=r(31382),u=Object.defineProperty;e.f=r(36628)?Object.defineProperty:function defineProperty(t,e,r){if(n(t),e=i(e,!0),n(r),o)try{return u(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[e]=r.value),t}},99739:t=>{t.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},2070:(t,e,r)=>{var n=r(6365),o=r(67334),i=r(58577);t.exports=function(t,e){if(n(t),o(e)&&e.constructor===t)return e;var r=i.f(t);return(0,r.resolve)(e),r.promise}},36061:t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},72243:(t,e,r)=>{var n=r(17738);t.exports=function(t,e,r){for(var o in e)n(t,o,e[o],r);return t}},17738:(t,e,r)=>{var n=r(38113),o=r(74216),i=r(54040),u=r(25078)("src"),c=r(20646),s="toString",a=(""+c).split(s);r(60066).inspectSource=function(t){return c.call(t)},(t.exports=function(t,e,r,c){var s="function"==typeof r;s&&(i(r,"name")||o(r,"name",e)),t[e]!==r&&(s&&(i(r,u)||o(r,u,t[e]?""+t[e]:a.join(String(e)))),t===n?t[e]=r:c?t[e]?t[e]=r:o(t,e,r):(delete t[e],o(t,e,r)))})(Function.prototype,s,(function toString(){return"function"==typeof this&&this[u]||c.call(this)}))},49766:(t,e,r)=>{"use strict";var n=r(38113),o=r(98558),i=r(36628),u=r(62190)("species");t.exports=function(t){var e=n[t];i&&e&&!e[u]&&o.f(e,u,{configurable:!0,get:function(){return this}})}},55727:(t,e,r)=>{var n=r(98558).f,o=r(54040),i=r(62190)("toStringTag");t.exports=function(t,e,r){t&&!o(t=r?t:t.prototype,i)&&n(t,i,{configurable:!0,value:e})}},8655:(t,e,r)=>{var n=r(60066),o=r(38113),i="__core-js_shared__",u=o[i]||(o[i]={});(t.exports=function(t,e){return u[t]||(u[t]=void 0!==e?e:{})})("versions",[]).push({version:n.version,mode:r(81422)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},11987:(t,e,r)=>{var n=r(6365),o=r(22761),i=r(62190)("species");t.exports=function(t,e){var r,u=n(t).constructor;return void 0===u||null==(r=n(u)[i])?e:o(r)}},59124:(t,e,r)=>{var n,o,i,u=r(11528),c=r(97757),s=r(8954),a=r(5050),f=r(38113),p=f.process,l=f.setImmediate,v=f.clearImmediate,y=f.MessageChannel,h=f.Dispatch,d=0,x={},m="onreadystatechange",run=function(){var t=+this;if(x.hasOwnProperty(t)){var e=x[t];delete x[t],e()}},listener=function(t){run.call(t.data)};l&&v||(l=function setImmediate(t){for(var e=[],r=1;arguments.length>r;)e.push(arguments[r++]);return x[++d]=function(){c("function"==typeof t?t:Function(t),e)},n(d),d},v=function clearImmediate(t){delete x[t]},"process"==r(26688)(p)?n=function(t){p.nextTick(u(run,t,1))}:h&&h.now?n=function(t){h.now(u(run,t,1))}:y?(i=(o=new y).port2,o.port1.onmessage=listener,n=u(i.postMessage,i,1)):f.addEventListener&&"function"==typeof postMessage&&!f.importScripts?(n=function(t){f.postMessage(t+"","*")},f.addEventListener("message",listener,!1)):n=m in a("script")?function(t){s.appendChild(a("script")).onreadystatechange=function(){s.removeChild(this),run.call(t)}}:function(t){setTimeout(u(run,t,1),0)}),t.exports={set:l,clear:v}},3338:t=>{var e=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:e)(t)}},26078:(t,e,r)=>{var n=r(3338),o=Math.min;t.exports=function(t){return t>0?o(n(t),9007199254740991):0}},31382:(t,e,r)=>{var n=r(67334);t.exports=function(t,e){if(!n(t))return t;var r,o;if(e&&"function"==typeof(r=t.toString)&&!n(o=r.call(t)))return o;if("function"==typeof(r=t.valueOf)&&!n(o=r.call(t)))return o;if(!e&&"function"==typeof(r=t.toString)&&!n(o=r.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},25078:t=>{var e=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++e+r).toString(36))}},45822:(t,e,r)=>{var n=r(38113).navigator;t.exports=n&&n.userAgent||""},62190:(t,e,r)=>{var n=r(8655)("wks"),o=r(25078),i=r(38113).Symbol,u="function"==typeof i;(t.exports=function(t){return n[t]||(n[t]=u&&i[t]||(u?i:o)("Symbol."+t))}).store=n},7107:(t,e,r)=>{var n=r(20106),o=r(62190)("iterator"),i=r(23988);t.exports=r(60066).getIteratorMethod=function(t){if(null!=t)return t[o]||t["@@iterator"]||i[n(t)]}},76139:(t,e,r)=>{"use strict";var n=r(20106),o={};o[r(62190)("toStringTag")]="z",o+""!="[object z]"&&r(17738)(Object.prototype,"toString",(function toString(){return"[object "+n(this)+"]"}),!0)},2235:(t,e,r)=>{"use strict";var n,o,i,u,c=r(81422),s=r(38113),a=r(11528),f=r(20106),p=r(65772),l=r(67334),v=r(22761),y=r(35824),h=r(91891),d=r(11987),x=r(59124).set,m=r(63492)(),_=r(58577),g=r(99739),b=r(45822),w=r(2070),O="Promise",P=s.TypeError,S=s.process,j=S&&S.versions,M=j&&j.v8||"",E=s.Promise,T="process"==f(S),empty=function(){},k=o=_.f,C=!!function(){try{var t=E.resolve(1),e=(t.constructor={})[r(62190)("species")]=function(t){t(empty,empty)};return(T||"function"==typeof PromiseRejectionEvent)&&t.then(empty)instanceof e&&0!==M.indexOf("6.6")&&-1===b.indexOf("Chrome/66")}catch(t){}}(),isThenable=function(t){var e;return!(!l(t)||"function"!=typeof(e=t.then))&&e},notify=function(t,e){if(!t._n){t._n=!0;var r=t._c;m((function(){for(var n=t._v,o=1==t._s,i=0,run=function(e){var r,i,u,c=o?e.ok:e.fail,s=e.resolve,a=e.reject,f=e.domain;try{c?(o||(2==t._h&&onHandleUnhandled(t),t._h=1),!0===c?r=n:(f&&f.enter(),r=c(n),f&&(f.exit(),u=!0)),r===e.promise?a(P("Promise-chain cycle")):(i=isThenable(r))?i.call(r,s,a):s(r)):a(n)}catch(t){f&&!u&&f.exit(),a(t)}};r.length>i;)run(r[i++]);t._c=[],t._n=!1,e&&!t._h&&onUnhandled(t)}))}},onUnhandled=function(t){x.call(s,(function(){var e,r,n,o=t._v,i=isUnhandled(t);if(i&&(e=g((function(){T?S.emit("unhandledRejection",o,t):(r=s.onunhandledrejection)?r({promise:t,reason:o}):(n=s.console)&&n.error&&n.error("Unhandled promise rejection",o)})),t._h=T||isUnhandled(t)?2:1),t._a=void 0,i&&e.e)throw e.v}))},isUnhandled=function(t){return 1!==t._h&&0===(t._a||t._c).length},onHandleUnhandled=function(t){x.call(s,(function(){var e;T?S.emit("rejectionHandled",t):(e=s.onrejectionhandled)&&e({promise:t,reason:t._v})}))},$reject=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),notify(e,!0))},$resolve=function(t){var e,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===t)throw P("Promise can't be resolved itself");(e=isThenable(t))?m((function(){var n={_w:r,_d:!1};try{e.call(t,a($resolve,n,1),a($reject,n,1))}catch(t){$reject.call(n,t)}})):(r._v=t,r._s=1,notify(r,!1))}catch(t){$reject.call({_w:r,_d:!1},t)}}};C||(E=function Promise(t){y(this,E,O,"_h"),v(t),n.call(this);try{t(a($resolve,this,1),a($reject,this,1))}catch(t){$reject.call(this,t)}},(n=function Promise(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=r(72243)(E.prototype,{then:function then(t,e){var r=k(d(this,E));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=T?S.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&notify(this,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),i=function(){var t=new n;this.promise=t,this.resolve=a($resolve,t,1),this.reject=a($reject,t,1)},_.f=k=function(t){return t===E||t===u?new i(t):o(t)}),p(p.G+p.W+p.F*!C,{Promise:E}),r(55727)(E,O),r(49766)(O),u=r(60066).Promise,p(p.S+p.F*!C,O,{reject:function reject(t){var e=k(this);return(0,e.reject)(t),e.promise}}),p(p.S+p.F*(c||!C),O,{resolve:function resolve(t){return w(c&&this===u?E:this,t)}}),p(p.S+p.F*!(C&&r(73143)((function(t){E.all(t).catch(empty)}))),O,{all:function all(t){var e=this,r=k(e),n=r.resolve,o=r.reject,i=g((function(){var r=[],i=0,u=1;h(t,!1,(function(t){var c=i++,s=!1;r.push(void 0),u++,e.resolve(t).then((function(t){s||(s=!0,r[c]=t,--u||n(r))}),o)})),--u||n(r)}));return i.e&&o(i.v),r.promise},race:function race(t){var e=this,r=k(e),n=r.reject,o=g((function(){h(t,!1,(function(t){e.resolve(t).then(r.resolve,n)}))}));return o.e&&n(o.v),r.promise}})},6632:(t,e,r)=>{"use strict";var n=r(65772),o=r(60066),i=r(38113),u=r(11987),c=r(2070);n(n.P+n.R,"Promise",{finally:function(t){var e=u(this,o.Promise||i.Promise),r="function"==typeof t;return this.then(r?function(r){return c(e,t()).then((function(){return r}))}:t,r?function(r){return c(e,t()).then((function(){throw r}))}:t)}})}},e={};(function __webpack_require__(r){var n=e[r];if(void 0!==n)return n.exports;var o=e[r]={exports:{}};return t[r](o,o.exports,__webpack_require__),o.exports})(49021)})();assets/js/preloaded-elements-handlers.min.js000064400000374236150755004310015170 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[995,26,534,369,804,888,680,121,288,42,50,985,287,824,58,114,443,838,685,858,102,124,859,979],{6070:(e,t,s)=>{"use strict";var n=s(7914),i=n(s(9459)),o=n(s(9378)),r=n(s(7950)),a=n(s(4337)),l=n(s(3786)),d=n(s(1853)),c=n(s(9698)),h=n(s(9122)),m=n(s(651)),u=n(s(4484)),g=n(s(7990)),p=n(s(5056)),f=n(s(2189)),v=n(s(4429)),_=n(s(9940)),S=n(s(9874)),y=n(s(4269));const extendDefaultHandlers=e=>({...e,...{animatedText:i.default,carousel:o.default,countdown:r.default,form:a.default,gallery:l.default,hotspot:d.default,lottie:c.default,nav_menu:h.default,popup:m.default,posts:u.default,share_buttons:g.default,slides:p.default,social:f.default,themeBuilder:_.default,themeElements:S.default,woocommerce:y.default,tableOfContents:v.default}});elementorProFrontend.on("elementor-pro/modules/init:before",(()=>{elementorFrontend.hooks.addFilter("elementor-pro/frontend/handlers",extendDefaultHandlers)}))},2993:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.close=void 0;const i=new(n(s(8544)).default)("eicon"),o={get element(){return i.createSvgElement("close",{path:"M742 167L500 408 258 167C246 154 233 150 217 150 196 150 179 158 167 167 154 179 150 196 150 212 150 229 154 242 171 254L408 500 167 742C138 771 138 800 167 829 196 858 225 858 254 829L496 587 738 829C750 842 767 846 783 846 800 846 817 842 829 829 842 817 846 804 846 783 846 767 842 750 829 737L588 500 833 258C863 229 863 200 833 171 804 137 775 137 742 167Z",width:1e3,height:1e3})}};t.close=o},8544:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(5526));class IconsManager{constructor(e){if(this.prefix=`${e}-`,!IconsManager.symbolsContainer){const e="e-font-icon-svg-symbols";IconsManager.symbolsContainer=document.getElementById(e),IconsManager.symbolsContainer||(IconsManager.symbolsContainer=document.createElementNS("http://www.w3.org/2000/svg","svg"),IconsManager.symbolsContainer.setAttributeNS(null,"style","display: none;"),IconsManager.symbolsContainer.setAttributeNS(null,"class",e),document.body.appendChild(IconsManager.symbolsContainer))}}createSvgElement(e,{path:t,width:s,height:n}){const i=this.prefix+e,o="#"+this.prefix+e;if(!IconsManager.iconsUsageList.includes(i)){if(!IconsManager.symbolsContainer.querySelector(o)){const e=document.createElementNS("http://www.w3.org/2000/svg","symbol");e.id=i,e.innerHTML='<path d="'+t+'"></path>',e.setAttributeNS(null,"viewBox","0 0 "+s+" "+n),IconsManager.symbolsContainer.appendChild(e)}IconsManager.iconsUsageList.push(i)}const r=document.createElementNS("http://www.w3.org/2000/svg","svg");return r.innerHTML='<use xlink:href="'+o+'" />',r.setAttributeNS(null,"class","e-font-icon-svg e-"+i),r}}t.default=IconsManager,(0,i.default)(IconsManager,"symbolsContainer",void 0),(0,i.default)(IconsManager,"iconsUsageList",[])},9237:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,window.elementorCommon&&window.elementorCommon.helpers.softDeprecated('Scroll util from "/dev/js/frontend/utils/scroll"',"3.1.0","elementorModules.utils.Scroll");var s=elementorModules.utils.Scroll;t.default=s},9459:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(7750));class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("animated-headline",i.default)}}t.default=_default},7750:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(9237)),o=elementorModules.frontend.handlers.Base.extend({svgPaths:{circle:["M325,18C228.7-8.3,118.5,8.3,78,21C22.4,38.4,4.6,54.6,5.6,77.6c1.4,32.4,52.2,54,142.6,63.7 c66.2,7.1,212.2,7.5,273.5-8.3c64.4-16.6,104.3-57.6,33.8-98.2C386.7-4.9,179.4-1.4,126.3,20.7"],underline_zigzag:["M9.3,127.3c49.3-3,150.7-7.6,199.7-7.4c121.9,0.4,189.9,0.4,282.3,7.2C380.1,129.6,181.2,130.6,70,139 c82.6-2.9,254.2-1,335.9,1.3c-56,1.4-137.2-0.3-197.1,9"],x:["M497.4,23.9C301.6,40,155.9,80.6,4,144.4","M14.1,27.6c204.5,20.3,393.8,74,467.3,111.7"],strikethrough:["M3,75h493.5"],curly:["M3,146.1c17.1-8.8,33.5-17.8,51.4-17.8c15.6,0,17.1,18.1,30.2,18.1c22.9,0,36-18.6,53.9-18.6 c17.1,0,21.3,18.5,37.5,18.5c21.3,0,31.8-18.6,49-18.6c22.1,0,18.8,18.8,36.8,18.8c18.8,0,37.5-18.6,49-18.6c20.4,0,17.1,19,36.8,19 c22.9,0,36.8-20.6,54.7-18.6c17.7,1.4,7.1,19.5,33.5,18.8c17.1,0,47.2-6.5,61.1-15.6"],diagonal:["M13.5,15.5c131,13.7,289.3,55.5,475,125.5"],double:["M8.4,143.1c14.2-8,97.6-8.8,200.6-9.2c122.3-0.4,287.5,7.2,287.5,7.2","M8,19.4c72.3-5.3,162-7.8,216-7.8c54,0,136.2,0,267,7.8"],double_underline:["M5,125.4c30.5-3.8,137.9-7.6,177.3-7.6c117.2,0,252.2,4.7,312.7,7.6","M26.9,143.8c55.1-6.1,126-6.3,162.2-6.1c46.5,0.2,203.9,3.2,268.9,6.4"],underline:["M7.7,145.6C109,125,299.9,116.2,401,121.3c42.1,2.2,87.6,11.8,87.3,25.7"]},getDefaultSettings(){const e=this.getElementSettings("rotate_iteration_delay"),t={animationDelay:e||2500,lettersDelay:.02*e||50,typeLettersDelay:.06*e||150,selectionDuration:.2*e||500,revealDuration:.24*e||600,revealAnimationDelay:.6*e||1500,highlightAnimationDuration:this.getElementSettings("highlight_animation_duration")||1200,highlightAnimationDelay:this.getElementSettings("highlight_iteration_delay")||8e3};return t.typeAnimationDelay=t.selectionDuration+800,t.selectors={headline:".elementor-headline",dynamicWrapper:".elementor-headline-dynamic-wrapper",dynamicText:".elementor-headline-dynamic-text"},t.classes={dynamicText:"elementor-headline-dynamic-text",dynamicLetter:"elementor-headline-dynamic-letter",textActive:"elementor-headline-text-active",textInactive:"elementor-headline-text-inactive",letters:"elementor-headline-letters",animationIn:"elementor-headline-animation-in",typeSelected:"elementor-headline-typing-selected",activateHighlight:"e-animated",hideHighlight:"e-hide-highlight"},t},getDefaultElements(){var e=this.getSettings("selectors");return{$headline:this.$element.find(e.headline),$dynamicWrapper:this.$element.find(e.dynamicWrapper),$dynamicText:this.$element.find(e.dynamicText)}},getNextWord:e=>e.is(":last-child")?e.parent().children().eq(0):e.next(),switchWord(e,t){e.removeClass("elementor-headline-text-active").addClass("elementor-headline-text-inactive"),t.removeClass("elementor-headline-text-inactive").addClass("elementor-headline-text-active"),this.setDynamicWrapperWidth(t)},singleLetters(){var e=this.getSettings("classes");this.elements.$dynamicText.each((function(){var t=jQuery(this),s=t.text().split(""),n=t.hasClass(e.textActive);t.empty(),s.forEach((function(s){var i=jQuery("<span>",{class:e.dynamicLetter}).text(s);n&&i.addClass(e.animationIn),t.append(i)})),t.css("opacity",1)}))},showLetter(e,t,s,n){var i=this,o=this.getSettings("classes");e.addClass(o.animationIn),e.is(":last-child")?s||setTimeout((function(){i.hideWord(t)}),i.getSettings("animationDelay")):setTimeout((function(){i.showLetter(e.next(),t,s,n)}),n)},hideLetter(e,t,s,n){var i=this,o=this.getSettings();e.removeClass(o.classes.animationIn),e.is(":last-child")?s&&setTimeout((function(){i.hideWord(i.getNextWord(t))}),i.getSettings("animationDelay")):setTimeout((function(){i.hideLetter(e.next(),t,s,n)}),n)},showWord(e,t){var s=this,n=s.getSettings(),i=s.getElementSettings("animation_type");"typing"===i?(s.showLetter(e.find("."+n.classes.dynamicLetter).eq(0),e,!1,t),e.addClass(n.classes.textActive).removeClass(n.classes.textInactive)):"clip"===i&&s.elements.$dynamicWrapper.animate({width:e.width()+10},n.revealDuration,(function(){setTimeout((function(){s.hideWord(e)}),n.revealAnimationDelay)}))},hideWord(e){var t=this,s=t.getSettings(),n=s.classes,i="."+n.dynamicLetter,o=t.getElementSettings("animation_type"),r=t.getNextWord(e);if(this.isLoopMode||!e.is(":last-child"))if("typing"===o)t.elements.$dynamicWrapper.addClass(n.typeSelected),setTimeout((function(){t.elements.$dynamicWrapper.removeClass(n.typeSelected),e.addClass(s.classes.textInactive).removeClass(n.textActive).children(i).removeClass(n.animationIn)}),s.selectionDuration),setTimeout((function(){t.showWord(r,s.typeLettersDelay)}),s.typeAnimationDelay);else if(t.elements.$headline.hasClass(n.letters)){var a=e.children(i).length>=r.children(i).length;t.hideLetter(e.find(i).eq(0),e,a,s.lettersDelay),t.showLetter(r.find(i).eq(0),r,a,s.lettersDelay),t.setDynamicWrapperWidth(r)}else"clip"===o?t.elements.$dynamicWrapper.animate({width:"2px"},s.revealDuration,(function(){t.switchWord(e,r),t.showWord(r)})):(t.switchWord(e,r),setTimeout((function(){t.hideWord(r)}),s.animationDelay))},setDynamicWrapperWidth(e){const t=this.getElementSettings("animation_type");"clip"!==t&&"typing"!==t&&this.elements.$dynamicWrapper.css("width",e.width())},animateHeadline(){var e=this,t=e.getElementSettings("animation_type"),s=e.elements.$dynamicWrapper;"clip"===t?s.width(s.width()+10):"typing"!==t&&e.setDynamicWrapperWidth(e.elements.$dynamicText),setTimeout((function(){e.hideWord(e.elements.$dynamicText.eq(0))}),e.getSettings("animationDelay"))},getSvgPaths(e){var t=this.svgPaths[e],s=jQuery();return t.forEach((function(e){s=s.add(jQuery("<path>",{d:e}))})),s},addHighlight(){const e=this.getElementSettings(),t=jQuery("<svg>",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 500 150",preserveAspectRatio:"none"}).html(this.getSvgPaths(e.marker));this.elements.$dynamicWrapper.append(t[0].outerHTML)},rotateHeadline(){var e=this.getSettings();this.elements.$headline.hasClass(e.classes.letters)&&this.singleLetters(),this.animateHeadline()},initHeadline(){const e=this.getElementSettings("headline_style");"rotate"===e?this.rotateHeadline():"highlight"===e&&(this.addHighlight(),this.activateHighlightAnimation()),this.deactivateScrollListener()},activateHighlightAnimation(){const e=this.getSettings(),t=e.classes,s=this.elements.$headline;s.removeClass(t.hideHighlight).addClass(t.activateHighlight),this.isLoopMode&&(setTimeout((()=>{s.removeClass(t.activateHighligh).addClass(t.hideHighlight)}),e.highlightAnimationDuration+.8*e.highlightAnimationDelay),setTimeout((()=>{this.activateHighlightAnimation(!1)}),e.highlightAnimationDuration+e.highlightAnimationDelay))},activateScrollListener(){this.intersectionObservers.startAnimation.observer=i.default.scrollObserver({offset:"0px 0px -100px",callback:e=>{e.isInViewport&&this.initHeadline()}}),this.intersectionObservers.startAnimation.element=this.elements.$headline[0],this.intersectionObservers.startAnimation.observer.observe(this.intersectionObservers.startAnimation.element)},deactivateScrollListener(){this.intersectionObservers.startAnimation.observer.unobserve(this.intersectionObservers.startAnimation.element)},onInit(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.intersectionObservers={startAnimation:{observer:null,element:null}},this.isLoopMode="yes"===this.getElementSettings("loop"),this.activateScrollListener()}});t.default=o},9378:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(7393)),o=n(s(1507));class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("media-carousel",i.default),elementorFrontend.elementsHandler.attachHandler("testimonial-carousel",o.default),elementorFrontend.elementsHandler.attachHandler("reviews",o.default)}}t.default=_default},2539:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class CarouselBase extends elementorModules.frontend.handlers.SwiperBase{getDefaultSettings(){return{selectors:{swiperContainer:".elementor-main-swiper",swiperSlide:".swiper-slide"},slidesPerView:{widescreen:3,desktop:3,laptop:3,tablet_extra:3,tablet:2,mobile_extra:2,mobile:1}}}getDefaultElements(){const e=this.getSettings("selectors"),t={$swiperContainer:this.$element.find(e.swiperContainer)};return t.$slides=t.$swiperContainer.find(e.swiperSlide),t}getEffect(){return this.getElementSettings("effect")}getDeviceSlidesPerView(e){const t="slides_per_view"+("desktop"===e?"":"_"+e);return Math.min(this.getSlidesCount(),+this.getElementSettings(t)||this.getSettings("slidesPerView")[e])}getSlidesPerView(e){return"slide"===this.getEffect()?this.getDeviceSlidesPerView(e):1}getDeviceSlidesToScroll(e){const t="slides_to_scroll"+("desktop"===e?"":"_"+e);return Math.min(this.getSlidesCount(),+this.getElementSettings(t)||1)}getSlidesToScroll(e){return"slide"===this.getEffect()?this.getDeviceSlidesToScroll(e):1}getSpaceBetween(e){let t="space_between";return e&&"desktop"!==e&&(t+="_"+e),this.getElementSettings(t).size||0}getSwiperOptions(){const e=this.getElementSettings(),t={grabCursor:!0,initialSlide:this.getInitialSlide(),slidesPerView:this.getSlidesPerView("desktop"),slidesPerGroup:this.getSlidesToScroll("desktop"),spaceBetween:this.getSpaceBetween(),loop:"yes"===e.loop,speed:e.speed,effect:this.getEffect(),preventClicksPropagation:!1,slideToClickedSlide:!0,handleElementorBreakpoints:!0};if(e.show_arrows&&(t.navigation={prevEl:".elementor-swiper-button-prev",nextEl:".elementor-swiper-button-next"}),e.pagination&&(t.pagination={el:".swiper-pagination",type:e.pagination,clickable:!0}),"cube"!==this.getEffect()){const e={},s=elementorFrontend.config.responsive.activeBreakpoints;Object.keys(s).forEach((t=>{e[s[t].value]={slidesPerView:this.getSlidesPerView(t),slidesPerGroup:this.getSlidesToScroll(t),spaceBetween:this.getSpaceBetween(t)}})),t.breakpoints=e}return!this.isEdit&&e.autoplay&&(t.autoplay={delay:e.autoplay_speed,disableOnInteraction:!!e.pause_on_interaction}),t}getDeviceBreakpointValue(e){if(!this.breakpointsDictionary){const e=elementorFrontend.config.responsive.activeBreakpoints;this.breakpointsDictionary={},Object.keys(e).forEach((t=>{this.breakpointsDictionary[t]=e[t].value}))}return this.breakpointsDictionary[e]}updateSpaceBetween(e){const t=e.match("space_between_(.*)"),s=t?t[1]:"desktop",n=this.getSpaceBetween(s);"desktop"!==s?this.swiper.params.breakpoints[this.getDeviceBreakpointValue(s)].spaceBetween=n:this.swiper.params.spaceBetween=n,this.swiper.params.spaceBetween=n,this.swiper.update()}async onInit(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments);const e=this.getElementSettings();if(1>=this.getSlidesCount())return;const t=elementorFrontend.utils.swiper;this.swiper=await new t(this.elements.$swiperContainer,this.getSwiperOptions()),"yes"===e.pause_on_hover&&this.togglePauseOnHover(!0),this.elements.$swiperContainer.data("swiper",this.swiper)}getChangeableProperties(){return{autoplay:"autoplay",pause_on_hover:"pauseOnHover",pause_on_interaction:"disableOnInteraction",autoplay_speed:"delay",speed:"speed",width:"width"}}updateSwiperOption(e){if(0===e.indexOf("width"))return void this.swiper.update();const t=this.getElementSettings(),s=t[e];let n=this.getChangeableProperties()[e],i=s;switch(e){case"autoplay":i=!!s&&{delay:t.autoplay_speed,disableOnInteraction:"yes"===t.pause_on_interaction};break;case"autoplay_speed":n="autoplay",i={delay:s,disableOnInteraction:"yes"===t.pause_on_interaction};break;case"pause_on_hover":this.togglePauseOnHover("yes"===s);break;case"pause_on_interaction":i="yes"===s}"pause_on_hover"!==e&&(this.swiper.params[n]=i),this.swiper.update()}onElementChange(e){if(1>=this.getSlidesCount())return;if(0===e.indexOf("width"))return this.swiper.update(),void(this.thumbsSwiper&&this.thumbsSwiper.update());if(0===e.indexOf("space_between"))return void this.updateSpaceBetween(e);this.getChangeableProperties().hasOwnProperty(e)&&this.updateSwiperOption(e)}onEditSettingsChange(e){1>=this.getSlidesCount()||"activeItemIndex"===e&&this.swiper.slideToLoop(this.getEditSettings("activeItemIndex")-1)}}t.default=CarouselBase},7393:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(2539));class MediaCarousel extends i.default{isSlideshow(){return"slideshow"===this.getElementSettings("skin")}getDefaultSettings(...e){const t=super.getDefaultSettings(...e);return this.isSlideshow()&&(t.selectors.thumbsSwiper=".elementor-thumbnails-swiper",t.slidesPerView={widescreen:5,desktop:5,laptop:5,tablet_extra:5,tablet:4,mobile_extra:4,mobile:3}),t}getSlidesPerViewSettingNames(){if(!this.slideshowElementSettings){this.slideshowElementSettings=["slides_per_view"];const e=elementorFrontend.config.responsive.activeBreakpoints;Object.keys(e).forEach((e=>{this.slideshowElementSettings.push("slides_per_view_"+e)}))}return this.slideshowElementSettings}getElementSettings(e){return-1!==this.getSlidesPerViewSettingNames().indexOf(e)&&this.isSlideshow()&&(e="slideshow_"+e),super.getElementSettings(e)}getDefaultElements(...e){const t=this.getSettings("selectors"),s=super.getDefaultElements(...e);return this.isSlideshow()&&(s.$thumbsSwiper=this.$element.find(t.thumbsSwiper)),s}getEffect(){return"coverflow"===this.getElementSettings("skin")?"coverflow":super.getEffect()}getSlidesPerView(e){return this.isSlideshow()?1:"coverflow"===this.getElementSettings("skin")?this.getDeviceSlidesPerView(e):super.getSlidesPerView(e)}getSwiperOptions(){const e=super.getSwiperOptions();return this.isSlideshow()&&(e.loopedSlides=this.getSlidesCount(),delete e.pagination,delete e.breakpoints),e}async onInit(){await super.onInit();const e=this.getSlidesCount();if(!this.isSlideshow()||1>=e)return;const t=this.getElementSettings(),s="yes"===t.loop,n={},i=elementorFrontend.config.responsive.activeBreakpoints,o=this.getDeviceSlidesPerView("desktop");Object.keys(i).forEach((e=>{n[i[e].value]={slidesPerView:this.getDeviceSlidesPerView(e),spaceBetween:this.getSpaceBetween(e)}}));const r={slidesPerView:o,initialSlide:this.getInitialSlide(),centeredSlides:t.centered_slides,slideToClickedSlide:!0,spaceBetween:this.getSpaceBetween(),loopedSlides:e,loop:s,breakpoints:n,handleElementorBreakpoints:!0},a=elementorFrontend.utils.swiper;this.swiper.controller.control=this.thumbsSwiper=await new a(this.elements.$thumbsSwiper,r),this.elements.$thumbsSwiper.data("swiper",this.thumbsSwiper),this.thumbsSwiper.controller.control=this.swiper}}t.default=MediaCarousel},1507:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(2539));class TestimonialCarousel extends i.default{getDefaultSettings(){const e=super.getDefaultSettings();return e.slidesPerView={desktop:1},Object.keys(elementorFrontend.config.responsive.activeBreakpoints).forEach((t=>{e.slidesPerView[t]=1})),e.loop&&(e.loopedSlides=this.getSlidesCount()),e}getEffect(){return"slide"}}t.default=TestimonialCarousel},7950:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(7097));class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("countdown",i.default)}}t.default=_default},7097:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=elementorModules.frontend.handlers.Base.extend({cache:null,cacheElements(){const e=this.$element.find(".elementor-countdown-wrapper");this.cache={$countDown:e,timeInterval:null,elements:{$countdown:e.find(".elementor-countdown-wrapper"),$daysSpan:e.find(".elementor-countdown-days"),$hoursSpan:e.find(".elementor-countdown-hours"),$minutesSpan:e.find(".elementor-countdown-minutes"),$secondsSpan:e.find(".elementor-countdown-seconds"),$expireMessage:e.parent().find(".elementor-countdown-expire--message")},data:{id:this.$element.data("id"),endTime:new Date(1e3*e.data("date")),actions:e.data("expire-actions"),evergreenInterval:e.data("evergreen-interval")}}},onInit(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.cacheElements(),0<this.cache.data.evergreenInterval&&(this.cache.data.endTime=this.getEvergreenDate()),this.initializeClock()},updateClock(){const e=this,t=this.getTimeRemaining(this.cache.data.endTime);jQuery.each(t.parts,(function(t){const s=e.cache.elements["$"+t+"Span"];let n=this.toString();1===n.length&&(n=0+n),s.length&&s.text(n)})),t.total<=0&&(clearInterval(this.cache.timeInterval),this.runActions())},initializeClock(){const e=this;this.updateClock(),this.cache.timeInterval=setInterval((function(){e.updateClock()}),1e3)},runActions(){const e=this;e.$element.trigger("countdown_expire",e.$element),this.cache.data.actions&&this.cache.data.actions.forEach((function(t){switch(t.type){case"hide":e.cache.$countDown.hide();break;case"redirect":t.redirect_url&&(window.location.href=t.redirect_url);break;case"message":e.cache.elements.$expireMessage.show()}}))},getTimeRemaining(e){const t=e-new Date;let s=Math.floor(t/1e3%60),n=Math.floor(t/1e3/60%60),i=Math.floor(t/36e5%24),o=Math.floor(t/864e5);return(o<0||i<0||n<0)&&(s=n=i=o=0),{total:t,parts:{days:o,hours:i,minutes:n,seconds:s}}},getEvergreenDate(){const e=this,t=this.cache.data.id,s=this.cache.data.evergreenInterval,n=t+"-evergreen_due_date",i=t+"-evergreen_interval",o={dueDate:localStorage.getItem(n),interval:localStorage.getItem(i)},initEvergreen=function(){var t=new Date;return e.cache.data.endTime=t.setSeconds(t.getSeconds()+s),localStorage.setItem(n,e.cache.data.endTime),localStorage.setItem(i,s),e.cache.data.endTime};return null===o.dueDate&&null===o.interval||null!==o.dueDate&&s!==parseInt(o.interval,10)?initEvergreen():o.dueDate>0&&parseInt(o.interval,10)===s?o.dueDate:void 0}});t.default=s},4337:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(9706)),o=n(s(7300)),r=n(s(611)),a=n(s(9228)),l=n(s(4610)),d=n(s(6374));class _default extends elementorModules.Module{constructor(){super();const e=[i.default,o.default,r.default];elementorFrontend.elementsHandler.attachHandler("form",[...e,a.default,l.default,d.default]),elementorFrontend.elementsHandler.attachHandler("subscribe",e)}}t.default=_default},8906:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class DataTimeFieldBase extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{fields:this.getFieldsSelector()},classes:{useNative:"elementor-use-native"}}}getDefaultElements(){const{selectors:e}=this.getDefaultSettings();return{$fields:this.$element.find(e.fields)}}addPicker(e){const{classes:t}=this.getDefaultSettings();jQuery(e).hasClass(t.useNative)||e.flatpickr(this.getPickerOptions(e))}onInit(...e){super.onInit(...e),this.elements.$fields.each(((e,t)=>this.addPicker(t)))}}t.default=DataTimeFieldBase},4610:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(8906));class DateField extends i.default{getFieldsSelector(){return".elementor-date-field"}getPickerOptions(e){const t=jQuery(e);return{minDate:t.attr("min")||null,maxDate:t.attr("max")||null,allowInput:!0}}}t.default=DateField},6374:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(8906));class TimeField extends i.default{getFieldsSelector(){return".elementor-time-field"}getPickerOptions(){return{noCalendar:!0,enableTime:!0,allowInput:!0}}}t.default=TimeField},611:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=elementorModules.frontend.handlers.Base.extend({getDefaultSettings:()=>({selectors:{form:".elementor-form"}}),getDefaultElements(){var e=this.getSettings("selectors"),t={};return t.$form=this.$element.find(e.form),t},bindEvents(){this.elements.$form.on("form_destruct",this.handleSubmit)},handleSubmit(e,t){void 0!==t.data.redirect_url&&(location.href=t.data.redirect_url)}});t.default=s},7300:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=elementorModules.frontend.handlers.Base.extend({getDefaultSettings:()=>({selectors:{form:".elementor-form",submitButton:'[type="submit"]'},action:"elementor_pro_forms_send_form",ajaxUrl:elementorProFrontend.config.ajaxurl}),getDefaultElements(){const e=this.getSettings("selectors"),t={};return t.$form=this.$element.find(e.form),t.$submitButton=t.$form.find(e.submitButton),t},bindEvents(){this.elements.$form.on("submit",this.handleSubmit);const e=this.elements.$form.find("input[type=file]");e.length&&e.on("change",this.validateFileSize)},validateFileSize(e){const t=jQuery(e.currentTarget),s=t[0].files;if(!s.length)return;const n=1024*parseInt(t.attr("data-maxsize"))*1024,i=t.attr("data-maxsize-message");Array.prototype.slice.call(s).forEach((e=>{n<e.size&&(t.parent().addClass("elementor-error").append('<span class="elementor-message elementor-message-danger elementor-help-inline elementor-form-help-inline" role="alert">'+i+"</span>").find(":input").attr("aria-invalid","true"),this.elements.$form.trigger("error"))}))},beforeSend(){const e=this.elements.$form;e.animate({opacity:"0.45"},500).addClass("elementor-form-waiting"),e.find(".elementor-message").remove(),e.find(".elementor-error").removeClass("elementor-error"),e.find("div.elementor-field-group").removeClass("error").find("span.elementor-form-help-inline").remove().end().find(":input").attr("aria-invalid","false"),this.elements.$submitButton.attr("disabled","disabled").find("> span").prepend('<span class="elementor-button-text elementor-form-spinner"><i class="fa fa-spinner fa-spin"></i>&nbsp;</span>')},getFormData(){const e=new FormData(this.elements.$form[0]);return e.append("action",this.getSettings("action")),e.append("referrer",location.toString()),e},onSuccess(e){const t=this.elements.$form;this.elements.$submitButton.removeAttr("disabled").find(".elementor-form-spinner").remove(),t.animate({opacity:"1"},100).removeClass("elementor-form-waiting"),e.success?(t.trigger("submit_success",e.data),t.trigger("form_destruct",e.data),t.trigger("reset"),void 0!==e.data.message&&""!==e.data.message&&t.append('<div class="elementor-message elementor-message-success" role="alert">'+e.data.message+"</div>")):(e.data.errors&&(jQuery.each(e.data.errors,(function(e,s){t.find("#form-field-"+e).parent().addClass("elementor-error").append('<span class="elementor-message elementor-message-danger elementor-help-inline elementor-form-help-inline" role="alert">'+s+"</span>").find(":input").attr("aria-invalid","true")})),t.trigger("error")),t.append('<div class="elementor-message elementor-message-danger" role="alert">'+e.data.message+"</div>"))},onError(e,t){const s=this.elements.$form;s.append('<div class="elementor-message elementor-message-danger" role="alert">'+t+"</div>"),this.elements.$submitButton.html(this.elements.$submitButton.text()).removeAttr("disabled"),s.animate({opacity:"1"},100).removeClass("elementor-form-waiting"),s.trigger("error")},handleSubmit(e){const t=this,s=this.elements.$form;if(e.preventDefault(),s.hasClass("elementor-form-waiting"))return!1;this.beforeSend(),jQuery.ajax({url:t.getSettings("ajaxUrl"),type:"POST",dataType:"json",data:t.getFormData(),processData:!1,contentType:!1,success:t.onSuccess,error:t.onError})}});t.default=s},9706:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class FormSteps extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{form:".elementor-form",fieldsWrapper:".elementor-form-fields-wrapper",fieldGroup:".elementor-field-group",stepWrapper:".elementor-field-type-step",stepField:".e-field-step",submitWrapper:".elementor-field-type-submit",submitButton:'[type="submit"]',buttons:".e-form__buttons",buttonWrapper:".e-form__buttons__wrapper",button:".e-form__buttons__wrapper__button",indicator:".e-form__indicators__indicator",indicatorProgress:".e-form__indicators__indicator__progress",indicatorProgressMeter:".e-form__indicators__indicator__progress__meter",formHelpInline:".elementor-form-help-inline"},classes:{hidden:"elementor-hidden",column:"elementor-column",fieldGroup:"elementor-field-group",elementorButton:"elementor-button",step:"e-form__step",buttons:"e-form__buttons",buttonWrapper:"e-form__buttons__wrapper",button:"e-form__buttons__wrapper__button",indicators:"e-form__indicators",indicator:"e-form__indicators__indicator",indicatorIcon:"e-form__indicators__indicator__icon",indicatorNumber:"e-form__indicators__indicator__number",indicatorLabel:"e-form__indicators__indicator__label",indicatorProgress:"e-form__indicators__indicator__progress",indicatorProgressMeter:"e-form__indicators__indicator__progress__meter",indicatorSeparator:"e-form__indicators__indicator__separator",indicatorInactive:"e-form__indicators__indicator--state-inactive",indicatorActive:"e-form__indicators__indicator--state-active",indicatorCompleted:"e-form__indicators__indicator--state-completed",indicatorShapeCircle:"e-form__indicators__indicator--shape-circle",indicatorShapeSquare:"e-form__indicators__indicator--shape-square",indicatorShapeRounded:"e-form__indicators__indicator--shape-rounded",indicatorShapeNone:"e-form__indicators__indicator--shape-none"}}}getDefaultElements(){const{selectors:e}=this.getSettings(),t={$form:this.$element.find(e.form)};return t.$fieldsWrapper=t.$form.children(e.fieldsWrapper),t.$stepWrapper=t.$fieldsWrapper.children(e.stepWrapper),t.$stepField=t.$stepWrapper.children(e.stepField),t.$fieldGroup=t.$fieldsWrapper.children(e.fieldGroup),t.$submitWrapper=t.$fieldsWrapper.children(e.submitWrapper),t.$submitButton=t.$submitWrapper.children(e.submitButton),t}onInit(...e){super.onInit(...e),this.isStepsExist()&&(this.data={steps:[],indicatorsWithObjectTags:[]},this.state={currentStep:0,stepsType:"",stepsShape:""},this.buildSteps(),this.elements={...this.elements,...this.createStepsIndicators(),...this.createStepsButtons()},this.initProgressBar(),this.extractResponsiveSizeFromSubmitWrapper())}bindEvents(){this.isStepsExist()&&this.elements.$form.on({submit:()=>this.resetForm(),keydown:e=>{13!==e.keyCode||this.isLastStep()||"textarea"===e.target.localName||(e.preventDefault(),this.applyStep("next"))},error:()=>this.onFormError()})}isStepsExist(){return this.elements.$stepWrapper.length}initProgressBar(){"progress_bar"===this.getElementSettings().step_type&&this.setProgressBar()}buildSteps(){this.elements.$stepWrapper.each(((e,t)=>{const{selectors:s,classes:n}=this.getSettings(),i=jQuery(t);i.addClass(n.step).removeClass(n.fieldGroup,n.column),e&&i.addClass(n.hidden),this.setStepData(i.children(s.stepField)),i.append(i.nextUntil(this.elements.$stepWrapper).not(this.elements.$submitWrapper))}))}setStepData(e){const t={};["label","previousButton","nextButton","iconUrl","iconLibrary","icon"].forEach((s=>{const n=e.attr("data-"+s);n&&(t[s]=n)})),this.data.steps.push(t)}createStepsIndicators(){const e=this.getElementSettings(),t={};if("none"!==e.step_type){const{selectors:s,classes:n}=this.getSettings(),i=n.indicators+"--type-"+e.step_type,o=[n.indicators,i];t.$indicatorsWrapper=jQuery("<div>",{class:o.join(" ")}),t.$indicatorsWrapper.append(this.buildIndicators()),this.elements.$fieldsWrapper.before(t.$indicatorsWrapper),"progress_bar"===e.step_type?(t.$progressBar=t.$indicatorsWrapper.find(s.indicatorProgress),t.$progressBarMeter=t.$indicatorsWrapper.find(s.indicatorProgressMeter)):(t.$indicators=t.$indicatorsWrapper.find(s.indicator),t.$currentIndicator=t.$indicators.eq(this.state.currentStep))}return this.saveIndicatorsState(),t}buildIndicators(){return"progress_bar"===this.getElementSettings().step_type?this.buildProgressBar():this.buildIndicatorsFromStepsData()}buildProgressBar(){const{classes:e}=this.getSettings(),t=jQuery("<div>",{class:e.indicatorProgress}),s=jQuery("<div>",{class:e.indicatorProgressMeter});return t.append(s),t}getProgressBarValue(){const e=this.data.steps.length,t=this.state.currentStep,s=t?(t+1)/e*100:100/e;return Math.floor(s)+"%"}setProgressBar(){const e=this.getProgressBarValue();this.updateProgressMeterCSSVariable(e),this.elements.$progressBarMeter.text(e)}updateProgressMeterCSSVariable(e){this.$element[0].style.setProperty("--e-form-steps-indicator-progress-meter-width",e)}saveIndicatorsState(){const e=this.getElementSettings();this.state.stepsType=e.step_type,["none","text","progress_bar"].includes(e.step_type)||(this.state.stepsShape=e.step_icon_shape)}buildIndicatorsFromStepsData(){const e=[];return this.data.steps.forEach(((t,s)=>{s&&e.push(this.getStepSeparator()),e.push(this.getStepIndicatorElement(t,s))})),e}getStepIndicatorElement(e,t){const{classes:s}=this.getSettings(),n=this.getElementSettings(),i=this.getIndicatorStateClass(t),o=[s.indicator,i],r=jQuery("<div>",{class:o.join(" ")});return n.step_type.includes("icon")&&r.append(this.getStepIconElement(e)),n.step_type.includes("number")&&r.append(this.getStepNumberElement(t)),n.step_type.includes("text")&&r.append(this.getStepLabelElement(e.label)),r}getIndicatorStateClass(e){const{classes:t}=this.getSettings();return e<this.state.currentStep?t.indicatorCompleted:e>this.state.currentStep?t.indicatorInactive:t.indicatorActive}getIndicatorShapeClass(){const e=this.getElementSettings(),{classes:t}=this.getSettings();return t["indicatorShape"+this.firstLetterToUppercase(e.step_icon_shape)]}firstLetterToUppercase(e){return e.charAt(0).toUpperCase()+e.slice(1)}getStepNumberElement(e){const{classes:t}=this.getSettings(),s=[t.indicatorNumber,this.getIndicatorShapeClass()];return jQuery("<div>",{class:s.join(" "),text:e+1})}getStepIconElement(e){const{classes:t}=this.getSettings(),s=[t.indicatorIcon,this.getIndicatorShapeClass()],n=jQuery("<div>",{class:s.join(" ")});if(e.icon)n.html(e.icon);else{let t;e.iconLibrary?t=jQuery("<i>",{class:e.iconLibrary}):(t=jQuery(`<object type="image/svg+xml" data="${e.iconUrl}"></object>`),t.on("load",(e=>{e.target.contentDocument.querySelector("svg").style.fill=t.css("fill")})),this.data.indicatorsWithObjectTags.push(t)),n.append(t)}return n}getStepLabelElement(e){const{classes:t}=this.getSettings();return jQuery("<label>",{class:t.indicatorLabel,text:e})}getStepSeparator(){const{classes:e}=this.getSettings();return jQuery("<div>",{class:e.indicatorSeparator})}createStepsButtons(){const{selectors:e}=this.getSettings(),t={};return this.injectButtonsToSteps(t),t.$buttonsContainer=this.elements.$stepWrapper.find(e.buttons),t.$buttonsWrappers=t.$buttonsContainer.children(e.buttonWrapper),t}injectButtonsToSteps(){const e=this.elements.$stepWrapper.length;this.elements.$stepWrapper.each(((t,s)=>{const n=jQuery(s),i=this.getButtonsContainer();let o;t?(i.append(this.getStepButton("previous",t)),o=t===e-1?this.getSubmitButton():this.getStepButton("next",t)):o=this.getStepButton("next",t),i.append(o),n.append(i)}))}getButtonsContainer(){const{classes:e}=this.getSettings(),t=this.getElementSettings(),s=[e.buttons,e.column,"elementor-col-"+t.button_width];return jQuery("<div>",{class:s.join(" ")})}extractResponsiveSizeFromSubmitWrapper(){let e=[];this.elements.$submitWrapper.removeClass(((t,s)=>{var n;return e=null===(n=s.match(/elementor-(sm|md)-[0-9]+/g))||void 0===n?void 0:n.join(" "),e})),this.elements.$buttonsContainer.addClass(e)}getStepButton(e,t){const{classes:s}=this.getSettings(),n=this.getButton(e,t).on("click",(()=>this.applyStep(e))),i=[s.fieldGroup,s.buttonWrapper,"elementor-field-type-"+e];return jQuery("<div>",{class:i.join(" ")}).append(n)}getSubmitButton(){const{classes:e}=this.getSettings();return this.elements.$submitButton.addClass(e.button),this.elements.$submitWrapper.attr("class",((e,t)=>this.replaceClassNameColSize(t,""))).removeClass(e.column).removeClass(e.buttons).addClass(e.buttonWrapper)}replaceClassNameColSize(e,t){return e.replace(/elementor-col-([0-9]+)/g,t)}getButton(e,t){const{classes:s}=this.getSettings(),n=this.elements.$submitButton.attr("class").match(/elementor-size-([^\W\d]+)/g),i=[s.elementorButton,n,s.button,s.button+"-"+e];return jQuery("<button>",{type:"button",text:this.getButtonLabel(e,t),class:i.join(" ")})}getButtonLabel(e,t){const s=this.getElementSettings(),n=`step_${e}_label`;return this.data.steps[t][e+"Button"]||s[n]}applyStep(e){const t="next"===e?this.state.currentStep+1:this.state.currentStep-1;if("next"===e&&!this.isFieldsValid(this.elements.$stepWrapper))return!1;this.goToStep(t),this.state.currentStep=t,"progress_bar"===this.state.stepsType?this.setProgressBar():"none"!==this.state.stepsType&&this.updateIndicatorsState(e)}goToStep(e){const{classes:t}=this.getSettings();this.elements.$stepWrapper.eq(this.state.currentStep).addClass(t.hidden),this.elements.$stepWrapper.eq(e).removeClass(t.hidden).children(this.getSettings("selectors.fieldGroup")).first().find(":input").first().trigger("focus")}isFieldsValid(e){let t=!0;return e.eq(this.state.currentStep).find(".elementor-field-group :input").each(((e,s)=>{if(!s.checkValidity())return s.reportValidity(),t=!1})),t}isLastStep(){return this.state.currentStep===this.data.steps.length-1}resetForm(){this.state.currentStep=0,this.resetSteps(),"progress_bar"===this.state.stepsType?this.setProgressBar():"none"!==this.state.stepsType&&(this.elements.$currentIndicator=this.elements.$indicators.eq(this.state.currentStep),this.resetIndicators())}resetSteps(){const{classes:e}=this.getSettings();this.elements.$stepWrapper.addClass(e.hidden).eq(0).removeClass(e.hidden)}resetIndicators(){const{classes:e}=this.getSettings(),t=["inactive","active","completed"].map((t=>e.indicator+"--state-"+t));this.elements.$indicators.removeClass(t.join(" ")).not(this.elements.$indicators.eq(0)).addClass(e.indicatorInactive),this.elements.$indicators.eq(0).addClass(e.indicatorActive)}updateIndicatorsState(e){const{classes:t}=this.getSettings(),s={current:{remove:t.indicatorActive,add:"next"===e?t.indicatorCompleted:t.indicatorInactive},next:{remove:"next"===e?t.indicatorInactive:t.indicatorCompleted,add:t.indicatorActive}};this.elements.$currentIndicator.removeClass(s.current.remove).addClass(s.current.add),this.elements.$currentIndicator=this.elements.$indicators.eq(this.state.currentStep),this.elements.$currentIndicator.removeClass(s.next.remove).addClass(s.next.add),this.data.indicatorsWithObjectTags.forEach((e=>{e.contents().children("svg").css("fill",e.css("fill"))}))}updateValue(e){const t={step_type:()=>this.updateStepsType(),step_icon_shape:()=>this.updateStepsShape(),step_next_label:()=>this.updateStepButtonsLabel("next"),step_previous_label:()=>this.updateStepButtonsLabel("previous")};t[e]&&t[e]()}updateStepsType(){const e=this.getElementSettings();this.elements.$indicatorsWrapper&&this.elements.$indicatorsWrapper.remove(),"none"!==e.step_type&&this.rebuildIndicators(),this.state.stepsType=e.step_type}rebuildIndicators(){this.elements={...this.elements,...this.createStepsIndicators()},this.initProgressBar()}updateStepsShape(){const e=this.getElementSettings(),{selectors:t,classes:s}=this.getSettings(),n=s.indicator+"--shape-",i=n+this.state.stepsShape,o=n+e.step_icon_shape;let r="";e.step_type.includes("icon")?r="icon":e.step_type.includes("number")&&(r="number"),this.elements.$indicators.children(t.indicator+"__"+r).removeClass(i).addClass(o),this.state.stepsShape=e.step_icon_shape}updateStepButtonsLabel(e){const{selectors:t}=this.getSettings(),s={previous:t.button+"-previous",next:t.button+"-next"};this.elements.$stepWrapper.each(((t,n)=>{jQuery(n).find(s[e]).text(this.getButtonLabel(e,t))}))}onFormError(){const{selectors:e}=this.getSettings(),t=this.elements.$form.find(e.formHelpInline).closest(e.stepWrapper);t.length&&this.goToStep(t.index())}onElementChange(e){this.isStepsExist()&&this.updateValue(e)}}t.default=FormSteps},9228:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class Recaptcha extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{recaptcha:".elementor-g-recaptcha:last",submit:'button[type="submit"]',recaptchaResponse:'[name="g-recaptcha-response"]'}}}getDefaultElements(){const{selectors:e}=this.getDefaultSettings(),t={$recaptcha:this.$element.find(e.recaptcha)};return t.$form=t.$recaptcha.parents("form"),t.$submit=t.$form.find(e.submit),t}bindEvents(){this.onRecaptchaApiReady()}isActive(e){const{selectors:t}=this.getDefaultSettings();return e.$element.find(t.recaptcha).length}addRecaptcha(){const e=this.elements.$recaptcha.data(),t="v3"!==e.type,s=[];s.forEach((e=>window.grecaptcha.reset(e)));const n=window.grecaptcha.render(this.elements.$recaptcha[0],e);this.elements.$form.on("reset error",(()=>{window.grecaptcha.reset(n)})),t?this.elements.$recaptcha.data("widgetId",n):(s.push(n),this.elements.$submit.on("click",(e=>this.onV3FormSubmit(e,n))))}onV3FormSubmit(e,t){e.preventDefault(),window.grecaptcha.ready((()=>{const e=this.elements.$form;grecaptcha.execute(t,{action:this.elements.$recaptcha.data("action")}).then((t=>{this.elements.$recaptchaResponse?this.elements.$recaptchaResponse.val(t):(this.elements.$recaptchaResponse=jQuery("<input>",{type:"hidden",value:t,name:"g-recaptcha-response"}),e.append(this.elements.$recaptchaResponse));(!e[0].reportValidity||"function"!=typeof e[0].reportValidity||e[0].reportValidity())&&e.trigger("submit")}))}))}onRecaptchaApiReady(){window.grecaptcha&&window.grecaptcha.render?this.addRecaptcha():setTimeout((()=>this.onRecaptchaApiReady()),350)}}t.default=Recaptcha},3786:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(5357));class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("gallery",i.default)}}t.default=_default},5357:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class galleryHandler extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{container:".elementor-gallery__container",galleryTitles:".elementor-gallery-title",galleryImages:".e-gallery-image",galleryItemOverlay:".elementor-gallery-item__overlay",galleryItemContent:".elementor-gallery-item__content"},classes:{activeTitle:"elementor-item-active"}}}getDefaultElements(){const{selectors:e}=this.getSettings(),t={$container:this.$element.find(e.container),$titles:this.$element.find(e.galleryTitles)};return t.$items=t.$container.children(),t.$images=t.$items.children(e.galleryImages),t.$itemsOverlay=t.$items.children(e.galleryItemOverlay),t.$itemsContent=t.$items.children(e.galleryItemContent),t.$itemsContentElements=t.$itemsContent.children(),t}getGallerySettings(){const e=this.getElementSettings(),t=elementorFrontend.config.responsive.activeBreakpoints,s=Object.keys(t),n={},i=elementorFrontend.getDeviceSetting("desktop",e,"ideal_row_height");return s.forEach((s=>{if("widescreen"!==s){const i=elementorFrontend.getDeviceSetting(s,e,"ideal_row_height");n[t[s].value]={horizontalGap:elementorFrontend.getDeviceSetting(s,e,"gap").size,verticalGap:elementorFrontend.getDeviceSetting(s,e,"gap").size,columns:elementorFrontend.getDeviceSetting(s,e,"columns"),idealRowHeight:null==i?void 0:i.size}}})),{type:e.gallery_layout,idealRowHeight:null==i?void 0:i.size,container:this.elements.$container,columns:e.columns,aspectRatio:e.aspect_ratio,lastRow:"normal",horizontalGap:elementorFrontend.getDeviceSetting("desktop",e,"gap").size,verticalGap:elementorFrontend.getDeviceSetting("desktop",e,"gap").size,animationDuration:e.content_animation_duration,breakpoints:n,rtl:elementorFrontend.config.is_rtl,lazyLoad:"yes"===e.lazyload}}initGallery(){this.gallery=new EGallery(this.getGallerySettings()),this.toggleAllAnimationsClasses()}removeAnimationClasses(e){e.removeClass(((e,t)=>(t.match(/elementor-animated-item-\S+/g)||[]).join(" ")))}toggleOverlayHoverAnimation(){this.removeAnimationClasses(this.elements.$itemsOverlay);const e=this.getElementSettings("background_overlay_hover_animation");e&&this.elements.$itemsOverlay.addClass("elementor-animated-item--"+e)}toggleOverlayContentAnimation(){this.removeAnimationClasses(this.elements.$itemsContentElements);const e=this.getElementSettings("content_hover_animation");e&&this.elements.$itemsContentElements.addClass("elementor-animated-item--"+e)}toggleOverlayContentSequencedAnimation(){this.elements.$itemsContent.toggleClass("elementor-gallery--sequenced-animation","yes"===this.getElementSettings("content_sequenced_animation"))}toggleImageHoverAnimation(){const e=this.getElementSettings("image_hover_animation");this.removeAnimationClasses(this.elements.$images),e&&this.elements.$images.addClass("elementor-animated-item--"+e)}toggleAllAnimationsClasses(){const e=this.getElementSettings(),t=e.background_overlay_hover_animation||e.content_hover_animation||e.image_hover_animation;this.elements.$items.toggleClass("elementor-animated-content",!!t),this.toggleImageHoverAnimation(),this.toggleOverlayHoverAnimation(),this.toggleOverlayContentAnimation(),this.toggleOverlayContentSequencedAnimation()}toggleAnimationClasses(e){"content_sequenced_animation"===e&&this.toggleOverlayContentSequencedAnimation(),"background_overlay_hover_animation"===e&&this.toggleOverlayHoverAnimation(),"content_hover_animation"===e&&this.toggleOverlayContentAnimation(),"image_hover_animation"===e&&this.toggleImageHoverAnimation()}setGalleryTags(e){this.gallery.setSettings("tags","all"===e?[]:[""+e])}bindEvents(){this.elements.$titles.on("click",this.galleriesNavigationListener.bind(this))}galleriesNavigationListener(e){const t=this.getSettings("classes"),s=jQuery(e.target);this.elements.$titles.removeClass(t.activeTitle),s.addClass(t.activeTitle),this.setGalleryTags(s.data("gallery-index"));setTimeout((()=>this.setLightboxGalleryIndex(s.data("gallery-index"))),1e3)}setLightboxGalleryIndex(e="all"){if("all"===e)return this.elements.$items.attr("data-elementor-lightbox-slideshow","all_"+this.getID());this.elements.$items.not(".e-gallery-item--hidden").attr("data-elementor-lightbox-slideshow",e+"_"+this.getID())}onInit(...e){super.onInit(...e),elementorFrontend.isEditMode()&&1<=this.$element.find(".elementor-widget-empty-icon").length&&this.$element.addClass("elementor-widget-empty"),this.elements.$container.length&&(this.initGallery(),this.elements.$titles.first().trigger("click"))}getSettingsDictionary(){if(this.settingsDictionary)return this.settingsDictionary;const e=elementorFrontend.config.responsive.activeBreakpoints,t=Object.keys(e),s={columns:["columns"],gap:["horizontalGap","verticalGap"],ideal_row_height:["idealRowHeight"]};return t.forEach((t=>{"widescreen"!==t&&(s["columns_"+t]=["breakpoints."+e[t].value+".columns"],s["gap_"+t]=["breakpoints."+e[t].value+".horizontalGap","breakpoints."+e[t].value+".verticalGap"],s["ideal_row_height_"+t]=["breakpoints."+e[t].value+".idealRowHeight"])})),s.aspect_ratio=["aspectRatio"],this.settingsDictionary=s,this.settingsDictionary}onElementChange(e){if(-1!==["background_overlay_hover_animation","content_hover_animation","image_hover_animation","content_sequenced_animation"].indexOf(e))return void this.toggleAnimationClasses(e);const t=this.getSettingsDictionary()[e];if(t){const e=this.getGallerySettings();t.forEach((t=>{this.gallery.setSettings(t,this.getItems(e,t))}))}}onDestroy(){super.onDestroy(),this.gallery&&this.gallery.destroy()}}t.default=galleryHandler},1853:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(9556));class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("hotspot",i.default)}}t.default=_default},9556:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class Hotspot extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{hotspot:".e-hotspot",tooltip:".e-hotspot__tooltip"}}}getDefaultElements(){const e=this.getSettings("selectors");return{$hotspot:this.$element.find(e.hotspot),$hotspotsExcludesLinks:this.$element.find(e.hotspot).filter(":not(.e-hotspot--no-tooltip)"),$tooltip:this.$element.find(e.tooltip)}}bindEvents(){const e=this.getCurrentDeviceSetting("tooltip_trigger"),t="mouseenter"===e?"mouseleave mouseenter":e;"none"!==t&&this.elements.$hotspotsExcludesLinks.on(t,(e=>this.onHotspotTriggerEvent(e)))}onDeviceModeChange(){this.elements.$hotspotsExcludesLinks.off(),this.bindEvents()}onHotspotTriggerEvent(e){const t=jQuery(e.target),s=t.closest(".e-hotspot__button").length,n="mouseleave"===e.type&&(t.is(".e-hotspot--tooltip-position")||t.parents(".e-hotspot--tooltip-position").length),i="mobile"===elementorFrontend.getCurrentDeviceMode();if(!(t.closest(".e-hotspot--link").length&&i&&("mouseleave"===e.type||"mouseenter"===e.type))&&(s||n)){const t=jQuery(e.currentTarget);this.elements.$hotspot.not(t).removeClass("e-hotspot--active"),t.toggleClass("e-hotspot--active")}}editorAddSequencedAnimation(){this.elements.$hotspot.toggleClass("e-hotspot--sequenced","yes"===this.getElementSettings("hotspot_sequenced_animation"))}hotspotSequencedAnimation(){const e=this.getElementSettings();if("no"===e.hotspot_sequenced_animation)return;const t=elementorModules.utils.Scroll.scrollObserver({callback:s=>{s.isInViewport&&(t.unobserve(this.$element[0]),this.elements.$hotspot.each(((t,s)=>{if(0===t)return;const n=e.hotspot_sequenced_animation_duration,i=t*((n?n.size:1e3)/this.elements.$hotspot.length);s.style.animationDelay=i+"ms"})))}});t.observe(this.$element[0])}setTooltipPositionControl(){const e=this.getElementSettings();void 0!==e.tooltip_animation&&e.tooltip_animation.match(/^e-hotspot--(slide|fade)-direction/)&&(this.elements.$tooltip.removeClass("e-hotspot--tooltip-animation-from-left e-hotspot--tooltip-animation-from-top e-hotspot--tooltip-animation-from-right e-hotspot--tooltip-animation-from-bottom"),this.elements.$tooltip.addClass("e-hotspot--tooltip-animation-from-"+e.tooltip_position))}onInit(...e){super.onInit(...e),this.hotspotSequencedAnimation(),this.setTooltipPositionControl(),window.elementor&&elementor.listenTo(elementor.channels.deviceMode,"change",(()=>this.onDeviceModeChange()))}onElementChange(e){e.startsWith("tooltip_position")&&this.setTooltipPositionControl(),e.startsWith("hotspot_sequenced_animation")&&this.editorAddSequencedAnimation()}}t.default=Hotspot},9698:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(4927));class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("lottie",i.default)}}t.default=_default},4927:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class lottieHandler extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{container:".e-lottie__container",containerLink:".e-lottie__container__link",animation:".e-lottie__animation",caption:".e-lottie__caption"},classes:{caption:"e-lottie__caption"}}}getDefaultElements(){const{selectors:e}=this.getSettings();return{$widgetWrapper:this.$element,$container:this.$element.find(e.container),$containerLink:this.$element.find(e.containerLink),$animation:this.$element.find(e.animation),$caption:this.$element.find(e.caption),$sectionParent:this.$element.closest(".elementor-section"),$columnParent:this.$element.closest(".elementor-column")}}onInit(...e){super.onInit(...e),this.lottie=null,this.state={isAnimationScrollUpdateNeededOnFirstLoad:!0,isNewLoopCycle:!1,isInViewport:!1,loop:!1,animationDirection:"forward",currentAnimationTrigger:"",effectsRelativeTo:"",hoverOutMode:"",hoverArea:"",caption:"",playAnimationCount:0,animationSpeed:0,linkTimeout:0,viewportOffset:{start:0,end:100}},this.intersectionObservers={animation:{observer:null,element:null},lazyload:{observer:null,element:null}},this.animationFrameRequest={timer:null,lastScrollY:0},this.listeners={collection:[],elements:{$widgetArea:{triggerAnimationHoverIn:null,triggerAnimationHoverOut:null},$container:{triggerAnimationClick:null}}},this.initLottie()}initLottie(){this.getLottieSettings().lazyload?this.lazyloadLottie():this.generateLottie()}lazyloadLottie(){this.intersectionObservers.lazyload.observer=elementorModules.utils.Scroll.scrollObserver({offset:"0px 0px 200px",callback:e=>{e.isInViewport&&(this.generateLottie(),this.intersectionObservers.lazyload.observer.unobserve(this.intersectionObservers.lazyload.element))}}),this.intersectionObservers.lazyload.element=this.elements.$container[0],this.intersectionObservers.lazyload.observer.observe(this.intersectionObservers.lazyload.element)}generateLottie(){this.createLottieInstance(),this.setLottieEvents()}createLottieInstance(){const e=this.getLottieSettings();this.lottie=bodymovin.loadAnimation({container:this.elements.$animation[0],path:this.getAnimationPath(),renderer:e.renderer,autoplay:!1,name:"lottie-widget"}),this.elements.$animation.data("lottie",this.lottie)}getAnimationPath(){var e,t;const s=this.getLottieSettings();return null!==(e=s.source_json)&&void 0!==e&&e.url&&"json"===s.source_json.url.toLowerCase().substr(-4)?s.source_json.url:null!==(t=s.source_external_url)&&void 0!==t&&t.url?s.source_external_url.url:elementorProFrontend.config.lottie.defaultAnimationUrl}setCaption(){const e=this.getLottieSettings();if("external_url"===e.source||"media_file"===e.source&&"custom"===e.caption_source){this.getCaptionElement().text(e.caption)}}getCaptionElement(){if(!this.elements.$caption.length){const{classes:e}=this.getSettings();return this.elements.$caption=jQuery("<p>",{class:e.caption}),this.elements.$container.append(this.elements.$caption),this.elements.$caption}return this.elements.$caption}setLottieEvents(){this.lottie.addEventListener("DOMLoaded",(()=>this.onLottieDomLoaded())),this.lottie.addEventListener("complete",(()=>this.onComplete()))}saveInitialValues(){var e;const t=this.getLottieSettings();this.lottie.__initialTotalFrames=this.lottie.totalFrames,this.lottie.__initialFirstFrame=this.lottie.firstFrame,this.state.currentAnimationTrigger=t.trigger,this.state.effectsRelativeTo=t.effects_relative_to,this.state.viewportOffset.start=t.viewport?t.viewport.sizes.start:0,this.state.viewportOffset.end=t.viewport?t.viewport.sizes.end:100,this.state.animationSpeed=null===(e=t.play_speed)||void 0===e?void 0:e.size,this.state.linkTimeout=t.link_timeout,this.state.caption=t.caption,this.state.loop=t.loop}setAnimationFirstFrame(){const e=this.getAnimationFrames();e.first=e.first-this.lottie.__initialFirstFrame,this.lottie.goToAndStop(e.first,!0)}initAnimationTrigger(){switch(this.getLottieSettings().trigger){case"none":this.playLottie();break;case"arriving_to_viewport":this.playAnimationWhenArrivingToViewport();break;case"bind_to_scroll":this.playAnimationWhenBindToScroll();break;case"on_click":this.bindAnimationClickEvents();break;case"on_hover":this.bindAnimationHoverEvents()}}playAnimationWhenArrivingToViewport(){const e=this.getOffset();this.intersectionObservers.animation.observer=elementorModules.utils.Scroll.scrollObserver({offset:`${e.end}% 0% ${e.start}%`,callback:e=>{e.isInViewport?(this.state.isInViewport=!0,this.playLottie()):(this.state.isInViewport=!1,this.lottie.pause())}}),this.intersectionObservers.animation.element=this.elements.$widgetWrapper[0],this.intersectionObservers.animation.observer.observe(this.intersectionObservers.animation.element)}getOffset(){const e=this.getLottieSettings();return{start:-e.viewport.sizes.start||0,end:-(100-e.viewport.sizes.end)||0}}playAnimationWhenBindToScroll(){const e=this.getLottieSettings(),t=this.getOffset();this.intersectionObservers.animation.observer=elementorModules.utils.Scroll.scrollObserver({offset:`${t.end}% 0% ${t.start}%`,callback:e=>this.onLottieIntersection(e)}),this.intersectionObservers.animation.element="viewport"===e.effects_relative_to?this.elements.$widgetWrapper[0]:document.documentElement,this.intersectionObservers.animation.observer.observe(this.intersectionObservers.animation.element)}updateAnimationByScrollPosition(){let e;e="page"===this.getLottieSettings().effects_relative_to?this.getLottiePagePercentage():"fixed"===this.getCurrentDeviceSetting("_position")?this.getLottieViewportHeightPercentage():this.getLottieViewportPercentage();let t=this.getFrameNumberByPercent(e);t-=this.lottie.__initialFirstFrame,this.lottie.goToAndStop(t,!0)}getLottieViewportPercentage(){return elementorModules.utils.Scroll.getElementViewportPercentage(this.elements.$widgetWrapper,this.getOffset())}getLottiePagePercentage(){return elementorModules.utils.Scroll.getPageScrollPercentage(this.getOffset())}getLottieViewportHeightPercentage(){return elementorModules.utils.Scroll.getPageScrollPercentage(this.getOffset(),window.innerHeight)}getFrameNumberByPercent(e){const t=this.getAnimationFrames();return e=Math.min(100,Math.max(0,e)),t.first+(t.last-t.first)*e/100}getAnimationFrames(){const e=this.getLottieSettings(),t=this.getAnimationCurrentFrame(),s=this.getAnimationRange().start,n=this.getAnimationRange().end;let i=this.lottie.__initialFirstFrame,o=0===this.lottie.__initialFirstFrame?this.lottie.__initialTotalFrames:this.lottie.__initialFirstFrame+this.lottie.__initialTotalFrames;return s&&s>i&&(i=s),n&&n<o&&(o=n),this.state.isNewLoopCycle||"bind_to_scroll"===e.trigger||(i=s&&s>t?s:t),"backward"===this.state.animationDirection&&this.isReverseMode()&&(i=t,o=s&&s>this.lottie.__initialFirstFrame?s:this.lottie.__initialFirstFrame),{first:i,last:o,current:t,total:this.lottie.__initialTotalFrames}}getAnimationRange(){const e=this.getLottieSettings();return{start:this.getInitialFrameNumberByPercent(e.start_point.size),end:this.getInitialFrameNumberByPercent(e.end_point.size)}}getInitialFrameNumberByPercent(e){return e=Math.min(100,Math.max(0,e)),this.lottie.__initialFirstFrame+(this.lottie.__initialTotalFrames-this.lottie.__initialFirstFrame)*e/100}getAnimationCurrentFrame(){return 0===this.lottie.firstFrame?this.lottie.currentFrame:this.lottie.firstFrame+this.lottie.currentFrame}setLinkTimeout(){var e;const t=this.getLottieSettings();"on_click"===t.trigger&&null!==(e=t.custom_link)&&void 0!==e&&e.url&&t.link_timeout&&this.elements.$containerLink.on("click",(e=>{e.preventDefault(),this.isEdit||setTimeout((()=>{const e="on"===t.custom_link.is_external?"_blank":"_self";window.open(t.custom_link.url,e)}),t.link_timeout)}))}bindAnimationClickEvents(){this.listeners.elements.$container.triggerAnimationClick=()=>{this.playLottie()},this.addSessionEventListener(this.elements.$container,"click",this.listeners.elements.$container.triggerAnimationClick)}getLottieSettings(){const e=this.getElementSettings();return{...e,lazyload:"yes"===e.lazyload,loop:"yes"===e.loop}}playLottie(){const e=this.getAnimationFrames();this.lottie.stop(),this.lottie.playSegments([e.first,e.last],!0),this.state.isNewLoopCycle=!1}bindAnimationHoverEvents(){this.createAnimationHoverInEvents(),this.createAnimationHoverOutEvents()}createAnimationHoverInEvents(){const e=this.getLottieSettings(),t=this.getHoverAreaElement();this.state.hoverArea=e.hover_area,this.listeners.elements.$widgetArea.triggerAnimationHoverIn=()=>{this.state.animationDirection="forward",this.playLottie()},this.addSessionEventListener(t,"mouseenter",this.listeners.elements.$widgetArea.triggerAnimationHoverIn)}addSessionEventListener(e,t,s){e.on(t,s),this.listeners.collection.push({$el:e,event:t,callback:s})}createAnimationHoverOutEvents(){const e=this.getLottieSettings(),t=this.getHoverAreaElement();"pause"!==e.on_hover_out&&"reverse"!==e.on_hover_out||(this.state.hoverOutMode=e.on_hover_out,this.listeners.elements.$widgetArea.triggerAnimationHoverOut=()=>{"pause"===e.on_hover_out?this.lottie.pause():(this.state.animationDirection="backward",this.playLottie())},this.addSessionEventListener(t,"mouseleave",this.listeners.elements.$widgetArea.triggerAnimationHoverOut))}getHoverAreaElement(){const e=this.getLottieSettings();return"section"===e.hover_area?this.elements.$sectionParent:"column"===e.hover_area?this.elements.$columnParent:this.elements.$container}setLoopOnAnimationComplete(){const e=this.getLottieSettings();this.state.isNewLoopCycle=!0,e.loop&&!this.isReverseMode()?this.setLoopWhenNotReverse():e.loop&&this.isReverseMode()?this.setReverseAnimationOnLoop():!e.loop&&this.isReverseMode()&&this.setReverseAnimationOnSingleTrigger()}isReverseMode(){const e=this.getLottieSettings();return"yes"===e.reverse_animation||"reverse"===e.on_hover_out&&"backward"===this.state.animationDirection}setLoopWhenNotReverse(){const e=this.getLottieSettings();e.number_of_times>0?(this.state.playAnimationCount++,this.state.playAnimationCount<e.number_of_times?this.playLottie():this.state.playAnimationCount=0):this.playLottie()}setReverseAnimationOnLoop(){const e=this.getLottieSettings();!e.number_of_times||this.state.playAnimationCount<e.number_of_times?(this.state.animationDirection="forward"===this.state.animationDirection?"backward":"forward",this.playLottie(),"backward"===this.state.animationDirection&&this.state.playAnimationCount++):(this.state.playAnimationCount=0,this.state.animationDirection="forward")}setReverseAnimationOnSingleTrigger(){this.state.playAnimationCount<1?(this.state.playAnimationCount++,this.state.animationDirection="backward",this.playLottie()):this.state.playAnimationCount>=1&&"forward"===this.state.animationDirection?(this.state.animationDirection="backward",this.playLottie()):(this.state.playAnimationCount=0,this.state.animationDirection="forward")}setAnimationSpeed(){const e=this.getLottieSettings();e.play_speed&&this.lottie.setSpeed(e.play_speed.size)}onElementChange(){this.updateLottieValues(),this.resetAnimationTrigger()}updateLottieValues(){var e;const t=this.getLottieSettings();[{sourceVal:null===(e=t.play_speed)||void 0===e?void 0:e.size,stateProp:"animationSpeed",callback:()=>this.setAnimationSpeed()},{sourceVal:t.link_timeout,stateProp:"linkTimeout",callback:()=>this.setLinkTimeout()},{sourceVal:t.caption,stateProp:"caption",callback:()=>this.setCaption()},{sourceVal:t.effects_relative_to,stateProp:"effectsRelativeTo",callback:()=>this.updateAnimationByScrollPosition()},{sourceVal:t.loop,stateProp:"loop",callback:()=>this.onLoopStateChange()}].forEach((e=>{void 0!==e.sourceVal&&e.sourceVal!==this.state[e.stateProp]&&(this.state[e.stateProp]=e.sourceVal,e.callback())}))}onLoopStateChange(){const e="arriving_to_viewport"===this.state.currentAnimationTrigger&&this.state.isInViewport;this.state.loop&&(e||"none"===this.state.currentAnimationTrigger)&&this.playLottie()}resetAnimationTrigger(){const e=this.getLottieSettings(),t=e.trigger!==this.state.currentAnimationTrigger,s=!!e.viewport&&this.isViewportOffsetChange(),n=!!e.on_hover_out&&this.isHoverOutModeChange(),i=!!e.hover_area&&this.isHoverAreaChange();(t||s||n||i)&&(this.removeAnimationFrameRequests(),this.removeObservers(),this.removeEventListeners(),this.initAnimationTrigger())}isViewportOffsetChange(){const e=this.getLottieSettings(),t=e.viewport.sizes.start!==this.state.viewportOffset.start,s=e.viewport.sizes.end!==this.state.viewportOffset.end;return t||s}isHoverOutModeChange(){return this.getLottieSettings().on_hover_out!==this.state.hoverOutMode}isHoverAreaChange(){return this.getLottieSettings().hover_area!==this.state.hoverArea}removeEventListeners(){this.listeners.collection.forEach((e=>{e.$el.off(e.event,null,e.callback)}))}removeObservers(){for(const e in this.intersectionObservers)this.intersectionObservers[e].observer&&this.intersectionObservers[e].element&&this.intersectionObservers[e].observer.unobserve(this.intersectionObservers[e].element)}removeAnimationFrameRequests(){cancelAnimationFrame(this.animationFrameRequest.timer)}onDestroy(){super.onDestroy(),this.destroyLottie()}destroyLottie(){this.removeAnimationFrameRequests(),this.removeObservers(),this.removeEventListeners(),this.elements.$animation.removeData("lottie"),this.lottie&&this.lottie.destroy()}onLottieDomLoaded(){this.saveInitialValues(),this.setAnimationSpeed(),this.setLinkTimeout(),this.setCaption(),this.setAnimationFirstFrame(),this.initAnimationTrigger()}onComplete(){this.setLoopOnAnimationComplete()}onLottieIntersection(e){if(e.isInViewport)this.state.isAnimationScrollUpdateNeededOnFirstLoad&&(this.state.isAnimationScrollUpdateNeededOnFirstLoad=!1,this.updateAnimationByScrollPosition()),this.animationFrameRequest.timer=requestAnimationFrame((()=>this.onAnimationFrameRequest()));else{const t=this.getAnimationFrames(),s="up"===e.intersectionScrollDirection?t.first:t.last;this.state.isAnimationScrollUpdateNeededOnFirstLoad=!1,cancelAnimationFrame(this.animationFrameRequest.timer),this.lottie.goToAndStop(s,!0)}}onAnimationFrameRequest(){window.scrollY!==this.animationFrameRequest.lastScrollY&&(this.updateAnimationByScrollPosition(),this.animationFrameRequest.lastScrollY=window.scrollY),this.animationFrameRequest.timer=requestAnimationFrame((()=>this.onAnimationFrameRequest()))}}t.default=lottieHandler},9122:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(5389));class _default extends elementorModules.Module{constructor(){super(),jQuery.fn.smartmenus&&(jQuery.SmartMenus.prototype.isCSSOn=function(){return!0},elementorFrontend.config.is_rtl&&(jQuery.fn.smartmenus.defaults.rightToLeftSubMenus=!0)),elementorFrontend.elementsHandler.attachHandler("nav-menu",i.default)}}t.default=_default},5389:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=elementorModules.frontend.handlers.Base.extend({stretchElement:null,getDefaultSettings:()=>({selectors:{menu:".elementor-nav-menu",anchorLink:".elementor-nav-menu--main .elementor-item-anchor",dropdownMenu:".elementor-nav-menu__container.elementor-nav-menu--dropdown",menuToggle:".elementor-menu-toggle"}}),getDefaultElements(){var e=this.getSettings("selectors"),t={};return t.$menu=this.$element.find(e.menu),t.$anchorLink=this.$element.find(e.anchorLink),t.$dropdownMenu=this.$element.find(e.dropdownMenu),t.$dropdownMenuFinalItems=t.$dropdownMenu.find(".menu-item:not(.menu-item-has-children) > a"),t.$menuToggle=this.$element.find(e.menuToggle),t.$links=t.$dropdownMenu.find("a.elementor-item"),t},bindEvents(){this.elements.$menu.length&&(this.elements.$menuToggle.on("click",this.toggleMenu.bind(this)),this.getElementSettings("full_width")&&this.elements.$dropdownMenuFinalItems.on("click",this.toggleMenu.bind(this,!1)),elementorFrontend.addListenerOnce(this.$element.data("model-cid"),"resize",this.stretchMenu))},initStretchElement(){this.stretchElement=new elementorModules.frontend.tools.StretchElement({element:this.elements.$dropdownMenu})},toggleNavLinksTabIndex(e=!0){this.elements.$links.attr("tabindex",e?0:-1)},toggleMenu(e){var t=this.elements.$menuToggle.hasClass("elementor-active");"boolean"!=typeof e&&(e=!t),this.elements.$menuToggle.attr("aria-expanded",e),this.elements.$dropdownMenu.attr("aria-hidden",!e),this.elements.$menuToggle.toggleClass("elementor-active",e),this.toggleNavLinksTabIndex(e),e&&this.getElementSettings("full_width")&&this.stretchElement.stretch()},followMenuAnchors(){var e=this;e.elements.$anchorLink.each((function(){location.pathname===this.pathname&&""!==this.hash&&e.followMenuAnchor(jQuery(this))}))},followMenuAnchor(e){const t=e[0].hash;let s,n=-300;try{s=jQuery(decodeURIComponent(t))}catch(e){return}if(s.length){if(!s.hasClass("elementor-menu-anchor")){var i=jQuery(window).height()/2;n=-s.outerHeight()+i}elementorFrontend.waypoint(s,(function(t){"down"===t?e.addClass("elementor-item-active"):e.removeClass("elementor-item-active")}),{offset:"50%",triggerOnce:!1}),elementorFrontend.waypoint(s,(function(t){"down"===t?e.removeClass("elementor-item-active"):e.addClass("elementor-item-active")}),{offset:n,triggerOnce:!1})}},stretchMenu(){this.getElementSettings("full_width")?(this.stretchElement.stretch(),this.elements.$dropdownMenu.css("top",this.elements.$menuToggle.outerHeight())):this.stretchElement.reset()},onInit(){if(elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),!this.elements.$menu.length)return;const e=this.getElementSettings().submenu_icon.value;let t="";e&&(t=e.indexOf("<")>-1?e:`<i class="${e}"></i>`),this.elements.$menu.smartmenus({subIndicators:""!==t,subIndicatorsText:t,subIndicatorsPos:"append",subMenusMaxWidth:"1000px"}),this.initStretchElement(),this.stretchMenu(),elementorFrontend.isEditMode()||this.followMenuAnchors()},onElementChange(e){"full_width"===e&&this.stretchMenu()}});t.default=s},2731:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(9545)),o=n(s(4339)),r=s(2993);class _default extends elementorModules.frontend.Document{bindEvents(){const e=this.getDocumentSettings("open_selector");e&&elementorFrontend.elements.$body.on("click",e,this.showModal.bind(this))}startTiming(){new o.default(this.getDocumentSettings("timing"),this).check()&&this.initTriggers()}initTriggers(){this.triggers=new i.default(this.getDocumentSettings("triggers"),this)}showModal(e){const t=this.getDocumentSettings();if(!this.isEdit){if(!elementorFrontend.isWPPreviewMode()){if(this.getStorage("disable"))return;if(e&&elementorProFrontend.modules.popup.popupPopped&&t.avoid_multiple_popups)return}this.$element=jQuery(this.elementHTML),this.elements.$elements=this.$element.find(this.getSettings("selectors.elements"))}const s=this.getModal(),n=s.getElements("closeButton");s.setMessage(this.$element).show(),this.isEdit||(t.close_button_delay&&(n.hide(),clearTimeout(this.closeButtonTimeout),this.closeButtonTimeout=setTimeout((()=>n.show()),1e3*t.close_button_delay)),super.runElementsHandlers()),this.setEntranceAnimation(),t.timing&&t.timing.times_count||this.countTimes(),elementorProFrontend.modules.popup.popupPopped=!0}setEntranceAnimation(){const e=this.getModal().getElements("widgetContent"),t=this.getDocumentSettings(),s=elementorFrontend.getCurrentDeviceSetting(t,"entrance_animation");if(this.currentAnimation&&e.removeClass(this.currentAnimation),this.currentAnimation=s,!s)return;const n=t.entrance_animation_duration.size;e.addClass(s),setTimeout((()=>e.removeClass(s)),1e3*n)}setExitAnimation(){const e=this.getModal(),t=this.getDocumentSettings(),s=e.getElements("widgetContent"),n=elementorFrontend.getCurrentDeviceSetting(t,"exit_animation"),i=n?t.entrance_animation_duration.size:0;setTimeout((()=>{n&&s.removeClass(n+" reverse"),this.isEdit||(this.$element.remove(),e.getElements("widget").hide())}),1e3*i),n&&s.addClass(n+" reverse")}initModal(){let e;this.getModal=()=>{if(!e){const t=this.getDocumentSettings(),s=this.getSettings("id"),triggerPopupEvent=e=>elementorFrontend.elements.$document.trigger("elementor/popup/"+e,[s,this]);let n="elementor-popup-modal";t.classes&&(n+=" "+t.classes);const i={id:"elementor-popup-modal-"+s,className:n,closeButton:!0,preventScroll:t.prevent_scroll,onShow:()=>triggerPopupEvent("show"),onHide:()=>triggerPopupEvent("hide"),effects:{hide:()=>{t.timing&&t.timing.times_count&&this.countTimes(),this.setExitAnimation()},show:"show"},hide:{auto:!!t.close_automatically,autoDelay:1e3*t.close_automatically,onBackgroundClick:!t.prevent_close_on_background_click,onOutsideClick:!t.prevent_close_on_background_click,onEscKeyPress:!t.prevent_close_on_esc_key,ignore:".flatpickr-calendar"},position:{enable:!1}};elementorFrontend.config.experimentalFeatures.e_font_icon_svg&&(i.closeButtonOptions={iconElement:r.close.element}),i.closeButtonClass="eicon-close",e=elementorFrontend.getDialogsManager().createWidget("lightbox",i),e.getElements("widgetContent").addClass("animated");const o=e.getElements("closeButton");this.isEdit&&(o.off("click"),e.hide=()=>{}),this.setCloseButtonPosition()}return e}}setCloseButtonPosition(){const e=this.getModal(),t=this.getDocumentSettings("close_button_position");e.getElements("closeButton").appendTo(e.getElements("outside"===t?"widget":"widgetContent"))}disable(){this.setStorage("disable",!0)}setStorage(e,t,s){elementorFrontend.storage.set(`popup_${this.getSettings("id")}_${e}`,t,s)}getStorage(e,t){return elementorFrontend.storage.get(`popup_${this.getSettings("id")}_${e}`,t)}countTimes(){const e=this.getStorage("times")||0;this.setStorage("times",e+1)}runElementsHandlers(){}async onInit(){super.onInit(),window.DialogsManager||await elementorFrontend.utils.assetsLoader.load("script","dialog"),this.initModal(),this.isEdit?this.showModal():(this.$element.show().remove(),this.elementHTML=this.$element[0].outerHTML,elementorFrontend.isEditMode()||(elementorFrontend.isWPPreviewMode()&&elementorFrontend.config.post.id===this.getSettings("id")?this.showModal():this.startTiming()))}onSettingsChange(e){const t=Object.keys(e.changed)[0];-1!==t.indexOf("entrance_animation")&&this.setEntranceAnimation(),"exit_animation"===t&&this.setExitAnimation(),"close_button_position"===t&&this.setCloseButtonPosition()}}t.default=_default},651:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(2731)),o=n(s(3573));class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.hooks.addAction("elementor/frontend/documents-manager/init-classes",this.addDocumentClass),elementorFrontend.elementsHandler.attachHandler("form",o.default),elementorFrontend.on("components:init",(()=>this.onFrontendComponentsInit())),elementorFrontend.isEditMode()||elementorFrontend.isWPPreviewMode()||this.setViewsAndSessions()}addDocumentClass(e){e.addDocumentClass("popup",i.default)}setViewsAndSessions(){const e=elementorFrontend.storage.get("pageViews")||0;elementorFrontend.storage.set("pageViews",e+1);if(!elementorFrontend.storage.get("activeSession",{session:!0})){elementorFrontend.storage.set("activeSession",!0,{session:!0});const e=elementorFrontend.storage.get("sessions")||0;elementorFrontend.storage.set("sessions",e+1)}}showPopup(e){const t=elementorFrontend.documentsManager.documents[e.id];if(!t)return;const s=t.getModal();e.toggle&&s.isVisible()?s.hide():t.showModal()}closePopup(e,t){const s=jQuery(t.target).parents('[data-elementor-type="popup"]').data("elementorId");if(!s)return;const n=elementorFrontend.documentsManager.documents[s];n.getModal().hide(),e.do_not_show_again&&n.disable()}onFrontendComponentsInit(){elementorFrontend.utils.urlActions.addAction("popup:open",(e=>this.showPopup(e))),elementorFrontend.utils.urlActions.addAction("popup:close",((e,t)=>this.closePopup(e,t)))}}t.default=_default},3573:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=elementorModules.frontend.handlers.Base.extend({getDefaultSettings:()=>({selectors:{form:".elementor-form"}}),getDefaultElements(){var e=this.getSettings("selectors"),t={};return t.$form=this.$element.find(e.form),t},bindEvents(){this.elements.$form.on("submit_success",this.handleFormAction)},handleFormAction(e,t){if(void 0===t.data.popup)return;const s=t.data.popup;if("open"===s.action)return elementorProFrontend.modules.popup.showPopup(s);setTimeout((()=>elementorProFrontend.modules.popup.closePopup(s,e)),1e3)}});t.default=s},4339:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(275)),o=n(s(1795)),r=n(s(2894)),a=n(s(1306)),l=n(s(9912)),d=n(s(3245)),c=n(s(6850)),h=n(s(8937));class _default extends elementorModules.Module{constructor(e,t){super(e),this.document=t,this.timingClasses={page_views:i.default,sessions:o.default,url:r.default,sources:a.default,logged_in:l.default,devices:d.default,times:c.default,browsers:h.default}}check(){const e=this.getSettings();let t=!0;return jQuery.each(this.timingClasses,((s,n)=>{if(!e[s])return;new n(e,this.document).check()||(t=!1)})),t}}t.default=_default},3565:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(e,t){super(e),this.document=t}getTimingSetting(e){return this.getSettings(this.getName()+"_"+e)}}t.default=_default},8937:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(3565));class _default extends i.default{getName(){return"browsers"}check(){if("all"===this.getTimingSetting("browsers"))return!0;const e=this.getTimingSetting("browsers_options"),t=elementorFrontend.utils.environment;return e.some((e=>t[e]))}}t.default=_default},3245:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(3565));class _default extends i.default{getName(){return"devices"}check(){return-1!==this.getTimingSetting("devices").indexOf(elementorFrontend.getCurrentDeviceMode())}}t.default=_default},9912:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(3565));class _default extends i.default{getName(){return"logged_in"}check(){const e=elementorFrontend.config.user;if(!e)return!0;if("all"===this.getTimingSetting("users"))return!1;return!this.getTimingSetting("roles").filter((t=>-1!==e.roles.indexOf(t))).length}}t.default=_default},275:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(3565));class _default extends i.default{getName(){return"page_views"}check(){const e=elementorFrontend.storage.get("pageViews"),t=this.getName();let s=this.document.getStorage(t+"_initialPageViews");return s||(this.document.setStorage(t+"_initialPageViews",e),s=e),e-s>=this.getTimingSetting("views")}}t.default=_default},1795:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(3565));class _default extends i.default{getName(){return"sessions"}check(){const e=elementorFrontend.storage.get("sessions"),t=this.getName();let s=this.document.getStorage(t+"_initialSessions");return s||(this.document.setStorage(t+"_initialSessions",e),s=e),e-s>=this.getTimingSetting("sessions")}}t.default=_default},1306:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(3565));class _default extends i.default{getName(){return"sources"}check(){const e=this.getTimingSetting("sources");if(3===e.length)return!0;const t=document.referrer.replace(/https?:\/\/(?:www\.)?/,"");return 0===t.indexOf(location.host.replace("www.",""))?-1!==e.indexOf("internal"):-1!==e.indexOf("external")||-1!==e.indexOf("search")&&/^(google|yahoo|bing|yandex|baidu)\./.test(t)}}t.default=_default},6850:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(3565));class _default extends i.default{getName(){return"times"}check(){const e=this.document.getStorage("times")||0;return this.getTimingSetting("times")>e}}t.default=_default},2894:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(3565));class _default extends i.default{getName(){return"url"}check(){const e=this.getTimingSetting("url"),t=this.getTimingSetting("action"),s=document.referrer;if("regex"!==t)return"hide"===t^-1!==s.indexOf(e);let n;try{n=new RegExp(e)}catch(e){return!1}return n.test(s)}}t.default=_default},9545:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(974)),o=n(s(8330)),r=n(s(1220)),a=n(s(9863)),l=n(s(1055)),d=n(s(9972));class _default extends elementorModules.Module{constructor(e,t){super(e),this.document=t,this.triggers=[],this.triggerClasses={page_load:i.default,scrolling:o.default,scrolling_to:r.default,click:a.default,inactivity:l.default,exit_intent:d.default},this.runTriggers()}runTriggers(){const e=this.getSettings();jQuery.each(this.triggerClasses,((t,s)=>{if(!e[t])return;const n=new s(e,(()=>this.onTriggerFired()));n.run(),this.triggers.push(n)}))}destroyTriggers(){this.triggers.forEach((e=>e.destroy())),this.triggers=[]}onTriggerFired(){this.document.showModal(!0),this.destroyTriggers()}}t.default=_default},144:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(e,t){super(e),this.callback=t}getTriggerSetting(e){return this.getSettings(this.getName()+"_"+e)}}t.default=_default},9863:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(144));class _default extends i.default{constructor(...e){super(...e),this.checkClick=this.checkClick.bind(this),this.clicksCount=0}getName(){return"click"}checkClick(){this.clicksCount++,this.clicksCount===this.getTriggerSetting("times")&&this.callback()}run(){elementorFrontend.elements.$body.on("click",this.checkClick)}destroy(){elementorFrontend.elements.$body.off("click",this.checkClick)}}t.default=_default},9972:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(144));class _default extends i.default{constructor(...e){super(...e),this.detectExitIntent=this.detectExitIntent.bind(this)}getName(){return"exit_intent"}detectExitIntent(e){e.clientY<=0&&this.callback()}run(){elementorFrontend.elements.$window.on("mouseleave",this.detectExitIntent)}destroy(){elementorFrontend.elements.$window.off("mouseleave",this.detectExitIntent)}}t.default=_default},1055:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(144));class _default extends i.default{constructor(...e){super(...e),this.restartTimer=this.restartTimer.bind(this)}getName(){return"inactivity"}run(){this.startTimer(),elementorFrontend.elements.$document.on("keypress mousemove",this.restartTimer)}startTimer(){this.timeOut=setTimeout(this.callback,1e3*this.getTriggerSetting("time"))}clearTimer(){clearTimeout(this.timeOut)}restartTimer(){this.clearTimer(),this.startTimer()}destroy(){this.clearTimer(),elementorFrontend.elements.$document.off("keypress mousemove",this.restartTimer)}}t.default=_default},974:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(144));class _default extends i.default{getName(){return"page_load"}run(){this.timeout=setTimeout(this.callback,1e3*this.getTriggerSetting("delay"))}destroy(){clearTimeout(this.timeout)}}t.default=_default},1220:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(144));class _default extends i.default{getName(){return"scrolling_to"}run(){let e;try{e=jQuery(this.getTriggerSetting("selector"))}catch(e){return}this.waypointInstance=elementorFrontend.waypoint(e,this.callback)[0]}destroy(){this.waypointInstance&&this.waypointInstance.destroy()}}t.default=_default},8330:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(144));class _default extends i.default{constructor(...e){super(...e),this.checkScroll=this.checkScroll.bind(this),this.lastScrollOffset=0}getName(){return"scrolling"}checkScroll(){const e=scrollY>this.lastScrollOffset?"down":"up",t=this.getTriggerSetting("direction");if(this.lastScrollOffset=scrollY,e!==t)return;if("up"===e)return void this.callback();const s=elementorFrontend.elements.$document.height()-innerHeight;scrollY/s*100>=this.getTriggerSetting("offset")&&this.callback()}run(){elementorFrontend.elements.$window.on("scroll",this.checkScroll)}destroy(){elementorFrontend.elements.$window.off("scroll",this.checkScroll)}}t.default=_default},4484:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(2926)),o=n(s(8014)),r=n(s(2763)),a=n(s(9738));class _default extends elementorModules.Module{constructor(){super(),["classic","full_content","cards"].forEach((e=>{elementorFrontend.elementsHandler.attachHandler("posts",a.default,e)})),elementorFrontend.elementsHandler.attachHandler("posts",i.default,"classic"),elementorFrontend.elementsHandler.attachHandler("posts",i.default,"full_content"),elementorFrontend.elementsHandler.attachHandler("posts",o.default,"cards"),elementorFrontend.elementsHandler.attachHandler("portfolio",r.default)}}t.default=_default},8014:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(2926)).default.extend({getSkinPrefix:()=>"cards_"});t.default=i},9738:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class LoadMore extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{postsContainer:".elementor-posts-container",loadMoreButton:".elementor-button",loadMoreSpinnerWrapper:".e-load-more-spinner",loadMoreSpinner:".e-load-more-spinner i, .e-load-more-spinner svg",loadMoreAnchor:".e-load-more-anchor"},classes:{loadMoreSpin:"eicon-animation-spin",loadMoreIsLoading:"e-load-more-pagination-loading",loadMorePaginationEnd:"e-load-more-pagination-end",loadMoreNoSpinner:"e-load-more-no-spinner"}}}getDefaultElements(){const e=this.getSettings("selectors");return{postsWidgetWrapper:this.$element[0],postsContainer:this.$element[0].querySelector(e.postsContainer),loadMoreButton:this.$element[0].querySelector(e.loadMoreButton),loadMoreSpinnerWrapper:this.$element[0].querySelector(e.loadMoreSpinnerWrapper),loadMoreSpinner:this.$element[0].querySelector(e.loadMoreSpinner),loadMoreAnchor:this.$element[0].querySelector(e.loadMoreAnchor)}}bindEvents(){super.bindEvents(),this.elements.loadMoreButton&&this.elements.loadMoreButton.addEventListener("click",(e=>{this.isLoading||(e.preventDefault(),this.handlePostsQuery())}))}onInit(){super.onInit(),this.classes=this.getSettings("classes"),this.isLoading=!1;const e=this.getElementSettings("pagination_type");"load_more_on_click"!==e&&"load_more_infinite_scroll"!==e||(this.isInfinteScroll="load_more_infinite_scroll"===e,this.isSpinnerAvailable=this.getElementSettings("load_more_spinner").value,this.isSpinnerAvailable||this.elements.postsWidgetWrapper.classList.add(this.classes.loadMoreNoSpinner),this.isInfinteScroll?this.handleInfiniteScroll():this.elements.loadMoreSpinnerWrapper&&this.elements.loadMoreButton.insertAdjacentElement("beforeEnd",this.elements.loadMoreSpinnerWrapper),this.elementId=this.getID(),this.postId=elementorFrontendConfig.post.id,this.currentPage=parseInt(this.elements.loadMoreAnchor.getAttribute("data-page")),this.maxPage=parseInt(this.elements.loadMoreAnchor.getAttribute("data-max-page")),this.currentPage===this.maxPage&&this.handleUiWhenNoPosts())}handleInfiniteScroll(){this.isEdit||(this.observer=elementorModules.utils.Scroll.scrollObserver({callback:e=>{e.isInViewport&&!this.isLoading&&(this.observer.unobserve(this.elements.loadMoreAnchor),this.handlePostsQuery().then((()=>{this.currentPage!==this.maxPage&&this.observer.observe(this.elements.loadMoreAnchor)})))}}),this.observer.observe(this.elements.loadMoreAnchor))}handleUiBeforeLoading(){this.isLoading=!0,this.elements.loadMoreSpinner&&this.elements.loadMoreSpinner.classList.add(this.classes.loadMoreSpin),this.elements.postsWidgetWrapper.classList.add(this.classes.loadMoreIsLoading)}handleUiAfterLoading(){this.isLoading=!1,this.elements.loadMoreSpinner&&this.elements.loadMoreSpinner.classList.remove(this.classes.loadMoreSpin),this.isInfinteScroll&&this.elements.loadMoreSpinnerWrapper&&this.elements.loadMoreAnchor.insertAdjacentElement("afterend",this.elements.loadMoreSpinnerWrapper),this.elements.postsWidgetWrapper.classList.remove(this.classes.loadMoreIsLoading)}handleUiWhenNoPosts(){this.elements.postsWidgetWrapper.classList.add(this.classes.loadMorePaginationEnd)}handleSuccessFetch(e){this.handleUiAfterLoading();const t=e.querySelectorAll(".elementor-posts-container > article"),s=e.querySelector(".e-load-more-anchor").getAttribute("data-next-page"),n=[...t].reduce(((e,t)=>e+t.outerHTML),"");this.elements.postsContainer.insertAdjacentHTML("beforeend",n),this.elements.loadMoreAnchor.setAttribute("data-page",this.currentPage),this.elements.loadMoreAnchor.setAttribute("data-next-page",s),this.currentPage===this.maxPage&&this.handleUiWhenNoPosts()}handlePostsQuery(){this.handleUiBeforeLoading(),this.currentPage++;const e=this.elements.loadMoreAnchor.getAttribute("data-next-page");return fetch(e).then((e=>e.text())).then((e=>{const t=(new DOMParser).parseFromString(e,"text/html");this.handleSuccessFetch(t)})).catch((e=>{console.warn("Something went wrong.",e)}))}}t.default=LoadMore},2763:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(2926)),o=i.default.extend({isActive:e=>e.$element.find(".elementor-portfolio").length,getSkinPrefix:()=>"",getDefaultSettings(){var e=i.default.prototype.getDefaultSettings.apply(this,arguments);return e.transitionDuration=450,jQuery.extend(e.classes,{active:"elementor-active",item:"elementor-portfolio-item",ghostItem:"elementor-portfolio-ghost-item"}),e},getDefaultElements(){var e=i.default.prototype.getDefaultElements.apply(this,arguments);return e.$filterButtons=this.$element.find(".elementor-portfolio__filter"),e},getOffset(e,t,s){var n=this.getSettings(),i=this.elements.$postsContainer.width()/n.colsCount-t;return{start:(t+(i+=i/(n.colsCount-1)))*(e%n.colsCount),top:(s+i)*Math.floor(e/n.colsCount)}},getClosureMethodsNames(){return i.default.prototype.getClosureMethodsNames.apply(this,arguments).concat(["onFilterButtonClick"])},filterItems(e){var t=this.elements.$posts,s=this.getSettings("classes.active"),n=".elementor-filter-"+e;"__all"!==e?(t.not(n).removeClass(s),t.filter(n).addClass(s)):t.addClass(s)},removeExtraGhostItems(){var e=this.getSettings(),t=this.elements.$posts.filter(":visible"),s=(e.colsCount-t.length%e.colsCount)%e.colsCount;this.elements.$postsContainer.find("."+e.classes.ghostItem).slice(s).remove()},handleEmptyColumns(){this.removeExtraGhostItems();for(var e=this.getSettings(),t=this.elements.$posts.filter(":visible"),s=this.elements.$postsContainer.find("."+e.classes.ghostItem),n=(e.colsCount-(t.length+s.length)%e.colsCount)%e.colsCount,i=0;i<n;i++)this.elements.$postsContainer.append(jQuery("<div>",{class:e.classes.item+" "+e.classes.ghostItem}))},showItems(e){e.show(),setTimeout((function(){e.css({opacity:1})}))},hideItems(e){e.hide()},arrangeGrid(){var e=jQuery,t=this,s=t.getSettings(),n=t.elements.$posts.filter("."+s.classes.active),i=t.elements.$posts.not("."+s.classes.active),o=t.elements.$posts.filter(":visible"),r=n.add(o),a=n.filter(":visible"),l=n.filter(":hidden"),d=i.filter(":visible"),c=o.outerWidth(),h=o.outerHeight();if(t.elements.$posts.css("transition-duration",s.transitionDuration+"ms"),t.showItems(l),t.isEdit&&t.fitImages(),t.handleEmptyColumns(),t.isMasonryEnabled())return t.hideItems(d),t.showItems(l),t.handleEmptyColumns(),void t.runMasonry();d.css({opacity:0,transform:"scale3d(0.2, 0.2, 1)"}),a.each((function(){var s=e(this),n=t.getOffset(r.index(s),c,h),i=t.getOffset(o.index(s),c,h);n.start===i.start&&n.top===i.top||(i.start-=n.start,i.top-=n.top,elementorFrontend.config.is_rtl&&(i.start*=-1),s.css({transitionDuration:"",transform:"translate3d("+i.start+"px, "+i.top+"px, 0)"}))})),setTimeout((function(){n.each((function(){var i=e(this),o=t.getOffset(r.index(i),c,h),a=t.getOffset(n.index(i),c,h);i.css({transitionDuration:s.transitionDuration+"ms"}),a.start-=o.start,a.top-=o.top,elementorFrontend.config.is_rtl&&(a.start*=-1),setTimeout((function(){i.css("transform","translate3d("+a.start+"px, "+a.top+"px, 0)")}))}))})),setTimeout((function(){t.hideItems(d),n.css({transitionDuration:"",transform:"translate3d(0px, 0px, 0px)"}),t.handleEmptyColumns()}),s.transitionDuration)},activeFilterButton(e){var t=this.getSettings("classes.active"),s=this.elements.$filterButtons,n=s.filter('[data-filter="'+e+'"]');s.removeClass(t),n.addClass(t)},setFilter(e){this.activeFilterButton(e),this.filterItems(e),this.arrangeGrid()},refreshGrid(){this.setColsCountSettings(),this.arrangeGrid()},bindEvents(){i.default.prototype.bindEvents.apply(this,arguments),this.elements.$filterButtons.on("click",this.onFilterButtonClick)},isMasonryEnabled(){return!!this.getElementSettings("masonry")},run(){i.default.prototype.run.apply(this,arguments),this.setColsCountSettings(),this.setFilter("__all"),this.handleEmptyColumns()},onFilterButtonClick(e){this.setFilter(jQuery(e.currentTarget).data("filter"))},onWindowResize(){i.default.prototype.onWindowResize.apply(this,arguments),this.refreshGrid()},onElementChange(e){i.default.prototype.onElementChange.apply(this,arguments),"classic_item_ratio"===e&&this.refreshGrid()}});t.default=o},2926:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=elementorModules.frontend.handlers.Base.extend({getSkinPrefix:()=>"classic_",bindEvents(){var e=this.getModelCID();elementorFrontend.addListenerOnce(e,"resize",this.onWindowResize)},getClosureMethodsNames(){return elementorModules.frontend.handlers.Base.prototype.getClosureMethodsNames.apply(this,arguments).concat(["fitImages","onWindowResize","runMasonry"])},getDefaultSettings:()=>({classes:{fitHeight:"elementor-fit-height",hasItemRatio:"elementor-has-item-ratio"},selectors:{postsContainer:".elementor-posts-container",post:".elementor-post",postThumbnail:".elementor-post__thumbnail",postThumbnailImage:".elementor-post__thumbnail img"}}),getDefaultElements(){var e=this.getSettings("selectors");return{$postsContainer:this.$element.find(e.postsContainer),$posts:this.$element.find(e.post)}},fitImage(e){var t=this.getSettings(),s=e.find(t.selectors.postThumbnail),n=s.find("img")[0];if(n){var i=s.outerHeight()/s.outerWidth(),o=n.naturalHeight/n.naturalWidth;s.toggleClass(t.classes.fitHeight,o<i)}},fitImages(){var e=jQuery,t=this,s=getComputedStyle(this.$element[0],":after").content,n=this.getSettings();this.elements.$postsContainer.toggleClass(n.classes.hasItemRatio,!!s.match(/\d/)),t.isMasonryEnabled()||this.elements.$posts.each((function(){var s=e(this),i=s.find(n.selectors.postThumbnailImage);t.fitImage(s),i.on("load",(function(){t.fitImage(s)}))}))},setColsCountSettings(){var e,t=elementorFrontend.getCurrentDeviceMode(),s=this.getElementSettings(),n=this.getSkinPrefix();switch(t){case"mobile":e=s[n+"columns_mobile"];break;case"tablet":e=s[n+"columns_tablet"];break;default:e=s[n+"columns"]}this.setSettings("colsCount",e)},isMasonryEnabled(){return!!this.getElementSettings(this.getSkinPrefix()+"masonry")},initMasonry(){imagesLoaded(this.elements.$posts,this.runMasonry)},runMasonry(){var e=this.elements;e.$posts.css({marginTop:"",transitionDuration:""}),this.setColsCountSettings();var t=this.getSettings("colsCount"),s=this.isMasonryEnabled()&&t>=2;if(e.$postsContainer.toggleClass("elementor-posts-masonry",s),s){var n=this.getElementSettings(this.getSkinPrefix()+"row_gap.size");""===this.getSkinPrefix()&&""===n&&(n=this.getElementSettings(this.getSkinPrefix()+"item_gap.size")),new elementorModules.utils.Masonry({container:e.$postsContainer,items:e.$posts.filter(":visible"),columnsCount:this.getSettings("colsCount"),verticalSpaceBetween:n}).run()}else e.$postsContainer.height("")},run(){setTimeout(this.fitImages,0),this.initMasonry()},onInit(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.bindEvents(),this.run()},onWindowResize(){this.fitImages(),this.runMasonry()},onElementChange(){this.fitImages(),setTimeout(this.runMasonry)}});t.default=s},7990:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(9327));class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("share-buttons",i.default)}}t.default=_default},9327:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=elementorModules.frontend.handlers.Base.extend({async onInit(){if(!this.isActive())return;elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments);const e=this.getElementSettings(),t=this.getSettings("classes"),s=e.share_url&&e.share_url.url,n={classPrefix:t.shareLinkPrefix};s?n.url=e.share_url.url:(n.url=location.href,n.title=elementorFrontend.config.post.title,n.text=elementorFrontend.config.post.excerpt,n.image=elementorFrontend.config.post.featuredImage),!window.ShareLink&&elementorFrontend.utils.assetsLoader&&await elementorFrontend.utils.assetsLoader.load("script","share-link"),this.elements.$shareButton.shareLink&&this.elements.$shareButton.shareLink(n)},getDefaultSettings:()=>({selectors:{shareButton:".elementor-share-btn"},classes:{shareLinkPrefix:"elementor-share-btn_"}}),getDefaultElements(){var e=this.getSettings("selectors");return{$shareButton:this.$element.find(e.shareButton)}},isActive:()=>!elementorFrontend.isEditMode()});t.default=s},5056:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(7956));class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("slides",i.default)}}t.default=_default},7956:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class SlidesHandler extends elementorModules.frontend.handlers.SwiperBase{getDefaultSettings(){return{selectors:{slider:".elementor-slides-wrapper",slide:".swiper-slide",slideInnerContents:".swiper-slide-contents",activeSlide:".swiper-slide-active",activeDuplicate:".swiper-slide-duplicate-active"},classes:{animated:"animated",kenBurnsActive:"elementor-ken-burns--active",slideBackground:"swiper-slide-bg"},attributes:{dataSliderOptions:"slider_options",dataAnimation:"animation"}}}getDefaultElements(){const e=this.getSettings("selectors"),t={$swiperContainer:this.$element.find(e.slider)};return t.$slides=t.$swiperContainer.find(e.slide),t}getSwiperOptions(){const e=this.getElementSettings(),t={autoplay:this.getAutoplayConfig(),grabCursor:!0,initialSlide:this.getInitialSlide(),slidesPerView:1,slidesPerGroup:1,loop:"yes"===e.infinite,speed:e.transition_speed,effect:e.transition,observeParents:!0,observer:!0,handleElementorBreakpoints:!0,on:{slideChange:()=>{this.handleKenBurns()}}},s="arrows"===e.navigation||"both"===e.navigation,n="dots"===e.navigation||"both"===e.navigation;return s&&(t.navigation={prevEl:".elementor-swiper-button-prev",nextEl:".elementor-swiper-button-next"}),n&&(t.pagination={el:".swiper-pagination",type:"bullets",clickable:!0}),!0===t.loop&&(t.loopedSlides=this.getSlidesCount()),"fade"===t.effect&&(t.fadeEffect={crossFade:!0}),t}getAutoplayConfig(){const e=this.getElementSettings();return"yes"===e.autoplay&&{stopOnLastSlide:!0,delay:e.autoplay_speed,disableOnInteraction:"yes"===e.pause_on_interaction}}initSingleSlideAnimations(){const e=this.getSettings(),t=this.elements.$swiperContainer.data(e.attributes.dataAnimation);this.elements.$swiperContainer.find("."+e.classes.slideBackground).addClass(e.classes.kenBurnsActive),t&&this.elements.$swiperContainer.find(e.selectors.slideInnerContents).addClass(e.classes.animated+" "+t)}async initSlider(){const e=this.elements.$swiperContainer,t=this.getSettings(),s=this.getElementSettings(),n=e.data(t.attributes.dataAnimation);if(!e.length)return;if(1>=this.getSlidesCount())return;const i=elementorFrontend.utils.swiper;this.swiper=await new i(e,this.getSwiperOptions()),e.data("swiper",this.swiper),this.handleKenBurns(),s.pause_on_hover&&this.togglePauseOnHover(!0),n&&(this.swiper.on("slideChangeTransitionStart",(function(){e.find(t.selectors.slideInnerContents).removeClass(t.classes.animated+" "+n).hide()})),this.swiper.on("slideChangeTransitionEnd",(function(){e.find(t.selectors.slideInnerContents).show().addClass(t.classes.animated+" "+n)})))}onInit(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),2>this.getSlidesCount()?this.initSingleSlideAnimations():this.initSlider()}getChangeableProperties(){return{pause_on_hover:"pauseOnHover",pause_on_interaction:"disableOnInteraction",autoplay_speed:"delay",transition_speed:"speed"}}updateSwiperOption(e){if(0===e.indexOf("width"))return void this.swiper.update();const t=this.getElementSettings(),s=t[e];let n=this.getChangeableProperties()[e],i=s;switch(e){case"autoplay_speed":n="autoplay",i={delay:s,disableOnInteraction:"yes"===t.pause_on_interaction};break;case"pause_on_hover":this.togglePauseOnHover("yes"===s);break;case"pause_on_interaction":i="yes"===s}"pause_on_hover"!==e&&(this.swiper.params[n]=i),this.swiper.update()}onElementChange(e){if(1>=this.getSlidesCount())return;this.getChangeableProperties().hasOwnProperty(e)&&this.updateSwiperOption(e)}onEditSettingsChange(e){1>=this.getSlidesCount()||"activeItemIndex"===e&&this.swiper.slideToLoop(this.getEditSettings("activeItemIndex")-1)}}t.default=SlidesHandler},2189:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(908));class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("facebook-button",i.default),elementorFrontend.elementsHandler.attachHandler("facebook-comments",i.default),elementorFrontend.elementsHandler.attachHandler("facebook-embed",i.default),elementorFrontend.elementsHandler.attachHandler("facebook-page",i.default)}}t.default=_default},908:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class FacebookHandler extends elementorModules.frontend.handlers.Base{getConfig(){return elementorProFrontend.config.facebook_sdk}setConfig(e,t){elementorProFrontend.config.facebook_sdk[e]=t}parse(){FB.XFBML.parse(this.$element[0])}loadSDK(){const e=this.getConfig();e.isLoading||e.isLoaded||(this.setConfig("isLoading",!0),jQuery.ajax({url:"https://connect.facebook.net/"+e.lang+"/sdk.js",dataType:"script",cache:!0,success:()=>{FB.init({appId:e.app_id,version:"v2.10",xfbml:!1}),this.setConfig("isLoaded",!0),this.setConfig("isLoading",!1),elementorFrontend.elements.$document.trigger("fb:sdk:loaded")}}))}onInit(...e){super.onInit(...e),this.loadSDK();this.getConfig().isLoaded?this.parse():elementorFrontend.elements.$document.on("fb:sdk:loaded",(()=>this.parse()))}}t.default=FacebookHandler},4429:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(5791));class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("table-of-contents",i.default)}}t.default=_default},5791:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class TOCHandler extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{widgetContainer:".elementor-widget-container",postContentContainer:'.elementor:not([data-elementor-type="header"]):not([data-elementor-type="footer"]):not([data-elementor-type="popup"])',expandButton:".elementor-toc__toggle-button--expand",collapseButton:".elementor-toc__toggle-button--collapse",body:".elementor-toc__body",headerTitle:".elementor-toc__header-title"},classes:{anchor:"elementor-menu-anchor",listWrapper:"elementor-toc__list-wrapper",listItem:"elementor-toc__list-item",listTextWrapper:"elementor-toc__list-item-text-wrapper",firstLevelListItem:"elementor-toc__top-level",listItemText:"elementor-toc__list-item-text",activeItem:"elementor-item-active",headingAnchor:"elementor-toc__heading-anchor",collapsed:"elementor-toc--collapsed"},listWrapperTag:"numbers"===this.getElementSettings().marker_view?"ol":"ul"}}getDefaultElements(){const e=this.getSettings();return{$pageContainer:this.getContainer(),$widgetContainer:this.$element.find(e.selectors.widgetContainer),$expandButton:this.$element.find(e.selectors.expandButton),$collapseButton:this.$element.find(e.selectors.collapseButton),$tocBody:this.$element.find(e.selectors.body),$listItems:this.$element.find("."+e.classes.listItem)}}getContainer(){const e=this.getSettings(),t=this.getElementSettings();if(t.container)return jQuery(t.container);const s=this.$element.parents(".elementor");return"popup"===s.attr("data-elementor-type")?s:jQuery(e.selectors.postContentContainer)}bindEvents(){const e=this.getElementSettings();e.minimize_box&&(this.elements.$expandButton.on("click",(()=>this.expandBox())),this.elements.$collapseButton.on("click",(()=>this.collapseBox()))),e.collapse_subitems&&this.elements.$listItems.on("hover",(e=>jQuery(e.target).slideToggle()))}getHeadings(){const e=this.getElementSettings(),t=e.headings_by_tags.join(","),s=this.getSettings("selectors"),n=e.exclude_headings_by_selector;return this.elements.$pageContainer.find(t).not(s.headerTitle).filter(((e,t)=>!jQuery(t).closest(n).length))}addAnchorsBeforeHeadings(){const e=this.getSettings("classes");this.elements.$headings.before((t=>{if(!jQuery(this.elements.$headings[t]).data("hasOwnID"))return`<span id="${e.headingAnchor}-${t}" class="${e.anchor} "></span>`}))}activateItem(e){const t=this.getSettings("classes");if(this.deactivateActiveItem(e),e.addClass(t.activeItem),this.$activeItem=e,!this.getElementSettings("collapse_subitems"))return;let s;s=e.hasClass(t.firstLevelListItem)?e.parent().next():e.parents("."+t.listWrapper).eq(-2),s.length?(this.$activeList=s,this.$activeList.stop().slideDown()):delete this.$activeList}deactivateActiveItem(e){if(!this.$activeItem||this.$activeItem.is(e))return;const{classes:t}=this.getSettings();this.$activeItem.removeClass(t.activeItem),!this.$activeList||e&&this.$activeList[0].contains(e[0])||this.$activeList.slideUp()}followAnchor(e,t){const s=e[0].hash;let n;try{n=jQuery(decodeURIComponent(s))}catch(e){return}elementorFrontend.waypoint(n,(s=>{if(this.itemClicked)return;const i=n.attr("id");"down"===s?(this.viewportItems[i]=!0,this.activateItem(e)):(delete this.viewportItems[i],this.activateItem(this.$listItemTexts.eq(t-1)))}),{offset:"bottom-in-view",triggerOnce:!1}),elementorFrontend.waypoint(n,(s=>{if(this.itemClicked)return;const i=n.attr("id");"down"===s?(delete this.viewportItems[i],Object.keys(this.viewportItems).length&&this.activateItem(this.$listItemTexts.eq(t+1))):(this.viewportItems[i]=!0,this.activateItem(e))}),{offset:0,triggerOnce:!1})}followAnchors(){this.$listItemTexts.each(((e,t)=>this.followAnchor(jQuery(t),e)))}populateTOC(){this.listItemPointer=0;this.getElementSettings().hierarchical_view?this.createNestedList():this.createFlatList(),this.$listItemTexts=this.$element.find(".elementor-toc__list-item-text"),this.$listItemTexts.on("click",this.onListItemClick.bind(this)),elementorFrontend.isEditMode()||this.followAnchors()}createNestedList(){this.headingsData.forEach(((e,t)=>{e.level=0;for(let s=t-1;s>=0;s--){const t=this.headingsData[s];if(t.tag<=e.tag){e.level=t.level,t.tag<e.tag&&e.level++;break}}})),this.elements.$tocBody.html(this.getNestedLevel(0))}createFlatList(){this.elements.$tocBody.html(this.getNestedLevel())}getNestedLevel(e){const t=this.getSettings(),s=this.getElementSettings(),n=this.getElementSettings("icon");let i;n&&(i=elementorFrontend.config.experimentalFeatures.e_font_icon_svg&&!elementorFrontend.isEditMode()?n.rendered_tag:`<i class="${n.value}"></i>`);let o=`<${t.listWrapperTag} class="${t.classes.listWrapper}">`;for(;this.listItemPointer<this.headingsData.length;){const r=this.headingsData[this.listItemPointer];let a=t.classes.listItemText;if(0===r.level&&(a+=" "+t.classes.firstLevelListItem),e>r.level)break;if(e===r.level){o+=`<li class="${t.classes.listItem}">`,o+=`<div class="${t.classes.listTextWrapper}">`;let l=`<a href="#${r.anchorLink}" class="${a}">${r.text}</a>`;"bullets"===s.marker_view&&n&&(l=`${i}${l}`),o+=l,o+="</div>",this.listItemPointer++;const d=this.headingsData[this.listItemPointer];d&&e<d.level&&(o+=this.getNestedLevel(d.level)),o+="</li>"}}return o+=`</${t.listWrapperTag}>`,o}handleNoHeadingsFound(){let e=elementorProFrontend.config.i18n.toc_no_headings_found;return elementorFrontend.isEditMode()&&(e=elementorPro.translate("toc_no_headings_found")),this.elements.$tocBody.html(e)}collapseOnInit(){const e=this.getElementSettings("minimized_on"),t=elementorFrontend.getCurrentDeviceMode();("tablet"===e&&"desktop"!==t||"mobile"===e&&"mobile"===t)&&this.collapseBox()}getHeadingAnchorLink(e,t){const s=this.elements.$headings[e].id,n=this.elements.$headings[e].closest(".elementor-widget").id;let i="";return s?i=s:n&&(i=n),s||n?jQuery(this.elements.$headings[e]).data("hasOwnID",!0):i=`${t.headingAnchor}-${e}`,i}setHeadingsData(){this.headingsData=[];const e=this.getSettings("classes");this.elements.$headings.each(((t,s)=>{const n=this.getHeadingAnchorLink(t,e);this.headingsData.push({tag:+s.nodeName.slice(1),text:s.textContent,anchorLink:n})}))}run(){if(this.elements.$headings=this.getHeadings(),!this.elements.$headings.length)return this.handleNoHeadingsFound();this.setHeadingsData(),elementorFrontend.isEditMode()||this.addAnchorsBeforeHeadings(),this.populateTOC(),this.getElementSettings("minimize_box")&&this.collapseOnInit()}expandBox(){const e=this.getCurrentDeviceSetting("min_height");this.$element.removeClass(this.getSettings("classes.collapsed")),this.elements.$tocBody.slideDown(),this.elements.$widgetContainer.css("min-height",e.size+e.unit)}collapseBox(){this.$element.addClass(this.getSettings("classes.collapsed")),this.elements.$tocBody.slideUp(),this.elements.$widgetContainer.css("min-height","0px")}onInit(...e){super.onInit(...e),this.viewportItems=[],jQuery((()=>this.run()))}onListItemClick(e){this.itemClicked=!0,setTimeout((()=>this.itemClicked=!1),2e3);const t=jQuery(e.target),s=t.parent().next(),n=this.getElementSettings("collapse_subitems");let i;n&&t.hasClass(this.getSettings("classes.firstLevelListItem"))&&s.is(":visible")&&(i=!0),this.activateItem(t),n&&i&&s.slideUp()}}t.default=TOCHandler},9940:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(3824)),o=n(s(7177)),r=n(s(2231));class _default extends elementorModules.Module{constructor(){super(),["archive_classic","archive_full_content","archive_cards"].forEach((e=>{elementorFrontend.elementsHandler.attachHandler("archive-posts",r.default,e)})),elementorFrontend.elementsHandler.attachHandler("archive-posts",i.default,"archive_classic"),elementorFrontend.elementsHandler.attachHandler("archive-posts",i.default,"archive_full_content"),elementorFrontend.elementsHandler.attachHandler("archive-posts",o.default,"archive_cards"),jQuery((function(){var e=location.search.match(/theme_template_id=(\d*)/),t=e?jQuery(".elementor-"+e[1]):[];t.length&&jQuery("html, body").animate({scrollTop:t.offset().top-window.innerHeight/2})}))}}t.default=_default},2231:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(9738));class ArchivePostsLoadMore extends i.default{}t.default=ArchivePostsLoadMore},7177:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(8014)).default.extend({getSkinPrefix:()=>"archive_cards_"});t.default=i},3824:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(2926)).default.extend({getSkinPrefix:()=>"archive_classic_"});t.default=i},9874:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(188));class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("search-form",i.default)}}t.default=_default},188:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=elementorModules.frontend.handlers.Base.extend({getDefaultSettings:()=>({selectors:{wrapper:".elementor-search-form",container:".elementor-search-form__container",icon:".elementor-search-form__icon",input:".elementor-search-form__input",toggle:".elementor-search-form__toggle",submit:".elementor-search-form__submit",closeButton:".dialog-close-button"},classes:{isFocus:"elementor-search-form--focus",isFullScreen:"elementor-search-form--full-screen",lightbox:"elementor-lightbox"}}),getDefaultElements(){var e=this.getSettings("selectors"),t={};return t.$wrapper=this.$element.find(e.wrapper),t.$container=this.$element.find(e.container),t.$input=this.$element.find(e.input),t.$icon=this.$element.find(e.icon),t.$toggle=this.$element.find(e.toggle),t.$submit=this.$element.find(e.submit),t.$closeButton=this.$element.find(e.closeButton),t},bindEvents(){var e=this,t=e.elements.$container,s=e.elements.$closeButton,n=e.elements.$input,i=e.elements.$wrapper,o=e.elements.$icon,r=this.getElementSettings("skin"),a=this.getSettings("classes");"full_screen"===r?(e.elements.$toggle.on("click",(function(){t.toggleClass(a.isFullScreen).toggleClass(a.lightbox),n.trigger("focus")})),t.on("click",(function(e){t.hasClass(a.isFullScreen)&&t[0]===e.target&&t.removeClass(a.isFullScreen).removeClass(a.lightbox)})),s.on("click",(function(){t.removeClass(a.isFullScreen).removeClass(a.lightbox)})),elementorFrontend.elements.$document.on("keyup",(function(e){27===e.keyCode&&t.hasClass(a.isFullScreen)&&t.trigger("click")}))):n.on({focus(){i.addClass(a.isFocus)},blur(){i.removeClass(a.isFocus)}}),"minimal"===r&&o.on("click",(function(){i.addClass(a.isFocus),n.trigger("focus")}))}});t.default=s},4269:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(9428)),o=n(s(9903)),r=n(s(3898)),a=n(s(4838));class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("woocommerce-menu-cart",i.default),elementorFrontend.elementsHandler.attachHandler("woocommerce-checkout-page",o.default),elementorFrontend.elementsHandler.attachHandler("woocommerce-cart",r.default),elementorFrontend.elementsHandler.attachHandler("woocommerce-my-account",a.default)}}t.default=_default},427:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class Base extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{stickyRightColumn:".e-sticky-right-column"},classes:{stickyRightColumnActive:"e-sticky-right-column--active"}}}getDefaultElements(){const e=this.getSettings("selectors");return{$stickyRightColumn:this.$element.find(e.stickyRightColumn)}}bindEvents(){elementorFrontend.elements.$document.on("select2:open",(e=>{this.addSelect2Wrapper(e)}))}addSelect2Wrapper(e){const t=jQuery(e.target).data("select2");t.$dropdown&&t.$dropdown.addClass("e-woo-select2-wrapper")}isStickyRightColumnActive(){const e=this.getSettings("classes");return this.elements.$stickyRightColumn.hasClass(e.stickyRightColumnActive)}activateStickyRightColumn(){const e=this.getElementSettings(),t=elementorFrontend.elements.$wpAdminBar,s=this.getSettings("classes");let n=e.sticky_right_column_offset||0;t.length&&"fixed"===t.css("position")&&(n+=t.height()),"yes"===this.getElementSettings("sticky_right_column")&&(this.elements.$stickyRightColumn.addClass(s.stickyRightColumnActive),this.elements.$stickyRightColumn.css("top",n+"px"))}deactivateStickyRightColumn(){if(!this.isStickyRightColumnActive())return;const e=this.getSettings("classes");this.elements.$stickyRightColumn.removeClass(e.stickyRightColumnActive)}toggleStickyRightColumn(){this.getElementSettings("sticky_right_column")?this.isStickyRightColumnActive()||this.activateStickyRightColumn():this.deactivateStickyRightColumn()}equalizeElementHeight(e){if(e.length){e.removeAttr("style");let t=0;e.each(((e,s)=>{t=Math.max(t,s.offsetHeight)})),0<t&&e.css({height:t+"px"})}}}t.default=Base},3898:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(427));class Cart extends i.default{getDefaultSettings(...e){const t=super.getDefaultSettings(...e);return{selectors:{...t.selectors,shippingForm:".shipping-calculator-form",quantityInput:".qty",updateCartButton:"button[name=update_cart]",wpHttpRefererInputs:"[name=_wp_http_referer]",hiddenInput:"input[type=hidden]",productRemove:".product-remove a"},classes:t.classes,ajaxUrl:elementorProFrontend.config.ajaxurl}}getDefaultElements(...e){const t=this.getSettings("selectors");return{...super.getDefaultElements(...e),$shippingForm:this.$element.find(t.shippingForm),$stickyColumn:this.$element.find(t.stickyColumn),$hiddenInput:this.$element.find(t.hiddenInput)}}bindEvents(){super.bindEvents();const e=this.getSettings("selectors");elementorFrontend.elements.$body.on("wc_fragments_refreshed",(()=>this.applyButtonsHoverAnimation())),"yes"===this.getElementSettings("update_cart_automatically")&&this.$element.on("click",e.quantityInput,(()=>this.updateCart())),(elementorFrontend.isEditMode()||elementorFrontend.isWPPreviewMode())&&elementorFrontend.elements.$body.on("wc_fragments_loaded wc_fragments_refreshed",(()=>{this.modifyWpHttpReferer(),this.disableActions()}))}onInit(...e){super.onInit(...e),this.toggleStickyRightColumn(),this.hideHiddenInputsParentElements(),elementorFrontend.isEditMode()&&this.elements.$shippingForm.show(),this.applyButtonsHoverAnimation(),(elementorFrontend.isEditMode()||elementorFrontend.isWPPreviewMode())&&(this.modifyWpHttpReferer(),this.disableActions())}disableActions(){const e=this.getSettings("selectors");this.$element.find(e.updateCartButton).attr({disabled:"disabled","aria-disabled":"true"}),elementorFrontend.isEditMode()&&(this.$element.find(e.quantityInput).attr("disabled","disabled"),this.$element.find(e.productRemove).css("pointer-events","none"))}onElementChange(e){"sticky_right_column"===e&&this.toggleStickyRightColumn()}onDestroy(...e){super.onDestroy(...e),this.deactivateStickyRightColumn()}updateCart(){const e=this.getSettings("selectors");clearTimeout(this._debounce),this._debounce=setTimeout((()=>{this.$element.find(e.updateCartButton).trigger("click")}),600)}applyButtonsHoverAnimation(){const e=this.getElementSettings();e.checkout_button_hover_animation&&jQuery(".checkout-button").addClass("elementor-animation-"+e.checkout_button_hover_animation),e.forms_buttons_hover_animation&&jQuery(".shop_table .button").addClass("elementor-animation-"+e.forms_buttons_hover_animation)}hideHiddenInputsParentElements(){this.isEdit&&this.elements.$hiddenInput&&this.elements.$hiddenInput.parent(".form-row").addClass("elementor-hidden")}modifyWpHttpReferer(){const e=this.getSettings("selectors");elementorFrontend.isEditMode()&&this.$element.find(e.wpHttpRefererInputs).attr("value",elementor.documents.getCurrent().config.urls.wp_preview)}}t.default=Cart},9903:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(427));class Checkout extends i.default{getDefaultSettings(...e){const t=super.getDefaultSettings(...e);return{selectors:{...t.selectors,container:".elementor-widget-woocommerce-checkout-page",loginForm:".e-woocommerce-login-anchor",loginSubmit:".e-woocommerce-form-login-submit",loginSection:".e-woocommerce-login-section",showCouponForm:".e-show-coupon-form",couponSection:".e-coupon-anchor",showLoginForm:".e-show-login",applyCoupon:".e-apply-coupon",checkoutForm:"form.woocommerce-checkout",couponBox:".e-coupon-box",address:"address",wpHttpRefererInputs:'[name="_wp_http_referer"]'},classes:t.classes,ajaxUrl:elementorProFrontend.config.ajaxurl}}getDefaultElements(...e){const t=this.getSettings("selectors");return{...super.getDefaultElements(...e),$container:this.$element.find(t.container),$loginForm:this.$element.find(t.loginForm),$showCouponForm:this.$element.find(t.showCouponForm),$couponSection:this.$element.find(t.couponSection),$showLoginForm:this.$element.find(t.showLoginForm),$applyCoupon:this.$element.find(t.applyCoupon),$loginSubmit:this.$element.find(t.loginSubmit),$couponBox:this.$element.find(t.couponBox),$checkoutForm:this.$element.find(t.checkoutForm),$loginSection:this.$element.find(t.loginSection),$address:this.$element.find(t.address)}}bindEvents(...e){super.bindEvents(...e),this.elements.$showCouponForm.on("click",(e=>{e.preventDefault(),this.elements.$couponSection.slideToggle()})),this.elements.$showLoginForm.on("click",(e=>{e.preventDefault(),this.elements.$loginForm.slideToggle()})),this.elements.$applyCoupon.on("click",(e=>{e.preventDefault(),this.applyCoupon()})),this.elements.$loginSubmit.on("click",(e=>{e.preventDefault(),this.loginUser()})),elementorFrontend.elements.$body.on("updated_checkout",(()=>{this.applyPurchaseButtonHoverAnimation(),this.updateWpReferers()}))}onInit(...e){super.onInit(...e),this.toggleStickyRightColumn(),this.updateWpReferers(),this.equalizeElementHeight(this.elements.$address),elementorFrontend.isEditMode()&&(this.elements.$loginForm.show(),this.elements.$couponSection.show(),this.applyPurchaseButtonHoverAnimation())}onElementChange(e){"sticky_right_column"===e&&this.toggleStickyRightColumn()}onDestroy(...e){super.onDestroy(...e),this.deactivateStickyRightColumn()}applyPurchaseButtonHoverAnimation(){const e=this.getElementSettings("purchase_button_hover_animation");e&&jQuery("#place_order").addClass("elementor-animation-"+e)}applyCoupon(){if(!wc_checkout_params)return;this.startProcessing(this.elements.$couponBox);const e={security:wc_checkout_params.apply_coupon_nonce,coupon_code:this.elements.$couponBox.find('input[name="coupon_code"]').val()};jQuery.ajax({type:"POST",url:wc_checkout_params.wc_ajax_url.toString().replace("%%endpoint%%","apply_coupon"),context:this,data:e,success(t){jQuery(".woocommerce-error, .woocommerce-message").remove(),this.elements.$couponBox.removeClass("processing").unblock(),t&&(this.elements.$checkoutForm.before(t),this.elements.$couponSection.slideUp(),elementorFrontend.elements.$body.trigger("applied_coupon_in_checkout",[e.coupon_code]),elementorFrontend.elements.$body.trigger("update_checkout",{update_shipping_method:!1}))},dataType:"html"})}loginUser(){this.startProcessing(this.elements.$loginSection);const e={action:"elementor_woocommerce_checkout_login_user",username:this.elements.$loginSection.find('input[name="username"]').val(),password:this.elements.$loginSection.find('input[name="password"]').val(),nonce:this.elements.$loginSection.find('input[name="woocommerce-login-nonce"]').val(),remember:this.elements.$loginSection.find("input#rememberme").prop("checked")};jQuery.ajax({type:"POST",url:this.getSettings("ajaxUrl"),context:this,data:e,success(e){e=JSON.parse(e),this.elements.$loginSection.removeClass("processing").unblock();jQuery(".woocommerce-error, .woocommerce-message").remove(),e.logged_in?location.reload():this.elements.$checkoutForm.before(e.message)}})}startProcessing(e){e.is(".processing")||e.addClass("processing").block({message:null,overlayCSS:{background:"#fff",opacity:.6}})}updateWpReferers(){const e=this.getSettings("selectors"),t=this.$element.find(e.wpHttpRefererInputs),s=new URL(document.location);s.searchParams.set("elementorPostId",elementorFrontend.config.post.id),s.searchParams.set("elementorWidgetId",this.getID()),t.attr("value",s)}}t.default=Checkout},9428:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{container:".elementor-menu-cart__container",main:".elementor-menu-cart__main",toggle:".elementor-menu-cart__toggle",toggleButton:"#elementor-menu-cart__toggle_button",toggleWrapper:".elementor-menu-cart__toggle_wrapper",closeButton:".elementor-menu-cart__close-button"},classes:{isShown:"elementor-menu-cart--shown"}}}getDefaultElements(){const e=this.getSettings("selectors");return{$container:this.$element.find(e.container),$main:this.$element.find(e.main),$toggleWrapper:this.$element.find(e.toggleWrapper),$closeButton:this.$element.find(e.closeButton)}}toggleCart(){this.isCartOpen?this.hideCart():this.showCart()}showCart(){if(this.isCartOpen)return;const e=this.getSettings("classes"),t=this.getSettings("selectors");this.isCartOpen=!0,this.$element.addClass(e.isShown),this.$element.find(t.toggleButton).attr("aria-expanded",!0),this.elements.$main.attr("aria-hidden",!1),this.elements.$container.attr("aria-hidden",!1)}hideCart(){if(!this.isCartOpen)return;const e=this.getSettings("classes"),t=this.getSettings("selectors");this.isCartOpen=!1,this.$element.removeClass(e.isShown),this.$element.find(t.toggleButton).attr("aria-expanded",!1),this.elements.$main.attr("aria-hidden",!0),this.elements.$container.attr("aria-hidden",!0)}automaticallyOpenCart(){"yes"===this.getElementSettings().automatically_open_cart&&this.showCart()}bindEvents(){const e=elementorProFrontend.config.menu_cart,t=-1===e.cart_page_url.indexOf("?")?window.location.origin+window.location.pathname:window.location.href,s=e.cart_page_url,n=e.cart_page_url===t,i=e.checkout_page_url===t,o=this.getSettings("selectors"),r=this.getElementSettings(),a=this.getSettings("classes");n&&i?this.$element.find(o.toggleButton).attr("href",s):(this.isCartOpen=this.$element.hasClass(a.isShown),"mouseover"===r.open_cart?(this.elements.$toggleWrapper.on("mouseover click",o.toggleButton,(e=>{e.preventDefault(),this.showCart()})),this.elements.$toggleWrapper.on("mouseleave",(()=>this.hideCart()))):this.elements.$toggleWrapper.on("click",o.toggleButton,(e=>{e.preventDefault(),this.toggleCart()})),elementorFrontend.elements.$document.on("click",(e=>{if(!this.isCartOpen)return;const t=jQuery(e.target);t.closest(this.elements.$main).length||t.closest(o.toggle).length||this.hideCart()})),this.elements.$closeButton.on("click",(e=>{e.preventDefault(),this.hideCart()})),elementorFrontend.elements.$document.on("keyup",(e=>{27===e.keyCode&&this.hideCart()})),elementorFrontend.elements.$body.on("added_to_cart",(()=>this.automaticallyOpenCart())))}}t.default=_default},4838:(e,t,s)=>{"use strict";var n=s(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=n(s(427));class MyAccountHandler extends i.default{getDefaultSettings(){return{selectors:{address:"address",tabLinks:".woocommerce-MyAccount-navigation-link a",viewOrderButtons:".my_account_orders .woocommerce-button.view",viewOrderLinks:".woocommerce-orders-table__cell-order-number a",authForms:"form.login, form.register",tabWrapper:".e-my-account-tab",tabItem:".woocommerce-MyAccount-navigation li",allPageElements:"[e-my-account-page]",purchasenote:"tr.product-purchase-note"}}}getDefaultElements(){const e=this.getSettings("selectors");return{$address:this.$element.find(e.address),$tabLinks:this.$element.find(e.tabLinks),$viewOrderButtons:this.$element.find(e.viewOrderButtons),$viewOrderLinks:this.$element.find(e.viewOrderLinks),$authForms:this.$element.find(e.authForms),$tabWrapper:this.$element.find(e.tabWrapper),$tabItem:this.$element.find(e.tabItem),$allPageElements:this.$element.find(e.allPageElements),$purchasenote:this.$element.find(e.purchasenote)}}editorInitTabs(){this.elements.$allPageElements.each(((e,t)=>{const s=t.getAttribute("e-my-account-page");let n;switch(s){case"view-order":n=this.elements.$viewOrderLinks.add(this.elements.$viewOrderButtons);break;default:n=this.$element.find(".woocommerce-MyAccount-navigation-link--"+s)}n.on("click",(()=>{this.currentPage=s,this.editorShowTab()}))}))}editorShowTab(){const e=this.$element.find('[e-my-account-page="'+this.currentPage+'"]');this.$element.attr("e-my-account-page",this.currentPage),this.elements.$allPageElements.hide(),e.show(),this.toggleEndpointClasses(),"view-order"!==this.currentPage&&(this.elements.$tabItem.removeClass("is-active"),this.$element.find(".woocommerce-MyAccount-navigation-link--"+this.currentPage).addClass("is-active")),"edit-address"!==this.currentPage&&"view-order"!==this.currentPage||this.equalizeElementHeights()}toggleEndpointClasses(){const e=["dashboard","orders","view-order","downloads","edit-account","edit-address","payment-methods"];this.elements.$tabWrapper.removeClass("e-my-account-tab__"+e.join(" e-my-account-tab__")),e.includes(this.currentPage)&&this.elements.$tabWrapper.addClass("e-my-account-tab__"+this.currentPage)}applyButtonsHoverAnimation(){const e=this.getElementSettings();e.forms_buttons_hover_animation&&this.$element.find(".woocommerce button.button").addClass("elementor-animation-"+e.forms_buttons_hover_animation),e.tables_button_hover_animation&&this.$element.find(".order-again .button, td .button, .woocommerce-pagination .button").addClass("elementor-animation-"+e.tables_button_hover_animation)}equalizeElementHeights(){this.equalizeElementHeight(this.elements.$address),this.isEdit||this.equalizeElementHeight(this.elements.$authForms)}removePaddingBetweenPurchaseNote(){this.elements.$purchasenote&&this.elements.$purchasenote.each(((e,t)=>{jQuery(t).prev().children("td").addClass("product-purchase-note-is-below")}))}onElementChange(e){0!==e.indexOf("general_text_typography")&&0!==e.indexOf("sections_padding")||this.equalizeElementHeights(),0===e.indexOf("forms_rows_gap")&&this.removePaddingBetweenPurchaseNote()}bindEvents(){super.bindEvents(),elementorFrontend.elements.$body.on("keyup change",".register #reg_password",(()=>{this.equalizeElementHeights()}))}onInit(...e){super.onInit(...e),this.isEdit&&(this.editorInitTabs(),this.$element.attr("e-my-account-page")?this.currentPage=this.$element.attr("e-my-account-page"):this.currentPage="dashboard",this.editorShowTab()),this.applyButtonsHoverAnimation(),this.equalizeElementHeights(),this.removePaddingBetweenPurchaseNote()}}t.default=MyAccountHandler}},e=>{"use strict";e.O(0,[819],(()=>{return t=6070,e(e.s=t);var t}));e.O()}]);assets/js/form-submission-admin.min.js000064400000460533150755004310014037 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(()=>{var e,t,r,n,o={75453:(e,t,r)=>{e.exports=r(7421)},59396:(e,t,r)=>{e.exports=r(70157)},49288:(e,t,r)=>{e.exports=r(55966)},15149:(e,t,r)=>{e.exports=r(66458)},38401:(e,t,r)=>{e.exports=r(14710)},92937:(e,t,r)=>{e.exports=r(23022)},67394:(e,t,r)=>{e.exports=r(43153)},38923:(e,t,r)=>{e.exports=r(8531)},23587:(e,t,r)=>{e.exports=r(32622)},63774:(e,t,r)=>{e.exports=r(27410)},95315:(e,t,r)=>{e.exports=r(19035)},82055:(e,t,r)=>{e.exports=r(58535)},83452:(e,t,r)=>{e.exports=r(97220)},28274:(e,t,r)=>{e.exports=r(65135)},35657:(e,t,r)=>{e.exports=r(69591)},73220:(e,t,r)=>{e.exports=r(76483)},75499:(e,t,r)=>{e.exports=r(43094)},41281:(e,t,r)=>{e.exports=r(19103)},50093:(e,t,r)=>{e.exports=r(39871)},93168:(e,t,r)=>{e.exports=r(89999)},72292:e=>{e.exports=function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n},e.exports.default=e.exports,e.exports.__esModule=!0},86870:(e,t,r)=>{var n=r(59396);e.exports=function _arrayWithHoles(e){if(n(e))return e},e.exports.default=e.exports,e.exports.__esModule=!0},35693:(e,t,r)=>{var n=r(59396),o=r(72292);e.exports=function _arrayWithoutHoles(e){if(n(e))return o(e)},e.exports.default=e.exports,e.exports.__esModule=!0},38852:e=>{e.exports=function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.default=e.exports,e.exports.__esModule=!0},11959:e=>{e.exports=function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.default=e.exports,e.exports.__esModule=!0},39041:(e,t,r)=>{var n=r(67394);function _defineProperties(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),n(e,o.key,o)}}e.exports=function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),e},e.exports.default=e.exports,e.exports.__esModule=!0},68537:(e,t,r)=>{var n=r(75499),o=r(44263),a=r(898),u=r(59771);e.exports=function _createSuper(e){var t=a();return function _createSuperInternal(){var r,a=o(e);if(t){var i=o(this).constructor;r=n(a,arguments,i)}else r=a.apply(this,arguments);return u(this,r)}},e.exports.default=e.exports,e.exports.__esModule=!0},18042:(e,t,r)=>{var n=r(67394);e.exports=function _defineProperty(e,t,r){return t in e?n(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.default=e.exports,e.exports.__esModule=!0},37959:(e,t,r)=>{var n=r(15149);function _extends(){return e.exports=_extends=n||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},e.exports.default=e.exports,e.exports.__esModule=!0,_extends.apply(this,arguments)}e.exports=_extends,e.exports.default=e.exports,e.exports.__esModule=!0},44263:(e,t,r)=>{var n=r(28274),o=r(82055);function _getPrototypeOf(t){return e.exports=_getPrototypeOf=n?o:function _getPrototypeOf(e){return e.__proto__||o(e)},e.exports.default=e.exports,e.exports.__esModule=!0,_getPrototypeOf(t)}e.exports=_getPrototypeOf,e.exports.default=e.exports,e.exports.__esModule=!0},77371:(e,t,r)=>{var n=r(38401),o=r(76870);e.exports=function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=n(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&o(e,t)},e.exports.default=e.exports,e.exports.__esModule=!0},67971:e=>{e.exports=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}},e.exports.default=e.exports,e.exports.__esModule=!0},52369:(e,t,r)=>{var n=r(24596).default,o=r(93168),a=r(67394),u=r(23587);function _getRequireWildcardCache(e){if("function"!=typeof o)return null;var t=new o,r=new o;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?r:t})(e)}e.exports=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var r=_getRequireWildcardCache(t);if(r&&r.has(e))return r.get(e);var o={},i=a&&u;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var s=i?u(e,l):null;s&&(s.get||s.set)?a(o,l,s):o[l]=e[l]}return o.default=e,r&&r.set(e,o),o},e.exports.default=e.exports,e.exports.__esModule=!0},898:(e,t,r)=>{var n=r(75499);e.exports=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!n)return!1;if(n.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(n(Boolean,[],(function(){}))),!0}catch(e){return!1}},e.exports.default=e.exports,e.exports.__esModule=!0},95915:(e,t,r)=>{var n=r(41281),o=r(50093),a=r(75453);e.exports=function _iterableToArray(e){if(void 0!==n&&null!=e[o]||null!=e["@@iterator"])return a(e)},e.exports.default=e.exports,e.exports.__esModule=!0},79968:(e,t,r)=>{var n=r(41281),o=r(50093);e.exports=function _iterableToArrayLimit(e,t){var r=e&&(void 0!==n&&e[o]||e["@@iterator"]);if(null!=r){var a,u,i=[],l=!0,s=!1;try{for(r=r.call(e);!(l=(a=r.next()).done)&&(i.push(a.value),!t||i.length!==t);l=!0);}catch(e){s=!0,u=e}finally{try{l||null==r.return||r.return()}finally{if(s)throw u}}return i}},e.exports.default=e.exports,e.exports.__esModule=!0},39198:e=>{e.exports=function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},84360:e=>{e.exports=function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},84899:(e,t,r)=>{var n=r(83452),o=r(95315),a=r(23587),u=r(63774),i=r(92937),l=r(67394),s=r(18042);function ownKeys(e,t){var r=n(e);if(o){var u=o(e);t&&(u=u.filter((function(t){return a(e,t).enumerable}))),r.push.apply(r,u)}return r}e.exports=function _objectSpread2(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach((function(t){s(e,t,r[t])})):u?i(e,u(r)):ownKeys(Object(r)).forEach((function(t){l(e,t,a(r,t))}))}return e},e.exports.default=e.exports,e.exports.__esModule=!0},59771:(e,t,r)=>{var n=r(24596).default,o=r(38852);e.exports=function _possibleConstructorReturn(e,t){return!t||"object"!==n(t)&&"function"!=typeof t?o(e):t},e.exports.default=e.exports,e.exports.__esModule=!0},76870:(e,t,r)=>{var n=r(28274);function _setPrototypeOf(t,r){return e.exports=_setPrototypeOf=n||function _setPrototypeOf(e,t){return e.__proto__=t,e},e.exports.default=e.exports,e.exports.__esModule=!0,_setPrototypeOf(t,r)}e.exports=_setPrototypeOf,e.exports.default=e.exports,e.exports.__esModule=!0},47834:(e,t,r)=>{var n=r(86870),o=r(79968),a=r(24594),u=r(39198);e.exports=function _slicedToArray(e,t){return n(e)||o(e,t)||a(e,t)||u()},e.exports.default=e.exports,e.exports.__esModule=!0},74846:(e,t,r)=>{var n=r(35693),o=r(95915),a=r(24594),u=r(84360);e.exports=function _toConsumableArray(e){return n(e)||o(e)||a(e)||u()},e.exports.default=e.exports,e.exports.__esModule=!0},24596:(e,t,r)=>{var n=r(41281),o=r(50093);function _typeof(t){return"function"==typeof n&&"symbol"==typeof o?(e.exports=_typeof=function _typeof(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=_typeof=function _typeof(e){return e&&"function"==typeof n&&e.constructor===n&&e!==n.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),_typeof(t)}e.exports=_typeof,e.exports.default=e.exports,e.exports.__esModule=!0},24594:(e,t,r)=>{var n=r(75453),o=r(72292);e.exports=function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?n(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0},50927:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Link:()=>Q,Location:()=>N,LocationProvider:()=>j,Match:()=>J,Redirect:()=>Y,Router:()=>I,ServerLocation:()=>L,createHistory:()=>S,createMemorySource:()=>C,globalHistory:()=>T,isRedirect:()=>X,matchPath:()=>f,navigate:()=>O,redirectTo:()=>z,useLocation:()=>Z,useMatch:()=>re,useNavigate:()=>ee,useParams:()=>te});var n=r(63804),o=r.n(n),a=(r(23615),r(3996)),u=r.n(a),i=r(68189),l=r.n(i);function componentWillMount(){var e=this.constructor.getDerivedStateFromProps(this.props,this.state);null!=e&&this.setState(e)}function componentWillReceiveProps(e){this.setState(function updater(t){var r=this.constructor.getDerivedStateFromProps(e,t);return null!=r?r:null}.bind(this))}function componentWillUpdate(e,t){try{var r=this.props,n=this.state;this.props=e,this.state=t,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(r,n)}finally{this.props=r,this.state=n}}componentWillMount.__suppressDeprecationWarning=!0,componentWillReceiveProps.__suppressDeprecationWarning=!0,componentWillUpdate.__suppressDeprecationWarning=!0;var s=function startsWith(e,t){return e.substr(0,t.length)===t},c=function pick(e,t){for(var r=void 0,n=void 0,o=t.split("?")[0],a=_(o),i=""===a[0],l=g(e),s=0,c=l.length;s<c;s++){var f=!1,d=l[s].route;if(d.default)n={route:d,params:{},uri:t};else{for(var p=_(d.path),m={},y=Math.max(a.length,p.length),b=0;b<y;b++){var E=p[b],w=a[b];if(h(E)){m[E.slice(1)||"*"]=a.slice(b).map(decodeURIComponent).join("/");break}if(void 0===w){f=!0;break}var S=v.exec(E);if(S&&!i){-1===x.indexOf(S[1])||u()(!1);var C=decodeURIComponent(w);m[S[1]]=C}else if(E!==w){f=!0;break}}if(!f){r={route:d,params:m,uri:"/"+a.slice(0,b).join("/")};break}}}return r||n||null},f=function match(e,t){return c([{path:e}],t)},d=function resolve(e,t){if(s(e,"/"))return e;var r=e.split("?"),n=r[0],o=r[1],a=t.split("?")[0],u=_(n),i=_(a);if(""===u[0])return b(a,o);if(!s(u[0],".")){var l=i.concat(u).join("/");return b(("/"===a?"":"/")+l,o)}for(var c=i.concat(u),f=[],d=0,p=c.length;d<p;d++){var v=c[d];".."===v?f.pop():"."!==v&&f.push(v)}return b("/"+f.join("/"),o)},p=function insertParams(e,t){var r=e.split("?"),n=r[0],o=r[1],a=void 0===o?"":o,u="/"+_(n).map((function(e){var r=v.exec(e);return r?t[r[1]]:e})).join("/"),i=t.location,l=(i=void 0===i?{}:i).search,s=(void 0===l?"":l).split("?")[1]||"";return u=b(u,a,s)},v=/^:(.+)/,m=function isDynamic(e){return v.test(e)},h=function isSplat(e){return e&&"*"===e[0]},y=function rankRoute(e,t){return{route:e,score:e.default?0:_(e.path).reduce((function(e,t){return e+=4,!function isRootSegment(e){return""===e}(t)?m(t)?e+=2:h(t)?e-=5:e+=3:e+=1,e}),0),index:t}},g=function rankRoutes(e){return e.map(y).sort((function(e,t){return e.score<t.score?1:e.score>t.score?-1:e.index-t.index}))},_=function segmentize(e){return e.replace(/(^\/+|\/+$)/g,"").split("/")},b=function addQuery(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return e+((r=r.filter((function(e){return e&&e.length>0})))&&r.length>0?"?"+r.join("&"):"")},x=["uri","path"],E=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},w=function getLocation(e){var t=e.location,r=t.search,n=t.hash,o=t.href,a=t.origin,u=t.protocol,i=t.host,l=t.hostname,s=t.port,c=e.location.pathname;!c&&o&&P&&(c=new URL(o).pathname);return{pathname:encodeURI(decodeURI(c)),search:r,hash:n,href:o,origin:a,protocol:u,host:i,hostname:l,port:s,state:e.history.state,key:e.history.state&&e.history.state.key||"initial"}},S=function createHistory(e,t){var r=[],n=w(e),o=!1,a=function resolveTransition(){};return{get location(){return n},get transitioning(){return o},_onTransitionComplete:function _onTransitionComplete(){o=!1,a()},listen:function listen(t){r.push(t);var o=function popstateListener(){n=w(e),t({location:n,action:"POP"})};return e.addEventListener("popstate",o),function(){e.removeEventListener("popstate",o),r=r.filter((function(e){return e!==t}))}},navigate:function navigate(t){var u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=u.state,l=u.replace,s=void 0!==l&&l;if("number"==typeof t)e.history.go(t);else{i=E({},i,{key:Date.now()+""});try{o||s?e.history.replaceState(i,null,t):e.history.pushState(i,null,t)}catch(r){e.location[s?"replace":"assign"](t)}}n=w(e),o=!0;var c=new Promise((function(e){return a=e}));return r.forEach((function(e){return e({location:n,action:"PUSH"})})),c}}},C=function createMemorySource(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",t=e.indexOf("?"),r={pathname:t>-1?e.substr(0,t):e,search:t>-1?e.substr(t):""},n=0,o=[r],a=[null];return{get location(){return o[n]},addEventListener:function addEventListener(e,t){},removeEventListener:function removeEventListener(e,t){},history:{get entries(){return o},get index(){return n},get state(){return a[n]},pushState:function pushState(e,t,r){var u=r.split("?"),i=u[0],l=u[1],s=void 0===l?"":l;n++,o.push({pathname:i,search:s.length?"?"+s:s}),a.push(e)},replaceState:function replaceState(e,t,r){var u=r.split("?"),i=u[0],l=u[1],s=void 0===l?"":l;o[n]={pathname:i,search:s},a[n]=e},go:function go(e){var t=n+e;t<0||t>a.length-1||(n=t)}}}},P=!("undefined"==typeof window||!window.document||!window.document.createElement),T=S(function getSource(){return P?window:C()}()),O=T.navigate,R=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e};function _objectWithoutProperties(e,t){var r={};for(var n in e)t.indexOf(n)>=0||Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var M=function createNamedContext(e,t){var r=l()(t);return r.displayName=e,r},A=M("Location"),N=function Location(e){var t=e.children;return o().createElement(A.Consumer,null,(function(e){return e?t(e):o().createElement(j,null,t)}))},j=function(e){function LocationProvider(){var t,r;_classCallCheck(this,LocationProvider);for(var n=arguments.length,o=Array(n),a=0;a<n;a++)o[a]=arguments[a];return t=r=_possibleConstructorReturn(this,e.call.apply(e,[this].concat(o))),r.state={context:r.getContext(),refs:{unlisten:null}},_possibleConstructorReturn(r,t)}return _inherits(LocationProvider,e),LocationProvider.prototype.getContext=function getContext(){var e=this.props.history;return{navigate:e.navigate,location:e.location}},LocationProvider.prototype.componentDidCatch=function componentDidCatch(e,t){if(!X(e))throw e;(0,this.props.history.navigate)(e.uri,{replace:!0})},LocationProvider.prototype.componentDidUpdate=function componentDidUpdate(e,t){t.context.location!==this.state.context.location&&this.props.history._onTransitionComplete()},LocationProvider.prototype.componentDidMount=function componentDidMount(){var e=this,t=this.state.refs,r=this.props.history;r._onTransitionComplete(),t.unlisten=r.listen((function(){Promise.resolve().then((function(){requestAnimationFrame((function(){e.unmounted||e.setState((function(){return{context:e.getContext()}}))}))}))}))},LocationProvider.prototype.componentWillUnmount=function componentWillUnmount(){var e=this.state.refs;this.unmounted=!0,e.unlisten()},LocationProvider.prototype.render=function render(){var e=this.state.context,t=this.props.children;return o().createElement(A.Provider,{value:e},"function"==typeof t?t(e):t||null)},LocationProvider}(o().Component);j.defaultProps={history:T};var L=function ServerLocation(e){var t=e.url,r=e.children,n=t.indexOf("?"),a=void 0,u="";return n>-1?(a=t.substring(0,n),u=t.substring(n)):a=t,o().createElement(A.Provider,{value:{location:{pathname:a,search:u,hash:""},navigate:function navigate(){throw new Error("You can't call navigate on the server.")}}},r)},D=M("Base",{baseuri:"/",basepath:"/"}),I=function Router(e){return o().createElement(D.Consumer,null,(function(t){return o().createElement(N,null,(function(r){return o().createElement(q,R({},t,r,e))}))}))},q=function(e){function RouterImpl(){return _classCallCheck(this,RouterImpl),_possibleConstructorReturn(this,e.apply(this,arguments))}return _inherits(RouterImpl,e),RouterImpl.prototype.render=function render(){var e=this.props,t=e.location,r=e.navigate,n=e.basepath,a=e.primary,u=e.children,i=(e.baseuri,e.component),l=void 0===i?"div":i,s=_objectWithoutProperties(e,["location","navigate","basepath","primary","children","baseuri","component"]),f=o().Children.toArray(u).reduce((function(e,t){var r=oe(n)(t);return e.concat(r)}),[]),p=t.pathname,v=c(f,p);if(v){var m=v.params,h=v.uri,y=v.route,g=v.route.value;n=y.default?n:y.path.replace(/\*$/,"");var _=R({},m,{uri:h,location:t,navigate:function navigate(e,t){return r(d(e,h),t)}}),b=o().cloneElement(g,_,g.props.children?o().createElement(I,{location:t,primary:a},g.props.children):void 0),x=a?W:l,E=a?R({uri:h,location:t,component:l},s):s;return o().createElement(D.Provider,{value:{baseuri:h,basepath:n}},o().createElement(x,E,b))}return null},RouterImpl}(o().PureComponent);q.defaultProps={primary:!0};var U=M("Focus"),W=function FocusHandler(e){var t=e.uri,r=e.location,n=e.component,a=_objectWithoutProperties(e,["uri","location","component"]);return o().createElement(U.Consumer,null,(function(e){return o().createElement(H,R({},a,{component:n,requestFocus:e,uri:t,location:r}))}))},B=!0,G=0,H=function(e){function FocusHandlerImpl(){var t,r;_classCallCheck(this,FocusHandlerImpl);for(var n=arguments.length,o=Array(n),a=0;a<n;a++)o[a]=arguments[a];return t=r=_possibleConstructorReturn(this,e.call.apply(e,[this].concat(o))),r.state={},r.requestFocus=function(e){!r.state.shouldFocus&&e&&e.focus()},_possibleConstructorReturn(r,t)}return _inherits(FocusHandlerImpl,e),FocusHandlerImpl.getDerivedStateFromProps=function getDerivedStateFromProps(e,t){if(null==t.uri)return R({shouldFocus:!0},e);var r=e.uri!==t.uri,n=t.location.pathname!==e.location.pathname&&e.location.pathname===e.uri;return R({shouldFocus:r||n},e)},FocusHandlerImpl.prototype.componentDidMount=function componentDidMount(){G++,this.focus()},FocusHandlerImpl.prototype.componentWillUnmount=function componentWillUnmount(){0===--G&&(B=!0)},FocusHandlerImpl.prototype.componentDidUpdate=function componentDidUpdate(e,t){e.location!==this.props.location&&this.state.shouldFocus&&this.focus()},FocusHandlerImpl.prototype.focus=function focus(){var e=this.props.requestFocus;e?e(this.node):B?B=!1:this.node&&(this.node.contains(document.activeElement)||this.node.focus())},FocusHandlerImpl.prototype.render=function render(){var e=this,t=this.props,r=(t.children,t.style),n=(t.requestFocus,t.component),a=void 0===n?"div":n,u=(t.uri,t.location,_objectWithoutProperties(t,["children","style","requestFocus","component","uri","location"]));return o().createElement(a,R({style:R({outline:"none"},r),tabIndex:"-1",ref:function ref(t){return e.node=t}},u),o().createElement(U.Provider,{value:this.requestFocus},this.props.children))},FocusHandlerImpl}(o().Component);!function polyfill(e){var t=e.prototype;if(!t||!t.isReactComponent)throw new Error("Can only polyfill class components");if("function"!=typeof e.getDerivedStateFromProps&&"function"!=typeof t.getSnapshotBeforeUpdate)return e;var r=null,n=null,o=null;if("function"==typeof t.componentWillMount?r="componentWillMount":"function"==typeof t.UNSAFE_componentWillMount&&(r="UNSAFE_componentWillMount"),"function"==typeof t.componentWillReceiveProps?n="componentWillReceiveProps":"function"==typeof t.UNSAFE_componentWillReceiveProps&&(n="UNSAFE_componentWillReceiveProps"),"function"==typeof t.componentWillUpdate?o="componentWillUpdate":"function"==typeof t.UNSAFE_componentWillUpdate&&(o="UNSAFE_componentWillUpdate"),null!==r||null!==n||null!==o){var a=e.displayName||e.name,u="function"==typeof e.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()";throw Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+a+" uses "+u+" but also contains the following legacy lifecycles:"+(null!==r?"\n  "+r:"")+(null!==n?"\n  "+n:"")+(null!==o?"\n  "+o:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks")}if("function"==typeof e.getDerivedStateFromProps&&(t.componentWillMount=componentWillMount,t.componentWillReceiveProps=componentWillReceiveProps),"function"==typeof t.getSnapshotBeforeUpdate){if("function"!=typeof t.componentDidUpdate)throw new Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");t.componentWillUpdate=componentWillUpdate;var i=t.componentDidUpdate;t.componentDidUpdate=function componentDidUpdatePolyfill(e,t,r){var n=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:r;i.call(this,e,t,n)}}return e}(H);var $=function k(){},V=o().forwardRef;void 0===V&&(V=function forwardRef(e){return e});var Q=V((function(e,t){var r=e.innerRef,n=_objectWithoutProperties(e,["innerRef"]);return o().createElement(D.Consumer,null,(function(e){e.basepath;var a=e.baseuri;return o().createElement(N,null,(function(e){var u=e.location,i=e.navigate,l=n.to,c=n.state,f=n.replace,p=n.getProps,v=void 0===p?$:p,m=_objectWithoutProperties(n,["to","state","replace","getProps"]),h=d(l,a),y=encodeURI(h),g=u.pathname===y,_=s(u.pathname,y);return o().createElement("a",R({ref:t||r,"aria-current":g?"page":void 0},m,v({isCurrent:g,isPartiallyCurrent:_,href:h,location:u}),{href:h,onClick:function onClick(e){if(m.onClick&&m.onClick(e),ae(e)){e.preventDefault();var t=f;if("boolean"!=typeof f&&g){var r=R({},u.state),n=(r.key,_objectWithoutProperties(r,["key"]));t=function shallowCompare(e,t){var r=Object.keys(e);return r.length===Object.keys(t).length&&r.every((function(r){return t.hasOwnProperty(r)&&e[r]===t[r]}))}(R({},c),n)}i(h,{state:c,replace:t})}}}))}))}))}));function RedirectRequest(e){this.uri=e}Q.displayName="Link";var X=function isRedirect(e){return e instanceof RedirectRequest},z=function redirectTo(e){throw new RedirectRequest(e)},K=function(e){function RedirectImpl(){return _classCallCheck(this,RedirectImpl),_possibleConstructorReturn(this,e.apply(this,arguments))}return _inherits(RedirectImpl,e),RedirectImpl.prototype.componentDidMount=function componentDidMount(){var e=this.props,t=e.navigate,r=e.to,n=(e.from,e.replace),o=void 0===n||n,a=e.state,u=(e.noThrow,e.baseuri),i=_objectWithoutProperties(e,["navigate","to","from","replace","state","noThrow","baseuri"]);Promise.resolve().then((function(){var e=d(r,u);t(p(e,i),{replace:o,state:a})}))},RedirectImpl.prototype.render=function render(){var e=this.props,t=(e.navigate,e.to),r=(e.from,e.replace,e.state,e.noThrow),n=e.baseuri,o=_objectWithoutProperties(e,["navigate","to","from","replace","state","noThrow","baseuri"]),a=d(t,n);return r||z(p(a,o)),null},RedirectImpl}(o().Component),Y=function Redirect(e){return o().createElement(D.Consumer,null,(function(t){var r=t.baseuri;return o().createElement(N,null,(function(t){return o().createElement(K,R({},t,{baseuri:r},e))}))}))},J=function Match(e){var t=e.path,r=e.children;return o().createElement(D.Consumer,null,(function(e){var n=e.baseuri;return o().createElement(N,null,(function(e){var o=e.navigate,a=e.location,u=d(t,n),i=f(u,a.pathname);return r({navigate:o,location:a,match:i?R({},i.params,{uri:i.uri,path:t}):null})}))}))},Z=function useLocation(){var e=(0,n.useContext)(A);if(!e)throw new Error("useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");return e.location},ee=function useNavigate(){var e=(0,n.useContext)(A);if(!e)throw new Error("useNavigate hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");return e.navigate},te=function useParams(){var e=(0,n.useContext)(D);if(!e)throw new Error("useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");var t=Z(),r=f(e.basepath,t.pathname);return r?r.params:null},re=function useMatch(e){if(!e)throw new Error("useMatch(path: string) requires an argument of a string to match against");var t=(0,n.useContext)(D);if(!t)throw new Error("useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");var r=Z(),o=d(e,t.baseuri),a=f(o,r.pathname);return a?R({},a.params,{uri:a.uri,path:e}):null},ne=function stripSlashes(e){return e.replace(/(^\/+|\/+$)/g,"")},oe=function createRoute(e){return function(t){if(!t)return null;if(t.type===o().Fragment&&t.props.children)return o().Children.map(t.props.children,createRoute(e));if(t.props.path||t.props.default||t.type===Y||u()(!1),t.type!==Y||t.props.from&&t.props.to||u()(!1),t.type!==Y||function validateRedirect(e,t){var r=function filter(e){return m(e)};return _(e).filter(r).sort().join("/")===_(t).filter(r).sort().join("/")}(t.props.from,t.props.to)||u()(!1),t.props.default)return{value:t,default:!0};var r=t.type===Y?t.props.from:t.props.path,n="/"===r?e:ne(e)+"/"+ne(r);return{value:t,default:t.props.default,path:t.props.children?ne(n)+"/*":n}}},ae=function shouldNavigate(e){return!e.defaultPrevented&&0===e.button&&!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}},33407:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=function App(){return a.default.createElement("div",{id:"elementor-form-submissions"},a.default.createElement(l.SettingsProvider,{value:window.elementorSubmissionsConfig},a.default.createElement(i.NoticesProvider,null,a.default.createElement(s.default,null),a.default.createElement(u.LocationProvider,{history:p},a.default.createElement(u.Router,null,a.default.createElement(f.default,{path:"/"}),a.default.createElement(c.default,{path:"/:id"}))))))};var a=o(r(63804)),u=r(50927),i=r(26062),l=r(39848),s=o(r(82570)),c=o(r(13746)),f=o(r(35744)),d=r(22634),p=(0,u.createHistory)((0,d.createHashSource)())},29017:(e,t,r)=>{"use strict";var n=r(18194).__,o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.BulkActionSelect=BulkActionSelect;var u=a(r(63804));r(71954),r(90286);var i=a(r(47834)),l=a(r(23615)),s=u.default,c=s.useState,f=s.useCallback;function BulkActionSelect(e){var t=c(""),r=(0,i.default)(t,2),o=r[0],a=r[1],l=f((function(t){t.preventDefault();var r=e.actions.find((function(e){return e.value===o}));r&&(r.onApply(),a(""))}),[o,e.actions]);return u.default.createElement("form",{className:"actions bulkactions ".concat(e.className),onSubmit:l},u.default.createElement("label",{htmlFor:"bulk-action-selector-top",className:"screen-reader-text"},n("Select bulk action","elementor-pro")),u.default.createElement("select",{name:"action",value:o,onChange:function onChange(e){return a(e.target.value)}},u.default.createElement("option",{value:"",disabled:!0},n("Bulk actions","elementor-pro")),e.actions.map((function(e){return u.default.createElement("option",{key:e.value,value:e.value},e.label)}))),u.default.createElement("input",{type:"submit",className:"button action",value:n("Apply","elementor-pro")}))}BulkActionSelect.propTypes={className:l.default.string,actions:l.default.arrayOf(l.default.shape({label:l.default.string.isRequired,value:l.default.string.isRequired,onApply:l.default.func.isRequired})).isRequired},BulkActionSelect.defaultProps={className:""}},77057:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=Bulk;var a=o(r(63804)),u=o(r(74846)),i=o(r(23615)),l=a.default.useCallback;function Bulk(e){var t=l((function(t){var r=t.target.checked?(0,u.default)(e.allValues):[];e.onChange(r)}),[e.onChange,e.checkedGroup,e.allValues]);return a.default.createElement("input",{type:"checkbox",checked:e.checkedGroup.length===e.allValues.length&&e.allValues.length>0,onChange:t})}Bulk.propTypes={checkedGroup:i.default.array.isRequired,allValues:i.default.array.isRequired,onChange:i.default.func.isRequired}},13682:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=Checkbox;var a=o(r(63804));r(64434),r(3777),r(38081);var u=o(r(74846)),i=o(r(77057)),l=o(r(23615)),s=a.default.useCallback;function Checkbox(e){var t=s((function(t){var r=t.target.checked?[].concat((0,u.default)(e.checkedGroup),[e.value]):e.checkedGroup.filter((function(t){return t!==e.value}));e.onChange(r)}),[e.onChange,e.checkedGroup,e.value]);return a.default.createElement("input",{type:"checkbox",checked:e.checkedGroup.includes(e.value),onChange:t})}Checkbox.propTypes={checkedGroup:l.default.array.isRequired,value:l.default.number.isRequired,onChange:l.default.func.isRequired},Checkbox.Bulk=i.default},48059:(e,t,r)=>{"use strict";var n=r(18194).__,o=r(23615),a=r(67394),u=r(67971);a(t,"__esModule",{value:!0}),t.default=DateFilter;var i=u(r(63804));r(71954),r(64434),r(99745),r(90286);var l=u(r(47834)),s=i.default,c=s.useState,f=s.useMemo,d=s.useCallback;function DateFilter(e){var t=c(!1),r=(0,l.default)(t,2),o=r[0],a=r[1],u=f((function(){var e=function format(e){return wp.date.date("Y-m-d",e)},t=new Date,r=new Date(t),o=new Date(t),a=new Date(t);return r.setDate(r.getDate()-1),o.setDate(o.getDate()-7),a.setDate(a.getDate()-30),[{label:n("All Time","elementor-pro"),value:"all",filter:{before:null,after:null}},{label:n("Today","elementor-pro"),value:"today",filter:{before:null,after:e(t)}},{label:n("Yesterday","elementor-pro"),value:"yesterday",filter:{before:e(r),after:e(r)}},{label:n("Last 7 days","elementor-pro"),value:"last7",filter:{before:null,after:e(o)}},{label:n("Last 30 days","elementor-pro"),value:"last_30",filter:{before:null,after:e(a)}},{label:n("Custom","elementor-pro"),value:"custom",filter:{before:null,after:null}}]}),[]),s=f((function(){if(o)return"custom";var t=u.find((function(t){return t.filter.after===e.value.after&&t.filter.before===e.value.before}));return t?t.value:"custom"}),[u,e.value,o]),p=d((function(t){var r=t.target.value,n=u.find((function(e){return e.value===r}));a("custom"===n.value),e.onChange(n.filter)}),[u]),v=d((function(t){"custom"===s&&e.onChange(t)}),[s]);return i.default.createElement(i.default.Fragment,null,e.label&&i.default.createElement("label",{htmlFor:"filter-by-".concat(e.name),className:"screen-reader-text"},e.label),i.default.createElement("select",{id:"filter-by-".concat(e.name),value:s,onChange:p},u.map((function(e){var t=e.value,r=e.label;return i.default.createElement("option",{key:t,value:t}," ",r," ")}))),"custom"===s&&i.default.createElement(i.default.Fragment,null,i.default.createElement("input",{type:"date","aria-label":n("Start Date","elementor-pro"),value:e.value.after||"",onChange:function onChange(e){var t=e.target.value;return v({after:t})}}),"  -  ",i.default.createElement("input",{type:"date","aria-label":n("End Date","elementor-pro"),value:e.value.before||"",onChange:function onChange(e){var t=e.target.value;return v({before:t})}})))}DateFilter.propTypes={value:o.shape({after:o.string,before:o.string}),label:o.string,onChange:o.func.isRequired,name:o.string.isRequired},DateFilter.defaultProps={value:{after:null,before:null},options:[]}},63906:(e,t,r)=>{"use strict";var n=r(18194).__,o=r(23615),a=r(67394),u=r(67971);a(t,"__esModule",{value:!0}),t.default=ExportButton;var i,l=u(r(63804)),s=u(r(18042)),c=r(99194),f=l.default.useMemo,d=(i={},(0,s.default)(i,c.EXPORT_MODE_ALL,n("Export All to CSV","elementor-pro")),(0,s.default)(i,c.EXPORT_MODE_FILTERED,n("Export Filtered to CSV","elementor-pro")),(0,s.default)(i,c.EXPORT_MODE_SELECTED,n("Export Selected to CSV","elementor-pro")),i);function ExportButton(e){var t=f((function(){if(!e.progress)return 0;var t=e.progress,r=t.count,n=t.success;return 0===r||0===n?0:Math.round(n/r*100)}),[e.progress]);return l.default.createElement("button",{className:"button button-primary e-export-button",onClick:function onClick(){return!e.disabled&&e.onClick()},disabled:e.disabled},e.isLoading?l.default.createElement(l.default.Fragment,null,l.default.createElement("i",{className:"eicon-loading eicon-animation-spin"}),"  ",l.default.createElement("span",null," ",t,"% "),"  ",n("Click to Cancel","elementor-pro")):d[e.mode])}ExportButton.propTypes={onClick:o.func.isRequired,isLoading:o.bool,mode:o.oneOf([c.EXPORT_MODE_ALL,c.EXPORT_MODE_SELECTED,c.EXPORT_MODE_FILTERED]),disabled:o.bool,progress:o.shape({count:o.number,success:o.number})},ExportButton.defaultProps={isLoading:!1,hasSelected:!1,disabled:!1}},50361:(e,t,r)=>{"use strict";var n=r(18194).__,o=r(23615),a=r(67394),u=r(67971);a(t,"__esModule",{value:!0}),t.default=FormActionsLog;var i=u(r(63804));r(90286),r(99745);var l=u(r(38044)),s=r(55301),c=u(r(63873));function FormActionsLog(e){return i.default.createElement(l.default,{header:i.default.createElement("h2",null,n("Actions Log","elementor-pro"))},0===e.actions.length&&i.default.createElement("div",{className:"inside"},i.default.createElement("p",{style:{margin:0}}," ",n("No form actions.","elementor-pro")," ")),e.actions.map((function(e){return i.default.createElement("div",{className:"inside e-form-submissions-action-log e-form-submissions-action-log--".concat("success"===e.status?"success":"error"),key:e.name},i.default.createElement("p",null,i.default.createElement("strong",{className:"e-form-submissions-action-log__label"}," ",e.label," "),i.default.createElement("i",{className:"".concat("success"===e.status?"eicon-success eicon-check-circle-o":"eicon-error eicon-warning"," e-form-submissions-action-log__icon")}),i.default.createElement("span",{className:"e-form-submissions-action-log__date"}," ",(0,s.formatToLocalDateTime)(e.created_at)," ")),i.default.createElement("p",{className:"e-form-submissions-action-log__message"},e.log||c.default.actionLogs[e.status]()))})))}FormActionsLog.propTypes={actions:o.arrayOf(o.shape({status:o.oneOf(["success","failed"]),name:o.string,label:o.string,created_at:o.string,log:o.string})).isRequired}},57403:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971),a=r(52369);n(t,"__esModule",{value:!0}),t.default=Link;var u=a(r(63804)),i=o(r(84899)),l=o(r(37959));r(99236);var s=r(50927);function Link(e){var t=(0,u.useRef)();return(0,u.useEffect)((function(){t.current&&t.current.setAttribute("href","".concat(location.href.split("#")[0],"#").concat(e.to))}),[e.to,t.current]),u.default.createElement(s.Link,(0,l.default)({},e,{ref:t}))}Link.propTypes=(0,i.default)({},s.Link.propTypes)},28825:(e,t,r)=>{"use strict";var n=r(23615),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=LinksFilter;var u=a(r(63804));r(64434),r(90286);var i=u.default,l=i.useCallback,s=i.useMemo;function LinksFilter(e){var t=l((function(t,r){t.preventDefault(),e.onChange&&e.onChange(r)}),[]),r=s((function(){return e.options.filter((function(e){return e.shouldShow}))}),[e.options]);return u.default.createElement("ul",{className:"subsubsub"},r.map((function(n,o){var a=o+1===r.length;return u.default.createElement("li",{key:n.value}," ",u.default.createElement("a",{href:"#",className:n.value===e.value?"current":"",onClick:function onClick(e){return t(e,n.value)}},n.label,void 0!==n.count&&u.default.createElement("span",{className:"count"}," (",n.count,")"))," ",a?"":"|")})))}LinksFilter.propTypes={options:n.arrayOf(n.shape({value:n.string,label:n.string,count:n.number,shouldShow:n.bool})),value:n.string,onChange:n.func}},37995:(e,t,r)=>{"use strict";var n=r(18194).__,o=r(23615),a=r(67394),u=r(67971);a(t,"__esModule",{value:!0}),t.default=Notice;var i=u(r(63804)),l=r(26062);function Notice(e){return i.default.createElement("div",{className:"notice notice-".concat(e.model.type," ").concat(e.model.dismissible?"is-dismissible":"")},i.default.createElement("p",null,e.model.message,e.model.undoAction&&i.default.createElement(i.default.Fragment,null," ",i.default.createElement("a",{href:"#",onClick:function onClick(t){t.preventDefault(),e.model.undoAction()}},n("Undo","elementor-pro")))),e.model.dismissible&&i.default.createElement("button",{type:"button",className:"notice-dismiss",onClick:e.dismiss},i.default.createElement("span",{className:"screen-reader-text"},n("Dismiss this notice.","elementor-pro"))))}Notice.propTypes={model:o.shape({key:o.number.isRequired,message:o.string.isRequired,type:o.oneOf([l.NOTICE_TYPE_SUCCESS,l.NOTICE_TYPE_ERROR]).isRequired,dismissible:o.bool,undoAction:o.func}),dismiss:o.func}},82570:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=function Notices(){var e=(0,u.useNoticesContext)(),t=e.notices,r=e.dismiss;return t.map((function(e){return a.default.createElement(i.default,{key:e.key,model:e,dismiss:function dismiss(){return r(e.key)}})}))};var a=o(r(63804));r(90286);var u=r(26062),i=o(r(37995))},31459:(e,t,r)=>{"use strict";var n=r(18194).__,o=r(23615),a=r(67394),u=r(67971);a(t,"__esModule",{value:!0}),t.default=Pagination;var i=u(r(63804)),l=i.default,s=l.useCallback,c=l.useMemo;function Pagination(e){var t=c((function(){return 1!==e.currentPage}),[e.currentPage]),r=c((function(){return e.lastPage>e.currentPage}),[e.currentPage,e.lastPage]),o=t?"a":"span",a=r?"a":"span",u=s((function(t,r,n){t.preventDefault(),r&&e.onChange(n)}),[e.onChange]);return e.currentPage?i.default.createElement("div",{className:"tablenav-pages ".concat(e.lastPage<=1&&"one-page")},i.default.createElement("span",{className:"displaying-num"},e.total," ",n("items","elementor-pro")),1<e.lastPage&&i.default.createElement("span",{className:"pagination-links"},i.default.createElement(o,{className:"tablenav-pages-navspan button ".concat(!t&&"disabled"),onClick:function onClick(e){return u(e,t,1)}},"«")," ",i.default.createElement(o,{className:"tablenav-pages-navspan button ".concat(!t&&"disabled"),onClick:function onClick(r){return u(r,t,e.currentPage-1)}},"‹"),i.default.createElement("span",{className:"paging-input"},i.default.createElement("span",{className:"screen-reader-text"},n("Current Page","elementor-pro")),i.default.createElement("span",{className:"paging-input",style:{margin:"0 6px"}},i.default.createElement("span",{className:"tablenav-paging-text"},e.currentPage," ",n("of","elementor-pro"),i.default.createElement("span",{className:"total-pages",style:{margin:"0"}}," ",e.lastPage)))),i.default.createElement(a,{className:"tablenav-pages-navspan button ".concat(!r&&"disabled"),onClick:function onClick(t){return u(t,r,e.currentPage+1)}},"›")," ",i.default.createElement(a,{className:"tablenav-pages-navspan button ".concat(!r&&"disabled"),onClick:function onClick(t){return u(t,r,e.lastPage)}},"»"))):""}Pagination.propTypes={currentPage:o.number,total:o.number,lastPage:o.number,perPage:o.number,onChange:o.func.isRequired}},38044:(e,t,r)=>{"use strict";var n=r(23615),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=PostBox;var u=a(r(63804));function PostBox(e){return u.default.createElement("div",{className:"postbox"},u.default.createElement("div",{className:"postbox-header"},e.header),u.default.createElement("div",{className:"inner"},e.children))}PostBox.propTypes={header:n.oneOfType([n.string,n.node,n.arrayOf(n.node)]),children:n.oneOfType([n.node,n.arrayOf(n.node)])}},57767:(e,t,r)=>{"use strict";var n=r(18194).__,o=r(23615),a=r(67394),u=r(67971);a(t,"__esModule",{value:!0}),t.default=RefererFilter;var i=u(r(63804)),l=u(r(74846)),s=u(r(47834));r(42679),r(90286);var c=i.default,f=c.useEffect,d=c.useRef,p=c.useState;function renderSelect2(e,t){jQuery(e).select2({allowClear:!0,placeholder:n("All Pages","elementor-pro"),dir:elementorCommon.config.isRTL?"rtl":"ltr",ajax:{delay:400,transport:function transport(e,t,r){var n=e.data.search;return $e.data.get("form-submissions/referer",{search:n},{refresh:!0}).then(t).catch(r)},data:function data(e){return{search:e.term}},processResults:function processResults(e){return{results:e.data.data.map((function(e){var t=e.value,r=e.label;return{id:encodeURIComponent(t),text:r}}))}},cache:!0},minimumInputLength:3}).on("select2:select select2:unselect",(function(e){t(e.target.value)}))}function RefererFilter(e){var t=p([{value:"",label:n("All Pages","elementor-pro")}]),r=(0,s.default)(t,2),o=r[0],a=r[1],u=d();return f((function(){var t=null;return e.value?$e.data.get("form-submissions/referer",{value:e.value},{refresh:!0}).then((function(e){var t=e.data;return a((function(e){return[].concat((0,l.default)(e),(0,l.default)(t.data))}))})).then((function(){return t=renderSelect2(u.current,e.onChange)})):t=renderSelect2(u.current,e.onChange),function(){t&&t.select2("destroy").off("select2:select select2:unselect")}}),[]),i.default.createElement(i.default.Fragment,null,i.default.createElement("label",{htmlFor:"filter-by-referer",className:"screen-reader-text"},n("Filter by Page","elementor-pro")),i.default.createElement("select",{ref:u,id:"filter-by-referer",value:e.value},o.map((function(e){var t=e.value,r=e.label;return i.default.createElement("option",{key:t,value:encodeURIComponent(t)}," ",r," ")}))))}RefererFilter.propTypes={value:o.string,onChange:o.func.isRequired},RefererFilter.defaultProps={value:""}},95544:(e,t,r)=>{"use strict";var n=r(23615),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=ResourceFilter;var u=a(r(63804));r(99745),r(90286);var i=a(r(74846)),l=a(r(47834)),s=u.default,c=s.useState,f=s.useEffect;function ResourceFilter(e){var t=c([]),r=(0,l.default)(t,2),n=r[0],o=r[1];return f((function(){$e.data.get(e.resourceOptions.command,e.resourceOptions.args,{refresh:!0}).then((function(e){return o(e.data.data)}))}),[]),u.default.createElement(u.default.Fragment,null,e.label&&u.default.createElement("label",{htmlFor:"filter-by-".concat(e.name),className:"screen-reader-text"},e.label),u.default.createElement("select",{id:"filter-by-".concat(e.name),value:e.value,onChange:function onChange(t){return e.onChange(t.target.value)}},[].concat((0,i.default)(e.options),(0,i.default)(n)).map((function(e){var t=e.value,r=e.label;return u.default.createElement("option",{key:t,value:t}," ",r," ")}))))}ResourceFilter.propTypes={value:n.string,onChange:n.func.isRequired,label:n.string,name:n.string.isRequired,options:n.arrayOf(n.shape({label:n.string,value:n.string})),resourceOptions:n.shape({command:n.string,args:n.object})},ResourceFilter.defaultProps={value:"",options:[]}},95240:(e,t,r)=>{"use strict";var n=r(18194).__,o=r(23615),a=r(67394),u=r(67971);a(t,"__esModule",{value:!0}),t.default=SearchBox;var i=u(r(63804)),l=u(r(47834)),s=i.default,c=s.useState,f=s.useRef,d=s.useCallback;function SearchBox(e){var t=c(e.value||""),r=(0,l.default)(t,2),o=r[0],a=r[1],u=f(null),s=d((function(t){u.current&&clearTimeout(u.current);var r=t.target.value;a(r),u.current=setTimeout((function(){return e.onChange(r)}),e.debounceTimeout)}),[]);return i.default.createElement("p",{className:"search-box e-form-submissions-search"},e.label&&i.default.createElement("label",{className:"screen-reader-text",htmlFor:"search-input"},e.label),e.isSearching&&i.default.createElement("span",{className:"e-form-submissions-search__spinner"},i.default.createElement("i",{className:"eicon-loading eicon-animation-spin"})),i.default.createElement("input",{type:"search",id:"search-input",name:"s",value:o,onChange:s,placeholder:n("Search...","elementor-pro")}))}SearchBox.propTypes={value:o.string,onChange:o.func.isRequired,label:o.string,debounceTimeout:o.number,isSearching:o.bool},SearchBox.defaultProps={debounceTimeout:600,isSearching:!1}},20005:(e,t,r)=>{"use strict";var n=r(18194).__,o=r(23615),a=r(67394),u=r(67971);a(t,"__esModule",{value:!0}),t.default=SubmissionRow;var i=u(r(63804));r(99745);var l=u(r(47834)),s=u(r(57403)),c=u(r(18939)),f=r(55301),d=i.default.useState;function SubmissionRow(e){var t=d(!1),r=(0,l.default)(t,2),o=r[0],a=r[1];return i.default.createElement(c.default.Row,{className:o?"is-expanded":"",style:{fontWeight:e.item.is_read?"inherit":"bold"}},i.default.createElement(c.default.Cell,{component:"th",className:"check-column"},e.checkBoxComponent),i.default.createElement(c.default.Cell,{className:"has-row-actions column-primary"},"trash"===e.item.status?e.item.main.value:i.default.createElement(s.default,{to:"/".concat(e.item.id),"aria-label":"View"},e.item.main.value),e.rowActionComponent,i.default.createElement("button",{type:"button",className:"toggle-row",onClick:function onClick(){return a((function(e){return!e}))}},i.default.createElement("span",{className:"screen-reader-text"},n("Show more details","elementor-pro")))),i.default.createElement(c.default.Cell,{className:"column-actions",colName:e.tableTitles.actions_log_status.label},e.item.actions_count>0&&i.default.createElement("i",{className:"".concat(e.item.actions_count===e.item.actions_succeeded_count?"eicon-success eicon-check-circle-o":"eicon-error eicon-warning"),title:"".concat(e.item.actions_succeeded_count,"/").concat(e.item.actions_count," ").concat(n("Succeed","elementor-pro"))})),i.default.createElement(c.default.Cell,{className:"column-form",colName:e.tableTitles.form.label},e.item.post&&i.default.createElement("a",{href:e.item.post.edit_url,target:"_blank",rel:"noreferrer"},e.item.form.name," (",e.item.form.element_id,")")),i.default.createElement(c.default.Cell,{className:"column-page",colName:e.tableTitles.page.label},i.default.createElement("a",{href:e.item.referer,target:"_blank",rel:"noreferrer",title:e.item.referer_title},e.item.referer_title||i.default.createElement("i",{className:"eicon-editor-external-link e-form-submissions-referer-icon"}))),i.default.createElement(c.default.Cell,{className:"column-id",colName:e.tableTitles.id.label},e.item.id),i.default.createElement(c.default.Cell,{className:"column-date",colName:e.tableTitles.created_at.label},(0,f.formatToLocalDateTime)(e.item.created_at)))}SubmissionRow.propTypes={item:o.object.isRequired,tableTitles:o.objectOf(o.shape({label:o.string})),rowActionComponent:o.node,checkBoxComponent:o.node}},81221:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=Acceptance;var a=o(r(63804)),u=o(r(84899)),i=o(r(47834)),l=r(9036),s=a.default.useState;function Acceptance(e){var t=s(e.value),r=(0,i.default)(t,2),n=r[0],o=r[1];return a.default.createElement("label",{className:"e-form-submissions-value-label"},a.default.createElement("input",{type:"checkbox",value:"on",checked:e.isEditMode?"on"===n:"on"===e.value,onChange:function onChange(t){var r=t.target.checked?"on":"";o(r),e.onChange(r)},disabled:!e.isEditMode}))}Acceptance.propTypes=(0,u.default)({},l.basePropTypes)},12275:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=Checkbox;var a=o(r(63804));r(99236),r(90286),r(3777),r(38081),r(64434);var u=o(r(84899)),i=o(r(74846)),l=o(r(47834)),s=r(9036),c=o(r(34578)),f=o(r(33497)),d=a.default,p=d.useState,v=d.useMemo;function Checkbox(e){var t=v((function(){return e.value.split(", ")}),[e.value]),r=p(t),n=(0,l.default)(r,2),o=n[0],u=n[1];return(0,c.default)((function(){return e.onChange(o.join(", "))}),[o]),(0,f.default)(e.field.options).map((function(r){return a.default.createElement("label",{className:"e-form-submissions-value-label",key:r.value},a.default.createElement("input",{type:"checkbox",value:r.value,checked:e.isEditMode?o.includes(r.value):t.includes(r.value),onChange:function onChange(e){var t=e.target.checked;u((function(e){return e=t?[].concat((0,i.default)(e),[r.value]):e.filter((function(e){return e!==r.value}))}))},disabled:!e.isEditMode}),r.label)}))}Checkbox.propTypes=(0,u.default)({},s.basePropTypes)},48184:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=Date;var a=o(r(63804)),u=o(r(84899)),i=r(9036),l=o(r(47067)),s=r(55301);function Date(e){return a.default.createElement(l.default,{value:e.value,isEditMode:e.isEditMode,onChange:e.onChange,field:e.field},e.value&&(0,s.formatToLocalDate)(e.value))}Date.propTypes=(0,u.default)({},i.basePropTypes)},28559:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=Email;var a=o(r(63804)),u=o(r(84899)),i=r(9036),l=o(r(47067));function Email(e){return a.default.createElement(l.default,{value:e.value,isEditMode:e.isEditMode,onChange:e.onChange,field:e.field},e.value&&a.default.createElement("a",{href:"mailto:".concat(e.value)},e.value))}Email.propTypes=(0,u.default)({},i.basePropTypes)},9036:(e,t,r)=>{"use strict";var n=r(23615),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=SubmissionValue,t.basePropTypes=void 0;var u=a(r(63804)),i=a(r(18042)),l=a(r(84899)),s=a(r(47834)),c=a(r(38923)),f=a(r(47067)),d=a(r(28559)),p=a(r(20126)),v=a(r(38379)),m=a(r(58552)),h=a(r(97745)),y=a(r(12275)),g=a(r(81221)),_=a(r(10829)),b=a(r(48184)),x=a(r(77859)),E=a(r(87207)),w=u.default.useMemo,S=f.default,C=(0,c.default)({Email:d.default,Tel:p.default,Url:v.default,Radio:m.default,Select:h.default,Checkbox:y.default,Acceptance:g.default,Upload:_.default,Date:b.default,Time:x.default,Textarea:E.default,Text:f.default}).reduce((function(e,t){var r=(0,s.default)(t,2),n=r[0],o=r[1];return(0,l.default)((0,l.default)({},e),{},(0,i.default)({},n.toLowerCase(),o))}),{}),P={value:n.string,isEditMode:n.bool,onChange:n.func.isRequired,field:n.shape({id:n.string.isRequired,type:n.string,options:n.arrayOf(n.string),is_multiple:n.bool})};function SubmissionValue(e){var t=w((function(){var t,r=null===(t=e.field)||void 0===t?void 0:t.type;return C.hasOwnProperty(r)?C[r]:S}),[e.field,e.value]);return u.default.createElement(t,{value:e.value,field:e.field,isEditMode:e.isEditMode,onChange:function onChange(t){return e.onChange(e.field.id,t)}})}t.basePropTypes=P,SubmissionValue.propTypes=(0,l.default)({},P),SubmissionValue.defaultProps={isEditMode:!1}},58552:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=Radio;var a=o(r(63804));r(90286);var u=o(r(84899)),i=o(r(47834)),l=r(9036),s=o(r(33497)),c=a.default.useState;function Radio(e){var t=c(e.value),r=(0,i.default)(t,2),n=r[0],o=r[1];return(0,s.default)(e.field.options).map((function(t){return a.default.createElement("label",{className:"e-form-submissions-value-label",key:t.value},a.default.createElement("input",{type:"radio",value:t.value,checked:e.isEditMode?t.value===n:t.value===e.value,onChange:function onChange(){o(t.value),e.onChange(t.value)},disabled:!e.isEditMode}),t.label)}))}Radio.propTypes=(0,u.default)({},l.basePropTypes)},97745:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=Select;var a=o(r(63804)),u=o(r(75453)),i=o(r(84899)),l=o(r(47834));r(99236),r(90286);var s=r(9036),c=o(r(33497)),f=a.default.useState;function Select(e){var t=e.field.is_multiple?e.value.split(", "):e.value,r=f(t),n=(0,l.default)(r,2),o=n[0],i=n[1],s=(0,c.default)(e.field.options);return a.default.createElement("select",{value:e.isEditMode?o:t,multiple:e.field.is_multiple,onChange:function onChange(t){var r=(0,u.default)(t.target.selectedOptions,(function(e){return e.value}));i(e.field.is_multiple?r:r[0]),e.onChange(r.join(", "))},disabled:!e.isEditMode},s.map((function(e){return a.default.createElement("option",{value:e.value,key:e.value},e.label)})))}Select.propTypes=(0,i.default)({},s.basePropTypes)},20126:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=Tel;var a=o(r(63804)),u=o(r(84899)),i=r(9036),l=o(r(47067));function Tel(e){return a.default.createElement(l.default,{value:e.value,isEditMode:e.isEditMode,onChange:e.onChange,field:e.field},e.value&&a.default.createElement("a",{href:"tel:".concat(e.value)},e.value))}Tel.propTypes=(0,u.default)({},i.basePropTypes)},47067:(e,t,r)=>{"use strict";var n=r(23615),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=Text;var u=a(r(63804)),i=a(r(84899)),l=a(r(47834)),s=r(9036),c=u.default,f=c.useState,d=c.useMemo,p={email:"email",date:"date",time:"time",tel:"tel",url:"url",number:"number",text:"text"},v=p.text;function Text(e){var t=f(e.value),r=(0,l.default)(t,2),n=r[0],o=r[1],a=d((function(){var t;return p.hasOwnProperty(null===(t=e.field)||void 0===t?void 0:t.type)?p[e.field.type]:v}),[e.field]);return e.isEditMode?u.default.createElement("input",{type:a,value:n,onChange:function onChange(t){var r=t.target.value;o(r),e.onChange(r)}}):e.children||e.value}Text.propTypes=(0,i.default)({children:n.oneOfType([n.node,n.string])},s.basePropTypes)},87207:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=Textarea;var a=o(r(63804)),u=o(r(84899)),i=o(r(47834)),l=r(9036),s=a.default.useState;function Textarea(e){var t=s(e.value),r=(0,i.default)(t,2),n=r[0],o=r[1];return e.isEditMode?a.default.createElement("textarea",{value:e.isEditMode?n:e.value,rows:"4",onChange:function onChange(t){var r=t.target.value;o(r),e.onChange(r)}}):e.value}Textarea.propTypes=(0,u.default)({},l.basePropTypes)},77859:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=Time;var a=o(r(63804)),u=o(r(84899)),i=r(9036),l=o(r(47067)),s=r(55301);function Time(e){return a.default.createElement(l.default,{value:e.value,isEditMode:e.isEditMode,onChange:e.onChange,field:e.field},e.value&&(0,s.formatToLocalTime)("2000-01-01 ".concat(e.value)))}Time.propTypes=(0,u.default)({},i.basePropTypes)},10829:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=Upload;var a=o(r(63804)),u=o(r(84899));r(99236),r(90286);var i=r(9036);function Upload(e){return e.value.split(" , ").map((function(e){return a.default.createElement("div",{key:e},a.default.createElement("a",{href:e,target:"_blank",rel:"noreferrer"},e))}))}Upload.propTypes=(0,u.default)({},i.basePropTypes)},38379:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=Url;var a=o(r(63804)),u=o(r(84899)),i=r(9036),l=o(r(47067));function Url(e){return a.default.createElement(l.default,{value:e.value,isEditMode:e.isEditMode,onChange:e.onChange,field:e.field},e.value&&a.default.createElement("a",{href:e.value,target:"_blank",rel:"noreferrer"},e.value))}Url.propTypes=(0,u.default)({},i.basePropTypes)},67885:(e,t,r)=>{"use strict";var n=r(23615),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=Body;var u=a(r(63804));function Body(e){return u.default.createElement("tbody",{id:"the-list"},e.children)}Body.propTypes={children:n.any}},94435:(e,t,r)=>{"use strict";var n=r(23615),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=Cell;var u=a(r(63804));function Cell(e){var t=e.component;return u.default.createElement(t,{className:e.className,style:e.style,"data-colname":e.colName,colSpan:e.colSpan},e.children)}Cell.propTypes={component:n.string,children:n.any,className:n.string,style:n.object,colName:n.string,colSpan:n.number},Cell.defaultProps={component:"td",className:""}},37981:(e,t,r)=>{"use strict";var n=r(23615),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=Footer;var u=a(r(63804));function Footer(e){return u.default.createElement("tfoot",null,e.children)}Footer.propTypes={children:n.any}},89221:(e,t,r)=>{"use strict";var n=r(23615),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=Header;var u=a(r(63804));function Header(e){return u.default.createElement("thead",null,e.children)}Header.propTypes={children:n.any}},18939:(e,t,r)=>{"use strict";var n=r(23615),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=WpTable;var u=a(r(63804)),i=a(r(89221)),l=a(r(67885)),s=a(r(37981)),c=a(r(10776)),f=a(r(94435)),d=a(r(62324)),p=a(r(6614));function WpTable(e){return u.default.createElement("table",{className:"wp-list-table widefat fixed table-view-list ".concat(e.className),style:e.style},e.children)}WpTable.propTypes={children:n.any,style:n.object,className:n.string},WpTable.defaultProps={className:""},WpTable.Header=i.default,WpTable.Body=l.default,WpTable.Footer=s.default,WpTable.Row=c.default,WpTable.Cell=f.default,WpTable.OrderableCell=d.default,WpTable.RowActions=p.default},62324:(e,t,r)=>{"use strict";var n=r(23615),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=OrderableCell;var u=a(r(63804)),i=a(r(84899)),l=a(r(94435));function OrderableCell(e){var t="".concat(e.className," sortable ").concat(e.order.current.by===e.order.key&&"sorted ".concat(e.order.current.direction));return u.default.createElement(l.default,{component:e.component,style:e.style,className:t},u.default.createElement("a",{href:"#",onClick:function onClick(){return e.order.onChange({by:e.order.key,direction:e.order.key===e.order.current.by&&"asc"===e.order.current.direction?"desc":"asc"})}},u.default.createElement("span",null,e.children),u.default.createElement("span",{className:"sorting-indicator"})))}OrderableCell.propTypes=(0,i.default)((0,i.default)({},l.default.propTypes),{},{order:n.shape({key:n.string.isRequired,current:n.shape({by:n.string,direction:n.oneOf(["asc","desc"])}).isRequired,onChange:n.func.isRequired}).isRequired}),OrderableCell.defaultProps=(0,i.default)((0,i.default)({},l.default.defaultProps),{},{component:"th"})},6614:(e,t,r)=>{"use strict";var n=r(23615),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=RowActions;var u=a(r(63804)),i=a(r(37959));function RowActions(e){return u.default.createElement("div",{className:"row-actions",style:{fontWeight:"normal"}},e.actions.map((function(t,r){var n=r+1===e.actions.length,o=t.component||"a";return u.default.createElement("span",{key:t.key,className:t.className},u.default.createElement(o,(0,i.default)({href:"#","aria-label":t.label,onClick:function onClick(r){r.preventDefault(),t.onApply(e.item)}},t.props?t.props(e.item):{}),t.label),!n&&u.default.createElement("span",null," | "))})))}r(90286),RowActions.propTypes={actions:n.arrayOf(n.shape({key:n.string.isRequired,label:n.string.isRequired,onApply:n.func,className:n.string,props:n.func,component:n.any})),item:n.object}},10776:(e,t,r)=>{"use strict";var n=r(23615),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=Row;var u=a(r(63804));function Row(e){return u.default.createElement("tr",{style:e.style,className:e.className},e.children)}Row.propTypes={children:n.any,style:n.object,className:n.string},Row.defaultProps={style:{},className:""}},26062:(e,t,r)=>{"use strict";var n=r(23615),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.useNoticesContext=function useNoticesContext(){return v(y)},t.NoticesProvider=NoticesProvider,t.NOTICE_TYPE_ERROR=t.NOTICE_TYPE_SUCCESS=void 0;var u=a(r(63804)),i=a(r(49288));r(64434);var l=a(r(74846)),s=a(r(47834)),c=u.default,f=c.createContext,d=c.useState,p=c.useCallback,v=c.useContext,m="success";t.NOTICE_TYPE_SUCCESS=m;var h="error";t.NOTICE_TYPE_ERROR=h;var y=f({notices:[]});function NoticesProvider(e){var t=d([]),r=(0,s.default)(t,2),n=r[0],o=r[1],a=p((function(e){o((function(t){return t.filter((function(t){return t.key!==e}))}))}),[]),c=p((function(t){var r=t.message,n=t.undoAction,u=t.type,s=t.dismissible,c=void 0===s||s;if(r){var f=(0,i.default)()+Math.random();o((function(e){return[{key:f,message:r,type:u,undoAction:n,dismissible:c}].concat((0,l.default)(e))})),e.dismissTimeout&&setTimeout((function(){return a(f)}),e.dismissTimeout)}}),[]),f=p((function(e){c({message:e,type:h})}),[c]),v=p((function(e,t){c({message:e,undoAction:t,type:m})}),[c]);return u.default.createElement(y.Provider,{value:{notices:n,notify:c,notifyError:f,notifySuccess:v,dismiss:a}},e.children)}NoticesProvider.propTypes={children:n.any,dismissTimeout:n.number},NoticesProvider.defaultProps={dismissTimeout:4e3}},39848:(e,t,r)=>{"use strict";var n=r(23615),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.useSettingsContext=function useSettingsContext(){return s(c)},t.SettingsProvider=SettingsProvider;var u=a(r(63804)),i=u.default,l=i.createContext,s=i.useContext,c=l({});function SettingsProvider(e){return u.default.createElement(c.Provider,{value:e.value},e.children)}SettingsProvider.propTypes={children:n.any,value:n.object.isRequired}},44951:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.Export=void 0;var a=o(r(11959)),u=o(r(39041)),i=o(r(77371)),l=o(r(68537)),s=function(e){(0,i.default)(Export,e);var t=(0,l.default)(Export);function Export(){return(0,a.default)(this,Export),t.apply(this,arguments)}return(0,u.default)(Export,[{key:"onCatchApply",value:function onCatchApply(){}}],[{key:"getEndpointFormat",value:function getEndpointFormat(){return"form-submissions/export/{id}"}}]),Export}($e.modules.CommandData);t.Export=s},61718:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.Index=void 0;var a=o(r(11959)),u=o(r(39041)),i=o(r(77371)),l=o(r(68537)),s=function(e){(0,i.default)(Index,e);var t=(0,l.default)(Index);function Index(){return(0,a.default)(this,Index),t.apply(this,arguments)}return(0,u.default)(Index,null,[{key:"getEndpointFormat",value:function getEndpointFormat(){return"forms/{id}"}}]),Index}($e.modules.CommandData);t.Index=s},82009:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),n(t,"Restore",{enumerable:!0,get:function get(){return s.Restore}}),n(t,"Export",{enumerable:!0,get:function get(){return c.Export}}),n(t,"Referer",{enumerable:!0,get:function get(){return f.Referer}}),t.Index=void 0;var a=o(r(11959)),u=o(r(39041)),i=o(r(77371)),l=o(r(68537)),s=r(94465),c=r(44951),f=r(17518),d=function(e){(0,i.default)(Index,e);var t=(0,l.default)(Index);function Index(){return(0,a.default)(this,Index),t.apply(this,arguments)}return(0,u.default)(Index,null,[{key:"getEndpointFormat",value:function getEndpointFormat(){return"form-submissions/{id}"}}]),Index}($e.modules.CommandData);t.Index=d},17518:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.Referer=void 0;var a=o(r(11959)),u=o(r(39041)),i=o(r(77371)),l=o(r(68537)),s=function(e){(0,i.default)(Referer,e);var t=(0,l.default)(Referer);function Referer(){return(0,a.default)(this,Referer),t.apply(this,arguments)}return(0,u.default)(Referer,null,[{key:"getEndpointFormat",value:function getEndpointFormat(){return"form-submissions/referer/{id}"}}]),Referer}($e.modules.CommandData);t.Referer=s},94465:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.Restore=void 0;var a=o(r(11959)),u=o(r(39041)),i=o(r(77371)),l=o(r(68537)),s=function(e){(0,i.default)(Restore,e);var t=(0,l.default)(Restore);function Restore(){return(0,a.default)(this,Restore),t.apply(this,arguments)}return(0,u.default)(Restore,null,[{key:"getEndpointFormat",value:function getEndpointFormat(){return"form-submissions/restore/{id}"}}]),Restore}($e.modules.CommandData);t.Restore=s},46042:(e,t,r)=>{"use strict";var n=r(67394),o=r(52369),a=r(67971);n(t,"__esModule",{value:!0}),t.default=void 0;var u=a(r(11959)),i=a(r(39041)),l=a(r(77371)),s=a(r(68537)),c=o(r(82009)),f=function(e){(0,l.default)(Component,e);var t=(0,s.default)(Component);function Component(){return(0,u.default)(this,Component),t.apply(this,arguments)}return(0,i.default)(Component,[{key:"getNamespace",value:function getNamespace(){return"form-submissions"}},{key:"defaultData",value:function defaultData(){return this.importCommands(c)}}]),Component}($e.modules.ComponentBase);t.default=f},43023:(e,t,r)=>{"use strict";var n=r(67394),o=r(52369),a=r(67971);n(t,"__esModule",{value:!0}),t.default=void 0;var u=a(r(11959)),i=a(r(39041)),l=a(r(77371)),s=a(r(68537)),c=a(r(18042)),f=o(r(61718)),d=function(e){(0,l.default)(FormsComponent,e);var t=(0,s.default)(FormsComponent);function FormsComponent(){return(0,u.default)(this,FormsComponent),t.apply(this,arguments)}return(0,i.default)(FormsComponent,[{key:"getNamespace",value:function getNamespace(){return this.constructor.namespace}},{key:"defaultData",value:function defaultData(){return this.importCommands(f)}}]),FormsComponent}($e.modules.ComponentBase);t.default=d,(0,c.default)(d,"namespace","forms")},47937:(e,t,r)=>{"use strict";var n=r(63804),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=function useDataAction(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=c(),n=d(v),o=(0,l.default)(n,2),a=o[0],s=o[1],g=p((function(){return[].concat((0,i.default)(t),[a])}),[t,a]),_=f((function(){r.current&&r.current.abort(),r.current=new AbortController,s(m);for(var t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];return e(n,{abortController:r.current,status:a}).then((function(e){return s(h),e})).catch((function(e){return s(y),u.default.reject(e)}))}),[g]);return[_,{abortController:r.current,status:a}]},t.STATUS_ERROR=t.STATUS_SUCCESS=t.STATUS_LOADING=t.STATUS_IDLE=void 0;var u=a(r(73220)),i=a(r(74846)),l=a(r(47834)),s=n,c=s.useRef,f=s.useCallback,d=s.useState,p=s.useMemo,v="idle";t.STATUS_IDLE=v;var m="loading";t.STATUS_LOADING=m;var h="success";t.STATUS_SUCCESS=h;var y="error";t.STATUS_ERROR=y},99194:(e,t,r)=>{"use strict";var n=r(63804),o=r(67394),a=r(52369),u=r(67971);o(t,"__esModule",{value:!0}),t.useExport=function useExport(e){var t=x((function(){return(0,p.default)((0,p.default)({},S),e)}),[e]),n=(0,h.useNoticesContext)().notifyError,o=b({count:0,success:0}),a=(0,d.default)(o,2),u=a[0],_=a[1],C=x((function(){if(t.checked.length>0)return y;var e=Object.fromEntries((0,i.default)(t.filter).filter((function(e){return(0,d.default)(e,2)[1]})));return 1===(0,l.default)(e).length&&"all"===e.status?"all":g}),[t.checked,t.filter]),P=(0,v.default)((function(e,o){var a=(0,d.default)(e,2),u=a[0],i=a[1],l=o.abortController;if(o.status===v.STATUS_LOADING&&l)return l.abort(),s.default.reject({message:"Aborted"});var h=Math.ceil(i/t.maxRowsPerRequest),y={},g=s.default.resolve();_({count:h,success:0});for(var b=function _loop(e){g=g.then((function(){return $e.data.get("form-submissions/export",(0,p.default)((0,p.default)({},u),{},{per_page:t.maxRowsPerRequest,page:e}),{refresh:!0,signal:l.signal})})).then((function(t){var r=1===e;y=function mergeFormExportData(e,t,r){return e.forEach((function(e){var n;r||delete e.content[0],t=(0,p.default)((0,p.default)({},t),{},(0,f.default)({},e.id,(0,p.default)((0,p.default)({},e),{},{content:((null===(n=t[e.id])||void 0===n?void 0:n.content)||"")+e.content.join("\n")})))})),t}(t.data.data,y,r),_((function(t){return(0,p.default)((0,p.default)({},t),{},{success:e})}))}))},x=1;x<=h;x++)b(x);return g.then((function(){return function downloadExportsResults(e){var t=wp.date.date("Y-m-d"),n=e.map((function(e){return function transformFormResultIntoBlob(e,t){return{filename:w.replace("{FORM_LABEL}",e.form_label).replace("{DATE}",t).concat(".".concat(e.extension)),blob:new Blob(["\ufeff",e.content],{type:e.mimetype})}}(e,t)}));if(1===n.length)return void(0,m.default)(n[0].blob,n[0].filename);r.e(972).then(r.t.bind(r,82858,23)).then((function(e){var t=new(0,e.default);return n.forEach((function(e){var r=e.filename,n=e.blob;return t.file(r,n)})),t.generateAsync({type:"blob"})})).then((function(e){(0,m.default)(e,E.replace("{DATE}",t))}))}((0,c.default)(y))})).catch((function(e){return n(e.message)}))}),[t.maxRowsPerRequest]),T=(0,d.default)(P,2),O=T[0],R=T[1].status;return[O,{mode:C,progress:u,status:R}]},t.EXPORT_MODE_FILTERED=t.EXPORT_MODE_SELECTED=t.EXPORT_MODE_ALL=void 0;var i=u(r(38923)),l=u(r(83452)),s=u(r(73220)),c=u(r(35657));r(64434),r(90286),r(84208);var f=u(r(18042)),d=u(r(47834)),p=u(r(84899)),v=a(r(47937)),m=u(r(6642)),h=r(26062);t.EXPORT_MODE_ALL="all";var y="selected";t.EXPORT_MODE_SELECTED=y;var g="filtered";t.EXPORT_MODE_FILTERED=g;var _=n,b=_.useState,x=_.useMemo,E="elementor-submissions-export-{DATE}",w="elementor-submissions-export-{FORM_LABEL}-{DATE}",S={maxRowsPerRequest:1e4,checked:[],filter:{}}},33497:(e,t,r)=>{"use strict";var n=r(63804),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=function useFormFieldOptions(e){return i((function(){return e.map((function(e){var t=e.split("|"),r=(0,u.default)(t,2),n=r[0],o=r[1];return{label:n,value:void 0===o?n:o}}))}),[e])};var u=a(r(47834));r(90286),r(99236);var i=n.useMemo},58534:(e,t,r)=>{"use strict";var n=r(63804),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=function useMethodsReducer(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,o=n.useReducer((function(t,r){if(!e.hasOwnProperty(r.type))throw Error("The action type ".concat(r.type," is not exists"));return e[r.type](t,r.payload)}),t,r),a=(0,s.default)(o,2),u=a[0],i=a[1];return[u,generateActions(e,i),i]};var u=a(r(83452)),i=a(r(18042)),l=a(r(84899)),s=a(r(47834));function generateActions(e,t){return(0,u.default)(e).reduce((function(e,r){return(0,l.default)((0,l.default)({},e),{},(0,i.default)({},r,(function(e){return t({type:r,payload:e})})))}),{})}},45589:(e,t,r)=>{"use strict";var n=r(63804),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=function useRestDataList(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t=(0,d.default)((0,d.default)({},b),t);var r=[].concat(x,(0,c.default)(t.allowedFilters)),n=y(!1),o=(0,f.default)(n,2),a=o[0],i=o[1],l=y({data:[],meta:{}}),p=(0,f.default)(l,2),h=p[0],_=h.data,w=h.meta,S=p[1],C=useQuery(),P=C.query,T=C.flatQuery,O=C.actions,R=O.setFilter,M=O.setPage,A=O.setOrder,N=O.setInitial,j=(0,v.default)(r),L=(0,f.default)(j,2),D=L[0],I=L[1];E=T;var q=(0,m.default)((function(r,n){var o=n.abortController;return $e.data.options(e,{},{signal:o.signal}).then((function(e){return normalizeFetchOptionsResult(e.data,t.allowedFilters)})).then((function(e){return i(e)}))}),[e]),U=(0,f.default)(q,2),W=U[0],B=U[1].status,G=(0,m.default)((function(r,n){var o=n.abortController;return $e.data.get(e,E,{refresh:!0,signal:o.signal}).then((function(e){return S(e.data)})).then((function(){return t.hooks.afterFetch()}))}),[e,T]),H=(0,f.default)(G,2),$=H[0],V=H[1].status;return g((function(){W()}),[]),g((function(){var e,r,n,o;if(a){var i=t.useRouterQueryString?D:{};N({filter:(0,u.default)(a.filter).reduce((function(e,t){var r,n;return(0,d.default)((0,d.default)({},e),{},(0,s.default)({},t,(null==i?void 0:i[t])||(null==a||null===(r=a.filter)||void 0===r||null===(n=r[t])||void 0===n?void 0:n.default)||null))}),{}),page:i.page||(null===(e=a.page)||void 0===e?void 0:e.default)||1,perPage:i.per_page||(null===(r=a.per_page)||void 0===r?void 0:r.default)||null,order:{by:i.order_by||(null===(n=a.order_by)||void 0===n?void 0:n.default)||null,direction:i.order||(null===(o=a.order)||void 0===o?void 0:o.default)||null}})}}),[a]),g((function(){P.ready&&(t.useRouterQueryString&&I(T),$())}),[T]),{data:_,meta:w,query:P,flatQuery:T,fetchOptions:a,fetchData:$,statuses:{fetchDataStatus:V,fetchOptionsStatus:B},actions:{setFilter:R,setOrder:A,setPage:M}}},r(64434),r(71954),r(3777),r(38081);var u=a(r(83452)),i=a(r(38923)),l=a(r(59396)),s=a(r(18042)),c=a(r(74846)),f=a(r(47834)),d=a(r(84899)),p=a(r(58534)),v=a(r(2722)),m=a(r(47937)),h=n,y=h.useState,g=h.useEffect,_=h.useMemo,b={allowedFilters:[],useRouterQueryString:!1,hooks:{afterFetch:function afterFetch(){}}},x=["order","order_by","page","per_page"],E={};function useQuery(){var e=(0,p.default)({setFilter:function setFilter(e,t){return(0,d.default)((0,d.default)({},e),{},{page:1,filter:(0,d.default)((0,d.default)({},e.filter),t)})},setPage:function setPage(e,t){return(0,d.default)((0,d.default)({},e),{},{page:t})},setPerPage:function setPerPage(e,t){return(0,d.default)((0,d.default)({},e),{},{page:1,perPage:t})},setOrder:function setOrder(e,t){return(0,d.default)((0,d.default)({},e),{},{order:t})},setInitial:function setInitial(e,t){return(0,d.default)((0,d.default)((0,d.default)({},e),t),{},{ready:!0})}},{ready:!1,filter:{},page:1,perPage:null,order:{by:"id",direction:"desc"}}),t=(0,f.default)(e,2),r=t[0],n=t[1],o=_((function(){return Object.fromEntries((0,i.default)((0,d.default)((0,d.default)({},r.filter),{},{page:r.page,per_page:r.perPage,order:r.order.direction,order_by:r.order.by})).filter((function(e){var t=(0,f.default)(e,2)[1];return(!(0,l.default)(t)||0!==t.length)&&!!t})))}),[r]);return{query:r,flatQuery:o,actions:n}}function normalizeFetchOptionsResult(e,t){var r=e.endpoints.find((function(e){return e.methods.includes("GET")}));return r?(0,i.default)(r.args).reduce((function(e,r){var n,o=(0,f.default)(r,2),a=o[0],u=o[1];return x.includes(a)?(0,d.default)((0,d.default)({},e),{},(0,s.default)({},a,u)):"filter"===(null===(n=u.additionalProperties)||void 0===n?void 0:n.context)&&t.includes(a)?(0,d.default)((0,d.default)({},e),{},{filter:(0,d.default)((0,d.default)({},e.filter),{},(0,s.default)({},a,u))}):(0,d.default)({},e)}),{filter:{}}):{}}},2722:(e,t,r)=>{"use strict";var n=r(63804),o=r(67394),a=r(67971);o(t,"__esModule",{value:!0}),t.default=function useRouterQueryString(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=(0,s.useLocation)(),r=d(!1),n=(0,l.default)(r,2),o=n[0],a=n[1],c=d(!1),p=(0,l.default)(c,2),v=p[0],m=p[1];return f((function(){if(null!=t&&t.pathname&&!o){var r=e.reduce((function(e,r){var n=wp.url.getQueryArg(t.pathname,r);return void 0===n?e:(0,i.default)((0,i.default)({},e),{},(0,u.default)({},r,n))}),{});m(r),a(!0)}}),[t]),f((function(){if(v){var e=t.pathname.split("?")[0]||"/";history.pushState(void 0,void 0,"#".concat(wp.url.addQueryArgs(e,v)))}}),[v]),[v,m]},r(99236);var u=a(r(18042)),i=a(r(84899)),l=a(r(47834)),s=r(50927),c=n,f=c.useEffect,d=c.useState},34578:(e,t,r)=>{"use strict";var n=r(63804);r(67394)(t,"__esModule",{value:!0}),t.default=function useWatch(e,t){var r=u(!0);a((function(){r.current?r.current=!1:e()}),t)};var o=n,a=o.useEffect,u=o.useRef},63873:(e,t,r)=>{"use strict";var n=r(18194).__;r(67394)(t,"__esModule",{value:!0}),t.default=void 0;var o=r(18194),a=function generalError(){return n("Something went wrong, please try again later.","elementor-pro")},u={trashed:{success:function success(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return(0,o.sprintf)((0,o._n)("%d submission moved to Trash.","%d submissions moved to Trash.",e,"elementor-pro"),e)},error:a},deleted:{success:function success(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return(0,o.sprintf)((0,o._n)("%d submission permanently deleted.","%d submissions permanently deleted.",e,"elementor-pro"),e)},error:a},updated:{success:function success(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return(0,o.sprintf)((0,o._n)("Submission has been successfully updated.","%d submissions have been successfully updated.",e,"elementor-pro"),e)},error:a},restored:{success:function success(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return(0,o.sprintf)((0,o._n)("%d submission restored from Trash.","%d submissions restored from Trash.",e,"elementor-pro"),e)},error:a},markedAsRead:{success:function success(){return null},error:a},markedAsUnread:{success:function success(){return null},error:a},actionLogs:{success:function success(){return n("Action completed successfully.","elementor-pro")},failed:function failed(){return n("Action failed to run, please check your integration.","elementor-pro")}}};t.default=u},35744:(e,t,r)=>{"use strict";var n=r(18194).__,o=r(67394),a=r(52369),u=r(67971);o(t,"__esModule",{value:!0}),t.default=function Index(){var e,t,r,o,a,u=(0,M.useNoticesContext)(),N=u.notifyError,G=u.notifySuccess,H=(0,A.useSettingsContext)().isTrashEnabled,$=L([]),V=(0,p.default)($,2),Q=V[0],X=V[1],z=(0,P.default)("form-submissions/index",{allowedFilters:[D,I,q,U,W,B],useRouterQueryString:!0,hooks:{afterFetch:function afterFetch(){return X([])}}}),K=z.data,Y=z.meta,J=z.fetchOptions,Z=z.fetchData,ee=z.flatQuery,te=z.query,re=te.order,ne=te.filter,oe=z.statuses,ae=oe.fetchOptionsStatus,ue=oe.fetchDataStatus,ie=z.actions,le=ie.setFilter,se=ie.setOrder,ce=ie.setPage,fe=j((function(){return"trash"===ne.status}),[ne.status]),de=(0,R.useExport)({checked:Q,filter:ne}),pe=(0,p.default)(de,2),ve=pe[0],me=pe[1],he=(0,C.default)((function(e,t){var r=(0,p.default)(e,2),n=r[0],o=r[1],a=t.abortController;if(!validateRestAction(n))return l.default.reject();var u=_.default[o?"markedAsRead":"markedAsUnread"];return $e.data.update("form-submissions/index",{is_read:o},n,{signal:a.signal}).then((function(e){var t;return G(u.success((null===(t=e.data.meta)||void 0===t?void 0:t.affected)||1))})).then(Z).catch((function(){return N(u.error())}))})),ye=(0,p.default)(he,1)[0],ge=(0,C.default)((function(e,t){var r=(0,p.default)(e,1)[0],n=t.abortController;return validateRestAction(r)?$e.data.update("form-submissions/restore",{},r,{signal:n.signal}).then((function(e){var t;return G(_.default.restored.success((null===(t=e.data.meta)||void 0===t?void 0:t.affected)||1))})).then(Z).catch((function(){return N(_.default.restored.error())})):l.default.reject()})),_e=(0,p.default)(ge,1)[0],be=(0,C.default)((function(e,t){var r=(0,p.default)(e,1)[0],n=t.abortController;if(!validateRestAction(r))return l.default.reject();var o=_.default[r.force?"deleted":"trashed"];return $e.data.delete("form-submissions/index",r,{signal:n.signal}).then((function(e){var t;return G(o.success((null===(t=e.data.meta)||void 0===t?void 0:t.affected)||1),r.force?null:function(){return _e(r)})})).then(Z).catch((function(){return N(o.error())}))})),xe=(0,p.default)(be,1)[0],Ee=j((function(){return[{key:"view",label:n("View","elementor-pro"),shouldShow:function shouldShow(e){return"trash"!==e.status},props:function props(e){return{to:"/".concat(e.id),onClick:void 0}},component:y.default},{key:"restore",label:n("Restore","elementor-pro"),onApply:function onApply(e){return _e({id:e.id})},shouldShow:function shouldShow(e){return"trash"===e.status}},{key:"trash",label:n("Trash","elementor-pro"),onApply:function onApply(e){return xe({id:e.id})},shouldShow:function shouldShow(e){return"trash"!==e.status&&H},className:"trash"},{key:"delete",label:n("Delete Permanently","elementor-pro"),onApply:function onApply(e){return xe({id:e.id,force:1})},shouldShow:function shouldShow(e){return"trash"===e.status||!H},className:"trash"},{key:"read",label:n("Mark as Read","elementor-pro"),onApply:function onApply(e){return ye({id:e.id},!0)},shouldShow:function shouldShow(e){return"trash"!==e.status&&!e.is_read}},{key:"unread",label:n("Mark as Unread","elementor-pro"),onApply:function onApply(e){return ye({id:e.id},!1)},shouldShow:function shouldShow(e){return"trash"!==e.status&&e.is_read}}]}),[]),we=j((function(){return[{label:n("Mark as Read","elementor-pro"),value:"read",onApply:function onApply(){return ye({ids:Q},!0)},shouldShow:function shouldShow(){return!fe}},{label:n("Mark as Unread","elementor-pro"),value:"unread",onApply:function onApply(){return ye({ids:Q},!1)},shouldShow:function shouldShow(){return!fe}},{label:n("Move to Trash","elementor-pro"),value:"trash",onApply:function onApply(){return xe({ids:Q})},shouldShow:function shouldShow(){return!fe&&H}},{label:n("Delete Permanently","elementor-pro"),value:"delete",onApply:function onApply(){return xe({ids:Q,force:1})},shouldShow:function shouldShow(){return fe||!H}},{label:n("Restore","elementor-pro"),value:"restore",onApply:function onApply(){return _e({ids:Q})},shouldShow:function shouldShow(){return fe}}].filter((function(e){return e.shouldShow()}))}),[Q,fe]),Se=j((function(){return{main_meta_id:{label:n("Main","elementor-pro"),className:"column-primary"},actions_log_status:{label:n("Actions Status","elementor-pro"),className:"column-actions"},form:{label:n("Form","elementor-pro"),className:"column-form"},page:{label:n("Page","elementor-pro"),className:"column-page"},id:{label:n("ID","elementor-pro"),className:"column-id"},created_at:{label:n("Submission Date","elementor-pro"),className:"column-date"}}}),[]),Ce=i.default.createElement(T.default.Row,null,i.default.createElement(T.default.Cell,{className:"manage-column bulk-checkbox-column"},i.default.createElement(v.default.Bulk,{checkedGroup:Q,onChange:X,allValues:K.map((function(e){return e.id}))})),(0,s.default)(Se).map((function(e){var t,r=(0,p.default)(e,2),n=r[0],o=r[1],a={component:"th",className:"manage-column ".concat(o.className||"")};return null!==(t=J.order_by)&&void 0!==t&&t.enum.includes(n)?i.default.createElement(T.default.OrderableCell,(0,d.default)({},a,{key:n,order:{key:n,current:re,onChange:function onChange(e){return se(e)}}}),o.label):i.default.createElement(T.default.Cell,(0,d.default)({key:n},a),o.label)}))),Pe=i.default.createElement("div",{className:"alignright"},i.default.createElement(h.default,{onClick:function onClick(){var e;ve(R.EXPORT_MODE_SELECTED===me.mode?{ids:Q}:(0,f.default)({},ee),Q.length||(null===(e=Y.pagination)||void 0===e?void 0:e.total))},isLoading:C.STATUS_LOADING===me.status,progress:me.progress,mode:me.mode,disabled:!(null!==(e=Y.pagination)&&void 0!==e&&e.total)&&C.STATUS_LOADING!==me.status})),ke=Y.pagination&&i.default.createElement(b.default,{total:Y.pagination.total,currentPage:Y.pagination.current_page,lastPage:Y.pagination.last_page,perPage:Y.pagination.per_page,onChange:function onChange(e){return ce(e)}});if(C.STATUS_SUCCESS!==ae)return n("Loading...","elementor-pro");return i.default.createElement(i.default.Fragment,null,i.default.createElement("div",null,(null===(t=J.filter)||void 0===t?void 0:t.search)&&i.default.createElement(w.default,{key:D,value:ne.search,onChange:function onChange(e){return le((0,c.default)({},D,e))},isSearching:!!ne.search&&ue===C.STATUS_LOADING}),(null===(r=J.filter)||void 0===r?void 0:r.status)&&i.default.createElement(g.default,{options:J.filter.status.enum.map((function(e){var t,r;return{value:e,label:J.filter.status.additionalProperties.options.labels[e],count:null===(t=Y.count)||void 0===t?void 0:t[e],shouldShow:"all"===e||(null===(r=Y.count)||void 0===r?void 0:r[e])>0}})),value:ne.status,onChange:function onChange(e){return le((0,c.default)({},I,e))}}),i.default.createElement("div",{className:"clear"}),i.default.createElement("div",{className:"tablenav top"},i.default.createElement(O.BulkActionSelect,{actions:we,className:"alignleft"}),i.default.createElement("div",{className:"alignleft actions"},(null===(o=J.filter)||void 0===o?void 0:o.referer)&&i.default.createElement(x.default,{value:ne.referer||"",onChange:function onChange(e){return le((0,c.default)({},U,e))}}),(null===(a=J.filter)||void 0===a?void 0:a.form)&&i.default.createElement(E.default,{value:ne.form||"",onChange:function onChange(e){return le((0,c.default)({},q,e))},options:[{value:"",label:n("All Forms","elementor-pro")}],resourceOptions:J.filter.form.additionalProperties.options,name:q,label:n("Filter by form","elementor-pro")}),i.default.createElement(m.default,{value:{after:ne.after,before:ne.before},onChange:function onChange(e){var t=e.after,r=e.before;le((0,f.default)((0,f.default)({},void 0!==t?(0,c.default)({},W,t):{}),void 0!==r?(0,c.default)({},B,r):{}))},label:n("Filter by date","elementor-pro"),name:"date"})),Pe,ke),i.default.createElement(T.default,{className:"e-form-submissions-list-table striped table-view-list"},Ce&&i.default.createElement(T.default.Header,null,Ce),i.default.createElement(T.default.Body,null,0===K.length&&i.default.createElement(T.default.Row,{className:"no-items"},i.default.createElement(T.default.Cell,{className:"colspanchange",colSpan:7},n("No submissions found.","elementor-pro"))),K.map((function(e){var t=Ee.filter((function(t){return t.shouldShow(e)}));return i.default.createElement(S.default,{key:e.id,item:e,tableTitles:Se,checkBoxComponent:i.default.createElement(v.default,{checkedGroup:Q,onChange:X,value:e.id}),rowActionComponent:i.default.createElement(T.default.RowActions,{actions:t,item:e})})}))),Ce&&i.default.createElement(T.default.Footer,null,Ce)),i.default.createElement("div",{className:"tablenav bottom"},i.default.createElement(O.BulkActionSelect,{actions:we,className:"alignleft"}),Pe,ke)))};var i=u(r(63804)),l=u(r(73220)),s=u(r(38923));r(64434),r(90286),r(3777),r(38081),r(42679);var c=u(r(18042)),f=u(r(84899)),d=u(r(37959)),p=u(r(47834)),v=u(r(13682)),m=u(r(48059)),h=u(r(63906)),y=u(r(57403)),g=u(r(28825)),_=u(r(63873)),b=u(r(31459)),x=u(r(57767)),E=u(r(95544)),w=u(r(95240)),S=u(r(20005)),C=a(r(47937)),P=u(r(45589)),T=u(r(18939)),O=r(29017),R=r(99194),M=r(26062),A=r(39848),N=i.default,j=N.useMemo,L=N.useState,D="search",I="status",q="form",U="referer",W="after",B="before";function validateRestAction(e){return e.id||e.ids&&e.ids.length>0}},13746:(e,t,r)=>{"use strict";var n=r(18194).__,o=r(23615),a=r(67394),u=r(52369),i=r(67971);a(t,"__esModule",{value:!0}),t.default=Item;var l=i(r(63804));r(90286),r(76139),r(12897),r(93085),r(99745);var s=i(r(83452)),c=i(r(18042)),f=i(r(84899)),d=i(r(47834)),p=i(r(18939)),v=r(50927),m=r(26062),h=i(r(38044)),y=i(r(50361)),g=i(r(63873)),_=u(r(47937)),b=r(55301),x=i(r(9036)),E=r(39848),w=l.default,S=w.useEffect,C=w.useState,P=w.useMemo;function Item(e){var t,r=C({data:{},meta:{}}),o=(0,d.default)(r,2),a=o[0].data,u=o[1],i=C(null),w=(0,d.default)(i,2),T=w[0],O=w[1],R=C(!1),M=(0,d.default)(R,2),A=M[0],N=M[1],j=C({}),L=(0,d.default)(j,2),D=L[0],I=L[1],q=(0,v.useNavigate)(),U=(0,m.useNoticesContext)(),W=U.notifySuccess,B=U.notifyError,G=(0,E.useSettingsContext)().isTrashEnabled,H=P((function(){var e;return null===(e=a.form)||void 0===e?void 0:e.fields.reduce((function(e,t){return(0,f.default)((0,f.default)({},e),{},(0,c.default)({},t.id,t))}),{})}),[null===(t=a.form)||void 0===t?void 0:t.fields]);S((function(){$e.data.get("form-submissions/index",{id:e.id},{refresh:!0}).then((function(e){return u(e.data),e.data})).then((function(t){t.data.is_read||$e.data.update("form-submissions/index",{is_read:!0},{id:e.id})})).catch((function(e){return O(e)}))}),[]);var $=(0,_.default)((function(t,r){var n=(0,d.default)(t,1)[0],o=void 0===n?{}:n,a=r.abortController,u=g.default[o.force?"deleted":"trashed"];return $e.data.delete("form-submissions/index",(0,f.default)({id:e.id},o),{signal:a.signal}).then((function(){return W(u.success(1))})).then((function(){return q("/")})).catch((function(){return B(u.error())}))}),[e.id]),V=(0,d.default)($,1)[0],Q=(0,_.default)((function(t){var r=(0,d.default)(t,1)[0];return $e.data.update("form-submissions/index",{values:r},{id:e.id}).then((function(e){return u(e.data)})).then((function(){N(!1),I({})})).then((function(){return W(g.default.updated.success(1))})).catch((function(){return B(g.default.updated.error())}))}),[e.id]),X=(0,d.default)(Q,2),z=X[0],K=X[1].status;return(0,s.default)(a).length?l.default.createElement("div",{id:"poststuff"},l.default.createElement("form",{id:"post-body",className:"metabox-holder columns-2",onSubmit:function onSubmit(e){e.preventDefault(),A&&K!==_.STATUS_LOADING&&z(D)}},l.default.createElement("div",{id:"post-body-content"},l.default.createElement("div",{className:"e-form-submissions-main"},l.default.createElement(h.default,{header:l.default.createElement("div",{className:"e-form-submissions-main__header"},l.default.createElement("h2",null,n("Submission","elementor-pro")," #",a.id),l.default.createElement("button",{onClick:function onClick(e){e.preventDefault(),K!==_.STATUS_LOADING&&N((function(e){return!e}))},className:"button button-secondary",type:"button",disabled:K===_.STATUS_LOADING},n(A?"Cancel":"Edit","elementor-pro")))},l.default.createElement(p.default,{className:"e-form-submissions-item-table"},l.default.createElement(p.default.Body,null,a.values.map((function(e){var t;return l.default.createElement(p.default.Row,{key:e.id},l.default.createElement(p.default.Cell,null,(null==H||null===(t=H[e.key])||void 0===t?void 0:t.label)||e.key),l.default.createElement(p.default.Cell,null,l.default.createElement(x.default,{value:e.value,field:(null==H?void 0:H[e.key])||{id:e.key,type:"text"},isEditMode:A,onChange:function onChange(e,t){return I((function(r){return(0,f.default)((0,f.default)({},r),{},(0,c.default)({},e,t))}))}})))})))))),a.form_actions_log&&l.default.createElement(y.default,{actions:a.form_actions_log})),l.default.createElement("div",{className:"postbox-container",id:"postbox-container-1"},l.default.createElement(h.default,{header:l.default.createElement("h2",null,n("Additional Info","elementor-pro")," ")},l.default.createElement("div",{className:"submitbox"},l.default.createElement("div",{id:"misc-publishing-actions"},a.post&&l.default.createElement("div",{className:"misc-pub-section"},n("Form:","elementor-pro")," ",l.default.createElement("a",{href:a.post.edit_url,target:"_blank",rel:"noreferrer"},a.form.name," (#",a.form.element_id,")")),l.default.createElement("div",{className:"misc-pub-section"},n("Page:","elementor-pro")," ",l.default.createElement("a",{href:a.referer,target:"_blank",rel:"noreferrer"},a.referer_title||l.default.createElement("i",{className:"eicon-editor-external-link e-form-submissions-referer-icon"}))),l.default.createElement("div",{className:"misc-pub-section"},n("Create Date:","elementor-pro")," ",l.default.createElement("strong",null,(0,b.formatToLocalDateTime)(a.created_at))),l.default.createElement("div",{className:"misc-pub-section"},n("Update Date:","elementor-pro")," ",l.default.createElement("strong",null,(0,b.formatToLocalDateTime)(a.updated_at))),a.user_name&&l.default.createElement("div",{className:"misc-pub-section"},n("User Name:","elementor-pro")," ",l.default.createElement("strong",null,a.user_name)),l.default.createElement("div",{className:"misc-pub-section"},n("User IP:","elementor-pro")," ",l.default.createElement("strong",null,a.user_ip)),l.default.createElement("div",{className:"misc-pub-section"},n("User Agent:","elementor-pro")," ",l.default.createElement("strong",null,a.user_agent))),l.default.createElement("div",{id:"major-publishing-actions"},l.default.createElement("div",{id:"delete-action"},l.default.createElement("a",{className:"submitdelete deletion",href:"#",onClick:function onClick(e){e.preventDefault(),V({force:G?0:1})}},n(G?"Move to Trash":"Delete Permanently","elementor-pro"))),l.default.createElement("div",{id:"publishing-action"},l.default.createElement("button",{type:"submit",name:"save",id:"publish",className:"button button-primary button-large",disabled:!A||K===_.STATUS_LOADING},n("Update","elementor-pro"))),l.default.createElement("div",{className:"clear"})))))),l.default.createElement("br",{className:"clear"})):T?l.default.createElement("p",null," ",T.message||n("Not Found","elementor-pro")," "):n("Loading...","elementor-pro")}Item.propTypes={id:o.string}},55301:(e,t,r)=>{"use strict";r(67394)(t,"__esModule",{value:!0}),t.formatToLocalDate=formatToLocalDate,t.formatToLocalTime=formatToLocalTime,t.formatToLocalDateTime=function formatToLocalDateTime(e){return"".concat(formatToLocalDate(e)," ").concat(formatToLocalTime(e))};var n=moment.localeData();function formatToLocalDate(e){return wp.date.format(n.longDateFormat("LL"),e)}function formatToLocalTime(e){return wp.date.format(n.longDateFormat("LT"),e)}},6642:(e,t,r)=>{"use strict";r(67394)(t,"__esModule",{value:!0}),t.default=function downloadBlob(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=document.createElement("a");r.setAttribute("href",URL.createObjectURL(e)),r.style.visibility="hidden",t&&r.setAttribute("download",t);document.body.appendChild(r),r.click(),document.body.removeChild(r)}},7421:(e,t,r)=>{r(99572),r(37627),e.exports=r(47208).Array.from},70157:(e,t,r)=>{r(42580),e.exports=r(47208).Array.isArray},55966:(e,t,r)=>{r(31477),e.exports=r(47208).Date.now},66458:(e,t,r)=>{r(99954),e.exports=r(47208).Object.assign},14710:(e,t,r)=>{r(30785);var n=r(47208).Object;e.exports=function create(e,t){return n.create(e,t)}},23022:(e,t,r)=>{r(23078);var n=r(47208).Object;e.exports=function defineProperties(e,t){return n.defineProperties(e,t)}},43153:(e,t,r)=>{r(40168);var n=r(47208).Object;e.exports=function defineProperty(e,t,r){return n.defineProperty(e,t,r)}},8531:(e,t,r)=>{r(95260),e.exports=r(47208).Object.entries},32622:(e,t,r)=>{r(18576);var n=r(47208).Object;e.exports=function getOwnPropertyDescriptor(e,t){return n.getOwnPropertyDescriptor(e,t)}},27410:(e,t,r)=>{r(67685),e.exports=r(47208).Object.getOwnPropertyDescriptors},19035:(e,t,r)=>{r(54370),e.exports=r(47208).Object.getOwnPropertySymbols},58535:(e,t,r)=>{r(4840),e.exports=r(47208).Object.getPrototypeOf},97220:(e,t,r)=>{r(5453),e.exports=r(47208).Object.keys},65135:(e,t,r)=>{r(13890),e.exports=r(47208).Object.setPrototypeOf},69591:(e,t,r)=>{r(57188),e.exports=r(47208).Object.values},76483:(e,t,r)=>{r(70285),r(99572),r(74114),r(86082),r(81522),r(25757),e.exports=r(47208).Promise},43094:(e,t,r)=>{r(11320),e.exports=r(47208).Reflect.construct},19103:(e,t,r)=>{r(54370),r(70285),r(87573),r(97224),e.exports=r(47208).Symbol},39871:(e,t,r)=>{r(99572),r(74114),e.exports=r(7273).f("iterator")},89999:(e,t,r)=>{r(70285),r(74114),r(23337),r(10143),r(92797),e.exports=r(47208).WeakMap},26610:e=>{e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},29697:e=>{e.exports=function(){}},54677:e=>{e.exports=function(e,t,r,n){if(!(e instanceof t)||void 0!==n&&n in e)throw TypeError(r+": incorrect invocation!");return e}},30498:(e,t,r)=>{var n=r(39632);e.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},69191:(e,t,r)=>{var n=r(1504),o=r(37154),a=r(46723);e.exports=function(e){return function(t,r,u){var i,l=n(t),s=o(l.length),c=a(u,s);if(e&&r!=r){for(;s>c;)if((i=l[c++])!=i)return!0}else for(;s>c;c++)if((e||c in l)&&l[c]===r)return e||c||0;return!e&&-1}}},97647:(e,t,r)=>{var n=r(61725),o=r(13115),a=r(60061),u=r(37154),i=r(41904);e.exports=function(e,t){var r=1==e,l=2==e,s=3==e,c=4==e,f=6==e,d=5==e||f,p=t||i;return function(t,i,v){for(var m,h,y=a(t),g=o(y),_=n(i,v,3),b=u(g.length),x=0,E=r?p(t,b):l?p(t,0):void 0;b>x;x++)if((d||x in g)&&(h=_(m=g[x],x,y),e))if(r)E[x]=h;else if(h)switch(e){case 3:return!0;case 5:return m;case 6:return x;case 2:E.push(m)}else if(c)return!1;return f?-1:s||c?c:E}}},88320:(e,t,r)=>{var n=r(39632),o=r(7359),a=r(24300)("species");e.exports=function(e){var t;return o(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!o(t.prototype)||(t=void 0),n(t)&&null===(t=t[a])&&(t=void 0)),void 0===t?Array:t}},41904:(e,t,r)=>{var n=r(88320);e.exports=function(e,t){return new(n(e))(t)}},45515:(e,t,r)=>{"use strict";var n=r(26610),o=r(39632),a=r(19897),u=[].slice,i={},construct=function(e,t,r){if(!(t in i)){for(var n=[],o=0;o<t;o++)n[o]="a["+o+"]";i[t]=Function("F,a","return new F("+n.join(",")+")")}return i[t](e,r)};e.exports=Function.bind||function bind(e){var t=n(this),r=u.call(arguments,1),bound=function(){var n=r.concat(u.call(arguments));return this instanceof bound?construct(t,n.length,n):a(t,n,e)};return o(t.prototype)&&(bound.prototype=t.prototype),bound}},8312:(e,t,r)=>{var n=r(41352),o=r(24300)("toStringTag"),a="Arguments"==n(function(){return arguments}());e.exports=function(e){var t,r,u;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?r:a?n(t):"Object"==(u=n(t))&&"function"==typeof t.callee?"Arguments":u}},41352:e=>{var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},92600:(e,t,r)=>{"use strict";var n=r(13199),o=r(6758).getWeak,a=r(30498),u=r(39632),i=r(54677),l=r(25985),s=r(97647),c=r(20657),f=r(41081),d=s(5),p=s(6),v=0,uncaughtFrozenStore=function(e){return e._l||(e._l=new UncaughtFrozenStore)},UncaughtFrozenStore=function(){this.a=[]},findUncaughtFrozen=function(e,t){return d(e.a,(function(e){return e[0]===t}))};UncaughtFrozenStore.prototype={get:function(e){var t=findUncaughtFrozen(this,e);if(t)return t[1]},has:function(e){return!!findUncaughtFrozen(this,e)},set:function(e,t){var r=findUncaughtFrozen(this,e);r?r[1]=t:this.a.push([e,t])},delete:function(e){var t=p(this.a,(function(t){return t[0]===e}));return~t&&this.a.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,r,a){var s=e((function(e,n){i(e,s,t,"_i"),e._t=t,e._i=v++,e._l=void 0,null!=n&&l(n,r,e[a],e)}));return n(s.prototype,{delete:function(e){if(!u(e))return!1;var r=o(e);return!0===r?uncaughtFrozenStore(f(this,t)).delete(e):r&&c(r,this._i)&&delete r[this._i]},has:function has(e){if(!u(e))return!1;var r=o(e);return!0===r?uncaughtFrozenStore(f(this,t)).has(e):r&&c(r,this._i)}}),s},def:function(e,t,r){var n=o(a(t),!0);return!0===n?uncaughtFrozenStore(e).set(t,r):n[e._i]=r,e},ufstore:uncaughtFrozenStore}},70770:(e,t,r)=>{"use strict";var n=r(43280),o=r(98310),a=r(6758),u=r(90472),i=r(62292),l=r(13199),s=r(25985),c=r(54677),f=r(39632),d=r(2413),p=r(60510).f,v=r(97647)(0),m=r(75179);e.exports=function(e,t,r,h,y,g){var _=n[e],b=_,x=y?"set":"add",E=b&&b.prototype,w={};return m&&"function"==typeof b&&(g||E.forEach&&!u((function(){(new b).entries().next()})))?(b=t((function(t,r){c(t,b,e,"_c"),t._c=new _,null!=r&&s(r,y,t[x],t)})),v("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),(function(e){var t="add"==e||"set"==e;!(e in E)||g&&"clear"==e||i(b.prototype,e,(function(r,n){if(c(this,b,e),!t&&g&&!f(r))return"get"==e&&void 0;var o=this._c[e](0===r?0:r,n);return t?this:o}))})),g||p(b.prototype,"size",{get:function(){return this._c.size}})):(b=h.getConstructor(t,e,y,x),l(b.prototype,r),a.NEED=!0),d(b,e),w[e]=b,o(o.G+o.W+o.F,w),g||h.setStrong(b,e,y),b}},47208:e=>{var t=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=t)},87352:(e,t,r)=>{"use strict";var n=r(60510),o=r(48439);e.exports=function(e,t,r){t in e?n.f(e,t,o(0,r)):e[t]=r}},61725:(e,t,r)=>{var n=r(26610);e.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,o){return e.call(t,r,n,o)}}return function(){return e.apply(t,arguments)}}},18239:e=>{e.exports=function(e){if(null==e)throw TypeError("Can't call method on  "+e);return e}},75179:(e,t,r)=>{e.exports=!r(90472)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},48765:(e,t,r)=>{var n=r(39632),o=r(43280).document,a=n(o)&&n(o.createElement);e.exports=function(e){return a?o.createElement(e):{}}},31986:e=>{e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},42266:(e,t,r)=>{var n=r(86425),o=r(97739),a=r(67410);e.exports=function(e){var t=n(e),r=o.f;if(r)for(var u,i=r(e),l=a.f,s=0;i.length>s;)l.call(e,u=i[s++])&&t.push(u);return t}},98310:(e,t,r)=>{var n=r(43280),o=r(47208),a=r(61725),u=r(62292),i=r(20657),$export=function(e,t,r){var l,s,c,f=e&$export.F,d=e&$export.G,p=e&$export.S,v=e&$export.P,m=e&$export.B,h=e&$export.W,y=d?o:o[t]||(o[t]={}),g=y.prototype,_=d?n:p?n[t]:(n[t]||{}).prototype;for(l in d&&(r=t),r)(s=!f&&_&&void 0!==_[l])&&i(y,l)||(c=s?_[l]:r[l],y[l]=d&&"function"!=typeof _[l]?r[l]:m&&s?a(c,n):h&&_[l]==c?function(e){var F=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return F.prototype=e.prototype,F}(c):v&&"function"==typeof c?a(Function.call,c):c,v&&((y.virtual||(y.virtual={}))[l]=c,e&$export.R&&g&&!g[l]&&u(g,l,c)))};$export.F=1,$export.G=2,$export.S=4,$export.P=8,$export.B=16,$export.W=32,$export.U=64,$export.R=128,e.exports=$export},90472:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},25985:(e,t,r)=>{var n=r(61725),o=r(93086),a=r(11827),u=r(30498),i=r(37154),l=r(26116),s={},c={},f=e.exports=function(e,t,r,f,d){var p,v,m,h,y=d?function(){return e}:l(e),g=n(r,f,t?2:1),_=0;if("function"!=typeof y)throw TypeError(e+" is not iterable!");if(a(y)){for(p=i(e.length);p>_;_++)if((h=t?g(u(v=e[_])[0],v[1]):g(e[_]))===s||h===c)return h}else for(m=y.call(e);!(v=m.next()).done;)if((h=o(m,g,v.value,t))===s||h===c)return h};f.BREAK=s,f.RETURN=c},43280:e=>{var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},20657:e=>{var t={}.hasOwnProperty;e.exports=function(e,r){return t.call(e,r)}},62292:(e,t,r)=>{var n=r(60510),o=r(48439);e.exports=r(75179)?function(e,t,r){return n.f(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},92477:(e,t,r)=>{var n=r(43280).document;e.exports=n&&n.documentElement},64457:(e,t,r)=>{e.exports=!r(75179)&&!r(90472)((function(){return 7!=Object.defineProperty(r(48765)("div"),"a",{get:function(){return 7}}).a}))},19897:e=>{e.exports=function(e,t,r){var n=void 0===r;switch(t.length){case 0:return n?e():e.call(r);case 1:return n?e(t[0]):e.call(r,t[0]);case 2:return n?e(t[0],t[1]):e.call(r,t[0],t[1]);case 3:return n?e(t[0],t[1],t[2]):e.call(r,t[0],t[1],t[2]);case 4:return n?e(t[0],t[1],t[2],t[3]):e.call(r,t[0],t[1],t[2],t[3])}return e.apply(r,t)}},13115:(e,t,r)=>{var n=r(41352);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},11827:(e,t,r)=>{var n=r(79105),o=r(24300)("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(n.Array===e||a[o]===e)}},7359:(e,t,r)=>{var n=r(41352);e.exports=Array.isArray||function isArray(e){return"Array"==n(e)}},39632:e=>{e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},93086:(e,t,r)=>{var n=r(30498);e.exports=function(e,t,r,o){try{return o?t(n(r)[0],r[1]):t(r)}catch(t){var a=e.return;throw void 0!==a&&n(a.call(e)),t}}},19802:(e,t,r)=>{"use strict";var n=r(82488),o=r(48439),a=r(2413),u={};r(62292)(u,r(24300)("iterator"),(function(){return this})),e.exports=function(e,t,r){e.prototype=n(u,{next:o(1,r)}),a(e,t+" Iterator")}},6125:(e,t,r)=>{"use strict";var n=r(36794),o=r(98310),a=r(19312),u=r(62292),i=r(79105),l=r(19802),s=r(2413),c=r(999),f=r(24300)("iterator"),d=!([].keys&&"next"in[].keys()),p="keys",v="values",returnThis=function(){return this};e.exports=function(e,t,r,m,h,y,g){l(r,t,m);var _,b,x,getMethod=function(e){if(!d&&e in C)return C[e];switch(e){case p:return function keys(){return new r(this,e)};case v:return function values(){return new r(this,e)}}return function entries(){return new r(this,e)}},E=t+" Iterator",w=h==v,S=!1,C=e.prototype,P=C[f]||C["@@iterator"]||h&&C[h],T=P||getMethod(h),O=h?w?getMethod("entries"):T:void 0,R="Array"==t&&C.entries||P;if(R&&(x=c(R.call(new e)))!==Object.prototype&&x.next&&(s(x,E,!0),n||"function"==typeof x[f]||u(x,f,returnThis)),w&&P&&P.name!==v&&(S=!0,T=function values(){return P.call(this)}),n&&!g||!d&&!S&&C[f]||u(C,f,T),i[t]=T,i[E]=returnThis,h)if(_={values:w?T:getMethod(v),keys:y?T:getMethod(p),entries:O},g)for(b in _)b in C||a(C,b,_[b]);else o(o.P+o.F*(d||S),t,_);return _}},26797:(e,t,r)=>{var n=r(24300)("iterator"),o=!1;try{var a=[7][n]();a.return=function(){o=!0},Array.from(a,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var r=!1;try{var a=[7],u=a[n]();u.next=function(){return{done:r=!0}},a[n]=function(){return u},e(a)}catch(e){}return r}},9329:e=>{e.exports=function(e,t){return{value:t,done:!!e}}},79105:e=>{e.exports={}},36794:e=>{e.exports=!0},6758:(e,t,r)=>{var n=r(54251)("meta"),o=r(39632),a=r(20657),u=r(60510).f,i=0,l=Object.isExtensible||function(){return!0},s=!r(90472)((function(){return l(Object.preventExtensions({}))})),setMeta=function(e){u(e,n,{value:{i:"O"+ ++i,w:{}}})},c=e.exports={KEY:n,NEED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!a(e,n)){if(!l(e))return"F";if(!t)return"E";setMeta(e)}return e[n].i},getWeak:function(e,t){if(!a(e,n)){if(!l(e))return!0;if(!t)return!1;setMeta(e)}return e[n].w},onFreeze:function(e){return s&&c.NEED&&l(e)&&!a(e,n)&&setMeta(e),e}}},4326:(e,t,r)=>{var n=r(43280),o=r(6022).set,a=n.MutationObserver||n.WebKitMutationObserver,u=n.process,i=n.Promise,l="process"==r(41352)(u);e.exports=function(){var e,t,r,flush=function(){var n,o;for(l&&(n=u.domain)&&n.exit();e;){o=e.fn,e=e.next;try{o()}catch(n){throw e?r():t=void 0,n}}t=void 0,n&&n.enter()};if(l)r=function(){u.nextTick(flush)};else if(!a||n.navigator&&n.navigator.standalone)if(i&&i.resolve){var s=i.resolve(void 0);r=function(){s.then(flush)}}else r=function(){o.call(n,flush)};else{var c=!0,f=document.createTextNode("");new a(flush).observe(f,{characterData:!0}),r=function(){f.data=c=!c}}return function(n){var o={fn:n,next:void 0};t&&(t.next=o),e||(e=o,r()),t=o}}},88579:(e,t,r)=>{"use strict";var n=r(26610);function PromiseCapability(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw TypeError("Bad Promise constructor");t=e,r=n})),this.resolve=n(t),this.reject=n(r)}e.exports.f=function(e){return new PromiseCapability(e)}},77995:(e,t,r)=>{"use strict";var n=r(75179),o=r(86425),a=r(97739),u=r(67410),i=r(60061),l=r(13115),s=Object.assign;e.exports=!s||r(90472)((function(){var e={},t={},r=Symbol(),n="abcdefghijklmnopqrst";return e[r]=7,n.split("").forEach((function(e){t[e]=e})),7!=s({},e)[r]||Object.keys(s({},t)).join("")!=n}))?function assign(e,t){for(var r=i(e),s=arguments.length,c=1,f=a.f,d=u.f;s>c;)for(var p,v=l(arguments[c++]),m=f?o(v).concat(f(v)):o(v),h=m.length,y=0;h>y;)p=m[y++],n&&!d.call(v,p)||(r[p]=v[p]);return r}:s},82488:(e,t,r)=>{var n=r(30498),o=r(36607),a=r(31986),u=r(18478)("IE_PROTO"),Empty=function(){},createDict=function(){var e,t=r(48765)("iframe"),n=a.length;for(t.style.display="none",r(92477).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),createDict=e.F;n--;)delete createDict.prototype[a[n]];return createDict()};e.exports=Object.create||function create(e,t){var r;return null!==e?(Empty.prototype=n(e),r=new Empty,Empty.prototype=null,r[u]=e):r=createDict(),void 0===t?r:o(r,t)}},60510:(e,t,r)=>{var n=r(30498),o=r(64457),a=r(12737),u=Object.defineProperty;t.f=r(75179)?Object.defineProperty:function defineProperty(e,t,r){if(n(e),t=a(t,!0),n(r),o)try{return u(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},36607:(e,t,r)=>{var n=r(60510),o=r(30498),a=r(86425);e.exports=r(75179)?Object.defineProperties:function defineProperties(e,t){o(e);for(var r,u=a(t),i=u.length,l=0;i>l;)n.f(e,r=u[l++],t[r]);return e}},83264:(e,t,r)=>{var n=r(67410),o=r(48439),a=r(1504),u=r(12737),i=r(20657),l=r(64457),s=Object.getOwnPropertyDescriptor;t.f=r(75179)?s:function getOwnPropertyDescriptor(e,t){if(e=a(e),t=u(t,!0),l)try{return s(e,t)}catch(e){}if(i(e,t))return o(!n.f.call(e,t),e[t])}},26084:(e,t,r)=>{var n=r(1504),o=r(8772).f,a={}.toString,u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function getOwnPropertyNames(e){return u&&"[object Window]"==a.call(e)?function(e){try{return o(e)}catch(e){return u.slice()}}(e):o(n(e))}},8772:(e,t,r)=>{var n=r(65326),o=r(31986).concat("length","prototype");t.f=Object.getOwnPropertyNames||function getOwnPropertyNames(e){return n(e,o)}},97739:(e,t)=>{t.f=Object.getOwnPropertySymbols},999:(e,t,r)=>{var n=r(20657),o=r(60061),a=r(18478)("IE_PROTO"),u=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),n(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?u:null}},65326:(e,t,r)=>{var n=r(20657),o=r(1504),a=r(69191)(!1),u=r(18478)("IE_PROTO");e.exports=function(e,t){var r,i=o(e),l=0,s=[];for(r in i)r!=u&&n(i,r)&&s.push(r);for(;t.length>l;)n(i,r=t[l++])&&(~a(s,r)||s.push(r));return s}},86425:(e,t,r)=>{var n=r(65326),o=r(31986);e.exports=Object.keys||function keys(e){return n(e,o)}},67410:(e,t)=>{t.f={}.propertyIsEnumerable},57972:(e,t,r)=>{var n=r(98310),o=r(47208),a=r(90472);e.exports=function(e,t){var r=(o.Object||{})[e]||Object[e],u={};u[e]=t(r),n(n.S+n.F*a((function(){r(1)})),"Object",u)}},9480:(e,t,r)=>{var n=r(75179),o=r(86425),a=r(1504),u=r(67410).f;e.exports=function(e){return function(t){for(var r,i=a(t),l=o(i),s=l.length,c=0,f=[];s>c;)r=l[c++],n&&!u.call(i,r)||f.push(e?[r,i[r]]:i[r]);return f}}},64344:(e,t,r)=>{var n=r(8772),o=r(97739),a=r(30498),u=r(43280).Reflect;e.exports=u&&u.ownKeys||function ownKeys(e){var t=n.f(a(e)),r=o.f;return r?t.concat(r(e)):t}},52745:e=>{e.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},88747:(e,t,r)=>{var n=r(30498),o=r(39632),a=r(88579);e.exports=function(e,t){if(n(e),o(t)&&t.constructor===e)return t;var r=a.f(e);return(0,r.resolve)(t),r.promise}},48439:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},13199:(e,t,r)=>{var n=r(62292);e.exports=function(e,t,r){for(var o in t)r&&e[o]?e[o]=t[o]:n(e,o,t[o]);return e}},19312:(e,t,r)=>{e.exports=r(62292)},14689:(e,t,r)=>{"use strict";var n=r(98310),o=r(26610),a=r(61725),u=r(25985);e.exports=function(e){n(n.S,e,{from:function from(e){var t,r,n,i,l=arguments[1];return o(this),(t=void 0!==l)&&o(l),null==e?new this:(r=[],t?(n=0,i=a(l,arguments[2],2),u(e,!1,(function(e){r.push(i(e,n++))}))):u(e,!1,r.push,r),new this(r))}})}},7883:(e,t,r)=>{"use strict";var n=r(98310);e.exports=function(e){n(n.S,e,{of:function of(){for(var e=arguments.length,t=new Array(e);e--;)t[e]=arguments[e];return new this(t)}})}},25574:(e,t,r)=>{var n=r(39632),o=r(30498),check=function(e,t){if(o(e),!n(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,n){try{(n=r(61725)(Function.call,r(83264).f(Object.prototype,"__proto__").set,2))(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function setPrototypeOf(e,r){return check(e,r),t?e.__proto__=r:n(e,r),e}}({},!1):void 0),check}},5698:(e,t,r)=>{"use strict";var n=r(43280),o=r(47208),a=r(60510),u=r(75179),i=r(24300)("species");e.exports=function(e){var t="function"==typeof o[e]?o[e]:n[e];u&&t&&!t[i]&&a.f(t,i,{configurable:!0,get:function(){return this}})}},2413:(e,t,r)=>{var n=r(60510).f,o=r(20657),a=r(24300)("toStringTag");e.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,a)&&n(e,a,{configurable:!0,value:t})}},18478:(e,t,r)=>{var n=r(29990)("keys"),o=r(54251);e.exports=function(e){return n[e]||(n[e]=o(e))}},29990:(e,t,r)=>{var n=r(47208),o=r(43280),a="__core-js_shared__",u=o[a]||(o[a]={});(e.exports=function(e,t){return u[e]||(u[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:r(36794)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},73732:(e,t,r)=>{var n=r(30498),o=r(26610),a=r(24300)("species");e.exports=function(e,t){var r,u=n(e).constructor;return void 0===u||null==(r=n(u)[a])?t:o(r)}},78502:(e,t,r)=>{var n=r(58290),o=r(18239);e.exports=function(e){return function(t,r){var a,u,i=String(o(t)),l=n(r),s=i.length;return l<0||l>=s?e?"":void 0:(a=i.charCodeAt(l))<55296||a>56319||l+1===s||(u=i.charCodeAt(l+1))<56320||u>57343?e?i.charAt(l):a:e?i.slice(l,l+2):u-56320+(a-55296<<10)+65536}}},6022:(e,t,r)=>{var n,o,a,u=r(61725),i=r(19897),l=r(92477),s=r(48765),c=r(43280),f=c.process,d=c.setImmediate,p=c.clearImmediate,v=c.MessageChannel,m=c.Dispatch,h=0,y={},g="onreadystatechange",run=function(){var e=+this;if(y.hasOwnProperty(e)){var t=y[e];delete y[e],t()}},listener=function(e){run.call(e.data)};d&&p||(d=function setImmediate(e){for(var t=[],r=1;arguments.length>r;)t.push(arguments[r++]);return y[++h]=function(){i("function"==typeof e?e:Function(e),t)},n(h),h},p=function clearImmediate(e){delete y[e]},"process"==r(41352)(f)?n=function(e){f.nextTick(u(run,e,1))}:m&&m.now?n=function(e){m.now(u(run,e,1))}:v?(a=(o=new v).port2,o.port1.onmessage=listener,n=u(a.postMessage,a,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts?(n=function(e){c.postMessage(e+"","*")},c.addEventListener("message",listener,!1)):n=g in s("script")?function(e){l.appendChild(s("script")).onreadystatechange=function(){l.removeChild(this),run.call(e)}}:function(e){setTimeout(u(run,e,1),0)}),e.exports={set:d,clear:p}},46723:(e,t,r)=>{var n=r(58290),o=Math.max,a=Math.min;e.exports=function(e,t){return(e=n(e))<0?o(e+t,0):a(e,t)}},58290:e=>{var t=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:t)(e)}},1504:(e,t,r)=>{var n=r(13115),o=r(18239);e.exports=function(e){return n(o(e))}},37154:(e,t,r)=>{var n=r(58290),o=Math.min;e.exports=function(e){return e>0?o(n(e),9007199254740991):0}},60061:(e,t,r)=>{var n=r(18239);e.exports=function(e){return Object(n(e))}},12737:(e,t,r)=>{var n=r(39632);e.exports=function(e,t){if(!n(e))return e;var r,o;if(t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;if("function"==typeof(r=e.valueOf)&&!n(o=r.call(e)))return o;if(!t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},54251:e=>{var t=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+r).toString(36))}},35701:(e,t,r)=>{var n=r(43280).navigator;e.exports=n&&n.userAgent||""},41081:(e,t,r)=>{var n=r(39632);e.exports=function(e,t){if(!n(e)||e._t!==t)throw TypeError("Incompatible receiver, "+t+" required!");return e}},31164:(e,t,r)=>{var n=r(43280),o=r(47208),a=r(36794),u=r(7273),i=r(60510).f;e.exports=function(e){var t=o.Symbol||(o.Symbol=a?{}:n.Symbol||{});"_"==e.charAt(0)||e in t||i(t,e,{value:u.f(e)})}},7273:(e,t,r)=>{t.f=r(24300)},24300:(e,t,r)=>{var n=r(29990)("wks"),o=r(54251),a=r(43280).Symbol,u="function"==typeof a;(e.exports=function(e){return n[e]||(n[e]=u&&a[e]||(u?a:o)("Symbol."+e))}).store=n},26116:(e,t,r)=>{var n=r(8312),o=r(24300)("iterator"),a=r(79105);e.exports=r(47208).getIteratorMethod=function(e){if(null!=e)return e[o]||e["@@iterator"]||a[n(e)]}},37627:(e,t,r)=>{"use strict";var n=r(61725),o=r(98310),a=r(60061),u=r(93086),i=r(11827),l=r(37154),s=r(87352),c=r(26116);o(o.S+o.F*!r(26797)((function(e){Array.from(e)})),"Array",{from:function from(e){var t,r,o,f,d=a(e),p="function"==typeof this?this:Array,v=arguments.length,m=v>1?arguments[1]:void 0,h=void 0!==m,y=0,g=c(d);if(h&&(m=n(m,v>2?arguments[2]:void 0,2)),null==g||p==Array&&i(g))for(r=new p(t=l(d.length));t>y;y++)s(r,y,h?m(d[y],y):d[y]);else for(f=g.call(d),r=new p;!(o=f.next()).done;y++)s(r,y,h?u(f,m,[o.value,y],!0):o.value);return r.length=y,r}})},42580:(e,t,r)=>{var n=r(98310);n(n.S,"Array",{isArray:r(7359)})},84411:(e,t,r)=>{"use strict";var n=r(29697),o=r(9329),a=r(79105),u=r(1504);e.exports=r(6125)(Array,"Array",(function(e,t){this._t=u(e),this._i=0,this._k=t}),(function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,o(1)):o(0,"keys"==t?r:"values"==t?e[r]:[r,e[r]])}),"values"),a.Arguments=a.Array,n("keys"),n("values"),n("entries")},31477:(e,t,r)=>{var n=r(98310);n(n.S,"Date",{now:function(){return(new Date).getTime()}})},99954:(e,t,r)=>{var n=r(98310);n(n.S+n.F,"Object",{assign:r(77995)})},30785:(e,t,r)=>{var n=r(98310);n(n.S,"Object",{create:r(82488)})},23078:(e,t,r)=>{var n=r(98310);n(n.S+n.F*!r(75179),"Object",{defineProperties:r(36607)})},40168:(e,t,r)=>{var n=r(98310);n(n.S+n.F*!r(75179),"Object",{defineProperty:r(60510).f})},18576:(e,t,r)=>{var n=r(1504),o=r(83264).f;r(57972)("getOwnPropertyDescriptor",(function(){return function getOwnPropertyDescriptor(e,t){return o(n(e),t)}}))},4840:(e,t,r)=>{var n=r(60061),o=r(999);r(57972)("getPrototypeOf",(function(){return function getPrototypeOf(e){return o(n(e))}}))},5453:(e,t,r)=>{var n=r(60061),o=r(86425);r(57972)("keys",(function(){return function keys(e){return o(n(e))}}))},13890:(e,t,r)=>{var n=r(98310);n(n.S,"Object",{setPrototypeOf:r(25574).set})},70285:()=>{},86082:(e,t,r)=>{"use strict";var n,o,a,u,i=r(36794),l=r(43280),s=r(61725),c=r(8312),f=r(98310),d=r(39632),p=r(26610),v=r(54677),m=r(25985),h=r(73732),y=r(6022).set,g=r(4326)(),_=r(88579),b=r(52745),x=r(35701),E=r(88747),w="Promise",S=l.TypeError,C=l.process,P=C&&C.versions,T=P&&P.v8||"",O=l.Promise,R="process"==c(C),empty=function(){},M=o=_.f,A=!!function(){try{var e=O.resolve(1),t=(e.constructor={})[r(24300)("species")]=function(e){e(empty,empty)};return(R||"function"==typeof PromiseRejectionEvent)&&e.then(empty)instanceof t&&0!==T.indexOf("6.6")&&-1===x.indexOf("Chrome/66")}catch(e){}}(),isThenable=function(e){var t;return!(!d(e)||"function"!=typeof(t=e.then))&&t},notify=function(e,t){if(!e._n){e._n=!0;var r=e._c;g((function(){for(var n=e._v,o=1==e._s,a=0,run=function(t){var r,a,u,i=o?t.ok:t.fail,l=t.resolve,s=t.reject,c=t.domain;try{i?(o||(2==e._h&&onHandleUnhandled(e),e._h=1),!0===i?r=n:(c&&c.enter(),r=i(n),c&&(c.exit(),u=!0)),r===t.promise?s(S("Promise-chain cycle")):(a=isThenable(r))?a.call(r,l,s):l(r)):s(n)}catch(e){c&&!u&&c.exit(),s(e)}};r.length>a;)run(r[a++]);e._c=[],e._n=!1,t&&!e._h&&onUnhandled(e)}))}},onUnhandled=function(e){y.call(l,(function(){var t,r,n,o=e._v,a=isUnhandled(e);if(a&&(t=b((function(){R?C.emit("unhandledRejection",o,e):(r=l.onunhandledrejection)?r({promise:e,reason:o}):(n=l.console)&&n.error&&n.error("Unhandled promise rejection",o)})),e._h=R||isUnhandled(e)?2:1),e._a=void 0,a&&t.e)throw t.v}))},isUnhandled=function(e){return 1!==e._h&&0===(e._a||e._c).length},onHandleUnhandled=function(e){y.call(l,(function(){var t;R?C.emit("rejectionHandled",e):(t=l.onrejectionhandled)&&t({promise:e,reason:e._v})}))},$reject=function(e){var t=this;t._d||(t._d=!0,(t=t._w||t)._v=e,t._s=2,t._a||(t._a=t._c.slice()),notify(t,!0))},$resolve=function(e){var t,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===e)throw S("Promise can't be resolved itself");(t=isThenable(e))?g((function(){var n={_w:r,_d:!1};try{t.call(e,s($resolve,n,1),s($reject,n,1))}catch(e){$reject.call(n,e)}})):(r._v=e,r._s=1,notify(r,!1))}catch(e){$reject.call({_w:r,_d:!1},e)}}};A||(O=function Promise(e){v(this,O,w,"_h"),p(e),n.call(this);try{e(s($resolve,this,1),s($reject,this,1))}catch(e){$reject.call(this,e)}},(n=function Promise(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=r(13199)(O.prototype,{then:function then(e,t){var r=M(h(this,O));return r.ok="function"!=typeof e||e,r.fail="function"==typeof t&&t,r.domain=R?C.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&notify(this,!1),r.promise},catch:function(e){return this.then(void 0,e)}}),a=function(){var e=new n;this.promise=e,this.resolve=s($resolve,e,1),this.reject=s($reject,e,1)},_.f=M=function(e){return e===O||e===u?new a(e):o(e)}),f(f.G+f.W+f.F*!A,{Promise:O}),r(2413)(O,w),r(5698)(w),u=r(47208).Promise,f(f.S+f.F*!A,w,{reject:function reject(e){var t=M(this);return(0,t.reject)(e),t.promise}}),f(f.S+f.F*(i||!A),w,{resolve:function resolve(e){return E(i&&this===u?O:this,e)}}),f(f.S+f.F*!(A&&r(26797)((function(e){O.all(e).catch(empty)}))),w,{all:function all(e){var t=this,r=M(t),n=r.resolve,o=r.reject,a=b((function(){var r=[],a=0,u=1;m(e,!1,(function(e){var i=a++,l=!1;r.push(void 0),u++,t.resolve(e).then((function(e){l||(l=!0,r[i]=e,--u||n(r))}),o)})),--u||n(r)}));return a.e&&o(a.v),r.promise},race:function race(e){var t=this,r=M(t),n=r.reject,o=b((function(){m(e,!1,(function(e){t.resolve(e).then(r.resolve,n)}))}));return o.e&&n(o.v),r.promise}})},11320:(e,t,r)=>{var n=r(98310),o=r(82488),a=r(26610),u=r(30498),i=r(39632),l=r(90472),s=r(45515),c=(r(43280).Reflect||{}).construct,f=l((function(){function F(){}return!(c((function(){}),[],F)instanceof F)})),d=!l((function(){c((function(){}))}));n(n.S+n.F*(f||d),"Reflect",{construct:function construct(e,t){a(e),u(t);var r=arguments.length<3?e:a(arguments[2]);if(d&&!f)return c(e,t,r);if(e==r){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var n=[null];return n.push.apply(n,t),new(s.apply(e,n))}var l=r.prototype,p=o(i(l)?l:Object.prototype),v=Function.apply.call(e,p,t);return i(v)?v:p}})},99572:(e,t,r)=>{"use strict";var n=r(78502)(!0);r(6125)(String,"String",(function(e){this._t=String(e),this._i=0}),(function(){var e,t=this._t,r=this._i;return r>=t.length?{value:void 0,done:!0}:(e=n(t,r),this._i+=e.length,{value:e,done:!1})}))},54370:(e,t,r)=>{"use strict";var n=r(43280),o=r(20657),a=r(75179),u=r(98310),i=r(19312),l=r(6758).KEY,s=r(90472),c=r(29990),f=r(2413),d=r(54251),p=r(24300),v=r(7273),m=r(31164),h=r(42266),y=r(7359),g=r(30498),_=r(39632),b=r(60061),x=r(1504),E=r(12737),w=r(48439),S=r(82488),C=r(26084),P=r(83264),T=r(97739),O=r(60510),R=r(86425),M=P.f,A=O.f,N=C.f,j=n.Symbol,L=n.JSON,D=L&&L.stringify,I=p("_hidden"),q=p("toPrimitive"),U={}.propertyIsEnumerable,W=c("symbol-registry"),B=c("symbols"),G=c("op-symbols"),H=Object.prototype,$="function"==typeof j&&!!T.f,V=n.QObject,Q=!V||!V.prototype||!V.prototype.findChild,X=a&&s((function(){return 7!=S(A({},"a",{get:function(){return A(this,"a",{value:7}).a}})).a}))?function(e,t,r){var n=M(H,t);n&&delete H[t],A(e,t,r),n&&e!==H&&A(H,t,n)}:A,wrap=function(e){var t=B[e]=S(j.prototype);return t._k=e,t},z=$&&"symbol"==typeof j.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof j},K=function defineProperty(e,t,r){return e===H&&K(G,t,r),g(e),t=E(t,!0),g(r),o(B,t)?(r.enumerable?(o(e,I)&&e[I][t]&&(e[I][t]=!1),r=S(r,{enumerable:w(0,!1)})):(o(e,I)||A(e,I,w(1,{})),e[I][t]=!0),X(e,t,r)):A(e,t,r)},Y=function defineProperties(e,t){g(e);for(var r,n=h(t=x(t)),o=0,a=n.length;a>o;)K(e,r=n[o++],t[r]);return e},J=function propertyIsEnumerable(e){var t=U.call(this,e=E(e,!0));return!(this===H&&o(B,e)&&!o(G,e))&&(!(t||!o(this,e)||!o(B,e)||o(this,I)&&this[I][e])||t)},Z=function getOwnPropertyDescriptor(e,t){if(e=x(e),t=E(t,!0),e!==H||!o(B,t)||o(G,t)){var r=M(e,t);return!r||!o(B,t)||o(e,I)&&e[I][t]||(r.enumerable=!0),r}},ee=function getOwnPropertyNames(e){for(var t,r=N(x(e)),n=[],a=0;r.length>a;)o(B,t=r[a++])||t==I||t==l||n.push(t);return n},te=function getOwnPropertySymbols(e){for(var t,r=e===H,n=N(r?G:x(e)),a=[],u=0;n.length>u;)!o(B,t=n[u++])||r&&!o(H,t)||a.push(B[t]);return a};$||(i((j=function Symbol(){if(this instanceof j)throw TypeError("Symbol is not a constructor!");var e=d(arguments.length>0?arguments[0]:void 0),$set=function(t){this===H&&$set.call(G,t),o(this,I)&&o(this[I],e)&&(this[I][e]=!1),X(this,e,w(1,t))};return a&&Q&&X(H,e,{configurable:!0,set:$set}),wrap(e)}).prototype,"toString",(function toString(){return this._k})),P.f=Z,O.f=K,r(8772).f=C.f=ee,r(67410).f=J,T.f=te,a&&!r(36794)&&i(H,"propertyIsEnumerable",J,!0),v.f=function(e){return wrap(p(e))}),u(u.G+u.W+u.F*!$,{Symbol:j});for(var re="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ne=0;re.length>ne;)p(re[ne++]);for(var oe=R(p.store),ae=0;oe.length>ae;)m(oe[ae++]);u(u.S+u.F*!$,"Symbol",{for:function(e){return o(W,e+="")?W[e]:W[e]=j(e)},keyFor:function keyFor(e){if(!z(e))throw TypeError(e+" is not a symbol!");for(var t in W)if(W[t]===e)return t},useSetter:function(){Q=!0},useSimple:function(){Q=!1}}),u(u.S+u.F*!$,"Object",{create:function create(e,t){return void 0===t?S(e):Y(S(e),t)},defineProperty:K,defineProperties:Y,getOwnPropertyDescriptor:Z,getOwnPropertyNames:ee,getOwnPropertySymbols:te});var ue=s((function(){T.f(1)}));u(u.S+u.F*ue,"Object",{getOwnPropertySymbols:function getOwnPropertySymbols(e){return T.f(b(e))}}),L&&u(u.S+u.F*(!$||s((function(){var e=j();return"[null]"!=D([e])||"{}"!=D({a:e})||"{}"!=D(Object(e))}))),"JSON",{stringify:function stringify(e){for(var t,r,n=[e],o=1;arguments.length>o;)n.push(arguments[o++]);if(r=t=n[1],(_(t)||void 0!==e)&&!z(e))return y(t)||(t=function(e,t){if("function"==typeof r&&(t=r.call(this,e,t)),!z(t))return t}),n[1]=t,D.apply(L,n)}}),j.prototype[q]||r(62292)(j.prototype,q,j.prototype.valueOf),f(j,"Symbol"),f(Math,"Math",!0),f(n.JSON,"JSON",!0)},23337:(e,t,r)=>{"use strict";var n,o=r(43280),a=r(97647)(0),u=r(19312),i=r(6758),l=r(77995),s=r(92600),c=r(39632),f=r(41081),d=r(41081),p=!o.ActiveXObject&&"ActiveXObject"in o,v="WeakMap",m=i.getWeak,h=Object.isExtensible,y=s.ufstore,wrapper=function(e){return function WeakMap(){return e(this,arguments.length>0?arguments[0]:void 0)}},g={get:function get(e){if(c(e)){var t=m(e);return!0===t?y(f(this,v)).get(e):t?t[this._i]:void 0}},set:function set(e,t){return s.def(f(this,v),e,t)}},_=e.exports=r(70770)(v,wrapper,g,s,!0,!0);d&&p&&(l((n=s.getConstructor(wrapper,v)).prototype,g),i.NEED=!0,a(["delete","has","get","set"],(function(e){var t=_.prototype,r=t[e];u(t,e,(function(t,o){if(c(t)&&!h(t)){this._f||(this._f=new n);var a=this._f[e](t,o);return"set"==e?this:a}return r.call(this,t,o)}))})))},95260:(e,t,r)=>{var n=r(98310),o=r(9480)(!0);n(n.S,"Object",{entries:function entries(e){return o(e)}})},67685:(e,t,r)=>{var n=r(98310),o=r(64344),a=r(1504),u=r(83264),i=r(87352);n(n.S,"Object",{getOwnPropertyDescriptors:function getOwnPropertyDescriptors(e){for(var t,r,n=a(e),l=u.f,s=o(n),c={},f=0;s.length>f;)void 0!==(r=l(n,t=s[f++]))&&i(c,t,r);return c}})},57188:(e,t,r)=>{var n=r(98310),o=r(9480)(!1);n(n.S,"Object",{values:function values(e){return o(e)}})},81522:(e,t,r)=>{"use strict";var n=r(98310),o=r(47208),a=r(43280),u=r(73732),i=r(88747);n(n.P+n.R,"Promise",{finally:function(e){var t=u(this,o.Promise||a.Promise),r="function"==typeof e;return this.then(r?function(r){return i(t,e()).then((function(){return r}))}:e,r?function(r){return i(t,e()).then((function(){throw r}))}:e)}})},25757:(e,t,r)=>{"use strict";var n=r(98310),o=r(88579),a=r(52745);n(n.S,"Promise",{try:function(e){var t=o.f(this),r=a(e);return(r.e?t.reject:t.resolve)(r.v),t.promise}})},87573:(e,t,r)=>{r(31164)("asyncIterator")},97224:(e,t,r)=>{r(31164)("observable")},92797:(e,t,r)=>{r(14689)("WeakMap")},10143:(e,t,r)=>{r(7883)("WeakMap")},74114:(e,t,r)=>{r(84411);for(var n=r(43280),o=r(62292),a=r(79105),u=r(24300)("toStringTag"),i="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;l<i.length;l++){var s=i[l],c=n[s],f=c&&c.prototype;f&&!f[u]&&o(f,u,s),a[s]=a.Array}},22761:e=>{e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},42094:(e,t,r)=>{var n=r(62190)("unscopables"),o=Array.prototype;null==o[n]&&r(74216)(o,n,{}),e.exports=function(e){o[n][e]=!0}},88492:(e,t,r)=>{"use strict";var n=r(12070)(!0);e.exports=function(e,t,r){return t+(r?n(e,t).length:1)}},6365:(e,t,r)=>{var n=r(67334);e.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},59021:(e,t,r)=>{var n=r(15703),o=r(26078),a=r(78615);e.exports=function(e){return function(t,r,u){var i,l=n(t),s=o(l.length),c=a(u,s);if(e&&r!=r){for(;s>c;)if((i=l[c++])!=i)return!0}else for(;s>c;c++)if((e||c in l)&&l[c]===r)return e||c||0;return!e&&-1}}},78309:(e,t,r)=>{var n=r(11528),o=r(8467),a=r(26033),u=r(26078),i=r(63531);e.exports=function(e,t){var r=1==e,l=2==e,s=3==e,c=4==e,f=6==e,d=5==e||f,p=t||i;return function(t,i,v){for(var m,h,y=a(t),g=o(y),_=n(i,v,3),b=u(g.length),x=0,E=r?p(t,b):l?p(t,0):void 0;b>x;x++)if((d||x in g)&&(h=_(m=g[x],x,y),e))if(r)E[x]=h;else if(h)switch(e){case 3:return!0;case 5:return m;case 6:return x;case 2:E.push(m)}else if(c)return!1;return f?-1:s||c?c:E}}},81071:(e,t,r)=>{var n=r(67334),o=r(99141),a=r(62190)("species");e.exports=function(e){var t;return o(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!o(t.prototype)||(t=void 0),n(t)&&null===(t=t[a])&&(t=void 0)),void 0===t?Array:t}},63531:(e,t,r)=>{var n=r(81071);e.exports=function(e,t){return new(n(e))(t)}},20106:(e,t,r)=>{var n=r(26688),o=r(62190)("toStringTag"),a="Arguments"==n(function(){return arguments}());e.exports=function(e){var t,r,u;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?r:a?n(t):"Object"==(u=n(t))&&"function"==typeof t.callee?"Arguments":u}},26688:e=>{var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},60066:e=>{var t=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=t)},11528:(e,t,r)=>{var n=r(22761);e.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,o){return e.call(t,r,n,o)}}return function(){return e.apply(t,arguments)}}},61622:e=>{e.exports=function(e){if(null==e)throw TypeError("Can't call method on  "+e);return e}},36628:(e,t,r)=>{e.exports=!r(48625)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},5050:(e,t,r)=>{var n=r(67334),o=r(38113).document,a=n(o)&&n(o.createElement);e.exports=function(e){return a?o.createElement(e):{}}},33603:e=>{e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},65772:(e,t,r)=>{var n=r(38113),o=r(60066),a=r(74216),u=r(17738),i=r(11528),$export=function(e,t,r){var l,s,c,f,d=e&$export.F,p=e&$export.G,v=e&$export.S,m=e&$export.P,h=e&$export.B,y=p?n:v?n[t]||(n[t]={}):(n[t]||{}).prototype,g=p?o:o[t]||(o[t]={}),_=g.prototype||(g.prototype={});for(l in p&&(r=t),r)c=((s=!d&&y&&void 0!==y[l])?y:r)[l],f=h&&s?i(c,n):m&&"function"==typeof c?i(Function.call,c):c,y&&u(y,l,c,e&$export.U),g[l]!=c&&a(g,l,f),m&&_[l]!=c&&(_[l]=c)};n.core=o,$export.F=1,$export.G=2,$export.S=4,$export.P=8,$export.B=16,$export.W=32,$export.U=64,$export.R=128,e.exports=$export},86570:(e,t,r)=>{var n=r(62190)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(r){try{return t[n]=!1,!"/./"[e](t)}catch(e){}}return!0}},48625:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},48897:(e,t,r)=>{"use strict";r(25846);var n=r(17738),o=r(74216),a=r(48625),u=r(61622),i=r(62190),l=r(43288),s=i("species"),c=!a((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),f=function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var r="ab".split(e);return 2===r.length&&"a"===r[0]&&"b"===r[1]}();e.exports=function(e,t,r){var d=i(e),p=!a((function(){var t={};return t[d]=function(){return 7},7!=""[e](t)})),v=p?!a((function(){var t=!1,r=/a/;return r.exec=function(){return t=!0,null},"split"===e&&(r.constructor={},r.constructor[s]=function(){return r}),r[d](""),!t})):void 0;if(!p||!v||"replace"===e&&!c||"split"===e&&!f){var m=/./[d],h=r(u,d,""[e],(function maybeCallNative(e,t,r,n,o){return t.exec===l?p&&!o?{done:!0,value:m.call(t,r,n)}:{done:!0,value:e.call(r,t,n)}:{done:!1}})),y=h[0],g=h[1];n(String.prototype,e,y),o(RegExp.prototype,d,2==t?function(e,t){return g.call(e,this,t)}:function(e){return g.call(e,this)})}}},74859:(e,t,r)=>{"use strict";var n=r(6365);e.exports=function(){var e=n(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},20646:(e,t,r)=>{e.exports=r(8655)("native-function-to-string",Function.toString)},38113:e=>{var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},54040:e=>{var t={}.hasOwnProperty;e.exports=function(e,r){return t.call(e,r)}},74216:(e,t,r)=>{var n=r(98558),o=r(36061);e.exports=r(36628)?function(e,t,r){return n.f(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},8954:(e,t,r)=>{var n=r(38113).document;e.exports=n&&n.documentElement},5100:(e,t,r)=>{e.exports=!r(36628)&&!r(48625)((function(){return 7!=Object.defineProperty(r(5050)("div"),"a",{get:function(){return 7}}).a}))},8467:(e,t,r)=>{var n=r(26688);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},99141:(e,t,r)=>{var n=r(26688);e.exports=Array.isArray||function isArray(e){return"Array"==n(e)}},67334:e=>{e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},94587:(e,t,r)=>{var n=r(67334),o=r(26688),a=r(62190)("match");e.exports=function(e){var t;return n(e)&&(void 0!==(t=e[a])?!!t:"RegExp"==o(e))}},46445:(e,t,r)=>{"use strict";var n=r(82897),o=r(36061),a=r(55727),u={};r(74216)(u,r(62190)("iterator"),(function(){return this})),e.exports=function(e,t,r){e.prototype=n(u,{next:o(1,r)}),a(e,t+" Iterator")}},61195:(e,t,r)=>{"use strict";var n=r(81422),o=r(65772),a=r(17738),u=r(74216),i=r(23988),l=r(46445),s=r(55727),c=r(19002),f=r(62190)("iterator"),d=!([].keys&&"next"in[].keys()),p="keys",v="values",returnThis=function(){return this};e.exports=function(e,t,r,m,h,y,g){l(r,t,m);var _,b,x,getMethod=function(e){if(!d&&e in C)return C[e];switch(e){case p:return function keys(){return new r(this,e)};case v:return function values(){return new r(this,e)}}return function entries(){return new r(this,e)}},E=t+" Iterator",w=h==v,S=!1,C=e.prototype,P=C[f]||C["@@iterator"]||h&&C[h],T=P||getMethod(h),O=h?w?getMethod("entries"):T:void 0,R="Array"==t&&C.entries||P;if(R&&(x=c(R.call(new e)))!==Object.prototype&&x.next&&(s(x,E,!0),n||"function"==typeof x[f]||u(x,f,returnThis)),w&&P&&P.name!==v&&(S=!0,T=function values(){return P.call(this)}),n&&!g||!d&&!S&&C[f]||u(C,f,T),i[t]=T,i[E]=returnThis,h)if(_={values:w?T:getMethod(v),keys:y?T:getMethod(p),entries:O},g)for(b in _)b in C||a(C,b,_[b]);else o(o.P+o.F*(d||S),t,_);return _}},35038:e=>{e.exports=function(e,t){return{value:t,done:!!e}}},23988:e=>{e.exports={}},81422:e=>{e.exports=!1},82897:(e,t,r)=>{var n=r(6365),o=r(7331),a=r(33603),u=r(28034)("IE_PROTO"),Empty=function(){},createDict=function(){var e,t=r(5050)("iframe"),n=a.length;for(t.style.display="none",r(8954).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),createDict=e.F;n--;)delete createDict.prototype[a[n]];return createDict()};e.exports=Object.create||function create(e,t){var r;return null!==e?(Empty.prototype=n(e),r=new Empty,Empty.prototype=null,r[u]=e):r=createDict(),void 0===t?r:o(r,t)}},98558:(e,t,r)=>{var n=r(6365),o=r(5100),a=r(31382),u=Object.defineProperty;t.f=r(36628)?Object.defineProperty:function defineProperty(e,t,r){if(n(e),t=a(t,!0),n(r),o)try{return u(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},7331:(e,t,r)=>{var n=r(98558),o=r(6365),a=r(42912);e.exports=r(36628)?Object.defineProperties:function defineProperties(e,t){o(e);for(var r,u=a(t),i=u.length,l=0;i>l;)n.f(e,r=u[l++],t[r]);return e}},19002:(e,t,r)=>{var n=r(54040),o=r(26033),a=r(28034)("IE_PROTO"),u=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),n(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?u:null}},75547:(e,t,r)=>{var n=r(54040),o=r(15703),a=r(59021)(!1),u=r(28034)("IE_PROTO");e.exports=function(e,t){var r,i=o(e),l=0,s=[];for(r in i)r!=u&&n(i,r)&&s.push(r);for(;t.length>l;)n(i,r=t[l++])&&(~a(s,r)||s.push(r));return s}},42912:(e,t,r)=>{var n=r(75547),o=r(33603);e.exports=Object.keys||function keys(e){return n(e,o)}},36061:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},17738:(e,t,r)=>{var n=r(38113),o=r(74216),a=r(54040),u=r(25078)("src"),i=r(20646),l="toString",s=(""+i).split(l);r(60066).inspectSource=function(e){return i.call(e)},(e.exports=function(e,t,r,i){var l="function"==typeof r;l&&(a(r,"name")||o(r,"name",t)),e[t]!==r&&(l&&(a(r,u)||o(r,u,e[t]?""+e[t]:s.join(String(t)))),e===n?e[t]=r:i?e[t]?e[t]=r:o(e,t,r):(delete e[t],o(e,t,r)))})(Function.prototype,l,(function toString(){return"function"==typeof this&&this[u]||i.call(this)}))},62404:(e,t,r)=>{"use strict";var n=r(20106),o=RegExp.prototype.exec;e.exports=function(e,t){var r=e.exec;if("function"==typeof r){var a=r.call(e,t);if("object"!=typeof a)throw new TypeError("RegExp exec method returned something other than an Object or null");return a}if("RegExp"!==n(e))throw new TypeError("RegExp#exec called on incompatible receiver");return o.call(e,t)}},43288:(e,t,r)=>{"use strict";var n,o,a=r(74859),u=RegExp.prototype.exec,i=String.prototype.replace,l=u,s=(n=/a/,o=/b*/g,u.call(n,"a"),u.call(o,"a"),0!==n.lastIndex||0!==o.lastIndex),c=void 0!==/()??/.exec("")[1];(s||c)&&(l=function exec(e){var t,r,n,o,l=this;return c&&(r=new RegExp("^"+l.source+"$(?!\\s)",a.call(l))),s&&(t=l.lastIndex),n=u.call(l,e),s&&n&&(l.lastIndex=l.global?n.index+n[0].length:t),c&&n&&n.length>1&&i.call(n[0],r,(function(){for(o=1;o<arguments.length-2;o++)void 0===arguments[o]&&(n[o]=void 0)})),n}),e.exports=l},80339:e=>{e.exports=Object.is||function is(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},55727:(e,t,r)=>{var n=r(98558).f,o=r(54040),a=r(62190)("toStringTag");e.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,a)&&n(e,a,{configurable:!0,value:t})}},28034:(e,t,r)=>{var n=r(8655)("keys"),o=r(25078);e.exports=function(e){return n[e]||(n[e]=o(e))}},8655:(e,t,r)=>{var n=r(60066),o=r(38113),a="__core-js_shared__",u=o[a]||(o[a]={});(e.exports=function(e,t){return u[e]||(u[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:r(81422)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},11987:(e,t,r)=>{var n=r(6365),o=r(22761),a=r(62190)("species");e.exports=function(e,t){var r,u=n(e).constructor;return void 0===u||null==(r=n(u)[a])?t:o(r)}},10225:(e,t,r)=>{"use strict";var n=r(48625);e.exports=function(e,t){return!!e&&n((function(){t?e.call(null,(function(){}),1):e.call(null)}))}},12070:(e,t,r)=>{var n=r(3338),o=r(61622);e.exports=function(e){return function(t,r){var a,u,i=String(o(t)),l=n(r),s=i.length;return l<0||l>=s?e?"":void 0:(a=i.charCodeAt(l))<55296||a>56319||l+1===s||(u=i.charCodeAt(l+1))<56320||u>57343?e?i.charAt(l):a:e?i.slice(l,l+2):u-56320+(a-55296<<10)+65536}}},465:(e,t,r)=>{var n=r(94587),o=r(61622);e.exports=function(e,t,r){if(n(t))throw TypeError("String#"+r+" doesn't accept regex!");return String(o(e))}},78615:(e,t,r)=>{var n=r(3338),o=Math.max,a=Math.min;e.exports=function(e,t){return(e=n(e))<0?o(e+t,0):a(e,t)}},3338:e=>{var t=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:t)(e)}},15703:(e,t,r)=>{var n=r(8467),o=r(61622);e.exports=function(e){return n(o(e))}},26078:(e,t,r)=>{var n=r(3338),o=Math.min;e.exports=function(e){return e>0?o(n(e),9007199254740991):0}},26033:(e,t,r)=>{var n=r(61622);e.exports=function(e){return Object(n(e))}},31382:(e,t,r)=>{var n=r(67334);e.exports=function(e,t){if(!n(e))return e;var r,o;if(t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;if("function"==typeof(r=e.valueOf)&&!n(o=r.call(e)))return o;if(!t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},25078:e=>{var t=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+r).toString(36))}},62190:(e,t,r)=>{var n=r(8655)("wks"),o=r(25078),a=r(38113).Symbol,u="function"==typeof a;(e.exports=function(e){return n[e]||(n[e]=u&&a[e]||(u?a:o)("Symbol."+e))}).store=n},64434:(e,t,r)=>{"use strict";var n=r(65772),o=r(78309)(2);n(n.P+n.F*!r(10225)([].filter,!0),"Array",{filter:function filter(e){return o(this,e,arguments[1])}})},71954:(e,t,r)=>{"use strict";var n=r(65772),o=r(78309)(5),a="find",u=!0;a in[]&&Array(1).find((function(){u=!1})),n(n.P+n.F*u,"Array",{find:function find(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),r(42094)(a)},12897:(e,t,r)=>{"use strict";var n=r(42094),o=r(35038),a=r(23988),u=r(15703);e.exports=r(61195)(Array,"Array",(function(e,t){this._t=u(e),this._i=0,this._k=t}),(function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,o(1)):o(0,"keys"==t?r:"values"==t?e[r]:[r,e[r]])}),"values"),a.Arguments=a.Array,n("keys"),n("values"),n("entries")},90286:(e,t,r)=>{"use strict";var n=r(65772),o=r(78309)(1);n(n.P+n.F*!r(10225)([].map,!0),"Array",{map:function map(e){return o(this,e,arguments[1])}})},99745:(e,t,r)=>{var n=r(98558).f,o=Function.prototype,a=/^\s*function ([^ (]*)/,u="name";u in o||r(36628)&&n(o,u,{configurable:!0,get:function(){try{return(""+this).match(a)[1]}catch(e){return""}}})},76139:(e,t,r)=>{"use strict";var n=r(20106),o={};o[r(62190)("toStringTag")]="z",o+""!="[object z]"&&r(17738)(Object.prototype,"toString",(function toString(){return"[object "+n(this)+"]"}),!0)},25846:(e,t,r)=>{"use strict";var n=r(43288);r(65772)({target:"RegExp",proto:!0,forced:n!==/./.exec},{exec:n})},84208:(e,t,r)=>{"use strict";var n=r(6365),o=r(26033),a=r(26078),u=r(3338),i=r(88492),l=r(62404),s=Math.max,c=Math.min,f=Math.floor,d=/\$([$&`']|\d\d?|<[^>]*>)/g,p=/\$([$&`']|\d\d?)/g;r(48897)("replace",2,(function(e,t,r,v){return[function replace(n,o){var a=e(this),u=null==n?void 0:n[t];return void 0!==u?u.call(n,a,o):r.call(String(a),n,o)},function(e,t){var o=v(r,e,this,t);if(o.done)return o.value;var f=n(e),d=String(this),p="function"==typeof t;p||(t=String(t));var m=f.global;if(m){var h=f.unicode;f.lastIndex=0}for(var y=[];;){var g=l(f,d);if(null===g)break;if(y.push(g),!m)break;""===String(g[0])&&(f.lastIndex=i(d,a(f.lastIndex),h))}for(var _,b="",x=0,E=0;E<y.length;E++){g=y[E];for(var w=String(g[0]),S=s(c(u(g.index),d.length),0),C=[],P=1;P<g.length;P++)C.push(void 0===(_=g[P])?_:String(_));var T=g.groups;if(p){var O=[w].concat(C,S,d);void 0!==T&&O.push(T);var R=String(t.apply(void 0,O))}else R=getSubstitution(w,d,S,C,T,t);S>=x&&(b+=d.slice(x,S)+R,x=S+w.length)}return b+d.slice(x)}];function getSubstitution(e,t,n,a,u,i){var l=n+e.length,s=a.length,c=p;return void 0!==u&&(u=o(u),c=d),r.call(i,c,(function(r,o){var i;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(l);case"<":i=u[o.slice(1,-1)];break;default:var c=+o;if(0===c)return r;if(c>s){var d=f(c/10);return 0===d?r:d<=s?void 0===a[d-1]?o.charAt(1):a[d-1]+o.charAt(1):r}i=a[c-1]}return void 0===i?"":i}))}}))},42679:(e,t,r)=>{"use strict";var n=r(6365),o=r(80339),a=r(62404);r(48897)("search",1,(function(e,t,r,u){return[function search(r){var n=e(this),o=null==r?void 0:r[t];return void 0!==o?o.call(r,n):new RegExp(r)[t](String(n))},function(e){var t=u(r,e,this);if(t.done)return t.value;var i=n(e),l=String(this),s=i.lastIndex;o(s,0)||(i.lastIndex=0);var c=a(i,l);return o(i.lastIndex,s)||(i.lastIndex=s),null===c?-1:c.index}]}))},99236:(e,t,r)=>{"use strict";var n=r(94587),o=r(6365),a=r(11987),u=r(88492),i=r(26078),l=r(62404),s=r(43288),c=r(48625),f=Math.min,d=[].push,p=4294967295,v=!c((function(){RegExp(p,"y")}));r(48897)("split",2,(function(e,t,r,c){var m;return m="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,t){var o=String(this);if(void 0===e&&0===t)return[];if(!n(e))return r.call(o,e,t);for(var a,u,i,l=[],c=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),f=0,v=void 0===t?p:t>>>0,m=new RegExp(e.source,c+"g");(a=s.call(m,o))&&!((u=m.lastIndex)>f&&(l.push(o.slice(f,a.index)),a.length>1&&a.index<o.length&&d.apply(l,a.slice(1)),i=a[0].length,f=u,l.length>=v));)m.lastIndex===a.index&&m.lastIndex++;return f===o.length?!i&&m.test("")||l.push(""):l.push(o.slice(f)),l.length>v?l.slice(0,v):l}:"0".split(void 0,0).length?function(e,t){return void 0===e&&0===t?[]:r.call(this,e,t)}:r,[function split(r,n){var o=e(this),a=null==r?void 0:r[t];return void 0!==a?a.call(r,o,n):m.call(String(o),r,n)},function(e,t){var n=c(m,e,this,t,m!==r);if(n.done)return n.value;var s=o(e),d=String(this),h=a(s,RegExp),y=s.unicode,g=(s.ignoreCase?"i":"")+(s.multiline?"m":"")+(s.unicode?"u":"")+(v?"y":"g"),_=new h(v?s:"^(?:"+s.source+")",g),b=void 0===t?p:t>>>0;if(0===b)return[];if(0===d.length)return null===l(_,d)?[d]:[];for(var x=0,E=0,w=[];E<d.length;){_.lastIndex=v?E:0;var S,C=l(_,v?d:d.slice(E));if(null===C||(S=f(i(_.lastIndex+(v?0:E)),d.length))===x)E=u(d,E,y);else{if(w.push(d.slice(x,E)),w.length===b)return w;for(var P=1;P<=C.length-1;P++)if(w.push(C[P]),w.length===b)return w;E=x=S}}return w.push(d.slice(x)),w}]}))},3777:(e,t,r)=>{"use strict";var n=r(65772),o=r(465),a="includes";n(n.P+n.F*r(86570)(a),"String",{includes:function includes(e){return!!~o(this,e,a).indexOf(e,arguments.length>1?arguments[1]:void 0)}})},38081:(e,t,r)=>{"use strict";var n=r(65772),o=r(59021)(!0);n(n.P,"Array",{includes:function includes(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),r(42094)("includes")},93085:(e,t,r)=>{for(var n=r(12897),o=r(42912),a=r(17738),u=r(38113),i=r(74216),l=r(23988),s=r(62190),c=s("iterator"),f=s("toStringTag"),d=l.Array,p={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},v=o(p),m=0;m<v.length;m++){var h,y=v[m],g=p[y],_=u[y],b=_&&_.prototype;if(b&&(b[c]||i(b,c,d),b[f]||i(b,f,y),l[y]=d,g))for(h in n)b[h]||a(b,h,n[h],!0)}},24457:(e,t,r)=>{"use strict";t.__esModule=!0;var n=r(63804),o=(_interopRequireDefault(n),_interopRequireDefault(r(23615))),a=_interopRequireDefault(r(51230));_interopRequireDefault(r(91895));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var u=1073741823;function createEventEmitter(e){var t=[];return{on:function on(e){t.push(e)},off:function off(e){t=t.filter((function(t){return t!==e}))},get:function get(){return e},set:function set(r,n){e=r,t.forEach((function(t){return t(e,n)}))}}}t.default=function createReactContext(e,t){var r,i,l="__create-react-context-"+(0,a.default)()+"__",s=function(e){function Provider(){var t,r;_classCallCheck(this,Provider);for(var n=arguments.length,o=Array(n),a=0;a<n;a++)o[a]=arguments[a];return t=r=_possibleConstructorReturn(this,e.call.apply(e,[this].concat(o))),r.emitter=createEventEmitter(r.props.value),_possibleConstructorReturn(r,t)}return _inherits(Provider,e),Provider.prototype.getChildContext=function getChildContext(){var e;return(e={})[l]=this.emitter,e},Provider.prototype.componentWillReceiveProps=function componentWillReceiveProps(e){if(this.props.value!==e.value){var r=this.props.value,n=e.value,o=void 0;!function objectIs(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}(r,n)?(o="function"==typeof t?t(r,n):u,0!==(o|=0)&&this.emitter.set(e.value,o)):o=0}},Provider.prototype.render=function render(){return this.props.children},Provider}(n.Component);s.childContextTypes=((r={})[l]=o.default.object.isRequired,r);var c=function(t){function Consumer(){var e,r;_classCallCheck(this,Consumer);for(var n=arguments.length,o=Array(n),a=0;a<n;a++)o[a]=arguments[a];return e=r=_possibleConstructorReturn(this,t.call.apply(t,[this].concat(o))),r.state={value:r.getValue()},r.onUpdate=function(e,t){0!=((0|r.observedBits)&t)&&r.setState({value:r.getValue()})},_possibleConstructorReturn(r,e)}return _inherits(Consumer,t),Consumer.prototype.componentWillReceiveProps=function componentWillReceiveProps(e){var t=e.observedBits;this.observedBits=null==t?u:t},Consumer.prototype.componentDidMount=function componentDidMount(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?u:e},Consumer.prototype.componentWillUnmount=function componentWillUnmount(){this.context[l]&&this.context[l].off(this.onUpdate)},Consumer.prototype.getValue=function getValue(){return this.context[l]?this.context[l].get():e},Consumer.prototype.render=function render(){return function onlyChild(e){return Array.isArray(e)?e[0]:e}(this.props.children)(this.state.value)},Consumer}(n.Component);return c.contextTypes=((i={})[l]=o.default.object,i),{Provider:s,Consumer:c}},e.exports=t.default},68189:(e,t,r)=>{"use strict";t.__esModule=!0;var n=_interopRequireDefault(r(63804)),o=_interopRequireDefault(r(24457));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}t.default=n.default.createContext||o.default,e.exports=t.default},51230:(e,t,r)=>{"use strict";var n="__global_unique_id__";e.exports=function(){return r.g[n]=(r.g[n]||0)+1}},3996:e=>{"use strict";e.exports=function(e,t,r,n,o,a,u,i){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[r,n,o,a,u,i],c=0;(l=new Error(t.replace(/%s/g,(function(){return s[c++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},58772:(e,t,r)=>{"use strict";var n=r(90331);function emptyFunction(){}function emptyFunctionWithReset(){}emptyFunctionWithReset.resetWarningCache=emptyFunction,e.exports=function(){function shim(e,t,r,o,a,u){if(u!==n){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function getShim(){return shim}shim.isRequired=shim;var e={array:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,elementType:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim,checkPropTypes:emptyFunctionWithReset,resetWarningCache:emptyFunction};return e.PropTypes=e,e}},23615:(e,t,r)=>{e.exports=r(58772)()},90331:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},22634:(e,t,r)=>{"use strict";function getHashPath(){const e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}r.r(t),r.d(t,{createHashSource:()=>createHashSource});let createHashSource=(e="/")=>({get location(){return{pathname:getHashPath(),search:""}},addEventListener(e,t){"popstate"===e&&window.addEventListener("hashchange",t)},removeEventListener(e,t){"popstate"===e&&window.addEventListener("hashchange",t)},history:{get entries(){return[{pathname:getHashPath(),search:""}]},get index(){return 0},get state(){},pushState(e,t,r){!function pushHashPath(e){window.location.hash="#"+e}(r)},replaceState(e,t,r){!function replaceHashPath(e){const t=window.location.href.indexOf("#");window.location.replace(window.location.href.slice(0,t>=0?t:0)+"#"+e)}(r)}}})},91895:e=>{"use strict";var warning=function(){};e.exports=warning},63804:e=>{"use strict";e.exports=React},18194:e=>{"use strict";e.exports=wp.i18n}},a={};function __webpack_require__(e){var t=a[e];if(void 0!==t)return t.exports;var r=a[e]={exports:{}};return o[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.m=o,__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,__webpack_require__.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if("object"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&"function"==typeof r.then)return r}var o=Object.create(null);__webpack_require__.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var u=2&n&&r;"object"==typeof u&&!~e.indexOf(u);u=t(u))Object.getOwnPropertyNames(u).forEach((e=>a[e]=()=>r[e]));return a.default=()=>r,__webpack_require__.d(o,a),o},__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce(((t,r)=>(__webpack_require__.f[r](e,t),t)),[])),__webpack_require__.u=e=>{if(972===e)return"jszip.vendor.9ec53381c344ee903f3e.bundle.min.js"},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},n="elementor-pro:",__webpack_require__.l=(e,t,o,a)=>{if(r[e])r[e].push(t);else{var u,i;if(void 0!==o)for(var l=document.getElementsByTagName("script"),s=0;s<l.length;s++){var c=l[s];if(c.getAttribute("src")==e||c.getAttribute("data-webpack")==n+o){u=c;break}}u||(i=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,__webpack_require__.nc&&u.setAttribute("nonce",__webpack_require__.nc),u.setAttribute("data-webpack",n+o),u.src=e),r[e]=[t];var onScriptComplete=(t,n)=>{u.onerror=u.onload=null,clearTimeout(f);var o=r[e];if(delete r[e],u.parentNode&&u.parentNode.removeChild(u),o&&o.forEach((e=>e(n))),t)return t(n)},f=setTimeout(onScriptComplete.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=onScriptComplete.bind(null,u.onerror),u.onload=onScriptComplete.bind(null,u.onload),i&&document.head.appendChild(u)}},__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;__webpack_require__.g.importScripts&&(e=__webpack_require__.g.location+"");var t=__webpack_require__.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");r.length&&(e=r[r.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),__webpack_require__.p=e})(),(()=>{var e={294:0};__webpack_require__.f.j=(t,r)=>{var n=__webpack_require__.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,o)=>n=e[t]=[r,o]));r.push(n[2]=o);var a=__webpack_require__.p+__webpack_require__.u(t),u=new Error;__webpack_require__.l(a,(r=>{if(__webpack_require__.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;u.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",u.name="ChunkLoadError",u.type=o,u.request=a,n[1](u)}}),"chunk-"+t,t)}};var webpackJsonpCallback=(t,r)=>{var n,o,[a,u,i]=r,l=0;for(n in u)__webpack_require__.o(u,n)&&(__webpack_require__.m[n]=u[n]);if(i)i(__webpack_require__);for(t&&t(r);l<a.length;l++)o=a[l],__webpack_require__.o(e,o)&&e[o]&&e[o][0](),e[a[l]]=0},t=self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[];t.forEach(webpackJsonpCallback.bind(null,0)),t.push=webpackJsonpCallback.bind(null,t.push.bind(t))})(),(()=>{"use strict";var e=__webpack_require__(67971),t=e(__webpack_require__(63804)),r=e(__webpack_require__(46042)),n=e(__webpack_require__(43023)),o=e(__webpack_require__(33407));$e.components.register(new r.default),$e.components.register(new n.default);var a=elementorCommon.config.isDebug?t.default.StrictMode:t.default.Fragment;ReactDOM.render(t.default.createElement(a,null,t.default.createElement(o.default,null)),document.getElementById("e-form-submissions"))})()})();assets/js/form.23168c11e0d20fa0282b.bundle.js000064400000101750150755004310013746 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["form"],{

/***/ "../modules/forms/assets/js/frontend/handlers/fields/data-time-field-base.js":
/*!***********************************************************************************!*\
  !*** ../modules/forms/assets/js/frontend/handlers/fields/data-time-field-base.js ***!
  \***********************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class DataTimeFieldBase extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        fields: this.getFieldsSelector()
      },
      classes: {
        useNative: 'elementor-use-native'
      }
    };
  }

  getDefaultElements() {
    const {
      selectors
    } = this.getDefaultSettings();
    return {
      $fields: this.$element.find(selectors.fields)
    };
  }

  addPicker(element) {
    const {
      classes
    } = this.getDefaultSettings(),
          $element = jQuery(element);

    if ($element.hasClass(classes.useNative)) {
      return;
    }

    element.flatpickr(this.getPickerOptions(element));
  }

  onInit(...args) {
    super.onInit(...args);
    this.elements.$fields.each((index, element) => this.addPicker(element));
  }

}

exports.default = DataTimeFieldBase;

/***/ }),

/***/ "../modules/forms/assets/js/frontend/handlers/fields/date.js":
/*!*******************************************************************!*\
  !*** ../modules/forms/assets/js/frontend/handlers/fields/date.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _dataTimeFieldBase = _interopRequireDefault(__webpack_require__(/*! ./data-time-field-base */ "../modules/forms/assets/js/frontend/handlers/fields/data-time-field-base.js"));

class DateField extends _dataTimeFieldBase.default {
  getFieldsSelector() {
    return '.elementor-date-field';
  }

  getPickerOptions(element) {
    const $element = jQuery(element);
    return {
      minDate: $element.attr('min') || null,
      maxDate: $element.attr('max') || null,
      allowInput: true
    };
  }

}

exports.default = DateField;

/***/ }),

/***/ "../modules/forms/assets/js/frontend/handlers/fields/time.js":
/*!*******************************************************************!*\
  !*** ../modules/forms/assets/js/frontend/handlers/fields/time.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _dataTimeFieldBase = _interopRequireDefault(__webpack_require__(/*! ./data-time-field-base */ "../modules/forms/assets/js/frontend/handlers/fields/data-time-field-base.js"));

class TimeField extends _dataTimeFieldBase.default {
  getFieldsSelector() {
    return '.elementor-time-field';
  }

  getPickerOptions() {
    return {
      noCalendar: true,
      enableTime: true,
      allowInput: true
    };
  }

}

exports.default = TimeField;

/***/ }),

/***/ "../modules/forms/assets/js/frontend/handlers/form-redirect.js":
/*!*********************************************************************!*\
  !*** ../modules/forms/assets/js/frontend/handlers/form-redirect.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  getDefaultSettings() {
    return {
      selectors: {
        form: '.elementor-form'
      }
    };
  },

  getDefaultElements() {
    var selectors = this.getSettings('selectors'),
        elements = {};
    elements.$form = this.$element.find(selectors.form);
    return elements;
  },

  bindEvents() {
    this.elements.$form.on('form_destruct', this.handleSubmit);
  },

  handleSubmit(event, response) {
    if ('undefined' !== typeof response.data.redirect_url) {
      location.href = response.data.redirect_url;
    }
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/forms/assets/js/frontend/handlers/form-sender.js":
/*!*******************************************************************!*\
  !*** ../modules/forms/assets/js/frontend/handlers/form-sender.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  getDefaultSettings() {
    return {
      selectors: {
        form: '.elementor-form',
        submitButton: '[type="submit"]'
      },
      action: 'elementor_pro_forms_send_form',
      ajaxUrl: elementorProFrontend.config.ajaxurl
    };
  },

  getDefaultElements() {
    const selectors = this.getSettings('selectors'),
          elements = {};
    elements.$form = this.$element.find(selectors.form);
    elements.$submitButton = elements.$form.find(selectors.submitButton);
    return elements;
  },

  bindEvents() {
    this.elements.$form.on('submit', this.handleSubmit);
    const $fileInput = this.elements.$form.find('input[type=file]');

    if ($fileInput.length) {
      $fileInput.on('change', this.validateFileSize);
    }
  },

  validateFileSize(event) {
    const $field = jQuery(event.currentTarget),
          files = $field[0].files;

    if (!files.length) {
      return;
    }

    const maxSize = parseInt($field.attr('data-maxsize')) * 1024 * 1024,
          maxSizeMessage = $field.attr('data-maxsize-message');
    const filesArray = Array.prototype.slice.call(files);
    filesArray.forEach(file => {
      if (maxSize < file.size) {
        $field.parent().addClass('elementor-error').append('<span class="elementor-message elementor-message-danger elementor-help-inline elementor-form-help-inline" role="alert">' + maxSizeMessage + '</span>').find(':input').attr('aria-invalid', 'true');
        this.elements.$form.trigger('error');
      }
    });
  },

  beforeSend() {
    const $form = this.elements.$form;
    $form.animate({
      opacity: '0.45'
    }, 500).addClass('elementor-form-waiting');
    $form.find('.elementor-message').remove();
    $form.find('.elementor-error').removeClass('elementor-error');
    $form.find('div.elementor-field-group').removeClass('error').find('span.elementor-form-help-inline').remove().end().find(':input').attr('aria-invalid', 'false');
    this.elements.$submitButton.attr('disabled', 'disabled').find('> span').prepend('<span class="elementor-button-text elementor-form-spinner"><i class="fa fa-spinner fa-spin"></i>&nbsp;</span>');
  },

  getFormData() {
    const formData = new FormData(this.elements.$form[0]);
    formData.append('action', this.getSettings('action'));
    formData.append('referrer', location.toString());
    return formData;
  },

  onSuccess(response) {
    const $form = this.elements.$form;
    this.elements.$submitButton.removeAttr('disabled').find('.elementor-form-spinner').remove();
    $form.animate({
      opacity: '1'
    }, 100).removeClass('elementor-form-waiting');

    if (!response.success) {
      if (response.data.errors) {
        jQuery.each(response.data.errors, function (key, title) {
          $form.find('#form-field-' + key).parent().addClass('elementor-error').append('<span class="elementor-message elementor-message-danger elementor-help-inline elementor-form-help-inline" role="alert">' + title + '</span>').find(':input').attr('aria-invalid', 'true');
        });
        $form.trigger('error');
      }

      $form.append('<div class="elementor-message elementor-message-danger" role="alert">' + response.data.message + '</div>');
    } else {
      $form.trigger('submit_success', response.data); // For actions like redirect page

      $form.trigger('form_destruct', response.data);
      $form.trigger('reset');

      if ('undefined' !== typeof response.data.message && '' !== response.data.message) {
        $form.append('<div class="elementor-message elementor-message-success" role="alert">' + response.data.message + '</div>');
      }
    }
  },

  onError(xhr, desc) {
    const $form = this.elements.$form;
    $form.append('<div class="elementor-message elementor-message-danger" role="alert">' + desc + '</div>');
    this.elements.$submitButton.html(this.elements.$submitButton.text()).removeAttr('disabled');
    $form.animate({
      opacity: '1'
    }, 100).removeClass('elementor-form-waiting');
    $form.trigger('error');
  },

  handleSubmit(event) {
    const self = this,
          $form = this.elements.$form;
    event.preventDefault();

    if ($form.hasClass('elementor-form-waiting')) {
      return false;
    }

    this.beforeSend();
    jQuery.ajax({
      url: self.getSettings('ajaxUrl'),
      type: 'POST',
      dataType: 'json',
      data: self.getFormData(),
      processData: false,
      contentType: false,
      success: self.onSuccess,
      error: self.onError
    });
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/forms/assets/js/frontend/handlers/form-steps.js":
/*!******************************************************************!*\
  !*** ../modules/forms/assets/js/frontend/handlers/form-steps.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class FormSteps extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        form: '.elementor-form',
        fieldsWrapper: '.elementor-form-fields-wrapper',
        fieldGroup: '.elementor-field-group',
        stepWrapper: '.elementor-field-type-step',
        stepField: '.e-field-step',
        submitWrapper: '.elementor-field-type-submit',
        submitButton: '[type="submit"]',
        buttons: '.e-form__buttons',
        buttonWrapper: '.e-form__buttons__wrapper',
        button: '.e-form__buttons__wrapper__button',
        indicator: '.e-form__indicators__indicator',
        indicatorProgress: '.e-form__indicators__indicator__progress',
        indicatorProgressMeter: '.e-form__indicators__indicator__progress__meter',
        formHelpInline: '.elementor-form-help-inline'
      },
      classes: {
        hidden: 'elementor-hidden',
        column: 'elementor-column',
        fieldGroup: 'elementor-field-group',
        elementorButton: 'elementor-button',
        step: 'e-form__step',
        buttons: 'e-form__buttons',
        buttonWrapper: 'e-form__buttons__wrapper',
        button: 'e-form__buttons__wrapper__button',
        indicators: 'e-form__indicators',
        indicator: 'e-form__indicators__indicator',
        indicatorIcon: 'e-form__indicators__indicator__icon',
        indicatorNumber: 'e-form__indicators__indicator__number',
        indicatorLabel: 'e-form__indicators__indicator__label',
        indicatorProgress: 'e-form__indicators__indicator__progress',
        indicatorProgressMeter: 'e-form__indicators__indicator__progress__meter',
        indicatorSeparator: 'e-form__indicators__indicator__separator',
        indicatorInactive: 'e-form__indicators__indicator--state-inactive',
        indicatorActive: 'e-form__indicators__indicator--state-active',
        indicatorCompleted: 'e-form__indicators__indicator--state-completed',
        indicatorShapeCircle: 'e-form__indicators__indicator--shape-circle',
        indicatorShapeSquare: 'e-form__indicators__indicator--shape-square',
        indicatorShapeRounded: 'e-form__indicators__indicator--shape-rounded',
        indicatorShapeNone: 'e-form__indicators__indicator--shape-none'
      }
    };
  }

  getDefaultElements() {
    const {
      selectors
    } = this.getSettings(),
          elements = {
      $form: this.$element.find(selectors.form)
    };
    elements.$fieldsWrapper = elements.$form.children(selectors.fieldsWrapper);
    elements.$stepWrapper = elements.$fieldsWrapper.children(selectors.stepWrapper);
    elements.$stepField = elements.$stepWrapper.children(selectors.stepField);
    elements.$fieldGroup = elements.$fieldsWrapper.children(selectors.fieldGroup);
    elements.$submitWrapper = elements.$fieldsWrapper.children(selectors.submitWrapper);
    elements.$submitButton = elements.$submitWrapper.children(selectors.submitButton);
    return elements;
  }

  onInit(...args) {
    super.onInit(...args);

    if (!this.isStepsExist()) {
      return;
    }

    this.data = {
      steps: [],
      indicatorsWithObjectTags: []
    };
    this.state = {
      currentStep: 0,
      stepsType: '',
      stepsShape: ''
    };
    this.buildSteps();
    this.elements = { ...this.elements,
      ...this.createStepsIndicators(),
      ...this.createStepsButtons()
    };
    this.initProgressBar();
    this.extractResponsiveSizeFromSubmitWrapper();
  }

  bindEvents() {
    if (!this.isStepsExist()) {
      return;
    }

    this.elements.$form.on({
      submit: () => this.resetForm(),
      keydown: e => {
        if (13 === e.keyCode && !this.isLastStep() && 'textarea' !== e.target.localName) {
          e.preventDefault();
          this.applyStep('next');
        }
      },
      error: () => this.onFormError()
    });
  }

  isStepsExist() {
    return this.elements.$stepWrapper.length;
  }

  initProgressBar() {
    const stepsSettings = this.getElementSettings();

    if ('progress_bar' === stepsSettings.step_type) {
      this.setProgressBar();
    }
  }

  buildSteps() {
    this.elements.$stepWrapper.each((index, el) => {
      const {
        selectors,
        classes
      } = this.getSettings(),
            $currentStep = jQuery(el);
      $currentStep.addClass(classes.step).removeClass(classes.fieldGroup, classes.column);

      if (index) {
        $currentStep.addClass(classes.hidden);
      }

      this.setStepData($currentStep.children(selectors.stepField));
      $currentStep.append($currentStep.nextUntil(this.elements.$stepWrapper).not(this.elements.$submitWrapper));
    });
  }

  setStepData($stepElement) {
    const dataAttributes = ['label', 'previousButton', 'nextButton', 'iconUrl', 'iconLibrary', 'icon'],
          stepData = {};
    dataAttributes.forEach(attr => {
      const attrValue = $stepElement.attr('data-' + attr);

      if (attrValue) {
        stepData[attr] = attrValue;
      }
    });
    this.data.steps.push(stepData);
  }

  createStepsIndicators() {
    const stepsSettings = this.getElementSettings(),
          stepsElements = {};

    if ('none' !== stepsSettings.step_type) {
      const {
        selectors,
        classes
      } = this.getSettings(),
            indicatorsTypeClass = classes.indicators + '--type-' + stepsSettings.step_type,
            indicatorsClasses = [classes.indicators, indicatorsTypeClass];
      stepsElements.$indicatorsWrapper = jQuery('<div>', {
        class: indicatorsClasses.join(' ')
      });
      stepsElements.$indicatorsWrapper.append(this.buildIndicators());
      this.elements.$fieldsWrapper.before(stepsElements.$indicatorsWrapper);

      if ('progress_bar' === stepsSettings.step_type) {
        stepsElements.$progressBar = stepsElements.$indicatorsWrapper.find(selectors.indicatorProgress);
        stepsElements.$progressBarMeter = stepsElements.$indicatorsWrapper.find(selectors.indicatorProgressMeter);
      } else {
        stepsElements.$indicators = stepsElements.$indicatorsWrapper.find(selectors.indicator);
        stepsElements.$currentIndicator = stepsElements.$indicators.eq(this.state.currentStep);
      }
    }

    this.saveIndicatorsState();
    return stepsElements;
  }

  buildIndicators() {
    const stepsSettings = this.getElementSettings();
    return 'progress_bar' === stepsSettings.step_type ? this.buildProgressBar() : this.buildIndicatorsFromStepsData();
  }

  buildProgressBar() {
    const {
      classes
    } = this.getSettings(),
          $progressBar = jQuery('<div>', {
      class: classes.indicatorProgress
    }),
          $progressBarMeter = jQuery('<div>', {
      class: classes.indicatorProgressMeter
    });
    $progressBar.append($progressBarMeter);
    return $progressBar;
  }

  getProgressBarValue() {
    const totalSteps = this.data.steps.length,
          currentStep = this.state.currentStep,
          percentage = currentStep ? (currentStep + 1) / totalSteps * 100 : 100 / totalSteps;
    return Math.floor(percentage) + '%';
  }

  setProgressBar() {
    const progressBarValue = this.getProgressBarValue();
    this.updateProgressMeterCSSVariable(progressBarValue);
    this.elements.$progressBarMeter.text(progressBarValue);
  }

  updateProgressMeterCSSVariable(value) {
    this.$element[0].style.setProperty('--e-form-steps-indicator-progress-meter-width', value);
  }

  saveIndicatorsState() {
    const stepsSettings = this.getElementSettings();
    this.state.stepsType = stepsSettings.step_type;

    if (!['none', 'text', 'progress_bar'].includes(stepsSettings.step_type)) {
      this.state.stepsShape = stepsSettings.step_icon_shape;
    }
  }

  buildIndicatorsFromStepsData() {
    const indicators = [];
    this.data.steps.forEach((stepObj, index) => {
      if (index) {
        indicators.push(this.getStepSeparator());
      }

      indicators.push(this.getStepIndicatorElement(stepObj, index));
    });
    return indicators;
  }

  getStepIndicatorElement(stepObj, index) {
    const {
      classes
    } = this.getSettings(),
          stepsSettings = this.getElementSettings(),
          indicatorStateClass = this.getIndicatorStateClass(index),
          indicatorClasses = [classes.indicator, indicatorStateClass],
          $stepIndicator = jQuery('<div>', {
      class: indicatorClasses.join(' ')
    });

    if (stepsSettings.step_type.includes('icon')) {
      $stepIndicator.append(this.getStepIconElement(stepObj));
    }

    if (stepsSettings.step_type.includes('number')) {
      $stepIndicator.append(this.getStepNumberElement(index));
    }

    if (stepsSettings.step_type.includes('text')) {
      $stepIndicator.append(this.getStepLabelElement(stepObj.label));
    }

    return $stepIndicator;
  }

  getIndicatorStateClass(index) {
    const {
      classes
    } = this.getSettings();

    if (index < this.state.currentStep) {
      return classes.indicatorCompleted;
    } else if (index > this.state.currentStep) {
      return classes.indicatorInactive;
    }

    return classes.indicatorActive;
  }

  getIndicatorShapeClass() {
    const stepsSettings = this.getElementSettings(),
          {
      classes
    } = this.getSettings();
    return classes['indicatorShape' + this.firstLetterToUppercase(stepsSettings.step_icon_shape)];
  }

  firstLetterToUppercase(str) {
    return str.charAt(0).toUpperCase() + str.slice(1);
  }

  getStepNumberElement(index) {
    const {
      classes
    } = this.getSettings(),
          numberClasses = [classes.indicatorNumber, this.getIndicatorShapeClass()];
    return jQuery('<div>', {
      class: numberClasses.join(' '),
      text: index + 1
    });
  }

  getStepIconElement(stepObj) {
    const {
      classes
    } = this.getSettings(),
          iconClasses = [classes.indicatorIcon, this.getIndicatorShapeClass()],
          $icon = jQuery('<div>', {
      class: iconClasses.join(' ')
    });

    if (stepObj.icon) {
      $icon.html(stepObj.icon);
    } else {
      let $iconElement;

      if (stepObj.iconLibrary) {
        $iconElement = jQuery('<i>', {
          class: stepObj.iconLibrary
        });
      } else {
        // Using the attributes inline when creating the object, otherwise the data attribute will not work.
        $iconElement = jQuery(`<object type="image/svg+xml" data="${stepObj.iconUrl}"></object>`); // Updating an indicator svg fill color, when loaded inside an object tag with a separated scope.

        $iconElement.on('load', event => {
          event.target.contentDocument.querySelector('svg').style.fill = $iconElement.css('fill');
        }); // Storing the indicators elements that contain object tags in order to change their fill color on steps change.

        this.data.indicatorsWithObjectTags.push($iconElement);
      }

      $icon.append($iconElement);
    }

    return $icon;
  }

  getStepLabelElement(label) {
    const {
      classes
    } = this.getSettings();
    return jQuery('<label>', {
      class: classes.indicatorLabel,
      text: label
    });
  }

  getStepSeparator() {
    const {
      classes
    } = this.getSettings();
    return jQuery('<div>', {
      class: classes.indicatorSeparator
    });
  }

  createStepsButtons() {
    const {
      selectors
    } = this.getSettings(),
          stepsElements = {};
    this.injectButtonsToSteps(stepsElements);
    stepsElements.$buttonsContainer = this.elements.$stepWrapper.find(selectors.buttons);
    stepsElements.$buttonsWrappers = stepsElements.$buttonsContainer.children(selectors.buttonWrapper);
    return stepsElements;
  }

  injectButtonsToSteps() {
    const totalSteps = this.elements.$stepWrapper.length;
    this.elements.$stepWrapper.each((index, el) => {
      const $el = jQuery(el),
            $container = this.getButtonsContainer();
      let $nextButton;

      if (index) {
        $container.append(this.getStepButton('previous', index));
        $nextButton = index === totalSteps - 1 ? this.getSubmitButton() : this.getStepButton('next', index);
      } else {
        $nextButton = this.getStepButton('next', index);
      }

      $container.append($nextButton);
      $el.append($container);
    });
  }

  getButtonsContainer() {
    const {
      classes
    } = this.getSettings(),
          stepsSettings = this.getElementSettings(),
          buttonColumnWidthClasses = [classes.buttons, classes.column, 'elementor-col-' + stepsSettings.button_width];
    return jQuery('<div>', {
      class: buttonColumnWidthClasses.join(' ')
    });
  }

  extractResponsiveSizeFromSubmitWrapper() {
    let sizeClasses = [];
    this.elements.$submitWrapper.removeClass((index, className) => {
      var _className$match;

      sizeClasses = (_className$match = className.match(/elementor-(sm|md)-[0-9]+/g)) === null || _className$match === void 0 ? void 0 : _className$match.join(' ');
      return sizeClasses;
    });
    this.elements.$buttonsContainer.addClass(sizeClasses);
  }

  getStepButton(buttonType, index) {
    const {
      classes
    } = this.getSettings(),
          $button = this.getButton(buttonType, index).on('click', () => this.applyStep(buttonType)),
          buttonWrapperClasses = [classes.fieldGroup, classes.buttonWrapper, 'elementor-field-type-' + buttonType];
    return jQuery('<div>', {
      class: buttonWrapperClasses.join(' ')
    }).append($button);
  }

  getSubmitButton() {
    const {
      classes
    } = this.getSettings();
    this.elements.$submitButton.addClass(classes.button); // TODO: When a solution for the conditions will be found, check if can remove the elementor-col-x manipulation.

    return this.elements.$submitWrapper.attr('class', (index, className) => {
      return this.replaceClassNameColSize(className, '');
    }).removeClass(classes.column).removeClass(classes.buttons).addClass(classes.buttonWrapper);
  }

  replaceClassNameColSize(className, value) {
    return className.replace(/elementor-col-([0-9]+)/g, value);
  }

  getButton(buttonType, index) {
    const {
      classes
    } = this.getSettings(),
          submitSizeClass = this.elements.$submitButton.attr('class').match(/elementor-size-([^\W\d]+)/g),
          buttonClasses = [classes.elementorButton, submitSizeClass, classes.button, classes.button + '-' + buttonType];
    return jQuery('<button>', {
      type: 'button',
      text: this.getButtonLabel(buttonType, index),
      class: buttonClasses.join(' ')
    });
  }

  getButtonLabel(buttonType, index) {
    const stepsSettings = this.getElementSettings(),
          stepData = this.data.steps[index],
          buttonName = buttonType + 'Button',
          buttonSettingsProp = `step_${buttonType}_label`;
    return stepData[buttonName] || stepsSettings[buttonSettingsProp];
  }

  applyStep(direction) {
    const nextIndex = 'next' === direction ? this.state.currentStep + 1 : this.state.currentStep - 1;

    if ('next' === direction && !this.isFieldsValid(this.elements.$stepWrapper)) {
      return false;
    }

    this.goToStep(nextIndex);
    this.state.currentStep = nextIndex;

    if ('progress_bar' === this.state.stepsType) {
      this.setProgressBar();
    } else if ('none' !== this.state.stepsType) {
      this.updateIndicatorsState(direction);
    }
  }

  goToStep(index) {
    const {
      classes
    } = this.getSettings();
    this.elements.$stepWrapper.eq(this.state.currentStep).addClass(classes.hidden);
    this.elements.$stepWrapper.eq(index).removeClass(classes.hidden).children(this.getSettings('selectors.fieldGroup')).first().find(':input').first().trigger('focus');
  }

  isFieldsValid($stepWrapper) {
    let isValid = true;
    $stepWrapper.eq(this.state.currentStep).find('.elementor-field-group :input').each((index, el) => {
      if (!el.checkValidity()) {
        el.reportValidity();
        return isValid = false;
      }
    });
    return isValid;
  }

  isLastStep() {
    return this.state.currentStep === this.data.steps.length - 1;
  }

  resetForm() {
    this.state.currentStep = 0;
    this.resetSteps();

    if ('progress_bar' === this.state.stepsType) {
      this.setProgressBar();
    } else if ('none' !== this.state.stepsType) {
      this.elements.$currentIndicator = this.elements.$indicators.eq(this.state.currentStep);
      this.resetIndicators();
    }
  }

  resetSteps() {
    const {
      classes
    } = this.getSettings();
    this.elements.$stepWrapper.addClass(classes.hidden).eq(0).removeClass(classes.hidden);
  }

  resetIndicators() {
    const {
      classes
    } = this.getSettings(),
          stateTypes = ['inactive', 'active', 'completed'],
          stateClasses = stateTypes.map(state => classes.indicator + '--state-' + state);
    this.elements.$indicators.removeClass(stateClasses.join(' ')).not(this.elements.$indicators.eq(0)).addClass(classes.indicatorInactive);
    this.elements.$indicators.eq(0).addClass(classes.indicatorActive);
  }

  updateIndicatorsState(direction) {
    const {
      classes
    } = this.getSettings(),
          indicatorsClasses = {
      current: {
        remove: classes.indicatorActive,
        add: 'next' === direction ? classes.indicatorCompleted : classes.indicatorInactive
      },
      next: {
        remove: 'next' === direction ? classes.indicatorInactive : classes.indicatorCompleted,
        add: classes.indicatorActive
      }
    };
    this.elements.$currentIndicator.removeClass(indicatorsClasses.current.remove).addClass(indicatorsClasses.current.add);
    this.elements.$currentIndicator = this.elements.$indicators.eq(this.state.currentStep);
    this.elements.$currentIndicator.removeClass(indicatorsClasses.next.remove).addClass(indicatorsClasses.next.add); // Updating an indicator svg fill color, if loaded inside an object tag.

    this.data.indicatorsWithObjectTags.forEach($element => {
      $element.contents().children('svg').css('fill', $element.css('fill'));
    });
  }

  updateValue(updatedValue) {
    const actionsMap = {
      step_type: () => this.updateStepsType(),
      step_icon_shape: () => this.updateStepsShape(),
      step_next_label: () => this.updateStepButtonsLabel('next'),
      step_previous_label: () => this.updateStepButtonsLabel('previous')
    };

    if (actionsMap[updatedValue]) {
      actionsMap[updatedValue]();
    }
  }

  updateStepsType() {
    const stepsSettings = this.getElementSettings();

    if (this.elements.$indicatorsWrapper) {
      this.elements.$indicatorsWrapper.remove();
    }

    if ('none' !== stepsSettings.step_type) {
      this.rebuildIndicators();
    }

    this.state.stepsType = stepsSettings.step_type;
  }

  rebuildIndicators() {
    this.elements = { ...this.elements,
      ...this.createStepsIndicators()
    };
    this.initProgressBar();
  }

  updateStepsShape() {
    const stepsSettings = this.getElementSettings(),
          {
      selectors,
      classes
    } = this.getSettings(),
          shapeClassStart = classes.indicator + '--shape-',
          currentShapeClass = shapeClassStart + this.state.stepsShape,
          newShapeClass = shapeClassStart + stepsSettings.step_icon_shape;
    let elementsTargetType = '';

    if (stepsSettings.step_type.includes('icon')) {
      elementsTargetType = 'icon';
    } else if (stepsSettings.step_type.includes('number')) {
      elementsTargetType = 'number';
    }

    this.elements.$indicators.children(selectors.indicator + '__' + elementsTargetType).removeClass(currentShapeClass).addClass(newShapeClass);
    this.state.stepsShape = stepsSettings.step_icon_shape;
  }

  updateStepButtonsLabel(buttonType) {
    const {
      selectors
    } = this.getSettings(),
          buttonSelector = {
      previous: selectors.button + '-previous',
      next: selectors.button + '-next'
    };
    this.elements.$stepWrapper.each((index, el) => {
      jQuery(el).find(buttonSelector[buttonType]).text(this.getButtonLabel(buttonType, index));
    });
  }

  onFormError() {
    const {
      selectors
    } = this.getSettings(),
          $errorStepElement = this.elements.$form.find(selectors.formHelpInline).closest(selectors.stepWrapper);

    if ($errorStepElement.length) {
      this.goToStep($errorStepElement.index());
    }
  }

  onElementChange(updatedValue) {
    if (!this.isStepsExist()) {
      return;
    }

    this.updateValue(updatedValue);
  }

}

exports.default = FormSteps;

/***/ }),

/***/ "../modules/forms/assets/js/frontend/handlers/recaptcha.js":
/*!*****************************************************************!*\
  !*** ../modules/forms/assets/js/frontend/handlers/recaptcha.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class Recaptcha extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        recaptcha: '.elementor-g-recaptcha:last',
        submit: 'button[type="submit"]',
        recaptchaResponse: '[name="g-recaptcha-response"]'
      }
    };
  }

  getDefaultElements() {
    const {
      selectors
    } = this.getDefaultSettings(),
          elements = {
      $recaptcha: this.$element.find(selectors.recaptcha)
    };
    elements.$form = elements.$recaptcha.parents('form');
    elements.$submit = elements.$form.find(selectors.submit);
    return elements;
  }

  bindEvents() {
    this.onRecaptchaApiReady();
  }

  isActive(settings) {
    const {
      selectors
    } = this.getDefaultSettings();
    return settings.$element.find(selectors.recaptcha).length;
  }

  addRecaptcha() {
    const settings = this.elements.$recaptcha.data(),
          isV2 = 'v3' !== settings.type,
          captchaIds = [];
    captchaIds.forEach(id => window.grecaptcha.reset(id));
    const widgetId = window.grecaptcha.render(this.elements.$recaptcha[0], settings);
    this.elements.$form.on('reset error', () => {
      window.grecaptcha.reset(widgetId);
    });

    if (isV2) {
      this.elements.$recaptcha.data('widgetId', widgetId);
    } else {
      captchaIds.push(widgetId);
      this.elements.$submit.on('click', e => this.onV3FormSubmit(e, widgetId));
    }
  }

  onV3FormSubmit(e, widgetId) {
    e.preventDefault();
    window.grecaptcha.ready(() => {
      const $form = this.elements.$form;
      grecaptcha.execute(widgetId, {
        action: this.elements.$recaptcha.data('action')
      }).then(token => {
        if (this.elements.$recaptchaResponse) {
          this.elements.$recaptchaResponse.val(token);
        } else {
          this.elements.$recaptchaResponse = jQuery('<input>', {
            type: 'hidden',
            value: token,
            name: 'g-recaptcha-response'
          });
          $form.append(this.elements.$recaptchaResponse);
        } // Support old browsers.


        const bcSupport = !$form[0].reportValidity || 'function' !== typeof $form[0].reportValidity;

        if (bcSupport || $form[0].reportValidity()) {
          $form.trigger('submit');
        }
      });
    });
  }

  onRecaptchaApiReady() {
    if (window.grecaptcha && window.grecaptcha.render) {
      this.addRecaptcha();
    } else {
      // If not ready check again by timeout..
      setTimeout(() => this.onRecaptchaApiReady(), 350);
    }
  }

}

exports.default = Recaptcha;

/***/ })

}]);
//# sourceMappingURL=form.23168c11e0d20fa0282b.bundle.js.mapassets/js/app.js000064400001765445150755004310007626 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "../core/app/modules/site-editor/assets/js/atoms/indicator-bullet.scss":
/*!*****************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/atoms/indicator-bullet.scss ***!
  \*****************************************************************************/
/***/ (() => {



/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/atoms/preview-iframe.scss":
/*!***************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/atoms/preview-iframe.scss ***!
  \***************************************************************************/
/***/ (() => {



/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/molecules/back-button.scss":
/*!****************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/molecules/back-button.scss ***!
  \****************************************************************************/
/***/ (() => {



/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/molecules/site-template.scss":
/*!******************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/molecules/site-template.scss ***!
  \******************************************************************************/
/***/ (() => {



/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/add-new.scss":
/*!********************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/add-new.scss ***!
  \********************************************************************/
/***/ (() => {



/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/conditions/conditions.scss":
/*!**********************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/conditions/conditions.scss ***!
  \**********************************************************************************/
/***/ (() => {



/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/template-type.scss":
/*!**************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/template-type.scss ***!
  \**************************************************************************/
/***/ (() => {



/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/site-editor.scss":
/*!******************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/site-editor.scss ***!
  \******************************************************************/
/***/ (() => {



/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js":
/*!********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/array/from.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/array/from */ "../node_modules/core-js/library/fn/array/from.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/array/is-array */ "../node_modules/core-js/library/fn/array/is-array.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/json/stringify */ "../node_modules/core-js/library/fn/json/stringify.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/assign.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/assign.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/assign */ "../node_modules/core-js/library/fn/object/assign.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/create.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/create.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/create */ "../node_modules/core-js/library/fn/object/create.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js":
/*!**********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js ***!
  \**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/define-properties */ "../node_modules/core-js/library/fn/object/define-properties.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js":
/*!********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/define-property */ "../node_modules/core-js/library/fn/object/define-property.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js":
/*!********************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js ***!
  \********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-own-property-descriptor */ "../node_modules/core-js/library/fn/object/get-own-property-descriptor.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js":
/*!*********************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js ***!
  \*********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-own-property-descriptors */ "../node_modules/core-js/library/fn/object/get-own-property-descriptors.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js":
/*!*****************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js ***!
  \*****************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-own-property-symbols */ "../node_modules/core-js/library/fn/object/get-own-property-symbols.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-prototype-of */ "../node_modules/core-js/library/fn/object/get-prototype-of.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/keys.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/keys */ "../node_modules/core-js/library/fn/object/keys.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/set-prototype-of */ "../node_modules/core-js/library/fn/object/set-prototype-of.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/values.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/values */ "../node_modules/core-js/library/fn/object/values.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/parse-int.js":
/*!*******************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/parse-int.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/parse-int */ "../node_modules/core-js/library/fn/parse-int.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/promise.js":
/*!*****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/promise.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/promise */ "../node_modules/core-js/library/fn/promise.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/reflect/construct */ "../node_modules/core-js/library/fn/reflect/construct.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js":
/*!****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/symbol.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/symbol */ "../node_modules/core-js/library/fn/symbol/index.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js ***!
  \*************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/symbol/iterator */ "../node_modules/core-js/library/fn/symbol/iterator.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/weak-map.js":
/*!******************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/weak-map.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/weak-map */ "../node_modules/core-js/library/fn/weak-map.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js":
/*!**************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js ***!
  \**************************************************************************/
/***/ ((module) => {

function _arrayLikeToArray(arr, len) {
  if (len == null || len > arr.length) len = arr.length;

  for (var i = 0, arr2 = new Array(len); i < len; i++) {
    arr2[i] = arr[i];
  }

  return arr2;
}

module.exports = _arrayLikeToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Array$isArray = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/is-array */ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js");

function _arrayWithHoles(arr) {
  if (_Array$isArray(arr)) return arr;
}

module.exports = _arrayWithHoles;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Array$isArray = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/is-array */ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js");

var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js");

function _arrayWithoutHoles(arr) {
  if (_Array$isArray(arr)) return arrayLikeToArray(arr);
}

module.exports = _arrayWithoutHoles;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js ***!
  \*******************************************************************************/
/***/ ((module) => {

function _assertThisInitialized(self) {
  if (self === void 0) {
    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  }

  return self;
}

module.exports = _assertThisInitialized;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js ***!
  \************************************************************************/
/***/ ((module) => {

function _classCallCheck(instance, Constructor) {
  if (!(instance instanceof Constructor)) {
    throw new TypeError("Cannot call a class as a function");
  }
}

module.exports = _classCallCheck;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/createClass.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

function _defineProperties(target, props) {
  for (var i = 0; i < props.length; i++) {
    var descriptor = props[i];
    descriptor.enumerable = descriptor.enumerable || false;
    descriptor.configurable = true;
    if ("value" in descriptor) descriptor.writable = true;

    _Object$defineProperty(target, descriptor.key, descriptor);
  }
}

function _createClass(Constructor, protoProps, staticProps) {
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
  if (staticProps) _defineProperties(Constructor, staticProps);
  return Constructor;
}

module.exports = _createClass;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/createSuper.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/construct */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js");

var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js");

var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ "../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js");

var possibleConstructorReturn = __webpack_require__(/*! ./possibleConstructorReturn.js */ "../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js");

function _createSuper(Derived) {
  var hasNativeReflectConstruct = isNativeReflectConstruct();
  return function _createSuperInternal() {
    var Super = getPrototypeOf(Derived),
        result;

    if (hasNativeReflectConstruct) {
      var NewTarget = getPrototypeOf(this).constructor;
      result = _Reflect$construct(Super, arguments, NewTarget);
    } else {
      result = Super.apply(this, arguments);
    }

    return possibleConstructorReturn(this, result);
  };
}

module.exports = _createSuper;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

function _defineProperty(obj, key, value) {
  if (key in obj) {
    _Object$defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
  } else {
    obj[key] = value;
  }

  return obj;
}

module.exports = _defineProperty;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/extends.js":
/*!*****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/extends.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$assign = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/assign */ "../node_modules/@babel/runtime-corejs2/core-js/object/assign.js");

function _extends() {
  module.exports = _extends = _Object$assign || function (target) {
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i];

      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }

    return target;
  };

  module.exports.default = module.exports, module.exports.__esModule = true;
  return _extends.apply(this, arguments);
}

module.exports = _extends;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/set-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js");

var _Object$getPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js");

function _getPrototypeOf(o) {
  module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {
    return o.__proto__ || _Object$getPrototypeOf(o);
  };
  module.exports.default = module.exports, module.exports.__esModule = true;
  return _getPrototypeOf(o);
}

module.exports = _getPrototypeOf;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js":
/*!******************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/inherits.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$create = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/create */ "../node_modules/@babel/runtime-corejs2/core-js/object/create.js");

var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js");

function _inherits(subClass, superClass) {
  if (typeof superClass !== "function" && superClass !== null) {
    throw new TypeError("Super expression must either be null or a function");
  }

  subClass.prototype = _Object$create(superClass && superClass.prototype, {
    constructor: {
      value: subClass,
      writable: true,
      configurable: true
    }
  });
  if (superClass) setPrototypeOf(subClass, superClass);
}

module.exports = _inherits;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js ***!
  \*******************************************************************************/
/***/ ((module) => {

function _interopRequireDefault(obj) {
  return obj && obj.__esModule ? obj : {
    "default": obj
  };
}

module.exports = _interopRequireDefault;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js":
/*!********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _typeof = __webpack_require__(/*! @babel/runtime-corejs2/helpers/typeof */ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js").default;

var _WeakMap = __webpack_require__(/*! @babel/runtime-corejs2/core-js/weak-map */ "../node_modules/@babel/runtime-corejs2/core-js/weak-map.js");

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-descriptor */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js");

function _getRequireWildcardCache(nodeInterop) {
  if (typeof _WeakMap !== "function") return null;
  var cacheBabelInterop = new _WeakMap();
  var cacheNodeInterop = new _WeakMap();
  return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
    return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
  })(nodeInterop);
}

function _interopRequireWildcard(obj, nodeInterop) {
  if (!nodeInterop && obj && obj.__esModule) {
    return obj;
  }

  if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") {
    return {
      "default": obj
    };
  }

  var cache = _getRequireWildcardCache(nodeInterop);

  if (cache && cache.has(obj)) {
    return cache.get(obj);
  }

  var newObj = {};
  var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor;

  for (var key in obj) {
    if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
      var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null;

      if (desc && (desc.get || desc.set)) {
        _Object$defineProperty(newObj, key, desc);
      } else {
        newObj[key] = obj[key];
      }
    }
  }

  newObj["default"] = obj;

  if (cache) {
    cache.set(obj, newObj);
  }

  return newObj;
}

module.exports = _interopRequireWildcard;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js":
/*!**********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js ***!
  \**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/construct */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js");

function _isNativeReflectConstruct() {
  if (typeof Reflect === "undefined" || !_Reflect$construct) return false;
  if (_Reflect$construct.sham) return false;
  if (typeof Proxy === "function") return true;

  try {
    Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));
    return true;
  } catch (e) {
    return false;
  }
}

module.exports = _isNativeReflectConstruct;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js ***!
  \*************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

var _Array$from = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/from */ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js");

function _iterableToArray(iter) {
  if (typeof _Symbol !== "undefined" && iter[_Symbol$iterator] != null || iter["@@iterator"] != null) return _Array$from(iter);
}

module.exports = _iterableToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js":
/*!******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js ***!
  \******************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

function _iterableToArrayLimit(arr, i) {
  var _i = arr && (typeof _Symbol !== "undefined" && arr[_Symbol$iterator] || arr["@@iterator"]);

  if (_i == null) return;
  var _arr = [];
  var _n = true;
  var _d = false;

  var _s, _e;

  try {
    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
      _arr.push(_s.value);

      if (i && _arr.length === i) break;
    }
  } catch (err) {
    _d = true;
    _e = err;
  } finally {
    try {
      if (!_n && _i["return"] != null) _i["return"]();
    } finally {
      if (_d) throw _e;
    }
  }

  return _arr;
}

module.exports = _iterableToArrayLimit;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js ***!
  \*************************************************************************/
/***/ ((module) => {

function _nonIterableRest() {
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}

module.exports = _nonIterableRest;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js ***!
  \***************************************************************************/
/***/ ((module) => {

function _nonIterableSpread() {
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}

module.exports = _nonIterableSpread;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$keys = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js");

var _Object$getOwnPropertySymbols = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-symbols */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js");

var _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-descriptor */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js");

var _Object$getOwnPropertyDescriptors = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-descriptors */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js");

var _Object$defineProperties = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-properties */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js");

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var defineProperty = __webpack_require__(/*! ./defineProperty.js */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js");

function ownKeys(object, enumerableOnly) {
  var keys = _Object$keys(object);

  if (_Object$getOwnPropertySymbols) {
    var symbols = _Object$getOwnPropertySymbols(object);

    if (enumerableOnly) {
      symbols = symbols.filter(function (sym) {
        return _Object$getOwnPropertyDescriptor(object, sym).enumerable;
      });
    }

    keys.push.apply(keys, symbols);
  }

  return keys;
}

function _objectSpread2(target) {
  for (var i = 1; i < arguments.length; i++) {
    var source = arguments[i] != null ? arguments[i] : {};

    if (i % 2) {
      ownKeys(Object(source), true).forEach(function (key) {
        defineProperty(target, key, source[key]);
      });
    } else if (_Object$getOwnPropertyDescriptors) {
      _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source));
    } else {
      ownKeys(Object(source)).forEach(function (key) {
        _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key));
      });
    }
  }

  return target;
}

module.exports = _objectSpread2;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js":
/*!***********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js ***!
  \***********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _typeof = __webpack_require__(/*! @babel/runtime-corejs2/helpers/typeof */ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js").default;

var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js");

function _possibleConstructorReturn(self, call) {
  if (call && (_typeof(call) === "object" || typeof call === "function")) {
    return call;
  }

  return assertThisInitialized(self);
}

module.exports = _possibleConstructorReturn;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/set-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js");

function _setPrototypeOf(o, p) {
  module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {
    o.__proto__ = p;
    return o;
  };

  module.exports.default = module.exports, module.exports.__esModule = true;
  return _setPrototypeOf(o, p);
}

module.exports = _setPrototypeOf;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js");

var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js");

var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js");

var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js");

function _slicedToArray(arr, i) {
  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
}

module.exports = _slicedToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js");

var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js");

var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js");

var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js");

function _toConsumableArray(arr) {
  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
}

module.exports = _toConsumableArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js":
/*!****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/typeof.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

function _typeof(obj) {
  "@babel/helpers - typeof";

  if (typeof _Symbol === "function" && typeof _Symbol$iterator === "symbol") {
    module.exports = _typeof = function _typeof(obj) {
      return typeof obj;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  } else {
    module.exports = _typeof = function _typeof(obj) {
      return obj && typeof _Symbol === "function" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? "symbol" : typeof obj;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  }

  return _typeof(obj);
}

module.exports = _typeof;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js":
/*!************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js ***!
  \************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Array$from = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/from */ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js");

var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js");

function _unsupportedIterableToArray(o, minLen) {
  if (!o) return;
  if (typeof o === "string") return arrayLikeToArray(o, minLen);
  var n = Object.prototype.toString.call(o).slice(8, -1);
  if (n === "Object" && o.constructor) n = o.constructor.name;
  if (n === "Map" || n === "Set") return _Array$from(o);
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
}

module.exports = _unsupportedIterableToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@reach/router/es/index.js":
/*!*************************************************!*\
  !*** ../node_modules/@reach/router/es/index.js ***!
  \*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Link": () => (/* binding */ Link),
/* harmony export */   "Location": () => (/* binding */ Location),
/* harmony export */   "LocationProvider": () => (/* binding */ LocationProvider),
/* harmony export */   "Match": () => (/* binding */ Match),
/* harmony export */   "Redirect": () => (/* binding */ Redirect),
/* harmony export */   "Router": () => (/* binding */ Router),
/* harmony export */   "ServerLocation": () => (/* binding */ ServerLocation),
/* harmony export */   "createHistory": () => (/* reexport safe */ _lib_history__WEBPACK_IMPORTED_MODULE_6__.createHistory),
/* harmony export */   "createMemorySource": () => (/* reexport safe */ _lib_history__WEBPACK_IMPORTED_MODULE_6__.createMemorySource),
/* harmony export */   "isRedirect": () => (/* binding */ isRedirect),
/* harmony export */   "navigate": () => (/* reexport safe */ _lib_history__WEBPACK_IMPORTED_MODULE_6__.navigate),
/* harmony export */   "redirectTo": () => (/* binding */ redirectTo),
/* harmony export */   "globalHistory": () => (/* reexport safe */ _lib_history__WEBPACK_IMPORTED_MODULE_6__.globalHistory),
/* harmony export */   "matchPath": () => (/* reexport safe */ _lib_utils__WEBPACK_IMPORTED_MODULE_5__.match),
/* harmony export */   "useLocation": () => (/* binding */ useLocation),
/* harmony export */   "useNavigate": () => (/* binding */ useNavigate),
/* harmony export */   "useParams": () => (/* binding */ useParams),
/* harmony export */   "useMatch": () => (/* binding */ useMatch)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var invariant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! invariant */ "../node_modules/invariant/browser.js");
/* harmony import */ var invariant__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(invariant__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var create_react_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! create-react-context */ "../node_modules/create-react-context/lib/index.js");
/* harmony import */ var create_react_context__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(create_react_context__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var react_lifecycles_compat__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-lifecycles-compat */ "../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js");
/* harmony import */ var _lib_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib/utils */ "../node_modules/@reach/router/es/lib/utils.js");
/* harmony import */ var _lib_history__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/history */ "../node_modules/@reach/router/es/lib/history.js");
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }

/* eslint-disable jsx-a11y/anchor-has-content */








////////////////////////////////////////////////////////////////////////////////

var createNamedContext = function createNamedContext(name, defaultValue) {
  var Ctx = create_react_context__WEBPACK_IMPORTED_MODULE_3___default()(defaultValue);
  Ctx.displayName = name;
  return Ctx;
};

////////////////////////////////////////////////////////////////////////////////
// Location Context/Provider
var LocationContext = createNamedContext("Location");

// sets up a listener if there isn't one already so apps don't need to be
// wrapped in some top level provider
var Location = function Location(_ref) {
  var children = _ref.children;
  return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
    LocationContext.Consumer,
    null,
    function (context) {
      return context ? children(context) : react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
        LocationProvider,
        null,
        children
      );
    }
  );
};

var LocationProvider = function (_React$Component) {
  _inherits(LocationProvider, _React$Component);

  function LocationProvider() {
    var _temp, _this, _ret;

    _classCallCheck(this, LocationProvider);

    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {
      context: _this.getContext(),
      refs: { unlisten: null }
    }, _temp), _possibleConstructorReturn(_this, _ret);
  }

  LocationProvider.prototype.getContext = function getContext() {
    var _props$history = this.props.history,
        navigate = _props$history.navigate,
        location = _props$history.location;

    return { navigate: navigate, location: location };
  };

  LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {
    if (isRedirect(error)) {
      var _navigate = this.props.history.navigate;

      _navigate(error.uri, { replace: true });
    } else {
      throw error;
    }
  };

  LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
    if (prevState.context.location !== this.state.context.location) {
      this.props.history._onTransitionComplete();
    }
  };

  LocationProvider.prototype.componentDidMount = function componentDidMount() {
    var _this2 = this;

    var refs = this.state.refs,
        history = this.props.history;

    history._onTransitionComplete();
    refs.unlisten = history.listen(function () {
      Promise.resolve().then(function () {
        // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306
        requestAnimationFrame(function () {
          if (!_this2.unmounted) {
            _this2.setState(function () {
              return { context: _this2.getContext() };
            });
          }
        });
      });
    });
  };

  LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {
    var refs = this.state.refs;

    this.unmounted = true;
    refs.unlisten();
  };

  LocationProvider.prototype.render = function render() {
    var context = this.state.context,
        children = this.props.children;

    return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
      LocationContext.Provider,
      { value: context },
      typeof children === "function" ? children(context) : children || null
    );
  };

  return LocationProvider;
}((react__WEBPACK_IMPORTED_MODULE_0___default().Component));

////////////////////////////////////////////////////////////////////////////////


LocationProvider.defaultProps = {
  history: _lib_history__WEBPACK_IMPORTED_MODULE_6__.globalHistory
};
 true ? LocationProvider.propTypes = {
  history: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().object.isRequired)
} : 0;
var ServerLocation = function ServerLocation(_ref2) {
  var url = _ref2.url,
      children = _ref2.children;

  var searchIndex = url.indexOf("?");
  var searchExists = searchIndex > -1;
  var pathname = void 0;
  var search = "";
  var hash = "";

  if (searchExists) {
    pathname = url.substring(0, searchIndex);
    search = url.substring(searchIndex);
  } else {
    pathname = url;
  }

  return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
    LocationContext.Provider,
    {
      value: {
        location: {
          pathname: pathname,
          search: search,
          hash: hash
        },
        navigate: function navigate() {
          throw new Error("You can't call navigate on the server.");
        }
      }
    },
    children
  );
};
////////////////////////////////////////////////////////////////////////////////
// Sets baseuri and basepath for nested routers and links
var BaseContext = createNamedContext("Base", { baseuri: "/", basepath: "/" });

////////////////////////////////////////////////////////////////////////////////
// The main event, welcome to the show everybody.
var Router = function Router(props) {
  return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
    BaseContext.Consumer,
    null,
    function (baseContext) {
      return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
        Location,
        null,
        function (locationContext) {
          return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(RouterImpl, _extends({}, baseContext, locationContext, props));
        }
      );
    }
  );
};

var RouterImpl = function (_React$PureComponent) {
  _inherits(RouterImpl, _React$PureComponent);

  function RouterImpl() {
    _classCallCheck(this, RouterImpl);

    return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));
  }

  RouterImpl.prototype.render = function render() {
    var _props = this.props,
        location = _props.location,
        _navigate2 = _props.navigate,
        basepath = _props.basepath,
        primary = _props.primary,
        children = _props.children,
        baseuri = _props.baseuri,
        _props$component = _props.component,
        component = _props$component === undefined ? "div" : _props$component,
        domProps = _objectWithoutProperties(_props, ["location", "navigate", "basepath", "primary", "children", "baseuri", "component"]);

    var routes = react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(children).reduce(function (array, child) {
      var routes = createRoute(basepath)(child);
      return array.concat(routes);
    }, []);
    var pathname = location.pathname;


    var match = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.pick)(routes, pathname);

    if (match) {
      var params = match.params,
          uri = match.uri,
          route = match.route,
          element = match.route.value;

      // remove the /* from the end for child routes relative paths

      basepath = route.default ? basepath : route.path.replace(/\*$/, "");

      var props = _extends({}, params, {
        uri: uri,
        location: location,
        navigate: function navigate(to, options) {
          return _navigate2((0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.resolve)(to, uri), options);
        }
      });

      var clone = react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(element, props, element.props.children ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
        Router,
        { location: location, primary: primary },
        element.props.children
      ) : undefined);

      // using 'div' for < 16.3 support
      var FocusWrapper = primary ? FocusHandler : component;
      // don't pass any props to 'div'
      var wrapperProps = primary ? _extends({ uri: uri, location: location, component: component }, domProps) : domProps;

      return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
        BaseContext.Provider,
        { value: { baseuri: uri, basepath: basepath } },
        react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
          FocusWrapper,
          wrapperProps,
          clone
        )
      );
    } else {
      // Not sure if we want this, would require index routes at every level
      // warning(
      //   false,
      //   `<Router basepath="${basepath}">\n\nNothing matched:\n\t${
      //     location.pathname
      //   }\n\nPaths checked: \n\t${routes
      //     .map(route => route.path)
      //     .join(
      //       "\n\t"
      //     )}\n\nTo get rid of this warning, add a default NotFound component as child of Router:
      //   \n\tlet NotFound = () => <div>Not Found!</div>
      //   \n\t<Router>\n\t  <NotFound default/>\n\t  {/* ... */}\n\t</Router>`
      // );
      return null;
    }
  };

  return RouterImpl;
}((react__WEBPACK_IMPORTED_MODULE_0___default().PureComponent));

RouterImpl.defaultProps = {
  primary: true
};


var FocusContext = createNamedContext("Focus");

var FocusHandler = function FocusHandler(_ref3) {
  var uri = _ref3.uri,
      location = _ref3.location,
      component = _ref3.component,
      domProps = _objectWithoutProperties(_ref3, ["uri", "location", "component"]);

  return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
    FocusContext.Consumer,
    null,
    function (requestFocus) {
      return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(FocusHandlerImpl, _extends({}, domProps, {
        component: component,
        requestFocus: requestFocus,
        uri: uri,
        location: location
      }));
    }
  );
};

// don't focus on initial render
var initialRender = true;
var focusHandlerCount = 0;

var FocusHandlerImpl = function (_React$Component2) {
  _inherits(FocusHandlerImpl, _React$Component2);

  function FocusHandlerImpl() {
    var _temp2, _this4, _ret2;

    _classCallCheck(this, FocusHandlerImpl);

    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
      args[_key2] = arguments[_key2];
    }

    return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {
      if (!_this4.state.shouldFocus && node) {
        node.focus();
      }
    }, _temp2), _possibleConstructorReturn(_this4, _ret2);
  }

  FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {
    var initial = prevState.uri == null;
    if (initial) {
      return _extends({
        shouldFocus: true
      }, nextProps);
    } else {
      var myURIChanged = nextProps.uri !== prevState.uri;
      var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;
      return _extends({
        shouldFocus: myURIChanged || navigatedUpToMe
      }, nextProps);
    }
  };

  FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {
    focusHandlerCount++;
    this.focus();
  };

  FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {
    focusHandlerCount--;
    if (focusHandlerCount === 0) {
      initialRender = true;
    }
  };

  FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
    if (prevProps.location !== this.props.location && this.state.shouldFocus) {
      this.focus();
    }
  };

  FocusHandlerImpl.prototype.focus = function focus() {
    if (false) {}

    var requestFocus = this.props.requestFocus;


    if (requestFocus) {
      requestFocus(this.node);
    } else {
      if (initialRender) {
        initialRender = false;
      } else if (this.node) {
        // React polyfills [autofocus] and it fires earlier than cDM,
        // so we were stealing focus away, this line prevents that.
        if (!this.node.contains(document.activeElement)) {
          this.node.focus();
        }
      }
    }
  };

  FocusHandlerImpl.prototype.render = function render() {
    var _this5 = this;

    var _props2 = this.props,
        children = _props2.children,
        style = _props2.style,
        requestFocus = _props2.requestFocus,
        _props2$component = _props2.component,
        Comp = _props2$component === undefined ? "div" : _props2$component,
        uri = _props2.uri,
        location = _props2.location,
        domProps = _objectWithoutProperties(_props2, ["children", "style", "requestFocus", "component", "uri", "location"]);

    return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
      Comp,
      _extends({
        style: _extends({ outline: "none" }, style),
        tabIndex: "-1",
        ref: function ref(n) {
          return _this5.node = n;
        }
      }, domProps),
      react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
        FocusContext.Provider,
        { value: this.requestFocus },
        this.props.children
      )
    );
  };

  return FocusHandlerImpl;
}((react__WEBPACK_IMPORTED_MODULE_0___default().Component));

(0,react_lifecycles_compat__WEBPACK_IMPORTED_MODULE_4__.polyfill)(FocusHandlerImpl);

var k = function k() {};

////////////////////////////////////////////////////////////////////////////////
var forwardRef = (react__WEBPACK_IMPORTED_MODULE_0___default().forwardRef);

if (typeof forwardRef === "undefined") {
  forwardRef = function forwardRef(C) {
    return C;
  };
}

var Link = forwardRef(function (_ref4, ref) {
  var innerRef = _ref4.innerRef,
      props = _objectWithoutProperties(_ref4, ["innerRef"]);

  return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
    BaseContext.Consumer,
    null,
    function (_ref5) {
      var basepath = _ref5.basepath,
          baseuri = _ref5.baseuri;
      return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
        Location,
        null,
        function (_ref6) {
          var location = _ref6.location,
              navigate = _ref6.navigate;

          var to = props.to,
              state = props.state,
              replace = props.replace,
              _props$getProps = props.getProps,
              getProps = _props$getProps === undefined ? k : _props$getProps,
              anchorProps = _objectWithoutProperties(props, ["to", "state", "replace", "getProps"]);

          var href = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.resolve)(to, baseuri);
          var encodedHref = encodeURI(href);
          var isCurrent = location.pathname === encodedHref;
          var isPartiallyCurrent = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.startsWith)(location.pathname, encodedHref);

          return react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", _extends({
            ref: ref || innerRef,
            "aria-current": isCurrent ? "page" : undefined
          }, anchorProps, getProps({ isCurrent: isCurrent, isPartiallyCurrent: isPartiallyCurrent, href: href, location: location }), {
            href: href,
            onClick: function onClick(event) {
              if (anchorProps.onClick) anchorProps.onClick(event);
              if (shouldNavigate(event)) {
                event.preventDefault();
                var shouldReplace = replace;
                if (typeof replace !== "boolean" && isCurrent) {
                  var _location$state = _extends({}, location.state),
                      key = _location$state.key,
                      restState = _objectWithoutProperties(_location$state, ["key"]);

                  shouldReplace = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.shallowCompare)(_extends({}, state), restState);
                }
                navigate(href, {
                  state: state,
                  replace: shouldReplace
                });
              }
            }
          }));
        }
      );
    }
  );
});

Link.displayName = "Link";

 true ? Link.propTypes = {
  to: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string.isRequired)
} : 0;

////////////////////////////////////////////////////////////////////////////////
function RedirectRequest(uri) {
  this.uri = uri;
}

var isRedirect = function isRedirect(o) {
  return o instanceof RedirectRequest;
};

var redirectTo = function redirectTo(to) {
  throw new RedirectRequest(to);
};

var RedirectImpl = function (_React$Component3) {
  _inherits(RedirectImpl, _React$Component3);

  function RedirectImpl() {
    _classCallCheck(this, RedirectImpl);

    return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));
  }

  // Support React < 16 with this hook
  RedirectImpl.prototype.componentDidMount = function componentDidMount() {
    var _props3 = this.props,
        navigate = _props3.navigate,
        to = _props3.to,
        from = _props3.from,
        _props3$replace = _props3.replace,
        replace = _props3$replace === undefined ? true : _props3$replace,
        state = _props3.state,
        noThrow = _props3.noThrow,
        baseuri = _props3.baseuri,
        props = _objectWithoutProperties(_props3, ["navigate", "to", "from", "replace", "state", "noThrow", "baseuri"]);

    Promise.resolve().then(function () {
      var resolvedTo = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.resolve)(to, baseuri);
      navigate((0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.insertParams)(resolvedTo, props), { replace: replace, state: state });
    });
  };

  RedirectImpl.prototype.render = function render() {
    var _props4 = this.props,
        navigate = _props4.navigate,
        to = _props4.to,
        from = _props4.from,
        replace = _props4.replace,
        state = _props4.state,
        noThrow = _props4.noThrow,
        baseuri = _props4.baseuri,
        props = _objectWithoutProperties(_props4, ["navigate", "to", "from", "replace", "state", "noThrow", "baseuri"]);

    var resolvedTo = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.resolve)(to, baseuri);
    if (!noThrow) redirectTo((0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.insertParams)(resolvedTo, props));
    return null;
  };

  return RedirectImpl;
}((react__WEBPACK_IMPORTED_MODULE_0___default().Component));

var Redirect = function Redirect(props) {
  return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
    BaseContext.Consumer,
    null,
    function (_ref7) {
      var baseuri = _ref7.baseuri;
      return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
        Location,
        null,
        function (locationContext) {
          return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(RedirectImpl, _extends({}, locationContext, { baseuri: baseuri }, props));
        }
      );
    }
  );
};

 true ? Redirect.propTypes = {
  from: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string),
  to: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().string.isRequired)
} : 0;

////////////////////////////////////////////////////////////////////////////////
var Match = function Match(_ref8) {
  var path = _ref8.path,
      children = _ref8.children;
  return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
    BaseContext.Consumer,
    null,
    function (_ref9) {
      var baseuri = _ref9.baseuri;
      return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(
        Location,
        null,
        function (_ref10) {
          var navigate = _ref10.navigate,
              location = _ref10.location;

          var resolvedPath = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.resolve)(path, baseuri);
          var result = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.match)(resolvedPath, location.pathname);
          return children({
            navigate: navigate,
            location: location,
            match: result ? _extends({}, result.params, {
              uri: result.uri,
              path: path
            }) : null
          });
        }
      );
    }
  );
};

////////////////////////////////////////////////////////////////////////////////
// Hooks

var useLocation = function useLocation() {
  var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(LocationContext);

  if (!context) {
    throw new Error("useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");
  }

  return context.location;
};

var useNavigate = function useNavigate() {
  var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(LocationContext);

  if (!context) {
    throw new Error("useNavigate hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");
  }

  return context.navigate;
};

var useParams = function useParams() {
  var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(BaseContext);

  if (!context) {
    throw new Error("useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");
  }

  var location = useLocation();

  var results = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.match)(context.basepath, location.pathname);

  return results ? results.params : null;
};

var useMatch = function useMatch(path) {
  if (!path) {
    throw new Error("useMatch(path: string) requires an argument of a string to match against");
  }
  var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(BaseContext);

  if (!context) {
    throw new Error("useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");
  }

  var location = useLocation();

  var resolvedPath = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.resolve)(path, context.baseuri);
  var result = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.match)(resolvedPath, location.pathname);
  return result ? _extends({}, result.params, {
    uri: result.uri,
    path: path
  }) : null;
};

////////////////////////////////////////////////////////////////////////////////
// Junk
var stripSlashes = function stripSlashes(str) {
  return str.replace(/(^\/+|\/+$)/g, "");
};

var createRoute = function createRoute(basepath) {
  return function (element) {
    if (!element) {
      return null;
    }

    if (element.type === (react__WEBPACK_IMPORTED_MODULE_0___default().Fragment) && element.props.children) {
      return react__WEBPACK_IMPORTED_MODULE_0___default().Children.map(element.props.children, createRoute(basepath));
    }
    !(element.props.path || element.props.default || element.type === Redirect) ?  true ? invariant__WEBPACK_IMPORTED_MODULE_2___default()(false, "<Router>: Children of <Router> must have a `path` or `default` prop, or be a `<Redirect>`. None found on element type `" + element.type + "`") : 0 : void 0;

    !!(element.type === Redirect && (!element.props.from || !element.props.to)) ?  true ? invariant__WEBPACK_IMPORTED_MODULE_2___default()(false, "<Redirect from=\"" + element.props.from + "\" to=\"" + element.props.to + "\"/> requires both \"from\" and \"to\" props when inside a <Router>.") : 0 : void 0;

    !!(element.type === Redirect && !(0,_lib_utils__WEBPACK_IMPORTED_MODULE_5__.validateRedirect)(element.props.from, element.props.to)) ?  true ? invariant__WEBPACK_IMPORTED_MODULE_2___default()(false, "<Redirect from=\"" + element.props.from + " to=\"" + element.props.to + "\"/> has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.") : 0 : void 0;

    if (element.props.default) {
      return { value: element, default: true };
    }

    var elementPath = element.type === Redirect ? element.props.from : element.props.path;

    var path = elementPath === "/" ? basepath : stripSlashes(basepath) + "/" + stripSlashes(elementPath);

    return {
      value: element,
      default: element.props.default,
      path: element.props.children ? stripSlashes(path) + "/*" : path
    };
  };
};

var shouldNavigate = function shouldNavigate(event) {
  return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);
};

////////////////////////////////////////////////////////////////////////


/***/ }),

/***/ "../node_modules/@reach/router/es/lib/history.js":
/*!*******************************************************!*\
  !*** ../node_modules/@reach/router/es/lib/history.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "globalHistory": () => (/* binding */ globalHistory),
/* harmony export */   "navigate": () => (/* binding */ navigate),
/* harmony export */   "createHistory": () => (/* binding */ createHistory),
/* harmony export */   "createMemorySource": () => (/* binding */ createMemorySource)
/* harmony export */ });
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

var getLocation = function getLocation(source) {
  var _source$location = source.location,
      search = _source$location.search,
      hash = _source$location.hash,
      href = _source$location.href,
      origin = _source$location.origin,
      protocol = _source$location.protocol,
      host = _source$location.host,
      hostname = _source$location.hostname,
      port = _source$location.port;
  var pathname = source.location.pathname;


  if (!pathname && href && canUseDOM) {
    var url = new URL(href);
    pathname = url.pathname;
  }

  return {
    pathname: encodeURI(decodeURI(pathname)),
    search: search,
    hash: hash,
    href: href,
    origin: origin,
    protocol: protocol,
    host: host,
    hostname: hostname,
    port: port,
    state: source.history.state,
    key: source.history.state && source.history.state.key || "initial"
  };
};

var createHistory = function createHistory(source, options) {
  var listeners = [];
  var location = getLocation(source);
  var transitioning = false;
  var resolveTransition = function resolveTransition() {};

  return {
    get location() {
      return location;
    },

    get transitioning() {
      return transitioning;
    },

    _onTransitionComplete: function _onTransitionComplete() {
      transitioning = false;
      resolveTransition();
    },
    listen: function listen(listener) {
      listeners.push(listener);

      var popstateListener = function popstateListener() {
        location = getLocation(source);
        listener({ location: location, action: "POP" });
      };

      source.addEventListener("popstate", popstateListener);

      return function () {
        source.removeEventListener("popstate", popstateListener);
        listeners = listeners.filter(function (fn) {
          return fn !== listener;
        });
      };
    },
    navigate: function navigate(to) {
      var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
          state = _ref.state,
          _ref$replace = _ref.replace,
          replace = _ref$replace === undefined ? false : _ref$replace;

      if (typeof to === "number") {
        source.history.go(to);
      } else {
        state = _extends({}, state, { key: Date.now() + "" });
        // try...catch iOS Safari limits to 100 pushState calls
        try {
          if (transitioning || replace) {
            source.history.replaceState(state, null, to);
          } else {
            source.history.pushState(state, null, to);
          }
        } catch (e) {
          source.location[replace ? "replace" : "assign"](to);
        }
      }

      location = getLocation(source);
      transitioning = true;
      var transition = new Promise(function (res) {
        return resolveTransition = res;
      });
      listeners.forEach(function (listener) {
        return listener({ location: location, action: "PUSH" });
      });
      return transition;
    }
  };
};

////////////////////////////////////////////////////////////////////////////////
// Stores history entries in memory for testing or other platforms like Native
var createMemorySource = function createMemorySource() {
  var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "/";

  var searchIndex = initialPath.indexOf("?");
  var initialLocation = {
    pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,
    search: searchIndex > -1 ? initialPath.substr(searchIndex) : ""
  };
  var index = 0;
  var stack = [initialLocation];
  var states = [null];

  return {
    get location() {
      return stack[index];
    },
    addEventListener: function addEventListener(name, fn) {},
    removeEventListener: function removeEventListener(name, fn) {},

    history: {
      get entries() {
        return stack;
      },
      get index() {
        return index;
      },
      get state() {
        return states[index];
      },
      pushState: function pushState(state, _, uri) {
        var _uri$split = uri.split("?"),
            pathname = _uri$split[0],
            _uri$split$ = _uri$split[1],
            search = _uri$split$ === undefined ? "" : _uri$split$;

        index++;
        stack.push({ pathname: pathname, search: search.length ? "?" + search : search });
        states.push(state);
      },
      replaceState: function replaceState(state, _, uri) {
        var _uri$split2 = uri.split("?"),
            pathname = _uri$split2[0],
            _uri$split2$ = _uri$split2[1],
            search = _uri$split2$ === undefined ? "" : _uri$split2$;

        stack[index] = { pathname: pathname, search: search };
        states[index] = state;
      },
      go: function go(to) {
        var newIndex = index + to;

        if (newIndex < 0 || newIndex > states.length - 1) {
          return;
        }

        index = newIndex;
      }
    }
  };
};

////////////////////////////////////////////////////////////////////////////////
// global history - uses window.history as the source if available, otherwise a
// memory history
var canUseDOM = !!(typeof window !== "undefined" && window.document && window.document.createElement);
var getSource = function getSource() {
  return canUseDOM ? window : createMemorySource();
};

var globalHistory = createHistory(getSource());
var navigate = globalHistory.navigate;

////////////////////////////////////////////////////////////////////////////////



/***/ }),

/***/ "../node_modules/@reach/router/es/lib/utils.js":
/*!*****************************************************!*\
  !*** ../node_modules/@reach/router/es/lib/utils.js ***!
  \*****************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "startsWith": () => (/* binding */ startsWith),
/* harmony export */   "pick": () => (/* binding */ pick),
/* harmony export */   "match": () => (/* binding */ match),
/* harmony export */   "resolve": () => (/* binding */ resolve),
/* harmony export */   "insertParams": () => (/* binding */ insertParams),
/* harmony export */   "validateRedirect": () => (/* binding */ validateRedirect),
/* harmony export */   "shallowCompare": () => (/* binding */ shallowCompare)
/* harmony export */ });
/* harmony import */ var invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! invariant */ "../node_modules/invariant/browser.js");
/* harmony import */ var invariant__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(invariant__WEBPACK_IMPORTED_MODULE_0__);


////////////////////////////////////////////////////////////////////////////////
// startsWith(string, search) - Check if `string` starts with `search`
var startsWith = function startsWith(string, search) {
  return string.substr(0, search.length) === search;
};

////////////////////////////////////////////////////////////////////////////////
// pick(routes, uri)
//
// Ranks and picks the best route to match. Each segment gets the highest
// amount of points, then the type of segment gets an additional amount of
// points where
//
//     static > dynamic > splat > root
//
// This way we don't have to worry about the order of our routes, let the
// computers do it.
//
// A route looks like this
//
//     { path, default, value }
//
// And a returned match looks like:
//
//     { route, params, uri }
//
// I know, I should use TypeScript not comments for these types.
var pick = function pick(routes, uri) {
  var match = void 0;
  var default_ = void 0;

  var _uri$split = uri.split("?"),
      uriPathname = _uri$split[0];

  var uriSegments = segmentize(uriPathname);
  var isRootUri = uriSegments[0] === "";
  var ranked = rankRoutes(routes);

  for (var i = 0, l = ranked.length; i < l; i++) {
    var missed = false;
    var route = ranked[i].route;

    if (route.default) {
      default_ = {
        route: route,
        params: {},
        uri: uri
      };
      continue;
    }

    var routeSegments = segmentize(route.path);
    var params = {};
    var max = Math.max(uriSegments.length, routeSegments.length);
    var index = 0;

    for (; index < max; index++) {
      var routeSegment = routeSegments[index];
      var uriSegment = uriSegments[index];

      if (isSplat(routeSegment)) {
        // Hit a splat, just grab the rest, and return a match
        // uri:   /files/documents/work
        // route: /files/*
        var param = routeSegment.slice(1) || "*";
        params[param] = uriSegments.slice(index).map(decodeURIComponent).join("/");
        break;
      }

      if (uriSegment === undefined) {
        // URI is shorter than the route, no match
        // uri:   /users
        // route: /users/:userId
        missed = true;
        break;
      }

      var dynamicMatch = paramRe.exec(routeSegment);

      if (dynamicMatch && !isRootUri) {
        var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;
        !matchIsNotReserved ?  true ? invariant__WEBPACK_IMPORTED_MODULE_0___default()(false, "<Router> dynamic segment \"" + dynamicMatch[1] + "\" is a reserved name. Please use a different name in path \"" + route.path + "\".") : 0 : void 0;
        var value = decodeURIComponent(uriSegment);
        params[dynamicMatch[1]] = value;
      } else if (routeSegment !== uriSegment) {
        // Current segments don't match, not dynamic, not splat, so no match
        // uri:   /users/123/settings
        // route: /users/:id/profile
        missed = true;
        break;
      }
    }

    if (!missed) {
      match = {
        route: route,
        params: params,
        uri: "/" + uriSegments.slice(0, index).join("/")
      };
      break;
    }
  }

  return match || default_ || null;
};

////////////////////////////////////////////////////////////////////////////////
// match(path, uri) - Matches just one path to a uri, also lol
var match = function match(path, uri) {
  return pick([{ path: path }], uri);
};

////////////////////////////////////////////////////////////////////////////////
// resolve(to, basepath)
//
// Resolves URIs as though every path is a directory, no files.  Relative URIs
// in the browser can feel awkward because not only can you be "in a directory"
// you can be "at a file", too. For example
//
//     browserSpecResolve('foo', '/bar/') => /bar/foo
//     browserSpecResolve('foo', '/bar') => /foo
//
// But on the command line of a file system, it's not as complicated, you can't
// `cd` from a file, only directories.  This way, links have to know less about
// their current path. To go deeper you can do this:
//
//     <Link to="deeper"/>
//     // instead of
//     <Link to=`{${props.uri}/deeper}`/>
//
// Just like `cd`, if you want to go deeper from the command line, you do this:
//
//     cd deeper
//     # not
//     cd $(pwd)/deeper
//
// By treating every path as a directory, linking to relative paths should
// require less contextual information and (fingers crossed) be more intuitive.
var resolve = function resolve(to, base) {
  // /foo/bar, /baz/qux => /foo/bar
  if (startsWith(to, "/")) {
    return to;
  }

  var _to$split = to.split("?"),
      toPathname = _to$split[0],
      toQuery = _to$split[1];

  var _base$split = base.split("?"),
      basePathname = _base$split[0];

  var toSegments = segmentize(toPathname);
  var baseSegments = segmentize(basePathname);

  // ?a=b, /users?b=c => /users?a=b
  if (toSegments[0] === "") {
    return addQuery(basePathname, toQuery);
  }

  // profile, /users/789 => /users/789/profile
  if (!startsWith(toSegments[0], ".")) {
    var pathname = baseSegments.concat(toSegments).join("/");
    return addQuery((basePathname === "/" ? "" : "/") + pathname, toQuery);
  }

  // ./         /users/123  =>  /users/123
  // ../        /users/123  =>  /users
  // ../..      /users/123  =>  /
  // ../../one  /a/b/c/d    =>  /a/b/one
  // .././one   /a/b/c/d    =>  /a/b/c/one
  var allSegments = baseSegments.concat(toSegments);
  var segments = [];
  for (var i = 0, l = allSegments.length; i < l; i++) {
    var segment = allSegments[i];
    if (segment === "..") segments.pop();else if (segment !== ".") segments.push(segment);
  }

  return addQuery("/" + segments.join("/"), toQuery);
};

////////////////////////////////////////////////////////////////////////////////
// insertParams(path, params)

var insertParams = function insertParams(path, params) {
  var _path$split = path.split("?"),
      pathBase = _path$split[0],
      _path$split$ = _path$split[1],
      query = _path$split$ === undefined ? "" : _path$split$;

  var segments = segmentize(pathBase);
  var constructedPath = "/" + segments.map(function (segment) {
    var match = paramRe.exec(segment);
    return match ? params[match[1]] : segment;
  }).join("/");
  var _params$location = params.location;
  _params$location = _params$location === undefined ? {} : _params$location;
  var _params$location$sear = _params$location.search,
      search = _params$location$sear === undefined ? "" : _params$location$sear;

  var searchSplit = search.split("?")[1] || "";
  constructedPath = addQuery(constructedPath, query, searchSplit);
  return constructedPath;
};

var validateRedirect = function validateRedirect(from, to) {
  var filter = function filter(segment) {
    return isDynamic(segment);
  };
  var fromString = segmentize(from).filter(filter).sort().join("/");
  var toString = segmentize(to).filter(filter).sort().join("/");
  return fromString === toString;
};

////////////////////////////////////////////////////////////////////////////////
// Junk
var paramRe = /^:(.+)/;

var SEGMENT_POINTS = 4;
var STATIC_POINTS = 3;
var DYNAMIC_POINTS = 2;
var SPLAT_PENALTY = 1;
var ROOT_POINTS = 1;

var isRootSegment = function isRootSegment(segment) {
  return segment === "";
};
var isDynamic = function isDynamic(segment) {
  return paramRe.test(segment);
};
var isSplat = function isSplat(segment) {
  return segment && segment[0] === "*";
};

var rankRoute = function rankRoute(route, index) {
  var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {
    score += SEGMENT_POINTS;
    if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;
    return score;
  }, 0);
  return { route: route, score: score, index: index };
};

var rankRoutes = function rankRoutes(routes) {
  return routes.map(rankRoute).sort(function (a, b) {
    return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;
  });
};

var segmentize = function segmentize(uri) {
  return uri
  // strip starting/ending slashes
  .replace(/(^\/+|\/+$)/g, "").split("/");
};

var addQuery = function addQuery(pathname) {
  for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
    query[_key - 1] = arguments[_key];
  }

  query = query.filter(function (q) {
    return q && q.length > 0;
  });
  return pathname + (query && query.length > 0 ? "?" + query.join("&") : "");
};

var reservedNames = ["uri", "path"];

/**
 * Shallow compares two objects.
 * @param {Object} obj1 The first object to compare.
 * @param {Object} obj2 The second object to compare.
 */
var shallowCompare = function shallowCompare(obj1, obj2) {
  var obj1Keys = Object.keys(obj1);
  return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {
    return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];
  });
};

////////////////////////////////////////////////////////////////////////////////


/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/atoms/indicator-bullet.js":
/*!***************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/atoms/indicator-bullet.js ***!
  \***************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.Indicator = void 0;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! ./indicator-bullet.scss */ "../core/app/modules/site-editor/assets/js/atoms/indicator-bullet.scss");

var Indicator = function Indicator(props) {
  var className = 'eps-indicator-bullet';

  if (props.active) {
    className += " ".concat(className, "--active");
  }

  return /*#__PURE__*/_react.default.createElement("i", {
    className: className
  });
};

exports.Indicator = Indicator;
Indicator.propTypes = {
  active: PropTypes.bool
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/atoms/preview-iframe.js":
/*!*************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/atoms/preview-iframe.js ***!
  \*************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = PreviewIFrame;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

__webpack_require__(/*! ./preview-iframe.scss */ "../core/app/modules/site-editor/assets/js/atoms/preview-iframe.scss");

function PreviewIFrame(props) {
  var ref = _react.default.useRef(null),
      previewBreakpoint = 1200,
      _React$useState = _react.default.useState(1),
      _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
      scale = _React$useState2[0],
      setScale = _React$useState2[1],
      _React$useState3 = _react.default.useState(0),
      _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
      height = _React$useState4[0],
      setHeight = _React$useState4[1]; // In order to make sure that the iframe itself show the content in specific viewport,
  // and it should fit to the size of the card, there is a use of css props `scale` and `height`,
  // and another element that wraps the iframe to be the guidelines of the iframe sizes.


  _react.default.useEffect(function () {
    var currentScale = ref.current.clientWidth / previewBreakpoint;
    setScale(currentScale);
    setHeight(ref.current.clientHeight / currentScale);
  }, []);

  return /*#__PURE__*/_react.default.createElement("div", {
    ref: ref,
    className: "site-editor__preview-iframe site-editor__preview-iframe--".concat(props.templateType)
  }, /*#__PURE__*/_react.default.createElement("iframe", {
    src: props.src,
    className: "site-editor__preview-iframe__iframe",
    style: {
      transform: "scale(".concat(scale, ")"),
      height: height,
      width: previewBreakpoint
    }
  }));
}

PreviewIFrame.propTypes = {
  src: PropTypes.string.isRequired,
  templateType: PropTypes.string.isRequired
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/context/base-context.js":
/*!*************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/context/base-context.js ***!
  \*************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var React = __webpack_require__(/*! react */ "react");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.BaseContext = void 0;

var _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/promise */ "../node_modules/@babel/runtime-corejs2/core-js/promise.js"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/assertThisInitialized */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var BaseContext = /*#__PURE__*/function (_React$Component) {
  (0, _inherits2.default)(BaseContext, _React$Component);

  var _super = (0, _createSuper2.default)(BaseContext);

  function BaseContext(props) {
    var _this;

    (0, _classCallCheck2.default)(this, BaseContext);
    _this = _super.call(this, props);
    _this.state = {
      action: {
        current: null,
        loading: false,
        error: null,
        errorMeta: {}
      },
      updateActionState: _this.updateActionState.bind((0, _assertThisInitialized2.default)(_this)),
      resetActionState: _this.resetActionState.bind((0, _assertThisInitialized2.default)(_this))
    };
    return _this;
  }

  (0, _createClass2.default)(BaseContext, [{
    key: "executeAction",
    value: function executeAction(name, handler) {
      var _this2 = this;

      this.updateActionState({
        current: name,
        loading: true,
        error: null,
        errorMeta: {}
      });
      return handler().then(function (response) {
        _this2.resetActionState();

        return _promise.default.resolve(response);
      }).catch(function (error) {
        _this2.updateActionState({
          current: name,
          loading: false,
          error: error.message,
          errorMeta: error
        });

        return _promise.default.reject(error);
      });
    }
  }, {
    key: "updateActionState",
    value: function updateActionState(data) {
      return this.setState(function (prev) {
        return {
          action: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, prev.action), data)
        };
      });
    }
  }, {
    key: "resetActionState",
    value: function resetActionState() {
      this.updateActionState({
        current: null,
        loading: false,
        error: null,
        errorMeta: {}
      });
    }
  }]);
  return BaseContext;
}(React.Component);

exports.BaseContext = BaseContext;
var _default = BaseContext;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/context/conditions.js":
/*!***********************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/context/conditions.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ConditionsProvider = exports.Context = void 0;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _values = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/values */ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js"));

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/promise */ "../node_modules/@babel/runtime-corejs2/core-js/promise.js"));

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

__webpack_require__(/*! core-js/modules/es6.object.to-string.js */ "../node_modules/core-js/modules/es6.object.to-string.js");

__webpack_require__(/*! core-js/modules/es6.regexp.to-string.js */ "../node_modules/core-js/modules/es6.regexp.to-string.js");

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

__webpack_require__(/*! core-js/modules/es6.string.sub.js */ "../node_modules/core-js/modules/es6.string.sub.js");

__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

var _objectSpread5 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/assertThisInitialized */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var _condition = _interopRequireDefault(__webpack_require__(/*! ./models/condition */ "../core/app/modules/site-editor/assets/js/context/models/condition.js"));

var _conditionsConfig = _interopRequireDefault(__webpack_require__(/*! ./services/conditions-config */ "../core/app/modules/site-editor/assets/js/context/services/conditions-config.js"));

var _baseContext = _interopRequireDefault(__webpack_require__(/*! ./base-context */ "../core/app/modules/site-editor/assets/js/context/base-context.js"));

var _commands = __webpack_require__(/*! ../data/commands */ "../core/app/modules/site-editor/assets/js/data/commands/index.js");

var Context = _react.default.createContext();

exports.Context = Context;

var ConditionsProvider = /*#__PURE__*/function (_BaseContext) {
  (0, _inherits2.default)(ConditionsProvider, _BaseContext);

  var _super = (0, _createSuper2.default)(ConditionsProvider);

  /**
   * Holds the conditions config object.
   *
   * @type {ConditionsConfig}
   */

  /**
   * ConditionsProvider constructor.
   *
   * @param {any} props
   */
  function ConditionsProvider(props) {
    var _this;

    (0, _classCallCheck2.default)(this, ConditionsProvider);
    _this = _super.call(this, props);
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "conditionsConfig", null);
    _this.state = (0, _objectSpread5.default)((0, _objectSpread5.default)({}, _this.state), {}, {
      conditions: {},
      updateConditionItemState: _this.updateConditionItemState.bind((0, _assertThisInitialized2.default)(_this)),
      removeConditionItemInState: _this.removeConditionItemInState.bind((0, _assertThisInitialized2.default)(_this)),
      createConditionItemInState: _this.createConditionItemInState.bind((0, _assertThisInitialized2.default)(_this)),
      findConditionItemInState: _this.findConditionItemInState.bind((0, _assertThisInitialized2.default)(_this)),
      saveConditions: _this.saveConditions.bind((0, _assertThisInitialized2.default)(_this))
    });
    return _this;
  }
  /**
   * Fetch the conditions config, then normalize the conditions and then setup titles for
   * the subIds.
   */


  (0, _createClass2.default)(ConditionsProvider, [{
    key: "componentDidMount",
    value: function componentDidMount() {
      var _this2 = this;

      this.executeAction(ConditionsProvider.actions.FETCH_CONFIG, function () {
        return _conditionsConfig.default.create();
      }).then(function (conditionsConfig) {
        return _this2.conditionsConfig = conditionsConfig;
      }).then(this.normalizeConditionsState.bind(this)).then(this.setSubIdTitles.bind(this));
    }
    /**
     * Execute a request to save the template conditions.
     *
     * @return {any} -
     */

  }, {
    key: "saveConditions",
    value: function saveConditions() {
      var _this3 = this;

      var conditions = (0, _values.default)(this.state.conditions).map(function (condition) {
        return condition.forDb();
      });
      return this.executeAction(ConditionsProvider.actions.SAVE, function () {
        return $e.data.update(_commands.TemplatesConditions.signature, {
          conditions: conditions
        }, {
          id: _this3.props.currentTemplate.id
        });
      }).then(function () {
        var contextConditions = (0, _values.default)(_this3.state.conditions).map(function (condition) {
          return condition.forContext();
        });

        _this3.props.onConditionsSaved(_this3.props.currentTemplate.id, {
          conditions: contextConditions,
          instances: _this3.conditionsConfig.calculateInstances((0, _values.default)(_this3.state.conditions)),
          isActive: !!((0, _keys.default)(_this3.state.conditions).length && 'publish' === _this3.props.currentTemplate.status)
        });
      });
    }
    /**
     * Check for conflicts in the server and mark the condition if there
     * is a conflict.
     *
     * @param {any} condition
     */

  }, {
    key: "checkConflicts",
    value: function checkConflicts(condition) {
      var _this4 = this;

      return this.executeAction(ConditionsProvider.actions.CHECK_CONFLICTS, function () {
        return $e.data.get(_commands.TemplatesConditionsConflicts.signature, {
          post_id: _this4.props.currentTemplate.id,
          condition: condition.clone().toString()
        });
      }).then(function (response) {
        return _this4.updateConditionItemState(condition.id, {
          conflictErrors: (0, _values.default)(response.data)
        }, false);
      });
    }
    /**
     * Fetching subId titles.
     *
     * @param {any} condition
     * @return {Promise<unknown>} -
     */

  }, {
    key: "fetchSubIdsTitles",
    value: function fetchSubIdsTitles(condition) {
      return new _promise.default(function (resolve) {
        return elementorCommon.ajax.loadObjects({
          action: 'query_control_value_titles',
          ids: _.isArray(condition.subId) ? condition.subId : [condition.subId],
          data: {
            get_titles: condition.subIdAutocomplete,
            unique_id: elementorCommon.helpers.getUniqueId()
          },
          success: function success(response) {
            resolve(response);
          }
        });
      });
    }
    /**
     * Get the conditions from the template and normalize it to data structure
     * that the components can work with.
     */

  }, {
    key: "normalizeConditionsState",
    value: function normalizeConditionsState() {
      var _this5 = this;

      this.updateConditionsState(function () {
        return _this5.props.currentTemplate.conditions.reduce(function (current, condition) {
          var conditionObj = new _condition.default((0, _objectSpread5.default)((0, _objectSpread5.default)({}, condition), {}, {
            default: _this5.props.currentTemplate.defaultCondition,
            options: _this5.conditionsConfig.getOptions(),
            subOptions: _this5.conditionsConfig.getSubOptions(condition.name),
            subIdAutocomplete: _this5.conditionsConfig.getSubIdAutocomplete(condition.sub),
            supIdOptions: condition.subId ? [{
              value: condition.subId,
              label: condition.subId
            }] : []
          }));
          return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, current), {}, (0, _defineProperty2.default)({}, conditionObj.id, conditionObj));
        }, {});
      }).then(function () {
        (0, _values.default)(_this5.state.conditions).forEach(function (condition) {
          return _this5.checkConflicts(condition);
        });
      });
    }
    /**
     * Set titles to the subIds,
     * for the first render of the component.
     */

  }, {
    key: "setSubIdTitles",
    value: function setSubIdTitles() {
      var _this6 = this;

      return (0, _values.default)(this.state.conditions).forEach(function (condition) {
        if (!condition.subId) {
          return;
        }

        return _this6.fetchSubIdsTitles(condition).then(function (response) {
          return _this6.updateConditionItemState(condition.id, {
            subIdOptions: [{
              label: (0, _values.default)(response)[0],
              value: condition.subId
            }]
          }, false);
        });
      });
    }
    /**
     * Update state of specific condition item.
     *
     * @param {any} id
     * @param {any} args
     * @param {boolean} shouldCheckConflicts
     */

  }, {
    key: "updateConditionItemState",
    value: function updateConditionItemState(id, args) {
      var _this7 = this;

      var shouldCheckConflicts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;

      if (args.name) {
        args.subOptions = this.conditionsConfig.getSubOptions(args.name);
      }

      if (args.sub || args.name) {
        args.subIdAutocomplete = this.conditionsConfig.getSubIdAutocomplete(args.sub); // In case that the condition has been changed, it will set the options of the subId
        // to empty array to let select2 autocomplete handle the options.

        args.subIdOptions = [];
      }

      this.updateConditionsState(function (prev) {
        var condition = prev[id];
        return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, prev), {}, (0, _defineProperty2.default)({}, id, condition.clone().set(args)));
      }).then(function () {
        if (shouldCheckConflicts) {
          _this7.checkConflicts(_this7.findConditionItemInState(id));
        }
      });
    }
    /**
     * Remove a condition item from the state.
     *
     * @param {any} id
     */

  }, {
    key: "removeConditionItemInState",
    value: function removeConditionItemInState(id) {
      this.updateConditionsState(function (prev) {
        var newConditions = (0, _objectSpread5.default)({}, prev);
        delete newConditions[id];
        return newConditions;
      });
    }
    /**
     * Add a new condition item into the state.
     *
     * @param {boolean} shouldCheckConflicts
     */

  }, {
    key: "createConditionItemInState",
    value: function createConditionItemInState() {
      var _this8 = this;

      var shouldCheckConflicts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
      var defaultCondition = this.props.currentTemplate.defaultCondition,
          newCondition = new _condition.default({
        name: defaultCondition,
        default: defaultCondition,
        options: this.conditionsConfig.getOptions(),
        subOptions: this.conditionsConfig.getSubOptions(defaultCondition),
        subIdAutocomplete: this.conditionsConfig.getSubIdAutocomplete('')
      });
      this.updateConditionsState(function (prev) {
        return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, prev), {}, (0, _defineProperty2.default)({}, newCondition.id, newCondition));
      }).then(function () {
        if (shouldCheckConflicts) {
          _this8.checkConflicts(newCondition);
        }
      });
    }
    /**
     * Find a condition item from the conditions state.
     *
     * @param {any} id
     * @return {Condition|null} -
     */

  }, {
    key: "findConditionItemInState",
    value: function findConditionItemInState(id) {
      return (0, _values.default)(this.state.conditions).find(function (c) {
        return c.id === id;
      });
    }
    /**
     * Update the whole conditions state.
     *
     * @param {Function} callback
     * @return {Promise<any>} -
     */

  }, {
    key: "updateConditionsState",
    value: function updateConditionsState(callback) {
      var _this9 = this;

      return new _promise.default(function (resolve) {
        return _this9.setState(function (prev) {
          return {
            conditions: callback(prev.conditions)
          };
        }, resolve);
      });
    }
    /**
     * Renders the provider.
     *
     * @return {any} -
     */

  }, {
    key: "render",
    value: function render() {
      if (this.state.action.current === ConditionsProvider.actions.FETCH_CONFIG) {
        if (this.state.error) {
          return /*#__PURE__*/_react.default.createElement("h3", null, __('Error:', 'elementor-pro'), " ", this.state.error);
        }

        if (this.state.loading) {
          return /*#__PURE__*/_react.default.createElement("h3", null, __('Loading', 'elementor-pro'), "...");
        }
      }

      return /*#__PURE__*/_react.default.createElement(Context.Provider, {
        value: this.state
      }, this.props.children);
    }
  }]);
  return ConditionsProvider;
}(_baseContext.default);

exports.ConditionsProvider = ConditionsProvider;
(0, _defineProperty2.default)(ConditionsProvider, "propTypes", {
  children: PropTypes.any.isRequired,
  currentTemplate: PropTypes.object.isRequired,
  onConditionsSaved: PropTypes.func.isRequired,
  validateConflicts: PropTypes.bool
});
(0, _defineProperty2.default)(ConditionsProvider, "defaultProps", {
  validateConflicts: true
});
(0, _defineProperty2.default)(ConditionsProvider, "actions", {
  FETCH_CONFIG: 'fetch-config',
  SAVE: 'save',
  CHECK_CONFLICTS: 'check-conflicts'
});
var _default = ConditionsProvider;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/context/models/condition.js":
/*!*****************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/context/models/condition.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(/*! core-js/modules/es6.array.filter.js */ "../node_modules/core-js/modules/es6.array.filter.js");

__webpack_require__(/*! core-js/modules/es6.string.includes.js */ "../node_modules/core-js/modules/es6.string.includes.js");

__webpack_require__(/*! core-js/modules/es7.array.includes.js */ "../node_modules/core-js/modules/es7.array.includes.js");

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

__webpack_require__(/*! core-js/modules/es6.string.sub.js */ "../node_modules/core-js/modules/es6.string.sub.js");

var _assign = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/assign */ "../node_modules/@babel/runtime-corejs2/core-js/object/assign.js"));

var _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/array/is-array */ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js"));

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _stringify = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/json/stringify */ "../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var Condition = /*#__PURE__*/function () {
  function Condition(args) {
    (0, _classCallCheck2.default)(this, Condition);
    (0, _defineProperty2.default)(this, "id", elementorCommon.helpers.getUniqueId());
    (0, _defineProperty2.default)(this, "default", '');
    (0, _defineProperty2.default)(this, "type", 'include');
    (0, _defineProperty2.default)(this, "name", '');
    (0, _defineProperty2.default)(this, "sub", '');
    (0, _defineProperty2.default)(this, "subId", '');
    (0, _defineProperty2.default)(this, "options", []);
    (0, _defineProperty2.default)(this, "subOptions", []);
    (0, _defineProperty2.default)(this, "subIdAutocomplete", []);
    (0, _defineProperty2.default)(this, "subIdOptions", []);
    (0, _defineProperty2.default)(this, "conflictErrors", []);
    this.set(args);
  }

  (0, _createClass2.default)(Condition, [{
    key: "set",
    value: function set(args) {
      (0, _assign.default)(this, args);
      return this;
    }
  }, {
    key: "clone",
    value: function clone() {
      return (0, _assign.default)(new Condition(), this);
    }
  }, {
    key: "remove",
    value: function remove(keys) {
      var _this = this;

      if (!(0, _isArray.default)(keys)) {
        keys = [keys];
      }

      keys.forEach(function (key) {
        delete _this[key];
      });
      return this;
    }
  }, {
    key: "only",
    value: function only(keys) {
      if (!(0, _isArray.default)(keys)) {
        keys = [keys];
      }

      var keysToRemove = (0, _keys.default)(this).filter(function (conditionKey) {
        return !keys.includes(conditionKey);
      });
      this.remove(keysToRemove);
      return this;
    }
  }, {
    key: "toJson",
    value: function toJson() {
      return (0, _stringify.default)(this);
    }
  }, {
    key: "toString",
    value: function toString() {
      return this.forDb().filter(function (item) {
        return item;
      }).join('/');
    }
  }, {
    key: "forDb",
    value: function forDb() {
      return [this.type, this.name, this.sub, this.subId];
    }
  }, {
    key: "forContext",
    value: function forContext() {
      return {
        type: this.type,
        name: this.name,
        sub: this.sub,
        subId: this.subId
      };
    }
  }]);
  return Condition;
}();

exports.default = Condition;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/context/services/conditions-config.js":
/*!***************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/context/services/conditions-config.js ***!
  \***************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ConditionsConfig = void 0;

var _values = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/values */ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js"));

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/promise */ "../node_modules/@babel/runtime-corejs2/core-js/promise.js"));

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

__webpack_require__(/*! core-js/modules/es6.string.sub.js */ "../node_modules/core-js/modules/es6.string.sub.js");

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

var _objectSpread3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/typeof */ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js"));

var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/toConsumableArray */ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var _commands = __webpack_require__(/*! ../../data/commands */ "../core/app/modules/site-editor/assets/js/data/commands/index.js");

var ConditionsConfig = /*#__PURE__*/function () {
  function ConditionsConfig(config) {
    (0, _classCallCheck2.default)(this, ConditionsConfig);
    (0, _defineProperty2.default)(this, "config", null);
    this.config = config;
  }
  /**
   * @return {Promise<ConditionsConfig>} -
   */


  (0, _createClass2.default)(ConditionsConfig, [{
    key: "getOptions",
    value:
    /**
     * Get main options for condition name.
     *
     * @return {Array} -
     */
    function getOptions() {
      return this.getSubOptions('general', true).map(function (_ref) {
        var label = _ref.label,
            value = _ref.value;
        return {
          label: label,
          value: value
        };
      });
    }
    /**
     * Get the sub options for the select.
     *
     * @param {string} itemName
     * @param {boolean} isSubItem
     * @return {Array} -
     */

  }, {
    key: "getSubOptions",
    value: function getSubOptions(itemName) {
      var _this = this;

      var isSubItem = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
      var config = this.config[itemName];

      if (!config) {
        return [];
      }

      return [{
        label: config.all_label,
        value: isSubItem ? itemName : ''
      }].concat((0, _toConsumableArray2.default)(config.sub_conditions.map(function (subName) {
        var subConfig = _this.config[subName];
        return {
          label: subConfig.label,
          value: subName,
          children: subConfig.sub_conditions.length ? _this.getSubOptions(subName, true) : null
        };
      })));
    }
    /**
     * Get the autocomplete property from the conditions config
     *
     * @param {string} sub
     * @return {{}|any} -
     */

  }, {
    key: "getSubIdAutocomplete",
    value: function getSubIdAutocomplete(sub) {
      var _controls$;

      var config = this.config[sub];

      if (!config || !('object' === (0, _typeof2.default)(config.controls))) {
        return {};
      }

      var controls = (0, _values.default)(config.controls);

      if (!(controls !== null && controls !== void 0 && (_controls$ = controls[0]) !== null && _controls$ !== void 0 && _controls$.autocomplete)) {
        return {};
      }

      return controls[0].autocomplete;
    }
    /**
     * Calculate instances from the conditions.
     *
     * @param {Array} conditions
     * @return {Object} -
     */

  }, {
    key: "calculateInstances",
    value: function calculateInstances(conditions) {
      var _this2 = this;

      var instances = conditions.reduce(function (current, condition) {
        if ('exclude' === condition.type) {
          return current;
        }

        var key = condition.sub || condition.name,
            config = _this2.config[key];

        if (!config) {
          return current;
        }

        var instanceLabel = condition.subId ? "".concat(config.label, " #").concat(condition.subId) : config.all_label;
        return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, current), {}, (0, _defineProperty2.default)({}, key, instanceLabel));
      }, {});

      if (0 === (0, _keys.default)(instances).length) {
        instances = [__('No instances', 'elementor-pro')];
      }

      return instances;
    }
  }], [{
    key: "create",
    value: function create() {
      if (ConditionsConfig.instance) {
        return _promise.default.resolve(ConditionsConfig.instance);
      }

      return $e.data.get(_commands.ConditionsConfig.signature).then(function (response) {
        ConditionsConfig.instance = new ConditionsConfig(response.data);
        return ConditionsConfig.instance;
      });
    }
  }]);
  return ConditionsConfig;
}();

exports.ConditionsConfig = ConditionsConfig;
(0, _defineProperty2.default)(ConditionsConfig, "instance", void 0);
var _default = ConditionsConfig;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/context/templates.js":
/*!**********************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/context/templates.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.TemplatesProvider = exports.Context = void 0;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _values = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/values */ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js"));

var _objectSpread5 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/assertThisInitialized */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var _baseContext = _interopRequireDefault(__webpack_require__(/*! ./base-context */ "../core/app/modules/site-editor/assets/js/context/base-context.js"));

var _commands = __webpack_require__(/*! ../data/commands */ "../core/app/modules/site-editor/assets/js/data/commands/index.js");

var _component = _interopRequireDefault(__webpack_require__(/*! ../data/component */ "../core/app/modules/site-editor/assets/js/data/component.js"));

var Context = _react.default.createContext();

exports.Context = Context;

var TemplatesProvider = /*#__PURE__*/function (_BaseContext) {
  (0, _inherits2.default)(TemplatesProvider, _BaseContext);

  var _super = (0, _createSuper2.default)(TemplatesProvider);

  function TemplatesProvider(props) {
    var _this;

    (0, _classCallCheck2.default)(this, TemplatesProvider);
    _this = _super.call(this, props);
    _this.state = (0, _objectSpread5.default)((0, _objectSpread5.default)({}, _this.state), {}, {
      action: (0, _objectSpread5.default)((0, _objectSpread5.default)({}, _this.state.action), {}, {
        current: TemplatesProvider.actions.FETCH,
        loading: true
      }),
      templates: {},
      updateTemplateItemState: _this.updateTemplateItemState.bind((0, _assertThisInitialized2.default)(_this)),
      findTemplateItemInState: _this.findTemplateItemInState.bind((0, _assertThisInitialized2.default)(_this)),
      fetchTemplates: _this.fetchTemplates.bind((0, _assertThisInitialized2.default)(_this)),
      deleteTemplate: _this.deleteTemplate.bind((0, _assertThisInitialized2.default)(_this)),
      updateTemplate: _this.updateTemplate.bind((0, _assertThisInitialized2.default)(_this)),
      importTemplates: _this.importTemplates.bind((0, _assertThisInitialized2.default)(_this))
    });
    return _this;
  }

  (0, _createClass2.default)(TemplatesProvider, [{
    key: "componentDidMount",
    value: function componentDidMount() {
      this.fetchTemplates();
    }
  }, {
    key: "importTemplates",
    value: function importTemplates(_ref) {
      var _this2 = this;

      var fileName = _ref.fileName,
          fileData = _ref.fileData;
      return this.executeAction(TemplatesProvider.actions.IMPORT, function () {
        return $e.data.create(_commands.Templates.signature, {
          fileName: fileName,
          fileData: fileData
        });
      }).then(function (response) {
        _this2.updateTemplatesState(function (prev) {
          return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, prev), (0, _values.default)(response.data).reduce(function (current, template) {
            if (!template.supportsSiteEditor) {
              return current;
            }

            return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, current), {}, (0, _defineProperty2.default)({}, template.id, template));
          }, {}));
        });

        return response;
      });
    }
  }, {
    key: "deleteTemplate",
    value: function deleteTemplate(id) {
      var _this3 = this;

      return this.executeAction(TemplatesProvider.actions.DELETE, function () {
        return $e.data.delete(_commands.Templates.signature, {
          id: id
        });
      }).then(function () {
        _this3.updateTemplatesState(function (prev) {
          var newTemplates = (0, _objectSpread5.default)({}, prev);
          delete newTemplates[id];
          return newTemplates;
        });
      });
    }
  }, {
    key: "updateTemplate",
    value: function updateTemplate(id, args) {
      var _this4 = this;

      return this.executeAction(TemplatesProvider.actions.UPDATE, function () {
        return $e.data.update(_commands.Templates.signature, args, {
          id: id
        });
      }).then(function (response) {
        _this4.updateTemplateItemState(id, response.data);
      });
    }
  }, {
    key: "fetchTemplates",
    value: function fetchTemplates() {
      var _this5 = this;

      return this.executeAction(TemplatesProvider.actions.FETCH, function () {
        return $e.data.get(_commands.Templates.signature);
      }).then(function (response) {
        _this5.updateTemplatesState(function () {
          return (0, _values.default)(response.data).reduce(function (current, template) {
            return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, current), {}, (0, _defineProperty2.default)({}, template.id, template));
          }, {});
        }, false);
      });
    }
  }, {
    key: "updateTemplateItemState",
    value: function updateTemplateItemState(id, args) {
      return this.updateTemplatesState(function (prev) {
        var template = (0, _objectSpread5.default)((0, _objectSpread5.default)({}, prev[id]), args);
        return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, prev), {}, (0, _defineProperty2.default)({}, id, template));
      });
    }
  }, {
    key: "updateTemplatesState",
    value: function updateTemplatesState(callback) {
      var clearCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;

      if (clearCache) {
        $e.data.deleteCache($e.components.get(_component.default.namespace), _commands.Templates.signature);
      }

      return this.setState(function (prev) {
        return {
          templates: callback(prev.templates)
        };
      });
    }
  }, {
    key: "findTemplateItemInState",
    value: function findTemplateItemInState(id) {
      return this.state.templates[id];
    }
  }, {
    key: "render",
    value: function render() {
      if (this.state.action.current === TemplatesProvider.actions.FETCH) {
        if (this.state.action.error) {
          return /*#__PURE__*/_react.default.createElement("h3", null, __('Error:', 'elementor-pro'), " ", this.state.action.error);
        }

        if (this.state.action.loading) {
          return /*#__PURE__*/_react.default.createElement("h3", null, __('Loading', 'elementor-pro'), "...");
        }
      }

      return /*#__PURE__*/_react.default.createElement(Context.Provider, {
        value: this.state
      }, this.props.children);
    }
  }]);
  return TemplatesProvider;
}(_baseContext.default);

exports.TemplatesProvider = TemplatesProvider;
(0, _defineProperty2.default)(TemplatesProvider, "propTypes", {
  children: PropTypes.object.isRequired
});
(0, _defineProperty2.default)(TemplatesProvider, "actions", {
  FETCH: 'fetch',
  DELETE: 'delete',
  UPDATE: 'update',
  IMPORT: 'import'
});
var _default = TemplatesProvider;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/commands/conditions-config.js":
/*!************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/commands/conditions-config.js ***!
  \************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ConditionsConfig = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var ConditionsConfig = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(ConditionsConfig, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(ConditionsConfig);

  function ConditionsConfig() {
    (0, _classCallCheck2.default)(this, ConditionsConfig);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ConditionsConfig, null, [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return 'site-editor/conditions-config/{id}';
    }
  }]);
  return ConditionsConfig;
}($e.modules.CommandData);

exports.ConditionsConfig = ConditionsConfig;
(0, _defineProperty2.default)(ConditionsConfig, "signature", 'site-editor/conditions-config');
var _default = ConditionsConfig;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/commands/index.js":
/*!************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/commands/index.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "Templates", {
  enumerable: true,
  get: function get() {
    return _templates.Templates;
  }
});

_Object$defineProperty(exports, "ConditionsConfig", {
  enumerable: true,
  get: function get() {
    return _conditionsConfig.ConditionsConfig;
  }
});

_Object$defineProperty(exports, "TemplatesConditions", {
  enumerable: true,
  get: function get() {
    return _templatesConditions.TemplatesConditions;
  }
});

_Object$defineProperty(exports, "TemplatesConditionsConflicts", {
  enumerable: true,
  get: function get() {
    return _templatesConditionsConflicts.TemplatesConditionsConflicts;
  }
});

var _templates = __webpack_require__(/*! ./templates */ "../core/app/modules/site-editor/assets/js/data/commands/templates.js");

var _conditionsConfig = __webpack_require__(/*! ./conditions-config */ "../core/app/modules/site-editor/assets/js/data/commands/conditions-config.js");

var _templatesConditions = __webpack_require__(/*! ./templates-conditions */ "../core/app/modules/site-editor/assets/js/data/commands/templates-conditions.js");

var _templatesConditionsConflicts = __webpack_require__(/*! ./templates-conditions-conflicts */ "../core/app/modules/site-editor/assets/js/data/commands/templates-conditions-conflicts.js");

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/commands/templates-conditions-conflicts.js":
/*!*************************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/commands/templates-conditions-conflicts.js ***!
  \*************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.TemplatesConditionsConflicts = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var TemplatesConditionsConflicts = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(TemplatesConditionsConflicts, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(TemplatesConditionsConflicts);

  function TemplatesConditionsConflicts() {
    (0, _classCallCheck2.default)(this, TemplatesConditionsConflicts);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(TemplatesConditionsConflicts, null, [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return "".concat(TemplatesConditionsConflicts.signature, "/{id}");
    }
  }]);
  return TemplatesConditionsConflicts;
}($e.modules.CommandData);

exports.TemplatesConditionsConflicts = TemplatesConditionsConflicts;
(0, _defineProperty2.default)(TemplatesConditionsConflicts, "signature", 'site-editor/templates-conditions-conflicts');
var _default = TemplatesConditionsConflicts;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/commands/templates-conditions.js":
/*!***************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/commands/templates-conditions.js ***!
  \***************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.TemplatesConditions = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var TemplatesConditions = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(TemplatesConditions, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(TemplatesConditions);

  function TemplatesConditions() {
    (0, _classCallCheck2.default)(this, TemplatesConditions);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(TemplatesConditions, null, [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return 'site-editor/templates-conditions/{id}';
    }
  }]);
  return TemplatesConditions;
}($e.modules.CommandData);

exports.TemplatesConditions = TemplatesConditions;
(0, _defineProperty2.default)(TemplatesConditions, "signature", 'site-editor/templates-conditions');
var _default = TemplatesConditions;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/commands/templates.js":
/*!****************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/commands/templates.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Templates = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var Templates = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(Templates, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(Templates);

  function Templates() {
    (0, _classCallCheck2.default)(this, Templates);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Templates, null, [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return 'site-editor/templates/{id}';
    }
  }]);
  return Templates;
}($e.modules.CommandData);

exports.Templates = Templates;
(0, _defineProperty2.default)(Templates, "signature", 'site-editor/templates');
var _default = Templates;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/component.js":
/*!*******************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/component.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var dataCommands = _interopRequireWildcard(__webpack_require__(/*! ./commands */ "../core/app/modules/site-editor/assets/js/data/commands/index.js"));

var Component = /*#__PURE__*/function (_$e$modules$Component) {
  (0, _inherits2.default)(Component, _$e$modules$Component);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "getNamespace",
    value: function getNamespace() {
      return this.constructor.namespace;
    }
  }, {
    key: "defaultData",
    value: function defaultData() {
      return this.importCommands(dataCommands);
    }
  }]);
  return Component;
}($e.modules.ComponentBase);

exports.default = Component;
(0, _defineProperty2.default)(Component, "namespace", 'site-editor');

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/hooks/use-templates-screenshot.js":
/*!***********************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/hooks/use-templates-screenshot.js ***!
  \***********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var React = __webpack_require__(/*! react */ "react");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = useTemplatesScreenshot;

var _values = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/values */ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js"));

__webpack_require__(/*! core-js/modules/es6.array.filter.js */ "../node_modules/core-js/modules/es6.array.filter.js");

var _templates = __webpack_require__(/*! ../context/templates */ "../core/app/modules/site-editor/assets/js/context/templates.js");

var _useScreenshot = _interopRequireWildcard(__webpack_require__(/*! modules/screenshots/app/assets/js/hooks/use-screenshot */ "../modules/screenshots/app/assets/js/hooks/use-screenshot.js"));

/**
 * Wrapper function that was made to take screenshots specific for template.
 * it will capture a screenshot and update the templates context with the new screenshot.
 *
 * @param {any} templateType
 */
function useTemplatesScreenshot() {
  var templateType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;

  var _React$useContext = React.useContext(_templates.Context),
      updateTemplateItemState = _React$useContext.updateTemplateItemState,
      templates = _React$useContext.templates;

  var templatesForScreenshot = (0, _values.default)(templates).filter(function (template) {
    return shouldScreenshotTemplate(template, templateType);
  }); // Start to capture screenshots.

  var screenshot = (0, _useScreenshot.default)(templatesForScreenshot); // Update the thumbnail url when screenshot created.

  React.useEffect(function () {
    screenshot.posts.filter(function (post) {
      return post.status === _useScreenshot.SCREENSHOT_STATUS_SUCCEED;
    }).forEach(function (post) {
      return updateTemplateItemState(post.id, {
        thumbnail: post.imageUrl
      });
    });
  }, [screenshot.succeed]); // Update the screenshot url that was failed.
  // When the user will hit the route on the second time it will avoid trying to take another screenshot.

  React.useEffect(function () {
    screenshot.posts.filter(function (post) {
      return post.status === _useScreenshot.SCREENSHOT_STATUS_FAILED;
    }).forEach(function (post) {
      return updateTemplateItemState(post.id, {
        screenshot_url: null
      });
    });
  }, [screenshot.failed]);
  return screenshot;
}
/**
 * Filter handler.
 * will remove all the drafts and private and also will filter by template type if exists.
 *
 * @param {any} template
 * @param {any} templateType
 * @return {boolean} -
 */


function shouldScreenshotTemplate(template) {
  var templateType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;

  if (templateType) {
    return false;
  }

  return 'publish' === template.status && !template.thumbnail && template.screenshot_url;
}

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/molecules/back-button.js":
/*!**************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/molecules/back-button.js ***!
  \**************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = BackButton;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

__webpack_require__(/*! ./back-button.scss */ "../core/app/modules/site-editor/assets/js/molecules/back-button.scss");

function BackButton(props) {
  return /*#__PURE__*/_react.default.createElement("div", {
    className: "back-button-wrapper"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Button, {
    className: "eps-back-button",
    text: __('Back', 'elementor-pro'),
    icon: "eicon-chevron-left",
    onClick: props.onClick
  }));
}

BackButton.propTypes = {
  onClick: PropTypes.func
};
BackButton.defaultProps = {
  onClick: function onClick() {
    return history.back();
  }
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/molecules/site-template-body.js":
/*!*********************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/molecules/site-template-body.js ***!
  \*********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.SiteTemplateBody = void 0;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var _siteTemplateThumbnail = _interopRequireDefault(__webpack_require__(/*! ./site-template-thumbnail */ "../core/app/modules/site-editor/assets/js/molecules/site-template-thumbnail.js"));

var _previewIframe = _interopRequireDefault(__webpack_require__(/*! ../atoms/preview-iframe */ "../core/app/modules/site-editor/assets/js/atoms/preview-iframe.js"));

var SiteTemplateBody = function SiteTemplateBody(props) {
  return /*#__PURE__*/_react.default.createElement(_appUi.CardBody, null, props.extended ? /*#__PURE__*/_react.default.createElement(_previewIframe.default, {
    src: props.previewUrl,
    templateType: props.type
  }) : /*#__PURE__*/_react.default.createElement(_siteTemplateThumbnail.default, {
    id: props.id,
    title: props.title,
    type: props.type,
    thumbnail: props.thumbnail,
    placeholder: props.placeholderUrl
  }));
};

exports.SiteTemplateBody = SiteTemplateBody;
SiteTemplateBody.propTypes = {
  extended: PropTypes.bool,
  id: PropTypes.number,
  title: PropTypes.string,
  thumbnail: PropTypes.string,
  placeholderUrl: PropTypes.string,
  type: PropTypes.string,
  previewUrl: PropTypes.string
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/molecules/site-template-footer.js":
/*!***********************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/molecules/site-template-footer.js ***!
  \***********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.SiteTemplateFooter = void 0;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _values = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/values */ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var SiteTemplateFooter = function SiteTemplateFooter(props) {
  var instances = (0, _values.default)(props.instances).join(', ');
  return /*#__PURE__*/_react.default.createElement(_appUi.CardFooter, null, /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-template__instances"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Icon, {
    className: "eicon-flow"
  }), /*#__PURE__*/_react.default.createElement(_appUi.Text, {
    tag: "span",
    variant: "sm"
  }, /*#__PURE__*/_react.default.createElement("b", null, __('Instances', 'elementor-pro'), ":")), /*#__PURE__*/_react.default.createElement(_appUi.Text, {
    className: "e-site-template__instances-list",
    tag: "span",
    variant: "xxs"
  }, " ", instances), /*#__PURE__*/_react.default.createElement(_appUi.Button, {
    text: __('Edit Conditions', 'elementor-pro'),
    className: "e-site-template__edit-conditions",
    url: "/site-editor/conditions/".concat(props.id)
  })));
};

exports.SiteTemplateFooter = SiteTemplateFooter;
SiteTemplateFooter.propTypes = {
  id: PropTypes.number.isRequired,
  instances: PropTypes.any
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/molecules/site-template-header.js":
/*!***********************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/molecules/site-template-header.js ***!
  \***********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.SiteTemplateHeader = void 0;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var _dialogsAndButtons = _interopRequireDefault(__webpack_require__(/*! ../part-actions/dialogs-and-buttons */ "../core/app/modules/site-editor/assets/js/part-actions/dialogs-and-buttons.js"));

var _indicatorBullet = __webpack_require__(/*! ../atoms/indicator-bullet */ "../core/app/modules/site-editor/assets/js/atoms/indicator-bullet.js");

var SiteTemplateHeader = function SiteTemplateHeader(props) {
  var status = props.status && 'publish' !== props.status ? " (".concat(props.status, ")") : '',
      title = props.title + status,
      ActionButtons = function ActionButtons() {
    return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_appUi.Button, {
      text: __('Edit', 'elementor-pro'),
      icon: "eicon-edit",
      className: "e-site-template__edit-btn",
      size: "sm",
      url: props.editURL
    }), /*#__PURE__*/_react.default.createElement(_dialogsAndButtons.default, props));
  },
      MetaDataIcon = function MetaDataIcon(innerProps) {
    return /*#__PURE__*/_react.default.createElement(_appUi.Text, {
      tag: "span",
      className: "e-site-template__meta-data"
    }, /*#__PURE__*/_react.default.createElement(_appUi.Icon, {
      className: innerProps.icon
    }), innerProps.content);
  },
      MetaData = function MetaData() {
    return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(MetaDataIcon, {
      icon: "eicon-user-circle-o",
      content: props.author
    }), /*#__PURE__*/_react.default.createElement(MetaDataIcon, {
      icon: "eicon-clock-o",
      content: props.modifiedDate
    }));
  };

  return /*#__PURE__*/_react.default.createElement(_appUi.CardHeader, null, /*#__PURE__*/_react.default.createElement(_indicatorBullet.Indicator, {
    active: props.isActive
  }), /*#__PURE__*/_react.default.createElement(_appUi.Heading, {
    tag: "h1",
    title: title,
    variant: "text-sm",
    className: "eps-card__headline"
  }, title), props.extended && /*#__PURE__*/_react.default.createElement(MetaData, null), props.extended && /*#__PURE__*/_react.default.createElement(ActionButtons, null));
};

exports.SiteTemplateHeader = SiteTemplateHeader;
SiteTemplateHeader.propTypes = {
  isActive: PropTypes.bool,
  author: PropTypes.string,
  editURL: PropTypes.string,
  extended: PropTypes.bool,
  modifiedDate: PropTypes.string,
  status: PropTypes.string,
  title: PropTypes.string
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/molecules/site-template-thumbnail.js":
/*!**************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/molecules/site-template-thumbnail.js ***!
  \**************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = SiteTemplateThumbnail;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

function SiteTemplateThumbnail(props) {
  return /*#__PURE__*/_react.default.createElement(_appUi.CardImage, {
    alt: props.title,
    src: props.thumbnail || props.placeholder,
    className: !props.thumbnail ? 'e-site-template__placeholder' : ''
  }, /*#__PURE__*/_react.default.createElement(_appUi.CardOverlay, {
    className: "e-site-template__overlay-preview"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Button, {
    className: "e-site-template__overlay-preview-button",
    text: __('Preview', 'elementor-pro'),
    icon: "eicon-preview-medium",
    url: "/site-editor/templates/".concat(props.type, "/").concat(props.id)
  })));
}

SiteTemplateThumbnail.propTypes = {
  id: PropTypes.number,
  title: PropTypes.string,
  type: PropTypes.string,
  thumbnail: PropTypes.string,
  placeholder: PropTypes.string
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/molecules/site-template.js":
/*!****************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/molecules/site-template.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = SiteTemplate;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var _siteTemplateHeader = __webpack_require__(/*! ./site-template-header */ "../core/app/modules/site-editor/assets/js/molecules/site-template-header.js");

var _siteTemplateBody = __webpack_require__(/*! ./site-template-body */ "../core/app/modules/site-editor/assets/js/molecules/site-template-body.js");

var _siteTemplateFooter = __webpack_require__(/*! ./site-template-footer */ "../core/app/modules/site-editor/assets/js/molecules/site-template-footer.js");

__webpack_require__(/*! ./site-template.scss */ "../core/app/modules/site-editor/assets/js/molecules/site-template.scss");

function SiteTemplate(props) {
  var baseClassName = 'e-site-template',
      classes = [baseClassName],
      ref = _react.default.useRef(null);

  _react.default.useEffect(function () {
    if (!props.isSelected) {
      return;
    }

    ref.current.scrollIntoView({
      behavior: 'smooth',
      block: 'start'
    });
  }, [props.isSelected]);

  if (props.extended) {
    classes.push("".concat(baseClassName, "--extended"));
  }

  if (props.aspectRatio) {
    classes.push("".concat(baseClassName, "--").concat(props.aspectRatio));
  }

  var CardFooter = props.extended ? /*#__PURE__*/_react.default.createElement(_siteTemplateFooter.SiteTemplateFooter, props) : '';
  return /*#__PURE__*/_react.default.createElement(_appUi.Card, {
    className: classes.join(' '),
    ref: ref
  }, /*#__PURE__*/_react.default.createElement(_siteTemplateHeader.SiteTemplateHeader, props), /*#__PURE__*/_react.default.createElement(_siteTemplateBody.SiteTemplateBody, props), CardFooter);
}

SiteTemplate.propTypes = {
  aspectRatio: PropTypes.string,
  className: PropTypes.string,
  extended: PropTypes.bool,
  id: PropTypes.number.isRequired,
  isActive: PropTypes.bool.isRequired,
  status: PropTypes.string,
  thumbnail: PropTypes.string.isRequired,
  title: PropTypes.string.isRequired,
  isSelected: PropTypes.bool,
  type: PropTypes.string.isRequired
};
SiteTemplate.defaultProps = {
  isSelected: false
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/organisms/site-templates.js":
/*!*****************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/organisms/site-templates.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = SiteTemplates;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/extends */ "../node_modules/@babel/runtime-corejs2/helpers/extends.js"));

__webpack_require__(/*! core-js/modules/es6.array.filter.js */ "../node_modules/core-js/modules/es6.array.filter.js");

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _values = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/values */ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js"));

var _parseInt2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/parse-int */ "../node_modules/@babel/runtime-corejs2/core-js/parse-int.js"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var _siteTemplate = _interopRequireDefault(__webpack_require__(/*! ../molecules/site-template */ "../core/app/modules/site-editor/assets/js/molecules/site-template.js"));

var _dialogsAndButtons = __webpack_require__(/*! ../part-actions/dialogs-and-buttons */ "../core/app/modules/site-editor/assets/js/part-actions/dialogs-and-buttons.js");

var _templates = __webpack_require__(/*! ../context/templates */ "../core/app/modules/site-editor/assets/js/context/templates.js");

var _useTemplatesScreenshot = _interopRequireDefault(__webpack_require__(/*! ../hooks/use-templates-screenshot */ "../core/app/modules/site-editor/assets/js/hooks/use-templates-screenshot.js"));

function SiteTemplates(props) {
  var _React$useContext = _react.default.useContext(_templates.Context),
      contextTemplates = _React$useContext.templates,
      action = _React$useContext.action,
      resetActionState = _React$useContext.resetActionState;

  var gridColumns, templates; // Make the templates object a memorize value, will re run again only if
  // templates has been changed, also sort the templates by `isActive`.

  templates = _react.default.useMemo(function () {
    return (0, _values.default)(contextTemplates).sort(function (a, b) {
      // This sort make sure to show first the active templates, second the
      // inactive templates that are not draft, and then the drafts,
      // in each category it sorts it inside by date.
      if (!b.isActive && !a.isActive) {
        if ('draft' === b.status && 'draft' === a.status || 'draft' !== b.status && 'draft' !== a.status) {
          return b.date < a.date ? 1 : -1;
        }

        return 'draft' === a.status ? 1 : -1;
      }

      if (b.isActive && a.isActive) {
        return b.date < a.date ? 1 : -1;
      }

      return b.isActive ? 1 : -1;
    });
  }, [contextTemplates]); // Start to capture screenshots.

  (0, _useTemplatesScreenshot.default)(props.type);
  var siteTemplateConfig = {};

  if (props.type) {
    templates = templates.filter(function (item) {
      return item.type === props.type;
    });
    siteTemplateConfig.extended = true;
    siteTemplateConfig.type = props.type;

    switch (props.type) {
      case 'header':
      case 'footer':
        gridColumns = 1;
        siteTemplateConfig.aspectRatio = 'wide';
        break;

      default:
        gridColumns = 2;
    }
  }

  if (!templates || !templates.length) {
    return /*#__PURE__*/_react.default.createElement("h3", null, __('No Templates found. Want to create one?', 'elementor-pro'), "...");
  }

  return /*#__PURE__*/_react.default.createElement("section", {
    className: "e-site-editor__site-templates"
  }, /*#__PURE__*/_react.default.createElement(_dialogsAndButtons.PartActionsDialogs, null), action.error && /*#__PURE__*/_react.default.createElement(_appUi.Dialog, {
    text: action.error,
    dismissButtonText: __('Go Back', 'elementor-pro'),
    dismissButtonOnClick: resetActionState,
    approveButtonText: __('Learn More', 'elementor-pro'),
    approveButtonColor: "link",
    approveButtonUrl: "https://go.elementor.com/app-theme-builder-template-load-issue",
    approveButtonTarget: "_target"
  }), /*#__PURE__*/_react.default.createElement(_appUi.CssGrid, {
    columns: gridColumns,
    spacing: 24,
    colMinWidth: 200
  }, templates.map(function (item) {
    return /*#__PURE__*/_react.default.createElement(_siteTemplate.default, (0, _extends2.default)({
      key: item.id
    }, item, siteTemplateConfig, {
      isSelected: (0, _parseInt2.default)(props.id) === item.id
    }));
  })));
}

SiteTemplates.propTypes = {
  type: PropTypes.string,
  id: PropTypes.string
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/add-new.js":
/*!******************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/add-new.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = AddNew;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var _siteEditor = __webpack_require__(/*! @elementor/site-editor */ "@elementor/site-editor");

__webpack_require__(/*! ./add-new.scss */ "../core/app/modules/site-editor/assets/js/pages/add-new.scss");

var _templates = __webpack_require__(/*! ../context/templates */ "../core/app/modules/site-editor/assets/js/context/templates.js");

var _backButton = _interopRequireDefault(__webpack_require__(/*! ../molecules/back-button */ "../core/app/modules/site-editor/assets/js/molecules/back-button.js"));

function AddNew() {
  var _React$useContext = _react.default.useContext(_templates.Context),
      templates = _React$useContext.templates,
      hasTemplates = 1 <= (0, _keys.default)(templates).length;
  /**
   * An hover element for each site part.
   *
   * @param {any} props
   */


  var HoverElement = function HoverElement(props) {
    return /*#__PURE__*/_react.default.createElement("a", {
      href: props.urls.create,
      className: "eps-card__image-overlay eps-add-new__overlay"
    }, /*#__PURE__*/_react.default.createElement(_appUi.AddNewButton, {
      hideText: true
    }));
  };

  HoverElement.propTypes = {
    urls: PropTypes.object.isRequired
  };
  return /*#__PURE__*/_react.default.createElement("section", {
    className: "e-site-editor__add-new"
  }, /*#__PURE__*/_react.default.createElement("header", {
    className: "e-site-editor__header"
  }, hasTemplates && /*#__PURE__*/_react.default.createElement(_backButton.default, null), /*#__PURE__*/_react.default.createElement(_appUi.Heading, {
    variant: "h1"
  }, __('Start customizing every part of your site', 'elementor-pro'))), /*#__PURE__*/_react.default.createElement(_siteEditor.SiteParts, {
    hoverElement: HoverElement
  }));
}

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-conflicts.js":
/*!*****************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/conditions/condition-conflicts.js ***!
  \*****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = ConditionConflicts;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

function ConditionConflicts(props) {
  if (!props.conflicts.length) {
    return '';
  }

  var conflictLinks = props.conflicts.map(function (conflict) {
    return /*#__PURE__*/_react.default.createElement(_appUi.Button, {
      key: conflict.template_id,
      target: "_blank",
      url: conflict.edit_url,
      text: conflict.template_title
    });
  });
  return /*#__PURE__*/_react.default.createElement(_appUi.Text, {
    className: "e-site-editor-conditions__conflict",
    variant: "sm"
  }, __('Elementor recognized that you have set this location for other templates: ', 'elementor-pro'), " ", conflictLinks);
}

ConditionConflicts.propTypes = {
  conflicts: PropTypes.array.isRequired
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-name.js":
/*!************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/conditions/condition-name.js ***!
  \************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = ConditionName;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

function ConditionName(props) {
  // Hide for template types that has another default, like single & archive.
  if ('general' !== props.default) {
    return '';
  }

  var onChange = function onChange(e) {
    return props.updateConditions(props.id, {
      name: e.target.value,
      sub: '',
      subId: ''
    });
  };

  return /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-editor-conditions__input-wrapper"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Select, {
    options: props.options,
    value: props.name,
    onChange: onChange
  }));
}

ConditionName.propTypes = {
  updateConditions: PropTypes.func.isRequired,
  id: PropTypes.string.isRequired,
  name: PropTypes.string.isRequired,
  options: PropTypes.array.isRequired,
  default: PropTypes.string.isRequired
};
ConditionName.defaultProps = {
  name: ''
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-sub-id.js":
/*!**************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/conditions/condition-sub-id.js ***!
  \**************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = ConditionSubId;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

__webpack_require__(/*! core-js/modules/es6.string.sub.js */ "../node_modules/core-js/modules/es6.string.sub.js");

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

/**
 * Main component.
 *
 * @param {any} props
 * @return {any} -
 * @class
 */
function ConditionSubId(props) {
  if (!props.sub || !(0, _keys.default)(props.subIdAutocomplete).length) {
    return '';
  }

  var settings = _react.default.useMemo(function () {
    return getSettings(props.subIdAutocomplete);
  }, [props.subIdAutocomplete]);

  var onChange = function onChange(e) {
    return props.updateConditions(props.id, {
      subId: e.target.value
    });
  };

  return /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-editor-conditions__input-wrapper"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Select2, {
    onChange: onChange,
    value: props.subId,
    settings: settings,
    options: props.subIdOptions
  }));
}
/**
 * Get settings for the select2 base on the autocomplete settings,
 * that passes as a prop
 *
 * @param {any} autocomplete
 * @return {Object} -
 */


function getSettings(autocomplete) {
  return {
    allowClear: false,
    placeholder: __('All', 'elementor-pro'),
    dir: elementorCommon.config.isRTL ? 'rtl' : 'ltr',
    ajax: {
      transport: function transport(params, success, failure) {
        return elementorCommon.ajax.addRequest('pro_panel_posts_control_filter_autocomplete', {
          data: {
            q: params.data.q,
            autocomplete: autocomplete
          },
          success: success,
          error: failure
        });
      },
      data: function data(params) {
        return {
          q: params.term,
          page: params.page
        };
      },
      cache: true
    },
    escapeMarkup: function escapeMarkup(markup) {
      return markup;
    },
    minimumInputLength: 1
  };
}

ConditionSubId.propTypes = {
  subIdAutocomplete: PropTypes.object,
  id: PropTypes.string.isRequired,
  sub: PropTypes.string,
  subId: PropTypes.string,
  updateConditions: PropTypes.func,
  subIdOptions: PropTypes.array
};
ConditionSubId.defaultProps = {
  subId: '',
  subIdOptions: []
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-sub.js":
/*!***********************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/conditions/condition-sub.js ***!
  \***********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = ConditionSub;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

__webpack_require__(/*! core-js/modules/es6.string.sub.js */ "../node_modules/core-js/modules/es6.string.sub.js");

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

function ConditionSub(props) {
  if ('general' === props.name || !props.subOptions.length) {
    return '';
  }

  var onChange = function onChange(e) {
    return props.updateConditions(props.id, {
      sub: e.target.value,
      subId: ''
    });
  };

  return /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-editor-conditions__input-wrapper"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Select, {
    options: props.subOptions,
    value: props.sub,
    onChange: onChange
  }));
}

ConditionSub.propTypes = {
  updateConditions: PropTypes.func.isRequired,
  id: PropTypes.string.isRequired,
  name: PropTypes.string.isRequired,
  sub: PropTypes.string.isRequired,
  subOptions: PropTypes.array.isRequired
};
ConditionSub.defaultProps = {
  sub: '',
  subOptions: {}
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-type.js":
/*!************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/conditions/condition-type.js ***!
  \************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = ConditionType;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

function ConditionType(props) {
  var wrapperRef = _react.default.createRef();

  var options = [{
    label: __('Include', 'elementor-pro'),
    value: 'include'
  }, {
    label: __('Exclude', 'elementor-pro'),
    value: 'exclude'
  }];

  var onChange = function onChange(e) {
    props.updateConditions(props.id, {
      type: e.target.value
    });
  };

  _react.default.useEffect(function () {
    wrapperRef.current.setAttribute('data-elementor-condition-type', props.type);
  });

  return /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-editor-conditions__input-wrapper e-site-editor-conditions__input-wrapper--condition-type",
    ref: wrapperRef
  }, /*#__PURE__*/_react.default.createElement(_appUi.Select, {
    options: options,
    value: props.type,
    onChange: onChange
  }));
}

ConditionType.propTypes = {
  updateConditions: PropTypes.func.isRequired,
  id: PropTypes.string.isRequired,
  type: PropTypes.string.isRequired
};
ConditionType.defaultProps = {
  type: ''
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/conditions/conditions-rows.js":
/*!*************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/conditions/conditions-rows.js ***!
  \*************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = ConditionsRows;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/extends */ "../node_modules/@babel/runtime-corejs2/helpers/extends.js"));

var _values = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/values */ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js"));

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _conditions = __webpack_require__(/*! ../../context/conditions */ "../core/app/modules/site-editor/assets/js/context/conditions.js");

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var _conditionType = _interopRequireDefault(__webpack_require__(/*! ./condition-type */ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-type.js"));

var _conditionName = _interopRequireDefault(__webpack_require__(/*! ./condition-name */ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-name.js"));

var _conditionSub = _interopRequireDefault(__webpack_require__(/*! ./condition-sub */ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-sub.js"));

var _conditionSubId = _interopRequireDefault(__webpack_require__(/*! ./condition-sub-id */ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-sub-id.js"));

var _conditionConflicts = _interopRequireDefault(__webpack_require__(/*! ./condition-conflicts */ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-conflicts.js"));

function ConditionsRows(props) {
  var _React$useContext = _react.default.useContext(_conditions.Context),
      conditions = _React$useContext.conditions,
      create = _React$useContext.createConditionItemInState,
      update = _React$useContext.updateConditionItemState,
      remove = _React$useContext.removeConditionItemInState,
      save = _React$useContext.saveConditions,
      action = _React$useContext.action,
      resetActionState = _React$useContext.resetActionState;

  var rows = (0, _values.default)(conditions).map(function (condition) {
    return /*#__PURE__*/_react.default.createElement("div", {
      key: condition.id
    }, /*#__PURE__*/_react.default.createElement("div", {
      className: "e-site-editor-conditions__row"
    }, /*#__PURE__*/_react.default.createElement("div", {
      className: "e-site-editor-conditions__row-controls ".concat(condition.conflictErrors.length && 'e-site-editor-conditions__row-controls--error')
    }, /*#__PURE__*/_react.default.createElement(_conditionType.default, (0, _extends2.default)({}, condition, {
      updateConditions: update
    })), /*#__PURE__*/_react.default.createElement("div", {
      className: "e-site-editor-conditions__row-controls-inner"
    }, /*#__PURE__*/_react.default.createElement(_conditionName.default, (0, _extends2.default)({}, condition, {
      updateConditions: update
    })), /*#__PURE__*/_react.default.createElement(_conditionSub.default, (0, _extends2.default)({}, condition, {
      updateConditions: update
    })), /*#__PURE__*/_react.default.createElement(_conditionSubId.default, (0, _extends2.default)({}, condition, {
      updateConditions: update
    })))), /*#__PURE__*/_react.default.createElement(_appUi.Button, {
      className: "e-site-editor-conditions__remove-condition",
      text: __('Delete', 'elementor-pro'),
      icon: "eicon-close",
      hideText: true,
      onClick: function onClick() {
        return remove(condition.id);
      }
    })), /*#__PURE__*/_react.default.createElement(_conditionConflicts.default, {
      conflicts: condition.conflictErrors
    }));
  });
  var isSaving = action.current === _conditions.ConditionsProvider.actions.SAVE && action.loading;
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, action.error && /*#__PURE__*/_react.default.createElement(_appUi.Dialog, {
    text: action.error,
    dismissButtonText: __('Go Back', 'elementor-pro'),
    dismissButtonOnClick: resetActionState,
    approveButtonText: __('Learn More', 'elementor-pro'),
    approveButtonColor: "link",
    approveButtonUrl: "https://go.elementor.com/app-theme-builder-conditions-load-issue",
    approveButtonTarget: "_target"
  }), /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-editor-conditions__rows"
  }, rows), /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-editor-conditions__add-button-container"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Button, {
    className: "e-site-editor-conditions__add-button",
    variant: "contained",
    size: "lg",
    text: __('Add Condition', 'elementor-pro'),
    onClick: create
  })), /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-editor-conditions__footer"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Button, {
    variant: "contained",
    color: "primary",
    size: "lg",
    hideText: isSaving,
    icon: isSaving ? 'eicon-loading eicon-animation-spin' : '',
    text: __('Save & Close', 'elementor-pro'),
    onClick: function onClick() {
      return save().then(props.onAfterSave);
    }
  })));
}

ConditionsRows.propTypes = {
  onAfterSave: PropTypes.func
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/conditions/conditions.js":
/*!********************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/conditions/conditions.js ***!
  \********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Conditions;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _parseInt2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/parse-int */ "../node_modules/@babel/runtime-corejs2/core-js/parse-int.js"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var _conditions = _interopRequireDefault(__webpack_require__(/*! ../../context/conditions */ "../core/app/modules/site-editor/assets/js/context/conditions.js"));

var _templates = __webpack_require__(/*! ../../context/templates */ "../core/app/modules/site-editor/assets/js/context/templates.js");

var _conditionsRows = _interopRequireDefault(__webpack_require__(/*! ./conditions-rows */ "../core/app/modules/site-editor/assets/js/pages/conditions/conditions-rows.js"));

__webpack_require__(/*! ./conditions.scss */ "../core/app/modules/site-editor/assets/js/pages/conditions/conditions.scss");

var _backButton = _interopRequireDefault(__webpack_require__(/*! ../../molecules/back-button */ "../core/app/modules/site-editor/assets/js/molecules/back-button.js"));

function Conditions(props) {
  var _React$useContext = _react.default.useContext(_templates.Context),
      findTemplateItemInState = _React$useContext.findTemplateItemInState,
      updateTemplateItemState = _React$useContext.updateTemplateItemState,
      template = findTemplateItemInState((0, _parseInt2.default)(props.id));

  if (!template) {
    return /*#__PURE__*/_react.default.createElement("div", null, __('Not Found', 'elementor-pro'));
  }

  return /*#__PURE__*/_react.default.createElement("section", {
    className: "e-site-editor-conditions"
  }, /*#__PURE__*/_react.default.createElement(_backButton.default, null), /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-editor-conditions__header"
  }, /*#__PURE__*/_react.default.createElement("img", {
    className: "e-site-editor-conditions__header-image",
    src: "".concat(elementorAppProConfig.baseUrl, "/modules/theme-builder/assets/images/conditions-tab.svg"),
    alt: __('Import template', 'elementor-pro')
  }), /*#__PURE__*/_react.default.createElement(_appUi.Heading, {
    variant: "h1",
    tag: "h1"
  }, __('Where Do You Want to Display Your Template?', 'elementor-pro')), /*#__PURE__*/_react.default.createElement(_appUi.Text, {
    variant: "p"
  }, __('Set the conditions that determine where your template is used throughout your site.', 'elementor-pro'), /*#__PURE__*/_react.default.createElement("br", null), __('For example, choose \'Entire Site\' to display the template across your site.', 'elementor-pro'))), /*#__PURE__*/_react.default.createElement(_conditions.default, {
    currentTemplate: template,
    onConditionsSaved: updateTemplateItemState
  }, /*#__PURE__*/_react.default.createElement(_conditionsRows.default, {
    onAfterSave: function onAfterSave() {
      return history.back();
    }
  })));
}

Conditions.propTypes = {
  id: PropTypes.string
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/import.js":
/*!*****************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/import.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Import;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/promise */ "../node_modules/@babel/runtime-corejs2/core-js/promise.js"));

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

__webpack_require__(/*! core-js/modules/es6.regexp.replace.js */ "../node_modules/core-js/modules/es6.regexp.replace.js");

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var _templates = __webpack_require__(/*! ../context/templates */ "../core/app/modules/site-editor/assets/js/context/templates.js");

var _backButton = _interopRequireDefault(__webpack_require__(/*! ../molecules/back-button */ "../core/app/modules/site-editor/assets/js/molecules/back-button.js"));

function Import() {
  var _React$useContext = _react.default.useContext(_templates.Context),
      importTemplates = _React$useContext.importTemplates,
      action = _React$useContext.action,
      resetActionState = _React$useContext.resetActionState,
      _React$useState = _react.default.useState(null),
      _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
      importedTemplate = _React$useState2[0],
      setImportedTemplate = _React$useState2[1],
      isImport = _react.default.useMemo(function () {
    return action.current === _templates.TemplatesProvider.actions.IMPORT;
  }, [action]),
      isUploading = _react.default.useMemo(function () {
    return isImport && action.loading;
  }, [action]),
      hasError = _react.default.useMemo(function () {
    return isImport && action.error;
  }, [action]);

  var upload = _react.default.useCallback(function (file) {
    if (isUploading) {
      return;
    }

    readFile(file).then(function (fileData) {
      return importTemplates({
        fileName: file.name,
        fileData: fileData
      });
    }).then(function (response) {
      // For now it show a dialog for the first template ONLY!
      setImportedTemplate(response.data[0]);
    });
  }, []);

  return /*#__PURE__*/_react.default.createElement("section", {
    className: "site-editor__import"
  }, importedTemplate && /*#__PURE__*/_react.default.createElement(_appUi.Dialog, {
    title: __('Your template was imported', 'elementor-pro'),
    approveButtonText: __('Preview', 'elementor-pro'),
    approveButtonUrl: importedTemplate.url,
    approveButtonTarget: "_blank",
    dismissButtonText: __('Edit', 'elementor-pro'),
    dismissButtonUrl: importedTemplate.editURL,
    dismissButtonTarget: "_top",
    onClose: function onClose() {
      return setImportedTemplate(null);
    }
  }), hasError && /*#__PURE__*/_react.default.createElement(_appUi.Dialog, {
    title: action.error,
    approveButtonText: __('Learn More', 'elementor-pro'),
    approveButtonUrl: "https://go.elementor.com/app-theme-builder-import-issue",
    approveButtonTarget: "_blank",
    approveButtonColor: "link",
    dismissButtonText: __('Go Back', 'elementor-pro'),
    dismissButtonOnClick: resetActionState,
    onClose: resetActionState
  }), /*#__PURE__*/_react.default.createElement(_backButton.default, null), /*#__PURE__*/_react.default.createElement(_appUi.DropZone, {
    heading: __('Import Template To Your Library', 'elementor-pro'),
    text: __('Drag & Drop your .JSON or .zip template file', 'elementor-pro'),
    secondaryText: __('or', 'elementor-pro'),
    onFileSelect: upload,
    isLoading: isUploading,
    filetypes: ['zip', 'json']
  }));
}

function readFile(file) {
  return new _promise.default(function (resolve) {
    var fileReader = new FileReader();
    fileReader.readAsDataURL(file);

    fileReader.onload = function (event) {
      // Replace the mime type that prepended to the base64 with empty string and return a
      // resolved promise only with the base64 string.
      resolve(event.target.result.replace(/^[^,]+,/, ''));
    };
  });
}

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/template-type.js":
/*!************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/template-type.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = TemplateType;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

var _siteEditor = __webpack_require__(/*! @elementor/site-editor */ "@elementor/site-editor");

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var _siteTemplates = _interopRequireDefault(__webpack_require__(/*! ../organisms/site-templates */ "../core/app/modules/site-editor/assets/js/organisms/site-templates.js"));

__webpack_require__(/*! ./template-type.scss */ "../core/app/modules/site-editor/assets/js/pages/template-type.scss");

function TemplateType(props) {
  var _React$useContext = _react.default.useContext(_siteEditor.TemplateTypesContext),
      templateTypes = _React$useContext.templateTypes,
      currentType = templateTypes.find(function (item) {
    return item.type === props.type;
  });

  if (!currentType) {
    return /*#__PURE__*/_react.default.createElement(_appUi.NotFound, null);
  }

  return /*#__PURE__*/_react.default.createElement("section", {
    className: "e-site-editor__templates e-site-editor__templates--type-".concat(props.type)
  }, /*#__PURE__*/_react.default.createElement(_appUi.Grid, {
    className: "page-header",
    container: true,
    justify: "space-between"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Heading, {
    variant: "h1"
  }, currentType.page_title), /*#__PURE__*/_react.default.createElement(_appUi.AddNewButton, {
    url: currentType.urls.create,
    text: __('Add New', 'elementor-pro')
  })), /*#__PURE__*/_react.default.createElement("hr", {
    className: "eps-separator"
  }), /*#__PURE__*/_react.default.createElement(_siteTemplates.default, {
    type: currentType.type,
    id: props.id
  }));
}

TemplateType.propTypes = {
  type: PropTypes.string,
  page_title: PropTypes.string,
  id: PropTypes.string
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/templates.js":
/*!********************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/templates.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Templates;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _siteTemplates = _interopRequireDefault(__webpack_require__(/*! ../organisms/site-templates */ "../core/app/modules/site-editor/assets/js/organisms/site-templates.js"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

function Templates() {
  return /*#__PURE__*/_react.default.createElement("section", {
    className: "e-site-editor__site-templates"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Grid, {
    container: true,
    justify: "space-between",
    className: "page-header"
  }, /*#__PURE__*/_react.default.createElement("h1", null, __('Your Site\'s Global Parts', 'elementor-pro')), /*#__PURE__*/_react.default.createElement(_appUi.AddNewButton, {
    url: "/site-editor/add-new"
  })), /*#__PURE__*/_react.default.createElement("hr", {
    className: "eps-separator"
  }), /*#__PURE__*/_react.default.createElement(_siteTemplates.default, null));
}

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/part-actions/dialog-delete.js":
/*!*******************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/part-actions/dialog-delete.js ***!
  \*******************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = DialogDelete;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var _templates = __webpack_require__(/*! ../context/templates */ "../core/app/modules/site-editor/assets/js/context/templates.js");

function DialogDelete(props) {
  var _React$useContext = _react.default.useContext(_templates.Context),
      deleteTemplate = _React$useContext.deleteTemplate,
      findTemplateItemInState = _React$useContext.findTemplateItemInState,
      template = findTemplateItemInState(props.id);

  var closeDialog = function closeDialog(shouldUpdate) {
    props.setId(null);

    if (shouldUpdate) {
      deleteTemplate(props.id);
    }
  };

  if (!props.id) {
    return '';
  }

  return /*#__PURE__*/_react.default.createElement(_appUi.Dialog, {
    title: __('Move Item To Trash', 'elementor-pro'),
    text: __('Are you sure you want to move this item to trash:', 'elementor-pro') + " \"".concat(template.title, "\""),
    onSubmit: function onSubmit() {
      return closeDialog(true);
    },
    approveButtonText: __('Move to Trash', 'elementor-pro'),
    approveButtonOnClick: function approveButtonOnClick() {
      return closeDialog(true);
    },
    approveButtonColor: "danger",
    dismissButtonText: __('Cancel', 'elementor-pro'),
    dismissButtonOnClick: function dismissButtonOnClick() {
      return closeDialog();
    },
    onClose: function onClose() {
      return closeDialog();
    }
  });
}

DialogDelete.propTypes = {
  id: PropTypes.number,
  setId: PropTypes.func.isRequired
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/part-actions/dialog-rename.js":
/*!*******************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/part-actions/dialog-rename.js ***!
  \*******************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = DialogRename;

var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var _templates = __webpack_require__(/*! ../context/templates */ "../core/app/modules/site-editor/assets/js/context/templates.js");

function DialogRename(props) {
  var _React$useContext = _react.default.useContext(_templates.Context),
      findTemplateItemInState = _React$useContext.findTemplateItemInState,
      updateTemplate = _React$useContext.updateTemplate,
      template = findTemplateItemInState(props.id);

  var _React$useState = _react.default.useState(''),
      _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
      title = _React$useState2[0],
      setTitle = _React$useState2[1];

  (0, _react.useEffect)(function () {
    // The "title" state should be updated if the template title changed.
    if (template) {
      setTitle(template.title);
    }
  }, [template]);

  var closeDialog = function closeDialog(shouldUpdate) {
    props.setId(null);

    if (shouldUpdate) {
      updateTemplate(props.id, {
        post_title: title
      });
    }
  };

  if (!props.id) {
    return '';
  }

  return /*#__PURE__*/_react.default.createElement(_appUi.Dialog, {
    title: __('Rename Site Part', 'elementor-pro'),
    approveButtonText: __('Change', 'elementor-pro'),
    onSubmit: function onSubmit() {
      return closeDialog(true);
    },
    approveButtonOnClick: function approveButtonOnClick() {
      return closeDialog(true);
    },
    approveButtonColor: "primary",
    dismissButtonText: __('Cancel', 'elementor-pro'),
    dismissButtonOnClick: function dismissButtonOnClick() {
      return closeDialog();
    },
    onClose: function onClose() {
      return closeDialog();
    }
  }, /*#__PURE__*/_react.default.createElement("input", {
    type: "text",
    className: "eps-input eps-input-text eps-input--block",
    autoFocus: true,
    value: title,
    onChange: function onChange(e) {
      return setTitle(e.target.value);
    }
  }));
}

DialogRename.propTypes = {
  id: PropTypes.number,
  setId: PropTypes.func.isRequired
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/part-actions/dialogs-and-buttons.js":
/*!*************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/part-actions/dialogs-and-buttons.js ***!
  \*************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.PartActionsDialogs = PartActionsDialogs;
exports.default = PartActionsButtons;
exports.handlers = void 0;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _dialogRename = _interopRequireDefault(__webpack_require__(/*! ./dialog-rename */ "../core/app/modules/site-editor/assets/js/part-actions/dialog-rename.js"));

var _dialogDelete = _interopRequireDefault(__webpack_require__(/*! ./dialog-delete */ "../core/app/modules/site-editor/assets/js/part-actions/dialog-delete.js"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var handlers = {
  rename: null,
  delete: null
}; // TODO: Think about refactor to portals: https://reactjs.org/docs/portals.html

exports.handlers = handlers;

function PartActionsDialogs() {
  var _React$useState = _react.default.useState(null),
      _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
      DialogRenameId = _React$useState2[0],
      setDialogRenameId = _React$useState2[1];

  var _React$useState3 = _react.default.useState(null),
      _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
      DialogDeleteId = _React$useState4[0],
      setDialogDeleteId = _React$useState4[1];

  handlers.rename = setDialogRenameId;
  handlers.delete = setDialogDeleteId;
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_dialogRename.default, {
    id: DialogRenameId,
    setId: setDialogRenameId
  }), /*#__PURE__*/_react.default.createElement(_dialogDelete.default, {
    id: DialogDeleteId,
    setId: setDialogDeleteId
  }));
}

function PartActionsButtons(props) {
  var _React$useState5 = _react.default.useState(false),
      _React$useState6 = (0, _slicedToArray2.default)(_React$useState5, 2),
      showMenu = _React$useState6[0],
      setShowMenu = _React$useState6[1];

  var SiteTemplatePopover = '';

  if (showMenu) {
    SiteTemplatePopover = /*#__PURE__*/_react.default.createElement(_appUi.Popover, {
      closeFunction: function closeFunction() {
        return setShowMenu(!showMenu);
      }
    }, /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement(_appUi.Button, {
      className: "eps-popover__item",
      icon: "eicon-sign-out",
      text: __('Export', 'elementor-pro'),
      url: props.exportLink
    })), /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement(_appUi.Button, {
      className: "eps-popover__item eps-popover__item--danger",
      icon: "eicon-trash-o",
      text: __('Trash', 'elementor-pro'),
      onClick: function onClick() {
        return handlers.delete(props.id);
      }
    })), /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement(_appUi.Button, {
      className: "eps-popover__item",
      icon: "eicon-edit",
      text: __('Rename', 'elementor-pro'),
      onClick: function onClick() {
        return handlers.rename(props.id);
      }
    })));
  }

  return /*#__PURE__*/_react.default.createElement("div", {
    className: "eps-popover__container"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Button, {
    text: __('Toggle', 'elementor-pro'),
    hideText: true,
    icon: "eicon-ellipsis-h",
    size: "lg",
    onClick: function onClick() {
      return setShowMenu(!showMenu);
    }
  }), SiteTemplatePopover);
}

PartActionsButtons.propTypes = {
  id: PropTypes.number.isRequired,
  exportLink: PropTypes.string.isRequired
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/site-editor.js":
/*!****************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/site-editor.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js");

var _templates = _interopRequireDefault(__webpack_require__(/*! ./pages/templates */ "../core/app/modules/site-editor/assets/js/pages/templates.js"));

var _templateType = _interopRequireDefault(__webpack_require__(/*! ./pages/template-type */ "../core/app/modules/site-editor/assets/js/pages/template-type.js"));

var _addNew = _interopRequireDefault(__webpack_require__(/*! ./pages/add-new */ "../core/app/modules/site-editor/assets/js/pages/add-new.js"));

var _conditions = _interopRequireDefault(__webpack_require__(/*! ./pages/conditions/conditions */ "../core/app/modules/site-editor/assets/js/pages/conditions/conditions.js"));

var _import = _interopRequireDefault(__webpack_require__(/*! ./pages/import */ "../core/app/modules/site-editor/assets/js/pages/import.js"));

var _templates2 = _interopRequireWildcard(__webpack_require__(/*! ./context/templates */ "../core/app/modules/site-editor/assets/js/context/templates.js"));

var _siteEditor = __webpack_require__(/*! @elementor/site-editor */ "@elementor/site-editor");

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var _router2 = _interopRequireDefault(__webpack_require__(/*! @elementor/router */ "@elementor/router"));

var _component = _interopRequireDefault(__webpack_require__(/*! ./data/component */ "../core/app/modules/site-editor/assets/js/data/component.js"));

__webpack_require__(/*! ./site-editor.scss */ "../core/app/modules/site-editor/assets/js/site-editor.scss");

function SiteEditor() {
  var _elementorAppProConfi, _elementorAppProConfi2;

  var headerButtons = [{
    id: 'import',
    text: __('import', 'elementor-pro'),
    hideText: true,
    icon: 'eicon-download-circle-o',
    onClick: function onClick() {
      return _router2.default.appHistory.navigate('site-editor/import');
    }
  }]; // Remove Core cache.

  elementorCommon.ajax.invalidateCache({
    unique_id: 'app_site_editor_template_types'
  });

  var SiteEditorDefault = function SiteEditorDefault() {
    var _React$useContext = _react.default.useContext(_templates2.Context),
        templates = _React$useContext.templates;

    if ((0, _keys.default)(templates).length) {
      return /*#__PURE__*/_react.default.createElement(_router.Redirect, {
        from: '/',
        to: '/site-editor/templates',
        noThrow: true
      });
    }

    return /*#__PURE__*/_react.default.createElement(_router.Redirect, {
      from: '/',
      to: '/site-editor/add-new',
      noThrow: true
    });
  };

  return /*#__PURE__*/_react.default.createElement(_appUi.ErrorBoundary, {
    title: __('Theme Builder could not be loaded', 'elementor-pro'),
    learnMoreUrl: "https://go.elementor.com/app-theme-builder-load-issue"
  }, /*#__PURE__*/_react.default.createElement(_siteEditor.Layout, {
    allPartsButton: /*#__PURE__*/_react.default.createElement(_siteEditor.AllPartsButton, {
      url: "/site-editor"
    }),
    headerButtons: headerButtons
  }, /*#__PURE__*/_react.default.createElement(_appUi.Grid, {
    container: true,
    className: "e-site-editor__content_container"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Grid, {
    item: true,
    className: "e-site-editor__content_container_main"
  }, /*#__PURE__*/_react.default.createElement(_templates2.default, null, /*#__PURE__*/_react.default.createElement(_router.LocationProvider, {
    history: _router2.default.appHistory
  }, /*#__PURE__*/_react.default.createElement(_router.Router, null, /*#__PURE__*/_react.default.createElement(SiteEditorDefault, {
    path: "/site-editor"
  }), /*#__PURE__*/_react.default.createElement(_templates.default, {
    path: "site-editor/templates"
  }), /*#__PURE__*/_react.default.createElement(_templateType.default, {
    path: "site-editor/templates/:type/*id"
  }), /*#__PURE__*/_react.default.createElement(_addNew.default, {
    path: "site-editor/add-new"
  }), /*#__PURE__*/_react.default.createElement(_conditions.default, {
    path: "site-editor/conditions/:id"
  }), /*#__PURE__*/_react.default.createElement(_import.default, {
    path: "site-editor/import"
  }), /*#__PURE__*/_react.default.createElement(_siteEditor.NotFound, {
    default: true
  }))))), /*#__PURE__*/_react.default.createElement(_appUi.Grid, {
    item: true,
    className: "e-site-editor__content_container_secondary"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Button, {
    text: __('Switch to table view', 'elementor-pro'),
    url: (_elementorAppProConfi = elementorAppProConfig['site-editor']) === null || _elementorAppProConfi === void 0 ? void 0 : (_elementorAppProConfi2 = _elementorAppProConfi.urls) === null || _elementorAppProConfi2 === void 0 ? void 0 : _elementorAppProConfi2.legacy_view
  })))));
}

var Module = function Module() {
  (0, _classCallCheck2.default)(this, Module);
  elementorCommon.debug.addURLToWatch('elementor-pro/assets');
  $e.components.register(new _component.default());

  _router2.default.addRoute({
    path: '/site-editor/*',
    component: SiteEditor
  });
};

exports.default = Module;

/***/ }),

/***/ "../modules/screenshots/app/assets/js/hooks/use-screenshot.js":
/*!********************************************************************!*\
  !*** ../modules/screenshots/app/assets/js/hooks/use-screenshot.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var React = __webpack_require__(/*! react */ "react");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = useScreenshot;
exports.SCREENSHOT_STATUS_FAILED = exports.SCREENSHOT_STATUS_SUCCEED = exports.SCREENSHOT_STATUS_IN_PROGRESS = exports.SCREENSHOT_STATUS_QUEUE = void 0;

var _parseInt2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/parse-int */ "../node_modules/@babel/runtime-corejs2/core-js/parse-int.js"));

var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/toConsumableArray */ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

__webpack_require__(/*! core-js/modules/es6.array.filter.js */ "../node_modules/core-js/modules/es6.array.filter.js");

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

var _React = React,
    useState = _React.useState,
    useEffect = _React.useEffect,
    useMemo = _React.useMemo,
    useCallback = _React.useCallback;
var SCREENSHOT_STATUS_QUEUE = 'queue';
exports.SCREENSHOT_STATUS_QUEUE = SCREENSHOT_STATUS_QUEUE;
var SCREENSHOT_STATUS_IN_PROGRESS = 'in-progress';
exports.SCREENSHOT_STATUS_IN_PROGRESS = SCREENSHOT_STATUS_IN_PROGRESS;
var SCREENSHOT_STATUS_SUCCEED = 'succeed';
exports.SCREENSHOT_STATUS_SUCCEED = SCREENSHOT_STATUS_SUCCEED;
var SCREENSHOT_STATUS_FAILED = 'failed';
/**
 * Default options for the hook function
 *
 * @type {{numberOfScreenshotInParallel: number}}
 */

exports.SCREENSHOT_STATUS_FAILED = SCREENSHOT_STATUS_FAILED;
var defaultOptions = {
  numberOfScreenshotInParallel: 1
};
/**
 * Filter the posts by status.
 *
 * @param {Array} posts
 * @param {string} status
 * @return {Array} -
 */

function filterPostByStatus(posts, status) {
  return posts.filter(function (item) {
    return status === item.status;
  });
}
/**
 * Receive the initial posts and normalize it
 * to an array that the hook can work with.
 *
 * @param {Array} posts
 */


function normalizeInitialPosts(posts) {
  return posts.map(function (post) {
    return {
      id: post.id,
      screenshot_url: post.screenshot_url,
      status: 'queue',
      iframe: null,
      imageUrl: null
    };
  });
}
/**
 * Find the post id inside the posts array, update it with the attrs,
 * and make sure to return the whole posts array.
 *
 *
 * @param {Array} posts
 * @param {number} id
 * @param {Object} attrs
 * @return {Array} -
 */


function updatePostsAttrs(posts, id) {
  var attrs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  return posts.map(function (post) {
    if (post.id !== id) {
      return post;
    }

    return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, post), attrs);
  });
}
/**
 * Creates an IFrame that will create the screenshot.
 *
 * @param {Object} post
 * @return {any} -
 */


function createScreenshotIframe(post) {
  var iframe = document.createElement('iframe');
  iframe.src = post.screenshot_url;
  iframe.width = '1200';
  iframe.style = 'visibility: hidden;';
  document.body.appendChild(iframe);
  return iframe;
}
/**
 * Returns a callback, that will be bind to the iframe message event.
 *
 * @param {Array} inProgressPosts
 * @param {Function} setPosts
 * @return {any} -
 */


function useIFrameMessageListener(inProgressPosts, setPosts) {
  return useCallback(function (message) {
    var data = message.data;

    if (!data.name || data.name !== 'capture-screenshot-done') {
      return;
    }

    var post = inProgressPosts.find(function (item) {
      return item.id === (0, _parseInt2.default)(data.id);
    });

    if (!post) {
      return;
    }

    post.iframe.remove();
    setPosts(function (prevState) {
      return updatePostsAttrs(prevState, post.id, {
        status: data.success ? SCREENSHOT_STATUS_SUCCEED : SCREENSHOT_STATUS_FAILED,
        imageUrl: data.imageUrl
      });
    });
  }, [inProgressPosts]);
}
/**
 * Will create a screenshot based on the posts that was passed to it.
 *
 * @param {Array} initialPosts
 * @param {number} numberOfScreenshotInParallel
 * @return {{inProgress: Array, succeed: Array, failed: Array, posts: Array, queue: Array}} -
 */


function useScreenshot(initialPosts) {
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions,
      numberOfScreenshotInParallel = _ref.numberOfScreenshotInParallel;

  var _useState = useState([]),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      posts = _useState2[0],
      setPosts = _useState2[1]; // Holds some kind of computed value of the `posts` state,
  // it is been created mostly for convenient workflow and little bit performance optimization.


  var queue = useMemo(function () {
    return filterPostByStatus(posts, SCREENSHOT_STATUS_QUEUE);
  }, [posts]);
  var inProgress = useMemo(function () {
    return filterPostByStatus(posts, SCREENSHOT_STATUS_IN_PROGRESS);
  }, [posts]);
  var succeed = useMemo(function () {
    return filterPostByStatus(posts, SCREENSHOT_STATUS_SUCCEED);
  }, [posts]);
  var failed = useMemo(function () {
    return filterPostByStatus(posts, SCREENSHOT_STATUS_FAILED);
  }, [posts]); // Will run every initialPosts change, make the diff between the local state
  // and initialPosts and creates a new local state.

  useEffect(function () {
    var postsDiff = initialPosts.filter(function (initialPost) {
      return !posts.find(function (statePost) {
        return statePost.id === initialPost.id;
      });
    });

    if (!postsDiff.length) {
      return;
    }

    setPosts(function (prev) {
      return [].concat((0, _toConsumableArray2.default)(prev), (0, _toConsumableArray2.default)(normalizeInitialPosts(postsDiff)));
    });
  }, [initialPosts]); // Holds the useCallback that will be used to listen to the screenshot iframe events.

  var iframeMessageListener = useIFrameMessageListener(inProgress, setPosts); // Listens to the screenshot iframe events
  // eventually will remove the iframe and set the post status to succeed or failed.

  useEffect(function () {
    window.addEventListener('message', iframeMessageListener, false);
    return function () {
      window.removeEventListener('message', iframeMessageListener);
    };
  }, [iframeMessageListener]); // Runs every time `posts` state change (all most every event in this hook will trigger change to `posts`),
  // this logic response for setting status of the process to DONE if needed + taking the next post and start
  // to capture a screenshot.

  useEffect(function () {
    if (0 === queue.length || inProgress.length >= numberOfScreenshotInParallel) {
      return;
    }

    var _queue = (0, _slicedToArray2.default)(queue, 1),
        nextPost = _queue[0];

    var iframe = createScreenshotIframe(nextPost);
    setPosts(function (prevState) {
      return updatePostsAttrs(prevState, nextPost.id, {
        status: SCREENSHOT_STATUS_IN_PROGRESS,
        iframe: iframe
      });
    });
  }, [posts]);
  return {
    posts: posts,
    queue: queue,
    inProgress: inProgress,
    succeed: succeed,
    failed: failed
  };
}

/***/ }),

/***/ "../node_modules/core-js/library/fn/array/from.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/fn/array/from.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../../modules/es6.array.from */ "../node_modules/core-js/library/modules/es6.array.from.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Array.from;


/***/ }),

/***/ "../node_modules/core-js/library/fn/array/is-array.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/fn/array/is-array.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.array.is-array */ "../node_modules/core-js/library/modules/es6.array.is-array.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Array.isArray;


/***/ }),

/***/ "../node_modules/core-js/library/fn/json/stringify.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/fn/json/stringify.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js");
var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });
module.exports = function stringify(it) { // eslint-disable-line no-unused-vars
  return $JSON.stringify.apply($JSON, arguments);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/assign.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/assign.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.assign */ "../node_modules/core-js/library/modules/es6.object.assign.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.assign;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/create.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/create.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.create */ "../node_modules/core-js/library/modules/es6.object.create.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function create(P, D) {
  return $Object.create(P, D);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/define-properties.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/define-properties.js ***!
  \**********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.define-properties */ "../node_modules/core-js/library/modules/es6.object.define-properties.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function defineProperties(T, D) {
  return $Object.defineProperties(T, D);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/define-property.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/define-property.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.define-property */ "../node_modules/core-js/library/modules/es6.object.define-property.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function defineProperty(it, key, desc) {
  return $Object.defineProperty(it, key, desc);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-own-property-descriptor.js":
/*!********************************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-own-property-descriptor.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.get-own-property-descriptor */ "../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function getOwnPropertyDescriptor(it, key) {
  return $Object.getOwnPropertyDescriptor(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-own-property-descriptors.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-own-property-descriptors.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es7.object.get-own-property-descriptors */ "../node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.getOwnPropertyDescriptors;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-own-property-symbols.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-own-property-symbols.js ***!
  \*****************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.symbol */ "../node_modules/core-js/library/modules/es6.symbol.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.getOwnPropertySymbols;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-prototype-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-prototype-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.get-prototype-of */ "../node_modules/core-js/library/modules/es6.object.get-prototype-of.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.getPrototypeOf;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/keys.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/keys.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.keys */ "../node_modules/core-js/library/modules/es6.object.keys.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.keys;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/set-prototype-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/set-prototype-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.set-prototype-of */ "../node_modules/core-js/library/modules/es6.object.set-prototype-of.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.setPrototypeOf;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/values.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/values.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es7.object.values */ "../node_modules/core-js/library/modules/es7.object.values.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.values;


/***/ }),

/***/ "../node_modules/core-js/library/fn/parse-int.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/fn/parse-int.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../modules/es6.parse-int */ "../node_modules/core-js/library/modules/es6.parse-int.js");
module.exports = __webpack_require__(/*! ../modules/_core */ "../node_modules/core-js/library/modules/_core.js").parseInt;


/***/ }),

/***/ "../node_modules/core-js/library/fn/promise.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/library/fn/promise.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../modules/es6.object.to-string */ "../node_modules/core-js/library/modules/es6.object.to-string.js");
__webpack_require__(/*! ../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../modules/web.dom.iterable */ "../node_modules/core-js/library/modules/web.dom.iterable.js");
__webpack_require__(/*! ../modules/es6.promise */ "../node_modules/core-js/library/modules/es6.promise.js");
__webpack_require__(/*! ../modules/es7.promise.finally */ "../node_modules/core-js/library/modules/es7.promise.finally.js");
__webpack_require__(/*! ../modules/es7.promise.try */ "../node_modules/core-js/library/modules/es7.promise.try.js");
module.exports = __webpack_require__(/*! ../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Promise;


/***/ }),

/***/ "../node_modules/core-js/library/fn/reflect/construct.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/fn/reflect/construct.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.reflect.construct */ "../node_modules/core-js/library/modules/es6.reflect.construct.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Reflect.construct;


/***/ }),

/***/ "../node_modules/core-js/library/fn/symbol/index.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/fn/symbol/index.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.symbol */ "../node_modules/core-js/library/modules/es6.symbol.js");
__webpack_require__(/*! ../../modules/es6.object.to-string */ "../node_modules/core-js/library/modules/es6.object.to-string.js");
__webpack_require__(/*! ../../modules/es7.symbol.async-iterator */ "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js");
__webpack_require__(/*! ../../modules/es7.symbol.observable */ "../node_modules/core-js/library/modules/es7.symbol.observable.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Symbol;


/***/ }),

/***/ "../node_modules/core-js/library/fn/symbol/iterator.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/fn/symbol/iterator.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../../modules/web.dom.iterable */ "../node_modules/core-js/library/modules/web.dom.iterable.js");
module.exports = __webpack_require__(/*! ../../modules/_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js").f('iterator');


/***/ }),

/***/ "../node_modules/core-js/library/fn/weak-map.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/library/fn/weak-map.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../modules/es6.object.to-string */ "../node_modules/core-js/library/modules/es6.object.to-string.js");
__webpack_require__(/*! ../modules/web.dom.iterable */ "../node_modules/core-js/library/modules/web.dom.iterable.js");
__webpack_require__(/*! ../modules/es6.weak-map */ "../node_modules/core-js/library/modules/es6.weak-map.js");
__webpack_require__(/*! ../modules/es7.weak-map.of */ "../node_modules/core-js/library/modules/es7.weak-map.of.js");
__webpack_require__(/*! ../modules/es7.weak-map.from */ "../node_modules/core-js/library/modules/es7.weak-map.from.js");
module.exports = __webpack_require__(/*! ../modules/_core */ "../node_modules/core-js/library/modules/_core.js").WeakMap;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_a-function.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_a-function.js ***!
  \**************************************************************/
/***/ ((module) => {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_add-to-unscopables.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_add-to-unscopables.js ***!
  \**********************************************************************/
/***/ ((module) => {

module.exports = function () { /* empty */ };


/***/ }),

/***/ "../node_modules/core-js/library/modules/_an-instance.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_an-instance.js ***!
  \***************************************************************/
/***/ ((module) => {

module.exports = function (it, Constructor, name, forbiddenField) {
  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
    throw TypeError(name + ': incorrect invocation!');
  } return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_an-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_an-object.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-includes.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-includes.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "../node_modules/core-js/library/modules/_to-absolute-index.js");
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-methods.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-methods.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 0 -> Array#forEach
// 1 -> Array#map
// 2 -> Array#filter
// 3 -> Array#some
// 4 -> Array#every
// 5 -> Array#find
// 6 -> Array#findIndex
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/library/modules/_iobject.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var asc = __webpack_require__(/*! ./_array-species-create */ "../node_modules/core-js/library/modules/_array-species-create.js");
module.exports = function (TYPE, $create) {
  var IS_MAP = TYPE == 1;
  var IS_FILTER = TYPE == 2;
  var IS_SOME = TYPE == 3;
  var IS_EVERY = TYPE == 4;
  var IS_FIND_INDEX = TYPE == 6;
  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
  var create = $create || asc;
  return function ($this, callbackfn, that) {
    var O = toObject($this);
    var self = IObject(O);
    var f = ctx(callbackfn, that, 3);
    var length = toLength(self.length);
    var index = 0;
    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
    var val, res;
    for (;length > index; index++) if (NO_HOLES || index in self) {
      val = self[index];
      res = f(val, index, O);
      if (TYPE) {
        if (IS_MAP) result[index] = res;   // map
        else if (res) switch (TYPE) {
          case 3: return true;             // some
          case 5: return val;              // find
          case 6: return index;            // findIndex
          case 2: result.push(val);        // filter
        } else if (IS_EVERY) return false; // every
      }
    }
    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-species-constructor.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-species-constructor.js ***!
  \*****************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species');

module.exports = function (original) {
  var C;
  if (isArray(original)) {
    C = original.constructor;
    // cross-realm fallback
    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
    if (isObject(C)) {
      C = C[SPECIES];
      if (C === null) C = undefined;
    }
  } return C === undefined ? Array : C;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-species-create.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-species-create.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
var speciesConstructor = __webpack_require__(/*! ./_array-species-constructor */ "../node_modules/core-js/library/modules/_array-species-constructor.js");

module.exports = function (original, length) {
  return new (speciesConstructor(original))(length);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_bind.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_bind.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var invoke = __webpack_require__(/*! ./_invoke */ "../node_modules/core-js/library/modules/_invoke.js");
var arraySlice = [].slice;
var factories = {};

var construct = function (F, len, args) {
  if (!(len in factories)) {
    for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';
    // eslint-disable-next-line no-new-func
    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
  } return factories[len](F, args);
};

module.exports = Function.bind || function bind(that /* , ...args */) {
  var fn = aFunction(this);
  var partArgs = arraySlice.call(arguments, 1);
  var bound = function (/* args... */) {
    var args = partArgs.concat(arraySlice.call(arguments));
    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
  };
  if (isObject(fn.prototype)) bound.prototype = fn.prototype;
  return bound;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_classof.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_classof.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_cof.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_cof.js ***!
  \*******************************************************/
/***/ ((module) => {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_collection-weak.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_collection-weak.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var redefineAll = __webpack_require__(/*! ./_redefine-all */ "../node_modules/core-js/library/modules/_redefine-all.js");
var getWeak = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js").getWeak;
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var anInstance = __webpack_require__(/*! ./_an-instance */ "../node_modules/core-js/library/modules/_an-instance.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");
var createArrayMethod = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/library/modules/_array-methods.js");
var $has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var validate = __webpack_require__(/*! ./_validate-collection */ "../node_modules/core-js/library/modules/_validate-collection.js");
var arrayFind = createArrayMethod(5);
var arrayFindIndex = createArrayMethod(6);
var id = 0;

// fallback for uncaught frozen keys
var uncaughtFrozenStore = function (that) {
  return that._l || (that._l = new UncaughtFrozenStore());
};
var UncaughtFrozenStore = function () {
  this.a = [];
};
var findUncaughtFrozen = function (store, key) {
  return arrayFind(store.a, function (it) {
    return it[0] === key;
  });
};
UncaughtFrozenStore.prototype = {
  get: function (key) {
    var entry = findUncaughtFrozen(this, key);
    if (entry) return entry[1];
  },
  has: function (key) {
    return !!findUncaughtFrozen(this, key);
  },
  set: function (key, value) {
    var entry = findUncaughtFrozen(this, key);
    if (entry) entry[1] = value;
    else this.a.push([key, value]);
  },
  'delete': function (key) {
    var index = arrayFindIndex(this.a, function (it) {
      return it[0] === key;
    });
    if (~index) this.a.splice(index, 1);
    return !!~index;
  }
};

module.exports = {
  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
    var C = wrapper(function (that, iterable) {
      anInstance(that, C, NAME, '_i');
      that._t = NAME;      // collection type
      that._i = id++;      // collection id
      that._l = undefined; // leak store for uncaught frozen objects
      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
    });
    redefineAll(C.prototype, {
      // 23.3.3.2 WeakMap.prototype.delete(key)
      // 23.4.3.3 WeakSet.prototype.delete(value)
      'delete': function (key) {
        if (!isObject(key)) return false;
        var data = getWeak(key);
        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
        return data && $has(data, this._i) && delete data[this._i];
      },
      // 23.3.3.4 WeakMap.prototype.has(key)
      // 23.4.3.4 WeakSet.prototype.has(value)
      has: function has(key) {
        if (!isObject(key)) return false;
        var data = getWeak(key);
        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
        return data && $has(data, this._i);
      }
    });
    return C;
  },
  def: function (that, key, value) {
    var data = getWeak(anObject(key), true);
    if (data === true) uncaughtFrozenStore(that).set(key, value);
    else data[that._i] = value;
    return that;
  },
  ufstore: uncaughtFrozenStore
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_collection.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_collection.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var meta = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var redefineAll = __webpack_require__(/*! ./_redefine-all */ "../node_modules/core-js/library/modules/_redefine-all.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");
var anInstance = __webpack_require__(/*! ./_an-instance */ "../node_modules/core-js/library/modules/_an-instance.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var each = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/library/modules/_array-methods.js")(0);
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");

module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
  var Base = global[NAME];
  var C = Base;
  var ADDER = IS_MAP ? 'set' : 'add';
  var proto = C && C.prototype;
  var O = {};
  if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
    new C().entries().next();
  }))) {
    // create collection constructor
    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
    redefineAll(C.prototype, methods);
    meta.NEED = true;
  } else {
    C = wrapper(function (target, iterable) {
      anInstance(target, C, NAME, '_c');
      target._c = new Base();
      if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);
    });
    each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {
      var IS_ADDER = KEY == 'add' || KEY == 'set';
      if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {
        anInstance(this, C, KEY);
        if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;
        var result = this._c[KEY](a === 0 ? 0 : a, b);
        return IS_ADDER ? this : result;
      });
    });
    IS_WEAK || dP(C.prototype, 'size', {
      get: function () {
        return this._c.size;
      }
    });
  }

  setToStringTag(C, NAME);

  O[NAME] = C;
  $export($export.G + $export.W + $export.F, O);

  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);

  return C;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_core.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_core.js ***!
  \********************************************************/
/***/ ((module) => {

var core = module.exports = { version: '2.6.12' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/library/modules/_create-property.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_create-property.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $defineProperty = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");

module.exports = function (object, index, value) {
  if (index in object) $defineProperty.f(object, index, createDesc(0, value));
  else object[index] = value;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_ctx.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_ctx.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// optional / simple context binding
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_defined.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_defined.js ***!
  \***********************************************************/
/***/ ((module) => {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_descriptors.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_descriptors.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_dom-create.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_dom-create.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_enum-bug-keys.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_enum-bug-keys.js ***!
  \*****************************************************************/
/***/ ((module) => {

// IE 8- don't enum bug keys
module.exports = (
  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');


/***/ }),

/***/ "../node_modules/core-js/library/modules/_enum-keys.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_enum-keys.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// all enumerable object keys, includes symbols
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
module.exports = function (it) {
  var result = getKeys(it);
  var getSymbols = gOPS.f;
  if (getSymbols) {
    var symbols = getSymbols(it);
    var isEnum = pIE.f;
    var i = 0;
    var key;
    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
  } return result;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_export.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_export.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var IS_WRAP = type & $export.W;
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE];
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
  var key, own, out;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    if (own && has(exports, key)) continue;
    // export native or passed
    out = own ? target[key] : source[key];
    // prevent global pollution for namespaces
    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
    // bind timers to global for call from export context
    : IS_BIND && own ? ctx(out, global)
    // wrap global constructors for prevent change them in library
    : IS_WRAP && target[key] == out ? (function (C) {
      var F = function (a, b, c) {
        if (this instanceof C) {
          switch (arguments.length) {
            case 0: return new C();
            case 1: return new C(a);
            case 2: return new C(a, b);
          } return new C(a, b, c);
        } return C.apply(this, arguments);
      };
      F[PROTOTYPE] = C[PROTOTYPE];
      return F;
    // make static versions for prototype methods
    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
    if (IS_PROTO) {
      (exports.virtual || (exports.virtual = {}))[key] = out;
      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
    }
  }
};
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_fails.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_fails.js ***!
  \*********************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_for-of.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_for-of.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var call = __webpack_require__(/*! ./_iter-call */ "../node_modules/core-js/library/modules/_iter-call.js");
var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "../node_modules/core-js/library/modules/_is-array-iter.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "../node_modules/core-js/library/modules/core.get-iterator-method.js");
var BREAK = {};
var RETURN = {};
var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
  var f = ctx(fn, that, entries ? 2 : 1);
  var index = 0;
  var length, step, iterator, result;
  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
  // fast case for arrays with default iterator
  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
    if (result === BREAK || result === RETURN) return result;
  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
    result = call(iterator, f, step.value, entries);
    if (result === BREAK || result === RETURN) return result;
  }
};
exports.BREAK = BREAK;
exports.RETURN = RETURN;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_global.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_global.js ***!
  \**********************************************************/
/***/ ((module) => {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/library/modules/_has.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_has.js ***!
  \*******************************************************/
/***/ ((module) => {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_hide.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_hide.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_html.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_html.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").document;
module.exports = document && document.documentElement;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_ie8-dom-define.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_ie8-dom-define.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_invoke.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_invoke.js ***!
  \**********************************************************/
/***/ ((module) => {

// fast apply, http://jsperf.lnkit.com/fast-apply/5
module.exports = function (fn, args, that) {
  var un = that === undefined;
  switch (args.length) {
    case 0: return un ? fn()
                      : fn.call(that);
    case 1: return un ? fn(args[0])
                      : fn.call(that, args[0]);
    case 2: return un ? fn(args[0], args[1])
                      : fn.call(that, args[0], args[1]);
    case 3: return un ? fn(args[0], args[1], args[2])
                      : fn.call(that, args[0], args[1], args[2]);
    case 4: return un ? fn(args[0], args[1], args[2], args[3])
                      : fn.call(that, args[0], args[1], args[2], args[3]);
  } return fn.apply(that, args);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iobject.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iobject.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-array-iter.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-array-iter.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// check on default Array iterator
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var ArrayProto = Array.prototype;

module.exports = function (it) {
  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-array.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-array.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-object.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-call.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-call.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// call something on iterator step with safe closing on error
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
module.exports = function (iterator, fn, value, entries) {
  try {
    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
  // 7.4.6 IteratorClose(iterator, completion)
  } catch (e) {
    var ret = iterator['return'];
    if (ret !== undefined) anObject(ret.call(iterator));
    throw e;
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-create.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-create.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var descriptor = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var IteratorPrototype = {};

// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
__webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js")(IteratorPrototype, __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator'), function () { return this; });

module.exports = function (Constructor, NAME, next) {
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
  setToStringTag(Constructor, NAME + ' Iterator');
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-define.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-define.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var $iterCreate = __webpack_require__(/*! ./_iter-create */ "../node_modules/core-js/library/modules/_iter-create.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';

var returnThis = function () { return this; };

module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
  $iterCreate(Constructor, NAME, next);
  var getMethod = function (kind) {
    if (!BUGGY && kind in proto) return proto[kind];
    switch (kind) {
      case KEYS: return function keys() { return new Constructor(this, kind); };
      case VALUES: return function values() { return new Constructor(this, kind); };
    } return function entries() { return new Constructor(this, kind); };
  };
  var TAG = NAME + ' Iterator';
  var DEF_VALUES = DEFAULT == VALUES;
  var VALUES_BUG = false;
  var proto = Base.prototype;
  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
  var $default = $native || getMethod(DEFAULT);
  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
  var methods, key, IteratorPrototype;
  // Fix native
  if ($anyNative) {
    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
      // Set @@toStringTag to native iterators
      setToStringTag(IteratorPrototype, TAG, true);
      // fix for some old engines
      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
    }
  }
  // fix Array#{values, @@iterator}.name in V8 / FF
  if (DEF_VALUES && $native && $native.name !== VALUES) {
    VALUES_BUG = true;
    $default = function values() { return $native.call(this); };
  }
  // Define iterator
  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
    hide(proto, ITERATOR, $default);
  }
  // Plug for library
  Iterators[NAME] = $default;
  Iterators[TAG] = returnThis;
  if (DEFAULT) {
    methods = {
      values: DEF_VALUES ? $default : getMethod(VALUES),
      keys: IS_SET ? $default : getMethod(KEYS),
      entries: $entries
    };
    if (FORCED) for (key in methods) {
      if (!(key in proto)) redefine(proto, key, methods[key]);
    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
  }
  return methods;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-detect.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-detect.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var SAFE_CLOSING = false;

try {
  var riter = [7][ITERATOR]();
  riter['return'] = function () { SAFE_CLOSING = true; };
  // eslint-disable-next-line no-throw-literal
  Array.from(riter, function () { throw 2; });
} catch (e) { /* empty */ }

module.exports = function (exec, skipClosing) {
  if (!skipClosing && !SAFE_CLOSING) return false;
  var safe = false;
  try {
    var arr = [7];
    var iter = arr[ITERATOR]();
    iter.next = function () { return { done: safe = true }; };
    arr[ITERATOR] = function () { return iter; };
    exec(arr);
  } catch (e) { /* empty */ }
  return safe;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-step.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-step.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = function (done, value) {
  return { value: value, done: !!done };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iterators.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iterators.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = {};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_library.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_library.js ***!
  \***********************************************************/
/***/ ((module) => {

module.exports = true;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_meta.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_meta.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var META = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js")('meta');
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var setDesc = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var id = 0;
var isExtensible = Object.isExtensible || function () {
  return true;
};
var FREEZE = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return isExtensible(Object.preventExtensions({}));
});
var setMeta = function (it) {
  setDesc(it, META, { value: {
    i: 'O' + ++id, // object ID
    w: {}          // weak collections IDs
  } });
};
var fastKey = function (it, create) {
  // return primitive with prefix
  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return 'F';
    // not necessary to add metadata
    if (!create) return 'E';
    // add missing metadata
    setMeta(it);
  // return object ID
  } return it[META].i;
};
var getWeak = function (it, create) {
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return true;
    // not necessary to add metadata
    if (!create) return false;
    // add missing metadata
    setMeta(it);
  // return hash weak collections IDs
  } return it[META].w;
};
// add metadata on freeze-family methods calling
var onFreeze = function (it) {
  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
  return it;
};
var meta = module.exports = {
  KEY: META,
  NEED: false,
  fastKey: fastKey,
  getWeak: getWeak,
  onFreeze: onFreeze
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_microtask.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_microtask.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var macrotask = __webpack_require__(/*! ./_task */ "../node_modules/core-js/library/modules/_task.js").set;
var Observer = global.MutationObserver || global.WebKitMutationObserver;
var process = global.process;
var Promise = global.Promise;
var isNode = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js")(process) == 'process';

module.exports = function () {
  var head, last, notify;

  var flush = function () {
    var parent, fn;
    if (isNode && (parent = process.domain)) parent.exit();
    while (head) {
      fn = head.fn;
      head = head.next;
      try {
        fn();
      } catch (e) {
        if (head) notify();
        else last = undefined;
        throw e;
      }
    } last = undefined;
    if (parent) parent.enter();
  };

  // Node.js
  if (isNode) {
    notify = function () {
      process.nextTick(flush);
    };
  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
  } else if (Observer && !(global.navigator && global.navigator.standalone)) {
    var toggle = true;
    var node = document.createTextNode('');
    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
    notify = function () {
      node.data = toggle = !toggle;
    };
  // environments with maybe non-completely correct, but existent Promise
  } else if (Promise && Promise.resolve) {
    // Promise.resolve without an argument throws an error in LG WebOS 2
    var promise = Promise.resolve(undefined);
    notify = function () {
      promise.then(flush);
    };
  // for other environments - macrotask based on:
  // - setImmediate
  // - MessageChannel
  // - window.postMessag
  // - onreadystatechange
  // - setTimeout
  } else {
    notify = function () {
      // strange IE + webpack dev server bug - use .call(global)
      macrotask.call(global, flush);
    };
  }

  return function (fn) {
    var task = { fn: fn, next: undefined };
    if (last) last.next = task;
    if (!head) {
      head = task;
      notify();
    } last = task;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_new-promise-capability.js":
/*!**************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_new-promise-capability.js ***!
  \**************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 25.4.1.5 NewPromiseCapability(C)
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");

function PromiseCapability(C) {
  var resolve, reject;
  this.promise = new C(function ($$resolve, $$reject) {
    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
    resolve = $$resolve;
    reject = $$reject;
  });
  this.resolve = aFunction(resolve);
  this.reject = aFunction(reject);
}

module.exports.f = function (C) {
  return new PromiseCapability(C);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-assign.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-assign.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 19.1.2.1 Object.assign(target, source, ...)
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/library/modules/_iobject.js");
var $assign = Object.assign;

// should work with symbols and should have deterministic property order (V8 bug)
module.exports = !$assign || __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  var A = {};
  var B = {};
  // eslint-disable-next-line no-undef
  var S = Symbol();
  var K = 'abcdefghijklmnopqrst';
  A[S] = 7;
  K.split('').forEach(function (k) { B[k] = k; });
  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
  var T = toObject(target);
  var aLen = arguments.length;
  var index = 1;
  var getSymbols = gOPS.f;
  var isEnum = pIE.f;
  while (aLen > index) {
    var S = IObject(arguments[index++]);
    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
    var length = keys.length;
    var j = 0;
    var key;
    while (length > j) {
      key = keys[j++];
      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
    }
  } return T;
} : $assign;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-create.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-create.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var dPs = __webpack_require__(/*! ./_object-dps */ "../node_modules/core-js/library/modules/_object-dps.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');
var Empty = function () { /* empty */ };
var PROTOTYPE = 'prototype';

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = __webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js")('iframe');
  var i = enumBugKeys.length;
  var lt = '<';
  var gt = '>';
  var iframeDocument;
  iframe.style.display = 'none';
  __webpack_require__(/*! ./_html */ "../node_modules/core-js/library/modules/_html.js").appendChild(iframe);
  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
  // createDict = iframe.contentWindow.Object;
  // html.removeChild(iframe);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
  iframeDocument.close();
  createDict = iframeDocument.F;
  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
  return createDict();
};

module.exports = Object.create || function create(O, Properties) {
  var result;
  if (O !== null) {
    Empty[PROTOTYPE] = anObject(O);
    result = new Empty();
    Empty[PROTOTYPE] = null;
    // add "__proto__" for Object.getPrototypeOf polyfill
    result[IE_PROTO] = O;
  } else result = createDict();
  return Properties === undefined ? result : dPs(result, Properties);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-dp.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-dp.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/library/modules/_ie8-dom-define.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var dP = Object.defineProperty;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-dps.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-dps.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");

module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var keys = getKeys(Properties);
  var length = keys.length;
  var i = 0;
  var P;
  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopd.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopd.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/library/modules/_ie8-dom-define.js");
var gOPD = Object.getOwnPropertyDescriptor;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? gOPD : function getOwnPropertyDescriptor(O, P) {
  O = toIObject(O);
  P = toPrimitive(P, true);
  if (IE8_DOM_DEFINE) try {
    return gOPD(O, P);
  } catch (e) { /* empty */ }
  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopn-ext.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopn-ext.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var gOPN = __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js").f;
var toString = {}.toString;

var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
  ? Object.getOwnPropertyNames(window) : [];

var getWindowNames = function (it) {
  try {
    return gOPN(it);
  } catch (e) {
    return windowNames.slice();
  }
};

module.exports.f = function getOwnPropertyNames(it) {
  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopn.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopn.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/library/modules/_object-keys-internal.js");
var hiddenKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js").concat('length', 'prototype');

exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
  return $keys(O, hiddenKeys);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gops.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gops.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports) => {

exports.f = Object.getOwnPropertySymbols;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gpo.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gpo.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');
var ObjectProto = Object.prototype;

module.exports = Object.getPrototypeOf || function (O) {
  O = toObject(O);
  if (has(O, IE_PROTO)) return O[IE_PROTO];
  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
    return O.constructor.prototype;
  } return O instanceof Object ? ObjectProto : null;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-keys-internal.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-keys-internal.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var arrayIndexOf = __webpack_require__(/*! ./_array-includes */ "../node_modules/core-js/library/modules/_array-includes.js")(false);
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');

module.exports = function (object, names) {
  var O = toIObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (has(O, key = names[i++])) {
    ~arrayIndexOf(result, key) || result.push(key);
  }
  return result;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-keys.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-keys.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/library/modules/_object-keys-internal.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js");

module.exports = Object.keys || function keys(O) {
  return $keys(O, enumBugKeys);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-pie.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-pie.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports) => {

exports.f = {}.propertyIsEnumerable;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-sap.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-sap.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// most Object methods by ES6 should accept primitives
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
module.exports = function (KEY, exec) {
  var fn = (core.Object || {})[KEY] || Object[KEY];
  var exp = {};
  exp[KEY] = exec(fn);
  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-to-array.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-to-array.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var isEnum = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js").f;
module.exports = function (isEntries) {
  return function (it) {
    var O = toIObject(it);
    var keys = getKeys(O);
    var length = keys.length;
    var i = 0;
    var result = [];
    var key;
    while (length > i) {
      key = keys[i++];
      if (!DESCRIPTORS || isEnum.call(O, key)) {
        result.push(isEntries ? [key, O[key]] : O[key]);
      }
    }
    return result;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_own-keys.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_own-keys.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// all object keys, includes non-enumerable and symbols
var gOPN = __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js");
var gOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var Reflect = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Reflect;
module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
  var keys = gOPN.f(anObject(it));
  var getSymbols = gOPS.f;
  return getSymbols ? keys.concat(getSymbols(it)) : keys;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_parse-int.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_parse-int.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var $parseInt = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").parseInt;
var $trim = __webpack_require__(/*! ./_string-trim */ "../node_modules/core-js/library/modules/_string-trim.js").trim;
var ws = __webpack_require__(/*! ./_string-ws */ "../node_modules/core-js/library/modules/_string-ws.js");
var hex = /^[-+]?0[xX]/;

module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {
  var string = $trim(String(str), 3);
  return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
} : $parseInt;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_perform.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_perform.js ***!
  \***********************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return { e: false, v: exec() };
  } catch (e) {
    return { e: true, v: e };
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_promise-resolve.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_promise-resolve.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/library/modules/_new-promise-capability.js");

module.exports = function (C, x) {
  anObject(C);
  if (isObject(x) && x.constructor === C) return x;
  var promiseCapability = newPromiseCapability.f(C);
  var resolve = promiseCapability.resolve;
  resolve(x);
  return promiseCapability.promise;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_property-desc.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_property-desc.js ***!
  \*****************************************************************/
/***/ ((module) => {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_redefine-all.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_redefine-all.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
module.exports = function (target, src, safe) {
  for (var key in src) {
    if (safe && target[key]) target[key] = src[key];
    else hide(target, key, src[key]);
  } return target;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_redefine.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_redefine.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-collection-from.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-collection-from.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://tc39.github.io/proposal-setmap-offrom/
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");

module.exports = function (COLLECTION) {
  $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {
    var mapFn = arguments[1];
    var mapping, A, n, cb;
    aFunction(this);
    mapping = mapFn !== undefined;
    if (mapping) aFunction(mapFn);
    if (source == undefined) return new this();
    A = [];
    if (mapping) {
      n = 0;
      cb = ctx(mapFn, arguments[2], 2);
      forOf(source, false, function (nextItem) {
        A.push(cb(nextItem, n++));
      });
    } else {
      forOf(source, false, A.push, A);
    }
    return new this(A);
  } });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-collection-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-collection-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://tc39.github.io/proposal-setmap-offrom/
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");

module.exports = function (COLLECTION) {
  $export($export.S, COLLECTION, { of: function of() {
    var length = arguments.length;
    var A = new Array(length);
    while (length--) A[length] = arguments[length];
    return new this(A);
  } });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-proto.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-proto.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var check = function (O, proto) {
  anObject(O);
  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
};
module.exports = {
  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
    function (test, buggy, set) {
      try {
        set = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js")(Function.call, __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js").f(Object.prototype, '__proto__').set, 2);
        set(test, []);
        buggy = !(test instanceof Array);
      } catch (e) { buggy = true; }
      return function setPrototypeOf(O, proto) {
        check(O, proto);
        if (buggy) O.__proto__ = proto;
        else set(O, proto);
        return O;
      };
    }({}, false) : undefined),
  check: check
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-species.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-species.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species');

module.exports = function (KEY) {
  var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
    configurable: true,
    get: function () { return this; }
  });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-to-string-tag.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-to-string-tag.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var def = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');

module.exports = function (it, tag, stat) {
  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_shared-key.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_shared-key.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js")('keys');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
module.exports = function (key) {
  return shared[key] || (shared[key] = uid(key));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_shared.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_shared.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js") ? 'pure' : 'global',
  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_species-constructor.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_species-constructor.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.3.20 SpeciesConstructor(O, defaultConstructor)
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species');
module.exports = function (O, D) {
  var C = anObject(O).constructor;
  var S;
  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_string-at.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_string-at.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_string-trim.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_string-trim.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var spaces = __webpack_require__(/*! ./_string-ws */ "../node_modules/core-js/library/modules/_string-ws.js");
var space = '[' + spaces + ']';
var non = '\u200b\u0085';
var ltrim = RegExp('^' + space + space + '*');
var rtrim = RegExp(space + space + '*$');

var exporter = function (KEY, exec, ALIAS) {
  var exp = {};
  var FORCE = fails(function () {
    return !!spaces[KEY]() || non[KEY]() != non;
  });
  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
  if (ALIAS) exp[ALIAS] = fn;
  $export($export.P + $export.F * FORCE, 'String', exp);
};

// 1 -> String#trimLeft
// 2 -> String#trimRight
// 3 -> String#trim
var trim = exporter.trim = function (string, TYPE) {
  string = String(defined(string));
  if (TYPE & 1) string = string.replace(ltrim, '');
  if (TYPE & 2) string = string.replace(rtrim, '');
  return string;
};

module.exports = exporter;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_string-ws.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_string-ws.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
  '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';


/***/ }),

/***/ "../node_modules/core-js/library/modules/_task.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_task.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var invoke = __webpack_require__(/*! ./_invoke */ "../node_modules/core-js/library/modules/_invoke.js");
var html = __webpack_require__(/*! ./_html */ "../node_modules/core-js/library/modules/_html.js");
var cel = __webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var process = global.process;
var setTask = global.setImmediate;
var clearTask = global.clearImmediate;
var MessageChannel = global.MessageChannel;
var Dispatch = global.Dispatch;
var counter = 0;
var queue = {};
var ONREADYSTATECHANGE = 'onreadystatechange';
var defer, channel, port;
var run = function () {
  var id = +this;
  // eslint-disable-next-line no-prototype-builtins
  if (queue.hasOwnProperty(id)) {
    var fn = queue[id];
    delete queue[id];
    fn();
  }
};
var listener = function (event) {
  run.call(event.data);
};
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
if (!setTask || !clearTask) {
  setTask = function setImmediate(fn) {
    var args = [];
    var i = 1;
    while (arguments.length > i) args.push(arguments[i++]);
    queue[++counter] = function () {
      // eslint-disable-next-line no-new-func
      invoke(typeof fn == 'function' ? fn : Function(fn), args);
    };
    defer(counter);
    return counter;
  };
  clearTask = function clearImmediate(id) {
    delete queue[id];
  };
  // Node.js 0.8-
  if (__webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js")(process) == 'process') {
    defer = function (id) {
      process.nextTick(ctx(run, id, 1));
    };
  // Sphere (JS game engine) Dispatch API
  } else if (Dispatch && Dispatch.now) {
    defer = function (id) {
      Dispatch.now(ctx(run, id, 1));
    };
  // Browsers with MessageChannel, includes WebWorkers
  } else if (MessageChannel) {
    channel = new MessageChannel();
    port = channel.port2;
    channel.port1.onmessage = listener;
    defer = ctx(port.postMessage, port, 1);
  // Browsers with postMessage, skip WebWorkers
  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
    defer = function (id) {
      global.postMessage(id + '', '*');
    };
    global.addEventListener('message', listener, false);
  // IE8-
  } else if (ONREADYSTATECHANGE in cel('script')) {
    defer = function (id) {
      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
        html.removeChild(this);
        run.call(id);
      };
    };
  // Rest old browsers
  } else {
    defer = function (id) {
      setTimeout(ctx(run, id, 1), 0);
    };
  }
}
module.exports = {
  set: setTask,
  clear: clearTask
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-absolute-index.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-absolute-index.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-integer.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-integer.js ***!
  \**************************************************************/
/***/ ((module) => {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-iobject.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-iobject.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/library/modules/_iobject.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-length.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-length.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.15 ToLength
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-object.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-primitive.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-primitive.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_uid.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_uid.js ***!
  \*******************************************************/
/***/ ((module) => {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_user-agent.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_user-agent.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var navigator = global.navigator;

module.exports = navigator && navigator.userAgent || '';


/***/ }),

/***/ "../node_modules/core-js/library/modules/_validate-collection.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_validate-collection.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
module.exports = function (it, TYPE) {
  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks-define.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks-define.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var wksExt = __webpack_require__(/*! ./_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js");
var defineProperty = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
module.exports = function (name) {
  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks-ext.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks-ext.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

exports.f = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js");


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var store = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js")('wks');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
var Symbol = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),

/***/ "../node_modules/core-js/library/modules/core.get-iterator-method.js":
/*!***************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/core.get-iterator-method.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/library/modules/_classof.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
module.exports = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js").getIteratorMethod = function (it) {
  if (it != undefined) return it[ITERATOR]
    || it['@@iterator']
    || Iterators[classof(it)];
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.from.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.from.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var call = __webpack_require__(/*! ./_iter-call */ "../node_modules/core-js/library/modules/_iter-call.js");
var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "../node_modules/core-js/library/modules/_is-array-iter.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var createProperty = __webpack_require__(/*! ./_create-property */ "../node_modules/core-js/library/modules/_create-property.js");
var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "../node_modules/core-js/library/modules/core.get-iterator-method.js");

$export($export.S + $export.F * !__webpack_require__(/*! ./_iter-detect */ "../node_modules/core-js/library/modules/_iter-detect.js")(function (iter) { Array.from(iter); }), 'Array', {
  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
    var O = toObject(arrayLike);
    var C = typeof this == 'function' ? this : Array;
    var aLen = arguments.length;
    var mapfn = aLen > 1 ? arguments[1] : undefined;
    var mapping = mapfn !== undefined;
    var index = 0;
    var iterFn = getIterFn(O);
    var length, result, step, iterator;
    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
    // if object isn't iterable or it's array with default iterator - use simple case
    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
      }
    } else {
      length = toLength(O.length);
      for (result = new C(length); length > index; index++) {
        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
      }
    }
    result.length = index;
    return result;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.is-array.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.is-array.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");

$export($export.S, 'Array', { isArray: __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.iterator.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.iterator.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/library/modules/_add-to-unscopables.js");
var step = __webpack_require__(/*! ./_iter-step */ "../node_modules/core-js/library/modules/_iter-step.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");

// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
module.exports = __webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/library/modules/_iter-define.js")(Array, 'Array', function (iterated, kind) {
  this._t = toIObject(iterated); // target
  this._i = 0;                   // next index
  this._k = kind;                // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var kind = this._k;
  var index = this._i++;
  if (!O || index >= O.length) {
    this._t = undefined;
    return step(1);
  }
  if (kind == 'keys') return step(0, index);
  if (kind == 'values') return step(0, O[index]);
  return step(0, [index, O[index]]);
}, 'values');

// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
Iterators.Arguments = Iterators.Array;

addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.assign.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.assign.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.3.1 Object.assign(target, source)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");

$export($export.S + $export.F, 'Object', { assign: __webpack_require__(/*! ./_object-assign */ "../node_modules/core-js/library/modules/_object-assign.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.create.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.create.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
$export($export.S, 'Object', { create: __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.define-properties.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.define-properties.js ***!
  \*******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js"), 'Object', { defineProperties: __webpack_require__(/*! ./_object-dps */ "../node_modules/core-js/library/modules/_object-dps.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.define-property.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.define-property.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js"), 'Object', { defineProperty: __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js":
/*!*****************************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js ***!
  \*****************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var $getOwnPropertyDescriptor = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js").f;

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('getOwnPropertyDescriptor', function () {
  return function getOwnPropertyDescriptor(it, key) {
    return $getOwnPropertyDescriptor(toIObject(it), key);
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.get-prototype-of.js":
/*!******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.get-prototype-of.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 Object.getPrototypeOf(O)
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var $getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('getPrototypeOf', function () {
  return function getPrototypeOf(it) {
    return $getPrototypeOf(toObject(it));
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.keys.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.keys.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 Object.keys(O)
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var $keys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('keys', function () {
  return function keys(it) {
    return $keys(toObject(it));
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.set-prototype-of.js":
/*!******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.set-prototype-of.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.3.19 Object.setPrototypeOf(O, proto)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(/*! ./_set-proto */ "../node_modules/core-js/library/modules/_set-proto.js").set });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.to-string.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.to-string.js ***!
  \***********************************************************************/
/***/ (() => {



/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.parse-int.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.parse-int.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var $parseInt = __webpack_require__(/*! ./_parse-int */ "../node_modules/core-js/library/modules/_parse-int.js");
// 18.2.5 parseInt(string, radix)
$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.promise.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.promise.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/library/modules/_classof.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var anInstance = __webpack_require__(/*! ./_an-instance */ "../node_modules/core-js/library/modules/_an-instance.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");
var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "../node_modules/core-js/library/modules/_species-constructor.js");
var task = __webpack_require__(/*! ./_task */ "../node_modules/core-js/library/modules/_task.js").set;
var microtask = __webpack_require__(/*! ./_microtask */ "../node_modules/core-js/library/modules/_microtask.js")();
var newPromiseCapabilityModule = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/library/modules/_new-promise-capability.js");
var perform = __webpack_require__(/*! ./_perform */ "../node_modules/core-js/library/modules/_perform.js");
var userAgent = __webpack_require__(/*! ./_user-agent */ "../node_modules/core-js/library/modules/_user-agent.js");
var promiseResolve = __webpack_require__(/*! ./_promise-resolve */ "../node_modules/core-js/library/modules/_promise-resolve.js");
var PROMISE = 'Promise';
var TypeError = global.TypeError;
var process = global.process;
var versions = process && process.versions;
var v8 = versions && versions.v8 || '';
var $Promise = global[PROMISE];
var isNode = classof(process) == 'process';
var empty = function () { /* empty */ };
var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;

var USE_NATIVE = !!function () {
  try {
    // correct subclassing with @@species support
    var promise = $Promise.resolve(1);
    var FakePromise = (promise.constructor = {})[__webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species')] = function (exec) {
      exec(empty, empty);
    };
    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
    return (isNode || typeof PromiseRejectionEvent == 'function')
      && promise.then(empty) instanceof FakePromise
      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
      // we can't detect it synchronously, so just check versions
      && v8.indexOf('6.6') !== 0
      && userAgent.indexOf('Chrome/66') === -1;
  } catch (e) { /* empty */ }
}();

// helpers
var isThenable = function (it) {
  var then;
  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
};
var notify = function (promise, isReject) {
  if (promise._n) return;
  promise._n = true;
  var chain = promise._c;
  microtask(function () {
    var value = promise._v;
    var ok = promise._s == 1;
    var i = 0;
    var run = function (reaction) {
      var handler = ok ? reaction.ok : reaction.fail;
      var resolve = reaction.resolve;
      var reject = reaction.reject;
      var domain = reaction.domain;
      var result, then, exited;
      try {
        if (handler) {
          if (!ok) {
            if (promise._h == 2) onHandleUnhandled(promise);
            promise._h = 1;
          }
          if (handler === true) result = value;
          else {
            if (domain) domain.enter();
            result = handler(value); // may throw
            if (domain) {
              domain.exit();
              exited = true;
            }
          }
          if (result === reaction.promise) {
            reject(TypeError('Promise-chain cycle'));
          } else if (then = isThenable(result)) {
            then.call(result, resolve, reject);
          } else resolve(result);
        } else reject(value);
      } catch (e) {
        if (domain && !exited) domain.exit();
        reject(e);
      }
    };
    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
    promise._c = [];
    promise._n = false;
    if (isReject && !promise._h) onUnhandled(promise);
  });
};
var onUnhandled = function (promise) {
  task.call(global, function () {
    var value = promise._v;
    var unhandled = isUnhandled(promise);
    var result, handler, console;
    if (unhandled) {
      result = perform(function () {
        if (isNode) {
          process.emit('unhandledRejection', value, promise);
        } else if (handler = global.onunhandledrejection) {
          handler({ promise: promise, reason: value });
        } else if ((console = global.console) && console.error) {
          console.error('Unhandled promise rejection', value);
        }
      });
      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
    } promise._a = undefined;
    if (unhandled && result.e) throw result.v;
  });
};
var isUnhandled = function (promise) {
  return promise._h !== 1 && (promise._a || promise._c).length === 0;
};
var onHandleUnhandled = function (promise) {
  task.call(global, function () {
    var handler;
    if (isNode) {
      process.emit('rejectionHandled', promise);
    } else if (handler = global.onrejectionhandled) {
      handler({ promise: promise, reason: promise._v });
    }
  });
};
var $reject = function (value) {
  var promise = this;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  promise._v = value;
  promise._s = 2;
  if (!promise._a) promise._a = promise._c.slice();
  notify(promise, true);
};
var $resolve = function (value) {
  var promise = this;
  var then;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  try {
    if (promise === value) throw TypeError("Promise can't be resolved itself");
    if (then = isThenable(value)) {
      microtask(function () {
        var wrapper = { _w: promise, _d: false }; // wrap
        try {
          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
        } catch (e) {
          $reject.call(wrapper, e);
        }
      });
    } else {
      promise._v = value;
      promise._s = 1;
      notify(promise, false);
    }
  } catch (e) {
    $reject.call({ _w: promise, _d: false }, e); // wrap
  }
};

// constructor polyfill
if (!USE_NATIVE) {
  // 25.4.3.1 Promise(executor)
  $Promise = function Promise(executor) {
    anInstance(this, $Promise, PROMISE, '_h');
    aFunction(executor);
    Internal.call(this);
    try {
      executor(ctx($resolve, this, 1), ctx($reject, this, 1));
    } catch (err) {
      $reject.call(this, err);
    }
  };
  // eslint-disable-next-line no-unused-vars
  Internal = function Promise(executor) {
    this._c = [];             // <- awaiting reactions
    this._a = undefined;      // <- checked in isUnhandled reactions
    this._s = 0;              // <- state
    this._d = false;          // <- done
    this._v = undefined;      // <- value
    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
    this._n = false;          // <- notify
  };
  Internal.prototype = __webpack_require__(/*! ./_redefine-all */ "../node_modules/core-js/library/modules/_redefine-all.js")($Promise.prototype, {
    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
    then: function then(onFulfilled, onRejected) {
      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
      reaction.fail = typeof onRejected == 'function' && onRejected;
      reaction.domain = isNode ? process.domain : undefined;
      this._c.push(reaction);
      if (this._a) this._a.push(reaction);
      if (this._s) notify(this, false);
      return reaction.promise;
    },
    // 25.4.5.1 Promise.prototype.catch(onRejected)
    'catch': function (onRejected) {
      return this.then(undefined, onRejected);
    }
  });
  OwnPromiseCapability = function () {
    var promise = new Internal();
    this.promise = promise;
    this.resolve = ctx($resolve, promise, 1);
    this.reject = ctx($reject, promise, 1);
  };
  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
    return C === $Promise || C === Wrapper
      ? new OwnPromiseCapability(C)
      : newGenericPromiseCapability(C);
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
__webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js")($Promise, PROMISE);
__webpack_require__(/*! ./_set-species */ "../node_modules/core-js/library/modules/_set-species.js")(PROMISE);
Wrapper = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js")[PROMISE];

// statics
$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
  // 25.4.4.5 Promise.reject(r)
  reject: function reject(r) {
    var capability = newPromiseCapability(this);
    var $$reject = capability.reject;
    $$reject(r);
    return capability.promise;
  }
});
$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
  // 25.4.4.6 Promise.resolve(x)
  resolve: function resolve(x) {
    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
  }
});
$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(/*! ./_iter-detect */ "../node_modules/core-js/library/modules/_iter-detect.js")(function (iter) {
  $Promise.all(iter)['catch'](empty);
})), PROMISE, {
  // 25.4.4.1 Promise.all(iterable)
  all: function all(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var resolve = capability.resolve;
    var reject = capability.reject;
    var result = perform(function () {
      var values = [];
      var index = 0;
      var remaining = 1;
      forOf(iterable, false, function (promise) {
        var $index = index++;
        var alreadyCalled = false;
        values.push(undefined);
        remaining++;
        C.resolve(promise).then(function (value) {
          if (alreadyCalled) return;
          alreadyCalled = true;
          values[$index] = value;
          --remaining || resolve(values);
        }, reject);
      });
      --remaining || resolve(values);
    });
    if (result.e) reject(result.v);
    return capability.promise;
  },
  // 25.4.4.4 Promise.race(iterable)
  race: function race(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var reject = capability.reject;
    var result = perform(function () {
      forOf(iterable, false, function (promise) {
        C.resolve(promise).then(capability.resolve, reject);
      });
    });
    if (result.e) reject(result.v);
    return capability.promise;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.reflect.construct.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.reflect.construct.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var bind = __webpack_require__(/*! ./_bind */ "../node_modules/core-js/library/modules/_bind.js");
var rConstruct = (__webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Reflect || {}).construct;

// MS Edge supports only 2 arguments and argumentsList argument is optional
// FF Nightly sets third argument as `new.target`, but does not create `this` from it
var NEW_TARGET_BUG = fails(function () {
  function F() { /* empty */ }
  return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);
});
var ARGS_BUG = !fails(function () {
  rConstruct(function () { /* empty */ });
});

$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {
  construct: function construct(Target, args /* , newTarget */) {
    aFunction(Target);
    anObject(args);
    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
    if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);
    if (Target == newTarget) {
      // w/o altered newTarget, optimization for 0-4 arguments
      switch (args.length) {
        case 0: return new Target();
        case 1: return new Target(args[0]);
        case 2: return new Target(args[0], args[1]);
        case 3: return new Target(args[0], args[1], args[2]);
        case 4: return new Target(args[0], args[1], args[2], args[3]);
      }
      // w/o altered newTarget, lot of arguments case
      var $args = [null];
      $args.push.apply($args, args);
      return new (bind.apply(Target, $args))();
    }
    // with altered newTarget, not support built-in constructors
    var proto = newTarget.prototype;
    var instance = create(isObject(proto) ? proto : Object.prototype);
    var result = Function.apply.call(Target, instance, args);
    return isObject(result) ? result : instance;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.string.iterator.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.string.iterator.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $at = __webpack_require__(/*! ./_string-at */ "../node_modules/core-js/library/modules/_string-at.js")(true);

// 21.1.3.27 String.prototype[@@iterator]()
__webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/library/modules/_iter-define.js")(String, 'String', function (iterated) {
  this._t = String(iterated); // target
  this._i = 0;                // next index
// 21.1.5.2.1 %StringIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var index = this._i;
  var point;
  if (index >= O.length) return { value: undefined, done: true };
  point = $at(O, index);
  this._i += point.length;
  return { value: point, done: false };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.symbol.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.symbol.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// ECMAScript 6 symbols shim
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var META = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js").KEY;
var $fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
var wks = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js");
var wksExt = __webpack_require__(/*! ./_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js");
var wksDefine = __webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js");
var enumKeys = __webpack_require__(/*! ./_enum-keys */ "../node_modules/core-js/library/modules/_enum-keys.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var _create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var gOPNExt = __webpack_require__(/*! ./_object-gopn-ext */ "../node_modules/core-js/library/modules/_object-gopn-ext.js");
var $GOPD = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js");
var $GOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var $DP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var $keys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPD = $GOPD.f;
var dP = $DP.f;
var gOPN = gOPNExt.f;
var $Symbol = global.Symbol;
var $JSON = global.JSON;
var _stringify = $JSON && $JSON.stringify;
var PROTOTYPE = 'prototype';
var HIDDEN = wks('_hidden');
var TO_PRIMITIVE = wks('toPrimitive');
var isEnum = {}.propertyIsEnumerable;
var SymbolRegistry = shared('symbol-registry');
var AllSymbols = shared('symbols');
var OPSymbols = shared('op-symbols');
var ObjectProto = Object[PROTOTYPE];
var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
var QObject = global.QObject;
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;

// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
var setSymbolDesc = DESCRIPTORS && $fails(function () {
  return _create(dP({}, 'a', {
    get: function () { return dP(this, 'a', { value: 7 }).a; }
  })).a != 7;
}) ? function (it, key, D) {
  var protoDesc = gOPD(ObjectProto, key);
  if (protoDesc) delete ObjectProto[key];
  dP(it, key, D);
  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
} : dP;

var wrap = function (tag) {
  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
  sym._k = tag;
  return sym;
};

var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
  return typeof it == 'symbol';
} : function (it) {
  return it instanceof $Symbol;
};

var $defineProperty = function defineProperty(it, key, D) {
  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
  anObject(it);
  key = toPrimitive(key, true);
  anObject(D);
  if (has(AllSymbols, key)) {
    if (!D.enumerable) {
      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
      it[HIDDEN][key] = true;
    } else {
      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
      D = _create(D, { enumerable: createDesc(0, false) });
    } return setSymbolDesc(it, key, D);
  } return dP(it, key, D);
};
var $defineProperties = function defineProperties(it, P) {
  anObject(it);
  var keys = enumKeys(P = toIObject(P));
  var i = 0;
  var l = keys.length;
  var key;
  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
  return it;
};
var $create = function create(it, P) {
  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
};
var $propertyIsEnumerable = function propertyIsEnumerable(key) {
  var E = isEnum.call(this, key = toPrimitive(key, true));
  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
  it = toIObject(it);
  key = toPrimitive(key, true);
  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
  var D = gOPD(it, key);
  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
  return D;
};
var $getOwnPropertyNames = function getOwnPropertyNames(it) {
  var names = gOPN(toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
  } return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
  var IS_OP = it === ObjectProto;
  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
  } return result;
};

// 19.4.1.1 Symbol([description])
if (!USE_NATIVE) {
  $Symbol = function Symbol() {
    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
    var $set = function (value) {
      if (this === ObjectProto) $set.call(OPSymbols, value);
      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
      setSymbolDesc(this, tag, createDesc(1, value));
    };
    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
    return wrap(tag);
  };
  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
    return this._k;
  });

  $GOPD.f = $getOwnPropertyDescriptor;
  $DP.f = $defineProperty;
  __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js").f = gOPNExt.f = $getOwnPropertyNames;
  __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js").f = $propertyIsEnumerable;
  $GOPS.f = $getOwnPropertySymbols;

  if (DESCRIPTORS && !__webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js")) {
    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
  }

  wksExt.f = function (name) {
    return wrap(wks(name));
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });

for (var es6Symbols = (
  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);

for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);

$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
  // 19.4.2.1 Symbol.for(key)
  'for': function (key) {
    return has(SymbolRegistry, key += '')
      ? SymbolRegistry[key]
      : SymbolRegistry[key] = $Symbol(key);
  },
  // 19.4.2.5 Symbol.keyFor(sym)
  keyFor: function keyFor(sym) {
    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
  },
  useSetter: function () { setter = true; },
  useSimple: function () { setter = false; }
});

$export($export.S + $export.F * !USE_NATIVE, 'Object', {
  // 19.1.2.2 Object.create(O [, Properties])
  create: $create,
  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
  defineProperty: $defineProperty,
  // 19.1.2.3 Object.defineProperties(O, Properties)
  defineProperties: $defineProperties,
  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
  // 19.1.2.7 Object.getOwnPropertyNames(O)
  getOwnPropertyNames: $getOwnPropertyNames,
  // 19.1.2.8 Object.getOwnPropertySymbols(O)
  getOwnPropertySymbols: $getOwnPropertySymbols
});

// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
// https://bugs.chromium.org/p/v8/issues/detail?id=3443
var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });

$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
    return $GOPS.f(toObject(it));
  }
});

// 24.3.2 JSON.stringify(value [, replacer [, space]])
$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
  var S = $Symbol();
  // MS Edge converts symbol values to JSON as {}
  // WebKit converts symbol values to JSON as null
  // V8 throws on boxed symbols
  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
})), 'JSON', {
  stringify: function stringify(it) {
    var args = [it];
    var i = 1;
    var replacer, $replacer;
    while (arguments.length > i) args.push(arguments[i++]);
    $replacer = replacer = args[1];
    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
    if (!isArray(replacer)) replacer = function (key, value) {
      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
      if (!isSymbol(value)) return value;
    };
    args[1] = replacer;
    return _stringify.apply($JSON, args);
  }
});

// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
// 19.4.3.5 Symbol.prototype[@@toStringTag]
setToStringTag($Symbol, 'Symbol');
// 20.2.1.9 Math[@@toStringTag]
setToStringTag(Math, 'Math', true);
// 24.3.3 JSON[@@toStringTag]
setToStringTag(global.JSON, 'JSON', true);


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.weak-map.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.weak-map.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var each = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/library/modules/_array-methods.js")(0);
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var meta = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js");
var assign = __webpack_require__(/*! ./_object-assign */ "../node_modules/core-js/library/modules/_object-assign.js");
var weak = __webpack_require__(/*! ./_collection-weak */ "../node_modules/core-js/library/modules/_collection-weak.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var validate = __webpack_require__(/*! ./_validate-collection */ "../node_modules/core-js/library/modules/_validate-collection.js");
var NATIVE_WEAK_MAP = __webpack_require__(/*! ./_validate-collection */ "../node_modules/core-js/library/modules/_validate-collection.js");
var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;
var WEAK_MAP = 'WeakMap';
var getWeak = meta.getWeak;
var isExtensible = Object.isExtensible;
var uncaughtFrozenStore = weak.ufstore;
var InternalMap;

var wrapper = function (get) {
  return function WeakMap() {
    return get(this, arguments.length > 0 ? arguments[0] : undefined);
  };
};

var methods = {
  // 23.3.3.3 WeakMap.prototype.get(key)
  get: function get(key) {
    if (isObject(key)) {
      var data = getWeak(key);
      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
      return data ? data[this._i] : undefined;
    }
  },
  // 23.3.3.5 WeakMap.prototype.set(key, value)
  set: function set(key, value) {
    return weak.def(validate(this, WEAK_MAP), key, value);
  }
};

// 23.3 WeakMap Objects
var $WeakMap = module.exports = __webpack_require__(/*! ./_collection */ "../node_modules/core-js/library/modules/_collection.js")(WEAK_MAP, wrapper, methods, weak, true, true);

// IE11 WeakMap frozen keys fix
if (NATIVE_WEAK_MAP && IS_IE11) {
  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
  assign(InternalMap.prototype, methods);
  meta.NEED = true;
  each(['delete', 'has', 'get', 'set'], function (key) {
    var proto = $WeakMap.prototype;
    var method = proto[key];
    redefine(proto, key, function (a, b) {
      // store frozen objects on internal weakmap shim
      if (isObject(a) && !isExtensible(a)) {
        if (!this._f) this._f = new InternalMap();
        var result = this._f[key](a, b);
        return key == 'set' ? this : result;
      // store all the rest on native weakmap
      } return method.call(this, a, b);
    });
  });
}


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js":
/*!******************************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js ***!
  \******************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-object-getownpropertydescriptors
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var ownKeys = __webpack_require__(/*! ./_own-keys */ "../node_modules/core-js/library/modules/_own-keys.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var gOPD = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js");
var createProperty = __webpack_require__(/*! ./_create-property */ "../node_modules/core-js/library/modules/_create-property.js");

$export($export.S, 'Object', {
  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
    var O = toIObject(object);
    var getDesc = gOPD.f;
    var keys = ownKeys(O);
    var result = {};
    var i = 0;
    var key, desc;
    while (keys.length > i) {
      desc = getDesc(O, key = keys[i++]);
      if (desc !== undefined) createProperty(result, key, desc);
    }
    return result;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.object.values.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.object.values.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-object-values-entries
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var $values = __webpack_require__(/*! ./_object-to-array */ "../node_modules/core-js/library/modules/_object-to-array.js")(false);

$export($export.S, 'Object', {
  values: function values(it) {
    return $values(it);
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.promise.finally.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.promise.finally.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// https://github.com/tc39/proposal-promise-finally

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "../node_modules/core-js/library/modules/_species-constructor.js");
var promiseResolve = __webpack_require__(/*! ./_promise-resolve */ "../node_modules/core-js/library/modules/_promise-resolve.js");

$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
  var C = speciesConstructor(this, core.Promise || global.Promise);
  var isFunction = typeof onFinally == 'function';
  return this.then(
    isFunction ? function (x) {
      return promiseResolve(C, onFinally()).then(function () { return x; });
    } : onFinally,
    isFunction ? function (e) {
      return promiseResolve(C, onFinally()).then(function () { throw e; });
    } : onFinally
  );
} });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.promise.try.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.promise.try.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/tc39/proposal-promise-try
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/library/modules/_new-promise-capability.js");
var perform = __webpack_require__(/*! ./_perform */ "../node_modules/core-js/library/modules/_perform.js");

$export($export.S, 'Promise', { 'try': function (callbackfn) {
  var promiseCapability = newPromiseCapability.f(this);
  var result = perform(callbackfn);
  (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
  return promiseCapability.promise;
} });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js":
/*!****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.symbol.async-iterator.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js")('asyncIterator');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.symbol.observable.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.symbol.observable.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js")('observable');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.weak-map.from.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.weak-map.from.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from
__webpack_require__(/*! ./_set-collection-from */ "../node_modules/core-js/library/modules/_set-collection-from.js")('WeakMap');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.weak-map.of.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.weak-map.of.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of
__webpack_require__(/*! ./_set-collection-of */ "../node_modules/core-js/library/modules/_set-collection-of.js")('WeakMap');


/***/ }),

/***/ "../node_modules/core-js/library/modules/web.dom.iterable.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/web.dom.iterable.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./es6.array.iterator */ "../node_modules/core-js/library/modules/es6.array.iterator.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var TO_STRING_TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');

var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
  'TextTrackList,TouchList').split(',');

for (var i = 0; i < DOMIterables.length; i++) {
  var NAME = DOMIterables[i];
  var Collection = global[NAME];
  var proto = Collection && Collection.prototype;
  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
  Iterators[NAME] = Iterators.Array;
}


/***/ }),

/***/ "../node_modules/core-js/modules/_a-function.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_a-function.js ***!
  \******************************************************/
/***/ ((module) => {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_add-to-unscopables.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/_add-to-unscopables.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 22.1.3.31 Array.prototype[@@unscopables]
var UNSCOPABLES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('unscopables');
var ArrayProto = Array.prototype;
if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js")(ArrayProto, UNSCOPABLES, {});
module.exports = function (key) {
  ArrayProto[UNSCOPABLES][key] = true;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_advance-string-index.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_advance-string-index.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var at = __webpack_require__(/*! ./_string-at */ "../node_modules/core-js/modules/_string-at.js")(true);

 // `AdvanceStringIndex` abstract operation
// https://tc39.github.io/ecma262/#sec-advancestringindex
module.exports = function (S, index, unicode) {
  return index + (unicode ? at(S, index).length : 1);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_an-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_an-object.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-includes.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/_array-includes.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/modules/_to-iobject.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "../node_modules/core-js/modules/_to-absolute-index.js");
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-methods.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_array-methods.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 0 -> Array#forEach
// 1 -> Array#map
// 2 -> Array#filter
// 3 -> Array#some
// 4 -> Array#every
// 5 -> Array#find
// 6 -> Array#findIndex
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js");
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/modules/_iobject.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/modules/_to-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var asc = __webpack_require__(/*! ./_array-species-create */ "../node_modules/core-js/modules/_array-species-create.js");
module.exports = function (TYPE, $create) {
  var IS_MAP = TYPE == 1;
  var IS_FILTER = TYPE == 2;
  var IS_SOME = TYPE == 3;
  var IS_EVERY = TYPE == 4;
  var IS_FIND_INDEX = TYPE == 6;
  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
  var create = $create || asc;
  return function ($this, callbackfn, that) {
    var O = toObject($this);
    var self = IObject(O);
    var f = ctx(callbackfn, that, 3);
    var length = toLength(self.length);
    var index = 0;
    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
    var val, res;
    for (;length > index; index++) if (NO_HOLES || index in self) {
      val = self[index];
      res = f(val, index, O);
      if (TYPE) {
        if (IS_MAP) result[index] = res;   // map
        else if (res) switch (TYPE) {
          case 3: return true;             // some
          case 5: return val;              // find
          case 6: return index;            // findIndex
          case 2: result.push(val);        // filter
        } else if (IS_EVERY) return false; // every
      }
    }
    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-species-constructor.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/modules/_array-species-constructor.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/modules/_is-array.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('species');

module.exports = function (original) {
  var C;
  if (isArray(original)) {
    C = original.constructor;
    // cross-realm fallback
    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
    if (isObject(C)) {
      C = C[SPECIES];
      if (C === null) C = undefined;
    }
  } return C === undefined ? Array : C;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-species-create.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_array-species-create.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
var speciesConstructor = __webpack_require__(/*! ./_array-species-constructor */ "../node_modules/core-js/modules/_array-species-constructor.js");

module.exports = function (original, length) {
  return new (speciesConstructor(original))(length);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_classof.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_classof.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_cof.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_cof.js ***!
  \***********************************************/
/***/ ((module) => {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_core.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_core.js ***!
  \************************************************/
/***/ ((module) => {

var core = module.exports = { version: '2.6.12' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/modules/_ctx.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_ctx.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// optional / simple context binding
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/modules/_a-function.js");
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_defined.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_defined.js ***!
  \***************************************************/
/***/ ((module) => {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_descriptors.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_descriptors.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/modules/_dom-create.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_dom-create.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),

/***/ "../node_modules/core-js/modules/_export.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_export.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js");
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
  var key, own, out, exp;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    // export native or passed
    out = (own ? target : source)[key];
    // bind timers to global for call from export context
    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // extend global
    if (target) redefine(target, key, out, type & $export.U);
    // export
    if (exports[key] != out) hide(exports, key, exp);
    if (IS_PROTO && expProto[key] != out) expProto[key] = out;
  }
};
global.core = core;
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),

/***/ "../node_modules/core-js/modules/_fails-is-regexp.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/_fails-is-regexp.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var MATCH = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('match');
module.exports = function (KEY) {
  var re = /./;
  try {
    '/./'[KEY](re);
  } catch (e) {
    try {
      re[MATCH] = false;
      return !'/./'[KEY](re);
    } catch (f) { /* empty */ }
  } return true;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_fails.js":
/*!*************************************************!*\
  !*** ../node_modules/core-js/modules/_fails.js ***!
  \*************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),

/***/ "../node_modules/core-js/modules/_fix-re-wks.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_fix-re-wks.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

__webpack_require__(/*! ./es6.regexp.exec */ "../node_modules/core-js/modules/es6.regexp.exec.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
var wks = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js");
var regexpExec = __webpack_require__(/*! ./_regexp-exec */ "../node_modules/core-js/modules/_regexp-exec.js");

var SPECIES = wks('species');

var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
  // #replace needs built-in support for named groups.
  // #match works fine because it just return the exec results, even if it has
  // a "grops" property.
  var re = /./;
  re.exec = function () {
    var result = [];
    result.groups = { a: '7' };
    return result;
  };
  return ''.replace(re, '$<a>') !== '7';
});

var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {
  // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
  var re = /(?:)/;
  var originalExec = re.exec;
  re.exec = function () { return originalExec.apply(this, arguments); };
  var result = 'ab'.split(re);
  return result.length === 2 && result[0] === 'a' && result[1] === 'b';
})();

module.exports = function (KEY, length, exec) {
  var SYMBOL = wks(KEY);

  var DELEGATES_TO_SYMBOL = !fails(function () {
    // String methods call symbol-named RegEp methods
    var O = {};
    O[SYMBOL] = function () { return 7; };
    return ''[KEY](O) != 7;
  });

  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {
    // Symbol-named RegExp methods call .exec
    var execCalled = false;
    var re = /a/;
    re.exec = function () { execCalled = true; return null; };
    if (KEY === 'split') {
      // RegExp[@@split] doesn't call the regex's exec method, but first creates
      // a new one. We need to return the patched regex when creating the new one.
      re.constructor = {};
      re.constructor[SPECIES] = function () { return re; };
    }
    re[SYMBOL]('');
    return !execCalled;
  }) : undefined;

  if (
    !DELEGATES_TO_SYMBOL ||
    !DELEGATES_TO_EXEC ||
    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||
    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
  ) {
    var nativeRegExpMethod = /./[SYMBOL];
    var fns = exec(
      defined,
      SYMBOL,
      ''[KEY],
      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {
        if (regexp.exec === regexpExec) {
          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
            // The native String method already delegates to @@method (this
            // polyfilled function), leasing to infinite recursion.
            // We avoid it by directly calling the native @@method method.
            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
          }
          return { done: true, value: nativeMethod.call(str, regexp, arg2) };
        }
        return { done: false };
      }
    );
    var strfn = fns[0];
    var rxfn = fns[1];

    redefine(String.prototype, KEY, strfn);
    hide(RegExp.prototype, SYMBOL, length == 2
      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
      // 21.2.5.11 RegExp.prototype[@@split](string, limit)
      ? function (string, arg) { return rxfn.call(string, this, arg); }
      // 21.2.5.6 RegExp.prototype[@@match](string)
      // 21.2.5.9 RegExp.prototype[@@search](string)
      : function (string) { return rxfn.call(string, this); }
    );
  }
};


/***/ }),

/***/ "../node_modules/core-js/modules/_flags.js":
/*!*************************************************!*\
  !*** ../node_modules/core-js/modules/_flags.js ***!
  \*************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 21.2.5.3 get RegExp.prototype.flags
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
module.exports = function () {
  var that = anObject(this);
  var result = '';
  if (that.global) result += 'g';
  if (that.ignoreCase) result += 'i';
  if (that.multiline) result += 'm';
  if (that.unicode) result += 'u';
  if (that.sticky) result += 'y';
  return result;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_function-to-string.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/_function-to-string.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('native-function-to-string', Function.toString);


/***/ }),

/***/ "../node_modules/core-js/modules/_global.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_global.js ***!
  \**************************************************/
/***/ ((module) => {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/modules/_has.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_has.js ***!
  \***********************************************/
/***/ ((module) => {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_hide.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_hide.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/modules/_property-desc.js");
module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_ie8-dom-define.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/_ie8-dom-define.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () {
  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/modules/_iobject.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_iobject.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-array.js":
/*!****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-array.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-object.js ***!
  \*****************************************************/
/***/ ((module) => {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-regexp.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-regexp.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.8 IsRegExp(argument)
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
var MATCH = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('match');
module.exports = function (it) {
  var isRegExp;
  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
};


/***/ }),

/***/ "../node_modules/core-js/modules/_library.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_library.js ***!
  \***************************************************/
/***/ ((module) => {

module.exports = false;


/***/ }),

/***/ "../node_modules/core-js/modules/_object-dp.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_object-dp.js ***!
  \*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/modules/_ie8-dom-define.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/modules/_to-primitive.js");
var dP = Object.defineProperty;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_property-desc.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_property-desc.js ***!
  \*********************************************************/
/***/ ((module) => {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_redefine.js":
/*!****************************************************!*\
  !*** ../node_modules/core-js/modules/_redefine.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var SRC = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js")('src');
var $toString = __webpack_require__(/*! ./_function-to-string */ "../node_modules/core-js/modules/_function-to-string.js");
var TO_STRING = 'toString';
var TPL = ('' + $toString).split(TO_STRING);

__webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js").inspectSource = function (it) {
  return $toString.call(it);
};

(module.exports = function (O, key, val, safe) {
  var isFunction = typeof val == 'function';
  if (isFunction) has(val, 'name') || hide(val, 'name', key);
  if (O[key] === val) return;
  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
  if (O === global) {
    O[key] = val;
  } else if (!safe) {
    delete O[key];
    hide(O, key, val);
  } else if (O[key]) {
    O[key] = val;
  } else {
    hide(O, key, val);
  }
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, TO_STRING, function toString() {
  return typeof this == 'function' && this[SRC] || $toString.call(this);
});


/***/ }),

/***/ "../node_modules/core-js/modules/_regexp-exec-abstract.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_regexp-exec-abstract.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/modules/_classof.js");
var builtinExec = RegExp.prototype.exec;

 // `RegExpExec` abstract operation
// https://tc39.github.io/ecma262/#sec-regexpexec
module.exports = function (R, S) {
  var exec = R.exec;
  if (typeof exec === 'function') {
    var result = exec.call(R, S);
    if (typeof result !== 'object') {
      throw new TypeError('RegExp exec method returned something other than an Object or null');
    }
    return result;
  }
  if (classof(R) !== 'RegExp') {
    throw new TypeError('RegExp#exec called on incompatible receiver');
  }
  return builtinExec.call(R, S);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_regexp-exec.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_regexp-exec.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var regexpFlags = __webpack_require__(/*! ./_flags */ "../node_modules/core-js/modules/_flags.js");

var nativeExec = RegExp.prototype.exec;
// This always refers to the native implementation, because the
// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,
// which loads this file before patching the method.
var nativeReplace = String.prototype.replace;

var patchedExec = nativeExec;

var LAST_INDEX = 'lastIndex';

var UPDATES_LAST_INDEX_WRONG = (function () {
  var re1 = /a/,
      re2 = /b*/g;
  nativeExec.call(re1, 'a');
  nativeExec.call(re2, 'a');
  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;
})();

// nonparticipating capturing group, copied from es5-shim's String#split patch.
var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;

var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;

if (PATCH) {
  patchedExec = function exec(str) {
    var re = this;
    var lastIndex, reCopy, match, i;

    if (NPCG_INCLUDED) {
      reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re));
    }
    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];

    match = nativeExec.call(re, str);

    if (UPDATES_LAST_INDEX_WRONG && match) {
      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;
    }
    if (NPCG_INCLUDED && match && match.length > 1) {
      // Fix browsers whose `exec` methods don't consistently return `undefined`
      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
      // eslint-disable-next-line no-loop-func
      nativeReplace.call(match[0], reCopy, function () {
        for (i = 1; i < arguments.length - 2; i++) {
          if (arguments[i] === undefined) match[i] = undefined;
        }
      });
    }

    return match;
  };
}

module.exports = patchedExec;


/***/ }),

/***/ "../node_modules/core-js/modules/_shared.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_shared.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(/*! ./_library */ "../node_modules/core-js/modules/_library.js") ? 'pure' : 'global',
  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});


/***/ }),

/***/ "../node_modules/core-js/modules/_strict-method.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_strict-method.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js");

module.exports = function (method, arg) {
  return !!method && fails(function () {
    // eslint-disable-next-line no-useless-call
    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);
  });
};


/***/ }),

/***/ "../node_modules/core-js/modules/_string-at.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_string-at.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_string-context.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/_string-context.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// helper for String#{startsWith, endsWith, includes}
var isRegExp = __webpack_require__(/*! ./_is-regexp */ "../node_modules/core-js/modules/_is-regexp.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");

module.exports = function (that, searchString, NAME) {
  if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
  return String(defined(that));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_string-html.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_string-html.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
var quot = /"/g;
// B.2.3.2.1 CreateHTML(string, tag, attribute, value)
var createHTML = function (string, tag, attribute, value) {
  var S = String(defined(string));
  var p1 = '<' + tag;
  if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '&quot;') + '"';
  return p1 + '>' + S + '</' + tag + '>';
};
module.exports = function (NAME, exec) {
  var O = {};
  O[NAME] = exec(createHTML);
  $export($export.P + $export.F * fails(function () {
    var test = ''[NAME]('"');
    return test !== test.toLowerCase() || test.split('"').length > 3;
  }), 'String', O);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-absolute-index.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/_to-absolute-index.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-integer.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_to-integer.js ***!
  \******************************************************/
/***/ ((module) => {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-iobject.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_to-iobject.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/modules/_iobject.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-length.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_to-length.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.15 ToLength
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_to-object.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-primitive.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/modules/_to-primitive.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),

/***/ "../node_modules/core-js/modules/_uid.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_uid.js ***!
  \***********************************************/
/***/ ((module) => {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_wks.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_wks.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var store = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('wks');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js");
var Symbol = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.filter.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.filter.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $filter = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(2);

$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "../node_modules/core-js/modules/_strict-method.js")([].filter, true), 'Array', {
  // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
  filter: function filter(callbackfn /* , thisArg */) {
    return $filter(this, callbackfn, arguments[1]);
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.find.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.find.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $find = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(5);
var KEY = 'find';
var forced = true;
// Shouldn't skip holes
if (KEY in []) Array(1)[KEY](function () { forced = false; });
$export($export.P + $export.F * forced, 'Array', {
  find: function find(callbackfn /* , that = undefined */) {
    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  }
});
__webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/modules/_add-to-unscopables.js")(KEY);


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.map.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.map.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $map = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(1);

$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "../node_modules/core-js/modules/_strict-method.js")([].map, true), 'Array', {
  // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
  map: function map(callbackfn /* , thisArg */) {
    return $map(this, callbackfn, arguments[1]);
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.function.name.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.function.name.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js").f;
var FProto = Function.prototype;
var nameRE = /^\s*function ([^ (]*)/;
var NAME = 'name';

// 19.2.4.2 name
NAME in FProto || __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") && dP(FProto, NAME, {
  configurable: true,
  get: function () {
    try {
      return ('' + this).match(nameRE)[1];
    } catch (e) {
      return '';
    }
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.object.to-string.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.object.to-string.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 19.1.3.6 Object.prototype.toString()
var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/modules/_classof.js");
var test = {};
test[__webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag')] = 'z';
if (test + '' != '[object z]') {
  __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js")(Object.prototype, 'toString', function toString() {
    return '[object ' + classof(this) + ']';
  }, true);
}


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.exec.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.exec.js ***!
  \**********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var regexpExec = __webpack_require__(/*! ./_regexp-exec */ "../node_modules/core-js/modules/_regexp-exec.js");
__webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js")({
  target: 'RegExp',
  proto: true,
  forced: regexpExec !== /./.exec
}, {
  exec: regexpExec
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.flags.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.flags.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 21.2.5.3 get RegExp.prototype.flags()
if (__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") && /./g.flags != 'g') __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js").f(RegExp.prototype, 'flags', {
  configurable: true,
  get: __webpack_require__(/*! ./_flags */ "../node_modules/core-js/modules/_flags.js")
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.replace.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.replace.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/modules/_to-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var advanceStringIndex = __webpack_require__(/*! ./_advance-string-index */ "../node_modules/core-js/modules/_advance-string-index.js");
var regExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ "../node_modules/core-js/modules/_regexp-exec-abstract.js");
var max = Math.max;
var min = Math.min;
var floor = Math.floor;
var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g;
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g;

var maybeToString = function (it) {
  return it === undefined ? it : String(it);
};

// @@replace logic
__webpack_require__(/*! ./_fix-re-wks */ "../node_modules/core-js/modules/_fix-re-wks.js")('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {
  return [
    // `String.prototype.replace` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.replace
    function replace(searchValue, replaceValue) {
      var O = defined(this);
      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];
      return fn !== undefined
        ? fn.call(searchValue, O, replaceValue)
        : $replace.call(String(O), searchValue, replaceValue);
    },
    // `RegExp.prototype[@@replace]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
    function (regexp, replaceValue) {
      var res = maybeCallNative($replace, regexp, this, replaceValue);
      if (res.done) return res.value;

      var rx = anObject(regexp);
      var S = String(this);
      var functionalReplace = typeof replaceValue === 'function';
      if (!functionalReplace) replaceValue = String(replaceValue);
      var global = rx.global;
      if (global) {
        var fullUnicode = rx.unicode;
        rx.lastIndex = 0;
      }
      var results = [];
      while (true) {
        var result = regExpExec(rx, S);
        if (result === null) break;
        results.push(result);
        if (!global) break;
        var matchStr = String(result[0]);
        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
      }
      var accumulatedResult = '';
      var nextSourcePosition = 0;
      for (var i = 0; i < results.length; i++) {
        result = results[i];
        var matched = String(result[0]);
        var position = max(min(toInteger(result.index), S.length), 0);
        var captures = [];
        // NOTE: This is equivalent to
        //   captures = result.slice(1).map(maybeToString)
        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
        // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
        var namedCaptures = result.groups;
        if (functionalReplace) {
          var replacerArgs = [matched].concat(captures, position, S);
          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
          var replacement = String(replaceValue.apply(undefined, replacerArgs));
        } else {
          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
        }
        if (position >= nextSourcePosition) {
          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
          nextSourcePosition = position + matched.length;
        }
      }
      return accumulatedResult + S.slice(nextSourcePosition);
    }
  ];

    // https://tc39.github.io/ecma262/#sec-getsubstitution
  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {
    var tailPos = position + matched.length;
    var m = captures.length;
    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
    if (namedCaptures !== undefined) {
      namedCaptures = toObject(namedCaptures);
      symbols = SUBSTITUTION_SYMBOLS;
    }
    return $replace.call(replacement, symbols, function (match, ch) {
      var capture;
      switch (ch.charAt(0)) {
        case '$': return '$';
        case '&': return matched;
        case '`': return str.slice(0, position);
        case "'": return str.slice(tailPos);
        case '<':
          capture = namedCaptures[ch.slice(1, -1)];
          break;
        default: // \d\d?
          var n = +ch;
          if (n === 0) return match;
          if (n > m) {
            var f = floor(n / 10);
            if (f === 0) return match;
            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
            return match;
          }
          capture = captures[n - 1];
      }
      return capture === undefined ? '' : capture;
    });
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.to-string.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.to-string.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

__webpack_require__(/*! ./es6.regexp.flags */ "../node_modules/core-js/modules/es6.regexp.flags.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var $flags = __webpack_require__(/*! ./_flags */ "../node_modules/core-js/modules/_flags.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js");
var TO_STRING = 'toString';
var $toString = /./[TO_STRING];

var define = function (fn) {
  __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js")(RegExp.prototype, TO_STRING, fn, true);
};

// 21.2.5.14 RegExp.prototype.toString()
if (__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {
  define(function toString() {
    var R = anObject(this);
    return '/'.concat(R.source, '/',
      'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
  });
// FF44- RegExp#toString has a wrong name
} else if ($toString.name != TO_STRING) {
  define(function toString() {
    return $toString.call(this);
  });
}


/***/ }),

/***/ "../node_modules/core-js/modules/es6.string.includes.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.string.includes.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// 21.1.3.7 String.prototype.includes(searchString, position = 0)

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var context = __webpack_require__(/*! ./_string-context */ "../node_modules/core-js/modules/_string-context.js");
var INCLUDES = 'includes';

$export($export.P + $export.F * __webpack_require__(/*! ./_fails-is-regexp */ "../node_modules/core-js/modules/_fails-is-regexp.js")(INCLUDES), 'String', {
  includes: function includes(searchString /* , position = 0 */) {
    return !!~context(this, searchString, INCLUDES)
      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.string.sub.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.string.sub.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// B.2.3.13 String.prototype.sub()
__webpack_require__(/*! ./_string-html */ "../node_modules/core-js/modules/_string-html.js")('sub', function (createHTML) {
  return function sub() {
    return createHTML(this, 'sub', '', '');
  };
});


/***/ }),

/***/ "../node_modules/core-js/modules/es7.array.includes.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/es7.array.includes.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/tc39/Array.prototype.includes
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $includes = __webpack_require__(/*! ./_array-includes */ "../node_modules/core-js/modules/_array-includes.js")(true);

$export($export.P, 'Array', {
  includes: function includes(el /* , fromIndex = 0 */) {
    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
  }
});

__webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/modules/_add-to-unscopables.js")('includes');


/***/ }),

/***/ "../node_modules/create-react-context/lib/implementation.js":
/*!******************************************************************!*\
  !*** ../node_modules/create-react-context/lib/implementation.js ***!
  \******************************************************************/
/***/ ((module, exports, __webpack_require__) => {

"use strict";


exports.__esModule = true;

var _react = __webpack_require__(/*! react */ "react");

var _react2 = _interopRequireDefault(_react);

var _propTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");

var _propTypes2 = _interopRequireDefault(_propTypes);

var _gud = __webpack_require__(/*! gud */ "../node_modules/gud/index.js");

var _gud2 = _interopRequireDefault(_gud);

var _warning = __webpack_require__(/*! warning */ "../node_modules/warning/warning.js");

var _warning2 = _interopRequireDefault(_warning);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }

var MAX_SIGNED_31_BIT_INT = 1073741823;

// Inlined Object.is polyfill.
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
function objectIs(x, y) {
  if (x === y) {
    return x !== 0 || 1 / x === 1 / y;
  } else {
    return x !== x && y !== y;
  }
}

function createEventEmitter(value) {
  var handlers = [];
  return {
    on: function on(handler) {
      handlers.push(handler);
    },
    off: function off(handler) {
      handlers = handlers.filter(function (h) {
        return h !== handler;
      });
    },
    get: function get() {
      return value;
    },
    set: function set(newValue, changedBits) {
      value = newValue;
      handlers.forEach(function (handler) {
        return handler(value, changedBits);
      });
    }
  };
}

function onlyChild(children) {
  return Array.isArray(children) ? children[0] : children;
}

function createReactContext(defaultValue, calculateChangedBits) {
  var _Provider$childContex, _Consumer$contextType;

  var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';

  var Provider = function (_Component) {
    _inherits(Provider, _Component);

    function Provider() {
      var _temp, _this, _ret;

      _classCallCheck(this, Provider);

      for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);
    }

    Provider.prototype.getChildContext = function getChildContext() {
      var _ref;

      return _ref = {}, _ref[contextProp] = this.emitter, _ref;
    };

    Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
      if (this.props.value !== nextProps.value) {
        var oldValue = this.props.value;
        var newValue = nextProps.value;
        var changedBits = void 0;

        if (objectIs(oldValue, newValue)) {
          changedBits = 0; // No change
        } else {
          changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;
          if (true) {
            (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);
          }

          changedBits |= 0;

          if (changedBits !== 0) {
            this.emitter.set(nextProps.value, changedBits);
          }
        }
      }
    };

    Provider.prototype.render = function render() {
      return this.props.children;
    };

    return Provider;
  }(_react.Component);

  Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);

  var Consumer = function (_Component2) {
    _inherits(Consumer, _Component2);

    function Consumer() {
      var _temp2, _this2, _ret2;

      _classCallCheck(this, Consumer);

      for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }

      return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {
        value: _this2.getValue()
      }, _this2.onUpdate = function (newValue, changedBits) {
        var observedBits = _this2.observedBits | 0;
        if ((observedBits & changedBits) !== 0) {
          _this2.setState({ value: _this2.getValue() });
        }
      }, _temp2), _possibleConstructorReturn(_this2, _ret2);
    }

    Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {
      var observedBits = nextProps.observedBits;

      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default
      : observedBits;
    };

    Consumer.prototype.componentDidMount = function componentDidMount() {
      if (this.context[contextProp]) {
        this.context[contextProp].on(this.onUpdate);
      }
      var observedBits = this.props.observedBits;

      this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default
      : observedBits;
    };

    Consumer.prototype.componentWillUnmount = function componentWillUnmount() {
      if (this.context[contextProp]) {
        this.context[contextProp].off(this.onUpdate);
      }
    };

    Consumer.prototype.getValue = function getValue() {
      if (this.context[contextProp]) {
        return this.context[contextProp].get();
      } else {
        return defaultValue;
      }
    };

    Consumer.prototype.render = function render() {
      return onlyChild(this.props.children)(this.state.value);
    };

    return Consumer;
  }(_react.Component);

  Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);


  return {
    Provider: Provider,
    Consumer: Consumer
  };
}

exports.default = createReactContext;
module.exports = exports['default'];

/***/ }),

/***/ "../node_modules/create-react-context/lib/index.js":
/*!*********************************************************!*\
  !*** ../node_modules/create-react-context/lib/index.js ***!
  \*********************************************************/
/***/ ((module, exports, __webpack_require__) => {

"use strict";


exports.__esModule = true;

var _react = __webpack_require__(/*! react */ "react");

var _react2 = _interopRequireDefault(_react);

var _implementation = __webpack_require__(/*! ./implementation */ "../node_modules/create-react-context/lib/implementation.js");

var _implementation2 = _interopRequireDefault(_implementation);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

exports.default = _react2.default.createContext || _implementation2.default;
module.exports = exports['default'];

/***/ }),

/***/ "../node_modules/gud/index.js":
/*!************************************!*\
  !*** ../node_modules/gud/index.js ***!
  \************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// @flow


var key = '__global_unique_id__';

module.exports = function() {
  return __webpack_require__.g[key] = (__webpack_require__.g[key] || 0) + 1;
};


/***/ }),

/***/ "../node_modules/invariant/browser.js":
/*!********************************************!*\
  !*** ../node_modules/invariant/browser.js ***!
  \********************************************/
/***/ ((module) => {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



/**
 * Use invariant() to assert state which your program assumes to be true.
 *
 * Provide sprintf-style format (only %s is supported) and arguments
 * to provide information about what broke and what you were
 * expecting.
 *
 * The invariant message will be stripped in production, but the invariant
 * will remain to ensure logic does not differ in production.
 */

var invariant = function(condition, format, a, b, c, d, e, f) {
  if (true) {
    if (format === undefined) {
      throw new Error('invariant requires an error message argument');
    }
  }

  if (!condition) {
    var error;
    if (format === undefined) {
      error = new Error(
        'Minified exception occurred; use the non-minified dev environment ' +
        'for the full error message and additional helpful warnings.'
      );
    } else {
      var args = [a, b, c, d, e, f];
      var argIndex = 0;
      error = new Error(
        format.replace(/%s/g, function() { return args[argIndex++]; })
      );
      error.name = 'Invariant Violation';
    }

    error.framesToPop = 1; // we don't care about invariant's own frame
    throw error;
  }
};

module.exports = invariant;


/***/ }),

/***/ "../node_modules/object-assign/index.js":
/*!**********************************************!*\
  !*** ../node_modules/object-assign/index.js ***!
  \**********************************************/
/***/ ((module) => {

"use strict";
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/


/* eslint-disable no-unused-vars */
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var propIsEnumerable = Object.prototype.propertyIsEnumerable;

function toObject(val) {
	if (val === null || val === undefined) {
		throw new TypeError('Object.assign cannot be called with null or undefined');
	}

	return Object(val);
}

function shouldUseNative() {
	try {
		if (!Object.assign) {
			return false;
		}

		// Detect buggy property enumeration order in older V8 versions.

		// https://bugs.chromium.org/p/v8/issues/detail?id=4118
		var test1 = new String('abc');  // eslint-disable-line no-new-wrappers
		test1[5] = 'de';
		if (Object.getOwnPropertyNames(test1)[0] === '5') {
			return false;
		}

		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
		var test2 = {};
		for (var i = 0; i < 10; i++) {
			test2['_' + String.fromCharCode(i)] = i;
		}
		var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
			return test2[n];
		});
		if (order2.join('') !== '0123456789') {
			return false;
		}

		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
		var test3 = {};
		'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
			test3[letter] = letter;
		});
		if (Object.keys(Object.assign({}, test3)).join('') !==
				'abcdefghijklmnopqrst') {
			return false;
		}

		return true;
	} catch (err) {
		// We don't expect any of the above to throw, but better to be safe.
		return false;
	}
}

module.exports = shouldUseNative() ? Object.assign : function (target, source) {
	var from;
	var to = toObject(target);
	var symbols;

	for (var s = 1; s < arguments.length; s++) {
		from = Object(arguments[s]);

		for (var key in from) {
			if (hasOwnProperty.call(from, key)) {
				to[key] = from[key];
			}
		}

		if (getOwnPropertySymbols) {
			symbols = getOwnPropertySymbols(from);
			for (var i = 0; i < symbols.length; i++) {
				if (propIsEnumerable.call(from, symbols[i])) {
					to[symbols[i]] = from[symbols[i]];
				}
			}
		}
	}

	return to;
};


/***/ }),

/***/ "../node_modules/prop-types/checkPropTypes.js":
/*!****************************************************!*\
  !*** ../node_modules/prop-types/checkPropTypes.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



var printWarning = function() {};

if (true) {
  var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js");
  var loggedTypeFailures = {};
  var has = Function.call.bind(Object.prototype.hasOwnProperty);

  printWarning = function(text) {
    var message = 'Warning: ' + text;
    if (typeof console !== 'undefined') {
      console.error(message);
    }
    try {
      // --- Welcome to debugging React ---
      // This error was thrown as a convenience so that you can use this stack
      // to find the callsite that caused this warning to fire.
      throw new Error(message);
    } catch (x) {}
  };
}

/**
 * Assert that the values match with the type specs.
 * Error messages are memorized and will only be shown once.
 *
 * @param {object} typeSpecs Map of name to a ReactPropType
 * @param {object} values Runtime values that need to be type-checked
 * @param {string} location e.g. "prop", "context", "child context"
 * @param {string} componentName Name of the component for error messages.
 * @param {?Function} getStack Returns the component stack.
 * @private
 */
function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
  if (true) {
    for (var typeSpecName in typeSpecs) {
      if (has(typeSpecs, typeSpecName)) {
        var error;
        // Prop type validation may throw. In case they do, we don't want to
        // fail the render phase where it didn't fail before. So we log it.
        // After these have been cleaned up, we'll let them throw.
        try {
          // This is intentionally an invariant that gets caught. It's the same
          // behavior as without this statement except with a better message.
          if (typeof typeSpecs[typeSpecName] !== 'function') {
            var err = Error(
              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +
              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'
            );
            err.name = 'Invariant Violation';
            throw err;
          }
          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
        } catch (ex) {
          error = ex;
        }
        if (error && !(error instanceof Error)) {
          printWarning(
            (componentName || 'React class') + ': type specification of ' +
            location + ' `' + typeSpecName + '` is invalid; the type checker ' +
            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +
            'You may have forgotten to pass an argument to the type checker ' +
            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +
            'shape all require an argument).'
          );
        }
        if (error instanceof Error && !(error.message in loggedTypeFailures)) {
          // Only monitor this failure once because there tends to be a lot of the
          // same error.
          loggedTypeFailures[error.message] = true;

          var stack = getStack ? getStack() : '';

          printWarning(
            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')
          );
        }
      }
    }
  }
}

/**
 * Resets warning cache when testing.
 *
 * @private
 */
checkPropTypes.resetWarningCache = function() {
  if (true) {
    loggedTypeFailures = {};
  }
}

module.exports = checkPropTypes;


/***/ }),

/***/ "../node_modules/prop-types/factoryWithTypeCheckers.js":
/*!*************************************************************!*\
  !*** ../node_modules/prop-types/factoryWithTypeCheckers.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/react-is/index.js");
var assign = __webpack_require__(/*! object-assign */ "../node_modules/object-assign/index.js");

var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js");
var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "../node_modules/prop-types/checkPropTypes.js");

var has = Function.call.bind(Object.prototype.hasOwnProperty);
var printWarning = function() {};

if (true) {
  printWarning = function(text) {
    var message = 'Warning: ' + text;
    if (typeof console !== 'undefined') {
      console.error(message);
    }
    try {
      // --- Welcome to debugging React ---
      // This error was thrown as a convenience so that you can use this stack
      // to find the callsite that caused this warning to fire.
      throw new Error(message);
    } catch (x) {}
  };
}

function emptyFunctionThatReturnsNull() {
  return null;
}

module.exports = function(isValidElement, throwOnDirectAccess) {
  /* global Symbol */
  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.

  /**
   * Returns the iterator method function contained on the iterable object.
   *
   * Be sure to invoke the function with the iterable as context:
   *
   *     var iteratorFn = getIteratorFn(myIterable);
   *     if (iteratorFn) {
   *       var iterator = iteratorFn.call(myIterable);
   *       ...
   *     }
   *
   * @param {?object} maybeIterable
   * @return {?function}
   */
  function getIteratorFn(maybeIterable) {
    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
    if (typeof iteratorFn === 'function') {
      return iteratorFn;
    }
  }

  /**
   * Collection of methods that allow declaration and validation of props that are
   * supplied to React components. Example usage:
   *
   *   var Props = require('ReactPropTypes');
   *   var MyArticle = React.createClass({
   *     propTypes: {
   *       // An optional string prop named "description".
   *       description: Props.string,
   *
   *       // A required enum prop named "category".
   *       category: Props.oneOf(['News','Photos']).isRequired,
   *
   *       // A prop named "dialog" that requires an instance of Dialog.
   *       dialog: Props.instanceOf(Dialog).isRequired
   *     },
   *     render: function() { ... }
   *   });
   *
   * A more formal specification of how these methods are used:
   *
   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
   *   decl := ReactPropTypes.{type}(.isRequired)?
   *
   * Each and every declaration produces a function with the same signature. This
   * allows the creation of custom validation functions. For example:
   *
   *  var MyLink = React.createClass({
   *    propTypes: {
   *      // An optional string or URI prop named "href".
   *      href: function(props, propName, componentName) {
   *        var propValue = props[propName];
   *        if (propValue != null && typeof propValue !== 'string' &&
   *            !(propValue instanceof URI)) {
   *          return new Error(
   *            'Expected a string or an URI for ' + propName + ' in ' +
   *            componentName
   *          );
   *        }
   *      }
   *    },
   *    render: function() {...}
   *  });
   *
   * @internal
   */

  var ANONYMOUS = '<<anonymous>>';

  // Important!
  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
  var ReactPropTypes = {
    array: createPrimitiveTypeChecker('array'),
    bool: createPrimitiveTypeChecker('boolean'),
    func: createPrimitiveTypeChecker('function'),
    number: createPrimitiveTypeChecker('number'),
    object: createPrimitiveTypeChecker('object'),
    string: createPrimitiveTypeChecker('string'),
    symbol: createPrimitiveTypeChecker('symbol'),

    any: createAnyTypeChecker(),
    arrayOf: createArrayOfTypeChecker,
    element: createElementTypeChecker(),
    elementType: createElementTypeTypeChecker(),
    instanceOf: createInstanceTypeChecker,
    node: createNodeChecker(),
    objectOf: createObjectOfTypeChecker,
    oneOf: createEnumTypeChecker,
    oneOfType: createUnionTypeChecker,
    shape: createShapeTypeChecker,
    exact: createStrictShapeTypeChecker,
  };

  /**
   * inlined Object.is polyfill to avoid requiring consumers ship their own
   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
   */
  /*eslint-disable no-self-compare*/
  function is(x, y) {
    // SameValue algorithm
    if (x === y) {
      // Steps 1-5, 7-10
      // Steps 6.b-6.e: +0 != -0
      return x !== 0 || 1 / x === 1 / y;
    } else {
      // Step 6.a: NaN == NaN
      return x !== x && y !== y;
    }
  }
  /*eslint-enable no-self-compare*/

  /**
   * We use an Error-like object for backward compatibility as people may call
   * PropTypes directly and inspect their output. However, we don't use real
   * Errors anymore. We don't inspect their stack anyway, and creating them
   * is prohibitively expensive if they are created too often, such as what
   * happens in oneOfType() for any type before the one that matched.
   */
  function PropTypeError(message) {
    this.message = message;
    this.stack = '';
  }
  // Make `instanceof Error` still work for returned errors.
  PropTypeError.prototype = Error.prototype;

  function createChainableTypeChecker(validate) {
    if (true) {
      var manualPropTypeCallCache = {};
      var manualPropTypeWarningCount = 0;
    }
    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
      componentName = componentName || ANONYMOUS;
      propFullName = propFullName || propName;

      if (secret !== ReactPropTypesSecret) {
        if (throwOnDirectAccess) {
          // New behavior only for users of `prop-types` package
          var err = new Error(
            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
            'Use `PropTypes.checkPropTypes()` to call them. ' +
            'Read more at http://fb.me/use-check-prop-types'
          );
          err.name = 'Invariant Violation';
          throw err;
        } else if ( true && typeof console !== 'undefined') {
          // Old behavior for people using React.PropTypes
          var cacheKey = componentName + ':' + propName;
          if (
            !manualPropTypeCallCache[cacheKey] &&
            // Avoid spamming the console because they are often not actionable except for lib authors
            manualPropTypeWarningCount < 3
          ) {
            printWarning(
              'You are manually calling a React.PropTypes validation ' +
              'function for the `' + propFullName + '` prop on `' + componentName  + '`. This is deprecated ' +
              'and will throw in the standalone `prop-types` package. ' +
              'You may be seeing this warning due to a third-party PropTypes ' +
              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'
            );
            manualPropTypeCallCache[cacheKey] = true;
            manualPropTypeWarningCount++;
          }
        }
      }
      if (props[propName] == null) {
        if (isRequired) {
          if (props[propName] === null) {
            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
          }
          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
        }
        return null;
      } else {
        return validate(props, propName, componentName, location, propFullName);
      }
    }

    var chainedCheckType = checkType.bind(null, false);
    chainedCheckType.isRequired = checkType.bind(null, true);

    return chainedCheckType;
  }

  function createPrimitiveTypeChecker(expectedType) {
    function validate(props, propName, componentName, location, propFullName, secret) {
      var propValue = props[propName];
      var propType = getPropType(propValue);
      if (propType !== expectedType) {
        // `propValue` being instance of, say, date/regexp, pass the 'object'
        // check, but we can offer a more precise error message here rather than
        // 'of type `object`'.
        var preciseType = getPreciseType(propValue);

        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createAnyTypeChecker() {
    return createChainableTypeChecker(emptyFunctionThatReturnsNull);
  }

  function createArrayOfTypeChecker(typeChecker) {
    function validate(props, propName, componentName, location, propFullName) {
      if (typeof typeChecker !== 'function') {
        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
      }
      var propValue = props[propName];
      if (!Array.isArray(propValue)) {
        var propType = getPropType(propValue);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
      }
      for (var i = 0; i < propValue.length; i++) {
        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
        if (error instanceof Error) {
          return error;
        }
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createElementTypeChecker() {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      if (!isValidElement(propValue)) {
        var propType = getPropType(propValue);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createElementTypeTypeChecker() {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      if (!ReactIs.isValidElementType(propValue)) {
        var propType = getPropType(propValue);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createInstanceTypeChecker(expectedClass) {
    function validate(props, propName, componentName, location, propFullName) {
      if (!(props[propName] instanceof expectedClass)) {
        var expectedClassName = expectedClass.name || ANONYMOUS;
        var actualClassName = getClassName(props[propName]);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createEnumTypeChecker(expectedValues) {
    if (!Array.isArray(expectedValues)) {
      if (true) {
        if (arguments.length > 1) {
          printWarning(
            'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +
            'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'
          );
        } else {
          printWarning('Invalid argument supplied to oneOf, expected an array.');
        }
      }
      return emptyFunctionThatReturnsNull;
    }

    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      for (var i = 0; i < expectedValues.length; i++) {
        if (is(propValue, expectedValues[i])) {
          return null;
        }
      }

      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {
        var type = getPreciseType(value);
        if (type === 'symbol') {
          return String(value);
        }
        return value;
      });
      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
    }
    return createChainableTypeChecker(validate);
  }

  function createObjectOfTypeChecker(typeChecker) {
    function validate(props, propName, componentName, location, propFullName) {
      if (typeof typeChecker !== 'function') {
        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
      }
      var propValue = props[propName];
      var propType = getPropType(propValue);
      if (propType !== 'object') {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
      }
      for (var key in propValue) {
        if (has(propValue, key)) {
          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
          if (error instanceof Error) {
            return error;
          }
        }
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createUnionTypeChecker(arrayOfTypeCheckers) {
    if (!Array.isArray(arrayOfTypeCheckers)) {
       true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0;
      return emptyFunctionThatReturnsNull;
    }

    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
      var checker = arrayOfTypeCheckers[i];
      if (typeof checker !== 'function') {
        printWarning(
          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +
          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'
        );
        return emptyFunctionThatReturnsNull;
      }
    }

    function validate(props, propName, componentName, location, propFullName) {
      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
        var checker = arrayOfTypeCheckers[i];
        if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
          return null;
        }
      }

      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
    }
    return createChainableTypeChecker(validate);
  }

  function createNodeChecker() {
    function validate(props, propName, componentName, location, propFullName) {
      if (!isNode(props[propName])) {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createShapeTypeChecker(shapeTypes) {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      var propType = getPropType(propValue);
      if (propType !== 'object') {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
      }
      for (var key in shapeTypes) {
        var checker = shapeTypes[key];
        if (!checker) {
          continue;
        }
        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
        if (error) {
          return error;
        }
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createStrictShapeTypeChecker(shapeTypes) {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      var propType = getPropType(propValue);
      if (propType !== 'object') {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
      }
      // We need to check all keys in case some are required but missing from
      // props.
      var allKeys = assign({}, props[propName], shapeTypes);
      for (var key in allKeys) {
        var checker = shapeTypes[key];
        if (!checker) {
          return new PropTypeError(
            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +
            '\nBad object: ' + JSON.stringify(props[propName], null, '  ') +
            '\nValid keys: ' +  JSON.stringify(Object.keys(shapeTypes), null, '  ')
          );
        }
        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
        if (error) {
          return error;
        }
      }
      return null;
    }

    return createChainableTypeChecker(validate);
  }

  function isNode(propValue) {
    switch (typeof propValue) {
      case 'number':
      case 'string':
      case 'undefined':
        return true;
      case 'boolean':
        return !propValue;
      case 'object':
        if (Array.isArray(propValue)) {
          return propValue.every(isNode);
        }
        if (propValue === null || isValidElement(propValue)) {
          return true;
        }

        var iteratorFn = getIteratorFn(propValue);
        if (iteratorFn) {
          var iterator = iteratorFn.call(propValue);
          var step;
          if (iteratorFn !== propValue.entries) {
            while (!(step = iterator.next()).done) {
              if (!isNode(step.value)) {
                return false;
              }
            }
          } else {
            // Iterator will provide entry [k,v] tuples rather than values.
            while (!(step = iterator.next()).done) {
              var entry = step.value;
              if (entry) {
                if (!isNode(entry[1])) {
                  return false;
                }
              }
            }
          }
        } else {
          return false;
        }

        return true;
      default:
        return false;
    }
  }

  function isSymbol(propType, propValue) {
    // Native Symbol.
    if (propType === 'symbol') {
      return true;
    }

    // falsy value can't be a Symbol
    if (!propValue) {
      return false;
    }

    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
    if (propValue['@@toStringTag'] === 'Symbol') {
      return true;
    }

    // Fallback for non-spec compliant Symbols which are polyfilled.
    if (typeof Symbol === 'function' && propValue instanceof Symbol) {
      return true;
    }

    return false;
  }

  // Equivalent of `typeof` but with special handling for array and regexp.
  function getPropType(propValue) {
    var propType = typeof propValue;
    if (Array.isArray(propValue)) {
      return 'array';
    }
    if (propValue instanceof RegExp) {
      // Old webkits (at least until Android 4.0) return 'function' rather than
      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
      // passes PropTypes.object.
      return 'object';
    }
    if (isSymbol(propType, propValue)) {
      return 'symbol';
    }
    return propType;
  }

  // This handles more types than `getPropType`. Only used for error messages.
  // See `createPrimitiveTypeChecker`.
  function getPreciseType(propValue) {
    if (typeof propValue === 'undefined' || propValue === null) {
      return '' + propValue;
    }
    var propType = getPropType(propValue);
    if (propType === 'object') {
      if (propValue instanceof Date) {
        return 'date';
      } else if (propValue instanceof RegExp) {
        return 'regexp';
      }
    }
    return propType;
  }

  // Returns a string that is postfixed to a warning about an invalid type.
  // For example, "undefined" or "of type array"
  function getPostfixForTypeWarning(value) {
    var type = getPreciseType(value);
    switch (type) {
      case 'array':
      case 'object':
        return 'an ' + type;
      case 'boolean':
      case 'date':
      case 'regexp':
        return 'a ' + type;
      default:
        return type;
    }
  }

  // Returns class name of the object, if any.
  function getClassName(propValue) {
    if (!propValue.constructor || !propValue.constructor.name) {
      return ANONYMOUS;
    }
    return propValue.constructor.name;
  }

  ReactPropTypes.checkPropTypes = checkPropTypes;
  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;
  ReactPropTypes.PropTypes = ReactPropTypes;

  return ReactPropTypes;
};


/***/ }),

/***/ "../node_modules/prop-types/index.js":
/*!*******************************************!*\
  !*** ../node_modules/prop-types/index.js ***!
  \*******************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

if (true) {
  var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/react-is/index.js");

  // By explicitly using `prop-types` you are opting into new development behavior.
  // http://fb.me/prop-types-in-prod
  var throwOnDirectAccess = true;
  module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "../node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess);
} else {}


/***/ }),

/***/ "../node_modules/prop-types/lib/ReactPropTypesSecret.js":
/*!**************************************************************!*\
  !*** ../node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
  \**************************************************************/
/***/ ((module) => {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';

module.exports = ReactPropTypesSecret;


/***/ }),

/***/ "../node_modules/react-is/cjs/react-is.development.js":
/*!************************************************************!*\
  !*** ../node_modules/react-is/cjs/react-is.development.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";
/** @license React v16.13.1
 * react-is.development.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */





if (true) {
  (function() {
'use strict';

// The Symbol used to tag the ReactElement-like types. If there is no native Symbol
// nor polyfill, then a plain number is used for performance.
var hasSymbol = typeof Symbol === 'function' && Symbol.for;
var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
// (unstable) APIs that have been removed. Can we remove the symbols?

var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;
var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;

function isValidElementType(type) {
  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
}

function typeOf(object) {
  if (typeof object === 'object' && object !== null) {
    var $$typeof = object.$$typeof;

    switch ($$typeof) {
      case REACT_ELEMENT_TYPE:
        var type = object.type;

        switch (type) {
          case REACT_ASYNC_MODE_TYPE:
          case REACT_CONCURRENT_MODE_TYPE:
          case REACT_FRAGMENT_TYPE:
          case REACT_PROFILER_TYPE:
          case REACT_STRICT_MODE_TYPE:
          case REACT_SUSPENSE_TYPE:
            return type;

          default:
            var $$typeofType = type && type.$$typeof;

            switch ($$typeofType) {
              case REACT_CONTEXT_TYPE:
              case REACT_FORWARD_REF_TYPE:
              case REACT_LAZY_TYPE:
              case REACT_MEMO_TYPE:
              case REACT_PROVIDER_TYPE:
                return $$typeofType;

              default:
                return $$typeof;
            }

        }

      case REACT_PORTAL_TYPE:
        return $$typeof;
    }
  }

  return undefined;
} // AsyncMode is deprecated along with isAsyncMode

var AsyncMode = REACT_ASYNC_MODE_TYPE;
var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
var ContextConsumer = REACT_CONTEXT_TYPE;
var ContextProvider = REACT_PROVIDER_TYPE;
var Element = REACT_ELEMENT_TYPE;
var ForwardRef = REACT_FORWARD_REF_TYPE;
var Fragment = REACT_FRAGMENT_TYPE;
var Lazy = REACT_LAZY_TYPE;
var Memo = REACT_MEMO_TYPE;
var Portal = REACT_PORTAL_TYPE;
var Profiler = REACT_PROFILER_TYPE;
var StrictMode = REACT_STRICT_MODE_TYPE;
var Suspense = REACT_SUSPENSE_TYPE;
var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated

function isAsyncMode(object) {
  {
    if (!hasWarnedAboutDeprecatedIsAsyncMode) {
      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint

      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');
    }
  }

  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
}
function isConcurrentMode(object) {
  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
}
function isContextConsumer(object) {
  return typeOf(object) === REACT_CONTEXT_TYPE;
}
function isContextProvider(object) {
  return typeOf(object) === REACT_PROVIDER_TYPE;
}
function isElement(object) {
  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
}
function isForwardRef(object) {
  return typeOf(object) === REACT_FORWARD_REF_TYPE;
}
function isFragment(object) {
  return typeOf(object) === REACT_FRAGMENT_TYPE;
}
function isLazy(object) {
  return typeOf(object) === REACT_LAZY_TYPE;
}
function isMemo(object) {
  return typeOf(object) === REACT_MEMO_TYPE;
}
function isPortal(object) {
  return typeOf(object) === REACT_PORTAL_TYPE;
}
function isProfiler(object) {
  return typeOf(object) === REACT_PROFILER_TYPE;
}
function isStrictMode(object) {
  return typeOf(object) === REACT_STRICT_MODE_TYPE;
}
function isSuspense(object) {
  return typeOf(object) === REACT_SUSPENSE_TYPE;
}

exports.AsyncMode = AsyncMode;
exports.ConcurrentMode = ConcurrentMode;
exports.ContextConsumer = ContextConsumer;
exports.ContextProvider = ContextProvider;
exports.Element = Element;
exports.ForwardRef = ForwardRef;
exports.Fragment = Fragment;
exports.Lazy = Lazy;
exports.Memo = Memo;
exports.Portal = Portal;
exports.Profiler = Profiler;
exports.StrictMode = StrictMode;
exports.Suspense = Suspense;
exports.isAsyncMode = isAsyncMode;
exports.isConcurrentMode = isConcurrentMode;
exports.isContextConsumer = isContextConsumer;
exports.isContextProvider = isContextProvider;
exports.isElement = isElement;
exports.isForwardRef = isForwardRef;
exports.isFragment = isFragment;
exports.isLazy = isLazy;
exports.isMemo = isMemo;
exports.isPortal = isPortal;
exports.isProfiler = isProfiler;
exports.isStrictMode = isStrictMode;
exports.isSuspense = isSuspense;
exports.isValidElementType = isValidElementType;
exports.typeOf = typeOf;
  })();
}


/***/ }),

/***/ "../node_modules/react-is/index.js":
/*!*****************************************!*\
  !*** ../node_modules/react-is/index.js ***!
  \*****************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


if (false) {} else {
  module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "../node_modules/react-is/cjs/react-is.development.js");
}


/***/ }),

/***/ "../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "polyfill": () => (/* binding */ polyfill)
/* harmony export */ });
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

function componentWillMount() {
  // Call this.constructor.gDSFP to support sub-classes.
  var state = this.constructor.getDerivedStateFromProps(this.props, this.state);
  if (state !== null && state !== undefined) {
    this.setState(state);
  }
}

function componentWillReceiveProps(nextProps) {
  // Call this.constructor.gDSFP to support sub-classes.
  // Use the setState() updater to ensure state isn't stale in certain edge cases.
  function updater(prevState) {
    var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);
    return state !== null && state !== undefined ? state : null;
  }
  // Binding "this" is important for shallow renderer support.
  this.setState(updater.bind(this));
}

function componentWillUpdate(nextProps, nextState) {
  try {
    var prevProps = this.props;
    var prevState = this.state;
    this.props = nextProps;
    this.state = nextState;
    this.__reactInternalSnapshotFlag = true;
    this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(
      prevProps,
      prevState
    );
  } finally {
    this.props = prevProps;
    this.state = prevState;
  }
}

// React may warn about cWM/cWRP/cWU methods being deprecated.
// Add a flag to suppress these warnings for this special case.
componentWillMount.__suppressDeprecationWarning = true;
componentWillReceiveProps.__suppressDeprecationWarning = true;
componentWillUpdate.__suppressDeprecationWarning = true;

function polyfill(Component) {
  var prototype = Component.prototype;

  if (!prototype || !prototype.isReactComponent) {
    throw new Error('Can only polyfill class components');
  }

  if (
    typeof Component.getDerivedStateFromProps !== 'function' &&
    typeof prototype.getSnapshotBeforeUpdate !== 'function'
  ) {
    return Component;
  }

  // If new component APIs are defined, "unsafe" lifecycles won't be called.
  // Error if any of these lifecycles are present,
  // Because they would work differently between older and newer (16.3+) versions of React.
  var foundWillMountName = null;
  var foundWillReceivePropsName = null;
  var foundWillUpdateName = null;
  if (typeof prototype.componentWillMount === 'function') {
    foundWillMountName = 'componentWillMount';
  } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {
    foundWillMountName = 'UNSAFE_componentWillMount';
  }
  if (typeof prototype.componentWillReceiveProps === 'function') {
    foundWillReceivePropsName = 'componentWillReceiveProps';
  } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {
    foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';
  }
  if (typeof prototype.componentWillUpdate === 'function') {
    foundWillUpdateName = 'componentWillUpdate';
  } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {
    foundWillUpdateName = 'UNSAFE_componentWillUpdate';
  }
  if (
    foundWillMountName !== null ||
    foundWillReceivePropsName !== null ||
    foundWillUpdateName !== null
  ) {
    var componentName = Component.displayName || Component.name;
    var newApiName =
      typeof Component.getDerivedStateFromProps === 'function'
        ? 'getDerivedStateFromProps()'
        : 'getSnapshotBeforeUpdate()';

    throw Error(
      'Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n' +
        componentName +
        ' uses ' +
        newApiName +
        ' but also contains the following legacy lifecycles:' +
        (foundWillMountName !== null ? '\n  ' + foundWillMountName : '') +
        (foundWillReceivePropsName !== null
          ? '\n  ' + foundWillReceivePropsName
          : '') +
        (foundWillUpdateName !== null ? '\n  ' + foundWillUpdateName : '') +
        '\n\nThe above lifecycles should be removed. Learn more about this warning here:\n' +
        'https://fb.me/react-async-component-lifecycle-hooks'
    );
  }

  // React <= 16.2 does not support static getDerivedStateFromProps.
  // As a workaround, use cWM and cWRP to invoke the new static lifecycle.
  // Newer versions of React will ignore these lifecycles if gDSFP exists.
  if (typeof Component.getDerivedStateFromProps === 'function') {
    prototype.componentWillMount = componentWillMount;
    prototype.componentWillReceiveProps = componentWillReceiveProps;
  }

  // React <= 16.2 does not support getSnapshotBeforeUpdate.
  // As a workaround, use cWU to invoke the new lifecycle.
  // Newer versions of React will ignore that lifecycle if gSBU exists.
  if (typeof prototype.getSnapshotBeforeUpdate === 'function') {
    if (typeof prototype.componentDidUpdate !== 'function') {
      throw new Error(
        'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'
      );
    }

    prototype.componentWillUpdate = componentWillUpdate;

    var componentDidUpdate = prototype.componentDidUpdate;

    prototype.componentDidUpdate = function componentDidUpdatePolyfill(
      prevProps,
      prevState,
      maybeSnapshot
    ) {
      // 16.3+ will not execute our will-update method;
      // It will pass a snapshot value to did-update though.
      // Older versions will require our polyfilled will-update value.
      // We need to handle both cases, but can't just check for the presence of "maybeSnapshot",
      // Because for <= 15.x versions this might be a "prevContext" object.
      // We also can't just check "__reactInternalSnapshot",
      // Because get-snapshot might return a falsy value.
      // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.
      var snapshot = this.__reactInternalSnapshotFlag
        ? this.__reactInternalSnapshot
        : maybeSnapshot;

      componentDidUpdate.call(this, prevProps, prevState, snapshot);
    };
  }

  return Component;
}




/***/ }),

/***/ "../node_modules/warning/warning.js":
/*!******************************************!*\
  !*** ../node_modules/warning/warning.js ***!
  \******************************************/
/***/ ((module) => {

"use strict";
/**
 * Copyright (c) 2014-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



/**
 * Similar to invariant but only logs a warning if the condition is not met.
 * This can be used to log issues in development environments in critical
 * paths. Removing the logging code for production environments will keep the
 * same logic and follow the same code paths.
 */

var __DEV__ = "development" !== 'production';

var warning = function() {};

if (__DEV__) {
  var printWarning = function printWarning(format, args) {
    var len = arguments.length;
    args = new Array(len > 1 ? len - 1 : 0);
    for (var key = 1; key < len; key++) {
      args[key - 1] = arguments[key];
    }
    var argIndex = 0;
    var message = 'Warning: ' +
      format.replace(/%s/g, function() {
        return args[argIndex++];
      });
    if (typeof console !== 'undefined') {
      console.error(message);
    }
    try {
      // --- Welcome to debugging React ---
      // This error was thrown as a convenience so that you can use this stack
      // to find the callsite that caused this warning to fire.
      throw new Error(message);
    } catch (x) {}
  }

  warning = function(condition, format, args) {
    var len = arguments.length;
    args = new Array(len > 2 ? len - 2 : 0);
    for (var key = 2; key < len; key++) {
      args[key - 2] = arguments[key];
    }
    if (format === undefined) {
      throw new Error(
          '`warning(condition, format, ...args)` requires a warning ' +
          'message argument'
      );
    }
    if (!condition) {
      printWarning.apply(null, [format].concat(args));
    }
  };
}

module.exports = warning;


/***/ }),

/***/ "react":
/*!************************!*\
  !*** external "React" ***!
  \************************/
/***/ ((module) => {

"use strict";
module.exports = React;

/***/ }),

/***/ "@elementor/app-ui":
/*!*********************************************!*\
  !*** external "elementorAppPackages.appUi" ***!
  \*********************************************/
/***/ ((module) => {

"use strict";
module.exports = elementorAppPackages.appUi;

/***/ }),

/***/ "@elementor/router":
/*!**********************************************!*\
  !*** external "elementorAppPackages.router" ***!
  \**********************************************/
/***/ ((module) => {

"use strict";
module.exports = elementorAppPackages.router;

/***/ }),

/***/ "@elementor/site-editor":
/*!**************************************************!*\
  !*** external "elementorAppPackages.siteEditor" ***!
  \**************************************************/
/***/ ((module) => {

"use strict";
module.exports = elementorAppPackages.siteEditor;

/***/ }),

/***/ "@wordpress/i18n":
/*!**************************!*\
  !*** external "wp.i18n" ***!
  \**************************/
/***/ ((module) => {

"use strict";
module.exports = wp.i18n;

/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/compat get default export */
/******/ 	(() => {
/******/ 		// getDefaultExport function for compatibility with non-harmony modules
/******/ 		__webpack_require__.n = (module) => {
/******/ 			var getter = module && module.__esModule ?
/******/ 				() => (module['default']) :
/******/ 				() => (module);
/******/ 			__webpack_require__.d(getter, { a: getter });
/******/ 			return getter;
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/define property getters */
/******/ 	(() => {
/******/ 		// define getter functions for harmony exports
/******/ 		__webpack_require__.d = (exports, definition) => {
/******/ 			for(var key in definition) {
/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ 				}
/******/ 			}
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/global */
/******/ 	(() => {
/******/ 		__webpack_require__.g = (function() {
/******/ 			if (typeof globalThis === 'object') return globalThis;
/******/ 			try {
/******/ 				return this || new Function('return this')();
/******/ 			} catch (e) {
/******/ 				if (typeof window === 'object') return window;
/******/ 			}
/******/ 		})();
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
/******/ 	(() => {
/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/make namespace object */
/******/ 	(() => {
/******/ 		// define __esModule on exports
/******/ 		__webpack_require__.r = (exports) => {
/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 			}
/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
/******/ 		};
/******/ 	})();
/******/ 	
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be in strict mode.
(() => {
"use strict";
/*!**************************************!*\
  !*** ../core/app/assets/js/index.js ***!
  \**************************************/


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

var _siteEditor = _interopRequireDefault(__webpack_require__(/*! ../../modules/site-editor/assets/js/site-editor */ "../core/app/modules/site-editor/assets/js/site-editor.js"));

new _siteEditor.default();
})();

/******/ })()
;
//# sourceMappingURL=app.js.mapassets/js/custom-code.js000064400001371452150755004310011257 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js":
/*!********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/array/from.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/array/from */ "../node_modules/core-js/library/fn/array/from.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/array/is-array */ "../node_modules/core-js/library/fn/array/is-array.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/json/stringify */ "../node_modules/core-js/library/fn/json/stringify.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/assign.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/assign.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/assign */ "../node_modules/core-js/library/fn/object/assign.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/create.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/create.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/create */ "../node_modules/core-js/library/fn/object/create.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js":
/*!**********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js ***!
  \**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/define-properties */ "../node_modules/core-js/library/fn/object/define-properties.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js":
/*!********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/define-property */ "../node_modules/core-js/library/fn/object/define-property.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js":
/*!********************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js ***!
  \********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-own-property-descriptor */ "../node_modules/core-js/library/fn/object/get-own-property-descriptor.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js":
/*!*********************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js ***!
  \*********************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-own-property-descriptors */ "../node_modules/core-js/library/fn/object/get-own-property-descriptors.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js":
/*!*****************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js ***!
  \*****************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-own-property-symbols */ "../node_modules/core-js/library/fn/object/get-own-property-symbols.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-prototype-of */ "../node_modules/core-js/library/fn/object/get-prototype-of.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/keys.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/keys */ "../node_modules/core-js/library/fn/object/keys.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/set-prototype-of */ "../node_modules/core-js/library/fn/object/set-prototype-of.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/values.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/values */ "../node_modules/core-js/library/fn/object/values.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/promise.js":
/*!*****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/promise.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/promise */ "../node_modules/core-js/library/fn/promise.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/reflect/construct */ "../node_modules/core-js/library/fn/reflect/construct.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js":
/*!****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/symbol.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/symbol */ "../node_modules/core-js/library/fn/symbol/index.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js ***!
  \*************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/symbol/iterator */ "../node_modules/core-js/library/fn/symbol/iterator.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/weak-map.js":
/*!******************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/weak-map.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/weak-map */ "../node_modules/core-js/library/fn/weak-map.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js":
/*!**************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js ***!
  \**************************************************************************/
/***/ ((module) => {

function _arrayLikeToArray(arr, len) {
  if (len == null || len > arr.length) len = arr.length;

  for (var i = 0, arr2 = new Array(len); i < len; i++) {
    arr2[i] = arr[i];
  }

  return arr2;
}

module.exports = _arrayLikeToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Array$isArray = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/is-array */ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js");

function _arrayWithHoles(arr) {
  if (_Array$isArray(arr)) return arr;
}

module.exports = _arrayWithHoles;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Array$isArray = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/is-array */ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js");

var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js");

function _arrayWithoutHoles(arr) {
  if (_Array$isArray(arr)) return arrayLikeToArray(arr);
}

module.exports = _arrayWithoutHoles;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js ***!
  \*******************************************************************************/
/***/ ((module) => {

function _assertThisInitialized(self) {
  if (self === void 0) {
    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  }

  return self;
}

module.exports = _assertThisInitialized;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/asyncToGenerator.js":
/*!**************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/asyncToGenerator.js ***!
  \**************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Promise = __webpack_require__(/*! @babel/runtime-corejs2/core-js/promise */ "../node_modules/@babel/runtime-corejs2/core-js/promise.js");

function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
  try {
    var info = gen[key](arg);
    var value = info.value;
  } catch (error) {
    reject(error);
    return;
  }

  if (info.done) {
    resolve(value);
  } else {
    _Promise.resolve(value).then(_next, _throw);
  }
}

function _asyncToGenerator(fn) {
  return function () {
    var self = this,
        args = arguments;
    return new _Promise(function (resolve, reject) {
      var gen = fn.apply(self, args);

      function _next(value) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
      }

      function _throw(err) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
      }

      _next(undefined);
    });
  };
}

module.exports = _asyncToGenerator;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js ***!
  \************************************************************************/
/***/ ((module) => {

function _classCallCheck(instance, Constructor) {
  if (!(instance instanceof Constructor)) {
    throw new TypeError("Cannot call a class as a function");
  }
}

module.exports = _classCallCheck;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/createClass.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

function _defineProperties(target, props) {
  for (var i = 0; i < props.length; i++) {
    var descriptor = props[i];
    descriptor.enumerable = descriptor.enumerable || false;
    descriptor.configurable = true;
    if ("value" in descriptor) descriptor.writable = true;

    _Object$defineProperty(target, descriptor.key, descriptor);
  }
}

function _createClass(Constructor, protoProps, staticProps) {
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
  if (staticProps) _defineProperties(Constructor, staticProps);
  return Constructor;
}

module.exports = _createClass;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/createSuper.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/construct */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js");

var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js");

var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ "../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js");

var possibleConstructorReturn = __webpack_require__(/*! ./possibleConstructorReturn.js */ "../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js");

function _createSuper(Derived) {
  var hasNativeReflectConstruct = isNativeReflectConstruct();
  return function _createSuperInternal() {
    var Super = getPrototypeOf(Derived),
        result;

    if (hasNativeReflectConstruct) {
      var NewTarget = getPrototypeOf(this).constructor;
      result = _Reflect$construct(Super, arguments, NewTarget);
    } else {
      result = Super.apply(this, arguments);
    }

    return possibleConstructorReturn(this, result);
  };
}

module.exports = _createSuper;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

function _defineProperty(obj, key, value) {
  if (key in obj) {
    _Object$defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
  } else {
    obj[key] = value;
  }

  return obj;
}

module.exports = _defineProperty;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/extends.js":
/*!*****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/extends.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$assign = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/assign */ "../node_modules/@babel/runtime-corejs2/core-js/object/assign.js");

function _extends() {
  module.exports = _extends = _Object$assign || function (target) {
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i];

      for (var key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
          target[key] = source[key];
        }
      }
    }

    return target;
  };

  module.exports.default = module.exports, module.exports.__esModule = true;
  return _extends.apply(this, arguments);
}

module.exports = _extends;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/set-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js");

var _Object$getPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js");

function _getPrototypeOf(o) {
  module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {
    return o.__proto__ || _Object$getPrototypeOf(o);
  };
  module.exports.default = module.exports, module.exports.__esModule = true;
  return _getPrototypeOf(o);
}

module.exports = _getPrototypeOf;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js":
/*!******************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/inherits.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$create = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/create */ "../node_modules/@babel/runtime-corejs2/core-js/object/create.js");

var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js");

function _inherits(subClass, superClass) {
  if (typeof superClass !== "function" && superClass !== null) {
    throw new TypeError("Super expression must either be null or a function");
  }

  subClass.prototype = _Object$create(superClass && superClass.prototype, {
    constructor: {
      value: subClass,
      writable: true,
      configurable: true
    }
  });
  if (superClass) setPrototypeOf(subClass, superClass);
}

module.exports = _inherits;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js ***!
  \*******************************************************************************/
/***/ ((module) => {

function _interopRequireDefault(obj) {
  return obj && obj.__esModule ? obj : {
    "default": obj
  };
}

module.exports = _interopRequireDefault;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js":
/*!********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _typeof = __webpack_require__(/*! @babel/runtime-corejs2/helpers/typeof */ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js").default;

var _WeakMap = __webpack_require__(/*! @babel/runtime-corejs2/core-js/weak-map */ "../node_modules/@babel/runtime-corejs2/core-js/weak-map.js");

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-descriptor */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js");

function _getRequireWildcardCache(nodeInterop) {
  if (typeof _WeakMap !== "function") return null;
  var cacheBabelInterop = new _WeakMap();
  var cacheNodeInterop = new _WeakMap();
  return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
    return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
  })(nodeInterop);
}

function _interopRequireWildcard(obj, nodeInterop) {
  if (!nodeInterop && obj && obj.__esModule) {
    return obj;
  }

  if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") {
    return {
      "default": obj
    };
  }

  var cache = _getRequireWildcardCache(nodeInterop);

  if (cache && cache.has(obj)) {
    return cache.get(obj);
  }

  var newObj = {};
  var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor;

  for (var key in obj) {
    if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
      var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null;

      if (desc && (desc.get || desc.set)) {
        _Object$defineProperty(newObj, key, desc);
      } else {
        newObj[key] = obj[key];
      }
    }
  }

  newObj["default"] = obj;

  if (cache) {
    cache.set(obj, newObj);
  }

  return newObj;
}

module.exports = _interopRequireWildcard;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js":
/*!**********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js ***!
  \**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/construct */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js");

function _isNativeReflectConstruct() {
  if (typeof Reflect === "undefined" || !_Reflect$construct) return false;
  if (_Reflect$construct.sham) return false;
  if (typeof Proxy === "function") return true;

  try {
    Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));
    return true;
  } catch (e) {
    return false;
  }
}

module.exports = _isNativeReflectConstruct;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js ***!
  \*************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

var _Array$from = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/from */ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js");

function _iterableToArray(iter) {
  if (typeof _Symbol !== "undefined" && iter[_Symbol$iterator] != null || iter["@@iterator"] != null) return _Array$from(iter);
}

module.exports = _iterableToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js":
/*!******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js ***!
  \******************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

function _iterableToArrayLimit(arr, i) {
  var _i = arr && (typeof _Symbol !== "undefined" && arr[_Symbol$iterator] || arr["@@iterator"]);

  if (_i == null) return;
  var _arr = [];
  var _n = true;
  var _d = false;

  var _s, _e;

  try {
    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
      _arr.push(_s.value);

      if (i && _arr.length === i) break;
    }
  } catch (err) {
    _d = true;
    _e = err;
  } finally {
    try {
      if (!_n && _i["return"] != null) _i["return"]();
    } finally {
      if (_d) throw _e;
    }
  }

  return _arr;
}

module.exports = _iterableToArrayLimit;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js ***!
  \*************************************************************************/
/***/ ((module) => {

function _nonIterableRest() {
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}

module.exports = _nonIterableRest;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js ***!
  \***************************************************************************/
/***/ ((module) => {

function _nonIterableSpread() {
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}

module.exports = _nonIterableSpread;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$keys = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js");

var _Object$getOwnPropertySymbols = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-symbols */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js");

var _Object$getOwnPropertyDescriptor = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-descriptor */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js");

var _Object$getOwnPropertyDescriptors = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-own-property-descriptors */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js");

var _Object$defineProperties = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-properties */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js");

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var defineProperty = __webpack_require__(/*! ./defineProperty.js */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js");

function ownKeys(object, enumerableOnly) {
  var keys = _Object$keys(object);

  if (_Object$getOwnPropertySymbols) {
    var symbols = _Object$getOwnPropertySymbols(object);

    if (enumerableOnly) {
      symbols = symbols.filter(function (sym) {
        return _Object$getOwnPropertyDescriptor(object, sym).enumerable;
      });
    }

    keys.push.apply(keys, symbols);
  }

  return keys;
}

function _objectSpread2(target) {
  for (var i = 1; i < arguments.length; i++) {
    var source = arguments[i] != null ? arguments[i] : {};

    if (i % 2) {
      ownKeys(Object(source), true).forEach(function (key) {
        defineProperty(target, key, source[key]);
      });
    } else if (_Object$getOwnPropertyDescriptors) {
      _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source));
    } else {
      ownKeys(Object(source)).forEach(function (key) {
        _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key));
      });
    }
  }

  return target;
}

module.exports = _objectSpread2;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js":
/*!***********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js ***!
  \***********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _typeof = __webpack_require__(/*! @babel/runtime-corejs2/helpers/typeof */ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js").default;

var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js");

function _possibleConstructorReturn(self, call) {
  if (call && (_typeof(call) === "object" || typeof call === "function")) {
    return call;
  }

  return assertThisInitialized(self);
}

module.exports = _possibleConstructorReturn;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/set-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js");

function _setPrototypeOf(o, p) {
  module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {
    o.__proto__ = p;
    return o;
  };

  module.exports.default = module.exports, module.exports.__esModule = true;
  return _setPrototypeOf(o, p);
}

module.exports = _setPrototypeOf;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js");

var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js");

var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js");

var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js");

function _slicedToArray(arr, i) {
  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
}

module.exports = _slicedToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayWithoutHoles.js");

var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/iterableToArray.js");

var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js");

var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ "../node_modules/@babel/runtime-corejs2/helpers/nonIterableSpread.js");

function _toConsumableArray(arr) {
  return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
}

module.exports = _toConsumableArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js":
/*!****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/typeof.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

function _typeof(obj) {
  "@babel/helpers - typeof";

  if (typeof _Symbol === "function" && typeof _Symbol$iterator === "symbol") {
    module.exports = _typeof = function _typeof(obj) {
      return typeof obj;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  } else {
    module.exports = _typeof = function _typeof(obj) {
      return obj && typeof _Symbol === "function" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? "symbol" : typeof obj;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  }

  return _typeof(obj);
}

module.exports = _typeof;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js":
/*!************************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/unsupportedIterableToArray.js ***!
  \************************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Array$from = __webpack_require__(/*! @babel/runtime-corejs2/core-js/array/from */ "../node_modules/@babel/runtime-corejs2/core-js/array/from.js");

var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime-corejs2/helpers/arrayLikeToArray.js");

function _unsupportedIterableToArray(o, minLen) {
  if (!o) return;
  if (typeof o === "string") return arrayLikeToArray(o, minLen);
  var n = Object.prototype.toString.call(o).slice(8, -1);
  if (n === "Object" && o.constructor) n = o.constructor.name;
  if (n === "Map" || n === "Set") return _Array$from(o);
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
}

module.exports = _unsupportedIterableToArray;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime/regenerator/index.js":
/*!***********************************************************!*\
  !*** ../node_modules/@babel/runtime/regenerator/index.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! regenerator-runtime */ "../node_modules/regenerator-runtime/runtime.js");


/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/context/base-context.js":
/*!*************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/context/base-context.js ***!
  \*************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var React = __webpack_require__(/*! react */ "react");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.BaseContext = void 0;

var _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/promise */ "../node_modules/@babel/runtime-corejs2/core-js/promise.js"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/assertThisInitialized */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var BaseContext = /*#__PURE__*/function (_React$Component) {
  (0, _inherits2.default)(BaseContext, _React$Component);

  var _super = (0, _createSuper2.default)(BaseContext);

  function BaseContext(props) {
    var _this;

    (0, _classCallCheck2.default)(this, BaseContext);
    _this = _super.call(this, props);
    _this.state = {
      action: {
        current: null,
        loading: false,
        error: null,
        errorMeta: {}
      },
      updateActionState: _this.updateActionState.bind((0, _assertThisInitialized2.default)(_this)),
      resetActionState: _this.resetActionState.bind((0, _assertThisInitialized2.default)(_this))
    };
    return _this;
  }

  (0, _createClass2.default)(BaseContext, [{
    key: "executeAction",
    value: function executeAction(name, handler) {
      var _this2 = this;

      this.updateActionState({
        current: name,
        loading: true,
        error: null,
        errorMeta: {}
      });
      return handler().then(function (response) {
        _this2.resetActionState();

        return _promise.default.resolve(response);
      }).catch(function (error) {
        _this2.updateActionState({
          current: name,
          loading: false,
          error: error.message,
          errorMeta: error
        });

        return _promise.default.reject(error);
      });
    }
  }, {
    key: "updateActionState",
    value: function updateActionState(data) {
      return this.setState(function (prev) {
        return {
          action: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, prev.action), data)
        };
      });
    }
  }, {
    key: "resetActionState",
    value: function resetActionState() {
      this.updateActionState({
        current: null,
        loading: false,
        error: null,
        errorMeta: {}
      });
    }
  }]);
  return BaseContext;
}(React.Component);

exports.BaseContext = BaseContext;
var _default = BaseContext;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/context/conditions.js":
/*!***********************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/context/conditions.js ***!
  \***********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ConditionsProvider = exports.Context = void 0;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _values = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/values */ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js"));

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/promise */ "../node_modules/@babel/runtime-corejs2/core-js/promise.js"));

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

__webpack_require__(/*! core-js/modules/es6.object.to-string.js */ "../node_modules/core-js/modules/es6.object.to-string.js");

__webpack_require__(/*! core-js/modules/es6.regexp.to-string.js */ "../node_modules/core-js/modules/es6.regexp.to-string.js");

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

__webpack_require__(/*! core-js/modules/es6.string.sub.js */ "../node_modules/core-js/modules/es6.string.sub.js");

__webpack_require__(/*! core-js/modules/es6.array.find.js */ "../node_modules/core-js/modules/es6.array.find.js");

var _objectSpread5 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/assertThisInitialized */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var _condition = _interopRequireDefault(__webpack_require__(/*! ./models/condition */ "../core/app/modules/site-editor/assets/js/context/models/condition.js"));

var _conditionsConfig = _interopRequireDefault(__webpack_require__(/*! ./services/conditions-config */ "../core/app/modules/site-editor/assets/js/context/services/conditions-config.js"));

var _baseContext = _interopRequireDefault(__webpack_require__(/*! ./base-context */ "../core/app/modules/site-editor/assets/js/context/base-context.js"));

var _commands = __webpack_require__(/*! ../data/commands */ "../core/app/modules/site-editor/assets/js/data/commands/index.js");

var Context = _react.default.createContext();

exports.Context = Context;

var ConditionsProvider = /*#__PURE__*/function (_BaseContext) {
  (0, _inherits2.default)(ConditionsProvider, _BaseContext);

  var _super = (0, _createSuper2.default)(ConditionsProvider);

  /**
   * Holds the conditions config object.
   *
   * @type {ConditionsConfig}
   */

  /**
   * ConditionsProvider constructor.
   *
   * @param {any} props
   */
  function ConditionsProvider(props) {
    var _this;

    (0, _classCallCheck2.default)(this, ConditionsProvider);
    _this = _super.call(this, props);
    (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "conditionsConfig", null);
    _this.state = (0, _objectSpread5.default)((0, _objectSpread5.default)({}, _this.state), {}, {
      conditions: {},
      updateConditionItemState: _this.updateConditionItemState.bind((0, _assertThisInitialized2.default)(_this)),
      removeConditionItemInState: _this.removeConditionItemInState.bind((0, _assertThisInitialized2.default)(_this)),
      createConditionItemInState: _this.createConditionItemInState.bind((0, _assertThisInitialized2.default)(_this)),
      findConditionItemInState: _this.findConditionItemInState.bind((0, _assertThisInitialized2.default)(_this)),
      saveConditions: _this.saveConditions.bind((0, _assertThisInitialized2.default)(_this))
    });
    return _this;
  }
  /**
   * Fetch the conditions config, then normalize the conditions and then setup titles for
   * the subIds.
   */


  (0, _createClass2.default)(ConditionsProvider, [{
    key: "componentDidMount",
    value: function componentDidMount() {
      var _this2 = this;

      this.executeAction(ConditionsProvider.actions.FETCH_CONFIG, function () {
        return _conditionsConfig.default.create();
      }).then(function (conditionsConfig) {
        return _this2.conditionsConfig = conditionsConfig;
      }).then(this.normalizeConditionsState.bind(this)).then(this.setSubIdTitles.bind(this));
    }
    /**
     * Execute a request to save the template conditions.
     *
     * @return {any} -
     */

  }, {
    key: "saveConditions",
    value: function saveConditions() {
      var _this3 = this;

      var conditions = (0, _values.default)(this.state.conditions).map(function (condition) {
        return condition.forDb();
      });
      return this.executeAction(ConditionsProvider.actions.SAVE, function () {
        return $e.data.update(_commands.TemplatesConditions.signature, {
          conditions: conditions
        }, {
          id: _this3.props.currentTemplate.id
        });
      }).then(function () {
        var contextConditions = (0, _values.default)(_this3.state.conditions).map(function (condition) {
          return condition.forContext();
        });

        _this3.props.onConditionsSaved(_this3.props.currentTemplate.id, {
          conditions: contextConditions,
          instances: _this3.conditionsConfig.calculateInstances((0, _values.default)(_this3.state.conditions)),
          isActive: !!((0, _keys.default)(_this3.state.conditions).length && 'publish' === _this3.props.currentTemplate.status)
        });
      });
    }
    /**
     * Check for conflicts in the server and mark the condition if there
     * is a conflict.
     *
     * @param {any} condition
     */

  }, {
    key: "checkConflicts",
    value: function checkConflicts(condition) {
      var _this4 = this;

      return this.executeAction(ConditionsProvider.actions.CHECK_CONFLICTS, function () {
        return $e.data.get(_commands.TemplatesConditionsConflicts.signature, {
          post_id: _this4.props.currentTemplate.id,
          condition: condition.clone().toString()
        });
      }).then(function (response) {
        return _this4.updateConditionItemState(condition.id, {
          conflictErrors: (0, _values.default)(response.data)
        }, false);
      });
    }
    /**
     * Fetching subId titles.
     *
     * @param {any} condition
     * @return {Promise<unknown>} -
     */

  }, {
    key: "fetchSubIdsTitles",
    value: function fetchSubIdsTitles(condition) {
      return new _promise.default(function (resolve) {
        return elementorCommon.ajax.loadObjects({
          action: 'query_control_value_titles',
          ids: _.isArray(condition.subId) ? condition.subId : [condition.subId],
          data: {
            get_titles: condition.subIdAutocomplete,
            unique_id: elementorCommon.helpers.getUniqueId()
          },
          success: function success(response) {
            resolve(response);
          }
        });
      });
    }
    /**
     * Get the conditions from the template and normalize it to data structure
     * that the components can work with.
     */

  }, {
    key: "normalizeConditionsState",
    value: function normalizeConditionsState() {
      var _this5 = this;

      this.updateConditionsState(function () {
        return _this5.props.currentTemplate.conditions.reduce(function (current, condition) {
          var conditionObj = new _condition.default((0, _objectSpread5.default)((0, _objectSpread5.default)({}, condition), {}, {
            default: _this5.props.currentTemplate.defaultCondition,
            options: _this5.conditionsConfig.getOptions(),
            subOptions: _this5.conditionsConfig.getSubOptions(condition.name),
            subIdAutocomplete: _this5.conditionsConfig.getSubIdAutocomplete(condition.sub),
            supIdOptions: condition.subId ? [{
              value: condition.subId,
              label: condition.subId
            }] : []
          }));
          return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, current), {}, (0, _defineProperty2.default)({}, conditionObj.id, conditionObj));
        }, {});
      }).then(function () {
        (0, _values.default)(_this5.state.conditions).forEach(function (condition) {
          return _this5.checkConflicts(condition);
        });
      });
    }
    /**
     * Set titles to the subIds,
     * for the first render of the component.
     */

  }, {
    key: "setSubIdTitles",
    value: function setSubIdTitles() {
      var _this6 = this;

      return (0, _values.default)(this.state.conditions).forEach(function (condition) {
        if (!condition.subId) {
          return;
        }

        return _this6.fetchSubIdsTitles(condition).then(function (response) {
          return _this6.updateConditionItemState(condition.id, {
            subIdOptions: [{
              label: (0, _values.default)(response)[0],
              value: condition.subId
            }]
          }, false);
        });
      });
    }
    /**
     * Update state of specific condition item.
     *
     * @param {any} id
     * @param {any} args
     * @param {boolean} shouldCheckConflicts
     */

  }, {
    key: "updateConditionItemState",
    value: function updateConditionItemState(id, args) {
      var _this7 = this;

      var shouldCheckConflicts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;

      if (args.name) {
        args.subOptions = this.conditionsConfig.getSubOptions(args.name);
      }

      if (args.sub || args.name) {
        args.subIdAutocomplete = this.conditionsConfig.getSubIdAutocomplete(args.sub); // In case that the condition has been changed, it will set the options of the subId
        // to empty array to let select2 autocomplete handle the options.

        args.subIdOptions = [];
      }

      this.updateConditionsState(function (prev) {
        var condition = prev[id];
        return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, prev), {}, (0, _defineProperty2.default)({}, id, condition.clone().set(args)));
      }).then(function () {
        if (shouldCheckConflicts) {
          _this7.checkConflicts(_this7.findConditionItemInState(id));
        }
      });
    }
    /**
     * Remove a condition item from the state.
     *
     * @param {any} id
     */

  }, {
    key: "removeConditionItemInState",
    value: function removeConditionItemInState(id) {
      this.updateConditionsState(function (prev) {
        var newConditions = (0, _objectSpread5.default)({}, prev);
        delete newConditions[id];
        return newConditions;
      });
    }
    /**
     * Add a new condition item into the state.
     *
     * @param {boolean} shouldCheckConflicts
     */

  }, {
    key: "createConditionItemInState",
    value: function createConditionItemInState() {
      var _this8 = this;

      var shouldCheckConflicts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
      var defaultCondition = this.props.currentTemplate.defaultCondition,
          newCondition = new _condition.default({
        name: defaultCondition,
        default: defaultCondition,
        options: this.conditionsConfig.getOptions(),
        subOptions: this.conditionsConfig.getSubOptions(defaultCondition),
        subIdAutocomplete: this.conditionsConfig.getSubIdAutocomplete('')
      });
      this.updateConditionsState(function (prev) {
        return (0, _objectSpread5.default)((0, _objectSpread5.default)({}, prev), {}, (0, _defineProperty2.default)({}, newCondition.id, newCondition));
      }).then(function () {
        if (shouldCheckConflicts) {
          _this8.checkConflicts(newCondition);
        }
      });
    }
    /**
     * Find a condition item from the conditions state.
     *
     * @param {any} id
     * @return {Condition|null} -
     */

  }, {
    key: "findConditionItemInState",
    value: function findConditionItemInState(id) {
      return (0, _values.default)(this.state.conditions).find(function (c) {
        return c.id === id;
      });
    }
    /**
     * Update the whole conditions state.
     *
     * @param {Function} callback
     * @return {Promise<any>} -
     */

  }, {
    key: "updateConditionsState",
    value: function updateConditionsState(callback) {
      var _this9 = this;

      return new _promise.default(function (resolve) {
        return _this9.setState(function (prev) {
          return {
            conditions: callback(prev.conditions)
          };
        }, resolve);
      });
    }
    /**
     * Renders the provider.
     *
     * @return {any} -
     */

  }, {
    key: "render",
    value: function render() {
      if (this.state.action.current === ConditionsProvider.actions.FETCH_CONFIG) {
        if (this.state.error) {
          return /*#__PURE__*/_react.default.createElement("h3", null, __('Error:', 'elementor-pro'), " ", this.state.error);
        }

        if (this.state.loading) {
          return /*#__PURE__*/_react.default.createElement("h3", null, __('Loading', 'elementor-pro'), "...");
        }
      }

      return /*#__PURE__*/_react.default.createElement(Context.Provider, {
        value: this.state
      }, this.props.children);
    }
  }]);
  return ConditionsProvider;
}(_baseContext.default);

exports.ConditionsProvider = ConditionsProvider;
(0, _defineProperty2.default)(ConditionsProvider, "propTypes", {
  children: PropTypes.any.isRequired,
  currentTemplate: PropTypes.object.isRequired,
  onConditionsSaved: PropTypes.func.isRequired,
  validateConflicts: PropTypes.bool
});
(0, _defineProperty2.default)(ConditionsProvider, "defaultProps", {
  validateConflicts: true
});
(0, _defineProperty2.default)(ConditionsProvider, "actions", {
  FETCH_CONFIG: 'fetch-config',
  SAVE: 'save',
  CHECK_CONFLICTS: 'check-conflicts'
});
var _default = ConditionsProvider;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/context/models/condition.js":
/*!*****************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/context/models/condition.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(/*! core-js/modules/es6.array.filter.js */ "../node_modules/core-js/modules/es6.array.filter.js");

__webpack_require__(/*! core-js/modules/es6.string.includes.js */ "../node_modules/core-js/modules/es6.string.includes.js");

__webpack_require__(/*! core-js/modules/es7.array.includes.js */ "../node_modules/core-js/modules/es7.array.includes.js");

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

__webpack_require__(/*! core-js/modules/es6.string.sub.js */ "../node_modules/core-js/modules/es6.string.sub.js");

var _assign = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/assign */ "../node_modules/@babel/runtime-corejs2/core-js/object/assign.js"));

var _isArray = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/array/is-array */ "../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js"));

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _stringify = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/json/stringify */ "../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var Condition = /*#__PURE__*/function () {
  function Condition(args) {
    (0, _classCallCheck2.default)(this, Condition);
    (0, _defineProperty2.default)(this, "id", elementorCommon.helpers.getUniqueId());
    (0, _defineProperty2.default)(this, "default", '');
    (0, _defineProperty2.default)(this, "type", 'include');
    (0, _defineProperty2.default)(this, "name", '');
    (0, _defineProperty2.default)(this, "sub", '');
    (0, _defineProperty2.default)(this, "subId", '');
    (0, _defineProperty2.default)(this, "options", []);
    (0, _defineProperty2.default)(this, "subOptions", []);
    (0, _defineProperty2.default)(this, "subIdAutocomplete", []);
    (0, _defineProperty2.default)(this, "subIdOptions", []);
    (0, _defineProperty2.default)(this, "conflictErrors", []);
    this.set(args);
  }

  (0, _createClass2.default)(Condition, [{
    key: "set",
    value: function set(args) {
      (0, _assign.default)(this, args);
      return this;
    }
  }, {
    key: "clone",
    value: function clone() {
      return (0, _assign.default)(new Condition(), this);
    }
  }, {
    key: "remove",
    value: function remove(keys) {
      var _this = this;

      if (!(0, _isArray.default)(keys)) {
        keys = [keys];
      }

      keys.forEach(function (key) {
        delete _this[key];
      });
      return this;
    }
  }, {
    key: "only",
    value: function only(keys) {
      if (!(0, _isArray.default)(keys)) {
        keys = [keys];
      }

      var keysToRemove = (0, _keys.default)(this).filter(function (conditionKey) {
        return !keys.includes(conditionKey);
      });
      this.remove(keysToRemove);
      return this;
    }
  }, {
    key: "toJson",
    value: function toJson() {
      return (0, _stringify.default)(this);
    }
  }, {
    key: "toString",
    value: function toString() {
      return this.forDb().filter(function (item) {
        return item;
      }).join('/');
    }
  }, {
    key: "forDb",
    value: function forDb() {
      return [this.type, this.name, this.sub, this.subId];
    }
  }, {
    key: "forContext",
    value: function forContext() {
      return {
        type: this.type,
        name: this.name,
        sub: this.sub,
        subId: this.subId
      };
    }
  }]);
  return Condition;
}();

exports.default = Condition;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/context/services/conditions-config.js":
/*!***************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/context/services/conditions-config.js ***!
  \***************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ConditionsConfig = void 0;

var _values = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/values */ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js"));

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

var _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/promise */ "../node_modules/@babel/runtime-corejs2/core-js/promise.js"));

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

__webpack_require__(/*! core-js/modules/es6.string.sub.js */ "../node_modules/core-js/modules/es6.string.sub.js");

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

var _objectSpread3 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/typeof */ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js"));

var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/toConsumableArray */ "../node_modules/@babel/runtime-corejs2/helpers/toConsumableArray.js"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var _commands = __webpack_require__(/*! ../../data/commands */ "../core/app/modules/site-editor/assets/js/data/commands/index.js");

var ConditionsConfig = /*#__PURE__*/function () {
  function ConditionsConfig(config) {
    (0, _classCallCheck2.default)(this, ConditionsConfig);
    (0, _defineProperty2.default)(this, "config", null);
    this.config = config;
  }
  /**
   * @return {Promise<ConditionsConfig>} -
   */


  (0, _createClass2.default)(ConditionsConfig, [{
    key: "getOptions",
    value:
    /**
     * Get main options for condition name.
     *
     * @return {Array} -
     */
    function getOptions() {
      return this.getSubOptions('general', true).map(function (_ref) {
        var label = _ref.label,
            value = _ref.value;
        return {
          label: label,
          value: value
        };
      });
    }
    /**
     * Get the sub options for the select.
     *
     * @param {string} itemName
     * @param {boolean} isSubItem
     * @return {Array} -
     */

  }, {
    key: "getSubOptions",
    value: function getSubOptions(itemName) {
      var _this = this;

      var isSubItem = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
      var config = this.config[itemName];

      if (!config) {
        return [];
      }

      return [{
        label: config.all_label,
        value: isSubItem ? itemName : ''
      }].concat((0, _toConsumableArray2.default)(config.sub_conditions.map(function (subName) {
        var subConfig = _this.config[subName];
        return {
          label: subConfig.label,
          value: subName,
          children: subConfig.sub_conditions.length ? _this.getSubOptions(subName, true) : null
        };
      })));
    }
    /**
     * Get the autocomplete property from the conditions config
     *
     * @param {string} sub
     * @return {{}|any} -
     */

  }, {
    key: "getSubIdAutocomplete",
    value: function getSubIdAutocomplete(sub) {
      var _controls$;

      var config = this.config[sub];

      if (!config || !('object' === (0, _typeof2.default)(config.controls))) {
        return {};
      }

      var controls = (0, _values.default)(config.controls);

      if (!(controls !== null && controls !== void 0 && (_controls$ = controls[0]) !== null && _controls$ !== void 0 && _controls$.autocomplete)) {
        return {};
      }

      return controls[0].autocomplete;
    }
    /**
     * Calculate instances from the conditions.
     *
     * @param {Array} conditions
     * @return {Object} -
     */

  }, {
    key: "calculateInstances",
    value: function calculateInstances(conditions) {
      var _this2 = this;

      var instances = conditions.reduce(function (current, condition) {
        if ('exclude' === condition.type) {
          return current;
        }

        var key = condition.sub || condition.name,
            config = _this2.config[key];

        if (!config) {
          return current;
        }

        var instanceLabel = condition.subId ? "".concat(config.label, " #").concat(condition.subId) : config.all_label;
        return (0, _objectSpread3.default)((0, _objectSpread3.default)({}, current), {}, (0, _defineProperty2.default)({}, key, instanceLabel));
      }, {});

      if (0 === (0, _keys.default)(instances).length) {
        instances = [__('No instances', 'elementor-pro')];
      }

      return instances;
    }
  }], [{
    key: "create",
    value: function create() {
      if (ConditionsConfig.instance) {
        return _promise.default.resolve(ConditionsConfig.instance);
      }

      return $e.data.get(_commands.ConditionsConfig.signature).then(function (response) {
        ConditionsConfig.instance = new ConditionsConfig(response.data);
        return ConditionsConfig.instance;
      });
    }
  }]);
  return ConditionsConfig;
}();

exports.ConditionsConfig = ConditionsConfig;
(0, _defineProperty2.default)(ConditionsConfig, "instance", void 0);
var _default = ConditionsConfig;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/commands/conditions-config.js":
/*!************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/commands/conditions-config.js ***!
  \************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.ConditionsConfig = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var ConditionsConfig = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(ConditionsConfig, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(ConditionsConfig);

  function ConditionsConfig() {
    (0, _classCallCheck2.default)(this, ConditionsConfig);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(ConditionsConfig, null, [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return 'site-editor/conditions-config/{id}';
    }
  }]);
  return ConditionsConfig;
}($e.modules.CommandData);

exports.ConditionsConfig = ConditionsConfig;
(0, _defineProperty2.default)(ConditionsConfig, "signature", 'site-editor/conditions-config');
var _default = ConditionsConfig;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/commands/index.js":
/*!************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/commands/index.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

_Object$defineProperty(exports, "Templates", {
  enumerable: true,
  get: function get() {
    return _templates.Templates;
  }
});

_Object$defineProperty(exports, "ConditionsConfig", {
  enumerable: true,
  get: function get() {
    return _conditionsConfig.ConditionsConfig;
  }
});

_Object$defineProperty(exports, "TemplatesConditions", {
  enumerable: true,
  get: function get() {
    return _templatesConditions.TemplatesConditions;
  }
});

_Object$defineProperty(exports, "TemplatesConditionsConflicts", {
  enumerable: true,
  get: function get() {
    return _templatesConditionsConflicts.TemplatesConditionsConflicts;
  }
});

var _templates = __webpack_require__(/*! ./templates */ "../core/app/modules/site-editor/assets/js/data/commands/templates.js");

var _conditionsConfig = __webpack_require__(/*! ./conditions-config */ "../core/app/modules/site-editor/assets/js/data/commands/conditions-config.js");

var _templatesConditions = __webpack_require__(/*! ./templates-conditions */ "../core/app/modules/site-editor/assets/js/data/commands/templates-conditions.js");

var _templatesConditionsConflicts = __webpack_require__(/*! ./templates-conditions-conflicts */ "../core/app/modules/site-editor/assets/js/data/commands/templates-conditions-conflicts.js");

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/commands/templates-conditions-conflicts.js":
/*!*************************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/commands/templates-conditions-conflicts.js ***!
  \*************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.TemplatesConditionsConflicts = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var TemplatesConditionsConflicts = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(TemplatesConditionsConflicts, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(TemplatesConditionsConflicts);

  function TemplatesConditionsConflicts() {
    (0, _classCallCheck2.default)(this, TemplatesConditionsConflicts);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(TemplatesConditionsConflicts, null, [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return "".concat(TemplatesConditionsConflicts.signature, "/{id}");
    }
  }]);
  return TemplatesConditionsConflicts;
}($e.modules.CommandData);

exports.TemplatesConditionsConflicts = TemplatesConditionsConflicts;
(0, _defineProperty2.default)(TemplatesConditionsConflicts, "signature", 'site-editor/templates-conditions-conflicts');
var _default = TemplatesConditionsConflicts;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/commands/templates-conditions.js":
/*!***************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/commands/templates-conditions.js ***!
  \***************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.TemplatesConditions = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var TemplatesConditions = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(TemplatesConditions, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(TemplatesConditions);

  function TemplatesConditions() {
    (0, _classCallCheck2.default)(this, TemplatesConditions);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(TemplatesConditions, null, [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return 'site-editor/templates-conditions/{id}';
    }
  }]);
  return TemplatesConditions;
}($e.modules.CommandData);

exports.TemplatesConditions = TemplatesConditions;
(0, _defineProperty2.default)(TemplatesConditions, "signature", 'site-editor/templates-conditions');
var _default = TemplatesConditions;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/commands/templates.js":
/*!****************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/commands/templates.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = exports.Templates = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var Templates = /*#__PURE__*/function (_$e$modules$CommandDa) {
  (0, _inherits2.default)(Templates, _$e$modules$CommandDa);

  var _super = (0, _createSuper2.default)(Templates);

  function Templates() {
    (0, _classCallCheck2.default)(this, Templates);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Templates, null, [{
    key: "getEndpointFormat",
    value: function getEndpointFormat() {
      return 'site-editor/templates/{id}';
    }
  }]);
  return Templates;
}($e.modules.CommandData);

exports.Templates = Templates;
(0, _defineProperty2.default)(Templates, "signature", 'site-editor/templates');
var _default = Templates;
exports.default = _default;

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/data/component.js":
/*!*******************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/data/component.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/defineProperty */ "../node_modules/@babel/runtime-corejs2/helpers/defineProperty.js"));

var dataCommands = _interopRequireWildcard(__webpack_require__(/*! ./commands */ "../core/app/modules/site-editor/assets/js/data/commands/index.js"));

var Component = /*#__PURE__*/function (_$e$modules$Component) {
  (0, _inherits2.default)(Component, _$e$modules$Component);

  var _super = (0, _createSuper2.default)(Component);

  function Component() {
    (0, _classCallCheck2.default)(this, Component);
    return _super.apply(this, arguments);
  }

  (0, _createClass2.default)(Component, [{
    key: "getNamespace",
    value: function getNamespace() {
      return this.constructor.namespace;
    }
  }, {
    key: "defaultData",
    value: function defaultData() {
      return this.importCommands(dataCommands);
    }
  }]);
  return Component;
}($e.modules.ComponentBase);

exports.default = Component;
(0, _defineProperty2.default)(Component, "namespace", 'site-editor');

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-conflicts.js":
/*!*****************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/conditions/condition-conflicts.js ***!
  \*****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = ConditionConflicts;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

function ConditionConflicts(props) {
  if (!props.conflicts.length) {
    return '';
  }

  var conflictLinks = props.conflicts.map(function (conflict) {
    return /*#__PURE__*/_react.default.createElement(_appUi.Button, {
      key: conflict.template_id,
      target: "_blank",
      url: conflict.edit_url,
      text: conflict.template_title
    });
  });
  return /*#__PURE__*/_react.default.createElement(_appUi.Text, {
    className: "e-site-editor-conditions__conflict",
    variant: "sm"
  }, __('Elementor recognized that you have set this location for other templates: ', 'elementor-pro'), " ", conflictLinks);
}

ConditionConflicts.propTypes = {
  conflicts: PropTypes.array.isRequired
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-name.js":
/*!************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/conditions/condition-name.js ***!
  \************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = ConditionName;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

function ConditionName(props) {
  // Hide for template types that has another default, like single & archive.
  if ('general' !== props.default) {
    return '';
  }

  var onChange = function onChange(e) {
    return props.updateConditions(props.id, {
      name: e.target.value,
      sub: '',
      subId: ''
    });
  };

  return /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-editor-conditions__input-wrapper"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Select, {
    options: props.options,
    value: props.name,
    onChange: onChange
  }));
}

ConditionName.propTypes = {
  updateConditions: PropTypes.func.isRequired,
  id: PropTypes.string.isRequired,
  name: PropTypes.string.isRequired,
  options: PropTypes.array.isRequired,
  default: PropTypes.string.isRequired
};
ConditionName.defaultProps = {
  name: ''
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-sub-id.js":
/*!**************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/conditions/condition-sub-id.js ***!
  \**************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = ConditionSubId;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _keys = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/keys */ "../node_modules/@babel/runtime-corejs2/core-js/object/keys.js"));

__webpack_require__(/*! core-js/modules/es6.string.sub.js */ "../node_modules/core-js/modules/es6.string.sub.js");

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

/**
 * Main component.
 *
 * @param {any} props
 * @return {any} -
 * @class
 */
function ConditionSubId(props) {
  if (!props.sub || !(0, _keys.default)(props.subIdAutocomplete).length) {
    return '';
  }

  var settings = _react.default.useMemo(function () {
    return getSettings(props.subIdAutocomplete);
  }, [props.subIdAutocomplete]);

  var onChange = function onChange(e) {
    return props.updateConditions(props.id, {
      subId: e.target.value
    });
  };

  return /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-editor-conditions__input-wrapper"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Select2, {
    onChange: onChange,
    value: props.subId,
    settings: settings,
    options: props.subIdOptions
  }));
}
/**
 * Get settings for the select2 base on the autocomplete settings,
 * that passes as a prop
 *
 * @param {any} autocomplete
 * @return {Object} -
 */


function getSettings(autocomplete) {
  return {
    allowClear: false,
    placeholder: __('All', 'elementor-pro'),
    dir: elementorCommon.config.isRTL ? 'rtl' : 'ltr',
    ajax: {
      transport: function transport(params, success, failure) {
        return elementorCommon.ajax.addRequest('pro_panel_posts_control_filter_autocomplete', {
          data: {
            q: params.data.q,
            autocomplete: autocomplete
          },
          success: success,
          error: failure
        });
      },
      data: function data(params) {
        return {
          q: params.term,
          page: params.page
        };
      },
      cache: true
    },
    escapeMarkup: function escapeMarkup(markup) {
      return markup;
    },
    minimumInputLength: 1
  };
}

ConditionSubId.propTypes = {
  subIdAutocomplete: PropTypes.object,
  id: PropTypes.string.isRequired,
  sub: PropTypes.string,
  subId: PropTypes.string,
  updateConditions: PropTypes.func,
  subIdOptions: PropTypes.array
};
ConditionSubId.defaultProps = {
  subId: '',
  subIdOptions: []
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-sub.js":
/*!***********************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/conditions/condition-sub.js ***!
  \***********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = ConditionSub;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

__webpack_require__(/*! core-js/modules/es6.string.sub.js */ "../node_modules/core-js/modules/es6.string.sub.js");

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

function ConditionSub(props) {
  if ('general' === props.name || !props.subOptions.length) {
    return '';
  }

  var onChange = function onChange(e) {
    return props.updateConditions(props.id, {
      sub: e.target.value,
      subId: ''
    });
  };

  return /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-editor-conditions__input-wrapper"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Select, {
    options: props.subOptions,
    value: props.sub,
    onChange: onChange
  }));
}

ConditionSub.propTypes = {
  updateConditions: PropTypes.func.isRequired,
  id: PropTypes.string.isRequired,
  name: PropTypes.string.isRequired,
  sub: PropTypes.string.isRequired,
  subOptions: PropTypes.array.isRequired
};
ConditionSub.defaultProps = {
  sub: '',
  subOptions: {}
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-type.js":
/*!************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/conditions/condition-type.js ***!
  \************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = ConditionType;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

function ConditionType(props) {
  var wrapperRef = _react.default.createRef();

  var options = [{
    label: __('Include', 'elementor-pro'),
    value: 'include'
  }, {
    label: __('Exclude', 'elementor-pro'),
    value: 'exclude'
  }];

  var onChange = function onChange(e) {
    props.updateConditions(props.id, {
      type: e.target.value
    });
  };

  _react.default.useEffect(function () {
    wrapperRef.current.setAttribute('data-elementor-condition-type', props.type);
  });

  return /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-editor-conditions__input-wrapper e-site-editor-conditions__input-wrapper--condition-type",
    ref: wrapperRef
  }, /*#__PURE__*/_react.default.createElement(_appUi.Select, {
    options: options,
    value: props.type,
    onChange: onChange
  }));
}

ConditionType.propTypes = {
  updateConditions: PropTypes.func.isRequired,
  id: PropTypes.string.isRequired,
  type: PropTypes.string.isRequired
};
ConditionType.defaultProps = {
  type: ''
};

/***/ }),

/***/ "../core/app/modules/site-editor/assets/js/pages/conditions/conditions-rows.js":
/*!*************************************************************************************!*\
  !*** ../core/app/modules/site-editor/assets/js/pages/conditions/conditions-rows.js ***!
  \*************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = ConditionsRows;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/extends */ "../node_modules/@babel/runtime-corejs2/helpers/extends.js"));

var _values = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/values */ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js"));

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

var _conditions = __webpack_require__(/*! ../../context/conditions */ "../core/app/modules/site-editor/assets/js/context/conditions.js");

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var _conditionType = _interopRequireDefault(__webpack_require__(/*! ./condition-type */ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-type.js"));

var _conditionName = _interopRequireDefault(__webpack_require__(/*! ./condition-name */ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-name.js"));

var _conditionSub = _interopRequireDefault(__webpack_require__(/*! ./condition-sub */ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-sub.js"));

var _conditionSubId = _interopRequireDefault(__webpack_require__(/*! ./condition-sub-id */ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-sub-id.js"));

var _conditionConflicts = _interopRequireDefault(__webpack_require__(/*! ./condition-conflicts */ "../core/app/modules/site-editor/assets/js/pages/conditions/condition-conflicts.js"));

function ConditionsRows(props) {
  var _React$useContext = _react.default.useContext(_conditions.Context),
      conditions = _React$useContext.conditions,
      create = _React$useContext.createConditionItemInState,
      update = _React$useContext.updateConditionItemState,
      remove = _React$useContext.removeConditionItemInState,
      save = _React$useContext.saveConditions,
      action = _React$useContext.action,
      resetActionState = _React$useContext.resetActionState;

  var rows = (0, _values.default)(conditions).map(function (condition) {
    return /*#__PURE__*/_react.default.createElement("div", {
      key: condition.id
    }, /*#__PURE__*/_react.default.createElement("div", {
      className: "e-site-editor-conditions__row"
    }, /*#__PURE__*/_react.default.createElement("div", {
      className: "e-site-editor-conditions__row-controls ".concat(condition.conflictErrors.length && 'e-site-editor-conditions__row-controls--error')
    }, /*#__PURE__*/_react.default.createElement(_conditionType.default, (0, _extends2.default)({}, condition, {
      updateConditions: update
    })), /*#__PURE__*/_react.default.createElement("div", {
      className: "e-site-editor-conditions__row-controls-inner"
    }, /*#__PURE__*/_react.default.createElement(_conditionName.default, (0, _extends2.default)({}, condition, {
      updateConditions: update
    })), /*#__PURE__*/_react.default.createElement(_conditionSub.default, (0, _extends2.default)({}, condition, {
      updateConditions: update
    })), /*#__PURE__*/_react.default.createElement(_conditionSubId.default, (0, _extends2.default)({}, condition, {
      updateConditions: update
    })))), /*#__PURE__*/_react.default.createElement(_appUi.Button, {
      className: "e-site-editor-conditions__remove-condition",
      text: __('Delete', 'elementor-pro'),
      icon: "eicon-close",
      hideText: true,
      onClick: function onClick() {
        return remove(condition.id);
      }
    })), /*#__PURE__*/_react.default.createElement(_conditionConflicts.default, {
      conflicts: condition.conflictErrors
    }));
  });
  var isSaving = action.current === _conditions.ConditionsProvider.actions.SAVE && action.loading;
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, action.error && /*#__PURE__*/_react.default.createElement(_appUi.Dialog, {
    text: action.error,
    dismissButtonText: __('Go Back', 'elementor-pro'),
    dismissButtonOnClick: resetActionState,
    approveButtonText: __('Learn More', 'elementor-pro'),
    approveButtonColor: "link",
    approveButtonUrl: "https://go.elementor.com/app-theme-builder-conditions-load-issue",
    approveButtonTarget: "_target"
  }), /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-editor-conditions__rows"
  }, rows), /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-editor-conditions__add-button-container"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Button, {
    className: "e-site-editor-conditions__add-button",
    variant: "contained",
    size: "lg",
    text: __('Add Condition', 'elementor-pro'),
    onClick: create
  })), /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-editor-conditions__footer"
  }, /*#__PURE__*/_react.default.createElement(_appUi.Button, {
    variant: "contained",
    color: "primary",
    size: "lg",
    hideText: isSaving,
    icon: isSaving ? 'eicon-loading eicon-animation-spin' : '',
    text: __('Save & Close', 'elementor-pro'),
    onClick: function onClick() {
      return save().then(props.onAfterSave);
    }
  })));
}

ConditionsRows.propTypes = {
  onAfterSave: PropTypes.func
};

/***/ }),

/***/ "../modules/custom-code/assets/js/admin/admin.js":
/*!*******************************************************!*\
  !*** ../modules/custom-code/assets/js/admin/admin.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/assertThisInitialized */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var _component = _interopRequireDefault(__webpack_require__(/*! elementor-pro-app-modules/site-editor/assets/js/data/component */ "../core/app/modules/site-editor/assets/js/data/component.js"));

var _conditionsModal = _interopRequireDefault(__webpack_require__(/*! ./publish-metabox/conditions-modal */ "../modules/custom-code/assets/js/admin/publish-metabox/conditions-modal.js"));

var CustomCode = /*#__PURE__*/function (_elementorModules$Mod) {
  (0, _inherits2.default)(CustomCode, _elementorModules$Mod);

  var _super = (0, _createSuper2.default)(CustomCode);

  function CustomCode() {
    var _this;

    (0, _classCallCheck2.default)(this, CustomCode);
    _this = _super.call(this);
    jQuery(_this.initialize.bind((0, _assertThisInitialized2.default)(_this)));
    return _this;
  }

  (0, _createClass2.default)(CustomCode, [{
    key: "initialize",
    value: function initialize() {
      $e.components.register(new _component.default());
      ReactDOM.render( /*#__PURE__*/_react.default.createElement(_conditionsModal.default, null), document.querySelector('.post-conditions'));
      this.addTipsyToFields();
      this.addDescription();
      this.addLocationChangeHandler();
      this.setOptionsPlacementVisibility('elementor_body_end' === jQuery('#location').val());
    }
  }, {
    key: "addTipsyToFields",
    value: function addTipsyToFields() {
      jQuery('.elementor-field-label i[data-info]').tipsy({
        title: function title() {
          return this.getAttribute('data-info');
        },
        gravity: function gravity() {
          return 's';
        }
      });
    }
  }, {
    key: "addDescription",
    value: function addDescription() {
      var description = '<p>' + __('Manage and create all of your custom code here.<br />Organize all of your custom code and incorporate code snippets in your site. Add tracking codes, meta titles, and other scripts. Set display conditions, locations, and priority all from one place.', 'elementor-pro') + '&nbsp;<a target="_blank" href="https://go.elementor.com/wp-dash-custom-code">' + __('Learn more', 'elementor-pro') + '</a>' + '</p>';
      jQuery(description).insertBefore('.wp-header-end');
    }
  }, {
    key: "addLocationChangeHandler",
    value: function addLocationChangeHandler() {
      var _this2 = this;

      jQuery('#location').on('change', function (e) {
        _this2.setOptionsPlacementVisibility('elementor_body_end' === e.target.value);
      });
    }
  }, {
    key: "setOptionsPlacementVisibility",
    value: function setOptionsPlacementVisibility(state) {
      var $optionsPlacement = jQuery('.elementor-custom-code-options-placement');
      $optionsPlacement.toggleClass('show', state);
    }
  }]);
  return CustomCode;
}(elementorModules.Module);

exports.default = CustomCode;
elementorProAdmin.customCode = new CustomCode();

/***/ }),

/***/ "../modules/custom-code/assets/js/admin/publish-metabox/conditions-modal.js":
/*!**********************************************************************************!*\
  !*** ../modules/custom-code/assets/js/admin/publish-metabox/conditions-modal.js ***!
  \**********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

var _interopRequireWildcard = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireWildcard */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireWildcard.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = ConditionsModal;

var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));

var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ "../node_modules/@babel/runtime/regenerator/index.js"));

__webpack_require__(/*! core-js/modules/es6.array.map.js */ "../node_modules/core-js/modules/es6.array.map.js");

__webpack_require__(/*! core-js/modules/es6.function.name.js */ "../node_modules/core-js/modules/es6.function.name.js");

var _values = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/values */ "../node_modules/@babel/runtime-corejs2/core-js/object/values.js"));

var _stringify = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/json/stringify */ "../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js"));

var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/asyncToGenerator */ "../node_modules/@babel/runtime-corejs2/helpers/asyncToGenerator.js"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/slicedToArray */ "../node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var _conditions = _interopRequireDefault(__webpack_require__(/*! ./conditions */ "../modules/custom-code/assets/js/admin/publish-metabox/conditions.js"));

var _conditionsConfig = _interopRequireDefault(__webpack_require__(/*! elementor-pro-app-modules/site-editor/assets/js/context/services/conditions-config */ "../core/app/modules/site-editor/assets/js/context/services/conditions-config.js"));

/**
 * Publish metabox conditions ( 'Edit' modal ).
 */
function ConditionsModal() {
  var _useState = (0, _react.useState)(false),
      _useState2 = (0, _slicedToArray2.default)(_useState, 2),
      showModal = _useState2[0],
      setShowModal = _useState2[1],
      _useState3 = (0, _react.useState)({
    conditions: null,
    instances: null
  }),
      _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
      data = _useState4[0],
      setData = _useState4[1],
      isSavedOnce = (0, _react.useRef)(false),
      post = elementorProAdmin.customCode.post,
      elements = (0, _react.useMemo)(function () {
    return {
      $form: jQuery('#post'),
      $formConditions: jQuery('<input />'),
      $publishButton: jQuery('#publish'),
      title: {
        $label: jQuery('#title-prompt-text'),
        $input: jQuery('#title')
      }
    };
  }, []),
      onPostSubmit = function onPostSubmit() {
    var title = elements.title;

    if (!title.$input.attr('value').length) {
      title.$label.addClass('screen-reader-text');
      title.$input.attr('value', __('Elementor Custom-Code #', 'elementor-pro') + elementorProAdmin.customCode.post.ID);
    }
  },
      onPublishClick = function onPublishClick(e) {
    if ('auto-draft' === post.post_status && !showModal && !isSavedOnce.current) {
      e.preventDefault(); // Set default condition for new post.

      // Set default condition for new post.
      var conditions = [{
        name: 'general',
        sub: '',
        subId: '',
        type: 'include'
      }];
      setData(function (prevState) {
        return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, prevState), {}, {
          conditions: conditions
        });
      });
      setShowModal(true);
    }
  },
      onConditionsSaved = function onConditionsSaved(args) {
    var conditions = args.conditions,
        instances = (0, _values.default)(args.instances).join(','),
        $form = elements.$form,
        $formConditions = elements.$formConditions,
        $publishButton = elements.$publishButton;
    isSavedOnce.current = true;
    setData(function (prevState) {
      return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, prevState), {}, {
        conditions: conditions,
        instances: instances
      });
    }); // Temporary workaround for applying conditions for draft custom code post.

    // Temporary workaround for applying conditions for draft custom code post.
    if ('auto-draft' === post.post_status || 'draft' === post.post_status) {
      $formConditions.attr('type', 'hidden').attr('name', '_conditions').attr('value', (0, _stringify.default)(conditions)).appendTo($form);
    }

    $publishButton.trigger('click');
    setShowModal(false);
  },
      initData = /*#__PURE__*/function () {
    var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
      var conditionsConfig;
      return _regenerator.default.wrap(function _callee$(_context) {
        while (1) {
          switch (_context.prev = _context.next) {
            case 0:
              _context.next = 2;
              return _conditionsConfig.default.create();

            case 2:
              conditionsConfig = _context.sent;
              $e.data.get('site-editor/templates-conditions', {
                id: post.ID
              }, {
                refresh: true
              }).then(function (result) {
                // Since the 'state' format is different from db one.
                var conditions = (0, _values.default)(result.data).map(function (condition) {
                  return {
                    type: condition.type,
                    name: condition.name,
                    sub: condition.sub_name,
                    subId: condition.sub_id
                  };
                }),
                    instances = (0, _values.default)(conditionsConfig.calculateInstances(conditions)).join(',');
                setData(function (prevState) {
                  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, prevState), {}, {
                    conditions: conditions,
                    instances: instances
                  });
                });
              });

            case 4:
            case "end":
              return _context.stop();
          }
        }
      }, _callee);
    }));

    return function initData() {
      return _ref.apply(this, arguments);
    };
  }(),
      bindEvents = function bindEvents() {
    elements.$publishButton.on('click', onPublishClick);
    elements.$form.on('submit', onPostSubmit);
  };

  (0, _react.useEffect)(function () {
    initData();
    bindEvents();
  }, []);

  if (!post || !data.conditions) {
    return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_appUi.Text, {
      tag: "span"
    }, __('Loading', 'elementor')), /*#__PURE__*/_react.default.createElement(_appUi.Icon, {
      className: "spinner"
    }));
  }

  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_appUi.Text, {
    tag: "span",
    className: "post-conditions-display"
  }, /*#__PURE__*/_react.default.createElement("b", null, data.instances + ' ')), /*#__PURE__*/_react.default.createElement(_appUi.Button, {
    onClick: function onClick() {
      return setShowModal(true);
    },
    text: __('Edit', 'elementor'),
    variant: "underlined"
  }), /*#__PURE__*/_react.default.createElement(_appUi.ModalProvider, {
    show: showModal,
    setShow: setShowModal,
    title: __('Publish Settings', 'elementor'),
    icon: "eps-app__logo eicon-elementor"
  }, /*#__PURE__*/_react.default.createElement(_appUi.CssGrid, {
    columns: 1,
    spacing: 700
  }, /*#__PURE__*/_react.default.createElement("section", null, /*#__PURE__*/_react.default.createElement(_conditions.default, {
    id: post.ID,
    status: post.post_status,
    conditions: data.conditions,
    onConditionsSaved: onConditionsSaved,
    onAfterSave: function onAfterSave() {}
  })))));
}

ConditionsModal.propTypes = {
  children: PropTypes.object // Disable parent requirement.

};

/***/ }),

/***/ "../modules/custom-code/assets/js/admin/publish-metabox/conditions.js":
/*!****************************************************************************!*\
  !*** ../modules/custom-code/assets/js/admin/publish-metabox/conditions.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = Conditions;

var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));

var _objectSpread2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/objectSpread2 */ "../node_modules/@babel/runtime-corejs2/helpers/objectSpread2.js"));

var _appUi = __webpack_require__(/*! @elementor/app-ui */ "@elementor/app-ui");

var _conditions = _interopRequireDefault(__webpack_require__(/*! elementor-pro-app-modules/site-editor/assets/js/context/conditions */ "../core/app/modules/site-editor/assets/js/context/conditions.js"));

var _conditionsRows = _interopRequireDefault(__webpack_require__(/*! elementor-pro-app-modules/site-editor/assets/js/pages/conditions/conditions-rows */ "../core/app/modules/site-editor/assets/js/pages/conditions/conditions-rows.js"));

function Conditions(props) {
  var currentTemplateProps = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
    defaultCondition: 'general'
  }),
      onConditionsSaved = function onConditionsSaved(id, args) {
    $e.data.setCache($e.components.get('site-editor'), 'site-editor/templates-conditions', {
      id: id
    }, args.conditions);
    props.onConditionsSaved(args);
  };

  return /*#__PURE__*/_react.default.createElement("section", {
    className: "e-site-editor-conditions"
  }, /*#__PURE__*/_react.default.createElement("div", {
    className: "e-site-editor-conditions__header"
  }, /*#__PURE__*/_react.default.createElement("img", {
    className: "e-site-editor-conditions__header-image",
    src: "".concat(elementorAppProConfig.baseUrl, "/modules/theme-builder/assets/images/conditions-tab.svg"),
    alt: __('Conditions', 'elementor-pro')
  }), /*#__PURE__*/_react.default.createElement(_appUi.Heading, {
    variant: "h1",
    tag: "h1"
  }, __('Where Do You Want to Display Your Code?', 'elementor-pro')), /*#__PURE__*/_react.default.createElement(_appUi.Text, {
    variant: "md"
  }, __('Set the conditions that determine where your code snippet is used throughout your site.', 'elementor-pro'), /*#__PURE__*/_react.default.createElement("br", null), __('For example, choose \'Entire Site\' to display the code snippet across your site.', 'elementor-pro'))), /*#__PURE__*/_react.default.createElement(_conditions.default, {
    validateConflicts: false,
    currentTemplate: currentTemplateProps,
    onConditionsSaved: onConditionsSaved
  }, /*#__PURE__*/_react.default.createElement(_conditionsRows.default, {
    onAfterSave: props.onAfterSave
  })));
}

Conditions.propTypes = {
  id: PropTypes.number,
  status: PropTypes.string.isRequired,
  conditions: PropTypes.array,
  onConditionsSaved: PropTypes.func,
  onAfterSave: PropTypes.func.isRequired
};
Conditions.defaultProps = {
  conditions: [],
  onConditionsSaved: function onConditionsSaved() {}
};

/***/ }),

/***/ "../node_modules/core-js/library/fn/array/from.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/fn/array/from.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../../modules/es6.array.from */ "../node_modules/core-js/library/modules/es6.array.from.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Array.from;


/***/ }),

/***/ "../node_modules/core-js/library/fn/array/is-array.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/fn/array/is-array.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.array.is-array */ "../node_modules/core-js/library/modules/es6.array.is-array.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Array.isArray;


/***/ }),

/***/ "../node_modules/core-js/library/fn/json/stringify.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/fn/json/stringify.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js");
var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });
module.exports = function stringify(it) { // eslint-disable-line no-unused-vars
  return $JSON.stringify.apply($JSON, arguments);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/assign.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/assign.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.assign */ "../node_modules/core-js/library/modules/es6.object.assign.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.assign;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/create.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/create.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.create */ "../node_modules/core-js/library/modules/es6.object.create.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function create(P, D) {
  return $Object.create(P, D);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/define-properties.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/define-properties.js ***!
  \**********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.define-properties */ "../node_modules/core-js/library/modules/es6.object.define-properties.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function defineProperties(T, D) {
  return $Object.defineProperties(T, D);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/define-property.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/define-property.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.define-property */ "../node_modules/core-js/library/modules/es6.object.define-property.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function defineProperty(it, key, desc) {
  return $Object.defineProperty(it, key, desc);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-own-property-descriptor.js":
/*!********************************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-own-property-descriptor.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.get-own-property-descriptor */ "../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function getOwnPropertyDescriptor(it, key) {
  return $Object.getOwnPropertyDescriptor(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-own-property-descriptors.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-own-property-descriptors.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es7.object.get-own-property-descriptors */ "../node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.getOwnPropertyDescriptors;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-own-property-symbols.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-own-property-symbols.js ***!
  \*****************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.symbol */ "../node_modules/core-js/library/modules/es6.symbol.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.getOwnPropertySymbols;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-prototype-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-prototype-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.get-prototype-of */ "../node_modules/core-js/library/modules/es6.object.get-prototype-of.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.getPrototypeOf;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/keys.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/keys.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.keys */ "../node_modules/core-js/library/modules/es6.object.keys.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.keys;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/set-prototype-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/set-prototype-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.set-prototype-of */ "../node_modules/core-js/library/modules/es6.object.set-prototype-of.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.setPrototypeOf;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/values.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/values.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es7.object.values */ "../node_modules/core-js/library/modules/es7.object.values.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.values;


/***/ }),

/***/ "../node_modules/core-js/library/fn/promise.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/library/fn/promise.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../modules/es6.object.to-string */ "../node_modules/core-js/library/modules/es6.object.to-string.js");
__webpack_require__(/*! ../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../modules/web.dom.iterable */ "../node_modules/core-js/library/modules/web.dom.iterable.js");
__webpack_require__(/*! ../modules/es6.promise */ "../node_modules/core-js/library/modules/es6.promise.js");
__webpack_require__(/*! ../modules/es7.promise.finally */ "../node_modules/core-js/library/modules/es7.promise.finally.js");
__webpack_require__(/*! ../modules/es7.promise.try */ "../node_modules/core-js/library/modules/es7.promise.try.js");
module.exports = __webpack_require__(/*! ../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Promise;


/***/ }),

/***/ "../node_modules/core-js/library/fn/reflect/construct.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/fn/reflect/construct.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.reflect.construct */ "../node_modules/core-js/library/modules/es6.reflect.construct.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Reflect.construct;


/***/ }),

/***/ "../node_modules/core-js/library/fn/symbol/index.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/fn/symbol/index.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.symbol */ "../node_modules/core-js/library/modules/es6.symbol.js");
__webpack_require__(/*! ../../modules/es6.object.to-string */ "../node_modules/core-js/library/modules/es6.object.to-string.js");
__webpack_require__(/*! ../../modules/es7.symbol.async-iterator */ "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js");
__webpack_require__(/*! ../../modules/es7.symbol.observable */ "../node_modules/core-js/library/modules/es7.symbol.observable.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Symbol;


/***/ }),

/***/ "../node_modules/core-js/library/fn/symbol/iterator.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/fn/symbol/iterator.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../../modules/web.dom.iterable */ "../node_modules/core-js/library/modules/web.dom.iterable.js");
module.exports = __webpack_require__(/*! ../../modules/_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js").f('iterator');


/***/ }),

/***/ "../node_modules/core-js/library/fn/weak-map.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/library/fn/weak-map.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../modules/es6.object.to-string */ "../node_modules/core-js/library/modules/es6.object.to-string.js");
__webpack_require__(/*! ../modules/web.dom.iterable */ "../node_modules/core-js/library/modules/web.dom.iterable.js");
__webpack_require__(/*! ../modules/es6.weak-map */ "../node_modules/core-js/library/modules/es6.weak-map.js");
__webpack_require__(/*! ../modules/es7.weak-map.of */ "../node_modules/core-js/library/modules/es7.weak-map.of.js");
__webpack_require__(/*! ../modules/es7.weak-map.from */ "../node_modules/core-js/library/modules/es7.weak-map.from.js");
module.exports = __webpack_require__(/*! ../modules/_core */ "../node_modules/core-js/library/modules/_core.js").WeakMap;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_a-function.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_a-function.js ***!
  \**************************************************************/
/***/ ((module) => {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_add-to-unscopables.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_add-to-unscopables.js ***!
  \**********************************************************************/
/***/ ((module) => {

module.exports = function () { /* empty */ };


/***/ }),

/***/ "../node_modules/core-js/library/modules/_an-instance.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_an-instance.js ***!
  \***************************************************************/
/***/ ((module) => {

module.exports = function (it, Constructor, name, forbiddenField) {
  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
    throw TypeError(name + ': incorrect invocation!');
  } return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_an-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_an-object.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-includes.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-includes.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "../node_modules/core-js/library/modules/_to-absolute-index.js");
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-methods.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-methods.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 0 -> Array#forEach
// 1 -> Array#map
// 2 -> Array#filter
// 3 -> Array#some
// 4 -> Array#every
// 5 -> Array#find
// 6 -> Array#findIndex
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/library/modules/_iobject.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var asc = __webpack_require__(/*! ./_array-species-create */ "../node_modules/core-js/library/modules/_array-species-create.js");
module.exports = function (TYPE, $create) {
  var IS_MAP = TYPE == 1;
  var IS_FILTER = TYPE == 2;
  var IS_SOME = TYPE == 3;
  var IS_EVERY = TYPE == 4;
  var IS_FIND_INDEX = TYPE == 6;
  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
  var create = $create || asc;
  return function ($this, callbackfn, that) {
    var O = toObject($this);
    var self = IObject(O);
    var f = ctx(callbackfn, that, 3);
    var length = toLength(self.length);
    var index = 0;
    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
    var val, res;
    for (;length > index; index++) if (NO_HOLES || index in self) {
      val = self[index];
      res = f(val, index, O);
      if (TYPE) {
        if (IS_MAP) result[index] = res;   // map
        else if (res) switch (TYPE) {
          case 3: return true;             // some
          case 5: return val;              // find
          case 6: return index;            // findIndex
          case 2: result.push(val);        // filter
        } else if (IS_EVERY) return false; // every
      }
    }
    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-species-constructor.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-species-constructor.js ***!
  \*****************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species');

module.exports = function (original) {
  var C;
  if (isArray(original)) {
    C = original.constructor;
    // cross-realm fallback
    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
    if (isObject(C)) {
      C = C[SPECIES];
      if (C === null) C = undefined;
    }
  } return C === undefined ? Array : C;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-species-create.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-species-create.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
var speciesConstructor = __webpack_require__(/*! ./_array-species-constructor */ "../node_modules/core-js/library/modules/_array-species-constructor.js");

module.exports = function (original, length) {
  return new (speciesConstructor(original))(length);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_bind.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_bind.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var invoke = __webpack_require__(/*! ./_invoke */ "../node_modules/core-js/library/modules/_invoke.js");
var arraySlice = [].slice;
var factories = {};

var construct = function (F, len, args) {
  if (!(len in factories)) {
    for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';
    // eslint-disable-next-line no-new-func
    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
  } return factories[len](F, args);
};

module.exports = Function.bind || function bind(that /* , ...args */) {
  var fn = aFunction(this);
  var partArgs = arraySlice.call(arguments, 1);
  var bound = function (/* args... */) {
    var args = partArgs.concat(arraySlice.call(arguments));
    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
  };
  if (isObject(fn.prototype)) bound.prototype = fn.prototype;
  return bound;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_classof.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_classof.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_cof.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_cof.js ***!
  \*******************************************************/
/***/ ((module) => {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_collection-weak.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_collection-weak.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var redefineAll = __webpack_require__(/*! ./_redefine-all */ "../node_modules/core-js/library/modules/_redefine-all.js");
var getWeak = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js").getWeak;
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var anInstance = __webpack_require__(/*! ./_an-instance */ "../node_modules/core-js/library/modules/_an-instance.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");
var createArrayMethod = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/library/modules/_array-methods.js");
var $has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var validate = __webpack_require__(/*! ./_validate-collection */ "../node_modules/core-js/library/modules/_validate-collection.js");
var arrayFind = createArrayMethod(5);
var arrayFindIndex = createArrayMethod(6);
var id = 0;

// fallback for uncaught frozen keys
var uncaughtFrozenStore = function (that) {
  return that._l || (that._l = new UncaughtFrozenStore());
};
var UncaughtFrozenStore = function () {
  this.a = [];
};
var findUncaughtFrozen = function (store, key) {
  return arrayFind(store.a, function (it) {
    return it[0] === key;
  });
};
UncaughtFrozenStore.prototype = {
  get: function (key) {
    var entry = findUncaughtFrozen(this, key);
    if (entry) return entry[1];
  },
  has: function (key) {
    return !!findUncaughtFrozen(this, key);
  },
  set: function (key, value) {
    var entry = findUncaughtFrozen(this, key);
    if (entry) entry[1] = value;
    else this.a.push([key, value]);
  },
  'delete': function (key) {
    var index = arrayFindIndex(this.a, function (it) {
      return it[0] === key;
    });
    if (~index) this.a.splice(index, 1);
    return !!~index;
  }
};

module.exports = {
  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
    var C = wrapper(function (that, iterable) {
      anInstance(that, C, NAME, '_i');
      that._t = NAME;      // collection type
      that._i = id++;      // collection id
      that._l = undefined; // leak store for uncaught frozen objects
      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
    });
    redefineAll(C.prototype, {
      // 23.3.3.2 WeakMap.prototype.delete(key)
      // 23.4.3.3 WeakSet.prototype.delete(value)
      'delete': function (key) {
        if (!isObject(key)) return false;
        var data = getWeak(key);
        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
        return data && $has(data, this._i) && delete data[this._i];
      },
      // 23.3.3.4 WeakMap.prototype.has(key)
      // 23.4.3.4 WeakSet.prototype.has(value)
      has: function has(key) {
        if (!isObject(key)) return false;
        var data = getWeak(key);
        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
        return data && $has(data, this._i);
      }
    });
    return C;
  },
  def: function (that, key, value) {
    var data = getWeak(anObject(key), true);
    if (data === true) uncaughtFrozenStore(that).set(key, value);
    else data[that._i] = value;
    return that;
  },
  ufstore: uncaughtFrozenStore
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_collection.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_collection.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var meta = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var redefineAll = __webpack_require__(/*! ./_redefine-all */ "../node_modules/core-js/library/modules/_redefine-all.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");
var anInstance = __webpack_require__(/*! ./_an-instance */ "../node_modules/core-js/library/modules/_an-instance.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var each = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/library/modules/_array-methods.js")(0);
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");

module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
  var Base = global[NAME];
  var C = Base;
  var ADDER = IS_MAP ? 'set' : 'add';
  var proto = C && C.prototype;
  var O = {};
  if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
    new C().entries().next();
  }))) {
    // create collection constructor
    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
    redefineAll(C.prototype, methods);
    meta.NEED = true;
  } else {
    C = wrapper(function (target, iterable) {
      anInstance(target, C, NAME, '_c');
      target._c = new Base();
      if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);
    });
    each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {
      var IS_ADDER = KEY == 'add' || KEY == 'set';
      if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {
        anInstance(this, C, KEY);
        if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;
        var result = this._c[KEY](a === 0 ? 0 : a, b);
        return IS_ADDER ? this : result;
      });
    });
    IS_WEAK || dP(C.prototype, 'size', {
      get: function () {
        return this._c.size;
      }
    });
  }

  setToStringTag(C, NAME);

  O[NAME] = C;
  $export($export.G + $export.W + $export.F, O);

  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);

  return C;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_core.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_core.js ***!
  \********************************************************/
/***/ ((module) => {

var core = module.exports = { version: '2.6.12' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/library/modules/_create-property.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_create-property.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $defineProperty = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");

module.exports = function (object, index, value) {
  if (index in object) $defineProperty.f(object, index, createDesc(0, value));
  else object[index] = value;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_ctx.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_ctx.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// optional / simple context binding
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_defined.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_defined.js ***!
  \***********************************************************/
/***/ ((module) => {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_descriptors.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_descriptors.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_dom-create.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_dom-create.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_enum-bug-keys.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_enum-bug-keys.js ***!
  \*****************************************************************/
/***/ ((module) => {

// IE 8- don't enum bug keys
module.exports = (
  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');


/***/ }),

/***/ "../node_modules/core-js/library/modules/_enum-keys.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_enum-keys.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// all enumerable object keys, includes symbols
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
module.exports = function (it) {
  var result = getKeys(it);
  var getSymbols = gOPS.f;
  if (getSymbols) {
    var symbols = getSymbols(it);
    var isEnum = pIE.f;
    var i = 0;
    var key;
    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
  } return result;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_export.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_export.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var IS_WRAP = type & $export.W;
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE];
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
  var key, own, out;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    if (own && has(exports, key)) continue;
    // export native or passed
    out = own ? target[key] : source[key];
    // prevent global pollution for namespaces
    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
    // bind timers to global for call from export context
    : IS_BIND && own ? ctx(out, global)
    // wrap global constructors for prevent change them in library
    : IS_WRAP && target[key] == out ? (function (C) {
      var F = function (a, b, c) {
        if (this instanceof C) {
          switch (arguments.length) {
            case 0: return new C();
            case 1: return new C(a);
            case 2: return new C(a, b);
          } return new C(a, b, c);
        } return C.apply(this, arguments);
      };
      F[PROTOTYPE] = C[PROTOTYPE];
      return F;
    // make static versions for prototype methods
    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
    if (IS_PROTO) {
      (exports.virtual || (exports.virtual = {}))[key] = out;
      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
    }
  }
};
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_fails.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_fails.js ***!
  \*********************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_for-of.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_for-of.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var call = __webpack_require__(/*! ./_iter-call */ "../node_modules/core-js/library/modules/_iter-call.js");
var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "../node_modules/core-js/library/modules/_is-array-iter.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "../node_modules/core-js/library/modules/core.get-iterator-method.js");
var BREAK = {};
var RETURN = {};
var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
  var f = ctx(fn, that, entries ? 2 : 1);
  var index = 0;
  var length, step, iterator, result;
  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
  // fast case for arrays with default iterator
  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
    if (result === BREAK || result === RETURN) return result;
  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
    result = call(iterator, f, step.value, entries);
    if (result === BREAK || result === RETURN) return result;
  }
};
exports.BREAK = BREAK;
exports.RETURN = RETURN;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_global.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_global.js ***!
  \**********************************************************/
/***/ ((module) => {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/library/modules/_has.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_has.js ***!
  \*******************************************************/
/***/ ((module) => {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_hide.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_hide.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_html.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_html.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").document;
module.exports = document && document.documentElement;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_ie8-dom-define.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_ie8-dom-define.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_invoke.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_invoke.js ***!
  \**********************************************************/
/***/ ((module) => {

// fast apply, http://jsperf.lnkit.com/fast-apply/5
module.exports = function (fn, args, that) {
  var un = that === undefined;
  switch (args.length) {
    case 0: return un ? fn()
                      : fn.call(that);
    case 1: return un ? fn(args[0])
                      : fn.call(that, args[0]);
    case 2: return un ? fn(args[0], args[1])
                      : fn.call(that, args[0], args[1]);
    case 3: return un ? fn(args[0], args[1], args[2])
                      : fn.call(that, args[0], args[1], args[2]);
    case 4: return un ? fn(args[0], args[1], args[2], args[3])
                      : fn.call(that, args[0], args[1], args[2], args[3]);
  } return fn.apply(that, args);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iobject.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iobject.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-array-iter.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-array-iter.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// check on default Array iterator
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var ArrayProto = Array.prototype;

module.exports = function (it) {
  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-array.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-array.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-object.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-call.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-call.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// call something on iterator step with safe closing on error
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
module.exports = function (iterator, fn, value, entries) {
  try {
    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
  // 7.4.6 IteratorClose(iterator, completion)
  } catch (e) {
    var ret = iterator['return'];
    if (ret !== undefined) anObject(ret.call(iterator));
    throw e;
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-create.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-create.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var descriptor = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var IteratorPrototype = {};

// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
__webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js")(IteratorPrototype, __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator'), function () { return this; });

module.exports = function (Constructor, NAME, next) {
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
  setToStringTag(Constructor, NAME + ' Iterator');
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-define.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-define.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var $iterCreate = __webpack_require__(/*! ./_iter-create */ "../node_modules/core-js/library/modules/_iter-create.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';

var returnThis = function () { return this; };

module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
  $iterCreate(Constructor, NAME, next);
  var getMethod = function (kind) {
    if (!BUGGY && kind in proto) return proto[kind];
    switch (kind) {
      case KEYS: return function keys() { return new Constructor(this, kind); };
      case VALUES: return function values() { return new Constructor(this, kind); };
    } return function entries() { return new Constructor(this, kind); };
  };
  var TAG = NAME + ' Iterator';
  var DEF_VALUES = DEFAULT == VALUES;
  var VALUES_BUG = false;
  var proto = Base.prototype;
  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
  var $default = $native || getMethod(DEFAULT);
  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
  var methods, key, IteratorPrototype;
  // Fix native
  if ($anyNative) {
    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
      // Set @@toStringTag to native iterators
      setToStringTag(IteratorPrototype, TAG, true);
      // fix for some old engines
      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
    }
  }
  // fix Array#{values, @@iterator}.name in V8 / FF
  if (DEF_VALUES && $native && $native.name !== VALUES) {
    VALUES_BUG = true;
    $default = function values() { return $native.call(this); };
  }
  // Define iterator
  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
    hide(proto, ITERATOR, $default);
  }
  // Plug for library
  Iterators[NAME] = $default;
  Iterators[TAG] = returnThis;
  if (DEFAULT) {
    methods = {
      values: DEF_VALUES ? $default : getMethod(VALUES),
      keys: IS_SET ? $default : getMethod(KEYS),
      entries: $entries
    };
    if (FORCED) for (key in methods) {
      if (!(key in proto)) redefine(proto, key, methods[key]);
    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
  }
  return methods;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-detect.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-detect.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var SAFE_CLOSING = false;

try {
  var riter = [7][ITERATOR]();
  riter['return'] = function () { SAFE_CLOSING = true; };
  // eslint-disable-next-line no-throw-literal
  Array.from(riter, function () { throw 2; });
} catch (e) { /* empty */ }

module.exports = function (exec, skipClosing) {
  if (!skipClosing && !SAFE_CLOSING) return false;
  var safe = false;
  try {
    var arr = [7];
    var iter = arr[ITERATOR]();
    iter.next = function () { return { done: safe = true }; };
    arr[ITERATOR] = function () { return iter; };
    exec(arr);
  } catch (e) { /* empty */ }
  return safe;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-step.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-step.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = function (done, value) {
  return { value: value, done: !!done };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iterators.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iterators.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = {};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_library.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_library.js ***!
  \***********************************************************/
/***/ ((module) => {

module.exports = true;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_meta.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_meta.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var META = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js")('meta');
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var setDesc = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var id = 0;
var isExtensible = Object.isExtensible || function () {
  return true;
};
var FREEZE = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return isExtensible(Object.preventExtensions({}));
});
var setMeta = function (it) {
  setDesc(it, META, { value: {
    i: 'O' + ++id, // object ID
    w: {}          // weak collections IDs
  } });
};
var fastKey = function (it, create) {
  // return primitive with prefix
  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return 'F';
    // not necessary to add metadata
    if (!create) return 'E';
    // add missing metadata
    setMeta(it);
  // return object ID
  } return it[META].i;
};
var getWeak = function (it, create) {
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return true;
    // not necessary to add metadata
    if (!create) return false;
    // add missing metadata
    setMeta(it);
  // return hash weak collections IDs
  } return it[META].w;
};
// add metadata on freeze-family methods calling
var onFreeze = function (it) {
  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
  return it;
};
var meta = module.exports = {
  KEY: META,
  NEED: false,
  fastKey: fastKey,
  getWeak: getWeak,
  onFreeze: onFreeze
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_microtask.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_microtask.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var macrotask = __webpack_require__(/*! ./_task */ "../node_modules/core-js/library/modules/_task.js").set;
var Observer = global.MutationObserver || global.WebKitMutationObserver;
var process = global.process;
var Promise = global.Promise;
var isNode = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js")(process) == 'process';

module.exports = function () {
  var head, last, notify;

  var flush = function () {
    var parent, fn;
    if (isNode && (parent = process.domain)) parent.exit();
    while (head) {
      fn = head.fn;
      head = head.next;
      try {
        fn();
      } catch (e) {
        if (head) notify();
        else last = undefined;
        throw e;
      }
    } last = undefined;
    if (parent) parent.enter();
  };

  // Node.js
  if (isNode) {
    notify = function () {
      process.nextTick(flush);
    };
  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
  } else if (Observer && !(global.navigator && global.navigator.standalone)) {
    var toggle = true;
    var node = document.createTextNode('');
    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
    notify = function () {
      node.data = toggle = !toggle;
    };
  // environments with maybe non-completely correct, but existent Promise
  } else if (Promise && Promise.resolve) {
    // Promise.resolve without an argument throws an error in LG WebOS 2
    var promise = Promise.resolve(undefined);
    notify = function () {
      promise.then(flush);
    };
  // for other environments - macrotask based on:
  // - setImmediate
  // - MessageChannel
  // - window.postMessag
  // - onreadystatechange
  // - setTimeout
  } else {
    notify = function () {
      // strange IE + webpack dev server bug - use .call(global)
      macrotask.call(global, flush);
    };
  }

  return function (fn) {
    var task = { fn: fn, next: undefined };
    if (last) last.next = task;
    if (!head) {
      head = task;
      notify();
    } last = task;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_new-promise-capability.js":
/*!**************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_new-promise-capability.js ***!
  \**************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 25.4.1.5 NewPromiseCapability(C)
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");

function PromiseCapability(C) {
  var resolve, reject;
  this.promise = new C(function ($$resolve, $$reject) {
    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
    resolve = $$resolve;
    reject = $$reject;
  });
  this.resolve = aFunction(resolve);
  this.reject = aFunction(reject);
}

module.exports.f = function (C) {
  return new PromiseCapability(C);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-assign.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-assign.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 19.1.2.1 Object.assign(target, source, ...)
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/library/modules/_iobject.js");
var $assign = Object.assign;

// should work with symbols and should have deterministic property order (V8 bug)
module.exports = !$assign || __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  var A = {};
  var B = {};
  // eslint-disable-next-line no-undef
  var S = Symbol();
  var K = 'abcdefghijklmnopqrst';
  A[S] = 7;
  K.split('').forEach(function (k) { B[k] = k; });
  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
  var T = toObject(target);
  var aLen = arguments.length;
  var index = 1;
  var getSymbols = gOPS.f;
  var isEnum = pIE.f;
  while (aLen > index) {
    var S = IObject(arguments[index++]);
    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
    var length = keys.length;
    var j = 0;
    var key;
    while (length > j) {
      key = keys[j++];
      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
    }
  } return T;
} : $assign;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-create.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-create.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var dPs = __webpack_require__(/*! ./_object-dps */ "../node_modules/core-js/library/modules/_object-dps.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');
var Empty = function () { /* empty */ };
var PROTOTYPE = 'prototype';

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = __webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js")('iframe');
  var i = enumBugKeys.length;
  var lt = '<';
  var gt = '>';
  var iframeDocument;
  iframe.style.display = 'none';
  __webpack_require__(/*! ./_html */ "../node_modules/core-js/library/modules/_html.js").appendChild(iframe);
  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
  // createDict = iframe.contentWindow.Object;
  // html.removeChild(iframe);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
  iframeDocument.close();
  createDict = iframeDocument.F;
  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
  return createDict();
};

module.exports = Object.create || function create(O, Properties) {
  var result;
  if (O !== null) {
    Empty[PROTOTYPE] = anObject(O);
    result = new Empty();
    Empty[PROTOTYPE] = null;
    // add "__proto__" for Object.getPrototypeOf polyfill
    result[IE_PROTO] = O;
  } else result = createDict();
  return Properties === undefined ? result : dPs(result, Properties);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-dp.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-dp.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/library/modules/_ie8-dom-define.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var dP = Object.defineProperty;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-dps.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-dps.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");

module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var keys = getKeys(Properties);
  var length = keys.length;
  var i = 0;
  var P;
  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopd.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopd.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/library/modules/_ie8-dom-define.js");
var gOPD = Object.getOwnPropertyDescriptor;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? gOPD : function getOwnPropertyDescriptor(O, P) {
  O = toIObject(O);
  P = toPrimitive(P, true);
  if (IE8_DOM_DEFINE) try {
    return gOPD(O, P);
  } catch (e) { /* empty */ }
  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopn-ext.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopn-ext.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var gOPN = __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js").f;
var toString = {}.toString;

var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
  ? Object.getOwnPropertyNames(window) : [];

var getWindowNames = function (it) {
  try {
    return gOPN(it);
  } catch (e) {
    return windowNames.slice();
  }
};

module.exports.f = function getOwnPropertyNames(it) {
  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopn.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopn.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/library/modules/_object-keys-internal.js");
var hiddenKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js").concat('length', 'prototype');

exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
  return $keys(O, hiddenKeys);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gops.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gops.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports) => {

exports.f = Object.getOwnPropertySymbols;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gpo.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gpo.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');
var ObjectProto = Object.prototype;

module.exports = Object.getPrototypeOf || function (O) {
  O = toObject(O);
  if (has(O, IE_PROTO)) return O[IE_PROTO];
  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
    return O.constructor.prototype;
  } return O instanceof Object ? ObjectProto : null;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-keys-internal.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-keys-internal.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var arrayIndexOf = __webpack_require__(/*! ./_array-includes */ "../node_modules/core-js/library/modules/_array-includes.js")(false);
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');

module.exports = function (object, names) {
  var O = toIObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (has(O, key = names[i++])) {
    ~arrayIndexOf(result, key) || result.push(key);
  }
  return result;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-keys.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-keys.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/library/modules/_object-keys-internal.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js");

module.exports = Object.keys || function keys(O) {
  return $keys(O, enumBugKeys);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-pie.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-pie.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports) => {

exports.f = {}.propertyIsEnumerable;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-sap.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-sap.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// most Object methods by ES6 should accept primitives
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
module.exports = function (KEY, exec) {
  var fn = (core.Object || {})[KEY] || Object[KEY];
  var exp = {};
  exp[KEY] = exec(fn);
  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-to-array.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-to-array.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var isEnum = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js").f;
module.exports = function (isEntries) {
  return function (it) {
    var O = toIObject(it);
    var keys = getKeys(O);
    var length = keys.length;
    var i = 0;
    var result = [];
    var key;
    while (length > i) {
      key = keys[i++];
      if (!DESCRIPTORS || isEnum.call(O, key)) {
        result.push(isEntries ? [key, O[key]] : O[key]);
      }
    }
    return result;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_own-keys.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_own-keys.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// all object keys, includes non-enumerable and symbols
var gOPN = __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js");
var gOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var Reflect = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Reflect;
module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
  var keys = gOPN.f(anObject(it));
  var getSymbols = gOPS.f;
  return getSymbols ? keys.concat(getSymbols(it)) : keys;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_perform.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_perform.js ***!
  \***********************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return { e: false, v: exec() };
  } catch (e) {
    return { e: true, v: e };
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_promise-resolve.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_promise-resolve.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/library/modules/_new-promise-capability.js");

module.exports = function (C, x) {
  anObject(C);
  if (isObject(x) && x.constructor === C) return x;
  var promiseCapability = newPromiseCapability.f(C);
  var resolve = promiseCapability.resolve;
  resolve(x);
  return promiseCapability.promise;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_property-desc.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_property-desc.js ***!
  \*****************************************************************/
/***/ ((module) => {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_redefine-all.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_redefine-all.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
module.exports = function (target, src, safe) {
  for (var key in src) {
    if (safe && target[key]) target[key] = src[key];
    else hide(target, key, src[key]);
  } return target;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_redefine.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_redefine.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-collection-from.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-collection-from.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://tc39.github.io/proposal-setmap-offrom/
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");

module.exports = function (COLLECTION) {
  $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {
    var mapFn = arguments[1];
    var mapping, A, n, cb;
    aFunction(this);
    mapping = mapFn !== undefined;
    if (mapping) aFunction(mapFn);
    if (source == undefined) return new this();
    A = [];
    if (mapping) {
      n = 0;
      cb = ctx(mapFn, arguments[2], 2);
      forOf(source, false, function (nextItem) {
        A.push(cb(nextItem, n++));
      });
    } else {
      forOf(source, false, A.push, A);
    }
    return new this(A);
  } });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-collection-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-collection-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://tc39.github.io/proposal-setmap-offrom/
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");

module.exports = function (COLLECTION) {
  $export($export.S, COLLECTION, { of: function of() {
    var length = arguments.length;
    var A = new Array(length);
    while (length--) A[length] = arguments[length];
    return new this(A);
  } });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-proto.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-proto.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var check = function (O, proto) {
  anObject(O);
  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
};
module.exports = {
  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
    function (test, buggy, set) {
      try {
        set = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js")(Function.call, __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js").f(Object.prototype, '__proto__').set, 2);
        set(test, []);
        buggy = !(test instanceof Array);
      } catch (e) { buggy = true; }
      return function setPrototypeOf(O, proto) {
        check(O, proto);
        if (buggy) O.__proto__ = proto;
        else set(O, proto);
        return O;
      };
    }({}, false) : undefined),
  check: check
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-species.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-species.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species');

module.exports = function (KEY) {
  var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
    configurable: true,
    get: function () { return this; }
  });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-to-string-tag.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-to-string-tag.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var def = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');

module.exports = function (it, tag, stat) {
  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_shared-key.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_shared-key.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js")('keys');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
module.exports = function (key) {
  return shared[key] || (shared[key] = uid(key));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_shared.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_shared.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js") ? 'pure' : 'global',
  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_species-constructor.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_species-constructor.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.3.20 SpeciesConstructor(O, defaultConstructor)
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species');
module.exports = function (O, D) {
  var C = anObject(O).constructor;
  var S;
  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_string-at.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_string-at.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_task.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_task.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var invoke = __webpack_require__(/*! ./_invoke */ "../node_modules/core-js/library/modules/_invoke.js");
var html = __webpack_require__(/*! ./_html */ "../node_modules/core-js/library/modules/_html.js");
var cel = __webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var process = global.process;
var setTask = global.setImmediate;
var clearTask = global.clearImmediate;
var MessageChannel = global.MessageChannel;
var Dispatch = global.Dispatch;
var counter = 0;
var queue = {};
var ONREADYSTATECHANGE = 'onreadystatechange';
var defer, channel, port;
var run = function () {
  var id = +this;
  // eslint-disable-next-line no-prototype-builtins
  if (queue.hasOwnProperty(id)) {
    var fn = queue[id];
    delete queue[id];
    fn();
  }
};
var listener = function (event) {
  run.call(event.data);
};
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
if (!setTask || !clearTask) {
  setTask = function setImmediate(fn) {
    var args = [];
    var i = 1;
    while (arguments.length > i) args.push(arguments[i++]);
    queue[++counter] = function () {
      // eslint-disable-next-line no-new-func
      invoke(typeof fn == 'function' ? fn : Function(fn), args);
    };
    defer(counter);
    return counter;
  };
  clearTask = function clearImmediate(id) {
    delete queue[id];
  };
  // Node.js 0.8-
  if (__webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js")(process) == 'process') {
    defer = function (id) {
      process.nextTick(ctx(run, id, 1));
    };
  // Sphere (JS game engine) Dispatch API
  } else if (Dispatch && Dispatch.now) {
    defer = function (id) {
      Dispatch.now(ctx(run, id, 1));
    };
  // Browsers with MessageChannel, includes WebWorkers
  } else if (MessageChannel) {
    channel = new MessageChannel();
    port = channel.port2;
    channel.port1.onmessage = listener;
    defer = ctx(port.postMessage, port, 1);
  // Browsers with postMessage, skip WebWorkers
  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
    defer = function (id) {
      global.postMessage(id + '', '*');
    };
    global.addEventListener('message', listener, false);
  // IE8-
  } else if (ONREADYSTATECHANGE in cel('script')) {
    defer = function (id) {
      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
        html.removeChild(this);
        run.call(id);
      };
    };
  // Rest old browsers
  } else {
    defer = function (id) {
      setTimeout(ctx(run, id, 1), 0);
    };
  }
}
module.exports = {
  set: setTask,
  clear: clearTask
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-absolute-index.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-absolute-index.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-integer.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-integer.js ***!
  \**************************************************************/
/***/ ((module) => {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-iobject.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-iobject.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/library/modules/_iobject.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-length.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-length.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.15 ToLength
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-object.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-primitive.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-primitive.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_uid.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_uid.js ***!
  \*******************************************************/
/***/ ((module) => {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_user-agent.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_user-agent.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var navigator = global.navigator;

module.exports = navigator && navigator.userAgent || '';


/***/ }),

/***/ "../node_modules/core-js/library/modules/_validate-collection.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_validate-collection.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
module.exports = function (it, TYPE) {
  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks-define.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks-define.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var wksExt = __webpack_require__(/*! ./_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js");
var defineProperty = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
module.exports = function (name) {
  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks-ext.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks-ext.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

exports.f = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js");


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var store = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js")('wks');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
var Symbol = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),

/***/ "../node_modules/core-js/library/modules/core.get-iterator-method.js":
/*!***************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/core.get-iterator-method.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/library/modules/_classof.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
module.exports = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js").getIteratorMethod = function (it) {
  if (it != undefined) return it[ITERATOR]
    || it['@@iterator']
    || Iterators[classof(it)];
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.from.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.from.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var call = __webpack_require__(/*! ./_iter-call */ "../node_modules/core-js/library/modules/_iter-call.js");
var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "../node_modules/core-js/library/modules/_is-array-iter.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var createProperty = __webpack_require__(/*! ./_create-property */ "../node_modules/core-js/library/modules/_create-property.js");
var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "../node_modules/core-js/library/modules/core.get-iterator-method.js");

$export($export.S + $export.F * !__webpack_require__(/*! ./_iter-detect */ "../node_modules/core-js/library/modules/_iter-detect.js")(function (iter) { Array.from(iter); }), 'Array', {
  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
    var O = toObject(arrayLike);
    var C = typeof this == 'function' ? this : Array;
    var aLen = arguments.length;
    var mapfn = aLen > 1 ? arguments[1] : undefined;
    var mapping = mapfn !== undefined;
    var index = 0;
    var iterFn = getIterFn(O);
    var length, result, step, iterator;
    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
    // if object isn't iterable or it's array with default iterator - use simple case
    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
      }
    } else {
      length = toLength(O.length);
      for (result = new C(length); length > index; index++) {
        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
      }
    }
    result.length = index;
    return result;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.is-array.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.is-array.js ***!
  \*********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");

$export($export.S, 'Array', { isArray: __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.iterator.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.iterator.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/library/modules/_add-to-unscopables.js");
var step = __webpack_require__(/*! ./_iter-step */ "../node_modules/core-js/library/modules/_iter-step.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");

// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
module.exports = __webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/library/modules/_iter-define.js")(Array, 'Array', function (iterated, kind) {
  this._t = toIObject(iterated); // target
  this._i = 0;                   // next index
  this._k = kind;                // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var kind = this._k;
  var index = this._i++;
  if (!O || index >= O.length) {
    this._t = undefined;
    return step(1);
  }
  if (kind == 'keys') return step(0, index);
  if (kind == 'values') return step(0, O[index]);
  return step(0, [index, O[index]]);
}, 'values');

// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
Iterators.Arguments = Iterators.Array;

addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.assign.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.assign.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.3.1 Object.assign(target, source)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");

$export($export.S + $export.F, 'Object', { assign: __webpack_require__(/*! ./_object-assign */ "../node_modules/core-js/library/modules/_object-assign.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.create.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.create.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
$export($export.S, 'Object', { create: __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.define-properties.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.define-properties.js ***!
  \*******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js"), 'Object', { defineProperties: __webpack_require__(/*! ./_object-dps */ "../node_modules/core-js/library/modules/_object-dps.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.define-property.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.define-property.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js"), 'Object', { defineProperty: __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js":
/*!*****************************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js ***!
  \*****************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var $getOwnPropertyDescriptor = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js").f;

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('getOwnPropertyDescriptor', function () {
  return function getOwnPropertyDescriptor(it, key) {
    return $getOwnPropertyDescriptor(toIObject(it), key);
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.get-prototype-of.js":
/*!******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.get-prototype-of.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 Object.getPrototypeOf(O)
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var $getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('getPrototypeOf', function () {
  return function getPrototypeOf(it) {
    return $getPrototypeOf(toObject(it));
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.keys.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.keys.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 Object.keys(O)
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var $keys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('keys', function () {
  return function keys(it) {
    return $keys(toObject(it));
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.set-prototype-of.js":
/*!******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.set-prototype-of.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.3.19 Object.setPrototypeOf(O, proto)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(/*! ./_set-proto */ "../node_modules/core-js/library/modules/_set-proto.js").set });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.to-string.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.to-string.js ***!
  \***********************************************************************/
/***/ (() => {



/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.promise.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.promise.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/library/modules/_classof.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var anInstance = __webpack_require__(/*! ./_an-instance */ "../node_modules/core-js/library/modules/_an-instance.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/library/modules/_for-of.js");
var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "../node_modules/core-js/library/modules/_species-constructor.js");
var task = __webpack_require__(/*! ./_task */ "../node_modules/core-js/library/modules/_task.js").set;
var microtask = __webpack_require__(/*! ./_microtask */ "../node_modules/core-js/library/modules/_microtask.js")();
var newPromiseCapabilityModule = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/library/modules/_new-promise-capability.js");
var perform = __webpack_require__(/*! ./_perform */ "../node_modules/core-js/library/modules/_perform.js");
var userAgent = __webpack_require__(/*! ./_user-agent */ "../node_modules/core-js/library/modules/_user-agent.js");
var promiseResolve = __webpack_require__(/*! ./_promise-resolve */ "../node_modules/core-js/library/modules/_promise-resolve.js");
var PROMISE = 'Promise';
var TypeError = global.TypeError;
var process = global.process;
var versions = process && process.versions;
var v8 = versions && versions.v8 || '';
var $Promise = global[PROMISE];
var isNode = classof(process) == 'process';
var empty = function () { /* empty */ };
var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;

var USE_NATIVE = !!function () {
  try {
    // correct subclassing with @@species support
    var promise = $Promise.resolve(1);
    var FakePromise = (promise.constructor = {})[__webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('species')] = function (exec) {
      exec(empty, empty);
    };
    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
    return (isNode || typeof PromiseRejectionEvent == 'function')
      && promise.then(empty) instanceof FakePromise
      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
      // we can't detect it synchronously, so just check versions
      && v8.indexOf('6.6') !== 0
      && userAgent.indexOf('Chrome/66') === -1;
  } catch (e) { /* empty */ }
}();

// helpers
var isThenable = function (it) {
  var then;
  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
};
var notify = function (promise, isReject) {
  if (promise._n) return;
  promise._n = true;
  var chain = promise._c;
  microtask(function () {
    var value = promise._v;
    var ok = promise._s == 1;
    var i = 0;
    var run = function (reaction) {
      var handler = ok ? reaction.ok : reaction.fail;
      var resolve = reaction.resolve;
      var reject = reaction.reject;
      var domain = reaction.domain;
      var result, then, exited;
      try {
        if (handler) {
          if (!ok) {
            if (promise._h == 2) onHandleUnhandled(promise);
            promise._h = 1;
          }
          if (handler === true) result = value;
          else {
            if (domain) domain.enter();
            result = handler(value); // may throw
            if (domain) {
              domain.exit();
              exited = true;
            }
          }
          if (result === reaction.promise) {
            reject(TypeError('Promise-chain cycle'));
          } else if (then = isThenable(result)) {
            then.call(result, resolve, reject);
          } else resolve(result);
        } else reject(value);
      } catch (e) {
        if (domain && !exited) domain.exit();
        reject(e);
      }
    };
    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
    promise._c = [];
    promise._n = false;
    if (isReject && !promise._h) onUnhandled(promise);
  });
};
var onUnhandled = function (promise) {
  task.call(global, function () {
    var value = promise._v;
    var unhandled = isUnhandled(promise);
    var result, handler, console;
    if (unhandled) {
      result = perform(function () {
        if (isNode) {
          process.emit('unhandledRejection', value, promise);
        } else if (handler = global.onunhandledrejection) {
          handler({ promise: promise, reason: value });
        } else if ((console = global.console) && console.error) {
          console.error('Unhandled promise rejection', value);
        }
      });
      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
    } promise._a = undefined;
    if (unhandled && result.e) throw result.v;
  });
};
var isUnhandled = function (promise) {
  return promise._h !== 1 && (promise._a || promise._c).length === 0;
};
var onHandleUnhandled = function (promise) {
  task.call(global, function () {
    var handler;
    if (isNode) {
      process.emit('rejectionHandled', promise);
    } else if (handler = global.onrejectionhandled) {
      handler({ promise: promise, reason: promise._v });
    }
  });
};
var $reject = function (value) {
  var promise = this;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  promise._v = value;
  promise._s = 2;
  if (!promise._a) promise._a = promise._c.slice();
  notify(promise, true);
};
var $resolve = function (value) {
  var promise = this;
  var then;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  try {
    if (promise === value) throw TypeError("Promise can't be resolved itself");
    if (then = isThenable(value)) {
      microtask(function () {
        var wrapper = { _w: promise, _d: false }; // wrap
        try {
          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
        } catch (e) {
          $reject.call(wrapper, e);
        }
      });
    } else {
      promise._v = value;
      promise._s = 1;
      notify(promise, false);
    }
  } catch (e) {
    $reject.call({ _w: promise, _d: false }, e); // wrap
  }
};

// constructor polyfill
if (!USE_NATIVE) {
  // 25.4.3.1 Promise(executor)
  $Promise = function Promise(executor) {
    anInstance(this, $Promise, PROMISE, '_h');
    aFunction(executor);
    Internal.call(this);
    try {
      executor(ctx($resolve, this, 1), ctx($reject, this, 1));
    } catch (err) {
      $reject.call(this, err);
    }
  };
  // eslint-disable-next-line no-unused-vars
  Internal = function Promise(executor) {
    this._c = [];             // <- awaiting reactions
    this._a = undefined;      // <- checked in isUnhandled reactions
    this._s = 0;              // <- state
    this._d = false;          // <- done
    this._v = undefined;      // <- value
    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
    this._n = false;          // <- notify
  };
  Internal.prototype = __webpack_require__(/*! ./_redefine-all */ "../node_modules/core-js/library/modules/_redefine-all.js")($Promise.prototype, {
    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
    then: function then(onFulfilled, onRejected) {
      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
      reaction.fail = typeof onRejected == 'function' && onRejected;
      reaction.domain = isNode ? process.domain : undefined;
      this._c.push(reaction);
      if (this._a) this._a.push(reaction);
      if (this._s) notify(this, false);
      return reaction.promise;
    },
    // 25.4.5.1 Promise.prototype.catch(onRejected)
    'catch': function (onRejected) {
      return this.then(undefined, onRejected);
    }
  });
  OwnPromiseCapability = function () {
    var promise = new Internal();
    this.promise = promise;
    this.resolve = ctx($resolve, promise, 1);
    this.reject = ctx($reject, promise, 1);
  };
  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
    return C === $Promise || C === Wrapper
      ? new OwnPromiseCapability(C)
      : newGenericPromiseCapability(C);
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
__webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js")($Promise, PROMISE);
__webpack_require__(/*! ./_set-species */ "../node_modules/core-js/library/modules/_set-species.js")(PROMISE);
Wrapper = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js")[PROMISE];

// statics
$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
  // 25.4.4.5 Promise.reject(r)
  reject: function reject(r) {
    var capability = newPromiseCapability(this);
    var $$reject = capability.reject;
    $$reject(r);
    return capability.promise;
  }
});
$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
  // 25.4.4.6 Promise.resolve(x)
  resolve: function resolve(x) {
    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
  }
});
$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(/*! ./_iter-detect */ "../node_modules/core-js/library/modules/_iter-detect.js")(function (iter) {
  $Promise.all(iter)['catch'](empty);
})), PROMISE, {
  // 25.4.4.1 Promise.all(iterable)
  all: function all(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var resolve = capability.resolve;
    var reject = capability.reject;
    var result = perform(function () {
      var values = [];
      var index = 0;
      var remaining = 1;
      forOf(iterable, false, function (promise) {
        var $index = index++;
        var alreadyCalled = false;
        values.push(undefined);
        remaining++;
        C.resolve(promise).then(function (value) {
          if (alreadyCalled) return;
          alreadyCalled = true;
          values[$index] = value;
          --remaining || resolve(values);
        }, reject);
      });
      --remaining || resolve(values);
    });
    if (result.e) reject(result.v);
    return capability.promise;
  },
  // 25.4.4.4 Promise.race(iterable)
  race: function race(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var reject = capability.reject;
    var result = perform(function () {
      forOf(iterable, false, function (promise) {
        C.resolve(promise).then(capability.resolve, reject);
      });
    });
    if (result.e) reject(result.v);
    return capability.promise;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.reflect.construct.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.reflect.construct.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var bind = __webpack_require__(/*! ./_bind */ "../node_modules/core-js/library/modules/_bind.js");
var rConstruct = (__webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Reflect || {}).construct;

// MS Edge supports only 2 arguments and argumentsList argument is optional
// FF Nightly sets third argument as `new.target`, but does not create `this` from it
var NEW_TARGET_BUG = fails(function () {
  function F() { /* empty */ }
  return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);
});
var ARGS_BUG = !fails(function () {
  rConstruct(function () { /* empty */ });
});

$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {
  construct: function construct(Target, args /* , newTarget */) {
    aFunction(Target);
    anObject(args);
    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
    if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);
    if (Target == newTarget) {
      // w/o altered newTarget, optimization for 0-4 arguments
      switch (args.length) {
        case 0: return new Target();
        case 1: return new Target(args[0]);
        case 2: return new Target(args[0], args[1]);
        case 3: return new Target(args[0], args[1], args[2]);
        case 4: return new Target(args[0], args[1], args[2], args[3]);
      }
      // w/o altered newTarget, lot of arguments case
      var $args = [null];
      $args.push.apply($args, args);
      return new (bind.apply(Target, $args))();
    }
    // with altered newTarget, not support built-in constructors
    var proto = newTarget.prototype;
    var instance = create(isObject(proto) ? proto : Object.prototype);
    var result = Function.apply.call(Target, instance, args);
    return isObject(result) ? result : instance;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.string.iterator.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.string.iterator.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $at = __webpack_require__(/*! ./_string-at */ "../node_modules/core-js/library/modules/_string-at.js")(true);

// 21.1.3.27 String.prototype[@@iterator]()
__webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/library/modules/_iter-define.js")(String, 'String', function (iterated) {
  this._t = String(iterated); // target
  this._i = 0;                // next index
// 21.1.5.2.1 %StringIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var index = this._i;
  var point;
  if (index >= O.length) return { value: undefined, done: true };
  point = $at(O, index);
  this._i += point.length;
  return { value: point, done: false };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.symbol.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.symbol.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// ECMAScript 6 symbols shim
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var META = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js").KEY;
var $fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
var wks = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js");
var wksExt = __webpack_require__(/*! ./_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js");
var wksDefine = __webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js");
var enumKeys = __webpack_require__(/*! ./_enum-keys */ "../node_modules/core-js/library/modules/_enum-keys.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var _create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var gOPNExt = __webpack_require__(/*! ./_object-gopn-ext */ "../node_modules/core-js/library/modules/_object-gopn-ext.js");
var $GOPD = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js");
var $GOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var $DP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var $keys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPD = $GOPD.f;
var dP = $DP.f;
var gOPN = gOPNExt.f;
var $Symbol = global.Symbol;
var $JSON = global.JSON;
var _stringify = $JSON && $JSON.stringify;
var PROTOTYPE = 'prototype';
var HIDDEN = wks('_hidden');
var TO_PRIMITIVE = wks('toPrimitive');
var isEnum = {}.propertyIsEnumerable;
var SymbolRegistry = shared('symbol-registry');
var AllSymbols = shared('symbols');
var OPSymbols = shared('op-symbols');
var ObjectProto = Object[PROTOTYPE];
var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
var QObject = global.QObject;
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;

// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
var setSymbolDesc = DESCRIPTORS && $fails(function () {
  return _create(dP({}, 'a', {
    get: function () { return dP(this, 'a', { value: 7 }).a; }
  })).a != 7;
}) ? function (it, key, D) {
  var protoDesc = gOPD(ObjectProto, key);
  if (protoDesc) delete ObjectProto[key];
  dP(it, key, D);
  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
} : dP;

var wrap = function (tag) {
  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
  sym._k = tag;
  return sym;
};

var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
  return typeof it == 'symbol';
} : function (it) {
  return it instanceof $Symbol;
};

var $defineProperty = function defineProperty(it, key, D) {
  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
  anObject(it);
  key = toPrimitive(key, true);
  anObject(D);
  if (has(AllSymbols, key)) {
    if (!D.enumerable) {
      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
      it[HIDDEN][key] = true;
    } else {
      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
      D = _create(D, { enumerable: createDesc(0, false) });
    } return setSymbolDesc(it, key, D);
  } return dP(it, key, D);
};
var $defineProperties = function defineProperties(it, P) {
  anObject(it);
  var keys = enumKeys(P = toIObject(P));
  var i = 0;
  var l = keys.length;
  var key;
  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
  return it;
};
var $create = function create(it, P) {
  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
};
var $propertyIsEnumerable = function propertyIsEnumerable(key) {
  var E = isEnum.call(this, key = toPrimitive(key, true));
  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
  it = toIObject(it);
  key = toPrimitive(key, true);
  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
  var D = gOPD(it, key);
  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
  return D;
};
var $getOwnPropertyNames = function getOwnPropertyNames(it) {
  var names = gOPN(toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
  } return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
  var IS_OP = it === ObjectProto;
  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
  } return result;
};

// 19.4.1.1 Symbol([description])
if (!USE_NATIVE) {
  $Symbol = function Symbol() {
    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
    var $set = function (value) {
      if (this === ObjectProto) $set.call(OPSymbols, value);
      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
      setSymbolDesc(this, tag, createDesc(1, value));
    };
    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
    return wrap(tag);
  };
  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
    return this._k;
  });

  $GOPD.f = $getOwnPropertyDescriptor;
  $DP.f = $defineProperty;
  __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js").f = gOPNExt.f = $getOwnPropertyNames;
  __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js").f = $propertyIsEnumerable;
  $GOPS.f = $getOwnPropertySymbols;

  if (DESCRIPTORS && !__webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js")) {
    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
  }

  wksExt.f = function (name) {
    return wrap(wks(name));
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });

for (var es6Symbols = (
  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);

for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);

$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
  // 19.4.2.1 Symbol.for(key)
  'for': function (key) {
    return has(SymbolRegistry, key += '')
      ? SymbolRegistry[key]
      : SymbolRegistry[key] = $Symbol(key);
  },
  // 19.4.2.5 Symbol.keyFor(sym)
  keyFor: function keyFor(sym) {
    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
  },
  useSetter: function () { setter = true; },
  useSimple: function () { setter = false; }
});

$export($export.S + $export.F * !USE_NATIVE, 'Object', {
  // 19.1.2.2 Object.create(O [, Properties])
  create: $create,
  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
  defineProperty: $defineProperty,
  // 19.1.2.3 Object.defineProperties(O, Properties)
  defineProperties: $defineProperties,
  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
  // 19.1.2.7 Object.getOwnPropertyNames(O)
  getOwnPropertyNames: $getOwnPropertyNames,
  // 19.1.2.8 Object.getOwnPropertySymbols(O)
  getOwnPropertySymbols: $getOwnPropertySymbols
});

// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
// https://bugs.chromium.org/p/v8/issues/detail?id=3443
var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });

$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
    return $GOPS.f(toObject(it));
  }
});

// 24.3.2 JSON.stringify(value [, replacer [, space]])
$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
  var S = $Symbol();
  // MS Edge converts symbol values to JSON as {}
  // WebKit converts symbol values to JSON as null
  // V8 throws on boxed symbols
  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
})), 'JSON', {
  stringify: function stringify(it) {
    var args = [it];
    var i = 1;
    var replacer, $replacer;
    while (arguments.length > i) args.push(arguments[i++]);
    $replacer = replacer = args[1];
    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
    if (!isArray(replacer)) replacer = function (key, value) {
      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
      if (!isSymbol(value)) return value;
    };
    args[1] = replacer;
    return _stringify.apply($JSON, args);
  }
});

// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
// 19.4.3.5 Symbol.prototype[@@toStringTag]
setToStringTag($Symbol, 'Symbol');
// 20.2.1.9 Math[@@toStringTag]
setToStringTag(Math, 'Math', true);
// 24.3.3 JSON[@@toStringTag]
setToStringTag(global.JSON, 'JSON', true);


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.weak-map.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.weak-map.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var each = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/library/modules/_array-methods.js")(0);
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var meta = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js");
var assign = __webpack_require__(/*! ./_object-assign */ "../node_modules/core-js/library/modules/_object-assign.js");
var weak = __webpack_require__(/*! ./_collection-weak */ "../node_modules/core-js/library/modules/_collection-weak.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var validate = __webpack_require__(/*! ./_validate-collection */ "../node_modules/core-js/library/modules/_validate-collection.js");
var NATIVE_WEAK_MAP = __webpack_require__(/*! ./_validate-collection */ "../node_modules/core-js/library/modules/_validate-collection.js");
var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;
var WEAK_MAP = 'WeakMap';
var getWeak = meta.getWeak;
var isExtensible = Object.isExtensible;
var uncaughtFrozenStore = weak.ufstore;
var InternalMap;

var wrapper = function (get) {
  return function WeakMap() {
    return get(this, arguments.length > 0 ? arguments[0] : undefined);
  };
};

var methods = {
  // 23.3.3.3 WeakMap.prototype.get(key)
  get: function get(key) {
    if (isObject(key)) {
      var data = getWeak(key);
      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
      return data ? data[this._i] : undefined;
    }
  },
  // 23.3.3.5 WeakMap.prototype.set(key, value)
  set: function set(key, value) {
    return weak.def(validate(this, WEAK_MAP), key, value);
  }
};

// 23.3 WeakMap Objects
var $WeakMap = module.exports = __webpack_require__(/*! ./_collection */ "../node_modules/core-js/library/modules/_collection.js")(WEAK_MAP, wrapper, methods, weak, true, true);

// IE11 WeakMap frozen keys fix
if (NATIVE_WEAK_MAP && IS_IE11) {
  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
  assign(InternalMap.prototype, methods);
  meta.NEED = true;
  each(['delete', 'has', 'get', 'set'], function (key) {
    var proto = $WeakMap.prototype;
    var method = proto[key];
    redefine(proto, key, function (a, b) {
      // store frozen objects on internal weakmap shim
      if (isObject(a) && !isExtensible(a)) {
        if (!this._f) this._f = new InternalMap();
        var result = this._f[key](a, b);
        return key == 'set' ? this : result;
      // store all the rest on native weakmap
      } return method.call(this, a, b);
    });
  });
}


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js":
/*!******************************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js ***!
  \******************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-object-getownpropertydescriptors
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var ownKeys = __webpack_require__(/*! ./_own-keys */ "../node_modules/core-js/library/modules/_own-keys.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var gOPD = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js");
var createProperty = __webpack_require__(/*! ./_create-property */ "../node_modules/core-js/library/modules/_create-property.js");

$export($export.S, 'Object', {
  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
    var O = toIObject(object);
    var getDesc = gOPD.f;
    var keys = ownKeys(O);
    var result = {};
    var i = 0;
    var key, desc;
    while (keys.length > i) {
      desc = getDesc(O, key = keys[i++]);
      if (desc !== undefined) createProperty(result, key, desc);
    }
    return result;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.object.values.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.object.values.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://github.com/tc39/proposal-object-values-entries
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var $values = __webpack_require__(/*! ./_object-to-array */ "../node_modules/core-js/library/modules/_object-to-array.js")(false);

$export($export.S, 'Object', {
  values: function values(it) {
    return $values(it);
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.promise.finally.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.promise.finally.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// https://github.com/tc39/proposal-promise-finally

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "../node_modules/core-js/library/modules/_species-constructor.js");
var promiseResolve = __webpack_require__(/*! ./_promise-resolve */ "../node_modules/core-js/library/modules/_promise-resolve.js");

$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
  var C = speciesConstructor(this, core.Promise || global.Promise);
  var isFunction = typeof onFinally == 'function';
  return this.then(
    isFunction ? function (x) {
      return promiseResolve(C, onFinally()).then(function () { return x; });
    } : onFinally,
    isFunction ? function (e) {
      return promiseResolve(C, onFinally()).then(function () { throw e; });
    } : onFinally
  );
} });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.promise.try.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.promise.try.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/tc39/proposal-promise-try
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/library/modules/_new-promise-capability.js");
var perform = __webpack_require__(/*! ./_perform */ "../node_modules/core-js/library/modules/_perform.js");

$export($export.S, 'Promise', { 'try': function (callbackfn) {
  var promiseCapability = newPromiseCapability.f(this);
  var result = perform(callbackfn);
  (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);
  return promiseCapability.promise;
} });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js":
/*!****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.symbol.async-iterator.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js")('asyncIterator');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.symbol.observable.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.symbol.observable.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js")('observable');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.weak-map.from.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.weak-map.from.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from
__webpack_require__(/*! ./_set-collection-from */ "../node_modules/core-js/library/modules/_set-collection-from.js")('WeakMap');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.weak-map.of.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.weak-map.of.js ***!
  \******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of
__webpack_require__(/*! ./_set-collection-of */ "../node_modules/core-js/library/modules/_set-collection-of.js")('WeakMap');


/***/ }),

/***/ "../node_modules/core-js/library/modules/web.dom.iterable.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/web.dom.iterable.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./es6.array.iterator */ "../node_modules/core-js/library/modules/es6.array.iterator.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var TO_STRING_TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');

var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
  'TextTrackList,TouchList').split(',');

for (var i = 0; i < DOMIterables.length; i++) {
  var NAME = DOMIterables[i];
  var Collection = global[NAME];
  var proto = Collection && Collection.prototype;
  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
  Iterators[NAME] = Iterators.Array;
}


/***/ }),

/***/ "../node_modules/core-js/modules/_a-function.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_a-function.js ***!
  \******************************************************/
/***/ ((module) => {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_add-to-unscopables.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/_add-to-unscopables.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 22.1.3.31 Array.prototype[@@unscopables]
var UNSCOPABLES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('unscopables');
var ArrayProto = Array.prototype;
if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js")(ArrayProto, UNSCOPABLES, {});
module.exports = function (key) {
  ArrayProto[UNSCOPABLES][key] = true;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_an-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_an-object.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-includes.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/_array-includes.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/modules/_to-iobject.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "../node_modules/core-js/modules/_to-absolute-index.js");
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-methods.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_array-methods.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 0 -> Array#forEach
// 1 -> Array#map
// 2 -> Array#filter
// 3 -> Array#some
// 4 -> Array#every
// 5 -> Array#find
// 6 -> Array#findIndex
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js");
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/modules/_iobject.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/modules/_to-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var asc = __webpack_require__(/*! ./_array-species-create */ "../node_modules/core-js/modules/_array-species-create.js");
module.exports = function (TYPE, $create) {
  var IS_MAP = TYPE == 1;
  var IS_FILTER = TYPE == 2;
  var IS_SOME = TYPE == 3;
  var IS_EVERY = TYPE == 4;
  var IS_FIND_INDEX = TYPE == 6;
  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
  var create = $create || asc;
  return function ($this, callbackfn, that) {
    var O = toObject($this);
    var self = IObject(O);
    var f = ctx(callbackfn, that, 3);
    var length = toLength(self.length);
    var index = 0;
    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
    var val, res;
    for (;length > index; index++) if (NO_HOLES || index in self) {
      val = self[index];
      res = f(val, index, O);
      if (TYPE) {
        if (IS_MAP) result[index] = res;   // map
        else if (res) switch (TYPE) {
          case 3: return true;             // some
          case 5: return val;              // find
          case 6: return index;            // findIndex
          case 2: result.push(val);        // filter
        } else if (IS_EVERY) return false; // every
      }
    }
    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-species-constructor.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/modules/_array-species-constructor.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/modules/_is-array.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('species');

module.exports = function (original) {
  var C;
  if (isArray(original)) {
    C = original.constructor;
    // cross-realm fallback
    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
    if (isObject(C)) {
      C = C[SPECIES];
      if (C === null) C = undefined;
    }
  } return C === undefined ? Array : C;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_array-species-create.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/modules/_array-species-create.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
var speciesConstructor = __webpack_require__(/*! ./_array-species-constructor */ "../node_modules/core-js/modules/_array-species-constructor.js");

module.exports = function (original, length) {
  return new (speciesConstructor(original))(length);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_classof.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_classof.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_cof.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_cof.js ***!
  \***********************************************/
/***/ ((module) => {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_core.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_core.js ***!
  \************************************************/
/***/ ((module) => {

var core = module.exports = { version: '2.6.12' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/modules/_ctx.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_ctx.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// optional / simple context binding
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/modules/_a-function.js");
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_defined.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_defined.js ***!
  \***************************************************/
/***/ ((module) => {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_descriptors.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_descriptors.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/modules/_dom-create.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_dom-create.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),

/***/ "../node_modules/core-js/modules/_export.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_export.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js");
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
  var key, own, out, exp;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    // export native or passed
    out = (own ? target : source)[key];
    // bind timers to global for call from export context
    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // extend global
    if (target) redefine(target, key, out, type & $export.U);
    // export
    if (exports[key] != out) hide(exports, key, exp);
    if (IS_PROTO && expProto[key] != out) expProto[key] = out;
  }
};
global.core = core;
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),

/***/ "../node_modules/core-js/modules/_fails-is-regexp.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/_fails-is-regexp.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var MATCH = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('match');
module.exports = function (KEY) {
  var re = /./;
  try {
    '/./'[KEY](re);
  } catch (e) {
    try {
      re[MATCH] = false;
      return !'/./'[KEY](re);
    } catch (f) { /* empty */ }
  } return true;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_fails.js":
/*!*************************************************!*\
  !*** ../node_modules/core-js/modules/_fails.js ***!
  \*************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),

/***/ "../node_modules/core-js/modules/_flags.js":
/*!*************************************************!*\
  !*** ../node_modules/core-js/modules/_flags.js ***!
  \*************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 21.2.5.3 get RegExp.prototype.flags
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
module.exports = function () {
  var that = anObject(this);
  var result = '';
  if (that.global) result += 'g';
  if (that.ignoreCase) result += 'i';
  if (that.multiline) result += 'm';
  if (that.unicode) result += 'u';
  if (that.sticky) result += 'y';
  return result;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_function-to-string.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/_function-to-string.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('native-function-to-string', Function.toString);


/***/ }),

/***/ "../node_modules/core-js/modules/_global.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_global.js ***!
  \**************************************************/
/***/ ((module) => {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/modules/_has.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_has.js ***!
  \***********************************************/
/***/ ((module) => {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_hide.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_hide.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/modules/_property-desc.js");
module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_ie8-dom-define.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/_ie8-dom-define.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () {
  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/modules/_iobject.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_iobject.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-array.js":
/*!****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-array.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-object.js ***!
  \*****************************************************/
/***/ ((module) => {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-regexp.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-regexp.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.8 IsRegExp(argument)
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
var MATCH = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('match');
module.exports = function (it) {
  var isRegExp;
  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
};


/***/ }),

/***/ "../node_modules/core-js/modules/_library.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_library.js ***!
  \***************************************************/
/***/ ((module) => {

module.exports = false;


/***/ }),

/***/ "../node_modules/core-js/modules/_object-dp.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_object-dp.js ***!
  \*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/modules/_ie8-dom-define.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/modules/_to-primitive.js");
var dP = Object.defineProperty;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_property-desc.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_property-desc.js ***!
  \*********************************************************/
/***/ ((module) => {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_redefine.js":
/*!****************************************************!*\
  !*** ../node_modules/core-js/modules/_redefine.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var SRC = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js")('src');
var $toString = __webpack_require__(/*! ./_function-to-string */ "../node_modules/core-js/modules/_function-to-string.js");
var TO_STRING = 'toString';
var TPL = ('' + $toString).split(TO_STRING);

__webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js").inspectSource = function (it) {
  return $toString.call(it);
};

(module.exports = function (O, key, val, safe) {
  var isFunction = typeof val == 'function';
  if (isFunction) has(val, 'name') || hide(val, 'name', key);
  if (O[key] === val) return;
  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
  if (O === global) {
    O[key] = val;
  } else if (!safe) {
    delete O[key];
    hide(O, key, val);
  } else if (O[key]) {
    O[key] = val;
  } else {
    hide(O, key, val);
  }
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, TO_STRING, function toString() {
  return typeof this == 'function' && this[SRC] || $toString.call(this);
});


/***/ }),

/***/ "../node_modules/core-js/modules/_shared.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_shared.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(/*! ./_library */ "../node_modules/core-js/modules/_library.js") ? 'pure' : 'global',
  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});


/***/ }),

/***/ "../node_modules/core-js/modules/_strict-method.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_strict-method.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js");

module.exports = function (method, arg) {
  return !!method && fails(function () {
    // eslint-disable-next-line no-useless-call
    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);
  });
};


/***/ }),

/***/ "../node_modules/core-js/modules/_string-context.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/_string-context.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// helper for String#{startsWith, endsWith, includes}
var isRegExp = __webpack_require__(/*! ./_is-regexp */ "../node_modules/core-js/modules/_is-regexp.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");

module.exports = function (that, searchString, NAME) {
  if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
  return String(defined(that));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_string-html.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_string-html.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
var quot = /"/g;
// B.2.3.2.1 CreateHTML(string, tag, attribute, value)
var createHTML = function (string, tag, attribute, value) {
  var S = String(defined(string));
  var p1 = '<' + tag;
  if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '&quot;') + '"';
  return p1 + '>' + S + '</' + tag + '>';
};
module.exports = function (NAME, exec) {
  var O = {};
  O[NAME] = exec(createHTML);
  $export($export.P + $export.F * fails(function () {
    var test = ''[NAME]('"');
    return test !== test.toLowerCase() || test.split('"').length > 3;
  }), 'String', O);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-absolute-index.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/_to-absolute-index.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-integer.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_to-integer.js ***!
  \******************************************************/
/***/ ((module) => {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-iobject.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_to-iobject.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/modules/_iobject.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-length.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_to-length.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.15 ToLength
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_to-object.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/modules/_defined.js");
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-primitive.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/modules/_to-primitive.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),

/***/ "../node_modules/core-js/modules/_uid.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_uid.js ***!
  \***********************************************/
/***/ ((module) => {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_wks.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_wks.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var store = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('wks');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js");
var Symbol = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.filter.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.filter.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $filter = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(2);

$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "../node_modules/core-js/modules/_strict-method.js")([].filter, true), 'Array', {
  // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
  filter: function filter(callbackfn /* , thisArg */) {
    return $filter(this, callbackfn, arguments[1]);
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.find.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.find.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $find = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(5);
var KEY = 'find';
var forced = true;
// Shouldn't skip holes
if (KEY in []) Array(1)[KEY](function () { forced = false; });
$export($export.P + $export.F * forced, 'Array', {
  find: function find(callbackfn /* , that = undefined */) {
    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  }
});
__webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/modules/_add-to-unscopables.js")(KEY);


/***/ }),

/***/ "../node_modules/core-js/modules/es6.array.map.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.array.map.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $map = __webpack_require__(/*! ./_array-methods */ "../node_modules/core-js/modules/_array-methods.js")(1);

$export($export.P + $export.F * !__webpack_require__(/*! ./_strict-method */ "../node_modules/core-js/modules/_strict-method.js")([].map, true), 'Array', {
  // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
  map: function map(callbackfn /* , thisArg */) {
    return $map(this, callbackfn, arguments[1]);
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.function.name.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.function.name.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js").f;
var FProto = Function.prototype;
var nameRE = /^\s*function ([^ (]*)/;
var NAME = 'name';

// 19.2.4.2 name
NAME in FProto || __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") && dP(FProto, NAME, {
  configurable: true,
  get: function () {
    try {
      return ('' + this).match(nameRE)[1];
    } catch (e) {
      return '';
    }
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.object.to-string.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.object.to-string.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 19.1.3.6 Object.prototype.toString()
var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/modules/_classof.js");
var test = {};
test[__webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag')] = 'z';
if (test + '' != '[object z]') {
  __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js")(Object.prototype, 'toString', function toString() {
    return '[object ' + classof(this) + ']';
  }, true);
}


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.flags.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.flags.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 21.2.5.3 get RegExp.prototype.flags()
if (__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") && /./g.flags != 'g') __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js").f(RegExp.prototype, 'flags', {
  configurable: true,
  get: __webpack_require__(/*! ./_flags */ "../node_modules/core-js/modules/_flags.js")
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.regexp.to-string.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.regexp.to-string.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

__webpack_require__(/*! ./es6.regexp.flags */ "../node_modules/core-js/modules/es6.regexp.flags.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var $flags = __webpack_require__(/*! ./_flags */ "../node_modules/core-js/modules/_flags.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js");
var TO_STRING = 'toString';
var $toString = /./[TO_STRING];

var define = function (fn) {
  __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js")(RegExp.prototype, TO_STRING, fn, true);
};

// 21.2.5.14 RegExp.prototype.toString()
if (__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {
  define(function toString() {
    var R = anObject(this);
    return '/'.concat(R.source, '/',
      'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
  });
// FF44- RegExp#toString has a wrong name
} else if ($toString.name != TO_STRING) {
  define(function toString() {
    return $toString.call(this);
  });
}


/***/ }),

/***/ "../node_modules/core-js/modules/es6.string.includes.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.string.includes.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// 21.1.3.7 String.prototype.includes(searchString, position = 0)

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var context = __webpack_require__(/*! ./_string-context */ "../node_modules/core-js/modules/_string-context.js");
var INCLUDES = 'includes';

$export($export.P + $export.F * __webpack_require__(/*! ./_fails-is-regexp */ "../node_modules/core-js/modules/_fails-is-regexp.js")(INCLUDES), 'String', {
  includes: function includes(searchString /* , position = 0 */) {
    return !!~context(this, searchString, INCLUDES)
      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es6.string.sub.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/es6.string.sub.js ***!
  \*********************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// B.2.3.13 String.prototype.sub()
__webpack_require__(/*! ./_string-html */ "../node_modules/core-js/modules/_string-html.js")('sub', function (createHTML) {
  return function sub() {
    return createHTML(this, 'sub', '', '');
  };
});


/***/ }),

/***/ "../node_modules/core-js/modules/es7.array.includes.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/es7.array.includes.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// https://github.com/tc39/Array.prototype.includes
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var $includes = __webpack_require__(/*! ./_array-includes */ "../node_modules/core-js/modules/_array-includes.js")(true);

$export($export.P, 'Array', {
  includes: function includes(el /* , fromIndex = 0 */) {
    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
  }
});

__webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/modules/_add-to-unscopables.js")('includes');


/***/ }),

/***/ "../node_modules/object-assign/index.js":
/*!**********************************************!*\
  !*** ../node_modules/object-assign/index.js ***!
  \**********************************************/
/***/ ((module) => {

"use strict";
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/


/* eslint-disable no-unused-vars */
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var propIsEnumerable = Object.prototype.propertyIsEnumerable;

function toObject(val) {
	if (val === null || val === undefined) {
		throw new TypeError('Object.assign cannot be called with null or undefined');
	}

	return Object(val);
}

function shouldUseNative() {
	try {
		if (!Object.assign) {
			return false;
		}

		// Detect buggy property enumeration order in older V8 versions.

		// https://bugs.chromium.org/p/v8/issues/detail?id=4118
		var test1 = new String('abc');  // eslint-disable-line no-new-wrappers
		test1[5] = 'de';
		if (Object.getOwnPropertyNames(test1)[0] === '5') {
			return false;
		}

		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
		var test2 = {};
		for (var i = 0; i < 10; i++) {
			test2['_' + String.fromCharCode(i)] = i;
		}
		var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
			return test2[n];
		});
		if (order2.join('') !== '0123456789') {
			return false;
		}

		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
		var test3 = {};
		'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
			test3[letter] = letter;
		});
		if (Object.keys(Object.assign({}, test3)).join('') !==
				'abcdefghijklmnopqrst') {
			return false;
		}

		return true;
	} catch (err) {
		// We don't expect any of the above to throw, but better to be safe.
		return false;
	}
}

module.exports = shouldUseNative() ? Object.assign : function (target, source) {
	var from;
	var to = toObject(target);
	var symbols;

	for (var s = 1; s < arguments.length; s++) {
		from = Object(arguments[s]);

		for (var key in from) {
			if (hasOwnProperty.call(from, key)) {
				to[key] = from[key];
			}
		}

		if (getOwnPropertySymbols) {
			symbols = getOwnPropertySymbols(from);
			for (var i = 0; i < symbols.length; i++) {
				if (propIsEnumerable.call(from, symbols[i])) {
					to[symbols[i]] = from[symbols[i]];
				}
			}
		}
	}

	return to;
};


/***/ }),

/***/ "../node_modules/prop-types/checkPropTypes.js":
/*!****************************************************!*\
  !*** ../node_modules/prop-types/checkPropTypes.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



var printWarning = function() {};

if (true) {
  var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js");
  var loggedTypeFailures = {};
  var has = Function.call.bind(Object.prototype.hasOwnProperty);

  printWarning = function(text) {
    var message = 'Warning: ' + text;
    if (typeof console !== 'undefined') {
      console.error(message);
    }
    try {
      // --- Welcome to debugging React ---
      // This error was thrown as a convenience so that you can use this stack
      // to find the callsite that caused this warning to fire.
      throw new Error(message);
    } catch (x) {}
  };
}

/**
 * Assert that the values match with the type specs.
 * Error messages are memorized and will only be shown once.
 *
 * @param {object} typeSpecs Map of name to a ReactPropType
 * @param {object} values Runtime values that need to be type-checked
 * @param {string} location e.g. "prop", "context", "child context"
 * @param {string} componentName Name of the component for error messages.
 * @param {?Function} getStack Returns the component stack.
 * @private
 */
function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
  if (true) {
    for (var typeSpecName in typeSpecs) {
      if (has(typeSpecs, typeSpecName)) {
        var error;
        // Prop type validation may throw. In case they do, we don't want to
        // fail the render phase where it didn't fail before. So we log it.
        // After these have been cleaned up, we'll let them throw.
        try {
          // This is intentionally an invariant that gets caught. It's the same
          // behavior as without this statement except with a better message.
          if (typeof typeSpecs[typeSpecName] !== 'function') {
            var err = Error(
              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +
              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'
            );
            err.name = 'Invariant Violation';
            throw err;
          }
          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
        } catch (ex) {
          error = ex;
        }
        if (error && !(error instanceof Error)) {
          printWarning(
            (componentName || 'React class') + ': type specification of ' +
            location + ' `' + typeSpecName + '` is invalid; the type checker ' +
            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +
            'You may have forgotten to pass an argument to the type checker ' +
            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +
            'shape all require an argument).'
          );
        }
        if (error instanceof Error && !(error.message in loggedTypeFailures)) {
          // Only monitor this failure once because there tends to be a lot of the
          // same error.
          loggedTypeFailures[error.message] = true;

          var stack = getStack ? getStack() : '';

          printWarning(
            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')
          );
        }
      }
    }
  }
}

/**
 * Resets warning cache when testing.
 *
 * @private
 */
checkPropTypes.resetWarningCache = function() {
  if (true) {
    loggedTypeFailures = {};
  }
}

module.exports = checkPropTypes;


/***/ }),

/***/ "../node_modules/prop-types/factoryWithTypeCheckers.js":
/*!*************************************************************!*\
  !*** ../node_modules/prop-types/factoryWithTypeCheckers.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/react-is/index.js");
var assign = __webpack_require__(/*! object-assign */ "../node_modules/object-assign/index.js");

var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js");
var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "../node_modules/prop-types/checkPropTypes.js");

var has = Function.call.bind(Object.prototype.hasOwnProperty);
var printWarning = function() {};

if (true) {
  printWarning = function(text) {
    var message = 'Warning: ' + text;
    if (typeof console !== 'undefined') {
      console.error(message);
    }
    try {
      // --- Welcome to debugging React ---
      // This error was thrown as a convenience so that you can use this stack
      // to find the callsite that caused this warning to fire.
      throw new Error(message);
    } catch (x) {}
  };
}

function emptyFunctionThatReturnsNull() {
  return null;
}

module.exports = function(isValidElement, throwOnDirectAccess) {
  /* global Symbol */
  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.

  /**
   * Returns the iterator method function contained on the iterable object.
   *
   * Be sure to invoke the function with the iterable as context:
   *
   *     var iteratorFn = getIteratorFn(myIterable);
   *     if (iteratorFn) {
   *       var iterator = iteratorFn.call(myIterable);
   *       ...
   *     }
   *
   * @param {?object} maybeIterable
   * @return {?function}
   */
  function getIteratorFn(maybeIterable) {
    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
    if (typeof iteratorFn === 'function') {
      return iteratorFn;
    }
  }

  /**
   * Collection of methods that allow declaration and validation of props that are
   * supplied to React components. Example usage:
   *
   *   var Props = require('ReactPropTypes');
   *   var MyArticle = React.createClass({
   *     propTypes: {
   *       // An optional string prop named "description".
   *       description: Props.string,
   *
   *       // A required enum prop named "category".
   *       category: Props.oneOf(['News','Photos']).isRequired,
   *
   *       // A prop named "dialog" that requires an instance of Dialog.
   *       dialog: Props.instanceOf(Dialog).isRequired
   *     },
   *     render: function() { ... }
   *   });
   *
   * A more formal specification of how these methods are used:
   *
   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
   *   decl := ReactPropTypes.{type}(.isRequired)?
   *
   * Each and every declaration produces a function with the same signature. This
   * allows the creation of custom validation functions. For example:
   *
   *  var MyLink = React.createClass({
   *    propTypes: {
   *      // An optional string or URI prop named "href".
   *      href: function(props, propName, componentName) {
   *        var propValue = props[propName];
   *        if (propValue != null && typeof propValue !== 'string' &&
   *            !(propValue instanceof URI)) {
   *          return new Error(
   *            'Expected a string or an URI for ' + propName + ' in ' +
   *            componentName
   *          );
   *        }
   *      }
   *    },
   *    render: function() {...}
   *  });
   *
   * @internal
   */

  var ANONYMOUS = '<<anonymous>>';

  // Important!
  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
  var ReactPropTypes = {
    array: createPrimitiveTypeChecker('array'),
    bool: createPrimitiveTypeChecker('boolean'),
    func: createPrimitiveTypeChecker('function'),
    number: createPrimitiveTypeChecker('number'),
    object: createPrimitiveTypeChecker('object'),
    string: createPrimitiveTypeChecker('string'),
    symbol: createPrimitiveTypeChecker('symbol'),

    any: createAnyTypeChecker(),
    arrayOf: createArrayOfTypeChecker,
    element: createElementTypeChecker(),
    elementType: createElementTypeTypeChecker(),
    instanceOf: createInstanceTypeChecker,
    node: createNodeChecker(),
    objectOf: createObjectOfTypeChecker,
    oneOf: createEnumTypeChecker,
    oneOfType: createUnionTypeChecker,
    shape: createShapeTypeChecker,
    exact: createStrictShapeTypeChecker,
  };

  /**
   * inlined Object.is polyfill to avoid requiring consumers ship their own
   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
   */
  /*eslint-disable no-self-compare*/
  function is(x, y) {
    // SameValue algorithm
    if (x === y) {
      // Steps 1-5, 7-10
      // Steps 6.b-6.e: +0 != -0
      return x !== 0 || 1 / x === 1 / y;
    } else {
      // Step 6.a: NaN == NaN
      return x !== x && y !== y;
    }
  }
  /*eslint-enable no-self-compare*/

  /**
   * We use an Error-like object for backward compatibility as people may call
   * PropTypes directly and inspect their output. However, we don't use real
   * Errors anymore. We don't inspect their stack anyway, and creating them
   * is prohibitively expensive if they are created too often, such as what
   * happens in oneOfType() for any type before the one that matched.
   */
  function PropTypeError(message) {
    this.message = message;
    this.stack = '';
  }
  // Make `instanceof Error` still work for returned errors.
  PropTypeError.prototype = Error.prototype;

  function createChainableTypeChecker(validate) {
    if (true) {
      var manualPropTypeCallCache = {};
      var manualPropTypeWarningCount = 0;
    }
    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
      componentName = componentName || ANONYMOUS;
      propFullName = propFullName || propName;

      if (secret !== ReactPropTypesSecret) {
        if (throwOnDirectAccess) {
          // New behavior only for users of `prop-types` package
          var err = new Error(
            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
            'Use `PropTypes.checkPropTypes()` to call them. ' +
            'Read more at http://fb.me/use-check-prop-types'
          );
          err.name = 'Invariant Violation';
          throw err;
        } else if ( true && typeof console !== 'undefined') {
          // Old behavior for people using React.PropTypes
          var cacheKey = componentName + ':' + propName;
          if (
            !manualPropTypeCallCache[cacheKey] &&
            // Avoid spamming the console because they are often not actionable except for lib authors
            manualPropTypeWarningCount < 3
          ) {
            printWarning(
              'You are manually calling a React.PropTypes validation ' +
              'function for the `' + propFullName + '` prop on `' + componentName  + '`. This is deprecated ' +
              'and will throw in the standalone `prop-types` package. ' +
              'You may be seeing this warning due to a third-party PropTypes ' +
              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'
            );
            manualPropTypeCallCache[cacheKey] = true;
            manualPropTypeWarningCount++;
          }
        }
      }
      if (props[propName] == null) {
        if (isRequired) {
          if (props[propName] === null) {
            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
          }
          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
        }
        return null;
      } else {
        return validate(props, propName, componentName, location, propFullName);
      }
    }

    var chainedCheckType = checkType.bind(null, false);
    chainedCheckType.isRequired = checkType.bind(null, true);

    return chainedCheckType;
  }

  function createPrimitiveTypeChecker(expectedType) {
    function validate(props, propName, componentName, location, propFullName, secret) {
      var propValue = props[propName];
      var propType = getPropType(propValue);
      if (propType !== expectedType) {
        // `propValue` being instance of, say, date/regexp, pass the 'object'
        // check, but we can offer a more precise error message here rather than
        // 'of type `object`'.
        var preciseType = getPreciseType(propValue);

        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createAnyTypeChecker() {
    return createChainableTypeChecker(emptyFunctionThatReturnsNull);
  }

  function createArrayOfTypeChecker(typeChecker) {
    function validate(props, propName, componentName, location, propFullName) {
      if (typeof typeChecker !== 'function') {
        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
      }
      var propValue = props[propName];
      if (!Array.isArray(propValue)) {
        var propType = getPropType(propValue);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
      }
      for (var i = 0; i < propValue.length; i++) {
        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
        if (error instanceof Error) {
          return error;
        }
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createElementTypeChecker() {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      if (!isValidElement(propValue)) {
        var propType = getPropType(propValue);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createElementTypeTypeChecker() {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      if (!ReactIs.isValidElementType(propValue)) {
        var propType = getPropType(propValue);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createInstanceTypeChecker(expectedClass) {
    function validate(props, propName, componentName, location, propFullName) {
      if (!(props[propName] instanceof expectedClass)) {
        var expectedClassName = expectedClass.name || ANONYMOUS;
        var actualClassName = getClassName(props[propName]);
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createEnumTypeChecker(expectedValues) {
    if (!Array.isArray(expectedValues)) {
      if (true) {
        if (arguments.length > 1) {
          printWarning(
            'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +
            'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'
          );
        } else {
          printWarning('Invalid argument supplied to oneOf, expected an array.');
        }
      }
      return emptyFunctionThatReturnsNull;
    }

    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      for (var i = 0; i < expectedValues.length; i++) {
        if (is(propValue, expectedValues[i])) {
          return null;
        }
      }

      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {
        var type = getPreciseType(value);
        if (type === 'symbol') {
          return String(value);
        }
        return value;
      });
      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
    }
    return createChainableTypeChecker(validate);
  }

  function createObjectOfTypeChecker(typeChecker) {
    function validate(props, propName, componentName, location, propFullName) {
      if (typeof typeChecker !== 'function') {
        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
      }
      var propValue = props[propName];
      var propType = getPropType(propValue);
      if (propType !== 'object') {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
      }
      for (var key in propValue) {
        if (has(propValue, key)) {
          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
          if (error instanceof Error) {
            return error;
          }
        }
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createUnionTypeChecker(arrayOfTypeCheckers) {
    if (!Array.isArray(arrayOfTypeCheckers)) {
       true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0;
      return emptyFunctionThatReturnsNull;
    }

    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
      var checker = arrayOfTypeCheckers[i];
      if (typeof checker !== 'function') {
        printWarning(
          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +
          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'
        );
        return emptyFunctionThatReturnsNull;
      }
    }

    function validate(props, propName, componentName, location, propFullName) {
      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
        var checker = arrayOfTypeCheckers[i];
        if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {
          return null;
        }
      }

      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));
    }
    return createChainableTypeChecker(validate);
  }

  function createNodeChecker() {
    function validate(props, propName, componentName, location, propFullName) {
      if (!isNode(props[propName])) {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createShapeTypeChecker(shapeTypes) {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      var propType = getPropType(propValue);
      if (propType !== 'object') {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
      }
      for (var key in shapeTypes) {
        var checker = shapeTypes[key];
        if (!checker) {
          continue;
        }
        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
        if (error) {
          return error;
        }
      }
      return null;
    }
    return createChainableTypeChecker(validate);
  }

  function createStrictShapeTypeChecker(shapeTypes) {
    function validate(props, propName, componentName, location, propFullName) {
      var propValue = props[propName];
      var propType = getPropType(propValue);
      if (propType !== 'object') {
        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
      }
      // We need to check all keys in case some are required but missing from
      // props.
      var allKeys = assign({}, props[propName], shapeTypes);
      for (var key in allKeys) {
        var checker = shapeTypes[key];
        if (!checker) {
          return new PropTypeError(
            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +
            '\nBad object: ' + JSON.stringify(props[propName], null, '  ') +
            '\nValid keys: ' +  JSON.stringify(Object.keys(shapeTypes), null, '  ')
          );
        }
        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
        if (error) {
          return error;
        }
      }
      return null;
    }

    return createChainableTypeChecker(validate);
  }

  function isNode(propValue) {
    switch (typeof propValue) {
      case 'number':
      case 'string':
      case 'undefined':
        return true;
      case 'boolean':
        return !propValue;
      case 'object':
        if (Array.isArray(propValue)) {
          return propValue.every(isNode);
        }
        if (propValue === null || isValidElement(propValue)) {
          return true;
        }

        var iteratorFn = getIteratorFn(propValue);
        if (iteratorFn) {
          var iterator = iteratorFn.call(propValue);
          var step;
          if (iteratorFn !== propValue.entries) {
            while (!(step = iterator.next()).done) {
              if (!isNode(step.value)) {
                return false;
              }
            }
          } else {
            // Iterator will provide entry [k,v] tuples rather than values.
            while (!(step = iterator.next()).done) {
              var entry = step.value;
              if (entry) {
                if (!isNode(entry[1])) {
                  return false;
                }
              }
            }
          }
        } else {
          return false;
        }

        return true;
      default:
        return false;
    }
  }

  function isSymbol(propType, propValue) {
    // Native Symbol.
    if (propType === 'symbol') {
      return true;
    }

    // falsy value can't be a Symbol
    if (!propValue) {
      return false;
    }

    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
    if (propValue['@@toStringTag'] === 'Symbol') {
      return true;
    }

    // Fallback for non-spec compliant Symbols which are polyfilled.
    if (typeof Symbol === 'function' && propValue instanceof Symbol) {
      return true;
    }

    return false;
  }

  // Equivalent of `typeof` but with special handling for array and regexp.
  function getPropType(propValue) {
    var propType = typeof propValue;
    if (Array.isArray(propValue)) {
      return 'array';
    }
    if (propValue instanceof RegExp) {
      // Old webkits (at least until Android 4.0) return 'function' rather than
      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
      // passes PropTypes.object.
      return 'object';
    }
    if (isSymbol(propType, propValue)) {
      return 'symbol';
    }
    return propType;
  }

  // This handles more types than `getPropType`. Only used for error messages.
  // See `createPrimitiveTypeChecker`.
  function getPreciseType(propValue) {
    if (typeof propValue === 'undefined' || propValue === null) {
      return '' + propValue;
    }
    var propType = getPropType(propValue);
    if (propType === 'object') {
      if (propValue instanceof Date) {
        return 'date';
      } else if (propValue instanceof RegExp) {
        return 'regexp';
      }
    }
    return propType;
  }

  // Returns a string that is postfixed to a warning about an invalid type.
  // For example, "undefined" or "of type array"
  function getPostfixForTypeWarning(value) {
    var type = getPreciseType(value);
    switch (type) {
      case 'array':
      case 'object':
        return 'an ' + type;
      case 'boolean':
      case 'date':
      case 'regexp':
        return 'a ' + type;
      default:
        return type;
    }
  }

  // Returns class name of the object, if any.
  function getClassName(propValue) {
    if (!propValue.constructor || !propValue.constructor.name) {
      return ANONYMOUS;
    }
    return propValue.constructor.name;
  }

  ReactPropTypes.checkPropTypes = checkPropTypes;
  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;
  ReactPropTypes.PropTypes = ReactPropTypes;

  return ReactPropTypes;
};


/***/ }),

/***/ "../node_modules/prop-types/index.js":
/*!*******************************************!*\
  !*** ../node_modules/prop-types/index.js ***!
  \*******************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

if (true) {
  var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/react-is/index.js");

  // By explicitly using `prop-types` you are opting into new development behavior.
  // http://fb.me/prop-types-in-prod
  var throwOnDirectAccess = true;
  module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "../node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess);
} else {}


/***/ }),

/***/ "../node_modules/prop-types/lib/ReactPropTypesSecret.js":
/*!**************************************************************!*\
  !*** ../node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
  \**************************************************************/
/***/ ((module) => {

"use strict";
/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */



var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';

module.exports = ReactPropTypesSecret;


/***/ }),

/***/ "../node_modules/react-is/cjs/react-is.development.js":
/*!************************************************************!*\
  !*** ../node_modules/react-is/cjs/react-is.development.js ***!
  \************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";
/** @license React v16.13.1
 * react-is.development.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */





if (true) {
  (function() {
'use strict';

// The Symbol used to tag the ReactElement-like types. If there is no native Symbol
// nor polyfill, then a plain number is used for performance.
var hasSymbol = typeof Symbol === 'function' && Symbol.for;
var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
// (unstable) APIs that have been removed. Can we remove the symbols?

var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;
var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;

function isValidElementType(type) {
  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
}

function typeOf(object) {
  if (typeof object === 'object' && object !== null) {
    var $$typeof = object.$$typeof;

    switch ($$typeof) {
      case REACT_ELEMENT_TYPE:
        var type = object.type;

        switch (type) {
          case REACT_ASYNC_MODE_TYPE:
          case REACT_CONCURRENT_MODE_TYPE:
          case REACT_FRAGMENT_TYPE:
          case REACT_PROFILER_TYPE:
          case REACT_STRICT_MODE_TYPE:
          case REACT_SUSPENSE_TYPE:
            return type;

          default:
            var $$typeofType = type && type.$$typeof;

            switch ($$typeofType) {
              case REACT_CONTEXT_TYPE:
              case REACT_FORWARD_REF_TYPE:
              case REACT_LAZY_TYPE:
              case REACT_MEMO_TYPE:
              case REACT_PROVIDER_TYPE:
                return $$typeofType;

              default:
                return $$typeof;
            }

        }

      case REACT_PORTAL_TYPE:
        return $$typeof;
    }
  }

  return undefined;
} // AsyncMode is deprecated along with isAsyncMode

var AsyncMode = REACT_ASYNC_MODE_TYPE;
var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
var ContextConsumer = REACT_CONTEXT_TYPE;
var ContextProvider = REACT_PROVIDER_TYPE;
var Element = REACT_ELEMENT_TYPE;
var ForwardRef = REACT_FORWARD_REF_TYPE;
var Fragment = REACT_FRAGMENT_TYPE;
var Lazy = REACT_LAZY_TYPE;
var Memo = REACT_MEMO_TYPE;
var Portal = REACT_PORTAL_TYPE;
var Profiler = REACT_PROFILER_TYPE;
var StrictMode = REACT_STRICT_MODE_TYPE;
var Suspense = REACT_SUSPENSE_TYPE;
var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated

function isAsyncMode(object) {
  {
    if (!hasWarnedAboutDeprecatedIsAsyncMode) {
      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint

      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');
    }
  }

  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
}
function isConcurrentMode(object) {
  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
}
function isContextConsumer(object) {
  return typeOf(object) === REACT_CONTEXT_TYPE;
}
function isContextProvider(object) {
  return typeOf(object) === REACT_PROVIDER_TYPE;
}
function isElement(object) {
  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
}
function isForwardRef(object) {
  return typeOf(object) === REACT_FORWARD_REF_TYPE;
}
function isFragment(object) {
  return typeOf(object) === REACT_FRAGMENT_TYPE;
}
function isLazy(object) {
  return typeOf(object) === REACT_LAZY_TYPE;
}
function isMemo(object) {
  return typeOf(object) === REACT_MEMO_TYPE;
}
function isPortal(object) {
  return typeOf(object) === REACT_PORTAL_TYPE;
}
function isProfiler(object) {
  return typeOf(object) === REACT_PROFILER_TYPE;
}
function isStrictMode(object) {
  return typeOf(object) === REACT_STRICT_MODE_TYPE;
}
function isSuspense(object) {
  return typeOf(object) === REACT_SUSPENSE_TYPE;
}

exports.AsyncMode = AsyncMode;
exports.ConcurrentMode = ConcurrentMode;
exports.ContextConsumer = ContextConsumer;
exports.ContextProvider = ContextProvider;
exports.Element = Element;
exports.ForwardRef = ForwardRef;
exports.Fragment = Fragment;
exports.Lazy = Lazy;
exports.Memo = Memo;
exports.Portal = Portal;
exports.Profiler = Profiler;
exports.StrictMode = StrictMode;
exports.Suspense = Suspense;
exports.isAsyncMode = isAsyncMode;
exports.isConcurrentMode = isConcurrentMode;
exports.isContextConsumer = isContextConsumer;
exports.isContextProvider = isContextProvider;
exports.isElement = isElement;
exports.isForwardRef = isForwardRef;
exports.isFragment = isFragment;
exports.isLazy = isLazy;
exports.isMemo = isMemo;
exports.isPortal = isPortal;
exports.isProfiler = isProfiler;
exports.isStrictMode = isStrictMode;
exports.isSuspense = isSuspense;
exports.isValidElementType = isValidElementType;
exports.typeOf = typeOf;
  })();
}


/***/ }),

/***/ "../node_modules/react-is/index.js":
/*!*****************************************!*\
  !*** ../node_modules/react-is/index.js ***!
  \*****************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


if (false) {} else {
  module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "../node_modules/react-is/cjs/react-is.development.js");
}


/***/ }),

/***/ "../node_modules/regenerator-runtime/runtime.js":
/*!******************************************************!*\
  !*** ../node_modules/regenerator-runtime/runtime.js ***!
  \******************************************************/
/***/ ((module) => {

/**
 * Copyright (c) 2014-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

var runtime = (function (exports) {
  "use strict";

  var Op = Object.prototype;
  var hasOwn = Op.hasOwnProperty;
  var undefined; // More compressible than void 0.
  var $Symbol = typeof Symbol === "function" ? Symbol : {};
  var iteratorSymbol = $Symbol.iterator || "@@iterator";
  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";

  function define(obj, key, value) {
    Object.defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
    return obj[key];
  }
  try {
    // IE 8 has a broken Object.defineProperty that only works on DOM objects.
    define({}, "");
  } catch (err) {
    define = function(obj, key, value) {
      return obj[key] = value;
    };
  }

  function wrap(innerFn, outerFn, self, tryLocsList) {
    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
    var generator = Object.create(protoGenerator.prototype);
    var context = new Context(tryLocsList || []);

    // The ._invoke method unifies the implementations of the .next,
    // .throw, and .return methods.
    generator._invoke = makeInvokeMethod(innerFn, self, context);

    return generator;
  }
  exports.wrap = wrap;

  // Try/catch helper to minimize deoptimizations. Returns a completion
  // record like context.tryEntries[i].completion. This interface could
  // have been (and was previously) designed to take a closure to be
  // invoked without arguments, but in all the cases we care about we
  // already have an existing method we want to call, so there's no need
  // to create a new function object. We can even get away with assuming
  // the method takes exactly one argument, since that happens to be true
  // in every case, so we don't have to touch the arguments object. The
  // only additional allocation required is the completion record, which
  // has a stable shape and so hopefully should be cheap to allocate.
  function tryCatch(fn, obj, arg) {
    try {
      return { type: "normal", arg: fn.call(obj, arg) };
    } catch (err) {
      return { type: "throw", arg: err };
    }
  }

  var GenStateSuspendedStart = "suspendedStart";
  var GenStateSuspendedYield = "suspendedYield";
  var GenStateExecuting = "executing";
  var GenStateCompleted = "completed";

  // Returning this object from the innerFn has the same effect as
  // breaking out of the dispatch switch statement.
  var ContinueSentinel = {};

  // Dummy constructor functions that we use as the .constructor and
  // .constructor.prototype properties for functions that return Generator
  // objects. For full spec compliance, you may wish to configure your
  // minifier not to mangle the names of these two functions.
  function Generator() {}
  function GeneratorFunction() {}
  function GeneratorFunctionPrototype() {}

  // This is a polyfill for %IteratorPrototype% for environments that
  // don't natively support it.
  var IteratorPrototype = {};
  IteratorPrototype[iteratorSymbol] = function () {
    return this;
  };

  var getProto = Object.getPrototypeOf;
  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
  if (NativeIteratorPrototype &&
      NativeIteratorPrototype !== Op &&
      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
    // This environment has a native %IteratorPrototype%; use it instead
    // of the polyfill.
    IteratorPrototype = NativeIteratorPrototype;
  }

  var Gp = GeneratorFunctionPrototype.prototype =
    Generator.prototype = Object.create(IteratorPrototype);
  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
  GeneratorFunctionPrototype.constructor = GeneratorFunction;
  GeneratorFunction.displayName = define(
    GeneratorFunctionPrototype,
    toStringTagSymbol,
    "GeneratorFunction"
  );

  // Helper for defining the .next, .throw, and .return methods of the
  // Iterator interface in terms of a single ._invoke method.
  function defineIteratorMethods(prototype) {
    ["next", "throw", "return"].forEach(function(method) {
      define(prototype, method, function(arg) {
        return this._invoke(method, arg);
      });
    });
  }

  exports.isGeneratorFunction = function(genFun) {
    var ctor = typeof genFun === "function" && genFun.constructor;
    return ctor
      ? ctor === GeneratorFunction ||
        // For the native GeneratorFunction constructor, the best we can
        // do is to check its .name property.
        (ctor.displayName || ctor.name) === "GeneratorFunction"
      : false;
  };

  exports.mark = function(genFun) {
    if (Object.setPrototypeOf) {
      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
    } else {
      genFun.__proto__ = GeneratorFunctionPrototype;
      define(genFun, toStringTagSymbol, "GeneratorFunction");
    }
    genFun.prototype = Object.create(Gp);
    return genFun;
  };

  // Within the body of any async function, `await x` is transformed to
  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
  // `hasOwn.call(value, "__await")` to determine if the yielded value is
  // meant to be awaited.
  exports.awrap = function(arg) {
    return { __await: arg };
  };

  function AsyncIterator(generator, PromiseImpl) {
    function invoke(method, arg, resolve, reject) {
      var record = tryCatch(generator[method], generator, arg);
      if (record.type === "throw") {
        reject(record.arg);
      } else {
        var result = record.arg;
        var value = result.value;
        if (value &&
            typeof value === "object" &&
            hasOwn.call(value, "__await")) {
          return PromiseImpl.resolve(value.__await).then(function(value) {
            invoke("next", value, resolve, reject);
          }, function(err) {
            invoke("throw", err, resolve, reject);
          });
        }

        return PromiseImpl.resolve(value).then(function(unwrapped) {
          // When a yielded Promise is resolved, its final value becomes
          // the .value of the Promise<{value,done}> result for the
          // current iteration.
          result.value = unwrapped;
          resolve(result);
        }, function(error) {
          // If a rejected Promise was yielded, throw the rejection back
          // into the async generator function so it can be handled there.
          return invoke("throw", error, resolve, reject);
        });
      }
    }

    var previousPromise;

    function enqueue(method, arg) {
      function callInvokeWithMethodAndArg() {
        return new PromiseImpl(function(resolve, reject) {
          invoke(method, arg, resolve, reject);
        });
      }

      return previousPromise =
        // If enqueue has been called before, then we want to wait until
        // all previous Promises have been resolved before calling invoke,
        // so that results are always delivered in the correct order. If
        // enqueue has not been called before, then it is important to
        // call invoke immediately, without waiting on a callback to fire,
        // so that the async generator function has the opportunity to do
        // any necessary setup in a predictable way. This predictability
        // is why the Promise constructor synchronously invokes its
        // executor callback, and why async functions synchronously
        // execute code before the first await. Since we implement simple
        // async functions in terms of async generators, it is especially
        // important to get this right, even though it requires care.
        previousPromise ? previousPromise.then(
          callInvokeWithMethodAndArg,
          // Avoid propagating failures to Promises returned by later
          // invocations of the iterator.
          callInvokeWithMethodAndArg
        ) : callInvokeWithMethodAndArg();
    }

    // Define the unified helper method that is used to implement .next,
    // .throw, and .return (see defineIteratorMethods).
    this._invoke = enqueue;
  }

  defineIteratorMethods(AsyncIterator.prototype);
  AsyncIterator.prototype[asyncIteratorSymbol] = function () {
    return this;
  };
  exports.AsyncIterator = AsyncIterator;

  // Note that simple async functions are implemented on top of
  // AsyncIterator objects; they just return a Promise for the value of
  // the final result produced by the iterator.
  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {
    if (PromiseImpl === void 0) PromiseImpl = Promise;

    var iter = new AsyncIterator(
      wrap(innerFn, outerFn, self, tryLocsList),
      PromiseImpl
    );

    return exports.isGeneratorFunction(outerFn)
      ? iter // If outerFn is a generator, return the full iterator.
      : iter.next().then(function(result) {
          return result.done ? result.value : iter.next();
        });
  };

  function makeInvokeMethod(innerFn, self, context) {
    var state = GenStateSuspendedStart;

    return function invoke(method, arg) {
      if (state === GenStateExecuting) {
        throw new Error("Generator is already running");
      }

      if (state === GenStateCompleted) {
        if (method === "throw") {
          throw arg;
        }

        // Be forgiving, per 25.3.3.3.3 of the spec:
        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
        return doneResult();
      }

      context.method = method;
      context.arg = arg;

      while (true) {
        var delegate = context.delegate;
        if (delegate) {
          var delegateResult = maybeInvokeDelegate(delegate, context);
          if (delegateResult) {
            if (delegateResult === ContinueSentinel) continue;
            return delegateResult;
          }
        }

        if (context.method === "next") {
          // Setting context._sent for legacy support of Babel's
          // function.sent implementation.
          context.sent = context._sent = context.arg;

        } else if (context.method === "throw") {
          if (state === GenStateSuspendedStart) {
            state = GenStateCompleted;
            throw context.arg;
          }

          context.dispatchException(context.arg);

        } else if (context.method === "return") {
          context.abrupt("return", context.arg);
        }

        state = GenStateExecuting;

        var record = tryCatch(innerFn, self, context);
        if (record.type === "normal") {
          // If an exception is thrown from innerFn, we leave state ===
          // GenStateExecuting and loop back for another invocation.
          state = context.done
            ? GenStateCompleted
            : GenStateSuspendedYield;

          if (record.arg === ContinueSentinel) {
            continue;
          }

          return {
            value: record.arg,
            done: context.done
          };

        } else if (record.type === "throw") {
          state = GenStateCompleted;
          // Dispatch the exception by looping back around to the
          // context.dispatchException(context.arg) call above.
          context.method = "throw";
          context.arg = record.arg;
        }
      }
    };
  }

  // Call delegate.iterator[context.method](context.arg) and handle the
  // result, either by returning a { value, done } result from the
  // delegate iterator, or by modifying context.method and context.arg,
  // setting context.delegate to null, and returning the ContinueSentinel.
  function maybeInvokeDelegate(delegate, context) {
    var method = delegate.iterator[context.method];
    if (method === undefined) {
      // A .throw or .return when the delegate iterator has no .throw
      // method always terminates the yield* loop.
      context.delegate = null;

      if (context.method === "throw") {
        // Note: ["return"] must be used for ES3 parsing compatibility.
        if (delegate.iterator["return"]) {
          // If the delegate iterator has a return method, give it a
          // chance to clean up.
          context.method = "return";
          context.arg = undefined;
          maybeInvokeDelegate(delegate, context);

          if (context.method === "throw") {
            // If maybeInvokeDelegate(context) changed context.method from
            // "return" to "throw", let that override the TypeError below.
            return ContinueSentinel;
          }
        }

        context.method = "throw";
        context.arg = new TypeError(
          "The iterator does not provide a 'throw' method");
      }

      return ContinueSentinel;
    }

    var record = tryCatch(method, delegate.iterator, context.arg);

    if (record.type === "throw") {
      context.method = "throw";
      context.arg = record.arg;
      context.delegate = null;
      return ContinueSentinel;
    }

    var info = record.arg;

    if (! info) {
      context.method = "throw";
      context.arg = new TypeError("iterator result is not an object");
      context.delegate = null;
      return ContinueSentinel;
    }

    if (info.done) {
      // Assign the result of the finished delegate to the temporary
      // variable specified by delegate.resultName (see delegateYield).
      context[delegate.resultName] = info.value;

      // Resume execution at the desired location (see delegateYield).
      context.next = delegate.nextLoc;

      // If context.method was "throw" but the delegate handled the
      // exception, let the outer generator proceed normally. If
      // context.method was "next", forget context.arg since it has been
      // "consumed" by the delegate iterator. If context.method was
      // "return", allow the original .return call to continue in the
      // outer generator.
      if (context.method !== "return") {
        context.method = "next";
        context.arg = undefined;
      }

    } else {
      // Re-yield the result returned by the delegate method.
      return info;
    }

    // The delegate iterator is finished, so forget it and continue with
    // the outer generator.
    context.delegate = null;
    return ContinueSentinel;
  }

  // Define Generator.prototype.{next,throw,return} in terms of the
  // unified ._invoke helper method.
  defineIteratorMethods(Gp);

  define(Gp, toStringTagSymbol, "Generator");

  // A Generator should always return itself as the iterator object when the
  // @@iterator function is called on it. Some browsers' implementations of the
  // iterator prototype chain incorrectly implement this, causing the Generator
  // object to not be returned from this call. This ensures that doesn't happen.
  // See https://github.com/facebook/regenerator/issues/274 for more details.
  Gp[iteratorSymbol] = function() {
    return this;
  };

  Gp.toString = function() {
    return "[object Generator]";
  };

  function pushTryEntry(locs) {
    var entry = { tryLoc: locs[0] };

    if (1 in locs) {
      entry.catchLoc = locs[1];
    }

    if (2 in locs) {
      entry.finallyLoc = locs[2];
      entry.afterLoc = locs[3];
    }

    this.tryEntries.push(entry);
  }

  function resetTryEntry(entry) {
    var record = entry.completion || {};
    record.type = "normal";
    delete record.arg;
    entry.completion = record;
  }

  function Context(tryLocsList) {
    // The root entry object (effectively a try statement without a catch
    // or a finally block) gives us a place to store values thrown from
    // locations where there is no enclosing try statement.
    this.tryEntries = [{ tryLoc: "root" }];
    tryLocsList.forEach(pushTryEntry, this);
    this.reset(true);
  }

  exports.keys = function(object) {
    var keys = [];
    for (var key in object) {
      keys.push(key);
    }
    keys.reverse();

    // Rather than returning an object with a next method, we keep
    // things simple and return the next function itself.
    return function next() {
      while (keys.length) {
        var key = keys.pop();
        if (key in object) {
          next.value = key;
          next.done = false;
          return next;
        }
      }

      // To avoid creating an additional object, we just hang the .value
      // and .done properties off the next function object itself. This
      // also ensures that the minifier will not anonymize the function.
      next.done = true;
      return next;
    };
  };

  function values(iterable) {
    if (iterable) {
      var iteratorMethod = iterable[iteratorSymbol];
      if (iteratorMethod) {
        return iteratorMethod.call(iterable);
      }

      if (typeof iterable.next === "function") {
        return iterable;
      }

      if (!isNaN(iterable.length)) {
        var i = -1, next = function next() {
          while (++i < iterable.length) {
            if (hasOwn.call(iterable, i)) {
              next.value = iterable[i];
              next.done = false;
              return next;
            }
          }

          next.value = undefined;
          next.done = true;

          return next;
        };

        return next.next = next;
      }
    }

    // Return an iterator with no values.
    return { next: doneResult };
  }
  exports.values = values;

  function doneResult() {
    return { value: undefined, done: true };
  }

  Context.prototype = {
    constructor: Context,

    reset: function(skipTempReset) {
      this.prev = 0;
      this.next = 0;
      // Resetting context._sent for legacy support of Babel's
      // function.sent implementation.
      this.sent = this._sent = undefined;
      this.done = false;
      this.delegate = null;

      this.method = "next";
      this.arg = undefined;

      this.tryEntries.forEach(resetTryEntry);

      if (!skipTempReset) {
        for (var name in this) {
          // Not sure about the optimal order of these conditions:
          if (name.charAt(0) === "t" &&
              hasOwn.call(this, name) &&
              !isNaN(+name.slice(1))) {
            this[name] = undefined;
          }
        }
      }
    },

    stop: function() {
      this.done = true;

      var rootEntry = this.tryEntries[0];
      var rootRecord = rootEntry.completion;
      if (rootRecord.type === "throw") {
        throw rootRecord.arg;
      }

      return this.rval;
    },

    dispatchException: function(exception) {
      if (this.done) {
        throw exception;
      }

      var context = this;
      function handle(loc, caught) {
        record.type = "throw";
        record.arg = exception;
        context.next = loc;

        if (caught) {
          // If the dispatched exception was caught by a catch block,
          // then let that catch block handle the exception normally.
          context.method = "next";
          context.arg = undefined;
        }

        return !! caught;
      }

      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        var record = entry.completion;

        if (entry.tryLoc === "root") {
          // Exception thrown outside of any try block that could handle
          // it, so set the completion value of the entire function to
          // throw the exception.
          return handle("end");
        }

        if (entry.tryLoc <= this.prev) {
          var hasCatch = hasOwn.call(entry, "catchLoc");
          var hasFinally = hasOwn.call(entry, "finallyLoc");

          if (hasCatch && hasFinally) {
            if (this.prev < entry.catchLoc) {
              return handle(entry.catchLoc, true);
            } else if (this.prev < entry.finallyLoc) {
              return handle(entry.finallyLoc);
            }

          } else if (hasCatch) {
            if (this.prev < entry.catchLoc) {
              return handle(entry.catchLoc, true);
            }

          } else if (hasFinally) {
            if (this.prev < entry.finallyLoc) {
              return handle(entry.finallyLoc);
            }

          } else {
            throw new Error("try statement without catch or finally");
          }
        }
      }
    },

    abrupt: function(type, arg) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.tryLoc <= this.prev &&
            hasOwn.call(entry, "finallyLoc") &&
            this.prev < entry.finallyLoc) {
          var finallyEntry = entry;
          break;
        }
      }

      if (finallyEntry &&
          (type === "break" ||
           type === "continue") &&
          finallyEntry.tryLoc <= arg &&
          arg <= finallyEntry.finallyLoc) {
        // Ignore the finally entry if control is not jumping to a
        // location outside the try/catch block.
        finallyEntry = null;
      }

      var record = finallyEntry ? finallyEntry.completion : {};
      record.type = type;
      record.arg = arg;

      if (finallyEntry) {
        this.method = "next";
        this.next = finallyEntry.finallyLoc;
        return ContinueSentinel;
      }

      return this.complete(record);
    },

    complete: function(record, afterLoc) {
      if (record.type === "throw") {
        throw record.arg;
      }

      if (record.type === "break" ||
          record.type === "continue") {
        this.next = record.arg;
      } else if (record.type === "return") {
        this.rval = this.arg = record.arg;
        this.method = "return";
        this.next = "end";
      } else if (record.type === "normal" && afterLoc) {
        this.next = afterLoc;
      }

      return ContinueSentinel;
    },

    finish: function(finallyLoc) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.finallyLoc === finallyLoc) {
          this.complete(entry.completion, entry.afterLoc);
          resetTryEntry(entry);
          return ContinueSentinel;
        }
      }
    },

    "catch": function(tryLoc) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.tryLoc === tryLoc) {
          var record = entry.completion;
          if (record.type === "throw") {
            var thrown = record.arg;
            resetTryEntry(entry);
          }
          return thrown;
        }
      }

      // The context.catch method must only be called with a location
      // argument that corresponds to a known catch block.
      throw new Error("illegal catch attempt");
    },

    delegateYield: function(iterable, resultName, nextLoc) {
      this.delegate = {
        iterator: values(iterable),
        resultName: resultName,
        nextLoc: nextLoc
      };

      if (this.method === "next") {
        // Deliberately forget the last sent value so that we don't
        // accidentally pass it on to the delegate.
        this.arg = undefined;
      }

      return ContinueSentinel;
    }
  };

  // Regardless of whether this script is executing as a CommonJS module
  // or not, return the runtime object so that we can declare the variable
  // regeneratorRuntime in the outer scope, which allows this module to be
  // injected easily by `bin/regenerator --include-runtime script.js`.
  return exports;

}(
  // If this script is executing as a CommonJS module, use module.exports
  // as the regeneratorRuntime namespace. Otherwise create a new empty
  // object. Either way, the resulting object will be used to initialize
  // the regeneratorRuntime variable at the top of this file.
   true ? module.exports : 0
));

try {
  regeneratorRuntime = runtime;
} catch (accidentalStrictMode) {
  // This module should not be running in strict mode, so the above
  // assignment should always work unless something is misconfigured. Just
  // in case runtime.js accidentally runs in strict mode, we can escape
  // strict mode using a global Function call. This could conceivably fail
  // if a Content Security Policy forbids using Function, but in that case
  // the proper solution is to fix the accidental strict mode problem. If
  // you've misconfigured your bundler to force strict mode and applied a
  // CSP to forbid Function, and you're not willing to fix either of those
  // problems, please detail your unique predicament in a GitHub issue.
  Function("r", "regeneratorRuntime = r")(runtime);
}


/***/ }),

/***/ "react":
/*!************************!*\
  !*** external "React" ***!
  \************************/
/***/ ((module) => {

"use strict";
module.exports = React;

/***/ }),

/***/ "@elementor/app-ui":
/*!*********************************************!*\
  !*** external "elementorAppPackages.appUi" ***!
  \*********************************************/
/***/ ((module) => {

"use strict";
module.exports = elementorAppPackages.appUi;

/***/ }),

/***/ "@wordpress/i18n":
/*!**************************!*\
  !*** external "wp.i18n" ***!
  \**************************/
/***/ ((module) => {

"use strict";
module.exports = wp.i18n;

/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
/******/ 	
/******/ 	// startup
/******/ 	// Load entry module and return exports
/******/ 	// This entry module is referenced by other modules so it can't be inlined
/******/ 	var __webpack_exports__ = __webpack_require__("../modules/custom-code/assets/js/admin/admin.js");
/******/ 	
/******/ })()
;
//# sourceMappingURL=custom-code.js.mapassets/js/hotspot.66952182f9ae91b6896c.bundle.js000064400000011670150755004310014503 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["hotspot"],{

/***/ "../modules/hotspot/assets/js/frontend/handlers/hotspot.js":
/*!*****************************************************************!*\
  !*** ../modules/hotspot/assets/js/frontend/handlers/hotspot.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class Hotspot extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        hotspot: '.e-hotspot',
        tooltip: '.e-hotspot__tooltip'
      }
    };
  }

  getDefaultElements() {
    const selectors = this.getSettings('selectors');
    return {
      $hotspot: this.$element.find(selectors.hotspot),
      $hotspotsExcludesLinks: this.$element.find(selectors.hotspot).filter(':not(.e-hotspot--no-tooltip)'),
      $tooltip: this.$element.find(selectors.tooltip)
    };
  }

  bindEvents() {
    const tooltipTrigger = this.getCurrentDeviceSetting('tooltip_trigger'),
          tooltipTriggerEvent = 'mouseenter' === tooltipTrigger ? 'mouseleave mouseenter' : tooltipTrigger;

    if (tooltipTriggerEvent !== 'none') {
      this.elements.$hotspotsExcludesLinks.on(tooltipTriggerEvent, event => this.onHotspotTriggerEvent(event));
    }
  }

  onDeviceModeChange() {
    this.elements.$hotspotsExcludesLinks.off();
    this.bindEvents();
  }

  onHotspotTriggerEvent(event) {
    const elementTarget = jQuery(event.target),
          isHotspotButtonEvent = elementTarget.closest('.e-hotspot__button').length,
          isTooltipMouseLeave = 'mouseleave' === event.type && (elementTarget.is('.e-hotspot--tooltip-position') || elementTarget.parents('.e-hotspot--tooltip-position').length),
          isMobile = 'mobile' === elementorFrontend.getCurrentDeviceMode(),
          isHotspotLink = elementTarget.closest('.e-hotspot--link').length,
          triggerTooltip = !(isHotspotLink && isMobile && ('mouseleave' === event.type || 'mouseenter' === event.type));

    if (triggerTooltip && (isHotspotButtonEvent || isTooltipMouseLeave)) {
      const currentHotspot = jQuery(event.currentTarget);
      this.elements.$hotspot.not(currentHotspot).removeClass('e-hotspot--active');
      currentHotspot.toggleClass('e-hotspot--active');
    }
  } // Fix bad UX of "Sequenced Animation" when editing other controls


  editorAddSequencedAnimation() {
    this.elements.$hotspot.toggleClass('e-hotspot--sequenced', 'yes' === this.getElementSettings('hotspot_sequenced_animation'));
  }

  hotspotSequencedAnimation() {
    const elementSettings = this.getElementSettings(),
          isSequencedAnimation = elementSettings.hotspot_sequenced_animation;

    if ('no' === isSequencedAnimation) {
      return;
    } //start sequenced animation when element on viewport


    const hotspotObserver = elementorModules.utils.Scroll.scrollObserver({
      callback: event => {
        if (event.isInViewport) {
          hotspotObserver.unobserve(this.$element[0]); //add delay for each hotspot

          this.elements.$hotspot.each((index, element) => {
            if (0 === index) {
              return;
            }

            const sequencedAnimation = elementSettings.hotspot_sequenced_animation_duration,
                  sequencedAnimationDuration = sequencedAnimation ? sequencedAnimation.size : 1000,
                  animationDelay = index * (sequencedAnimationDuration / this.elements.$hotspot.length);
            element.style.animationDelay = animationDelay + 'ms';
          });
        }
      }
    });
    hotspotObserver.observe(this.$element[0]);
  }

  setTooltipPositionControl() {
    const elementSettings = this.getElementSettings(),
          isDirectionAnimation = 'undefined' !== typeof elementSettings.tooltip_animation && elementSettings.tooltip_animation.match(/^e-hotspot--(slide|fade)-direction/);

    if (isDirectionAnimation) {
      this.elements.$tooltip.removeClass('e-hotspot--tooltip-animation-from-left e-hotspot--tooltip-animation-from-top e-hotspot--tooltip-animation-from-right e-hotspot--tooltip-animation-from-bottom');
      this.elements.$tooltip.addClass('e-hotspot--tooltip-animation-from-' + elementSettings.tooltip_position);
    }
  }

  onInit(...args) {
    super.onInit(...args);
    this.hotspotSequencedAnimation();
    this.setTooltipPositionControl();

    if (window.elementor) {
      elementor.listenTo(elementor.channels.deviceMode, 'change', () => this.onDeviceModeChange());
    }
  }

  onElementChange(propertyName) {
    if (propertyName.startsWith('tooltip_position')) {
      this.setTooltipPositionControl();
    }

    if (propertyName.startsWith('hotspot_sequenced_animation')) {
      this.editorAddSequencedAnimation();
    }
  }

}

exports.default = Hotspot;

/***/ })

}]);
//# sourceMappingURL=hotspot.66952182f9ae91b6896c.bundle.js.mapassets/js/portfolio.71a9b9fb42566ae496bd.bundle.js000064400000031373150755004310015225 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["portfolio"],{

/***/ "../modules/posts/assets/js/frontend/handlers/portfolio.js":
/*!*****************************************************************!*\
  !*** ../modules/posts/assets/js/frontend/handlers/portfolio.js ***!
  \*****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _posts = _interopRequireDefault(__webpack_require__(/*! ./posts */ "../modules/posts/assets/js/frontend/handlers/posts.js"));

var _default = _posts.default.extend({
  isActive(settings) {
    return settings.$element.find('.elementor-portfolio').length;
  },

  getSkinPrefix() {
    return '';
  },

  getDefaultSettings() {
    var settings = _posts.default.prototype.getDefaultSettings.apply(this, arguments);

    settings.transitionDuration = 450;
    jQuery.extend(settings.classes, {
      active: 'elementor-active',
      item: 'elementor-portfolio-item',
      ghostItem: 'elementor-portfolio-ghost-item'
    });
    return settings;
  },

  getDefaultElements() {
    var elements = _posts.default.prototype.getDefaultElements.apply(this, arguments);

    elements.$filterButtons = this.$element.find('.elementor-portfolio__filter');
    return elements;
  },

  getOffset(itemIndex, itemWidth, itemHeight) {
    var settings = this.getSettings(),
        itemGap = this.elements.$postsContainer.width() / settings.colsCount - itemWidth;
    itemGap += itemGap / (settings.colsCount - 1);
    return {
      start: (itemWidth + itemGap) * (itemIndex % settings.colsCount),
      top: (itemHeight + itemGap) * Math.floor(itemIndex / settings.colsCount)
    };
  },

  getClosureMethodsNames() {
    var baseClosureMethods = _posts.default.prototype.getClosureMethodsNames.apply(this, arguments);

    return baseClosureMethods.concat(['onFilterButtonClick']);
  },

  filterItems(term) {
    var $posts = this.elements.$posts,
        activeClass = this.getSettings('classes.active'),
        termSelector = '.elementor-filter-' + term;

    if ('__all' === term) {
      $posts.addClass(activeClass);
      return;
    }

    $posts.not(termSelector).removeClass(activeClass);
    $posts.filter(termSelector).addClass(activeClass);
  },

  removeExtraGhostItems() {
    var settings = this.getSettings(),
        $shownItems = this.elements.$posts.filter(':visible'),
        emptyColumns = (settings.colsCount - $shownItems.length % settings.colsCount) % settings.colsCount,
        $ghostItems = this.elements.$postsContainer.find('.' + settings.classes.ghostItem);
    $ghostItems.slice(emptyColumns).remove();
  },

  handleEmptyColumns() {
    this.removeExtraGhostItems();
    var settings = this.getSettings(),
        $shownItems = this.elements.$posts.filter(':visible'),
        $ghostItems = this.elements.$postsContainer.find('.' + settings.classes.ghostItem),
        emptyColumns = (settings.colsCount - ($shownItems.length + $ghostItems.length) % settings.colsCount) % settings.colsCount;

    for (var i = 0; i < emptyColumns; i++) {
      this.elements.$postsContainer.append(jQuery('<div>', {
        class: settings.classes.item + ' ' + settings.classes.ghostItem
      }));
    }
  },

  showItems($activeHiddenItems) {
    $activeHiddenItems.show();
    setTimeout(function () {
      $activeHiddenItems.css({
        opacity: 1
      });
    });
  },

  hideItems($inactiveShownItems) {
    $inactiveShownItems.hide();
  },

  arrangeGrid() {
    var $ = jQuery,
        self = this,
        settings = self.getSettings(),
        $activeItems = self.elements.$posts.filter('.' + settings.classes.active),
        $inactiveItems = self.elements.$posts.not('.' + settings.classes.active),
        $shownItems = self.elements.$posts.filter(':visible'),
        $activeOrShownItems = $activeItems.add($shownItems),
        $activeShownItems = $activeItems.filter(':visible'),
        $activeHiddenItems = $activeItems.filter(':hidden'),
        $inactiveShownItems = $inactiveItems.filter(':visible'),
        itemWidth = $shownItems.outerWidth(),
        itemHeight = $shownItems.outerHeight();
    self.elements.$posts.css('transition-duration', settings.transitionDuration + 'ms');
    self.showItems($activeHiddenItems);

    if (self.isEdit) {
      self.fitImages();
    }

    self.handleEmptyColumns();

    if (self.isMasonryEnabled()) {
      self.hideItems($inactiveShownItems);
      self.showItems($activeHiddenItems);
      self.handleEmptyColumns();
      self.runMasonry();
      return;
    }

    $inactiveShownItems.css({
      opacity: 0,
      transform: 'scale3d(0.2, 0.2, 1)'
    });
    $activeShownItems.each(function () {
      var $item = $(this),
          currentOffset = self.getOffset($activeOrShownItems.index($item), itemWidth, itemHeight),
          requiredOffset = self.getOffset($shownItems.index($item), itemWidth, itemHeight);

      if (currentOffset.start === requiredOffset.start && currentOffset.top === requiredOffset.top) {
        return;
      }

      requiredOffset.start -= currentOffset.start;
      requiredOffset.top -= currentOffset.top;

      if (elementorFrontend.config.is_rtl) {
        requiredOffset.start *= -1;
      }

      $item.css({
        transitionDuration: '',
        transform: 'translate3d(' + requiredOffset.start + 'px, ' + requiredOffset.top + 'px, 0)'
      });
    });
    setTimeout(function () {
      $activeItems.each(function () {
        var $item = $(this),
            currentOffset = self.getOffset($activeOrShownItems.index($item), itemWidth, itemHeight),
            requiredOffset = self.getOffset($activeItems.index($item), itemWidth, itemHeight);
        $item.css({
          transitionDuration: settings.transitionDuration + 'ms'
        });
        requiredOffset.start -= currentOffset.start;
        requiredOffset.top -= currentOffset.top;

        if (elementorFrontend.config.is_rtl) {
          requiredOffset.start *= -1;
        }

        setTimeout(function () {
          $item.css('transform', 'translate3d(' + requiredOffset.start + 'px, ' + requiredOffset.top + 'px, 0)');
        });
      });
    });
    setTimeout(function () {
      self.hideItems($inactiveShownItems);
      $activeItems.css({
        transitionDuration: '',
        transform: 'translate3d(0px, 0px, 0px)'
      });
      self.handleEmptyColumns();
    }, settings.transitionDuration);
  },

  activeFilterButton(filter) {
    var activeClass = this.getSettings('classes.active'),
        $filterButtons = this.elements.$filterButtons,
        $button = $filterButtons.filter('[data-filter="' + filter + '"]');
    $filterButtons.removeClass(activeClass);
    $button.addClass(activeClass);
  },

  setFilter(filter) {
    this.activeFilterButton(filter);
    this.filterItems(filter);
    this.arrangeGrid();
  },

  refreshGrid() {
    this.setColsCountSettings();
    this.arrangeGrid();
  },

  bindEvents() {
    _posts.default.prototype.bindEvents.apply(this, arguments);

    this.elements.$filterButtons.on('click', this.onFilterButtonClick);
  },

  isMasonryEnabled() {
    return !!this.getElementSettings('masonry');
  },

  run() {
    _posts.default.prototype.run.apply(this, arguments);

    this.setColsCountSettings();
    this.setFilter('__all');
    this.handleEmptyColumns();
  },

  onFilterButtonClick(event) {
    this.setFilter(jQuery(event.currentTarget).data('filter'));
  },

  onWindowResize() {
    _posts.default.prototype.onWindowResize.apply(this, arguments);

    this.refreshGrid();
  },

  onElementChange(propertyName) {
    _posts.default.prototype.onElementChange.apply(this, arguments);

    if ('classic_item_ratio' === propertyName) {
      this.refreshGrid();
    }
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/posts/assets/js/frontend/handlers/posts.js":
/*!*************************************************************!*\
  !*** ../modules/posts/assets/js/frontend/handlers/posts.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  getSkinPrefix() {
    return 'classic_';
  },

  bindEvents() {
    var cid = this.getModelCID();
    elementorFrontend.addListenerOnce(cid, 'resize', this.onWindowResize);
  },

  getClosureMethodsNames() {
    return elementorModules.frontend.handlers.Base.prototype.getClosureMethodsNames.apply(this, arguments).concat(['fitImages', 'onWindowResize', 'runMasonry']);
  },

  getDefaultSettings() {
    return {
      classes: {
        fitHeight: 'elementor-fit-height',
        hasItemRatio: 'elementor-has-item-ratio'
      },
      selectors: {
        postsContainer: '.elementor-posts-container',
        post: '.elementor-post',
        postThumbnail: '.elementor-post__thumbnail',
        postThumbnailImage: '.elementor-post__thumbnail img'
      }
    };
  },

  getDefaultElements() {
    var selectors = this.getSettings('selectors');
    return {
      $postsContainer: this.$element.find(selectors.postsContainer),
      $posts: this.$element.find(selectors.post)
    };
  },

  fitImage($post) {
    var settings = this.getSettings(),
        $imageParent = $post.find(settings.selectors.postThumbnail),
        $image = $imageParent.find('img'),
        image = $image[0];

    if (!image) {
      return;
    }

    var imageParentRatio = $imageParent.outerHeight() / $imageParent.outerWidth(),
        imageRatio = image.naturalHeight / image.naturalWidth;
    $imageParent.toggleClass(settings.classes.fitHeight, imageRatio < imageParentRatio);
  },

  fitImages() {
    var $ = jQuery,
        self = this,
        itemRatio = getComputedStyle(this.$element[0], ':after').content,
        settings = this.getSettings();
    this.elements.$postsContainer.toggleClass(settings.classes.hasItemRatio, !!itemRatio.match(/\d/));

    if (self.isMasonryEnabled()) {
      return;
    }

    this.elements.$posts.each(function () {
      var $post = $(this),
          $image = $post.find(settings.selectors.postThumbnailImage);
      self.fitImage($post);
      $image.on('load', function () {
        self.fitImage($post);
      });
    });
  },

  setColsCountSettings() {
    var currentDeviceMode = elementorFrontend.getCurrentDeviceMode(),
        settings = this.getElementSettings(),
        skinPrefix = this.getSkinPrefix(),
        colsCount;

    switch (currentDeviceMode) {
      case 'mobile':
        colsCount = settings[skinPrefix + 'columns_mobile'];
        break;

      case 'tablet':
        colsCount = settings[skinPrefix + 'columns_tablet'];
        break;

      default:
        colsCount = settings[skinPrefix + 'columns'];
    }

    this.setSettings('colsCount', colsCount);
  },

  isMasonryEnabled() {
    return !!this.getElementSettings(this.getSkinPrefix() + 'masonry');
  },

  initMasonry() {
    imagesLoaded(this.elements.$posts, this.runMasonry);
  },

  runMasonry() {
    var elements = this.elements;
    elements.$posts.css({
      marginTop: '',
      transitionDuration: ''
    });
    this.setColsCountSettings();
    var colsCount = this.getSettings('colsCount'),
        hasMasonry = this.isMasonryEnabled() && colsCount >= 2;
    elements.$postsContainer.toggleClass('elementor-posts-masonry', hasMasonry);

    if (!hasMasonry) {
      elements.$postsContainer.height('');
      return;
    }
    /* The `verticalSpaceBetween` variable is setup in a way that supports older versions of the portfolio widget */


    var verticalSpaceBetween = this.getElementSettings(this.getSkinPrefix() + 'row_gap.size');

    if ('' === this.getSkinPrefix() && '' === verticalSpaceBetween) {
      verticalSpaceBetween = this.getElementSettings(this.getSkinPrefix() + 'item_gap.size');
    }

    var masonry = new elementorModules.utils.Masonry({
      container: elements.$postsContainer,
      items: elements.$posts.filter(':visible'),
      columnsCount: this.getSettings('colsCount'),
      verticalSpaceBetween
    });
    masonry.run();
  },

  run() {
    // For slow browsers
    setTimeout(this.fitImages, 0);
    this.initMasonry();
  },

  onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
    this.bindEvents();
    this.run();
  },

  onWindowResize() {
    this.fitImages();
    this.runMasonry();
  },

  onElementChange() {
    this.fitImages();
    setTimeout(this.runMasonry);
  }

});

exports.default = _default;

/***/ })

}]);
//# sourceMappingURL=portfolio.71a9b9fb42566ae496bd.bundle.js.mapassets/js/paypal-button.a8f3d929735cca75a572.bundle.js000064400000003050150755004310015716 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["paypal-button"],{

/***/ "../modules/payments/assets/js/frontend/handlers/paypal-button.js":
/*!************************************************************************!*\
  !*** ../modules/payments/assets/js/frontend/handlers/paypal-button.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class PayPalHandler extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        button: '.elementor-button.elementor-paypal-legacy',
        errors: '.elementor-message-danger'
      }
    };
  }

  getDefaultElements() {
    const settings = this.getSettings();
    return {
      wrapper: this.$element[0],
      button: this.$element[0].querySelector(settings.selectors.button),
      errors: this.$element[0].querySelectorAll(settings.selectors.errors)
    };
  }

  handleClick(event) {
    if (0 < this.elements.errors.length) {
      event.preventDefault();
      this.elements.errors.forEach(error => {
        error.classList.remove('elementor-hidden');
      });
    }
  }

  bindEvents() {
    this.elements.button.addEventListener('click', this.handleClick.bind(this));
  }

}

exports.default = PayPalHandler;

/***/ })

}]);
//# sourceMappingURL=paypal-button.a8f3d929735cca75a572.bundle.js.mapassets/js/table-of-contents.0744140055afdd9bf411.bundle.js000064400000033326150755004310016345 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["table-of-contents"],{

/***/ "../modules/table-of-contents/assets/js/frontend/handlers/table-of-contents.js":
/*!*************************************************************************************!*\
  !*** ../modules/table-of-contents/assets/js/frontend/handlers/table-of-contents.js ***!
  \*************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class TOCHandler extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    const elementSettings = this.getElementSettings(),
          listWrapperTag = 'numbers' === elementSettings.marker_view ? 'ol' : 'ul';
    return {
      selectors: {
        widgetContainer: '.elementor-widget-container',
        postContentContainer: '.elementor:not([data-elementor-type="header"]):not([data-elementor-type="footer"]):not([data-elementor-type="popup"])',
        expandButton: '.elementor-toc__toggle-button--expand',
        collapseButton: '.elementor-toc__toggle-button--collapse',
        body: '.elementor-toc__body',
        headerTitle: '.elementor-toc__header-title'
      },
      classes: {
        anchor: 'elementor-menu-anchor',
        listWrapper: 'elementor-toc__list-wrapper',
        listItem: 'elementor-toc__list-item',
        listTextWrapper: 'elementor-toc__list-item-text-wrapper',
        firstLevelListItem: 'elementor-toc__top-level',
        listItemText: 'elementor-toc__list-item-text',
        activeItem: 'elementor-item-active',
        headingAnchor: 'elementor-toc__heading-anchor',
        collapsed: 'elementor-toc--collapsed'
      },
      listWrapperTag
    };
  }

  getDefaultElements() {
    const settings = this.getSettings();
    return {
      $pageContainer: this.getContainer(),
      $widgetContainer: this.$element.find(settings.selectors.widgetContainer),
      $expandButton: this.$element.find(settings.selectors.expandButton),
      $collapseButton: this.$element.find(settings.selectors.collapseButton),
      $tocBody: this.$element.find(settings.selectors.body),
      $listItems: this.$element.find('.' + settings.classes.listItem)
    };
  }

  getContainer() {
    const settings = this.getSettings(),
          elementSettings = this.getElementSettings(); // If there is a custom container defined by the user, use it as the headings-scan container

    if (elementSettings.container) {
      return jQuery(elementSettings.container);
    } // Get the document wrapper element in which the TOC is located


    const $documentWrapper = this.$element.parents('.elementor'); // If the TOC container is a popup, only scan the popup for headings

    if ('popup' === $documentWrapper.attr('data-elementor-type')) {
      return $documentWrapper;
    } // If the TOC container is anything other than a popup, scan only the post/page content for headings


    return jQuery(settings.selectors.postContentContainer);
  }

  bindEvents() {
    const elementSettings = this.getElementSettings();

    if (elementSettings.minimize_box) {
      this.elements.$expandButton.on('click', () => this.expandBox());
      this.elements.$collapseButton.on('click', () => this.collapseBox());
    }

    if (elementSettings.collapse_subitems) {
      this.elements.$listItems.on('hover', event => jQuery(event.target).slideToggle());
    }
  }

  getHeadings() {
    // Get all headings from document by user-selected tags
    const elementSettings = this.getElementSettings(),
          tags = elementSettings.headings_by_tags.join(','),
          selectors = this.getSettings('selectors'),
          excludedSelectors = elementSettings.exclude_headings_by_selector;
    return this.elements.$pageContainer.find(tags).not(selectors.headerTitle).filter((index, heading) => {
      return !jQuery(heading).closest(excludedSelectors).length; // Handle excluded selectors if there are any
    });
  }

  addAnchorsBeforeHeadings() {
    const classes = this.getSettings('classes'); // Add an anchor element right before each TOC heading to create anchors for TOC links

    this.elements.$headings.before(index => {
      // Check if the heading element itself has an ID, or if it is a widget which includes a main heading element, whether the widget wrapper has an ID
      if (jQuery(this.elements.$headings[index]).data('hasOwnID')) {
        return;
      }

      return `<span id="${classes.headingAnchor}-${index}" class="${classes.anchor} "></span>`;
    });
  }

  activateItem($listItem) {
    const classes = this.getSettings('classes');
    this.deactivateActiveItem($listItem);
    $listItem.addClass(classes.activeItem);
    this.$activeItem = $listItem;

    if (!this.getElementSettings('collapse_subitems')) {
      return;
    }

    let $activeList;

    if ($listItem.hasClass(classes.firstLevelListItem)) {
      $activeList = $listItem.parent().next();
    } else {
      $activeList = $listItem.parents('.' + classes.listWrapper).eq(-2);
    }

    if (!$activeList.length) {
      delete this.$activeList;
      return;
    }

    this.$activeList = $activeList;
    this.$activeList.stop().slideDown();
  }

  deactivateActiveItem($activeToBe) {
    if (!this.$activeItem || this.$activeItem.is($activeToBe)) {
      return;
    }

    const {
      classes
    } = this.getSettings();
    this.$activeItem.removeClass(classes.activeItem);

    if (this.$activeList && (!$activeToBe || !this.$activeList[0].contains($activeToBe[0]))) {
      this.$activeList.slideUp();
    }
  }

  followAnchor($element, index) {
    const anchorSelector = $element[0].hash;
    let $anchor;

    try {
      // `decodeURIComponent` for UTF8 characters in the hash.
      $anchor = jQuery(decodeURIComponent(anchorSelector));
    } catch (e) {
      return;
    }

    elementorFrontend.waypoint($anchor, direction => {
      if (this.itemClicked) {
        return;
      }

      const id = $anchor.attr('id');

      if ('down' === direction) {
        this.viewportItems[id] = true;
        this.activateItem($element);
      } else {
        delete this.viewportItems[id];
        this.activateItem(this.$listItemTexts.eq(index - 1));
      }
    }, {
      offset: 'bottom-in-view',
      triggerOnce: false
    });
    elementorFrontend.waypoint($anchor, direction => {
      if (this.itemClicked) {
        return;
      }

      const id = $anchor.attr('id');

      if ('down' === direction) {
        delete this.viewportItems[id];

        if (Object.keys(this.viewportItems).length) {
          this.activateItem(this.$listItemTexts.eq(index + 1));
        }
      } else {
        this.viewportItems[id] = true;
        this.activateItem($element);
      }
    }, {
      offset: 0,
      triggerOnce: false
    });
  }

  followAnchors() {
    this.$listItemTexts.each((index, element) => this.followAnchor(jQuery(element), index));
  }

  populateTOC() {
    this.listItemPointer = 0;
    const elementSettings = this.getElementSettings();

    if (elementSettings.hierarchical_view) {
      this.createNestedList();
    } else {
      this.createFlatList();
    }

    this.$listItemTexts = this.$element.find('.elementor-toc__list-item-text');
    this.$listItemTexts.on('click', this.onListItemClick.bind(this));

    if (!elementorFrontend.isEditMode()) {
      this.followAnchors();
    }
  }

  createNestedList() {
    this.headingsData.forEach((heading, index) => {
      heading.level = 0;

      for (let i = index - 1; i >= 0; i--) {
        const currentOrderedItem = this.headingsData[i];

        if (currentOrderedItem.tag <= heading.tag) {
          heading.level = currentOrderedItem.level;

          if (currentOrderedItem.tag < heading.tag) {
            heading.level++;
          }

          break;
        }
      }
    });
    this.elements.$tocBody.html(this.getNestedLevel(0));
  }

  createFlatList() {
    this.elements.$tocBody.html(this.getNestedLevel());
  }

  getNestedLevel(level) {
    const settings = this.getSettings(),
          elementSettings = this.getElementSettings(),
          icon = this.getElementSettings('icon');
    let renderedIcon;

    if (icon) {
      // We generate the icon markup in PHP and make it available via get_frontend_settings(). As a result, the
      // rendered icon is not available in the editor, so in the editor we use the regular <i> tag.
      if (elementorFrontend.config.experimentalFeatures.e_font_icon_svg && !elementorFrontend.isEditMode()) {
        renderedIcon = icon.rendered_tag;
      } else {
        renderedIcon = `<i class="${icon.value}"></i>`;
      }
    } // Open new list/nested list


    let html = `<${settings.listWrapperTag} class="${settings.classes.listWrapper}">`; // for each list item, build its markup.

    while (this.listItemPointer < this.headingsData.length) {
      const currentItem = this.headingsData[this.listItemPointer];
      let listItemTextClasses = settings.classes.listItemText;

      if (0 === currentItem.level) {
        // If the current list item is a top level item, give it the first level class
        listItemTextClasses += ' ' + settings.classes.firstLevelListItem;
      }

      if (level > currentItem.level) {
        break;
      }

      if (level === currentItem.level) {
        html += `<li class="${settings.classes.listItem}">`;
        html += `<div class="${settings.classes.listTextWrapper}">`;
        let liContent = `<a href="#${currentItem.anchorLink}" class="${listItemTextClasses}">${currentItem.text}</a>`; // If list type is bullets, add the bullet icon as an <i> tag

        if ('bullets' === elementSettings.marker_view && icon) {
          liContent = `${renderedIcon}${liContent}`;
        }

        html += liContent;
        html += '</div>';
        this.listItemPointer++;
        const nextItem = this.headingsData[this.listItemPointer];

        if (nextItem && level < nextItem.level) {
          // If a new nested list has to be created under the current item,
          // this entire method is called recursively (outside the while loop, a list wrapper is created)
          html += this.getNestedLevel(nextItem.level);
        }

        html += '</li>';
      }
    }

    html += `</${settings.listWrapperTag}>`;
    return html;
  }

  handleNoHeadingsFound() {
    let noHeadingsText = elementorProFrontend.config.i18n.toc_no_headings_found;

    if (elementorFrontend.isEditMode()) {
      noHeadingsText = elementorPro.translate('toc_no_headings_found');
    }

    return this.elements.$tocBody.html(noHeadingsText);
  }

  collapseOnInit() {
    const minimizedOn = this.getElementSettings('minimized_on'),
          currentDeviceMode = elementorFrontend.getCurrentDeviceMode();

    if ('tablet' === minimizedOn && 'desktop' !== currentDeviceMode || 'mobile' === minimizedOn && 'mobile' === currentDeviceMode) {
      this.collapseBox();
    }
  }

  getHeadingAnchorLink(index, classes) {
    const headingID = this.elements.$headings[index].id,
          wrapperID = this.elements.$headings[index].closest('.elementor-widget').id;
    let anchorLink = '';

    if (headingID) {
      anchorLink = headingID;
    } else if (wrapperID) {
      // If the heading itself has an ID, we don't want to overwrite it
      anchorLink = wrapperID;
    } // If there is no existing ID, use the heading text to create a semantic ID


    if (headingID || wrapperID) {
      jQuery(this.elements.$headings[index]).data('hasOwnID', true);
    } else {
      anchorLink = `${classes.headingAnchor}-${index}`;
    }

    return anchorLink;
  }

  setHeadingsData() {
    this.headingsData = [];
    const classes = this.getSettings('classes'); // Create an array for simplifying TOC list creation

    this.elements.$headings.each((index, element) => {
      const anchorLink = this.getHeadingAnchorLink(index, classes);
      this.headingsData.push({
        tag: +element.nodeName.slice(1),
        text: element.textContent,
        anchorLink
      });
    });
  }

  run() {
    this.elements.$headings = this.getHeadings();

    if (!this.elements.$headings.length) {
      return this.handleNoHeadingsFound();
    }

    this.setHeadingsData();

    if (!elementorFrontend.isEditMode()) {
      this.addAnchorsBeforeHeadings();
    }

    this.populateTOC();

    if (this.getElementSettings('minimize_box')) {
      this.collapseOnInit();
    }
  }

  expandBox() {
    const boxHeight = this.getCurrentDeviceSetting('min_height');
    this.$element.removeClass(this.getSettings('classes.collapsed'));
    this.elements.$tocBody.slideDown(); // return container to the full height in case a min-height is defined by the user

    this.elements.$widgetContainer.css('min-height', boxHeight.size + boxHeight.unit);
  }

  collapseBox() {
    this.$element.addClass(this.getSettings('classes.collapsed'));
    this.elements.$tocBody.slideUp(); // close container in case a min-height is defined by the user

    this.elements.$widgetContainer.css('min-height', '0px');
  }

  onInit(...args) {
    super.onInit(...args);
    this.viewportItems = [];
    jQuery(() => this.run());
  }

  onListItemClick(event) {
    this.itemClicked = true;
    setTimeout(() => this.itemClicked = false, 2000);
    const $clickedItem = jQuery(event.target),
          $list = $clickedItem.parent().next(),
          collapseNestedList = this.getElementSettings('collapse_subitems');
    let listIsActive;

    if (collapseNestedList && $clickedItem.hasClass(this.getSettings('classes.firstLevelListItem'))) {
      if ($list.is(':visible')) {
        listIsActive = true;
      }
    }

    this.activateItem($clickedItem);

    if (collapseNestedList && listIsActive) {
      $list.slideUp();
    }
  }

}

exports.default = TOCHandler;

/***/ })

}]);
//# sourceMappingURL=table-of-contents.0744140055afdd9bf411.bundle.js.mapassets/js/code-highlight.dc74fd78a051eda07b3a.bundle.min.js000064400000000723150755004310016762 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[714],{3929:(e,l)=>{"use strict";Object.defineProperty(l,"__esModule",{value:!0}),l.default=void 0;class codeHighlightHandler extends elementorModules.frontend.handlers.Base{onInit(...e){super.onInit(...e),Prism.highlightAllUnder(this.$element[0],!1)}onElementChange(){Prism.highlightAllUnder(this.$element[0],!1)}}l.default=codeHighlightHandler}}]);assets/js/animated-headline.0ccd23763059df7affcc.bundle.js000064400000031073150755004310016664 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["animated-headline"],{

/***/ "../assets/dev/js/frontend/utils/scroll.js":
/*!*************************************************!*\
  !*** ../assets/dev/js/frontend/utils/scroll.js ***!
  \*************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

if (window.elementorCommon) {
  window.elementorCommon.helpers.softDeprecated('Scroll util from "/dev/js/frontend/utils/scroll"', '3.1.0', 'elementorModules.utils.Scroll');
}

var _default = elementorModules.utils.Scroll;
exports.default = _default;

/***/ }),

/***/ "../modules/animated-headline/assets/js/frontend/handlers/animated-headlines.js":
/*!**************************************************************************************!*\
  !*** ../modules/animated-headline/assets/js/frontend/handlers/animated-headlines.js ***!
  \**************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _scroll = _interopRequireDefault(__webpack_require__(/*! elementor-pro/frontend/utils/scroll */ "../assets/dev/js/frontend/utils/scroll.js"));

var _default = elementorModules.frontend.handlers.Base.extend({
  svgPaths: {
    circle: ['M325,18C228.7-8.3,118.5,8.3,78,21C22.4,38.4,4.6,54.6,5.6,77.6c1.4,32.4,52.2,54,142.6,63.7 c66.2,7.1,212.2,7.5,273.5-8.3c64.4-16.6,104.3-57.6,33.8-98.2C386.7-4.9,179.4-1.4,126.3,20.7'],
    underline_zigzag: ['M9.3,127.3c49.3-3,150.7-7.6,199.7-7.4c121.9,0.4,189.9,0.4,282.3,7.2C380.1,129.6,181.2,130.6,70,139 c82.6-2.9,254.2-1,335.9,1.3c-56,1.4-137.2-0.3-197.1,9'],
    x: ['M497.4,23.9C301.6,40,155.9,80.6,4,144.4', 'M14.1,27.6c204.5,20.3,393.8,74,467.3,111.7'],
    strikethrough: ['M3,75h493.5'],
    curly: ['M3,146.1c17.1-8.8,33.5-17.8,51.4-17.8c15.6,0,17.1,18.1,30.2,18.1c22.9,0,36-18.6,53.9-18.6 c17.1,0,21.3,18.5,37.5,18.5c21.3,0,31.8-18.6,49-18.6c22.1,0,18.8,18.8,36.8,18.8c18.8,0,37.5-18.6,49-18.6c20.4,0,17.1,19,36.8,19 c22.9,0,36.8-20.6,54.7-18.6c17.7,1.4,7.1,19.5,33.5,18.8c17.1,0,47.2-6.5,61.1-15.6'],
    diagonal: ['M13.5,15.5c131,13.7,289.3,55.5,475,125.5'],
    double: ['M8.4,143.1c14.2-8,97.6-8.8,200.6-9.2c122.3-0.4,287.5,7.2,287.5,7.2', 'M8,19.4c72.3-5.3,162-7.8,216-7.8c54,0,136.2,0,267,7.8'],
    double_underline: ['M5,125.4c30.5-3.8,137.9-7.6,177.3-7.6c117.2,0,252.2,4.7,312.7,7.6', 'M26.9,143.8c55.1-6.1,126-6.3,162.2-6.1c46.5,0.2,203.9,3.2,268.9,6.4'],
    underline: ['M7.7,145.6C109,125,299.9,116.2,401,121.3c42.1,2.2,87.6,11.8,87.3,25.7']
  },

  getDefaultSettings() {
    const iterationDelay = this.getElementSettings('rotate_iteration_delay'),
          settings = {
      animationDelay: iterationDelay || 2500,
      //letters effect
      lettersDelay: iterationDelay * 0.02 || 50,
      //typing effect
      typeLettersDelay: iterationDelay * 0.06 || 150,
      selectionDuration: iterationDelay * 0.2 || 500,
      //clip effect
      revealDuration: iterationDelay * 0.24 || 600,
      revealAnimationDelay: iterationDelay * 0.6 || 1500,
      // Highlighted headline
      highlightAnimationDuration: this.getElementSettings('highlight_animation_duration') || 1200,
      highlightAnimationDelay: this.getElementSettings('highlight_iteration_delay') || 8000
    };
    settings.typeAnimationDelay = settings.selectionDuration + 800;
    settings.selectors = {
      headline: '.elementor-headline',
      dynamicWrapper: '.elementor-headline-dynamic-wrapper',
      dynamicText: '.elementor-headline-dynamic-text'
    };
    settings.classes = {
      dynamicText: 'elementor-headline-dynamic-text',
      dynamicLetter: 'elementor-headline-dynamic-letter',
      textActive: 'elementor-headline-text-active',
      textInactive: 'elementor-headline-text-inactive',
      letters: 'elementor-headline-letters',
      animationIn: 'elementor-headline-animation-in',
      typeSelected: 'elementor-headline-typing-selected',
      activateHighlight: 'e-animated',
      hideHighlight: 'e-hide-highlight'
    };
    return settings;
  },

  getDefaultElements() {
    var selectors = this.getSettings('selectors');
    return {
      $headline: this.$element.find(selectors.headline),
      $dynamicWrapper: this.$element.find(selectors.dynamicWrapper),
      $dynamicText: this.$element.find(selectors.dynamicText)
    };
  },

  getNextWord($word) {
    return $word.is(':last-child') ? $word.parent().children().eq(0) : $word.next();
  },

  switchWord($oldWord, $newWord) {
    $oldWord.removeClass('elementor-headline-text-active').addClass('elementor-headline-text-inactive');
    $newWord.removeClass('elementor-headline-text-inactive').addClass('elementor-headline-text-active');
    this.setDynamicWrapperWidth($newWord);
  },

  singleLetters() {
    var classes = this.getSettings('classes');
    this.elements.$dynamicText.each(function () {
      var $word = jQuery(this),
          letters = $word.text().split(''),
          isActive = $word.hasClass(classes.textActive);
      $word.empty();
      letters.forEach(function (letter) {
        var $letter = jQuery('<span>', {
          class: classes.dynamicLetter
        }).text(letter);

        if (isActive) {
          $letter.addClass(classes.animationIn);
        }

        $word.append($letter);
      });
      $word.css('opacity', 1);
    });
  },

  showLetter($letter, $word, bool, duration) {
    var self = this,
        classes = this.getSettings('classes');
    $letter.addClass(classes.animationIn);

    if (!$letter.is(':last-child')) {
      setTimeout(function () {
        self.showLetter($letter.next(), $word, bool, duration);
      }, duration);
    } else if (!bool) {
      setTimeout(function () {
        self.hideWord($word);
      }, self.getSettings('animationDelay'));
    }
  },

  hideLetter($letter, $word, bool, duration) {
    var self = this,
        settings = this.getSettings();
    $letter.removeClass(settings.classes.animationIn);

    if (!$letter.is(':last-child')) {
      setTimeout(function () {
        self.hideLetter($letter.next(), $word, bool, duration);
      }, duration);
    } else if (bool) {
      setTimeout(function () {
        self.hideWord(self.getNextWord($word));
      }, self.getSettings('animationDelay'));
    }
  },

  showWord($word, $duration) {
    var self = this,
        settings = self.getSettings(),
        animationType = self.getElementSettings('animation_type');

    if ('typing' === animationType) {
      self.showLetter($word.find('.' + settings.classes.dynamicLetter).eq(0), $word, false, $duration);
      $word.addClass(settings.classes.textActive).removeClass(settings.classes.textInactive);
    } else if ('clip' === animationType) {
      self.elements.$dynamicWrapper.animate({
        width: $word.width() + 10
      }, settings.revealDuration, function () {
        setTimeout(function () {
          self.hideWord($word);
        }, settings.revealAnimationDelay);
      });
    }
  },

  hideWord($word) {
    var self = this,
        settings = self.getSettings(),
        classes = settings.classes,
        letterSelector = '.' + classes.dynamicLetter,
        animationType = self.getElementSettings('animation_type'),
        nextWord = self.getNextWord($word);

    if (!this.isLoopMode && $word.is(':last-child')) {
      return;
    }

    if ('typing' === animationType) {
      self.elements.$dynamicWrapper.addClass(classes.typeSelected);
      setTimeout(function () {
        self.elements.$dynamicWrapper.removeClass(classes.typeSelected);
        $word.addClass(settings.classes.textInactive).removeClass(classes.textActive).children(letterSelector).removeClass(classes.animationIn);
      }, settings.selectionDuration);
      setTimeout(function () {
        self.showWord(nextWord, settings.typeLettersDelay);
      }, settings.typeAnimationDelay);
    } else if (self.elements.$headline.hasClass(classes.letters)) {
      var bool = $word.children(letterSelector).length >= nextWord.children(letterSelector).length;
      self.hideLetter($word.find(letterSelector).eq(0), $word, bool, settings.lettersDelay);
      self.showLetter(nextWord.find(letterSelector).eq(0), nextWord, bool, settings.lettersDelay);
      self.setDynamicWrapperWidth(nextWord);
    } else if ('clip' === animationType) {
      self.elements.$dynamicWrapper.animate({
        width: '2px'
      }, settings.revealDuration, function () {
        self.switchWord($word, nextWord);
        self.showWord(nextWord);
      });
    } else {
      self.switchWord($word, nextWord);
      setTimeout(function () {
        self.hideWord(nextWord);
      }, settings.animationDelay);
    }
  },

  setDynamicWrapperWidth($word) {
    const animationType = this.getElementSettings('animation_type');

    if ('clip' !== animationType && 'typing' !== animationType) {
      this.elements.$dynamicWrapper.css('width', $word.width());
    }
  },

  animateHeadline() {
    var self = this,
        animationType = self.getElementSettings('animation_type'),
        $dynamicWrapper = self.elements.$dynamicWrapper;

    if ('clip' === animationType) {
      $dynamicWrapper.width($dynamicWrapper.width() + 10);
    } else if ('typing' !== animationType) {
      self.setDynamicWrapperWidth(self.elements.$dynamicText);
    } //trigger animation


    setTimeout(function () {
      self.hideWord(self.elements.$dynamicText.eq(0));
    }, self.getSettings('animationDelay'));
  },

  getSvgPaths(pathName) {
    var pathsInfo = this.svgPaths[pathName],
        $paths = jQuery();
    pathsInfo.forEach(function (pathInfo) {
      $paths = $paths.add(jQuery('<path>', {
        d: pathInfo
      }));
    });
    return $paths;
  },

  addHighlight() {
    const elementSettings = this.getElementSettings(),
          $svg = jQuery('<svg>', {
      xmlns: 'http://www.w3.org/2000/svg',
      viewBox: '0 0 500 150',
      preserveAspectRatio: 'none'
    }).html(this.getSvgPaths(elementSettings.marker));
    this.elements.$dynamicWrapper.append($svg[0].outerHTML);
  },

  rotateHeadline() {
    var settings = this.getSettings(); //insert <span> for each letter of a changing word

    if (this.elements.$headline.hasClass(settings.classes.letters)) {
      this.singleLetters();
    } //initialise headline animation


    this.animateHeadline();
  },

  initHeadline() {
    const headlineStyle = this.getElementSettings('headline_style');

    if ('rotate' === headlineStyle) {
      this.rotateHeadline();
    } else if ('highlight' === headlineStyle) {
      this.addHighlight();
      this.activateHighlightAnimation();
    }

    this.deactivateScrollListener();
  },

  activateHighlightAnimation() {
    const settings = this.getSettings(),
          classes = settings.classes,
          $headline = this.elements.$headline;
    $headline.removeClass(classes.hideHighlight).addClass(classes.activateHighlight);

    if (!this.isLoopMode) {
      return;
    }

    setTimeout(() => {
      $headline.removeClass(classes.activateHighligh).addClass(classes.hideHighlight);
    }, settings.highlightAnimationDuration + settings.highlightAnimationDelay * .8);
    setTimeout(() => {
      this.activateHighlightAnimation(false);
    }, settings.highlightAnimationDuration + settings.highlightAnimationDelay);
  },

  activateScrollListener() {
    const scrollBuffer = -100;
    this.intersectionObservers.startAnimation.observer = _scroll.default.scrollObserver({
      offset: `0px 0px ${scrollBuffer}px`,
      callback: event => {
        if (event.isInViewport) {
          this.initHeadline();
        }
      }
    });
    this.intersectionObservers.startAnimation.element = this.elements.$headline[0];
    this.intersectionObservers.startAnimation.observer.observe(this.intersectionObservers.startAnimation.element);
  },

  deactivateScrollListener() {
    this.intersectionObservers.startAnimation.observer.unobserve(this.intersectionObservers.startAnimation.element);
  },

  onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
    this.intersectionObservers = {
      startAnimation: {
        observer: null,
        element: null
      }
    };
    this.isLoopMode = 'yes' === this.getElementSettings('loop');
    this.activateScrollListener();
  }

});

exports.default = _default;

/***/ })

}]);
//# sourceMappingURL=animated-headline.0ccd23763059df7affcc.bundle.js.mapassets/js/preview.js000064400000456016150755004310010515 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/create.js":
/*!***********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/create.js ***!
  \***********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/create */ "../node_modules/core-js/library/fn/object/create.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js":
/*!********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js ***!
  \********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/define-property */ "../node_modules/core-js/library/fn/object/define-property.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/get-prototype-of */ "../node_modules/core-js/library/fn/object/get-prototype-of.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js":
/*!*********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js ***!
  \*********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/object/set-prototype-of */ "../node_modules/core-js/library/fn/object/set-prototype-of.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js":
/*!***************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js ***!
  \***************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/reflect/construct */ "../node_modules/core-js/library/fn/reflect/construct.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js":
/*!****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/symbol.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/symbol */ "../node_modules/core-js/library/fn/symbol/index.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js":
/*!*************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js ***!
  \*************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! core-js/library/fn/symbol/iterator */ "../node_modules/core-js/library/fn/symbol/iterator.js");

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js ***!
  \*******************************************************************************/
/***/ ((module) => {

function _assertThisInitialized(self) {
  if (self === void 0) {
    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  }

  return self;
}

module.exports = _assertThisInitialized;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js ***!
  \************************************************************************/
/***/ ((module) => {

function _classCallCheck(instance, Constructor) {
  if (!(instance instanceof Constructor)) {
    throw new TypeError("Cannot call a class as a function");
  }
}

module.exports = _classCallCheck;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/createClass.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

function _defineProperties(target, props) {
  for (var i = 0; i < props.length; i++) {
    var descriptor = props[i];
    descriptor.enumerable = descriptor.enumerable || false;
    descriptor.configurable = true;
    if ("value" in descriptor) descriptor.writable = true;

    _Object$defineProperty(target, descriptor.key, descriptor);
  }
}

function _createClass(Constructor, protoProps, staticProps) {
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
  if (staticProps) _defineProperties(Constructor, staticProps);
  return Constructor;
}

module.exports = _createClass;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js":
/*!*********************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/createSuper.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/construct */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js");

var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js");

var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ "../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js");

var possibleConstructorReturn = __webpack_require__(/*! ./possibleConstructorReturn.js */ "../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js");

function _createSuper(Derived) {
  var hasNativeReflectConstruct = isNativeReflectConstruct();
  return function _createSuperInternal() {
    var Super = getPrototypeOf(Derived),
        result;

    if (hasNativeReflectConstruct) {
      var NewTarget = getPrototypeOf(this).constructor;
      result = _Reflect$construct(Super, arguments, NewTarget);
    } else {
      result = Super.apply(this, arguments);
    }

    return possibleConstructorReturn(this, result);
  };
}

module.exports = _createSuper;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/getPrototypeOf.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/set-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js");

var _Object$getPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/get-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js");

function _getPrototypeOf(o) {
  module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {
    return o.__proto__ || _Object$getPrototypeOf(o);
  };
  module.exports.default = module.exports, module.exports.__esModule = true;
  return _getPrototypeOf(o);
}

module.exports = _getPrototypeOf;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js":
/*!******************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/inherits.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$create = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/create */ "../node_modules/@babel/runtime-corejs2/core-js/object/create.js");

var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ "../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js");

function _inherits(subClass, superClass) {
  if (typeof superClass !== "function" && superClass !== null) {
    throw new TypeError("Super expression must either be null or a function");
  }

  subClass.prototype = _Object$create(superClass && superClass.prototype, {
    constructor: {
      value: subClass,
      writable: true,
      configurable: true
    }
  });
  if (superClass) setPrototypeOf(subClass, superClass);
}

module.exports = _inherits;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js":
/*!*******************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js ***!
  \*******************************************************************************/
/***/ ((module) => {

function _interopRequireDefault(obj) {
  return obj && obj.__esModule ? obj : {
    "default": obj
  };
}

module.exports = _interopRequireDefault;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js":
/*!**********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/isNativeReflectConstruct.js ***!
  \**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Reflect$construct = __webpack_require__(/*! @babel/runtime-corejs2/core-js/reflect/construct */ "../node_modules/@babel/runtime-corejs2/core-js/reflect/construct.js");

function _isNativeReflectConstruct() {
  if (typeof Reflect === "undefined" || !_Reflect$construct) return false;
  if (_Reflect$construct.sham) return false;
  if (typeof Proxy === "function") return true;

  try {
    Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));
    return true;
  } catch (e) {
    return false;
  }
}

module.exports = _isNativeReflectConstruct;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js":
/*!***********************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/possibleConstructorReturn.js ***!
  \***********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _typeof = __webpack_require__(/*! @babel/runtime-corejs2/helpers/typeof */ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js").default;

var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ "../node_modules/@babel/runtime-corejs2/helpers/assertThisInitialized.js");

function _possibleConstructorReturn(self, call) {
  if (call && (_typeof(call) === "object" || typeof call === "function")) {
    return call;
  }

  return assertThisInitialized(self);
}

module.exports = _possibleConstructorReturn;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js":
/*!************************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/setPrototypeOf.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Object$setPrototypeOf = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/set-prototype-of */ "../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js");

function _setPrototypeOf(o, p) {
  module.exports = _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {
    o.__proto__ = p;
    return o;
  };

  module.exports.default = module.exports, module.exports.__esModule = true;
  return _setPrototypeOf(o, p);
}

module.exports = _setPrototypeOf;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../node_modules/@babel/runtime-corejs2/helpers/typeof.js":
/*!****************************************************************!*\
  !*** ../node_modules/@babel/runtime-corejs2/helpers/typeof.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var _Symbol = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol */ "../node_modules/@babel/runtime-corejs2/core-js/symbol.js");

var _Symbol$iterator = __webpack_require__(/*! @babel/runtime-corejs2/core-js/symbol/iterator */ "../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js");

function _typeof(obj) {
  "@babel/helpers - typeof";

  if (typeof _Symbol === "function" && typeof _Symbol$iterator === "symbol") {
    module.exports = _typeof = function _typeof(obj) {
      return typeof obj;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  } else {
    module.exports = _typeof = function _typeof(obj) {
      return obj && typeof _Symbol === "function" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? "symbol" : typeof obj;
    };

    module.exports.default = module.exports, module.exports.__esModule = true;
  }

  return _typeof(obj);
}

module.exports = _typeof;
module.exports.default = module.exports, module.exports.__esModule = true;

/***/ }),

/***/ "../assets/dev/js/preview/preview.js":
/*!*******************************************!*\
  !*** ../assets/dev/js/preview/preview.js ***!
  \*******************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _Object$defineProperty = __webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-property */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js");

var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");

_Object$defineProperty(exports, "__esModule", {
  value: true
});

exports.default = void 0;

__webpack_require__(/*! core-js/modules/es7.promise.finally.js */ "../node_modules/core-js/modules/es7.promise.finally.js");

__webpack_require__(/*! core-js/modules/es6.object.to-string.js */ "../node_modules/core-js/modules/es6.object.to-string.js");

__webpack_require__(/*! core-js/modules/es6.promise.js */ "../node_modules/core-js/modules/es6.promise.js");

var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/classCallCheck */ "../node_modules/@babel/runtime-corejs2/helpers/classCallCheck.js"));

var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createClass */ "../node_modules/@babel/runtime-corejs2/helpers/createClass.js"));

var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/inherits */ "../node_modules/@babel/runtime-corejs2/helpers/inherits.js"));

var _createSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/helpers/createSuper */ "../node_modules/@babel/runtime-corejs2/helpers/createSuper.js"));

var Preview = /*#__PURE__*/function (_elementorModules$Vie) {
  (0, _inherits2.default)(Preview, _elementorModules$Vie);

  var _super = (0, _createSuper2.default)(Preview);

  function Preview() {
    var _this;

    (0, _classCallCheck2.default)(this, Preview);
    _this = _super.call(this);
    elementorFrontend.on('components:init', function () {
      return _this.onFrontendComponentsInit();
    });
    return _this;
  }

  (0, _createClass2.default)(Preview, [{
    key: "createDocumentsHandles",
    value: function createDocumentsHandles() {
      var _this2 = this;

      jQuery.each(elementorFrontend.documentsManager.documents, function (index, document) {
        var $documentElement = document.$element;

        if ($documentElement.hasClass('elementor-edit-mode')) {
          return;
        }

        var $existingHandle = document.$element.children('.elementor-document-handle');

        if ($existingHandle.length) {
          return;
        }

        var $handle = jQuery('<div>', {
          class: 'elementor-document-handle'
        }),
            $handleIcon = jQuery('<i>', {
          class: 'eicon-edit'
        }),
            documentTitle = $documentElement.data('elementor-title'),
            $handleTitle = jQuery('<div>', {
          class: 'elementor-document-handle__title'
        }).text(elementorPro.translate('edit_element', [documentTitle]));
        $handle.append($handleIcon, $handleTitle);
        $handle.on('click', function () {
          return _this2.onDocumentHandleClick(document);
        });
        $documentElement.prepend($handle);
      });
    }
  }, {
    key: "onDocumentHandleClick",
    value: function onDocumentHandleClick(document) {
      elementorCommon.api.internal('panel/state-loading');
      elementorCommon.api.run('editor/documents/switch', {
        id: document.getSettings('id')
      }).finally(function () {
        return elementorCommon.api.internal('panel/state-ready');
      });
    }
  }, {
    key: "onFrontendComponentsInit",
    value: function onFrontendComponentsInit() {
      var _this3 = this;

      this.createDocumentsHandles();
      elementor.on('document:loaded', function () {
        return _this3.createDocumentsHandles();
      });
    }
  }]);
  return Preview;
}(elementorModules.ViewModule);

exports.default = Preview;
window.elementorProPreview = new Preview();

/***/ }),

/***/ "../node_modules/core-js/library/fn/object/create.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/create.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.create */ "../node_modules/core-js/library/modules/es6.object.create.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function create(P, D) {
  return $Object.create(P, D);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/define-property.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/define-property.js ***!
  \********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.define-property */ "../node_modules/core-js/library/modules/es6.object.define-property.js");
var $Object = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object;
module.exports = function defineProperty(it, key, desc) {
  return $Object.defineProperty(it, key, desc);
};


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/get-prototype-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/get-prototype-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.get-prototype-of */ "../node_modules/core-js/library/modules/es6.object.get-prototype-of.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.getPrototypeOf;


/***/ }),

/***/ "../node_modules/core-js/library/fn/object/set-prototype-of.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/fn/object/set-prototype-of.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.object.set-prototype-of */ "../node_modules/core-js/library/modules/es6.object.set-prototype-of.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Object.setPrototypeOf;


/***/ }),

/***/ "../node_modules/core-js/library/fn/reflect/construct.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/fn/reflect/construct.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.reflect.construct */ "../node_modules/core-js/library/modules/es6.reflect.construct.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Reflect.construct;


/***/ }),

/***/ "../node_modules/core-js/library/fn/symbol/index.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/fn/symbol/index.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.symbol */ "../node_modules/core-js/library/modules/es6.symbol.js");
__webpack_require__(/*! ../../modules/es6.object.to-string */ "../node_modules/core-js/library/modules/es6.object.to-string.js");
__webpack_require__(/*! ../../modules/es7.symbol.async-iterator */ "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js");
__webpack_require__(/*! ../../modules/es7.symbol.observable */ "../node_modules/core-js/library/modules/es7.symbol.observable.js");
module.exports = __webpack_require__(/*! ../../modules/_core */ "../node_modules/core-js/library/modules/_core.js").Symbol;


/***/ }),

/***/ "../node_modules/core-js/library/fn/symbol/iterator.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/fn/symbol/iterator.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ../../modules/es6.string.iterator */ "../node_modules/core-js/library/modules/es6.string.iterator.js");
__webpack_require__(/*! ../../modules/web.dom.iterable */ "../node_modules/core-js/library/modules/web.dom.iterable.js");
module.exports = __webpack_require__(/*! ../../modules/_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js").f('iterator');


/***/ }),

/***/ "../node_modules/core-js/library/modules/_a-function.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_a-function.js ***!
  \**************************************************************/
/***/ ((module) => {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_add-to-unscopables.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_add-to-unscopables.js ***!
  \**********************************************************************/
/***/ ((module) => {

module.exports = function () { /* empty */ };


/***/ }),

/***/ "../node_modules/core-js/library/modules/_an-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_an-object.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_array-includes.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_array-includes.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/library/modules/_to-length.js");
var toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ "../node_modules/core-js/library/modules/_to-absolute-index.js");
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_bind.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_bind.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var invoke = __webpack_require__(/*! ./_invoke */ "../node_modules/core-js/library/modules/_invoke.js");
var arraySlice = [].slice;
var factories = {};

var construct = function (F, len, args) {
  if (!(len in factories)) {
    for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';
    // eslint-disable-next-line no-new-func
    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
  } return factories[len](F, args);
};

module.exports = Function.bind || function bind(that /* , ...args */) {
  var fn = aFunction(this);
  var partArgs = arraySlice.call(arguments, 1);
  var bound = function (/* args... */) {
    var args = partArgs.concat(arraySlice.call(arguments));
    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
  };
  if (isObject(fn.prototype)) bound.prototype = fn.prototype;
  return bound;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_cof.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_cof.js ***!
  \*******************************************************/
/***/ ((module) => {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_core.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_core.js ***!
  \********************************************************/
/***/ ((module) => {

var core = module.exports = { version: '2.6.12' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/library/modules/_ctx.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_ctx.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// optional / simple context binding
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_defined.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_defined.js ***!
  \***********************************************************/
/***/ ((module) => {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_descriptors.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_descriptors.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_dom-create.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_dom-create.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_enum-bug-keys.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_enum-bug-keys.js ***!
  \*****************************************************************/
/***/ ((module) => {

// IE 8- don't enum bug keys
module.exports = (
  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');


/***/ }),

/***/ "../node_modules/core-js/library/modules/_enum-keys.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_enum-keys.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// all enumerable object keys, includes symbols
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
module.exports = function (it) {
  var result = getKeys(it);
  var getSymbols = gOPS.f;
  if (getSymbols) {
    var symbols = getSymbols(it);
    var isEnum = pIE.f;
    var i = 0;
    var key;
    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
  } return result;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_export.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_export.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var IS_WRAP = type & $export.W;
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE];
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];
  var key, own, out;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    if (own && has(exports, key)) continue;
    // export native or passed
    out = own ? target[key] : source[key];
    // prevent global pollution for namespaces
    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
    // bind timers to global for call from export context
    : IS_BIND && own ? ctx(out, global)
    // wrap global constructors for prevent change them in library
    : IS_WRAP && target[key] == out ? (function (C) {
      var F = function (a, b, c) {
        if (this instanceof C) {
          switch (arguments.length) {
            case 0: return new C();
            case 1: return new C(a);
            case 2: return new C(a, b);
          } return new C(a, b, c);
        } return C.apply(this, arguments);
      };
      F[PROTOTYPE] = C[PROTOTYPE];
      return F;
    // make static versions for prototype methods
    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
    if (IS_PROTO) {
      (exports.virtual || (exports.virtual = {}))[key] = out;
      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);
    }
  }
};
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_fails.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_fails.js ***!
  \*********************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_global.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_global.js ***!
  \**********************************************************/
/***/ ((module) => {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/library/modules/_has.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_has.js ***!
  \*******************************************************/
/***/ ((module) => {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_hide.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_hide.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_html.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_html.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").document;
module.exports = document && document.documentElement;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_ie8-dom-define.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_ie8-dom-define.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_invoke.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_invoke.js ***!
  \**********************************************************/
/***/ ((module) => {

// fast apply, http://jsperf.lnkit.com/fast-apply/5
module.exports = function (fn, args, that) {
  var un = that === undefined;
  switch (args.length) {
    case 0: return un ? fn()
                      : fn.call(that);
    case 1: return un ? fn(args[0])
                      : fn.call(that, args[0]);
    case 2: return un ? fn(args[0], args[1])
                      : fn.call(that, args[0], args[1]);
    case 3: return un ? fn(args[0], args[1], args[2])
                      : fn.call(that, args[0], args[1], args[2]);
    case 4: return un ? fn(args[0], args[1], args[2], args[3])
                      : fn.call(that, args[0], args[1], args[2], args[3]);
  } return fn.apply(that, args);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iobject.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iobject.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-array.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-array.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/library/modules/_cof.js");
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_is-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_is-object.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-create.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-create.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var descriptor = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var IteratorPrototype = {};

// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
__webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js")(IteratorPrototype, __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator'), function () { return this; });

module.exports = function (Constructor, NAME, next) {
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
  setToStringTag(Constructor, NAME + ' Iterator');
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-define.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-define.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var $iterCreate = __webpack_require__(/*! ./_iter-create */ "../node_modules/core-js/library/modules/_iter-create.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('iterator');
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';

var returnThis = function () { return this; };

module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
  $iterCreate(Constructor, NAME, next);
  var getMethod = function (kind) {
    if (!BUGGY && kind in proto) return proto[kind];
    switch (kind) {
      case KEYS: return function keys() { return new Constructor(this, kind); };
      case VALUES: return function values() { return new Constructor(this, kind); };
    } return function entries() { return new Constructor(this, kind); };
  };
  var TAG = NAME + ' Iterator';
  var DEF_VALUES = DEFAULT == VALUES;
  var VALUES_BUG = false;
  var proto = Base.prototype;
  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
  var $default = $native || getMethod(DEFAULT);
  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
  var methods, key, IteratorPrototype;
  // Fix native
  if ($anyNative) {
    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
      // Set @@toStringTag to native iterators
      setToStringTag(IteratorPrototype, TAG, true);
      // fix for some old engines
      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
    }
  }
  // fix Array#{values, @@iterator}.name in V8 / FF
  if (DEF_VALUES && $native && $native.name !== VALUES) {
    VALUES_BUG = true;
    $default = function values() { return $native.call(this); };
  }
  // Define iterator
  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
    hide(proto, ITERATOR, $default);
  }
  // Plug for library
  Iterators[NAME] = $default;
  Iterators[TAG] = returnThis;
  if (DEFAULT) {
    methods = {
      values: DEF_VALUES ? $default : getMethod(VALUES),
      keys: IS_SET ? $default : getMethod(KEYS),
      entries: $entries
    };
    if (FORCED) for (key in methods) {
      if (!(key in proto)) redefine(proto, key, methods[key]);
    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
  }
  return methods;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iter-step.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iter-step.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = function (done, value) {
  return { value: value, done: !!done };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_iterators.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_iterators.js ***!
  \*************************************************************/
/***/ ((module) => {

module.exports = {};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_library.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_library.js ***!
  \***********************************************************/
/***/ ((module) => {

module.exports = true;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_meta.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_meta.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var META = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js")('meta');
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var setDesc = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var id = 0;
var isExtensible = Object.isExtensible || function () {
  return true;
};
var FREEZE = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js")(function () {
  return isExtensible(Object.preventExtensions({}));
});
var setMeta = function (it) {
  setDesc(it, META, { value: {
    i: 'O' + ++id, // object ID
    w: {}          // weak collections IDs
  } });
};
var fastKey = function (it, create) {
  // return primitive with prefix
  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return 'F';
    // not necessary to add metadata
    if (!create) return 'E';
    // add missing metadata
    setMeta(it);
  // return object ID
  } return it[META].i;
};
var getWeak = function (it, create) {
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return true;
    // not necessary to add metadata
    if (!create) return false;
    // add missing metadata
    setMeta(it);
  // return hash weak collections IDs
  } return it[META].w;
};
// add metadata on freeze-family methods calling
var onFreeze = function (it) {
  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
  return it;
};
var meta = module.exports = {
  KEY: META,
  NEED: false,
  fastKey: fastKey,
  getWeak: getWeak,
  onFreeze: onFreeze
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-create.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-create.js ***!
  \*****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var dPs = __webpack_require__(/*! ./_object-dps */ "../node_modules/core-js/library/modules/_object-dps.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');
var Empty = function () { /* empty */ };
var PROTOTYPE = 'prototype';

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = __webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/library/modules/_dom-create.js")('iframe');
  var i = enumBugKeys.length;
  var lt = '<';
  var gt = '>';
  var iframeDocument;
  iframe.style.display = 'none';
  __webpack_require__(/*! ./_html */ "../node_modules/core-js/library/modules/_html.js").appendChild(iframe);
  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
  // createDict = iframe.contentWindow.Object;
  // html.removeChild(iframe);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
  iframeDocument.close();
  createDict = iframeDocument.F;
  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
  return createDict();
};

module.exports = Object.create || function create(O, Properties) {
  var result;
  if (O !== null) {
    Empty[PROTOTYPE] = anObject(O);
    result = new Empty();
    Empty[PROTOTYPE] = null;
    // add "__proto__" for Object.getPrototypeOf polyfill
    result[IE_PROTO] = O;
  } else result = createDict();
  return Properties === undefined ? result : dPs(result, Properties);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-dp.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-dp.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/library/modules/_ie8-dom-define.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var dP = Object.defineProperty;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-dps.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-dps.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var getKeys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");

module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var keys = getKeys(Properties);
  var length = keys.length;
  var i = 0;
  var P;
  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopd.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopd.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var pIE = __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/library/modules/_ie8-dom-define.js");
var gOPD = Object.getOwnPropertyDescriptor;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js") ? gOPD : function getOwnPropertyDescriptor(O, P) {
  O = toIObject(O);
  P = toPrimitive(P, true);
  if (IE8_DOM_DEFINE) try {
    return gOPD(O, P);
  } catch (e) { /* empty */ }
  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopn-ext.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopn-ext.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var gOPN = __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js").f;
var toString = {}.toString;

var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
  ? Object.getOwnPropertyNames(window) : [];

var getWindowNames = function (it) {
  try {
    return gOPN(it);
  } catch (e) {
    return windowNames.slice();
  }
};

module.exports.f = function getOwnPropertyNames(it) {
  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gopn.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gopn.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/library/modules/_object-keys-internal.js");
var hiddenKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js").concat('length', 'prototype');

exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
  return $keys(O, hiddenKeys);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gops.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gops.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, exports) => {

exports.f = Object.getOwnPropertySymbols;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-gpo.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-gpo.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');
var ObjectProto = Object.prototype;

module.exports = Object.getPrototypeOf || function (O) {
  O = toObject(O);
  if (has(O, IE_PROTO)) return O[IE_PROTO];
  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
    return O.constructor.prototype;
  } return O instanceof Object ? ObjectProto : null;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-keys-internal.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-keys-internal.js ***!
  \************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var arrayIndexOf = __webpack_require__(/*! ./_array-includes */ "../node_modules/core-js/library/modules/_array-includes.js")(false);
var IE_PROTO = __webpack_require__(/*! ./_shared-key */ "../node_modules/core-js/library/modules/_shared-key.js")('IE_PROTO');

module.exports = function (object, names) {
  var O = toIObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (has(O, key = names[i++])) {
    ~arrayIndexOf(result, key) || result.push(key);
  }
  return result;
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-keys.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-keys.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = __webpack_require__(/*! ./_object-keys-internal */ "../node_modules/core-js/library/modules/_object-keys-internal.js");
var enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ "../node_modules/core-js/library/modules/_enum-bug-keys.js");

module.exports = Object.keys || function keys(O) {
  return $keys(O, enumBugKeys);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-pie.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-pie.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, exports) => {

exports.f = {}.propertyIsEnumerable;


/***/ }),

/***/ "../node_modules/core-js/library/modules/_object-sap.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_object-sap.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// most Object methods by ES6 should accept primitives
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
module.exports = function (KEY, exec) {
  var fn = (core.Object || {})[KEY] || Object[KEY];
  var exp = {};
  exp[KEY] = exec(fn);
  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_property-desc.js":
/*!*****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_property-desc.js ***!
  \*****************************************************************/
/***/ ((module) => {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_redefine.js":
/*!************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_redefine.js ***!
  \************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-proto.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-proto.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var check = function (O, proto) {
  anObject(O);
  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
};
module.exports = {
  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
    function (test, buggy, set) {
      try {
        set = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/library/modules/_ctx.js")(Function.call, __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js").f(Object.prototype, '__proto__').set, 2);
        set(test, []);
        buggy = !(test instanceof Array);
      } catch (e) { buggy = true; }
      return function setPrototypeOf(O, proto) {
        check(O, proto);
        if (buggy) O.__proto__ = proto;
        else set(O, proto);
        return O;
      };
    }({}, false) : undefined),
  check: check
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_set-to-string-tag.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_set-to-string-tag.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var def = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');

module.exports = function (it, tag, stat) {
  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_shared-key.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_shared-key.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js")('keys');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
module.exports = function (key) {
  return shared[key] || (shared[key] = uid(key));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_shared.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_shared.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js") ? 'pure' : 'global',
  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/_string-at.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_string-at.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-absolute-index.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-absolute-index.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-integer.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-integer.js ***!
  \**************************************************************/
/***/ ((module) => {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-iobject.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-iobject.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(/*! ./_iobject */ "../node_modules/core-js/library/modules/_iobject.js");
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-length.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-length.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.15 ToLength
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/library/modules/_to-integer.js");
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-object.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-object.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(/*! ./_defined */ "../node_modules/core-js/library/modules/_defined.js");
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_to-primitive.js":
/*!****************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_to-primitive.js ***!
  \****************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_uid.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_uid.js ***!
  \*******************************************************/
/***/ ((module) => {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks-define.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks-define.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/library/modules/_core.js");
var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js");
var wksExt = __webpack_require__(/*! ./_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js");
var defineProperty = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f;
module.exports = function (name) {
  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
};


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks-ext.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks-ext.js ***!
  \***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

exports.f = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js");


/***/ }),

/***/ "../node_modules/core-js/library/modules/_wks.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/library/modules/_wks.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var store = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js")('wks');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
var Symbol = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.array.iterator.js":
/*!*********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.array.iterator.js ***!
  \*********************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ "../node_modules/core-js/library/modules/_add-to-unscopables.js");
var step = __webpack_require__(/*! ./_iter-step */ "../node_modules/core-js/library/modules/_iter-step.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");

// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
module.exports = __webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/library/modules/_iter-define.js")(Array, 'Array', function (iterated, kind) {
  this._t = toIObject(iterated); // target
  this._i = 0;                   // next index
  this._k = kind;                // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var kind = this._k;
  var index = this._i++;
  if (!O || index >= O.length) {
    this._t = undefined;
    return step(1);
  }
  if (kind == 'keys') return step(0, index);
  if (kind == 'values') return step(0, O[index]);
  return step(0, [index, O[index]]);
}, 'values');

// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
Iterators.Arguments = Iterators.Array;

addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.create.js":
/*!********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.create.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
$export($export.S, 'Object', { create: __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js") });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.define-property.js":
/*!*****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.define-property.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js"), 'Object', { defineProperty: __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js").f });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.get-prototype-of.js":
/*!******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.get-prototype-of.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.2.9 Object.getPrototypeOf(O)
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var $getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ "../node_modules/core-js/library/modules/_object-gpo.js");

__webpack_require__(/*! ./_object-sap */ "../node_modules/core-js/library/modules/_object-sap.js")('getPrototypeOf', function () {
  return function getPrototypeOf(it) {
    return $getPrototypeOf(toObject(it));
  };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.set-prototype-of.js":
/*!******************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.set-prototype-of.js ***!
  \******************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 19.1.3.19 Object.setPrototypeOf(O, proto)
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(/*! ./_set-proto */ "../node_modules/core-js/library/modules/_set-proto.js").set });


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.object.to-string.js":
/*!***********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.object.to-string.js ***!
  \***********************************************************************/
/***/ (() => {



/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.reflect.construct.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.reflect.construct.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/library/modules/_a-function.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var bind = __webpack_require__(/*! ./_bind */ "../node_modules/core-js/library/modules/_bind.js");
var rConstruct = (__webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js").Reflect || {}).construct;

// MS Edge supports only 2 arguments and argumentsList argument is optional
// FF Nightly sets third argument as `new.target`, but does not create `this` from it
var NEW_TARGET_BUG = fails(function () {
  function F() { /* empty */ }
  return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);
});
var ARGS_BUG = !fails(function () {
  rConstruct(function () { /* empty */ });
});

$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {
  construct: function construct(Target, args /* , newTarget */) {
    aFunction(Target);
    anObject(args);
    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
    if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);
    if (Target == newTarget) {
      // w/o altered newTarget, optimization for 0-4 arguments
      switch (args.length) {
        case 0: return new Target();
        case 1: return new Target(args[0]);
        case 2: return new Target(args[0], args[1]);
        case 3: return new Target(args[0], args[1], args[2]);
        case 4: return new Target(args[0], args[1], args[2], args[3]);
      }
      // w/o altered newTarget, lot of arguments case
      var $args = [null];
      $args.push.apply($args, args);
      return new (bind.apply(Target, $args))();
    }
    // with altered newTarget, not support built-in constructors
    var proto = newTarget.prototype;
    var instance = create(isObject(proto) ? proto : Object.prototype);
    var result = Function.apply.call(Target, instance, args);
    return isObject(result) ? result : instance;
  }
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.string.iterator.js":
/*!**********************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.string.iterator.js ***!
  \**********************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var $at = __webpack_require__(/*! ./_string-at */ "../node_modules/core-js/library/modules/_string-at.js")(true);

// 21.1.3.27 String.prototype[@@iterator]()
__webpack_require__(/*! ./_iter-define */ "../node_modules/core-js/library/modules/_iter-define.js")(String, 'String', function (iterated) {
  this._t = String(iterated); // target
  this._i = 0;                // next index
// 21.1.5.2.1 %StringIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var index = this._i;
  var point;
  if (index >= O.length) return { value: undefined, done: true };
  point = $at(O, index);
  this._i += point.length;
  return { value: point, done: false };
});


/***/ }),

/***/ "../node_modules/core-js/library/modules/es6.symbol.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es6.symbol.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// ECMAScript 6 symbols shim
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/library/modules/_has.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/library/modules/_descriptors.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/library/modules/_export.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/library/modules/_redefine.js");
var META = __webpack_require__(/*! ./_meta */ "../node_modules/core-js/library/modules/_meta.js").KEY;
var $fails = __webpack_require__(/*! ./_fails */ "../node_modules/core-js/library/modules/_fails.js");
var shared = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/library/modules/_shared.js");
var setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/library/modules/_set-to-string-tag.js");
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/library/modules/_uid.js");
var wks = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js");
var wksExt = __webpack_require__(/*! ./_wks-ext */ "../node_modules/core-js/library/modules/_wks-ext.js");
var wksDefine = __webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js");
var enumKeys = __webpack_require__(/*! ./_enum-keys */ "../node_modules/core-js/library/modules/_enum-keys.js");
var isArray = __webpack_require__(/*! ./_is-array */ "../node_modules/core-js/library/modules/_is-array.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/library/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/library/modules/_is-object.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/library/modules/_to-object.js");
var toIObject = __webpack_require__(/*! ./_to-iobject */ "../node_modules/core-js/library/modules/_to-iobject.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/library/modules/_to-primitive.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/library/modules/_property-desc.js");
var _create = __webpack_require__(/*! ./_object-create */ "../node_modules/core-js/library/modules/_object-create.js");
var gOPNExt = __webpack_require__(/*! ./_object-gopn-ext */ "../node_modules/core-js/library/modules/_object-gopn-ext.js");
var $GOPD = __webpack_require__(/*! ./_object-gopd */ "../node_modules/core-js/library/modules/_object-gopd.js");
var $GOPS = __webpack_require__(/*! ./_object-gops */ "../node_modules/core-js/library/modules/_object-gops.js");
var $DP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/library/modules/_object-dp.js");
var $keys = __webpack_require__(/*! ./_object-keys */ "../node_modules/core-js/library/modules/_object-keys.js");
var gOPD = $GOPD.f;
var dP = $DP.f;
var gOPN = gOPNExt.f;
var $Symbol = global.Symbol;
var $JSON = global.JSON;
var _stringify = $JSON && $JSON.stringify;
var PROTOTYPE = 'prototype';
var HIDDEN = wks('_hidden');
var TO_PRIMITIVE = wks('toPrimitive');
var isEnum = {}.propertyIsEnumerable;
var SymbolRegistry = shared('symbol-registry');
var AllSymbols = shared('symbols');
var OPSymbols = shared('op-symbols');
var ObjectProto = Object[PROTOTYPE];
var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
var QObject = global.QObject;
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;

// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
var setSymbolDesc = DESCRIPTORS && $fails(function () {
  return _create(dP({}, 'a', {
    get: function () { return dP(this, 'a', { value: 7 }).a; }
  })).a != 7;
}) ? function (it, key, D) {
  var protoDesc = gOPD(ObjectProto, key);
  if (protoDesc) delete ObjectProto[key];
  dP(it, key, D);
  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
} : dP;

var wrap = function (tag) {
  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
  sym._k = tag;
  return sym;
};

var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
  return typeof it == 'symbol';
} : function (it) {
  return it instanceof $Symbol;
};

var $defineProperty = function defineProperty(it, key, D) {
  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
  anObject(it);
  key = toPrimitive(key, true);
  anObject(D);
  if (has(AllSymbols, key)) {
    if (!D.enumerable) {
      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
      it[HIDDEN][key] = true;
    } else {
      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
      D = _create(D, { enumerable: createDesc(0, false) });
    } return setSymbolDesc(it, key, D);
  } return dP(it, key, D);
};
var $defineProperties = function defineProperties(it, P) {
  anObject(it);
  var keys = enumKeys(P = toIObject(P));
  var i = 0;
  var l = keys.length;
  var key;
  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
  return it;
};
var $create = function create(it, P) {
  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
};
var $propertyIsEnumerable = function propertyIsEnumerable(key) {
  var E = isEnum.call(this, key = toPrimitive(key, true));
  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
  it = toIObject(it);
  key = toPrimitive(key, true);
  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
  var D = gOPD(it, key);
  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
  return D;
};
var $getOwnPropertyNames = function getOwnPropertyNames(it) {
  var names = gOPN(toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
  } return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
  var IS_OP = it === ObjectProto;
  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
  } return result;
};

// 19.4.1.1 Symbol([description])
if (!USE_NATIVE) {
  $Symbol = function Symbol() {
    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
    var $set = function (value) {
      if (this === ObjectProto) $set.call(OPSymbols, value);
      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
      setSymbolDesc(this, tag, createDesc(1, value));
    };
    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
    return wrap(tag);
  };
  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
    return this._k;
  });

  $GOPD.f = $getOwnPropertyDescriptor;
  $DP.f = $defineProperty;
  __webpack_require__(/*! ./_object-gopn */ "../node_modules/core-js/library/modules/_object-gopn.js").f = gOPNExt.f = $getOwnPropertyNames;
  __webpack_require__(/*! ./_object-pie */ "../node_modules/core-js/library/modules/_object-pie.js").f = $propertyIsEnumerable;
  $GOPS.f = $getOwnPropertySymbols;

  if (DESCRIPTORS && !__webpack_require__(/*! ./_library */ "../node_modules/core-js/library/modules/_library.js")) {
    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
  }

  wksExt.f = function (name) {
    return wrap(wks(name));
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });

for (var es6Symbols = (
  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);

for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);

$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
  // 19.4.2.1 Symbol.for(key)
  'for': function (key) {
    return has(SymbolRegistry, key += '')
      ? SymbolRegistry[key]
      : SymbolRegistry[key] = $Symbol(key);
  },
  // 19.4.2.5 Symbol.keyFor(sym)
  keyFor: function keyFor(sym) {
    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
  },
  useSetter: function () { setter = true; },
  useSimple: function () { setter = false; }
});

$export($export.S + $export.F * !USE_NATIVE, 'Object', {
  // 19.1.2.2 Object.create(O [, Properties])
  create: $create,
  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
  defineProperty: $defineProperty,
  // 19.1.2.3 Object.defineProperties(O, Properties)
  defineProperties: $defineProperties,
  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
  // 19.1.2.7 Object.getOwnPropertyNames(O)
  getOwnPropertyNames: $getOwnPropertyNames,
  // 19.1.2.8 Object.getOwnPropertySymbols(O)
  getOwnPropertySymbols: $getOwnPropertySymbols
});

// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
// https://bugs.chromium.org/p/v8/issues/detail?id=3443
var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });

$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
    return $GOPS.f(toObject(it));
  }
});

// 24.3.2 JSON.stringify(value [, replacer [, space]])
$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
  var S = $Symbol();
  // MS Edge converts symbol values to JSON as {}
  // WebKit converts symbol values to JSON as null
  // V8 throws on boxed symbols
  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
})), 'JSON', {
  stringify: function stringify(it) {
    var args = [it];
    var i = 1;
    var replacer, $replacer;
    while (arguments.length > i) args.push(arguments[i++]);
    $replacer = replacer = args[1];
    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
    if (!isArray(replacer)) replacer = function (key, value) {
      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
      if (!isSymbol(value)) return value;
    };
    args[1] = replacer;
    return _stringify.apply($JSON, args);
  }
});

// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
// 19.4.3.5 Symbol.prototype[@@toStringTag]
setToStringTag($Symbol, 'Symbol');
// 20.2.1.9 Math[@@toStringTag]
setToStringTag(Math, 'Math', true);
// 24.3.3 JSON[@@toStringTag]
setToStringTag(global.JSON, 'JSON', true);


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.symbol.async-iterator.js":
/*!****************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.symbol.async-iterator.js ***!
  \****************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js")('asyncIterator');


/***/ }),

/***/ "../node_modules/core-js/library/modules/es7.symbol.observable.js":
/*!************************************************************************!*\
  !*** ../node_modules/core-js/library/modules/es7.symbol.observable.js ***!
  \************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./_wks-define */ "../node_modules/core-js/library/modules/_wks-define.js")('observable');


/***/ }),

/***/ "../node_modules/core-js/library/modules/web.dom.iterable.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/library/modules/web.dom.iterable.js ***!
  \*******************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

__webpack_require__(/*! ./es6.array.iterator */ "../node_modules/core-js/library/modules/es6.array.iterator.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/library/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/library/modules/_hide.js");
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/library/modules/_iterators.js");
var TO_STRING_TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/library/modules/_wks.js")('toStringTag');

var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +
  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +
  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +
  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +
  'TextTrackList,TouchList').split(',');

for (var i = 0; i < DOMIterables.length; i++) {
  var NAME = DOMIterables[i];
  var Collection = global[NAME];
  var proto = Collection && Collection.prototype;
  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
  Iterators[NAME] = Iterators.Array;
}


/***/ }),

/***/ "../node_modules/core-js/modules/_a-function.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_a-function.js ***!
  \******************************************************/
/***/ ((module) => {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_an-instance.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_an-instance.js ***!
  \*******************************************************/
/***/ ((module) => {

module.exports = function (it, Constructor, name, forbiddenField) {
  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
    throw TypeError(name + ': incorrect invocation!');
  } return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_an-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_an-object.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_classof.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_classof.js ***!
  \***************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (e) { /* empty */ }
};

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_cof.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_cof.js ***!
  \***********************************************/
/***/ ((module) => {

var toString = {}.toString;

module.exports = function (it) {
  return toString.call(it).slice(8, -1);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_core.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_core.js ***!
  \************************************************/
/***/ ((module) => {

var core = module.exports = { version: '2.6.12' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/modules/_ctx.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_ctx.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// optional / simple context binding
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/modules/_a-function.js");
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_descriptors.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_descriptors.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/modules/_dom-create.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_dom-create.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),

/***/ "../node_modules/core-js/modules/_export.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_export.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js");
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
  var key, own, out, exp;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    // export native or passed
    out = (own ? target : source)[key];
    // bind timers to global for call from export context
    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // extend global
    if (target) redefine(target, key, out, type & $export.U);
    // export
    if (exports[key] != out) hide(exports, key, exp);
    if (IS_PROTO && expProto[key] != out) expProto[key] = out;
  }
};
global.core = core;
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),

/***/ "../node_modules/core-js/modules/_fails.js":
/*!*************************************************!*\
  !*** ../node_modules/core-js/modules/_fails.js ***!
  \*************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return !!exec();
  } catch (e) {
    return true;
  }
};


/***/ }),

/***/ "../node_modules/core-js/modules/_for-of.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_for-of.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js");
var call = __webpack_require__(/*! ./_iter-call */ "../node_modules/core-js/modules/_iter-call.js");
var isArrayIter = __webpack_require__(/*! ./_is-array-iter */ "../node_modules/core-js/modules/_is-array-iter.js");
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ "../node_modules/core-js/modules/core.get-iterator-method.js");
var BREAK = {};
var RETURN = {};
var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
  var f = ctx(fn, that, entries ? 2 : 1);
  var index = 0;
  var length, step, iterator, result;
  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
  // fast case for arrays with default iterator
  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
    if (result === BREAK || result === RETURN) return result;
  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
    result = call(iterator, f, step.value, entries);
    if (result === BREAK || result === RETURN) return result;
  }
};
exports.BREAK = BREAK;
exports.RETURN = RETURN;


/***/ }),

/***/ "../node_modules/core-js/modules/_function-to-string.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/_function-to-string.js ***!
  \**************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('native-function-to-string', Function.toString);


/***/ }),

/***/ "../node_modules/core-js/modules/_global.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_global.js ***!
  \**************************************************/
/***/ ((module) => {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),

/***/ "../node_modules/core-js/modules/_has.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_has.js ***!
  \***********************************************/
/***/ ((module) => {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_hide.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_hide.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js");
var createDesc = __webpack_require__(/*! ./_property-desc */ "../node_modules/core-js/modules/_property-desc.js");
module.exports = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_html.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_html.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var document = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").document;
module.exports = document && document.documentElement;


/***/ }),

/***/ "../node_modules/core-js/modules/_ie8-dom-define.js":
/*!**********************************************************!*\
  !*** ../node_modules/core-js/modules/_ie8-dom-define.js ***!
  \**********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

module.exports = !__webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") && !__webpack_require__(/*! ./_fails */ "../node_modules/core-js/modules/_fails.js")(function () {
  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/modules/_dom-create.js")('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),

/***/ "../node_modules/core-js/modules/_invoke.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_invoke.js ***!
  \**************************************************/
/***/ ((module) => {

// fast apply, http://jsperf.lnkit.com/fast-apply/5
module.exports = function (fn, args, that) {
  var un = that === undefined;
  switch (args.length) {
    case 0: return un ? fn()
                      : fn.call(that);
    case 1: return un ? fn(args[0])
                      : fn.call(that, args[0]);
    case 2: return un ? fn(args[0], args[1])
                      : fn.call(that, args[0], args[1]);
    case 3: return un ? fn(args[0], args[1], args[2])
                      : fn.call(that, args[0], args[1], args[2]);
    case 4: return un ? fn(args[0], args[1], args[2], args[3])
                      : fn.call(that, args[0], args[1], args[2], args[3]);
  } return fn.apply(that, args);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-array-iter.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_is-array-iter.js ***!
  \*********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// check on default Array iterator
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/modules/_iterators.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('iterator');
var ArrayProto = Array.prototype;

module.exports = function (it) {
  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_is-object.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_is-object.js ***!
  \*****************************************************/
/***/ ((module) => {

module.exports = function (it) {
  return typeof it === 'object' ? it !== null : typeof it === 'function';
};


/***/ }),

/***/ "../node_modules/core-js/modules/_iter-call.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_iter-call.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// call something on iterator step with safe closing on error
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
module.exports = function (iterator, fn, value, entries) {
  try {
    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
  // 7.4.6 IteratorClose(iterator, completion)
  } catch (e) {
    var ret = iterator['return'];
    if (ret !== undefined) anObject(ret.call(iterator));
    throw e;
  }
};


/***/ }),

/***/ "../node_modules/core-js/modules/_iter-detect.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_iter-detect.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('iterator');
var SAFE_CLOSING = false;

try {
  var riter = [7][ITERATOR]();
  riter['return'] = function () { SAFE_CLOSING = true; };
  // eslint-disable-next-line no-throw-literal
  Array.from(riter, function () { throw 2; });
} catch (e) { /* empty */ }

module.exports = function (exec, skipClosing) {
  if (!skipClosing && !SAFE_CLOSING) return false;
  var safe = false;
  try {
    var arr = [7];
    var iter = arr[ITERATOR]();
    iter.next = function () { return { done: safe = true }; };
    arr[ITERATOR] = function () { return iter; };
    exec(arr);
  } catch (e) { /* empty */ }
  return safe;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_iterators.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_iterators.js ***!
  \*****************************************************/
/***/ ((module) => {

module.exports = {};


/***/ }),

/***/ "../node_modules/core-js/modules/_library.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_library.js ***!
  \***************************************************/
/***/ ((module) => {

module.exports = false;


/***/ }),

/***/ "../node_modules/core-js/modules/_microtask.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_microtask.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var macrotask = __webpack_require__(/*! ./_task */ "../node_modules/core-js/modules/_task.js").set;
var Observer = global.MutationObserver || global.WebKitMutationObserver;
var process = global.process;
var Promise = global.Promise;
var isNode = __webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js")(process) == 'process';

module.exports = function () {
  var head, last, notify;

  var flush = function () {
    var parent, fn;
    if (isNode && (parent = process.domain)) parent.exit();
    while (head) {
      fn = head.fn;
      head = head.next;
      try {
        fn();
      } catch (e) {
        if (head) notify();
        else last = undefined;
        throw e;
      }
    } last = undefined;
    if (parent) parent.enter();
  };

  // Node.js
  if (isNode) {
    notify = function () {
      process.nextTick(flush);
    };
  // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339
  } else if (Observer && !(global.navigator && global.navigator.standalone)) {
    var toggle = true;
    var node = document.createTextNode('');
    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
    notify = function () {
      node.data = toggle = !toggle;
    };
  // environments with maybe non-completely correct, but existent Promise
  } else if (Promise && Promise.resolve) {
    // Promise.resolve without an argument throws an error in LG WebOS 2
    var promise = Promise.resolve(undefined);
    notify = function () {
      promise.then(flush);
    };
  // for other environments - macrotask based on:
  // - setImmediate
  // - MessageChannel
  // - window.postMessag
  // - onreadystatechange
  // - setTimeout
  } else {
    notify = function () {
      // strange IE + webpack dev server bug - use .call(global)
      macrotask.call(global, flush);
    };
  }

  return function (fn) {
    var task = { fn: fn, next: undefined };
    if (last) last.next = task;
    if (!head) {
      head = task;
      notify();
    } last = task;
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_new-promise-capability.js":
/*!******************************************************************!*\
  !*** ../node_modules/core-js/modules/_new-promise-capability.js ***!
  \******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 25.4.1.5 NewPromiseCapability(C)
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/modules/_a-function.js");

function PromiseCapability(C) {
  var resolve, reject;
  this.promise = new C(function ($$resolve, $$reject) {
    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
    resolve = $$resolve;
    reject = $$reject;
  });
  this.resolve = aFunction(resolve);
  this.reject = aFunction(reject);
}

module.exports.f = function (C) {
  return new PromiseCapability(C);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_object-dp.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_object-dp.js ***!
  \*****************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ "../node_modules/core-js/modules/_ie8-dom-define.js");
var toPrimitive = __webpack_require__(/*! ./_to-primitive */ "../node_modules/core-js/modules/_to-primitive.js");
var dP = Object.defineProperty;

exports.f = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js") ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_perform.js":
/*!***************************************************!*\
  !*** ../node_modules/core-js/modules/_perform.js ***!
  \***************************************************/
/***/ ((module) => {

module.exports = function (exec) {
  try {
    return { e: false, v: exec() };
  } catch (e) {
    return { e: true, v: e };
  }
};


/***/ }),

/***/ "../node_modules/core-js/modules/_promise-resolve.js":
/*!***********************************************************!*\
  !*** ../node_modules/core-js/modules/_promise-resolve.js ***!
  \***********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var newPromiseCapability = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/modules/_new-promise-capability.js");

module.exports = function (C, x) {
  anObject(C);
  if (isObject(x) && x.constructor === C) return x;
  var promiseCapability = newPromiseCapability.f(C);
  var resolve = promiseCapability.resolve;
  resolve(x);
  return promiseCapability.promise;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_property-desc.js":
/*!*********************************************************!*\
  !*** ../node_modules/core-js/modules/_property-desc.js ***!
  \*********************************************************/
/***/ ((module) => {

module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),

/***/ "../node_modules/core-js/modules/_redefine-all.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/modules/_redefine-all.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var redefine = __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js");
module.exports = function (target, src, safe) {
  for (var key in src) redefine(target, key, src[key], safe);
  return target;
};


/***/ }),

/***/ "../node_modules/core-js/modules/_redefine.js":
/*!****************************************************!*\
  !*** ../node_modules/core-js/modules/_redefine.js ***!
  \****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var hide = __webpack_require__(/*! ./_hide */ "../node_modules/core-js/modules/_hide.js");
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var SRC = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js")('src');
var $toString = __webpack_require__(/*! ./_function-to-string */ "../node_modules/core-js/modules/_function-to-string.js");
var TO_STRING = 'toString';
var TPL = ('' + $toString).split(TO_STRING);

__webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js").inspectSource = function (it) {
  return $toString.call(it);
};

(module.exports = function (O, key, val, safe) {
  var isFunction = typeof val == 'function';
  if (isFunction) has(val, 'name') || hide(val, 'name', key);
  if (O[key] === val) return;
  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
  if (O === global) {
    O[key] = val;
  } else if (!safe) {
    delete O[key];
    hide(O, key, val);
  } else if (O[key]) {
    O[key] = val;
  } else {
    hide(O, key, val);
  }
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, TO_STRING, function toString() {
  return typeof this == 'function' && this[SRC] || $toString.call(this);
});


/***/ }),

/***/ "../node_modules/core-js/modules/_set-species.js":
/*!*******************************************************!*\
  !*** ../node_modules/core-js/modules/_set-species.js ***!
  \*******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var dP = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js");
var DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ "../node_modules/core-js/modules/_descriptors.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('species');

module.exports = function (KEY) {
  var C = global[KEY];
  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
    configurable: true,
    get: function () { return this; }
  });
};


/***/ }),

/***/ "../node_modules/core-js/modules/_set-to-string-tag.js":
/*!*************************************************************!*\
  !*** ../node_modules/core-js/modules/_set-to-string-tag.js ***!
  \*************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var def = __webpack_require__(/*! ./_object-dp */ "../node_modules/core-js/modules/_object-dp.js").f;
var has = __webpack_require__(/*! ./_has */ "../node_modules/core-js/modules/_has.js");
var TAG = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag');

module.exports = function (it, tag, stat) {
  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
};


/***/ }),

/***/ "../node_modules/core-js/modules/_shared.js":
/*!**************************************************!*\
  !*** ../node_modules/core-js/modules/_shared.js ***!
  \**************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(/*! ./_library */ "../node_modules/core-js/modules/_library.js") ? 'pure' : 'global',
  copyright: '© 2020 Denis Pushkarev (zloirock.ru)'
});


/***/ }),

/***/ "../node_modules/core-js/modules/_species-constructor.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/modules/_species-constructor.js ***!
  \***************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.3.20 SpeciesConstructor(O, defaultConstructor)
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/modules/_a-function.js");
var SPECIES = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('species');
module.exports = function (O, D) {
  var C = anObject(O).constructor;
  var S;
  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_task.js":
/*!************************************************!*\
  !*** ../node_modules/core-js/modules/_task.js ***!
  \************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js");
var invoke = __webpack_require__(/*! ./_invoke */ "../node_modules/core-js/modules/_invoke.js");
var html = __webpack_require__(/*! ./_html */ "../node_modules/core-js/modules/_html.js");
var cel = __webpack_require__(/*! ./_dom-create */ "../node_modules/core-js/modules/_dom-create.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var process = global.process;
var setTask = global.setImmediate;
var clearTask = global.clearImmediate;
var MessageChannel = global.MessageChannel;
var Dispatch = global.Dispatch;
var counter = 0;
var queue = {};
var ONREADYSTATECHANGE = 'onreadystatechange';
var defer, channel, port;
var run = function () {
  var id = +this;
  // eslint-disable-next-line no-prototype-builtins
  if (queue.hasOwnProperty(id)) {
    var fn = queue[id];
    delete queue[id];
    fn();
  }
};
var listener = function (event) {
  run.call(event.data);
};
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
if (!setTask || !clearTask) {
  setTask = function setImmediate(fn) {
    var args = [];
    var i = 1;
    while (arguments.length > i) args.push(arguments[i++]);
    queue[++counter] = function () {
      // eslint-disable-next-line no-new-func
      invoke(typeof fn == 'function' ? fn : Function(fn), args);
    };
    defer(counter);
    return counter;
  };
  clearTask = function clearImmediate(id) {
    delete queue[id];
  };
  // Node.js 0.8-
  if (__webpack_require__(/*! ./_cof */ "../node_modules/core-js/modules/_cof.js")(process) == 'process') {
    defer = function (id) {
      process.nextTick(ctx(run, id, 1));
    };
  // Sphere (JS game engine) Dispatch API
  } else if (Dispatch && Dispatch.now) {
    defer = function (id) {
      Dispatch.now(ctx(run, id, 1));
    };
  // Browsers with MessageChannel, includes WebWorkers
  } else if (MessageChannel) {
    channel = new MessageChannel();
    port = channel.port2;
    channel.port1.onmessage = listener;
    defer = ctx(port.postMessage, port, 1);
  // Browsers with postMessage, skip WebWorkers
  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
    defer = function (id) {
      global.postMessage(id + '', '*');
    };
    global.addEventListener('message', listener, false);
  // IE8-
  } else if (ONREADYSTATECHANGE in cel('script')) {
    defer = function (id) {
      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
        html.removeChild(this);
        run.call(id);
      };
    };
  // Rest old browsers
  } else {
    defer = function (id) {
      setTimeout(ctx(run, id, 1), 0);
    };
  }
}
module.exports = {
  set: setTask,
  clear: clearTask
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-integer.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_to-integer.js ***!
  \******************************************************/
/***/ ((module) => {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-length.js":
/*!*****************************************************!*\
  !*** ../node_modules/core-js/modules/_to-length.js ***!
  \*****************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.15 ToLength
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),

/***/ "../node_modules/core-js/modules/_to-primitive.js":
/*!********************************************************!*\
  !*** ../node_modules/core-js/modules/_to-primitive.js ***!
  \********************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),

/***/ "../node_modules/core-js/modules/_uid.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_uid.js ***!
  \***********************************************/
/***/ ((module) => {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),

/***/ "../node_modules/core-js/modules/_user-agent.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/_user-agent.js ***!
  \******************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var navigator = global.navigator;

module.exports = navigator && navigator.userAgent || '';


/***/ }),

/***/ "../node_modules/core-js/modules/_wks.js":
/*!***********************************************!*\
  !*** ../node_modules/core-js/modules/_wks.js ***!
  \***********************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var store = __webpack_require__(/*! ./_shared */ "../node_modules/core-js/modules/_shared.js")('wks');
var uid = __webpack_require__(/*! ./_uid */ "../node_modules/core-js/modules/_uid.js");
var Symbol = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js").Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),

/***/ "../node_modules/core-js/modules/core.get-iterator-method.js":
/*!*******************************************************************!*\
  !*** ../node_modules/core-js/modules/core.get-iterator-method.js ***!
  \*******************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/modules/_classof.js");
var ITERATOR = __webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('iterator');
var Iterators = __webpack_require__(/*! ./_iterators */ "../node_modules/core-js/modules/_iterators.js");
module.exports = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js").getIteratorMethod = function (it) {
  if (it != undefined) return it[ITERATOR]
    || it['@@iterator']
    || Iterators[classof(it)];
};


/***/ }),

/***/ "../node_modules/core-js/modules/es6.object.to-string.js":
/*!***************************************************************!*\
  !*** ../node_modules/core-js/modules/es6.object.to-string.js ***!
  \***************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

// 19.1.3.6 Object.prototype.toString()
var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/modules/_classof.js");
var test = {};
test[__webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('toStringTag')] = 'z';
if (test + '' != '[object z]') {
  __webpack_require__(/*! ./_redefine */ "../node_modules/core-js/modules/_redefine.js")(Object.prototype, 'toString', function toString() {
    return '[object ' + classof(this) + ']';
  }, true);
}


/***/ }),

/***/ "../node_modules/core-js/modules/es6.promise.js":
/*!******************************************************!*\
  !*** ../node_modules/core-js/modules/es6.promise.js ***!
  \******************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";

var LIBRARY = __webpack_require__(/*! ./_library */ "../node_modules/core-js/modules/_library.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var ctx = __webpack_require__(/*! ./_ctx */ "../node_modules/core-js/modules/_ctx.js");
var classof = __webpack_require__(/*! ./_classof */ "../node_modules/core-js/modules/_classof.js");
var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var isObject = __webpack_require__(/*! ./_is-object */ "../node_modules/core-js/modules/_is-object.js");
var aFunction = __webpack_require__(/*! ./_a-function */ "../node_modules/core-js/modules/_a-function.js");
var anInstance = __webpack_require__(/*! ./_an-instance */ "../node_modules/core-js/modules/_an-instance.js");
var forOf = __webpack_require__(/*! ./_for-of */ "../node_modules/core-js/modules/_for-of.js");
var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "../node_modules/core-js/modules/_species-constructor.js");
var task = __webpack_require__(/*! ./_task */ "../node_modules/core-js/modules/_task.js").set;
var microtask = __webpack_require__(/*! ./_microtask */ "../node_modules/core-js/modules/_microtask.js")();
var newPromiseCapabilityModule = __webpack_require__(/*! ./_new-promise-capability */ "../node_modules/core-js/modules/_new-promise-capability.js");
var perform = __webpack_require__(/*! ./_perform */ "../node_modules/core-js/modules/_perform.js");
var userAgent = __webpack_require__(/*! ./_user-agent */ "../node_modules/core-js/modules/_user-agent.js");
var promiseResolve = __webpack_require__(/*! ./_promise-resolve */ "../node_modules/core-js/modules/_promise-resolve.js");
var PROMISE = 'Promise';
var TypeError = global.TypeError;
var process = global.process;
var versions = process && process.versions;
var v8 = versions && versions.v8 || '';
var $Promise = global[PROMISE];
var isNode = classof(process) == 'process';
var empty = function () { /* empty */ };
var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;

var USE_NATIVE = !!function () {
  try {
    // correct subclassing with @@species support
    var promise = $Promise.resolve(1);
    var FakePromise = (promise.constructor = {})[__webpack_require__(/*! ./_wks */ "../node_modules/core-js/modules/_wks.js")('species')] = function (exec) {
      exec(empty, empty);
    };
    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
    return (isNode || typeof PromiseRejectionEvent == 'function')
      && promise.then(empty) instanceof FakePromise
      // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
      // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
      // we can't detect it synchronously, so just check versions
      && v8.indexOf('6.6') !== 0
      && userAgent.indexOf('Chrome/66') === -1;
  } catch (e) { /* empty */ }
}();

// helpers
var isThenable = function (it) {
  var then;
  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
};
var notify = function (promise, isReject) {
  if (promise._n) return;
  promise._n = true;
  var chain = promise._c;
  microtask(function () {
    var value = promise._v;
    var ok = promise._s == 1;
    var i = 0;
    var run = function (reaction) {
      var handler = ok ? reaction.ok : reaction.fail;
      var resolve = reaction.resolve;
      var reject = reaction.reject;
      var domain = reaction.domain;
      var result, then, exited;
      try {
        if (handler) {
          if (!ok) {
            if (promise._h == 2) onHandleUnhandled(promise);
            promise._h = 1;
          }
          if (handler === true) result = value;
          else {
            if (domain) domain.enter();
            result = handler(value); // may throw
            if (domain) {
              domain.exit();
              exited = true;
            }
          }
          if (result === reaction.promise) {
            reject(TypeError('Promise-chain cycle'));
          } else if (then = isThenable(result)) {
            then.call(result, resolve, reject);
          } else resolve(result);
        } else reject(value);
      } catch (e) {
        if (domain && !exited) domain.exit();
        reject(e);
      }
    };
    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
    promise._c = [];
    promise._n = false;
    if (isReject && !promise._h) onUnhandled(promise);
  });
};
var onUnhandled = function (promise) {
  task.call(global, function () {
    var value = promise._v;
    var unhandled = isUnhandled(promise);
    var result, handler, console;
    if (unhandled) {
      result = perform(function () {
        if (isNode) {
          process.emit('unhandledRejection', value, promise);
        } else if (handler = global.onunhandledrejection) {
          handler({ promise: promise, reason: value });
        } else if ((console = global.console) && console.error) {
          console.error('Unhandled promise rejection', value);
        }
      });
      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
    } promise._a = undefined;
    if (unhandled && result.e) throw result.v;
  });
};
var isUnhandled = function (promise) {
  return promise._h !== 1 && (promise._a || promise._c).length === 0;
};
var onHandleUnhandled = function (promise) {
  task.call(global, function () {
    var handler;
    if (isNode) {
      process.emit('rejectionHandled', promise);
    } else if (handler = global.onrejectionhandled) {
      handler({ promise: promise, reason: promise._v });
    }
  });
};
var $reject = function (value) {
  var promise = this;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  promise._v = value;
  promise._s = 2;
  if (!promise._a) promise._a = promise._c.slice();
  notify(promise, true);
};
var $resolve = function (value) {
  var promise = this;
  var then;
  if (promise._d) return;
  promise._d = true;
  promise = promise._w || promise; // unwrap
  try {
    if (promise === value) throw TypeError("Promise can't be resolved itself");
    if (then = isThenable(value)) {
      microtask(function () {
        var wrapper = { _w: promise, _d: false }; // wrap
        try {
          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
        } catch (e) {
          $reject.call(wrapper, e);
        }
      });
    } else {
      promise._v = value;
      promise._s = 1;
      notify(promise, false);
    }
  } catch (e) {
    $reject.call({ _w: promise, _d: false }, e); // wrap
  }
};

// constructor polyfill
if (!USE_NATIVE) {
  // 25.4.3.1 Promise(executor)
  $Promise = function Promise(executor) {
    anInstance(this, $Promise, PROMISE, '_h');
    aFunction(executor);
    Internal.call(this);
    try {
      executor(ctx($resolve, this, 1), ctx($reject, this, 1));
    } catch (err) {
      $reject.call(this, err);
    }
  };
  // eslint-disable-next-line no-unused-vars
  Internal = function Promise(executor) {
    this._c = [];             // <- awaiting reactions
    this._a = undefined;      // <- checked in isUnhandled reactions
    this._s = 0;              // <- state
    this._d = false;          // <- done
    this._v = undefined;      // <- value
    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
    this._n = false;          // <- notify
  };
  Internal.prototype = __webpack_require__(/*! ./_redefine-all */ "../node_modules/core-js/modules/_redefine-all.js")($Promise.prototype, {
    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
    then: function then(onFulfilled, onRejected) {
      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
      reaction.fail = typeof onRejected == 'function' && onRejected;
      reaction.domain = isNode ? process.domain : undefined;
      this._c.push(reaction);
      if (this._a) this._a.push(reaction);
      if (this._s) notify(this, false);
      return reaction.promise;
    },
    // 25.4.5.1 Promise.prototype.catch(onRejected)
    'catch': function (onRejected) {
      return this.then(undefined, onRejected);
    }
  });
  OwnPromiseCapability = function () {
    var promise = new Internal();
    this.promise = promise;
    this.resolve = ctx($resolve, promise, 1);
    this.reject = ctx($reject, promise, 1);
  };
  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
    return C === $Promise || C === Wrapper
      ? new OwnPromiseCapability(C)
      : newGenericPromiseCapability(C);
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
__webpack_require__(/*! ./_set-to-string-tag */ "../node_modules/core-js/modules/_set-to-string-tag.js")($Promise, PROMISE);
__webpack_require__(/*! ./_set-species */ "../node_modules/core-js/modules/_set-species.js")(PROMISE);
Wrapper = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js")[PROMISE];

// statics
$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
  // 25.4.4.5 Promise.reject(r)
  reject: function reject(r) {
    var capability = newPromiseCapability(this);
    var $$reject = capability.reject;
    $$reject(r);
    return capability.promise;
  }
});
$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
  // 25.4.4.6 Promise.resolve(x)
  resolve: function resolve(x) {
    return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);
  }
});
$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(/*! ./_iter-detect */ "../node_modules/core-js/modules/_iter-detect.js")(function (iter) {
  $Promise.all(iter)['catch'](empty);
})), PROMISE, {
  // 25.4.4.1 Promise.all(iterable)
  all: function all(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var resolve = capability.resolve;
    var reject = capability.reject;
    var result = perform(function () {
      var values = [];
      var index = 0;
      var remaining = 1;
      forOf(iterable, false, function (promise) {
        var $index = index++;
        var alreadyCalled = false;
        values.push(undefined);
        remaining++;
        C.resolve(promise).then(function (value) {
          if (alreadyCalled) return;
          alreadyCalled = true;
          values[$index] = value;
          --remaining || resolve(values);
        }, reject);
      });
      --remaining || resolve(values);
    });
    if (result.e) reject(result.v);
    return capability.promise;
  },
  // 25.4.4.4 Promise.race(iterable)
  race: function race(iterable) {
    var C = this;
    var capability = newPromiseCapability(C);
    var reject = capability.reject;
    var result = perform(function () {
      forOf(iterable, false, function (promise) {
        C.resolve(promise).then(capability.resolve, reject);
      });
    });
    if (result.e) reject(result.v);
    return capability.promise;
  }
});


/***/ }),

/***/ "../node_modules/core-js/modules/es7.promise.finally.js":
/*!**************************************************************!*\
  !*** ../node_modules/core-js/modules/es7.promise.finally.js ***!
  \**************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {

"use strict";
// https://github.com/tc39/proposal-promise-finally

var $export = __webpack_require__(/*! ./_export */ "../node_modules/core-js/modules/_export.js");
var core = __webpack_require__(/*! ./_core */ "../node_modules/core-js/modules/_core.js");
var global = __webpack_require__(/*! ./_global */ "../node_modules/core-js/modules/_global.js");
var speciesConstructor = __webpack_require__(/*! ./_species-constructor */ "../node_modules/core-js/modules/_species-constructor.js");
var promiseResolve = __webpack_require__(/*! ./_promise-resolve */ "../node_modules/core-js/modules/_promise-resolve.js");

$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {
  var C = speciesConstructor(this, core.Promise || global.Promise);
  var isFunction = typeof onFinally == 'function';
  return this.then(
    isFunction ? function (x) {
      return promiseResolve(C, onFinally()).then(function () { return x; });
    } : onFinally,
    isFunction ? function (e) {
      return promiseResolve(C, onFinally()).then(function () { throw e; });
    } : onFinally
  );
} });


/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
/******/ 	
/******/ 	// startup
/******/ 	// Load entry module and return exports
/******/ 	// This entry module is referenced by other modules so it can't be inlined
/******/ 	var __webpack_exports__ = __webpack_require__("../assets/dev/js/preview/preview.js");
/******/ 	
/******/ })()
;
//# sourceMappingURL=preview.js.mapassets/js/animated-headline.37960d9fb9ab8b6e43cd.bundle.min.js000064400000017307150755004310017406 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[26],{9237:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,window.elementorCommon&&window.elementorCommon.helpers.softDeprecated('Scroll util from "/dev/js/frontend/utils/scroll"',"3.1.0","elementorModules.utils.Scroll");var i=elementorModules.utils.Scroll;t.default=i},7750:(e,t,i)=>{"use strict";var n=i(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var s=n(i(9237)),a=elementorModules.frontend.handlers.Base.extend({svgPaths:{circle:["M325,18C228.7-8.3,118.5,8.3,78,21C22.4,38.4,4.6,54.6,5.6,77.6c1.4,32.4,52.2,54,142.6,63.7 c66.2,7.1,212.2,7.5,273.5-8.3c64.4-16.6,104.3-57.6,33.8-98.2C386.7-4.9,179.4-1.4,126.3,20.7"],underline_zigzag:["M9.3,127.3c49.3-3,150.7-7.6,199.7-7.4c121.9,0.4,189.9,0.4,282.3,7.2C380.1,129.6,181.2,130.6,70,139 c82.6-2.9,254.2-1,335.9,1.3c-56,1.4-137.2-0.3-197.1,9"],x:["M497.4,23.9C301.6,40,155.9,80.6,4,144.4","M14.1,27.6c204.5,20.3,393.8,74,467.3,111.7"],strikethrough:["M3,75h493.5"],curly:["M3,146.1c17.1-8.8,33.5-17.8,51.4-17.8c15.6,0,17.1,18.1,30.2,18.1c22.9,0,36-18.6,53.9-18.6 c17.1,0,21.3,18.5,37.5,18.5c21.3,0,31.8-18.6,49-18.6c22.1,0,18.8,18.8,36.8,18.8c18.8,0,37.5-18.6,49-18.6c20.4,0,17.1,19,36.8,19 c22.9,0,36.8-20.6,54.7-18.6c17.7,1.4,7.1,19.5,33.5,18.8c17.1,0,47.2-6.5,61.1-15.6"],diagonal:["M13.5,15.5c131,13.7,289.3,55.5,475,125.5"],double:["M8.4,143.1c14.2-8,97.6-8.8,200.6-9.2c122.3-0.4,287.5,7.2,287.5,7.2","M8,19.4c72.3-5.3,162-7.8,216-7.8c54,0,136.2,0,267,7.8"],double_underline:["M5,125.4c30.5-3.8,137.9-7.6,177.3-7.6c117.2,0,252.2,4.7,312.7,7.6","M26.9,143.8c55.1-6.1,126-6.3,162.2-6.1c46.5,0.2,203.9,3.2,268.9,6.4"],underline:["M7.7,145.6C109,125,299.9,116.2,401,121.3c42.1,2.2,87.6,11.8,87.3,25.7"]},getDefaultSettings(){const e=this.getElementSettings("rotate_iteration_delay"),t={animationDelay:e||2500,lettersDelay:.02*e||50,typeLettersDelay:.06*e||150,selectionDuration:.2*e||500,revealDuration:.24*e||600,revealAnimationDelay:.6*e||1500,highlightAnimationDuration:this.getElementSettings("highlight_animation_duration")||1200,highlightAnimationDelay:this.getElementSettings("highlight_iteration_delay")||8e3};return t.typeAnimationDelay=t.selectionDuration+800,t.selectors={headline:".elementor-headline",dynamicWrapper:".elementor-headline-dynamic-wrapper",dynamicText:".elementor-headline-dynamic-text"},t.classes={dynamicText:"elementor-headline-dynamic-text",dynamicLetter:"elementor-headline-dynamic-letter",textActive:"elementor-headline-text-active",textInactive:"elementor-headline-text-inactive",letters:"elementor-headline-letters",animationIn:"elementor-headline-animation-in",typeSelected:"elementor-headline-typing-selected",activateHighlight:"e-animated",hideHighlight:"e-hide-highlight"},t},getDefaultElements(){var e=this.getSettings("selectors");return{$headline:this.$element.find(e.headline),$dynamicWrapper:this.$element.find(e.dynamicWrapper),$dynamicText:this.$element.find(e.dynamicText)}},getNextWord:e=>e.is(":last-child")?e.parent().children().eq(0):e.next(),switchWord(e,t){e.removeClass("elementor-headline-text-active").addClass("elementor-headline-text-inactive"),t.removeClass("elementor-headline-text-inactive").addClass("elementor-headline-text-active"),this.setDynamicWrapperWidth(t)},singleLetters(){var e=this.getSettings("classes");this.elements.$dynamicText.each((function(){var t=jQuery(this),i=t.text().split(""),n=t.hasClass(e.textActive);t.empty(),i.forEach((function(i){var s=jQuery("<span>",{class:e.dynamicLetter}).text(i);n&&s.addClass(e.animationIn),t.append(s)})),t.css("opacity",1)}))},showLetter(e,t,i,n){var s=this,a=this.getSettings("classes");e.addClass(a.animationIn),e.is(":last-child")?i||setTimeout((function(){s.hideWord(t)}),s.getSettings("animationDelay")):setTimeout((function(){s.showLetter(e.next(),t,i,n)}),n)},hideLetter(e,t,i,n){var s=this,a=this.getSettings();e.removeClass(a.classes.animationIn),e.is(":last-child")?i&&setTimeout((function(){s.hideWord(s.getNextWord(t))}),s.getSettings("animationDelay")):setTimeout((function(){s.hideLetter(e.next(),t,i,n)}),n)},showWord(e,t){var i=this,n=i.getSettings(),s=i.getElementSettings("animation_type");"typing"===s?(i.showLetter(e.find("."+n.classes.dynamicLetter).eq(0),e,!1,t),e.addClass(n.classes.textActive).removeClass(n.classes.textInactive)):"clip"===s&&i.elements.$dynamicWrapper.animate({width:e.width()+10},n.revealDuration,(function(){setTimeout((function(){i.hideWord(e)}),n.revealAnimationDelay)}))},hideWord(e){var t=this,i=t.getSettings(),n=i.classes,s="."+n.dynamicLetter,a=t.getElementSettings("animation_type"),l=t.getNextWord(e);if(this.isLoopMode||!e.is(":last-child"))if("typing"===a)t.elements.$dynamicWrapper.addClass(n.typeSelected),setTimeout((function(){t.elements.$dynamicWrapper.removeClass(n.typeSelected),e.addClass(i.classes.textInactive).removeClass(n.textActive).children(s).removeClass(n.animationIn)}),i.selectionDuration),setTimeout((function(){t.showWord(l,i.typeLettersDelay)}),i.typeAnimationDelay);else if(t.elements.$headline.hasClass(n.letters)){var r=e.children(s).length>=l.children(s).length;t.hideLetter(e.find(s).eq(0),e,r,i.lettersDelay),t.showLetter(l.find(s).eq(0),l,r,i.lettersDelay),t.setDynamicWrapperWidth(l)}else"clip"===a?t.elements.$dynamicWrapper.animate({width:"2px"},i.revealDuration,(function(){t.switchWord(e,l),t.showWord(l)})):(t.switchWord(e,l),setTimeout((function(){t.hideWord(l)}),i.animationDelay))},setDynamicWrapperWidth(e){const t=this.getElementSettings("animation_type");"clip"!==t&&"typing"!==t&&this.elements.$dynamicWrapper.css("width",e.width())},animateHeadline(){var e=this,t=e.getElementSettings("animation_type"),i=e.elements.$dynamicWrapper;"clip"===t?i.width(i.width()+10):"typing"!==t&&e.setDynamicWrapperWidth(e.elements.$dynamicText),setTimeout((function(){e.hideWord(e.elements.$dynamicText.eq(0))}),e.getSettings("animationDelay"))},getSvgPaths(e){var t=this.svgPaths[e],i=jQuery();return t.forEach((function(e){i=i.add(jQuery("<path>",{d:e}))})),i},addHighlight(){const e=this.getElementSettings(),t=jQuery("<svg>",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 500 150",preserveAspectRatio:"none"}).html(this.getSvgPaths(e.marker));this.elements.$dynamicWrapper.append(t[0].outerHTML)},rotateHeadline(){var e=this.getSettings();this.elements.$headline.hasClass(e.classes.letters)&&this.singleLetters(),this.animateHeadline()},initHeadline(){const e=this.getElementSettings("headline_style");"rotate"===e?this.rotateHeadline():"highlight"===e&&(this.addHighlight(),this.activateHighlightAnimation()),this.deactivateScrollListener()},activateHighlightAnimation(){const e=this.getSettings(),t=e.classes,i=this.elements.$headline;i.removeClass(t.hideHighlight).addClass(t.activateHighlight),this.isLoopMode&&(setTimeout((()=>{i.removeClass(t.activateHighligh).addClass(t.hideHighlight)}),e.highlightAnimationDuration+.8*e.highlightAnimationDelay),setTimeout((()=>{this.activateHighlightAnimation(!1)}),e.highlightAnimationDuration+e.highlightAnimationDelay))},activateScrollListener(){this.intersectionObservers.startAnimation.observer=s.default.scrollObserver({offset:"0px 0px -100px",callback:e=>{e.isInViewport&&this.initHeadline()}}),this.intersectionObservers.startAnimation.element=this.elements.$headline[0],this.intersectionObservers.startAnimation.observer.observe(this.intersectionObservers.startAnimation.element)},deactivateScrollListener(){this.intersectionObservers.startAnimation.observer.unobserve(this.intersectionObservers.startAnimation.element)},onInit(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.intersectionObservers={startAnimation:{observer:null,element:null}},this.isLoopMode="yes"===this.getElementSettings("loop"),this.activateScrollListener()}});t.default=a}}]);assets/js/frontend.min.js000064400000047505150755004310011434 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[819],{5526:e=>{e.exports=function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},e.exports.default=e.exports,e.exports.__esModule=!0},7914:e=>{e.exports=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}},e.exports.default=e.exports,e.exports.__esModule=!0},3713:(e,t,n)=>{"use strict";var s=n(7914);n(3258);var i=s(n(8442)),o=s(n(9253)),r=s(n(4552)),a=s(n(1498)),l=s(n(1336)),c=s(n(1177));class ElementorProFrontend extends elementorModules.ViewModule{onInit(){super.onInit(),this.config=ElementorProFrontendConfig,this.modules={}}bindEvents(){jQuery(window).on("elementor/frontend/init",this.onElementorFrontendInit.bind(this))}initModules(){let e={motionFX:i.default,sticky:o.default,codeHighlight:r.default,videoPlaylist:a.default,payments:l.default,progressTracker:c.default};elementorProFrontend.trigger("elementor-pro/modules/init:before"),e=elementorFrontend.hooks.applyFilters("elementor-pro/frontend/handlers",e),jQuery.each(e,((e,t)=>{this.modules[e]=new t})),this.modules.linkActions={addAction:(...e)=>{elementorFrontend.utils.urlActions.addAction(...e)}}}onElementorFrontendInit(){this.initModules()}}window.elementorProFrontend=new ElementorProFrontend},3258:(e,t,n)=>{"use strict";n.p=ElementorProFrontendConfig.urls.assets+"js/"},4552:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("code-highlight",(()=>n.e(714).then(n.bind(n,3929))))}}t.default=_default},8442:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=s(n(5542));class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("global",i.default,null)}}t.default=_default},5542:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=s(n(6829));class _default extends elementorModules.frontend.handlers.Base{__construct(...e){super.__construct(...e),this.toggle=elementorFrontend.debounce(this.toggle,200)}getDefaultSettings(){return{selectors:{container:".elementor-widget-container"}}}getDefaultElements(){const e=this.getSettings("selectors");return{$container:this.$element.find(e.container)}}bindEvents(){elementorFrontend.elements.$window.on("resize",this.toggle)}unbindEvents(){elementorFrontend.elements.$window.off("resize",this.toggle)}addCSSTransformEvents(){this.getElementSettings("motion_fx_motion_fx_scrolling")&&!this.isTransitionEventAdded&&(this.isTransitionEventAdded=!0,this.elements.$container.on("mouseenter",(()=>{this.elements.$container.css("--e-transform-transition-duration","")})))}initEffects(){this.effects={translateY:{interaction:"scroll",actions:["translateY"]},translateX:{interaction:"scroll",actions:["translateX"]},rotateZ:{interaction:"scroll",actions:["rotateZ"]},scale:{interaction:"scroll",actions:["scale"]},opacity:{interaction:"scroll",actions:["opacity"]},blur:{interaction:"scroll",actions:["blur"]},mouseTrack:{interaction:"mouseMove",actions:["translateXY"]},tilt:{interaction:"mouseMove",actions:["tilt"]}}}prepareOptions(e){const t=this.getElementSettings(),n="motion_fx"===e?"element":"background",s={};jQuery.each(t,((n,i)=>{const o=new RegExp("^"+e+"_(.+?)_effect"),r=n.match(o);if(!r||!i)return;const a={},l=r[1];jQuery.each(t,((t,n)=>{const s=new RegExp(e+"_"+l+"_(.+)"),i=t.match(s);if(!i)return;"effect"!==i[1]&&("object"==typeof n&&(n=Object.keys(n.sizes).length?n.sizes:n.size),a[i[1]]=n)}));const c=this.effects[l],d=c.interaction;s[d]||(s[d]={}),c.actions.forEach((e=>s[d][e]=a))}));let i,o=this.$element;const r=this.getElementType();if("element"===n&&"section"!==r){let e;i=o,e="column"===r?elementorFrontend.config.legacyMode.elementWrappers?".elementor-column-wrap":".elementor-widget-wrap":".elementor-widget-container",o=o.find("> "+e)}const a={type:n,interactions:s,elementSettings:t,$element:o,$dimensionsElement:i,refreshDimensions:this.isEdit,range:t[e+"_range"],classes:{element:"elementor-motion-effects-element",parent:"elementor-motion-effects-parent",backgroundType:"elementor-motion-effects-element-type-background",container:"elementor-motion-effects-container",layer:"elementor-motion-effects-layer",perspective:"elementor-motion-effects-perspective"}};return a.range||"fixed"!==this.getCurrentDeviceSetting("_position")||(a.range="page"),"fixed"===this.getCurrentDeviceSetting("_position")&&(a.isFixedPosition=!0),"background"===n&&"column"===this.getElementType()&&(a.addBackgroundLayerTo=" > .elementor-element-populated"),a}activate(e){const t=this.prepareOptions(e);jQuery.isEmptyObject(t.interactions)||(this[e]=new i.default(t))}deactivate(e){this[e]&&(this[e].destroy(),delete this[e])}toggle(){const e=elementorFrontend.getCurrentDeviceMode(),t=this.getElementSettings();["motion_fx","background_motion_fx"].forEach((n=>{const s=t[n+"_devices"];(!s||-1!==s.indexOf(e))&&(t[n+"_motion_fx_scrolling"]||t[n+"_motion_fx_mouse"])?this[n]?this.refreshInstance(n):this.activate(n):this.deactivate(n)}))}refreshInstance(e){const t=this[e];if(!t)return;const n=this.prepareOptions(e);t.setSettings(n),t.refresh()}onInit(){super.onInit(),this.initEffects(),this.addCSSTransformEvents(),this.toggle()}onElementChange(e){if(/motion_fx_((scrolling)|(mouse)|(devices))$/.test(e))return"motion_fx_motion_fx_scrolling"===e&&this.addCSSTransformEvents(),void this.toggle();const t=e.match(".*?(motion_fx|_transform)");if(t){const e=t[0].match("(_transform)")?"motion_fx":t[0];this.refreshInstance(e),this[e]||this.activate(e)}/^_position/.test(e)&&["motion_fx","background_motion_fx"].forEach((e=>{this.refreshInstance(e)}))}onDestroy(){super.onDestroy(),["motion_fx","background_motion_fx"].forEach((e=>{this.deactivate(e)}))}}t.default=_default},8026:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{getMovePointFromPassedPercents(e,t){return+(t/e*100).toFixed(2)}getEffectValueFromMovePoint(e,t){return e*t/100}getStep(e,t){return"element"===this.getSettings("type")?this.getElementStep(e,t):this.getBackgroundStep(e,t)}getElementStep(e,t){return-(e-50)*t.speed}getBackgroundStep(e,t){const n=this.getSettings("dimensions.movable"+t.axis.toUpperCase());return-this.getEffectValueFromMovePoint(n,e)}getDirectionMovePoint(e,t,n){let s;return e<n.start?"out-in"===t?s=0:"in-out"===t?s=100:(s=this.getMovePointFromPassedPercents(n.start,e),"in-out-in"===t&&(s=100-s)):e<n.end?"in-out-in"===t?s=0:"out-in-out"===t?s=100:(s=this.getMovePointFromPassedPercents(n.end-n.start,e-n.start),"in-out"===t&&(s=100-s)):"in-out"===t?s=0:"out-in"===t?s=100:(s=this.getMovePointFromPassedPercents(100-n.end,100-e),"in-out-in"===t&&(s=100-s)),s}translateX(e,t){e.axis="x",e.unit="px",this.transform("translateX",t,e)}translateY(e,t){e.axis="y",e.unit="px",this.transform("translateY",t,e)}translateXY(e,t,n){this.translateX(e,t),this.translateY(e,n)}tilt(e,t,n){const s={speed:e.speed/10,direction:e.direction};this.rotateX(s,n),this.rotateY(s,100-t)}rotateX(e,t){e.axis="x",e.unit="deg",this.transform("rotateX",t,e)}rotateY(e,t){e.axis="y",e.unit="deg",this.transform("rotateY",t,e)}rotateZ(e,t){e.unit="deg",this.transform("rotateZ",t,e)}scale(e,t){const n=this.getDirectionMovePoint(t,e.direction,e.range);this.updateRulePart("transform","scale",1+e.speed*n/1e3)}transform(e,t,n){n.direction&&(t=100-t),this.updateRulePart("transform",e,this.getStep(t,n)+n.unit)}setCSSTransformVariables(e){this.CSSTransformVariables=[],jQuery.each(e,((e,t)=>{const n=e.match(/_transform_(.+?)_effect/m);if(n&&t){if("perspective"===n[1])return void this.CSSTransformVariables.unshift(n[1]);if(this.CSSTransformVariables.includes(n[1]))return;this.CSSTransformVariables.push(n[1])}}))}opacity(e,t){const n=this.getDirectionMovePoint(t,e.direction,e.range),s=e.level/10,i=1-s+this.getEffectValueFromMovePoint(s,n);this.$element.css({opacity:i,"will-change":"opacity"})}blur(e,t){const n=this.getDirectionMovePoint(t,e.direction,e.range),s=e.level-this.getEffectValueFromMovePoint(e.level,n);this.updateRulePart("filter","blur",s+"px")}updateRulePart(e,t,n){this.rulesVariables[e]||(this.rulesVariables[e]={}),this.rulesVariables[e][t]||(this.rulesVariables[e][t]=!0,this.updateRule(e));const s=`--${t}`;this.$element[0].style.setProperty(s,n)}updateRule(e){let t="";t+=this.concatTransformCSSProperties(e),t+=this.concatTransformMotionEffectCSSProperties(e),this.$element.css(e,t)}concatTransformCSSProperties(e){let t="";return"transform"===e&&jQuery.each(this.CSSTransformVariables,((e,n)=>{const s=n;n.startsWith("flip")&&(n=n.replace("flip","scale"));const i=n.startsWith("rotate")||n.startsWith("skew")?"deg":"px",o=n.startsWith("scale")?1:0+i;t+=`${n}(var(--e-transform-${s}, ${o}))`})),t}concatTransformMotionEffectCSSProperties(e){let t="";return jQuery.each(this.rulesVariables[e],(e=>{t+=`${e}(var(--${e}))`})),t}runAction(e,t,n,...s){t.affectedRange&&(t.affectedRange.start>n&&(n=t.affectedRange.start),t.affectedRange.end<n&&(n=t.affectedRange.end)),this[e](t,n,...s)}refresh(){this.rulesVariables={},this.CSSTransformVariables=[],this.$element.css({transform:"",filter:"",opacity:"","will-change":""})}onInit(){this.$element=this.getSettings("$targetElement"),this.refresh()}}t.default=_default},2720:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=s(n(5526));class _default extends elementorModules.ViewModule{constructor(...e){super(...e),(0,i.default)(this,"onInsideViewport",(()=>{this.run(),this.animationFrameRequest=requestAnimationFrame(this.onInsideViewport)}))}__construct(e){this.motionFX=e.motionFX,this.intersectionObservers||this.setElementInViewportObserver()}setElementInViewportObserver(){this.intersectionObserver=elementorModules.utils.Scroll.scrollObserver({callback:e=>{e.isInViewport?this.onInsideViewport():this.removeAnimationFrameRequest()}}),this.intersectionObserver.observe(this.motionFX.elements.$parent[0])}runCallback(...e){this.getSettings("callback")(...e)}removeIntersectionObserver(){this.intersectionObserver&&this.intersectionObserver.unobserve(this.motionFX.elements.$parent[0])}removeAnimationFrameRequest(){this.animationFrameRequest&&cancelAnimationFrame(this.animationFrameRequest)}destroy(){this.removeAnimationFrameRequest(),this.removeIntersectionObserver()}onInit(){super.onInit()}}t.default=_default},1545:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=s(n(2720));class MouseMoveInteraction extends i.default{bindEvents(){MouseMoveInteraction.mouseTracked||(elementorFrontend.elements.$window.on("mousemove",MouseMoveInteraction.updateMousePosition),MouseMoveInteraction.mouseTracked=!0)}run(){const e=MouseMoveInteraction.mousePosition,t=this.oldMousePosition;if(t.x===e.x&&t.y===e.y)return;this.oldMousePosition={x:e.x,y:e.y};const n=100/innerWidth*e.x,s=100/innerHeight*e.y;this.runCallback(n,s)}onInit(){this.oldMousePosition={},super.onInit()}}t.default=MouseMoveInteraction,MouseMoveInteraction.mousePosition={},MouseMoveInteraction.updateMousePosition=e=>{MouseMoveInteraction.mousePosition={x:e.clientX,y:e.clientY}}},1791:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=s(n(2720));class _default extends i.default{run(){if(pageYOffset===this.windowScrollTop)return!1;this.onScrollMovement(),this.windowScrollTop=pageYOffset}onScrollMovement(){this.updateMotionFxDimensions(),this.updateAnimation(),this.resetTransitionVariable()}resetTransitionVariable(){this.motionFX.$element.css("--e-transform-transition-duration","100ms")}updateMotionFxDimensions(){this.motionFX.getSettings().refreshDimensions&&this.motionFX.defineDimensions()}updateAnimation(){let e;e="page"===this.motionFX.getSettings("range")?elementorModules.utils.Scroll.getPageScrollPercentage():this.motionFX.getSettings("isFixedPosition")?elementorModules.utils.Scroll.getPageScrollPercentage({},window.innerHeight):elementorModules.utils.Scroll.getElementViewportPercentage(this.motionFX.elements.$parent),this.runCallback(e)}}t.default=_default},6829:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=s(n(1791)),o=s(n(1545)),r=s(n(8026));class _default extends elementorModules.ViewModule{getDefaultSettings(){return{type:"element",$element:null,$dimensionsElement:null,addBackgroundLayerTo:null,interactions:{},refreshDimensions:!1,range:"viewport",classes:{element:"motion-fx-element",parent:"motion-fx-parent",backgroundType:"motion-fx-element-type-background",container:"motion-fx-container",layer:"motion-fx-layer",perspective:"motion-fx-perspective"}}}bindEvents(){this.onWindowResize=this.onWindowResize.bind(this),elementorFrontend.elements.$window.on("resize",this.onWindowResize)}unbindEvents(){elementorFrontend.elements.$window.off("resize",this.onWindowResize)}addBackgroundLayer(){const e=this.getSettings();this.elements.$motionFXContainer=jQuery("<div>",{class:e.classes.container}),this.elements.$motionFXLayer=jQuery("<div>",{class:e.classes.layer}),this.updateBackgroundLayerSize(),this.elements.$motionFXContainer.prepend(this.elements.$motionFXLayer);(e.addBackgroundLayerTo?this.$element.find(e.addBackgroundLayerTo):this.$element).prepend(this.elements.$motionFXContainer)}removeBackgroundLayer(){this.elements.$motionFXContainer.remove()}updateBackgroundLayerSize(){const e=this.getSettings(),t={x:0,y:0},n=e.interactions.mouseMove,s=e.interactions.scroll;n&&n.translateXY&&(t.x=10*n.translateXY.speed,t.y=10*n.translateXY.speed),s&&(s.translateX&&(t.x=10*s.translateX.speed),s.translateY&&(t.y=10*s.translateY.speed)),this.elements.$motionFXLayer.css({width:100+t.x+"%",height:100+t.y+"%"})}defineDimensions(){const e=this.getSettings("$dimensionsElement")||this.$element,t=e.offset(),n={elementHeight:e.outerHeight(),elementWidth:e.outerWidth(),elementTop:t.top,elementLeft:t.left};n.elementRange=n.elementHeight+innerHeight,this.setSettings("dimensions",n),"background"===this.getSettings("type")&&this.defineBackgroundLayerDimensions()}defineBackgroundLayerDimensions(){const e=this.getSettings("dimensions");e.layerHeight=this.elements.$motionFXLayer.height(),e.layerWidth=this.elements.$motionFXLayer.width(),e.movableX=e.layerWidth-e.elementWidth,e.movableY=e.layerHeight-e.elementHeight,this.setSettings("dimensions",e)}initInteractionsTypes(){this.interactionsTypes={scroll:i.default,mouseMove:o.default}}prepareSpecialActions(){const e=this.getSettings(),t=!(!e.interactions.mouseMove||!e.interactions.mouseMove.tilt);this.elements.$parent.toggleClass(e.classes.perspective,t)}cleanSpecialActions(){const e=this.getSettings();this.elements.$parent.removeClass(e.classes.perspective)}runInteractions(){const e=this.getSettings();this.actions.setCSSTransformVariables(e.elementSettings),this.prepareSpecialActions(),jQuery.each(e.interactions,((e,t)=>{this.interactions[e]=new this.interactionsTypes[e]({motionFX:this,callback:(...e)=>{jQuery.each(t,((t,n)=>this.actions.runAction(t,n,...e)))}}),this.interactions[e].run()}))}destroyInteractions(){this.cleanSpecialActions(),jQuery.each(this.interactions,((e,t)=>t.destroy())),this.interactions={}}refresh(){this.actions.setSettings(this.getSettings()),"background"===this.getSettings("type")&&(this.updateBackgroundLayerSize(),this.defineBackgroundLayerDimensions()),this.actions.refresh(),this.destroyInteractions(),this.runInteractions()}destroy(){this.destroyInteractions(),this.actions.refresh();const e=this.getSettings();this.$element.removeClass(e.classes.element),this.elements.$parent.removeClass(e.classes.parent),"background"===e.type&&(this.$element.removeClass(e.classes.backgroundType),this.removeBackgroundLayer())}onInit(){super.onInit();const e=this.getSettings();this.$element=e.$element,this.elements.$parent=this.$element.parent(),this.$element.addClass(e.classes.element),this.elements.$parent=this.$element.parent(),this.elements.$parent.addClass(e.classes.parent),"background"===e.type&&(this.$element.addClass(e.classes.backgroundType),this.addBackgroundLayer()),this.defineDimensions(),e.$targetElement="element"===e.type?this.$element:this.elements.$motionFXLayer,this.interactions={},this.actions=new r.default(e),this.initInteractionsTypes(),this.runInteractions()}onWindowResize(){this.defineDimensions()}}t.default=_default},1336:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("paypal-button",(()=>n.e(256).then(n.bind(n,9593))))}}t.default=_default},1177:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("progress-tracker",(()=>n.e(241).then(n.bind(n,6440))))}}t.default=_default},9253:(e,t,n)=>{"use strict";var s=n(7914);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=s(n(8080));class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.elementsHandler.attachHandler("section",i.default,null),elementorFrontend.elementsHandler.attachHandler("widget",i.default,null)}}t.default=_default},8080:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=elementorModules.frontend.handlers.Base.extend({bindEvents(){elementorFrontend.addListenerOnce(this.getUniqueHandlerID()+"sticky","resize",this.run)},unbindEvents(){elementorFrontend.removeListeners(this.getUniqueHandlerID()+"sticky","resize",this.run)},isStickyInstanceActive(){return void 0!==this.$element.data("sticky")},getResponsiveSetting(e){const t=this.getElementSettings();return elementorFrontend.getCurrentDeviceSetting(t,e)},getResponsiveSettingList:e=>["",...Object.keys(elementorFrontend.config.responsive.activeBreakpoints)].map((t=>t?`${e}_${t}`:e)),activate(){var e=this.getElementSettings(),t={to:e.sticky,offset:this.getResponsiveSetting("sticky_offset"),effectsOffset:this.getResponsiveSetting("sticky_effects_offset"),classes:{sticky:"elementor-sticky",stickyActive:"elementor-sticky--active elementor-section--handles-inside",stickyEffects:"elementor-sticky--effects",spacer:"elementor-sticky__spacer"}},n=elementorFrontend.elements.$wpAdminBar;e.sticky_parent&&(t.parent=".elementor-widget-wrap"),n.length&&"top"===e.sticky&&"fixed"===n.css("position")&&(t.offset+=n.height()),this.$element.sticky(t)},deactivate(){this.isStickyInstanceActive()&&this.$element.sticky("destroy")},run(e){if(this.getElementSettings("sticky")){var t=elementorFrontend.getCurrentDeviceMode();-1!==this.getElementSettings("sticky_on").indexOf(t)?!0===e?this.reactivate():this.isStickyInstanceActive()||this.activate():this.deactivate()}else this.deactivate()},reactivate(){this.deactivate(),this.activate()},onElementChange(e){-1!==["sticky","sticky_on"].indexOf(e)&&this.run(!0);-1!==[...this.getResponsiveSettingList("sticky_offset"),...this.getResponsiveSettingList("sticky_effects_offset"),"sticky_parent"].indexOf(e)&&this.reactivate()},onDeviceModeChange(){setTimeout((()=>{this.run(!0)}))},onInit(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),elementorFrontend.isEditMode()&&elementor.listenTo(elementor.channels.deviceMode,"change",(()=>this.onDeviceModeChange())),this.run()},onDestroy(){elementorModules.frontend.handlers.Base.prototype.onDestroy.apply(this,arguments),this.deactivate()}});t.default=n},1498:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;class _default extends elementorModules.Module{constructor(){super(),elementorFrontend.hooks.addAction("frontend/element_ready/video-playlist.default",(e=>{n.e(721).then(n.bind(n,1427)).then((({default:t})=>{elementorFrontend.elementsHandler.addHandler(t,{$element:e,toggleSelf:!1})}))}))}}t.default=_default}},e=>{"use strict";var t;t=3713,e(e.s=t)}]);assets/js/gallery.e5ba72e3c57da531df85.bundle.js000064400000022417150755004310014715 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["gallery"],{

/***/ "../modules/gallery/assets/js/frontend/handler.js":
/*!********************************************************!*\
  !*** ../modules/gallery/assets/js/frontend/handler.js ***!
  \********************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class galleryHandler extends elementorModules.frontend.handlers.Base {
  getDefaultSettings() {
    return {
      selectors: {
        container: '.elementor-gallery__container',
        galleryTitles: '.elementor-gallery-title',
        galleryImages: '.e-gallery-image',
        galleryItemOverlay: '.elementor-gallery-item__overlay',
        galleryItemContent: '.elementor-gallery-item__content'
      },
      classes: {
        activeTitle: 'elementor-item-active'
      }
    };
  }

  getDefaultElements() {
    const {
      selectors
    } = this.getSettings(),
          elements = {
      $container: this.$element.find(selectors.container),
      $titles: this.$element.find(selectors.galleryTitles)
    };
    elements.$items = elements.$container.children();
    elements.$images = elements.$items.children(selectors.galleryImages);
    elements.$itemsOverlay = elements.$items.children(selectors.galleryItemOverlay);
    elements.$itemsContent = elements.$items.children(selectors.galleryItemContent);
    elements.$itemsContentElements = elements.$itemsContent.children();
    return elements;
  }

  getGallerySettings() {
    const settings = this.getElementSettings(),
          activeBreakpoints = elementorFrontend.config.responsive.activeBreakpoints,
          activeBreakpointsKeys = Object.keys(activeBreakpoints),
          breakPointSettings = {},
          desktopIdealRowHeight = elementorFrontend.getDeviceSetting('desktop', settings, 'ideal_row_height');
    activeBreakpointsKeys.forEach(breakpoint => {
      // The Gallery widget currently does not support widescreen.
      if ('widescreen' !== breakpoint) {
        const idealRowHeight = elementorFrontend.getDeviceSetting(breakpoint, settings, 'ideal_row_height');
        breakPointSettings[activeBreakpoints[breakpoint].value] = {
          horizontalGap: elementorFrontend.getDeviceSetting(breakpoint, settings, 'gap').size,
          verticalGap: elementorFrontend.getDeviceSetting(breakpoint, settings, 'gap').size,
          columns: elementorFrontend.getDeviceSetting(breakpoint, settings, 'columns'),
          idealRowHeight: idealRowHeight === null || idealRowHeight === void 0 ? void 0 : idealRowHeight.size
        };
      }
    });
    return {
      type: settings.gallery_layout,
      idealRowHeight: desktopIdealRowHeight === null || desktopIdealRowHeight === void 0 ? void 0 : desktopIdealRowHeight.size,
      container: this.elements.$container,
      columns: settings.columns,
      aspectRatio: settings.aspect_ratio,
      lastRow: 'normal',
      horizontalGap: elementorFrontend.getDeviceSetting('desktop', settings, 'gap').size,
      verticalGap: elementorFrontend.getDeviceSetting('desktop', settings, 'gap').size,
      animationDuration: settings.content_animation_duration,
      breakpoints: breakPointSettings,
      rtl: elementorFrontend.config.is_rtl,
      lazyLoad: 'yes' === settings.lazyload
    };
  }

  initGallery() {
    this.gallery = new EGallery(this.getGallerySettings());
    this.toggleAllAnimationsClasses();
  }

  removeAnimationClasses($element) {
    $element.removeClass((index, className) => (className.match(/elementor-animated-item-\S+/g) || []).join(' '));
  }

  toggleOverlayHoverAnimation() {
    this.removeAnimationClasses(this.elements.$itemsOverlay);
    const hoverAnimation = this.getElementSettings('background_overlay_hover_animation');

    if (hoverAnimation) {
      this.elements.$itemsOverlay.addClass('elementor-animated-item--' + hoverAnimation);
    }
  }

  toggleOverlayContentAnimation() {
    this.removeAnimationClasses(this.elements.$itemsContentElements);
    const contentHoverAnimation = this.getElementSettings('content_hover_animation');

    if (contentHoverAnimation) {
      this.elements.$itemsContentElements.addClass('elementor-animated-item--' + contentHoverAnimation);
    }
  }

  toggleOverlayContentSequencedAnimation() {
    this.elements.$itemsContent.toggleClass('elementor-gallery--sequenced-animation', 'yes' === this.getElementSettings('content_sequenced_animation'));
  }

  toggleImageHoverAnimation() {
    const imageHoverAnimation = this.getElementSettings('image_hover_animation');
    this.removeAnimationClasses(this.elements.$images);

    if (imageHoverAnimation) {
      this.elements.$images.addClass('elementor-animated-item--' + imageHoverAnimation);
    }
  }

  toggleAllAnimationsClasses() {
    const elementSettings = this.getElementSettings(),
          animation = elementSettings.background_overlay_hover_animation || elementSettings.content_hover_animation || elementSettings.image_hover_animation;
    this.elements.$items.toggleClass('elementor-animated-content', !!animation);
    this.toggleImageHoverAnimation();
    this.toggleOverlayHoverAnimation();
    this.toggleOverlayContentAnimation();
    this.toggleOverlayContentSequencedAnimation();
  }

  toggleAnimationClasses(settingKey) {
    if ('content_sequenced_animation' === settingKey) {
      this.toggleOverlayContentSequencedAnimation();
    }

    if ('background_overlay_hover_animation' === settingKey) {
      this.toggleOverlayHoverAnimation();
    }

    if ('content_hover_animation' === settingKey) {
      this.toggleOverlayContentAnimation();
    }

    if ('image_hover_animation' === settingKey) {
      this.toggleImageHoverAnimation();
    }
  }

  setGalleryTags(id) {
    this.gallery.setSettings('tags', 'all' === id ? [] : ['' + id]);
  }

  bindEvents() {
    this.elements.$titles.on('click', this.galleriesNavigationListener.bind(this));
  }

  galleriesNavigationListener(event) {
    const classes = this.getSettings('classes'),
          clickedElement = jQuery(event.target); // Make sure no other gallery title has an active class

    this.elements.$titles.removeClass(classes.activeTitle); // Give the gallery being activated the active class

    clickedElement.addClass(classes.activeTitle);
    this.setGalleryTags(clickedElement.data('gallery-index'));

    const updateLightboxGroup = () => this.setLightboxGalleryIndex(clickedElement.data('gallery-index')); // Wait for the gallery to filter before grouping items for the Light-box


    setTimeout(updateLightboxGroup, 1000);
  }

  setLightboxGalleryIndex(index = 'all') {
    if ('all' === index) {
      return this.elements.$items.attr('data-elementor-lightbox-slideshow', 'all_' + this.getID());
    }

    this.elements.$items.not('.e-gallery-item--hidden').attr('data-elementor-lightbox-slideshow', index + '_' + this.getID());
  }

  onInit(...args) {
    super.onInit(...args);

    if (elementorFrontend.isEditMode() && 1 <= this.$element.find('.elementor-widget-empty-icon').length) {
      this.$element.addClass('elementor-widget-empty');
    }

    if (!this.elements.$container.length) {
      return;
    }

    this.initGallery();
    this.elements.$titles.first().trigger('click');
  }

  getSettingsDictionary() {
    if (this.settingsDictionary) {
      return this.settingsDictionary;
    }

    const activeBreakpoints = elementorFrontend.config.responsive.activeBreakpoints,
          activeBreakpointsKeys = Object.keys(activeBreakpoints);
    const settingsDictionary = {
      columns: ['columns'],
      gap: ['horizontalGap', 'verticalGap'],
      ideal_row_height: ['idealRowHeight']
    };
    activeBreakpointsKeys.forEach(breakpoint => {
      // The Gallery widget currently does not support widescreen.
      if ('widescreen' === breakpoint) {
        return;
      }

      settingsDictionary['columns_' + breakpoint] = ['breakpoints.' + activeBreakpoints[breakpoint].value + '.columns'];
      settingsDictionary['gap_' + breakpoint] = ['breakpoints.' + activeBreakpoints[breakpoint].value + '.horizontalGap', 'breakpoints.' + activeBreakpoints[breakpoint].value + '.verticalGap'];
      settingsDictionary['ideal_row_height_' + breakpoint] = ['breakpoints.' + activeBreakpoints[breakpoint].value + '.idealRowHeight'];
    });
    settingsDictionary.aspect_ratio = ['aspectRatio'];
    this.settingsDictionary = settingsDictionary;
    return this.settingsDictionary;
  }

  onElementChange(settingKey) {
    if (-1 !== ['background_overlay_hover_animation', 'content_hover_animation', 'image_hover_animation', 'content_sequenced_animation'].indexOf(settingKey)) {
      this.toggleAnimationClasses(settingKey);
      return;
    }

    const settingsDictionary = this.getSettingsDictionary();
    const settingsToUpdate = settingsDictionary[settingKey];

    if (settingsToUpdate) {
      const gallerySettings = this.getGallerySettings();
      settingsToUpdate.forEach(settingToUpdate => {
        this.gallery.setSettings(settingToUpdate, this.getItems(gallerySettings, settingToUpdate));
      });
    }
  }

  onDestroy() {
    super.onDestroy();

    if (this.gallery) {
      this.gallery.destroy();
    }
  }

}

exports.default = galleryHandler;

/***/ })

}]);
//# sourceMappingURL=gallery.e5ba72e3c57da531df85.bundle.js.mapassets/js/webpack-pro.runtime.js000064400000033747150755004310012732 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
/******/ (() => { // webpackBootstrap
/******/ 	"use strict";
/******/ 	var __webpack_modules__ = ({});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = __webpack_modules__;
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/chunk loaded */
/******/ 	(() => {
/******/ 		var deferred = [];
/******/ 		__webpack_require__.O = (result, chunkIds, fn, priority) => {
/******/ 			if(chunkIds) {
/******/ 				priority = priority || 0;
/******/ 				for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
/******/ 				deferred[i] = [chunkIds, fn, priority];
/******/ 				return;
/******/ 			}
/******/ 			var notFulfilled = Infinity;
/******/ 			for (var i = 0; i < deferred.length; i++) {
/******/ 				var [chunkIds, fn, priority] = deferred[i];
/******/ 				var fulfilled = true;
/******/ 				for (var j = 0; j < chunkIds.length; j++) {
/******/ 					if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {
/******/ 						chunkIds.splice(j--, 1);
/******/ 					} else {
/******/ 						fulfilled = false;
/******/ 						if(priority < notFulfilled) notFulfilled = priority;
/******/ 					}
/******/ 				}
/******/ 				if(fulfilled) {
/******/ 					deferred.splice(i--, 1)
/******/ 					var r = fn();
/******/ 					if (r !== undefined) result = r;
/******/ 				}
/******/ 			}
/******/ 			return result;
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/ensure chunk */
/******/ 	(() => {
/******/ 		__webpack_require__.f = {};
/******/ 		// This file contains only the entry chunk.
/******/ 		// The chunk loading function for additional chunks
/******/ 		__webpack_require__.e = (chunkId) => {
/******/ 			return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {
/******/ 				__webpack_require__.f[key](chunkId, promises);
/******/ 				return promises;
/******/ 			}, []));
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/get javascript chunk filename */
/******/ 	(() => {
/******/ 		// This function allow to reference async chunks
/******/ 		__webpack_require__.u = (chunkId) => {
/******/ 			// return url for filenames not based on template
/******/ 			if (chunkId === "code-highlight") return "" + chunkId + ".cc6c8eb49e0aff6d419e.bundle.js";
/******/ 			if (chunkId === "video-playlist") return "" + chunkId + ".5ee0445e2c9b1f2ed68f.bundle.js";
/******/ 			if (chunkId === "paypal-button") return "" + chunkId + ".a8f3d929735cca75a572.bundle.js";
/******/ 			if (chunkId === "progress-tracker") return "" + chunkId + ".a7329beb7783748287a5.bundle.js";
/******/ 			if (chunkId === "animated-headline") return "" + chunkId + ".0ccd23763059df7affcc.bundle.js";
/******/ 			if (chunkId === "media-carousel") return "" + chunkId + ".b5cf350f530535d64364.bundle.js";
/******/ 			if (chunkId === "carousel") return "" + chunkId + ".364bbaf018e09f58c819.bundle.js";
/******/ 			if (chunkId === "countdown") return "" + chunkId + ".6b48da864045c1ea0edd.bundle.js";
/******/ 			if (chunkId === "hotspot") return "" + chunkId + ".66952182f9ae91b6896c.bundle.js";
/******/ 			if (chunkId === "form") return "form.23168c11e0d20fa0282b.bundle.js";
/******/ 			if (chunkId === "gallery") return "" + chunkId + ".e5ba72e3c57da531df85.bundle.js";
/******/ 			if (chunkId === "lottie") return "" + chunkId + ".dccf7257e6cc366bc6bd.bundle.js";
/******/ 			if (chunkId === "nav-menu") return "" + chunkId + ".e248eec66bc3d5587cf6.bundle.js";
/******/ 			if (chunkId === "popup") return "" + chunkId + ".5ddbdd46f21fc221d760.bundle.js";
/******/ 			if (chunkId === "load-more") return "" + chunkId + ".cd76720206dc6d21abc0.bundle.js";
/******/ 			if (chunkId === "posts") return "" + chunkId + ".c23c8d29f44afbd62da6.bundle.js";
/******/ 			if (chunkId === "portfolio") return "" + chunkId + ".71a9b9fb42566ae496bd.bundle.js";
/******/ 			if (chunkId === "share-buttons") return "" + chunkId + ".d147b71ef798e333e678.bundle.js";
/******/ 			if (chunkId === "slides") return "" + chunkId + ".6d3f738223ac9b3c9b7a.bundle.js";
/******/ 			if (chunkId === "social") return "" + chunkId + ".b17f5f1767e41333a1dc.bundle.js";
/******/ 			if (chunkId === "table-of-contents") return "" + chunkId + ".0744140055afdd9bf411.bundle.js";
/******/ 			if (chunkId === "archive-posts") return "" + chunkId + ".22a6d49be96f6e1aa290.bundle.js";
/******/ 			if (chunkId === "search-form") return "" + chunkId + ".fda69e244861c6890e79.bundle.js";
/******/ 			if (chunkId === "woocommerce-menu-cart") return "" + chunkId + ".cf8829a628c66ec7c688.bundle.js";
/******/ 			if (chunkId === "woocommerce-checkout-page") return "" + chunkId + ".acd4a2b8bc03ed32111f.bundle.js";
/******/ 			if (chunkId === "woocommerce-cart") return "" + chunkId + ".39ccd7e510e98f3afb01.bundle.js";
/******/ 			if (chunkId === "woocommerce-my-account") return "" + chunkId + ".d52e81c74f27be09eb2e.bundle.js";
/******/ 			// return url for filenames based on template
/******/ 			return undefined;
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/global */
/******/ 	(() => {
/******/ 		__webpack_require__.g = (function() {
/******/ 			if (typeof globalThis === 'object') return globalThis;
/******/ 			try {
/******/ 				return this || new Function('return this')();
/******/ 			} catch (e) {
/******/ 				if (typeof window === 'object') return window;
/******/ 			}
/******/ 		})();
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
/******/ 	(() => {
/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/load script */
/******/ 	(() => {
/******/ 		var inProgress = {};
/******/ 		var dataWebpackPrefix = "elementor-pro:";
/******/ 		// loadScript function to load a script via script tag
/******/ 		__webpack_require__.l = (url, done, key, chunkId) => {
/******/ 			if(inProgress[url]) { inProgress[url].push(done); return; }
/******/ 			var script, needAttach;
/******/ 			if(key !== undefined) {
/******/ 				var scripts = document.getElementsByTagName("script");
/******/ 				for(var i = 0; i < scripts.length; i++) {
/******/ 					var s = scripts[i];
/******/ 					if(s.getAttribute("src") == url || s.getAttribute("data-webpack") == dataWebpackPrefix + key) { script = s; break; }
/******/ 				}
/******/ 			}
/******/ 			if(!script) {
/******/ 				needAttach = true;
/******/ 				script = document.createElement('script');
/******/ 		
/******/ 				script.charset = 'utf-8';
/******/ 				script.timeout = 120;
/******/ 				if (__webpack_require__.nc) {
/******/ 					script.setAttribute("nonce", __webpack_require__.nc);
/******/ 				}
/******/ 				script.setAttribute("data-webpack", dataWebpackPrefix + key);
/******/ 				script.src = url;
/******/ 			}
/******/ 			inProgress[url] = [done];
/******/ 			var onScriptComplete = (prev, event) => {
/******/ 				// avoid mem leaks in IE.
/******/ 				script.onerror = script.onload = null;
/******/ 				clearTimeout(timeout);
/******/ 				var doneFns = inProgress[url];
/******/ 				delete inProgress[url];
/******/ 				script.parentNode && script.parentNode.removeChild(script);
/******/ 				doneFns && doneFns.forEach((fn) => (fn(event)));
/******/ 				if(prev) return prev(event);
/******/ 			}
/******/ 			;
/******/ 			var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);
/******/ 			script.onerror = onScriptComplete.bind(null, script.onerror);
/******/ 			script.onload = onScriptComplete.bind(null, script.onload);
/******/ 			needAttach && document.head.appendChild(script);
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/publicPath */
/******/ 	(() => {
/******/ 		var scriptUrl;
/******/ 		if (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + "";
/******/ 		var document = __webpack_require__.g.document;
/******/ 		if (!scriptUrl && document) {
/******/ 			if (document.currentScript)
/******/ 				scriptUrl = document.currentScript.src
/******/ 			if (!scriptUrl) {
/******/ 				var scripts = document.getElementsByTagName("script");
/******/ 				if(scripts.length) scriptUrl = scripts[scripts.length - 1].src
/******/ 			}
/******/ 		}
/******/ 		// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration
/******/ 		// or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic.
/******/ 		if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser");
/******/ 		scriptUrl = scriptUrl.replace(/#.*$/, "").replace(/\?.*$/, "").replace(/\/[^\/]+$/, "/");
/******/ 		__webpack_require__.p = scriptUrl;
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/jsonp chunk loading */
/******/ 	(() => {
/******/ 		// no baseURI
/******/ 		
/******/ 		// object to store loaded and loading chunks
/******/ 		// undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/ 		// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
/******/ 		var installedChunks = {
/******/ 			"webpack-pro.runtime": 0
/******/ 		};
/******/ 		
/******/ 		__webpack_require__.f.j = (chunkId, promises) => {
/******/ 				// JSONP chunk loading for javascript
/******/ 				var installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;
/******/ 				if(installedChunkData !== 0) { // 0 means "already installed".
/******/ 		
/******/ 					// a Promise means "currently loading".
/******/ 					if(installedChunkData) {
/******/ 						promises.push(installedChunkData[2]);
/******/ 					} else {
/******/ 						if("webpack-pro.runtime" != chunkId) {
/******/ 							// setup Promise in chunk cache
/******/ 							var promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));
/******/ 							promises.push(installedChunkData[2] = promise);
/******/ 		
/******/ 							// start chunk loading
/******/ 							var url = __webpack_require__.p + __webpack_require__.u(chunkId);
/******/ 							// create error before stack unwound to get useful stacktrace later
/******/ 							var error = new Error();
/******/ 							var loadingEnded = (event) => {
/******/ 								if(__webpack_require__.o(installedChunks, chunkId)) {
/******/ 									installedChunkData = installedChunks[chunkId];
/******/ 									if(installedChunkData !== 0) installedChunks[chunkId] = undefined;
/******/ 									if(installedChunkData) {
/******/ 										var errorType = event && (event.type === 'load' ? 'missing' : event.type);
/******/ 										var realSrc = event && event.target && event.target.src;
/******/ 										error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')';
/******/ 										error.name = 'ChunkLoadError';
/******/ 										error.type = errorType;
/******/ 										error.request = realSrc;
/******/ 										installedChunkData[1](error);
/******/ 									}
/******/ 								}
/******/ 							};
/******/ 							__webpack_require__.l(url, loadingEnded, "chunk-" + chunkId, chunkId);
/******/ 						} else installedChunks[chunkId] = 0;
/******/ 					}
/******/ 				}
/******/ 		};
/******/ 		
/******/ 		// no prefetching
/******/ 		
/******/ 		// no preloaded
/******/ 		
/******/ 		// no HMR
/******/ 		
/******/ 		// no HMR manifest
/******/ 		
/******/ 		__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);
/******/ 		
/******/ 		// install a JSONP callback for chunk loading
/******/ 		var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
/******/ 			var [chunkIds, moreModules, runtime] = data;
/******/ 			// add "moreModules" to the modules object,
/******/ 			// then flag all "chunkIds" as loaded and fire callback
/******/ 			var moduleId, chunkId, i = 0;
/******/ 			for(moduleId in moreModules) {
/******/ 				if(__webpack_require__.o(moreModules, moduleId)) {
/******/ 					__webpack_require__.m[moduleId] = moreModules[moduleId];
/******/ 				}
/******/ 			}
/******/ 			if(runtime) var result = runtime(__webpack_require__);
/******/ 			if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
/******/ 			for(;i < chunkIds.length; i++) {
/******/ 				chunkId = chunkIds[i];
/******/ 				if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
/******/ 					installedChunks[chunkId][0]();
/******/ 				}
/******/ 				installedChunks[chunkIds[i]] = 0;
/******/ 			}
/******/ 			return __webpack_require__.O(result);
/******/ 		}
/******/ 		
/******/ 		var chunkLoadingGlobal = self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || [];
/******/ 		chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
/******/ 		chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
/******/ 	})();
/******/ 	
/************************************************************************/
/******/ 	
/******/ 	
/******/ })()
;
//# sourceMappingURL=webpack-pro.runtime.js.mapassets/js/share-buttons.d147b71ef798e333e678.bundle.js000064400000005375150755004310015663 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["share-buttons"],{

/***/ "../modules/share-buttons/assets/js/frontend/handlers/share-buttons.js":
/*!*****************************************************************************!*\
  !*** ../modules/share-buttons/assets/js/frontend/handlers/share-buttons.js ***!
  \*****************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  async onInit() {
    if (!this.isActive()) {
      return;
    }

    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
    const elementSettings = this.getElementSettings(),
          classes = this.getSettings('classes'),
          isCustomURL = elementSettings.share_url && elementSettings.share_url.url,
          shareLinkSettings = {
      classPrefix: classes.shareLinkPrefix
    };

    if (isCustomURL) {
      shareLinkSettings.url = elementSettings.share_url.url;
    } else {
      shareLinkSettings.url = location.href;
      shareLinkSettings.title = elementorFrontend.config.post.title;
      shareLinkSettings.text = elementorFrontend.config.post.excerpt;
      shareLinkSettings.image = elementorFrontend.config.post.featuredImage;
    }
    /**
     * First check of the ShareLink is for detecting if the optimized mode is disabled and the library should be loaded dynamically.
     * Checking if the assetsLoader exist, in case that the library is not loaded due to Ad Blockers and not because the optimized mode is enabled.
     */


    if (!window.ShareLink && elementorFrontend.utils.assetsLoader) {
      await elementorFrontend.utils.assetsLoader.load('script', 'share-link');
    }
    /**
     * The following condition should remain regardless of the share-link dynamic loading.
     * Ad Blockers may block the share script. (/assets/lib/share-link/share-link.js).
     */


    if (!this.elements.$shareButton.shareLink) {
      return;
    }

    this.elements.$shareButton.shareLink(shareLinkSettings);
  },

  getDefaultSettings() {
    return {
      selectors: {
        shareButton: '.elementor-share-btn'
      },
      classes: {
        shareLinkPrefix: 'elementor-share-btn_'
      }
    };
  },

  getDefaultElements() {
    var selectors = this.getSettings('selectors');
    return {
      $shareButton: this.$element.find(selectors.shareButton)
    };
  },

  isActive() {
    return !elementorFrontend.isEditMode();
  }

});

exports.default = _default;

/***/ })

}]);
//# sourceMappingURL=share-buttons.d147b71ef798e333e678.bundle.js.mapassets/js/popup.5ddbdd46f21fc221d760.bundle.js000064400000003025150755004310014402 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["popup"],{

/***/ "../modules/popup/assets/js/frontend/handlers/forms-action.js":
/*!********************************************************************!*\
  !*** ../modules/popup/assets/js/frontend/handlers/forms-action.js ***!
  \********************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  getDefaultSettings() {
    return {
      selectors: {
        form: '.elementor-form'
      }
    };
  },

  getDefaultElements() {
    var selectors = this.getSettings('selectors'),
        elements = {};
    elements.$form = this.$element.find(selectors.form);
    return elements;
  },

  bindEvents() {
    this.elements.$form.on('submit_success', this.handleFormAction);
  },

  handleFormAction(event, response) {
    if ('undefined' === typeof response.data.popup) {
      return;
    }

    const popupSettings = response.data.popup;

    if ('open' === popupSettings.action) {
      return elementorProFrontend.modules.popup.showPopup(popupSettings);
    }

    setTimeout(() => {
      return elementorProFrontend.modules.popup.closePopup(popupSettings, event);
    }, 1000);
  }

});

exports.default = _default;

/***/ })

}]);
//# sourceMappingURL=popup.5ddbdd46f21fc221d760.bundle.js.mapassets/js/admin.min.js000064400000216154150755004310010703 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(()=>{var e={75453:(e,t,r)=>{e.exports=r(7421)},59396:(e,t,r)=>{e.exports=r(70157)},32009:(e,t,r)=>{e.exports=r(89710)},38401:(e,t,r)=>{e.exports=r(14710)},67394:(e,t,r)=>{e.exports=r(43153)},38923:(e,t,r)=>{e.exports=r(8531)},23587:(e,t,r)=>{e.exports=r(32622)},82055:(e,t,r)=>{e.exports=r(58535)},28274:(e,t,r)=>{e.exports=r(65135)},75499:(e,t,r)=>{e.exports=r(43094)},78282:(e,t,r)=>{e.exports=r(17641)},41281:(e,t,r)=>{e.exports=r(19103)},50093:(e,t,r)=>{e.exports=r(39871)},72292:e=>{e.exports=function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n},e.exports.default=e.exports,e.exports.__esModule=!0},35693:(e,t,r)=>{var n=r(59396),o=r(72292);e.exports=function _arrayWithoutHoles(e){if(n(e))return o(e)},e.exports.default=e.exports,e.exports.__esModule=!0},38852:e=>{e.exports=function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.default=e.exports,e.exports.__esModule=!0},11959:e=>{e.exports=function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.default=e.exports,e.exports.__esModule=!0},39041:(e,t,r)=>{var n=r(67394);function _defineProperties(e,t){for(var r=0;r<t.length;r++){var o=t[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),n(e,o.key,o)}}e.exports=function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),e},e.exports.default=e.exports,e.exports.__esModule=!0},68537:(e,t,r)=>{var n=r(75499),o=r(44263),i=r(898),s=r(59771);e.exports=function _createSuper(e){var t=i();return function _createSuperInternal(){var r,i=o(e);if(t){var a=o(this).constructor;r=n(i,arguments,a)}else r=i.apply(this,arguments);return s(this,r)}},e.exports.default=e.exports,e.exports.__esModule=!0},76700:(e,t,r)=>{var n=r(78282),o=r(23587),i=r(49445);function _get(t,r,s){return"undefined"!=typeof Reflect&&n?(e.exports=_get=n,e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=_get=function _get(e,t,r){var n=i(e,t);if(n){var s=o(n,t);return s.get?s.get.call(r):s.value}},e.exports.default=e.exports,e.exports.__esModule=!0),_get(t,r,s||t)}e.exports=_get,e.exports.default=e.exports,e.exports.__esModule=!0},44263:(e,t,r)=>{var n=r(28274),o=r(82055);function _getPrototypeOf(t){return e.exports=_getPrototypeOf=n?o:function _getPrototypeOf(e){return e.__proto__||o(e)},e.exports.default=e.exports,e.exports.__esModule=!0,_getPrototypeOf(t)}e.exports=_getPrototypeOf,e.exports.default=e.exports,e.exports.__esModule=!0},77371:(e,t,r)=>{var n=r(38401),o=r(76870);e.exports=function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=n(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&o(e,t)},e.exports.default=e.exports,e.exports.__esModule=!0},67971:e=>{e.exports=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}},e.exports.default=e.exports,e.exports.__esModule=!0},898:(e,t,r)=>{var n=r(75499);e.exports=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!n)return!1;if(n.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(n(Boolean,[],(function(){}))),!0}catch(e){return!1}},e.exports.default=e.exports,e.exports.__esModule=!0},95915:(e,t,r)=>{var n=r(41281),o=r(50093),i=r(75453);e.exports=function _iterableToArray(e){if(void 0!==n&&null!=e[o]||null!=e["@@iterator"])return i(e)},e.exports.default=e.exports,e.exports.__esModule=!0},84360:e=>{e.exports=function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},59771:(e,t,r)=>{var n=r(24596).default,o=r(38852);e.exports=function _possibleConstructorReturn(e,t){return!t||"object"!==n(t)&&"function"!=typeof t?o(e):t},e.exports.default=e.exports,e.exports.__esModule=!0},76870:(e,t,r)=>{var n=r(28274);function _setPrototypeOf(t,r){return e.exports=_setPrototypeOf=n||function _setPrototypeOf(e,t){return e.__proto__=t,e},e.exports.default=e.exports,e.exports.__esModule=!0,_setPrototypeOf(t,r)}e.exports=_setPrototypeOf,e.exports.default=e.exports,e.exports.__esModule=!0},49445:(e,t,r)=>{var n=r(44263);e.exports=function _superPropBase(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=n(e)););return e},e.exports.default=e.exports,e.exports.__esModule=!0},74846:(e,t,r)=>{var n=r(35693),o=r(95915),i=r(24594),s=r(84360);e.exports=function _toConsumableArray(e){return n(e)||o(e)||i(e)||s()},e.exports.default=e.exports,e.exports.__esModule=!0},24596:(e,t,r)=>{var n=r(41281),o=r(50093);function _typeof(t){return"function"==typeof n&&"symbol"==typeof o?(e.exports=_typeof=function _typeof(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=_typeof=function _typeof(e){return e&&"function"==typeof n&&e.constructor===n&&e!==n.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),_typeof(t)}e.exports=_typeof,e.exports.default=e.exports,e.exports.__esModule=!0},24594:(e,t,r)=>{var n=r(75453),o=r(72292);e.exports=function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?n(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0},80203:(e,t,r)=>{"use strict";var n=r(67971),o=n(r(87190)),i=n(r(80676));e.exports=function(){var e=r(11501),t=i.default,n=r(88948).default;this.fontManager=new o.default,this.typekit=new e,this.fontAwesomePro=new n,this.customIcons=new t}},15860:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=void 0;var i=o(r(11959)),s=o(r(39041)),a=o(r(77371)),l=o(r(68537)),u=function(e){(0,a.default)(CustomAssetsBase,e);var t=(0,l.default)(CustomAssetsBase);function CustomAssetsBase(){return(0,i.default)(this,CustomAssetsBase),t.apply(this,arguments)}return(0,s.default)(CustomAssetsBase,[{key:"showAlertDialog",value:function showAlertDialog(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o={id:e,message:t};r&&(o.onConfirm=r),n&&(o.onHide=n),this.alertWidget||(this.alertWidget=elementorCommon.dialogsManager.createWidget("alert",o)),this.alertWidget.show()}},{key:"onDialogDismiss",value:function onDialogDismiss(){this.elements.$publishButton.removeClass("disabled"),this.elements.$publishButtonSpinner.removeClass("is-active")}},{key:"handleSubmit",value:function handleSubmit(e){var t=this;if(!this.fileWasUploaded)return this.checkInputsForValues()?(this.fileWasUploaded=!0,void this.elements.$postForm.trigger("submit")):(e.preventDefault(),this.showAlertDialog("noData",this.getSettings("notice"),(function(){return t.onDialogDismiss()}),(function(){return t.onDialogDismiss()})),!1)}},{key:"bindEvents",value:function bindEvents(){this.elements.$postForm.on("submit",this.handleSubmit.bind(this))}}]),CustomAssetsBase}(elementorModules.ViewModule);t.default=u},80676:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=void 0;var i=o(r(32009));r(71954),r(84208),r(90286),r(99745);var s=o(r(11959)),a=o(r(39041)),l=o(r(76700)),u=o(r(44263)),c=o(r(77371)),p=o(r(68537)),f=o(r(15860)),d=o(r(9940)),v=function(e){(0,c.default)(CustomIcons,e);var t=(0,p.default)(CustomIcons);function CustomIcons(){return(0,s.default)(this,CustomIcons),t.apply(this,arguments)}return(0,a.default)(CustomIcons,[{key:"getDefaultSettings",value:function getDefaultSettings(){return{fields:{dropzone:d.default},classes:{editPageClass:"post-type-elementor_icons",editPhp:"edit-php",hasIcons:"elementor--has-icons"},selectors:{editPageClass:"post-type-elementor_icons",title:"#title",metaboxContainer:"#elementor-custom-icons-metabox",metabox:".elementor-custom-icons-metabox",closeHandle:"button.handlediv",iconsTemplate:"#elementor-icons-template",dataInput:"#elementor_custom_icon_set_config",dropzone:".zip_upload",submitDelete:".submitdelete",dayInput:"#hidden_jj",mmInput:"#hidden_mm",yearInput:"#hidden_aa",hourInput:"#hidden_hh",minuteInput:"#hidden_mn",publishButton:"#publish",publishButtonSpinner:"#publishing-action > .spinner",submitMetabox:"#postbox-container-1",postForm:"#post",fileInput:"#zip_upload",iconSetConfigInput:"#elementor_custom_icon_set_config"},templates:{icon:'<li><div class="icon"><i class="{{icon}}"></i><div class="icon-name">{{label}}</div></div></li>',header:jQuery("#elementor-custom-icons-template-header").html(),footer:jQuery("#elementor-custom-icons-template-footer").html(),duplicatePrefix:jQuery("#elementor-custom-icons-template-duplicate-prefix").html()},notice:ElementorProConfig.i18n.fontsUploadEmptyNotice}}},{key:"getDefaultElements",value:function getDefaultElements(){var e={},t=this.getSettings("selectors");return jQuery.each(t,(function(t,r){e["$"+t]=jQuery(r)})),e}},{key:"bindEvents",value:function bindEvents(){(0,l.default)((0,u.default)(CustomIcons.prototype),"bindEvents",this).call(this),""!==this.getData()&&this.bindOnTitleChange()}},{key:"bindOnTitleChange",value:function bindOnTitleChange(){var e=this;this.elements.$title.on("input change",(function onTitleInput(t){return e.onTitleInput(t)}))}},{key:"removeCloseHandle",value:function removeCloseHandle(){var e=this.elements.$metaboxContainer;e.find("h2").remove(),e.find("button").remove(),e.removeClass("closed").removeClass("postbox")}},{key:"prepareIconName",value:function prepareIconName(e){var t=e.replace("_"," ").replace("-"," ");return elementorCommon.helpers.upperCaseWords(t)}},{key:"getCreatedOn",value:function getCreatedOn(){var e=this.elements,t=e.$dayInput,r=e.$mmInput,n=e.$yearInput,o=e.$hourInput,i=e.$minuteInput;return{day:t.val(),mm:r.val(),year:n.val(),hour:o.val(),minute:i.val()}}},{key:"enqueueCSS",value:function enqueueCSS(e){elementorCommon.elements.$document.find('link[href="'+e+'"]').length||elementorCommon.elements.$document.find("link").last().after('<link href="'+e+'" rel="stylesheet" type="text/css">')}},{key:"setData",value:function setData(e){this.elements.$dataInput.val((0,i.default)(e))}},{key:"getData",value:function getData(){var e=this.elements.$dataInput.val();return""===e?"":JSON.parse(e)}},{key:"renderIconList",value:function renderIconList(e){var t=this,r=this.getSettings("templates.icon");return e.icons.map((function(n){var o={icon:e.displayPrefix+" "+e.prefix+n,label:t.prepareIconName(n)};return elementorCommon.compileTemplate(r,o)})).join("\n")}},{key:"renderIcons",value:function renderIcons(e){var t=this.elements,r=t.$metaboxContainer,n=t.$metabox,o=t.$submitMetabox,i=this.getSettings("templates"),s=i.header,a=i.footer;r.addClass(this.getSettings("classes.hasIcons")),o.show(),this.setData(e),this.enqueueCSS(e.url),n.html(""),r.prepend(elementorCommon.compileTemplate(s,e)),n.append("<ul>"+this.renderIconList(e)+"</ul>"),r.append(elementorCommon.compileTemplate(a,this.getCreatedOn()))}},{key:"onTitleInput",value:function onTitleInput(e){var t=this.getData();t.label=e.target.value,this.setData(t)}},{key:"checkInputsForValues",value:function checkInputsForValues(){return""!==this.elements.$fileInput.val()||""!==this.elements.$iconSetConfigInput.val()}},{key:"onSuccess",value:function onSuccess(e){var t,r,n=this;return e.data.errors?(jQuery.each(e.data.errors,(function(e,n){return t=e,r=n,!1})),this.showAlertDialog(t,r)):e.data.config.duplicate_prefix?(delete e.data.config.duplicatePrefix,this.showAlertDialog("duplicate-prefix",this.getSettings("templates.duplicatePrefix"),(function(){return n.saveInitialUpload(e.data.config)}))):void this.saveInitialUpload(e.data.config)}},{key:"saveInitialUpload",value:function saveInitialUpload(e){this.setData(e);var t=this.elements,r=t.$publishButton,n=t.$title;t.$submitMetabox.show(),""===n.val()&&n.val(e.name),this.fileWasUploaded=!0,r.trigger("click")}},{key:"onInit",value:function onInit(){var e=this,t=elementorCommon.elements.$body,r=this.getSettings("classes"),n=r.editPageClass,o=r.editPhp;if(t.hasClass(n)&&!t.hasClass(o)){(0,l.default)((0,u.default)(CustomIcons.prototype),"onInit",this).call(this),this.removeCloseHandle();var i=new(this.getSettings("fields.dropzone")),s=this.getData(),a=this.elements,c=a.$dropzone,p=a.$metaboxContainer;""===s?(c.show("fast"),i.setSettings("onSuccess",(function(){return e.onSuccess.apply(e,arguments)}))):this.renderIcons(s),p.show("fast")}}}]),CustomIcons}(f.default);t.default=v},87190:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=void 0,r(84208),r(67209),r(71954);var i=o(r(11959)),s=o(r(39041)),a=o(r(76700)),l=o(r(44263)),u=o(r(77371)),c=o(r(68537)),p=o(r(15860)),f=o(r(21876)),d=o(r(11435)),v=function(e){(0,u.default)(CustomFontsManager,e);var t=(0,c.default)(CustomFontsManager);function CustomFontsManager(){return(0,i.default)(this,CustomFontsManager),t.apply(this,arguments)}return(0,s.default)(CustomFontsManager,[{key:"getDefaultSettings",value:function getDefaultSettings(){return{fields:{upload:f.default,repeater:d.default},selectors:{editPageClass:"post-type-elementor_font",title:"#title",repeaterBlock:".repeater-block",repeaterTitle:".repeater-title",removeRowBtn:".remove-repeater-row",editRowBtn:".toggle-repeater-row",closeRowBtn:".close-repeater-row",styleInput:".font_style",weightInput:".font_weight",customFontsMetaBox:"#elementor-font-custommetabox",closeHandle:"button.handlediv",toolbar:".elementor-field-toolbar",inlinePreview:".inline-preview",fileUrlInput:'.elementor-field-file input[type="text"]',postForm:"#post",publishButton:"#publish",publishButtonSpinner:"#publishing-action > .spinner"},notice:ElementorProConfig.i18n.fontsUploadEmptyNotice,fontLabelTemplate:'<ul class="row-font-label"><li class="row-font-weight">{{weight}}</li><li class="row-font-style">{{style}}</li><li class="row-font-preview">{{preview}}</li>{{toolbar}}</ul>'}}},{key:"getDefaultElements",value:function getDefaultElements(){var e=this.getSettings("selectors");return{$postForm:jQuery(e.postForm),$publishButton:jQuery(e.publishButton),$publishButtonSpinner:jQuery(e.publishButtonSpinner),$closeHandle:jQuery(e.closeHandle),$customFontsMetaBox:jQuery(e.customFontsMetaBox),$title:jQuery(e.title)}}},{key:"renderTemplate",value:function renderTemplate(e,t){for(var r,n=/{{([^}}]+)?}}/g;r=n.exec(e);)e=e.replace(r[0],t[r[1]]);return e}},{key:"ucFirst",value:function ucFirst(e){return e.charAt(0).toUpperCase()+e.slice(1)}},{key:"getPreviewStyle",value:function getPreviewStyle(e){var t=this.getSettings("selectors"),r=this.elements.$title.val(),n=e.find("select"+t.styleInput).first().val(),o=e.find("select"+t.weightInput).first().val();return{style:this.ucFirst(n),weight:this.ucFirst(o),styleAttribute:"font-family: "+r+" ;font-style: "+n+"; font-weight: "+o+";"}}},{key:"updateRowLabel",value:function updateRowLabel(e,t){var r=this.getSettings("selectors"),n=this.getSettings("fontLabelTemplate"),o=t.closest(r.repeaterBlock),i=o.find(r.removeRowBtn).first(),s=o.find(r.editRowBtn).first(),a=o.find(r.closeRowBtn).first(),l=t.find(r.toolbar).last().clone(),u=this.getPreviewStyle(t);s.length>0&&s.not(r.toolbar+" "+r.editRowBtn).remove(),a.length>0&&a.not(r.toolbar+" "+r.closeRowBtn).remove(),i.length>0&&i.not(r.toolbar+" "+r.removeRowBtn).remove();var c=jQuery('<li class="row-font-actions">').append(l)[0].outerHTML;return this.renderTemplate(n,{weight:'<span class="label">Weight:</span>'+u.weight,style:'<span class="label">Style:</span>'+u.style,preview:'<span style="'+u.styleAttribute+'">Elementor is making the web beautiful</span>',toolbar:c})}},{key:"onRepeaterToggleVisible",value:function onRepeaterToggleVisible(e,t,r){var n=this.getSettings("selectors"),o=r.find(n.inlinePreview),i=this.getPreviewStyle(r);o.attr("style",i.styleAttribute)}},{key:"onRepeaterNewRow",value:function onRepeaterNewRow(e,t,r){var n=this.getSettings("selectors");r.find(n.removeRowBtn).first().remove(),r.find(n.editRowBtn).first().remove(),r.find(n.closeRowBtn).first().remove()}},{key:"maybeToggle",value:function maybeToggle(e){e.preventDefault();var t=this.getSettings("selectors");jQuery(this).is(":visible")&&!jQuery(e.target).hasClass(t.editRowBtn)&&jQuery(this).find(t.editRowBtn).trigger("click")}},{key:"onInputChange",value:function onInputChange(e){var t=jQuery(e.target).next(),r=this.getSettings("fields");r.upload.setFields(t),r.upload.setLabels(t),r.upload.replaceButtonClass(t)}},{key:"bindEvents",value:function bindEvents(){var e=this.getSettings("selectors");jQuery(document).on("repeaterComputedLabel",this.updateRowLabel.bind(this)).on("onRepeaterToggleVisible",this.onRepeaterToggleVisible.bind(this)).on("onRepeaterNewRow",this.onRepeaterNewRow.bind(this)).on("click",e.repeaterTitle,this.maybeToggle.bind(this)).on("input",e.fileUrlInput,this.onInputChange.bind(this)),(0,a.default)((0,l.default)(CustomFontsManager.prototype),"bindEvents",this).call(this)}},{key:"checkInputsForValues",value:function checkInputsForValues(){var e=this.getSettings("selectors"),t=!1;return jQuery(e.fileUrlInput).each((function(e,r){if(""!==jQuery(r).val())return t=!0,!1})),t}},{key:"removeCloseHandle",value:function removeCloseHandle(){this.elements.$closeHandle.remove(),this.elements.$customFontsMetaBox.removeClass("closed").removeClass("postbox")}},{key:"titleRequired",value:function titleRequired(){this.elements.$title.prop("required",!0)}},{key:"onInit",value:function onInit(){var e,t=this.getSettings();if(jQuery("body").hasClass(t.selectors.editPageClass)){for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];(e=(0,a.default)((0,l.default)(CustomFontsManager.prototype),"onInit",this)).call.apply(e,[this].concat(n)),this.removeCloseHandle(),this.titleRequired(),t.fields.upload.init(),t.fields.repeater.init()}}}]),CustomFontsManager}(p.default);t.default=v},9940:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=void 0;var i=o(r(38923)),s=o(r(32009)),a=o(r(11959)),l=o(r(39041)),u=o(r(76700)),c=o(r(44263)),p=o(r(77371)),f=o(r(68537)),d=function(e){(0,p.default)(DropZoneField,e);var t=(0,f.default)(DropZoneField);function DropZoneField(){return(0,a.default)(this,DropZoneField),t.apply(this,arguments)}return(0,l.default)(DropZoneField,[{key:"getDefaultSettings",value:function getDefaultSettings(){var e=".elementor-dropzone-field";return{droppedFiles:!1,selectors:{dropZone:e,input:e+' [type="file"]',label:e+"label",errorMsg:e+".box__error span",restart:e+".box__restart",browseButton:e+" .elementor--dropzone--upload__browse",postId:"#post_ID"},classes:{drag:"is-dragover",error:"is-error",success:"is-success",upload:"is-uploading"},onSuccess:null,onError:null}}},{key:"getDefaultElements",value:function getDefaultElements(){var e={},t=this.getSettings("selectors");return jQuery.each(t,(function(t,r){e["$"+t]=jQuery(r)})),e}},{key:"bindEvents",value:function bindEvents(){var e=this,t=this.elements,r=t.$dropZone,n=t.$browseButton,o=t.$input,i=this.getSettings("classes").drag;n.on("click",(function(){return o.trigger("click")})),r.on("drag dragstart dragend dragover dragenter dragleave drop",(function(e){e.preventDefault(),e.stopPropagation()})).on("dragover dragenter",(function(){r.addClass(i)})).on("dragleave dragend drop",(function(){r.removeClass(i)})).on("drop change",(function(t){"change"===t.type?e.setSettings("droppedFiles",t.originalEvent.target.files):e.setSettings("droppedFiles",t.originalEvent.dataTransfer.files),e.handleUpload()}))}},{key:"handleUpload",value:function handleUpload(){var e=arguments,t=this.getSettings("droppedFiles");if(t){var r=this.elements,n=r.$input,o=r.$dropZone,a=r.$postId,l=r.$errorMsg,u=this.getSettings("classes"),c=u.error,p=u.success,f=u.upload,d=this.getSettings(),v=d.onSuccess,h=d.onError,g=new FormData,y=n.attr("name"),m="pro_assets_manager_custom_icon_upload",b=this;(0,i.default)(t).forEach((function(e){g.append(y,e[1])})),g.append("actions",(0,s.default)({pro_assets_manager_custom_icon_upload:{action:m,data:{post_id:a.val()}}})),o.removeClass(p).removeClass(c),elementorCommon.ajax.send("ajax",{data:g,cache:!1,enctype:"multipart/form-data",contentType:!1,processData:!1,complete:function complete(){o.removeClass(f)},success:function success(t){var r=t.responses[m];o.addClass(r.success?p:c),r.success?v&&v(r,b):(l.text(r.error),h&&h(b,e))},error:function error(){"function"==typeof h&&h(b,e)}})}}},{key:"onInit",value:function onInit(){(0,u.default)((0,c.default)(DropZoneField.prototype),"onInit",this).call(this),elementorCommon.elements.$document.trigger("onDropzoneLoaded",[this])}}]),DropZoneField}(elementorModules.ViewModule);t.default=d},11435:(e,t,r)=>{"use strict";var n=r(67971)(r(24596));r(71954),r(84208),r(55506),r(76139),r(44321),e.exports={selectors:{add:".add-repeater-row",remove:".remove-repeater-row",toggle:".toggle-repeater-row",close:".close-repeater-row",sort:".sort-repeater-row",table:".form-table",block:".repeater-block",repeaterLabel:".repeater-title",repeaterField:".elementor-field-repeater"},counters:[],trigger:function trigger(e,t){jQuery(document).trigger(e,t)},triggerHandler:function triggerHandler(e,t){return jQuery(document).triggerHandler(e,t)},countBlocks:function countBlocks(e){return e.closest(this.selectors.repeaterField).find(this.selectors.block).length||0},add:function add(e){var t,r=this,n=jQuery(e),o=n.data("template-id");r.counters.hasOwnProperty(o)||(r.counters[o]=r.countBlocks(n)),r.counters[o]+=1,t=jQuery("#"+o).html(),t=r.replaceAll("__counter__",r.counters[o],t),n.before(t),r.trigger("onRepeaterNewRow",[n,n.prev()])},remove:function remove(e){jQuery(e).closest(this.selectors.block).remove()},toggle:function toggle(e){var t=this,r=jQuery(e),n=r.closest(t.selectors.block).find(t.selectors.table),o=r.closest(t.selectors.block).find(t.selectors.repeaterLabel);n.toggle(0,"none",(function(){n.is(":visible")?(n.closest(t.selectors.block).addClass("block-visible"),t.trigger("onRepeaterToggleVisible",[r,n,o])):(n.closest(t.selectors.block).removeClass("block-visible"),t.trigger("onRepeaterToggleHidden",[r,n,o]))})),o.toggle(),t.updateRowLabel(e)},close:function close(e){var t=this,r=jQuery(e),n=r.closest(t.selectors.block).find(t.selectors.table),o=r.closest(t.selectors.block).find(t.selectors.repeaterLabel);n.closest(t.selectors.block).removeClass("block-visible"),n.hide(),t.trigger("onRepeaterToggleHidden",[r,n,o]),o.show(),t.updateRowLabel(e)},updateRowLabel:function updateRowLabel(e){var t=this,r=jQuery(e),o=r.closest(t.selectors.block).find(t.selectors.table),i=r.closest(t.selectors.block).find(t.selectors.repeaterLabel),s=i.data("selector");if("undefined"!==(0,n.default)(s)&&!1!==s){var a=!1,l=i.data("default");o.find(s).length&&(a=o.find(s).val());var u=t.triggerHandler("repeaterComputedLabel",[o,i,a]);void 0!==u&&!1!==u&&(a=u),void 0!==a&&!1!==a||(a=l),i.html(a)}},replaceAll:function replaceAll(e,t,r){return r.replace(new RegExp(e,"g"),t)},init:function init(){var e=this;jQuery(document).on("click",this.selectors.add,(function(t){t.preventDefault(),e.add(jQuery(this),t)})).on("click",this.selectors.remove,(function(t){t.preventDefault(),confirm(jQuery(this).data("confirm").toString())&&e.remove(jQuery(this),t)})).on("click",this.selectors.toggle,(function(t){t.preventDefault(),t.stopPropagation(),e.toggle(jQuery(this),t)})).on("click",this.selectors.close,(function(t){t.preventDefault(),t.stopPropagation(),e.close(jQuery(this),t)})),jQuery(this.selectors.toggle).each((function(){e.updateRowLabel(jQuery(this))})),this.trigger("onRepeaterLoaded",[this])}}},21876:(e,t,r)=>{"use strict";var n=r(67971);r(99236),r(71954);var o=n(r(74846));e.exports={$btn:null,fileId:null,fileUrl:null,fileFrame:[],selectors:{uploadBtnClass:"elementor-upload-btn",clearBtnClass:"elementor-upload-clear-btn",uploadBtn:".elementor-upload-btn",clearBtn:".elementor-upload-clear-btn",inputURLField:'.elementor-field-file input[type="text"]'},hasValue:function hasValue(){return""!==jQuery(this.fileUrl).val()},setLabels:function setLabels(e){this.hasValue()?e.val(e.data("remove_text")):e.val(e.data("upload_text"))},setFields:function setFields(e){var t=this;t.fileUrl=jQuery(e).prev(),t.fileId=jQuery(t.fileUrl).prev()},setUploadParams:function setUploadParams(e,t){var r=this.fileFrame[t].uploader.uploader;r.param("uploadType",e),r.param("uploadTypeCaller","elementor-admin-font-upload"),r.param("post_id",this.getPostId())},setUploadMimeType:function setUploadMimeType(e,t){var r=_wpPluploadSettings.defaults.filters.mime_types[0].extensions,n=this;e.on("ready",(function(){_wpPluploadSettings.defaults.filters.mime_types[0].extensions=t})),e.on("close",(function(){_wpPluploadSettings.defaults.filters.mime_types[0].extensions=r,n.replaceButtonClass(n.$btn)}))},replaceButtonClass:function replaceButtonClass(e){this.hasValue()?jQuery(e).removeClass(this.selectors.uploadBtnClass).addClass(this.selectors.clearBtnClass):jQuery(e).removeClass(this.selectors.clearBtnClass).addClass(this.selectors.uploadBtnClass),this.setLabels(e)},uploadFile:function uploadFile(e){var t=this,r=this,n=jQuery(e),i=n.attr("data-mime_type")||"",s=n.attr("data-ext")||!1,a=n.attr("id");if(void 0!==r.fileFrame[a])return s&&r.setUploadParams(s,a),void r.fileFrame[a].open();r.fileFrame[a]=wp.media({library:{type:[].concat((0,o.default)(i.split(",")),[i.split(",").join("")])},title:n.data("box_title"),button:{text:n.data("box_action")},multiple:!1}),r.fileFrame[a].on("select",(function(){var t=r.fileFrame[a].state().get("selection").first().toJSON();jQuery(r.fileId).val(t.id),jQuery(r.fileUrl).val(t.url),r.replaceButtonClass(e),r.updatePreview(e)})),r.fileFrame[a].on("open",(function(){var e=t.fileId.val();e&&r.fileFrame[a].state().get("selection").add(wp.media.attachment(e))})),r.setUploadMimeType(r.fileFrame[a],s),r.fileFrame[a].open(),s&&r.setUploadParams(s,a)},updatePreview:function updatePreview(e){var t=this,r=jQuery(e).parent().find("ul"),n=jQuery("<li>"),o=jQuery(e).data("preview_anchor")||"full";if(r.html(""),t.hasValue()&&"none"!==o){var i=jQuery(t.fileUrl).val();"full"!==o&&(i=i.substring(i.lastIndexOf("/")+1)),n.html('<a href="'+jQuery(t.fileUrl).val()+'" download>'+i+"</a>"),r.append(n)}},setup:function setup(){var e=this;jQuery(e.selectors.uploadBtn+", "+e.selectors.clearBtn).each((function(){e.setFields(jQuery(this)),e.updatePreview(jQuery(this)),e.setLabels(jQuery(this)),e.replaceButtonClass(jQuery(this))}))},getPostId:function getPostId(){return jQuery("#post_ID").val()},handleUploadClick:function handleUploadClick(e){e.preventDefault();var t=jQuery(e.target);if("text"===t.attr("type"))return t.next().removeClass(this.selectors.clearBtnClass).addClass(this.selectors.uploadBtnClass).trigger("click");this.$btn=t,this.setFields(t),this.uploadFile(t)},init:function init(){var e=this,t=this,r=this.selectors,n=r.uploadBtn,o=r.inputURLField,i=r.clearBtn,s=function handleUpload(t){return e.handleUploadClick(t)};jQuery(document).on("click",n,s),jQuery(document).on("click",o,(function(e){""!==e.target.value&&s(e)})),jQuery(document).on("click",i,(function(e){e.preventDefault();var r=jQuery(this);t.setFields(r),jQuery(t.fileUrl).val(""),jQuery(t.fileId).val(""),t.updatePreview(r),t.replaceButtonClass(r)})),this.setup(),jQuery(document).on("onRepeaterNewRow",(function(){t.setup()}))}}},88948:(e,t,r)=>{"use strict";var n=r(67394),o=r(67971);n(t,"__esModule",{value:!0}),t.default=void 0;var i=o(r(11959)),s=o(r(39041)),a=o(r(77371)),l=o(r(68537)),u=function(e){(0,a.default)(_default,e);var t=(0,l.default)(_default);function _default(){return(0,i.default)(this,_default),t.apply(this,arguments)}return(0,s.default)(_default,[{key:"getDefaultSettings",value:function getDefaultSettings(){return{selectors:{button:"#elementor_pro_fa_pro_validate_button",kitIdField:"#elementor_font_awesome_pro_kit_id"}}}},{key:"getDefaultElements",value:function getDefaultElements(){var e={},t=this.getSettings("selectors");return jQuery.each(t,(function(t,r){e["$"+t]=jQuery(r)})),e}},{key:"bindEvents",value:function bindEvents(){var e=this,t=this.elements,r=t.$button,n=t.$kitIdField;r.on("click",(function(t){t.preventDefault(),e.testKitUrl()})),n.on("change",(function(){e.setState("clear")}))}},{key:"setState",value:function setState(e){var t,r,n=["loading","success","error"],o=this.elements.$button;for(r in n)e===(t=n[r])?o.addClass(t):o.removeClass(t)}},{key:"testKitUrl",value:function testKitUrl(){this.setState("loading");var e=this,t=this.elements.$kitIdField.val();""!==t?jQuery.ajax({url:"https://kit.fontawesome.com/"+t+".js",method:"GET",complete:function complete(t){200!==t.status?e.setState("error"):e.setState("success")}}):this.setState("clear")}}]),_default}(elementorModules.ViewModule);t.default=u},11501:(e,t,r)=>{"use strict";r(84208),e.exports=function(){var e=this;e.cacheElements=function(){this.cache={$button:jQuery("#elementor_pro_typekit_validate_button"),$kitIdField:jQuery("#elementor_typekit-kit-id"),$dataLabelSpan:jQuery(".elementor-pro-typekit-data")}},e.bindEvents=function(){this.cache.$button.on("click",(function(t){t.preventDefault(),e.fetchFonts()})),this.cache.$kitIdField.on("change",(function(){e.setState("clear")}))},e.fetchFonts=function(){this.setState("loading"),this.cache.$dataLabelSpan.addClass("hidden");var t=this.cache.$kitIdField.val();""!==t?jQuery.post(ajaxurl,{action:"elementor_pro_admin_fetch_fonts",kit_id:t,_nonce:e.cache.$button.data("nonce")}).done((function(t){if(t.success){var r=e.cache.$button.data("found");r=r.replace("{{count}}",t.data.count),e.cache.$dataLabelSpan.html(r).removeClass("hidden"),e.setState("success")}else e.setState("error")})).fail((function(){e.setState()})):this.setState("clear")},e.setState=function(e){var t,r,n=["loading","success","error"];for(r in n)e===(t=n[r])?this.cache.$button.addClass(t):this.cache.$button.removeClass(t)},e.init=function(){this.cacheElements(),this.bindEvents()},e.init()}},16534:(e,t,r)=>{"use strict";e.exports=function(){var e=r(49874);this.dripButton=new e("drip_api_token"),this.getResponse=new e("getresponse_api_key"),this.convertKit=new e("convertkit_api_key"),this.mailChimp=new e("mailchimp_api_key"),this.mailerLite=new e("mailerlite_api_key"),this.activeCcampaign=new e("activecampaign_api_key","activecampaign_api_url")}},49874:e=>{"use strict";e.exports=function(e,t){var r=this;r.cacheElements=function(){this.cache={$button:jQuery("#elementor_pro_"+e+"_button"),$apiKeyField:jQuery("#elementor_pro_"+e),$apiUrlField:jQuery("#elementor_pro_"+t)}},r.bindEvents=function(){this.cache.$button.on("click",(function(e){e.preventDefault(),r.validateApi()})),this.cache.$apiKeyField.on("change",(function(){r.setState("clear")}))},r.validateApi=function(){this.setState("loading");var e=this.cache.$apiKeyField.val();""!==e?this.cache.$apiUrlField.length&&""===this.cache.$apiUrlField.val()?this.setState("clear"):jQuery.post(ajaxurl,{action:r.cache.$button.data("action"),api_key:e,api_url:this.cache.$apiUrlField.val(),_nonce:r.cache.$button.data("nonce")}).done((function(e){e.success?r.setState("success"):r.setState("error")})).fail((function(){r.setState()})):this.setState("clear")},r.setState=function(e){var t,r,n=["loading","success","error"];for(r in n)e===(t=n[r])?this.cache.$button.addClass(t):this.cache.$button.removeClass(t)},r.init=function(){this.cacheElements(),this.bindEvents()},r.init()}},30743:(e,t,r)=>{"use strict";e.exports=function(){var e=r(24338);this.editButton=new e}},24338:(e,t,r)=>{"use strict";r(71954),e.exports=function(){this.init=function(){jQuery(document).on("change",".elementor-widget-template-select",(function(){var e=jQuery(this),t=e.val(),r=e.parents("p").find(".elementor-edit-template");if("page"===e.find('[value="'+t+'"]').data("type")){var n=ElementorProConfig.i18n.home_url+"?p="+t+"&elementor";r.prop("href",n).show()}else r.hide()}))},this.init()}},80804:(e,t,r)=>{"use strict";e.exports=function(){var e=r(80431);this.advancedRoleManager=new e}},80431:(e,t,r)=>{"use strict";r(71954),e.exports=function(){var e=this;e.cacheElements=function(){this.cache={$checkBox:jQuery('input[name="elementor_exclude_user_roles[]"]'),$advanced:jQuery("#elementor_advanced_role_manager")}},e.bindEvents=function(){this.cache.$checkBox.on("change",(function(t){t.preventDefault(),e.checkBoxUpdate(jQuery(this))}))},e.checkBoxUpdate=function(t){var r=t.val();t.is(":checked")?e.cache.$advanced.find("div."+r).addClass("hidden"):e.cache.$advanced.find("div."+r).removeClass("hidden")},e.init=function(){jQuery("body").hasClass("elementor_page_elementor-role-manager")&&(this.cacheElements(),this.bindEvents())},e.init()}},99004:(e,t,r)=>{"use strict";e.exports=function(){var e=r(51907);this.createTemplateDialog=new e}},51907:(e,t,r)=>{"use strict";r(71954),e.exports=function(){var e={templateTypeInput:"#elementor-new-template__form__template-type",locationWrapper:"#elementor-new-template__form__location__wrapper",postTypeWrapper:"#elementor-new-template__form__post-type__wrapper"},t={$templateTypeInput:null,$locationWrapper:null,$postTypeWrapper:null},r=function setLocationFieldVisibility(){t.$locationWrapper.toggle("section"===t.$templateTypeInput.val()),t.$postTypeWrapper.toggle("single"===t.$templateTypeInput.val())},n=function run(){!function setElements(){jQuery.each(e,(function(e,r){t[e="$"+e]=elementorNewTemplate.layout.getModal().getElements("content").find(r)}))}(),r(),t.$templateTypeInput.on("change",r)};this.init=function(){window.elementorNewTemplate&&(elementorNewTemplate.layout.getModal(),n())},jQuery(setTimeout.bind(window,this.init))}},7421:(e,t,r)=>{r(99572),r(37627),e.exports=r(47208).Array.from},70157:(e,t,r)=>{r(42580),e.exports=r(47208).Array.isArray},89710:(e,t,r)=>{var n=r(47208),o=n.JSON||(n.JSON={stringify:JSON.stringify});e.exports=function stringify(e){return o.stringify.apply(o,arguments)}},14710:(e,t,r)=>{r(30785);var n=r(47208).Object;e.exports=function create(e,t){return n.create(e,t)}},43153:(e,t,r)=>{r(40168);var n=r(47208).Object;e.exports=function defineProperty(e,t,r){return n.defineProperty(e,t,r)}},8531:(e,t,r)=>{r(95260),e.exports=r(47208).Object.entries},32622:(e,t,r)=>{r(18576);var n=r(47208).Object;e.exports=function getOwnPropertyDescriptor(e,t){return n.getOwnPropertyDescriptor(e,t)}},58535:(e,t,r)=>{r(4840),e.exports=r(47208).Object.getPrototypeOf},65135:(e,t,r)=>{r(13890),e.exports=r(47208).Object.setPrototypeOf},43094:(e,t,r)=>{r(11320),e.exports=r(47208).Reflect.construct},17641:(e,t,r)=>{r(36600),e.exports=r(47208).Reflect.get},19103:(e,t,r)=>{r(54370),r(70285),r(87573),r(97224),e.exports=r(47208).Symbol},39871:(e,t,r)=>{r(99572),r(74114),e.exports=r(7273).f("iterator")},26610:e=>{e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},29697:e=>{e.exports=function(){}},30498:(e,t,r)=>{var n=r(39632);e.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},69191:(e,t,r)=>{var n=r(1504),o=r(37154),i=r(46723);e.exports=function(e){return function(t,r,s){var a,l=n(t),u=o(l.length),c=i(s,u);if(e&&r!=r){for(;u>c;)if((a=l[c++])!=a)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===r)return e||c||0;return!e&&-1}}},45515:(e,t,r)=>{"use strict";var n=r(26610),o=r(39632),i=r(19897),s=[].slice,a={},construct=function(e,t,r){if(!(t in a)){for(var n=[],o=0;o<t;o++)n[o]="a["+o+"]";a[t]=Function("F,a","return new F("+n.join(",")+")")}return a[t](e,r)};e.exports=Function.bind||function bind(e){var t=n(this),r=s.call(arguments,1),bound=function(){var n=r.concat(s.call(arguments));return this instanceof bound?construct(t,n.length,n):i(t,n,e)};return o(t.prototype)&&(bound.prototype=t.prototype),bound}},8312:(e,t,r)=>{var n=r(41352),o=r(24300)("toStringTag"),i="Arguments"==n(function(){return arguments}());e.exports=function(e){var t,r,s;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?r:i?n(t):"Object"==(s=n(t))&&"function"==typeof t.callee?"Arguments":s}},41352:e=>{var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},47208:e=>{var t=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=t)},87352:(e,t,r)=>{"use strict";var n=r(60510),o=r(48439);e.exports=function(e,t,r){t in e?n.f(e,t,o(0,r)):e[t]=r}},61725:(e,t,r)=>{var n=r(26610);e.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,o){return e.call(t,r,n,o)}}return function(){return e.apply(t,arguments)}}},18239:e=>{e.exports=function(e){if(null==e)throw TypeError("Can't call method on  "+e);return e}},75179:(e,t,r)=>{e.exports=!r(90472)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},48765:(e,t,r)=>{var n=r(39632),o=r(43280).document,i=n(o)&&n(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},31986:e=>{e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},42266:(e,t,r)=>{var n=r(86425),o=r(97739),i=r(67410);e.exports=function(e){var t=n(e),r=o.f;if(r)for(var s,a=r(e),l=i.f,u=0;a.length>u;)l.call(e,s=a[u++])&&t.push(s);return t}},98310:(e,t,r)=>{var n=r(43280),o=r(47208),i=r(61725),s=r(62292),a=r(20657),$export=function(e,t,r){var l,u,c,p=e&$export.F,f=e&$export.G,d=e&$export.S,v=e&$export.P,h=e&$export.B,g=e&$export.W,y=f?o:o[t]||(o[t]={}),m=y.prototype,b=f?n:d?n[t]:(n[t]||{}).prototype;for(l in f&&(r=t),r)(u=!p&&b&&void 0!==b[l])&&a(y,l)||(c=u?b[l]:r[l],y[l]=f&&"function"!=typeof b[l]?r[l]:h&&u?i(c,n):g&&b[l]==c?function(e){var F=function(t,r,n){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,r)}return new e(t,r,n)}return e.apply(this,arguments)};return F.prototype=e.prototype,F}(c):v&&"function"==typeof c?i(Function.call,c):c,v&&((y.virtual||(y.virtual={}))[l]=c,e&$export.R&&m&&!m[l]&&s(m,l,c)))};$export.F=1,$export.G=2,$export.S=4,$export.P=8,$export.B=16,$export.W=32,$export.U=64,$export.R=128,e.exports=$export},90472:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},43280:e=>{var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},20657:e=>{var t={}.hasOwnProperty;e.exports=function(e,r){return t.call(e,r)}},62292:(e,t,r)=>{var n=r(60510),o=r(48439);e.exports=r(75179)?function(e,t,r){return n.f(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},92477:(e,t,r)=>{var n=r(43280).document;e.exports=n&&n.documentElement},64457:(e,t,r)=>{e.exports=!r(75179)&&!r(90472)((function(){return 7!=Object.defineProperty(r(48765)("div"),"a",{get:function(){return 7}}).a}))},19897:e=>{e.exports=function(e,t,r){var n=void 0===r;switch(t.length){case 0:return n?e():e.call(r);case 1:return n?e(t[0]):e.call(r,t[0]);case 2:return n?e(t[0],t[1]):e.call(r,t[0],t[1]);case 3:return n?e(t[0],t[1],t[2]):e.call(r,t[0],t[1],t[2]);case 4:return n?e(t[0],t[1],t[2],t[3]):e.call(r,t[0],t[1],t[2],t[3])}return e.apply(r,t)}},13115:(e,t,r)=>{var n=r(41352);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},11827:(e,t,r)=>{var n=r(79105),o=r(24300)("iterator"),i=Array.prototype;e.exports=function(e){return void 0!==e&&(n.Array===e||i[o]===e)}},7359:(e,t,r)=>{var n=r(41352);e.exports=Array.isArray||function isArray(e){return"Array"==n(e)}},39632:e=>{e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},93086:(e,t,r)=>{var n=r(30498);e.exports=function(e,t,r,o){try{return o?t(n(r)[0],r[1]):t(r)}catch(t){var i=e.return;throw void 0!==i&&n(i.call(e)),t}}},19802:(e,t,r)=>{"use strict";var n=r(82488),o=r(48439),i=r(2413),s={};r(62292)(s,r(24300)("iterator"),(function(){return this})),e.exports=function(e,t,r){e.prototype=n(s,{next:o(1,r)}),i(e,t+" Iterator")}},6125:(e,t,r)=>{"use strict";var n=r(36794),o=r(98310),i=r(19312),s=r(62292),a=r(79105),l=r(19802),u=r(2413),c=r(999),p=r(24300)("iterator"),f=!([].keys&&"next"in[].keys()),d="keys",v="values",returnThis=function(){return this};e.exports=function(e,t,r,h,g,y,m){l(r,t,h);var b,x,_,getMethod=function(e){if(!f&&e in k)return k[e];switch(e){case d:return function keys(){return new r(this,e)};case v:return function values(){return new r(this,e)}}return function entries(){return new r(this,e)}},w=t+" Iterator",S=g==v,j=!1,k=e.prototype,C=k[p]||k["@@iterator"]||g&&k[g],O=C||getMethod(g),P=g?S?getMethod("entries"):O:void 0,I="Array"==t&&k.entries||C;if(I&&(_=c(I.call(new e)))!==Object.prototype&&_.next&&(u(_,w,!0),n||"function"==typeof _[p]||s(_,p,returnThis)),S&&C&&C.name!==v&&(j=!0,O=function values(){return C.call(this)}),n&&!m||!f&&!j&&k[p]||s(k,p,O),a[t]=O,a[w]=returnThis,g)if(b={values:S?O:getMethod(v),keys:y?O:getMethod(d),entries:P},m)for(x in b)x in k||i(k,x,b[x]);else o(o.P+o.F*(f||j),t,b);return b}},26797:(e,t,r)=>{var n=r(24300)("iterator"),o=!1;try{var i=[7][n]();i.return=function(){o=!0},Array.from(i,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var r=!1;try{var i=[7],s=i[n]();s.next=function(){return{done:r=!0}},i[n]=function(){return s},e(i)}catch(e){}return r}},9329:e=>{e.exports=function(e,t){return{value:t,done:!!e}}},79105:e=>{e.exports={}},36794:e=>{e.exports=!0},6758:(e,t,r)=>{var n=r(54251)("meta"),o=r(39632),i=r(20657),s=r(60510).f,a=0,l=Object.isExtensible||function(){return!0},u=!r(90472)((function(){return l(Object.preventExtensions({}))})),setMeta=function(e){s(e,n,{value:{i:"O"+ ++a,w:{}}})},c=e.exports={KEY:n,NEED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,n)){if(!l(e))return"F";if(!t)return"E";setMeta(e)}return e[n].i},getWeak:function(e,t){if(!i(e,n)){if(!l(e))return!0;if(!t)return!1;setMeta(e)}return e[n].w},onFreeze:function(e){return u&&c.NEED&&l(e)&&!i(e,n)&&setMeta(e),e}}},82488:(e,t,r)=>{var n=r(30498),o=r(36607),i=r(31986),s=r(18478)("IE_PROTO"),Empty=function(){},createDict=function(){var e,t=r(48765)("iframe"),n=i.length;for(t.style.display="none",r(92477).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),createDict=e.F;n--;)delete createDict.prototype[i[n]];return createDict()};e.exports=Object.create||function create(e,t){var r;return null!==e?(Empty.prototype=n(e),r=new Empty,Empty.prototype=null,r[s]=e):r=createDict(),void 0===t?r:o(r,t)}},60510:(e,t,r)=>{var n=r(30498),o=r(64457),i=r(12737),s=Object.defineProperty;t.f=r(75179)?Object.defineProperty:function defineProperty(e,t,r){if(n(e),t=i(t,!0),n(r),o)try{return s(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},36607:(e,t,r)=>{var n=r(60510),o=r(30498),i=r(86425);e.exports=r(75179)?Object.defineProperties:function defineProperties(e,t){o(e);for(var r,s=i(t),a=s.length,l=0;a>l;)n.f(e,r=s[l++],t[r]);return e}},83264:(e,t,r)=>{var n=r(67410),o=r(48439),i=r(1504),s=r(12737),a=r(20657),l=r(64457),u=Object.getOwnPropertyDescriptor;t.f=r(75179)?u:function getOwnPropertyDescriptor(e,t){if(e=i(e),t=s(t,!0),l)try{return u(e,t)}catch(e){}if(a(e,t))return o(!n.f.call(e,t),e[t])}},26084:(e,t,r)=>{var n=r(1504),o=r(8772).f,i={}.toString,s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function getOwnPropertyNames(e){return s&&"[object Window]"==i.call(e)?function(e){try{return o(e)}catch(e){return s.slice()}}(e):o(n(e))}},8772:(e,t,r)=>{var n=r(65326),o=r(31986).concat("length","prototype");t.f=Object.getOwnPropertyNames||function getOwnPropertyNames(e){return n(e,o)}},97739:(e,t)=>{t.f=Object.getOwnPropertySymbols},999:(e,t,r)=>{var n=r(20657),o=r(60061),i=r(18478)("IE_PROTO"),s=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),n(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?s:null}},65326:(e,t,r)=>{var n=r(20657),o=r(1504),i=r(69191)(!1),s=r(18478)("IE_PROTO");e.exports=function(e,t){var r,a=o(e),l=0,u=[];for(r in a)r!=s&&n(a,r)&&u.push(r);for(;t.length>l;)n(a,r=t[l++])&&(~i(u,r)||u.push(r));return u}},86425:(e,t,r)=>{var n=r(65326),o=r(31986);e.exports=Object.keys||function keys(e){return n(e,o)}},67410:(e,t)=>{t.f={}.propertyIsEnumerable},57972:(e,t,r)=>{var n=r(98310),o=r(47208),i=r(90472);e.exports=function(e,t){var r=(o.Object||{})[e]||Object[e],s={};s[e]=t(r),n(n.S+n.F*i((function(){r(1)})),"Object",s)}},9480:(e,t,r)=>{var n=r(75179),o=r(86425),i=r(1504),s=r(67410).f;e.exports=function(e){return function(t){for(var r,a=i(t),l=o(a),u=l.length,c=0,p=[];u>c;)r=l[c++],n&&!s.call(a,r)||p.push(e?[r,a[r]]:a[r]);return p}}},48439:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},19312:(e,t,r)=>{e.exports=r(62292)},25574:(e,t,r)=>{var n=r(39632),o=r(30498),check=function(e,t){if(o(e),!n(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,n){try{(n=r(61725)(Function.call,r(83264).f(Object.prototype,"__proto__").set,2))(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function setPrototypeOf(e,r){return check(e,r),t?e.__proto__=r:n(e,r),e}}({},!1):void 0),check}},2413:(e,t,r)=>{var n=r(60510).f,o=r(20657),i=r(24300)("toStringTag");e.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,i)&&n(e,i,{configurable:!0,value:t})}},18478:(e,t,r)=>{var n=r(29990)("keys"),o=r(54251);e.exports=function(e){return n[e]||(n[e]=o(e))}},29990:(e,t,r)=>{var n=r(47208),o=r(43280),i="__core-js_shared__",s=o[i]||(o[i]={});(e.exports=function(e,t){return s[e]||(s[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:r(36794)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},78502:(e,t,r)=>{var n=r(58290),o=r(18239);e.exports=function(e){return function(t,r){var i,s,a=String(o(t)),l=n(r),u=a.length;return l<0||l>=u?e?"":void 0:(i=a.charCodeAt(l))<55296||i>56319||l+1===u||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):i:e?a.slice(l,l+2):s-56320+(i-55296<<10)+65536}}},46723:(e,t,r)=>{var n=r(58290),o=Math.max,i=Math.min;e.exports=function(e,t){return(e=n(e))<0?o(e+t,0):i(e,t)}},58290:e=>{var t=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:t)(e)}},1504:(e,t,r)=>{var n=r(13115),o=r(18239);e.exports=function(e){return n(o(e))}},37154:(e,t,r)=>{var n=r(58290),o=Math.min;e.exports=function(e){return e>0?o(n(e),9007199254740991):0}},60061:(e,t,r)=>{var n=r(18239);e.exports=function(e){return Object(n(e))}},12737:(e,t,r)=>{var n=r(39632);e.exports=function(e,t){if(!n(e))return e;var r,o;if(t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;if("function"==typeof(r=e.valueOf)&&!n(o=r.call(e)))return o;if(!t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},54251:e=>{var t=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+r).toString(36))}},31164:(e,t,r)=>{var n=r(43280),o=r(47208),i=r(36794),s=r(7273),a=r(60510).f;e.exports=function(e){var t=o.Symbol||(o.Symbol=i?{}:n.Symbol||{});"_"==e.charAt(0)||e in t||a(t,e,{value:s.f(e)})}},7273:(e,t,r)=>{t.f=r(24300)},24300:(e,t,r)=>{var n=r(29990)("wks"),o=r(54251),i=r(43280).Symbol,s="function"==typeof i;(e.exports=function(e){return n[e]||(n[e]=s&&i[e]||(s?i:o)("Symbol."+e))}).store=n},26116:(e,t,r)=>{var n=r(8312),o=r(24300)("iterator"),i=r(79105);e.exports=r(47208).getIteratorMethod=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[n(e)]}},37627:(e,t,r)=>{"use strict";var n=r(61725),o=r(98310),i=r(60061),s=r(93086),a=r(11827),l=r(37154),u=r(87352),c=r(26116);o(o.S+o.F*!r(26797)((function(e){Array.from(e)})),"Array",{from:function from(e){var t,r,o,p,f=i(e),d="function"==typeof this?this:Array,v=arguments.length,h=v>1?arguments[1]:void 0,g=void 0!==h,y=0,m=c(f);if(g&&(h=n(h,v>2?arguments[2]:void 0,2)),null==m||d==Array&&a(m))for(r=new d(t=l(f.length));t>y;y++)u(r,y,g?h(f[y],y):f[y]);else for(p=m.call(f),r=new d;!(o=p.next()).done;y++)u(r,y,g?s(p,h,[o.value,y],!0):o.value);return r.length=y,r}})},42580:(e,t,r)=>{var n=r(98310);n(n.S,"Array",{isArray:r(7359)})},84411:(e,t,r)=>{"use strict";var n=r(29697),o=r(9329),i=r(79105),s=r(1504);e.exports=r(6125)(Array,"Array",(function(e,t){this._t=s(e),this._i=0,this._k=t}),(function(){var e=this._t,t=this._k,r=this._i++;return!e||r>=e.length?(this._t=void 0,o(1)):o(0,"keys"==t?r:"values"==t?e[r]:[r,e[r]])}),"values"),i.Arguments=i.Array,n("keys"),n("values"),n("entries")},30785:(e,t,r)=>{var n=r(98310);n(n.S,"Object",{create:r(82488)})},40168:(e,t,r)=>{var n=r(98310);n(n.S+n.F*!r(75179),"Object",{defineProperty:r(60510).f})},18576:(e,t,r)=>{var n=r(1504),o=r(83264).f;r(57972)("getOwnPropertyDescriptor",(function(){return function getOwnPropertyDescriptor(e,t){return o(n(e),t)}}))},4840:(e,t,r)=>{var n=r(60061),o=r(999);r(57972)("getPrototypeOf",(function(){return function getPrototypeOf(e){return o(n(e))}}))},13890:(e,t,r)=>{var n=r(98310);n(n.S,"Object",{setPrototypeOf:r(25574).set})},70285:()=>{},11320:(e,t,r)=>{var n=r(98310),o=r(82488),i=r(26610),s=r(30498),a=r(39632),l=r(90472),u=r(45515),c=(r(43280).Reflect||{}).construct,p=l((function(){function F(){}return!(c((function(){}),[],F)instanceof F)})),f=!l((function(){c((function(){}))}));n(n.S+n.F*(p||f),"Reflect",{construct:function construct(e,t){i(e),s(t);var r=arguments.length<3?e:i(arguments[2]);if(f&&!p)return c(e,t,r);if(e==r){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var n=[null];return n.push.apply(n,t),new(u.apply(e,n))}var l=r.prototype,d=o(a(l)?l:Object.prototype),v=Function.apply.call(e,d,t);return a(v)?v:d}})},36600:(e,t,r)=>{var n=r(83264),o=r(999),i=r(20657),s=r(98310),a=r(39632),l=r(30498);s(s.S,"Reflect",{get:function get(e,t){var r,s,u=arguments.length<3?e:arguments[2];return l(e)===u?e[t]:(r=n.f(e,t))?i(r,"value")?r.value:void 0!==r.get?r.get.call(u):void 0:a(s=o(e))?get(s,t,u):void 0}})},99572:(e,t,r)=>{"use strict";var n=r(78502)(!0);r(6125)(String,"String",(function(e){this._t=String(e),this._i=0}),(function(){var e,t=this._t,r=this._i;return r>=t.length?{value:void 0,done:!0}:(e=n(t,r),this._i+=e.length,{value:e,done:!1})}))},54370:(e,t,r)=>{"use strict";var n=r(43280),o=r(20657),i=r(75179),s=r(98310),a=r(19312),l=r(6758).KEY,u=r(90472),c=r(29990),p=r(2413),f=r(54251),d=r(24300),v=r(7273),h=r(31164),g=r(42266),y=r(7359),m=r(30498),b=r(39632),x=r(60061),_=r(1504),w=r(12737),S=r(48439),j=r(82488),k=r(26084),C=r(83264),O=r(97739),P=r(60510),I=r(86425),E=C.f,M=P.f,$=k.f,T=n.Symbol,R=n.JSON,A=R&&R.stringify,D=d("_hidden"),Q=d("toPrimitive"),B={}.propertyIsEnumerable,L=c("symbol-registry"),U=c("symbols"),N=c("op-symbols"),V=Object.prototype,H="function"==typeof T&&!!O.f,W=n.QObject,z=!W||!W.prototype||!W.prototype.findChild,q=i&&u((function(){return 7!=j(M({},"a",{get:function(){return M(this,"a",{value:7}).a}})).a}))?function(e,t,r){var n=E(V,t);n&&delete V[t],M(e,t,r),n&&e!==V&&M(V,t,n)}:M,wrap=function(e){var t=U[e]=j(T.prototype);return t._k=e,t},G=H&&"symbol"==typeof T.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof T},K=function defineProperty(e,t,r){return e===V&&K(N,t,r),m(e),t=w(t,!0),m(r),o(U,t)?(r.enumerable?(o(e,D)&&e[D][t]&&(e[D][t]=!1),r=j(r,{enumerable:S(0,!1)})):(o(e,D)||M(e,D,S(1,{})),e[D][t]=!0),q(e,t,r)):M(e,t,r)},Z=function defineProperties(e,t){m(e);for(var r,n=g(t=_(t)),o=0,i=n.length;i>o;)K(e,r=n[o++],t[r]);return e},J=function propertyIsEnumerable(e){var t=B.call(this,e=w(e,!0));return!(this===V&&o(U,e)&&!o(N,e))&&(!(t||!o(this,e)||!o(U,e)||o(this,D)&&this[D][e])||t)},Y=function getOwnPropertyDescriptor(e,t){if(e=_(e),t=w(t,!0),e!==V||!o(U,t)||o(N,t)){var r=E(e,t);return!r||!o(U,t)||o(e,D)&&e[D][t]||(r.enumerable=!0),r}},X=function getOwnPropertyNames(e){for(var t,r=$(_(e)),n=[],i=0;r.length>i;)o(U,t=r[i++])||t==D||t==l||n.push(t);return n},ee=function getOwnPropertySymbols(e){for(var t,r=e===V,n=$(r?N:_(e)),i=[],s=0;n.length>s;)!o(U,t=n[s++])||r&&!o(V,t)||i.push(U[t]);return i};H||(a((T=function Symbol(){if(this instanceof T)throw TypeError("Symbol is not a constructor!");var e=f(arguments.length>0?arguments[0]:void 0),$set=function(t){this===V&&$set.call(N,t),o(this,D)&&o(this[D],e)&&(this[D][e]=!1),q(this,e,S(1,t))};return i&&z&&q(V,e,{configurable:!0,set:$set}),wrap(e)}).prototype,"toString",(function toString(){return this._k})),C.f=Y,P.f=K,r(8772).f=k.f=X,r(67410).f=J,O.f=ee,i&&!r(36794)&&a(V,"propertyIsEnumerable",J,!0),v.f=function(e){return wrap(d(e))}),s(s.G+s.W+s.F*!H,{Symbol:T});for(var te="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),re=0;te.length>re;)d(te[re++]);for(var ne=I(d.store),oe=0;ne.length>oe;)h(ne[oe++]);s(s.S+s.F*!H,"Symbol",{for:function(e){return o(L,e+="")?L[e]:L[e]=T(e)},keyFor:function keyFor(e){if(!G(e))throw TypeError(e+" is not a symbol!");for(var t in L)if(L[t]===e)return t},useSetter:function(){z=!0},useSimple:function(){z=!1}}),s(s.S+s.F*!H,"Object",{create:function create(e,t){return void 0===t?j(e):Z(j(e),t)},defineProperty:K,defineProperties:Z,getOwnPropertyDescriptor:Y,getOwnPropertyNames:X,getOwnPropertySymbols:ee});var ie=u((function(){O.f(1)}));s(s.S+s.F*ie,"Object",{getOwnPropertySymbols:function getOwnPropertySymbols(e){return O.f(x(e))}}),R&&s(s.S+s.F*(!H||u((function(){var e=T();return"[null]"!=A([e])||"{}"!=A({a:e})||"{}"!=A(Object(e))}))),"JSON",{stringify:function stringify(e){for(var t,r,n=[e],o=1;arguments.length>o;)n.push(arguments[o++]);if(r=t=n[1],(b(t)||void 0!==e)&&!G(e))return y(t)||(t=function(e,t){if("function"==typeof r&&(t=r.call(this,e,t)),!G(t))return t}),n[1]=t,A.apply(R,n)}}),T.prototype[Q]||r(62292)(T.prototype,Q,T.prototype.valueOf),p(T,"Symbol"),p(Math,"Math",!0),p(n.JSON,"JSON",!0)},95260:(e,t,r)=>{var n=r(98310),o=r(9480)(!0);n(n.S,"Object",{entries:function entries(e){return o(e)}})},87573:(e,t,r)=>{r(31164)("asyncIterator")},97224:(e,t,r)=>{r(31164)("observable")},74114:(e,t,r)=>{r(84411);for(var n=r(43280),o=r(62292),i=r(79105),s=r(24300)("toStringTag"),a="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;l<a.length;l++){var u=a[l],c=n[u],p=c&&c.prototype;p&&!p[s]&&o(p,s,u),i[u]=i.Array}},22761:e=>{e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},42094:(e,t,r)=>{var n=r(62190)("unscopables"),o=Array.prototype;null==o[n]&&r(74216)(o,n,{}),e.exports=function(e){o[n][e]=!0}},88492:(e,t,r)=>{"use strict";var n=r(12070)(!0);e.exports=function(e,t,r){return t+(r?n(e,t).length:1)}},6365:(e,t,r)=>{var n=r(67334);e.exports=function(e){if(!n(e))throw TypeError(e+" is not an object!");return e}},59021:(e,t,r)=>{var n=r(15703),o=r(26078),i=r(78615);e.exports=function(e){return function(t,r,s){var a,l=n(t),u=o(l.length),c=i(s,u);if(e&&r!=r){for(;u>c;)if((a=l[c++])!=a)return!0}else for(;u>c;c++)if((e||c in l)&&l[c]===r)return e||c||0;return!e&&-1}}},78309:(e,t,r)=>{var n=r(11528),o=r(8467),i=r(26033),s=r(26078),a=r(63531);e.exports=function(e,t){var r=1==e,l=2==e,u=3==e,c=4==e,p=6==e,f=5==e||p,d=t||a;return function(t,a,v){for(var h,g,y=i(t),m=o(y),b=n(a,v,3),x=s(m.length),_=0,w=r?d(t,x):l?d(t,0):void 0;x>_;_++)if((f||_ in m)&&(g=b(h=m[_],_,y),e))if(r)w[_]=g;else if(g)switch(e){case 3:return!0;case 5:return h;case 6:return _;case 2:w.push(h)}else if(c)return!1;return p?-1:u||c?c:w}}},81071:(e,t,r)=>{var n=r(67334),o=r(99141),i=r(62190)("species");e.exports=function(e){var t;return o(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!o(t.prototype)||(t=void 0),n(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},63531:(e,t,r)=>{var n=r(81071);e.exports=function(e,t){return new(n(e))(t)}},20106:(e,t,r)=>{var n=r(26688),o=r(62190)("toStringTag"),i="Arguments"==n(function(){return arguments}());e.exports=function(e){var t,r,s;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?r:i?n(t):"Object"==(s=n(t))&&"function"==typeof t.callee?"Arguments":s}},26688:e=>{var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},60066:e=>{var t=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=t)},11528:(e,t,r)=>{var n=r(22761);e.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,o){return e.call(t,r,n,o)}}return function(){return e.apply(t,arguments)}}},61622:e=>{e.exports=function(e){if(null==e)throw TypeError("Can't call method on  "+e);return e}},36628:(e,t,r)=>{e.exports=!r(48625)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},5050:(e,t,r)=>{var n=r(67334),o=r(38113).document,i=n(o)&&n(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},33603:e=>{e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},65772:(e,t,r)=>{var n=r(38113),o=r(60066),i=r(74216),s=r(17738),a=r(11528),$export=function(e,t,r){var l,u,c,p,f=e&$export.F,d=e&$export.G,v=e&$export.S,h=e&$export.P,g=e&$export.B,y=d?n:v?n[t]||(n[t]={}):(n[t]||{}).prototype,m=d?o:o[t]||(o[t]={}),b=m.prototype||(m.prototype={});for(l in d&&(r=t),r)c=((u=!f&&y&&void 0!==y[l])?y:r)[l],p=g&&u?a(c,n):h&&"function"==typeof c?a(Function.call,c):c,y&&s(y,l,c,e&$export.U),m[l]!=c&&i(m,l,p),h&&b[l]!=c&&(b[l]=c)};n.core=o,$export.F=1,$export.G=2,$export.S=4,$export.P=8,$export.B=16,$export.W=32,$export.U=64,$export.R=128,e.exports=$export},48625:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},48897:(e,t,r)=>{"use strict";r(25846);var n=r(17738),o=r(74216),i=r(48625),s=r(61622),a=r(62190),l=r(43288),u=a("species"),c=!i((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),p=function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var r="ab".split(e);return 2===r.length&&"a"===r[0]&&"b"===r[1]}();e.exports=function(e,t,r){var f=a(e),d=!i((function(){var t={};return t[f]=function(){return 7},7!=""[e](t)})),v=d?!i((function(){var t=!1,r=/a/;return r.exec=function(){return t=!0,null},"split"===e&&(r.constructor={},r.constructor[u]=function(){return r}),r[f](""),!t})):void 0;if(!d||!v||"replace"===e&&!c||"split"===e&&!p){var h=/./[f],g=r(s,f,""[e],(function maybeCallNative(e,t,r,n,o){return t.exec===l?d&&!o?{done:!0,value:h.call(t,r,n)}:{done:!0,value:e.call(r,t,n)}:{done:!1}})),y=g[0],m=g[1];n(String.prototype,e,y),o(RegExp.prototype,f,2==t?function(e,t){return m.call(e,this,t)}:function(e){return m.call(e,this)})}}},74859:(e,t,r)=>{"use strict";var n=r(6365);e.exports=function(){var e=n(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},20646:(e,t,r)=>{e.exports=r(8655)("native-function-to-string",Function.toString)},38113:e=>{var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},54040:e=>{var t={}.hasOwnProperty;e.exports=function(e,r){return t.call(e,r)}},74216:(e,t,r)=>{var n=r(98558),o=r(36061);e.exports=r(36628)?function(e,t,r){return n.f(e,t,o(1,r))}:function(e,t,r){return e[t]=r,e}},8954:(e,t,r)=>{var n=r(38113).document;e.exports=n&&n.documentElement},5100:(e,t,r)=>{e.exports=!r(36628)&&!r(48625)((function(){return 7!=Object.defineProperty(r(5050)("div"),"a",{get:function(){return 7}}).a}))},18938:(e,t,r)=>{var n=r(67334),o=r(86095).set;e.exports=function(e,t,r){var i,s=t.constructor;return s!==r&&"function"==typeof s&&(i=s.prototype)!==r.prototype&&n(i)&&o&&o(e,i),e}},8467:(e,t,r)=>{var n=r(26688);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},99141:(e,t,r)=>{var n=r(26688);e.exports=Array.isArray||function isArray(e){return"Array"==n(e)}},67334:e=>{e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},94587:(e,t,r)=>{var n=r(67334),o=r(26688),i=r(62190)("match");e.exports=function(e){var t;return n(e)&&(void 0!==(t=e[i])?!!t:"RegExp"==o(e))}},81422:e=>{e.exports=!1},98558:(e,t,r)=>{var n=r(6365),o=r(5100),i=r(31382),s=Object.defineProperty;t.f=r(36628)?Object.defineProperty:function defineProperty(e,t,r){if(n(e),t=i(t,!0),n(r),o)try{return s(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(e[t]=r.value),e}},94662:(e,t,r)=>{var n=r(65873),o=r(36061),i=r(15703),s=r(31382),a=r(54040),l=r(5100),u=Object.getOwnPropertyDescriptor;t.f=r(36628)?u:function getOwnPropertyDescriptor(e,t){if(e=i(e),t=s(t,!0),l)try{return u(e,t)}catch(e){}if(a(e,t))return o(!n.f.call(e,t),e[t])}},76604:(e,t,r)=>{var n=r(75547),o=r(33603).concat("length","prototype");t.f=Object.getOwnPropertyNames||function getOwnPropertyNames(e){return n(e,o)}},75547:(e,t,r)=>{var n=r(54040),o=r(15703),i=r(59021)(!1),s=r(28034)("IE_PROTO");e.exports=function(e,t){var r,a=o(e),l=0,u=[];for(r in a)r!=s&&n(a,r)&&u.push(r);for(;t.length>l;)n(a,r=t[l++])&&(~i(u,r)||u.push(r));return u}},65873:(e,t)=>{t.f={}.propertyIsEnumerable},36061:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},17738:(e,t,r)=>{var n=r(38113),o=r(74216),i=r(54040),s=r(25078)("src"),a=r(20646),l="toString",u=(""+a).split(l);r(60066).inspectSource=function(e){return a.call(e)},(e.exports=function(e,t,r,a){var l="function"==typeof r;l&&(i(r,"name")||o(r,"name",t)),e[t]!==r&&(l&&(i(r,s)||o(r,s,e[t]?""+e[t]:u.join(String(t)))),e===n?e[t]=r:a?e[t]?e[t]=r:o(e,t,r):(delete e[t],o(e,t,r)))})(Function.prototype,l,(function toString(){return"function"==typeof this&&this[s]||a.call(this)}))},62404:(e,t,r)=>{"use strict";var n=r(20106),o=RegExp.prototype.exec;e.exports=function(e,t){var r=e.exec;if("function"==typeof r){var i=r.call(e,t);if("object"!=typeof i)throw new TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==n(e))throw new TypeError("RegExp#exec called on incompatible receiver");return o.call(e,t)}},43288:(e,t,r)=>{"use strict";var n,o,i=r(74859),s=RegExp.prototype.exec,a=String.prototype.replace,l=s,u=(n=/a/,o=/b*/g,s.call(n,"a"),s.call(o,"a"),0!==n.lastIndex||0!==o.lastIndex),c=void 0!==/()??/.exec("")[1];(u||c)&&(l=function exec(e){var t,r,n,o,l=this;return c&&(r=new RegExp("^"+l.source+"$(?!\\s)",i.call(l))),u&&(t=l.lastIndex),n=s.call(l,e),u&&n&&(l.lastIndex=l.global?n.index+n[0].length:t),c&&n&&n.length>1&&a.call(n[0],r,(function(){for(o=1;o<arguments.length-2;o++)void 0===arguments[o]&&(n[o]=void 0)})),n}),e.exports=l},86095:(e,t,r)=>{var n=r(67334),o=r(6365),check=function(e,t){if(o(e),!n(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,n){try{(n=r(11528)(Function.call,r(94662).f(Object.prototype,"__proto__").set,2))(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function setPrototypeOf(e,r){return check(e,r),t?e.__proto__=r:n(e,r),e}}({},!1):void 0),check}},49766:(e,t,r)=>{"use strict";var n=r(38113),o=r(98558),i=r(36628),s=r(62190)("species");e.exports=function(e){var t=n[e];i&&t&&!t[s]&&o.f(t,s,{configurable:!0,get:function(){return this}})}},28034:(e,t,r)=>{var n=r(8655)("keys"),o=r(25078);e.exports=function(e){return n[e]||(n[e]=o(e))}},8655:(e,t,r)=>{var n=r(60066),o=r(38113),i="__core-js_shared__",s=o[i]||(o[i]={});(e.exports=function(e,t){return s[e]||(s[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:r(81422)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},11987:(e,t,r)=>{var n=r(6365),o=r(22761),i=r(62190)("species");e.exports=function(e,t){var r,s=n(e).constructor;return void 0===s||null==(r=n(s)[i])?t:o(r)}},10225:(e,t,r)=>{"use strict";var n=r(48625);e.exports=function(e,t){return!!e&&n((function(){t?e.call(null,(function(){}),1):e.call(null)}))}},12070:(e,t,r)=>{var n=r(3338),o=r(61622);e.exports=function(e){return function(t,r){var i,s,a=String(o(t)),l=n(r),u=a.length;return l<0||l>=u?e?"":void 0:(i=a.charCodeAt(l))<55296||i>56319||l+1===u||(s=a.charCodeAt(l+1))<56320||s>57343?e?a.charAt(l):i:e?a.slice(l,l+2):s-56320+(i-55296<<10)+65536}}},78615:(e,t,r)=>{var n=r(3338),o=Math.max,i=Math.min;e.exports=function(e,t){return(e=n(e))<0?o(e+t,0):i(e,t)}},3338:e=>{var t=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:t)(e)}},15703:(e,t,r)=>{var n=r(8467),o=r(61622);e.exports=function(e){return n(o(e))}},26078:(e,t,r)=>{var n=r(3338),o=Math.min;e.exports=function(e){return e>0?o(n(e),9007199254740991):0}},26033:(e,t,r)=>{var n=r(61622);e.exports=function(e){return Object(n(e))}},31382:(e,t,r)=>{var n=r(67334);e.exports=function(e,t){if(!n(e))return e;var r,o;if(t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;if("function"==typeof(r=e.valueOf)&&!n(o=r.call(e)))return o;if(!t&&"function"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},25078:e=>{var t=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+r).toString(36))}},62190:(e,t,r)=>{var n=r(8655)("wks"),o=r(25078),i=r(38113).Symbol,s="function"==typeof i;(e.exports=function(e){return n[e]||(n[e]=s&&i[e]||(s?i:o)("Symbol."+e))}).store=n},71954:(e,t,r)=>{"use strict";var n=r(65772),o=r(78309)(5),i="find",s=!0;i in[]&&Array(1).find((function(){s=!1})),n(n.P+n.F*s,"Array",{find:function find(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),r(42094)(i)},90286:(e,t,r)=>{"use strict";var n=r(65772),o=r(78309)(1);n(n.P+n.F*!r(10225)([].map,!0),"Array",{map:function map(e){return o(this,e,arguments[1])}})},67209:(e,t,r)=>{"use strict";var n=r(65772),o=r(8954),i=r(26688),s=r(78615),a=r(26078),l=[].slice;n(n.P+n.F*r(48625)((function(){o&&l.call(o)})),"Array",{slice:function slice(e,t){var r=a(this.length),n=i(this);if(t=void 0===t?r:t,"Array"==n)return l.call(this,e,t);for(var o=s(e,r),u=s(t,r),c=a(u-o),p=new Array(c),f=0;f<c;f++)p[f]="String"==n?this.charAt(o+f):this[o+f];return p}})},99745:(e,t,r)=>{var n=r(98558).f,o=Function.prototype,i=/^\s*function ([^ (]*)/,s="name";s in o||r(36628)&&n(o,s,{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(e){return""}}})},76139:(e,t,r)=>{"use strict";var n=r(20106),o={};o[r(62190)("toStringTag")]="z",o+""!="[object z]"&&r(17738)(Object.prototype,"toString",(function toString(){return"[object "+n(this)+"]"}),!0)},55506:(e,t,r)=>{var n=r(38113),o=r(18938),i=r(98558).f,s=r(76604).f,a=r(94587),l=r(74859),u=n.RegExp,c=u,p=u.prototype,f=/a/g,d=/a/g,v=new u(f)!==f;if(r(36628)&&(!v||r(48625)((function(){return d[r(62190)("match")]=!1,u(f)!=f||u(d)==d||"/a/i"!=u(f,"i")})))){u=function RegExp(e,t){var r=this instanceof u,n=a(e),i=void 0===t;return!r&&n&&e.constructor===u&&i?e:o(v?new c(n&&!i?e.source:e,t):c((n=e instanceof u)?e.source:e,n&&i?l.call(e):t),r?this:p,u)};for(var proxy=function(e){e in u||i(u,e,{configurable:!0,get:function(){return c[e]},set:function(t){c[e]=t}})},h=s(c),g=0;h.length>g;)proxy(h[g++]);p.constructor=u,u.prototype=p,r(17738)(n,"RegExp",u)}r(49766)("RegExp")},25846:(e,t,r)=>{"use strict";var n=r(43288);r(65772)({target:"RegExp",proto:!0,forced:n!==/./.exec},{exec:n})},40751:(e,t,r)=>{r(36628)&&"g"!=/./g.flags&&r(98558).f(RegExp.prototype,"flags",{configurable:!0,get:r(74859)})},84208:(e,t,r)=>{"use strict";var n=r(6365),o=r(26033),i=r(26078),s=r(3338),a=r(88492),l=r(62404),u=Math.max,c=Math.min,p=Math.floor,f=/\$([$&`']|\d\d?|<[^>]*>)/g,d=/\$([$&`']|\d\d?)/g;r(48897)("replace",2,(function(e,t,r,v){return[function replace(n,o){var i=e(this),s=null==n?void 0:n[t];return void 0!==s?s.call(n,i,o):r.call(String(i),n,o)},function(e,t){var o=v(r,e,this,t);if(o.done)return o.value;var p=n(e),f=String(this),d="function"==typeof t;d||(t=String(t));var h=p.global;if(h){var g=p.unicode;p.lastIndex=0}for(var y=[];;){var m=l(p,f);if(null===m)break;if(y.push(m),!h)break;""===String(m[0])&&(p.lastIndex=a(f,i(p.lastIndex),g))}for(var b,x="",_=0,w=0;w<y.length;w++){m=y[w];for(var S=String(m[0]),j=u(c(s(m.index),f.length),0),k=[],C=1;C<m.length;C++)k.push(void 0===(b=m[C])?b:String(b));var O=m.groups;if(d){var P=[S].concat(k,j,f);void 0!==O&&P.push(O);var I=String(t.apply(void 0,P))}else I=getSubstitution(S,f,j,k,O,t);j>=_&&(x+=f.slice(_,j)+I,_=j+S.length)}return x+f.slice(_)}];function getSubstitution(e,t,n,i,s,a){var l=n+e.length,u=i.length,c=d;return void 0!==s&&(s=o(s),c=f),r.call(a,c,(function(r,o){var a;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(l);case"<":a=s[o.slice(1,-1)];break;default:var c=+o;if(0===c)return r;if(c>u){var f=p(c/10);return 0===f?r:f<=u?void 0===i[f-1]?o.charAt(1):i[f-1]+o.charAt(1):r}a=i[c-1]}return void 0===a?"":a}))}}))},99236:(e,t,r)=>{"use strict";var n=r(94587),o=r(6365),i=r(11987),s=r(88492),a=r(26078),l=r(62404),u=r(43288),c=r(48625),p=Math.min,f=[].push,d=4294967295,v=!c((function(){RegExp(d,"y")}));r(48897)("split",2,(function(e,t,r,c){var h;return h="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,t){var o=String(this);if(void 0===e&&0===t)return[];if(!n(e))return r.call(o,e,t);for(var i,s,a,l=[],c=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),p=0,v=void 0===t?d:t>>>0,h=new RegExp(e.source,c+"g");(i=u.call(h,o))&&!((s=h.lastIndex)>p&&(l.push(o.slice(p,i.index)),i.length>1&&i.index<o.length&&f.apply(l,i.slice(1)),a=i[0].length,p=s,l.length>=v));)h.lastIndex===i.index&&h.lastIndex++;return p===o.length?!a&&h.test("")||l.push(""):l.push(o.slice(p)),l.length>v?l.slice(0,v):l}:"0".split(void 0,0).length?function(e,t){return void 0===e&&0===t?[]:r.call(this,e,t)}:r,[function split(r,n){var o=e(this),i=null==r?void 0:r[t];return void 0!==i?i.call(r,o,n):h.call(String(o),r,n)},function(e,t){var n=c(h,e,this,t,h!==r);if(n.done)return n.value;var u=o(e),f=String(this),g=i(u,RegExp),y=u.unicode,m=(u.ignoreCase?"i":"")+(u.multiline?"m":"")+(u.unicode?"u":"")+(v?"y":"g"),b=new g(v?u:"^(?:"+u.source+")",m),x=void 0===t?d:t>>>0;if(0===x)return[];if(0===f.length)return null===l(b,f)?[f]:[];for(var _=0,w=0,S=[];w<f.length;){b.lastIndex=v?w:0;var j,k=l(b,v?f:f.slice(w));if(null===k||(j=p(a(b.lastIndex+(v?0:w)),f.length))===_)w=s(f,w,y);else{if(S.push(f.slice(_,w)),S.length===x)return S;for(var C=1;C<=k.length-1;C++)if(S.push(k[C]),S.length===x)return S;w=_=j}}return S.push(f.slice(_)),S}]}))},44321:(e,t,r)=>{"use strict";r(40751);var n=r(6365),o=r(74859),i=r(36628),s="toString",a=/./.toString,define=function(e){r(17738)(RegExp.prototype,s,e,!0)};r(48625)((function(){return"/a/b"!=a.call({source:"a",flags:"b"})}))?define((function toString(){var e=n(this);return"/".concat(e.source,"/","flags"in e?e.flags:!i&&e instanceof RegExp?o.call(e):void 0)})):a.name!=s&&define((function toString(){return a.call(this)}))}},t={};function __webpack_require__(r){var n=t[r];if(void 0!==n)return n.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,__webpack_require__),o.exports}(()=>{"use strict";var e={widget_template_edit_button:__webpack_require__(30743),forms_integrations:__webpack_require__(16534),AssetsManager:__webpack_require__(80203),RoleManager:__webpack_require__(80804),ThemeBuilder:__webpack_require__(99004)};window.elementorProAdmin={widget_template_edit_button:new e.widget_template_edit_button,forms_integrations:new e.forms_integrations,assetsManager:new e.AssetsManager,roleManager:new e.RoleManager,themeBuilder:new e.ThemeBuilder},jQuery((function(){elementorProAdmin.roleManager.advancedRoleManager.init()}))})()})();assets/js/posts.c23c8d29f44afbd62da6.bundle.js000064400000013426150755004310014504 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["posts"],{

/***/ "../modules/posts/assets/js/frontend/handlers/cards.js":
/*!*************************************************************!*\
  !*** ../modules/posts/assets/js/frontend/handlers/cards.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _posts = _interopRequireDefault(__webpack_require__(/*! ./posts */ "../modules/posts/assets/js/frontend/handlers/posts.js"));

var _default = _posts.default.extend({
  getSkinPrefix() {
    return 'cards_';
  }

});

exports.default = _default;

/***/ }),

/***/ "../modules/posts/assets/js/frontend/handlers/posts.js":
/*!*************************************************************!*\
  !*** ../modules/posts/assets/js/frontend/handlers/posts.js ***!
  \*************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _default = elementorModules.frontend.handlers.Base.extend({
  getSkinPrefix() {
    return 'classic_';
  },

  bindEvents() {
    var cid = this.getModelCID();
    elementorFrontend.addListenerOnce(cid, 'resize', this.onWindowResize);
  },

  getClosureMethodsNames() {
    return elementorModules.frontend.handlers.Base.prototype.getClosureMethodsNames.apply(this, arguments).concat(['fitImages', 'onWindowResize', 'runMasonry']);
  },

  getDefaultSettings() {
    return {
      classes: {
        fitHeight: 'elementor-fit-height',
        hasItemRatio: 'elementor-has-item-ratio'
      },
      selectors: {
        postsContainer: '.elementor-posts-container',
        post: '.elementor-post',
        postThumbnail: '.elementor-post__thumbnail',
        postThumbnailImage: '.elementor-post__thumbnail img'
      }
    };
  },

  getDefaultElements() {
    var selectors = this.getSettings('selectors');
    return {
      $postsContainer: this.$element.find(selectors.postsContainer),
      $posts: this.$element.find(selectors.post)
    };
  },

  fitImage($post) {
    var settings = this.getSettings(),
        $imageParent = $post.find(settings.selectors.postThumbnail),
        $image = $imageParent.find('img'),
        image = $image[0];

    if (!image) {
      return;
    }

    var imageParentRatio = $imageParent.outerHeight() / $imageParent.outerWidth(),
        imageRatio = image.naturalHeight / image.naturalWidth;
    $imageParent.toggleClass(settings.classes.fitHeight, imageRatio < imageParentRatio);
  },

  fitImages() {
    var $ = jQuery,
        self = this,
        itemRatio = getComputedStyle(this.$element[0], ':after').content,
        settings = this.getSettings();
    this.elements.$postsContainer.toggleClass(settings.classes.hasItemRatio, !!itemRatio.match(/\d/));

    if (self.isMasonryEnabled()) {
      return;
    }

    this.elements.$posts.each(function () {
      var $post = $(this),
          $image = $post.find(settings.selectors.postThumbnailImage);
      self.fitImage($post);
      $image.on('load', function () {
        self.fitImage($post);
      });
    });
  },

  setColsCountSettings() {
    var currentDeviceMode = elementorFrontend.getCurrentDeviceMode(),
        settings = this.getElementSettings(),
        skinPrefix = this.getSkinPrefix(),
        colsCount;

    switch (currentDeviceMode) {
      case 'mobile':
        colsCount = settings[skinPrefix + 'columns_mobile'];
        break;

      case 'tablet':
        colsCount = settings[skinPrefix + 'columns_tablet'];
        break;

      default:
        colsCount = settings[skinPrefix + 'columns'];
    }

    this.setSettings('colsCount', colsCount);
  },

  isMasonryEnabled() {
    return !!this.getElementSettings(this.getSkinPrefix() + 'masonry');
  },

  initMasonry() {
    imagesLoaded(this.elements.$posts, this.runMasonry);
  },

  runMasonry() {
    var elements = this.elements;
    elements.$posts.css({
      marginTop: '',
      transitionDuration: ''
    });
    this.setColsCountSettings();
    var colsCount = this.getSettings('colsCount'),
        hasMasonry = this.isMasonryEnabled() && colsCount >= 2;
    elements.$postsContainer.toggleClass('elementor-posts-masonry', hasMasonry);

    if (!hasMasonry) {
      elements.$postsContainer.height('');
      return;
    }
    /* The `verticalSpaceBetween` variable is setup in a way that supports older versions of the portfolio widget */


    var verticalSpaceBetween = this.getElementSettings(this.getSkinPrefix() + 'row_gap.size');

    if ('' === this.getSkinPrefix() && '' === verticalSpaceBetween) {
      verticalSpaceBetween = this.getElementSettings(this.getSkinPrefix() + 'item_gap.size');
    }

    var masonry = new elementorModules.utils.Masonry({
      container: elements.$postsContainer,
      items: elements.$posts.filter(':visible'),
      columnsCount: this.getSettings('colsCount'),
      verticalSpaceBetween
    });
    masonry.run();
  },

  run() {
    // For slow browsers
    setTimeout(this.fitImages, 0);
    this.initMasonry();
  },

  onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
    this.bindEvents();
    this.run();
  },

  onWindowResize() {
    this.fitImages();
    this.runMasonry();
  },

  onElementChange() {
    this.fitImages();
    setTimeout(this.runMasonry);
  }

});

exports.default = _default;

/***/ })

}]);
//# sourceMappingURL=posts.c23c8d29f44afbd62da6.bundle.js.mapassets/js/progress-tracker.a7329beb7783748287a5.bundle.js000064400000022446150755004310016275 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["progress-tracker"],{

/***/ "../modules/progress-tracker/assets/js/frontend/handlers/circular-progress.js":
/*!************************************************************************************!*\
  !*** ../modules/progress-tracker/assets/js/frontend/handlers/circular-progress.js ***!
  \************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class CircularProgress {
  constructor(element, settings) {
    this.settings = settings;
    this.lastKnownProgress = null;
    this.circularProgressTracker = element.find('.elementor-scrolling-tracker-circular')[0];
    this.circularCurrentProgress = this.circularProgressTracker.getElementsByClassName('current-progress')[0];
    this.circularCurrentProgressPercentage = this.circularProgressTracker.getElementsByClassName('current-progress-percentage')[0];
    const radius = this.circularCurrentProgress.r.baseVal.value;
    const circumference = radius * 2 * Math.PI;
    this.circularCurrentProgress.style.strokeDasharray = `${circumference} ${circumference}`;
    this.circularCurrentProgress.style.strokeDashoffset = circumference;
    this.elements = this.cacheElements();
    this.resizeObserver = new ResizeObserver(() => {
      if (this.lastKnownProgress) {
        this.updateProgress(this.lastKnownProgress);
      }
    });
    this.resizeObserver.observe(this.circularProgressTracker);
  }

  cacheElements() {
    return {
      circularProgressTracker: this.circularProgressTracker,
      circularCurrentProgress: this.circularCurrentProgress,
      circularCurrentProgressPercentage: this.circularCurrentProgressPercentage
    };
  }

  updateProgress(progress) {
    // On page load, there is no progress and some of the elements might be not fully rendered - so we hide the progress.
    if (progress <= 0) {
      this.elements.circularCurrentProgress.style.display = 'none';
      this.elements.circularCurrentProgressPercentage.style.display = 'none';
      return;
    }

    this.elements.circularCurrentProgress.style.display = 'block';
    this.elements.circularCurrentProgressPercentage.style.display = 'block';
    const radius = this.elements.circularCurrentProgress.r.baseVal.value,
          circumference = radius * 2 * Math.PI,
          offset = circumference - progress / 100 * circumference;
    this.lastKnownProgress = progress;
    this.elements.circularCurrentProgress.style.strokeDasharray = `${circumference} ${circumference}`;
    this.elements.circularCurrentProgress.style.strokeDashoffset = 'ltr' === this.settings.direction ? -offset : offset;

    if ('yes' === this.settings.percentage) {
      this.elements.circularCurrentProgressPercentage.innerHTML = Math.round(progress) + '%';
    }
  }

  onDestroy() {
    this.resizeObserver.unobserve(this.circularProgressTracker);
  }

}

var _default = CircularProgress;
exports.default = _default;

/***/ }),

/***/ "../modules/progress-tracker/assets/js/frontend/handlers/linear-progress.js":
/*!**********************************************************************************!*\
  !*** ../modules/progress-tracker/assets/js/frontend/handlers/linear-progress.js ***!
  \**********************************************************************************/
/***/ ((__unused_webpack_module, exports) => {

"use strict";


Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

class LinearProgress {
  constructor(element, settings) {
    this.settings = settings;
    this.linearProgressTracker = element.find('.elementor-scrolling-tracker-horizontal')[0];
    this.linearCurrentProgress = this.linearProgressTracker.getElementsByClassName('current-progress')[0];
    this.linearCurrentProgressPercentage = this.linearProgressTracker.getElementsByClassName('current-progress-percentage')[0];
    this.elements = this.cacheElements();
  }

  cacheElements() {
    return {
      linearProgressTracker: this.linearProgressTracker,
      linearCurrentProgress: this.linearCurrentProgress,
      linearCurrentProgressPercentage: this.linearCurrentProgressPercentage
    };
  }

  updateProgress(progress) {
    // On page load, there is no progress and some of the elements might be not fully rendered - so we hide the progress.
    if (progress < 1) {
      this.elements.linearCurrentProgress.style.display = 'none';
      return;
    }

    this.elements.linearCurrentProgress.style.display = 'flex';
    this.elements.linearCurrentProgress.style.width = progress + '%';

    if ('yes' === this.settings.percentage && // Multiplying the progress percentage width by 1.5 to make sure it has enough space to be shown correctly.
    this.elements.linearCurrentProgress.getBoundingClientRect().width > this.elements.linearCurrentProgressPercentage.getBoundingClientRect().width * 1.5) {
      this.elements.linearCurrentProgressPercentage.innerHTML = Math.round(progress) + '%';
      this.elements.linearCurrentProgressPercentage.style.color = getComputedStyle(this.linearCurrentProgress).getPropertyValue('--percentage-color');
    } else {
      this.elements.linearCurrentProgressPercentage.style.color = 'transparent';
    }
  }

}

var _default = LinearProgress;
exports.default = _default;

/***/ }),

/***/ "../modules/progress-tracker/assets/js/frontend/handlers/progress-tracker.js":
/*!***********************************************************************************!*\
  !*** ../modules/progress-tracker/assets/js/frontend/handlers/progress-tracker.js ***!
  \***********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {

"use strict";


var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");

Object.defineProperty(exports, "__esModule", ({
  value: true
}));
exports.default = void 0;

var _circularProgress = _interopRequireDefault(__webpack_require__(/*! ./circular-progress */ "../modules/progress-tracker/assets/js/frontend/handlers/circular-progress.js"));

var _linearProgress = _interopRequireDefault(__webpack_require__(/*! ./linear-progress */ "../modules/progress-tracker/assets/js/frontend/handlers/linear-progress.js"));

class ProgressTracker extends elementorModules.frontend.handlers.Base {
  onInit() {
    elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
    this.circular = 'circular' === this.getElementSettings().type;
    const Handler = this.circular ? _circularProgress.default : _linearProgress.default;
    this.progressBar = new Handler(this.$element, this.getElementSettings());
    this.progressPercentage = 0;
    this.scrollHandler();
    this.handler = this.scrollHandler.bind(this);
    this.initListeners();
  }

  getTrackingElementSelector() {
    const trackingElementSetting = this.getElementSettings().relative_to;
    let selector;

    switch (trackingElementSetting) {
      case 'selector':
        selector = jQuery(this.getElementSettings().selector);
        break;

      case 'post_content':
        selector = jQuery('.elementor-widget-theme-post-content');
        break;

      default:
        selector = this.isScrollSnap() ? jQuery('#e-scroll-snap-container') : elementorFrontend.elements.$body;
        break;
    }

    return selector;
  } // TODO: On Elementor-Pro-3.6.0 delete this function and instead
  // use the function isScrollSnapActivated() from \elementor\assets\dev\js\frontend\utils\utils.js


  isScrollSnap() {
    const scrollSnapStatus = this.isEdit ? elementor.settings.page.model.attributes.scroll_snap : elementorFrontend.config.settings.page.scroll_snap;
    return 'yes' === scrollSnapStatus ? true : false;
  }

  addScrollSnapContainer() {
    if (this.isScrollSnap() && !jQuery('#e-scroll-snap-container').length) {
      jQuery('body').wrapInner('<div id="e-scroll-snap-container" />');
    }
  }

  scrollHandler() {
    // Temporary solution to integrate Scroll-Snap with Progress-Tracker.
    // Add Scroll-Snap container to all content in order to calculate the viewport percentage.
    this.addScrollSnapContainer();
    const $trackingElementSelector = this.getTrackingElementSelector(),
          scrollStartPercentage = $trackingElementSelector.is(elementorFrontend.elements.$body) || $trackingElementSelector.is(jQuery('#e-scroll-snap-container')) ? -100 : 0;
    this.progressPercentage = elementorModules.utils.Scroll.getElementViewportPercentage(this.getTrackingElementSelector(), {
      start: scrollStartPercentage,
      end: -100
    });
    this.progressBar.updateProgress(this.progressPercentage);
  }

  initListeners() {
    window.addEventListener('scroll', this.handler);
    elementorFrontend.elements.$body[0].addEventListener('scroll', this.handler);
  }

  onDestroy() {
    if (this.progressBar.onDestroy) {
      this.progressBar.onDestroy();
    }

    window.removeEventListener('scroll', this.handler);
    elementorFrontend.elements.$body[0].removeEventListener('scroll', this.handler);
  }

}

var _default = ProgressTracker;
exports.default = _default;

/***/ })

}]);
//# sourceMappingURL=progress-tracker.a7329beb7783748287a5.bundle.js.mapassets/js/woocommerce-cart.e2a9101be21a228a4575.bundle.min.js000064400000011254150755004310017041 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[859],{427:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;class Base extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{stickyRightColumn:".e-sticky-right-column"},classes:{stickyRightColumnActive:"e-sticky-right-column--active"}}}getDefaultElements(){const t=this.getSettings("selectors");return{$stickyRightColumn:this.$element.find(t.stickyRightColumn)}}bindEvents(){elementorFrontend.elements.$document.on("select2:open",(t=>{this.addSelect2Wrapper(t)}))}addSelect2Wrapper(t){const e=jQuery(t.target).data("select2");e.$dropdown&&e.$dropdown.addClass("e-woo-select2-wrapper")}isStickyRightColumnActive(){const t=this.getSettings("classes");return this.elements.$stickyRightColumn.hasClass(t.stickyRightColumnActive)}activateStickyRightColumn(){const t=this.getElementSettings(),e=elementorFrontend.elements.$wpAdminBar,n=this.getSettings("classes");let s=t.sticky_right_column_offset||0;e.length&&"fixed"===e.css("position")&&(s+=e.height()),"yes"===this.getElementSettings("sticky_right_column")&&(this.elements.$stickyRightColumn.addClass(n.stickyRightColumnActive),this.elements.$stickyRightColumn.css("top",s+"px"))}deactivateStickyRightColumn(){if(!this.isStickyRightColumnActive())return;const t=this.getSettings("classes");this.elements.$stickyRightColumn.removeClass(t.stickyRightColumnActive)}toggleStickyRightColumn(){this.getElementSettings("sticky_right_column")?this.isStickyRightColumnActive()||this.activateStickyRightColumn():this.deactivateStickyRightColumn()}equalizeElementHeight(t){if(t.length){t.removeAttr("style");let e=0;t.each(((t,n)=>{e=Math.max(e,n.offsetHeight)})),0<e&&t.css({height:e+"px"})}}}e.default=Base},3898:(t,e,n)=>{"use strict";var s=n(7914);Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i=s(n(427));class Cart extends i.default{getDefaultSettings(...t){const e=super.getDefaultSettings(...t);return{selectors:{...e.selectors,shippingForm:".shipping-calculator-form",quantityInput:".qty",updateCartButton:"button[name=update_cart]",wpHttpRefererInputs:"[name=_wp_http_referer]",hiddenInput:"input[type=hidden]",productRemove:".product-remove a"},classes:e.classes,ajaxUrl:elementorProFrontend.config.ajaxurl}}getDefaultElements(...t){const e=this.getSettings("selectors");return{...super.getDefaultElements(...t),$shippingForm:this.$element.find(e.shippingForm),$stickyColumn:this.$element.find(e.stickyColumn),$hiddenInput:this.$element.find(e.hiddenInput)}}bindEvents(){super.bindEvents();const t=this.getSettings("selectors");elementorFrontend.elements.$body.on("wc_fragments_refreshed",(()=>this.applyButtonsHoverAnimation())),"yes"===this.getElementSettings("update_cart_automatically")&&this.$element.on("click",t.quantityInput,(()=>this.updateCart())),(elementorFrontend.isEditMode()||elementorFrontend.isWPPreviewMode())&&elementorFrontend.elements.$body.on("wc_fragments_loaded wc_fragments_refreshed",(()=>{this.modifyWpHttpReferer(),this.disableActions()}))}onInit(...t){super.onInit(...t),this.toggleStickyRightColumn(),this.hideHiddenInputsParentElements(),elementorFrontend.isEditMode()&&this.elements.$shippingForm.show(),this.applyButtonsHoverAnimation(),(elementorFrontend.isEditMode()||elementorFrontend.isWPPreviewMode())&&(this.modifyWpHttpReferer(),this.disableActions())}disableActions(){const t=this.getSettings("selectors");this.$element.find(t.updateCartButton).attr({disabled:"disabled","aria-disabled":"true"}),elementorFrontend.isEditMode()&&(this.$element.find(t.quantityInput).attr("disabled","disabled"),this.$element.find(t.productRemove).css("pointer-events","none"))}onElementChange(t){"sticky_right_column"===t&&this.toggleStickyRightColumn()}onDestroy(...t){super.onDestroy(...t),this.deactivateStickyRightColumn()}updateCart(){const t=this.getSettings("selectors");clearTimeout(this._debounce),this._debounce=setTimeout((()=>{this.$element.find(t.updateCartButton).trigger("click")}),600)}applyButtonsHoverAnimation(){const t=this.getElementSettings();t.checkout_button_hover_animation&&jQuery(".checkout-button").addClass("elementor-animation-"+t.checkout_button_hover_animation),t.forms_buttons_hover_animation&&jQuery(".shop_table .button").addClass("elementor-animation-"+t.forms_buttons_hover_animation)}hideHiddenInputsParentElements(){this.isEdit&&this.elements.$hiddenInput&&this.elements.$hiddenInput.parent(".form-row").addClass("elementor-hidden")}modifyWpHttpReferer(){const t=this.getSettings("selectors");elementorFrontend.isEditMode()&&this.$element.find(t.wpHttpRefererInputs).attr("value",elementor.documents.getCurrent().config.urls.wp_preview)}}e.default=Cart}}]);assets/js/qunit-tests.js000064400000005473150755004310011331 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
/******/ (() => { // webpackBootstrap
/******/ 	"use strict";
/******/ 	var __webpack_modules__ = ({

/***/ "../tests/qunit/editor/editor.js":
/*!***************************************!*\
  !*** ../tests/qunit/editor/editor.js ***!
  \***************************************/
/***/ (() => {

/**
 * This file load elementor core in order to run 'editor' tests, since the 'pro' does not include the editor it self.
 * for enabling the feature use '--development-tests' in command arguments ( at building command ).
 * dependencies/how to run:
 * core node_modules ( npm install ).
 * core compiled scripts ( grunt watch_scripts ).
 * pro compiled scripts with '--development-tests' ( grunt watch_scripts --development-tests )
 * pro: grunt karma:unit.
 */
// #if true === process.argv.includes( '--development-tests' )
// import EditorBootstrapCore from 'elementor/tests/qunit/editor/bootstrap';
// import editorConfig from '../mock/config/editor.json';
// 
// import tests from '../tests/';
// 
// export class EditorBootstrapPro extends EditorBootstrapCore {
// 	initialize() {
// 		window.elementorProEditorConfig = editorConfig;
// 
// 		// Load elementor-pro.
// 		require( 'editor/editor' );
// 
// 		super.initialize();
// 	}
// 
// 	runTests() {
// 		return tests();
// 	}
// }
// // #else
// export class NullClass {}
// #endif


/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
(() => {
/*!******************************!*\
  !*** ../tests/qunit/main.js ***!
  \******************************/


var _editor = __webpack_require__(/*! ./editor/editor */ "../tests/qunit/editor/editor.js");

new _editor.EditorBootstrapPro();
})();

/******/ })()
;
//# sourceMappingURL=qunit-tests.js.mapassets/js/app.min.js000064400000400023150755004310010361 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(()=>{var e={60925:()=>{},79298:()=>{},66198:()=>{},96465:()=>{},26748:()=>{},13461:()=>{},62918:()=>{},36909:()=>{},75453:(e,t,n)=>{e.exports=n(7421)},59396:(e,t,n)=>{e.exports=n(70157)},32009:(e,t,n)=>{e.exports=n(89710)},15149:(e,t,n)=>{e.exports=n(66458)},38401:(e,t,n)=>{e.exports=n(14710)},92937:(e,t,n)=>{e.exports=n(23022)},67394:(e,t,n)=>{e.exports=n(43153)},23587:(e,t,n)=>{e.exports=n(32622)},63774:(e,t,n)=>{e.exports=n(27410)},95315:(e,t,n)=>{e.exports=n(19035)},82055:(e,t,n)=>{e.exports=n(58535)},83452:(e,t,n)=>{e.exports=n(97220)},28274:(e,t,n)=>{e.exports=n(65135)},35657:(e,t,n)=>{e.exports=n(69591)},14176:(e,t,n)=>{e.exports=n(34345)},73220:(e,t,n)=>{e.exports=n(76483)},75499:(e,t,n)=>{e.exports=n(43094)},41281:(e,t,n)=>{e.exports=n(19103)},50093:(e,t,n)=>{e.exports=n(39871)},93168:(e,t,n)=>{e.exports=n(89999)},72292:e=>{e.exports=function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r},e.exports.default=e.exports,e.exports.__esModule=!0},86870:(e,t,n)=>{var r=n(59396);e.exports=function _arrayWithHoles(e){if(r(e))return e},e.exports.default=e.exports,e.exports.__esModule=!0},35693:(e,t,n)=>{var r=n(59396),o=n(72292);e.exports=function _arrayWithoutHoles(e){if(r(e))return o(e)},e.exports.default=e.exports,e.exports.__esModule=!0},38852:e=>{e.exports=function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.default=e.exports,e.exports.__esModule=!0},11959:e=>{e.exports=function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.default=e.exports,e.exports.__esModule=!0},39041:(e,t,n)=>{var r=n(67394);function _defineProperties(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),r(e,o.key,o)}}e.exports=function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e},e.exports.default=e.exports,e.exports.__esModule=!0},68537:(e,t,n)=>{var r=n(75499),o=n(44263),i=n(898),a=n(59771);e.exports=function _createSuper(e){var t=i();return function _createSuperInternal(){var n,i=o(e);if(t){var u=o(this).constructor;n=r(i,arguments,u)}else n=i.apply(this,arguments);return a(this,n)}},e.exports.default=e.exports,e.exports.__esModule=!0},18042:(e,t,n)=>{var r=n(67394);e.exports=function _defineProperty(e,t,n){return t in e?r(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},e.exports.default=e.exports,e.exports.__esModule=!0},37959:(e,t,n)=>{var r=n(15149);function _extends(){return e.exports=_extends=r||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},e.exports.default=e.exports,e.exports.__esModule=!0,_extends.apply(this,arguments)}e.exports=_extends,e.exports.default=e.exports,e.exports.__esModule=!0},44263:(e,t,n)=>{var r=n(28274),o=n(82055);function _getPrototypeOf(t){return e.exports=_getPrototypeOf=r?o:function _getPrototypeOf(e){return e.__proto__||o(e)},e.exports.default=e.exports,e.exports.__esModule=!0,_getPrototypeOf(t)}e.exports=_getPrototypeOf,e.exports.default=e.exports,e.exports.__esModule=!0},77371:(e,t,n)=>{var r=n(38401),o=n(76870);e.exports=function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=r(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&o(e,t)},e.exports.default=e.exports,e.exports.__esModule=!0},67971:e=>{e.exports=function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}},e.exports.default=e.exports,e.exports.__esModule=!0},52369:(e,t,n)=>{var r=n(24596).default,o=n(93168),i=n(67394),a=n(23587);function _getRequireWildcardCache(e){if("function"!=typeof o)return null;var t=new o,n=new o;return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?n:t})(e)}e.exports=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var n=_getRequireWildcardCache(t);if(n&&n.has(e))return n.get(e);var o={},u=i&&a;for(var s in e)if("default"!==s&&Object.prototype.hasOwnProperty.call(e,s)){var l=u?a(e,s):null;l&&(l.get||l.set)?i(o,s,l):o[s]=e[s]}return o.default=e,n&&n.set(e,o),o},e.exports.default=e.exports,e.exports.__esModule=!0},898:(e,t,n)=>{var r=n(75499);e.exports=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!r)return!1;if(r.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(r(Boolean,[],(function(){}))),!0}catch(e){return!1}},e.exports.default=e.exports,e.exports.__esModule=!0},95915:(e,t,n)=>{var r=n(41281),o=n(50093),i=n(75453);e.exports=function _iterableToArray(e){if(void 0!==r&&null!=e[o]||null!=e["@@iterator"])return i(e)},e.exports.default=e.exports,e.exports.__esModule=!0},79968:(e,t,n)=>{var r=n(41281),o=n(50093);e.exports=function _iterableToArrayLimit(e,t){var n=e&&(void 0!==r&&e[o]||e["@@iterator"]);if(null!=n){var i,a,u=[],s=!0,l=!1;try{for(n=n.call(e);!(s=(i=n.next()).done)&&(u.push(i.value),!t||u.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{s||null==n.return||n.return()}finally{if(l)throw a}}return u}},e.exports.default=e.exports,e.exports.__esModule=!0},39198:e=>{e.exports=function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},84360:e=>{e.exports=function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.default=e.exports,e.exports.__esModule=!0},84899:(e,t,n)=>{var r=n(83452),o=n(95315),i=n(23587),a=n(63774),u=n(92937),s=n(67394),l=n(18042);function ownKeys(e,t){var n=r(e);if(o){var a=o(e);t&&(a=a.filter((function(t){return i(e,t).enumerable}))),n.push.apply(n,a)}return n}e.exports=function _objectSpread2(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(n),!0).forEach((function(t){l(e,t,n[t])})):a?u(e,a(n)):ownKeys(Object(n)).forEach((function(t){s(e,t,i(n,t))}))}return e},e.exports.default=e.exports,e.exports.__esModule=!0},59771:(e,t,n)=>{var r=n(24596).default,o=n(38852);e.exports=function _possibleConstructorReturn(e,t){return!t||"object"!==r(t)&&"function"!=typeof t?o(e):t},e.exports.default=e.exports,e.exports.__esModule=!0},76870:(e,t,n)=>{var r=n(28274);function _setPrototypeOf(t,n){return e.exports=_setPrototypeOf=r||function _setPrototypeOf(e,t){return e.__proto__=t,e},e.exports.default=e.exports,e.exports.__esModule=!0,_setPrototypeOf(t,n)}e.exports=_setPrototypeOf,e.exports.default=e.exports,e.exports.__esModule=!0},47834:(e,t,n)=>{var r=n(86870),o=n(79968),i=n(24594),a=n(39198);e.exports=function _slicedToArray(e,t){return r(e)||o(e,t)||i(e,t)||a()},e.exports.default=e.exports,e.exports.__esModule=!0},74846:(e,t,n)=>{var r=n(35693),o=n(95915),i=n(24594),a=n(84360);e.exports=function _toConsumableArray(e){return r(e)||o(e)||i(e)||a()},e.exports.default=e.exports,e.exports.__esModule=!0},24596:(e,t,n)=>{var r=n(41281),o=n(50093);function _typeof(t){return"function"==typeof r&&"symbol"==typeof o?(e.exports=_typeof=function _typeof(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=_typeof=function _typeof(e){return e&&"function"==typeof r&&e.constructor===r&&e!==r.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),_typeof(t)}e.exports=_typeof,e.exports.default=e.exports,e.exports.__esModule=!0},24594:(e,t,n)=>{var r=n(75453),o=n(72292);e.exports=function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?r(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}},e.exports.default=e.exports,e.exports.__esModule=!0},50927:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Link:()=>V,Location:()=>A,LocationProvider:()=>j,Match:()=>X,Redirect:()=>Q,Router:()=>B,ServerLocation:()=>N,createHistory:()=>E,createMemorySource:()=>T,globalHistory:()=>P,isRedirect:()=>K,matchPath:()=>f,navigate:()=>O,redirectTo:()=>J,useLocation:()=>Z,useMatch:()=>ne,useNavigate:()=>ee,useParams:()=>te});var r=n(63804),o=n.n(r),i=(n(23615),n(3996)),a=n.n(i),u=n(68189),s=n.n(u);function componentWillMount(){var e=this.constructor.getDerivedStateFromProps(this.props,this.state);null!=e&&this.setState(e)}function componentWillReceiveProps(e){this.setState(function updater(t){var n=this.constructor.getDerivedStateFromProps(e,t);return null!=n?n:null}.bind(this))}function componentWillUpdate(e,t){try{var n=this.props,r=this.state;this.props=e,this.state=t,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(n,r)}finally{this.props=n,this.state=r}}componentWillMount.__suppressDeprecationWarning=!0,componentWillReceiveProps.__suppressDeprecationWarning=!0,componentWillUpdate.__suppressDeprecationWarning=!0;var l=function startsWith(e,t){return e.substr(0,t.length)===t},c=function pick(e,t){for(var n=void 0,r=void 0,o=t.split("?")[0],i=_(o),u=""===i[0],s=g(e),l=0,c=s.length;l<c;l++){var f=!1,p=s[l].route;if(p.default)r={route:p,params:{},uri:t};else{for(var d=_(p.path),m={},y=Math.max(i.length,d.length),b=0;b<y;b++){var C=d[b],S=i[b];if(h(C)){m[C.slice(1)||"*"]=i.slice(b).map(decodeURIComponent).join("/");break}if(void 0===S){f=!0;break}var E=v.exec(C);if(E&&!u){-1===x.indexOf(E[1])||a()(!1);var T=decodeURIComponent(S);m[E[1]]=T}else if(C!==S){f=!0;break}}if(!f){n={route:p,params:m,uri:"/"+i.slice(0,b).join("/")};break}}}return n||r||null},f=function match(e,t){return c([{path:e}],t)},p=function resolve(e,t){if(l(e,"/"))return e;var n=e.split("?"),r=n[0],o=n[1],i=t.split("?")[0],a=_(r),u=_(i);if(""===a[0])return b(i,o);if(!l(a[0],".")){var s=u.concat(a).join("/");return b(("/"===i?"":"/")+s,o)}for(var c=u.concat(a),f=[],p=0,d=c.length;p<d;p++){var v=c[p];".."===v?f.pop():"."!==v&&f.push(v)}return b("/"+f.join("/"),o)},d=function insertParams(e,t){var n=e.split("?"),r=n[0],o=n[1],i=void 0===o?"":o,a="/"+_(r).map((function(e){var n=v.exec(e);return n?t[n[1]]:e})).join("/"),u=t.location,s=(u=void 0===u?{}:u).search,l=(void 0===s?"":s).split("?")[1]||"";return a=b(a,i,l)},v=/^:(.+)/,m=function isDynamic(e){return v.test(e)},h=function isSplat(e){return e&&"*"===e[0]},y=function rankRoute(e,t){return{route:e,score:e.default?0:_(e.path).reduce((function(e,t){return e+=4,!function isRootSegment(e){return""===e}(t)?m(t)?e+=2:h(t)?e-=5:e+=3:e+=1,e}),0),index:t}},g=function rankRoutes(e){return e.map(y).sort((function(e,t){return e.score<t.score?1:e.score>t.score?-1:e.index-t.index}))},_=function segmentize(e){return e.replace(/(^\/+|\/+$)/g,"").split("/")},b=function addQuery(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return e+((n=n.filter((function(e){return e&&e.length>0})))&&n.length>0?"?"+n.join("&"):"")},x=["uri","path"],C=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},S=function getLocation(e){var t=e.location,n=t.search,r=t.hash,o=t.href,i=t.origin,a=t.protocol,u=t.host,s=t.hostname,l=t.port,c=e.location.pathname;!c&&o&&w&&(c=new URL(o).pathname);return{pathname:encodeURI(decodeURI(c)),search:n,hash:r,href:o,origin:i,protocol:a,host:u,hostname:s,port:l,state:e.history.state,key:e.history.state&&e.history.state.key||"initial"}},E=function createHistory(e,t){var n=[],r=S(e),o=!1,i=function resolveTransition(){};return{get location(){return r},get transitioning(){return o},_onTransitionComplete:function _onTransitionComplete(){o=!1,i()},listen:function listen(t){n.push(t);var o=function popstateListener(){r=S(e),t({location:r,action:"POP"})};return e.addEventListener("popstate",o),function(){e.removeEventListener("popstate",o),n=n.filter((function(e){return e!==t}))}},navigate:function navigate(t){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},u=a.state,s=a.replace,l=void 0!==s&&s;if("number"==typeof t)e.history.go(t);else{u=C({},u,{key:Date.now()+""});try{o||l?e.history.replaceState(u,null,t):e.history.pushState(u,null,t)}catch(n){e.location[l?"replace":"assign"](t)}}r=S(e),o=!0;var c=new Promise((function(e){return i=e}));return n.forEach((function(e){return e({location:r,action:"PUSH"})})),c}}},T=function createMemorySource(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"/",t=e.indexOf("?"),n={pathname:t>-1?e.substr(0,t):e,search:t>-1?e.substr(t):""},r=0,o=[n],i=[null];return{get location(){return o[r]},addEventListener:function addEventListener(e,t){},removeEventListener:function removeEventListener(e,t){},history:{get entries(){return o},get index(){return r},get state(){return i[r]},pushState:function pushState(e,t,n){var a=n.split("?"),u=a[0],s=a[1],l=void 0===s?"":s;r++,o.push({pathname:u,search:l.length?"?"+l:l}),i.push(e)},replaceState:function replaceState(e,t,n){var a=n.split("?"),u=a[0],s=a[1],l=void 0===s?"":s;o[r]={pathname:u,search:l},i[r]=e},go:function go(e){var t=r+e;t<0||t>i.length-1||(r=t)}}}},w=!("undefined"==typeof window||!window.document||!window.document.createElement),P=E(function getSource(){return w?window:T()}()),O=P.navigate,I=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function _objectWithoutProperties(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var R=function createNamedContext(e,t){var n=s()(t);return n.displayName=e,n},M=R("Location"),A=function Location(e){var t=e.children;return o().createElement(M.Consumer,null,(function(e){return e?t(e):o().createElement(j,null,t)}))},j=function(e){function LocationProvider(){var t,n;_classCallCheck(this,LocationProvider);for(var r=arguments.length,o=Array(r),i=0;i<r;i++)o[i]=arguments[i];return t=n=_possibleConstructorReturn(this,e.call.apply(e,[this].concat(o))),n.state={context:n.getContext(),refs:{unlisten:null}},_possibleConstructorReturn(n,t)}return _inherits(LocationProvider,e),LocationProvider.prototype.getContext=function getContext(){var e=this.props.history;return{navigate:e.navigate,location:e.location}},LocationProvider.prototype.componentDidCatch=function componentDidCatch(e,t){if(!K(e))throw e;(0,this.props.history.navigate)(e.uri,{replace:!0})},LocationProvider.prototype.componentDidUpdate=function componentDidUpdate(e,t){t.context.location!==this.state.context.location&&this.props.history._onTransitionComplete()},LocationProvider.prototype.componentDidMount=function componentDidMount(){var e=this,t=this.state.refs,n=this.props.history;n._onTransitionComplete(),t.unlisten=n.listen((function(){Promise.resolve().then((function(){requestAnimationFrame((function(){e.unmounted||e.setState((function(){return{context:e.getContext()}}))}))}))}))},LocationProvider.prototype.componentWillUnmount=function componentWillUnmount(){var e=this.state.refs;this.unmounted=!0,e.unlisten()},LocationProvider.prototype.render=function render(){var e=this.state.context,t=this.props.children;return o().createElement(M.Provider,{value:e},"function"==typeof t?t(e):t||null)},LocationProvider}(o().Component);j.defaultProps={history:P};var N=function ServerLocation(e){var t=e.url,n=e.children,r=t.indexOf("?"),i=void 0,a="";return r>-1?(i=t.substring(0,r),a=t.substring(r)):i=t,o().createElement(M.Provider,{value:{location:{pathname:i,search:a,hash:""},navigate:function navigate(){throw new Error("You can't call navigate on the server.")}}},n)},D=R("Base",{baseuri:"/",basepath:"/"}),B=function Router(e){return o().createElement(D.Consumer,null,(function(t){return o().createElement(A,null,(function(n){return o().createElement(L,I({},t,n,e))}))}))},L=function(e){function RouterImpl(){return _classCallCheck(this,RouterImpl),_possibleConstructorReturn(this,e.apply(this,arguments))}return _inherits(RouterImpl,e),RouterImpl.prototype.render=function render(){var e=this.props,t=e.location,n=e.navigate,r=e.basepath,i=e.primary,a=e.children,u=(e.baseuri,e.component),s=void 0===u?"div":u,l=_objectWithoutProperties(e,["location","navigate","basepath","primary","children","baseuri","component"]),f=o().Children.toArray(a).reduce((function(e,t){var n=oe(r)(t);return e.concat(n)}),[]),d=t.pathname,v=c(f,d);if(v){var m=v.params,h=v.uri,y=v.route,g=v.route.value;r=y.default?r:y.path.replace(/\*$/,"");var _=I({},m,{uri:h,location:t,navigate:function navigate(e,t){return n(p(e,h),t)}}),b=o().cloneElement(g,_,g.props.children?o().createElement(B,{location:t,primary:i},g.props.children):void 0),x=i?q:s,C=i?I({uri:h,location:t,component:s},l):l;return o().createElement(D.Provider,{value:{baseuri:h,basepath:r}},o().createElement(x,C,b))}return null},RouterImpl}(o().PureComponent);L.defaultProps={primary:!0};var U=R("Focus"),q=function FocusHandler(e){var t=e.uri,n=e.location,r=e.component,i=_objectWithoutProperties(e,["uri","location","component"]);return o().createElement(U.Consumer,null,(function(e){return o().createElement(G,I({},i,{component:r,requestFocus:e,uri:t,location:n}))}))},W=!0,H=0,G=function(e){function FocusHandlerImpl(){var t,n;_classCallCheck(this,FocusHandlerImpl);for(var r=arguments.length,o=Array(r),i=0;i<r;i++)o[i]=arguments[i];return t=n=_possibleConstructorReturn(this,e.call.apply(e,[this].concat(o))),n.state={},n.requestFocus=function(e){!n.state.shouldFocus&&e&&e.focus()},_possibleConstructorReturn(n,t)}return _inherits(FocusHandlerImpl,e),FocusHandlerImpl.getDerivedStateFromProps=function getDerivedStateFromProps(e,t){if(null==t.uri)return I({shouldFocus:!0},e);var n=e.uri!==t.uri,r=t.location.pathname!==e.location.pathname&&e.location.pathname===e.uri;return I({shouldFocus:n||r},e)},FocusHandlerImpl.prototype.componentDidMount=function componentDidMount(){H++,this.focus()},FocusHandlerImpl.prototype.componentWillUnmount=function componentWillUnmount(){0===--H&&(W=!0)},FocusHandlerImpl.prototype.componentDidUpdate=function componentDidUpdate(e,t){e.location!==this.props.location&&this.state.shouldFocus&&this.focus()},FocusHandlerImpl.prototype.focus=function focus(){var e=this.props.requestFocus;e?e(this.node):W?W=!1:this.node&&(this.node.contains(document.activeElement)||this.node.focus())},FocusHandlerImpl.prototype.render=function render(){var e=this,t=this.props,n=(t.children,t.style),r=(t.requestFocus,t.component),i=void 0===r?"div":r,a=(t.uri,t.location,_objectWithoutProperties(t,["children","style","requestFocus","component","uri","location"]));return o().createElement(i,I({style:I({outline:"none"},n),tabIndex:"-1",ref:function ref(t){return e.node=t}},a),o().createElement(U.Provider,{value:this.requestFocus},this.props.children))},FocusHandlerImpl}(o().Component);!function polyfill(e){var t=e.prototype;if(!t||!t.isReactComponent)throw new Error("Can only polyfill class components");if("function"!=typeof e.getDerivedStateFromProps&&"function"!=typeof t.getSnapshotBeforeUpdate)return e;var n=null,r=null,o=null;if("function"==typeof t.componentWillMount?n="componentWillMount":"function"==typeof t.UNSAFE_componentWillMount&&(n="UNSAFE_componentWillMount"),"function"==typeof t.componentWillReceiveProps?r="componentWillReceiveProps":"function"==typeof t.UNSAFE_componentWillReceiveProps&&(r="UNSAFE_componentWillReceiveProps"),"function"==typeof t.componentWillUpdate?o="componentWillUpdate":"function"==typeof t.UNSAFE_componentWillUpdate&&(o="UNSAFE_componentWillUpdate"),null!==n||null!==r||null!==o){var i=e.displayName||e.name,a="function"==typeof e.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()";throw Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+i+" uses "+a+" but also contains the following legacy lifecycles:"+(null!==n?"\n  "+n:"")+(null!==r?"\n  "+r:"")+(null!==o?"\n  "+o:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks")}if("function"==typeof e.getDerivedStateFromProps&&(t.componentWillMount=componentWillMount,t.componentWillReceiveProps=componentWillReceiveProps),"function"==typeof t.getSnapshotBeforeUpdate){if("function"!=typeof t.componentDidUpdate)throw new Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");t.componentWillUpdate=componentWillUpdate;var u=t.componentDidUpdate;t.componentDidUpdate=function componentDidUpdatePolyfill(e,t,n){var r=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:n;u.call(this,e,t,r)}}return e}(G);var $=function k(){},z=o().forwardRef;void 0===z&&(z=function forwardRef(e){return e});var V=z((function(e,t){var n=e.innerRef,r=_objectWithoutProperties(e,["innerRef"]);return o().createElement(D.Consumer,null,(function(e){e.basepath;var i=e.baseuri;return o().createElement(A,null,(function(e){var a=e.location,u=e.navigate,s=r.to,c=r.state,f=r.replace,d=r.getProps,v=void 0===d?$:d,m=_objectWithoutProperties(r,["to","state","replace","getProps"]),h=p(s,i),y=encodeURI(h),g=a.pathname===y,_=l(a.pathname,y);return o().createElement("a",I({ref:t||n,"aria-current":g?"page":void 0},m,v({isCurrent:g,isPartiallyCurrent:_,href:h,location:a}),{href:h,onClick:function onClick(e){if(m.onClick&&m.onClick(e),ie(e)){e.preventDefault();var t=f;if("boolean"!=typeof f&&g){var n=I({},a.state),r=(n.key,_objectWithoutProperties(n,["key"]));t=function shallowCompare(e,t){var n=Object.keys(e);return n.length===Object.keys(t).length&&n.every((function(n){return t.hasOwnProperty(n)&&e[n]===t[n]}))}(I({},c),r)}u(h,{state:c,replace:t})}}}))}))}))}));function RedirectRequest(e){this.uri=e}V.displayName="Link";var K=function isRedirect(e){return e instanceof RedirectRequest},J=function redirectTo(e){throw new RedirectRequest(e)},Y=function(e){function RedirectImpl(){return _classCallCheck(this,RedirectImpl),_possibleConstructorReturn(this,e.apply(this,arguments))}return _inherits(RedirectImpl,e),RedirectImpl.prototype.componentDidMount=function componentDidMount(){var e=this.props,t=e.navigate,n=e.to,r=(e.from,e.replace),o=void 0===r||r,i=e.state,a=(e.noThrow,e.baseuri),u=_objectWithoutProperties(e,["navigate","to","from","replace","state","noThrow","baseuri"]);Promise.resolve().then((function(){var e=p(n,a);t(d(e,u),{replace:o,state:i})}))},RedirectImpl.prototype.render=function render(){var e=this.props,t=(e.navigate,e.to),n=(e.from,e.replace,e.state,e.noThrow),r=e.baseuri,o=_objectWithoutProperties(e,["navigate","to","from","replace","state","noThrow","baseuri"]),i=p(t,r);return n||J(d(i,o)),null},RedirectImpl}(o().Component),Q=function Redirect(e){return o().createElement(D.Consumer,null,(function(t){var n=t.baseuri;return o().createElement(A,null,(function(t){return o().createElement(Y,I({},t,{baseuri:n},e))}))}))},X=function Match(e){var t=e.path,n=e.children;return o().createElement(D.Consumer,null,(function(e){var r=e.baseuri;return o().createElement(A,null,(function(e){var o=e.navigate,i=e.location,a=p(t,r),u=f(a,i.pathname);return n({navigate:o,location:i,match:u?I({},u.params,{uri:u.uri,path:t}):null})}))}))},Z=function useLocation(){var e=(0,r.useContext)(M);if(!e)throw new Error("useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");return e.location},ee=function useNavigate(){var e=(0,r.useContext)(M);if(!e)throw new Error("useNavigate hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");return e.navigate},te=function useParams(){var e=(0,r.useContext)(D);if(!e)throw new Error("useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");var t=Z(),n=f(e.basepath,t.pathname);return n?n.params:null},ne=function useMatch(e){if(!e)throw new Error("useMatch(path: string) requires an argument of a string to match against");var t=(0,r.useContext)(D);if(!t)throw new Error("useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router");var n=Z(),o=p(e,t.baseuri),i=f(o,n.pathname);return i?I({},i.params,{uri:i.uri,path:e}):null},re=function stripSlashes(e){return e.replace(/(^\/+|\/+$)/g,"")},oe=function createRoute(e){return function(t){if(!t)return null;if(t.type===o().Fragment&&t.props.children)return o().Children.map(t.props.children,createRoute(e));if(t.props.path||t.props.default||t.type===Q||a()(!1),t.type!==Q||t.props.from&&t.props.to||a()(!1),t.type!==Q||function validateRedirect(e,t){var n=function filter(e){return m(e)};return _(e).filter(n).sort().join("/")===_(t).filter(n).sort().join("/")}(t.props.from,t.props.to)||a()(!1),t.props.default)return{value:t,default:!0};var n=t.type===Q?t.props.from:t.props.path,r="/"===n?e:re(e)+"/"+re(n);return{value:t,default:t.props.default,path:t.props.children?re(r)+"/*":r}}},ie=function shouldNavigate(e){return!e.defaultPrevented&&0===e.button&&!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}},88395:(e,t,n)=>{"use strict";var r=n(23615),o=n(67394),i=n(67971);o(t,"__esModule",{value:!0}),t.Indicator=void 0;var a=i(n(63804));n(60925);var u=function Indicator(e){var t="eps-indicator-bullet";return e.active&&(t+=" ".concat(t,"--active")),a.default.createElement("i",{className:t})};t.Indicator=u,u.propTypes={active:r.bool}},99092:(e,t,n)=>{"use strict";var r=n(23615),o=n(67394),i=n(67971);o(t,"__esModule",{value:!0}),t.default=PreviewIFrame;var a=i(n(63804)),u=i(n(47834));function PreviewIFrame(e){var t=a.default.useRef(null),n=a.default.useState(1),r=(0,u.default)(n,2),o=r[0],i=r[1],s=a.default.useState(0),l=(0,u.default)(s,2),c=l[0],f=l[1];return a.default.useEffect((function(){var e=t.current.clientWidth/1200;i(e),f(t.current.clientHeight/e)}),[]),a.default.createElement("div",{ref:t,className:"site-editor__preview-iframe site-editor__preview-iframe--".concat(e.templateType)},a.default.createElement("iframe",{src:e.src,className:"site-editor__preview-iframe__iframe",style:{transform:"scale(".concat(o,")"),height:c,width:1200}}))}n(79298),PreviewIFrame.propTypes={src:r.string.isRequired,templateType:r.string.isRequired}},55246:(e,t,n)=>{"use strict";var r=n(63804),o=n(67394),i=n(67971);o(t,"__esModule",{value:!0}),t.default=t.BaseContext=void 0;var a=i(n(73220)),u=i(n(84899)),s=i(n(11959)),l=i(n(39041)),c=i(n(38852)),f=i(n(77371)),p=i(n(68537)),d=function(e){(0,f.default)(BaseContext,e);var t=(0,p.default)(BaseContext);function BaseContext(e){var n;return(0,s.default)(this,BaseContext),(n=t.call(this,e)).state={action:{current:null,loading:!1,error:null,errorMeta:{}},updateActionState:n.updateActionState.bind((0,c.default)(n)),resetActionState:n.resetActionState.bind((0,c.default)(n))},n}return(0,l.default)(BaseContext,[{key:"executeAction",value:function executeAction(e,t){var n=this;return this.updateActionState({current:e,loading:!0,error:null,errorMeta:{}}),t().then((function(e){return n.resetActionState(),a.default.resolve(e)})).catch((function(t){return n.updateActionState({current:e,loading:!1,error:t.message,errorMeta:t}),a.default.reject(t)}))}},{key:"updateActionState",value:function updateActionState(e){return this.setState((function(t){return{action:(0,u.default)((0,u.default)({},t.action),e)}}))}},{key:"resetActionState",value:function resetActionState(){this.updateActionState({current:null,loading:!1,error:null,errorMeta:{}})}}]),BaseContext}(r.Component);t.BaseContext=d;var v=d;t.default=v},78221:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(t,"__esModule",{value:!0}),t.default=t.ConditionsProvider=t.Context=void 0;var u=a(n(63804)),s=a(n(35657)),l=a(n(83452)),c=a(n(73220));n(90286),n(76139),n(44321),n(99745),n(10195),n(71954);var f=a(n(84899)),p=a(n(11959)),d=a(n(39041)),v=a(n(38852)),m=a(n(77371)),h=a(n(68537)),y=a(n(18042)),g=a(n(79537)),b=a(n(3145)),x=a(n(55246)),C=n(2410),S=u.default.createContext();t.Context=S;var E=function(e){(0,m.default)(ConditionsProvider,e);var t=(0,h.default)(ConditionsProvider);function ConditionsProvider(e){var n;return(0,p.default)(this,ConditionsProvider),n=t.call(this,e),(0,y.default)((0,v.default)(n),"conditionsConfig",null),n.state=(0,f.default)((0,f.default)({},n.state),{},{conditions:{},updateConditionItemState:n.updateConditionItemState.bind((0,v.default)(n)),removeConditionItemInState:n.removeConditionItemInState.bind((0,v.default)(n)),createConditionItemInState:n.createConditionItemInState.bind((0,v.default)(n)),findConditionItemInState:n.findConditionItemInState.bind((0,v.default)(n)),saveConditions:n.saveConditions.bind((0,v.default)(n))}),n}return(0,d.default)(ConditionsProvider,[{key:"componentDidMount",value:function componentDidMount(){var e=this;this.executeAction(ConditionsProvider.actions.FETCH_CONFIG,(function(){return b.default.create()})).then((function(t){return e.conditionsConfig=t})).then(this.normalizeConditionsState.bind(this)).then(this.setSubIdTitles.bind(this))}},{key:"saveConditions",value:function saveConditions(){var e=this,t=(0,s.default)(this.state.conditions).map((function(e){return e.forDb()}));return this.executeAction(ConditionsProvider.actions.SAVE,(function(){return $e.data.update(C.TemplatesConditions.signature,{conditions:t},{id:e.props.currentTemplate.id})})).then((function(){var t=(0,s.default)(e.state.conditions).map((function(e){return e.forContext()}));e.props.onConditionsSaved(e.props.currentTemplate.id,{conditions:t,instances:e.conditionsConfig.calculateInstances((0,s.default)(e.state.conditions)),isActive:!(!(0,l.default)(e.state.conditions).length||"publish"!==e.props.currentTemplate.status)})}))}},{key:"checkConflicts",value:function checkConflicts(e){var t=this;return this.executeAction(ConditionsProvider.actions.CHECK_CONFLICTS,(function(){return $e.data.get(C.TemplatesConditionsConflicts.signature,{post_id:t.props.currentTemplate.id,condition:e.clone().toString()})})).then((function(n){return t.updateConditionItemState(e.id,{conflictErrors:(0,s.default)(n.data)},!1)}))}},{key:"fetchSubIdsTitles",value:function fetchSubIdsTitles(e){return new c.default((function(t){return elementorCommon.ajax.loadObjects({action:"query_control_value_titles",ids:_.isArray(e.subId)?e.subId:[e.subId],data:{get_titles:e.subIdAutocomplete,unique_id:elementorCommon.helpers.getUniqueId()},success:function success(e){t(e)}})}))}},{key:"normalizeConditionsState",value:function normalizeConditionsState(){var e=this;this.updateConditionsState((function(){return e.props.currentTemplate.conditions.reduce((function(t,n){var r=new g.default((0,f.default)((0,f.default)({},n),{},{default:e.props.currentTemplate.defaultCondition,options:e.conditionsConfig.getOptions(),subOptions:e.conditionsConfig.getSubOptions(n.name),subIdAutocomplete:e.conditionsConfig.getSubIdAutocomplete(n.sub),supIdOptions:n.subId?[{value:n.subId,label:n.subId}]:[]}));return(0,f.default)((0,f.default)({},t),{},(0,y.default)({},r.id,r))}),{})})).then((function(){(0,s.default)(e.state.conditions).forEach((function(t){return e.checkConflicts(t)}))}))}},{key:"setSubIdTitles",value:function setSubIdTitles(){var e=this;return(0,s.default)(this.state.conditions).forEach((function(t){if(t.subId)return e.fetchSubIdsTitles(t).then((function(n){return e.updateConditionItemState(t.id,{subIdOptions:[{label:(0,s.default)(n)[0],value:t.subId}]},!1)}))}))}},{key:"updateConditionItemState",value:function updateConditionItemState(e,t){var n=this,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];t.name&&(t.subOptions=this.conditionsConfig.getSubOptions(t.name)),(t.sub||t.name)&&(t.subIdAutocomplete=this.conditionsConfig.getSubIdAutocomplete(t.sub),t.subIdOptions=[]),this.updateConditionsState((function(n){var r=n[e];return(0,f.default)((0,f.default)({},n),{},(0,y.default)({},e,r.clone().set(t)))})).then((function(){r&&n.checkConflicts(n.findConditionItemInState(e))}))}},{key:"removeConditionItemInState",value:function removeConditionItemInState(e){this.updateConditionsState((function(t){var n=(0,f.default)({},t);return delete n[e],n}))}},{key:"createConditionItemInState",value:function createConditionItemInState(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],n=this.props.currentTemplate.defaultCondition,r=new g.default({name:n,default:n,options:this.conditionsConfig.getOptions(),subOptions:this.conditionsConfig.getSubOptions(n),subIdAutocomplete:this.conditionsConfig.getSubIdAutocomplete("")});this.updateConditionsState((function(e){return(0,f.default)((0,f.default)({},e),{},(0,y.default)({},r.id,r))})).then((function(){t&&e.checkConflicts(r)}))}},{key:"findConditionItemInState",value:function findConditionItemInState(e){return(0,s.default)(this.state.conditions).find((function(t){return t.id===e}))}},{key:"updateConditionsState",value:function updateConditionsState(e){var t=this;return new c.default((function(n){return t.setState((function(t){return{conditions:e(t.conditions)}}),n)}))}},{key:"render",value:function render(){if(this.state.action.current===ConditionsProvider.actions.FETCH_CONFIG){if(this.state.error)return u.default.createElement("h3",null,r("Error:","elementor-pro")," ",this.state.error);if(this.state.loading)return u.default.createElement("h3",null,r("Loading","elementor-pro"),"...")}return u.default.createElement(S.Provider,{value:this.state},this.props.children)}}]),ConditionsProvider}(x.default);t.ConditionsProvider=E,(0,y.default)(E,"propTypes",{children:o.any.isRequired,currentTemplate:o.object.isRequired,onConditionsSaved:o.func.isRequired,validateConflicts:o.bool}),(0,y.default)(E,"defaultProps",{validateConflicts:!0}),(0,y.default)(E,"actions",{FETCH_CONFIG:"fetch-config",SAVE:"save",CHECK_CONFLICTS:"check-conflicts"});var T=E;t.default=T},79537:(e,t,n)=>{"use strict";var r=n(67394),o=n(67971);r(t,"__esModule",{value:!0}),t.default=void 0,n(64434),n(3777),n(38081),n(99745),n(10195);var i=o(n(15149)),a=o(n(59396)),u=o(n(83452)),s=o(n(32009)),l=o(n(11959)),c=o(n(39041)),f=o(n(18042)),p=function(){function Condition(e){(0,l.default)(this,Condition),(0,f.default)(this,"id",elementorCommon.helpers.getUniqueId()),(0,f.default)(this,"default",""),(0,f.default)(this,"type","include"),(0,f.default)(this,"name",""),(0,f.default)(this,"sub",""),(0,f.default)(this,"subId",""),(0,f.default)(this,"options",[]),(0,f.default)(this,"subOptions",[]),(0,f.default)(this,"subIdAutocomplete",[]),(0,f.default)(this,"subIdOptions",[]),(0,f.default)(this,"conflictErrors",[]),this.set(e)}return(0,c.default)(Condition,[{key:"set",value:function set(e){return(0,i.default)(this,e),this}},{key:"clone",value:function clone(){return(0,i.default)(new Condition,this)}},{key:"remove",value:function remove(e){var t=this;return(0,a.default)(e)||(e=[e]),e.forEach((function(e){delete t[e]})),this}},{key:"only",value:function only(e){(0,a.default)(e)||(e=[e]);var t=(0,u.default)(this).filter((function(t){return!e.includes(t)}));return this.remove(t),this}},{key:"toJson",value:function toJson(){return(0,s.default)(this)}},{key:"toString",value:function toString(){return this.forDb().filter((function(e){return e})).join("/")}},{key:"forDb",value:function forDb(){return[this.type,this.name,this.sub,this.subId]}},{key:"forContext",value:function forContext(){return{type:this.type,name:this.name,sub:this.sub,subId:this.subId}}}]),Condition}();t.default=p},3145:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(67394),i=n(67971);o(t,"__esModule",{value:!0}),t.default=t.ConditionsConfig=void 0;var a=i(n(35657)),u=i(n(83452)),s=i(n(73220));n(90286),n(10195),n(99745);var l=i(n(84899)),c=i(n(24596)),f=i(n(74846)),p=i(n(11959)),d=i(n(39041)),v=i(n(18042)),m=n(2410),h=function(){function ConditionsConfig(e){(0,p.default)(this,ConditionsConfig),(0,v.default)(this,"config",null),this.config=e}return(0,d.default)(ConditionsConfig,[{key:"getOptions",value:function getOptions(){return this.getSubOptions("general",!0).map((function(e){return{label:e.label,value:e.value}}))}},{key:"getSubOptions",value:function getSubOptions(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.config[e];return r?[{label:r.all_label,value:n?e:""}].concat((0,f.default)(r.sub_conditions.map((function(e){var n=t.config[e];return{label:n.label,value:e,children:n.sub_conditions.length?t.getSubOptions(e,!0):null}})))):[]}},{key:"getSubIdAutocomplete",value:function getSubIdAutocomplete(e){var t,n=this.config[e];if(!n||"object"!==(0,c.default)(n.controls))return{};var r=(0,a.default)(n.controls);return null!=r&&null!==(t=r[0])&&void 0!==t&&t.autocomplete?r[0].autocomplete:{}}},{key:"calculateInstances",value:function calculateInstances(e){var t=this,n=e.reduce((function(e,n){if("exclude"===n.type)return e;var r=n.sub||n.name,o=t.config[r];if(!o)return e;var i=n.subId?"".concat(o.label," #").concat(n.subId):o.all_label;return(0,l.default)((0,l.default)({},e),{},(0,v.default)({},r,i))}),{});return 0===(0,u.default)(n).length&&(n=[r("No instances","elementor-pro")]),n}}],[{key:"create",value:function create(){return ConditionsConfig.instance?s.default.resolve(ConditionsConfig.instance):$e.data.get(m.ConditionsConfig.signature).then((function(e){return ConditionsConfig.instance=new ConditionsConfig(e.data),ConditionsConfig.instance}))}}]),ConditionsConfig}();t.ConditionsConfig=h,(0,v.default)(h,"instance",void 0);var y=h;t.default=y},87222:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(t,"__esModule",{value:!0}),t.default=t.TemplatesProvider=t.Context=void 0;var u=a(n(63804)),s=a(n(35657)),l=a(n(84899)),c=a(n(11959)),f=a(n(39041)),p=a(n(38852)),d=a(n(77371)),v=a(n(68537)),m=a(n(18042)),h=a(n(55246)),y=n(2410),g=a(n(88704)),_=u.default.createContext();t.Context=_;var b=function(e){(0,d.default)(TemplatesProvider,e);var t=(0,v.default)(TemplatesProvider);function TemplatesProvider(e){var n;return(0,c.default)(this,TemplatesProvider),(n=t.call(this,e)).state=(0,l.default)((0,l.default)({},n.state),{},{action:(0,l.default)((0,l.default)({},n.state.action),{},{current:TemplatesProvider.actions.FETCH,loading:!0}),templates:{},updateTemplateItemState:n.updateTemplateItemState.bind((0,p.default)(n)),findTemplateItemInState:n.findTemplateItemInState.bind((0,p.default)(n)),fetchTemplates:n.fetchTemplates.bind((0,p.default)(n)),deleteTemplate:n.deleteTemplate.bind((0,p.default)(n)),updateTemplate:n.updateTemplate.bind((0,p.default)(n)),importTemplates:n.importTemplates.bind((0,p.default)(n))}),n}return(0,f.default)(TemplatesProvider,[{key:"componentDidMount",value:function componentDidMount(){this.fetchTemplates()}},{key:"importTemplates",value:function importTemplates(e){var t=this,n=e.fileName,r=e.fileData;return this.executeAction(TemplatesProvider.actions.IMPORT,(function(){return $e.data.create(y.Templates.signature,{fileName:n,fileData:r})})).then((function(e){return t.updateTemplatesState((function(t){return(0,l.default)((0,l.default)({},t),(0,s.default)(e.data).reduce((function(e,t){return t.supportsSiteEditor?(0,l.default)((0,l.default)({},e),{},(0,m.default)({},t.id,t)):e}),{}))})),e}))}},{key:"deleteTemplate",value:function deleteTemplate(e){var t=this;return this.executeAction(TemplatesProvider.actions.DELETE,(function(){return $e.data.delete(y.Templates.signature,{id:e})})).then((function(){t.updateTemplatesState((function(t){var n=(0,l.default)({},t);return delete n[e],n}))}))}},{key:"updateTemplate",value:function updateTemplate(e,t){var n=this;return this.executeAction(TemplatesProvider.actions.UPDATE,(function(){return $e.data.update(y.Templates.signature,t,{id:e})})).then((function(t){n.updateTemplateItemState(e,t.data)}))}},{key:"fetchTemplates",value:function fetchTemplates(){var e=this;return this.executeAction(TemplatesProvider.actions.FETCH,(function(){return $e.data.get(y.Templates.signature)})).then((function(t){e.updateTemplatesState((function(){return(0,s.default)(t.data).reduce((function(e,t){return(0,l.default)((0,l.default)({},e),{},(0,m.default)({},t.id,t))}),{})}),!1)}))}},{key:"updateTemplateItemState",value:function updateTemplateItemState(e,t){return this.updateTemplatesState((function(n){var r=(0,l.default)((0,l.default)({},n[e]),t);return(0,l.default)((0,l.default)({},n),{},(0,m.default)({},e,r))}))}},{key:"updateTemplatesState",value:function updateTemplatesState(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return t&&$e.data.deleteCache($e.components.get(g.default.namespace),y.Templates.signature),this.setState((function(t){return{templates:e(t.templates)}}))}},{key:"findTemplateItemInState",value:function findTemplateItemInState(e){return this.state.templates[e]}},{key:"render",value:function render(){if(this.state.action.current===TemplatesProvider.actions.FETCH){if(this.state.action.error)return u.default.createElement("h3",null,r("Error:","elementor-pro")," ",this.state.action.error);if(this.state.action.loading)return u.default.createElement("h3",null,r("Loading","elementor-pro"),"...")}return u.default.createElement(_.Provider,{value:this.state},this.props.children)}}]),TemplatesProvider}(h.default);t.TemplatesProvider=b,(0,m.default)(b,"propTypes",{children:o.object.isRequired}),(0,m.default)(b,"actions",{FETCH:"fetch",DELETE:"delete",UPDATE:"update",IMPORT:"import"});var x=b;t.default=x},79924:(e,t,n)=>{"use strict";var r=n(67394),o=n(67971);r(t,"__esModule",{value:!0}),t.default=t.ConditionsConfig=void 0;var i=o(n(11959)),a=o(n(39041)),u=o(n(77371)),s=o(n(68537)),l=o(n(18042)),c=function(e){(0,u.default)(ConditionsConfig,e);var t=(0,s.default)(ConditionsConfig);function ConditionsConfig(){return(0,i.default)(this,ConditionsConfig),t.apply(this,arguments)}return(0,a.default)(ConditionsConfig,null,[{key:"getEndpointFormat",value:function getEndpointFormat(){return"site-editor/conditions-config/{id}"}}]),ConditionsConfig}($e.modules.CommandData);t.ConditionsConfig=c,(0,l.default)(c,"signature","site-editor/conditions-config");var f=c;t.default=f},2410:(e,t,n)=>{"use strict";var r=n(67394);r(t,"__esModule",{value:!0}),r(t,"Templates",{enumerable:!0,get:function get(){return o.Templates}}),r(t,"ConditionsConfig",{enumerable:!0,get:function get(){return i.ConditionsConfig}}),r(t,"TemplatesConditions",{enumerable:!0,get:function get(){return a.TemplatesConditions}}),r(t,"TemplatesConditionsConflicts",{enumerable:!0,get:function get(){return u.TemplatesConditionsConflicts}});var o=n(49672),i=n(79924),a=n(19743),u=n(52924)},52924:(e,t,n)=>{"use strict";var r=n(67394),o=n(67971);r(t,"__esModule",{value:!0}),t.default=t.TemplatesConditionsConflicts=void 0;var i=o(n(11959)),a=o(n(39041)),u=o(n(77371)),s=o(n(68537)),l=o(n(18042)),c=function(e){(0,u.default)(TemplatesConditionsConflicts,e);var t=(0,s.default)(TemplatesConditionsConflicts);function TemplatesConditionsConflicts(){return(0,i.default)(this,TemplatesConditionsConflicts),t.apply(this,arguments)}return(0,a.default)(TemplatesConditionsConflicts,null,[{key:"getEndpointFormat",value:function getEndpointFormat(){return"".concat(TemplatesConditionsConflicts.signature,"/{id}")}}]),TemplatesConditionsConflicts}($e.modules.CommandData);t.TemplatesConditionsConflicts=c,(0,l.default)(c,"signature","site-editor/templates-conditions-conflicts");var f=c;t.default=f},19743:(e,t,n)=>{"use strict";var r=n(67394),o=n(67971);r(t,"__esModule",{value:!0}),t.default=t.TemplatesConditions=void 0;var i=o(n(11959)),a=o(n(39041)),u=o(n(77371)),s=o(n(68537)),l=o(n(18042)),c=function(e){(0,u.default)(TemplatesConditions,e);var t=(0,s.default)(TemplatesConditions);function TemplatesConditions(){return(0,i.default)(this,TemplatesConditions),t.apply(this,arguments)}return(0,a.default)(TemplatesConditions,null,[{key:"getEndpointFormat",value:function getEndpointFormat(){return"site-editor/templates-conditions/{id}"}}]),TemplatesConditions}($e.modules.CommandData);t.TemplatesConditions=c,(0,l.default)(c,"signature","site-editor/templates-conditions");var f=c;t.default=f},49672:(e,t,n)=>{"use strict";var r=n(67394),o=n(67971);r(t,"__esModule",{value:!0}),t.default=t.Templates=void 0;var i=o(n(11959)),a=o(n(39041)),u=o(n(77371)),s=o(n(68537)),l=o(n(18042)),c=function(e){(0,u.default)(Templates,e);var t=(0,s.default)(Templates);function Templates(){return(0,i.default)(this,Templates),t.apply(this,arguments)}return(0,a.default)(Templates,null,[{key:"getEndpointFormat",value:function getEndpointFormat(){return"site-editor/templates/{id}"}}]),Templates}($e.modules.CommandData);t.Templates=c,(0,l.default)(c,"signature","site-editor/templates");var f=c;t.default=f},88704:(e,t,n)=>{"use strict";var r=n(67394),o=n(52369),i=n(67971);r(t,"__esModule",{value:!0}),t.default=void 0;var a=i(n(11959)),u=i(n(39041)),s=i(n(77371)),l=i(n(68537)),c=i(n(18042)),f=o(n(2410)),p=function(e){(0,s.default)(Component,e);var t=(0,l.default)(Component);function Component(){return(0,a.default)(this,Component),t.apply(this,arguments)}return(0,u.default)(Component,[{key:"getNamespace",value:function getNamespace(){return this.constructor.namespace}},{key:"defaultData",value:function defaultData(){return this.importCommands(f)}}]),Component}($e.modules.ComponentBase);t.default=p,(0,c.default)(p,"namespace","site-editor")},89784:(e,t,n)=>{"use strict";var r=n(63804),o=n(67394),i=n(52369),a=n(67971);o(t,"__esModule",{value:!0}),t.default=function useTemplatesScreenshot(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=r.useContext(s.Context),n=t.updateTemplateItemState,o=t.templates,i=(0,u.default)(o).filter((function(t){return shouldScreenshotTemplate(t,e)})),a=(0,l.default)(i);return r.useEffect((function(){a.posts.filter((function(e){return e.status===l.SCREENSHOT_STATUS_SUCCEED})).forEach((function(e){return n(e.id,{thumbnail:e.imageUrl})}))}),[a.succeed]),r.useEffect((function(){a.posts.filter((function(e){return e.status===l.SCREENSHOT_STATUS_FAILED})).forEach((function(e){return n(e.id,{screenshot_url:null})}))}),[a.failed]),a};var u=a(n(35657));n(64434);var s=n(87222),l=i(n(41519));function shouldScreenshotTemplate(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return!t&&("publish"===e.status&&!e.thumbnail&&e.screenshot_url)}},49309:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(t,"__esModule",{value:!0}),t.default=BackButton;var u=a(n(63804)),s=n(78675);function BackButton(e){return u.default.createElement("div",{className:"back-button-wrapper"},u.default.createElement(s.Button,{className:"eps-back-button",text:r("Back","elementor-pro"),icon:"eicon-chevron-left",onClick:e.onClick}))}n(66198),BackButton.propTypes={onClick:o.func},BackButton.defaultProps={onClick:function onClick(){return history.back()}}},47678:(e,t,n)=>{"use strict";var r=n(23615),o=n(67394),i=n(67971);o(t,"__esModule",{value:!0}),t.SiteTemplateBody=void 0;var a=i(n(63804)),u=n(78675),s=i(n(64267)),l=i(n(99092)),c=function SiteTemplateBody(e){return a.default.createElement(u.CardBody,null,e.extended?a.default.createElement(l.default,{src:e.previewUrl,templateType:e.type}):a.default.createElement(s.default,{id:e.id,title:e.title,type:e.type,thumbnail:e.thumbnail,placeholder:e.placeholderUrl}))};t.SiteTemplateBody=c,c.propTypes={extended:r.bool,id:r.number,title:r.string,thumbnail:r.string,placeholderUrl:r.string,type:r.string,previewUrl:r.string}},6283:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(t,"__esModule",{value:!0}),t.SiteTemplateFooter=void 0;var u=a(n(63804)),s=a(n(35657)),l=n(78675),c=function SiteTemplateFooter(e){var t=(0,s.default)(e.instances).join(", ");return u.default.createElement(l.CardFooter,null,u.default.createElement("div",{className:"e-site-template__instances"},u.default.createElement(l.Icon,{className:"eicon-flow"}),u.default.createElement(l.Text,{tag:"span",variant:"sm"},u.default.createElement("b",null,r("Instances","elementor-pro"),":")),u.default.createElement(l.Text,{className:"e-site-template__instances-list",tag:"span",variant:"xxs"}," ",t),u.default.createElement(l.Button,{text:r("Edit Conditions","elementor-pro"),className:"e-site-template__edit-conditions",url:"/site-editor/conditions/".concat(e.id)})))};t.SiteTemplateFooter=c,c.propTypes={id:o.number.isRequired,instances:o.any}},68770:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(t,"__esModule",{value:!0}),t.SiteTemplateHeader=void 0;var u=a(n(63804)),s=n(78675),l=a(n(97282)),c=n(88395),f=function SiteTemplateHeader(e){var t=e.status&&"publish"!==e.status?" (".concat(e.status,")"):"",n=e.title+t,o=function ActionButtons(){return u.default.createElement(u.default.Fragment,null,u.default.createElement(s.Button,{text:r("Edit","elementor-pro"),icon:"eicon-edit",className:"e-site-template__edit-btn",size:"sm",url:e.editURL}),u.default.createElement(l.default,e))},i=function MetaDataIcon(e){return u.default.createElement(s.Text,{tag:"span",className:"e-site-template__meta-data"},u.default.createElement(s.Icon,{className:e.icon}),e.content)},a=function MetaData(){return u.default.createElement(u.default.Fragment,null,u.default.createElement(i,{icon:"eicon-user-circle-o",content:e.author}),u.default.createElement(i,{icon:"eicon-clock-o",content:e.modifiedDate}))};return u.default.createElement(s.CardHeader,null,u.default.createElement(c.Indicator,{active:e.isActive}),u.default.createElement(s.Heading,{tag:"h1",title:n,variant:"text-sm",className:"eps-card__headline"},n),e.extended&&u.default.createElement(a,null),e.extended&&u.default.createElement(o,null))};t.SiteTemplateHeader=f,f.propTypes={isActive:o.bool,author:o.string,editURL:o.string,extended:o.bool,modifiedDate:o.string,status:o.string,title:o.string}},64267:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(t,"__esModule",{value:!0}),t.default=SiteTemplateThumbnail;var u=a(n(63804)),s=n(78675);function SiteTemplateThumbnail(e){return u.default.createElement(s.CardImage,{alt:e.title,src:e.thumbnail||e.placeholder,className:e.thumbnail?"":"e-site-template__placeholder"},u.default.createElement(s.CardOverlay,{className:"e-site-template__overlay-preview"},u.default.createElement(s.Button,{className:"e-site-template__overlay-preview-button",text:r("Preview","elementor-pro"),icon:"eicon-preview-medium",url:"/site-editor/templates/".concat(e.type,"/").concat(e.id)})))}SiteTemplateThumbnail.propTypes={id:o.number,title:o.string,type:o.string,thumbnail:o.string,placeholder:o.string}},93921:(e,t,n)=>{"use strict";var r=n(23615),o=n(67394),i=n(67971);o(t,"__esModule",{value:!0}),t.default=SiteTemplate;var a=i(n(63804)),u=n(78675),s=n(68770),l=n(47678),c=n(6283);function SiteTemplate(e){var t="e-site-template",n=[t],r=a.default.useRef(null);a.default.useEffect((function(){e.isSelected&&r.current.scrollIntoView({behavior:"smooth",block:"start"})}),[e.isSelected]),e.extended&&n.push("".concat(t,"--extended")),e.aspectRatio&&n.push("".concat(t,"--").concat(e.aspectRatio));var o=e.extended?a.default.createElement(c.SiteTemplateFooter,e):"";return a.default.createElement(u.Card,{className:n.join(" "),ref:r},a.default.createElement(s.SiteTemplateHeader,e),a.default.createElement(l.SiteTemplateBody,e),o)}n(96465),SiteTemplate.propTypes={aspectRatio:r.string,className:r.string,extended:r.bool,id:r.number.isRequired,isActive:r.bool.isRequired,status:r.string,thumbnail:r.string.isRequired,title:r.string.isRequired,isSelected:r.bool,type:r.string.isRequired},SiteTemplate.defaultProps={isSelected:!1}},49496:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(t,"__esModule",{value:!0}),t.default=SiteTemplates;var u=a(n(63804)),s=a(n(37959));n(64434),n(90286);var l=a(n(35657)),c=a(n(14176)),f=n(78675),p=a(n(93921)),d=n(97282),v=n(87222),m=a(n(89784));function SiteTemplates(e){var t,n,o=u.default.useContext(v.Context),i=o.templates,a=o.action,h=o.resetActionState;n=u.default.useMemo((function(){return(0,l.default)(i).sort((function(e,t){return t.isActive||e.isActive?t.isActive&&e.isActive?t.date<e.date?1:-1:t.isActive?1:-1:"draft"===t.status&&"draft"===e.status||"draft"!==t.status&&"draft"!==e.status?t.date<e.date?1:-1:"draft"===e.status?1:-1}))}),[i]),(0,m.default)(e.type);var y={};if(e.type)switch(n=n.filter((function(t){return t.type===e.type})),y.extended=!0,y.type=e.type,e.type){case"header":case"footer":t=1,y.aspectRatio="wide";break;default:t=2}return n&&n.length?u.default.createElement("section",{className:"e-site-editor__site-templates"},u.default.createElement(d.PartActionsDialogs,null),a.error&&u.default.createElement(f.Dialog,{text:a.error,dismissButtonText:r("Go Back","elementor-pro"),dismissButtonOnClick:h,approveButtonText:r("Learn More","elementor-pro"),approveButtonColor:"link",approveButtonUrl:"https://go.elementor.com/app-theme-builder-template-load-issue",approveButtonTarget:"_target"}),u.default.createElement(f.CssGrid,{columns:t,spacing:24,colMinWidth:200},n.map((function(t){return u.default.createElement(p.default,(0,s.default)({key:t.id},t,y,{isSelected:(0,c.default)(e.id)===t.id}))})))):u.default.createElement("h3",null,r("No Templates found. Want to create one?","elementor-pro"),"...")}SiteTemplates.propTypes={type:o.string,id:o.string}},26828:(e,t,n)=>{"use strict";var r=n(23615),o=n(18194).__,i=n(67394),a=n(67971);i(t,"__esModule",{value:!0}),t.default=function AddNew(){var e=u.default.useContext(f.Context).templates,t=1<=(0,s.default)(e).length,n=function HoverElement(e){return u.default.createElement("a",{href:e.urls.create,className:"eps-card__image-overlay eps-add-new__overlay"},u.default.createElement(l.AddNewButton,{hideText:!0}))};return n.propTypes={urls:r.object.isRequired},u.default.createElement("section",{className:"e-site-editor__add-new"},u.default.createElement("header",{className:"e-site-editor__header"},t&&u.default.createElement(p.default,null),u.default.createElement(l.Heading,{variant:"h1"},o("Start customizing every part of your site","elementor-pro"))),u.default.createElement(c.SiteParts,{hoverElement:n}))};var u=a(n(63804)),s=a(n(83452)),l=n(78675),c=n(34381);n(26748);var f=n(87222),p=a(n(49309))},73391:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(t,"__esModule",{value:!0}),t.default=ConditionConflicts;var u=a(n(63804));n(90286);var s=n(78675);function ConditionConflicts(e){if(!e.conflicts.length)return"";var t=e.conflicts.map((function(e){return u.default.createElement(s.Button,{key:e.template_id,target:"_blank",url:e.edit_url,text:e.template_title})}));return u.default.createElement(s.Text,{className:"e-site-editor-conditions__conflict",variant:"sm"},r("Elementor recognized that you have set this location for other templates: ","elementor-pro")," ",t)}ConditionConflicts.propTypes={conflicts:o.array.isRequired}},87072:(e,t,n)=>{"use strict";var r=n(23615),o=n(67394),i=n(67971);o(t,"__esModule",{value:!0}),t.default=ConditionName;var a=i(n(63804));n(99745);var u=n(78675);function ConditionName(e){if("general"!==e.default)return"";return a.default.createElement("div",{className:"e-site-editor-conditions__input-wrapper"},a.default.createElement(u.Select,{options:e.options,value:e.name,onChange:function onChange(t){return e.updateConditions(e.id,{name:t.target.value,sub:"",subId:""})}}))}ConditionName.propTypes={updateConditions:r.func.isRequired,id:r.string.isRequired,name:r.string.isRequired,options:r.array.isRequired,default:r.string.isRequired},ConditionName.defaultProps={name:""}},72888:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(t,"__esModule",{value:!0}),t.default=ConditionSubId;var u=a(n(63804)),s=a(n(83452));n(10195);var l=n(78675);function ConditionSubId(e){if(!e.sub||!(0,s.default)(e.subIdAutocomplete).length)return"";var t=u.default.useMemo((function(){return function getSettings(e){return{allowClear:!1,placeholder:r("All","elementor-pro"),dir:elementorCommon.config.isRTL?"rtl":"ltr",ajax:{transport:function transport(t,n,r){return elementorCommon.ajax.addRequest("pro_panel_posts_control_filter_autocomplete",{data:{q:t.data.q,autocomplete:e},success:n,error:r})},data:function data(e){return{q:e.term,page:e.page}},cache:!0},escapeMarkup:function escapeMarkup(e){return e},minimumInputLength:1}}(e.subIdAutocomplete)}),[e.subIdAutocomplete]);return u.default.createElement("div",{className:"e-site-editor-conditions__input-wrapper"},u.default.createElement(l.Select2,{onChange:function onChange(t){return e.updateConditions(e.id,{subId:t.target.value})},value:e.subId,settings:t,options:e.subIdOptions}))}ConditionSubId.propTypes={subIdAutocomplete:o.object,id:o.string.isRequired,sub:o.string,subId:o.string,updateConditions:o.func,subIdOptions:o.array},ConditionSubId.defaultProps={subId:"",subIdOptions:[]}},74090:(e,t,n)=>{"use strict";var r=n(23615),o=n(67394),i=n(67971);o(t,"__esModule",{value:!0}),t.default=ConditionSub;var a=i(n(63804));n(99745),n(10195);var u=n(78675);function ConditionSub(e){if("general"===e.name||!e.subOptions.length)return"";return a.default.createElement("div",{className:"e-site-editor-conditions__input-wrapper"},a.default.createElement(u.Select,{options:e.subOptions,value:e.sub,onChange:function onChange(t){return e.updateConditions(e.id,{sub:t.target.value,subId:""})}}))}ConditionSub.propTypes={updateConditions:r.func.isRequired,id:r.string.isRequired,name:r.string.isRequired,sub:r.string.isRequired,subOptions:r.array.isRequired},ConditionSub.defaultProps={sub:"",subOptions:{}}},44172:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(t,"__esModule",{value:!0}),t.default=ConditionType;var u=a(n(63804)),s=n(78675);function ConditionType(e){var t=u.default.createRef(),n=[{label:r("Include","elementor-pro"),value:"include"},{label:r("Exclude","elementor-pro"),value:"exclude"}];return u.default.useEffect((function(){t.current.setAttribute("data-elementor-condition-type",e.type)})),u.default.createElement("div",{className:"e-site-editor-conditions__input-wrapper e-site-editor-conditions__input-wrapper--condition-type",ref:t},u.default.createElement(s.Select,{options:n,value:e.type,onChange:function onChange(t){e.updateConditions(e.id,{type:t.target.value})}}))}ConditionType.propTypes={updateConditions:o.func.isRequired,id:o.string.isRequired,type:o.string.isRequired},ConditionType.defaultProps={type:""}},7707:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(t,"__esModule",{value:!0}),t.default=ConditionsRows;var u=a(n(63804)),s=a(n(37959)),l=a(n(35657));n(90286);var c=n(78221),f=n(78675),p=a(n(44172)),d=a(n(87072)),v=a(n(74090)),m=a(n(72888)),h=a(n(73391));function ConditionsRows(e){var t=u.default.useContext(c.Context),n=t.conditions,o=t.createConditionItemInState,i=t.updateConditionItemState,a=t.removeConditionItemInState,y=t.saveConditions,g=t.action,_=t.resetActionState,b=(0,l.default)(n).map((function(e){return u.default.createElement("div",{key:e.id},u.default.createElement("div",{className:"e-site-editor-conditions__row"},u.default.createElement("div",{className:"e-site-editor-conditions__row-controls ".concat(e.conflictErrors.length&&"e-site-editor-conditions__row-controls--error")},u.default.createElement(p.default,(0,s.default)({},e,{updateConditions:i})),u.default.createElement("div",{className:"e-site-editor-conditions__row-controls-inner"},u.default.createElement(d.default,(0,s.default)({},e,{updateConditions:i})),u.default.createElement(v.default,(0,s.default)({},e,{updateConditions:i})),u.default.createElement(m.default,(0,s.default)({},e,{updateConditions:i})))),u.default.createElement(f.Button,{className:"e-site-editor-conditions__remove-condition",text:r("Delete","elementor-pro"),icon:"eicon-close",hideText:!0,onClick:function onClick(){return a(e.id)}})),u.default.createElement(h.default,{conflicts:e.conflictErrors}))})),x=g.current===c.ConditionsProvider.actions.SAVE&&g.loading;return u.default.createElement(u.default.Fragment,null,g.error&&u.default.createElement(f.Dialog,{text:g.error,dismissButtonText:r("Go Back","elementor-pro"),dismissButtonOnClick:_,approveButtonText:r("Learn More","elementor-pro"),approveButtonColor:"link",approveButtonUrl:"https://go.elementor.com/app-theme-builder-conditions-load-issue",approveButtonTarget:"_target"}),u.default.createElement("div",{className:"e-site-editor-conditions__rows"},b),u.default.createElement("div",{className:"e-site-editor-conditions__add-button-container"},u.default.createElement(f.Button,{className:"e-site-editor-conditions__add-button",variant:"contained",size:"lg",text:r("Add Condition","elementor-pro"),onClick:o})),u.default.createElement("div",{className:"e-site-editor-conditions__footer"},u.default.createElement(f.Button,{variant:"contained",color:"primary",size:"lg",hideText:x,icon:x?"eicon-loading eicon-animation-spin":"",text:r("Save & Close","elementor-pro"),onClick:function onClick(){return y().then(e.onAfterSave)}})))}ConditionsRows.propTypes={onAfterSave:o.func}},5715:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(t,"__esModule",{value:!0}),t.default=Conditions;var u=a(n(63804)),s=a(n(14176)),l=n(78675),c=a(n(78221)),f=n(87222),p=a(n(7707));n(13461);var d=a(n(49309));function Conditions(e){var t=u.default.useContext(f.Context),n=t.findTemplateItemInState,o=t.updateTemplateItemState,i=n((0,s.default)(e.id));return i?u.default.createElement("section",{className:"e-site-editor-conditions"},u.default.createElement(d.default,null),u.default.createElement("div",{className:"e-site-editor-conditions__header"},u.default.createElement("img",{className:"e-site-editor-conditions__header-image",src:"".concat(elementorAppProConfig.baseUrl,"/modules/theme-builder/assets/images/conditions-tab.svg"),alt:r("Import template","elementor-pro")}),u.default.createElement(l.Heading,{variant:"h1",tag:"h1"},r("Where Do You Want to Display Your Template?","elementor-pro")),u.default.createElement(l.Text,{variant:"p"},r("Set the conditions that determine where your template is used throughout your site.","elementor-pro"),u.default.createElement("br",null),r("For example, choose 'Entire Site' to display the template across your site.","elementor-pro"))),u.default.createElement(c.default,{currentTemplate:i,onConditionsSaved:o},u.default.createElement(p.default,{onAfterSave:function onAfterSave(){return history.back()}}))):u.default.createElement("div",null,r("Not Found","elementor-pro"))}Conditions.propTypes={id:o.string}},30044:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(67394),i=n(67971);o(t,"__esModule",{value:!0}),t.default=function Import(){var e=a.default.useContext(c.Context),t=e.importTemplates,n=e.action,o=e.resetActionState,i=a.default.useState(null),p=(0,s.default)(i,2),d=p[0],v=p[1],m=a.default.useMemo((function(){return n.current===c.TemplatesProvider.actions.IMPORT}),[n]),h=a.default.useMemo((function(){return m&&n.loading}),[n]),y=a.default.useMemo((function(){return m&&n.error}),[n]),g=a.default.useCallback((function(e){h||function readFile(e){return new u.default((function(t){var n=new FileReader;n.readAsDataURL(e),n.onload=function(e){t(e.target.result.replace(/^[^,]+,/,""))}}))}(e).then((function(n){return t({fileName:e.name,fileData:n})})).then((function(e){v(e.data[0])}))}),[]);return a.default.createElement("section",{className:"site-editor__import"},d&&a.default.createElement(l.Dialog,{title:r("Your template was imported","elementor-pro"),approveButtonText:r("Preview","elementor-pro"),approveButtonUrl:d.url,approveButtonTarget:"_blank",dismissButtonText:r("Edit","elementor-pro"),dismissButtonUrl:d.editURL,dismissButtonTarget:"_top",onClose:function onClose(){return v(null)}}),y&&a.default.createElement(l.Dialog,{title:n.error,approveButtonText:r("Learn More","elementor-pro"),approveButtonUrl:"https://go.elementor.com/app-theme-builder-import-issue",approveButtonTarget:"_blank",approveButtonColor:"link",dismissButtonText:r("Go Back","elementor-pro"),dismissButtonOnClick:o,onClose:o}),a.default.createElement(f.default,null),a.default.createElement(l.DropZone,{heading:r("Import Template To Your Library","elementor-pro"),text:r("Drag & Drop your .JSON or .zip template file","elementor-pro"),secondaryText:r("or","elementor-pro"),onFileSelect:g,isLoading:h,filetypes:["zip","json"]}))};var a=i(n(63804)),u=i(n(73220));n(99745),n(84208);var s=i(n(47834)),l=n(78675),c=n(87222),f=i(n(49309))},65026:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(t,"__esModule",{value:!0}),t.default=TemplateType;var u=a(n(63804));n(71954);var s=n(34381),l=n(78675),c=a(n(49496));function TemplateType(e){var t=u.default.useContext(s.TemplateTypesContext).templateTypes.find((function(t){return t.type===e.type}));return t?u.default.createElement("section",{className:"e-site-editor__templates e-site-editor__templates--type-".concat(e.type)},u.default.createElement(l.Grid,{className:"page-header",container:!0,justify:"space-between"},u.default.createElement(l.Heading,{variant:"h1"},t.page_title),u.default.createElement(l.AddNewButton,{url:t.urls.create,text:r("Add New","elementor-pro")})),u.default.createElement("hr",{className:"eps-separator"}),u.default.createElement(c.default,{type:t.type,id:e.id})):u.default.createElement(l.NotFound,null)}n(62918),TemplateType.propTypes={type:o.string,page_title:o.string,id:o.string}},40364:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(67394),i=n(67971);o(t,"__esModule",{value:!0}),t.default=function Templates(){return a.default.createElement("section",{className:"e-site-editor__site-templates"},a.default.createElement(s.Grid,{container:!0,justify:"space-between",className:"page-header"},a.default.createElement("h1",null,r("Your Site's Global Parts","elementor-pro")),a.default.createElement(s.AddNewButton,{url:"/site-editor/add-new"})),a.default.createElement("hr",{className:"eps-separator"}),a.default.createElement(u.default,null))};var a=i(n(63804)),u=i(n(49496)),s=n(78675)},63602:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(t,"__esModule",{value:!0}),t.default=DialogDelete;var u=a(n(63804)),s=n(78675),l=n(87222);function DialogDelete(e){var t=u.default.useContext(l.Context),n=t.deleteTemplate,o=(0,t.findTemplateItemInState)(e.id),i=function closeDialog(t){e.setId(null),t&&n(e.id)};return e.id?u.default.createElement(s.Dialog,{title:r("Move Item To Trash","elementor-pro"),text:r("Are you sure you want to move this item to trash:","elementor-pro")+' "'.concat(o.title,'"'),onSubmit:function onSubmit(){return i(!0)},approveButtonText:r("Move to Trash","elementor-pro"),approveButtonOnClick:function approveButtonOnClick(){return i(!0)},approveButtonColor:"danger",dismissButtonText:r("Cancel","elementor-pro"),dismissButtonOnClick:function dismissButtonOnClick(){return i()},onClose:function onClose(){return i()}}):""}DialogDelete.propTypes={id:o.number,setId:o.func.isRequired}},96546:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971),u=n(52369);i(t,"__esModule",{value:!0}),t.default=DialogRename;var s=u(n(63804)),l=a(n(47834)),c=n(78675),f=n(87222);function DialogRename(e){var t=s.default.useContext(f.Context),n=t.findTemplateItemInState,o=t.updateTemplate,i=n(e.id),a=s.default.useState(""),u=(0,l.default)(a,2),p=u[0],d=u[1];(0,s.useEffect)((function(){i&&d(i.title)}),[i]);var v=function closeDialog(t){e.setId(null),t&&o(e.id,{post_title:p})};return e.id?s.default.createElement(c.Dialog,{title:r("Rename Site Part","elementor-pro"),approveButtonText:r("Change","elementor-pro"),onSubmit:function onSubmit(){return v(!0)},approveButtonOnClick:function approveButtonOnClick(){return v(!0)},approveButtonColor:"primary",dismissButtonText:r("Cancel","elementor-pro"),dismissButtonOnClick:function dismissButtonOnClick(){return v()},onClose:function onClose(){return v()}},s.default.createElement("input",{type:"text",className:"eps-input eps-input-text eps-input--block",autoFocus:!0,value:p,onChange:function onChange(e){return d(e.target.value)}})):""}DialogRename.propTypes={id:o.number,setId:o.func.isRequired}},97282:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(23615),i=n(67394),a=n(67971);i(t,"__esModule",{value:!0}),t.PartActionsDialogs=function PartActionsDialogs(){var e=u.default.useState(null),t=(0,s.default)(e,2),n=t[0],r=t[1],o=u.default.useState(null),i=(0,s.default)(o,2),a=i[0],f=i[1];return p.rename=r,p.delete=f,u.default.createElement(u.default.Fragment,null,u.default.createElement(l.default,{id:n,setId:r}),u.default.createElement(c.default,{id:a,setId:f}))},t.default=PartActionsButtons,t.handlers=void 0;var u=a(n(63804)),s=a(n(47834)),l=a(n(96546)),c=a(n(63602)),f=n(78675),p={rename:null,delete:null};function PartActionsButtons(e){var t=u.default.useState(!1),n=(0,s.default)(t,2),o=n[0],i=n[1],a="";return o&&(a=u.default.createElement(f.Popover,{closeFunction:function closeFunction(){return i(!o)}},u.default.createElement("li",null,u.default.createElement(f.Button,{className:"eps-popover__item",icon:"eicon-sign-out",text:r("Export","elementor-pro"),url:e.exportLink})),u.default.createElement("li",null,u.default.createElement(f.Button,{className:"eps-popover__item eps-popover__item--danger",icon:"eicon-trash-o",text:r("Trash","elementor-pro"),onClick:function onClick(){return p.delete(e.id)}})),u.default.createElement("li",null,u.default.createElement(f.Button,{className:"eps-popover__item",icon:"eicon-edit",text:r("Rename","elementor-pro"),onClick:function onClick(){return p.rename(e.id)}})))),u.default.createElement("div",{className:"eps-popover__container"},u.default.createElement(f.Button,{text:r("Toggle","elementor-pro"),hideText:!0,icon:"eicon-ellipsis-h",size:"lg",onClick:function onClick(){return i(!o)}}),a)}t.handlers=p,PartActionsButtons.propTypes={id:o.number.isRequired,exportLink:o.string.isRequired}},71143:(e,t,n)=>{"use strict";var r=n(18194).__,o=n(67394),i=n(52369),a=n(67971);o(t,"__esModule",{value:!0}),t.default=void 0;var u=a(n(63804)),s=a(n(11959)),l=a(n(83452)),c=n(50927),f=a(n(40364)),p=a(n(65026)),d=a(n(26828)),v=a(n(5715)),m=a(n(30044)),h=i(n(87222)),y=n(34381),g=n(78675),_=a(n(20485)),b=a(n(88704));function SiteEditor(){var e,t,n=[{id:"import",text:r("import","elementor-pro"),hideText:!0,icon:"eicon-download-circle-o",onClick:function onClick(){return _.default.appHistory.navigate("site-editor/import")}}];elementorCommon.ajax.invalidateCache({unique_id:"app_site_editor_template_types"});var o=function SiteEditorDefault(){var e=u.default.useContext(h.Context).templates;return(0,l.default)(e).length?u.default.createElement(c.Redirect,{from:"/",to:"/site-editor/templates",noThrow:!0}):u.default.createElement(c.Redirect,{from:"/",to:"/site-editor/add-new",noThrow:!0})};return u.default.createElement(g.ErrorBoundary,{title:r("Theme Builder could not be loaded","elementor-pro"),learnMoreUrl:"https://go.elementor.com/app-theme-builder-load-issue"},u.default.createElement(y.Layout,{allPartsButton:u.default.createElement(y.AllPartsButton,{url:"/site-editor"}),headerButtons:n},u.default.createElement(g.Grid,{container:!0,className:"e-site-editor__content_container"},u.default.createElement(g.Grid,{item:!0,className:"e-site-editor__content_container_main"},u.default.createElement(h.default,null,u.default.createElement(c.LocationProvider,{history:_.default.appHistory},u.default.createElement(c.Router,null,u.default.createElement(o,{path:"/site-editor"}),u.default.createElement(f.default,{path:"site-editor/templates"}),u.default.createElement(p.default,{path:"site-editor/templates/:type/*id"}),u.default.createElement(d.default,{path:"site-editor/add-new"}),u.default.createElement(v.default,{path:"site-editor/conditions/:id"}),u.default.createElement(m.default,{path:"site-editor/import"}),u.default.createElement(y.NotFound,{default:!0}))))),u.default.createElement(g.Grid,{item:!0,className:"e-site-editor__content_container_secondary"},u.default.createElement(g.Button,{text:r("Switch to table view","elementor-pro"),url:null===(e=elementorAppProConfig["site-editor"])||void 0===e||null===(t=e.urls)||void 0===t?void 0:t.legacy_view})))))}n(36909);t.default=function Module(){(0,s.default)(this,Module),elementorCommon.debug.addURLToWatch("elementor-pro/assets"),$e.components.register(new b.default),_.default.addRoute({path:"/site-editor/*",component:SiteEditor})}},41519:(e,t,n)=>{"use strict";var r=n(63804),o=n(67394),i=n(67971);o(t,"__esModule",{value:!0}),t.default=function useScreenshot(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:_,n=t.numberOfScreenshotInParallel,r=f([]),o=(0,s.default)(r,2),i=o[0],a=o[1],l=d((function(){return filterPostByStatus(i,m)}),[i]),c=d((function(){return filterPostByStatus(i,h)}),[i]),v=d((function(){return filterPostByStatus(i,y)}),[i]),b=d((function(){return filterPostByStatus(i,g)}),[i]);p((function(){var t=e.filter((function(e){return!i.find((function(t){return t.id===e.id}))}));t.length&&a((function(e){return[].concat((0,u.default)(e),(0,u.default)(normalizeInitialPosts(t)))}))}),[e]);var x=useIFrameMessageListener(c,a);return p((function(){return window.addEventListener("message",x,!1),function(){window.removeEventListener("message",x)}}),[x]),p((function(){if(!(0===l.length||c.length>=n)){var e=(0,s.default)(l,1)[0],t=createScreenshotIframe(e);a((function(n){return updatePostsAttrs(n,e.id,{status:h,iframe:t})}))}}),[i]),{posts:i,queue:l,inProgress:c,succeed:v,failed:b}},t.SCREENSHOT_STATUS_FAILED=t.SCREENSHOT_STATUS_SUCCEED=t.SCREENSHOT_STATUS_IN_PROGRESS=t.SCREENSHOT_STATUS_QUEUE=void 0;var a=i(n(14176)),u=i(n(74846)),s=i(n(47834)),l=i(n(84899));n(64434),n(90286),n(99745),n(71954);var c=r,f=c.useState,p=c.useEffect,d=c.useMemo,v=c.useCallback,m="queue";t.SCREENSHOT_STATUS_QUEUE=m;var h="in-progress";t.SCREENSHOT_STATUS_IN_PROGRESS=h;var y="succeed";t.SCREENSHOT_STATUS_SUCCEED=y;var g="failed";t.SCREENSHOT_STATUS_FAILED=g;var _={numberOfScreenshotInParallel:1};function filterPostByStatus(e,t){return e.filter((function(e){return t===e.status}))}function normalizeInitialPosts(e){return e.map((function(e){return{id:e.id,screenshot_url:e.screenshot_url,status:"queue",iframe:null,imageUrl:null}}))}function updatePostsAttrs(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return e.map((function(e){return e.id!==t?e:(0,l.default)((0,l.default)({},e),n)}))}function createScreenshotIframe(e){var t=document.createElement("iframe");return t.src=e.screenshot_url,t.width="1200",t.style="visibility: hidden;",document.body.appendChild(t),t}function useIFrameMessageListener(e,t){return v((function(n){var r=n.data;if(r.name&&"capture-screenshot-done"===r.name){var o=e.find((function(e){return e.id===(0,a.default)(r.id)}));o&&(o.iframe.remove(),t((function(e){return updatePostsAttrs(e,o.id,{status:r.success?y:g,imageUrl:r.imageUrl})})))}}),[e])}},7421:(e,t,n)=>{n(99572),n(37627),e.exports=n(47208).Array.from},70157:(e,t,n)=>{n(42580),e.exports=n(47208).Array.isArray},89710:(e,t,n)=>{var r=n(47208),o=r.JSON||(r.JSON={stringify:JSON.stringify});e.exports=function stringify(e){return o.stringify.apply(o,arguments)}},66458:(e,t,n)=>{n(99954),e.exports=n(47208).Object.assign},14710:(e,t,n)=>{n(30785);var r=n(47208).Object;e.exports=function create(e,t){return r.create(e,t)}},23022:(e,t,n)=>{n(23078);var r=n(47208).Object;e.exports=function defineProperties(e,t){return r.defineProperties(e,t)}},43153:(e,t,n)=>{n(40168);var r=n(47208).Object;e.exports=function defineProperty(e,t,n){return r.defineProperty(e,t,n)}},32622:(e,t,n)=>{n(18576);var r=n(47208).Object;e.exports=function getOwnPropertyDescriptor(e,t){return r.getOwnPropertyDescriptor(e,t)}},27410:(e,t,n)=>{n(67685),e.exports=n(47208).Object.getOwnPropertyDescriptors},19035:(e,t,n)=>{n(54370),e.exports=n(47208).Object.getOwnPropertySymbols},58535:(e,t,n)=>{n(4840),e.exports=n(47208).Object.getPrototypeOf},97220:(e,t,n)=>{n(5453),e.exports=n(47208).Object.keys},65135:(e,t,n)=>{n(13890),e.exports=n(47208).Object.setPrototypeOf},69591:(e,t,n)=>{n(57188),e.exports=n(47208).Object.values},34345:(e,t,n)=>{n(24399),e.exports=n(47208).parseInt},76483:(e,t,n)=>{n(70285),n(99572),n(74114),n(86082),n(81522),n(25757),e.exports=n(47208).Promise},43094:(e,t,n)=>{n(11320),e.exports=n(47208).Reflect.construct},19103:(e,t,n)=>{n(54370),n(70285),n(87573),n(97224),e.exports=n(47208).Symbol},39871:(e,t,n)=>{n(99572),n(74114),e.exports=n(7273).f("iterator")},89999:(e,t,n)=>{n(70285),n(74114),n(23337),n(10143),n(92797),e.exports=n(47208).WeakMap},26610:e=>{e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},29697:e=>{e.exports=function(){}},54677:e=>{e.exports=function(e,t,n,r){if(!(e instanceof t)||void 0!==r&&r in e)throw TypeError(n+": incorrect invocation!");return e}},30498:(e,t,n)=>{var r=n(39632);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},69191:(e,t,n)=>{var r=n(1504),o=n(37154),i=n(46723);e.exports=function(e){return function(t,n,a){var u,s=r(t),l=o(s.length),c=i(a,l);if(e&&n!=n){for(;l>c;)if((u=s[c++])!=u)return!0}else for(;l>c;c++)if((e||c in s)&&s[c]===n)return e||c||0;return!e&&-1}}},97647:(e,t,n)=>{var r=n(61725),o=n(13115),i=n(60061),a=n(37154),u=n(41904);e.exports=function(e,t){var n=1==e,s=2==e,l=3==e,c=4==e,f=6==e,p=5==e||f,d=t||u;return function(t,u,v){for(var m,h,y=i(t),g=o(y),_=r(u,v,3),b=a(g.length),x=0,C=n?d(t,b):s?d(t,0):void 0;b>x;x++)if((p||x in g)&&(h=_(m=g[x],x,y),e))if(n)C[x]=h;else if(h)switch(e){case 3:return!0;case 5:return m;case 6:return x;case 2:C.push(m)}else if(c)return!1;return f?-1:l||c?c:C}}},88320:(e,t,n)=>{var r=n(39632),o=n(7359),i=n(24300)("species");e.exports=function(e){var t;return o(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!o(t.prototype)||(t=void 0),r(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},41904:(e,t,n)=>{var r=n(88320);e.exports=function(e,t){return new(r(e))(t)}},45515:(e,t,n)=>{"use strict";var r=n(26610),o=n(39632),i=n(19897),a=[].slice,u={},construct=function(e,t,n){if(!(t in u)){for(var r=[],o=0;o<t;o++)r[o]="a["+o+"]";u[t]=Function("F,a","return new F("+r.join(",")+")")}return u[t](e,n)};e.exports=Function.bind||function bind(e){var t=r(this),n=a.call(arguments,1),bound=function(){var r=n.concat(a.call(arguments));return this instanceof bound?construct(t,r.length,r):i(t,r,e)};return o(t.prototype)&&(bound.prototype=t.prototype),bound}},8312:(e,t,n)=>{var r=n(41352),o=n(24300)("toStringTag"),i="Arguments"==r(function(){return arguments}());e.exports=function(e){var t,n,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:i?r(t):"Object"==(a=r(t))&&"function"==typeof t.callee?"Arguments":a}},41352:e=>{var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},92600:(e,t,n)=>{"use strict";var r=n(13199),o=n(6758).getWeak,i=n(30498),a=n(39632),u=n(54677),s=n(25985),l=n(97647),c=n(20657),f=n(41081),p=l(5),d=l(6),v=0,uncaughtFrozenStore=function(e){return e._l||(e._l=new UncaughtFrozenStore)},UncaughtFrozenStore=function(){this.a=[]},findUncaughtFrozen=function(e,t){return p(e.a,(function(e){return e[0]===t}))};UncaughtFrozenStore.prototype={get:function(e){var t=findUncaughtFrozen(this,e);if(t)return t[1]},has:function(e){return!!findUncaughtFrozen(this,e)},set:function(e,t){var n=findUncaughtFrozen(this,e);n?n[1]=t:this.a.push([e,t])},delete:function(e){var t=d(this.a,(function(t){return t[0]===e}));return~t&&this.a.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,i){var l=e((function(e,r){u(e,l,t,"_i"),e._t=t,e._i=v++,e._l=void 0,null!=r&&s(r,n,e[i],e)}));return r(l.prototype,{delete:function(e){if(!a(e))return!1;var n=o(e);return!0===n?uncaughtFrozenStore(f(this,t)).delete(e):n&&c(n,this._i)&&delete n[this._i]},has:function has(e){if(!a(e))return!1;var n=o(e);return!0===n?uncaughtFrozenStore(f(this,t)).has(e):n&&c(n,this._i)}}),l},def:function(e,t,n){var r=o(i(t),!0);return!0===r?uncaughtFrozenStore(e).set(t,n):r[e._i]=n,e},ufstore:uncaughtFrozenStore}},70770:(e,t,n)=>{"use strict";var r=n(43280),o=n(98310),i=n(6758),a=n(90472),u=n(62292),s=n(13199),l=n(25985),c=n(54677),f=n(39632),p=n(2413),d=n(60510).f,v=n(97647)(0),m=n(75179);e.exports=function(e,t,n,h,y,g){var _=r[e],b=_,x=y?"set":"add",C=b&&b.prototype,S={};return m&&"function"==typeof b&&(g||C.forEach&&!a((function(){(new b).entries().next()})))?(b=t((function(t,n){c(t,b,e,"_c"),t._c=new _,null!=n&&l(n,y,t[x],t)})),v("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),(function(e){var t="add"==e||"set"==e;!(e in C)||g&&"clear"==e||u(b.prototype,e,(function(n,r){if(c(this,b,e),!t&&g&&!f(n))return"get"==e&&void 0;var o=this._c[e](0===n?0:n,r);return t?this:o}))})),g||d(b.prototype,"size",{get:function(){return this._c.size}})):(b=h.getConstructor(t,e,y,x),s(b.prototype,n),i.NEED=!0),p(b,e),S[e]=b,o(o.G+o.W+o.F,S),g||h.setStrong(b,e,y),b}},47208:e=>{var t=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=t)},87352:(e,t,n)=>{"use strict";var r=n(60510),o=n(48439);e.exports=function(e,t,n){t in e?r.f(e,t,o(0,n)):e[t]=n}},61725:(e,t,n)=>{var r=n(26610);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},18239:e=>{e.exports=function(e){if(null==e)throw TypeError("Can't call method on  "+e);return e}},75179:(e,t,n)=>{e.exports=!n(90472)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},48765:(e,t,n)=>{var r=n(39632),o=n(43280).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},31986:e=>{e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},42266:(e,t,n)=>{var r=n(86425),o=n(97739),i=n(67410);e.exports=function(e){var t=r(e),n=o.f;if(n)for(var a,u=n(e),s=i.f,l=0;u.length>l;)s.call(e,a=u[l++])&&t.push(a);return t}},98310:(e,t,n)=>{var r=n(43280),o=n(47208),i=n(61725),a=n(62292),u=n(20657),$export=function(e,t,n){var s,l,c,f=e&$export.F,p=e&$export.G,d=e&$export.S,v=e&$export.P,m=e&$export.B,h=e&$export.W,y=p?o:o[t]||(o[t]={}),g=y.prototype,_=p?r:d?r[t]:(r[t]||{}).prototype;for(s in p&&(n=t),n)(l=!f&&_&&void 0!==_[s])&&u(y,s)||(c=l?_[s]:n[s],y[s]=p&&"function"!=typeof _[s]?n[s]:m&&l?i(c,r):h&&_[s]==c?function(e){var F=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return F.prototype=e.prototype,F}(c):v&&"function"==typeof c?i(Function.call,c):c,v&&((y.virtual||(y.virtual={}))[s]=c,e&$export.R&&g&&!g[s]&&a(g,s,c)))};$export.F=1,$export.G=2,$export.S=4,$export.P=8,$export.B=16,$export.W=32,$export.U=64,$export.R=128,e.exports=$export},90472:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},25985:(e,t,n)=>{var r=n(61725),o=n(93086),i=n(11827),a=n(30498),u=n(37154),s=n(26116),l={},c={},f=e.exports=function(e,t,n,f,p){var d,v,m,h,y=p?function(){return e}:s(e),g=r(n,f,t?2:1),_=0;if("function"!=typeof y)throw TypeError(e+" is not iterable!");if(i(y)){for(d=u(e.length);d>_;_++)if((h=t?g(a(v=e[_])[0],v[1]):g(e[_]))===l||h===c)return h}else for(m=y.call(e);!(v=m.next()).done;)if((h=o(m,g,v.value,t))===l||h===c)return h};f.BREAK=l,f.RETURN=c},43280:e=>{var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},20657:e=>{var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},62292:(e,t,n)=>{var r=n(60510),o=n(48439);e.exports=n(75179)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},92477:(e,t,n)=>{var r=n(43280).document;e.exports=r&&r.documentElement},64457:(e,t,n)=>{e.exports=!n(75179)&&!n(90472)((function(){return 7!=Object.defineProperty(n(48765)("div"),"a",{get:function(){return 7}}).a}))},19897:e=>{e.exports=function(e,t,n){var r=void 0===n;switch(t.length){case 0:return r?e():e.call(n);case 1:return r?e(t[0]):e.call(n,t[0]);case 2:return r?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return r?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return r?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},13115:(e,t,n)=>{var r=n(41352);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},11827:(e,t,n)=>{var r=n(79105),o=n(24300)("iterator"),i=Array.prototype;e.exports=function(e){return void 0!==e&&(r.Array===e||i[o]===e)}},7359:(e,t,n)=>{var r=n(41352);e.exports=Array.isArray||function isArray(e){return"Array"==r(e)}},39632:e=>{e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},93086:(e,t,n)=>{var r=n(30498);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){var i=e.return;throw void 0!==i&&r(i.call(e)),t}}},19802:(e,t,n)=>{"use strict";var r=n(82488),o=n(48439),i=n(2413),a={};n(62292)(a,n(24300)("iterator"),(function(){return this})),e.exports=function(e,t,n){e.prototype=r(a,{next:o(1,n)}),i(e,t+" Iterator")}},6125:(e,t,n)=>{"use strict";var r=n(36794),o=n(98310),i=n(19312),a=n(62292),u=n(79105),s=n(19802),l=n(2413),c=n(999),f=n(24300)("iterator"),p=!([].keys&&"next"in[].keys()),d="keys",v="values",returnThis=function(){return this};e.exports=function(e,t,n,m,h,y,g){s(n,t,m);var _,b,x,getMethod=function(e){if(!p&&e in T)return T[e];switch(e){case d:return function keys(){return new n(this,e)};case v:return function values(){return new n(this,e)}}return function entries(){return new n(this,e)}},C=t+" Iterator",S=h==v,E=!1,T=e.prototype,w=T[f]||T["@@iterator"]||h&&T[h],P=w||getMethod(h),O=h?S?getMethod("entries"):P:void 0,I="Array"==t&&T.entries||w;if(I&&(x=c(I.call(new e)))!==Object.prototype&&x.next&&(l(x,C,!0),r||"function"==typeof x[f]||a(x,f,returnThis)),S&&w&&w.name!==v&&(E=!0,P=function values(){return w.call(this)}),r&&!g||!p&&!E&&T[f]||a(T,f,P),u[t]=P,u[C]=returnThis,h)if(_={values:S?P:getMethod(v),keys:y?P:getMethod(d),entries:O},g)for(b in _)b in T||i(T,b,_[b]);else o(o.P+o.F*(p||E),t,_);return _}},26797:(e,t,n)=>{var r=n(24300)("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var i=[7],a=i[r]();a.next=function(){return{done:n=!0}},i[r]=function(){return a},e(i)}catch(e){}return n}},9329:e=>{e.exports=function(e,t){return{value:t,done:!!e}}},79105:e=>{e.exports={}},36794:e=>{e.exports=!0},6758:(e,t,n)=>{var r=n(54251)("meta"),o=n(39632),i=n(20657),a=n(60510).f,u=0,s=Object.isExtensible||function(){return!0},l=!n(90472)((function(){return s(Object.preventExtensions({}))})),setMeta=function(e){a(e,r,{value:{i:"O"+ ++u,w:{}}})},c=e.exports={KEY:r,NEED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,r)){if(!s(e))return"F";if(!t)return"E";setMeta(e)}return e[r].i},getWeak:function(e,t){if(!i(e,r)){if(!s(e))return!0;if(!t)return!1;setMeta(e)}return e[r].w},onFreeze:function(e){return l&&c.NEED&&s(e)&&!i(e,r)&&setMeta(e),e}}},4326:(e,t,n)=>{var r=n(43280),o=n(6022).set,i=r.MutationObserver||r.WebKitMutationObserver,a=r.process,u=r.Promise,s="process"==n(41352)(a);e.exports=function(){var e,t,n,flush=function(){var r,o;for(s&&(r=a.domain)&&r.exit();e;){o=e.fn,e=e.next;try{o()}catch(r){throw e?n():t=void 0,r}}t=void 0,r&&r.enter()};if(s)n=function(){a.nextTick(flush)};else if(!i||r.navigator&&r.navigator.standalone)if(u&&u.resolve){var l=u.resolve(void 0);n=function(){l.then(flush)}}else n=function(){o.call(r,flush)};else{var c=!0,f=document.createTextNode("");new i(flush).observe(f,{characterData:!0}),n=function(){f.data=c=!c}}return function(r){var o={fn:r,next:void 0};t&&(t.next=o),e||(e=o,n()),t=o}}},88579:(e,t,n)=>{"use strict";var r=n(26610);function PromiseCapability(e){var t,n;this.promise=new e((function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=r(t),this.reject=r(n)}e.exports.f=function(e){return new PromiseCapability(e)}},77995:(e,t,n)=>{"use strict";var r=n(75179),o=n(86425),i=n(97739),a=n(67410),u=n(60061),s=n(13115),l=Object.assign;e.exports=!l||n(90472)((function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach((function(e){t[e]=e})),7!=l({},e)[n]||Object.keys(l({},t)).join("")!=r}))?function assign(e,t){for(var n=u(e),l=arguments.length,c=1,f=i.f,p=a.f;l>c;)for(var d,v=s(arguments[c++]),m=f?o(v).concat(f(v)):o(v),h=m.length,y=0;h>y;)d=m[y++],r&&!p.call(v,d)||(n[d]=v[d]);return n}:l},82488:(e,t,n)=>{var r=n(30498),o=n(36607),i=n(31986),a=n(18478)("IE_PROTO"),Empty=function(){},createDict=function(){var e,t=n(48765)("iframe"),r=i.length;for(t.style.display="none",n(92477).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),createDict=e.F;r--;)delete createDict.prototype[i[r]];return createDict()};e.exports=Object.create||function create(e,t){var n;return null!==e?(Empty.prototype=r(e),n=new Empty,Empty.prototype=null,n[a]=e):n=createDict(),void 0===t?n:o(n,t)}},60510:(e,t,n)=>{var r=n(30498),o=n(64457),i=n(12737),a=Object.defineProperty;t.f=n(75179)?Object.defineProperty:function defineProperty(e,t,n){if(r(e),t=i(t,!0),r(n),o)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},36607:(e,t,n)=>{var r=n(60510),o=n(30498),i=n(86425);e.exports=n(75179)?Object.defineProperties:function defineProperties(e,t){o(e);for(var n,a=i(t),u=a.length,s=0;u>s;)r.f(e,n=a[s++],t[n]);return e}},83264:(e,t,n)=>{var r=n(67410),o=n(48439),i=n(1504),a=n(12737),u=n(20657),s=n(64457),l=Object.getOwnPropertyDescriptor;t.f=n(75179)?l:function getOwnPropertyDescriptor(e,t){if(e=i(e),t=a(t,!0),s)try{return l(e,t)}catch(e){}if(u(e,t))return o(!r.f.call(e,t),e[t])}},26084:(e,t,n)=>{var r=n(1504),o=n(8772).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function getOwnPropertyNames(e){return a&&"[object Window]"==i.call(e)?function(e){try{return o(e)}catch(e){return a.slice()}}(e):o(r(e))}},8772:(e,t,n)=>{var r=n(65326),o=n(31986).concat("length","prototype");t.f=Object.getOwnPropertyNames||function getOwnPropertyNames(e){return r(e,o)}},97739:(e,t)=>{t.f=Object.getOwnPropertySymbols},999:(e,t,n)=>{var r=n(20657),o=n(60061),i=n(18478)("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),r(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},65326:(e,t,n)=>{var r=n(20657),o=n(1504),i=n(69191)(!1),a=n(18478)("IE_PROTO");e.exports=function(e,t){var n,u=o(e),s=0,l=[];for(n in u)n!=a&&r(u,n)&&l.push(n);for(;t.length>s;)r(u,n=t[s++])&&(~i(l,n)||l.push(n));return l}},86425:(e,t,n)=>{var r=n(65326),o=n(31986);e.exports=Object.keys||function keys(e){return r(e,o)}},67410:(e,t)=>{t.f={}.propertyIsEnumerable},57972:(e,t,n)=>{var r=n(98310),o=n(47208),i=n(90472);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],a={};a[e]=t(n),r(r.S+r.F*i((function(){n(1)})),"Object",a)}},9480:(e,t,n)=>{var r=n(75179),o=n(86425),i=n(1504),a=n(67410).f;e.exports=function(e){return function(t){for(var n,u=i(t),s=o(u),l=s.length,c=0,f=[];l>c;)n=s[c++],r&&!a.call(u,n)||f.push(e?[n,u[n]]:u[n]);return f}}},64344:(e,t,n)=>{var r=n(8772),o=n(97739),i=n(30498),a=n(43280).Reflect;e.exports=a&&a.ownKeys||function ownKeys(e){var t=r.f(i(e)),n=o.f;return n?t.concat(n(e)):t}},60162:(e,t,n)=>{var r=n(43280).parseInt,o=n(71963).trim,i=n(18458),a=/^[-+]?0[xX]/;e.exports=8!==r(i+"08")||22!==r(i+"0x16")?function parseInt(e,t){var n=o(String(e),3);return r(n,t>>>0||(a.test(n)?16:10))}:r},52745:e=>{e.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},88747:(e,t,n)=>{var r=n(30498),o=n(39632),i=n(88579);e.exports=function(e,t){if(r(e),o(t)&&t.constructor===e)return t;var n=i.f(e);return(0,n.resolve)(t),n.promise}},48439:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},13199:(e,t,n)=>{var r=n(62292);e.exports=function(e,t,n){for(var o in t)n&&e[o]?e[o]=t[o]:r(e,o,t[o]);return e}},19312:(e,t,n)=>{e.exports=n(62292)},14689:(e,t,n)=>{"use strict";var r=n(98310),o=n(26610),i=n(61725),a=n(25985);e.exports=function(e){r(r.S,e,{from:function from(e){var t,n,r,u,s=arguments[1];return o(this),(t=void 0!==s)&&o(s),null==e?new this:(n=[],t?(r=0,u=i(s,arguments[2],2),a(e,!1,(function(e){n.push(u(e,r++))}))):a(e,!1,n.push,n),new this(n))}})}},7883:(e,t,n)=>{"use strict";var r=n(98310);e.exports=function(e){r(r.S,e,{of:function of(){for(var e=arguments.length,t=new Array(e);e--;)t[e]=arguments[e];return new this(t)}})}},25574:(e,t,n)=>{var r=n(39632),o=n(30498),check=function(e,t){if(o(e),!r(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,r){try{(r=n(61725)(Function.call,n(83264).f(Object.prototype,"__proto__").set,2))(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function setPrototypeOf(e,n){return check(e,n),t?e.__proto__=n:r(e,n),e}}({},!1):void 0),check}},5698:(e,t,n)=>{"use strict";var r=n(43280),o=n(47208),i=n(60510),a=n(75179),u=n(24300)("species");e.exports=function(e){var t="function"==typeof o[e]?o[e]:r[e];a&&t&&!t[u]&&i.f(t,u,{configurable:!0,get:function(){return this}})}},2413:(e,t,n)=>{var r=n(60510).f,o=n(20657),i=n(24300)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},18478:(e,t,n)=>{var r=n(29990)("keys"),o=n(54251);e.exports=function(e){return r[e]||(r[e]=o(e))}},29990:(e,t,n)=>{var r=n(47208),o=n(43280),i="__core-js_shared__",a=o[i]||(o[i]={});(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n(36794)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},73732:(e,t,n)=>{var r=n(30498),o=n(26610),i=n(24300)("species");e.exports=function(e,t){var n,a=r(e).constructor;return void 0===a||null==(n=r(a)[i])?t:o(n)}},78502:(e,t,n)=>{var r=n(58290),o=n(18239);e.exports=function(e){return function(t,n){var i,a,u=String(o(t)),s=r(n),l=u.length;return s<0||s>=l?e?"":void 0:(i=u.charCodeAt(s))<55296||i>56319||s+1===l||(a=u.charCodeAt(s+1))<56320||a>57343?e?u.charAt(s):i:e?u.slice(s,s+2):a-56320+(i-55296<<10)+65536}}},71963:(e,t,n)=>{var r=n(98310),o=n(18239),i=n(90472),a=n(18458),u="["+a+"]",s=RegExp("^"+u+u+"*"),l=RegExp(u+u+"*$"),exporter=function(e,t,n){var o={},u=i((function(){return!!a[e]()||"​…"!="​…"[e]()})),s=o[e]=u?t(c):a[e];n&&(o[n]=s),r(r.P+r.F*u,"String",o)},c=exporter.trim=function(e,t){return e=String(o(e)),1&t&&(e=e.replace(s,"")),2&t&&(e=e.replace(l,"")),e};e.exports=exporter},18458:e=>{e.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},6022:(e,t,n)=>{var r,o,i,a=n(61725),u=n(19897),s=n(92477),l=n(48765),c=n(43280),f=c.process,p=c.setImmediate,d=c.clearImmediate,v=c.MessageChannel,m=c.Dispatch,h=0,y={},g="onreadystatechange",run=function(){var e=+this;if(y.hasOwnProperty(e)){var t=y[e];delete y[e],t()}},listener=function(e){run.call(e.data)};p&&d||(p=function setImmediate(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return y[++h]=function(){u("function"==typeof e?e:Function(e),t)},r(h),h},d=function clearImmediate(e){delete y[e]},"process"==n(41352)(f)?r=function(e){f.nextTick(a(run,e,1))}:m&&m.now?r=function(e){m.now(a(run,e,1))}:v?(i=(o=new v).port2,o.port1.onmessage=listener,r=a(i.postMessage,i,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts?(r=function(e){c.postMessage(e+"","*")},c.addEventListener("message",listener,!1)):r=g in l("script")?function(e){s.appendChild(l("script")).onreadystatechange=function(){s.removeChild(this),run.call(e)}}:function(e){setTimeout(a(run,e,1),0)}),e.exports={set:p,clear:d}},46723:(e,t,n)=>{var r=n(58290),o=Math.max,i=Math.min;e.exports=function(e,t){return(e=r(e))<0?o(e+t,0):i(e,t)}},58290:e=>{var t=Math.ceil,n=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?n:t)(e)}},1504:(e,t,n)=>{var r=n(13115),o=n(18239);e.exports=function(e){return r(o(e))}},37154:(e,t,n)=>{var r=n(58290),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},60061:(e,t,n)=>{var r=n(18239);e.exports=function(e){return Object(r(e))}},12737:(e,t,n)=>{var r=n(39632);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},54251:e=>{var t=0,n=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+n).toString(36))}},35701:(e,t,n)=>{var r=n(43280).navigator;e.exports=r&&r.userAgent||""},41081:(e,t,n)=>{var r=n(39632);e.exports=function(e,t){if(!r(e)||e._t!==t)throw TypeError("Incompatible receiver, "+t+" required!");return e}},31164:(e,t,n)=>{var r=n(43280),o=n(47208),i=n(36794),a=n(7273),u=n(60510).f;e.exports=function(e){var t=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==e.charAt(0)||e in t||u(t,e,{value:a.f(e)})}},7273:(e,t,n)=>{t.f=n(24300)},24300:(e,t,n)=>{var r=n(29990)("wks"),o=n(54251),i=n(43280).Symbol,a="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=a&&i[e]||(a?i:o)("Symbol."+e))}).store=r},26116:(e,t,n)=>{var r=n(8312),o=n(24300)("iterator"),i=n(79105);e.exports=n(47208).getIteratorMethod=function(e){if(null!=e)return e[o]||e["@@iterator"]||i[r(e)]}},37627:(e,t,n)=>{"use strict";var r=n(61725),o=n(98310),i=n(60061),a=n(93086),u=n(11827),s=n(37154),l=n(87352),c=n(26116);o(o.S+o.F*!n(26797)((function(e){Array.from(e)})),"Array",{from:function from(e){var t,n,o,f,p=i(e),d="function"==typeof this?this:Array,v=arguments.length,m=v>1?arguments[1]:void 0,h=void 0!==m,y=0,g=c(p);if(h&&(m=r(m,v>2?arguments[2]:void 0,2)),null==g||d==Array&&u(g))for(n=new d(t=s(p.length));t>y;y++)l(n,y,h?m(p[y],y):p[y]);else for(f=g.call(p),n=new d;!(o=f.next()).done;y++)l(n,y,h?a(f,m,[o.value,y],!0):o.value);return n.length=y,n}})},42580:(e,t,n)=>{var r=n(98310);r(r.S,"Array",{isArray:n(7359)})},84411:(e,t,n)=>{"use strict";var r=n(29697),o=n(9329),i=n(79105),a=n(1504);e.exports=n(6125)(Array,"Array",(function(e,t){this._t=a(e),this._i=0,this._k=t}),(function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,o(1)):o(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])}),"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},99954:(e,t,n)=>{var r=n(98310);r(r.S+r.F,"Object",{assign:n(77995)})},30785:(e,t,n)=>{var r=n(98310);r(r.S,"Object",{create:n(82488)})},23078:(e,t,n)=>{var r=n(98310);r(r.S+r.F*!n(75179),"Object",{defineProperties:n(36607)})},40168:(e,t,n)=>{var r=n(98310);r(r.S+r.F*!n(75179),"Object",{defineProperty:n(60510).f})},18576:(e,t,n)=>{var r=n(1504),o=n(83264).f;n(57972)("getOwnPropertyDescriptor",(function(){return function getOwnPropertyDescriptor(e,t){return o(r(e),t)}}))},4840:(e,t,n)=>{var r=n(60061),o=n(999);n(57972)("getPrototypeOf",(function(){return function getPrototypeOf(e){return o(r(e))}}))},5453:(e,t,n)=>{var r=n(60061),o=n(86425);n(57972)("keys",(function(){return function keys(e){return o(r(e))}}))},13890:(e,t,n)=>{var r=n(98310);r(r.S,"Object",{setPrototypeOf:n(25574).set})},70285:()=>{},24399:(e,t,n)=>{var r=n(98310),o=n(60162);r(r.G+r.F*(parseInt!=o),{parseInt:o})},86082:(e,t,n)=>{"use strict";var r,o,i,a,u=n(36794),s=n(43280),l=n(61725),c=n(8312),f=n(98310),p=n(39632),d=n(26610),v=n(54677),m=n(25985),h=n(73732),y=n(6022).set,g=n(4326)(),_=n(88579),b=n(52745),x=n(35701),C=n(88747),S="Promise",E=s.TypeError,T=s.process,w=T&&T.versions,P=w&&w.v8||"",O=s.Promise,I="process"==c(T),empty=function(){},R=o=_.f,M=!!function(){try{var e=O.resolve(1),t=(e.constructor={})[n(24300)("species")]=function(e){e(empty,empty)};return(I||"function"==typeof PromiseRejectionEvent)&&e.then(empty)instanceof t&&0!==P.indexOf("6.6")&&-1===x.indexOf("Chrome/66")}catch(e){}}(),isThenable=function(e){var t;return!(!p(e)||"function"!=typeof(t=e.then))&&t},notify=function(e,t){if(!e._n){e._n=!0;var n=e._c;g((function(){for(var r=e._v,o=1==e._s,i=0,run=function(t){var n,i,a,u=o?t.ok:t.fail,s=t.resolve,l=t.reject,c=t.domain;try{u?(o||(2==e._h&&onHandleUnhandled(e),e._h=1),!0===u?n=r:(c&&c.enter(),n=u(r),c&&(c.exit(),a=!0)),n===t.promise?l(E("Promise-chain cycle")):(i=isThenable(n))?i.call(n,s,l):s(n)):l(r)}catch(e){c&&!a&&c.exit(),l(e)}};n.length>i;)run(n[i++]);e._c=[],e._n=!1,t&&!e._h&&onUnhandled(e)}))}},onUnhandled=function(e){y.call(s,(function(){var t,n,r,o=e._v,i=isUnhandled(e);if(i&&(t=b((function(){I?T.emit("unhandledRejection",o,e):(n=s.onunhandledrejection)?n({promise:e,reason:o}):(r=s.console)&&r.error&&r.error("Unhandled promise rejection",o)})),e._h=I||isUnhandled(e)?2:1),e._a=void 0,i&&t.e)throw t.v}))},isUnhandled=function(e){return 1!==e._h&&0===(e._a||e._c).length},onHandleUnhandled=function(e){y.call(s,(function(){var t;I?T.emit("rejectionHandled",e):(t=s.onrejectionhandled)&&t({promise:e,reason:e._v})}))},$reject=function(e){var t=this;t._d||(t._d=!0,(t=t._w||t)._v=e,t._s=2,t._a||(t._a=t._c.slice()),notify(t,!0))},$resolve=function(e){var t,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===e)throw E("Promise can't be resolved itself");(t=isThenable(e))?g((function(){var r={_w:n,_d:!1};try{t.call(e,l($resolve,r,1),l($reject,r,1))}catch(e){$reject.call(r,e)}})):(n._v=e,n._s=1,notify(n,!1))}catch(e){$reject.call({_w:n,_d:!1},e)}}};M||(O=function Promise(e){v(this,O,S,"_h"),d(e),r.call(this);try{e(l($resolve,this,1),l($reject,this,1))}catch(e){$reject.call(this,e)}},(r=function Promise(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(13199)(O.prototype,{then:function then(e,t){var n=R(h(this,O));return n.ok="function"!=typeof e||e,n.fail="function"==typeof t&&t,n.domain=I?T.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&notify(this,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),i=function(){var e=new r;this.promise=e,this.resolve=l($resolve,e,1),this.reject=l($reject,e,1)},_.f=R=function(e){return e===O||e===a?new i(e):o(e)}),f(f.G+f.W+f.F*!M,{Promise:O}),n(2413)(O,S),n(5698)(S),a=n(47208).Promise,f(f.S+f.F*!M,S,{reject:function reject(e){var t=R(this);return(0,t.reject)(e),t.promise}}),f(f.S+f.F*(u||!M),S,{resolve:function resolve(e){return C(u&&this===a?O:this,e)}}),f(f.S+f.F*!(M&&n(26797)((function(e){O.all(e).catch(empty)}))),S,{all:function all(e){var t=this,n=R(t),r=n.resolve,o=n.reject,i=b((function(){var n=[],i=0,a=1;m(e,!1,(function(e){var u=i++,s=!1;n.push(void 0),a++,t.resolve(e).then((function(e){s||(s=!0,n[u]=e,--a||r(n))}),o)})),--a||r(n)}));return i.e&&o(i.v),n.promise},race:function race(e){var t=this,n=R(t),r=n.reject,o=b((function(){m(e,!1,(function(e){t.resolve(e).then(n.resolve,r)}))}));return o.e&&r(o.v),n.promise}})},11320:(e,t,n)=>{var r=n(98310),o=n(82488),i=n(26610),a=n(30498),u=n(39632),s=n(90472),l=n(45515),c=(n(43280).Reflect||{}).construct,f=s((function(){function F(){}return!(c((function(){}),[],F)instanceof F)})),p=!s((function(){c((function(){}))}));r(r.S+r.F*(f||p),"Reflect",{construct:function construct(e,t){i(e),a(t);var n=arguments.length<3?e:i(arguments[2]);if(p&&!f)return c(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return r.push.apply(r,t),new(l.apply(e,r))}var s=n.prototype,d=o(u(s)?s:Object.prototype),v=Function.apply.call(e,d,t);return u(v)?v:d}})},99572:(e,t,n)=>{"use strict";var r=n(78502)(!0);n(6125)(String,"String",(function(e){this._t=String(e),this._i=0}),(function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})}))},54370:(e,t,n)=>{"use strict";var r=n(43280),o=n(20657),i=n(75179),a=n(98310),u=n(19312),s=n(6758).KEY,l=n(90472),c=n(29990),f=n(2413),p=n(54251),d=n(24300),v=n(7273),m=n(31164),h=n(42266),y=n(7359),g=n(30498),_=n(39632),b=n(60061),x=n(1504),C=n(12737),S=n(48439),E=n(82488),T=n(26084),w=n(83264),P=n(97739),O=n(60510),I=n(86425),R=w.f,M=O.f,A=T.f,j=r.Symbol,N=r.JSON,D=N&&N.stringify,B=d("_hidden"),L=d("toPrimitive"),U={}.propertyIsEnumerable,q=c("symbol-registry"),W=c("symbols"),H=c("op-symbols"),G=Object.prototype,$="function"==typeof j&&!!P.f,z=r.QObject,V=!z||!z.prototype||!z.prototype.findChild,K=i&&l((function(){return 7!=E(M({},"a",{get:function(){return M(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=R(G,t);r&&delete G[t],M(e,t,n),r&&e!==G&&M(G,t,r)}:M,wrap=function(e){var t=W[e]=E(j.prototype);return t._k=e,t},J=$&&"symbol"==typeof j.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof j},Y=function defineProperty(e,t,n){return e===G&&Y(H,t,n),g(e),t=C(t,!0),g(n),o(W,t)?(n.enumerable?(o(e,B)&&e[B][t]&&(e[B][t]=!1),n=E(n,{enumerable:S(0,!1)})):(o(e,B)||M(e,B,S(1,{})),e[B][t]=!0),K(e,t,n)):M(e,t,n)},Q=function defineProperties(e,t){g(e);for(var n,r=h(t=x(t)),o=0,i=r.length;i>o;)Y(e,n=r[o++],t[n]);return e},X=function propertyIsEnumerable(e){var t=U.call(this,e=C(e,!0));return!(this===G&&o(W,e)&&!o(H,e))&&(!(t||!o(this,e)||!o(W,e)||o(this,B)&&this[B][e])||t)},Z=function getOwnPropertyDescriptor(e,t){if(e=x(e),t=C(t,!0),e!==G||!o(W,t)||o(H,t)){var n=R(e,t);return!n||!o(W,t)||o(e,B)&&e[B][t]||(n.enumerable=!0),n}},ee=function getOwnPropertyNames(e){for(var t,n=A(x(e)),r=[],i=0;n.length>i;)o(W,t=n[i++])||t==B||t==s||r.push(t);return r},te=function getOwnPropertySymbols(e){for(var t,n=e===G,r=A(n?H:x(e)),i=[],a=0;r.length>a;)!o(W,t=r[a++])||n&&!o(G,t)||i.push(W[t]);return i};$||(u((j=function Symbol(){if(this instanceof j)throw TypeError("Symbol is not a constructor!");var e=p(arguments.length>0?arguments[0]:void 0),$set=function(t){this===G&&$set.call(H,t),o(this,B)&&o(this[B],e)&&(this[B][e]=!1),K(this,e,S(1,t))};return i&&V&&K(G,e,{configurable:!0,set:$set}),wrap(e)}).prototype,"toString",(function toString(){return this._k})),w.f=Z,O.f=Y,n(8772).f=T.f=ee,n(67410).f=X,P.f=te,i&&!n(36794)&&u(G,"propertyIsEnumerable",X,!0),v.f=function(e){return wrap(d(e))}),a(a.G+a.W+a.F*!$,{Symbol:j});for(var ne="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),re=0;ne.length>re;)d(ne[re++]);for(var oe=I(d.store),ie=0;oe.length>ie;)m(oe[ie++]);a(a.S+a.F*!$,"Symbol",{for:function(e){return o(q,e+="")?q[e]:q[e]=j(e)},keyFor:function keyFor(e){if(!J(e))throw TypeError(e+" is not a symbol!");for(var t in q)if(q[t]===e)return t},useSetter:function(){V=!0},useSimple:function(){V=!1}}),a(a.S+a.F*!$,"Object",{create:function create(e,t){return void 0===t?E(e):Q(E(e),t)},defineProperty:Y,defineProperties:Q,getOwnPropertyDescriptor:Z,getOwnPropertyNames:ee,getOwnPropertySymbols:te});var ae=l((function(){P.f(1)}));a(a.S+a.F*ae,"Object",{getOwnPropertySymbols:function getOwnPropertySymbols(e){return P.f(b(e))}}),N&&a(a.S+a.F*(!$||l((function(){var e=j();return"[null]"!=D([e])||"{}"!=D({a:e})||"{}"!=D(Object(e))}))),"JSON",{stringify:function stringify(e){for(var t,n,r=[e],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=t=r[1],(_(t)||void 0!==e)&&!J(e))return y(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!J(t))return t}),r[1]=t,D.apply(N,r)}}),j.prototype[L]||n(62292)(j.prototype,L,j.prototype.valueOf),f(j,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},23337:(e,t,n)=>{"use strict";var r,o=n(43280),i=n(97647)(0),a=n(19312),u=n(6758),s=n(77995),l=n(92600),c=n(39632),f=n(41081),p=n(41081),d=!o.ActiveXObject&&"ActiveXObject"in o,v="WeakMap",m=u.getWeak,h=Object.isExtensible,y=l.ufstore,wrapper=function(e){return function WeakMap(){return e(this,arguments.length>0?arguments[0]:void 0)}},g={get:function get(e){if(c(e)){var t=m(e);return!0===t?y(f(this,v)).get(e):t?t[this._i]:void 0}},set:function set(e,t){return l.def(f(this,v),e,t)}},_=e.exports=n(70770)(v,wrapper,g,l,!0,!0);p&&d&&(s((r=l.getConstructor(wrapper,v)).prototype,g),u.NEED=!0,i(["delete","has","get","set"],(function(e){var t=_.prototype,n=t[e];a(t,e,(function(t,o){if(c(t)&&!h(t)){this._f||(this._f=new r);var i=this._f[e](t,o);return"set"==e?this:i}return n.call(this,t,o)}))})))},67685:(e,t,n)=>{var r=n(98310),o=n(64344),i=n(1504),a=n(83264),u=n(87352);r(r.S,"Object",{getOwnPropertyDescriptors:function getOwnPropertyDescriptors(e){for(var t,n,r=i(e),s=a.f,l=o(r),c={},f=0;l.length>f;)void 0!==(n=s(r,t=l[f++]))&&u(c,t,n);return c}})},57188:(e,t,n)=>{var r=n(98310),o=n(9480)(!1);r(r.S,"Object",{values:function values(e){return o(e)}})},81522:(e,t,n)=>{"use strict";var r=n(98310),o=n(47208),i=n(43280),a=n(73732),u=n(88747);r(r.P+r.R,"Promise",{finally:function(e){var t=a(this,o.Promise||i.Promise),n="function"==typeof e;return this.then(n?function(n){return u(t,e()).then((function(){return n}))}:e,n?function(n){return u(t,e()).then((function(){throw n}))}:e)}})},25757:(e,t,n)=>{"use strict";var r=n(98310),o=n(88579),i=n(52745);r(r.S,"Promise",{try:function(e){var t=o.f(this),n=i(e);return(n.e?t.reject:t.resolve)(n.v),t.promise}})},87573:(e,t,n)=>{n(31164)("asyncIterator")},97224:(e,t,n)=>{n(31164)("observable")},92797:(e,t,n)=>{n(14689)("WeakMap")},10143:(e,t,n)=>{n(7883)("WeakMap")},74114:(e,t,n)=>{n(84411);for(var r=n(43280),o=n(62292),i=n(79105),a=n(24300)("toStringTag"),u="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),s=0;s<u.length;s++){var l=u[s],c=r[l],f=c&&c.prototype;f&&!f[a]&&o(f,a,l),i[l]=i.Array}},22761:e=>{e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},42094:(e,t,n)=>{var r=n(62190)("unscopables"),o=Array.prototype;null==o[r]&&n(74216)(o,r,{}),e.exports=function(e){o[r][e]=!0}},88492:(e,t,n)=>{"use strict";var r=n(12070)(!0);e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},6365:(e,t,n)=>{var r=n(67334);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},59021:(e,t,n)=>{var r=n(15703),o=n(26078),i=n(78615);e.exports=function(e){return function(t,n,a){var u,s=r(t),l=o(s.length),c=i(a,l);if(e&&n!=n){for(;l>c;)if((u=s[c++])!=u)return!0}else for(;l>c;c++)if((e||c in s)&&s[c]===n)return e||c||0;return!e&&-1}}},78309:(e,t,n)=>{var r=n(11528),o=n(8467),i=n(26033),a=n(26078),u=n(63531);e.exports=function(e,t){var n=1==e,s=2==e,l=3==e,c=4==e,f=6==e,p=5==e||f,d=t||u;return function(t,u,v){for(var m,h,y=i(t),g=o(y),_=r(u,v,3),b=a(g.length),x=0,C=n?d(t,b):s?d(t,0):void 0;b>x;x++)if((p||x in g)&&(h=_(m=g[x],x,y),e))if(n)C[x]=h;else if(h)switch(e){case 3:return!0;case 5:return m;case 6:return x;case 2:C.push(m)}else if(c)return!1;return f?-1:l||c?c:C}}},81071:(e,t,n)=>{var r=n(67334),o=n(99141),i=n(62190)("species");e.exports=function(e){var t;return o(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!o(t.prototype)||(t=void 0),r(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},63531:(e,t,n)=>{var r=n(81071);e.exports=function(e,t){return new(r(e))(t)}},20106:(e,t,n)=>{var r=n(26688),o=n(62190)("toStringTag"),i="Arguments"==r(function(){return arguments}());e.exports=function(e){var t,n,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?n:i?r(t):"Object"==(a=r(t))&&"function"==typeof t.callee?"Arguments":a}},26688:e=>{var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},60066:e=>{var t=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=t)},11528:(e,t,n)=>{var r=n(22761);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},61622:e=>{e.exports=function(e){if(null==e)throw TypeError("Can't call method on  "+e);return e}},36628:(e,t,n)=>{e.exports=!n(48625)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},5050:(e,t,n)=>{var r=n(67334),o=n(38113).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},65772:(e,t,n)=>{var r=n(38113),o=n(60066),i=n(74216),a=n(17738),u=n(11528),$export=function(e,t,n){var s,l,c,f,p=e&$export.F,d=e&$export.G,v=e&$export.S,m=e&$export.P,h=e&$export.B,y=d?r:v?r[t]||(r[t]={}):(r[t]||{}).prototype,g=d?o:o[t]||(o[t]={}),_=g.prototype||(g.prototype={});for(s in d&&(n=t),n)c=((l=!p&&y&&void 0!==y[s])?y:n)[s],f=h&&l?u(c,r):m&&"function"==typeof c?u(Function.call,c):c,y&&a(y,s,c,e&$export.U),g[s]!=c&&i(g,s,f),m&&_[s]!=c&&(_[s]=c)};r.core=o,$export.F=1,$export.G=2,$export.S=4,$export.P=8,$export.B=16,$export.W=32,$export.U=64,$export.R=128,e.exports=$export},86570:(e,t,n)=>{var r=n(62190)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[r]=!1,!"/./"[e](t)}catch(e){}}return!0}},48625:e=>{e.exports=function(e){try{return!!e()}catch(e){return!0}}},48897:(e,t,n)=>{"use strict";n(25846);var r=n(17738),o=n(74216),i=n(48625),a=n(61622),u=n(62190),s=n(43288),l=u("species"),c=!i((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")})),f=function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();e.exports=function(e,t,n){var p=u(e),d=!i((function(){var t={};return t[p]=function(){return 7},7!=""[e](t)})),v=d?!i((function(){var t=!1,n=/a/;return n.exec=function(){return t=!0,null},"split"===e&&(n.constructor={},n.constructor[l]=function(){return n}),n[p](""),!t})):void 0;if(!d||!v||"replace"===e&&!c||"split"===e&&!f){var m=/./[p],h=n(a,p,""[e],(function maybeCallNative(e,t,n,r,o){return t.exec===s?d&&!o?{done:!0,value:m.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}})),y=h[0],g=h[1];r(String.prototype,e,y),o(RegExp.prototype,p,2==t?function(e,t){return g.call(e,this,t)}:function(e){return g.call(e,this)})}}},74859:(e,t,n)=>{"use strict";var r=n(6365);e.exports=function(){var e=r(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},20646:(e,t,n)=>{e.exports=n(8655)("native-function-to-string",Function.toString)},38113:e=>{var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},54040:e=>{var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},74216:(e,t,n)=>{var r=n(98558),o=n(36061);e.exports=n(36628)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},5100:(e,t,n)=>{e.exports=!n(36628)&&!n(48625)((function(){return 7!=Object.defineProperty(n(5050)("div"),"a",{get:function(){return 7}}).a}))},8467:(e,t,n)=>{var r=n(26688);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},99141:(e,t,n)=>{var r=n(26688);e.exports=Array.isArray||function isArray(e){return"Array"==r(e)}},67334:e=>{e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},94587:(e,t,n)=>{var r=n(67334),o=n(26688),i=n(62190)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[i])?!!t:"RegExp"==o(e))}},81422:e=>{e.exports=!1},98558:(e,t,n)=>{var r=n(6365),o=n(5100),i=n(31382),a=Object.defineProperty;t.f=n(36628)?Object.defineProperty:function defineProperty(e,t,n){if(r(e),t=i(t,!0),r(n),o)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},36061:e=>{e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},17738:(e,t,n)=>{var r=n(38113),o=n(74216),i=n(54040),a=n(25078)("src"),u=n(20646),s="toString",l=(""+u).split(s);n(60066).inspectSource=function(e){return u.call(e)},(e.exports=function(e,t,n,u){var s="function"==typeof n;s&&(i(n,"name")||o(n,"name",t)),e[t]!==n&&(s&&(i(n,a)||o(n,a,e[t]?""+e[t]:l.join(String(t)))),e===r?e[t]=n:u?e[t]?e[t]=n:o(e,t,n):(delete e[t],o(e,t,n)))})(Function.prototype,s,(function toString(){return"function"==typeof this&&this[a]||u.call(this)}))},62404:(e,t,n)=>{"use strict";var r=n(20106),o=RegExp.prototype.exec;e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var i=n.call(e,t);if("object"!=typeof i)throw new TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(e))throw new TypeError("RegExp#exec called on incompatible receiver");return o.call(e,t)}},43288:(e,t,n)=>{"use strict";var r,o,i=n(74859),a=RegExp.prototype.exec,u=String.prototype.replace,s=a,l=(r=/a/,o=/b*/g,a.call(r,"a"),a.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),c=void 0!==/()??/.exec("")[1];(l||c)&&(s=function exec(e){var t,n,r,o,s=this;return c&&(n=new RegExp("^"+s.source+"$(?!\\s)",i.call(s))),l&&(t=s.lastIndex),r=a.call(s,e),l&&r&&(s.lastIndex=s.global?r.index+r[0].length:t),c&&r&&r.length>1&&u.call(r[0],n,(function(){for(o=1;o<arguments.length-2;o++)void 0===arguments[o]&&(r[o]=void 0)})),r}),e.exports=s},8655:(e,t,n)=>{var r=n(60066),o=n(38113),i="__core-js_shared__",a=o[i]||(o[i]={});(e.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n(81422)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},10225:(e,t,n)=>{"use strict";var r=n(48625);e.exports=function(e,t){return!!e&&r((function(){t?e.call(null,(function(){}),1):e.call(null)}))}},12070:(e,t,n)=>{var r=n(3338),o=n(61622);e.exports=function(e){return function(t,n){var i,a,u=String(o(t)),s=r(n),l=u.length;return s<0||s>=l?e?"":void 0:(i=u.charCodeAt(s))<55296||i>56319||s+1===l||(a=u.charCodeAt(s+1))<56320||a>57343?e?u.charAt(s):i:e?u.slice(s,s+2):a-56320+(i-55296<<10)+65536}}},465:(e,t,n)=>{var r=n(94587),o=n(61622);e.exports=function(e,t,n){if(r(t))throw TypeError("String#"+n+" doesn't accept regex!");return String(o(e))}},65776:(e,t,n)=>{var r=n(65772),o=n(48625),i=n(61622),a=/"/g,createHTML=function(e,t,n,r){var o=String(i(e)),u="<"+t;return""!==n&&(u+=" "+n+'="'+String(r).replace(a,"&quot;")+'"'),u+">"+o+"</"+t+">"};e.exports=function(e,t){var n={};n[e]=t(createHTML),r(r.P+r.F*o((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3})),"String",n)}},78615:(e,t,n)=>{var r=n(3338),o=Math.max,i=Math.min;e.exports=function(e,t){return(e=r(e))<0?o(e+t,0):i(e,t)}},3338:e=>{var t=Math.ceil,n=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?n:t)(e)}},15703:(e,t,n)=>{var r=n(8467),o=n(61622);e.exports=function(e){return r(o(e))}},26078:(e,t,n)=>{var r=n(3338),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},26033:(e,t,n)=>{var r=n(61622);e.exports=function(e){return Object(r(e))}},31382:(e,t,n)=>{var r=n(67334);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},25078:e=>{var t=0,n=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+n).toString(36))}},62190:(e,t,n)=>{var r=n(8655)("wks"),o=n(25078),i=n(38113).Symbol,a="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=a&&i[e]||(a?i:o)("Symbol."+e))}).store=r},64434:(e,t,n)=>{"use strict";var r=n(65772),o=n(78309)(2);r(r.P+r.F*!n(10225)([].filter,!0),"Array",{filter:function filter(e){return o(this,e,arguments[1])}})},71954:(e,t,n)=>{"use strict";var r=n(65772),o=n(78309)(5),i="find",a=!0;i in[]&&Array(1).find((function(){a=!1})),r(r.P+r.F*a,"Array",{find:function find(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),n(42094)(i)},90286:(e,t,n)=>{"use strict";var r=n(65772),o=n(78309)(1);r(r.P+r.F*!n(10225)([].map,!0),"Array",{map:function map(e){return o(this,e,arguments[1])}})},99745:(e,t,n)=>{var r=n(98558).f,o=Function.prototype,i=/^\s*function ([^ (]*)/,a="name";a in o||n(36628)&&r(o,a,{configurable:!0,get:function(){try{return(""+this).match(i)[1]}catch(e){return""}}})},76139:(e,t,n)=>{"use strict";var r=n(20106),o={};o[n(62190)("toStringTag")]="z",o+""!="[object z]"&&n(17738)(Object.prototype,"toString",(function toString(){return"[object "+r(this)+"]"}),!0)},25846:(e,t,n)=>{"use strict";var r=n(43288);n(65772)({target:"RegExp",proto:!0,forced:r!==/./.exec},{exec:r})},40751:(e,t,n)=>{n(36628)&&"g"!=/./g.flags&&n(98558).f(RegExp.prototype,"flags",{configurable:!0,get:n(74859)})},84208:(e,t,n)=>{"use strict";var r=n(6365),o=n(26033),i=n(26078),a=n(3338),u=n(88492),s=n(62404),l=Math.max,c=Math.min,f=Math.floor,p=/\$([$&`']|\d\d?|<[^>]*>)/g,d=/\$([$&`']|\d\d?)/g;n(48897)("replace",2,(function(e,t,n,v){return[function replace(r,o){var i=e(this),a=null==r?void 0:r[t];return void 0!==a?a.call(r,i,o):n.call(String(i),r,o)},function(e,t){var o=v(n,e,this,t);if(o.done)return o.value;var f=r(e),p=String(this),d="function"==typeof t;d||(t=String(t));var m=f.global;if(m){var h=f.unicode;f.lastIndex=0}for(var y=[];;){var g=s(f,p);if(null===g)break;if(y.push(g),!m)break;""===String(g[0])&&(f.lastIndex=u(p,i(f.lastIndex),h))}for(var _,b="",x=0,C=0;C<y.length;C++){g=y[C];for(var S=String(g[0]),E=l(c(a(g.index),p.length),0),T=[],w=1;w<g.length;w++)T.push(void 0===(_=g[w])?_:String(_));var P=g.groups;if(d){var O=[S].concat(T,E,p);void 0!==P&&O.push(P);var I=String(t.apply(void 0,O))}else I=getSubstitution(S,p,E,T,P,t);E>=x&&(b+=p.slice(x,E)+I,x=E+S.length)}return b+p.slice(x)}];function getSubstitution(e,t,r,i,a,u){var s=r+e.length,l=i.length,c=d;return void 0!==a&&(a=o(a),c=p),n.call(u,c,(function(n,o){var u;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,r);case"'":return t.slice(s);case"<":u=a[o.slice(1,-1)];break;default:var c=+o;if(0===c)return n;if(c>l){var p=f(c/10);return 0===p?n:p<=l?void 0===i[p-1]?o.charAt(1):i[p-1]+o.charAt(1):n}u=i[c-1]}return void 0===u?"":u}))}}))},44321:(e,t,n)=>{"use strict";n(40751);var r=n(6365),o=n(74859),i=n(36628),a="toString",u=/./.toString,define=function(e){n(17738)(RegExp.prototype,a,e,!0)};n(48625)((function(){return"/a/b"!=u.call({source:"a",flags:"b"})}))?define((function toString(){var e=r(this);return"/".concat(e.source,"/","flags"in e?e.flags:!i&&e instanceof RegExp?o.call(e):void 0)})):u.name!=a&&define((function toString(){return u.call(this)}))},3777:(e,t,n)=>{"use strict";var r=n(65772),o=n(465),i="includes";r(r.P+r.F*n(86570)(i),"String",{includes:function includes(e){return!!~o(this,e,i).indexOf(e,arguments.length>1?arguments[1]:void 0)}})},10195:(e,t,n)=>{"use strict";n(65776)("sub",(function(e){return function sub(){return e(this,"sub","","")}}))},38081:(e,t,n)=>{"use strict";var r=n(65772),o=n(59021)(!0);r(r.P,"Array",{includes:function includes(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),n(42094)("includes")},24457:(e,t,n)=>{"use strict";t.__esModule=!0;var r=n(63804),o=(_interopRequireDefault(r),_interopRequireDefault(n(23615))),i=_interopRequireDefault(n(51230));_interopRequireDefault(n(91895));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var a=1073741823;function createEventEmitter(e){var t=[];return{on:function on(e){t.push(e)},off:function off(e){t=t.filter((function(t){return t!==e}))},get:function get(){return e},set:function set(n,r){e=n,t.forEach((function(t){return t(e,r)}))}}}t.default=function createReactContext(e,t){var n,u,s="__create-react-context-"+(0,i.default)()+"__",l=function(e){function Provider(){var t,n;_classCallCheck(this,Provider);for(var r=arguments.length,o=Array(r),i=0;i<r;i++)o[i]=arguments[i];return t=n=_possibleConstructorReturn(this,e.call.apply(e,[this].concat(o))),n.emitter=createEventEmitter(n.props.value),_possibleConstructorReturn(n,t)}return _inherits(Provider,e),Provider.prototype.getChildContext=function getChildContext(){var e;return(e={})[s]=this.emitter,e},Provider.prototype.componentWillReceiveProps=function componentWillReceiveProps(e){if(this.props.value!==e.value){var n=this.props.value,r=e.value,o=void 0;!function objectIs(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}(n,r)?(o="function"==typeof t?t(n,r):a,0!==(o|=0)&&this.emitter.set(e.value,o)):o=0}},Provider.prototype.render=function render(){return this.props.children},Provider}(r.Component);l.childContextTypes=((n={})[s]=o.default.object.isRequired,n);var c=function(t){function Consumer(){var e,n;_classCallCheck(this,Consumer);for(var r=arguments.length,o=Array(r),i=0;i<r;i++)o[i]=arguments[i];return e=n=_possibleConstructorReturn(this,t.call.apply(t,[this].concat(o))),n.state={value:n.getValue()},n.onUpdate=function(e,t){0!=((0|n.observedBits)&t)&&n.setState({value:n.getValue()})},_possibleConstructorReturn(n,e)}return _inherits(Consumer,t),Consumer.prototype.componentWillReceiveProps=function componentWillReceiveProps(e){var t=e.observedBits;this.observedBits=null==t?a:t},Consumer.prototype.componentDidMount=function componentDidMount(){this.context[s]&&this.context[s].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?a:e},Consumer.prototype.componentWillUnmount=function componentWillUnmount(){this.context[s]&&this.context[s].off(this.onUpdate)},Consumer.prototype.getValue=function getValue(){return this.context[s]?this.context[s].get():e},Consumer.prototype.render=function render(){return function onlyChild(e){return Array.isArray(e)?e[0]:e}(this.props.children)(this.state.value)},Consumer}(r.Component);return c.contextTypes=((u={})[s]=o.default.object,u),{Provider:l,Consumer:c}},e.exports=t.default},68189:(e,t,n)=>{"use strict";t.__esModule=!0;var r=_interopRequireDefault(n(63804)),o=_interopRequireDefault(n(24457));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}t.default=r.default.createContext||o.default,e.exports=t.default},51230:(e,t,n)=>{"use strict";var r="__global_unique_id__";e.exports=function(){return n.g[r]=(n.g[r]||0)+1}},3996:e=>{"use strict";e.exports=function(e,t,n,r,o,i,a,u){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,r,o,i,a,u],c=0;(s=new Error(t.replace(/%s/g,(function(){return l[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},58772:(e,t,n)=>{"use strict";var r=n(90331);function emptyFunction(){}function emptyFunctionWithReset(){}emptyFunctionWithReset.resetWarningCache=emptyFunction,e.exports=function(){function shim(e,t,n,o,i,a){if(a!==r){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function getShim(){return shim}shim.isRequired=shim;var e={array:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,elementType:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim,checkPropTypes:emptyFunctionWithReset,resetWarningCache:emptyFunction};return e.PropTypes=e,e}},23615:(e,t,n)=>{e.exports=n(58772)()},90331:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},91895:e=>{"use strict";var warning=function(){};e.exports=warning},63804:e=>{"use strict";e.exports=React},78675:e=>{"use strict";e.exports=elementorAppPackages.appUi},20485:e=>{"use strict";e.exports=elementorAppPackages.router},34381:e=>{"use strict";e.exports=elementorAppPackages.siteEditor},18194:e=>{"use strict";e.exports=wp.i18n}},t={};function __webpack_require__(n){var r=t[n];if(void 0!==r)return r.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,__webpack_require__),o.exports}__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";new(__webpack_require__(67971)(__webpack_require__(71143)).default)})()})();assets/js/countdown.71f117e09cc4a2aa3dba.bundle.min.js000064400000005145150755004310016113 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[804],{7097:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=elementorModules.frontend.handlers.Base.extend({cache:null,cacheElements(){const e=this.$element.find(".elementor-countdown-wrapper");this.cache={$countDown:e,timeInterval:null,elements:{$countdown:e.find(".elementor-countdown-wrapper"),$daysSpan:e.find(".elementor-countdown-days"),$hoursSpan:e.find(".elementor-countdown-hours"),$minutesSpan:e.find(".elementor-countdown-minutes"),$secondsSpan:e.find(".elementor-countdown-seconds"),$expireMessage:e.parent().find(".elementor-countdown-expire--message")},data:{id:this.$element.data("id"),endTime:new Date(1e3*e.data("date")),actions:e.data("expire-actions"),evergreenInterval:e.data("evergreen-interval")}}},onInit(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.cacheElements(),0<this.cache.data.evergreenInterval&&(this.cache.data.endTime=this.getEvergreenDate()),this.initializeClock()},updateClock(){const e=this,t=this.getTimeRemaining(this.cache.data.endTime);jQuery.each(t.parts,(function(t){const n=e.cache.elements["$"+t+"Span"];let a=this.toString();1===a.length&&(a=0+a),n.length&&n.text(a)})),t.total<=0&&(clearInterval(this.cache.timeInterval),this.runActions())},initializeClock(){const e=this;this.updateClock(),this.cache.timeInterval=setInterval((function(){e.updateClock()}),1e3)},runActions(){const e=this;e.$element.trigger("countdown_expire",e.$element),this.cache.data.actions&&this.cache.data.actions.forEach((function(t){switch(t.type){case"hide":e.cache.$countDown.hide();break;case"redirect":t.redirect_url&&(window.location.href=t.redirect_url);break;case"message":e.cache.elements.$expireMessage.show()}}))},getTimeRemaining(e){const t=e-new Date;let n=Math.floor(t/1e3%60),a=Math.floor(t/1e3/60%60),r=Math.floor(t/36e5%24),o=Math.floor(t/864e5);return(o<0||r<0||a<0)&&(n=a=r=o=0),{total:t,parts:{days:o,hours:r,minutes:a,seconds:n}}},getEvergreenDate(){const e=this,t=this.cache.data.id,n=this.cache.data.evergreenInterval,a=t+"-evergreen_due_date",r=t+"-evergreen_interval",o={dueDate:localStorage.getItem(a),interval:localStorage.getItem(r)},initEvergreen=function(){var t=new Date;return e.cache.data.endTime=t.setSeconds(t.getSeconds()+n),localStorage.setItem(a,e.cache.data.endTime),localStorage.setItem(r,n),e.cache.data.endTime};return null===o.dueDate&&null===o.interval||null!==o.dueDate&&n!==parseInt(o.interval,10)?initEvergreen():o.dueDate>0&&parseInt(o.interval,10)===n?o.dueDate:void 0}});t.default=n}}]);assets/js/screenshot.min.js000064400000155304150755004310011767 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(()=>{var t={75453:(t,e,r)=>{t.exports=r(7421)},59396:(t,e,r)=>{t.exports=r(70157)},38401:(t,e,r)=>{t.exports=r(14710)},92937:(t,e,r)=>{t.exports=r(23022)},67394:(t,e,r)=>{t.exports=r(43153)},23587:(t,e,r)=>{t.exports=r(32622)},63774:(t,e,r)=>{t.exports=r(27410)},95315:(t,e,r)=>{t.exports=r(19035)},82055:(t,e,r)=>{t.exports=r(58535)},83452:(t,e,r)=>{t.exports=r(97220)},28274:(t,e,r)=>{t.exports=r(65135)},73220:(t,e,r)=>{t.exports=r(76483)},75499:(t,e,r)=>{t.exports=r(43094)},78282:(t,e,r)=>{t.exports=r(17641)},41281:(t,e,r)=>{t.exports=r(19103)},50093:(t,e,r)=>{t.exports=r(39871)},72292:t=>{t.exports=function _arrayLikeToArray(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n},t.exports.default=t.exports,t.exports.__esModule=!0},35693:(t,e,r)=>{var n=r(59396),o=r(72292);t.exports=function _arrayWithoutHoles(t){if(n(t))return o(t)},t.exports.default=t.exports,t.exports.__esModule=!0},38852:t=>{t.exports=function _assertThisInitialized(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t},t.exports.default=t.exports,t.exports.__esModule=!0},11959:t=>{t.exports=function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.default=t.exports,t.exports.__esModule=!0},39041:(t,e,r)=>{var n=r(67394);function _defineProperties(t,e){for(var r=0;r<e.length;r++){var o=e[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),n(t,o.key,o)}}t.exports=function _createClass(t,e,r){return e&&_defineProperties(t.prototype,e),r&&_defineProperties(t,r),t},t.exports.default=t.exports,t.exports.__esModule=!0},68537:(t,e,r)=>{var n=r(75499),o=r(44263),i=r(898),s=r(59771);t.exports=function _createSuper(t){var e=i();return function _createSuperInternal(){var r,i=o(t);if(e){var u=o(this).constructor;r=n(i,arguments,u)}else r=i.apply(this,arguments);return s(this,r)}},t.exports.default=t.exports,t.exports.__esModule=!0},18042:(t,e,r)=>{var n=r(67394);t.exports=function _defineProperty(t,e,r){return e in t?n(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t},t.exports.default=t.exports,t.exports.__esModule=!0},76700:(t,e,r)=>{var n=r(78282),o=r(23587),i=r(49445);function _get(e,r,s){return"undefined"!=typeof Reflect&&n?(t.exports=_get=n,t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=_get=function _get(t,e,r){var n=i(t,e);if(n){var s=o(n,e);return s.get?s.get.call(r):s.value}},t.exports.default=t.exports,t.exports.__esModule=!0),_get(e,r,s||e)}t.exports=_get,t.exports.default=t.exports,t.exports.__esModule=!0},44263:(t,e,r)=>{var n=r(28274),o=r(82055);function _getPrototypeOf(e){return t.exports=_getPrototypeOf=n?o:function _getPrototypeOf(t){return t.__proto__||o(t)},t.exports.default=t.exports,t.exports.__esModule=!0,_getPrototypeOf(e)}t.exports=_getPrototypeOf,t.exports.default=t.exports,t.exports.__esModule=!0},77371:(t,e,r)=>{var n=r(38401),o=r(76870);t.exports=function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=n(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)},t.exports.default=t.exports,t.exports.__esModule=!0},67971:t=>{t.exports=function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}},t.exports.default=t.exports,t.exports.__esModule=!0},898:(t,e,r)=>{var n=r(75499);t.exports=function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!n)return!1;if(n.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(n(Boolean,[],(function(){}))),!0}catch(t){return!1}},t.exports.default=t.exports,t.exports.__esModule=!0},95915:(t,e,r)=>{var n=r(41281),o=r(50093),i=r(75453);t.exports=function _iterableToArray(t){if(void 0!==n&&null!=t[o]||null!=t["@@iterator"])return i(t)},t.exports.default=t.exports,t.exports.__esModule=!0},84360:t=>{t.exports=function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.default=t.exports,t.exports.__esModule=!0},84899:(t,e,r)=>{var n=r(83452),o=r(95315),i=r(23587),s=r(63774),u=r(92937),a=r(67394),c=r(18042);function ownKeys(t,e){var r=n(t);if(o){var s=o(t);e&&(s=s.filter((function(e){return i(t,e).enumerable}))),r.push.apply(r,s)}return r}t.exports=function _objectSpread2(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(r),!0).forEach((function(e){c(t,e,r[e])})):s?u(t,s(r)):ownKeys(Object(r)).forEach((function(e){a(t,e,i(r,e))}))}return t},t.exports.default=t.exports,t.exports.__esModule=!0},59771:(t,e,r)=>{var n=r(24596).default,o=r(38852);t.exports=function _possibleConstructorReturn(t,e){return!e||"object"!==n(e)&&"function"!=typeof e?o(t):e},t.exports.default=t.exports,t.exports.__esModule=!0},76870:(t,e,r)=>{var n=r(28274);function _setPrototypeOf(e,r){return t.exports=_setPrototypeOf=n||function _setPrototypeOf(t,e){return t.__proto__=e,t},t.exports.default=t.exports,t.exports.__esModule=!0,_setPrototypeOf(e,r)}t.exports=_setPrototypeOf,t.exports.default=t.exports,t.exports.__esModule=!0},49445:(t,e,r)=>{var n=r(44263);t.exports=function _superPropBase(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=n(t)););return t},t.exports.default=t.exports,t.exports.__esModule=!0},74846:(t,e,r)=>{var n=r(35693),o=r(95915),i=r(24594),s=r(84360);t.exports=function _toConsumableArray(t){return n(t)||o(t)||i(t)||s()},t.exports.default=t.exports,t.exports.__esModule=!0},24596:(t,e,r)=>{var n=r(41281),o=r(50093);function _typeof(e){return"function"==typeof n&&"symbol"==typeof o?(t.exports=_typeof=function _typeof(t){return typeof t},t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=_typeof=function _typeof(t){return t&&"function"==typeof n&&t.constructor===n&&t!==n.prototype?"symbol":typeof t},t.exports.default=t.exports,t.exports.__esModule=!0),_typeof(e)}t.exports=_typeof,t.exports.default=t.exports,t.exports.__esModule=!0},24594:(t,e,r)=>{var n=r(75453),o=r(72292);t.exports=function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return o(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?n(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(t,e):void 0}},t.exports.default=t.exports,t.exports.__esModule=!0},7421:(t,e,r)=>{r(99572),r(37627),t.exports=r(47208).Array.from},70157:(t,e,r)=>{r(42580),t.exports=r(47208).Array.isArray},14710:(t,e,r)=>{r(30785);var n=r(47208).Object;t.exports=function create(t,e){return n.create(t,e)}},23022:(t,e,r)=>{r(23078);var n=r(47208).Object;t.exports=function defineProperties(t,e){return n.defineProperties(t,e)}},43153:(t,e,r)=>{r(40168);var n=r(47208).Object;t.exports=function defineProperty(t,e,r){return n.defineProperty(t,e,r)}},32622:(t,e,r)=>{r(18576);var n=r(47208).Object;t.exports=function getOwnPropertyDescriptor(t,e){return n.getOwnPropertyDescriptor(t,e)}},27410:(t,e,r)=>{r(67685),t.exports=r(47208).Object.getOwnPropertyDescriptors},19035:(t,e,r)=>{r(54370),t.exports=r(47208).Object.getOwnPropertySymbols},58535:(t,e,r)=>{r(4840),t.exports=r(47208).Object.getPrototypeOf},97220:(t,e,r)=>{r(5453),t.exports=r(47208).Object.keys},65135:(t,e,r)=>{r(13890),t.exports=r(47208).Object.setPrototypeOf},76483:(t,e,r)=>{r(70285),r(99572),r(74114),r(86082),r(81522),r(25757),t.exports=r(47208).Promise},43094:(t,e,r)=>{r(11320),t.exports=r(47208).Reflect.construct},17641:(t,e,r)=>{r(36600),t.exports=r(47208).Reflect.get},19103:(t,e,r)=>{r(54370),r(70285),r(87573),r(97224),t.exports=r(47208).Symbol},39871:(t,e,r)=>{r(99572),r(74114),t.exports=r(7273).f("iterator")},26610:t=>{t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},29697:t=>{t.exports=function(){}},54677:t=>{t.exports=function(t,e,r,n){if(!(t instanceof e)||void 0!==n&&n in t)throw TypeError(r+": incorrect invocation!");return t}},30498:(t,e,r)=>{var n=r(39632);t.exports=function(t){if(!n(t))throw TypeError(t+" is not an object!");return t}},69191:(t,e,r)=>{var n=r(1504),o=r(37154),i=r(46723);t.exports=function(t){return function(e,r,s){var u,a=n(e),c=o(a.length),f=i(s,c);if(t&&r!=r){for(;c>f;)if((u=a[f++])!=u)return!0}else for(;c>f;f++)if((t||f in a)&&a[f]===r)return t||f||0;return!t&&-1}}},45515:(t,e,r)=>{"use strict";var n=r(26610),o=r(39632),i=r(19897),s=[].slice,u={},construct=function(t,e,r){if(!(e in u)){for(var n=[],o=0;o<e;o++)n[o]="a["+o+"]";u[e]=Function("F,a","return new F("+n.join(",")+")")}return u[e](t,r)};t.exports=Function.bind||function bind(t){var e=n(this),r=s.call(arguments,1),bound=function(){var n=r.concat(s.call(arguments));return this instanceof bound?construct(e,n.length,n):i(e,n,t)};return o(e.prototype)&&(bound.prototype=e.prototype),bound}},8312:(t,e,r)=>{var n=r(41352),o=r(24300)("toStringTag"),i="Arguments"==n(function(){return arguments}());t.exports=function(t){var e,r,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?r:i?n(e):"Object"==(s=n(e))&&"function"==typeof e.callee?"Arguments":s}},41352:t=>{var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},47208:t=>{var e=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=e)},87352:(t,e,r)=>{"use strict";var n=r(60510),o=r(48439);t.exports=function(t,e,r){e in t?n.f(t,e,o(0,r)):t[e]=r}},61725:(t,e,r)=>{var n=r(26610);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,o){return t.call(e,r,n,o)}}return function(){return t.apply(e,arguments)}}},18239:t=>{t.exports=function(t){if(null==t)throw TypeError("Can't call method on  "+t);return t}},75179:(t,e,r)=>{t.exports=!r(90472)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},48765:(t,e,r)=>{var n=r(39632),o=r(43280).document,i=n(o)&&n(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},31986:t=>{t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},42266:(t,e,r)=>{var n=r(86425),o=r(97739),i=r(67410);t.exports=function(t){var e=n(t),r=o.f;if(r)for(var s,u=r(t),a=i.f,c=0;u.length>c;)a.call(t,s=u[c++])&&e.push(s);return e}},98310:(t,e,r)=>{var n=r(43280),o=r(47208),i=r(61725),s=r(62292),u=r(20657),$export=function(t,e,r){var a,c,f,l=t&$export.F,p=t&$export.G,h=t&$export.S,v=t&$export.P,y=t&$export.B,d=t&$export.W,g=p?o:o[e]||(o[e]={}),_=g.prototype,m=p?n:h?n[e]:(n[e]||{}).prototype;for(a in p&&(r=e),r)(c=!l&&m&&void 0!==m[a])&&u(g,a)||(f=c?m[a]:r[a],g[a]=p&&"function"!=typeof m[a]?r[a]:y&&c?i(f,n):d&&m[a]==f?function(t){var F=function(e,r,n){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,r)}return new t(e,r,n)}return t.apply(this,arguments)};return F.prototype=t.prototype,F}(f):v&&"function"==typeof f?i(Function.call,f):f,v&&((g.virtual||(g.virtual={}))[a]=f,t&$export.R&&_&&!_[a]&&s(_,a,f)))};$export.F=1,$export.G=2,$export.S=4,$export.P=8,$export.B=16,$export.W=32,$export.U=64,$export.R=128,t.exports=$export},90472:t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},25985:(t,e,r)=>{var n=r(61725),o=r(93086),i=r(11827),s=r(30498),u=r(37154),a=r(26116),c={},f={},l=t.exports=function(t,e,r,l,p){var h,v,y,d,g=p?function(){return t}:a(t),_=n(r,l,e?2:1),m=0;if("function"!=typeof g)throw TypeError(t+" is not iterable!");if(i(g)){for(h=u(t.length);h>m;m++)if((d=e?_(s(v=t[m])[0],v[1]):_(t[m]))===c||d===f)return d}else for(y=g.call(t);!(v=y.next()).done;)if((d=o(y,_,v.value,e))===c||d===f)return d};l.BREAK=c,l.RETURN=f},43280:t=>{var e=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},20657:t=>{var e={}.hasOwnProperty;t.exports=function(t,r){return e.call(t,r)}},62292:(t,e,r)=>{var n=r(60510),o=r(48439);t.exports=r(75179)?function(t,e,r){return n.f(t,e,o(1,r))}:function(t,e,r){return t[e]=r,t}},92477:(t,e,r)=>{var n=r(43280).document;t.exports=n&&n.documentElement},64457:(t,e,r)=>{t.exports=!r(75179)&&!r(90472)((function(){return 7!=Object.defineProperty(r(48765)("div"),"a",{get:function(){return 7}}).a}))},19897:t=>{t.exports=function(t,e,r){var n=void 0===r;switch(e.length){case 0:return n?t():t.call(r);case 1:return n?t(e[0]):t.call(r,e[0]);case 2:return n?t(e[0],e[1]):t.call(r,e[0],e[1]);case 3:return n?t(e[0],e[1],e[2]):t.call(r,e[0],e[1],e[2]);case 4:return n?t(e[0],e[1],e[2],e[3]):t.call(r,e[0],e[1],e[2],e[3])}return t.apply(r,e)}},13115:(t,e,r)=>{var n=r(41352);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==n(t)?t.split(""):Object(t)}},11827:(t,e,r)=>{var n=r(79105),o=r(24300)("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(n.Array===t||i[o]===t)}},7359:(t,e,r)=>{var n=r(41352);t.exports=Array.isArray||function isArray(t){return"Array"==n(t)}},39632:t=>{t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},93086:(t,e,r)=>{var n=r(30498);t.exports=function(t,e,r,o){try{return o?e(n(r)[0],r[1]):e(r)}catch(e){var i=t.return;throw void 0!==i&&n(i.call(t)),e}}},19802:(t,e,r)=>{"use strict";var n=r(82488),o=r(48439),i=r(2413),s={};r(62292)(s,r(24300)("iterator"),(function(){return this})),t.exports=function(t,e,r){t.prototype=n(s,{next:o(1,r)}),i(t,e+" Iterator")}},6125:(t,e,r)=>{"use strict";var n=r(36794),o=r(98310),i=r(19312),s=r(62292),u=r(79105),a=r(19802),c=r(2413),f=r(999),l=r(24300)("iterator"),p=!([].keys&&"next"in[].keys()),h="keys",v="values",returnThis=function(){return this};t.exports=function(t,e,r,y,d,g,_){a(r,e,y);var m,x,b,getMethod=function(t){if(!p&&t in P)return P[t];switch(t){case h:return function keys(){return new r(this,t)};case v:return function values(){return new r(this,t)}}return function entries(){return new r(this,t)}},S=e+" Iterator",w=d==v,O=!1,P=t.prototype,j=P[l]||P["@@iterator"]||d&&P[d],k=j||getMethod(d),A=d?w?getMethod("entries"):k:void 0,E="Array"==e&&P.entries||j;if(E&&(b=f(E.call(new t)))!==Object.prototype&&b.next&&(c(b,S,!0),n||"function"==typeof b[l]||s(b,l,returnThis)),w&&j&&j.name!==v&&(O=!0,k=function values(){return j.call(this)}),n&&!_||!p&&!O&&P[l]||s(P,l,k),u[e]=k,u[S]=returnThis,d)if(m={values:w?k:getMethod(v),keys:g?k:getMethod(h),entries:A},_)for(x in m)x in P||i(P,x,m[x]);else o(o.P+o.F*(p||O),e,m);return m}},26797:(t,e,r)=>{var n=r(24300)("iterator"),o=!1;try{var i=[7][n]();i.return=function(){o=!0},Array.from(i,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var r=!1;try{var i=[7],s=i[n]();s.next=function(){return{done:r=!0}},i[n]=function(){return s},t(i)}catch(t){}return r}},9329:t=>{t.exports=function(t,e){return{value:e,done:!!t}}},79105:t=>{t.exports={}},36794:t=>{t.exports=!0},6758:(t,e,r)=>{var n=r(54251)("meta"),o=r(39632),i=r(20657),s=r(60510).f,u=0,a=Object.isExtensible||function(){return!0},c=!r(90472)((function(){return a(Object.preventExtensions({}))})),setMeta=function(t){s(t,n,{value:{i:"O"+ ++u,w:{}}})},f=t.exports={KEY:n,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,n)){if(!a(t))return"F";if(!e)return"E";setMeta(t)}return t[n].i},getWeak:function(t,e){if(!i(t,n)){if(!a(t))return!0;if(!e)return!1;setMeta(t)}return t[n].w},onFreeze:function(t){return c&&f.NEED&&a(t)&&!i(t,n)&&setMeta(t),t}}},4326:(t,e,r)=>{var n=r(43280),o=r(6022).set,i=n.MutationObserver||n.WebKitMutationObserver,s=n.process,u=n.Promise,a="process"==r(41352)(s);t.exports=function(){var t,e,r,flush=function(){var n,o;for(a&&(n=s.domain)&&n.exit();t;){o=t.fn,t=t.next;try{o()}catch(n){throw t?r():e=void 0,n}}e=void 0,n&&n.enter()};if(a)r=function(){s.nextTick(flush)};else if(!i||n.navigator&&n.navigator.standalone)if(u&&u.resolve){var c=u.resolve(void 0);r=function(){c.then(flush)}}else r=function(){o.call(n,flush)};else{var f=!0,l=document.createTextNode("");new i(flush).observe(l,{characterData:!0}),r=function(){l.data=f=!f}}return function(n){var o={fn:n,next:void 0};e&&(e.next=o),t||(t=o,r()),e=o}}},88579:(t,e,r)=>{"use strict";var n=r(26610);function PromiseCapability(t){var e,r;this.promise=new t((function(t,n){if(void 0!==e||void 0!==r)throw TypeError("Bad Promise constructor");e=t,r=n})),this.resolve=n(e),this.reject=n(r)}t.exports.f=function(t){return new PromiseCapability(t)}},82488:(t,e,r)=>{var n=r(30498),o=r(36607),i=r(31986),s=r(18478)("IE_PROTO"),Empty=function(){},createDict=function(){var t,e=r(48765)("iframe"),n=i.length;for(e.style.display="none",r(92477).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),createDict=t.F;n--;)delete createDict.prototype[i[n]];return createDict()};t.exports=Object.create||function create(t,e){var r;return null!==t?(Empty.prototype=n(t),r=new Empty,Empty.prototype=null,r[s]=t):r=createDict(),void 0===e?r:o(r,e)}},60510:(t,e,r)=>{var n=r(30498),o=r(64457),i=r(12737),s=Object.defineProperty;e.f=r(75179)?Object.defineProperty:function defineProperty(t,e,r){if(n(t),e=i(e,!0),n(r),o)try{return s(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[e]=r.value),t}},36607:(t,e,r)=>{var n=r(60510),o=r(30498),i=r(86425);t.exports=r(75179)?Object.defineProperties:function defineProperties(t,e){o(t);for(var r,s=i(e),u=s.length,a=0;u>a;)n.f(t,r=s[a++],e[r]);return t}},83264:(t,e,r)=>{var n=r(67410),o=r(48439),i=r(1504),s=r(12737),u=r(20657),a=r(64457),c=Object.getOwnPropertyDescriptor;e.f=r(75179)?c:function getOwnPropertyDescriptor(t,e){if(t=i(t),e=s(e,!0),a)try{return c(t,e)}catch(t){}if(u(t,e))return o(!n.f.call(t,e),t[e])}},26084:(t,e,r)=>{var n=r(1504),o=r(8772).f,i={}.toString,s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function getOwnPropertyNames(t){return s&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(t){return s.slice()}}(t):o(n(t))}},8772:(t,e,r)=>{var n=r(65326),o=r(31986).concat("length","prototype");e.f=Object.getOwnPropertyNames||function getOwnPropertyNames(t){return n(t,o)}},97739:(t,e)=>{e.f=Object.getOwnPropertySymbols},999:(t,e,r)=>{var n=r(20657),o=r(60061),i=r(18478)("IE_PROTO"),s=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),n(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?s:null}},65326:(t,e,r)=>{var n=r(20657),o=r(1504),i=r(69191)(!1),s=r(18478)("IE_PROTO");t.exports=function(t,e){var r,u=o(t),a=0,c=[];for(r in u)r!=s&&n(u,r)&&c.push(r);for(;e.length>a;)n(u,r=e[a++])&&(~i(c,r)||c.push(r));return c}},86425:(t,e,r)=>{var n=r(65326),o=r(31986);t.exports=Object.keys||function keys(t){return n(t,o)}},67410:(t,e)=>{e.f={}.propertyIsEnumerable},57972:(t,e,r)=>{var n=r(98310),o=r(47208),i=r(90472);t.exports=function(t,e){var r=(o.Object||{})[t]||Object[t],s={};s[t]=e(r),n(n.S+n.F*i((function(){r(1)})),"Object",s)}},64344:(t,e,r)=>{var n=r(8772),o=r(97739),i=r(30498),s=r(43280).Reflect;t.exports=s&&s.ownKeys||function ownKeys(t){var e=n.f(i(t)),r=o.f;return r?e.concat(r(t)):e}},52745:t=>{t.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},88747:(t,e,r)=>{var n=r(30498),o=r(39632),i=r(88579);t.exports=function(t,e){if(n(t),o(e)&&e.constructor===t)return e;var r=i.f(t);return(0,r.resolve)(e),r.promise}},48439:t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},13199:(t,e,r)=>{var n=r(62292);t.exports=function(t,e,r){for(var o in e)r&&t[o]?t[o]=e[o]:n(t,o,e[o]);return t}},19312:(t,e,r)=>{t.exports=r(62292)},25574:(t,e,r)=>{var n=r(39632),o=r(30498),check=function(t,e){if(o(t),!n(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,n){try{(n=r(61725)(Function.call,r(83264).f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function setPrototypeOf(t,r){return check(t,r),e?t.__proto__=r:n(t,r),t}}({},!1):void 0),check}},5698:(t,e,r)=>{"use strict";var n=r(43280),o=r(47208),i=r(60510),s=r(75179),u=r(24300)("species");t.exports=function(t){var e="function"==typeof o[t]?o[t]:n[t];s&&e&&!e[u]&&i.f(e,u,{configurable:!0,get:function(){return this}})}},2413:(t,e,r)=>{var n=r(60510).f,o=r(20657),i=r(24300)("toStringTag");t.exports=function(t,e,r){t&&!o(t=r?t:t.prototype,i)&&n(t,i,{configurable:!0,value:e})}},18478:(t,e,r)=>{var n=r(29990)("keys"),o=r(54251);t.exports=function(t){return n[t]||(n[t]=o(t))}},29990:(t,e,r)=>{var n=r(47208),o=r(43280),i="__core-js_shared__",s=o[i]||(o[i]={});(t.exports=function(t,e){return s[t]||(s[t]=void 0!==e?e:{})})("versions",[]).push({version:n.version,mode:r(36794)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},73732:(t,e,r)=>{var n=r(30498),o=r(26610),i=r(24300)("species");t.exports=function(t,e){var r,s=n(t).constructor;return void 0===s||null==(r=n(s)[i])?e:o(r)}},78502:(t,e,r)=>{var n=r(58290),o=r(18239);t.exports=function(t){return function(e,r){var i,s,u=String(o(e)),a=n(r),c=u.length;return a<0||a>=c?t?"":void 0:(i=u.charCodeAt(a))<55296||i>56319||a+1===c||(s=u.charCodeAt(a+1))<56320||s>57343?t?u.charAt(a):i:t?u.slice(a,a+2):s-56320+(i-55296<<10)+65536}}},6022:(t,e,r)=>{var n,o,i,s=r(61725),u=r(19897),a=r(92477),c=r(48765),f=r(43280),l=f.process,p=f.setImmediate,h=f.clearImmediate,v=f.MessageChannel,y=f.Dispatch,d=0,g={},_="onreadystatechange",run=function(){var t=+this;if(g.hasOwnProperty(t)){var e=g[t];delete g[t],e()}},listener=function(t){run.call(t.data)};p&&h||(p=function setImmediate(t){for(var e=[],r=1;arguments.length>r;)e.push(arguments[r++]);return g[++d]=function(){u("function"==typeof t?t:Function(t),e)},n(d),d},h=function clearImmediate(t){delete g[t]},"process"==r(41352)(l)?n=function(t){l.nextTick(s(run,t,1))}:y&&y.now?n=function(t){y.now(s(run,t,1))}:v?(i=(o=new v).port2,o.port1.onmessage=listener,n=s(i.postMessage,i,1)):f.addEventListener&&"function"==typeof postMessage&&!f.importScripts?(n=function(t){f.postMessage(t+"","*")},f.addEventListener("message",listener,!1)):n=_ in c("script")?function(t){a.appendChild(c("script")).onreadystatechange=function(){a.removeChild(this),run.call(t)}}:function(t){setTimeout(s(run,t,1),0)}),t.exports={set:p,clear:h}},46723:(t,e,r)=>{var n=r(58290),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=n(t))<0?o(t+e,0):i(t,e)}},58290:t=>{var e=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:e)(t)}},1504:(t,e,r)=>{var n=r(13115),o=r(18239);t.exports=function(t){return n(o(t))}},37154:(t,e,r)=>{var n=r(58290),o=Math.min;t.exports=function(t){return t>0?o(n(t),9007199254740991):0}},60061:(t,e,r)=>{var n=r(18239);t.exports=function(t){return Object(n(t))}},12737:(t,e,r)=>{var n=r(39632);t.exports=function(t,e){if(!n(t))return t;var r,o;if(e&&"function"==typeof(r=t.toString)&&!n(o=r.call(t)))return o;if("function"==typeof(r=t.valueOf)&&!n(o=r.call(t)))return o;if(!e&&"function"==typeof(r=t.toString)&&!n(o=r.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},54251:t=>{var e=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++e+r).toString(36))}},35701:(t,e,r)=>{var n=r(43280).navigator;t.exports=n&&n.userAgent||""},31164:(t,e,r)=>{var n=r(43280),o=r(47208),i=r(36794),s=r(7273),u=r(60510).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:n.Symbol||{});"_"==t.charAt(0)||t in e||u(e,t,{value:s.f(t)})}},7273:(t,e,r)=>{e.f=r(24300)},24300:(t,e,r)=>{var n=r(29990)("wks"),o=r(54251),i=r(43280).Symbol,s="function"==typeof i;(t.exports=function(t){return n[t]||(n[t]=s&&i[t]||(s?i:o)("Symbol."+t))}).store=n},26116:(t,e,r)=>{var n=r(8312),o=r(24300)("iterator"),i=r(79105);t.exports=r(47208).getIteratorMethod=function(t){if(null!=t)return t[o]||t["@@iterator"]||i[n(t)]}},37627:(t,e,r)=>{"use strict";var n=r(61725),o=r(98310),i=r(60061),s=r(93086),u=r(11827),a=r(37154),c=r(87352),f=r(26116);o(o.S+o.F*!r(26797)((function(t){Array.from(t)})),"Array",{from:function from(t){var e,r,o,l,p=i(t),h="function"==typeof this?this:Array,v=arguments.length,y=v>1?arguments[1]:void 0,d=void 0!==y,g=0,_=f(p);if(d&&(y=n(y,v>2?arguments[2]:void 0,2)),null==_||h==Array&&u(_))for(r=new h(e=a(p.length));e>g;g++)c(r,g,d?y(p[g],g):p[g]);else for(l=_.call(p),r=new h;!(o=l.next()).done;g++)c(r,g,d?s(l,y,[o.value,g],!0):o.value);return r.length=g,r}})},42580:(t,e,r)=>{var n=r(98310);n(n.S,"Array",{isArray:r(7359)})},84411:(t,e,r)=>{"use strict";var n=r(29697),o=r(9329),i=r(79105),s=r(1504);t.exports=r(6125)(Array,"Array",(function(t,e){this._t=s(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?r:"values"==e?t[r]:[r,t[r]])}),"values"),i.Arguments=i.Array,n("keys"),n("values"),n("entries")},30785:(t,e,r)=>{var n=r(98310);n(n.S,"Object",{create:r(82488)})},23078:(t,e,r)=>{var n=r(98310);n(n.S+n.F*!r(75179),"Object",{defineProperties:r(36607)})},40168:(t,e,r)=>{var n=r(98310);n(n.S+n.F*!r(75179),"Object",{defineProperty:r(60510).f})},18576:(t,e,r)=>{var n=r(1504),o=r(83264).f;r(57972)("getOwnPropertyDescriptor",(function(){return function getOwnPropertyDescriptor(t,e){return o(n(t),e)}}))},4840:(t,e,r)=>{var n=r(60061),o=r(999);r(57972)("getPrototypeOf",(function(){return function getPrototypeOf(t){return o(n(t))}}))},5453:(t,e,r)=>{var n=r(60061),o=r(86425);r(57972)("keys",(function(){return function keys(t){return o(n(t))}}))},13890:(t,e,r)=>{var n=r(98310);n(n.S,"Object",{setPrototypeOf:r(25574).set})},70285:()=>{},86082:(t,e,r)=>{"use strict";var n,o,i,s,u=r(36794),a=r(43280),c=r(61725),f=r(8312),l=r(98310),p=r(39632),h=r(26610),v=r(54677),y=r(25985),d=r(73732),g=r(6022).set,_=r(4326)(),m=r(88579),x=r(52745),b=r(35701),S=r(88747),w="Promise",O=a.TypeError,P=a.process,j=P&&P.versions,k=j&&j.v8||"",A=a.Promise,E="process"==f(P),empty=function(){},M=o=m.f,T=!!function(){try{var t=A.resolve(1),e=(t.constructor={})[r(24300)("species")]=function(t){t(empty,empty)};return(E||"function"==typeof PromiseRejectionEvent)&&t.then(empty)instanceof e&&0!==k.indexOf("6.6")&&-1===b.indexOf("Chrome/66")}catch(t){}}(),isThenable=function(t){var e;return!(!p(t)||"function"!=typeof(e=t.then))&&e},notify=function(t,e){if(!t._n){t._n=!0;var r=t._c;_((function(){for(var n=t._v,o=1==t._s,i=0,run=function(e){var r,i,s,u=o?e.ok:e.fail,a=e.resolve,c=e.reject,f=e.domain;try{u?(o||(2==t._h&&onHandleUnhandled(t),t._h=1),!0===u?r=n:(f&&f.enter(),r=u(n),f&&(f.exit(),s=!0)),r===e.promise?c(O("Promise-chain cycle")):(i=isThenable(r))?i.call(r,a,c):a(r)):c(n)}catch(t){f&&!s&&f.exit(),c(t)}};r.length>i;)run(r[i++]);t._c=[],t._n=!1,e&&!t._h&&onUnhandled(t)}))}},onUnhandled=function(t){g.call(a,(function(){var e,r,n,o=t._v,i=isUnhandled(t);if(i&&(e=x((function(){E?P.emit("unhandledRejection",o,t):(r=a.onunhandledrejection)?r({promise:t,reason:o}):(n=a.console)&&n.error&&n.error("Unhandled promise rejection",o)})),t._h=E||isUnhandled(t)?2:1),t._a=void 0,i&&e.e)throw e.v}))},isUnhandled=function(t){return 1!==t._h&&0===(t._a||t._c).length},onHandleUnhandled=function(t){g.call(a,(function(){var e;E?P.emit("rejectionHandled",t):(e=a.onrejectionhandled)&&e({promise:t,reason:t._v})}))},$reject=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),notify(e,!0))},$resolve=function(t){var e,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===t)throw O("Promise can't be resolved itself");(e=isThenable(t))?_((function(){var n={_w:r,_d:!1};try{e.call(t,c($resolve,n,1),c($reject,n,1))}catch(t){$reject.call(n,t)}})):(r._v=t,r._s=1,notify(r,!1))}catch(t){$reject.call({_w:r,_d:!1},t)}}};T||(A=function Promise(t){v(this,A,w,"_h"),h(t),n.call(this);try{t(c($resolve,this,1),c($reject,this,1))}catch(t){$reject.call(this,t)}},(n=function Promise(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=r(13199)(A.prototype,{then:function then(t,e){var r=M(d(this,A));return r.ok="function"!=typeof t||t,r.fail="function"==typeof e&&e,r.domain=E?P.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&notify(this,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),i=function(){var t=new n;this.promise=t,this.resolve=c($resolve,t,1),this.reject=c($reject,t,1)},m.f=M=function(t){return t===A||t===s?new i(t):o(t)}),l(l.G+l.W+l.F*!T,{Promise:A}),r(2413)(A,w),r(5698)(w),s=r(47208).Promise,l(l.S+l.F*!T,w,{reject:function reject(t){var e=M(this);return(0,e.reject)(t),e.promise}}),l(l.S+l.F*(u||!T),w,{resolve:function resolve(t){return S(u&&this===s?A:this,t)}}),l(l.S+l.F*!(T&&r(26797)((function(t){A.all(t).catch(empty)}))),w,{all:function all(t){var e=this,r=M(e),n=r.resolve,o=r.reject,i=x((function(){var r=[],i=0,s=1;y(t,!1,(function(t){var u=i++,a=!1;r.push(void 0),s++,e.resolve(t).then((function(t){a||(a=!0,r[u]=t,--s||n(r))}),o)})),--s||n(r)}));return i.e&&o(i.v),r.promise},race:function race(t){var e=this,r=M(e),n=r.reject,o=x((function(){y(t,!1,(function(t){e.resolve(t).then(r.resolve,n)}))}));return o.e&&n(o.v),r.promise}})},11320:(t,e,r)=>{var n=r(98310),o=r(82488),i=r(26610),s=r(30498),u=r(39632),a=r(90472),c=r(45515),f=(r(43280).Reflect||{}).construct,l=a((function(){function F(){}return!(f((function(){}),[],F)instanceof F)})),p=!a((function(){f((function(){}))}));n(n.S+n.F*(l||p),"Reflect",{construct:function construct(t,e){i(t),s(e);var r=arguments.length<3?t:i(arguments[2]);if(p&&!l)return f(t,e,r);if(t==r){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var n=[null];return n.push.apply(n,e),new(c.apply(t,n))}var a=r.prototype,h=o(u(a)?a:Object.prototype),v=Function.apply.call(t,h,e);return u(v)?v:h}})},36600:(t,e,r)=>{var n=r(83264),o=r(999),i=r(20657),s=r(98310),u=r(39632),a=r(30498);s(s.S,"Reflect",{get:function get(t,e){var r,s,c=arguments.length<3?t:arguments[2];return a(t)===c?t[e]:(r=n.f(t,e))?i(r,"value")?r.value:void 0!==r.get?r.get.call(c):void 0:u(s=o(t))?get(s,e,c):void 0}})},99572:(t,e,r)=>{"use strict";var n=r(78502)(!0);r(6125)(String,"String",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,r=this._i;return r>=e.length?{value:void 0,done:!0}:(t=n(e,r),this._i+=t.length,{value:t,done:!1})}))},54370:(t,e,r)=>{"use strict";var n=r(43280),o=r(20657),i=r(75179),s=r(98310),u=r(19312),a=r(6758).KEY,c=r(90472),f=r(29990),l=r(2413),p=r(54251),h=r(24300),v=r(7273),y=r(31164),d=r(42266),g=r(7359),_=r(30498),m=r(39632),x=r(60061),b=r(1504),S=r(12737),w=r(48439),O=r(82488),P=r(26084),j=r(83264),k=r(97739),A=r(60510),E=r(86425),M=j.f,T=A.f,C=P.f,L=n.Symbol,I=n.JSON,D=I&&I.stringify,R=h("_hidden"),N=h("toPrimitive"),q={}.propertyIsEnumerable,G=f("symbol-registry"),U=f("symbols"),$=f("op-symbols"),Q=Object.prototype,V="function"==typeof L&&!!k.f,B=n.QObject,W=!B||!B.prototype||!B.prototype.findChild,H=i&&c((function(){return 7!=O(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a}))?function(t,e,r){var n=M(Q,e);n&&delete Q[e],T(t,e,r),n&&t!==Q&&T(Q,e,n)}:T,wrap=function(t){var e=U[t]=O(L.prototype);return e._k=t,e},K=V&&"symbol"==typeof L.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof L},z=function defineProperty(t,e,r){return t===Q&&z($,e,r),_(t),e=S(e,!0),_(r),o(U,e)?(r.enumerable?(o(t,R)&&t[R][e]&&(t[R][e]=!1),r=O(r,{enumerable:w(0,!1)})):(o(t,R)||T(t,R,w(1,{})),t[R][e]=!0),H(t,e,r)):T(t,e,r)},J=function defineProperties(t,e){_(t);for(var r,n=d(e=b(e)),o=0,i=n.length;i>o;)z(t,r=n[o++],e[r]);return t},Y=function propertyIsEnumerable(t){var e=q.call(this,t=S(t,!0));return!(this===Q&&o(U,t)&&!o($,t))&&(!(e||!o(this,t)||!o(U,t)||o(this,R)&&this[R][t])||e)},X=function getOwnPropertyDescriptor(t,e){if(t=b(t),e=S(e,!0),t!==Q||!o(U,e)||o($,e)){var r=M(t,e);return!r||!o(U,e)||o(t,R)&&t[R][e]||(r.enumerable=!0),r}},Z=function getOwnPropertyNames(t){for(var e,r=C(b(t)),n=[],i=0;r.length>i;)o(U,e=r[i++])||e==R||e==a||n.push(e);return n},tt=function getOwnPropertySymbols(t){for(var e,r=t===Q,n=C(r?$:b(t)),i=[],s=0;n.length>s;)!o(U,e=n[s++])||r&&!o(Q,e)||i.push(U[e]);return i};V||(u((L=function Symbol(){if(this instanceof L)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),$set=function(e){this===Q&&$set.call($,e),o(this,R)&&o(this[R],t)&&(this[R][t]=!1),H(this,t,w(1,e))};return i&&W&&H(Q,t,{configurable:!0,set:$set}),wrap(t)}).prototype,"toString",(function toString(){return this._k})),j.f=X,A.f=z,r(8772).f=P.f=Z,r(67410).f=Y,k.f=tt,i&&!r(36794)&&u(Q,"propertyIsEnumerable",Y,!0),v.f=function(t){return wrap(h(t))}),s(s.G+s.W+s.F*!V,{Symbol:L});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),rt=0;et.length>rt;)h(et[rt++]);for(var nt=E(h.store),ot=0;nt.length>ot;)y(nt[ot++]);s(s.S+s.F*!V,"Symbol",{for:function(t){return o(G,t+="")?G[t]:G[t]=L(t)},keyFor:function keyFor(t){if(!K(t))throw TypeError(t+" is not a symbol!");for(var e in G)if(G[e]===t)return e},useSetter:function(){W=!0},useSimple:function(){W=!1}}),s(s.S+s.F*!V,"Object",{create:function create(t,e){return void 0===e?O(t):J(O(t),e)},defineProperty:z,defineProperties:J,getOwnPropertyDescriptor:X,getOwnPropertyNames:Z,getOwnPropertySymbols:tt});var it=c((function(){k.f(1)}));s(s.S+s.F*it,"Object",{getOwnPropertySymbols:function getOwnPropertySymbols(t){return k.f(x(t))}}),I&&s(s.S+s.F*(!V||c((function(){var t=L();return"[null]"!=D([t])||"{}"!=D({a:t})||"{}"!=D(Object(t))}))),"JSON",{stringify:function stringify(t){for(var e,r,n=[t],o=1;arguments.length>o;)n.push(arguments[o++]);if(r=e=n[1],(m(e)||void 0!==t)&&!K(t))return g(e)||(e=function(t,e){if("function"==typeof r&&(e=r.call(this,t,e)),!K(e))return e}),n[1]=e,D.apply(I,n)}}),L.prototype[N]||r(62292)(L.prototype,N,L.prototype.valueOf),l(L,"Symbol"),l(Math,"Math",!0),l(n.JSON,"JSON",!0)},67685:(t,e,r)=>{var n=r(98310),o=r(64344),i=r(1504),s=r(83264),u=r(87352);n(n.S,"Object",{getOwnPropertyDescriptors:function getOwnPropertyDescriptors(t){for(var e,r,n=i(t),a=s.f,c=o(n),f={},l=0;c.length>l;)void 0!==(r=a(n,e=c[l++]))&&u(f,e,r);return f}})},81522:(t,e,r)=>{"use strict";var n=r(98310),o=r(47208),i=r(43280),s=r(73732),u=r(88747);n(n.P+n.R,"Promise",{finally:function(t){var e=s(this,o.Promise||i.Promise),r="function"==typeof t;return this.then(r?function(r){return u(e,t()).then((function(){return r}))}:t,r?function(r){return u(e,t()).then((function(){throw r}))}:t)}})},25757:(t,e,r)=>{"use strict";var n=r(98310),o=r(88579),i=r(52745);n(n.S,"Promise",{try:function(t){var e=o.f(this),r=i(t);return(r.e?e.reject:e.resolve)(r.v),e.promise}})},87573:(t,e,r)=>{r(31164)("asyncIterator")},97224:(t,e,r)=>{r(31164)("observable")},74114:(t,e,r)=>{r(84411);for(var n=r(43280),o=r(62292),i=r(79105),s=r(24300)("toStringTag"),u="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),a=0;a<u.length;a++){var c=u[a],f=n[c],l=f&&f.prototype;l&&!l[s]&&o(l,s,c),i[c]=i.Array}},22761:t=>{t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},42094:(t,e,r)=>{var n=r(62190)("unscopables"),o=Array.prototype;null==o[n]&&r(74216)(o,n,{}),t.exports=function(t){o[n][t]=!0}},6365:(t,e,r)=>{var n=r(67334);t.exports=function(t){if(!n(t))throw TypeError(t+" is not an object!");return t}},59021:(t,e,r)=>{var n=r(15703),o=r(26078),i=r(78615);t.exports=function(t){return function(e,r,s){var u,a=n(e),c=o(a.length),f=i(s,c);if(t&&r!=r){for(;c>f;)if((u=a[f++])!=u)return!0}else for(;c>f;f++)if((t||f in a)&&a[f]===r)return t||f||0;return!t&&-1}}},78309:(t,e,r)=>{var n=r(11528),o=r(8467),i=r(26033),s=r(26078),u=r(63531);t.exports=function(t,e){var r=1==t,a=2==t,c=3==t,f=4==t,l=6==t,p=5==t||l,h=e||u;return function(e,u,v){for(var y,d,g=i(e),_=o(g),m=n(u,v,3),x=s(_.length),b=0,S=r?h(e,x):a?h(e,0):void 0;x>b;b++)if((p||b in _)&&(d=m(y=_[b],b,g),t))if(r)S[b]=d;else if(d)switch(t){case 3:return!0;case 5:return y;case 6:return b;case 2:S.push(y)}else if(f)return!1;return l?-1:c||f?f:S}}},81071:(t,e,r)=>{var n=r(67334),o=r(99141),i=r(62190)("species");t.exports=function(t){var e;return o(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!o(e.prototype)||(e=void 0),n(e)&&null===(e=e[i])&&(e=void 0)),void 0===e?Array:e}},63531:(t,e,r)=>{var n=r(81071);t.exports=function(t,e){return new(n(t))(e)}},20106:(t,e,r)=>{var n=r(26688),o=r(62190)("toStringTag"),i="Arguments"==n(function(){return arguments}());t.exports=function(t){var e,r,s;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?r:i?n(e):"Object"==(s=n(e))&&"function"==typeof e.callee?"Arguments":s}},26688:t=>{var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},60066:t=>{var e=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=e)},11528:(t,e,r)=>{var n=r(22761);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,o){return t.call(e,r,n,o)}}return function(){return t.apply(e,arguments)}}},61622:t=>{t.exports=function(t){if(null==t)throw TypeError("Can't call method on  "+t);return t}},36628:(t,e,r)=>{t.exports=!r(48625)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},5050:(t,e,r)=>{var n=r(67334),o=r(38113).document,i=n(o)&&n(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},33603:t=>{t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},65772:(t,e,r)=>{var n=r(38113),o=r(60066),i=r(74216),s=r(17738),u=r(11528),$export=function(t,e,r){var a,c,f,l,p=t&$export.F,h=t&$export.G,v=t&$export.S,y=t&$export.P,d=t&$export.B,g=h?n:v?n[e]||(n[e]={}):(n[e]||{}).prototype,_=h?o:o[e]||(o[e]={}),m=_.prototype||(_.prototype={});for(a in h&&(r=e),r)f=((c=!p&&g&&void 0!==g[a])?g:r)[a],l=d&&c?u(f,n):y&&"function"==typeof f?u(Function.call,f):f,g&&s(g,a,f,t&$export.U),_[a]!=f&&i(_,a,l),y&&m[a]!=f&&(m[a]=f)};n.core=o,$export.F=1,$export.G=2,$export.S=4,$export.P=8,$export.B=16,$export.W=32,$export.U=64,$export.R=128,t.exports=$export},48625:t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},20646:(t,e,r)=>{t.exports=r(8655)("native-function-to-string",Function.toString)},38113:t=>{var e=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},54040:t=>{var e={}.hasOwnProperty;t.exports=function(t,r){return e.call(t,r)}},74216:(t,e,r)=>{var n=r(98558),o=r(36061);t.exports=r(36628)?function(t,e,r){return n.f(t,e,o(1,r))}:function(t,e,r){return t[e]=r,t}},8954:(t,e,r)=>{var n=r(38113).document;t.exports=n&&n.documentElement},5100:(t,e,r)=>{t.exports=!r(36628)&&!r(48625)((function(){return 7!=Object.defineProperty(r(5050)("div"),"a",{get:function(){return 7}}).a}))},8467:(t,e,r)=>{var n=r(26688);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==n(t)?t.split(""):Object(t)}},99141:(t,e,r)=>{var n=r(26688);t.exports=Array.isArray||function isArray(t){return"Array"==n(t)}},67334:t=>{t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},46445:(t,e,r)=>{"use strict";var n=r(82897),o=r(36061),i=r(55727),s={};r(74216)(s,r(62190)("iterator"),(function(){return this})),t.exports=function(t,e,r){t.prototype=n(s,{next:o(1,r)}),i(t,e+" Iterator")}},61195:(t,e,r)=>{"use strict";var n=r(81422),o=r(65772),i=r(17738),s=r(74216),u=r(23988),a=r(46445),c=r(55727),f=r(19002),l=r(62190)("iterator"),p=!([].keys&&"next"in[].keys()),h="keys",v="values",returnThis=function(){return this};t.exports=function(t,e,r,y,d,g,_){a(r,e,y);var m,x,b,getMethod=function(t){if(!p&&t in P)return P[t];switch(t){case h:return function keys(){return new r(this,t)};case v:return function values(){return new r(this,t)}}return function entries(){return new r(this,t)}},S=e+" Iterator",w=d==v,O=!1,P=t.prototype,j=P[l]||P["@@iterator"]||d&&P[d],k=j||getMethod(d),A=d?w?getMethod("entries"):k:void 0,E="Array"==e&&P.entries||j;if(E&&(b=f(E.call(new t)))!==Object.prototype&&b.next&&(c(b,S,!0),n||"function"==typeof b[l]||s(b,l,returnThis)),w&&j&&j.name!==v&&(O=!0,k=function values(){return j.call(this)}),n&&!_||!p&&!O&&P[l]||s(P,l,k),u[e]=k,u[S]=returnThis,d)if(m={values:w?k:getMethod(v),keys:g?k:getMethod(h),entries:A},_)for(x in m)x in P||i(P,x,m[x]);else o(o.P+o.F*(p||O),e,m);return m}},35038:t=>{t.exports=function(t,e){return{value:e,done:!!t}}},23988:t=>{t.exports={}},81422:t=>{t.exports=!1},82897:(t,e,r)=>{var n=r(6365),o=r(7331),i=r(33603),s=r(28034)("IE_PROTO"),Empty=function(){},createDict=function(){var t,e=r(5050)("iframe"),n=i.length;for(e.style.display="none",r(8954).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),createDict=t.F;n--;)delete createDict.prototype[i[n]];return createDict()};t.exports=Object.create||function create(t,e){var r;return null!==t?(Empty.prototype=n(t),r=new Empty,Empty.prototype=null,r[s]=t):r=createDict(),void 0===e?r:o(r,e)}},98558:(t,e,r)=>{var n=r(6365),o=r(5100),i=r(31382),s=Object.defineProperty;e.f=r(36628)?Object.defineProperty:function defineProperty(t,e,r){if(n(t),e=i(e,!0),n(r),o)try{return s(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[e]=r.value),t}},7331:(t,e,r)=>{var n=r(98558),o=r(6365),i=r(42912);t.exports=r(36628)?Object.defineProperties:function defineProperties(t,e){o(t);for(var r,s=i(e),u=s.length,a=0;u>a;)n.f(t,r=s[a++],e[r]);return t}},19002:(t,e,r)=>{var n=r(54040),o=r(26033),i=r(28034)("IE_PROTO"),s=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),n(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?s:null}},75547:(t,e,r)=>{var n=r(54040),o=r(15703),i=r(59021)(!1),s=r(28034)("IE_PROTO");t.exports=function(t,e){var r,u=o(t),a=0,c=[];for(r in u)r!=s&&n(u,r)&&c.push(r);for(;e.length>a;)n(u,r=e[a++])&&(~i(c,r)||c.push(r));return c}},42912:(t,e,r)=>{var n=r(75547),o=r(33603);t.exports=Object.keys||function keys(t){return n(t,o)}},36061:t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},17738:(t,e,r)=>{var n=r(38113),o=r(74216),i=r(54040),s=r(25078)("src"),u=r(20646),a="toString",c=(""+u).split(a);r(60066).inspectSource=function(t){return u.call(t)},(t.exports=function(t,e,r,u){var a="function"==typeof r;a&&(i(r,"name")||o(r,"name",e)),t[e]!==r&&(a&&(i(r,s)||o(r,s,t[e]?""+t[e]:c.join(String(e)))),t===n?t[e]=r:u?t[e]?t[e]=r:o(t,e,r):(delete t[e],o(t,e,r)))})(Function.prototype,a,(function toString(){return"function"==typeof this&&this[s]||u.call(this)}))},55727:(t,e,r)=>{var n=r(98558).f,o=r(54040),i=r(62190)("toStringTag");t.exports=function(t,e,r){t&&!o(t=r?t:t.prototype,i)&&n(t,i,{configurable:!0,value:e})}},28034:(t,e,r)=>{var n=r(8655)("keys"),o=r(25078);t.exports=function(t){return n[t]||(n[t]=o(t))}},8655:(t,e,r)=>{var n=r(60066),o=r(38113),i="__core-js_shared__",s=o[i]||(o[i]={});(t.exports=function(t,e){return s[t]||(s[t]=void 0!==e?e:{})})("versions",[]).push({version:n.version,mode:r(81422)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},10225:(t,e,r)=>{"use strict";var n=r(48625);t.exports=function(t,e){return!!t&&n((function(){e?t.call(null,(function(){}),1):t.call(null)}))}},12070:(t,e,r)=>{var n=r(3338),o=r(61622);t.exports=function(t){return function(e,r){var i,s,u=String(o(e)),a=n(r),c=u.length;return a<0||a>=c?t?"":void 0:(i=u.charCodeAt(a))<55296||i>56319||a+1===c||(s=u.charCodeAt(a+1))<56320||s>57343?t?u.charAt(a):i:t?u.slice(a,a+2):s-56320+(i-55296<<10)+65536}}},78615:(t,e,r)=>{var n=r(3338),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=n(t))<0?o(t+e,0):i(t,e)}},3338:t=>{var e=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:e)(t)}},15703:(t,e,r)=>{var n=r(8467),o=r(61622);t.exports=function(t){return n(o(t))}},26078:(t,e,r)=>{var n=r(3338),o=Math.min;t.exports=function(t){return t>0?o(n(t),9007199254740991):0}},26033:(t,e,r)=>{var n=r(61622);t.exports=function(t){return Object(n(t))}},31382:(t,e,r)=>{var n=r(67334);t.exports=function(t,e){if(!n(t))return t;var r,o;if(e&&"function"==typeof(r=t.toString)&&!n(o=r.call(t)))return o;if("function"==typeof(r=t.valueOf)&&!n(o=r.call(t)))return o;if(!e&&"function"==typeof(r=t.toString)&&!n(o=r.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},25078:t=>{var e=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++e+r).toString(36))}},62190:(t,e,r)=>{var n=r(8655)("wks"),o=r(25078),i=r(38113).Symbol,s="function"==typeof i;(t.exports=function(t){return n[t]||(n[t]=s&&i[t]||(s?i:o)("Symbol."+t))}).store=n},64434:(t,e,r)=>{"use strict";var n=r(65772),o=r(78309)(2);n(n.P+n.F*!r(10225)([].filter,!0),"Array",{filter:function filter(t){return o(this,t,arguments[1])}})},71954:(t,e,r)=>{"use strict";var n=r(65772),o=r(78309)(5),i="find",s=!0;i in[]&&Array(1).find((function(){s=!1})),n(n.P+n.F*s,"Array",{find:function find(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),r(42094)(i)},12897:(t,e,r)=>{"use strict";var n=r(42094),o=r(35038),i=r(23988),s=r(15703);t.exports=r(61195)(Array,"Array",(function(t,e){this._t=s(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?r:"values"==e?t[r]:[r,t[r]])}),"values"),i.Arguments=i.Array,n("keys"),n("values"),n("entries")},90286:(t,e,r)=>{"use strict";var n=r(65772),o=r(78309)(1);n(n.P+n.F*!r(10225)([].map,!0),"Array",{map:function map(t){return o(this,t,arguments[1])}})},76139:(t,e,r)=>{"use strict";var n=r(20106),o={};o[r(62190)("toStringTag")]="z",o+""!="[object z]"&&r(17738)(Object.prototype,"toString",(function toString(){return"[object "+n(this)+"]"}),!0)},37472:(t,e,r)=>{"use strict";var n=r(12070)(!0);r(61195)(String,"String",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,r=this._i;return r>=e.length?{value:void 0,done:!0}:(t=n(e,r),this._i+=t.length,{value:t,done:!1})}))},93085:(t,e,r)=>{for(var n=r(12897),o=r(42912),i=r(17738),s=r(38113),u=r(74216),a=r(23988),c=r(62190),f=c("iterator"),l=c("toStringTag"),p=a.Array,h={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},v=o(h),y=0;y<v.length;y++){var d,g=v[y],_=h[g],m=s[g],x=m&&m.prototype;if(x&&(x[f]||u(x,f,p),x[l]||u(x,l,g),a[g]=p,_))for(d in n)x[d]||i(x,d,n[d],!0)}}},e={};function __webpack_require__(r){var n=e[r];if(void 0!==n)return n.exports;var o=e[r]={exports:{}};return t[r](o,o.exports,__webpack_require__),o.exports}(()=>{"use strict";var t=__webpack_require__(67971),e=t(__webpack_require__(73220));__webpack_require__(71954),__webpack_require__(90286),__webpack_require__(64434),__webpack_require__(37472),__webpack_require__(76139),__webpack_require__(12897),__webpack_require__(93085);var r=t(__webpack_require__(74846)),n=t(__webpack_require__(84899)),o=t(__webpack_require__(11959)),i=t(__webpack_require__(39041)),s=t(__webpack_require__(76700)),u=t(__webpack_require__(44263)),a=t(__webpack_require__(77371)),c=t(__webpack_require__(68537)),f=function(t){(0,a.default)(Screenshot,t);var f=(0,c.default)(Screenshot);function Screenshot(){return(0,o.default)(this,Screenshot),f.apply(this,arguments)}return(0,i.default)(Screenshot,[{key:"getDefaultSettings",value:function getDefaultSettings(){return(0,n.default)({empty_content_headline:"Empty Content.",crop:{width:1200,height:1500},excluded_external_css_urls:["https://kit-pro.fontawesome.com"],external_images_urls:["https://i.ytimg.com"],timeout:15e3,render_timeout:5e3,timerLabel:null,timer_label:"".concat(ElementorScreenshotConfig.post_id," - timer"),image_placeholder:"data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=",isDebug:elementorCommonConfig.isElementorDebug,isDebugSvg:!1},ElementorScreenshotConfig)}},{key:"getDefaultElements",value:function getDefaultElements(){var t=jQuery(ElementorScreenshotConfig.selector),e=t.find(" .elementor-section-wrap > .elementor-section");return{$elementor:t,$sections:e,$firstSection:e.first(),$notElementorElements:elementorCommon.elements.$body.find("> *:not(style, link)").not(t),$head:jQuery("head")}}},{key:"onInit",value:function onInit(){return(0,s.default)((0,u.default)(Screenshot.prototype),"onInit",this).call(this),this.log("Screenshot init","time"),this.timeoutTimer=setTimeout(this.screenshotFailed.bind(this),this.getSettings("timeout")),this.captureScreenshot()}},{key:"captureScreenshot",value:function captureScreenshot(){return this.elements.$elementor.length||(elementorCommon.helpers.consoleWarn("Screenshots: The content of this page is empty, the module will create a fake conent just for this screenshot."),this.createFakeContent()),this.removeUnnecessaryElements(),this.handleIFrames(),this.removeFirstSectionMargin(),this.handleLinks(),this.loadExternalCss(),this.loadExternalImages(),e.default.resolve().then(this.createImage.bind(this)).then(this.createImageElement.bind(this)).then(this.cropCanvas.bind(this)).then(this.save.bind(this)).then(this.screenshotSucceed.bind(this)).catch(this.screenshotFailed.bind(this))}},{key:"createFakeContent",value:function createFakeContent(){this.elements.$elementor=jQuery("<div>").css({height:this.getSettings("crop.height"),width:this.getSettings("crop.width"),display:"flex",alignItems:"center",justifyContent:"center"}),this.elements.$elementor.append(jQuery("<h1>").css({fontSize:"85px"}).html(this.getSettings("empty_content_headline"))),document.body.prepend(this.elements.$elementor)}},{key:"loadExternalCss",value:function loadExternalCss(){var t=this,e=[this.getSettings("home_url")].concat((0,r.default)(this.getSettings("excluded_external_css_urls"))).map((function(t){return'[href^="'.concat(t,'"]')})).join(", ");jQuery("link").not(e).each((function(e,r){var n=jQuery(r),o=n.clone();o.attr("href",t.getScreenshotProxyUrl(n.attr("href"))),t.elements.$head.append(o),n.remove()}))}},{key:"loadExternalImages",value:function loadExternalImages(){var t=this,e=this.getSettings("external_images_urls").map((function(t){return'img[src^="'.concat(t,'"]')})).join(", ");jQuery(e).each((function(e,r){var n=jQuery(r);n.attr("src",t.getScreenshotProxyUrl(n.attr("src")))}))}},{key:"handleIFrames",value:function handleIFrames(){this.elements.$elementor.find("iframe").each((function(t,e){var r=jQuery(e),n=jQuery("<div />",{css:{background:"gray",width:r.width(),height:r.height()}});r.before(n),r.remove()}))}},{key:"removeUnnecessaryElements",value:function removeUnnecessaryElements(){var t=this,e=0;this.elements.$sections.filter((function(r,n){var o=!1;return e>=t.getSettings("crop.height")&&(o=!0),e+=jQuery(n).outerHeight(),o})).each((function(t,e){e.remove()})),this.elements.$notElementorElements.remove()}},{key:"handleLinks",value:function handleLinks(){elementorCommon.elements.$body.find("a").attr("href","/")}},{key:"removeFirstSectionMargin",value:function removeFirstSectionMargin(){this.elements.$firstSection.css({marginTop:0})}},{key:"createImage",value:function createImage(){var t=this,r=new e.default((function(t){window.addEventListener("load",(function(){t()}))})),n=new e.default((function(e){setTimeout((function(){e()}),t.getSettings("render_timeout"))}));return e.default.race([r,n]).then((function(){return t.log("Start creating screenshot."),t.getSettings("isDebugSvg")?(domtoimage.toSvg(document.body,{imagePlaceholder:t.getSettings("image_placeholder")}).then((function(e){return t.download(e)})),e.default.reject("Debug SVG.")):/^((?!chrome|android).)*safari/i.test(window.userAgent)?(t.log('Creating screenshot with "html2canvas"'),html2canvas(document.body).then((function(t){return t.toDataURL("image/png")}))):(t.log('Creating screenshot with "dom-to-image"'),domtoimage.toPng(document.body,{imagePlaceholder:t.getSettings("image_placeholder")}))}))}},{key:"download",value:function download(t){var e=jQuery("<a/>",{href:t,download:"debugSvg.svg",html:"Download SVG"});elementorCommon.elements.$body.append(e),e.trigger("click")}},{key:"createImageElement",value:function createImageElement(t){var r=new Image;return r.src=t,new e.default((function(t){r.onload=function(){return t(r)}}))}},{key:"cropCanvas",value:function cropCanvas(t){var r=this.getSettings("crop.width"),n=this.getSettings("crop.height"),cropCanvas=document.createElement("canvas"),o=cropCanvas.getContext("2d"),i=r/t.width;return cropCanvas.width=r,cropCanvas.height=n>t.height?t.height:n,o.drawImage(t,0,0,t.width,t.height,0,0,t.width*i,t.height*i),e.default.resolve(cropCanvas)}},{key:"save",value:function save(t){var r=this;return new e.default((function(e,n){elementorCommon.ajax.addRequest("screenshot_save",{data:{post_id:r.getSettings("post_id"),screenshot:t.toDataURL("image/png")},success:function success(t){r.log("Screenshot created: ".concat(encodeURI(t))),e(t)},error:function error(){r.log("Failed to create screenshot."),n()}})}))}},{key:"markAsFailed",value:function markAsFailed(){var t=this;return new e.default((function(e,r){elementorCommon.ajax.addRequest("screenshot_failed",{data:{post_id:t.getSettings("post_id")},success:function success(){t.log("Marked as failed."),e()},error:function error(){t.log("Failed to mark this screenshot as failed."),r()}})}))}},{key:"getScreenshotProxyUrl",value:function getScreenshotProxyUrl(t){return"".concat(this.getSettings("home_url"),"?screenshot_proxy&nonce=").concat(this.getSettings("nonce"),"&href=").concat(t)}},{key:"screenshotSucceed",value:function screenshotSucceed(t){this.screenshotDone(!0,t)}},{key:"screenshotFailed",value:function screenshotFailed(t){var e=this;this.log(t,null),this.markAsFailed().then((function(){return e.screenshotDone(!1)}))}},{key:"screenshotDone",value:function screenshotDone(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;clearTimeout(this.timeoutTimer),this.timeoutTimer=null,window.parent.postMessage({name:"capture-screenshot-done",success:t,id:this.getSettings("post_id"),imageUrl:e},"*"),this.log("Screenshot ".concat(t?"Succeed":"Failed","."),"timeEnd")}},{key:"log",value:function log(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"timeLog";this.getSettings("isDebug")&&(console.log("string"==typeof t?"".concat(this.getSettings("post_id")," - ").concat(t):t),e&&console[e](this.getSettings("timer_label")))}}]),Screenshot}(elementorModules.ViewModule);jQuery((function(){new f}))})()})();assets/js/jszip.vendor.9ec53381c344ee903f3e.bundle.min.js000064400000302446150755004310016343 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
/*! For license information please see jszip.vendor.9ec53381c344ee903f3e.bundle.min.js.LICENSE.txt */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[972],{82858:(t,e,m)=>{t.exports=function s(t,e,m){function h(v,b){if(!e[v]){if(!t[v]){if(_)return _(v,!0);var w=new Error("Cannot find module '"+v+"'");throw w.code="MODULE_NOT_FOUND",w}var W=e[v]={exports:{}};t[v][0].call(W.exports,(function(e){return h(t[v][1][e]||e)}),W,W.exports,s,t,e,m)}return e[v].exports}for(var _=void 0,v=0;v<m.length;v++)h(m[v]);return h}({1:[function(t,e,_){(function(m){!function(t){"object"==typeof _&&void 0!==e?e.exports=t():("undefined"!=typeof window?window:void 0!==m?m:"undefined"!=typeof self?self:this).JSZip=t()}((function(){return function s(e,m,_){function h(b,w){if(!m[b]){if(!e[b]){var W="function"==typeof t&&t;if(!w&&W)return W(b,!0);if(v)return v(b,!0);var M=new Error("Cannot find module '"+b+"'");throw M.code="MODULE_NOT_FOUND",M}var H=m[b]={exports:{}};e[b][0].call(H.exports,(function(t){return h(e[b][1][t]||t)}),H,H.exports,s,e,m,_)}return m[b].exports}for(var v="function"==typeof t&&t,b=0;b<_.length;b++)h(_[b]);return h}({1:[function(t,e,_){(function(m){!function(t){"object"==typeof _&&void 0!==e?e.exports=t():("undefined"!=typeof window?window:void 0!==m?m:"undefined"!=typeof self?self:this).JSZip=t()}((function(){return function s(e,m,_){function h(b,w){if(!m[b]){if(!e[b]){var W="function"==typeof t&&t;if(!w&&W)return W(b,!0);if(v)return v(b,!0);var M=new Error("Cannot find module '"+b+"'");throw M.code="MODULE_NOT_FOUND",M}var H=m[b]={exports:{}};e[b][0].call(H.exports,(function(t){return h(e[b][1][t]||t)}),H,H.exports,s,e,m,_)}return m[b].exports}for(var v="function"==typeof t&&t,b=0;b<_.length;b++)h(_[b]);return h}({1:[function(t,e,_){(function(m){!function(t){"object"==typeof _&&void 0!==e?e.exports=t():("undefined"!=typeof window?window:void 0!==m?m:"undefined"!=typeof self?self:this).JSZip=t()}((function(){return function s(e,m,_){function h(b,w){if(!m[b]){if(!e[b]){var W="function"==typeof t&&t;if(!w&&W)return W(b,!0);if(v)return v(b,!0);var M=new Error("Cannot find module '"+b+"'");throw M.code="MODULE_NOT_FOUND",M}var H=m[b]={exports:{}};e[b][0].call(H.exports,(function(t){return h(e[b][1][t]||t)}),H,H.exports,s,e,m,_)}return m[b].exports}for(var v="function"==typeof t&&t,b=0;b<_.length;b++)h(_[b]);return h}({1:[function(t,e,_){(function(m){!function(t){"object"==typeof _&&void 0!==e?e.exports=t():("undefined"!=typeof window?window:void 0!==m?m:"undefined"!=typeof self?self:this).JSZip=t()}((function(){return function s(e,m,_){function h(b,w){if(!m[b]){if(!e[b]){var W="function"==typeof t&&t;if(!w&&W)return W(b,!0);if(v)return v(b,!0);var M=new Error("Cannot find module '"+b+"'");throw M.code="MODULE_NOT_FOUND",M}var H=m[b]={exports:{}};e[b][0].call(H.exports,(function(t){return h(e[b][1][t]||t)}),H,H.exports,s,e,m,_)}return m[b].exports}for(var v="function"==typeof t&&t,b=0;b<_.length;b++)h(_[b]);return h}({1:[function(t,e,_){(function(m){!function(t){"object"==typeof _&&void 0!==e?e.exports=t():("undefined"!=typeof window?window:void 0!==m?m:"undefined"!=typeof self?self:this).JSZip=t()}((function(){return function s(e,m,_){function h(b,w){if(!m[b]){if(!e[b]){var W="function"==typeof t&&t;if(!w&&W)return W(b,!0);if(v)return v(b,!0);var M=new Error("Cannot find module '"+b+"'");throw M.code="MODULE_NOT_FOUND",M}var H=m[b]={exports:{}};e[b][0].call(H.exports,(function(t){return h(e[b][1][t]||t)}),H,H.exports,s,e,m,_)}return m[b].exports}for(var v="function"==typeof t&&t,b=0;b<_.length;b++)h(_[b]);return h}({1:[function(t,e,m){"use strict";var _=t("./utils"),v=t("./support"),b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";m.encode=function(t){for(var e,m,v,w,W,M,H,G=[],K=0,Y=t.length,X=Y,J="string"!==_.getTypeOf(t);K<t.length;)X=Y-K,v=J?(e=t[K++],m=K<Y?t[K++]:0,K<Y?t[K++]:0):(e=t.charCodeAt(K++),m=K<Y?t.charCodeAt(K++):0,K<Y?t.charCodeAt(K++):0),w=e>>2,W=(3&e)<<4|m>>4,M=1<X?(15&m)<<2|v>>6:64,H=2<X?63&v:64,G.push(b.charAt(w)+b.charAt(W)+b.charAt(M)+b.charAt(H));return G.join("")},m.decode=function(t){var e,m,_,w,W,M,H=0,G=0;if("data:"===t.substr(0,"data:".length))throw new Error("Invalid base64 input, it looks like a data url.");var K,Y=3*(t=t.replace(/[^A-Za-z0-9\+\/\=]/g,"")).length/4;if(t.charAt(t.length-1)===b.charAt(64)&&Y--,t.charAt(t.length-2)===b.charAt(64)&&Y--,Y%1!=0)throw new Error("Invalid base64 input, bad content length.");for(K=v.uint8array?new Uint8Array(0|Y):new Array(0|Y);H<t.length;)e=b.indexOf(t.charAt(H++))<<2|(w=b.indexOf(t.charAt(H++)))>>4,m=(15&w)<<4|(W=b.indexOf(t.charAt(H++)))>>2,_=(3&W)<<6|(M=b.indexOf(t.charAt(H++))),K[G++]=e,64!==W&&(K[G++]=m),64!==M&&(K[G++]=_);return K}},{"./support":30,"./utils":32}],2:[function(t,e,m){"use strict";var _=t("./external"),v=t("./stream/DataWorker"),b=t("./stream/Crc32Probe"),w=t("./stream/DataLengthProbe");function o(t,e,m,_,v){this.compressedSize=t,this.uncompressedSize=e,this.crc32=m,this.compression=_,this.compressedContent=v}o.prototype={getContentWorker:function(){var t=new v(_.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new w("data_length")),e=this;return t.on("end",(function(){if(this.streamInfo.data_length!==e.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")})),t},getCompressedWorker:function(){return new v(_.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(t,e,m){return t.pipe(new b).pipe(new w("uncompressedSize")).pipe(e.compressWorker(m)).pipe(new w("compressedSize")).withStreamInfo("compression",e)},e.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(t,e,m){"use strict";var _=t("./stream/GenericWorker");m.STORE={magic:"\0\0",compressWorker:function(t){return new _("STORE compression")},uncompressWorker:function(){return new _("STORE decompression")}},m.DEFLATE=t("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(t,e,m){"use strict";var _=t("./utils"),v=function(){for(var t,e=[],m=0;m<256;m++){t=m;for(var _=0;_<8;_++)t=1&t?3988292384^t>>>1:t>>>1;e[m]=t}return e}();e.exports=function(t,e){return void 0!==t&&t.length?"string"!==_.getTypeOf(t)?function(t,e,m){var _=v,b=0+m;t^=-1;for(var w=0;w<b;w++)t=t>>>8^_[255&(t^e[w])];return-1^t}(0|e,t,t.length):function(t,e,m){var _=v,b=0+m;t^=-1;for(var w=0;w<b;w++)t=t>>>8^_[255&(t^e.charCodeAt(w))];return-1^t}(0|e,t,t.length):0}},{"./utils":32}],5:[function(t,e,m){"use strict";m.base64=!1,m.binary=!1,m.dir=!1,m.createFolders=!0,m.date=null,m.compression=null,m.compressionOptions=null,m.comment=null,m.unixPermissions=null,m.dosPermissions=null},{}],6:[function(t,e,m){"use strict";var _;_="undefined"!=typeof Promise?Promise:t("lie"),e.exports={Promise:_}},{lie:37}],7:[function(t,e,m){"use strict";var _="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,v=t("pako"),b=t("./utils"),w=t("./stream/GenericWorker"),W=_?"uint8array":"array";function u(t,e){w.call(this,"FlateWorker/"+t),this._pako=null,this._pakoAction=t,this._pakoOptions=e,this.meta={}}m.magic="\b\0",b.inherits(u,w),u.prototype.processChunk=function(t){this.meta=t.meta,null===this._pako&&this._createPako(),this._pako.push(b.transformTo(W,t.data),!1)},u.prototype.flush=function(){w.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},u.prototype.cleanUp=function(){w.prototype.cleanUp.call(this),this._pako=null},u.prototype._createPako=function(){this._pako=new v[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},m.compressWorker=function(t){return new u("Deflate",t)},m.uncompressWorker=function(){return new u("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(t,e,m){"use strict";function I(t,e){var m,_="";for(m=0;m<e;m++)_+=String.fromCharCode(255&t),t>>>=8;return _}function i(t,e,m,v,M,H){var G,K,Y=t.file,X=t.compression,J=H!==b.utf8encode,V=_.transformTo("string",H(Y.name)),q=_.transformTo("string",b.utf8encode(Y.name)),Q=Y.comment,$=_.transformTo("string",H(Q)),tt=_.transformTo("string",b.utf8encode(Q)),et=q.length!==Y.name.length,rt=tt.length!==Q.length,nt="",it="",st="",at=Y.dir,ot=Y.date,ht={crc32:0,compressedSize:0,uncompressedSize:0};e&&!m||(ht.crc32=t.crc32,ht.compressedSize=t.compressedSize,ht.uncompressedSize=t.uncompressedSize);var ut=0;e&&(ut|=8),J||!et&&!rt||(ut|=2048);var ft,lt=0,dt=0;at&&(lt|=16),"UNIX"===M?(dt=798,lt|=((ft=Y.unixPermissions)||(ft=at?16893:33204),(65535&ft)<<16)):(dt=20,lt|=63&(Y.dosPermissions||0)),G=ot.getUTCHours(),G<<=6,G|=ot.getUTCMinutes(),G<<=5,G|=ot.getUTCSeconds()/2,K=ot.getUTCFullYear()-1980,K<<=4,K|=ot.getUTCMonth()+1,K<<=5,K|=ot.getUTCDate(),et&&(nt+="up"+I((it=I(1,1)+I(w(V),4)+q).length,2)+it),rt&&(nt+="uc"+I((st=I(1,1)+I(w($),4)+tt).length,2)+st);var ct="";return ct+="\n\0",ct+=I(ut,2),ct+=X.magic,ct+=I(G,2),ct+=I(K,2),ct+=I(ht.crc32,4),ct+=I(ht.compressedSize,4),ct+=I(ht.uncompressedSize,4),ct+=I(V.length,2),ct+=I(nt.length,2),{fileRecord:W.LOCAL_FILE_HEADER+ct+V+nt,dirRecord:W.CENTRAL_FILE_HEADER+I(dt,2)+ct+I($.length,2)+"\0\0\0\0"+I(lt,4)+I(v,4)+V+nt+$}}var _=t("../utils"),v=t("../stream/GenericWorker"),b=t("../utf8"),w=t("../crc32"),W=t("../signature");function n(t,e,m,_){v.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=e,this.zipPlatform=m,this.encodeFileName=_,this.streamFiles=t,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}_.inherits(n,v),n.prototype.push=function(t){var e=t.meta.percent||0,m=this.entriesCount,_=this._sources.length;this.accumulate?this.contentBuffer.push(t):(this.bytesWritten+=t.data.length,v.prototype.push.call(this,{data:t.data,meta:{currentFile:this.currentFile,percent:m?(e+100*(m-_-1))/m:100}}))},n.prototype.openedSource=function(t){this.currentSourceOffset=this.bytesWritten,this.currentFile=t.file.name;var e=this.streamFiles&&!t.file.dir;if(e){var m=i(t,e,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:m.fileRecord,meta:{percent:0}})}else this.accumulate=!0},n.prototype.closedSource=function(t){this.accumulate=!1;var e,m=this.streamFiles&&!t.file.dir,_=i(t,m,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(_.dirRecord),m)this.push({data:(e=t,W.DATA_DESCRIPTOR+I(e.crc32,4)+I(e.compressedSize,4)+I(e.uncompressedSize,4)),meta:{percent:100}});else for(this.push({data:_.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},n.prototype.flush=function(){for(var t=this.bytesWritten,e=0;e<this.dirRecords.length;e++)this.push({data:this.dirRecords[e],meta:{percent:100}});var m,v,b,w,M,H,G=this.bytesWritten-t,K=(m=this.dirRecords.length,v=G,b=t,w=this.zipComment,M=this.encodeFileName,H=_.transformTo("string",M(w)),W.CENTRAL_DIRECTORY_END+"\0\0\0\0"+I(m,2)+I(m,2)+I(v,4)+I(b,4)+I(H.length,2)+H);this.push({data:K,meta:{percent:100}})},n.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},n.prototype.registerPrevious=function(t){this._sources.push(t);var e=this;return t.on("data",(function(t){e.processChunk(t)})),t.on("end",(function(){e.closedSource(e.previous.streamInfo),e._sources.length?e.prepareNextSource():e.end()})),t.on("error",(function(t){e.error(t)})),this},n.prototype.resume=function(){return!!v.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},n.prototype.error=function(t){var e=this._sources;if(!v.prototype.error.call(this,t))return!1;for(var m=0;m<e.length;m++)try{e[m].error(t)}catch(t){}return!0},n.prototype.lock=function(){v.prototype.lock.call(this);for(var t=this._sources,e=0;e<t.length;e++)t[e].lock()},e.exports=n},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(t,e,m){"use strict";var _=t("../compressions"),v=t("./ZipFileWorker");m.generateWorker=function(t,e,m){var b=new v(e.streamFiles,m,e.platform,e.encodeFileName),w=0;try{t.forEach((function(t,m){w++;var v=function(t,e){var m=t||e,v=_[m];if(!v)throw new Error(m+" is not a valid compression method !");return v}(m.options.compression,e.compression),W=m.options.compressionOptions||e.compressionOptions||{},M=m.dir,H=m.date;m._compressWorker(v,W).withStreamInfo("file",{name:t,dir:M,date:H,comment:m.comment||"",unixPermissions:m.unixPermissions,dosPermissions:m.dosPermissions}).pipe(b)})),b.entriesCount=w}catch(t){b.error(t)}return b}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(t,e,m){"use strict";function n(){if(!(this instanceof n))return new n;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files={},this.comment=null,this.root="",this.clone=function(){var t=new n;for(var e in this)"function"!=typeof this[e]&&(t[e]=this[e]);return t}}(n.prototype=t("./object")).loadAsync=t("./load"),n.support=t("./support"),n.defaults=t("./defaults"),n.version="3.5.0",n.loadAsync=function(t,e){return(new n).loadAsync(t,e)},n.external=t("./external"),e.exports=n},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(t,e,m){"use strict";var _=t("./utils"),v=t("./external"),b=t("./utf8"),w=t("./zipEntries"),W=t("./stream/Crc32Probe"),M=t("./nodejsUtils");function f(t){return new v.Promise((function(e,m){var _=t.decompressed.getContentWorker().pipe(new W);_.on("error",(function(t){m(t)})).on("end",(function(){_.streamInfo.crc32!==t.decompressed.crc32?m(new Error("Corrupted zip : CRC32 mismatch")):e()})).resume()}))}e.exports=function(t,e){var m=this;return e=_.extend(e||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:b.utf8decode}),M.isNode&&M.isStream(t)?v.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):_.prepareContent("the loaded zip file",t,!0,e.optimizedBinaryString,e.base64).then((function(t){var m=new w(e);return m.load(t),m})).then((function(t){var m=[v.Promise.resolve(t)],_=t.files;if(e.checkCRC32)for(var b=0;b<_.length;b++)m.push(f(_[b]));return v.Promise.all(m)})).then((function(t){for(var _=t.shift(),v=_.files,b=0;b<v.length;b++){var w=v[b];m.file(w.fileNameStr,w.decompressed,{binary:!0,optimizedBinaryString:!0,date:w.date,dir:w.dir,comment:w.fileCommentStr.length?w.fileCommentStr:null,unixPermissions:w.unixPermissions,dosPermissions:w.dosPermissions,createFolders:e.createFolders})}return _.zipComment.length&&(m.comment=_.zipComment),m}))}},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(t,e,m){"use strict";var _=t("../utils"),v=t("../stream/GenericWorker");function s(t,e){v.call(this,"Nodejs stream input adapter for "+t),this._upstreamEnded=!1,this._bindStream(e)}_.inherits(s,v),s.prototype._bindStream=function(t){var e=this;(this._stream=t).pause(),t.on("data",(function(t){e.push({data:t,meta:{percent:0}})})).on("error",(function(t){e.isPaused?this.generatedError=t:e.error(t)})).on("end",(function(){e.isPaused?e._upstreamEnded=!0:e.end()}))},s.prototype.pause=function(){return!!v.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!v.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},e.exports=s},{"../stream/GenericWorker":28,"../utils":32}],13:[function(t,e,m){"use strict";var _=t("readable-stream").Readable;function n(t,e,m){_.call(this,e),this._helper=t;var v=this;t.on("data",(function(t,e){v.push(t)||v._helper.pause(),m&&m(e)})).on("error",(function(t){v.emit("error",t)})).on("end",(function(){v.push(null)}))}t("../utils").inherits(n,_),n.prototype._read=function(){this._helper.resume()},e.exports=n},{"../utils":32,"readable-stream":16}],14:[function(t,e,m){"use strict";e.exports={isNode:"undefined"!=typeof Buffer,newBufferFrom:function(t,e){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(t,e);if("number"==typeof t)throw new Error('The "data" argument must not be a number');return new Buffer(t,e)},allocBuffer:function(t){if(Buffer.alloc)return Buffer.alloc(t);var e=new Buffer(t);return e.fill(0),e},isBuffer:function(t){return Buffer.isBuffer(t)},isStream:function(t){return t&&"function"==typeof t.on&&"function"==typeof t.pause&&"function"==typeof t.resume}}},{}],15:[function(t,e,m){"use strict";function s(t,e,m){var _,w=v.getTypeOf(e),G=v.extend(m||{},W);G.date=G.date||new Date,null!==G.compression&&(G.compression=G.compression.toUpperCase()),"string"==typeof G.unixPermissions&&(G.unixPermissions=parseInt(G.unixPermissions,8)),G.unixPermissions&&16384&G.unixPermissions&&(G.dir=!0),G.dosPermissions&&16&G.dosPermissions&&(G.dir=!0),G.dir&&(t=h(t)),G.createFolders&&(_=function(t){"/"===t.slice(-1)&&(t=t.substring(0,t.length-1));var e=t.lastIndexOf("/");return 0<e?t.substring(0,e):""}(t))&&g.call(this,_,!0);var X,J="string"===w&&!1===G.binary&&!1===G.base64;m&&void 0!==m.binary||(G.binary=!J),(e instanceof M&&0===e.uncompressedSize||G.dir||!e||0===e.length)&&(G.base64=!1,G.binary=!0,e="",G.compression="STORE",w="string"),X=e instanceof M||e instanceof b?e:K.isNode&&K.isStream(e)?new Y(t,e):v.prepareContent(t,e,G.binary,G.optimizedBinaryString,G.base64);var V=new H(t,X,G);this.files[t]=V}function h(t){return"/"!==t.slice(-1)&&(t+="/"),t}var _=t("./utf8"),v=t("./utils"),b=t("./stream/GenericWorker"),w=t("./stream/StreamHelper"),W=t("./defaults"),M=t("./compressedObject"),H=t("./zipObject"),G=t("./generate"),K=t("./nodejsUtils"),Y=t("./nodejs/NodejsStreamInputAdapter"),g=function(t,e){return e=void 0!==e?e:W.createFolders,t=h(t),this.files[t]||s.call(this,t,null,{dir:!0,createFolders:e}),this.files[t]};function u(t){return"[object RegExp]"===Object.prototype.toString.call(t)}var X={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(t){var e,m,_;for(e in this.files)this.files.hasOwnProperty(e)&&(_=this.files[e],(m=e.slice(this.root.length,e.length))&&e.slice(0,this.root.length)===this.root&&t(m,_))},filter:function(t){var e=[];return this.forEach((function(m,_){t(m,_)&&e.push(_)})),e},file:function(t,e,m){if(1!==arguments.length)return t=this.root+t,s.call(this,t,e,m),this;if(u(t)){var _=t;return this.filter((function(t,e){return!e.dir&&_.test(t)}))}var v=this.files[this.root+t];return v&&!v.dir?v:null},folder:function(t){if(!t)return this;if(u(t))return this.filter((function(e,m){return m.dir&&t.test(e)}));var e=this.root+t,m=g.call(this,e),_=this.clone();return _.root=m.name,_},remove:function(t){t=this.root+t;var e=this.files[t];if(e||("/"!==t.slice(-1)&&(t+="/"),e=this.files[t]),e&&!e.dir)delete this.files[t];else for(var m=this.filter((function(e,m){return m.name.slice(0,t.length)===t})),_=0;_<m.length;_++)delete this.files[m[_].name];return this},generate:function(t){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(t){var e,m={};try{if((m=v.extend(t||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:_.utf8encode})).type=m.type.toLowerCase(),m.compression=m.compression.toUpperCase(),"binarystring"===m.type&&(m.type="string"),!m.type)throw new Error("No output type specified.");v.checkSupport(m.type),"darwin"!==m.platform&&"freebsd"!==m.platform&&"linux"!==m.platform&&"sunos"!==m.platform||(m.platform="UNIX"),"win32"===m.platform&&(m.platform="DOS");var W=m.comment||this.comment||"";e=G.generateWorker(this,m,W)}catch(t){(e=new b("error")).error(t)}return new w(e,m.type||"string",m.mimeType)},generateAsync:function(t,e){return this.generateInternalStream(t).accumulate(e)},generateNodeStream:function(t,e){return(t=t||{}).type||(t.type="nodebuffer"),this.generateInternalStream(t).toNodejsStream(e)}};e.exports=X},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(t,e,m){e.exports=t("stream")},{stream:void 0}],17:[function(t,e,m){"use strict";var _=t("./DataReader");function i(t){_.call(this,t);for(var e=0;e<this.data.length;e++)t[e]=255&t[e]}t("../utils").inherits(i,_),i.prototype.byteAt=function(t){return this.data[this.zero+t]},i.prototype.lastIndexOfSignature=function(t){for(var e=t.charCodeAt(0),m=t.charCodeAt(1),_=t.charCodeAt(2),v=t.charCodeAt(3),b=this.length-4;0<=b;--b)if(this.data[b]===e&&this.data[b+1]===m&&this.data[b+2]===_&&this.data[b+3]===v)return b-this.zero;return-1},i.prototype.readAndCheckSignature=function(t){var e=t.charCodeAt(0),m=t.charCodeAt(1),_=t.charCodeAt(2),v=t.charCodeAt(3),b=this.readData(4);return e===b[0]&&m===b[1]&&_===b[2]&&v===b[3]},i.prototype.readData=function(t){if(this.checkOffset(t),0===t)return[];var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=i},{"../utils":32,"./DataReader":18}],18:[function(t,e,m){"use strict";var _=t("../utils");function i(t){this.data=t,this.length=t.length,this.index=0,this.zero=0}i.prototype={checkOffset:function(t){this.checkIndex(this.index+t)},checkIndex:function(t){if(this.length<this.zero+t||t<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+t+"). Corrupted zip ?")},setIndex:function(t){this.checkIndex(t),this.index=t},skip:function(t){this.setIndex(this.index+t)},byteAt:function(t){},readInt:function(t){var e,m=0;for(this.checkOffset(t),e=this.index+t-1;e>=this.index;e--)m=(m<<8)+this.byteAt(e);return this.index+=t,m},readString:function(t){return _.transformTo("string",this.readData(t))},readData:function(t){},lastIndexOfSignature:function(t){},readAndCheckSignature:function(t){},readDate:function(){var t=this.readInt(4);return new Date(Date.UTC(1980+(t>>25&127),(t>>21&15)-1,t>>16&31,t>>11&31,t>>5&63,(31&t)<<1))}},e.exports=i},{"../utils":32}],19:[function(t,e,m){"use strict";var _=t("./Uint8ArrayReader");function i(t){_.call(this,t)}t("../utils").inherits(i,_),i.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=i},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(t,e,m){"use strict";var _=t("./DataReader");function i(t){_.call(this,t)}t("../utils").inherits(i,_),i.prototype.byteAt=function(t){return this.data.charCodeAt(this.zero+t)},i.prototype.lastIndexOfSignature=function(t){return this.data.lastIndexOf(t)-this.zero},i.prototype.readAndCheckSignature=function(t){return t===this.readData(4)},i.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=i},{"../utils":32,"./DataReader":18}],21:[function(t,e,m){"use strict";var _=t("./ArrayReader");function i(t){_.call(this,t)}t("../utils").inherits(i,_),i.prototype.readData=function(t){if(this.checkOffset(t),0===t)return new Uint8Array(0);var e=this.data.subarray(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=i},{"../utils":32,"./ArrayReader":17}],22:[function(t,e,m){"use strict";var _=t("../utils"),v=t("../support"),b=t("./ArrayReader"),w=t("./StringReader"),W=t("./NodeBufferReader"),M=t("./Uint8ArrayReader");e.exports=function(t){var e=_.getTypeOf(t);return _.checkSupport(e),"string"!==e||v.uint8array?"nodebuffer"===e?new W(t):v.uint8array?new M(_.transformTo("uint8array",t)):new b(_.transformTo("array",t)):new w(t)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(t,e,m){"use strict";m.LOCAL_FILE_HEADER="PK",m.CENTRAL_FILE_HEADER="PK",m.CENTRAL_DIRECTORY_END="PK",m.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",m.ZIP64_CENTRAL_DIRECTORY_END="PK",m.DATA_DESCRIPTOR="PK\b"},{}],24:[function(t,e,m){"use strict";var _=t("./GenericWorker"),v=t("../utils");function s(t){_.call(this,"ConvertWorker to "+t),this.destType=t}v.inherits(s,_),s.prototype.processChunk=function(t){this.push({data:v.transformTo(this.destType,t.data),meta:t.meta})},e.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(t,e,m){"use strict";var _=t("./GenericWorker"),v=t("../crc32");function s(){_.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}t("../utils").inherits(s,_),s.prototype.processChunk=function(t){this.streamInfo.crc32=v(t.data,this.streamInfo.crc32||0),this.push(t)},e.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(t,e,m){"use strict";var _=t("../utils"),v=t("./GenericWorker");function s(t){v.call(this,"DataLengthProbe for "+t),this.propName=t,this.withStreamInfo(t,0)}_.inherits(s,v),s.prototype.processChunk=function(t){if(t){var e=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=e+t.data.length}v.prototype.processChunk.call(this,t)},e.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(t,e,m){"use strict";var _=t("../utils"),v=t("./GenericWorker");function s(t){v.call(this,"DataWorker");var e=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,t.then((function(t){e.dataIsReady=!0,e.data=t,e.max=t&&t.length||0,e.type=_.getTypeOf(t),e.isPaused||e._tickAndRepeat()}),(function(t){e.error(t)}))}_.inherits(s,v),s.prototype.cleanUp=function(){v.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!v.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,_.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(_.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var t=null,e=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":t=this.data.substring(this.index,e);break;case"uint8array":t=this.data.subarray(this.index,e);break;case"array":case"nodebuffer":t=this.data.slice(this.index,e)}return this.index=e,this.push({data:t,meta:{percent:this.max?this.index/this.max*100:0}})},e.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(t,e,m){"use strict";function n(t){this.name=t||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(t){this.emit("data",t)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(t){this.emit("error",t)}return!0},error:function(t){return!this.isFinished&&(this.isPaused?this.generatedError=t:(this.isFinished=!0,this.emit("error",t),this.previous&&this.previous.error(t),this.cleanUp()),!0)},on:function(t,e){return this._listeners[t].push(e),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(t,e){if(this._listeners[t])for(var m=0;m<this._listeners[t].length;m++)this._listeners[t][m].call(this,e)},pipe:function(t){return t.registerPrevious(this)},registerPrevious:function(t){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.streamInfo=t.streamInfo,this.mergeStreamInfo(),this.previous=t;var e=this;return t.on("data",(function(t){e.processChunk(t)})),t.on("end",(function(){e.end()})),t.on("error",(function(t){e.error(t)})),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var t=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),t=!0),this.previous&&this.previous.resume(),!t},flush:function(){},processChunk:function(t){this.push(t)},withStreamInfo:function(t,e){return this.extraStreamInfo[t]=e,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var t in this.extraStreamInfo)this.extraStreamInfo.hasOwnProperty(t)&&(this.streamInfo[t]=this.extraStreamInfo[t])},lock:function(){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var t="Worker "+this.name;return this.previous?this.previous+" -> "+t:t}},e.exports=n},{}],29:[function(t,e,m){"use strict";var _=t("../utils"),v=t("./ConvertWorker"),b=t("./GenericWorker"),w=t("../base64"),W=t("../support"),M=t("../external"),H=null;if(W.nodestream)try{H=t("../nodejs/NodejsStreamOutputAdapter")}catch(t){}function u(t,e,m){var w=e;switch(e){case"blob":case"arraybuffer":w="uint8array";break;case"base64":w="string"}try{this._internalType=w,this._outputType=e,this._mimeType=m,_.checkSupport(w),this._worker=t.pipe(new v(w)),t.lock()}catch(t){this._worker=new b("error"),this._worker.error(t)}}u.prototype={accumulate:function(t){return e=this,m=t,new M.Promise((function(t,v){var b=[],W=e._internalType,M=e._outputType,H=e._mimeType;e.on("data",(function(t,e){b.push(t),m&&m(e)})).on("error",(function(t){b=[],v(t)})).on("end",(function(){try{var e=function(t,e,m){switch(t){case"blob":return _.newBlob(_.transformTo("arraybuffer",e),m);case"base64":return w.encode(e);default:return _.transformTo(t,e)}}(M,function(t,e){var m,_=0,v=null,b=0;for(m=0;m<e.length;m++)b+=e[m].length;switch(t){case"string":return e.join("");case"array":return Array.prototype.concat.apply([],e);case"uint8array":for(v=new Uint8Array(b),m=0;m<e.length;m++)v.set(e[m],_),_+=e[m].length;return v;case"nodebuffer":return Buffer.concat(e);default:throw new Error("concat : unsupported type '"+t+"'")}}(W,b),H);t(e)}catch(e){v(e)}b=[]})).resume()}));var e,m},on:function(t,e){var m=this;return"data"===t?this._worker.on(t,(function(t){e.call(m,t.data,t.meta)})):this._worker.on(t,(function(){_.delay(e,arguments,m)})),this},resume:function(){return _.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(t){if(_.checkSupport("nodestream"),"nodebuffer"!==this._outputType)throw new Error(this._outputType+" is not supported by this method");return new H(this,{objectMode:"nodebuffer"!==this._outputType},t)}},e.exports=u},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(t,e,m){"use strict";if(m.base64=!0,m.array=!0,m.string=!0,m.arraybuffer="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array,m.nodebuffer="undefined"!=typeof Buffer,m.uint8array="undefined"!=typeof Uint8Array,"undefined"==typeof ArrayBuffer)m.blob=!1;else{var _=new ArrayBuffer(0);try{m.blob=0===new Blob([_],{type:"application/zip"}).size}catch(t){try{var v=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);v.append(_),m.blob=0===v.getBlob("application/zip").size}catch(t){m.blob=!1}}}try{m.nodestream=!!t("readable-stream").Readable}catch(t){m.nodestream=!1}},{"readable-stream":16}],31:[function(t,e,m){"use strict";for(var _=t("./utils"),v=t("./support"),b=t("./nodejsUtils"),w=t("./stream/GenericWorker"),W=new Array(256),M=0;M<256;M++)W[M]=252<=M?6:248<=M?5:240<=M?4:224<=M?3:192<=M?2:1;function a(){w.call(this,"utf-8 decode"),this.leftOver=null}function f(){w.call(this,"utf-8 encode")}W[254]=W[254]=1,m.utf8encode=function(t){return v.nodebuffer?b.newBufferFrom(t,"utf-8"):function(t){var e,m,_,b,w,W=t.length,M=0;for(b=0;b<W;b++)55296==(64512&(m=t.charCodeAt(b)))&&b+1<W&&56320==(64512&(_=t.charCodeAt(b+1)))&&(m=65536+(m-55296<<10)+(_-56320),b++),M+=m<128?1:m<2048?2:m<65536?3:4;for(e=v.uint8array?new Uint8Array(M):new Array(M),b=w=0;w<M;b++)55296==(64512&(m=t.charCodeAt(b)))&&b+1<W&&56320==(64512&(_=t.charCodeAt(b+1)))&&(m=65536+(m-55296<<10)+(_-56320),b++),m<128?e[w++]=m:(m<2048?e[w++]=192|m>>>6:(m<65536?e[w++]=224|m>>>12:(e[w++]=240|m>>>18,e[w++]=128|m>>>12&63),e[w++]=128|m>>>6&63),e[w++]=128|63&m);return e}(t)},m.utf8decode=function(t){return v.nodebuffer?_.transformTo("nodebuffer",t).toString("utf-8"):function(t){var e,m,v,b,w=t.length,M=new Array(2*w);for(e=m=0;e<w;)if((v=t[e++])<128)M[m++]=v;else if(4<(b=W[v]))M[m++]=65533,e+=b-1;else{for(v&=2===b?31:3===b?15:7;1<b&&e<w;)v=v<<6|63&t[e++],b--;1<b?M[m++]=65533:v<65536?M[m++]=v:(v-=65536,M[m++]=55296|v>>10&1023,M[m++]=56320|1023&v)}return M.length!==m&&(M.subarray?M=M.subarray(0,m):M.length=m),_.applyFromCharCode(M)}(t=_.transformTo(v.uint8array?"uint8array":"array",t))},_.inherits(a,w),a.prototype.processChunk=function(t){var e=_.transformTo(v.uint8array?"uint8array":"array",t.data);if(this.leftOver&&this.leftOver.length){if(v.uint8array){var b=e;(e=new Uint8Array(b.length+this.leftOver.length)).set(this.leftOver,0),e.set(b,this.leftOver.length)}else e=this.leftOver.concat(e);this.leftOver=null}var w=function(t,e){var m;for((e=e||t.length)>t.length&&(e=t.length),m=e-1;0<=m&&128==(192&t[m]);)m--;return m<0||0===m?e:m+W[t[m]]>e?m:e}(e),M=e;w!==e.length&&(v.uint8array?(M=e.subarray(0,w),this.leftOver=e.subarray(w,e.length)):(M=e.slice(0,w),this.leftOver=e.slice(w,e.length))),this.push({data:m.utf8decode(M),meta:t.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:m.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},m.Utf8DecodeWorker=a,_.inherits(f,w),f.prototype.processChunk=function(t){this.push({data:m.utf8encode(t.data),meta:t.meta})},m.Utf8EncodeWorker=f},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(t,e,m){"use strict";var _=t("./support"),v=t("./base64"),b=t("./nodejsUtils"),w=t("set-immediate-shim"),W=t("./external");function i(t){return t}function l(t,e){for(var m=0;m<t.length;++m)e[m]=255&t.charCodeAt(m);return e}m.newBlob=function(t,e){m.checkSupport("blob");try{return new Blob([t],{type:e})}catch(m){try{var _=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return _.append(t),_.getBlob(e)}catch(t){throw new Error("Bug : can't construct the Blob.")}}};var M={stringifyByChunk:function(t,e,m){var _=[],v=0,b=t.length;if(b<=m)return String.fromCharCode.apply(null,t);for(;v<b;)"array"===e||"nodebuffer"===e?_.push(String.fromCharCode.apply(null,t.slice(v,Math.min(v+m,b)))):_.push(String.fromCharCode.apply(null,t.subarray(v,Math.min(v+m,b)))),v+=m;return _.join("")},stringifyByChar:function(t){for(var e="",m=0;m<t.length;m++)e+=String.fromCharCode(t[m]);return e},applyCanBeUsed:{uint8array:function(){try{return _.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(t){return!1}}(),nodebuffer:function(){try{return _.nodebuffer&&1===String.fromCharCode.apply(null,b.allocBuffer(1)).length}catch(t){return!1}}()}};function a(t){var e=65536,_=m.getTypeOf(t),v=!0;if("uint8array"===_?v=M.applyCanBeUsed.uint8array:"nodebuffer"===_&&(v=M.applyCanBeUsed.nodebuffer),v)for(;1<e;)try{return M.stringifyByChunk(t,_,e)}catch(t){e=Math.floor(e/2)}return M.stringifyByChar(t)}function d(t,e){for(var m=0;m<t.length;m++)e[m]=t[m];return e}m.applyFromCharCode=a;var H={};H.string={string:i,array:function(t){return l(t,new Array(t.length))},arraybuffer:function(t){return H.string.uint8array(t).buffer},uint8array:function(t){return l(t,new Uint8Array(t.length))},nodebuffer:function(t){return l(t,b.allocBuffer(t.length))}},H.array={string:a,array:i,arraybuffer:function(t){return new Uint8Array(t).buffer},uint8array:function(t){return new Uint8Array(t)},nodebuffer:function(t){return b.newBufferFrom(t)}},H.arraybuffer={string:function(t){return a(new Uint8Array(t))},array:function(t){return d(new Uint8Array(t),new Array(t.byteLength))},arraybuffer:i,uint8array:function(t){return new Uint8Array(t)},nodebuffer:function(t){return b.newBufferFrom(new Uint8Array(t))}},H.uint8array={string:a,array:function(t){return d(t,new Array(t.length))},arraybuffer:function(t){return t.buffer},uint8array:i,nodebuffer:function(t){return b.newBufferFrom(t)}},H.nodebuffer={string:a,array:function(t){return d(t,new Array(t.length))},arraybuffer:function(t){return H.nodebuffer.uint8array(t).buffer},uint8array:function(t){return d(t,new Uint8Array(t.length))},nodebuffer:i},m.transformTo=function(t,e){if(e=e||"",!t)return e;m.checkSupport(t);var _=m.getTypeOf(e);return H[_][t](e)},m.getTypeOf=function(t){return"string"==typeof t?"string":"[object Array]"===Object.prototype.toString.call(t)?"array":_.nodebuffer&&b.isBuffer(t)?"nodebuffer":_.uint8array&&t instanceof Uint8Array?"uint8array":_.arraybuffer&&t instanceof ArrayBuffer?"arraybuffer":void 0},m.checkSupport=function(t){if(!_[t.toLowerCase()])throw new Error(t+" is not supported by this platform")},m.MAX_VALUE_16BITS=65535,m.MAX_VALUE_32BITS=-1,m.pretty=function(t){var e,m,_="";for(m=0;m<(t||"").length;m++)_+="\\x"+((e=t.charCodeAt(m))<16?"0":"")+e.toString(16).toUpperCase();return _},m.delay=function(t,e,m){w((function(){t.apply(m||null,e||[])}))},m.inherits=function(t,e){function r(){}r.prototype=e.prototype,t.prototype=new r},m.extend=function(){var t,e,m={};for(t=0;t<arguments.length;t++)for(e in arguments[t])arguments[t].hasOwnProperty(e)&&void 0===m[e]&&(m[e]=arguments[t][e]);return m},m.prepareContent=function(t,e,b,w,M){return W.Promise.resolve(e).then((function(t){return _.blob&&(t instanceof Blob||-1!==["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(t)))&&"undefined"!=typeof FileReader?new W.Promise((function(e,m){var _=new FileReader;_.onload=function(t){e(t.target.result)},_.onerror=function(t){m(t.target.error)},_.readAsArrayBuffer(t)})):t})).then((function(e){var H,G=m.getTypeOf(e);return G?("arraybuffer"===G?e=m.transformTo("uint8array",e):"string"===G&&(M?e=v.decode(e):b&&!0!==w&&(e=l(H=e,_.uint8array?new Uint8Array(H.length):new Array(H.length)))),e):W.Promise.reject(new Error("Can't read the data of '"+t+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))}))}},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,"set-immediate-shim":54}],33:[function(t,e,m){"use strict";var _=t("./reader/readerFor"),v=t("./utils"),b=t("./signature"),w=t("./zipEntry"),W=(t("./utf8"),t("./support"));function u(t){this.files=[],this.loadOptions=t}u.prototype={checkSignature:function(t){if(!this.reader.readAndCheckSignature(t)){this.reader.index-=4;var e=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+v.pretty(e)+", expected "+v.pretty(t)+")")}},isSignature:function(t,e){var m=this.reader.index;this.reader.setIndex(t);var _=this.reader.readString(4)===e;return this.reader.setIndex(m),_},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var t=this.reader.readData(this.zipCommentLength),e=W.uint8array?"uint8array":"array",m=v.transformTo(e,t);this.zipComment=this.loadOptions.decodeFileName(m)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var t,e,m,_=this.zip64EndOfCentralSize-44;0<_;)t=this.reader.readInt(2),e=this.reader.readInt(4),m=this.reader.readData(e),this.zip64ExtensibleData[t]={id:t,length:e,value:m}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var t,e;for(t=0;t<this.files.length;t++)e=this.files[t],this.reader.setIndex(e.localHeaderOffset),this.checkSignature(b.LOCAL_FILE_HEADER),e.readLocalPart(this.reader),e.handleUTF8(),e.processAttributes()},readCentralDir:function(){var t;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(b.CENTRAL_FILE_HEADER);)(t=new w({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(t);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var t=this.reader.lastIndexOfSignature(b.CENTRAL_DIRECTORY_END);if(t<0)throw this.isSignature(0,b.LOCAL_FILE_HEADER)?new Error("Corrupted zip: can't find end of central directory"):new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");this.reader.setIndex(t);var e=t;if(this.checkSignature(b.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===v.MAX_VALUE_16BITS||this.diskWithCentralDirStart===v.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===v.MAX_VALUE_16BITS||this.centralDirRecords===v.MAX_VALUE_16BITS||this.centralDirSize===v.MAX_VALUE_32BITS||this.centralDirOffset===v.MAX_VALUE_32BITS){if(this.zip64=!0,(t=this.reader.lastIndexOfSignature(b.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(t),this.checkSignature(b.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,b.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(b.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(b.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var m=this.centralDirOffset+this.centralDirSize;this.zip64&&(m+=20,m+=12+this.zip64EndOfCentralSize);var _=e-m;if(0<_)this.isSignature(e,b.CENTRAL_FILE_HEADER)||(this.reader.zero=_);else if(_<0)throw new Error("Corrupted zip: missing "+Math.abs(_)+" bytes.")},prepareReader:function(t){this.reader=_(t)},load:function(t){this.prepareReader(t),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},e.exports=u},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utf8":31,"./utils":32,"./zipEntry":34}],34:[function(t,e,m){"use strict";var _=t("./reader/readerFor"),v=t("./utils"),b=t("./compressedObject"),w=t("./crc32"),W=t("./utf8"),M=t("./compressions"),H=t("./support");function f(t,e){this.options=t,this.loadOptions=e}f.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(t){var e,m;if(t.skip(22),this.fileNameLength=t.readInt(2),m=t.readInt(2),this.fileName=t.readData(this.fileNameLength),t.skip(m),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if(null===(e=function(t){for(var e in M)if(M.hasOwnProperty(e)&&M[e].magic===t)return M[e];return null}(this.compressionMethod)))throw new Error("Corrupted zip : compression "+v.pretty(this.compressionMethod)+" unknown (inner file : "+v.transformTo("string",this.fileName)+")");this.decompressed=new b(this.compressedSize,this.uncompressedSize,this.crc32,e,t.readData(this.compressedSize))},readCentralPart:function(t){this.versionMadeBy=t.readInt(2),t.skip(2),this.bitFlag=t.readInt(2),this.compressionMethod=t.readString(2),this.date=t.readDate(),this.crc32=t.readInt(4),this.compressedSize=t.readInt(4),this.uncompressedSize=t.readInt(4);var e=t.readInt(2);if(this.extraFieldsLength=t.readInt(2),this.fileCommentLength=t.readInt(2),this.diskNumberStart=t.readInt(2),this.internalFileAttributes=t.readInt(2),this.externalFileAttributes=t.readInt(4),this.localHeaderOffset=t.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");t.skip(e),this.readExtraFields(t),this.parseZIP64ExtraField(t),this.fileComment=t.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var t=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==t&&(this.dosPermissions=63&this.externalFileAttributes),3==t&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(t){if(this.extraFields[1]){var e=_(this.extraFields[1].value);this.uncompressedSize===v.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===v.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===v.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===v.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(t){var e,m,_,v=t.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});t.index+4<v;)e=t.readInt(2),m=t.readInt(2),_=t.readData(m),this.extraFields[e]={id:e,length:m,value:_};t.setIndex(v)},handleUTF8:function(){var t=H.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=W.utf8decode(this.fileName),this.fileCommentStr=W.utf8decode(this.fileComment);else{var e=this.findExtraFieldUnicodePath();if(null!==e)this.fileNameStr=e;else{var m=v.transformTo(t,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(m)}var _=this.findExtraFieldUnicodeComment();if(null!==_)this.fileCommentStr=_;else{var b=v.transformTo(t,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(b)}}},findExtraFieldUnicodePath:function(){var t=this.extraFields[28789];if(t){var e=_(t.value);return 1!==e.readInt(1)||w(this.fileName)!==e.readInt(4)?null:W.utf8decode(e.readData(t.length-5))}return null},findExtraFieldUnicodeComment:function(){var t=this.extraFields[25461];if(t){var e=_(t.value);return 1!==e.readInt(1)||w(this.fileComment)!==e.readInt(4)?null:W.utf8decode(e.readData(t.length-5))}return null}},e.exports=f},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(t,e,m){"use strict";function n(t,e,m){this.name=t,this.dir=m.dir,this.date=m.date,this.comment=m.comment,this.unixPermissions=m.unixPermissions,this.dosPermissions=m.dosPermissions,this._data=e,this._dataBinary=m.binary,this.options={compression:m.compression,compressionOptions:m.compressionOptions}}var _=t("./stream/StreamHelper"),v=t("./stream/DataWorker"),b=t("./utf8"),w=t("./compressedObject"),W=t("./stream/GenericWorker");n.prototype={internalStream:function(t){var e=null,m="string";try{if(!t)throw new Error("No output type specified.");var v="string"===(m=t.toLowerCase())||"text"===m;"binarystring"!==m&&"text"!==m||(m="string"),e=this._decompressWorker();var w=!this._dataBinary;w&&!v&&(e=e.pipe(new b.Utf8EncodeWorker)),!w&&v&&(e=e.pipe(new b.Utf8DecodeWorker))}catch(t){(e=new W("error")).error(t)}return new _(e,m,"")},async:function(t,e){return this.internalStream(t).accumulate(e)},nodeStream:function(t,e){return this.internalStream(t||"nodebuffer").toNodejsStream(e)},_compressWorker:function(t,e){if(this._data instanceof w&&this._data.compression.magic===t.magic)return this._data.getCompressedWorker();var m=this._decompressWorker();return this._dataBinary||(m=m.pipe(new b.Utf8EncodeWorker)),w.createWorkerFrom(m,t,e)},_decompressWorker:function(){return this._data instanceof w?this._data.getContentWorker():this._data instanceof W?this._data:new v(this._data)}};for(var M=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],f=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},H=0;H<M.length;H++)n.prototype[M[H]]=f;e.exports=n},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(t,e,_){(function(t){"use strict";var m,_,v=t.MutationObserver||t.WebKitMutationObserver;if(v){var b=0,w=new v(h),W=t.document.createTextNode("");w.observe(W,{characterData:!0}),m=function(){W.data=b=++b%2}}else if(t.setImmediate||void 0===t.MessageChannel)m="document"in t&&"onreadystatechange"in t.document.createElement("script")?function(){var e=t.document.createElement("script");e.onreadystatechange=function(){h(),e.onreadystatechange=null,e.parentNode.removeChild(e),e=null},t.document.documentElement.appendChild(e)}:function(){setTimeout(h,0)};else{var M=new t.MessageChannel;M.port1.onmessage=h,m=function(){M.port2.postMessage(0)}}var H=[];function h(){var t,e;_=!0;for(var m=H.length;m;){for(e=H,H=[],t=-1;++t<m;)e[t]();m=H.length}_=!1}e.exports=function(t){1!==H.push(t)||_||m()}}).call(this,void 0!==m?m:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],37:[function(t,e,m){"use strict";var _=t("immediate");function h(){}var v={},b=["REJECTED"],w=["FULFILLED"],W=["PENDING"];function o(t){if("function"!=typeof t)throw new TypeError("resolver must be a function");this.state=W,this.queue=[],this.outcome=void 0,t!==h&&c(this,t)}function u(t,e,m){this.promise=t,"function"==typeof e&&(this.onFulfilled=e,this.callFulfilled=this.otherCallFulfilled),"function"==typeof m&&(this.onRejected=m,this.callRejected=this.otherCallRejected)}function l(t,e,m){_((function(){var _;try{_=e(m)}catch(_){return v.reject(t,_)}_===t?v.reject(t,new TypeError("Cannot resolve promise with itself")):v.resolve(t,_)}))}function d(t){var e=t&&t.then;if(t&&("object"==typeof t||"function"==typeof t)&&"function"==typeof e)return function(){e.apply(t,arguments)}}function c(t,e){var m=!1;function n(e){m||(m=!0,v.reject(t,e))}function i(e){m||(m=!0,v.resolve(t,e))}var _=p((function(){e(i,n)}));"error"===_.status&&n(_.value)}function p(t,e){var m={};try{m.value=t(e),m.status="success"}catch(t){m.status="error",m.value=t}return m}(e.exports=o).prototype.finally=function(t){if("function"!=typeof t)return this;var e=this.constructor;return this.then((function(m){return e.resolve(t()).then((function(){return m}))}),(function(m){return e.resolve(t()).then((function(){throw m}))}))},o.prototype.catch=function(t){return this.then(null,t)},o.prototype.then=function(t,e){if("function"!=typeof t&&this.state===w||"function"!=typeof e&&this.state===b)return this;var m=new this.constructor(h);return this.state!==W?l(m,this.state===w?t:e,this.outcome):this.queue.push(new u(m,t,e)),m},u.prototype.callFulfilled=function(t){v.resolve(this.promise,t)},u.prototype.otherCallFulfilled=function(t){l(this.promise,this.onFulfilled,t)},u.prototype.callRejected=function(t){v.reject(this.promise,t)},u.prototype.otherCallRejected=function(t){l(this.promise,this.onRejected,t)},v.resolve=function(t,e){var m=p(d,e);if("error"===m.status)return v.reject(t,m.value);var _=m.value;if(_)c(t,_);else{t.state=w,t.outcome=e;for(var b=-1,W=t.queue.length;++b<W;)t.queue[b].callFulfilled(e)}return t},v.reject=function(t,e){t.state=b,t.outcome=e;for(var m=-1,_=t.queue.length;++m<_;)t.queue[m].callRejected(e);return t},o.resolve=function(t){return t instanceof this?t:v.resolve(new this(h),t)},o.reject=function(t){var e=new this(h);return v.reject(e,t)},o.all=function(t){var e=this;if("[object Array]"!==Object.prototype.toString.call(t))return this.reject(new TypeError("must be an array"));var m=t.length,_=!1;if(!m)return this.resolve([]);for(var b=new Array(m),w=0,W=-1,M=new this(h);++W<m;)u(t[W],W);return M;function u(t,W){e.resolve(t).then((function(t){b[W]=t,++w!==m||_||(_=!0,v.resolve(M,b))}),(function(t){_||(_=!0,v.reject(M,t))}))}},o.race=function(t){if("[object Array]"!==Object.prototype.toString.call(t))return this.reject(new TypeError("must be an array"));var e=t.length,m=!1;if(!e)return this.resolve([]);for(var _,b=-1,w=new this(h);++b<e;)_=t[b],this.resolve(_).then((function(t){m||(m=!0,v.resolve(w,t))}),(function(t){m||(m=!0,v.reject(w,t))}));return w}},{immediate:36}],38:[function(t,e,m){"use strict";var _={};(0,t("./lib/utils/common").assign)(_,t("./lib/deflate"),t("./lib/inflate"),t("./lib/zlib/constants")),e.exports=_},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(t,e,m){"use strict";var _=t("./zlib/deflate"),v=t("./utils/common"),b=t("./utils/strings"),w=t("./zlib/messages"),W=t("./zlib/zstream"),M=Object.prototype.toString,H=0,G=-1,K=0,Y=8;function p(t){if(!(this instanceof p))return new p(t);this.options=v.assign({level:G,method:Y,chunkSize:16384,windowBits:15,memLevel:8,strategy:K,to:""},t||{});var e=this.options;e.raw&&0<e.windowBits?e.windowBits=-e.windowBits:e.gzip&&0<e.windowBits&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new W,this.strm.avail_out=0;var m=_.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(m!==H)throw new Error(w[m]);if(e.header&&_.deflateSetHeader(this.strm,e.header),e.dictionary){var X;if(X="string"==typeof e.dictionary?b.string2buf(e.dictionary):"[object ArrayBuffer]"===M.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,(m=_.deflateSetDictionary(this.strm,X))!==H)throw new Error(w[m]);this._dict_set=!0}}function n(t,e){var m=new p(e);if(m.push(t,!0),m.err)throw m.msg||w[m.err];return m.result}p.prototype.push=function(t,e){var m,w,W=this.strm,G=this.options.chunkSize;if(this.ended)return!1;w=e===~~e?e:!0===e?4:0,"string"==typeof t?W.input=b.string2buf(t):"[object ArrayBuffer]"===M.call(t)?W.input=new Uint8Array(t):W.input=t,W.next_in=0,W.avail_in=W.input.length;do{if(0===W.avail_out&&(W.output=new v.Buf8(G),W.next_out=0,W.avail_out=G),1!==(m=_.deflate(W,w))&&m!==H)return this.onEnd(m),!(this.ended=!0);0!==W.avail_out&&(0!==W.avail_in||4!==w&&2!==w)||("string"===this.options.to?this.onData(b.buf2binstring(v.shrinkBuf(W.output,W.next_out))):this.onData(v.shrinkBuf(W.output,W.next_out)))}while((0<W.avail_in||0===W.avail_out)&&1!==m);return 4===w?(m=_.deflateEnd(this.strm),this.onEnd(m),this.ended=!0,m===H):2!==w||(this.onEnd(H),!(W.avail_out=0))},p.prototype.onData=function(t){this.chunks.push(t)},p.prototype.onEnd=function(t){t===H&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=v.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},m.Deflate=p,m.deflate=n,m.deflateRaw=function(t,e){return(e=e||{}).raw=!0,n(t,e)},m.gzip=function(t,e){return(e=e||{}).gzip=!0,n(t,e)}},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(t,e,m){"use strict";var _=t("./zlib/inflate"),v=t("./utils/common"),b=t("./utils/strings"),w=t("./zlib/constants"),W=t("./zlib/messages"),M=t("./zlib/zstream"),H=t("./zlib/gzheader"),G=Object.prototype.toString;function a(t){if(!(this instanceof a))return new a(t);this.options=v.assign({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&0<=e.windowBits&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(0<=e.windowBits&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),15<e.windowBits&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new M,this.strm.avail_out=0;var m=_.inflateInit2(this.strm,e.windowBits);if(m!==w.Z_OK)throw new Error(W[m]);this.header=new H,_.inflateGetHeader(this.strm,this.header)}function o(t,e){var m=new a(e);if(m.push(t,!0),m.err)throw m.msg||W[m.err];return m.result}a.prototype.push=function(t,e){var m,W,M,H,K,Y,X=this.strm,J=this.options.chunkSize,V=this.options.dictionary,q=!1;if(this.ended)return!1;W=e===~~e?e:!0===e?w.Z_FINISH:w.Z_NO_FLUSH,"string"==typeof t?X.input=b.binstring2buf(t):"[object ArrayBuffer]"===G.call(t)?X.input=new Uint8Array(t):X.input=t,X.next_in=0,X.avail_in=X.input.length;do{if(0===X.avail_out&&(X.output=new v.Buf8(J),X.next_out=0,X.avail_out=J),(m=_.inflate(X,w.Z_NO_FLUSH))===w.Z_NEED_DICT&&V&&(Y="string"==typeof V?b.string2buf(V):"[object ArrayBuffer]"===G.call(V)?new Uint8Array(V):V,m=_.inflateSetDictionary(this.strm,Y)),m===w.Z_BUF_ERROR&&!0===q&&(m=w.Z_OK,q=!1),m!==w.Z_STREAM_END&&m!==w.Z_OK)return this.onEnd(m),!(this.ended=!0);X.next_out&&(0!==X.avail_out&&m!==w.Z_STREAM_END&&(0!==X.avail_in||W!==w.Z_FINISH&&W!==w.Z_SYNC_FLUSH)||("string"===this.options.to?(M=b.utf8border(X.output,X.next_out),H=X.next_out-M,K=b.buf2string(X.output,M),X.next_out=H,X.avail_out=J-H,H&&v.arraySet(X.output,X.output,M,H,0),this.onData(K)):this.onData(v.shrinkBuf(X.output,X.next_out)))),0===X.avail_in&&0===X.avail_out&&(q=!0)}while((0<X.avail_in||0===X.avail_out)&&m!==w.Z_STREAM_END);return m===w.Z_STREAM_END&&(W=w.Z_FINISH),W===w.Z_FINISH?(m=_.inflateEnd(this.strm),this.onEnd(m),this.ended=!0,m===w.Z_OK):W!==w.Z_SYNC_FLUSH||(this.onEnd(w.Z_OK),!(X.avail_out=0))},a.prototype.onData=function(t){this.chunks.push(t)},a.prototype.onEnd=function(t){t===w.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=v.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},m.Inflate=a,m.inflate=o,m.inflateRaw=function(t,e){return(e=e||{}).raw=!0,o(t,e)},m.ungzip=o},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(t,e,m){"use strict";var _="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;m.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var m=e.shift();if(m){if("object"!=typeof m)throw new TypeError(m+"must be non-object");for(var _ in m)m.hasOwnProperty(_)&&(t[_]=m[_])}}return t},m.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var v={arraySet:function(t,e,m,_,v){if(e.subarray&&t.subarray)t.set(e.subarray(m,m+_),v);else for(var b=0;b<_;b++)t[v+b]=e[m+b]},flattenChunks:function(t){var e,m,_,v,b,w;for(e=_=0,m=t.length;e<m;e++)_+=t[e].length;for(w=new Uint8Array(_),e=v=0,m=t.length;e<m;e++)b=t[e],w.set(b,v),v+=b.length;return w}},b={arraySet:function(t,e,m,_,v){for(var b=0;b<_;b++)t[v+b]=e[m+b]},flattenChunks:function(t){return[].concat.apply([],t)}};m.setTyped=function(t){t?(m.Buf8=Uint8Array,m.Buf16=Uint16Array,m.Buf32=Int32Array,m.assign(m,v)):(m.Buf8=Array,m.Buf16=Array,m.Buf32=Array,m.assign(m,b))},m.setTyped(_)},{}],42:[function(t,e,m){"use strict";var _=t("./common"),v=!0,b=!0;try{String.fromCharCode.apply(null,[0])}catch(t){v=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){b=!1}for(var w=new _.Buf8(256),W=0;W<256;W++)w[W]=252<=W?6:248<=W?5:240<=W?4:224<=W?3:192<=W?2:1;function f(t,e){if(e<65537&&(t.subarray&&b||!t.subarray&&v))return String.fromCharCode.apply(null,_.shrinkBuf(t,e));for(var m="",w=0;w<e;w++)m+=String.fromCharCode(t[w]);return m}w[254]=w[254]=1,m.string2buf=function(t){var e,m,v,b,w,W=t.length,M=0;for(b=0;b<W;b++)55296==(64512&(m=t.charCodeAt(b)))&&b+1<W&&56320==(64512&(v=t.charCodeAt(b+1)))&&(m=65536+(m-55296<<10)+(v-56320),b++),M+=m<128?1:m<2048?2:m<65536?3:4;for(e=new _.Buf8(M),b=w=0;w<M;b++)55296==(64512&(m=t.charCodeAt(b)))&&b+1<W&&56320==(64512&(v=t.charCodeAt(b+1)))&&(m=65536+(m-55296<<10)+(v-56320),b++),m<128?e[w++]=m:(m<2048?e[w++]=192|m>>>6:(m<65536?e[w++]=224|m>>>12:(e[w++]=240|m>>>18,e[w++]=128|m>>>12&63),e[w++]=128|m>>>6&63),e[w++]=128|63&m);return e},m.buf2binstring=function(t){return f(t,t.length)},m.binstring2buf=function(t){for(var e=new _.Buf8(t.length),m=0,v=e.length;m<v;m++)e[m]=t.charCodeAt(m);return e},m.buf2string=function(t,e){var m,_,v,b,W=e||t.length,M=new Array(2*W);for(m=_=0;m<W;)if((v=t[m++])<128)M[_++]=v;else if(4<(b=w[v]))M[_++]=65533,m+=b-1;else{for(v&=2===b?31:3===b?15:7;1<b&&m<W;)v=v<<6|63&t[m++],b--;1<b?M[_++]=65533:v<65536?M[_++]=v:(v-=65536,M[_++]=55296|v>>10&1023,M[_++]=56320|1023&v)}return f(M,_)},m.utf8border=function(t,e){var m;for((e=e||t.length)>t.length&&(e=t.length),m=e-1;0<=m&&128==(192&t[m]);)m--;return m<0||0===m?e:m+w[t[m]]>e?m:e}},{"./common":41}],43:[function(t,e,m){"use strict";e.exports=function(t,e,m,_){for(var v=65535&t|0,b=t>>>16&65535|0,w=0;0!==m;){for(m-=w=2e3<m?2e3:m;b=b+(v=v+e[_++]|0)|0,--w;);v%=65521,b%=65521}return v|b<<16|0}},{}],44:[function(t,e,m){"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(t,e,m){"use strict";var _=function(){for(var t,e=[],m=0;m<256;m++){t=m;for(var _=0;_<8;_++)t=1&t?3988292384^t>>>1:t>>>1;e[m]=t}return e}();e.exports=function(t,e,m,v){var b=_,w=v+m;t^=-1;for(var W=v;W<w;W++)t=t>>>8^b[255&(t^e[W])];return-1^t}},{}],46:[function(t,e,m){"use strict";var _,v=t("../utils/common"),b=t("./trees"),w=t("./adler32"),W=t("./crc32"),M=t("./messages"),H=0,G=0,K=-2,Y=2,X=8,J=286,V=30,q=19,Q=2*J+1,$=15,tt=3,et=258,rt=et+tt+1,nt=42,it=113;function S(t,e){return t.msg=M[e],e}function z(t){return(t<<1)-(4<t?9:0)}function E(t){for(var e=t.length;0<=--e;)t[e]=0}function C(t){var e=t.state,m=e.pending;m>t.avail_out&&(m=t.avail_out),0!==m&&(v.arraySet(t.output,e.pending_buf,e.pending_out,m,t.next_out),t.next_out+=m,e.pending_out+=m,t.total_out+=m,t.avail_out-=m,e.pending-=m,0===e.pending&&(e.pending_out=0))}function A(t,e){b._tr_flush_block(t,0<=t.block_start?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,C(t.strm)}function I(t,e){t.pending_buf[t.pending++]=e}function O(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function B(t,e){var m,_,v=t.max_chain_length,b=t.strstart,w=t.prev_length,W=t.nice_match,M=t.strstart>t.w_size-rt?t.strstart-(t.w_size-rt):0,H=t.window,G=t.w_mask,K=t.prev,Y=t.strstart+et,X=H[b+w-1],J=H[b+w];t.prev_length>=t.good_match&&(v>>=2),W>t.lookahead&&(W=t.lookahead);do{if(H[(m=e)+w]===J&&H[m+w-1]===X&&H[m]===H[b]&&H[++m]===H[b+1]){b+=2,m++;do{}while(H[++b]===H[++m]&&H[++b]===H[++m]&&H[++b]===H[++m]&&H[++b]===H[++m]&&H[++b]===H[++m]&&H[++b]===H[++m]&&H[++b]===H[++m]&&H[++b]===H[++m]&&b<Y);if(_=et-(Y-b),b=Y-et,w<_){if(t.match_start=e,W<=(w=_))break;X=H[b+w-1],J=H[b+w]}}}while((e=K[e&G])>M&&0!=--v);return w<=t.lookahead?w:t.lookahead}function T(t){var e,m,_,b,M,H,G,K,Y,X,J=t.w_size;do{if(b=t.window_size-t.lookahead-t.strstart,t.strstart>=J+(J-rt)){for(v.arraySet(t.window,t.window,J,J,0),t.match_start-=J,t.strstart-=J,t.block_start-=J,e=m=t.hash_size;_=t.head[--e],t.head[e]=J<=_?_-J:0,--m;);for(e=m=J;_=t.prev[--e],t.prev[e]=J<=_?_-J:0,--m;);b+=J}if(0===t.strm.avail_in)break;if(H=t.strm,G=t.window,K=t.strstart+t.lookahead,X=void 0,(Y=b)<(X=H.avail_in)&&(X=Y),m=0===X?0:(H.avail_in-=X,v.arraySet(G,H.input,H.next_in,X,K),1===H.state.wrap?H.adler=w(H.adler,G,X,K):2===H.state.wrap&&(H.adler=W(H.adler,G,X,K)),H.next_in+=X,H.total_in+=X,X),t.lookahead+=m,t.lookahead+t.insert>=tt)for(M=t.strstart-t.insert,t.ins_h=t.window[M],t.ins_h=(t.ins_h<<t.hash_shift^t.window[M+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[M+tt-1])&t.hash_mask,t.prev[M&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=M,M++,t.insert--,!(t.lookahead+t.insert<tt)););}while(t.lookahead<rt&&0!==t.strm.avail_in)}function R(t,e){for(var m,_;;){if(t.lookahead<rt){if(T(t),t.lookahead<rt&&e===H)return 1;if(0===t.lookahead)break}if(m=0,t.lookahead>=tt&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+tt-1])&t.hash_mask,m=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==m&&t.strstart-m<=t.w_size-rt&&(t.match_length=B(t,m)),t.match_length>=tt)if(_=b._tr_tally(t,t.strstart-t.match_start,t.match_length-tt),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=tt){for(t.match_length--;t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+tt-1])&t.hash_mask,m=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart,0!=--t.match_length;);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else _=b._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(_&&(A(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<tt-1?t.strstart:tt-1,4===e?(A(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(A(t,!1),0===t.strm.avail_out)?1:2}function D(t,e){for(var m,_,v;;){if(t.lookahead<rt){if(T(t),t.lookahead<rt&&e===H)return 1;if(0===t.lookahead)break}if(m=0,t.lookahead>=tt&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+tt-1])&t.hash_mask,m=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=tt-1,0!==m&&t.prev_length<t.max_lazy_match&&t.strstart-m<=t.w_size-rt&&(t.match_length=B(t,m),t.match_length<=5&&(1===t.strategy||t.match_length===tt&&4096<t.strstart-t.match_start)&&(t.match_length=tt-1)),t.prev_length>=tt&&t.match_length<=t.prev_length){for(v=t.strstart+t.lookahead-tt,_=b._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-tt),t.lookahead-=t.prev_length-1,t.prev_length-=2;++t.strstart<=v&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+tt-1])&t.hash_mask,m=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!=--t.prev_length;);if(t.match_available=0,t.match_length=tt-1,t.strstart++,_&&(A(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if((_=b._tr_tally(t,0,t.window[t.strstart-1]))&&A(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(_=b._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<tt-1?t.strstart:tt-1,4===e?(A(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(A(t,!1),0===t.strm.avail_out)?1:2}function F(t,e,m,_,v){this.good_length=t,this.max_lazy=e,this.nice_length=m,this.max_chain=_,this.func=v}function N(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=X,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new v.Buf16(2*Q),this.dyn_dtree=new v.Buf16(2*(2*V+1)),this.bl_tree=new v.Buf16(2*(2*q+1)),E(this.dyn_ltree),E(this.dyn_dtree),E(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new v.Buf16($+1),this.heap=new v.Buf16(2*J+1),E(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new v.Buf16(2*J+1),E(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function U(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=Y,(e=t.state).pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?nt:it,t.adler=2===e.wrap?0:1,e.last_flush=H,b._tr_init(e),G):S(t,K)}function P(t){var e,m=U(t);return m===G&&((e=t.state).window_size=2*e.w_size,E(e.head),e.max_lazy_match=_[e.level].max_lazy,e.good_match=_[e.level].good_length,e.nice_match=_[e.level].nice_length,e.max_chain_length=_[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=tt-1,e.match_available=0,e.ins_h=0),m}function L(t,e,m,_,b,w){if(!t)return K;var W=1;if(-1===e&&(e=6),_<0?(W=0,_=-_):15<_&&(W=2,_-=16),b<1||9<b||m!==X||_<8||15<_||e<0||9<e||w<0||4<w)return S(t,K);8===_&&(_=9);var M=new N;return(t.state=M).strm=t,M.wrap=W,M.gzhead=null,M.w_bits=_,M.w_size=1<<M.w_bits,M.w_mask=M.w_size-1,M.hash_bits=b+7,M.hash_size=1<<M.hash_bits,M.hash_mask=M.hash_size-1,M.hash_shift=~~((M.hash_bits+tt-1)/tt),M.window=new v.Buf8(2*M.w_size),M.head=new v.Buf16(M.hash_size),M.prev=new v.Buf16(M.w_size),M.lit_bufsize=1<<b+6,M.pending_buf_size=4*M.lit_bufsize,M.pending_buf=new v.Buf8(M.pending_buf_size),M.d_buf=1*M.lit_bufsize,M.l_buf=3*M.lit_bufsize,M.level=e,M.strategy=w,M.method=m,P(t)}_=[new F(0,0,0,0,(function(t,e){var m=65535;for(m>t.pending_buf_size-5&&(m=t.pending_buf_size-5);;){if(t.lookahead<=1){if(T(t),0===t.lookahead&&e===H)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var _=t.block_start+m;if((0===t.strstart||t.strstart>=_)&&(t.lookahead=t.strstart-_,t.strstart=_,A(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-rt&&(A(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(A(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(A(t,!1),t.strm.avail_out),1)})),new F(4,4,8,4,R),new F(4,5,16,8,R),new F(4,6,32,32,R),new F(4,4,16,16,D),new F(8,16,32,32,D),new F(8,16,128,128,D),new F(8,32,128,256,D),new F(32,128,258,1024,D),new F(32,258,258,4096,D)],m.deflateInit=function(t,e){return L(t,e,X,15,8,0)},m.deflateInit2=L,m.deflateReset=P,m.deflateResetKeep=U,m.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?K:(t.state.gzhead=e,G):K},m.deflate=function(t,e){var m,v,w,M;if(!t||!t.state||5<e||e<0)return t?S(t,K):K;if(v=t.state,!t.output||!t.input&&0!==t.avail_in||666===v.status&&4!==e)return S(t,0===t.avail_out?-5:K);if(v.strm=t,m=v.last_flush,v.last_flush=e,v.status===nt)if(2===v.wrap)t.adler=0,I(v,31),I(v,139),I(v,8),v.gzhead?(I(v,(v.gzhead.text?1:0)+(v.gzhead.hcrc?2:0)+(v.gzhead.extra?4:0)+(v.gzhead.name?8:0)+(v.gzhead.comment?16:0)),I(v,255&v.gzhead.time),I(v,v.gzhead.time>>8&255),I(v,v.gzhead.time>>16&255),I(v,v.gzhead.time>>24&255),I(v,9===v.level?2:2<=v.strategy||v.level<2?4:0),I(v,255&v.gzhead.os),v.gzhead.extra&&v.gzhead.extra.length&&(I(v,255&v.gzhead.extra.length),I(v,v.gzhead.extra.length>>8&255)),v.gzhead.hcrc&&(t.adler=W(t.adler,v.pending_buf,v.pending,0)),v.gzindex=0,v.status=69):(I(v,0),I(v,0),I(v,0),I(v,0),I(v,0),I(v,9===v.level?2:2<=v.strategy||v.level<2?4:0),I(v,3),v.status=it);else{var Y=X+(v.w_bits-8<<4)<<8;Y|=(2<=v.strategy||v.level<2?0:v.level<6?1:6===v.level?2:3)<<6,0!==v.strstart&&(Y|=32),Y+=31-Y%31,v.status=it,O(v,Y),0!==v.strstart&&(O(v,t.adler>>>16),O(v,65535&t.adler)),t.adler=1}if(69===v.status)if(v.gzhead.extra){for(w=v.pending;v.gzindex<(65535&v.gzhead.extra.length)&&(v.pending!==v.pending_buf_size||(v.gzhead.hcrc&&v.pending>w&&(t.adler=W(t.adler,v.pending_buf,v.pending-w,w)),C(t),w=v.pending,v.pending!==v.pending_buf_size));)I(v,255&v.gzhead.extra[v.gzindex]),v.gzindex++;v.gzhead.hcrc&&v.pending>w&&(t.adler=W(t.adler,v.pending_buf,v.pending-w,w)),v.gzindex===v.gzhead.extra.length&&(v.gzindex=0,v.status=73)}else v.status=73;if(73===v.status)if(v.gzhead.name){w=v.pending;do{if(v.pending===v.pending_buf_size&&(v.gzhead.hcrc&&v.pending>w&&(t.adler=W(t.adler,v.pending_buf,v.pending-w,w)),C(t),w=v.pending,v.pending===v.pending_buf_size)){M=1;break}M=v.gzindex<v.gzhead.name.length?255&v.gzhead.name.charCodeAt(v.gzindex++):0,I(v,M)}while(0!==M);v.gzhead.hcrc&&v.pending>w&&(t.adler=W(t.adler,v.pending_buf,v.pending-w,w)),0===M&&(v.gzindex=0,v.status=91)}else v.status=91;if(91===v.status)if(v.gzhead.comment){w=v.pending;do{if(v.pending===v.pending_buf_size&&(v.gzhead.hcrc&&v.pending>w&&(t.adler=W(t.adler,v.pending_buf,v.pending-w,w)),C(t),w=v.pending,v.pending===v.pending_buf_size)){M=1;break}M=v.gzindex<v.gzhead.comment.length?255&v.gzhead.comment.charCodeAt(v.gzindex++):0,I(v,M)}while(0!==M);v.gzhead.hcrc&&v.pending>w&&(t.adler=W(t.adler,v.pending_buf,v.pending-w,w)),0===M&&(v.status=103)}else v.status=103;if(103===v.status&&(v.gzhead.hcrc?(v.pending+2>v.pending_buf_size&&C(t),v.pending+2<=v.pending_buf_size&&(I(v,255&t.adler),I(v,t.adler>>8&255),t.adler=0,v.status=it)):v.status=it),0!==v.pending){if(C(t),0===t.avail_out)return v.last_flush=-1,G}else if(0===t.avail_in&&z(e)<=z(m)&&4!==e)return S(t,-5);if(666===v.status&&0!==t.avail_in)return S(t,-5);if(0!==t.avail_in||0!==v.lookahead||e!==H&&666!==v.status){var J=2===v.strategy?function(t,e){for(var m;;){if(0===t.lookahead&&(T(t),0===t.lookahead)){if(e===H)return 1;break}if(t.match_length=0,m=b._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,m&&(A(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(A(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(A(t,!1),0===t.strm.avail_out)?1:2}(v,e):3===v.strategy?function(t,e){for(var m,_,v,w,W=t.window;;){if(t.lookahead<=et){if(T(t),t.lookahead<=et&&e===H)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=tt&&0<t.strstart&&(_=W[v=t.strstart-1])===W[++v]&&_===W[++v]&&_===W[++v]){w=t.strstart+et;do{}while(_===W[++v]&&_===W[++v]&&_===W[++v]&&_===W[++v]&&_===W[++v]&&_===W[++v]&&_===W[++v]&&_===W[++v]&&v<w);t.match_length=et-(w-v),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=tt?(m=b._tr_tally(t,1,t.match_length-tt),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(m=b._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),m&&(A(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(A(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(A(t,!1),0===t.strm.avail_out)?1:2}(v,e):_[v.level].func(v,e);if(3!==J&&4!==J||(v.status=666),1===J||3===J)return 0===t.avail_out&&(v.last_flush=-1),G;if(2===J&&(1===e?b._tr_align(v):5!==e&&(b._tr_stored_block(v,0,0,!1),3===e&&(E(v.head),0===v.lookahead&&(v.strstart=0,v.block_start=0,v.insert=0))),C(t),0===t.avail_out))return v.last_flush=-1,G}return 4!==e?G:v.wrap<=0?1:(2===v.wrap?(I(v,255&t.adler),I(v,t.adler>>8&255),I(v,t.adler>>16&255),I(v,t.adler>>24&255),I(v,255&t.total_in),I(v,t.total_in>>8&255),I(v,t.total_in>>16&255),I(v,t.total_in>>24&255)):(O(v,t.adler>>>16),O(v,65535&t.adler)),C(t),0<v.wrap&&(v.wrap=-v.wrap),0!==v.pending?G:1)},m.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==nt&&69!==e&&73!==e&&91!==e&&103!==e&&e!==it&&666!==e?S(t,K):(t.state=null,e===it?S(t,-3):G):K},m.deflateSetDictionary=function(t,e){var m,_,b,W,M,H,Y,X,J=e.length;if(!t||!t.state)return K;if(2===(W=(m=t.state).wrap)||1===W&&m.status!==nt||m.lookahead)return K;for(1===W&&(t.adler=w(t.adler,e,J,0)),m.wrap=0,J>=m.w_size&&(0===W&&(E(m.head),m.strstart=0,m.block_start=0,m.insert=0),X=new v.Buf8(m.w_size),v.arraySet(X,e,J-m.w_size,m.w_size,0),e=X,J=m.w_size),M=t.avail_in,H=t.next_in,Y=t.input,t.avail_in=J,t.next_in=0,t.input=e,T(m);m.lookahead>=tt;){for(_=m.strstart,b=m.lookahead-(tt-1);m.ins_h=(m.ins_h<<m.hash_shift^m.window[_+tt-1])&m.hash_mask,m.prev[_&m.w_mask]=m.head[m.ins_h],m.head[m.ins_h]=_,_++,--b;);m.strstart=_,m.lookahead=tt-1,T(m)}return m.strstart+=m.lookahead,m.block_start=m.strstart,m.insert=m.lookahead,m.lookahead=0,m.match_length=m.prev_length=tt-1,m.match_available=0,t.next_in=H,t.input=Y,t.avail_in=M,m.wrap=W,G},m.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(t,e,m){"use strict";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],48:[function(t,e,m){"use strict";e.exports=function(t,e){var m,_,v,b,w,W,M,H,G,K,Y,X,J,V,q,Q,$,tt,et,rt,nt,it,st,at,ot;m=t.state,_=t.next_in,at=t.input,v=_+(t.avail_in-5),b=t.next_out,ot=t.output,w=b-(e-t.avail_out),W=b+(t.avail_out-257),M=m.dmax,H=m.wsize,G=m.whave,K=m.wnext,Y=m.window,X=m.hold,J=m.bits,V=m.lencode,q=m.distcode,Q=(1<<m.lenbits)-1,$=(1<<m.distbits)-1;t:do{J<15&&(X+=at[_++]<<J,J+=8,X+=at[_++]<<J,J+=8),tt=V[X&Q];e:for(;;){if(X>>>=et=tt>>>24,J-=et,0==(et=tt>>>16&255))ot[b++]=65535&tt;else{if(!(16&et)){if(0==(64&et)){tt=V[(65535&tt)+(X&(1<<et)-1)];continue e}if(32&et){m.mode=12;break t}t.msg="invalid literal/length code",m.mode=30;break t}rt=65535&tt,(et&=15)&&(J<et&&(X+=at[_++]<<J,J+=8),rt+=X&(1<<et)-1,X>>>=et,J-=et),J<15&&(X+=at[_++]<<J,J+=8,X+=at[_++]<<J,J+=8),tt=q[X&$];r:for(;;){if(X>>>=et=tt>>>24,J-=et,!(16&(et=tt>>>16&255))){if(0==(64&et)){tt=q[(65535&tt)+(X&(1<<et)-1)];continue r}t.msg="invalid distance code",m.mode=30;break t}if(nt=65535&tt,J<(et&=15)&&(X+=at[_++]<<J,(J+=8)<et&&(X+=at[_++]<<J,J+=8)),M<(nt+=X&(1<<et)-1)){t.msg="invalid distance too far back",m.mode=30;break t}if(X>>>=et,J-=et,(et=b-w)<nt){if(G<(et=nt-et)&&m.sane){t.msg="invalid distance too far back",m.mode=30;break t}if(st=Y,(it=0)===K){if(it+=H-et,et<rt){for(rt-=et;ot[b++]=Y[it++],--et;);it=b-nt,st=ot}}else if(K<et){if(it+=H+K-et,(et-=K)<rt){for(rt-=et;ot[b++]=Y[it++],--et;);if(it=0,K<rt){for(rt-=et=K;ot[b++]=Y[it++],--et;);it=b-nt,st=ot}}}else if(it+=K-et,et<rt){for(rt-=et;ot[b++]=Y[it++],--et;);it=b-nt,st=ot}for(;2<rt;)ot[b++]=st[it++],ot[b++]=st[it++],ot[b++]=st[it++],rt-=3;rt&&(ot[b++]=st[it++],1<rt&&(ot[b++]=st[it++]))}else{for(it=b-nt;ot[b++]=ot[it++],ot[b++]=ot[it++],ot[b++]=ot[it++],2<(rt-=3););rt&&(ot[b++]=ot[it++],1<rt&&(ot[b++]=ot[it++]))}break}}break}}while(_<v&&b<W);_-=rt=J>>3,X&=(1<<(J-=rt<<3))-1,t.next_in=_,t.next_out=b,t.avail_in=_<v?v-_+5:5-(_-v),t.avail_out=b<W?W-b+257:257-(b-W),m.hold=X,m.bits=J}},{}],49:[function(t,e,m){"use strict";var _=t("../utils/common"),v=t("./adler32"),b=t("./crc32"),w=t("./inffast"),W=t("./inftrees"),M=1,H=2,G=0,K=-2,Y=1,X=852,J=592;function L(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new _.Buf16(320),this.work=new _.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=Y,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new _.Buf32(X),e.distcode=e.distdyn=new _.Buf32(J),e.sane=1,e.back=-1,G):K}function o(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,a(t)):K}function u(t,e){var m,_;return t&&t.state?(_=t.state,e<0?(m=0,e=-e):(m=1+(e>>4),e<48&&(e&=15)),e&&(e<8||15<e)?K:(null!==_.window&&_.wbits!==e&&(_.window=null),_.wrap=m,_.wbits=e,o(t))):K}function h(t,e){var m,_;return t?(_=new s,(t.state=_).window=null,(m=u(t,e))!==G&&(t.state=null),m):K}var V,q,Q=!0;function j(t){if(Q){var e;for(V=new _.Buf32(512),q=new _.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(W(M,t.lens,0,288,V,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;W(H,t.lens,0,32,q,0,t.work,{bits:5}),Q=!1}t.lencode=V,t.lenbits=9,t.distcode=q,t.distbits=5}function Z(t,e,m,v){var b,w=t.state;return null===w.window&&(w.wsize=1<<w.wbits,w.wnext=0,w.whave=0,w.window=new _.Buf8(w.wsize)),v>=w.wsize?(_.arraySet(w.window,e,m-w.wsize,w.wsize,0),w.wnext=0,w.whave=w.wsize):(v<(b=w.wsize-w.wnext)&&(b=v),_.arraySet(w.window,e,m-v,b,w.wnext),(v-=b)?(_.arraySet(w.window,e,m-v,v,0),w.wnext=v,w.whave=w.wsize):(w.wnext+=b,w.wnext===w.wsize&&(w.wnext=0),w.whave<w.wsize&&(w.whave+=b))),0}m.inflateReset=o,m.inflateReset2=u,m.inflateResetKeep=a,m.inflateInit=function(t){return h(t,15)},m.inflateInit2=h,m.inflate=function(t,e){var m,X,J,V,q,Q,$,tt,et,rt,nt,it,st,at,ot,ht,ut,ft,lt,dt,ct,pt,mt,_t,gt=0,vt=new _.Buf8(4),bt=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return K;12===(m=t.state).mode&&(m.mode=13),q=t.next_out,J=t.output,$=t.avail_out,V=t.next_in,X=t.input,Q=t.avail_in,tt=m.hold,et=m.bits,rt=Q,nt=$,pt=G;t:for(;;)switch(m.mode){case Y:if(0===m.wrap){m.mode=13;break}for(;et<16;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}if(2&m.wrap&&35615===tt){vt[m.check=0]=255&tt,vt[1]=tt>>>8&255,m.check=b(m.check,vt,2,0),et=tt=0,m.mode=2;break}if(m.flags=0,m.head&&(m.head.done=!1),!(1&m.wrap)||(((255&tt)<<8)+(tt>>8))%31){t.msg="incorrect header check",m.mode=30;break}if(8!=(15&tt)){t.msg="unknown compression method",m.mode=30;break}if(et-=4,ct=8+(15&(tt>>>=4)),0===m.wbits)m.wbits=ct;else if(ct>m.wbits){t.msg="invalid window size",m.mode=30;break}m.dmax=1<<ct,t.adler=m.check=1,m.mode=512&tt?10:12,et=tt=0;break;case 2:for(;et<16;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}if(m.flags=tt,8!=(255&m.flags)){t.msg="unknown compression method",m.mode=30;break}if(57344&m.flags){t.msg="unknown header flags set",m.mode=30;break}m.head&&(m.head.text=tt>>8&1),512&m.flags&&(vt[0]=255&tt,vt[1]=tt>>>8&255,m.check=b(m.check,vt,2,0)),et=tt=0,m.mode=3;case 3:for(;et<32;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}m.head&&(m.head.time=tt),512&m.flags&&(vt[0]=255&tt,vt[1]=tt>>>8&255,vt[2]=tt>>>16&255,vt[3]=tt>>>24&255,m.check=b(m.check,vt,4,0)),et=tt=0,m.mode=4;case 4:for(;et<16;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}m.head&&(m.head.xflags=255&tt,m.head.os=tt>>8),512&m.flags&&(vt[0]=255&tt,vt[1]=tt>>>8&255,m.check=b(m.check,vt,2,0)),et=tt=0,m.mode=5;case 5:if(1024&m.flags){for(;et<16;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}m.length=tt,m.head&&(m.head.extra_len=tt),512&m.flags&&(vt[0]=255&tt,vt[1]=tt>>>8&255,m.check=b(m.check,vt,2,0)),et=tt=0}else m.head&&(m.head.extra=null);m.mode=6;case 6:if(1024&m.flags&&(Q<(it=m.length)&&(it=Q),it&&(m.head&&(ct=m.head.extra_len-m.length,m.head.extra||(m.head.extra=new Array(m.head.extra_len)),_.arraySet(m.head.extra,X,V,it,ct)),512&m.flags&&(m.check=b(m.check,X,it,V)),Q-=it,V+=it,m.length-=it),m.length))break t;m.length=0,m.mode=7;case 7:if(2048&m.flags){if(0===Q)break t;for(it=0;ct=X[V+it++],m.head&&ct&&m.length<65536&&(m.head.name+=String.fromCharCode(ct)),ct&&it<Q;);if(512&m.flags&&(m.check=b(m.check,X,it,V)),Q-=it,V+=it,ct)break t}else m.head&&(m.head.name=null);m.length=0,m.mode=8;case 8:if(4096&m.flags){if(0===Q)break t;for(it=0;ct=X[V+it++],m.head&&ct&&m.length<65536&&(m.head.comment+=String.fromCharCode(ct)),ct&&it<Q;);if(512&m.flags&&(m.check=b(m.check,X,it,V)),Q-=it,V+=it,ct)break t}else m.head&&(m.head.comment=null);m.mode=9;case 9:if(512&m.flags){for(;et<16;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}if(tt!==(65535&m.check)){t.msg="header crc mismatch",m.mode=30;break}et=tt=0}m.head&&(m.head.hcrc=m.flags>>9&1,m.head.done=!0),t.adler=m.check=0,m.mode=12;break;case 10:for(;et<32;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}t.adler=m.check=L(tt),et=tt=0,m.mode=11;case 11:if(0===m.havedict)return t.next_out=q,t.avail_out=$,t.next_in=V,t.avail_in=Q,m.hold=tt,m.bits=et,2;t.adler=m.check=1,m.mode=12;case 12:if(5===e||6===e)break t;case 13:if(m.last){tt>>>=7&et,et-=7&et,m.mode=27;break}for(;et<3;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}switch(m.last=1&tt,et-=1,3&(tt>>>=1)){case 0:m.mode=14;break;case 1:if(j(m),m.mode=20,6!==e)break;tt>>>=2,et-=2;break t;case 2:m.mode=17;break;case 3:t.msg="invalid block type",m.mode=30}tt>>>=2,et-=2;break;case 14:for(tt>>>=7&et,et-=7&et;et<32;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}if((65535&tt)!=(tt>>>16^65535)){t.msg="invalid stored block lengths",m.mode=30;break}if(m.length=65535&tt,et=tt=0,m.mode=15,6===e)break t;case 15:m.mode=16;case 16:if(it=m.length){if(Q<it&&(it=Q),$<it&&(it=$),0===it)break t;_.arraySet(J,X,V,it,q),Q-=it,V+=it,$-=it,q+=it,m.length-=it;break}m.mode=12;break;case 17:for(;et<14;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}if(m.nlen=257+(31&tt),tt>>>=5,et-=5,m.ndist=1+(31&tt),tt>>>=5,et-=5,m.ncode=4+(15&tt),tt>>>=4,et-=4,286<m.nlen||30<m.ndist){t.msg="too many length or distance symbols",m.mode=30;break}m.have=0,m.mode=18;case 18:for(;m.have<m.ncode;){for(;et<3;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}m.lens[bt[m.have++]]=7&tt,tt>>>=3,et-=3}for(;m.have<19;)m.lens[bt[m.have++]]=0;if(m.lencode=m.lendyn,m.lenbits=7,mt={bits:m.lenbits},pt=W(0,m.lens,0,19,m.lencode,0,m.work,mt),m.lenbits=mt.bits,pt){t.msg="invalid code lengths set",m.mode=30;break}m.have=0,m.mode=19;case 19:for(;m.have<m.nlen+m.ndist;){for(;ht=(gt=m.lencode[tt&(1<<m.lenbits)-1])>>>16&255,ut=65535&gt,!((ot=gt>>>24)<=et);){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}if(ut<16)tt>>>=ot,et-=ot,m.lens[m.have++]=ut;else{if(16===ut){for(_t=ot+2;et<_t;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}if(tt>>>=ot,et-=ot,0===m.have){t.msg="invalid bit length repeat",m.mode=30;break}ct=m.lens[m.have-1],it=3+(3&tt),tt>>>=2,et-=2}else if(17===ut){for(_t=ot+3;et<_t;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}et-=ot,ct=0,it=3+(7&(tt>>>=ot)),tt>>>=3,et-=3}else{for(_t=ot+7;et<_t;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}et-=ot,ct=0,it=11+(127&(tt>>>=ot)),tt>>>=7,et-=7}if(m.have+it>m.nlen+m.ndist){t.msg="invalid bit length repeat",m.mode=30;break}for(;it--;)m.lens[m.have++]=ct}}if(30===m.mode)break;if(0===m.lens[256]){t.msg="invalid code -- missing end-of-block",m.mode=30;break}if(m.lenbits=9,mt={bits:m.lenbits},pt=W(M,m.lens,0,m.nlen,m.lencode,0,m.work,mt),m.lenbits=mt.bits,pt){t.msg="invalid literal/lengths set",m.mode=30;break}if(m.distbits=6,m.distcode=m.distdyn,mt={bits:m.distbits},pt=W(H,m.lens,m.nlen,m.ndist,m.distcode,0,m.work,mt),m.distbits=mt.bits,pt){t.msg="invalid distances set",m.mode=30;break}if(m.mode=20,6===e)break t;case 20:m.mode=21;case 21:if(6<=Q&&258<=$){t.next_out=q,t.avail_out=$,t.next_in=V,t.avail_in=Q,m.hold=tt,m.bits=et,w(t,nt),q=t.next_out,J=t.output,$=t.avail_out,V=t.next_in,X=t.input,Q=t.avail_in,tt=m.hold,et=m.bits,12===m.mode&&(m.back=-1);break}for(m.back=0;ht=(gt=m.lencode[tt&(1<<m.lenbits)-1])>>>16&255,ut=65535&gt,!((ot=gt>>>24)<=et);){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}if(ht&&0==(240&ht)){for(ft=ot,lt=ht,dt=ut;ht=(gt=m.lencode[dt+((tt&(1<<ft+lt)-1)>>ft)])>>>16&255,ut=65535&gt,!(ft+(ot=gt>>>24)<=et);){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}tt>>>=ft,et-=ft,m.back+=ft}if(tt>>>=ot,et-=ot,m.back+=ot,m.length=ut,0===ht){m.mode=26;break}if(32&ht){m.back=-1,m.mode=12;break}if(64&ht){t.msg="invalid literal/length code",m.mode=30;break}m.extra=15&ht,m.mode=22;case 22:if(m.extra){for(_t=m.extra;et<_t;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}m.length+=tt&(1<<m.extra)-1,tt>>>=m.extra,et-=m.extra,m.back+=m.extra}m.was=m.length,m.mode=23;case 23:for(;ht=(gt=m.distcode[tt&(1<<m.distbits)-1])>>>16&255,ut=65535&gt,!((ot=gt>>>24)<=et);){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}if(0==(240&ht)){for(ft=ot,lt=ht,dt=ut;ht=(gt=m.distcode[dt+((tt&(1<<ft+lt)-1)>>ft)])>>>16&255,ut=65535&gt,!(ft+(ot=gt>>>24)<=et);){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}tt>>>=ft,et-=ft,m.back+=ft}if(tt>>>=ot,et-=ot,m.back+=ot,64&ht){t.msg="invalid distance code",m.mode=30;break}m.offset=ut,m.extra=15&ht,m.mode=24;case 24:if(m.extra){for(_t=m.extra;et<_t;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}m.offset+=tt&(1<<m.extra)-1,tt>>>=m.extra,et-=m.extra,m.back+=m.extra}if(m.offset>m.dmax){t.msg="invalid distance too far back",m.mode=30;break}m.mode=25;case 25:if(0===$)break t;if(it=nt-$,m.offset>it){if((it=m.offset-it)>m.whave&&m.sane){t.msg="invalid distance too far back",m.mode=30;break}st=it>m.wnext?(it-=m.wnext,m.wsize-it):m.wnext-it,it>m.length&&(it=m.length),at=m.window}else at=J,st=q-m.offset,it=m.length;for($<it&&(it=$),$-=it,m.length-=it;J[q++]=at[st++],--it;);0===m.length&&(m.mode=21);break;case 26:if(0===$)break t;J[q++]=m.length,$--,m.mode=21;break;case 27:if(m.wrap){for(;et<32;){if(0===Q)break t;Q--,tt|=X[V++]<<et,et+=8}if(nt-=$,t.total_out+=nt,m.total+=nt,nt&&(t.adler=m.check=m.flags?b(m.check,J,nt,q-nt):v(m.check,J,nt,q-nt)),nt=$,(m.flags?tt:L(tt))!==m.check){t.msg="incorrect data check",m.mode=30;break}et=tt=0}m.mode=28;case 28:if(m.wrap&&m.flags){for(;et<32;){if(0===Q)break t;Q--,tt+=X[V++]<<et,et+=8}if(tt!==(4294967295&m.total)){t.msg="incorrect length check",m.mode=30;break}et=tt=0}m.mode=29;case 29:pt=1;break t;case 30:pt=-3;break t;case 31:return-4;case 32:default:return K}return t.next_out=q,t.avail_out=$,t.next_in=V,t.avail_in=Q,m.hold=tt,m.bits=et,(m.wsize||nt!==t.avail_out&&m.mode<30&&(m.mode<27||4!==e))&&Z(t,t.output,t.next_out,nt-t.avail_out)?(m.mode=31,-4):(rt-=t.avail_in,nt-=t.avail_out,t.total_in+=rt,t.total_out+=nt,m.total+=nt,m.wrap&&nt&&(t.adler=m.check=m.flags?b(m.check,J,nt,t.next_out-nt):v(m.check,J,nt,t.next_out-nt)),t.data_type=m.bits+(m.last?64:0)+(12===m.mode?128:0)+(20===m.mode||15===m.mode?256:0),(0==rt&&0===nt||4===e)&&pt===G&&(pt=-5),pt)},m.inflateEnd=function(t){if(!t||!t.state)return K;var e=t.state;return e.window&&(e.window=null),t.state=null,G},m.inflateGetHeader=function(t,e){var m;return t&&t.state?0==(2&(m=t.state).wrap)?K:((m.head=e).done=!1,G):K},m.inflateSetDictionary=function(t,e){var m,_=e.length;return t&&t.state?0!==(m=t.state).wrap&&11!==m.mode?K:11===m.mode&&v(1,e,_,0)!==m.check?-3:Z(t,e,_,_)?(m.mode=31,-4):(m.havedict=1,G):K},m.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(t,e,m){"use strict";var _=t("../utils/common"),v=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],b=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],w=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],W=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(t,e,m,M,H,G,K,Y){var X,J,V,q,Q,$,tt,et,rt,nt=Y.bits,it=0,st=0,at=0,ot=0,ht=0,ut=0,ft=0,lt=0,dt=0,ct=0,pt=null,mt=0,_t=new _.Buf16(16),gt=new _.Buf16(16),vt=null,bt=0;for(it=0;it<=15;it++)_t[it]=0;for(st=0;st<M;st++)_t[e[m+st]]++;for(ht=nt,ot=15;1<=ot&&0===_t[ot];ot--);if(ot<ht&&(ht=ot),0===ot)return H[G++]=20971520,H[G++]=20971520,Y.bits=1,0;for(at=1;at<ot&&0===_t[at];at++);for(ht<at&&(ht=at),it=lt=1;it<=15;it++)if(lt<<=1,(lt-=_t[it])<0)return-1;if(0<lt&&(0===t||1!==ot))return-1;for(gt[1]=0,it=1;it<15;it++)gt[it+1]=gt[it]+_t[it];for(st=0;st<M;st++)0!==e[m+st]&&(K[gt[e[m+st]]++]=st);if($=0===t?(pt=vt=K,19):1===t?(pt=v,mt-=257,vt=b,bt-=257,256):(pt=w,vt=W,-1),it=at,Q=G,ft=st=ct=0,V=-1,q=(dt=1<<(ut=ht))-1,1===t&&852<dt||2===t&&592<dt)return 1;for(;;){for(tt=it-ft,rt=K[st]<$?(et=0,K[st]):K[st]>$?(et=vt[bt+K[st]],pt[mt+K[st]]):(et=96,0),X=1<<it-ft,at=J=1<<ut;H[Q+(ct>>ft)+(J-=X)]=tt<<24|et<<16|rt|0,0!==J;);for(X=1<<it-1;ct&X;)X>>=1;if(0!==X?(ct&=X-1,ct+=X):ct=0,st++,0==--_t[it]){if(it===ot)break;it=e[m+K[st]]}if(ht<it&&(ct&q)!==V){for(0===ft&&(ft=ht),Q+=at,lt=1<<(ut=it-ft);ut+ft<ot&&!((lt-=_t[ut+ft])<=0);)ut++,lt<<=1;if(dt+=1<<ut,1===t&&852<dt||2===t&&592<dt)return 1;H[V=ct&q]=ht<<24|ut<<16|Q-G|0}}return 0!==ct&&(H[Q+ct]=it-ft<<24|64<<16|0),Y.bits=ht,0}},{"../utils/common":41}],51:[function(t,e,m){"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],52:[function(t,e,m){"use strict";var _=t("../utils/common");function n(t){for(var e=t.length;0<=--e;)t[e]=0}var v=15,b=16,w=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],W=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],M=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],H=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],G=new Array(576);n(G);var K=new Array(60);n(K);var Y=new Array(512);n(Y);var X=new Array(256);n(X);var J=new Array(29);n(J);var V,q,Q,$=new Array(30);function y(t,e,m,_,v){this.static_tree=t,this.extra_bits=e,this.extra_base=m,this.elems=_,this.max_length=v,this.has_stree=t&&t.length}function s(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function k(t){return t<256?Y[t]:Y[256+(t>>>7)]}function x(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function S(t,e,m){t.bi_valid>b-m?(t.bi_buf|=e<<t.bi_valid&65535,x(t,t.bi_buf),t.bi_buf=e>>b-t.bi_valid,t.bi_valid+=m-b):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=m)}function z(t,e,m){S(t,m[2*e],m[2*e+1])}function E(t,e){for(var m=0;m|=1&t,t>>>=1,m<<=1,0<--e;);return m>>>1}function C(t,e,m){var _,b,w=new Array(v+1),W=0;for(_=1;_<=v;_++)w[_]=W=W+m[_-1]<<1;for(b=0;b<=e;b++){var M=t[2*b+1];0!==M&&(t[2*b]=E(w[M]++,M))}}function A(t){var e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function I(t){8<t.bi_valid?x(t,t.bi_buf):0<t.bi_valid&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function O(t,e,m,_){var v=2*e,b=2*m;return t[v]<t[b]||t[v]===t[b]&&_[e]<=_[m]}function B(t,e,m){for(var _=t.heap[m],v=m<<1;v<=t.heap_len&&(v<t.heap_len&&O(e,t.heap[v+1],t.heap[v],t.depth)&&v++,!O(e,_,t.heap[v],t.depth));)t.heap[m]=t.heap[v],m=v,v<<=1;t.heap[m]=_}function T(t,e,m){var _,v,b,M,H=0;if(0!==t.last_lit)for(;_=t.pending_buf[t.d_buf+2*H]<<8|t.pending_buf[t.d_buf+2*H+1],v=t.pending_buf[t.l_buf+H],H++,0===_?z(t,v,e):(z(t,(b=X[v])+256+1,e),0!==(M=w[b])&&S(t,v-=J[b],M),z(t,b=k(--_),m),0!==(M=W[b])&&S(t,_-=$[b],M)),H<t.last_lit;);z(t,256,e)}function R(t,e){var m,_,b,w=e.dyn_tree,W=e.stat_desc.static_tree,M=e.stat_desc.has_stree,H=e.stat_desc.elems,G=-1;for(t.heap_len=0,t.heap_max=573,m=0;m<H;m++)0!==w[2*m]?(t.heap[++t.heap_len]=G=m,t.depth[m]=0):w[2*m+1]=0;for(;t.heap_len<2;)w[2*(b=t.heap[++t.heap_len]=G<2?++G:0)]=1,t.depth[b]=0,t.opt_len--,M&&(t.static_len-=W[2*b+1]);for(e.max_code=G,m=t.heap_len>>1;1<=m;m--)B(t,w,m);for(b=H;m=t.heap[1],t.heap[1]=t.heap[t.heap_len--],B(t,w,1),_=t.heap[1],t.heap[--t.heap_max]=m,t.heap[--t.heap_max]=_,w[2*b]=w[2*m]+w[2*_],t.depth[b]=(t.depth[m]>=t.depth[_]?t.depth[m]:t.depth[_])+1,w[2*m+1]=w[2*_+1]=b,t.heap[1]=b++,B(t,w,1),2<=t.heap_len;);t.heap[--t.heap_max]=t.heap[1],function(t,e){var m,_,b,w,W,M,H=e.dyn_tree,G=e.max_code,K=e.stat_desc.static_tree,Y=e.stat_desc.has_stree,X=e.stat_desc.extra_bits,J=e.stat_desc.extra_base,V=e.stat_desc.max_length,q=0;for(w=0;w<=v;w++)t.bl_count[w]=0;for(H[2*t.heap[t.heap_max]+1]=0,m=t.heap_max+1;m<573;m++)V<(w=H[2*H[2*(_=t.heap[m])+1]+1]+1)&&(w=V,q++),H[2*_+1]=w,G<_||(t.bl_count[w]++,W=0,J<=_&&(W=X[_-J]),M=H[2*_],t.opt_len+=M*(w+W),Y&&(t.static_len+=M*(K[2*_+1]+W)));if(0!==q){do{for(w=V-1;0===t.bl_count[w];)w--;t.bl_count[w]--,t.bl_count[w+1]+=2,t.bl_count[V]--,q-=2}while(0<q);for(w=V;0!==w;w--)for(_=t.bl_count[w];0!==_;)G<(b=t.heap[--m])||(H[2*b+1]!==w&&(t.opt_len+=(w-H[2*b+1])*H[2*b],H[2*b+1]=w),_--)}}(t,e),C(w,G,t.bl_count)}function D(t,e,m){var _,v,b=-1,w=e[1],W=0,M=7,H=4;for(0===w&&(M=138,H=3),e[2*(m+1)+1]=65535,_=0;_<=m;_++)v=w,w=e[2*(_+1)+1],++W<M&&v===w||(W<H?t.bl_tree[2*v]+=W:0!==v?(v!==b&&t.bl_tree[2*v]++,t.bl_tree[32]++):W<=10?t.bl_tree[34]++:t.bl_tree[36]++,b=v,H=(W=0)===w?(M=138,3):v===w?(M=6,3):(M=7,4))}function F(t,e,m){var _,v,b=-1,w=e[1],W=0,M=7,H=4;for(0===w&&(M=138,H=3),_=0;_<=m;_++)if(v=w,w=e[2*(_+1)+1],!(++W<M&&v===w)){if(W<H)for(;z(t,v,t.bl_tree),0!=--W;);else 0!==v?(v!==b&&(z(t,v,t.bl_tree),W--),z(t,16,t.bl_tree),S(t,W-3,2)):W<=10?(z(t,17,t.bl_tree),S(t,W-3,3)):(z(t,18,t.bl_tree),S(t,W-11,7));b=v,H=(W=0)===w?(M=138,3):v===w?(M=6,3):(M=7,4)}}n($);var tt=!1;function U(t,e,m,v){var b,w,W;S(t,0+(v?1:0),3),w=e,W=m,I(b=t),x(b,W),x(b,~W),_.arraySet(b.pending_buf,b.window,w,W,b.pending),b.pending+=W}m._tr_init=function(t){tt||(function(){var t,e,m,_,b,H=new Array(v+1);for(_=m=0;_<28;_++)for(J[_]=m,t=0;t<1<<w[_];t++)X[m++]=_;for(X[m-1]=_,_=b=0;_<16;_++)for($[_]=b,t=0;t<1<<W[_];t++)Y[b++]=_;for(b>>=7;_<30;_++)for($[_]=b<<7,t=0;t<1<<W[_]-7;t++)Y[256+b++]=_;for(e=0;e<=v;e++)H[e]=0;for(t=0;t<=143;)G[2*t+1]=8,t++,H[8]++;for(;t<=255;)G[2*t+1]=9,t++,H[9]++;for(;t<=279;)G[2*t+1]=7,t++,H[7]++;for(;t<=287;)G[2*t+1]=8,t++,H[8]++;for(C(G,287,H),t=0;t<30;t++)K[2*t+1]=5,K[2*t]=E(t,5);V=new y(G,w,257,286,v),q=new y(K,W,0,30,v),Q=new y(new Array(0),M,0,19,7)}(),tt=!0),t.l_desc=new s(t.dyn_ltree,V),t.d_desc=new s(t.dyn_dtree,q),t.bl_desc=new s(t.bl_tree,Q),t.bi_buf=0,t.bi_valid=0,A(t)},m._tr_stored_block=U,m._tr_flush_block=function(t,e,m,_){var v,b,w=0;0<t.level?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,m=4093624447;for(e=0;e<=31;e++,m>>>=1)if(1&m&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),R(t,t.l_desc),R(t,t.d_desc),w=function(t){var e;for(D(t,t.dyn_ltree,t.l_desc.max_code),D(t,t.dyn_dtree,t.d_desc.max_code),R(t,t.bl_desc),e=18;3<=e&&0===t.bl_tree[2*H[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),v=t.opt_len+3+7>>>3,(b=t.static_len+3+7>>>3)<=v&&(v=b)):v=b=m+5,m+4<=v&&-1!==e?U(t,e,m,_):4===t.strategy||b===v?(S(t,2+(_?1:0),3),T(t,G,K)):(S(t,4+(_?1:0),3),function(t,e,m,_){var v;for(S(t,e-257,5),S(t,m-1,5),S(t,_-4,4),v=0;v<_;v++)S(t,t.bl_tree[2*H[v]+1],3);F(t,t.dyn_ltree,e-1),F(t,t.dyn_dtree,m-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,w+1),T(t,t.dyn_ltree,t.dyn_dtree)),A(t),_&&I(t)},m._tr_tally=function(t,e,m){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&m,t.last_lit++,0===e?t.dyn_ltree[2*m]++:(t.matches++,e--,t.dyn_ltree[2*(X[m]+256+1)]++,t.dyn_dtree[2*k(e)]++),t.last_lit===t.lit_bufsize-1},m._tr_align=function(t){var e;S(t,2,3),z(t,256,G),16===(e=t).bi_valid?(x(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}},{"../utils/common":41}],53:[function(t,e,m){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(t,e,m){"use strict";e.exports="function"==typeof setImmediate?setImmediate:function(){var t=[].slice.apply(arguments);t.splice(1,0,0),setTimeout.apply(null,t)}},{}]},{},[10])(10)}))}).call(this,void 0!==m?m:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)}))}).call(this,void 0!==m?m:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)}))}).call(this,void 0!==m?m:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)}))}).call(this,void 0!==m?m:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)}))}).call(this,void 0!==m.g?m.g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)}}]);assets/js/popup.7b71aedb401104b93788.bundle.min.js000064400000001366150755004310014755 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[50],{3573:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=elementorModules.frontend.handlers.Base.extend({getDefaultSettings:()=>({selectors:{form:".elementor-form"}}),getDefaultElements(){var e=this.getSettings("selectors"),t={};return t.$form=this.$element.find(e.form),t},bindEvents(){this.elements.$form.on("submit_success",this.handleFormAction)},handleFormAction(e,t){if(void 0===t.data.popup)return;const o=t.data.popup;if("open"===o.action)return elementorProFrontend.modules.popup.showPopup(o);setTimeout((()=>elementorProFrontend.modules.popup.closePopup(o,e)),1e3)}});t.default=o}}]);assets/js/social.787445e9f143597c5be5.bundle.min.js000064400000001770150755004310015037 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
(self.webpackChunkelementor_pro=self.webpackChunkelementor_pro||[]).push([[443],{908:(e,o)=>{"use strict";Object.defineProperty(o,"__esModule",{value:!0}),o.default=void 0;class FacebookHandler extends elementorModules.frontend.handlers.Base{getConfig(){return elementorProFrontend.config.facebook_sdk}setConfig(e,o){elementorProFrontend.config.facebook_sdk[e]=o}parse(){FB.XFBML.parse(this.$element[0])}loadSDK(){const e=this.getConfig();e.isLoading||e.isLoaded||(this.setConfig("isLoading",!0),jQuery.ajax({url:"https://connect.facebook.net/"+e.lang+"/sdk.js",dataType:"script",cache:!0,success:()=>{FB.init({appId:e.app_id,version:"v2.10",xfbml:!1}),this.setConfig("isLoaded",!0),this.setConfig("isLoading",!1),elementorFrontend.elements.$document.trigger("fb:sdk:loaded")}}))}onInit(...e){super.onInit(...e),this.loadSDK();this.getConfig().isLoaded?this.parse():elementorFrontend.elements.$document.on("fb:sdk:loaded",(()=>this.parse()))}}o.default=FacebookHandler}}]);assets/css/preview.min.css000064400000003552150755004310011620 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-document-handle{display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:absolute;z-index:100;top:0;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);background-color:#fcb92c;padding:5px 10px;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:11px;color:#fff;border-radius:0 0 3px 3px;cursor:pointer}.elementor-document-handle:after,.elementor-document-handle:before{content:"";position:absolute;border:solid transparent}.elementor-document-handle:before{right:calc(100% - 1px);border-right-color:#fcb92c;border-width:0 14px 23px 0}.elementor-document-handle:after{left:calc(100% - 1px);border-left-color:#fcb92c;border-width:0 0 23px 14px}.elementor-document-handle .eicon-edit{margin-right:5px}.elementor-editor-active .elementor{position:relative}.elementor-editor-active .elementor:not(.elementor-edit-mode):hover{-webkit-box-shadow:0 0 0 1px #fcb92c;box-shadow:0 0 0 1px #fcb92c}.elementor-editor-active .elementor:not(.elementor-edit-mode):hover .elementor-document-handle{display:-webkit-box;display:-ms-flexbox;display:flex;line-height:normal}.elementor-editor-active .elementor.loading{opacity:.5}.elementor-editor-active .elementor[data-elementor-type=single]>.elementor-document-handle{-webkit-transform:translateX(-50%) translateY(-100%);-ms-transform:translateX(-50%) translateY(-100%);transform:translateX(-50%) translateY(-100%);border-radius:3px 3px 0 0}.elementor-editor-active .elementor[data-elementor-type=single]>.elementor-document-handle:before{border-width:23px 14px 0 0}.elementor-editor-active .elementor[data-elementor-type=single]>.elementor-document-handle:after{border-width:23px 0 0 14px}.elementor-embedded-editor.elementor-location-header .elementor-section-wrap:not(:empty)+#elementor-add-new-section{display:none}assets/css/widget-lottie.min.css000064400000001370150755004310012714 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.e-lottie__container{display:inline-block;max-width:var(--lottie-container-max-width);width:var(--lottie-container-width);opacity:var(--lottie-container-opacity)}.e-lottie__container:hover{opacity:var(--lottie-container-opacity-hover);-webkit-transition-duration:var(--lottie-container-transition-duration-hover);-o-transition-duration:var(--lottie-container-transition-duration-hover);transition-duration:var(--lottie-container-transition-duration-hover)}.e-lottie__container svg,.e-lottie__container svg *{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}.e-lottie__caption{color:var(--caption-color);margin-top:var(--caption-margin-top);text-align:var(--caption-text-align)}assets/css/widget-table-of-contents-rtl.min.css000064400000011153150755004310015537 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-widget-table-of-contents .elementor-toc__header-title{color:var(--header-color)}.elementor-widget-table-of-contents.elementor-toc--collapsed .elementor-toc__toggle-button--collapse,.elementor-widget-table-of-contents:not(.elementor-toc--collapsed) .elementor-toc__toggle-button--expand{display:none}.elementor-widget-table-of-contents .elementor-widget-container{min-height:var(--box-min-height);border:var(--box-border-width,1px) solid var(--box-border-color,#a4afb7);border-radius:var(--box-border-radius,3px);background-color:var(--box-background-color);-webkit-transition:min-height .4s;-o-transition:min-height .4s;transition:min-height .4s;overflow:hidden}.elementor-toc__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:var(--box-padding,20px);background-color:var(--header-background-color);border-bottom:var(--separator-width,1px) solid var(--box-border-color,#a4afb7)}.elementor-toc__header-title{font-size:18px;margin:0;color:var(--header-color)}.elementor-toc__toggle-button{cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-toc__toggle-button i{color:var(--toggle-button-color)}.elementor-toc__toggle-button svg{height:1em;width:1em;fill:var(--toggle-button-color)}.elementor-toc__spinner-container{text-align:center}.elementor-toc__spinner{font-size:2em}.elementor-toc__spinner.e-font-icon-svg{height:1em;width:1em}.elementor-toc__body{padding:var(--box-padding,20px);max-height:var(--toc-body-max-height);overflow-y:auto}.elementor-toc__body::-webkit-scrollbar{width:7px}.elementor-toc__body::-webkit-scrollbar-thumb{background-color:#c2cbd2;border-radius:10px}.elementor-toc__list-wrapper{list-style:none;padding:0}.elementor-toc__list-item{margin-bottom:.5em}.elementor-toc__list-item.elementor-item-active{font-weight:700}.elementor-toc__list-item .elementor-toc__list-wrapper{margin-top:.5em;margin-right:var(--nested-list-indent,1em)}.elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}.elementor-toc__list-item-text-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-toc__list-item-text-wrapper:before,.elementor-toc__list-item-text-wrapper i{margin-left:8px;color:var(--marker-color)}.elementor-toc__list-item-text-wrapper svg{margin-left:8px;fill:var(--marker-color);height:var(--marker-size,.5em);width:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper i{font-size:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper:before{font-size:var(--marker-size,1em)}.elementor-toc--content-ellipsis .elementor-toc__list-item-text{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-toc__list-items--collapsible>.elementor-toc__list-wrapper>.elementor-toc__list-item>.elementor-toc__list-wrapper{display:none}.elementor-toc__heading-anchor{position:absolute}.elementor-toc__body .elementor-toc__list-item-text{color:var(--item-text-color);-webkit-text-decoration:var(--item-text-decoration);text-decoration:var(--item-text-decoration)}.elementor-toc__body .elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__body .elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}ol.elementor-toc__list-wrapper{counter-reset:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item{counter-increment:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper:before{content:counters(item,".") ". "}@media only screen and (max-width:-1px){.elementor-toc--minimized-on-tablet_extra .elementor-toc__body{display:none}}@media only screen and (max-width:1024px){.elementor-toc--minimized-on-tablet .elementor-toc__body{display:none}}@media only screen and (max-width:-1px){.elementor-toc--minimized-on-mobile_extra .elementor-toc__body{display:none}}@media only screen and (max-width:767px){.elementor-toc--minimized-on-mobile .elementor-toc__body{display:none}}assets/css/admin.css000064400000052742150755004310010452 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.wrap.elementor-admin-page-license form.elementor-license-box {
  max-width: 600px;
  background: white;
  margin: 20px 0;
  padding: 20px 20px; }
  .wrap.elementor-admin-page-license form.elementor-license-box h3 {
    border-bottom: 1px solid #eee;
    padding: 20px;
    margin: -20px -20px 20px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .wrap.elementor-admin-page-license form.elementor-license-box h3 span {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1;
      padding-left: 5px; }
    .wrap.elementor-admin-page-license form.elementor-license-box h3 small {
      float: right;
      font-size: 13px;
      font-weight: normal; }
  .wrap.elementor-admin-page-license form.elementor-license-box label {
    display: block;
    font-size: 1.3em;
    font-weight: 600;
    margin: 1em 0; }
  .wrap.elementor-admin-page-license form.elementor-license-box .button {
    height: 30px;
    margin-left: 15px;
    margin-bottom: 0; }
  .wrap.elementor-admin-page-license form.elementor-license-box p.description {
    margin: 10px 0; }
  .wrap.elementor-admin-page-license form.elementor-license-box .e-row-stretch {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between; }
  .wrap.elementor-admin-page-license form.elementor-license-box .e-row-divider-bottom {
    padding-bottom: 15px;
    border-bottom: 1px solid #eeeeee; }

.wrap.elementor-admin-page-license .elementor-box-action {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end;
  -webkit-box-align: end;
      -ms-flex-align: end;
          align-items: flex-end;
  margin-top: 30px; }
  .wrap.elementor-admin-page-license .elementor-box-action .elementor-manually-link {
    color: #72777c;
    margin-right: 15px; }
    .wrap.elementor-admin-page-license .elementor-box-action .elementor-manually-link:hover {
      color: inherit; }

.fixed .column-elementor_library_type,
.fixed .column-instances {
  width: 10%; }

.fixed .elementor-shortcode-input {
  min-width: 235px; }

@media (min-width: 768px) and (max-width: 1440px) {
  .fixed .column-shortcode {
    width: 25%; }
  .fixed .elementor-shortcode-input {
    min-width: 100%; } }

#available-widgets [class*="elementor-template"] .widget-title:before {
  content: "\e801";
  font-family: eicon;
  font-size: 17px; }

#elementor-widget-template-empty-templates {
  margin-top: 15px;
  text-align: center; }

.elementor-widget-template-empty-templates-title {
  padding: 25px 0 30px; }

.elementor-widget-template-empty-templates-icon {
  font-size: 96px;
  color: #d5dadf; }

.elementor-widget-template-empty-templates-footer {
  color: #a4afb7;
  font-size: 13px;
  font-style: italic;
  margin-bottom: 15px; }
  .elementor-widget-template-empty-templates-footer a {
    color: #a4afb7; }

.elementor-button-spinner.error:before {
  content: "\f335";
  color: #ff0000; }

span.font-variations-count {
  display: inline-block;
  vertical-align: top;
  margin: 1px 0 0 5px;
  padding: 0 5px;
  min-width: 7px;
  height: 17px;
  border-radius: 11px;
  background-color: #d4dffb;
  color: #4278b2;
  font-size: 9px;
  line-height: 17px;
  text-align: center;
  z-index: 26; }

.post-type-elementor_font div#elementor-font-custommetabox {
  background: none;
  border: 0; }
  .post-type-elementor_font div#elementor-font-custommetabox button.handlediv {
    display: none; }
  .post-type-elementor_font div#elementor-font-custommetabox #poststuff .inside {
    margin: 0;
    padding: 0; }
  .post-type-elementor_font div#elementor-font-custommetabox h2.hndle {
    padding: 0; }
  .post-type-elementor_font div#elementor-font-custommetabox .handle-actions {
    display: none; }

.post-type-elementor_font #tagsdiv-elementor_font_type,
.post-type-elementor_font #minor-publishing-actions,
.post-type-elementor_font #misc-publishing-actions {
  display: none; }

.elementor-metabox-content .repeater-block {
  background: #ffffff;
  color: #6d7882;
  padding: 20px;
  margin-bottom: 2px; }
  .elementor-metabox-content .repeater-block span.elementor-repeater-tool-btn.close-repeater-row {
    display: none; }
  .elementor-metabox-content .repeater-block.block-visible {
    padding-bottom: 0;
    margin-bottom: 0; }
    .elementor-metabox-content .repeater-block.block-visible span.elementor-repeater-tool-btn.toggle-repeater-row {
      display: none; }
    .elementor-metabox-content .repeater-block.block-visible span.elementor-repeater-tool-btn.close-repeater-row {
      display: inline-block; }
  .elementor-metabox-content .repeater-block:not(.block-visible) .close-repeater-row {
    display: none; }
  .elementor-metabox-content .repeater-block .repeater-title {
    cursor: pointer; }

.elementor-metabox-content .row-font-label {
  padding: 0;
  margin: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  text-transform: capitalize; }
  .elementor-metabox-content .row-font-label li {
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    width: 100%;
    margin: 0; }
    .elementor-metabox-content .row-font-label li span.label {
      font-weight: 500;
      padding-right: 10px; }
    .elementor-metabox-content .row-font-label li.row-font-weight, .elementor-metabox-content .row-font-label li.row-font-style {
      max-width: 180px; }
    .elementor-metabox-content .row-font-label li.row-font-actions {
      max-width: 200px;
      text-align: right; }

.elementor-metabox-content .repeater-content {
  margin: 0; }
  .elementor-metabox-content .repeater-content .repeater-content-top {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    margin-bottom: 20px;
    line-height: 28px; }
    .elementor-metabox-content .repeater-content .repeater-content-top > div {
      -webkit-box-sizing: border-box;
              box-sizing: border-box;
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
    .elementor-metabox-content .repeater-content .repeater-content-top p {
      margin: 0;
      display: inline-block; }
      .elementor-metabox-content .repeater-content .repeater-content-top p label {
        font-weight: 500;
        padding-right: 10px; }
    .elementor-metabox-content .repeater-content .repeater-content-top .elementor-field-select {
      max-width: 180px; }
    .elementor-metabox-content .repeater-content .repeater-content-top .elementor-field-toolbar {
      max-width: 200px;
      text-align: right; }
  .elementor-metabox-content .repeater-content .repeater-content-bottom {
    background-color: #f7f7f7;
    padding: 20px 40px;
    margin: 0 -20px; }
    .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center;
      background-color: #ffffff;
      padding: 10px 20px;
      margin-bottom: 10px;
      -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.05);
              box-shadow: 0 3px 5px rgba(0, 0, 0, 0.05); }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field:last-child {
        margin-bottom: 0; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field p,
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field input {
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
        width: 100%;
        margin: 0; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field p.elementor-field-label {
        font-weight: 500;
        max-width: 120px; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input {
        padding: 5px 8px;
        margin: 0 15px;
        border-radius: 3px;
        font-size: 12px;
        width: 100%;
        background: none;
        -webkit-box-shadow: none;
                box-shadow: none;
        color: #495157;
        border: 1px solid;
        outline: none; }
        .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input:not(:focus) {
          border-color: #d5dadf; }
        .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input:focus {
          border-color: #a4afb7; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-btn,
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn {
        max-width: 100px;
        font-size: 11px; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn {
        background-color: #eceeef;
        color: #a4afb7; }
        .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn:hover {
          background-color: #b01b1b;
          color: white; }

.elementor-metabox-content .elementor-button {
  background-color: #a4afb7;
  color: #fff;
  line-height: 1;
  text-transform: uppercase;
  height: auto;
  padding: 10px 20px;
  outline: none;
  border: none;
  -webkit-transition-property: background, color, opacity, -webkit-box-shadow;
  transition-property: background, color, opacity, -webkit-box-shadow;
  -o-transition-property: background, color, box-shadow, opacity;
  transition-property: background, color, box-shadow, opacity;
  transition-property: background, color, box-shadow, opacity, -webkit-box-shadow;
  -webkit-transition-duration: .3s;
       -o-transition-duration: .3s;
          transition-duration: .3s; }
  .elementor-metabox-content .elementor-button:hover, .elementor-metabox-content .elementor-button:focus, .elementor-metabox-content .elementor-button:visited {
    color: #fff; }
  .elementor-metabox-content .elementor-button:focus, .elementor-metabox-content .elementor-button:visited {
    background-color: #a4afb7; }
  .elementor-metabox-content .elementor-button:hover {
    background-color: #6d7882;
    -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
            box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
    border: none; }
  .elementor-metabox-content .elementor-button:active {
    -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.19), 0 3px 3px rgba(0, 0, 0, 0.1);
            box-shadow: 0 5px 10px rgba(0, 0, 0, 0.19), 0 3px 3px rgba(0, 0, 0, 0.1); }
  .elementor-metabox-content .elementor-button:not([disabled]) {
    cursor: pointer; }
  .elementor-metabox-content .elementor-button.elementor-size-xs {
    font-size: 11px;
    padding: 10px 20px;
    border-radius: 2px; }
  .elementor-metabox-content .elementor-button.elementor-size-sm {
    font-size: 13px;
    padding: 12px 24px;
    border-radius: 3px; }
  .elementor-metabox-content .elementor-button.elementor-size-md {
    font-size: 14px;
    padding: 15px 30px;
    border-radius: 4px; }
  .elementor-metabox-content .elementor-button.elementor-size-lg {
    font-size: 15px;
    padding: 20px 40px;
    border-radius: 5px; }
  .elementor-metabox-content .elementor-button.elementor-size-xl {
    font-size: 18px;
    padding: 25px 50px;
    border-radius: 6px; }
  .elementor-metabox-content .elementor-button .elementor-align-icon-right {
    float: right;
    margin-left: 5px; }
  .elementor-metabox-content .elementor-button .elementor-align-icon-left {
    float: left;
    margin-right: 5px; }

.elementor-metabox-content input.button.add-repeater-row {
  margin-top: 18px;
  border: none;
  -webkit-box-shadow: none;
          box-shadow: none; }

.elementor-metabox-content .elementor-repeater-tool-btn {
  color: #a4afb7;
  cursor: pointer;
  padding: 0 20px;
  font-size: 12px;
  -webkit-transition: all 0.3s;
  -o-transition: all 0.3s;
  transition: all 0.3s; }
  .elementor-metabox-content .elementor-repeater-tool-btn i {
    padding-right: 5px; }
  .elementor-metabox-content .elementor-repeater-tool-btn:hover {
    color: #6d7882; }
  .elementor-metabox-content .elementor-repeater-tool-btn.remove-repeater-row:hover {
    color: #b01b1b; }

.elementor-metabox-content .row-font-preview,
.elementor-metabox-content .inline-preview {
  font-size: 16px;
  text-transform: capitalize; }

.column-font_preview {
  width: 65%; }

.widefat td.column-font_preview {
  font-size: 16px; }

.post-type-elementor_icons .elementor-metabox-content .elementor-button:not([disabled]) {
  margin-top: 10px; }

.post-type-elementor_icons div#postbox-container-1 {
  display: none; }

.post-type-elementor_icons div#elementor-custom-icons-metabox {
  display: none;
  border: 1px solid #eceeef;
  border-radius: 1px;
  background-color: #fff; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .inside {
    margin-top: 10px;
    margin-bottom: 20px; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-metabox-content {
    background-color: #fff; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-custom-icons-metabox {
    padding: 4px 10px 10px 10px; }
    @media (max-width: 1025px) {
      .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-custom-icons-metabox {
        padding: 0; } }
  .post-type-elementor_icons div#elementor-custom-icons-metabox h4 {
    color: #556068;
    font-size: 22px;
    font-weight: 500;
    letter-spacing: 0.7px;
    line-height: 28px;
    margin: 0 0 4px 0; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox h5 {
    color: #a4afb7;
    font-size: 16px;
    font-weight: 500;
    letter-spacing: 0.5px;
    line-height: 21px;
    margin: 0; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor--dropzone--upload__icon i {
    font-size: 64px;
    color: #39b54a; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__uploading,
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__success,
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__error,
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__file {
    display: none; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .is-dragover {
    background-color: grey; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__input {
    padding: 180px 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-field-dropzone {
    outline: 2px dashed #d5dadf;
    outline-offset: -3px;
    background-color: #fff;
    display: none; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons {
    background-color: #f7f7f7;
    border: 1px solid #eceeef;
    border-radius: 1px; }
    .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-metabox-content {
      background-color: #f7f7f7; }
      .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-metabox-content .elementor-custom-icons-metabox {
        padding: 4px 10px 0 10px; }
    .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header {
      height: 50px;
      color: #6d7882;
      background-color: #fff;
      -webkit-box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.06);
              box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.06);
      padding: 0 35px;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center;
      -webkit-box-pack: start;
          -ms-flex-pack: start;
              justify-content: flex-start; }
      @media (max-width: 1025px) {
        .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header {
          padding: 0 6px; } }
      .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div {
        -webkit-padding-end: 10px;
                padding-inline-end: 10px;
        -webkit-padding-start: 10px;
                padding-inline-start: 10px; }
        @media (max-width: 1025px) {
          .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div {
            line-height: 1; }
            .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div.remove {
              font-size: 10px; } }
        .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div:nth-of-type(2) {
          border: 1px solid #a4afb7;
          border-top: 0;
          border-bottom: 0; }
      .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta {
        color: #556068;
        font-size: 14px;
        line-height: 1; }
        @media (max-width: 1025px) {
          .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta {
            font-size: 10px; } }
        .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-value {
          font-weight: bold; }
          @media (max-width: 1025px) {
            .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-value {
              font-size: 10px; } }
        .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove {
          margin-left: auto;
          color: #556068;
          opacity: .6;
          cursor: pointer;
          -webkit-transition: all 0.3s;
          -o-transition: all 0.3s;
          transition: all 0.3s; }
          .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove i {
            color: #6d7882; }
          .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove:hover {
            opacity: 1; }
    .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-footer {
      color: #c2cbd2;
      font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
      border-top: 1px solid #eceeef;
      font-size: 11px;
      font-weight: 500;
      line-height: 1;
      text-align: right;
      padding-top: 10px;
      padding-bottom: 10px;
      -webkit-padding-end: 35px;
              padding-inline-end: 35px; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox ul {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(105px, 1fr));
    grid-gap: 20px;
    padding: 15px 35px 0 35px;
    overflow-y: auto;
    max-height: 575px; }
    .post-type-elementor_icons div#elementor-custom-icons-metabox ul li {
      position: relative;
      height: 0;
      padding-bottom: 100%;
      background-color: #fff;
      -webkit-box-shadow: 0 1px 12px rgba(0, 0, 0, 0.05);
              box-shadow: 0 1px 12px rgba(0, 0, 0, 0.05);
      border-radius: 3px;
      overflow: hidden; }
      .post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        width: 100%;
        position: absolute;
        top: 50%;
        left: 50%;
        -webkit-transform: translate(-50%, -50%);
            -ms-transform: translate(-50%, -50%);
                transform: translate(-50%, -50%);
        padding: 1px; }
      .post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon-name {
        color: #c2cbd2;
        font-size: 11px;
        padding: 18px 20px 0;
        white-space: nowrap;
        max-width: 100%;
        overflow: hidden;
        -o-text-overflow: ellipsis;
           text-overflow: ellipsis; }
        @media (max-width: 479px) {
          .post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon-name {
            display: none; } }
      .post-type-elementor_icons div#elementor-custom-icons-metabox ul li i {
        font-size: 32px; }

.post-type-elementor_icons #tagsdiv-elementor_icon_type,
.post-type-elementor_icons #minor-publishing-actions,
.post-type-elementor_icons #misc-publishing-actions {
  display: none; }

.column-icons_prefix {
  width: 65%; }
/*# sourceMappingURL=admin.css.map */assets/css/widget-posts.min.css000064400000037432150755004310012574 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
@charset "UTF-8";.elementor-widget-archive-posts:after,.elementor-widget-posts:after{display:none}.elementor-posts-container.elementor-posts-masonry{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-posts-container:not(.elementor-posts-masonry){-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-posts-container .elementor-post{padding:0;margin:0}.elementor-posts-container .elementor-post__thumbnail{overflow:hidden}.elementor-posts-container .elementor-post__thumbnail img{display:block;width:100%;max-height:none;max-width:none;-webkit-transition:-webkit-filter .3s;transition:-webkit-filter .3s;-o-transition:filter .3s;transition:filter .3s;transition:filter .3s,-webkit-filter .3s}.elementor-posts-container .elementor-post__thumbnail__link{position:relative;display:block;width:100%}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail{top:0;left:0;right:0;bottom:0}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail img{height:auto;position:absolute;top:calc(50% + 1px);left:calc(50% + 1px);-webkit-transform:scale(1.01) translate(-50%,-50%);-ms-transform:scale(1.01) translate(-50%,-50%);transform:scale(1.01) translate(-50%,-50%)}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail.elementor-fit-height img{height:100%;width:auto}.elementor-posts .elementor-post{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition-property:background,border,-webkit-box-shadow;transition-property:background,border,-webkit-box-shadow;-o-transition-property:background,border,box-shadow;transition-property:background,border,box-shadow;transition-property:background,border,box-shadow,-webkit-box-shadow;-webkit-transition-duration:.25s;-o-transition-duration:.25s;transition-duration:.25s}.elementor-posts .elementor-post__title{font-size:18px;margin:0}.elementor-posts .elementor-post__excerpt{margin-bottom:10px}.elementor-posts .elementor-post__excerpt p{margin:0;line-height:1.5em;font-size:14px;color:#777}.elementor-posts .elementor-post__meta-data{line-height:1.3em;font-size:12px;margin-bottom:13px;color:#adadad}.elementor-posts .elementor-post__read-more{font-size:12px;font-weight:700}.elementor-posts .elementor-post__thumbnail{position:relative}.elementor-posts--skin-classic{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-posts--skin-classic:not(.elementor-posts-masonry){-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-posts--skin-classic .elementor-post{overflow:hidden}.elementor-posts--skin-classic .elementor-post__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-posts--align-left .elementor-post{text-align:left}.elementor-posts--align-right .elementor-post{text-align:right}.elementor-posts--align-center .elementor-post{text-align:center}.elementor-posts--thumbnail-top .elementor-post{display:block}.elementor-posts--thumbnail-top .elementor-post__thumbnail__link{margin-bottom:20px}.elementor-posts--thumbnail-top .elementor-post__text{width:100%}.elementor-posts--thumbnail-top.elementor-posts--align-left .elementor-post__thumbnail__link{margin-right:auto}.elementor-posts--thumbnail-top.elementor-posts--align-right .elementor-post__thumbnail__link{margin-left:auto}.elementor-posts--thumbnail-top.elementor-posts--align-center .elementor-post__thumbnail__link{margin-right:auto;margin-left:auto}.elementor-posts--thumbnail-left .elementor-post__thumbnail__link,.elementor-posts--thumbnail-right .elementor-post__thumbnail__link{-ms-flex-negative:0;flex-shrink:0;width:25%}.elementor-posts--thumbnail-left .elementor-post__thumbnail__link{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0;margin-right:20px}.elementor-posts--thumbnail-right .elementor-post__thumbnail__link{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5;margin-left:20px}.elementor-posts--thumbnail-none .elementor-posts-container .elementor-post__thumbnail__link{display:none}.elementor-posts .elementor-post__card{overflow:hidden;position:relative;background-color:#fff;width:100%;min-height:100%;border-radius:3px;border:0 solid #818a91;-webkit-transition:all .25s;-o-transition:all .25s;transition:all .25s}.elementor-posts .elementor-post__card .elementor-post__thumbnail{position:relative;transform-style:preserve-3d;-webkit-transform-style:preserve-3d}.elementor-posts .elementor-post__card .elementor-post__thumbnail img{width:calc(100% + 1px)}.elementor-posts .elementor-post__card .elementor-post__text{padding:0 30px;margin-bottom:0;margin-top:20px}.elementor-posts .elementor-post__card .elementor-post__read-more{margin-bottom:20px;display:inline-block}.elementor-posts .elementor-post__card .elementor-post__meta-data{padding:15px 30px;margin-bottom:0;border-top:1px solid #eaeaea}.elementor-posts .elementor-post__card .elementor-post__meta-data span+span:before{margin:0 5px}.elementor-posts .elementor-post__card .elementor-post__title{font-size:21px}.elementor-posts .elementor-post__card .elementor-post__excerpt{line-height:1.7}.elementor-posts .elementor-post__card .elementor-post__excerpt,.elementor-posts .elementor-post__card .elementor-post__title{margin-bottom:25px}.elementor-posts .elementor-post__card .elementor-post__badge,.elementor-posts .elementor-post__card .elementor-post__read-more{text-transform:uppercase}.elementor-posts .elementor-post__badge{position:absolute;top:0;background:#818a91;color:#fff;font-size:12px;padding:.6em 1.2em;line-height:1;font-weight:400;margin:20px;border-radius:999px}.elementor-posts .elementor-post__avatar{position:relative;padding:0 30px;width:100%;top:-25px;height:0;pointer-events:none}.elementor-posts .elementor-post__avatar img{border-radius:50%;width:60px;pointer-events:all;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card,.elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data,.elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data{margin-top:auto}.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar{padding-top:0;position:static;height:auto}.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar img.avatar{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);vertical-align:bottom}.elementor-posts--show-avatar .elementor-post__thumbnail__link{margin-bottom:25px}.elementor-posts__hover-gradient .elementor-post__card .elementor-post__thumbnail__link:after{display:block;content:"";background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.35)),color-stop(75%,transparent));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.35),transparent 75%);background-image:-o-linear-gradient(bottom,rgba(0,0,0,.35) 0,transparent 75%);background-image:linear-gradient(0deg,rgba(0,0,0,.35),transparent 75%);background-repeat:no-repeat;height:100%;width:100%;position:absolute;bottom:0;opacity:1;-webkit-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.elementor-posts__hover-gradient .elementor-post__card:hover .elementor-post__thumbnail__link:after{opacity:.5}.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img{height:100%}.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img{width:calc(100% + 1px)}.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img{height:115%}.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img{width:115%}.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img{height:115%}.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img{width:115%}.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img{height:100%}.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img{width:calc(100% + 1px)}.elementor-posts__hover-zoom-in .elementor-post__thumbnail img,.elementor-posts__hover-zoom-out .elementor-post__thumbnail img{-webkit-transition:height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s;transition:height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s;-o-transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1);transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1);transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s}.elementor-card-shadow-yes .elementor-post__card{-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,.15);box-shadow:0 0 10px 0 rgba(0,0,0,.15)}.elementor-card-shadow-yes .elementor-post__card:hover{-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.15);box-shadow:0 0 30px 0 rgba(0,0,0,.15)}.elementor-posts--skin-full_content article{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.elementor-posts--skin-full_content article .elementor-post__thumbnail{padding-bottom:0}body.elementor-editor-active .elementor-posts--skin-archive_full_content,body.elementor-editor-active .elementor-posts--skin-full_content{pointer-events:none}body.elementor-editor-active .elementor-posts--skin-archive_full_content .elementor-post__thumbnail__link,body.elementor-editor-active .elementor-posts--skin-full_content .elementor-post__thumbnail__link{display:none}body.elementor-editor-active .elementor-posts--show-thumbnail .elementor-post__thumbnail__link{display:block}.elementor-portfolio__filters{list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0;margin:0}.elementor-portfolio__filter{margin:0;cursor:pointer;padding:8px}.elementor-portfolio-item{-ms-flex-item-align:start;align-self:flex-start;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:ease-in-out;-o-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;overflow:hidden;margin:0}.elementor-portfolio-item__title{margin:0;padding:0;line-height:1;font-size:18px;color:#fff}.elementor-portfolio-item__tags__separator:before{content:", "}.elementor-portfolio-item__overlay{opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;padding:15px;-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;overflow:hidden;background-color:rgba(129,138,145,.8)}.elementor-portfolio-item__overlay:hover{opacity:1;-webkit-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.elementor-portfolio-item__img img[src=""]{background-color:rgba(0,0,0,.1);height:100%}.elementor-portfolio.elementor-has-item-ratio{-webkit-transition:height .5s;-o-transition:height .5s;transition:height .5s}.elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail{position:absolute;background-color:rgba(0,0,0,.1)}.elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail__link{padding-bottom:56.25%}.elementor ul li.elementor-portfolio__filter{list-style-type:none}.elementor-widget-archive-posts.load-more-align-center .elementor-button-wrapper,.elementor-widget-posts.load-more-align-center .elementor-button-wrapper{text-align:center}.elementor-widget-archive-posts.load-more-align-start .elementor-button-wrapper,.elementor-widget-posts.load-more-align-start .elementor-button-wrapper{text-align:start}.elementor-widget-archive-posts.load-more-align-end .elementor-button-wrapper,.elementor-widget-posts.load-more-align-end .elementor-button-wrapper{text-align:end}.elementor-widget-archive-posts.load-more-align-justify .elementor-button,.elementor-widget-posts.load-more-align-justify .elementor-button{width:100%}.elementor-widget-archive-posts .e-load-more-spinner,.elementor-widget-posts .e-load-more-spinner{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-archive-posts .e-load-more-spinner i,.elementor-widget-archive-posts .e-load-more-spinner svg,.elementor-widget-posts .e-load-more-spinner i,.elementor-widget-posts .e-load-more-spinner svg{margin:0 auto;display:none}.elementor-widget-archive-posts .e-load-more-spinner i,.elementor-widget-posts .e-load-more-spinner i{color:var(--load-more-spinner-color)}.elementor-widget-archive-posts .e-load-more-spinner svg,.elementor-widget-posts .e-load-more-spinner svg{fill:var(--load-more-spinner-color);height:1em;width:1em}.elementor-widget-archive-posts .e-load-more-message,.elementor-widget-posts .e-load-more-message{color:var(--load-more-message-color);text-align:var(--load-more-message-alignment,center);display:none;margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts.e-load-more-pagination-loading,.elementor-widget-posts.e-load-more-pagination-loading{cursor:default}.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner{margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner i,.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner svg,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner i,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner svg{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-archive-posts.e-load-more-pagination-loading .elementor-button-content-wrapper,.elementor-widget-posts.e-load-more-pagination-loading .elementor-button-content-wrapper{visibility:hidden}.elementor-widget-archive-posts.e-load-more-pagination-end .elementor-button-wrapper,.elementor-widget-posts.e-load-more-pagination-end .elementor-button-wrapper{display:none}.elementor-widget-archive-posts.e-load-more-pagination-end .e-load-more-message,.elementor-widget-posts.e-load-more-pagination-end .e-load-more-message{display:block}.elementor-widget-archive-posts.e-load-more-no-spinner .elementor-button-content-wrapper,.elementor-widget-posts.e-load-more-no-spinner .elementor-button-content-wrapper{visibility:visible}.elementor-widget-archive-posts .elementor-button-wrapper,.elementor-widget-posts .elementor-button-wrapper{margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts .elementor-button-wrapper .e-load-more-spinner,.elementor-widget-posts .elementor-button-wrapper .e-load-more-spinner{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);margin:inherit}.elementor-widget-archive-posts .elementor-button-wrapper .elementor-button,.elementor-widget-posts .elementor-button-wrapper .elementor-button{cursor:pointer;position:relative}assets/css/widget-share-buttons.min.css000064400000076311150755004310014221 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn{background-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text{color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn{color:var(--e-share-buttons-primary-color,#ea4335);border-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon{background-color:var(--e-share-buttons-primary-color,#ea4335);color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon{color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon svg{fill:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-official .elementor-share-btn:hover{-webkit-filter:saturate(1.5) brightness(1.2);filter:saturate(1.5) brightness(1.2)}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_digg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_digg{background-color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_email,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_email{background-color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_print,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_print{background-color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_facebook,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_facebook{background-color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_google,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_google{background-color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pocket,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pocket{background-color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_linkedin,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_linkedin{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_odnoklassniki,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_odnoklassniki{background-color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pinterest,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pinterest{background-color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_reddit,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_reddit{background-color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_skype,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_skype{background-color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_slideshare,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_slideshare{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_snapchat,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_snapchat{background-color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_stumbleupon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_stumbleupon{background-color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_mix,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_mix{background-color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_tumblr,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_tumblr{background-color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitch,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitch{background-color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_telegram,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_telegram{background-color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitter,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitter{background-color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vimeo,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vimeo{background-color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vk,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vk{background-color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_whatsapp,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_whatsapp{background-color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_wordpress,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_wordpress{background-color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_xing,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_xing{background-color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg{color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg svg{fill:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email{color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email svg{fill:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print{color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print svg{fill:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook{color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook svg{fill:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google{color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google svg{fill:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket{color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket svg{fill:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin{color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin svg{fill:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki{color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki svg{fill:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest{color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest svg{fill:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit{color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit svg{fill:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype{color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype svg{fill:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare{color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare svg{fill:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat{color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat svg{fill:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon{color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon svg{fill:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix{color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix svg{fill:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr{color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr svg{fill:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch{color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch svg{fill:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram{color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram svg{fill:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter{color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter svg{fill:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo{color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo svg{fill:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk{color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk svg{fill:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp{color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp svg{fill:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress{color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress svg{fill:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing{color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing svg{fill:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_digg .elementor-share-btn__icon{background-color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_email .elementor-share-btn__icon{background-color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_print .elementor-share-btn__icon{background-color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_facebook .elementor-share-btn__icon{background-color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_google .elementor-share-btn__icon{background-color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pocket .elementor-share-btn__icon{background-color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_linkedin .elementor-share-btn__icon{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_odnoklassniki .elementor-share-btn__icon{background-color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pinterest .elementor-share-btn__icon{background-color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_reddit .elementor-share-btn__icon{background-color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_skype .elementor-share-btn__icon{background-color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_slideshare .elementor-share-btn__icon{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_snapchat .elementor-share-btn__icon{background-color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_stumbleupon .elementor-share-btn__icon{background-color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_mix .elementor-share-btn__icon{background-color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_tumblr .elementor-share-btn__icon{background-color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitch .elementor-share-btn__icon{background-color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_telegram .elementor-share-btn__icon{background-color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitter .elementor-share-btn__icon{background-color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vimeo .elementor-share-btn__icon{background-color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vk .elementor-share-btn__icon{background-color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_whatsapp .elementor-share-btn__icon{background-color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_wordpress .elementor-share-btn__icon{background-color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_xing .elementor-share-btn__icon{background-color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon{color:var(--e-share-buttons-icon-color,#fff)}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon svg{fill:var(--e-share-buttons-icon-color,#fff)}.elementor-share-buttons--skin-boxed .elementor-share-btn__icon,.elementor-share-buttons--skin-framed .elementor-share-btn__icon{margin-left:-.2em}.elementor-share-buttons--skin-boxed .elementor-share-btn,.elementor-share-buttons--skin-framed .elementor-share-btn{border-style:solid}.elementor-share-buttons--skin-gradient .elementor-share-btn__text,.elementor-share-buttons--skin-gradient.elementor-share-buttons--view-icon .elementor-share-btn__icon{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.12)),to(transparent));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.12),transparent);background-image:-o-linear-gradient(left,rgba(0,0,0,.12),transparent);background-image:linear-gradient(90deg,rgba(0,0,0,.12),transparent)}.elementor-share-buttons--skin-boxed .elementor-share-btn__text,.elementor-share-buttons--skin-gradient .elementor-share-btn__text,.elementor-share-buttons--skin-minimal .elementor-share-btn__text{padding-left:.9em}.elementor-share-buttons--skin-flat .elementor-share-btn,.elementor-share-buttons--skin-gradient .elementor-share-btn{background-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--skin-flat .elementor-share-btn__icon,.elementor-share-buttons--skin-flat .elementor-share-btn__text,.elementor-share-buttons--skin-gradient .elementor-share-btn__icon,.elementor-share-buttons--skin-gradient .elementor-share-btn__text{color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg,.elementor-share-buttons--skin-flat .elementor-share-btn__text svg,.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg,.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-rounded .elementor-share-btn__icon{border-radius:.5em}.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-circle .elementor-share-btn__icon{border-radius:99.9em}.elementor-share-buttons--view-text .elementor-share-btn__text{padding-left:1em}.elementor-share-buttons--view-icon .elementor-share-btn,.elementor-share-buttons--view-text .elementor-share-btn{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-share-buttons--view-icon .elementor-share-btn__icon,.elementor-share-buttons--view-icon .elementor-share-btn__text,.elementor-share-buttons--view-text .elementor-share-btn__icon,.elementor-share-buttons--view-text .elementor-share-btn__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-share-buttons--shape-rounded .elementor-share-btn{border-radius:.5em}.elementor-share-buttons--shape-circle .elementor-share-btn{border-radius:99.9em}.elementor-share-btn{overflow:hidden;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-transition-property:background-color,border-color,-webkit-filter;transition-property:background-color,border-color,-webkit-filter;-o-transition-property:filter,background-color,border-color;transition-property:filter,background-color,border-color;transition-property:filter,background-color,border-color,-webkit-filter;height:4.5em;cursor:pointer}.elementor-share-btn,.elementor-share-btn__icon,.elementor-share-btn__text{-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.elementor-share-btn__icon,.elementor-share-btn__text{-webkit-transition-property:color,background-color;-o-transition-property:color,background-color;transition-property:color,background-color}.elementor-share-btn__icon{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:4.5em;position:relative}.elementor-share-btn__icon i{font-size:var(--e-share-buttons-icon-size,1.7em)}.elementor-share-btn__icon svg{width:var(--e-share-buttons-icon-size,1.7em);height:var(--e-share-buttons-icon-size,1.7em)}.elementor-share-btn__text{font-size:1.5em;padding-right:1em;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:100}.elementor-share-btn__title{font-weight:700;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-share-buttons{text-align:var(--alignment,inherit);-moz-text-align-last:var(--alignment,inherit);text-align-last:var(--alignment,inherit)}.elementor-widget-share-buttons.elementor-grid-0 .elementor-widget-container{font-size:0}assets/css/widget-motion-fx-rtl.min.css000064400000002217150755004310014134 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-motion-effects-element,.elementor-motion-effects-layer{-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(0,.33,.07,1.03);-o-transition-timing-function:cubic-bezier(0,.33,.07,1.03);transition-timing-function:cubic-bezier(0,.33,.07,1.03);-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s}.elementor-motion-effects-container{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;-webkit-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);-ms-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.elementor-motion-effects-layer{position:absolute;top:0;left:0;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover}.elementor-motion-effects-perspective{-webkit-perspective:1200px;perspective:1200px}assets/css/editor.css000064400000045436150755004310010652 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
#elementor-panel-get-pro-elements {
  display: none; }

.elementor-panel .elementor-control .e-control-error {
  color: #b01b1b; }

.elementor-panel .elementor-control.forms-field-shortcode .elementor-control-content {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-flow: row;
          flex-flow: row;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.elementor-panel .elementor-control.forms-field-shortcode .elementor-control-title {
  width: 45%; }

.elementor-panel .elementor-control.forms-field-shortcode .elementor-control-raw-html {
  width: 55%; }

#elementor-widget-template-empty-templates {
  margin-top: 15px;
  text-align: center; }

.elementor-widget-template-empty-templates-title {
  padding: 25px 0 30px; }

.elementor-widget-template-empty-templates-icon {
  font-size: 96px;
  color: #d5dadf; }

.elementor-widget-template-empty-templates-footer {
  color: #a4afb7;
  font-size: 13px;
  font-style: italic;
  margin-bottom: 15px; }
  .elementor-widget-template-empty-templates-footer a {
    color: #a4afb7; }

#elementor-panel-global-widget {
  height: 100%; }
  #elementor-panel-global-widget > * {
    background-color: #fff; }

#elementor-global-widget-locked-header {
  -webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);
          box-shadow: 0 0 8px rgba(0, 0, 0, 0.1); }
  #elementor-global-widget-locked-header.elementor-nerd-box {
    padding: 40px 25px; }
    #elementor-global-widget-locked-header.elementor-nerd-box .elementor-nerd-box-icon {
      margin-top: 20px; }

#elementor-global-widget-locked-tools {
  margin-top: 15px;
  padding: 0 20px; }

.elementor-global-widget-locked-tool {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  padding: 20px 0;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }
  .elementor-global-widget-locked-tool .elementor-button {
    text-transform: uppercase;
    color: #fff;
    padding: 8px 0;
    width: 70px;
    font-weight: 600; }

.elementor-global-widget-locked-tool-description {
  -webkit-box-flex: 1;
      -ms-flex-positive: 1;
          flex-grow: 1; }

#elementor-global-widget-locked-unlink {
  border-top: 1px solid #e6e9ec; }

#elementor-global-templates .elementor-element {
  position: relative; }
  #elementor-global-templates .elementor-element:before {
    position: absolute;
    font-family: eicons;
    content: '\e91f';
    top: 5px;
    left: 5px;
    color: #fcb92c;
    font-size: 10px; }

#elementor-global-widget-loading {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }
  #elementor-global-widget-loading:not(.elementor-hidden) {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  #elementor-global-widget-loading i {
    color: #d5dadf;
    font-size: 50px; }

.elementor-panel .elementor-control-type-fields_map .elementor-repeater-fields {
  margin: 10px 0; }
  .elementor-panel .elementor-control-type-fields_map .elementor-repeater-fields .elementor-control {
    padding: 0; }
  .elementor-panel .elementor-control-type-fields_map .elementor-repeater-fields:last-child {
    margin-bottom: 0; }

.elementor-repeater-row--form-step .elementor-repeater-row-tools:hover {
  background-color: #c2cbd2; }

.elementor-repeater-row--form-step .elementor-repeater-row-tools div:not(.elementor-repeater-row-handle-sortable) {
  background-color: #f1f3f5; }
  .elementor-repeater-row--form-step .elementor-repeater-row-tools div:not(.elementor-repeater-row-handle-sortable):hover {
    background-color: #e6e9ec; }

.elementor-facebook-widget.fb_iframe_widget {
  width: 100% !important; }
  .elementor-facebook-widget.fb_iframe_widget span {
    width: 100% !important; }
  .elementor-facebook-widget.fb_iframe_widget iframe {
    position: relative;
    width: 100% !important; }

.elementor-facebook-widget.fb-like {
  height: 1px; }

.elementor-widget-facebook-comments iframe {
  width: 100% !important; }

#elementor-publish {
  height: 100%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  #elementor-publish__modal .dialog-message {
    padding: 0; }
  #elementor-publish__modal .dialog-buttons-wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  #elementor-publish__modal .dialog-publish {
    -webkit-transition-property: opacity, -webkit-box-shadow;
    transition-property: opacity, -webkit-box-shadow;
    -o-transition-property: box-shadow, opacity;
    transition-property: box-shadow, opacity;
    transition-property: box-shadow, opacity, -webkit-box-shadow; }
    #elementor-publish__modal .dialog-publish:not(.elementor-button-success) {
      text-decoration: underline;
      color: #a4afb7;
      font-weight: normal;
      width: 110px;
      background-color: transparent; }
      #elementor-publish__modal .dialog-publish:not(.elementor-button-success):hover {
        color: #6d7882; }
  #elementor-publish__tabs {
    padding-top: 50px; }
    @media (max-width: 1439px) {
      #elementor-publish__tabs {
        width: 28%; } }
  #elementor-publish__screen {
    overflow: auto;
    padding: 50px; }

.elementor-publish__tab {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  position: relative;
  height: 110px;
  padding: 20px 15px;
  cursor: pointer; }
  .elementor-publish__tab.elementor-active {
    background-color: #fff;
    -webkit-box-shadow: 0 6px 20px rgba(0, 0, 0, 0.07);
            box-shadow: 0 6px 20px rgba(0, 0, 0, 0.07); }
    .elementor-publish__tab.elementor-active:after {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      height: 100%;
      width: 5px;
      background-color: #71d7f7; }
  .elementor-publish__tab__image {
    width: 50px;
    -ms-flex-negative: 0;
        flex-shrink: 0; }
    .elementor-publish__tab__image img {
      width: 100%; }
  .elementor-publish__tab__content {
    text-align: left;
    padding-left: 15px; }
  .elementor-publish__tab__title {
    font-size: 18px;
    color: #556068;
    font-weight: bold; }

#elementor-theme-builder-conditions {
  margin: 40px 0 60px; }
  #elementor-theme-builder-conditions-view {
    overflow: hidden; }
  #elementor-theme-builder-conditions .elementor-control {
    background-color: transparent;
    padding: 0; }
    #elementor-theme-builder-conditions .elementor-control:before {
      content: none; }
    #elementor-theme-builder-conditions .elementor-control select {
      border-width: 0;
      height: 40px;
      padding: 0 14px; }
    #elementor-theme-builder-conditions .elementor-control-type-query {
      width: 100px; }
    #elementor-theme-builder-conditions .elementor-control-type-select .elementor-control-input-wrapper:after {
      right: 10px;
      color: #495157; }
    #elementor-theme-builder-conditions .elementor-control-type {
      width: 120px; }
      #elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type="include"] {
        background-color: #a4afb7; }
        #elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type="include"] .elementor-control-input-wrapper:before {
          content: '\e8cc'; }
      #elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type="exclude"] {
        background-color: #c2cbd2; }
        #elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type="exclude"] .elementor-control-input-wrapper:before {
          content: '\e8cd'; }
      #elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type="exclude"] select, #elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type="include"] select {
        color: #fff;
        text-transform: uppercase;
        padding-left: 33px; }
      #elementor-theme-builder-conditions .elementor-control-type .elementor-control-input-wrapper:before {
        font-family: eicons;
        position: absolute;
        top: 50%;
        -webkit-transform: translateY(-50%);
            -ms-transform: translateY(-50%);
                transform: translateY(-50%);
        left: 13px;
        font-size: 15px;
        color: #fff; }
      #elementor-theme-builder-conditions .elementor-control-type .elementor-control-input-wrapper:after {
        color: #fff; }
      #elementor-theme-builder-conditions .elementor-control-type-select {
        background-color: #ffffff; }
      #elementor-theme-builder-conditions .elementor-control-type option {
        color: #495157; }
  #elementor-theme-builder-conditions .elementor-theme-builder-conditions-repeater-row-controls {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    margin-right: 10px;
    width: 70%;
    -webkit-box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
            box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
    overflow: hidden;
    border-radius: 3px; }
    #elementor-theme-builder-conditions .elementor-theme-builder-conditions-repeater-row-controls .elementor-control:not(:first-child) {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1;
      margin-left: 1px; }
      #elementor-theme-builder-conditions .elementor-theme-builder-conditions-repeater-row-controls .elementor-control:not(:first-child) select {
        border-radius: 0; }
  #elementor-theme-builder-conditions .elementor-repeater-fields-wrapper {
    max-width: 700px;
    width: 100%;
    margin: auto; }
  #elementor-theme-builder-conditions .elementor-repeater-fields {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    margin-top: 10px; }
  #elementor-theme-builder-conditions .elementor-control-field {
    display: block; }
  #elementor-theme-builder-conditions .elementor-control-title,
  #elementor-theme-builder-conditions .elementor-control-spinner {
    display: none; }
  #elementor-theme-builder-conditions .elementor-control-input-wrapper {
    width: 100%;
    max-width: initial; }
  #elementor-theme-builder-conditions .select2-selection {
    height: 40px;
    border: none;
    border-radius: 0; }
    #elementor-theme-builder-conditions .select2-selection__rendered {
      line-height: 40px;
      padding-left: 15px;
      text-align: left; }
    #elementor-theme-builder-conditions .select2-selection__arrow {
      height: 30px; }
      #elementor-theme-builder-conditions .select2-selection__arrow b {
        border-top-color: #495157;
        border-width: 4px 4px 0 4px;
        margin-top: 2px;
        margin-left: -7px; }
  #elementor-theme-builder-conditions .elementor-repeater-tool-remove {
    font-size: 18px;
    cursor: pointer;
    color: #a4afb7; }
  #elementor-theme-builder-conditions .elementor-button-wrapper {
    margin-top: 50px; }
  #elementor-theme-builder-conditions .elementor-repeater-add {
    font-size: 14px;
    padding: 12px 26px; }

.elementor-error .elementor-theme-builder-conditions-repeater-row-controls {
  border: 1px solid rgba(176, 27, 27, 0.5); }

.elementor-conditions-conflict-message {
  margin-top: 10px;
  font-size: 11px;
  color: #b01b1b;
  text-align: left;
  padding-left: 90px; }
  .elementor-conditions-conflict-message a {
    color: #b01b1b; }

.elementor-panel-footer-theme-builder-buttons-wrapper .elementor-panel-footer-sub-menu {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }

.elementor-panel-footer-theme-builder-buttons-wrapper .elementor-panel-footer-sub-menu-item {
  display: inline-block; }
  .elementor-panel-footer-theme-builder-buttons-wrapper .elementor-panel-footer-sub-menu-item i {
    margin-right: 5px; }
  .elementor-panel-footer-theme-builder-buttons-wrapper .elementor-panel-footer-sub-menu-item > * {
    display: inline-block;
    line-height: 40px; }

.elementor-conditions-select2-dropdown {
  border: none;
  border-radius: 0; }
  .elementor-conditions-select2-dropdown .select2-results__message {
    display: none; }
  .elementor-conditions-select2-dropdown .select2-search--dropdown .select2-search__field {
    border-width: 0 0 1px;
    border-radius: 0; }

#elementor-toast.e-theme-builder-save-toaster .dialog-buttons-wrapper {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column; }

#elementor-toast.e-theme-builder-save-toaster .dialog-buttons-message {
  text-align: center; }

#elementor-toast.e-theme-builder-save-toaster .dialog-button {
  border-radius: 3px;
  text-align: center;
  font-size: 12px;
  color: #ffffff;
  cursor: pointer;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  height: 27px;
  background-color: #6d7882;
  margin: 0; }
  #elementor-toast.e-theme-builder-save-toaster .dialog-button:hover {
    background-color: #39b54a; }
  #elementor-toast.e-theme-builder-save-toaster .dialog-button i {
    margin-right: 5px; }

#elementor-toast.e-theme-builder-save-toaster .dialog-open_site_editor {
  margin-bottom: 10px; }

.elementor-control.elementor-control-sitemap_items.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title span {
  text-transform: capitalize; }

.elementor-editor-popup .elementor-tab-control-settings a:before {
  content: '\e922'; }

#elementor-publish .elementor-popup__display-settings .elementor-control-type-slider .elementor-control-input-wrapper {
  width: 150px; }

#elementor-publish .elementor-popup__display-settings .elementor-control-input-wrapper {
  width: 80px;
  max-width: 100%; }

.elementor-popup__display-settings {
  text-align: left; }
  .elementor-popup__display-settings_controls_group {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    height: 60px;
    background-color: #fff;
    margin-bottom: 10px;
    padding-right: 20px;
    -webkit-box-shadow: 0 6px 20px rgba(0, 0, 0, 0.07);
            box-shadow: 0 6px 20px rgba(0, 0, 0, 0.07);
    border-radius: 3px; }
    .elementor-popup__display-settings_controls_group:not(.elementor-active) .elementor-control:nth-child(2) h3 {
      color: #a4afb7; }
    .elementor-popup__display-settings_controls_group__icon {
      width: 60px;
      height: 60px;
      border-right: 1px solid #e6e9ec;
      display: -webkit-inline-box;
      display: -ms-inline-flexbox;
      display: inline-flex;
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center;
      -webkit-box-pack: center;
          -ms-flex-pack: center;
              justify-content: center; }
      .elementor-popup__display-settings_controls_group__icon img {
        width: 35px; }
    .elementor-popup__display-settings_controls_group .elementor-control {
      padding: 0;
      margin: 0; }
      .elementor-popup__display-settings_controls_group .elementor-control:nth-child(2) {
        width: 230px; }
        .elementor-popup__display-settings_controls_group .elementor-control:nth-child(2) h3 {
          font-size: 16px;
          font-weight: 400; }
      .elementor-popup__display-settings_controls_group .elementor-control:not(:nth-child(2)) .elementor-control-title:not(:empty) {
        width: 75px; }
      .elementor-popup__display-settings_controls_group .elementor-control:not(:last-child) {
        margin-left: 25px; }
      .elementor-popup__display-settings_controls_group .elementor-control-type-slider .elementor-control-input-wrapper {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex; }
      .elementor-popup__display-settings_controls_group .elementor-control-type-slider .elementor-slider-input {
        width: 45%; }
      .elementor-popup__display-settings_controls_group .elementor-control-type-switcher .elementor-control-field {
        -webkit-box-pack: end;
            -ms-flex-pack: end;
                justify-content: flex-end; }
  .elementor-popup__display-settings .elementor-control-type-section {
    display: none; }
  .elementor-popup__display-settings__group-toggle {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1; }

#elementor-popup-timing__controls .select2-selection {
  min-height: 27px; }

#elementor-popup-timing__controls .select2-selection__rendered {
  line-height: 1; }

#elementor-popup-timing__controls .select2-selection__choice {
  font-size: 10px; }

#elementor-popup__timing-controls-group--url .elementor-control-url_url .elementor-control-input-wrapper {
  width: 200px; }

#elementor-popup__timing-controls-group--sources .elementor-control-sources_sources .elementor-control-input-wrapper {
  width: 300px; }

#elementor-popup__timing-controls-group--devices .elementor-control-devices_devices .elementor-control-input-wrapper {
  width: 200px; }

#elementor-popup__timing-controls-group--logged_in .elementor-control-logged_in_roles .elementor-control-input-wrapper {
  width: 195px; }

#elementor-popup__timing-controls-group--browsers .elementor-control-browsers_browsers .elementor-control-input-wrapper {
  width: 100px; }

#elementor-popup__timing-controls-group--browsers .elementor-control-browsers_browsers_options .elementor-control-input-wrapper {
  width: 200px; }

#elementor-popup-settings-introduction {
  position: absolute;
  z-index: 1;
  background-color: #fff;
  color: #556068;
  -webkit-box-shadow: -4px -3px 20px 1px rgba(0, 0, 0, 0.07);
          box-shadow: -4px -3px 20px 1px rgba(0, 0, 0, 0.07);
  height: 110px;
  width: 260px;
  padding: 20px 30px;
  border-radius: 3px; }
  #elementor-popup-settings-introduction:before {
    content: '';
    position: absolute;
    border: solid transparent;
    border-width: 5px 7px;
    border-right-color: #fff;
    left: -14px;
    top: 83%; }
  #elementor-popup-settings-introduction .dialog-close-button {
    top: 10px;
    right: 10px;
    font-size: 13px; }
  #elementor-popup-settings-introduction .dialog-header {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    font-size: 14px;
    font-weight: 500; }
    #elementor-popup-settings-introduction .dialog-header i {
      color: #39b54a;
      font-size: 23px;
      margin-right: 10px; }
  #elementor-popup-settings-introduction .dialog-message {
    margin-top: 10px; }
/*# sourceMappingURL=editor.css.map */assets/css/admin.min.css000064400000042563150755004310011234 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.wrap.elementor-admin-page-license form.elementor-license-box{max-width:600px;background:#fff;margin:20px 0;padding:20px}.wrap.elementor-admin-page-license form.elementor-license-box h3{border-bottom:1px solid #eee;padding:20px;margin:-20px -20px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wrap.elementor-admin-page-license form.elementor-license-box h3 span{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-left:5px}.wrap.elementor-admin-page-license form.elementor-license-box h3 small{float:right;font-size:13px;font-weight:400}.wrap.elementor-admin-page-license form.elementor-license-box label{display:block;font-size:1.3em;font-weight:600;margin:1em 0}.wrap.elementor-admin-page-license form.elementor-license-box .button{height:30px;margin-left:15px;margin-bottom:0}.wrap.elementor-admin-page-license form.elementor-license-box p.description{margin:10px 0}.wrap.elementor-admin-page-license form.elementor-license-box .e-row-stretch{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.wrap.elementor-admin-page-license form.elementor-license-box .e-row-divider-bottom{padding-bottom:15px;border-bottom:1px solid #eee}.wrap.elementor-admin-page-license .elementor-box-action{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;margin-top:30px}.wrap.elementor-admin-page-license .elementor-box-action .elementor-manually-link{color:#72777c;margin-right:15px}.wrap.elementor-admin-page-license .elementor-box-action .elementor-manually-link:hover{color:inherit}.fixed .column-elementor_library_type,.fixed .column-instances{width:10%}.fixed .elementor-shortcode-input{min-width:235px}@media (min-width:768px) and (max-width:1440px){.fixed .column-shortcode{width:25%}.fixed .elementor-shortcode-input{min-width:100%}}#available-widgets [class*=elementor-template] .widget-title:before{content:"\e801";font-family:eicon;font-size:17px}#elementor-widget-template-empty-templates{margin-top:15px;text-align:center}.elementor-widget-template-empty-templates-title{padding:25px 0 30px}.elementor-widget-template-empty-templates-icon{font-size:96px;color:#d5dadf}.elementor-widget-template-empty-templates-footer{color:#a4afb7;font-size:13px;font-style:italic;margin-bottom:15px}.elementor-widget-template-empty-templates-footer a{color:#a4afb7}.elementor-button-spinner.error:before{content:"\f335";color:red}span.font-variations-count{display:inline-block;vertical-align:top;margin:1px 0 0 5px;padding:0 5px;min-width:7px;height:17px;border-radius:11px;background-color:#d4dffb;color:#4278b2;font-size:9px;line-height:17px;text-align:center;z-index:26}.post-type-elementor_font div#elementor-font-custommetabox{background:none;border:0}.post-type-elementor_font div#elementor-font-custommetabox button.handlediv{display:none}.post-type-elementor_font div#elementor-font-custommetabox #poststuff .inside{margin:0;padding:0}.post-type-elementor_font div#elementor-font-custommetabox h2.hndle{padding:0}.post-type-elementor_font #minor-publishing-actions,.post-type-elementor_font #misc-publishing-actions,.post-type-elementor_font #tagsdiv-elementor_font_type,.post-type-elementor_font div#elementor-font-custommetabox .handle-actions{display:none}.elementor-metabox-content .repeater-block{background:#fff;color:#6d7882;padding:20px;margin-bottom:2px}.elementor-metabox-content .repeater-block span.elementor-repeater-tool-btn.close-repeater-row{display:none}.elementor-metabox-content .repeater-block.block-visible{padding-bottom:0;margin-bottom:0}.elementor-metabox-content .repeater-block.block-visible span.elementor-repeater-tool-btn.toggle-repeater-row{display:none}.elementor-metabox-content .repeater-block.block-visible span.elementor-repeater-tool-btn.close-repeater-row{display:inline-block}.elementor-metabox-content .repeater-block:not(.block-visible) .close-repeater-row{display:none}.elementor-metabox-content .repeater-block .repeater-title{cursor:pointer}.elementor-metabox-content .row-font-label{padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;text-transform:capitalize}.elementor-metabox-content .row-font-label li{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:100%;margin:0}.elementor-metabox-content .row-font-label li span.label{font-weight:500;padding-right:10px}.elementor-metabox-content .row-font-label li.row-font-style,.elementor-metabox-content .row-font-label li.row-font-weight{max-width:180px}.elementor-metabox-content .row-font-label li.row-font-actions{max-width:200px;text-align:right}.elementor-metabox-content .repeater-content{margin:0}.elementor-metabox-content .repeater-content .repeater-content-top{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px;line-height:28px}.elementor-metabox-content .repeater-content .repeater-content-top>div{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-metabox-content .repeater-content .repeater-content-top p{margin:0;display:inline-block}.elementor-metabox-content .repeater-content .repeater-content-top p label{font-weight:500;padding-right:10px}.elementor-metabox-content .repeater-content .repeater-content-top .elementor-field-select{max-width:180px}.elementor-metabox-content .repeater-content .repeater-content-top .elementor-field-toolbar{max-width:200px;text-align:right}.elementor-metabox-content .repeater-content .repeater-content-bottom{background-color:#f7f7f7;padding:20px 40px;margin:0 -20px}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fff;padding:10px 20px;margin-bottom:10px;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.05);box-shadow:0 3px 5px rgba(0,0,0,.05)}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field:last-child{margin-bottom:0}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field input,.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field p{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:100%;margin:0}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field p.elementor-field-label{font-weight:500;max-width:120px}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input{padding:5px 8px;margin:0 15px;border-radius:3px;font-size:12px;width:100%;background:none;-webkit-box-shadow:none;box-shadow:none;color:#495157;border:1px solid;outline:none}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input:not(:focus){border-color:#d5dadf}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input:focus{border-color:#a4afb7}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-btn,.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn{max-width:100px;font-size:11px}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn{background-color:#eceeef;color:#a4afb7}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn:hover{background-color:#b01b1b;color:#fff}.elementor-metabox-content .elementor-button{background-color:#a4afb7;color:#fff;line-height:1;text-transform:uppercase;height:auto;padding:10px 20px;outline:none;border:none;-webkit-transition-property:background,color,opacity,-webkit-box-shadow;transition-property:background,color,opacity,-webkit-box-shadow;-o-transition-property:background,color,box-shadow,opacity;transition-property:background,color,box-shadow,opacity;transition-property:background,color,box-shadow,opacity,-webkit-box-shadow;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s}.elementor-metabox-content .elementor-button:focus,.elementor-metabox-content .elementor-button:hover,.elementor-metabox-content .elementor-button:visited{color:#fff}.elementor-metabox-content .elementor-button:focus,.elementor-metabox-content .elementor-button:visited{background-color:#a4afb7}.elementor-metabox-content .elementor-button:hover{background-color:#6d7882;-webkit-box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);border:none}.elementor-metabox-content .elementor-button:active{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1);box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1)}.elementor-metabox-content .elementor-button:not([disabled]){cursor:pointer}.elementor-metabox-content .elementor-button.elementor-size-xs{font-size:11px;padding:10px 20px;border-radius:2px}.elementor-metabox-content .elementor-button.elementor-size-sm{font-size:13px;padding:12px 24px;border-radius:3px}.elementor-metabox-content .elementor-button.elementor-size-md{font-size:14px;padding:15px 30px;border-radius:4px}.elementor-metabox-content .elementor-button.elementor-size-lg{font-size:15px;padding:20px 40px;border-radius:5px}.elementor-metabox-content .elementor-button.elementor-size-xl{font-size:18px;padding:25px 50px;border-radius:6px}.elementor-metabox-content .elementor-button .elementor-align-icon-right{float:right;margin-left:5px}.elementor-metabox-content .elementor-button .elementor-align-icon-left{float:left;margin-right:5px}.elementor-metabox-content input.button.add-repeater-row{margin-top:18px;border:none;-webkit-box-shadow:none;box-shadow:none}.elementor-metabox-content .elementor-repeater-tool-btn{color:#a4afb7;cursor:pointer;padding:0 20px;font-size:12px;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.elementor-metabox-content .elementor-repeater-tool-btn i{padding-right:5px}.elementor-metabox-content .elementor-repeater-tool-btn:hover{color:#6d7882}.elementor-metabox-content .elementor-repeater-tool-btn.remove-repeater-row:hover{color:#b01b1b}.elementor-metabox-content .inline-preview,.elementor-metabox-content .row-font-preview{font-size:16px;text-transform:capitalize}.column-font_preview{width:65%}.widefat td.column-font_preview{font-size:16px}.post-type-elementor_icons .elementor-metabox-content .elementor-button:not([disabled]){margin-top:10px}.post-type-elementor_icons div#postbox-container-1{display:none}.post-type-elementor_icons div#elementor-custom-icons-metabox{display:none;border:1px solid #eceeef;border-radius:1px;background-color:#fff}.post-type-elementor_icons div#elementor-custom-icons-metabox .inside{margin-top:10px;margin-bottom:20px}.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-metabox-content{background-color:#fff}.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-custom-icons-metabox{padding:4px 10px 10px}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-custom-icons-metabox{padding:0}}.post-type-elementor_icons div#elementor-custom-icons-metabox h4{color:#556068;font-size:22px;font-weight:500;letter-spacing:.7px;line-height:28px;margin:0 0 4px}.post-type-elementor_icons div#elementor-custom-icons-metabox h5{color:#a4afb7;font-size:16px;font-weight:500;letter-spacing:.5px;line-height:21px;margin:0}.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor--dropzone--upload__icon i{font-size:64px;color:#39b54a}.post-type-elementor_icons div#elementor-custom-icons-metabox .box__error,.post-type-elementor_icons div#elementor-custom-icons-metabox .box__file,.post-type-elementor_icons div#elementor-custom-icons-metabox .box__success,.post-type-elementor_icons div#elementor-custom-icons-metabox .box__uploading{display:none}.post-type-elementor_icons div#elementor-custom-icons-metabox .is-dragover{background-color:grey}.post-type-elementor_icons div#elementor-custom-icons-metabox .box__input{padding:180px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-field-dropzone{outline:2px dashed #d5dadf;outline-offset:-3px;background-color:#fff;display:none}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons{background-color:#f7f7f7;border:1px solid #eceeef;border-radius:1px}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-metabox-content{background-color:#f7f7f7}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-metabox-content .elementor-custom-icons-metabox{padding:4px 10px 0}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header{height:50px;color:#6d7882;background-color:#fff;-webkit-box-shadow:0 2px 6px 0 rgba(0,0,0,.06);box-shadow:0 2px 6px 0 rgba(0,0,0,.06);padding:0 35px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header{padding:0 6px}}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div{-webkit-padding-end:10px;padding-inline-end:10px;-webkit-padding-start:10px;padding-inline-start:10px}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div{line-height:1}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div.remove{font-size:10px}}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div:nth-of-type(2){border:1px solid #a4afb7;border-top:0;border-bottom:0}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta{color:#556068;font-size:14px;line-height:1}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta{font-size:10px}}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-value{font-weight:700}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-value{font-size:10px}}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove{margin-left:auto;color:#556068;opacity:.6;cursor:pointer;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove i{color:#6d7882}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove:hover{opacity:1}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-footer{color:#c2cbd2;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;border-top:1px solid #eceeef;font-size:11px;font-weight:500;line-height:1;text-align:right;padding-top:10px;padding-bottom:10px;-webkit-padding-end:35px;padding-inline-end:35px}.post-type-elementor_icons div#elementor-custom-icons-metabox ul{display:grid;grid-template-columns:repeat(auto-fill,minmax(105px,1fr));grid-gap:20px;padding:15px 35px 0;overflow-y:auto;max-height:575px}.post-type-elementor_icons div#elementor-custom-icons-metabox ul li{position:relative;height:0;padding-bottom:100%;background-color:#fff;-webkit-box-shadow:0 1px 12px rgba(0,0,0,.05);box-shadow:0 1px 12px rgba(0,0,0,.05);border-radius:3px;overflow:hidden}.post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);padding:1px}.post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon-name{color:#c2cbd2;font-size:11px;padding:18px 20px 0;white-space:nowrap;max-width:100%;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}@media (max-width:479px){.post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon-name{display:none}}.post-type-elementor_icons div#elementor-custom-icons-metabox ul li i{font-size:32px}.post-type-elementor_icons #minor-publishing-actions,.post-type-elementor_icons #misc-publishing-actions,.post-type-elementor_icons #tagsdiv-elementor_icon_type{display:none}.column-icons_prefix{width:65%}assets/css/widget-theme-elements.min.css000064400000027253150755004310014340 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid{color:#d4d4d4;border:1px solid;border-right:none;border-left:none;padding-top:10px;padding-bottom:10px}.elementor-post-navigation-borders-yes .elementor-post-navigation__separator{height:100%;width:1px;margin:0 auto;background-color:#d4d4d4}.elementor-post-navigation{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-post-navigation .post-navigation__arrow-wrapper{color:#d4d4d4}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev{font-size:30px;padding-right:15px}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next{font-size:30px;padding-left:15px}.elementor-post-navigation .post-navigation__arrow-wrapper i{-webkit-transform:translateY(-5%);-ms-transform:translateY(-5%);transform:translateY(-5%)}.elementor-post-navigation .elementor-post-navigation__link__next,.elementor-post-navigation .elementor-post-navigation__link__prev{overflow:hidden}.elementor-post-navigation .elementor-post-navigation__link a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__prev--label{text-transform:uppercase;font-size:.8em}.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--title{font-size:.7em}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--label,.elementor-post-navigation .post-navigation__prev--title{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation span.elementor-post-navigation__link__next{text-align:right}.elementor-post-navigation span.elementor-post-navigation__link__next,.elementor-post-navigation span.elementor-post-navigation__link__prev{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-post-navigation .elementor-grid{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-post-navigation .elementor-post-navigation__link{width:calc(50% - (1px / 2));white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation .elementor-post-navigation__separator-wrapper{text-align:center}.elementor-post-navigation .elementor-post-navigation__next{text-align:right}.elementor-post-navigation .elementor-post-navigation__next a{float:right}.elementor-search-form{display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s}.elementor-search-form .e-font-icon-svg-container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-search-form button,.elementor-search-form input[type=search]{margin:0;border:0;padding:0;display:inline-block;vertical-align:middle;white-space:normal;background:none;line-height:1;min-width:0;font-size:15px;-webkit-appearance:none;-moz-appearance:none}.elementor-search-form button:focus,.elementor-search-form input[type=search]:focus{outline:0;color:inherit}.elementor-search-form button{background-color:#818a91;font-size:var(--e-search-form-submit-icon-size,16px);color:#fff;border-radius:0}.elementor-search-form__container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;overflow:hidden;border:0 solid transparent;min-height:50px}.elementor-search-form__container:not(.elementor-search-form--full-screen){background:#eceeef}.elementor-search-form__input{-ms-flex-preferred-size:100%;flex-basis:100%;color:#55595c;-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s}.elementor-search-form__input::-webkit-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-moz-placeholder,.elementor-search-form__input::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__submit{-webkit-transition:color .2s,background .2s;-o-transition:color .2s,background .2s;transition:color .2s,background .2s;font-size:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form__submit svg{fill:var(--e-search-form-submit-text-color,#fff);width:var(--e-search-form-submit-icon-size,16px);height:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form .elementor-search-form__submit,.elementor-search-form .elementor-search-form__submit:hover{color:var(--e-search-form-submit-text-color,#fff);border:none;border-radius:0}.elementor-search-form--button-type-text .elementor-search-form__submit{-ms-flex-negative:0;flex-shrink:0}.elementor-search-form--skin-minimal .elementor-search-form__icon{opacity:.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;color:#55595c;fill:#55595c;font-size:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-minimal .elementor-search-form__icon svg{width:var(--e-search-form-icon-size-minimal,15px);height:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-full_screen .elementor-search-form input[type=search].elementor-search-form__input{font-size:50px;text-align:center;border:solid #fff;border-width:0 0 1px;line-height:1.5;color:#fff}.elementor-search-form--skin-full_screen .elementor-search-form__toggle{display:inline-block;cursor:pointer;vertical-align:middle;color:var(--e-search-form-toggle-color,#494c4f);font-size:var(--e-search-form-toggle-size,33px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i{position:relative;display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;width:var(--e-search-form-toggle-size,33px);height:var(--e-search-form-toggle-size,33px);background-color:var(--e-search-form-toggle-background-color,rgba(0,0,0,.05));border:var(--e-search-form-toggle-border-width,0) solid var(--e-search-form-toggle-color,#494c4f);border-radius:var(--e-search-form-toggle-border-radius,3px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before{font-size:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{fill:var(--e-search-form-toggle-color,#494c4f);width:var(--e-search-form-toggle-icon-size,.55em);height:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__container{-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;z-index:9998;top:0;left:0;right:0;bottom:0;height:100vh;padding:0 15%;background-color:rgba(0,0,0,.8)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen){overflow:hidden;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button{display:none}.elementor-author-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-author-box__avatar{-ms-flex-negative:0;flex-shrink:0;margin-right:25px}.elementor-author-box__avatar img{width:100px;border-radius:500px;-o-object-fit:cover;object-fit:cover}.elementor-author-box__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:17px}.elementor-author-box__name{font-size:24px;margin-bottom:5px}.elementor-author-box__bio,.elementor-author-box__bio p{margin-bottom:.8em}.elementor-author-box__bio p:last-of-type{margin-bottom:0}.elementor-author-box--layout-image-left .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-author-box--layout-image-left .elementor-author-box__avatar{margin-left:0;margin-right:25px}.elementor-author-box--layout-image-right .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-author-box--layout-image-right .elementor-author-box__avatar{margin-right:0;margin-left:25px}.elementor-author-box--layout-image-above .elementor-author-box{display:block}.elementor-author-box--layout-image-above .elementor-author-box__avatar{margin:0 auto 15px;display:inline-block}.elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar{margin-left:0}.elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar{margin-right:0}.elementor-author-box--align-left .elementor-author-box{text-align:left}.elementor-author-box--align-right .elementor-author-box{text-align:right}.elementor-author-box--align-center .elementor-author-box{text-align:center}.elementor-button.elementor-author-box__button{border:2px solid #55595c;font-size:15px;font-weight:100;padding:10px 18px}.elementor-button.elementor-author-box__button,.elementor-button.elementor-author-box__button:hover{background:transparent;color:#55595c}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar,.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar{-ms-flex-item-align:start;align-self:flex-start}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar{-ms-flex-item-align:center;align-self:center}.elementor-post-info__terms-list{display:inline-block}.elementor-post-info .elementor-icon-list-icon .elementor-avatar{border-radius:100%}.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after{margin:initial}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text{display:inline-block}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a,.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span{display:inline}.elementor-widget-breadcrumbs{font-size:.85em}.elementor-widget-breadcrumbs p{margin-bottom:0}.elementor-sitemap-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}assets/css/widget-woocommerce.min.css000064400000312752150755004310013744 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;width:100%;padding:0}body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;padding:0}.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form){margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .quantity .qty{vertical-align:top;margin-right:0}.woocommerce div.product.elementor .quantity+.button{margin-left:10px}.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input{height:100%}.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}@media (max-width:1024px){.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}@media (max-width:767px){.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button{background-color:#5bc0de}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button{background-color:#5cb85c}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button{background-color:#f0ad4e}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button{background-color:#d9534f}.elementor-widget-wc-add-to-cart .quantity{display:inline-block}.elementor-widget-wc-add-to-cart.elementor-align-center form.cart{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-wc-add-to-cart.elementor-align-left form.cart,.elementor-widget-wc-add-to-cart.elementor-align-right form.cart{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor ul.tabs:before{position:static;content:none;width:auto;bottom:auto;left:auto;border-bottom:0;z-index:auto}.woocommerce div.product.elementor ul.tabs{margin:0}.woocommerce div.product.elementor ul.tabs li{padding:0}.woocommerce div.product.elementor ul.tabs li a{padding:.8em 1.2em;line-height:1}.woocommerce div.product.elementor ul.tabs li:after,.woocommerce div.product.elementor ul.tabs li:before{border:0;position:static;bottom:auto;width:auto;height:auto;content:none;-webkit-box-sizing:border-box;box-sizing:border-box}.woocommerce div.product.elementor .woocommerce-tabs .panel{padding:20px;border-radius:0;border-width:0;border-top:1px solid #d3ced2;-webkit-box-shadow:none;box-shadow:none;margin:-1px 0 0}.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins{display:block}.elementor-widget-woocommerce-product-meta .detail-container{position:relative}.elementor-widget-woocommerce-product-meta .detail-container:after{position:absolute;bottom:0;left:0;width:100%}.elementor-widget-woocommerce-product-meta .detail-label{font-weight:700}.elementor-woo-meta--view-inline .product_meta{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-woo-meta--view-inline .product_meta .detail-container:after{width:auto;left:auto;right:auto;position:absolute;height:100%;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;right:-8px}.elementor-woo-meta--view-table .product_meta{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-woo-meta--view-table .product_meta,.elementor-woo-meta--view-table .product_meta .detail-container{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-woo-meta--view-table .product_meta .detail-label{min-width:108px}.elementor-woo-meta--view-stacked .product_meta .detail-container{display:block}.woocommerce div.product.elementor .woocommerce-product-rating{margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.woocommerce div.product.elementor .star-rating{margin-top:0}.elementor-product-rating--align-left .woocommerce-product-rating{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-product-rating--align-right .woocommerce-product-rating{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-product-rating--align-center .woocommerce-product-rating{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link{margin-left:auto}.elementor-products-grid ul.products.elementor-grid{display:grid;margin:0;grid-column-gap:20px;grid-row-gap:40px}.elementor-products-grid ul.products.elementor-grid:after,.elementor-products-grid ul.products.elementor-grid:before{content:none;display:none}.elementor-products-grid ul.products.elementor-grid li.product{width:auto;padding:0;margin:0;float:none}.elementor-products-grid ul.products.elementor-grid li.product .onsale{padding:0;display:none}.elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link{display:block;position:relative}.elementor-products-grid:not(.show-heading-yes) .products>h2{display:none}.elementor-products-grid nav.woocommerce-pagination{margin-top:40px}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul{border:0}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li{border-right:0;border-left:0}.elementor-product-loop-item--align-left ul.products li.product .star-rating{margin-right:auto}.elementor-product-loop-item--align-right ul.products li.product .star-rating{margin-left:auto}.elementor-product-loop-item--align-center ul.products li.product .star-rating{margin-right:auto;margin-left:auto}.woocommerce .elementor-element.elementor-products-grid ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product{width:auto}@media (min-width:1025px){.elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products{grid-template-columns:repeat(2,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products{grid-template-columns:repeat(3,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products{grid-template-columns:repeat(4,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products{grid-template-columns:repeat(5,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products{grid-template-columns:repeat(6,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products{grid-template-columns:repeat(7,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products{grid-template-columns:repeat(8,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products{grid-template-columns:repeat(9,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products{grid-template-columns:repeat(10,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products{grid-template-columns:repeat(11,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products{grid-template-columns:repeat(12,1fr)}}@media (max-width:1024px){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(3,1fr)}}@media (max-width:767px){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(2,1fr)}}.elementor.product .woocommerce-product-gallery__trigger+.woocommerce-product-gallery__wrapper{overflow:hidden}.woocommerce .elementor-widget-woocommerce-product-images span.onsale{padding:0}.elementor-menu-cart__wrapper{text-align:var(--main-alignment,left)}.elementor-menu-cart__toggle_wrapper{display:inline-block;position:relative}.elementor-menu-cart__toggle{display:inline-block}.elementor-menu-cart__toggle .elementor-button{background-color:var(--toggle-button-background-color,transparent);color:var(--toggle-button-text-color,#818a91);border:var(--toggle-button-border-width,1px) var(--toggle-button-border-type,solid) var(--toggle-button-border-color,#818a91);border-radius:var(--toggle-button-border-radius,0);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--toggle-icon-padding,12px 24px)}.elementor-menu-cart__toggle .elementor-button:hover{color:var(--toggle-button-hover-text-color,#818a91);background-color:var(--toggle-button-hover-background-color,transparent);border-color:var(--toggle-button-hover-border-color,#818a91)}.elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon{color:var(--toggle-button-icon-hover-color,#818a91)}.elementor-menu-cart__toggle .elementor-button-text{margin-right:.3em}.elementor-menu-cart__toggle .elementor-button-icon{position:relative;-webkit-transition:color .1s;-o-transition:color .1s;transition:color .1s;color:var(--toggle-button-icon-color,#818a91);font-size:var(--toggle-icon-size,inherit)}.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:block;position:absolute;min-width:1.6em;height:1.6em;line-height:1.5em;top:-.7em;right:-.7em;border-radius:100%;color:var(--items-indicator-text-color,#fff);background-color:var(--items-indicator-background-color,#d9534f);text-align:center;font-size:10px}.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:inline-block;font-weight:400}.elementor-menu-cart__container{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);overflow:hidden;position:fixed;z-index:9998;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,.25);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s;text-align:left}.elementor-menu-cart__main{position:fixed;left:var(--side-cart-alignment-left,auto);right:var(--side-cart-alignment-right,0);-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);top:0;bottom:0;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;font-size:14px;min-height:200px;width:350px;max-width:100%;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;padding:var(--cart-padding,20px 30px);background-color:var(--cart-background-color,#fff);-webkit-box-shadow:0 0 20px rgba(0,0,0,.2);box-shadow:0 0 20px rgba(0,0,0,.2);border-style:var(--cart-border-style,none);border-color:var(--cart-border-color,initial);border-radius:var(--cart-border-radius,0);margin-top:var(--mini-cart-spacing,0)}.elementor-menu-cart__main,.elementor-menu-cart__main .widget_shopping_cart_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-menu-cart__main .widget_shopping_cart_content{height:100%}.elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message{color:var(--empty-message-color,inherit);text-align:var(--empty-message-alignment,left)}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{background-color:transparent;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button{display:none}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{overflow:hidden;opacity:0;-webkit-transform:var(--side-cart-alignment-transform,translateX(100%));-ms-transform:var(--side-cart-alignment-transform,translateX(100%));transform:var(--side-cart-alignment-transform,translateX(100%))}.elementor-menu-cart__close-button{width:var(--cart-close-icon-size,25px);height:var(--cart-close-icon-size,25px);position:relative;margin:0 0 20px;-ms-flex-item-align:end;align-self:flex-end;cursor:pointer;display:inline-block;font-family:eicons;font-size:20px;line-height:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:after,.elementor-menu-cart__close-button:before{content:"";position:absolute;height:3px;width:100%;top:50%;left:0;margin-top:-1px;background:var(--cart-close-button-color,#818a91);border-radius:1px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:hover:after,.elementor-menu-cart__close-button:hover:before{background:var(--cart-close-button-hover-color,#818a91)}.elementor-menu-cart__close-button:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__close-button:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__products{max-height:calc(100vh - 250px);overflow:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.elementor-menu-cart__product{display:grid;grid-template-columns:28% auto;grid-template-rows:var(--price-quantity-position--grid-template-rows,auto auto);position:relative;border-width:0;border-bottom:var(--divider-width,1px) var(--divider-style,solid) var(--divider-color,#d4d4d4)}.elementor-menu-cart__product .variation{display:grid;grid-template-columns:-webkit-max-content auto;grid-template-columns:max-content auto;margin:10px 0}.elementor-menu-cart__product .variation dt{grid-column-start:1}.elementor-menu-cart__product .variation dd{grid-column-start:2;-webkit-margin-start:5px;margin-inline-start:5px}.elementor-menu-cart__product .variation dd p{margin-bottom:0}.elementor-menu-cart__product-image{grid-row-start:1;grid-row-end:3;width:100%}.elementor-menu-cart__product-image a,.elementor-menu-cart__product-image img{display:block}.elementor-menu-cart__product-name{grid-column-start:2;grid-column-end:3;margin:0}.elementor-menu-cart__product-name a{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-price{grid-column-start:2;grid-column-end:3;-ms-flex-item-align:var(--price-quantity-position--align-self,end);align-self:var(--price-quantity-position--align-self,end);font-weight:300;color:var(--product-price-color,#d4d4d4)}.elementor-menu-cart__product-name,.elementor-menu-cart__product-price{font-size:14px;padding-left:20px}.elementor-menu-cart__product-remove{color:#818a91;width:var(--remove-item-button-size,22px);height:var(--remove-item-button-size,22px);border-radius:var(--remove-item-button-size,22px);border:1px solid var(--remove-item-button-color,#d4d4d4);text-align:center;overflow:hidden;position:absolute;right:0;bottom:20px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:hover{border:1px solid var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:hover:after,.elementor-menu-cart__product-remove:hover:before{background:var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:after,.elementor-menu-cart__product-remove:before{content:"";position:absolute;height:1px;width:50%;top:50%;left:25%;margin-top:-1px;background:var(--remove-item-button-color,#d4d4d4);z-index:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__product-remove:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__product-remove>a{display:block;z-index:2;width:100%;height:100%;overflow:hidden;opacity:0;position:absolute}.elementor-menu-cart__product-remove>a.remove_from_cart_button{display:var(--remove-from-cart-button,block)}.elementor-menu-cart__product-remove>a.elementor_remove_from_cart_button{display:var(--elementor-remove-from-cart-button,none)}.elementor-menu-cart__product:last-child{border:none}.elementor-menu-cart__footer-buttons,.elementor-menu-cart__product:not(:first-of-type),.elementor-menu-cart__subtotal{padding-top:var(--product-divider-gap,20px)}.elementor-menu-cart__product{padding-right:30px}.elementor-menu-cart__product,.elementor-menu-cart__subtotal{padding-bottom:var(--product-divider-gap,20px)}.elementor-menu-cart__subtotal{font-size:20px;text-align:var(--menu-cart-subtotal-text-align,center);font-weight:600;color:var(--menu-cart-subtotal-color,inherit);border-left:var(--subtotal-divider-left-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-bottom:var(--subtotal-divider-bottom-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-right:var(--subtotal-divider-right-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-top:var(--subtotal-divider-top-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4)}.elementor-menu-cart__footer-buttons{font-size:20px;text-align:var(--cart-footer-buttons-alignment-text-align,center);display:var(--cart-footer-buttons-alignment-display,grid);grid-template-columns:var(--cart-footer-layout,1fr 1fr);margin-top:var(--cart-buttons-position-margin,0);grid-column-gap:var(--space-between-buttons,10px);grid-row-gap:var(--space-between-buttons,10px)}.elementor-menu-cart__footer-buttons .elementor-button{display:inline-block;border-radius:var(--cart-footer-buttons-border-radius,0);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.elementor-menu-cart__footer-buttons .elementor-button--view-cart{display:var(--view-cart-button-display,inline-block);color:var(--view-cart-button-text-color,#fff);padding:var(--view-cart-button-padding,15px);background-color:var(--view-cart-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover{color:var(--view-cart-button-hover-text-color,#fff);background-color:var(--view-cart-button-hover-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout{display:var(--checkout-button-display,inline-block);color:var(--checkout-button-text-color,#fff);padding:var(--checkout-button-padding,15px);background-color:var(--checkout-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:var(--checkout-button-hover-background-color,#818a91)}@media (max-width:767px){.elementor-menu-cart__footer-buttons .elementor-button{padding-left:10px;padding-right:10px}}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text{display:none}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before{content:none}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e3"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e4"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e5"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e6"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e7"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e8"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e9"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8ea"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8eb"}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product{padding-left:0;padding-right:0;grid-template-columns:25% auto}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove{display:none}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove{top:0;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove{top:20px;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove{-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);bottom:50%}.elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove{top:auto;bottom:20px}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{position:absolute;z-index:89;width:auto;height:auto;overflow:visible;top:100%;bottom:auto;background:none;min-width:330px;left:0;right:auto;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main{width:auto;height:auto;position:relative;top:auto;bottom:auto;right:auto;left:auto;overflow:visible;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}@media (max-width:767px){.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{min-width:300px}}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{opacity:0;-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px)}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown{opacity:1}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container{z-index:9998}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart{z-index:89}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container{display:none}.elementor-widget-woocommerce-checkout-page{background-color:transparent;font-family:Roboto,sans-serif;font-size:14px;line-height:21px;color:#818a91}.elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container{grid-template-columns:auto}.elementor-widget-woocommerce-checkout-page ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page table tbody tr:hover>td,.elementor-widget-woocommerce-checkout-page table tbody tr:hover>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .e-description{color:var(--sections-descriptions-color,#818a91);padding-bottom:var(--sections-descriptions-spacing,0);font-size:14px;font-weight:400}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section{margin-bottom:24px}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title{text-align:var(--login-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge{margin-top:var(--sections-secondary-title-spacing,24px);margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor{margin-top:var(--sections-secondary-title-spacing,24px)}.elementor-widget-woocommerce-checkout-page .e-coupon-box{margin-top:24px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .e-login-wrap-start{-webkit-box-flex:75%;-ms-flex:75%;flex:75%}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{-webkit-box-flex:20%;-ms-flex:20%;flex:20%;text-align:right}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:block}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{text-align:left;margin-top:15px}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label{display:none}}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{margin-bottom:0;font-size:12px}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{font-size:11px}}.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:90%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:auto}}.elementor-widget-woocommerce-checkout-page .e-checkout__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:56% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,24px);grid-row-gap:var(--sections-margin,24px)}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-checkout__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title{color:var(--sections-secondary-title-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge{text-align:var(--coupon-title-alignment,left)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address{margin-top:13px;padding-left:var(--shipping-heading-padding-start,30px)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address span{font-weight:400}.elementor-widget-woocommerce-checkout-page a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row{padding-left:var(--forms-columns-gap-padding,0);padding-right:var(--forms-columns-gap-padding,0);margin-left:var(--forms-columns-gap-margin,0);margin-right:var(--forms-columns-gap-margin,0)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);font-size:14px;border:none;font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-checkout-page .woocommerce .create-account,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row{margin-bottom:0!important}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input,.elementor-widget-woocommerce-checkout-page .woocommerce .input-radio{vertical-align:middle}.elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span{position:relative;top:2px;color:var(--sections-checkboxes-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label,.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{display:inline}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#6f6f6f);border-radius:var(--forms-buttons-border-radius,3px);padding:1rem;border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover{color:var(--forms-buttons-hover-text-color,#6f6f6f);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{margin-right:1%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{width:100%;margin-right:0;margin-bottom:15px}}.elementor-widget-woocommerce-checkout-page .woocommerce-info{border-top-color:transparent;background-color:transparent;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p{font-weight:400;font-size:12px}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info{font-weight:400;margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,.elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment{background:var(--sections-background-color,#fff);border-radius:var(--sections-border-radius,3px);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 24px 0);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{display:var(--additional-information-display,none)}@media (min-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text{color:var(--sections-messages-color,#818a91);font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p{margin-top:25px}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1{margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2{padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading{text-align:var(--order-review-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table{margin-bottom:0;border:0;font-size:14px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th{padding-top:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td{color:#000}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity{font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th{color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr{border:0;padding-left:0;padding-bottom:15px;padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr{padding-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td{font-weight:400;color:var(--order-summary-items-color,#000);border-bottom:var(--order-summary-items-divider-weight,0) solid var(--order-summary-items-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name{padding-right:40px;max-width:150px}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total{vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th{padding-top:var(--order-summary-rows-gap-top,15px);padding-bottom:var(--order-summary-rows-gap-bottom,15px)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th{color:var(--order-summary-totals-color,#818a91);vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th{border-top:var(--order-summary-totals-divider-weight,0) solid var(--order-summary-totals-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td{max-width:70px}.elementor-widget-woocommerce-checkout-page .woocommerce h3{font-size:14px;font-weight:700;margin-top:0;margin-bottom:var(--sections-title-spacing,30px);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row>span{font-weight:400;font-size:14px;margin-bottom:3px;color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:48%}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3{text-align:var(--billing-details-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row{margin-bottom:var(--forms-rows-gap,5px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child{margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login{margin-top:-8px;z-index:999;background:#fff;border-top-width:0;position:relative;margin-bottom:0;color:#818a91}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:100%}}.elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:85%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:35%}}.elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3{background:var(--additional-fields-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address{margin-bottom:var(--sections-margin,20px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment{margin-top:24px;padding:15px 25px 25px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods{border-bottom:none;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li{line-height:21px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{padding-left:15px;font-size:12px}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{float:none;font-size:11px;padding-left:10px}}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img{width:55px}}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0;margin-bottom:0;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order{background-color:#5bc0de;width:var(--purchase-button-width,auto);float:none;color:var(--purchase-button-normal-text-color,#fff);min-height:auto;padding:var(--purchase-button-padding,1em 1em);border-radius:var(--purchase-button-border-radius,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover{background-color:#5bc0de;color:var(--purchase-button-hover-text-color,#fff);border-color:var(--purchase-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--purchase-button-hover-transition-duration,.3s);-o-transition-duration:var(--purchase-button-hover-transition-duration,.3s);transition-duration:var(--purchase-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2{width:auto;float:none}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:grid;grid-template-columns:auto auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:right}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:left}}.elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field{margin-bottom:10px}.elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000);font-size:14px;font-style:normal;text-transform:none;letter-spacing:normal;text-decoration:none;line-height:21px}.e-woo-select2-wrapper .select2-results__option,.e-woo-select2-wrapper .select2-results__option:focus{color:#818a91}.elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart table tbody tr:hover>td,.elementor-widget-woocommerce-cart table tbody tr:hover>th{background-color:inherit}.elementor-widget-woocommerce-cart .e-clear{overflow:hidden;height:0;width:0}.elementor-widget-woocommerce-cart .e-cart-section{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 30px 0);border-radius:var(--sections-border-radius,3px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4)}@media (min-width:1024px){.elementor-widget-woocommerce-cart .e-cart-section:last-child{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-cart .e-cart-content{color:var(--sections-descriptions-color,#818a91);font-size:15px;font-weight:400;line-height:23px;letter-spacing:0}.elementor-widget-woocommerce-cart .e-cart__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:59% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,30px);grid-row-gap:var(--sections-margin,30px)}@media (max-width:1024px){.elementor-widget-woocommerce-cart .e-cart__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart .select2-container{margin-bottom:4px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-cart .woocommerce{font-family:Roboto,sans-serif}.elementor-widget-woocommerce-cart .woocommerce button.button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#818a91);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,.88rem 2rem);width:var(--forms-buttons-width,auto);border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button:hover{color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]{padding:var(--forms-buttons-padding,.88rem 2rem);color:var(--forms-buttons-normal-text-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover{background-color:var(--forms-buttons-hover-background-color,#fff);color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li input{vertical-align:middle}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form{margin-top:var(--sections-descriptions-spacing,15px)}.elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination{color:var(--sections-descriptions-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th{display:none}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td{text-align:left!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before{width:100%;margin-bottom:10px}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td{text-align:right!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td:before{content:attr(data-title);font-weight:700;float:left}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{text-align:var(--totals-title-alignment,left)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td{padding-top:var(--totals-rows-gap-top,12px);padding-bottom:var(--totals-rows-gap-bottom,9px)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before{color:var(--totals-color,#818a91);font-weight:700}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td{border-top-color:var(--totals-divider-color,#818a91);border-top-width:var(--totals-divider-weight,0)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row{margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-cart .woocommerce .product-name a{color:var(--product-link-normal-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .product-name a:hover{color:var(--product-link-hover-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .form-row{padding:3px 0;margin:0}.elementor-widget-woocommerce-cart .woocommerce .input-text,.elementor-widget-woocommerce-cart .woocommerce select{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,3px);border:none;padding:var(--forms-fields-padding,16px);font-size:14px}.elementor-widget-woocommerce-cart .woocommerce .input-text::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,.elementor-widget-woocommerce-cart .woocommerce select::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus,.elementor-widget-woocommerce-cart .woocommerce select:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,transparent);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-webkit-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-moz-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-ms-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text.qty{background-color:transparent;color:var(--order-summary-color,#000);border:var(--order-summary-quantity-border-weight,1px) solid var(--order-summary-quantity-border-color,#d4d4d4);border-radius:3px;padding:1px 2px;text-align:left;font-size:14px;min-height:28px;max-height:28px}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout{padding-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button{padding:var(--checkout-button-padding,15px 1em);width:var(--checkout-button-width,auto);font-size:15px;text-align:center;color:var(--checkout-button-normal-text-color,#fff);background-color:#5bc0de;border-radius:var(--checkout-button-border-radius,3px);min-height:auto;margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:#5bc0de;border-color:var(--checkout-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--checkout-button-hover-transition-duration,.3s);-o-transition-duration:var(--checkout-button-hover-transition-duration,.3s);transition-duration:var(--checkout-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .remove{background:transparent;color:var(--order-summary-remove-icon-normal-color,#000)!important;width:auto}.elementor-widget-woocommerce-cart .woocommerce .remove:hover{background:transparent;color:var(--order-summary-remove-icon-hover-color,#5bc0de)!important}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals{float:none;width:100%}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td{padding-left:0}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{float:right;width:100%}.elementor-widget-woocommerce-cart .woocommerce .coupon .form-row{padding:0}.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{-webkit-box-flex:2;-ms-flex:2;flex:2;padding-right:30px}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{padding-right:0}}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-end{-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:block}}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon{margin:var(--sections-margin,0)}.elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code{width:100%;margin-right:0;margin-bottom:15px}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:left;font-size:14px;font-weight:700}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:none;width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table th,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions{padding:16px 0 0}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a{display:inline-block}.elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child{display:var(--update-cart-automatically-display,table-row)}.elementor-widget-woocommerce-cart .woocommerce table.cart{margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce table.cart img{width:55px;height:auto;display:block}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-top:var(--order-summary-rows-gap-top,20px);padding-right:20px;padding-bottom:var(--order-summary-rows-gap-bottom,20px);padding-left:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td span{color:var(--order-summary-color,#000);font-size:14px;font-weight:400}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top:var(--order-summary-items-divider-weight,1px) solid var(--order-summary-items-divider-color,#d4d4d4)}@media (max-width:768px){.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top-width:0}}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove{padding-left:0;padding-right:0}@media (min-width:767px){.elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td{border-top:none}}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove{position:relative}.elementor-widget-woocommerce-cart .woocommerce table.cart.product-name{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{border-top-width:var(--order-summary-items-divider-weight,1px);border-top-color:var(--order-summary-items-divider-color,#d4d4d4)}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}}@media (max-width:768px){.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-left:0;padding-right:0}}@media (max-width:767px){.elementor-widget-woocommerce-cart .woocommerce table.cart{padding:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{padding:16px 28px}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-left:0;padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions{padding:0}}.elementor-widget-woocommerce-cart .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,.elementor-widget-woocommerce-cart .woocommerce .cart th{font-size:14px;font-weight:700;margin-top:0;padding:0 20px 8px 0}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{margin-bottom:var(--sections-title-spacing,1rem);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart th{padding-bottom:var(--order-summary-title-spacing,8px);color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart td:before{color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button:after{display:none}.elementor-widget-woocommerce-cart .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000)}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td{padding-left:0}}.e-woo-select2-wrapper .select2-results__option{font-family:Roboto,sans-serif;font-size:14px;color:var(--forms-fields-normal-color,#818a91)}.e-woo-select2-wrapper .select2-results__option:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account{font-family:Roboto,sans-serif;color:#818a91}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table{border:none;margin-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{background-color:var(--sections-background-color,#fff)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px 3px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,.elementor-widget-woocommerce-my-account .e-my-account-tab address{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content{border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper{padding:0;border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details{margin-bottom:40px}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px 3px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content>div>p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:var(--forms-fields-normal-background-color,#f7f7f7);border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:var(--forms-fields-focus-background-color,#f7f7f7);border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below{background-color:var(--forms-fields-normal-background-color,#f7f7f7)}.elementor-widget-woocommerce-my-account .woocommerce ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce-message{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce address{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover,.elementor-widget-woocommerce-my-account .woocommerce a.button:hover{background-color:initial}.elementor-widget-woocommerce-my-account .woocommerce em{font-size:12px;color:var(--login-messages-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .form-row{padding-left:var(--forms-columns-gap-padding-left,0);padding-right:var(--forms-columns-gap-padding-right,0);margin-left:var(--forms-columns-gap-margin-left,0);margin-right:var(--forms-columns-gap-margin-right,0);margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-my-account .woocommerce .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,0)}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,.elementor-widget-woocommerce-my-account .woocommerce .form-row select{color:var(--forms-fields-normal-color,#818a91);border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);background:#f7f7f7;border:none;font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,.elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text{margin-bottom:15px;color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword{font-size:12px;margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:50%}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first{width:100%}.elementor-widget-woocommerce-my-account .woocommerce .login,.elementor-widget-woocommerce-my-account .woocommerce .register,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px);font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .login .button,.elementor-widget-woocommerce-my-account .woocommerce .register .button,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3){margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){margin-top:10px;font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox{vertical-align:middle}.elementor-widget-woocommerce-my-account .woocommerce p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span{color:var(--checkboxes-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce td,.elementor-widget-woocommerce-my-account .woocommerce th,.elementor-widget-woocommerce-my-account .woocommerce tr{border:none}.elementor-widget-woocommerce-my-account .woocommerce h2,.elementor-widget-woocommerce-my-account .woocommerce h3{color:var(--typography-section-titles-color,#000);margin-top:0;margin-bottom:var(--section-title-spacing,45px);font-weight:400}.elementor-widget-woocommerce-my-account .woocommerce strong{color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta,.elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label{color:var(--variations-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .product-quantity{font-weight:400;color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{float:left;width:25%}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul{-webkit-padding-start:0;padding-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li{list-style-type:none;margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li:after{content:"";display:block;width:100%;background-color:var(--tabs-divider-color,#818a91);height:var(--tabs-divider-weight,0);position:relative;top:calc(var(--tabs-spacing, 2px) / 2)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a{color:var(--tabs-active-color,#5bc0de);background:#eceeef;border-color:var(--tabs-active-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{font-style:normal;font-weight:700;font-size:14px;color:var(--tabs-normal-color,#818a91);display:block;padding:var(--tabs-padding,12px 20px);text-align:var(--tabs-alignment,start);background:#f7f7f7;border-radius:var(--tabs-border-radius,0);border:0 var(--tabs-border-type,solid) var(--tabs-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover{color:var(--tabs-hover-color,#5bc0de);border-color:var(--tabs-hover-border-color,transparent)}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{padding:var(--tabs-padding,10px)}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard{margin-top:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout:after{display:none}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{float:right;width:75%;padding:0;padding-left:var(--tab-content-spacing,6%)}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{width:100%;padding:var(--tab-content-spacing,6%) 0 0 0}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type{margin-top:30px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark{background-color:transparent;font-weight:700;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child th,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child th{border-top:0}.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th{border-top:0;padding-left:0;padding-top:0;padding-bottom:var(--tables-titles-spacing,9px)}.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>th,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>th{background-color:transparent;padding-left:0;padding-top:var(--order-summary-rows-gap-top,9px);padding-bottom:var(--order-summary-rows-gap-bottom,9px);color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table td,.elementor-widget-woocommerce-my-account .woocommerce .shop_table th{border-top:var(--tables-divider-border-width,1px) var(--tables-divider-border-type,solid) var(--tables-divider-border-color,#d4d4d4)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th,.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span{color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td,.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th{padding-left:0;color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td{border-top:none;padding-top:0}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button{background:transparent;border:2px solid #5bc0de;border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);border-radius:var(--tables-button-border-radius,3px);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);margin-top:0;margin-bottom:0;padding:var(--tables-button-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-Address .title h3,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3{float:none}.elementor-widget-woocommerce-my-account .woocommerce-Address address,.elementor-widget-woocommerce-my-account .woocommerce-Addresses address{padding:var(--sections-padding,45px 30px 16px 30px)}.elementor-widget-woocommerce-my-account .woocommerce-Address .edit,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit{float:left;position:absolute;margin-left:var(--edit-link-margin-start,30px);margin-top:var(--edit-link-margin-top,10px)}.elementor-widget-woocommerce-my-account .woocommerce .u-columns{margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset{border:none;padding:0;-webkit-margin-start:0;margin-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend{font-weight:700;padding:20px 0;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px);margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-pagination{padding:16px 0}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below,.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below{padding-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td{vertical-align:top;line-height:unset}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{float:none;width:100%}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block}.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation,.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{list-style:none;padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--tabs-container-justify-content,space-between);-ms-flex-pack:var(--tabs-container-justify-content,space-between);justify-content:var(--tabs-container-justify-content,space-between)}@media (max-width:767px){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{display:block}}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block;width:var(--tab-width,100%);padding:0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);margin:0;border-right:var(--tabs-divider-weight,0) solid var(--tabs-divider-color,#818a91)}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:after{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type{padding-left:0}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type{padding-right:0;border-right-width:0}@media (max-width:767px){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}}.e-my-account-tabs-horizontal .woocommerce-MyAccount-content{float:none;width:100%;padding:var(--tab-content-spacing,50px) 0 0 0}.elementor-editor-active .elementor-widget-container,.elementor-editor-preview .elementor-widget-container{min-height:1px}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a{pointer-events:none}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button{pointer-events:none;opacity:.3}.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type){display:none}.product .count{background-color:inherit}.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2{display:none}.woocommerce div.product.elementor form.cart div.product-addon{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-negative:0;flex-shrink:0}.e-sticky-right-column--active{position:-webkit-sticky;position:sticky;top:0}assets/css/templates/frontend-rtl.min.css000064400001204320150755004310014550 0ustar00@charset "UTF-8";.elementor-bg-transform .elementor-bg{will-change:transform}.elementor-bg-transform-zoom-in:hover .elementor-bg,.elementor-bg-transform-zoom-out .elementor-bg{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.elementor-bg-transform-zoom-out:hover .elementor-bg{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-bg-transform-move-left .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-left:hover .elementor-bg,.elementor-bg-transform-move-right .elementor-bg{-webkit-transform:scale(1.2) translateX(-8%);-ms-transform:scale(1.2) translateX(-8%);transform:scale(1.2) translateX(-8%)}.elementor-bg-transform-move-right:hover .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-up .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-bg-transform-move-down .elementor-bg,.elementor-bg-transform-move-up:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(-8%);-ms-transform:scale(1.2) translateY(-8%);transform:scale(1.2) translateY(-8%)}.elementor-bg-transform-move-down:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-animated-content{--translate:0,0}.elementor-animated-content:hover .elementor-animated-item--grow{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.elementor-animated-content:hover .elementor-animated-item--shrink{-webkit-transform:scale(.85);-ms-transform:scale(.85);transform:scale(.85)}.elementor-animated-content:hover .elementor-animated-item--shrink-contained{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content:hover .elementor-animated-item--enter-zoom-in,.elementor-animated-content:hover .elementor-animated-item--enter-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-in{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in,.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-out{opacity:0}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content:hover .elementor-animated-item--enter-from-bottom,.elementor-animated-content:hover .elementor-animated-item--enter-from-left,.elementor-animated-content:hover .elementor-animated-item--enter-from-right,.elementor-animated-content:hover .elementor-animated-item--enter-from-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content:hover .elementor-animated-item--exit-to-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom{-webkit-transform:translateY(600px);-ms-transform:translateY(600px);transform:translateY(600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom,.elementor-animated-content:hover .elementor-animated-item--exit-to-left,.elementor-animated-content:hover .elementor-animated-item--exit-to-right,.elementor-animated-content:hover .elementor-animated-item--exit-to-top{opacity:0}.elementor-animated-content:hover .elementor-animated-item--move-right{-webkit-transform:translateX(30px);-ms-transform:translateX(30px);transform:translateX(30px)}.elementor-animated-content:hover .elementor-animated-item--move-left{-webkit-transform:translateX(-30px);-ms-transform:translateX(-30px);transform:translateX(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-up{-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-down{-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px)}.elementor-animated-content:hover .elementor-animated-item--move-contained-right{--translate:8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-left{--translate:-8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-top{--translate:0,-8%}.elementor-animated-content:hover .elementor-animated-item--move-contained-bottom{--translate:0,8%}.elementor-animated-content [class^=elementor-animated-item]{will-change:transform,opacity}.elementor-animated-content .elementor-animated-item--shrink-contained{-webkit-transform:scale(1.17);-ms-transform:scale(1.17);transform:scale(1.17)}.elementor-animated-content .elementor-animated-item--enter-zoom-in{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content .elementor-animated-item--enter-zoom-out{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content .elementor-animated-item--enter-zoom-in,.elementor-animated-content .elementor-animated-item--enter-zoom-out,.elementor-animated-content .elementor-animated-item--fade-in{opacity:0}.elementor-animated-content .elementor-animated-item--exit-zoom-in,.elementor-animated-content .elementor-animated-item--exit-zoom-out,.elementor-animated-content .elementor-animated-item--fade-out{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content .elementor-animated-item--enter-from-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content .elementor-animated-item--enter-from-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content .elementor-animated-item--enter-from-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom{-webkit-transform:translateY(500px);-ms-transform:translateY(500px);transform:translateY(500px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom,.elementor-animated-content .elementor-animated-item--enter-from-left,.elementor-animated-content .elementor-animated-item--enter-from-right,.elementor-animated-content .elementor-animated-item--enter-from-top{opacity:0}.elementor-animated-content .elementor-animated-item--exit-to-bottom,.elementor-animated-content .elementor-animated-item--exit-to-left,.elementor-animated-content .elementor-animated-item--exit-to-right,.elementor-animated-content .elementor-animated-item--exit-to-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content .elementor-animated-item--move-contained-bottom,.elementor-animated-content .elementor-animated-item--move-contained-left,.elementor-animated-content .elementor-animated-item--move-contained-right,.elementor-animated-content .elementor-animated-item--move-contained-top{-webkit-transform:scale(1.2) translate(var(--translate));-ms-transform:scale(1.2) translate(var(--translate));transform:scale(1.2) translate(var(--translate))}.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover{outline:1px solid #fec449}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings{background-image:-webkit-gradient(linear,left bottom,left top,from(#feb416),to(#fec449));background-image:-webkit-linear-gradient(bottom,#feb416,#fec449);background-image:-o-linear-gradient(bottom,#feb416,#fec449);background-image:linear-gradient(0deg,#feb416,#fec449)}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover{background-color:#feb416}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save{display:none}body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;width:100%;padding:0}body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;padding:0}.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form){margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .quantity .qty{vertical-align:top;margin-left:0}.woocommerce div.product.elementor .quantity+.button{margin-right:10px}.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input{height:100%}.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:0}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:0}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:0}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button{background-color:#5bc0de}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button{background-color:#5cb85c}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button{background-color:#f0ad4e}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button{background-color:#d9534f}.elementor-widget-wc-add-to-cart .quantity{display:inline-block}.elementor-widget-wc-add-to-cart.elementor-align-center form.cart{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-wc-add-to-cart.elementor-align-left form.cart,.elementor-widget-wc-add-to-cart.elementor-align-right form.cart{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor ul.tabs:before{position:static;content:none;width:auto;bottom:auto;left:auto;border-bottom:0;z-index:auto}.woocommerce div.product.elementor ul.tabs{margin:0}.woocommerce div.product.elementor ul.tabs li{padding:0}.woocommerce div.product.elementor ul.tabs li a{padding:.8em 1.2em;line-height:1}.woocommerce div.product.elementor ul.tabs li:after,.woocommerce div.product.elementor ul.tabs li:before{border:0;position:static;bottom:auto;width:auto;height:auto;content:none;-webkit-box-sizing:border-box;box-sizing:border-box}.woocommerce div.product.elementor .woocommerce-tabs .panel{padding:20px;border-radius:0;border-width:0;border-top:1px solid #d3ced2;-webkit-box-shadow:none;box-shadow:none;margin:-1px 0 0}.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins{display:block}.elementor-widget-woocommerce-product-meta .detail-container{position:relative}.elementor-widget-woocommerce-product-meta .detail-container:after{position:absolute;bottom:0;left:0;width:100%}.elementor-widget-woocommerce-product-meta .detail-label{font-weight:700}.elementor-woo-meta--view-inline .product_meta{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-woo-meta--view-inline .product_meta .detail-container:after{width:auto;left:auto;right:auto;position:absolute;height:100%;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;left:-8px}.elementor-woo-meta--view-table .product_meta{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-woo-meta--view-table .product_meta,.elementor-woo-meta--view-table .product_meta .detail-container{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-woo-meta--view-table .product_meta .detail-label{min-width:108px}.elementor-woo-meta--view-stacked .product_meta .detail-container{display:block}.woocommerce div.product.elementor .woocommerce-product-rating{margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.woocommerce div.product.elementor .star-rating{margin-top:0}.elementor-product-rating--align-left .woocommerce-product-rating{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-product-rating--align-right .woocommerce-product-rating{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-product-rating--align-center .woocommerce-product-rating{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link{margin-right:auto}.elementor-products-grid ul.products.elementor-grid{display:grid;margin:0;grid-column-gap:20px;grid-row-gap:40px}.elementor-products-grid ul.products.elementor-grid:after,.elementor-products-grid ul.products.elementor-grid:before{content:none;display:none}.elementor-products-grid ul.products.elementor-grid li.product{width:auto;padding:0;margin:0;float:none}.elementor-products-grid ul.products.elementor-grid li.product .onsale{padding:0;display:none}.elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link{display:block;position:relative}.elementor-products-grid:not(.show-heading-yes) .products>h2{display:none}.elementor-products-grid nav.woocommerce-pagination{margin-top:40px}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul{border:0}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li{border-right:0;border-left:0}.elementor-product-loop-item--align-left ul.products li.product .star-rating{margin-right:auto}.elementor-product-loop-item--align-right ul.products li.product .star-rating{margin-left:auto}.elementor-product-loop-item--align-center ul.products li.product .star-rating{margin-right:auto;margin-left:auto}.woocommerce .elementor-element.elementor-products-grid ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product{width:auto}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT){.elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products{grid-template-columns:repeat(2,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products{grid-template-columns:repeat(3,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products{grid-template-columns:repeat(4,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products{grid-template-columns:repeat(5,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products{grid-template-columns:repeat(6,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products{grid-template-columns:repeat(7,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products{grid-template-columns:repeat(8,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products{grid-template-columns:repeat(9,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products{grid-template-columns:repeat(10,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products{grid-template-columns:repeat(11,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(3,1fr)}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(2,1fr)}}.elementor.product .woocommerce-product-gallery__trigger+.woocommerce-product-gallery__wrapper{overflow:hidden}.woocommerce .elementor-widget-woocommerce-product-images span.onsale{padding:0}.elementor-menu-cart__wrapper{text-align:var(--main-alignment,right)}.elementor-menu-cart__toggle_wrapper{display:inline-block;position:relative}.elementor-menu-cart__toggle{display:inline-block}.elementor-menu-cart__toggle .elementor-button{background-color:var(--toggle-button-background-color,transparent);color:var(--toggle-button-text-color,#818a91);border:var(--toggle-button-border-width,1px) var(--toggle-button-border-type,solid) var(--toggle-button-border-color,#818a91);border-radius:var(--toggle-button-border-radius,0);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--toggle-icon-padding,12px 24px)}.elementor-menu-cart__toggle .elementor-button:hover{color:var(--toggle-button-hover-text-color,#818a91);background-color:var(--toggle-button-hover-background-color,transparent);border-color:var(--toggle-button-hover-border-color,#818a91)}.elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon{color:var(--toggle-button-icon-hover-color,#818a91)}.elementor-menu-cart__toggle .elementor-button-text{margin-left:.3em}.elementor-menu-cart__toggle .elementor-button-icon{position:relative;-webkit-transition:color .1s;-o-transition:color .1s;transition:color .1s;color:var(--toggle-button-icon-color,#818a91);font-size:var(--toggle-icon-size,inherit)}.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:block;position:absolute;min-width:1.6em;height:1.6em;line-height:1.5em;top:-.7em;left:-.7em;border-radius:100%;color:var(--items-indicator-text-color,#fff);background-color:var(--items-indicator-background-color,#d9534f);text-align:center;font-size:10px}.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:inline-block;font-weight:400}.elementor-menu-cart__container{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);overflow:hidden;position:fixed;z-index:9998;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,.25);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s;text-align:right}.elementor-menu-cart__main{position:fixed;left:var(--side-cart-alignment-left,0);right:var(--side-cart-alignment-right,auto);-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);top:0;bottom:0;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;font-size:14px;min-height:200px;width:350px;max-width:100%;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;padding:var(--cart-padding,20px 30px);background-color:var(--cart-background-color,#fff);-webkit-box-shadow:0 0 20px rgba(0,0,0,.2);box-shadow:0 0 20px rgba(0,0,0,.2);border-style:var(--cart-border-style,none);border-color:var(--cart-border-color,initial);border-radius:var(--cart-border-radius,0);margin-top:var(--mini-cart-spacing,0)}.elementor-menu-cart__main,.elementor-menu-cart__main .widget_shopping_cart_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-menu-cart__main .widget_shopping_cart_content{height:100%}.elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message{color:var(--empty-message-color,inherit);text-align:var(--empty-message-alignment,right)}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{background-color:transparent;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button{display:none}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{overflow:hidden;opacity:0;-webkit-transform:var(--side-cart-alignment-transform,translateX(-100%));-ms-transform:var(--side-cart-alignment-transform,translateX(-100%));transform:var(--side-cart-alignment-transform,translateX(-100%))}.elementor-menu-cart__close-button{width:var(--cart-close-icon-size,25px);height:var(--cart-close-icon-size,25px);position:relative;margin:0 0 20px;-ms-flex-item-align:end;align-self:flex-end;cursor:pointer;display:inline-block;font-family:eicons;font-size:20px;line-height:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:after,.elementor-menu-cart__close-button:before{content:"";position:absolute;height:3px;width:100%;top:50%;left:0;margin-top:-1px;background:var(--cart-close-button-color,#818a91);border-radius:1px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:hover:after,.elementor-menu-cart__close-button:hover:before{background:var(--cart-close-button-hover-color,#818a91)}.elementor-menu-cart__close-button:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__close-button:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__products{max-height:calc(100vh - 250px);overflow:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.elementor-menu-cart__product{display:grid;grid-template-columns:28% auto;grid-template-rows:var(--price-quantity-position--grid-template-rows,auto auto);position:relative;border-width:0;border-bottom:var(--divider-width,1px) var(--divider-style,solid) var(--divider-color,#d4d4d4)}.elementor-menu-cart__product .variation{display:grid;grid-template-columns:-webkit-max-content auto;grid-template-columns:max-content auto;margin:10px 0}.elementor-menu-cart__product .variation dt{grid-column-start:1}.elementor-menu-cart__product .variation dd{grid-column-start:2;-webkit-margin-start:5px;margin-inline-start:5px}.elementor-menu-cart__product .variation dd p{margin-bottom:0}.elementor-menu-cart__product-image{grid-row-start:1;grid-row-end:3;width:100%}.elementor-menu-cart__product-image a,.elementor-menu-cart__product-image img{display:block}.elementor-menu-cart__product-name{grid-column-start:2;grid-column-end:3;margin:0}.elementor-menu-cart__product-name a{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-price{grid-column-start:2;grid-column-end:3;-ms-flex-item-align:var(--price-quantity-position--align-self,end);align-self:var(--price-quantity-position--align-self,end);font-weight:300;color:var(--product-price-color,#d4d4d4)}.elementor-menu-cart__product-name,.elementor-menu-cart__product-price{font-size:14px;padding-right:20px}.elementor-menu-cart__product-remove{color:#818a91;width:var(--remove-item-button-size,22px);height:var(--remove-item-button-size,22px);border-radius:var(--remove-item-button-size,22px);border:1px solid var(--remove-item-button-color,#d4d4d4);text-align:center;overflow:hidden;position:absolute;left:0;bottom:20px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:hover{border:1px solid var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:hover:after,.elementor-menu-cart__product-remove:hover:before{background:var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:after,.elementor-menu-cart__product-remove:before{content:"";position:absolute;height:1px;width:50%;top:50%;left:25%;margin-top:-1px;background:var(--remove-item-button-color,#d4d4d4);z-index:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__product-remove:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__product-remove>a{display:block;z-index:2;width:100%;height:100%;overflow:hidden;opacity:0;position:absolute}.elementor-menu-cart__product-remove>a.remove_from_cart_button{display:var(--remove-from-cart-button,block)}.elementor-menu-cart__product-remove>a.elementor_remove_from_cart_button{display:var(--elementor-remove-from-cart-button,none)}.elementor-menu-cart__product:last-child{border:none}.elementor-menu-cart__footer-buttons,.elementor-menu-cart__product:not(:first-of-type),.elementor-menu-cart__subtotal{padding-top:var(--product-divider-gap,20px)}.elementor-menu-cart__product{padding-left:30px}.elementor-menu-cart__product,.elementor-menu-cart__subtotal{padding-bottom:var(--product-divider-gap,20px)}.elementor-menu-cart__subtotal{font-size:20px;text-align:var(--menu-cart-subtotal-text-align,center);font-weight:600;color:var(--menu-cart-subtotal-color,inherit);border-left:var(--subtotal-divider-left-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-bottom:var(--subtotal-divider-bottom-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-right:var(--subtotal-divider-right-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-top:var(--subtotal-divider-top-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4)}.elementor-menu-cart__footer-buttons{font-size:20px;text-align:var(--cart-footer-buttons-alignment-text-align,center);display:var(--cart-footer-buttons-alignment-display,grid);grid-template-columns:var(--cart-footer-layout,1fr 1fr);margin-top:var(--cart-buttons-position-margin,0);grid-column-gap:var(--space-between-buttons,10px);grid-row-gap:var(--space-between-buttons,10px)}.elementor-menu-cart__footer-buttons .elementor-button{display:inline-block;border-radius:var(--cart-footer-buttons-border-radius,0);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.elementor-menu-cart__footer-buttons .elementor-button--view-cart{display:var(--view-cart-button-display,inline-block);color:var(--view-cart-button-text-color,#fff);padding:var(--view-cart-button-padding,15px);background-color:var(--view-cart-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover{color:var(--view-cart-button-hover-text-color,#fff);background-color:var(--view-cart-button-hover-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout{display:var(--checkout-button-display,inline-block);color:var(--checkout-button-text-color,#fff);padding:var(--checkout-button-padding,15px);background-color:var(--checkout-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:var(--checkout-button-hover-background-color,#818a91)}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-menu-cart__footer-buttons .elementor-button{padding-left:10px;padding-right:10px}}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text{display:none}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before{content:none}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e3"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e4"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e5"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e6"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e7"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e8"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e9"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8ea"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8eb"}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product{padding-left:0;padding-right:0;grid-template-columns:25% auto}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove{display:none}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove{top:0;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove{top:20px;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove{-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);bottom:50%}.elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove{top:auto;bottom:20px}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{position:absolute;z-index:89;width:auto;height:auto;overflow:visible;top:100%;bottom:auto;background:none;min-width:330px;right:0;left:auto;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main{width:auto;height:auto;position:relative;top:auto;bottom:auto;right:auto;left:auto;overflow:visible;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{min-width:300px}}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{opacity:0;-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px)}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown{opacity:1}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container{z-index:9998}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart{z-index:89}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container{display:none}.elementor-widget-woocommerce-checkout-page{background-color:transparent;font-family:Roboto,sans-serif;font-size:14px;line-height:21px;color:#818a91}.elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container{grid-template-columns:auto}.elementor-widget-woocommerce-checkout-page ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page table tbody tr:hover>td,.elementor-widget-woocommerce-checkout-page table tbody tr:hover>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .e-description{color:var(--sections-descriptions-color,#818a91);padding-bottom:var(--sections-descriptions-spacing,0);font-size:14px;font-weight:400}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section{margin-bottom:24px}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title{text-align:var(--login-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge{margin-top:var(--sections-secondary-title-spacing,24px);margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor{margin-top:var(--sections-secondary-title-spacing,24px)}.elementor-widget-woocommerce-checkout-page .e-coupon-box{margin-top:24px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .e-login-wrap-start{-webkit-box-flex:75%;-ms-flex:75%;flex:75%}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{-webkit-box-flex:20%;-ms-flex:20%;flex:20%;text-align:left}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:block}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{text-align:right;margin-top:15px}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label{display:none}}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{margin-bottom:0;font-size:12px}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{font-size:11px}}.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:90%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:auto}}.elementor-widget-woocommerce-checkout-page .e-checkout__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:56% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,24px);grid-row-gap:var(--sections-margin,24px)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .e-checkout__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title{color:var(--sections-secondary-title-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge{text-align:var(--coupon-title-alignment,right)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address{margin-top:13px;padding-right:var(--shipping-heading-padding-start,30px)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address span{font-weight:400}.elementor-widget-woocommerce-checkout-page a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row{padding-left:var(--forms-columns-gap-padding,0);padding-right:var(--forms-columns-gap-padding,0);margin-left:var(--forms-columns-gap-margin,0);margin-right:var(--forms-columns-gap-margin,0)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);font-size:14px;border:none;font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-checkout-page .woocommerce .create-account,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row{margin-bottom:0!important}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input,.elementor-widget-woocommerce-checkout-page .woocommerce .input-radio{vertical-align:middle}.elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span{position:relative;top:2px;color:var(--sections-checkboxes-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label,.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{display:inline}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#6f6f6f);border-radius:var(--forms-buttons-border-radius,3px);padding:1rem;border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover{color:var(--forms-buttons-hover-text-color,#6f6f6f);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{margin-right:1%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{width:100%;margin-right:0;margin-bottom:15px}}.elementor-widget-woocommerce-checkout-page .woocommerce-info{border-top-color:transparent;background-color:transparent;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p{font-weight:400;font-size:12px}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info{font-weight:400;margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,.elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment{background:var(--sections-background-color,#fff);border-radius:var(--sections-border-radius,3px);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 24px 0);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{display:var(--additional-information-display,none)}@media (min-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text{color:var(--sections-messages-color,#818a91);font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p{margin-top:25px}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1{margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2{padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading{text-align:var(--order-review-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table{margin-bottom:0;border:0;font-size:14px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th{padding-top:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td{color:#000}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity{font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th{color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr{border:0;padding-left:0;padding-bottom:15px;padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr{padding-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td{font-weight:400;color:var(--order-summary-items-color,#000);border-bottom:var(--order-summary-items-divider-weight,0) solid var(--order-summary-items-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name{padding-left:40px;max-width:150px}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total{vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th{padding-top:var(--order-summary-rows-gap-top,15px);padding-bottom:var(--order-summary-rows-gap-bottom,15px)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th{color:var(--order-summary-totals-color,#818a91);vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th{border-top:var(--order-summary-totals-divider-weight,0) solid var(--order-summary-totals-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td{max-width:70px}.elementor-widget-woocommerce-checkout-page .woocommerce h3{font-size:14px;font-weight:700;margin-top:0;margin-bottom:var(--sections-title-spacing,30px);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row>span{font-weight:400;font-size:14px;margin-bottom:3px;color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:48%}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3{text-align:var(--billing-details-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row{margin-bottom:var(--forms-rows-gap,5px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child{margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login{margin-top:-8px;z-index:999;background:#fff;border-top-width:0;position:relative;margin-bottom:0;color:#818a91}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:100%}}.elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:85%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:35%}}.elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3{background:var(--additional-fields-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address{margin-bottom:var(--sections-margin,20px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment{margin-top:24px;padding:15px 25px 25px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods{border-bottom:none;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li{line-height:21px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{padding-right:15px;font-size:12px}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{float:none;font-size:11px;padding-left:10px}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img{width:55px}}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0;margin-bottom:0;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order{background-color:#5bc0de;width:var(--purchase-button-width,auto);float:none;color:var(--purchase-button-normal-text-color,#fff);min-height:auto;padding:var(--purchase-button-padding,1em 1em);border-radius:var(--purchase-button-border-radius,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover{background-color:#5bc0de;color:var(--purchase-button-hover-text-color,#fff);border-color:var(--purchase-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--purchase-button-hover-transition-duration,.3s);-o-transition-duration:var(--purchase-button-hover-transition-duration,.3s);transition-duration:var(--purchase-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2{width:auto;float:none}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:grid;grid-template-columns:auto auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:left}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:right}}.elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field{margin-bottom:10px}.elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000);font-size:14px;font-style:normal;text-transform:none;letter-spacing:normal;text-decoration:none;line-height:21px}.e-woo-select2-wrapper .select2-results__option,.e-woo-select2-wrapper .select2-results__option:focus{color:#818a91}.elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart table tbody tr:hover>td,.elementor-widget-woocommerce-cart table tbody tr:hover>th{background-color:inherit}.elementor-widget-woocommerce-cart .e-clear{overflow:hidden;height:0;width:0}.elementor-widget-woocommerce-cart .e-cart-section{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 30px 0);border-radius:var(--sections-border-radius,3px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4)}@media (min-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .e-cart-section:last-child{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-cart .e-cart-content{color:var(--sections-descriptions-color,#818a91);font-size:15px;font-weight:400;line-height:23px;letter-spacing:0}.elementor-widget-woocommerce-cart .e-cart__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:59% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,30px);grid-row-gap:var(--sections-margin,30px)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .e-cart__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart .select2-container{margin-bottom:4px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-right:1rem;padding-left:1rem}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-cart .woocommerce{font-family:Roboto,sans-serif}.elementor-widget-woocommerce-cart .woocommerce button.button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#818a91);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,.88rem 2rem);width:var(--forms-buttons-width,auto);border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button:hover{color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]{padding:var(--forms-buttons-padding,.88rem 2rem);color:var(--forms-buttons-normal-text-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover{background-color:var(--forms-buttons-hover-background-color,#fff);color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li input{vertical-align:middle}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form{margin-top:var(--sections-descriptions-spacing,15px)}.elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination{color:var(--sections-descriptions-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th{display:none}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td{text-align:right!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before{width:100%;margin-bottom:10px}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td{text-align:left!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td:before{content:attr(data-title);font-weight:700;float:right}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{text-align:var(--totals-title-alignment,right)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td{padding-top:var(--totals-rows-gap-top,12px);padding-bottom:var(--totals-rows-gap-bottom,9px)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before{color:var(--totals-color,#818a91);font-weight:700}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td{border-top-color:var(--totals-divider-color,#818a91);border-top-width:var(--totals-divider-weight,0)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row{margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-cart .woocommerce .product-name a{color:var(--product-link-normal-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .product-name a:hover{color:var(--product-link-hover-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .form-row{padding:3px 0;margin:0}.elementor-widget-woocommerce-cart .woocommerce .input-text,.elementor-widget-woocommerce-cart .woocommerce select{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,3px);border:none;padding:var(--forms-fields-padding,16px);font-size:14px}.elementor-widget-woocommerce-cart .woocommerce .input-text::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,.elementor-widget-woocommerce-cart .woocommerce select::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus,.elementor-widget-woocommerce-cart .woocommerce select:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,transparent);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-webkit-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-moz-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-ms-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text.qty{background-color:transparent;color:var(--order-summary-color,#000);border:var(--order-summary-quantity-border-weight,1px) solid var(--order-summary-quantity-border-color,#d4d4d4);border-radius:3px;padding:1px 2px;text-align:right;font-size:14px;min-height:28px;max-height:28px}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout{padding-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button{padding:var(--checkout-button-padding,15px 1em);width:var(--checkout-button-width,auto);font-size:15px;text-align:center;color:var(--checkout-button-normal-text-color,#fff);background-color:#5bc0de;border-radius:var(--checkout-button-border-radius,3px);min-height:auto;margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:#5bc0de;border-color:var(--checkout-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--checkout-button-hover-transition-duration,.3s);-o-transition-duration:var(--checkout-button-hover-transition-duration,.3s);transition-duration:var(--checkout-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .remove{background:transparent;color:var(--order-summary-remove-icon-normal-color,#000)!important;width:auto}.elementor-widget-woocommerce-cart .woocommerce .remove:hover{background:transparent;color:var(--order-summary-remove-icon-hover-color,#5bc0de)!important}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals{float:none;width:100%}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td{padding-left:0}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{float:left;width:100%}.elementor-widget-woocommerce-cart .woocommerce .coupon .form-row{padding:0}.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{-webkit-box-flex:2;-ms-flex:2;flex:2;padding-left:30px}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{padding-left:0}}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-end{-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:block}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce .coupon{margin:var(--sections-margin,0)}.elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code{width:100%;margin-left:0;margin-bottom:15px}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:right;font-size:14px;font-weight:700}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:none;width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table th,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions{padding:16px 0 0}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a{display:inline-block}.elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child{display:var(--update-cart-automatically-display,table-row)}.elementor-widget-woocommerce-cart .woocommerce table.cart{margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce table.cart img{width:55px;height:auto;display:block}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-top:var(--order-summary-rows-gap-top,20px);padding-left:20px;padding-bottom:var(--order-summary-rows-gap-bottom,20px);padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td span{color:var(--order-summary-color,#000);font-size:14px;font-weight:400}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top:var(--order-summary-items-divider-weight,1px) solid var(--order-summary-items-divider-color,#d4d4d4)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MIN){.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top-width:0}}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove{padding-right:0;padding-left:0}@media (min-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td{border-top:none}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove{position:relative}.elementor-widget-woocommerce-cart .woocommerce table.cart.product-name{padding-left:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{border-top-width:var(--order-summary-items-divider-weight,1px);border-top-color:var(--order-summary-items-divider-color,#d4d4d4)}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MIN){.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-right:0;padding-left:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-woocommerce-cart .woocommerce table.cart{padding:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{padding:16px 28px}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-right:0;padding-left:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions{padding:0}}.elementor-widget-woocommerce-cart .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,.elementor-widget-woocommerce-cart .woocommerce .cart th{font-size:14px;font-weight:700;margin-top:0;padding:0 0 8px 20px}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{margin-bottom:var(--sections-title-spacing,1rem);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart th{padding-bottom:var(--order-summary-title-spacing,8px);color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart td:before{color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button:after{display:none}.elementor-widget-woocommerce-cart .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td{padding-right:0}}.e-woo-select2-wrapper .select2-results__option{font-family:Roboto,sans-serif;font-size:14px;color:var(--forms-fields-normal-color,#818a91)}.e-woo-select2-wrapper .select2-results__option:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account{font-family:Roboto,sans-serif;color:#818a91}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table{border:none;margin-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{background-color:var(--sections-background-color,#fff)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px 3px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,.elementor-widget-woocommerce-my-account .e-my-account-tab address{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content{border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper{padding:0;border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details{margin-bottom:40px}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px 3px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content>div>p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:var(--forms-fields-normal-background-color,#f7f7f7);border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:var(--forms-fields-focus-background-color,#f7f7f7);border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below{background-color:var(--forms-fields-normal-background-color,#f7f7f7)}.elementor-widget-woocommerce-my-account .woocommerce ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce-message{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce address{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover,.elementor-widget-woocommerce-my-account .woocommerce a.button:hover{background-color:initial}.elementor-widget-woocommerce-my-account .woocommerce em{font-size:12px;color:var(--login-messages-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .form-row{padding-left:var(--forms-columns-gap-padding-left,0);padding-right:var(--forms-columns-gap-padding-right,0);margin-left:var(--forms-columns-gap-margin-left,0);margin-right:var(--forms-columns-gap-margin-right,0);margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-my-account .woocommerce .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,0)}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,.elementor-widget-woocommerce-my-account .woocommerce .form-row select{color:var(--forms-fields-normal-color,#818a91);border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);background:#f7f7f7;border:none;font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,.elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text{margin-bottom:15px;color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword{font-size:12px;margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:50%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first{width:100%}.elementor-widget-woocommerce-my-account .woocommerce .login,.elementor-widget-woocommerce-my-account .woocommerce .register,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px);font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .login .button,.elementor-widget-woocommerce-my-account .woocommerce .register .button,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3){margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){margin-top:10px;font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox{vertical-align:middle}.elementor-widget-woocommerce-my-account .woocommerce p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span{color:var(--checkboxes-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce td,.elementor-widget-woocommerce-my-account .woocommerce th,.elementor-widget-woocommerce-my-account .woocommerce tr{border:none}.elementor-widget-woocommerce-my-account .woocommerce h2,.elementor-widget-woocommerce-my-account .woocommerce h3{color:var(--typography-section-titles-color,#000);margin-top:0;margin-bottom:var(--section-title-spacing,45px);font-weight:400}.elementor-widget-woocommerce-my-account .woocommerce strong{color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta,.elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label{color:var(--variations-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .product-quantity{font-weight:400;color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{float:right;width:25%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul{-webkit-padding-start:0;padding-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li{list-style-type:none;margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li:after{content:"";display:block;width:100%;background-color:var(--tabs-divider-color,#818a91);height:var(--tabs-divider-weight,0);position:relative;top:calc(var(--tabs-spacing, 2px) / 2)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a{color:var(--tabs-active-color,#5bc0de);background:#eceeef;border-color:var(--tabs-active-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{font-style:normal;font-weight:700;font-size:14px;color:var(--tabs-normal-color,#818a91);display:block;padding:var(--tabs-padding,12px 20px);text-align:var(--tabs-alignment,start);background:#f7f7f7;border-radius:var(--tabs-border-radius,0);border:0 var(--tabs-border-type,solid) var(--tabs-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover{color:var(--tabs-hover-color,#5bc0de);border-color:var(--tabs-hover-border-color,transparent)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{padding:var(--tabs-padding,10px)}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard{margin-top:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout:after{display:none}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{float:left;width:75%;padding:0;padding-right:var(--tab-content-spacing,6%)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{width:100%;padding:var(--tab-content-spacing,6%) 0 0 0}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type{margin-top:30px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark{background-color:transparent;font-weight:700;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child th,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child th{border-top:0}.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th{border-top:0;padding-right:0;padding-top:0;padding-bottom:var(--tables-titles-spacing,9px)}.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>th,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>th{background-color:transparent;padding-right:0;padding-top:var(--order-summary-rows-gap-top,9px);padding-bottom:var(--order-summary-rows-gap-bottom,9px);color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table td,.elementor-widget-woocommerce-my-account .woocommerce .shop_table th{border-top:var(--tables-divider-border-width,1px) var(--tables-divider-border-type,solid) var(--tables-divider-border-color,#d4d4d4)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th,.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span{color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td,.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th{padding-right:0;color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td{border-top:none;padding-top:0}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button{background:transparent;border:2px solid #5bc0de;border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);border-radius:var(--tables-button-border-radius,3px);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);margin-top:0;margin-bottom:0;padding:var(--tables-button-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-Address .title h3,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3{float:none}.elementor-widget-woocommerce-my-account .woocommerce-Address address,.elementor-widget-woocommerce-my-account .woocommerce-Addresses address{padding:var(--sections-padding,45px 30px 16px 30px)}.elementor-widget-woocommerce-my-account .woocommerce-Address .edit,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit{float:right;position:absolute;margin-right:var(--edit-link-margin-start,30px);margin-top:var(--edit-link-margin-top,10px)}.elementor-widget-woocommerce-my-account .woocommerce .u-columns{margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset{border:none;padding:0;-webkit-margin-start:0;margin-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend{font-weight:700;padding:20px 0;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px);margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-pagination{padding:16px 0}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below,.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below{padding-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td{vertical-align:top;line-height:unset}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{float:none;width:100%}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block}.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation,.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{list-style:none;padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--tabs-container-justify-content,space-between);-ms-flex-pack:var(--tabs-container-justify-content,space-between);justify-content:var(--tabs-container-justify-content,space-between)}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{display:block}}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block;width:var(--tab-width,100%);padding:0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);margin:0;border-right:var(--tabs-divider-weight,0) solid var(--tabs-divider-color,#818a91)}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:after{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type{padding-right:0}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type{padding-left:0;border-right-width:0}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}}.e-my-account-tabs-horizontal .woocommerce-MyAccount-content{float:none;width:100%;padding:var(--tab-content-spacing,50px) 0 0 0}.elementor-editor-active .elementor-widget-container,.elementor-editor-preview .elementor-widget-container{min-height:1px}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a{pointer-events:none}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button{pointer-events:none;opacity:.3}.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type){display:none}.product .count{background-color:inherit}.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2{display:none}.woocommerce div.product.elementor form.cart div.product-addon{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-negative:0;flex-shrink:0}.e-sticky-right-column--active{position:-webkit-sticky;position:sticky;top:0}.elementor-theme-builder-content-area{height:400px}.elementor-location-footer:before,.elementor-location-header:before{content:"";display:table;clear:both}.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post{display:block}.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid{color:#d4d4d4;border:1px solid;border-right:none;border-left:none;padding-top:10px;padding-bottom:10px}.elementor-post-navigation-borders-yes .elementor-post-navigation__separator{height:100%;width:1px;margin:0 auto;background-color:#d4d4d4}.elementor-post-navigation{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-post-navigation .post-navigation__arrow-wrapper{color:#d4d4d4}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev{font-size:30px;padding-left:15px}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next{font-size:30px;padding-right:15px}.elementor-post-navigation .post-navigation__arrow-wrapper i{-webkit-transform:translateY(-5%);-ms-transform:translateY(-5%);transform:translateY(-5%)}.elementor-post-navigation .elementor-post-navigation__link__next,.elementor-post-navigation .elementor-post-navigation__link__prev{overflow:hidden}.elementor-post-navigation .elementor-post-navigation__link a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__prev--label{text-transform:uppercase;font-size:.8em}.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--title{font-size:.7em}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--label,.elementor-post-navigation .post-navigation__prev--title{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation span.elementor-post-navigation__link__next{text-align:left}.elementor-post-navigation span.elementor-post-navigation__link__next,.elementor-post-navigation span.elementor-post-navigation__link__prev{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-post-navigation .elementor-grid{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-post-navigation .elementor-post-navigation__link{width:calc(50% - (1px / 2));white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation .elementor-post-navigation__separator-wrapper{text-align:center}.elementor-post-navigation .elementor-post-navigation__next{text-align:left}.elementor-post-navigation .elementor-post-navigation__next a{float:left}.elementor-search-form{display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s}.elementor-search-form .e-font-icon-svg-container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-search-form button,.elementor-search-form input[type=search]{margin:0;border:0;padding:0;display:inline-block;vertical-align:middle;white-space:normal;background:none;line-height:1;min-width:0;font-size:15px;-webkit-appearance:none;-moz-appearance:none}.elementor-search-form button:focus,.elementor-search-form input[type=search]:focus{outline:0;color:inherit}.elementor-search-form button{background-color:#818a91;font-size:var(--e-search-form-submit-icon-size,16px);color:#fff;border-radius:0}.elementor-search-form__container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;overflow:hidden;border:0 solid transparent;min-height:50px}.elementor-search-form__container:not(.elementor-search-form--full-screen){background:#eceeef}.elementor-search-form__input{-ms-flex-preferred-size:100%;flex-basis:100%;color:#55595c;-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s}.elementor-search-form__input::-webkit-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-moz-placeholder,.elementor-search-form__input::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__submit{-webkit-transition:color .2s,background .2s;-o-transition:color .2s,background .2s;transition:color .2s,background .2s;font-size:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form__submit svg{fill:var(--e-search-form-submit-text-color,#fff);width:var(--e-search-form-submit-icon-size,16px);height:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form .elementor-search-form__submit,.elementor-search-form .elementor-search-form__submit:hover{color:var(--e-search-form-submit-text-color,#fff);border:none;border-radius:0}.elementor-search-form--button-type-text .elementor-search-form__submit{-ms-flex-negative:0;flex-shrink:0}.elementor-search-form--skin-minimal .elementor-search-form__icon{opacity:.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;color:#55595c;fill:#55595c;font-size:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-minimal .elementor-search-form__icon svg{width:var(--e-search-form-icon-size-minimal,15px);height:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-full_screen .elementor-search-form input[type=search].elementor-search-form__input{font-size:50px;text-align:center;border:solid #fff;border-width:0 0 1px;line-height:1.5;color:#fff}.elementor-search-form--skin-full_screen .elementor-search-form__toggle{display:inline-block;cursor:pointer;vertical-align:middle;color:var(--e-search-form-toggle-color,#494c4f);font-size:var(--e-search-form-toggle-size,33px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i{position:relative;display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;width:var(--e-search-form-toggle-size,33px);height:var(--e-search-form-toggle-size,33px);background-color:var(--e-search-form-toggle-background-color,rgba(0,0,0,.05));border:var(--e-search-form-toggle-border-width,0) solid var(--e-search-form-toggle-color,#494c4f);border-radius:var(--e-search-form-toggle-border-radius,3px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before{font-size:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{fill:var(--e-search-form-toggle-color,#494c4f);width:var(--e-search-form-toggle-icon-size,.55em);height:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__container{-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;z-index:9998;top:0;left:0;right:0;bottom:0;height:100vh;padding:0 15%;background-color:rgba(0,0,0,.8)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen){overflow:hidden;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button{display:none}.elementor-author-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-author-box__avatar{-ms-flex-negative:0;flex-shrink:0;margin-left:25px}.elementor-author-box__avatar img{width:100px;border-radius:500px;-o-object-fit:cover;object-fit:cover}.elementor-author-box__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:17px}.elementor-author-box__name{font-size:24px;margin-bottom:5px}.elementor-author-box__bio,.elementor-author-box__bio p{margin-bottom:.8em}.elementor-author-box__bio p:last-of-type{margin-bottom:0}.elementor-author-box--layout-image-left .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-author-box--layout-image-left .elementor-author-box__avatar{margin-left:0;margin-right:25px}.elementor-author-box--layout-image-right .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-author-box--layout-image-right .elementor-author-box__avatar{margin-right:0;margin-left:25px}.elementor-author-box--layout-image-above .elementor-author-box{display:block}.elementor-author-box--layout-image-above .elementor-author-box__avatar{margin:0 auto 15px;display:inline-block}.elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar{margin-left:0}.elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar{margin-right:0}.elementor-author-box--align-left .elementor-author-box{text-align:left}.elementor-author-box--align-right .elementor-author-box{text-align:right}.elementor-author-box--align-center .elementor-author-box{text-align:center}.elementor-button.elementor-author-box__button{border:2px solid #55595c;font-size:15px;font-weight:100;padding:10px 18px}.elementor-button.elementor-author-box__button,.elementor-button.elementor-author-box__button:hover{background:transparent;color:#55595c}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar,.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar{-ms-flex-item-align:start;align-self:flex-start}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar{-ms-flex-item-align:center;align-self:center}.elementor-post-info__terms-list{display:inline-block}.elementor-post-info .elementor-icon-list-icon .elementor-avatar{border-radius:100%}.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after{margin:initial}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text{display:inline-block}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a,.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span{display:inline}.elementor-widget-breadcrumbs{font-size:.85em}.elementor-widget-breadcrumbs p{margin-bottom:0}.elementor-sitemap-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.elementor-sticky--active{z-index:99}[data-elementor-type=popup] .elementor-section-wrap:not(:empty)+#elementor-add-new-section,[data-elementor-type=popup]:not(.elementor-edit-area){display:none}.elementor-popup-modal{display:-webkit-box;display:-ms-flexbox;display:flex;pointer-events:none;background-color:transparent;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.elementor-popup-modal .dialog-buttons-wrapper,.elementor-popup-modal .dialog-header{display:none}.elementor-popup-modal .dialog-close-button{display:none;top:20px;margin-top:0;left:20px;opacity:1;z-index:9999;pointer-events:all}.elementor-popup-modal .dialog-close-button svg{fill:#373a3c;height:1em;width:1em}.elementor-popup-modal .dialog-widget-content{width:auto;overflow:visible;max-width:100%;max-height:100%;border-radius:0;-webkit-box-shadow:none;box-shadow:none;pointer-events:all}.elementor-popup-modal .dialog-message{width:640px;max-width:100vw;max-height:100vh;padding:0;overflow:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-popup-modal .elementor{width:100%}.elementor-motion-effects-element,.elementor-motion-effects-layer{-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(0,.33,.07,1.03);-o-transition-timing-function:cubic-bezier(0,.33,.07,1.03);transition-timing-function:cubic-bezier(0,.33,.07,1.03);-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s}.elementor-motion-effects-container{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;-webkit-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);-ms-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.elementor-motion-effects-layer{position:absolute;top:0;left:0;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover}.elementor-motion-effects-perspective{-webkit-perspective:1200px;perspective:1200px}.elementor-widget-archive-posts:after,.elementor-widget-posts:after{display:none}.elementor-posts-container.elementor-posts-masonry{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-posts-container:not(.elementor-posts-masonry){-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-posts-container .elementor-post{padding:0;margin:0}.elementor-posts-container .elementor-post__thumbnail{overflow:hidden}.elementor-posts-container .elementor-post__thumbnail img{display:block;width:100%;max-height:none;max-width:none;-webkit-transition:-webkit-filter .3s;transition:-webkit-filter .3s;-o-transition:filter .3s;transition:filter .3s;transition:filter .3s,-webkit-filter .3s}.elementor-posts-container .elementor-post__thumbnail__link{position:relative;display:block;width:100%}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail{top:0;left:0;right:0;bottom:0}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail img{height:auto;position:absolute;top:calc(50% + 1px);left:calc(50% + 1px);-webkit-transform:scale(1.01) translate(-50%,-50%);-ms-transform:scale(1.01) translate(-50%,-50%);transform:scale(1.01) translate(-50%,-50%)}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail.elementor-fit-height img{height:100%;width:auto}.elementor-posts .elementor-post{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition-property:background,border,-webkit-box-shadow;transition-property:background,border,-webkit-box-shadow;-o-transition-property:background,border,box-shadow;transition-property:background,border,box-shadow;transition-property:background,border,box-shadow,-webkit-box-shadow;-webkit-transition-duration:.25s;-o-transition-duration:.25s;transition-duration:.25s}.elementor-posts .elementor-post__title{font-size:18px;margin:0}.elementor-posts .elementor-post__excerpt{margin-bottom:10px}.elementor-posts .elementor-post__excerpt p{margin:0;line-height:1.5em;font-size:14px;color:#777}.elementor-posts .elementor-post__meta-data{line-height:1.3em;font-size:12px;margin-bottom:13px;color:#adadad}.elementor-posts .elementor-post__read-more{font-size:12px;font-weight:700}.elementor-posts .elementor-post__thumbnail{position:relative}.elementor-posts--skin-classic{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-posts--skin-classic:not(.elementor-posts-masonry){-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-posts--skin-classic .elementor-post{overflow:hidden}.elementor-posts--skin-classic .elementor-post__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-posts--align-left .elementor-post{text-align:left}.elementor-posts--align-right .elementor-post{text-align:right}.elementor-posts--align-center .elementor-post{text-align:center}.elementor-posts--thumbnail-top .elementor-post{display:block}.elementor-posts--thumbnail-top .elementor-post__thumbnail__link{margin-bottom:20px}.elementor-posts--thumbnail-top .elementor-post__text{width:100%}.elementor-posts--thumbnail-top.elementor-posts--align-left .elementor-post__thumbnail__link{margin-right:auto}.elementor-posts--thumbnail-top.elementor-posts--align-right .elementor-post__thumbnail__link{margin-left:auto}.elementor-posts--thumbnail-top.elementor-posts--align-center .elementor-post__thumbnail__link{margin-right:auto;margin-left:auto}.elementor-posts--thumbnail-left .elementor-post__thumbnail__link,.elementor-posts--thumbnail-right .elementor-post__thumbnail__link{-ms-flex-negative:0;flex-shrink:0;width:25%}.elementor-posts--thumbnail-left .elementor-post__thumbnail__link{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5;margin-right:20px}.elementor-posts--thumbnail-right .elementor-post__thumbnail__link{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0;margin-left:20px}.elementor-posts--thumbnail-none .elementor-posts-container .elementor-post__thumbnail__link{display:none}.elementor-posts .elementor-post__card{overflow:hidden;position:relative;background-color:#fff;width:100%;min-height:100%;border-radius:3px;border:0 solid #818a91;-webkit-transition:all .25s;-o-transition:all .25s;transition:all .25s}.elementor-posts .elementor-post__card .elementor-post__thumbnail{position:relative;transform-style:preserve-3d;-webkit-transform-style:preserve-3d}.elementor-posts .elementor-post__card .elementor-post__thumbnail img{width:calc(100% + 1px)}.elementor-posts .elementor-post__card .elementor-post__text{padding:0 30px;margin-bottom:0;margin-top:20px}.elementor-posts .elementor-post__card .elementor-post__read-more{margin-bottom:20px;display:inline-block}.elementor-posts .elementor-post__card .elementor-post__meta-data{padding:15px 30px;margin-bottom:0;border-top:1px solid #eaeaea}.elementor-posts .elementor-post__card .elementor-post__meta-data span+span:before{margin:0 5px}.elementor-posts .elementor-post__card .elementor-post__title{font-size:21px}.elementor-posts .elementor-post__card .elementor-post__excerpt{line-height:1.7}.elementor-posts .elementor-post__card .elementor-post__excerpt,.elementor-posts .elementor-post__card .elementor-post__title{margin-bottom:25px}.elementor-posts .elementor-post__card .elementor-post__badge,.elementor-posts .elementor-post__card .elementor-post__read-more{text-transform:uppercase}.elementor-posts .elementor-post__badge{position:absolute;top:0;background:#818a91;color:#fff;font-size:12px;padding:.6em 1.2em;line-height:1;font-weight:400;margin:20px;border-radius:999px}.elementor-posts .elementor-post__avatar{position:relative;padding:0 30px;width:100%;top:-25px;height:0;pointer-events:none}.elementor-posts .elementor-post__avatar img{border-radius:50%;width:60px;pointer-events:all;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card,.elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data,.elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data{margin-top:auto}.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar{padding-top:0;position:static;height:auto}.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar img.avatar{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);vertical-align:bottom}.elementor-posts--show-avatar .elementor-post__thumbnail__link{margin-bottom:25px}.elementor-posts__hover-gradient .elementor-post__card .elementor-post__thumbnail__link:after{display:block;content:"";background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.35)),color-stop(75%,transparent));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.35),transparent 75%);background-image:-o-linear-gradient(bottom,rgba(0,0,0,.35) 0,transparent 75%);background-image:linear-gradient(0deg,rgba(0,0,0,.35),transparent 75%);background-repeat:no-repeat;height:100%;width:100%;position:absolute;bottom:0;opacity:1;-webkit-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.elementor-posts__hover-gradient .elementor-post__card:hover .elementor-post__thumbnail__link:after{opacity:.5}.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img{height:100%}.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img{width:calc(100% + 1px)}.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img{height:115%}.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img{width:115%}.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img{height:115%}.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img{width:115%}.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img{height:100%}.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img{width:calc(100% + 1px)}.elementor-posts__hover-zoom-in .elementor-post__thumbnail img,.elementor-posts__hover-zoom-out .elementor-post__thumbnail img{-webkit-transition:height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s;transition:height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s;-o-transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1);transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1);transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s}.elementor-card-shadow-yes .elementor-post__card{-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,.15);box-shadow:0 0 10px 0 rgba(0,0,0,.15)}.elementor-card-shadow-yes .elementor-post__card:hover{-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.15);box-shadow:0 0 30px 0 rgba(0,0,0,.15)}.elementor-posts--skin-full_content article{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.elementor-posts--skin-full_content article .elementor-post__thumbnail{padding-bottom:0}body.elementor-editor-active .elementor-posts--skin-archive_full_content,body.elementor-editor-active .elementor-posts--skin-full_content{pointer-events:none}body.elementor-editor-active .elementor-posts--skin-archive_full_content .elementor-post__thumbnail__link,body.elementor-editor-active .elementor-posts--skin-full_content .elementor-post__thumbnail__link{display:none}body.elementor-editor-active .elementor-posts--show-thumbnail .elementor-post__thumbnail__link{display:block}.elementor-portfolio__filters{list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0;margin:0}.elementor-portfolio__filter{margin:0;cursor:pointer;padding:8px}.elementor-portfolio-item{-ms-flex-item-align:start;align-self:flex-start;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:ease-in-out;-o-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;overflow:hidden;margin:0}.elementor-portfolio-item__title{margin:0;padding:0;line-height:1;font-size:18px;color:#fff}.elementor-portfolio-item__tags__separator:before{content:", "}.elementor-portfolio-item__overlay{opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;padding:15px;-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;overflow:hidden;background-color:rgba(129,138,145,.8)}.elementor-portfolio-item__overlay:hover{opacity:1;-webkit-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.elementor-portfolio-item__img img[src=""]{background-color:rgba(0,0,0,.1);height:100%}.elementor-portfolio.elementor-has-item-ratio{-webkit-transition:height .5s;-o-transition:height .5s;transition:height .5s}.elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail{position:absolute;background-color:rgba(0,0,0,.1)}.elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail__link{padding-bottom:56.25%}.elementor ul li.elementor-portfolio__filter{list-style-type:none}.elementor-widget-archive-posts.load-more-align-center .elementor-button-wrapper,.elementor-widget-posts.load-more-align-center .elementor-button-wrapper{text-align:center}.elementor-widget-archive-posts.load-more-align-start .elementor-button-wrapper,.elementor-widget-posts.load-more-align-start .elementor-button-wrapper{text-align:start}.elementor-widget-archive-posts.load-more-align-end .elementor-button-wrapper,.elementor-widget-posts.load-more-align-end .elementor-button-wrapper{text-align:end}.elementor-widget-archive-posts.load-more-align-justify .elementor-button,.elementor-widget-posts.load-more-align-justify .elementor-button{width:100%}.elementor-widget-archive-posts .e-load-more-spinner,.elementor-widget-posts .e-load-more-spinner{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-archive-posts .e-load-more-spinner i,.elementor-widget-archive-posts .e-load-more-spinner svg,.elementor-widget-posts .e-load-more-spinner i,.elementor-widget-posts .e-load-more-spinner svg{margin:0 auto;display:none}.elementor-widget-archive-posts .e-load-more-spinner i,.elementor-widget-posts .e-load-more-spinner i{color:var(--load-more-spinner-color)}.elementor-widget-archive-posts .e-load-more-spinner svg,.elementor-widget-posts .e-load-more-spinner svg{fill:var(--load-more-spinner-color);height:1em;width:1em}.elementor-widget-archive-posts .e-load-more-message,.elementor-widget-posts .e-load-more-message{color:var(--load-more-message-color);text-align:var(--load-more-message-alignment,center);display:none;margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts.e-load-more-pagination-loading,.elementor-widget-posts.e-load-more-pagination-loading{cursor:default}.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner{margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner i,.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner svg,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner i,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner svg{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-archive-posts.e-load-more-pagination-loading .elementor-button-content-wrapper,.elementor-widget-posts.e-load-more-pagination-loading .elementor-button-content-wrapper{visibility:hidden}.elementor-widget-archive-posts.e-load-more-pagination-end .elementor-button-wrapper,.elementor-widget-posts.e-load-more-pagination-end .elementor-button-wrapper{display:none}.elementor-widget-archive-posts.e-load-more-pagination-end .e-load-more-message,.elementor-widget-posts.e-load-more-pagination-end .e-load-more-message{display:block}.elementor-widget-archive-posts.e-load-more-no-spinner .elementor-button-content-wrapper,.elementor-widget-posts.e-load-more-no-spinner .elementor-button-content-wrapper{visibility:visible}.elementor-widget-archive-posts .elementor-button-wrapper,.elementor-widget-posts .elementor-button-wrapper{margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts .elementor-button-wrapper .e-load-more-spinner,.elementor-widget-posts .elementor-button-wrapper .e-load-more-spinner{position:absolute;right:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);margin:inherit}.elementor-widget-archive-posts .elementor-button-wrapper .elementor-button,.elementor-widget-posts .elementor-button-wrapper .elementor-button{cursor:pointer;position:relative}.elementor-button.elementor-hidden,.elementor-hidden{display:none}.e-form__step{width:100%}.e-form__step:not(.elementor-hidden){display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.e-form__buttons{-ms-flex-wrap:wrap;flex-wrap:wrap}.e-form__buttons,.e-form__buttons__wrapper{display:-webkit-box;display:-ms-flexbox;display:flex}.e-form__indicators{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:nowrap;flex-wrap:nowrap;font-size:13px;margin-bottom:var(--e-form-steps-indicators-spacing)}.e-form__indicators,.e-form__indicators__indicator{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.e-form__indicators__indicator{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-preferred-size:0;flex-basis:0;padding:0 var(--e-form-steps-divider-gap)}.e-form__indicators__indicator__progress{width:100%;position:relative;background-color:var(--e-form-steps-indicator-progress-background-color);border-radius:var(--e-form-steps-indicator-progress-border-radius);overflow:hidden}.e-form__indicators__indicator__progress__meter{width:var(--e-form-steps-indicator-progress-meter-width,0);height:var(--e-form-steps-indicator-progress-height);line-height:var(--e-form-steps-indicator-progress-height);padding-right:15px;border-radius:var(--e-form-steps-indicator-progress-border-radius);background-color:var(--e-form-steps-indicator-progress-color);color:var(--e-form-steps-indicator-progress-meter-color);text-align:right;-webkit-transition:width .1s linear;-o-transition:width .1s linear;transition:width .1s linear}.e-form__indicators__indicator:first-child{padding-left:0}.e-form__indicators__indicator:last-child{padding-right:0}.e-form__indicators__indicator--state-inactive{color:var(--e-form-steps-indicator-inactive-primary-color,#c2cbd2)}.e-form__indicators__indicator--state-inactive [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-inactive-secondary-color,#fff)}.e-form__indicators__indicator--state-inactive object,.e-form__indicators__indicator--state-inactive svg{fill:var(--e-form-steps-indicator-inactive-primary-color,#c2cbd2)}.e-form__indicators__indicator--state-active{color:var(--e-form-steps-indicator-active-primary-color,#39b54a);border-color:var(--e-form-steps-indicator-active-secondary-color,#fff)}.e-form__indicators__indicator--state-active [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-active-secondary-color,#fff)}.e-form__indicators__indicator--state-active object,.e-form__indicators__indicator--state-active svg{fill:var(--e-form-steps-indicator-active-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed{color:var(--e-form-steps-indicator-completed-secondary-color,#fff)}.e-form__indicators__indicator--state-completed [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-completed-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed .e-form__indicators__indicator__label{color:var(--e-form-steps-indicator-completed-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed .e-form__indicators__indicator--shape-none{color:var(--e-form-steps-indicator-completed-primary-color,#39b54a);background-color:initial}.e-form__indicators__indicator--state-completed object,.e-form__indicators__indicator--state-completed svg{fill:var(--e-form-steps-indicator-completed-secondary-color,#fff)}.e-form__indicators__indicator__icon{width:var(--e-form-steps-indicator-padding,30px);height:var(--e-form-steps-indicator-padding,30px);font-size:var(--e-form-steps-indicator-icon-size);border-width:1px;border-style:solid;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden;margin-bottom:10px}.e-form__indicators__indicator__icon img,.e-form__indicators__indicator__icon object,.e-form__indicators__indicator__icon svg{width:var(--e-form-steps-indicator-icon-size);height:auto}.e-form__indicators__indicator__icon .e-font-icon-svg{height:1em}.e-form__indicators__indicator__number{width:var(--e-form-steps-indicator-padding,30px);height:var(--e-form-steps-indicator-padding,30px);border-width:1px;border-style:solid;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px}.e-form__indicators__indicator--shape-circle{border-radius:50%}.e-form__indicators__indicator--shape-square{border-radius:0}.e-form__indicators__indicator--shape-rounded{border-radius:5px}.e-form__indicators__indicator--shape-none{border:0}.e-form__indicators__indicator__label{text-align:center}.e-form__indicators__indicator__separator{width:100%;height:var(--e-form-steps-divider-width);background-color:#c2cbd2}.e-form__indicators--type-icon,.e-form__indicators--type-icon_text,.e-form__indicators--type-number,.e-form__indicators--type-number_text{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.e-form__indicators--type-icon .e-form__indicators__indicator__separator,.e-form__indicators--type-icon_text .e-form__indicators__indicator__separator,.e-form__indicators--type-number .e-form__indicators__indicator__separator,.e-form__indicators--type-number_text .e-form__indicators__indicator__separator{margin-top:calc(var(--e-form-steps-indicator-padding, 30px) / 2 - var(--e-form-steps-divider-width, 1px) / 2)}.elementor-field-type-hidden{display:none}.elementor-field-type-html{display:inline-block}.elementor-login .elementor-lost-password,.elementor-login .elementor-remember-me{font-size:.85em}.elementor-field-type-recaptcha_v3 .elementor-field-label{display:none}.elementor-field-type-recaptcha_v3 .grecaptcha-badge{z-index:1}.elementor-button .elementor-form-spinner{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.elementor-form .elementor-button>span{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-form .elementor-button .elementor-button-text{white-space:normal;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.elementor-form .elementor-button svg{height:auto}.elementor-form .elementor-button .e-font-icon-svg{height:1em}.elementor-widget-price-list .elementor-price-list{list-style:none;padding:0;margin:0}.elementor-widget-price-list .elementor-price-list li{margin:0}.elementor-price-list li:not(:last-child){margin-bottom:20px}.elementor-price-list .elementor-price-list-image{max-width:50%;-ms-flex-negative:0;flex-shrink:0;padding-left:25px}.elementor-price-list .elementor-price-list-image img{width:100%}.elementor-price-list .elementor-price-list-header,.elementor-price-list .elementor-price-list-item,.elementor-price-list .elementor-price-list-text{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-price-list .elementor-price-list-item{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-price-list .elementor-price-list-item .elementor-price-list-text{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-price-list .elementor-price-list-item .elementor-price-list-header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-preferred-size:100%;flex-basis:100%;font-size:19px;font-weight:600;margin-bottom:10px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-price-list .elementor-price-list-item .elementor-price-list-title{max-width:80%}.elementor-price-list .elementor-price-list-item .elementor-price-list-price{font-weight:600}.elementor-price-list .elementor-price-list-item p.elementor-price-list-description{-ms-flex-preferred-size:100%;flex-basis:100%;font-size:14px;margin:0}.elementor-price-list .elementor-price-list-item .elementor-price-list-separator{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-left:10px;margin-right:10px;border-bottom-style:dotted;border-bottom-width:2px;height:0}.elementor-price-table{text-align:center}.elementor-price-table .elementor-price-table__header{background:var(--e-price-table-header-background-color,#555);padding:20px 0}.elementor-price-table .elementor-price-table__heading{margin:0;padding:0;line-height:1.2;font-size:24px;font-weight:600;color:#fff}.elementor-price-table .elementor-price-table__subheading{font-size:13px;font-weight:400;color:#fff}.elementor-price-table .elementor-price-table__original-price{margin-left:15px;text-decoration:line-through;font-size:.5em;line-height:1;font-weight:400;-ms-flex-item-align:center;align-self:center}.elementor-price-table .elementor-price-table__original-price .elementor-price-table__currency{font-size:1em;margin:0}.elementor-price-table .elementor-price-table__price{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;color:#555;font-weight:800;font-size:65px;padding:40px 0}.elementor-price-table .elementor-price-table__price .elementor-typo-excluded{line-height:normal;letter-spacing:normal;text-transform:none;font-weight:400;font-size:medium;font-style:normal}.elementor-price-table .elementor-price-table__after-price{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;text-align:right;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-price-table .elementor-price-table__integer-part{line-height:.8}.elementor-price-table .elementor-price-table__currency,.elementor-price-table .elementor-price-table__fractional-part{line-height:1;font-size:.3em}.elementor-price-table .elementor-price-table__currency{margin-left:3px}.elementor-price-table .elementor-price-table__period{width:100%;font-size:13px;font-weight:400}.elementor-price-table .elementor-price-table__features-list{list-style-type:none;margin:0;padding:0;line-height:1;color:var(--e-price-table-features-list-color)}.elementor-price-table .elementor-price-table__features-list li{font-size:14px;line-height:1;margin:0;padding:0}.elementor-price-table .elementor-price-table__features-list li .elementor-price-table__feature-inner{margin-left:15px;margin-right:15px}.elementor-price-table .elementor-price-table__features-list li:not(:first-child):before{content:"";display:block;border:0 solid hsla(0,0%,47.8%,.3);margin:10px 12.5%}.elementor-price-table .elementor-price-table__features-list i{margin-left:10px;font-size:1.3em}.elementor-price-table .elementor-price-table__features-list svg{margin-left:10px;fill:var(--e-price-table-features-list-color);height:1.3em;width:1.3em}.elementor-price-table .elementor-price-table__features-list svg~*{vertical-align:text-top}.elementor-price-table .elementor-price-table__footer{padding:30px 0}.elementor-price-table .elementor-price-table__additional_info{margin:0;font-size:13px;line-height:1.4}.elementor-price-table__ribbon{position:absolute;top:0;left:0;right:auto;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);width:150px;overflow:hidden;height:150px}.elementor-price-table__ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000}.elementor-price-table__ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-price-table__ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}.elementor-widget-price-table .elementor-widget-container{overflow:hidden;background-color:#f7f7f7}.elementor-flip-box{height:280px;position:relative;-webkit-perspective:1000px;perspective:1000px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}@media (max-device-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-flip-box{cursor:pointer}}.elementor-flip-box__front{background-color:#1abc9c}.elementor-flip-box__back{background-color:#4054b2;display:block}.elementor-flip-box__layer{position:absolute;width:100%;height:100%;-webkit-transition:all .6s ease-in-out;-o-transition:all .6s ease-in-out;transition:all .6s ease-in-out}.elementor-flip-box__layer__overlay{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;text-align:center;padding:35px;color:#fff}.elementor-flip-box__layer__title{font-size:21px}.elementor-flip-box__layer__description{font-size:14px}.elementor-flip-box__layer__description:not(:last-child),.elementor-flip-box__layer__title:not(:last-child){margin:0 0 20px;padding:0}.elementor-flip-box__layer__title{line-height:1;font-weight:600}.elementor-flip-box,.elementor-flip-box .elementor-view-framed,.elementor-flip-box .elementor-view-stacked{--e-flip-box-view-framed-stacked-icon-color:#fff}.elementor-flip-box .elementor-icon,.elementor-flip-box .elementor-view-framed .elementor-icon,.elementor-flip-box .elementor-view-stacked .elementor-icon{color:var(--e-flip-box-view-framed-stacked-icon-color)}.elementor-flip-box .elementor-icon svg,.elementor-flip-box .elementor-view-framed .elementor-icon svg,.elementor-flip-box .elementor-view-stacked .elementor-icon svg{fill:var(--e-flip-box-view-framed-stacked-icon-color)}.elementor-flip-box .elementor-view-framed .elementor-icon{border-color:#fff}.elementor-flip-box .elementor-view-stacked .elementor-icon{background-color:rgba(0,0,0,.5)}.elementor-flip-box__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-flip-box__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-flip-box__image{margin:0 0 20px;display:inline-block;width:100%}.elementor-flip-box__image img{width:50%}.elementor-flip-box .elementor-icon-wrapper{margin-bottom:20px}.elementor-flip-box--3d .elementor-flip-box__layer__inner{-webkit-transform:translateZ(90px) scale(.91);transform:translateZ(90px) scale(.91)}.elementor-flip-box--3d .elementor-flip-box__layer__overlay{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(.1px);transform:translateZ(.1px)}.elementor-flip-box--effect-flip .elementor-flip-box{-webkit-perspective:1000px;perspective:1000px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.elementor-flip-box--effect-flip .elementor-flip-box__layer{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-flip-box--effect-flip .elementor-flip-box__front{-webkit-transform:none;-ms-transform:none;transform:none;z-index:1}.elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box__back{-webkit-transform:rotateX(0) rotateY(-180deg);transform:rotateX(0) rotateY(-180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box__back,.elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(0) rotateY(180deg);transform:rotateX(0) rotateY(180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(0) rotateY(-180deg);transform:rotateX(0) rotateY(-180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box__back{-webkit-transform:rotateX(-180deg) rotateY(0);transform:rotateX(-180deg) rotateY(0)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box__back,.elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(180deg) rotateY(0);transform:rotateX(180deg) rotateY(0)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(-180deg) rotateY(0);transform:rotateX(-180deg) rotateY(0)}.elementor-flip-box--effect-push .elementor-flip-box__front{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(100%) translateY(0);-ms-transform:translateX(100%) translateY(0);transform:translateX(100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(-100%) translateY(0);-ms-transform:translateX(-100%) translateY(0);transform:translateX(-100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(0) translateY(-100%);-ms-transform:translateX(0) translateY(-100%);transform:translateX(0) translateY(-100%)}.elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(0) translateY(100%);-ms-transform:translateX(0) translateY(100%);transform:translateX(0) translateY(100%)}.elementor-flip-box--effect-push .elementor-flip-box,.elementor-flip-box--effect-slide .elementor-flip-box{overflow:hidden}.elementor-flip-box--effect-push .elementor-flip-box:hover .elementor-flip-box__back,.elementor-flip-box--effect-slide .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-right .elementor-flip-box__back{-webkit-transform:translateX(-100%) translateY(0);-ms-transform:translateX(-100%) translateY(0);transform:translateX(-100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-left .elementor-flip-box__back{-webkit-transform:translateX(100%) translateY(0);-ms-transform:translateX(100%) translateY(0);transform:translateX(100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-up .elementor-flip-box__back{-webkit-transform:translateX(0) translateY(100%);-ms-transform:translateX(0) translateY(100%);transform:translateX(0) translateY(100%)}.elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-down .elementor-flip-box__back{-webkit-transform:translateX(0) translateY(-100%);-ms-transform:translateX(0) translateY(-100%);transform:translateX(0) translateY(-100%)}.elementor-flip-box--effect-zoom-out .elementor-flip-box .elementor-flip-box__front{-webkit-transition:opacity .35s,width .1ms,-webkit-transform .7s;transition:opacity .35s,width .1ms,-webkit-transform .7s;-o-transition:transform .7s,opacity .35s,width .1ms;transition:transform .7s,opacity .35s,width .1ms;transition:transform .7s,opacity .35s,width .1ms,-webkit-transform .7s;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);z-index:1;width:100%}.elementor-flip-box--effect-zoom-out .elementor-flip-box:hover .elementor-flip-box__front{width:0;opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7);-webkit-transition:opacity .7s .1s,width .1ms .7s,-webkit-transform .8s;transition:opacity .7s .1s,width .1ms .7s,-webkit-transform .8s;-o-transition:transform .8s,opacity .7s .1s,width .1ms .7s;transition:transform .8s,opacity .7s .1s,width .1ms .7s;transition:transform .8s,opacity .7s .1s,width .1ms .7s,-webkit-transform .8s}.elementor-flip-box--effect-zoom-in .elementor-flip-box .elementor-flip-box__back{-webkit-transition:opacity .5s .2s,-webkit-transform .7s;transition:opacity .5s .2s,-webkit-transform .7s;-o-transition:transform .7s,opacity .5s .2s;transition:transform .7s,opacity .5s .2s;transition:transform .7s,opacity .5s .2s,-webkit-transform .7s;opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}.elementor-flip-box--effect-zoom-in .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transition:opacity .5s,-webkit-transform .7s;transition:opacity .5s,-webkit-transform .7s;-o-transition:transform .7s,opacity .5s;transition:transform .7s,opacity .5s;transition:transform .7s,opacity .5s,-webkit-transform .7s;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-flip-box--effect-fade .elementor-flip-box .elementor-flip-box__back{opacity:0}.elementor-flip-box--effect-fade .elementor-flip-box:hover .elementor-flip-box__back{opacity:1}.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__front{display:none}.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}.elementor-cta,.elementor-widget-call-to-action .elementor-widget-container{overflow:hidden}.elementor-cta{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.5s;-o-transition:.5s;transition:.5s}.elementor-cta--skin-classic .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--skin-classic .elementor-cta__bg-wrapper{position:relative;min-height:200px;width:100%}.elementor-cta--skin-classic .elementor-cta__content{-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%;background-color:#f7f7f7}.elementor-cta--skin-classic .elementor-cta__content-item,.elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon{color:#55595c;border-color:#55595c;fill:#55595c}.elementor-cta--skin-classic .elementor-cta__button.elementor-button{color:#55595c;border-color:#55595c}.elementor-cta--skin-cover .elementor-cta{display:block}.elementor-cta--skin-cover .elementor-cta__bg-wrapper{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%}.elementor-cta--skin-cover .elementor-cta__content{min-height:280px}.elementor-cta--skin-cover .elementor-cta__button.elementor-button,.elementor-cta--skin-cover .elementor-cta__content-item,.elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon{color:#fff;border-color:#fff}.elementor-cta--layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--layout-image-left .elementor-cta,.elementor-cta--layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--layout-image-left .elementor-cta__content,.elementor-cta--layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta__bg,.elementor-cta__bg-overlay{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s}.elementor-cta__bg-wrapper{z-index:1;overflow:hidden}.elementor-cta__bg{-webkit-background-size:cover;background-size:cover;background-position:50%;z-index:1}.elementor-cta__bg-overlay{z-index:2}.elementor-cta__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-cta__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-cta__title{font-size:23px}.elementor-cta__content{z-index:1;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;padding:35px;width:100%}.elementor-cta__content,.elementor-cta__content-item{position:relative;-webkit-transition:.5s;-o-transition:.5s;transition:.5s;color:#fff}.elementor-cta__content-item{width:100%;margin:0}.elementor-cta__content-item:not(:last-child){margin-bottom:15px}.elementor-cta__content-item .elementor-icon{color:#fff}.elementor-cta--valign-top .elementor-cta__content{-ms-flex-line-pack:start;align-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-cta--valign-middle .elementor-cta__content{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-cta--valign-bottom .elementor-cta__content{-ms-flex-line-pack:end;align-content:flex-end;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor-cta:hover .elementor-cta__bg-overlay{background-color:rgba(0,0,0,.3)}@media (max-device-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-cta{cursor:pointer}}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-cta--widescreen-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--widescreen-layout-image-left .elementor-cta,.elementor-cta--widescreen-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--widescreen-layout-image-left .elementor-cta__content,.elementor-cta--widescreen-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--widescreen-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--widescreen-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-cta--laptop-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--laptop-layout-image-left .elementor-cta,.elementor-cta--laptop-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--laptop-layout-image-left .elementor-cta__content,.elementor-cta--laptop-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--laptop-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--laptop-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-cta--tablet_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta,.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__content,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-cta--tablet-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet-layout-image-left .elementor-cta,.elementor-cta--tablet-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet-layout-image-left .elementor-cta__content,.elementor-cta--tablet-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--tablet-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-cta--mobile_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta,.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__content,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-cta--mobile-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile-layout-image-left .elementor-cta,.elementor-cta--mobile-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile-layout-image-left .elementor-cta__content,.elementor-cta--mobile-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--mobile-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.elementor-ribbon{position:absolute;z-index:1;top:0;left:0;right:auto;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);width:150px;overflow:hidden;height:150px}.elementor-ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000;color:#fff}.elementor-ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}.elementor-widget-countdown .elementor-countdown-expire--message{display:none;padding:20px;text-align:center}.elementor-widget-countdown .elementor-countdown-wrapper{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-widget-countdown .elementor-countdown-item{padding:20px 0;text-align:center;color:#fff}.elementor-widget-countdown .elementor-countdown-digits,.elementor-widget-countdown .elementor-countdown-label{line-height:1}.elementor-widget-countdown .elementor-countdown-digits{font-size:69px}.elementor-widget-countdown .elementor-countdown-label{font-size:19px}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:auto;margin-left:auto}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-digits,.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-label{display:block}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-widget-countdown.elementor-countdown--label-inline{text-align:center}.elementor-widget-countdown.elementor-countdown--label-inline .elementor-countdown-item{display:inline-block;padding-left:5px;padding-right:5px}.elementor-slides .swiper-slide-bg{-webkit-background-size:cover;background-size:cover;background-position:50%;background-repeat:no-repeat;min-width:100%;min-height:100%}.elementor-slides .swiper-slide-inner{background-repeat:no-repeat;background-position:50%;position:absolute;top:0;left:0;bottom:0;right:0;padding:50px;margin:auto}.elementor-slides .swiper-slide-inner,.elementor-slides .swiper-slide-inner:hover{color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-slides .swiper-slide-inner .elementor-background-overlay{position:absolute;z-index:0;top:0;bottom:0;left:0;right:0}.elementor-slides .swiper-slide-inner .elementor-slide-content{position:relative;z-index:1;width:100%}.elementor-slides .swiper-slide-inner .elementor-slide-heading{font-size:35px;font-weight:700;line-height:1}.elementor-slides .swiper-slide-inner .elementor-slide-description{font-size:17px;line-height:1.4}.elementor-slides .swiper-slide-inner .elementor-slide-description:not(:last-child),.elementor-slides .swiper-slide-inner .elementor-slide-heading:not(:last-child){margin-bottom:30px}.elementor-slides .swiper-slide-inner .elementor-slide-button{border:2px solid #fff;color:#fff;background:transparent;display:inline-block}.elementor-slides .swiper-slide-inner .elementor-slide-button,.elementor-slides .swiper-slide-inner .elementor-slide-button:hover{background:transparent;color:inherit;text-decoration:none}.elementor--v-position-top .swiper-slide-inner{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor--v-position-bottom .swiper-slide-inner{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor--v-position-middle .swiper-slide-inner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor--h-position-left .swiper-slide-inner{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor--h-position-right .swiper-slide-inner{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor--h-position-center .swiper-slide-inner{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}body.rtl .elementor-widget-slides .elementor-swiper-button-next{left:10px;right:auto}body.rtl .elementor-widget-slides .elementor-swiper-button-prev{right:10px;left:auto}.elementor-slides-wrapper div:not(.swiper-slide)>.swiper-slide-inner{display:none}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-slides .swiper-slide-inner{padding:30px}.elementor-slides .swiper-slide-inner .elementor-slide-heading{font-size:23px;line-height:1;margin-bottom:15px}.elementor-slides .swiper-slide-inner .elementor-slide-description{font-size:13px;line-height:1.4;margin-bottom:15px}}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn{background-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text{color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn{color:var(--e-share-buttons-primary-color,#ea4335);border-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon{background-color:var(--e-share-buttons-primary-color,#ea4335);color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon{color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon svg{fill:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-official .elementor-share-btn:hover{-webkit-filter:saturate(1.5) brightness(1.2);filter:saturate(1.5) brightness(1.2)}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_digg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_digg{background-color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_email,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_email{background-color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_print,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_print{background-color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_facebook,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_facebook{background-color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_google,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_google{background-color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pocket,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pocket{background-color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_linkedin,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_linkedin{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_odnoklassniki,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_odnoklassniki{background-color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pinterest,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pinterest{background-color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_reddit,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_reddit{background-color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_skype,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_skype{background-color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_slideshare,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_slideshare{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_snapchat,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_snapchat{background-color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_stumbleupon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_stumbleupon{background-color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_mix,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_mix{background-color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_tumblr,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_tumblr{background-color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitch,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitch{background-color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_telegram,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_telegram{background-color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitter,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitter{background-color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vimeo,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vimeo{background-color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vk,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vk{background-color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_whatsapp,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_whatsapp{background-color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_wordpress,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_wordpress{background-color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_xing,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_xing{background-color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg{color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg svg{fill:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email{color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email svg{fill:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print{color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print svg{fill:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook{color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook svg{fill:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google{color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google svg{fill:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket{color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket svg{fill:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin{color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin svg{fill:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki{color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki svg{fill:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest{color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest svg{fill:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit{color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit svg{fill:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype{color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype svg{fill:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare{color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare svg{fill:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat{color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat svg{fill:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon{color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon svg{fill:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix{color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix svg{fill:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr{color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr svg{fill:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch{color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch svg{fill:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram{color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram svg{fill:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter{color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter svg{fill:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo{color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo svg{fill:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk{color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk svg{fill:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp{color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp svg{fill:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress{color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress svg{fill:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing{color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing svg{fill:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_digg .elementor-share-btn__icon{background-color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_email .elementor-share-btn__icon{background-color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_print .elementor-share-btn__icon{background-color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_facebook .elementor-share-btn__icon{background-color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_google .elementor-share-btn__icon{background-color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pocket .elementor-share-btn__icon{background-color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_linkedin .elementor-share-btn__icon{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_odnoklassniki .elementor-share-btn__icon{background-color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pinterest .elementor-share-btn__icon{background-color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_reddit .elementor-share-btn__icon{background-color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_skype .elementor-share-btn__icon{background-color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_slideshare .elementor-share-btn__icon{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_snapchat .elementor-share-btn__icon{background-color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_stumbleupon .elementor-share-btn__icon{background-color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_mix .elementor-share-btn__icon{background-color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_tumblr .elementor-share-btn__icon{background-color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitch .elementor-share-btn__icon{background-color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_telegram .elementor-share-btn__icon{background-color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitter .elementor-share-btn__icon{background-color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vimeo .elementor-share-btn__icon{background-color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vk .elementor-share-btn__icon{background-color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_whatsapp .elementor-share-btn__icon{background-color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_wordpress .elementor-share-btn__icon{background-color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_xing .elementor-share-btn__icon{background-color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon{color:var(--e-share-buttons-icon-color,#fff)}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon svg{fill:var(--e-share-buttons-icon-color,#fff)}.elementor-share-buttons--skin-boxed .elementor-share-btn__icon,.elementor-share-buttons--skin-framed .elementor-share-btn__icon{margin-right:-.2em}.elementor-share-buttons--skin-boxed .elementor-share-btn,.elementor-share-buttons--skin-framed .elementor-share-btn{border-style:solid}.elementor-share-buttons--skin-gradient .elementor-share-btn__text,.elementor-share-buttons--skin-gradient.elementor-share-buttons--view-icon .elementor-share-btn__icon{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.12)),to(transparent));background-image:-webkit-linear-gradient(right,rgba(0,0,0,.12),transparent);background-image:-o-linear-gradient(right,rgba(0,0,0,.12),transparent);background-image:linear-gradient(270deg,rgba(0,0,0,.12),transparent)}.elementor-share-buttons--skin-boxed .elementor-share-btn__text,.elementor-share-buttons--skin-gradient .elementor-share-btn__text,.elementor-share-buttons--skin-minimal .elementor-share-btn__text{padding-right:.9em}.elementor-share-buttons--skin-flat .elementor-share-btn,.elementor-share-buttons--skin-gradient .elementor-share-btn{background-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--skin-flat .elementor-share-btn__icon,.elementor-share-buttons--skin-flat .elementor-share-btn__text,.elementor-share-buttons--skin-gradient .elementor-share-btn__icon,.elementor-share-buttons--skin-gradient .elementor-share-btn__text{color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg,.elementor-share-buttons--skin-flat .elementor-share-btn__text svg,.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg,.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-rounded .elementor-share-btn__icon{border-radius:.5em}.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-circle .elementor-share-btn__icon{border-radius:99.9em}.elementor-share-buttons--view-text .elementor-share-btn__text{padding-right:1em}.elementor-share-buttons--view-icon .elementor-share-btn,.elementor-share-buttons--view-text .elementor-share-btn{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-share-buttons--view-icon .elementor-share-btn__icon,.elementor-share-buttons--view-icon .elementor-share-btn__text,.elementor-share-buttons--view-text .elementor-share-btn__icon,.elementor-share-buttons--view-text .elementor-share-btn__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-share-buttons--shape-rounded .elementor-share-btn{border-radius:.5em}.elementor-share-buttons--shape-circle .elementor-share-btn{border-radius:99.9em}.elementor-share-btn{overflow:hidden;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-transition-property:background-color,border-color,-webkit-filter;transition-property:background-color,border-color,-webkit-filter;-o-transition-property:filter,background-color,border-color;transition-property:filter,background-color,border-color;transition-property:filter,background-color,border-color,-webkit-filter;height:4.5em;cursor:pointer}.elementor-share-btn,.elementor-share-btn__icon,.elementor-share-btn__text{-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.elementor-share-btn__icon,.elementor-share-btn__text{-webkit-transition-property:color,background-color;-o-transition-property:color,background-color;transition-property:color,background-color}.elementor-share-btn__icon{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:4.5em;position:relative}.elementor-share-btn__icon i{font-size:var(--e-share-buttons-icon-size,1.7em)}.elementor-share-btn__icon svg{width:var(--e-share-buttons-icon-size,1.7em);height:var(--e-share-buttons-icon-size,1.7em)}.elementor-share-btn__text{font-size:1.5em;padding-left:1em;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:100}.elementor-share-btn__title{font-weight:700;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-share-buttons{text-align:var(--alignment,inherit);-moz-text-align-last:var(--alignment,inherit);text-align-last:var(--alignment,inherit)}.elementor-widget-share-buttons.elementor-grid-0 .elementor-widget-container{font-size:0}.elementor-skin-carousel .elementor-main-swiper,.elementor-skin-coverflow .elementor-main-swiper{height:230px}.elementor-skin-slideshow .elementor-main-swiper{height:450px;position:relative}.elementor-skin-slideshow .elementor-thumbnails-swiper .elementor-custom-embed-play i{font-size:50px}.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide{cursor:pointer}.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide:not(.swiper-slide-active):after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.3)}.elementor-carousel-image{background:no-repeat 50%;-webkit-background-size:cover;background-size:cover;height:100%;position:relative}.elementor-carousel-image-overlay{position:absolute;top:0;left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;width:100%;height:100%;padding:20px;color:var(--e-carousel-image-overlay-color,#fff);background-color:rgba(129,138,145,.8);-webkit-transition:opacity .5s,-webkit-transform .5s;transition:opacity .5s,-webkit-transform .5s;-o-transition:transform .5s,opacity .5s;transition:transform .5s,opacity .5s;transition:transform .5s,opacity .5s,-webkit-transform .5s}.elementor-carousel-image-overlay i{font-size:var(--e-carousel-image-overlay-icon-size,21px)}.elementor-carousel-image-overlay svg{fill:var(--e-carousel-image-overlay-color,#fff);width:var(--e-carousel-image-overlay-icon-size,21px);height:var(--e-carousel-image-overlay-icon-size,21px)}.elementor-testimonial__image{-ms-flex-negative:0;flex-shrink:0}.elementor-testimonial__image img{border-radius:999px;-webkit-box-sizing:content-box;box-sizing:content-box;-o-object-fit:cover;object-fit:cover}.elementor-testimonial__footer,.elementor-testimonial__header{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-testimonial__footer cite,.elementor-testimonial__header cite{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;font-style:normal;font-size:14px;line-height:1.5}.elementor-testimonial__name{font-weight:700}.elementor-testimonial--layout-image_above .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline .elementor-testimonial__footer{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-testimonial--layout-image_above .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline .elementor-testimonial__image+cite{margin-right:20px}.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__footer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__image+cite{margin-left:20px;margin-right:0}.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__footer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__image+cite{margin-left:0;margin-right:20px}.elementor-testimonial--layout-image_inline .elementor-testimonial__footer{margin-top:25px}.elementor-testimonial--layout-image_above .elementor-testimonial{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.elementor-testimonial--layout-image_above .elementor-testimonial__footer{margin-bottom:25px}.elementor-testimonial--layout-image_stacked .elementor-testimonial__footer{margin-top:25px;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-testimonial--layout-image_stacked .elementor-testimonial__image,.elementor-testimonial--layout-image_stacked .elementor-testimonial cite{margin-top:15px;width:100%}.elementor-testimonial--layout-image_left .elementor-testimonial,.elementor-testimonial--layout-image_right .elementor-testimonial{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-testimonial--layout-image_left .elementor-testimonial__footer,.elementor-testimonial--layout-image_right .elementor-testimonial__footer{-ms-flex-negative:0;flex-shrink:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center}.elementor-testimonial--layout-image_left .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_right .elementor-testimonial__image+cite{margin-top:15px}.elementor-testimonial--layout-image_left.elementor-testimonial--align-center .elementor-testimonial__footer,.elementor-testimonial--layout-image_right.elementor-testimonial--align-center .elementor-testimonial__footer{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-testimonial--layout-image_left .elementor-testimonial{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-testimonial--layout-image_left .elementor-testimonial__footer{padding-left:20px}.elementor-testimonial--layout-image_right .elementor-testimonial{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-testimonial--layout-image_right .elementor-testimonial__footer{padding-right:20px}.elementor-testimonial--align-right .elementor-testimonial{text-align:right}.elementor-testimonial--align-left .elementor-testimonial{text-align:left}.elementor-testimonial--align-center .elementor-testimonial{text-align:center}.elementor-testimonial--align-center .elementor-testimonial__footer{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-testimonial--align-center.elementor-testimonial--layout-image_inline .elementor-testimonial__image+cite{text-align:right}.elementor-testimonial--skin-default.elementor-testimonial--layout-image_above .elementor-testimonial__cite,.elementor-testimonial--skin-default.elementor-testimonial--layout-image_left .elementor-testimonial__cite,.elementor-testimonial--skin-default.elementor-testimonial--layout-image_right .elementor-testimonial__cite{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-top:25px}.elementor-testimonial--skin-bubble .elementor-testimonial__content{background-color:#e6e9ec;padding:20px;position:relative}.elementor-testimonial--skin-bubble .elementor-testimonial__content:after{content:"";display:block;width:14px;height:14px;background-color:#e6e9ec;position:absolute;-webkit-transform:scaleX(.75) rotate(45deg);-ms-transform:scaleX(.75) rotate(45deg);transform:scaleX(.75) rotate(45deg);border-width:0;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above .elementor-testimonial__content:after{bottom:calc(100% - 7px);-webkit-transform:scaleX(.75) rotate(-135deg);-ms-transform:scaleX(.75) rotate(-135deg);transform:scaleX(.75) rotate(-135deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-center .elementor-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) scaleX(.75) rotate(-135deg);-ms-transform:translateX(-50%) scaleX(.75) rotate(-135deg);transform:translateX(-50%) scaleX(.75) rotate(-135deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked .elementor-testimonial__content:after{top:calc(100% - 7px)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-center .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-center .elementor-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) scaleX(.75) rotate(45deg);-ms-transform:translateX(-50%) scaleX(.75) rotate(45deg);transform:translateX(-50%) scaleX(.75) rotate(45deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-left .elementor-testimonial__content:after{left:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-right .elementor-testimonial__content:after{right:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after{-webkit-transform:scaleY(.75) rotate(135deg);-ms-transform:scaleY(.75) rotate(135deg);transform:scaleY(.75) rotate(135deg);left:-8px}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after{-webkit-transform:scaleY(.75) rotate(-45deg);-ms-transform:scaleY(.75) rotate(-45deg);transform:scaleY(.75) rotate(-45deg);right:-8px}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after{top:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__footer,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__footer{padding-top:20px}.elementor-widget-testimonial-carousel .swiper-slide{padding:20px}.elementor-widget-testimonial-carousel .elementor-testimonial__text{font-size:1.3em;font-style:italic;line-height:1.5}.elementor-widget-testimonial-carousel .elementor-testimonial__image img{width:50px;height:50px}.elementor-widget-reviews .swiper-slide{background-color:#fff;border:1px solid #e1e8ed;border-radius:5px;padding:0}.elementor-widget-reviews .elementor-testimonial__text{font-size:14px;line-height:20px}.elementor-widget-reviews .elementor-testimonial__name{color:#1c2022}.elementor-widget-reviews .elementor-testimonial__title{color:#697882;font-size:12.5px;font-weight:400;font-family:inherit}.elementor-widget-reviews .elementor-testimonial__image{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-reviews .elementor-testimonial__image img{width:36px;height:36px}.elementor-widget-reviews .elementor-testimonial__icon{margin-right:auto;font-size:17px}.elementor-widget-reviews .elementor-testimonial__icon .fa+.fa{margin-right:.15em}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon{color:var(--e-testimonial-icon-color)}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-android{--e-testimonial-icon-color:#a4c639}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-apple{--e-testimonial-icon-color:#999}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-behance{--e-testimonial-icon-color:#1769ff}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-bitbucket{--e-testimonial-icon-color:#205081}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-codepen{--e-testimonial-icon-color:#000}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-delicious{--e-testimonial-icon-color:#39f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-digg{--e-testimonial-icon-color:#005be2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-dribbble{--e-testimonial-icon-color:#ea4c89}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-envelope{--e-testimonial-icon-color:#ea4335}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-facebook{--e-testimonial-icon-color:#3b5998}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-flickr{--e-testimonial-icon-color:#0063dc}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-foursquare{--e-testimonial-icon-color:#2d5be3}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-github{--e-testimonial-icon-color:#333}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-google-plus{--e-testimonial-icon-color:#dd4b39}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-houzz{--e-testimonial-icon-color:#7ac142}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-instagram{--e-testimonial-icon-color:#262626}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-jsfiddle{--e-testimonial-icon-color:#487aa2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-linkedin{--e-testimonial-icon-color:#0077b5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-medium{--e-testimonial-icon-color:#00ab6b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-meetup{--e-testimonial-icon-color:#ec1c40}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-mixcloud{--e-testimonial-icon-color:#273a4b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-odnoklassniki{--e-testimonial-icon-color:#f4731c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-pinterest{--e-testimonial-icon-color:#bd081c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-product-hunt{--e-testimonial-icon-color:#da552f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-reddit{--e-testimonial-icon-color:#ff4500}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-rss{--e-testimonial-icon-color:#f26522}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-shopping-cart{--e-testimonial-icon-color:#4caf50}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-skype{--e-testimonial-icon-color:#00aff0}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-slideshare{--e-testimonial-icon-color:#0077b5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-snapchat{--e-testimonial-icon-color:#fffc00}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-soundcloud{--e-testimonial-icon-color:#f80}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-spotify{--e-testimonial-icon-color:#2ebd59}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stack-overflow{--e-testimonial-icon-color:#fe7a15}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-steam{--e-testimonial-icon-color:#00adee}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stumbleupon{--e-testimonial-icon-color:#eb4924}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-telegram{--e-testimonial-icon-color:#2ca5e0}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumb-tack,.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumbtack{--e-testimonial-icon-color:#1aa1d8}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tripadvisor{--e-testimonial-icon-color:#589442}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tumblr{--e-testimonial-icon-color:#35465c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitch{--e-testimonial-icon-color:#6441a5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitter{--e-testimonial-icon-color:#1da1f2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vimeo{--e-testimonial-icon-color:#1ab7ea}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vk{--e-testimonial-icon-color:#45668e}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weibo{--e-testimonial-icon-color:#dd2430}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weixin{--e-testimonial-icon-color:#31a918}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-whatsapp{--e-testimonial-icon-color:#25d366}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-wordpress{--e-testimonial-icon-color:#21759b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-xing{--e-testimonial-icon-color:#026466}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-yelp{--e-testimonial-icon-color:#af0606}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-youtube{--e-testimonial-icon-color:#cd201f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-500px{--e-testimonial-icon-color:#0099e5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon svg{fill:var(--e-testimonial-icon-color)}.elementor-widget-reviews .elementor-testimonial__rating{background-image:-webkit-gradient(linear,left top,right top,from(#ffc82c),to(#ccc));background-image:-webkit-linear-gradient(left,#ffc82c var(--rating),#ccc var(--rating));background-image:-o-linear-gradient(left,#ffc82c var(--rating),#ccc var(--rating));background-image:linear-gradient(90deg,#ffc82c var(--rating),#ccc var(--rating));font-family:eicons}.elementor-widget-reviews .elementor-testimonial__header{display:-webkit-box;display:-ms-flexbox;display:flex;padding-top:15px;padding-bottom:6px}.elementor-widget-reviews .elementor-testimonial__image+cite{margin-right:9px}.elementor-widget-reviews .elementor-testimonial__separator{margin:0 auto;border-top:0;border-bottom:1px solid #e1e8ed;height:0}.elementor-widget-reviews .elementor-testimonial__content{padding-top:6px;padding-bottom:15px}.elementor-widget-reviews .elementor-testimonial__content,.elementor-widget-reviews .elementor-testimonial__header{padding-left:15px;padding-right:15px}.elementor-widget-reviews.elementor-review--has-separator .elementor-testimonial__header{border-bottom:1px solid #e1e8ed}.swiper-pagination-bullets{color:#fff;cursor:default}.swiper-slide{will-change:transform;border-style:solid;border-width:0;-webkit-transition-duration:.5s;-o-transition-duration:.5s;transition-duration:.5s;-webkit-transition-property:border,background,-webkit-transform;transition-property:border,background,-webkit-transform;-o-transition-property:border,background,transform;transition-property:border,background,transform;transition-property:border,background,transform,-webkit-transform;overflow:hidden}.swiper-slide:not(:hover) .e-overlay-animation-fade{opacity:0}.swiper-slide:not(:hover) .e-overlay-animation-slide-up{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-down{-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-right{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-left{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.swiper-slide:not(:hover) .e-overlay-animation-zoom-in{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);opacity:0}.swiper-slide a{display:inline}.swiper-slide a.elementor-button{display:inline-block}.elementor-widget-reviews .elementor-arrows-yes .elementor-main-swiper,.elementor-widget-testimonial-carousel .elementor-arrows-yes .elementor-main-swiper{width:calc(95% - 40px)}.elementor-widget-reviews .elementor-main-swiper,.elementor-widget-testimonial-carousel .elementor-main-swiper{width:95%}.elementor-widget-reviews .swiper-wrapper,.elementor-widget-testimonial-carousel .swiper-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-widget-reviews .swiper-slide,.elementor-widget-testimonial-carousel .swiper-slide{height:auto}.elementor-widget-reviews.elementor-pagination-type-bullets .swiper-container,.elementor-widget-reviews.elementor-pagination-type-fraction .swiper-container,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .swiper-container,.elementor-widget-testimonial-carousel.elementor-pagination-type-fraction .swiper-container{padding-bottom:40px}.elementor-widget-reviews .elementor-swiper-button-prev,.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-next,.elementor-widget-testimonial-carousel .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-next{left:0;right:unset}.elementor-widget-reviews .elementor-swiper-button-next,.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel .elementor-swiper-button-next,.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-prev{right:0;left:unset}.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-next,.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-next,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-prev{top:calc(50% - (40px / 2))}.elementor-widget-media-carousel .elementor-swiper-button-prev,.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-next{left:10px;right:unset}.elementor-widget-media-carousel .elementor-swiper-button-next,.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-prev{right:10px;left:unset}.entry-content blockquote.elementor-blockquote:not(.alignright):not(.alignleft),.entry-summary blockquote.elementor-blockquote{margin-right:0;margin-left:0}.elementor-widget-blockquote blockquote{margin:0;padding:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;quotes:none;border:0;font-style:normal;color:#55595c}.elementor-widget-blockquote blockquote:after,.elementor-widget-blockquote blockquote:before,.elementor-widget-blockquote blockquote cite:after,.elementor-widget-blockquote blockquote cite:before,.elementor-widget-blockquote blockquote footer:after,.elementor-widget-blockquote blockquote footer:before{content:"";content:none}.elementor-blockquote{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-blockquote__author,.elementor-blockquote__content{margin-bottom:0;font-style:normal}.elementor-blockquote__author{font-weight:700}.elementor-blockquote footer{margin-top:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-blockquote__tweet-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;color:#1da1f2;-ms-flex-item-align:end;align-self:flex-end;line-height:1;position:relative;width:-webkit-max-content;width:-moz-max-content;width:max-content}.elementor-blockquote__tweet-button:hover{color:#0967a0}.elementor-blockquote__tweet-button span{font-weight:600}.elementor-blockquote__tweet-button i,.elementor-blockquote__tweet-button span{vertical-align:middle}.elementor-blockquote__tweet-button i+span,.elementor-blockquote__tweet-button svg+span{margin-right:.5em}.elementor-blockquote__tweet-button svg{fill:#1da1f2;height:1em;width:1em}.elementor-blockquote__tweet-label{white-space:pre-wrap}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button{padding:.7em 1.2em;border-radius:100em;background-color:#1da1f2;color:#fff;font-size:15px}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover{background-color:#0967a0;color:#fff}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover:before,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover:before{border-left-color:#0967a0}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button svg,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button svg{fill:#fff;height:1em;width:1em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button{padding:0;width:2em;height:2em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:before{content:"";border:.5em solid transparent;border-left-color:#1da1f2;position:absolute;right:-.8em;top:50%;-webkit-transform:translateY(-50%) scaleY(.65);-ms-transform:translateY(-50%) scaleY(.65);transform:translateY(-50%) scaleY(.65);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:before{right:auto;left:-.8em;border-right-color:#1da1f2;border-left-color:transparent}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:hover:before{border-right-color:#0967a0}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:before{left:auto;right:-.8em;border-right-color:transparent;border-left-color:#1da1f2}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:hover:before{border-left-color:#0967a0}.elementor-blockquote--skin-boxed .elementor-blockquote{background-color:#e6e9ec;padding:30px}.elementor-blockquote--skin-border .elementor-blockquote{border-color:#e6e9ec;border-right:7px #e6e9ec;border-style:solid;padding-right:20px}.elementor-blockquote--skin-quotation .elementor-blockquote:before{content:"“";font-size:100px;color:#e6e9ec;font-family:Times New Roman,Times,serif;font-weight:900;line-height:1;display:block;height:.6em}.elementor-blockquote--skin-quotation .elementor-blockquote__content{margin-top:15px}.elementor-blockquote--align-left .elementor-blockquote__content{text-align:left}.elementor-blockquote--align-left .elementor-blockquote footer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-blockquote--align-right .elementor-blockquote__content{text-align:right}.elementor-blockquote--align-right .elementor-blockquote footer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-blockquote--align-center .elementor-blockquote{text-align:center}.elementor-blockquote--align-center .elementor-blockquote__author,.elementor-blockquote--align-center .elementor-blockquote footer{display:block}.elementor-blockquote--align-center .elementor-blockquote__tweet-button{margin-right:auto;margin-left:auto}.elementor-headline{font-size:43px;line-height:1.2;display:block}.elementor-headline-dynamic-text{color:var(--dynamic-text-color,#aebcb9)}.elementor-headline--style-rotate .elementor-headline-dynamic-wrapper{text-align:right}.elementor-headline--style-highlight .elementor-headline-dynamic-wrapper{overflow:visible;text-align:inherit}.elementor-headline--style-highlight .elementor-headline-dynamic-text{z-index:1}.elementor-headline--style-highlight .elementor-headline-plain-text{z-index:1;position:relative}.elementor-headline--style-highlight svg{position:absolute;top:50%;left:50%;width:calc(100% + 20px);height:calc(100% + 20px);-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);overflow:visible}.elementor-headline--style-highlight svg path{stroke:red;stroke-width:9;fill:none;opacity:0;stroke-dasharray:0 1500;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-headline.e-animated svg path{-webkit-animation:elementor-headline-dash forwards;animation:elementor-headline-dash forwards;-webkit-animation-duration:var(--animation-duration,1.2s);animation-duration:var(--animation-duration,1.2s);-webkit-animation-iteration-count:1;animation-iteration-count:1}.elementor-headline.e-animated svg path:nth-of-type(2){-webkit-animation-delay:calc(var(--animation-duration, 1.2s) / 2);animation-delay:calc(var(--animation-duration, 1.2s) / 2)}.elementor-headline.e-hide-highlight svg path{opacity:1;stroke-dasharray:1500 1500;-webkit-animation:hide-highlight .4s forwards;animation:hide-highlight .4s forwards;-webkit-animation-iteration-count:1;animation-iteration-count:1}@-webkit-keyframes elementor-headline-dash{0%{stroke-dasharray:0 1500;opacity:1}to{stroke-dasharray:1500 1500;opacity:1}}@keyframes elementor-headline-dash{0%{stroke-dasharray:0 1500;opacity:1}to{stroke-dasharray:1500 1500;opacity:1}}@-webkit-keyframes hide-highlight{0%{opacity:1;stroke-dasharray:1500 1500}to{opacity:0;-webkit-filter:blur(10px);filter:blur(10px)}}@keyframes hide-highlight{0%{opacity:1;stroke-dasharray:1500 1500}to{opacity:0;-webkit-filter:blur(10px);filter:blur(10px)}}.elementor-headline-text-wrapper{vertical-align:bottom}.elementor-headline-dynamic-wrapper{display:inline-block;position:relative}.elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text{display:inline-block;position:absolute;top:0;right:0}.elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text.elementor-headline-text-active{position:relative}.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text{opacity:0;-webkit-transform-origin:50% 100%;-ms-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-transform:rotateX(0deg);transform:rotateX(0deg);-webkit-animation:elementor-headline-flip-in 1.2s;animation:elementor-headline-flip-in 1.2s}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);-webkit-animation:elementor-headline-flip-out 1.2s;animation:elementor-headline-flip-out 1.2s}@-webkit-keyframes elementor-headline-flip-in{0%{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}35%{-webkit-transform:rotateX(120deg);transform:rotateX(120deg);opacity:0}65%{opacity:0}to{-webkit-transform:rotateX(1turn);transform:rotateX(1turn);opacity:1}}@keyframes elementor-headline-flip-in{0%{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}35%{-webkit-transform:rotateX(120deg);transform:rotateX(120deg);opacity:0}65%{opacity:0}to{-webkit-transform:rotateX(1turn);transform:rotateX(1turn);opacity:1}}@-webkit-keyframes elementor-headline-flip-out{0%{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}35%{-webkit-transform:rotateX(-40deg);transform:rotateX(-40deg);opacity:1}65%{opacity:0}to{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}}@keyframes elementor-headline-flip-out{0%{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}35%{-webkit-transform:rotateX(-40deg);transform:rotateX(-40deg);opacity:1}65%{opacity:0}to{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper{vertical-align:top;overflow:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:after{content:"";position:absolute;left:0;right:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);height:90%;width:1px;background-color:#0d0d0d}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:not(.elementor-headline-typing-selected):after{-webkit-animation:elementor-headline-pulse 1s infinite;animation:elementor-headline-pulse 1s infinite}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected{background-color:var(--typing-selected-bg-color,#0d0d0d)}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected:after{visibility:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected .elementor-headline-dynamic-text{color:var(--typing-selected-color,var(--dynamic-text-color),#aebcb9)}.elementor-headline-animation-type-typing .elementor-headline-dynamic-text:not(.elementor-headline-text-active){visibility:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){position:absolute;visibility:hidden}@-webkit-keyframes elementor-headline-pulse{0%{-webkit-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);transform:translateY(-50%) scale(.9);opacity:0}to{-webkit-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);opacity:0}}@keyframes elementor-headline-pulse{0%{-webkit-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);transform:translateY(-50%) scale(.9);opacity:0}to{-webkit-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);opacity:0}}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{display:inline-block;-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text{-webkit-transform:scaleX(1.0005);-ms-transform:scaleX(1.0005);transform:scaleX(1.0005);opacity:0}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg);opacity:0}.elementor-headline-text-active .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{opacity:1}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-swirl-in .4s forwards;animation:elementor-headline-swirl-in .4s forwards}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-swirl-out .4s forwards;animation:elementor-headline-swirl-out .4s forwards}@-webkit-keyframes elementor-headline-swirl-in{0%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(-10deg);transform:translateZ(-20px) rotateX(-10deg)}to{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0deg);transform:translateZ(-20px) rotateX(0deg)}}@keyframes elementor-headline-swirl-in{0%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(-10deg);transform:translateZ(-20px) rotateX(-10deg)}to{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0deg);transform:translateZ(-20px) rotateX(0deg)}}@-webkit-keyframes elementor-headline-swirl-out{0%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0);transform:translateZ(-20px) rotateX(0)}60%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-100deg);transform:translateZ(-20px) rotateX(-100deg)}to{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-90deg);transform:translateZ(-20px) rotateX(-90deg)}}@keyframes elementor-headline-swirl-out{0%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0);transform:translateZ(-20px) rotateX(0)}60%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-100deg);transform:translateZ(-20px) rotateX(-100deg)}to{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-90deg);transform:translateZ(-20px) rotateX(-90deg)}}.elementor-headline-animation-type-slide-down .elementor-headline-text-wrapper{display:inline-block;padding:.2em 0}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper{overflow:hidden;vertical-align:top}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text{opacity:0;top:.2em}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-active{top:0;opacity:1;-webkit-animation:elementor-headline-slide-down-in .6s;animation:elementor-headline-slide-down-in .6s}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-slide-down-out .6s;animation:elementor-headline-slide-down-out .6s}@-webkit-keyframes elementor-headline-slide-down-in{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}60%{opacity:1;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes elementor-headline-slide-down-in{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}60%{opacity:1;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes elementor-headline-slide-down-out{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}60%{opacity:0;-webkit-transform:translateY(120%);transform:translateY(120%)}to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes elementor-headline-slide-down-out{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}60%{opacity:0;-webkit-transform:translateY(120%);transform:translateY(120%)}to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}}.elementor-headline-animation-type-clip .elementor-headline-text-wrapper{display:inline-block;padding:.2em 0}.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper{overflow:hidden;vertical-align:top}.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper:after{content:"";position:absolute;top:0;left:0;right:auto;width:2px;height:100%;background-color:#0d0d0d}.elementor-headline-animation-type-clip .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-clip .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-animation:elementor-headline-drop-in-in .8s;animation:elementor-headline-drop-in-in .8s}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-drop-in-out .8s;animation:elementor-headline-drop-in-out .8s}@-webkit-keyframes elementor-headline-drop-in-in{0%{opacity:0;-webkit-transform:translateZ(100px);transform:translateZ(100px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes elementor-headline-drop-in-in{0%{opacity:0;-webkit-transform:translateZ(100px);transform:translateZ(100px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes elementor-headline-drop-in-out{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translateZ(-100px);transform:translateZ(-100px)}}@keyframes elementor-headline-drop-in-out{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translateZ(-100px);transform:translateZ(-100px)}}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter{display:inline-block;-webkit-transform:rotateY(180deg);transform:rotateY(180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-headline-text-active .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-blinds-in .6s forwards;animation:elementor-headline-blinds-in .6s forwards}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-blinds-out .6s forwards;animation:elementor-headline-blinds-out .6s forwards}@-webkit-keyframes elementor-headline-blinds-in{0%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}to{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}}@keyframes elementor-headline-blinds-in{0%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}to{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}}@-webkit-keyframes elementor-headline-blinds-out{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}to{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}}@keyframes elementor-headline-blinds-out{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}to{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}}.elementor-headline-animation-type-wave .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter{display:inline-block;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-headline-text-active .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter{opacity:1}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-wave-up .6s forwards;animation:elementor-headline-wave-up .6s forwards}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-wave-down .6s forwards;animation:elementor-headline-wave-down .6s forwards}@-webkit-keyframes elementor-headline-wave-up{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}60%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes elementor-headline-wave-up{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}60%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes elementor-headline-wave-down{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}60%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}@keyframes elementor-headline-wave-down{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}60%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-animation:elementor-headline-slide-in .6s;animation:elementor-headline-slide-in .6s}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-slide-out .6s;animation:elementor-headline-slide-out .6s}@-webkit-keyframes elementor-headline-slide-in{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}60%{opacity:1;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes elementor-headline-slide-in{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}60%{opacity:1;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes elementor-headline-slide-out{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}60%{opacity:0;-webkit-transform:translateX(110%);transform:translateX(110%)}to{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes elementor-headline-slide-out{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}60%{opacity:0;-webkit-transform:translateX(110%);transform:translateX(110%)}to{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-slide .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper{-webkit-transition:width .5s;-o-transition:width .5s;transition:width .5s}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper{overflow:hidden}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text,.elementor-headline-animation-type-wave .elementor-headline-dynamic-text{white-space:nowrap}.elementor-msie .elementor-headline--style-highlight svg{top:auto;left:auto;-webkit-transform:translate(-100%);-ms-transform:translate(-100%);transform:translate(-100%)}@-webkit-keyframes e-hotspot-soft-beat{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.1);transform:scale(1.1)}}@keyframes e-hotspot-soft-beat{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.1);transform:scale(1.1)}}@-webkit-keyframes e-hotspot-expand{0%{-webkit-transform:scale(.5);transform:scale(.5);opacity:1}to{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}@keyframes e-hotspot-expand{0%{-webkit-transform:scale(.5);transform:scale(.5);opacity:1}to{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}.elementor-widget-hotspot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--background-align);-ms-flex-pack:var(--background-align);justify-content:var(--background-align)}.elementor-widget-hotspot .elementor-widget-container{position:relative;display:inline-block;width:var(--container-width);max-width:var(--container-max-width);height:var(--container-height)}.elementor-widget-hotspot .elementor-widget-container>img{display:block;width:var(--image-width,auto);height:var(--container-height);opacity:var(--opacity,1)}.e-hotspot{z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:absolute}.e-hotspot--position-left.e-hotspot--position-top{-webkit-transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)));-ms-transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)));transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)))}.e-hotspot--position-left.e-hotspot--position-bottom{-webkit-transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y));-ms-transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y));transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y))}.e-hotspot--position-right.e-hotspot--position-top{-webkit-transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)));-ms-transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)));transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)))}.e-hotspot--position-right.e-hotspot--position-bottom{-webkit-transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y));-ms-transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y));transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y))}.e-hotspot--active{z-index:2}.e-hotspot__inner-circle,.e-hotspot__outer-circle{content:"";display:inline-block;-webkit-box-sizing:content-box;box-sizing:content-box;border-radius:50%}.e-hotspot__inner-circle{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background-color:var(--hotspot-color);padding:calc(var(--hotspot-size, 18px) / 2)}.e-hotspot__outer-circle{background-color:var(--hotspot-color);padding:var(--hotspot-padding,4px)}.e-hotspot--icon .e-hotspot__button,.e-hotspot__outer-circle{width:var(--hotspot-size,18px);height:var(--hotspot-size,18px)}.e-hotspot--icon .e-hotspot__button{line-height:0;-webkit-box-sizing:content-box;box-sizing:content-box;font-size:var(--hotspot-size,18px)}.e-hotspot__icon,.e-hotspot__label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.e-hotspot__icon svg,.e-hotspot__label svg{width:var(--hotspot-size,18px);height:auto}.e-hotspot__button{cursor:pointer;position:relative;display:grid;grid-auto-flow:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--hotspot-color);font-size:var(--hotspot-size,18px);min-width:var(--hotspot-button-width);min-height:var(--hotspot-button-height)}.e-hotspot__button:before{z-index:-2;content:"";width:100%;height:100%;left:-5px;top:-5px;position:absolute;padding:5px;-webkit-box-sizing:content-box;box-sizing:content-box}.e-hotspot__button svg{fill:var(--hotspot-color)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot__button{min-width:var(--hotspot-min-width);min-height:var(--hotspot-min-height);background-color:var(--hotspot-box-color);padding:var(--hotspot-padding,4px);border-radius:var(--hotspot-border-radius,3px)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot__button:before{border-radius:var(--hotspot-border-radius,3px)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{background-color:var(--hotspot-box-color)}.e-hotspot--overlay{opacity:.7;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.e-hotspot--active .e-hotspot--overlay,.e-hotspot--overlay:hover{opacity:1}.e-hotspot--soft-beat{-webkit-animation:e-hotspot-soft-beat .7s infinite alternate;animation:e-hotspot-soft-beat .7s infinite alternate;-webkit-animation-timing-function:ease;animation-timing-function:ease}.e-hotspot--expand .e-hotspot__outer-circle,.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{-webkit-animation:e-hotspot-expand 2s infinite;animation:e-hotspot-expand 2s infinite}.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{content:"";width:100%;height:100%;position:absolute;z-index:-1;opacity:0}.e-hotspot--sequenced{-webkit-animation:fadeIn .3s;animation:fadeIn .3s;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-fill-mode:both;animation-fill-mode:both}.e-hotspot__direction-mask{overflow:hidden;position:absolute;pointer-events:none}.e-hotspot__tooltip{white-space:var(--white-space,nowrap);-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-duration:var(--tooltip-transition-duration,.5s);-o-transition-duration:var(--tooltip-transition-duration,.5s);transition-duration:var(--tooltip-transition-duration,.5s);-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;position:absolute;pointer-events:none;color:var(--tooltip-text-color,#fff);text-align:var(--tooltip-align);min-width:var(--tooltip-min-width);padding:var(--tooltip-padding,8px);border-radius:var(--tooltip-border-radius);background-color:var(--tooltip-color)}.e-hotspot__tooltip p:last-of-type{margin-bottom:0}.e-hotspot__direction-mask .e-hotspot__tooltip{-webkit-box-shadow:none!important;box-shadow:none!important;position:static}.e-hotspot--active .e-hotspot__tooltip{pointer-events:visible}.e-hotspot--fade-in-out{opacity:0}.e-hotspot--active .e-hotspot--fade-in-out{opacity:1}.e-hotspot--fade-grow{opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.e-hotspot--active .e-hotspot--fade-grow{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.e-hotspot--override-tooltip-animation-from-top,.e-hotspot--tooltip-animation-from-top{-webkit-transform:translateY(calc(-100% - 1px));-ms-transform:translateY(calc(-100% - 1px));transform:translateY(calc(-100% - 1px))}.e-hotspot--override-tooltip-animation-from-left,.e-hotspot--tooltip-animation-from-left{-webkit-transform:translate(calc(-100% - 1px));-ms-transform:translate(calc(-100% - 1px));transform:translate(calc(-100% - 1px))}.e-hotspot--override-tooltip-animation-from-right,.e-hotspot--tooltip-animation-from-right{-webkit-transform:translate(calc(100% + 1px));-ms-transform:translate(calc(100% + 1px));transform:translate(calc(100% + 1px))}.e-hotspot--override-tooltip-animation-from-bottom,.e-hotspot--tooltip-animation-from-bottom{-webkit-transform:translateY(calc(100% + 1px));-ms-transform:translateY(calc(100% + 1px));transform:translateY(calc(100% + 1px))}.e-hotspot--fade-direction{opacity:0}.e-hotspot--active .e-hotspot--fade-direction,.e-hotspot--active .e-hotspot--slide-direction{-webkit-transform:translate(0) scale(1);-ms-transform:translate(0) scale(1);transform:translate(0) scale(1);opacity:1}.e-hotspot--show-tooltip{-webkit-transition:none;-o-transition:none;transition:none;opacity:1;pointer-events:visible;-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.elementor-facebook-widget.fb_iframe_widget,.elementor-facebook-widget.fb_iframe_widget span{width:100%!important}.elementor-facebook-widget.fb_iframe_widget iframe{position:relative;width:100%!important}.elementor-facebook-widget.fb-like{height:1px}.elementor-widget-facebook-comments iframe{width:100%!important}.site-main .menu-navigation-container{overflow:visible}.elementor-item:after,.elementor-item:before{display:block;position:absolute;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transition-timing-function:cubic-bezier(.58,.3,.005,1);-o-transition-timing-function:cubic-bezier(.58,.3,.005,1);transition-timing-function:cubic-bezier(.58,.3,.005,1)}.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{opacity:0}.elementor-item-active:after,.elementor-item-active:before,.elementor-item.highlighted:after,.elementor-item.highlighted:before,.elementor-item:focus:after,.elementor-item:focus:before,.elementor-item:hover:after,.elementor-item:hover:before{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.e--pointer-double-line .elementor-item:after,.e--pointer-double-line .elementor-item:before,.e--pointer-overline .elementor-item:after,.e--pointer-overline .elementor-item:before,.e--pointer-underline .elementor-item:after,.e--pointer-underline .elementor-item:before{height:3px;width:100%;left:0;background-color:#55595c;z-index:2}.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{height:0;width:0;left:50%}.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:10px}.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{bottom:10px}.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:-10px}.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{bottom:-10px}.e--pointer-double-line.e--animation-none,.e--pointer-double-line.e--animation-none .elementor-item,.e--pointer-double-line.e--animation-none .elementor-item:after,.e--pointer-double-line.e--animation-none .elementor-item:before,.e--pointer-double-line.e--animation-none .elementor-item:focus,.e--pointer-double-line.e--animation-none .elementor-item:hover,.e--pointer-double-line.e--animation-none:after,.e--pointer-double-line.e--animation-none:before,.e--pointer-double-line.e--animation-none:focus,.e--pointer-double-line.e--animation-none:hover,.e--pointer-overline.e--animation-none,.e--pointer-overline.e--animation-none .elementor-item,.e--pointer-overline.e--animation-none .elementor-item:after,.e--pointer-overline.e--animation-none .elementor-item:before,.e--pointer-overline.e--animation-none .elementor-item:focus,.e--pointer-overline.e--animation-none .elementor-item:hover,.e--pointer-overline.e--animation-none:after,.e--pointer-overline.e--animation-none:before,.e--pointer-overline.e--animation-none:focus,.e--pointer-overline.e--animation-none:hover,.e--pointer-underline.e--animation-none,.e--pointer-underline.e--animation-none .elementor-item,.e--pointer-underline.e--animation-none .elementor-item:after,.e--pointer-underline.e--animation-none .elementor-item:before,.e--pointer-underline.e--animation-none .elementor-item:focus,.e--pointer-underline.e--animation-none .elementor-item:hover,.e--pointer-underline.e--animation-none:after,.e--pointer-underline.e--animation-none:before,.e--pointer-underline.e--animation-none:focus,.e--pointer-underline.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-double-line .elementor-item:before,.e--pointer-overline .elementor-item:before{content:"";top:0}.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{width:10px;left:-20px}.e--pointer-double-line .elementor-item:after,.e--pointer-underline .elementor-item:after{content:"";bottom:0}.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{width:10px;inset-inline-start:100%}.e--pointer-framed .elementor-item:after,.e--pointer-framed .elementor-item:before{background:transparent;left:0;top:0;bottom:0;right:0;border:3px solid #55595c}.e--pointer-framed .elementor-item:before{content:""}.e--pointer-framed.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(.75);-ms-transform:scale(.75);transform:scale(.75)}.e--pointer-framed.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(1.25);-ms-transform:scale(1.25);transform:scale(1.25)}.e--pointer-framed.e--animation-grow .elementor-item:before,.e--pointer-framed.e--animation-shrink .elementor-item:before{-webkit-transition:opacity .2s,-webkit-transform .4s;transition:opacity .2s,-webkit-transform .4s;-o-transition:opacity .2s,transform .4s;transition:opacity .2s,transform .4s;transition:opacity .2s,transform .4s,-webkit-transform .4s}.e--pointer-framed.e--animation-draw .elementor-item:after,.e--pointer-framed.e--animation-draw .elementor-item:before{width:3px;height:3px}.e--pointer-framed.e--animation-draw .elementor-item:before{border-width:0 3px 3px 0;-webkit-transition:width .1s .2s,height .1s .3s,opacity .12s .22s;-o-transition:width .1s .2s,height .1s .3s,opacity .12s .22s;transition:width .1s .2s,height .1s .3s,opacity .12s .22s}.e--pointer-framed.e--animation-draw .elementor-item:after{content:"";top:auto;bottom:0;right:auto;left:0;border-width:3px 0 0 3px;-webkit-transition:width .1s,height .1s .1s,opacity .02s .18s;-o-transition:width .1s,height .1s .1s,opacity .02s .18s;transition:width .1s,height .1s .1s,opacity .02s .18s}.e--pointer-framed.e--animation-draw .elementor-item-active:after,.e--pointer-framed.e--animation-draw .elementor-item-active:before,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,.e--pointer-framed.e--animation-draw .elementor-item:focus:after,.e--pointer-framed.e--animation-draw .elementor-item:focus:before,.e--pointer-framed.e--animation-draw .elementor-item:hover:after,.e--pointer-framed.e--animation-draw .elementor-item:hover:before{width:100%;height:100%}.e--pointer-framed.e--animation-draw .elementor-item-active:before,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,.e--pointer-framed.e--animation-draw .elementor-item:focus:before,.e--pointer-framed.e--animation-draw .elementor-item:hover:before{-webkit-transition:opacity .02s,height .1s,width .1s .1s;-o-transition:opacity .02s,height .1s,width .1s .1s;transition:opacity .02s,height .1s,width .1s .1s}.e--pointer-framed.e--animation-draw .elementor-item-active:after,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,.e--pointer-framed.e--animation-draw .elementor-item:focus:after,.e--pointer-framed.e--animation-draw .elementor-item:hover:after{-webkit-transition:opacity .02s .2s,height .1s .2s,width .1s .3s;-o-transition:opacity .02s .2s,height .1s .2s,width .1s .3s;transition:opacity .02s .2s,height .1s .2s,width .1s .3s}.e--pointer-framed.e--animation-corners .elementor-item:after,.e--pointer-framed.e--animation-corners .elementor-item:before{width:3px;height:3px}.e--pointer-framed.e--animation-corners .elementor-item:before{border-width:3px 3px 0 0}.e--pointer-framed.e--animation-corners .elementor-item:after{content:"";top:auto;bottom:0;right:auto;left:0;border-width:0 0 3px 3px}.e--pointer-framed.e--animation-corners .elementor-item-active:after,.e--pointer-framed.e--animation-corners .elementor-item-active:before,.e--pointer-framed.e--animation-corners .elementor-item.highlighted:after,.e--pointer-framed.e--animation-corners .elementor-item.highlighted:before,.e--pointer-framed.e--animation-corners .elementor-item:focus:after,.e--pointer-framed.e--animation-corners .elementor-item:focus:before,.e--pointer-framed.e--animation-corners .elementor-item:hover:after,.e--pointer-framed.e--animation-corners .elementor-item:hover:before{width:100%;height:100%;-webkit-transition:opacity 2ms,width .4s,height .4s;-o-transition:opacity 2ms,width .4s,height .4s;transition:opacity 2ms,width .4s,height .4s}.e--pointer-framed.e--animation-none,.e--pointer-framed.e--animation-none .elementor-item,.e--pointer-framed.e--animation-none .elementor-item:after,.e--pointer-framed.e--animation-none .elementor-item:before,.e--pointer-framed.e--animation-none .elementor-item:focus,.e--pointer-framed.e--animation-none .elementor-item:hover,.e--pointer-framed.e--animation-none:after,.e--pointer-framed.e--animation-none:before,.e--pointer-framed.e--animation-none:focus,.e--pointer-framed.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-background .elementor-item:after,.e--pointer-background .elementor-item:before{content:"";-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.e--pointer-background .elementor-item:before{top:0;left:0;right:0;bottom:0;background:#55595c;z-index:-1}.e--pointer-background .elementor-item-active,.e--pointer-background .elementor-item.highlighted,.e--pointer-background .elementor-item:focus,.e--pointer-background .elementor-item:hover{color:#fff}.e--pointer-background.e--animation-grow .elementor-item:before{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}.e--pointer-background.e--animation-grow .elementor-item-active:before,.e--pointer-background.e--animation-grow .elementor-item.highlighted:before,.e--pointer-background.e--animation-grow .elementor-item:focus:before,.e--pointer-background.e--animation-grow .elementor-item:hover:before{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.e--pointer-background.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.e--pointer-background.e--animation-shrink .elementor-item-active:before,.e--pointer-background.e--animation-shrink .elementor-item.highlighted:before,.e--pointer-background.e--animation-shrink .elementor-item:focus:before,.e--pointer-background.e--animation-shrink .elementor-item:hover:before{-webkit-transition:opacity .15s,-webkit-transform .4s;transition:opacity .15s,-webkit-transform .4s;-o-transition:opacity .15s,transform .4s;transition:opacity .15s,transform .4s;transition:opacity .15s,transform .4s,-webkit-transform .4s}.e--pointer-background.e--animation-sweep-left .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{left:100%}.e--pointer-background.e--animation-sweep-right .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{right:100%}.e--pointer-background.e--animation-sweep-up .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:100%}.e--pointer-background.e--animation-sweep-down .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{bottom:100%}.e--pointer-background.e--animation-shutter-out-vertical .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{bottom:50%;top:50%}.e--pointer-background.e--animation-shutter-out-horizontal .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{right:50%;left:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after{top:0;left:0;right:0;bottom:0;background:#55595c;z-index:-1}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:before{top:0;bottom:100%}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after{top:100%;bottom:0}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:before{bottom:50%}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:after{top:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:before{right:0;left:100%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after{right:100%;left:0}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:before{left:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:after{right:50%}.e--pointer-background.e--animation-none,.e--pointer-background.e--animation-none .elementor-item,.e--pointer-background.e--animation-none .elementor-item:after,.e--pointer-background.e--animation-none .elementor-item:before,.e--pointer-background.e--animation-none .elementor-item:focus,.e--pointer-background.e--animation-none .elementor-item:hover,.e--pointer-background.e--animation-none:after,.e--pointer-background.e--animation-none:before,.e--pointer-background.e--animation-none:focus,.e--pointer-background.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-text.e--animation-skew .elementor-item:focus,.e--pointer-text.e--animation-skew .elementor-item:hover{-webkit-transform:skew(-8deg);-ms-transform:skew(-8deg);transform:skew(-8deg)}.e--pointer-text.e--animation-grow .elementor-item:focus,.e--pointer-text.e--animation-grow .elementor-item:hover{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.e--pointer-text.e--animation-shrink .elementor-item:focus,.e--pointer-text.e--animation-shrink .elementor-item:hover{-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}.e--pointer-text.e--animation-float .elementor-item:focus,.e--pointer-text.e--animation-float .elementor-item:hover{-webkit-transform:translateY(-8px);-ms-transform:translateY(-8px);transform:translateY(-8px)}.e--pointer-text.e--animation-sink .elementor-item:focus,.e--pointer-text.e--animation-sink .elementor-item:hover{-webkit-transform:translateY(8px);-ms-transform:translateY(8px);transform:translateY(8px)}.e--pointer-text.e--animation-rotate .elementor-item:focus,.e--pointer-text.e--animation-rotate .elementor-item:hover{-webkit-transform:rotate(6deg);-ms-transform:rotate(6deg);transform:rotate(6deg)}.e--pointer-text.e--animation-none,.e--pointer-text.e--animation-none .elementor-item,.e--pointer-text.e--animation-none .elementor-item:after,.e--pointer-text.e--animation-none .elementor-item:before,.e--pointer-text.e--animation-none .elementor-item:focus,.e--pointer-text.e--animation-none .elementor-item:hover,.e--pointer-text.e--animation-none:after,.e--pointer-text.e--animation-none:before,.e--pointer-text.e--animation-none:focus,.e--pointer-text.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.elementor-nav-menu--main .elementor-nav-menu a{-webkit-transition:.4s;-o-transition:.4s;transition:.4s}.elementor-nav-menu--main .elementor-nav-menu a,.elementor-nav-menu--main .elementor-nav-menu a.highlighted,.elementor-nav-menu--main .elementor-nav-menu a:focus,.elementor-nav-menu--main .elementor-nav-menu a:hover{padding:13px 20px}.elementor-nav-menu--main .elementor-nav-menu a.current{background:#373a3c;color:#fff}.elementor-nav-menu--main .elementor-nav-menu a.disabled{background:#55595c;color:#a1a6a9}.elementor-nav-menu--main .elementor-nav-menu ul{position:absolute;width:12em;border-width:0;border-style:solid;padding:0}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down,.elementor-nav-menu--main .elementor-nav-menu span.scroll-up{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:20px}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow,.elementor-nav-menu--main .elementor-nav-menu span.scroll-up-arrow{position:absolute;top:-2px;right:50%;margin-right:-8px;width:0;height:0;overflow:hidden;border:8px dashed transparent;border-bottom:8px solid #494c4f}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow{top:6px;border-style:solid dashed dashed;border-color:#494c4f transparent transparent}.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow i{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow .e-font-icon-svg{height:1em;width:1em}.elementor-nav-menu--layout-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-nav-menu--layout-horizontal .elementor-nav-menu{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-nav-menu--layout-horizontal .elementor-nav-menu a{white-space:nowrap;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li>.scroll-down,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li ul{top:100%!important}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>a{-webkit-margin-start:var(--e-nav-menu-horizontal-menu-item-margin);margin-inline-start:var(--e-nav-menu-horizontal-menu-item-margin)}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>.scroll-down,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>.scroll-up,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>ul{right:var(--e-nav-menu-horizontal-menu-item-margin)!important}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:last-child)>a{-webkit-margin-end:var(--e-nav-menu-horizontal-menu-item-margin);margin-inline-end:var(--e-nav-menu-horizontal-menu-item-margin)}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:last-child):after{content:var(--e-nav-menu-divider-content,none);height:var(--e-nav-menu-divider-height,35%);border-left:var(--e-nav-menu-divider-width,2px) var(--e-nav-menu-divider-style,solid) var(--e-nav-menu-divider-color,#000);border-bottom-color:var(--e-nav-menu-divider-color,#000);border-right-color:var(--e-nav-menu-divider-color,#000);border-top-color:var(--e-nav-menu-divider-color,#000);-ms-flex-item-align:center;align-self:center}.elementor-nav-menu__align-right .elementor-nav-menu{margin-left:auto}.elementor-nav-menu__align-right .elementor-nav-menu,.elementor-nav-menu__align-right .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-nav-menu__align-left .elementor-nav-menu{margin-right:auto}.elementor-nav-menu__align-left .elementor-nav-menu,.elementor-nav-menu__align-left .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-nav-menu__align-center .elementor-nav-menu{margin-left:auto;margin-right:auto}.elementor-nav-menu__align-center .elementor-nav-menu,.elementor-nav-menu__align-center .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu{width:100%}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu>li{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-nav-menu:not(.elementor-nav-menu--toggle) .elementor-menu-toggle{display:none}.elementor-widget-nav-menu .elementor-widget-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-nav-menu{position:relative;z-index:2}.elementor-nav-menu:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.elementor-nav-menu,.elementor-nav-menu li,.elementor-nav-menu ul{display:block;list-style:none;margin:0;padding:0;line-height:normal;-webkit-tap-highlight-color:rgba(0,0,0,0)}.elementor-nav-menu ul{display:none}.elementor-nav-menu ul ul a,.elementor-nav-menu ul ul a:active,.elementor-nav-menu ul ul a:focus,.elementor-nav-menu ul ul a:hover{border-left:16px solid transparent}.elementor-nav-menu ul ul ul a,.elementor-nav-menu ul ul ul a:active,.elementor-nav-menu ul ul ul a:focus,.elementor-nav-menu ul ul ul a:hover{border-left:24px solid transparent}.elementor-nav-menu ul ul ul ul a,.elementor-nav-menu ul ul ul ul a:active,.elementor-nav-menu ul ul ul ul a:focus,.elementor-nav-menu ul ul ul ul a:hover{border-left:32px solid transparent}.elementor-nav-menu ul ul ul ul ul a,.elementor-nav-menu ul ul ul ul ul a:active,.elementor-nav-menu ul ul ul ul ul a:focus,.elementor-nav-menu ul ul ul ul ul a:hover{border-left:40px solid transparent}.elementor-nav-menu a,.elementor-nav-menu li{position:relative}.elementor-nav-menu li{border-width:0}.elementor-nav-menu a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-nav-menu a,.elementor-nav-menu a:focus,.elementor-nav-menu a:hover{padding:10px 20px;line-height:20px}.elementor-nav-menu a.current{background:#373a3c;color:#fff}.elementor-nav-menu a.disabled{cursor:not-allowed;color:#a1a6a9}.elementor-nav-menu .e-plus-icon:before{content:"+"}.elementor-nav-menu .sub-arrow{line-height:1;padding:10px 10px 10px 0;margin-top:-10px;margin-bottom:-10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-nav-menu .sub-arrow i{pointer-events:none}.elementor-nav-menu .sub-arrow .fa.fa-chevron-down,.elementor-nav-menu .sub-arrow .fas.fa-chevron-down{font-size:.7em}.elementor-nav-menu .sub-arrow .e-font-icon-svg{height:1em;width:1em}.elementor-nav-menu .sub-arrow .e-font-icon-svg.fa-svg-chevron-down{height:.7em;width:.7em}.elementor-nav-menu--dropdown .elementor-item.elementor-item-active,.elementor-nav-menu--dropdown .elementor-item.highlighted,.elementor-nav-menu--dropdown .elementor-item:focus,.elementor-nav-menu--dropdown .elementor-item:hover,.elementor-sub-item.elementor-item-active,.elementor-sub-item.highlighted,.elementor-sub-item:focus,.elementor-sub-item:hover{background-color:#55595c;color:#fff}.elementor-menu-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:22px;padding:.25em;cursor:pointer;border:0 solid;border-radius:3px;background-color:rgba(0,0,0,.05);color:#494c4f}.elementor-menu-toggle.elementor-active .elementor-menu-toggle__icon--open,.elementor-menu-toggle:not(.elementor-active) .elementor-menu-toggle__icon--close{display:none}.elementor-menu-toggle .e-font-icon-svg{fill:#494c4f;height:1em;width:1em}.elementor-nav-menu--dropdown{background-color:#fff;font-size:13px}.elementor-nav-menu--dropdown-none .elementor-menu-toggle,.elementor-nav-menu--dropdown-none .elementor-nav-menu--dropdown{display:none}.elementor-nav-menu--dropdown.elementor-nav-menu__container{margin-top:10px;-webkit-transition:max-height .3s,-webkit-transform .3s;transition:max-height .3s,-webkit-transform .3s;-o-transition:max-height .3s,transform .3s;transition:max-height .3s,transform .3s;transition:max-height .3s,transform .3s,-webkit-transform .3s;-webkit-transform-origin:top;-ms-transform-origin:top;transform-origin:top;overflow:auto}.elementor-nav-menu--dropdown.elementor-nav-menu__container .elementor-sub-item{font-size:.85em}.elementor-nav-menu--dropdown a{color:#494c4f}.elementor-nav-menu--dropdown a.current{background:#373a3c;color:#fff}.elementor-nav-menu--dropdown a.disabled{color:#b3b2b2}ul.elementor-nav-menu--dropdown a,ul.elementor-nav-menu--dropdown a:focus,ul.elementor-nav-menu--dropdown a:hover{text-shadow:none;border-right:8px solid transparent}.elementor-nav-menu__text-align-center .elementor-nav-menu--dropdown .elementor-nav-menu a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-nav-menu--toggle .elementor-menu-toggle:not(.elementor-active)+.elementor-nav-menu__container{-webkit-transform:scaleY(0);-ms-transform:scaleY(0);transform:scaleY(0);max-height:0}.elementor-nav-menu--toggle .elementor-menu-toggle.elementor-active+.elementor-nav-menu__container{-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);max-height:100vh}.elementor-nav-menu--stretch .elementor-nav-menu__container.elementor-nav-menu--dropdown{position:absolute;z-index:9997}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-nav-menu--dropdown-mobile .elementor-nav-menu--main{display:none}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-nav-menu--dropdown-mobile .elementor-menu-toggle,.elementor-nav-menu--dropdown-mobile .elementor-nav-menu--dropdown{display:none}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--main{display:none}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_NEXT){.elementor-nav-menu--dropdown-mobile_extra .elementor-menu-toggle,.elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--dropdown{display:none}}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT){.elementor-nav-menu--dropdown-tablet .elementor-menu-toggle,.elementor-nav-menu--dropdown-tablet .elementor-nav-menu--dropdown{display:none}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-nav-menu--dropdown-tablet .elementor-nav-menu--main{display:none}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--main{display:none}}@media (min-width:ELEMENTOR_SCREEN_TABLET_EXTRA_NEXT){.elementor-nav-menu--dropdown-tablet_extra .elementor-menu-toggle,.elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--dropdown{display:none}}.elementor-gallery__container{min-height:1px}.elementor-gallery-item{position:relative;overflow:hidden;display:block;text-decoration:none;border:solid var(--image-border-width) var(--image-border-color);border-radius:var(--image-border-radius)}.elementor-gallery-item__content,.elementor-gallery-item__overlay{height:100%;width:100%;position:absolute;top:0;left:0}.elementor-gallery-item__overlay{mix-blend-mode:var(--overlay-mix-blend-mode);-webkit-transition-duration:var(--overlay-transition-duration);-o-transition-duration:var(--overlay-transition-duration);transition-duration:var(--overlay-transition-duration);-webkit-transition-property:mix-blend-mode,opacity,background-color,-webkit-transform;transition-property:mix-blend-mode,opacity,background-color,-webkit-transform;-o-transition-property:mix-blend-mode,transform,opacity,background-color;transition-property:mix-blend-mode,transform,opacity,background-color;transition-property:mix-blend-mode,transform,opacity,background-color,-webkit-transform}.elementor-gallery-item__image.e-gallery-image{-webkit-transition-duration:var(--image-transition-duration);-o-transition-duration:var(--image-transition-duration);transition-duration:var(--image-transition-duration);-webkit-transition-property:-webkit-filter,-webkit-transform;transition-property:-webkit-filter,-webkit-transform;-o-transition-property:filter,transform;transition-property:filter,transform;transition-property:filter,transform,-webkit-filter,-webkit-transform}.elementor-gallery-item__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:var(--content-justify-content,center);-ms-flex-pack:var(--content-justify-content,center);justify-content:var(--content-justify-content,center);-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:var(--content-text-align);padding:var(--content-padding)}.elementor-gallery-item__content>div{-webkit-transition-duration:var(--content-transition-duration);-o-transition-duration:var(--content-transition-duration);transition-duration:var(--content-transition-duration)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(2){-webkit-transition-delay:calc((var(--content-transition-delay) / 3));-o-transition-delay:calc((var(--content-transition-delay) / 3));transition-delay:calc((var(--content-transition-delay) / 3))}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(3){-webkit-transition-delay:calc((var(--content-transition-delay) / 3) * 2);-o-transition-delay:calc((var(--content-transition-delay) / 3) * 2);transition-delay:calc((var(--content-transition-delay) / 3) * 2)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(4){-webkit-transition-delay:calc((var(--content-transition-delay) / 3) * 3);-o-transition-delay:calc((var(--content-transition-delay) / 3) * 3);transition-delay:calc((var(--content-transition-delay) / 3) * 3)}.elementor-gallery-item__description{color:var(--description-text-color,#fff);width:100%}.elementor-gallery-item__title{color:var(--title-text-color,#fff);font-weight:700;width:100%}.elementor-gallery__titles-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:var(--titles-container-justify-content,center);-ms-flex-pack:var(--titles-container-justify-content,center);justify-content:var(--titles-container-justify-content,center);margin-bottom:20px}.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:after,.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:before{background-color:var(--galleries-pointer-bg-color-hover)}.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:after,.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:before{background-color:var(--galleries-pointer-bg-color-active)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item:before{border-color:var(--galleries-pointer-bg-color-hover);border-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item:after{border-color:var(--galleries-pointer-bg-color-hover)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:after,.elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:before{border-color:var(--galleries-pointer-bg-color-active)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:before{border-left-width:var(--galleries-pointer-border-width);border-bottom-width:var(--galleries-pointer-border-width);border-right-width:0;border-top-width:0}.elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:after{border-left-width:0;border-bottom-width:0;border-right-width:var(--galleries-pointer-border-width);border-top-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:before{border-left-width:var(--galleries-pointer-border-width);border-bottom-width:0;border-right-width:0;border-top-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:after{border-left-width:0;border-bottom-width:var(--galleries-pointer-border-width);border-right-width:var(--galleries-pointer-border-width);border-top-width:0}.elementor-gallery__titles-container .e--pointer-double-line .elementor-item:after,.elementor-gallery__titles-container .e--pointer-double-line .elementor-item:before,.elementor-gallery__titles-container .e--pointer-overline .elementor-item:before,.elementor-gallery__titles-container .e--pointer-underline .elementor-item:after{height:var(--galleries-pointer-border-width)}.elementor-gallery-title{--space-between:10px;cursor:pointer;color:#6d7882;font-weight:500;position:relative;padding:7px 14px;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.elementor-gallery-title--active{color:#495157}.elementor-gallery-title:not(:last-child){margin-left:var(--space-between)}.elementor-gallery-item__title+.elementor-gallery-item__description{margin-top:var(--description-margin-top)}.e-gallery-item.elementor-gallery-item{-webkit-transition-property:all;-o-transition-property:all;transition-property:all}.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-bottom,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-left,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-right,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-top,.e-gallery-item:hover .elementor-gallery__item-overlay-bg,.e-gallery-item:hover .elementor-gallery__item-overlay-content,.e-gallery-item:hover .elementor-gallery__item-overlay-content__description,.e-gallery-item:hover .elementor-gallery__item-overlay-content__title{opacity:1}a.elementor-item.elementor-gallery-title{color:var(--galleries-title-color-normal)}a.elementor-item.elementor-gallery-title.elementor-item-active,a.elementor-item.elementor-gallery-title.highlighted,a.elementor-item.elementor-gallery-title:focus,a.elementor-item.elementor-gallery-title:hover{color:var(--galleries-title-color-hover)}a.elementor-item.elementor-gallery-title.elementor-item-active{color:var(--gallery-title-color-active)}.elementor-widget-table-of-contents .elementor-toc__header-title{color:var(--header-color)}.elementor-widget-table-of-contents.elementor-toc--collapsed .elementor-toc__toggle-button--collapse,.elementor-widget-table-of-contents:not(.elementor-toc--collapsed) .elementor-toc__toggle-button--expand{display:none}.elementor-widget-table-of-contents .elementor-widget-container{min-height:var(--box-min-height);border:var(--box-border-width,1px) solid var(--box-border-color,#a4afb7);border-radius:var(--box-border-radius,3px);background-color:var(--box-background-color);-webkit-transition:min-height .4s;-o-transition:min-height .4s;transition:min-height .4s;overflow:hidden}.elementor-toc__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:var(--box-padding,20px);background-color:var(--header-background-color);border-bottom:var(--separator-width,1px) solid var(--box-border-color,#a4afb7)}.elementor-toc__header-title{font-size:18px;margin:0;color:var(--header-color)}.elementor-toc__toggle-button{cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-toc__toggle-button i{color:var(--toggle-button-color)}.elementor-toc__toggle-button svg{height:1em;width:1em;fill:var(--toggle-button-color)}.elementor-toc__spinner-container{text-align:center}.elementor-toc__spinner{font-size:2em}.elementor-toc__spinner.e-font-icon-svg{height:1em;width:1em}.elementor-toc__body{padding:var(--box-padding,20px);max-height:var(--toc-body-max-height);overflow-y:auto}.elementor-toc__body::-webkit-scrollbar{width:7px}.elementor-toc__body::-webkit-scrollbar-thumb{background-color:#c2cbd2;border-radius:10px}.elementor-toc__list-wrapper{list-style:none;padding:0}.elementor-toc__list-item{margin-bottom:.5em}.elementor-toc__list-item.elementor-item-active{font-weight:700}.elementor-toc__list-item .elementor-toc__list-wrapper{margin-top:.5em;margin-right:var(--nested-list-indent,1em)}.elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}.elementor-toc__list-item-text-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-toc__list-item-text-wrapper:before,.elementor-toc__list-item-text-wrapper i{margin-left:8px;color:var(--marker-color)}.elementor-toc__list-item-text-wrapper svg{margin-left:8px;fill:var(--marker-color);height:var(--marker-size,.5em);width:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper i{font-size:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper:before{font-size:var(--marker-size,1em)}.elementor-toc--content-ellipsis .elementor-toc__list-item-text{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-toc__list-items--collapsible>.elementor-toc__list-wrapper>.elementor-toc__list-item>.elementor-toc__list-wrapper{display:none}.elementor-toc__heading-anchor{position:absolute}.elementor-toc__body .elementor-toc__list-item-text{color:var(--item-text-color);-webkit-text-decoration:var(--item-text-decoration);text-decoration:var(--item-text-decoration)}.elementor-toc__body .elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__body .elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}ol.elementor-toc__list-wrapper{counter-reset:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item{counter-increment:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper:before{content:counters(item,".") ". "}@media only screen and (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-toc--minimized-on-tablet_extra .elementor-toc__body{display:none}}@media only screen and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-toc--minimized-on-tablet .elementor-toc__body{display:none}}@media only screen and (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-toc--minimized-on-mobile_extra .elementor-toc__body{display:none}}@media only screen and (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-toc--minimized-on-mobile .elementor-toc__body{display:none}}.e-lottie__container{display:inline-block;max-width:var(--lottie-container-max-width);width:var(--lottie-container-width);opacity:var(--lottie-container-opacity)}.e-lottie__container:hover{opacity:var(--lottie-container-opacity-hover);-webkit-transition-duration:var(--lottie-container-transition-duration-hover);-o-transition-duration:var(--lottie-container-transition-duration-hover);transition-duration:var(--lottie-container-transition-duration-hover)}.e-lottie__container svg,.e-lottie__container svg *{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}.e-lottie__caption{color:var(--caption-color);margin-top:var(--caption-margin-top);text-align:var(--caption-text-align)}.e-tabs-inner-tabs{text-align:right;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:16px}.e-tabs-inner-tabs .e-tab-content{padding-top:32px}.e-tabs-inner-tabs .e-inner-tabs-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;overflow:hidden;z-index:1}.e-tabs-inner-tabs .e-inner-tabs-wrapper :after{content:"";width:100%;height:var(--inner-tabs-border-height,1px);background-color:var(--inner-tabs-border-color,#d5dadf);position:absolute;bottom:0;z-index:-1}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title{font-weight:700;min-width:140px;line-height:38px;height:38px;-webkit-box-sizing:content-box;box-sizing:content-box}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title a{color:#6d7882;padding:0 36px;display:block;text-align:center}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active{border-color:#495157 #495157 transparent;border-left-width:0;border-bottom:1px solid #495157;border-right-width:0;border-top-width:0}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active a{color:#495157}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content{display:none;padding:20px}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-text{color:#556068}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.e-inner-tab-active{display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons{margin-top:24px;display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons button{display:none;font-weight:500;line-height:24px;text-decoration:underline;border:none;background:transparent;padding:0}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible .e-inner-tab-text{overflow:hidden}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible.show-inner-tab-buttons .e-inner-tab-buttons,.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button.show-button{display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.show-full-height div.e-inner-tab-text{height:auto}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.e-tabs-inner-tabs>.e-tab-content:first-child{padding-top:24px}.e-tabs-inner-tabs .e-inner-tabs-wrapper{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper{border:solid #d5dadf;border-width:1px 1px 0}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title{border:solid #d5dadf;border-width:0 0 1px;font-size:16px;font-weight:700;text-align:center;height:38px;line-height:38px;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0 10px;cursor:pointer;display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content{border:solid #d5dadf;border-width:0 0 1px;padding:20px}}.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.elementor-widget-video-playlist{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif}.elementor-widget-video-playlist .e-tabs{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-widget-video-playlist .e-tabs-main-area{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;height:434px}.elementor-widget-video-playlist .e-tabs-wrapper{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:33%}.elementor-widget-video-playlist .e-tabs-header{background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;min-height:56px;border-bottom:1px solid #d5dadf}.elementor-widget-video-playlist .e-tabs-header .e-tabs-header-right-side{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-title{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;-o-text-overflow:ellipsis;text-overflow:ellipsis;font-weight:700;font-size:16px;padding:10px 0;overflow-wrap:anywhere;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin:auto 0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count{font-size:14px;-ms-flex-negative:0;flex-shrink:0;font-weight:400;line-height:20px;-ms-flex-item-align:start;align-self:flex-start;padding:18px 0 0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button{display:none;margin:auto 0 auto 8px;cursor:pointer;padding:0 4px}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button.e-font-icon-svg{height:1em;width:1em}.elementor-widget-video-playlist .e-tabs-header .rotate-up{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-widget-video-playlist .e-tabs-header .rotate-down{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-widget-video-playlist .e-tabs-items-wrapper{background-color:#fff;overflow:hidden;position:relative;height:100%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items{overflow:auto;height:100%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-section-title{border-color:#d5dadf;font-size:14px;height:36px;padding:0 16px;line-height:36px;margin:0;text-align:right;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border-width:0;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title{background-color:#fff;border-color:#d5dadf;border-width:0 0 1px;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:14px;height:55px;line-height:55px;outline:none;padding:0 16px;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i{text-shadow:0 0 3px #000;color:#fff;font-size:var(--playlist-item-icon-size,16px)}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg{text-shadow:0 0 3px #000;color:#fff;fill:#fff;width:var(--playlist-item-icon-size,16px);height:var(--playlist-item-icon-size,16px)}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg path{fill:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover{background-color:#f1f3f5;border-color:#d5dadf;border-width:0 0 1px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg{text-shadow:0 0 3px #000;color:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg path,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg path{fill:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active .e-tab-title-text,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover .e-tab-title-text{font-size:14px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-play,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail{background-color:#d5dadf;position:relative;margin:auto 0;-ms-flex-negative:0;flex-shrink:0;width:75px;height:42px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail img{-o-object-fit:fill;object-fit:fill;width:75px;height:42px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail svg{position:absolute;bottom:4px;right:4px;font-weight:900}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-title-text{font-size:14px;margin:auto 8px;text-align:right;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg{margin:auto 0;vertical-align:middle}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-duration{font-size:14px;margin:auto 0}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-play{display:none}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-watched{display:block}.elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top{display:none;height:98px;position:absolute;top:0;width:100%;pointer-events:none;background:-webkit-gradient(linear,left bottom,left top,from(transparent),to(#fff));background:-webkit-linear-gradient(bottom,transparent,#fff);background:-o-linear-gradient(bottom,transparent 0,#fff 100%);background:linear-gradient(0deg,transparent,#fff)}.elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom{display:none;height:98px;position:absolute;bottom:0;width:100%;background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(#fff));background:-webkit-linear-gradient(top,transparent,#fff);background:-o-linear-gradient(top,transparent 0,#fff 100%);background:linear-gradient(180deg,transparent,#fff);pointer-events:none}.elementor-widget-video-playlist .e-tabs-items-wrapper.bottom-shadow .shadow-bottom,.elementor-widget-video-playlist .e-tabs-items-wrapper.top-shadow .shadow-top{display:block}.elementor-widget-video-playlist .e-tabs-content-wrapper{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;height:100%;position:relative}.elementor-widget-video-playlist .e-tabs-content-wrapper .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center;position:absolute;top:0;left:0;width:100%;height:100%;-webkit-background-size:cover;background-size:cover;background-position:50%}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-mobile-title{display:none}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content{background-color:#000;display:none;height:100%;outline:none}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content>div{height:100%}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content iframe{height:100%;max-height:100%!important;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content video{height:100%;background-color:#000}.elementor-widget-video-playlist .e-tabs-inner-tabs .e-tab-content{display:none;outline:none}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-video-playlist .e-tabs-main-area{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;height:auto}.elementor-widget-video-playlist .e-tabs-main-area .e-tabs-content-wrapper{border:none;height:38%}.elementor-widget-video-playlist .e-tabs-wrapper{width:auto;height:62%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items{max-height:248px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items .e-tab-title{border:none}.elementor-widget-video-playlist .e-tabs-header{min-height:48px}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count{margin:0 6px;padding:14px 0 0}.elementor-widget-video-playlist .e-tab-content{border:none;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex}}.elementor-payment-button{border:none}.elementor-scrolling-tracker{--scrolling-track-default-progress-color:#61ce70;--scrolling-track-default-color:#eee;--scrolling-track-precentage-default-color:$black}.elementor-scrolling-tracker-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:var(--horizontal-height,20px);padding:var(--tracker-padding);-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-left:var(--horizontal-border-left-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-bottom:var(--horizontal-border-bottom-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-right:var(--horizontal-border-right-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-top:var(--horizontal-border-top-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-radius:var(--border-radius);background-color:var(--scrolling-track-default-color);direction:var(--direction)}.elementor-scrolling-tracker-horizontal .current-progress{display:none;height:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;border-radius:var(--progress-border-radius);border-left:var(--horizontal-progress-border-left-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-bottom:var(--horizontal-progress-border-bottom-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-right:var(--horizontal-progress-border-right-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-top:var(--horizontal-progress-border-top-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);background-color:var(--scrolling-track-default-progress-color)}.elementor-scrolling-tracker-horizontal .current-progress .current-progress-percentage{inset-inline-end:.5em;inset-inline-start:auto;position:absolute;direction:var(--text-direction);color:var(--percentage-color,var(--scrolling-track-precentage-default-color))}.elementor-scrolling-tracker-circular{display:-webkit-box;display:-ms-flexbox;display:flex;width:var(--circular-width,100px);height:var(--circular-height,100px);-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:auto;margin-inline-end:auto}.elementor-scrolling-tracker-circular .current-progress-percentage{position:absolute;color:var(--percentage-color,var(--scrolling-track-precentage-default-color))}.elementor-scrolling-tracker-circular svg{position:absolute}.elementor-scrolling-tracker-circular .current-progress{display:none;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;stroke:var(--circular-color,var(--scrolling-track-default-progress-color));fill:transparent;stroke-width:var(--circular-progress-width,4px)}.elementor-scrolling-tracker-circular .circle{stroke:var(--circular-background-color,var(--scrolling-track-default-color));fill:transparent;stroke-width:var(--circular-background-width,4px)}.elementor-scrolling-tracker-alignment-left{margin-left:0;margin-right:auto}.elementor-scrolling-tracker-alignment-center{margin-left:auto;margin-right:auto}.elementor-scrolling-tracker-alignment-right{margin-left:auto;margin-right:0}assets/css/templates/frontend.css000064400001172215150755004310013176 0ustar00@charset "UTF-8";
.elementor-bg-transform .elementor-bg {
  will-change: transform; }

.elementor-bg-transform-zoom-in:hover .elementor-bg {
  transform: scale(1.2); }

.elementor-bg-transform-zoom-out .elementor-bg {
  transform: scale(1.2); }

.elementor-bg-transform-zoom-out:hover .elementor-bg {
  transform: scale(1); }

.elementor-bg-transform-move-left .elementor-bg {
  transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-left:hover .elementor-bg {
  transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right .elementor-bg {
  transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right:hover .elementor-bg {
  transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-up .elementor-bg {
  transform: scale(1.2) translateY(8%); }

.elementor-bg-transform-move-up:hover .elementor-bg {
  transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down .elementor-bg {
  transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down:hover .elementor-bg {
  transform: scale(1.2) translateY(8%); }

/*---------------------------------------------------------------------------*/
.elementor-animated-content {
  --translate: 0, 0; }
  .elementor-animated-content:hover .elementor-animated-item--grow {
    transform: scale(1.1); }
  .elementor-animated-content:hover .elementor-animated-item--shrink {
    transform: scale(0.85); }
  .elementor-animated-content:hover .elementor-animated-item--shrink-contained {
    transform: scale(1); }
  .elementor-animated-content:hover .elementor-animated-item--enter-zoom-out, .elementor-animated-content:hover .elementor-animated-item--enter-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-in {
    transform: scale(1);
    opacity: 1; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out, .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-out {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out {
    transform: scale(0.2); }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in {
    transform: scale(2); }
  .elementor-animated-content:hover .elementor-animated-item--enter-from-right, .elementor-animated-content:hover .elementor-animated-item--enter-from-left, .elementor-animated-content:hover .elementor-animated-item--enter-from-top, .elementor-animated-content:hover .elementor-animated-item--enter-from-bottom {
    opacity: 1;
    transform: translateY(0) translateX(0); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right {
    transform: translateX(1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-left {
    transform: translateX(-1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-top {
    transform: translateY(-600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    transform: translateY(600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right, .elementor-animated-content:hover .elementor-animated-item--exit-to-left, .elementor-animated-content:hover .elementor-animated-item--exit-to-top, .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-right {
    transform: translateX(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-left {
    transform: translateX(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-up {
    transform: translateY(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-down {
    transform: translateY(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-right {
    --translate: 8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-left {
    --translate: -8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-top {
    --translate: 0, -8%; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-bottom {
    --translate: 0, 8%; }
  .elementor-animated-content *[class^="elementor-animated-item"] {
    will-change: transform, opacity; }
  .elementor-animated-content .elementor-animated-item--shrink-contained {
    transform: scale(1.17); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-in {
    transform: scale(0.2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out {
    transform: scale(2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out, .elementor-animated-content .elementor-animated-item--enter-zoom-in, .elementor-animated-content .elementor-animated-item--fade-in {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-zoom-out, .elementor-animated-content .elementor-animated-item--exit-zoom-in, .elementor-animated-content .elementor-animated-item--fade-out {
    opacity: 1;
    transform: scale(1); }
  .elementor-animated-content .elementor-animated-item--enter-from-right {
    transform: translateX(1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-left {
    transform: translateX(-1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-top {
    transform: translateY(-600px); }
  .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    transform: translateY(500px); }
  .elementor-animated-content .elementor-animated-item--enter-from-right, .elementor-animated-content .elementor-animated-item--enter-from-left, .elementor-animated-content .elementor-animated-item--enter-from-top, .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-to-right, .elementor-animated-content .elementor-animated-item--exit-to-left, .elementor-animated-content .elementor-animated-item--exit-to-top, .elementor-animated-content .elementor-animated-item--exit-to-bottom {
    opacity: 1;
    transform: translateY(0) translateX(0); }
  .elementor-animated-content .elementor-animated-item--move-contained-right, .elementor-animated-content .elementor-animated-item--move-contained-left, .elementor-animated-content .elementor-animated-item--move-contained-top, .elementor-animated-content .elementor-animated-item--move-contained-bottom {
    transform: scale(1.2) translate(var(--translate)); }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover {
  outline: 1px solid #fec449; }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings {
  background-image: linear-gradient(to top, #feb416, #fec449); }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover {
    background-color: #feb416; }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save {
    display: none; }

body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  width: 100%;
  padding: 0; }

body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  padding: 0; }

.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart {
  margin: 0;
  display: flex;
  flex-wrap: nowrap; }

.woocommerce div.product.elementor .quantity .qty {
  vertical-align: top;
  margin-right: 0; }

.woocommerce div.product.elementor .quantity + .button {
  margin-left: 10px; }

.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input {
  height: 100%; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
  justify-content: flex-start; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
  justify-content: flex-end; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
  justify-content: center; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
  margin-right: initial; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
  flex-basis: auto; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
  flex-wrap: nowrap; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-right: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
    flex-basis: 100%; }

@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-right: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-right: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      flex-basis: 100%; } }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-right: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-right: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      flex-basis: 100%; } }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button {
  background-color: #5bc0de; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button {
  background-color: #5cb85c; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button {
  background-color: #f0ad4e; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button {
  background-color: #d9534f; }

.elementor-widget-wc-add-to-cart .quantity {
  display: inline-block; }

.elementor-widget-wc-add-to-cart.elementor-align-center form.cart {
  justify-content: center; }

.elementor-widget-wc-add-to-cart.elementor-align-right form.cart {
  justify-content: flex-end; }

.elementor-widget-wc-add-to-cart.elementor-align-left form.cart {
  justify-content: flex-end; }

.woocommerce div.product.elementor {
  /*  Reset WC tabs style  */
  /*  End Reset WC tabs style  */ }
  .woocommerce div.product.elementor ul.tabs:before {
    position: static;
    content: none;
    width: auto;
    bottom: auto;
    left: auto;
    border-bottom: 0;
    z-index: auto; }
  .woocommerce div.product.elementor ul.tabs {
    margin: 0; }
    .woocommerce div.product.elementor ul.tabs li {
      padding: 0; }
      .woocommerce div.product.elementor ul.tabs li a {
        padding: .8em 1.2em;
        line-height: 1; }
    .woocommerce div.product.elementor ul.tabs li:after,
    .woocommerce div.product.elementor ul.tabs li:before {
      border: 0;
      position: static;
      bottom: auto;
      width: auto;
      height: auto;
      content: none;
      box-sizing: border-box; }
  .woocommerce div.product.elementor .woocommerce-tabs .panel {
    margin: 0;
    padding: 20px;
    border-radius: 0;
    border-width: 0;
    border-top: 1px solid #d3ced2;
    box-shadow: none;
    margin-top: -1px; }

.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,
.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins {
  display: block; }

.elementor-widget-woocommerce-product-meta .detail-container {
  position: relative; }
  .elementor-widget-woocommerce-product-meta .detail-container:after {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%; }

.elementor-widget-woocommerce-product-meta .detail-label {
  font-weight: bold; }

.elementor-woo-meta--view-inline .product_meta {
  display: flex;
  flex-wrap: wrap; }
  .elementor-woo-meta--view-inline .product_meta .detail-container:after {
    width: auto;
    left: auto;
    right: auto;
    position: absolute;
    height: 100%;
    top: 50%;
    transform: translateY(-50%);
    border-top: 0;
    border-bottom: 0;
    border-right: 0;
    border-left-width: 1px;
    border-style: solid;
    right: -8px; }

.elementor-woo-meta--view-table .product_meta {
  display: flex;
  flex-direction: column; }
  .elementor-woo-meta--view-table .product_meta .detail-container {
    display: flex; }
  .elementor-woo-meta--view-table .product_meta .detail-label {
    min-width: 108px; }

.elementor-woo-meta--view-stacked .product_meta .detail-container {
  display: block; }

.woocommerce div.product.elementor .woocommerce-product-rating {
  margin-bottom: 0;
  display: flex;
  align-items: center; }

.woocommerce div.product.elementor .star-rating {
  margin-top: 0; }

.elementor-product-rating--align-left .woocommerce-product-rating {
  justify-content: flex-start; }

.elementor-product-rating--align-right .woocommerce-product-rating {
  justify-content: flex-end; }

.elementor-product-rating--align-center .woocommerce-product-rating {
  justify-content: center; }

.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link {
  margin-left: auto; }

.elementor-products-grid ul.products.elementor-grid {
  display: grid;
  margin: 0;
  grid-column-gap: 20px;
  grid-row-gap: 40px; }
  .elementor-products-grid ul.products.elementor-grid:before, .elementor-products-grid ul.products.elementor-grid:after {
    content: none;
    display: none; }
  .elementor-products-grid ul.products.elementor-grid li.product {
    width: auto;
    padding: 0;
    margin: 0;
    float: none; }
    .elementor-products-grid ul.products.elementor-grid li.product .onsale {
      padding: 0;
      display: none; }
    .elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link {
      display: block;
      position: relative; }

.elementor-products-grid:not(.show-heading-yes) .products > h2 {
  display: none; }

.elementor-products-grid nav.woocommerce-pagination {
  margin-top: 40px; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul {
  border: none 0; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li {
  border-right: none 0;
  border-left: none 0; }

.elementor-product-loop-item--align-left ul.products li.product .star-rating {
  margin-right: auto; }

.elementor-product-loop-item--align-right ul.products li.product .star-rating {
  margin-left: auto; }

.elementor-product-loop-item--align-center ul.products li.product .star-rating {
  margin-right: auto;
  margin-left: auto; }

.woocommerce .elementor-element.elementor-products-grid ul.products li.product {
  width: auto; }

.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,
.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product {
  width: auto; }

@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) {
  .elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products {
    grid-template-columns: repeat(2, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products {
    grid-template-columns: repeat(3, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products {
    grid-template-columns: repeat(4, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products {
    grid-template-columns: repeat(5, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products {
    grid-template-columns: repeat(6, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products {
    grid-template-columns: repeat(7, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products {
    grid-template-columns: repeat(8, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products {
    grid-template-columns: repeat(9, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products {
    grid-template-columns: repeat(10, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products {
    grid-template-columns: repeat(11, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products {
    grid-template-columns: repeat(12, 1fr); } }

@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(3, 1fr); } }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(2, 1fr); } }

.elementor.product .woocommerce-product-gallery__trigger + .woocommerce-product-gallery__wrapper {
  overflow: hidden; }

.woocommerce .elementor-widget-woocommerce-product-images span.onsale {
  padding: 0; }

.elementor-menu-cart__wrapper {
  text-align: var(--main-alignment, left); }

.elementor-menu-cart__toggle_wrapper {
  display: inline-block;
  position: relative; }

.elementor-menu-cart__toggle {
  display: inline-block; }
  .elementor-menu-cart__toggle .elementor-button {
    background-color: var(--toggle-button-background-color, transparent);
    color: var(--toggle-button-text-color, #818a91);
    border-style: var(--toggle-button-border-type, solid);
    border-width: var(--toggle-button-border-width, 1px);
    border-color: var(--toggle-button-border-color, #818a91);
    border-radius: var(--toggle-button-border-radius, 0px);
    display: inline-flex;
    align-items: center;
    padding: var(--toggle-icon-padding, 12px 24px); }
    .elementor-menu-cart__toggle .elementor-button:hover {
      color: var(--toggle-button-hover-text-color, #818a91);
      background-color: var(--toggle-button-hover-background-color, transparent);
      border-color: var(--toggle-button-hover-border-color, #818a91); }
      .elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon {
        color: var(--toggle-button-icon-hover-color, #818a91); }
  .elementor-menu-cart__toggle .elementor-button-text {
    margin-right: 0.3em; }
  .elementor-menu-cart__toggle .elementor-button-icon {
    position: relative;
    transition: color 0.1s;
    color: var(--toggle-button-icon-color, #818a91);
    font-size: var(--toggle-icon-size, inherit); }

.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: block;
  position: absolute;
  min-width: 1.6em;
  height: 1.6em;
  line-height: 1.5em;
  top: -0.7em;
  right: -0.7em;
  border-radius: 100%;
  color: var(--items-indicator-text-color, #fff);
  background-color: var(--items-indicator-background-color, #d9534f);
  text-align: center;
  font-size: 10px; }

.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: inline-block;
  font-weight: normal; }

.elementor-menu-cart__container {
  transform: scale(1);
  overflow: hidden;
  position: fixed;
  z-index: 9998;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgba(0, 0, 0, 0.25);
  transition: background-color 0.4s, transform 0s;
  text-align: left; }

.elementor-menu-cart__main {
  position: fixed;
  left: var(--side-cart-alignment-left, auto);
  right: var(--side-cart-alignment-right, 0);
  transform: translateX(0);
  top: 0;
  bottom: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  font-size: 14px;
  min-height: 200px;
  width: 350px;
  max-width: 100%;
  transition: 0.3s;
  padding: var(--cart-padding, 20px 30px);
  background-color: var(--cart-background-color, #fff);
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
  border-style: var(--cart-border-style, none);
  border-color: var(--cart-border-color, initial);
  border-radius: var(--cart-border-radius, 0px);
  margin-top: var(--mini-cart-spacing, 0px); }
  .elementor-menu-cart__main .widget_shopping_cart_content {
    height: 100%;
    display: flex;
    flex-direction: column; }
    .elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message {
      color: var(--empty-message-color, inherit);
      text-align: var(--empty-message-alignment, left); }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
  background-color: transparent;
  transform: scale(0);
  transition: background-color 0.4s, transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button {
    display: none; }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
  overflow: hidden;
  opacity: 0;
  transform: var(--side-cart-alignment-transform, translateX(100%)); }

.elementor-menu-cart__close-button {
  width: var(--cart-close-icon-size, 25px);
  height: var(--cart-close-icon-size, 25px);
  position: relative;
  margin: 0 0 20px;
  align-self: flex-end;
  cursor: pointer;
  display: inline-block;
  font-family: eicons;
  font-size: 20px;
  line-height: 1;
  transition: 0.3s; }
  .elementor-menu-cart__close-button:before, .elementor-menu-cart__close-button:after {
    content: '';
    position: absolute;
    height: 3px;
    width: 100%;
    top: 50%;
    left: 0;
    margin-top: -1px;
    background: var(--cart-close-button-color, #818a91);
    border-radius: 1px;
    transition: 0.3s; }
  .elementor-menu-cart__close-button:hover::before, .elementor-menu-cart__close-button:hover::after {
    background: var(--cart-close-button-hover-color, #818a91); }
  .elementor-menu-cart__close-button::before {
    transform: rotate(45deg); }
  .elementor-menu-cart__close-button::after {
    transform: rotate(-45deg); }

.elementor-menu-cart__products {
  max-height: calc(100vh - 250px);
  overflow: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch; }

.elementor-menu-cart__product {
  display: grid;
  grid-template-columns: 28% auto;
  grid-template-rows: var(--price-quantity-position--grid-template-rows, auto auto);
  position: relative;
  border-width: 0 0 var(--divider-width, 1px);
  border-bottom-style: var(--divider-style, solid);
  border-bottom-color: var(--divider-color, #D4D4D4); }
  .elementor-menu-cart__product .variation {
    display: grid;
    grid-template-columns: max-content auto;
    margin: 10px 0; }
    .elementor-menu-cart__product .variation dt {
      grid-column-start: 1; }
    .elementor-menu-cart__product .variation dd {
      grid-column-start: 2;
      margin-inline-start: 5px; }
      .elementor-menu-cart__product .variation dd p {
        margin-bottom: 0; }
  .elementor-menu-cart__product-image {
    grid-row-start: 1;
    grid-row-end: 3;
    width: 100%; }
    .elementor-menu-cart__product-image img, .elementor-menu-cart__product-image a {
      display: block; }
  .elementor-menu-cart__product-name {
    grid-column-start: 2;
    grid-column-end: 3;
    margin: 0; }
    .elementor-menu-cart__product-name a {
      transition: 0.3s; }
  .elementor-menu-cart__product-price {
    grid-column-start: 2;
    grid-column-end: 3;
    align-self: var(--price-quantity-position--align-self, end);
    font-weight: 300;
    color: var(--product-price-color, #D4D4D4); }
  .elementor-menu-cart__product-name, .elementor-menu-cart__product-price {
    font-size: 14px;
    padding-left: 20px; }
  .elementor-menu-cart__product-remove {
    color: #818a91;
    width: var(--remove-item-button-size, 22px);
    height: var(--remove-item-button-size, 22px);
    border-radius: var(--remove-item-button-size, 22px);
    border: 1px solid var(--remove-item-button-color, #D4D4D4);
    text-align: center;
    overflow: hidden;
    position: absolute;
    right: 0;
    bottom: 20px;
    transition: 0.3s; }
    .elementor-menu-cart__product-remove:hover {
      border: 1px solid var(--remove-item-button-hover-color, #D4D4D4); }
      .elementor-menu-cart__product-remove:hover::before, .elementor-menu-cart__product-remove:hover::after {
        background: var(--remove-item-button-hover-color, #D4D4D4); }
    .elementor-menu-cart__product-remove:before, .elementor-menu-cart__product-remove:after {
      content: '';
      position: absolute;
      height: 1px;
      width: 50%;
      top: 50%;
      left: 25%;
      margin-top: -1px;
      background: var(--remove-item-button-color, #D4D4D4);
      z-index: 1;
      transition: 0.3s; }
    .elementor-menu-cart__product-remove::before {
      transform: rotate(45deg); }
    .elementor-menu-cart__product-remove::after {
      transform: rotate(-45deg); }
    .elementor-menu-cart__product-remove > a {
      display: block;
      z-index: 2;
      width: 100%;
      height: 100%;
      overflow: hidden;
      opacity: 0;
      position: absolute; }
      .elementor-menu-cart__product-remove > a.remove_from_cart_button {
        display: var(--remove-from-cart-button, block); }
      .elementor-menu-cart__product-remove > a.elementor_remove_from_cart_button {
        display: var(--elementor-remove-from-cart-button, none); }

.elementor-menu-cart__product:last-child {
  border: none; }

.elementor-menu-cart__product:not(:first-of-type), .elementor-menu-cart__subtotal, .elementor-menu-cart__footer-buttons {
  padding-top: var(--product-divider-gap, 20px); }

.elementor-menu-cart__product {
  padding-right: 30px; }

.elementor-menu-cart__product, .elementor-menu-cart__subtotal {
  padding-bottom: var(--product-divider-gap, 20px); }

.elementor-menu-cart__subtotal {
  font-size: 20px;
  text-align: var(--menu-cart-subtotal-text-align, center);
  font-weight: 600;
  color: var(--menu-cart-subtotal-color, inherit);
  border-style: var(--subtotal-divider-style, solid);
  border-width: var(--subtotal-divider-top-width, 1px) var(--subtotal-divider-right-width, 1px) var(--subtotal-divider-bottom-width, 1px) var(--subtotal-divider-left-width, 1px);
  border-color: var(--subtotal-divider-color, #D4D4D4); }

.elementor-menu-cart__footer-buttons {
  font-size: 20px;
  text-align: var(--cart-footer-buttons-alignment-text-align, center);
  display: var(--cart-footer-buttons-alignment-display, grid);
  grid-template-columns: var(--cart-footer-layout, 1fr 1fr);
  margin-top: var(--cart-buttons-position-margin, 0);
  grid-column-gap: var(--space-between-buttons, 10px);
  grid-row-gap: var(--space-between-buttons, 10px); }
  .elementor-menu-cart__footer-buttons .elementor-button {
    display: inline-block;
    border-radius: var(--cart-footer-buttons-border-radius, 0px);
    height: fit-content; }
    .elementor-menu-cart__footer-buttons .elementor-button--view-cart {
      display: var(--view-cart-button-display, inline-block);
      color: var(--view-cart-button-text-color, #fff);
      padding: var(--view-cart-button-padding, 15px);
      background-color: var(--view-cart-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover {
        color: var(--view-cart-button-hover-text-color, #fff);
        background-color: var(--view-cart-button-hover-background-color, #818a91); }
    .elementor-menu-cart__footer-buttons .elementor-button--checkout {
      display: var(--checkout-button-display, inline-block);
      color: var(--checkout-button-text-color, #fff);
      padding: var(--checkout-button-padding, 15px);
      background-color: var(--checkout-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--checkout:hover {
        color: var(--checkout-button-hover-text-color, #fff);
        background-color: var(--checkout-button-hover-background-color, #818a91); }
    @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
      .elementor-menu-cart__footer-buttons .elementor-button {
        padding-left: 10px;
        padding-right: 10px; } }

/* The following is all to apply settings from the controls */
.elementor-widget-woocommerce-menu-cart {
  /* Fix to prevent the cart modal flash when using the typography controls */
  /* Fix for short-lived legacy cart type */ }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before {
    content: none; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e3'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e4'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e5'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e6'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e7'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e8'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e9'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8ea'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8eb'; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product {
    padding-left: 0;
    padding-right: 0;
    grid-template-columns: 25% auto; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove {
    top: 0;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove {
    top: 20px;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove {
    transform: translateY(50%);
    bottom: 50%; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove {
    top: auto;
    bottom: 20px; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart {
    /* The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
			and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
      position: absolute;
      z-index: 89;
      width: auto;
      height: auto;
      overflow: visible;
      top: 100%;
      bottom: auto;
      background: none;
      min-width: 330px;
      left: 0;
      right: auto;
      transform: scale(1);
      transition: background-color 0.4s, transform 0s; }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main {
      width: auto;
      height: auto;
      position: relative;
      top: auto;
      bottom: auto;
      right: auto;
      left: auto;
      overflow: visible;
      transform: translateY(0);
      transition: 0.3s; }
    @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
      .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
        min-width: 300px; } }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
    transform: scale(0);
    transition: background-color 0.4s, transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
    opacity: 0;
    transform: translateY(-10px); }
  .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown {
    opacity: 1;
    /* This keeps mini-cart panels above other widgets so there's no flash when using the typography controls.
		The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
		and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container {
      z-index: 9998; }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart {
      z-index: 89; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container {
    display: none; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-checkout-page {
  background-color: transparent;
  font-family: Roboto, sans-serif;
  font-size: 14px;
  line-height: 21px;
  color: #818a91;
  /* one column layout */
  /* override theme defaults for themes that have hover background colors on these elements. The hover background colors do not play well with the widget's initial design. */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-checkout-page ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > td,
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > th {
    background-color: transparent; }
  .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: #f7f7f7;
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: #f7f7f7;
      border-color: var(--forms-fields-focus-border-color, initial);
      transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below {
    background-color: #f7f7f7; }
  .elementor-widget-woocommerce-checkout-page .e-description {
    color: var(--sections-descriptions-color, #818a91);
    padding-bottom: var(--sections-descriptions-spacing, 0px);
    font-size: 14px;
    font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section {
    margin-bottom: 24px; }
    .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title {
      text-align: var(--login-title-alignment, left); }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge {
    margin-top: var(--sections-secondary-title-spacing, 24px);
    margin-bottom: 15px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor {
    margin-top: var(--sections-secondary-title-spacing, 24px); }
  .elementor-widget-woocommerce-checkout-page .e-coupon-box {
    margin-top: 24px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description {
    color: var(--forms-labels-color, #818a91);
    margin-bottom: var(--forms-label-spacing, 3px); }
  .elementor-widget-woocommerce-checkout-page .e-login-wrap {
    display: flex;
    align-items: center; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-start {
      flex: 75%; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
      flex: 20%;
      text-align: right; }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-checkout-page .e-login-wrap {
        display: block; }
        .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
          text-align: left;
          margin-top: 15px; }
          .elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label {
            display: none; } }
  .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap {
    display: flex;
    justify-content: space-between;
    margin-top: 6px; }
    .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
      margin-bottom: 0;
      font-size: 12px; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
          font-size: 11px; } }
  .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
    width: 90%;
    /* 90% to match the design */ }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
        width: auto; } }
  .elementor-widget-woocommerce-checkout-page .e-checkout__container {
    display: grid;
    flex-wrap: wrap;
    grid-template-columns: 56% auto;
    /* column widths - to match the design */
    align-items: stretch;
    grid-column-gap: var(--sections-margin, 24px);
    grid-row-gap: var(--sections-margin, 24px); }
  @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
    .elementor-widget-woocommerce-checkout-page .e-checkout__container {
      grid-template-columns: repeat(1, 1fr); } }
  .elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title {
    color: var(--sections-secondary-title-color, #818a91);
    margin-bottom: 0; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge {
    text-align: var(--coupon-title-alignment, left); }
  .elementor-widget-woocommerce-checkout-page #ship-to-different-address {
    margin-top: 13px;
    padding-left: var(--shipping-heading-padding-start, 30px); }
    .elementor-widget-woocommerce-checkout-page #ship-to-different-address span {
      font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-checkout-page a:hover {
      color: var(--links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-checkout-page .woocommerce {
    /* Need to use these specific selectors to override WooCommerce CSS */
    /* Need the <button> selector here so that we can target .woocommerce-button
		without being overwritten by WooCommerce's button.button selector.
		We are also targeting .woocommerce-button because none of this styling should
		apply to the Purchase button. Only The Login/Apply coupon button. */
    /* Main Sections styling start */
    /* Main Sections styling end */
    /* Styling for everything classified as 'Messages' start */
    /* Styling for everything classified as 'Messages' end */ }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      padding-left: var(--forms-columns-gap-padding, 0px);
      padding-right: var(--forms-columns-gap-padding, 0px);
      margin-left: var(--forms-columns-gap-margin, 0px);
      margin-right: var(--forms-columns-gap-margin, 0px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label {
        color: var(--forms-labels-color, #818a91);
        margin-bottom: var(--forms-label-spacing, 3px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea {
        color: var(--forms-fields-normal-color, #818a91);
        background-color: #f7f7f7;
        border-radius: var(--forms-fields-border-radius, 0px);
        padding: var(--forms-fields-padding, 16px);
        font-size: 14px;
        border: none;
        font-weight: 400; }
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus {
          color: var(--forms-fields-focus-color, #818a91);
          background-color: #f7f7f7;
          border-color: var(--forms-fields-focus-border-color, #818a91);
          transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field {
      margin-bottom: 5px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .create-account,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      /* need to use !important here to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 0 !important; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .input-radio,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span {
      position: relative;
      top: 2px;
      color: var(--sections-checkboxes-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label {
      display: inline; }
    .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #6F6F6F);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: 1rem;
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover {
        color: var(--forms-buttons-hover-text-color, #6F6F6F);
        transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
      margin-right: 1%; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
          width: 100%;
          margin-right: 0;
          margin-bottom: 15px; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-info {
      border-top-color: transparent;
      background-color: transparent;
      padding: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p {
      font-weight: 400;
      font-size: 12px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info {
      font-weight: 400;
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment,
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      background: var(--sections-background-color, #ffffff);
      border-radius: var(--sections-border-radius, 3px);
      padding: var(--sections-padding, 16px 30px);
      margin: var(--sections-margin, 0 0 24px 0);
      border-style: var(--sections-border-type, solid);
      border-color: var(--sections-border-color, #D4D4D4);
      border-width: 1px;
      display: block; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      display: var(--additional-information-display, none); }
    @media (min-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
        margin: var(--sections-margin, 0); } }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message {
      color: var(--sections-messages-color, #818a91);
      font-weight: 400; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p {
      margin-top: 25px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1 {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2 {
      padding-top: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading {
      text-align: var(--order-review-title-alignment, left); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table {
      margin-bottom: 0;
      border: 0;
      font-size: 14px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead {
        background-color: transparent; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th {
          padding-top: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td {
        color: #000000; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity {
          font-weight: normal; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td {
        color: #818a91; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th {
        border: 0;
        padding-left: 0;
        padding-bottom: 15px;
        padding-top: 15px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td {
        padding-bottom: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td {
      font-weight: 400;
      color: var(--order-summary-items-color, #000000);
      border-bottom-color: var(--order-summary-items-divider-color, #818a91);
      border-bottom-width: var(--order-summary-items-divider-weight, 0px);
      border-bottom-style: solid; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name {
        padding-right: 40px;
        max-width: 150px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total {
        vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th {
      padding-top: var(--order-summary-rows-gap-top, 15px);
      padding-bottom: var(--order-summary-rows-gap-bottom, 15px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th {
      color: var(--order-summary-totals-color, #818a91);
      vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th {
      border-top-color: var(--order-summary-totals-divider-color, #818a91);
      border-top-width: var(--order-summary-totals-divider-weight, 0px);
      border-top-style: solid; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td {
      max-width: 70px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce h3 {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      margin-bottom: var(--sections-title-spacing, 30px);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row > span {
      font-weight: 400;
      font-size: 14px;
      margin-bottom: 3px;
      color: #818a91; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
      /* use 48% to match the design. Default WC CSS uses 47% */
      width: 48%; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3 {
      text-align: var(--billing-details-title-alignment, left); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row {
      margin-bottom: var(--forms-rows-gap, 5px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child {
        margin-bottom: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login {
      margin-top: -8px;
      z-index: 999;
      background: #ffffff;
      border-top-width: 0;
      position: relative;
      margin-bottom: 0;
      color: #818a91; }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
        width: 100%; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle {
      display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
      width: 85%;
      /* 85% to match the design */ }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
          width: 35%;
          /* 35% to match the design */ } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3 {
      background: var(--additional-fields-title-alignment, left); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address {
      margin-bottom: var(--sections-margin, 20px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment {
      margin-top: 24px;
      padding: 15px 25px 25px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods {
        border-bottom: none;
        padding: 0; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box {
          background-color: #f7f7f7; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before {
            display: none; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li {
          line-height: 21px; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
            padding-left: 15px;
            font-size: 12px; }
            @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
              .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
                float: none;
                font-size: 11px;
                padding-left: 10px; } }
          @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
            .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img {
              width: 55px;
              /* 55px to match the design */ } }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order {
        display: flex;
        flex-direction: column;
        flex-wrap: wrap;
        padding: 0;
        margin-bottom: 0;
        align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order {
        background-color: #5bc0de;
        width: var(--purchase-button-width, auto);
        float: none;
        color: var(--purchase-button-normal-text-color, #ffffff);
        min-height: auto;
        padding: var(--purchase-button-padding, 1em 1em);
        border-radius: var(--purchase-button-border-radius, 3px); }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover {
          background-color: #5bc0de;
          color: var(--purchase-button-hover-text-color, #ffffff);
          border-color: var(--purchase-button-hover-border-color, #5bc0de);
          transition-duration: var(--purchase-button-hover-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before {
        display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2 {
      width: auto;
      float: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
      display: grid;
      grid-template-columns: auto auto;
      /*columns widths*/
      align-items: center; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
        text-align: right; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
          display: block; }
          .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
            text-align: left; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field {
      /* need to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 10px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000);
      /* We need to specify these values so that the 'Items' Typography control does not affect
			the 'Variations' */
      font-size: 14px;
      font-style: normal;
      text-transform: none;
      letter-spacing: normal;
      text-decoration: none;
      line-height: 21px; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-cart {
  /* one column layout */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart table tbody tr:hover > td,
  .elementor-widget-woocommerce-cart table tbody tr:hover > th {
    background-color: inherit; }
  .elementor-widget-woocommerce-cart .e {
    /* .e-clear is a class that is added between the cart sections to fix collapsing margins,
		especially when custom margins are being set by the Style Controls, then the margins could
		start overriding the other margin, leaving one margin */ }
    .elementor-widget-woocommerce-cart .e-clear {
      overflow: hidden;
      height: 0;
      width: 0; }
    .elementor-widget-woocommerce-cart .e-cart {
      /* Main sections styling start */
      /* Main sections styling end */
      /* one column layout */ }
      .elementor-widget-woocommerce-cart .e-cart-section {
        background-color: var(--sections-background-color, #ffffff);
        padding: var(--sections-padding, 16px 30px);
        margin: var(--sections-margin, 0 0 30px 0);
        border-radius: var(--sections-border-radius, 3px);
        border-width: 1px;
        border-style: var(--sections-border-type, solid);
        border-color: var(--sections-border-color, #D4D4D4); }
      @media (min-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-cart .e-cart-section:last-child {
          margin: var(--sections-margin, 0); } }
      .elementor-widget-woocommerce-cart .e-cart-content {
        color: var(--sections-descriptions-color, #818a91);
        font-size: 15px;
        font-weight: 400;
        line-height: 23px;
        letter-spacing: 0; }
      .elementor-widget-woocommerce-cart .e-cart__container {
        display: grid;
        flex-wrap: wrap;
        grid-template-columns: 59% auto;
        /* 59% to match the required design */
        align-items: stretch;
        grid-column-gap: var(--sections-margin, 30px);
        grid-row-gap: var(--sections-margin, 30px); }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-cart .e-cart__container {
          grid-template-columns: repeat(1, 1fr); } }
      .elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container {
        grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart .select2-container {
    margin-bottom: 4px; }
    .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 0px);
      border: none;
      height: 45px; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, initial);
        transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder {
        color: var(--forms-fields-normal-color, #818a91); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered {
        color: var(--forms-fields-normal-color, #818a91);
        line-height: 45px;
        padding-left: 1rem;
        padding-right: 1rem; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow {
        height: 45px; }
    .elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below {
      background-color: #f7f7f7; }
  .elementor-widget-woocommerce-cart .woocommerce {
    font-family: Roboto, sans-serif; }
    .elementor-widget-woocommerce-cart .woocommerce button.button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #818a91);
      border-radius: var(--forms-buttons-border-radius, 3px);
      /* 0.88rem is used here so that this button will match the design layout from Product. */
      padding: var(--forms-buttons-padding, 0.88rem 2rem);
      width: var(--forms-buttons-width, auto);
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-cart .woocommerce button.button:hover {
        color: var(--forms-buttons-hover-text-color, #818a91);
        transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
        border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce button.button.disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled] {
        /* 0.88rem is used here so that this button will match the design layout from Product. */
        padding: var(--forms-buttons-padding, 0.88rem 2rem);
        color: var(--forms-buttons-normal-text-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover {
          background-color: var(--forms-buttons-hover-background-color, #ffffff);
          color: var(--forms-buttons-hover-text-color, #818a91);
          transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
          border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form {
      margin-top: var(--sections-descriptions-spacing, 15px); }
    .elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination {
      color: var(--sections-descriptions-color, #818a91);
      margin-bottom: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td {
      text-align: left !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before {
        width: 100%;
        margin-bottom: 10px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td {
      text-align: right !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td::before {
        content: attr(data-title);
        font-weight: 700;
        float: left; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      text-align: var(--totals-title-alignment, left); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td {
      padding-top: var(--totals-rows-gap-top, 12px);
      padding-bottom: var(--totals-rows-gap-bottom, 9px); }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before,
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount {
        color: var(--totals-color, #818a91);
        font-weight: 700; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td {
      border-top-color: var(--totals-divider-color, #818a91);
      border-top-width: var(--totals-divider-weight, 0); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row {
      margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-cart .woocommerce .product-name a {
      color: var(--product-link-normal-color, #000000); }
      .elementor-widget-woocommerce-cart .woocommerce .product-name a:hover {
        color: var(--product-link-hover-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .form-row {
      padding: 3px 0;
      margin: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .input-text,
    .elementor-widget-woocommerce-cart .woocommerce select {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 3px);
      border: none;
      padding: var(--forms-fields-padding, 16px);
      font-size: 14px; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text:focus,
      .elementor-widget-woocommerce-cart .woocommerce select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, transparent);
        transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce .input-text.qty {
      background-color: transparent;
      color: var(--order-summary-color, #000000);
      border-width: var(--order-summary-quantity-border-weight, 1px);
      border-style: solid;
      border-color: var(--order-summary-quantity-border-color, #D4D4D4);
      border-radius: 3px;
      padding: 1px 2px;
      text-align: left;
      font-size: 14px;
      min-height: 28px;
      max-height: 28px; }
    .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout {
      padding-bottom: 0;
      display: flex;
      flex-direction: column;
      flex-wrap: wrap;
      align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button {
        padding: var(--checkout-button-padding, 15px 1em);
        width: var(--checkout-button-width, auto);
        font-size: 15px;
        text-align: center;
        color: var(--checkout-button-normal-text-color, #ffffff);
        background-color: #5bc0de;
        border-radius: var(--checkout-button-border-radius, 3px);
        min-height: auto;
        margin-bottom: 0; }
        .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover {
          color: var(--checkout-button-hover-text-color, #ffffff);
          background-color: #5bc0de;
          border-color: var(--checkout-button-hover-border-color, #5bc0de);
          transition-duration: var(--checkout-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-cart .woocommerce .remove {
      background: transparent;
      color: var(--order-summary-remove-icon-normal-color, #000000) !important;
      /* need important here because Woo also has !important */
      width: auto; }
      .elementor-widget-woocommerce-cart .woocommerce .remove:hover {
        background: transparent;
        color: var(--order-summary-remove-icon-hover-color, #5bc0de) !important;
        /* need important here because Woo also has !important */ }
    .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals {
      float: none;
      width: 100%; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td {
        padding-left: 0; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td {
        padding-right: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
      float: right;
      width: 100%; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .form-row {
      padding: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
      display: flex; }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
        flex: 2;
        padding-right: 30px; }
        @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
          .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
            padding-right: 0; } }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-end {
        flex: 1; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
          display: block; } }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-cart .woocommerce .coupon {
        margin: var(--sections-margin, 0); }
        .elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code {
          width: 100%;
          margin-right: 0;
          margin-bottom: 15px; }
        .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
          width: 100%; } }
    .elementor-widget-woocommerce-cart .woocommerce table.shop_table {
      border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
        float: left;
        font-size: 14px;
        font-weight: 700; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
          float: none;
          width: 100%; } }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table th {
        border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions {
        padding: 16px 0 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a {
        display: inline-block; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child {
        display: var(--update-cart-automatically-display, table-row); }
    .elementor-widget-woocommerce-cart .woocommerce table.cart {
      margin-bottom: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart img {
        width: 55px;
        height: auto;
        display: block; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-top: var(--order-summary-rows-gap-top, 20px);
        padding-right: 20px;
        padding-bottom: var(--order-summary-rows-gap-bottom, 20px);
        padding-left: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td span {
          color: var(--order-summary-color, #000000);
          font-size: 14px;
          font-weight: 400; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
          border-top-width: var(--order-summary-items-divider-weight, 1px);
          border-top-style: solid;
          border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
          @media (max-width: ELEMENTOR_SCREEN_TABLET_MIN) {
            .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
              border-top-width: 0; } }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove {
          padding-left: 0;
          padding-right: 0; }
      @media (min-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
        .elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td {
          border-top: none; } }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove {
        position: relative; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-name {
        padding-right: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
        border-top-width: var(--order-summary-items-divider-weight, 1px);
        border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
          border-top: none; } }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MIN) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-left: 0;
        padding-right: 0; } }
    @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart {
        padding: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
          padding: 16px 28px; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
            border-top: none; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td {
          padding-left: 0;
          padding-right: 0; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
            padding: 0; } }
    .elementor-widget-woocommerce-cart .woocommerce a {
      color: var(--links-normal-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce a:hover {
        color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      padding-top: 0;
      padding-bottom: 8px;
      padding-left: 0;
      padding-right: 20px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      margin-bottom: var(--sections-title-spacing, 1rem);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      padding-bottom: var(--order-summary-title-spacing, 8px);
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart td::before {
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button::after {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000); }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td, .elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td {
        padding-left: 0; } }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: var(--forms-fields-normal-color, #818a91); }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: var(--forms-fields-focus-color, #818a91);
    border-color: var(--forms-fields-focus-border-color, #818a91);
    transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }

.elementor-widget-woocommerce-my-account {
  font-family: Roboto, sans-serif;
  color: #818a91;
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table {
    border: none;
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    background-color: var(--sections-background-color, #ffffff); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px 3px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,
  .elementor-widget-woocommerce-my-account .e-my-account-tab address {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content {
    border: 0; }
    .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
      padding: 0;
      border: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    margin-bottom: 40px; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads,
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px 3px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content > div > p {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: var(--forms-fields-normal-background-color, #f7f7f7);
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: var(--forms-fields-focus-background-color, #f7f7f7);
      border-color: var(--forms-fields-focus-border-color, initial);
      transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below {
    background-color: var(--forms-fields-normal-background-color, #f7f7f7); }
  .elementor-widget-woocommerce-my-account .woocommerce ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce-message {
    font-size: 14px; }
  .elementor-widget-woocommerce-my-account .woocommerce address {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a:hover {
      color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover {
      background-color: initial; }
    .elementor-widget-woocommerce-my-account .woocommerce a.button:hover {
      background-color: initial; }
  .elementor-widget-woocommerce-my-account .woocommerce em {
    font-size: 12px;
    color: var(--login-messages-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .form-row {
    padding-left: var(--forms-columns-gap-padding-left, 0px);
    padding-right: var(--forms-columns-gap-padding-right, 0px);
    margin-left: var(--forms-columns-gap-margin-left, 0px);
    margin-right: var(--forms-columns-gap-margin-right, 0px);
    margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row label {
      color: var(--forms-labels-color, #818a91);
      margin-bottom: var(--forms-label-spacing, 0px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,
    .elementor-widget-woocommerce-my-account .woocommerce .form-row select {
      color: var(--forms-fields-normal-color, #818a91);
      border-radius: var(--forms-fields-border-radius, 0px);
      padding: var(--forms-fields-padding, 16px);
      background: #f7f7f7;
      border: none;
      font-size: 14px; }
      .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,
      .elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        border-color: var(--forms-fields-focus-border-color, #818a91);
        transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field {
    margin-bottom: 5px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text {
    margin-bottom: 15px;
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword {
    font-size: 12px;
    margin-bottom: 0px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    width: 50%;
    /* 50% to match the design - it would normally be full width */ }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p {
      color: var(--general-text-color, #818a91); }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first {
      width: 100%; }
  .elementor-widget-woocommerce-my-account .woocommerce .login,
  .elementor-widget-woocommerce-my-account .woocommerce .register,
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px);
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .login .button,
    .elementor-widget-woocommerce-my-account .woocommerce .register .button,
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button {
      background: #5bc0de;
      border: none;
      color: var(--forms-buttons-normal-text-color, #ffffff);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: var(--forms-buttons-padding, 12px 32px); }
      .elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover {
        color: var(--forms-buttons-hover-text-color, #ffffff);
        transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3) {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    margin-top: 10px;
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox {
    vertical-align: middle; }
  .elementor-widget-woocommerce-my-account .woocommerce p:last-of-type {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span {
    color: var(--checkboxes-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tr,
  .elementor-widget-woocommerce-my-account .woocommerce td,
  .elementor-widget-woocommerce-my-account .woocommerce th {
    border: none; }
  .elementor-widget-woocommerce-my-account .woocommerce h2,
  .elementor-widget-woocommerce-my-account .woocommerce h3 {
    color: var(--typography-section-titles-color, #000000);
    margin-top: 0;
    margin-bottom: var(--section-title-spacing, 45px);
    font-weight: 400; }
  .elementor-widget-woocommerce-my-account .woocommerce strong {
    color: var(--general-text-color, #000000); }
    .elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label {
      color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta {
    color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .product-quantity {
    font-weight: 400;
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
    float: left;
    width: 25%;
    /* 25% to match the design */ }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul {
      padding-inline-start: 0; }
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li {
        list-style-type: none;
        margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
        display: inline-block;
        width: 100%;
        /* add a Divider between the tabs that is outside of the margins */ }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li::after {
          content: "";
          display: block;
          width: 100%;
          background-color: var(--tabs-divider-color, #818a91);
          height: var(--tabs-divider-weight, 0px);
          position: relative;
          top: calc(var(--tabs-spacing, 2px) / 2); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a {
          color: var(--tabs-active-color, #5bc0de);
          background: #eceeef;
          border-color: var(--tabs-active-border-color, transparent); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
          font-style: normal;
          font-weight: bold;
          font-size: 14px;
          color: var(--tabs-normal-color, #818a91);
          display: block;
          padding: var(--tabs-padding, 12px 20px);
          text-align: var(--tabs-alignment, start);
          background: #f7f7f7;
          border-radius: var(--tabs-border-radius, 0px);
          border-style: var(--tabs-border-type, solid);
          border-color: var(--tabs-border-color, transparent);
          border-width: 0px; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover {
            color: var(--tabs-hover-color, #5bc0de);
            border-color: var(--tabs-hover-border-color, transparent); }
          @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
            .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
              padding: var(--tabs-padding, 10px); } }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard {
          margin-top: 0; }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout {
          margin-bottom: 0; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout::after {
            display: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
    float: right;
    width: 75%;
    /* 75% to match the design */
    padding: 0;
    padding-left: var(--tab-content-spacing, 6%);
    /* 6% to match the design */ }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
        width: 100%;
        padding: var(--tab-content-spacing, 6%) 0 0 0; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper {
      font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type {
      margin-top: 30px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark {
      background-color: transparent;
      font-weight: bold;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child th,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child th {
    border-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th {
    border-top: 0;
    padding-left: 0;
    padding-top: 0;
    padding-bottom: var(--tables-titles-spacing, 9px); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > th,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > th {
    background-color: transparent;
    padding-left: 0;
    padding-top: var(--order-summary-rows-gap-top, 9px);
    padding-bottom: var(--order-summary-rows-gap-bottom, 9px);
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .shop_table {
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table td, .elementor-widget-woocommerce-my-account .woocommerce .shop_table th {
      border-top-style: var(--tables-divider-border-type, solid);
      border-top-width: var(--tables-divider-border-width, 1px);
      border-top-color: var(--tables-divider-border-color, #D4D4D4); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th {
      color: var(--tables-title-color, #000000); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span {
        color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td {
    padding-left: 0;
    color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td {
    border-top: none;
    padding-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .order-again .button {
    background: transparent;
    border: 2px solid #5bc0de;
    border-style: var(--tables-buttons-border-type, solid);
    border-color: var(--tables-buttons-border-color, #5bc0de);
    border-width: 2px;
    border-radius: var(--tables-button-border-radius, 3px);
    vertical-align: middle;
    color: var(--tables-button-normal-text-color, #818a91);
    margin-top: 0;
    margin-bottom: 0;
    padding: var(--tables-button-padding, 12px 32px); }
    .elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover {
      color: var(--tables-button-hover-text-color, #818a91);
      transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .title h3, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3 {
    float: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-Address address, .elementor-widget-woocommerce-my-account .woocommerce-Addresses address {
    padding: var(--sections-padding, 45px 30px 16px 30px); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .edit, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit {
    float: left;
    position: absolute;
    margin-left: var(--edit-link-margin-start, 30px);
    margin-top: var(--edit-link-margin-top, 10px); }
  .elementor-widget-woocommerce-my-account .woocommerce .u-columns {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset {
    border: none;
    padding: 0;
    margin-inline-start: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend {
      font-weight: 700;
      padding: 20px 0;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button {
    background: #5bc0de;
    border: none;
    color: var(--forms-buttons-normal-text-color, #ffffff);
    border-radius: var(--forms-buttons-border-radius, 3px);
    padding: var(--forms-buttons-padding, 12px 32px);
    margin-top: 20px; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover {
      color: var(--forms-buttons-hover-text-color, #ffffff);
      transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-pagination {
    padding: 16px 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-pagination .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td {
    vertical-align: top;
    line-height: unset; }

.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  float: none;
  width: 100%; }
  .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
    display: inline-block; }

.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation {
  display: block; }

.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: block; }
  .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    justify-content: var(--tabs-container-justify-content, space-between); }
    @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
        display: block; } }
    .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
      display: inline-block;
      width: var(--tab-width, 100%);
      padding: 0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);
      margin: 0;
      border-right-color: var(--tabs-divider-color, #818a91);
      border-right-width: var(--tabs-divider-weight, 0px);
      border-right-style: solid; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li::after {
        display: none; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type {
        padding-left: 0; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type {
        padding-right: 0;
        border-right-width: 0; }
      @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
        .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
          margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
          display: inline-block;
          width: 100%; } }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-content {
  float: none;
  width: 100%;
  padding: var(--tab-content-spacing, 50px) 0 0 0; }

/**
 * Specific styling in the Editor.
 */
.elementor-editor-active,
.elementor-editor-preview {
  /**
	 * Prep for the js switching of tabs when in the editor.
	 */
  /**
	 * Disable all but the first 'View' order button as
	 * this is the only order loaded for preview purposes.
	 */ }
  .elementor-editor-active .elementor-widget-container,
  .elementor-editor-preview .elementor-widget-container {
    min-height: 1px; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a {
    pointer-events: none; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button {
    pointer-events: none;
    opacity: .3; }

/**
 * Hide all the other My Account pages' content in the Editor except the first one - dashboard page
 */
.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type) {
  display: none; }

.product .count {
  background-color: inherit; }

.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2 {
  display: none; }

.woocommerce div.product.elementor form.cart div.product-addon {
  flex-basis: 100%;
  flex-shrink: 0; }

.e-sticky-right-column--active {
  position: sticky;
  top: 0; }

.elementor-theme-builder-content-area {
  height: 400px; }

.elementor-location-header:before,
.elementor-location-footer:before {
  content: '';
  display: table;
  clear: both; }

.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post {
  display: block; }

.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid {
  color: #D4D4D4;
  border: none;
  border-top: 1px solid;
  border-bottom: 1px solid;
  padding-top: 10px;
  padding-bottom: 10px; }

.elementor-post-navigation-borders-yes .elementor-post-navigation__separator {
  height: 100%;
  width: 1px;
  margin: 0 auto;
  background-color: #D4D4D4; }

.elementor-post-navigation {
  overflow: hidden;
  display: flex; }
  .elementor-post-navigation .post-navigation__arrow-wrapper {
    color: #D4D4D4; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev {
      font-size: 30px;
      padding-right: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next {
      font-size: 30px;
      padding-left: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper i {
      transform: translateY(-5%); }
  .elementor-post-navigation .elementor-post-navigation__link__prev, .elementor-post-navigation .elementor-post-navigation__link__next {
    overflow: hidden; }
  .elementor-post-navigation .elementor-post-navigation__link a {
    display: flex;
    align-items: center;
    max-width: 100%; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__next--label {
    text-transform: uppercase;
    font-size: 0.8em; }
  .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--title {
    font-size: 0.7em; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--label, .elementor-post-navigation .post-navigation__next--title {
    overflow: hidden;
    text-overflow: ellipsis; }
  .elementor-post-navigation span.elementor-post-navigation__link__next {
    text-align: right; }
  .elementor-post-navigation span.elementor-post-navigation__link__next, .elementor-post-navigation span.elementor-post-navigation__link__prev {
    display: flex;
    flex-direction: column; }

.elementor-post-navigation .elementor-grid {
  justify-content: space-between; }

.elementor-post-navigation .elementor-post-navigation__link {
  width: calc( 50% - ( 1px / 2 ));
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis; }

.elementor-post-navigation .elementor-post-navigation__separator-wrapper {
  text-align: center; }

.elementor-post-navigation .elementor-post-navigation__next {
  text-align: right; }
  .elementor-post-navigation .elementor-post-navigation__next a {
    float: right; }

.elementor-search-form {
  display: block;
  transition: 0.2s;
  /*------ Reset ------*/ }
  .elementor-search-form .e-font-icon-svg-container {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center; }
  .elementor-search-form input[type="search"], .elementor-search-form button {
    margin: 0;
    border: 0;
    padding: 0;
    display: inline-block;
    vertical-align: middle;
    white-space: normal;
    background: none;
    line-height: 1;
    min-width: 0;
    font-size: 15px;
    -webkit-appearance: none;
    -moz-appearance: none; }
    .elementor-search-form input[type="search"]:focus, .elementor-search-form button:focus {
      outline: 0;
      color: inherit; }
  .elementor-search-form button {
    background-color: #818a91;
    font-size: var(--e-search-form-submit-icon-size, 16px);
    color: #fff;
    border-radius: 0; }
  .elementor-search-form__container {
    display: flex;
    transition: 0.2s;
    overflow: hidden;
    border: 0 solid transparent;
    min-height: 50px; }
    .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      background: #eceeef; }
  .elementor-search-form__input {
    flex-basis: 100%;
    color: #55595c;
    transition: color 0.2s; }
    .elementor-search-form__input::-webkit-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-ms-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
  .elementor-search-form__submit {
    transition: color 0.2s, background 0.2s;
    font-size: var(--e-search-form-submit-icon-size, 16px); }
    .elementor-search-form__submit svg {
      fill: var(--e-search-form-submit-text-color, #fff);
      width: var(--e-search-form-submit-icon-size, 16px);
      height: var(--e-search-form-submit-icon-size, 16px); }
  .elementor-search-form .elementor-search-form__submit, .elementor-search-form .elementor-search-form__submit:hover {
    color: var(--e-search-form-submit-text-color, #fff);
    border: none;
    border-radius: 0; }
  .elementor-search-form--button-type-text .elementor-search-form__submit {
    flex-shrink: 0; }
  .elementor-search-form--skin-minimal .elementor-search-form__icon {
    opacity: 0.6;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    color: #55595c;
    fill: #55595c;
    font-size: var(--e-search-form-icon-size-minimal, 15px); }
    .elementor-search-form--skin-minimal .elementor-search-form__icon svg {
      width: var(--e-search-form-icon-size-minimal, 15px);
      height: var(--e-search-form-icon-size-minimal, 15px); }
  .elementor-search-form--skin-full_screen .elementor-search-form input[type="search"].elementor-search-form__input {
    font-size: 50px;
    text-align: center;
    border-style: solid;
    border-width: 0 0 1px 0;
    border-color: #fff;
    line-height: 1.5;
    color: #fff; }
  .elementor-search-form--skin-full_screen .elementor-search-form__toggle {
    display: inline-block;
    cursor: pointer;
    vertical-align: middle;
    color: var(--e-search-form-toggle-color, #494c4f);
    font-size: var(--e-search-form-toggle-size, 33px); }
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle i,
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container {
      position: relative;
      display: block;
      transition: 0.2s;
      width: var(--e-search-form-toggle-size, 33px);
      height: var(--e-search-form-toggle-size, 33px);
      background-color: var(--e-search-form-toggle-background-color, rgba(0, 0, 0, 0.05));
      border-style: solid;
      border-color: var(--e-search-form-toggle-color, #494c4f);
      border-width: var(--e-search-form-toggle-border-width, 0);
      border-radius: var(--e-search-form-toggle-border-radius, 3px); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before {
        font-size: var(--e-search-form-toggle-icon-size, 0.55em); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        fill: var(--e-search-form-toggle-color, #494c4f);
        width: var(--e-search-form-toggle-icon-size, 0.55em);
        height: var(--e-search-form-toggle-icon-size, 0.55em); }
  .elementor-search-form--skin-full_screen .elementor-search-form__container {
    transition: 0.3s;
    align-items: center;
    position: fixed;
    z-index: 9998;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    height: 100vh;
    padding: 0 15%;
    background-color: rgba(0, 0, 0, 0.8); }
    .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      overflow: hidden;
      opacity: 0;
      transform: scale(0); }
      .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button {
        display: none; }

.elementor-author-box {
  display: flex;
  align-items: center; }
  .elementor-author-box__avatar {
    flex-shrink: 0;
    margin-right: 25px; }
    .elementor-author-box__avatar img {
      width: 100px;
      border-radius: 500px;
      object-fit: cover; }
  .elementor-author-box__text {
    flex-grow: 1;
    font-size: 17px; }
  .elementor-author-box__name {
    font-size: 24px;
    margin-bottom: 5px; }
  .elementor-author-box__bio {
    margin-bottom: 0.8em; }
    .elementor-author-box__bio p {
      margin-bottom: 0.8em; }
      .elementor-author-box__bio p:last-of-type {
        margin-bottom: 0; }
  .elementor-author-box--layout-image-left .elementor-author-box {
    flex-direction: row; }
    .elementor-author-box--layout-image-left .elementor-author-box__avatar {
      margin-left: 0;
      margin-right: 25px; }
  .elementor-author-box--layout-image-right .elementor-author-box {
    flex-direction: row-reverse; }
    .elementor-author-box--layout-image-right .elementor-author-box__avatar {
      margin-right: 0;
      margin-left: 25px; }
  .elementor-author-box--layout-image-above .elementor-author-box {
    display: block; }
    .elementor-author-box--layout-image-above .elementor-author-box__avatar {
      margin: 0 auto 15px;
      display: inline-block; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar {
    margin-left: 0; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar {
    margin-right: 0; }
  .elementor-author-box--align-left .elementor-author-box {
    text-align: left; }
  .elementor-author-box--align-right .elementor-author-box {
    text-align: right; }
  .elementor-author-box--align-center .elementor-author-box {
    text-align: center; }

.elementor-button.elementor-author-box__button {
  border: solid 2px #55595c;
  font-size: 15px;
  font-weight: 100;
  padding: 10px 18px; }
  .elementor-button.elementor-author-box__button, .elementor-button.elementor-author-box__button:hover {
    background: transparent;
    color: #55595c; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar {
  align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar {
  align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar {
  align-self: center; }

.elementor-post-info__terms-list {
  display: inline-block; }

.elementor-post-info .elementor-icon-list-icon .elementor-avatar {
  border-radius: 100%; }

.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after {
  margin: initial; }

.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text {
  display: inline-block; }
  .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a, .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span {
    display: inline; }

.elementor-widget-breadcrumbs {
  font-size: 0.85em; }
  .elementor-widget-breadcrumbs p {
    margin-bottom: 0; }

.elementor-sitemap-wrap {
  display: flex;
  flex-flow: row wrap; }

.elementor-sticky--active {
  z-index: 99; }

[data-elementor-type="popup"]:not(.elementor-edit-area) {
  display: none; }

[data-elementor-type="popup"] .elementor-section-wrap:not(:empty) + #elementor-add-new-section {
  display: none; }

.elementor-popup-modal {
  display: flex;
  pointer-events: none;
  background-color: transparent;
  user-select: auto; }
  .elementor-popup-modal .dialog-header, .elementor-popup-modal .dialog-buttons-wrapper {
    display: none; }
  .elementor-popup-modal .dialog-close-button {
    display: none;
    top: 20px;
    margin-top: 0;
    right: 20px;
    opacity: 1;
    z-index: 9999;
    pointer-events: all; }
    .elementor-popup-modal .dialog-close-button svg {
      fill: #373a3c;
      height: 1em;
      width: 1em; }
  .elementor-popup-modal .dialog-widget-content {
    width: initial;
    overflow: visible;
    max-width: 100%;
    max-height: 100%;
    border-radius: 0;
    box-shadow: none;
    pointer-events: all; }
  .elementor-popup-modal .dialog-message {
    width: 640px;
    max-width: 100vw;
    max-height: 100vh;
    padding: 0;
    overflow: auto;
    display: flex; }
  .elementor-popup-modal .elementor {
    width: 100%; }

.elementor-motion-effects-element, .elementor-motion-effects-layer {
  transition-property: transform, opacity;
  transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
  transition-duration: 1s; }

.elementor-motion-effects-container {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); }

.elementor-motion-effects-layer {
  position: absolute;
  top: 0;
  left: 0;
  background-repeat: no-repeat;
  background-size: cover; }

.elementor-motion-effects-perspective {
  perspective: 1200px; }

.elementor-widget-posts:after, .elementor-widget-archive-posts:after {
  display: none; }

.elementor-posts-container.elementor-posts-masonry {
  align-items: flex-start; }

.elementor-posts-container:not(.elementor-posts-masonry) {
  align-items: stretch; }

.elementor-posts-container .elementor-post {
  padding: 0;
  margin: 0; }
  .elementor-posts-container .elementor-post__thumbnail {
    overflow: hidden; }
    .elementor-posts-container .elementor-post__thumbnail img {
      display: block;
      width: 100%;
      max-height: none;
      max-width: none;
      transition: filter 0.3s; }
    .elementor-posts-container .elementor-post__thumbnail__link {
      position: relative;
      display: block;
      width: 100%; }

.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0; }
  .elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail img {
    height: auto;
    position: absolute;
    top: calc( 50% + 1px);
    left: calc( 50% + 1px);
    transform: scale(1.01) translate(-50%, -50%); }
  .elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail.elementor-fit-height img {
    height: 100%;
    width: auto; }

.elementor-posts .elementor-post {
  display: flex;
  transition-property: background, border, box-shadow;
  transition-duration: 0.25s; }
  .elementor-posts .elementor-post__title {
    font-size: 18px;
    margin: 0; }
  .elementor-posts .elementor-post__excerpt {
    margin-bottom: 10px; }
    .elementor-posts .elementor-post__excerpt p {
      margin: 0;
      line-height: 1.5em;
      font-size: 14px;
      color: #777; }
  .elementor-posts .elementor-post__meta-data {
    line-height: 1.3em;
    font-size: 12px;
    margin-bottom: 13px;
    color: #adadad; }
  .elementor-posts .elementor-post__read-more {
    font-size: 12px;
    font-weight: bold; }
  .elementor-posts .elementor-post__thumbnail {
    position: relative; }

.elementor-posts--skin-classic {
  display: grid;
  flex-wrap: wrap; }
  .elementor-posts--skin-classic:not(.elementor-posts-masonry) {
    align-items: stretch; }
  .elementor-posts--skin-classic .elementor-post {
    overflow: hidden; }
    .elementor-posts--skin-classic .elementor-post__text {
      flex-grow: 1; }

.elementor-posts--align-left .elementor-post {
  text-align: left; }

.elementor-posts--align-right .elementor-post {
  text-align: right; }

.elementor-posts--align-center .elementor-post {
  text-align: center; }

.elementor-posts--thumbnail-top .elementor-post {
  display: block;
  /*

			 used to be
			 align-self: flex-start;
			 until v2.1

			*/ }
  .elementor-posts--thumbnail-top .elementor-post__thumbnail__link {
    margin-bottom: 20px; }
  .elementor-posts--thumbnail-top .elementor-post__text {
    width: 100%; }

.elementor-posts--thumbnail-top.elementor-posts--align-left .elementor-post__thumbnail__link {
  margin-right: auto; }

.elementor-posts--thumbnail-top.elementor-posts--align-right .elementor-post__thumbnail__link {
  margin-left: auto; }

.elementor-posts--thumbnail-top.elementor-posts--align-center .elementor-post__thumbnail__link {
  margin-right: auto;
  margin-left: auto; }

.elementor-posts--thumbnail-left .elementor-post__thumbnail__link, .elementor-posts--thumbnail-right .elementor-post__thumbnail__link {
  flex-shrink: 0;
  width: 25%; }

.elementor-posts--thumbnail-left .elementor-post__thumbnail__link {
  order: 0;
  margin-right: 20px; }

.elementor-posts--thumbnail-right .elementor-post__thumbnail__link {
  order: 5;
  margin-left: 20px; }

.elementor-posts--thumbnail-none .elementor-posts-container .elementor-post__thumbnail__link {
  display: none; }

.elementor-posts .elementor-post__card {
  overflow: hidden;
  position: relative;
  background-color: #fff;
  width: 100%;
  min-height: 100%;
  border-radius: 3px;
  border: 0 solid #818a91;
  transition: all 0.25s; }
  .elementor-posts .elementor-post__card .elementor-post__thumbnail {
    position: relative;
    transform-style: preserve-3d;
    -webkit-transform-style: preserve-3d; }
    .elementor-posts .elementor-post__card .elementor-post__thumbnail img {
      width: calc( 100% + 1px); }
  .elementor-posts .elementor-post__card .elementor-post__text {
    padding: 0 30px;
    margin-bottom: 0;
    margin-top: 20px; }
  .elementor-posts .elementor-post__card .elementor-post__read-more {
    margin-bottom: 20px;
    display: inline-block; }
  .elementor-posts .elementor-post__card .elementor-post__meta-data {
    padding: 15px 30px;
    margin-bottom: 0;
    border-top: 1px solid #eaeaea; }
    .elementor-posts .elementor-post__card .elementor-post__meta-data span + span:before {
      margin: 0 5px; }
  .elementor-posts .elementor-post__card .elementor-post__title {
    font-size: 21px; }
  .elementor-posts .elementor-post__card .elementor-post__excerpt {
    line-height: 1.7; }
  .elementor-posts .elementor-post__card .elementor-post__excerpt, .elementor-posts .elementor-post__card .elementor-post__title {
    margin-bottom: 25px; }
  .elementor-posts .elementor-post__card .elementor-post__badge, .elementor-posts .elementor-post__card .elementor-post__read-more {
    text-transform: uppercase; }

.elementor-posts .elementor-post__badge {
  position: absolute;
  top: 0;
  background: #818a91;
  color: #fff;
  font-size: 12px;
  padding: 0.6em 1.2em;
  line-height: 1;
  font-weight: 400;
  margin: 20px;
  border-radius: 999px; }

.elementor-posts .elementor-post__avatar {
  position: relative;
  padding: 0 30px;
  width: 100%;
  top: -25px;
  height: 0;
  pointer-events: none; }
  .elementor-posts .elementor-post__avatar img {
    border-radius: 50%;
    width: 60px;
    pointer-events: all;
    transform: translateY(-50%); }

.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card, .elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card {
  display: flex;
  flex-direction: column;
  justify-content: flex-start; }

.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data, .elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data {
  margin-top: auto; }

.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar {
  padding-top: 0;
  position: static;
  height: auto; }
  .elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar img.avatar {
    transform: translateY(0);
    vertical-align: bottom; }

.elementor-posts--show-avatar .elementor-post__thumbnail__link {
  margin-bottom: 25px; }

.elementor-posts__hover-gradient .elementor-post__card .elementor-post__thumbnail__link:after {
  display: block;
  content: '';
  background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 75%);
  background-repeat: no-repeat;
  height: 100%;
  width: 100%;
  position: absolute;
  bottom: 0;
  opacity: 1;
  transition: all 0.3s ease-out; }

.elementor-posts__hover-gradient .elementor-post__card:hover .elementor-post__thumbnail__link:after {
  opacity: 0.5; }

.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img {
  height: 100%; }

.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: calc( 100% + 1px); }

.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img {
  height: 115%; }

.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: 115%; }

.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img {
  height: 115%; }

.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: 115%; }

.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img {
  height: 100%; }

.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: calc( 100% + 1px); }

.elementor-posts__hover-zoom-out .elementor-post__thumbnail img, .elementor-posts__hover-zoom-in .elementor-post__thumbnail img {
  transition: filter 0.3s, height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1); }

.elementor-card-shadow-yes .elementor-post__card {
  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.15); }
  .elementor-card-shadow-yes .elementor-post__card:hover {
    box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.15); }

.elementor-posts--skin-full_content article {
  flex-direction: column;
  overflow: hidden; }
  .elementor-posts--skin-full_content article .elementor-post__thumbnail {
    padding-bottom: 0; }

body.elementor-editor-active .elementor-posts--skin-full_content,
body.elementor-editor-active .elementor-posts--skin-archive_full_content {
  pointer-events: none; }
  body.elementor-editor-active .elementor-posts--skin-full_content .elementor-post__thumbnail__link,
  body.elementor-editor-active .elementor-posts--skin-archive_full_content .elementor-post__thumbnail__link {
    display: none; }

body.elementor-editor-active .elementor-posts--show-thumbnail .elementor-post__thumbnail__link {
  display: block; }

.elementor-portfolio__filters {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  padding: 0;
  margin: 0; }

.elementor-portfolio__filter {
  margin: 0;
  cursor: pointer;
  padding: 8px; }

.elementor-portfolio-item {
  align-self: flex-start;
  transition-property: transform, opacity;
  transition-timing-function: ease-in-out;
  transform-style: preserve-3d;
  overflow: hidden;
  margin: 0; }
  .elementor-portfolio-item__title {
    margin: 0;
    padding: 0;
    line-height: 1;
    font-size: 18px;
    color: #fff; }
  .elementor-portfolio-item__tags__separator:before {
    content: ', '; }
  .elementor-portfolio-item__overlay {
    opacity: 0;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 15px;
    transition: opacity 1s;
    display: flex;
    flex-direction: column;
    justify-content: center;
    text-align: center;
    overflow: hidden;
    background-color: rgba(129, 138, 145, 0.8); }
    .elementor-portfolio-item__overlay:hover {
      opacity: 1;
      transition: opacity 0.5s; }
  .elementor-portfolio-item__img img[src=""] {
    background-color: rgba(0, 0, 0, 0.1);
    height: 100%; }

.elementor-portfolio.elementor-has-item-ratio {
  transition: height 0.5s; }
  .elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail {
    position: absolute;
    background-color: rgba(0, 0, 0, 0.1); }
    .elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail__link {
      padding-bottom: 56.25%; }

.elementor ul li.elementor-portfolio__filter {
  list-style-type: none; }

.elementor-widget-posts.load-more-align-center .elementor-button-wrapper, .elementor-widget-archive-posts.load-more-align-center .elementor-button-wrapper {
  text-align: center; }

.elementor-widget-posts.load-more-align-start .elementor-button-wrapper, .elementor-widget-archive-posts.load-more-align-start .elementor-button-wrapper {
  text-align: start; }

.elementor-widget-posts.load-more-align-end .elementor-button-wrapper, .elementor-widget-archive-posts.load-more-align-end .elementor-button-wrapper {
  text-align: end; }

.elementor-widget-posts.load-more-align-justify .elementor-button, .elementor-widget-archive-posts.load-more-align-justify .elementor-button {
  width: 100%; }

.elementor-widget-posts .e-load-more-spinner, .elementor-widget-archive-posts .e-load-more-spinner {
  display: flex; }
  .elementor-widget-posts .e-load-more-spinner i,
  .elementor-widget-posts .e-load-more-spinner svg, .elementor-widget-archive-posts .e-load-more-spinner i,
  .elementor-widget-archive-posts .e-load-more-spinner svg {
    margin: 0 auto;
    display: none; }
  .elementor-widget-posts .e-load-more-spinner i, .elementor-widget-archive-posts .e-load-more-spinner i {
    color: var(--load-more-spinner-color); }
  .elementor-widget-posts .e-load-more-spinner svg, .elementor-widget-archive-posts .e-load-more-spinner svg {
    fill: var(--load-more-spinner-color);
    height: 1em;
    width: 1em; }

.elementor-widget-posts .e-load-more-message, .elementor-widget-archive-posts .e-load-more-message {
  color: var(--load-more-message-color);
  text-align: var(--load-more-message-alignment, center);
  display: none;
  margin-top: var(--load-more—spacing, 30px); }

.elementor-widget-posts.e-load-more-pagination-loading, .elementor-widget-archive-posts.e-load-more-pagination-loading {
  cursor: default; }
  .elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner, .elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner {
    margin-top: var(--load-more—spacing, 30px); }
    .elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner i,
    .elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner svg, .elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner i,
    .elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner svg {
      display: flex; }
  .elementor-widget-posts.e-load-more-pagination-loading .elementor-button-content-wrapper, .elementor-widget-archive-posts.e-load-more-pagination-loading .elementor-button-content-wrapper {
    visibility: hidden; }

.elementor-widget-posts.e-load-more-pagination-end .elementor-button-wrapper, .elementor-widget-archive-posts.e-load-more-pagination-end .elementor-button-wrapper {
  display: none; }

.elementor-widget-posts.e-load-more-pagination-end .e-load-more-message, .elementor-widget-archive-posts.e-load-more-pagination-end .e-load-more-message {
  display: block; }

.elementor-widget-posts.e-load-more-no-spinner .elementor-button-content-wrapper, .elementor-widget-archive-posts.e-load-more-no-spinner .elementor-button-content-wrapper {
  visibility: visible; }

.elementor-widget-posts .elementor-button-wrapper, .elementor-widget-archive-posts .elementor-button-wrapper {
  margin-top: var(--load-more—spacing, 30px); }
  .elementor-widget-posts .elementor-button-wrapper .e-load-more-spinner, .elementor-widget-archive-posts .elementor-button-wrapper .e-load-more-spinner {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    margin: inherit; }
  .elementor-widget-posts .elementor-button-wrapper .elementor-button, .elementor-widget-archive-posts .elementor-button-wrapper .elementor-button {
    cursor: pointer;
    position: relative; }

/*
Multi Steps Form

Currently manually overwriting  - need to find a better solution,
the source property is coming from element/dev/scss...

*/
/* TODO: check why elementor-hidden class is not working */
.elementor-hidden,
.elementor-button.elementor-hidden {
  display: none; }

.e-form__step {
  width: 100%; }
  .e-form__step:not(.elementor-hidden) {
    display: flex;
    flex-wrap: wrap; }

.e-form__buttons {
  flex-wrap: wrap; }
  .e-form__buttons, .e-form__buttons__wrapper {
    display: flex; }

.e-form__indicators {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: nowrap;
  font-size: 13px;
  margin-bottom: var(--e-form-steps-indicators-spacing); }
  .e-form__indicators__indicator {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex-basis: 0;
    padding: 0 var(--e-form-steps-divider-gap); }
    .e-form__indicators__indicator__progress {
      width: 100%;
      position: relative;
      background-color: var(--e-form-steps-indicator-progress-background-color);
      border-radius: var(--e-form-steps-indicator-progress-border-radius);
      overflow: hidden; }
      .e-form__indicators__indicator__progress__meter {
        width: var(--e-form-steps-indicator-progress-meter-width, 0);
        height: var(--e-form-steps-indicator-progress-height);
        line-height: var(--e-form-steps-indicator-progress-height);
        padding-right: 15px;
        border-radius: var(--e-form-steps-indicator-progress-border-radius);
        background-color: var(--e-form-steps-indicator-progress-color);
        color: var(--e-form-steps-indicator-progress-meter-color);
        text-align: right;
        transition: width 0.1s linear; }
    .e-form__indicators__indicator:first-child {
      padding-left: 0; }
    .e-form__indicators__indicator:last-child {
      padding-right: 0; }
    .e-form__indicators__indicator--state-inactive {
      color: var(--e-form-steps-indicator-inactive-primary-color, #C2CBD2); }
      .e-form__indicators__indicator--state-inactive [class*="indicator--shape-"]:not(.e-form__indicators__indicator--shape-none) {
        background-color: var(--e-form-steps-indicator-inactive-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-inactive svg,
      .e-form__indicators__indicator--state-inactive object {
        fill: var(--e-form-steps-indicator-inactive-primary-color, #C2CBD2); }
    .e-form__indicators__indicator--state-active {
      color: var(--e-form-steps-indicator-active-primary-color, #39B54A);
      border-color: var(--e-form-steps-indicator-active-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-active [class*="indicator--shape-"]:not(.e-form__indicators__indicator--shape-none) {
        background-color: var(--e-form-steps-indicator-active-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-active svg,
      .e-form__indicators__indicator--state-active object {
        fill: var(--e-form-steps-indicator-active-primary-color, #39B54A); }
    .e-form__indicators__indicator--state-completed {
      color: var(--e-form-steps-indicator-completed-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-completed [class*="indicator--shape-"]:not(.e-form__indicators__indicator--shape-none) {
        background-color: var(--e-form-steps-indicator-completed-primary-color, #39B54A); }
      .e-form__indicators__indicator--state-completed .e-form__indicators__indicator__label {
        color: var(--e-form-steps-indicator-completed-primary-color, #39B54A); }
      .e-form__indicators__indicator--state-completed .e-form__indicators__indicator--shape-none {
        color: var(--e-form-steps-indicator-completed-primary-color, #39B54A);
        background-color: initial; }
      .e-form__indicators__indicator--state-completed svg,
      .e-form__indicators__indicator--state-completed object {
        fill: var(--e-form-steps-indicator-completed-secondary-color, #FFF); }
    .e-form__indicators__indicator__icon {
      width: var(--e-form-steps-indicator-padding, 30px);
      height: var(--e-form-steps-indicator-padding, 30px);
      font-size: var(--e-form-steps-indicator-icon-size);
      border-width: 1px;
      border-style: solid;
      display: flex;
      justify-content: center;
      align-items: center;
      overflow: hidden;
      margin-bottom: 10px; }
      .e-form__indicators__indicator__icon img,
      .e-form__indicators__indicator__icon svg,
      .e-form__indicators__indicator__icon object {
        width: var(--e-form-steps-indicator-icon-size);
        height: auto; }
      .e-form__indicators__indicator__icon .e-font-icon-svg {
        height: 1em; }
    .e-form__indicators__indicator__number {
      width: var(--e-form-steps-indicator-padding, 30px);
      height: var(--e-form-steps-indicator-padding, 30px);
      border-width: 1px;
      border-style: solid;
      display: flex;
      justify-content: center;
      align-items: center;
      margin-bottom: 10px; }
    .e-form__indicators__indicator--shape-circle {
      border-radius: 50%; }
    .e-form__indicators__indicator--shape-square {
      border-radius: 0; }
    .e-form__indicators__indicator--shape-rounded {
      border-radius: 5px; }
    .e-form__indicators__indicator--shape-none {
      border: 0; }
    .e-form__indicators__indicator__label {
      text-align: center; }
    .e-form__indicators__indicator__separator {
      width: 100%;
      height: var(--e-form-steps-divider-width);
      background-color: #c2cbd2; }
  .e-form__indicators--type-number, .e-form__indicators--type-number_text, .e-form__indicators--type-icon, .e-form__indicators--type-icon_text {
    align-items: flex-start; }
    .e-form__indicators--type-number .e-form__indicators__indicator__separator, .e-form__indicators--type-number_text .e-form__indicators__indicator__separator, .e-form__indicators--type-icon .e-form__indicators__indicator__separator, .e-form__indicators--type-icon_text .e-form__indicators__indicator__separator {
      margin-top: calc(var(--e-form-steps-indicator-padding, 30px) / 2 - var(--e-form-steps-divider-width, 1px) / 2); }

/* End OF Multi Steps Form */
.elementor-field-type-hidden {
  display: none; }

.elementor-field-type-html {
  display: inline-block; }

.elementor-login .elementor-remember-me,
.elementor-login .elementor-lost-password {
  font-size: 0.85em; }

.elementor-field-type-recaptcha_v3 .elementor-field-label {
  display: none; }

.elementor-field-type-recaptcha_v3 .grecaptcha-badge {
  z-index: 1; }

.elementor-button .elementor-form-spinner {
  order: 3; }

.elementor-form .elementor-button > span {
  display: flex;
  justify-content: center;
  align-items: center; }

.elementor-form .elementor-button .elementor-button-text {
  white-space: normal;
  flex-grow: 0; }

.elementor-form .elementor-button svg {
  height: auto; }

.elementor-form .elementor-button .e-font-icon-svg {
  height: 1em; }

.elementor-widget-price-list .elementor-price-list {
  list-style: none;
  padding: 0;
  margin: 0; }
  .elementor-widget-price-list .elementor-price-list li {
    margin: 0; }

.elementor-price-list li:not(:last-child) {
  margin-bottom: 20px; }

.elementor-price-list .elementor-price-list-image {
  max-width: 50%;
  flex-shrink: 0;
  padding-right: 25px; }
  .elementor-price-list .elementor-price-list-image img {
    width: 100%; }

.elementor-price-list .elementor-price-list-text,
.elementor-price-list .elementor-price-list-item,
.elementor-price-list .elementor-price-list-header {
  display: flex; }

.elementor-price-list .elementor-price-list-item {
  align-items: flex-start; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-text {
    align-items: flex-start;
    flex-wrap: wrap;
    flex-grow: 1; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-header {
    align-items: center;
    flex-basis: 100%;
    font-size: 19px;
    font-weight: 600;
    margin-bottom: 10px;
    justify-content: space-between; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-title {
    max-width: 80%; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-price {
    font-weight: 600; }
  .elementor-price-list .elementor-price-list-item p.elementor-price-list-description {
    flex-basis: 100%;
    font-size: 14px;
    margin: 0; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-separator {
    flex-grow: 1;
    margin-left: 10px;
    margin-right: 10px;
    border-bottom-style: dotted;
    border-bottom-width: 2px;
    height: 0; }

.elementor-price-table {
  text-align: center; }
  .elementor-price-table .elementor-price-table__header {
    background: var(--e-price-table-header-background-color, #555);
    padding: 20px 0; }
  .elementor-price-table .elementor-price-table__heading {
    margin: 0;
    padding: 0;
    line-height: 1.2;
    font-size: 24px;
    font-weight: 600;
    color: #fff; }
  .elementor-price-table .elementor-price-table__subheading {
    font-size: 13px;
    font-weight: 400;
    color: #fff; }
  .elementor-price-table .elementor-price-table__original-price {
    margin-right: 15px;
    text-decoration: line-through;
    font-size: 0.5em;
    line-height: 1;
    font-weight: 400;
    align-self: center; }
    .elementor-price-table .elementor-price-table__original-price .elementor-price-table__currency {
      font-size: 1em;
      margin: 0; }
  .elementor-price-table .elementor-price-table__price {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    flex-direction: row;
    color: #555;
    font-weight: 800;
    font-size: 65px;
    padding: 40px 0; }
    .elementor-price-table .elementor-price-table__price .elementor-typo-excluded {
      line-height: initial;
      letter-spacing: initial;
      text-transform: initial;
      font-weight: initial;
      font-size: initial;
      font-style: initial; }
  .elementor-price-table .elementor-price-table__after-price {
    display: flex;
    flex-wrap: wrap;
    text-align: left;
    align-self: stretch;
    align-items: flex-start;
    flex-direction: column; }
  .elementor-price-table .elementor-price-table__integer-part {
    line-height: 0.8; }
  .elementor-price-table .elementor-price-table__currency, .elementor-price-table .elementor-price-table__fractional-part {
    line-height: 1;
    font-size: 0.3em; }
  .elementor-price-table .elementor-price-table__currency {
    margin-right: 3px; }
  .elementor-price-table .elementor-price-table__period {
    width: 100%;
    font-size: 13px;
    font-weight: 400; }
  .elementor-price-table .elementor-price-table__features-list {
    list-style-type: none;
    margin: 0;
    padding: 0;
    line-height: 1;
    color: var(--e-price-table-features-list-color); }
    .elementor-price-table .elementor-price-table__features-list li {
      font-size: 14px;
      line-height: 1;
      margin: 0;
      padding: 0; }
      .elementor-price-table .elementor-price-table__features-list li .elementor-price-table__feature-inner {
        margin-left: 15px;
        margin-right: 15px; }
      .elementor-price-table .elementor-price-table__features-list li:not(:first-child):before {
        content: '';
        display: block;
        border: 0 solid rgba(122, 122, 122, 0.3);
        margin: 10px 12.5%; }
    .elementor-price-table .elementor-price-table__features-list i {
      margin-right: 10px;
      font-size: 1.3em; }
    .elementor-price-table .elementor-price-table__features-list svg {
      margin-right: 10px;
      fill: var(--e-price-table-features-list-color);
      height: 1.3em;
      width: 1.3em; }
    .elementor-price-table .elementor-price-table__features-list svg ~ * {
      vertical-align: text-top; }
  .elementor-price-table .elementor-price-table__footer {
    padding: 30px 0; }
  .elementor-price-table .elementor-price-table__additional_info {
    margin: 0;
    font-size: 13px;
    line-height: 1.4; }
  .elementor-price-table__ribbon {
    position: absolute;
    top: 0;
    left: auto;
    right: 0;
    transform: rotate(90deg);
    width: 150px;
    overflow: hidden;
    height: 150px; }
    .elementor-price-table__ribbon-inner {
      text-align: center;
      left: 0;
      width: 200%;
      transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
      margin-top: 35px;
      font-size: 13px;
      line-height: 2;
      font-weight: 800;
      text-transform: uppercase;
      background: #000; }
    .elementor-price-table__ribbon.elementor-ribbon-left {
      transform: rotate(0);
      left: 0;
      right: auto; }
    .elementor-price-table__ribbon.elementor-ribbon-right {
      transform: rotate(90deg);
      left: auto;
      right: 0; }

.elementor-widget-price-table .elementor-widget-container {
  overflow: hidden;
  background-color: #f7f7f7; }

.elementor-flip-box {
  height: 280px;
  position: relative;
  perspective: 1000px;
  transform-style: preserve-3d; }
  @media (max-device-width: ELEMENTOR_SCREEN_TABLET_MAX) {
    .elementor-flip-box {
      cursor: pointer; } }
  .elementor-flip-box__front {
    background-color: #1abc9c; }
  .elementor-flip-box__back {
    background-color: #4054b2;
    display: block; }
  .elementor-flip-box__layer {
    position: absolute;
    width: 100%;
    height: 100%;
    transition: all .6s ease-in-out; }
    .elementor-flip-box__layer__overlay {
      display: flex;
      width: 100%;
      height: 100%;
      flex-direction: column;
      justify-content: center;
      align-items: stretch;
      text-align: center;
      padding: 35px;
      color: white; }
    .elementor-flip-box__layer__title {
      font-size: 21px; }
    .elementor-flip-box__layer__description {
      font-size: 14px; }
    .elementor-flip-box__layer__description:not(:last-child), .elementor-flip-box__layer__title:not(:last-child) {
      margin: 0 0 20px 0;
      padding: 0; }
    .elementor-flip-box__layer__title {
      line-height: 1;
      font-weight: 600; }
  .elementor-flip-box,
  .elementor-flip-box .elementor-view-framed,
  .elementor-flip-box .elementor-view-stacked {
    --e-flip-box-view-framed-stacked-icon-color: #fff; }
    .elementor-flip-box .elementor-icon,
    .elementor-flip-box .elementor-view-framed .elementor-icon,
    .elementor-flip-box .elementor-view-stacked .elementor-icon {
      color: var(--e-flip-box-view-framed-stacked-icon-color); }
      .elementor-flip-box .elementor-icon svg,
      .elementor-flip-box .elementor-view-framed .elementor-icon svg,
      .elementor-flip-box .elementor-view-stacked .elementor-icon svg {
        fill: var(--e-flip-box-view-framed-stacked-icon-color); }
  .elementor-flip-box .elementor-view-framed .elementor-icon {
    border-color: #fff; }
  .elementor-flip-box .elementor-view-stacked .elementor-icon {
    background-color: rgba(0, 0, 0, 0.5); }
  .elementor-flip-box__button.elementor-button {
    cursor: pointer;
    align-self: center;
    margin-left: auto;
    margin-right: auto;
    border: solid 2px white;
    background: transparent; }
    .elementor-flip-box__button.elementor-button:hover {
      background: transparent;
      text-decoration: none; }
  .elementor-flip-box__image {
    margin: 0 0 20px 0;
    display: inline-block;
    width: 100%; }
    .elementor-flip-box__image img {
      width: 50%; }
  .elementor-flip-box .elementor-icon-wrapper {
    margin-bottom: 20px; }
  .elementor-flip-box--3d .elementor-flip-box__layer__inner {
    transform: translateZ(90px) scale(0.91); }
  .elementor-flip-box--3d .elementor-flip-box__layer__overlay {
    transform-style: preserve-3d;
    transform: translateZ(0.1px); }
  .elementor-flip-box--effect-flip .elementor-flip-box {
    perspective: 1000px;
    transform-style: preserve-3d; }
    .elementor-flip-box--effect-flip .elementor-flip-box__layer {
      transform-style: preserve-3d;
      backface-visibility: hidden; }
    .elementor-flip-box--effect-flip .elementor-flip-box__front {
      transform: none;
      z-index: 1; }
    .elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__back {
      transform: none; }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box__back {
    transform: rotateX(0) rotateY(-180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front {
    transform: rotateX(0) rotateY(180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box__back {
    transform: rotateX(0) rotateY(180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front {
    transform: rotateX(0) rotateY(-180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box__back {
    transform: rotateX(-180deg) rotateY(0); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front {
    transform: rotateX(180deg) rotateY(0); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box__back {
    transform: rotateX(180deg) rotateY(0); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front {
    transform: rotateX(-180deg) rotateY(0); }
  .elementor-flip-box--effect-push .elementor-flip-box__front {
    transform: none; }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front {
    transform: translateX(100%) translateY(0); }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front {
    transform: translateX(-100%) translateY(0); }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front {
    transform: translateX(0) translateY(-100%); }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front {
    transform: translateX(0) translateY(100%); }
  .elementor-flip-box--effect-slide .elementor-flip-box, .elementor-flip-box--effect-push .elementor-flip-box {
    overflow: hidden; }
    .elementor-flip-box--effect-slide .elementor-flip-box:hover .elementor-flip-box__back, .elementor-flip-box--effect-push .elementor-flip-box:hover .elementor-flip-box__back {
      transform: none; }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-right .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box__back {
    transform: translateX(-100%) translateY(0); }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-left .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box__back {
    transform: translateX(100%) translateY(0); }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-up .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box__back {
    transform: translateX(0) translateY(100%); }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-down .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box__back {
    transform: translateX(0) translateY(-100%); }
  .elementor-flip-box--effect-zoom-out .elementor-flip-box .elementor-flip-box__front {
    transition: transform 0.7s, opacity 0.35s, width 0.1ms;
    opacity: 1;
    transform: scale(1);
    z-index: 1;
    width: 100%; }
  .elementor-flip-box--effect-zoom-out .elementor-flip-box:hover .elementor-flip-box__front {
    width: 0;
    opacity: 0;
    transform: scale(0.7);
    transition: transform 0.8s, opacity 0.7s 0.1s, width 0.1ms 0.7s; }
  .elementor-flip-box--effect-zoom-in .elementor-flip-box .elementor-flip-box__back {
    transition: transform 0.7s, opacity 0.5s 0.2s;
    opacity: 0;
    transform: scale(0.7); }
  .elementor-flip-box--effect-zoom-in .elementor-flip-box:hover .elementor-flip-box__back {
    transition: transform 0.7s, opacity 0.5s;
    opacity: 1;
    transform: scale(1); }
  .elementor-flip-box--effect-fade .elementor-flip-box .elementor-flip-box__back {
    opacity: 0; }
  .elementor-flip-box--effect-fade .elementor-flip-box:hover .elementor-flip-box__back {
    opacity: 1; }

.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__front {
  display: none; }

.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__back {
  transform: none;
  opacity: 1; }

.elementor-widget-call-to-action .elementor-widget-container {
  overflow: hidden; }

.elementor-cta {
  position: relative;
  display: flex;
  overflow: hidden;
  transition: 0.5s; }
  .elementor-cta--skin-classic .elementor-cta {
    flex-wrap: wrap; }
    .elementor-cta--skin-classic .elementor-cta__bg-wrapper {
      position: relative;
      min-height: 200px;
      width: 100%; }
    .elementor-cta--skin-classic .elementor-cta__content {
      transition: all 0.4s;
      width: 100%;
      background-color: #f7f7f7; }
    .elementor-cta--skin-classic .elementor-cta__content-item, .elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon {
      color: #55595c;
      border-color: #55595c;
      fill: #55595c; }
    .elementor-cta--skin-classic .elementor-cta__button.elementor-button {
      color: #55595c;
      border-color: #55595c; }
  .elementor-cta--skin-cover .elementor-cta {
    display: block; }
    .elementor-cta--skin-cover .elementor-cta__bg-wrapper {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      transition: all 0.4s;
      width: 100%; }
    .elementor-cta--skin-cover .elementor-cta__content {
      min-height: 280px; }
    .elementor-cta--skin-cover .elementor-cta__content-item, .elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon {
      color: #fff;
      border-color: #fff; }
    .elementor-cta--skin-cover .elementor-cta__button.elementor-button {
      color: white;
      border-color: white; }
  .elementor-cta--layout-image-above .elementor-cta {
    flex-wrap: wrap; }
    .elementor-cta--layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--layout-image-left .elementor-cta, .elementor-cta--layout-image-right .elementor-cta {
    flex-wrap: nowrap; }
    .elementor-cta--layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--layout-image-left .elementor-cta__content, .elementor-cta--layout-image-right .elementor-cta__content {
      flex-grow: 1; }
  .elementor-cta--layout-image-left .elementor-cta {
    flex-direction: row; }
  .elementor-cta--layout-image-right .elementor-cta {
    flex-direction: row-reverse; }
  .elementor-cta__bg, .elementor-cta__bg-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    transition: all 0.4s; }
  .elementor-cta__bg-wrapper {
    z-index: 1;
    overflow: hidden; }
  .elementor-cta__bg {
    background-size: cover;
    background-position: center;
    z-index: 1; }
  .elementor-cta__bg-overlay {
    z-index: 2; }
  .elementor-cta__button.elementor-button {
    cursor: pointer;
    align-self: center;
    margin-left: auto;
    margin-right: auto;
    border: solid 2px white;
    background: transparent; }
    .elementor-cta__button.elementor-button:hover {
      background: transparent;
      text-decoration: none; }
  .elementor-cta__title {
    font-size: 23px; }
  .elementor-cta__content {
    z-index: 1;
    overflow: hidden;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    align-content: center;
    padding: 35px;
    width: 100%; }
    .elementor-cta__content, .elementor-cta__content-item {
      position: relative;
      transition: 0.5s;
      color: #fff; }
    .elementor-cta__content-item {
      width: 100%;
      margin: 0; }
      .elementor-cta__content-item:not(:last-child) {
        margin-bottom: 15px; }
      .elementor-cta__content-item .elementor-icon {
        color: #fff; }
  .elementor-cta--valign-top .elementor-cta__content {
    align-content: flex-start;
    align-items: flex-start; }
  .elementor-cta--valign-middle .elementor-cta__content {
    align-content: center;
    align-items: center; }
  .elementor-cta--valign-bottom .elementor-cta__content {
    align-content: flex-end;
    align-items: flex-end; }
  .elementor-cta:hover .elementor-cta__bg-overlay {
    background-color: rgba(0, 0, 0, 0.3); }

@media (max-device-width: ELEMENTOR_SCREEN_TABLET_MAX) {
  .elementor-cta {
    cursor: pointer; } }

@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) {
  .elementor-cta--widescreen-layout-image-above .elementor-cta {
    flex-wrap: wrap; }
    .elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--widescreen-layout-image-left .elementor-cta, .elementor-cta--widescreen-layout-image-right .elementor-cta {
    flex-wrap: nowrap; }
    .elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--widescreen-layout-image-left .elementor-cta__content, .elementor-cta--widescreen-layout-image-right .elementor-cta__content {
      flex-grow: 1; }
  .elementor-cta--widescreen-layout-image-left .elementor-cta {
    flex-direction: row; }
  .elementor-cta--widescreen-layout-image-right .elementor-cta {
    flex-direction: row-reverse; } }

@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) {
  .elementor-cta--laptop-layout-image-above .elementor-cta {
    flex-wrap: wrap; }
    .elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--laptop-layout-image-left .elementor-cta, .elementor-cta--laptop-layout-image-right .elementor-cta {
    flex-wrap: nowrap; }
    .elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--laptop-layout-image-left .elementor-cta__content, .elementor-cta--laptop-layout-image-right .elementor-cta__content {
      flex-grow: 1; }
  .elementor-cta--laptop-layout-image-left .elementor-cta {
    flex-direction: row; }
  .elementor-cta--laptop-layout-image-right .elementor-cta {
    flex-direction: row-reverse; } }

@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) {
  .elementor-cta--tablet_extra-layout-image-above .elementor-cta {
    flex-wrap: wrap; }
    .elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--tablet_extra-layout-image-left .elementor-cta, .elementor-cta--tablet_extra-layout-image-right .elementor-cta {
    flex-wrap: nowrap; }
    .elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--tablet_extra-layout-image-left .elementor-cta__content, .elementor-cta--tablet_extra-layout-image-right .elementor-cta__content {
      flex-grow: 1; }
  .elementor-cta--tablet_extra-layout-image-left .elementor-cta {
    flex-direction: row; }
  .elementor-cta--tablet_extra-layout-image-right .elementor-cta {
    flex-direction: row-reverse; } }

@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
  .elementor-cta--tablet-layout-image-above .elementor-cta {
    flex-wrap: wrap; }
    .elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--tablet-layout-image-left .elementor-cta, .elementor-cta--tablet-layout-image-right .elementor-cta {
    flex-wrap: nowrap; }
    .elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--tablet-layout-image-left .elementor-cta__content, .elementor-cta--tablet-layout-image-right .elementor-cta__content {
      flex-grow: 1; }
  .elementor-cta--tablet-layout-image-left .elementor-cta {
    flex-direction: row; }
  .elementor-cta--tablet-layout-image-right .elementor-cta {
    flex-direction: row-reverse; } }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) {
  .elementor-cta--mobile_extra-layout-image-above .elementor-cta {
    flex-wrap: wrap; }
    .elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--mobile_extra-layout-image-left .elementor-cta, .elementor-cta--mobile_extra-layout-image-right .elementor-cta {
    flex-wrap: nowrap; }
    .elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--mobile_extra-layout-image-left .elementor-cta__content, .elementor-cta--mobile_extra-layout-image-right .elementor-cta__content {
      flex-grow: 1; }
  .elementor-cta--mobile_extra-layout-image-left .elementor-cta {
    flex-direction: row; }
  .elementor-cta--mobile_extra-layout-image-right .elementor-cta {
    flex-direction: row-reverse; } }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .elementor-cta--mobile-layout-image-above .elementor-cta {
    flex-wrap: wrap; }
    .elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--mobile-layout-image-left .elementor-cta, .elementor-cta--mobile-layout-image-right .elementor-cta {
    flex-wrap: nowrap; }
    .elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--mobile-layout-image-left .elementor-cta__content, .elementor-cta--mobile-layout-image-right .elementor-cta__content {
      flex-grow: 1; }
  .elementor-cta--mobile-layout-image-left .elementor-cta {
    flex-direction: row; }
  .elementor-cta--mobile-layout-image-right .elementor-cta {
    flex-direction: row-reverse; } }

.elementor-ribbon {
  position: absolute;
  z-index: 1;
  top: 0;
  left: auto;
  right: 0;
  transform: rotate(90deg);
  width: 150px;
  overflow: hidden;
  height: 150px; }
  .elementor-ribbon-inner {
    text-align: center;
    left: 0;
    width: 200%;
    transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
    margin-top: 35px;
    font-size: 13px;
    line-height: 2;
    font-weight: 800;
    text-transform: uppercase;
    background: #000;
    color: #fff; }
  .elementor-ribbon.elementor-ribbon-left {
    transform: rotate(0);
    left: 0;
    right: auto; }
  .elementor-ribbon.elementor-ribbon-right {
    transform: rotate(90deg);
    left: auto;
    right: 0; }

.elementor-widget-countdown .elementor-countdown-expire--message {
  display: none;
  padding: 20px;
  text-align: center; }

.elementor-widget-countdown .elementor-countdown-wrapper {
  flex-direction: row; }

.elementor-widget-countdown .elementor-countdown-item {
  padding: 20px 0;
  text-align: center;
  color: #ffffff; }

.elementor-widget-countdown .elementor-countdown-digits,
.elementor-widget-countdown .elementor-countdown-label {
  line-height: 1; }

.elementor-widget-countdown .elementor-countdown-digits {
  font-size: 69px; }

.elementor-widget-countdown .elementor-countdown-label {
  font-size: 19px; }

.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-wrapper {
  display: flex;
  justify-content: center;
  margin-right: auto;
  margin-left: auto; }

.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-digits,
.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-label {
  display: block; }

.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-item {
  flex-basis: 0;
  flex-grow: 1; }

.elementor-widget-countdown.elementor-countdown--label-inline {
  text-align: center; }
  .elementor-widget-countdown.elementor-countdown--label-inline .elementor-countdown-item {
    display: inline-block;
    padding-left: 5px;
    padding-right: 5px; }

/* Slides Widget */
.elementor-slides .swiper-slide-bg {
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  min-width: 100%;
  min-height: 100%; }

.elementor-slides .swiper-slide-inner {
  background-repeat: no-repeat;
  background-position: center;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  padding: 50px;
  margin: auto; }
  .elementor-slides .swiper-slide-inner, .elementor-slides .swiper-slide-inner:hover {
    color: white;
    display: flex; }
  .elementor-slides .swiper-slide-inner .elementor-background-overlay {
    position: absolute;
    z-index: 0;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0; }
  .elementor-slides .swiper-slide-inner .elementor-slide-content {
    position: relative;
    z-index: 1;
    width: 100%; }
  .elementor-slides .swiper-slide-inner .elementor-slide-heading {
    font-size: 35px;
    font-weight: bold;
    line-height: 1; }
  .elementor-slides .swiper-slide-inner .elementor-slide-description {
    font-size: 17px;
    line-height: 1.4; }
  .elementor-slides .swiper-slide-inner .elementor-slide-heading:not(:last-child), .elementor-slides .swiper-slide-inner .elementor-slide-description:not(:last-child) {
    margin-bottom: 30px; }
  .elementor-slides .swiper-slide-inner .elementor-slide-button {
    border: solid 2px white;
    color: white;
    background: transparent;
    display: inline-block; }
    .elementor-slides .swiper-slide-inner .elementor-slide-button, .elementor-slides .swiper-slide-inner .elementor-slide-button:hover {
      background: transparent;
      color: inherit;
      text-decoration: none; }

.elementor--v-position-top .swiper-slide-inner {
  align-items: flex-start; }

.elementor--v-position-bottom .swiper-slide-inner {
  align-items: flex-end; }

.elementor--v-position-middle .swiper-slide-inner {
  align-items: center; }

.elementor--h-position-left .swiper-slide-inner {
  justify-content: flex-start; }

.elementor--h-position-right .swiper-slide-inner {
  justify-content: flex-end; }

.elementor--h-position-center .swiper-slide-inner {
  justify-content: center; }

body.rtl .elementor-widget-slides .elementor-swiper-button-next {
  left: 10px;
  right: auto; }

body.rtl .elementor-widget-slides .elementor-swiper-button-prev {
  right: 10px;
  left: auto; }

.elementor-slides-wrapper div:not(.swiper-slide) > .swiper-slide-inner {
  display: none; }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .elementor-slides .swiper-slide-inner {
    padding: 30px; }
    .elementor-slides .swiper-slide-inner .elementor-slide-heading {
      font-size: 23px;
      line-height: 1;
      margin-bottom: 15px; }
    .elementor-slides .swiper-slide-inner .elementor-slide-description {
      font-size: 13px;
      line-height: 1.4;
      margin-bottom: 15px; } }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn {
  background-color: var(--e-share-buttons-primary-color, #ea4335); }
  .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text {
    color: var(--e-share-buttons-secondary-color, #fff); }
    .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg {
      fill: var(--e-share-buttons-secondary-color, #fff); }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn {
  color: var(--e-share-buttons-primary-color, #ea4335);
  border-color: var(--e-share-buttons-primary-color, #ea4335); }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon {
  background-color: var(--e-share-buttons-primary-color, #ea4335);
  color: var(--e-share-buttons-secondary-color, #fff); }
  .elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon svg {
    fill: var(--e-share-buttons-secondary-color, #fff); }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon {
  color: var(--e-share-buttons-primary-color, #ea4335); }
  .elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon svg {
    fill: var(--e-share-buttons-primary-color, #ea4335); }

.elementor-share-buttons--color-official .elementor-share-btn:hover {
  filter: saturate(1.5) brightness(1.2); }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_digg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_digg {
  background-color: #005be2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_email, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_email {
  background-color: #ea4335; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_print, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_print {
  background-color: #aaaaaa; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_facebook, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_facebook {
  background-color: #3b5998; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_google, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_google {
  background-color: #dd4b39; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pocket, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pocket {
  background-color: #EF3F56; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_linkedin, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_linkedin {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_odnoklassniki, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_odnoklassniki {
  background-color: #F4731C; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pinterest, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pinterest {
  background-color: #bd081c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_reddit, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_reddit {
  background-color: #ff4500; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_skype, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_skype {
  background-color: #00AFF0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_slideshare, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_slideshare {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_snapchat, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_snapchat {
  background-color: #fffc00; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_stumbleupon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_stumbleupon {
  background-color: #EB4924; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_mix, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_mix {
  background-color: #f3782b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_tumblr, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_tumblr {
  background-color: #35465c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitch, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitch {
  background-color: #6441A5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_telegram, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_telegram {
  background-color: #2CA5E0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitter, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitter {
  background-color: #1DA1F2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vimeo, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vimeo {
  background-color: #1ab7ea; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vk, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vk {
  background-color: #45668e; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_whatsapp, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_whatsapp {
  background-color: #25d366; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_wordpress, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_wordpress {
  background-color: #21759b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_xing, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_xing {
  background-color: #026466; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg {
  color: #005be2; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg svg {
    fill: #005be2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email {
  color: #ea4335; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email svg {
    fill: #ea4335; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print {
  color: #aaaaaa; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print svg {
    fill: #aaaaaa; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook {
  color: #3b5998; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook svg {
    fill: #3b5998; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google {
  color: #dd4b39; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google svg {
    fill: #dd4b39; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket {
  color: #EF3F56; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket svg {
    fill: #EF3F56; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin {
  color: #0077b5; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin svg {
    fill: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki {
  color: #F4731C; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki svg {
    fill: #F4731C; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest {
  color: #bd081c; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest svg {
    fill: #bd081c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit {
  color: #ff4500; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit svg {
    fill: #ff4500; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype {
  color: #00AFF0; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype svg {
    fill: #00AFF0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare {
  color: #0077b5; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare svg {
    fill: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat {
  color: #fffc00; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat svg {
    fill: #fffc00; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon {
  color: #EB4924; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon svg {
    fill: #EB4924; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix {
  color: #f3782b; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix svg {
    fill: #f3782b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr {
  color: #35465c; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr svg {
    fill: #35465c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch {
  color: #6441A5; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch svg {
    fill: #6441A5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram {
  color: #2CA5E0; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram svg {
    fill: #2CA5E0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter {
  color: #1DA1F2; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter svg {
    fill: #1DA1F2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo {
  color: #1ab7ea; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo svg {
    fill: #1ab7ea; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk {
  color: #45668e; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk svg {
    fill: #45668e; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp {
  color: #25d366; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp svg {
    fill: #25d366; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress {
  color: #21759b; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress svg {
    fill: #21759b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing {
  color: #026466; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing svg {
    fill: #026466; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_digg .elementor-share-btn__icon {
  background-color: #005be2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_email .elementor-share-btn__icon {
  background-color: #ea4335; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_print .elementor-share-btn__icon {
  background-color: #aaaaaa; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_facebook .elementor-share-btn__icon {
  background-color: #3b5998; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_google .elementor-share-btn__icon {
  background-color: #dd4b39; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pocket .elementor-share-btn__icon {
  background-color: #EF3F56; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_linkedin .elementor-share-btn__icon {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_odnoklassniki .elementor-share-btn__icon {
  background-color: #F4731C; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pinterest .elementor-share-btn__icon {
  background-color: #bd081c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_reddit .elementor-share-btn__icon {
  background-color: #ff4500; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_skype .elementor-share-btn__icon {
  background-color: #00AFF0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_slideshare .elementor-share-btn__icon {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_snapchat .elementor-share-btn__icon {
  background-color: #fffc00; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_stumbleupon .elementor-share-btn__icon {
  background-color: #EB4924; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_mix .elementor-share-btn__icon {
  background-color: #f3782b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_tumblr .elementor-share-btn__icon {
  background-color: #35465c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitch .elementor-share-btn__icon {
  background-color: #6441A5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_telegram .elementor-share-btn__icon {
  background-color: #2CA5E0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitter .elementor-share-btn__icon {
  background-color: #1DA1F2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vimeo .elementor-share-btn__icon {
  background-color: #1ab7ea; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vk .elementor-share-btn__icon {
  background-color: #45668e; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_whatsapp .elementor-share-btn__icon {
  background-color: #25d366; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_wordpress .elementor-share-btn__icon {
  background-color: #21759b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_xing .elementor-share-btn__icon {
  background-color: #026466; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon {
  color: var(--e-share-buttons-icon-color, #fff); }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon svg {
    fill: var(--e-share-buttons-icon-color, #fff); }

.elementor-share-buttons--skin-framed .elementor-share-btn__icon, .elementor-share-buttons--skin-boxed .elementor-share-btn__icon {
  margin-left: -0.2em; }

.elementor-share-buttons--skin-framed .elementor-share-btn, .elementor-share-buttons--skin-boxed .elementor-share-btn {
  border-style: solid; }

.elementor-share-buttons--skin-gradient .elementor-share-btn__text {
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0)); }

.elementor-share-buttons--skin-gradient.elementor-share-buttons--view-icon .elementor-share-btn__icon {
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0)); }

.elementor-share-buttons--skin-boxed .elementor-share-btn__text, .elementor-share-buttons--skin-minimal .elementor-share-btn__text, .elementor-share-buttons--skin-gradient .elementor-share-btn__text {
  padding-left: 0.9em; }

.elementor-share-buttons--skin-flat .elementor-share-btn, .elementor-share-buttons--skin-gradient .elementor-share-btn {
  background-color: var(--e-share-buttons-primary-color, #ea4335); }
  .elementor-share-buttons--skin-flat .elementor-share-btn__icon, .elementor-share-buttons--skin-flat .elementor-share-btn__text, .elementor-share-buttons--skin-gradient .elementor-share-btn__icon, .elementor-share-buttons--skin-gradient .elementor-share-btn__text {
    color: var(--e-share-buttons-secondary-color, #fff); }
    .elementor-share-buttons--skin-flat .elementor-share-btn__icon svg, .elementor-share-buttons--skin-flat .elementor-share-btn__text svg, .elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg, .elementor-share-buttons--skin-gradient .elementor-share-btn__text svg {
      fill: var(--e-share-buttons-secondary-color, #fff); }

.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-rounded .elementor-share-btn__icon {
  border-radius: 0.5em; }

.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-circle .elementor-share-btn__icon {
  border-radius: 99.9em; }

.elementor-share-buttons--view-text .elementor-share-btn__text {
  padding-left: 1em; }

.elementor-share-buttons--view-text .elementor-share-btn, .elementor-share-buttons--view-icon .elementor-share-btn {
  justify-content: center; }
  .elementor-share-buttons--view-text .elementor-share-btn__icon, .elementor-share-buttons--view-text .elementor-share-btn__text, .elementor-share-buttons--view-icon .elementor-share-btn__icon, .elementor-share-buttons--view-icon .elementor-share-btn__text {
    flex-grow: 1;
    justify-content: center; }

.elementor-share-buttons--shape-rounded .elementor-share-btn {
  border-radius: 0.5em; }

.elementor-share-buttons--shape-circle .elementor-share-btn {
  border-radius: 99.9em; }

.elementor-share-btn {
  overflow: hidden;
  font-size: 10px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  transition-duration: 0.2s;
  transition-property: filter, background-color, border-color;
  height: 4.5em;
  cursor: pointer; }
  .elementor-share-btn__icon, .elementor-share-btn__text {
    transition-property: color, background-color;
    transition-duration: 0.2s; }
  .elementor-share-btn__icon {
    display: flex;
    align-self: stretch;
    justify-content: center;
    align-items: center;
    width: 4.5em;
    position: relative; }
    .elementor-share-btn__icon i {
      font-size: var(--e-share-buttons-icon-size, 1.7em); }
    .elementor-share-btn__icon svg {
      width: var(--e-share-buttons-icon-size, 1.7em);
      height: var(--e-share-buttons-icon-size, 1.7em); }
  .elementor-share-btn__text {
    font-size: 1.5em;
    padding-right: 1em;
    align-self: stretch;
    flex-grow: 1;
    align-items: center;
    display: flex;
    font-weight: 100; }
  .elementor-share-btn__title {
    font-weight: bold;
    flex-shrink: 0; }

.elementor-widget-share-buttons {
  text-align: var(--alignment, inherit);
  text-align-last: var(--alignment, inherit); }
  .elementor-widget-share-buttons.elementor-grid-0 .elementor-widget-container {
    font-size: 0; }

.elementor-skin-carousel .elementor-main-swiper, .elementor-skin-coverflow .elementor-main-swiper {
  height: 230px; }

.elementor-skin-slideshow .elementor-main-swiper {
  height: 450px;
  position: relative; }

.elementor-skin-slideshow .elementor-thumbnails-swiper .elementor-custom-embed-play i {
  font-size: 50px; }

.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide {
  cursor: pointer; }
  .elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide:not(.swiper-slide-active):after {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: rgba(0, 0, 0, 0.3); }

.elementor-carousel-image {
  background: no-repeat center;
  background-size: cover;
  height: 100%;
  position: relative; }

.elementor-carousel-image-overlay {
  position: absolute;
  top: 0;
  left: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  width: 100%;
  height: 100%;
  padding: 20px;
  color: var(--e-carousel-image-overlay-color, #fff);
  background-color: rgba(129, 138, 145, 0.8);
  transition: transform .5s, opacity .5s; }
  .elementor-carousel-image-overlay i {
    font-size: var(--e-carousel-image-overlay-icon-size, 21px); }
  .elementor-carousel-image-overlay svg {
    fill: var(--e-carousel-image-overlay-color, #fff);
    width: var(--e-carousel-image-overlay-icon-size, 21px);
    height: var(--e-carousel-image-overlay-icon-size, 21px); }

.elementor-testimonial__image {
  flex-shrink: 0; }
  .elementor-testimonial__image img {
    border-radius: 999px;
    box-sizing: content-box;
    object-fit: cover; }

.elementor-testimonial__footer, .elementor-testimonial__header {
  display: flex; }
  .elementor-testimonial__footer cite, .elementor-testimonial__header cite {
    display: flex;
    flex-direction: column;
    font-style: normal;
    font-size: 14px;
    line-height: 1.5; }

.elementor-testimonial__name {
  font-weight: bold; }

.elementor-testimonial--layout-image_inline .elementor-testimonial__footer, .elementor-testimonial--layout-image_above .elementor-testimonial__footer {
  align-items: center; }

.elementor-testimonial--layout-image_inline .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_above .elementor-testimonial__image + cite {
  margin-left: 20px; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__footer, .elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__footer {
  flex-direction: row-reverse; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__image + cite {
  margin-right: 20px;
  margin-left: 0; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__footer, .elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__footer {
  flex-direction: row; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__image + cite {
  margin-right: 0;
  margin-left: 20px; }

.elementor-testimonial--layout-image_inline .elementor-testimonial__footer {
  margin-top: 25px; }

.elementor-testimonial--layout-image_above .elementor-testimonial {
  display: flex;
  flex-direction: column-reverse; }
  .elementor-testimonial--layout-image_above .elementor-testimonial__footer {
    margin-bottom: 25px; }

.elementor-testimonial--layout-image_stacked .elementor-testimonial__footer {
  margin-top: 25px;
  flex-wrap: wrap; }

.elementor-testimonial--layout-image_stacked .elementor-testimonial__image, .elementor-testimonial--layout-image_stacked .elementor-testimonial cite {
  margin-top: 15px;
  width: 100%; }

.elementor-testimonial--layout-image_left .elementor-testimonial, .elementor-testimonial--layout-image_right .elementor-testimonial {
  display: flex;
  align-items: stretch; }
  .elementor-testimonial--layout-image_left .elementor-testimonial__footer, .elementor-testimonial--layout-image_right .elementor-testimonial__footer {
    flex-shrink: 0;
    flex-direction: column;
    text-align: center; }
  .elementor-testimonial--layout-image_left .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_right .elementor-testimonial__image + cite {
    margin-top: 15px; }

.elementor-testimonial--layout-image_left.elementor-testimonial--align-center .elementor-testimonial__footer, .elementor-testimonial--layout-image_right.elementor-testimonial--align-center .elementor-testimonial__footer {
  justify-content: flex-start; }

.elementor-testimonial--layout-image_left .elementor-testimonial {
  flex-direction: row-reverse; }
  .elementor-testimonial--layout-image_left .elementor-testimonial__footer {
    padding-right: 20px; }

.elementor-testimonial--layout-image_right .elementor-testimonial {
  flex-direction: row; }
  .elementor-testimonial--layout-image_right .elementor-testimonial__footer {
    padding-left: 20px; }

.elementor-testimonial--align-right .elementor-testimonial {
  text-align: right; }

.elementor-testimonial--align-left .elementor-testimonial {
  text-align: left; }

.elementor-testimonial--align-center .elementor-testimonial {
  text-align: center; }
  .elementor-testimonial--align-center .elementor-testimonial__footer {
    justify-content: center; }

.elementor-testimonial--align-center.elementor-testimonial--layout-image_inline .elementor-testimonial__image + cite {
  text-align: left; }

.elementor-testimonial--skin-default.elementor-testimonial--layout-image_right .elementor-testimonial__cite, .elementor-testimonial--skin-default.elementor-testimonial--layout-image_left .elementor-testimonial__cite, .elementor-testimonial--skin-default.elementor-testimonial--layout-image_above .elementor-testimonial__cite {
  width: 100%;
  display: flex;
  flex-direction: column;
  margin-top: 25px; }

.elementor-testimonial--skin-bubble .elementor-testimonial__content {
  background-color: #e6e9ec;
  padding: 20px;
  position: relative; }
  .elementor-testimonial--skin-bubble .elementor-testimonial__content:after {
    content: '';
    display: block;
    width: 14px;
    height: 14px;
    background-color: #e6e9ec;
    position: absolute;
    transform: scaleX(0.75) rotate(45deg);
    border-width: 0;
    box-sizing: content-box; }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above .elementor-testimonial__content:after {
  bottom: calc( 100% - 7px);
  transform: scaleX(0.75) rotate(-135deg); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-center .elementor-testimonial__content:after {
  left: 50%;
  transform: translateX(-50%) scaleX(0.75) rotate(-135deg); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline .elementor-testimonial__content:after {
  top: calc( 100% - 7px); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-center .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-center .elementor-testimonial__content:after {
  left: 50%;
  transform: translateX(-50%) scaleX(0.75) rotate(45deg); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-left .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__content:after {
  left: calc( 20px + ( 50px / 2 )); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-right .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__content:after {
  right: calc( 20px + ( 50px / 2 )); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after {
  transform: scaleY(0.75) rotate(135deg);
  left: -8px; }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after {
  transform: scaleY(0.75) rotate(-45deg);
  right: -8px; }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after {
  top: calc(20px + (50px / 2)); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__footer, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__footer {
  padding-top: 20px; }

.elementor-widget-testimonial-carousel .swiper-slide {
  padding: 20px; }

.elementor-widget-testimonial-carousel .elementor-testimonial__text {
  font-size: 1.3em;
  font-style: italic;
  line-height: 1.5; }

.elementor-widget-testimonial-carousel .elementor-testimonial__image img {
  width: 50px;
  height: 50px; }

.elementor-widget-reviews .swiper-slide {
  background-color: white;
  border: 1px solid #e1e8ed;
  border-radius: 5px;
  padding: 0; }

.elementor-widget-reviews .elementor-testimonial__text {
  font-size: 14px;
  line-height: 20px; }

.elementor-widget-reviews .elementor-testimonial__name {
  color: #1c2022; }

.elementor-widget-reviews .elementor-testimonial__title {
  color: #697882;
  font-size: 12.5px;
  font-weight: normal;
  font-family: inherit; }

.elementor-widget-reviews .elementor-testimonial__image {
  display: flex; }
  .elementor-widget-reviews .elementor-testimonial__image img {
    width: 36px;
    height: 36px; }

.elementor-widget-reviews .elementor-testimonial__icon {
  margin-left: auto;
  font-size: 17px; }
  .elementor-widget-reviews .elementor-testimonial__icon .fa + .fa {
    margin-left: 0.15em; }
  .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon {
    color: var(--e-testimonial-icon-color); }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-android {
      --e-testimonial-icon-color: #A4C639; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-apple {
      --e-testimonial-icon-color: #999999; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-behance {
      --e-testimonial-icon-color: #1769ff; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-bitbucket {
      --e-testimonial-icon-color: #205081; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-codepen {
      --e-testimonial-icon-color: #000000; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-delicious {
      --e-testimonial-icon-color: #3399ff; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-digg {
      --e-testimonial-icon-color: #005be2; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-dribbble {
      --e-testimonial-icon-color: #ea4c89; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-envelope {
      --e-testimonial-icon-color: #ea4335; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-facebook {
      --e-testimonial-icon-color: #3b5998; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-flickr {
      --e-testimonial-icon-color: #0063dc; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-foursquare {
      --e-testimonial-icon-color: #2d5be3; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-github {
      --e-testimonial-icon-color: #333333; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-google-plus {
      --e-testimonial-icon-color: #dd4b39; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-houzz {
      --e-testimonial-icon-color: #7ac142; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-instagram {
      --e-testimonial-icon-color: #262626; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-jsfiddle {
      --e-testimonial-icon-color: #487AA2; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-linkedin {
      --e-testimonial-icon-color: #0077b5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-medium {
      --e-testimonial-icon-color: #00ab6b; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-meetup {
      --e-testimonial-icon-color: #ec1c40; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-mixcloud {
      --e-testimonial-icon-color: #273a4b; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-odnoklassniki {
      --e-testimonial-icon-color: #F4731C; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-pinterest {
      --e-testimonial-icon-color: #bd081c; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-product-hunt {
      --e-testimonial-icon-color: #da552f; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-reddit {
      --e-testimonial-icon-color: #ff4500; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-rss {
      --e-testimonial-icon-color: #f26522; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-shopping-cart {
      --e-testimonial-icon-color: #4CAF50; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-skype {
      --e-testimonial-icon-color: #00AFF0; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-slideshare {
      --e-testimonial-icon-color: #0077b5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-snapchat {
      --e-testimonial-icon-color: #fffc00; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-soundcloud {
      --e-testimonial-icon-color: #ff8800; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-spotify {
      --e-testimonial-icon-color: #2ebd59; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stack-overflow {
      --e-testimonial-icon-color: #fe7a15; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-steam {
      --e-testimonial-icon-color: #00adee; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stumbleupon {
      --e-testimonial-icon-color: #EB4924; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-telegram {
      --e-testimonial-icon-color: #2CA5E0; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumb-tack, .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumbtack {
      --e-testimonial-icon-color: #1aa1d8; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tripadvisor {
      --e-testimonial-icon-color: #589442; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tumblr {
      --e-testimonial-icon-color: #35465c; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitch {
      --e-testimonial-icon-color: #6441A5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitter {
      --e-testimonial-icon-color: #1DA1F2; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vimeo {
      --e-testimonial-icon-color: #1ab7ea; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vk {
      --e-testimonial-icon-color: #45668e; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weibo {
      --e-testimonial-icon-color: #DD2430; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weixin {
      --e-testimonial-icon-color: #31A918; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-whatsapp {
      --e-testimonial-icon-color: #25d366; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-wordpress {
      --e-testimonial-icon-color: #21759b; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-xing {
      --e-testimonial-icon-color: #026466; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-yelp {
      --e-testimonial-icon-color: #af0606; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-youtube {
      --e-testimonial-icon-color: #cd201f; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-500px {
      --e-testimonial-icon-color: #0099e5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon svg {
      fill: var(--e-testimonial-icon-color); }

.elementor-widget-reviews .elementor-testimonial__rating {
  background-image: linear-gradient(to right, #ffc82c var(--rating), #cccccc var(--rating));
  font-family: eicons; }

.elementor-widget-reviews .elementor-testimonial__header {
  display: flex;
  padding-top: 15px;
  padding-bottom: 6px; }

.elementor-widget-reviews .elementor-testimonial__image + cite {
  margin-left: 9px; }

.elementor-widget-reviews .elementor-testimonial__separator {
  margin: 0 auto;
  border-top: 0 none;
  border-bottom: 1px solid #e1e8ed;
  height: 0; }

.elementor-widget-reviews .elementor-testimonial__content {
  padding-top: 6px;
  padding-bottom: 15px; }

.elementor-widget-reviews .elementor-testimonial__content, .elementor-widget-reviews .elementor-testimonial__header {
  padding-left: 15px;
  padding-right: 15px; }

.elementor-widget-reviews.elementor-review--has-separator .elementor-testimonial__header {
  border-bottom: 1px solid #e1e8ed; }

.swiper-pagination-bullets {
  color: #fff;
  cursor: default; }

.swiper-slide {
  will-change: transform;
  border-style: solid;
  border-width: 0;
  transition-duration: .5s;
  transition-property: border, background, transform;
  overflow: hidden; }
  .swiper-slide:not(:hover) .e-overlay-animation-fade {
    opacity: 0; }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-up {
    transform: translateY(100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-down {
    transform: translateY(-100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-right {
    transform: translateX(-100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-left {
    transform: translateX(100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-zoom-in {
    transform: scale(0.5);
    opacity: 0; }
  .swiper-slide a {
    display: inline; }
    .swiper-slide a.elementor-button {
      display: inline-block; }

.elementor-widget-testimonial-carousel .elementor-arrows-yes .elementor-main-swiper,
.elementor-widget-reviews .elementor-arrows-yes .elementor-main-swiper {
  width: calc( 95% - 40px); }

.elementor-widget-testimonial-carousel .elementor-main-swiper,
.elementor-widget-reviews .elementor-main-swiper {
  width: 95%; }

.elementor-widget-testimonial-carousel .swiper-wrapper,
.elementor-widget-reviews .swiper-wrapper {
  display: flex;
  align-items: stretch; }

.elementor-widget-testimonial-carousel .swiper-slide,
.elementor-widget-reviews .swiper-slide {
  height: auto; }

.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .swiper-container, .elementor-widget-testimonial-carousel.elementor-pagination-type-fraction .swiper-container,
.elementor-widget-reviews.elementor-pagination-type-bullets .swiper-container,
.elementor-widget-reviews.elementor-pagination-type-fraction .swiper-container {
  padding-bottom: 40px; }

.elementor-widget-testimonial-carousel .elementor-swiper-button-prev,
.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-next,
.elementor-widget-reviews .elementor-swiper-button-prev,
.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-next {
  left: 0;
  right: unset; }

.elementor-widget-testimonial-carousel .elementor-swiper-button-next,
.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-prev,
.elementor-widget-reviews .elementor-swiper-button-next,
.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-prev {
  right: 0;
  left: unset; }

.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-next, .elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-prev,
.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-next,
.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-prev {
  top: calc( 50% - ( 40px / 2 )); }

.elementor-widget-media-carousel .elementor-swiper-button-prev,
.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-next {
  left: 10px;
  right: unset; }

.elementor-widget-media-carousel .elementor-swiper-button-next,
.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-prev {
  right: 10px;
  left: unset; }

.entry-content blockquote.elementor-blockquote:not(.alignright):not(.alignleft),
.entry-summary blockquote.elementor-blockquote {
  margin-right: 0;
  margin-left: 0; }

.elementor-widget-blockquote blockquote {
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  font-size: 100%;
  vertical-align: baseline;
  background: transparent;
  quotes: none;
  border-left: 0 none;
  border-right: 0 none;
  border-top: 0 none;
  border-bottom: 0 none;
  font-style: normal;
  color: #55595c; }
  .elementor-widget-blockquote blockquote:before, .elementor-widget-blockquote blockquote:after,
  .elementor-widget-blockquote blockquote footer:before,
  .elementor-widget-blockquote blockquote footer:after,
  .elementor-widget-blockquote blockquote cite:before,
  .elementor-widget-blockquote blockquote cite:after {
    content: '';
    content: none; }

.elementor-blockquote {
  transition: 0.3s; }
  .elementor-blockquote__author, .elementor-blockquote__content {
    margin-bottom: 0;
    font-style: normal; }
  .elementor-blockquote__author {
    font-weight: bold; }
  .elementor-blockquote footer {
    margin-top: 12px;
    display: flex;
    justify-content: space-between; }
  .elementor-blockquote__tweet-button {
    display: flex;
    transition: 0.3s;
    color: #1DA1F2;
    align-self: flex-end;
    line-height: 1;
    position: relative;
    width: max-content; }
    .elementor-blockquote__tweet-button:hover {
      color: #0967a0; }
    .elementor-blockquote__tweet-button span {
      font-weight: 600; }
    .elementor-blockquote__tweet-button i, .elementor-blockquote__tweet-button span {
      vertical-align: middle; }
    .elementor-blockquote__tweet-button i + span,
    .elementor-blockquote__tweet-button svg + span {
      margin-left: 0.5em; }
    .elementor-blockquote__tweet-button svg {
      fill: #1DA1F2;
      height: 1em;
      width: 1em; }
  .elementor-blockquote__tweet-label {
    white-space: pre-wrap; }
  .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button {
    padding: 0.7em 1.2em;
    border-radius: 100em;
    background-color: #1DA1F2;
    color: #fff;
    font-size: 15px; }
    .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover {
      background-color: #0967a0;
      color: #fff; }
      .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover:before, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover:before {
        border-right-color: #0967a0; }
    .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button svg, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button svg {
      fill: #fff;
      height: 1em;
      width: 1em; }
  .elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button, .elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button {
    padding: 0;
    width: 2em;
    height: 2em; }
    .elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i, .elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i {
      position: absolute;
      left: 50%;
      top: 50%;
      transform: translate(-50%, -50%); }
  .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:before {
    content: '';
    border: solid 0.5em transparent;
    border-right-color: #1DA1F2;
    position: absolute;
    left: -0.8em;
    top: 50%;
    transform: translateY(-50%) scale(1, 0.65);
    transition: 0.3s; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:before {
    right: auto;
    left: -0.8em;
    border-right-color: #1DA1F2;
    border-left-color: transparent; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:hover:before {
    border-right-color: #0967a0; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:before {
    left: auto;
    right: -0.8em;
    border-right-color: transparent;
    border-left-color: #1DA1F2; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:hover:before {
    border-left-color: #0967a0; }
  .elementor-blockquote--skin-boxed .elementor-blockquote {
    background-color: #e6e9ec;
    padding: 30px; }
  .elementor-blockquote--skin-border .elementor-blockquote {
    border-color: #e6e9ec;
    border-style: solid;
    border-left-width: 7px;
    padding-left: 20px; }
  .elementor-blockquote--skin-quotation .elementor-blockquote:before {
    content: '“';
    font-size: 100px;
    color: #e6e9ec;
    font-family: "Times New Roman", Times, serif;
    font-weight: 900;
    line-height: 1;
    display: block;
    height: 0.6em; }
  .elementor-blockquote--skin-quotation .elementor-blockquote__content {
    margin-top: 15px; }
  .elementor-blockquote--align-left .elementor-blockquote__content {
    text-align: left; }
  .elementor-blockquote--align-left .elementor-blockquote footer {
    flex-direction: row; }
  .elementor-blockquote--align-right .elementor-blockquote__content {
    text-align: right; }
  .elementor-blockquote--align-right .elementor-blockquote footer {
    flex-direction: row-reverse; }
  .elementor-blockquote--align-center .elementor-blockquote {
    text-align: center; }
    .elementor-blockquote--align-center .elementor-blockquote footer {
      display: block; }
    .elementor-blockquote--align-center .elementor-blockquote__author {
      display: block; }
    .elementor-blockquote--align-center .elementor-blockquote__tweet-button {
      margin-right: auto;
      margin-left: auto; }

.elementor-headline {
  font-size: 43px;
  line-height: 1.2;
  display: block; }
  .elementor-headline-dynamic-text {
    color: var(--dynamic-text-color, #aebcb9); }
  .elementor-headline--style-rotate .elementor-headline-dynamic-wrapper {
    text-align: left; }
  .elementor-headline--style-highlight .elementor-headline-dynamic-wrapper {
    overflow: visible;
    text-align: inherit; }
  .elementor-headline--style-highlight .elementor-headline-dynamic-text {
    z-index: 1; }
  .elementor-headline--style-highlight .elementor-headline-plain-text {
    z-index: 1;
    position: relative; }
  .elementor-headline--style-highlight svg {
    position: absolute;
    top: 50%;
    left: 50%;
    width: calc( 100% + 20px);
    height: calc( 100% + 20px);
    transform: translate(-50%, -50%);
    overflow: visible; }
    .elementor-headline--style-highlight svg path {
      stroke: red;
      stroke-width: 9;
      fill: none;
      opacity: 0;
      stroke-dasharray: 0 1500;
      transition: 0.3s; }
  .elementor-headline.e-animated svg path {
    animation: elementor-headline-dash forwards;
    animation-duration: var(--animation-duration, 1.2s);
    animation-iteration-count: 1; }
    .elementor-headline.e-animated svg path:nth-of-type(2) {
      animation-delay: calc(var(--animation-duration, 1.2s) / 2); }
  .elementor-headline.e-hide-highlight svg path {
    opacity: 1;
    stroke-dasharray: 1500 1500;
    animation: hide-highlight 0.4s forwards;
    animation-iteration-count: 1; }

@keyframes elementor-headline-dash {
  from {
    stroke-dasharray: 0 1500;
    opacity: 1; }
  to {
    stroke-dasharray: 1500 1500;
    opacity: 1; } }

@keyframes hide-highlight {
  from {
    opacity: 1;
    stroke-dasharray: 1500 1500; }
  to {
    opacity: 0;
    filter: blur(10px); } }

.elementor-headline-text-wrapper {
  vertical-align: bottom; }

.elementor-headline-dynamic-wrapper {
  display: inline-block;
  position: relative; }
  .elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text {
    display: inline-block;
    position: absolute;
    top: 0;
    left: 0; }
    .elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text.elementor-headline-text-active {
      position: relative; }

.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper {
  perspective: 300px; }

.elementor-headline-animation-type-flip .elementor-headline-dynamic-text {
  opacity: 0;
  transform-origin: 50% 100%;
  transform: rotateX(180deg); }
  .elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1;
    transform: rotateX(0deg);
    animation: elementor-headline-flip-in 1.2s; }
  .elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    transform: rotateX(180deg);
    animation: elementor-headline-flip-out 1.2s; }

@keyframes elementor-headline-flip-in {
  0% {
    transform: rotateX(180deg);
    opacity: 0; }
  35% {
    transform: rotateX(120deg);
    opacity: 0; }
  65% {
    opacity: 0; }
  100% {
    transform: rotateX(360deg);
    opacity: 1; } }

@keyframes elementor-headline-flip-out {
  0% {
    transform: rotateX(0deg);
    opacity: 1; }
  35% {
    transform: rotateX(-40deg);
    opacity: 1; }
  65% {
    opacity: 0; }
  100% {
    transform: rotateX(180deg);
    opacity: 0; } }

.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper {
  vertical-align: top;
  overflow: hidden; }
  .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper::after {
    /* vertical bar */
    content: '';
    position: absolute;
    left: auto;
    right: 0;
    top: 50%;
    transform: translateY(-50%);
    height: 90%;
    width: 1px;
    background-color: #0d0d0d; }
  .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:not(.elementor-headline-typing-selected):after {
    animation: elementor-headline-pulse 1s infinite; }
  .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected {
    background-color: var(--typing-selected-bg-color, #0d0d0d); }
    .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected::after {
      visibility: hidden; }
    .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected .elementor-headline-dynamic-text {
      color: var(--typing-selected-color, var(--dynamic-text-color), #aebcb9); }

.elementor-headline-animation-type-typing .elementor-headline-dynamic-text:not(.elementor-headline-text-active) {
  visibility: hidden; }

.elementor-headline-animation-type-typing .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
  position: absolute;
  visibility: hidden; }

@keyframes elementor-headline-pulse {
  0% {
    transform: translateY(-50%) scale(1);
    opacity: 1; }
  40% {
    transform: translateY(-50%) scale(0.9);
    opacity: 0; }
  100% {
    transform: translateY(-50%) scale(0);
    opacity: 0; } }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper {
  perspective: 300px; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter {
  display: inline-block;
  backface-visibility: hidden; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text {
  transform: scaleX(1.0005);
  opacity: 0; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter {
  transform-style: preserve-3d;
  transform: translateZ(-20px) rotateX(90deg);
  opacity: 0; }
  .elementor-headline-text-active .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter {
    opacity: 1; }
  .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter.elementor-headline-animation-in {
    animation: elementor-headline-swirl-in .4s forwards; }
  .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
    animation: elementor-headline-swirl-out .4s forwards; }

@keyframes elementor-headline-swirl-in {
  0% {
    opacity: 0;
    transform: translateZ(-20px) rotateX(90deg); }
  60% {
    opacity: 1;
    transform: translateZ(-20px) rotateX(-10deg); }
  100% {
    opacity: 1;
    transform: translateZ(-20px) rotateX(0deg); } }

@keyframes elementor-headline-swirl-out {
  0% {
    opacity: 1;
    transform: translateZ(-20px) rotateX(0); }
  60% {
    opacity: 0;
    transform: translateZ(-20px) rotateX(-100deg); }
  100% {
    opacity: 0;
    transform: translateZ(-20px) rotateX(-90deg); } }

.elementor-headline-animation-type-slide-down .elementor-headline-text-wrapper {
  display: inline-block;
  padding: .2em 0; }

.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper {
  overflow: hidden;
  vertical-align: top; }

.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text {
  opacity: 0;
  top: .2em; }
  .elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-active {
    top: 0;
    opacity: 1;
    animation: elementor-headline-slide-down-in .6s; }
  .elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    animation: elementor-headline-slide-down-out .6s; }

@keyframes elementor-headline-slide-down-in {
  0% {
    opacity: 0;
    transform: translateY(-100%); }
  60% {
    opacity: 1;
    transform: translateY(20%); }
  100% {
    opacity: 1;
    transform: translateY(0); } }

@keyframes elementor-headline-slide-down-out {
  0% {
    opacity: 1;
    transform: translateY(0); }
  60% {
    opacity: 0;
    transform: translateY(120%); }
  100% {
    opacity: 0;
    transform: translateY(100%); } }

.elementor-headline-animation-type-clip .elementor-headline-text-wrapper {
  display: inline-block;
  padding: .2em 0; }

.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper {
  overflow: hidden;
  vertical-align: top; }
  .elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper::after {
    /* line */
    content: '';
    position: absolute;
    top: 0;
    left: auto;
    right: 0;
    width: 2px;
    height: 100%;
    background-color: #0d0d0d; }

.elementor-headline-animation-type-clip .elementor-headline-dynamic-text {
  opacity: 0; }
  .elementor-headline-animation-type-clip .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1; }

.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper {
  perspective: 300px; }

.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text {
  opacity: 0; }
  .elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1;
    animation: elementor-headline-drop-in-in .8s; }
  .elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    animation: elementor-headline-drop-in-out .8s; }

@keyframes elementor-headline-drop-in-in {
  0% {
    opacity: 0;
    transform: translateZ(100px); }
  100% {
    opacity: 1;
    transform: translateZ(0); } }

@keyframes elementor-headline-drop-in-out {
  0% {
    opacity: 1;
    transform: translateZ(0); }
  100% {
    opacity: 0;
    transform: translateZ(-100px); } }

.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper {
  perspective: 300px; }

.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text {
  opacity: 0; }

.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter {
  display: inline-block;
  transform: rotateY(180deg);
  backface-visibility: hidden; }
  .elementor-headline-text-active .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter {
    transform: rotateY(0deg); }
  .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter.elementor-headline-animation-in {
    animation: elementor-headline-blinds-in .6s forwards; }
  .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
    animation: elementor-headline-blinds-out .6s forwards; }

@keyframes elementor-headline-blinds-in {
  0% {
    transform: rotateY(180deg); }
  100% {
    transform: rotateY(0deg); } }

@keyframes elementor-headline-blinds-out {
  0% {
    transform: rotateY(0); }
  100% {
    transform: rotateY(-180deg); } }

.elementor-headline-animation-type-wave .elementor-headline-dynamic-text {
  opacity: 0; }

.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter {
  display: inline-block;
  opacity: 0;
  transform: scale(0); }
  .elementor-headline-text-active .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter {
    opacity: 1; }
  .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter.elementor-headline-animation-in {
    animation: elementor-headline-wave-up .6s forwards; }
  .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
    animation: elementor-headline-wave-down .6s forwards; }

@keyframes elementor-headline-wave-up {
  0% {
    transform: scale(0);
    opacity: 0; }
  60% {
    transform: scale(1.2);
    opacity: 1; }
  100% {
    transform: scale(1);
    opacity: 1; } }

@keyframes elementor-headline-wave-down {
  0% {
    transform: scale(1);
    opacity: 1; }
  60% {
    transform: scale(0);
    opacity: 0; } }

.elementor-headline-animation-type-slide .elementor-headline-dynamic-text {
  opacity: 0; }
  .elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1;
    animation: elementor-headline-slide-in .6s; }
  .elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    animation: elementor-headline-slide-out .6s; }

@keyframes elementor-headline-slide-in {
  0% {
    opacity: 0;
    transform: translateX(-100%); }
  60% {
    opacity: 1;
    transform: translateX(10%); }
  100% {
    opacity: 1;
    transform: translateX(0); } }

@keyframes elementor-headline-slide-out {
  0% {
    opacity: 1;
    transform: translateX(0); }
  60% {
    opacity: 0;
    transform: translateX(110%); }
  100% {
    opacity: 0;
    transform: translateX(100%); } }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-slide .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper {
  transition: width 0.5s; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper {
  overflow: hidden; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text, .elementor-headline-animation-type-blinds .elementor-headline-dynamic-text, .elementor-headline-animation-type-wave .elementor-headline-dynamic-text {
  white-space: nowrap; }

.elementor-msie .elementor-headline--style-highlight svg {
  top: auto;
  left: auto;
  transform: translate(-100%); }

/* Animations */
@keyframes e-hotspot-soft-beat {
  from {
    transform: scale(1); }
  to {
    transform: scale(1.1); } }

@keyframes e-hotspot-expand {
  from {
    transform: scale(0.5);
    opacity: 1; }
  to {
    transform: scale(1.5);
    opacity: 0; } }

/* Hotspot Wrapper */
.elementor-widget-hotspot {
  display: flex;
  justify-content: var(--background-align); }
  .elementor-widget-hotspot .elementor-widget-container {
    position: relative;
    display: inline-block;
    width: var(--container-width);
    max-width: var(--container-max-width);
    height: var(--container-height); }
    .elementor-widget-hotspot .elementor-widget-container > img {
      display: block;
      width: var(--image-width, auto);
      height: var(--container-height);
      opacity: var(--opacity, 1); }

/* Each Hotspot */
.e-hotspot {
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  position: absolute;
  /* Hotspot Button Animations */
  /* End: Hotspot Button Animations */ }
  .e-hotspot--position-left.e-hotspot--position-top {
    transform: translate(calc( -1 * var( --hotspot-translate-x )), calc( -1 * var( --hotspot-translate-y ))); }
  .e-hotspot--position-left.e-hotspot--position-bottom {
    transform: translate(calc( -1 * var( --hotspot-translate-x )), var(--hotspot-translate-y)); }
  .e-hotspot--position-right.e-hotspot--position-top {
    transform: translate(var(--hotspot-translate-x), calc( -1 * var( --hotspot-translate-y ))); }
  .e-hotspot--position-right.e-hotspot--position-bottom {
    transform: translate(var(--hotspot-translate-x), var(--hotspot-translate-y)); }
  .e-hotspot--active {
    z-index: 2; }
  .e-hotspot__outer-circle, .e-hotspot__inner-circle {
    content: "";
    display: inline-block;
    box-sizing: content-box;
    border-radius: 50%; }
  .e-hotspot__inner-circle {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: var(--hotspot-color);
    padding: calc( var(--hotspot-size, 18px) / 2); }
  .e-hotspot__outer-circle {
    background-color: var(--hotspot-color);
    padding: var(--hotspot-padding, 4px);
    width: var(--hotspot-size, 18px);
    height: var(--hotspot-size, 18px); }
  .e-hotspot--icon .e-hotspot__button {
    line-height: 0;
    box-sizing: content-box;
    font-size: var(--hotspot-size, 18px);
    width: var(--hotspot-size, 18px);
    height: var(--hotspot-size, 18px); }
  .e-hotspot__icon, .e-hotspot__label {
    display: flex;
    justify-content: center;
    align-items: center; }
    .e-hotspot__icon svg, .e-hotspot__label svg {
      width: var(--hotspot-size, 18px);
      height: auto; }
  .e-hotspot__button {
    cursor: pointer;
    position: relative;
    display: grid;
    grid-auto-flow: column;
    justify-content: center;
    color: var(--hotspot-color);
    font-size: var(--hotspot-size, 18px);
    min-width: var(--hotspot-button-width);
    min-height: var(--hotspot-button-height); }
    .e-hotspot__button:before {
      z-index: -2;
      content: "";
      width: 100%;
      height: 100%;
      left: -5px;
      top: -5px;
      position: absolute;
      padding: 5px;
      box-sizing: content-box; }
    .e-hotspot__button svg {
      fill: var(--hotspot-color); }
  .e-hotspot:not(.e-hotspot--circle) .e-hotspot__button {
    min-width: var(--hotspot-min-width);
    min-height: var(--hotspot-min-height);
    background-color: var(--hotspot-box-color);
    padding: var(--hotspot-padding, 4px);
    border-radius: var(--hotspot-border-radius, 3px); }
    .e-hotspot:not(.e-hotspot--circle) .e-hotspot__button:before {
      border-radius: var(--hotspot-border-radius, 3px); }
  .e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand::before {
    background-color: var(--hotspot-box-color); }
  .e-hotspot--overlay {
    opacity: 0.7;
    transition: opacity 0.2s; }
  .e-hotspot--overlay:hover,
  .e-hotspot--active .e-hotspot--overlay {
    opacity: 1; }
  .e-hotspot--soft-beat {
    animation: e-hotspot-soft-beat 0.7s infinite alternate;
    animation-timing-function: ease; }
  .e-hotspot--expand .e-hotspot__outer-circle {
    animation: e-hotspot-expand 2s infinite; }
  .e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand::before {
    content: "";
    width: 100%;
    height: 100%;
    position: absolute;
    z-index: -1;
    opacity: 0;
    animation: e-hotspot-expand 2s infinite; }
  .e-hotspot--sequenced {
    animation: fadeIn 0.3s;
    animation-iteration-count: 1;
    animation-fill-mode: both; }
  .e-hotspot__direction-mask {
    overflow: hidden;
    position: absolute;
    pointer-events: none; }
  .e-hotspot__tooltip {
    white-space: var(--white-space, nowrap);
    transition-property: transform, opacity;
    transition-duration: var(--tooltip-transition-duration, 500ms);
    transform-origin: center center;
    position: absolute;
    pointer-events: none;
    color: var(--tooltip-text-color, #FFF);
    text-align: var(--tooltip-align);
    min-width: var(--tooltip-min-width);
    padding: var(--tooltip-padding, 8px);
    border-radius: var(--tooltip-border-radius);
    background-color: var(--tooltip-color); }
  .e-hotspot__tooltip p:last-of-type {
    margin-bottom: 0; }
  .e-hotspot__direction-mask .e-hotspot__tooltip {
    box-shadow: none !important;
    position: static; }
  .e-hotspot--active .e-hotspot__tooltip {
    pointer-events: visible; }
  .e-hotspot--fade-in-out {
    opacity: 0; }
  .e-hotspot--active .e-hotspot--fade-in-out {
    opacity: 1; }
  .e-hotspot--fade-grow {
    opacity: 0;
    transform: scale(0); }
  .e-hotspot--active .e-hotspot--fade-grow {
    opacity: 1;
    transform: scale(1); }
  .e-hotspot--tooltip-animation-from-top, .e-hotspot--override-tooltip-animation-from-top {
    transform: translate(0, calc(-100% - 1px)); }
  .e-hotspot--tooltip-animation-from-left, .e-hotspot--override-tooltip-animation-from-left {
    transform: translate(calc(-100% - 1px), 0); }
  .e-hotspot--tooltip-animation-from-right, .e-hotspot--override-tooltip-animation-from-right {
    transform: translate(calc(100% + 1px), 0); }
  .e-hotspot--tooltip-animation-from-bottom, .e-hotspot--override-tooltip-animation-from-bottom {
    transform: translate(0, calc(100% + 1px)); }
  .e-hotspot--fade-direction {
    opacity: 0; }
  .e-hotspot--active .e-hotspot--slide-direction,
  .e-hotspot--active .e-hotspot--fade-direction {
    transform: translate(0, 0) scale(1);
    opacity: 1; }
  .e-hotspot--show-tooltip {
    transition: none;
    opacity: 1;
    pointer-events: visible;
    transform: translate(0, 0); }

.elementor-facebook-widget.fb_iframe_widget {
  width: 100% !important; }
  .elementor-facebook-widget.fb_iframe_widget span {
    width: 100% !important; }
  .elementor-facebook-widget.fb_iframe_widget iframe {
    position: relative;
    width: 100% !important; }

.elementor-facebook-widget.fb-like {
  height: 1px; }

.elementor-widget-facebook-comments iframe {
  width: 100% !important; }

.site-main .menu-navigation-container {
  overflow: visible; }

.elementor-item:before, .elementor-item:after {
  display: block;
  position: absolute;
  transition: 0.3s;
  transition-timing-function: cubic-bezier(0.58, 0.3, 0.005, 1); }

.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  opacity: 0; }


.elementor-item:hover:before,
.elementor-item:hover:after,
.elementor-item:focus:before,
.elementor-item:focus:after,
.elementor-item.highlighted:before,
.elementor-item.highlighted:after,
.elementor-item-active:before,
.elementor-item-active:after {
  transform: scale(1); }

.e--pointer-double-line .elementor-item:before, .e--pointer-double-line .elementor-item:after, .e--pointer-underline .elementor-item:before, .e--pointer-underline .elementor-item:after, .e--pointer-overline .elementor-item:before, .e--pointer-overline .elementor-item:after {
  height: 3px;
  width: 100%;
  left: 0;
  background-color: #55595c;
  z-index: 2; }

.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  height: 0;
  width: 0;
  left: 50%; }

.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  top: 10px; }

.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  bottom: 10px; }

.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  top: -10px; }

.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  bottom: -10px; }

.e--pointer-double-line.e--animation-none,
.e--pointer-double-line.e--animation-none .elementor-item, .e--pointer-underline.e--animation-none,
.e--pointer-underline.e--animation-none .elementor-item, .e--pointer-overline.e--animation-none,
.e--pointer-overline.e--animation-none .elementor-item {
  transition-duration: 0s; }
  .e--pointer-double-line.e--animation-none:before, .e--pointer-double-line.e--animation-none:after, .e--pointer-double-line.e--animation-none:hover, .e--pointer-double-line.e--animation-none:focus,
  .e--pointer-double-line.e--animation-none .elementor-item:before,
  .e--pointer-double-line.e--animation-none .elementor-item:after,
  .e--pointer-double-line.e--animation-none .elementor-item:hover,
  .e--pointer-double-line.e--animation-none .elementor-item:focus, .e--pointer-underline.e--animation-none:before, .e--pointer-underline.e--animation-none:after, .e--pointer-underline.e--animation-none:hover, .e--pointer-underline.e--animation-none:focus,
  .e--pointer-underline.e--animation-none .elementor-item:before,
  .e--pointer-underline.e--animation-none .elementor-item:after,
  .e--pointer-underline.e--animation-none .elementor-item:hover,
  .e--pointer-underline.e--animation-none .elementor-item:focus, .e--pointer-overline.e--animation-none:before, .e--pointer-overline.e--animation-none:after, .e--pointer-overline.e--animation-none:hover, .e--pointer-overline.e--animation-none:focus,
  .e--pointer-overline.e--animation-none .elementor-item:before,
  .e--pointer-overline.e--animation-none .elementor-item:after,
  .e--pointer-overline.e--animation-none .elementor-item:hover,
  .e--pointer-overline.e--animation-none .elementor-item:focus {
    transition-duration: 0s; }

.e--pointer-double-line .elementor-item:before, .e--pointer-overline .elementor-item:before {
  content: '';
  top: 0; }

.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  width: 10px;
  left: -20px; }

.e--pointer-double-line .elementor-item:after, .e--pointer-underline .elementor-item:after {
  content: '';
  bottom: 0; }

.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  width: 10px;
  inset-inline-start: 100%; }

.e--pointer-framed .elementor-item:before, .e--pointer-framed .elementor-item:after {
  background: transparent;
  left: 0;
  top: 0;
  bottom: 0;
  right: 0;
  border: 3px solid #55595c; }

.e--pointer-framed .elementor-item:before {
  content: ''; }

.e--pointer-framed.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  transform: scale(0.75); }

.e--pointer-framed.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  transform: scale(1.25); }

.e--pointer-framed.e--animation-grow .elementor-item:before, .e--pointer-framed.e--animation-shrink .elementor-item:before {
  transition: opacity 0.2s, transform 0.4s; }

.e--pointer-framed.e--animation-draw .elementor-item:before, .e--pointer-framed.e--animation-draw .elementor-item:after {
  width: 3px;
  height: 3px; }

.e--pointer-framed.e--animation-draw .elementor-item:before {
  border-width: 0 0 3px 3px;
  transition: width 0.1s 0.2s, height 0.1s 0.3s, opacity 0.12s 0.22s; }

.e--pointer-framed.e--animation-draw .elementor-item:after {
  content: '';
  top: initial;
  bottom: 0;
  left: initial;
  right: 0;
  border-width: 3px 3px 0 0;
  transition: width 0.1s, height 0.1s 0.1s, opacity 0.02s 0.18s; }


.e--pointer-framed.e--animation-draw .elementor-item:hover:before,
.e--pointer-framed.e--animation-draw .elementor-item:hover:after,
.e--pointer-framed.e--animation-draw .elementor-item:focus:before,
.e--pointer-framed.e--animation-draw .elementor-item:focus:after,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,
.e--pointer-framed.e--animation-draw .elementor-item-active:before,
.e--pointer-framed.e--animation-draw .elementor-item-active:after {
  width: 100%;
  height: 100%; }


.e--pointer-framed.e--animation-draw .elementor-item:hover:before,
.e--pointer-framed.e--animation-draw .elementor-item:focus:before,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,
.e--pointer-framed.e--animation-draw .elementor-item-active:before {
  transition: opacity 0.02s, height 0.1s, width 0.1s 0.1s; }


.e--pointer-framed.e--animation-draw .elementor-item:hover:after,
.e--pointer-framed.e--animation-draw .elementor-item:focus:after,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,
.e--pointer-framed.e--animation-draw .elementor-item-active:after {
  transition: opacity 0.02s 0.2s, height 0.1s 0.2s, width 0.1s 0.3s; }

.e--pointer-framed.e--animation-corners .elementor-item:before, .e--pointer-framed.e--animation-corners .elementor-item:after {
  width: 3px;
  height: 3px; }

.e--pointer-framed.e--animation-corners .elementor-item:before {
  border-width: 3px 0 0 3px; }

.e--pointer-framed.e--animation-corners .elementor-item:after {
  content: '';
  top: initial;
  bottom: 0;
  left: initial;
  right: 0;
  border-width: 0 3px 3px 0; }


.e--pointer-framed.e--animation-corners .elementor-item:hover:before,
.e--pointer-framed.e--animation-corners .elementor-item:hover:after,
.e--pointer-framed.e--animation-corners .elementor-item:focus:before,
.e--pointer-framed.e--animation-corners .elementor-item:focus:after,
.e--pointer-framed.e--animation-corners .elementor-item.highlighted:before,
.e--pointer-framed.e--animation-corners .elementor-item.highlighted:after,
.e--pointer-framed.e--animation-corners .elementor-item-active:before,
.e--pointer-framed.e--animation-corners .elementor-item-active:after {
  width: 100%;
  height: 100%;
  transition: opacity 0.002s, width 0.4s, height 0.4s; }

.e--pointer-framed.e--animation-none,
.e--pointer-framed.e--animation-none .elementor-item {
  transition-duration: 0s; }
  .e--pointer-framed.e--animation-none:before, .e--pointer-framed.e--animation-none:after, .e--pointer-framed.e--animation-none:hover, .e--pointer-framed.e--animation-none:focus,
  .e--pointer-framed.e--animation-none .elementor-item:before,
  .e--pointer-framed.e--animation-none .elementor-item:after,
  .e--pointer-framed.e--animation-none .elementor-item:hover,
  .e--pointer-framed.e--animation-none .elementor-item:focus {
    transition-duration: 0s; }

.e--pointer-background .elementor-item:before, .e--pointer-background .elementor-item:after {
  content: '';
  transition: 0.3s; }

.e--pointer-background .elementor-item:before {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: #55595c;
  z-index: -1; }


.e--pointer-background .elementor-item:hover,
.e--pointer-background .elementor-item:focus,
.e--pointer-background .elementor-item.highlighted,
.e--pointer-background .elementor-item-active {
  color: #fff; }

.e--pointer-background.e--animation-grow .elementor-item:before {
  transform: scale(0.5); }


.e--pointer-background.e--animation-grow .elementor-item:hover:before,
.e--pointer-background.e--animation-grow .elementor-item:focus:before,
.e--pointer-background.e--animation-grow .elementor-item.highlighted:before,
.e--pointer-background.e--animation-grow .elementor-item-active:before {
  transform: scale(1);
  opacity: 1; }

.e--pointer-background.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  transform: scale(1.2);
  transition: 0.3s; }


.e--pointer-background.e--animation-shrink .elementor-item:hover:before,
.e--pointer-background.e--animation-shrink .elementor-item:focus:before,
.e--pointer-background.e--animation-shrink .elementor-item.highlighted:before,
.e--pointer-background.e--animation-shrink .elementor-item-active:before {
  transition: opacity 0.15s, transform 0.4s; }

.e--pointer-background.e--animation-sweep-left .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  left: 100%; }

.e--pointer-background.e--animation-sweep-right .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  right: 100%; }

.e--pointer-background.e--animation-sweep-up .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  top: 100%; }

.e--pointer-background.e--animation-sweep-down .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  bottom: 100%; }

.e--pointer-background.e--animation-shutter-out-vertical .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  bottom: 50%;
  top: 50%; }

.e--pointer-background.e--animation-shutter-out-horizontal .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  right: 50%;
  left: 50%; }

.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after, .e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: #55595c;
  z-index: -1; }

.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:before {
  top: 0;
  bottom: 100%; }

.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after {
  top: 100%;
  bottom: 0; }


.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:before,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:before,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:before,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:before {
  bottom: 50%; }


.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:after,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:after,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:after,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:after {
  top: 50%; }

.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:before {
  right: 0;
  left: 100%; }

.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after {
  right: 100%;
  left: 0; }


.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:before,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:before,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:before,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:before {
  left: 50%; }


.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:after,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:after,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:after,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:after {
  right: 50%; }

.e--pointer-background.e--animation-none,
.e--pointer-background.e--animation-none .elementor-item {
  transition-duration: 0s; }
  .e--pointer-background.e--animation-none:before, .e--pointer-background.e--animation-none:after, .e--pointer-background.e--animation-none:hover, .e--pointer-background.e--animation-none:focus,
  .e--pointer-background.e--animation-none .elementor-item:before,
  .e--pointer-background.e--animation-none .elementor-item:after,
  .e--pointer-background.e--animation-none .elementor-item:hover,
  .e--pointer-background.e--animation-none .elementor-item:focus {
    transition-duration: 0s; }

.e--pointer-text.e--animation-skew .elementor-item:hover,
.e--pointer-text.e--animation-skew .elementor-item:focus {
  transform: skew(-8deg); }

.e--pointer-text.e--animation-grow .elementor-item:hover,
.e--pointer-text.e--animation-grow .elementor-item:focus {
  transform: scale(1.2); }

.e--pointer-text.e--animation-shrink .elementor-item:hover,
.e--pointer-text.e--animation-shrink .elementor-item:focus {
  transform: scale(0.8); }

.e--pointer-text.e--animation-float .elementor-item:hover,
.e--pointer-text.e--animation-float .elementor-item:focus {
  transform: translateY(-8px); }

.e--pointer-text.e--animation-sink .elementor-item:hover,
.e--pointer-text.e--animation-sink .elementor-item:focus {
  transform: translateY(8px); }

.e--pointer-text.e--animation-rotate .elementor-item:hover,
.e--pointer-text.e--animation-rotate .elementor-item:focus {
  transform: rotate(6deg); }

.e--pointer-text.e--animation-none,
.e--pointer-text.e--animation-none .elementor-item {
  transition-duration: 0s; }
  .e--pointer-text.e--animation-none:before, .e--pointer-text.e--animation-none:after, .e--pointer-text.e--animation-none:hover, .e--pointer-text.e--animation-none:focus,
  .e--pointer-text.e--animation-none .elementor-item:before,
  .e--pointer-text.e--animation-none .elementor-item:after,
  .e--pointer-text.e--animation-none .elementor-item:hover,
  .e--pointer-text.e--animation-none .elementor-item:focus {
    transition-duration: 0s; }

.elementor-nav-menu--main .elementor-nav-menu a {
  transition: 0.4s; }
  .elementor-nav-menu--main .elementor-nav-menu a, .elementor-nav-menu--main .elementor-nav-menu a:hover, .elementor-nav-menu--main .elementor-nav-menu a:focus, .elementor-nav-menu--main .elementor-nav-menu a.highlighted {
    padding: 13px 20px; }
  .elementor-nav-menu--main .elementor-nav-menu a.current {
    background: #373a3c;
    color: #fff; }
  .elementor-nav-menu--main .elementor-nav-menu a.disabled {
    background: #55595c;
    color: #a1a6a9; }

.elementor-nav-menu--main .elementor-nav-menu ul {
  position: absolute;
  width: 12em;
  border-width: 0;
  border-style: solid;
  padding: 0; }

.elementor-nav-menu--main .elementor-nav-menu span.scroll-up,
.elementor-nav-menu--main .elementor-nav-menu span.scroll-down {
  position: absolute;
  display: none;
  visibility: hidden;
  overflow: hidden;
  background: #fff;
  height: 20px; }

.elementor-nav-menu--main .elementor-nav-menu span.scroll-up-arrow, .elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow, .elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow {
  position: absolute;
  top: -2px;
  left: 50%;
  margin-left: -8px;
  width: 0;
  height: 0;
  overflow: hidden;
  border-width: 8px;
  border-style: dashed dashed solid dashed;
  border-color: transparent transparent #494c4f transparent; }

.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow {
  top: 6px;
  border-style: solid dashed dashed dashed;
  border-color: #494c4f transparent transparent transparent; }

.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow i {
  transform: rotate(-90deg); }

.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow .e-font-icon-svg {
  height: 1em;
  width: 1em; }

.elementor-nav-menu--layout-horizontal {
  display: flex; }
  .elementor-nav-menu--layout-horizontal .elementor-nav-menu {
    display: flex;
    flex-wrap: wrap; }
    .elementor-nav-menu--layout-horizontal .elementor-nav-menu a {
      white-space: nowrap;
      flex-grow: 1; }
    .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li {
      display: flex; }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li ul, .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li > .scroll-down {
        top: 100% !important; }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > a {
        margin-inline-start: var(--e-nav-menu-horizontal-menu-item-margin); }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > ul, .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > .scroll-down, .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > .scroll-up {
        left: var(--e-nav-menu-horizontal-menu-item-margin) !important; }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:last-child) > a {
        margin-inline-end: var(--e-nav-menu-horizontal-menu-item-margin); }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:last-child):after {
        content: var(--e-nav-menu-divider-content, none);
        border-left-width: var(--e-nav-menu-divider-width, 2px);
        border-left-style: var(--e-nav-menu-divider-style, solid);
        height: var(--e-nav-menu-divider-height, 35%);
        border-color: var(--e-nav-menu-divider-color, #000);
        align-self: center; }

.elementor-nav-menu__align-right .elementor-nav-menu {
  margin-left: auto;
  justify-content: flex-end; }

.elementor-nav-menu__align-right .elementor-nav-menu--layout-vertical > ul > li > a {
  justify-content: flex-end; }

.elementor-nav-menu__align-left .elementor-nav-menu {
  margin-right: auto;
  justify-content: flex-start; }

.elementor-nav-menu__align-left .elementor-nav-menu--layout-vertical > ul > li > a {
  justify-content: flex-start; }

.elementor-nav-menu__align-center .elementor-nav-menu {
  margin-left: auto;
  margin-right: auto;
  justify-content: center; }

.elementor-nav-menu__align-center .elementor-nav-menu--layout-vertical > ul > li > a {
  justify-content: center; }

.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu {
  width: 100%; }
  .elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li {
    flex-grow: 1; }
    .elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li > a {
      justify-content: center; }

.elementor-widget-nav-menu:not(.elementor-nav-menu--toggle) .elementor-menu-toggle {
  display: none; }

.elementor-widget-nav-menu .elementor-widget-container {
  display: flex;
  flex-direction: column; }

.elementor-nav-menu {
  position: relative;
  z-index: 2; }
  .elementor-nav-menu:after {
    content: "\00a0";
    display: block;
    height: 0;
    font: 0px/0 serif;
    clear: both;
    visibility: hidden;
    overflow: hidden; }
  .elementor-nav-menu,
  .elementor-nav-menu ul,
  .elementor-nav-menu li {
    display: block;
    list-style: none;
    margin: 0;
    padding: 0;
    line-height: normal;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
  .elementor-nav-menu ul {
    display: none; }
    .elementor-nav-menu ul ul a,
    .elementor-nav-menu ul ul a:hover,
    .elementor-nav-menu ul ul a:focus,
    .elementor-nav-menu ul ul a:active {
      border-left: 16px solid transparent; }
    .elementor-nav-menu ul ul ul a,
    .elementor-nav-menu ul ul ul a:hover,
    .elementor-nav-menu ul ul ul a:focus,
    .elementor-nav-menu ul ul ul a:active {
      border-left: 24px solid transparent; }
    .elementor-nav-menu ul ul ul ul a,
    .elementor-nav-menu ul ul ul ul a:hover,
    .elementor-nav-menu ul ul ul ul a:focus,
    .elementor-nav-menu ul ul ul ul a:active {
      border-left: 32px solid transparent; }
    .elementor-nav-menu ul ul ul ul ul a,
    .elementor-nav-menu ul ul ul ul ul a:hover,
    .elementor-nav-menu ul ul ul ul ul a:focus,
    .elementor-nav-menu ul ul ul ul ul a:active {
      border-left: 40px solid transparent; }
  .elementor-nav-menu li,
  .elementor-nav-menu a {
    position: relative; }
  .elementor-nav-menu li {
    border-width: 0; }
  .elementor-nav-menu a {
    display: flex;
    align-items: center; }
    .elementor-nav-menu a, .elementor-nav-menu a:hover, .elementor-nav-menu a:focus {
      padding: 10px 20px;
      line-height: 20px; }
    .elementor-nav-menu a.current {
      background: #373a3c;
      color: #fff; }
    .elementor-nav-menu a.disabled {
      cursor: not-allowed;
      color: #a1a6a9; }
  .elementor-nav-menu .e-plus-icon:before {
    content: '+'; }
  .elementor-nav-menu .sub-arrow {
    line-height: 1;
    padding: 10px 0 10px 10px;
    margin-top: -10px;
    margin-bottom: -10px;
    display: flex;
    align-items: center; }
    .elementor-nav-menu .sub-arrow i {
      pointer-events: none; }
    .elementor-nav-menu .sub-arrow .fa.fa-chevron-down, .elementor-nav-menu .sub-arrow .fas.fa-chevron-down {
      font-size: 0.7em; }
    .elementor-nav-menu .sub-arrow .e-font-icon-svg {
      height: 1em;
      width: 1em; }
      .elementor-nav-menu .sub-arrow .e-font-icon-svg.fa-svg-chevron-down {
        height: 0.7em;
        width: 0.7em; }

.elementor-nav-menu--dropdown .elementor-item:hover, .elementor-nav-menu--dropdown .elementor-item:focus, .elementor-nav-menu--dropdown .elementor-item.highlighted, .elementor-nav-menu--dropdown .elementor-item.elementor-item-active,
.elementor-sub-item:hover,
.elementor-sub-item:focus,
.elementor-sub-item.highlighted,
.elementor-sub-item.elementor-item-active {
  background-color: #55595c;
  color: #fff; }

.elementor-menu-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  padding: 0.25em;
  cursor: pointer;
  border: 0 solid;
  border-radius: 3px;
  background-color: rgba(0, 0, 0, 0.05);
  color: #494c4f; }
  .elementor-menu-toggle.elementor-active .elementor-menu-toggle__icon--open {
    display: none; }
  .elementor-menu-toggle:not(.elementor-active) .elementor-menu-toggle__icon--close {
    display: none; }
  .elementor-menu-toggle .e-font-icon-svg {
    fill: #494c4f;
    height: 1em;
    width: 1em; }

.elementor-nav-menu--dropdown {
  background-color: #fff;
  font-size: 13px; }
  .elementor-nav-menu--dropdown-none .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-none .elementor-menu-toggle {
    display: none; }
  .elementor-nav-menu--dropdown.elementor-nav-menu__container {
    margin-top: 10px;
    transition: max-height 0.3s, transform 0.3s;
    transform-origin: top;
    overflow: auto; }
    .elementor-nav-menu--dropdown.elementor-nav-menu__container .elementor-sub-item {
      font-size: 0.85em; }
  .elementor-nav-menu--dropdown a {
    color: #494c4f; }
    .elementor-nav-menu--dropdown a.current {
      background: #373a3c;
      color: #fff; }
    .elementor-nav-menu--dropdown a.disabled {
      color: #b3b2b2; }

ul.elementor-nav-menu--dropdown a, ul.elementor-nav-menu--dropdown a:hover, ul.elementor-nav-menu--dropdown a:focus {
  text-shadow: none;
  border-left: 8px solid transparent; }

.elementor-nav-menu__text-align-center .elementor-nav-menu--dropdown .elementor-nav-menu a {
  justify-content: center; }

.elementor-nav-menu--toggle .elementor-menu-toggle:not(.elementor-active) + .elementor-nav-menu__container {
  transform: scaleY(0);
  max-height: 0; }

.elementor-nav-menu--toggle .elementor-menu-toggle.elementor-active + .elementor-nav-menu__container {
  transform: scaleY(1);
  max-height: 100vh; }

.elementor-nav-menu--stretch .elementor-nav-menu__container.elementor-nav-menu--dropdown {
  position: absolute;
  z-index: 9997; }

/**
 * Mobile Hamburger Menu Breakpoint
 */
@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .elementor-nav-menu--dropdown-mobile .elementor-nav-menu--main {
    display: none; } }

@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) {
  .elementor-nav-menu--dropdown-mobile .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-mobile .elementor-menu-toggle {
    display: none; } }

/**
 * Mobile Extra Hamburger Menu Breakpoint
 */
@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) {
  .elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--main {
    display: none; } }

@media (min-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_NEXT) {
  .elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-mobile_extra .elementor-menu-toggle {
    display: none; } }

/**
 * Tablet Hamburger Menu Breakpoint
 */
@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) {
  .elementor-nav-menu--dropdown-tablet .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-tablet .elementor-menu-toggle {
    display: none; } }

@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
  .elementor-nav-menu--dropdown-tablet .elementor-nav-menu--main {
    display: none; } }

/**
 * Tablet Extra Hamburger Menu Breakpoint
 */
@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) {
  .elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--main {
    display: none; } }

@media (min-width: ELEMENTOR_SCREEN_TABLET_EXTRA_NEXT) {
  .elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-tablet_extra .elementor-menu-toggle {
    display: none; } }

.elementor-gallery__container {
  min-height: 1px; }

.elementor-gallery-item {
  position: relative;
  overflow: hidden;
  display: block;
  text-decoration: none;
  border: solid var(--image-border-width) var(--image-border-color);
  border-radius: var(--image-border-radius); }
  .elementor-gallery-item__overlay, .elementor-gallery-item__content {
    height: 100%;
    width: 100%;
    position: absolute;
    top: 0;
    left: 0; }
  .elementor-gallery-item__overlay {
    mix-blend-mode: var(--overlay-mix-blend-mode);
    transition-duration: var(--overlay-transition-duration);
    transition-property: mix-blend-mode, transform, opacity, background-color; }
  .elementor-gallery-item__image.e-gallery-image {
    transition-duration: var(--image-transition-duration);
    transition-property: filter, transform; }
  .elementor-gallery-item__content {
    display: flex;
    flex-direction: column;
    justify-content: var(--content-justify-content, center);
    align-items: center;
    text-align: var(--content-text-align);
    padding: var(--content-padding); }
    .elementor-gallery-item__content > div {
      transition-duration: var(--content-transition-duration); }
    .elementor-gallery-item__content.elementor-gallery--sequenced-animation > div:nth-child(2) {
      transition-delay: calc( ( var(--content-transition-delay) / 3 )); }
    .elementor-gallery-item__content.elementor-gallery--sequenced-animation > div:nth-child(3) {
      transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 2); }
    .elementor-gallery-item__content.elementor-gallery--sequenced-animation > div:nth-child(4) {
      transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 3); }
  .elementor-gallery-item__description {
    color: var(--description-text-color, #ffffff);
    width: 100%; }
  .elementor-gallery-item__title {
    color: var(--title-text-color, #ffffff);
    font-weight: bold;
    width: 100%; }

.elementor-gallery__titles-container {
  display: flex;
  flex-wrap: wrap;
  justify-content: var(--titles-container-justify-content, center);
  margin-bottom: 20px; }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:before {
    background-color: var(--galleries-pointer-bg-color-hover); }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:after {
    background-color: var(--galleries-pointer-bg-color-hover); }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:before {
    background-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:after {
    background-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item:before {
    border-color: var(--galleries-pointer-bg-color-hover);
    border-width: var(--galleries-pointer-border-width); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item:after {
    border-color: var(--galleries-pointer-bg-color-hover); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:before {
    border-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:after {
    border-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:before {
    border-width: 0 0 var(--galleries-pointer-border-width) var(--galleries-pointer-border-width); }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:after {
    border-width: var(--galleries-pointer-border-width) var(--galleries-pointer-border-width) 0 0; }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:before {
    border-width: var(--galleries-pointer-border-width) 0 0 var(--galleries-pointer-border-width); }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:after {
    border-width: 0 var(--galleries-pointer-border-width) var(--galleries-pointer-border-width) 0; }
  .elementor-gallery__titles-container .e--pointer-underline .elementor-item:after,
  .elementor-gallery__titles-container .e--pointer-overline .elementor-item:before,
  .elementor-gallery__titles-container .e--pointer-double-line .elementor-item:before,
  .elementor-gallery__titles-container .e--pointer-double-line .elementor-item:after {
    height: var(--galleries-pointer-border-width); }

.elementor-gallery-title {
  --space-between: 10px;
  cursor: pointer;
  color: #6D7882;
  font-weight: 500;
  position: relative;
  padding: 7px 14px;
  transition: all 0.3s; }
  .elementor-gallery-title--active {
    color: #495157; }
  .elementor-gallery-title:not(:last-child) {
    margin-right: var(--space-between); }

.elementor-gallery-item__title + .elementor-gallery-item__description {
  margin-top: var(--description-margin-top); }

.e-gallery-item.elementor-gallery-item {
  transition-property: all; }

.e-gallery-item:hover .elementor-gallery__item-overlay-bg {
  opacity: 1; }

.e-gallery-item:hover .elementor-gallery__item-overlay-content {
  opacity: 1; }
  .e-gallery-item:hover .elementor-gallery__item-overlay-content__title, .e-gallery-item:hover .elementor-gallery__item-overlay-content__description {
    opacity: 1; }

.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-right, .e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-left, .e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-top, .e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-bottom {
  opacity: 1; }

a.elementor-item.elementor-gallery-title {
  color: var(--galleries-title-color-normal); }
  a.elementor-item.elementor-gallery-title:hover, a.elementor-item.elementor-gallery-title.elementor-item-active, a.elementor-item.elementor-gallery-title.highlighted, a.elementor-item.elementor-gallery-title:focus {
    color: var(--galleries-title-color-hover); }
  a.elementor-item.elementor-gallery-title.elementor-item-active {
    color: var(--gallery-title-color-active); }

.elementor-widget-table-of-contents .elementor-toc__header-title {
  color: var(--header-color); }

.elementor-widget-table-of-contents.elementor-toc--collapsed .elementor-toc__toggle-button--collapse {
  display: none; }

.elementor-widget-table-of-contents:not(.elementor-toc--collapsed) .elementor-toc__toggle-button--expand {
  display: none; }

.elementor-widget-table-of-contents .elementor-widget-container {
  min-height: var(--box-min-height);
  border: var(--box-border-width, 1px) solid var(--box-border-color, #a4afb7);
  border-radius: var(--box-border-radius, 3px);
  background-color: var(--box-background-color);
  transition: min-height 0.4s;
  overflow: hidden; }

.elementor-toc__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--box-padding, 20px);
  background-color: var(--header-background-color);
  border-bottom: var(--separator-width, 1px) solid var(--box-border-color, #a4afb7); }
  .elementor-toc__header-title {
    font-size: 18px;
    margin: 0;
    color: var(--header-color); }

.elementor-toc__toggle-button {
  cursor: pointer;
  display: inline-flex; }
  .elementor-toc__toggle-button i {
    color: var(--toggle-button-color); }
  .elementor-toc__toggle-button svg {
    fill: var(--toggle-button-color);
    height: 1em;
    width: 1em;
    fill: var(--toggle-button-color); }

.elementor-toc__spinner-container {
  text-align: center; }

.elementor-toc__spinner {
  font-size: 2em; }
  .elementor-toc__spinner.e-font-icon-svg {
    height: 1em;
    width: 1em; }

.elementor-toc__body {
  padding: var(--box-padding, 20px);
  max-height: var(--toc-body-max-height);
  overflow-y: auto; }
  .elementor-toc__body::-webkit-scrollbar {
    width: 7px; }
  .elementor-toc__body::-webkit-scrollbar-thumb {
    background-color: #c2cbd2;
    border-radius: 10px; }

.elementor-toc__list-wrapper {
  list-style: none;
  padding: 0; }

.elementor-toc__list-item {
  margin-bottom: 0.5em; }
  .elementor-toc__list-item.elementor-item-active {
    font-weight: bold; }
  .elementor-toc__list-item .elementor-toc__list-wrapper {
    margin-top: 0.5em;
    margin-left: var(--nested-list-indent, 1em); }
  .elementor-toc__list-item-text:hover {
    color: var(--item-text-hover-color);
    text-decoration: var(--item-text-hover-decoration); }
  .elementor-toc__list-item-text.elementor-item-active {
    color: var(--item-text-active-color);
    text-decoration: var(--item-text-active-decoration); }
  .elementor-toc__list-item-text-wrapper {
    display: flex;
    align-items: center; }
    .elementor-toc__list-item-text-wrapper i, .elementor-toc__list-item-text-wrapper:before {
      margin-right: 8px;
      color: var(--marker-color); }
    .elementor-toc__list-item-text-wrapper svg {
      margin-right: 8px;
      fill: var(--marker-color);
      height: var(--marker-size, 0.5em);
      width: var(--marker-size, 0.5em); }
    .elementor-toc__list-item-text-wrapper i {
      font-size: var(--marker-size, 0.5em); }
    .elementor-toc__list-item-text-wrapper:before {
      font-size: var(--marker-size, 1em); }

.elementor-toc--content-ellipsis .elementor-toc__list-item-text {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis; }

.elementor-toc__list-items--collapsible > .elementor-toc__list-wrapper > .elementor-toc__list-item > .elementor-toc__list-wrapper {
  display: none; }

.elementor-toc__heading-anchor {
  position: absolute; }

.elementor-toc__body .elementor-toc__list-item-text {
  color: var(--item-text-color);
  text-decoration: var(--item-text-decoration); }
  .elementor-toc__body .elementor-toc__list-item-text:hover {
    color: var(--item-text-hover-color);
    text-decoration: var(--item-text-hover-decoration); }
  .elementor-toc__body .elementor-toc__list-item-text.elementor-item-active {
    color: var(--item-text-active-color);
    text-decoration: var(--item-text-active-decoration); }

ol.elementor-toc__list-wrapper {
  counter-reset: item; }
  ol.elementor-toc__list-wrapper .elementor-toc__list-item {
    counter-increment: item; }
    ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper:before {
      content: counters(item, ".") ". "; }

@media only screen and (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) {
  .elementor-toc--minimized-on-tablet_extra .elementor-toc__body {
    display: none; } }

@media only screen and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
  .elementor-toc--minimized-on-tablet .elementor-toc__body {
    display: none; } }

@media only screen and (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) {
  .elementor-toc--minimized-on-mobile_extra .elementor-toc__body {
    display: none; } }

@media only screen and (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .elementor-toc--minimized-on-mobile .elementor-toc__body {
    display: none; } }

.e-lottie__container {
  display: inline-block;
  max-width: var(--lottie-container-max-width);
  width: var(--lottie-container-width);
  opacity: var(--lottie-container-opacity); }
  .e-lottie__container:hover {
    opacity: var(--lottie-container-opacity-hover);
    transition-duration: var(--lottie-container-transition-duration-hover); }
  .e-lottie__container svg,
  .e-lottie__container svg * {
    transition: none !important; }

.e-lottie__caption {
  color: var(--caption-color);
  margin-top: var(--caption-margin-top);
  text-align: var(--caption-text-align); }

/* Video_Playlist Widget */
.e-tabs-inner-tabs {
  text-align: left;
  font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
  font-size: 16px; }
  .e-tabs-inner-tabs .e-tab-content {
    padding-top: 32px; }
  .e-tabs-inner-tabs .e-inner-tabs-wrapper {
    display: flex;
    position: relative;
    overflow: hidden;
    z-index: 1; }
    .e-tabs-inner-tabs .e-inner-tabs-wrapper :after {
      content: '';
      width: 100%;
      height: var(--inner-tabs-border-height, 1px);
      background-color: var(--inner-tabs-border-color, #d5dadf);
      position: absolute;
      bottom: 0;
      z-index: -1; }
    .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title {
      font-weight: 700;
      min-width: 140px;
      line-height: 38px;
      height: 38px;
      box-sizing: content-box; }
      .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title a {
        color: #6d7882;
        padding: 0 36px;
        display: block;
        text-align: center; }
      .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active {
        border-bottom: 0 solid transparent;
        border-color: #495157;
        border-width: 0 0 1px 0; }
        .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active a {
          color: #495157; }
  .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title {
    display: none; }
  .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content {
    display: none;
    padding: 20px; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-text {
      color: #556068; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.e-inner-tab-active {
      display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons {
      margin-top: 24px;
      display: none; }
      .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons button {
        display: none;
        font-weight: 500;
        line-height: 24px;
        text-decoration: underline;
        border: none;
        background: transparent;
        padding: 0; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible .e-inner-tab-text {
      overflow: hidden; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button {
      display: none; }
      .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button.show-button {
        display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible.show-inner-tab-buttons .e-inner-tab-buttons {
      display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.show-full-height div.e-inner-tab-text {
      height: auto; }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .e-tabs-inner-tabs > .e-tab-content:first-child {
    padding-top: 24px; }
  .e-tabs-inner-tabs .e-inner-tabs-wrapper {
    display: none; }
  .e-tabs-inner-tabs .e-inner-tabs-content-wrapper {
    border-width: 1px 1px 0;
    border-style: solid;
    border-color: #d5dadf; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title {
      border-width: 0 0 1px;
      border-style: solid;
      border-color: #d5dadf;
      font-size: 16px;
      font-weight: 700;
      text-align: center;
      height: 38px;
      line-height: 38px;
      text-overflow: ellipsis;
      white-space: nowrap;
      overflow: hidden;
      padding: 0 10px;
      cursor: pointer;
      display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content {
      border-width: 0 0 1px;
      border-style: solid;
      border-color: #d5dadf;
      padding: 20px; } }

.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area {
  flex-direction: row; }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area {
    flex-direction: column-reverse; } }

.elementor-widget-video-playlist {
  font-family: Roboto, Arial, Helvetica, Verdana, sans-serif; }
  .elementor-widget-video-playlist .e-tabs {
    display: flex;
    flex-direction: column; }
  .elementor-widget-video-playlist .e-tabs-main-area {
    display: flex;
    flex-direction: row-reverse;
    height: 434px; }
  .elementor-widget-video-playlist .e-tabs-wrapper {
    height: 100%;
    display: flex;
    flex-direction: column;
    width: 33%; }
  .elementor-widget-video-playlist .e-tabs-header {
    background-color: #ffffff;
    display: flex;
    flex: 0 0 auto;
    justify-content: space-between;
    padding: 0 16px;
    min-height: 56px;
    border-bottom: 1px solid #d5dadf; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-header-right-side {
      display: inline-flex;
      flex-shrink: 0; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-title {
      font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
      text-overflow: ellipsis;
      font-weight: 700;
      font-size: 16px;
      padding: 10px 0;
      overflow-wrap: anywhere;
      hyphens: auto;
      margin: auto 0; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count {
      font-size: 14px;
      flex-shrink: 0;
      font-weight: 400;
      line-height: 20px;
      align-self: flex-start;
      padding: 18px 0 0; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button {
      display: none;
      margin: auto 0 auto 8px;
      cursor: pointer;
      padding: 0 4px; }
      .elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button.e-font-icon-svg {
        height: 1em;
        width: 1em; }
    .elementor-widget-video-playlist .e-tabs-header .rotate-up {
      transform: rotate(-180deg);
      transition: .3s; }
    .elementor-widget-video-playlist .e-tabs-header .rotate-down {
      transform: rotate(0deg);
      transition: .3s; }
  .elementor-widget-video-playlist .e-tabs-items-wrapper {
    background-color: #ffffff;
    overflow: hidden;
    position: relative;
    height: 100%; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom {
      background: linear-gradient(180deg, transparent 0%, #ffffff 100%); }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top {
      background: linear-gradient(0deg, transparent 0%, #ffffff 100%); }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items {
      overflow: auto;
      height: 100%; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-section-title {
      border-color: #d5dadf;
      border-width: 1px 0 0 0;
      font-size: 14px;
      height: 36px;
      padding: 0 16px;
      line-height: 36px;
      margin: 0;
      text-align: left;
      text-overflow: ellipsis;
      white-space: nowrap;
      overflow: hidden;
      border-width: 0;
      box-sizing: content-box; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title {
      background-color: #ffffff;
      border-color: #d5dadf;
      border-width: 0 0 1px 0;
      cursor: pointer;
      display: flex;
      font-size: 14px;
      height: 55px;
      line-height: 55px;
      outline: none;
      padding: 0 16px;
      box-sizing: content-box; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i {
        text-shadow: 0 0 3px #000000;
        color: #ffffff;
        font-size: var(--playlist-item-icon-size, 16px); }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg {
        text-shadow: 0 0 3px #000000;
        color: #ffffff;
        fill: #ffffff;
        width: var(--playlist-item-icon-size, 16px);
        height: var(--playlist-item-icon-size, 16px); }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg path {
          fill: #ffffff; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover {
        background-color: #f1f3f5;
        border-color: #d5dadf;
        border-width: 0 0 1px 0; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active i, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover i {
          text-shadow: 0 0 3px #000000;
          color: #ffffff; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg {
          text-shadow: 0 0 3px #000000;
          color: #ffffff; }
          .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg path, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg path {
            fill: #ffffff; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active .e-tab-title-text, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover .e-tab-title-text {
          font-size: 14px; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-play,
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched {
        display: inline-flex; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail {
        background-color: #d5dadf;
        position: relative;
        margin: auto 0;
        flex-shrink: 0;
        width: 75px;
        height: 42px; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail img {
          object-fit: fill;
          width: 75px;
          height: 42px; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail i,
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail svg {
          position: absolute;
          bottom: 4px;
          right: 4px;
          font-weight: 900; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-title-text {
        font-size: 14px;
        margin: auto 8px;
        text-align: left;
        text-overflow: ellipsis;
        white-space: nowrap;
        overflow: hidden;
        flex-grow: 1; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i,
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg {
        margin: auto 0;
        vertical-align: middle; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-duration {
        font-size: 14px;
        margin: auto 0; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched {
        display: none; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-play {
        display: none; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-watched {
        display: block; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top {
      display: none;
      height: 98px;
      position: absolute;
      top: 0;
      width: 100%;
      pointer-events: none;
      background: linear-gradient(0deg, transparent 0%, #ffffff 100%); }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom {
      display: none;
      height: 98px;
      position: absolute;
      bottom: 0;
      width: 100%;
      background: linear-gradient(180deg, transparent 0%, #ffffff 100%);
      pointer-events: none; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper.top-shadow .shadow-top {
      display: block; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper.bottom-shadow .shadow-bottom {
      display: block; }
  .elementor-widget-video-playlist .e-tabs-content-wrapper {
    flex-grow: 1;
    height: 100%;
    position: relative; }
    .elementor-widget-video-playlist .e-tabs-content-wrapper .elementor-custom-embed-image-overlay {
      cursor: pointer;
      text-align: center;
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-size: cover;
      background-position: 50%; }
    .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-mobile-title {
      display: none; }
    .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content {
      background-color: #000000;
      display: none;
      height: 100%;
      outline: none; }
      .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content > div {
        height: 100%; }
      .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content iframe {
        height: 100%;
        max-height: 100% !important;
        display: flex; }
      .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content video {
        height: 100%;
        background-color: #000000; }
  .elementor-widget-video-playlist .e-tabs-inner-tabs .e-tab-content {
    display: none;
    outline: none; }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .elementor-widget-video-playlist .e-tabs-main-area {
    flex-direction: column-reverse;
    height: auto; }
    .elementor-widget-video-playlist .e-tabs-main-area .e-tabs-content-wrapper {
      border: none;
      height: 38%; }
  .elementor-widget-video-playlist .e-tabs-wrapper {
    width: auto;
    height: 62%; }
  .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items {
    max-height: 248px; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items .e-tab-title {
      border: none; }
  .elementor-widget-video-playlist .e-tabs-header {
    min-height: 48px; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button {
      display: inline-flex; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count {
      margin: 0 6px;
      padding: 14px 0 0; }
  .elementor-widget-video-playlist .e-tab-content {
    border: none;
    padding: 0;
    display: flex; } }

.elementor-payment-button {
  border: none; }

.elementor-scrolling-tracker {
  --scrolling-track-default-progress-color: #61ce70;
  --scrolling-track-default-color: #eeeeee;
  --scrolling-track-precentage-default-color: $black; }

.elementor-scrolling-tracker-horizontal {
  display: flex;
  width: 100%;
  height: var(--horizontal-height, 20px);
  padding: var(--tracker-padding);
  align-items: center;
  border-top-width: var(--horizontal-border-top-width, 2px);
  border-right-width: var(--horizontal-border-right-width, 2px);
  border-bottom-width: var(--horizontal-border-bottom-width, 2px);
  border-left-width: var(--horizontal-border-left-width, 2px);
  border-style: var(--horizontal-border-style);
  border-color: var(--horizontal-border-color);
  border-radius: var(--border-radius);
  background-color: var(--scrolling-track-default-color);
  direction: var(--direction); }
  .elementor-scrolling-tracker-horizontal .current-progress {
    display: none;
    height: 100%;
    align-items: center;
    position: relative;
    border-radius: var(--progress-border-radius);
    border-top-width: var(--horizontal-progress-border-top-width, 2px);
    border-right-width: var(--horizontal-progress-border-right-width, 2px);
    border-bottom-width: var(--horizontal-progress-border-bottom-width, 2px);
    border-left-width: var(--horizontal-progress-border-left-width, 2px);
    border-style: var(--horizontal-progress-border);
    border-color: var(--horizontal-progress-border-color);
    background-color: var(--scrolling-track-default-progress-color); }
    .elementor-scrolling-tracker-horizontal .current-progress .current-progress-percentage {
      inset-inline-end: 0.5em;
      inset-inline-start: auto;
      position: absolute;
      direction: var(--text-direction);
      color: var(--percentage-color, var(--scrolling-track-precentage-default-color)); }

.elementor-scrolling-tracker-circular {
  display: flex;
  width: var(--circular-width, 100px);
  height: var(--circular-height, 100px);
  align-items: center;
  justify-content: center;
  position: relative;
  margin-inline-start: 0;
  margin-inline-end: auto; }
  .elementor-scrolling-tracker-circular .current-progress-percentage {
    position: absolute;
    color: var(--percentage-color, var(--scrolling-track-precentage-default-color)); }
  .elementor-scrolling-tracker-circular svg {
    position: absolute; }
  .elementor-scrolling-tracker-circular .current-progress {
    display: none;
    transform: rotate(-90deg);
    transform-origin: 50% 50%;
    stroke: var(--circular-color, var(--scrolling-track-default-progress-color));
    fill: transparent;
    stroke-width: var(--circular-progress-width, 4px); }
  .elementor-scrolling-tracker-circular .circle {
    stroke: var(--circular-background-color, var(--scrolling-track-default-color));
    fill: transparent;
    stroke-width: var(--circular-background-width, 4px); }

.elementor-scrolling-tracker-alignment-left {
  margin-left: 0;
  margin-right: auto; }

.elementor-scrolling-tracker-alignment-center {
  margin-left: auto;
  margin-right: auto; }

.elementor-scrolling-tracker-alignment-right {
  margin-left: auto;
  margin-right: 0; }
assets/css/templates/frontend-lite-rtl.css000064400000411051150755004310014721 0ustar00.elementor-bg-transform .elementor-bg {
  will-change: transform; }

.elementor-bg-transform-zoom-in:hover .elementor-bg {
  transform: scale(1.2); }

.elementor-bg-transform-zoom-out .elementor-bg {
  transform: scale(1.2); }

.elementor-bg-transform-zoom-out:hover .elementor-bg {
  transform: scale(1); }

.elementor-bg-transform-move-left .elementor-bg {
  transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-left:hover .elementor-bg {
  transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right .elementor-bg {
  transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right:hover .elementor-bg {
  transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-up .elementor-bg {
  transform: scale(1.2) translateY(8%); }

.elementor-bg-transform-move-up:hover .elementor-bg {
  transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down .elementor-bg {
  transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down:hover .elementor-bg {
  transform: scale(1.2) translateY(8%); }

/*---------------------------------------------------------------------------*/
.elementor-animated-content {
  --translate: 0, 0; }
  .elementor-animated-content:hover .elementor-animated-item--grow {
    transform: scale(1.1); }
  .elementor-animated-content:hover .elementor-animated-item--shrink {
    transform: scale(0.85); }
  .elementor-animated-content:hover .elementor-animated-item--shrink-contained {
    transform: scale(1); }
  .elementor-animated-content:hover .elementor-animated-item--enter-zoom-out, .elementor-animated-content:hover .elementor-animated-item--enter-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-in {
    transform: scale(1);
    opacity: 1; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out, .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-out {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out {
    transform: scale(0.2); }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in {
    transform: scale(2); }
  .elementor-animated-content:hover .elementor-animated-item--enter-from-right, .elementor-animated-content:hover .elementor-animated-item--enter-from-left, .elementor-animated-content:hover .elementor-animated-item--enter-from-top, .elementor-animated-content:hover .elementor-animated-item--enter-from-bottom {
    opacity: 1;
    transform: translateY(0) translateX(0); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right {
    transform: translateX(1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-left {
    transform: translateX(-1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-top {
    transform: translateY(-600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    transform: translateY(600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right, .elementor-animated-content:hover .elementor-animated-item--exit-to-left, .elementor-animated-content:hover .elementor-animated-item--exit-to-top, .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-right {
    transform: translateX(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-left {
    transform: translateX(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-up {
    transform: translateY(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-down {
    transform: translateY(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-right {
    --translate: 8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-left {
    --translate: -8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-top {
    --translate: 0, -8%; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-bottom {
    --translate: 0, 8%; }
  .elementor-animated-content *[class^="elementor-animated-item"] {
    will-change: transform, opacity; }
  .elementor-animated-content .elementor-animated-item--shrink-contained {
    transform: scale(1.17); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-in {
    transform: scale(0.2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out {
    transform: scale(2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out, .elementor-animated-content .elementor-animated-item--enter-zoom-in, .elementor-animated-content .elementor-animated-item--fade-in {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-zoom-out, .elementor-animated-content .elementor-animated-item--exit-zoom-in, .elementor-animated-content .elementor-animated-item--fade-out {
    opacity: 1;
    transform: scale(1); }
  .elementor-animated-content .elementor-animated-item--enter-from-right {
    transform: translateX(1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-left {
    transform: translateX(-1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-top {
    transform: translateY(-600px); }
  .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    transform: translateY(500px); }
  .elementor-animated-content .elementor-animated-item--enter-from-right, .elementor-animated-content .elementor-animated-item--enter-from-left, .elementor-animated-content .elementor-animated-item--enter-from-top, .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-to-right, .elementor-animated-content .elementor-animated-item--exit-to-left, .elementor-animated-content .elementor-animated-item--exit-to-top, .elementor-animated-content .elementor-animated-item--exit-to-bottom {
    opacity: 1;
    transform: translateY(0) translateX(0); }
  .elementor-animated-content .elementor-animated-item--move-contained-right, .elementor-animated-content .elementor-animated-item--move-contained-left, .elementor-animated-content .elementor-animated-item--move-contained-top, .elementor-animated-content .elementor-animated-item--move-contained-bottom {
    transform: scale(1.2) translate(var(--translate)); }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover {
  outline: 1px solid #fec449; }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings {
  background-image: linear-gradient(to top, #feb416, #fec449); }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover {
    background-color: #feb416; }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save {
    display: none; }

body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  width: 100%;
  padding: 0; }

body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  padding: 0; }

.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart {
  margin: 0;
  display: flex;
  flex-wrap: nowrap; }

.woocommerce div.product.elementor .quantity .qty {
  vertical-align: top;
  margin-left: 0; }

.woocommerce div.product.elementor .quantity + .button {
  margin-right: 10px; }

.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input {
  height: 100%; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
  justify-content: flex-end; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
  justify-content: flex-start; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
  justify-content: center; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
  margin-left: initial; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
  flex-basis: auto; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
  flex-wrap: nowrap; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-left: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
    flex-basis: 100%; }

@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-left: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-left: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      flex-basis: 100%; } }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-left: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-left: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      flex-basis: 100%; } }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button {
  background-color: #5bc0de; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button {
  background-color: #5cb85c; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button {
  background-color: #f0ad4e; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button {
  background-color: #d9534f; }

.elementor-widget-wc-add-to-cart .quantity {
  display: inline-block; }

.elementor-widget-wc-add-to-cart.elementor-align-center form.cart {
  justify-content: center; }

.elementor-widget-wc-add-to-cart.elementor-align-right form.cart {
  justify-content: flex-start; }

.elementor-widget-wc-add-to-cart.elementor-align-left form.cart {
  justify-content: flex-start; }

.woocommerce div.product.elementor {
  /*  Reset WC tabs style  */
  /*  End Reset WC tabs style  */ }
  .woocommerce div.product.elementor ul.tabs:before {
    position: static;
    content: none;
    width: auto;
    bottom: auto;
    left: auto;
    border-bottom: 0;
    z-index: auto; }
  .woocommerce div.product.elementor ul.tabs {
    margin: 0; }
    .woocommerce div.product.elementor ul.tabs li {
      padding: 0; }
      .woocommerce div.product.elementor ul.tabs li a {
        padding: .8em 1.2em;
        line-height: 1; }
    .woocommerce div.product.elementor ul.tabs li:after,
    .woocommerce div.product.elementor ul.tabs li:before {
      border: 0;
      position: static;
      bottom: auto;
      width: auto;
      height: auto;
      content: none;
      box-sizing: border-box; }
  .woocommerce div.product.elementor .woocommerce-tabs .panel {
    margin: 0;
    padding: 20px;
    border-radius: 0;
    border-width: 0;
    border-top: 1px solid #d3ced2;
    box-shadow: none;
    margin-top: -1px; }

.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,
.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins {
  display: block; }

.elementor-widget-woocommerce-product-meta .detail-container {
  position: relative; }
  .elementor-widget-woocommerce-product-meta .detail-container:after {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%; }

.elementor-widget-woocommerce-product-meta .detail-label {
  font-weight: bold; }

.elementor-woo-meta--view-inline .product_meta {
  display: flex;
  flex-wrap: wrap; }
  .elementor-woo-meta--view-inline .product_meta .detail-container:after {
    width: auto;
    left: auto;
    right: auto;
    position: absolute;
    height: 100%;
    top: 50%;
    transform: translateY(-50%);
    border-top: 0;
    border-bottom: 0;
    border-right: 0;
    border-left-width: 1px;
    border-style: solid;
    left: -8px; }

.elementor-woo-meta--view-table .product_meta {
  display: flex;
  flex-direction: column; }
  .elementor-woo-meta--view-table .product_meta .detail-container {
    display: flex; }
  .elementor-woo-meta--view-table .product_meta .detail-label {
    min-width: 108px; }

.elementor-woo-meta--view-stacked .product_meta .detail-container {
  display: block; }

.woocommerce div.product.elementor .woocommerce-product-rating {
  margin-bottom: 0;
  display: flex;
  align-items: center; }

.woocommerce div.product.elementor .star-rating {
  margin-top: 0; }

.elementor-product-rating--align-left .woocommerce-product-rating {
  justify-content: flex-end; }

.elementor-product-rating--align-right .woocommerce-product-rating {
  justify-content: flex-start; }

.elementor-product-rating--align-center .woocommerce-product-rating {
  justify-content: center; }

.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link {
  margin-right: auto; }

.elementor-products-grid ul.products.elementor-grid {
  display: grid;
  margin: 0;
  grid-column-gap: 20px;
  grid-row-gap: 40px; }
  .elementor-products-grid ul.products.elementor-grid:before, .elementor-products-grid ul.products.elementor-grid:after {
    content: none;
    display: none; }
  .elementor-products-grid ul.products.elementor-grid li.product {
    width: auto;
    padding: 0;
    margin: 0;
    float: none; }
    .elementor-products-grid ul.products.elementor-grid li.product .onsale {
      padding: 0;
      display: none; }
    .elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link {
      display: block;
      position: relative; }

.elementor-products-grid:not(.show-heading-yes) .products > h2 {
  display: none; }

.elementor-products-grid nav.woocommerce-pagination {
  margin-top: 40px; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul {
  border: none 0; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li {
  border-right: none 0;
  border-left: none 0; }

.elementor-product-loop-item--align-left ul.products li.product .star-rating {
  margin-right: auto; }

.elementor-product-loop-item--align-right ul.products li.product .star-rating {
  margin-left: auto; }

.elementor-product-loop-item--align-center ul.products li.product .star-rating {
  margin-right: auto;
  margin-left: auto; }

.woocommerce .elementor-element.elementor-products-grid ul.products li.product {
  width: auto; }

.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,
.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product {
  width: auto; }

@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) {
  .elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products {
    grid-template-columns: repeat(2, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products {
    grid-template-columns: repeat(3, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products {
    grid-template-columns: repeat(4, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products {
    grid-template-columns: repeat(5, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products {
    grid-template-columns: repeat(6, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products {
    grid-template-columns: repeat(7, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products {
    grid-template-columns: repeat(8, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products {
    grid-template-columns: repeat(9, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products {
    grid-template-columns: repeat(10, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products {
    grid-template-columns: repeat(11, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products {
    grid-template-columns: repeat(12, 1fr); } }

@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(3, 1fr); } }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(2, 1fr); } }

.elementor.product .woocommerce-product-gallery__trigger + .woocommerce-product-gallery__wrapper {
  overflow: hidden; }

.woocommerce .elementor-widget-woocommerce-product-images span.onsale {
  padding: 0; }

.elementor-menu-cart__wrapper {
  text-align: var(--main-alignment, right); }

.elementor-menu-cart__toggle_wrapper {
  display: inline-block;
  position: relative; }

.elementor-menu-cart__toggle {
  display: inline-block; }
  .elementor-menu-cart__toggle .elementor-button {
    background-color: var(--toggle-button-background-color, transparent);
    color: var(--toggle-button-text-color, #818a91);
    border-style: var(--toggle-button-border-type, solid);
    border-width: var(--toggle-button-border-width, 1px);
    border-color: var(--toggle-button-border-color, #818a91);
    border-radius: var(--toggle-button-border-radius, 0px);
    display: inline-flex;
    align-items: center;
    padding: var(--toggle-icon-padding, 12px 24px); }
    .elementor-menu-cart__toggle .elementor-button:hover {
      color: var(--toggle-button-hover-text-color, #818a91);
      background-color: var(--toggle-button-hover-background-color, transparent);
      border-color: var(--toggle-button-hover-border-color, #818a91); }
      .elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon {
        color: var(--toggle-button-icon-hover-color, #818a91); }
  .elementor-menu-cart__toggle .elementor-button-text {
    margin-left: 0.3em; }
  .elementor-menu-cart__toggle .elementor-button-icon {
    position: relative;
    transition: color 0.1s;
    color: var(--toggle-button-icon-color, #818a91);
    font-size: var(--toggle-icon-size, inherit); }

.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: block;
  position: absolute;
  min-width: 1.6em;
  height: 1.6em;
  line-height: 1.5em;
  top: -0.7em;
  left: -0.7em;
  border-radius: 100%;
  color: var(--items-indicator-text-color, #fff);
  background-color: var(--items-indicator-background-color, #d9534f);
  text-align: center;
  font-size: 10px; }

.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: inline-block;
  font-weight: normal; }

.elementor-menu-cart__container {
  transform: scale(1);
  overflow: hidden;
  position: fixed;
  z-index: 9998;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgba(0, 0, 0, 0.25);
  transition: background-color 0.4s, transform 0s;
  text-align: right; }

.elementor-menu-cart__main {
  position: fixed;
  left: var(--side-cart-alignment-left, 0);
  right: var(--side-cart-alignment-right, auto);
  transform: translateX(0);
  top: 0;
  bottom: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  font-size: 14px;
  min-height: 200px;
  width: 350px;
  max-width: 100%;
  transition: 0.3s;
  padding: var(--cart-padding, 20px 30px);
  background-color: var(--cart-background-color, #fff);
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
  border-style: var(--cart-border-style, none);
  border-color: var(--cart-border-color, initial);
  border-radius: var(--cart-border-radius, 0px);
  margin-top: var(--mini-cart-spacing, 0px); }
  .elementor-menu-cart__main .widget_shopping_cart_content {
    height: 100%;
    display: flex;
    flex-direction: column; }
    .elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message {
      color: var(--empty-message-color, inherit);
      text-align: var(--empty-message-alignment, right); }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
  background-color: transparent;
  transform: scale(0);
  transition: background-color 0.4s, transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button {
    display: none; }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
  overflow: hidden;
  opacity: 0;
  transform: var(--side-cart-alignment-transform, translateX(-100%)); }

.elementor-menu-cart__close-button {
  width: var(--cart-close-icon-size, 25px);
  height: var(--cart-close-icon-size, 25px);
  position: relative;
  margin: 0 0 20px;
  align-self: flex-end;
  cursor: pointer;
  display: inline-block;
  font-family: eicons;
  font-size: 20px;
  line-height: 1;
  transition: 0.3s; }
  .elementor-menu-cart__close-button:before, .elementor-menu-cart__close-button:after {
    content: '';
    position: absolute;
    height: 3px;
    width: 100%;
    top: 50%;
    left: 0;
    margin-top: -1px;
    background: var(--cart-close-button-color, #818a91);
    border-radius: 1px;
    transition: 0.3s; }
  .elementor-menu-cart__close-button:hover::before, .elementor-menu-cart__close-button:hover::after {
    background: var(--cart-close-button-hover-color, #818a91); }
  .elementor-menu-cart__close-button::before {
    transform: rotate(45deg); }
  .elementor-menu-cart__close-button::after {
    transform: rotate(-45deg); }

.elementor-menu-cart__products {
  max-height: calc(100vh - 250px);
  overflow: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch; }

.elementor-menu-cart__product {
  display: grid;
  grid-template-columns: 28% auto;
  grid-template-rows: var(--price-quantity-position--grid-template-rows, auto auto);
  position: relative;
  border-width: 0 0 var(--divider-width, 1px);
  border-bottom-style: var(--divider-style, solid);
  border-bottom-color: var(--divider-color, #D4D4D4); }
  .elementor-menu-cart__product .variation {
    display: grid;
    grid-template-columns: max-content auto;
    margin: 10px 0; }
    .elementor-menu-cart__product .variation dt {
      grid-column-start: 1; }
    .elementor-menu-cart__product .variation dd {
      grid-column-start: 2;
      margin-inline-start: 5px; }
      .elementor-menu-cart__product .variation dd p {
        margin-bottom: 0; }
  .elementor-menu-cart__product-image {
    grid-row-start: 1;
    grid-row-end: 3;
    width: 100%; }
    .elementor-menu-cart__product-image img, .elementor-menu-cart__product-image a {
      display: block; }
  .elementor-menu-cart__product-name {
    grid-column-start: 2;
    grid-column-end: 3;
    margin: 0; }
    .elementor-menu-cart__product-name a {
      transition: 0.3s; }
  .elementor-menu-cart__product-price {
    grid-column-start: 2;
    grid-column-end: 3;
    align-self: var(--price-quantity-position--align-self, end);
    font-weight: 300;
    color: var(--product-price-color, #D4D4D4); }
  .elementor-menu-cart__product-name, .elementor-menu-cart__product-price {
    font-size: 14px;
    padding-right: 20px; }
  .elementor-menu-cart__product-remove {
    color: #818a91;
    width: var(--remove-item-button-size, 22px);
    height: var(--remove-item-button-size, 22px);
    border-radius: var(--remove-item-button-size, 22px);
    border: 1px solid var(--remove-item-button-color, #D4D4D4);
    text-align: center;
    overflow: hidden;
    position: absolute;
    left: 0;
    bottom: 20px;
    transition: 0.3s; }
    .elementor-menu-cart__product-remove:hover {
      border: 1px solid var(--remove-item-button-hover-color, #D4D4D4); }
      .elementor-menu-cart__product-remove:hover::before, .elementor-menu-cart__product-remove:hover::after {
        background: var(--remove-item-button-hover-color, #D4D4D4); }
    .elementor-menu-cart__product-remove:before, .elementor-menu-cart__product-remove:after {
      content: '';
      position: absolute;
      height: 1px;
      width: 50%;
      top: 50%;
      left: 25%;
      margin-top: -1px;
      background: var(--remove-item-button-color, #D4D4D4);
      z-index: 1;
      transition: 0.3s; }
    .elementor-menu-cart__product-remove::before {
      transform: rotate(45deg); }
    .elementor-menu-cart__product-remove::after {
      transform: rotate(-45deg); }
    .elementor-menu-cart__product-remove > a {
      display: block;
      z-index: 2;
      width: 100%;
      height: 100%;
      overflow: hidden;
      opacity: 0;
      position: absolute; }
      .elementor-menu-cart__product-remove > a.remove_from_cart_button {
        display: var(--remove-from-cart-button, block); }
      .elementor-menu-cart__product-remove > a.elementor_remove_from_cart_button {
        display: var(--elementor-remove-from-cart-button, none); }

.elementor-menu-cart__product:last-child {
  border: none; }

.elementor-menu-cart__product:not(:first-of-type), .elementor-menu-cart__subtotal, .elementor-menu-cart__footer-buttons {
  padding-top: var(--product-divider-gap, 20px); }

.elementor-menu-cart__product {
  padding-left: 30px; }

.elementor-menu-cart__product, .elementor-menu-cart__subtotal {
  padding-bottom: var(--product-divider-gap, 20px); }

.elementor-menu-cart__subtotal {
  font-size: 20px;
  text-align: var(--menu-cart-subtotal-text-align, center);
  font-weight: 600;
  color: var(--menu-cart-subtotal-color, inherit);
  border-style: var(--subtotal-divider-style, solid);
  border-width: var(--subtotal-divider-top-width, 1px) var(--subtotal-divider-right-width, 1px) var(--subtotal-divider-bottom-width, 1px) var(--subtotal-divider-left-width, 1px);
  border-color: var(--subtotal-divider-color, #D4D4D4); }

.elementor-menu-cart__footer-buttons {
  font-size: 20px;
  text-align: var(--cart-footer-buttons-alignment-text-align, center);
  display: var(--cart-footer-buttons-alignment-display, grid);
  grid-template-columns: var(--cart-footer-layout, 1fr 1fr);
  margin-top: var(--cart-buttons-position-margin, 0);
  grid-column-gap: var(--space-between-buttons, 10px);
  grid-row-gap: var(--space-between-buttons, 10px); }
  .elementor-menu-cart__footer-buttons .elementor-button {
    display: inline-block;
    border-radius: var(--cart-footer-buttons-border-radius, 0px);
    height: fit-content; }
    .elementor-menu-cart__footer-buttons .elementor-button--view-cart {
      display: var(--view-cart-button-display, inline-block);
      color: var(--view-cart-button-text-color, #fff);
      padding: var(--view-cart-button-padding, 15px);
      background-color: var(--view-cart-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover {
        color: var(--view-cart-button-hover-text-color, #fff);
        background-color: var(--view-cart-button-hover-background-color, #818a91); }
    .elementor-menu-cart__footer-buttons .elementor-button--checkout {
      display: var(--checkout-button-display, inline-block);
      color: var(--checkout-button-text-color, #fff);
      padding: var(--checkout-button-padding, 15px);
      background-color: var(--checkout-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--checkout:hover {
        color: var(--checkout-button-hover-text-color, #fff);
        background-color: var(--checkout-button-hover-background-color, #818a91); }
    @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
      .elementor-menu-cart__footer-buttons .elementor-button {
        padding-left: 10px;
        padding-right: 10px; } }

/* The following is all to apply settings from the controls */
.elementor-widget-woocommerce-menu-cart {
  /* Fix to prevent the cart modal flash when using the typography controls */
  /* Fix for short-lived legacy cart type */ }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before {
    content: none; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e3'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e4'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e5'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e6'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e7'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e8'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e9'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8ea'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8eb'; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product {
    padding-left: 0;
    padding-right: 0;
    grid-template-columns: 25% auto; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove {
    top: 0;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove {
    top: 20px;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove {
    transform: translateY(50%);
    bottom: 50%; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove {
    top: auto;
    bottom: 20px; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart {
    /* The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
			and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
      position: absolute;
      z-index: 89;
      width: auto;
      height: auto;
      overflow: visible;
      top: 100%;
      bottom: auto;
      background: none;
      min-width: 330px;
      right: 0;
      left: auto;
      transform: scale(1);
      transition: background-color 0.4s, transform 0s; }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main {
      width: auto;
      height: auto;
      position: relative;
      top: auto;
      bottom: auto;
      right: auto;
      left: auto;
      overflow: visible;
      transform: translateY(0);
      transition: 0.3s; }
    @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
      .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
        min-width: 300px; } }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
    transform: scale(0);
    transition: background-color 0.4s, transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
    opacity: 0;
    transform: translateY(-10px); }
  .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown {
    opacity: 1;
    /* This keeps mini-cart panels above other widgets so there's no flash when using the typography controls.
		The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
		and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container {
      z-index: 9998; }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart {
      z-index: 89; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container {
    display: none; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-checkout-page {
  background-color: transparent;
  font-family: Roboto, sans-serif;
  font-size: 14px;
  line-height: 21px;
  color: #818a91;
  /* one column layout */
  /* override theme defaults for themes that have hover background colors on these elements. The hover background colors do not play well with the widget's initial design. */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-checkout-page ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > td,
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > th {
    background-color: transparent; }
  .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: #f7f7f7;
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: #f7f7f7;
      border-color: var(--forms-fields-focus-border-color, initial);
      transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below {
    background-color: #f7f7f7; }
  .elementor-widget-woocommerce-checkout-page .e-description {
    color: var(--sections-descriptions-color, #818a91);
    padding-bottom: var(--sections-descriptions-spacing, 0px);
    font-size: 14px;
    font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section {
    margin-bottom: 24px; }
    .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title {
      text-align: var(--login-title-alignment, right); }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge {
    margin-top: var(--sections-secondary-title-spacing, 24px);
    margin-bottom: 15px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor {
    margin-top: var(--sections-secondary-title-spacing, 24px); }
  .elementor-widget-woocommerce-checkout-page .e-coupon-box {
    margin-top: 24px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description {
    color: var(--forms-labels-color, #818a91);
    margin-bottom: var(--forms-label-spacing, 3px); }
  .elementor-widget-woocommerce-checkout-page .e-login-wrap {
    display: flex;
    align-items: center; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-start {
      flex: 75%; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
      flex: 20%;
      text-align: left; }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-checkout-page .e-login-wrap {
        display: block; }
        .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
          text-align: right;
          margin-top: 15px; }
          .elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label {
            display: none; } }
  .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap {
    display: flex;
    justify-content: space-between;
    margin-top: 6px; }
    .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
      margin-bottom: 0;
      font-size: 12px; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
          font-size: 11px; } }
  .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
    width: 90%;
    /* 90% to match the design */ }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
        width: auto; } }
  .elementor-widget-woocommerce-checkout-page .e-checkout__container {
    display: grid;
    flex-wrap: wrap;
    grid-template-columns: 56% auto;
    /* column widths - to match the design */
    align-items: stretch;
    grid-column-gap: var(--sections-margin, 24px);
    grid-row-gap: var(--sections-margin, 24px); }
  @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
    .elementor-widget-woocommerce-checkout-page .e-checkout__container {
      grid-template-columns: repeat(1, 1fr); } }
  .elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title {
    color: var(--sections-secondary-title-color, #818a91);
    margin-bottom: 0; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge {
    text-align: var(--coupon-title-alignment, right); }
  .elementor-widget-woocommerce-checkout-page #ship-to-different-address {
    margin-top: 13px;
    padding-right: var(--shipping-heading-padding-start, 30px); }
    .elementor-widget-woocommerce-checkout-page #ship-to-different-address span {
      font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-checkout-page a:hover {
      color: var(--links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-checkout-page .woocommerce {
    /* Need to use these specific selectors to override WooCommerce CSS */
    /* Need the <button> selector here so that we can target .woocommerce-button
		without being overwritten by WooCommerce's button.button selector.
		We are also targeting .woocommerce-button because none of this styling should
		apply to the Purchase button. Only The Login/Apply coupon button. */
    /* Main Sections styling start */
    /* Main Sections styling end */
    /* Styling for everything classified as 'Messages' start */
    /* Styling for everything classified as 'Messages' end */ }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      padding-left: var(--forms-columns-gap-padding, 0px);
      padding-right: var(--forms-columns-gap-padding, 0px);
      margin-left: var(--forms-columns-gap-margin, 0px);
      margin-right: var(--forms-columns-gap-margin, 0px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label {
        color: var(--forms-labels-color, #818a91);
        margin-bottom: var(--forms-label-spacing, 3px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea {
        color: var(--forms-fields-normal-color, #818a91);
        background-color: #f7f7f7;
        border-radius: var(--forms-fields-border-radius, 0px);
        padding: var(--forms-fields-padding, 16px);
        font-size: 14px;
        border: none;
        font-weight: 400; }
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus {
          color: var(--forms-fields-focus-color, #818a91);
          background-color: #f7f7f7;
          border-color: var(--forms-fields-focus-border-color, #818a91);
          transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field {
      margin-bottom: 5px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .create-account,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      /* need to use !important here to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 0 !important; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .input-radio,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span {
      position: relative;
      top: 2px;
      color: var(--sections-checkboxes-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label {
      display: inline; }
    .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #6F6F6F);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: 1rem;
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover {
        color: var(--forms-buttons-hover-text-color, #6F6F6F);
        transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
      margin-right: 1%; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
          width: 100%;
          margin-right: 0;
          margin-bottom: 15px; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-info {
      border-top-color: transparent;
      background-color: transparent;
      padding: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p {
      font-weight: 400;
      font-size: 12px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info {
      font-weight: 400;
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment,
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      background: var(--sections-background-color, #ffffff);
      border-radius: var(--sections-border-radius, 3px);
      padding: var(--sections-padding, 16px 30px);
      margin: var(--sections-margin, 0 0 24px 0);
      border-style: var(--sections-border-type, solid);
      border-color: var(--sections-border-color, #D4D4D4);
      border-width: 1px;
      display: block; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      display: var(--additional-information-display, none); }
    @media (min-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
        margin: var(--sections-margin, 0); } }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message {
      color: var(--sections-messages-color, #818a91);
      font-weight: 400; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p {
      margin-top: 25px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1 {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2 {
      padding-top: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading {
      text-align: var(--order-review-title-alignment, right); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table {
      margin-bottom: 0;
      border: 0;
      font-size: 14px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead {
        background-color: transparent; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th {
          padding-top: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td {
        color: #000000; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity {
          font-weight: normal; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td {
        color: #818a91; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th {
        border: 0;
        padding-left: 0;
        padding-bottom: 15px;
        padding-top: 15px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td {
        padding-bottom: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td {
      font-weight: 400;
      color: var(--order-summary-items-color, #000000);
      border-bottom-color: var(--order-summary-items-divider-color, #818a91);
      border-bottom-width: var(--order-summary-items-divider-weight, 0px);
      border-bottom-style: solid; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name {
        padding-left: 40px;
        max-width: 150px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total {
        vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th {
      padding-top: var(--order-summary-rows-gap-top, 15px);
      padding-bottom: var(--order-summary-rows-gap-bottom, 15px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th {
      color: var(--order-summary-totals-color, #818a91);
      vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th {
      border-top-color: var(--order-summary-totals-divider-color, #818a91);
      border-top-width: var(--order-summary-totals-divider-weight, 0px);
      border-top-style: solid; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td {
      max-width: 70px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce h3 {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      margin-bottom: var(--sections-title-spacing, 30px);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row > span {
      font-weight: 400;
      font-size: 14px;
      margin-bottom: 3px;
      color: #818a91; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
      /* use 48% to match the design. Default WC CSS uses 47% */
      width: 48%; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3 {
      text-align: var(--billing-details-title-alignment, right); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row {
      margin-bottom: var(--forms-rows-gap, 5px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child {
        margin-bottom: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login {
      margin-top: -8px;
      z-index: 999;
      background: #ffffff;
      border-top-width: 0;
      position: relative;
      margin-bottom: 0;
      color: #818a91; }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
        width: 100%; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle {
      display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
      width: 85%;
      /* 85% to match the design */ }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
          width: 35%;
          /* 35% to match the design */ } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3 {
      background: var(--additional-fields-title-alignment, right); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address {
      margin-bottom: var(--sections-margin, 20px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment {
      margin-top: 24px;
      padding: 15px 25px 25px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods {
        border-bottom: none;
        padding: 0; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box {
          background-color: #f7f7f7; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before {
            display: none; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li {
          line-height: 21px; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
            padding-right: 15px;
            font-size: 12px; }
            @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
              .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
                float: none;
                font-size: 11px;
                padding-left: 10px; } }
          @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
            .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img {
              width: 55px;
              /* 55px to match the design */ } }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order {
        display: flex;
        flex-direction: column;
        flex-wrap: wrap;
        padding: 0;
        margin-bottom: 0;
        align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order {
        background-color: #5bc0de;
        width: var(--purchase-button-width, auto);
        float: none;
        color: var(--purchase-button-normal-text-color, #ffffff);
        min-height: auto;
        padding: var(--purchase-button-padding, 1em 1em);
        border-radius: var(--purchase-button-border-radius, 3px); }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover {
          background-color: #5bc0de;
          color: var(--purchase-button-hover-text-color, #ffffff);
          border-color: var(--purchase-button-hover-border-color, #5bc0de);
          transition-duration: var(--purchase-button-hover-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before {
        display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2 {
      width: auto;
      float: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
      display: grid;
      grid-template-columns: auto auto;
      /*columns widths*/
      align-items: center; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
        text-align: left; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
          display: block; }
          .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
            text-align: right; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field {
      /* need to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 10px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000);
      /* We need to specify these values so that the 'Items' Typography control does not affect
			the 'Variations' */
      font-size: 14px;
      font-style: normal;
      text-transform: none;
      letter-spacing: normal;
      text-decoration: none;
      line-height: 21px; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-cart {
  /* one column layout */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart table tbody tr:hover > td,
  .elementor-widget-woocommerce-cart table tbody tr:hover > th {
    background-color: inherit; }
  .elementor-widget-woocommerce-cart .e {
    /* .e-clear is a class that is added between the cart sections to fix collapsing margins,
		especially when custom margins are being set by the Style Controls, then the margins could
		start overriding the other margin, leaving one margin */ }
    .elementor-widget-woocommerce-cart .e-clear {
      overflow: hidden;
      height: 0;
      width: 0; }
    .elementor-widget-woocommerce-cart .e-cart {
      /* Main sections styling start */
      /* Main sections styling end */
      /* one column layout */ }
      .elementor-widget-woocommerce-cart .e-cart-section {
        background-color: var(--sections-background-color, #ffffff);
        padding: var(--sections-padding, 16px 30px);
        margin: var(--sections-margin, 0 0 30px 0);
        border-radius: var(--sections-border-radius, 3px);
        border-width: 1px;
        border-style: var(--sections-border-type, solid);
        border-color: var(--sections-border-color, #D4D4D4); }
      @media (min-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-cart .e-cart-section:last-child {
          margin: var(--sections-margin, 0); } }
      .elementor-widget-woocommerce-cart .e-cart-content {
        color: var(--sections-descriptions-color, #818a91);
        font-size: 15px;
        font-weight: 400;
        line-height: 23px;
        letter-spacing: 0; }
      .elementor-widget-woocommerce-cart .e-cart__container {
        display: grid;
        flex-wrap: wrap;
        grid-template-columns: 59% auto;
        /* 59% to match the required design */
        align-items: stretch;
        grid-column-gap: var(--sections-margin, 30px);
        grid-row-gap: var(--sections-margin, 30px); }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-cart .e-cart__container {
          grid-template-columns: repeat(1, 1fr); } }
      .elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container {
        grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart .select2-container {
    margin-bottom: 4px; }
    .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 0px);
      border: none;
      height: 45px; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, initial);
        transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder {
        color: var(--forms-fields-normal-color, #818a91); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered {
        color: var(--forms-fields-normal-color, #818a91);
        line-height: 45px;
        padding-right: 1rem;
        padding-left: 1rem; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow {
        height: 45px; }
    .elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below {
      background-color: #f7f7f7; }
  .elementor-widget-woocommerce-cart .woocommerce {
    font-family: Roboto, sans-serif; }
    .elementor-widget-woocommerce-cart .woocommerce button.button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #818a91);
      border-radius: var(--forms-buttons-border-radius, 3px);
      /* 0.88rem is used here so that this button will match the design layout from Product. */
      padding: var(--forms-buttons-padding, 0.88rem 2rem);
      width: var(--forms-buttons-width, auto);
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-cart .woocommerce button.button:hover {
        color: var(--forms-buttons-hover-text-color, #818a91);
        transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
        border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce button.button.disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled] {
        /* 0.88rem is used here so that this button will match the design layout from Product. */
        padding: var(--forms-buttons-padding, 0.88rem 2rem);
        color: var(--forms-buttons-normal-text-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover {
          background-color: var(--forms-buttons-hover-background-color, #ffffff);
          color: var(--forms-buttons-hover-text-color, #818a91);
          transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
          border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form {
      margin-top: var(--sections-descriptions-spacing, 15px); }
    .elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination {
      color: var(--sections-descriptions-color, #818a91);
      margin-bottom: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td {
      text-align: right !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before {
        width: 100%;
        margin-bottom: 10px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td {
      text-align: left !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td::before {
        content: attr(data-title);
        font-weight: 700;
        float: right; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      text-align: var(--totals-title-alignment, right); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td {
      padding-top: var(--totals-rows-gap-top, 12px);
      padding-bottom: var(--totals-rows-gap-bottom, 9px); }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before,
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount {
        color: var(--totals-color, #818a91);
        font-weight: 700; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td {
      border-top-color: var(--totals-divider-color, #818a91);
      border-top-width: var(--totals-divider-weight, 0); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row {
      margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-cart .woocommerce .product-name a {
      color: var(--product-link-normal-color, #000000); }
      .elementor-widget-woocommerce-cart .woocommerce .product-name a:hover {
        color: var(--product-link-hover-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .form-row {
      padding: 3px 0;
      margin: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .input-text,
    .elementor-widget-woocommerce-cart .woocommerce select {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 3px);
      border: none;
      padding: var(--forms-fields-padding, 16px);
      font-size: 14px; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text:focus,
      .elementor-widget-woocommerce-cart .woocommerce select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, transparent);
        transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce .input-text.qty {
      background-color: transparent;
      color: var(--order-summary-color, #000000);
      border-width: var(--order-summary-quantity-border-weight, 1px);
      border-style: solid;
      border-color: var(--order-summary-quantity-border-color, #D4D4D4);
      border-radius: 3px;
      padding: 1px 2px;
      text-align: right;
      font-size: 14px;
      min-height: 28px;
      max-height: 28px; }
    .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout {
      padding-bottom: 0;
      display: flex;
      flex-direction: column;
      flex-wrap: wrap;
      align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button {
        padding: var(--checkout-button-padding, 15px 1em);
        width: var(--checkout-button-width, auto);
        font-size: 15px;
        text-align: center;
        color: var(--checkout-button-normal-text-color, #ffffff);
        background-color: #5bc0de;
        border-radius: var(--checkout-button-border-radius, 3px);
        min-height: auto;
        margin-bottom: 0; }
        .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover {
          color: var(--checkout-button-hover-text-color, #ffffff);
          background-color: #5bc0de;
          border-color: var(--checkout-button-hover-border-color, #5bc0de);
          transition-duration: var(--checkout-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-cart .woocommerce .remove {
      background: transparent;
      color: var(--order-summary-remove-icon-normal-color, #000000) !important;
      /* need important here because Woo also has !important */
      width: auto; }
      .elementor-widget-woocommerce-cart .woocommerce .remove:hover {
        background: transparent;
        color: var(--order-summary-remove-icon-hover-color, #5bc0de) !important;
        /* need important here because Woo also has !important */ }
    .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals {
      float: none;
      width: 100%; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td {
        padding-right: 0; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td {
        padding-left: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
      float: left;
      width: 100%; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .form-row {
      padding: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
      display: flex; }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
        flex: 2;
        padding-left: 30px; }
        @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
          .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
            padding-left: 0; } }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-end {
        flex: 1; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
          display: block; } }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-cart .woocommerce .coupon {
        margin: var(--sections-margin, 0); }
        .elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code {
          width: 100%;
          margin-left: 0;
          margin-bottom: 15px; }
        .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
          width: 100%; } }
    .elementor-widget-woocommerce-cart .woocommerce table.shop_table {
      border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
        float: right;
        font-size: 14px;
        font-weight: 700; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
          float: none;
          width: 100%; } }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table th {
        border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions {
        padding: 16px 0 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a {
        display: inline-block; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child {
        display: var(--update-cart-automatically-display, table-row); }
    .elementor-widget-woocommerce-cart .woocommerce table.cart {
      margin-bottom: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart img {
        width: 55px;
        height: auto;
        display: block; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-top: var(--order-summary-rows-gap-top, 20px);
        padding-left: 20px;
        padding-bottom: var(--order-summary-rows-gap-bottom, 20px);
        padding-right: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td span {
          color: var(--order-summary-color, #000000);
          font-size: 14px;
          font-weight: 400; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
          border-top-width: var(--order-summary-items-divider-weight, 1px);
          border-top-style: solid;
          border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
          @media (max-width: ELEMENTOR_SCREEN_TABLET_MIN) {
            .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
              border-top-width: 0; } }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove {
          padding-right: 0;
          padding-left: 0; }
      @media (min-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
        .elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td {
          border-top: none; } }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove {
        position: relative; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-name {
        padding-left: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
        border-top-width: var(--order-summary-items-divider-weight, 1px);
        border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
          border-top: none; } }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MIN) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-right: 0;
        padding-left: 0; } }
    @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart {
        padding: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
          padding: 16px 28px; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
            border-top: none; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td {
          padding-right: 0;
          padding-left: 0; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
            padding: 0; } }
    .elementor-widget-woocommerce-cart .woocommerce a {
      color: var(--links-normal-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce a:hover {
        color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      padding-top: 0;
      padding-bottom: 8px;
      padding-right: 0;
      padding-left: 20px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      margin-bottom: var(--sections-title-spacing, 1rem);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      padding-bottom: var(--order-summary-title-spacing, 8px);
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart td::before {
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button::after {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000); }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td, .elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td {
        padding-right: 0; } }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: var(--forms-fields-normal-color, #818a91); }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: var(--forms-fields-focus-color, #818a91);
    border-color: var(--forms-fields-focus-border-color, #818a91);
    transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }

.elementor-widget-woocommerce-my-account {
  font-family: Roboto, sans-serif;
  color: #818a91;
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table {
    border: none;
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    background-color: var(--sections-background-color, #ffffff); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px 3px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,
  .elementor-widget-woocommerce-my-account .e-my-account-tab address {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content {
    border: 0; }
    .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
      padding: 0;
      border: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    margin-bottom: 40px; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads,
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px 3px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content > div > p {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: var(--forms-fields-normal-background-color, #f7f7f7);
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: var(--forms-fields-focus-background-color, #f7f7f7);
      border-color: var(--forms-fields-focus-border-color, initial);
      transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below {
    background-color: var(--forms-fields-normal-background-color, #f7f7f7); }
  .elementor-widget-woocommerce-my-account .woocommerce ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce-message {
    font-size: 14px; }
  .elementor-widget-woocommerce-my-account .woocommerce address {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a:hover {
      color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover {
      background-color: initial; }
    .elementor-widget-woocommerce-my-account .woocommerce a.button:hover {
      background-color: initial; }
  .elementor-widget-woocommerce-my-account .woocommerce em {
    font-size: 12px;
    color: var(--login-messages-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .form-row {
    padding-left: var(--forms-columns-gap-padding-left, 0px);
    padding-right: var(--forms-columns-gap-padding-right, 0px);
    margin-left: var(--forms-columns-gap-margin-left, 0px);
    margin-right: var(--forms-columns-gap-margin-right, 0px);
    margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row label {
      color: var(--forms-labels-color, #818a91);
      margin-bottom: var(--forms-label-spacing, 0px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,
    .elementor-widget-woocommerce-my-account .woocommerce .form-row select {
      color: var(--forms-fields-normal-color, #818a91);
      border-radius: var(--forms-fields-border-radius, 0px);
      padding: var(--forms-fields-padding, 16px);
      background: #f7f7f7;
      border: none;
      font-size: 14px; }
      .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,
      .elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        border-color: var(--forms-fields-focus-border-color, #818a91);
        transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field {
    margin-bottom: 5px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text {
    margin-bottom: 15px;
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword {
    font-size: 12px;
    margin-bottom: 0px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    width: 50%;
    /* 50% to match the design - it would normally be full width */ }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p {
      color: var(--general-text-color, #818a91); }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first {
      width: 100%; }
  .elementor-widget-woocommerce-my-account .woocommerce .login,
  .elementor-widget-woocommerce-my-account .woocommerce .register,
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px);
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .login .button,
    .elementor-widget-woocommerce-my-account .woocommerce .register .button,
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button {
      background: #5bc0de;
      border: none;
      color: var(--forms-buttons-normal-text-color, #ffffff);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: var(--forms-buttons-padding, 12px 32px); }
      .elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover {
        color: var(--forms-buttons-hover-text-color, #ffffff);
        transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3) {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    margin-top: 10px;
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox {
    vertical-align: middle; }
  .elementor-widget-woocommerce-my-account .woocommerce p:last-of-type {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span {
    color: var(--checkboxes-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tr,
  .elementor-widget-woocommerce-my-account .woocommerce td,
  .elementor-widget-woocommerce-my-account .woocommerce th {
    border: none; }
  .elementor-widget-woocommerce-my-account .woocommerce h2,
  .elementor-widget-woocommerce-my-account .woocommerce h3 {
    color: var(--typography-section-titles-color, #000000);
    margin-top: 0;
    margin-bottom: var(--section-title-spacing, 45px);
    font-weight: 400; }
  .elementor-widget-woocommerce-my-account .woocommerce strong {
    color: var(--general-text-color, #000000); }
    .elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label {
      color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta {
    color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .product-quantity {
    font-weight: 400;
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
    float: right;
    width: 25%;
    /* 25% to match the design */ }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul {
      padding-inline-start: 0; }
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li {
        list-style-type: none;
        margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
        display: inline-block;
        width: 100%;
        /* add a Divider between the tabs that is outside of the margins */ }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li::after {
          content: "";
          display: block;
          width: 100%;
          background-color: var(--tabs-divider-color, #818a91);
          height: var(--tabs-divider-weight, 0px);
          position: relative;
          top: calc(var(--tabs-spacing, 2px) / 2); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a {
          color: var(--tabs-active-color, #5bc0de);
          background: #eceeef;
          border-color: var(--tabs-active-border-color, transparent); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
          font-style: normal;
          font-weight: bold;
          font-size: 14px;
          color: var(--tabs-normal-color, #818a91);
          display: block;
          padding: var(--tabs-padding, 12px 20px);
          text-align: var(--tabs-alignment, start);
          background: #f7f7f7;
          border-radius: var(--tabs-border-radius, 0px);
          border-style: var(--tabs-border-type, solid);
          border-color: var(--tabs-border-color, transparent);
          border-width: 0px; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover {
            color: var(--tabs-hover-color, #5bc0de);
            border-color: var(--tabs-hover-border-color, transparent); }
          @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
            .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
              padding: var(--tabs-padding, 10px); } }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard {
          margin-top: 0; }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout {
          margin-bottom: 0; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout::after {
            display: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
    float: left;
    width: 75%;
    /* 75% to match the design */
    padding: 0;
    padding-right: var(--tab-content-spacing, 6%);
    /* 6% to match the design */ }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
        width: 100%;
        padding: var(--tab-content-spacing, 6%) 0 0 0; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper {
      font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type {
      margin-top: 30px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark {
      background-color: transparent;
      font-weight: bold;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child th,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child th {
    border-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th {
    border-top: 0;
    padding-right: 0;
    padding-top: 0;
    padding-bottom: var(--tables-titles-spacing, 9px); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > th,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > th {
    background-color: transparent;
    padding-right: 0;
    padding-top: var(--order-summary-rows-gap-top, 9px);
    padding-bottom: var(--order-summary-rows-gap-bottom, 9px);
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .shop_table {
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table td, .elementor-widget-woocommerce-my-account .woocommerce .shop_table th {
      border-top-style: var(--tables-divider-border-type, solid);
      border-top-width: var(--tables-divider-border-width, 1px);
      border-top-color: var(--tables-divider-border-color, #D4D4D4); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th {
      color: var(--tables-title-color, #000000); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span {
        color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td {
    padding-right: 0;
    color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td {
    border-top: none;
    padding-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .order-again .button {
    background: transparent;
    border: 2px solid #5bc0de;
    border-style: var(--tables-buttons-border-type, solid);
    border-color: var(--tables-buttons-border-color, #5bc0de);
    border-width: 2px;
    border-radius: var(--tables-button-border-radius, 3px);
    vertical-align: middle;
    color: var(--tables-button-normal-text-color, #818a91);
    margin-top: 0;
    margin-bottom: 0;
    padding: var(--tables-button-padding, 12px 32px); }
    .elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover {
      color: var(--tables-button-hover-text-color, #818a91);
      transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .title h3, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3 {
    float: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-Address address, .elementor-widget-woocommerce-my-account .woocommerce-Addresses address {
    padding: var(--sections-padding, 45px 30px 16px 30px); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .edit, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit {
    float: right;
    position: absolute;
    margin-right: var(--edit-link-margin-start, 30px);
    margin-top: var(--edit-link-margin-top, 10px); }
  .elementor-widget-woocommerce-my-account .woocommerce .u-columns {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset {
    border: none;
    padding: 0;
    margin-inline-start: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend {
      font-weight: 700;
      padding: 20px 0;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button {
    background: #5bc0de;
    border: none;
    color: var(--forms-buttons-normal-text-color, #ffffff);
    border-radius: var(--forms-buttons-border-radius, 3px);
    padding: var(--forms-buttons-padding, 12px 32px);
    margin-top: 20px; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover {
      color: var(--forms-buttons-hover-text-color, #ffffff);
      transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-pagination {
    padding: 16px 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-pagination .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td {
    vertical-align: top;
    line-height: unset; }

.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  float: none;
  width: 100%; }
  .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
    display: inline-block; }

.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation {
  display: block; }

.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: block; }
  .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    justify-content: var(--tabs-container-justify-content, space-between); }
    @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
        display: block; } }
    .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
      display: inline-block;
      width: var(--tab-width, 100%);
      padding: 0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);
      margin: 0;
      border-right-color: var(--tabs-divider-color, #818a91);
      border-right-width: var(--tabs-divider-weight, 0px);
      border-right-style: solid; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li::after {
        display: none; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type {
        padding-right: 0; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type {
        padding-left: 0;
        border-right-width: 0; }
      @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
        .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
          margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
          display: inline-block;
          width: 100%; } }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-content {
  float: none;
  width: 100%;
  padding: var(--tab-content-spacing, 50px) 0 0 0; }

/**
 * Specific styling in the Editor.
 */
.elementor-editor-active,
.elementor-editor-preview {
  /**
	 * Prep for the js switching of tabs when in the editor.
	 */
  /**
	 * Disable all but the first 'View' order button as
	 * this is the only order loaded for preview purposes.
	 */ }
  .elementor-editor-active .elementor-widget-container,
  .elementor-editor-preview .elementor-widget-container {
    min-height: 1px; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a {
    pointer-events: none; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button {
    pointer-events: none;
    opacity: .3; }

/**
 * Hide all the other My Account pages' content in the Editor except the first one - dashboard page
 */
.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type) {
  display: none; }

.product .count {
  background-color: inherit; }

.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2 {
  display: none; }

.woocommerce div.product.elementor form.cart div.product-addon {
  flex-basis: 100%;
  flex-shrink: 0; }

.e-sticky-right-column--active {
  position: sticky;
  top: 0; }

.elementor-theme-builder-content-area {
  height: 400px; }

.elementor-location-header:before,
.elementor-location-footer:before {
  content: '';
  display: table;
  clear: both; }

.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post {
  display: block; }

.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid {
  color: #D4D4D4;
  border: none;
  border-top: 1px solid;
  border-bottom: 1px solid;
  padding-top: 10px;
  padding-bottom: 10px; }

.elementor-post-navigation-borders-yes .elementor-post-navigation__separator {
  height: 100%;
  width: 1px;
  margin: 0 auto;
  background-color: #D4D4D4; }

.elementor-post-navigation {
  overflow: hidden;
  display: flex; }
  .elementor-post-navigation .post-navigation__arrow-wrapper {
    color: #D4D4D4; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev {
      font-size: 30px;
      padding-left: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next {
      font-size: 30px;
      padding-right: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper i {
      transform: translateY(-5%); }
  .elementor-post-navigation .elementor-post-navigation__link__prev, .elementor-post-navigation .elementor-post-navigation__link__next {
    overflow: hidden; }
  .elementor-post-navigation .elementor-post-navigation__link a {
    display: flex;
    align-items: center;
    max-width: 100%; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__next--label {
    text-transform: uppercase;
    font-size: 0.8em; }
  .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--title {
    font-size: 0.7em; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--label, .elementor-post-navigation .post-navigation__next--title {
    overflow: hidden;
    text-overflow: ellipsis; }
  .elementor-post-navigation span.elementor-post-navigation__link__next {
    text-align: left; }
  .elementor-post-navigation span.elementor-post-navigation__link__next, .elementor-post-navigation span.elementor-post-navigation__link__prev {
    display: flex;
    flex-direction: column; }

.elementor-post-navigation .elementor-grid {
  justify-content: space-between; }

.elementor-post-navigation .elementor-post-navigation__link {
  width: calc( 50% - ( 1px / 2 ));
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis; }

.elementor-post-navigation .elementor-post-navigation__separator-wrapper {
  text-align: center; }

.elementor-post-navigation .elementor-post-navigation__next {
  text-align: left; }
  .elementor-post-navigation .elementor-post-navigation__next a {
    float: left; }

.elementor-search-form {
  display: block;
  transition: 0.2s;
  /*------ Reset ------*/ }
  .elementor-search-form .e-font-icon-svg-container {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center; }
  .elementor-search-form input[type="search"], .elementor-search-form button {
    margin: 0;
    border: 0;
    padding: 0;
    display: inline-block;
    vertical-align: middle;
    white-space: normal;
    background: none;
    line-height: 1;
    min-width: 0;
    font-size: 15px;
    -webkit-appearance: none;
    -moz-appearance: none; }
    .elementor-search-form input[type="search"]:focus, .elementor-search-form button:focus {
      outline: 0;
      color: inherit; }
  .elementor-search-form button {
    background-color: #818a91;
    font-size: var(--e-search-form-submit-icon-size, 16px);
    color: #fff;
    border-radius: 0; }
  .elementor-search-form__container {
    display: flex;
    transition: 0.2s;
    overflow: hidden;
    border: 0 solid transparent;
    min-height: 50px; }
    .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      background: #eceeef; }
  .elementor-search-form__input {
    flex-basis: 100%;
    color: #55595c;
    transition: color 0.2s; }
    .elementor-search-form__input::-webkit-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-ms-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
  .elementor-search-form__submit {
    transition: color 0.2s, background 0.2s;
    font-size: var(--e-search-form-submit-icon-size, 16px); }
    .elementor-search-form__submit svg {
      fill: var(--e-search-form-submit-text-color, #fff);
      width: var(--e-search-form-submit-icon-size, 16px);
      height: var(--e-search-form-submit-icon-size, 16px); }
  .elementor-search-form .elementor-search-form__submit, .elementor-search-form .elementor-search-form__submit:hover {
    color: var(--e-search-form-submit-text-color, #fff);
    border: none;
    border-radius: 0; }
  .elementor-search-form--button-type-text .elementor-search-form__submit {
    flex-shrink: 0; }
  .elementor-search-form--skin-minimal .elementor-search-form__icon {
    opacity: 0.6;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    color: #55595c;
    fill: #55595c;
    font-size: var(--e-search-form-icon-size-minimal, 15px); }
    .elementor-search-form--skin-minimal .elementor-search-form__icon svg {
      width: var(--e-search-form-icon-size-minimal, 15px);
      height: var(--e-search-form-icon-size-minimal, 15px); }
  .elementor-search-form--skin-full_screen .elementor-search-form input[type="search"].elementor-search-form__input {
    font-size: 50px;
    text-align: center;
    border-style: solid;
    border-width: 0 0 1px 0;
    border-color: #fff;
    line-height: 1.5;
    color: #fff; }
  .elementor-search-form--skin-full_screen .elementor-search-form__toggle {
    display: inline-block;
    cursor: pointer;
    vertical-align: middle;
    color: var(--e-search-form-toggle-color, #494c4f);
    font-size: var(--e-search-form-toggle-size, 33px); }
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle i,
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container {
      position: relative;
      display: block;
      transition: 0.2s;
      width: var(--e-search-form-toggle-size, 33px);
      height: var(--e-search-form-toggle-size, 33px);
      background-color: var(--e-search-form-toggle-background-color, rgba(0, 0, 0, 0.05));
      border-style: solid;
      border-color: var(--e-search-form-toggle-color, #494c4f);
      border-width: var(--e-search-form-toggle-border-width, 0);
      border-radius: var(--e-search-form-toggle-border-radius, 3px); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before {
        font-size: var(--e-search-form-toggle-icon-size, 0.55em); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        fill: var(--e-search-form-toggle-color, #494c4f);
        width: var(--e-search-form-toggle-icon-size, 0.55em);
        height: var(--e-search-form-toggle-icon-size, 0.55em); }
  .elementor-search-form--skin-full_screen .elementor-search-form__container {
    transition: 0.3s;
    align-items: center;
    position: fixed;
    z-index: 9998;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    height: 100vh;
    padding: 0 15%;
    background-color: rgba(0, 0, 0, 0.8); }
    .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      overflow: hidden;
      opacity: 0;
      transform: scale(0); }
      .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button {
        display: none; }

.elementor-author-box {
  display: flex;
  align-items: center; }
  .elementor-author-box__avatar {
    flex-shrink: 0;
    margin-left: 25px; }
    .elementor-author-box__avatar img {
      width: 100px;
      border-radius: 500px;
      object-fit: cover; }
  .elementor-author-box__text {
    flex-grow: 1;
    font-size: 17px; }
  .elementor-author-box__name {
    font-size: 24px;
    margin-bottom: 5px; }
  .elementor-author-box__bio {
    margin-bottom: 0.8em; }
    .elementor-author-box__bio p {
      margin-bottom: 0.8em; }
      .elementor-author-box__bio p:last-of-type {
        margin-bottom: 0; }
  .elementor-author-box--layout-image-left .elementor-author-box {
    flex-direction: row-reverse; }
    .elementor-author-box--layout-image-left .elementor-author-box__avatar {
      margin-left: 0;
      margin-right: 25px; }
  .elementor-author-box--layout-image-right .elementor-author-box {
    flex-direction: row; }
    .elementor-author-box--layout-image-right .elementor-author-box__avatar {
      margin-right: 0;
      margin-left: 25px; }
  .elementor-author-box--layout-image-above .elementor-author-box {
    display: block; }
    .elementor-author-box--layout-image-above .elementor-author-box__avatar {
      margin: 0 auto 15px;
      display: inline-block; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar {
    margin-left: 0; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar {
    margin-right: 0; }
  .elementor-author-box--align-left .elementor-author-box {
    text-align: left; }
  .elementor-author-box--align-right .elementor-author-box {
    text-align: right; }
  .elementor-author-box--align-center .elementor-author-box {
    text-align: center; }

.elementor-button.elementor-author-box__button {
  border: solid 2px #55595c;
  font-size: 15px;
  font-weight: 100;
  padding: 10px 18px; }
  .elementor-button.elementor-author-box__button, .elementor-button.elementor-author-box__button:hover {
    background: transparent;
    color: #55595c; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar {
  align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar {
  align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar {
  align-self: center; }

.elementor-post-info__terms-list {
  display: inline-block; }

.elementor-post-info .elementor-icon-list-icon .elementor-avatar {
  border-radius: 100%; }

.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after {
  margin: initial; }

.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text {
  display: inline-block; }
  .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a, .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span {
    display: inline; }

.elementor-widget-breadcrumbs {
  font-size: 0.85em; }
  .elementor-widget-breadcrumbs p {
    margin-bottom: 0; }

.elementor-sitemap-wrap {
  display: flex;
  flex-flow: row wrap; }

.elementor-sticky--active {
  z-index: 99; }

[data-elementor-type="popup"]:not(.elementor-edit-area) {
  display: none; }

[data-elementor-type="popup"] .elementor-section-wrap:not(:empty) + #elementor-add-new-section {
  display: none; }

.elementor-popup-modal {
  display: flex;
  pointer-events: none;
  background-color: transparent;
  user-select: auto; }
  .elementor-popup-modal .dialog-header, .elementor-popup-modal .dialog-buttons-wrapper {
    display: none; }
  .elementor-popup-modal .dialog-close-button {
    display: none;
    top: 20px;
    margin-top: 0;
    left: 20px;
    opacity: 1;
    z-index: 9999;
    pointer-events: all; }
    .elementor-popup-modal .dialog-close-button svg {
      fill: #373a3c;
      height: 1em;
      width: 1em; }
  .elementor-popup-modal .dialog-widget-content {
    width: initial;
    overflow: visible;
    max-width: 100%;
    max-height: 100%;
    border-radius: 0;
    box-shadow: none;
    pointer-events: all; }
  .elementor-popup-modal .dialog-message {
    width: 640px;
    max-width: 100vw;
    max-height: 100vh;
    padding: 0;
    overflow: auto;
    display: flex; }
  .elementor-popup-modal .elementor {
    width: 100%; }

.elementor-motion-effects-element, .elementor-motion-effects-layer {
  transition-property: transform, opacity;
  transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
  transition-duration: 1s; }

.elementor-motion-effects-container {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); }

.elementor-motion-effects-layer {
  position: absolute;
  top: 0;
  left: 0;
  background-repeat: no-repeat;
  background-size: cover; }

.elementor-motion-effects-perspective {
  perspective: 1200px; }
assets/css/templates/frontend.min.css000064400001204301150755004310013750 0ustar00@charset "UTF-8";.elementor-bg-transform .elementor-bg{will-change:transform}.elementor-bg-transform-zoom-in:hover .elementor-bg,.elementor-bg-transform-zoom-out .elementor-bg{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.elementor-bg-transform-zoom-out:hover .elementor-bg{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-bg-transform-move-left .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-left:hover .elementor-bg,.elementor-bg-transform-move-right .elementor-bg{-webkit-transform:scale(1.2) translateX(-8%);-ms-transform:scale(1.2) translateX(-8%);transform:scale(1.2) translateX(-8%)}.elementor-bg-transform-move-right:hover .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-up .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-bg-transform-move-down .elementor-bg,.elementor-bg-transform-move-up:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(-8%);-ms-transform:scale(1.2) translateY(-8%);transform:scale(1.2) translateY(-8%)}.elementor-bg-transform-move-down:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-animated-content{--translate:0,0}.elementor-animated-content:hover .elementor-animated-item--grow{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.elementor-animated-content:hover .elementor-animated-item--shrink{-webkit-transform:scale(.85);-ms-transform:scale(.85);transform:scale(.85)}.elementor-animated-content:hover .elementor-animated-item--shrink-contained{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content:hover .elementor-animated-item--enter-zoom-in,.elementor-animated-content:hover .elementor-animated-item--enter-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-in{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in,.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-out{opacity:0}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content:hover .elementor-animated-item--enter-from-bottom,.elementor-animated-content:hover .elementor-animated-item--enter-from-left,.elementor-animated-content:hover .elementor-animated-item--enter-from-right,.elementor-animated-content:hover .elementor-animated-item--enter-from-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content:hover .elementor-animated-item--exit-to-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom{-webkit-transform:translateY(600px);-ms-transform:translateY(600px);transform:translateY(600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom,.elementor-animated-content:hover .elementor-animated-item--exit-to-left,.elementor-animated-content:hover .elementor-animated-item--exit-to-right,.elementor-animated-content:hover .elementor-animated-item--exit-to-top{opacity:0}.elementor-animated-content:hover .elementor-animated-item--move-right{-webkit-transform:translateX(30px);-ms-transform:translateX(30px);transform:translateX(30px)}.elementor-animated-content:hover .elementor-animated-item--move-left{-webkit-transform:translateX(-30px);-ms-transform:translateX(-30px);transform:translateX(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-up{-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-down{-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px)}.elementor-animated-content:hover .elementor-animated-item--move-contained-right{--translate:8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-left{--translate:-8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-top{--translate:0,-8%}.elementor-animated-content:hover .elementor-animated-item--move-contained-bottom{--translate:0,8%}.elementor-animated-content [class^=elementor-animated-item]{will-change:transform,opacity}.elementor-animated-content .elementor-animated-item--shrink-contained{-webkit-transform:scale(1.17);-ms-transform:scale(1.17);transform:scale(1.17)}.elementor-animated-content .elementor-animated-item--enter-zoom-in{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content .elementor-animated-item--enter-zoom-out{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content .elementor-animated-item--enter-zoom-in,.elementor-animated-content .elementor-animated-item--enter-zoom-out,.elementor-animated-content .elementor-animated-item--fade-in{opacity:0}.elementor-animated-content .elementor-animated-item--exit-zoom-in,.elementor-animated-content .elementor-animated-item--exit-zoom-out,.elementor-animated-content .elementor-animated-item--fade-out{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content .elementor-animated-item--enter-from-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content .elementor-animated-item--enter-from-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content .elementor-animated-item--enter-from-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom{-webkit-transform:translateY(500px);-ms-transform:translateY(500px);transform:translateY(500px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom,.elementor-animated-content .elementor-animated-item--enter-from-left,.elementor-animated-content .elementor-animated-item--enter-from-right,.elementor-animated-content .elementor-animated-item--enter-from-top{opacity:0}.elementor-animated-content .elementor-animated-item--exit-to-bottom,.elementor-animated-content .elementor-animated-item--exit-to-left,.elementor-animated-content .elementor-animated-item--exit-to-right,.elementor-animated-content .elementor-animated-item--exit-to-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content .elementor-animated-item--move-contained-bottom,.elementor-animated-content .elementor-animated-item--move-contained-left,.elementor-animated-content .elementor-animated-item--move-contained-right,.elementor-animated-content .elementor-animated-item--move-contained-top{-webkit-transform:scale(1.2) translate(var(--translate));-ms-transform:scale(1.2) translate(var(--translate));transform:scale(1.2) translate(var(--translate))}.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover{outline:1px solid #fec449}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings{background-image:-webkit-gradient(linear,left bottom,left top,from(#feb416),to(#fec449));background-image:-webkit-linear-gradient(bottom,#feb416,#fec449);background-image:-o-linear-gradient(bottom,#feb416,#fec449);background-image:linear-gradient(0deg,#feb416,#fec449)}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover{background-color:#feb416}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save{display:none}body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;width:100%;padding:0}body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;padding:0}.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form){margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .quantity .qty{vertical-align:top;margin-right:0}.woocommerce div.product.elementor .quantity+.button{margin-left:10px}.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input{height:100%}.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button{background-color:#5bc0de}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button{background-color:#5cb85c}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button{background-color:#f0ad4e}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button{background-color:#d9534f}.elementor-widget-wc-add-to-cart .quantity{display:inline-block}.elementor-widget-wc-add-to-cart.elementor-align-center form.cart{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-wc-add-to-cart.elementor-align-left form.cart,.elementor-widget-wc-add-to-cart.elementor-align-right form.cart{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor ul.tabs:before{position:static;content:none;width:auto;bottom:auto;left:auto;border-bottom:0;z-index:auto}.woocommerce div.product.elementor ul.tabs{margin:0}.woocommerce div.product.elementor ul.tabs li{padding:0}.woocommerce div.product.elementor ul.tabs li a{padding:.8em 1.2em;line-height:1}.woocommerce div.product.elementor ul.tabs li:after,.woocommerce div.product.elementor ul.tabs li:before{border:0;position:static;bottom:auto;width:auto;height:auto;content:none;-webkit-box-sizing:border-box;box-sizing:border-box}.woocommerce div.product.elementor .woocommerce-tabs .panel{padding:20px;border-radius:0;border-width:0;border-top:1px solid #d3ced2;-webkit-box-shadow:none;box-shadow:none;margin:-1px 0 0}.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins{display:block}.elementor-widget-woocommerce-product-meta .detail-container{position:relative}.elementor-widget-woocommerce-product-meta .detail-container:after{position:absolute;bottom:0;left:0;width:100%}.elementor-widget-woocommerce-product-meta .detail-label{font-weight:700}.elementor-woo-meta--view-inline .product_meta{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-woo-meta--view-inline .product_meta .detail-container:after{width:auto;left:auto;right:auto;position:absolute;height:100%;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;right:-8px}.elementor-woo-meta--view-table .product_meta{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-woo-meta--view-table .product_meta,.elementor-woo-meta--view-table .product_meta .detail-container{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-woo-meta--view-table .product_meta .detail-label{min-width:108px}.elementor-woo-meta--view-stacked .product_meta .detail-container{display:block}.woocommerce div.product.elementor .woocommerce-product-rating{margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.woocommerce div.product.elementor .star-rating{margin-top:0}.elementor-product-rating--align-left .woocommerce-product-rating{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-product-rating--align-right .woocommerce-product-rating{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-product-rating--align-center .woocommerce-product-rating{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link{margin-left:auto}.elementor-products-grid ul.products.elementor-grid{display:grid;margin:0;grid-column-gap:20px;grid-row-gap:40px}.elementor-products-grid ul.products.elementor-grid:after,.elementor-products-grid ul.products.elementor-grid:before{content:none;display:none}.elementor-products-grid ul.products.elementor-grid li.product{width:auto;padding:0;margin:0;float:none}.elementor-products-grid ul.products.elementor-grid li.product .onsale{padding:0;display:none}.elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link{display:block;position:relative}.elementor-products-grid:not(.show-heading-yes) .products>h2{display:none}.elementor-products-grid nav.woocommerce-pagination{margin-top:40px}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul{border:0}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li{border-right:0;border-left:0}.elementor-product-loop-item--align-left ul.products li.product .star-rating{margin-right:auto}.elementor-product-loop-item--align-right ul.products li.product .star-rating{margin-left:auto}.elementor-product-loop-item--align-center ul.products li.product .star-rating{margin-right:auto;margin-left:auto}.woocommerce .elementor-element.elementor-products-grid ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product{width:auto}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT){.elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products{grid-template-columns:repeat(2,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products{grid-template-columns:repeat(3,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products{grid-template-columns:repeat(4,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products{grid-template-columns:repeat(5,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products{grid-template-columns:repeat(6,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products{grid-template-columns:repeat(7,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products{grid-template-columns:repeat(8,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products{grid-template-columns:repeat(9,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products{grid-template-columns:repeat(10,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products{grid-template-columns:repeat(11,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(3,1fr)}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(2,1fr)}}.elementor.product .woocommerce-product-gallery__trigger+.woocommerce-product-gallery__wrapper{overflow:hidden}.woocommerce .elementor-widget-woocommerce-product-images span.onsale{padding:0}.elementor-menu-cart__wrapper{text-align:var(--main-alignment,left)}.elementor-menu-cart__toggle_wrapper{display:inline-block;position:relative}.elementor-menu-cart__toggle{display:inline-block}.elementor-menu-cart__toggle .elementor-button{background-color:var(--toggle-button-background-color,transparent);color:var(--toggle-button-text-color,#818a91);border:var(--toggle-button-border-width,1px) var(--toggle-button-border-type,solid) var(--toggle-button-border-color,#818a91);border-radius:var(--toggle-button-border-radius,0);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--toggle-icon-padding,12px 24px)}.elementor-menu-cart__toggle .elementor-button:hover{color:var(--toggle-button-hover-text-color,#818a91);background-color:var(--toggle-button-hover-background-color,transparent);border-color:var(--toggle-button-hover-border-color,#818a91)}.elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon{color:var(--toggle-button-icon-hover-color,#818a91)}.elementor-menu-cart__toggle .elementor-button-text{margin-right:.3em}.elementor-menu-cart__toggle .elementor-button-icon{position:relative;-webkit-transition:color .1s;-o-transition:color .1s;transition:color .1s;color:var(--toggle-button-icon-color,#818a91);font-size:var(--toggle-icon-size,inherit)}.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:block;position:absolute;min-width:1.6em;height:1.6em;line-height:1.5em;top:-.7em;right:-.7em;border-radius:100%;color:var(--items-indicator-text-color,#fff);background-color:var(--items-indicator-background-color,#d9534f);text-align:center;font-size:10px}.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:inline-block;font-weight:400}.elementor-menu-cart__container{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);overflow:hidden;position:fixed;z-index:9998;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,.25);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s;text-align:left}.elementor-menu-cart__main{position:fixed;left:var(--side-cart-alignment-left,auto);right:var(--side-cart-alignment-right,0);-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);top:0;bottom:0;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;font-size:14px;min-height:200px;width:350px;max-width:100%;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;padding:var(--cart-padding,20px 30px);background-color:var(--cart-background-color,#fff);-webkit-box-shadow:0 0 20px rgba(0,0,0,.2);box-shadow:0 0 20px rgba(0,0,0,.2);border-style:var(--cart-border-style,none);border-color:var(--cart-border-color,initial);border-radius:var(--cart-border-radius,0);margin-top:var(--mini-cart-spacing,0)}.elementor-menu-cart__main,.elementor-menu-cart__main .widget_shopping_cart_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-menu-cart__main .widget_shopping_cart_content{height:100%}.elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message{color:var(--empty-message-color,inherit);text-align:var(--empty-message-alignment,left)}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{background-color:transparent;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button{display:none}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{overflow:hidden;opacity:0;-webkit-transform:var(--side-cart-alignment-transform,translateX(100%));-ms-transform:var(--side-cart-alignment-transform,translateX(100%));transform:var(--side-cart-alignment-transform,translateX(100%))}.elementor-menu-cart__close-button{width:var(--cart-close-icon-size,25px);height:var(--cart-close-icon-size,25px);position:relative;margin:0 0 20px;-ms-flex-item-align:end;align-self:flex-end;cursor:pointer;display:inline-block;font-family:eicons;font-size:20px;line-height:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:after,.elementor-menu-cart__close-button:before{content:"";position:absolute;height:3px;width:100%;top:50%;left:0;margin-top:-1px;background:var(--cart-close-button-color,#818a91);border-radius:1px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:hover:after,.elementor-menu-cart__close-button:hover:before{background:var(--cart-close-button-hover-color,#818a91)}.elementor-menu-cart__close-button:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__close-button:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__products{max-height:calc(100vh - 250px);overflow:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.elementor-menu-cart__product{display:grid;grid-template-columns:28% auto;grid-template-rows:var(--price-quantity-position--grid-template-rows,auto auto);position:relative;border-width:0;border-bottom:var(--divider-width,1px) var(--divider-style,solid) var(--divider-color,#d4d4d4)}.elementor-menu-cart__product .variation{display:grid;grid-template-columns:-webkit-max-content auto;grid-template-columns:max-content auto;margin:10px 0}.elementor-menu-cart__product .variation dt{grid-column-start:1}.elementor-menu-cart__product .variation dd{grid-column-start:2;-webkit-margin-start:5px;margin-inline-start:5px}.elementor-menu-cart__product .variation dd p{margin-bottom:0}.elementor-menu-cart__product-image{grid-row-start:1;grid-row-end:3;width:100%}.elementor-menu-cart__product-image a,.elementor-menu-cart__product-image img{display:block}.elementor-menu-cart__product-name{grid-column-start:2;grid-column-end:3;margin:0}.elementor-menu-cart__product-name a{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-price{grid-column-start:2;grid-column-end:3;-ms-flex-item-align:var(--price-quantity-position--align-self,end);align-self:var(--price-quantity-position--align-self,end);font-weight:300;color:var(--product-price-color,#d4d4d4)}.elementor-menu-cart__product-name,.elementor-menu-cart__product-price{font-size:14px;padding-left:20px}.elementor-menu-cart__product-remove{color:#818a91;width:var(--remove-item-button-size,22px);height:var(--remove-item-button-size,22px);border-radius:var(--remove-item-button-size,22px);border:1px solid var(--remove-item-button-color,#d4d4d4);text-align:center;overflow:hidden;position:absolute;right:0;bottom:20px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:hover{border:1px solid var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:hover:after,.elementor-menu-cart__product-remove:hover:before{background:var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:after,.elementor-menu-cart__product-remove:before{content:"";position:absolute;height:1px;width:50%;top:50%;left:25%;margin-top:-1px;background:var(--remove-item-button-color,#d4d4d4);z-index:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__product-remove:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__product-remove>a{display:block;z-index:2;width:100%;height:100%;overflow:hidden;opacity:0;position:absolute}.elementor-menu-cart__product-remove>a.remove_from_cart_button{display:var(--remove-from-cart-button,block)}.elementor-menu-cart__product-remove>a.elementor_remove_from_cart_button{display:var(--elementor-remove-from-cart-button,none)}.elementor-menu-cart__product:last-child{border:none}.elementor-menu-cart__footer-buttons,.elementor-menu-cart__product:not(:first-of-type),.elementor-menu-cart__subtotal{padding-top:var(--product-divider-gap,20px)}.elementor-menu-cart__product{padding-right:30px}.elementor-menu-cart__product,.elementor-menu-cart__subtotal{padding-bottom:var(--product-divider-gap,20px)}.elementor-menu-cart__subtotal{font-size:20px;text-align:var(--menu-cart-subtotal-text-align,center);font-weight:600;color:var(--menu-cart-subtotal-color,inherit);border-left:var(--subtotal-divider-left-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-bottom:var(--subtotal-divider-bottom-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-right:var(--subtotal-divider-right-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-top:var(--subtotal-divider-top-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4)}.elementor-menu-cart__footer-buttons{font-size:20px;text-align:var(--cart-footer-buttons-alignment-text-align,center);display:var(--cart-footer-buttons-alignment-display,grid);grid-template-columns:var(--cart-footer-layout,1fr 1fr);margin-top:var(--cart-buttons-position-margin,0);grid-column-gap:var(--space-between-buttons,10px);grid-row-gap:var(--space-between-buttons,10px)}.elementor-menu-cart__footer-buttons .elementor-button{display:inline-block;border-radius:var(--cart-footer-buttons-border-radius,0);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.elementor-menu-cart__footer-buttons .elementor-button--view-cart{display:var(--view-cart-button-display,inline-block);color:var(--view-cart-button-text-color,#fff);padding:var(--view-cart-button-padding,15px);background-color:var(--view-cart-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover{color:var(--view-cart-button-hover-text-color,#fff);background-color:var(--view-cart-button-hover-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout{display:var(--checkout-button-display,inline-block);color:var(--checkout-button-text-color,#fff);padding:var(--checkout-button-padding,15px);background-color:var(--checkout-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:var(--checkout-button-hover-background-color,#818a91)}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-menu-cart__footer-buttons .elementor-button{padding-left:10px;padding-right:10px}}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text{display:none}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before{content:none}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e3"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e4"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e5"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e6"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e7"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e8"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e9"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8ea"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8eb"}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product{padding-left:0;padding-right:0;grid-template-columns:25% auto}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove{display:none}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove{top:0;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove{top:20px;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove{-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);bottom:50%}.elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove{top:auto;bottom:20px}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{position:absolute;z-index:89;width:auto;height:auto;overflow:visible;top:100%;bottom:auto;background:none;min-width:330px;left:0;right:auto;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main{width:auto;height:auto;position:relative;top:auto;bottom:auto;right:auto;left:auto;overflow:visible;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{min-width:300px}}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{opacity:0;-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px)}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown{opacity:1}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container{z-index:9998}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart{z-index:89}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container{display:none}.elementor-widget-woocommerce-checkout-page{background-color:transparent;font-family:Roboto,sans-serif;font-size:14px;line-height:21px;color:#818a91}.elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container{grid-template-columns:auto}.elementor-widget-woocommerce-checkout-page ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page table tbody tr:hover>td,.elementor-widget-woocommerce-checkout-page table tbody tr:hover>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .e-description{color:var(--sections-descriptions-color,#818a91);padding-bottom:var(--sections-descriptions-spacing,0);font-size:14px;font-weight:400}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section{margin-bottom:24px}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title{text-align:var(--login-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge{margin-top:var(--sections-secondary-title-spacing,24px);margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor{margin-top:var(--sections-secondary-title-spacing,24px)}.elementor-widget-woocommerce-checkout-page .e-coupon-box{margin-top:24px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .e-login-wrap-start{-webkit-box-flex:75%;-ms-flex:75%;flex:75%}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{-webkit-box-flex:20%;-ms-flex:20%;flex:20%;text-align:right}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:block}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{text-align:left;margin-top:15px}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label{display:none}}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{margin-bottom:0;font-size:12px}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{font-size:11px}}.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:90%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:auto}}.elementor-widget-woocommerce-checkout-page .e-checkout__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:56% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,24px);grid-row-gap:var(--sections-margin,24px)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .e-checkout__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title{color:var(--sections-secondary-title-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge{text-align:var(--coupon-title-alignment,left)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address{margin-top:13px;padding-left:var(--shipping-heading-padding-start,30px)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address span{font-weight:400}.elementor-widget-woocommerce-checkout-page a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row{padding-left:var(--forms-columns-gap-padding,0);padding-right:var(--forms-columns-gap-padding,0);margin-left:var(--forms-columns-gap-margin,0);margin-right:var(--forms-columns-gap-margin,0)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);font-size:14px;border:none;font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-checkout-page .woocommerce .create-account,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row{margin-bottom:0!important}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input,.elementor-widget-woocommerce-checkout-page .woocommerce .input-radio{vertical-align:middle}.elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span{position:relative;top:2px;color:var(--sections-checkboxes-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label,.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{display:inline}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#6f6f6f);border-radius:var(--forms-buttons-border-radius,3px);padding:1rem;border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover{color:var(--forms-buttons-hover-text-color,#6f6f6f);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{margin-right:1%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{width:100%;margin-right:0;margin-bottom:15px}}.elementor-widget-woocommerce-checkout-page .woocommerce-info{border-top-color:transparent;background-color:transparent;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p{font-weight:400;font-size:12px}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info{font-weight:400;margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,.elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment{background:var(--sections-background-color,#fff);border-radius:var(--sections-border-radius,3px);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 24px 0);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{display:var(--additional-information-display,none)}@media (min-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text{color:var(--sections-messages-color,#818a91);font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p{margin-top:25px}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1{margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2{padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading{text-align:var(--order-review-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table{margin-bottom:0;border:0;font-size:14px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th{padding-top:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td{color:#000}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity{font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th{color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr{border:0;padding-left:0;padding-bottom:15px;padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr{padding-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td{font-weight:400;color:var(--order-summary-items-color,#000);border-bottom:var(--order-summary-items-divider-weight,0) solid var(--order-summary-items-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name{padding-right:40px;max-width:150px}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total{vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th{padding-top:var(--order-summary-rows-gap-top,15px);padding-bottom:var(--order-summary-rows-gap-bottom,15px)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th{color:var(--order-summary-totals-color,#818a91);vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th{border-top:var(--order-summary-totals-divider-weight,0) solid var(--order-summary-totals-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td{max-width:70px}.elementor-widget-woocommerce-checkout-page .woocommerce h3{font-size:14px;font-weight:700;margin-top:0;margin-bottom:var(--sections-title-spacing,30px);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row>span{font-weight:400;font-size:14px;margin-bottom:3px;color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:48%}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3{text-align:var(--billing-details-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row{margin-bottom:var(--forms-rows-gap,5px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child{margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login{margin-top:-8px;z-index:999;background:#fff;border-top-width:0;position:relative;margin-bottom:0;color:#818a91}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:100%}}.elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:85%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:35%}}.elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3{background:var(--additional-fields-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address{margin-bottom:var(--sections-margin,20px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment{margin-top:24px;padding:15px 25px 25px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods{border-bottom:none;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li{line-height:21px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{padding-left:15px;font-size:12px}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{float:none;font-size:11px;padding-left:10px}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img{width:55px}}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0;margin-bottom:0;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order{background-color:#5bc0de;width:var(--purchase-button-width,auto);float:none;color:var(--purchase-button-normal-text-color,#fff);min-height:auto;padding:var(--purchase-button-padding,1em 1em);border-radius:var(--purchase-button-border-radius,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover{background-color:#5bc0de;color:var(--purchase-button-hover-text-color,#fff);border-color:var(--purchase-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--purchase-button-hover-transition-duration,.3s);-o-transition-duration:var(--purchase-button-hover-transition-duration,.3s);transition-duration:var(--purchase-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2{width:auto;float:none}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:grid;grid-template-columns:auto auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:right}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:left}}.elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field{margin-bottom:10px}.elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000);font-size:14px;font-style:normal;text-transform:none;letter-spacing:normal;text-decoration:none;line-height:21px}.e-woo-select2-wrapper .select2-results__option,.e-woo-select2-wrapper .select2-results__option:focus{color:#818a91}.elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart table tbody tr:hover>td,.elementor-widget-woocommerce-cart table tbody tr:hover>th{background-color:inherit}.elementor-widget-woocommerce-cart .e-clear{overflow:hidden;height:0;width:0}.elementor-widget-woocommerce-cart .e-cart-section{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 30px 0);border-radius:var(--sections-border-radius,3px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4)}@media (min-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .e-cart-section:last-child{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-cart .e-cart-content{color:var(--sections-descriptions-color,#818a91);font-size:15px;font-weight:400;line-height:23px;letter-spacing:0}.elementor-widget-woocommerce-cart .e-cart__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:59% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,30px);grid-row-gap:var(--sections-margin,30px)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .e-cart__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart .select2-container{margin-bottom:4px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-cart .woocommerce{font-family:Roboto,sans-serif}.elementor-widget-woocommerce-cart .woocommerce button.button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#818a91);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,.88rem 2rem);width:var(--forms-buttons-width,auto);border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button:hover{color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]{padding:var(--forms-buttons-padding,.88rem 2rem);color:var(--forms-buttons-normal-text-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover{background-color:var(--forms-buttons-hover-background-color,#fff);color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li input{vertical-align:middle}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form{margin-top:var(--sections-descriptions-spacing,15px)}.elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination{color:var(--sections-descriptions-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th{display:none}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td{text-align:left!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before{width:100%;margin-bottom:10px}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td{text-align:right!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td:before{content:attr(data-title);font-weight:700;float:left}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{text-align:var(--totals-title-alignment,left)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td{padding-top:var(--totals-rows-gap-top,12px);padding-bottom:var(--totals-rows-gap-bottom,9px)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before{color:var(--totals-color,#818a91);font-weight:700}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td{border-top-color:var(--totals-divider-color,#818a91);border-top-width:var(--totals-divider-weight,0)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row{margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-cart .woocommerce .product-name a{color:var(--product-link-normal-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .product-name a:hover{color:var(--product-link-hover-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .form-row{padding:3px 0;margin:0}.elementor-widget-woocommerce-cart .woocommerce .input-text,.elementor-widget-woocommerce-cart .woocommerce select{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,3px);border:none;padding:var(--forms-fields-padding,16px);font-size:14px}.elementor-widget-woocommerce-cart .woocommerce .input-text::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,.elementor-widget-woocommerce-cart .woocommerce select::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus,.elementor-widget-woocommerce-cart .woocommerce select:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,transparent);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-webkit-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-moz-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-ms-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text.qty{background-color:transparent;color:var(--order-summary-color,#000);border:var(--order-summary-quantity-border-weight,1px) solid var(--order-summary-quantity-border-color,#d4d4d4);border-radius:3px;padding:1px 2px;text-align:left;font-size:14px;min-height:28px;max-height:28px}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout{padding-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button{padding:var(--checkout-button-padding,15px 1em);width:var(--checkout-button-width,auto);font-size:15px;text-align:center;color:var(--checkout-button-normal-text-color,#fff);background-color:#5bc0de;border-radius:var(--checkout-button-border-radius,3px);min-height:auto;margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:#5bc0de;border-color:var(--checkout-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--checkout-button-hover-transition-duration,.3s);-o-transition-duration:var(--checkout-button-hover-transition-duration,.3s);transition-duration:var(--checkout-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .remove{background:transparent;color:var(--order-summary-remove-icon-normal-color,#000)!important;width:auto}.elementor-widget-woocommerce-cart .woocommerce .remove:hover{background:transparent;color:var(--order-summary-remove-icon-hover-color,#5bc0de)!important}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals{float:none;width:100%}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td{padding-left:0}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{float:right;width:100%}.elementor-widget-woocommerce-cart .woocommerce .coupon .form-row{padding:0}.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{-webkit-box-flex:2;-ms-flex:2;flex:2;padding-right:30px}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{padding-right:0}}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-end{-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:block}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce .coupon{margin:var(--sections-margin,0)}.elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code{width:100%;margin-right:0;margin-bottom:15px}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:left;font-size:14px;font-weight:700}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:none;width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table th,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions{padding:16px 0 0}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a{display:inline-block}.elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child{display:var(--update-cart-automatically-display,table-row)}.elementor-widget-woocommerce-cart .woocommerce table.cart{margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce table.cart img{width:55px;height:auto;display:block}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-top:var(--order-summary-rows-gap-top,20px);padding-right:20px;padding-bottom:var(--order-summary-rows-gap-bottom,20px);padding-left:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td span{color:var(--order-summary-color,#000);font-size:14px;font-weight:400}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top:var(--order-summary-items-divider-weight,1px) solid var(--order-summary-items-divider-color,#d4d4d4)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MIN){.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top-width:0}}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove{padding-left:0;padding-right:0}@media (min-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td{border-top:none}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove{position:relative}.elementor-widget-woocommerce-cart .woocommerce table.cart.product-name{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{border-top-width:var(--order-summary-items-divider-weight,1px);border-top-color:var(--order-summary-items-divider-color,#d4d4d4)}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MIN){.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-left:0;padding-right:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-woocommerce-cart .woocommerce table.cart{padding:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{padding:16px 28px}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-left:0;padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions{padding:0}}.elementor-widget-woocommerce-cart .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,.elementor-widget-woocommerce-cart .woocommerce .cart th{font-size:14px;font-weight:700;margin-top:0;padding:0 20px 8px 0}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{margin-bottom:var(--sections-title-spacing,1rem);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart th{padding-bottom:var(--order-summary-title-spacing,8px);color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart td:before{color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button:after{display:none}.elementor-widget-woocommerce-cart .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td{padding-left:0}}.e-woo-select2-wrapper .select2-results__option{font-family:Roboto,sans-serif;font-size:14px;color:var(--forms-fields-normal-color,#818a91)}.e-woo-select2-wrapper .select2-results__option:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account{font-family:Roboto,sans-serif;color:#818a91}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table{border:none;margin-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{background-color:var(--sections-background-color,#fff)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px 3px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,.elementor-widget-woocommerce-my-account .e-my-account-tab address{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content{border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper{padding:0;border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details{margin-bottom:40px}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px 3px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content>div>p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:var(--forms-fields-normal-background-color,#f7f7f7);border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:var(--forms-fields-focus-background-color,#f7f7f7);border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below{background-color:var(--forms-fields-normal-background-color,#f7f7f7)}.elementor-widget-woocommerce-my-account .woocommerce ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce-message{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce address{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover,.elementor-widget-woocommerce-my-account .woocommerce a.button:hover{background-color:initial}.elementor-widget-woocommerce-my-account .woocommerce em{font-size:12px;color:var(--login-messages-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .form-row{padding-left:var(--forms-columns-gap-padding-left,0);padding-right:var(--forms-columns-gap-padding-right,0);margin-left:var(--forms-columns-gap-margin-left,0);margin-right:var(--forms-columns-gap-margin-right,0);margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-my-account .woocommerce .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,0)}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,.elementor-widget-woocommerce-my-account .woocommerce .form-row select{color:var(--forms-fields-normal-color,#818a91);border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);background:#f7f7f7;border:none;font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,.elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text{margin-bottom:15px;color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword{font-size:12px;margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:50%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first{width:100%}.elementor-widget-woocommerce-my-account .woocommerce .login,.elementor-widget-woocommerce-my-account .woocommerce .register,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px);font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .login .button,.elementor-widget-woocommerce-my-account .woocommerce .register .button,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3){margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){margin-top:10px;font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox{vertical-align:middle}.elementor-widget-woocommerce-my-account .woocommerce p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span{color:var(--checkboxes-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce td,.elementor-widget-woocommerce-my-account .woocommerce th,.elementor-widget-woocommerce-my-account .woocommerce tr{border:none}.elementor-widget-woocommerce-my-account .woocommerce h2,.elementor-widget-woocommerce-my-account .woocommerce h3{color:var(--typography-section-titles-color,#000);margin-top:0;margin-bottom:var(--section-title-spacing,45px);font-weight:400}.elementor-widget-woocommerce-my-account .woocommerce strong{color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta,.elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label{color:var(--variations-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .product-quantity{font-weight:400;color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{float:left;width:25%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul{-webkit-padding-start:0;padding-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li{list-style-type:none;margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li:after{content:"";display:block;width:100%;background-color:var(--tabs-divider-color,#818a91);height:var(--tabs-divider-weight,0);position:relative;top:calc(var(--tabs-spacing, 2px) / 2)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a{color:var(--tabs-active-color,#5bc0de);background:#eceeef;border-color:var(--tabs-active-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{font-style:normal;font-weight:700;font-size:14px;color:var(--tabs-normal-color,#818a91);display:block;padding:var(--tabs-padding,12px 20px);text-align:var(--tabs-alignment,start);background:#f7f7f7;border-radius:var(--tabs-border-radius,0);border:0 var(--tabs-border-type,solid) var(--tabs-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover{color:var(--tabs-hover-color,#5bc0de);border-color:var(--tabs-hover-border-color,transparent)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{padding:var(--tabs-padding,10px)}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard{margin-top:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout:after{display:none}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{float:right;width:75%;padding:0;padding-left:var(--tab-content-spacing,6%)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{width:100%;padding:var(--tab-content-spacing,6%) 0 0 0}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type{margin-top:30px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark{background-color:transparent;font-weight:700;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child th,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child th{border-top:0}.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th{border-top:0;padding-left:0;padding-top:0;padding-bottom:var(--tables-titles-spacing,9px)}.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>th,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>th{background-color:transparent;padding-left:0;padding-top:var(--order-summary-rows-gap-top,9px);padding-bottom:var(--order-summary-rows-gap-bottom,9px);color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table td,.elementor-widget-woocommerce-my-account .woocommerce .shop_table th{border-top:var(--tables-divider-border-width,1px) var(--tables-divider-border-type,solid) var(--tables-divider-border-color,#d4d4d4)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th,.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span{color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td,.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th{padding-left:0;color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td{border-top:none;padding-top:0}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button{background:transparent;border:2px solid #5bc0de;border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);border-radius:var(--tables-button-border-radius,3px);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);margin-top:0;margin-bottom:0;padding:var(--tables-button-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-Address .title h3,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3{float:none}.elementor-widget-woocommerce-my-account .woocommerce-Address address,.elementor-widget-woocommerce-my-account .woocommerce-Addresses address{padding:var(--sections-padding,45px 30px 16px 30px)}.elementor-widget-woocommerce-my-account .woocommerce-Address .edit,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit{float:left;position:absolute;margin-left:var(--edit-link-margin-start,30px);margin-top:var(--edit-link-margin-top,10px)}.elementor-widget-woocommerce-my-account .woocommerce .u-columns{margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset{border:none;padding:0;-webkit-margin-start:0;margin-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend{font-weight:700;padding:20px 0;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px);margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-pagination{padding:16px 0}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below,.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below{padding-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td{vertical-align:top;line-height:unset}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{float:none;width:100%}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block}.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation,.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{list-style:none;padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--tabs-container-justify-content,space-between);-ms-flex-pack:var(--tabs-container-justify-content,space-between);justify-content:var(--tabs-container-justify-content,space-between)}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{display:block}}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block;width:var(--tab-width,100%);padding:0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);margin:0;border-right:var(--tabs-divider-weight,0) solid var(--tabs-divider-color,#818a91)}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:after{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type{padding-left:0}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type{padding-right:0;border-right-width:0}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}}.e-my-account-tabs-horizontal .woocommerce-MyAccount-content{float:none;width:100%;padding:var(--tab-content-spacing,50px) 0 0 0}.elementor-editor-active .elementor-widget-container,.elementor-editor-preview .elementor-widget-container{min-height:1px}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a{pointer-events:none}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button{pointer-events:none;opacity:.3}.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type){display:none}.product .count{background-color:inherit}.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2{display:none}.woocommerce div.product.elementor form.cart div.product-addon{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-negative:0;flex-shrink:0}.e-sticky-right-column--active{position:-webkit-sticky;position:sticky;top:0}.elementor-theme-builder-content-area{height:400px}.elementor-location-footer:before,.elementor-location-header:before{content:"";display:table;clear:both}.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post{display:block}.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid{color:#d4d4d4;border:1px solid;border-right:none;border-left:none;padding-top:10px;padding-bottom:10px}.elementor-post-navigation-borders-yes .elementor-post-navigation__separator{height:100%;width:1px;margin:0 auto;background-color:#d4d4d4}.elementor-post-navigation{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-post-navigation .post-navigation__arrow-wrapper{color:#d4d4d4}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev{font-size:30px;padding-right:15px}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next{font-size:30px;padding-left:15px}.elementor-post-navigation .post-navigation__arrow-wrapper i{-webkit-transform:translateY(-5%);-ms-transform:translateY(-5%);transform:translateY(-5%)}.elementor-post-navigation .elementor-post-navigation__link__next,.elementor-post-navigation .elementor-post-navigation__link__prev{overflow:hidden}.elementor-post-navigation .elementor-post-navigation__link a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__prev--label{text-transform:uppercase;font-size:.8em}.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--title{font-size:.7em}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--label,.elementor-post-navigation .post-navigation__prev--title{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation span.elementor-post-navigation__link__next{text-align:right}.elementor-post-navigation span.elementor-post-navigation__link__next,.elementor-post-navigation span.elementor-post-navigation__link__prev{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-post-navigation .elementor-grid{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-post-navigation .elementor-post-navigation__link{width:calc(50% - (1px / 2));white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation .elementor-post-navigation__separator-wrapper{text-align:center}.elementor-post-navigation .elementor-post-navigation__next{text-align:right}.elementor-post-navigation .elementor-post-navigation__next a{float:right}.elementor-search-form{display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s}.elementor-search-form .e-font-icon-svg-container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-search-form button,.elementor-search-form input[type=search]{margin:0;border:0;padding:0;display:inline-block;vertical-align:middle;white-space:normal;background:none;line-height:1;min-width:0;font-size:15px;-webkit-appearance:none;-moz-appearance:none}.elementor-search-form button:focus,.elementor-search-form input[type=search]:focus{outline:0;color:inherit}.elementor-search-form button{background-color:#818a91;font-size:var(--e-search-form-submit-icon-size,16px);color:#fff;border-radius:0}.elementor-search-form__container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;overflow:hidden;border:0 solid transparent;min-height:50px}.elementor-search-form__container:not(.elementor-search-form--full-screen){background:#eceeef}.elementor-search-form__input{-ms-flex-preferred-size:100%;flex-basis:100%;color:#55595c;-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s}.elementor-search-form__input::-webkit-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-moz-placeholder,.elementor-search-form__input::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__submit{-webkit-transition:color .2s,background .2s;-o-transition:color .2s,background .2s;transition:color .2s,background .2s;font-size:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form__submit svg{fill:var(--e-search-form-submit-text-color,#fff);width:var(--e-search-form-submit-icon-size,16px);height:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form .elementor-search-form__submit,.elementor-search-form .elementor-search-form__submit:hover{color:var(--e-search-form-submit-text-color,#fff);border:none;border-radius:0}.elementor-search-form--button-type-text .elementor-search-form__submit{-ms-flex-negative:0;flex-shrink:0}.elementor-search-form--skin-minimal .elementor-search-form__icon{opacity:.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;color:#55595c;fill:#55595c;font-size:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-minimal .elementor-search-form__icon svg{width:var(--e-search-form-icon-size-minimal,15px);height:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-full_screen .elementor-search-form input[type=search].elementor-search-form__input{font-size:50px;text-align:center;border:solid #fff;border-width:0 0 1px;line-height:1.5;color:#fff}.elementor-search-form--skin-full_screen .elementor-search-form__toggle{display:inline-block;cursor:pointer;vertical-align:middle;color:var(--e-search-form-toggle-color,#494c4f);font-size:var(--e-search-form-toggle-size,33px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i{position:relative;display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;width:var(--e-search-form-toggle-size,33px);height:var(--e-search-form-toggle-size,33px);background-color:var(--e-search-form-toggle-background-color,rgba(0,0,0,.05));border:var(--e-search-form-toggle-border-width,0) solid var(--e-search-form-toggle-color,#494c4f);border-radius:var(--e-search-form-toggle-border-radius,3px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before{font-size:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{fill:var(--e-search-form-toggle-color,#494c4f);width:var(--e-search-form-toggle-icon-size,.55em);height:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__container{-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;z-index:9998;top:0;left:0;right:0;bottom:0;height:100vh;padding:0 15%;background-color:rgba(0,0,0,.8)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen){overflow:hidden;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button{display:none}.elementor-author-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-author-box__avatar{-ms-flex-negative:0;flex-shrink:0;margin-right:25px}.elementor-author-box__avatar img{width:100px;border-radius:500px;-o-object-fit:cover;object-fit:cover}.elementor-author-box__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:17px}.elementor-author-box__name{font-size:24px;margin-bottom:5px}.elementor-author-box__bio,.elementor-author-box__bio p{margin-bottom:.8em}.elementor-author-box__bio p:last-of-type{margin-bottom:0}.elementor-author-box--layout-image-left .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-author-box--layout-image-left .elementor-author-box__avatar{margin-left:0;margin-right:25px}.elementor-author-box--layout-image-right .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-author-box--layout-image-right .elementor-author-box__avatar{margin-right:0;margin-left:25px}.elementor-author-box--layout-image-above .elementor-author-box{display:block}.elementor-author-box--layout-image-above .elementor-author-box__avatar{margin:0 auto 15px;display:inline-block}.elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar{margin-left:0}.elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar{margin-right:0}.elementor-author-box--align-left .elementor-author-box{text-align:left}.elementor-author-box--align-right .elementor-author-box{text-align:right}.elementor-author-box--align-center .elementor-author-box{text-align:center}.elementor-button.elementor-author-box__button{border:2px solid #55595c;font-size:15px;font-weight:100;padding:10px 18px}.elementor-button.elementor-author-box__button,.elementor-button.elementor-author-box__button:hover{background:transparent;color:#55595c}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar,.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar{-ms-flex-item-align:start;align-self:flex-start}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar{-ms-flex-item-align:center;align-self:center}.elementor-post-info__terms-list{display:inline-block}.elementor-post-info .elementor-icon-list-icon .elementor-avatar{border-radius:100%}.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after{margin:initial}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text{display:inline-block}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a,.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span{display:inline}.elementor-widget-breadcrumbs{font-size:.85em}.elementor-widget-breadcrumbs p{margin-bottom:0}.elementor-sitemap-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.elementor-sticky--active{z-index:99}[data-elementor-type=popup] .elementor-section-wrap:not(:empty)+#elementor-add-new-section,[data-elementor-type=popup]:not(.elementor-edit-area){display:none}.elementor-popup-modal{display:-webkit-box;display:-ms-flexbox;display:flex;pointer-events:none;background-color:transparent;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.elementor-popup-modal .dialog-buttons-wrapper,.elementor-popup-modal .dialog-header{display:none}.elementor-popup-modal .dialog-close-button{display:none;top:20px;margin-top:0;right:20px;opacity:1;z-index:9999;pointer-events:all}.elementor-popup-modal .dialog-close-button svg{fill:#373a3c;height:1em;width:1em}.elementor-popup-modal .dialog-widget-content{width:auto;overflow:visible;max-width:100%;max-height:100%;border-radius:0;-webkit-box-shadow:none;box-shadow:none;pointer-events:all}.elementor-popup-modal .dialog-message{width:640px;max-width:100vw;max-height:100vh;padding:0;overflow:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-popup-modal .elementor{width:100%}.elementor-motion-effects-element,.elementor-motion-effects-layer{-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(0,.33,.07,1.03);-o-transition-timing-function:cubic-bezier(0,.33,.07,1.03);transition-timing-function:cubic-bezier(0,.33,.07,1.03);-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s}.elementor-motion-effects-container{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;-webkit-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);-ms-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.elementor-motion-effects-layer{position:absolute;top:0;left:0;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover}.elementor-motion-effects-perspective{-webkit-perspective:1200px;perspective:1200px}.elementor-widget-archive-posts:after,.elementor-widget-posts:after{display:none}.elementor-posts-container.elementor-posts-masonry{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-posts-container:not(.elementor-posts-masonry){-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-posts-container .elementor-post{padding:0;margin:0}.elementor-posts-container .elementor-post__thumbnail{overflow:hidden}.elementor-posts-container .elementor-post__thumbnail img{display:block;width:100%;max-height:none;max-width:none;-webkit-transition:-webkit-filter .3s;transition:-webkit-filter .3s;-o-transition:filter .3s;transition:filter .3s;transition:filter .3s,-webkit-filter .3s}.elementor-posts-container .elementor-post__thumbnail__link{position:relative;display:block;width:100%}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail{top:0;left:0;right:0;bottom:0}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail img{height:auto;position:absolute;top:calc(50% + 1px);left:calc(50% + 1px);-webkit-transform:scale(1.01) translate(-50%,-50%);-ms-transform:scale(1.01) translate(-50%,-50%);transform:scale(1.01) translate(-50%,-50%)}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail.elementor-fit-height img{height:100%;width:auto}.elementor-posts .elementor-post{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition-property:background,border,-webkit-box-shadow;transition-property:background,border,-webkit-box-shadow;-o-transition-property:background,border,box-shadow;transition-property:background,border,box-shadow;transition-property:background,border,box-shadow,-webkit-box-shadow;-webkit-transition-duration:.25s;-o-transition-duration:.25s;transition-duration:.25s}.elementor-posts .elementor-post__title{font-size:18px;margin:0}.elementor-posts .elementor-post__excerpt{margin-bottom:10px}.elementor-posts .elementor-post__excerpt p{margin:0;line-height:1.5em;font-size:14px;color:#777}.elementor-posts .elementor-post__meta-data{line-height:1.3em;font-size:12px;margin-bottom:13px;color:#adadad}.elementor-posts .elementor-post__read-more{font-size:12px;font-weight:700}.elementor-posts .elementor-post__thumbnail{position:relative}.elementor-posts--skin-classic{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-posts--skin-classic:not(.elementor-posts-masonry){-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-posts--skin-classic .elementor-post{overflow:hidden}.elementor-posts--skin-classic .elementor-post__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-posts--align-left .elementor-post{text-align:left}.elementor-posts--align-right .elementor-post{text-align:right}.elementor-posts--align-center .elementor-post{text-align:center}.elementor-posts--thumbnail-top .elementor-post{display:block}.elementor-posts--thumbnail-top .elementor-post__thumbnail__link{margin-bottom:20px}.elementor-posts--thumbnail-top .elementor-post__text{width:100%}.elementor-posts--thumbnail-top.elementor-posts--align-left .elementor-post__thumbnail__link{margin-right:auto}.elementor-posts--thumbnail-top.elementor-posts--align-right .elementor-post__thumbnail__link{margin-left:auto}.elementor-posts--thumbnail-top.elementor-posts--align-center .elementor-post__thumbnail__link{margin-right:auto;margin-left:auto}.elementor-posts--thumbnail-left .elementor-post__thumbnail__link,.elementor-posts--thumbnail-right .elementor-post__thumbnail__link{-ms-flex-negative:0;flex-shrink:0;width:25%}.elementor-posts--thumbnail-left .elementor-post__thumbnail__link{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0;margin-right:20px}.elementor-posts--thumbnail-right .elementor-post__thumbnail__link{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5;margin-left:20px}.elementor-posts--thumbnail-none .elementor-posts-container .elementor-post__thumbnail__link{display:none}.elementor-posts .elementor-post__card{overflow:hidden;position:relative;background-color:#fff;width:100%;min-height:100%;border-radius:3px;border:0 solid #818a91;-webkit-transition:all .25s;-o-transition:all .25s;transition:all .25s}.elementor-posts .elementor-post__card .elementor-post__thumbnail{position:relative;transform-style:preserve-3d;-webkit-transform-style:preserve-3d}.elementor-posts .elementor-post__card .elementor-post__thumbnail img{width:calc(100% + 1px)}.elementor-posts .elementor-post__card .elementor-post__text{padding:0 30px;margin-bottom:0;margin-top:20px}.elementor-posts .elementor-post__card .elementor-post__read-more{margin-bottom:20px;display:inline-block}.elementor-posts .elementor-post__card .elementor-post__meta-data{padding:15px 30px;margin-bottom:0;border-top:1px solid #eaeaea}.elementor-posts .elementor-post__card .elementor-post__meta-data span+span:before{margin:0 5px}.elementor-posts .elementor-post__card .elementor-post__title{font-size:21px}.elementor-posts .elementor-post__card .elementor-post__excerpt{line-height:1.7}.elementor-posts .elementor-post__card .elementor-post__excerpt,.elementor-posts .elementor-post__card .elementor-post__title{margin-bottom:25px}.elementor-posts .elementor-post__card .elementor-post__badge,.elementor-posts .elementor-post__card .elementor-post__read-more{text-transform:uppercase}.elementor-posts .elementor-post__badge{position:absolute;top:0;background:#818a91;color:#fff;font-size:12px;padding:.6em 1.2em;line-height:1;font-weight:400;margin:20px;border-radius:999px}.elementor-posts .elementor-post__avatar{position:relative;padding:0 30px;width:100%;top:-25px;height:0;pointer-events:none}.elementor-posts .elementor-post__avatar img{border-radius:50%;width:60px;pointer-events:all;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card,.elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data,.elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data{margin-top:auto}.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar{padding-top:0;position:static;height:auto}.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar img.avatar{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);vertical-align:bottom}.elementor-posts--show-avatar .elementor-post__thumbnail__link{margin-bottom:25px}.elementor-posts__hover-gradient .elementor-post__card .elementor-post__thumbnail__link:after{display:block;content:"";background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.35)),color-stop(75%,transparent));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.35),transparent 75%);background-image:-o-linear-gradient(bottom,rgba(0,0,0,.35) 0,transparent 75%);background-image:linear-gradient(0deg,rgba(0,0,0,.35),transparent 75%);background-repeat:no-repeat;height:100%;width:100%;position:absolute;bottom:0;opacity:1;-webkit-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.elementor-posts__hover-gradient .elementor-post__card:hover .elementor-post__thumbnail__link:after{opacity:.5}.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img{height:100%}.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img{width:calc(100% + 1px)}.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img{height:115%}.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img{width:115%}.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img{height:115%}.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img{width:115%}.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img{height:100%}.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img{width:calc(100% + 1px)}.elementor-posts__hover-zoom-in .elementor-post__thumbnail img,.elementor-posts__hover-zoom-out .elementor-post__thumbnail img{-webkit-transition:height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s;transition:height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s;-o-transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1);transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1);transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s}.elementor-card-shadow-yes .elementor-post__card{-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,.15);box-shadow:0 0 10px 0 rgba(0,0,0,.15)}.elementor-card-shadow-yes .elementor-post__card:hover{-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.15);box-shadow:0 0 30px 0 rgba(0,0,0,.15)}.elementor-posts--skin-full_content article{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.elementor-posts--skin-full_content article .elementor-post__thumbnail{padding-bottom:0}body.elementor-editor-active .elementor-posts--skin-archive_full_content,body.elementor-editor-active .elementor-posts--skin-full_content{pointer-events:none}body.elementor-editor-active .elementor-posts--skin-archive_full_content .elementor-post__thumbnail__link,body.elementor-editor-active .elementor-posts--skin-full_content .elementor-post__thumbnail__link{display:none}body.elementor-editor-active .elementor-posts--show-thumbnail .elementor-post__thumbnail__link{display:block}.elementor-portfolio__filters{list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0;margin:0}.elementor-portfolio__filter{margin:0;cursor:pointer;padding:8px}.elementor-portfolio-item{-ms-flex-item-align:start;align-self:flex-start;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:ease-in-out;-o-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;overflow:hidden;margin:0}.elementor-portfolio-item__title{margin:0;padding:0;line-height:1;font-size:18px;color:#fff}.elementor-portfolio-item__tags__separator:before{content:", "}.elementor-portfolio-item__overlay{opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;padding:15px;-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;overflow:hidden;background-color:rgba(129,138,145,.8)}.elementor-portfolio-item__overlay:hover{opacity:1;-webkit-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.elementor-portfolio-item__img img[src=""]{background-color:rgba(0,0,0,.1);height:100%}.elementor-portfolio.elementor-has-item-ratio{-webkit-transition:height .5s;-o-transition:height .5s;transition:height .5s}.elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail{position:absolute;background-color:rgba(0,0,0,.1)}.elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail__link{padding-bottom:56.25%}.elementor ul li.elementor-portfolio__filter{list-style-type:none}.elementor-widget-archive-posts.load-more-align-center .elementor-button-wrapper,.elementor-widget-posts.load-more-align-center .elementor-button-wrapper{text-align:center}.elementor-widget-archive-posts.load-more-align-start .elementor-button-wrapper,.elementor-widget-posts.load-more-align-start .elementor-button-wrapper{text-align:start}.elementor-widget-archive-posts.load-more-align-end .elementor-button-wrapper,.elementor-widget-posts.load-more-align-end .elementor-button-wrapper{text-align:end}.elementor-widget-archive-posts.load-more-align-justify .elementor-button,.elementor-widget-posts.load-more-align-justify .elementor-button{width:100%}.elementor-widget-archive-posts .e-load-more-spinner,.elementor-widget-posts .e-load-more-spinner{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-archive-posts .e-load-more-spinner i,.elementor-widget-archive-posts .e-load-more-spinner svg,.elementor-widget-posts .e-load-more-spinner i,.elementor-widget-posts .e-load-more-spinner svg{margin:0 auto;display:none}.elementor-widget-archive-posts .e-load-more-spinner i,.elementor-widget-posts .e-load-more-spinner i{color:var(--load-more-spinner-color)}.elementor-widget-archive-posts .e-load-more-spinner svg,.elementor-widget-posts .e-load-more-spinner svg{fill:var(--load-more-spinner-color);height:1em;width:1em}.elementor-widget-archive-posts .e-load-more-message,.elementor-widget-posts .e-load-more-message{color:var(--load-more-message-color);text-align:var(--load-more-message-alignment,center);display:none;margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts.e-load-more-pagination-loading,.elementor-widget-posts.e-load-more-pagination-loading{cursor:default}.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner{margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner i,.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner svg,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner i,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner svg{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-archive-posts.e-load-more-pagination-loading .elementor-button-content-wrapper,.elementor-widget-posts.e-load-more-pagination-loading .elementor-button-content-wrapper{visibility:hidden}.elementor-widget-archive-posts.e-load-more-pagination-end .elementor-button-wrapper,.elementor-widget-posts.e-load-more-pagination-end .elementor-button-wrapper{display:none}.elementor-widget-archive-posts.e-load-more-pagination-end .e-load-more-message,.elementor-widget-posts.e-load-more-pagination-end .e-load-more-message{display:block}.elementor-widget-archive-posts.e-load-more-no-spinner .elementor-button-content-wrapper,.elementor-widget-posts.e-load-more-no-spinner .elementor-button-content-wrapper{visibility:visible}.elementor-widget-archive-posts .elementor-button-wrapper,.elementor-widget-posts .elementor-button-wrapper{margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts .elementor-button-wrapper .e-load-more-spinner,.elementor-widget-posts .elementor-button-wrapper .e-load-more-spinner{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);margin:inherit}.elementor-widget-archive-posts .elementor-button-wrapper .elementor-button,.elementor-widget-posts .elementor-button-wrapper .elementor-button{cursor:pointer;position:relative}.elementor-button.elementor-hidden,.elementor-hidden{display:none}.e-form__step{width:100%}.e-form__step:not(.elementor-hidden){display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.e-form__buttons{-ms-flex-wrap:wrap;flex-wrap:wrap}.e-form__buttons,.e-form__buttons__wrapper{display:-webkit-box;display:-ms-flexbox;display:flex}.e-form__indicators{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:nowrap;flex-wrap:nowrap;font-size:13px;margin-bottom:var(--e-form-steps-indicators-spacing)}.e-form__indicators,.e-form__indicators__indicator{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.e-form__indicators__indicator{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-preferred-size:0;flex-basis:0;padding:0 var(--e-form-steps-divider-gap)}.e-form__indicators__indicator__progress{width:100%;position:relative;background-color:var(--e-form-steps-indicator-progress-background-color);border-radius:var(--e-form-steps-indicator-progress-border-radius);overflow:hidden}.e-form__indicators__indicator__progress__meter{width:var(--e-form-steps-indicator-progress-meter-width,0);height:var(--e-form-steps-indicator-progress-height);line-height:var(--e-form-steps-indicator-progress-height);padding-right:15px;border-radius:var(--e-form-steps-indicator-progress-border-radius);background-color:var(--e-form-steps-indicator-progress-color);color:var(--e-form-steps-indicator-progress-meter-color);text-align:right;-webkit-transition:width .1s linear;-o-transition:width .1s linear;transition:width .1s linear}.e-form__indicators__indicator:first-child{padding-left:0}.e-form__indicators__indicator:last-child{padding-right:0}.e-form__indicators__indicator--state-inactive{color:var(--e-form-steps-indicator-inactive-primary-color,#c2cbd2)}.e-form__indicators__indicator--state-inactive [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-inactive-secondary-color,#fff)}.e-form__indicators__indicator--state-inactive object,.e-form__indicators__indicator--state-inactive svg{fill:var(--e-form-steps-indicator-inactive-primary-color,#c2cbd2)}.e-form__indicators__indicator--state-active{color:var(--e-form-steps-indicator-active-primary-color,#39b54a);border-color:var(--e-form-steps-indicator-active-secondary-color,#fff)}.e-form__indicators__indicator--state-active [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-active-secondary-color,#fff)}.e-form__indicators__indicator--state-active object,.e-form__indicators__indicator--state-active svg{fill:var(--e-form-steps-indicator-active-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed{color:var(--e-form-steps-indicator-completed-secondary-color,#fff)}.e-form__indicators__indicator--state-completed [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-completed-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed .e-form__indicators__indicator__label{color:var(--e-form-steps-indicator-completed-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed .e-form__indicators__indicator--shape-none{color:var(--e-form-steps-indicator-completed-primary-color,#39b54a);background-color:initial}.e-form__indicators__indicator--state-completed object,.e-form__indicators__indicator--state-completed svg{fill:var(--e-form-steps-indicator-completed-secondary-color,#fff)}.e-form__indicators__indicator__icon{width:var(--e-form-steps-indicator-padding,30px);height:var(--e-form-steps-indicator-padding,30px);font-size:var(--e-form-steps-indicator-icon-size);border-width:1px;border-style:solid;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden;margin-bottom:10px}.e-form__indicators__indicator__icon img,.e-form__indicators__indicator__icon object,.e-form__indicators__indicator__icon svg{width:var(--e-form-steps-indicator-icon-size);height:auto}.e-form__indicators__indicator__icon .e-font-icon-svg{height:1em}.e-form__indicators__indicator__number{width:var(--e-form-steps-indicator-padding,30px);height:var(--e-form-steps-indicator-padding,30px);border-width:1px;border-style:solid;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px}.e-form__indicators__indicator--shape-circle{border-radius:50%}.e-form__indicators__indicator--shape-square{border-radius:0}.e-form__indicators__indicator--shape-rounded{border-radius:5px}.e-form__indicators__indicator--shape-none{border:0}.e-form__indicators__indicator__label{text-align:center}.e-form__indicators__indicator__separator{width:100%;height:var(--e-form-steps-divider-width);background-color:#c2cbd2}.e-form__indicators--type-icon,.e-form__indicators--type-icon_text,.e-form__indicators--type-number,.e-form__indicators--type-number_text{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.e-form__indicators--type-icon .e-form__indicators__indicator__separator,.e-form__indicators--type-icon_text .e-form__indicators__indicator__separator,.e-form__indicators--type-number .e-form__indicators__indicator__separator,.e-form__indicators--type-number_text .e-form__indicators__indicator__separator{margin-top:calc(var(--e-form-steps-indicator-padding, 30px) / 2 - var(--e-form-steps-divider-width, 1px) / 2)}.elementor-field-type-hidden{display:none}.elementor-field-type-html{display:inline-block}.elementor-login .elementor-lost-password,.elementor-login .elementor-remember-me{font-size:.85em}.elementor-field-type-recaptcha_v3 .elementor-field-label{display:none}.elementor-field-type-recaptcha_v3 .grecaptcha-badge{z-index:1}.elementor-button .elementor-form-spinner{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.elementor-form .elementor-button>span{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-form .elementor-button .elementor-button-text{white-space:normal;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.elementor-form .elementor-button svg{height:auto}.elementor-form .elementor-button .e-font-icon-svg{height:1em}.elementor-widget-price-list .elementor-price-list{list-style:none;padding:0;margin:0}.elementor-widget-price-list .elementor-price-list li{margin:0}.elementor-price-list li:not(:last-child){margin-bottom:20px}.elementor-price-list .elementor-price-list-image{max-width:50%;-ms-flex-negative:0;flex-shrink:0;padding-right:25px}.elementor-price-list .elementor-price-list-image img{width:100%}.elementor-price-list .elementor-price-list-header,.elementor-price-list .elementor-price-list-item,.elementor-price-list .elementor-price-list-text{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-price-list .elementor-price-list-item{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-price-list .elementor-price-list-item .elementor-price-list-text{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-price-list .elementor-price-list-item .elementor-price-list-header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-preferred-size:100%;flex-basis:100%;font-size:19px;font-weight:600;margin-bottom:10px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-price-list .elementor-price-list-item .elementor-price-list-title{max-width:80%}.elementor-price-list .elementor-price-list-item .elementor-price-list-price{font-weight:600}.elementor-price-list .elementor-price-list-item p.elementor-price-list-description{-ms-flex-preferred-size:100%;flex-basis:100%;font-size:14px;margin:0}.elementor-price-list .elementor-price-list-item .elementor-price-list-separator{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-left:10px;margin-right:10px;border-bottom-style:dotted;border-bottom-width:2px;height:0}.elementor-price-table{text-align:center}.elementor-price-table .elementor-price-table__header{background:var(--e-price-table-header-background-color,#555);padding:20px 0}.elementor-price-table .elementor-price-table__heading{margin:0;padding:0;line-height:1.2;font-size:24px;font-weight:600;color:#fff}.elementor-price-table .elementor-price-table__subheading{font-size:13px;font-weight:400;color:#fff}.elementor-price-table .elementor-price-table__original-price{margin-right:15px;text-decoration:line-through;font-size:.5em;line-height:1;font-weight:400;-ms-flex-item-align:center;align-self:center}.elementor-price-table .elementor-price-table__original-price .elementor-price-table__currency{font-size:1em;margin:0}.elementor-price-table .elementor-price-table__price{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;color:#555;font-weight:800;font-size:65px;padding:40px 0}.elementor-price-table .elementor-price-table__price .elementor-typo-excluded{line-height:normal;letter-spacing:normal;text-transform:none;font-weight:400;font-size:medium;font-style:normal}.elementor-price-table .elementor-price-table__after-price{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;text-align:left;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-price-table .elementor-price-table__integer-part{line-height:.8}.elementor-price-table .elementor-price-table__currency,.elementor-price-table .elementor-price-table__fractional-part{line-height:1;font-size:.3em}.elementor-price-table .elementor-price-table__currency{margin-right:3px}.elementor-price-table .elementor-price-table__period{width:100%;font-size:13px;font-weight:400}.elementor-price-table .elementor-price-table__features-list{list-style-type:none;margin:0;padding:0;line-height:1;color:var(--e-price-table-features-list-color)}.elementor-price-table .elementor-price-table__features-list li{font-size:14px;line-height:1;margin:0;padding:0}.elementor-price-table .elementor-price-table__features-list li .elementor-price-table__feature-inner{margin-left:15px;margin-right:15px}.elementor-price-table .elementor-price-table__features-list li:not(:first-child):before{content:"";display:block;border:0 solid hsla(0,0%,47.8%,.3);margin:10px 12.5%}.elementor-price-table .elementor-price-table__features-list i{margin-right:10px;font-size:1.3em}.elementor-price-table .elementor-price-table__features-list svg{margin-right:10px;fill:var(--e-price-table-features-list-color);height:1.3em;width:1.3em}.elementor-price-table .elementor-price-table__features-list svg~*{vertical-align:text-top}.elementor-price-table .elementor-price-table__footer{padding:30px 0}.elementor-price-table .elementor-price-table__additional_info{margin:0;font-size:13px;line-height:1.4}.elementor-price-table__ribbon{position:absolute;top:0;left:auto;right:0;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);width:150px;overflow:hidden;height:150px}.elementor-price-table__ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000}.elementor-price-table__ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-price-table__ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}.elementor-widget-price-table .elementor-widget-container{overflow:hidden;background-color:#f7f7f7}.elementor-flip-box{height:280px;position:relative;-webkit-perspective:1000px;perspective:1000px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}@media (max-device-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-flip-box{cursor:pointer}}.elementor-flip-box__front{background-color:#1abc9c}.elementor-flip-box__back{background-color:#4054b2;display:block}.elementor-flip-box__layer{position:absolute;width:100%;height:100%;-webkit-transition:all .6s ease-in-out;-o-transition:all .6s ease-in-out;transition:all .6s ease-in-out}.elementor-flip-box__layer__overlay{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;text-align:center;padding:35px;color:#fff}.elementor-flip-box__layer__title{font-size:21px}.elementor-flip-box__layer__description{font-size:14px}.elementor-flip-box__layer__description:not(:last-child),.elementor-flip-box__layer__title:not(:last-child){margin:0 0 20px;padding:0}.elementor-flip-box__layer__title{line-height:1;font-weight:600}.elementor-flip-box,.elementor-flip-box .elementor-view-framed,.elementor-flip-box .elementor-view-stacked{--e-flip-box-view-framed-stacked-icon-color:#fff}.elementor-flip-box .elementor-icon,.elementor-flip-box .elementor-view-framed .elementor-icon,.elementor-flip-box .elementor-view-stacked .elementor-icon{color:var(--e-flip-box-view-framed-stacked-icon-color)}.elementor-flip-box .elementor-icon svg,.elementor-flip-box .elementor-view-framed .elementor-icon svg,.elementor-flip-box .elementor-view-stacked .elementor-icon svg{fill:var(--e-flip-box-view-framed-stacked-icon-color)}.elementor-flip-box .elementor-view-framed .elementor-icon{border-color:#fff}.elementor-flip-box .elementor-view-stacked .elementor-icon{background-color:rgba(0,0,0,.5)}.elementor-flip-box__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-flip-box__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-flip-box__image{margin:0 0 20px;display:inline-block;width:100%}.elementor-flip-box__image img{width:50%}.elementor-flip-box .elementor-icon-wrapper{margin-bottom:20px}.elementor-flip-box--3d .elementor-flip-box__layer__inner{-webkit-transform:translateZ(90px) scale(.91);transform:translateZ(90px) scale(.91)}.elementor-flip-box--3d .elementor-flip-box__layer__overlay{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(.1px);transform:translateZ(.1px)}.elementor-flip-box--effect-flip .elementor-flip-box{-webkit-perspective:1000px;perspective:1000px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.elementor-flip-box--effect-flip .elementor-flip-box__layer{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-flip-box--effect-flip .elementor-flip-box__front{-webkit-transform:none;-ms-transform:none;transform:none;z-index:1}.elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box__back{-webkit-transform:rotateX(0) rotateY(-180deg);transform:rotateX(0) rotateY(-180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box__back,.elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(0) rotateY(180deg);transform:rotateX(0) rotateY(180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(0) rotateY(-180deg);transform:rotateX(0) rotateY(-180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box__back{-webkit-transform:rotateX(-180deg) rotateY(0);transform:rotateX(-180deg) rotateY(0)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box__back,.elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(180deg) rotateY(0);transform:rotateX(180deg) rotateY(0)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(-180deg) rotateY(0);transform:rotateX(-180deg) rotateY(0)}.elementor-flip-box--effect-push .elementor-flip-box__front{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(100%) translateY(0);-ms-transform:translateX(100%) translateY(0);transform:translateX(100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(-100%) translateY(0);-ms-transform:translateX(-100%) translateY(0);transform:translateX(-100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(0) translateY(-100%);-ms-transform:translateX(0) translateY(-100%);transform:translateX(0) translateY(-100%)}.elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(0) translateY(100%);-ms-transform:translateX(0) translateY(100%);transform:translateX(0) translateY(100%)}.elementor-flip-box--effect-push .elementor-flip-box,.elementor-flip-box--effect-slide .elementor-flip-box{overflow:hidden}.elementor-flip-box--effect-push .elementor-flip-box:hover .elementor-flip-box__back,.elementor-flip-box--effect-slide .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-right .elementor-flip-box__back{-webkit-transform:translateX(-100%) translateY(0);-ms-transform:translateX(-100%) translateY(0);transform:translateX(-100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-left .elementor-flip-box__back{-webkit-transform:translateX(100%) translateY(0);-ms-transform:translateX(100%) translateY(0);transform:translateX(100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-up .elementor-flip-box__back{-webkit-transform:translateX(0) translateY(100%);-ms-transform:translateX(0) translateY(100%);transform:translateX(0) translateY(100%)}.elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-down .elementor-flip-box__back{-webkit-transform:translateX(0) translateY(-100%);-ms-transform:translateX(0) translateY(-100%);transform:translateX(0) translateY(-100%)}.elementor-flip-box--effect-zoom-out .elementor-flip-box .elementor-flip-box__front{-webkit-transition:opacity .35s,width .1ms,-webkit-transform .7s;transition:opacity .35s,width .1ms,-webkit-transform .7s;-o-transition:transform .7s,opacity .35s,width .1ms;transition:transform .7s,opacity .35s,width .1ms;transition:transform .7s,opacity .35s,width .1ms,-webkit-transform .7s;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);z-index:1;width:100%}.elementor-flip-box--effect-zoom-out .elementor-flip-box:hover .elementor-flip-box__front{width:0;opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7);-webkit-transition:opacity .7s .1s,width .1ms .7s,-webkit-transform .8s;transition:opacity .7s .1s,width .1ms .7s,-webkit-transform .8s;-o-transition:transform .8s,opacity .7s .1s,width .1ms .7s;transition:transform .8s,opacity .7s .1s,width .1ms .7s;transition:transform .8s,opacity .7s .1s,width .1ms .7s,-webkit-transform .8s}.elementor-flip-box--effect-zoom-in .elementor-flip-box .elementor-flip-box__back{-webkit-transition:opacity .5s .2s,-webkit-transform .7s;transition:opacity .5s .2s,-webkit-transform .7s;-o-transition:transform .7s,opacity .5s .2s;transition:transform .7s,opacity .5s .2s;transition:transform .7s,opacity .5s .2s,-webkit-transform .7s;opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}.elementor-flip-box--effect-zoom-in .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transition:opacity .5s,-webkit-transform .7s;transition:opacity .5s,-webkit-transform .7s;-o-transition:transform .7s,opacity .5s;transition:transform .7s,opacity .5s;transition:transform .7s,opacity .5s,-webkit-transform .7s;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-flip-box--effect-fade .elementor-flip-box .elementor-flip-box__back{opacity:0}.elementor-flip-box--effect-fade .elementor-flip-box:hover .elementor-flip-box__back{opacity:1}.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__front{display:none}.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}.elementor-cta,.elementor-widget-call-to-action .elementor-widget-container{overflow:hidden}.elementor-cta{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.5s;-o-transition:.5s;transition:.5s}.elementor-cta--skin-classic .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--skin-classic .elementor-cta__bg-wrapper{position:relative;min-height:200px;width:100%}.elementor-cta--skin-classic .elementor-cta__content{-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%;background-color:#f7f7f7}.elementor-cta--skin-classic .elementor-cta__content-item,.elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon{color:#55595c;border-color:#55595c;fill:#55595c}.elementor-cta--skin-classic .elementor-cta__button.elementor-button{color:#55595c;border-color:#55595c}.elementor-cta--skin-cover .elementor-cta{display:block}.elementor-cta--skin-cover .elementor-cta__bg-wrapper{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%}.elementor-cta--skin-cover .elementor-cta__content{min-height:280px}.elementor-cta--skin-cover .elementor-cta__button.elementor-button,.elementor-cta--skin-cover .elementor-cta__content-item,.elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon{color:#fff;border-color:#fff}.elementor-cta--layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--layout-image-left .elementor-cta,.elementor-cta--layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--layout-image-left .elementor-cta__content,.elementor-cta--layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta__bg,.elementor-cta__bg-overlay{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s}.elementor-cta__bg-wrapper{z-index:1;overflow:hidden}.elementor-cta__bg{-webkit-background-size:cover;background-size:cover;background-position:50%;z-index:1}.elementor-cta__bg-overlay{z-index:2}.elementor-cta__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-cta__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-cta__title{font-size:23px}.elementor-cta__content{z-index:1;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;padding:35px;width:100%}.elementor-cta__content,.elementor-cta__content-item{position:relative;-webkit-transition:.5s;-o-transition:.5s;transition:.5s;color:#fff}.elementor-cta__content-item{width:100%;margin:0}.elementor-cta__content-item:not(:last-child){margin-bottom:15px}.elementor-cta__content-item .elementor-icon{color:#fff}.elementor-cta--valign-top .elementor-cta__content{-ms-flex-line-pack:start;align-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-cta--valign-middle .elementor-cta__content{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-cta--valign-bottom .elementor-cta__content{-ms-flex-line-pack:end;align-content:flex-end;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor-cta:hover .elementor-cta__bg-overlay{background-color:rgba(0,0,0,.3)}@media (max-device-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-cta{cursor:pointer}}@media (min-width:ELEMENTOR_SCREEN_WIDESCREEN_MIN){.elementor-cta--widescreen-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--widescreen-layout-image-left .elementor-cta,.elementor-cta--widescreen-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--widescreen-layout-image-left .elementor-cta__content,.elementor-cta--widescreen-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--widescreen-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--widescreen-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:ELEMENTOR_SCREEN_LAPTOP_MAX){.elementor-cta--laptop-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--laptop-layout-image-left .elementor-cta,.elementor-cta--laptop-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--laptop-layout-image-left .elementor-cta__content,.elementor-cta--laptop-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--laptop-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--laptop-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-cta--tablet_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta,.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__content,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-cta--tablet-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet-layout-image-left .elementor-cta,.elementor-cta--tablet-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet-layout-image-left .elementor-cta__content,.elementor-cta--tablet-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--tablet-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-cta--mobile_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta,.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__content,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-cta--mobile-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile-layout-image-left .elementor-cta,.elementor-cta--mobile-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile-layout-image-left .elementor-cta__content,.elementor-cta--mobile-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--mobile-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}.elementor-ribbon{position:absolute;z-index:1;top:0;left:auto;right:0;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);width:150px;overflow:hidden;height:150px}.elementor-ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000;color:#fff}.elementor-ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}.elementor-widget-countdown .elementor-countdown-expire--message{display:none;padding:20px;text-align:center}.elementor-widget-countdown .elementor-countdown-wrapper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-widget-countdown .elementor-countdown-item{padding:20px 0;text-align:center;color:#fff}.elementor-widget-countdown .elementor-countdown-digits,.elementor-widget-countdown .elementor-countdown-label{line-height:1}.elementor-widget-countdown .elementor-countdown-digits{font-size:69px}.elementor-widget-countdown .elementor-countdown-label{font-size:19px}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:auto;margin-left:auto}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-digits,.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-label{display:block}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-widget-countdown.elementor-countdown--label-inline{text-align:center}.elementor-widget-countdown.elementor-countdown--label-inline .elementor-countdown-item{display:inline-block;padding-left:5px;padding-right:5px}.elementor-slides .swiper-slide-bg{-webkit-background-size:cover;background-size:cover;background-position:50%;background-repeat:no-repeat;min-width:100%;min-height:100%}.elementor-slides .swiper-slide-inner{background-repeat:no-repeat;background-position:50%;position:absolute;top:0;left:0;bottom:0;right:0;padding:50px;margin:auto}.elementor-slides .swiper-slide-inner,.elementor-slides .swiper-slide-inner:hover{color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-slides .swiper-slide-inner .elementor-background-overlay{position:absolute;z-index:0;top:0;bottom:0;left:0;right:0}.elementor-slides .swiper-slide-inner .elementor-slide-content{position:relative;z-index:1;width:100%}.elementor-slides .swiper-slide-inner .elementor-slide-heading{font-size:35px;font-weight:700;line-height:1}.elementor-slides .swiper-slide-inner .elementor-slide-description{font-size:17px;line-height:1.4}.elementor-slides .swiper-slide-inner .elementor-slide-description:not(:last-child),.elementor-slides .swiper-slide-inner .elementor-slide-heading:not(:last-child){margin-bottom:30px}.elementor-slides .swiper-slide-inner .elementor-slide-button{border:2px solid #fff;color:#fff;background:transparent;display:inline-block}.elementor-slides .swiper-slide-inner .elementor-slide-button,.elementor-slides .swiper-slide-inner .elementor-slide-button:hover{background:transparent;color:inherit;text-decoration:none}.elementor--v-position-top .swiper-slide-inner{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor--v-position-bottom .swiper-slide-inner{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor--v-position-middle .swiper-slide-inner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor--h-position-left .swiper-slide-inner{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor--h-position-right .swiper-slide-inner{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor--h-position-center .swiper-slide-inner{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}body.rtl .elementor-widget-slides .elementor-swiper-button-next{left:10px;right:auto}body.rtl .elementor-widget-slides .elementor-swiper-button-prev{right:10px;left:auto}.elementor-slides-wrapper div:not(.swiper-slide)>.swiper-slide-inner{display:none}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-slides .swiper-slide-inner{padding:30px}.elementor-slides .swiper-slide-inner .elementor-slide-heading{font-size:23px;line-height:1;margin-bottom:15px}.elementor-slides .swiper-slide-inner .elementor-slide-description{font-size:13px;line-height:1.4;margin-bottom:15px}}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn{background-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text{color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn{color:var(--e-share-buttons-primary-color,#ea4335);border-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon{background-color:var(--e-share-buttons-primary-color,#ea4335);color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon{color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon svg{fill:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-official .elementor-share-btn:hover{-webkit-filter:saturate(1.5) brightness(1.2);filter:saturate(1.5) brightness(1.2)}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_digg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_digg{background-color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_email,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_email{background-color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_print,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_print{background-color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_facebook,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_facebook{background-color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_google,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_google{background-color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pocket,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pocket{background-color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_linkedin,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_linkedin{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_odnoklassniki,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_odnoklassniki{background-color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pinterest,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pinterest{background-color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_reddit,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_reddit{background-color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_skype,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_skype{background-color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_slideshare,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_slideshare{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_snapchat,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_snapchat{background-color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_stumbleupon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_stumbleupon{background-color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_mix,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_mix{background-color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_tumblr,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_tumblr{background-color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitch,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitch{background-color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_telegram,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_telegram{background-color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitter,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitter{background-color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vimeo,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vimeo{background-color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vk,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vk{background-color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_whatsapp,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_whatsapp{background-color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_wordpress,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_wordpress{background-color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_xing,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_xing{background-color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg{color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg svg{fill:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email{color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email svg{fill:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print{color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print svg{fill:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook{color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook svg{fill:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google{color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google svg{fill:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket{color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket svg{fill:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin{color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin svg{fill:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki{color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki svg{fill:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest{color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest svg{fill:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit{color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit svg{fill:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype{color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype svg{fill:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare{color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare svg{fill:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat{color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat svg{fill:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon{color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon svg{fill:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix{color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix svg{fill:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr{color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr svg{fill:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch{color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch svg{fill:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram{color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram svg{fill:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter{color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter svg{fill:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo{color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo svg{fill:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk{color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk svg{fill:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp{color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp svg{fill:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress{color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress svg{fill:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing{color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing svg{fill:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_digg .elementor-share-btn__icon{background-color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_email .elementor-share-btn__icon{background-color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_print .elementor-share-btn__icon{background-color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_facebook .elementor-share-btn__icon{background-color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_google .elementor-share-btn__icon{background-color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pocket .elementor-share-btn__icon{background-color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_linkedin .elementor-share-btn__icon{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_odnoklassniki .elementor-share-btn__icon{background-color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pinterest .elementor-share-btn__icon{background-color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_reddit .elementor-share-btn__icon{background-color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_skype .elementor-share-btn__icon{background-color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_slideshare .elementor-share-btn__icon{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_snapchat .elementor-share-btn__icon{background-color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_stumbleupon .elementor-share-btn__icon{background-color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_mix .elementor-share-btn__icon{background-color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_tumblr .elementor-share-btn__icon{background-color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitch .elementor-share-btn__icon{background-color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_telegram .elementor-share-btn__icon{background-color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitter .elementor-share-btn__icon{background-color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vimeo .elementor-share-btn__icon{background-color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vk .elementor-share-btn__icon{background-color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_whatsapp .elementor-share-btn__icon{background-color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_wordpress .elementor-share-btn__icon{background-color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_xing .elementor-share-btn__icon{background-color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon{color:var(--e-share-buttons-icon-color,#fff)}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon svg{fill:var(--e-share-buttons-icon-color,#fff)}.elementor-share-buttons--skin-boxed .elementor-share-btn__icon,.elementor-share-buttons--skin-framed .elementor-share-btn__icon{margin-left:-.2em}.elementor-share-buttons--skin-boxed .elementor-share-btn,.elementor-share-buttons--skin-framed .elementor-share-btn{border-style:solid}.elementor-share-buttons--skin-gradient .elementor-share-btn__text,.elementor-share-buttons--skin-gradient.elementor-share-buttons--view-icon .elementor-share-btn__icon{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.12)),to(transparent));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.12),transparent);background-image:-o-linear-gradient(left,rgba(0,0,0,.12),transparent);background-image:linear-gradient(90deg,rgba(0,0,0,.12),transparent)}.elementor-share-buttons--skin-boxed .elementor-share-btn__text,.elementor-share-buttons--skin-gradient .elementor-share-btn__text,.elementor-share-buttons--skin-minimal .elementor-share-btn__text{padding-left:.9em}.elementor-share-buttons--skin-flat .elementor-share-btn,.elementor-share-buttons--skin-gradient .elementor-share-btn{background-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--skin-flat .elementor-share-btn__icon,.elementor-share-buttons--skin-flat .elementor-share-btn__text,.elementor-share-buttons--skin-gradient .elementor-share-btn__icon,.elementor-share-buttons--skin-gradient .elementor-share-btn__text{color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg,.elementor-share-buttons--skin-flat .elementor-share-btn__text svg,.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg,.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-rounded .elementor-share-btn__icon{border-radius:.5em}.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-circle .elementor-share-btn__icon{border-radius:99.9em}.elementor-share-buttons--view-text .elementor-share-btn__text{padding-left:1em}.elementor-share-buttons--view-icon .elementor-share-btn,.elementor-share-buttons--view-text .elementor-share-btn{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-share-buttons--view-icon .elementor-share-btn__icon,.elementor-share-buttons--view-icon .elementor-share-btn__text,.elementor-share-buttons--view-text .elementor-share-btn__icon,.elementor-share-buttons--view-text .elementor-share-btn__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-share-buttons--shape-rounded .elementor-share-btn{border-radius:.5em}.elementor-share-buttons--shape-circle .elementor-share-btn{border-radius:99.9em}.elementor-share-btn{overflow:hidden;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-transition-property:background-color,border-color,-webkit-filter;transition-property:background-color,border-color,-webkit-filter;-o-transition-property:filter,background-color,border-color;transition-property:filter,background-color,border-color;transition-property:filter,background-color,border-color,-webkit-filter;height:4.5em;cursor:pointer}.elementor-share-btn,.elementor-share-btn__icon,.elementor-share-btn__text{-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.elementor-share-btn__icon,.elementor-share-btn__text{-webkit-transition-property:color,background-color;-o-transition-property:color,background-color;transition-property:color,background-color}.elementor-share-btn__icon{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:4.5em;position:relative}.elementor-share-btn__icon i{font-size:var(--e-share-buttons-icon-size,1.7em)}.elementor-share-btn__icon svg{width:var(--e-share-buttons-icon-size,1.7em);height:var(--e-share-buttons-icon-size,1.7em)}.elementor-share-btn__text{font-size:1.5em;padding-right:1em;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:100}.elementor-share-btn__title{font-weight:700;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-share-buttons{text-align:var(--alignment,inherit);-moz-text-align-last:var(--alignment,inherit);text-align-last:var(--alignment,inherit)}.elementor-widget-share-buttons.elementor-grid-0 .elementor-widget-container{font-size:0}.elementor-skin-carousel .elementor-main-swiper,.elementor-skin-coverflow .elementor-main-swiper{height:230px}.elementor-skin-slideshow .elementor-main-swiper{height:450px;position:relative}.elementor-skin-slideshow .elementor-thumbnails-swiper .elementor-custom-embed-play i{font-size:50px}.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide{cursor:pointer}.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide:not(.swiper-slide-active):after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.3)}.elementor-carousel-image{background:no-repeat 50%;-webkit-background-size:cover;background-size:cover;height:100%;position:relative}.elementor-carousel-image-overlay{position:absolute;top:0;left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;width:100%;height:100%;padding:20px;color:var(--e-carousel-image-overlay-color,#fff);background-color:rgba(129,138,145,.8);-webkit-transition:opacity .5s,-webkit-transform .5s;transition:opacity .5s,-webkit-transform .5s;-o-transition:transform .5s,opacity .5s;transition:transform .5s,opacity .5s;transition:transform .5s,opacity .5s,-webkit-transform .5s}.elementor-carousel-image-overlay i{font-size:var(--e-carousel-image-overlay-icon-size,21px)}.elementor-carousel-image-overlay svg{fill:var(--e-carousel-image-overlay-color,#fff);width:var(--e-carousel-image-overlay-icon-size,21px);height:var(--e-carousel-image-overlay-icon-size,21px)}.elementor-testimonial__image{-ms-flex-negative:0;flex-shrink:0}.elementor-testimonial__image img{border-radius:999px;-webkit-box-sizing:content-box;box-sizing:content-box;-o-object-fit:cover;object-fit:cover}.elementor-testimonial__footer,.elementor-testimonial__header{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-testimonial__footer cite,.elementor-testimonial__header cite{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;font-style:normal;font-size:14px;line-height:1.5}.elementor-testimonial__name{font-weight:700}.elementor-testimonial--layout-image_above .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline .elementor-testimonial__footer{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-testimonial--layout-image_above .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline .elementor-testimonial__image+cite{margin-left:20px}.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__footer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__image+cite{margin-right:20px;margin-left:0}.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__footer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__image+cite{margin-right:0;margin-left:20px}.elementor-testimonial--layout-image_inline .elementor-testimonial__footer{margin-top:25px}.elementor-testimonial--layout-image_above .elementor-testimonial{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.elementor-testimonial--layout-image_above .elementor-testimonial__footer{margin-bottom:25px}.elementor-testimonial--layout-image_stacked .elementor-testimonial__footer{margin-top:25px;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-testimonial--layout-image_stacked .elementor-testimonial__image,.elementor-testimonial--layout-image_stacked .elementor-testimonial cite{margin-top:15px;width:100%}.elementor-testimonial--layout-image_left .elementor-testimonial,.elementor-testimonial--layout-image_right .elementor-testimonial{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-testimonial--layout-image_left .elementor-testimonial__footer,.elementor-testimonial--layout-image_right .elementor-testimonial__footer{-ms-flex-negative:0;flex-shrink:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center}.elementor-testimonial--layout-image_left .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_right .elementor-testimonial__image+cite{margin-top:15px}.elementor-testimonial--layout-image_left.elementor-testimonial--align-center .elementor-testimonial__footer,.elementor-testimonial--layout-image_right.elementor-testimonial--align-center .elementor-testimonial__footer{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-testimonial--layout-image_left .elementor-testimonial{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-testimonial--layout-image_left .elementor-testimonial__footer{padding-right:20px}.elementor-testimonial--layout-image_right .elementor-testimonial{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-testimonial--layout-image_right .elementor-testimonial__footer{padding-left:20px}.elementor-testimonial--align-right .elementor-testimonial{text-align:right}.elementor-testimonial--align-left .elementor-testimonial{text-align:left}.elementor-testimonial--align-center .elementor-testimonial{text-align:center}.elementor-testimonial--align-center .elementor-testimonial__footer{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-testimonial--align-center.elementor-testimonial--layout-image_inline .elementor-testimonial__image+cite{text-align:left}.elementor-testimonial--skin-default.elementor-testimonial--layout-image_above .elementor-testimonial__cite,.elementor-testimonial--skin-default.elementor-testimonial--layout-image_left .elementor-testimonial__cite,.elementor-testimonial--skin-default.elementor-testimonial--layout-image_right .elementor-testimonial__cite{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-top:25px}.elementor-testimonial--skin-bubble .elementor-testimonial__content{background-color:#e6e9ec;padding:20px;position:relative}.elementor-testimonial--skin-bubble .elementor-testimonial__content:after{content:"";display:block;width:14px;height:14px;background-color:#e6e9ec;position:absolute;-webkit-transform:scaleX(.75) rotate(45deg);-ms-transform:scaleX(.75) rotate(45deg);transform:scaleX(.75) rotate(45deg);border-width:0;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above .elementor-testimonial__content:after{bottom:calc(100% - 7px);-webkit-transform:scaleX(.75) rotate(-135deg);-ms-transform:scaleX(.75) rotate(-135deg);transform:scaleX(.75) rotate(-135deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-center .elementor-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) scaleX(.75) rotate(-135deg);-ms-transform:translateX(-50%) scaleX(.75) rotate(-135deg);transform:translateX(-50%) scaleX(.75) rotate(-135deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked .elementor-testimonial__content:after{top:calc(100% - 7px)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-center .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-center .elementor-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) scaleX(.75) rotate(45deg);-ms-transform:translateX(-50%) scaleX(.75) rotate(45deg);transform:translateX(-50%) scaleX(.75) rotate(45deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-left .elementor-testimonial__content:after{left:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-right .elementor-testimonial__content:after{right:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after{-webkit-transform:scaleY(.75) rotate(135deg);-ms-transform:scaleY(.75) rotate(135deg);transform:scaleY(.75) rotate(135deg);left:-8px}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after{-webkit-transform:scaleY(.75) rotate(-45deg);-ms-transform:scaleY(.75) rotate(-45deg);transform:scaleY(.75) rotate(-45deg);right:-8px}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after{top:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__footer,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__footer{padding-top:20px}.elementor-widget-testimonial-carousel .swiper-slide{padding:20px}.elementor-widget-testimonial-carousel .elementor-testimonial__text{font-size:1.3em;font-style:italic;line-height:1.5}.elementor-widget-testimonial-carousel .elementor-testimonial__image img{width:50px;height:50px}.elementor-widget-reviews .swiper-slide{background-color:#fff;border:1px solid #e1e8ed;border-radius:5px;padding:0}.elementor-widget-reviews .elementor-testimonial__text{font-size:14px;line-height:20px}.elementor-widget-reviews .elementor-testimonial__name{color:#1c2022}.elementor-widget-reviews .elementor-testimonial__title{color:#697882;font-size:12.5px;font-weight:400;font-family:inherit}.elementor-widget-reviews .elementor-testimonial__image{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-reviews .elementor-testimonial__image img{width:36px;height:36px}.elementor-widget-reviews .elementor-testimonial__icon{margin-left:auto;font-size:17px}.elementor-widget-reviews .elementor-testimonial__icon .fa+.fa{margin-left:.15em}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon{color:var(--e-testimonial-icon-color)}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-android{--e-testimonial-icon-color:#a4c639}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-apple{--e-testimonial-icon-color:#999}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-behance{--e-testimonial-icon-color:#1769ff}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-bitbucket{--e-testimonial-icon-color:#205081}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-codepen{--e-testimonial-icon-color:#000}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-delicious{--e-testimonial-icon-color:#39f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-digg{--e-testimonial-icon-color:#005be2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-dribbble{--e-testimonial-icon-color:#ea4c89}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-envelope{--e-testimonial-icon-color:#ea4335}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-facebook{--e-testimonial-icon-color:#3b5998}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-flickr{--e-testimonial-icon-color:#0063dc}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-foursquare{--e-testimonial-icon-color:#2d5be3}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-github{--e-testimonial-icon-color:#333}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-google-plus{--e-testimonial-icon-color:#dd4b39}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-houzz{--e-testimonial-icon-color:#7ac142}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-instagram{--e-testimonial-icon-color:#262626}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-jsfiddle{--e-testimonial-icon-color:#487aa2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-linkedin{--e-testimonial-icon-color:#0077b5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-medium{--e-testimonial-icon-color:#00ab6b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-meetup{--e-testimonial-icon-color:#ec1c40}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-mixcloud{--e-testimonial-icon-color:#273a4b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-odnoklassniki{--e-testimonial-icon-color:#f4731c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-pinterest{--e-testimonial-icon-color:#bd081c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-product-hunt{--e-testimonial-icon-color:#da552f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-reddit{--e-testimonial-icon-color:#ff4500}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-rss{--e-testimonial-icon-color:#f26522}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-shopping-cart{--e-testimonial-icon-color:#4caf50}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-skype{--e-testimonial-icon-color:#00aff0}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-slideshare{--e-testimonial-icon-color:#0077b5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-snapchat{--e-testimonial-icon-color:#fffc00}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-soundcloud{--e-testimonial-icon-color:#f80}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-spotify{--e-testimonial-icon-color:#2ebd59}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stack-overflow{--e-testimonial-icon-color:#fe7a15}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-steam{--e-testimonial-icon-color:#00adee}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stumbleupon{--e-testimonial-icon-color:#eb4924}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-telegram{--e-testimonial-icon-color:#2ca5e0}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumb-tack,.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumbtack{--e-testimonial-icon-color:#1aa1d8}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tripadvisor{--e-testimonial-icon-color:#589442}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tumblr{--e-testimonial-icon-color:#35465c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitch{--e-testimonial-icon-color:#6441a5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitter{--e-testimonial-icon-color:#1da1f2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vimeo{--e-testimonial-icon-color:#1ab7ea}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vk{--e-testimonial-icon-color:#45668e}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weibo{--e-testimonial-icon-color:#dd2430}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weixin{--e-testimonial-icon-color:#31a918}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-whatsapp{--e-testimonial-icon-color:#25d366}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-wordpress{--e-testimonial-icon-color:#21759b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-xing{--e-testimonial-icon-color:#026466}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-yelp{--e-testimonial-icon-color:#af0606}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-youtube{--e-testimonial-icon-color:#cd201f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-500px{--e-testimonial-icon-color:#0099e5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon svg{fill:var(--e-testimonial-icon-color)}.elementor-widget-reviews .elementor-testimonial__rating{background-image:-webkit-gradient(linear,left top,right top,from(#ffc82c),to(#ccc));background-image:-webkit-linear-gradient(left,#ffc82c var(--rating),#ccc var(--rating));background-image:-o-linear-gradient(left,#ffc82c var(--rating),#ccc var(--rating));background-image:linear-gradient(90deg,#ffc82c var(--rating),#ccc var(--rating));font-family:eicons}.elementor-widget-reviews .elementor-testimonial__header{display:-webkit-box;display:-ms-flexbox;display:flex;padding-top:15px;padding-bottom:6px}.elementor-widget-reviews .elementor-testimonial__image+cite{margin-left:9px}.elementor-widget-reviews .elementor-testimonial__separator{margin:0 auto;border-top:0;border-bottom:1px solid #e1e8ed;height:0}.elementor-widget-reviews .elementor-testimonial__content{padding-top:6px;padding-bottom:15px}.elementor-widget-reviews .elementor-testimonial__content,.elementor-widget-reviews .elementor-testimonial__header{padding-left:15px;padding-right:15px}.elementor-widget-reviews.elementor-review--has-separator .elementor-testimonial__header{border-bottom:1px solid #e1e8ed}.swiper-pagination-bullets{color:#fff;cursor:default}.swiper-slide{will-change:transform;border-style:solid;border-width:0;-webkit-transition-duration:.5s;-o-transition-duration:.5s;transition-duration:.5s;-webkit-transition-property:border,background,-webkit-transform;transition-property:border,background,-webkit-transform;-o-transition-property:border,background,transform;transition-property:border,background,transform;transition-property:border,background,transform,-webkit-transform;overflow:hidden}.swiper-slide:not(:hover) .e-overlay-animation-fade{opacity:0}.swiper-slide:not(:hover) .e-overlay-animation-slide-up{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-down{-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-right{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-left{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.swiper-slide:not(:hover) .e-overlay-animation-zoom-in{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);opacity:0}.swiper-slide a{display:inline}.swiper-slide a.elementor-button{display:inline-block}.elementor-widget-reviews .elementor-arrows-yes .elementor-main-swiper,.elementor-widget-testimonial-carousel .elementor-arrows-yes .elementor-main-swiper{width:calc(95% - 40px)}.elementor-widget-reviews .elementor-main-swiper,.elementor-widget-testimonial-carousel .elementor-main-swiper{width:95%}.elementor-widget-reviews .swiper-wrapper,.elementor-widget-testimonial-carousel .swiper-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-widget-reviews .swiper-slide,.elementor-widget-testimonial-carousel .swiper-slide{height:auto}.elementor-widget-reviews.elementor-pagination-type-bullets .swiper-container,.elementor-widget-reviews.elementor-pagination-type-fraction .swiper-container,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .swiper-container,.elementor-widget-testimonial-carousel.elementor-pagination-type-fraction .swiper-container{padding-bottom:40px}.elementor-widget-reviews .elementor-swiper-button-prev,.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-next,.elementor-widget-testimonial-carousel .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-next{left:0;right:unset}.elementor-widget-reviews .elementor-swiper-button-next,.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel .elementor-swiper-button-next,.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-prev{right:0;left:unset}.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-next,.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-next,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-prev{top:calc(50% - (40px / 2))}.elementor-widget-media-carousel .elementor-swiper-button-prev,.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-next{left:10px;right:unset}.elementor-widget-media-carousel .elementor-swiper-button-next,.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-prev{right:10px;left:unset}.entry-content blockquote.elementor-blockquote:not(.alignright):not(.alignleft),.entry-summary blockquote.elementor-blockquote{margin-right:0;margin-left:0}.elementor-widget-blockquote blockquote{margin:0;padding:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;quotes:none;border:0;font-style:normal;color:#55595c}.elementor-widget-blockquote blockquote:after,.elementor-widget-blockquote blockquote:before,.elementor-widget-blockquote blockquote cite:after,.elementor-widget-blockquote blockquote cite:before,.elementor-widget-blockquote blockquote footer:after,.elementor-widget-blockquote blockquote footer:before{content:"";content:none}.elementor-blockquote{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-blockquote__author,.elementor-blockquote__content{margin-bottom:0;font-style:normal}.elementor-blockquote__author{font-weight:700}.elementor-blockquote footer{margin-top:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-blockquote__tweet-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;color:#1da1f2;-ms-flex-item-align:end;align-self:flex-end;line-height:1;position:relative;width:-webkit-max-content;width:-moz-max-content;width:max-content}.elementor-blockquote__tweet-button:hover{color:#0967a0}.elementor-blockquote__tweet-button span{font-weight:600}.elementor-blockquote__tweet-button i,.elementor-blockquote__tweet-button span{vertical-align:middle}.elementor-blockquote__tweet-button i+span,.elementor-blockquote__tweet-button svg+span{margin-left:.5em}.elementor-blockquote__tweet-button svg{fill:#1da1f2;height:1em;width:1em}.elementor-blockquote__tweet-label{white-space:pre-wrap}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button{padding:.7em 1.2em;border-radius:100em;background-color:#1da1f2;color:#fff;font-size:15px}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover{background-color:#0967a0;color:#fff}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover:before,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover:before{border-right-color:#0967a0}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button svg,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button svg{fill:#fff;height:1em;width:1em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button{padding:0;width:2em;height:2em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:before{content:"";border:.5em solid transparent;border-right-color:#1da1f2;position:absolute;left:-.8em;top:50%;-webkit-transform:translateY(-50%) scaleY(.65);-ms-transform:translateY(-50%) scaleY(.65);transform:translateY(-50%) scaleY(.65);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:before{right:auto;left:-.8em;border-right-color:#1da1f2;border-left-color:transparent}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:hover:before{border-right-color:#0967a0}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:before{left:auto;right:-.8em;border-right-color:transparent;border-left-color:#1da1f2}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:hover:before{border-left-color:#0967a0}.elementor-blockquote--skin-boxed .elementor-blockquote{background-color:#e6e9ec;padding:30px}.elementor-blockquote--skin-border .elementor-blockquote{border-color:#e6e9ec;border-left:7px #e6e9ec;border-style:solid;padding-left:20px}.elementor-blockquote--skin-quotation .elementor-blockquote:before{content:"“";font-size:100px;color:#e6e9ec;font-family:Times New Roman,Times,serif;font-weight:900;line-height:1;display:block;height:.6em}.elementor-blockquote--skin-quotation .elementor-blockquote__content{margin-top:15px}.elementor-blockquote--align-left .elementor-blockquote__content{text-align:left}.elementor-blockquote--align-left .elementor-blockquote footer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-blockquote--align-right .elementor-blockquote__content{text-align:right}.elementor-blockquote--align-right .elementor-blockquote footer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-blockquote--align-center .elementor-blockquote{text-align:center}.elementor-blockquote--align-center .elementor-blockquote__author,.elementor-blockquote--align-center .elementor-blockquote footer{display:block}.elementor-blockquote--align-center .elementor-blockquote__tweet-button{margin-right:auto;margin-left:auto}.elementor-headline{font-size:43px;line-height:1.2;display:block}.elementor-headline-dynamic-text{color:var(--dynamic-text-color,#aebcb9)}.elementor-headline--style-rotate .elementor-headline-dynamic-wrapper{text-align:left}.elementor-headline--style-highlight .elementor-headline-dynamic-wrapper{overflow:visible;text-align:inherit}.elementor-headline--style-highlight .elementor-headline-dynamic-text{z-index:1}.elementor-headline--style-highlight .elementor-headline-plain-text{z-index:1;position:relative}.elementor-headline--style-highlight svg{position:absolute;top:50%;left:50%;width:calc(100% + 20px);height:calc(100% + 20px);-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);overflow:visible}.elementor-headline--style-highlight svg path{stroke:red;stroke-width:9;fill:none;opacity:0;stroke-dasharray:0 1500;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-headline.e-animated svg path{-webkit-animation:elementor-headline-dash forwards;animation:elementor-headline-dash forwards;-webkit-animation-duration:var(--animation-duration,1.2s);animation-duration:var(--animation-duration,1.2s);-webkit-animation-iteration-count:1;animation-iteration-count:1}.elementor-headline.e-animated svg path:nth-of-type(2){-webkit-animation-delay:calc(var(--animation-duration, 1.2s) / 2);animation-delay:calc(var(--animation-duration, 1.2s) / 2)}.elementor-headline.e-hide-highlight svg path{opacity:1;stroke-dasharray:1500 1500;-webkit-animation:hide-highlight .4s forwards;animation:hide-highlight .4s forwards;-webkit-animation-iteration-count:1;animation-iteration-count:1}@-webkit-keyframes elementor-headline-dash{0%{stroke-dasharray:0 1500;opacity:1}to{stroke-dasharray:1500 1500;opacity:1}}@keyframes elementor-headline-dash{0%{stroke-dasharray:0 1500;opacity:1}to{stroke-dasharray:1500 1500;opacity:1}}@-webkit-keyframes hide-highlight{0%{opacity:1;stroke-dasharray:1500 1500}to{opacity:0;-webkit-filter:blur(10px);filter:blur(10px)}}@keyframes hide-highlight{0%{opacity:1;stroke-dasharray:1500 1500}to{opacity:0;-webkit-filter:blur(10px);filter:blur(10px)}}.elementor-headline-text-wrapper{vertical-align:bottom}.elementor-headline-dynamic-wrapper{display:inline-block;position:relative}.elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text{display:inline-block;position:absolute;top:0;left:0}.elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text.elementor-headline-text-active{position:relative}.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text{opacity:0;-webkit-transform-origin:50% 100%;-ms-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-transform:rotateX(0deg);transform:rotateX(0deg);-webkit-animation:elementor-headline-flip-in 1.2s;animation:elementor-headline-flip-in 1.2s}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);-webkit-animation:elementor-headline-flip-out 1.2s;animation:elementor-headline-flip-out 1.2s}@-webkit-keyframes elementor-headline-flip-in{0%{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}35%{-webkit-transform:rotateX(120deg);transform:rotateX(120deg);opacity:0}65%{opacity:0}to{-webkit-transform:rotateX(1turn);transform:rotateX(1turn);opacity:1}}@keyframes elementor-headline-flip-in{0%{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}35%{-webkit-transform:rotateX(120deg);transform:rotateX(120deg);opacity:0}65%{opacity:0}to{-webkit-transform:rotateX(1turn);transform:rotateX(1turn);opacity:1}}@-webkit-keyframes elementor-headline-flip-out{0%{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}35%{-webkit-transform:rotateX(-40deg);transform:rotateX(-40deg);opacity:1}65%{opacity:0}to{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}}@keyframes elementor-headline-flip-out{0%{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}35%{-webkit-transform:rotateX(-40deg);transform:rotateX(-40deg);opacity:1}65%{opacity:0}to{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper{vertical-align:top;overflow:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:after{content:"";position:absolute;left:auto;right:0;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);height:90%;width:1px;background-color:#0d0d0d}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:not(.elementor-headline-typing-selected):after{-webkit-animation:elementor-headline-pulse 1s infinite;animation:elementor-headline-pulse 1s infinite}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected{background-color:var(--typing-selected-bg-color,#0d0d0d)}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected:after{visibility:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected .elementor-headline-dynamic-text{color:var(--typing-selected-color,var(--dynamic-text-color),#aebcb9)}.elementor-headline-animation-type-typing .elementor-headline-dynamic-text:not(.elementor-headline-text-active){visibility:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){position:absolute;visibility:hidden}@-webkit-keyframes elementor-headline-pulse{0%{-webkit-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);transform:translateY(-50%) scale(.9);opacity:0}to{-webkit-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);opacity:0}}@keyframes elementor-headline-pulse{0%{-webkit-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);transform:translateY(-50%) scale(.9);opacity:0}to{-webkit-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);opacity:0}}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{display:inline-block;-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text{-webkit-transform:scaleX(1.0005);-ms-transform:scaleX(1.0005);transform:scaleX(1.0005);opacity:0}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg);opacity:0}.elementor-headline-text-active .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{opacity:1}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-swirl-in .4s forwards;animation:elementor-headline-swirl-in .4s forwards}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-swirl-out .4s forwards;animation:elementor-headline-swirl-out .4s forwards}@-webkit-keyframes elementor-headline-swirl-in{0%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(-10deg);transform:translateZ(-20px) rotateX(-10deg)}to{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0deg);transform:translateZ(-20px) rotateX(0deg)}}@keyframes elementor-headline-swirl-in{0%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(-10deg);transform:translateZ(-20px) rotateX(-10deg)}to{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0deg);transform:translateZ(-20px) rotateX(0deg)}}@-webkit-keyframes elementor-headline-swirl-out{0%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0);transform:translateZ(-20px) rotateX(0)}60%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-100deg);transform:translateZ(-20px) rotateX(-100deg)}to{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-90deg);transform:translateZ(-20px) rotateX(-90deg)}}@keyframes elementor-headline-swirl-out{0%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0);transform:translateZ(-20px) rotateX(0)}60%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-100deg);transform:translateZ(-20px) rotateX(-100deg)}to{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-90deg);transform:translateZ(-20px) rotateX(-90deg)}}.elementor-headline-animation-type-slide-down .elementor-headline-text-wrapper{display:inline-block;padding:.2em 0}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper{overflow:hidden;vertical-align:top}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text{opacity:0;top:.2em}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-active{top:0;opacity:1;-webkit-animation:elementor-headline-slide-down-in .6s;animation:elementor-headline-slide-down-in .6s}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-slide-down-out .6s;animation:elementor-headline-slide-down-out .6s}@-webkit-keyframes elementor-headline-slide-down-in{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}60%{opacity:1;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes elementor-headline-slide-down-in{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}60%{opacity:1;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes elementor-headline-slide-down-out{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}60%{opacity:0;-webkit-transform:translateY(120%);transform:translateY(120%)}to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes elementor-headline-slide-down-out{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}60%{opacity:0;-webkit-transform:translateY(120%);transform:translateY(120%)}to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}}.elementor-headline-animation-type-clip .elementor-headline-text-wrapper{display:inline-block;padding:.2em 0}.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper{overflow:hidden;vertical-align:top}.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper:after{content:"";position:absolute;top:0;left:auto;right:0;width:2px;height:100%;background-color:#0d0d0d}.elementor-headline-animation-type-clip .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-clip .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-animation:elementor-headline-drop-in-in .8s;animation:elementor-headline-drop-in-in .8s}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-drop-in-out .8s;animation:elementor-headline-drop-in-out .8s}@-webkit-keyframes elementor-headline-drop-in-in{0%{opacity:0;-webkit-transform:translateZ(100px);transform:translateZ(100px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes elementor-headline-drop-in-in{0%{opacity:0;-webkit-transform:translateZ(100px);transform:translateZ(100px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes elementor-headline-drop-in-out{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translateZ(-100px);transform:translateZ(-100px)}}@keyframes elementor-headline-drop-in-out{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translateZ(-100px);transform:translateZ(-100px)}}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter{display:inline-block;-webkit-transform:rotateY(180deg);transform:rotateY(180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-headline-text-active .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-blinds-in .6s forwards;animation:elementor-headline-blinds-in .6s forwards}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-blinds-out .6s forwards;animation:elementor-headline-blinds-out .6s forwards}@-webkit-keyframes elementor-headline-blinds-in{0%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}to{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}}@keyframes elementor-headline-blinds-in{0%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}to{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}}@-webkit-keyframes elementor-headline-blinds-out{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}to{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}}@keyframes elementor-headline-blinds-out{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}to{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}}.elementor-headline-animation-type-wave .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter{display:inline-block;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-headline-text-active .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter{opacity:1}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-wave-up .6s forwards;animation:elementor-headline-wave-up .6s forwards}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-wave-down .6s forwards;animation:elementor-headline-wave-down .6s forwards}@-webkit-keyframes elementor-headline-wave-up{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}60%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes elementor-headline-wave-up{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}60%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes elementor-headline-wave-down{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}60%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}@keyframes elementor-headline-wave-down{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}60%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-animation:elementor-headline-slide-in .6s;animation:elementor-headline-slide-in .6s}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-slide-out .6s;animation:elementor-headline-slide-out .6s}@-webkit-keyframes elementor-headline-slide-in{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}60%{opacity:1;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes elementor-headline-slide-in{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}60%{opacity:1;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes elementor-headline-slide-out{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}60%{opacity:0;-webkit-transform:translateX(110%);transform:translateX(110%)}to{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes elementor-headline-slide-out{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}60%{opacity:0;-webkit-transform:translateX(110%);transform:translateX(110%)}to{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-slide .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper{-webkit-transition:width .5s;-o-transition:width .5s;transition:width .5s}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper{overflow:hidden}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text,.elementor-headline-animation-type-wave .elementor-headline-dynamic-text{white-space:nowrap}.elementor-msie .elementor-headline--style-highlight svg{top:auto;left:auto;-webkit-transform:translate(-100%);-ms-transform:translate(-100%);transform:translate(-100%)}@-webkit-keyframes e-hotspot-soft-beat{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.1);transform:scale(1.1)}}@keyframes e-hotspot-soft-beat{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.1);transform:scale(1.1)}}@-webkit-keyframes e-hotspot-expand{0%{-webkit-transform:scale(.5);transform:scale(.5);opacity:1}to{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}@keyframes e-hotspot-expand{0%{-webkit-transform:scale(.5);transform:scale(.5);opacity:1}to{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}.elementor-widget-hotspot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--background-align);-ms-flex-pack:var(--background-align);justify-content:var(--background-align)}.elementor-widget-hotspot .elementor-widget-container{position:relative;display:inline-block;width:var(--container-width);max-width:var(--container-max-width);height:var(--container-height)}.elementor-widget-hotspot .elementor-widget-container>img{display:block;width:var(--image-width,auto);height:var(--container-height);opacity:var(--opacity,1)}.e-hotspot{z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:absolute}.e-hotspot--position-left.e-hotspot--position-top{-webkit-transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)));-ms-transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)));transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)))}.e-hotspot--position-left.e-hotspot--position-bottom{-webkit-transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y));-ms-transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y));transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y))}.e-hotspot--position-right.e-hotspot--position-top{-webkit-transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)));-ms-transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)));transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)))}.e-hotspot--position-right.e-hotspot--position-bottom{-webkit-transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y));-ms-transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y));transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y))}.e-hotspot--active{z-index:2}.e-hotspot__inner-circle,.e-hotspot__outer-circle{content:"";display:inline-block;-webkit-box-sizing:content-box;box-sizing:content-box;border-radius:50%}.e-hotspot__inner-circle{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background-color:var(--hotspot-color);padding:calc(var(--hotspot-size, 18px) / 2)}.e-hotspot__outer-circle{background-color:var(--hotspot-color);padding:var(--hotspot-padding,4px)}.e-hotspot--icon .e-hotspot__button,.e-hotspot__outer-circle{width:var(--hotspot-size,18px);height:var(--hotspot-size,18px)}.e-hotspot--icon .e-hotspot__button{line-height:0;-webkit-box-sizing:content-box;box-sizing:content-box;font-size:var(--hotspot-size,18px)}.e-hotspot__icon,.e-hotspot__label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.e-hotspot__icon svg,.e-hotspot__label svg{width:var(--hotspot-size,18px);height:auto}.e-hotspot__button{cursor:pointer;position:relative;display:grid;grid-auto-flow:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--hotspot-color);font-size:var(--hotspot-size,18px);min-width:var(--hotspot-button-width);min-height:var(--hotspot-button-height)}.e-hotspot__button:before{z-index:-2;content:"";width:100%;height:100%;left:-5px;top:-5px;position:absolute;padding:5px;-webkit-box-sizing:content-box;box-sizing:content-box}.e-hotspot__button svg{fill:var(--hotspot-color)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot__button{min-width:var(--hotspot-min-width);min-height:var(--hotspot-min-height);background-color:var(--hotspot-box-color);padding:var(--hotspot-padding,4px);border-radius:var(--hotspot-border-radius,3px)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot__button:before{border-radius:var(--hotspot-border-radius,3px)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{background-color:var(--hotspot-box-color)}.e-hotspot--overlay{opacity:.7;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.e-hotspot--active .e-hotspot--overlay,.e-hotspot--overlay:hover{opacity:1}.e-hotspot--soft-beat{-webkit-animation:e-hotspot-soft-beat .7s infinite alternate;animation:e-hotspot-soft-beat .7s infinite alternate;-webkit-animation-timing-function:ease;animation-timing-function:ease}.e-hotspot--expand .e-hotspot__outer-circle,.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{-webkit-animation:e-hotspot-expand 2s infinite;animation:e-hotspot-expand 2s infinite}.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{content:"";width:100%;height:100%;position:absolute;z-index:-1;opacity:0}.e-hotspot--sequenced{-webkit-animation:fadeIn .3s;animation:fadeIn .3s;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-fill-mode:both;animation-fill-mode:both}.e-hotspot__direction-mask{overflow:hidden;position:absolute;pointer-events:none}.e-hotspot__tooltip{white-space:var(--white-space,nowrap);-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-duration:var(--tooltip-transition-duration,.5s);-o-transition-duration:var(--tooltip-transition-duration,.5s);transition-duration:var(--tooltip-transition-duration,.5s);-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;position:absolute;pointer-events:none;color:var(--tooltip-text-color,#fff);text-align:var(--tooltip-align);min-width:var(--tooltip-min-width);padding:var(--tooltip-padding,8px);border-radius:var(--tooltip-border-radius);background-color:var(--tooltip-color)}.e-hotspot__tooltip p:last-of-type{margin-bottom:0}.e-hotspot__direction-mask .e-hotspot__tooltip{-webkit-box-shadow:none!important;box-shadow:none!important;position:static}.e-hotspot--active .e-hotspot__tooltip{pointer-events:visible}.e-hotspot--fade-in-out{opacity:0}.e-hotspot--active .e-hotspot--fade-in-out{opacity:1}.e-hotspot--fade-grow{opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.e-hotspot--active .e-hotspot--fade-grow{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.e-hotspot--override-tooltip-animation-from-top,.e-hotspot--tooltip-animation-from-top{-webkit-transform:translateY(calc(-100% - 1px));-ms-transform:translateY(calc(-100% - 1px));transform:translateY(calc(-100% - 1px))}.e-hotspot--override-tooltip-animation-from-left,.e-hotspot--tooltip-animation-from-left{-webkit-transform:translate(calc(-100% - 1px));-ms-transform:translate(calc(-100% - 1px));transform:translate(calc(-100% - 1px))}.e-hotspot--override-tooltip-animation-from-right,.e-hotspot--tooltip-animation-from-right{-webkit-transform:translate(calc(100% + 1px));-ms-transform:translate(calc(100% + 1px));transform:translate(calc(100% + 1px))}.e-hotspot--override-tooltip-animation-from-bottom,.e-hotspot--tooltip-animation-from-bottom{-webkit-transform:translateY(calc(100% + 1px));-ms-transform:translateY(calc(100% + 1px));transform:translateY(calc(100% + 1px))}.e-hotspot--fade-direction{opacity:0}.e-hotspot--active .e-hotspot--fade-direction,.e-hotspot--active .e-hotspot--slide-direction{-webkit-transform:translate(0) scale(1);-ms-transform:translate(0) scale(1);transform:translate(0) scale(1);opacity:1}.e-hotspot--show-tooltip{-webkit-transition:none;-o-transition:none;transition:none;opacity:1;pointer-events:visible;-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.elementor-facebook-widget.fb_iframe_widget,.elementor-facebook-widget.fb_iframe_widget span{width:100%!important}.elementor-facebook-widget.fb_iframe_widget iframe{position:relative;width:100%!important}.elementor-facebook-widget.fb-like{height:1px}.elementor-widget-facebook-comments iframe{width:100%!important}.site-main .menu-navigation-container{overflow:visible}.elementor-item:after,.elementor-item:before{display:block;position:absolute;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transition-timing-function:cubic-bezier(.58,.3,.005,1);-o-transition-timing-function:cubic-bezier(.58,.3,.005,1);transition-timing-function:cubic-bezier(.58,.3,.005,1)}.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{opacity:0}.elementor-item-active:after,.elementor-item-active:before,.elementor-item.highlighted:after,.elementor-item.highlighted:before,.elementor-item:focus:after,.elementor-item:focus:before,.elementor-item:hover:after,.elementor-item:hover:before{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.e--pointer-double-line .elementor-item:after,.e--pointer-double-line .elementor-item:before,.e--pointer-overline .elementor-item:after,.e--pointer-overline .elementor-item:before,.e--pointer-underline .elementor-item:after,.e--pointer-underline .elementor-item:before{height:3px;width:100%;left:0;background-color:#55595c;z-index:2}.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{height:0;width:0;left:50%}.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:10px}.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{bottom:10px}.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:-10px}.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{bottom:-10px}.e--pointer-double-line.e--animation-none,.e--pointer-double-line.e--animation-none .elementor-item,.e--pointer-double-line.e--animation-none .elementor-item:after,.e--pointer-double-line.e--animation-none .elementor-item:before,.e--pointer-double-line.e--animation-none .elementor-item:focus,.e--pointer-double-line.e--animation-none .elementor-item:hover,.e--pointer-double-line.e--animation-none:after,.e--pointer-double-line.e--animation-none:before,.e--pointer-double-line.e--animation-none:focus,.e--pointer-double-line.e--animation-none:hover,.e--pointer-overline.e--animation-none,.e--pointer-overline.e--animation-none .elementor-item,.e--pointer-overline.e--animation-none .elementor-item:after,.e--pointer-overline.e--animation-none .elementor-item:before,.e--pointer-overline.e--animation-none .elementor-item:focus,.e--pointer-overline.e--animation-none .elementor-item:hover,.e--pointer-overline.e--animation-none:after,.e--pointer-overline.e--animation-none:before,.e--pointer-overline.e--animation-none:focus,.e--pointer-overline.e--animation-none:hover,.e--pointer-underline.e--animation-none,.e--pointer-underline.e--animation-none .elementor-item,.e--pointer-underline.e--animation-none .elementor-item:after,.e--pointer-underline.e--animation-none .elementor-item:before,.e--pointer-underline.e--animation-none .elementor-item:focus,.e--pointer-underline.e--animation-none .elementor-item:hover,.e--pointer-underline.e--animation-none:after,.e--pointer-underline.e--animation-none:before,.e--pointer-underline.e--animation-none:focus,.e--pointer-underline.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-double-line .elementor-item:before,.e--pointer-overline .elementor-item:before{content:"";top:0}.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{width:10px;left:-20px}.e--pointer-double-line .elementor-item:after,.e--pointer-underline .elementor-item:after{content:"";bottom:0}.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{width:10px;inset-inline-start:100%}.e--pointer-framed .elementor-item:after,.e--pointer-framed .elementor-item:before{background:transparent;left:0;top:0;bottom:0;right:0;border:3px solid #55595c}.e--pointer-framed .elementor-item:before{content:""}.e--pointer-framed.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(.75);-ms-transform:scale(.75);transform:scale(.75)}.e--pointer-framed.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(1.25);-ms-transform:scale(1.25);transform:scale(1.25)}.e--pointer-framed.e--animation-grow .elementor-item:before,.e--pointer-framed.e--animation-shrink .elementor-item:before{-webkit-transition:opacity .2s,-webkit-transform .4s;transition:opacity .2s,-webkit-transform .4s;-o-transition:opacity .2s,transform .4s;transition:opacity .2s,transform .4s;transition:opacity .2s,transform .4s,-webkit-transform .4s}.e--pointer-framed.e--animation-draw .elementor-item:after,.e--pointer-framed.e--animation-draw .elementor-item:before{width:3px;height:3px}.e--pointer-framed.e--animation-draw .elementor-item:before{border-width:0 0 3px 3px;-webkit-transition:width .1s .2s,height .1s .3s,opacity .12s .22s;-o-transition:width .1s .2s,height .1s .3s,opacity .12s .22s;transition:width .1s .2s,height .1s .3s,opacity .12s .22s}.e--pointer-framed.e--animation-draw .elementor-item:after{content:"";top:auto;bottom:0;left:auto;right:0;border-width:3px 3px 0 0;-webkit-transition:width .1s,height .1s .1s,opacity .02s .18s;-o-transition:width .1s,height .1s .1s,opacity .02s .18s;transition:width .1s,height .1s .1s,opacity .02s .18s}.e--pointer-framed.e--animation-draw .elementor-item-active:after,.e--pointer-framed.e--animation-draw .elementor-item-active:before,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,.e--pointer-framed.e--animation-draw .elementor-item:focus:after,.e--pointer-framed.e--animation-draw .elementor-item:focus:before,.e--pointer-framed.e--animation-draw .elementor-item:hover:after,.e--pointer-framed.e--animation-draw .elementor-item:hover:before{width:100%;height:100%}.e--pointer-framed.e--animation-draw .elementor-item-active:before,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,.e--pointer-framed.e--animation-draw .elementor-item:focus:before,.e--pointer-framed.e--animation-draw .elementor-item:hover:before{-webkit-transition:opacity .02s,height .1s,width .1s .1s;-o-transition:opacity .02s,height .1s,width .1s .1s;transition:opacity .02s,height .1s,width .1s .1s}.e--pointer-framed.e--animation-draw .elementor-item-active:after,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,.e--pointer-framed.e--animation-draw .elementor-item:focus:after,.e--pointer-framed.e--animation-draw .elementor-item:hover:after{-webkit-transition:opacity .02s .2s,height .1s .2s,width .1s .3s;-o-transition:opacity .02s .2s,height .1s .2s,width .1s .3s;transition:opacity .02s .2s,height .1s .2s,width .1s .3s}.e--pointer-framed.e--animation-corners .elementor-item:after,.e--pointer-framed.e--animation-corners .elementor-item:before{width:3px;height:3px}.e--pointer-framed.e--animation-corners .elementor-item:before{border-width:3px 0 0 3px}.e--pointer-framed.e--animation-corners .elementor-item:after{content:"";top:auto;bottom:0;left:auto;right:0;border-width:0 3px 3px 0}.e--pointer-framed.e--animation-corners .elementor-item-active:after,.e--pointer-framed.e--animation-corners .elementor-item-active:before,.e--pointer-framed.e--animation-corners .elementor-item.highlighted:after,.e--pointer-framed.e--animation-corners .elementor-item.highlighted:before,.e--pointer-framed.e--animation-corners .elementor-item:focus:after,.e--pointer-framed.e--animation-corners .elementor-item:focus:before,.e--pointer-framed.e--animation-corners .elementor-item:hover:after,.e--pointer-framed.e--animation-corners .elementor-item:hover:before{width:100%;height:100%;-webkit-transition:opacity 2ms,width .4s,height .4s;-o-transition:opacity 2ms,width .4s,height .4s;transition:opacity 2ms,width .4s,height .4s}.e--pointer-framed.e--animation-none,.e--pointer-framed.e--animation-none .elementor-item,.e--pointer-framed.e--animation-none .elementor-item:after,.e--pointer-framed.e--animation-none .elementor-item:before,.e--pointer-framed.e--animation-none .elementor-item:focus,.e--pointer-framed.e--animation-none .elementor-item:hover,.e--pointer-framed.e--animation-none:after,.e--pointer-framed.e--animation-none:before,.e--pointer-framed.e--animation-none:focus,.e--pointer-framed.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-background .elementor-item:after,.e--pointer-background .elementor-item:before{content:"";-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.e--pointer-background .elementor-item:before{top:0;left:0;right:0;bottom:0;background:#55595c;z-index:-1}.e--pointer-background .elementor-item-active,.e--pointer-background .elementor-item.highlighted,.e--pointer-background .elementor-item:focus,.e--pointer-background .elementor-item:hover{color:#fff}.e--pointer-background.e--animation-grow .elementor-item:before{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}.e--pointer-background.e--animation-grow .elementor-item-active:before,.e--pointer-background.e--animation-grow .elementor-item.highlighted:before,.e--pointer-background.e--animation-grow .elementor-item:focus:before,.e--pointer-background.e--animation-grow .elementor-item:hover:before{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.e--pointer-background.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.e--pointer-background.e--animation-shrink .elementor-item-active:before,.e--pointer-background.e--animation-shrink .elementor-item.highlighted:before,.e--pointer-background.e--animation-shrink .elementor-item:focus:before,.e--pointer-background.e--animation-shrink .elementor-item:hover:before{-webkit-transition:opacity .15s,-webkit-transform .4s;transition:opacity .15s,-webkit-transform .4s;-o-transition:opacity .15s,transform .4s;transition:opacity .15s,transform .4s;transition:opacity .15s,transform .4s,-webkit-transform .4s}.e--pointer-background.e--animation-sweep-left .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{left:100%}.e--pointer-background.e--animation-sweep-right .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{right:100%}.e--pointer-background.e--animation-sweep-up .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:100%}.e--pointer-background.e--animation-sweep-down .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{bottom:100%}.e--pointer-background.e--animation-shutter-out-vertical .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{bottom:50%;top:50%}.e--pointer-background.e--animation-shutter-out-horizontal .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{right:50%;left:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after{top:0;left:0;right:0;bottom:0;background:#55595c;z-index:-1}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:before{top:0;bottom:100%}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after{top:100%;bottom:0}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:before{bottom:50%}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:after{top:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:before{right:0;left:100%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after{right:100%;left:0}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:before{left:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:after{right:50%}.e--pointer-background.e--animation-none,.e--pointer-background.e--animation-none .elementor-item,.e--pointer-background.e--animation-none .elementor-item:after,.e--pointer-background.e--animation-none .elementor-item:before,.e--pointer-background.e--animation-none .elementor-item:focus,.e--pointer-background.e--animation-none .elementor-item:hover,.e--pointer-background.e--animation-none:after,.e--pointer-background.e--animation-none:before,.e--pointer-background.e--animation-none:focus,.e--pointer-background.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-text.e--animation-skew .elementor-item:focus,.e--pointer-text.e--animation-skew .elementor-item:hover{-webkit-transform:skew(-8deg);-ms-transform:skew(-8deg);transform:skew(-8deg)}.e--pointer-text.e--animation-grow .elementor-item:focus,.e--pointer-text.e--animation-grow .elementor-item:hover{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.e--pointer-text.e--animation-shrink .elementor-item:focus,.e--pointer-text.e--animation-shrink .elementor-item:hover{-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}.e--pointer-text.e--animation-float .elementor-item:focus,.e--pointer-text.e--animation-float .elementor-item:hover{-webkit-transform:translateY(-8px);-ms-transform:translateY(-8px);transform:translateY(-8px)}.e--pointer-text.e--animation-sink .elementor-item:focus,.e--pointer-text.e--animation-sink .elementor-item:hover{-webkit-transform:translateY(8px);-ms-transform:translateY(8px);transform:translateY(8px)}.e--pointer-text.e--animation-rotate .elementor-item:focus,.e--pointer-text.e--animation-rotate .elementor-item:hover{-webkit-transform:rotate(6deg);-ms-transform:rotate(6deg);transform:rotate(6deg)}.e--pointer-text.e--animation-none,.e--pointer-text.e--animation-none .elementor-item,.e--pointer-text.e--animation-none .elementor-item:after,.e--pointer-text.e--animation-none .elementor-item:before,.e--pointer-text.e--animation-none .elementor-item:focus,.e--pointer-text.e--animation-none .elementor-item:hover,.e--pointer-text.e--animation-none:after,.e--pointer-text.e--animation-none:before,.e--pointer-text.e--animation-none:focus,.e--pointer-text.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.elementor-nav-menu--main .elementor-nav-menu a{-webkit-transition:.4s;-o-transition:.4s;transition:.4s}.elementor-nav-menu--main .elementor-nav-menu a,.elementor-nav-menu--main .elementor-nav-menu a.highlighted,.elementor-nav-menu--main .elementor-nav-menu a:focus,.elementor-nav-menu--main .elementor-nav-menu a:hover{padding:13px 20px}.elementor-nav-menu--main .elementor-nav-menu a.current{background:#373a3c;color:#fff}.elementor-nav-menu--main .elementor-nav-menu a.disabled{background:#55595c;color:#a1a6a9}.elementor-nav-menu--main .elementor-nav-menu ul{position:absolute;width:12em;border-width:0;border-style:solid;padding:0}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down,.elementor-nav-menu--main .elementor-nav-menu span.scroll-up{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:20px}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow,.elementor-nav-menu--main .elementor-nav-menu span.scroll-up-arrow{position:absolute;top:-2px;left:50%;margin-left:-8px;width:0;height:0;overflow:hidden;border:8px dashed transparent;border-bottom:8px solid #494c4f}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow{top:6px;border-style:solid dashed dashed;border-color:#494c4f transparent transparent}.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow i{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow .e-font-icon-svg{height:1em;width:1em}.elementor-nav-menu--layout-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-nav-menu--layout-horizontal .elementor-nav-menu{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-nav-menu--layout-horizontal .elementor-nav-menu a{white-space:nowrap;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li>.scroll-down,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li ul{top:100%!important}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>a{-webkit-margin-start:var(--e-nav-menu-horizontal-menu-item-margin);margin-inline-start:var(--e-nav-menu-horizontal-menu-item-margin)}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>.scroll-down,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>.scroll-up,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>ul{left:var(--e-nav-menu-horizontal-menu-item-margin)!important}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:last-child)>a{-webkit-margin-end:var(--e-nav-menu-horizontal-menu-item-margin);margin-inline-end:var(--e-nav-menu-horizontal-menu-item-margin)}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:last-child):after{content:var(--e-nav-menu-divider-content,none);height:var(--e-nav-menu-divider-height,35%);border-left:var(--e-nav-menu-divider-width,2px) var(--e-nav-menu-divider-style,solid) var(--e-nav-menu-divider-color,#000);border-bottom-color:var(--e-nav-menu-divider-color,#000);border-right-color:var(--e-nav-menu-divider-color,#000);border-top-color:var(--e-nav-menu-divider-color,#000);-ms-flex-item-align:center;align-self:center}.elementor-nav-menu__align-right .elementor-nav-menu{margin-left:auto}.elementor-nav-menu__align-right .elementor-nav-menu,.elementor-nav-menu__align-right .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-nav-menu__align-left .elementor-nav-menu{margin-right:auto}.elementor-nav-menu__align-left .elementor-nav-menu,.elementor-nav-menu__align-left .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-nav-menu__align-center .elementor-nav-menu{margin-left:auto;margin-right:auto}.elementor-nav-menu__align-center .elementor-nav-menu,.elementor-nav-menu__align-center .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu{width:100%}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu>li{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-nav-menu:not(.elementor-nav-menu--toggle) .elementor-menu-toggle{display:none}.elementor-widget-nav-menu .elementor-widget-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-nav-menu{position:relative;z-index:2}.elementor-nav-menu:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.elementor-nav-menu,.elementor-nav-menu li,.elementor-nav-menu ul{display:block;list-style:none;margin:0;padding:0;line-height:normal;-webkit-tap-highlight-color:rgba(0,0,0,0)}.elementor-nav-menu ul{display:none}.elementor-nav-menu ul ul a,.elementor-nav-menu ul ul a:active,.elementor-nav-menu ul ul a:focus,.elementor-nav-menu ul ul a:hover{border-left:16px solid transparent}.elementor-nav-menu ul ul ul a,.elementor-nav-menu ul ul ul a:active,.elementor-nav-menu ul ul ul a:focus,.elementor-nav-menu ul ul ul a:hover{border-left:24px solid transparent}.elementor-nav-menu ul ul ul ul a,.elementor-nav-menu ul ul ul ul a:active,.elementor-nav-menu ul ul ul ul a:focus,.elementor-nav-menu ul ul ul ul a:hover{border-left:32px solid transparent}.elementor-nav-menu ul ul ul ul ul a,.elementor-nav-menu ul ul ul ul ul a:active,.elementor-nav-menu ul ul ul ul ul a:focus,.elementor-nav-menu ul ul ul ul ul a:hover{border-left:40px solid transparent}.elementor-nav-menu a,.elementor-nav-menu li{position:relative}.elementor-nav-menu li{border-width:0}.elementor-nav-menu a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-nav-menu a,.elementor-nav-menu a:focus,.elementor-nav-menu a:hover{padding:10px 20px;line-height:20px}.elementor-nav-menu a.current{background:#373a3c;color:#fff}.elementor-nav-menu a.disabled{cursor:not-allowed;color:#a1a6a9}.elementor-nav-menu .e-plus-icon:before{content:"+"}.elementor-nav-menu .sub-arrow{line-height:1;padding:10px 0 10px 10px;margin-top:-10px;margin-bottom:-10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-nav-menu .sub-arrow i{pointer-events:none}.elementor-nav-menu .sub-arrow .fa.fa-chevron-down,.elementor-nav-menu .sub-arrow .fas.fa-chevron-down{font-size:.7em}.elementor-nav-menu .sub-arrow .e-font-icon-svg{height:1em;width:1em}.elementor-nav-menu .sub-arrow .e-font-icon-svg.fa-svg-chevron-down{height:.7em;width:.7em}.elementor-nav-menu--dropdown .elementor-item.elementor-item-active,.elementor-nav-menu--dropdown .elementor-item.highlighted,.elementor-nav-menu--dropdown .elementor-item:focus,.elementor-nav-menu--dropdown .elementor-item:hover,.elementor-sub-item.elementor-item-active,.elementor-sub-item.highlighted,.elementor-sub-item:focus,.elementor-sub-item:hover{background-color:#55595c;color:#fff}.elementor-menu-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:22px;padding:.25em;cursor:pointer;border:0 solid;border-radius:3px;background-color:rgba(0,0,0,.05);color:#494c4f}.elementor-menu-toggle.elementor-active .elementor-menu-toggle__icon--open,.elementor-menu-toggle:not(.elementor-active) .elementor-menu-toggle__icon--close{display:none}.elementor-menu-toggle .e-font-icon-svg{fill:#494c4f;height:1em;width:1em}.elementor-nav-menu--dropdown{background-color:#fff;font-size:13px}.elementor-nav-menu--dropdown-none .elementor-menu-toggle,.elementor-nav-menu--dropdown-none .elementor-nav-menu--dropdown{display:none}.elementor-nav-menu--dropdown.elementor-nav-menu__container{margin-top:10px;-webkit-transition:max-height .3s,-webkit-transform .3s;transition:max-height .3s,-webkit-transform .3s;-o-transition:max-height .3s,transform .3s;transition:max-height .3s,transform .3s;transition:max-height .3s,transform .3s,-webkit-transform .3s;-webkit-transform-origin:top;-ms-transform-origin:top;transform-origin:top;overflow:auto}.elementor-nav-menu--dropdown.elementor-nav-menu__container .elementor-sub-item{font-size:.85em}.elementor-nav-menu--dropdown a{color:#494c4f}.elementor-nav-menu--dropdown a.current{background:#373a3c;color:#fff}.elementor-nav-menu--dropdown a.disabled{color:#b3b2b2}ul.elementor-nav-menu--dropdown a,ul.elementor-nav-menu--dropdown a:focus,ul.elementor-nav-menu--dropdown a:hover{text-shadow:none;border-left:8px solid transparent}.elementor-nav-menu__text-align-center .elementor-nav-menu--dropdown .elementor-nav-menu a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-nav-menu--toggle .elementor-menu-toggle:not(.elementor-active)+.elementor-nav-menu__container{-webkit-transform:scaleY(0);-ms-transform:scaleY(0);transform:scaleY(0);max-height:0}.elementor-nav-menu--toggle .elementor-menu-toggle.elementor-active+.elementor-nav-menu__container{-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);max-height:100vh}.elementor-nav-menu--stretch .elementor-nav-menu__container.elementor-nav-menu--dropdown{position:absolute;z-index:9997}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-nav-menu--dropdown-mobile .elementor-nav-menu--main{display:none}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_NEXT){.elementor-nav-menu--dropdown-mobile .elementor-menu-toggle,.elementor-nav-menu--dropdown-mobile .elementor-nav-menu--dropdown{display:none}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--main{display:none}}@media (min-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_NEXT){.elementor-nav-menu--dropdown-mobile_extra .elementor-menu-toggle,.elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--dropdown{display:none}}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT){.elementor-nav-menu--dropdown-tablet .elementor-menu-toggle,.elementor-nav-menu--dropdown-tablet .elementor-nav-menu--dropdown{display:none}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-nav-menu--dropdown-tablet .elementor-nav-menu--main{display:none}}@media (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--main{display:none}}@media (min-width:ELEMENTOR_SCREEN_TABLET_EXTRA_NEXT){.elementor-nav-menu--dropdown-tablet_extra .elementor-menu-toggle,.elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--dropdown{display:none}}.elementor-gallery__container{min-height:1px}.elementor-gallery-item{position:relative;overflow:hidden;display:block;text-decoration:none;border:solid var(--image-border-width) var(--image-border-color);border-radius:var(--image-border-radius)}.elementor-gallery-item__content,.elementor-gallery-item__overlay{height:100%;width:100%;position:absolute;top:0;left:0}.elementor-gallery-item__overlay{mix-blend-mode:var(--overlay-mix-blend-mode);-webkit-transition-duration:var(--overlay-transition-duration);-o-transition-duration:var(--overlay-transition-duration);transition-duration:var(--overlay-transition-duration);-webkit-transition-property:mix-blend-mode,opacity,background-color,-webkit-transform;transition-property:mix-blend-mode,opacity,background-color,-webkit-transform;-o-transition-property:mix-blend-mode,transform,opacity,background-color;transition-property:mix-blend-mode,transform,opacity,background-color;transition-property:mix-blend-mode,transform,opacity,background-color,-webkit-transform}.elementor-gallery-item__image.e-gallery-image{-webkit-transition-duration:var(--image-transition-duration);-o-transition-duration:var(--image-transition-duration);transition-duration:var(--image-transition-duration);-webkit-transition-property:-webkit-filter,-webkit-transform;transition-property:-webkit-filter,-webkit-transform;-o-transition-property:filter,transform;transition-property:filter,transform;transition-property:filter,transform,-webkit-filter,-webkit-transform}.elementor-gallery-item__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:var(--content-justify-content,center);-ms-flex-pack:var(--content-justify-content,center);justify-content:var(--content-justify-content,center);-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:var(--content-text-align);padding:var(--content-padding)}.elementor-gallery-item__content>div{-webkit-transition-duration:var(--content-transition-duration);-o-transition-duration:var(--content-transition-duration);transition-duration:var(--content-transition-duration)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(2){-webkit-transition-delay:calc((var(--content-transition-delay) / 3));-o-transition-delay:calc((var(--content-transition-delay) / 3));transition-delay:calc((var(--content-transition-delay) / 3))}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(3){-webkit-transition-delay:calc((var(--content-transition-delay) / 3) * 2);-o-transition-delay:calc((var(--content-transition-delay) / 3) * 2);transition-delay:calc((var(--content-transition-delay) / 3) * 2)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(4){-webkit-transition-delay:calc((var(--content-transition-delay) / 3) * 3);-o-transition-delay:calc((var(--content-transition-delay) / 3) * 3);transition-delay:calc((var(--content-transition-delay) / 3) * 3)}.elementor-gallery-item__description{color:var(--description-text-color,#fff);width:100%}.elementor-gallery-item__title{color:var(--title-text-color,#fff);font-weight:700;width:100%}.elementor-gallery__titles-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:var(--titles-container-justify-content,center);-ms-flex-pack:var(--titles-container-justify-content,center);justify-content:var(--titles-container-justify-content,center);margin-bottom:20px}.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:after,.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:before{background-color:var(--galleries-pointer-bg-color-hover)}.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:after,.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:before{background-color:var(--galleries-pointer-bg-color-active)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item:before{border-color:var(--galleries-pointer-bg-color-hover);border-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item:after{border-color:var(--galleries-pointer-bg-color-hover)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:after,.elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:before{border-color:var(--galleries-pointer-bg-color-active)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:before{border-left-width:var(--galleries-pointer-border-width);border-bottom-width:var(--galleries-pointer-border-width);border-right-width:0;border-top-width:0}.elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:after{border-left-width:0;border-bottom-width:0;border-right-width:var(--galleries-pointer-border-width);border-top-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:before{border-left-width:var(--galleries-pointer-border-width);border-bottom-width:0;border-right-width:0;border-top-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:after{border-left-width:0;border-bottom-width:var(--galleries-pointer-border-width);border-right-width:var(--galleries-pointer-border-width);border-top-width:0}.elementor-gallery__titles-container .e--pointer-double-line .elementor-item:after,.elementor-gallery__titles-container .e--pointer-double-line .elementor-item:before,.elementor-gallery__titles-container .e--pointer-overline .elementor-item:before,.elementor-gallery__titles-container .e--pointer-underline .elementor-item:after{height:var(--galleries-pointer-border-width)}.elementor-gallery-title{--space-between:10px;cursor:pointer;color:#6d7882;font-weight:500;position:relative;padding:7px 14px;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.elementor-gallery-title--active{color:#495157}.elementor-gallery-title:not(:last-child){margin-right:var(--space-between)}.elementor-gallery-item__title+.elementor-gallery-item__description{margin-top:var(--description-margin-top)}.e-gallery-item.elementor-gallery-item{-webkit-transition-property:all;-o-transition-property:all;transition-property:all}.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-bottom,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-left,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-right,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-top,.e-gallery-item:hover .elementor-gallery__item-overlay-bg,.e-gallery-item:hover .elementor-gallery__item-overlay-content,.e-gallery-item:hover .elementor-gallery__item-overlay-content__description,.e-gallery-item:hover .elementor-gallery__item-overlay-content__title{opacity:1}a.elementor-item.elementor-gallery-title{color:var(--galleries-title-color-normal)}a.elementor-item.elementor-gallery-title.elementor-item-active,a.elementor-item.elementor-gallery-title.highlighted,a.elementor-item.elementor-gallery-title:focus,a.elementor-item.elementor-gallery-title:hover{color:var(--galleries-title-color-hover)}a.elementor-item.elementor-gallery-title.elementor-item-active{color:var(--gallery-title-color-active)}.elementor-widget-table-of-contents .elementor-toc__header-title{color:var(--header-color)}.elementor-widget-table-of-contents.elementor-toc--collapsed .elementor-toc__toggle-button--collapse,.elementor-widget-table-of-contents:not(.elementor-toc--collapsed) .elementor-toc__toggle-button--expand{display:none}.elementor-widget-table-of-contents .elementor-widget-container{min-height:var(--box-min-height);border:var(--box-border-width,1px) solid var(--box-border-color,#a4afb7);border-radius:var(--box-border-radius,3px);background-color:var(--box-background-color);-webkit-transition:min-height .4s;-o-transition:min-height .4s;transition:min-height .4s;overflow:hidden}.elementor-toc__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:var(--box-padding,20px);background-color:var(--header-background-color);border-bottom:var(--separator-width,1px) solid var(--box-border-color,#a4afb7)}.elementor-toc__header-title{font-size:18px;margin:0;color:var(--header-color)}.elementor-toc__toggle-button{cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-toc__toggle-button i{color:var(--toggle-button-color)}.elementor-toc__toggle-button svg{height:1em;width:1em;fill:var(--toggle-button-color)}.elementor-toc__spinner-container{text-align:center}.elementor-toc__spinner{font-size:2em}.elementor-toc__spinner.e-font-icon-svg{height:1em;width:1em}.elementor-toc__body{padding:var(--box-padding,20px);max-height:var(--toc-body-max-height);overflow-y:auto}.elementor-toc__body::-webkit-scrollbar{width:7px}.elementor-toc__body::-webkit-scrollbar-thumb{background-color:#c2cbd2;border-radius:10px}.elementor-toc__list-wrapper{list-style:none;padding:0}.elementor-toc__list-item{margin-bottom:.5em}.elementor-toc__list-item.elementor-item-active{font-weight:700}.elementor-toc__list-item .elementor-toc__list-wrapper{margin-top:.5em;margin-left:var(--nested-list-indent,1em)}.elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}.elementor-toc__list-item-text-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-toc__list-item-text-wrapper:before,.elementor-toc__list-item-text-wrapper i{margin-right:8px;color:var(--marker-color)}.elementor-toc__list-item-text-wrapper svg{margin-right:8px;fill:var(--marker-color);height:var(--marker-size,.5em);width:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper i{font-size:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper:before{font-size:var(--marker-size,1em)}.elementor-toc--content-ellipsis .elementor-toc__list-item-text{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-toc__list-items--collapsible>.elementor-toc__list-wrapper>.elementor-toc__list-item>.elementor-toc__list-wrapper{display:none}.elementor-toc__heading-anchor{position:absolute}.elementor-toc__body .elementor-toc__list-item-text{color:var(--item-text-color);-webkit-text-decoration:var(--item-text-decoration);text-decoration:var(--item-text-decoration)}.elementor-toc__body .elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__body .elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}ol.elementor-toc__list-wrapper{counter-reset:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item{counter-increment:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper:before{content:counters(item,".") ". "}@media only screen and (max-width:ELEMENTOR_SCREEN_TABLET_EXTRA_MAX){.elementor-toc--minimized-on-tablet_extra .elementor-toc__body{display:none}}@media only screen and (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-toc--minimized-on-tablet .elementor-toc__body{display:none}}@media only screen and (max-width:ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX){.elementor-toc--minimized-on-mobile_extra .elementor-toc__body{display:none}}@media only screen and (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-toc--minimized-on-mobile .elementor-toc__body{display:none}}.e-lottie__container{display:inline-block;max-width:var(--lottie-container-max-width);width:var(--lottie-container-width);opacity:var(--lottie-container-opacity)}.e-lottie__container:hover{opacity:var(--lottie-container-opacity-hover);-webkit-transition-duration:var(--lottie-container-transition-duration-hover);-o-transition-duration:var(--lottie-container-transition-duration-hover);transition-duration:var(--lottie-container-transition-duration-hover)}.e-lottie__container svg,.e-lottie__container svg *{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}.e-lottie__caption{color:var(--caption-color);margin-top:var(--caption-margin-top);text-align:var(--caption-text-align)}.e-tabs-inner-tabs{text-align:left;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:16px}.e-tabs-inner-tabs .e-tab-content{padding-top:32px}.e-tabs-inner-tabs .e-inner-tabs-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;overflow:hidden;z-index:1}.e-tabs-inner-tabs .e-inner-tabs-wrapper :after{content:"";width:100%;height:var(--inner-tabs-border-height,1px);background-color:var(--inner-tabs-border-color,#d5dadf);position:absolute;bottom:0;z-index:-1}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title{font-weight:700;min-width:140px;line-height:38px;height:38px;-webkit-box-sizing:content-box;box-sizing:content-box}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title a{color:#6d7882;padding:0 36px;display:block;text-align:center}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active{border-color:#495157 #495157 transparent;border-left-width:0;border-bottom:1px solid #495157;border-right-width:0;border-top-width:0}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active a{color:#495157}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content{display:none;padding:20px}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-text{color:#556068}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.e-inner-tab-active{display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons{margin-top:24px;display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons button{display:none;font-weight:500;line-height:24px;text-decoration:underline;border:none;background:transparent;padding:0}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible .e-inner-tab-text{overflow:hidden}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible.show-inner-tab-buttons .e-inner-tab-buttons,.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button.show-button{display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.show-full-height div.e-inner-tab-text{height:auto}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.e-tabs-inner-tabs>.e-tab-content:first-child{padding-top:24px}.e-tabs-inner-tabs .e-inner-tabs-wrapper{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper{border:solid #d5dadf;border-width:1px 1px 0}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title{border:solid #d5dadf;border-width:0 0 1px;font-size:16px;font-weight:700;text-align:center;height:38px;line-height:38px;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0 10px;cursor:pointer;display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content{border:solid #d5dadf;border-width:0 0 1px;padding:20px}}.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.elementor-widget-video-playlist{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif}.elementor-widget-video-playlist .e-tabs{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-widget-video-playlist .e-tabs-main-area{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;height:434px}.elementor-widget-video-playlist .e-tabs-wrapper{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:33%}.elementor-widget-video-playlist .e-tabs-header{background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;min-height:56px;border-bottom:1px solid #d5dadf}.elementor-widget-video-playlist .e-tabs-header .e-tabs-header-right-side{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-title{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;-o-text-overflow:ellipsis;text-overflow:ellipsis;font-weight:700;font-size:16px;padding:10px 0;overflow-wrap:anywhere;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin:auto 0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count{font-size:14px;-ms-flex-negative:0;flex-shrink:0;font-weight:400;line-height:20px;-ms-flex-item-align:start;align-self:flex-start;padding:18px 0 0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button{display:none;margin:auto 0 auto 8px;cursor:pointer;padding:0 4px}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button.e-font-icon-svg{height:1em;width:1em}.elementor-widget-video-playlist .e-tabs-header .rotate-up{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-widget-video-playlist .e-tabs-header .rotate-down{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-widget-video-playlist .e-tabs-items-wrapper{background-color:#fff;overflow:hidden;position:relative;height:100%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items{overflow:auto;height:100%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-section-title{border-color:#d5dadf;font-size:14px;height:36px;padding:0 16px;line-height:36px;margin:0;text-align:left;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border-width:0;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title{background-color:#fff;border-color:#d5dadf;border-width:0 0 1px;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:14px;height:55px;line-height:55px;outline:none;padding:0 16px;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i{text-shadow:0 0 3px #000;color:#fff;font-size:var(--playlist-item-icon-size,16px)}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg{text-shadow:0 0 3px #000;color:#fff;fill:#fff;width:var(--playlist-item-icon-size,16px);height:var(--playlist-item-icon-size,16px)}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg path{fill:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover{background-color:#f1f3f5;border-color:#d5dadf;border-width:0 0 1px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg{text-shadow:0 0 3px #000;color:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg path,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg path{fill:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active .e-tab-title-text,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover .e-tab-title-text{font-size:14px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-play,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail{background-color:#d5dadf;position:relative;margin:auto 0;-ms-flex-negative:0;flex-shrink:0;width:75px;height:42px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail img{-o-object-fit:fill;object-fit:fill;width:75px;height:42px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail svg{position:absolute;bottom:4px;right:4px;font-weight:900}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-title-text{font-size:14px;margin:auto 8px;text-align:left;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg{margin:auto 0;vertical-align:middle}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-duration{font-size:14px;margin:auto 0}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-play{display:none}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-watched{display:block}.elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top{display:none;height:98px;position:absolute;top:0;width:100%;pointer-events:none;background:-webkit-gradient(linear,left bottom,left top,from(transparent),to(#fff));background:-webkit-linear-gradient(bottom,transparent,#fff);background:-o-linear-gradient(bottom,transparent 0,#fff 100%);background:linear-gradient(0deg,transparent,#fff)}.elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom{display:none;height:98px;position:absolute;bottom:0;width:100%;background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(#fff));background:-webkit-linear-gradient(top,transparent,#fff);background:-o-linear-gradient(top,transparent 0,#fff 100%);background:linear-gradient(180deg,transparent,#fff);pointer-events:none}.elementor-widget-video-playlist .e-tabs-items-wrapper.bottom-shadow .shadow-bottom,.elementor-widget-video-playlist .e-tabs-items-wrapper.top-shadow .shadow-top{display:block}.elementor-widget-video-playlist .e-tabs-content-wrapper{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;height:100%;position:relative}.elementor-widget-video-playlist .e-tabs-content-wrapper .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center;position:absolute;top:0;left:0;width:100%;height:100%;-webkit-background-size:cover;background-size:cover;background-position:50%}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-mobile-title{display:none}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content{background-color:#000;display:none;height:100%;outline:none}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content>div{height:100%}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content iframe{height:100%;max-height:100%!important;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content video{height:100%;background-color:#000}.elementor-widget-video-playlist .e-tabs-inner-tabs .e-tab-content{display:none;outline:none}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-video-playlist .e-tabs-main-area{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;height:auto}.elementor-widget-video-playlist .e-tabs-main-area .e-tabs-content-wrapper{border:none;height:38%}.elementor-widget-video-playlist .e-tabs-wrapper{width:auto;height:62%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items{max-height:248px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items .e-tab-title{border:none}.elementor-widget-video-playlist .e-tabs-header{min-height:48px}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count{margin:0 6px;padding:14px 0 0}.elementor-widget-video-playlist .e-tab-content{border:none;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex}}.elementor-payment-button{border:none}.elementor-scrolling-tracker{--scrolling-track-default-progress-color:#61ce70;--scrolling-track-default-color:#eee;--scrolling-track-precentage-default-color:$black}.elementor-scrolling-tracker-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:var(--horizontal-height,20px);padding:var(--tracker-padding);-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-left:var(--horizontal-border-left-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-bottom:var(--horizontal-border-bottom-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-right:var(--horizontal-border-right-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-top:var(--horizontal-border-top-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-radius:var(--border-radius);background-color:var(--scrolling-track-default-color);direction:var(--direction)}.elementor-scrolling-tracker-horizontal .current-progress{display:none;height:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;border-radius:var(--progress-border-radius);border-left:var(--horizontal-progress-border-left-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-bottom:var(--horizontal-progress-border-bottom-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-right:var(--horizontal-progress-border-right-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-top:var(--horizontal-progress-border-top-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);background-color:var(--scrolling-track-default-progress-color)}.elementor-scrolling-tracker-horizontal .current-progress .current-progress-percentage{inset-inline-end:.5em;inset-inline-start:auto;position:absolute;direction:var(--text-direction);color:var(--percentage-color,var(--scrolling-track-precentage-default-color))}.elementor-scrolling-tracker-circular{display:-webkit-box;display:-ms-flexbox;display:flex;width:var(--circular-width,100px);height:var(--circular-height,100px);-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:auto;margin-inline-end:auto}.elementor-scrolling-tracker-circular .current-progress-percentage{position:absolute;color:var(--percentage-color,var(--scrolling-track-precentage-default-color))}.elementor-scrolling-tracker-circular svg{position:absolute}.elementor-scrolling-tracker-circular .current-progress{display:none;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;stroke:var(--circular-color,var(--scrolling-track-default-progress-color));fill:transparent;stroke-width:var(--circular-progress-width,4px)}.elementor-scrolling-tracker-circular .circle{stroke:var(--circular-background-color,var(--scrolling-track-default-color));fill:transparent;stroke-width:var(--circular-background-width,4px)}.elementor-scrolling-tracker-alignment-left{margin-left:0;margin-right:auto}.elementor-scrolling-tracker-alignment-center{margin-left:auto;margin-right:auto}.elementor-scrolling-tracker-alignment-right{margin-left:auto;margin-right:0}assets/css/templates/frontend-lite.css000064400000411043150755004320014124 0ustar00.elementor-bg-transform .elementor-bg {
  will-change: transform; }

.elementor-bg-transform-zoom-in:hover .elementor-bg {
  transform: scale(1.2); }

.elementor-bg-transform-zoom-out .elementor-bg {
  transform: scale(1.2); }

.elementor-bg-transform-zoom-out:hover .elementor-bg {
  transform: scale(1); }

.elementor-bg-transform-move-left .elementor-bg {
  transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-left:hover .elementor-bg {
  transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right .elementor-bg {
  transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right:hover .elementor-bg {
  transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-up .elementor-bg {
  transform: scale(1.2) translateY(8%); }

.elementor-bg-transform-move-up:hover .elementor-bg {
  transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down .elementor-bg {
  transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down:hover .elementor-bg {
  transform: scale(1.2) translateY(8%); }

/*---------------------------------------------------------------------------*/
.elementor-animated-content {
  --translate: 0, 0; }
  .elementor-animated-content:hover .elementor-animated-item--grow {
    transform: scale(1.1); }
  .elementor-animated-content:hover .elementor-animated-item--shrink {
    transform: scale(0.85); }
  .elementor-animated-content:hover .elementor-animated-item--shrink-contained {
    transform: scale(1); }
  .elementor-animated-content:hover .elementor-animated-item--enter-zoom-out, .elementor-animated-content:hover .elementor-animated-item--enter-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-in {
    transform: scale(1);
    opacity: 1; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out, .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-out {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out {
    transform: scale(0.2); }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in {
    transform: scale(2); }
  .elementor-animated-content:hover .elementor-animated-item--enter-from-right, .elementor-animated-content:hover .elementor-animated-item--enter-from-left, .elementor-animated-content:hover .elementor-animated-item--enter-from-top, .elementor-animated-content:hover .elementor-animated-item--enter-from-bottom {
    opacity: 1;
    transform: translateY(0) translateX(0); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right {
    transform: translateX(1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-left {
    transform: translateX(-1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-top {
    transform: translateY(-600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    transform: translateY(600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right, .elementor-animated-content:hover .elementor-animated-item--exit-to-left, .elementor-animated-content:hover .elementor-animated-item--exit-to-top, .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-right {
    transform: translateX(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-left {
    transform: translateX(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-up {
    transform: translateY(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-down {
    transform: translateY(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-right {
    --translate: 8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-left {
    --translate: -8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-top {
    --translate: 0, -8%; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-bottom {
    --translate: 0, 8%; }
  .elementor-animated-content *[class^="elementor-animated-item"] {
    will-change: transform, opacity; }
  .elementor-animated-content .elementor-animated-item--shrink-contained {
    transform: scale(1.17); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-in {
    transform: scale(0.2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out {
    transform: scale(2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out, .elementor-animated-content .elementor-animated-item--enter-zoom-in, .elementor-animated-content .elementor-animated-item--fade-in {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-zoom-out, .elementor-animated-content .elementor-animated-item--exit-zoom-in, .elementor-animated-content .elementor-animated-item--fade-out {
    opacity: 1;
    transform: scale(1); }
  .elementor-animated-content .elementor-animated-item--enter-from-right {
    transform: translateX(1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-left {
    transform: translateX(-1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-top {
    transform: translateY(-600px); }
  .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    transform: translateY(500px); }
  .elementor-animated-content .elementor-animated-item--enter-from-right, .elementor-animated-content .elementor-animated-item--enter-from-left, .elementor-animated-content .elementor-animated-item--enter-from-top, .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-to-right, .elementor-animated-content .elementor-animated-item--exit-to-left, .elementor-animated-content .elementor-animated-item--exit-to-top, .elementor-animated-content .elementor-animated-item--exit-to-bottom {
    opacity: 1;
    transform: translateY(0) translateX(0); }
  .elementor-animated-content .elementor-animated-item--move-contained-right, .elementor-animated-content .elementor-animated-item--move-contained-left, .elementor-animated-content .elementor-animated-item--move-contained-top, .elementor-animated-content .elementor-animated-item--move-contained-bottom {
    transform: scale(1.2) translate(var(--translate)); }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover {
  outline: 1px solid #fec449; }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings {
  background-image: linear-gradient(to top, #feb416, #fec449); }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover {
    background-color: #feb416; }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save {
    display: none; }

body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  width: 100%;
  padding: 0; }

body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  padding: 0; }

.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart {
  margin: 0;
  display: flex;
  flex-wrap: nowrap; }

.woocommerce div.product.elementor .quantity .qty {
  vertical-align: top;
  margin-right: 0; }

.woocommerce div.product.elementor .quantity + .button {
  margin-left: 10px; }

.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input {
  height: 100%; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
  justify-content: flex-start; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
  justify-content: flex-end; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
  justify-content: center; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
  margin-right: initial; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
  flex-basis: auto; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
  flex-wrap: nowrap; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-right: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
    flex-basis: 100%; }

@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-right: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-right: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      flex-basis: 100%; } }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-right: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-right: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      flex-basis: 100%; } }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button {
  background-color: #5bc0de; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button {
  background-color: #5cb85c; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button {
  background-color: #f0ad4e; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button {
  background-color: #d9534f; }

.elementor-widget-wc-add-to-cart .quantity {
  display: inline-block; }

.elementor-widget-wc-add-to-cart.elementor-align-center form.cart {
  justify-content: center; }

.elementor-widget-wc-add-to-cart.elementor-align-right form.cart {
  justify-content: flex-end; }

.elementor-widget-wc-add-to-cart.elementor-align-left form.cart {
  justify-content: flex-end; }

.woocommerce div.product.elementor {
  /*  Reset WC tabs style  */
  /*  End Reset WC tabs style  */ }
  .woocommerce div.product.elementor ul.tabs:before {
    position: static;
    content: none;
    width: auto;
    bottom: auto;
    left: auto;
    border-bottom: 0;
    z-index: auto; }
  .woocommerce div.product.elementor ul.tabs {
    margin: 0; }
    .woocommerce div.product.elementor ul.tabs li {
      padding: 0; }
      .woocommerce div.product.elementor ul.tabs li a {
        padding: .8em 1.2em;
        line-height: 1; }
    .woocommerce div.product.elementor ul.tabs li:after,
    .woocommerce div.product.elementor ul.tabs li:before {
      border: 0;
      position: static;
      bottom: auto;
      width: auto;
      height: auto;
      content: none;
      box-sizing: border-box; }
  .woocommerce div.product.elementor .woocommerce-tabs .panel {
    margin: 0;
    padding: 20px;
    border-radius: 0;
    border-width: 0;
    border-top: 1px solid #d3ced2;
    box-shadow: none;
    margin-top: -1px; }

.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,
.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins {
  display: block; }

.elementor-widget-woocommerce-product-meta .detail-container {
  position: relative; }
  .elementor-widget-woocommerce-product-meta .detail-container:after {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%; }

.elementor-widget-woocommerce-product-meta .detail-label {
  font-weight: bold; }

.elementor-woo-meta--view-inline .product_meta {
  display: flex;
  flex-wrap: wrap; }
  .elementor-woo-meta--view-inline .product_meta .detail-container:after {
    width: auto;
    left: auto;
    right: auto;
    position: absolute;
    height: 100%;
    top: 50%;
    transform: translateY(-50%);
    border-top: 0;
    border-bottom: 0;
    border-right: 0;
    border-left-width: 1px;
    border-style: solid;
    right: -8px; }

.elementor-woo-meta--view-table .product_meta {
  display: flex;
  flex-direction: column; }
  .elementor-woo-meta--view-table .product_meta .detail-container {
    display: flex; }
  .elementor-woo-meta--view-table .product_meta .detail-label {
    min-width: 108px; }

.elementor-woo-meta--view-stacked .product_meta .detail-container {
  display: block; }

.woocommerce div.product.elementor .woocommerce-product-rating {
  margin-bottom: 0;
  display: flex;
  align-items: center; }

.woocommerce div.product.elementor .star-rating {
  margin-top: 0; }

.elementor-product-rating--align-left .woocommerce-product-rating {
  justify-content: flex-start; }

.elementor-product-rating--align-right .woocommerce-product-rating {
  justify-content: flex-end; }

.elementor-product-rating--align-center .woocommerce-product-rating {
  justify-content: center; }

.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link {
  margin-left: auto; }

.elementor-products-grid ul.products.elementor-grid {
  display: grid;
  margin: 0;
  grid-column-gap: 20px;
  grid-row-gap: 40px; }
  .elementor-products-grid ul.products.elementor-grid:before, .elementor-products-grid ul.products.elementor-grid:after {
    content: none;
    display: none; }
  .elementor-products-grid ul.products.elementor-grid li.product {
    width: auto;
    padding: 0;
    margin: 0;
    float: none; }
    .elementor-products-grid ul.products.elementor-grid li.product .onsale {
      padding: 0;
      display: none; }
    .elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link {
      display: block;
      position: relative; }

.elementor-products-grid:not(.show-heading-yes) .products > h2 {
  display: none; }

.elementor-products-grid nav.woocommerce-pagination {
  margin-top: 40px; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul {
  border: none 0; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li {
  border-right: none 0;
  border-left: none 0; }

.elementor-product-loop-item--align-left ul.products li.product .star-rating {
  margin-right: auto; }

.elementor-product-loop-item--align-right ul.products li.product .star-rating {
  margin-left: auto; }

.elementor-product-loop-item--align-center ul.products li.product .star-rating {
  margin-right: auto;
  margin-left: auto; }

.woocommerce .elementor-element.elementor-products-grid ul.products li.product {
  width: auto; }

.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,
.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product {
  width: auto; }

@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) {
  .elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products {
    grid-template-columns: repeat(2, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products {
    grid-template-columns: repeat(3, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products {
    grid-template-columns: repeat(4, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products {
    grid-template-columns: repeat(5, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products {
    grid-template-columns: repeat(6, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products {
    grid-template-columns: repeat(7, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products {
    grid-template-columns: repeat(8, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products {
    grid-template-columns: repeat(9, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products {
    grid-template-columns: repeat(10, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products {
    grid-template-columns: repeat(11, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products {
    grid-template-columns: repeat(12, 1fr); } }

@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(3, 1fr); } }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(2, 1fr); } }

.elementor.product .woocommerce-product-gallery__trigger + .woocommerce-product-gallery__wrapper {
  overflow: hidden; }

.woocommerce .elementor-widget-woocommerce-product-images span.onsale {
  padding: 0; }

.elementor-menu-cart__wrapper {
  text-align: var(--main-alignment, left); }

.elementor-menu-cart__toggle_wrapper {
  display: inline-block;
  position: relative; }

.elementor-menu-cart__toggle {
  display: inline-block; }
  .elementor-menu-cart__toggle .elementor-button {
    background-color: var(--toggle-button-background-color, transparent);
    color: var(--toggle-button-text-color, #818a91);
    border-style: var(--toggle-button-border-type, solid);
    border-width: var(--toggle-button-border-width, 1px);
    border-color: var(--toggle-button-border-color, #818a91);
    border-radius: var(--toggle-button-border-radius, 0px);
    display: inline-flex;
    align-items: center;
    padding: var(--toggle-icon-padding, 12px 24px); }
    .elementor-menu-cart__toggle .elementor-button:hover {
      color: var(--toggle-button-hover-text-color, #818a91);
      background-color: var(--toggle-button-hover-background-color, transparent);
      border-color: var(--toggle-button-hover-border-color, #818a91); }
      .elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon {
        color: var(--toggle-button-icon-hover-color, #818a91); }
  .elementor-menu-cart__toggle .elementor-button-text {
    margin-right: 0.3em; }
  .elementor-menu-cart__toggle .elementor-button-icon {
    position: relative;
    transition: color 0.1s;
    color: var(--toggle-button-icon-color, #818a91);
    font-size: var(--toggle-icon-size, inherit); }

.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: block;
  position: absolute;
  min-width: 1.6em;
  height: 1.6em;
  line-height: 1.5em;
  top: -0.7em;
  right: -0.7em;
  border-radius: 100%;
  color: var(--items-indicator-text-color, #fff);
  background-color: var(--items-indicator-background-color, #d9534f);
  text-align: center;
  font-size: 10px; }

.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: inline-block;
  font-weight: normal; }

.elementor-menu-cart__container {
  transform: scale(1);
  overflow: hidden;
  position: fixed;
  z-index: 9998;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgba(0, 0, 0, 0.25);
  transition: background-color 0.4s, transform 0s;
  text-align: left; }

.elementor-menu-cart__main {
  position: fixed;
  left: var(--side-cart-alignment-left, auto);
  right: var(--side-cart-alignment-right, 0);
  transform: translateX(0);
  top: 0;
  bottom: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  font-size: 14px;
  min-height: 200px;
  width: 350px;
  max-width: 100%;
  transition: 0.3s;
  padding: var(--cart-padding, 20px 30px);
  background-color: var(--cart-background-color, #fff);
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
  border-style: var(--cart-border-style, none);
  border-color: var(--cart-border-color, initial);
  border-radius: var(--cart-border-radius, 0px);
  margin-top: var(--mini-cart-spacing, 0px); }
  .elementor-menu-cart__main .widget_shopping_cart_content {
    height: 100%;
    display: flex;
    flex-direction: column; }
    .elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message {
      color: var(--empty-message-color, inherit);
      text-align: var(--empty-message-alignment, left); }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
  background-color: transparent;
  transform: scale(0);
  transition: background-color 0.4s, transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button {
    display: none; }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
  overflow: hidden;
  opacity: 0;
  transform: var(--side-cart-alignment-transform, translateX(100%)); }

.elementor-menu-cart__close-button {
  width: var(--cart-close-icon-size, 25px);
  height: var(--cart-close-icon-size, 25px);
  position: relative;
  margin: 0 0 20px;
  align-self: flex-end;
  cursor: pointer;
  display: inline-block;
  font-family: eicons;
  font-size: 20px;
  line-height: 1;
  transition: 0.3s; }
  .elementor-menu-cart__close-button:before, .elementor-menu-cart__close-button:after {
    content: '';
    position: absolute;
    height: 3px;
    width: 100%;
    top: 50%;
    left: 0;
    margin-top: -1px;
    background: var(--cart-close-button-color, #818a91);
    border-radius: 1px;
    transition: 0.3s; }
  .elementor-menu-cart__close-button:hover::before, .elementor-menu-cart__close-button:hover::after {
    background: var(--cart-close-button-hover-color, #818a91); }
  .elementor-menu-cart__close-button::before {
    transform: rotate(45deg); }
  .elementor-menu-cart__close-button::after {
    transform: rotate(-45deg); }

.elementor-menu-cart__products {
  max-height: calc(100vh - 250px);
  overflow: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch; }

.elementor-menu-cart__product {
  display: grid;
  grid-template-columns: 28% auto;
  grid-template-rows: var(--price-quantity-position--grid-template-rows, auto auto);
  position: relative;
  border-width: 0 0 var(--divider-width, 1px);
  border-bottom-style: var(--divider-style, solid);
  border-bottom-color: var(--divider-color, #D4D4D4); }
  .elementor-menu-cart__product .variation {
    display: grid;
    grid-template-columns: max-content auto;
    margin: 10px 0; }
    .elementor-menu-cart__product .variation dt {
      grid-column-start: 1; }
    .elementor-menu-cart__product .variation dd {
      grid-column-start: 2;
      margin-inline-start: 5px; }
      .elementor-menu-cart__product .variation dd p {
        margin-bottom: 0; }
  .elementor-menu-cart__product-image {
    grid-row-start: 1;
    grid-row-end: 3;
    width: 100%; }
    .elementor-menu-cart__product-image img, .elementor-menu-cart__product-image a {
      display: block; }
  .elementor-menu-cart__product-name {
    grid-column-start: 2;
    grid-column-end: 3;
    margin: 0; }
    .elementor-menu-cart__product-name a {
      transition: 0.3s; }
  .elementor-menu-cart__product-price {
    grid-column-start: 2;
    grid-column-end: 3;
    align-self: var(--price-quantity-position--align-self, end);
    font-weight: 300;
    color: var(--product-price-color, #D4D4D4); }
  .elementor-menu-cart__product-name, .elementor-menu-cart__product-price {
    font-size: 14px;
    padding-left: 20px; }
  .elementor-menu-cart__product-remove {
    color: #818a91;
    width: var(--remove-item-button-size, 22px);
    height: var(--remove-item-button-size, 22px);
    border-radius: var(--remove-item-button-size, 22px);
    border: 1px solid var(--remove-item-button-color, #D4D4D4);
    text-align: center;
    overflow: hidden;
    position: absolute;
    right: 0;
    bottom: 20px;
    transition: 0.3s; }
    .elementor-menu-cart__product-remove:hover {
      border: 1px solid var(--remove-item-button-hover-color, #D4D4D4); }
      .elementor-menu-cart__product-remove:hover::before, .elementor-menu-cart__product-remove:hover::after {
        background: var(--remove-item-button-hover-color, #D4D4D4); }
    .elementor-menu-cart__product-remove:before, .elementor-menu-cart__product-remove:after {
      content: '';
      position: absolute;
      height: 1px;
      width: 50%;
      top: 50%;
      left: 25%;
      margin-top: -1px;
      background: var(--remove-item-button-color, #D4D4D4);
      z-index: 1;
      transition: 0.3s; }
    .elementor-menu-cart__product-remove::before {
      transform: rotate(45deg); }
    .elementor-menu-cart__product-remove::after {
      transform: rotate(-45deg); }
    .elementor-menu-cart__product-remove > a {
      display: block;
      z-index: 2;
      width: 100%;
      height: 100%;
      overflow: hidden;
      opacity: 0;
      position: absolute; }
      .elementor-menu-cart__product-remove > a.remove_from_cart_button {
        display: var(--remove-from-cart-button, block); }
      .elementor-menu-cart__product-remove > a.elementor_remove_from_cart_button {
        display: var(--elementor-remove-from-cart-button, none); }

.elementor-menu-cart__product:last-child {
  border: none; }

.elementor-menu-cart__product:not(:first-of-type), .elementor-menu-cart__subtotal, .elementor-menu-cart__footer-buttons {
  padding-top: var(--product-divider-gap, 20px); }

.elementor-menu-cart__product {
  padding-right: 30px; }

.elementor-menu-cart__product, .elementor-menu-cart__subtotal {
  padding-bottom: var(--product-divider-gap, 20px); }

.elementor-menu-cart__subtotal {
  font-size: 20px;
  text-align: var(--menu-cart-subtotal-text-align, center);
  font-weight: 600;
  color: var(--menu-cart-subtotal-color, inherit);
  border-style: var(--subtotal-divider-style, solid);
  border-width: var(--subtotal-divider-top-width, 1px) var(--subtotal-divider-right-width, 1px) var(--subtotal-divider-bottom-width, 1px) var(--subtotal-divider-left-width, 1px);
  border-color: var(--subtotal-divider-color, #D4D4D4); }

.elementor-menu-cart__footer-buttons {
  font-size: 20px;
  text-align: var(--cart-footer-buttons-alignment-text-align, center);
  display: var(--cart-footer-buttons-alignment-display, grid);
  grid-template-columns: var(--cart-footer-layout, 1fr 1fr);
  margin-top: var(--cart-buttons-position-margin, 0);
  grid-column-gap: var(--space-between-buttons, 10px);
  grid-row-gap: var(--space-between-buttons, 10px); }
  .elementor-menu-cart__footer-buttons .elementor-button {
    display: inline-block;
    border-radius: var(--cart-footer-buttons-border-radius, 0px);
    height: fit-content; }
    .elementor-menu-cart__footer-buttons .elementor-button--view-cart {
      display: var(--view-cart-button-display, inline-block);
      color: var(--view-cart-button-text-color, #fff);
      padding: var(--view-cart-button-padding, 15px);
      background-color: var(--view-cart-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover {
        color: var(--view-cart-button-hover-text-color, #fff);
        background-color: var(--view-cart-button-hover-background-color, #818a91); }
    .elementor-menu-cart__footer-buttons .elementor-button--checkout {
      display: var(--checkout-button-display, inline-block);
      color: var(--checkout-button-text-color, #fff);
      padding: var(--checkout-button-padding, 15px);
      background-color: var(--checkout-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--checkout:hover {
        color: var(--checkout-button-hover-text-color, #fff);
        background-color: var(--checkout-button-hover-background-color, #818a91); }
    @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
      .elementor-menu-cart__footer-buttons .elementor-button {
        padding-left: 10px;
        padding-right: 10px; } }

/* The following is all to apply settings from the controls */
.elementor-widget-woocommerce-menu-cart {
  /* Fix to prevent the cart modal flash when using the typography controls */
  /* Fix for short-lived legacy cart type */ }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before {
    content: none; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e3'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e4'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e5'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e6'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e7'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e8'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e9'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8ea'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8eb'; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product {
    padding-left: 0;
    padding-right: 0;
    grid-template-columns: 25% auto; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove {
    top: 0;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove {
    top: 20px;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove {
    transform: translateY(50%);
    bottom: 50%; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove {
    top: auto;
    bottom: 20px; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart {
    /* The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
			and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
      position: absolute;
      z-index: 89;
      width: auto;
      height: auto;
      overflow: visible;
      top: 100%;
      bottom: auto;
      background: none;
      min-width: 330px;
      left: 0;
      right: auto;
      transform: scale(1);
      transition: background-color 0.4s, transform 0s; }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main {
      width: auto;
      height: auto;
      position: relative;
      top: auto;
      bottom: auto;
      right: auto;
      left: auto;
      overflow: visible;
      transform: translateY(0);
      transition: 0.3s; }
    @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
      .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
        min-width: 300px; } }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
    transform: scale(0);
    transition: background-color 0.4s, transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
    opacity: 0;
    transform: translateY(-10px); }
  .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown {
    opacity: 1;
    /* This keeps mini-cart panels above other widgets so there's no flash when using the typography controls.
		The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
		and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container {
      z-index: 9998; }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart {
      z-index: 89; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container {
    display: none; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-checkout-page {
  background-color: transparent;
  font-family: Roboto, sans-serif;
  font-size: 14px;
  line-height: 21px;
  color: #818a91;
  /* one column layout */
  /* override theme defaults for themes that have hover background colors on these elements. The hover background colors do not play well with the widget's initial design. */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-checkout-page ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > td,
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > th {
    background-color: transparent; }
  .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: #f7f7f7;
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: #f7f7f7;
      border-color: var(--forms-fields-focus-border-color, initial);
      transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below {
    background-color: #f7f7f7; }
  .elementor-widget-woocommerce-checkout-page .e-description {
    color: var(--sections-descriptions-color, #818a91);
    padding-bottom: var(--sections-descriptions-spacing, 0px);
    font-size: 14px;
    font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section {
    margin-bottom: 24px; }
    .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title {
      text-align: var(--login-title-alignment, left); }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge {
    margin-top: var(--sections-secondary-title-spacing, 24px);
    margin-bottom: 15px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor {
    margin-top: var(--sections-secondary-title-spacing, 24px); }
  .elementor-widget-woocommerce-checkout-page .e-coupon-box {
    margin-top: 24px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description {
    color: var(--forms-labels-color, #818a91);
    margin-bottom: var(--forms-label-spacing, 3px); }
  .elementor-widget-woocommerce-checkout-page .e-login-wrap {
    display: flex;
    align-items: center; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-start {
      flex: 75%; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
      flex: 20%;
      text-align: right; }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-checkout-page .e-login-wrap {
        display: block; }
        .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
          text-align: left;
          margin-top: 15px; }
          .elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label {
            display: none; } }
  .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap {
    display: flex;
    justify-content: space-between;
    margin-top: 6px; }
    .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
      margin-bottom: 0;
      font-size: 12px; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
          font-size: 11px; } }
  .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
    width: 90%;
    /* 90% to match the design */ }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
        width: auto; } }
  .elementor-widget-woocommerce-checkout-page .e-checkout__container {
    display: grid;
    flex-wrap: wrap;
    grid-template-columns: 56% auto;
    /* column widths - to match the design */
    align-items: stretch;
    grid-column-gap: var(--sections-margin, 24px);
    grid-row-gap: var(--sections-margin, 24px); }
  @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
    .elementor-widget-woocommerce-checkout-page .e-checkout__container {
      grid-template-columns: repeat(1, 1fr); } }
  .elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title {
    color: var(--sections-secondary-title-color, #818a91);
    margin-bottom: 0; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge {
    text-align: var(--coupon-title-alignment, left); }
  .elementor-widget-woocommerce-checkout-page #ship-to-different-address {
    margin-top: 13px;
    padding-left: var(--shipping-heading-padding-start, 30px); }
    .elementor-widget-woocommerce-checkout-page #ship-to-different-address span {
      font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-checkout-page a:hover {
      color: var(--links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-checkout-page .woocommerce {
    /* Need to use these specific selectors to override WooCommerce CSS */
    /* Need the <button> selector here so that we can target .woocommerce-button
		without being overwritten by WooCommerce's button.button selector.
		We are also targeting .woocommerce-button because none of this styling should
		apply to the Purchase button. Only The Login/Apply coupon button. */
    /* Main Sections styling start */
    /* Main Sections styling end */
    /* Styling for everything classified as 'Messages' start */
    /* Styling for everything classified as 'Messages' end */ }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      padding-left: var(--forms-columns-gap-padding, 0px);
      padding-right: var(--forms-columns-gap-padding, 0px);
      margin-left: var(--forms-columns-gap-margin, 0px);
      margin-right: var(--forms-columns-gap-margin, 0px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label {
        color: var(--forms-labels-color, #818a91);
        margin-bottom: var(--forms-label-spacing, 3px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea {
        color: var(--forms-fields-normal-color, #818a91);
        background-color: #f7f7f7;
        border-radius: var(--forms-fields-border-radius, 0px);
        padding: var(--forms-fields-padding, 16px);
        font-size: 14px;
        border: none;
        font-weight: 400; }
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus {
          color: var(--forms-fields-focus-color, #818a91);
          background-color: #f7f7f7;
          border-color: var(--forms-fields-focus-border-color, #818a91);
          transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field {
      margin-bottom: 5px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .create-account,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      /* need to use !important here to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 0 !important; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .input-radio,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span {
      position: relative;
      top: 2px;
      color: var(--sections-checkboxes-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label {
      display: inline; }
    .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #6F6F6F);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: 1rem;
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover {
        color: var(--forms-buttons-hover-text-color, #6F6F6F);
        transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
      margin-right: 1%; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
          width: 100%;
          margin-right: 0;
          margin-bottom: 15px; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-info {
      border-top-color: transparent;
      background-color: transparent;
      padding: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p {
      font-weight: 400;
      font-size: 12px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info {
      font-weight: 400;
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment,
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      background: var(--sections-background-color, #ffffff);
      border-radius: var(--sections-border-radius, 3px);
      padding: var(--sections-padding, 16px 30px);
      margin: var(--sections-margin, 0 0 24px 0);
      border-style: var(--sections-border-type, solid);
      border-color: var(--sections-border-color, #D4D4D4);
      border-width: 1px;
      display: block; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      display: var(--additional-information-display, none); }
    @media (min-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
        margin: var(--sections-margin, 0); } }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message {
      color: var(--sections-messages-color, #818a91);
      font-weight: 400; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p {
      margin-top: 25px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1 {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2 {
      padding-top: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading {
      text-align: var(--order-review-title-alignment, left); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table {
      margin-bottom: 0;
      border: 0;
      font-size: 14px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead {
        background-color: transparent; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th {
          padding-top: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td {
        color: #000000; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity {
          font-weight: normal; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td {
        color: #818a91; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th {
        border: 0;
        padding-left: 0;
        padding-bottom: 15px;
        padding-top: 15px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td {
        padding-bottom: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td {
      font-weight: 400;
      color: var(--order-summary-items-color, #000000);
      border-bottom-color: var(--order-summary-items-divider-color, #818a91);
      border-bottom-width: var(--order-summary-items-divider-weight, 0px);
      border-bottom-style: solid; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name {
        padding-right: 40px;
        max-width: 150px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total {
        vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th {
      padding-top: var(--order-summary-rows-gap-top, 15px);
      padding-bottom: var(--order-summary-rows-gap-bottom, 15px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th {
      color: var(--order-summary-totals-color, #818a91);
      vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th {
      border-top-color: var(--order-summary-totals-divider-color, #818a91);
      border-top-width: var(--order-summary-totals-divider-weight, 0px);
      border-top-style: solid; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td {
      max-width: 70px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce h3 {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      margin-bottom: var(--sections-title-spacing, 30px);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row > span {
      font-weight: 400;
      font-size: 14px;
      margin-bottom: 3px;
      color: #818a91; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
      /* use 48% to match the design. Default WC CSS uses 47% */
      width: 48%; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3 {
      text-align: var(--billing-details-title-alignment, left); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row {
      margin-bottom: var(--forms-rows-gap, 5px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child {
        margin-bottom: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login {
      margin-top: -8px;
      z-index: 999;
      background: #ffffff;
      border-top-width: 0;
      position: relative;
      margin-bottom: 0;
      color: #818a91; }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
        width: 100%; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle {
      display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
      width: 85%;
      /* 85% to match the design */ }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
          width: 35%;
          /* 35% to match the design */ } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3 {
      background: var(--additional-fields-title-alignment, left); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address {
      margin-bottom: var(--sections-margin, 20px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment {
      margin-top: 24px;
      padding: 15px 25px 25px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods {
        border-bottom: none;
        padding: 0; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box {
          background-color: #f7f7f7; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before {
            display: none; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li {
          line-height: 21px; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
            padding-left: 15px;
            font-size: 12px; }
            @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
              .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
                float: none;
                font-size: 11px;
                padding-left: 10px; } }
          @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
            .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img {
              width: 55px;
              /* 55px to match the design */ } }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order {
        display: flex;
        flex-direction: column;
        flex-wrap: wrap;
        padding: 0;
        margin-bottom: 0;
        align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order {
        background-color: #5bc0de;
        width: var(--purchase-button-width, auto);
        float: none;
        color: var(--purchase-button-normal-text-color, #ffffff);
        min-height: auto;
        padding: var(--purchase-button-padding, 1em 1em);
        border-radius: var(--purchase-button-border-radius, 3px); }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover {
          background-color: #5bc0de;
          color: var(--purchase-button-hover-text-color, #ffffff);
          border-color: var(--purchase-button-hover-border-color, #5bc0de);
          transition-duration: var(--purchase-button-hover-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before {
        display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2 {
      width: auto;
      float: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
      display: grid;
      grid-template-columns: auto auto;
      /*columns widths*/
      align-items: center; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
        text-align: right; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
          display: block; }
          .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
            text-align: left; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field {
      /* need to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 10px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000);
      /* We need to specify these values so that the 'Items' Typography control does not affect
			the 'Variations' */
      font-size: 14px;
      font-style: normal;
      text-transform: none;
      letter-spacing: normal;
      text-decoration: none;
      line-height: 21px; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-cart {
  /* one column layout */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart table tbody tr:hover > td,
  .elementor-widget-woocommerce-cart table tbody tr:hover > th {
    background-color: inherit; }
  .elementor-widget-woocommerce-cart .e {
    /* .e-clear is a class that is added between the cart sections to fix collapsing margins,
		especially when custom margins are being set by the Style Controls, then the margins could
		start overriding the other margin, leaving one margin */ }
    .elementor-widget-woocommerce-cart .e-clear {
      overflow: hidden;
      height: 0;
      width: 0; }
    .elementor-widget-woocommerce-cart .e-cart {
      /* Main sections styling start */
      /* Main sections styling end */
      /* one column layout */ }
      .elementor-widget-woocommerce-cart .e-cart-section {
        background-color: var(--sections-background-color, #ffffff);
        padding: var(--sections-padding, 16px 30px);
        margin: var(--sections-margin, 0 0 30px 0);
        border-radius: var(--sections-border-radius, 3px);
        border-width: 1px;
        border-style: var(--sections-border-type, solid);
        border-color: var(--sections-border-color, #D4D4D4); }
      @media (min-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-cart .e-cart-section:last-child {
          margin: var(--sections-margin, 0); } }
      .elementor-widget-woocommerce-cart .e-cart-content {
        color: var(--sections-descriptions-color, #818a91);
        font-size: 15px;
        font-weight: 400;
        line-height: 23px;
        letter-spacing: 0; }
      .elementor-widget-woocommerce-cart .e-cart__container {
        display: grid;
        flex-wrap: wrap;
        grid-template-columns: 59% auto;
        /* 59% to match the required design */
        align-items: stretch;
        grid-column-gap: var(--sections-margin, 30px);
        grid-row-gap: var(--sections-margin, 30px); }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-cart .e-cart__container {
          grid-template-columns: repeat(1, 1fr); } }
      .elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container {
        grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart .select2-container {
    margin-bottom: 4px; }
    .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 0px);
      border: none;
      height: 45px; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, initial);
        transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder {
        color: var(--forms-fields-normal-color, #818a91); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered {
        color: var(--forms-fields-normal-color, #818a91);
        line-height: 45px;
        padding-left: 1rem;
        padding-right: 1rem; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow {
        height: 45px; }
    .elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below {
      background-color: #f7f7f7; }
  .elementor-widget-woocommerce-cart .woocommerce {
    font-family: Roboto, sans-serif; }
    .elementor-widget-woocommerce-cart .woocommerce button.button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #818a91);
      border-radius: var(--forms-buttons-border-radius, 3px);
      /* 0.88rem is used here so that this button will match the design layout from Product. */
      padding: var(--forms-buttons-padding, 0.88rem 2rem);
      width: var(--forms-buttons-width, auto);
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-cart .woocommerce button.button:hover {
        color: var(--forms-buttons-hover-text-color, #818a91);
        transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
        border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce button.button.disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled] {
        /* 0.88rem is used here so that this button will match the design layout from Product. */
        padding: var(--forms-buttons-padding, 0.88rem 2rem);
        color: var(--forms-buttons-normal-text-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover {
          background-color: var(--forms-buttons-hover-background-color, #ffffff);
          color: var(--forms-buttons-hover-text-color, #818a91);
          transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
          border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form {
      margin-top: var(--sections-descriptions-spacing, 15px); }
    .elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination {
      color: var(--sections-descriptions-color, #818a91);
      margin-bottom: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td {
      text-align: left !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before {
        width: 100%;
        margin-bottom: 10px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td {
      text-align: right !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td::before {
        content: attr(data-title);
        font-weight: 700;
        float: left; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      text-align: var(--totals-title-alignment, left); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td {
      padding-top: var(--totals-rows-gap-top, 12px);
      padding-bottom: var(--totals-rows-gap-bottom, 9px); }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before,
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount {
        color: var(--totals-color, #818a91);
        font-weight: 700; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td {
      border-top-color: var(--totals-divider-color, #818a91);
      border-top-width: var(--totals-divider-weight, 0); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row {
      margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-cart .woocommerce .product-name a {
      color: var(--product-link-normal-color, #000000); }
      .elementor-widget-woocommerce-cart .woocommerce .product-name a:hover {
        color: var(--product-link-hover-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .form-row {
      padding: 3px 0;
      margin: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .input-text,
    .elementor-widget-woocommerce-cart .woocommerce select {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 3px);
      border: none;
      padding: var(--forms-fields-padding, 16px);
      font-size: 14px; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text:focus,
      .elementor-widget-woocommerce-cart .woocommerce select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, transparent);
        transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce .input-text.qty {
      background-color: transparent;
      color: var(--order-summary-color, #000000);
      border-width: var(--order-summary-quantity-border-weight, 1px);
      border-style: solid;
      border-color: var(--order-summary-quantity-border-color, #D4D4D4);
      border-radius: 3px;
      padding: 1px 2px;
      text-align: left;
      font-size: 14px;
      min-height: 28px;
      max-height: 28px; }
    .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout {
      padding-bottom: 0;
      display: flex;
      flex-direction: column;
      flex-wrap: wrap;
      align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button {
        padding: var(--checkout-button-padding, 15px 1em);
        width: var(--checkout-button-width, auto);
        font-size: 15px;
        text-align: center;
        color: var(--checkout-button-normal-text-color, #ffffff);
        background-color: #5bc0de;
        border-radius: var(--checkout-button-border-radius, 3px);
        min-height: auto;
        margin-bottom: 0; }
        .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover {
          color: var(--checkout-button-hover-text-color, #ffffff);
          background-color: #5bc0de;
          border-color: var(--checkout-button-hover-border-color, #5bc0de);
          transition-duration: var(--checkout-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-cart .woocommerce .remove {
      background: transparent;
      color: var(--order-summary-remove-icon-normal-color, #000000) !important;
      /* need important here because Woo also has !important */
      width: auto; }
      .elementor-widget-woocommerce-cart .woocommerce .remove:hover {
        background: transparent;
        color: var(--order-summary-remove-icon-hover-color, #5bc0de) !important;
        /* need important here because Woo also has !important */ }
    .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals {
      float: none;
      width: 100%; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td {
        padding-left: 0; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td {
        padding-right: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
      float: right;
      width: 100%; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .form-row {
      padding: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
      display: flex; }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
        flex: 2;
        padding-right: 30px; }
        @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
          .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
            padding-right: 0; } }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-end {
        flex: 1; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
          display: block; } }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-cart .woocommerce .coupon {
        margin: var(--sections-margin, 0); }
        .elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code {
          width: 100%;
          margin-right: 0;
          margin-bottom: 15px; }
        .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
          width: 100%; } }
    .elementor-widget-woocommerce-cart .woocommerce table.shop_table {
      border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
        float: left;
        font-size: 14px;
        font-weight: 700; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
          float: none;
          width: 100%; } }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table th {
        border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions {
        padding: 16px 0 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a {
        display: inline-block; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child {
        display: var(--update-cart-automatically-display, table-row); }
    .elementor-widget-woocommerce-cart .woocommerce table.cart {
      margin-bottom: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart img {
        width: 55px;
        height: auto;
        display: block; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-top: var(--order-summary-rows-gap-top, 20px);
        padding-right: 20px;
        padding-bottom: var(--order-summary-rows-gap-bottom, 20px);
        padding-left: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td span {
          color: var(--order-summary-color, #000000);
          font-size: 14px;
          font-weight: 400; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
          border-top-width: var(--order-summary-items-divider-weight, 1px);
          border-top-style: solid;
          border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
          @media (max-width: ELEMENTOR_SCREEN_TABLET_MIN) {
            .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
              border-top-width: 0; } }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove {
          padding-left: 0;
          padding-right: 0; }
      @media (min-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
        .elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td {
          border-top: none; } }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove {
        position: relative; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-name {
        padding-right: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
        border-top-width: var(--order-summary-items-divider-weight, 1px);
        border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
          border-top: none; } }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MIN) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-left: 0;
        padding-right: 0; } }
    @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart {
        padding: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
          padding: 16px 28px; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
            border-top: none; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td {
          padding-left: 0;
          padding-right: 0; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
            padding: 0; } }
    .elementor-widget-woocommerce-cart .woocommerce a {
      color: var(--links-normal-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce a:hover {
        color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      padding-top: 0;
      padding-bottom: 8px;
      padding-left: 0;
      padding-right: 20px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      margin-bottom: var(--sections-title-spacing, 1rem);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      padding-bottom: var(--order-summary-title-spacing, 8px);
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart td::before {
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button::after {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000); }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td, .elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td {
        padding-left: 0; } }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: var(--forms-fields-normal-color, #818a91); }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: var(--forms-fields-focus-color, #818a91);
    border-color: var(--forms-fields-focus-border-color, #818a91);
    transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }

.elementor-widget-woocommerce-my-account {
  font-family: Roboto, sans-serif;
  color: #818a91;
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table {
    border: none;
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    background-color: var(--sections-background-color, #ffffff); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px 3px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,
  .elementor-widget-woocommerce-my-account .e-my-account-tab address {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content {
    border: 0; }
    .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
      padding: 0;
      border: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    margin-bottom: 40px; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads,
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px 3px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content > div > p {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: var(--forms-fields-normal-background-color, #f7f7f7);
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: var(--forms-fields-focus-background-color, #f7f7f7);
      border-color: var(--forms-fields-focus-border-color, initial);
      transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below {
    background-color: var(--forms-fields-normal-background-color, #f7f7f7); }
  .elementor-widget-woocommerce-my-account .woocommerce ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce-message {
    font-size: 14px; }
  .elementor-widget-woocommerce-my-account .woocommerce address {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a:hover {
      color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover {
      background-color: initial; }
    .elementor-widget-woocommerce-my-account .woocommerce a.button:hover {
      background-color: initial; }
  .elementor-widget-woocommerce-my-account .woocommerce em {
    font-size: 12px;
    color: var(--login-messages-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .form-row {
    padding-left: var(--forms-columns-gap-padding-left, 0px);
    padding-right: var(--forms-columns-gap-padding-right, 0px);
    margin-left: var(--forms-columns-gap-margin-left, 0px);
    margin-right: var(--forms-columns-gap-margin-right, 0px);
    margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row label {
      color: var(--forms-labels-color, #818a91);
      margin-bottom: var(--forms-label-spacing, 0px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,
    .elementor-widget-woocommerce-my-account .woocommerce .form-row select {
      color: var(--forms-fields-normal-color, #818a91);
      border-radius: var(--forms-fields-border-radius, 0px);
      padding: var(--forms-fields-padding, 16px);
      background: #f7f7f7;
      border: none;
      font-size: 14px; }
      .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,
      .elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        border-color: var(--forms-fields-focus-border-color, #818a91);
        transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field {
    margin-bottom: 5px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text {
    margin-bottom: 15px;
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword {
    font-size: 12px;
    margin-bottom: 0px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    width: 50%;
    /* 50% to match the design - it would normally be full width */ }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p {
      color: var(--general-text-color, #818a91); }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first {
      width: 100%; }
  .elementor-widget-woocommerce-my-account .woocommerce .login,
  .elementor-widget-woocommerce-my-account .woocommerce .register,
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px);
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .login .button,
    .elementor-widget-woocommerce-my-account .woocommerce .register .button,
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button {
      background: #5bc0de;
      border: none;
      color: var(--forms-buttons-normal-text-color, #ffffff);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: var(--forms-buttons-padding, 12px 32px); }
      .elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover {
        color: var(--forms-buttons-hover-text-color, #ffffff);
        transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3) {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    margin-top: 10px;
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox {
    vertical-align: middle; }
  .elementor-widget-woocommerce-my-account .woocommerce p:last-of-type {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span {
    color: var(--checkboxes-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tr,
  .elementor-widget-woocommerce-my-account .woocommerce td,
  .elementor-widget-woocommerce-my-account .woocommerce th {
    border: none; }
  .elementor-widget-woocommerce-my-account .woocommerce h2,
  .elementor-widget-woocommerce-my-account .woocommerce h3 {
    color: var(--typography-section-titles-color, #000000);
    margin-top: 0;
    margin-bottom: var(--section-title-spacing, 45px);
    font-weight: 400; }
  .elementor-widget-woocommerce-my-account .woocommerce strong {
    color: var(--general-text-color, #000000); }
    .elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label {
      color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta {
    color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .product-quantity {
    font-weight: 400;
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
    float: left;
    width: 25%;
    /* 25% to match the design */ }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul {
      padding-inline-start: 0; }
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li {
        list-style-type: none;
        margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
        display: inline-block;
        width: 100%;
        /* add a Divider between the tabs that is outside of the margins */ }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li::after {
          content: "";
          display: block;
          width: 100%;
          background-color: var(--tabs-divider-color, #818a91);
          height: var(--tabs-divider-weight, 0px);
          position: relative;
          top: calc(var(--tabs-spacing, 2px) / 2); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a {
          color: var(--tabs-active-color, #5bc0de);
          background: #eceeef;
          border-color: var(--tabs-active-border-color, transparent); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
          font-style: normal;
          font-weight: bold;
          font-size: 14px;
          color: var(--tabs-normal-color, #818a91);
          display: block;
          padding: var(--tabs-padding, 12px 20px);
          text-align: var(--tabs-alignment, start);
          background: #f7f7f7;
          border-radius: var(--tabs-border-radius, 0px);
          border-style: var(--tabs-border-type, solid);
          border-color: var(--tabs-border-color, transparent);
          border-width: 0px; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover {
            color: var(--tabs-hover-color, #5bc0de);
            border-color: var(--tabs-hover-border-color, transparent); }
          @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
            .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
              padding: var(--tabs-padding, 10px); } }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard {
          margin-top: 0; }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout {
          margin-bottom: 0; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout::after {
            display: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
    float: right;
    width: 75%;
    /* 75% to match the design */
    padding: 0;
    padding-left: var(--tab-content-spacing, 6%);
    /* 6% to match the design */ }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
        width: 100%;
        padding: var(--tab-content-spacing, 6%) 0 0 0; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper {
      font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type {
      margin-top: 30px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark {
      background-color: transparent;
      font-weight: bold;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child th,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child th {
    border-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th {
    border-top: 0;
    padding-left: 0;
    padding-top: 0;
    padding-bottom: var(--tables-titles-spacing, 9px); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > th,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > th {
    background-color: transparent;
    padding-left: 0;
    padding-top: var(--order-summary-rows-gap-top, 9px);
    padding-bottom: var(--order-summary-rows-gap-bottom, 9px);
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .shop_table {
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table td, .elementor-widget-woocommerce-my-account .woocommerce .shop_table th {
      border-top-style: var(--tables-divider-border-type, solid);
      border-top-width: var(--tables-divider-border-width, 1px);
      border-top-color: var(--tables-divider-border-color, #D4D4D4); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th {
      color: var(--tables-title-color, #000000); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span {
        color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td {
    padding-left: 0;
    color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td {
    border-top: none;
    padding-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .order-again .button {
    background: transparent;
    border: 2px solid #5bc0de;
    border-style: var(--tables-buttons-border-type, solid);
    border-color: var(--tables-buttons-border-color, #5bc0de);
    border-width: 2px;
    border-radius: var(--tables-button-border-radius, 3px);
    vertical-align: middle;
    color: var(--tables-button-normal-text-color, #818a91);
    margin-top: 0;
    margin-bottom: 0;
    padding: var(--tables-button-padding, 12px 32px); }
    .elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover {
      color: var(--tables-button-hover-text-color, #818a91);
      transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .title h3, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3 {
    float: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-Address address, .elementor-widget-woocommerce-my-account .woocommerce-Addresses address {
    padding: var(--sections-padding, 45px 30px 16px 30px); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .edit, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit {
    float: left;
    position: absolute;
    margin-left: var(--edit-link-margin-start, 30px);
    margin-top: var(--edit-link-margin-top, 10px); }
  .elementor-widget-woocommerce-my-account .woocommerce .u-columns {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset {
    border: none;
    padding: 0;
    margin-inline-start: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend {
      font-weight: 700;
      padding: 20px 0;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button {
    background: #5bc0de;
    border: none;
    color: var(--forms-buttons-normal-text-color, #ffffff);
    border-radius: var(--forms-buttons-border-radius, 3px);
    padding: var(--forms-buttons-padding, 12px 32px);
    margin-top: 20px; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover {
      color: var(--forms-buttons-hover-text-color, #ffffff);
      transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-pagination {
    padding: 16px 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-pagination .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td {
    vertical-align: top;
    line-height: unset; }

.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  float: none;
  width: 100%; }
  .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
    display: inline-block; }

.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation {
  display: block; }

.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: block; }
  .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    justify-content: var(--tabs-container-justify-content, space-between); }
    @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
        display: block; } }
    .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
      display: inline-block;
      width: var(--tab-width, 100%);
      padding: 0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);
      margin: 0;
      border-right-color: var(--tabs-divider-color, #818a91);
      border-right-width: var(--tabs-divider-weight, 0px);
      border-right-style: solid; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li::after {
        display: none; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type {
        padding-left: 0; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type {
        padding-right: 0;
        border-right-width: 0; }
      @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
        .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
          margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
          display: inline-block;
          width: 100%; } }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-content {
  float: none;
  width: 100%;
  padding: var(--tab-content-spacing, 50px) 0 0 0; }

/**
 * Specific styling in the Editor.
 */
.elementor-editor-active,
.elementor-editor-preview {
  /**
	 * Prep for the js switching of tabs when in the editor.
	 */
  /**
	 * Disable all but the first 'View' order button as
	 * this is the only order loaded for preview purposes.
	 */ }
  .elementor-editor-active .elementor-widget-container,
  .elementor-editor-preview .elementor-widget-container {
    min-height: 1px; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a {
    pointer-events: none; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button {
    pointer-events: none;
    opacity: .3; }

/**
 * Hide all the other My Account pages' content in the Editor except the first one - dashboard page
 */
.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type) {
  display: none; }

.product .count {
  background-color: inherit; }

.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2 {
  display: none; }

.woocommerce div.product.elementor form.cart div.product-addon {
  flex-basis: 100%;
  flex-shrink: 0; }

.e-sticky-right-column--active {
  position: sticky;
  top: 0; }

.elementor-theme-builder-content-area {
  height: 400px; }

.elementor-location-header:before,
.elementor-location-footer:before {
  content: '';
  display: table;
  clear: both; }

.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post {
  display: block; }

.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid {
  color: #D4D4D4;
  border: none;
  border-top: 1px solid;
  border-bottom: 1px solid;
  padding-top: 10px;
  padding-bottom: 10px; }

.elementor-post-navigation-borders-yes .elementor-post-navigation__separator {
  height: 100%;
  width: 1px;
  margin: 0 auto;
  background-color: #D4D4D4; }

.elementor-post-navigation {
  overflow: hidden;
  display: flex; }
  .elementor-post-navigation .post-navigation__arrow-wrapper {
    color: #D4D4D4; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev {
      font-size: 30px;
      padding-right: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next {
      font-size: 30px;
      padding-left: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper i {
      transform: translateY(-5%); }
  .elementor-post-navigation .elementor-post-navigation__link__prev, .elementor-post-navigation .elementor-post-navigation__link__next {
    overflow: hidden; }
  .elementor-post-navigation .elementor-post-navigation__link a {
    display: flex;
    align-items: center;
    max-width: 100%; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__next--label {
    text-transform: uppercase;
    font-size: 0.8em; }
  .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--title {
    font-size: 0.7em; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--label, .elementor-post-navigation .post-navigation__next--title {
    overflow: hidden;
    text-overflow: ellipsis; }
  .elementor-post-navigation span.elementor-post-navigation__link__next {
    text-align: right; }
  .elementor-post-navigation span.elementor-post-navigation__link__next, .elementor-post-navigation span.elementor-post-navigation__link__prev {
    display: flex;
    flex-direction: column; }

.elementor-post-navigation .elementor-grid {
  justify-content: space-between; }

.elementor-post-navigation .elementor-post-navigation__link {
  width: calc( 50% - ( 1px / 2 ));
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis; }

.elementor-post-navigation .elementor-post-navigation__separator-wrapper {
  text-align: center; }

.elementor-post-navigation .elementor-post-navigation__next {
  text-align: right; }
  .elementor-post-navigation .elementor-post-navigation__next a {
    float: right; }

.elementor-search-form {
  display: block;
  transition: 0.2s;
  /*------ Reset ------*/ }
  .elementor-search-form .e-font-icon-svg-container {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center; }
  .elementor-search-form input[type="search"], .elementor-search-form button {
    margin: 0;
    border: 0;
    padding: 0;
    display: inline-block;
    vertical-align: middle;
    white-space: normal;
    background: none;
    line-height: 1;
    min-width: 0;
    font-size: 15px;
    -webkit-appearance: none;
    -moz-appearance: none; }
    .elementor-search-form input[type="search"]:focus, .elementor-search-form button:focus {
      outline: 0;
      color: inherit; }
  .elementor-search-form button {
    background-color: #818a91;
    font-size: var(--e-search-form-submit-icon-size, 16px);
    color: #fff;
    border-radius: 0; }
  .elementor-search-form__container {
    display: flex;
    transition: 0.2s;
    overflow: hidden;
    border: 0 solid transparent;
    min-height: 50px; }
    .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      background: #eceeef; }
  .elementor-search-form__input {
    flex-basis: 100%;
    color: #55595c;
    transition: color 0.2s; }
    .elementor-search-form__input::-webkit-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-ms-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
  .elementor-search-form__submit {
    transition: color 0.2s, background 0.2s;
    font-size: var(--e-search-form-submit-icon-size, 16px); }
    .elementor-search-form__submit svg {
      fill: var(--e-search-form-submit-text-color, #fff);
      width: var(--e-search-form-submit-icon-size, 16px);
      height: var(--e-search-form-submit-icon-size, 16px); }
  .elementor-search-form .elementor-search-form__submit, .elementor-search-form .elementor-search-form__submit:hover {
    color: var(--e-search-form-submit-text-color, #fff);
    border: none;
    border-radius: 0; }
  .elementor-search-form--button-type-text .elementor-search-form__submit {
    flex-shrink: 0; }
  .elementor-search-form--skin-minimal .elementor-search-form__icon {
    opacity: 0.6;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    color: #55595c;
    fill: #55595c;
    font-size: var(--e-search-form-icon-size-minimal, 15px); }
    .elementor-search-form--skin-minimal .elementor-search-form__icon svg {
      width: var(--e-search-form-icon-size-minimal, 15px);
      height: var(--e-search-form-icon-size-minimal, 15px); }
  .elementor-search-form--skin-full_screen .elementor-search-form input[type="search"].elementor-search-form__input {
    font-size: 50px;
    text-align: center;
    border-style: solid;
    border-width: 0 0 1px 0;
    border-color: #fff;
    line-height: 1.5;
    color: #fff; }
  .elementor-search-form--skin-full_screen .elementor-search-form__toggle {
    display: inline-block;
    cursor: pointer;
    vertical-align: middle;
    color: var(--e-search-form-toggle-color, #494c4f);
    font-size: var(--e-search-form-toggle-size, 33px); }
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle i,
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container {
      position: relative;
      display: block;
      transition: 0.2s;
      width: var(--e-search-form-toggle-size, 33px);
      height: var(--e-search-form-toggle-size, 33px);
      background-color: var(--e-search-form-toggle-background-color, rgba(0, 0, 0, 0.05));
      border-style: solid;
      border-color: var(--e-search-form-toggle-color, #494c4f);
      border-width: var(--e-search-form-toggle-border-width, 0);
      border-radius: var(--e-search-form-toggle-border-radius, 3px); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before {
        font-size: var(--e-search-form-toggle-icon-size, 0.55em); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        fill: var(--e-search-form-toggle-color, #494c4f);
        width: var(--e-search-form-toggle-icon-size, 0.55em);
        height: var(--e-search-form-toggle-icon-size, 0.55em); }
  .elementor-search-form--skin-full_screen .elementor-search-form__container {
    transition: 0.3s;
    align-items: center;
    position: fixed;
    z-index: 9998;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    height: 100vh;
    padding: 0 15%;
    background-color: rgba(0, 0, 0, 0.8); }
    .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      overflow: hidden;
      opacity: 0;
      transform: scale(0); }
      .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button {
        display: none; }

.elementor-author-box {
  display: flex;
  align-items: center; }
  .elementor-author-box__avatar {
    flex-shrink: 0;
    margin-right: 25px; }
    .elementor-author-box__avatar img {
      width: 100px;
      border-radius: 500px;
      object-fit: cover; }
  .elementor-author-box__text {
    flex-grow: 1;
    font-size: 17px; }
  .elementor-author-box__name {
    font-size: 24px;
    margin-bottom: 5px; }
  .elementor-author-box__bio {
    margin-bottom: 0.8em; }
    .elementor-author-box__bio p {
      margin-bottom: 0.8em; }
      .elementor-author-box__bio p:last-of-type {
        margin-bottom: 0; }
  .elementor-author-box--layout-image-left .elementor-author-box {
    flex-direction: row; }
    .elementor-author-box--layout-image-left .elementor-author-box__avatar {
      margin-left: 0;
      margin-right: 25px; }
  .elementor-author-box--layout-image-right .elementor-author-box {
    flex-direction: row-reverse; }
    .elementor-author-box--layout-image-right .elementor-author-box__avatar {
      margin-right: 0;
      margin-left: 25px; }
  .elementor-author-box--layout-image-above .elementor-author-box {
    display: block; }
    .elementor-author-box--layout-image-above .elementor-author-box__avatar {
      margin: 0 auto 15px;
      display: inline-block; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar {
    margin-left: 0; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar {
    margin-right: 0; }
  .elementor-author-box--align-left .elementor-author-box {
    text-align: left; }
  .elementor-author-box--align-right .elementor-author-box {
    text-align: right; }
  .elementor-author-box--align-center .elementor-author-box {
    text-align: center; }

.elementor-button.elementor-author-box__button {
  border: solid 2px #55595c;
  font-size: 15px;
  font-weight: 100;
  padding: 10px 18px; }
  .elementor-button.elementor-author-box__button, .elementor-button.elementor-author-box__button:hover {
    background: transparent;
    color: #55595c; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar {
  align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar {
  align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar {
  align-self: center; }

.elementor-post-info__terms-list {
  display: inline-block; }

.elementor-post-info .elementor-icon-list-icon .elementor-avatar {
  border-radius: 100%; }

.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after {
  margin: initial; }

.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text {
  display: inline-block; }
  .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a, .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span {
    display: inline; }

.elementor-widget-breadcrumbs {
  font-size: 0.85em; }
  .elementor-widget-breadcrumbs p {
    margin-bottom: 0; }

.elementor-sitemap-wrap {
  display: flex;
  flex-flow: row wrap; }

.elementor-sticky--active {
  z-index: 99; }

[data-elementor-type="popup"]:not(.elementor-edit-area) {
  display: none; }

[data-elementor-type="popup"] .elementor-section-wrap:not(:empty) + #elementor-add-new-section {
  display: none; }

.elementor-popup-modal {
  display: flex;
  pointer-events: none;
  background-color: transparent;
  user-select: auto; }
  .elementor-popup-modal .dialog-header, .elementor-popup-modal .dialog-buttons-wrapper {
    display: none; }
  .elementor-popup-modal .dialog-close-button {
    display: none;
    top: 20px;
    margin-top: 0;
    right: 20px;
    opacity: 1;
    z-index: 9999;
    pointer-events: all; }
    .elementor-popup-modal .dialog-close-button svg {
      fill: #373a3c;
      height: 1em;
      width: 1em; }
  .elementor-popup-modal .dialog-widget-content {
    width: initial;
    overflow: visible;
    max-width: 100%;
    max-height: 100%;
    border-radius: 0;
    box-shadow: none;
    pointer-events: all; }
  .elementor-popup-modal .dialog-message {
    width: 640px;
    max-width: 100vw;
    max-height: 100vh;
    padding: 0;
    overflow: auto;
    display: flex; }
  .elementor-popup-modal .elementor {
    width: 100%; }

.elementor-motion-effects-element, .elementor-motion-effects-layer {
  transition-property: transform, opacity;
  transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
  transition-duration: 1s; }

.elementor-motion-effects-container {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); }

.elementor-motion-effects-layer {
  position: absolute;
  top: 0;
  left: 0;
  background-repeat: no-repeat;
  background-size: cover; }

.elementor-motion-effects-perspective {
  perspective: 1200px; }
assets/css/templates/frontend-lite-rtl.min.css000064400000372011150755004320015506 0ustar00.elementor-bg-transform .elementor-bg{will-change:transform}.elementor-bg-transform-zoom-in:hover .elementor-bg,.elementor-bg-transform-zoom-out .elementor-bg{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.elementor-bg-transform-zoom-out:hover .elementor-bg{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-bg-transform-move-left .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-left:hover .elementor-bg,.elementor-bg-transform-move-right .elementor-bg{-webkit-transform:scale(1.2) translateX(-8%);-ms-transform:scale(1.2) translateX(-8%);transform:scale(1.2) translateX(-8%)}.elementor-bg-transform-move-right:hover .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-up .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-bg-transform-move-down .elementor-bg,.elementor-bg-transform-move-up:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(-8%);-ms-transform:scale(1.2) translateY(-8%);transform:scale(1.2) translateY(-8%)}.elementor-bg-transform-move-down:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-animated-content{--translate:0,0}.elementor-animated-content:hover .elementor-animated-item--grow{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.elementor-animated-content:hover .elementor-animated-item--shrink{-webkit-transform:scale(.85);-ms-transform:scale(.85);transform:scale(.85)}.elementor-animated-content:hover .elementor-animated-item--shrink-contained{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content:hover .elementor-animated-item--enter-zoom-in,.elementor-animated-content:hover .elementor-animated-item--enter-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-in{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in,.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-out{opacity:0}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content:hover .elementor-animated-item--enter-from-bottom,.elementor-animated-content:hover .elementor-animated-item--enter-from-left,.elementor-animated-content:hover .elementor-animated-item--enter-from-right,.elementor-animated-content:hover .elementor-animated-item--enter-from-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content:hover .elementor-animated-item--exit-to-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom{-webkit-transform:translateY(600px);-ms-transform:translateY(600px);transform:translateY(600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom,.elementor-animated-content:hover .elementor-animated-item--exit-to-left,.elementor-animated-content:hover .elementor-animated-item--exit-to-right,.elementor-animated-content:hover .elementor-animated-item--exit-to-top{opacity:0}.elementor-animated-content:hover .elementor-animated-item--move-right{-webkit-transform:translateX(30px);-ms-transform:translateX(30px);transform:translateX(30px)}.elementor-animated-content:hover .elementor-animated-item--move-left{-webkit-transform:translateX(-30px);-ms-transform:translateX(-30px);transform:translateX(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-up{-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-down{-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px)}.elementor-animated-content:hover .elementor-animated-item--move-contained-right{--translate:8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-left{--translate:-8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-top{--translate:0,-8%}.elementor-animated-content:hover .elementor-animated-item--move-contained-bottom{--translate:0,8%}.elementor-animated-content [class^=elementor-animated-item]{will-change:transform,opacity}.elementor-animated-content .elementor-animated-item--shrink-contained{-webkit-transform:scale(1.17);-ms-transform:scale(1.17);transform:scale(1.17)}.elementor-animated-content .elementor-animated-item--enter-zoom-in{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content .elementor-animated-item--enter-zoom-out{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content .elementor-animated-item--enter-zoom-in,.elementor-animated-content .elementor-animated-item--enter-zoom-out,.elementor-animated-content .elementor-animated-item--fade-in{opacity:0}.elementor-animated-content .elementor-animated-item--exit-zoom-in,.elementor-animated-content .elementor-animated-item--exit-zoom-out,.elementor-animated-content .elementor-animated-item--fade-out{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content .elementor-animated-item--enter-from-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content .elementor-animated-item--enter-from-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content .elementor-animated-item--enter-from-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom{-webkit-transform:translateY(500px);-ms-transform:translateY(500px);transform:translateY(500px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom,.elementor-animated-content .elementor-animated-item--enter-from-left,.elementor-animated-content .elementor-animated-item--enter-from-right,.elementor-animated-content .elementor-animated-item--enter-from-top{opacity:0}.elementor-animated-content .elementor-animated-item--exit-to-bottom,.elementor-animated-content .elementor-animated-item--exit-to-left,.elementor-animated-content .elementor-animated-item--exit-to-right,.elementor-animated-content .elementor-animated-item--exit-to-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content .elementor-animated-item--move-contained-bottom,.elementor-animated-content .elementor-animated-item--move-contained-left,.elementor-animated-content .elementor-animated-item--move-contained-right,.elementor-animated-content .elementor-animated-item--move-contained-top{-webkit-transform:scale(1.2) translate(var(--translate));-ms-transform:scale(1.2) translate(var(--translate));transform:scale(1.2) translate(var(--translate))}.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover{outline:1px solid #fec449}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings{background-image:-webkit-gradient(linear,left bottom,left top,from(#feb416),to(#fec449));background-image:-webkit-linear-gradient(bottom,#feb416,#fec449);background-image:-o-linear-gradient(bottom,#feb416,#fec449);background-image:linear-gradient(0deg,#feb416,#fec449)}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover{background-color:#feb416}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save{display:none}body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;width:100%;padding:0}body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;padding:0}.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form){margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .quantity .qty{vertical-align:top;margin-left:0}.woocommerce div.product.elementor .quantity+.button{margin-right:10px}.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input{height:100%}.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:0}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:0}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:0}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button{background-color:#5bc0de}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button{background-color:#5cb85c}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button{background-color:#f0ad4e}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button{background-color:#d9534f}.elementor-widget-wc-add-to-cart .quantity{display:inline-block}.elementor-widget-wc-add-to-cart.elementor-align-center form.cart{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-wc-add-to-cart.elementor-align-left form.cart,.elementor-widget-wc-add-to-cart.elementor-align-right form.cart{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor ul.tabs:before{position:static;content:none;width:auto;bottom:auto;left:auto;border-bottom:0;z-index:auto}.woocommerce div.product.elementor ul.tabs{margin:0}.woocommerce div.product.elementor ul.tabs li{padding:0}.woocommerce div.product.elementor ul.tabs li a{padding:.8em 1.2em;line-height:1}.woocommerce div.product.elementor ul.tabs li:after,.woocommerce div.product.elementor ul.tabs li:before{border:0;position:static;bottom:auto;width:auto;height:auto;content:none;-webkit-box-sizing:border-box;box-sizing:border-box}.woocommerce div.product.elementor .woocommerce-tabs .panel{padding:20px;border-radius:0;border-width:0;border-top:1px solid #d3ced2;-webkit-box-shadow:none;box-shadow:none;margin:-1px 0 0}.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins{display:block}.elementor-widget-woocommerce-product-meta .detail-container{position:relative}.elementor-widget-woocommerce-product-meta .detail-container:after{position:absolute;bottom:0;left:0;width:100%}.elementor-widget-woocommerce-product-meta .detail-label{font-weight:700}.elementor-woo-meta--view-inline .product_meta{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-woo-meta--view-inline .product_meta .detail-container:after{width:auto;left:auto;right:auto;position:absolute;height:100%;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;left:-8px}.elementor-woo-meta--view-table .product_meta{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-woo-meta--view-table .product_meta,.elementor-woo-meta--view-table .product_meta .detail-container{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-woo-meta--view-table .product_meta .detail-label{min-width:108px}.elementor-woo-meta--view-stacked .product_meta .detail-container{display:block}.woocommerce div.product.elementor .woocommerce-product-rating{margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.woocommerce div.product.elementor .star-rating{margin-top:0}.elementor-product-rating--align-left .woocommerce-product-rating{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-product-rating--align-right .woocommerce-product-rating{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-product-rating--align-center .woocommerce-product-rating{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link{margin-right:auto}.elementor-products-grid ul.products.elementor-grid{display:grid;margin:0;grid-column-gap:20px;grid-row-gap:40px}.elementor-products-grid ul.products.elementor-grid:after,.elementor-products-grid ul.products.elementor-grid:before{content:none;display:none}.elementor-products-grid ul.products.elementor-grid li.product{width:auto;padding:0;margin:0;float:none}.elementor-products-grid ul.products.elementor-grid li.product .onsale{padding:0;display:none}.elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link{display:block;position:relative}.elementor-products-grid:not(.show-heading-yes) .products>h2{display:none}.elementor-products-grid nav.woocommerce-pagination{margin-top:40px}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul{border:0}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li{border-right:0;border-left:0}.elementor-product-loop-item--align-left ul.products li.product .star-rating{margin-right:auto}.elementor-product-loop-item--align-right ul.products li.product .star-rating{margin-left:auto}.elementor-product-loop-item--align-center ul.products li.product .star-rating{margin-right:auto;margin-left:auto}.woocommerce .elementor-element.elementor-products-grid ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product{width:auto}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT){.elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products{grid-template-columns:repeat(2,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products{grid-template-columns:repeat(3,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products{grid-template-columns:repeat(4,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products{grid-template-columns:repeat(5,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products{grid-template-columns:repeat(6,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products{grid-template-columns:repeat(7,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products{grid-template-columns:repeat(8,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products{grid-template-columns:repeat(9,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products{grid-template-columns:repeat(10,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products{grid-template-columns:repeat(11,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(3,1fr)}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(2,1fr)}}.elementor.product .woocommerce-product-gallery__trigger+.woocommerce-product-gallery__wrapper{overflow:hidden}.woocommerce .elementor-widget-woocommerce-product-images span.onsale{padding:0}.elementor-menu-cart__wrapper{text-align:var(--main-alignment,right)}.elementor-menu-cart__toggle_wrapper{display:inline-block;position:relative}.elementor-menu-cart__toggle{display:inline-block}.elementor-menu-cart__toggle .elementor-button{background-color:var(--toggle-button-background-color,transparent);color:var(--toggle-button-text-color,#818a91);border:var(--toggle-button-border-width,1px) var(--toggle-button-border-type,solid) var(--toggle-button-border-color,#818a91);border-radius:var(--toggle-button-border-radius,0);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--toggle-icon-padding,12px 24px)}.elementor-menu-cart__toggle .elementor-button:hover{color:var(--toggle-button-hover-text-color,#818a91);background-color:var(--toggle-button-hover-background-color,transparent);border-color:var(--toggle-button-hover-border-color,#818a91)}.elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon{color:var(--toggle-button-icon-hover-color,#818a91)}.elementor-menu-cart__toggle .elementor-button-text{margin-left:.3em}.elementor-menu-cart__toggle .elementor-button-icon{position:relative;-webkit-transition:color .1s;-o-transition:color .1s;transition:color .1s;color:var(--toggle-button-icon-color,#818a91);font-size:var(--toggle-icon-size,inherit)}.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:block;position:absolute;min-width:1.6em;height:1.6em;line-height:1.5em;top:-.7em;left:-.7em;border-radius:100%;color:var(--items-indicator-text-color,#fff);background-color:var(--items-indicator-background-color,#d9534f);text-align:center;font-size:10px}.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:inline-block;font-weight:400}.elementor-menu-cart__container{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);overflow:hidden;position:fixed;z-index:9998;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,.25);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s;text-align:right}.elementor-menu-cart__main{position:fixed;left:var(--side-cart-alignment-left,0);right:var(--side-cart-alignment-right,auto);-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);top:0;bottom:0;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;font-size:14px;min-height:200px;width:350px;max-width:100%;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;padding:var(--cart-padding,20px 30px);background-color:var(--cart-background-color,#fff);-webkit-box-shadow:0 0 20px rgba(0,0,0,.2);box-shadow:0 0 20px rgba(0,0,0,.2);border-style:var(--cart-border-style,none);border-color:var(--cart-border-color,initial);border-radius:var(--cart-border-radius,0);margin-top:var(--mini-cart-spacing,0)}.elementor-menu-cart__main,.elementor-menu-cart__main .widget_shopping_cart_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-menu-cart__main .widget_shopping_cart_content{height:100%}.elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message{color:var(--empty-message-color,inherit);text-align:var(--empty-message-alignment,right)}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{background-color:transparent;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button{display:none}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{overflow:hidden;opacity:0;-webkit-transform:var(--side-cart-alignment-transform,translateX(-100%));-ms-transform:var(--side-cart-alignment-transform,translateX(-100%));transform:var(--side-cart-alignment-transform,translateX(-100%))}.elementor-menu-cart__close-button{width:var(--cart-close-icon-size,25px);height:var(--cart-close-icon-size,25px);position:relative;margin:0 0 20px;-ms-flex-item-align:end;align-self:flex-end;cursor:pointer;display:inline-block;font-family:eicons;font-size:20px;line-height:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:after,.elementor-menu-cart__close-button:before{content:"";position:absolute;height:3px;width:100%;top:50%;left:0;margin-top:-1px;background:var(--cart-close-button-color,#818a91);border-radius:1px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:hover:after,.elementor-menu-cart__close-button:hover:before{background:var(--cart-close-button-hover-color,#818a91)}.elementor-menu-cart__close-button:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__close-button:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__products{max-height:calc(100vh - 250px);overflow:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.elementor-menu-cart__product{display:grid;grid-template-columns:28% auto;grid-template-rows:var(--price-quantity-position--grid-template-rows,auto auto);position:relative;border-width:0;border-bottom:var(--divider-width,1px) var(--divider-style,solid) var(--divider-color,#d4d4d4)}.elementor-menu-cart__product .variation{display:grid;grid-template-columns:-webkit-max-content auto;grid-template-columns:max-content auto;margin:10px 0}.elementor-menu-cart__product .variation dt{grid-column-start:1}.elementor-menu-cart__product .variation dd{grid-column-start:2;-webkit-margin-start:5px;margin-inline-start:5px}.elementor-menu-cart__product .variation dd p{margin-bottom:0}.elementor-menu-cart__product-image{grid-row-start:1;grid-row-end:3;width:100%}.elementor-menu-cart__product-image a,.elementor-menu-cart__product-image img{display:block}.elementor-menu-cart__product-name{grid-column-start:2;grid-column-end:3;margin:0}.elementor-menu-cart__product-name a{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-price{grid-column-start:2;grid-column-end:3;-ms-flex-item-align:var(--price-quantity-position--align-self,end);align-self:var(--price-quantity-position--align-self,end);font-weight:300;color:var(--product-price-color,#d4d4d4)}.elementor-menu-cart__product-name,.elementor-menu-cart__product-price{font-size:14px;padding-right:20px}.elementor-menu-cart__product-remove{color:#818a91;width:var(--remove-item-button-size,22px);height:var(--remove-item-button-size,22px);border-radius:var(--remove-item-button-size,22px);border:1px solid var(--remove-item-button-color,#d4d4d4);text-align:center;overflow:hidden;position:absolute;left:0;bottom:20px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:hover{border:1px solid var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:hover:after,.elementor-menu-cart__product-remove:hover:before{background:var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:after,.elementor-menu-cart__product-remove:before{content:"";position:absolute;height:1px;width:50%;top:50%;left:25%;margin-top:-1px;background:var(--remove-item-button-color,#d4d4d4);z-index:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__product-remove:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__product-remove>a{display:block;z-index:2;width:100%;height:100%;overflow:hidden;opacity:0;position:absolute}.elementor-menu-cart__product-remove>a.remove_from_cart_button{display:var(--remove-from-cart-button,block)}.elementor-menu-cart__product-remove>a.elementor_remove_from_cart_button{display:var(--elementor-remove-from-cart-button,none)}.elementor-menu-cart__product:last-child{border:none}.elementor-menu-cart__footer-buttons,.elementor-menu-cart__product:not(:first-of-type),.elementor-menu-cart__subtotal{padding-top:var(--product-divider-gap,20px)}.elementor-menu-cart__product{padding-left:30px}.elementor-menu-cart__product,.elementor-menu-cart__subtotal{padding-bottom:var(--product-divider-gap,20px)}.elementor-menu-cart__subtotal{font-size:20px;text-align:var(--menu-cart-subtotal-text-align,center);font-weight:600;color:var(--menu-cart-subtotal-color,inherit);border-left:var(--subtotal-divider-left-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-bottom:var(--subtotal-divider-bottom-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-right:var(--subtotal-divider-right-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-top:var(--subtotal-divider-top-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4)}.elementor-menu-cart__footer-buttons{font-size:20px;text-align:var(--cart-footer-buttons-alignment-text-align,center);display:var(--cart-footer-buttons-alignment-display,grid);grid-template-columns:var(--cart-footer-layout,1fr 1fr);margin-top:var(--cart-buttons-position-margin,0);grid-column-gap:var(--space-between-buttons,10px);grid-row-gap:var(--space-between-buttons,10px)}.elementor-menu-cart__footer-buttons .elementor-button{display:inline-block;border-radius:var(--cart-footer-buttons-border-radius,0);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.elementor-menu-cart__footer-buttons .elementor-button--view-cart{display:var(--view-cart-button-display,inline-block);color:var(--view-cart-button-text-color,#fff);padding:var(--view-cart-button-padding,15px);background-color:var(--view-cart-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover{color:var(--view-cart-button-hover-text-color,#fff);background-color:var(--view-cart-button-hover-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout{display:var(--checkout-button-display,inline-block);color:var(--checkout-button-text-color,#fff);padding:var(--checkout-button-padding,15px);background-color:var(--checkout-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:var(--checkout-button-hover-background-color,#818a91)}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-menu-cart__footer-buttons .elementor-button{padding-left:10px;padding-right:10px}}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text{display:none}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before{content:none}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e3"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e4"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e5"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e6"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e7"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e8"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e9"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8ea"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8eb"}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product{padding-left:0;padding-right:0;grid-template-columns:25% auto}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove{display:none}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove{top:0;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove{top:20px;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove{-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);bottom:50%}.elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove{top:auto;bottom:20px}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{position:absolute;z-index:89;width:auto;height:auto;overflow:visible;top:100%;bottom:auto;background:none;min-width:330px;right:0;left:auto;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main{width:auto;height:auto;position:relative;top:auto;bottom:auto;right:auto;left:auto;overflow:visible;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{min-width:300px}}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{opacity:0;-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px)}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown{opacity:1}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container{z-index:9998}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart{z-index:89}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container{display:none}.elementor-widget-woocommerce-checkout-page{background-color:transparent;font-family:Roboto,sans-serif;font-size:14px;line-height:21px;color:#818a91}.elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container{grid-template-columns:auto}.elementor-widget-woocommerce-checkout-page ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page table tbody tr:hover>td,.elementor-widget-woocommerce-checkout-page table tbody tr:hover>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .e-description{color:var(--sections-descriptions-color,#818a91);padding-bottom:var(--sections-descriptions-spacing,0);font-size:14px;font-weight:400}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section{margin-bottom:24px}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title{text-align:var(--login-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge{margin-top:var(--sections-secondary-title-spacing,24px);margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor{margin-top:var(--sections-secondary-title-spacing,24px)}.elementor-widget-woocommerce-checkout-page .e-coupon-box{margin-top:24px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .e-login-wrap-start{-webkit-box-flex:75%;-ms-flex:75%;flex:75%}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{-webkit-box-flex:20%;-ms-flex:20%;flex:20%;text-align:left}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:block}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{text-align:right;margin-top:15px}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label{display:none}}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{margin-bottom:0;font-size:12px}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{font-size:11px}}.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:90%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:auto}}.elementor-widget-woocommerce-checkout-page .e-checkout__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:56% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,24px);grid-row-gap:var(--sections-margin,24px)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .e-checkout__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title{color:var(--sections-secondary-title-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge{text-align:var(--coupon-title-alignment,right)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address{margin-top:13px;padding-right:var(--shipping-heading-padding-start,30px)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address span{font-weight:400}.elementor-widget-woocommerce-checkout-page a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row{padding-left:var(--forms-columns-gap-padding,0);padding-right:var(--forms-columns-gap-padding,0);margin-left:var(--forms-columns-gap-margin,0);margin-right:var(--forms-columns-gap-margin,0)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);font-size:14px;border:none;font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-checkout-page .woocommerce .create-account,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row{margin-bottom:0!important}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input,.elementor-widget-woocommerce-checkout-page .woocommerce .input-radio{vertical-align:middle}.elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span{position:relative;top:2px;color:var(--sections-checkboxes-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label,.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{display:inline}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#6f6f6f);border-radius:var(--forms-buttons-border-radius,3px);padding:1rem;border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover{color:var(--forms-buttons-hover-text-color,#6f6f6f);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{margin-right:1%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{width:100%;margin-right:0;margin-bottom:15px}}.elementor-widget-woocommerce-checkout-page .woocommerce-info{border-top-color:transparent;background-color:transparent;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p{font-weight:400;font-size:12px}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info{font-weight:400;margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,.elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment{background:var(--sections-background-color,#fff);border-radius:var(--sections-border-radius,3px);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 24px 0);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{display:var(--additional-information-display,none)}@media (min-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text{color:var(--sections-messages-color,#818a91);font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p{margin-top:25px}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1{margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2{padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading{text-align:var(--order-review-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table{margin-bottom:0;border:0;font-size:14px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th{padding-top:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td{color:#000}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity{font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th{color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr{border:0;padding-left:0;padding-bottom:15px;padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr{padding-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td{font-weight:400;color:var(--order-summary-items-color,#000);border-bottom:var(--order-summary-items-divider-weight,0) solid var(--order-summary-items-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name{padding-left:40px;max-width:150px}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total{vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th{padding-top:var(--order-summary-rows-gap-top,15px);padding-bottom:var(--order-summary-rows-gap-bottom,15px)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th{color:var(--order-summary-totals-color,#818a91);vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th{border-top:var(--order-summary-totals-divider-weight,0) solid var(--order-summary-totals-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td{max-width:70px}.elementor-widget-woocommerce-checkout-page .woocommerce h3{font-size:14px;font-weight:700;margin-top:0;margin-bottom:var(--sections-title-spacing,30px);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row>span{font-weight:400;font-size:14px;margin-bottom:3px;color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:48%}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3{text-align:var(--billing-details-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row{margin-bottom:var(--forms-rows-gap,5px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child{margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login{margin-top:-8px;z-index:999;background:#fff;border-top-width:0;position:relative;margin-bottom:0;color:#818a91}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:100%}}.elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:85%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:35%}}.elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3{background:var(--additional-fields-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address{margin-bottom:var(--sections-margin,20px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment{margin-top:24px;padding:15px 25px 25px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods{border-bottom:none;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li{line-height:21px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{padding-right:15px;font-size:12px}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{float:none;font-size:11px;padding-left:10px}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img{width:55px}}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0;margin-bottom:0;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order{background-color:#5bc0de;width:var(--purchase-button-width,auto);float:none;color:var(--purchase-button-normal-text-color,#fff);min-height:auto;padding:var(--purchase-button-padding,1em 1em);border-radius:var(--purchase-button-border-radius,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover{background-color:#5bc0de;color:var(--purchase-button-hover-text-color,#fff);border-color:var(--purchase-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--purchase-button-hover-transition-duration,.3s);-o-transition-duration:var(--purchase-button-hover-transition-duration,.3s);transition-duration:var(--purchase-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2{width:auto;float:none}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:grid;grid-template-columns:auto auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:left}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:right}}.elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field{margin-bottom:10px}.elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000);font-size:14px;font-style:normal;text-transform:none;letter-spacing:normal;text-decoration:none;line-height:21px}.e-woo-select2-wrapper .select2-results__option,.e-woo-select2-wrapper .select2-results__option:focus{color:#818a91}.elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart table tbody tr:hover>td,.elementor-widget-woocommerce-cart table tbody tr:hover>th{background-color:inherit}.elementor-widget-woocommerce-cart .e-clear{overflow:hidden;height:0;width:0}.elementor-widget-woocommerce-cart .e-cart-section{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 30px 0);border-radius:var(--sections-border-radius,3px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4)}@media (min-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .e-cart-section:last-child{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-cart .e-cart-content{color:var(--sections-descriptions-color,#818a91);font-size:15px;font-weight:400;line-height:23px;letter-spacing:0}.elementor-widget-woocommerce-cart .e-cart__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:59% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,30px);grid-row-gap:var(--sections-margin,30px)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .e-cart__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart .select2-container{margin-bottom:4px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-right:1rem;padding-left:1rem}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-cart .woocommerce{font-family:Roboto,sans-serif}.elementor-widget-woocommerce-cart .woocommerce button.button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#818a91);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,.88rem 2rem);width:var(--forms-buttons-width,auto);border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button:hover{color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]{padding:var(--forms-buttons-padding,.88rem 2rem);color:var(--forms-buttons-normal-text-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover{background-color:var(--forms-buttons-hover-background-color,#fff);color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li input{vertical-align:middle}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form{margin-top:var(--sections-descriptions-spacing,15px)}.elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination{color:var(--sections-descriptions-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th{display:none}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td{text-align:right!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before{width:100%;margin-bottom:10px}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td{text-align:left!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td:before{content:attr(data-title);font-weight:700;float:right}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{text-align:var(--totals-title-alignment,right)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td{padding-top:var(--totals-rows-gap-top,12px);padding-bottom:var(--totals-rows-gap-bottom,9px)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before{color:var(--totals-color,#818a91);font-weight:700}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td{border-top-color:var(--totals-divider-color,#818a91);border-top-width:var(--totals-divider-weight,0)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row{margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-cart .woocommerce .product-name a{color:var(--product-link-normal-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .product-name a:hover{color:var(--product-link-hover-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .form-row{padding:3px 0;margin:0}.elementor-widget-woocommerce-cart .woocommerce .input-text,.elementor-widget-woocommerce-cart .woocommerce select{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,3px);border:none;padding:var(--forms-fields-padding,16px);font-size:14px}.elementor-widget-woocommerce-cart .woocommerce .input-text::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,.elementor-widget-woocommerce-cart .woocommerce select::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus,.elementor-widget-woocommerce-cart .woocommerce select:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,transparent);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-webkit-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-moz-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-ms-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text.qty{background-color:transparent;color:var(--order-summary-color,#000);border:var(--order-summary-quantity-border-weight,1px) solid var(--order-summary-quantity-border-color,#d4d4d4);border-radius:3px;padding:1px 2px;text-align:right;font-size:14px;min-height:28px;max-height:28px}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout{padding-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button{padding:var(--checkout-button-padding,15px 1em);width:var(--checkout-button-width,auto);font-size:15px;text-align:center;color:var(--checkout-button-normal-text-color,#fff);background-color:#5bc0de;border-radius:var(--checkout-button-border-radius,3px);min-height:auto;margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:#5bc0de;border-color:var(--checkout-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--checkout-button-hover-transition-duration,.3s);-o-transition-duration:var(--checkout-button-hover-transition-duration,.3s);transition-duration:var(--checkout-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .remove{background:transparent;color:var(--order-summary-remove-icon-normal-color,#000)!important;width:auto}.elementor-widget-woocommerce-cart .woocommerce .remove:hover{background:transparent;color:var(--order-summary-remove-icon-hover-color,#5bc0de)!important}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals{float:none;width:100%}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td{padding-left:0}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{float:left;width:100%}.elementor-widget-woocommerce-cart .woocommerce .coupon .form-row{padding:0}.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{-webkit-box-flex:2;-ms-flex:2;flex:2;padding-left:30px}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{padding-left:0}}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-end{-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:block}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce .coupon{margin:var(--sections-margin,0)}.elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code{width:100%;margin-left:0;margin-bottom:15px}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:right;font-size:14px;font-weight:700}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:none;width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table th,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions{padding:16px 0 0}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a{display:inline-block}.elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child{display:var(--update-cart-automatically-display,table-row)}.elementor-widget-woocommerce-cart .woocommerce table.cart{margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce table.cart img{width:55px;height:auto;display:block}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-top:var(--order-summary-rows-gap-top,20px);padding-left:20px;padding-bottom:var(--order-summary-rows-gap-bottom,20px);padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td span{color:var(--order-summary-color,#000);font-size:14px;font-weight:400}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top:var(--order-summary-items-divider-weight,1px) solid var(--order-summary-items-divider-color,#d4d4d4)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MIN){.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top-width:0}}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove{padding-right:0;padding-left:0}@media (min-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td{border-top:none}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove{position:relative}.elementor-widget-woocommerce-cart .woocommerce table.cart.product-name{padding-left:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{border-top-width:var(--order-summary-items-divider-weight,1px);border-top-color:var(--order-summary-items-divider-color,#d4d4d4)}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MIN){.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-right:0;padding-left:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-woocommerce-cart .woocommerce table.cart{padding:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{padding:16px 28px}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-right:0;padding-left:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions{padding:0}}.elementor-widget-woocommerce-cart .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,.elementor-widget-woocommerce-cart .woocommerce .cart th{font-size:14px;font-weight:700;margin-top:0;padding:0 0 8px 20px}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{margin-bottom:var(--sections-title-spacing,1rem);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart th{padding-bottom:var(--order-summary-title-spacing,8px);color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart td:before{color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button:after{display:none}.elementor-widget-woocommerce-cart .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td{padding-right:0}}.e-woo-select2-wrapper .select2-results__option{font-family:Roboto,sans-serif;font-size:14px;color:var(--forms-fields-normal-color,#818a91)}.e-woo-select2-wrapper .select2-results__option:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account{font-family:Roboto,sans-serif;color:#818a91}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table{border:none;margin-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{background-color:var(--sections-background-color,#fff)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px 3px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,.elementor-widget-woocommerce-my-account .e-my-account-tab address{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content{border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper{padding:0;border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details{margin-bottom:40px}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px 3px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content>div>p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:var(--forms-fields-normal-background-color,#f7f7f7);border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:var(--forms-fields-focus-background-color,#f7f7f7);border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below{background-color:var(--forms-fields-normal-background-color,#f7f7f7)}.elementor-widget-woocommerce-my-account .woocommerce ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce-message{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce address{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover,.elementor-widget-woocommerce-my-account .woocommerce a.button:hover{background-color:initial}.elementor-widget-woocommerce-my-account .woocommerce em{font-size:12px;color:var(--login-messages-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .form-row{padding-left:var(--forms-columns-gap-padding-left,0);padding-right:var(--forms-columns-gap-padding-right,0);margin-left:var(--forms-columns-gap-margin-left,0);margin-right:var(--forms-columns-gap-margin-right,0);margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-my-account .woocommerce .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,0)}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,.elementor-widget-woocommerce-my-account .woocommerce .form-row select{color:var(--forms-fields-normal-color,#818a91);border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);background:#f7f7f7;border:none;font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,.elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text{margin-bottom:15px;color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword{font-size:12px;margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:50%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first{width:100%}.elementor-widget-woocommerce-my-account .woocommerce .login,.elementor-widget-woocommerce-my-account .woocommerce .register,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px);font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .login .button,.elementor-widget-woocommerce-my-account .woocommerce .register .button,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3){margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){margin-top:10px;font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox{vertical-align:middle}.elementor-widget-woocommerce-my-account .woocommerce p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span{color:var(--checkboxes-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce td,.elementor-widget-woocommerce-my-account .woocommerce th,.elementor-widget-woocommerce-my-account .woocommerce tr{border:none}.elementor-widget-woocommerce-my-account .woocommerce h2,.elementor-widget-woocommerce-my-account .woocommerce h3{color:var(--typography-section-titles-color,#000);margin-top:0;margin-bottom:var(--section-title-spacing,45px);font-weight:400}.elementor-widget-woocommerce-my-account .woocommerce strong{color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta,.elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label{color:var(--variations-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .product-quantity{font-weight:400;color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{float:right;width:25%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul{-webkit-padding-start:0;padding-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li{list-style-type:none;margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li:after{content:"";display:block;width:100%;background-color:var(--tabs-divider-color,#818a91);height:var(--tabs-divider-weight,0);position:relative;top:calc(var(--tabs-spacing, 2px) / 2)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a{color:var(--tabs-active-color,#5bc0de);background:#eceeef;border-color:var(--tabs-active-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{font-style:normal;font-weight:700;font-size:14px;color:var(--tabs-normal-color,#818a91);display:block;padding:var(--tabs-padding,12px 20px);text-align:var(--tabs-alignment,start);background:#f7f7f7;border-radius:var(--tabs-border-radius,0);border:0 var(--tabs-border-type,solid) var(--tabs-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover{color:var(--tabs-hover-color,#5bc0de);border-color:var(--tabs-hover-border-color,transparent)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{padding:var(--tabs-padding,10px)}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard{margin-top:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout:after{display:none}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{float:left;width:75%;padding:0;padding-right:var(--tab-content-spacing,6%)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{width:100%;padding:var(--tab-content-spacing,6%) 0 0 0}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type{margin-top:30px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark{background-color:transparent;font-weight:700;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child th,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child th{border-top:0}.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th{border-top:0;padding-right:0;padding-top:0;padding-bottom:var(--tables-titles-spacing,9px)}.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>th,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>th{background-color:transparent;padding-right:0;padding-top:var(--order-summary-rows-gap-top,9px);padding-bottom:var(--order-summary-rows-gap-bottom,9px);color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table td,.elementor-widget-woocommerce-my-account .woocommerce .shop_table th{border-top:var(--tables-divider-border-width,1px) var(--tables-divider-border-type,solid) var(--tables-divider-border-color,#d4d4d4)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th,.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span{color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td,.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th{padding-right:0;color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td{border-top:none;padding-top:0}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button{background:transparent;border:2px solid #5bc0de;border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);border-radius:var(--tables-button-border-radius,3px);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);margin-top:0;margin-bottom:0;padding:var(--tables-button-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-Address .title h3,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3{float:none}.elementor-widget-woocommerce-my-account .woocommerce-Address address,.elementor-widget-woocommerce-my-account .woocommerce-Addresses address{padding:var(--sections-padding,45px 30px 16px 30px)}.elementor-widget-woocommerce-my-account .woocommerce-Address .edit,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit{float:right;position:absolute;margin-right:var(--edit-link-margin-start,30px);margin-top:var(--edit-link-margin-top,10px)}.elementor-widget-woocommerce-my-account .woocommerce .u-columns{margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset{border:none;padding:0;-webkit-margin-start:0;margin-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend{font-weight:700;padding:20px 0;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px);margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-pagination{padding:16px 0}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below,.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below{padding-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td{vertical-align:top;line-height:unset}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{float:none;width:100%}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block}.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation,.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{list-style:none;padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--tabs-container-justify-content,space-between);-ms-flex-pack:var(--tabs-container-justify-content,space-between);justify-content:var(--tabs-container-justify-content,space-between)}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{display:block}}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block;width:var(--tab-width,100%);padding:0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);margin:0;border-right:var(--tabs-divider-weight,0) solid var(--tabs-divider-color,#818a91)}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:after{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type{padding-right:0}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type{padding-left:0;border-right-width:0}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}}.e-my-account-tabs-horizontal .woocommerce-MyAccount-content{float:none;width:100%;padding:var(--tab-content-spacing,50px) 0 0 0}.elementor-editor-active .elementor-widget-container,.elementor-editor-preview .elementor-widget-container{min-height:1px}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a{pointer-events:none}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button{pointer-events:none;opacity:.3}.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type){display:none}.product .count{background-color:inherit}.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2{display:none}.woocommerce div.product.elementor form.cart div.product-addon{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-negative:0;flex-shrink:0}.e-sticky-right-column--active{position:-webkit-sticky;position:sticky;top:0}.elementor-theme-builder-content-area{height:400px}.elementor-location-footer:before,.elementor-location-header:before{content:"";display:table;clear:both}.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post{display:block}.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid{color:#d4d4d4;border:1px solid;border-right:none;border-left:none;padding-top:10px;padding-bottom:10px}.elementor-post-navigation-borders-yes .elementor-post-navigation__separator{height:100%;width:1px;margin:0 auto;background-color:#d4d4d4}.elementor-post-navigation{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-post-navigation .post-navigation__arrow-wrapper{color:#d4d4d4}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev{font-size:30px;padding-left:15px}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next{font-size:30px;padding-right:15px}.elementor-post-navigation .post-navigation__arrow-wrapper i{-webkit-transform:translateY(-5%);-ms-transform:translateY(-5%);transform:translateY(-5%)}.elementor-post-navigation .elementor-post-navigation__link__next,.elementor-post-navigation .elementor-post-navigation__link__prev{overflow:hidden}.elementor-post-navigation .elementor-post-navigation__link a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__prev--label{text-transform:uppercase;font-size:.8em}.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--title{font-size:.7em}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--label,.elementor-post-navigation .post-navigation__prev--title{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation span.elementor-post-navigation__link__next{text-align:left}.elementor-post-navigation span.elementor-post-navigation__link__next,.elementor-post-navigation span.elementor-post-navigation__link__prev{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-post-navigation .elementor-grid{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-post-navigation .elementor-post-navigation__link{width:calc(50% - (1px / 2));white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation .elementor-post-navigation__separator-wrapper{text-align:center}.elementor-post-navigation .elementor-post-navigation__next{text-align:left}.elementor-post-navigation .elementor-post-navigation__next a{float:left}.elementor-search-form{display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s}.elementor-search-form .e-font-icon-svg-container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-search-form button,.elementor-search-form input[type=search]{margin:0;border:0;padding:0;display:inline-block;vertical-align:middle;white-space:normal;background:none;line-height:1;min-width:0;font-size:15px;-webkit-appearance:none;-moz-appearance:none}.elementor-search-form button:focus,.elementor-search-form input[type=search]:focus{outline:0;color:inherit}.elementor-search-form button{background-color:#818a91;font-size:var(--e-search-form-submit-icon-size,16px);color:#fff;border-radius:0}.elementor-search-form__container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;overflow:hidden;border:0 solid transparent;min-height:50px}.elementor-search-form__container:not(.elementor-search-form--full-screen){background:#eceeef}.elementor-search-form__input{-ms-flex-preferred-size:100%;flex-basis:100%;color:#55595c;-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s}.elementor-search-form__input::-webkit-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-moz-placeholder,.elementor-search-form__input::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__submit{-webkit-transition:color .2s,background .2s;-o-transition:color .2s,background .2s;transition:color .2s,background .2s;font-size:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form__submit svg{fill:var(--e-search-form-submit-text-color,#fff);width:var(--e-search-form-submit-icon-size,16px);height:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form .elementor-search-form__submit,.elementor-search-form .elementor-search-form__submit:hover{color:var(--e-search-form-submit-text-color,#fff);border:none;border-radius:0}.elementor-search-form--button-type-text .elementor-search-form__submit{-ms-flex-negative:0;flex-shrink:0}.elementor-search-form--skin-minimal .elementor-search-form__icon{opacity:.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;color:#55595c;fill:#55595c;font-size:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-minimal .elementor-search-form__icon svg{width:var(--e-search-form-icon-size-minimal,15px);height:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-full_screen .elementor-search-form input[type=search].elementor-search-form__input{font-size:50px;text-align:center;border:solid #fff;border-width:0 0 1px;line-height:1.5;color:#fff}.elementor-search-form--skin-full_screen .elementor-search-form__toggle{display:inline-block;cursor:pointer;vertical-align:middle;color:var(--e-search-form-toggle-color,#494c4f);font-size:var(--e-search-form-toggle-size,33px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i{position:relative;display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;width:var(--e-search-form-toggle-size,33px);height:var(--e-search-form-toggle-size,33px);background-color:var(--e-search-form-toggle-background-color,rgba(0,0,0,.05));border:var(--e-search-form-toggle-border-width,0) solid var(--e-search-form-toggle-color,#494c4f);border-radius:var(--e-search-form-toggle-border-radius,3px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before{font-size:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{fill:var(--e-search-form-toggle-color,#494c4f);width:var(--e-search-form-toggle-icon-size,.55em);height:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__container{-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;z-index:9998;top:0;left:0;right:0;bottom:0;height:100vh;padding:0 15%;background-color:rgba(0,0,0,.8)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen){overflow:hidden;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button{display:none}.elementor-author-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-author-box__avatar{-ms-flex-negative:0;flex-shrink:0;margin-left:25px}.elementor-author-box__avatar img{width:100px;border-radius:500px;-o-object-fit:cover;object-fit:cover}.elementor-author-box__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:17px}.elementor-author-box__name{font-size:24px;margin-bottom:5px}.elementor-author-box__bio,.elementor-author-box__bio p{margin-bottom:.8em}.elementor-author-box__bio p:last-of-type{margin-bottom:0}.elementor-author-box--layout-image-left .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-author-box--layout-image-left .elementor-author-box__avatar{margin-left:0;margin-right:25px}.elementor-author-box--layout-image-right .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-author-box--layout-image-right .elementor-author-box__avatar{margin-right:0;margin-left:25px}.elementor-author-box--layout-image-above .elementor-author-box{display:block}.elementor-author-box--layout-image-above .elementor-author-box__avatar{margin:0 auto 15px;display:inline-block}.elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar{margin-left:0}.elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar{margin-right:0}.elementor-author-box--align-left .elementor-author-box{text-align:left}.elementor-author-box--align-right .elementor-author-box{text-align:right}.elementor-author-box--align-center .elementor-author-box{text-align:center}.elementor-button.elementor-author-box__button{border:2px solid #55595c;font-size:15px;font-weight:100;padding:10px 18px}.elementor-button.elementor-author-box__button,.elementor-button.elementor-author-box__button:hover{background:transparent;color:#55595c}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar,.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar{-ms-flex-item-align:start;align-self:flex-start}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar{-ms-flex-item-align:center;align-self:center}.elementor-post-info__terms-list{display:inline-block}.elementor-post-info .elementor-icon-list-icon .elementor-avatar{border-radius:100%}.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after{margin:initial}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text{display:inline-block}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a,.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span{display:inline}.elementor-widget-breadcrumbs{font-size:.85em}.elementor-widget-breadcrumbs p{margin-bottom:0}.elementor-sitemap-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.elementor-sticky--active{z-index:99}[data-elementor-type=popup] .elementor-section-wrap:not(:empty)+#elementor-add-new-section,[data-elementor-type=popup]:not(.elementor-edit-area){display:none}.elementor-popup-modal{display:-webkit-box;display:-ms-flexbox;display:flex;pointer-events:none;background-color:transparent;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.elementor-popup-modal .dialog-buttons-wrapper,.elementor-popup-modal .dialog-header{display:none}.elementor-popup-modal .dialog-close-button{display:none;top:20px;margin-top:0;left:20px;opacity:1;z-index:9999;pointer-events:all}.elementor-popup-modal .dialog-close-button svg{fill:#373a3c;height:1em;width:1em}.elementor-popup-modal .dialog-widget-content{width:auto;overflow:visible;max-width:100%;max-height:100%;border-radius:0;-webkit-box-shadow:none;box-shadow:none;pointer-events:all}.elementor-popup-modal .dialog-message{width:640px;max-width:100vw;max-height:100vh;padding:0;overflow:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-popup-modal .elementor{width:100%}.elementor-motion-effects-element,.elementor-motion-effects-layer{-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(0,.33,.07,1.03);-o-transition-timing-function:cubic-bezier(0,.33,.07,1.03);transition-timing-function:cubic-bezier(0,.33,.07,1.03);-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s}.elementor-motion-effects-container{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;-webkit-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);-ms-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.elementor-motion-effects-layer{position:absolute;top:0;left:0;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover}.elementor-motion-effects-perspective{-webkit-perspective:1200px;perspective:1200px}assets/css/templates/frontend-rtl.css000064400001172237150755004320014002 0ustar00@charset "UTF-8";
.elementor-bg-transform .elementor-bg {
  will-change: transform; }

.elementor-bg-transform-zoom-in:hover .elementor-bg {
  transform: scale(1.2); }

.elementor-bg-transform-zoom-out .elementor-bg {
  transform: scale(1.2); }

.elementor-bg-transform-zoom-out:hover .elementor-bg {
  transform: scale(1); }

.elementor-bg-transform-move-left .elementor-bg {
  transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-left:hover .elementor-bg {
  transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right .elementor-bg {
  transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right:hover .elementor-bg {
  transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-up .elementor-bg {
  transform: scale(1.2) translateY(8%); }

.elementor-bg-transform-move-up:hover .elementor-bg {
  transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down .elementor-bg {
  transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down:hover .elementor-bg {
  transform: scale(1.2) translateY(8%); }

/*---------------------------------------------------------------------------*/
.elementor-animated-content {
  --translate: 0, 0; }
  .elementor-animated-content:hover .elementor-animated-item--grow {
    transform: scale(1.1); }
  .elementor-animated-content:hover .elementor-animated-item--shrink {
    transform: scale(0.85); }
  .elementor-animated-content:hover .elementor-animated-item--shrink-contained {
    transform: scale(1); }
  .elementor-animated-content:hover .elementor-animated-item--enter-zoom-out, .elementor-animated-content:hover .elementor-animated-item--enter-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-in {
    transform: scale(1);
    opacity: 1; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out, .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-out {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out {
    transform: scale(0.2); }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in {
    transform: scale(2); }
  .elementor-animated-content:hover .elementor-animated-item--enter-from-right, .elementor-animated-content:hover .elementor-animated-item--enter-from-left, .elementor-animated-content:hover .elementor-animated-item--enter-from-top, .elementor-animated-content:hover .elementor-animated-item--enter-from-bottom {
    opacity: 1;
    transform: translateY(0) translateX(0); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right {
    transform: translateX(1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-left {
    transform: translateX(-1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-top {
    transform: translateY(-600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    transform: translateY(600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right, .elementor-animated-content:hover .elementor-animated-item--exit-to-left, .elementor-animated-content:hover .elementor-animated-item--exit-to-top, .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-right {
    transform: translateX(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-left {
    transform: translateX(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-up {
    transform: translateY(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-down {
    transform: translateY(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-right {
    --translate: 8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-left {
    --translate: -8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-top {
    --translate: 0, -8%; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-bottom {
    --translate: 0, 8%; }
  .elementor-animated-content *[class^="elementor-animated-item"] {
    will-change: transform, opacity; }
  .elementor-animated-content .elementor-animated-item--shrink-contained {
    transform: scale(1.17); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-in {
    transform: scale(0.2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out {
    transform: scale(2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out, .elementor-animated-content .elementor-animated-item--enter-zoom-in, .elementor-animated-content .elementor-animated-item--fade-in {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-zoom-out, .elementor-animated-content .elementor-animated-item--exit-zoom-in, .elementor-animated-content .elementor-animated-item--fade-out {
    opacity: 1;
    transform: scale(1); }
  .elementor-animated-content .elementor-animated-item--enter-from-right {
    transform: translateX(1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-left {
    transform: translateX(-1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-top {
    transform: translateY(-600px); }
  .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    transform: translateY(500px); }
  .elementor-animated-content .elementor-animated-item--enter-from-right, .elementor-animated-content .elementor-animated-item--enter-from-left, .elementor-animated-content .elementor-animated-item--enter-from-top, .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-to-right, .elementor-animated-content .elementor-animated-item--exit-to-left, .elementor-animated-content .elementor-animated-item--exit-to-top, .elementor-animated-content .elementor-animated-item--exit-to-bottom {
    opacity: 1;
    transform: translateY(0) translateX(0); }
  .elementor-animated-content .elementor-animated-item--move-contained-right, .elementor-animated-content .elementor-animated-item--move-contained-left, .elementor-animated-content .elementor-animated-item--move-contained-top, .elementor-animated-content .elementor-animated-item--move-contained-bottom {
    transform: scale(1.2) translate(var(--translate)); }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover {
  outline: 1px solid #fec449; }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings {
  background-image: linear-gradient(to top, #feb416, #fec449); }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover {
    background-color: #feb416; }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save {
    display: none; }

body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  width: 100%;
  padding: 0; }

body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  padding: 0; }

.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart {
  margin: 0;
  display: flex;
  flex-wrap: nowrap; }

.woocommerce div.product.elementor .quantity .qty {
  vertical-align: top;
  margin-left: 0; }

.woocommerce div.product.elementor .quantity + .button {
  margin-right: 10px; }

.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input {
  height: 100%; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
  justify-content: flex-end; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
  justify-content: flex-start; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
  justify-content: center; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
  margin-left: initial; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
  flex-basis: auto; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
  flex-wrap: nowrap; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-left: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
    flex-basis: 100%; }

@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-left: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-left: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      flex-basis: 100%; } }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-left: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-left: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      flex-basis: 100%; } }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button {
  background-color: #5bc0de; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button {
  background-color: #5cb85c; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button {
  background-color: #f0ad4e; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button {
  background-color: #d9534f; }

.elementor-widget-wc-add-to-cart .quantity {
  display: inline-block; }

.elementor-widget-wc-add-to-cart.elementor-align-center form.cart {
  justify-content: center; }

.elementor-widget-wc-add-to-cart.elementor-align-right form.cart {
  justify-content: flex-start; }

.elementor-widget-wc-add-to-cart.elementor-align-left form.cart {
  justify-content: flex-start; }

.woocommerce div.product.elementor {
  /*  Reset WC tabs style  */
  /*  End Reset WC tabs style  */ }
  .woocommerce div.product.elementor ul.tabs:before {
    position: static;
    content: none;
    width: auto;
    bottom: auto;
    left: auto;
    border-bottom: 0;
    z-index: auto; }
  .woocommerce div.product.elementor ul.tabs {
    margin: 0; }
    .woocommerce div.product.elementor ul.tabs li {
      padding: 0; }
      .woocommerce div.product.elementor ul.tabs li a {
        padding: .8em 1.2em;
        line-height: 1; }
    .woocommerce div.product.elementor ul.tabs li:after,
    .woocommerce div.product.elementor ul.tabs li:before {
      border: 0;
      position: static;
      bottom: auto;
      width: auto;
      height: auto;
      content: none;
      box-sizing: border-box; }
  .woocommerce div.product.elementor .woocommerce-tabs .panel {
    margin: 0;
    padding: 20px;
    border-radius: 0;
    border-width: 0;
    border-top: 1px solid #d3ced2;
    box-shadow: none;
    margin-top: -1px; }

.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,
.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins {
  display: block; }

.elementor-widget-woocommerce-product-meta .detail-container {
  position: relative; }
  .elementor-widget-woocommerce-product-meta .detail-container:after {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%; }

.elementor-widget-woocommerce-product-meta .detail-label {
  font-weight: bold; }

.elementor-woo-meta--view-inline .product_meta {
  display: flex;
  flex-wrap: wrap; }
  .elementor-woo-meta--view-inline .product_meta .detail-container:after {
    width: auto;
    left: auto;
    right: auto;
    position: absolute;
    height: 100%;
    top: 50%;
    transform: translateY(-50%);
    border-top: 0;
    border-bottom: 0;
    border-right: 0;
    border-left-width: 1px;
    border-style: solid;
    left: -8px; }

.elementor-woo-meta--view-table .product_meta {
  display: flex;
  flex-direction: column; }
  .elementor-woo-meta--view-table .product_meta .detail-container {
    display: flex; }
  .elementor-woo-meta--view-table .product_meta .detail-label {
    min-width: 108px; }

.elementor-woo-meta--view-stacked .product_meta .detail-container {
  display: block; }

.woocommerce div.product.elementor .woocommerce-product-rating {
  margin-bottom: 0;
  display: flex;
  align-items: center; }

.woocommerce div.product.elementor .star-rating {
  margin-top: 0; }

.elementor-product-rating--align-left .woocommerce-product-rating {
  justify-content: flex-end; }

.elementor-product-rating--align-right .woocommerce-product-rating {
  justify-content: flex-start; }

.elementor-product-rating--align-center .woocommerce-product-rating {
  justify-content: center; }

.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link {
  margin-right: auto; }

.elementor-products-grid ul.products.elementor-grid {
  display: grid;
  margin: 0;
  grid-column-gap: 20px;
  grid-row-gap: 40px; }
  .elementor-products-grid ul.products.elementor-grid:before, .elementor-products-grid ul.products.elementor-grid:after {
    content: none;
    display: none; }
  .elementor-products-grid ul.products.elementor-grid li.product {
    width: auto;
    padding: 0;
    margin: 0;
    float: none; }
    .elementor-products-grid ul.products.elementor-grid li.product .onsale {
      padding: 0;
      display: none; }
    .elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link {
      display: block;
      position: relative; }

.elementor-products-grid:not(.show-heading-yes) .products > h2 {
  display: none; }

.elementor-products-grid nav.woocommerce-pagination {
  margin-top: 40px; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul {
  border: none 0; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li {
  border-right: none 0;
  border-left: none 0; }

.elementor-product-loop-item--align-left ul.products li.product .star-rating {
  margin-right: auto; }

.elementor-product-loop-item--align-right ul.products li.product .star-rating {
  margin-left: auto; }

.elementor-product-loop-item--align-center ul.products li.product .star-rating {
  margin-right: auto;
  margin-left: auto; }

.woocommerce .elementor-element.elementor-products-grid ul.products li.product {
  width: auto; }

.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,
.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product {
  width: auto; }

@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) {
  .elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products {
    grid-template-columns: repeat(2, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products {
    grid-template-columns: repeat(3, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products {
    grid-template-columns: repeat(4, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products {
    grid-template-columns: repeat(5, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products {
    grid-template-columns: repeat(6, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products {
    grid-template-columns: repeat(7, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products {
    grid-template-columns: repeat(8, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products {
    grid-template-columns: repeat(9, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products {
    grid-template-columns: repeat(10, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products {
    grid-template-columns: repeat(11, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products {
    grid-template-columns: repeat(12, 1fr); } }

@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(3, 1fr); } }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(2, 1fr); } }

.elementor.product .woocommerce-product-gallery__trigger + .woocommerce-product-gallery__wrapper {
  overflow: hidden; }

.woocommerce .elementor-widget-woocommerce-product-images span.onsale {
  padding: 0; }

.elementor-menu-cart__wrapper {
  text-align: var(--main-alignment, right); }

.elementor-menu-cart__toggle_wrapper {
  display: inline-block;
  position: relative; }

.elementor-menu-cart__toggle {
  display: inline-block; }
  .elementor-menu-cart__toggle .elementor-button {
    background-color: var(--toggle-button-background-color, transparent);
    color: var(--toggle-button-text-color, #818a91);
    border-style: var(--toggle-button-border-type, solid);
    border-width: var(--toggle-button-border-width, 1px);
    border-color: var(--toggle-button-border-color, #818a91);
    border-radius: var(--toggle-button-border-radius, 0px);
    display: inline-flex;
    align-items: center;
    padding: var(--toggle-icon-padding, 12px 24px); }
    .elementor-menu-cart__toggle .elementor-button:hover {
      color: var(--toggle-button-hover-text-color, #818a91);
      background-color: var(--toggle-button-hover-background-color, transparent);
      border-color: var(--toggle-button-hover-border-color, #818a91); }
      .elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon {
        color: var(--toggle-button-icon-hover-color, #818a91); }
  .elementor-menu-cart__toggle .elementor-button-text {
    margin-left: 0.3em; }
  .elementor-menu-cart__toggle .elementor-button-icon {
    position: relative;
    transition: color 0.1s;
    color: var(--toggle-button-icon-color, #818a91);
    font-size: var(--toggle-icon-size, inherit); }

.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: block;
  position: absolute;
  min-width: 1.6em;
  height: 1.6em;
  line-height: 1.5em;
  top: -0.7em;
  left: -0.7em;
  border-radius: 100%;
  color: var(--items-indicator-text-color, #fff);
  background-color: var(--items-indicator-background-color, #d9534f);
  text-align: center;
  font-size: 10px; }

.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: inline-block;
  font-weight: normal; }

.elementor-menu-cart__container {
  transform: scale(1);
  overflow: hidden;
  position: fixed;
  z-index: 9998;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgba(0, 0, 0, 0.25);
  transition: background-color 0.4s, transform 0s;
  text-align: right; }

.elementor-menu-cart__main {
  position: fixed;
  left: var(--side-cart-alignment-left, 0);
  right: var(--side-cart-alignment-right, auto);
  transform: translateX(0);
  top: 0;
  bottom: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  font-size: 14px;
  min-height: 200px;
  width: 350px;
  max-width: 100%;
  transition: 0.3s;
  padding: var(--cart-padding, 20px 30px);
  background-color: var(--cart-background-color, #fff);
  box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
  border-style: var(--cart-border-style, none);
  border-color: var(--cart-border-color, initial);
  border-radius: var(--cart-border-radius, 0px);
  margin-top: var(--mini-cart-spacing, 0px); }
  .elementor-menu-cart__main .widget_shopping_cart_content {
    height: 100%;
    display: flex;
    flex-direction: column; }
    .elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message {
      color: var(--empty-message-color, inherit);
      text-align: var(--empty-message-alignment, right); }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
  background-color: transparent;
  transform: scale(0);
  transition: background-color 0.4s, transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button {
    display: none; }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
  overflow: hidden;
  opacity: 0;
  transform: var(--side-cart-alignment-transform, translateX(-100%)); }

.elementor-menu-cart__close-button {
  width: var(--cart-close-icon-size, 25px);
  height: var(--cart-close-icon-size, 25px);
  position: relative;
  margin: 0 0 20px;
  align-self: flex-end;
  cursor: pointer;
  display: inline-block;
  font-family: eicons;
  font-size: 20px;
  line-height: 1;
  transition: 0.3s; }
  .elementor-menu-cart__close-button:before, .elementor-menu-cart__close-button:after {
    content: '';
    position: absolute;
    height: 3px;
    width: 100%;
    top: 50%;
    left: 0;
    margin-top: -1px;
    background: var(--cart-close-button-color, #818a91);
    border-radius: 1px;
    transition: 0.3s; }
  .elementor-menu-cart__close-button:hover::before, .elementor-menu-cart__close-button:hover::after {
    background: var(--cart-close-button-hover-color, #818a91); }
  .elementor-menu-cart__close-button::before {
    transform: rotate(45deg); }
  .elementor-menu-cart__close-button::after {
    transform: rotate(-45deg); }

.elementor-menu-cart__products {
  max-height: calc(100vh - 250px);
  overflow: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch; }

.elementor-menu-cart__product {
  display: grid;
  grid-template-columns: 28% auto;
  grid-template-rows: var(--price-quantity-position--grid-template-rows, auto auto);
  position: relative;
  border-width: 0 0 var(--divider-width, 1px);
  border-bottom-style: var(--divider-style, solid);
  border-bottom-color: var(--divider-color, #D4D4D4); }
  .elementor-menu-cart__product .variation {
    display: grid;
    grid-template-columns: max-content auto;
    margin: 10px 0; }
    .elementor-menu-cart__product .variation dt {
      grid-column-start: 1; }
    .elementor-menu-cart__product .variation dd {
      grid-column-start: 2;
      margin-inline-start: 5px; }
      .elementor-menu-cart__product .variation dd p {
        margin-bottom: 0; }
  .elementor-menu-cart__product-image {
    grid-row-start: 1;
    grid-row-end: 3;
    width: 100%; }
    .elementor-menu-cart__product-image img, .elementor-menu-cart__product-image a {
      display: block; }
  .elementor-menu-cart__product-name {
    grid-column-start: 2;
    grid-column-end: 3;
    margin: 0; }
    .elementor-menu-cart__product-name a {
      transition: 0.3s; }
  .elementor-menu-cart__product-price {
    grid-column-start: 2;
    grid-column-end: 3;
    align-self: var(--price-quantity-position--align-self, end);
    font-weight: 300;
    color: var(--product-price-color, #D4D4D4); }
  .elementor-menu-cart__product-name, .elementor-menu-cart__product-price {
    font-size: 14px;
    padding-right: 20px; }
  .elementor-menu-cart__product-remove {
    color: #818a91;
    width: var(--remove-item-button-size, 22px);
    height: var(--remove-item-button-size, 22px);
    border-radius: var(--remove-item-button-size, 22px);
    border: 1px solid var(--remove-item-button-color, #D4D4D4);
    text-align: center;
    overflow: hidden;
    position: absolute;
    left: 0;
    bottom: 20px;
    transition: 0.3s; }
    .elementor-menu-cart__product-remove:hover {
      border: 1px solid var(--remove-item-button-hover-color, #D4D4D4); }
      .elementor-menu-cart__product-remove:hover::before, .elementor-menu-cart__product-remove:hover::after {
        background: var(--remove-item-button-hover-color, #D4D4D4); }
    .elementor-menu-cart__product-remove:before, .elementor-menu-cart__product-remove:after {
      content: '';
      position: absolute;
      height: 1px;
      width: 50%;
      top: 50%;
      left: 25%;
      margin-top: -1px;
      background: var(--remove-item-button-color, #D4D4D4);
      z-index: 1;
      transition: 0.3s; }
    .elementor-menu-cart__product-remove::before {
      transform: rotate(45deg); }
    .elementor-menu-cart__product-remove::after {
      transform: rotate(-45deg); }
    .elementor-menu-cart__product-remove > a {
      display: block;
      z-index: 2;
      width: 100%;
      height: 100%;
      overflow: hidden;
      opacity: 0;
      position: absolute; }
      .elementor-menu-cart__product-remove > a.remove_from_cart_button {
        display: var(--remove-from-cart-button, block); }
      .elementor-menu-cart__product-remove > a.elementor_remove_from_cart_button {
        display: var(--elementor-remove-from-cart-button, none); }

.elementor-menu-cart__product:last-child {
  border: none; }

.elementor-menu-cart__product:not(:first-of-type), .elementor-menu-cart__subtotal, .elementor-menu-cart__footer-buttons {
  padding-top: var(--product-divider-gap, 20px); }

.elementor-menu-cart__product {
  padding-left: 30px; }

.elementor-menu-cart__product, .elementor-menu-cart__subtotal {
  padding-bottom: var(--product-divider-gap, 20px); }

.elementor-menu-cart__subtotal {
  font-size: 20px;
  text-align: var(--menu-cart-subtotal-text-align, center);
  font-weight: 600;
  color: var(--menu-cart-subtotal-color, inherit);
  border-style: var(--subtotal-divider-style, solid);
  border-width: var(--subtotal-divider-top-width, 1px) var(--subtotal-divider-right-width, 1px) var(--subtotal-divider-bottom-width, 1px) var(--subtotal-divider-left-width, 1px);
  border-color: var(--subtotal-divider-color, #D4D4D4); }

.elementor-menu-cart__footer-buttons {
  font-size: 20px;
  text-align: var(--cart-footer-buttons-alignment-text-align, center);
  display: var(--cart-footer-buttons-alignment-display, grid);
  grid-template-columns: var(--cart-footer-layout, 1fr 1fr);
  margin-top: var(--cart-buttons-position-margin, 0);
  grid-column-gap: var(--space-between-buttons, 10px);
  grid-row-gap: var(--space-between-buttons, 10px); }
  .elementor-menu-cart__footer-buttons .elementor-button {
    display: inline-block;
    border-radius: var(--cart-footer-buttons-border-radius, 0px);
    height: fit-content; }
    .elementor-menu-cart__footer-buttons .elementor-button--view-cart {
      display: var(--view-cart-button-display, inline-block);
      color: var(--view-cart-button-text-color, #fff);
      padding: var(--view-cart-button-padding, 15px);
      background-color: var(--view-cart-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover {
        color: var(--view-cart-button-hover-text-color, #fff);
        background-color: var(--view-cart-button-hover-background-color, #818a91); }
    .elementor-menu-cart__footer-buttons .elementor-button--checkout {
      display: var(--checkout-button-display, inline-block);
      color: var(--checkout-button-text-color, #fff);
      padding: var(--checkout-button-padding, 15px);
      background-color: var(--checkout-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--checkout:hover {
        color: var(--checkout-button-hover-text-color, #fff);
        background-color: var(--checkout-button-hover-background-color, #818a91); }
    @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
      .elementor-menu-cart__footer-buttons .elementor-button {
        padding-left: 10px;
        padding-right: 10px; } }

/* The following is all to apply settings from the controls */
.elementor-widget-woocommerce-menu-cart {
  /* Fix to prevent the cart modal flash when using the typography controls */
  /* Fix for short-lived legacy cart type */ }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before {
    content: none; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e3'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e4'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e5'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e6'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e7'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e8'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e9'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8ea'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8eb'; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product {
    padding-left: 0;
    padding-right: 0;
    grid-template-columns: 25% auto; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove {
    top: 0;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove {
    top: 20px;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove {
    transform: translateY(50%);
    bottom: 50%; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove {
    top: auto;
    bottom: 20px; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart {
    /* The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
			and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
      position: absolute;
      z-index: 89;
      width: auto;
      height: auto;
      overflow: visible;
      top: 100%;
      bottom: auto;
      background: none;
      min-width: 330px;
      right: 0;
      left: auto;
      transform: scale(1);
      transition: background-color 0.4s, transform 0s; }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main {
      width: auto;
      height: auto;
      position: relative;
      top: auto;
      bottom: auto;
      right: auto;
      left: auto;
      overflow: visible;
      transform: translateY(0);
      transition: 0.3s; }
    @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
      .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
        min-width: 300px; } }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
    transform: scale(0);
    transition: background-color 0.4s, transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
    opacity: 0;
    transform: translateY(-10px); }
  .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown {
    opacity: 1;
    /* This keeps mini-cart panels above other widgets so there's no flash when using the typography controls.
		The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
		and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container {
      z-index: 9998; }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart {
      z-index: 89; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container {
    display: none; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-checkout-page {
  background-color: transparent;
  font-family: Roboto, sans-serif;
  font-size: 14px;
  line-height: 21px;
  color: #818a91;
  /* one column layout */
  /* override theme defaults for themes that have hover background colors on these elements. The hover background colors do not play well with the widget's initial design. */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-checkout-page ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > td,
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > th {
    background-color: transparent; }
  .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: #f7f7f7;
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: #f7f7f7;
      border-color: var(--forms-fields-focus-border-color, initial);
      transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below {
    background-color: #f7f7f7; }
  .elementor-widget-woocommerce-checkout-page .e-description {
    color: var(--sections-descriptions-color, #818a91);
    padding-bottom: var(--sections-descriptions-spacing, 0px);
    font-size: 14px;
    font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section {
    margin-bottom: 24px; }
    .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title {
      text-align: var(--login-title-alignment, right); }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge {
    margin-top: var(--sections-secondary-title-spacing, 24px);
    margin-bottom: 15px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor {
    margin-top: var(--sections-secondary-title-spacing, 24px); }
  .elementor-widget-woocommerce-checkout-page .e-coupon-box {
    margin-top: 24px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description {
    color: var(--forms-labels-color, #818a91);
    margin-bottom: var(--forms-label-spacing, 3px); }
  .elementor-widget-woocommerce-checkout-page .e-login-wrap {
    display: flex;
    align-items: center; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-start {
      flex: 75%; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
      flex: 20%;
      text-align: left; }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-checkout-page .e-login-wrap {
        display: block; }
        .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
          text-align: right;
          margin-top: 15px; }
          .elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label {
            display: none; } }
  .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap {
    display: flex;
    justify-content: space-between;
    margin-top: 6px; }
    .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
      margin-bottom: 0;
      font-size: 12px; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
          font-size: 11px; } }
  .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
    width: 90%;
    /* 90% to match the design */ }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
        width: auto; } }
  .elementor-widget-woocommerce-checkout-page .e-checkout__container {
    display: grid;
    flex-wrap: wrap;
    grid-template-columns: 56% auto;
    /* column widths - to match the design */
    align-items: stretch;
    grid-column-gap: var(--sections-margin, 24px);
    grid-row-gap: var(--sections-margin, 24px); }
  @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
    .elementor-widget-woocommerce-checkout-page .e-checkout__container {
      grid-template-columns: repeat(1, 1fr); } }
  .elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title {
    color: var(--sections-secondary-title-color, #818a91);
    margin-bottom: 0; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge {
    text-align: var(--coupon-title-alignment, right); }
  .elementor-widget-woocommerce-checkout-page #ship-to-different-address {
    margin-top: 13px;
    padding-right: var(--shipping-heading-padding-start, 30px); }
    .elementor-widget-woocommerce-checkout-page #ship-to-different-address span {
      font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-checkout-page a:hover {
      color: var(--links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-checkout-page .woocommerce {
    /* Need to use these specific selectors to override WooCommerce CSS */
    /* Need the <button> selector here so that we can target .woocommerce-button
		without being overwritten by WooCommerce's button.button selector.
		We are also targeting .woocommerce-button because none of this styling should
		apply to the Purchase button. Only The Login/Apply coupon button. */
    /* Main Sections styling start */
    /* Main Sections styling end */
    /* Styling for everything classified as 'Messages' start */
    /* Styling for everything classified as 'Messages' end */ }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      padding-left: var(--forms-columns-gap-padding, 0px);
      padding-right: var(--forms-columns-gap-padding, 0px);
      margin-left: var(--forms-columns-gap-margin, 0px);
      margin-right: var(--forms-columns-gap-margin, 0px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label {
        color: var(--forms-labels-color, #818a91);
        margin-bottom: var(--forms-label-spacing, 3px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea {
        color: var(--forms-fields-normal-color, #818a91);
        background-color: #f7f7f7;
        border-radius: var(--forms-fields-border-radius, 0px);
        padding: var(--forms-fields-padding, 16px);
        font-size: 14px;
        border: none;
        font-weight: 400; }
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus {
          color: var(--forms-fields-focus-color, #818a91);
          background-color: #f7f7f7;
          border-color: var(--forms-fields-focus-border-color, #818a91);
          transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field {
      margin-bottom: 5px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .create-account,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      /* need to use !important here to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 0 !important; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .input-radio,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span {
      position: relative;
      top: 2px;
      color: var(--sections-checkboxes-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label {
      display: inline; }
    .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #6F6F6F);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: 1rem;
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover {
        color: var(--forms-buttons-hover-text-color, #6F6F6F);
        transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
      margin-right: 1%; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
          width: 100%;
          margin-right: 0;
          margin-bottom: 15px; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-info {
      border-top-color: transparent;
      background-color: transparent;
      padding: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p {
      font-weight: 400;
      font-size: 12px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info {
      font-weight: 400;
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment,
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      background: var(--sections-background-color, #ffffff);
      border-radius: var(--sections-border-radius, 3px);
      padding: var(--sections-padding, 16px 30px);
      margin: var(--sections-margin, 0 0 24px 0);
      border-style: var(--sections-border-type, solid);
      border-color: var(--sections-border-color, #D4D4D4);
      border-width: 1px;
      display: block; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      display: var(--additional-information-display, none); }
    @media (min-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
        margin: var(--sections-margin, 0); } }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message {
      color: var(--sections-messages-color, #818a91);
      font-weight: 400; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p {
      margin-top: 25px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1 {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2 {
      padding-top: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading {
      text-align: var(--order-review-title-alignment, right); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table {
      margin-bottom: 0;
      border: 0;
      font-size: 14px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead {
        background-color: transparent; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th {
          padding-top: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td {
        color: #000000; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity {
          font-weight: normal; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td {
        color: #818a91; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th {
        border: 0;
        padding-left: 0;
        padding-bottom: 15px;
        padding-top: 15px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td {
        padding-bottom: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td {
      font-weight: 400;
      color: var(--order-summary-items-color, #000000);
      border-bottom-color: var(--order-summary-items-divider-color, #818a91);
      border-bottom-width: var(--order-summary-items-divider-weight, 0px);
      border-bottom-style: solid; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name {
        padding-left: 40px;
        max-width: 150px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total {
        vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th {
      padding-top: var(--order-summary-rows-gap-top, 15px);
      padding-bottom: var(--order-summary-rows-gap-bottom, 15px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th {
      color: var(--order-summary-totals-color, #818a91);
      vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th {
      border-top-color: var(--order-summary-totals-divider-color, #818a91);
      border-top-width: var(--order-summary-totals-divider-weight, 0px);
      border-top-style: solid; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td {
      max-width: 70px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce h3 {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      margin-bottom: var(--sections-title-spacing, 30px);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row > span {
      font-weight: 400;
      font-size: 14px;
      margin-bottom: 3px;
      color: #818a91; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
      /* use 48% to match the design. Default WC CSS uses 47% */
      width: 48%; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3 {
      text-align: var(--billing-details-title-alignment, right); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row {
      margin-bottom: var(--forms-rows-gap, 5px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child {
        margin-bottom: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login {
      margin-top: -8px;
      z-index: 999;
      background: #ffffff;
      border-top-width: 0;
      position: relative;
      margin-bottom: 0;
      color: #818a91; }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
        width: 100%; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle {
      display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
      width: 85%;
      /* 85% to match the design */ }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
          width: 35%;
          /* 35% to match the design */ } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3 {
      background: var(--additional-fields-title-alignment, right); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address {
      margin-bottom: var(--sections-margin, 20px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment {
      margin-top: 24px;
      padding: 15px 25px 25px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods {
        border-bottom: none;
        padding: 0; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box {
          background-color: #f7f7f7; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before {
            display: none; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li {
          line-height: 21px; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
            padding-right: 15px;
            font-size: 12px; }
            @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
              .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
                float: none;
                font-size: 11px;
                padding-left: 10px; } }
          @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
            .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img {
              width: 55px;
              /* 55px to match the design */ } }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order {
        display: flex;
        flex-direction: column;
        flex-wrap: wrap;
        padding: 0;
        margin-bottom: 0;
        align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order {
        background-color: #5bc0de;
        width: var(--purchase-button-width, auto);
        float: none;
        color: var(--purchase-button-normal-text-color, #ffffff);
        min-height: auto;
        padding: var(--purchase-button-padding, 1em 1em);
        border-radius: var(--purchase-button-border-radius, 3px); }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover {
          background-color: #5bc0de;
          color: var(--purchase-button-hover-text-color, #ffffff);
          border-color: var(--purchase-button-hover-border-color, #5bc0de);
          transition-duration: var(--purchase-button-hover-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before {
        display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2 {
      width: auto;
      float: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
      display: grid;
      grid-template-columns: auto auto;
      /*columns widths*/
      align-items: center; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
        text-align: left; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
          display: block; }
          .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
            text-align: right; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field {
      /* need to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 10px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000);
      /* We need to specify these values so that the 'Items' Typography control does not affect
			the 'Variations' */
      font-size: 14px;
      font-style: normal;
      text-transform: none;
      letter-spacing: normal;
      text-decoration: none;
      line-height: 21px; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-cart {
  /* one column layout */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart table tbody tr:hover > td,
  .elementor-widget-woocommerce-cart table tbody tr:hover > th {
    background-color: inherit; }
  .elementor-widget-woocommerce-cart .e {
    /* .e-clear is a class that is added between the cart sections to fix collapsing margins,
		especially when custom margins are being set by the Style Controls, then the margins could
		start overriding the other margin, leaving one margin */ }
    .elementor-widget-woocommerce-cart .e-clear {
      overflow: hidden;
      height: 0;
      width: 0; }
    .elementor-widget-woocommerce-cart .e-cart {
      /* Main sections styling start */
      /* Main sections styling end */
      /* one column layout */ }
      .elementor-widget-woocommerce-cart .e-cart-section {
        background-color: var(--sections-background-color, #ffffff);
        padding: var(--sections-padding, 16px 30px);
        margin: var(--sections-margin, 0 0 30px 0);
        border-radius: var(--sections-border-radius, 3px);
        border-width: 1px;
        border-style: var(--sections-border-type, solid);
        border-color: var(--sections-border-color, #D4D4D4); }
      @media (min-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-cart .e-cart-section:last-child {
          margin: var(--sections-margin, 0); } }
      .elementor-widget-woocommerce-cart .e-cart-content {
        color: var(--sections-descriptions-color, #818a91);
        font-size: 15px;
        font-weight: 400;
        line-height: 23px;
        letter-spacing: 0; }
      .elementor-widget-woocommerce-cart .e-cart__container {
        display: grid;
        flex-wrap: wrap;
        grid-template-columns: 59% auto;
        /* 59% to match the required design */
        align-items: stretch;
        grid-column-gap: var(--sections-margin, 30px);
        grid-row-gap: var(--sections-margin, 30px); }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-cart .e-cart__container {
          grid-template-columns: repeat(1, 1fr); } }
      .elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container {
        grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart .select2-container {
    margin-bottom: 4px; }
    .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 0px);
      border: none;
      height: 45px; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, initial);
        transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder {
        color: var(--forms-fields-normal-color, #818a91); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered {
        color: var(--forms-fields-normal-color, #818a91);
        line-height: 45px;
        padding-right: 1rem;
        padding-left: 1rem; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow {
        height: 45px; }
    .elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below {
      background-color: #f7f7f7; }
  .elementor-widget-woocommerce-cart .woocommerce {
    font-family: Roboto, sans-serif; }
    .elementor-widget-woocommerce-cart .woocommerce button.button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #818a91);
      border-radius: var(--forms-buttons-border-radius, 3px);
      /* 0.88rem is used here so that this button will match the design layout from Product. */
      padding: var(--forms-buttons-padding, 0.88rem 2rem);
      width: var(--forms-buttons-width, auto);
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-cart .woocommerce button.button:hover {
        color: var(--forms-buttons-hover-text-color, #818a91);
        transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
        border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce button.button.disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled] {
        /* 0.88rem is used here so that this button will match the design layout from Product. */
        padding: var(--forms-buttons-padding, 0.88rem 2rem);
        color: var(--forms-buttons-normal-text-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover {
          background-color: var(--forms-buttons-hover-background-color, #ffffff);
          color: var(--forms-buttons-hover-text-color, #818a91);
          transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
          border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form {
      margin-top: var(--sections-descriptions-spacing, 15px); }
    .elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination {
      color: var(--sections-descriptions-color, #818a91);
      margin-bottom: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td {
      text-align: right !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before {
        width: 100%;
        margin-bottom: 10px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td {
      text-align: left !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td::before {
        content: attr(data-title);
        font-weight: 700;
        float: right; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      text-align: var(--totals-title-alignment, right); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td {
      padding-top: var(--totals-rows-gap-top, 12px);
      padding-bottom: var(--totals-rows-gap-bottom, 9px); }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before,
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount {
        color: var(--totals-color, #818a91);
        font-weight: 700; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td {
      border-top-color: var(--totals-divider-color, #818a91);
      border-top-width: var(--totals-divider-weight, 0); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row {
      margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-cart .woocommerce .product-name a {
      color: var(--product-link-normal-color, #000000); }
      .elementor-widget-woocommerce-cart .woocommerce .product-name a:hover {
        color: var(--product-link-hover-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .form-row {
      padding: 3px 0;
      margin: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .input-text,
    .elementor-widget-woocommerce-cart .woocommerce select {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 3px);
      border: none;
      padding: var(--forms-fields-padding, 16px);
      font-size: 14px; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text:focus,
      .elementor-widget-woocommerce-cart .woocommerce select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, transparent);
        transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce .input-text.qty {
      background-color: transparent;
      color: var(--order-summary-color, #000000);
      border-width: var(--order-summary-quantity-border-weight, 1px);
      border-style: solid;
      border-color: var(--order-summary-quantity-border-color, #D4D4D4);
      border-radius: 3px;
      padding: 1px 2px;
      text-align: right;
      font-size: 14px;
      min-height: 28px;
      max-height: 28px; }
    .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout {
      padding-bottom: 0;
      display: flex;
      flex-direction: column;
      flex-wrap: wrap;
      align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button {
        padding: var(--checkout-button-padding, 15px 1em);
        width: var(--checkout-button-width, auto);
        font-size: 15px;
        text-align: center;
        color: var(--checkout-button-normal-text-color, #ffffff);
        background-color: #5bc0de;
        border-radius: var(--checkout-button-border-radius, 3px);
        min-height: auto;
        margin-bottom: 0; }
        .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover {
          color: var(--checkout-button-hover-text-color, #ffffff);
          background-color: #5bc0de;
          border-color: var(--checkout-button-hover-border-color, #5bc0de);
          transition-duration: var(--checkout-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-cart .woocommerce .remove {
      background: transparent;
      color: var(--order-summary-remove-icon-normal-color, #000000) !important;
      /* need important here because Woo also has !important */
      width: auto; }
      .elementor-widget-woocommerce-cart .woocommerce .remove:hover {
        background: transparent;
        color: var(--order-summary-remove-icon-hover-color, #5bc0de) !important;
        /* need important here because Woo also has !important */ }
    .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals {
      float: none;
      width: 100%; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td {
        padding-right: 0; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td {
        padding-left: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
      float: left;
      width: 100%; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .form-row {
      padding: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
      display: flex; }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
        flex: 2;
        padding-left: 30px; }
        @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
          .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
            padding-left: 0; } }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-end {
        flex: 1; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
          display: block; } }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-cart .woocommerce .coupon {
        margin: var(--sections-margin, 0); }
        .elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code {
          width: 100%;
          margin-left: 0;
          margin-bottom: 15px; }
        .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
          width: 100%; } }
    .elementor-widget-woocommerce-cart .woocommerce table.shop_table {
      border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
        float: right;
        font-size: 14px;
        font-weight: 700; }
      @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
        .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
          float: none;
          width: 100%; } }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table th {
        border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions {
        padding: 16px 0 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a {
        display: inline-block; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child {
        display: var(--update-cart-automatically-display, table-row); }
    .elementor-widget-woocommerce-cart .woocommerce table.cart {
      margin-bottom: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart img {
        width: 55px;
        height: auto;
        display: block; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-top: var(--order-summary-rows-gap-top, 20px);
        padding-left: 20px;
        padding-bottom: var(--order-summary-rows-gap-bottom, 20px);
        padding-right: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td span {
          color: var(--order-summary-color, #000000);
          font-size: 14px;
          font-weight: 400; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
          border-top-width: var(--order-summary-items-divider-weight, 1px);
          border-top-style: solid;
          border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
          @media (max-width: ELEMENTOR_SCREEN_TABLET_MIN) {
            .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
              border-top-width: 0; } }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove {
          padding-right: 0;
          padding-left: 0; }
      @media (min-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
        .elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td {
          border-top: none; } }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove {
        position: relative; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-name {
        padding-left: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
        border-top-width: var(--order-summary-items-divider-weight, 1px);
        border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
          border-top: none; } }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MIN) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-right: 0;
        padding-left: 0; } }
    @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart {
        padding: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
          padding: 16px 28px; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
            border-top: none; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td {
          padding-right: 0;
          padding-left: 0; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
            padding: 0; } }
    .elementor-widget-woocommerce-cart .woocommerce a {
      color: var(--links-normal-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce a:hover {
        color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      padding-top: 0;
      padding-bottom: 8px;
      padding-right: 0;
      padding-left: 20px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      margin-bottom: var(--sections-title-spacing, 1rem);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      padding-bottom: var(--order-summary-title-spacing, 8px);
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart td::before {
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button::after {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000); }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td, .elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td {
        padding-right: 0; } }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: var(--forms-fields-normal-color, #818a91); }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: var(--forms-fields-focus-color, #818a91);
    border-color: var(--forms-fields-focus-border-color, #818a91);
    transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }

.elementor-widget-woocommerce-my-account {
  font-family: Roboto, sans-serif;
  color: #818a91;
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table {
    border: none;
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    background-color: var(--sections-background-color, #ffffff); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px 3px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,
  .elementor-widget-woocommerce-my-account .e-my-account-tab address {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content {
    border: 0; }
    .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
      padding: 0;
      border: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    margin-bottom: 40px; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads,
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px 3px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content > div > p {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: var(--forms-fields-normal-background-color, #f7f7f7);
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: var(--forms-fields-focus-background-color, #f7f7f7);
      border-color: var(--forms-fields-focus-border-color, initial);
      transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below {
    background-color: var(--forms-fields-normal-background-color, #f7f7f7); }
  .elementor-widget-woocommerce-my-account .woocommerce ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce-message {
    font-size: 14px; }
  .elementor-widget-woocommerce-my-account .woocommerce address {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a:hover {
      color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover {
      background-color: initial; }
    .elementor-widget-woocommerce-my-account .woocommerce a.button:hover {
      background-color: initial; }
  .elementor-widget-woocommerce-my-account .woocommerce em {
    font-size: 12px;
    color: var(--login-messages-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .form-row {
    padding-left: var(--forms-columns-gap-padding-left, 0px);
    padding-right: var(--forms-columns-gap-padding-right, 0px);
    margin-left: var(--forms-columns-gap-margin-left, 0px);
    margin-right: var(--forms-columns-gap-margin-right, 0px);
    margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row label {
      color: var(--forms-labels-color, #818a91);
      margin-bottom: var(--forms-label-spacing, 0px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,
    .elementor-widget-woocommerce-my-account .woocommerce .form-row select {
      color: var(--forms-fields-normal-color, #818a91);
      border-radius: var(--forms-fields-border-radius, 0px);
      padding: var(--forms-fields-padding, 16px);
      background: #f7f7f7;
      border: none;
      font-size: 14px; }
      .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,
      .elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        border-color: var(--forms-fields-focus-border-color, #818a91);
        transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field {
    margin-bottom: 5px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text {
    margin-bottom: 15px;
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword {
    font-size: 12px;
    margin-bottom: 0px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    width: 50%;
    /* 50% to match the design - it would normally be full width */ }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p {
      color: var(--general-text-color, #818a91); }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first {
      width: 100%; }
  .elementor-widget-woocommerce-my-account .woocommerce .login,
  .elementor-widget-woocommerce-my-account .woocommerce .register,
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px);
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .login .button,
    .elementor-widget-woocommerce-my-account .woocommerce .register .button,
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button {
      background: #5bc0de;
      border: none;
      color: var(--forms-buttons-normal-text-color, #ffffff);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: var(--forms-buttons-padding, 12px 32px); }
      .elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover {
        color: var(--forms-buttons-hover-text-color, #ffffff);
        transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3) {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    margin-top: 10px;
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox {
    vertical-align: middle; }
  .elementor-widget-woocommerce-my-account .woocommerce p:last-of-type {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span {
    color: var(--checkboxes-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tr,
  .elementor-widget-woocommerce-my-account .woocommerce td,
  .elementor-widget-woocommerce-my-account .woocommerce th {
    border: none; }
  .elementor-widget-woocommerce-my-account .woocommerce h2,
  .elementor-widget-woocommerce-my-account .woocommerce h3 {
    color: var(--typography-section-titles-color, #000000);
    margin-top: 0;
    margin-bottom: var(--section-title-spacing, 45px);
    font-weight: 400; }
  .elementor-widget-woocommerce-my-account .woocommerce strong {
    color: var(--general-text-color, #000000); }
    .elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label {
      color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta {
    color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .product-quantity {
    font-weight: 400;
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
    float: right;
    width: 25%;
    /* 25% to match the design */ }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul {
      padding-inline-start: 0; }
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li {
        list-style-type: none;
        margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
        display: inline-block;
        width: 100%;
        /* add a Divider between the tabs that is outside of the margins */ }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li::after {
          content: "";
          display: block;
          width: 100%;
          background-color: var(--tabs-divider-color, #818a91);
          height: var(--tabs-divider-weight, 0px);
          position: relative;
          top: calc(var(--tabs-spacing, 2px) / 2); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a {
          color: var(--tabs-active-color, #5bc0de);
          background: #eceeef;
          border-color: var(--tabs-active-border-color, transparent); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
          font-style: normal;
          font-weight: bold;
          font-size: 14px;
          color: var(--tabs-normal-color, #818a91);
          display: block;
          padding: var(--tabs-padding, 12px 20px);
          text-align: var(--tabs-alignment, start);
          background: #f7f7f7;
          border-radius: var(--tabs-border-radius, 0px);
          border-style: var(--tabs-border-type, solid);
          border-color: var(--tabs-border-color, transparent);
          border-width: 0px; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover {
            color: var(--tabs-hover-color, #5bc0de);
            border-color: var(--tabs-hover-border-color, transparent); }
          @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
            .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
              padding: var(--tabs-padding, 10px); } }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard {
          margin-top: 0; }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout {
          margin-bottom: 0; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout::after {
            display: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
    float: left;
    width: 75%;
    /* 75% to match the design */
    padding: 0;
    padding-right: var(--tab-content-spacing, 6%);
    /* 6% to match the design */ }
    @media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
        width: 100%;
        padding: var(--tab-content-spacing, 6%) 0 0 0; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper {
      font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type {
      margin-top: 30px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark {
      background-color: transparent;
      font-weight: bold;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child th,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child th {
    border-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th {
    border-top: 0;
    padding-right: 0;
    padding-top: 0;
    padding-bottom: var(--tables-titles-spacing, 9px); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > th,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > th {
    background-color: transparent;
    padding-right: 0;
    padding-top: var(--order-summary-rows-gap-top, 9px);
    padding-bottom: var(--order-summary-rows-gap-bottom, 9px);
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .shop_table {
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table td, .elementor-widget-woocommerce-my-account .woocommerce .shop_table th {
      border-top-style: var(--tables-divider-border-type, solid);
      border-top-width: var(--tables-divider-border-width, 1px);
      border-top-color: var(--tables-divider-border-color, #D4D4D4); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th {
      color: var(--tables-title-color, #000000); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span {
        color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td {
    padding-right: 0;
    color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td {
    border-top: none;
    padding-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .order-again .button {
    background: transparent;
    border: 2px solid #5bc0de;
    border-style: var(--tables-buttons-border-type, solid);
    border-color: var(--tables-buttons-border-color, #5bc0de);
    border-width: 2px;
    border-radius: var(--tables-button-border-radius, 3px);
    vertical-align: middle;
    color: var(--tables-button-normal-text-color, #818a91);
    margin-top: 0;
    margin-bottom: 0;
    padding: var(--tables-button-padding, 12px 32px); }
    .elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover {
      color: var(--tables-button-hover-text-color, #818a91);
      transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .title h3, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3 {
    float: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-Address address, .elementor-widget-woocommerce-my-account .woocommerce-Addresses address {
    padding: var(--sections-padding, 45px 30px 16px 30px); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .edit, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit {
    float: right;
    position: absolute;
    margin-right: var(--edit-link-margin-start, 30px);
    margin-top: var(--edit-link-margin-top, 10px); }
  .elementor-widget-woocommerce-my-account .woocommerce .u-columns {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset {
    border: none;
    padding: 0;
    margin-inline-start: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend {
      font-weight: 700;
      padding: 20px 0;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button {
    background: #5bc0de;
    border: none;
    color: var(--forms-buttons-normal-text-color, #ffffff);
    border-radius: var(--forms-buttons-border-radius, 3px);
    padding: var(--forms-buttons-padding, 12px 32px);
    margin-top: 20px; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover {
      color: var(--forms-buttons-hover-text-color, #ffffff);
      transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-pagination {
    padding: 16px 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-pagination .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td {
    vertical-align: top;
    line-height: unset; }

.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  float: none;
  width: 100%; }
  .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
    display: inline-block; }

.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation {
  display: block; }

.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: block; }
  .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    justify-content: var(--tabs-container-justify-content, space-between); }
    @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
        display: block; } }
    .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
      display: inline-block;
      width: var(--tab-width, 100%);
      padding: 0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);
      margin: 0;
      border-right-color: var(--tabs-divider-color, #818a91);
      border-right-width: var(--tabs-divider-weight, 0px);
      border-right-style: solid; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li::after {
        display: none; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type {
        padding-right: 0; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type {
        padding-left: 0;
        border-right-width: 0; }
      @media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
        .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
          margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
          display: inline-block;
          width: 100%; } }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-content {
  float: none;
  width: 100%;
  padding: var(--tab-content-spacing, 50px) 0 0 0; }

/**
 * Specific styling in the Editor.
 */
.elementor-editor-active,
.elementor-editor-preview {
  /**
	 * Prep for the js switching of tabs when in the editor.
	 */
  /**
	 * Disable all but the first 'View' order button as
	 * this is the only order loaded for preview purposes.
	 */ }
  .elementor-editor-active .elementor-widget-container,
  .elementor-editor-preview .elementor-widget-container {
    min-height: 1px; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a {
    pointer-events: none; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button {
    pointer-events: none;
    opacity: .3; }

/**
 * Hide all the other My Account pages' content in the Editor except the first one - dashboard page
 */
.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type) {
  display: none; }

.product .count {
  background-color: inherit; }

.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2 {
  display: none; }

.woocommerce div.product.elementor form.cart div.product-addon {
  flex-basis: 100%;
  flex-shrink: 0; }

.e-sticky-right-column--active {
  position: sticky;
  top: 0; }

.elementor-theme-builder-content-area {
  height: 400px; }

.elementor-location-header:before,
.elementor-location-footer:before {
  content: '';
  display: table;
  clear: both; }

.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post {
  display: block; }

.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid {
  color: #D4D4D4;
  border: none;
  border-top: 1px solid;
  border-bottom: 1px solid;
  padding-top: 10px;
  padding-bottom: 10px; }

.elementor-post-navigation-borders-yes .elementor-post-navigation__separator {
  height: 100%;
  width: 1px;
  margin: 0 auto;
  background-color: #D4D4D4; }

.elementor-post-navigation {
  overflow: hidden;
  display: flex; }
  .elementor-post-navigation .post-navigation__arrow-wrapper {
    color: #D4D4D4; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev {
      font-size: 30px;
      padding-left: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next {
      font-size: 30px;
      padding-right: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper i {
      transform: translateY(-5%); }
  .elementor-post-navigation .elementor-post-navigation__link__prev, .elementor-post-navigation .elementor-post-navigation__link__next {
    overflow: hidden; }
  .elementor-post-navigation .elementor-post-navigation__link a {
    display: flex;
    align-items: center;
    max-width: 100%; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__next--label {
    text-transform: uppercase;
    font-size: 0.8em; }
  .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--title {
    font-size: 0.7em; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--label, .elementor-post-navigation .post-navigation__next--title {
    overflow: hidden;
    text-overflow: ellipsis; }
  .elementor-post-navigation span.elementor-post-navigation__link__next {
    text-align: left; }
  .elementor-post-navigation span.elementor-post-navigation__link__next, .elementor-post-navigation span.elementor-post-navigation__link__prev {
    display: flex;
    flex-direction: column; }

.elementor-post-navigation .elementor-grid {
  justify-content: space-between; }

.elementor-post-navigation .elementor-post-navigation__link {
  width: calc( 50% - ( 1px / 2 ));
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis; }

.elementor-post-navigation .elementor-post-navigation__separator-wrapper {
  text-align: center; }

.elementor-post-navigation .elementor-post-navigation__next {
  text-align: left; }
  .elementor-post-navigation .elementor-post-navigation__next a {
    float: left; }

.elementor-search-form {
  display: block;
  transition: 0.2s;
  /*------ Reset ------*/ }
  .elementor-search-form .e-font-icon-svg-container {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center; }
  .elementor-search-form input[type="search"], .elementor-search-form button {
    margin: 0;
    border: 0;
    padding: 0;
    display: inline-block;
    vertical-align: middle;
    white-space: normal;
    background: none;
    line-height: 1;
    min-width: 0;
    font-size: 15px;
    -webkit-appearance: none;
    -moz-appearance: none; }
    .elementor-search-form input[type="search"]:focus, .elementor-search-form button:focus {
      outline: 0;
      color: inherit; }
  .elementor-search-form button {
    background-color: #818a91;
    font-size: var(--e-search-form-submit-icon-size, 16px);
    color: #fff;
    border-radius: 0; }
  .elementor-search-form__container {
    display: flex;
    transition: 0.2s;
    overflow: hidden;
    border: 0 solid transparent;
    min-height: 50px; }
    .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      background: #eceeef; }
  .elementor-search-form__input {
    flex-basis: 100%;
    color: #55595c;
    transition: color 0.2s; }
    .elementor-search-form__input::-webkit-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-ms-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
  .elementor-search-form__submit {
    transition: color 0.2s, background 0.2s;
    font-size: var(--e-search-form-submit-icon-size, 16px); }
    .elementor-search-form__submit svg {
      fill: var(--e-search-form-submit-text-color, #fff);
      width: var(--e-search-form-submit-icon-size, 16px);
      height: var(--e-search-form-submit-icon-size, 16px); }
  .elementor-search-form .elementor-search-form__submit, .elementor-search-form .elementor-search-form__submit:hover {
    color: var(--e-search-form-submit-text-color, #fff);
    border: none;
    border-radius: 0; }
  .elementor-search-form--button-type-text .elementor-search-form__submit {
    flex-shrink: 0; }
  .elementor-search-form--skin-minimal .elementor-search-form__icon {
    opacity: 0.6;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    color: #55595c;
    fill: #55595c;
    font-size: var(--e-search-form-icon-size-minimal, 15px); }
    .elementor-search-form--skin-minimal .elementor-search-form__icon svg {
      width: var(--e-search-form-icon-size-minimal, 15px);
      height: var(--e-search-form-icon-size-minimal, 15px); }
  .elementor-search-form--skin-full_screen .elementor-search-form input[type="search"].elementor-search-form__input {
    font-size: 50px;
    text-align: center;
    border-style: solid;
    border-width: 0 0 1px 0;
    border-color: #fff;
    line-height: 1.5;
    color: #fff; }
  .elementor-search-form--skin-full_screen .elementor-search-form__toggle {
    display: inline-block;
    cursor: pointer;
    vertical-align: middle;
    color: var(--e-search-form-toggle-color, #494c4f);
    font-size: var(--e-search-form-toggle-size, 33px); }
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle i,
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container {
      position: relative;
      display: block;
      transition: 0.2s;
      width: var(--e-search-form-toggle-size, 33px);
      height: var(--e-search-form-toggle-size, 33px);
      background-color: var(--e-search-form-toggle-background-color, rgba(0, 0, 0, 0.05));
      border-style: solid;
      border-color: var(--e-search-form-toggle-color, #494c4f);
      border-width: var(--e-search-form-toggle-border-width, 0);
      border-radius: var(--e-search-form-toggle-border-radius, 3px); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        position: absolute;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before {
        font-size: var(--e-search-form-toggle-icon-size, 0.55em); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        fill: var(--e-search-form-toggle-color, #494c4f);
        width: var(--e-search-form-toggle-icon-size, 0.55em);
        height: var(--e-search-form-toggle-icon-size, 0.55em); }
  .elementor-search-form--skin-full_screen .elementor-search-form__container {
    transition: 0.3s;
    align-items: center;
    position: fixed;
    z-index: 9998;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    height: 100vh;
    padding: 0 15%;
    background-color: rgba(0, 0, 0, 0.8); }
    .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      overflow: hidden;
      opacity: 0;
      transform: scale(0); }
      .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button {
        display: none; }

.elementor-author-box {
  display: flex;
  align-items: center; }
  .elementor-author-box__avatar {
    flex-shrink: 0;
    margin-left: 25px; }
    .elementor-author-box__avatar img {
      width: 100px;
      border-radius: 500px;
      object-fit: cover; }
  .elementor-author-box__text {
    flex-grow: 1;
    font-size: 17px; }
  .elementor-author-box__name {
    font-size: 24px;
    margin-bottom: 5px; }
  .elementor-author-box__bio {
    margin-bottom: 0.8em; }
    .elementor-author-box__bio p {
      margin-bottom: 0.8em; }
      .elementor-author-box__bio p:last-of-type {
        margin-bottom: 0; }
  .elementor-author-box--layout-image-left .elementor-author-box {
    flex-direction: row-reverse; }
    .elementor-author-box--layout-image-left .elementor-author-box__avatar {
      margin-left: 0;
      margin-right: 25px; }
  .elementor-author-box--layout-image-right .elementor-author-box {
    flex-direction: row; }
    .elementor-author-box--layout-image-right .elementor-author-box__avatar {
      margin-right: 0;
      margin-left: 25px; }
  .elementor-author-box--layout-image-above .elementor-author-box {
    display: block; }
    .elementor-author-box--layout-image-above .elementor-author-box__avatar {
      margin: 0 auto 15px;
      display: inline-block; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar {
    margin-left: 0; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar {
    margin-right: 0; }
  .elementor-author-box--align-left .elementor-author-box {
    text-align: left; }
  .elementor-author-box--align-right .elementor-author-box {
    text-align: right; }
  .elementor-author-box--align-center .elementor-author-box {
    text-align: center; }

.elementor-button.elementor-author-box__button {
  border: solid 2px #55595c;
  font-size: 15px;
  font-weight: 100;
  padding: 10px 18px; }
  .elementor-button.elementor-author-box__button, .elementor-button.elementor-author-box__button:hover {
    background: transparent;
    color: #55595c; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar {
  align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar {
  align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar {
  align-self: center; }

.elementor-post-info__terms-list {
  display: inline-block; }

.elementor-post-info .elementor-icon-list-icon .elementor-avatar {
  border-radius: 100%; }

.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after {
  margin: initial; }

.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text {
  display: inline-block; }
  .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a, .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span {
    display: inline; }

.elementor-widget-breadcrumbs {
  font-size: 0.85em; }
  .elementor-widget-breadcrumbs p {
    margin-bottom: 0; }

.elementor-sitemap-wrap {
  display: flex;
  flex-flow: row wrap; }

.elementor-sticky--active {
  z-index: 99; }

[data-elementor-type="popup"]:not(.elementor-edit-area) {
  display: none; }

[data-elementor-type="popup"] .elementor-section-wrap:not(:empty) + #elementor-add-new-section {
  display: none; }

.elementor-popup-modal {
  display: flex;
  pointer-events: none;
  background-color: transparent;
  user-select: auto; }
  .elementor-popup-modal .dialog-header, .elementor-popup-modal .dialog-buttons-wrapper {
    display: none; }
  .elementor-popup-modal .dialog-close-button {
    display: none;
    top: 20px;
    margin-top: 0;
    left: 20px;
    opacity: 1;
    z-index: 9999;
    pointer-events: all; }
    .elementor-popup-modal .dialog-close-button svg {
      fill: #373a3c;
      height: 1em;
      width: 1em; }
  .elementor-popup-modal .dialog-widget-content {
    width: initial;
    overflow: visible;
    max-width: 100%;
    max-height: 100%;
    border-radius: 0;
    box-shadow: none;
    pointer-events: all; }
  .elementor-popup-modal .dialog-message {
    width: 640px;
    max-width: 100vw;
    max-height: 100vh;
    padding: 0;
    overflow: auto;
    display: flex; }
  .elementor-popup-modal .elementor {
    width: 100%; }

.elementor-motion-effects-element, .elementor-motion-effects-layer {
  transition-property: transform, opacity;
  transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
  transition-duration: 1s; }

.elementor-motion-effects-container {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); }

.elementor-motion-effects-layer {
  position: absolute;
  top: 0;
  left: 0;
  background-repeat: no-repeat;
  background-size: cover; }

.elementor-motion-effects-perspective {
  perspective: 1200px; }

.elementor-widget-posts:after, .elementor-widget-archive-posts:after {
  display: none; }

.elementor-posts-container.elementor-posts-masonry {
  align-items: flex-start; }

.elementor-posts-container:not(.elementor-posts-masonry) {
  align-items: stretch; }

.elementor-posts-container .elementor-post {
  padding: 0;
  margin: 0; }
  .elementor-posts-container .elementor-post__thumbnail {
    overflow: hidden; }
    .elementor-posts-container .elementor-post__thumbnail img {
      display: block;
      width: 100%;
      max-height: none;
      max-width: none;
      transition: filter 0.3s; }
    .elementor-posts-container .elementor-post__thumbnail__link {
      position: relative;
      display: block;
      width: 100%; }

.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0; }
  .elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail img {
    height: auto;
    position: absolute;
    top: calc( 50% + 1px);
    left: calc( 50% + 1px);
    transform: scale(1.01) translate(-50%, -50%); }
  .elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail.elementor-fit-height img {
    height: 100%;
    width: auto; }

.elementor-posts .elementor-post {
  display: flex;
  transition-property: background, border, box-shadow;
  transition-duration: 0.25s; }
  .elementor-posts .elementor-post__title {
    font-size: 18px;
    margin: 0; }
  .elementor-posts .elementor-post__excerpt {
    margin-bottom: 10px; }
    .elementor-posts .elementor-post__excerpt p {
      margin: 0;
      line-height: 1.5em;
      font-size: 14px;
      color: #777; }
  .elementor-posts .elementor-post__meta-data {
    line-height: 1.3em;
    font-size: 12px;
    margin-bottom: 13px;
    color: #adadad; }
  .elementor-posts .elementor-post__read-more {
    font-size: 12px;
    font-weight: bold; }
  .elementor-posts .elementor-post__thumbnail {
    position: relative; }

.elementor-posts--skin-classic {
  display: grid;
  flex-wrap: wrap; }
  .elementor-posts--skin-classic:not(.elementor-posts-masonry) {
    align-items: stretch; }
  .elementor-posts--skin-classic .elementor-post {
    overflow: hidden; }
    .elementor-posts--skin-classic .elementor-post__text {
      flex-grow: 1; }

.elementor-posts--align-left .elementor-post {
  text-align: left; }

.elementor-posts--align-right .elementor-post {
  text-align: right; }

.elementor-posts--align-center .elementor-post {
  text-align: center; }

.elementor-posts--thumbnail-top .elementor-post {
  display: block;
  /*

			 used to be
			 align-self: flex-start;
			 until v2.1

			*/ }
  .elementor-posts--thumbnail-top .elementor-post__thumbnail__link {
    margin-bottom: 20px; }
  .elementor-posts--thumbnail-top .elementor-post__text {
    width: 100%; }

.elementor-posts--thumbnail-top.elementor-posts--align-left .elementor-post__thumbnail__link {
  margin-right: auto; }

.elementor-posts--thumbnail-top.elementor-posts--align-right .elementor-post__thumbnail__link {
  margin-left: auto; }

.elementor-posts--thumbnail-top.elementor-posts--align-center .elementor-post__thumbnail__link {
  margin-right: auto;
  margin-left: auto; }

.elementor-posts--thumbnail-left .elementor-post__thumbnail__link, .elementor-posts--thumbnail-right .elementor-post__thumbnail__link {
  flex-shrink: 0;
  width: 25%; }

.elementor-posts--thumbnail-left .elementor-post__thumbnail__link {
  order: 5;
  margin-right: 20px; }

.elementor-posts--thumbnail-right .elementor-post__thumbnail__link {
  order: 0;
  margin-left: 20px; }

.elementor-posts--thumbnail-none .elementor-posts-container .elementor-post__thumbnail__link {
  display: none; }

.elementor-posts .elementor-post__card {
  overflow: hidden;
  position: relative;
  background-color: #fff;
  width: 100%;
  min-height: 100%;
  border-radius: 3px;
  border: 0 solid #818a91;
  transition: all 0.25s; }
  .elementor-posts .elementor-post__card .elementor-post__thumbnail {
    position: relative;
    transform-style: preserve-3d;
    -webkit-transform-style: preserve-3d; }
    .elementor-posts .elementor-post__card .elementor-post__thumbnail img {
      width: calc( 100% + 1px); }
  .elementor-posts .elementor-post__card .elementor-post__text {
    padding: 0 30px;
    margin-bottom: 0;
    margin-top: 20px; }
  .elementor-posts .elementor-post__card .elementor-post__read-more {
    margin-bottom: 20px;
    display: inline-block; }
  .elementor-posts .elementor-post__card .elementor-post__meta-data {
    padding: 15px 30px;
    margin-bottom: 0;
    border-top: 1px solid #eaeaea; }
    .elementor-posts .elementor-post__card .elementor-post__meta-data span + span:before {
      margin: 0 5px; }
  .elementor-posts .elementor-post__card .elementor-post__title {
    font-size: 21px; }
  .elementor-posts .elementor-post__card .elementor-post__excerpt {
    line-height: 1.7; }
  .elementor-posts .elementor-post__card .elementor-post__excerpt, .elementor-posts .elementor-post__card .elementor-post__title {
    margin-bottom: 25px; }
  .elementor-posts .elementor-post__card .elementor-post__badge, .elementor-posts .elementor-post__card .elementor-post__read-more {
    text-transform: uppercase; }

.elementor-posts .elementor-post__badge {
  position: absolute;
  top: 0;
  background: #818a91;
  color: #fff;
  font-size: 12px;
  padding: 0.6em 1.2em;
  line-height: 1;
  font-weight: 400;
  margin: 20px;
  border-radius: 999px; }

.elementor-posts .elementor-post__avatar {
  position: relative;
  padding: 0 30px;
  width: 100%;
  top: -25px;
  height: 0;
  pointer-events: none; }
  .elementor-posts .elementor-post__avatar img {
    border-radius: 50%;
    width: 60px;
    pointer-events: all;
    transform: translateY(-50%); }

.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card, .elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card {
  display: flex;
  flex-direction: column;
  justify-content: flex-start; }

.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data, .elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data {
  margin-top: auto; }

.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar {
  padding-top: 0;
  position: static;
  height: auto; }
  .elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar img.avatar {
    transform: translateY(0);
    vertical-align: bottom; }

.elementor-posts--show-avatar .elementor-post__thumbnail__link {
  margin-bottom: 25px; }

.elementor-posts__hover-gradient .elementor-post__card .elementor-post__thumbnail__link:after {
  display: block;
  content: '';
  background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 75%);
  background-repeat: no-repeat;
  height: 100%;
  width: 100%;
  position: absolute;
  bottom: 0;
  opacity: 1;
  transition: all 0.3s ease-out; }

.elementor-posts__hover-gradient .elementor-post__card:hover .elementor-post__thumbnail__link:after {
  opacity: 0.5; }

.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img {
  height: 100%; }

.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: calc( 100% + 1px); }

.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img {
  height: 115%; }

.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: 115%; }

.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img {
  height: 115%; }

.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: 115%; }

.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img {
  height: 100%; }

.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: calc( 100% + 1px); }

.elementor-posts__hover-zoom-out .elementor-post__thumbnail img, .elementor-posts__hover-zoom-in .elementor-post__thumbnail img {
  transition: filter 0.3s, height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1); }

.elementor-card-shadow-yes .elementor-post__card {
  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.15); }
  .elementor-card-shadow-yes .elementor-post__card:hover {
    box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.15); }

.elementor-posts--skin-full_content article {
  flex-direction: column;
  overflow: hidden; }
  .elementor-posts--skin-full_content article .elementor-post__thumbnail {
    padding-bottom: 0; }

body.elementor-editor-active .elementor-posts--skin-full_content,
body.elementor-editor-active .elementor-posts--skin-archive_full_content {
  pointer-events: none; }
  body.elementor-editor-active .elementor-posts--skin-full_content .elementor-post__thumbnail__link,
  body.elementor-editor-active .elementor-posts--skin-archive_full_content .elementor-post__thumbnail__link {
    display: none; }

body.elementor-editor-active .elementor-posts--show-thumbnail .elementor-post__thumbnail__link {
  display: block; }

.elementor-portfolio__filters {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  padding: 0;
  margin: 0; }

.elementor-portfolio__filter {
  margin: 0;
  cursor: pointer;
  padding: 8px; }

.elementor-portfolio-item {
  align-self: flex-start;
  transition-property: transform, opacity;
  transition-timing-function: ease-in-out;
  transform-style: preserve-3d;
  overflow: hidden;
  margin: 0; }
  .elementor-portfolio-item__title {
    margin: 0;
    padding: 0;
    line-height: 1;
    font-size: 18px;
    color: #fff; }
  .elementor-portfolio-item__tags__separator:before {
    content: ', '; }
  .elementor-portfolio-item__overlay {
    opacity: 0;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 15px;
    transition: opacity 1s;
    display: flex;
    flex-direction: column;
    justify-content: center;
    text-align: center;
    overflow: hidden;
    background-color: rgba(129, 138, 145, 0.8); }
    .elementor-portfolio-item__overlay:hover {
      opacity: 1;
      transition: opacity 0.5s; }
  .elementor-portfolio-item__img img[src=""] {
    background-color: rgba(0, 0, 0, 0.1);
    height: 100%; }

.elementor-portfolio.elementor-has-item-ratio {
  transition: height 0.5s; }
  .elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail {
    position: absolute;
    background-color: rgba(0, 0, 0, 0.1); }
    .elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail__link {
      padding-bottom: 56.25%; }

.elementor ul li.elementor-portfolio__filter {
  list-style-type: none; }

.elementor-widget-posts.load-more-align-center .elementor-button-wrapper, .elementor-widget-archive-posts.load-more-align-center .elementor-button-wrapper {
  text-align: center; }

.elementor-widget-posts.load-more-align-start .elementor-button-wrapper, .elementor-widget-archive-posts.load-more-align-start .elementor-button-wrapper {
  text-align: start; }

.elementor-widget-posts.load-more-align-end .elementor-button-wrapper, .elementor-widget-archive-posts.load-more-align-end .elementor-button-wrapper {
  text-align: end; }

.elementor-widget-posts.load-more-align-justify .elementor-button, .elementor-widget-archive-posts.load-more-align-justify .elementor-button {
  width: 100%; }

.elementor-widget-posts .e-load-more-spinner, .elementor-widget-archive-posts .e-load-more-spinner {
  display: flex; }
  .elementor-widget-posts .e-load-more-spinner i,
  .elementor-widget-posts .e-load-more-spinner svg, .elementor-widget-archive-posts .e-load-more-spinner i,
  .elementor-widget-archive-posts .e-load-more-spinner svg {
    margin: 0 auto;
    display: none; }
  .elementor-widget-posts .e-load-more-spinner i, .elementor-widget-archive-posts .e-load-more-spinner i {
    color: var(--load-more-spinner-color); }
  .elementor-widget-posts .e-load-more-spinner svg, .elementor-widget-archive-posts .e-load-more-spinner svg {
    fill: var(--load-more-spinner-color);
    height: 1em;
    width: 1em; }

.elementor-widget-posts .e-load-more-message, .elementor-widget-archive-posts .e-load-more-message {
  color: var(--load-more-message-color);
  text-align: var(--load-more-message-alignment, center);
  display: none;
  margin-top: var(--load-more—spacing, 30px); }

.elementor-widget-posts.e-load-more-pagination-loading, .elementor-widget-archive-posts.e-load-more-pagination-loading {
  cursor: default; }
  .elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner, .elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner {
    margin-top: var(--load-more—spacing, 30px); }
    .elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner i,
    .elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner svg, .elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner i,
    .elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner svg {
      display: flex; }
  .elementor-widget-posts.e-load-more-pagination-loading .elementor-button-content-wrapper, .elementor-widget-archive-posts.e-load-more-pagination-loading .elementor-button-content-wrapper {
    visibility: hidden; }

.elementor-widget-posts.e-load-more-pagination-end .elementor-button-wrapper, .elementor-widget-archive-posts.e-load-more-pagination-end .elementor-button-wrapper {
  display: none; }

.elementor-widget-posts.e-load-more-pagination-end .e-load-more-message, .elementor-widget-archive-posts.e-load-more-pagination-end .e-load-more-message {
  display: block; }

.elementor-widget-posts.e-load-more-no-spinner .elementor-button-content-wrapper, .elementor-widget-archive-posts.e-load-more-no-spinner .elementor-button-content-wrapper {
  visibility: visible; }

.elementor-widget-posts .elementor-button-wrapper, .elementor-widget-archive-posts .elementor-button-wrapper {
  margin-top: var(--load-more—spacing, 30px); }
  .elementor-widget-posts .elementor-button-wrapper .e-load-more-spinner, .elementor-widget-archive-posts .elementor-button-wrapper .e-load-more-spinner {
    position: absolute;
    right: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    margin: inherit; }
  .elementor-widget-posts .elementor-button-wrapper .elementor-button, .elementor-widget-archive-posts .elementor-button-wrapper .elementor-button {
    cursor: pointer;
    position: relative; }

/*
Multi Steps Form

Currently manually overwriting  - need to find a better solution,
the source property is coming from element/dev/scss...

*/
/* TODO: check why elementor-hidden class is not working */
.elementor-hidden,
.elementor-button.elementor-hidden {
  display: none; }

.e-form__step {
  width: 100%; }
  .e-form__step:not(.elementor-hidden) {
    display: flex;
    flex-wrap: wrap; }

.e-form__buttons {
  flex-wrap: wrap; }
  .e-form__buttons, .e-form__buttons__wrapper {
    display: flex; }

.e-form__indicators {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: nowrap;
  font-size: 13px;
  margin-bottom: var(--e-form-steps-indicators-spacing); }
  .e-form__indicators__indicator {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex-basis: 0;
    padding: 0 var(--e-form-steps-divider-gap); }
    .e-form__indicators__indicator__progress {
      width: 100%;
      position: relative;
      background-color: var(--e-form-steps-indicator-progress-background-color);
      border-radius: var(--e-form-steps-indicator-progress-border-radius);
      overflow: hidden; }
      .e-form__indicators__indicator__progress__meter {
        width: var(--e-form-steps-indicator-progress-meter-width, 0);
        height: var(--e-form-steps-indicator-progress-height);
        line-height: var(--e-form-steps-indicator-progress-height);
        padding-right: 15px;
        border-radius: var(--e-form-steps-indicator-progress-border-radius);
        background-color: var(--e-form-steps-indicator-progress-color);
        color: var(--e-form-steps-indicator-progress-meter-color);
        text-align: right;
        transition: width 0.1s linear; }
    .e-form__indicators__indicator:first-child {
      padding-left: 0; }
    .e-form__indicators__indicator:last-child {
      padding-right: 0; }
    .e-form__indicators__indicator--state-inactive {
      color: var(--e-form-steps-indicator-inactive-primary-color, #C2CBD2); }
      .e-form__indicators__indicator--state-inactive [class*="indicator--shape-"]:not(.e-form__indicators__indicator--shape-none) {
        background-color: var(--e-form-steps-indicator-inactive-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-inactive svg,
      .e-form__indicators__indicator--state-inactive object {
        fill: var(--e-form-steps-indicator-inactive-primary-color, #C2CBD2); }
    .e-form__indicators__indicator--state-active {
      color: var(--e-form-steps-indicator-active-primary-color, #39B54A);
      border-color: var(--e-form-steps-indicator-active-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-active [class*="indicator--shape-"]:not(.e-form__indicators__indicator--shape-none) {
        background-color: var(--e-form-steps-indicator-active-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-active svg,
      .e-form__indicators__indicator--state-active object {
        fill: var(--e-form-steps-indicator-active-primary-color, #39B54A); }
    .e-form__indicators__indicator--state-completed {
      color: var(--e-form-steps-indicator-completed-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-completed [class*="indicator--shape-"]:not(.e-form__indicators__indicator--shape-none) {
        background-color: var(--e-form-steps-indicator-completed-primary-color, #39B54A); }
      .e-form__indicators__indicator--state-completed .e-form__indicators__indicator__label {
        color: var(--e-form-steps-indicator-completed-primary-color, #39B54A); }
      .e-form__indicators__indicator--state-completed .e-form__indicators__indicator--shape-none {
        color: var(--e-form-steps-indicator-completed-primary-color, #39B54A);
        background-color: initial; }
      .e-form__indicators__indicator--state-completed svg,
      .e-form__indicators__indicator--state-completed object {
        fill: var(--e-form-steps-indicator-completed-secondary-color, #FFF); }
    .e-form__indicators__indicator__icon {
      width: var(--e-form-steps-indicator-padding, 30px);
      height: var(--e-form-steps-indicator-padding, 30px);
      font-size: var(--e-form-steps-indicator-icon-size);
      border-width: 1px;
      border-style: solid;
      display: flex;
      justify-content: center;
      align-items: center;
      overflow: hidden;
      margin-bottom: 10px; }
      .e-form__indicators__indicator__icon img,
      .e-form__indicators__indicator__icon svg,
      .e-form__indicators__indicator__icon object {
        width: var(--e-form-steps-indicator-icon-size);
        height: auto; }
      .e-form__indicators__indicator__icon .e-font-icon-svg {
        height: 1em; }
    .e-form__indicators__indicator__number {
      width: var(--e-form-steps-indicator-padding, 30px);
      height: var(--e-form-steps-indicator-padding, 30px);
      border-width: 1px;
      border-style: solid;
      display: flex;
      justify-content: center;
      align-items: center;
      margin-bottom: 10px; }
    .e-form__indicators__indicator--shape-circle {
      border-radius: 50%; }
    .e-form__indicators__indicator--shape-square {
      border-radius: 0; }
    .e-form__indicators__indicator--shape-rounded {
      border-radius: 5px; }
    .e-form__indicators__indicator--shape-none {
      border: 0; }
    .e-form__indicators__indicator__label {
      text-align: center; }
    .e-form__indicators__indicator__separator {
      width: 100%;
      height: var(--e-form-steps-divider-width);
      background-color: #c2cbd2; }
  .e-form__indicators--type-number, .e-form__indicators--type-number_text, .e-form__indicators--type-icon, .e-form__indicators--type-icon_text {
    align-items: flex-start; }
    .e-form__indicators--type-number .e-form__indicators__indicator__separator, .e-form__indicators--type-number_text .e-form__indicators__indicator__separator, .e-form__indicators--type-icon .e-form__indicators__indicator__separator, .e-form__indicators--type-icon_text .e-form__indicators__indicator__separator {
      margin-top: calc(var(--e-form-steps-indicator-padding, 30px) / 2 - var(--e-form-steps-divider-width, 1px) / 2); }

/* End OF Multi Steps Form */
.elementor-field-type-hidden {
  display: none; }

.elementor-field-type-html {
  display: inline-block; }

.elementor-login .elementor-remember-me,
.elementor-login .elementor-lost-password {
  font-size: 0.85em; }

.elementor-field-type-recaptcha_v3 .elementor-field-label {
  display: none; }

.elementor-field-type-recaptcha_v3 .grecaptcha-badge {
  z-index: 1; }

.elementor-button .elementor-form-spinner {
  order: 3; }

.elementor-form .elementor-button > span {
  display: flex;
  justify-content: center;
  align-items: center; }

.elementor-form .elementor-button .elementor-button-text {
  white-space: normal;
  flex-grow: 0; }

.elementor-form .elementor-button svg {
  height: auto; }

.elementor-form .elementor-button .e-font-icon-svg {
  height: 1em; }

.elementor-widget-price-list .elementor-price-list {
  list-style: none;
  padding: 0;
  margin: 0; }
  .elementor-widget-price-list .elementor-price-list li {
    margin: 0; }

.elementor-price-list li:not(:last-child) {
  margin-bottom: 20px; }

.elementor-price-list .elementor-price-list-image {
  max-width: 50%;
  flex-shrink: 0;
  padding-left: 25px; }
  .elementor-price-list .elementor-price-list-image img {
    width: 100%; }

.elementor-price-list .elementor-price-list-text,
.elementor-price-list .elementor-price-list-item,
.elementor-price-list .elementor-price-list-header {
  display: flex; }

.elementor-price-list .elementor-price-list-item {
  align-items: flex-start; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-text {
    align-items: flex-start;
    flex-wrap: wrap;
    flex-grow: 1; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-header {
    align-items: center;
    flex-basis: 100%;
    font-size: 19px;
    font-weight: 600;
    margin-bottom: 10px;
    justify-content: space-between; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-title {
    max-width: 80%; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-price {
    font-weight: 600; }
  .elementor-price-list .elementor-price-list-item p.elementor-price-list-description {
    flex-basis: 100%;
    font-size: 14px;
    margin: 0; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-separator {
    flex-grow: 1;
    margin-left: 10px;
    margin-right: 10px;
    border-bottom-style: dotted;
    border-bottom-width: 2px;
    height: 0; }

.elementor-price-table {
  text-align: center; }
  .elementor-price-table .elementor-price-table__header {
    background: var(--e-price-table-header-background-color, #555);
    padding: 20px 0; }
  .elementor-price-table .elementor-price-table__heading {
    margin: 0;
    padding: 0;
    line-height: 1.2;
    font-size: 24px;
    font-weight: 600;
    color: #fff; }
  .elementor-price-table .elementor-price-table__subheading {
    font-size: 13px;
    font-weight: 400;
    color: #fff; }
  .elementor-price-table .elementor-price-table__original-price {
    margin-left: 15px;
    text-decoration: line-through;
    font-size: 0.5em;
    line-height: 1;
    font-weight: 400;
    align-self: center; }
    .elementor-price-table .elementor-price-table__original-price .elementor-price-table__currency {
      font-size: 1em;
      margin: 0; }
  .elementor-price-table .elementor-price-table__price {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    flex-direction: row-reverse;
    color: #555;
    font-weight: 800;
    font-size: 65px;
    padding: 40px 0; }
    .elementor-price-table .elementor-price-table__price .elementor-typo-excluded {
      line-height: initial;
      letter-spacing: initial;
      text-transform: initial;
      font-weight: initial;
      font-size: initial;
      font-style: initial; }
  .elementor-price-table .elementor-price-table__after-price {
    display: flex;
    flex-wrap: wrap;
    text-align: right;
    align-self: stretch;
    align-items: flex-start;
    flex-direction: column; }
  .elementor-price-table .elementor-price-table__integer-part {
    line-height: 0.8; }
  .elementor-price-table .elementor-price-table__currency, .elementor-price-table .elementor-price-table__fractional-part {
    line-height: 1;
    font-size: 0.3em; }
  .elementor-price-table .elementor-price-table__currency {
    margin-left: 3px; }
  .elementor-price-table .elementor-price-table__period {
    width: 100%;
    font-size: 13px;
    font-weight: 400; }
  .elementor-price-table .elementor-price-table__features-list {
    list-style-type: none;
    margin: 0;
    padding: 0;
    line-height: 1;
    color: var(--e-price-table-features-list-color); }
    .elementor-price-table .elementor-price-table__features-list li {
      font-size: 14px;
      line-height: 1;
      margin: 0;
      padding: 0; }
      .elementor-price-table .elementor-price-table__features-list li .elementor-price-table__feature-inner {
        margin-left: 15px;
        margin-right: 15px; }
      .elementor-price-table .elementor-price-table__features-list li:not(:first-child):before {
        content: '';
        display: block;
        border: 0 solid rgba(122, 122, 122, 0.3);
        margin: 10px 12.5%; }
    .elementor-price-table .elementor-price-table__features-list i {
      margin-left: 10px;
      font-size: 1.3em; }
    .elementor-price-table .elementor-price-table__features-list svg {
      margin-left: 10px;
      fill: var(--e-price-table-features-list-color);
      height: 1.3em;
      width: 1.3em; }
    .elementor-price-table .elementor-price-table__features-list svg ~ * {
      vertical-align: text-top; }
  .elementor-price-table .elementor-price-table__footer {
    padding: 30px 0; }
  .elementor-price-table .elementor-price-table__additional_info {
    margin: 0;
    font-size: 13px;
    line-height: 1.4; }
  .elementor-price-table__ribbon {
    position: absolute;
    top: 0;
    left: 0;
    right: auto;
    transform: rotate(0);
    width: 150px;
    overflow: hidden;
    height: 150px; }
    .elementor-price-table__ribbon-inner {
      text-align: center;
      left: 0;
      width: 200%;
      transform: translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);
      margin-top: 35px;
      font-size: 13px;
      line-height: 2;
      font-weight: 800;
      text-transform: uppercase;
      background: #000; }
    .elementor-price-table__ribbon.elementor-ribbon-left {
      transform: rotate(0);
      left: 0;
      right: auto; }
    .elementor-price-table__ribbon.elementor-ribbon-right {
      transform: rotate(90deg);
      left: auto;
      right: 0; }

.elementor-widget-price-table .elementor-widget-container {
  overflow: hidden;
  background-color: #f7f7f7; }

.elementor-flip-box {
  height: 280px;
  position: relative;
  perspective: 1000px;
  transform-style: preserve-3d; }
  @media (max-device-width: ELEMENTOR_SCREEN_TABLET_MAX) {
    .elementor-flip-box {
      cursor: pointer; } }
  .elementor-flip-box__front {
    background-color: #1abc9c; }
  .elementor-flip-box__back {
    background-color: #4054b2;
    display: block; }
  .elementor-flip-box__layer {
    position: absolute;
    width: 100%;
    height: 100%;
    transition: all .6s ease-in-out; }
    .elementor-flip-box__layer__overlay {
      display: flex;
      width: 100%;
      height: 100%;
      flex-direction: column;
      justify-content: center;
      align-items: stretch;
      text-align: center;
      padding: 35px;
      color: white; }
    .elementor-flip-box__layer__title {
      font-size: 21px; }
    .elementor-flip-box__layer__description {
      font-size: 14px; }
    .elementor-flip-box__layer__description:not(:last-child), .elementor-flip-box__layer__title:not(:last-child) {
      margin: 0 0 20px 0;
      padding: 0; }
    .elementor-flip-box__layer__title {
      line-height: 1;
      font-weight: 600; }
  .elementor-flip-box,
  .elementor-flip-box .elementor-view-framed,
  .elementor-flip-box .elementor-view-stacked {
    --e-flip-box-view-framed-stacked-icon-color: #fff; }
    .elementor-flip-box .elementor-icon,
    .elementor-flip-box .elementor-view-framed .elementor-icon,
    .elementor-flip-box .elementor-view-stacked .elementor-icon {
      color: var(--e-flip-box-view-framed-stacked-icon-color); }
      .elementor-flip-box .elementor-icon svg,
      .elementor-flip-box .elementor-view-framed .elementor-icon svg,
      .elementor-flip-box .elementor-view-stacked .elementor-icon svg {
        fill: var(--e-flip-box-view-framed-stacked-icon-color); }
  .elementor-flip-box .elementor-view-framed .elementor-icon {
    border-color: #fff; }
  .elementor-flip-box .elementor-view-stacked .elementor-icon {
    background-color: rgba(0, 0, 0, 0.5); }
  .elementor-flip-box__button.elementor-button {
    cursor: pointer;
    align-self: center;
    margin-left: auto;
    margin-right: auto;
    border: solid 2px white;
    background: transparent; }
    .elementor-flip-box__button.elementor-button:hover {
      background: transparent;
      text-decoration: none; }
  .elementor-flip-box__image {
    margin: 0 0 20px 0;
    display: inline-block;
    width: 100%; }
    .elementor-flip-box__image img {
      width: 50%; }
  .elementor-flip-box .elementor-icon-wrapper {
    margin-bottom: 20px; }
  .elementor-flip-box--3d .elementor-flip-box__layer__inner {
    transform: translateZ(90px) scale(0.91); }
  .elementor-flip-box--3d .elementor-flip-box__layer__overlay {
    transform-style: preserve-3d;
    transform: translateZ(0.1px); }
  .elementor-flip-box--effect-flip .elementor-flip-box {
    perspective: 1000px;
    transform-style: preserve-3d; }
    .elementor-flip-box--effect-flip .elementor-flip-box__layer {
      transform-style: preserve-3d;
      backface-visibility: hidden; }
    .elementor-flip-box--effect-flip .elementor-flip-box__front {
      transform: none;
      z-index: 1; }
    .elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__back {
      transform: none; }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box__back {
    transform: rotateX(0) rotateY(-180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front {
    transform: rotateX(0) rotateY(180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box__back {
    transform: rotateX(0) rotateY(180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front {
    transform: rotateX(0) rotateY(-180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box__back {
    transform: rotateX(-180deg) rotateY(0); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front {
    transform: rotateX(180deg) rotateY(0); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box__back {
    transform: rotateX(180deg) rotateY(0); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front {
    transform: rotateX(-180deg) rotateY(0); }
  .elementor-flip-box--effect-push .elementor-flip-box__front {
    transform: none; }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front {
    transform: translateX(100%) translateY(0); }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front {
    transform: translateX(-100%) translateY(0); }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front {
    transform: translateX(0) translateY(-100%); }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front {
    transform: translateX(0) translateY(100%); }
  .elementor-flip-box--effect-slide .elementor-flip-box, .elementor-flip-box--effect-push .elementor-flip-box {
    overflow: hidden; }
    .elementor-flip-box--effect-slide .elementor-flip-box:hover .elementor-flip-box__back, .elementor-flip-box--effect-push .elementor-flip-box:hover .elementor-flip-box__back {
      transform: none; }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-right .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box__back {
    transform: translateX(-100%) translateY(0); }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-left .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box__back {
    transform: translateX(100%) translateY(0); }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-up .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box__back {
    transform: translateX(0) translateY(100%); }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-down .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box__back {
    transform: translateX(0) translateY(-100%); }
  .elementor-flip-box--effect-zoom-out .elementor-flip-box .elementor-flip-box__front {
    transition: transform 0.7s, opacity 0.35s, width 0.1ms;
    opacity: 1;
    transform: scale(1);
    z-index: 1;
    width: 100%; }
  .elementor-flip-box--effect-zoom-out .elementor-flip-box:hover .elementor-flip-box__front {
    width: 0;
    opacity: 0;
    transform: scale(0.7);
    transition: transform 0.8s, opacity 0.7s 0.1s, width 0.1ms 0.7s; }
  .elementor-flip-box--effect-zoom-in .elementor-flip-box .elementor-flip-box__back {
    transition: transform 0.7s, opacity 0.5s 0.2s;
    opacity: 0;
    transform: scale(0.7); }
  .elementor-flip-box--effect-zoom-in .elementor-flip-box:hover .elementor-flip-box__back {
    transition: transform 0.7s, opacity 0.5s;
    opacity: 1;
    transform: scale(1); }
  .elementor-flip-box--effect-fade .elementor-flip-box .elementor-flip-box__back {
    opacity: 0; }
  .elementor-flip-box--effect-fade .elementor-flip-box:hover .elementor-flip-box__back {
    opacity: 1; }

.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__front {
  display: none; }

.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__back {
  transform: none;
  opacity: 1; }

.elementor-widget-call-to-action .elementor-widget-container {
  overflow: hidden; }

.elementor-cta {
  position: relative;
  display: flex;
  overflow: hidden;
  transition: 0.5s; }
  .elementor-cta--skin-classic .elementor-cta {
    flex-wrap: wrap; }
    .elementor-cta--skin-classic .elementor-cta__bg-wrapper {
      position: relative;
      min-height: 200px;
      width: 100%; }
    .elementor-cta--skin-classic .elementor-cta__content {
      transition: all 0.4s;
      width: 100%;
      background-color: #f7f7f7; }
    .elementor-cta--skin-classic .elementor-cta__content-item, .elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon {
      color: #55595c;
      border-color: #55595c;
      fill: #55595c; }
    .elementor-cta--skin-classic .elementor-cta__button.elementor-button {
      color: #55595c;
      border-color: #55595c; }
  .elementor-cta--skin-cover .elementor-cta {
    display: block; }
    .elementor-cta--skin-cover .elementor-cta__bg-wrapper {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      transition: all 0.4s;
      width: 100%; }
    .elementor-cta--skin-cover .elementor-cta__content {
      min-height: 280px; }
    .elementor-cta--skin-cover .elementor-cta__content-item, .elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon {
      color: #fff;
      border-color: #fff; }
    .elementor-cta--skin-cover .elementor-cta__button.elementor-button {
      color: white;
      border-color: white; }
  .elementor-cta--layout-image-above .elementor-cta {
    flex-wrap: wrap; }
    .elementor-cta--layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--layout-image-left .elementor-cta, .elementor-cta--layout-image-right .elementor-cta {
    flex-wrap: nowrap; }
    .elementor-cta--layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--layout-image-left .elementor-cta__content, .elementor-cta--layout-image-right .elementor-cta__content {
      flex-grow: 1; }
  .elementor-cta--layout-image-left .elementor-cta {
    flex-direction: row-reverse; }
  .elementor-cta--layout-image-right .elementor-cta {
    flex-direction: row; }
  .elementor-cta__bg, .elementor-cta__bg-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    transition: all 0.4s; }
  .elementor-cta__bg-wrapper {
    z-index: 1;
    overflow: hidden; }
  .elementor-cta__bg {
    background-size: cover;
    background-position: center;
    z-index: 1; }
  .elementor-cta__bg-overlay {
    z-index: 2; }
  .elementor-cta__button.elementor-button {
    cursor: pointer;
    align-self: center;
    margin-left: auto;
    margin-right: auto;
    border: solid 2px white;
    background: transparent; }
    .elementor-cta__button.elementor-button:hover {
      background: transparent;
      text-decoration: none; }
  .elementor-cta__title {
    font-size: 23px; }
  .elementor-cta__content {
    z-index: 1;
    overflow: hidden;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    align-content: center;
    padding: 35px;
    width: 100%; }
    .elementor-cta__content, .elementor-cta__content-item {
      position: relative;
      transition: 0.5s;
      color: #fff; }
    .elementor-cta__content-item {
      width: 100%;
      margin: 0; }
      .elementor-cta__content-item:not(:last-child) {
        margin-bottom: 15px; }
      .elementor-cta__content-item .elementor-icon {
        color: #fff; }
  .elementor-cta--valign-top .elementor-cta__content {
    align-content: flex-start;
    align-items: flex-start; }
  .elementor-cta--valign-middle .elementor-cta__content {
    align-content: center;
    align-items: center; }
  .elementor-cta--valign-bottom .elementor-cta__content {
    align-content: flex-end;
    align-items: flex-end; }
  .elementor-cta:hover .elementor-cta__bg-overlay {
    background-color: rgba(0, 0, 0, 0.3); }

@media (max-device-width: ELEMENTOR_SCREEN_TABLET_MAX) {
  .elementor-cta {
    cursor: pointer; } }

@media (min-width: ELEMENTOR_SCREEN_WIDESCREEN_MIN) {
  .elementor-cta--widescreen-layout-image-above .elementor-cta {
    flex-wrap: wrap; }
    .elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--widescreen-layout-image-left .elementor-cta, .elementor-cta--widescreen-layout-image-right .elementor-cta {
    flex-wrap: nowrap; }
    .elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--widescreen-layout-image-left .elementor-cta__content, .elementor-cta--widescreen-layout-image-right .elementor-cta__content {
      flex-grow: 1; }
  .elementor-cta--widescreen-layout-image-left .elementor-cta {
    flex-direction: row-reverse; }
  .elementor-cta--widescreen-layout-image-right .elementor-cta {
    flex-direction: row; } }

@media (max-width: ELEMENTOR_SCREEN_LAPTOP_MAX) {
  .elementor-cta--laptop-layout-image-above .elementor-cta {
    flex-wrap: wrap; }
    .elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--laptop-layout-image-left .elementor-cta, .elementor-cta--laptop-layout-image-right .elementor-cta {
    flex-wrap: nowrap; }
    .elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--laptop-layout-image-left .elementor-cta__content, .elementor-cta--laptop-layout-image-right .elementor-cta__content {
      flex-grow: 1; }
  .elementor-cta--laptop-layout-image-left .elementor-cta {
    flex-direction: row-reverse; }
  .elementor-cta--laptop-layout-image-right .elementor-cta {
    flex-direction: row; } }

@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) {
  .elementor-cta--tablet_extra-layout-image-above .elementor-cta {
    flex-wrap: wrap; }
    .elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--tablet_extra-layout-image-left .elementor-cta, .elementor-cta--tablet_extra-layout-image-right .elementor-cta {
    flex-wrap: nowrap; }
    .elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--tablet_extra-layout-image-left .elementor-cta__content, .elementor-cta--tablet_extra-layout-image-right .elementor-cta__content {
      flex-grow: 1; }
  .elementor-cta--tablet_extra-layout-image-left .elementor-cta {
    flex-direction: row-reverse; }
  .elementor-cta--tablet_extra-layout-image-right .elementor-cta {
    flex-direction: row; } }

@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
  .elementor-cta--tablet-layout-image-above .elementor-cta {
    flex-wrap: wrap; }
    .elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--tablet-layout-image-left .elementor-cta, .elementor-cta--tablet-layout-image-right .elementor-cta {
    flex-wrap: nowrap; }
    .elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--tablet-layout-image-left .elementor-cta__content, .elementor-cta--tablet-layout-image-right .elementor-cta__content {
      flex-grow: 1; }
  .elementor-cta--tablet-layout-image-left .elementor-cta {
    flex-direction: row-reverse; }
  .elementor-cta--tablet-layout-image-right .elementor-cta {
    flex-direction: row; } }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) {
  .elementor-cta--mobile_extra-layout-image-above .elementor-cta {
    flex-wrap: wrap; }
    .elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--mobile_extra-layout-image-left .elementor-cta, .elementor-cta--mobile_extra-layout-image-right .elementor-cta {
    flex-wrap: nowrap; }
    .elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--mobile_extra-layout-image-left .elementor-cta__content, .elementor-cta--mobile_extra-layout-image-right .elementor-cta__content {
      flex-grow: 1; }
  .elementor-cta--mobile_extra-layout-image-left .elementor-cta {
    flex-direction: row-reverse; }
  .elementor-cta--mobile_extra-layout-image-right .elementor-cta {
    flex-direction: row; } }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .elementor-cta--mobile-layout-image-above .elementor-cta {
    flex-wrap: wrap; }
    .elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--mobile-layout-image-left .elementor-cta, .elementor-cta--mobile-layout-image-right .elementor-cta {
    flex-wrap: nowrap; }
    .elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--mobile-layout-image-left .elementor-cta__content, .elementor-cta--mobile-layout-image-right .elementor-cta__content {
      flex-grow: 1; }
  .elementor-cta--mobile-layout-image-left .elementor-cta {
    flex-direction: row-reverse; }
  .elementor-cta--mobile-layout-image-right .elementor-cta {
    flex-direction: row; } }

.elementor-ribbon {
  position: absolute;
  z-index: 1;
  top: 0;
  left: 0;
  right: auto;
  transform: rotate(0);
  width: 150px;
  overflow: hidden;
  height: 150px; }
  .elementor-ribbon-inner {
    text-align: center;
    left: 0;
    width: 200%;
    transform: translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);
    margin-top: 35px;
    font-size: 13px;
    line-height: 2;
    font-weight: 800;
    text-transform: uppercase;
    background: #000;
    color: #fff; }
  .elementor-ribbon.elementor-ribbon-left {
    transform: rotate(0);
    left: 0;
    right: auto; }
  .elementor-ribbon.elementor-ribbon-right {
    transform: rotate(90deg);
    left: auto;
    right: 0; }

.elementor-widget-countdown .elementor-countdown-expire--message {
  display: none;
  padding: 20px;
  text-align: center; }

.elementor-widget-countdown .elementor-countdown-wrapper {
  flex-direction: row-reverse; }

.elementor-widget-countdown .elementor-countdown-item {
  padding: 20px 0;
  text-align: center;
  color: #ffffff; }

.elementor-widget-countdown .elementor-countdown-digits,
.elementor-widget-countdown .elementor-countdown-label {
  line-height: 1; }

.elementor-widget-countdown .elementor-countdown-digits {
  font-size: 69px; }

.elementor-widget-countdown .elementor-countdown-label {
  font-size: 19px; }

.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-wrapper {
  display: flex;
  justify-content: center;
  margin-right: auto;
  margin-left: auto; }

.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-digits,
.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-label {
  display: block; }

.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-item {
  flex-basis: 0;
  flex-grow: 1; }

.elementor-widget-countdown.elementor-countdown--label-inline {
  text-align: center; }
  .elementor-widget-countdown.elementor-countdown--label-inline .elementor-countdown-item {
    display: inline-block;
    padding-left: 5px;
    padding-right: 5px; }

/* Slides Widget */
.elementor-slides .swiper-slide-bg {
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  min-width: 100%;
  min-height: 100%; }

.elementor-slides .swiper-slide-inner {
  background-repeat: no-repeat;
  background-position: center;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  padding: 50px;
  margin: auto; }
  .elementor-slides .swiper-slide-inner, .elementor-slides .swiper-slide-inner:hover {
    color: white;
    display: flex; }
  .elementor-slides .swiper-slide-inner .elementor-background-overlay {
    position: absolute;
    z-index: 0;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0; }
  .elementor-slides .swiper-slide-inner .elementor-slide-content {
    position: relative;
    z-index: 1;
    width: 100%; }
  .elementor-slides .swiper-slide-inner .elementor-slide-heading {
    font-size: 35px;
    font-weight: bold;
    line-height: 1; }
  .elementor-slides .swiper-slide-inner .elementor-slide-description {
    font-size: 17px;
    line-height: 1.4; }
  .elementor-slides .swiper-slide-inner .elementor-slide-heading:not(:last-child), .elementor-slides .swiper-slide-inner .elementor-slide-description:not(:last-child) {
    margin-bottom: 30px; }
  .elementor-slides .swiper-slide-inner .elementor-slide-button {
    border: solid 2px white;
    color: white;
    background: transparent;
    display: inline-block; }
    .elementor-slides .swiper-slide-inner .elementor-slide-button, .elementor-slides .swiper-slide-inner .elementor-slide-button:hover {
      background: transparent;
      color: inherit;
      text-decoration: none; }

.elementor--v-position-top .swiper-slide-inner {
  align-items: flex-start; }

.elementor--v-position-bottom .swiper-slide-inner {
  align-items: flex-end; }

.elementor--v-position-middle .swiper-slide-inner {
  align-items: center; }

.elementor--h-position-left .swiper-slide-inner {
  justify-content: flex-end; }

.elementor--h-position-right .swiper-slide-inner {
  justify-content: flex-start; }

.elementor--h-position-center .swiper-slide-inner {
  justify-content: center; }

body.rtl .elementor-widget-slides .elementor-swiper-button-next {
  left: 10px;
  right: auto; }

body.rtl .elementor-widget-slides .elementor-swiper-button-prev {
  right: 10px;
  left: auto; }

.elementor-slides-wrapper div:not(.swiper-slide) > .swiper-slide-inner {
  display: none; }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .elementor-slides .swiper-slide-inner {
    padding: 30px; }
    .elementor-slides .swiper-slide-inner .elementor-slide-heading {
      font-size: 23px;
      line-height: 1;
      margin-bottom: 15px; }
    .elementor-slides .swiper-slide-inner .elementor-slide-description {
      font-size: 13px;
      line-height: 1.4;
      margin-bottom: 15px; } }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn {
  background-color: var(--e-share-buttons-primary-color, #ea4335); }
  .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text {
    color: var(--e-share-buttons-secondary-color, #fff); }
    .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg {
      fill: var(--e-share-buttons-secondary-color, #fff); }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn {
  color: var(--e-share-buttons-primary-color, #ea4335);
  border-color: var(--e-share-buttons-primary-color, #ea4335); }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon {
  background-color: var(--e-share-buttons-primary-color, #ea4335);
  color: var(--e-share-buttons-secondary-color, #fff); }
  .elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon svg {
    fill: var(--e-share-buttons-secondary-color, #fff); }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon {
  color: var(--e-share-buttons-primary-color, #ea4335); }
  .elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon svg {
    fill: var(--e-share-buttons-primary-color, #ea4335); }

.elementor-share-buttons--color-official .elementor-share-btn:hover {
  filter: saturate(1.5) brightness(1.2); }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_digg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_digg {
  background-color: #005be2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_email, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_email {
  background-color: #ea4335; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_print, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_print {
  background-color: #aaaaaa; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_facebook, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_facebook {
  background-color: #3b5998; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_google, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_google {
  background-color: #dd4b39; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pocket, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pocket {
  background-color: #EF3F56; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_linkedin, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_linkedin {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_odnoklassniki, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_odnoklassniki {
  background-color: #F4731C; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pinterest, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pinterest {
  background-color: #bd081c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_reddit, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_reddit {
  background-color: #ff4500; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_skype, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_skype {
  background-color: #00AFF0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_slideshare, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_slideshare {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_snapchat, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_snapchat {
  background-color: #fffc00; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_stumbleupon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_stumbleupon {
  background-color: #EB4924; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_mix, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_mix {
  background-color: #f3782b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_tumblr, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_tumblr {
  background-color: #35465c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitch, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitch {
  background-color: #6441A5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_telegram, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_telegram {
  background-color: #2CA5E0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitter, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitter {
  background-color: #1DA1F2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vimeo, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vimeo {
  background-color: #1ab7ea; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vk, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vk {
  background-color: #45668e; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_whatsapp, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_whatsapp {
  background-color: #25d366; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_wordpress, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_wordpress {
  background-color: #21759b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_xing, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_xing {
  background-color: #026466; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg {
  color: #005be2; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg svg {
    fill: #005be2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email {
  color: #ea4335; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email svg {
    fill: #ea4335; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print {
  color: #aaaaaa; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print svg {
    fill: #aaaaaa; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook {
  color: #3b5998; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook svg {
    fill: #3b5998; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google {
  color: #dd4b39; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google svg {
    fill: #dd4b39; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket {
  color: #EF3F56; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket svg {
    fill: #EF3F56; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin {
  color: #0077b5; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin svg {
    fill: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki {
  color: #F4731C; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki svg {
    fill: #F4731C; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest {
  color: #bd081c; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest svg {
    fill: #bd081c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit {
  color: #ff4500; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit svg {
    fill: #ff4500; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype {
  color: #00AFF0; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype svg {
    fill: #00AFF0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare {
  color: #0077b5; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare svg {
    fill: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat {
  color: #fffc00; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat svg {
    fill: #fffc00; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon {
  color: #EB4924; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon svg {
    fill: #EB4924; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix {
  color: #f3782b; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix svg {
    fill: #f3782b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr {
  color: #35465c; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr svg {
    fill: #35465c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch {
  color: #6441A5; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch svg {
    fill: #6441A5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram {
  color: #2CA5E0; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram svg {
    fill: #2CA5E0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter {
  color: #1DA1F2; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter svg {
    fill: #1DA1F2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo {
  color: #1ab7ea; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo svg {
    fill: #1ab7ea; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk {
  color: #45668e; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk svg {
    fill: #45668e; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp {
  color: #25d366; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp svg {
    fill: #25d366; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress {
  color: #21759b; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress svg {
    fill: #21759b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing {
  color: #026466; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing svg {
    fill: #026466; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_digg .elementor-share-btn__icon {
  background-color: #005be2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_email .elementor-share-btn__icon {
  background-color: #ea4335; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_print .elementor-share-btn__icon {
  background-color: #aaaaaa; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_facebook .elementor-share-btn__icon {
  background-color: #3b5998; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_google .elementor-share-btn__icon {
  background-color: #dd4b39; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pocket .elementor-share-btn__icon {
  background-color: #EF3F56; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_linkedin .elementor-share-btn__icon {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_odnoklassniki .elementor-share-btn__icon {
  background-color: #F4731C; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pinterest .elementor-share-btn__icon {
  background-color: #bd081c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_reddit .elementor-share-btn__icon {
  background-color: #ff4500; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_skype .elementor-share-btn__icon {
  background-color: #00AFF0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_slideshare .elementor-share-btn__icon {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_snapchat .elementor-share-btn__icon {
  background-color: #fffc00; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_stumbleupon .elementor-share-btn__icon {
  background-color: #EB4924; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_mix .elementor-share-btn__icon {
  background-color: #f3782b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_tumblr .elementor-share-btn__icon {
  background-color: #35465c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitch .elementor-share-btn__icon {
  background-color: #6441A5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_telegram .elementor-share-btn__icon {
  background-color: #2CA5E0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitter .elementor-share-btn__icon {
  background-color: #1DA1F2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vimeo .elementor-share-btn__icon {
  background-color: #1ab7ea; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vk .elementor-share-btn__icon {
  background-color: #45668e; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_whatsapp .elementor-share-btn__icon {
  background-color: #25d366; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_wordpress .elementor-share-btn__icon {
  background-color: #21759b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_xing .elementor-share-btn__icon {
  background-color: #026466; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon {
  color: var(--e-share-buttons-icon-color, #fff); }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon svg {
    fill: var(--e-share-buttons-icon-color, #fff); }

.elementor-share-buttons--skin-framed .elementor-share-btn__icon, .elementor-share-buttons--skin-boxed .elementor-share-btn__icon {
  margin-right: -0.2em; }

.elementor-share-buttons--skin-framed .elementor-share-btn, .elementor-share-buttons--skin-boxed .elementor-share-btn {
  border-style: solid; }

.elementor-share-buttons--skin-gradient .elementor-share-btn__text {
  background-image: linear-gradient(to left, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0)); }

.elementor-share-buttons--skin-gradient.elementor-share-buttons--view-icon .elementor-share-btn__icon {
  background-image: linear-gradient(to left, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0)); }

.elementor-share-buttons--skin-boxed .elementor-share-btn__text, .elementor-share-buttons--skin-minimal .elementor-share-btn__text, .elementor-share-buttons--skin-gradient .elementor-share-btn__text {
  padding-right: 0.9em; }

.elementor-share-buttons--skin-flat .elementor-share-btn, .elementor-share-buttons--skin-gradient .elementor-share-btn {
  background-color: var(--e-share-buttons-primary-color, #ea4335); }
  .elementor-share-buttons--skin-flat .elementor-share-btn__icon, .elementor-share-buttons--skin-flat .elementor-share-btn__text, .elementor-share-buttons--skin-gradient .elementor-share-btn__icon, .elementor-share-buttons--skin-gradient .elementor-share-btn__text {
    color: var(--e-share-buttons-secondary-color, #fff); }
    .elementor-share-buttons--skin-flat .elementor-share-btn__icon svg, .elementor-share-buttons--skin-flat .elementor-share-btn__text svg, .elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg, .elementor-share-buttons--skin-gradient .elementor-share-btn__text svg {
      fill: var(--e-share-buttons-secondary-color, #fff); }

.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-rounded .elementor-share-btn__icon {
  border-radius: 0.5em; }

.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-circle .elementor-share-btn__icon {
  border-radius: 99.9em; }

.elementor-share-buttons--view-text .elementor-share-btn__text {
  padding-right: 1em; }

.elementor-share-buttons--view-text .elementor-share-btn, .elementor-share-buttons--view-icon .elementor-share-btn {
  justify-content: center; }
  .elementor-share-buttons--view-text .elementor-share-btn__icon, .elementor-share-buttons--view-text .elementor-share-btn__text, .elementor-share-buttons--view-icon .elementor-share-btn__icon, .elementor-share-buttons--view-icon .elementor-share-btn__text {
    flex-grow: 1;
    justify-content: center; }

.elementor-share-buttons--shape-rounded .elementor-share-btn {
  border-radius: 0.5em; }

.elementor-share-buttons--shape-circle .elementor-share-btn {
  border-radius: 99.9em; }

.elementor-share-btn {
  overflow: hidden;
  font-size: 10px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  transition-duration: 0.2s;
  transition-property: filter, background-color, border-color;
  height: 4.5em;
  cursor: pointer; }
  .elementor-share-btn__icon, .elementor-share-btn__text {
    transition-property: color, background-color;
    transition-duration: 0.2s; }
  .elementor-share-btn__icon {
    display: flex;
    align-self: stretch;
    justify-content: center;
    align-items: center;
    width: 4.5em;
    position: relative; }
    .elementor-share-btn__icon i {
      font-size: var(--e-share-buttons-icon-size, 1.7em); }
    .elementor-share-btn__icon svg {
      width: var(--e-share-buttons-icon-size, 1.7em);
      height: var(--e-share-buttons-icon-size, 1.7em); }
  .elementor-share-btn__text {
    font-size: 1.5em;
    padding-left: 1em;
    align-self: stretch;
    flex-grow: 1;
    align-items: center;
    display: flex;
    font-weight: 100; }
  .elementor-share-btn__title {
    font-weight: bold;
    flex-shrink: 0; }

.elementor-widget-share-buttons {
  text-align: var(--alignment, inherit);
  text-align-last: var(--alignment, inherit); }
  .elementor-widget-share-buttons.elementor-grid-0 .elementor-widget-container {
    font-size: 0; }

.elementor-skin-carousel .elementor-main-swiper, .elementor-skin-coverflow .elementor-main-swiper {
  height: 230px; }

.elementor-skin-slideshow .elementor-main-swiper {
  height: 450px;
  position: relative; }

.elementor-skin-slideshow .elementor-thumbnails-swiper .elementor-custom-embed-play i {
  font-size: 50px; }

.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide {
  cursor: pointer; }
  .elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide:not(.swiper-slide-active):after {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: rgba(0, 0, 0, 0.3); }

.elementor-carousel-image {
  background: no-repeat center;
  background-size: cover;
  height: 100%;
  position: relative; }

.elementor-carousel-image-overlay {
  position: absolute;
  top: 0;
  left: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  width: 100%;
  height: 100%;
  padding: 20px;
  color: var(--e-carousel-image-overlay-color, #fff);
  background-color: rgba(129, 138, 145, 0.8);
  transition: transform .5s, opacity .5s; }
  .elementor-carousel-image-overlay i {
    font-size: var(--e-carousel-image-overlay-icon-size, 21px); }
  .elementor-carousel-image-overlay svg {
    fill: var(--e-carousel-image-overlay-color, #fff);
    width: var(--e-carousel-image-overlay-icon-size, 21px);
    height: var(--e-carousel-image-overlay-icon-size, 21px); }

.elementor-testimonial__image {
  flex-shrink: 0; }
  .elementor-testimonial__image img {
    border-radius: 999px;
    box-sizing: content-box;
    object-fit: cover; }

.elementor-testimonial__footer, .elementor-testimonial__header {
  display: flex; }
  .elementor-testimonial__footer cite, .elementor-testimonial__header cite {
    display: flex;
    flex-direction: column;
    font-style: normal;
    font-size: 14px;
    line-height: 1.5; }

.elementor-testimonial__name {
  font-weight: bold; }

.elementor-testimonial--layout-image_inline .elementor-testimonial__footer, .elementor-testimonial--layout-image_above .elementor-testimonial__footer {
  align-items: center; }

.elementor-testimonial--layout-image_inline .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_above .elementor-testimonial__image + cite {
  margin-right: 20px; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__footer, .elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__footer {
  flex-direction: row; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__image + cite {
  margin-left: 20px;
  margin-right: 0; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__footer, .elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__footer {
  flex-direction: row-reverse; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__image + cite {
  margin-left: 0;
  margin-right: 20px; }

.elementor-testimonial--layout-image_inline .elementor-testimonial__footer {
  margin-top: 25px; }

.elementor-testimonial--layout-image_above .elementor-testimonial {
  display: flex;
  flex-direction: column-reverse; }
  .elementor-testimonial--layout-image_above .elementor-testimonial__footer {
    margin-bottom: 25px; }

.elementor-testimonial--layout-image_stacked .elementor-testimonial__footer {
  margin-top: 25px;
  flex-wrap: wrap; }

.elementor-testimonial--layout-image_stacked .elementor-testimonial__image, .elementor-testimonial--layout-image_stacked .elementor-testimonial cite {
  margin-top: 15px;
  width: 100%; }

.elementor-testimonial--layout-image_left .elementor-testimonial, .elementor-testimonial--layout-image_right .elementor-testimonial {
  display: flex;
  align-items: stretch; }
  .elementor-testimonial--layout-image_left .elementor-testimonial__footer, .elementor-testimonial--layout-image_right .elementor-testimonial__footer {
    flex-shrink: 0;
    flex-direction: column;
    text-align: center; }
  .elementor-testimonial--layout-image_left .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_right .elementor-testimonial__image + cite {
    margin-top: 15px; }

.elementor-testimonial--layout-image_left.elementor-testimonial--align-center .elementor-testimonial__footer, .elementor-testimonial--layout-image_right.elementor-testimonial--align-center .elementor-testimonial__footer {
  justify-content: flex-start; }

.elementor-testimonial--layout-image_left .elementor-testimonial {
  flex-direction: row; }
  .elementor-testimonial--layout-image_left .elementor-testimonial__footer {
    padding-left: 20px; }

.elementor-testimonial--layout-image_right .elementor-testimonial {
  flex-direction: row-reverse; }
  .elementor-testimonial--layout-image_right .elementor-testimonial__footer {
    padding-right: 20px; }

.elementor-testimonial--align-right .elementor-testimonial {
  text-align: right; }

.elementor-testimonial--align-left .elementor-testimonial {
  text-align: left; }

.elementor-testimonial--align-center .elementor-testimonial {
  text-align: center; }
  .elementor-testimonial--align-center .elementor-testimonial__footer {
    justify-content: center; }

.elementor-testimonial--align-center.elementor-testimonial--layout-image_inline .elementor-testimonial__image + cite {
  text-align: right; }

.elementor-testimonial--skin-default.elementor-testimonial--layout-image_right .elementor-testimonial__cite, .elementor-testimonial--skin-default.elementor-testimonial--layout-image_left .elementor-testimonial__cite, .elementor-testimonial--skin-default.elementor-testimonial--layout-image_above .elementor-testimonial__cite {
  width: 100%;
  display: flex;
  flex-direction: column;
  margin-top: 25px; }

.elementor-testimonial--skin-bubble .elementor-testimonial__content {
  background-color: #e6e9ec;
  padding: 20px;
  position: relative; }
  .elementor-testimonial--skin-bubble .elementor-testimonial__content:after {
    content: '';
    display: block;
    width: 14px;
    height: 14px;
    background-color: #e6e9ec;
    position: absolute;
    transform: scaleX(0.75) rotate(45deg);
    border-width: 0;
    box-sizing: content-box; }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above .elementor-testimonial__content:after {
  bottom: calc( 100% - 7px);
  transform: scaleX(0.75) rotate(-135deg); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-center .elementor-testimonial__content:after {
  left: 50%;
  transform: translateX(-50%) scaleX(0.75) rotate(-135deg); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline .elementor-testimonial__content:after {
  top: calc( 100% - 7px); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-center .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-center .elementor-testimonial__content:after {
  left: 50%;
  transform: translateX(-50%) scaleX(0.75) rotate(45deg); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-left .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__content:after {
  left: calc( 20px + ( 50px / 2 )); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-right .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__content:after {
  right: calc( 20px + ( 50px / 2 )); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after {
  transform: scaleY(0.75) rotate(135deg);
  left: -8px; }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after {
  transform: scaleY(0.75) rotate(-45deg);
  right: -8px; }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after {
  top: calc(20px + (50px / 2)); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__footer, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__footer {
  padding-top: 20px; }

.elementor-widget-testimonial-carousel .swiper-slide {
  padding: 20px; }

.elementor-widget-testimonial-carousel .elementor-testimonial__text {
  font-size: 1.3em;
  font-style: italic;
  line-height: 1.5; }

.elementor-widget-testimonial-carousel .elementor-testimonial__image img {
  width: 50px;
  height: 50px; }

.elementor-widget-reviews .swiper-slide {
  background-color: white;
  border: 1px solid #e1e8ed;
  border-radius: 5px;
  padding: 0; }

.elementor-widget-reviews .elementor-testimonial__text {
  font-size: 14px;
  line-height: 20px; }

.elementor-widget-reviews .elementor-testimonial__name {
  color: #1c2022; }

.elementor-widget-reviews .elementor-testimonial__title {
  color: #697882;
  font-size: 12.5px;
  font-weight: normal;
  font-family: inherit; }

.elementor-widget-reviews .elementor-testimonial__image {
  display: flex; }
  .elementor-widget-reviews .elementor-testimonial__image img {
    width: 36px;
    height: 36px; }

.elementor-widget-reviews .elementor-testimonial__icon {
  margin-right: auto;
  font-size: 17px; }
  .elementor-widget-reviews .elementor-testimonial__icon .fa + .fa {
    margin-right: 0.15em; }
  .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon {
    color: var(--e-testimonial-icon-color); }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-android {
      --e-testimonial-icon-color: #A4C639; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-apple {
      --e-testimonial-icon-color: #999999; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-behance {
      --e-testimonial-icon-color: #1769ff; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-bitbucket {
      --e-testimonial-icon-color: #205081; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-codepen {
      --e-testimonial-icon-color: #000000; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-delicious {
      --e-testimonial-icon-color: #3399ff; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-digg {
      --e-testimonial-icon-color: #005be2; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-dribbble {
      --e-testimonial-icon-color: #ea4c89; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-envelope {
      --e-testimonial-icon-color: #ea4335; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-facebook {
      --e-testimonial-icon-color: #3b5998; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-flickr {
      --e-testimonial-icon-color: #0063dc; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-foursquare {
      --e-testimonial-icon-color: #2d5be3; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-github {
      --e-testimonial-icon-color: #333333; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-google-plus {
      --e-testimonial-icon-color: #dd4b39; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-houzz {
      --e-testimonial-icon-color: #7ac142; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-instagram {
      --e-testimonial-icon-color: #262626; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-jsfiddle {
      --e-testimonial-icon-color: #487AA2; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-linkedin {
      --e-testimonial-icon-color: #0077b5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-medium {
      --e-testimonial-icon-color: #00ab6b; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-meetup {
      --e-testimonial-icon-color: #ec1c40; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-mixcloud {
      --e-testimonial-icon-color: #273a4b; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-odnoklassniki {
      --e-testimonial-icon-color: #F4731C; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-pinterest {
      --e-testimonial-icon-color: #bd081c; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-product-hunt {
      --e-testimonial-icon-color: #da552f; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-reddit {
      --e-testimonial-icon-color: #ff4500; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-rss {
      --e-testimonial-icon-color: #f26522; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-shopping-cart {
      --e-testimonial-icon-color: #4CAF50; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-skype {
      --e-testimonial-icon-color: #00AFF0; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-slideshare {
      --e-testimonial-icon-color: #0077b5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-snapchat {
      --e-testimonial-icon-color: #fffc00; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-soundcloud {
      --e-testimonial-icon-color: #ff8800; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-spotify {
      --e-testimonial-icon-color: #2ebd59; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stack-overflow {
      --e-testimonial-icon-color: #fe7a15; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-steam {
      --e-testimonial-icon-color: #00adee; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stumbleupon {
      --e-testimonial-icon-color: #EB4924; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-telegram {
      --e-testimonial-icon-color: #2CA5E0; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumb-tack, .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumbtack {
      --e-testimonial-icon-color: #1aa1d8; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tripadvisor {
      --e-testimonial-icon-color: #589442; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tumblr {
      --e-testimonial-icon-color: #35465c; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitch {
      --e-testimonial-icon-color: #6441A5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitter {
      --e-testimonial-icon-color: #1DA1F2; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vimeo {
      --e-testimonial-icon-color: #1ab7ea; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vk {
      --e-testimonial-icon-color: #45668e; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weibo {
      --e-testimonial-icon-color: #DD2430; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weixin {
      --e-testimonial-icon-color: #31A918; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-whatsapp {
      --e-testimonial-icon-color: #25d366; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-wordpress {
      --e-testimonial-icon-color: #21759b; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-xing {
      --e-testimonial-icon-color: #026466; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-yelp {
      --e-testimonial-icon-color: #af0606; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-youtube {
      --e-testimonial-icon-color: #cd201f; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-500px {
      --e-testimonial-icon-color: #0099e5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon svg {
      fill: var(--e-testimonial-icon-color); }

.elementor-widget-reviews .elementor-testimonial__rating {
  background-image: linear-gradient(to right, #ffc82c var(--rating), #cccccc var(--rating));
  font-family: eicons; }

.elementor-widget-reviews .elementor-testimonial__header {
  display: flex;
  padding-top: 15px;
  padding-bottom: 6px; }

.elementor-widget-reviews .elementor-testimonial__image + cite {
  margin-right: 9px; }

.elementor-widget-reviews .elementor-testimonial__separator {
  margin: 0 auto;
  border-top: 0 none;
  border-bottom: 1px solid #e1e8ed;
  height: 0; }

.elementor-widget-reviews .elementor-testimonial__content {
  padding-top: 6px;
  padding-bottom: 15px; }

.elementor-widget-reviews .elementor-testimonial__content, .elementor-widget-reviews .elementor-testimonial__header {
  padding-left: 15px;
  padding-right: 15px; }

.elementor-widget-reviews.elementor-review--has-separator .elementor-testimonial__header {
  border-bottom: 1px solid #e1e8ed; }

.swiper-pagination-bullets {
  color: #fff;
  cursor: default; }

.swiper-slide {
  will-change: transform;
  border-style: solid;
  border-width: 0;
  transition-duration: .5s;
  transition-property: border, background, transform;
  overflow: hidden; }
  .swiper-slide:not(:hover) .e-overlay-animation-fade {
    opacity: 0; }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-up {
    transform: translateY(100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-down {
    transform: translateY(-100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-right {
    transform: translateX(-100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-left {
    transform: translateX(100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-zoom-in {
    transform: scale(0.5);
    opacity: 0; }
  .swiper-slide a {
    display: inline; }
    .swiper-slide a.elementor-button {
      display: inline-block; }

.elementor-widget-testimonial-carousel .elementor-arrows-yes .elementor-main-swiper,
.elementor-widget-reviews .elementor-arrows-yes .elementor-main-swiper {
  width: calc( 95% - 40px); }

.elementor-widget-testimonial-carousel .elementor-main-swiper,
.elementor-widget-reviews .elementor-main-swiper {
  width: 95%; }

.elementor-widget-testimonial-carousel .swiper-wrapper,
.elementor-widget-reviews .swiper-wrapper {
  display: flex;
  align-items: stretch; }

.elementor-widget-testimonial-carousel .swiper-slide,
.elementor-widget-reviews .swiper-slide {
  height: auto; }

.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .swiper-container, .elementor-widget-testimonial-carousel.elementor-pagination-type-fraction .swiper-container,
.elementor-widget-reviews.elementor-pagination-type-bullets .swiper-container,
.elementor-widget-reviews.elementor-pagination-type-fraction .swiper-container {
  padding-bottom: 40px; }

.elementor-widget-testimonial-carousel .elementor-swiper-button-prev,
.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-next,
.elementor-widget-reviews .elementor-swiper-button-prev,
.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-next {
  left: 0;
  right: unset; }

.elementor-widget-testimonial-carousel .elementor-swiper-button-next,
.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-prev,
.elementor-widget-reviews .elementor-swiper-button-next,
.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-prev {
  right: 0;
  left: unset; }

.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-next, .elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-prev,
.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-next,
.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-prev {
  top: calc( 50% - ( 40px / 2 )); }

.elementor-widget-media-carousel .elementor-swiper-button-prev,
.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-next {
  left: 10px;
  right: unset; }

.elementor-widget-media-carousel .elementor-swiper-button-next,
.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-prev {
  right: 10px;
  left: unset; }

.entry-content blockquote.elementor-blockquote:not(.alignright):not(.alignleft),
.entry-summary blockquote.elementor-blockquote {
  margin-right: 0;
  margin-left: 0; }

.elementor-widget-blockquote blockquote {
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  font-size: 100%;
  vertical-align: baseline;
  background: transparent;
  quotes: none;
  border-left: 0 none;
  border-right: 0 none;
  border-top: 0 none;
  border-bottom: 0 none;
  font-style: normal;
  color: #55595c; }
  .elementor-widget-blockquote blockquote:before, .elementor-widget-blockquote blockquote:after,
  .elementor-widget-blockquote blockquote footer:before,
  .elementor-widget-blockquote blockquote footer:after,
  .elementor-widget-blockquote blockquote cite:before,
  .elementor-widget-blockquote blockquote cite:after {
    content: '';
    content: none; }

.elementor-blockquote {
  transition: 0.3s; }
  .elementor-blockquote__author, .elementor-blockquote__content {
    margin-bottom: 0;
    font-style: normal; }
  .elementor-blockquote__author {
    font-weight: bold; }
  .elementor-blockquote footer {
    margin-top: 12px;
    display: flex;
    justify-content: space-between; }
  .elementor-blockquote__tweet-button {
    display: flex;
    transition: 0.3s;
    color: #1DA1F2;
    align-self: flex-end;
    line-height: 1;
    position: relative;
    width: max-content; }
    .elementor-blockquote__tweet-button:hover {
      color: #0967a0; }
    .elementor-blockquote__tweet-button span {
      font-weight: 600; }
    .elementor-blockquote__tweet-button i, .elementor-blockquote__tweet-button span {
      vertical-align: middle; }
    .elementor-blockquote__tweet-button i + span,
    .elementor-blockquote__tweet-button svg + span {
      margin-right: 0.5em; }
    .elementor-blockquote__tweet-button svg {
      fill: #1DA1F2;
      height: 1em;
      width: 1em; }
  .elementor-blockquote__tweet-label {
    white-space: pre-wrap; }
  .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button {
    padding: 0.7em 1.2em;
    border-radius: 100em;
    background-color: #1DA1F2;
    color: #fff;
    font-size: 15px; }
    .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover {
      background-color: #0967a0;
      color: #fff; }
      .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover:before, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover:before {
        border-left-color: #0967a0; }
    .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button svg, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button svg {
      fill: #fff;
      height: 1em;
      width: 1em; }
  .elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button, .elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button {
    padding: 0;
    width: 2em;
    height: 2em; }
    .elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i, .elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i {
      position: absolute;
      left: 50%;
      top: 50%;
      transform: translate(-50%, -50%); }
  .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:before {
    content: '';
    border: solid 0.5em transparent;
    border-left-color: #1DA1F2;
    position: absolute;
    right: -0.8em;
    top: 50%;
    transform: translateY(-50%) scale(1, 0.65);
    transition: 0.3s; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:before {
    right: auto;
    left: -0.8em;
    border-right-color: #1DA1F2;
    border-left-color: transparent; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:hover:before {
    border-right-color: #0967a0; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:before {
    left: auto;
    right: -0.8em;
    border-right-color: transparent;
    border-left-color: #1DA1F2; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:hover:before {
    border-left-color: #0967a0; }
  .elementor-blockquote--skin-boxed .elementor-blockquote {
    background-color: #e6e9ec;
    padding: 30px; }
  .elementor-blockquote--skin-border .elementor-blockquote {
    border-color: #e6e9ec;
    border-style: solid;
    border-right-width: 7px;
    padding-right: 20px; }
  .elementor-blockquote--skin-quotation .elementor-blockquote:before {
    content: '“';
    font-size: 100px;
    color: #e6e9ec;
    font-family: "Times New Roman", Times, serif;
    font-weight: 900;
    line-height: 1;
    display: block;
    height: 0.6em; }
  .elementor-blockquote--skin-quotation .elementor-blockquote__content {
    margin-top: 15px; }
  .elementor-blockquote--align-left .elementor-blockquote__content {
    text-align: left; }
  .elementor-blockquote--align-left .elementor-blockquote footer {
    flex-direction: row-reverse; }
  .elementor-blockquote--align-right .elementor-blockquote__content {
    text-align: right; }
  .elementor-blockquote--align-right .elementor-blockquote footer {
    flex-direction: row; }
  .elementor-blockquote--align-center .elementor-blockquote {
    text-align: center; }
    .elementor-blockquote--align-center .elementor-blockquote footer {
      display: block; }
    .elementor-blockquote--align-center .elementor-blockquote__author {
      display: block; }
    .elementor-blockquote--align-center .elementor-blockquote__tweet-button {
      margin-right: auto;
      margin-left: auto; }

.elementor-headline {
  font-size: 43px;
  line-height: 1.2;
  display: block; }
  .elementor-headline-dynamic-text {
    color: var(--dynamic-text-color, #aebcb9); }
  .elementor-headline--style-rotate .elementor-headline-dynamic-wrapper {
    text-align: right; }
  .elementor-headline--style-highlight .elementor-headline-dynamic-wrapper {
    overflow: visible;
    text-align: inherit; }
  .elementor-headline--style-highlight .elementor-headline-dynamic-text {
    z-index: 1; }
  .elementor-headline--style-highlight .elementor-headline-plain-text {
    z-index: 1;
    position: relative; }
  .elementor-headline--style-highlight svg {
    position: absolute;
    top: 50%;
    left: 50%;
    width: calc( 100% + 20px);
    height: calc( 100% + 20px);
    transform: translate(-50%, -50%);
    overflow: visible; }
    .elementor-headline--style-highlight svg path {
      stroke: red;
      stroke-width: 9;
      fill: none;
      opacity: 0;
      stroke-dasharray: 0 1500;
      transition: 0.3s; }
  .elementor-headline.e-animated svg path {
    animation: elementor-headline-dash forwards;
    animation-duration: var(--animation-duration, 1.2s);
    animation-iteration-count: 1; }
    .elementor-headline.e-animated svg path:nth-of-type(2) {
      animation-delay: calc(var(--animation-duration, 1.2s) / 2); }
  .elementor-headline.e-hide-highlight svg path {
    opacity: 1;
    stroke-dasharray: 1500 1500;
    animation: hide-highlight 0.4s forwards;
    animation-iteration-count: 1; }

@keyframes elementor-headline-dash {
  from {
    stroke-dasharray: 0 1500;
    opacity: 1; }
  to {
    stroke-dasharray: 1500 1500;
    opacity: 1; } }

@keyframes hide-highlight {
  from {
    opacity: 1;
    stroke-dasharray: 1500 1500; }
  to {
    opacity: 0;
    filter: blur(10px); } }

.elementor-headline-text-wrapper {
  vertical-align: bottom; }

.elementor-headline-dynamic-wrapper {
  display: inline-block;
  position: relative; }
  .elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text {
    display: inline-block;
    position: absolute;
    top: 0;
    right: 0; }
    .elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text.elementor-headline-text-active {
      position: relative; }

.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper {
  perspective: 300px; }

.elementor-headline-animation-type-flip .elementor-headline-dynamic-text {
  opacity: 0;
  transform-origin: 50% 100%;
  transform: rotateX(180deg); }
  .elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1;
    transform: rotateX(0deg);
    animation: elementor-headline-flip-in 1.2s; }
  .elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    transform: rotateX(180deg);
    animation: elementor-headline-flip-out 1.2s; }

@keyframes elementor-headline-flip-in {
  0% {
    transform: rotateX(180deg);
    opacity: 0; }
  35% {
    transform: rotateX(120deg);
    opacity: 0; }
  65% {
    opacity: 0; }
  100% {
    transform: rotateX(360deg);
    opacity: 1; } }

@keyframes elementor-headline-flip-out {
  0% {
    transform: rotateX(0deg);
    opacity: 1; }
  35% {
    transform: rotateX(-40deg);
    opacity: 1; }
  65% {
    opacity: 0; }
  100% {
    transform: rotateX(180deg);
    opacity: 0; } }

.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper {
  vertical-align: top;
  overflow: hidden; }
  .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper::after {
    /* vertical bar */
    content: '';
    position: absolute;
    left: 0;
    right: auto;
    top: 50%;
    transform: translateY(-50%);
    height: 90%;
    width: 1px;
    background-color: #0d0d0d; }
  .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:not(.elementor-headline-typing-selected):after {
    animation: elementor-headline-pulse 1s infinite; }
  .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected {
    background-color: var(--typing-selected-bg-color, #0d0d0d); }
    .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected::after {
      visibility: hidden; }
    .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected .elementor-headline-dynamic-text {
      color: var(--typing-selected-color, var(--dynamic-text-color), #aebcb9); }

.elementor-headline-animation-type-typing .elementor-headline-dynamic-text:not(.elementor-headline-text-active) {
  visibility: hidden; }

.elementor-headline-animation-type-typing .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
  position: absolute;
  visibility: hidden; }

@keyframes elementor-headline-pulse {
  0% {
    transform: translateY(-50%) scale(1);
    opacity: 1; }
  40% {
    transform: translateY(-50%) scale(0.9);
    opacity: 0; }
  100% {
    transform: translateY(-50%) scale(0);
    opacity: 0; } }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper {
  perspective: 300px; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter {
  display: inline-block;
  backface-visibility: hidden; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text {
  transform: scaleX(1.0005);
  opacity: 0; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter {
  transform-style: preserve-3d;
  transform: translateZ(-20px) rotateX(90deg);
  opacity: 0; }
  .elementor-headline-text-active .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter {
    opacity: 1; }
  .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter.elementor-headline-animation-in {
    animation: elementor-headline-swirl-in .4s forwards; }
  .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
    animation: elementor-headline-swirl-out .4s forwards; }

@keyframes elementor-headline-swirl-in {
  0% {
    opacity: 0;
    transform: translateZ(-20px) rotateX(90deg); }
  60% {
    opacity: 1;
    transform: translateZ(-20px) rotateX(-10deg); }
  100% {
    opacity: 1;
    transform: translateZ(-20px) rotateX(0deg); } }

@keyframes elementor-headline-swirl-out {
  0% {
    opacity: 1;
    transform: translateZ(-20px) rotateX(0); }
  60% {
    opacity: 0;
    transform: translateZ(-20px) rotateX(-100deg); }
  100% {
    opacity: 0;
    transform: translateZ(-20px) rotateX(-90deg); } }

.elementor-headline-animation-type-slide-down .elementor-headline-text-wrapper {
  display: inline-block;
  padding: .2em 0; }

.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper {
  overflow: hidden;
  vertical-align: top; }

.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text {
  opacity: 0;
  top: .2em; }
  .elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-active {
    top: 0;
    opacity: 1;
    animation: elementor-headline-slide-down-in .6s; }
  .elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    animation: elementor-headline-slide-down-out .6s; }

@keyframes elementor-headline-slide-down-in {
  0% {
    opacity: 0;
    transform: translateY(-100%); }
  60% {
    opacity: 1;
    transform: translateY(20%); }
  100% {
    opacity: 1;
    transform: translateY(0); } }

@keyframes elementor-headline-slide-down-out {
  0% {
    opacity: 1;
    transform: translateY(0); }
  60% {
    opacity: 0;
    transform: translateY(120%); }
  100% {
    opacity: 0;
    transform: translateY(100%); } }

.elementor-headline-animation-type-clip .elementor-headline-text-wrapper {
  display: inline-block;
  padding: .2em 0; }

.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper {
  overflow: hidden;
  vertical-align: top; }
  .elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper::after {
    /* line */
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: auto;
    width: 2px;
    height: 100%;
    background-color: #0d0d0d; }

.elementor-headline-animation-type-clip .elementor-headline-dynamic-text {
  opacity: 0; }
  .elementor-headline-animation-type-clip .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1; }

.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper {
  perspective: 300px; }

.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text {
  opacity: 0; }
  .elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1;
    animation: elementor-headline-drop-in-in .8s; }
  .elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    animation: elementor-headline-drop-in-out .8s; }

@keyframes elementor-headline-drop-in-in {
  0% {
    opacity: 0;
    transform: translateZ(100px); }
  100% {
    opacity: 1;
    transform: translateZ(0); } }

@keyframes elementor-headline-drop-in-out {
  0% {
    opacity: 1;
    transform: translateZ(0); }
  100% {
    opacity: 0;
    transform: translateZ(-100px); } }

.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper {
  perspective: 300px; }

.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text {
  opacity: 0; }

.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter {
  display: inline-block;
  transform: rotateY(180deg);
  backface-visibility: hidden; }
  .elementor-headline-text-active .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter {
    transform: rotateY(0deg); }
  .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter.elementor-headline-animation-in {
    animation: elementor-headline-blinds-in .6s forwards; }
  .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
    animation: elementor-headline-blinds-out .6s forwards; }

@keyframes elementor-headline-blinds-in {
  0% {
    transform: rotateY(180deg); }
  100% {
    transform: rotateY(0deg); } }

@keyframes elementor-headline-blinds-out {
  0% {
    transform: rotateY(0); }
  100% {
    transform: rotateY(-180deg); } }

.elementor-headline-animation-type-wave .elementor-headline-dynamic-text {
  opacity: 0; }

.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter {
  display: inline-block;
  opacity: 0;
  transform: scale(0); }
  .elementor-headline-text-active .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter {
    opacity: 1; }
  .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter.elementor-headline-animation-in {
    animation: elementor-headline-wave-up .6s forwards; }
  .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
    animation: elementor-headline-wave-down .6s forwards; }

@keyframes elementor-headline-wave-up {
  0% {
    transform: scale(0);
    opacity: 0; }
  60% {
    transform: scale(1.2);
    opacity: 1; }
  100% {
    transform: scale(1);
    opacity: 1; } }

@keyframes elementor-headline-wave-down {
  0% {
    transform: scale(1);
    opacity: 1; }
  60% {
    transform: scale(0);
    opacity: 0; } }

.elementor-headline-animation-type-slide .elementor-headline-dynamic-text {
  opacity: 0; }
  .elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1;
    animation: elementor-headline-slide-in .6s; }
  .elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    animation: elementor-headline-slide-out .6s; }

@keyframes elementor-headline-slide-in {
  0% {
    opacity: 0;
    transform: translateX(-100%); }
  60% {
    opacity: 1;
    transform: translateX(10%); }
  100% {
    opacity: 1;
    transform: translateX(0); } }

@keyframes elementor-headline-slide-out {
  0% {
    opacity: 1;
    transform: translateX(0); }
  60% {
    opacity: 0;
    transform: translateX(110%); }
  100% {
    opacity: 0;
    transform: translateX(100%); } }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-slide .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper {
  transition: width 0.5s; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper {
  overflow: hidden; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text, .elementor-headline-animation-type-blinds .elementor-headline-dynamic-text, .elementor-headline-animation-type-wave .elementor-headline-dynamic-text {
  white-space: nowrap; }

.elementor-msie .elementor-headline--style-highlight svg {
  top: auto;
  left: auto;
  transform: translate(-100%); }

/* Animations */
@keyframes e-hotspot-soft-beat {
  from {
    transform: scale(1); }
  to {
    transform: scale(1.1); } }

@keyframes e-hotspot-expand {
  from {
    transform: scale(0.5);
    opacity: 1; }
  to {
    transform: scale(1.5);
    opacity: 0; } }

/* Hotspot Wrapper */
.elementor-widget-hotspot {
  display: flex;
  justify-content: var(--background-align); }
  .elementor-widget-hotspot .elementor-widget-container {
    position: relative;
    display: inline-block;
    width: var(--container-width);
    max-width: var(--container-max-width);
    height: var(--container-height); }
    .elementor-widget-hotspot .elementor-widget-container > img {
      display: block;
      width: var(--image-width, auto);
      height: var(--container-height);
      opacity: var(--opacity, 1); }

/* Each Hotspot */
.e-hotspot {
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  position: absolute;
  /* Hotspot Button Animations */
  /* End: Hotspot Button Animations */ }
  .e-hotspot--position-left.e-hotspot--position-top {
    transform: translate(calc( -1 * var( --hotspot-translate-x )), calc( -1 * var( --hotspot-translate-y ))); }
  .e-hotspot--position-left.e-hotspot--position-bottom {
    transform: translate(calc( -1 * var( --hotspot-translate-x )), var(--hotspot-translate-y)); }
  .e-hotspot--position-right.e-hotspot--position-top {
    transform: translate(var(--hotspot-translate-x), calc( -1 * var( --hotspot-translate-y ))); }
  .e-hotspot--position-right.e-hotspot--position-bottom {
    transform: translate(var(--hotspot-translate-x), var(--hotspot-translate-y)); }
  .e-hotspot--active {
    z-index: 2; }
  .e-hotspot__outer-circle, .e-hotspot__inner-circle {
    content: "";
    display: inline-block;
    box-sizing: content-box;
    border-radius: 50%; }
  .e-hotspot__inner-circle {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: var(--hotspot-color);
    padding: calc( var(--hotspot-size, 18px) / 2); }
  .e-hotspot__outer-circle {
    background-color: var(--hotspot-color);
    padding: var(--hotspot-padding, 4px);
    width: var(--hotspot-size, 18px);
    height: var(--hotspot-size, 18px); }
  .e-hotspot--icon .e-hotspot__button {
    line-height: 0;
    box-sizing: content-box;
    font-size: var(--hotspot-size, 18px);
    width: var(--hotspot-size, 18px);
    height: var(--hotspot-size, 18px); }
  .e-hotspot__icon, .e-hotspot__label {
    display: flex;
    justify-content: center;
    align-items: center; }
    .e-hotspot__icon svg, .e-hotspot__label svg {
      width: var(--hotspot-size, 18px);
      height: auto; }
  .e-hotspot__button {
    cursor: pointer;
    position: relative;
    display: grid;
    grid-auto-flow: column;
    justify-content: center;
    color: var(--hotspot-color);
    font-size: var(--hotspot-size, 18px);
    min-width: var(--hotspot-button-width);
    min-height: var(--hotspot-button-height); }
    .e-hotspot__button:before {
      z-index: -2;
      content: "";
      width: 100%;
      height: 100%;
      left: -5px;
      top: -5px;
      position: absolute;
      padding: 5px;
      box-sizing: content-box; }
    .e-hotspot__button svg {
      fill: var(--hotspot-color); }
  .e-hotspot:not(.e-hotspot--circle) .e-hotspot__button {
    min-width: var(--hotspot-min-width);
    min-height: var(--hotspot-min-height);
    background-color: var(--hotspot-box-color);
    padding: var(--hotspot-padding, 4px);
    border-radius: var(--hotspot-border-radius, 3px); }
    .e-hotspot:not(.e-hotspot--circle) .e-hotspot__button:before {
      border-radius: var(--hotspot-border-radius, 3px); }
  .e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand::before {
    background-color: var(--hotspot-box-color); }
  .e-hotspot--overlay {
    opacity: 0.7;
    transition: opacity 0.2s; }
  .e-hotspot--overlay:hover,
  .e-hotspot--active .e-hotspot--overlay {
    opacity: 1; }
  .e-hotspot--soft-beat {
    animation: e-hotspot-soft-beat 0.7s infinite alternate;
    animation-timing-function: ease; }
  .e-hotspot--expand .e-hotspot__outer-circle {
    animation: e-hotspot-expand 2s infinite; }
  .e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand::before {
    content: "";
    width: 100%;
    height: 100%;
    position: absolute;
    z-index: -1;
    opacity: 0;
    animation: e-hotspot-expand 2s infinite; }
  .e-hotspot--sequenced {
    animation: fadeIn 0.3s;
    animation-iteration-count: 1;
    animation-fill-mode: both; }
  .e-hotspot__direction-mask {
    overflow: hidden;
    position: absolute;
    pointer-events: none; }
  .e-hotspot__tooltip {
    white-space: var(--white-space, nowrap);
    transition-property: transform, opacity;
    transition-duration: var(--tooltip-transition-duration, 500ms);
    transform-origin: center center;
    position: absolute;
    pointer-events: none;
    color: var(--tooltip-text-color, #FFF);
    text-align: var(--tooltip-align);
    min-width: var(--tooltip-min-width);
    padding: var(--tooltip-padding, 8px);
    border-radius: var(--tooltip-border-radius);
    background-color: var(--tooltip-color); }
  .e-hotspot__tooltip p:last-of-type {
    margin-bottom: 0; }
  .e-hotspot__direction-mask .e-hotspot__tooltip {
    box-shadow: none !important;
    position: static; }
  .e-hotspot--active .e-hotspot__tooltip {
    pointer-events: visible; }
  .e-hotspot--fade-in-out {
    opacity: 0; }
  .e-hotspot--active .e-hotspot--fade-in-out {
    opacity: 1; }
  .e-hotspot--fade-grow {
    opacity: 0;
    transform: scale(0); }
  .e-hotspot--active .e-hotspot--fade-grow {
    opacity: 1;
    transform: scale(1); }
  .e-hotspot--tooltip-animation-from-top, .e-hotspot--override-tooltip-animation-from-top {
    transform: translate(0, calc(-100% - 1px)); }
  .e-hotspot--tooltip-animation-from-left, .e-hotspot--override-tooltip-animation-from-left {
    transform: translate(calc(-100% - 1px), 0); }
  .e-hotspot--tooltip-animation-from-right, .e-hotspot--override-tooltip-animation-from-right {
    transform: translate(calc(100% + 1px), 0); }
  .e-hotspot--tooltip-animation-from-bottom, .e-hotspot--override-tooltip-animation-from-bottom {
    transform: translate(0, calc(100% + 1px)); }
  .e-hotspot--fade-direction {
    opacity: 0; }
  .e-hotspot--active .e-hotspot--slide-direction,
  .e-hotspot--active .e-hotspot--fade-direction {
    transform: translate(0, 0) scale(1);
    opacity: 1; }
  .e-hotspot--show-tooltip {
    transition: none;
    opacity: 1;
    pointer-events: visible;
    transform: translate(0, 0); }

.elementor-facebook-widget.fb_iframe_widget {
  width: 100% !important; }
  .elementor-facebook-widget.fb_iframe_widget span {
    width: 100% !important; }
  .elementor-facebook-widget.fb_iframe_widget iframe {
    position: relative;
    width: 100% !important; }

.elementor-facebook-widget.fb-like {
  height: 1px; }

.elementor-widget-facebook-comments iframe {
  width: 100% !important; }

.site-main .menu-navigation-container {
  overflow: visible; }

.elementor-item:before, .elementor-item:after {
  display: block;
  position: absolute;
  transition: 0.3s;
  transition-timing-function: cubic-bezier(0.58, 0.3, 0.005, 1); }

.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  opacity: 0; }


.elementor-item:hover:before,
.elementor-item:hover:after,
.elementor-item:focus:before,
.elementor-item:focus:after,
.elementor-item.highlighted:before,
.elementor-item.highlighted:after,
.elementor-item-active:before,
.elementor-item-active:after {
  transform: scale(1); }

.e--pointer-double-line .elementor-item:before, .e--pointer-double-line .elementor-item:after, .e--pointer-underline .elementor-item:before, .e--pointer-underline .elementor-item:after, .e--pointer-overline .elementor-item:before, .e--pointer-overline .elementor-item:after {
  height: 3px;
  width: 100%;
  left: 0;
  background-color: #55595c;
  z-index: 2; }

.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  height: 0;
  width: 0;
  left: 50%; }

.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  top: 10px; }

.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  bottom: 10px; }

.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  top: -10px; }

.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  bottom: -10px; }

.e--pointer-double-line.e--animation-none,
.e--pointer-double-line.e--animation-none .elementor-item, .e--pointer-underline.e--animation-none,
.e--pointer-underline.e--animation-none .elementor-item, .e--pointer-overline.e--animation-none,
.e--pointer-overline.e--animation-none .elementor-item {
  transition-duration: 0s; }
  .e--pointer-double-line.e--animation-none:before, .e--pointer-double-line.e--animation-none:after, .e--pointer-double-line.e--animation-none:hover, .e--pointer-double-line.e--animation-none:focus,
  .e--pointer-double-line.e--animation-none .elementor-item:before,
  .e--pointer-double-line.e--animation-none .elementor-item:after,
  .e--pointer-double-line.e--animation-none .elementor-item:hover,
  .e--pointer-double-line.e--animation-none .elementor-item:focus, .e--pointer-underline.e--animation-none:before, .e--pointer-underline.e--animation-none:after, .e--pointer-underline.e--animation-none:hover, .e--pointer-underline.e--animation-none:focus,
  .e--pointer-underline.e--animation-none .elementor-item:before,
  .e--pointer-underline.e--animation-none .elementor-item:after,
  .e--pointer-underline.e--animation-none .elementor-item:hover,
  .e--pointer-underline.e--animation-none .elementor-item:focus, .e--pointer-overline.e--animation-none:before, .e--pointer-overline.e--animation-none:after, .e--pointer-overline.e--animation-none:hover, .e--pointer-overline.e--animation-none:focus,
  .e--pointer-overline.e--animation-none .elementor-item:before,
  .e--pointer-overline.e--animation-none .elementor-item:after,
  .e--pointer-overline.e--animation-none .elementor-item:hover,
  .e--pointer-overline.e--animation-none .elementor-item:focus {
    transition-duration: 0s; }

.e--pointer-double-line .elementor-item:before, .e--pointer-overline .elementor-item:before {
  content: '';
  top: 0; }

.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  width: 10px;
  left: -20px; }

.e--pointer-double-line .elementor-item:after, .e--pointer-underline .elementor-item:after {
  content: '';
  bottom: 0; }

.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  width: 10px;
  inset-inline-start: 100%; }

.e--pointer-framed .elementor-item:before, .e--pointer-framed .elementor-item:after {
  background: transparent;
  left: 0;
  top: 0;
  bottom: 0;
  right: 0;
  border: 3px solid #55595c; }

.e--pointer-framed .elementor-item:before {
  content: ''; }

.e--pointer-framed.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  transform: scale(0.75); }

.e--pointer-framed.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  transform: scale(1.25); }

.e--pointer-framed.e--animation-grow .elementor-item:before, .e--pointer-framed.e--animation-shrink .elementor-item:before {
  transition: opacity 0.2s, transform 0.4s; }

.e--pointer-framed.e--animation-draw .elementor-item:before, .e--pointer-framed.e--animation-draw .elementor-item:after {
  width: 3px;
  height: 3px; }

.e--pointer-framed.e--animation-draw .elementor-item:before {
  border-width: 0 3px 3px 0;
  transition: width 0.1s 0.2s, height 0.1s 0.3s, opacity 0.12s 0.22s; }

.e--pointer-framed.e--animation-draw .elementor-item:after {
  content: '';
  top: initial;
  bottom: 0;
  right: initial;
  left: 0;
  border-width: 3px 0 0 3px;
  transition: width 0.1s, height 0.1s 0.1s, opacity 0.02s 0.18s; }


.e--pointer-framed.e--animation-draw .elementor-item:hover:before,
.e--pointer-framed.e--animation-draw .elementor-item:hover:after,
.e--pointer-framed.e--animation-draw .elementor-item:focus:before,
.e--pointer-framed.e--animation-draw .elementor-item:focus:after,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,
.e--pointer-framed.e--animation-draw .elementor-item-active:before,
.e--pointer-framed.e--animation-draw .elementor-item-active:after {
  width: 100%;
  height: 100%; }


.e--pointer-framed.e--animation-draw .elementor-item:hover:before,
.e--pointer-framed.e--animation-draw .elementor-item:focus:before,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,
.e--pointer-framed.e--animation-draw .elementor-item-active:before {
  transition: opacity 0.02s, height 0.1s, width 0.1s 0.1s; }


.e--pointer-framed.e--animation-draw .elementor-item:hover:after,
.e--pointer-framed.e--animation-draw .elementor-item:focus:after,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,
.e--pointer-framed.e--animation-draw .elementor-item-active:after {
  transition: opacity 0.02s 0.2s, height 0.1s 0.2s, width 0.1s 0.3s; }

.e--pointer-framed.e--animation-corners .elementor-item:before, .e--pointer-framed.e--animation-corners .elementor-item:after {
  width: 3px;
  height: 3px; }

.e--pointer-framed.e--animation-corners .elementor-item:before {
  border-width: 3px 3px 0 0; }

.e--pointer-framed.e--animation-corners .elementor-item:after {
  content: '';
  top: initial;
  bottom: 0;
  right: initial;
  left: 0;
  border-width: 0 0 3px 3px; }


.e--pointer-framed.e--animation-corners .elementor-item:hover:before,
.e--pointer-framed.e--animation-corners .elementor-item:hover:after,
.e--pointer-framed.e--animation-corners .elementor-item:focus:before,
.e--pointer-framed.e--animation-corners .elementor-item:focus:after,
.e--pointer-framed.e--animation-corners .elementor-item.highlighted:before,
.e--pointer-framed.e--animation-corners .elementor-item.highlighted:after,
.e--pointer-framed.e--animation-corners .elementor-item-active:before,
.e--pointer-framed.e--animation-corners .elementor-item-active:after {
  width: 100%;
  height: 100%;
  transition: opacity 0.002s, width 0.4s, height 0.4s; }

.e--pointer-framed.e--animation-none,
.e--pointer-framed.e--animation-none .elementor-item {
  transition-duration: 0s; }
  .e--pointer-framed.e--animation-none:before, .e--pointer-framed.e--animation-none:after, .e--pointer-framed.e--animation-none:hover, .e--pointer-framed.e--animation-none:focus,
  .e--pointer-framed.e--animation-none .elementor-item:before,
  .e--pointer-framed.e--animation-none .elementor-item:after,
  .e--pointer-framed.e--animation-none .elementor-item:hover,
  .e--pointer-framed.e--animation-none .elementor-item:focus {
    transition-duration: 0s; }

.e--pointer-background .elementor-item:before, .e--pointer-background .elementor-item:after {
  content: '';
  transition: 0.3s; }

.e--pointer-background .elementor-item:before {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: #55595c;
  z-index: -1; }


.e--pointer-background .elementor-item:hover,
.e--pointer-background .elementor-item:focus,
.e--pointer-background .elementor-item.highlighted,
.e--pointer-background .elementor-item-active {
  color: #fff; }

.e--pointer-background.e--animation-grow .elementor-item:before {
  transform: scale(0.5); }


.e--pointer-background.e--animation-grow .elementor-item:hover:before,
.e--pointer-background.e--animation-grow .elementor-item:focus:before,
.e--pointer-background.e--animation-grow .elementor-item.highlighted:before,
.e--pointer-background.e--animation-grow .elementor-item-active:before {
  transform: scale(1);
  opacity: 1; }

.e--pointer-background.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  transform: scale(1.2);
  transition: 0.3s; }


.e--pointer-background.e--animation-shrink .elementor-item:hover:before,
.e--pointer-background.e--animation-shrink .elementor-item:focus:before,
.e--pointer-background.e--animation-shrink .elementor-item.highlighted:before,
.e--pointer-background.e--animation-shrink .elementor-item-active:before {
  transition: opacity 0.15s, transform 0.4s; }

.e--pointer-background.e--animation-sweep-left .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  left: 100%; }

.e--pointer-background.e--animation-sweep-right .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  right: 100%; }

.e--pointer-background.e--animation-sweep-up .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  top: 100%; }

.e--pointer-background.e--animation-sweep-down .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  bottom: 100%; }

.e--pointer-background.e--animation-shutter-out-vertical .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  bottom: 50%;
  top: 50%; }

.e--pointer-background.e--animation-shutter-out-horizontal .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  right: 50%;
  left: 50%; }

.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after, .e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: #55595c;
  z-index: -1; }

.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:before {
  top: 0;
  bottom: 100%; }

.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after {
  top: 100%;
  bottom: 0; }


.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:before,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:before,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:before,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:before {
  bottom: 50%; }


.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:after,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:after,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:after,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:after {
  top: 50%; }

.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:before {
  right: 0;
  left: 100%; }

.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after {
  right: 100%;
  left: 0; }


.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:before,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:before,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:before,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:before {
  left: 50%; }


.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:after,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:after,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:after,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:after {
  right: 50%; }

.e--pointer-background.e--animation-none,
.e--pointer-background.e--animation-none .elementor-item {
  transition-duration: 0s; }
  .e--pointer-background.e--animation-none:before, .e--pointer-background.e--animation-none:after, .e--pointer-background.e--animation-none:hover, .e--pointer-background.e--animation-none:focus,
  .e--pointer-background.e--animation-none .elementor-item:before,
  .e--pointer-background.e--animation-none .elementor-item:after,
  .e--pointer-background.e--animation-none .elementor-item:hover,
  .e--pointer-background.e--animation-none .elementor-item:focus {
    transition-duration: 0s; }

.e--pointer-text.e--animation-skew .elementor-item:hover,
.e--pointer-text.e--animation-skew .elementor-item:focus {
  transform: skew(-8deg); }

.e--pointer-text.e--animation-grow .elementor-item:hover,
.e--pointer-text.e--animation-grow .elementor-item:focus {
  transform: scale(1.2); }

.e--pointer-text.e--animation-shrink .elementor-item:hover,
.e--pointer-text.e--animation-shrink .elementor-item:focus {
  transform: scale(0.8); }

.e--pointer-text.e--animation-float .elementor-item:hover,
.e--pointer-text.e--animation-float .elementor-item:focus {
  transform: translateY(-8px); }

.e--pointer-text.e--animation-sink .elementor-item:hover,
.e--pointer-text.e--animation-sink .elementor-item:focus {
  transform: translateY(8px); }

.e--pointer-text.e--animation-rotate .elementor-item:hover,
.e--pointer-text.e--animation-rotate .elementor-item:focus {
  transform: rotate(6deg); }

.e--pointer-text.e--animation-none,
.e--pointer-text.e--animation-none .elementor-item {
  transition-duration: 0s; }
  .e--pointer-text.e--animation-none:before, .e--pointer-text.e--animation-none:after, .e--pointer-text.e--animation-none:hover, .e--pointer-text.e--animation-none:focus,
  .e--pointer-text.e--animation-none .elementor-item:before,
  .e--pointer-text.e--animation-none .elementor-item:after,
  .e--pointer-text.e--animation-none .elementor-item:hover,
  .e--pointer-text.e--animation-none .elementor-item:focus {
    transition-duration: 0s; }

.elementor-nav-menu--main .elementor-nav-menu a {
  transition: 0.4s; }
  .elementor-nav-menu--main .elementor-nav-menu a, .elementor-nav-menu--main .elementor-nav-menu a:hover, .elementor-nav-menu--main .elementor-nav-menu a:focus, .elementor-nav-menu--main .elementor-nav-menu a.highlighted {
    padding: 13px 20px; }
  .elementor-nav-menu--main .elementor-nav-menu a.current {
    background: #373a3c;
    color: #fff; }
  .elementor-nav-menu--main .elementor-nav-menu a.disabled {
    background: #55595c;
    color: #a1a6a9; }

.elementor-nav-menu--main .elementor-nav-menu ul {
  position: absolute;
  width: 12em;
  border-width: 0;
  border-style: solid;
  padding: 0; }

.elementor-nav-menu--main .elementor-nav-menu span.scroll-up,
.elementor-nav-menu--main .elementor-nav-menu span.scroll-down {
  position: absolute;
  display: none;
  visibility: hidden;
  overflow: hidden;
  background: #fff;
  height: 20px; }

.elementor-nav-menu--main .elementor-nav-menu span.scroll-up-arrow, .elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow, .elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow {
  position: absolute;
  top: -2px;
  right: 50%;
  margin-right: -8px;
  width: 0;
  height: 0;
  overflow: hidden;
  border-width: 8px;
  border-style: dashed dashed solid dashed;
  border-color: transparent transparent #494c4f transparent; }

.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow {
  top: 6px;
  border-style: solid dashed dashed dashed;
  border-color: #494c4f transparent transparent transparent; }

.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow i {
  transform: rotate(90deg); }

.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow .e-font-icon-svg {
  height: 1em;
  width: 1em; }

.elementor-nav-menu--layout-horizontal {
  display: flex; }
  .elementor-nav-menu--layout-horizontal .elementor-nav-menu {
    display: flex;
    flex-wrap: wrap; }
    .elementor-nav-menu--layout-horizontal .elementor-nav-menu a {
      white-space: nowrap;
      flex-grow: 1; }
    .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li {
      display: flex; }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li ul, .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li > .scroll-down {
        top: 100% !important; }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > a {
        margin-inline-start: var(--e-nav-menu-horizontal-menu-item-margin); }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > ul, .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > .scroll-down, .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > .scroll-up {
        right: var(--e-nav-menu-horizontal-menu-item-margin) !important; }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:last-child) > a {
        margin-inline-end: var(--e-nav-menu-horizontal-menu-item-margin); }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:last-child):after {
        content: var(--e-nav-menu-divider-content, none);
        border-left-width: var(--e-nav-menu-divider-width, 2px);
        border-left-style: var(--e-nav-menu-divider-style, solid);
        height: var(--e-nav-menu-divider-height, 35%);
        border-color: var(--e-nav-menu-divider-color, #000);
        align-self: center; }

.elementor-nav-menu__align-right .elementor-nav-menu {
  margin-left: auto;
  justify-content: flex-start; }

.elementor-nav-menu__align-right .elementor-nav-menu--layout-vertical > ul > li > a {
  justify-content: flex-start; }

.elementor-nav-menu__align-left .elementor-nav-menu {
  margin-right: auto;
  justify-content: flex-end; }

.elementor-nav-menu__align-left .elementor-nav-menu--layout-vertical > ul > li > a {
  justify-content: flex-end; }

.elementor-nav-menu__align-center .elementor-nav-menu {
  margin-left: auto;
  margin-right: auto;
  justify-content: center; }

.elementor-nav-menu__align-center .elementor-nav-menu--layout-vertical > ul > li > a {
  justify-content: center; }

.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu {
  width: 100%; }
  .elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li {
    flex-grow: 1; }
    .elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li > a {
      justify-content: center; }

.elementor-widget-nav-menu:not(.elementor-nav-menu--toggle) .elementor-menu-toggle {
  display: none; }

.elementor-widget-nav-menu .elementor-widget-container {
  display: flex;
  flex-direction: column; }

.elementor-nav-menu {
  position: relative;
  z-index: 2; }
  .elementor-nav-menu:after {
    content: "\00a0";
    display: block;
    height: 0;
    font: 0px/0 serif;
    clear: both;
    visibility: hidden;
    overflow: hidden; }
  .elementor-nav-menu,
  .elementor-nav-menu ul,
  .elementor-nav-menu li {
    display: block;
    list-style: none;
    margin: 0;
    padding: 0;
    line-height: normal;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
  .elementor-nav-menu ul {
    display: none; }
    .elementor-nav-menu ul ul a,
    .elementor-nav-menu ul ul a:hover,
    .elementor-nav-menu ul ul a:focus,
    .elementor-nav-menu ul ul a:active {
      border-left: 16px solid transparent; }
    .elementor-nav-menu ul ul ul a,
    .elementor-nav-menu ul ul ul a:hover,
    .elementor-nav-menu ul ul ul a:focus,
    .elementor-nav-menu ul ul ul a:active {
      border-left: 24px solid transparent; }
    .elementor-nav-menu ul ul ul ul a,
    .elementor-nav-menu ul ul ul ul a:hover,
    .elementor-nav-menu ul ul ul ul a:focus,
    .elementor-nav-menu ul ul ul ul a:active {
      border-left: 32px solid transparent; }
    .elementor-nav-menu ul ul ul ul ul a,
    .elementor-nav-menu ul ul ul ul ul a:hover,
    .elementor-nav-menu ul ul ul ul ul a:focus,
    .elementor-nav-menu ul ul ul ul ul a:active {
      border-left: 40px solid transparent; }
  .elementor-nav-menu li,
  .elementor-nav-menu a {
    position: relative; }
  .elementor-nav-menu li {
    border-width: 0; }
  .elementor-nav-menu a {
    display: flex;
    align-items: center; }
    .elementor-nav-menu a, .elementor-nav-menu a:hover, .elementor-nav-menu a:focus {
      padding: 10px 20px;
      line-height: 20px; }
    .elementor-nav-menu a.current {
      background: #373a3c;
      color: #fff; }
    .elementor-nav-menu a.disabled {
      cursor: not-allowed;
      color: #a1a6a9; }
  .elementor-nav-menu .e-plus-icon:before {
    content: '+'; }
  .elementor-nav-menu .sub-arrow {
    line-height: 1;
    padding: 10px 10px 10px 0;
    margin-top: -10px;
    margin-bottom: -10px;
    display: flex;
    align-items: center; }
    .elementor-nav-menu .sub-arrow i {
      pointer-events: none; }
    .elementor-nav-menu .sub-arrow .fa.fa-chevron-down, .elementor-nav-menu .sub-arrow .fas.fa-chevron-down {
      font-size: 0.7em; }
    .elementor-nav-menu .sub-arrow .e-font-icon-svg {
      height: 1em;
      width: 1em; }
      .elementor-nav-menu .sub-arrow .e-font-icon-svg.fa-svg-chevron-down {
        height: 0.7em;
        width: 0.7em; }

.elementor-nav-menu--dropdown .elementor-item:hover, .elementor-nav-menu--dropdown .elementor-item:focus, .elementor-nav-menu--dropdown .elementor-item.highlighted, .elementor-nav-menu--dropdown .elementor-item.elementor-item-active,
.elementor-sub-item:hover,
.elementor-sub-item:focus,
.elementor-sub-item.highlighted,
.elementor-sub-item.elementor-item-active {
  background-color: #55595c;
  color: #fff; }

.elementor-menu-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 22px;
  padding: 0.25em;
  cursor: pointer;
  border: 0 solid;
  border-radius: 3px;
  background-color: rgba(0, 0, 0, 0.05);
  color: #494c4f; }
  .elementor-menu-toggle.elementor-active .elementor-menu-toggle__icon--open {
    display: none; }
  .elementor-menu-toggle:not(.elementor-active) .elementor-menu-toggle__icon--close {
    display: none; }
  .elementor-menu-toggle .e-font-icon-svg {
    fill: #494c4f;
    height: 1em;
    width: 1em; }

.elementor-nav-menu--dropdown {
  background-color: #fff;
  font-size: 13px; }
  .elementor-nav-menu--dropdown-none .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-none .elementor-menu-toggle {
    display: none; }
  .elementor-nav-menu--dropdown.elementor-nav-menu__container {
    margin-top: 10px;
    transition: max-height 0.3s, transform 0.3s;
    transform-origin: top;
    overflow: auto; }
    .elementor-nav-menu--dropdown.elementor-nav-menu__container .elementor-sub-item {
      font-size: 0.85em; }
  .elementor-nav-menu--dropdown a {
    color: #494c4f; }
    .elementor-nav-menu--dropdown a.current {
      background: #373a3c;
      color: #fff; }
    .elementor-nav-menu--dropdown a.disabled {
      color: #b3b2b2; }

ul.elementor-nav-menu--dropdown a, ul.elementor-nav-menu--dropdown a:hover, ul.elementor-nav-menu--dropdown a:focus {
  text-shadow: none;
  border-right: 8px solid transparent; }

.elementor-nav-menu__text-align-center .elementor-nav-menu--dropdown .elementor-nav-menu a {
  justify-content: center; }

.elementor-nav-menu--toggle .elementor-menu-toggle:not(.elementor-active) + .elementor-nav-menu__container {
  transform: scaleY(0);
  max-height: 0; }

.elementor-nav-menu--toggle .elementor-menu-toggle.elementor-active + .elementor-nav-menu__container {
  transform: scaleY(1);
  max-height: 100vh; }

.elementor-nav-menu--stretch .elementor-nav-menu__container.elementor-nav-menu--dropdown {
  position: absolute;
  z-index: 9997; }

/**
 * Mobile Hamburger Menu Breakpoint
 */
@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .elementor-nav-menu--dropdown-mobile .elementor-nav-menu--main {
    display: none; } }

@media (min-width: ELEMENTOR_SCREEN_MOBILE_NEXT) {
  .elementor-nav-menu--dropdown-mobile .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-mobile .elementor-menu-toggle {
    display: none; } }

/**
 * Mobile Extra Hamburger Menu Breakpoint
 */
@media (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) {
  .elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--main {
    display: none; } }

@media (min-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_NEXT) {
  .elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-mobile_extra .elementor-menu-toggle {
    display: none; } }

/**
 * Tablet Hamburger Menu Breakpoint
 */
@media (min-width: ELEMENTOR_SCREEN_TABLET_NEXT) {
  .elementor-nav-menu--dropdown-tablet .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-tablet .elementor-menu-toggle {
    display: none; } }

@media (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
  .elementor-nav-menu--dropdown-tablet .elementor-nav-menu--main {
    display: none; } }

/**
 * Tablet Extra Hamburger Menu Breakpoint
 */
@media (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) {
  .elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--main {
    display: none; } }

@media (min-width: ELEMENTOR_SCREEN_TABLET_EXTRA_NEXT) {
  .elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-tablet_extra .elementor-menu-toggle {
    display: none; } }

.elementor-gallery__container {
  min-height: 1px; }

.elementor-gallery-item {
  position: relative;
  overflow: hidden;
  display: block;
  text-decoration: none;
  border: solid var(--image-border-width) var(--image-border-color);
  border-radius: var(--image-border-radius); }
  .elementor-gallery-item__overlay, .elementor-gallery-item__content {
    height: 100%;
    width: 100%;
    position: absolute;
    top: 0;
    left: 0; }
  .elementor-gallery-item__overlay {
    mix-blend-mode: var(--overlay-mix-blend-mode);
    transition-duration: var(--overlay-transition-duration);
    transition-property: mix-blend-mode, transform, opacity, background-color; }
  .elementor-gallery-item__image.e-gallery-image {
    transition-duration: var(--image-transition-duration);
    transition-property: filter, transform; }
  .elementor-gallery-item__content {
    display: flex;
    flex-direction: column;
    justify-content: var(--content-justify-content, center);
    align-items: center;
    text-align: var(--content-text-align);
    padding: var(--content-padding); }
    .elementor-gallery-item__content > div {
      transition-duration: var(--content-transition-duration); }
    .elementor-gallery-item__content.elementor-gallery--sequenced-animation > div:nth-child(2) {
      transition-delay: calc( ( var(--content-transition-delay) / 3 )); }
    .elementor-gallery-item__content.elementor-gallery--sequenced-animation > div:nth-child(3) {
      transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 2); }
    .elementor-gallery-item__content.elementor-gallery--sequenced-animation > div:nth-child(4) {
      transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 3); }
  .elementor-gallery-item__description {
    color: var(--description-text-color, #ffffff);
    width: 100%; }
  .elementor-gallery-item__title {
    color: var(--title-text-color, #ffffff);
    font-weight: bold;
    width: 100%; }

.elementor-gallery__titles-container {
  display: flex;
  flex-wrap: wrap;
  justify-content: var(--titles-container-justify-content, center);
  margin-bottom: 20px; }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:before {
    background-color: var(--galleries-pointer-bg-color-hover); }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:after {
    background-color: var(--galleries-pointer-bg-color-hover); }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:before {
    background-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:after {
    background-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item:before {
    border-color: var(--galleries-pointer-bg-color-hover);
    border-width: var(--galleries-pointer-border-width); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item:after {
    border-color: var(--galleries-pointer-bg-color-hover); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:before {
    border-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:after {
    border-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:before {
    border-width: 0 0 var(--galleries-pointer-border-width) var(--galleries-pointer-border-width); }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:after {
    border-width: var(--galleries-pointer-border-width) var(--galleries-pointer-border-width) 0 0; }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:before {
    border-width: var(--galleries-pointer-border-width) 0 0 var(--galleries-pointer-border-width); }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:after {
    border-width: 0 var(--galleries-pointer-border-width) var(--galleries-pointer-border-width) 0; }
  .elementor-gallery__titles-container .e--pointer-underline .elementor-item:after,
  .elementor-gallery__titles-container .e--pointer-overline .elementor-item:before,
  .elementor-gallery__titles-container .e--pointer-double-line .elementor-item:before,
  .elementor-gallery__titles-container .e--pointer-double-line .elementor-item:after {
    height: var(--galleries-pointer-border-width); }

.elementor-gallery-title {
  --space-between: 10px;
  cursor: pointer;
  color: #6D7882;
  font-weight: 500;
  position: relative;
  padding: 7px 14px;
  transition: all 0.3s; }
  .elementor-gallery-title--active {
    color: #495157; }
  .elementor-gallery-title:not(:last-child) {
    margin-left: var(--space-between); }

.elementor-gallery-item__title + .elementor-gallery-item__description {
  margin-top: var(--description-margin-top); }

.e-gallery-item.elementor-gallery-item {
  transition-property: all; }

.e-gallery-item:hover .elementor-gallery__item-overlay-bg {
  opacity: 1; }

.e-gallery-item:hover .elementor-gallery__item-overlay-content {
  opacity: 1; }
  .e-gallery-item:hover .elementor-gallery__item-overlay-content__title, .e-gallery-item:hover .elementor-gallery__item-overlay-content__description {
    opacity: 1; }

.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-right, .e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-left, .e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-top, .e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-bottom {
  opacity: 1; }

a.elementor-item.elementor-gallery-title {
  color: var(--galleries-title-color-normal); }
  a.elementor-item.elementor-gallery-title:hover, a.elementor-item.elementor-gallery-title.elementor-item-active, a.elementor-item.elementor-gallery-title.highlighted, a.elementor-item.elementor-gallery-title:focus {
    color: var(--galleries-title-color-hover); }
  a.elementor-item.elementor-gallery-title.elementor-item-active {
    color: var(--gallery-title-color-active); }

.elementor-widget-table-of-contents .elementor-toc__header-title {
  color: var(--header-color); }

.elementor-widget-table-of-contents.elementor-toc--collapsed .elementor-toc__toggle-button--collapse {
  display: none; }

.elementor-widget-table-of-contents:not(.elementor-toc--collapsed) .elementor-toc__toggle-button--expand {
  display: none; }

.elementor-widget-table-of-contents .elementor-widget-container {
  min-height: var(--box-min-height);
  border: var(--box-border-width, 1px) solid var(--box-border-color, #a4afb7);
  border-radius: var(--box-border-radius, 3px);
  background-color: var(--box-background-color);
  transition: min-height 0.4s;
  overflow: hidden; }

.elementor-toc__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--box-padding, 20px);
  background-color: var(--header-background-color);
  border-bottom: var(--separator-width, 1px) solid var(--box-border-color, #a4afb7); }
  .elementor-toc__header-title {
    font-size: 18px;
    margin: 0;
    color: var(--header-color); }

.elementor-toc__toggle-button {
  cursor: pointer;
  display: inline-flex; }
  .elementor-toc__toggle-button i {
    color: var(--toggle-button-color); }
  .elementor-toc__toggle-button svg {
    fill: var(--toggle-button-color);
    height: 1em;
    width: 1em;
    fill: var(--toggle-button-color); }

.elementor-toc__spinner-container {
  text-align: center; }

.elementor-toc__spinner {
  font-size: 2em; }
  .elementor-toc__spinner.e-font-icon-svg {
    height: 1em;
    width: 1em; }

.elementor-toc__body {
  padding: var(--box-padding, 20px);
  max-height: var(--toc-body-max-height);
  overflow-y: auto; }
  .elementor-toc__body::-webkit-scrollbar {
    width: 7px; }
  .elementor-toc__body::-webkit-scrollbar-thumb {
    background-color: #c2cbd2;
    border-radius: 10px; }

.elementor-toc__list-wrapper {
  list-style: none;
  padding: 0; }

.elementor-toc__list-item {
  margin-bottom: 0.5em; }
  .elementor-toc__list-item.elementor-item-active {
    font-weight: bold; }
  .elementor-toc__list-item .elementor-toc__list-wrapper {
    margin-top: 0.5em;
    margin-right: var(--nested-list-indent, 1em); }
  .elementor-toc__list-item-text:hover {
    color: var(--item-text-hover-color);
    text-decoration: var(--item-text-hover-decoration); }
  .elementor-toc__list-item-text.elementor-item-active {
    color: var(--item-text-active-color);
    text-decoration: var(--item-text-active-decoration); }
  .elementor-toc__list-item-text-wrapper {
    display: flex;
    align-items: center; }
    .elementor-toc__list-item-text-wrapper i, .elementor-toc__list-item-text-wrapper:before {
      margin-left: 8px;
      color: var(--marker-color); }
    .elementor-toc__list-item-text-wrapper svg {
      margin-left: 8px;
      fill: var(--marker-color);
      height: var(--marker-size, 0.5em);
      width: var(--marker-size, 0.5em); }
    .elementor-toc__list-item-text-wrapper i {
      font-size: var(--marker-size, 0.5em); }
    .elementor-toc__list-item-text-wrapper:before {
      font-size: var(--marker-size, 1em); }

.elementor-toc--content-ellipsis .elementor-toc__list-item-text {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis; }

.elementor-toc__list-items--collapsible > .elementor-toc__list-wrapper > .elementor-toc__list-item > .elementor-toc__list-wrapper {
  display: none; }

.elementor-toc__heading-anchor {
  position: absolute; }

.elementor-toc__body .elementor-toc__list-item-text {
  color: var(--item-text-color);
  text-decoration: var(--item-text-decoration); }
  .elementor-toc__body .elementor-toc__list-item-text:hover {
    color: var(--item-text-hover-color);
    text-decoration: var(--item-text-hover-decoration); }
  .elementor-toc__body .elementor-toc__list-item-text.elementor-item-active {
    color: var(--item-text-active-color);
    text-decoration: var(--item-text-active-decoration); }

ol.elementor-toc__list-wrapper {
  counter-reset: item; }
  ol.elementor-toc__list-wrapper .elementor-toc__list-item {
    counter-increment: item; }
    ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper:before {
      content: counters(item, ".") ". "; }

@media only screen and (max-width: ELEMENTOR_SCREEN_TABLET_EXTRA_MAX) {
  .elementor-toc--minimized-on-tablet_extra .elementor-toc__body {
    display: none; } }

@media only screen and (max-width: ELEMENTOR_SCREEN_TABLET_MAX) {
  .elementor-toc--minimized-on-tablet .elementor-toc__body {
    display: none; } }

@media only screen and (max-width: ELEMENTOR_SCREEN_MOBILE_EXTRA_MAX) {
  .elementor-toc--minimized-on-mobile_extra .elementor-toc__body {
    display: none; } }

@media only screen and (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .elementor-toc--minimized-on-mobile .elementor-toc__body {
    display: none; } }

.e-lottie__container {
  display: inline-block;
  max-width: var(--lottie-container-max-width);
  width: var(--lottie-container-width);
  opacity: var(--lottie-container-opacity); }
  .e-lottie__container:hover {
    opacity: var(--lottie-container-opacity-hover);
    transition-duration: var(--lottie-container-transition-duration-hover); }
  .e-lottie__container svg,
  .e-lottie__container svg * {
    transition: none !important; }

.e-lottie__caption {
  color: var(--caption-color);
  margin-top: var(--caption-margin-top);
  text-align: var(--caption-text-align); }

/* Video_Playlist Widget */
.e-tabs-inner-tabs {
  text-align: right;
  font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
  font-size: 16px; }
  .e-tabs-inner-tabs .e-tab-content {
    padding-top: 32px; }
  .e-tabs-inner-tabs .e-inner-tabs-wrapper {
    display: flex;
    position: relative;
    overflow: hidden;
    z-index: 1; }
    .e-tabs-inner-tabs .e-inner-tabs-wrapper :after {
      content: '';
      width: 100%;
      height: var(--inner-tabs-border-height, 1px);
      background-color: var(--inner-tabs-border-color, #d5dadf);
      position: absolute;
      bottom: 0;
      z-index: -1; }
    .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title {
      font-weight: 700;
      min-width: 140px;
      line-height: 38px;
      height: 38px;
      box-sizing: content-box; }
      .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title a {
        color: #6d7882;
        padding: 0 36px;
        display: block;
        text-align: center; }
      .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active {
        border-bottom: 0 solid transparent;
        border-color: #495157;
        border-width: 0 0 1px 0; }
        .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active a {
          color: #495157; }
  .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title {
    display: none; }
  .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content {
    display: none;
    padding: 20px; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-text {
      color: #556068; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.e-inner-tab-active {
      display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons {
      margin-top: 24px;
      display: none; }
      .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons button {
        display: none;
        font-weight: 500;
        line-height: 24px;
        text-decoration: underline;
        border: none;
        background: transparent;
        padding: 0; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible .e-inner-tab-text {
      overflow: hidden; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button {
      display: none; }
      .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button.show-button {
        display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible.show-inner-tab-buttons .e-inner-tab-buttons {
      display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.show-full-height div.e-inner-tab-text {
      height: auto; }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .e-tabs-inner-tabs > .e-tab-content:first-child {
    padding-top: 24px; }
  .e-tabs-inner-tabs .e-inner-tabs-wrapper {
    display: none; }
  .e-tabs-inner-tabs .e-inner-tabs-content-wrapper {
    border-width: 1px 1px 0;
    border-style: solid;
    border-color: #d5dadf; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title {
      border-width: 0 0 1px;
      border-style: solid;
      border-color: #d5dadf;
      font-size: 16px;
      font-weight: 700;
      text-align: center;
      height: 38px;
      line-height: 38px;
      text-overflow: ellipsis;
      white-space: nowrap;
      overflow: hidden;
      padding: 0 10px;
      cursor: pointer;
      display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content {
      border-width: 0 0 1px;
      border-style: solid;
      border-color: #d5dadf;
      padding: 20px; } }

.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area {
  flex-direction: row; }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area {
    flex-direction: column-reverse; } }

.elementor-widget-video-playlist {
  font-family: Roboto, Arial, Helvetica, Verdana, sans-serif; }
  .elementor-widget-video-playlist .e-tabs {
    display: flex;
    flex-direction: column; }
  .elementor-widget-video-playlist .e-tabs-main-area {
    display: flex;
    flex-direction: row-reverse;
    height: 434px; }
  .elementor-widget-video-playlist .e-tabs-wrapper {
    height: 100%;
    display: flex;
    flex-direction: column;
    width: 33%; }
  .elementor-widget-video-playlist .e-tabs-header {
    background-color: #ffffff;
    display: flex;
    flex: 0 0 auto;
    justify-content: space-between;
    padding: 0 16px;
    min-height: 56px;
    border-bottom: 1px solid #d5dadf; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-header-right-side {
      display: inline-flex;
      flex-shrink: 0; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-title {
      font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
      text-overflow: ellipsis;
      font-weight: 700;
      font-size: 16px;
      padding: 10px 0;
      overflow-wrap: anywhere;
      hyphens: auto;
      margin: auto 0; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count {
      font-size: 14px;
      flex-shrink: 0;
      font-weight: 400;
      line-height: 20px;
      align-self: flex-start;
      padding: 18px 0 0; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button {
      display: none;
      margin: auto 0 auto 8px;
      cursor: pointer;
      padding: 0 4px; }
      .elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button.e-font-icon-svg {
        height: 1em;
        width: 1em; }
    .elementor-widget-video-playlist .e-tabs-header .rotate-up {
      transform: rotate(-180deg);
      transition: .3s; }
    .elementor-widget-video-playlist .e-tabs-header .rotate-down {
      transform: rotate(0deg);
      transition: .3s; }
  .elementor-widget-video-playlist .e-tabs-items-wrapper {
    background-color: #ffffff;
    overflow: hidden;
    position: relative;
    height: 100%; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom {
      background: linear-gradient(180deg, transparent 0%, #ffffff 100%); }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top {
      background: linear-gradient(0deg, transparent 0%, #ffffff 100%); }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items {
      overflow: auto;
      height: 100%; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-section-title {
      border-color: #d5dadf;
      border-width: 1px 0 0 0;
      font-size: 14px;
      height: 36px;
      padding: 0 16px;
      line-height: 36px;
      margin: 0;
      text-align: right;
      text-overflow: ellipsis;
      white-space: nowrap;
      overflow: hidden;
      border-width: 0;
      box-sizing: content-box; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title {
      background-color: #ffffff;
      border-color: #d5dadf;
      border-width: 0 0 1px 0;
      cursor: pointer;
      display: flex;
      font-size: 14px;
      height: 55px;
      line-height: 55px;
      outline: none;
      padding: 0 16px;
      box-sizing: content-box; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i {
        text-shadow: 0 0 3px #000000;
        color: #ffffff;
        font-size: var(--playlist-item-icon-size, 16px); }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg {
        text-shadow: 0 0 3px #000000;
        color: #ffffff;
        fill: #ffffff;
        width: var(--playlist-item-icon-size, 16px);
        height: var(--playlist-item-icon-size, 16px); }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg path {
          fill: #ffffff; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover {
        background-color: #f1f3f5;
        border-color: #d5dadf;
        border-width: 0 0 1px 0; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active i, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover i {
          text-shadow: 0 0 3px #000000;
          color: #ffffff; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg {
          text-shadow: 0 0 3px #000000;
          color: #ffffff; }
          .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg path, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg path {
            fill: #ffffff; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active .e-tab-title-text, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover .e-tab-title-text {
          font-size: 14px; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-play,
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched {
        display: inline-flex; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail {
        background-color: #d5dadf;
        position: relative;
        margin: auto 0;
        flex-shrink: 0;
        width: 75px;
        height: 42px; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail img {
          object-fit: fill;
          width: 75px;
          height: 42px; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail i,
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail svg {
          position: absolute;
          bottom: 4px;
          right: 4px;
          font-weight: 900; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-title-text {
        font-size: 14px;
        margin: auto 8px;
        text-align: right;
        text-overflow: ellipsis;
        white-space: nowrap;
        overflow: hidden;
        flex-grow: 1; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i,
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg {
        margin: auto 0;
        vertical-align: middle; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-duration {
        font-size: 14px;
        margin: auto 0; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched {
        display: none; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-play {
        display: none; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-watched {
        display: block; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top {
      display: none;
      height: 98px;
      position: absolute;
      top: 0;
      width: 100%;
      pointer-events: none;
      background: linear-gradient(0deg, transparent 0%, #ffffff 100%); }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom {
      display: none;
      height: 98px;
      position: absolute;
      bottom: 0;
      width: 100%;
      background: linear-gradient(180deg, transparent 0%, #ffffff 100%);
      pointer-events: none; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper.top-shadow .shadow-top {
      display: block; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper.bottom-shadow .shadow-bottom {
      display: block; }
  .elementor-widget-video-playlist .e-tabs-content-wrapper {
    flex-grow: 1;
    height: 100%;
    position: relative; }
    .elementor-widget-video-playlist .e-tabs-content-wrapper .elementor-custom-embed-image-overlay {
      cursor: pointer;
      text-align: center;
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-size: cover;
      background-position: 50%; }
    .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-mobile-title {
      display: none; }
    .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content {
      background-color: #000000;
      display: none;
      height: 100%;
      outline: none; }
      .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content > div {
        height: 100%; }
      .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content iframe {
        height: 100%;
        max-height: 100% !important;
        display: flex; }
      .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content video {
        height: 100%;
        background-color: #000000; }
  .elementor-widget-video-playlist .e-tabs-inner-tabs .e-tab-content {
    display: none;
    outline: none; }

@media (max-width: ELEMENTOR_SCREEN_MOBILE_MAX) {
  .elementor-widget-video-playlist .e-tabs-main-area {
    flex-direction: column-reverse;
    height: auto; }
    .elementor-widget-video-playlist .e-tabs-main-area .e-tabs-content-wrapper {
      border: none;
      height: 38%; }
  .elementor-widget-video-playlist .e-tabs-wrapper {
    width: auto;
    height: 62%; }
  .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items {
    max-height: 248px; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items .e-tab-title {
      border: none; }
  .elementor-widget-video-playlist .e-tabs-header {
    min-height: 48px; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button {
      display: inline-flex; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count {
      margin: 0 6px;
      padding: 14px 0 0; }
  .elementor-widget-video-playlist .e-tab-content {
    border: none;
    padding: 0;
    display: flex; } }

.elementor-payment-button {
  border: none; }

.elementor-scrolling-tracker {
  --scrolling-track-default-progress-color: #61ce70;
  --scrolling-track-default-color: #eeeeee;
  --scrolling-track-precentage-default-color: $black; }

.elementor-scrolling-tracker-horizontal {
  display: flex;
  width: 100%;
  height: var(--horizontal-height, 20px);
  padding: var(--tracker-padding);
  align-items: center;
  border-top-width: var(--horizontal-border-top-width, 2px);
  border-right-width: var(--horizontal-border-right-width, 2px);
  border-bottom-width: var(--horizontal-border-bottom-width, 2px);
  border-left-width: var(--horizontal-border-left-width, 2px);
  border-style: var(--horizontal-border-style);
  border-color: var(--horizontal-border-color);
  border-radius: var(--border-radius);
  background-color: var(--scrolling-track-default-color);
  direction: var(--direction); }
  .elementor-scrolling-tracker-horizontal .current-progress {
    display: none;
    height: 100%;
    align-items: center;
    position: relative;
    border-radius: var(--progress-border-radius);
    border-top-width: var(--horizontal-progress-border-top-width, 2px);
    border-right-width: var(--horizontal-progress-border-right-width, 2px);
    border-bottom-width: var(--horizontal-progress-border-bottom-width, 2px);
    border-left-width: var(--horizontal-progress-border-left-width, 2px);
    border-style: var(--horizontal-progress-border);
    border-color: var(--horizontal-progress-border-color);
    background-color: var(--scrolling-track-default-progress-color); }
    .elementor-scrolling-tracker-horizontal .current-progress .current-progress-percentage {
      inset-inline-end: 0.5em;
      inset-inline-start: auto;
      position: absolute;
      direction: var(--text-direction);
      color: var(--percentage-color, var(--scrolling-track-precentage-default-color)); }

.elementor-scrolling-tracker-circular {
  display: flex;
  width: var(--circular-width, 100px);
  height: var(--circular-height, 100px);
  align-items: center;
  justify-content: center;
  position: relative;
  margin-inline-start: 0;
  margin-inline-end: auto; }
  .elementor-scrolling-tracker-circular .current-progress-percentage {
    position: absolute;
    color: var(--percentage-color, var(--scrolling-track-precentage-default-color)); }
  .elementor-scrolling-tracker-circular svg {
    position: absolute; }
  .elementor-scrolling-tracker-circular .current-progress {
    display: none;
    transform: rotate(-90deg);
    transform-origin: 50% 50%;
    stroke: var(--circular-color, var(--scrolling-track-default-progress-color));
    fill: transparent;
    stroke-width: var(--circular-progress-width, 4px); }
  .elementor-scrolling-tracker-circular .circle {
    stroke: var(--circular-background-color, var(--scrolling-track-default-color));
    fill: transparent;
    stroke-width: var(--circular-background-width, 4px); }

.elementor-scrolling-tracker-alignment-left {
  margin-left: 0;
  margin-right: auto; }

.elementor-scrolling-tracker-alignment-center {
  margin-left: auto;
  margin-right: auto; }

.elementor-scrolling-tracker-alignment-right {
  margin-left: auto;
  margin-right: 0; }
assets/css/templates/frontend-lite.min.css000064400000371777150755004320014731 0ustar00.elementor-bg-transform .elementor-bg{will-change:transform}.elementor-bg-transform-zoom-in:hover .elementor-bg,.elementor-bg-transform-zoom-out .elementor-bg{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.elementor-bg-transform-zoom-out:hover .elementor-bg{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-bg-transform-move-left .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-left:hover .elementor-bg,.elementor-bg-transform-move-right .elementor-bg{-webkit-transform:scale(1.2) translateX(-8%);-ms-transform:scale(1.2) translateX(-8%);transform:scale(1.2) translateX(-8%)}.elementor-bg-transform-move-right:hover .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-up .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-bg-transform-move-down .elementor-bg,.elementor-bg-transform-move-up:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(-8%);-ms-transform:scale(1.2) translateY(-8%);transform:scale(1.2) translateY(-8%)}.elementor-bg-transform-move-down:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-animated-content{--translate:0,0}.elementor-animated-content:hover .elementor-animated-item--grow{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.elementor-animated-content:hover .elementor-animated-item--shrink{-webkit-transform:scale(.85);-ms-transform:scale(.85);transform:scale(.85)}.elementor-animated-content:hover .elementor-animated-item--shrink-contained{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content:hover .elementor-animated-item--enter-zoom-in,.elementor-animated-content:hover .elementor-animated-item--enter-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-in{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in,.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-out{opacity:0}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content:hover .elementor-animated-item--enter-from-bottom,.elementor-animated-content:hover .elementor-animated-item--enter-from-left,.elementor-animated-content:hover .elementor-animated-item--enter-from-right,.elementor-animated-content:hover .elementor-animated-item--enter-from-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content:hover .elementor-animated-item--exit-to-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom{-webkit-transform:translateY(600px);-ms-transform:translateY(600px);transform:translateY(600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom,.elementor-animated-content:hover .elementor-animated-item--exit-to-left,.elementor-animated-content:hover .elementor-animated-item--exit-to-right,.elementor-animated-content:hover .elementor-animated-item--exit-to-top{opacity:0}.elementor-animated-content:hover .elementor-animated-item--move-right{-webkit-transform:translateX(30px);-ms-transform:translateX(30px);transform:translateX(30px)}.elementor-animated-content:hover .elementor-animated-item--move-left{-webkit-transform:translateX(-30px);-ms-transform:translateX(-30px);transform:translateX(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-up{-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-down{-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px)}.elementor-animated-content:hover .elementor-animated-item--move-contained-right{--translate:8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-left{--translate:-8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-top{--translate:0,-8%}.elementor-animated-content:hover .elementor-animated-item--move-contained-bottom{--translate:0,8%}.elementor-animated-content [class^=elementor-animated-item]{will-change:transform,opacity}.elementor-animated-content .elementor-animated-item--shrink-contained{-webkit-transform:scale(1.17);-ms-transform:scale(1.17);transform:scale(1.17)}.elementor-animated-content .elementor-animated-item--enter-zoom-in{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content .elementor-animated-item--enter-zoom-out{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content .elementor-animated-item--enter-zoom-in,.elementor-animated-content .elementor-animated-item--enter-zoom-out,.elementor-animated-content .elementor-animated-item--fade-in{opacity:0}.elementor-animated-content .elementor-animated-item--exit-zoom-in,.elementor-animated-content .elementor-animated-item--exit-zoom-out,.elementor-animated-content .elementor-animated-item--fade-out{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content .elementor-animated-item--enter-from-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content .elementor-animated-item--enter-from-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content .elementor-animated-item--enter-from-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom{-webkit-transform:translateY(500px);-ms-transform:translateY(500px);transform:translateY(500px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom,.elementor-animated-content .elementor-animated-item--enter-from-left,.elementor-animated-content .elementor-animated-item--enter-from-right,.elementor-animated-content .elementor-animated-item--enter-from-top{opacity:0}.elementor-animated-content .elementor-animated-item--exit-to-bottom,.elementor-animated-content .elementor-animated-item--exit-to-left,.elementor-animated-content .elementor-animated-item--exit-to-right,.elementor-animated-content .elementor-animated-item--exit-to-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content .elementor-animated-item--move-contained-bottom,.elementor-animated-content .elementor-animated-item--move-contained-left,.elementor-animated-content .elementor-animated-item--move-contained-right,.elementor-animated-content .elementor-animated-item--move-contained-top{-webkit-transform:scale(1.2) translate(var(--translate));-ms-transform:scale(1.2) translate(var(--translate));transform:scale(1.2) translate(var(--translate))}.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover{outline:1px solid #fec449}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings{background-image:-webkit-gradient(linear,left bottom,left top,from(#feb416),to(#fec449));background-image:-webkit-linear-gradient(bottom,#feb416,#fec449);background-image:-o-linear-gradient(bottom,#feb416,#fec449);background-image:linear-gradient(0deg,#feb416,#fec449)}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover{background-color:#feb416}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save{display:none}body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;width:100%;padding:0}body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;padding:0}.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form){margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .quantity .qty{vertical-align:top;margin-right:0}.woocommerce div.product.elementor .quantity+.button{margin-left:10px}.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input{height:100%}.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button{background-color:#5bc0de}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button{background-color:#5cb85c}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button{background-color:#f0ad4e}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button{background-color:#d9534f}.elementor-widget-wc-add-to-cart .quantity{display:inline-block}.elementor-widget-wc-add-to-cart.elementor-align-center form.cart{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-wc-add-to-cart.elementor-align-left form.cart,.elementor-widget-wc-add-to-cart.elementor-align-right form.cart{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor ul.tabs:before{position:static;content:none;width:auto;bottom:auto;left:auto;border-bottom:0;z-index:auto}.woocommerce div.product.elementor ul.tabs{margin:0}.woocommerce div.product.elementor ul.tabs li{padding:0}.woocommerce div.product.elementor ul.tabs li a{padding:.8em 1.2em;line-height:1}.woocommerce div.product.elementor ul.tabs li:after,.woocommerce div.product.elementor ul.tabs li:before{border:0;position:static;bottom:auto;width:auto;height:auto;content:none;-webkit-box-sizing:border-box;box-sizing:border-box}.woocommerce div.product.elementor .woocommerce-tabs .panel{padding:20px;border-radius:0;border-width:0;border-top:1px solid #d3ced2;-webkit-box-shadow:none;box-shadow:none;margin:-1px 0 0}.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins{display:block}.elementor-widget-woocommerce-product-meta .detail-container{position:relative}.elementor-widget-woocommerce-product-meta .detail-container:after{position:absolute;bottom:0;left:0;width:100%}.elementor-widget-woocommerce-product-meta .detail-label{font-weight:700}.elementor-woo-meta--view-inline .product_meta{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-woo-meta--view-inline .product_meta .detail-container:after{width:auto;left:auto;right:auto;position:absolute;height:100%;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;right:-8px}.elementor-woo-meta--view-table .product_meta{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-woo-meta--view-table .product_meta,.elementor-woo-meta--view-table .product_meta .detail-container{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-woo-meta--view-table .product_meta .detail-label{min-width:108px}.elementor-woo-meta--view-stacked .product_meta .detail-container{display:block}.woocommerce div.product.elementor .woocommerce-product-rating{margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.woocommerce div.product.elementor .star-rating{margin-top:0}.elementor-product-rating--align-left .woocommerce-product-rating{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-product-rating--align-right .woocommerce-product-rating{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-product-rating--align-center .woocommerce-product-rating{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link{margin-left:auto}.elementor-products-grid ul.products.elementor-grid{display:grid;margin:0;grid-column-gap:20px;grid-row-gap:40px}.elementor-products-grid ul.products.elementor-grid:after,.elementor-products-grid ul.products.elementor-grid:before{content:none;display:none}.elementor-products-grid ul.products.elementor-grid li.product{width:auto;padding:0;margin:0;float:none}.elementor-products-grid ul.products.elementor-grid li.product .onsale{padding:0;display:none}.elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link{display:block;position:relative}.elementor-products-grid:not(.show-heading-yes) .products>h2{display:none}.elementor-products-grid nav.woocommerce-pagination{margin-top:40px}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul{border:0}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li{border-right:0;border-left:0}.elementor-product-loop-item--align-left ul.products li.product .star-rating{margin-right:auto}.elementor-product-loop-item--align-right ul.products li.product .star-rating{margin-left:auto}.elementor-product-loop-item--align-center ul.products li.product .star-rating{margin-right:auto;margin-left:auto}.woocommerce .elementor-element.elementor-products-grid ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product{width:auto}@media (min-width:ELEMENTOR_SCREEN_TABLET_NEXT){.elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products{grid-template-columns:repeat(2,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products{grid-template-columns:repeat(3,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products{grid-template-columns:repeat(4,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products{grid-template-columns:repeat(5,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products{grid-template-columns:repeat(6,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products{grid-template-columns:repeat(7,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products{grid-template-columns:repeat(8,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products{grid-template-columns:repeat(9,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products{grid-template-columns:repeat(10,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products{grid-template-columns:repeat(11,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products{grid-template-columns:repeat(12,1fr)}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(3,1fr)}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(2,1fr)}}.elementor.product .woocommerce-product-gallery__trigger+.woocommerce-product-gallery__wrapper{overflow:hidden}.woocommerce .elementor-widget-woocommerce-product-images span.onsale{padding:0}.elementor-menu-cart__wrapper{text-align:var(--main-alignment,left)}.elementor-menu-cart__toggle_wrapper{display:inline-block;position:relative}.elementor-menu-cart__toggle{display:inline-block}.elementor-menu-cart__toggle .elementor-button{background-color:var(--toggle-button-background-color,transparent);color:var(--toggle-button-text-color,#818a91);border:var(--toggle-button-border-width,1px) var(--toggle-button-border-type,solid) var(--toggle-button-border-color,#818a91);border-radius:var(--toggle-button-border-radius,0);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--toggle-icon-padding,12px 24px)}.elementor-menu-cart__toggle .elementor-button:hover{color:var(--toggle-button-hover-text-color,#818a91);background-color:var(--toggle-button-hover-background-color,transparent);border-color:var(--toggle-button-hover-border-color,#818a91)}.elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon{color:var(--toggle-button-icon-hover-color,#818a91)}.elementor-menu-cart__toggle .elementor-button-text{margin-right:.3em}.elementor-menu-cart__toggle .elementor-button-icon{position:relative;-webkit-transition:color .1s;-o-transition:color .1s;transition:color .1s;color:var(--toggle-button-icon-color,#818a91);font-size:var(--toggle-icon-size,inherit)}.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:block;position:absolute;min-width:1.6em;height:1.6em;line-height:1.5em;top:-.7em;right:-.7em;border-radius:100%;color:var(--items-indicator-text-color,#fff);background-color:var(--items-indicator-background-color,#d9534f);text-align:center;font-size:10px}.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:inline-block;font-weight:400}.elementor-menu-cart__container{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);overflow:hidden;position:fixed;z-index:9998;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,.25);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s;text-align:left}.elementor-menu-cart__main{position:fixed;left:var(--side-cart-alignment-left,auto);right:var(--side-cart-alignment-right,0);-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);top:0;bottom:0;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;font-size:14px;min-height:200px;width:350px;max-width:100%;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;padding:var(--cart-padding,20px 30px);background-color:var(--cart-background-color,#fff);-webkit-box-shadow:0 0 20px rgba(0,0,0,.2);box-shadow:0 0 20px rgba(0,0,0,.2);border-style:var(--cart-border-style,none);border-color:var(--cart-border-color,initial);border-radius:var(--cart-border-radius,0);margin-top:var(--mini-cart-spacing,0)}.elementor-menu-cart__main,.elementor-menu-cart__main .widget_shopping_cart_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-menu-cart__main .widget_shopping_cart_content{height:100%}.elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message{color:var(--empty-message-color,inherit);text-align:var(--empty-message-alignment,left)}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{background-color:transparent;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button{display:none}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{overflow:hidden;opacity:0;-webkit-transform:var(--side-cart-alignment-transform,translateX(100%));-ms-transform:var(--side-cart-alignment-transform,translateX(100%));transform:var(--side-cart-alignment-transform,translateX(100%))}.elementor-menu-cart__close-button{width:var(--cart-close-icon-size,25px);height:var(--cart-close-icon-size,25px);position:relative;margin:0 0 20px;-ms-flex-item-align:end;align-self:flex-end;cursor:pointer;display:inline-block;font-family:eicons;font-size:20px;line-height:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:after,.elementor-menu-cart__close-button:before{content:"";position:absolute;height:3px;width:100%;top:50%;left:0;margin-top:-1px;background:var(--cart-close-button-color,#818a91);border-radius:1px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:hover:after,.elementor-menu-cart__close-button:hover:before{background:var(--cart-close-button-hover-color,#818a91)}.elementor-menu-cart__close-button:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__close-button:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__products{max-height:calc(100vh - 250px);overflow:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.elementor-menu-cart__product{display:grid;grid-template-columns:28% auto;grid-template-rows:var(--price-quantity-position--grid-template-rows,auto auto);position:relative;border-width:0;border-bottom:var(--divider-width,1px) var(--divider-style,solid) var(--divider-color,#d4d4d4)}.elementor-menu-cart__product .variation{display:grid;grid-template-columns:-webkit-max-content auto;grid-template-columns:max-content auto;margin:10px 0}.elementor-menu-cart__product .variation dt{grid-column-start:1}.elementor-menu-cart__product .variation dd{grid-column-start:2;-webkit-margin-start:5px;margin-inline-start:5px}.elementor-menu-cart__product .variation dd p{margin-bottom:0}.elementor-menu-cart__product-image{grid-row-start:1;grid-row-end:3;width:100%}.elementor-menu-cart__product-image a,.elementor-menu-cart__product-image img{display:block}.elementor-menu-cart__product-name{grid-column-start:2;grid-column-end:3;margin:0}.elementor-menu-cart__product-name a{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-price{grid-column-start:2;grid-column-end:3;-ms-flex-item-align:var(--price-quantity-position--align-self,end);align-self:var(--price-quantity-position--align-self,end);font-weight:300;color:var(--product-price-color,#d4d4d4)}.elementor-menu-cart__product-name,.elementor-menu-cart__product-price{font-size:14px;padding-left:20px}.elementor-menu-cart__product-remove{color:#818a91;width:var(--remove-item-button-size,22px);height:var(--remove-item-button-size,22px);border-radius:var(--remove-item-button-size,22px);border:1px solid var(--remove-item-button-color,#d4d4d4);text-align:center;overflow:hidden;position:absolute;right:0;bottom:20px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:hover{border:1px solid var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:hover:after,.elementor-menu-cart__product-remove:hover:before{background:var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:after,.elementor-menu-cart__product-remove:before{content:"";position:absolute;height:1px;width:50%;top:50%;left:25%;margin-top:-1px;background:var(--remove-item-button-color,#d4d4d4);z-index:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__product-remove:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__product-remove>a{display:block;z-index:2;width:100%;height:100%;overflow:hidden;opacity:0;position:absolute}.elementor-menu-cart__product-remove>a.remove_from_cart_button{display:var(--remove-from-cart-button,block)}.elementor-menu-cart__product-remove>a.elementor_remove_from_cart_button{display:var(--elementor-remove-from-cart-button,none)}.elementor-menu-cart__product:last-child{border:none}.elementor-menu-cart__footer-buttons,.elementor-menu-cart__product:not(:first-of-type),.elementor-menu-cart__subtotal{padding-top:var(--product-divider-gap,20px)}.elementor-menu-cart__product{padding-right:30px}.elementor-menu-cart__product,.elementor-menu-cart__subtotal{padding-bottom:var(--product-divider-gap,20px)}.elementor-menu-cart__subtotal{font-size:20px;text-align:var(--menu-cart-subtotal-text-align,center);font-weight:600;color:var(--menu-cart-subtotal-color,inherit);border-left:var(--subtotal-divider-left-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-bottom:var(--subtotal-divider-bottom-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-right:var(--subtotal-divider-right-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-top:var(--subtotal-divider-top-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4)}.elementor-menu-cart__footer-buttons{font-size:20px;text-align:var(--cart-footer-buttons-alignment-text-align,center);display:var(--cart-footer-buttons-alignment-display,grid);grid-template-columns:var(--cart-footer-layout,1fr 1fr);margin-top:var(--cart-buttons-position-margin,0);grid-column-gap:var(--space-between-buttons,10px);grid-row-gap:var(--space-between-buttons,10px)}.elementor-menu-cart__footer-buttons .elementor-button{display:inline-block;border-radius:var(--cart-footer-buttons-border-radius,0);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.elementor-menu-cart__footer-buttons .elementor-button--view-cart{display:var(--view-cart-button-display,inline-block);color:var(--view-cart-button-text-color,#fff);padding:var(--view-cart-button-padding,15px);background-color:var(--view-cart-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover{color:var(--view-cart-button-hover-text-color,#fff);background-color:var(--view-cart-button-hover-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout{display:var(--checkout-button-display,inline-block);color:var(--checkout-button-text-color,#fff);padding:var(--checkout-button-padding,15px);background-color:var(--checkout-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:var(--checkout-button-hover-background-color,#818a91)}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-menu-cart__footer-buttons .elementor-button{padding-left:10px;padding-right:10px}}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text{display:none}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before{content:none}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e3"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e4"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e5"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e6"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e7"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e8"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e9"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8ea"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8eb"}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product{padding-left:0;padding-right:0;grid-template-columns:25% auto}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove{display:none}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove{top:0;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove{top:20px;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove{-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);bottom:50%}.elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove{top:auto;bottom:20px}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{position:absolute;z-index:89;width:auto;height:auto;overflow:visible;top:100%;bottom:auto;background:none;min-width:330px;left:0;right:auto;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main{width:auto;height:auto;position:relative;top:auto;bottom:auto;right:auto;left:auto;overflow:visible;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{min-width:300px}}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{opacity:0;-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px)}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown{opacity:1}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container{z-index:9998}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart{z-index:89}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container{display:none}.elementor-widget-woocommerce-checkout-page{background-color:transparent;font-family:Roboto,sans-serif;font-size:14px;line-height:21px;color:#818a91}.elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container{grid-template-columns:auto}.elementor-widget-woocommerce-checkout-page ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page table tbody tr:hover>td,.elementor-widget-woocommerce-checkout-page table tbody tr:hover>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .e-description{color:var(--sections-descriptions-color,#818a91);padding-bottom:var(--sections-descriptions-spacing,0);font-size:14px;font-weight:400}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section{margin-bottom:24px}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title{text-align:var(--login-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge{margin-top:var(--sections-secondary-title-spacing,24px);margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor{margin-top:var(--sections-secondary-title-spacing,24px)}.elementor-widget-woocommerce-checkout-page .e-coupon-box{margin-top:24px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .e-login-wrap-start{-webkit-box-flex:75%;-ms-flex:75%;flex:75%}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{-webkit-box-flex:20%;-ms-flex:20%;flex:20%;text-align:right}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:block}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{text-align:left;margin-top:15px}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label{display:none}}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{margin-bottom:0;font-size:12px}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{font-size:11px}}.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:90%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:auto}}.elementor-widget-woocommerce-checkout-page .e-checkout__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:56% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,24px);grid-row-gap:var(--sections-margin,24px)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .e-checkout__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title{color:var(--sections-secondary-title-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge{text-align:var(--coupon-title-alignment,left)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address{margin-top:13px;padding-left:var(--shipping-heading-padding-start,30px)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address span{font-weight:400}.elementor-widget-woocommerce-checkout-page a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row{padding-left:var(--forms-columns-gap-padding,0);padding-right:var(--forms-columns-gap-padding,0);margin-left:var(--forms-columns-gap-margin,0);margin-right:var(--forms-columns-gap-margin,0)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);font-size:14px;border:none;font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-checkout-page .woocommerce .create-account,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row{margin-bottom:0!important}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input,.elementor-widget-woocommerce-checkout-page .woocommerce .input-radio{vertical-align:middle}.elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span{position:relative;top:2px;color:var(--sections-checkboxes-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label,.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{display:inline}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#6f6f6f);border-radius:var(--forms-buttons-border-radius,3px);padding:1rem;border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover{color:var(--forms-buttons-hover-text-color,#6f6f6f);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{margin-right:1%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{width:100%;margin-right:0;margin-bottom:15px}}.elementor-widget-woocommerce-checkout-page .woocommerce-info{border-top-color:transparent;background-color:transparent;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p{font-weight:400;font-size:12px}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info{font-weight:400;margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,.elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment{background:var(--sections-background-color,#fff);border-radius:var(--sections-border-radius,3px);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 24px 0);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{display:var(--additional-information-display,none)}@media (min-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text{color:var(--sections-messages-color,#818a91);font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p{margin-top:25px}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1{margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2{padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading{text-align:var(--order-review-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table{margin-bottom:0;border:0;font-size:14px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th{padding-top:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td{color:#000}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity{font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th{color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr{border:0;padding-left:0;padding-bottom:15px;padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr{padding-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td{font-weight:400;color:var(--order-summary-items-color,#000);border-bottom:var(--order-summary-items-divider-weight,0) solid var(--order-summary-items-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name{padding-right:40px;max-width:150px}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total{vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th{padding-top:var(--order-summary-rows-gap-top,15px);padding-bottom:var(--order-summary-rows-gap-bottom,15px)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th{color:var(--order-summary-totals-color,#818a91);vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th{border-top:var(--order-summary-totals-divider-weight,0) solid var(--order-summary-totals-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td{max-width:70px}.elementor-widget-woocommerce-checkout-page .woocommerce h3{font-size:14px;font-weight:700;margin-top:0;margin-bottom:var(--sections-title-spacing,30px);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row>span{font-weight:400;font-size:14px;margin-bottom:3px;color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:48%}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3{text-align:var(--billing-details-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row{margin-bottom:var(--forms-rows-gap,5px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child{margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login{margin-top:-8px;z-index:999;background:#fff;border-top-width:0;position:relative;margin-bottom:0;color:#818a91}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:100%}}.elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:85%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:35%}}.elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3{background:var(--additional-fields-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address{margin-bottom:var(--sections-margin,20px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment{margin-top:24px;padding:15px 25px 25px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods{border-bottom:none;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li{line-height:21px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{padding-left:15px;font-size:12px}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{float:none;font-size:11px;padding-left:10px}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img{width:55px}}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0;margin-bottom:0;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order{background-color:#5bc0de;width:var(--purchase-button-width,auto);float:none;color:var(--purchase-button-normal-text-color,#fff);min-height:auto;padding:var(--purchase-button-padding,1em 1em);border-radius:var(--purchase-button-border-radius,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover{background-color:#5bc0de;color:var(--purchase-button-hover-text-color,#fff);border-color:var(--purchase-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--purchase-button-hover-transition-duration,.3s);-o-transition-duration:var(--purchase-button-hover-transition-duration,.3s);transition-duration:var(--purchase-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2{width:auto;float:none}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:grid;grid-template-columns:auto auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:right}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:left}}.elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field{margin-bottom:10px}.elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000);font-size:14px;font-style:normal;text-transform:none;letter-spacing:normal;text-decoration:none;line-height:21px}.e-woo-select2-wrapper .select2-results__option,.e-woo-select2-wrapper .select2-results__option:focus{color:#818a91}.elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart table tbody tr:hover>td,.elementor-widget-woocommerce-cart table tbody tr:hover>th{background-color:inherit}.elementor-widget-woocommerce-cart .e-clear{overflow:hidden;height:0;width:0}.elementor-widget-woocommerce-cart .e-cart-section{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 30px 0);border-radius:var(--sections-border-radius,3px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4)}@media (min-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .e-cart-section:last-child{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-cart .e-cart-content{color:var(--sections-descriptions-color,#818a91);font-size:15px;font-weight:400;line-height:23px;letter-spacing:0}.elementor-widget-woocommerce-cart .e-cart__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:59% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,30px);grid-row-gap:var(--sections-margin,30px)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .e-cart__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart .select2-container{margin-bottom:4px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-cart .woocommerce{font-family:Roboto,sans-serif}.elementor-widget-woocommerce-cart .woocommerce button.button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#818a91);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,.88rem 2rem);width:var(--forms-buttons-width,auto);border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button:hover{color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]{padding:var(--forms-buttons-padding,.88rem 2rem);color:var(--forms-buttons-normal-text-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover{background-color:var(--forms-buttons-hover-background-color,#fff);color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li input{vertical-align:middle}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form{margin-top:var(--sections-descriptions-spacing,15px)}.elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination{color:var(--sections-descriptions-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th{display:none}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td{text-align:left!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before{width:100%;margin-bottom:10px}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td{text-align:right!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td:before{content:attr(data-title);font-weight:700;float:left}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{text-align:var(--totals-title-alignment,left)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td{padding-top:var(--totals-rows-gap-top,12px);padding-bottom:var(--totals-rows-gap-bottom,9px)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before{color:var(--totals-color,#818a91);font-weight:700}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td{border-top-color:var(--totals-divider-color,#818a91);border-top-width:var(--totals-divider-weight,0)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row{margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-cart .woocommerce .product-name a{color:var(--product-link-normal-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .product-name a:hover{color:var(--product-link-hover-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .form-row{padding:3px 0;margin:0}.elementor-widget-woocommerce-cart .woocommerce .input-text,.elementor-widget-woocommerce-cart .woocommerce select{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,3px);border:none;padding:var(--forms-fields-padding,16px);font-size:14px}.elementor-widget-woocommerce-cart .woocommerce .input-text::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,.elementor-widget-woocommerce-cart .woocommerce select::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus,.elementor-widget-woocommerce-cart .woocommerce select:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,transparent);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-webkit-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-moz-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-ms-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text.qty{background-color:transparent;color:var(--order-summary-color,#000);border:var(--order-summary-quantity-border-weight,1px) solid var(--order-summary-quantity-border-color,#d4d4d4);border-radius:3px;padding:1px 2px;text-align:left;font-size:14px;min-height:28px;max-height:28px}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout{padding-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button{padding:var(--checkout-button-padding,15px 1em);width:var(--checkout-button-width,auto);font-size:15px;text-align:center;color:var(--checkout-button-normal-text-color,#fff);background-color:#5bc0de;border-radius:var(--checkout-button-border-radius,3px);min-height:auto;margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:#5bc0de;border-color:var(--checkout-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--checkout-button-hover-transition-duration,.3s);-o-transition-duration:var(--checkout-button-hover-transition-duration,.3s);transition-duration:var(--checkout-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .remove{background:transparent;color:var(--order-summary-remove-icon-normal-color,#000)!important;width:auto}.elementor-widget-woocommerce-cart .woocommerce .remove:hover{background:transparent;color:var(--order-summary-remove-icon-hover-color,#5bc0de)!important}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals{float:none;width:100%}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td{padding-left:0}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{float:right;width:100%}.elementor-widget-woocommerce-cart .woocommerce .coupon .form-row{padding:0}.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{-webkit-box-flex:2;-ms-flex:2;flex:2;padding-right:30px}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{padding-right:0}}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-end{-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:block}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce .coupon{margin:var(--sections-margin,0)}.elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code{width:100%;margin-right:0;margin-bottom:15px}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:left;font-size:14px;font-weight:700}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:none;width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table th,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions{padding:16px 0 0}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a{display:inline-block}.elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child{display:var(--update-cart-automatically-display,table-row)}.elementor-widget-woocommerce-cart .woocommerce table.cart{margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce table.cart img{width:55px;height:auto;display:block}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-top:var(--order-summary-rows-gap-top,20px);padding-right:20px;padding-bottom:var(--order-summary-rows-gap-bottom,20px);padding-left:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td span{color:var(--order-summary-color,#000);font-size:14px;font-weight:400}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top:var(--order-summary-items-divider-weight,1px) solid var(--order-summary-items-divider-color,#d4d4d4)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MIN){.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top-width:0}}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove{padding-left:0;padding-right:0}@media (min-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td{border-top:none}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove{position:relative}.elementor-widget-woocommerce-cart .woocommerce table.cart.product-name{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{border-top-width:var(--order-summary-items-divider-weight,1px);border-top-color:var(--order-summary-items-divider-color,#d4d4d4)}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}}@media (max-width:ELEMENTOR_SCREEN_TABLET_MIN){.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-left:0;padding-right:0}}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.elementor-widget-woocommerce-cart .woocommerce table.cart{padding:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{padding:16px 28px}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-left:0;padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions{padding:0}}.elementor-widget-woocommerce-cart .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,.elementor-widget-woocommerce-cart .woocommerce .cart th{font-size:14px;font-weight:700;margin-top:0;padding:0 20px 8px 0}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{margin-bottom:var(--sections-title-spacing,1rem);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart th{padding-bottom:var(--order-summary-title-spacing,8px);color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart td:before{color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button:after{display:none}.elementor-widget-woocommerce-cart .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td{padding-left:0}}.e-woo-select2-wrapper .select2-results__option{font-family:Roboto,sans-serif;font-size:14px;color:var(--forms-fields-normal-color,#818a91)}.e-woo-select2-wrapper .select2-results__option:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account{font-family:Roboto,sans-serif;color:#818a91}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table{border:none;margin-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{background-color:var(--sections-background-color,#fff)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px 3px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,.elementor-widget-woocommerce-my-account .e-my-account-tab address{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content{border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper{padding:0;border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details{margin-bottom:40px}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px 3px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content>div>p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:var(--forms-fields-normal-background-color,#f7f7f7);border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:var(--forms-fields-focus-background-color,#f7f7f7);border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below{background-color:var(--forms-fields-normal-background-color,#f7f7f7)}.elementor-widget-woocommerce-my-account .woocommerce ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce-message{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce address{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover,.elementor-widget-woocommerce-my-account .woocommerce a.button:hover{background-color:initial}.elementor-widget-woocommerce-my-account .woocommerce em{font-size:12px;color:var(--login-messages-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .form-row{padding-left:var(--forms-columns-gap-padding-left,0);padding-right:var(--forms-columns-gap-padding-right,0);margin-left:var(--forms-columns-gap-margin-left,0);margin-right:var(--forms-columns-gap-margin-right,0);margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-my-account .woocommerce .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,0)}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,.elementor-widget-woocommerce-my-account .woocommerce .form-row select{color:var(--forms-fields-normal-color,#818a91);border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);background:#f7f7f7;border:none;font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,.elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text{margin-bottom:15px;color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword{font-size:12px;margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:50%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first{width:100%}.elementor-widget-woocommerce-my-account .woocommerce .login,.elementor-widget-woocommerce-my-account .woocommerce .register,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px);font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .login .button,.elementor-widget-woocommerce-my-account .woocommerce .register .button,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3){margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){margin-top:10px;font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox{vertical-align:middle}.elementor-widget-woocommerce-my-account .woocommerce p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span{color:var(--checkboxes-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce td,.elementor-widget-woocommerce-my-account .woocommerce th,.elementor-widget-woocommerce-my-account .woocommerce tr{border:none}.elementor-widget-woocommerce-my-account .woocommerce h2,.elementor-widget-woocommerce-my-account .woocommerce h3{color:var(--typography-section-titles-color,#000);margin-top:0;margin-bottom:var(--section-title-spacing,45px);font-weight:400}.elementor-widget-woocommerce-my-account .woocommerce strong{color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta,.elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label{color:var(--variations-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .product-quantity{font-weight:400;color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{float:left;width:25%}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul{-webkit-padding-start:0;padding-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li{list-style-type:none;margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li:after{content:"";display:block;width:100%;background-color:var(--tabs-divider-color,#818a91);height:var(--tabs-divider-weight,0);position:relative;top:calc(var(--tabs-spacing, 2px) / 2)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a{color:var(--tabs-active-color,#5bc0de);background:#eceeef;border-color:var(--tabs-active-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{font-style:normal;font-weight:700;font-size:14px;color:var(--tabs-normal-color,#818a91);display:block;padding:var(--tabs-padding,12px 20px);text-align:var(--tabs-alignment,start);background:#f7f7f7;border-radius:var(--tabs-border-radius,0);border:0 var(--tabs-border-type,solid) var(--tabs-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover{color:var(--tabs-hover-color,#5bc0de);border-color:var(--tabs-hover-border-color,transparent)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{padding:var(--tabs-padding,10px)}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard{margin-top:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout:after{display:none}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{float:right;width:75%;padding:0;padding-left:var(--tab-content-spacing,6%)}@media (max-width:ELEMENTOR_SCREEN_TABLET_MAX){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{width:100%;padding:var(--tab-content-spacing,6%) 0 0 0}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type{margin-top:30px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark{background-color:transparent;font-weight:700;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child th,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child th{border-top:0}.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th{border-top:0;padding-left:0;padding-top:0;padding-bottom:var(--tables-titles-spacing,9px)}.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>th,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>th{background-color:transparent;padding-left:0;padding-top:var(--order-summary-rows-gap-top,9px);padding-bottom:var(--order-summary-rows-gap-bottom,9px);color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table td,.elementor-widget-woocommerce-my-account .woocommerce .shop_table th{border-top:var(--tables-divider-border-width,1px) var(--tables-divider-border-type,solid) var(--tables-divider-border-color,#d4d4d4)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th,.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span{color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td,.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th{padding-left:0;color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td{border-top:none;padding-top:0}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button{background:transparent;border:2px solid #5bc0de;border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);border-radius:var(--tables-button-border-radius,3px);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);margin-top:0;margin-bottom:0;padding:var(--tables-button-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-Address .title h3,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3{float:none}.elementor-widget-woocommerce-my-account .woocommerce-Address address,.elementor-widget-woocommerce-my-account .woocommerce-Addresses address{padding:var(--sections-padding,45px 30px 16px 30px)}.elementor-widget-woocommerce-my-account .woocommerce-Address .edit,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit{float:left;position:absolute;margin-left:var(--edit-link-margin-start,30px);margin-top:var(--edit-link-margin-top,10px)}.elementor-widget-woocommerce-my-account .woocommerce .u-columns{margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset{border:none;padding:0;-webkit-margin-start:0;margin-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend{font-weight:700;padding:20px 0;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px);margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-pagination{padding:16px 0}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below,.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below{padding-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td{vertical-align:top;line-height:unset}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{float:none;width:100%}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block}.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation,.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{list-style:none;padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--tabs-container-justify-content,space-between);-ms-flex-pack:var(--tabs-container-justify-content,space-between);justify-content:var(--tabs-container-justify-content,space-between)}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{display:block}}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block;width:var(--tab-width,100%);padding:0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);margin:0;border-right:var(--tabs-divider-weight,0) solid var(--tabs-divider-color,#818a91)}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:after{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type{padding-left:0}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type{padding-right:0;border-right-width:0}@media (max-width:ELEMENTOR_SCREEN_MOBILE_MAX){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}}.e-my-account-tabs-horizontal .woocommerce-MyAccount-content{float:none;width:100%;padding:var(--tab-content-spacing,50px) 0 0 0}.elementor-editor-active .elementor-widget-container,.elementor-editor-preview .elementor-widget-container{min-height:1px}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a{pointer-events:none}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button{pointer-events:none;opacity:.3}.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type){display:none}.product .count{background-color:inherit}.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2{display:none}.woocommerce div.product.elementor form.cart div.product-addon{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-negative:0;flex-shrink:0}.e-sticky-right-column--active{position:-webkit-sticky;position:sticky;top:0}.elementor-theme-builder-content-area{height:400px}.elementor-location-footer:before,.elementor-location-header:before{content:"";display:table;clear:both}.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post{display:block}.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid{color:#d4d4d4;border:1px solid;border-right:none;border-left:none;padding-top:10px;padding-bottom:10px}.elementor-post-navigation-borders-yes .elementor-post-navigation__separator{height:100%;width:1px;margin:0 auto;background-color:#d4d4d4}.elementor-post-navigation{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-post-navigation .post-navigation__arrow-wrapper{color:#d4d4d4}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev{font-size:30px;padding-right:15px}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next{font-size:30px;padding-left:15px}.elementor-post-navigation .post-navigation__arrow-wrapper i{-webkit-transform:translateY(-5%);-ms-transform:translateY(-5%);transform:translateY(-5%)}.elementor-post-navigation .elementor-post-navigation__link__next,.elementor-post-navigation .elementor-post-navigation__link__prev{overflow:hidden}.elementor-post-navigation .elementor-post-navigation__link a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__prev--label{text-transform:uppercase;font-size:.8em}.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--title{font-size:.7em}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--label,.elementor-post-navigation .post-navigation__prev--title{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation span.elementor-post-navigation__link__next{text-align:right}.elementor-post-navigation span.elementor-post-navigation__link__next,.elementor-post-navigation span.elementor-post-navigation__link__prev{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-post-navigation .elementor-grid{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-post-navigation .elementor-post-navigation__link{width:calc(50% - (1px / 2));white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation .elementor-post-navigation__separator-wrapper{text-align:center}.elementor-post-navigation .elementor-post-navigation__next{text-align:right}.elementor-post-navigation .elementor-post-navigation__next a{float:right}.elementor-search-form{display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s}.elementor-search-form .e-font-icon-svg-container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-search-form button,.elementor-search-form input[type=search]{margin:0;border:0;padding:0;display:inline-block;vertical-align:middle;white-space:normal;background:none;line-height:1;min-width:0;font-size:15px;-webkit-appearance:none;-moz-appearance:none}.elementor-search-form button:focus,.elementor-search-form input[type=search]:focus{outline:0;color:inherit}.elementor-search-form button{background-color:#818a91;font-size:var(--e-search-form-submit-icon-size,16px);color:#fff;border-radius:0}.elementor-search-form__container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;overflow:hidden;border:0 solid transparent;min-height:50px}.elementor-search-form__container:not(.elementor-search-form--full-screen){background:#eceeef}.elementor-search-form__input{-ms-flex-preferred-size:100%;flex-basis:100%;color:#55595c;-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s}.elementor-search-form__input::-webkit-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-moz-placeholder,.elementor-search-form__input::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__submit{-webkit-transition:color .2s,background .2s;-o-transition:color .2s,background .2s;transition:color .2s,background .2s;font-size:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form__submit svg{fill:var(--e-search-form-submit-text-color,#fff);width:var(--e-search-form-submit-icon-size,16px);height:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form .elementor-search-form__submit,.elementor-search-form .elementor-search-form__submit:hover{color:var(--e-search-form-submit-text-color,#fff);border:none;border-radius:0}.elementor-search-form--button-type-text .elementor-search-form__submit{-ms-flex-negative:0;flex-shrink:0}.elementor-search-form--skin-minimal .elementor-search-form__icon{opacity:.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;color:#55595c;fill:#55595c;font-size:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-minimal .elementor-search-form__icon svg{width:var(--e-search-form-icon-size-minimal,15px);height:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-full_screen .elementor-search-form input[type=search].elementor-search-form__input{font-size:50px;text-align:center;border:solid #fff;border-width:0 0 1px;line-height:1.5;color:#fff}.elementor-search-form--skin-full_screen .elementor-search-form__toggle{display:inline-block;cursor:pointer;vertical-align:middle;color:var(--e-search-form-toggle-color,#494c4f);font-size:var(--e-search-form-toggle-size,33px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i{position:relative;display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;width:var(--e-search-form-toggle-size,33px);height:var(--e-search-form-toggle-size,33px);background-color:var(--e-search-form-toggle-background-color,rgba(0,0,0,.05));border:var(--e-search-form-toggle-border-width,0) solid var(--e-search-form-toggle-color,#494c4f);border-radius:var(--e-search-form-toggle-border-radius,3px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before{font-size:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{fill:var(--e-search-form-toggle-color,#494c4f);width:var(--e-search-form-toggle-icon-size,.55em);height:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__container{-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;z-index:9998;top:0;left:0;right:0;bottom:0;height:100vh;padding:0 15%;background-color:rgba(0,0,0,.8)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen){overflow:hidden;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button{display:none}.elementor-author-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-author-box__avatar{-ms-flex-negative:0;flex-shrink:0;margin-right:25px}.elementor-author-box__avatar img{width:100px;border-radius:500px;-o-object-fit:cover;object-fit:cover}.elementor-author-box__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:17px}.elementor-author-box__name{font-size:24px;margin-bottom:5px}.elementor-author-box__bio,.elementor-author-box__bio p{margin-bottom:.8em}.elementor-author-box__bio p:last-of-type{margin-bottom:0}.elementor-author-box--layout-image-left .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-author-box--layout-image-left .elementor-author-box__avatar{margin-left:0;margin-right:25px}.elementor-author-box--layout-image-right .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-author-box--layout-image-right .elementor-author-box__avatar{margin-right:0;margin-left:25px}.elementor-author-box--layout-image-above .elementor-author-box{display:block}.elementor-author-box--layout-image-above .elementor-author-box__avatar{margin:0 auto 15px;display:inline-block}.elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar{margin-left:0}.elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar{margin-right:0}.elementor-author-box--align-left .elementor-author-box{text-align:left}.elementor-author-box--align-right .elementor-author-box{text-align:right}.elementor-author-box--align-center .elementor-author-box{text-align:center}.elementor-button.elementor-author-box__button{border:2px solid #55595c;font-size:15px;font-weight:100;padding:10px 18px}.elementor-button.elementor-author-box__button,.elementor-button.elementor-author-box__button:hover{background:transparent;color:#55595c}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar,.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar{-ms-flex-item-align:start;align-self:flex-start}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar{-ms-flex-item-align:center;align-self:center}.elementor-post-info__terms-list{display:inline-block}.elementor-post-info .elementor-icon-list-icon .elementor-avatar{border-radius:100%}.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after{margin:initial}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text{display:inline-block}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a,.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span{display:inline}.elementor-widget-breadcrumbs{font-size:.85em}.elementor-widget-breadcrumbs p{margin-bottom:0}.elementor-sitemap-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.elementor-sticky--active{z-index:99}[data-elementor-type=popup] .elementor-section-wrap:not(:empty)+#elementor-add-new-section,[data-elementor-type=popup]:not(.elementor-edit-area){display:none}.elementor-popup-modal{display:-webkit-box;display:-ms-flexbox;display:flex;pointer-events:none;background-color:transparent;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.elementor-popup-modal .dialog-buttons-wrapper,.elementor-popup-modal .dialog-header{display:none}.elementor-popup-modal .dialog-close-button{display:none;top:20px;margin-top:0;right:20px;opacity:1;z-index:9999;pointer-events:all}.elementor-popup-modal .dialog-close-button svg{fill:#373a3c;height:1em;width:1em}.elementor-popup-modal .dialog-widget-content{width:auto;overflow:visible;max-width:100%;max-height:100%;border-radius:0;-webkit-box-shadow:none;box-shadow:none;pointer-events:all}.elementor-popup-modal .dialog-message{width:640px;max-width:100vw;max-height:100vh;padding:0;overflow:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-popup-modal .elementor{width:100%}.elementor-motion-effects-element,.elementor-motion-effects-layer{-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(0,.33,.07,1.03);-o-transition-timing-function:cubic-bezier(0,.33,.07,1.03);transition-timing-function:cubic-bezier(0,.33,.07,1.03);-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s}.elementor-motion-effects-container{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;-webkit-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);-ms-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.elementor-motion-effects-layer{position:absolute;top:0;left:0;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover}.elementor-motion-effects-perspective{-webkit-perspective:1200px;perspective:1200px}assets/css/widget-theme-elements-rtl.min.css000064400000027247150755004320015143 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid{color:#d4d4d4;border:1px solid;border-right:none;border-left:none;padding-top:10px;padding-bottom:10px}.elementor-post-navigation-borders-yes .elementor-post-navigation__separator{height:100%;width:1px;margin:0 auto;background-color:#d4d4d4}.elementor-post-navigation{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-post-navigation .post-navigation__arrow-wrapper{color:#d4d4d4}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev{font-size:30px;padding-left:15px}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next{font-size:30px;padding-right:15px}.elementor-post-navigation .post-navigation__arrow-wrapper i{-webkit-transform:translateY(-5%);-ms-transform:translateY(-5%);transform:translateY(-5%)}.elementor-post-navigation .elementor-post-navigation__link__next,.elementor-post-navigation .elementor-post-navigation__link__prev{overflow:hidden}.elementor-post-navigation .elementor-post-navigation__link a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__prev--label{text-transform:uppercase;font-size:.8em}.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--title{font-size:.7em}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--label,.elementor-post-navigation .post-navigation__prev--title{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation span.elementor-post-navigation__link__next{text-align:left}.elementor-post-navigation span.elementor-post-navigation__link__next,.elementor-post-navigation span.elementor-post-navigation__link__prev{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-post-navigation .elementor-grid{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-post-navigation .elementor-post-navigation__link{width:calc(50% - (1px / 2));white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation .elementor-post-navigation__separator-wrapper{text-align:center}.elementor-post-navigation .elementor-post-navigation__next{text-align:left}.elementor-post-navigation .elementor-post-navigation__next a{float:left}.elementor-search-form{display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s}.elementor-search-form .e-font-icon-svg-container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-search-form button,.elementor-search-form input[type=search]{margin:0;border:0;padding:0;display:inline-block;vertical-align:middle;white-space:normal;background:none;line-height:1;min-width:0;font-size:15px;-webkit-appearance:none;-moz-appearance:none}.elementor-search-form button:focus,.elementor-search-form input[type=search]:focus{outline:0;color:inherit}.elementor-search-form button{background-color:#818a91;font-size:var(--e-search-form-submit-icon-size,16px);color:#fff;border-radius:0}.elementor-search-form__container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;overflow:hidden;border:0 solid transparent;min-height:50px}.elementor-search-form__container:not(.elementor-search-form--full-screen){background:#eceeef}.elementor-search-form__input{-ms-flex-preferred-size:100%;flex-basis:100%;color:#55595c;-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s}.elementor-search-form__input::-webkit-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-moz-placeholder,.elementor-search-form__input::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__submit{-webkit-transition:color .2s,background .2s;-o-transition:color .2s,background .2s;transition:color .2s,background .2s;font-size:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form__submit svg{fill:var(--e-search-form-submit-text-color,#fff);width:var(--e-search-form-submit-icon-size,16px);height:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form .elementor-search-form__submit,.elementor-search-form .elementor-search-form__submit:hover{color:var(--e-search-form-submit-text-color,#fff);border:none;border-radius:0}.elementor-search-form--button-type-text .elementor-search-form__submit{-ms-flex-negative:0;flex-shrink:0}.elementor-search-form--skin-minimal .elementor-search-form__icon{opacity:.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;color:#55595c;fill:#55595c;font-size:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-minimal .elementor-search-form__icon svg{width:var(--e-search-form-icon-size-minimal,15px);height:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-full_screen .elementor-search-form input[type=search].elementor-search-form__input{font-size:50px;text-align:center;border:solid #fff;border-width:0 0 1px;line-height:1.5;color:#fff}.elementor-search-form--skin-full_screen .elementor-search-form__toggle{display:inline-block;cursor:pointer;vertical-align:middle;color:var(--e-search-form-toggle-color,#494c4f);font-size:var(--e-search-form-toggle-size,33px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i{position:relative;display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;width:var(--e-search-form-toggle-size,33px);height:var(--e-search-form-toggle-size,33px);background-color:var(--e-search-form-toggle-background-color,rgba(0,0,0,.05));border:var(--e-search-form-toggle-border-width,0) solid var(--e-search-form-toggle-color,#494c4f);border-radius:var(--e-search-form-toggle-border-radius,3px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before{font-size:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{fill:var(--e-search-form-toggle-color,#494c4f);width:var(--e-search-form-toggle-icon-size,.55em);height:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__container{-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;z-index:9998;top:0;left:0;right:0;bottom:0;height:100vh;padding:0 15%;background-color:rgba(0,0,0,.8)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen){overflow:hidden;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button{display:none}.elementor-author-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-author-box__avatar{-ms-flex-negative:0;flex-shrink:0;margin-left:25px}.elementor-author-box__avatar img{width:100px;border-radius:500px;-o-object-fit:cover;object-fit:cover}.elementor-author-box__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:17px}.elementor-author-box__name{font-size:24px;margin-bottom:5px}.elementor-author-box__bio,.elementor-author-box__bio p{margin-bottom:.8em}.elementor-author-box__bio p:last-of-type{margin-bottom:0}.elementor-author-box--layout-image-left .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-author-box--layout-image-left .elementor-author-box__avatar{margin-left:0;margin-right:25px}.elementor-author-box--layout-image-right .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-author-box--layout-image-right .elementor-author-box__avatar{margin-right:0;margin-left:25px}.elementor-author-box--layout-image-above .elementor-author-box{display:block}.elementor-author-box--layout-image-above .elementor-author-box__avatar{margin:0 auto 15px;display:inline-block}.elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar{margin-left:0}.elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar{margin-right:0}.elementor-author-box--align-left .elementor-author-box{text-align:left}.elementor-author-box--align-right .elementor-author-box{text-align:right}.elementor-author-box--align-center .elementor-author-box{text-align:center}.elementor-button.elementor-author-box__button{border:2px solid #55595c;font-size:15px;font-weight:100;padding:10px 18px}.elementor-button.elementor-author-box__button,.elementor-button.elementor-author-box__button:hover{background:transparent;color:#55595c}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar,.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar{-ms-flex-item-align:start;align-self:flex-start}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar{-ms-flex-item-align:center;align-self:center}.elementor-post-info__terms-list{display:inline-block}.elementor-post-info .elementor-icon-list-icon .elementor-avatar{border-radius:100%}.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after{margin:initial}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text{display:inline-block}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a,.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span{display:inline}.elementor-widget-breadcrumbs{font-size:.85em}.elementor-widget-breadcrumbs p{margin-bottom:0}.elementor-sitemap-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}assets/css/widget-progress-tracker.min.css000064400000006720150755004320014716 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-scrolling-tracker{--scrolling-track-default-progress-color:#61ce70;--scrolling-track-default-color:#eee;--scrolling-track-precentage-default-color:$black}.elementor-scrolling-tracker-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:var(--horizontal-height,20px);padding:var(--tracker-padding);-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-left:var(--horizontal-border-left-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-bottom:var(--horizontal-border-bottom-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-right:var(--horizontal-border-right-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-top:var(--horizontal-border-top-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-radius:var(--border-radius);background-color:var(--scrolling-track-default-color);direction:var(--direction)}.elementor-scrolling-tracker-horizontal .current-progress{display:none;height:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;border-radius:var(--progress-border-radius);border-left:var(--horizontal-progress-border-left-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-bottom:var(--horizontal-progress-border-bottom-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-right:var(--horizontal-progress-border-right-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-top:var(--horizontal-progress-border-top-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);background-color:var(--scrolling-track-default-progress-color)}.elementor-scrolling-tracker-horizontal .current-progress .current-progress-percentage{inset-inline-end:.5em;inset-inline-start:auto;position:absolute;direction:var(--text-direction);color:var(--percentage-color,var(--scrolling-track-precentage-default-color))}.elementor-scrolling-tracker-circular{display:-webkit-box;display:-ms-flexbox;display:flex;width:var(--circular-width,100px);height:var(--circular-height,100px);-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:auto;margin-inline-end:auto}.elementor-scrolling-tracker-circular .current-progress-percentage{position:absolute;color:var(--percentage-color,var(--scrolling-track-precentage-default-color))}.elementor-scrolling-tracker-circular svg{position:absolute}.elementor-scrolling-tracker-circular .current-progress{display:none;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;stroke:var(--circular-color,var(--scrolling-track-default-progress-color));fill:transparent;stroke-width:var(--circular-progress-width,4px)}.elementor-scrolling-tracker-circular .circle{stroke:var(--circular-background-color,var(--scrolling-track-default-color));fill:transparent;stroke-width:var(--circular-background-width,4px)}.elementor-scrolling-tracker-alignment-left{margin-left:0;margin-right:auto}.elementor-scrolling-tracker-alignment-center{margin-left:auto;margin-right:auto}.elementor-scrolling-tracker-alignment-right{margin-left:auto;margin-right:0}assets/css/frontend-rtl.min.css000064400001201660150755004320012557 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
@charset "UTF-8";.elementor-bg-transform .elementor-bg{will-change:transform}.elementor-bg-transform-zoom-in:hover .elementor-bg,.elementor-bg-transform-zoom-out .elementor-bg{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.elementor-bg-transform-zoom-out:hover .elementor-bg{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-bg-transform-move-left .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-left:hover .elementor-bg,.elementor-bg-transform-move-right .elementor-bg{-webkit-transform:scale(1.2) translateX(-8%);-ms-transform:scale(1.2) translateX(-8%);transform:scale(1.2) translateX(-8%)}.elementor-bg-transform-move-right:hover .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-up .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-bg-transform-move-down .elementor-bg,.elementor-bg-transform-move-up:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(-8%);-ms-transform:scale(1.2) translateY(-8%);transform:scale(1.2) translateY(-8%)}.elementor-bg-transform-move-down:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-animated-content{--translate:0,0}.elementor-animated-content:hover .elementor-animated-item--grow{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.elementor-animated-content:hover .elementor-animated-item--shrink{-webkit-transform:scale(.85);-ms-transform:scale(.85);transform:scale(.85)}.elementor-animated-content:hover .elementor-animated-item--shrink-contained{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content:hover .elementor-animated-item--enter-zoom-in,.elementor-animated-content:hover .elementor-animated-item--enter-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-in{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in,.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-out{opacity:0}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content:hover .elementor-animated-item--enter-from-bottom,.elementor-animated-content:hover .elementor-animated-item--enter-from-left,.elementor-animated-content:hover .elementor-animated-item--enter-from-right,.elementor-animated-content:hover .elementor-animated-item--enter-from-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content:hover .elementor-animated-item--exit-to-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom{-webkit-transform:translateY(600px);-ms-transform:translateY(600px);transform:translateY(600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom,.elementor-animated-content:hover .elementor-animated-item--exit-to-left,.elementor-animated-content:hover .elementor-animated-item--exit-to-right,.elementor-animated-content:hover .elementor-animated-item--exit-to-top{opacity:0}.elementor-animated-content:hover .elementor-animated-item--move-right{-webkit-transform:translateX(30px);-ms-transform:translateX(30px);transform:translateX(30px)}.elementor-animated-content:hover .elementor-animated-item--move-left{-webkit-transform:translateX(-30px);-ms-transform:translateX(-30px);transform:translateX(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-up{-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-down{-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px)}.elementor-animated-content:hover .elementor-animated-item--move-contained-right{--translate:8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-left{--translate:-8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-top{--translate:0,-8%}.elementor-animated-content:hover .elementor-animated-item--move-contained-bottom{--translate:0,8%}.elementor-animated-content [class^=elementor-animated-item]{will-change:transform,opacity}.elementor-animated-content .elementor-animated-item--shrink-contained{-webkit-transform:scale(1.17);-ms-transform:scale(1.17);transform:scale(1.17)}.elementor-animated-content .elementor-animated-item--enter-zoom-in{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content .elementor-animated-item--enter-zoom-out{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content .elementor-animated-item--enter-zoom-in,.elementor-animated-content .elementor-animated-item--enter-zoom-out,.elementor-animated-content .elementor-animated-item--fade-in{opacity:0}.elementor-animated-content .elementor-animated-item--exit-zoom-in,.elementor-animated-content .elementor-animated-item--exit-zoom-out,.elementor-animated-content .elementor-animated-item--fade-out{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content .elementor-animated-item--enter-from-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content .elementor-animated-item--enter-from-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content .elementor-animated-item--enter-from-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom{-webkit-transform:translateY(500px);-ms-transform:translateY(500px);transform:translateY(500px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom,.elementor-animated-content .elementor-animated-item--enter-from-left,.elementor-animated-content .elementor-animated-item--enter-from-right,.elementor-animated-content .elementor-animated-item--enter-from-top{opacity:0}.elementor-animated-content .elementor-animated-item--exit-to-bottom,.elementor-animated-content .elementor-animated-item--exit-to-left,.elementor-animated-content .elementor-animated-item--exit-to-right,.elementor-animated-content .elementor-animated-item--exit-to-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content .elementor-animated-item--move-contained-bottom,.elementor-animated-content .elementor-animated-item--move-contained-left,.elementor-animated-content .elementor-animated-item--move-contained-right,.elementor-animated-content .elementor-animated-item--move-contained-top{-webkit-transform:scale(1.2) translate(var(--translate));-ms-transform:scale(1.2) translate(var(--translate));transform:scale(1.2) translate(var(--translate))}.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover{outline:1px solid #fec449}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings{background-image:-webkit-gradient(linear,left bottom,left top,from(#feb416),to(#fec449));background-image:-webkit-linear-gradient(bottom,#feb416,#fec449);background-image:-o-linear-gradient(bottom,#feb416,#fec449);background-image:linear-gradient(0deg,#feb416,#fec449)}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover{background-color:#feb416}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save{display:none}body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;width:100%;padding:0}body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;padding:0}.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form){margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .quantity .qty{vertical-align:top;margin-left:0}.woocommerce div.product.elementor .quantity+.button{margin-right:10px}.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input{height:100%}.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:0}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}@media (max-width:1024px){.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:0}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}@media (max-width:767px){.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:0}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button{background-color:#5bc0de}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button{background-color:#5cb85c}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button{background-color:#f0ad4e}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button{background-color:#d9534f}.elementor-widget-wc-add-to-cart .quantity{display:inline-block}.elementor-widget-wc-add-to-cart.elementor-align-center form.cart{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-wc-add-to-cart.elementor-align-left form.cart,.elementor-widget-wc-add-to-cart.elementor-align-right form.cart{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor ul.tabs:before{position:static;content:none;width:auto;bottom:auto;left:auto;border-bottom:0;z-index:auto}.woocommerce div.product.elementor ul.tabs{margin:0}.woocommerce div.product.elementor ul.tabs li{padding:0}.woocommerce div.product.elementor ul.tabs li a{padding:.8em 1.2em;line-height:1}.woocommerce div.product.elementor ul.tabs li:after,.woocommerce div.product.elementor ul.tabs li:before{border:0;position:static;bottom:auto;width:auto;height:auto;content:none;-webkit-box-sizing:border-box;box-sizing:border-box}.woocommerce div.product.elementor .woocommerce-tabs .panel{padding:20px;border-radius:0;border-width:0;border-top:1px solid #d3ced2;-webkit-box-shadow:none;box-shadow:none;margin:-1px 0 0}.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins{display:block}.elementor-widget-woocommerce-product-meta .detail-container{position:relative}.elementor-widget-woocommerce-product-meta .detail-container:after{position:absolute;bottom:0;left:0;width:100%}.elementor-widget-woocommerce-product-meta .detail-label{font-weight:700}.elementor-woo-meta--view-inline .product_meta{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-woo-meta--view-inline .product_meta .detail-container:after{width:auto;left:auto;right:auto;position:absolute;height:100%;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;left:-8px}.elementor-woo-meta--view-table .product_meta{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-woo-meta--view-table .product_meta,.elementor-woo-meta--view-table .product_meta .detail-container{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-woo-meta--view-table .product_meta .detail-label{min-width:108px}.elementor-woo-meta--view-stacked .product_meta .detail-container{display:block}.woocommerce div.product.elementor .woocommerce-product-rating{margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.woocommerce div.product.elementor .star-rating{margin-top:0}.elementor-product-rating--align-left .woocommerce-product-rating{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-product-rating--align-right .woocommerce-product-rating{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-product-rating--align-center .woocommerce-product-rating{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link{margin-right:auto}.elementor-products-grid ul.products.elementor-grid{display:grid;margin:0;grid-column-gap:20px;grid-row-gap:40px}.elementor-products-grid ul.products.elementor-grid:after,.elementor-products-grid ul.products.elementor-grid:before{content:none;display:none}.elementor-products-grid ul.products.elementor-grid li.product{width:auto;padding:0;margin:0;float:none}.elementor-products-grid ul.products.elementor-grid li.product .onsale{padding:0;display:none}.elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link{display:block;position:relative}.elementor-products-grid:not(.show-heading-yes) .products>h2{display:none}.elementor-products-grid nav.woocommerce-pagination{margin-top:40px}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul{border:0}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li{border-right:0;border-left:0}.elementor-product-loop-item--align-left ul.products li.product .star-rating{margin-right:auto}.elementor-product-loop-item--align-right ul.products li.product .star-rating{margin-left:auto}.elementor-product-loop-item--align-center ul.products li.product .star-rating{margin-right:auto;margin-left:auto}.woocommerce .elementor-element.elementor-products-grid ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product{width:auto}@media (min-width:1025px){.elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products{grid-template-columns:repeat(2,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products{grid-template-columns:repeat(3,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products{grid-template-columns:repeat(4,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products{grid-template-columns:repeat(5,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products{grid-template-columns:repeat(6,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products{grid-template-columns:repeat(7,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products{grid-template-columns:repeat(8,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products{grid-template-columns:repeat(9,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products{grid-template-columns:repeat(10,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products{grid-template-columns:repeat(11,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products{grid-template-columns:repeat(12,1fr)}}@media (max-width:1024px){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(3,1fr)}}@media (max-width:767px){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(2,1fr)}}.elementor.product .woocommerce-product-gallery__trigger+.woocommerce-product-gallery__wrapper{overflow:hidden}.woocommerce .elementor-widget-woocommerce-product-images span.onsale{padding:0}.elementor-menu-cart__wrapper{text-align:var(--main-alignment,right)}.elementor-menu-cart__toggle_wrapper{display:inline-block;position:relative}.elementor-menu-cart__toggle{display:inline-block}.elementor-menu-cart__toggle .elementor-button{background-color:var(--toggle-button-background-color,transparent);color:var(--toggle-button-text-color,#818a91);border:var(--toggle-button-border-width,1px) var(--toggle-button-border-type,solid) var(--toggle-button-border-color,#818a91);border-radius:var(--toggle-button-border-radius,0);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--toggle-icon-padding,12px 24px)}.elementor-menu-cart__toggle .elementor-button:hover{color:var(--toggle-button-hover-text-color,#818a91);background-color:var(--toggle-button-hover-background-color,transparent);border-color:var(--toggle-button-hover-border-color,#818a91)}.elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon{color:var(--toggle-button-icon-hover-color,#818a91)}.elementor-menu-cart__toggle .elementor-button-text{margin-left:.3em}.elementor-menu-cart__toggle .elementor-button-icon{position:relative;-webkit-transition:color .1s;-o-transition:color .1s;transition:color .1s;color:var(--toggle-button-icon-color,#818a91);font-size:var(--toggle-icon-size,inherit)}.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:block;position:absolute;min-width:1.6em;height:1.6em;line-height:1.5em;top:-.7em;left:-.7em;border-radius:100%;color:var(--items-indicator-text-color,#fff);background-color:var(--items-indicator-background-color,#d9534f);text-align:center;font-size:10px}.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:inline-block;font-weight:400}.elementor-menu-cart__container{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);overflow:hidden;position:fixed;z-index:9998;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,.25);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s;text-align:right}.elementor-menu-cart__main{position:fixed;left:var(--side-cart-alignment-left,0);right:var(--side-cart-alignment-right,auto);-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);top:0;bottom:0;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;font-size:14px;min-height:200px;width:350px;max-width:100%;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;padding:var(--cart-padding,20px 30px);background-color:var(--cart-background-color,#fff);-webkit-box-shadow:0 0 20px rgba(0,0,0,.2);box-shadow:0 0 20px rgba(0,0,0,.2);border-style:var(--cart-border-style,none);border-color:var(--cart-border-color,initial);border-radius:var(--cart-border-radius,0);margin-top:var(--mini-cart-spacing,0)}.elementor-menu-cart__main,.elementor-menu-cart__main .widget_shopping_cart_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-menu-cart__main .widget_shopping_cart_content{height:100%}.elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message{color:var(--empty-message-color,inherit);text-align:var(--empty-message-alignment,right)}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{background-color:transparent;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button{display:none}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{overflow:hidden;opacity:0;-webkit-transform:var(--side-cart-alignment-transform,translateX(-100%));-ms-transform:var(--side-cart-alignment-transform,translateX(-100%));transform:var(--side-cart-alignment-transform,translateX(-100%))}.elementor-menu-cart__close-button{width:var(--cart-close-icon-size,25px);height:var(--cart-close-icon-size,25px);position:relative;margin:0 0 20px;-ms-flex-item-align:end;align-self:flex-end;cursor:pointer;display:inline-block;font-family:eicons;font-size:20px;line-height:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:after,.elementor-menu-cart__close-button:before{content:"";position:absolute;height:3px;width:100%;top:50%;left:0;margin-top:-1px;background:var(--cart-close-button-color,#818a91);border-radius:1px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:hover:after,.elementor-menu-cart__close-button:hover:before{background:var(--cart-close-button-hover-color,#818a91)}.elementor-menu-cart__close-button:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__close-button:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__products{max-height:calc(100vh - 250px);overflow:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.elementor-menu-cart__product{display:grid;grid-template-columns:28% auto;grid-template-rows:var(--price-quantity-position--grid-template-rows,auto auto);position:relative;border-width:0;border-bottom:var(--divider-width,1px) var(--divider-style,solid) var(--divider-color,#d4d4d4)}.elementor-menu-cart__product .variation{display:grid;grid-template-columns:-webkit-max-content auto;grid-template-columns:max-content auto;margin:10px 0}.elementor-menu-cart__product .variation dt{grid-column-start:1}.elementor-menu-cart__product .variation dd{grid-column-start:2;-webkit-margin-start:5px;margin-inline-start:5px}.elementor-menu-cart__product .variation dd p{margin-bottom:0}.elementor-menu-cart__product-image{grid-row-start:1;grid-row-end:3;width:100%}.elementor-menu-cart__product-image a,.elementor-menu-cart__product-image img{display:block}.elementor-menu-cart__product-name{grid-column-start:2;grid-column-end:3;margin:0}.elementor-menu-cart__product-name a{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-price{grid-column-start:2;grid-column-end:3;-ms-flex-item-align:var(--price-quantity-position--align-self,end);align-self:var(--price-quantity-position--align-self,end);font-weight:300;color:var(--product-price-color,#d4d4d4)}.elementor-menu-cart__product-name,.elementor-menu-cart__product-price{font-size:14px;padding-right:20px}.elementor-menu-cart__product-remove{color:#818a91;width:var(--remove-item-button-size,22px);height:var(--remove-item-button-size,22px);border-radius:var(--remove-item-button-size,22px);border:1px solid var(--remove-item-button-color,#d4d4d4);text-align:center;overflow:hidden;position:absolute;left:0;bottom:20px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:hover{border:1px solid var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:hover:after,.elementor-menu-cart__product-remove:hover:before{background:var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:after,.elementor-menu-cart__product-remove:before{content:"";position:absolute;height:1px;width:50%;top:50%;left:25%;margin-top:-1px;background:var(--remove-item-button-color,#d4d4d4);z-index:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__product-remove:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__product-remove>a{display:block;z-index:2;width:100%;height:100%;overflow:hidden;opacity:0;position:absolute}.elementor-menu-cart__product-remove>a.remove_from_cart_button{display:var(--remove-from-cart-button,block)}.elementor-menu-cart__product-remove>a.elementor_remove_from_cart_button{display:var(--elementor-remove-from-cart-button,none)}.elementor-menu-cart__product:last-child{border:none}.elementor-menu-cart__footer-buttons,.elementor-menu-cart__product:not(:first-of-type),.elementor-menu-cart__subtotal{padding-top:var(--product-divider-gap,20px)}.elementor-menu-cart__product{padding-left:30px}.elementor-menu-cart__product,.elementor-menu-cart__subtotal{padding-bottom:var(--product-divider-gap,20px)}.elementor-menu-cart__subtotal{font-size:20px;text-align:var(--menu-cart-subtotal-text-align,center);font-weight:600;color:var(--menu-cart-subtotal-color,inherit);border-left:var(--subtotal-divider-left-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-bottom:var(--subtotal-divider-bottom-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-right:var(--subtotal-divider-right-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-top:var(--subtotal-divider-top-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4)}.elementor-menu-cart__footer-buttons{font-size:20px;text-align:var(--cart-footer-buttons-alignment-text-align,center);display:var(--cart-footer-buttons-alignment-display,grid);grid-template-columns:var(--cart-footer-layout,1fr 1fr);margin-top:var(--cart-buttons-position-margin,0);grid-column-gap:var(--space-between-buttons,10px);grid-row-gap:var(--space-between-buttons,10px)}.elementor-menu-cart__footer-buttons .elementor-button{display:inline-block;border-radius:var(--cart-footer-buttons-border-radius,0);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.elementor-menu-cart__footer-buttons .elementor-button--view-cart{display:var(--view-cart-button-display,inline-block);color:var(--view-cart-button-text-color,#fff);padding:var(--view-cart-button-padding,15px);background-color:var(--view-cart-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover{color:var(--view-cart-button-hover-text-color,#fff);background-color:var(--view-cart-button-hover-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout{display:var(--checkout-button-display,inline-block);color:var(--checkout-button-text-color,#fff);padding:var(--checkout-button-padding,15px);background-color:var(--checkout-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:var(--checkout-button-hover-background-color,#818a91)}@media (max-width:767px){.elementor-menu-cart__footer-buttons .elementor-button{padding-left:10px;padding-right:10px}}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text{display:none}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before{content:none}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e3"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e4"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e5"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e6"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e7"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e8"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e9"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8ea"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8eb"}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product{padding-left:0;padding-right:0;grid-template-columns:25% auto}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove{display:none}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove{top:0;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove{top:20px;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove{-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);bottom:50%}.elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove{top:auto;bottom:20px}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{position:absolute;z-index:89;width:auto;height:auto;overflow:visible;top:100%;bottom:auto;background:none;min-width:330px;right:0;left:auto;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main{width:auto;height:auto;position:relative;top:auto;bottom:auto;right:auto;left:auto;overflow:visible;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}@media (max-width:767px){.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{min-width:300px}}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{opacity:0;-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px)}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown{opacity:1}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container{z-index:9998}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart{z-index:89}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container{display:none}.elementor-widget-woocommerce-checkout-page{background-color:transparent;font-family:Roboto,sans-serif;font-size:14px;line-height:21px;color:#818a91}.elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container{grid-template-columns:auto}.elementor-widget-woocommerce-checkout-page ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page table tbody tr:hover>td,.elementor-widget-woocommerce-checkout-page table tbody tr:hover>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .e-description{color:var(--sections-descriptions-color,#818a91);padding-bottom:var(--sections-descriptions-spacing,0);font-size:14px;font-weight:400}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section{margin-bottom:24px}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title{text-align:var(--login-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge{margin-top:var(--sections-secondary-title-spacing,24px);margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor{margin-top:var(--sections-secondary-title-spacing,24px)}.elementor-widget-woocommerce-checkout-page .e-coupon-box{margin-top:24px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .e-login-wrap-start{-webkit-box-flex:75%;-ms-flex:75%;flex:75%}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{-webkit-box-flex:20%;-ms-flex:20%;flex:20%;text-align:left}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:block}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{text-align:right;margin-top:15px}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label{display:none}}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{margin-bottom:0;font-size:12px}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{font-size:11px}}.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:90%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:auto}}.elementor-widget-woocommerce-checkout-page .e-checkout__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:56% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,24px);grid-row-gap:var(--sections-margin,24px)}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-checkout__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title{color:var(--sections-secondary-title-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge{text-align:var(--coupon-title-alignment,right)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address{margin-top:13px;padding-right:var(--shipping-heading-padding-start,30px)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address span{font-weight:400}.elementor-widget-woocommerce-checkout-page a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row{padding-left:var(--forms-columns-gap-padding,0);padding-right:var(--forms-columns-gap-padding,0);margin-left:var(--forms-columns-gap-margin,0);margin-right:var(--forms-columns-gap-margin,0)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);font-size:14px;border:none;font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-checkout-page .woocommerce .create-account,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row{margin-bottom:0!important}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input,.elementor-widget-woocommerce-checkout-page .woocommerce .input-radio{vertical-align:middle}.elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span{position:relative;top:2px;color:var(--sections-checkboxes-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label,.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{display:inline}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#6f6f6f);border-radius:var(--forms-buttons-border-radius,3px);padding:1rem;border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover{color:var(--forms-buttons-hover-text-color,#6f6f6f);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{margin-right:1%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{width:100%;margin-right:0;margin-bottom:15px}}.elementor-widget-woocommerce-checkout-page .woocommerce-info{border-top-color:transparent;background-color:transparent;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p{font-weight:400;font-size:12px}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info{font-weight:400;margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,.elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment{background:var(--sections-background-color,#fff);border-radius:var(--sections-border-radius,3px);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 24px 0);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{display:var(--additional-information-display,none)}@media (min-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text{color:var(--sections-messages-color,#818a91);font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p{margin-top:25px}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1{margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2{padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading{text-align:var(--order-review-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table{margin-bottom:0;border:0;font-size:14px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th{padding-top:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td{color:#000}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity{font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th{color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr{border:0;padding-left:0;padding-bottom:15px;padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr{padding-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td{font-weight:400;color:var(--order-summary-items-color,#000);border-bottom:var(--order-summary-items-divider-weight,0) solid var(--order-summary-items-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name{padding-left:40px;max-width:150px}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total{vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th{padding-top:var(--order-summary-rows-gap-top,15px);padding-bottom:var(--order-summary-rows-gap-bottom,15px)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th{color:var(--order-summary-totals-color,#818a91);vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th{border-top:var(--order-summary-totals-divider-weight,0) solid var(--order-summary-totals-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td{max-width:70px}.elementor-widget-woocommerce-checkout-page .woocommerce h3{font-size:14px;font-weight:700;margin-top:0;margin-bottom:var(--sections-title-spacing,30px);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row>span{font-weight:400;font-size:14px;margin-bottom:3px;color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:48%}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3{text-align:var(--billing-details-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row{margin-bottom:var(--forms-rows-gap,5px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child{margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login{margin-top:-8px;z-index:999;background:#fff;border-top-width:0;position:relative;margin-bottom:0;color:#818a91}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:100%}}.elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:85%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:35%}}.elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3{background:var(--additional-fields-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address{margin-bottom:var(--sections-margin,20px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment{margin-top:24px;padding:15px 25px 25px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods{border-bottom:none;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li{line-height:21px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{padding-right:15px;font-size:12px}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{float:none;font-size:11px;padding-left:10px}}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img{width:55px}}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0;margin-bottom:0;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order{background-color:#5bc0de;width:var(--purchase-button-width,auto);float:none;color:var(--purchase-button-normal-text-color,#fff);min-height:auto;padding:var(--purchase-button-padding,1em 1em);border-radius:var(--purchase-button-border-radius,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover{background-color:#5bc0de;color:var(--purchase-button-hover-text-color,#fff);border-color:var(--purchase-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--purchase-button-hover-transition-duration,.3s);-o-transition-duration:var(--purchase-button-hover-transition-duration,.3s);transition-duration:var(--purchase-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2{width:auto;float:none}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:grid;grid-template-columns:auto auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:left}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:right}}.elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field{margin-bottom:10px}.elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000);font-size:14px;font-style:normal;text-transform:none;letter-spacing:normal;text-decoration:none;line-height:21px}.e-woo-select2-wrapper .select2-results__option,.e-woo-select2-wrapper .select2-results__option:focus{color:#818a91}.elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart table tbody tr:hover>td,.elementor-widget-woocommerce-cart table tbody tr:hover>th{background-color:inherit}.elementor-widget-woocommerce-cart .e-clear{overflow:hidden;height:0;width:0}.elementor-widget-woocommerce-cart .e-cart-section{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 30px 0);border-radius:var(--sections-border-radius,3px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4)}@media (min-width:1024px){.elementor-widget-woocommerce-cart .e-cart-section:last-child{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-cart .e-cart-content{color:var(--sections-descriptions-color,#818a91);font-size:15px;font-weight:400;line-height:23px;letter-spacing:0}.elementor-widget-woocommerce-cart .e-cart__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:59% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,30px);grid-row-gap:var(--sections-margin,30px)}@media (max-width:1024px){.elementor-widget-woocommerce-cart .e-cart__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart .select2-container{margin-bottom:4px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-right:1rem;padding-left:1rem}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-cart .woocommerce{font-family:Roboto,sans-serif}.elementor-widget-woocommerce-cart .woocommerce button.button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#818a91);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,.88rem 2rem);width:var(--forms-buttons-width,auto);border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button:hover{color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]{padding:var(--forms-buttons-padding,.88rem 2rem);color:var(--forms-buttons-normal-text-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover{background-color:var(--forms-buttons-hover-background-color,#fff);color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li input{vertical-align:middle}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form{margin-top:var(--sections-descriptions-spacing,15px)}.elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination{color:var(--sections-descriptions-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th{display:none}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td{text-align:right!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before{width:100%;margin-bottom:10px}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td{text-align:left!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td:before{content:attr(data-title);font-weight:700;float:right}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{text-align:var(--totals-title-alignment,right)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td{padding-top:var(--totals-rows-gap-top,12px);padding-bottom:var(--totals-rows-gap-bottom,9px)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before{color:var(--totals-color,#818a91);font-weight:700}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td{border-top-color:var(--totals-divider-color,#818a91);border-top-width:var(--totals-divider-weight,0)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row{margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-cart .woocommerce .product-name a{color:var(--product-link-normal-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .product-name a:hover{color:var(--product-link-hover-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .form-row{padding:3px 0;margin:0}.elementor-widget-woocommerce-cart .woocommerce .input-text,.elementor-widget-woocommerce-cart .woocommerce select{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,3px);border:none;padding:var(--forms-fields-padding,16px);font-size:14px}.elementor-widget-woocommerce-cart .woocommerce .input-text::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,.elementor-widget-woocommerce-cart .woocommerce select::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus,.elementor-widget-woocommerce-cart .woocommerce select:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,transparent);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-webkit-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-moz-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-ms-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text.qty{background-color:transparent;color:var(--order-summary-color,#000);border:var(--order-summary-quantity-border-weight,1px) solid var(--order-summary-quantity-border-color,#d4d4d4);border-radius:3px;padding:1px 2px;text-align:right;font-size:14px;min-height:28px;max-height:28px}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout{padding-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button{padding:var(--checkout-button-padding,15px 1em);width:var(--checkout-button-width,auto);font-size:15px;text-align:center;color:var(--checkout-button-normal-text-color,#fff);background-color:#5bc0de;border-radius:var(--checkout-button-border-radius,3px);min-height:auto;margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:#5bc0de;border-color:var(--checkout-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--checkout-button-hover-transition-duration,.3s);-o-transition-duration:var(--checkout-button-hover-transition-duration,.3s);transition-duration:var(--checkout-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .remove{background:transparent;color:var(--order-summary-remove-icon-normal-color,#000)!important;width:auto}.elementor-widget-woocommerce-cart .woocommerce .remove:hover{background:transparent;color:var(--order-summary-remove-icon-hover-color,#5bc0de)!important}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals{float:none;width:100%}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td{padding-left:0}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{float:left;width:100%}.elementor-widget-woocommerce-cart .woocommerce .coupon .form-row{padding:0}.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{-webkit-box-flex:2;-ms-flex:2;flex:2;padding-left:30px}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{padding-left:0}}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-end{-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:block}}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon{margin:var(--sections-margin,0)}.elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code{width:100%;margin-left:0;margin-bottom:15px}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:right;font-size:14px;font-weight:700}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:none;width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table th,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions{padding:16px 0 0}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a{display:inline-block}.elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child{display:var(--update-cart-automatically-display,table-row)}.elementor-widget-woocommerce-cart .woocommerce table.cart{margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce table.cart img{width:55px;height:auto;display:block}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-top:var(--order-summary-rows-gap-top,20px);padding-left:20px;padding-bottom:var(--order-summary-rows-gap-bottom,20px);padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td span{color:var(--order-summary-color,#000);font-size:14px;font-weight:400}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top:var(--order-summary-items-divider-weight,1px) solid var(--order-summary-items-divider-color,#d4d4d4)}@media (max-width:768px){.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top-width:0}}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove{padding-right:0;padding-left:0}@media (min-width:767px){.elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td{border-top:none}}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove{position:relative}.elementor-widget-woocommerce-cart .woocommerce table.cart.product-name{padding-left:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{border-top-width:var(--order-summary-items-divider-weight,1px);border-top-color:var(--order-summary-items-divider-color,#d4d4d4)}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}}@media (max-width:768px){.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-right:0;padding-left:0}}@media (max-width:767px){.elementor-widget-woocommerce-cart .woocommerce table.cart{padding:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{padding:16px 28px}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-right:0;padding-left:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions{padding:0}}.elementor-widget-woocommerce-cart .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,.elementor-widget-woocommerce-cart .woocommerce .cart th{font-size:14px;font-weight:700;margin-top:0;padding:0 0 8px 20px}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{margin-bottom:var(--sections-title-spacing,1rem);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart th{padding-bottom:var(--order-summary-title-spacing,8px);color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart td:before{color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button:after{display:none}.elementor-widget-woocommerce-cart .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000)}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td{padding-right:0}}.e-woo-select2-wrapper .select2-results__option{font-family:Roboto,sans-serif;font-size:14px;color:var(--forms-fields-normal-color,#818a91)}.e-woo-select2-wrapper .select2-results__option:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account{font-family:Roboto,sans-serif;color:#818a91}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table{border:none;margin-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{background-color:var(--sections-background-color,#fff)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px 3px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,.elementor-widget-woocommerce-my-account .e-my-account-tab address{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content{border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper{padding:0;border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details{margin-bottom:40px}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px 3px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content>div>p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:var(--forms-fields-normal-background-color,#f7f7f7);border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:var(--forms-fields-focus-background-color,#f7f7f7);border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below{background-color:var(--forms-fields-normal-background-color,#f7f7f7)}.elementor-widget-woocommerce-my-account .woocommerce ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce-message{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce address{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover,.elementor-widget-woocommerce-my-account .woocommerce a.button:hover{background-color:initial}.elementor-widget-woocommerce-my-account .woocommerce em{font-size:12px;color:var(--login-messages-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .form-row{padding-left:var(--forms-columns-gap-padding-left,0);padding-right:var(--forms-columns-gap-padding-right,0);margin-left:var(--forms-columns-gap-margin-left,0);margin-right:var(--forms-columns-gap-margin-right,0);margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-my-account .woocommerce .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,0)}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,.elementor-widget-woocommerce-my-account .woocommerce .form-row select{color:var(--forms-fields-normal-color,#818a91);border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);background:#f7f7f7;border:none;font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,.elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text{margin-bottom:15px;color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword{font-size:12px;margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:50%}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first{width:100%}.elementor-widget-woocommerce-my-account .woocommerce .login,.elementor-widget-woocommerce-my-account .woocommerce .register,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px);font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .login .button,.elementor-widget-woocommerce-my-account .woocommerce .register .button,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3){margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){margin-top:10px;font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox{vertical-align:middle}.elementor-widget-woocommerce-my-account .woocommerce p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span{color:var(--checkboxes-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce td,.elementor-widget-woocommerce-my-account .woocommerce th,.elementor-widget-woocommerce-my-account .woocommerce tr{border:none}.elementor-widget-woocommerce-my-account .woocommerce h2,.elementor-widget-woocommerce-my-account .woocommerce h3{color:var(--typography-section-titles-color,#000);margin-top:0;margin-bottom:var(--section-title-spacing,45px);font-weight:400}.elementor-widget-woocommerce-my-account .woocommerce strong{color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta,.elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label{color:var(--variations-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .product-quantity{font-weight:400;color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{float:right;width:25%}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul{-webkit-padding-start:0;padding-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li{list-style-type:none;margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li:after{content:"";display:block;width:100%;background-color:var(--tabs-divider-color,#818a91);height:var(--tabs-divider-weight,0);position:relative;top:calc(var(--tabs-spacing, 2px) / 2)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a{color:var(--tabs-active-color,#5bc0de);background:#eceeef;border-color:var(--tabs-active-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{font-style:normal;font-weight:700;font-size:14px;color:var(--tabs-normal-color,#818a91);display:block;padding:var(--tabs-padding,12px 20px);text-align:var(--tabs-alignment,start);background:#f7f7f7;border-radius:var(--tabs-border-radius,0);border:0 var(--tabs-border-type,solid) var(--tabs-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover{color:var(--tabs-hover-color,#5bc0de);border-color:var(--tabs-hover-border-color,transparent)}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{padding:var(--tabs-padding,10px)}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard{margin-top:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout:after{display:none}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{float:left;width:75%;padding:0;padding-right:var(--tab-content-spacing,6%)}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{width:100%;padding:var(--tab-content-spacing,6%) 0 0 0}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type{margin-top:30px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark{background-color:transparent;font-weight:700;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child th,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child th{border-top:0}.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th{border-top:0;padding-right:0;padding-top:0;padding-bottom:var(--tables-titles-spacing,9px)}.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>th,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>th{background-color:transparent;padding-right:0;padding-top:var(--order-summary-rows-gap-top,9px);padding-bottom:var(--order-summary-rows-gap-bottom,9px);color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table td,.elementor-widget-woocommerce-my-account .woocommerce .shop_table th{border-top:var(--tables-divider-border-width,1px) var(--tables-divider-border-type,solid) var(--tables-divider-border-color,#d4d4d4)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th,.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span{color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td,.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th{padding-right:0;color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td{border-top:none;padding-top:0}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button{background:transparent;border:2px solid #5bc0de;border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);border-radius:var(--tables-button-border-radius,3px);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);margin-top:0;margin-bottom:0;padding:var(--tables-button-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-Address .title h3,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3{float:none}.elementor-widget-woocommerce-my-account .woocommerce-Address address,.elementor-widget-woocommerce-my-account .woocommerce-Addresses address{padding:var(--sections-padding,45px 30px 16px 30px)}.elementor-widget-woocommerce-my-account .woocommerce-Address .edit,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit{float:right;position:absolute;margin-right:var(--edit-link-margin-start,30px);margin-top:var(--edit-link-margin-top,10px)}.elementor-widget-woocommerce-my-account .woocommerce .u-columns{margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset{border:none;padding:0;-webkit-margin-start:0;margin-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend{font-weight:700;padding:20px 0;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px);margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-pagination{padding:16px 0}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below,.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below{padding-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td{vertical-align:top;line-height:unset}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{float:none;width:100%}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block}.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation,.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{list-style:none;padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--tabs-container-justify-content,space-between);-ms-flex-pack:var(--tabs-container-justify-content,space-between);justify-content:var(--tabs-container-justify-content,space-between)}@media (max-width:767px){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{display:block}}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block;width:var(--tab-width,100%);padding:0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);margin:0;border-right:var(--tabs-divider-weight,0) solid var(--tabs-divider-color,#818a91)}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:after{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type{padding-right:0}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type{padding-left:0;border-right-width:0}@media (max-width:767px){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}}.e-my-account-tabs-horizontal .woocommerce-MyAccount-content{float:none;width:100%;padding:var(--tab-content-spacing,50px) 0 0 0}.elementor-editor-active .elementor-widget-container,.elementor-editor-preview .elementor-widget-container{min-height:1px}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a{pointer-events:none}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button{pointer-events:none;opacity:.3}.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type){display:none}.product .count{background-color:inherit}.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2{display:none}.woocommerce div.product.elementor form.cart div.product-addon{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-negative:0;flex-shrink:0}.e-sticky-right-column--active{position:-webkit-sticky;position:sticky;top:0}.elementor-theme-builder-content-area{height:400px}.elementor-location-footer:before,.elementor-location-header:before{content:"";display:table;clear:both}.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post{display:block}.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid{color:#d4d4d4;border:1px solid;border-right:none;border-left:none;padding-top:10px;padding-bottom:10px}.elementor-post-navigation-borders-yes .elementor-post-navigation__separator{height:100%;width:1px;margin:0 auto;background-color:#d4d4d4}.elementor-post-navigation{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-post-navigation .post-navigation__arrow-wrapper{color:#d4d4d4}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev{font-size:30px;padding-left:15px}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next{font-size:30px;padding-right:15px}.elementor-post-navigation .post-navigation__arrow-wrapper i{-webkit-transform:translateY(-5%);-ms-transform:translateY(-5%);transform:translateY(-5%)}.elementor-post-navigation .elementor-post-navigation__link__next,.elementor-post-navigation .elementor-post-navigation__link__prev{overflow:hidden}.elementor-post-navigation .elementor-post-navigation__link a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__prev--label{text-transform:uppercase;font-size:.8em}.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--title{font-size:.7em}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--label,.elementor-post-navigation .post-navigation__prev--title{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation span.elementor-post-navigation__link__next{text-align:left}.elementor-post-navigation span.elementor-post-navigation__link__next,.elementor-post-navigation span.elementor-post-navigation__link__prev{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-post-navigation .elementor-grid{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-post-navigation .elementor-post-navigation__link{width:calc(50% - (1px / 2));white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation .elementor-post-navigation__separator-wrapper{text-align:center}.elementor-post-navigation .elementor-post-navigation__next{text-align:left}.elementor-post-navigation .elementor-post-navigation__next a{float:left}.elementor-search-form{display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s}.elementor-search-form .e-font-icon-svg-container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-search-form button,.elementor-search-form input[type=search]{margin:0;border:0;padding:0;display:inline-block;vertical-align:middle;white-space:normal;background:none;line-height:1;min-width:0;font-size:15px;-webkit-appearance:none;-moz-appearance:none}.elementor-search-form button:focus,.elementor-search-form input[type=search]:focus{outline:0;color:inherit}.elementor-search-form button{background-color:#818a91;font-size:var(--e-search-form-submit-icon-size,16px);color:#fff;border-radius:0}.elementor-search-form__container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;overflow:hidden;border:0 solid transparent;min-height:50px}.elementor-search-form__container:not(.elementor-search-form--full-screen){background:#eceeef}.elementor-search-form__input{-ms-flex-preferred-size:100%;flex-basis:100%;color:#55595c;-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s}.elementor-search-form__input::-webkit-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-moz-placeholder,.elementor-search-form__input::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__submit{-webkit-transition:color .2s,background .2s;-o-transition:color .2s,background .2s;transition:color .2s,background .2s;font-size:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form__submit svg{fill:var(--e-search-form-submit-text-color,#fff);width:var(--e-search-form-submit-icon-size,16px);height:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form .elementor-search-form__submit,.elementor-search-form .elementor-search-form__submit:hover{color:var(--e-search-form-submit-text-color,#fff);border:none;border-radius:0}.elementor-search-form--button-type-text .elementor-search-form__submit{-ms-flex-negative:0;flex-shrink:0}.elementor-search-form--skin-minimal .elementor-search-form__icon{opacity:.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;color:#55595c;fill:#55595c;font-size:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-minimal .elementor-search-form__icon svg{width:var(--e-search-form-icon-size-minimal,15px);height:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-full_screen .elementor-search-form input[type=search].elementor-search-form__input{font-size:50px;text-align:center;border:solid #fff;border-width:0 0 1px;line-height:1.5;color:#fff}.elementor-search-form--skin-full_screen .elementor-search-form__toggle{display:inline-block;cursor:pointer;vertical-align:middle;color:var(--e-search-form-toggle-color,#494c4f);font-size:var(--e-search-form-toggle-size,33px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i{position:relative;display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;width:var(--e-search-form-toggle-size,33px);height:var(--e-search-form-toggle-size,33px);background-color:var(--e-search-form-toggle-background-color,rgba(0,0,0,.05));border:var(--e-search-form-toggle-border-width,0) solid var(--e-search-form-toggle-color,#494c4f);border-radius:var(--e-search-form-toggle-border-radius,3px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before{font-size:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{fill:var(--e-search-form-toggle-color,#494c4f);width:var(--e-search-form-toggle-icon-size,.55em);height:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__container{-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;z-index:9998;top:0;left:0;right:0;bottom:0;height:100vh;padding:0 15%;background-color:rgba(0,0,0,.8)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen){overflow:hidden;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button{display:none}.elementor-author-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-author-box__avatar{-ms-flex-negative:0;flex-shrink:0;margin-left:25px}.elementor-author-box__avatar img{width:100px;border-radius:500px;-o-object-fit:cover;object-fit:cover}.elementor-author-box__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:17px}.elementor-author-box__name{font-size:24px;margin-bottom:5px}.elementor-author-box__bio,.elementor-author-box__bio p{margin-bottom:.8em}.elementor-author-box__bio p:last-of-type{margin-bottom:0}.elementor-author-box--layout-image-left .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-author-box--layout-image-left .elementor-author-box__avatar{margin-left:0;margin-right:25px}.elementor-author-box--layout-image-right .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-author-box--layout-image-right .elementor-author-box__avatar{margin-right:0;margin-left:25px}.elementor-author-box--layout-image-above .elementor-author-box{display:block}.elementor-author-box--layout-image-above .elementor-author-box__avatar{margin:0 auto 15px;display:inline-block}.elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar{margin-left:0}.elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar{margin-right:0}.elementor-author-box--align-left .elementor-author-box{text-align:left}.elementor-author-box--align-right .elementor-author-box{text-align:right}.elementor-author-box--align-center .elementor-author-box{text-align:center}.elementor-button.elementor-author-box__button{border:2px solid #55595c;font-size:15px;font-weight:100;padding:10px 18px}.elementor-button.elementor-author-box__button,.elementor-button.elementor-author-box__button:hover{background:transparent;color:#55595c}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar,.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar{-ms-flex-item-align:start;align-self:flex-start}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar{-ms-flex-item-align:center;align-self:center}.elementor-post-info__terms-list{display:inline-block}.elementor-post-info .elementor-icon-list-icon .elementor-avatar{border-radius:100%}.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after{margin:initial}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text{display:inline-block}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a,.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span{display:inline}.elementor-widget-breadcrumbs{font-size:.85em}.elementor-widget-breadcrumbs p{margin-bottom:0}.elementor-sitemap-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.elementor-sticky--active{z-index:99}[data-elementor-type=popup] .elementor-section-wrap:not(:empty)+#elementor-add-new-section,[data-elementor-type=popup]:not(.elementor-edit-area){display:none}.elementor-popup-modal{display:-webkit-box;display:-ms-flexbox;display:flex;pointer-events:none;background-color:transparent;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.elementor-popup-modal .dialog-buttons-wrapper,.elementor-popup-modal .dialog-header{display:none}.elementor-popup-modal .dialog-close-button{display:none;top:20px;margin-top:0;left:20px;opacity:1;z-index:9999;pointer-events:all}.elementor-popup-modal .dialog-close-button svg{fill:#373a3c;height:1em;width:1em}.elementor-popup-modal .dialog-widget-content{width:auto;overflow:visible;max-width:100%;max-height:100%;border-radius:0;-webkit-box-shadow:none;box-shadow:none;pointer-events:all}.elementor-popup-modal .dialog-message{width:640px;max-width:100vw;max-height:100vh;padding:0;overflow:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-popup-modal .elementor{width:100%}.elementor-motion-effects-element,.elementor-motion-effects-layer{-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(0,.33,.07,1.03);-o-transition-timing-function:cubic-bezier(0,.33,.07,1.03);transition-timing-function:cubic-bezier(0,.33,.07,1.03);-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s}.elementor-motion-effects-container{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;-webkit-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);-ms-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.elementor-motion-effects-layer{position:absolute;top:0;left:0;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover}.elementor-motion-effects-perspective{-webkit-perspective:1200px;perspective:1200px}.elementor-widget-archive-posts:after,.elementor-widget-posts:after{display:none}.elementor-posts-container.elementor-posts-masonry{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-posts-container:not(.elementor-posts-masonry){-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-posts-container .elementor-post{padding:0;margin:0}.elementor-posts-container .elementor-post__thumbnail{overflow:hidden}.elementor-posts-container .elementor-post__thumbnail img{display:block;width:100%;max-height:none;max-width:none;-webkit-transition:-webkit-filter .3s;transition:-webkit-filter .3s;-o-transition:filter .3s;transition:filter .3s;transition:filter .3s,-webkit-filter .3s}.elementor-posts-container .elementor-post__thumbnail__link{position:relative;display:block;width:100%}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail{top:0;left:0;right:0;bottom:0}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail img{height:auto;position:absolute;top:calc(50% + 1px);left:calc(50% + 1px);-webkit-transform:scale(1.01) translate(-50%,-50%);-ms-transform:scale(1.01) translate(-50%,-50%);transform:scale(1.01) translate(-50%,-50%)}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail.elementor-fit-height img{height:100%;width:auto}.elementor-posts .elementor-post{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition-property:background,border,-webkit-box-shadow;transition-property:background,border,-webkit-box-shadow;-o-transition-property:background,border,box-shadow;transition-property:background,border,box-shadow;transition-property:background,border,box-shadow,-webkit-box-shadow;-webkit-transition-duration:.25s;-o-transition-duration:.25s;transition-duration:.25s}.elementor-posts .elementor-post__title{font-size:18px;margin:0}.elementor-posts .elementor-post__excerpt{margin-bottom:10px}.elementor-posts .elementor-post__excerpt p{margin:0;line-height:1.5em;font-size:14px;color:#777}.elementor-posts .elementor-post__meta-data{line-height:1.3em;font-size:12px;margin-bottom:13px;color:#adadad}.elementor-posts .elementor-post__read-more{font-size:12px;font-weight:700}.elementor-posts .elementor-post__thumbnail{position:relative}.elementor-posts--skin-classic{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-posts--skin-classic:not(.elementor-posts-masonry){-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-posts--skin-classic .elementor-post{overflow:hidden}.elementor-posts--skin-classic .elementor-post__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-posts--align-left .elementor-post{text-align:left}.elementor-posts--align-right .elementor-post{text-align:right}.elementor-posts--align-center .elementor-post{text-align:center}.elementor-posts--thumbnail-top .elementor-post{display:block}.elementor-posts--thumbnail-top .elementor-post__thumbnail__link{margin-bottom:20px}.elementor-posts--thumbnail-top .elementor-post__text{width:100%}.elementor-posts--thumbnail-top.elementor-posts--align-left .elementor-post__thumbnail__link{margin-right:auto}.elementor-posts--thumbnail-top.elementor-posts--align-right .elementor-post__thumbnail__link{margin-left:auto}.elementor-posts--thumbnail-top.elementor-posts--align-center .elementor-post__thumbnail__link{margin-right:auto;margin-left:auto}.elementor-posts--thumbnail-left .elementor-post__thumbnail__link,.elementor-posts--thumbnail-right .elementor-post__thumbnail__link{-ms-flex-negative:0;flex-shrink:0;width:25%}.elementor-posts--thumbnail-left .elementor-post__thumbnail__link{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5;margin-right:20px}.elementor-posts--thumbnail-right .elementor-post__thumbnail__link{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0;margin-left:20px}.elementor-posts--thumbnail-none .elementor-posts-container .elementor-post__thumbnail__link{display:none}.elementor-posts .elementor-post__card{overflow:hidden;position:relative;background-color:#fff;width:100%;min-height:100%;border-radius:3px;border:0 solid #818a91;-webkit-transition:all .25s;-o-transition:all .25s;transition:all .25s}.elementor-posts .elementor-post__card .elementor-post__thumbnail{position:relative;transform-style:preserve-3d;-webkit-transform-style:preserve-3d}.elementor-posts .elementor-post__card .elementor-post__thumbnail img{width:calc(100% + 1px)}.elementor-posts .elementor-post__card .elementor-post__text{padding:0 30px;margin-bottom:0;margin-top:20px}.elementor-posts .elementor-post__card .elementor-post__read-more{margin-bottom:20px;display:inline-block}.elementor-posts .elementor-post__card .elementor-post__meta-data{padding:15px 30px;margin-bottom:0;border-top:1px solid #eaeaea}.elementor-posts .elementor-post__card .elementor-post__meta-data span+span:before{margin:0 5px}.elementor-posts .elementor-post__card .elementor-post__title{font-size:21px}.elementor-posts .elementor-post__card .elementor-post__excerpt{line-height:1.7}.elementor-posts .elementor-post__card .elementor-post__excerpt,.elementor-posts .elementor-post__card .elementor-post__title{margin-bottom:25px}.elementor-posts .elementor-post__card .elementor-post__badge,.elementor-posts .elementor-post__card .elementor-post__read-more{text-transform:uppercase}.elementor-posts .elementor-post__badge{position:absolute;top:0;background:#818a91;color:#fff;font-size:12px;padding:.6em 1.2em;line-height:1;font-weight:400;margin:20px;border-radius:999px}.elementor-posts .elementor-post__avatar{position:relative;padding:0 30px;width:100%;top:-25px;height:0;pointer-events:none}.elementor-posts .elementor-post__avatar img{border-radius:50%;width:60px;pointer-events:all;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card,.elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data,.elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data{margin-top:auto}.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar{padding-top:0;position:static;height:auto}.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar img.avatar{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);vertical-align:bottom}.elementor-posts--show-avatar .elementor-post__thumbnail__link{margin-bottom:25px}.elementor-posts__hover-gradient .elementor-post__card .elementor-post__thumbnail__link:after{display:block;content:"";background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.35)),color-stop(75%,transparent));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.35),transparent 75%);background-image:-o-linear-gradient(bottom,rgba(0,0,0,.35) 0,transparent 75%);background-image:linear-gradient(0deg,rgba(0,0,0,.35),transparent 75%);background-repeat:no-repeat;height:100%;width:100%;position:absolute;bottom:0;opacity:1;-webkit-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.elementor-posts__hover-gradient .elementor-post__card:hover .elementor-post__thumbnail__link:after{opacity:.5}.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img{height:100%}.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img{width:calc(100% + 1px)}.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img{height:115%}.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img{width:115%}.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img{height:115%}.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img{width:115%}.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img{height:100%}.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img{width:calc(100% + 1px)}.elementor-posts__hover-zoom-in .elementor-post__thumbnail img,.elementor-posts__hover-zoom-out .elementor-post__thumbnail img{-webkit-transition:height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s;transition:height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s;-o-transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1);transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1);transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s}.elementor-card-shadow-yes .elementor-post__card{-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,.15);box-shadow:0 0 10px 0 rgba(0,0,0,.15)}.elementor-card-shadow-yes .elementor-post__card:hover{-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.15);box-shadow:0 0 30px 0 rgba(0,0,0,.15)}.elementor-posts--skin-full_content article{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.elementor-posts--skin-full_content article .elementor-post__thumbnail{padding-bottom:0}body.elementor-editor-active .elementor-posts--skin-archive_full_content,body.elementor-editor-active .elementor-posts--skin-full_content{pointer-events:none}body.elementor-editor-active .elementor-posts--skin-archive_full_content .elementor-post__thumbnail__link,body.elementor-editor-active .elementor-posts--skin-full_content .elementor-post__thumbnail__link{display:none}body.elementor-editor-active .elementor-posts--show-thumbnail .elementor-post__thumbnail__link{display:block}.elementor-portfolio__filters{list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0;margin:0}.elementor-portfolio__filter{margin:0;cursor:pointer;padding:8px}.elementor-portfolio-item{-ms-flex-item-align:start;align-self:flex-start;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:ease-in-out;-o-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;overflow:hidden;margin:0}.elementor-portfolio-item__title{margin:0;padding:0;line-height:1;font-size:18px;color:#fff}.elementor-portfolio-item__tags__separator:before{content:", "}.elementor-portfolio-item__overlay{opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;padding:15px;-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;overflow:hidden;background-color:rgba(129,138,145,.8)}.elementor-portfolio-item__overlay:hover{opacity:1;-webkit-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.elementor-portfolio-item__img img[src=""]{background-color:rgba(0,0,0,.1);height:100%}.elementor-portfolio.elementor-has-item-ratio{-webkit-transition:height .5s;-o-transition:height .5s;transition:height .5s}.elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail{position:absolute;background-color:rgba(0,0,0,.1)}.elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail__link{padding-bottom:56.25%}.elementor ul li.elementor-portfolio__filter{list-style-type:none}.elementor-widget-archive-posts.load-more-align-center .elementor-button-wrapper,.elementor-widget-posts.load-more-align-center .elementor-button-wrapper{text-align:center}.elementor-widget-archive-posts.load-more-align-start .elementor-button-wrapper,.elementor-widget-posts.load-more-align-start .elementor-button-wrapper{text-align:start}.elementor-widget-archive-posts.load-more-align-end .elementor-button-wrapper,.elementor-widget-posts.load-more-align-end .elementor-button-wrapper{text-align:end}.elementor-widget-archive-posts.load-more-align-justify .elementor-button,.elementor-widget-posts.load-more-align-justify .elementor-button{width:100%}.elementor-widget-archive-posts .e-load-more-spinner,.elementor-widget-posts .e-load-more-spinner{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-archive-posts .e-load-more-spinner i,.elementor-widget-archive-posts .e-load-more-spinner svg,.elementor-widget-posts .e-load-more-spinner i,.elementor-widget-posts .e-load-more-spinner svg{margin:0 auto;display:none}.elementor-widget-archive-posts .e-load-more-spinner i,.elementor-widget-posts .e-load-more-spinner i{color:var(--load-more-spinner-color)}.elementor-widget-archive-posts .e-load-more-spinner svg,.elementor-widget-posts .e-load-more-spinner svg{fill:var(--load-more-spinner-color);height:1em;width:1em}.elementor-widget-archive-posts .e-load-more-message,.elementor-widget-posts .e-load-more-message{color:var(--load-more-message-color);text-align:var(--load-more-message-alignment,center);display:none;margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts.e-load-more-pagination-loading,.elementor-widget-posts.e-load-more-pagination-loading{cursor:default}.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner{margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner i,.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner svg,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner i,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner svg{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-archive-posts.e-load-more-pagination-loading .elementor-button-content-wrapper,.elementor-widget-posts.e-load-more-pagination-loading .elementor-button-content-wrapper{visibility:hidden}.elementor-widget-archive-posts.e-load-more-pagination-end .elementor-button-wrapper,.elementor-widget-posts.e-load-more-pagination-end .elementor-button-wrapper{display:none}.elementor-widget-archive-posts.e-load-more-pagination-end .e-load-more-message,.elementor-widget-posts.e-load-more-pagination-end .e-load-more-message{display:block}.elementor-widget-archive-posts.e-load-more-no-spinner .elementor-button-content-wrapper,.elementor-widget-posts.e-load-more-no-spinner .elementor-button-content-wrapper{visibility:visible}.elementor-widget-archive-posts .elementor-button-wrapper,.elementor-widget-posts .elementor-button-wrapper{margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts .elementor-button-wrapper .e-load-more-spinner,.elementor-widget-posts .elementor-button-wrapper .e-load-more-spinner{position:absolute;right:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);margin:inherit}.elementor-widget-archive-posts .elementor-button-wrapper .elementor-button,.elementor-widget-posts .elementor-button-wrapper .elementor-button{cursor:pointer;position:relative}.elementor-button.elementor-hidden,.elementor-hidden{display:none}.e-form__step{width:100%}.e-form__step:not(.elementor-hidden){display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.e-form__buttons{-ms-flex-wrap:wrap;flex-wrap:wrap}.e-form__buttons,.e-form__buttons__wrapper{display:-webkit-box;display:-ms-flexbox;display:flex}.e-form__indicators{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:nowrap;flex-wrap:nowrap;font-size:13px;margin-bottom:var(--e-form-steps-indicators-spacing)}.e-form__indicators,.e-form__indicators__indicator{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.e-form__indicators__indicator{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-preferred-size:0;flex-basis:0;padding:0 var(--e-form-steps-divider-gap)}.e-form__indicators__indicator__progress{width:100%;position:relative;background-color:var(--e-form-steps-indicator-progress-background-color);border-radius:var(--e-form-steps-indicator-progress-border-radius);overflow:hidden}.e-form__indicators__indicator__progress__meter{width:var(--e-form-steps-indicator-progress-meter-width,0);height:var(--e-form-steps-indicator-progress-height);line-height:var(--e-form-steps-indicator-progress-height);padding-right:15px;border-radius:var(--e-form-steps-indicator-progress-border-radius);background-color:var(--e-form-steps-indicator-progress-color);color:var(--e-form-steps-indicator-progress-meter-color);text-align:right;-webkit-transition:width .1s linear;-o-transition:width .1s linear;transition:width .1s linear}.e-form__indicators__indicator:first-child{padding-left:0}.e-form__indicators__indicator:last-child{padding-right:0}.e-form__indicators__indicator--state-inactive{color:var(--e-form-steps-indicator-inactive-primary-color,#c2cbd2)}.e-form__indicators__indicator--state-inactive [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-inactive-secondary-color,#fff)}.e-form__indicators__indicator--state-inactive object,.e-form__indicators__indicator--state-inactive svg{fill:var(--e-form-steps-indicator-inactive-primary-color,#c2cbd2)}.e-form__indicators__indicator--state-active{color:var(--e-form-steps-indicator-active-primary-color,#39b54a);border-color:var(--e-form-steps-indicator-active-secondary-color,#fff)}.e-form__indicators__indicator--state-active [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-active-secondary-color,#fff)}.e-form__indicators__indicator--state-active object,.e-form__indicators__indicator--state-active svg{fill:var(--e-form-steps-indicator-active-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed{color:var(--e-form-steps-indicator-completed-secondary-color,#fff)}.e-form__indicators__indicator--state-completed [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-completed-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed .e-form__indicators__indicator__label{color:var(--e-form-steps-indicator-completed-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed .e-form__indicators__indicator--shape-none{color:var(--e-form-steps-indicator-completed-primary-color,#39b54a);background-color:initial}.e-form__indicators__indicator--state-completed object,.e-form__indicators__indicator--state-completed svg{fill:var(--e-form-steps-indicator-completed-secondary-color,#fff)}.e-form__indicators__indicator__icon{width:var(--e-form-steps-indicator-padding,30px);height:var(--e-form-steps-indicator-padding,30px);font-size:var(--e-form-steps-indicator-icon-size);border-width:1px;border-style:solid;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden;margin-bottom:10px}.e-form__indicators__indicator__icon img,.e-form__indicators__indicator__icon object,.e-form__indicators__indicator__icon svg{width:var(--e-form-steps-indicator-icon-size);height:auto}.e-form__indicators__indicator__icon .e-font-icon-svg{height:1em}.e-form__indicators__indicator__number{width:var(--e-form-steps-indicator-padding,30px);height:var(--e-form-steps-indicator-padding,30px);border-width:1px;border-style:solid;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px}.e-form__indicators__indicator--shape-circle{border-radius:50%}.e-form__indicators__indicator--shape-square{border-radius:0}.e-form__indicators__indicator--shape-rounded{border-radius:5px}.e-form__indicators__indicator--shape-none{border:0}.e-form__indicators__indicator__label{text-align:center}.e-form__indicators__indicator__separator{width:100%;height:var(--e-form-steps-divider-width);background-color:#c2cbd2}.e-form__indicators--type-icon,.e-form__indicators--type-icon_text,.e-form__indicators--type-number,.e-form__indicators--type-number_text{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.e-form__indicators--type-icon .e-form__indicators__indicator__separator,.e-form__indicators--type-icon_text .e-form__indicators__indicator__separator,.e-form__indicators--type-number .e-form__indicators__indicator__separator,.e-form__indicators--type-number_text .e-form__indicators__indicator__separator{margin-top:calc(var(--e-form-steps-indicator-padding, 30px) / 2 - var(--e-form-steps-divider-width, 1px) / 2)}.elementor-field-type-hidden{display:none}.elementor-field-type-html{display:inline-block}.elementor-login .elementor-lost-password,.elementor-login .elementor-remember-me{font-size:.85em}.elementor-field-type-recaptcha_v3 .elementor-field-label{display:none}.elementor-field-type-recaptcha_v3 .grecaptcha-badge{z-index:1}.elementor-button .elementor-form-spinner{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.elementor-form .elementor-button>span{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-form .elementor-button .elementor-button-text{white-space:normal;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.elementor-form .elementor-button svg{height:auto}.elementor-form .elementor-button .e-font-icon-svg{height:1em}.elementor-widget-price-list .elementor-price-list{list-style:none;padding:0;margin:0}.elementor-widget-price-list .elementor-price-list li{margin:0}.elementor-price-list li:not(:last-child){margin-bottom:20px}.elementor-price-list .elementor-price-list-image{max-width:50%;-ms-flex-negative:0;flex-shrink:0;padding-left:25px}.elementor-price-list .elementor-price-list-image img{width:100%}.elementor-price-list .elementor-price-list-header,.elementor-price-list .elementor-price-list-item,.elementor-price-list .elementor-price-list-text{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-price-list .elementor-price-list-item{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-price-list .elementor-price-list-item .elementor-price-list-text{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-price-list .elementor-price-list-item .elementor-price-list-header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-preferred-size:100%;flex-basis:100%;font-size:19px;font-weight:600;margin-bottom:10px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-price-list .elementor-price-list-item .elementor-price-list-title{max-width:80%}.elementor-price-list .elementor-price-list-item .elementor-price-list-price{font-weight:600}.elementor-price-list .elementor-price-list-item p.elementor-price-list-description{-ms-flex-preferred-size:100%;flex-basis:100%;font-size:14px;margin:0}.elementor-price-list .elementor-price-list-item .elementor-price-list-separator{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-left:10px;margin-right:10px;border-bottom-style:dotted;border-bottom-width:2px;height:0}.elementor-price-table{text-align:center}.elementor-price-table .elementor-price-table__header{background:var(--e-price-table-header-background-color,#555);padding:20px 0}.elementor-price-table .elementor-price-table__heading{margin:0;padding:0;line-height:1.2;font-size:24px;font-weight:600;color:#fff}.elementor-price-table .elementor-price-table__subheading{font-size:13px;font-weight:400;color:#fff}.elementor-price-table .elementor-price-table__original-price{margin-left:15px;text-decoration:line-through;font-size:.5em;line-height:1;font-weight:400;-ms-flex-item-align:center;align-self:center}.elementor-price-table .elementor-price-table__original-price .elementor-price-table__currency{font-size:1em;margin:0}.elementor-price-table .elementor-price-table__price{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;color:#555;font-weight:800;font-size:65px;padding:40px 0}.elementor-price-table .elementor-price-table__price .elementor-typo-excluded{line-height:normal;letter-spacing:normal;text-transform:none;font-weight:400;font-size:medium;font-style:normal}.elementor-price-table .elementor-price-table__after-price{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;text-align:right;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-price-table .elementor-price-table__integer-part{line-height:.8}.elementor-price-table .elementor-price-table__currency,.elementor-price-table .elementor-price-table__fractional-part{line-height:1;font-size:.3em}.elementor-price-table .elementor-price-table__currency{margin-left:3px}.elementor-price-table .elementor-price-table__period{width:100%;font-size:13px;font-weight:400}.elementor-price-table .elementor-price-table__features-list{list-style-type:none;margin:0;padding:0;line-height:1;color:var(--e-price-table-features-list-color)}.elementor-price-table .elementor-price-table__features-list li{font-size:14px;line-height:1;margin:0;padding:0}.elementor-price-table .elementor-price-table__features-list li .elementor-price-table__feature-inner{margin-left:15px;margin-right:15px}.elementor-price-table .elementor-price-table__features-list li:not(:first-child):before{content:"";display:block;border:0 solid hsla(0,0%,47.8%,.3);margin:10px 12.5%}.elementor-price-table .elementor-price-table__features-list i{margin-left:10px;font-size:1.3em}.elementor-price-table .elementor-price-table__features-list svg{margin-left:10px;fill:var(--e-price-table-features-list-color);height:1.3em;width:1.3em}.elementor-price-table .elementor-price-table__features-list svg~*{vertical-align:text-top}.elementor-price-table .elementor-price-table__footer{padding:30px 0}.elementor-price-table .elementor-price-table__additional_info{margin:0;font-size:13px;line-height:1.4}.elementor-price-table__ribbon{position:absolute;top:0;left:0;right:auto;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);width:150px;overflow:hidden;height:150px}.elementor-price-table__ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000}.elementor-price-table__ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-price-table__ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}.elementor-widget-price-table .elementor-widget-container{overflow:hidden;background-color:#f7f7f7}.elementor-flip-box{height:280px;position:relative;-webkit-perspective:1000px;perspective:1000px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}@media (max-device-width:1024px){.elementor-flip-box{cursor:pointer}}.elementor-flip-box__front{background-color:#1abc9c}.elementor-flip-box__back{background-color:#4054b2;display:block}.elementor-flip-box__layer{position:absolute;width:100%;height:100%;-webkit-transition:all .6s ease-in-out;-o-transition:all .6s ease-in-out;transition:all .6s ease-in-out}.elementor-flip-box__layer__overlay{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;text-align:center;padding:35px;color:#fff}.elementor-flip-box__layer__title{font-size:21px}.elementor-flip-box__layer__description{font-size:14px}.elementor-flip-box__layer__description:not(:last-child),.elementor-flip-box__layer__title:not(:last-child){margin:0 0 20px;padding:0}.elementor-flip-box__layer__title{line-height:1;font-weight:600}.elementor-flip-box,.elementor-flip-box .elementor-view-framed,.elementor-flip-box .elementor-view-stacked{--e-flip-box-view-framed-stacked-icon-color:#fff}.elementor-flip-box .elementor-icon,.elementor-flip-box .elementor-view-framed .elementor-icon,.elementor-flip-box .elementor-view-stacked .elementor-icon{color:var(--e-flip-box-view-framed-stacked-icon-color)}.elementor-flip-box .elementor-icon svg,.elementor-flip-box .elementor-view-framed .elementor-icon svg,.elementor-flip-box .elementor-view-stacked .elementor-icon svg{fill:var(--e-flip-box-view-framed-stacked-icon-color)}.elementor-flip-box .elementor-view-framed .elementor-icon{border-color:#fff}.elementor-flip-box .elementor-view-stacked .elementor-icon{background-color:rgba(0,0,0,.5)}.elementor-flip-box__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-flip-box__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-flip-box__image{margin:0 0 20px;display:inline-block;width:100%}.elementor-flip-box__image img{width:50%}.elementor-flip-box .elementor-icon-wrapper{margin-bottom:20px}.elementor-flip-box--3d .elementor-flip-box__layer__inner{-webkit-transform:translateZ(90px) scale(.91);transform:translateZ(90px) scale(.91)}.elementor-flip-box--3d .elementor-flip-box__layer__overlay{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(.1px);transform:translateZ(.1px)}.elementor-flip-box--effect-flip .elementor-flip-box{-webkit-perspective:1000px;perspective:1000px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.elementor-flip-box--effect-flip .elementor-flip-box__layer{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-flip-box--effect-flip .elementor-flip-box__front{-webkit-transform:none;-ms-transform:none;transform:none;z-index:1}.elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box__back{-webkit-transform:rotateX(0) rotateY(-180deg);transform:rotateX(0) rotateY(-180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box__back,.elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(0) rotateY(180deg);transform:rotateX(0) rotateY(180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(0) rotateY(-180deg);transform:rotateX(0) rotateY(-180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box__back{-webkit-transform:rotateX(-180deg) rotateY(0);transform:rotateX(-180deg) rotateY(0)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box__back,.elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(180deg) rotateY(0);transform:rotateX(180deg) rotateY(0)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(-180deg) rotateY(0);transform:rotateX(-180deg) rotateY(0)}.elementor-flip-box--effect-push .elementor-flip-box__front{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(100%) translateY(0);-ms-transform:translateX(100%) translateY(0);transform:translateX(100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(-100%) translateY(0);-ms-transform:translateX(-100%) translateY(0);transform:translateX(-100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(0) translateY(-100%);-ms-transform:translateX(0) translateY(-100%);transform:translateX(0) translateY(-100%)}.elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(0) translateY(100%);-ms-transform:translateX(0) translateY(100%);transform:translateX(0) translateY(100%)}.elementor-flip-box--effect-push .elementor-flip-box,.elementor-flip-box--effect-slide .elementor-flip-box{overflow:hidden}.elementor-flip-box--effect-push .elementor-flip-box:hover .elementor-flip-box__back,.elementor-flip-box--effect-slide .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-right .elementor-flip-box__back{-webkit-transform:translateX(-100%) translateY(0);-ms-transform:translateX(-100%) translateY(0);transform:translateX(-100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-left .elementor-flip-box__back{-webkit-transform:translateX(100%) translateY(0);-ms-transform:translateX(100%) translateY(0);transform:translateX(100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-up .elementor-flip-box__back{-webkit-transform:translateX(0) translateY(100%);-ms-transform:translateX(0) translateY(100%);transform:translateX(0) translateY(100%)}.elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-down .elementor-flip-box__back{-webkit-transform:translateX(0) translateY(-100%);-ms-transform:translateX(0) translateY(-100%);transform:translateX(0) translateY(-100%)}.elementor-flip-box--effect-zoom-out .elementor-flip-box .elementor-flip-box__front{-webkit-transition:opacity .35s,width .1ms,-webkit-transform .7s;transition:opacity .35s,width .1ms,-webkit-transform .7s;-o-transition:transform .7s,opacity .35s,width .1ms;transition:transform .7s,opacity .35s,width .1ms;transition:transform .7s,opacity .35s,width .1ms,-webkit-transform .7s;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);z-index:1;width:100%}.elementor-flip-box--effect-zoom-out .elementor-flip-box:hover .elementor-flip-box__front{width:0;opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7);-webkit-transition:opacity .7s .1s,width .1ms .7s,-webkit-transform .8s;transition:opacity .7s .1s,width .1ms .7s,-webkit-transform .8s;-o-transition:transform .8s,opacity .7s .1s,width .1ms .7s;transition:transform .8s,opacity .7s .1s,width .1ms .7s;transition:transform .8s,opacity .7s .1s,width .1ms .7s,-webkit-transform .8s}.elementor-flip-box--effect-zoom-in .elementor-flip-box .elementor-flip-box__back{-webkit-transition:opacity .5s .2s,-webkit-transform .7s;transition:opacity .5s .2s,-webkit-transform .7s;-o-transition:transform .7s,opacity .5s .2s;transition:transform .7s,opacity .5s .2s;transition:transform .7s,opacity .5s .2s,-webkit-transform .7s;opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}.elementor-flip-box--effect-zoom-in .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transition:opacity .5s,-webkit-transform .7s;transition:opacity .5s,-webkit-transform .7s;-o-transition:transform .7s,opacity .5s;transition:transform .7s,opacity .5s;transition:transform .7s,opacity .5s,-webkit-transform .7s;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-flip-box--effect-fade .elementor-flip-box .elementor-flip-box__back{opacity:0}.elementor-flip-box--effect-fade .elementor-flip-box:hover .elementor-flip-box__back{opacity:1}.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__front{display:none}.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}.elementor-cta,.elementor-widget-call-to-action .elementor-widget-container{overflow:hidden}.elementor-cta{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.5s;-o-transition:.5s;transition:.5s}.elementor-cta--skin-classic .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--skin-classic .elementor-cta__bg-wrapper{position:relative;min-height:200px;width:100%}.elementor-cta--skin-classic .elementor-cta__content{-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%;background-color:#f7f7f7}.elementor-cta--skin-classic .elementor-cta__content-item,.elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon{color:#55595c;border-color:#55595c;fill:#55595c}.elementor-cta--skin-classic .elementor-cta__button.elementor-button{color:#55595c;border-color:#55595c}.elementor-cta--skin-cover .elementor-cta{display:block}.elementor-cta--skin-cover .elementor-cta__bg-wrapper{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%}.elementor-cta--skin-cover .elementor-cta__content{min-height:280px}.elementor-cta--skin-cover .elementor-cta__button.elementor-button,.elementor-cta--skin-cover .elementor-cta__content-item,.elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon{color:#fff;border-color:#fff}.elementor-cta--layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--layout-image-left .elementor-cta,.elementor-cta--layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--layout-image-left .elementor-cta__content,.elementor-cta--layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta__bg,.elementor-cta__bg-overlay{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s}.elementor-cta__bg-wrapper{z-index:1;overflow:hidden}.elementor-cta__bg{-webkit-background-size:cover;background-size:cover;background-position:50%;z-index:1}.elementor-cta__bg-overlay{z-index:2}.elementor-cta__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-cta__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-cta__title{font-size:23px}.elementor-cta__content{z-index:1;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;padding:35px;width:100%}.elementor-cta__content,.elementor-cta__content-item{position:relative;-webkit-transition:.5s;-o-transition:.5s;transition:.5s;color:#fff}.elementor-cta__content-item{width:100%;margin:0}.elementor-cta__content-item:not(:last-child){margin-bottom:15px}.elementor-cta__content-item .elementor-icon{color:#fff}.elementor-cta--valign-top .elementor-cta__content{-ms-flex-line-pack:start;align-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-cta--valign-middle .elementor-cta__content{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-cta--valign-bottom .elementor-cta__content{-ms-flex-line-pack:end;align-content:flex-end;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor-cta:hover .elementor-cta__bg-overlay{background-color:rgba(0,0,0,.3)}@media (max-device-width:1024px){.elementor-cta{cursor:pointer}}@media (min-width:-1px){.elementor-cta--widescreen-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--widescreen-layout-image-left .elementor-cta,.elementor-cta--widescreen-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--widescreen-layout-image-left .elementor-cta__content,.elementor-cta--widescreen-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--widescreen-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--widescreen-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--laptop-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--laptop-layout-image-left .elementor-cta,.elementor-cta--laptop-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--laptop-layout-image-left .elementor-cta__content,.elementor-cta--laptop-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--laptop-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--laptop-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--tablet_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta,.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__content,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:1024px){.elementor-cta--tablet-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet-layout-image-left .elementor-cta,.elementor-cta--tablet-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet-layout-image-left .elementor-cta__content,.elementor-cta--tablet-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--tablet-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--mobile_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta,.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__content,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:767px){.elementor-cta--mobile-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile-layout-image-left .elementor-cta,.elementor-cta--mobile-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile-layout-image-left .elementor-cta__content,.elementor-cta--mobile-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--mobile-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.elementor-ribbon{position:absolute;z-index:1;top:0;left:0;right:auto;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);width:150px;overflow:hidden;height:150px}.elementor-ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000;color:#fff}.elementor-ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}.elementor-widget-countdown .elementor-countdown-expire--message{display:none;padding:20px;text-align:center}.elementor-widget-countdown .elementor-countdown-wrapper{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-widget-countdown .elementor-countdown-item{padding:20px 0;text-align:center;color:#fff}.elementor-widget-countdown .elementor-countdown-digits,.elementor-widget-countdown .elementor-countdown-label{line-height:1}.elementor-widget-countdown .elementor-countdown-digits{font-size:69px}.elementor-widget-countdown .elementor-countdown-label{font-size:19px}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:auto;margin-left:auto}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-digits,.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-label{display:block}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-widget-countdown.elementor-countdown--label-inline{text-align:center}.elementor-widget-countdown.elementor-countdown--label-inline .elementor-countdown-item{display:inline-block;padding-left:5px;padding-right:5px}.elementor-slides .swiper-slide-bg{-webkit-background-size:cover;background-size:cover;background-position:50%;background-repeat:no-repeat;min-width:100%;min-height:100%}.elementor-slides .swiper-slide-inner{background-repeat:no-repeat;background-position:50%;position:absolute;top:0;left:0;bottom:0;right:0;padding:50px;margin:auto}.elementor-slides .swiper-slide-inner,.elementor-slides .swiper-slide-inner:hover{color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-slides .swiper-slide-inner .elementor-background-overlay{position:absolute;z-index:0;top:0;bottom:0;left:0;right:0}.elementor-slides .swiper-slide-inner .elementor-slide-content{position:relative;z-index:1;width:100%}.elementor-slides .swiper-slide-inner .elementor-slide-heading{font-size:35px;font-weight:700;line-height:1}.elementor-slides .swiper-slide-inner .elementor-slide-description{font-size:17px;line-height:1.4}.elementor-slides .swiper-slide-inner .elementor-slide-description:not(:last-child),.elementor-slides .swiper-slide-inner .elementor-slide-heading:not(:last-child){margin-bottom:30px}.elementor-slides .swiper-slide-inner .elementor-slide-button{border:2px solid #fff;color:#fff;background:transparent;display:inline-block}.elementor-slides .swiper-slide-inner .elementor-slide-button,.elementor-slides .swiper-slide-inner .elementor-slide-button:hover{background:transparent;color:inherit;text-decoration:none}.elementor--v-position-top .swiper-slide-inner{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor--v-position-bottom .swiper-slide-inner{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor--v-position-middle .swiper-slide-inner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor--h-position-left .swiper-slide-inner{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor--h-position-right .swiper-slide-inner{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor--h-position-center .swiper-slide-inner{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}body.rtl .elementor-widget-slides .elementor-swiper-button-next{left:10px;right:auto}body.rtl .elementor-widget-slides .elementor-swiper-button-prev{right:10px;left:auto}.elementor-slides-wrapper div:not(.swiper-slide)>.swiper-slide-inner{display:none}@media (max-width:767px){.elementor-slides .swiper-slide-inner{padding:30px}.elementor-slides .swiper-slide-inner .elementor-slide-heading{font-size:23px;line-height:1;margin-bottom:15px}.elementor-slides .swiper-slide-inner .elementor-slide-description{font-size:13px;line-height:1.4;margin-bottom:15px}}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn{background-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text{color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn{color:var(--e-share-buttons-primary-color,#ea4335);border-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon{background-color:var(--e-share-buttons-primary-color,#ea4335);color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon{color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon svg{fill:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-official .elementor-share-btn:hover{-webkit-filter:saturate(1.5) brightness(1.2);filter:saturate(1.5) brightness(1.2)}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_digg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_digg{background-color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_email,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_email{background-color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_print,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_print{background-color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_facebook,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_facebook{background-color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_google,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_google{background-color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pocket,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pocket{background-color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_linkedin,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_linkedin{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_odnoklassniki,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_odnoklassniki{background-color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pinterest,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pinterest{background-color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_reddit,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_reddit{background-color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_skype,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_skype{background-color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_slideshare,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_slideshare{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_snapchat,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_snapchat{background-color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_stumbleupon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_stumbleupon{background-color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_mix,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_mix{background-color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_tumblr,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_tumblr{background-color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitch,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitch{background-color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_telegram,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_telegram{background-color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitter,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitter{background-color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vimeo,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vimeo{background-color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vk,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vk{background-color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_whatsapp,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_whatsapp{background-color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_wordpress,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_wordpress{background-color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_xing,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_xing{background-color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg{color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg svg{fill:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email{color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email svg{fill:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print{color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print svg{fill:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook{color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook svg{fill:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google{color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google svg{fill:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket{color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket svg{fill:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin{color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin svg{fill:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki{color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki svg{fill:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest{color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest svg{fill:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit{color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit svg{fill:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype{color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype svg{fill:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare{color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare svg{fill:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat{color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat svg{fill:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon{color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon svg{fill:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix{color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix svg{fill:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr{color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr svg{fill:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch{color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch svg{fill:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram{color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram svg{fill:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter{color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter svg{fill:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo{color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo svg{fill:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk{color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk svg{fill:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp{color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp svg{fill:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress{color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress svg{fill:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing{color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing svg{fill:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_digg .elementor-share-btn__icon{background-color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_email .elementor-share-btn__icon{background-color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_print .elementor-share-btn__icon{background-color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_facebook .elementor-share-btn__icon{background-color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_google .elementor-share-btn__icon{background-color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pocket .elementor-share-btn__icon{background-color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_linkedin .elementor-share-btn__icon{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_odnoklassniki .elementor-share-btn__icon{background-color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pinterest .elementor-share-btn__icon{background-color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_reddit .elementor-share-btn__icon{background-color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_skype .elementor-share-btn__icon{background-color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_slideshare .elementor-share-btn__icon{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_snapchat .elementor-share-btn__icon{background-color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_stumbleupon .elementor-share-btn__icon{background-color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_mix .elementor-share-btn__icon{background-color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_tumblr .elementor-share-btn__icon{background-color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitch .elementor-share-btn__icon{background-color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_telegram .elementor-share-btn__icon{background-color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitter .elementor-share-btn__icon{background-color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vimeo .elementor-share-btn__icon{background-color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vk .elementor-share-btn__icon{background-color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_whatsapp .elementor-share-btn__icon{background-color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_wordpress .elementor-share-btn__icon{background-color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_xing .elementor-share-btn__icon{background-color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon{color:var(--e-share-buttons-icon-color,#fff)}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon svg{fill:var(--e-share-buttons-icon-color,#fff)}.elementor-share-buttons--skin-boxed .elementor-share-btn__icon,.elementor-share-buttons--skin-framed .elementor-share-btn__icon{margin-right:-.2em}.elementor-share-buttons--skin-boxed .elementor-share-btn,.elementor-share-buttons--skin-framed .elementor-share-btn{border-style:solid}.elementor-share-buttons--skin-gradient .elementor-share-btn__text,.elementor-share-buttons--skin-gradient.elementor-share-buttons--view-icon .elementor-share-btn__icon{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.12)),to(transparent));background-image:-webkit-linear-gradient(right,rgba(0,0,0,.12),transparent);background-image:-o-linear-gradient(right,rgba(0,0,0,.12),transparent);background-image:linear-gradient(270deg,rgba(0,0,0,.12),transparent)}.elementor-share-buttons--skin-boxed .elementor-share-btn__text,.elementor-share-buttons--skin-gradient .elementor-share-btn__text,.elementor-share-buttons--skin-minimal .elementor-share-btn__text{padding-right:.9em}.elementor-share-buttons--skin-flat .elementor-share-btn,.elementor-share-buttons--skin-gradient .elementor-share-btn{background-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--skin-flat .elementor-share-btn__icon,.elementor-share-buttons--skin-flat .elementor-share-btn__text,.elementor-share-buttons--skin-gradient .elementor-share-btn__icon,.elementor-share-buttons--skin-gradient .elementor-share-btn__text{color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg,.elementor-share-buttons--skin-flat .elementor-share-btn__text svg,.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg,.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-rounded .elementor-share-btn__icon{border-radius:.5em}.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-circle .elementor-share-btn__icon{border-radius:99.9em}.elementor-share-buttons--view-text .elementor-share-btn__text{padding-right:1em}.elementor-share-buttons--view-icon .elementor-share-btn,.elementor-share-buttons--view-text .elementor-share-btn{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-share-buttons--view-icon .elementor-share-btn__icon,.elementor-share-buttons--view-icon .elementor-share-btn__text,.elementor-share-buttons--view-text .elementor-share-btn__icon,.elementor-share-buttons--view-text .elementor-share-btn__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-share-buttons--shape-rounded .elementor-share-btn{border-radius:.5em}.elementor-share-buttons--shape-circle .elementor-share-btn{border-radius:99.9em}.elementor-share-btn{overflow:hidden;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-transition-property:background-color,border-color,-webkit-filter;transition-property:background-color,border-color,-webkit-filter;-o-transition-property:filter,background-color,border-color;transition-property:filter,background-color,border-color;transition-property:filter,background-color,border-color,-webkit-filter;height:4.5em;cursor:pointer}.elementor-share-btn,.elementor-share-btn__icon,.elementor-share-btn__text{-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.elementor-share-btn__icon,.elementor-share-btn__text{-webkit-transition-property:color,background-color;-o-transition-property:color,background-color;transition-property:color,background-color}.elementor-share-btn__icon{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:4.5em;position:relative}.elementor-share-btn__icon i{font-size:var(--e-share-buttons-icon-size,1.7em)}.elementor-share-btn__icon svg{width:var(--e-share-buttons-icon-size,1.7em);height:var(--e-share-buttons-icon-size,1.7em)}.elementor-share-btn__text{font-size:1.5em;padding-left:1em;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:100}.elementor-share-btn__title{font-weight:700;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-share-buttons{text-align:var(--alignment,inherit);-moz-text-align-last:var(--alignment,inherit);text-align-last:var(--alignment,inherit)}.elementor-widget-share-buttons.elementor-grid-0 .elementor-widget-container{font-size:0}.elementor-skin-carousel .elementor-main-swiper,.elementor-skin-coverflow .elementor-main-swiper{height:230px}.elementor-skin-slideshow .elementor-main-swiper{height:450px;position:relative}.elementor-skin-slideshow .elementor-thumbnails-swiper .elementor-custom-embed-play i{font-size:50px}.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide{cursor:pointer}.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide:not(.swiper-slide-active):after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.3)}.elementor-carousel-image{background:no-repeat 50%;-webkit-background-size:cover;background-size:cover;height:100%;position:relative}.elementor-carousel-image-overlay{position:absolute;top:0;left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;width:100%;height:100%;padding:20px;color:var(--e-carousel-image-overlay-color,#fff);background-color:rgba(129,138,145,.8);-webkit-transition:opacity .5s,-webkit-transform .5s;transition:opacity .5s,-webkit-transform .5s;-o-transition:transform .5s,opacity .5s;transition:transform .5s,opacity .5s;transition:transform .5s,opacity .5s,-webkit-transform .5s}.elementor-carousel-image-overlay i{font-size:var(--e-carousel-image-overlay-icon-size,21px)}.elementor-carousel-image-overlay svg{fill:var(--e-carousel-image-overlay-color,#fff);width:var(--e-carousel-image-overlay-icon-size,21px);height:var(--e-carousel-image-overlay-icon-size,21px)}.elementor-testimonial__image{-ms-flex-negative:0;flex-shrink:0}.elementor-testimonial__image img{border-radius:999px;-webkit-box-sizing:content-box;box-sizing:content-box;-o-object-fit:cover;object-fit:cover}.elementor-testimonial__footer,.elementor-testimonial__header{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-testimonial__footer cite,.elementor-testimonial__header cite{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;font-style:normal;font-size:14px;line-height:1.5}.elementor-testimonial__name{font-weight:700}.elementor-testimonial--layout-image_above .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline .elementor-testimonial__footer{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-testimonial--layout-image_above .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline .elementor-testimonial__image+cite{margin-right:20px}.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__footer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__image+cite{margin-left:20px;margin-right:0}.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__footer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__image+cite{margin-left:0;margin-right:20px}.elementor-testimonial--layout-image_inline .elementor-testimonial__footer{margin-top:25px}.elementor-testimonial--layout-image_above .elementor-testimonial{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.elementor-testimonial--layout-image_above .elementor-testimonial__footer{margin-bottom:25px}.elementor-testimonial--layout-image_stacked .elementor-testimonial__footer{margin-top:25px;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-testimonial--layout-image_stacked .elementor-testimonial__image,.elementor-testimonial--layout-image_stacked .elementor-testimonial cite{margin-top:15px;width:100%}.elementor-testimonial--layout-image_left .elementor-testimonial,.elementor-testimonial--layout-image_right .elementor-testimonial{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-testimonial--layout-image_left .elementor-testimonial__footer,.elementor-testimonial--layout-image_right .elementor-testimonial__footer{-ms-flex-negative:0;flex-shrink:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center}.elementor-testimonial--layout-image_left .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_right .elementor-testimonial__image+cite{margin-top:15px}.elementor-testimonial--layout-image_left.elementor-testimonial--align-center .elementor-testimonial__footer,.elementor-testimonial--layout-image_right.elementor-testimonial--align-center .elementor-testimonial__footer{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-testimonial--layout-image_left .elementor-testimonial{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-testimonial--layout-image_left .elementor-testimonial__footer{padding-left:20px}.elementor-testimonial--layout-image_right .elementor-testimonial{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-testimonial--layout-image_right .elementor-testimonial__footer{padding-right:20px}.elementor-testimonial--align-right .elementor-testimonial{text-align:right}.elementor-testimonial--align-left .elementor-testimonial{text-align:left}.elementor-testimonial--align-center .elementor-testimonial{text-align:center}.elementor-testimonial--align-center .elementor-testimonial__footer{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-testimonial--align-center.elementor-testimonial--layout-image_inline .elementor-testimonial__image+cite{text-align:right}.elementor-testimonial--skin-default.elementor-testimonial--layout-image_above .elementor-testimonial__cite,.elementor-testimonial--skin-default.elementor-testimonial--layout-image_left .elementor-testimonial__cite,.elementor-testimonial--skin-default.elementor-testimonial--layout-image_right .elementor-testimonial__cite{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-top:25px}.elementor-testimonial--skin-bubble .elementor-testimonial__content{background-color:#e6e9ec;padding:20px;position:relative}.elementor-testimonial--skin-bubble .elementor-testimonial__content:after{content:"";display:block;width:14px;height:14px;background-color:#e6e9ec;position:absolute;-webkit-transform:scaleX(.75) rotate(45deg);-ms-transform:scaleX(.75) rotate(45deg);transform:scaleX(.75) rotate(45deg);border-width:0;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above .elementor-testimonial__content:after{bottom:calc(100% - 7px);-webkit-transform:scaleX(.75) rotate(-135deg);-ms-transform:scaleX(.75) rotate(-135deg);transform:scaleX(.75) rotate(-135deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-center .elementor-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) scaleX(.75) rotate(-135deg);-ms-transform:translateX(-50%) scaleX(.75) rotate(-135deg);transform:translateX(-50%) scaleX(.75) rotate(-135deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked .elementor-testimonial__content:after{top:calc(100% - 7px)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-center .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-center .elementor-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) scaleX(.75) rotate(45deg);-ms-transform:translateX(-50%) scaleX(.75) rotate(45deg);transform:translateX(-50%) scaleX(.75) rotate(45deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-left .elementor-testimonial__content:after{left:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-right .elementor-testimonial__content:after{right:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after{-webkit-transform:scaleY(.75) rotate(135deg);-ms-transform:scaleY(.75) rotate(135deg);transform:scaleY(.75) rotate(135deg);left:-8px}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after{-webkit-transform:scaleY(.75) rotate(-45deg);-ms-transform:scaleY(.75) rotate(-45deg);transform:scaleY(.75) rotate(-45deg);right:-8px}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after{top:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__footer,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__footer{padding-top:20px}.elementor-widget-testimonial-carousel .swiper-slide{padding:20px}.elementor-widget-testimonial-carousel .elementor-testimonial__text{font-size:1.3em;font-style:italic;line-height:1.5}.elementor-widget-testimonial-carousel .elementor-testimonial__image img{width:50px;height:50px}.elementor-widget-reviews .swiper-slide{background-color:#fff;border:1px solid #e1e8ed;border-radius:5px;padding:0}.elementor-widget-reviews .elementor-testimonial__text{font-size:14px;line-height:20px}.elementor-widget-reviews .elementor-testimonial__name{color:#1c2022}.elementor-widget-reviews .elementor-testimonial__title{color:#697882;font-size:12.5px;font-weight:400;font-family:inherit}.elementor-widget-reviews .elementor-testimonial__image{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-reviews .elementor-testimonial__image img{width:36px;height:36px}.elementor-widget-reviews .elementor-testimonial__icon{margin-right:auto;font-size:17px}.elementor-widget-reviews .elementor-testimonial__icon .fa+.fa{margin-right:.15em}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon{color:var(--e-testimonial-icon-color)}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-android{--e-testimonial-icon-color:#a4c639}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-apple{--e-testimonial-icon-color:#999}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-behance{--e-testimonial-icon-color:#1769ff}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-bitbucket{--e-testimonial-icon-color:#205081}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-codepen{--e-testimonial-icon-color:#000}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-delicious{--e-testimonial-icon-color:#39f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-digg{--e-testimonial-icon-color:#005be2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-dribbble{--e-testimonial-icon-color:#ea4c89}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-envelope{--e-testimonial-icon-color:#ea4335}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-facebook{--e-testimonial-icon-color:#3b5998}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-flickr{--e-testimonial-icon-color:#0063dc}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-foursquare{--e-testimonial-icon-color:#2d5be3}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-github{--e-testimonial-icon-color:#333}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-google-plus{--e-testimonial-icon-color:#dd4b39}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-houzz{--e-testimonial-icon-color:#7ac142}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-instagram{--e-testimonial-icon-color:#262626}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-jsfiddle{--e-testimonial-icon-color:#487aa2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-linkedin{--e-testimonial-icon-color:#0077b5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-medium{--e-testimonial-icon-color:#00ab6b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-meetup{--e-testimonial-icon-color:#ec1c40}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-mixcloud{--e-testimonial-icon-color:#273a4b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-odnoklassniki{--e-testimonial-icon-color:#f4731c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-pinterest{--e-testimonial-icon-color:#bd081c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-product-hunt{--e-testimonial-icon-color:#da552f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-reddit{--e-testimonial-icon-color:#ff4500}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-rss{--e-testimonial-icon-color:#f26522}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-shopping-cart{--e-testimonial-icon-color:#4caf50}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-skype{--e-testimonial-icon-color:#00aff0}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-slideshare{--e-testimonial-icon-color:#0077b5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-snapchat{--e-testimonial-icon-color:#fffc00}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-soundcloud{--e-testimonial-icon-color:#f80}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-spotify{--e-testimonial-icon-color:#2ebd59}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stack-overflow{--e-testimonial-icon-color:#fe7a15}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-steam{--e-testimonial-icon-color:#00adee}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stumbleupon{--e-testimonial-icon-color:#eb4924}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-telegram{--e-testimonial-icon-color:#2ca5e0}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumb-tack,.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumbtack{--e-testimonial-icon-color:#1aa1d8}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tripadvisor{--e-testimonial-icon-color:#589442}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tumblr{--e-testimonial-icon-color:#35465c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitch{--e-testimonial-icon-color:#6441a5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitter{--e-testimonial-icon-color:#1da1f2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vimeo{--e-testimonial-icon-color:#1ab7ea}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vk{--e-testimonial-icon-color:#45668e}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weibo{--e-testimonial-icon-color:#dd2430}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weixin{--e-testimonial-icon-color:#31a918}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-whatsapp{--e-testimonial-icon-color:#25d366}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-wordpress{--e-testimonial-icon-color:#21759b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-xing{--e-testimonial-icon-color:#026466}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-yelp{--e-testimonial-icon-color:#af0606}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-youtube{--e-testimonial-icon-color:#cd201f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-500px{--e-testimonial-icon-color:#0099e5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon svg{fill:var(--e-testimonial-icon-color)}.elementor-widget-reviews .elementor-testimonial__rating{background-image:-webkit-gradient(linear,left top,right top,from(#ffc82c),to(#ccc));background-image:-webkit-linear-gradient(left,#ffc82c var(--rating),#ccc var(--rating));background-image:-o-linear-gradient(left,#ffc82c var(--rating),#ccc var(--rating));background-image:linear-gradient(90deg,#ffc82c var(--rating),#ccc var(--rating));font-family:eicons}.elementor-widget-reviews .elementor-testimonial__header{display:-webkit-box;display:-ms-flexbox;display:flex;padding-top:15px;padding-bottom:6px}.elementor-widget-reviews .elementor-testimonial__image+cite{margin-right:9px}.elementor-widget-reviews .elementor-testimonial__separator{margin:0 auto;border-top:0;border-bottom:1px solid #e1e8ed;height:0}.elementor-widget-reviews .elementor-testimonial__content{padding-top:6px;padding-bottom:15px}.elementor-widget-reviews .elementor-testimonial__content,.elementor-widget-reviews .elementor-testimonial__header{padding-left:15px;padding-right:15px}.elementor-widget-reviews.elementor-review--has-separator .elementor-testimonial__header{border-bottom:1px solid #e1e8ed}.swiper-pagination-bullets{color:#fff;cursor:default}.swiper-slide{will-change:transform;border-style:solid;border-width:0;-webkit-transition-duration:.5s;-o-transition-duration:.5s;transition-duration:.5s;-webkit-transition-property:border,background,-webkit-transform;transition-property:border,background,-webkit-transform;-o-transition-property:border,background,transform;transition-property:border,background,transform;transition-property:border,background,transform,-webkit-transform;overflow:hidden}.swiper-slide:not(:hover) .e-overlay-animation-fade{opacity:0}.swiper-slide:not(:hover) .e-overlay-animation-slide-up{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-down{-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-right{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-left{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.swiper-slide:not(:hover) .e-overlay-animation-zoom-in{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);opacity:0}.swiper-slide a{display:inline}.swiper-slide a.elementor-button{display:inline-block}.elementor-widget-reviews .elementor-arrows-yes .elementor-main-swiper,.elementor-widget-testimonial-carousel .elementor-arrows-yes .elementor-main-swiper{width:calc(95% - 40px)}.elementor-widget-reviews .elementor-main-swiper,.elementor-widget-testimonial-carousel .elementor-main-swiper{width:95%}.elementor-widget-reviews .swiper-wrapper,.elementor-widget-testimonial-carousel .swiper-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-widget-reviews .swiper-slide,.elementor-widget-testimonial-carousel .swiper-slide{height:auto}.elementor-widget-reviews.elementor-pagination-type-bullets .swiper-container,.elementor-widget-reviews.elementor-pagination-type-fraction .swiper-container,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .swiper-container,.elementor-widget-testimonial-carousel.elementor-pagination-type-fraction .swiper-container{padding-bottom:40px}.elementor-widget-reviews .elementor-swiper-button-prev,.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-next,.elementor-widget-testimonial-carousel .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-next{left:0;right:unset}.elementor-widget-reviews .elementor-swiper-button-next,.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel .elementor-swiper-button-next,.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-prev{right:0;left:unset}.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-next,.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-next,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-prev{top:calc(50% - (40px / 2))}.elementor-widget-media-carousel .elementor-swiper-button-prev,.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-next{left:10px;right:unset}.elementor-widget-media-carousel .elementor-swiper-button-next,.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-prev{right:10px;left:unset}.entry-content blockquote.elementor-blockquote:not(.alignright):not(.alignleft),.entry-summary blockquote.elementor-blockquote{margin-right:0;margin-left:0}.elementor-widget-blockquote blockquote{margin:0;padding:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;quotes:none;border:0;font-style:normal;color:#55595c}.elementor-widget-blockquote blockquote:after,.elementor-widget-blockquote blockquote:before,.elementor-widget-blockquote blockquote cite:after,.elementor-widget-blockquote blockquote cite:before,.elementor-widget-blockquote blockquote footer:after,.elementor-widget-blockquote blockquote footer:before{content:"";content:none}.elementor-blockquote{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-blockquote__author,.elementor-blockquote__content{margin-bottom:0;font-style:normal}.elementor-blockquote__author{font-weight:700}.elementor-blockquote footer{margin-top:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-blockquote__tweet-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;color:#1da1f2;-ms-flex-item-align:end;align-self:flex-end;line-height:1;position:relative;width:-webkit-max-content;width:-moz-max-content;width:max-content}.elementor-blockquote__tweet-button:hover{color:#0967a0}.elementor-blockquote__tweet-button span{font-weight:600}.elementor-blockquote__tweet-button i,.elementor-blockquote__tweet-button span{vertical-align:middle}.elementor-blockquote__tweet-button i+span,.elementor-blockquote__tweet-button svg+span{margin-right:.5em}.elementor-blockquote__tweet-button svg{fill:#1da1f2;height:1em;width:1em}.elementor-blockquote__tweet-label{white-space:pre-wrap}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button{padding:.7em 1.2em;border-radius:100em;background-color:#1da1f2;color:#fff;font-size:15px}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover{background-color:#0967a0;color:#fff}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover:before,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover:before{border-left-color:#0967a0}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button svg,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button svg{fill:#fff;height:1em;width:1em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button{padding:0;width:2em;height:2em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:before{content:"";border:.5em solid transparent;border-left-color:#1da1f2;position:absolute;right:-.8em;top:50%;-webkit-transform:translateY(-50%) scaleY(.65);-ms-transform:translateY(-50%) scaleY(.65);transform:translateY(-50%) scaleY(.65);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:before{right:auto;left:-.8em;border-right-color:#1da1f2;border-left-color:transparent}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:hover:before{border-right-color:#0967a0}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:before{left:auto;right:-.8em;border-right-color:transparent;border-left-color:#1da1f2}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:hover:before{border-left-color:#0967a0}.elementor-blockquote--skin-boxed .elementor-blockquote{background-color:#e6e9ec;padding:30px}.elementor-blockquote--skin-border .elementor-blockquote{border-color:#e6e9ec;border-right:7px #e6e9ec;border-style:solid;padding-right:20px}.elementor-blockquote--skin-quotation .elementor-blockquote:before{content:"“";font-size:100px;color:#e6e9ec;font-family:Times New Roman,Times,serif;font-weight:900;line-height:1;display:block;height:.6em}.elementor-blockquote--skin-quotation .elementor-blockquote__content{margin-top:15px}.elementor-blockquote--align-left .elementor-blockquote__content{text-align:left}.elementor-blockquote--align-left .elementor-blockquote footer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-blockquote--align-right .elementor-blockquote__content{text-align:right}.elementor-blockquote--align-right .elementor-blockquote footer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-blockquote--align-center .elementor-blockquote{text-align:center}.elementor-blockquote--align-center .elementor-blockquote__author,.elementor-blockquote--align-center .elementor-blockquote footer{display:block}.elementor-blockquote--align-center .elementor-blockquote__tweet-button{margin-right:auto;margin-left:auto}.elementor-headline{font-size:43px;line-height:1.2;display:block}.elementor-headline-dynamic-text{color:var(--dynamic-text-color,#aebcb9)}.elementor-headline--style-rotate .elementor-headline-dynamic-wrapper{text-align:right}.elementor-headline--style-highlight .elementor-headline-dynamic-wrapper{overflow:visible;text-align:inherit}.elementor-headline--style-highlight .elementor-headline-dynamic-text{z-index:1}.elementor-headline--style-highlight .elementor-headline-plain-text{z-index:1;position:relative}.elementor-headline--style-highlight svg{position:absolute;top:50%;left:50%;width:calc(100% + 20px);height:calc(100% + 20px);-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);overflow:visible}.elementor-headline--style-highlight svg path{stroke:red;stroke-width:9;fill:none;opacity:0;stroke-dasharray:0 1500;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-headline.e-animated svg path{-webkit-animation:elementor-headline-dash forwards;animation:elementor-headline-dash forwards;-webkit-animation-duration:var(--animation-duration,1.2s);animation-duration:var(--animation-duration,1.2s);-webkit-animation-iteration-count:1;animation-iteration-count:1}.elementor-headline.e-animated svg path:nth-of-type(2){-webkit-animation-delay:calc(var(--animation-duration, 1.2s) / 2);animation-delay:calc(var(--animation-duration, 1.2s) / 2)}.elementor-headline.e-hide-highlight svg path{opacity:1;stroke-dasharray:1500 1500;-webkit-animation:hide-highlight .4s forwards;animation:hide-highlight .4s forwards;-webkit-animation-iteration-count:1;animation-iteration-count:1}@-webkit-keyframes elementor-headline-dash{0%{stroke-dasharray:0 1500;opacity:1}to{stroke-dasharray:1500 1500;opacity:1}}@keyframes elementor-headline-dash{0%{stroke-dasharray:0 1500;opacity:1}to{stroke-dasharray:1500 1500;opacity:1}}@-webkit-keyframes hide-highlight{0%{opacity:1;stroke-dasharray:1500 1500}to{opacity:0;-webkit-filter:blur(10px);filter:blur(10px)}}@keyframes hide-highlight{0%{opacity:1;stroke-dasharray:1500 1500}to{opacity:0;-webkit-filter:blur(10px);filter:blur(10px)}}.elementor-headline-text-wrapper{vertical-align:bottom}.elementor-headline-dynamic-wrapper{display:inline-block;position:relative}.elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text{display:inline-block;position:absolute;top:0;right:0}.elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text.elementor-headline-text-active{position:relative}.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text{opacity:0;-webkit-transform-origin:50% 100%;-ms-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-transform:rotateX(0deg);transform:rotateX(0deg);-webkit-animation:elementor-headline-flip-in 1.2s;animation:elementor-headline-flip-in 1.2s}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);-webkit-animation:elementor-headline-flip-out 1.2s;animation:elementor-headline-flip-out 1.2s}@-webkit-keyframes elementor-headline-flip-in{0%{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}35%{-webkit-transform:rotateX(120deg);transform:rotateX(120deg);opacity:0}65%{opacity:0}to{-webkit-transform:rotateX(1turn);transform:rotateX(1turn);opacity:1}}@keyframes elementor-headline-flip-in{0%{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}35%{-webkit-transform:rotateX(120deg);transform:rotateX(120deg);opacity:0}65%{opacity:0}to{-webkit-transform:rotateX(1turn);transform:rotateX(1turn);opacity:1}}@-webkit-keyframes elementor-headline-flip-out{0%{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}35%{-webkit-transform:rotateX(-40deg);transform:rotateX(-40deg);opacity:1}65%{opacity:0}to{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}}@keyframes elementor-headline-flip-out{0%{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}35%{-webkit-transform:rotateX(-40deg);transform:rotateX(-40deg);opacity:1}65%{opacity:0}to{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper{vertical-align:top;overflow:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:after{content:"";position:absolute;left:0;right:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);height:90%;width:1px;background-color:#0d0d0d}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:not(.elementor-headline-typing-selected):after{-webkit-animation:elementor-headline-pulse 1s infinite;animation:elementor-headline-pulse 1s infinite}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected{background-color:var(--typing-selected-bg-color,#0d0d0d)}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected:after{visibility:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected .elementor-headline-dynamic-text{color:var(--typing-selected-color,var(--dynamic-text-color),#aebcb9)}.elementor-headline-animation-type-typing .elementor-headline-dynamic-text:not(.elementor-headline-text-active){visibility:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){position:absolute;visibility:hidden}@-webkit-keyframes elementor-headline-pulse{0%{-webkit-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);transform:translateY(-50%) scale(.9);opacity:0}to{-webkit-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);opacity:0}}@keyframes elementor-headline-pulse{0%{-webkit-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);transform:translateY(-50%) scale(.9);opacity:0}to{-webkit-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);opacity:0}}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{display:inline-block;-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text{-webkit-transform:scaleX(1.0005);-ms-transform:scaleX(1.0005);transform:scaleX(1.0005);opacity:0}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg);opacity:0}.elementor-headline-text-active .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{opacity:1}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-swirl-in .4s forwards;animation:elementor-headline-swirl-in .4s forwards}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-swirl-out .4s forwards;animation:elementor-headline-swirl-out .4s forwards}@-webkit-keyframes elementor-headline-swirl-in{0%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(-10deg);transform:translateZ(-20px) rotateX(-10deg)}to{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0deg);transform:translateZ(-20px) rotateX(0deg)}}@keyframes elementor-headline-swirl-in{0%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(-10deg);transform:translateZ(-20px) rotateX(-10deg)}to{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0deg);transform:translateZ(-20px) rotateX(0deg)}}@-webkit-keyframes elementor-headline-swirl-out{0%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0);transform:translateZ(-20px) rotateX(0)}60%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-100deg);transform:translateZ(-20px) rotateX(-100deg)}to{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-90deg);transform:translateZ(-20px) rotateX(-90deg)}}@keyframes elementor-headline-swirl-out{0%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0);transform:translateZ(-20px) rotateX(0)}60%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-100deg);transform:translateZ(-20px) rotateX(-100deg)}to{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-90deg);transform:translateZ(-20px) rotateX(-90deg)}}.elementor-headline-animation-type-slide-down .elementor-headline-text-wrapper{display:inline-block;padding:.2em 0}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper{overflow:hidden;vertical-align:top}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text{opacity:0;top:.2em}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-active{top:0;opacity:1;-webkit-animation:elementor-headline-slide-down-in .6s;animation:elementor-headline-slide-down-in .6s}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-slide-down-out .6s;animation:elementor-headline-slide-down-out .6s}@-webkit-keyframes elementor-headline-slide-down-in{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}60%{opacity:1;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes elementor-headline-slide-down-in{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}60%{opacity:1;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes elementor-headline-slide-down-out{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}60%{opacity:0;-webkit-transform:translateY(120%);transform:translateY(120%)}to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes elementor-headline-slide-down-out{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}60%{opacity:0;-webkit-transform:translateY(120%);transform:translateY(120%)}to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}}.elementor-headline-animation-type-clip .elementor-headline-text-wrapper{display:inline-block;padding:.2em 0}.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper{overflow:hidden;vertical-align:top}.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper:after{content:"";position:absolute;top:0;left:0;right:auto;width:2px;height:100%;background-color:#0d0d0d}.elementor-headline-animation-type-clip .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-clip .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-animation:elementor-headline-drop-in-in .8s;animation:elementor-headline-drop-in-in .8s}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-drop-in-out .8s;animation:elementor-headline-drop-in-out .8s}@-webkit-keyframes elementor-headline-drop-in-in{0%{opacity:0;-webkit-transform:translateZ(100px);transform:translateZ(100px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes elementor-headline-drop-in-in{0%{opacity:0;-webkit-transform:translateZ(100px);transform:translateZ(100px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes elementor-headline-drop-in-out{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translateZ(-100px);transform:translateZ(-100px)}}@keyframes elementor-headline-drop-in-out{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translateZ(-100px);transform:translateZ(-100px)}}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter{display:inline-block;-webkit-transform:rotateY(180deg);transform:rotateY(180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-headline-text-active .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-blinds-in .6s forwards;animation:elementor-headline-blinds-in .6s forwards}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-blinds-out .6s forwards;animation:elementor-headline-blinds-out .6s forwards}@-webkit-keyframes elementor-headline-blinds-in{0%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}to{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}}@keyframes elementor-headline-blinds-in{0%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}to{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}}@-webkit-keyframes elementor-headline-blinds-out{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}to{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}}@keyframes elementor-headline-blinds-out{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}to{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}}.elementor-headline-animation-type-wave .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter{display:inline-block;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-headline-text-active .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter{opacity:1}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-wave-up .6s forwards;animation:elementor-headline-wave-up .6s forwards}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-wave-down .6s forwards;animation:elementor-headline-wave-down .6s forwards}@-webkit-keyframes elementor-headline-wave-up{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}60%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes elementor-headline-wave-up{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}60%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes elementor-headline-wave-down{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}60%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}@keyframes elementor-headline-wave-down{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}60%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-animation:elementor-headline-slide-in .6s;animation:elementor-headline-slide-in .6s}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-slide-out .6s;animation:elementor-headline-slide-out .6s}@-webkit-keyframes elementor-headline-slide-in{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}60%{opacity:1;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes elementor-headline-slide-in{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}60%{opacity:1;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes elementor-headline-slide-out{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}60%{opacity:0;-webkit-transform:translateX(110%);transform:translateX(110%)}to{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes elementor-headline-slide-out{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}60%{opacity:0;-webkit-transform:translateX(110%);transform:translateX(110%)}to{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-slide .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper{-webkit-transition:width .5s;-o-transition:width .5s;transition:width .5s}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper{overflow:hidden}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text,.elementor-headline-animation-type-wave .elementor-headline-dynamic-text{white-space:nowrap}.elementor-msie .elementor-headline--style-highlight svg{top:auto;left:auto;-webkit-transform:translate(-100%);-ms-transform:translate(-100%);transform:translate(-100%)}@-webkit-keyframes e-hotspot-soft-beat{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.1);transform:scale(1.1)}}@keyframes e-hotspot-soft-beat{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.1);transform:scale(1.1)}}@-webkit-keyframes e-hotspot-expand{0%{-webkit-transform:scale(.5);transform:scale(.5);opacity:1}to{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}@keyframes e-hotspot-expand{0%{-webkit-transform:scale(.5);transform:scale(.5);opacity:1}to{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}.elementor-widget-hotspot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--background-align);-ms-flex-pack:var(--background-align);justify-content:var(--background-align)}.elementor-widget-hotspot .elementor-widget-container{position:relative;display:inline-block;width:var(--container-width);max-width:var(--container-max-width);height:var(--container-height)}.elementor-widget-hotspot .elementor-widget-container>img{display:block;width:var(--image-width,auto);height:var(--container-height);opacity:var(--opacity,1)}.e-hotspot{z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:absolute}.e-hotspot--position-left.e-hotspot--position-top{-webkit-transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)));-ms-transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)));transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)))}.e-hotspot--position-left.e-hotspot--position-bottom{-webkit-transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y));-ms-transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y));transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y))}.e-hotspot--position-right.e-hotspot--position-top{-webkit-transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)));-ms-transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)));transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)))}.e-hotspot--position-right.e-hotspot--position-bottom{-webkit-transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y));-ms-transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y));transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y))}.e-hotspot--active{z-index:2}.e-hotspot__inner-circle,.e-hotspot__outer-circle{content:"";display:inline-block;-webkit-box-sizing:content-box;box-sizing:content-box;border-radius:50%}.e-hotspot__inner-circle{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background-color:var(--hotspot-color);padding:calc(var(--hotspot-size, 18px) / 2)}.e-hotspot__outer-circle{background-color:var(--hotspot-color);padding:var(--hotspot-padding,4px)}.e-hotspot--icon .e-hotspot__button,.e-hotspot__outer-circle{width:var(--hotspot-size,18px);height:var(--hotspot-size,18px)}.e-hotspot--icon .e-hotspot__button{line-height:0;-webkit-box-sizing:content-box;box-sizing:content-box;font-size:var(--hotspot-size,18px)}.e-hotspot__icon,.e-hotspot__label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.e-hotspot__icon svg,.e-hotspot__label svg{width:var(--hotspot-size,18px);height:auto}.e-hotspot__button{cursor:pointer;position:relative;display:grid;grid-auto-flow:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--hotspot-color);font-size:var(--hotspot-size,18px);min-width:var(--hotspot-button-width);min-height:var(--hotspot-button-height)}.e-hotspot__button:before{z-index:-2;content:"";width:100%;height:100%;left:-5px;top:-5px;position:absolute;padding:5px;-webkit-box-sizing:content-box;box-sizing:content-box}.e-hotspot__button svg{fill:var(--hotspot-color)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot__button{min-width:var(--hotspot-min-width);min-height:var(--hotspot-min-height);background-color:var(--hotspot-box-color);padding:var(--hotspot-padding,4px);border-radius:var(--hotspot-border-radius,3px)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot__button:before{border-radius:var(--hotspot-border-radius,3px)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{background-color:var(--hotspot-box-color)}.e-hotspot--overlay{opacity:.7;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.e-hotspot--active .e-hotspot--overlay,.e-hotspot--overlay:hover{opacity:1}.e-hotspot--soft-beat{-webkit-animation:e-hotspot-soft-beat .7s infinite alternate;animation:e-hotspot-soft-beat .7s infinite alternate;-webkit-animation-timing-function:ease;animation-timing-function:ease}.e-hotspot--expand .e-hotspot__outer-circle,.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{-webkit-animation:e-hotspot-expand 2s infinite;animation:e-hotspot-expand 2s infinite}.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{content:"";width:100%;height:100%;position:absolute;z-index:-1;opacity:0}.e-hotspot--sequenced{-webkit-animation:fadeIn .3s;animation:fadeIn .3s;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-fill-mode:both;animation-fill-mode:both}.e-hotspot__direction-mask{overflow:hidden;position:absolute;pointer-events:none}.e-hotspot__tooltip{white-space:var(--white-space,nowrap);-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-duration:var(--tooltip-transition-duration,.5s);-o-transition-duration:var(--tooltip-transition-duration,.5s);transition-duration:var(--tooltip-transition-duration,.5s);-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;position:absolute;pointer-events:none;color:var(--tooltip-text-color,#fff);text-align:var(--tooltip-align);min-width:var(--tooltip-min-width);padding:var(--tooltip-padding,8px);border-radius:var(--tooltip-border-radius);background-color:var(--tooltip-color)}.e-hotspot__tooltip p:last-of-type{margin-bottom:0}.e-hotspot__direction-mask .e-hotspot__tooltip{-webkit-box-shadow:none!important;box-shadow:none!important;position:static}.e-hotspot--active .e-hotspot__tooltip{pointer-events:visible}.e-hotspot--fade-in-out{opacity:0}.e-hotspot--active .e-hotspot--fade-in-out{opacity:1}.e-hotspot--fade-grow{opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.e-hotspot--active .e-hotspot--fade-grow{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.e-hotspot--override-tooltip-animation-from-top,.e-hotspot--tooltip-animation-from-top{-webkit-transform:translateY(calc(-100% - 1px));-ms-transform:translateY(calc(-100% - 1px));transform:translateY(calc(-100% - 1px))}.e-hotspot--override-tooltip-animation-from-left,.e-hotspot--tooltip-animation-from-left{-webkit-transform:translate(calc(-100% - 1px));-ms-transform:translate(calc(-100% - 1px));transform:translate(calc(-100% - 1px))}.e-hotspot--override-tooltip-animation-from-right,.e-hotspot--tooltip-animation-from-right{-webkit-transform:translate(calc(100% + 1px));-ms-transform:translate(calc(100% + 1px));transform:translate(calc(100% + 1px))}.e-hotspot--override-tooltip-animation-from-bottom,.e-hotspot--tooltip-animation-from-bottom{-webkit-transform:translateY(calc(100% + 1px));-ms-transform:translateY(calc(100% + 1px));transform:translateY(calc(100% + 1px))}.e-hotspot--fade-direction{opacity:0}.e-hotspot--active .e-hotspot--fade-direction,.e-hotspot--active .e-hotspot--slide-direction{-webkit-transform:translate(0) scale(1);-ms-transform:translate(0) scale(1);transform:translate(0) scale(1);opacity:1}.e-hotspot--show-tooltip{-webkit-transition:none;-o-transition:none;transition:none;opacity:1;pointer-events:visible;-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.elementor-facebook-widget.fb_iframe_widget,.elementor-facebook-widget.fb_iframe_widget span{width:100%!important}.elementor-facebook-widget.fb_iframe_widget iframe{position:relative;width:100%!important}.elementor-facebook-widget.fb-like{height:1px}.elementor-widget-facebook-comments iframe{width:100%!important}.site-main .menu-navigation-container{overflow:visible}.elementor-item:after,.elementor-item:before{display:block;position:absolute;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transition-timing-function:cubic-bezier(.58,.3,.005,1);-o-transition-timing-function:cubic-bezier(.58,.3,.005,1);transition-timing-function:cubic-bezier(.58,.3,.005,1)}.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{opacity:0}.elementor-item-active:after,.elementor-item-active:before,.elementor-item.highlighted:after,.elementor-item.highlighted:before,.elementor-item:focus:after,.elementor-item:focus:before,.elementor-item:hover:after,.elementor-item:hover:before{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.e--pointer-double-line .elementor-item:after,.e--pointer-double-line .elementor-item:before,.e--pointer-overline .elementor-item:after,.e--pointer-overline .elementor-item:before,.e--pointer-underline .elementor-item:after,.e--pointer-underline .elementor-item:before{height:3px;width:100%;left:0;background-color:#55595c;z-index:2}.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{height:0;width:0;left:50%}.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:10px}.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{bottom:10px}.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:-10px}.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{bottom:-10px}.e--pointer-double-line.e--animation-none,.e--pointer-double-line.e--animation-none .elementor-item,.e--pointer-double-line.e--animation-none .elementor-item:after,.e--pointer-double-line.e--animation-none .elementor-item:before,.e--pointer-double-line.e--animation-none .elementor-item:focus,.e--pointer-double-line.e--animation-none .elementor-item:hover,.e--pointer-double-line.e--animation-none:after,.e--pointer-double-line.e--animation-none:before,.e--pointer-double-line.e--animation-none:focus,.e--pointer-double-line.e--animation-none:hover,.e--pointer-overline.e--animation-none,.e--pointer-overline.e--animation-none .elementor-item,.e--pointer-overline.e--animation-none .elementor-item:after,.e--pointer-overline.e--animation-none .elementor-item:before,.e--pointer-overline.e--animation-none .elementor-item:focus,.e--pointer-overline.e--animation-none .elementor-item:hover,.e--pointer-overline.e--animation-none:after,.e--pointer-overline.e--animation-none:before,.e--pointer-overline.e--animation-none:focus,.e--pointer-overline.e--animation-none:hover,.e--pointer-underline.e--animation-none,.e--pointer-underline.e--animation-none .elementor-item,.e--pointer-underline.e--animation-none .elementor-item:after,.e--pointer-underline.e--animation-none .elementor-item:before,.e--pointer-underline.e--animation-none .elementor-item:focus,.e--pointer-underline.e--animation-none .elementor-item:hover,.e--pointer-underline.e--animation-none:after,.e--pointer-underline.e--animation-none:before,.e--pointer-underline.e--animation-none:focus,.e--pointer-underline.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-double-line .elementor-item:before,.e--pointer-overline .elementor-item:before{content:"";top:0}.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{width:10px;left:-20px}.e--pointer-double-line .elementor-item:after,.e--pointer-underline .elementor-item:after{content:"";bottom:0}.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{width:10px;inset-inline-start:100%}.e--pointer-framed .elementor-item:after,.e--pointer-framed .elementor-item:before{background:transparent;left:0;top:0;bottom:0;right:0;border:3px solid #55595c}.e--pointer-framed .elementor-item:before{content:""}.e--pointer-framed.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(.75);-ms-transform:scale(.75);transform:scale(.75)}.e--pointer-framed.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(1.25);-ms-transform:scale(1.25);transform:scale(1.25)}.e--pointer-framed.e--animation-grow .elementor-item:before,.e--pointer-framed.e--animation-shrink .elementor-item:before{-webkit-transition:opacity .2s,-webkit-transform .4s;transition:opacity .2s,-webkit-transform .4s;-o-transition:opacity .2s,transform .4s;transition:opacity .2s,transform .4s;transition:opacity .2s,transform .4s,-webkit-transform .4s}.e--pointer-framed.e--animation-draw .elementor-item:after,.e--pointer-framed.e--animation-draw .elementor-item:before{width:3px;height:3px}.e--pointer-framed.e--animation-draw .elementor-item:before{border-width:0 3px 3px 0;-webkit-transition:width .1s .2s,height .1s .3s,opacity .12s .22s;-o-transition:width .1s .2s,height .1s .3s,opacity .12s .22s;transition:width .1s .2s,height .1s .3s,opacity .12s .22s}.e--pointer-framed.e--animation-draw .elementor-item:after{content:"";top:auto;bottom:0;right:auto;left:0;border-width:3px 0 0 3px;-webkit-transition:width .1s,height .1s .1s,opacity .02s .18s;-o-transition:width .1s,height .1s .1s,opacity .02s .18s;transition:width .1s,height .1s .1s,opacity .02s .18s}.e--pointer-framed.e--animation-draw .elementor-item-active:after,.e--pointer-framed.e--animation-draw .elementor-item-active:before,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,.e--pointer-framed.e--animation-draw .elementor-item:focus:after,.e--pointer-framed.e--animation-draw .elementor-item:focus:before,.e--pointer-framed.e--animation-draw .elementor-item:hover:after,.e--pointer-framed.e--animation-draw .elementor-item:hover:before{width:100%;height:100%}.e--pointer-framed.e--animation-draw .elementor-item-active:before,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,.e--pointer-framed.e--animation-draw .elementor-item:focus:before,.e--pointer-framed.e--animation-draw .elementor-item:hover:before{-webkit-transition:opacity .02s,height .1s,width .1s .1s;-o-transition:opacity .02s,height .1s,width .1s .1s;transition:opacity .02s,height .1s,width .1s .1s}.e--pointer-framed.e--animation-draw .elementor-item-active:after,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,.e--pointer-framed.e--animation-draw .elementor-item:focus:after,.e--pointer-framed.e--animation-draw .elementor-item:hover:after{-webkit-transition:opacity .02s .2s,height .1s .2s,width .1s .3s;-o-transition:opacity .02s .2s,height .1s .2s,width .1s .3s;transition:opacity .02s .2s,height .1s .2s,width .1s .3s}.e--pointer-framed.e--animation-corners .elementor-item:after,.e--pointer-framed.e--animation-corners .elementor-item:before{width:3px;height:3px}.e--pointer-framed.e--animation-corners .elementor-item:before{border-width:3px 3px 0 0}.e--pointer-framed.e--animation-corners .elementor-item:after{content:"";top:auto;bottom:0;right:auto;left:0;border-width:0 0 3px 3px}.e--pointer-framed.e--animation-corners .elementor-item-active:after,.e--pointer-framed.e--animation-corners .elementor-item-active:before,.e--pointer-framed.e--animation-corners .elementor-item.highlighted:after,.e--pointer-framed.e--animation-corners .elementor-item.highlighted:before,.e--pointer-framed.e--animation-corners .elementor-item:focus:after,.e--pointer-framed.e--animation-corners .elementor-item:focus:before,.e--pointer-framed.e--animation-corners .elementor-item:hover:after,.e--pointer-framed.e--animation-corners .elementor-item:hover:before{width:100%;height:100%;-webkit-transition:opacity 2ms,width .4s,height .4s;-o-transition:opacity 2ms,width .4s,height .4s;transition:opacity 2ms,width .4s,height .4s}.e--pointer-framed.e--animation-none,.e--pointer-framed.e--animation-none .elementor-item,.e--pointer-framed.e--animation-none .elementor-item:after,.e--pointer-framed.e--animation-none .elementor-item:before,.e--pointer-framed.e--animation-none .elementor-item:focus,.e--pointer-framed.e--animation-none .elementor-item:hover,.e--pointer-framed.e--animation-none:after,.e--pointer-framed.e--animation-none:before,.e--pointer-framed.e--animation-none:focus,.e--pointer-framed.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-background .elementor-item:after,.e--pointer-background .elementor-item:before{content:"";-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.e--pointer-background .elementor-item:before{top:0;left:0;right:0;bottom:0;background:#55595c;z-index:-1}.e--pointer-background .elementor-item-active,.e--pointer-background .elementor-item.highlighted,.e--pointer-background .elementor-item:focus,.e--pointer-background .elementor-item:hover{color:#fff}.e--pointer-background.e--animation-grow .elementor-item:before{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}.e--pointer-background.e--animation-grow .elementor-item-active:before,.e--pointer-background.e--animation-grow .elementor-item.highlighted:before,.e--pointer-background.e--animation-grow .elementor-item:focus:before,.e--pointer-background.e--animation-grow .elementor-item:hover:before{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.e--pointer-background.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.e--pointer-background.e--animation-shrink .elementor-item-active:before,.e--pointer-background.e--animation-shrink .elementor-item.highlighted:before,.e--pointer-background.e--animation-shrink .elementor-item:focus:before,.e--pointer-background.e--animation-shrink .elementor-item:hover:before{-webkit-transition:opacity .15s,-webkit-transform .4s;transition:opacity .15s,-webkit-transform .4s;-o-transition:opacity .15s,transform .4s;transition:opacity .15s,transform .4s;transition:opacity .15s,transform .4s,-webkit-transform .4s}.e--pointer-background.e--animation-sweep-left .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{left:100%}.e--pointer-background.e--animation-sweep-right .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{right:100%}.e--pointer-background.e--animation-sweep-up .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:100%}.e--pointer-background.e--animation-sweep-down .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{bottom:100%}.e--pointer-background.e--animation-shutter-out-vertical .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{bottom:50%;top:50%}.e--pointer-background.e--animation-shutter-out-horizontal .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{right:50%;left:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after{top:0;left:0;right:0;bottom:0;background:#55595c;z-index:-1}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:before{top:0;bottom:100%}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after{top:100%;bottom:0}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:before{bottom:50%}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:after{top:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:before{right:0;left:100%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after{right:100%;left:0}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:before{left:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:after{right:50%}.e--pointer-background.e--animation-none,.e--pointer-background.e--animation-none .elementor-item,.e--pointer-background.e--animation-none .elementor-item:after,.e--pointer-background.e--animation-none .elementor-item:before,.e--pointer-background.e--animation-none .elementor-item:focus,.e--pointer-background.e--animation-none .elementor-item:hover,.e--pointer-background.e--animation-none:after,.e--pointer-background.e--animation-none:before,.e--pointer-background.e--animation-none:focus,.e--pointer-background.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-text.e--animation-skew .elementor-item:focus,.e--pointer-text.e--animation-skew .elementor-item:hover{-webkit-transform:skew(-8deg);-ms-transform:skew(-8deg);transform:skew(-8deg)}.e--pointer-text.e--animation-grow .elementor-item:focus,.e--pointer-text.e--animation-grow .elementor-item:hover{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.e--pointer-text.e--animation-shrink .elementor-item:focus,.e--pointer-text.e--animation-shrink .elementor-item:hover{-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}.e--pointer-text.e--animation-float .elementor-item:focus,.e--pointer-text.e--animation-float .elementor-item:hover{-webkit-transform:translateY(-8px);-ms-transform:translateY(-8px);transform:translateY(-8px)}.e--pointer-text.e--animation-sink .elementor-item:focus,.e--pointer-text.e--animation-sink .elementor-item:hover{-webkit-transform:translateY(8px);-ms-transform:translateY(8px);transform:translateY(8px)}.e--pointer-text.e--animation-rotate .elementor-item:focus,.e--pointer-text.e--animation-rotate .elementor-item:hover{-webkit-transform:rotate(6deg);-ms-transform:rotate(6deg);transform:rotate(6deg)}.e--pointer-text.e--animation-none,.e--pointer-text.e--animation-none .elementor-item,.e--pointer-text.e--animation-none .elementor-item:after,.e--pointer-text.e--animation-none .elementor-item:before,.e--pointer-text.e--animation-none .elementor-item:focus,.e--pointer-text.e--animation-none .elementor-item:hover,.e--pointer-text.e--animation-none:after,.e--pointer-text.e--animation-none:before,.e--pointer-text.e--animation-none:focus,.e--pointer-text.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.elementor-nav-menu--main .elementor-nav-menu a{-webkit-transition:.4s;-o-transition:.4s;transition:.4s}.elementor-nav-menu--main .elementor-nav-menu a,.elementor-nav-menu--main .elementor-nav-menu a.highlighted,.elementor-nav-menu--main .elementor-nav-menu a:focus,.elementor-nav-menu--main .elementor-nav-menu a:hover{padding:13px 20px}.elementor-nav-menu--main .elementor-nav-menu a.current{background:#373a3c;color:#fff}.elementor-nav-menu--main .elementor-nav-menu a.disabled{background:#55595c;color:#a1a6a9}.elementor-nav-menu--main .elementor-nav-menu ul{position:absolute;width:12em;border-width:0;border-style:solid;padding:0}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down,.elementor-nav-menu--main .elementor-nav-menu span.scroll-up{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:20px}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow,.elementor-nav-menu--main .elementor-nav-menu span.scroll-up-arrow{position:absolute;top:-2px;right:50%;margin-right:-8px;width:0;height:0;overflow:hidden;border:8px dashed transparent;border-bottom:8px solid #494c4f}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow{top:6px;border-style:solid dashed dashed;border-color:#494c4f transparent transparent}.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow i{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow .e-font-icon-svg{height:1em;width:1em}.elementor-nav-menu--layout-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-nav-menu--layout-horizontal .elementor-nav-menu{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-nav-menu--layout-horizontal .elementor-nav-menu a{white-space:nowrap;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li>.scroll-down,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li ul{top:100%!important}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>a{-webkit-margin-start:var(--e-nav-menu-horizontal-menu-item-margin);margin-inline-start:var(--e-nav-menu-horizontal-menu-item-margin)}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>.scroll-down,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>.scroll-up,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>ul{right:var(--e-nav-menu-horizontal-menu-item-margin)!important}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:last-child)>a{-webkit-margin-end:var(--e-nav-menu-horizontal-menu-item-margin);margin-inline-end:var(--e-nav-menu-horizontal-menu-item-margin)}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:last-child):after{content:var(--e-nav-menu-divider-content,none);height:var(--e-nav-menu-divider-height,35%);border-left:var(--e-nav-menu-divider-width,2px) var(--e-nav-menu-divider-style,solid) var(--e-nav-menu-divider-color,#000);border-bottom-color:var(--e-nav-menu-divider-color,#000);border-right-color:var(--e-nav-menu-divider-color,#000);border-top-color:var(--e-nav-menu-divider-color,#000);-ms-flex-item-align:center;align-self:center}.elementor-nav-menu__align-right .elementor-nav-menu{margin-left:auto}.elementor-nav-menu__align-right .elementor-nav-menu,.elementor-nav-menu__align-right .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-nav-menu__align-left .elementor-nav-menu{margin-right:auto}.elementor-nav-menu__align-left .elementor-nav-menu,.elementor-nav-menu__align-left .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-nav-menu__align-center .elementor-nav-menu{margin-left:auto;margin-right:auto}.elementor-nav-menu__align-center .elementor-nav-menu,.elementor-nav-menu__align-center .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu{width:100%}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu>li{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-nav-menu:not(.elementor-nav-menu--toggle) .elementor-menu-toggle{display:none}.elementor-widget-nav-menu .elementor-widget-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-nav-menu{position:relative;z-index:2}.elementor-nav-menu:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.elementor-nav-menu,.elementor-nav-menu li,.elementor-nav-menu ul{display:block;list-style:none;margin:0;padding:0;line-height:normal;-webkit-tap-highlight-color:rgba(0,0,0,0)}.elementor-nav-menu ul{display:none}.elementor-nav-menu ul ul a,.elementor-nav-menu ul ul a:active,.elementor-nav-menu ul ul a:focus,.elementor-nav-menu ul ul a:hover{border-left:16px solid transparent}.elementor-nav-menu ul ul ul a,.elementor-nav-menu ul ul ul a:active,.elementor-nav-menu ul ul ul a:focus,.elementor-nav-menu ul ul ul a:hover{border-left:24px solid transparent}.elementor-nav-menu ul ul ul ul a,.elementor-nav-menu ul ul ul ul a:active,.elementor-nav-menu ul ul ul ul a:focus,.elementor-nav-menu ul ul ul ul a:hover{border-left:32px solid transparent}.elementor-nav-menu ul ul ul ul ul a,.elementor-nav-menu ul ul ul ul ul a:active,.elementor-nav-menu ul ul ul ul ul a:focus,.elementor-nav-menu ul ul ul ul ul a:hover{border-left:40px solid transparent}.elementor-nav-menu a,.elementor-nav-menu li{position:relative}.elementor-nav-menu li{border-width:0}.elementor-nav-menu a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-nav-menu a,.elementor-nav-menu a:focus,.elementor-nav-menu a:hover{padding:10px 20px;line-height:20px}.elementor-nav-menu a.current{background:#373a3c;color:#fff}.elementor-nav-menu a.disabled{cursor:not-allowed;color:#a1a6a9}.elementor-nav-menu .e-plus-icon:before{content:"+"}.elementor-nav-menu .sub-arrow{line-height:1;padding:10px 10px 10px 0;margin-top:-10px;margin-bottom:-10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-nav-menu .sub-arrow i{pointer-events:none}.elementor-nav-menu .sub-arrow .fa.fa-chevron-down,.elementor-nav-menu .sub-arrow .fas.fa-chevron-down{font-size:.7em}.elementor-nav-menu .sub-arrow .e-font-icon-svg{height:1em;width:1em}.elementor-nav-menu .sub-arrow .e-font-icon-svg.fa-svg-chevron-down{height:.7em;width:.7em}.elementor-nav-menu--dropdown .elementor-item.elementor-item-active,.elementor-nav-menu--dropdown .elementor-item.highlighted,.elementor-nav-menu--dropdown .elementor-item:focus,.elementor-nav-menu--dropdown .elementor-item:hover,.elementor-sub-item.elementor-item-active,.elementor-sub-item.highlighted,.elementor-sub-item:focus,.elementor-sub-item:hover{background-color:#55595c;color:#fff}.elementor-menu-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:22px;padding:.25em;cursor:pointer;border:0 solid;border-radius:3px;background-color:rgba(0,0,0,.05);color:#494c4f}.elementor-menu-toggle.elementor-active .elementor-menu-toggle__icon--open,.elementor-menu-toggle:not(.elementor-active) .elementor-menu-toggle__icon--close{display:none}.elementor-menu-toggle .e-font-icon-svg{fill:#494c4f;height:1em;width:1em}.elementor-nav-menu--dropdown{background-color:#fff;font-size:13px}.elementor-nav-menu--dropdown-none .elementor-menu-toggle,.elementor-nav-menu--dropdown-none .elementor-nav-menu--dropdown{display:none}.elementor-nav-menu--dropdown.elementor-nav-menu__container{margin-top:10px;-webkit-transition:max-height .3s,-webkit-transform .3s;transition:max-height .3s,-webkit-transform .3s;-o-transition:max-height .3s,transform .3s;transition:max-height .3s,transform .3s;transition:max-height .3s,transform .3s,-webkit-transform .3s;-webkit-transform-origin:top;-ms-transform-origin:top;transform-origin:top;overflow:auto}.elementor-nav-menu--dropdown.elementor-nav-menu__container .elementor-sub-item{font-size:.85em}.elementor-nav-menu--dropdown a{color:#494c4f}.elementor-nav-menu--dropdown a.current{background:#373a3c;color:#fff}.elementor-nav-menu--dropdown a.disabled{color:#b3b3b3}ul.elementor-nav-menu--dropdown a,ul.elementor-nav-menu--dropdown a:focus,ul.elementor-nav-menu--dropdown a:hover{text-shadow:none;border-right:8px solid transparent}.elementor-nav-menu__text-align-center .elementor-nav-menu--dropdown .elementor-nav-menu a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-nav-menu--toggle .elementor-menu-toggle:not(.elementor-active)+.elementor-nav-menu__container{-webkit-transform:scaleY(0);-ms-transform:scaleY(0);transform:scaleY(0);max-height:0}.elementor-nav-menu--toggle .elementor-menu-toggle.elementor-active+.elementor-nav-menu__container{-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);max-height:100vh}.elementor-nav-menu--stretch .elementor-nav-menu__container.elementor-nav-menu--dropdown{position:absolute;z-index:9997}@media (max-width:767px){.elementor-nav-menu--dropdown-mobile .elementor-nav-menu--main{display:none}}@media (min-width:768px){.elementor-nav-menu--dropdown-mobile .elementor-menu-toggle,.elementor-nav-menu--dropdown-mobile .elementor-nav-menu--dropdown{display:none}}@media (max-width:-1px){.elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--main{display:none}}@media (min-width:-1px){.elementor-nav-menu--dropdown-mobile_extra .elementor-menu-toggle,.elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--dropdown{display:none}}@media (min-width:1025px){.elementor-nav-menu--dropdown-tablet .elementor-menu-toggle,.elementor-nav-menu--dropdown-tablet .elementor-nav-menu--dropdown{display:none}}@media (max-width:1024px){.elementor-nav-menu--dropdown-tablet .elementor-nav-menu--main{display:none}}@media (max-width:-1px){.elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--main{display:none}}@media (min-width:-1px){.elementor-nav-menu--dropdown-tablet_extra .elementor-menu-toggle,.elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--dropdown{display:none}}.elementor-gallery__container{min-height:1px}.elementor-gallery-item{position:relative;overflow:hidden;display:block;text-decoration:none;border:solid var(--image-border-width) var(--image-border-color);border-radius:var(--image-border-radius)}.elementor-gallery-item__content,.elementor-gallery-item__overlay{height:100%;width:100%;position:absolute;top:0;left:0}.elementor-gallery-item__overlay{mix-blend-mode:var(--overlay-mix-blend-mode);-webkit-transition-duration:var(--overlay-transition-duration);-o-transition-duration:var(--overlay-transition-duration);transition-duration:var(--overlay-transition-duration);-webkit-transition-property:mix-blend-mode,opacity,background-color,-webkit-transform;transition-property:mix-blend-mode,opacity,background-color,-webkit-transform;-o-transition-property:mix-blend-mode,transform,opacity,background-color;transition-property:mix-blend-mode,transform,opacity,background-color;transition-property:mix-blend-mode,transform,opacity,background-color,-webkit-transform}.elementor-gallery-item__image.e-gallery-image{-webkit-transition-duration:var(--image-transition-duration);-o-transition-duration:var(--image-transition-duration);transition-duration:var(--image-transition-duration);-webkit-transition-property:-webkit-filter,-webkit-transform;transition-property:-webkit-filter,-webkit-transform;-o-transition-property:filter,transform;transition-property:filter,transform;transition-property:filter,transform,-webkit-filter,-webkit-transform}.elementor-gallery-item__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:var(--content-justify-content,center);-ms-flex-pack:var(--content-justify-content,center);justify-content:var(--content-justify-content,center);-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:var(--content-text-align);padding:var(--content-padding)}.elementor-gallery-item__content>div{-webkit-transition-duration:var(--content-transition-duration);-o-transition-duration:var(--content-transition-duration);transition-duration:var(--content-transition-duration)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(2){-webkit-transition-delay:calc((var(--content-transition-delay) / 3));-o-transition-delay:calc((var(--content-transition-delay) / 3));transition-delay:calc((var(--content-transition-delay) / 3))}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(3){-webkit-transition-delay:calc((var(--content-transition-delay) / 3) * 2);-o-transition-delay:calc((var(--content-transition-delay) / 3) * 2);transition-delay:calc((var(--content-transition-delay) / 3) * 2)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(4){-webkit-transition-delay:calc((var(--content-transition-delay) / 3) * 3);-o-transition-delay:calc((var(--content-transition-delay) / 3) * 3);transition-delay:calc((var(--content-transition-delay) / 3) * 3)}.elementor-gallery-item__description{color:var(--description-text-color,#fff);width:100%}.elementor-gallery-item__title{color:var(--title-text-color,#fff);font-weight:700;width:100%}.elementor-gallery__titles-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:var(--titles-container-justify-content,center);-ms-flex-pack:var(--titles-container-justify-content,center);justify-content:var(--titles-container-justify-content,center);margin-bottom:20px}.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:after,.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:before{background-color:var(--galleries-pointer-bg-color-hover)}.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:after,.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:before{background-color:var(--galleries-pointer-bg-color-active)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item:before{border-color:var(--galleries-pointer-bg-color-hover);border-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item:after{border-color:var(--galleries-pointer-bg-color-hover)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:after,.elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:before{border-color:var(--galleries-pointer-bg-color-active)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:before{border-left-width:var(--galleries-pointer-border-width);border-bottom-width:var(--galleries-pointer-border-width);border-right-width:0;border-top-width:0}.elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:after{border-left-width:0;border-bottom-width:0;border-right-width:var(--galleries-pointer-border-width);border-top-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:before{border-left-width:var(--galleries-pointer-border-width);border-bottom-width:0;border-right-width:0;border-top-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:after{border-left-width:0;border-bottom-width:var(--galleries-pointer-border-width);border-right-width:var(--galleries-pointer-border-width);border-top-width:0}.elementor-gallery__titles-container .e--pointer-double-line .elementor-item:after,.elementor-gallery__titles-container .e--pointer-double-line .elementor-item:before,.elementor-gallery__titles-container .e--pointer-overline .elementor-item:before,.elementor-gallery__titles-container .e--pointer-underline .elementor-item:after{height:var(--galleries-pointer-border-width)}.elementor-gallery-title{--space-between:10px;cursor:pointer;color:#6d7882;font-weight:500;position:relative;padding:7px 14px;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.elementor-gallery-title--active{color:#495157}.elementor-gallery-title:not(:last-child){margin-left:var(--space-between)}.elementor-gallery-item__title+.elementor-gallery-item__description{margin-top:var(--description-margin-top)}.e-gallery-item.elementor-gallery-item{-webkit-transition-property:all;-o-transition-property:all;transition-property:all}.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-bottom,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-left,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-right,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-top,.e-gallery-item:hover .elementor-gallery__item-overlay-bg,.e-gallery-item:hover .elementor-gallery__item-overlay-content,.e-gallery-item:hover .elementor-gallery__item-overlay-content__description,.e-gallery-item:hover .elementor-gallery__item-overlay-content__title{opacity:1}a.elementor-item.elementor-gallery-title{color:var(--galleries-title-color-normal)}a.elementor-item.elementor-gallery-title.elementor-item-active,a.elementor-item.elementor-gallery-title.highlighted,a.elementor-item.elementor-gallery-title:focus,a.elementor-item.elementor-gallery-title:hover{color:var(--galleries-title-color-hover)}a.elementor-item.elementor-gallery-title.elementor-item-active{color:var(--gallery-title-color-active)}.elementor-widget-table-of-contents .elementor-toc__header-title{color:var(--header-color)}.elementor-widget-table-of-contents.elementor-toc--collapsed .elementor-toc__toggle-button--collapse,.elementor-widget-table-of-contents:not(.elementor-toc--collapsed) .elementor-toc__toggle-button--expand{display:none}.elementor-widget-table-of-contents .elementor-widget-container{min-height:var(--box-min-height);border:var(--box-border-width,1px) solid var(--box-border-color,#a4afb7);border-radius:var(--box-border-radius,3px);background-color:var(--box-background-color);-webkit-transition:min-height .4s;-o-transition:min-height .4s;transition:min-height .4s;overflow:hidden}.elementor-toc__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:var(--box-padding,20px);background-color:var(--header-background-color);border-bottom:var(--separator-width,1px) solid var(--box-border-color,#a4afb7)}.elementor-toc__header-title{font-size:18px;margin:0;color:var(--header-color)}.elementor-toc__toggle-button{cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-toc__toggle-button i{color:var(--toggle-button-color)}.elementor-toc__toggle-button svg{height:1em;width:1em;fill:var(--toggle-button-color)}.elementor-toc__spinner-container{text-align:center}.elementor-toc__spinner{font-size:2em}.elementor-toc__spinner.e-font-icon-svg{height:1em;width:1em}.elementor-toc__body{padding:var(--box-padding,20px);max-height:var(--toc-body-max-height);overflow-y:auto}.elementor-toc__body::-webkit-scrollbar{width:7px}.elementor-toc__body::-webkit-scrollbar-thumb{background-color:#c2cbd2;border-radius:10px}.elementor-toc__list-wrapper{list-style:none;padding:0}.elementor-toc__list-item{margin-bottom:.5em}.elementor-toc__list-item.elementor-item-active{font-weight:700}.elementor-toc__list-item .elementor-toc__list-wrapper{margin-top:.5em;margin-right:var(--nested-list-indent,1em)}.elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}.elementor-toc__list-item-text-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-toc__list-item-text-wrapper:before,.elementor-toc__list-item-text-wrapper i{margin-left:8px;color:var(--marker-color)}.elementor-toc__list-item-text-wrapper svg{margin-left:8px;fill:var(--marker-color);height:var(--marker-size,.5em);width:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper i{font-size:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper:before{font-size:var(--marker-size,1em)}.elementor-toc--content-ellipsis .elementor-toc__list-item-text{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-toc__list-items--collapsible>.elementor-toc__list-wrapper>.elementor-toc__list-item>.elementor-toc__list-wrapper{display:none}.elementor-toc__heading-anchor{position:absolute}.elementor-toc__body .elementor-toc__list-item-text{color:var(--item-text-color);-webkit-text-decoration:var(--item-text-decoration);text-decoration:var(--item-text-decoration)}.elementor-toc__body .elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__body .elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}ol.elementor-toc__list-wrapper{counter-reset:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item{counter-increment:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper:before{content:counters(item,".") ". "}@media only screen and (max-width:-1px){.elementor-toc--minimized-on-tablet_extra .elementor-toc__body{display:none}}@media only screen and (max-width:1024px){.elementor-toc--minimized-on-tablet .elementor-toc__body{display:none}}@media only screen and (max-width:-1px){.elementor-toc--minimized-on-mobile_extra .elementor-toc__body{display:none}}@media only screen and (max-width:767px){.elementor-toc--minimized-on-mobile .elementor-toc__body{display:none}}.e-lottie__container{display:inline-block;max-width:var(--lottie-container-max-width);width:var(--lottie-container-width);opacity:var(--lottie-container-opacity)}.e-lottie__container:hover{opacity:var(--lottie-container-opacity-hover);-webkit-transition-duration:var(--lottie-container-transition-duration-hover);-o-transition-duration:var(--lottie-container-transition-duration-hover);transition-duration:var(--lottie-container-transition-duration-hover)}.e-lottie__container svg,.e-lottie__container svg *{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}.e-lottie__caption{color:var(--caption-color);margin-top:var(--caption-margin-top);text-align:var(--caption-text-align)}.e-tabs-inner-tabs{text-align:right;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:16px}.e-tabs-inner-tabs .e-tab-content{padding-top:32px}.e-tabs-inner-tabs .e-inner-tabs-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;overflow:hidden;z-index:1}.e-tabs-inner-tabs .e-inner-tabs-wrapper :after{content:"";width:100%;height:var(--inner-tabs-border-height,1px);background-color:var(--inner-tabs-border-color,#d5dadf);position:absolute;bottom:0;z-index:-1}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title{font-weight:700;min-width:140px;line-height:38px;height:38px;-webkit-box-sizing:content-box;box-sizing:content-box}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title a{color:#6d7882;padding:0 36px;display:block;text-align:center}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active{border-color:#495157 #495157 transparent;border-left-width:0;border-bottom:1px solid #495157;border-right-width:0;border-top-width:0}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active a{color:#495157}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content{display:none;padding:20px}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-text{color:#556068}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.e-inner-tab-active{display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons{margin-top:24px;display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons button{display:none;font-weight:500;line-height:24px;text-decoration:underline;border:none;background:transparent;padding:0}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible .e-inner-tab-text{overflow:hidden}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible.show-inner-tab-buttons .e-inner-tab-buttons,.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button.show-button{display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.show-full-height div.e-inner-tab-text{height:auto}@media (max-width:767px){.e-tabs-inner-tabs>.e-tab-content:first-child{padding-top:24px}.e-tabs-inner-tabs .e-inner-tabs-wrapper{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper{border:solid #d5dadf;border-width:1px 1px 0}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title{border:solid #d5dadf;border-width:0 0 1px;font-size:16px;font-weight:700;text-align:center;height:38px;line-height:38px;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0 10px;cursor:pointer;display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content{border:solid #d5dadf;border-width:0 0 1px;padding:20px}}.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}@media (max-width:767px){.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.elementor-widget-video-playlist{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif}.elementor-widget-video-playlist .e-tabs{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-widget-video-playlist .e-tabs-main-area{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;height:434px}.elementor-widget-video-playlist .e-tabs-wrapper{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:33%}.elementor-widget-video-playlist .e-tabs-header{background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;min-height:56px;border-bottom:1px solid #d5dadf}.elementor-widget-video-playlist .e-tabs-header .e-tabs-header-right-side{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-title{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;-o-text-overflow:ellipsis;text-overflow:ellipsis;font-weight:700;font-size:16px;padding:10px 0;overflow-wrap:anywhere;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin:auto 0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count{font-size:14px;-ms-flex-negative:0;flex-shrink:0;font-weight:400;line-height:20px;-ms-flex-item-align:start;align-self:flex-start;padding:18px 0 0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button{display:none;margin:auto 0 auto 8px;cursor:pointer;padding:0 4px}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button.e-font-icon-svg{height:1em;width:1em}.elementor-widget-video-playlist .e-tabs-header .rotate-up{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-widget-video-playlist .e-tabs-header .rotate-down{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-widget-video-playlist .e-tabs-items-wrapper{background-color:#fff;overflow:hidden;position:relative;height:100%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items{overflow:auto;height:100%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-section-title{border-color:#d5dadf;font-size:14px;height:36px;padding:0 16px;line-height:36px;margin:0;text-align:right;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border-width:0;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title{background-color:#fff;border-color:#d5dadf;border-width:0 0 1px;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:14px;height:55px;line-height:55px;outline:none;padding:0 16px;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i{text-shadow:0 0 3px #000;color:#fff;font-size:var(--playlist-item-icon-size,16px)}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg{text-shadow:0 0 3px #000;color:#fff;fill:#fff;width:var(--playlist-item-icon-size,16px);height:var(--playlist-item-icon-size,16px)}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg path{fill:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover{background-color:#f1f3f5;border-color:#d5dadf;border-width:0 0 1px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg{text-shadow:0 0 3px #000;color:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg path,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg path{fill:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active .e-tab-title-text,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover .e-tab-title-text{font-size:14px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-play,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail{background-color:#d5dadf;position:relative;margin:auto 0;-ms-flex-negative:0;flex-shrink:0;width:75px;height:42px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail img{-o-object-fit:fill;object-fit:fill;width:75px;height:42px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail svg{position:absolute;bottom:4px;right:4px;font-weight:900}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-title-text{font-size:14px;margin:auto 8px;text-align:right;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg{margin:auto 0;vertical-align:middle}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-duration{font-size:14px;margin:auto 0}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-play{display:none}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-watched{display:block}.elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top{display:none;height:98px;position:absolute;top:0;width:100%;pointer-events:none;background:-webkit-gradient(linear,left bottom,left top,from(transparent),to(#fff));background:-webkit-linear-gradient(bottom,transparent,#fff);background:-o-linear-gradient(bottom,transparent 0,#fff 100%);background:linear-gradient(0deg,transparent,#fff)}.elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom{display:none;height:98px;position:absolute;bottom:0;width:100%;background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(#fff));background:-webkit-linear-gradient(top,transparent,#fff);background:-o-linear-gradient(top,transparent 0,#fff 100%);background:linear-gradient(180deg,transparent,#fff);pointer-events:none}.elementor-widget-video-playlist .e-tabs-items-wrapper.bottom-shadow .shadow-bottom,.elementor-widget-video-playlist .e-tabs-items-wrapper.top-shadow .shadow-top{display:block}.elementor-widget-video-playlist .e-tabs-content-wrapper{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;height:100%;position:relative}.elementor-widget-video-playlist .e-tabs-content-wrapper .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center;position:absolute;top:0;left:0;width:100%;height:100%;-webkit-background-size:cover;background-size:cover;background-position:50%}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-mobile-title{display:none}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content{background-color:#000;display:none;height:100%;outline:none}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content>div{height:100%}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content iframe{height:100%;max-height:100%!important;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content video{height:100%;background-color:#000}.elementor-widget-video-playlist .e-tabs-inner-tabs .e-tab-content{display:none;outline:none}@media (max-width:767px){.elementor-widget-video-playlist .e-tabs-main-area{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;height:auto}.elementor-widget-video-playlist .e-tabs-main-area .e-tabs-content-wrapper{border:none;height:38%}.elementor-widget-video-playlist .e-tabs-wrapper{width:auto;height:62%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items{max-height:248px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items .e-tab-title{border:none}.elementor-widget-video-playlist .e-tabs-header{min-height:48px}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count{margin:0 6px;padding:14px 0 0}.elementor-widget-video-playlist .e-tab-content{border:none;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex}}.elementor-payment-button{border:none}.elementor-scrolling-tracker{--scrolling-track-default-progress-color:#61ce70;--scrolling-track-default-color:#eee;--scrolling-track-precentage-default-color:$black}.elementor-scrolling-tracker-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:var(--horizontal-height,20px);padding:var(--tracker-padding);-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-left:var(--horizontal-border-left-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-bottom:var(--horizontal-border-bottom-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-right:var(--horizontal-border-right-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-top:var(--horizontal-border-top-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-radius:var(--border-radius);background-color:var(--scrolling-track-default-color);direction:var(--direction)}.elementor-scrolling-tracker-horizontal .current-progress{display:none;height:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;border-radius:var(--progress-border-radius);border-left:var(--horizontal-progress-border-left-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-bottom:var(--horizontal-progress-border-bottom-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-right:var(--horizontal-progress-border-right-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-top:var(--horizontal-progress-border-top-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);background-color:var(--scrolling-track-default-progress-color)}.elementor-scrolling-tracker-horizontal .current-progress .current-progress-percentage{inset-inline-end:.5em;inset-inline-start:auto;position:absolute;direction:var(--text-direction);color:var(--percentage-color,var(--scrolling-track-precentage-default-color))}.elementor-scrolling-tracker-circular{display:-webkit-box;display:-ms-flexbox;display:flex;width:var(--circular-width,100px);height:var(--circular-height,100px);-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:auto;margin-inline-end:auto}.elementor-scrolling-tracker-circular .current-progress-percentage{position:absolute;color:var(--percentage-color,var(--scrolling-track-precentage-default-color))}.elementor-scrolling-tracker-circular svg{position:absolute}.elementor-scrolling-tracker-circular .current-progress{display:none;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;stroke:var(--circular-color,var(--scrolling-track-default-progress-color));fill:transparent;stroke-width:var(--circular-progress-width,4px)}.elementor-scrolling-tracker-circular .circle{stroke:var(--circular-background-color,var(--scrolling-track-default-color));fill:transparent;stroke-width:var(--circular-background-width,4px)}.elementor-scrolling-tracker-alignment-left{margin-left:0;margin-right:auto}.elementor-scrolling-tracker-alignment-center{margin-left:auto;margin-right:auto}.elementor-scrolling-tracker-alignment-right{margin-left:auto;margin-right:0}assets/css/widget-blockquote.min.css000064400000013262150755004320013570 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
@charset "UTF-8";.entry-content blockquote.elementor-blockquote:not(.alignright):not(.alignleft),.entry-summary blockquote.elementor-blockquote{margin-right:0;margin-left:0}.elementor-widget-blockquote blockquote{margin:0;padding:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;quotes:none;border:0;font-style:normal;color:#55595c}.elementor-widget-blockquote blockquote:after,.elementor-widget-blockquote blockquote:before,.elementor-widget-blockquote blockquote cite:after,.elementor-widget-blockquote blockquote cite:before,.elementor-widget-blockquote blockquote footer:after,.elementor-widget-blockquote blockquote footer:before{content:"";content:none}.elementor-blockquote{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-blockquote__author,.elementor-blockquote__content{margin-bottom:0;font-style:normal}.elementor-blockquote__author{font-weight:700}.elementor-blockquote footer{margin-top:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-blockquote__tweet-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;color:#1da1f2;-ms-flex-item-align:end;align-self:flex-end;line-height:1;position:relative;width:-webkit-max-content;width:-moz-max-content;width:max-content}.elementor-blockquote__tweet-button:hover{color:#0967a0}.elementor-blockquote__tweet-button span{font-weight:600}.elementor-blockquote__tweet-button i,.elementor-blockquote__tweet-button span{vertical-align:middle}.elementor-blockquote__tweet-button i+span,.elementor-blockquote__tweet-button svg+span{margin-left:.5em}.elementor-blockquote__tweet-button svg{fill:#1da1f2;height:1em;width:1em}.elementor-blockquote__tweet-label{white-space:pre-wrap}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button{padding:.7em 1.2em;border-radius:100em;background-color:#1da1f2;color:#fff;font-size:15px}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover{background-color:#0967a0;color:#fff}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover:before,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover:before{border-right-color:#0967a0}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button svg,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button svg{fill:#fff;height:1em;width:1em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button{padding:0;width:2em;height:2em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:before{content:"";border:.5em solid transparent;border-right-color:#1da1f2;position:absolute;left:-.8em;top:50%;-webkit-transform:translateY(-50%) scaleY(.65);-ms-transform:translateY(-50%) scaleY(.65);transform:translateY(-50%) scaleY(.65);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:before{right:auto;left:-.8em;border-right-color:#1da1f2;border-left-color:transparent}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:hover:before{border-right-color:#0967a0}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:before{left:auto;right:-.8em;border-right-color:transparent;border-left-color:#1da1f2}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:hover:before{border-left-color:#0967a0}.elementor-blockquote--skin-boxed .elementor-blockquote{background-color:#e6e9ec;padding:30px}.elementor-blockquote--skin-border .elementor-blockquote{border-color:#e6e9ec;border-left:7px #e6e9ec;border-style:solid;padding-left:20px}.elementor-blockquote--skin-quotation .elementor-blockquote:before{content:"“";font-size:100px;color:#e6e9ec;font-family:Times New Roman,Times,serif;font-weight:900;line-height:1;display:block;height:.6em}.elementor-blockquote--skin-quotation .elementor-blockquote__content{margin-top:15px}.elementor-blockquote--align-left .elementor-blockquote__content{text-align:left}.elementor-blockquote--align-left .elementor-blockquote footer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-blockquote--align-right .elementor-blockquote__content{text-align:right}.elementor-blockquote--align-right .elementor-blockquote footer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-blockquote--align-center .elementor-blockquote{text-align:center}.elementor-blockquote--align-center .elementor-blockquote__author,.elementor-blockquote--align-center .elementor-blockquote footer{display:block}.elementor-blockquote--align-center .elementor-blockquote__tweet-button{margin-right:auto;margin-left:auto}assets/css/widget-countdown-rtl.min.css000064400000002771150755004320014242 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-widget-countdown .elementor-countdown-expire--message{display:none;padding:20px;text-align:center}.elementor-widget-countdown .elementor-countdown-wrapper{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-widget-countdown .elementor-countdown-item{padding:20px 0;text-align:center;color:#fff}.elementor-widget-countdown .elementor-countdown-digits,.elementor-widget-countdown .elementor-countdown-label{line-height:1}.elementor-widget-countdown .elementor-countdown-digits{font-size:69px}.elementor-widget-countdown .elementor-countdown-label{font-size:19px}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:auto;margin-left:auto}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-digits,.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-label{display:block}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-widget-countdown.elementor-countdown--label-inline{text-align:center}.elementor-widget-countdown.elementor-countdown--label-inline .elementor-countdown-item{display:inline-block;padding-left:5px;padding-right:5px}assets/css/widget-call-to-action-rtl.min.css000064400000026214150755004320015026 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-cta,.elementor-widget-call-to-action .elementor-widget-container{overflow:hidden}.elementor-cta{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.5s;-o-transition:.5s;transition:.5s}.elementor-cta--skin-classic .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--skin-classic .elementor-cta__bg-wrapper{position:relative;min-height:200px;width:100%}.elementor-cta--skin-classic .elementor-cta__content{-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%;background-color:#f7f7f7}.elementor-cta--skin-classic .elementor-cta__content-item,.elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon{color:#55595c;border-color:#55595c;fill:#55595c}.elementor-cta--skin-classic .elementor-cta__button.elementor-button{color:#55595c;border-color:#55595c}.elementor-cta--skin-cover .elementor-cta{display:block}.elementor-cta--skin-cover .elementor-cta__bg-wrapper{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%}.elementor-cta--skin-cover .elementor-cta__content{min-height:280px}.elementor-cta--skin-cover .elementor-cta__button.elementor-button,.elementor-cta--skin-cover .elementor-cta__content-item,.elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon{color:#fff;border-color:#fff}.elementor-cta--layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--layout-image-left .elementor-cta,.elementor-cta--layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--layout-image-left .elementor-cta__content,.elementor-cta--layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta__bg,.elementor-cta__bg-overlay{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s}.elementor-cta__bg-wrapper{z-index:1;overflow:hidden}.elementor-cta__bg{-webkit-background-size:cover;background-size:cover;background-position:50%;z-index:1}.elementor-cta__bg-overlay{z-index:2}.elementor-cta__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-cta__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-cta__title{font-size:23px}.elementor-cta__content{z-index:1;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;padding:35px;width:100%}.elementor-cta__content,.elementor-cta__content-item{position:relative;-webkit-transition:.5s;-o-transition:.5s;transition:.5s;color:#fff}.elementor-cta__content-item{width:100%;margin:0}.elementor-cta__content-item:not(:last-child){margin-bottom:15px}.elementor-cta__content-item .elementor-icon{color:#fff}.elementor-cta--valign-top .elementor-cta__content{-ms-flex-line-pack:start;align-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-cta--valign-middle .elementor-cta__content{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-cta--valign-bottom .elementor-cta__content{-ms-flex-line-pack:end;align-content:flex-end;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor-cta:hover .elementor-cta__bg-overlay{background-color:rgba(0,0,0,.3)}@media (max-device-width:1024px){.elementor-cta{cursor:pointer}}@media (min-width:-1px){.elementor-cta--widescreen-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--widescreen-layout-image-left .elementor-cta,.elementor-cta--widescreen-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--widescreen-layout-image-left .elementor-cta__content,.elementor-cta--widescreen-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--widescreen-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--widescreen-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--laptop-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--laptop-layout-image-left .elementor-cta,.elementor-cta--laptop-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--laptop-layout-image-left .elementor-cta__content,.elementor-cta--laptop-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--laptop-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--laptop-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--tablet_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta,.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__content,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:1024px){.elementor-cta--tablet-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet-layout-image-left .elementor-cta,.elementor-cta--tablet-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet-layout-image-left .elementor-cta__content,.elementor-cta--tablet-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--tablet-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--mobile_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta,.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__content,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:767px){.elementor-cta--mobile-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile-layout-image-left .elementor-cta,.elementor-cta--mobile-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile-layout-image-left .elementor-cta__content,.elementor-cta--mobile-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--mobile-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.elementor-ribbon{position:absolute;z-index:1;top:0;left:0;right:auto;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);width:150px;overflow:hidden;height:150px}.elementor-ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000;color:#fff}.elementor-ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}assets/css/frontend.min.css000064400001201641150755004320011757 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
@charset "UTF-8";.elementor-bg-transform .elementor-bg{will-change:transform}.elementor-bg-transform-zoom-in:hover .elementor-bg,.elementor-bg-transform-zoom-out .elementor-bg{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.elementor-bg-transform-zoom-out:hover .elementor-bg{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-bg-transform-move-left .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-left:hover .elementor-bg,.elementor-bg-transform-move-right .elementor-bg{-webkit-transform:scale(1.2) translateX(-8%);-ms-transform:scale(1.2) translateX(-8%);transform:scale(1.2) translateX(-8%)}.elementor-bg-transform-move-right:hover .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-up .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-bg-transform-move-down .elementor-bg,.elementor-bg-transform-move-up:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(-8%);-ms-transform:scale(1.2) translateY(-8%);transform:scale(1.2) translateY(-8%)}.elementor-bg-transform-move-down:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-animated-content{--translate:0,0}.elementor-animated-content:hover .elementor-animated-item--grow{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.elementor-animated-content:hover .elementor-animated-item--shrink{-webkit-transform:scale(.85);-ms-transform:scale(.85);transform:scale(.85)}.elementor-animated-content:hover .elementor-animated-item--shrink-contained{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content:hover .elementor-animated-item--enter-zoom-in,.elementor-animated-content:hover .elementor-animated-item--enter-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-in{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in,.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-out{opacity:0}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content:hover .elementor-animated-item--enter-from-bottom,.elementor-animated-content:hover .elementor-animated-item--enter-from-left,.elementor-animated-content:hover .elementor-animated-item--enter-from-right,.elementor-animated-content:hover .elementor-animated-item--enter-from-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content:hover .elementor-animated-item--exit-to-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom{-webkit-transform:translateY(600px);-ms-transform:translateY(600px);transform:translateY(600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom,.elementor-animated-content:hover .elementor-animated-item--exit-to-left,.elementor-animated-content:hover .elementor-animated-item--exit-to-right,.elementor-animated-content:hover .elementor-animated-item--exit-to-top{opacity:0}.elementor-animated-content:hover .elementor-animated-item--move-right{-webkit-transform:translateX(30px);-ms-transform:translateX(30px);transform:translateX(30px)}.elementor-animated-content:hover .elementor-animated-item--move-left{-webkit-transform:translateX(-30px);-ms-transform:translateX(-30px);transform:translateX(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-up{-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-down{-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px)}.elementor-animated-content:hover .elementor-animated-item--move-contained-right{--translate:8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-left{--translate:-8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-top{--translate:0,-8%}.elementor-animated-content:hover .elementor-animated-item--move-contained-bottom{--translate:0,8%}.elementor-animated-content [class^=elementor-animated-item]{will-change:transform,opacity}.elementor-animated-content .elementor-animated-item--shrink-contained{-webkit-transform:scale(1.17);-ms-transform:scale(1.17);transform:scale(1.17)}.elementor-animated-content .elementor-animated-item--enter-zoom-in{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content .elementor-animated-item--enter-zoom-out{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content .elementor-animated-item--enter-zoom-in,.elementor-animated-content .elementor-animated-item--enter-zoom-out,.elementor-animated-content .elementor-animated-item--fade-in{opacity:0}.elementor-animated-content .elementor-animated-item--exit-zoom-in,.elementor-animated-content .elementor-animated-item--exit-zoom-out,.elementor-animated-content .elementor-animated-item--fade-out{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content .elementor-animated-item--enter-from-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content .elementor-animated-item--enter-from-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content .elementor-animated-item--enter-from-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom{-webkit-transform:translateY(500px);-ms-transform:translateY(500px);transform:translateY(500px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom,.elementor-animated-content .elementor-animated-item--enter-from-left,.elementor-animated-content .elementor-animated-item--enter-from-right,.elementor-animated-content .elementor-animated-item--enter-from-top{opacity:0}.elementor-animated-content .elementor-animated-item--exit-to-bottom,.elementor-animated-content .elementor-animated-item--exit-to-left,.elementor-animated-content .elementor-animated-item--exit-to-right,.elementor-animated-content .elementor-animated-item--exit-to-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content .elementor-animated-item--move-contained-bottom,.elementor-animated-content .elementor-animated-item--move-contained-left,.elementor-animated-content .elementor-animated-item--move-contained-right,.elementor-animated-content .elementor-animated-item--move-contained-top{-webkit-transform:scale(1.2) translate(var(--translate));-ms-transform:scale(1.2) translate(var(--translate));transform:scale(1.2) translate(var(--translate))}.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover{outline:1px solid #fec449}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings{background-image:-webkit-gradient(linear,left bottom,left top,from(#feb416),to(#fec449));background-image:-webkit-linear-gradient(bottom,#feb416,#fec449);background-image:-o-linear-gradient(bottom,#feb416,#fec449);background-image:linear-gradient(0deg,#feb416,#fec449)}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover{background-color:#feb416}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save{display:none}body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;width:100%;padding:0}body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;padding:0}.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form){margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .quantity .qty{vertical-align:top;margin-right:0}.woocommerce div.product.elementor .quantity+.button{margin-left:10px}.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input{height:100%}.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}@media (max-width:1024px){.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}@media (max-width:767px){.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button{background-color:#5bc0de}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button{background-color:#5cb85c}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button{background-color:#f0ad4e}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button{background-color:#d9534f}.elementor-widget-wc-add-to-cart .quantity{display:inline-block}.elementor-widget-wc-add-to-cart.elementor-align-center form.cart{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-wc-add-to-cart.elementor-align-left form.cart,.elementor-widget-wc-add-to-cart.elementor-align-right form.cart{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor ul.tabs:before{position:static;content:none;width:auto;bottom:auto;left:auto;border-bottom:0;z-index:auto}.woocommerce div.product.elementor ul.tabs{margin:0}.woocommerce div.product.elementor ul.tabs li{padding:0}.woocommerce div.product.elementor ul.tabs li a{padding:.8em 1.2em;line-height:1}.woocommerce div.product.elementor ul.tabs li:after,.woocommerce div.product.elementor ul.tabs li:before{border:0;position:static;bottom:auto;width:auto;height:auto;content:none;-webkit-box-sizing:border-box;box-sizing:border-box}.woocommerce div.product.elementor .woocommerce-tabs .panel{padding:20px;border-radius:0;border-width:0;border-top:1px solid #d3ced2;-webkit-box-shadow:none;box-shadow:none;margin:-1px 0 0}.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins{display:block}.elementor-widget-woocommerce-product-meta .detail-container{position:relative}.elementor-widget-woocommerce-product-meta .detail-container:after{position:absolute;bottom:0;left:0;width:100%}.elementor-widget-woocommerce-product-meta .detail-label{font-weight:700}.elementor-woo-meta--view-inline .product_meta{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-woo-meta--view-inline .product_meta .detail-container:after{width:auto;left:auto;right:auto;position:absolute;height:100%;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;right:-8px}.elementor-woo-meta--view-table .product_meta{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-woo-meta--view-table .product_meta,.elementor-woo-meta--view-table .product_meta .detail-container{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-woo-meta--view-table .product_meta .detail-label{min-width:108px}.elementor-woo-meta--view-stacked .product_meta .detail-container{display:block}.woocommerce div.product.elementor .woocommerce-product-rating{margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.woocommerce div.product.elementor .star-rating{margin-top:0}.elementor-product-rating--align-left .woocommerce-product-rating{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-product-rating--align-right .woocommerce-product-rating{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-product-rating--align-center .woocommerce-product-rating{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link{margin-left:auto}.elementor-products-grid ul.products.elementor-grid{display:grid;margin:0;grid-column-gap:20px;grid-row-gap:40px}.elementor-products-grid ul.products.elementor-grid:after,.elementor-products-grid ul.products.elementor-grid:before{content:none;display:none}.elementor-products-grid ul.products.elementor-grid li.product{width:auto;padding:0;margin:0;float:none}.elementor-products-grid ul.products.elementor-grid li.product .onsale{padding:0;display:none}.elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link{display:block;position:relative}.elementor-products-grid:not(.show-heading-yes) .products>h2{display:none}.elementor-products-grid nav.woocommerce-pagination{margin-top:40px}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul{border:0}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li{border-right:0;border-left:0}.elementor-product-loop-item--align-left ul.products li.product .star-rating{margin-right:auto}.elementor-product-loop-item--align-right ul.products li.product .star-rating{margin-left:auto}.elementor-product-loop-item--align-center ul.products li.product .star-rating{margin-right:auto;margin-left:auto}.woocommerce .elementor-element.elementor-products-grid ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product{width:auto}@media (min-width:1025px){.elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products{grid-template-columns:repeat(2,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products{grid-template-columns:repeat(3,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products{grid-template-columns:repeat(4,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products{grid-template-columns:repeat(5,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products{grid-template-columns:repeat(6,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products{grid-template-columns:repeat(7,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products{grid-template-columns:repeat(8,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products{grid-template-columns:repeat(9,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products{grid-template-columns:repeat(10,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products{grid-template-columns:repeat(11,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products{grid-template-columns:repeat(12,1fr)}}@media (max-width:1024px){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(3,1fr)}}@media (max-width:767px){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(2,1fr)}}.elementor.product .woocommerce-product-gallery__trigger+.woocommerce-product-gallery__wrapper{overflow:hidden}.woocommerce .elementor-widget-woocommerce-product-images span.onsale{padding:0}.elementor-menu-cart__wrapper{text-align:var(--main-alignment,left)}.elementor-menu-cart__toggle_wrapper{display:inline-block;position:relative}.elementor-menu-cart__toggle{display:inline-block}.elementor-menu-cart__toggle .elementor-button{background-color:var(--toggle-button-background-color,transparent);color:var(--toggle-button-text-color,#818a91);border:var(--toggle-button-border-width,1px) var(--toggle-button-border-type,solid) var(--toggle-button-border-color,#818a91);border-radius:var(--toggle-button-border-radius,0);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--toggle-icon-padding,12px 24px)}.elementor-menu-cart__toggle .elementor-button:hover{color:var(--toggle-button-hover-text-color,#818a91);background-color:var(--toggle-button-hover-background-color,transparent);border-color:var(--toggle-button-hover-border-color,#818a91)}.elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon{color:var(--toggle-button-icon-hover-color,#818a91)}.elementor-menu-cart__toggle .elementor-button-text{margin-right:.3em}.elementor-menu-cart__toggle .elementor-button-icon{position:relative;-webkit-transition:color .1s;-o-transition:color .1s;transition:color .1s;color:var(--toggle-button-icon-color,#818a91);font-size:var(--toggle-icon-size,inherit)}.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:block;position:absolute;min-width:1.6em;height:1.6em;line-height:1.5em;top:-.7em;right:-.7em;border-radius:100%;color:var(--items-indicator-text-color,#fff);background-color:var(--items-indicator-background-color,#d9534f);text-align:center;font-size:10px}.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:inline-block;font-weight:400}.elementor-menu-cart__container{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);overflow:hidden;position:fixed;z-index:9998;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,.25);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s;text-align:left}.elementor-menu-cart__main{position:fixed;left:var(--side-cart-alignment-left,auto);right:var(--side-cart-alignment-right,0);-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);top:0;bottom:0;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;font-size:14px;min-height:200px;width:350px;max-width:100%;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;padding:var(--cart-padding,20px 30px);background-color:var(--cart-background-color,#fff);-webkit-box-shadow:0 0 20px rgba(0,0,0,.2);box-shadow:0 0 20px rgba(0,0,0,.2);border-style:var(--cart-border-style,none);border-color:var(--cart-border-color,initial);border-radius:var(--cart-border-radius,0);margin-top:var(--mini-cart-spacing,0)}.elementor-menu-cart__main,.elementor-menu-cart__main .widget_shopping_cart_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-menu-cart__main .widget_shopping_cart_content{height:100%}.elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message{color:var(--empty-message-color,inherit);text-align:var(--empty-message-alignment,left)}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{background-color:transparent;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button{display:none}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{overflow:hidden;opacity:0;-webkit-transform:var(--side-cart-alignment-transform,translateX(100%));-ms-transform:var(--side-cart-alignment-transform,translateX(100%));transform:var(--side-cart-alignment-transform,translateX(100%))}.elementor-menu-cart__close-button{width:var(--cart-close-icon-size,25px);height:var(--cart-close-icon-size,25px);position:relative;margin:0 0 20px;-ms-flex-item-align:end;align-self:flex-end;cursor:pointer;display:inline-block;font-family:eicons;font-size:20px;line-height:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:after,.elementor-menu-cart__close-button:before{content:"";position:absolute;height:3px;width:100%;top:50%;left:0;margin-top:-1px;background:var(--cart-close-button-color,#818a91);border-radius:1px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:hover:after,.elementor-menu-cart__close-button:hover:before{background:var(--cart-close-button-hover-color,#818a91)}.elementor-menu-cart__close-button:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__close-button:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__products{max-height:calc(100vh - 250px);overflow:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.elementor-menu-cart__product{display:grid;grid-template-columns:28% auto;grid-template-rows:var(--price-quantity-position--grid-template-rows,auto auto);position:relative;border-width:0;border-bottom:var(--divider-width,1px) var(--divider-style,solid) var(--divider-color,#d4d4d4)}.elementor-menu-cart__product .variation{display:grid;grid-template-columns:-webkit-max-content auto;grid-template-columns:max-content auto;margin:10px 0}.elementor-menu-cart__product .variation dt{grid-column-start:1}.elementor-menu-cart__product .variation dd{grid-column-start:2;-webkit-margin-start:5px;margin-inline-start:5px}.elementor-menu-cart__product .variation dd p{margin-bottom:0}.elementor-menu-cart__product-image{grid-row-start:1;grid-row-end:3;width:100%}.elementor-menu-cart__product-image a,.elementor-menu-cart__product-image img{display:block}.elementor-menu-cart__product-name{grid-column-start:2;grid-column-end:3;margin:0}.elementor-menu-cart__product-name a{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-price{grid-column-start:2;grid-column-end:3;-ms-flex-item-align:var(--price-quantity-position--align-self,end);align-self:var(--price-quantity-position--align-self,end);font-weight:300;color:var(--product-price-color,#d4d4d4)}.elementor-menu-cart__product-name,.elementor-menu-cart__product-price{font-size:14px;padding-left:20px}.elementor-menu-cart__product-remove{color:#818a91;width:var(--remove-item-button-size,22px);height:var(--remove-item-button-size,22px);border-radius:var(--remove-item-button-size,22px);border:1px solid var(--remove-item-button-color,#d4d4d4);text-align:center;overflow:hidden;position:absolute;right:0;bottom:20px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:hover{border:1px solid var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:hover:after,.elementor-menu-cart__product-remove:hover:before{background:var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:after,.elementor-menu-cart__product-remove:before{content:"";position:absolute;height:1px;width:50%;top:50%;left:25%;margin-top:-1px;background:var(--remove-item-button-color,#d4d4d4);z-index:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__product-remove:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__product-remove>a{display:block;z-index:2;width:100%;height:100%;overflow:hidden;opacity:0;position:absolute}.elementor-menu-cart__product-remove>a.remove_from_cart_button{display:var(--remove-from-cart-button,block)}.elementor-menu-cart__product-remove>a.elementor_remove_from_cart_button{display:var(--elementor-remove-from-cart-button,none)}.elementor-menu-cart__product:last-child{border:none}.elementor-menu-cart__footer-buttons,.elementor-menu-cart__product:not(:first-of-type),.elementor-menu-cart__subtotal{padding-top:var(--product-divider-gap,20px)}.elementor-menu-cart__product{padding-right:30px}.elementor-menu-cart__product,.elementor-menu-cart__subtotal{padding-bottom:var(--product-divider-gap,20px)}.elementor-menu-cart__subtotal{font-size:20px;text-align:var(--menu-cart-subtotal-text-align,center);font-weight:600;color:var(--menu-cart-subtotal-color,inherit);border-left:var(--subtotal-divider-left-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-bottom:var(--subtotal-divider-bottom-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-right:var(--subtotal-divider-right-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-top:var(--subtotal-divider-top-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4)}.elementor-menu-cart__footer-buttons{font-size:20px;text-align:var(--cart-footer-buttons-alignment-text-align,center);display:var(--cart-footer-buttons-alignment-display,grid);grid-template-columns:var(--cart-footer-layout,1fr 1fr);margin-top:var(--cart-buttons-position-margin,0);grid-column-gap:var(--space-between-buttons,10px);grid-row-gap:var(--space-between-buttons,10px)}.elementor-menu-cart__footer-buttons .elementor-button{display:inline-block;border-radius:var(--cart-footer-buttons-border-radius,0);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.elementor-menu-cart__footer-buttons .elementor-button--view-cart{display:var(--view-cart-button-display,inline-block);color:var(--view-cart-button-text-color,#fff);padding:var(--view-cart-button-padding,15px);background-color:var(--view-cart-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover{color:var(--view-cart-button-hover-text-color,#fff);background-color:var(--view-cart-button-hover-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout{display:var(--checkout-button-display,inline-block);color:var(--checkout-button-text-color,#fff);padding:var(--checkout-button-padding,15px);background-color:var(--checkout-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:var(--checkout-button-hover-background-color,#818a91)}@media (max-width:767px){.elementor-menu-cart__footer-buttons .elementor-button{padding-left:10px;padding-right:10px}}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text{display:none}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before{content:none}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e3"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e4"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e5"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e6"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e7"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e8"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e9"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8ea"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8eb"}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product{padding-left:0;padding-right:0;grid-template-columns:25% auto}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove{display:none}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove{top:0;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove{top:20px;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove{-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);bottom:50%}.elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove{top:auto;bottom:20px}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{position:absolute;z-index:89;width:auto;height:auto;overflow:visible;top:100%;bottom:auto;background:none;min-width:330px;left:0;right:auto;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main{width:auto;height:auto;position:relative;top:auto;bottom:auto;right:auto;left:auto;overflow:visible;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}@media (max-width:767px){.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{min-width:300px}}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{opacity:0;-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px)}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown{opacity:1}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container{z-index:9998}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart{z-index:89}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container{display:none}.elementor-widget-woocommerce-checkout-page{background-color:transparent;font-family:Roboto,sans-serif;font-size:14px;line-height:21px;color:#818a91}.elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container{grid-template-columns:auto}.elementor-widget-woocommerce-checkout-page ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page table tbody tr:hover>td,.elementor-widget-woocommerce-checkout-page table tbody tr:hover>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .e-description{color:var(--sections-descriptions-color,#818a91);padding-bottom:var(--sections-descriptions-spacing,0);font-size:14px;font-weight:400}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section{margin-bottom:24px}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title{text-align:var(--login-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge{margin-top:var(--sections-secondary-title-spacing,24px);margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor{margin-top:var(--sections-secondary-title-spacing,24px)}.elementor-widget-woocommerce-checkout-page .e-coupon-box{margin-top:24px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .e-login-wrap-start{-webkit-box-flex:75%;-ms-flex:75%;flex:75%}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{-webkit-box-flex:20%;-ms-flex:20%;flex:20%;text-align:right}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:block}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{text-align:left;margin-top:15px}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label{display:none}}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{margin-bottom:0;font-size:12px}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{font-size:11px}}.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:90%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:auto}}.elementor-widget-woocommerce-checkout-page .e-checkout__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:56% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,24px);grid-row-gap:var(--sections-margin,24px)}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-checkout__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title{color:var(--sections-secondary-title-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge{text-align:var(--coupon-title-alignment,left)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address{margin-top:13px;padding-left:var(--shipping-heading-padding-start,30px)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address span{font-weight:400}.elementor-widget-woocommerce-checkout-page a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row{padding-left:var(--forms-columns-gap-padding,0);padding-right:var(--forms-columns-gap-padding,0);margin-left:var(--forms-columns-gap-margin,0);margin-right:var(--forms-columns-gap-margin,0)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);font-size:14px;border:none;font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-checkout-page .woocommerce .create-account,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row{margin-bottom:0!important}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input,.elementor-widget-woocommerce-checkout-page .woocommerce .input-radio{vertical-align:middle}.elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span{position:relative;top:2px;color:var(--sections-checkboxes-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label,.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{display:inline}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#6f6f6f);border-radius:var(--forms-buttons-border-radius,3px);padding:1rem;border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover{color:var(--forms-buttons-hover-text-color,#6f6f6f);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{margin-right:1%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{width:100%;margin-right:0;margin-bottom:15px}}.elementor-widget-woocommerce-checkout-page .woocommerce-info{border-top-color:transparent;background-color:transparent;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p{font-weight:400;font-size:12px}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info{font-weight:400;margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,.elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment{background:var(--sections-background-color,#fff);border-radius:var(--sections-border-radius,3px);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 24px 0);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{display:var(--additional-information-display,none)}@media (min-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text{color:var(--sections-messages-color,#818a91);font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p{margin-top:25px}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1{margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2{padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading{text-align:var(--order-review-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table{margin-bottom:0;border:0;font-size:14px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th{padding-top:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td{color:#000}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity{font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th{color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr{border:0;padding-left:0;padding-bottom:15px;padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr{padding-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td{font-weight:400;color:var(--order-summary-items-color,#000);border-bottom:var(--order-summary-items-divider-weight,0) solid var(--order-summary-items-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name{padding-right:40px;max-width:150px}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total{vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th{padding-top:var(--order-summary-rows-gap-top,15px);padding-bottom:var(--order-summary-rows-gap-bottom,15px)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th{color:var(--order-summary-totals-color,#818a91);vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th{border-top:var(--order-summary-totals-divider-weight,0) solid var(--order-summary-totals-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td{max-width:70px}.elementor-widget-woocommerce-checkout-page .woocommerce h3{font-size:14px;font-weight:700;margin-top:0;margin-bottom:var(--sections-title-spacing,30px);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row>span{font-weight:400;font-size:14px;margin-bottom:3px;color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:48%}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3{text-align:var(--billing-details-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row{margin-bottom:var(--forms-rows-gap,5px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child{margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login{margin-top:-8px;z-index:999;background:#fff;border-top-width:0;position:relative;margin-bottom:0;color:#818a91}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:100%}}.elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:85%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:35%}}.elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3{background:var(--additional-fields-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address{margin-bottom:var(--sections-margin,20px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment{margin-top:24px;padding:15px 25px 25px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods{border-bottom:none;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li{line-height:21px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{padding-left:15px;font-size:12px}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{float:none;font-size:11px;padding-left:10px}}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img{width:55px}}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0;margin-bottom:0;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order{background-color:#5bc0de;width:var(--purchase-button-width,auto);float:none;color:var(--purchase-button-normal-text-color,#fff);min-height:auto;padding:var(--purchase-button-padding,1em 1em);border-radius:var(--purchase-button-border-radius,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover{background-color:#5bc0de;color:var(--purchase-button-hover-text-color,#fff);border-color:var(--purchase-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--purchase-button-hover-transition-duration,.3s);-o-transition-duration:var(--purchase-button-hover-transition-duration,.3s);transition-duration:var(--purchase-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2{width:auto;float:none}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:grid;grid-template-columns:auto auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:right}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:left}}.elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field{margin-bottom:10px}.elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000);font-size:14px;font-style:normal;text-transform:none;letter-spacing:normal;text-decoration:none;line-height:21px}.e-woo-select2-wrapper .select2-results__option,.e-woo-select2-wrapper .select2-results__option:focus{color:#818a91}.elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart table tbody tr:hover>td,.elementor-widget-woocommerce-cart table tbody tr:hover>th{background-color:inherit}.elementor-widget-woocommerce-cart .e-clear{overflow:hidden;height:0;width:0}.elementor-widget-woocommerce-cart .e-cart-section{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 30px 0);border-radius:var(--sections-border-radius,3px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4)}@media (min-width:1024px){.elementor-widget-woocommerce-cart .e-cart-section:last-child{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-cart .e-cart-content{color:var(--sections-descriptions-color,#818a91);font-size:15px;font-weight:400;line-height:23px;letter-spacing:0}.elementor-widget-woocommerce-cart .e-cart__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:59% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,30px);grid-row-gap:var(--sections-margin,30px)}@media (max-width:1024px){.elementor-widget-woocommerce-cart .e-cart__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart .select2-container{margin-bottom:4px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-cart .woocommerce{font-family:Roboto,sans-serif}.elementor-widget-woocommerce-cart .woocommerce button.button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#818a91);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,.88rem 2rem);width:var(--forms-buttons-width,auto);border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button:hover{color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]{padding:var(--forms-buttons-padding,.88rem 2rem);color:var(--forms-buttons-normal-text-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover{background-color:var(--forms-buttons-hover-background-color,#fff);color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li input{vertical-align:middle}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form{margin-top:var(--sections-descriptions-spacing,15px)}.elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination{color:var(--sections-descriptions-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th{display:none}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td{text-align:left!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before{width:100%;margin-bottom:10px}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td{text-align:right!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td:before{content:attr(data-title);font-weight:700;float:left}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{text-align:var(--totals-title-alignment,left)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td{padding-top:var(--totals-rows-gap-top,12px);padding-bottom:var(--totals-rows-gap-bottom,9px)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before{color:var(--totals-color,#818a91);font-weight:700}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td{border-top-color:var(--totals-divider-color,#818a91);border-top-width:var(--totals-divider-weight,0)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row{margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-cart .woocommerce .product-name a{color:var(--product-link-normal-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .product-name a:hover{color:var(--product-link-hover-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .form-row{padding:3px 0;margin:0}.elementor-widget-woocommerce-cart .woocommerce .input-text,.elementor-widget-woocommerce-cart .woocommerce select{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,3px);border:none;padding:var(--forms-fields-padding,16px);font-size:14px}.elementor-widget-woocommerce-cart .woocommerce .input-text::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,.elementor-widget-woocommerce-cart .woocommerce select::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus,.elementor-widget-woocommerce-cart .woocommerce select:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,transparent);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-webkit-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-moz-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-ms-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text.qty{background-color:transparent;color:var(--order-summary-color,#000);border:var(--order-summary-quantity-border-weight,1px) solid var(--order-summary-quantity-border-color,#d4d4d4);border-radius:3px;padding:1px 2px;text-align:left;font-size:14px;min-height:28px;max-height:28px}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout{padding-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button{padding:var(--checkout-button-padding,15px 1em);width:var(--checkout-button-width,auto);font-size:15px;text-align:center;color:var(--checkout-button-normal-text-color,#fff);background-color:#5bc0de;border-radius:var(--checkout-button-border-radius,3px);min-height:auto;margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:#5bc0de;border-color:var(--checkout-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--checkout-button-hover-transition-duration,.3s);-o-transition-duration:var(--checkout-button-hover-transition-duration,.3s);transition-duration:var(--checkout-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .remove{background:transparent;color:var(--order-summary-remove-icon-normal-color,#000)!important;width:auto}.elementor-widget-woocommerce-cart .woocommerce .remove:hover{background:transparent;color:var(--order-summary-remove-icon-hover-color,#5bc0de)!important}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals{float:none;width:100%}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td{padding-left:0}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{float:right;width:100%}.elementor-widget-woocommerce-cart .woocommerce .coupon .form-row{padding:0}.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{-webkit-box-flex:2;-ms-flex:2;flex:2;padding-right:30px}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{padding-right:0}}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-end{-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:block}}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon{margin:var(--sections-margin,0)}.elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code{width:100%;margin-right:0;margin-bottom:15px}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:left;font-size:14px;font-weight:700}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:none;width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table th,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions{padding:16px 0 0}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a{display:inline-block}.elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child{display:var(--update-cart-automatically-display,table-row)}.elementor-widget-woocommerce-cart .woocommerce table.cart{margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce table.cart img{width:55px;height:auto;display:block}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-top:var(--order-summary-rows-gap-top,20px);padding-right:20px;padding-bottom:var(--order-summary-rows-gap-bottom,20px);padding-left:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td span{color:var(--order-summary-color,#000);font-size:14px;font-weight:400}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top:var(--order-summary-items-divider-weight,1px) solid var(--order-summary-items-divider-color,#d4d4d4)}@media (max-width:768px){.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top-width:0}}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove{padding-left:0;padding-right:0}@media (min-width:767px){.elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td{border-top:none}}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove{position:relative}.elementor-widget-woocommerce-cart .woocommerce table.cart.product-name{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{border-top-width:var(--order-summary-items-divider-weight,1px);border-top-color:var(--order-summary-items-divider-color,#d4d4d4)}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}}@media (max-width:768px){.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-left:0;padding-right:0}}@media (max-width:767px){.elementor-widget-woocommerce-cart .woocommerce table.cart{padding:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{padding:16px 28px}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-left:0;padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions{padding:0}}.elementor-widget-woocommerce-cart .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,.elementor-widget-woocommerce-cart .woocommerce .cart th{font-size:14px;font-weight:700;margin-top:0;padding:0 20px 8px 0}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{margin-bottom:var(--sections-title-spacing,1rem);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart th{padding-bottom:var(--order-summary-title-spacing,8px);color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart td:before{color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button:after{display:none}.elementor-widget-woocommerce-cart .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000)}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td{padding-left:0}}.e-woo-select2-wrapper .select2-results__option{font-family:Roboto,sans-serif;font-size:14px;color:var(--forms-fields-normal-color,#818a91)}.e-woo-select2-wrapper .select2-results__option:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account{font-family:Roboto,sans-serif;color:#818a91}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table{border:none;margin-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{background-color:var(--sections-background-color,#fff)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px 3px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,.elementor-widget-woocommerce-my-account .e-my-account-tab address{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content{border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper{padding:0;border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details{margin-bottom:40px}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px 3px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content>div>p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:var(--forms-fields-normal-background-color,#f7f7f7);border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:var(--forms-fields-focus-background-color,#f7f7f7);border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below{background-color:var(--forms-fields-normal-background-color,#f7f7f7)}.elementor-widget-woocommerce-my-account .woocommerce ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce-message{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce address{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover,.elementor-widget-woocommerce-my-account .woocommerce a.button:hover{background-color:initial}.elementor-widget-woocommerce-my-account .woocommerce em{font-size:12px;color:var(--login-messages-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .form-row{padding-left:var(--forms-columns-gap-padding-left,0);padding-right:var(--forms-columns-gap-padding-right,0);margin-left:var(--forms-columns-gap-margin-left,0);margin-right:var(--forms-columns-gap-margin-right,0);margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-my-account .woocommerce .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,0)}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,.elementor-widget-woocommerce-my-account .woocommerce .form-row select{color:var(--forms-fields-normal-color,#818a91);border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);background:#f7f7f7;border:none;font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,.elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text{margin-bottom:15px;color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword{font-size:12px;margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:50%}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first{width:100%}.elementor-widget-woocommerce-my-account .woocommerce .login,.elementor-widget-woocommerce-my-account .woocommerce .register,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px);font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .login .button,.elementor-widget-woocommerce-my-account .woocommerce .register .button,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3){margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){margin-top:10px;font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox{vertical-align:middle}.elementor-widget-woocommerce-my-account .woocommerce p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span{color:var(--checkboxes-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce td,.elementor-widget-woocommerce-my-account .woocommerce th,.elementor-widget-woocommerce-my-account .woocommerce tr{border:none}.elementor-widget-woocommerce-my-account .woocommerce h2,.elementor-widget-woocommerce-my-account .woocommerce h3{color:var(--typography-section-titles-color,#000);margin-top:0;margin-bottom:var(--section-title-spacing,45px);font-weight:400}.elementor-widget-woocommerce-my-account .woocommerce strong{color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta,.elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label{color:var(--variations-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .product-quantity{font-weight:400;color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{float:left;width:25%}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul{-webkit-padding-start:0;padding-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li{list-style-type:none;margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li:after{content:"";display:block;width:100%;background-color:var(--tabs-divider-color,#818a91);height:var(--tabs-divider-weight,0);position:relative;top:calc(var(--tabs-spacing, 2px) / 2)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a{color:var(--tabs-active-color,#5bc0de);background:#eceeef;border-color:var(--tabs-active-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{font-style:normal;font-weight:700;font-size:14px;color:var(--tabs-normal-color,#818a91);display:block;padding:var(--tabs-padding,12px 20px);text-align:var(--tabs-alignment,start);background:#f7f7f7;border-radius:var(--tabs-border-radius,0);border:0 var(--tabs-border-type,solid) var(--tabs-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover{color:var(--tabs-hover-color,#5bc0de);border-color:var(--tabs-hover-border-color,transparent)}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{padding:var(--tabs-padding,10px)}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard{margin-top:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout:after{display:none}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{float:right;width:75%;padding:0;padding-left:var(--tab-content-spacing,6%)}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{width:100%;padding:var(--tab-content-spacing,6%) 0 0 0}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type{margin-top:30px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark{background-color:transparent;font-weight:700;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child th,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child th{border-top:0}.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th{border-top:0;padding-left:0;padding-top:0;padding-bottom:var(--tables-titles-spacing,9px)}.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>th,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>th{background-color:transparent;padding-left:0;padding-top:var(--order-summary-rows-gap-top,9px);padding-bottom:var(--order-summary-rows-gap-bottom,9px);color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table td,.elementor-widget-woocommerce-my-account .woocommerce .shop_table th{border-top:var(--tables-divider-border-width,1px) var(--tables-divider-border-type,solid) var(--tables-divider-border-color,#d4d4d4)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th,.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span{color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td,.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th{padding-left:0;color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td{border-top:none;padding-top:0}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button{background:transparent;border:2px solid #5bc0de;border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);border-radius:var(--tables-button-border-radius,3px);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);margin-top:0;margin-bottom:0;padding:var(--tables-button-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-Address .title h3,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3{float:none}.elementor-widget-woocommerce-my-account .woocommerce-Address address,.elementor-widget-woocommerce-my-account .woocommerce-Addresses address{padding:var(--sections-padding,45px 30px 16px 30px)}.elementor-widget-woocommerce-my-account .woocommerce-Address .edit,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit{float:left;position:absolute;margin-left:var(--edit-link-margin-start,30px);margin-top:var(--edit-link-margin-top,10px)}.elementor-widget-woocommerce-my-account .woocommerce .u-columns{margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset{border:none;padding:0;-webkit-margin-start:0;margin-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend{font-weight:700;padding:20px 0;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px);margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-pagination{padding:16px 0}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below,.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below{padding-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td{vertical-align:top;line-height:unset}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{float:none;width:100%}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block}.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation,.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{list-style:none;padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--tabs-container-justify-content,space-between);-ms-flex-pack:var(--tabs-container-justify-content,space-between);justify-content:var(--tabs-container-justify-content,space-between)}@media (max-width:767px){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{display:block}}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block;width:var(--tab-width,100%);padding:0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);margin:0;border-right:var(--tabs-divider-weight,0) solid var(--tabs-divider-color,#818a91)}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:after{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type{padding-left:0}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type{padding-right:0;border-right-width:0}@media (max-width:767px){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}}.e-my-account-tabs-horizontal .woocommerce-MyAccount-content{float:none;width:100%;padding:var(--tab-content-spacing,50px) 0 0 0}.elementor-editor-active .elementor-widget-container,.elementor-editor-preview .elementor-widget-container{min-height:1px}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a{pointer-events:none}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button{pointer-events:none;opacity:.3}.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type){display:none}.product .count{background-color:inherit}.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2{display:none}.woocommerce div.product.elementor form.cart div.product-addon{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-negative:0;flex-shrink:0}.e-sticky-right-column--active{position:-webkit-sticky;position:sticky;top:0}.elementor-theme-builder-content-area{height:400px}.elementor-location-footer:before,.elementor-location-header:before{content:"";display:table;clear:both}.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post{display:block}.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid{color:#d4d4d4;border:1px solid;border-right:none;border-left:none;padding-top:10px;padding-bottom:10px}.elementor-post-navigation-borders-yes .elementor-post-navigation__separator{height:100%;width:1px;margin:0 auto;background-color:#d4d4d4}.elementor-post-navigation{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-post-navigation .post-navigation__arrow-wrapper{color:#d4d4d4}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev{font-size:30px;padding-right:15px}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next{font-size:30px;padding-left:15px}.elementor-post-navigation .post-navigation__arrow-wrapper i{-webkit-transform:translateY(-5%);-ms-transform:translateY(-5%);transform:translateY(-5%)}.elementor-post-navigation .elementor-post-navigation__link__next,.elementor-post-navigation .elementor-post-navigation__link__prev{overflow:hidden}.elementor-post-navigation .elementor-post-navigation__link a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__prev--label{text-transform:uppercase;font-size:.8em}.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--title{font-size:.7em}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--label,.elementor-post-navigation .post-navigation__prev--title{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation span.elementor-post-navigation__link__next{text-align:right}.elementor-post-navigation span.elementor-post-navigation__link__next,.elementor-post-navigation span.elementor-post-navigation__link__prev{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-post-navigation .elementor-grid{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-post-navigation .elementor-post-navigation__link{width:calc(50% - (1px / 2));white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation .elementor-post-navigation__separator-wrapper{text-align:center}.elementor-post-navigation .elementor-post-navigation__next{text-align:right}.elementor-post-navigation .elementor-post-navigation__next a{float:right}.elementor-search-form{display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s}.elementor-search-form .e-font-icon-svg-container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-search-form button,.elementor-search-form input[type=search]{margin:0;border:0;padding:0;display:inline-block;vertical-align:middle;white-space:normal;background:none;line-height:1;min-width:0;font-size:15px;-webkit-appearance:none;-moz-appearance:none}.elementor-search-form button:focus,.elementor-search-form input[type=search]:focus{outline:0;color:inherit}.elementor-search-form button{background-color:#818a91;font-size:var(--e-search-form-submit-icon-size,16px);color:#fff;border-radius:0}.elementor-search-form__container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;overflow:hidden;border:0 solid transparent;min-height:50px}.elementor-search-form__container:not(.elementor-search-form--full-screen){background:#eceeef}.elementor-search-form__input{-ms-flex-preferred-size:100%;flex-basis:100%;color:#55595c;-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s}.elementor-search-form__input::-webkit-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-moz-placeholder,.elementor-search-form__input::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__submit{-webkit-transition:color .2s,background .2s;-o-transition:color .2s,background .2s;transition:color .2s,background .2s;font-size:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form__submit svg{fill:var(--e-search-form-submit-text-color,#fff);width:var(--e-search-form-submit-icon-size,16px);height:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form .elementor-search-form__submit,.elementor-search-form .elementor-search-form__submit:hover{color:var(--e-search-form-submit-text-color,#fff);border:none;border-radius:0}.elementor-search-form--button-type-text .elementor-search-form__submit{-ms-flex-negative:0;flex-shrink:0}.elementor-search-form--skin-minimal .elementor-search-form__icon{opacity:.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;color:#55595c;fill:#55595c;font-size:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-minimal .elementor-search-form__icon svg{width:var(--e-search-form-icon-size-minimal,15px);height:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-full_screen .elementor-search-form input[type=search].elementor-search-form__input{font-size:50px;text-align:center;border:solid #fff;border-width:0 0 1px;line-height:1.5;color:#fff}.elementor-search-form--skin-full_screen .elementor-search-form__toggle{display:inline-block;cursor:pointer;vertical-align:middle;color:var(--e-search-form-toggle-color,#494c4f);font-size:var(--e-search-form-toggle-size,33px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i{position:relative;display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;width:var(--e-search-form-toggle-size,33px);height:var(--e-search-form-toggle-size,33px);background-color:var(--e-search-form-toggle-background-color,rgba(0,0,0,.05));border:var(--e-search-form-toggle-border-width,0) solid var(--e-search-form-toggle-color,#494c4f);border-radius:var(--e-search-form-toggle-border-radius,3px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before{font-size:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{fill:var(--e-search-form-toggle-color,#494c4f);width:var(--e-search-form-toggle-icon-size,.55em);height:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__container{-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;z-index:9998;top:0;left:0;right:0;bottom:0;height:100vh;padding:0 15%;background-color:rgba(0,0,0,.8)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen){overflow:hidden;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button{display:none}.elementor-author-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-author-box__avatar{-ms-flex-negative:0;flex-shrink:0;margin-right:25px}.elementor-author-box__avatar img{width:100px;border-radius:500px;-o-object-fit:cover;object-fit:cover}.elementor-author-box__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:17px}.elementor-author-box__name{font-size:24px;margin-bottom:5px}.elementor-author-box__bio,.elementor-author-box__bio p{margin-bottom:.8em}.elementor-author-box__bio p:last-of-type{margin-bottom:0}.elementor-author-box--layout-image-left .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-author-box--layout-image-left .elementor-author-box__avatar{margin-left:0;margin-right:25px}.elementor-author-box--layout-image-right .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-author-box--layout-image-right .elementor-author-box__avatar{margin-right:0;margin-left:25px}.elementor-author-box--layout-image-above .elementor-author-box{display:block}.elementor-author-box--layout-image-above .elementor-author-box__avatar{margin:0 auto 15px;display:inline-block}.elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar{margin-left:0}.elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar{margin-right:0}.elementor-author-box--align-left .elementor-author-box{text-align:left}.elementor-author-box--align-right .elementor-author-box{text-align:right}.elementor-author-box--align-center .elementor-author-box{text-align:center}.elementor-button.elementor-author-box__button{border:2px solid #55595c;font-size:15px;font-weight:100;padding:10px 18px}.elementor-button.elementor-author-box__button,.elementor-button.elementor-author-box__button:hover{background:transparent;color:#55595c}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar,.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar{-ms-flex-item-align:start;align-self:flex-start}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar{-ms-flex-item-align:center;align-self:center}.elementor-post-info__terms-list{display:inline-block}.elementor-post-info .elementor-icon-list-icon .elementor-avatar{border-radius:100%}.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after{margin:initial}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text{display:inline-block}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a,.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span{display:inline}.elementor-widget-breadcrumbs{font-size:.85em}.elementor-widget-breadcrumbs p{margin-bottom:0}.elementor-sitemap-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.elementor-sticky--active{z-index:99}[data-elementor-type=popup] .elementor-section-wrap:not(:empty)+#elementor-add-new-section,[data-elementor-type=popup]:not(.elementor-edit-area){display:none}.elementor-popup-modal{display:-webkit-box;display:-ms-flexbox;display:flex;pointer-events:none;background-color:transparent;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.elementor-popup-modal .dialog-buttons-wrapper,.elementor-popup-modal .dialog-header{display:none}.elementor-popup-modal .dialog-close-button{display:none;top:20px;margin-top:0;right:20px;opacity:1;z-index:9999;pointer-events:all}.elementor-popup-modal .dialog-close-button svg{fill:#373a3c;height:1em;width:1em}.elementor-popup-modal .dialog-widget-content{width:auto;overflow:visible;max-width:100%;max-height:100%;border-radius:0;-webkit-box-shadow:none;box-shadow:none;pointer-events:all}.elementor-popup-modal .dialog-message{width:640px;max-width:100vw;max-height:100vh;padding:0;overflow:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-popup-modal .elementor{width:100%}.elementor-motion-effects-element,.elementor-motion-effects-layer{-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(0,.33,.07,1.03);-o-transition-timing-function:cubic-bezier(0,.33,.07,1.03);transition-timing-function:cubic-bezier(0,.33,.07,1.03);-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s}.elementor-motion-effects-container{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;-webkit-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);-ms-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.elementor-motion-effects-layer{position:absolute;top:0;left:0;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover}.elementor-motion-effects-perspective{-webkit-perspective:1200px;perspective:1200px}.elementor-widget-archive-posts:after,.elementor-widget-posts:after{display:none}.elementor-posts-container.elementor-posts-masonry{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-posts-container:not(.elementor-posts-masonry){-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-posts-container .elementor-post{padding:0;margin:0}.elementor-posts-container .elementor-post__thumbnail{overflow:hidden}.elementor-posts-container .elementor-post__thumbnail img{display:block;width:100%;max-height:none;max-width:none;-webkit-transition:-webkit-filter .3s;transition:-webkit-filter .3s;-o-transition:filter .3s;transition:filter .3s;transition:filter .3s,-webkit-filter .3s}.elementor-posts-container .elementor-post__thumbnail__link{position:relative;display:block;width:100%}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail{top:0;left:0;right:0;bottom:0}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail img{height:auto;position:absolute;top:calc(50% + 1px);left:calc(50% + 1px);-webkit-transform:scale(1.01) translate(-50%,-50%);-ms-transform:scale(1.01) translate(-50%,-50%);transform:scale(1.01) translate(-50%,-50%)}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail.elementor-fit-height img{height:100%;width:auto}.elementor-posts .elementor-post{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition-property:background,border,-webkit-box-shadow;transition-property:background,border,-webkit-box-shadow;-o-transition-property:background,border,box-shadow;transition-property:background,border,box-shadow;transition-property:background,border,box-shadow,-webkit-box-shadow;-webkit-transition-duration:.25s;-o-transition-duration:.25s;transition-duration:.25s}.elementor-posts .elementor-post__title{font-size:18px;margin:0}.elementor-posts .elementor-post__excerpt{margin-bottom:10px}.elementor-posts .elementor-post__excerpt p{margin:0;line-height:1.5em;font-size:14px;color:#777}.elementor-posts .elementor-post__meta-data{line-height:1.3em;font-size:12px;margin-bottom:13px;color:#adadad}.elementor-posts .elementor-post__read-more{font-size:12px;font-weight:700}.elementor-posts .elementor-post__thumbnail{position:relative}.elementor-posts--skin-classic{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-posts--skin-classic:not(.elementor-posts-masonry){-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-posts--skin-classic .elementor-post{overflow:hidden}.elementor-posts--skin-classic .elementor-post__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-posts--align-left .elementor-post{text-align:left}.elementor-posts--align-right .elementor-post{text-align:right}.elementor-posts--align-center .elementor-post{text-align:center}.elementor-posts--thumbnail-top .elementor-post{display:block}.elementor-posts--thumbnail-top .elementor-post__thumbnail__link{margin-bottom:20px}.elementor-posts--thumbnail-top .elementor-post__text{width:100%}.elementor-posts--thumbnail-top.elementor-posts--align-left .elementor-post__thumbnail__link{margin-right:auto}.elementor-posts--thumbnail-top.elementor-posts--align-right .elementor-post__thumbnail__link{margin-left:auto}.elementor-posts--thumbnail-top.elementor-posts--align-center .elementor-post__thumbnail__link{margin-right:auto;margin-left:auto}.elementor-posts--thumbnail-left .elementor-post__thumbnail__link,.elementor-posts--thumbnail-right .elementor-post__thumbnail__link{-ms-flex-negative:0;flex-shrink:0;width:25%}.elementor-posts--thumbnail-left .elementor-post__thumbnail__link{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0;margin-right:20px}.elementor-posts--thumbnail-right .elementor-post__thumbnail__link{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5;margin-left:20px}.elementor-posts--thumbnail-none .elementor-posts-container .elementor-post__thumbnail__link{display:none}.elementor-posts .elementor-post__card{overflow:hidden;position:relative;background-color:#fff;width:100%;min-height:100%;border-radius:3px;border:0 solid #818a91;-webkit-transition:all .25s;-o-transition:all .25s;transition:all .25s}.elementor-posts .elementor-post__card .elementor-post__thumbnail{position:relative;transform-style:preserve-3d;-webkit-transform-style:preserve-3d}.elementor-posts .elementor-post__card .elementor-post__thumbnail img{width:calc(100% + 1px)}.elementor-posts .elementor-post__card .elementor-post__text{padding:0 30px;margin-bottom:0;margin-top:20px}.elementor-posts .elementor-post__card .elementor-post__read-more{margin-bottom:20px;display:inline-block}.elementor-posts .elementor-post__card .elementor-post__meta-data{padding:15px 30px;margin-bottom:0;border-top:1px solid #eaeaea}.elementor-posts .elementor-post__card .elementor-post__meta-data span+span:before{margin:0 5px}.elementor-posts .elementor-post__card .elementor-post__title{font-size:21px}.elementor-posts .elementor-post__card .elementor-post__excerpt{line-height:1.7}.elementor-posts .elementor-post__card .elementor-post__excerpt,.elementor-posts .elementor-post__card .elementor-post__title{margin-bottom:25px}.elementor-posts .elementor-post__card .elementor-post__badge,.elementor-posts .elementor-post__card .elementor-post__read-more{text-transform:uppercase}.elementor-posts .elementor-post__badge{position:absolute;top:0;background:#818a91;color:#fff;font-size:12px;padding:.6em 1.2em;line-height:1;font-weight:400;margin:20px;border-radius:999px}.elementor-posts .elementor-post__avatar{position:relative;padding:0 30px;width:100%;top:-25px;height:0;pointer-events:none}.elementor-posts .elementor-post__avatar img{border-radius:50%;width:60px;pointer-events:all;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card,.elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data,.elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data{margin-top:auto}.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar{padding-top:0;position:static;height:auto}.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar img.avatar{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);vertical-align:bottom}.elementor-posts--show-avatar .elementor-post__thumbnail__link{margin-bottom:25px}.elementor-posts__hover-gradient .elementor-post__card .elementor-post__thumbnail__link:after{display:block;content:"";background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.35)),color-stop(75%,transparent));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.35),transparent 75%);background-image:-o-linear-gradient(bottom,rgba(0,0,0,.35) 0,transparent 75%);background-image:linear-gradient(0deg,rgba(0,0,0,.35),transparent 75%);background-repeat:no-repeat;height:100%;width:100%;position:absolute;bottom:0;opacity:1;-webkit-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.elementor-posts__hover-gradient .elementor-post__card:hover .elementor-post__thumbnail__link:after{opacity:.5}.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img{height:100%}.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img{width:calc(100% + 1px)}.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img{height:115%}.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img{width:115%}.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img{height:115%}.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img{width:115%}.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img{height:100%}.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img{width:calc(100% + 1px)}.elementor-posts__hover-zoom-in .elementor-post__thumbnail img,.elementor-posts__hover-zoom-out .elementor-post__thumbnail img{-webkit-transition:height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s;transition:height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s;-o-transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1);transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1);transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s}.elementor-card-shadow-yes .elementor-post__card{-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,.15);box-shadow:0 0 10px 0 rgba(0,0,0,.15)}.elementor-card-shadow-yes .elementor-post__card:hover{-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.15);box-shadow:0 0 30px 0 rgba(0,0,0,.15)}.elementor-posts--skin-full_content article{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.elementor-posts--skin-full_content article .elementor-post__thumbnail{padding-bottom:0}body.elementor-editor-active .elementor-posts--skin-archive_full_content,body.elementor-editor-active .elementor-posts--skin-full_content{pointer-events:none}body.elementor-editor-active .elementor-posts--skin-archive_full_content .elementor-post__thumbnail__link,body.elementor-editor-active .elementor-posts--skin-full_content .elementor-post__thumbnail__link{display:none}body.elementor-editor-active .elementor-posts--show-thumbnail .elementor-post__thumbnail__link{display:block}.elementor-portfolio__filters{list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0;margin:0}.elementor-portfolio__filter{margin:0;cursor:pointer;padding:8px}.elementor-portfolio-item{-ms-flex-item-align:start;align-self:flex-start;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:ease-in-out;-o-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;overflow:hidden;margin:0}.elementor-portfolio-item__title{margin:0;padding:0;line-height:1;font-size:18px;color:#fff}.elementor-portfolio-item__tags__separator:before{content:", "}.elementor-portfolio-item__overlay{opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;padding:15px;-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;overflow:hidden;background-color:rgba(129,138,145,.8)}.elementor-portfolio-item__overlay:hover{opacity:1;-webkit-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.elementor-portfolio-item__img img[src=""]{background-color:rgba(0,0,0,.1);height:100%}.elementor-portfolio.elementor-has-item-ratio{-webkit-transition:height .5s;-o-transition:height .5s;transition:height .5s}.elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail{position:absolute;background-color:rgba(0,0,0,.1)}.elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail__link{padding-bottom:56.25%}.elementor ul li.elementor-portfolio__filter{list-style-type:none}.elementor-widget-archive-posts.load-more-align-center .elementor-button-wrapper,.elementor-widget-posts.load-more-align-center .elementor-button-wrapper{text-align:center}.elementor-widget-archive-posts.load-more-align-start .elementor-button-wrapper,.elementor-widget-posts.load-more-align-start .elementor-button-wrapper{text-align:start}.elementor-widget-archive-posts.load-more-align-end .elementor-button-wrapper,.elementor-widget-posts.load-more-align-end .elementor-button-wrapper{text-align:end}.elementor-widget-archive-posts.load-more-align-justify .elementor-button,.elementor-widget-posts.load-more-align-justify .elementor-button{width:100%}.elementor-widget-archive-posts .e-load-more-spinner,.elementor-widget-posts .e-load-more-spinner{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-archive-posts .e-load-more-spinner i,.elementor-widget-archive-posts .e-load-more-spinner svg,.elementor-widget-posts .e-load-more-spinner i,.elementor-widget-posts .e-load-more-spinner svg{margin:0 auto;display:none}.elementor-widget-archive-posts .e-load-more-spinner i,.elementor-widget-posts .e-load-more-spinner i{color:var(--load-more-spinner-color)}.elementor-widget-archive-posts .e-load-more-spinner svg,.elementor-widget-posts .e-load-more-spinner svg{fill:var(--load-more-spinner-color);height:1em;width:1em}.elementor-widget-archive-posts .e-load-more-message,.elementor-widget-posts .e-load-more-message{color:var(--load-more-message-color);text-align:var(--load-more-message-alignment,center);display:none;margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts.e-load-more-pagination-loading,.elementor-widget-posts.e-load-more-pagination-loading{cursor:default}.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner{margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner i,.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner svg,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner i,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner svg{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-archive-posts.e-load-more-pagination-loading .elementor-button-content-wrapper,.elementor-widget-posts.e-load-more-pagination-loading .elementor-button-content-wrapper{visibility:hidden}.elementor-widget-archive-posts.e-load-more-pagination-end .elementor-button-wrapper,.elementor-widget-posts.e-load-more-pagination-end .elementor-button-wrapper{display:none}.elementor-widget-archive-posts.e-load-more-pagination-end .e-load-more-message,.elementor-widget-posts.e-load-more-pagination-end .e-load-more-message{display:block}.elementor-widget-archive-posts.e-load-more-no-spinner .elementor-button-content-wrapper,.elementor-widget-posts.e-load-more-no-spinner .elementor-button-content-wrapper{visibility:visible}.elementor-widget-archive-posts .elementor-button-wrapper,.elementor-widget-posts .elementor-button-wrapper{margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts .elementor-button-wrapper .e-load-more-spinner,.elementor-widget-posts .elementor-button-wrapper .e-load-more-spinner{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);margin:inherit}.elementor-widget-archive-posts .elementor-button-wrapper .elementor-button,.elementor-widget-posts .elementor-button-wrapper .elementor-button{cursor:pointer;position:relative}.elementor-button.elementor-hidden,.elementor-hidden{display:none}.e-form__step{width:100%}.e-form__step:not(.elementor-hidden){display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.e-form__buttons{-ms-flex-wrap:wrap;flex-wrap:wrap}.e-form__buttons,.e-form__buttons__wrapper{display:-webkit-box;display:-ms-flexbox;display:flex}.e-form__indicators{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:nowrap;flex-wrap:nowrap;font-size:13px;margin-bottom:var(--e-form-steps-indicators-spacing)}.e-form__indicators,.e-form__indicators__indicator{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.e-form__indicators__indicator{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-preferred-size:0;flex-basis:0;padding:0 var(--e-form-steps-divider-gap)}.e-form__indicators__indicator__progress{width:100%;position:relative;background-color:var(--e-form-steps-indicator-progress-background-color);border-radius:var(--e-form-steps-indicator-progress-border-radius);overflow:hidden}.e-form__indicators__indicator__progress__meter{width:var(--e-form-steps-indicator-progress-meter-width,0);height:var(--e-form-steps-indicator-progress-height);line-height:var(--e-form-steps-indicator-progress-height);padding-right:15px;border-radius:var(--e-form-steps-indicator-progress-border-radius);background-color:var(--e-form-steps-indicator-progress-color);color:var(--e-form-steps-indicator-progress-meter-color);text-align:right;-webkit-transition:width .1s linear;-o-transition:width .1s linear;transition:width .1s linear}.e-form__indicators__indicator:first-child{padding-left:0}.e-form__indicators__indicator:last-child{padding-right:0}.e-form__indicators__indicator--state-inactive{color:var(--e-form-steps-indicator-inactive-primary-color,#c2cbd2)}.e-form__indicators__indicator--state-inactive [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-inactive-secondary-color,#fff)}.e-form__indicators__indicator--state-inactive object,.e-form__indicators__indicator--state-inactive svg{fill:var(--e-form-steps-indicator-inactive-primary-color,#c2cbd2)}.e-form__indicators__indicator--state-active{color:var(--e-form-steps-indicator-active-primary-color,#39b54a);border-color:var(--e-form-steps-indicator-active-secondary-color,#fff)}.e-form__indicators__indicator--state-active [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-active-secondary-color,#fff)}.e-form__indicators__indicator--state-active object,.e-form__indicators__indicator--state-active svg{fill:var(--e-form-steps-indicator-active-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed{color:var(--e-form-steps-indicator-completed-secondary-color,#fff)}.e-form__indicators__indicator--state-completed [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-completed-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed .e-form__indicators__indicator__label{color:var(--e-form-steps-indicator-completed-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed .e-form__indicators__indicator--shape-none{color:var(--e-form-steps-indicator-completed-primary-color,#39b54a);background-color:initial}.e-form__indicators__indicator--state-completed object,.e-form__indicators__indicator--state-completed svg{fill:var(--e-form-steps-indicator-completed-secondary-color,#fff)}.e-form__indicators__indicator__icon{width:var(--e-form-steps-indicator-padding,30px);height:var(--e-form-steps-indicator-padding,30px);font-size:var(--e-form-steps-indicator-icon-size);border-width:1px;border-style:solid;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden;margin-bottom:10px}.e-form__indicators__indicator__icon img,.e-form__indicators__indicator__icon object,.e-form__indicators__indicator__icon svg{width:var(--e-form-steps-indicator-icon-size);height:auto}.e-form__indicators__indicator__icon .e-font-icon-svg{height:1em}.e-form__indicators__indicator__number{width:var(--e-form-steps-indicator-padding,30px);height:var(--e-form-steps-indicator-padding,30px);border-width:1px;border-style:solid;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px}.e-form__indicators__indicator--shape-circle{border-radius:50%}.e-form__indicators__indicator--shape-square{border-radius:0}.e-form__indicators__indicator--shape-rounded{border-radius:5px}.e-form__indicators__indicator--shape-none{border:0}.e-form__indicators__indicator__label{text-align:center}.e-form__indicators__indicator__separator{width:100%;height:var(--e-form-steps-divider-width);background-color:#c2cbd2}.e-form__indicators--type-icon,.e-form__indicators--type-icon_text,.e-form__indicators--type-number,.e-form__indicators--type-number_text{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.e-form__indicators--type-icon .e-form__indicators__indicator__separator,.e-form__indicators--type-icon_text .e-form__indicators__indicator__separator,.e-form__indicators--type-number .e-form__indicators__indicator__separator,.e-form__indicators--type-number_text .e-form__indicators__indicator__separator{margin-top:calc(var(--e-form-steps-indicator-padding, 30px) / 2 - var(--e-form-steps-divider-width, 1px) / 2)}.elementor-field-type-hidden{display:none}.elementor-field-type-html{display:inline-block}.elementor-login .elementor-lost-password,.elementor-login .elementor-remember-me{font-size:.85em}.elementor-field-type-recaptcha_v3 .elementor-field-label{display:none}.elementor-field-type-recaptcha_v3 .grecaptcha-badge{z-index:1}.elementor-button .elementor-form-spinner{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.elementor-form .elementor-button>span{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-form .elementor-button .elementor-button-text{white-space:normal;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.elementor-form .elementor-button svg{height:auto}.elementor-form .elementor-button .e-font-icon-svg{height:1em}.elementor-widget-price-list .elementor-price-list{list-style:none;padding:0;margin:0}.elementor-widget-price-list .elementor-price-list li{margin:0}.elementor-price-list li:not(:last-child){margin-bottom:20px}.elementor-price-list .elementor-price-list-image{max-width:50%;-ms-flex-negative:0;flex-shrink:0;padding-right:25px}.elementor-price-list .elementor-price-list-image img{width:100%}.elementor-price-list .elementor-price-list-header,.elementor-price-list .elementor-price-list-item,.elementor-price-list .elementor-price-list-text{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-price-list .elementor-price-list-item{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-price-list .elementor-price-list-item .elementor-price-list-text{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-price-list .elementor-price-list-item .elementor-price-list-header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-preferred-size:100%;flex-basis:100%;font-size:19px;font-weight:600;margin-bottom:10px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-price-list .elementor-price-list-item .elementor-price-list-title{max-width:80%}.elementor-price-list .elementor-price-list-item .elementor-price-list-price{font-weight:600}.elementor-price-list .elementor-price-list-item p.elementor-price-list-description{-ms-flex-preferred-size:100%;flex-basis:100%;font-size:14px;margin:0}.elementor-price-list .elementor-price-list-item .elementor-price-list-separator{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-left:10px;margin-right:10px;border-bottom-style:dotted;border-bottom-width:2px;height:0}.elementor-price-table{text-align:center}.elementor-price-table .elementor-price-table__header{background:var(--e-price-table-header-background-color,#555);padding:20px 0}.elementor-price-table .elementor-price-table__heading{margin:0;padding:0;line-height:1.2;font-size:24px;font-weight:600;color:#fff}.elementor-price-table .elementor-price-table__subheading{font-size:13px;font-weight:400;color:#fff}.elementor-price-table .elementor-price-table__original-price{margin-right:15px;text-decoration:line-through;font-size:.5em;line-height:1;font-weight:400;-ms-flex-item-align:center;align-self:center}.elementor-price-table .elementor-price-table__original-price .elementor-price-table__currency{font-size:1em;margin:0}.elementor-price-table .elementor-price-table__price{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;color:#555;font-weight:800;font-size:65px;padding:40px 0}.elementor-price-table .elementor-price-table__price .elementor-typo-excluded{line-height:normal;letter-spacing:normal;text-transform:none;font-weight:400;font-size:medium;font-style:normal}.elementor-price-table .elementor-price-table__after-price{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;text-align:left;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-price-table .elementor-price-table__integer-part{line-height:.8}.elementor-price-table .elementor-price-table__currency,.elementor-price-table .elementor-price-table__fractional-part{line-height:1;font-size:.3em}.elementor-price-table .elementor-price-table__currency{margin-right:3px}.elementor-price-table .elementor-price-table__period{width:100%;font-size:13px;font-weight:400}.elementor-price-table .elementor-price-table__features-list{list-style-type:none;margin:0;padding:0;line-height:1;color:var(--e-price-table-features-list-color)}.elementor-price-table .elementor-price-table__features-list li{font-size:14px;line-height:1;margin:0;padding:0}.elementor-price-table .elementor-price-table__features-list li .elementor-price-table__feature-inner{margin-left:15px;margin-right:15px}.elementor-price-table .elementor-price-table__features-list li:not(:first-child):before{content:"";display:block;border:0 solid hsla(0,0%,47.8%,.3);margin:10px 12.5%}.elementor-price-table .elementor-price-table__features-list i{margin-right:10px;font-size:1.3em}.elementor-price-table .elementor-price-table__features-list svg{margin-right:10px;fill:var(--e-price-table-features-list-color);height:1.3em;width:1.3em}.elementor-price-table .elementor-price-table__features-list svg~*{vertical-align:text-top}.elementor-price-table .elementor-price-table__footer{padding:30px 0}.elementor-price-table .elementor-price-table__additional_info{margin:0;font-size:13px;line-height:1.4}.elementor-price-table__ribbon{position:absolute;top:0;left:auto;right:0;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);width:150px;overflow:hidden;height:150px}.elementor-price-table__ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000}.elementor-price-table__ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-price-table__ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}.elementor-widget-price-table .elementor-widget-container{overflow:hidden;background-color:#f7f7f7}.elementor-flip-box{height:280px;position:relative;-webkit-perspective:1000px;perspective:1000px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}@media (max-device-width:1024px){.elementor-flip-box{cursor:pointer}}.elementor-flip-box__front{background-color:#1abc9c}.elementor-flip-box__back{background-color:#4054b2;display:block}.elementor-flip-box__layer{position:absolute;width:100%;height:100%;-webkit-transition:all .6s ease-in-out;-o-transition:all .6s ease-in-out;transition:all .6s ease-in-out}.elementor-flip-box__layer__overlay{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;text-align:center;padding:35px;color:#fff}.elementor-flip-box__layer__title{font-size:21px}.elementor-flip-box__layer__description{font-size:14px}.elementor-flip-box__layer__description:not(:last-child),.elementor-flip-box__layer__title:not(:last-child){margin:0 0 20px;padding:0}.elementor-flip-box__layer__title{line-height:1;font-weight:600}.elementor-flip-box,.elementor-flip-box .elementor-view-framed,.elementor-flip-box .elementor-view-stacked{--e-flip-box-view-framed-stacked-icon-color:#fff}.elementor-flip-box .elementor-icon,.elementor-flip-box .elementor-view-framed .elementor-icon,.elementor-flip-box .elementor-view-stacked .elementor-icon{color:var(--e-flip-box-view-framed-stacked-icon-color)}.elementor-flip-box .elementor-icon svg,.elementor-flip-box .elementor-view-framed .elementor-icon svg,.elementor-flip-box .elementor-view-stacked .elementor-icon svg{fill:var(--e-flip-box-view-framed-stacked-icon-color)}.elementor-flip-box .elementor-view-framed .elementor-icon{border-color:#fff}.elementor-flip-box .elementor-view-stacked .elementor-icon{background-color:rgba(0,0,0,.5)}.elementor-flip-box__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-flip-box__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-flip-box__image{margin:0 0 20px;display:inline-block;width:100%}.elementor-flip-box__image img{width:50%}.elementor-flip-box .elementor-icon-wrapper{margin-bottom:20px}.elementor-flip-box--3d .elementor-flip-box__layer__inner{-webkit-transform:translateZ(90px) scale(.91);transform:translateZ(90px) scale(.91)}.elementor-flip-box--3d .elementor-flip-box__layer__overlay{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(.1px);transform:translateZ(.1px)}.elementor-flip-box--effect-flip .elementor-flip-box{-webkit-perspective:1000px;perspective:1000px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.elementor-flip-box--effect-flip .elementor-flip-box__layer{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-flip-box--effect-flip .elementor-flip-box__front{-webkit-transform:none;-ms-transform:none;transform:none;z-index:1}.elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box__back{-webkit-transform:rotateX(0) rotateY(-180deg);transform:rotateX(0) rotateY(-180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box__back,.elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(0) rotateY(180deg);transform:rotateX(0) rotateY(180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(0) rotateY(-180deg);transform:rotateX(0) rotateY(-180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box__back{-webkit-transform:rotateX(-180deg) rotateY(0);transform:rotateX(-180deg) rotateY(0)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box__back,.elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(180deg) rotateY(0);transform:rotateX(180deg) rotateY(0)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(-180deg) rotateY(0);transform:rotateX(-180deg) rotateY(0)}.elementor-flip-box--effect-push .elementor-flip-box__front{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(100%) translateY(0);-ms-transform:translateX(100%) translateY(0);transform:translateX(100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(-100%) translateY(0);-ms-transform:translateX(-100%) translateY(0);transform:translateX(-100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(0) translateY(-100%);-ms-transform:translateX(0) translateY(-100%);transform:translateX(0) translateY(-100%)}.elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(0) translateY(100%);-ms-transform:translateX(0) translateY(100%);transform:translateX(0) translateY(100%)}.elementor-flip-box--effect-push .elementor-flip-box,.elementor-flip-box--effect-slide .elementor-flip-box{overflow:hidden}.elementor-flip-box--effect-push .elementor-flip-box:hover .elementor-flip-box__back,.elementor-flip-box--effect-slide .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-right .elementor-flip-box__back{-webkit-transform:translateX(-100%) translateY(0);-ms-transform:translateX(-100%) translateY(0);transform:translateX(-100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-left .elementor-flip-box__back{-webkit-transform:translateX(100%) translateY(0);-ms-transform:translateX(100%) translateY(0);transform:translateX(100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-up .elementor-flip-box__back{-webkit-transform:translateX(0) translateY(100%);-ms-transform:translateX(0) translateY(100%);transform:translateX(0) translateY(100%)}.elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-down .elementor-flip-box__back{-webkit-transform:translateX(0) translateY(-100%);-ms-transform:translateX(0) translateY(-100%);transform:translateX(0) translateY(-100%)}.elementor-flip-box--effect-zoom-out .elementor-flip-box .elementor-flip-box__front{-webkit-transition:opacity .35s,width .1ms,-webkit-transform .7s;transition:opacity .35s,width .1ms,-webkit-transform .7s;-o-transition:transform .7s,opacity .35s,width .1ms;transition:transform .7s,opacity .35s,width .1ms;transition:transform .7s,opacity .35s,width .1ms,-webkit-transform .7s;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);z-index:1;width:100%}.elementor-flip-box--effect-zoom-out .elementor-flip-box:hover .elementor-flip-box__front{width:0;opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7);-webkit-transition:opacity .7s .1s,width .1ms .7s,-webkit-transform .8s;transition:opacity .7s .1s,width .1ms .7s,-webkit-transform .8s;-o-transition:transform .8s,opacity .7s .1s,width .1ms .7s;transition:transform .8s,opacity .7s .1s,width .1ms .7s;transition:transform .8s,opacity .7s .1s,width .1ms .7s,-webkit-transform .8s}.elementor-flip-box--effect-zoom-in .elementor-flip-box .elementor-flip-box__back{-webkit-transition:opacity .5s .2s,-webkit-transform .7s;transition:opacity .5s .2s,-webkit-transform .7s;-o-transition:transform .7s,opacity .5s .2s;transition:transform .7s,opacity .5s .2s;transition:transform .7s,opacity .5s .2s,-webkit-transform .7s;opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}.elementor-flip-box--effect-zoom-in .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transition:opacity .5s,-webkit-transform .7s;transition:opacity .5s,-webkit-transform .7s;-o-transition:transform .7s,opacity .5s;transition:transform .7s,opacity .5s;transition:transform .7s,opacity .5s,-webkit-transform .7s;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-flip-box--effect-fade .elementor-flip-box .elementor-flip-box__back{opacity:0}.elementor-flip-box--effect-fade .elementor-flip-box:hover .elementor-flip-box__back{opacity:1}.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__front{display:none}.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}.elementor-cta,.elementor-widget-call-to-action .elementor-widget-container{overflow:hidden}.elementor-cta{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.5s;-o-transition:.5s;transition:.5s}.elementor-cta--skin-classic .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--skin-classic .elementor-cta__bg-wrapper{position:relative;min-height:200px;width:100%}.elementor-cta--skin-classic .elementor-cta__content{-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%;background-color:#f7f7f7}.elementor-cta--skin-classic .elementor-cta__content-item,.elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon{color:#55595c;border-color:#55595c;fill:#55595c}.elementor-cta--skin-classic .elementor-cta__button.elementor-button{color:#55595c;border-color:#55595c}.elementor-cta--skin-cover .elementor-cta{display:block}.elementor-cta--skin-cover .elementor-cta__bg-wrapper{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%}.elementor-cta--skin-cover .elementor-cta__content{min-height:280px}.elementor-cta--skin-cover .elementor-cta__button.elementor-button,.elementor-cta--skin-cover .elementor-cta__content-item,.elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon{color:#fff;border-color:#fff}.elementor-cta--layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--layout-image-left .elementor-cta,.elementor-cta--layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--layout-image-left .elementor-cta__content,.elementor-cta--layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta__bg,.elementor-cta__bg-overlay{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s}.elementor-cta__bg-wrapper{z-index:1;overflow:hidden}.elementor-cta__bg{-webkit-background-size:cover;background-size:cover;background-position:50%;z-index:1}.elementor-cta__bg-overlay{z-index:2}.elementor-cta__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-cta__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-cta__title{font-size:23px}.elementor-cta__content{z-index:1;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;padding:35px;width:100%}.elementor-cta__content,.elementor-cta__content-item{position:relative;-webkit-transition:.5s;-o-transition:.5s;transition:.5s;color:#fff}.elementor-cta__content-item{width:100%;margin:0}.elementor-cta__content-item:not(:last-child){margin-bottom:15px}.elementor-cta__content-item .elementor-icon{color:#fff}.elementor-cta--valign-top .elementor-cta__content{-ms-flex-line-pack:start;align-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-cta--valign-middle .elementor-cta__content{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-cta--valign-bottom .elementor-cta__content{-ms-flex-line-pack:end;align-content:flex-end;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor-cta:hover .elementor-cta__bg-overlay{background-color:rgba(0,0,0,.3)}@media (max-device-width:1024px){.elementor-cta{cursor:pointer}}@media (min-width:-1px){.elementor-cta--widescreen-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--widescreen-layout-image-left .elementor-cta,.elementor-cta--widescreen-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--widescreen-layout-image-left .elementor-cta__content,.elementor-cta--widescreen-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--widescreen-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--widescreen-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:-1px){.elementor-cta--laptop-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--laptop-layout-image-left .elementor-cta,.elementor-cta--laptop-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--laptop-layout-image-left .elementor-cta__content,.elementor-cta--laptop-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--laptop-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--laptop-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:-1px){.elementor-cta--tablet_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta,.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__content,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:1024px){.elementor-cta--tablet-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet-layout-image-left .elementor-cta,.elementor-cta--tablet-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet-layout-image-left .elementor-cta__content,.elementor-cta--tablet-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--tablet-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:-1px){.elementor-cta--mobile_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta,.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__content,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:767px){.elementor-cta--mobile-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile-layout-image-left .elementor-cta,.elementor-cta--mobile-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile-layout-image-left .elementor-cta__content,.elementor-cta--mobile-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--mobile-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}.elementor-ribbon{position:absolute;z-index:1;top:0;left:auto;right:0;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);width:150px;overflow:hidden;height:150px}.elementor-ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000;color:#fff}.elementor-ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}.elementor-widget-countdown .elementor-countdown-expire--message{display:none;padding:20px;text-align:center}.elementor-widget-countdown .elementor-countdown-wrapper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-widget-countdown .elementor-countdown-item{padding:20px 0;text-align:center;color:#fff}.elementor-widget-countdown .elementor-countdown-digits,.elementor-widget-countdown .elementor-countdown-label{line-height:1}.elementor-widget-countdown .elementor-countdown-digits{font-size:69px}.elementor-widget-countdown .elementor-countdown-label{font-size:19px}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:auto;margin-left:auto}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-digits,.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-label{display:block}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-widget-countdown.elementor-countdown--label-inline{text-align:center}.elementor-widget-countdown.elementor-countdown--label-inline .elementor-countdown-item{display:inline-block;padding-left:5px;padding-right:5px}.elementor-slides .swiper-slide-bg{-webkit-background-size:cover;background-size:cover;background-position:50%;background-repeat:no-repeat;min-width:100%;min-height:100%}.elementor-slides .swiper-slide-inner{background-repeat:no-repeat;background-position:50%;position:absolute;top:0;left:0;bottom:0;right:0;padding:50px;margin:auto}.elementor-slides .swiper-slide-inner,.elementor-slides .swiper-slide-inner:hover{color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-slides .swiper-slide-inner .elementor-background-overlay{position:absolute;z-index:0;top:0;bottom:0;left:0;right:0}.elementor-slides .swiper-slide-inner .elementor-slide-content{position:relative;z-index:1;width:100%}.elementor-slides .swiper-slide-inner .elementor-slide-heading{font-size:35px;font-weight:700;line-height:1}.elementor-slides .swiper-slide-inner .elementor-slide-description{font-size:17px;line-height:1.4}.elementor-slides .swiper-slide-inner .elementor-slide-description:not(:last-child),.elementor-slides .swiper-slide-inner .elementor-slide-heading:not(:last-child){margin-bottom:30px}.elementor-slides .swiper-slide-inner .elementor-slide-button{border:2px solid #fff;color:#fff;background:transparent;display:inline-block}.elementor-slides .swiper-slide-inner .elementor-slide-button,.elementor-slides .swiper-slide-inner .elementor-slide-button:hover{background:transparent;color:inherit;text-decoration:none}.elementor--v-position-top .swiper-slide-inner{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor--v-position-bottom .swiper-slide-inner{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor--v-position-middle .swiper-slide-inner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor--h-position-left .swiper-slide-inner{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor--h-position-right .swiper-slide-inner{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor--h-position-center .swiper-slide-inner{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}body.rtl .elementor-widget-slides .elementor-swiper-button-next{left:10px;right:auto}body.rtl .elementor-widget-slides .elementor-swiper-button-prev{right:10px;left:auto}.elementor-slides-wrapper div:not(.swiper-slide)>.swiper-slide-inner{display:none}@media (max-width:767px){.elementor-slides .swiper-slide-inner{padding:30px}.elementor-slides .swiper-slide-inner .elementor-slide-heading{font-size:23px;line-height:1;margin-bottom:15px}.elementor-slides .swiper-slide-inner .elementor-slide-description{font-size:13px;line-height:1.4;margin-bottom:15px}}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn{background-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text{color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn{color:var(--e-share-buttons-primary-color,#ea4335);border-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon{background-color:var(--e-share-buttons-primary-color,#ea4335);color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon{color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon svg{fill:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-official .elementor-share-btn:hover{-webkit-filter:saturate(1.5) brightness(1.2);filter:saturate(1.5) brightness(1.2)}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_digg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_digg{background-color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_email,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_email{background-color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_print,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_print{background-color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_facebook,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_facebook{background-color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_google,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_google{background-color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pocket,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pocket{background-color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_linkedin,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_linkedin{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_odnoklassniki,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_odnoklassniki{background-color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pinterest,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pinterest{background-color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_reddit,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_reddit{background-color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_skype,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_skype{background-color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_slideshare,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_slideshare{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_snapchat,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_snapchat{background-color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_stumbleupon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_stumbleupon{background-color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_mix,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_mix{background-color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_tumblr,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_tumblr{background-color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitch,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitch{background-color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_telegram,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_telegram{background-color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitter,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitter{background-color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vimeo,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vimeo{background-color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vk,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vk{background-color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_whatsapp,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_whatsapp{background-color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_wordpress,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_wordpress{background-color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_xing,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_xing{background-color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg{color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg svg{fill:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email{color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email svg{fill:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print{color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print svg{fill:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook{color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook svg{fill:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google{color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google svg{fill:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket{color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket svg{fill:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin{color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin svg{fill:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki{color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki svg{fill:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest{color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest svg{fill:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit{color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit svg{fill:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype{color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype svg{fill:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare{color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare svg{fill:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat{color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat svg{fill:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon{color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon svg{fill:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix{color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix svg{fill:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr{color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr svg{fill:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch{color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch svg{fill:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram{color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram svg{fill:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter{color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter svg{fill:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo{color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo svg{fill:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk{color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk svg{fill:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp{color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp svg{fill:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress{color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress svg{fill:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing{color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing svg{fill:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_digg .elementor-share-btn__icon{background-color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_email .elementor-share-btn__icon{background-color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_print .elementor-share-btn__icon{background-color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_facebook .elementor-share-btn__icon{background-color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_google .elementor-share-btn__icon{background-color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pocket .elementor-share-btn__icon{background-color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_linkedin .elementor-share-btn__icon{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_odnoklassniki .elementor-share-btn__icon{background-color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pinterest .elementor-share-btn__icon{background-color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_reddit .elementor-share-btn__icon{background-color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_skype .elementor-share-btn__icon{background-color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_slideshare .elementor-share-btn__icon{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_snapchat .elementor-share-btn__icon{background-color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_stumbleupon .elementor-share-btn__icon{background-color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_mix .elementor-share-btn__icon{background-color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_tumblr .elementor-share-btn__icon{background-color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitch .elementor-share-btn__icon{background-color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_telegram .elementor-share-btn__icon{background-color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitter .elementor-share-btn__icon{background-color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vimeo .elementor-share-btn__icon{background-color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vk .elementor-share-btn__icon{background-color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_whatsapp .elementor-share-btn__icon{background-color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_wordpress .elementor-share-btn__icon{background-color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_xing .elementor-share-btn__icon{background-color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon{color:var(--e-share-buttons-icon-color,#fff)}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon svg{fill:var(--e-share-buttons-icon-color,#fff)}.elementor-share-buttons--skin-boxed .elementor-share-btn__icon,.elementor-share-buttons--skin-framed .elementor-share-btn__icon{margin-left:-.2em}.elementor-share-buttons--skin-boxed .elementor-share-btn,.elementor-share-buttons--skin-framed .elementor-share-btn{border-style:solid}.elementor-share-buttons--skin-gradient .elementor-share-btn__text,.elementor-share-buttons--skin-gradient.elementor-share-buttons--view-icon .elementor-share-btn__icon{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.12)),to(transparent));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.12),transparent);background-image:-o-linear-gradient(left,rgba(0,0,0,.12),transparent);background-image:linear-gradient(90deg,rgba(0,0,0,.12),transparent)}.elementor-share-buttons--skin-boxed .elementor-share-btn__text,.elementor-share-buttons--skin-gradient .elementor-share-btn__text,.elementor-share-buttons--skin-minimal .elementor-share-btn__text{padding-left:.9em}.elementor-share-buttons--skin-flat .elementor-share-btn,.elementor-share-buttons--skin-gradient .elementor-share-btn{background-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--skin-flat .elementor-share-btn__icon,.elementor-share-buttons--skin-flat .elementor-share-btn__text,.elementor-share-buttons--skin-gradient .elementor-share-btn__icon,.elementor-share-buttons--skin-gradient .elementor-share-btn__text{color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg,.elementor-share-buttons--skin-flat .elementor-share-btn__text svg,.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg,.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-rounded .elementor-share-btn__icon{border-radius:.5em}.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-circle .elementor-share-btn__icon{border-radius:99.9em}.elementor-share-buttons--view-text .elementor-share-btn__text{padding-left:1em}.elementor-share-buttons--view-icon .elementor-share-btn,.elementor-share-buttons--view-text .elementor-share-btn{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-share-buttons--view-icon .elementor-share-btn__icon,.elementor-share-buttons--view-icon .elementor-share-btn__text,.elementor-share-buttons--view-text .elementor-share-btn__icon,.elementor-share-buttons--view-text .elementor-share-btn__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-share-buttons--shape-rounded .elementor-share-btn{border-radius:.5em}.elementor-share-buttons--shape-circle .elementor-share-btn{border-radius:99.9em}.elementor-share-btn{overflow:hidden;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-transition-property:background-color,border-color,-webkit-filter;transition-property:background-color,border-color,-webkit-filter;-o-transition-property:filter,background-color,border-color;transition-property:filter,background-color,border-color;transition-property:filter,background-color,border-color,-webkit-filter;height:4.5em;cursor:pointer}.elementor-share-btn,.elementor-share-btn__icon,.elementor-share-btn__text{-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.elementor-share-btn__icon,.elementor-share-btn__text{-webkit-transition-property:color,background-color;-o-transition-property:color,background-color;transition-property:color,background-color}.elementor-share-btn__icon{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:4.5em;position:relative}.elementor-share-btn__icon i{font-size:var(--e-share-buttons-icon-size,1.7em)}.elementor-share-btn__icon svg{width:var(--e-share-buttons-icon-size,1.7em);height:var(--e-share-buttons-icon-size,1.7em)}.elementor-share-btn__text{font-size:1.5em;padding-right:1em;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:100}.elementor-share-btn__title{font-weight:700;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-share-buttons{text-align:var(--alignment,inherit);-moz-text-align-last:var(--alignment,inherit);text-align-last:var(--alignment,inherit)}.elementor-widget-share-buttons.elementor-grid-0 .elementor-widget-container{font-size:0}.elementor-skin-carousel .elementor-main-swiper,.elementor-skin-coverflow .elementor-main-swiper{height:230px}.elementor-skin-slideshow .elementor-main-swiper{height:450px;position:relative}.elementor-skin-slideshow .elementor-thumbnails-swiper .elementor-custom-embed-play i{font-size:50px}.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide{cursor:pointer}.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide:not(.swiper-slide-active):after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.3)}.elementor-carousel-image{background:no-repeat 50%;-webkit-background-size:cover;background-size:cover;height:100%;position:relative}.elementor-carousel-image-overlay{position:absolute;top:0;left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;width:100%;height:100%;padding:20px;color:var(--e-carousel-image-overlay-color,#fff);background-color:rgba(129,138,145,.8);-webkit-transition:opacity .5s,-webkit-transform .5s;transition:opacity .5s,-webkit-transform .5s;-o-transition:transform .5s,opacity .5s;transition:transform .5s,opacity .5s;transition:transform .5s,opacity .5s,-webkit-transform .5s}.elementor-carousel-image-overlay i{font-size:var(--e-carousel-image-overlay-icon-size,21px)}.elementor-carousel-image-overlay svg{fill:var(--e-carousel-image-overlay-color,#fff);width:var(--e-carousel-image-overlay-icon-size,21px);height:var(--e-carousel-image-overlay-icon-size,21px)}.elementor-testimonial__image{-ms-flex-negative:0;flex-shrink:0}.elementor-testimonial__image img{border-radius:999px;-webkit-box-sizing:content-box;box-sizing:content-box;-o-object-fit:cover;object-fit:cover}.elementor-testimonial__footer,.elementor-testimonial__header{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-testimonial__footer cite,.elementor-testimonial__header cite{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;font-style:normal;font-size:14px;line-height:1.5}.elementor-testimonial__name{font-weight:700}.elementor-testimonial--layout-image_above .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline .elementor-testimonial__footer{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-testimonial--layout-image_above .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline .elementor-testimonial__image+cite{margin-left:20px}.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__footer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__image+cite{margin-right:20px;margin-left:0}.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__footer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__image+cite{margin-right:0;margin-left:20px}.elementor-testimonial--layout-image_inline .elementor-testimonial__footer{margin-top:25px}.elementor-testimonial--layout-image_above .elementor-testimonial{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.elementor-testimonial--layout-image_above .elementor-testimonial__footer{margin-bottom:25px}.elementor-testimonial--layout-image_stacked .elementor-testimonial__footer{margin-top:25px;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-testimonial--layout-image_stacked .elementor-testimonial__image,.elementor-testimonial--layout-image_stacked .elementor-testimonial cite{margin-top:15px;width:100%}.elementor-testimonial--layout-image_left .elementor-testimonial,.elementor-testimonial--layout-image_right .elementor-testimonial{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-testimonial--layout-image_left .elementor-testimonial__footer,.elementor-testimonial--layout-image_right .elementor-testimonial__footer{-ms-flex-negative:0;flex-shrink:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center}.elementor-testimonial--layout-image_left .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_right .elementor-testimonial__image+cite{margin-top:15px}.elementor-testimonial--layout-image_left.elementor-testimonial--align-center .elementor-testimonial__footer,.elementor-testimonial--layout-image_right.elementor-testimonial--align-center .elementor-testimonial__footer{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-testimonial--layout-image_left .elementor-testimonial{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-testimonial--layout-image_left .elementor-testimonial__footer{padding-right:20px}.elementor-testimonial--layout-image_right .elementor-testimonial{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-testimonial--layout-image_right .elementor-testimonial__footer{padding-left:20px}.elementor-testimonial--align-right .elementor-testimonial{text-align:right}.elementor-testimonial--align-left .elementor-testimonial{text-align:left}.elementor-testimonial--align-center .elementor-testimonial{text-align:center}.elementor-testimonial--align-center .elementor-testimonial__footer{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-testimonial--align-center.elementor-testimonial--layout-image_inline .elementor-testimonial__image+cite{text-align:left}.elementor-testimonial--skin-default.elementor-testimonial--layout-image_above .elementor-testimonial__cite,.elementor-testimonial--skin-default.elementor-testimonial--layout-image_left .elementor-testimonial__cite,.elementor-testimonial--skin-default.elementor-testimonial--layout-image_right .elementor-testimonial__cite{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-top:25px}.elementor-testimonial--skin-bubble .elementor-testimonial__content{background-color:#e6e9ec;padding:20px;position:relative}.elementor-testimonial--skin-bubble .elementor-testimonial__content:after{content:"";display:block;width:14px;height:14px;background-color:#e6e9ec;position:absolute;-webkit-transform:scaleX(.75) rotate(45deg);-ms-transform:scaleX(.75) rotate(45deg);transform:scaleX(.75) rotate(45deg);border-width:0;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above .elementor-testimonial__content:after{bottom:calc(100% - 7px);-webkit-transform:scaleX(.75) rotate(-135deg);-ms-transform:scaleX(.75) rotate(-135deg);transform:scaleX(.75) rotate(-135deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-center .elementor-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) scaleX(.75) rotate(-135deg);-ms-transform:translateX(-50%) scaleX(.75) rotate(-135deg);transform:translateX(-50%) scaleX(.75) rotate(-135deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked .elementor-testimonial__content:after{top:calc(100% - 7px)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-center .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-center .elementor-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) scaleX(.75) rotate(45deg);-ms-transform:translateX(-50%) scaleX(.75) rotate(45deg);transform:translateX(-50%) scaleX(.75) rotate(45deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-left .elementor-testimonial__content:after{left:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-right .elementor-testimonial__content:after{right:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after{-webkit-transform:scaleY(.75) rotate(135deg);-ms-transform:scaleY(.75) rotate(135deg);transform:scaleY(.75) rotate(135deg);left:-8px}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after{-webkit-transform:scaleY(.75) rotate(-45deg);-ms-transform:scaleY(.75) rotate(-45deg);transform:scaleY(.75) rotate(-45deg);right:-8px}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after{top:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__footer,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__footer{padding-top:20px}.elementor-widget-testimonial-carousel .swiper-slide{padding:20px}.elementor-widget-testimonial-carousel .elementor-testimonial__text{font-size:1.3em;font-style:italic;line-height:1.5}.elementor-widget-testimonial-carousel .elementor-testimonial__image img{width:50px;height:50px}.elementor-widget-reviews .swiper-slide{background-color:#fff;border:1px solid #e1e8ed;border-radius:5px;padding:0}.elementor-widget-reviews .elementor-testimonial__text{font-size:14px;line-height:20px}.elementor-widget-reviews .elementor-testimonial__name{color:#1c2022}.elementor-widget-reviews .elementor-testimonial__title{color:#697882;font-size:12.5px;font-weight:400;font-family:inherit}.elementor-widget-reviews .elementor-testimonial__image{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-reviews .elementor-testimonial__image img{width:36px;height:36px}.elementor-widget-reviews .elementor-testimonial__icon{margin-left:auto;font-size:17px}.elementor-widget-reviews .elementor-testimonial__icon .fa+.fa{margin-left:.15em}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon{color:var(--e-testimonial-icon-color)}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-android{--e-testimonial-icon-color:#a4c639}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-apple{--e-testimonial-icon-color:#999}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-behance{--e-testimonial-icon-color:#1769ff}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-bitbucket{--e-testimonial-icon-color:#205081}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-codepen{--e-testimonial-icon-color:#000}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-delicious{--e-testimonial-icon-color:#39f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-digg{--e-testimonial-icon-color:#005be2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-dribbble{--e-testimonial-icon-color:#ea4c89}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-envelope{--e-testimonial-icon-color:#ea4335}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-facebook{--e-testimonial-icon-color:#3b5998}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-flickr{--e-testimonial-icon-color:#0063dc}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-foursquare{--e-testimonial-icon-color:#2d5be3}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-github{--e-testimonial-icon-color:#333}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-google-plus{--e-testimonial-icon-color:#dd4b39}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-houzz{--e-testimonial-icon-color:#7ac142}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-instagram{--e-testimonial-icon-color:#262626}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-jsfiddle{--e-testimonial-icon-color:#487aa2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-linkedin{--e-testimonial-icon-color:#0077b5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-medium{--e-testimonial-icon-color:#00ab6b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-meetup{--e-testimonial-icon-color:#ec1c40}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-mixcloud{--e-testimonial-icon-color:#273a4b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-odnoklassniki{--e-testimonial-icon-color:#f4731c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-pinterest{--e-testimonial-icon-color:#bd081c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-product-hunt{--e-testimonial-icon-color:#da552f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-reddit{--e-testimonial-icon-color:#ff4500}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-rss{--e-testimonial-icon-color:#f26522}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-shopping-cart{--e-testimonial-icon-color:#4caf50}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-skype{--e-testimonial-icon-color:#00aff0}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-slideshare{--e-testimonial-icon-color:#0077b5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-snapchat{--e-testimonial-icon-color:#fffc00}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-soundcloud{--e-testimonial-icon-color:#f80}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-spotify{--e-testimonial-icon-color:#2ebd59}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stack-overflow{--e-testimonial-icon-color:#fe7a15}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-steam{--e-testimonial-icon-color:#00adee}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stumbleupon{--e-testimonial-icon-color:#eb4924}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-telegram{--e-testimonial-icon-color:#2ca5e0}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumb-tack,.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumbtack{--e-testimonial-icon-color:#1aa1d8}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tripadvisor{--e-testimonial-icon-color:#589442}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tumblr{--e-testimonial-icon-color:#35465c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitch{--e-testimonial-icon-color:#6441a5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitter{--e-testimonial-icon-color:#1da1f2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vimeo{--e-testimonial-icon-color:#1ab7ea}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vk{--e-testimonial-icon-color:#45668e}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weibo{--e-testimonial-icon-color:#dd2430}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weixin{--e-testimonial-icon-color:#31a918}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-whatsapp{--e-testimonial-icon-color:#25d366}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-wordpress{--e-testimonial-icon-color:#21759b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-xing{--e-testimonial-icon-color:#026466}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-yelp{--e-testimonial-icon-color:#af0606}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-youtube{--e-testimonial-icon-color:#cd201f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-500px{--e-testimonial-icon-color:#0099e5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon svg{fill:var(--e-testimonial-icon-color)}.elementor-widget-reviews .elementor-testimonial__rating{background-image:-webkit-gradient(linear,left top,right top,from(#ffc82c),to(#ccc));background-image:-webkit-linear-gradient(left,#ffc82c var(--rating),#ccc var(--rating));background-image:-o-linear-gradient(left,#ffc82c var(--rating),#ccc var(--rating));background-image:linear-gradient(90deg,#ffc82c var(--rating),#ccc var(--rating));font-family:eicons}.elementor-widget-reviews .elementor-testimonial__header{display:-webkit-box;display:-ms-flexbox;display:flex;padding-top:15px;padding-bottom:6px}.elementor-widget-reviews .elementor-testimonial__image+cite{margin-left:9px}.elementor-widget-reviews .elementor-testimonial__separator{margin:0 auto;border-top:0;border-bottom:1px solid #e1e8ed;height:0}.elementor-widget-reviews .elementor-testimonial__content{padding-top:6px;padding-bottom:15px}.elementor-widget-reviews .elementor-testimonial__content,.elementor-widget-reviews .elementor-testimonial__header{padding-left:15px;padding-right:15px}.elementor-widget-reviews.elementor-review--has-separator .elementor-testimonial__header{border-bottom:1px solid #e1e8ed}.swiper-pagination-bullets{color:#fff;cursor:default}.swiper-slide{will-change:transform;border-style:solid;border-width:0;-webkit-transition-duration:.5s;-o-transition-duration:.5s;transition-duration:.5s;-webkit-transition-property:border,background,-webkit-transform;transition-property:border,background,-webkit-transform;-o-transition-property:border,background,transform;transition-property:border,background,transform;transition-property:border,background,transform,-webkit-transform;overflow:hidden}.swiper-slide:not(:hover) .e-overlay-animation-fade{opacity:0}.swiper-slide:not(:hover) .e-overlay-animation-slide-up{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-down{-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-right{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-left{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.swiper-slide:not(:hover) .e-overlay-animation-zoom-in{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);opacity:0}.swiper-slide a{display:inline}.swiper-slide a.elementor-button{display:inline-block}.elementor-widget-reviews .elementor-arrows-yes .elementor-main-swiper,.elementor-widget-testimonial-carousel .elementor-arrows-yes .elementor-main-swiper{width:calc(95% - 40px)}.elementor-widget-reviews .elementor-main-swiper,.elementor-widget-testimonial-carousel .elementor-main-swiper{width:95%}.elementor-widget-reviews .swiper-wrapper,.elementor-widget-testimonial-carousel .swiper-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-widget-reviews .swiper-slide,.elementor-widget-testimonial-carousel .swiper-slide{height:auto}.elementor-widget-reviews.elementor-pagination-type-bullets .swiper-container,.elementor-widget-reviews.elementor-pagination-type-fraction .swiper-container,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .swiper-container,.elementor-widget-testimonial-carousel.elementor-pagination-type-fraction .swiper-container{padding-bottom:40px}.elementor-widget-reviews .elementor-swiper-button-prev,.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-next,.elementor-widget-testimonial-carousel .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-next{left:0;right:unset}.elementor-widget-reviews .elementor-swiper-button-next,.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel .elementor-swiper-button-next,.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-prev{right:0;left:unset}.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-next,.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-next,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-prev{top:calc(50% - (40px / 2))}.elementor-widget-media-carousel .elementor-swiper-button-prev,.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-next{left:10px;right:unset}.elementor-widget-media-carousel .elementor-swiper-button-next,.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-prev{right:10px;left:unset}.entry-content blockquote.elementor-blockquote:not(.alignright):not(.alignleft),.entry-summary blockquote.elementor-blockquote{margin-right:0;margin-left:0}.elementor-widget-blockquote blockquote{margin:0;padding:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;quotes:none;border:0;font-style:normal;color:#55595c}.elementor-widget-blockquote blockquote:after,.elementor-widget-blockquote blockquote:before,.elementor-widget-blockquote blockquote cite:after,.elementor-widget-blockquote blockquote cite:before,.elementor-widget-blockquote blockquote footer:after,.elementor-widget-blockquote blockquote footer:before{content:"";content:none}.elementor-blockquote{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-blockquote__author,.elementor-blockquote__content{margin-bottom:0;font-style:normal}.elementor-blockquote__author{font-weight:700}.elementor-blockquote footer{margin-top:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-blockquote__tweet-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;color:#1da1f2;-ms-flex-item-align:end;align-self:flex-end;line-height:1;position:relative;width:-webkit-max-content;width:-moz-max-content;width:max-content}.elementor-blockquote__tweet-button:hover{color:#0967a0}.elementor-blockquote__tweet-button span{font-weight:600}.elementor-blockquote__tweet-button i,.elementor-blockquote__tweet-button span{vertical-align:middle}.elementor-blockquote__tweet-button i+span,.elementor-blockquote__tweet-button svg+span{margin-left:.5em}.elementor-blockquote__tweet-button svg{fill:#1da1f2;height:1em;width:1em}.elementor-blockquote__tweet-label{white-space:pre-wrap}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button{padding:.7em 1.2em;border-radius:100em;background-color:#1da1f2;color:#fff;font-size:15px}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover{background-color:#0967a0;color:#fff}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover:before,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover:before{border-right-color:#0967a0}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button svg,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button svg{fill:#fff;height:1em;width:1em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button{padding:0;width:2em;height:2em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:before{content:"";border:.5em solid transparent;border-right-color:#1da1f2;position:absolute;left:-.8em;top:50%;-webkit-transform:translateY(-50%) scaleY(.65);-ms-transform:translateY(-50%) scaleY(.65);transform:translateY(-50%) scaleY(.65);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:before{right:auto;left:-.8em;border-right-color:#1da1f2;border-left-color:transparent}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:hover:before{border-right-color:#0967a0}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:before{left:auto;right:-.8em;border-right-color:transparent;border-left-color:#1da1f2}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:hover:before{border-left-color:#0967a0}.elementor-blockquote--skin-boxed .elementor-blockquote{background-color:#e6e9ec;padding:30px}.elementor-blockquote--skin-border .elementor-blockquote{border-color:#e6e9ec;border-left:7px #e6e9ec;border-style:solid;padding-left:20px}.elementor-blockquote--skin-quotation .elementor-blockquote:before{content:"“";font-size:100px;color:#e6e9ec;font-family:Times New Roman,Times,serif;font-weight:900;line-height:1;display:block;height:.6em}.elementor-blockquote--skin-quotation .elementor-blockquote__content{margin-top:15px}.elementor-blockquote--align-left .elementor-blockquote__content{text-align:left}.elementor-blockquote--align-left .elementor-blockquote footer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-blockquote--align-right .elementor-blockquote__content{text-align:right}.elementor-blockquote--align-right .elementor-blockquote footer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-blockquote--align-center .elementor-blockquote{text-align:center}.elementor-blockquote--align-center .elementor-blockquote__author,.elementor-blockquote--align-center .elementor-blockquote footer{display:block}.elementor-blockquote--align-center .elementor-blockquote__tweet-button{margin-right:auto;margin-left:auto}.elementor-headline{font-size:43px;line-height:1.2;display:block}.elementor-headline-dynamic-text{color:var(--dynamic-text-color,#aebcb9)}.elementor-headline--style-rotate .elementor-headline-dynamic-wrapper{text-align:left}.elementor-headline--style-highlight .elementor-headline-dynamic-wrapper{overflow:visible;text-align:inherit}.elementor-headline--style-highlight .elementor-headline-dynamic-text{z-index:1}.elementor-headline--style-highlight .elementor-headline-plain-text{z-index:1;position:relative}.elementor-headline--style-highlight svg{position:absolute;top:50%;left:50%;width:calc(100% + 20px);height:calc(100% + 20px);-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);overflow:visible}.elementor-headline--style-highlight svg path{stroke:red;stroke-width:9;fill:none;opacity:0;stroke-dasharray:0 1500;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-headline.e-animated svg path{-webkit-animation:elementor-headline-dash forwards;animation:elementor-headline-dash forwards;-webkit-animation-duration:var(--animation-duration,1.2s);animation-duration:var(--animation-duration,1.2s);-webkit-animation-iteration-count:1;animation-iteration-count:1}.elementor-headline.e-animated svg path:nth-of-type(2){-webkit-animation-delay:calc(var(--animation-duration, 1.2s) / 2);animation-delay:calc(var(--animation-duration, 1.2s) / 2)}.elementor-headline.e-hide-highlight svg path{opacity:1;stroke-dasharray:1500 1500;-webkit-animation:hide-highlight .4s forwards;animation:hide-highlight .4s forwards;-webkit-animation-iteration-count:1;animation-iteration-count:1}@-webkit-keyframes elementor-headline-dash{0%{stroke-dasharray:0 1500;opacity:1}to{stroke-dasharray:1500 1500;opacity:1}}@keyframes elementor-headline-dash{0%{stroke-dasharray:0 1500;opacity:1}to{stroke-dasharray:1500 1500;opacity:1}}@-webkit-keyframes hide-highlight{0%{opacity:1;stroke-dasharray:1500 1500}to{opacity:0;-webkit-filter:blur(10px);filter:blur(10px)}}@keyframes hide-highlight{0%{opacity:1;stroke-dasharray:1500 1500}to{opacity:0;-webkit-filter:blur(10px);filter:blur(10px)}}.elementor-headline-text-wrapper{vertical-align:bottom}.elementor-headline-dynamic-wrapper{display:inline-block;position:relative}.elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text{display:inline-block;position:absolute;top:0;left:0}.elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text.elementor-headline-text-active{position:relative}.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text{opacity:0;-webkit-transform-origin:50% 100%;-ms-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-transform:rotateX(0deg);transform:rotateX(0deg);-webkit-animation:elementor-headline-flip-in 1.2s;animation:elementor-headline-flip-in 1.2s}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);-webkit-animation:elementor-headline-flip-out 1.2s;animation:elementor-headline-flip-out 1.2s}@-webkit-keyframes elementor-headline-flip-in{0%{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}35%{-webkit-transform:rotateX(120deg);transform:rotateX(120deg);opacity:0}65%{opacity:0}to{-webkit-transform:rotateX(1turn);transform:rotateX(1turn);opacity:1}}@keyframes elementor-headline-flip-in{0%{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}35%{-webkit-transform:rotateX(120deg);transform:rotateX(120deg);opacity:0}65%{opacity:0}to{-webkit-transform:rotateX(1turn);transform:rotateX(1turn);opacity:1}}@-webkit-keyframes elementor-headline-flip-out{0%{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}35%{-webkit-transform:rotateX(-40deg);transform:rotateX(-40deg);opacity:1}65%{opacity:0}to{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}}@keyframes elementor-headline-flip-out{0%{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}35%{-webkit-transform:rotateX(-40deg);transform:rotateX(-40deg);opacity:1}65%{opacity:0}to{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper{vertical-align:top;overflow:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:after{content:"";position:absolute;left:auto;right:0;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);height:90%;width:1px;background-color:#0d0d0d}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:not(.elementor-headline-typing-selected):after{-webkit-animation:elementor-headline-pulse 1s infinite;animation:elementor-headline-pulse 1s infinite}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected{background-color:var(--typing-selected-bg-color,#0d0d0d)}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected:after{visibility:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected .elementor-headline-dynamic-text{color:var(--typing-selected-color,var(--dynamic-text-color),#aebcb9)}.elementor-headline-animation-type-typing .elementor-headline-dynamic-text:not(.elementor-headline-text-active){visibility:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){position:absolute;visibility:hidden}@-webkit-keyframes elementor-headline-pulse{0%{-webkit-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);transform:translateY(-50%) scale(.9);opacity:0}to{-webkit-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);opacity:0}}@keyframes elementor-headline-pulse{0%{-webkit-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);transform:translateY(-50%) scale(.9);opacity:0}to{-webkit-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);opacity:0}}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{display:inline-block;-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text{-webkit-transform:scaleX(1.0005);-ms-transform:scaleX(1.0005);transform:scaleX(1.0005);opacity:0}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg);opacity:0}.elementor-headline-text-active .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{opacity:1}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-swirl-in .4s forwards;animation:elementor-headline-swirl-in .4s forwards}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-swirl-out .4s forwards;animation:elementor-headline-swirl-out .4s forwards}@-webkit-keyframes elementor-headline-swirl-in{0%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(-10deg);transform:translateZ(-20px) rotateX(-10deg)}to{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0deg);transform:translateZ(-20px) rotateX(0deg)}}@keyframes elementor-headline-swirl-in{0%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(-10deg);transform:translateZ(-20px) rotateX(-10deg)}to{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0deg);transform:translateZ(-20px) rotateX(0deg)}}@-webkit-keyframes elementor-headline-swirl-out{0%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0);transform:translateZ(-20px) rotateX(0)}60%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-100deg);transform:translateZ(-20px) rotateX(-100deg)}to{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-90deg);transform:translateZ(-20px) rotateX(-90deg)}}@keyframes elementor-headline-swirl-out{0%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0);transform:translateZ(-20px) rotateX(0)}60%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-100deg);transform:translateZ(-20px) rotateX(-100deg)}to{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-90deg);transform:translateZ(-20px) rotateX(-90deg)}}.elementor-headline-animation-type-slide-down .elementor-headline-text-wrapper{display:inline-block;padding:.2em 0}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper{overflow:hidden;vertical-align:top}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text{opacity:0;top:.2em}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-active{top:0;opacity:1;-webkit-animation:elementor-headline-slide-down-in .6s;animation:elementor-headline-slide-down-in .6s}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-slide-down-out .6s;animation:elementor-headline-slide-down-out .6s}@-webkit-keyframes elementor-headline-slide-down-in{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}60%{opacity:1;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes elementor-headline-slide-down-in{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}60%{opacity:1;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes elementor-headline-slide-down-out{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}60%{opacity:0;-webkit-transform:translateY(120%);transform:translateY(120%)}to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes elementor-headline-slide-down-out{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}60%{opacity:0;-webkit-transform:translateY(120%);transform:translateY(120%)}to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}}.elementor-headline-animation-type-clip .elementor-headline-text-wrapper{display:inline-block;padding:.2em 0}.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper{overflow:hidden;vertical-align:top}.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper:after{content:"";position:absolute;top:0;left:auto;right:0;width:2px;height:100%;background-color:#0d0d0d}.elementor-headline-animation-type-clip .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-clip .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-animation:elementor-headline-drop-in-in .8s;animation:elementor-headline-drop-in-in .8s}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-drop-in-out .8s;animation:elementor-headline-drop-in-out .8s}@-webkit-keyframes elementor-headline-drop-in-in{0%{opacity:0;-webkit-transform:translateZ(100px);transform:translateZ(100px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes elementor-headline-drop-in-in{0%{opacity:0;-webkit-transform:translateZ(100px);transform:translateZ(100px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes elementor-headline-drop-in-out{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translateZ(-100px);transform:translateZ(-100px)}}@keyframes elementor-headline-drop-in-out{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translateZ(-100px);transform:translateZ(-100px)}}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter{display:inline-block;-webkit-transform:rotateY(180deg);transform:rotateY(180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-headline-text-active .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-blinds-in .6s forwards;animation:elementor-headline-blinds-in .6s forwards}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-blinds-out .6s forwards;animation:elementor-headline-blinds-out .6s forwards}@-webkit-keyframes elementor-headline-blinds-in{0%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}to{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}}@keyframes elementor-headline-blinds-in{0%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}to{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}}@-webkit-keyframes elementor-headline-blinds-out{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}to{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}}@keyframes elementor-headline-blinds-out{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}to{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}}.elementor-headline-animation-type-wave .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter{display:inline-block;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-headline-text-active .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter{opacity:1}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-wave-up .6s forwards;animation:elementor-headline-wave-up .6s forwards}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-wave-down .6s forwards;animation:elementor-headline-wave-down .6s forwards}@-webkit-keyframes elementor-headline-wave-up{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}60%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes elementor-headline-wave-up{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}60%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes elementor-headline-wave-down{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}60%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}@keyframes elementor-headline-wave-down{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}60%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-animation:elementor-headline-slide-in .6s;animation:elementor-headline-slide-in .6s}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-slide-out .6s;animation:elementor-headline-slide-out .6s}@-webkit-keyframes elementor-headline-slide-in{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}60%{opacity:1;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes elementor-headline-slide-in{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}60%{opacity:1;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes elementor-headline-slide-out{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}60%{opacity:0;-webkit-transform:translateX(110%);transform:translateX(110%)}to{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes elementor-headline-slide-out{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}60%{opacity:0;-webkit-transform:translateX(110%);transform:translateX(110%)}to{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-slide .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper{-webkit-transition:width .5s;-o-transition:width .5s;transition:width .5s}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper{overflow:hidden}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text,.elementor-headline-animation-type-wave .elementor-headline-dynamic-text{white-space:nowrap}.elementor-msie .elementor-headline--style-highlight svg{top:auto;left:auto;-webkit-transform:translate(-100%);-ms-transform:translate(-100%);transform:translate(-100%)}@-webkit-keyframes e-hotspot-soft-beat{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.1);transform:scale(1.1)}}@keyframes e-hotspot-soft-beat{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.1);transform:scale(1.1)}}@-webkit-keyframes e-hotspot-expand{0%{-webkit-transform:scale(.5);transform:scale(.5);opacity:1}to{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}@keyframes e-hotspot-expand{0%{-webkit-transform:scale(.5);transform:scale(.5);opacity:1}to{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}.elementor-widget-hotspot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--background-align);-ms-flex-pack:var(--background-align);justify-content:var(--background-align)}.elementor-widget-hotspot .elementor-widget-container{position:relative;display:inline-block;width:var(--container-width);max-width:var(--container-max-width);height:var(--container-height)}.elementor-widget-hotspot .elementor-widget-container>img{display:block;width:var(--image-width,auto);height:var(--container-height);opacity:var(--opacity,1)}.e-hotspot{z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:absolute}.e-hotspot--position-left.e-hotspot--position-top{-webkit-transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)));-ms-transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)));transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)))}.e-hotspot--position-left.e-hotspot--position-bottom{-webkit-transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y));-ms-transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y));transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y))}.e-hotspot--position-right.e-hotspot--position-top{-webkit-transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)));-ms-transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)));transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)))}.e-hotspot--position-right.e-hotspot--position-bottom{-webkit-transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y));-ms-transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y));transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y))}.e-hotspot--active{z-index:2}.e-hotspot__inner-circle,.e-hotspot__outer-circle{content:"";display:inline-block;-webkit-box-sizing:content-box;box-sizing:content-box;border-radius:50%}.e-hotspot__inner-circle{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background-color:var(--hotspot-color);padding:calc(var(--hotspot-size, 18px) / 2)}.e-hotspot__outer-circle{background-color:var(--hotspot-color);padding:var(--hotspot-padding,4px)}.e-hotspot--icon .e-hotspot__button,.e-hotspot__outer-circle{width:var(--hotspot-size,18px);height:var(--hotspot-size,18px)}.e-hotspot--icon .e-hotspot__button{line-height:0;-webkit-box-sizing:content-box;box-sizing:content-box;font-size:var(--hotspot-size,18px)}.e-hotspot__icon,.e-hotspot__label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.e-hotspot__icon svg,.e-hotspot__label svg{width:var(--hotspot-size,18px);height:auto}.e-hotspot__button{cursor:pointer;position:relative;display:grid;grid-auto-flow:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--hotspot-color);font-size:var(--hotspot-size,18px);min-width:var(--hotspot-button-width);min-height:var(--hotspot-button-height)}.e-hotspot__button:before{z-index:-2;content:"";width:100%;height:100%;left:-5px;top:-5px;position:absolute;padding:5px;-webkit-box-sizing:content-box;box-sizing:content-box}.e-hotspot__button svg{fill:var(--hotspot-color)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot__button{min-width:var(--hotspot-min-width);min-height:var(--hotspot-min-height);background-color:var(--hotspot-box-color);padding:var(--hotspot-padding,4px);border-radius:var(--hotspot-border-radius,3px)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot__button:before{border-radius:var(--hotspot-border-radius,3px)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{background-color:var(--hotspot-box-color)}.e-hotspot--overlay{opacity:.7;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.e-hotspot--active .e-hotspot--overlay,.e-hotspot--overlay:hover{opacity:1}.e-hotspot--soft-beat{-webkit-animation:e-hotspot-soft-beat .7s infinite alternate;animation:e-hotspot-soft-beat .7s infinite alternate;-webkit-animation-timing-function:ease;animation-timing-function:ease}.e-hotspot--expand .e-hotspot__outer-circle,.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{-webkit-animation:e-hotspot-expand 2s infinite;animation:e-hotspot-expand 2s infinite}.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{content:"";width:100%;height:100%;position:absolute;z-index:-1;opacity:0}.e-hotspot--sequenced{-webkit-animation:fadeIn .3s;animation:fadeIn .3s;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-fill-mode:both;animation-fill-mode:both}.e-hotspot__direction-mask{overflow:hidden;position:absolute;pointer-events:none}.e-hotspot__tooltip{white-space:var(--white-space,nowrap);-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-duration:var(--tooltip-transition-duration,.5s);-o-transition-duration:var(--tooltip-transition-duration,.5s);transition-duration:var(--tooltip-transition-duration,.5s);-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;position:absolute;pointer-events:none;color:var(--tooltip-text-color,#fff);text-align:var(--tooltip-align);min-width:var(--tooltip-min-width);padding:var(--tooltip-padding,8px);border-radius:var(--tooltip-border-radius);background-color:var(--tooltip-color)}.e-hotspot__tooltip p:last-of-type{margin-bottom:0}.e-hotspot__direction-mask .e-hotspot__tooltip{-webkit-box-shadow:none!important;box-shadow:none!important;position:static}.e-hotspot--active .e-hotspot__tooltip{pointer-events:visible}.e-hotspot--fade-in-out{opacity:0}.e-hotspot--active .e-hotspot--fade-in-out{opacity:1}.e-hotspot--fade-grow{opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.e-hotspot--active .e-hotspot--fade-grow{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.e-hotspot--override-tooltip-animation-from-top,.e-hotspot--tooltip-animation-from-top{-webkit-transform:translateY(calc(-100% - 1px));-ms-transform:translateY(calc(-100% - 1px));transform:translateY(calc(-100% - 1px))}.e-hotspot--override-tooltip-animation-from-left,.e-hotspot--tooltip-animation-from-left{-webkit-transform:translate(calc(-100% - 1px));-ms-transform:translate(calc(-100% - 1px));transform:translate(calc(-100% - 1px))}.e-hotspot--override-tooltip-animation-from-right,.e-hotspot--tooltip-animation-from-right{-webkit-transform:translate(calc(100% + 1px));-ms-transform:translate(calc(100% + 1px));transform:translate(calc(100% + 1px))}.e-hotspot--override-tooltip-animation-from-bottom,.e-hotspot--tooltip-animation-from-bottom{-webkit-transform:translateY(calc(100% + 1px));-ms-transform:translateY(calc(100% + 1px));transform:translateY(calc(100% + 1px))}.e-hotspot--fade-direction{opacity:0}.e-hotspot--active .e-hotspot--fade-direction,.e-hotspot--active .e-hotspot--slide-direction{-webkit-transform:translate(0) scale(1);-ms-transform:translate(0) scale(1);transform:translate(0) scale(1);opacity:1}.e-hotspot--show-tooltip{-webkit-transition:none;-o-transition:none;transition:none;opacity:1;pointer-events:visible;-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.elementor-facebook-widget.fb_iframe_widget,.elementor-facebook-widget.fb_iframe_widget span{width:100%!important}.elementor-facebook-widget.fb_iframe_widget iframe{position:relative;width:100%!important}.elementor-facebook-widget.fb-like{height:1px}.elementor-widget-facebook-comments iframe{width:100%!important}.site-main .menu-navigation-container{overflow:visible}.elementor-item:after,.elementor-item:before{display:block;position:absolute;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transition-timing-function:cubic-bezier(.58,.3,.005,1);-o-transition-timing-function:cubic-bezier(.58,.3,.005,1);transition-timing-function:cubic-bezier(.58,.3,.005,1)}.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{opacity:0}.elementor-item-active:after,.elementor-item-active:before,.elementor-item.highlighted:after,.elementor-item.highlighted:before,.elementor-item:focus:after,.elementor-item:focus:before,.elementor-item:hover:after,.elementor-item:hover:before{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.e--pointer-double-line .elementor-item:after,.e--pointer-double-line .elementor-item:before,.e--pointer-overline .elementor-item:after,.e--pointer-overline .elementor-item:before,.e--pointer-underline .elementor-item:after,.e--pointer-underline .elementor-item:before{height:3px;width:100%;left:0;background-color:#55595c;z-index:2}.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{height:0;width:0;left:50%}.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:10px}.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{bottom:10px}.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:-10px}.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{bottom:-10px}.e--pointer-double-line.e--animation-none,.e--pointer-double-line.e--animation-none .elementor-item,.e--pointer-double-line.e--animation-none .elementor-item:after,.e--pointer-double-line.e--animation-none .elementor-item:before,.e--pointer-double-line.e--animation-none .elementor-item:focus,.e--pointer-double-line.e--animation-none .elementor-item:hover,.e--pointer-double-line.e--animation-none:after,.e--pointer-double-line.e--animation-none:before,.e--pointer-double-line.e--animation-none:focus,.e--pointer-double-line.e--animation-none:hover,.e--pointer-overline.e--animation-none,.e--pointer-overline.e--animation-none .elementor-item,.e--pointer-overline.e--animation-none .elementor-item:after,.e--pointer-overline.e--animation-none .elementor-item:before,.e--pointer-overline.e--animation-none .elementor-item:focus,.e--pointer-overline.e--animation-none .elementor-item:hover,.e--pointer-overline.e--animation-none:after,.e--pointer-overline.e--animation-none:before,.e--pointer-overline.e--animation-none:focus,.e--pointer-overline.e--animation-none:hover,.e--pointer-underline.e--animation-none,.e--pointer-underline.e--animation-none .elementor-item,.e--pointer-underline.e--animation-none .elementor-item:after,.e--pointer-underline.e--animation-none .elementor-item:before,.e--pointer-underline.e--animation-none .elementor-item:focus,.e--pointer-underline.e--animation-none .elementor-item:hover,.e--pointer-underline.e--animation-none:after,.e--pointer-underline.e--animation-none:before,.e--pointer-underline.e--animation-none:focus,.e--pointer-underline.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-double-line .elementor-item:before,.e--pointer-overline .elementor-item:before{content:"";top:0}.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{width:10px;left:-20px}.e--pointer-double-line .elementor-item:after,.e--pointer-underline .elementor-item:after{content:"";bottom:0}.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{width:10px;inset-inline-start:100%}.e--pointer-framed .elementor-item:after,.e--pointer-framed .elementor-item:before{background:transparent;left:0;top:0;bottom:0;right:0;border:3px solid #55595c}.e--pointer-framed .elementor-item:before{content:""}.e--pointer-framed.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(.75);-ms-transform:scale(.75);transform:scale(.75)}.e--pointer-framed.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(1.25);-ms-transform:scale(1.25);transform:scale(1.25)}.e--pointer-framed.e--animation-grow .elementor-item:before,.e--pointer-framed.e--animation-shrink .elementor-item:before{-webkit-transition:opacity .2s,-webkit-transform .4s;transition:opacity .2s,-webkit-transform .4s;-o-transition:opacity .2s,transform .4s;transition:opacity .2s,transform .4s;transition:opacity .2s,transform .4s,-webkit-transform .4s}.e--pointer-framed.e--animation-draw .elementor-item:after,.e--pointer-framed.e--animation-draw .elementor-item:before{width:3px;height:3px}.e--pointer-framed.e--animation-draw .elementor-item:before{border-width:0 0 3px 3px;-webkit-transition:width .1s .2s,height .1s .3s,opacity .12s .22s;-o-transition:width .1s .2s,height .1s .3s,opacity .12s .22s;transition:width .1s .2s,height .1s .3s,opacity .12s .22s}.e--pointer-framed.e--animation-draw .elementor-item:after{content:"";top:auto;bottom:0;left:auto;right:0;border-width:3px 3px 0 0;-webkit-transition:width .1s,height .1s .1s,opacity .02s .18s;-o-transition:width .1s,height .1s .1s,opacity .02s .18s;transition:width .1s,height .1s .1s,opacity .02s .18s}.e--pointer-framed.e--animation-draw .elementor-item-active:after,.e--pointer-framed.e--animation-draw .elementor-item-active:before,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,.e--pointer-framed.e--animation-draw .elementor-item:focus:after,.e--pointer-framed.e--animation-draw .elementor-item:focus:before,.e--pointer-framed.e--animation-draw .elementor-item:hover:after,.e--pointer-framed.e--animation-draw .elementor-item:hover:before{width:100%;height:100%}.e--pointer-framed.e--animation-draw .elementor-item-active:before,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,.e--pointer-framed.e--animation-draw .elementor-item:focus:before,.e--pointer-framed.e--animation-draw .elementor-item:hover:before{-webkit-transition:opacity .02s,height .1s,width .1s .1s;-o-transition:opacity .02s,height .1s,width .1s .1s;transition:opacity .02s,height .1s,width .1s .1s}.e--pointer-framed.e--animation-draw .elementor-item-active:after,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,.e--pointer-framed.e--animation-draw .elementor-item:focus:after,.e--pointer-framed.e--animation-draw .elementor-item:hover:after{-webkit-transition:opacity .02s .2s,height .1s .2s,width .1s .3s;-o-transition:opacity .02s .2s,height .1s .2s,width .1s .3s;transition:opacity .02s .2s,height .1s .2s,width .1s .3s}.e--pointer-framed.e--animation-corners .elementor-item:after,.e--pointer-framed.e--animation-corners .elementor-item:before{width:3px;height:3px}.e--pointer-framed.e--animation-corners .elementor-item:before{border-width:3px 0 0 3px}.e--pointer-framed.e--animation-corners .elementor-item:after{content:"";top:auto;bottom:0;left:auto;right:0;border-width:0 3px 3px 0}.e--pointer-framed.e--animation-corners .elementor-item-active:after,.e--pointer-framed.e--animation-corners .elementor-item-active:before,.e--pointer-framed.e--animation-corners .elementor-item.highlighted:after,.e--pointer-framed.e--animation-corners .elementor-item.highlighted:before,.e--pointer-framed.e--animation-corners .elementor-item:focus:after,.e--pointer-framed.e--animation-corners .elementor-item:focus:before,.e--pointer-framed.e--animation-corners .elementor-item:hover:after,.e--pointer-framed.e--animation-corners .elementor-item:hover:before{width:100%;height:100%;-webkit-transition:opacity 2ms,width .4s,height .4s;-o-transition:opacity 2ms,width .4s,height .4s;transition:opacity 2ms,width .4s,height .4s}.e--pointer-framed.e--animation-none,.e--pointer-framed.e--animation-none .elementor-item,.e--pointer-framed.e--animation-none .elementor-item:after,.e--pointer-framed.e--animation-none .elementor-item:before,.e--pointer-framed.e--animation-none .elementor-item:focus,.e--pointer-framed.e--animation-none .elementor-item:hover,.e--pointer-framed.e--animation-none:after,.e--pointer-framed.e--animation-none:before,.e--pointer-framed.e--animation-none:focus,.e--pointer-framed.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-background .elementor-item:after,.e--pointer-background .elementor-item:before{content:"";-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.e--pointer-background .elementor-item:before{top:0;left:0;right:0;bottom:0;background:#55595c;z-index:-1}.e--pointer-background .elementor-item-active,.e--pointer-background .elementor-item.highlighted,.e--pointer-background .elementor-item:focus,.e--pointer-background .elementor-item:hover{color:#fff}.e--pointer-background.e--animation-grow .elementor-item:before{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}.e--pointer-background.e--animation-grow .elementor-item-active:before,.e--pointer-background.e--animation-grow .elementor-item.highlighted:before,.e--pointer-background.e--animation-grow .elementor-item:focus:before,.e--pointer-background.e--animation-grow .elementor-item:hover:before{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.e--pointer-background.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.e--pointer-background.e--animation-shrink .elementor-item-active:before,.e--pointer-background.e--animation-shrink .elementor-item.highlighted:before,.e--pointer-background.e--animation-shrink .elementor-item:focus:before,.e--pointer-background.e--animation-shrink .elementor-item:hover:before{-webkit-transition:opacity .15s,-webkit-transform .4s;transition:opacity .15s,-webkit-transform .4s;-o-transition:opacity .15s,transform .4s;transition:opacity .15s,transform .4s;transition:opacity .15s,transform .4s,-webkit-transform .4s}.e--pointer-background.e--animation-sweep-left .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{left:100%}.e--pointer-background.e--animation-sweep-right .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{right:100%}.e--pointer-background.e--animation-sweep-up .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:100%}.e--pointer-background.e--animation-sweep-down .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{bottom:100%}.e--pointer-background.e--animation-shutter-out-vertical .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{bottom:50%;top:50%}.e--pointer-background.e--animation-shutter-out-horizontal .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{right:50%;left:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after{top:0;left:0;right:0;bottom:0;background:#55595c;z-index:-1}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:before{top:0;bottom:100%}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after{top:100%;bottom:0}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:before{bottom:50%}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:after{top:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:before{right:0;left:100%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after{right:100%;left:0}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:before{left:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:after{right:50%}.e--pointer-background.e--animation-none,.e--pointer-background.e--animation-none .elementor-item,.e--pointer-background.e--animation-none .elementor-item:after,.e--pointer-background.e--animation-none .elementor-item:before,.e--pointer-background.e--animation-none .elementor-item:focus,.e--pointer-background.e--animation-none .elementor-item:hover,.e--pointer-background.e--animation-none:after,.e--pointer-background.e--animation-none:before,.e--pointer-background.e--animation-none:focus,.e--pointer-background.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-text.e--animation-skew .elementor-item:focus,.e--pointer-text.e--animation-skew .elementor-item:hover{-webkit-transform:skew(-8deg);-ms-transform:skew(-8deg);transform:skew(-8deg)}.e--pointer-text.e--animation-grow .elementor-item:focus,.e--pointer-text.e--animation-grow .elementor-item:hover{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.e--pointer-text.e--animation-shrink .elementor-item:focus,.e--pointer-text.e--animation-shrink .elementor-item:hover{-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}.e--pointer-text.e--animation-float .elementor-item:focus,.e--pointer-text.e--animation-float .elementor-item:hover{-webkit-transform:translateY(-8px);-ms-transform:translateY(-8px);transform:translateY(-8px)}.e--pointer-text.e--animation-sink .elementor-item:focus,.e--pointer-text.e--animation-sink .elementor-item:hover{-webkit-transform:translateY(8px);-ms-transform:translateY(8px);transform:translateY(8px)}.e--pointer-text.e--animation-rotate .elementor-item:focus,.e--pointer-text.e--animation-rotate .elementor-item:hover{-webkit-transform:rotate(6deg);-ms-transform:rotate(6deg);transform:rotate(6deg)}.e--pointer-text.e--animation-none,.e--pointer-text.e--animation-none .elementor-item,.e--pointer-text.e--animation-none .elementor-item:after,.e--pointer-text.e--animation-none .elementor-item:before,.e--pointer-text.e--animation-none .elementor-item:focus,.e--pointer-text.e--animation-none .elementor-item:hover,.e--pointer-text.e--animation-none:after,.e--pointer-text.e--animation-none:before,.e--pointer-text.e--animation-none:focus,.e--pointer-text.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.elementor-nav-menu--main .elementor-nav-menu a{-webkit-transition:.4s;-o-transition:.4s;transition:.4s}.elementor-nav-menu--main .elementor-nav-menu a,.elementor-nav-menu--main .elementor-nav-menu a.highlighted,.elementor-nav-menu--main .elementor-nav-menu a:focus,.elementor-nav-menu--main .elementor-nav-menu a:hover{padding:13px 20px}.elementor-nav-menu--main .elementor-nav-menu a.current{background:#373a3c;color:#fff}.elementor-nav-menu--main .elementor-nav-menu a.disabled{background:#55595c;color:#a1a6a9}.elementor-nav-menu--main .elementor-nav-menu ul{position:absolute;width:12em;border-width:0;border-style:solid;padding:0}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down,.elementor-nav-menu--main .elementor-nav-menu span.scroll-up{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:20px}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow,.elementor-nav-menu--main .elementor-nav-menu span.scroll-up-arrow{position:absolute;top:-2px;left:50%;margin-left:-8px;width:0;height:0;overflow:hidden;border:8px dashed transparent;border-bottom:8px solid #494c4f}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow{top:6px;border-style:solid dashed dashed;border-color:#494c4f transparent transparent}.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow i{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow .e-font-icon-svg{height:1em;width:1em}.elementor-nav-menu--layout-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-nav-menu--layout-horizontal .elementor-nav-menu{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-nav-menu--layout-horizontal .elementor-nav-menu a{white-space:nowrap;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li>.scroll-down,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li ul{top:100%!important}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>a{-webkit-margin-start:var(--e-nav-menu-horizontal-menu-item-margin);margin-inline-start:var(--e-nav-menu-horizontal-menu-item-margin)}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>.scroll-down,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>.scroll-up,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>ul{left:var(--e-nav-menu-horizontal-menu-item-margin)!important}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:last-child)>a{-webkit-margin-end:var(--e-nav-menu-horizontal-menu-item-margin);margin-inline-end:var(--e-nav-menu-horizontal-menu-item-margin)}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:last-child):after{content:var(--e-nav-menu-divider-content,none);height:var(--e-nav-menu-divider-height,35%);border-left:var(--e-nav-menu-divider-width,2px) var(--e-nav-menu-divider-style,solid) var(--e-nav-menu-divider-color,#000);border-bottom-color:var(--e-nav-menu-divider-color,#000);border-right-color:var(--e-nav-menu-divider-color,#000);border-top-color:var(--e-nav-menu-divider-color,#000);-ms-flex-item-align:center;align-self:center}.elementor-nav-menu__align-right .elementor-nav-menu{margin-left:auto}.elementor-nav-menu__align-right .elementor-nav-menu,.elementor-nav-menu__align-right .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-nav-menu__align-left .elementor-nav-menu{margin-right:auto}.elementor-nav-menu__align-left .elementor-nav-menu,.elementor-nav-menu__align-left .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-nav-menu__align-center .elementor-nav-menu{margin-left:auto;margin-right:auto}.elementor-nav-menu__align-center .elementor-nav-menu,.elementor-nav-menu__align-center .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu{width:100%}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu>li{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-nav-menu:not(.elementor-nav-menu--toggle) .elementor-menu-toggle{display:none}.elementor-widget-nav-menu .elementor-widget-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-nav-menu{position:relative;z-index:2}.elementor-nav-menu:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.elementor-nav-menu,.elementor-nav-menu li,.elementor-nav-menu ul{display:block;list-style:none;margin:0;padding:0;line-height:normal;-webkit-tap-highlight-color:rgba(0,0,0,0)}.elementor-nav-menu ul{display:none}.elementor-nav-menu ul ul a,.elementor-nav-menu ul ul a:active,.elementor-nav-menu ul ul a:focus,.elementor-nav-menu ul ul a:hover{border-left:16px solid transparent}.elementor-nav-menu ul ul ul a,.elementor-nav-menu ul ul ul a:active,.elementor-nav-menu ul ul ul a:focus,.elementor-nav-menu ul ul ul a:hover{border-left:24px solid transparent}.elementor-nav-menu ul ul ul ul a,.elementor-nav-menu ul ul ul ul a:active,.elementor-nav-menu ul ul ul ul a:focus,.elementor-nav-menu ul ul ul ul a:hover{border-left:32px solid transparent}.elementor-nav-menu ul ul ul ul ul a,.elementor-nav-menu ul ul ul ul ul a:active,.elementor-nav-menu ul ul ul ul ul a:focus,.elementor-nav-menu ul ul ul ul ul a:hover{border-left:40px solid transparent}.elementor-nav-menu a,.elementor-nav-menu li{position:relative}.elementor-nav-menu li{border-width:0}.elementor-nav-menu a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-nav-menu a,.elementor-nav-menu a:focus,.elementor-nav-menu a:hover{padding:10px 20px;line-height:20px}.elementor-nav-menu a.current{background:#373a3c;color:#fff}.elementor-nav-menu a.disabled{cursor:not-allowed;color:#a1a6a9}.elementor-nav-menu .e-plus-icon:before{content:"+"}.elementor-nav-menu .sub-arrow{line-height:1;padding:10px 0 10px 10px;margin-top:-10px;margin-bottom:-10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-nav-menu .sub-arrow i{pointer-events:none}.elementor-nav-menu .sub-arrow .fa.fa-chevron-down,.elementor-nav-menu .sub-arrow .fas.fa-chevron-down{font-size:.7em}.elementor-nav-menu .sub-arrow .e-font-icon-svg{height:1em;width:1em}.elementor-nav-menu .sub-arrow .e-font-icon-svg.fa-svg-chevron-down{height:.7em;width:.7em}.elementor-nav-menu--dropdown .elementor-item.elementor-item-active,.elementor-nav-menu--dropdown .elementor-item.highlighted,.elementor-nav-menu--dropdown .elementor-item:focus,.elementor-nav-menu--dropdown .elementor-item:hover,.elementor-sub-item.elementor-item-active,.elementor-sub-item.highlighted,.elementor-sub-item:focus,.elementor-sub-item:hover{background-color:#55595c;color:#fff}.elementor-menu-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:22px;padding:.25em;cursor:pointer;border:0 solid;border-radius:3px;background-color:rgba(0,0,0,.05);color:#494c4f}.elementor-menu-toggle.elementor-active .elementor-menu-toggle__icon--open,.elementor-menu-toggle:not(.elementor-active) .elementor-menu-toggle__icon--close{display:none}.elementor-menu-toggle .e-font-icon-svg{fill:#494c4f;height:1em;width:1em}.elementor-nav-menu--dropdown{background-color:#fff;font-size:13px}.elementor-nav-menu--dropdown-none .elementor-menu-toggle,.elementor-nav-menu--dropdown-none .elementor-nav-menu--dropdown{display:none}.elementor-nav-menu--dropdown.elementor-nav-menu__container{margin-top:10px;-webkit-transition:max-height .3s,-webkit-transform .3s;transition:max-height .3s,-webkit-transform .3s;-o-transition:max-height .3s,transform .3s;transition:max-height .3s,transform .3s;transition:max-height .3s,transform .3s,-webkit-transform .3s;-webkit-transform-origin:top;-ms-transform-origin:top;transform-origin:top;overflow:auto}.elementor-nav-menu--dropdown.elementor-nav-menu__container .elementor-sub-item{font-size:.85em}.elementor-nav-menu--dropdown a{color:#494c4f}.elementor-nav-menu--dropdown a.current{background:#373a3c;color:#fff}.elementor-nav-menu--dropdown a.disabled{color:#b3b3b3}ul.elementor-nav-menu--dropdown a,ul.elementor-nav-menu--dropdown a:focus,ul.elementor-nav-menu--dropdown a:hover{text-shadow:none;border-left:8px solid transparent}.elementor-nav-menu__text-align-center .elementor-nav-menu--dropdown .elementor-nav-menu a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-nav-menu--toggle .elementor-menu-toggle:not(.elementor-active)+.elementor-nav-menu__container{-webkit-transform:scaleY(0);-ms-transform:scaleY(0);transform:scaleY(0);max-height:0}.elementor-nav-menu--toggle .elementor-menu-toggle.elementor-active+.elementor-nav-menu__container{-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);max-height:100vh}.elementor-nav-menu--stretch .elementor-nav-menu__container.elementor-nav-menu--dropdown{position:absolute;z-index:9997}@media (max-width:767px){.elementor-nav-menu--dropdown-mobile .elementor-nav-menu--main{display:none}}@media (min-width:768px){.elementor-nav-menu--dropdown-mobile .elementor-menu-toggle,.elementor-nav-menu--dropdown-mobile .elementor-nav-menu--dropdown{display:none}}@media (max-width:-1px){.elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--main{display:none}}@media (min-width:-1px){.elementor-nav-menu--dropdown-mobile_extra .elementor-menu-toggle,.elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--dropdown{display:none}}@media (min-width:1025px){.elementor-nav-menu--dropdown-tablet .elementor-menu-toggle,.elementor-nav-menu--dropdown-tablet .elementor-nav-menu--dropdown{display:none}}@media (max-width:1024px){.elementor-nav-menu--dropdown-tablet .elementor-nav-menu--main{display:none}}@media (max-width:-1px){.elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--main{display:none}}@media (min-width:-1px){.elementor-nav-menu--dropdown-tablet_extra .elementor-menu-toggle,.elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--dropdown{display:none}}.elementor-gallery__container{min-height:1px}.elementor-gallery-item{position:relative;overflow:hidden;display:block;text-decoration:none;border:solid var(--image-border-width) var(--image-border-color);border-radius:var(--image-border-radius)}.elementor-gallery-item__content,.elementor-gallery-item__overlay{height:100%;width:100%;position:absolute;top:0;left:0}.elementor-gallery-item__overlay{mix-blend-mode:var(--overlay-mix-blend-mode);-webkit-transition-duration:var(--overlay-transition-duration);-o-transition-duration:var(--overlay-transition-duration);transition-duration:var(--overlay-transition-duration);-webkit-transition-property:mix-blend-mode,opacity,background-color,-webkit-transform;transition-property:mix-blend-mode,opacity,background-color,-webkit-transform;-o-transition-property:mix-blend-mode,transform,opacity,background-color;transition-property:mix-blend-mode,transform,opacity,background-color;transition-property:mix-blend-mode,transform,opacity,background-color,-webkit-transform}.elementor-gallery-item__image.e-gallery-image{-webkit-transition-duration:var(--image-transition-duration);-o-transition-duration:var(--image-transition-duration);transition-duration:var(--image-transition-duration);-webkit-transition-property:-webkit-filter,-webkit-transform;transition-property:-webkit-filter,-webkit-transform;-o-transition-property:filter,transform;transition-property:filter,transform;transition-property:filter,transform,-webkit-filter,-webkit-transform}.elementor-gallery-item__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:var(--content-justify-content,center);-ms-flex-pack:var(--content-justify-content,center);justify-content:var(--content-justify-content,center);-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:var(--content-text-align);padding:var(--content-padding)}.elementor-gallery-item__content>div{-webkit-transition-duration:var(--content-transition-duration);-o-transition-duration:var(--content-transition-duration);transition-duration:var(--content-transition-duration)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(2){-webkit-transition-delay:calc((var(--content-transition-delay) / 3));-o-transition-delay:calc((var(--content-transition-delay) / 3));transition-delay:calc((var(--content-transition-delay) / 3))}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(3){-webkit-transition-delay:calc((var(--content-transition-delay) / 3) * 2);-o-transition-delay:calc((var(--content-transition-delay) / 3) * 2);transition-delay:calc((var(--content-transition-delay) / 3) * 2)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(4){-webkit-transition-delay:calc((var(--content-transition-delay) / 3) * 3);-o-transition-delay:calc((var(--content-transition-delay) / 3) * 3);transition-delay:calc((var(--content-transition-delay) / 3) * 3)}.elementor-gallery-item__description{color:var(--description-text-color,#fff);width:100%}.elementor-gallery-item__title{color:var(--title-text-color,#fff);font-weight:700;width:100%}.elementor-gallery__titles-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:var(--titles-container-justify-content,center);-ms-flex-pack:var(--titles-container-justify-content,center);justify-content:var(--titles-container-justify-content,center);margin-bottom:20px}.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:after,.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:before{background-color:var(--galleries-pointer-bg-color-hover)}.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:after,.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:before{background-color:var(--galleries-pointer-bg-color-active)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item:before{border-color:var(--galleries-pointer-bg-color-hover);border-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item:after{border-color:var(--galleries-pointer-bg-color-hover)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:after,.elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:before{border-color:var(--galleries-pointer-bg-color-active)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:before{border-left-width:var(--galleries-pointer-border-width);border-bottom-width:var(--galleries-pointer-border-width);border-right-width:0;border-top-width:0}.elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:after{border-left-width:0;border-bottom-width:0;border-right-width:var(--galleries-pointer-border-width);border-top-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:before{border-left-width:var(--galleries-pointer-border-width);border-bottom-width:0;border-right-width:0;border-top-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:after{border-left-width:0;border-bottom-width:var(--galleries-pointer-border-width);border-right-width:var(--galleries-pointer-border-width);border-top-width:0}.elementor-gallery__titles-container .e--pointer-double-line .elementor-item:after,.elementor-gallery__titles-container .e--pointer-double-line .elementor-item:before,.elementor-gallery__titles-container .e--pointer-overline .elementor-item:before,.elementor-gallery__titles-container .e--pointer-underline .elementor-item:after{height:var(--galleries-pointer-border-width)}.elementor-gallery-title{--space-between:10px;cursor:pointer;color:#6d7882;font-weight:500;position:relative;padding:7px 14px;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.elementor-gallery-title--active{color:#495157}.elementor-gallery-title:not(:last-child){margin-right:var(--space-between)}.elementor-gallery-item__title+.elementor-gallery-item__description{margin-top:var(--description-margin-top)}.e-gallery-item.elementor-gallery-item{-webkit-transition-property:all;-o-transition-property:all;transition-property:all}.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-bottom,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-left,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-right,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-top,.e-gallery-item:hover .elementor-gallery__item-overlay-bg,.e-gallery-item:hover .elementor-gallery__item-overlay-content,.e-gallery-item:hover .elementor-gallery__item-overlay-content__description,.e-gallery-item:hover .elementor-gallery__item-overlay-content__title{opacity:1}a.elementor-item.elementor-gallery-title{color:var(--galleries-title-color-normal)}a.elementor-item.elementor-gallery-title.elementor-item-active,a.elementor-item.elementor-gallery-title.highlighted,a.elementor-item.elementor-gallery-title:focus,a.elementor-item.elementor-gallery-title:hover{color:var(--galleries-title-color-hover)}a.elementor-item.elementor-gallery-title.elementor-item-active{color:var(--gallery-title-color-active)}.elementor-widget-table-of-contents .elementor-toc__header-title{color:var(--header-color)}.elementor-widget-table-of-contents.elementor-toc--collapsed .elementor-toc__toggle-button--collapse,.elementor-widget-table-of-contents:not(.elementor-toc--collapsed) .elementor-toc__toggle-button--expand{display:none}.elementor-widget-table-of-contents .elementor-widget-container{min-height:var(--box-min-height);border:var(--box-border-width,1px) solid var(--box-border-color,#a4afb7);border-radius:var(--box-border-radius,3px);background-color:var(--box-background-color);-webkit-transition:min-height .4s;-o-transition:min-height .4s;transition:min-height .4s;overflow:hidden}.elementor-toc__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:var(--box-padding,20px);background-color:var(--header-background-color);border-bottom:var(--separator-width,1px) solid var(--box-border-color,#a4afb7)}.elementor-toc__header-title{font-size:18px;margin:0;color:var(--header-color)}.elementor-toc__toggle-button{cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-toc__toggle-button i{color:var(--toggle-button-color)}.elementor-toc__toggle-button svg{height:1em;width:1em;fill:var(--toggle-button-color)}.elementor-toc__spinner-container{text-align:center}.elementor-toc__spinner{font-size:2em}.elementor-toc__spinner.e-font-icon-svg{height:1em;width:1em}.elementor-toc__body{padding:var(--box-padding,20px);max-height:var(--toc-body-max-height);overflow-y:auto}.elementor-toc__body::-webkit-scrollbar{width:7px}.elementor-toc__body::-webkit-scrollbar-thumb{background-color:#c2cbd2;border-radius:10px}.elementor-toc__list-wrapper{list-style:none;padding:0}.elementor-toc__list-item{margin-bottom:.5em}.elementor-toc__list-item.elementor-item-active{font-weight:700}.elementor-toc__list-item .elementor-toc__list-wrapper{margin-top:.5em;margin-left:var(--nested-list-indent,1em)}.elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}.elementor-toc__list-item-text-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-toc__list-item-text-wrapper:before,.elementor-toc__list-item-text-wrapper i{margin-right:8px;color:var(--marker-color)}.elementor-toc__list-item-text-wrapper svg{margin-right:8px;fill:var(--marker-color);height:var(--marker-size,.5em);width:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper i{font-size:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper:before{font-size:var(--marker-size,1em)}.elementor-toc--content-ellipsis .elementor-toc__list-item-text{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-toc__list-items--collapsible>.elementor-toc__list-wrapper>.elementor-toc__list-item>.elementor-toc__list-wrapper{display:none}.elementor-toc__heading-anchor{position:absolute}.elementor-toc__body .elementor-toc__list-item-text{color:var(--item-text-color);-webkit-text-decoration:var(--item-text-decoration);text-decoration:var(--item-text-decoration)}.elementor-toc__body .elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__body .elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}ol.elementor-toc__list-wrapper{counter-reset:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item{counter-increment:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper:before{content:counters(item,".") ". "}@media only screen and (max-width:-1px){.elementor-toc--minimized-on-tablet_extra .elementor-toc__body{display:none}}@media only screen and (max-width:1024px){.elementor-toc--minimized-on-tablet .elementor-toc__body{display:none}}@media only screen and (max-width:-1px){.elementor-toc--minimized-on-mobile_extra .elementor-toc__body{display:none}}@media only screen and (max-width:767px){.elementor-toc--minimized-on-mobile .elementor-toc__body{display:none}}.e-lottie__container{display:inline-block;max-width:var(--lottie-container-max-width);width:var(--lottie-container-width);opacity:var(--lottie-container-opacity)}.e-lottie__container:hover{opacity:var(--lottie-container-opacity-hover);-webkit-transition-duration:var(--lottie-container-transition-duration-hover);-o-transition-duration:var(--lottie-container-transition-duration-hover);transition-duration:var(--lottie-container-transition-duration-hover)}.e-lottie__container svg,.e-lottie__container svg *{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}.e-lottie__caption{color:var(--caption-color);margin-top:var(--caption-margin-top);text-align:var(--caption-text-align)}.e-tabs-inner-tabs{text-align:left;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:16px}.e-tabs-inner-tabs .e-tab-content{padding-top:32px}.e-tabs-inner-tabs .e-inner-tabs-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;overflow:hidden;z-index:1}.e-tabs-inner-tabs .e-inner-tabs-wrapper :after{content:"";width:100%;height:var(--inner-tabs-border-height,1px);background-color:var(--inner-tabs-border-color,#d5dadf);position:absolute;bottom:0;z-index:-1}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title{font-weight:700;min-width:140px;line-height:38px;height:38px;-webkit-box-sizing:content-box;box-sizing:content-box}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title a{color:#6d7882;padding:0 36px;display:block;text-align:center}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active{border-color:#495157 #495157 transparent;border-left-width:0;border-bottom:1px solid #495157;border-right-width:0;border-top-width:0}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active a{color:#495157}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content{display:none;padding:20px}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-text{color:#556068}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.e-inner-tab-active{display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons{margin-top:24px;display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons button{display:none;font-weight:500;line-height:24px;text-decoration:underline;border:none;background:transparent;padding:0}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible .e-inner-tab-text{overflow:hidden}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible.show-inner-tab-buttons .e-inner-tab-buttons,.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button.show-button{display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.show-full-height div.e-inner-tab-text{height:auto}@media (max-width:767px){.e-tabs-inner-tabs>.e-tab-content:first-child{padding-top:24px}.e-tabs-inner-tabs .e-inner-tabs-wrapper{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper{border:solid #d5dadf;border-width:1px 1px 0}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title{border:solid #d5dadf;border-width:0 0 1px;font-size:16px;font-weight:700;text-align:center;height:38px;line-height:38px;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0 10px;cursor:pointer;display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content{border:solid #d5dadf;border-width:0 0 1px;padding:20px}}.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}@media (max-width:767px){.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.elementor-widget-video-playlist{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif}.elementor-widget-video-playlist .e-tabs{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-widget-video-playlist .e-tabs-main-area{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;height:434px}.elementor-widget-video-playlist .e-tabs-wrapper{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:33%}.elementor-widget-video-playlist .e-tabs-header{background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;min-height:56px;border-bottom:1px solid #d5dadf}.elementor-widget-video-playlist .e-tabs-header .e-tabs-header-right-side{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-title{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;-o-text-overflow:ellipsis;text-overflow:ellipsis;font-weight:700;font-size:16px;padding:10px 0;overflow-wrap:anywhere;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin:auto 0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count{font-size:14px;-ms-flex-negative:0;flex-shrink:0;font-weight:400;line-height:20px;-ms-flex-item-align:start;align-self:flex-start;padding:18px 0 0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button{display:none;margin:auto 0 auto 8px;cursor:pointer;padding:0 4px}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button.e-font-icon-svg{height:1em;width:1em}.elementor-widget-video-playlist .e-tabs-header .rotate-up{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-widget-video-playlist .e-tabs-header .rotate-down{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-widget-video-playlist .e-tabs-items-wrapper{background-color:#fff;overflow:hidden;position:relative;height:100%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items{overflow:auto;height:100%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-section-title{border-color:#d5dadf;font-size:14px;height:36px;padding:0 16px;line-height:36px;margin:0;text-align:left;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border-width:0;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title{background-color:#fff;border-color:#d5dadf;border-width:0 0 1px;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:14px;height:55px;line-height:55px;outline:none;padding:0 16px;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i{text-shadow:0 0 3px #000;color:#fff;font-size:var(--playlist-item-icon-size,16px)}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg{text-shadow:0 0 3px #000;color:#fff;fill:#fff;width:var(--playlist-item-icon-size,16px);height:var(--playlist-item-icon-size,16px)}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg path{fill:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover{background-color:#f1f3f5;border-color:#d5dadf;border-width:0 0 1px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg{text-shadow:0 0 3px #000;color:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg path,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg path{fill:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active .e-tab-title-text,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover .e-tab-title-text{font-size:14px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-play,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail{background-color:#d5dadf;position:relative;margin:auto 0;-ms-flex-negative:0;flex-shrink:0;width:75px;height:42px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail img{-o-object-fit:fill;object-fit:fill;width:75px;height:42px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail svg{position:absolute;bottom:4px;right:4px;font-weight:900}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-title-text{font-size:14px;margin:auto 8px;text-align:left;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg{margin:auto 0;vertical-align:middle}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-duration{font-size:14px;margin:auto 0}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-play{display:none}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-watched{display:block}.elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top{display:none;height:98px;position:absolute;top:0;width:100%;pointer-events:none;background:-webkit-gradient(linear,left bottom,left top,from(transparent),to(#fff));background:-webkit-linear-gradient(bottom,transparent,#fff);background:-o-linear-gradient(bottom,transparent 0,#fff 100%);background:linear-gradient(0deg,transparent,#fff)}.elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom{display:none;height:98px;position:absolute;bottom:0;width:100%;background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(#fff));background:-webkit-linear-gradient(top,transparent,#fff);background:-o-linear-gradient(top,transparent 0,#fff 100%);background:linear-gradient(180deg,transparent,#fff);pointer-events:none}.elementor-widget-video-playlist .e-tabs-items-wrapper.bottom-shadow .shadow-bottom,.elementor-widget-video-playlist .e-tabs-items-wrapper.top-shadow .shadow-top{display:block}.elementor-widget-video-playlist .e-tabs-content-wrapper{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;height:100%;position:relative}.elementor-widget-video-playlist .e-tabs-content-wrapper .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center;position:absolute;top:0;left:0;width:100%;height:100%;-webkit-background-size:cover;background-size:cover;background-position:50%}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-mobile-title{display:none}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content{background-color:#000;display:none;height:100%;outline:none}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content>div{height:100%}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content iframe{height:100%;max-height:100%!important;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content video{height:100%;background-color:#000}.elementor-widget-video-playlist .e-tabs-inner-tabs .e-tab-content{display:none;outline:none}@media (max-width:767px){.elementor-widget-video-playlist .e-tabs-main-area{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;height:auto}.elementor-widget-video-playlist .e-tabs-main-area .e-tabs-content-wrapper{border:none;height:38%}.elementor-widget-video-playlist .e-tabs-wrapper{width:auto;height:62%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items{max-height:248px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items .e-tab-title{border:none}.elementor-widget-video-playlist .e-tabs-header{min-height:48px}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count{margin:0 6px;padding:14px 0 0}.elementor-widget-video-playlist .e-tab-content{border:none;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex}}.elementor-payment-button{border:none}.elementor-scrolling-tracker{--scrolling-track-default-progress-color:#61ce70;--scrolling-track-default-color:#eee;--scrolling-track-precentage-default-color:$black}.elementor-scrolling-tracker-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:var(--horizontal-height,20px);padding:var(--tracker-padding);-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-left:var(--horizontal-border-left-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-bottom:var(--horizontal-border-bottom-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-right:var(--horizontal-border-right-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-top:var(--horizontal-border-top-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-radius:var(--border-radius);background-color:var(--scrolling-track-default-color);direction:var(--direction)}.elementor-scrolling-tracker-horizontal .current-progress{display:none;height:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;border-radius:var(--progress-border-radius);border-left:var(--horizontal-progress-border-left-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-bottom:var(--horizontal-progress-border-bottom-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-right:var(--horizontal-progress-border-right-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-top:var(--horizontal-progress-border-top-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);background-color:var(--scrolling-track-default-progress-color)}.elementor-scrolling-tracker-horizontal .current-progress .current-progress-percentage{inset-inline-end:.5em;inset-inline-start:auto;position:absolute;direction:var(--text-direction);color:var(--percentage-color,var(--scrolling-track-precentage-default-color))}.elementor-scrolling-tracker-circular{display:-webkit-box;display:-ms-flexbox;display:flex;width:var(--circular-width,100px);height:var(--circular-height,100px);-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:auto;margin-inline-end:auto}.elementor-scrolling-tracker-circular .current-progress-percentage{position:absolute;color:var(--percentage-color,var(--scrolling-track-precentage-default-color))}.elementor-scrolling-tracker-circular svg{position:absolute}.elementor-scrolling-tracker-circular .current-progress{display:none;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;stroke:var(--circular-color,var(--scrolling-track-default-progress-color));fill:transparent;stroke-width:var(--circular-progress-width,4px)}.elementor-scrolling-tracker-circular .circle{stroke:var(--circular-background-color,var(--scrolling-track-default-color));fill:transparent;stroke-width:var(--circular-background-width,4px)}.elementor-scrolling-tracker-alignment-left{margin-left:0;margin-right:auto}.elementor-scrolling-tracker-alignment-center{margin-left:auto;margin-right:auto}.elementor-scrolling-tracker-alignment-right{margin-left:auto;margin-right:0}assets/css/frontend.css000064400001401357150755004320011203 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
@charset "UTF-8";
.elementor-bg-transform .elementor-bg {
  will-change: transform; }

.elementor-bg-transform-zoom-in:hover .elementor-bg {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2); }

.elementor-bg-transform-zoom-out .elementor-bg {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2); }

.elementor-bg-transform-zoom-out:hover .elementor-bg {
  -webkit-transform: scale(1);
      -ms-transform: scale(1);
          transform: scale(1); }

.elementor-bg-transform-move-left .elementor-bg {
  -webkit-transform: scale(1.2) translateX(8%);
      -ms-transform: scale(1.2) translateX(8%);
          transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-left:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateX(-8%);
      -ms-transform: scale(1.2) translateX(-8%);
          transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right .elementor-bg {
  -webkit-transform: scale(1.2) translateX(-8%);
      -ms-transform: scale(1.2) translateX(-8%);
          transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateX(8%);
      -ms-transform: scale(1.2) translateX(8%);
          transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-up .elementor-bg {
  -webkit-transform: scale(1.2) translateY(8%);
      -ms-transform: scale(1.2) translateY(8%);
          transform: scale(1.2) translateY(8%); }

.elementor-bg-transform-move-up:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateY(-8%);
      -ms-transform: scale(1.2) translateY(-8%);
          transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down .elementor-bg {
  -webkit-transform: scale(1.2) translateY(-8%);
      -ms-transform: scale(1.2) translateY(-8%);
          transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateY(8%);
      -ms-transform: scale(1.2) translateY(8%);
          transform: scale(1.2) translateY(8%); }

/*---------------------------------------------------------------------------*/
.elementor-animated-content {
  --translate: 0, 0; }
  .elementor-animated-content:hover .elementor-animated-item--grow {
    -webkit-transform: scale(1.1);
        -ms-transform: scale(1.1);
            transform: scale(1.1); }
  .elementor-animated-content:hover .elementor-animated-item--shrink {
    -webkit-transform: scale(0.85);
        -ms-transform: scale(0.85);
            transform: scale(0.85); }
  .elementor-animated-content:hover .elementor-animated-item--shrink-contained {
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1); }
  .elementor-animated-content:hover .elementor-animated-item--enter-zoom-out, .elementor-animated-content:hover .elementor-animated-item--enter-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-in {
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1);
    opacity: 1; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out, .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-out {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out {
    -webkit-transform: scale(0.2);
        -ms-transform: scale(0.2);
            transform: scale(0.2); }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in {
    -webkit-transform: scale(2);
        -ms-transform: scale(2);
            transform: scale(2); }
  .elementor-animated-content:hover .elementor-animated-item--enter-from-right, .elementor-animated-content:hover .elementor-animated-item--enter-from-left, .elementor-animated-content:hover .elementor-animated-item--enter-from-top, .elementor-animated-content:hover .elementor-animated-item--enter-from-bottom {
    opacity: 1;
    -webkit-transform: translateY(0) translateX(0);
        -ms-transform: translateY(0) translateX(0);
            transform: translateY(0) translateX(0); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right {
    -webkit-transform: translateX(1000px);
        -ms-transform: translateX(1000px);
            transform: translateX(1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-left {
    -webkit-transform: translateX(-1000px);
        -ms-transform: translateX(-1000px);
            transform: translateX(-1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-top {
    -webkit-transform: translateY(-600px);
        -ms-transform: translateY(-600px);
            transform: translateY(-600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    -webkit-transform: translateY(600px);
        -ms-transform: translateY(600px);
            transform: translateY(600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right, .elementor-animated-content:hover .elementor-animated-item--exit-to-left, .elementor-animated-content:hover .elementor-animated-item--exit-to-top, .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-right {
    -webkit-transform: translateX(30px);
        -ms-transform: translateX(30px);
            transform: translateX(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-left {
    -webkit-transform: translateX(-30px);
        -ms-transform: translateX(-30px);
            transform: translateX(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-up {
    -webkit-transform: translateY(-30px);
        -ms-transform: translateY(-30px);
            transform: translateY(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-down {
    -webkit-transform: translateY(30px);
        -ms-transform: translateY(30px);
            transform: translateY(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-right {
    --translate: 8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-left {
    --translate: -8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-top {
    --translate: 0, -8%; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-bottom {
    --translate: 0, 8%; }
  .elementor-animated-content *[class^="elementor-animated-item"] {
    will-change: transform, opacity; }
  .elementor-animated-content .elementor-animated-item--shrink-contained {
    -webkit-transform: scale(1.17);
        -ms-transform: scale(1.17);
            transform: scale(1.17); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-in {
    -webkit-transform: scale(0.2);
        -ms-transform: scale(0.2);
            transform: scale(0.2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out {
    -webkit-transform: scale(2);
        -ms-transform: scale(2);
            transform: scale(2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out, .elementor-animated-content .elementor-animated-item--enter-zoom-in, .elementor-animated-content .elementor-animated-item--fade-in {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-zoom-out, .elementor-animated-content .elementor-animated-item--exit-zoom-in, .elementor-animated-content .elementor-animated-item--fade-out {
    opacity: 1;
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1); }
  .elementor-animated-content .elementor-animated-item--enter-from-right {
    -webkit-transform: translateX(1000px);
        -ms-transform: translateX(1000px);
            transform: translateX(1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-left {
    -webkit-transform: translateX(-1000px);
        -ms-transform: translateX(-1000px);
            transform: translateX(-1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-top {
    -webkit-transform: translateY(-600px);
        -ms-transform: translateY(-600px);
            transform: translateY(-600px); }
  .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    -webkit-transform: translateY(500px);
        -ms-transform: translateY(500px);
            transform: translateY(500px); }
  .elementor-animated-content .elementor-animated-item--enter-from-right, .elementor-animated-content .elementor-animated-item--enter-from-left, .elementor-animated-content .elementor-animated-item--enter-from-top, .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-to-right, .elementor-animated-content .elementor-animated-item--exit-to-left, .elementor-animated-content .elementor-animated-item--exit-to-top, .elementor-animated-content .elementor-animated-item--exit-to-bottom {
    opacity: 1;
    -webkit-transform: translateY(0) translateX(0);
        -ms-transform: translateY(0) translateX(0);
            transform: translateY(0) translateX(0); }
  .elementor-animated-content .elementor-animated-item--move-contained-right, .elementor-animated-content .elementor-animated-item--move-contained-left, .elementor-animated-content .elementor-animated-item--move-contained-top, .elementor-animated-content .elementor-animated-item--move-contained-bottom {
    -webkit-transform: scale(1.2) translate(var(--translate));
        -ms-transform: scale(1.2) translate(var(--translate));
            transform: scale(1.2) translate(var(--translate)); }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover {
  outline: 1px solid #fec449; }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings {
  background-image: -webkit-gradient(linear, left bottom, left top, from(#feb416), to(#fec449));
  background-image: -webkit-linear-gradient(bottom, #feb416, #fec449);
  background-image: -o-linear-gradient(bottom, #feb416, #fec449);
  background-image: linear-gradient(to top, #feb416, #fec449); }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover {
    background-color: #feb416; }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save {
    display: none; }

body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  width: 100%;
  padding: 0; }

body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  padding: 0; }

.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart {
  margin: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap; }

.woocommerce div.product.elementor .quantity .qty {
  vertical-align: top;
  margin-right: 0; }

.woocommerce div.product.elementor .quantity + .button {
  margin-left: 10px; }

.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input {
  height: 100%; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
  margin-right: initial; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
  -ms-flex-preferred-size: auto;
      flex-basis: auto; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-right: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%; }

@media (max-width: 1024px) {
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-right: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    -ms-flex-preferred-size: auto;
        flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-right: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      -ms-flex-preferred-size: 100%;
          flex-basis: 100%; } }

@media (max-width: 767px) {
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-right: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    -ms-flex-preferred-size: auto;
        flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-right: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      -ms-flex-preferred-size: 100%;
          flex-basis: 100%; } }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button {
  background-color: #5bc0de; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button {
  background-color: #5cb85c; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button {
  background-color: #f0ad4e; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button {
  background-color: #d9534f; }

.elementor-widget-wc-add-to-cart .quantity {
  display: inline-block; }

.elementor-widget-wc-add-to-cart.elementor-align-center form.cart {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-widget-wc-add-to-cart.elementor-align-right form.cart {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor-widget-wc-add-to-cart.elementor-align-left form.cart {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.woocommerce div.product.elementor {
  /*  Reset WC tabs style  */
  /*  End Reset WC tabs style  */ }
  .woocommerce div.product.elementor ul.tabs:before {
    position: static;
    content: none;
    width: auto;
    bottom: auto;
    left: auto;
    border-bottom: 0;
    z-index: auto; }
  .woocommerce div.product.elementor ul.tabs {
    margin: 0; }
    .woocommerce div.product.elementor ul.tabs li {
      padding: 0; }
      .woocommerce div.product.elementor ul.tabs li a {
        padding: .8em 1.2em;
        line-height: 1; }
    .woocommerce div.product.elementor ul.tabs li:after,
    .woocommerce div.product.elementor ul.tabs li:before {
      border: 0;
      position: static;
      bottom: auto;
      width: auto;
      height: auto;
      content: none;
      -webkit-box-sizing: border-box;
              box-sizing: border-box; }
  .woocommerce div.product.elementor .woocommerce-tabs .panel {
    margin: 0;
    padding: 20px;
    border-radius: 0;
    border-width: 0;
    border-top: 1px solid #d3ced2;
    -webkit-box-shadow: none;
            box-shadow: none;
    margin-top: -1px; }

.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,
.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins {
  display: block; }

.elementor-widget-woocommerce-product-meta .detail-container {
  position: relative; }
  .elementor-widget-woocommerce-product-meta .detail-container:after {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%; }

.elementor-widget-woocommerce-product-meta .detail-label {
  font-weight: bold; }

.elementor-woo-meta--view-inline .product_meta {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap; }
  .elementor-woo-meta--view-inline .product_meta .detail-container:after {
    width: auto;
    left: auto;
    right: auto;
    position: absolute;
    height: 100%;
    top: 50%;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%);
    border-top: 0;
    border-bottom: 0;
    border-right: 0;
    border-left-width: 1px;
    border-style: solid;
    right: -8px; }

.elementor-woo-meta--view-table .product_meta {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column; }
  .elementor-woo-meta--view-table .product_meta .detail-container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .elementor-woo-meta--view-table .product_meta .detail-label {
    min-width: 108px; }

.elementor-woo-meta--view-stacked .product_meta .detail-container {
  display: block; }

.woocommerce div.product.elementor .woocommerce-product-rating {
  margin-bottom: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.woocommerce div.product.elementor .star-rating {
  margin-top: 0; }

.elementor-product-rating--align-left .woocommerce-product-rating {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-product-rating--align-right .woocommerce-product-rating {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor-product-rating--align-center .woocommerce-product-rating {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link {
  margin-left: auto; }

.elementor-products-grid ul.products.elementor-grid {
  display: grid;
  margin: 0;
  grid-column-gap: 20px;
  grid-row-gap: 40px; }
  .elementor-products-grid ul.products.elementor-grid:before, .elementor-products-grid ul.products.elementor-grid:after {
    content: none;
    display: none; }
  .elementor-products-grid ul.products.elementor-grid li.product {
    width: auto;
    padding: 0;
    margin: 0;
    float: none; }
    .elementor-products-grid ul.products.elementor-grid li.product .onsale {
      padding: 0;
      display: none; }
    .elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link {
      display: block;
      position: relative; }

.elementor-products-grid:not(.show-heading-yes) .products > h2 {
  display: none; }

.elementor-products-grid nav.woocommerce-pagination {
  margin-top: 40px; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul {
  border: none 0; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li {
  border-right: none 0;
  border-left: none 0; }

.elementor-product-loop-item--align-left ul.products li.product .star-rating {
  margin-right: auto; }

.elementor-product-loop-item--align-right ul.products li.product .star-rating {
  margin-left: auto; }

.elementor-product-loop-item--align-center ul.products li.product .star-rating {
  margin-right: auto;
  margin-left: auto; }

.woocommerce .elementor-element.elementor-products-grid ul.products li.product {
  width: auto; }

.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,
.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product {
  width: auto; }

@media (min-width: 1025px) {
  .elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products {
    grid-template-columns: repeat(2, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products {
    grid-template-columns: repeat(3, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products {
    grid-template-columns: repeat(4, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products {
    grid-template-columns: repeat(5, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products {
    grid-template-columns: repeat(6, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products {
    grid-template-columns: repeat(7, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products {
    grid-template-columns: repeat(8, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products {
    grid-template-columns: repeat(9, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products {
    grid-template-columns: repeat(10, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products {
    grid-template-columns: repeat(11, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products {
    grid-template-columns: repeat(12, 1fr); } }

@media (max-width: 1024px) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(3, 1fr); } }

@media (max-width: 767px) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(2, 1fr); } }

.elementor.product .woocommerce-product-gallery__trigger + .woocommerce-product-gallery__wrapper {
  overflow: hidden; }

.woocommerce .elementor-widget-woocommerce-product-images span.onsale {
  padding: 0; }

.elementor-menu-cart__wrapper {
  text-align: var(--main-alignment, left); }

.elementor-menu-cart__toggle_wrapper {
  display: inline-block;
  position: relative; }

.elementor-menu-cart__toggle {
  display: inline-block; }
  .elementor-menu-cart__toggle .elementor-button {
    background-color: var(--toggle-button-background-color, transparent);
    color: var(--toggle-button-text-color, #818a91);
    border-style: var(--toggle-button-border-type, solid);
    border-width: var(--toggle-button-border-width, 1px);
    border-color: var(--toggle-button-border-color, #818a91);
    border-radius: var(--toggle-button-border-radius, 0px);
    display: -webkit-inline-box;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    padding: var(--toggle-icon-padding, 12px 24px); }
    .elementor-menu-cart__toggle .elementor-button:hover {
      color: var(--toggle-button-hover-text-color, #818a91);
      background-color: var(--toggle-button-hover-background-color, transparent);
      border-color: var(--toggle-button-hover-border-color, #818a91); }
      .elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon {
        color: var(--toggle-button-icon-hover-color, #818a91); }
  .elementor-menu-cart__toggle .elementor-button-text {
    margin-right: 0.3em; }
  .elementor-menu-cart__toggle .elementor-button-icon {
    position: relative;
    -webkit-transition: color 0.1s;
    -o-transition: color 0.1s;
    transition: color 0.1s;
    color: var(--toggle-button-icon-color, #818a91);
    font-size: var(--toggle-icon-size, inherit); }

.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: block;
  position: absolute;
  min-width: 1.6em;
  height: 1.6em;
  line-height: 1.5em;
  top: -0.7em;
  right: -0.7em;
  border-radius: 100%;
  color: var(--items-indicator-text-color, #fff);
  background-color: var(--items-indicator-background-color, #d9534f);
  text-align: center;
  font-size: 10px; }

.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: inline-block;
  font-weight: normal; }

.elementor-menu-cart__container {
  -webkit-transform: scale(1);
      -ms-transform: scale(1);
          transform: scale(1);
  overflow: hidden;
  position: fixed;
  z-index: 9998;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgba(0, 0, 0, 0.25);
  -webkit-transition: background-color 0.4s, -webkit-transform 0s;
  transition: background-color 0.4s, -webkit-transform 0s;
  -o-transition: background-color 0.4s, transform 0s;
  transition: background-color 0.4s, transform 0s;
  transition: background-color 0.4s, transform 0s, -webkit-transform 0s;
  text-align: left; }

.elementor-menu-cart__main {
  position: fixed;
  left: var(--side-cart-alignment-left, auto);
  right: var(--side-cart-alignment-right, 0);
  -webkit-transform: translateX(0);
      -ms-transform: translateX(0);
          transform: translateX(0);
  top: 0;
  bottom: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch;
  font-size: 14px;
  min-height: 200px;
  width: 350px;
  max-width: 100%;
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s;
  padding: var(--cart-padding, 20px 30px);
  background-color: var(--cart-background-color, #fff);
  -webkit-box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
          box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
  border-style: var(--cart-border-style, none);
  border-color: var(--cart-border-color, initial);
  border-radius: var(--cart-border-radius, 0px);
  margin-top: var(--mini-cart-spacing, 0px); }
  .elementor-menu-cart__main .widget_shopping_cart_content {
    height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }
    .elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message {
      color: var(--empty-message-color, inherit);
      text-align: var(--empty-message-alignment, left); }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
  background-color: transparent;
  -webkit-transform: scale(0);
      -ms-transform: scale(0);
          transform: scale(0);
  -webkit-transition: background-color 0.4s, -webkit-transform 0s 0.4s;
  transition: background-color 0.4s, -webkit-transform 0s 0.4s;
  -o-transition: background-color 0.4s, transform 0s 0.4s;
  transition: background-color 0.4s, transform 0s 0.4s;
  transition: background-color 0.4s, transform 0s 0.4s, -webkit-transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button {
    display: none; }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
  overflow: hidden;
  opacity: 0;
  -webkit-transform: var(--side-cart-alignment-transform, translateX(100%));
      -ms-transform: var(--side-cart-alignment-transform, translateX(100%));
          transform: var(--side-cart-alignment-transform, translateX(100%)); }

.elementor-menu-cart__close-button {
  width: var(--cart-close-icon-size, 25px);
  height: var(--cart-close-icon-size, 25px);
  position: relative;
  margin: 0 0 20px;
  -ms-flex-item-align: end;
      align-self: flex-end;
  cursor: pointer;
  display: inline-block;
  font-family: eicons;
  font-size: 20px;
  line-height: 1;
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s; }
  .elementor-menu-cart__close-button:before, .elementor-menu-cart__close-button:after {
    content: '';
    position: absolute;
    height: 3px;
    width: 100%;
    top: 50%;
    left: 0;
    margin-top: -1px;
    background: var(--cart-close-button-color, #818a91);
    border-radius: 1px;
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s; }
  .elementor-menu-cart__close-button:hover::before, .elementor-menu-cart__close-button:hover::after {
    background: var(--cart-close-button-hover-color, #818a91); }
  .elementor-menu-cart__close-button::before {
    -webkit-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
            transform: rotate(45deg); }
  .elementor-menu-cart__close-button::after {
    -webkit-transform: rotate(-45deg);
        -ms-transform: rotate(-45deg);
            transform: rotate(-45deg); }

.elementor-menu-cart__products {
  max-height: calc(100vh - 250px);
  overflow: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch; }

.elementor-menu-cart__product {
  display: grid;
  grid-template-columns: 28% auto;
  grid-template-rows: var(--price-quantity-position--grid-template-rows, auto auto);
  position: relative;
  border-width: 0 0 var(--divider-width, 1px);
  border-bottom-style: var(--divider-style, solid);
  border-bottom-color: var(--divider-color, #D4D4D4); }
  .elementor-menu-cart__product .variation {
    display: grid;
    grid-template-columns: -webkit-max-content auto;
    grid-template-columns: max-content auto;
    margin: 10px 0; }
    .elementor-menu-cart__product .variation dt {
      grid-column-start: 1; }
    .elementor-menu-cart__product .variation dd {
      grid-column-start: 2;
      -webkit-margin-start: 5px;
              margin-inline-start: 5px; }
      .elementor-menu-cart__product .variation dd p {
        margin-bottom: 0; }
  .elementor-menu-cart__product-image {
    grid-row-start: 1;
    grid-row-end: 3;
    width: 100%; }
    .elementor-menu-cart__product-image img, .elementor-menu-cart__product-image a {
      display: block; }
  .elementor-menu-cart__product-name {
    grid-column-start: 2;
    grid-column-end: 3;
    margin: 0; }
    .elementor-menu-cart__product-name a {
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
  .elementor-menu-cart__product-price {
    grid-column-start: 2;
    grid-column-end: 3;
    -ms-flex-item-align: var(--price-quantity-position--align-self, end);
        align-self: var(--price-quantity-position--align-self, end);
    font-weight: 300;
    color: var(--product-price-color, #D4D4D4); }
  .elementor-menu-cart__product-name, .elementor-menu-cart__product-price {
    font-size: 14px;
    padding-left: 20px; }
  .elementor-menu-cart__product-remove {
    color: #818a91;
    width: var(--remove-item-button-size, 22px);
    height: var(--remove-item-button-size, 22px);
    border-radius: var(--remove-item-button-size, 22px);
    border: 1px solid var(--remove-item-button-color, #D4D4D4);
    text-align: center;
    overflow: hidden;
    position: absolute;
    right: 0;
    bottom: 20px;
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s; }
    .elementor-menu-cart__product-remove:hover {
      border: 1px solid var(--remove-item-button-hover-color, #D4D4D4); }
      .elementor-menu-cart__product-remove:hover::before, .elementor-menu-cart__product-remove:hover::after {
        background: var(--remove-item-button-hover-color, #D4D4D4); }
    .elementor-menu-cart__product-remove:before, .elementor-menu-cart__product-remove:after {
      content: '';
      position: absolute;
      height: 1px;
      width: 50%;
      top: 50%;
      left: 25%;
      margin-top: -1px;
      background: var(--remove-item-button-color, #D4D4D4);
      z-index: 1;
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
    .elementor-menu-cart__product-remove::before {
      -webkit-transform: rotate(45deg);
          -ms-transform: rotate(45deg);
              transform: rotate(45deg); }
    .elementor-menu-cart__product-remove::after {
      -webkit-transform: rotate(-45deg);
          -ms-transform: rotate(-45deg);
              transform: rotate(-45deg); }
    .elementor-menu-cart__product-remove > a {
      display: block;
      z-index: 2;
      width: 100%;
      height: 100%;
      overflow: hidden;
      opacity: 0;
      position: absolute; }
      .elementor-menu-cart__product-remove > a.remove_from_cart_button {
        display: var(--remove-from-cart-button, block); }
      .elementor-menu-cart__product-remove > a.elementor_remove_from_cart_button {
        display: var(--elementor-remove-from-cart-button, none); }

.elementor-menu-cart__product:last-child {
  border: none; }

.elementor-menu-cart__product:not(:first-of-type), .elementor-menu-cart__subtotal, .elementor-menu-cart__footer-buttons {
  padding-top: var(--product-divider-gap, 20px); }

.elementor-menu-cart__product {
  padding-right: 30px; }

.elementor-menu-cart__product, .elementor-menu-cart__subtotal {
  padding-bottom: var(--product-divider-gap, 20px); }

.elementor-menu-cart__subtotal {
  font-size: 20px;
  text-align: var(--menu-cart-subtotal-text-align, center);
  font-weight: 600;
  color: var(--menu-cart-subtotal-color, inherit);
  border-style: var(--subtotal-divider-style, solid);
  border-width: var(--subtotal-divider-top-width, 1px) var(--subtotal-divider-right-width, 1px) var(--subtotal-divider-bottom-width, 1px) var(--subtotal-divider-left-width, 1px);
  border-color: var(--subtotal-divider-color, #D4D4D4); }

.elementor-menu-cart__footer-buttons {
  font-size: 20px;
  text-align: var(--cart-footer-buttons-alignment-text-align, center);
  display: var(--cart-footer-buttons-alignment-display, grid);
  grid-template-columns: var(--cart-footer-layout, 1fr 1fr);
  margin-top: var(--cart-buttons-position-margin, 0);
  grid-column-gap: var(--space-between-buttons, 10px);
  grid-row-gap: var(--space-between-buttons, 10px); }
  .elementor-menu-cart__footer-buttons .elementor-button {
    display: inline-block;
    border-radius: var(--cart-footer-buttons-border-radius, 0px);
    height: -webkit-fit-content;
    height: -moz-fit-content;
    height: fit-content; }
    .elementor-menu-cart__footer-buttons .elementor-button--view-cart {
      display: var(--view-cart-button-display, inline-block);
      color: var(--view-cart-button-text-color, #fff);
      padding: var(--view-cart-button-padding, 15px);
      background-color: var(--view-cart-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover {
        color: var(--view-cart-button-hover-text-color, #fff);
        background-color: var(--view-cart-button-hover-background-color, #818a91); }
    .elementor-menu-cart__footer-buttons .elementor-button--checkout {
      display: var(--checkout-button-display, inline-block);
      color: var(--checkout-button-text-color, #fff);
      padding: var(--checkout-button-padding, 15px);
      background-color: var(--checkout-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--checkout:hover {
        color: var(--checkout-button-hover-text-color, #fff);
        background-color: var(--checkout-button-hover-background-color, #818a91); }
    @media (max-width: 767px) {
      .elementor-menu-cart__footer-buttons .elementor-button {
        padding-left: 10px;
        padding-right: 10px; } }

/* The following is all to apply settings from the controls */
.elementor-widget-woocommerce-menu-cart {
  /* Fix to prevent the cart modal flash when using the typography controls */
  /* Fix for short-lived legacy cart type */ }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before {
    content: none; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e3'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e4'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e5'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e6'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e7'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e8'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e9'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8ea'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8eb'; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product {
    padding-left: 0;
    padding-right: 0;
    grid-template-columns: 25% auto; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove {
    top: 0;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove {
    top: 20px;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove {
    -webkit-transform: translateY(50%);
        -ms-transform: translateY(50%);
            transform: translateY(50%);
    bottom: 50%; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove {
    top: auto;
    bottom: 20px; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart {
    /* The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
			and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
      position: absolute;
      z-index: 89;
      width: auto;
      height: auto;
      overflow: visible;
      top: 100%;
      bottom: auto;
      background: none;
      min-width: 330px;
      left: 0;
      right: auto;
      -webkit-transform: scale(1);
          -ms-transform: scale(1);
              transform: scale(1);
      -webkit-transition: background-color 0.4s, -webkit-transform 0s;
      transition: background-color 0.4s, -webkit-transform 0s;
      -o-transition: background-color 0.4s, transform 0s;
      transition: background-color 0.4s, transform 0s;
      transition: background-color 0.4s, transform 0s, -webkit-transform 0s; }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main {
      width: auto;
      height: auto;
      position: relative;
      top: auto;
      bottom: auto;
      right: auto;
      left: auto;
      overflow: visible;
      -webkit-transform: translateY(0);
          -ms-transform: translateY(0);
              transform: translateY(0);
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
    @media (max-width: 767px) {
      .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
        min-width: 300px; } }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
    -webkit-transform: scale(0);
        -ms-transform: scale(0);
            transform: scale(0);
    -webkit-transition: background-color 0.4s, -webkit-transform 0s 0.4s;
    transition: background-color 0.4s, -webkit-transform 0s 0.4s;
    -o-transition: background-color 0.4s, transform 0s 0.4s;
    transition: background-color 0.4s, transform 0s 0.4s;
    transition: background-color 0.4s, transform 0s 0.4s, -webkit-transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
    opacity: 0;
    -webkit-transform: translateY(-10px);
        -ms-transform: translateY(-10px);
            transform: translateY(-10px); }
  .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown {
    opacity: 1;
    /* This keeps mini-cart panels above other widgets so there's no flash when using the typography controls.
		The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
		and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container {
      z-index: 9998; }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart {
      z-index: 89; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container {
    display: none; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-checkout-page {
  background-color: transparent;
  font-family: Roboto, sans-serif;
  font-size: 14px;
  line-height: 21px;
  color: #818a91;
  /* one column layout */
  /* override theme defaults for themes that have hover background colors on these elements. The hover background colors do not play well with the widget's initial design. */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-checkout-page ::-webkit-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page ::-moz-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page ::-ms-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > td,
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > th {
    background-color: transparent; }
  .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: #f7f7f7;
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: #f7f7f7;
      border-color: var(--forms-fields-focus-border-color, initial);
      -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
           -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
              transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below {
    background-color: #f7f7f7; }
  .elementor-widget-woocommerce-checkout-page .e-description {
    color: var(--sections-descriptions-color, #818a91);
    padding-bottom: var(--sections-descriptions-spacing, 0px);
    font-size: 14px;
    font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section {
    margin-bottom: 24px; }
    .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title {
      text-align: var(--login-title-alignment, left); }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge {
    margin-top: var(--sections-secondary-title-spacing, 24px);
    margin-bottom: 15px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor {
    margin-top: var(--sections-secondary-title-spacing, 24px); }
  .elementor-widget-woocommerce-checkout-page .e-coupon-box {
    margin-top: 24px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description {
    color: var(--forms-labels-color, #818a91);
    margin-bottom: var(--forms-label-spacing, 3px); }
  .elementor-widget-woocommerce-checkout-page .e-login-wrap {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-start {
      -webkit-box-flex: 75%;
          -ms-flex: 75%;
              flex: 75%; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
      -webkit-box-flex: 20%;
          -ms-flex: 20%;
              flex: 20%;
      text-align: right; }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .e-login-wrap {
        display: block; }
        .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
          text-align: left;
          margin-top: 15px; }
          .elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label {
            display: none; } }
  .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    margin-top: 6px; }
    .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
      margin-bottom: 0;
      font-size: 12px; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
          font-size: 11px; } }
  .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
    width: 90%;
    /* 90% to match the design */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
        width: auto; } }
  .elementor-widget-woocommerce-checkout-page .e-checkout__container {
    display: grid;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    grid-template-columns: 56% auto;
    /* column widths - to match the design */
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch;
    grid-column-gap: var(--sections-margin, 24px);
    grid-row-gap: var(--sections-margin, 24px); }
  @media (max-width: 1024px) {
    .elementor-widget-woocommerce-checkout-page .e-checkout__container {
      grid-template-columns: repeat(1, 1fr); } }
  .elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title {
    color: var(--sections-secondary-title-color, #818a91);
    margin-bottom: 0; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge {
    text-align: var(--coupon-title-alignment, left); }
  .elementor-widget-woocommerce-checkout-page #ship-to-different-address {
    margin-top: 13px;
    padding-left: var(--shipping-heading-padding-start, 30px); }
    .elementor-widget-woocommerce-checkout-page #ship-to-different-address span {
      font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-checkout-page a:hover {
      color: var(--links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-checkout-page .woocommerce {
    /* Need to use these specific selectors to override WooCommerce CSS */
    /* Need the <button> selector here so that we can target .woocommerce-button
		without being overwritten by WooCommerce's button.button selector.
		We are also targeting .woocommerce-button because none of this styling should
		apply to the Purchase button. Only The Login/Apply coupon button. */
    /* Main Sections styling start */
    /* Main Sections styling end */
    /* Styling for everything classified as 'Messages' start */
    /* Styling for everything classified as 'Messages' end */ }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      padding-left: var(--forms-columns-gap-padding, 0px);
      padding-right: var(--forms-columns-gap-padding, 0px);
      margin-left: var(--forms-columns-gap-margin, 0px);
      margin-right: var(--forms-columns-gap-margin, 0px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label {
        color: var(--forms-labels-color, #818a91);
        margin-bottom: var(--forms-label-spacing, 3px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea {
        color: var(--forms-fields-normal-color, #818a91);
        background-color: #f7f7f7;
        border-radius: var(--forms-fields-border-radius, 0px);
        padding: var(--forms-fields-padding, 16px);
        font-size: 14px;
        border: none;
        font-weight: 400; }
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus {
          color: var(--forms-fields-focus-color, #818a91);
          background-color: #f7f7f7;
          border-color: var(--forms-fields-focus-border-color, #818a91);
          -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
               -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                  transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field {
      margin-bottom: 5px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .create-account,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      /* need to use !important here to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 0 !important; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .input-radio,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span {
      position: relative;
      top: 2px;
      color: var(--sections-checkboxes-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label {
      display: inline; }
    .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #6F6F6F);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: 1rem;
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover {
        color: var(--forms-buttons-hover-text-color, #6F6F6F);
        -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
      margin-right: 1%; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
          width: 100%;
          margin-right: 0;
          margin-bottom: 15px; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-info {
      border-top-color: transparent;
      background-color: transparent;
      padding: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p {
      font-weight: 400;
      font-size: 12px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info {
      font-weight: 400;
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment,
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      background: var(--sections-background-color, #ffffff);
      border-radius: var(--sections-border-radius, 3px);
      padding: var(--sections-padding, 16px 30px);
      margin: var(--sections-margin, 0 0 24px 0);
      border-style: var(--sections-border-type, solid);
      border-color: var(--sections-border-color, #D4D4D4);
      border-width: 1px;
      display: block; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      display: var(--additional-information-display, none); }
    @media (min-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
        margin: var(--sections-margin, 0); } }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message {
      color: var(--sections-messages-color, #818a91);
      font-weight: 400; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p {
      margin-top: 25px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1 {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2 {
      padding-top: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading {
      text-align: var(--order-review-title-alignment, left); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table {
      margin-bottom: 0;
      border: 0;
      font-size: 14px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead {
        background-color: transparent; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th {
          padding-top: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td {
        color: #000000; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity {
          font-weight: normal; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td {
        color: #818a91; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th {
        border: 0;
        padding-left: 0;
        padding-bottom: 15px;
        padding-top: 15px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td {
        padding-bottom: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td {
      font-weight: 400;
      color: var(--order-summary-items-color, #000000);
      border-bottom-color: var(--order-summary-items-divider-color, #818a91);
      border-bottom-width: var(--order-summary-items-divider-weight, 0px);
      border-bottom-style: solid; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name {
        padding-right: 40px;
        max-width: 150px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total {
        vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th {
      padding-top: var(--order-summary-rows-gap-top, 15px);
      padding-bottom: var(--order-summary-rows-gap-bottom, 15px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th {
      color: var(--order-summary-totals-color, #818a91);
      vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th {
      border-top-color: var(--order-summary-totals-divider-color, #818a91);
      border-top-width: var(--order-summary-totals-divider-weight, 0px);
      border-top-style: solid; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td {
      max-width: 70px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce h3 {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      margin-bottom: var(--sections-title-spacing, 30px);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row > span {
      font-weight: 400;
      font-size: 14px;
      margin-bottom: 3px;
      color: #818a91; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
      /* use 48% to match the design. Default WC CSS uses 47% */
      width: 48%; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3 {
      text-align: var(--billing-details-title-alignment, left); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row {
      margin-bottom: var(--forms-rows-gap, 5px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child {
        margin-bottom: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login {
      margin-top: -8px;
      z-index: 999;
      background: #ffffff;
      border-top-width: 0;
      position: relative;
      margin-bottom: 0;
      color: #818a91; }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
        width: 100%; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle {
      display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
      width: 85%;
      /* 85% to match the design */ }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
          width: 35%;
          /* 35% to match the design */ } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3 {
      background: var(--additional-fields-title-alignment, left); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address {
      margin-bottom: var(--sections-margin, 20px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment {
      margin-top: 24px;
      padding: 15px 25px 25px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods {
        border-bottom: none;
        padding: 0; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box {
          background-color: #f7f7f7; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before {
            display: none; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li {
          line-height: 21px; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
            padding-left: 15px;
            font-size: 12px; }
            @media (max-width: 1024px) {
              .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
                float: none;
                font-size: 11px;
                padding-left: 10px; } }
          @media (max-width: 1024px) {
            .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img {
              width: 55px;
              /* 55px to match the design */ } }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        padding: 0;
        margin-bottom: 0;
        -webkit-box-align: var(--place-order-title-alignment, stretch);
            -ms-flex-align: var(--place-order-title-alignment, stretch);
                align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order {
        background-color: #5bc0de;
        width: var(--purchase-button-width, auto);
        float: none;
        color: var(--purchase-button-normal-text-color, #ffffff);
        min-height: auto;
        padding: var(--purchase-button-padding, 1em 1em);
        border-radius: var(--purchase-button-border-radius, 3px); }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover {
          background-color: #5bc0de;
          color: var(--purchase-button-hover-text-color, #ffffff);
          border-color: var(--purchase-button-hover-border-color, #5bc0de);
          -webkit-transition-duration: var(--purchase-button-hover-transition-duration, 0.3s);
               -o-transition-duration: var(--purchase-button-hover-transition-duration, 0.3s);
                  transition-duration: var(--purchase-button-hover-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before {
        display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2 {
      width: auto;
      float: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
      display: grid;
      grid-template-columns: auto auto;
      /*columns widths*/
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
        text-align: right; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
          display: block; }
          .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
            text-align: left; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field {
      /* need to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 10px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000);
      /* We need to specify these values so that the 'Items' Typography control does not affect
			the 'Variations' */
      font-size: 14px;
      font-style: normal;
      text-transform: none;
      letter-spacing: normal;
      text-decoration: none;
      line-height: 21px; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-cart {
  /* one column layout */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart table tbody tr:hover > td,
  .elementor-widget-woocommerce-cart table tbody tr:hover > th {
    background-color: inherit; }
  .elementor-widget-woocommerce-cart .e {
    /* .e-clear is a class that is added between the cart sections to fix collapsing margins,
		especially when custom margins are being set by the Style Controls, then the margins could
		start overriding the other margin, leaving one margin */ }
    .elementor-widget-woocommerce-cart .e-clear {
      overflow: hidden;
      height: 0;
      width: 0; }
    .elementor-widget-woocommerce-cart .e-cart {
      /* Main sections styling start */
      /* Main sections styling end */
      /* one column layout */ }
      .elementor-widget-woocommerce-cart .e-cart-section {
        background-color: var(--sections-background-color, #ffffff);
        padding: var(--sections-padding, 16px 30px);
        margin: var(--sections-margin, 0 0 30px 0);
        border-radius: var(--sections-border-radius, 3px);
        border-width: 1px;
        border-style: var(--sections-border-type, solid);
        border-color: var(--sections-border-color, #D4D4D4); }
      @media (min-width: 1024px) {
        .elementor-widget-woocommerce-cart .e-cart-section:last-child {
          margin: var(--sections-margin, 0); } }
      .elementor-widget-woocommerce-cart .e-cart-content {
        color: var(--sections-descriptions-color, #818a91);
        font-size: 15px;
        font-weight: 400;
        line-height: 23px;
        letter-spacing: 0; }
      .elementor-widget-woocommerce-cart .e-cart__container {
        display: grid;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        grid-template-columns: 59% auto;
        /* 59% to match the required design */
        -webkit-box-align: stretch;
            -ms-flex-align: stretch;
                align-items: stretch;
        grid-column-gap: var(--sections-margin, 30px);
        grid-row-gap: var(--sections-margin, 30px); }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-cart .e-cart__container {
          grid-template-columns: repeat(1, 1fr); } }
      .elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container {
        grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart .select2-container {
    margin-bottom: 4px; }
    .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 0px);
      border: none;
      height: 45px; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, initial);
        -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder {
        color: var(--forms-fields-normal-color, #818a91); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered {
        color: var(--forms-fields-normal-color, #818a91);
        line-height: 45px;
        padding-left: 1rem;
        padding-right: 1rem; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow {
        height: 45px; }
    .elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below {
      background-color: #f7f7f7; }
  .elementor-widget-woocommerce-cart .woocommerce {
    font-family: Roboto, sans-serif; }
    .elementor-widget-woocommerce-cart .woocommerce button.button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #818a91);
      border-radius: var(--forms-buttons-border-radius, 3px);
      /* 0.88rem is used here so that this button will match the design layout from Product. */
      padding: var(--forms-buttons-padding, 0.88rem 2rem);
      width: var(--forms-buttons-width, auto);
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-cart .woocommerce button.button:hover {
        color: var(--forms-buttons-hover-text-color, #818a91);
        -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
        border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce button.button.disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled] {
        /* 0.88rem is used here so that this button will match the design layout from Product. */
        padding: var(--forms-buttons-padding, 0.88rem 2rem);
        color: var(--forms-buttons-normal-text-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover {
          background-color: var(--forms-buttons-hover-background-color, #ffffff);
          color: var(--forms-buttons-hover-text-color, #818a91);
          -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
               -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                  transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
          border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form {
      margin-top: var(--sections-descriptions-spacing, 15px); }
    .elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination {
      color: var(--sections-descriptions-color, #818a91);
      margin-bottom: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td {
      text-align: left !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before {
        width: 100%;
        margin-bottom: 10px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td {
      text-align: right !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td::before {
        content: attr(data-title);
        font-weight: 700;
        float: left; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      text-align: var(--totals-title-alignment, left); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td {
      padding-top: var(--totals-rows-gap-top, 12px);
      padding-bottom: var(--totals-rows-gap-bottom, 9px); }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before,
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount {
        color: var(--totals-color, #818a91);
        font-weight: 700; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td {
      border-top-color: var(--totals-divider-color, #818a91);
      border-top-width: var(--totals-divider-weight, 0); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row {
      margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-cart .woocommerce .product-name a {
      color: var(--product-link-normal-color, #000000); }
      .elementor-widget-woocommerce-cart .woocommerce .product-name a:hover {
        color: var(--product-link-hover-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .form-row {
      padding: 3px 0;
      margin: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .input-text,
    .elementor-widget-woocommerce-cart .woocommerce select {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 3px);
      border: none;
      padding: var(--forms-fields-padding, 16px);
      font-size: 14px; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::-webkit-input-placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::-webkit-input-placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::-moz-placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::-moz-placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::-ms-input-placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::-ms-input-placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text:focus,
      .elementor-widget-woocommerce-cart .woocommerce select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, transparent);
        -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-webkit-input-placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::-webkit-input-placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-moz-placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::-moz-placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-ms-input-placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::-ms-input-placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce .input-text.qty {
      background-color: transparent;
      color: var(--order-summary-color, #000000);
      border-width: var(--order-summary-quantity-border-weight, 1px);
      border-style: solid;
      border-color: var(--order-summary-quantity-border-color, #D4D4D4);
      border-radius: 3px;
      padding: 1px 2px;
      text-align: left;
      font-size: 14px;
      min-height: 28px;
      max-height: 28px; }
    .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout {
      padding-bottom: 0;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-orient: vertical;
      -webkit-box-direction: normal;
          -ms-flex-direction: column;
              flex-direction: column;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
      -webkit-box-align: var(--place-order-title-alignment, stretch);
          -ms-flex-align: var(--place-order-title-alignment, stretch);
              align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button {
        padding: var(--checkout-button-padding, 15px 1em);
        width: var(--checkout-button-width, auto);
        font-size: 15px;
        text-align: center;
        color: var(--checkout-button-normal-text-color, #ffffff);
        background-color: #5bc0de;
        border-radius: var(--checkout-button-border-radius, 3px);
        min-height: auto;
        margin-bottom: 0; }
        .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover {
          color: var(--checkout-button-hover-text-color, #ffffff);
          background-color: #5bc0de;
          border-color: var(--checkout-button-hover-border-color, #5bc0de);
          -webkit-transition-duration: var(--checkout-button-hover-transition-duration, 0.3s);
               -o-transition-duration: var(--checkout-button-hover-transition-duration, 0.3s);
                  transition-duration: var(--checkout-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-cart .woocommerce .remove {
      background: transparent;
      color: var(--order-summary-remove-icon-normal-color, #000000) !important;
      /* need important here because Woo also has !important */
      width: auto; }
      .elementor-widget-woocommerce-cart .woocommerce .remove:hover {
        background: transparent;
        color: var(--order-summary-remove-icon-hover-color, #5bc0de) !important;
        /* need important here because Woo also has !important */ }
    .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals {
      float: none;
      width: 100%; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td {
        padding-left: 0; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td {
        padding-right: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
      float: right;
      width: 100%; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .form-row {
      padding: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex; }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
        -webkit-box-flex: 2;
            -ms-flex: 2;
                flex: 2;
        padding-right: 30px; }
        @media (max-width: 1024px) {
          .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
            padding-right: 0; } }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-end {
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
          display: block; } }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-cart .woocommerce .coupon {
        margin: var(--sections-margin, 0); }
        .elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code {
          width: 100%;
          margin-right: 0;
          margin-bottom: 15px; }
        .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
          width: 100%; } }
    .elementor-widget-woocommerce-cart .woocommerce table.shop_table {
      border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
        float: left;
        font-size: 14px;
        font-weight: 700; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
          float: none;
          width: 100%; } }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table th {
        border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions {
        padding: 16px 0 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a {
        display: inline-block; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child {
        display: var(--update-cart-automatically-display, table-row); }
    .elementor-widget-woocommerce-cart .woocommerce table.cart {
      margin-bottom: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart img {
        width: 55px;
        height: auto;
        display: block; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-top: var(--order-summary-rows-gap-top, 20px);
        padding-right: 20px;
        padding-bottom: var(--order-summary-rows-gap-bottom, 20px);
        padding-left: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td span {
          color: var(--order-summary-color, #000000);
          font-size: 14px;
          font-weight: 400; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
          border-top-width: var(--order-summary-items-divider-weight, 1px);
          border-top-style: solid;
          border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
          @media (max-width: 768px) {
            .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
              border-top-width: 0; } }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove {
          padding-left: 0;
          padding-right: 0; }
      @media (min-width: 767px) {
        .elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td {
          border-top: none; } }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove {
        position: relative; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-name {
        padding-right: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
        border-top-width: var(--order-summary-items-divider-weight, 1px);
        border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
          border-top: none; } }
    @media (max-width: 768px) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-left: 0;
        padding-right: 0; } }
    @media (max-width: 767px) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart {
        padding: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
          padding: 16px 28px; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
            border-top: none; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td {
          padding-left: 0;
          padding-right: 0; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
            padding: 0; } }
    .elementor-widget-woocommerce-cart .woocommerce a {
      color: var(--links-normal-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce a:hover {
        color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      padding-top: 0;
      padding-bottom: 8px;
      padding-left: 0;
      padding-right: 20px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      margin-bottom: var(--sections-title-spacing, 1rem);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      padding-bottom: var(--order-summary-title-spacing, 8px);
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart td::before {
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button::after {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000); }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td, .elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td {
        padding-left: 0; } }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: var(--forms-fields-normal-color, #818a91); }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: var(--forms-fields-focus-color, #818a91);
    border-color: var(--forms-fields-focus-border-color, #818a91);
    -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
         -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
            transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }

.elementor-widget-woocommerce-my-account {
  font-family: Roboto, sans-serif;
  color: #818a91;
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table {
    border: none;
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    background-color: var(--sections-background-color, #ffffff); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px 3px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,
  .elementor-widget-woocommerce-my-account .e-my-account-tab address {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content {
    border: 0; }
    .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
      padding: 0;
      border: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    margin-bottom: 40px; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads,
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px 3px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content > div > p {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: var(--forms-fields-normal-background-color, #f7f7f7);
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: var(--forms-fields-focus-background-color, #f7f7f7);
      border-color: var(--forms-fields-focus-border-color, initial);
      -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
           -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
              transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below {
    background-color: var(--forms-fields-normal-background-color, #f7f7f7); }
  .elementor-widget-woocommerce-my-account .woocommerce ::-webkit-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce ::-moz-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce ::-ms-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce-message {
    font-size: 14px; }
  .elementor-widget-woocommerce-my-account .woocommerce address {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a:hover {
      color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover {
      background-color: initial; }
    .elementor-widget-woocommerce-my-account .woocommerce a.button:hover {
      background-color: initial; }
  .elementor-widget-woocommerce-my-account .woocommerce em {
    font-size: 12px;
    color: var(--login-messages-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .form-row {
    padding-left: var(--forms-columns-gap-padding-left, 0px);
    padding-right: var(--forms-columns-gap-padding-right, 0px);
    margin-left: var(--forms-columns-gap-margin-left, 0px);
    margin-right: var(--forms-columns-gap-margin-right, 0px);
    margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row label {
      color: var(--forms-labels-color, #818a91);
      margin-bottom: var(--forms-label-spacing, 0px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,
    .elementor-widget-woocommerce-my-account .woocommerce .form-row select {
      color: var(--forms-fields-normal-color, #818a91);
      border-radius: var(--forms-fields-border-radius, 0px);
      padding: var(--forms-fields-padding, 16px);
      background: #f7f7f7;
      border: none;
      font-size: 14px; }
      .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,
      .elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        border-color: var(--forms-fields-focus-border-color, #818a91);
        -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field {
    margin-bottom: 5px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text {
    margin-bottom: 15px;
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword {
    font-size: 12px;
    margin-bottom: 0px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    width: 50%;
    /* 50% to match the design - it would normally be full width */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p {
      color: var(--general-text-color, #818a91); }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first {
      width: 100%; }
  .elementor-widget-woocommerce-my-account .woocommerce .login,
  .elementor-widget-woocommerce-my-account .woocommerce .register,
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px);
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .login .button,
    .elementor-widget-woocommerce-my-account .woocommerce .register .button,
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button {
      background: #5bc0de;
      border: none;
      color: var(--forms-buttons-normal-text-color, #ffffff);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: var(--forms-buttons-padding, 12px 32px); }
      .elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover {
        color: var(--forms-buttons-hover-text-color, #ffffff);
        -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3) {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    margin-top: 10px;
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox {
    vertical-align: middle; }
  .elementor-widget-woocommerce-my-account .woocommerce p:last-of-type {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span {
    color: var(--checkboxes-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tr,
  .elementor-widget-woocommerce-my-account .woocommerce td,
  .elementor-widget-woocommerce-my-account .woocommerce th {
    border: none; }
  .elementor-widget-woocommerce-my-account .woocommerce h2,
  .elementor-widget-woocommerce-my-account .woocommerce h3 {
    color: var(--typography-section-titles-color, #000000);
    margin-top: 0;
    margin-bottom: var(--section-title-spacing, 45px);
    font-weight: 400; }
  .elementor-widget-woocommerce-my-account .woocommerce strong {
    color: var(--general-text-color, #000000); }
    .elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label {
      color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta {
    color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .product-quantity {
    font-weight: 400;
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
    float: left;
    width: 25%;
    /* 25% to match the design */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul {
      -webkit-padding-start: 0;
              padding-inline-start: 0; }
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li {
        list-style-type: none;
        margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
        display: inline-block;
        width: 100%;
        /* add a Divider between the tabs that is outside of the margins */ }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li::after {
          content: "";
          display: block;
          width: 100%;
          background-color: var(--tabs-divider-color, #818a91);
          height: var(--tabs-divider-weight, 0px);
          position: relative;
          top: calc(var(--tabs-spacing, 2px) / 2); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a {
          color: var(--tabs-active-color, #5bc0de);
          background: #eceeef;
          border-color: var(--tabs-active-border-color, transparent); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
          font-style: normal;
          font-weight: bold;
          font-size: 14px;
          color: var(--tabs-normal-color, #818a91);
          display: block;
          padding: var(--tabs-padding, 12px 20px);
          text-align: var(--tabs-alignment, start);
          background: #f7f7f7;
          border-radius: var(--tabs-border-radius, 0px);
          border-style: var(--tabs-border-type, solid);
          border-color: var(--tabs-border-color, transparent);
          border-width: 0px; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover {
            color: var(--tabs-hover-color, #5bc0de);
            border-color: var(--tabs-hover-border-color, transparent); }
          @media (max-width: 1024px) {
            .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
              padding: var(--tabs-padding, 10px); } }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard {
          margin-top: 0; }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout {
          margin-bottom: 0; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout::after {
            display: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
    float: right;
    width: 75%;
    /* 75% to match the design */
    padding: 0;
    padding-left: var(--tab-content-spacing, 6%);
    /* 6% to match the design */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
        width: 100%;
        padding: var(--tab-content-spacing, 6%) 0 0 0; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper {
      font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type {
      margin-top: 30px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark {
      background-color: transparent;
      font-weight: bold;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child th,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child th {
    border-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th {
    border-top: 0;
    padding-left: 0;
    padding-top: 0;
    padding-bottom: var(--tables-titles-spacing, 9px); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > th,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > th {
    background-color: transparent;
    padding-left: 0;
    padding-top: var(--order-summary-rows-gap-top, 9px);
    padding-bottom: var(--order-summary-rows-gap-bottom, 9px);
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .shop_table {
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        -webkit-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
                transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table td, .elementor-widget-woocommerce-my-account .woocommerce .shop_table th {
      border-top-style: var(--tables-divider-border-type, solid);
      border-top-width: var(--tables-divider-border-width, 1px);
      border-top-color: var(--tables-divider-border-color, #D4D4D4); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th {
      color: var(--tables-title-color, #000000); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span {
        color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td {
    padding-left: 0;
    color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td {
    border-top: none;
    padding-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .order-again .button {
    background: transparent;
    border: 2px solid #5bc0de;
    border-style: var(--tables-buttons-border-type, solid);
    border-color: var(--tables-buttons-border-color, #5bc0de);
    border-width: 2px;
    border-radius: var(--tables-button-border-radius, 3px);
    vertical-align: middle;
    color: var(--tables-button-normal-text-color, #818a91);
    margin-top: 0;
    margin-bottom: 0;
    padding: var(--tables-button-padding, 12px 32px); }
    .elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover {
      color: var(--tables-button-hover-text-color, #818a91);
      -webkit-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
           -o-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
              transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .title h3, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3 {
    float: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-Address address, .elementor-widget-woocommerce-my-account .woocommerce-Addresses address {
    padding: var(--sections-padding, 45px 30px 16px 30px); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .edit, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit {
    float: left;
    position: absolute;
    margin-left: var(--edit-link-margin-start, 30px);
    margin-top: var(--edit-link-margin-top, 10px); }
  .elementor-widget-woocommerce-my-account .woocommerce .u-columns {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset {
    border: none;
    padding: 0;
    -webkit-margin-start: 0;
            margin-inline-start: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend {
      font-weight: 700;
      padding: 20px 0;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button {
    background: #5bc0de;
    border: none;
    color: var(--forms-buttons-normal-text-color, #ffffff);
    border-radius: var(--forms-buttons-border-radius, 3px);
    padding: var(--forms-buttons-padding, 12px 32px);
    margin-top: 20px; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover {
      color: var(--forms-buttons-hover-text-color, #ffffff);
      -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
           -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
              transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-pagination {
    padding: 16px 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-pagination .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        -webkit-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
                transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td {
    vertical-align: top;
    line-height: unset; }

.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  float: none;
  width: 100%; }
  .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
    display: inline-block; }

.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation {
  display: block; }

.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: block; }
  .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: var(--tabs-container-justify-content, space-between);
        -ms-flex-pack: var(--tabs-container-justify-content, space-between);
            justify-content: var(--tabs-container-justify-content, space-between); }
    @media (max-width: 767px) {
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
        display: block; } }
    .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
      display: inline-block;
      width: var(--tab-width, 100%);
      padding: 0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);
      margin: 0;
      border-right-color: var(--tabs-divider-color, #818a91);
      border-right-width: var(--tabs-divider-weight, 0px);
      border-right-style: solid; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li::after {
        display: none; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type {
        padding-left: 0; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type {
        padding-right: 0;
        border-right-width: 0; }
      @media (max-width: 767px) {
        .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
          margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
          display: inline-block;
          width: 100%; } }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-content {
  float: none;
  width: 100%;
  padding: var(--tab-content-spacing, 50px) 0 0 0; }

/**
 * Specific styling in the Editor.
 */
.elementor-editor-active,
.elementor-editor-preview {
  /**
	 * Prep for the js switching of tabs when in the editor.
	 */
  /**
	 * Disable all but the first 'View' order button as
	 * this is the only order loaded for preview purposes.
	 */ }
  .elementor-editor-active .elementor-widget-container,
  .elementor-editor-preview .elementor-widget-container {
    min-height: 1px; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a {
    pointer-events: none; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button {
    pointer-events: none;
    opacity: .3; }

/**
 * Hide all the other My Account pages' content in the Editor except the first one - dashboard page
 */
.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type) {
  display: none; }

.product .count {
  background-color: inherit; }

.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2 {
  display: none; }

.woocommerce div.product.elementor form.cart div.product-addon {
  -ms-flex-preferred-size: 100%;
      flex-basis: 100%;
  -ms-flex-negative: 0;
      flex-shrink: 0; }

.e-sticky-right-column--active {
  position: -webkit-sticky;
  position: sticky;
  top: 0; }

.elementor-theme-builder-content-area {
  height: 400px; }

.elementor-location-header:before,
.elementor-location-footer:before {
  content: '';
  display: table;
  clear: both; }

.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post {
  display: block; }

.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid {
  color: #D4D4D4;
  border: none;
  border-top: 1px solid;
  border-bottom: 1px solid;
  padding-top: 10px;
  padding-bottom: 10px; }

.elementor-post-navigation-borders-yes .elementor-post-navigation__separator {
  height: 100%;
  width: 1px;
  margin: 0 auto;
  background-color: #D4D4D4; }

.elementor-post-navigation {
  overflow: hidden;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-post-navigation .post-navigation__arrow-wrapper {
    color: #D4D4D4; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev {
      font-size: 30px;
      padding-right: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next {
      font-size: 30px;
      padding-left: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper i {
      -webkit-transform: translateY(-5%);
          -ms-transform: translateY(-5%);
              transform: translateY(-5%); }
  .elementor-post-navigation .elementor-post-navigation__link__prev, .elementor-post-navigation .elementor-post-navigation__link__next {
    overflow: hidden; }
  .elementor-post-navigation .elementor-post-navigation__link a {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    max-width: 100%; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__next--label {
    text-transform: uppercase;
    font-size: 0.8em; }
  .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--title {
    font-size: 0.7em; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--label, .elementor-post-navigation .post-navigation__next--title {
    overflow: hidden;
    -o-text-overflow: ellipsis;
       text-overflow: ellipsis; }
  .elementor-post-navigation span.elementor-post-navigation__link__next {
    text-align: right; }
  .elementor-post-navigation span.elementor-post-navigation__link__next, .elementor-post-navigation span.elementor-post-navigation__link__prev {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }

.elementor-post-navigation .elementor-grid {
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between; }

.elementor-post-navigation .elementor-post-navigation__link {
  width: calc( 50% - ( 1px / 2 ));
  white-space: nowrap;
  overflow: hidden;
  -o-text-overflow: ellipsis;
     text-overflow: ellipsis; }

.elementor-post-navigation .elementor-post-navigation__separator-wrapper {
  text-align: center; }

.elementor-post-navigation .elementor-post-navigation__next {
  text-align: right; }
  .elementor-post-navigation .elementor-post-navigation__next a {
    float: right; }

.elementor-search-form {
  display: block;
  -webkit-transition: 0.2s;
  -o-transition: 0.2s;
  transition: 0.2s;
  /*------ Reset ------*/ }
  .elementor-search-form .e-font-icon-svg-container {
    width: 100%;
    height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
  .elementor-search-form input[type="search"], .elementor-search-form button {
    margin: 0;
    border: 0;
    padding: 0;
    display: inline-block;
    vertical-align: middle;
    white-space: normal;
    background: none;
    line-height: 1;
    min-width: 0;
    font-size: 15px;
    -webkit-appearance: none;
    -moz-appearance: none; }
    .elementor-search-form input[type="search"]:focus, .elementor-search-form button:focus {
      outline: 0;
      color: inherit; }
  .elementor-search-form button {
    background-color: #818a91;
    font-size: var(--e-search-form-submit-icon-size, 16px);
    color: #fff;
    border-radius: 0; }
  .elementor-search-form__container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-transition: 0.2s;
    -o-transition: 0.2s;
    transition: 0.2s;
    overflow: hidden;
    border: 0 solid transparent;
    min-height: 50px; }
    .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      background: #eceeef; }
  .elementor-search-form__input {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
    color: #55595c;
    -webkit-transition: color 0.2s;
    -o-transition: color 0.2s;
    transition: color 0.2s; }
    .elementor-search-form__input::-webkit-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-ms-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::-ms-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
  .elementor-search-form__submit {
    -webkit-transition: color 0.2s, background 0.2s;
    -o-transition: color 0.2s, background 0.2s;
    transition: color 0.2s, background 0.2s;
    font-size: var(--e-search-form-submit-icon-size, 16px); }
    .elementor-search-form__submit svg {
      fill: var(--e-search-form-submit-text-color, #fff);
      width: var(--e-search-form-submit-icon-size, 16px);
      height: var(--e-search-form-submit-icon-size, 16px); }
  .elementor-search-form .elementor-search-form__submit, .elementor-search-form .elementor-search-form__submit:hover {
    color: var(--e-search-form-submit-text-color, #fff);
    border: none;
    border-radius: 0; }
  .elementor-search-form--button-type-text .elementor-search-form__submit {
    -ms-flex-negative: 0;
        flex-shrink: 0; }
  .elementor-search-form--skin-minimal .elementor-search-form__icon {
    opacity: 0.6;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end;
    color: #55595c;
    fill: #55595c;
    font-size: var(--e-search-form-icon-size-minimal, 15px); }
    .elementor-search-form--skin-minimal .elementor-search-form__icon svg {
      width: var(--e-search-form-icon-size-minimal, 15px);
      height: var(--e-search-form-icon-size-minimal, 15px); }
  .elementor-search-form--skin-full_screen .elementor-search-form input[type="search"].elementor-search-form__input {
    font-size: 50px;
    text-align: center;
    border-style: solid;
    border-width: 0 0 1px 0;
    border-color: #fff;
    line-height: 1.5;
    color: #fff; }
  .elementor-search-form--skin-full_screen .elementor-search-form__toggle {
    display: inline-block;
    cursor: pointer;
    vertical-align: middle;
    color: var(--e-search-form-toggle-color, #494c4f);
    font-size: var(--e-search-form-toggle-size, 33px); }
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle i,
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container {
      position: relative;
      display: block;
      -webkit-transition: 0.2s;
      -o-transition: 0.2s;
      transition: 0.2s;
      width: var(--e-search-form-toggle-size, 33px);
      height: var(--e-search-form-toggle-size, 33px);
      background-color: var(--e-search-form-toggle-background-color, rgba(0, 0, 0, 0.05));
      border-style: solid;
      border-color: var(--e-search-form-toggle-color, #494c4f);
      border-width: var(--e-search-form-toggle-border-width, 0);
      border-radius: var(--e-search-form-toggle-border-radius, 3px); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        position: absolute;
        left: 50%;
        top: 50%;
        -webkit-transform: translate(-50%, -50%);
            -ms-transform: translate(-50%, -50%);
                transform: translate(-50%, -50%); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before {
        font-size: var(--e-search-form-toggle-icon-size, 0.55em); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        fill: var(--e-search-form-toggle-color, #494c4f);
        width: var(--e-search-form-toggle-icon-size, 0.55em);
        height: var(--e-search-form-toggle-icon-size, 0.55em); }
  .elementor-search-form--skin-full_screen .elementor-search-form__container {
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    position: fixed;
    z-index: 9998;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    height: 100vh;
    padding: 0 15%;
    background-color: rgba(0, 0, 0, 0.8); }
    .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      overflow: hidden;
      opacity: 0;
      -webkit-transform: scale(0);
          -ms-transform: scale(0);
              transform: scale(0); }
      .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button {
        display: none; }

.elementor-author-box {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }
  .elementor-author-box__avatar {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-right: 25px; }
    .elementor-author-box__avatar img {
      width: 100px;
      border-radius: 500px;
      -o-object-fit: cover;
         object-fit: cover; }
  .elementor-author-box__text {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    font-size: 17px; }
  .elementor-author-box__name {
    font-size: 24px;
    margin-bottom: 5px; }
  .elementor-author-box__bio {
    margin-bottom: 0.8em; }
    .elementor-author-box__bio p {
      margin-bottom: 0.8em; }
      .elementor-author-box__bio p:last-of-type {
        margin-bottom: 0; }
  .elementor-author-box--layout-image-left .elementor-author-box {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
    .elementor-author-box--layout-image-left .elementor-author-box__avatar {
      margin-left: 0;
      margin-right: 25px; }
  .elementor-author-box--layout-image-right .elementor-author-box {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
    .elementor-author-box--layout-image-right .elementor-author-box__avatar {
      margin-right: 0;
      margin-left: 25px; }
  .elementor-author-box--layout-image-above .elementor-author-box {
    display: block; }
    .elementor-author-box--layout-image-above .elementor-author-box__avatar {
      margin: 0 auto 15px;
      display: inline-block; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar {
    margin-left: 0; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar {
    margin-right: 0; }
  .elementor-author-box--align-left .elementor-author-box {
    text-align: left; }
  .elementor-author-box--align-right .elementor-author-box {
    text-align: right; }
  .elementor-author-box--align-center .elementor-author-box {
    text-align: center; }

.elementor-button.elementor-author-box__button {
  border: solid 2px #55595c;
  font-size: 15px;
  font-weight: 100;
  padding: 10px 18px; }
  .elementor-button.elementor-author-box__button, .elementor-button.elementor-author-box__button:hover {
    background: transparent;
    color: #55595c; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar {
  -ms-flex-item-align: start;
      align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar {
  -ms-flex-item-align: start;
      align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar {
  -ms-flex-item-align: center;
      align-self: center; }

.elementor-post-info__terms-list {
  display: inline-block; }

.elementor-post-info .elementor-icon-list-icon .elementor-avatar {
  border-radius: 100%; }

.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after {
  margin: initial; }

.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text {
  display: inline-block; }
  .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a, .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span {
    display: inline; }

.elementor-widget-breadcrumbs {
  font-size: 0.85em; }
  .elementor-widget-breadcrumbs p {
    margin-bottom: 0; }

.elementor-sitemap-wrap {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-flow: row wrap;
          flex-flow: row wrap; }

.elementor-sticky--active {
  z-index: 99; }

[data-elementor-type="popup"]:not(.elementor-edit-area) {
  display: none; }

[data-elementor-type="popup"] .elementor-section-wrap:not(:empty) + #elementor-add-new-section {
  display: none; }

.elementor-popup-modal {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  pointer-events: none;
  background-color: transparent;
  -webkit-user-select: auto;
     -moz-user-select: auto;
      -ms-user-select: auto;
          user-select: auto; }
  .elementor-popup-modal .dialog-header, .elementor-popup-modal .dialog-buttons-wrapper {
    display: none; }
  .elementor-popup-modal .dialog-close-button {
    display: none;
    top: 20px;
    margin-top: 0;
    right: 20px;
    opacity: 1;
    z-index: 9999;
    pointer-events: all; }
    .elementor-popup-modal .dialog-close-button svg {
      fill: #373a3c;
      height: 1em;
      width: 1em; }
  .elementor-popup-modal .dialog-widget-content {
    width: initial;
    overflow: visible;
    max-width: 100%;
    max-height: 100%;
    border-radius: 0;
    -webkit-box-shadow: none;
            box-shadow: none;
    pointer-events: all; }
  .elementor-popup-modal .dialog-message {
    width: 640px;
    max-width: 100vw;
    max-height: 100vh;
    padding: 0;
    overflow: auto;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .elementor-popup-modal .elementor {
    width: 100%; }

.elementor-motion-effects-element, .elementor-motion-effects-layer {
  -webkit-transition-property: opacity, -webkit-transform;
  transition-property: opacity, -webkit-transform;
  -o-transition-property: transform, opacity;
  transition-property: transform, opacity;
  transition-property: transform, opacity, -webkit-transform;
  -webkit-transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
       -o-transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
          transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
  -webkit-transition-duration: 1s;
       -o-transition-duration: 1s;
          transition-duration: 1s; }

.elementor-motion-effects-container {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  -webkit-transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x);
      -ms-transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x);
          transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); }

.elementor-motion-effects-layer {
  position: absolute;
  top: 0;
  left: 0;
  background-repeat: no-repeat;
  -webkit-background-size: cover;
          background-size: cover; }

.elementor-motion-effects-perspective {
  -webkit-perspective: 1200px;
          perspective: 1200px; }

.elementor-widget-posts:after, .elementor-widget-archive-posts:after {
  display: none; }

.elementor-posts-container.elementor-posts-masonry {
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start; }

.elementor-posts-container:not(.elementor-posts-masonry) {
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch; }

.elementor-posts-container .elementor-post {
  padding: 0;
  margin: 0; }
  .elementor-posts-container .elementor-post__thumbnail {
    overflow: hidden; }
    .elementor-posts-container .elementor-post__thumbnail img {
      display: block;
      width: 100%;
      max-height: none;
      max-width: none;
      -webkit-transition: -webkit-filter 0.3s;
      transition: -webkit-filter 0.3s;
      -o-transition: filter 0.3s;
      transition: filter 0.3s;
      transition: filter 0.3s, -webkit-filter 0.3s; }
    .elementor-posts-container .elementor-post__thumbnail__link {
      position: relative;
      display: block;
      width: 100%; }

.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0; }
  .elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail img {
    height: auto;
    position: absolute;
    top: calc( 50% + 1px);
    left: calc( 50% + 1px);
    -webkit-transform: scale(1.01) translate(-50%, -50%);
        -ms-transform: scale(1.01) translate(-50%, -50%);
            transform: scale(1.01) translate(-50%, -50%); }
  .elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail.elementor-fit-height img {
    height: 100%;
    width: auto; }

.elementor-posts .elementor-post {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-transition-property: background, border, -webkit-box-shadow;
  transition-property: background, border, -webkit-box-shadow;
  -o-transition-property: background, border, box-shadow;
  transition-property: background, border, box-shadow;
  transition-property: background, border, box-shadow, -webkit-box-shadow;
  -webkit-transition-duration: 0.25s;
       -o-transition-duration: 0.25s;
          transition-duration: 0.25s; }
  .elementor-posts .elementor-post__title {
    font-size: 18px;
    margin: 0; }
  .elementor-posts .elementor-post__excerpt {
    margin-bottom: 10px; }
    .elementor-posts .elementor-post__excerpt p {
      margin: 0;
      line-height: 1.5em;
      font-size: 14px;
      color: #777; }
  .elementor-posts .elementor-post__meta-data {
    line-height: 1.3em;
    font-size: 12px;
    margin-bottom: 13px;
    color: #adadad; }
  .elementor-posts .elementor-post__read-more {
    font-size: 12px;
    font-weight: bold; }
  .elementor-posts .elementor-post__thumbnail {
    position: relative; }

.elementor-posts--skin-classic {
  display: grid;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap; }
  .elementor-posts--skin-classic:not(.elementor-posts-masonry) {
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch; }
  .elementor-posts--skin-classic .elementor-post {
    overflow: hidden; }
    .elementor-posts--skin-classic .elementor-post__text {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }

.elementor-posts--align-left .elementor-post {
  text-align: left; }

.elementor-posts--align-right .elementor-post {
  text-align: right; }

.elementor-posts--align-center .elementor-post {
  text-align: center; }

.elementor-posts--thumbnail-top .elementor-post {
  display: block;
  /*

			 used to be
			 align-self: flex-start;
			 until v2.1

			*/ }
  .elementor-posts--thumbnail-top .elementor-post__thumbnail__link {
    margin-bottom: 20px; }
  .elementor-posts--thumbnail-top .elementor-post__text {
    width: 100%; }

.elementor-posts--thumbnail-top.elementor-posts--align-left .elementor-post__thumbnail__link {
  margin-right: auto; }

.elementor-posts--thumbnail-top.elementor-posts--align-right .elementor-post__thumbnail__link {
  margin-left: auto; }

.elementor-posts--thumbnail-top.elementor-posts--align-center .elementor-post__thumbnail__link {
  margin-right: auto;
  margin-left: auto; }

.elementor-posts--thumbnail-left .elementor-post__thumbnail__link, .elementor-posts--thumbnail-right .elementor-post__thumbnail__link {
  -ms-flex-negative: 0;
      flex-shrink: 0;
  width: 25%; }

.elementor-posts--thumbnail-left .elementor-post__thumbnail__link {
  -webkit-box-ordinal-group: 1;
      -ms-flex-order: 0;
          order: 0;
  margin-right: 20px; }

.elementor-posts--thumbnail-right .elementor-post__thumbnail__link {
  -webkit-box-ordinal-group: 6;
      -ms-flex-order: 5;
          order: 5;
  margin-left: 20px; }

.elementor-posts--thumbnail-none .elementor-posts-container .elementor-post__thumbnail__link {
  display: none; }

.elementor-posts .elementor-post__card {
  overflow: hidden;
  position: relative;
  background-color: #fff;
  width: 100%;
  min-height: 100%;
  border-radius: 3px;
  border: 0 solid #818a91;
  -webkit-transition: all 0.25s;
  -o-transition: all 0.25s;
  transition: all 0.25s; }
  .elementor-posts .elementor-post__card .elementor-post__thumbnail {
    position: relative;
    transform-style: preserve-3d;
    -webkit-transform-style: preserve-3d; }
    .elementor-posts .elementor-post__card .elementor-post__thumbnail img {
      width: calc( 100% + 1px); }
  .elementor-posts .elementor-post__card .elementor-post__text {
    padding: 0 30px;
    margin-bottom: 0;
    margin-top: 20px; }
  .elementor-posts .elementor-post__card .elementor-post__read-more {
    margin-bottom: 20px;
    display: inline-block; }
  .elementor-posts .elementor-post__card .elementor-post__meta-data {
    padding: 15px 30px;
    margin-bottom: 0;
    border-top: 1px solid #eaeaea; }
    .elementor-posts .elementor-post__card .elementor-post__meta-data span + span:before {
      margin: 0 5px; }
  .elementor-posts .elementor-post__card .elementor-post__title {
    font-size: 21px; }
  .elementor-posts .elementor-post__card .elementor-post__excerpt {
    line-height: 1.7; }
  .elementor-posts .elementor-post__card .elementor-post__excerpt, .elementor-posts .elementor-post__card .elementor-post__title {
    margin-bottom: 25px; }
  .elementor-posts .elementor-post__card .elementor-post__badge, .elementor-posts .elementor-post__card .elementor-post__read-more {
    text-transform: uppercase; }

.elementor-posts .elementor-post__badge {
  position: absolute;
  top: 0;
  background: #818a91;
  color: #fff;
  font-size: 12px;
  padding: 0.6em 1.2em;
  line-height: 1;
  font-weight: 400;
  margin: 20px;
  border-radius: 999px; }

.elementor-posts .elementor-post__avatar {
  position: relative;
  padding: 0 30px;
  width: 100%;
  top: -25px;
  height: 0;
  pointer-events: none; }
  .elementor-posts .elementor-post__avatar img {
    border-radius: 50%;
    width: 60px;
    pointer-events: all;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%); }

.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card, .elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data, .elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data {
  margin-top: auto; }

.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar {
  padding-top: 0;
  position: static;
  height: auto; }
  .elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar img.avatar {
    -webkit-transform: translateY(0);
        -ms-transform: translateY(0);
            transform: translateY(0);
    vertical-align: bottom; }

.elementor-posts--show-avatar .elementor-post__thumbnail__link {
  margin-bottom: 25px; }

.elementor-posts__hover-gradient .elementor-post__card .elementor-post__thumbnail__link:after {
  display: block;
  content: '';
  background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.35)), color-stop(75%, rgba(0, 0, 0, 0)));
  background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 75%);
  background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 75%);
  background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 75%);
  background-repeat: no-repeat;
  height: 100%;
  width: 100%;
  position: absolute;
  bottom: 0;
  opacity: 1;
  -webkit-transition: all 0.3s ease-out;
  -o-transition: all 0.3s ease-out;
  transition: all 0.3s ease-out; }

.elementor-posts__hover-gradient .elementor-post__card:hover .elementor-post__thumbnail__link:after {
  opacity: 0.5; }

.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img {
  height: 100%; }

.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: calc( 100% + 1px); }

.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img {
  height: 115%; }

.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: 115%; }

.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img {
  height: 115%; }

.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: 115%; }

.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img {
  height: 100%; }

.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: calc( 100% + 1px); }

.elementor-posts__hover-zoom-out .elementor-post__thumbnail img, .elementor-posts__hover-zoom-in .elementor-post__thumbnail img {
  -webkit-transition: height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1), -webkit-filter 0.3s;
  transition: height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1), -webkit-filter 0.3s;
  -o-transition: filter 0.3s, height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1);
  transition: filter 0.3s, height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1);
  transition: filter 0.3s, height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1), -webkit-filter 0.3s; }

.elementor-card-shadow-yes .elementor-post__card {
  -webkit-box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.15);
          box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.15); }
  .elementor-card-shadow-yes .elementor-post__card:hover {
    -webkit-box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.15);
            box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.15); }

.elementor-posts--skin-full_content article {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  overflow: hidden; }
  .elementor-posts--skin-full_content article .elementor-post__thumbnail {
    padding-bottom: 0; }

body.elementor-editor-active .elementor-posts--skin-full_content,
body.elementor-editor-active .elementor-posts--skin-archive_full_content {
  pointer-events: none; }
  body.elementor-editor-active .elementor-posts--skin-full_content .elementor-post__thumbnail__link,
  body.elementor-editor-active .elementor-posts--skin-archive_full_content .elementor-post__thumbnail__link {
    display: none; }

body.elementor-editor-active .elementor-posts--show-thumbnail .elementor-post__thumbnail__link {
  display: block; }

.elementor-portfolio__filters {
  list-style: none;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  padding: 0;
  margin: 0; }

.elementor-portfolio__filter {
  margin: 0;
  cursor: pointer;
  padding: 8px; }

.elementor-portfolio-item {
  -ms-flex-item-align: start;
      align-self: flex-start;
  -webkit-transition-property: opacity, -webkit-transform;
  transition-property: opacity, -webkit-transform;
  -o-transition-property: transform, opacity;
  transition-property: transform, opacity;
  transition-property: transform, opacity, -webkit-transform;
  -webkit-transition-timing-function: ease-in-out;
       -o-transition-timing-function: ease-in-out;
          transition-timing-function: ease-in-out;
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  overflow: hidden;
  margin: 0; }
  .elementor-portfolio-item__title {
    margin: 0;
    padding: 0;
    line-height: 1;
    font-size: 18px;
    color: #fff; }
  .elementor-portfolio-item__tags__separator:before {
    content: ', '; }
  .elementor-portfolio-item__overlay {
    opacity: 0;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 15px;
    -webkit-transition: opacity 1s;
    -o-transition: opacity 1s;
    transition: opacity 1s;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    text-align: center;
    overflow: hidden;
    background-color: rgba(129, 138, 145, 0.8); }
    .elementor-portfolio-item__overlay:hover {
      opacity: 1;
      -webkit-transition: opacity 0.5s;
      -o-transition: opacity 0.5s;
      transition: opacity 0.5s; }
  .elementor-portfolio-item__img img[src=""] {
    background-color: rgba(0, 0, 0, 0.1);
    height: 100%; }

.elementor-portfolio.elementor-has-item-ratio {
  -webkit-transition: height 0.5s;
  -o-transition: height 0.5s;
  transition: height 0.5s; }
  .elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail {
    position: absolute;
    background-color: rgba(0, 0, 0, 0.1); }
    .elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail__link {
      padding-bottom: 56.25%; }

.elementor ul li.elementor-portfolio__filter {
  list-style-type: none; }

.elementor-widget-posts.load-more-align-center .elementor-button-wrapper, .elementor-widget-archive-posts.load-more-align-center .elementor-button-wrapper {
  text-align: center; }

.elementor-widget-posts.load-more-align-start .elementor-button-wrapper, .elementor-widget-archive-posts.load-more-align-start .elementor-button-wrapper {
  text-align: start; }

.elementor-widget-posts.load-more-align-end .elementor-button-wrapper, .elementor-widget-archive-posts.load-more-align-end .elementor-button-wrapper {
  text-align: end; }

.elementor-widget-posts.load-more-align-justify .elementor-button, .elementor-widget-archive-posts.load-more-align-justify .elementor-button {
  width: 100%; }

.elementor-widget-posts .e-load-more-spinner, .elementor-widget-archive-posts .e-load-more-spinner {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-widget-posts .e-load-more-spinner i,
  .elementor-widget-posts .e-load-more-spinner svg, .elementor-widget-archive-posts .e-load-more-spinner i,
  .elementor-widget-archive-posts .e-load-more-spinner svg {
    margin: 0 auto;
    display: none; }
  .elementor-widget-posts .e-load-more-spinner i, .elementor-widget-archive-posts .e-load-more-spinner i {
    color: var(--load-more-spinner-color); }
  .elementor-widget-posts .e-load-more-spinner svg, .elementor-widget-archive-posts .e-load-more-spinner svg {
    fill: var(--load-more-spinner-color);
    height: 1em;
    width: 1em; }

.elementor-widget-posts .e-load-more-message, .elementor-widget-archive-posts .e-load-more-message {
  color: var(--load-more-message-color);
  text-align: var(--load-more-message-alignment, center);
  display: none;
  margin-top: var(--load-more—spacing, 30px); }

.elementor-widget-posts.e-load-more-pagination-loading, .elementor-widget-archive-posts.e-load-more-pagination-loading {
  cursor: default; }
  .elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner, .elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner {
    margin-top: var(--load-more—spacing, 30px); }
    .elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner i,
    .elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner svg, .elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner i,
    .elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner svg {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex; }
  .elementor-widget-posts.e-load-more-pagination-loading .elementor-button-content-wrapper, .elementor-widget-archive-posts.e-load-more-pagination-loading .elementor-button-content-wrapper {
    visibility: hidden; }

.elementor-widget-posts.e-load-more-pagination-end .elementor-button-wrapper, .elementor-widget-archive-posts.e-load-more-pagination-end .elementor-button-wrapper {
  display: none; }

.elementor-widget-posts.e-load-more-pagination-end .e-load-more-message, .elementor-widget-archive-posts.e-load-more-pagination-end .e-load-more-message {
  display: block; }

.elementor-widget-posts.e-load-more-no-spinner .elementor-button-content-wrapper, .elementor-widget-archive-posts.e-load-more-no-spinner .elementor-button-content-wrapper {
  visibility: visible; }

.elementor-widget-posts .elementor-button-wrapper, .elementor-widget-archive-posts .elementor-button-wrapper {
  margin-top: var(--load-more—spacing, 30px); }
  .elementor-widget-posts .elementor-button-wrapper .e-load-more-spinner, .elementor-widget-archive-posts .elementor-button-wrapper .e-load-more-spinner {
    position: absolute;
    left: 50%;
    top: 50%;
    -webkit-transform: translate(-50%, -50%);
        -ms-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
    margin: inherit; }
  .elementor-widget-posts .elementor-button-wrapper .elementor-button, .elementor-widget-archive-posts .elementor-button-wrapper .elementor-button {
    cursor: pointer;
    position: relative; }

/*
Multi Steps Form

Currently manually overwriting  - need to find a better solution,
the source property is coming from element/dev/scss...

*/
/* TODO: check why elementor-hidden class is not working */
.elementor-hidden,
.elementor-button.elementor-hidden {
  display: none; }

.e-form__step {
  width: 100%; }
  .e-form__step:not(.elementor-hidden) {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }

.e-form__buttons {
  -ms-flex-wrap: wrap;
      flex-wrap: wrap; }
  .e-form__buttons, .e-form__buttons__wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }

.e-form__indicators {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap;
  font-size: 13px;
  margin-bottom: var(--e-form-steps-indicators-spacing); }
  .e-form__indicators__indicator {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -ms-flex-preferred-size: 0;
        flex-basis: 0;
    padding: 0 var(--e-form-steps-divider-gap); }
    .e-form__indicators__indicator__progress {
      width: 100%;
      position: relative;
      background-color: var(--e-form-steps-indicator-progress-background-color);
      border-radius: var(--e-form-steps-indicator-progress-border-radius);
      overflow: hidden; }
      .e-form__indicators__indicator__progress__meter {
        width: var(--e-form-steps-indicator-progress-meter-width, 0);
        height: var(--e-form-steps-indicator-progress-height);
        line-height: var(--e-form-steps-indicator-progress-height);
        padding-right: 15px;
        border-radius: var(--e-form-steps-indicator-progress-border-radius);
        background-color: var(--e-form-steps-indicator-progress-color);
        color: var(--e-form-steps-indicator-progress-meter-color);
        text-align: right;
        -webkit-transition: width 0.1s linear;
        -o-transition: width 0.1s linear;
        transition: width 0.1s linear; }
    .e-form__indicators__indicator:first-child {
      padding-left: 0; }
    .e-form__indicators__indicator:last-child {
      padding-right: 0; }
    .e-form__indicators__indicator--state-inactive {
      color: var(--e-form-steps-indicator-inactive-primary-color, #C2CBD2); }
      .e-form__indicators__indicator--state-inactive [class*="indicator--shape-"]:not(.e-form__indicators__indicator--shape-none) {
        background-color: var(--e-form-steps-indicator-inactive-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-inactive svg,
      .e-form__indicators__indicator--state-inactive object {
        fill: var(--e-form-steps-indicator-inactive-primary-color, #C2CBD2); }
    .e-form__indicators__indicator--state-active {
      color: var(--e-form-steps-indicator-active-primary-color, #39B54A);
      border-color: var(--e-form-steps-indicator-active-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-active [class*="indicator--shape-"]:not(.e-form__indicators__indicator--shape-none) {
        background-color: var(--e-form-steps-indicator-active-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-active svg,
      .e-form__indicators__indicator--state-active object {
        fill: var(--e-form-steps-indicator-active-primary-color, #39B54A); }
    .e-form__indicators__indicator--state-completed {
      color: var(--e-form-steps-indicator-completed-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-completed [class*="indicator--shape-"]:not(.e-form__indicators__indicator--shape-none) {
        background-color: var(--e-form-steps-indicator-completed-primary-color, #39B54A); }
      .e-form__indicators__indicator--state-completed .e-form__indicators__indicator__label {
        color: var(--e-form-steps-indicator-completed-primary-color, #39B54A); }
      .e-form__indicators__indicator--state-completed .e-form__indicators__indicator--shape-none {
        color: var(--e-form-steps-indicator-completed-primary-color, #39B54A);
        background-color: initial; }
      .e-form__indicators__indicator--state-completed svg,
      .e-form__indicators__indicator--state-completed object {
        fill: var(--e-form-steps-indicator-completed-secondary-color, #FFF); }
    .e-form__indicators__indicator__icon {
      width: var(--e-form-steps-indicator-padding, 30px);
      height: var(--e-form-steps-indicator-padding, 30px);
      font-size: var(--e-form-steps-indicator-icon-size);
      border-width: 1px;
      border-style: solid;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-pack: center;
          -ms-flex-pack: center;
              justify-content: center;
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center;
      overflow: hidden;
      margin-bottom: 10px; }
      .e-form__indicators__indicator__icon img,
      .e-form__indicators__indicator__icon svg,
      .e-form__indicators__indicator__icon object {
        width: var(--e-form-steps-indicator-icon-size);
        height: auto; }
      .e-form__indicators__indicator__icon .e-font-icon-svg {
        height: 1em; }
    .e-form__indicators__indicator__number {
      width: var(--e-form-steps-indicator-padding, 30px);
      height: var(--e-form-steps-indicator-padding, 30px);
      border-width: 1px;
      border-style: solid;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-pack: center;
          -ms-flex-pack: center;
              justify-content: center;
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center;
      margin-bottom: 10px; }
    .e-form__indicators__indicator--shape-circle {
      border-radius: 50%; }
    .e-form__indicators__indicator--shape-square {
      border-radius: 0; }
    .e-form__indicators__indicator--shape-rounded {
      border-radius: 5px; }
    .e-form__indicators__indicator--shape-none {
      border: 0; }
    .e-form__indicators__indicator__label {
      text-align: center; }
    .e-form__indicators__indicator__separator {
      width: 100%;
      height: var(--e-form-steps-divider-width);
      background-color: #c2cbd2; }
  .e-form__indicators--type-number, .e-form__indicators--type-number_text, .e-form__indicators--type-icon, .e-form__indicators--type-icon_text {
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start; }
    .e-form__indicators--type-number .e-form__indicators__indicator__separator, .e-form__indicators--type-number_text .e-form__indicators__indicator__separator, .e-form__indicators--type-icon .e-form__indicators__indicator__separator, .e-form__indicators--type-icon_text .e-form__indicators__indicator__separator {
      margin-top: calc(var(--e-form-steps-indicator-padding, 30px) / 2 - var(--e-form-steps-divider-width, 1px) / 2); }

/* End OF Multi Steps Form */
.elementor-field-type-hidden {
  display: none; }

.elementor-field-type-html {
  display: inline-block; }

.elementor-login .elementor-remember-me,
.elementor-login .elementor-lost-password {
  font-size: 0.85em; }

.elementor-field-type-recaptcha_v3 .elementor-field-label {
  display: none; }

.elementor-field-type-recaptcha_v3 .grecaptcha-badge {
  z-index: 1; }

.elementor-button .elementor-form-spinner {
  -webkit-box-ordinal-group: 4;
      -ms-flex-order: 3;
          order: 3; }

.elementor-form .elementor-button > span {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.elementor-form .elementor-button .elementor-button-text {
  white-space: normal;
  -webkit-box-flex: 0;
      -ms-flex-positive: 0;
          flex-grow: 0; }

.elementor-form .elementor-button svg {
  height: auto; }

.elementor-form .elementor-button .e-font-icon-svg {
  height: 1em; }

.elementor-widget-price-list .elementor-price-list {
  list-style: none;
  padding: 0;
  margin: 0; }
  .elementor-widget-price-list .elementor-price-list li {
    margin: 0; }

.elementor-price-list li:not(:last-child) {
  margin-bottom: 20px; }

.elementor-price-list .elementor-price-list-image {
  max-width: 50%;
  -ms-flex-negative: 0;
      flex-shrink: 0;
  padding-right: 25px; }
  .elementor-price-list .elementor-price-list-image img {
    width: 100%; }

.elementor-price-list .elementor-price-list-text,
.elementor-price-list .elementor-price-list-item,
.elementor-price-list .elementor-price-list-header {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }

.elementor-price-list .elementor-price-list-item {
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-text {
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-header {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
    font-size: 19px;
    font-weight: 600;
    margin-bottom: 10px;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-title {
    max-width: 80%; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-price {
    font-weight: 600; }
  .elementor-price-list .elementor-price-list-item p.elementor-price-list-description {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
    font-size: 14px;
    margin: 0; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-separator {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    margin-left: 10px;
    margin-right: 10px;
    border-bottom-style: dotted;
    border-bottom-width: 2px;
    height: 0; }

.elementor-price-table {
  text-align: center; }
  .elementor-price-table .elementor-price-table__header {
    background: var(--e-price-table-header-background-color, #555);
    padding: 20px 0; }
  .elementor-price-table .elementor-price-table__heading {
    margin: 0;
    padding: 0;
    line-height: 1.2;
    font-size: 24px;
    font-weight: 600;
    color: #fff; }
  .elementor-price-table .elementor-price-table__subheading {
    font-size: 13px;
    font-weight: 400;
    color: #fff; }
  .elementor-price-table .elementor-price-table__original-price {
    margin-right: 15px;
    text-decoration: line-through;
    font-size: 0.5em;
    line-height: 1;
    font-weight: 400;
    -ms-flex-item-align: center;
        align-self: center; }
    .elementor-price-table .elementor-price-table__original-price .elementor-price-table__currency {
      font-size: 1em;
      margin: 0; }
  .elementor-price-table .elementor-price-table__price {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    color: #555;
    font-weight: 800;
    font-size: 65px;
    padding: 40px 0; }
    .elementor-price-table .elementor-price-table__price .elementor-typo-excluded {
      line-height: initial;
      letter-spacing: initial;
      text-transform: initial;
      font-weight: initial;
      font-size: initial;
      font-style: initial; }
  .elementor-price-table .elementor-price-table__after-price {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    text-align: left;
    -ms-flex-item-align: stretch;
        align-self: stretch;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }
  .elementor-price-table .elementor-price-table__integer-part {
    line-height: 0.8; }
  .elementor-price-table .elementor-price-table__currency, .elementor-price-table .elementor-price-table__fractional-part {
    line-height: 1;
    font-size: 0.3em; }
  .elementor-price-table .elementor-price-table__currency {
    margin-right: 3px; }
  .elementor-price-table .elementor-price-table__period {
    width: 100%;
    font-size: 13px;
    font-weight: 400; }
  .elementor-price-table .elementor-price-table__features-list {
    list-style-type: none;
    margin: 0;
    padding: 0;
    line-height: 1;
    color: var(--e-price-table-features-list-color); }
    .elementor-price-table .elementor-price-table__features-list li {
      font-size: 14px;
      line-height: 1;
      margin: 0;
      padding: 0; }
      .elementor-price-table .elementor-price-table__features-list li .elementor-price-table__feature-inner {
        margin-left: 15px;
        margin-right: 15px; }
      .elementor-price-table .elementor-price-table__features-list li:not(:first-child):before {
        content: '';
        display: block;
        border: 0 solid rgba(122, 122, 122, 0.3);
        margin: 10px 12.5%; }
    .elementor-price-table .elementor-price-table__features-list i {
      margin-right: 10px;
      font-size: 1.3em; }
    .elementor-price-table .elementor-price-table__features-list svg {
      margin-right: 10px;
      fill: var(--e-price-table-features-list-color);
      height: 1.3em;
      width: 1.3em; }
    .elementor-price-table .elementor-price-table__features-list svg ~ * {
      vertical-align: text-top; }
  .elementor-price-table .elementor-price-table__footer {
    padding: 30px 0; }
  .elementor-price-table .elementor-price-table__additional_info {
    margin: 0;
    font-size: 13px;
    line-height: 1.4; }
  .elementor-price-table__ribbon {
    position: absolute;
    top: 0;
    left: auto;
    right: 0;
    -webkit-transform: rotate(90deg);
        -ms-transform: rotate(90deg);
            transform: rotate(90deg);
    width: 150px;
    overflow: hidden;
    height: 150px; }
    .elementor-price-table__ribbon-inner {
      text-align: center;
      left: 0;
      width: 200%;
      -webkit-transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
          -ms-transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
              transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
      margin-top: 35px;
      font-size: 13px;
      line-height: 2;
      font-weight: 800;
      text-transform: uppercase;
      background: #000; }
    .elementor-price-table__ribbon.elementor-ribbon-left {
      -webkit-transform: rotate(0);
          -ms-transform: rotate(0);
              transform: rotate(0);
      left: 0;
      right: auto; }
    .elementor-price-table__ribbon.elementor-ribbon-right {
      -webkit-transform: rotate(90deg);
          -ms-transform: rotate(90deg);
              transform: rotate(90deg);
      left: auto;
      right: 0; }

.elementor-widget-price-table .elementor-widget-container {
  overflow: hidden;
  background-color: #f7f7f7; }

.elementor-flip-box {
  height: 280px;
  position: relative;
  -webkit-perspective: 1000px;
          perspective: 1000px;
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d; }
  @media (max-device-width: 1024px) {
    .elementor-flip-box {
      cursor: pointer; } }
  .elementor-flip-box__front {
    background-color: #1abc9c; }
  .elementor-flip-box__back {
    background-color: #4054b2;
    display: block; }
  .elementor-flip-box__layer {
    position: absolute;
    width: 100%;
    height: 100%;
    -webkit-transition: all .6s ease-in-out;
    -o-transition: all .6s ease-in-out;
    transition: all .6s ease-in-out; }
    .elementor-flip-box__layer__overlay {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      width: 100%;
      height: 100%;
      -webkit-box-orient: vertical;
      -webkit-box-direction: normal;
          -ms-flex-direction: column;
              flex-direction: column;
      -webkit-box-pack: center;
          -ms-flex-pack: center;
              justify-content: center;
      -webkit-box-align: stretch;
          -ms-flex-align: stretch;
              align-items: stretch;
      text-align: center;
      padding: 35px;
      color: white; }
    .elementor-flip-box__layer__title {
      font-size: 21px; }
    .elementor-flip-box__layer__description {
      font-size: 14px; }
    .elementor-flip-box__layer__description:not(:last-child), .elementor-flip-box__layer__title:not(:last-child) {
      margin: 0 0 20px 0;
      padding: 0; }
    .elementor-flip-box__layer__title {
      line-height: 1;
      font-weight: 600; }
  .elementor-flip-box,
  .elementor-flip-box .elementor-view-framed,
  .elementor-flip-box .elementor-view-stacked {
    --e-flip-box-view-framed-stacked-icon-color: #fff; }
    .elementor-flip-box .elementor-icon,
    .elementor-flip-box .elementor-view-framed .elementor-icon,
    .elementor-flip-box .elementor-view-stacked .elementor-icon {
      color: var(--e-flip-box-view-framed-stacked-icon-color); }
      .elementor-flip-box .elementor-icon svg,
      .elementor-flip-box .elementor-view-framed .elementor-icon svg,
      .elementor-flip-box .elementor-view-stacked .elementor-icon svg {
        fill: var(--e-flip-box-view-framed-stacked-icon-color); }
  .elementor-flip-box .elementor-view-framed .elementor-icon {
    border-color: #fff; }
  .elementor-flip-box .elementor-view-stacked .elementor-icon {
    background-color: rgba(0, 0, 0, 0.5); }
  .elementor-flip-box__button.elementor-button {
    cursor: pointer;
    -ms-flex-item-align: center;
        align-self: center;
    margin-left: auto;
    margin-right: auto;
    border: solid 2px white;
    background: transparent; }
    .elementor-flip-box__button.elementor-button:hover {
      background: transparent;
      text-decoration: none; }
  .elementor-flip-box__image {
    margin: 0 0 20px 0;
    display: inline-block;
    width: 100%; }
    .elementor-flip-box__image img {
      width: 50%; }
  .elementor-flip-box .elementor-icon-wrapper {
    margin-bottom: 20px; }
  .elementor-flip-box--3d .elementor-flip-box__layer__inner {
    -webkit-transform: translateZ(90px) scale(0.91);
            transform: translateZ(90px) scale(0.91); }
  .elementor-flip-box--3d .elementor-flip-box__layer__overlay {
    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
    -webkit-transform: translateZ(0.1px);
            transform: translateZ(0.1px); }
  .elementor-flip-box--effect-flip .elementor-flip-box {
    -webkit-perspective: 1000px;
            perspective: 1000px;
    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d; }
    .elementor-flip-box--effect-flip .elementor-flip-box__layer {
      -webkit-transform-style: preserve-3d;
              transform-style: preserve-3d;
      -webkit-backface-visibility: hidden;
              backface-visibility: hidden; }
    .elementor-flip-box--effect-flip .elementor-flip-box__front {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none;
      z-index: 1; }
    .elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__back {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box__back {
    -webkit-transform: rotateX(0) rotateY(-180deg);
            transform: rotateX(0) rotateY(-180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: rotateX(0) rotateY(180deg);
            transform: rotateX(0) rotateY(180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box__back {
    -webkit-transform: rotateX(0) rotateY(180deg);
            transform: rotateX(0) rotateY(180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: rotateX(0) rotateY(-180deg);
            transform: rotateX(0) rotateY(-180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box__back {
    -webkit-transform: rotateX(-180deg) rotateY(0);
            transform: rotateX(-180deg) rotateY(0); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: rotateX(180deg) rotateY(0);
            transform: rotateX(180deg) rotateY(0); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box__back {
    -webkit-transform: rotateX(180deg) rotateY(0);
            transform: rotateX(180deg) rotateY(0); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: rotateX(-180deg) rotateY(0);
            transform: rotateX(-180deg) rotateY(0); }
  .elementor-flip-box--effect-push .elementor-flip-box__front {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none; }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: translateX(100%) translateY(0);
        -ms-transform: translateX(100%) translateY(0);
            transform: translateX(100%) translateY(0); }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: translateX(-100%) translateY(0);
        -ms-transform: translateX(-100%) translateY(0);
            transform: translateX(-100%) translateY(0); }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: translateX(0) translateY(-100%);
        -ms-transform: translateX(0) translateY(-100%);
            transform: translateX(0) translateY(-100%); }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: translateX(0) translateY(100%);
        -ms-transform: translateX(0) translateY(100%);
            transform: translateX(0) translateY(100%); }
  .elementor-flip-box--effect-slide .elementor-flip-box, .elementor-flip-box--effect-push .elementor-flip-box {
    overflow: hidden; }
    .elementor-flip-box--effect-slide .elementor-flip-box:hover .elementor-flip-box__back, .elementor-flip-box--effect-push .elementor-flip-box:hover .elementor-flip-box__back {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-right .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box__back {
    -webkit-transform: translateX(-100%) translateY(0);
        -ms-transform: translateX(-100%) translateY(0);
            transform: translateX(-100%) translateY(0); }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-left .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box__back {
    -webkit-transform: translateX(100%) translateY(0);
        -ms-transform: translateX(100%) translateY(0);
            transform: translateX(100%) translateY(0); }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-up .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box__back {
    -webkit-transform: translateX(0) translateY(100%);
        -ms-transform: translateX(0) translateY(100%);
            transform: translateX(0) translateY(100%); }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-down .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box__back {
    -webkit-transform: translateX(0) translateY(-100%);
        -ms-transform: translateX(0) translateY(-100%);
            transform: translateX(0) translateY(-100%); }
  .elementor-flip-box--effect-zoom-out .elementor-flip-box .elementor-flip-box__front {
    -webkit-transition: opacity 0.35s, width 0.1ms, -webkit-transform 0.7s;
    transition: opacity 0.35s, width 0.1ms, -webkit-transform 0.7s;
    -o-transition: transform 0.7s, opacity 0.35s, width 0.1ms;
    transition: transform 0.7s, opacity 0.35s, width 0.1ms;
    transition: transform 0.7s, opacity 0.35s, width 0.1ms, -webkit-transform 0.7s;
    opacity: 1;
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1);
    z-index: 1;
    width: 100%; }
  .elementor-flip-box--effect-zoom-out .elementor-flip-box:hover .elementor-flip-box__front {
    width: 0;
    opacity: 0;
    -webkit-transform: scale(0.7);
        -ms-transform: scale(0.7);
            transform: scale(0.7);
    -webkit-transition: opacity 0.7s 0.1s, width 0.1ms 0.7s, -webkit-transform 0.8s;
    transition: opacity 0.7s 0.1s, width 0.1ms 0.7s, -webkit-transform 0.8s;
    -o-transition: transform 0.8s, opacity 0.7s 0.1s, width 0.1ms 0.7s;
    transition: transform 0.8s, opacity 0.7s 0.1s, width 0.1ms 0.7s;
    transition: transform 0.8s, opacity 0.7s 0.1s, width 0.1ms 0.7s, -webkit-transform 0.8s; }
  .elementor-flip-box--effect-zoom-in .elementor-flip-box .elementor-flip-box__back {
    -webkit-transition: opacity 0.5s 0.2s, -webkit-transform 0.7s;
    transition: opacity 0.5s 0.2s, -webkit-transform 0.7s;
    -o-transition: transform 0.7s, opacity 0.5s 0.2s;
    transition: transform 0.7s, opacity 0.5s 0.2s;
    transition: transform 0.7s, opacity 0.5s 0.2s, -webkit-transform 0.7s;
    opacity: 0;
    -webkit-transform: scale(0.7);
        -ms-transform: scale(0.7);
            transform: scale(0.7); }
  .elementor-flip-box--effect-zoom-in .elementor-flip-box:hover .elementor-flip-box__back {
    -webkit-transition: opacity 0.5s, -webkit-transform 0.7s;
    transition: opacity 0.5s, -webkit-transform 0.7s;
    -o-transition: transform 0.7s, opacity 0.5s;
    transition: transform 0.7s, opacity 0.5s;
    transition: transform 0.7s, opacity 0.5s, -webkit-transform 0.7s;
    opacity: 1;
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1); }
  .elementor-flip-box--effect-fade .elementor-flip-box .elementor-flip-box__back {
    opacity: 0; }
  .elementor-flip-box--effect-fade .elementor-flip-box:hover .elementor-flip-box__back {
    opacity: 1; }

.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__front {
  display: none; }

.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__back {
  -webkit-transform: none;
      -ms-transform: none;
          transform: none;
  opacity: 1; }

.elementor-widget-call-to-action .elementor-widget-container {
  overflow: hidden; }

.elementor-cta {
  position: relative;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  overflow: hidden;
  -webkit-transition: 0.5s;
  -o-transition: 0.5s;
  transition: 0.5s; }
  .elementor-cta--skin-classic .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--skin-classic .elementor-cta__bg-wrapper {
      position: relative;
      min-height: 200px;
      width: 100%; }
    .elementor-cta--skin-classic .elementor-cta__content {
      -webkit-transition: all 0.4s;
      -o-transition: all 0.4s;
      transition: all 0.4s;
      width: 100%;
      background-color: #f7f7f7; }
    .elementor-cta--skin-classic .elementor-cta__content-item, .elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon {
      color: #55595c;
      border-color: #55595c;
      fill: #55595c; }
    .elementor-cta--skin-classic .elementor-cta__button.elementor-button {
      color: #55595c;
      border-color: #55595c; }
  .elementor-cta--skin-cover .elementor-cta {
    display: block; }
    .elementor-cta--skin-cover .elementor-cta__bg-wrapper {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      -webkit-transition: all 0.4s;
      -o-transition: all 0.4s;
      transition: all 0.4s;
      width: 100%; }
    .elementor-cta--skin-cover .elementor-cta__content {
      min-height: 280px; }
    .elementor-cta--skin-cover .elementor-cta__content-item, .elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon {
      color: #fff;
      border-color: #fff; }
    .elementor-cta--skin-cover .elementor-cta__button.elementor-button {
      color: white;
      border-color: white; }
  .elementor-cta--layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--layout-image-left .elementor-cta, .elementor-cta--layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--layout-image-left .elementor-cta__content, .elementor-cta--layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-cta--layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
  .elementor-cta__bg, .elementor-cta__bg-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    -webkit-transition: all 0.4s;
    -o-transition: all 0.4s;
    transition: all 0.4s; }
  .elementor-cta__bg-wrapper {
    z-index: 1;
    overflow: hidden; }
  .elementor-cta__bg {
    -webkit-background-size: cover;
            background-size: cover;
    background-position: center;
    z-index: 1; }
  .elementor-cta__bg-overlay {
    z-index: 2; }
  .elementor-cta__button.elementor-button {
    cursor: pointer;
    -ms-flex-item-align: center;
        align-self: center;
    margin-left: auto;
    margin-right: auto;
    border: solid 2px white;
    background: transparent; }
    .elementor-cta__button.elementor-button:hover {
      background: transparent;
      text-decoration: none; }
  .elementor-cta__title {
    font-size: 23px; }
  .elementor-cta__content {
    z-index: 1;
    overflow: hidden;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -ms-flex-line-pack: center;
        align-content: center;
    padding: 35px;
    width: 100%; }
    .elementor-cta__content, .elementor-cta__content-item {
      position: relative;
      -webkit-transition: 0.5s;
      -o-transition: 0.5s;
      transition: 0.5s;
      color: #fff; }
    .elementor-cta__content-item {
      width: 100%;
      margin: 0; }
      .elementor-cta__content-item:not(:last-child) {
        margin-bottom: 15px; }
      .elementor-cta__content-item .elementor-icon {
        color: #fff; }
  .elementor-cta--valign-top .elementor-cta__content {
    -ms-flex-line-pack: start;
        align-content: flex-start;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start; }
  .elementor-cta--valign-middle .elementor-cta__content {
    -ms-flex-line-pack: center;
        align-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
  .elementor-cta--valign-bottom .elementor-cta__content {
    -ms-flex-line-pack: end;
        align-content: flex-end;
    -webkit-box-align: end;
        -ms-flex-align: end;
            align-items: flex-end; }
  .elementor-cta:hover .elementor-cta__bg-overlay {
    background-color: rgba(0, 0, 0, 0.3); }

@media (max-device-width: 1024px) {
  .elementor-cta {
    cursor: pointer; } }

@media (min-width: -1px) {
  .elementor-cta--widescreen-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--widescreen-layout-image-left .elementor-cta, .elementor-cta--widescreen-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--widescreen-layout-image-left .elementor-cta__content, .elementor-cta--widescreen-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--widescreen-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-cta--widescreen-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; } }

@media (max-width: -1px) {
  .elementor-cta--laptop-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--laptop-layout-image-left .elementor-cta, .elementor-cta--laptop-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--laptop-layout-image-left .elementor-cta__content, .elementor-cta--laptop-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--laptop-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-cta--laptop-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; } }

@media (max-width: -1px) {
  .elementor-cta--tablet_extra-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--tablet_extra-layout-image-left .elementor-cta, .elementor-cta--tablet_extra-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--tablet_extra-layout-image-left .elementor-cta__content, .elementor-cta--tablet_extra-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--tablet_extra-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-cta--tablet_extra-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; } }

@media (max-width: 1024px) {
  .elementor-cta--tablet-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--tablet-layout-image-left .elementor-cta, .elementor-cta--tablet-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--tablet-layout-image-left .elementor-cta__content, .elementor-cta--tablet-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--tablet-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-cta--tablet-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; } }

@media (max-width: -1px) {
  .elementor-cta--mobile_extra-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--mobile_extra-layout-image-left .elementor-cta, .elementor-cta--mobile_extra-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--mobile_extra-layout-image-left .elementor-cta__content, .elementor-cta--mobile_extra-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--mobile_extra-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-cta--mobile_extra-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; } }

@media (max-width: 767px) {
  .elementor-cta--mobile-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--mobile-layout-image-left .elementor-cta, .elementor-cta--mobile-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--mobile-layout-image-left .elementor-cta__content, .elementor-cta--mobile-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--mobile-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-cta--mobile-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; } }

.elementor-ribbon {
  position: absolute;
  z-index: 1;
  top: 0;
  left: auto;
  right: 0;
  -webkit-transform: rotate(90deg);
      -ms-transform: rotate(90deg);
          transform: rotate(90deg);
  width: 150px;
  overflow: hidden;
  height: 150px; }
  .elementor-ribbon-inner {
    text-align: center;
    left: 0;
    width: 200%;
    -webkit-transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
        -ms-transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
            transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
    margin-top: 35px;
    font-size: 13px;
    line-height: 2;
    font-weight: 800;
    text-transform: uppercase;
    background: #000;
    color: #fff; }
  .elementor-ribbon.elementor-ribbon-left {
    -webkit-transform: rotate(0);
        -ms-transform: rotate(0);
            transform: rotate(0);
    left: 0;
    right: auto; }
  .elementor-ribbon.elementor-ribbon-right {
    -webkit-transform: rotate(90deg);
        -ms-transform: rotate(90deg);
            transform: rotate(90deg);
    left: auto;
    right: 0; }

.elementor-widget-countdown .elementor-countdown-expire--message {
  display: none;
  padding: 20px;
  text-align: center; }

.elementor-widget-countdown .elementor-countdown-wrapper {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-direction: row;
          flex-direction: row; }

.elementor-widget-countdown .elementor-countdown-item {
  padding: 20px 0;
  text-align: center;
  color: #ffffff; }

.elementor-widget-countdown .elementor-countdown-digits,
.elementor-widget-countdown .elementor-countdown-label {
  line-height: 1; }

.elementor-widget-countdown .elementor-countdown-digits {
  font-size: 69px; }

.elementor-widget-countdown .elementor-countdown-label {
  font-size: 19px; }

.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-wrapper {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  margin-right: auto;
  margin-left: auto; }

.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-digits,
.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-label {
  display: block; }

.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-item {
  -ms-flex-preferred-size: 0;
      flex-basis: 0;
  -webkit-box-flex: 1;
      -ms-flex-positive: 1;
          flex-grow: 1; }

.elementor-widget-countdown.elementor-countdown--label-inline {
  text-align: center; }
  .elementor-widget-countdown.elementor-countdown--label-inline .elementor-countdown-item {
    display: inline-block;
    padding-left: 5px;
    padding-right: 5px; }

/* Slides Widget */
.elementor-slides .swiper-slide-bg {
  -webkit-background-size: cover;
          background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  min-width: 100%;
  min-height: 100%; }

.elementor-slides .swiper-slide-inner {
  background-repeat: no-repeat;
  background-position: center;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  padding: 50px;
  margin: auto; }
  .elementor-slides .swiper-slide-inner, .elementor-slides .swiper-slide-inner:hover {
    color: white;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .elementor-slides .swiper-slide-inner .elementor-background-overlay {
    position: absolute;
    z-index: 0;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0; }
  .elementor-slides .swiper-slide-inner .elementor-slide-content {
    position: relative;
    z-index: 1;
    width: 100%; }
  .elementor-slides .swiper-slide-inner .elementor-slide-heading {
    font-size: 35px;
    font-weight: bold;
    line-height: 1; }
  .elementor-slides .swiper-slide-inner .elementor-slide-description {
    font-size: 17px;
    line-height: 1.4; }
  .elementor-slides .swiper-slide-inner .elementor-slide-heading:not(:last-child), .elementor-slides .swiper-slide-inner .elementor-slide-description:not(:last-child) {
    margin-bottom: 30px; }
  .elementor-slides .swiper-slide-inner .elementor-slide-button {
    border: solid 2px white;
    color: white;
    background: transparent;
    display: inline-block; }
    .elementor-slides .swiper-slide-inner .elementor-slide-button, .elementor-slides .swiper-slide-inner .elementor-slide-button:hover {
      background: transparent;
      color: inherit;
      text-decoration: none; }

.elementor--v-position-top .swiper-slide-inner {
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start; }

.elementor--v-position-bottom .swiper-slide-inner {
  -webkit-box-align: end;
      -ms-flex-align: end;
          align-items: flex-end; }

.elementor--v-position-middle .swiper-slide-inner {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.elementor--h-position-left .swiper-slide-inner {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor--h-position-right .swiper-slide-inner {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor--h-position-center .swiper-slide-inner {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

body.rtl .elementor-widget-slides .elementor-swiper-button-next {
  left: 10px;
  right: auto; }

body.rtl .elementor-widget-slides .elementor-swiper-button-prev {
  right: 10px;
  left: auto; }

.elementor-slides-wrapper div:not(.swiper-slide) > .swiper-slide-inner {
  display: none; }

@media (max-width: 767px) {
  .elementor-slides .swiper-slide-inner {
    padding: 30px; }
    .elementor-slides .swiper-slide-inner .elementor-slide-heading {
      font-size: 23px;
      line-height: 1;
      margin-bottom: 15px; }
    .elementor-slides .swiper-slide-inner .elementor-slide-description {
      font-size: 13px;
      line-height: 1.4;
      margin-bottom: 15px; } }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn {
  background-color: var(--e-share-buttons-primary-color, #ea4335); }
  .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text {
    color: var(--e-share-buttons-secondary-color, #fff); }
    .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg {
      fill: var(--e-share-buttons-secondary-color, #fff); }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn {
  color: var(--e-share-buttons-primary-color, #ea4335);
  border-color: var(--e-share-buttons-primary-color, #ea4335); }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon {
  background-color: var(--e-share-buttons-primary-color, #ea4335);
  color: var(--e-share-buttons-secondary-color, #fff); }
  .elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon svg {
    fill: var(--e-share-buttons-secondary-color, #fff); }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon {
  color: var(--e-share-buttons-primary-color, #ea4335); }
  .elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon svg {
    fill: var(--e-share-buttons-primary-color, #ea4335); }

.elementor-share-buttons--color-official .elementor-share-btn:hover {
  -webkit-filter: saturate(1.5) brightness(1.2);
          filter: saturate(1.5) brightness(1.2); }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_digg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_digg {
  background-color: #005be2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_email, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_email {
  background-color: #ea4335; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_print, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_print {
  background-color: #aaaaaa; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_facebook, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_facebook {
  background-color: #3b5998; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_google, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_google {
  background-color: #dd4b39; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pocket, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pocket {
  background-color: #EF3F56; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_linkedin, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_linkedin {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_odnoklassniki, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_odnoklassniki {
  background-color: #F4731C; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pinterest, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pinterest {
  background-color: #bd081c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_reddit, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_reddit {
  background-color: #ff4500; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_skype, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_skype {
  background-color: #00AFF0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_slideshare, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_slideshare {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_snapchat, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_snapchat {
  background-color: #fffc00; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_stumbleupon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_stumbleupon {
  background-color: #EB4924; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_mix, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_mix {
  background-color: #f3782b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_tumblr, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_tumblr {
  background-color: #35465c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitch, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitch {
  background-color: #6441A5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_telegram, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_telegram {
  background-color: #2CA5E0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitter, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitter {
  background-color: #1DA1F2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vimeo, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vimeo {
  background-color: #1ab7ea; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vk, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vk {
  background-color: #45668e; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_whatsapp, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_whatsapp {
  background-color: #25d366; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_wordpress, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_wordpress {
  background-color: #21759b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_xing, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_xing {
  background-color: #026466; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg {
  color: #005be2; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg svg {
    fill: #005be2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email {
  color: #ea4335; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email svg {
    fill: #ea4335; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print {
  color: #aaaaaa; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print svg {
    fill: #aaaaaa; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook {
  color: #3b5998; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook svg {
    fill: #3b5998; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google {
  color: #dd4b39; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google svg {
    fill: #dd4b39; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket {
  color: #EF3F56; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket svg {
    fill: #EF3F56; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin {
  color: #0077b5; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin svg {
    fill: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki {
  color: #F4731C; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki svg {
    fill: #F4731C; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest {
  color: #bd081c; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest svg {
    fill: #bd081c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit {
  color: #ff4500; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit svg {
    fill: #ff4500; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype {
  color: #00AFF0; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype svg {
    fill: #00AFF0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare {
  color: #0077b5; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare svg {
    fill: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat {
  color: #fffc00; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat svg {
    fill: #fffc00; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon {
  color: #EB4924; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon svg {
    fill: #EB4924; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix {
  color: #f3782b; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix svg {
    fill: #f3782b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr {
  color: #35465c; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr svg {
    fill: #35465c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch {
  color: #6441A5; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch svg {
    fill: #6441A5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram {
  color: #2CA5E0; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram svg {
    fill: #2CA5E0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter {
  color: #1DA1F2; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter svg {
    fill: #1DA1F2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo {
  color: #1ab7ea; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo svg {
    fill: #1ab7ea; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk {
  color: #45668e; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk svg {
    fill: #45668e; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp {
  color: #25d366; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp svg {
    fill: #25d366; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress {
  color: #21759b; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress svg {
    fill: #21759b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing {
  color: #026466; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing svg {
    fill: #026466; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_digg .elementor-share-btn__icon {
  background-color: #005be2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_email .elementor-share-btn__icon {
  background-color: #ea4335; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_print .elementor-share-btn__icon {
  background-color: #aaaaaa; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_facebook .elementor-share-btn__icon {
  background-color: #3b5998; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_google .elementor-share-btn__icon {
  background-color: #dd4b39; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pocket .elementor-share-btn__icon {
  background-color: #EF3F56; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_linkedin .elementor-share-btn__icon {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_odnoklassniki .elementor-share-btn__icon {
  background-color: #F4731C; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pinterest .elementor-share-btn__icon {
  background-color: #bd081c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_reddit .elementor-share-btn__icon {
  background-color: #ff4500; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_skype .elementor-share-btn__icon {
  background-color: #00AFF0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_slideshare .elementor-share-btn__icon {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_snapchat .elementor-share-btn__icon {
  background-color: #fffc00; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_stumbleupon .elementor-share-btn__icon {
  background-color: #EB4924; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_mix .elementor-share-btn__icon {
  background-color: #f3782b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_tumblr .elementor-share-btn__icon {
  background-color: #35465c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitch .elementor-share-btn__icon {
  background-color: #6441A5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_telegram .elementor-share-btn__icon {
  background-color: #2CA5E0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitter .elementor-share-btn__icon {
  background-color: #1DA1F2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vimeo .elementor-share-btn__icon {
  background-color: #1ab7ea; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vk .elementor-share-btn__icon {
  background-color: #45668e; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_whatsapp .elementor-share-btn__icon {
  background-color: #25d366; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_wordpress .elementor-share-btn__icon {
  background-color: #21759b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_xing .elementor-share-btn__icon {
  background-color: #026466; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon {
  color: var(--e-share-buttons-icon-color, #fff); }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon svg {
    fill: var(--e-share-buttons-icon-color, #fff); }

.elementor-share-buttons--skin-framed .elementor-share-btn__icon, .elementor-share-buttons--skin-boxed .elementor-share-btn__icon {
  margin-left: -0.2em; }

.elementor-share-buttons--skin-framed .elementor-share-btn, .elementor-share-buttons--skin-boxed .elementor-share-btn {
  border-style: solid; }

.elementor-share-buttons--skin-gradient .elementor-share-btn__text {
  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.12)), to(rgba(0, 0, 0, 0)));
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0));
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0));
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0)); }

.elementor-share-buttons--skin-gradient.elementor-share-buttons--view-icon .elementor-share-btn__icon {
  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.12)), to(rgba(0, 0, 0, 0)));
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0));
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0));
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0)); }

.elementor-share-buttons--skin-boxed .elementor-share-btn__text, .elementor-share-buttons--skin-minimal .elementor-share-btn__text, .elementor-share-buttons--skin-gradient .elementor-share-btn__text {
  padding-left: 0.9em; }

.elementor-share-buttons--skin-flat .elementor-share-btn, .elementor-share-buttons--skin-gradient .elementor-share-btn {
  background-color: var(--e-share-buttons-primary-color, #ea4335); }
  .elementor-share-buttons--skin-flat .elementor-share-btn__icon, .elementor-share-buttons--skin-flat .elementor-share-btn__text, .elementor-share-buttons--skin-gradient .elementor-share-btn__icon, .elementor-share-buttons--skin-gradient .elementor-share-btn__text {
    color: var(--e-share-buttons-secondary-color, #fff); }
    .elementor-share-buttons--skin-flat .elementor-share-btn__icon svg, .elementor-share-buttons--skin-flat .elementor-share-btn__text svg, .elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg, .elementor-share-buttons--skin-gradient .elementor-share-btn__text svg {
      fill: var(--e-share-buttons-secondary-color, #fff); }

.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-rounded .elementor-share-btn__icon {
  border-radius: 0.5em; }

.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-circle .elementor-share-btn__icon {
  border-radius: 99.9em; }

.elementor-share-buttons--view-text .elementor-share-btn__text {
  padding-left: 1em; }

.elementor-share-buttons--view-text .elementor-share-btn, .elementor-share-buttons--view-icon .elementor-share-btn {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }
  .elementor-share-buttons--view-text .elementor-share-btn__icon, .elementor-share-buttons--view-text .elementor-share-btn__text, .elementor-share-buttons--view-icon .elementor-share-btn__icon, .elementor-share-buttons--view-icon .elementor-share-btn__text {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }

.elementor-share-buttons--shape-rounded .elementor-share-btn {
  border-radius: 0.5em; }

.elementor-share-buttons--shape-circle .elementor-share-btn {
  border-radius: 99.9em; }

.elementor-share-btn {
  overflow: hidden;
  font-size: 10px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start;
  -webkit-transition-duration: 0.2s;
       -o-transition-duration: 0.2s;
          transition-duration: 0.2s;
  -webkit-transition-property: background-color, border-color, -webkit-filter;
  transition-property: background-color, border-color, -webkit-filter;
  -o-transition-property: filter, background-color, border-color;
  transition-property: filter, background-color, border-color;
  transition-property: filter, background-color, border-color, -webkit-filter;
  height: 4.5em;
  cursor: pointer; }
  .elementor-share-btn__icon, .elementor-share-btn__text {
    -webkit-transition-property: color, background-color;
    -o-transition-property: color, background-color;
    transition-property: color, background-color;
    -webkit-transition-duration: 0.2s;
         -o-transition-duration: 0.2s;
            transition-duration: 0.2s; }
  .elementor-share-btn__icon {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-item-align: stretch;
        align-self: stretch;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    width: 4.5em;
    position: relative; }
    .elementor-share-btn__icon i {
      font-size: var(--e-share-buttons-icon-size, 1.7em); }
    .elementor-share-btn__icon svg {
      width: var(--e-share-buttons-icon-size, 1.7em);
      height: var(--e-share-buttons-icon-size, 1.7em); }
  .elementor-share-btn__text {
    font-size: 1.5em;
    padding-right: 1em;
    -ms-flex-item-align: stretch;
        align-self: stretch;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    font-weight: 100; }
  .elementor-share-btn__title {
    font-weight: bold;
    -ms-flex-negative: 0;
        flex-shrink: 0; }

.elementor-widget-share-buttons {
  text-align: var(--alignment, inherit);
  -moz-text-align-last: var(--alignment, inherit);
       text-align-last: var(--alignment, inherit); }
  .elementor-widget-share-buttons.elementor-grid-0 .elementor-widget-container {
    font-size: 0; }

.elementor-skin-carousel .elementor-main-swiper, .elementor-skin-coverflow .elementor-main-swiper {
  height: 230px; }

.elementor-skin-slideshow .elementor-main-swiper {
  height: 450px;
  position: relative; }

.elementor-skin-slideshow .elementor-thumbnails-swiper .elementor-custom-embed-play i {
  font-size: 50px; }

.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide {
  cursor: pointer; }
  .elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide:not(.swiper-slide-active):after {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: rgba(0, 0, 0, 0.3); }

.elementor-carousel-image {
  background: no-repeat center;
  -webkit-background-size: cover;
          background-size: cover;
  height: 100%;
  position: relative; }

.elementor-carousel-image-overlay {
  position: absolute;
  top: 0;
  left: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  text-align: center;
  width: 100%;
  height: 100%;
  padding: 20px;
  color: var(--e-carousel-image-overlay-color, #fff);
  background-color: rgba(129, 138, 145, 0.8);
  -webkit-transition: opacity .5s, -webkit-transform .5s;
  transition: opacity .5s, -webkit-transform .5s;
  -o-transition: transform .5s, opacity .5s;
  transition: transform .5s, opacity .5s;
  transition: transform .5s, opacity .5s, -webkit-transform .5s; }
  .elementor-carousel-image-overlay i {
    font-size: var(--e-carousel-image-overlay-icon-size, 21px); }
  .elementor-carousel-image-overlay svg {
    fill: var(--e-carousel-image-overlay-color, #fff);
    width: var(--e-carousel-image-overlay-icon-size, 21px);
    height: var(--e-carousel-image-overlay-icon-size, 21px); }

.elementor-testimonial__image {
  -ms-flex-negative: 0;
      flex-shrink: 0; }
  .elementor-testimonial__image img {
    border-radius: 999px;
    -webkit-box-sizing: content-box;
            box-sizing: content-box;
    -o-object-fit: cover;
       object-fit: cover; }

.elementor-testimonial__footer, .elementor-testimonial__header {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-testimonial__footer cite, .elementor-testimonial__header cite {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    font-style: normal;
    font-size: 14px;
    line-height: 1.5; }

.elementor-testimonial__name {
  font-weight: bold; }

.elementor-testimonial--layout-image_inline .elementor-testimonial__footer, .elementor-testimonial--layout-image_above .elementor-testimonial__footer {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.elementor-testimonial--layout-image_inline .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_above .elementor-testimonial__image + cite {
  margin-left: 20px; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__footer, .elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__footer {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: reverse;
      -ms-flex-direction: row-reverse;
          flex-direction: row-reverse; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__image + cite {
  margin-right: 20px;
  margin-left: 0; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__footer, .elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__footer {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-direction: row;
          flex-direction: row; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__image + cite {
  margin-right: 0;
  margin-left: 20px; }

.elementor-testimonial--layout-image_inline .elementor-testimonial__footer {
  margin-top: 25px; }

.elementor-testimonial--layout-image_above .elementor-testimonial {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: reverse;
      -ms-flex-direction: column-reverse;
          flex-direction: column-reverse; }
  .elementor-testimonial--layout-image_above .elementor-testimonial__footer {
    margin-bottom: 25px; }

.elementor-testimonial--layout-image_stacked .elementor-testimonial__footer {
  margin-top: 25px;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap; }

.elementor-testimonial--layout-image_stacked .elementor-testimonial__image, .elementor-testimonial--layout-image_stacked .elementor-testimonial cite {
  margin-top: 15px;
  width: 100%; }

.elementor-testimonial--layout-image_left .elementor-testimonial, .elementor-testimonial--layout-image_right .elementor-testimonial {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch; }
  .elementor-testimonial--layout-image_left .elementor-testimonial__footer, .elementor-testimonial--layout-image_right .elementor-testimonial__footer {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    text-align: center; }
  .elementor-testimonial--layout-image_left .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_right .elementor-testimonial__image + cite {
    margin-top: 15px; }

.elementor-testimonial--layout-image_left.elementor-testimonial--align-center .elementor-testimonial__footer, .elementor-testimonial--layout-image_right.elementor-testimonial--align-center .elementor-testimonial__footer {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-testimonial--layout-image_left .elementor-testimonial {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: reverse;
      -ms-flex-direction: row-reverse;
          flex-direction: row-reverse; }
  .elementor-testimonial--layout-image_left .elementor-testimonial__footer {
    padding-right: 20px; }

.elementor-testimonial--layout-image_right .elementor-testimonial {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-direction: row;
          flex-direction: row; }
  .elementor-testimonial--layout-image_right .elementor-testimonial__footer {
    padding-left: 20px; }

.elementor-testimonial--align-right .elementor-testimonial {
  text-align: right; }

.elementor-testimonial--align-left .elementor-testimonial {
  text-align: left; }

.elementor-testimonial--align-center .elementor-testimonial {
  text-align: center; }
  .elementor-testimonial--align-center .elementor-testimonial__footer {
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }

.elementor-testimonial--align-center.elementor-testimonial--layout-image_inline .elementor-testimonial__image + cite {
  text-align: left; }

.elementor-testimonial--skin-default.elementor-testimonial--layout-image_right .elementor-testimonial__cite, .elementor-testimonial--skin-default.elementor-testimonial--layout-image_left .elementor-testimonial__cite, .elementor-testimonial--skin-default.elementor-testimonial--layout-image_above .elementor-testimonial__cite {
  width: 100%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  margin-top: 25px; }

.elementor-testimonial--skin-bubble .elementor-testimonial__content {
  background-color: #e6e9ec;
  padding: 20px;
  position: relative; }
  .elementor-testimonial--skin-bubble .elementor-testimonial__content:after {
    content: '';
    display: block;
    width: 14px;
    height: 14px;
    background-color: #e6e9ec;
    position: absolute;
    -webkit-transform: scaleX(0.75) rotate(45deg);
        -ms-transform: scaleX(0.75) rotate(45deg);
            transform: scaleX(0.75) rotate(45deg);
    border-width: 0;
    -webkit-box-sizing: content-box;
            box-sizing: content-box; }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above .elementor-testimonial__content:after {
  bottom: calc( 100% - 7px);
  -webkit-transform: scaleX(0.75) rotate(-135deg);
      -ms-transform: scaleX(0.75) rotate(-135deg);
          transform: scaleX(0.75) rotate(-135deg); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-center .elementor-testimonial__content:after {
  left: 50%;
  -webkit-transform: translateX(-50%) scaleX(0.75) rotate(-135deg);
      -ms-transform: translateX(-50%) scaleX(0.75) rotate(-135deg);
          transform: translateX(-50%) scaleX(0.75) rotate(-135deg); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline .elementor-testimonial__content:after {
  top: calc( 100% - 7px); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-center .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-center .elementor-testimonial__content:after {
  left: 50%;
  -webkit-transform: translateX(-50%) scaleX(0.75) rotate(45deg);
      -ms-transform: translateX(-50%) scaleX(0.75) rotate(45deg);
          transform: translateX(-50%) scaleX(0.75) rotate(45deg); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-left .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__content:after {
  left: calc( 20px + ( 50px / 2 )); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-right .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__content:after {
  right: calc( 20px + ( 50px / 2 )); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after {
  -webkit-transform: scaleY(0.75) rotate(135deg);
      -ms-transform: scaleY(0.75) rotate(135deg);
          transform: scaleY(0.75) rotate(135deg);
  left: -8px; }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after {
  -webkit-transform: scaleY(0.75) rotate(-45deg);
      -ms-transform: scaleY(0.75) rotate(-45deg);
          transform: scaleY(0.75) rotate(-45deg);
  right: -8px; }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after {
  top: calc(20px + (50px / 2)); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__footer, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__footer {
  padding-top: 20px; }

.elementor-widget-testimonial-carousel .swiper-slide {
  padding: 20px; }

.elementor-widget-testimonial-carousel .elementor-testimonial__text {
  font-size: 1.3em;
  font-style: italic;
  line-height: 1.5; }

.elementor-widget-testimonial-carousel .elementor-testimonial__image img {
  width: 50px;
  height: 50px; }

.elementor-widget-reviews .swiper-slide {
  background-color: white;
  border: 1px solid #e1e8ed;
  border-radius: 5px;
  padding: 0; }

.elementor-widget-reviews .elementor-testimonial__text {
  font-size: 14px;
  line-height: 20px; }

.elementor-widget-reviews .elementor-testimonial__name {
  color: #1c2022; }

.elementor-widget-reviews .elementor-testimonial__title {
  color: #697882;
  font-size: 12.5px;
  font-weight: normal;
  font-family: inherit; }

.elementor-widget-reviews .elementor-testimonial__image {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-widget-reviews .elementor-testimonial__image img {
    width: 36px;
    height: 36px; }

.elementor-widget-reviews .elementor-testimonial__icon {
  margin-left: auto;
  font-size: 17px; }
  .elementor-widget-reviews .elementor-testimonial__icon .fa + .fa {
    margin-left: 0.15em; }
  .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon {
    color: var(--e-testimonial-icon-color); }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-android {
      --e-testimonial-icon-color: #A4C639; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-apple {
      --e-testimonial-icon-color: #999999; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-behance {
      --e-testimonial-icon-color: #1769ff; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-bitbucket {
      --e-testimonial-icon-color: #205081; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-codepen {
      --e-testimonial-icon-color: #000000; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-delicious {
      --e-testimonial-icon-color: #3399ff; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-digg {
      --e-testimonial-icon-color: #005be2; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-dribbble {
      --e-testimonial-icon-color: #ea4c89; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-envelope {
      --e-testimonial-icon-color: #ea4335; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-facebook {
      --e-testimonial-icon-color: #3b5998; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-flickr {
      --e-testimonial-icon-color: #0063dc; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-foursquare {
      --e-testimonial-icon-color: #2d5be3; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-github {
      --e-testimonial-icon-color: #333333; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-google-plus {
      --e-testimonial-icon-color: #dd4b39; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-houzz {
      --e-testimonial-icon-color: #7ac142; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-instagram {
      --e-testimonial-icon-color: #262626; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-jsfiddle {
      --e-testimonial-icon-color: #487AA2; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-linkedin {
      --e-testimonial-icon-color: #0077b5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-medium {
      --e-testimonial-icon-color: #00ab6b; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-meetup {
      --e-testimonial-icon-color: #ec1c40; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-mixcloud {
      --e-testimonial-icon-color: #273a4b; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-odnoklassniki {
      --e-testimonial-icon-color: #F4731C; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-pinterest {
      --e-testimonial-icon-color: #bd081c; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-product-hunt {
      --e-testimonial-icon-color: #da552f; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-reddit {
      --e-testimonial-icon-color: #ff4500; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-rss {
      --e-testimonial-icon-color: #f26522; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-shopping-cart {
      --e-testimonial-icon-color: #4CAF50; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-skype {
      --e-testimonial-icon-color: #00AFF0; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-slideshare {
      --e-testimonial-icon-color: #0077b5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-snapchat {
      --e-testimonial-icon-color: #fffc00; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-soundcloud {
      --e-testimonial-icon-color: #ff8800; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-spotify {
      --e-testimonial-icon-color: #2ebd59; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stack-overflow {
      --e-testimonial-icon-color: #fe7a15; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-steam {
      --e-testimonial-icon-color: #00adee; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stumbleupon {
      --e-testimonial-icon-color: #EB4924; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-telegram {
      --e-testimonial-icon-color: #2CA5E0; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumb-tack, .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumbtack {
      --e-testimonial-icon-color: #1aa1d8; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tripadvisor {
      --e-testimonial-icon-color: #589442; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tumblr {
      --e-testimonial-icon-color: #35465c; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitch {
      --e-testimonial-icon-color: #6441A5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitter {
      --e-testimonial-icon-color: #1DA1F2; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vimeo {
      --e-testimonial-icon-color: #1ab7ea; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vk {
      --e-testimonial-icon-color: #45668e; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weibo {
      --e-testimonial-icon-color: #DD2430; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weixin {
      --e-testimonial-icon-color: #31A918; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-whatsapp {
      --e-testimonial-icon-color: #25d366; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-wordpress {
      --e-testimonial-icon-color: #21759b; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-xing {
      --e-testimonial-icon-color: #026466; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-yelp {
      --e-testimonial-icon-color: #af0606; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-youtube {
      --e-testimonial-icon-color: #cd201f; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-500px {
      --e-testimonial-icon-color: #0099e5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon svg {
      fill: var(--e-testimonial-icon-color); }

.elementor-widget-reviews .elementor-testimonial__rating {
  background-image: -webkit-gradient(linear, left top, right top, from(#ffc82c), to(#cccccc));
  background-image: -webkit-linear-gradient(left, #ffc82c var(--rating), #cccccc var(--rating));
  background-image: -o-linear-gradient(left, #ffc82c var(--rating), #cccccc var(--rating));
  background-image: linear-gradient(to right, #ffc82c var(--rating), #cccccc var(--rating));
  font-family: eicons; }

.elementor-widget-reviews .elementor-testimonial__header {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  padding-top: 15px;
  padding-bottom: 6px; }

.elementor-widget-reviews .elementor-testimonial__image + cite {
  margin-left: 9px; }

.elementor-widget-reviews .elementor-testimonial__separator {
  margin: 0 auto;
  border-top: 0 none;
  border-bottom: 1px solid #e1e8ed;
  height: 0; }

.elementor-widget-reviews .elementor-testimonial__content {
  padding-top: 6px;
  padding-bottom: 15px; }

.elementor-widget-reviews .elementor-testimonial__content, .elementor-widget-reviews .elementor-testimonial__header {
  padding-left: 15px;
  padding-right: 15px; }

.elementor-widget-reviews.elementor-review--has-separator .elementor-testimonial__header {
  border-bottom: 1px solid #e1e8ed; }

.swiper-pagination-bullets {
  color: #fff;
  cursor: default; }

.swiper-slide {
  will-change: transform;
  border-style: solid;
  border-width: 0;
  -webkit-transition-duration: .5s;
       -o-transition-duration: .5s;
          transition-duration: .5s;
  -webkit-transition-property: border, background, -webkit-transform;
  transition-property: border, background, -webkit-transform;
  -o-transition-property: border, background, transform;
  transition-property: border, background, transform;
  transition-property: border, background, transform, -webkit-transform;
  overflow: hidden; }
  .swiper-slide:not(:hover) .e-overlay-animation-fade {
    opacity: 0; }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-up {
    -webkit-transform: translateY(100%);
        -ms-transform: translateY(100%);
            transform: translateY(100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-down {
    -webkit-transform: translateY(-100%);
        -ms-transform: translateY(-100%);
            transform: translateY(-100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-right {
    -webkit-transform: translateX(-100%);
        -ms-transform: translateX(-100%);
            transform: translateX(-100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-left {
    -webkit-transform: translateX(100%);
        -ms-transform: translateX(100%);
            transform: translateX(100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-zoom-in {
    -webkit-transform: scale(0.5);
        -ms-transform: scale(0.5);
            transform: scale(0.5);
    opacity: 0; }
  .swiper-slide a {
    display: inline; }
    .swiper-slide a.elementor-button {
      display: inline-block; }

.elementor-widget-testimonial-carousel .elementor-arrows-yes .elementor-main-swiper,
.elementor-widget-reviews .elementor-arrows-yes .elementor-main-swiper {
  width: calc( 95% - 40px); }

.elementor-widget-testimonial-carousel .elementor-main-swiper,
.elementor-widget-reviews .elementor-main-swiper {
  width: 95%; }

.elementor-widget-testimonial-carousel .swiper-wrapper,
.elementor-widget-reviews .swiper-wrapper {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch; }

.elementor-widget-testimonial-carousel .swiper-slide,
.elementor-widget-reviews .swiper-slide {
  height: auto; }

.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .swiper-container, .elementor-widget-testimonial-carousel.elementor-pagination-type-fraction .swiper-container,
.elementor-widget-reviews.elementor-pagination-type-bullets .swiper-container,
.elementor-widget-reviews.elementor-pagination-type-fraction .swiper-container {
  padding-bottom: 40px; }

.elementor-widget-testimonial-carousel .elementor-swiper-button-prev,
.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-next,
.elementor-widget-reviews .elementor-swiper-button-prev,
.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-next {
  left: 0;
  right: unset; }

.elementor-widget-testimonial-carousel .elementor-swiper-button-next,
.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-prev,
.elementor-widget-reviews .elementor-swiper-button-next,
.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-prev {
  right: 0;
  left: unset; }

.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-next, .elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-prev,
.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-next,
.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-prev {
  top: calc( 50% - ( 40px / 2 )); }

.elementor-widget-media-carousel .elementor-swiper-button-prev,
.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-next {
  left: 10px;
  right: unset; }

.elementor-widget-media-carousel .elementor-swiper-button-next,
.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-prev {
  right: 10px;
  left: unset; }

.entry-content blockquote.elementor-blockquote:not(.alignright):not(.alignleft),
.entry-summary blockquote.elementor-blockquote {
  margin-right: 0;
  margin-left: 0; }

.elementor-widget-blockquote blockquote {
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  font-size: 100%;
  vertical-align: baseline;
  background: transparent;
  quotes: none;
  border-left: 0 none;
  border-right: 0 none;
  border-top: 0 none;
  border-bottom: 0 none;
  font-style: normal;
  color: #55595c; }
  .elementor-widget-blockquote blockquote:before, .elementor-widget-blockquote blockquote:after,
  .elementor-widget-blockquote blockquote footer:before,
  .elementor-widget-blockquote blockquote footer:after,
  .elementor-widget-blockquote blockquote cite:before,
  .elementor-widget-blockquote blockquote cite:after {
    content: '';
    content: none; }

.elementor-blockquote {
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s; }
  .elementor-blockquote__author, .elementor-blockquote__content {
    margin-bottom: 0;
    font-style: normal; }
  .elementor-blockquote__author {
    font-weight: bold; }
  .elementor-blockquote footer {
    margin-top: 12px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between; }
  .elementor-blockquote__tweet-button {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s;
    color: #1DA1F2;
    -ms-flex-item-align: end;
        align-self: flex-end;
    line-height: 1;
    position: relative;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content; }
    .elementor-blockquote__tweet-button:hover {
      color: #0967a0; }
    .elementor-blockquote__tweet-button span {
      font-weight: 600; }
    .elementor-blockquote__tweet-button i, .elementor-blockquote__tweet-button span {
      vertical-align: middle; }
    .elementor-blockquote__tweet-button i + span,
    .elementor-blockquote__tweet-button svg + span {
      margin-left: 0.5em; }
    .elementor-blockquote__tweet-button svg {
      fill: #1DA1F2;
      height: 1em;
      width: 1em; }
  .elementor-blockquote__tweet-label {
    white-space: pre-wrap; }
  .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button {
    padding: 0.7em 1.2em;
    border-radius: 100em;
    background-color: #1DA1F2;
    color: #fff;
    font-size: 15px; }
    .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover {
      background-color: #0967a0;
      color: #fff; }
      .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover:before, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover:before {
        border-right-color: #0967a0; }
    .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button svg, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button svg {
      fill: #fff;
      height: 1em;
      width: 1em; }
  .elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button, .elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button {
    padding: 0;
    width: 2em;
    height: 2em; }
    .elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i, .elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i {
      position: absolute;
      left: 50%;
      top: 50%;
      -webkit-transform: translate(-50%, -50%);
          -ms-transform: translate(-50%, -50%);
              transform: translate(-50%, -50%); }
  .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:before {
    content: '';
    border: solid 0.5em transparent;
    border-right-color: #1DA1F2;
    position: absolute;
    left: -0.8em;
    top: 50%;
    -webkit-transform: translateY(-50%) scale(1, 0.65);
        -ms-transform: translateY(-50%) scale(1, 0.65);
            transform: translateY(-50%) scale(1, 0.65);
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:before {
    right: auto;
    left: -0.8em;
    border-right-color: #1DA1F2;
    border-left-color: transparent; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:hover:before {
    border-right-color: #0967a0; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:before {
    left: auto;
    right: -0.8em;
    border-right-color: transparent;
    border-left-color: #1DA1F2; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:hover:before {
    border-left-color: #0967a0; }
  .elementor-blockquote--skin-boxed .elementor-blockquote {
    background-color: #e6e9ec;
    padding: 30px; }
  .elementor-blockquote--skin-border .elementor-blockquote {
    border-color: #e6e9ec;
    border-style: solid;
    border-left-width: 7px;
    padding-left: 20px; }
  .elementor-blockquote--skin-quotation .elementor-blockquote:before {
    content: '“';
    font-size: 100px;
    color: #e6e9ec;
    font-family: "Times New Roman", Times, serif;
    font-weight: 900;
    line-height: 1;
    display: block;
    height: 0.6em; }
  .elementor-blockquote--skin-quotation .elementor-blockquote__content {
    margin-top: 15px; }
  .elementor-blockquote--align-left .elementor-blockquote__content {
    text-align: left; }
  .elementor-blockquote--align-left .elementor-blockquote footer {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-blockquote--align-right .elementor-blockquote__content {
    text-align: right; }
  .elementor-blockquote--align-right .elementor-blockquote footer {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
  .elementor-blockquote--align-center .elementor-blockquote {
    text-align: center; }
    .elementor-blockquote--align-center .elementor-blockquote footer {
      display: block; }
    .elementor-blockquote--align-center .elementor-blockquote__author {
      display: block; }
    .elementor-blockquote--align-center .elementor-blockquote__tweet-button {
      margin-right: auto;
      margin-left: auto; }

.elementor-headline {
  font-size: 43px;
  line-height: 1.2;
  display: block; }
  .elementor-headline-dynamic-text {
    color: var(--dynamic-text-color, #aebcb9); }
  .elementor-headline--style-rotate .elementor-headline-dynamic-wrapper {
    text-align: left; }
  .elementor-headline--style-highlight .elementor-headline-dynamic-wrapper {
    overflow: visible;
    text-align: inherit; }
  .elementor-headline--style-highlight .elementor-headline-dynamic-text {
    z-index: 1; }
  .elementor-headline--style-highlight .elementor-headline-plain-text {
    z-index: 1;
    position: relative; }
  .elementor-headline--style-highlight svg {
    position: absolute;
    top: 50%;
    left: 50%;
    width: calc( 100% + 20px);
    height: calc( 100% + 20px);
    -webkit-transform: translate(-50%, -50%);
        -ms-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
    overflow: visible; }
    .elementor-headline--style-highlight svg path {
      stroke: red;
      stroke-width: 9;
      fill: none;
      opacity: 0;
      stroke-dasharray: 0 1500;
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
  .elementor-headline.e-animated svg path {
    -webkit-animation: elementor-headline-dash forwards;
            animation: elementor-headline-dash forwards;
    -webkit-animation-duration: var(--animation-duration, 1.2s);
            animation-duration: var(--animation-duration, 1.2s);
    -webkit-animation-iteration-count: 1;
            animation-iteration-count: 1; }
    .elementor-headline.e-animated svg path:nth-of-type(2) {
      -webkit-animation-delay: calc(var(--animation-duration, 1.2s) / 2);
              animation-delay: calc(var(--animation-duration, 1.2s) / 2); }
  .elementor-headline.e-hide-highlight svg path {
    opacity: 1;
    stroke-dasharray: 1500 1500;
    -webkit-animation: hide-highlight 0.4s forwards;
            animation: hide-highlight 0.4s forwards;
    -webkit-animation-iteration-count: 1;
            animation-iteration-count: 1; }

@-webkit-keyframes elementor-headline-dash {
  from {
    stroke-dasharray: 0 1500;
    opacity: 1; }
  to {
    stroke-dasharray: 1500 1500;
    opacity: 1; } }

@keyframes elementor-headline-dash {
  from {
    stroke-dasharray: 0 1500;
    opacity: 1; }
  to {
    stroke-dasharray: 1500 1500;
    opacity: 1; } }

@-webkit-keyframes hide-highlight {
  from {
    opacity: 1;
    stroke-dasharray: 1500 1500; }
  to {
    opacity: 0;
    -webkit-filter: blur(10px);
            filter: blur(10px); } }

@keyframes hide-highlight {
  from {
    opacity: 1;
    stroke-dasharray: 1500 1500; }
  to {
    opacity: 0;
    -webkit-filter: blur(10px);
            filter: blur(10px); } }

.elementor-headline-text-wrapper {
  vertical-align: bottom; }

.elementor-headline-dynamic-wrapper {
  display: inline-block;
  position: relative; }
  .elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text {
    display: inline-block;
    position: absolute;
    top: 0;
    left: 0; }
    .elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text.elementor-headline-text-active {
      position: relative; }

.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper {
  -webkit-perspective: 300px;
          perspective: 300px; }

.elementor-headline-animation-type-flip .elementor-headline-dynamic-text {
  opacity: 0;
  -webkit-transform-origin: 50% 100%;
      -ms-transform-origin: 50% 100%;
          transform-origin: 50% 100%;
  -webkit-transform: rotateX(180deg);
          transform: rotateX(180deg); }
  .elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1;
    -webkit-transform: rotateX(0deg);
            transform: rotateX(0deg);
    -webkit-animation: elementor-headline-flip-in 1.2s;
            animation: elementor-headline-flip-in 1.2s; }
  .elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    -webkit-transform: rotateX(180deg);
            transform: rotateX(180deg);
    -webkit-animation: elementor-headline-flip-out 1.2s;
            animation: elementor-headline-flip-out 1.2s; }

@-webkit-keyframes elementor-headline-flip-in {
  0% {
    -webkit-transform: rotateX(180deg);
            transform: rotateX(180deg);
    opacity: 0; }
  35% {
    -webkit-transform: rotateX(120deg);
            transform: rotateX(120deg);
    opacity: 0; }
  65% {
    opacity: 0; }
  100% {
    -webkit-transform: rotateX(360deg);
            transform: rotateX(360deg);
    opacity: 1; } }

@keyframes elementor-headline-flip-in {
  0% {
    -webkit-transform: rotateX(180deg);
            transform: rotateX(180deg);
    opacity: 0; }
  35% {
    -webkit-transform: rotateX(120deg);
            transform: rotateX(120deg);
    opacity: 0; }
  65% {
    opacity: 0; }
  100% {
    -webkit-transform: rotateX(360deg);
            transform: rotateX(360deg);
    opacity: 1; } }

@-webkit-keyframes elementor-headline-flip-out {
  0% {
    -webkit-transform: rotateX(0deg);
            transform: rotateX(0deg);
    opacity: 1; }
  35% {
    -webkit-transform: rotateX(-40deg);
            transform: rotateX(-40deg);
    opacity: 1; }
  65% {
    opacity: 0; }
  100% {
    -webkit-transform: rotateX(180deg);
            transform: rotateX(180deg);
    opacity: 0; } }

@keyframes elementor-headline-flip-out {
  0% {
    -webkit-transform: rotateX(0deg);
            transform: rotateX(0deg);
    opacity: 1; }
  35% {
    -webkit-transform: rotateX(-40deg);
            transform: rotateX(-40deg);
    opacity: 1; }
  65% {
    opacity: 0; }
  100% {
    -webkit-transform: rotateX(180deg);
            transform: rotateX(180deg);
    opacity: 0; } }

.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper {
  vertical-align: top;
  overflow: hidden; }
  .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper::after {
    /* vertical bar */
    content: '';
    position: absolute;
    left: auto;
    right: 0;
    top: 50%;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%);
    height: 90%;
    width: 1px;
    background-color: #0d0d0d; }
  .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:not(.elementor-headline-typing-selected):after {
    -webkit-animation: elementor-headline-pulse 1s infinite;
            animation: elementor-headline-pulse 1s infinite; }
  .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected {
    background-color: var(--typing-selected-bg-color, #0d0d0d); }
    .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected::after {
      visibility: hidden; }
    .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected .elementor-headline-dynamic-text {
      color: var(--typing-selected-color, var(--dynamic-text-color), #aebcb9); }

.elementor-headline-animation-type-typing .elementor-headline-dynamic-text:not(.elementor-headline-text-active) {
  visibility: hidden; }

.elementor-headline-animation-type-typing .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
  position: absolute;
  visibility: hidden; }

@-webkit-keyframes elementor-headline-pulse {
  0% {
    -webkit-transform: translateY(-50%) scale(1);
            transform: translateY(-50%) scale(1);
    opacity: 1; }
  40% {
    -webkit-transform: translateY(-50%) scale(0.9);
            transform: translateY(-50%) scale(0.9);
    opacity: 0; }
  100% {
    -webkit-transform: translateY(-50%) scale(0);
            transform: translateY(-50%) scale(0);
    opacity: 0; } }

@keyframes elementor-headline-pulse {
  0% {
    -webkit-transform: translateY(-50%) scale(1);
            transform: translateY(-50%) scale(1);
    opacity: 1; }
  40% {
    -webkit-transform: translateY(-50%) scale(0.9);
            transform: translateY(-50%) scale(0.9);
    opacity: 0; }
  100% {
    -webkit-transform: translateY(-50%) scale(0);
            transform: translateY(-50%) scale(0);
    opacity: 0; } }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper {
  -webkit-perspective: 300px;
          perspective: 300px; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter {
  display: inline-block;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text {
  -webkit-transform: scaleX(1.0005);
      -ms-transform: scaleX(1.0005);
          transform: scaleX(1.0005);
  opacity: 0; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter {
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  -webkit-transform: translateZ(-20px) rotateX(90deg);
          transform: translateZ(-20px) rotateX(90deg);
  opacity: 0; }
  .elementor-headline-text-active .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter {
    opacity: 1; }
  .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter.elementor-headline-animation-in {
    -webkit-animation: elementor-headline-swirl-in .4s forwards;
            animation: elementor-headline-swirl-in .4s forwards; }
  .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
    -webkit-animation: elementor-headline-swirl-out .4s forwards;
            animation: elementor-headline-swirl-out .4s forwards; }

@-webkit-keyframes elementor-headline-swirl-in {
  0% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(90deg);
            transform: translateZ(-20px) rotateX(90deg); }
  60% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(-10deg);
            transform: translateZ(-20px) rotateX(-10deg); }
  100% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(0deg);
            transform: translateZ(-20px) rotateX(0deg); } }

@keyframes elementor-headline-swirl-in {
  0% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(90deg);
            transform: translateZ(-20px) rotateX(90deg); }
  60% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(-10deg);
            transform: translateZ(-20px) rotateX(-10deg); }
  100% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(0deg);
            transform: translateZ(-20px) rotateX(0deg); } }

@-webkit-keyframes elementor-headline-swirl-out {
  0% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(0);
            transform: translateZ(-20px) rotateX(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(-100deg);
            transform: translateZ(-20px) rotateX(-100deg); }
  100% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(-90deg);
            transform: translateZ(-20px) rotateX(-90deg); } }

@keyframes elementor-headline-swirl-out {
  0% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(0);
            transform: translateZ(-20px) rotateX(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(-100deg);
            transform: translateZ(-20px) rotateX(-100deg); }
  100% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(-90deg);
            transform: translateZ(-20px) rotateX(-90deg); } }

.elementor-headline-animation-type-slide-down .elementor-headline-text-wrapper {
  display: inline-block;
  padding: .2em 0; }

.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper {
  overflow: hidden;
  vertical-align: top; }

.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text {
  opacity: 0;
  top: .2em; }
  .elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-active {
    top: 0;
    opacity: 1;
    -webkit-animation: elementor-headline-slide-down-in .6s;
            animation: elementor-headline-slide-down-in .6s; }
  .elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    -webkit-animation: elementor-headline-slide-down-out .6s;
            animation: elementor-headline-slide-down-out .6s; }

@-webkit-keyframes elementor-headline-slide-down-in {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-100%);
            transform: translateY(-100%); }
  60% {
    opacity: 1;
    -webkit-transform: translateY(20%);
            transform: translateY(20%); }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
            transform: translateY(0); } }

@keyframes elementor-headline-slide-down-in {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-100%);
            transform: translateY(-100%); }
  60% {
    opacity: 1;
    -webkit-transform: translateY(20%);
            transform: translateY(20%); }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
            transform: translateY(0); } }

@-webkit-keyframes elementor-headline-slide-down-out {
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
            transform: translateY(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateY(120%);
            transform: translateY(120%); }
  100% {
    opacity: 0;
    -webkit-transform: translateY(100%);
            transform: translateY(100%); } }

@keyframes elementor-headline-slide-down-out {
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
            transform: translateY(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateY(120%);
            transform: translateY(120%); }
  100% {
    opacity: 0;
    -webkit-transform: translateY(100%);
            transform: translateY(100%); } }

.elementor-headline-animation-type-clip .elementor-headline-text-wrapper {
  display: inline-block;
  padding: .2em 0; }

.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper {
  overflow: hidden;
  vertical-align: top; }
  .elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper::after {
    /* line */
    content: '';
    position: absolute;
    top: 0;
    left: auto;
    right: 0;
    width: 2px;
    height: 100%;
    background-color: #0d0d0d; }

.elementor-headline-animation-type-clip .elementor-headline-dynamic-text {
  opacity: 0; }
  .elementor-headline-animation-type-clip .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1; }

.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper {
  -webkit-perspective: 300px;
          perspective: 300px; }

.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text {
  opacity: 0; }
  .elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1;
    -webkit-animation: elementor-headline-drop-in-in .8s;
            animation: elementor-headline-drop-in-in .8s; }
  .elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    -webkit-animation: elementor-headline-drop-in-out .8s;
            animation: elementor-headline-drop-in-out .8s; }

@-webkit-keyframes elementor-headline-drop-in-in {
  0% {
    opacity: 0;
    -webkit-transform: translateZ(100px);
            transform: translateZ(100px); }
  100% {
    opacity: 1;
    -webkit-transform: translateZ(0);
            transform: translateZ(0); } }

@keyframes elementor-headline-drop-in-in {
  0% {
    opacity: 0;
    -webkit-transform: translateZ(100px);
            transform: translateZ(100px); }
  100% {
    opacity: 1;
    -webkit-transform: translateZ(0);
            transform: translateZ(0); } }

@-webkit-keyframes elementor-headline-drop-in-out {
  0% {
    opacity: 1;
    -webkit-transform: translateZ(0);
            transform: translateZ(0); }
  100% {
    opacity: 0;
    -webkit-transform: translateZ(-100px);
            transform: translateZ(-100px); } }

@keyframes elementor-headline-drop-in-out {
  0% {
    opacity: 1;
    -webkit-transform: translateZ(0);
            transform: translateZ(0); }
  100% {
    opacity: 0;
    -webkit-transform: translateZ(-100px);
            transform: translateZ(-100px); } }

.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper {
  -webkit-perspective: 300px;
          perspective: 300px; }

.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text {
  opacity: 0; }

.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter {
  display: inline-block;
  -webkit-transform: rotateY(180deg);
          transform: rotateY(180deg);
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden; }
  .elementor-headline-text-active .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter {
    -webkit-transform: rotateY(0deg);
            transform: rotateY(0deg); }
  .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter.elementor-headline-animation-in {
    -webkit-animation: elementor-headline-blinds-in .6s forwards;
            animation: elementor-headline-blinds-in .6s forwards; }
  .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
    -webkit-animation: elementor-headline-blinds-out .6s forwards;
            animation: elementor-headline-blinds-out .6s forwards; }

@-webkit-keyframes elementor-headline-blinds-in {
  0% {
    -webkit-transform: rotateY(180deg);
            transform: rotateY(180deg); }
  100% {
    -webkit-transform: rotateY(0deg);
            transform: rotateY(0deg); } }

@keyframes elementor-headline-blinds-in {
  0% {
    -webkit-transform: rotateY(180deg);
            transform: rotateY(180deg); }
  100% {
    -webkit-transform: rotateY(0deg);
            transform: rotateY(0deg); } }

@-webkit-keyframes elementor-headline-blinds-out {
  0% {
    -webkit-transform: rotateY(0);
            transform: rotateY(0); }
  100% {
    -webkit-transform: rotateY(-180deg);
            transform: rotateY(-180deg); } }

@keyframes elementor-headline-blinds-out {
  0% {
    -webkit-transform: rotateY(0);
            transform: rotateY(0); }
  100% {
    -webkit-transform: rotateY(-180deg);
            transform: rotateY(-180deg); } }

.elementor-headline-animation-type-wave .elementor-headline-dynamic-text {
  opacity: 0; }

.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter {
  display: inline-block;
  opacity: 0;
  -webkit-transform: scale(0);
      -ms-transform: scale(0);
          transform: scale(0); }
  .elementor-headline-text-active .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter {
    opacity: 1; }
  .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter.elementor-headline-animation-in {
    -webkit-animation: elementor-headline-wave-up .6s forwards;
            animation: elementor-headline-wave-up .6s forwards; }
  .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
    -webkit-animation: elementor-headline-wave-down .6s forwards;
            animation: elementor-headline-wave-down .6s forwards; }

@-webkit-keyframes elementor-headline-wave-up {
  0% {
    -webkit-transform: scale(0);
            transform: scale(0);
    opacity: 0; }
  60% {
    -webkit-transform: scale(1.2);
            transform: scale(1.2);
    opacity: 1; }
  100% {
    -webkit-transform: scale(1);
            transform: scale(1);
    opacity: 1; } }

@keyframes elementor-headline-wave-up {
  0% {
    -webkit-transform: scale(0);
            transform: scale(0);
    opacity: 0; }
  60% {
    -webkit-transform: scale(1.2);
            transform: scale(1.2);
    opacity: 1; }
  100% {
    -webkit-transform: scale(1);
            transform: scale(1);
    opacity: 1; } }

@-webkit-keyframes elementor-headline-wave-down {
  0% {
    -webkit-transform: scale(1);
            transform: scale(1);
    opacity: 1; }
  60% {
    -webkit-transform: scale(0);
            transform: scale(0);
    opacity: 0; } }

@keyframes elementor-headline-wave-down {
  0% {
    -webkit-transform: scale(1);
            transform: scale(1);
    opacity: 1; }
  60% {
    -webkit-transform: scale(0);
            transform: scale(0);
    opacity: 0; } }

.elementor-headline-animation-type-slide .elementor-headline-dynamic-text {
  opacity: 0; }
  .elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1;
    -webkit-animation: elementor-headline-slide-in .6s;
            animation: elementor-headline-slide-in .6s; }
  .elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    -webkit-animation: elementor-headline-slide-out .6s;
            animation: elementor-headline-slide-out .6s; }

@-webkit-keyframes elementor-headline-slide-in {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-100%);
            transform: translateX(-100%); }
  60% {
    opacity: 1;
    -webkit-transform: translateX(10%);
            transform: translateX(10%); }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
            transform: translateX(0); } }

@keyframes elementor-headline-slide-in {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-100%);
            transform: translateX(-100%); }
  60% {
    opacity: 1;
    -webkit-transform: translateX(10%);
            transform: translateX(10%); }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
            transform: translateX(0); } }

@-webkit-keyframes elementor-headline-slide-out {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
            transform: translateX(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateX(110%);
            transform: translateX(110%); }
  100% {
    opacity: 0;
    -webkit-transform: translateX(100%);
            transform: translateX(100%); } }

@keyframes elementor-headline-slide-out {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
            transform: translateX(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateX(110%);
            transform: translateX(110%); }
  100% {
    opacity: 0;
    -webkit-transform: translateX(100%);
            transform: translateX(100%); } }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-slide .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper {
  -webkit-transition: width 0.5s;
  -o-transition: width 0.5s;
  transition: width 0.5s; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper {
  overflow: hidden; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text, .elementor-headline-animation-type-blinds .elementor-headline-dynamic-text, .elementor-headline-animation-type-wave .elementor-headline-dynamic-text {
  white-space: nowrap; }

.elementor-msie .elementor-headline--style-highlight svg {
  top: auto;
  left: auto;
  -webkit-transform: translate(-100%);
      -ms-transform: translate(-100%);
          transform: translate(-100%); }

/* Animations */
@-webkit-keyframes e-hotspot-soft-beat {
  from {
    -webkit-transform: scale(1);
            transform: scale(1); }
  to {
    -webkit-transform: scale(1.1);
            transform: scale(1.1); } }
@keyframes e-hotspot-soft-beat {
  from {
    -webkit-transform: scale(1);
            transform: scale(1); }
  to {
    -webkit-transform: scale(1.1);
            transform: scale(1.1); } }

@-webkit-keyframes e-hotspot-expand {
  from {
    -webkit-transform: scale(0.5);
            transform: scale(0.5);
    opacity: 1; }
  to {
    -webkit-transform: scale(1.5);
            transform: scale(1.5);
    opacity: 0; } }

@keyframes e-hotspot-expand {
  from {
    -webkit-transform: scale(0.5);
            transform: scale(0.5);
    opacity: 1; }
  to {
    -webkit-transform: scale(1.5);
            transform: scale(1.5);
    opacity: 0; } }

/* Hotspot Wrapper */
.elementor-widget-hotspot {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: var(--background-align);
      -ms-flex-pack: var(--background-align);
          justify-content: var(--background-align); }
  .elementor-widget-hotspot .elementor-widget-container {
    position: relative;
    display: inline-block;
    width: var(--container-width);
    max-width: var(--container-max-width);
    height: var(--container-height); }
    .elementor-widget-hotspot .elementor-widget-container > img {
      display: block;
      width: var(--image-width, auto);
      height: var(--container-height);
      opacity: var(--opacity, 1); }

/* Each Hotspot */
.e-hotspot {
  z-index: 1;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  position: absolute;
  /* Hotspot Button Animations */
  /* End: Hotspot Button Animations */ }
  .e-hotspot--position-left.e-hotspot--position-top {
    -webkit-transform: translate(calc( -1 * var( --hotspot-translate-x )), calc( -1 * var( --hotspot-translate-y )));
        -ms-transform: translate(calc( -1 * var( --hotspot-translate-x )), calc( -1 * var( --hotspot-translate-y )));
            transform: translate(calc( -1 * var( --hotspot-translate-x )), calc( -1 * var( --hotspot-translate-y ))); }
  .e-hotspot--position-left.e-hotspot--position-bottom {
    -webkit-transform: translate(calc( -1 * var( --hotspot-translate-x )), var(--hotspot-translate-y));
        -ms-transform: translate(calc( -1 * var( --hotspot-translate-x )), var(--hotspot-translate-y));
            transform: translate(calc( -1 * var( --hotspot-translate-x )), var(--hotspot-translate-y)); }
  .e-hotspot--position-right.e-hotspot--position-top {
    -webkit-transform: translate(var(--hotspot-translate-x), calc( -1 * var( --hotspot-translate-y )));
        -ms-transform: translate(var(--hotspot-translate-x), calc( -1 * var( --hotspot-translate-y )));
            transform: translate(var(--hotspot-translate-x), calc( -1 * var( --hotspot-translate-y ))); }
  .e-hotspot--position-right.e-hotspot--position-bottom {
    -webkit-transform: translate(var(--hotspot-translate-x), var(--hotspot-translate-y));
        -ms-transform: translate(var(--hotspot-translate-x), var(--hotspot-translate-y));
            transform: translate(var(--hotspot-translate-x), var(--hotspot-translate-y)); }
  .e-hotspot--active {
    z-index: 2; }
  .e-hotspot__outer-circle, .e-hotspot__inner-circle {
    content: "";
    display: inline-block;
    -webkit-box-sizing: content-box;
            box-sizing: content-box;
    border-radius: 50%; }
  .e-hotspot__inner-circle {
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%);
        -ms-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
    background-color: var(--hotspot-color);
    padding: calc( var(--hotspot-size, 18px) / 2); }
  .e-hotspot__outer-circle {
    background-color: var(--hotspot-color);
    padding: var(--hotspot-padding, 4px);
    width: var(--hotspot-size, 18px);
    height: var(--hotspot-size, 18px); }
  .e-hotspot--icon .e-hotspot__button {
    line-height: 0;
    -webkit-box-sizing: content-box;
            box-sizing: content-box;
    font-size: var(--hotspot-size, 18px);
    width: var(--hotspot-size, 18px);
    height: var(--hotspot-size, 18px); }
  .e-hotspot__icon, .e-hotspot__label {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .e-hotspot__icon svg, .e-hotspot__label svg {
      width: var(--hotspot-size, 18px);
      height: auto; }
  .e-hotspot__button {
    cursor: pointer;
    position: relative;
    display: grid;
    grid-auto-flow: column;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    color: var(--hotspot-color);
    font-size: var(--hotspot-size, 18px);
    min-width: var(--hotspot-button-width);
    min-height: var(--hotspot-button-height); }
    .e-hotspot__button:before {
      z-index: -2;
      content: "";
      width: 100%;
      height: 100%;
      left: -5px;
      top: -5px;
      position: absolute;
      padding: 5px;
      -webkit-box-sizing: content-box;
              box-sizing: content-box; }
    .e-hotspot__button svg {
      fill: var(--hotspot-color); }
  .e-hotspot:not(.e-hotspot--circle) .e-hotspot__button {
    min-width: var(--hotspot-min-width);
    min-height: var(--hotspot-min-height);
    background-color: var(--hotspot-box-color);
    padding: var(--hotspot-padding, 4px);
    border-radius: var(--hotspot-border-radius, 3px); }
    .e-hotspot:not(.e-hotspot--circle) .e-hotspot__button:before {
      border-radius: var(--hotspot-border-radius, 3px); }
  .e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand::before {
    background-color: var(--hotspot-box-color); }
  .e-hotspot--overlay {
    opacity: 0.7;
    -webkit-transition: opacity 0.2s;
    -o-transition: opacity 0.2s;
    transition: opacity 0.2s; }
  .e-hotspot--overlay:hover,
  .e-hotspot--active .e-hotspot--overlay {
    opacity: 1; }
  .e-hotspot--soft-beat {
    -webkit-animation: e-hotspot-soft-beat 0.7s infinite alternate;
            animation: e-hotspot-soft-beat 0.7s infinite alternate;
    -webkit-animation-timing-function: ease;
            animation-timing-function: ease; }
  .e-hotspot--expand .e-hotspot__outer-circle {
    -webkit-animation: e-hotspot-expand 2s infinite;
            animation: e-hotspot-expand 2s infinite; }
  .e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand::before {
    content: "";
    width: 100%;
    height: 100%;
    position: absolute;
    z-index: -1;
    opacity: 0;
    -webkit-animation: e-hotspot-expand 2s infinite;
            animation: e-hotspot-expand 2s infinite; }
  .e-hotspot--sequenced {
    -webkit-animation: fadeIn 0.3s;
            animation: fadeIn 0.3s;
    -webkit-animation-iteration-count: 1;
            animation-iteration-count: 1;
    -webkit-animation-fill-mode: both;
            animation-fill-mode: both; }
  .e-hotspot__direction-mask {
    overflow: hidden;
    position: absolute;
    pointer-events: none; }
  .e-hotspot__tooltip {
    white-space: var(--white-space, nowrap);
    -webkit-transition-property: opacity, -webkit-transform;
    transition-property: opacity, -webkit-transform;
    -o-transition-property: transform, opacity;
    transition-property: transform, opacity;
    transition-property: transform, opacity, -webkit-transform;
    -webkit-transition-duration: var(--tooltip-transition-duration, 500ms);
         -o-transition-duration: var(--tooltip-transition-duration, 500ms);
            transition-duration: var(--tooltip-transition-duration, 500ms);
    -webkit-transform-origin: center center;
        -ms-transform-origin: center center;
            transform-origin: center center;
    position: absolute;
    pointer-events: none;
    color: var(--tooltip-text-color, #FFF);
    text-align: var(--tooltip-align);
    min-width: var(--tooltip-min-width);
    padding: var(--tooltip-padding, 8px);
    border-radius: var(--tooltip-border-radius);
    background-color: var(--tooltip-color); }
  .e-hotspot__tooltip p:last-of-type {
    margin-bottom: 0; }
  .e-hotspot__direction-mask .e-hotspot__tooltip {
    -webkit-box-shadow: none !important;
            box-shadow: none !important;
    position: static; }
  .e-hotspot--active .e-hotspot__tooltip {
    pointer-events: visible; }
  .e-hotspot--fade-in-out {
    opacity: 0; }
  .e-hotspot--active .e-hotspot--fade-in-out {
    opacity: 1; }
  .e-hotspot--fade-grow {
    opacity: 0;
    -webkit-transform: scale(0);
        -ms-transform: scale(0);
            transform: scale(0); }
  .e-hotspot--active .e-hotspot--fade-grow {
    opacity: 1;
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1); }
  .e-hotspot--tooltip-animation-from-top, .e-hotspot--override-tooltip-animation-from-top {
    -webkit-transform: translate(0, calc(-100% - 1px));
        -ms-transform: translate(0, calc(-100% - 1px));
            transform: translate(0, calc(-100% - 1px)); }
  .e-hotspot--tooltip-animation-from-left, .e-hotspot--override-tooltip-animation-from-left {
    -webkit-transform: translate(calc(-100% - 1px), 0);
        -ms-transform: translate(calc(-100% - 1px), 0);
            transform: translate(calc(-100% - 1px), 0); }
  .e-hotspot--tooltip-animation-from-right, .e-hotspot--override-tooltip-animation-from-right {
    -webkit-transform: translate(calc(100% + 1px), 0);
        -ms-transform: translate(calc(100% + 1px), 0);
            transform: translate(calc(100% + 1px), 0); }
  .e-hotspot--tooltip-animation-from-bottom, .e-hotspot--override-tooltip-animation-from-bottom {
    -webkit-transform: translate(0, calc(100% + 1px));
        -ms-transform: translate(0, calc(100% + 1px));
            transform: translate(0, calc(100% + 1px)); }
  .e-hotspot--fade-direction {
    opacity: 0; }
  .e-hotspot--active .e-hotspot--slide-direction,
  .e-hotspot--active .e-hotspot--fade-direction {
    -webkit-transform: translate(0, 0) scale(1);
        -ms-transform: translate(0, 0) scale(1);
            transform: translate(0, 0) scale(1);
    opacity: 1; }
  .e-hotspot--show-tooltip {
    -webkit-transition: none;
    -o-transition: none;
    transition: none;
    opacity: 1;
    pointer-events: visible;
    -webkit-transform: translate(0, 0);
        -ms-transform: translate(0, 0);
            transform: translate(0, 0); }

.elementor-facebook-widget.fb_iframe_widget {
  width: 100% !important; }
  .elementor-facebook-widget.fb_iframe_widget span {
    width: 100% !important; }
  .elementor-facebook-widget.fb_iframe_widget iframe {
    position: relative;
    width: 100% !important; }

.elementor-facebook-widget.fb-like {
  height: 1px; }

.elementor-widget-facebook-comments iframe {
  width: 100% !important; }

.site-main .menu-navigation-container {
  overflow: visible; }

.elementor-item:before, .elementor-item:after {
  display: block;
  position: absolute;
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s;
  -webkit-transition-timing-function: cubic-bezier(0.58, 0.3, 0.005, 1);
       -o-transition-timing-function: cubic-bezier(0.58, 0.3, 0.005, 1);
          transition-timing-function: cubic-bezier(0.58, 0.3, 0.005, 1); }

.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  opacity: 0; }


.elementor-item:hover:before,
.elementor-item:hover:after,
.elementor-item:focus:before,
.elementor-item:focus:after,
.elementor-item.highlighted:before,
.elementor-item.highlighted:after,
.elementor-item-active:before,
.elementor-item-active:after {
  -webkit-transform: scale(1);
      -ms-transform: scale(1);
          transform: scale(1); }

.e--pointer-double-line .elementor-item:before, .e--pointer-double-line .elementor-item:after, .e--pointer-underline .elementor-item:before, .e--pointer-underline .elementor-item:after, .e--pointer-overline .elementor-item:before, .e--pointer-overline .elementor-item:after {
  height: 3px;
  width: 100%;
  left: 0;
  background-color: #55595c;
  z-index: 2; }

.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  height: 0;
  width: 0;
  left: 50%; }

.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  top: 10px; }

.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  bottom: 10px; }

.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  top: -10px; }

.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  bottom: -10px; }

.e--pointer-double-line.e--animation-none,
.e--pointer-double-line.e--animation-none .elementor-item, .e--pointer-underline.e--animation-none,
.e--pointer-underline.e--animation-none .elementor-item, .e--pointer-overline.e--animation-none,
.e--pointer-overline.e--animation-none .elementor-item {
  -webkit-transition-duration: 0s;
       -o-transition-duration: 0s;
          transition-duration: 0s; }
  .e--pointer-double-line.e--animation-none:before, .e--pointer-double-line.e--animation-none:after, .e--pointer-double-line.e--animation-none:hover, .e--pointer-double-line.e--animation-none:focus,
  .e--pointer-double-line.e--animation-none .elementor-item:before,
  .e--pointer-double-line.e--animation-none .elementor-item:after,
  .e--pointer-double-line.e--animation-none .elementor-item:hover,
  .e--pointer-double-line.e--animation-none .elementor-item:focus, .e--pointer-underline.e--animation-none:before, .e--pointer-underline.e--animation-none:after, .e--pointer-underline.e--animation-none:hover, .e--pointer-underline.e--animation-none:focus,
  .e--pointer-underline.e--animation-none .elementor-item:before,
  .e--pointer-underline.e--animation-none .elementor-item:after,
  .e--pointer-underline.e--animation-none .elementor-item:hover,
  .e--pointer-underline.e--animation-none .elementor-item:focus, .e--pointer-overline.e--animation-none:before, .e--pointer-overline.e--animation-none:after, .e--pointer-overline.e--animation-none:hover, .e--pointer-overline.e--animation-none:focus,
  .e--pointer-overline.e--animation-none .elementor-item:before,
  .e--pointer-overline.e--animation-none .elementor-item:after,
  .e--pointer-overline.e--animation-none .elementor-item:hover,
  .e--pointer-overline.e--animation-none .elementor-item:focus {
    -webkit-transition-duration: 0s;
         -o-transition-duration: 0s;
            transition-duration: 0s; }

.e--pointer-double-line .elementor-item:before, .e--pointer-overline .elementor-item:before {
  content: '';
  top: 0; }

.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  width: 10px;
  left: -20px; }

.e--pointer-double-line .elementor-item:after, .e--pointer-underline .elementor-item:after {
  content: '';
  bottom: 0; }

.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  width: 10px;
  inset-inline-start: 100%; }

.e--pointer-framed .elementor-item:before, .e--pointer-framed .elementor-item:after {
  background: transparent;
  left: 0;
  top: 0;
  bottom: 0;
  right: 0;
  border: 3px solid #55595c; }

.e--pointer-framed .elementor-item:before {
  content: ''; }

.e--pointer-framed.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  -webkit-transform: scale(0.75);
      -ms-transform: scale(0.75);
          transform: scale(0.75); }

.e--pointer-framed.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  -webkit-transform: scale(1.25);
      -ms-transform: scale(1.25);
          transform: scale(1.25); }

.e--pointer-framed.e--animation-grow .elementor-item:before, .e--pointer-framed.e--animation-shrink .elementor-item:before {
  -webkit-transition: opacity 0.2s, -webkit-transform 0.4s;
  transition: opacity 0.2s, -webkit-transform 0.4s;
  -o-transition: opacity 0.2s, transform 0.4s;
  transition: opacity 0.2s, transform 0.4s;
  transition: opacity 0.2s, transform 0.4s, -webkit-transform 0.4s; }

.e--pointer-framed.e--animation-draw .elementor-item:before, .e--pointer-framed.e--animation-draw .elementor-item:after {
  width: 3px;
  height: 3px; }

.e--pointer-framed.e--animation-draw .elementor-item:before {
  border-width: 0 0 3px 3px;
  -webkit-transition: width 0.1s 0.2s, height 0.1s 0.3s, opacity 0.12s 0.22s;
  -o-transition: width 0.1s 0.2s, height 0.1s 0.3s, opacity 0.12s 0.22s;
  transition: width 0.1s 0.2s, height 0.1s 0.3s, opacity 0.12s 0.22s; }

.e--pointer-framed.e--animation-draw .elementor-item:after {
  content: '';
  top: initial;
  bottom: 0;
  left: initial;
  right: 0;
  border-width: 3px 3px 0 0;
  -webkit-transition: width 0.1s, height 0.1s 0.1s, opacity 0.02s 0.18s;
  -o-transition: width 0.1s, height 0.1s 0.1s, opacity 0.02s 0.18s;
  transition: width 0.1s, height 0.1s 0.1s, opacity 0.02s 0.18s; }


.e--pointer-framed.e--animation-draw .elementor-item:hover:before,
.e--pointer-framed.e--animation-draw .elementor-item:hover:after,
.e--pointer-framed.e--animation-draw .elementor-item:focus:before,
.e--pointer-framed.e--animation-draw .elementor-item:focus:after,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,
.e--pointer-framed.e--animation-draw .elementor-item-active:before,
.e--pointer-framed.e--animation-draw .elementor-item-active:after {
  width: 100%;
  height: 100%; }


.e--pointer-framed.e--animation-draw .elementor-item:hover:before,
.e--pointer-framed.e--animation-draw .elementor-item:focus:before,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,
.e--pointer-framed.e--animation-draw .elementor-item-active:before {
  -webkit-transition: opacity 0.02s, height 0.1s, width 0.1s 0.1s;
  -o-transition: opacity 0.02s, height 0.1s, width 0.1s 0.1s;
  transition: opacity 0.02s, height 0.1s, width 0.1s 0.1s; }


.e--pointer-framed.e--animation-draw .elementor-item:hover:after,
.e--pointer-framed.e--animation-draw .elementor-item:focus:after,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,
.e--pointer-framed.e--animation-draw .elementor-item-active:after {
  -webkit-transition: opacity 0.02s 0.2s, height 0.1s 0.2s, width 0.1s 0.3s;
  -o-transition: opacity 0.02s 0.2s, height 0.1s 0.2s, width 0.1s 0.3s;
  transition: opacity 0.02s 0.2s, height 0.1s 0.2s, width 0.1s 0.3s; }

.e--pointer-framed.e--animation-corners .elementor-item:before, .e--pointer-framed.e--animation-corners .elementor-item:after {
  width: 3px;
  height: 3px; }

.e--pointer-framed.e--animation-corners .elementor-item:before {
  border-width: 3px 0 0 3px; }

.e--pointer-framed.e--animation-corners .elementor-item:after {
  content: '';
  top: initial;
  bottom: 0;
  left: initial;
  right: 0;
  border-width: 0 3px 3px 0; }


.e--pointer-framed.e--animation-corners .elementor-item:hover:before,
.e--pointer-framed.e--animation-corners .elementor-item:hover:after,
.e--pointer-framed.e--animation-corners .elementor-item:focus:before,
.e--pointer-framed.e--animation-corners .elementor-item:focus:after,
.e--pointer-framed.e--animation-corners .elementor-item.highlighted:before,
.e--pointer-framed.e--animation-corners .elementor-item.highlighted:after,
.e--pointer-framed.e--animation-corners .elementor-item-active:before,
.e--pointer-framed.e--animation-corners .elementor-item-active:after {
  width: 100%;
  height: 100%;
  -webkit-transition: opacity 0.002s, width 0.4s, height 0.4s;
  -o-transition: opacity 0.002s, width 0.4s, height 0.4s;
  transition: opacity 0.002s, width 0.4s, height 0.4s; }

.e--pointer-framed.e--animation-none,
.e--pointer-framed.e--animation-none .elementor-item {
  -webkit-transition-duration: 0s;
       -o-transition-duration: 0s;
          transition-duration: 0s; }
  .e--pointer-framed.e--animation-none:before, .e--pointer-framed.e--animation-none:after, .e--pointer-framed.e--animation-none:hover, .e--pointer-framed.e--animation-none:focus,
  .e--pointer-framed.e--animation-none .elementor-item:before,
  .e--pointer-framed.e--animation-none .elementor-item:after,
  .e--pointer-framed.e--animation-none .elementor-item:hover,
  .e--pointer-framed.e--animation-none .elementor-item:focus {
    -webkit-transition-duration: 0s;
         -o-transition-duration: 0s;
            transition-duration: 0s; }

.e--pointer-background .elementor-item:before, .e--pointer-background .elementor-item:after {
  content: '';
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s; }

.e--pointer-background .elementor-item:before {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: #55595c;
  z-index: -1; }


.e--pointer-background .elementor-item:hover,
.e--pointer-background .elementor-item:focus,
.e--pointer-background .elementor-item.highlighted,
.e--pointer-background .elementor-item-active {
  color: #fff; }

.e--pointer-background.e--animation-grow .elementor-item:before {
  -webkit-transform: scale(0.5);
      -ms-transform: scale(0.5);
          transform: scale(0.5); }


.e--pointer-background.e--animation-grow .elementor-item:hover:before,
.e--pointer-background.e--animation-grow .elementor-item:focus:before,
.e--pointer-background.e--animation-grow .elementor-item.highlighted:before,
.e--pointer-background.e--animation-grow .elementor-item-active:before {
  -webkit-transform: scale(1);
      -ms-transform: scale(1);
          transform: scale(1);
  opacity: 1; }

.e--pointer-background.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2);
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s; }


.e--pointer-background.e--animation-shrink .elementor-item:hover:before,
.e--pointer-background.e--animation-shrink .elementor-item:focus:before,
.e--pointer-background.e--animation-shrink .elementor-item.highlighted:before,
.e--pointer-background.e--animation-shrink .elementor-item-active:before {
  -webkit-transition: opacity 0.15s, -webkit-transform 0.4s;
  transition: opacity 0.15s, -webkit-transform 0.4s;
  -o-transition: opacity 0.15s, transform 0.4s;
  transition: opacity 0.15s, transform 0.4s;
  transition: opacity 0.15s, transform 0.4s, -webkit-transform 0.4s; }

.e--pointer-background.e--animation-sweep-left .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  left: 100%; }

.e--pointer-background.e--animation-sweep-right .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  right: 100%; }

.e--pointer-background.e--animation-sweep-up .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  top: 100%; }

.e--pointer-background.e--animation-sweep-down .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  bottom: 100%; }

.e--pointer-background.e--animation-shutter-out-vertical .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  bottom: 50%;
  top: 50%; }

.e--pointer-background.e--animation-shutter-out-horizontal .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  right: 50%;
  left: 50%; }

.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after, .e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: #55595c;
  z-index: -1; }

.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:before {
  top: 0;
  bottom: 100%; }

.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after {
  top: 100%;
  bottom: 0; }


.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:before,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:before,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:before,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:before {
  bottom: 50%; }


.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:after,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:after,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:after,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:after {
  top: 50%; }

.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:before {
  right: 0;
  left: 100%; }

.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after {
  right: 100%;
  left: 0; }


.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:before,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:before,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:before,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:before {
  left: 50%; }


.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:after,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:after,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:after,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:after {
  right: 50%; }

.e--pointer-background.e--animation-none,
.e--pointer-background.e--animation-none .elementor-item {
  -webkit-transition-duration: 0s;
       -o-transition-duration: 0s;
          transition-duration: 0s; }
  .e--pointer-background.e--animation-none:before, .e--pointer-background.e--animation-none:after, .e--pointer-background.e--animation-none:hover, .e--pointer-background.e--animation-none:focus,
  .e--pointer-background.e--animation-none .elementor-item:before,
  .e--pointer-background.e--animation-none .elementor-item:after,
  .e--pointer-background.e--animation-none .elementor-item:hover,
  .e--pointer-background.e--animation-none .elementor-item:focus {
    -webkit-transition-duration: 0s;
         -o-transition-duration: 0s;
            transition-duration: 0s; }

.e--pointer-text.e--animation-skew .elementor-item:hover,
.e--pointer-text.e--animation-skew .elementor-item:focus {
  -webkit-transform: skew(-8deg);
      -ms-transform: skew(-8deg);
          transform: skew(-8deg); }

.e--pointer-text.e--animation-grow .elementor-item:hover,
.e--pointer-text.e--animation-grow .elementor-item:focus {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2); }

.e--pointer-text.e--animation-shrink .elementor-item:hover,
.e--pointer-text.e--animation-shrink .elementor-item:focus {
  -webkit-transform: scale(0.8);
      -ms-transform: scale(0.8);
          transform: scale(0.8); }

.e--pointer-text.e--animation-float .elementor-item:hover,
.e--pointer-text.e--animation-float .elementor-item:focus {
  -webkit-transform: translateY(-8px);
      -ms-transform: translateY(-8px);
          transform: translateY(-8px); }

.e--pointer-text.e--animation-sink .elementor-item:hover,
.e--pointer-text.e--animation-sink .elementor-item:focus {
  -webkit-transform: translateY(8px);
      -ms-transform: translateY(8px);
          transform: translateY(8px); }

.e--pointer-text.e--animation-rotate .elementor-item:hover,
.e--pointer-text.e--animation-rotate .elementor-item:focus {
  -webkit-transform: rotate(6deg);
      -ms-transform: rotate(6deg);
          transform: rotate(6deg); }

.e--pointer-text.e--animation-none,
.e--pointer-text.e--animation-none .elementor-item {
  -webkit-transition-duration: 0s;
       -o-transition-duration: 0s;
          transition-duration: 0s; }
  .e--pointer-text.e--animation-none:before, .e--pointer-text.e--animation-none:after, .e--pointer-text.e--animation-none:hover, .e--pointer-text.e--animation-none:focus,
  .e--pointer-text.e--animation-none .elementor-item:before,
  .e--pointer-text.e--animation-none .elementor-item:after,
  .e--pointer-text.e--animation-none .elementor-item:hover,
  .e--pointer-text.e--animation-none .elementor-item:focus {
    -webkit-transition-duration: 0s;
         -o-transition-duration: 0s;
            transition-duration: 0s; }

.elementor-nav-menu--main .elementor-nav-menu a {
  -webkit-transition: 0.4s;
  -o-transition: 0.4s;
  transition: 0.4s; }
  .elementor-nav-menu--main .elementor-nav-menu a, .elementor-nav-menu--main .elementor-nav-menu a:hover, .elementor-nav-menu--main .elementor-nav-menu a:focus, .elementor-nav-menu--main .elementor-nav-menu a.highlighted {
    padding: 13px 20px; }
  .elementor-nav-menu--main .elementor-nav-menu a.current {
    background: #373a3c;
    color: #fff; }
  .elementor-nav-menu--main .elementor-nav-menu a.disabled {
    background: #55595c;
    color: #a1a6a9; }

.elementor-nav-menu--main .elementor-nav-menu ul {
  position: absolute;
  width: 12em;
  border-width: 0;
  border-style: solid;
  padding: 0; }

.elementor-nav-menu--main .elementor-nav-menu span.scroll-up,
.elementor-nav-menu--main .elementor-nav-menu span.scroll-down {
  position: absolute;
  display: none;
  visibility: hidden;
  overflow: hidden;
  background: #fff;
  height: 20px; }

.elementor-nav-menu--main .elementor-nav-menu span.scroll-up-arrow, .elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow, .elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow {
  position: absolute;
  top: -2px;
  left: 50%;
  margin-left: -8px;
  width: 0;
  height: 0;
  overflow: hidden;
  border-width: 8px;
  border-style: dashed dashed solid dashed;
  border-color: transparent transparent #494c4f transparent; }

.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow {
  top: 6px;
  border-style: solid dashed dashed dashed;
  border-color: #494c4f transparent transparent transparent; }

.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow i {
  -webkit-transform: rotate(-90deg);
      -ms-transform: rotate(-90deg);
          transform: rotate(-90deg); }

.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow .e-font-icon-svg {
  height: 1em;
  width: 1em; }

.elementor-nav-menu--layout-horizontal {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-nav-menu--layout-horizontal .elementor-nav-menu {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-nav-menu--layout-horizontal .elementor-nav-menu a {
      white-space: nowrap;
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
    .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex; }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li ul, .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li > .scroll-down {
        top: 100% !important; }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > a {
        -webkit-margin-start: var(--e-nav-menu-horizontal-menu-item-margin);
                margin-inline-start: var(--e-nav-menu-horizontal-menu-item-margin); }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > ul, .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > .scroll-down, .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > .scroll-up {
        left: var(--e-nav-menu-horizontal-menu-item-margin) !important; }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:last-child) > a {
        -webkit-margin-end: var(--e-nav-menu-horizontal-menu-item-margin);
                margin-inline-end: var(--e-nav-menu-horizontal-menu-item-margin); }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:last-child):after {
        content: var(--e-nav-menu-divider-content, none);
        border-left-width: var(--e-nav-menu-divider-width, 2px);
        border-left-style: var(--e-nav-menu-divider-style, solid);
        height: var(--e-nav-menu-divider-height, 35%);
        border-color: var(--e-nav-menu-divider-color, #000);
        -ms-flex-item-align: center;
            align-self: center; }

.elementor-nav-menu__align-right .elementor-nav-menu {
  margin-left: auto;
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor-nav-menu__align-right .elementor-nav-menu--layout-vertical > ul > li > a {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor-nav-menu__align-left .elementor-nav-menu {
  margin-right: auto;
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-nav-menu__align-left .elementor-nav-menu--layout-vertical > ul > li > a {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-nav-menu__align-center .elementor-nav-menu {
  margin-left: auto;
  margin-right: auto;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-nav-menu__align-center .elementor-nav-menu--layout-vertical > ul > li > a {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu {
  width: 100%; }
  .elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1; }
    .elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li > a {
      -webkit-box-pack: center;
          -ms-flex-pack: center;
              justify-content: center; }

.elementor-widget-nav-menu:not(.elementor-nav-menu--toggle) .elementor-menu-toggle {
  display: none; }

.elementor-widget-nav-menu .elementor-widget-container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column; }

.elementor-nav-menu {
  position: relative;
  z-index: 2; }
  .elementor-nav-menu:after {
    content: "\00a0";
    display: block;
    height: 0;
    font: 0px/0 serif;
    clear: both;
    visibility: hidden;
    overflow: hidden; }
  .elementor-nav-menu,
  .elementor-nav-menu ul,
  .elementor-nav-menu li {
    display: block;
    list-style: none;
    margin: 0;
    padding: 0;
    line-height: normal;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
  .elementor-nav-menu ul {
    display: none; }
    .elementor-nav-menu ul ul a,
    .elementor-nav-menu ul ul a:hover,
    .elementor-nav-menu ul ul a:focus,
    .elementor-nav-menu ul ul a:active {
      border-left: 16px solid transparent; }
    .elementor-nav-menu ul ul ul a,
    .elementor-nav-menu ul ul ul a:hover,
    .elementor-nav-menu ul ul ul a:focus,
    .elementor-nav-menu ul ul ul a:active {
      border-left: 24px solid transparent; }
    .elementor-nav-menu ul ul ul ul a,
    .elementor-nav-menu ul ul ul ul a:hover,
    .elementor-nav-menu ul ul ul ul a:focus,
    .elementor-nav-menu ul ul ul ul a:active {
      border-left: 32px solid transparent; }
    .elementor-nav-menu ul ul ul ul ul a,
    .elementor-nav-menu ul ul ul ul ul a:hover,
    .elementor-nav-menu ul ul ul ul ul a:focus,
    .elementor-nav-menu ul ul ul ul ul a:active {
      border-left: 40px solid transparent; }
  .elementor-nav-menu li,
  .elementor-nav-menu a {
    position: relative; }
  .elementor-nav-menu li {
    border-width: 0; }
  .elementor-nav-menu a {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .elementor-nav-menu a, .elementor-nav-menu a:hover, .elementor-nav-menu a:focus {
      padding: 10px 20px;
      line-height: 20px; }
    .elementor-nav-menu a.current {
      background: #373a3c;
      color: #fff; }
    .elementor-nav-menu a.disabled {
      cursor: not-allowed;
      color: #a1a6a9; }
  .elementor-nav-menu .e-plus-icon:before {
    content: '+'; }
  .elementor-nav-menu .sub-arrow {
    line-height: 1;
    padding: 10px 0 10px 10px;
    margin-top: -10px;
    margin-bottom: -10px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .elementor-nav-menu .sub-arrow i {
      pointer-events: none; }
    .elementor-nav-menu .sub-arrow .fa.fa-chevron-down, .elementor-nav-menu .sub-arrow .fas.fa-chevron-down {
      font-size: 0.7em; }
    .elementor-nav-menu .sub-arrow .e-font-icon-svg {
      height: 1em;
      width: 1em; }
      .elementor-nav-menu .sub-arrow .e-font-icon-svg.fa-svg-chevron-down {
        height: 0.7em;
        width: 0.7em; }

.elementor-nav-menu--dropdown .elementor-item:hover, .elementor-nav-menu--dropdown .elementor-item:focus, .elementor-nav-menu--dropdown .elementor-item.highlighted, .elementor-nav-menu--dropdown .elementor-item.elementor-item-active,
.elementor-sub-item:hover,
.elementor-sub-item:focus,
.elementor-sub-item.highlighted,
.elementor-sub-item.elementor-item-active {
  background-color: #55595c;
  color: #fff; }

.elementor-menu-toggle {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  font-size: 22px;
  padding: 0.25em;
  cursor: pointer;
  border: 0 solid;
  border-radius: 3px;
  background-color: rgba(0, 0, 0, 0.05);
  color: #494c4f; }
  .elementor-menu-toggle.elementor-active .elementor-menu-toggle__icon--open {
    display: none; }
  .elementor-menu-toggle:not(.elementor-active) .elementor-menu-toggle__icon--close {
    display: none; }
  .elementor-menu-toggle .e-font-icon-svg {
    fill: #494c4f;
    height: 1em;
    width: 1em; }

.elementor-nav-menu--dropdown {
  background-color: #fff;
  font-size: 13px; }
  .elementor-nav-menu--dropdown-none .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-none .elementor-menu-toggle {
    display: none; }
  .elementor-nav-menu--dropdown.elementor-nav-menu__container {
    margin-top: 10px;
    -webkit-transition: max-height 0.3s, -webkit-transform 0.3s;
    transition: max-height 0.3s, -webkit-transform 0.3s;
    -o-transition: max-height 0.3s, transform 0.3s;
    transition: max-height 0.3s, transform 0.3s;
    transition: max-height 0.3s, transform 0.3s, -webkit-transform 0.3s;
    -webkit-transform-origin: top;
        -ms-transform-origin: top;
            transform-origin: top;
    overflow: auto; }
    .elementor-nav-menu--dropdown.elementor-nav-menu__container .elementor-sub-item {
      font-size: 0.85em; }
  .elementor-nav-menu--dropdown a {
    color: #494c4f; }
    .elementor-nav-menu--dropdown a.current {
      background: #373a3c;
      color: #fff; }
    .elementor-nav-menu--dropdown a.disabled {
      color: #b3b3b3; }

ul.elementor-nav-menu--dropdown a, ul.elementor-nav-menu--dropdown a:hover, ul.elementor-nav-menu--dropdown a:focus {
  text-shadow: none;
  border-left: 8px solid transparent; }

.elementor-nav-menu__text-align-center .elementor-nav-menu--dropdown .elementor-nav-menu a {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-nav-menu--toggle .elementor-menu-toggle:not(.elementor-active) + .elementor-nav-menu__container {
  -webkit-transform: scaleY(0);
      -ms-transform: scaleY(0);
          transform: scaleY(0);
  max-height: 0; }

.elementor-nav-menu--toggle .elementor-menu-toggle.elementor-active + .elementor-nav-menu__container {
  -webkit-transform: scaleY(1);
      -ms-transform: scaleY(1);
          transform: scaleY(1);
  max-height: 100vh; }

.elementor-nav-menu--stretch .elementor-nav-menu__container.elementor-nav-menu--dropdown {
  position: absolute;
  z-index: 9997; }

/**
 * Mobile Hamburger Menu Breakpoint
 */
@media (max-width: 767px) {
  .elementor-nav-menu--dropdown-mobile .elementor-nav-menu--main {
    display: none; } }

@media (min-width: 768px) {
  .elementor-nav-menu--dropdown-mobile .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-mobile .elementor-menu-toggle {
    display: none; } }

/**
 * Mobile Extra Hamburger Menu Breakpoint
 */
@media (max-width: -1px) {
  .elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--main {
    display: none; } }

@media (min-width: -1px) {
  .elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-mobile_extra .elementor-menu-toggle {
    display: none; } }

/**
 * Tablet Hamburger Menu Breakpoint
 */
@media (min-width: 1025px) {
  .elementor-nav-menu--dropdown-tablet .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-tablet .elementor-menu-toggle {
    display: none; } }

@media (max-width: 1024px) {
  .elementor-nav-menu--dropdown-tablet .elementor-nav-menu--main {
    display: none; } }

/**
 * Tablet Extra Hamburger Menu Breakpoint
 */
@media (max-width: -1px) {
  .elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--main {
    display: none; } }

@media (min-width: -1px) {
  .elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-tablet_extra .elementor-menu-toggle {
    display: none; } }

.elementor-gallery__container {
  min-height: 1px; }

.elementor-gallery-item {
  position: relative;
  overflow: hidden;
  display: block;
  text-decoration: none;
  border: solid var(--image-border-width) var(--image-border-color);
  border-radius: var(--image-border-radius); }
  .elementor-gallery-item__overlay, .elementor-gallery-item__content {
    height: 100%;
    width: 100%;
    position: absolute;
    top: 0;
    left: 0; }
  .elementor-gallery-item__overlay {
    mix-blend-mode: var(--overlay-mix-blend-mode);
    -webkit-transition-duration: var(--overlay-transition-duration);
         -o-transition-duration: var(--overlay-transition-duration);
            transition-duration: var(--overlay-transition-duration);
    -webkit-transition-property: mix-blend-mode, opacity, background-color, -webkit-transform;
    transition-property: mix-blend-mode, opacity, background-color, -webkit-transform;
    -o-transition-property: mix-blend-mode, transform, opacity, background-color;
    transition-property: mix-blend-mode, transform, opacity, background-color;
    transition-property: mix-blend-mode, transform, opacity, background-color, -webkit-transform; }
  .elementor-gallery-item__image.e-gallery-image {
    -webkit-transition-duration: var(--image-transition-duration);
         -o-transition-duration: var(--image-transition-duration);
            transition-duration: var(--image-transition-duration);
    -webkit-transition-property: -webkit-filter, -webkit-transform;
    transition-property: -webkit-filter, -webkit-transform;
    -o-transition-property: filter, transform;
    transition-property: filter, transform;
    transition-property: filter, transform, -webkit-filter, -webkit-transform; }
  .elementor-gallery-item__content {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: var(--content-justify-content, center);
        -ms-flex-pack: var(--content-justify-content, center);
            justify-content: var(--content-justify-content, center);
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    text-align: var(--content-text-align);
    padding: var(--content-padding); }
    .elementor-gallery-item__content > div {
      -webkit-transition-duration: var(--content-transition-duration);
           -o-transition-duration: var(--content-transition-duration);
              transition-duration: var(--content-transition-duration); }
    .elementor-gallery-item__content.elementor-gallery--sequenced-animation > div:nth-child(2) {
      -webkit-transition-delay: calc( ( var(--content-transition-delay) / 3 ));
           -o-transition-delay: calc( ( var(--content-transition-delay) / 3 ));
              transition-delay: calc( ( var(--content-transition-delay) / 3 )); }
    .elementor-gallery-item__content.elementor-gallery--sequenced-animation > div:nth-child(3) {
      -webkit-transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 2);
           -o-transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 2);
              transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 2); }
    .elementor-gallery-item__content.elementor-gallery--sequenced-animation > div:nth-child(4) {
      -webkit-transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 3);
           -o-transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 3);
              transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 3); }
  .elementor-gallery-item__description {
    color: var(--description-text-color, #ffffff);
    width: 100%; }
  .elementor-gallery-item__title {
    color: var(--title-text-color, #ffffff);
    font-weight: bold;
    width: 100%; }

.elementor-gallery__titles-container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-pack: var(--titles-container-justify-content, center);
      -ms-flex-pack: var(--titles-container-justify-content, center);
          justify-content: var(--titles-container-justify-content, center);
  margin-bottom: 20px; }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:before {
    background-color: var(--galleries-pointer-bg-color-hover); }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:after {
    background-color: var(--galleries-pointer-bg-color-hover); }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:before {
    background-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:after {
    background-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item:before {
    border-color: var(--galleries-pointer-bg-color-hover);
    border-width: var(--galleries-pointer-border-width); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item:after {
    border-color: var(--galleries-pointer-bg-color-hover); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:before {
    border-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:after {
    border-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:before {
    border-width: 0 0 var(--galleries-pointer-border-width) var(--galleries-pointer-border-width); }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:after {
    border-width: var(--galleries-pointer-border-width) var(--galleries-pointer-border-width) 0 0; }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:before {
    border-width: var(--galleries-pointer-border-width) 0 0 var(--galleries-pointer-border-width); }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:after {
    border-width: 0 var(--galleries-pointer-border-width) var(--galleries-pointer-border-width) 0; }
  .elementor-gallery__titles-container .e--pointer-underline .elementor-item:after,
  .elementor-gallery__titles-container .e--pointer-overline .elementor-item:before,
  .elementor-gallery__titles-container .e--pointer-double-line .elementor-item:before,
  .elementor-gallery__titles-container .e--pointer-double-line .elementor-item:after {
    height: var(--galleries-pointer-border-width); }

.elementor-gallery-title {
  --space-between: 10px;
  cursor: pointer;
  color: #6D7882;
  font-weight: 500;
  position: relative;
  padding: 7px 14px;
  -webkit-transition: all 0.3s;
  -o-transition: all 0.3s;
  transition: all 0.3s; }
  .elementor-gallery-title--active {
    color: #495157; }
  .elementor-gallery-title:not(:last-child) {
    margin-right: var(--space-between); }

.elementor-gallery-item__title + .elementor-gallery-item__description {
  margin-top: var(--description-margin-top); }

.e-gallery-item.elementor-gallery-item {
  -webkit-transition-property: all;
  -o-transition-property: all;
  transition-property: all; }

.e-gallery-item:hover .elementor-gallery__item-overlay-bg {
  opacity: 1; }

.e-gallery-item:hover .elementor-gallery__item-overlay-content {
  opacity: 1; }
  .e-gallery-item:hover .elementor-gallery__item-overlay-content__title, .e-gallery-item:hover .elementor-gallery__item-overlay-content__description {
    opacity: 1; }

.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-right, .e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-left, .e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-top, .e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-bottom {
  opacity: 1; }

a.elementor-item.elementor-gallery-title {
  color: var(--galleries-title-color-normal); }
  a.elementor-item.elementor-gallery-title:hover, a.elementor-item.elementor-gallery-title.elementor-item-active, a.elementor-item.elementor-gallery-title.highlighted, a.elementor-item.elementor-gallery-title:focus {
    color: var(--galleries-title-color-hover); }
  a.elementor-item.elementor-gallery-title.elementor-item-active {
    color: var(--gallery-title-color-active); }

.elementor-widget-table-of-contents .elementor-toc__header-title {
  color: var(--header-color); }

.elementor-widget-table-of-contents.elementor-toc--collapsed .elementor-toc__toggle-button--collapse {
  display: none; }

.elementor-widget-table-of-contents:not(.elementor-toc--collapsed) .elementor-toc__toggle-button--expand {
  display: none; }

.elementor-widget-table-of-contents .elementor-widget-container {
  min-height: var(--box-min-height);
  border: var(--box-border-width, 1px) solid var(--box-border-color, #a4afb7);
  border-radius: var(--box-border-radius, 3px);
  background-color: var(--box-background-color);
  -webkit-transition: min-height 0.4s;
  -o-transition: min-height 0.4s;
  transition: min-height 0.4s;
  overflow: hidden; }

.elementor-toc__header {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  padding: var(--box-padding, 20px);
  background-color: var(--header-background-color);
  border-bottom: var(--separator-width, 1px) solid var(--box-border-color, #a4afb7); }
  .elementor-toc__header-title {
    font-size: 18px;
    margin: 0;
    color: var(--header-color); }

.elementor-toc__toggle-button {
  cursor: pointer;
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex; }
  .elementor-toc__toggle-button i {
    color: var(--toggle-button-color); }
  .elementor-toc__toggle-button svg {
    fill: var(--toggle-button-color);
    height: 1em;
    width: 1em;
    fill: var(--toggle-button-color); }

.elementor-toc__spinner-container {
  text-align: center; }

.elementor-toc__spinner {
  font-size: 2em; }
  .elementor-toc__spinner.e-font-icon-svg {
    height: 1em;
    width: 1em; }

.elementor-toc__body {
  padding: var(--box-padding, 20px);
  max-height: var(--toc-body-max-height);
  overflow-y: auto; }
  .elementor-toc__body::-webkit-scrollbar {
    width: 7px; }
  .elementor-toc__body::-webkit-scrollbar-thumb {
    background-color: #c2cbd2;
    border-radius: 10px; }

.elementor-toc__list-wrapper {
  list-style: none;
  padding: 0; }

.elementor-toc__list-item {
  margin-bottom: 0.5em; }
  .elementor-toc__list-item.elementor-item-active {
    font-weight: bold; }
  .elementor-toc__list-item .elementor-toc__list-wrapper {
    margin-top: 0.5em;
    margin-left: var(--nested-list-indent, 1em); }
  .elementor-toc__list-item-text:hover {
    color: var(--item-text-hover-color);
    -webkit-text-decoration: var(--item-text-hover-decoration);
            text-decoration: var(--item-text-hover-decoration); }
  .elementor-toc__list-item-text.elementor-item-active {
    color: var(--item-text-active-color);
    -webkit-text-decoration: var(--item-text-active-decoration);
            text-decoration: var(--item-text-active-decoration); }
  .elementor-toc__list-item-text-wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .elementor-toc__list-item-text-wrapper i, .elementor-toc__list-item-text-wrapper:before {
      margin-right: 8px;
      color: var(--marker-color); }
    .elementor-toc__list-item-text-wrapper svg {
      margin-right: 8px;
      fill: var(--marker-color);
      height: var(--marker-size, 0.5em);
      width: var(--marker-size, 0.5em); }
    .elementor-toc__list-item-text-wrapper i {
      font-size: var(--marker-size, 0.5em); }
    .elementor-toc__list-item-text-wrapper:before {
      font-size: var(--marker-size, 1em); }

.elementor-toc--content-ellipsis .elementor-toc__list-item-text {
  white-space: nowrap;
  overflow: hidden;
  -o-text-overflow: ellipsis;
     text-overflow: ellipsis; }

.elementor-toc__list-items--collapsible > .elementor-toc__list-wrapper > .elementor-toc__list-item > .elementor-toc__list-wrapper {
  display: none; }

.elementor-toc__heading-anchor {
  position: absolute; }

.elementor-toc__body .elementor-toc__list-item-text {
  color: var(--item-text-color);
  -webkit-text-decoration: var(--item-text-decoration);
          text-decoration: var(--item-text-decoration); }
  .elementor-toc__body .elementor-toc__list-item-text:hover {
    color: var(--item-text-hover-color);
    -webkit-text-decoration: var(--item-text-hover-decoration);
            text-decoration: var(--item-text-hover-decoration); }
  .elementor-toc__body .elementor-toc__list-item-text.elementor-item-active {
    color: var(--item-text-active-color);
    -webkit-text-decoration: var(--item-text-active-decoration);
            text-decoration: var(--item-text-active-decoration); }

ol.elementor-toc__list-wrapper {
  counter-reset: item; }
  ol.elementor-toc__list-wrapper .elementor-toc__list-item {
    counter-increment: item; }
    ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper:before {
      content: counters(item, ".") ". "; }

@media only screen and (max-width: -1px) {
  .elementor-toc--minimized-on-tablet_extra .elementor-toc__body {
    display: none; } }

@media only screen and (max-width: 1024px) {
  .elementor-toc--minimized-on-tablet .elementor-toc__body {
    display: none; } }

@media only screen and (max-width: -1px) {
  .elementor-toc--minimized-on-mobile_extra .elementor-toc__body {
    display: none; } }

@media only screen and (max-width: 767px) {
  .elementor-toc--minimized-on-mobile .elementor-toc__body {
    display: none; } }

.e-lottie__container {
  display: inline-block;
  max-width: var(--lottie-container-max-width);
  width: var(--lottie-container-width);
  opacity: var(--lottie-container-opacity); }
  .e-lottie__container:hover {
    opacity: var(--lottie-container-opacity-hover);
    -webkit-transition-duration: var(--lottie-container-transition-duration-hover);
         -o-transition-duration: var(--lottie-container-transition-duration-hover);
            transition-duration: var(--lottie-container-transition-duration-hover); }
  .e-lottie__container svg,
  .e-lottie__container svg * {
    -webkit-transition: none !important;
    -o-transition: none !important;
    transition: none !important; }

.e-lottie__caption {
  color: var(--caption-color);
  margin-top: var(--caption-margin-top);
  text-align: var(--caption-text-align); }

/* Video_Playlist Widget */
.e-tabs-inner-tabs {
  text-align: left;
  font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
  font-size: 16px; }
  .e-tabs-inner-tabs .e-tab-content {
    padding-top: 32px; }
  .e-tabs-inner-tabs .e-inner-tabs-wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    position: relative;
    overflow: hidden;
    z-index: 1; }
    .e-tabs-inner-tabs .e-inner-tabs-wrapper :after {
      content: '';
      width: 100%;
      height: var(--inner-tabs-border-height, 1px);
      background-color: var(--inner-tabs-border-color, #d5dadf);
      position: absolute;
      bottom: 0;
      z-index: -1; }
    .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title {
      font-weight: 700;
      min-width: 140px;
      line-height: 38px;
      height: 38px;
      -webkit-box-sizing: content-box;
              box-sizing: content-box; }
      .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title a {
        color: #6d7882;
        padding: 0 36px;
        display: block;
        text-align: center; }
      .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active {
        border-bottom: 0 solid transparent;
        border-color: #495157;
        border-width: 0 0 1px 0; }
        .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active a {
          color: #495157; }
  .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title {
    display: none; }
  .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content {
    display: none;
    padding: 20px; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-text {
      color: #556068; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.e-inner-tab-active {
      display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons {
      margin-top: 24px;
      display: none; }
      .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons button {
        display: none;
        font-weight: 500;
        line-height: 24px;
        text-decoration: underline;
        border: none;
        background: transparent;
        padding: 0; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible .e-inner-tab-text {
      overflow: hidden; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button {
      display: none; }
      .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button.show-button {
        display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible.show-inner-tab-buttons .e-inner-tab-buttons {
      display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.show-full-height div.e-inner-tab-text {
      height: auto; }

@media (max-width: 767px) {
  .e-tabs-inner-tabs > .e-tab-content:first-child {
    padding-top: 24px; }
  .e-tabs-inner-tabs .e-inner-tabs-wrapper {
    display: none; }
  .e-tabs-inner-tabs .e-inner-tabs-content-wrapper {
    border-width: 1px 1px 0;
    border-style: solid;
    border-color: #d5dadf; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title {
      border-width: 0 0 1px;
      border-style: solid;
      border-color: #d5dadf;
      font-size: 16px;
      font-weight: 700;
      text-align: center;
      height: 38px;
      line-height: 38px;
      -o-text-overflow: ellipsis;
         text-overflow: ellipsis;
      white-space: nowrap;
      overflow: hidden;
      padding: 0 10px;
      cursor: pointer;
      display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content {
      border-width: 0 0 1px;
      border-style: solid;
      border-color: #d5dadf;
      padding: 20px; } }

.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-direction: row;
          flex-direction: row; }

@media (max-width: 767px) {
  .elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area {
    -webkit-box-orient: vertical;
    -webkit-box-direction: reverse;
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse; } }

.elementor-widget-video-playlist {
  font-family: Roboto, Arial, Helvetica, Verdana, sans-serif; }
  .elementor-widget-video-playlist .e-tabs {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }
  .elementor-widget-video-playlist .e-tabs-main-area {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse;
    height: 434px; }
  .elementor-widget-video-playlist .e-tabs-wrapper {
    height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    width: 33%; }
  .elementor-widget-video-playlist .e-tabs-header {
    background-color: #ffffff;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    padding: 0 16px;
    min-height: 56px;
    border-bottom: 1px solid #d5dadf; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-header-right-side {
      display: -webkit-inline-box;
      display: -ms-inline-flexbox;
      display: inline-flex;
      -ms-flex-negative: 0;
          flex-shrink: 0; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-title {
      font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
      -o-text-overflow: ellipsis;
         text-overflow: ellipsis;
      font-weight: 700;
      font-size: 16px;
      padding: 10px 0;
      overflow-wrap: anywhere;
      -webkit-hyphens: auto;
          -ms-hyphens: auto;
              hyphens: auto;
      margin: auto 0; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count {
      font-size: 14px;
      -ms-flex-negative: 0;
          flex-shrink: 0;
      font-weight: 400;
      line-height: 20px;
      -ms-flex-item-align: start;
          align-self: flex-start;
      padding: 18px 0 0; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button {
      display: none;
      margin: auto 0 auto 8px;
      cursor: pointer;
      padding: 0 4px; }
      .elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button.e-font-icon-svg {
        height: 1em;
        width: 1em; }
    .elementor-widget-video-playlist .e-tabs-header .rotate-up {
      -webkit-transform: rotate(-180deg);
          -ms-transform: rotate(-180deg);
              transform: rotate(-180deg);
      -webkit-transition: .3s;
      -o-transition: .3s;
      transition: .3s; }
    .elementor-widget-video-playlist .e-tabs-header .rotate-down {
      -webkit-transform: rotate(0deg);
          -ms-transform: rotate(0deg);
              transform: rotate(0deg);
      -webkit-transition: .3s;
      -o-transition: .3s;
      transition: .3s; }
  .elementor-widget-video-playlist .e-tabs-items-wrapper {
    background-color: #ffffff;
    overflow: hidden;
    position: relative;
    height: 100%; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom {
      background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(#ffffff));
      background: -webkit-linear-gradient(top, transparent 0%, #ffffff 100%);
      background: -o-linear-gradient(top, transparent 0%, #ffffff 100%);
      background: linear-gradient(180deg, transparent 0%, #ffffff 100%); }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top {
      background: -webkit-gradient(linear, left bottom, left top, from(transparent), to(#ffffff));
      background: -webkit-linear-gradient(bottom, transparent 0%, #ffffff 100%);
      background: -o-linear-gradient(bottom, transparent 0%, #ffffff 100%);
      background: linear-gradient(0deg, transparent 0%, #ffffff 100%); }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items {
      overflow: auto;
      height: 100%; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-section-title {
      border-color: #d5dadf;
      border-width: 1px 0 0 0;
      font-size: 14px;
      height: 36px;
      padding: 0 16px;
      line-height: 36px;
      margin: 0;
      text-align: left;
      -o-text-overflow: ellipsis;
         text-overflow: ellipsis;
      white-space: nowrap;
      overflow: hidden;
      border-width: 0;
      -webkit-box-sizing: content-box;
              box-sizing: content-box; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title {
      background-color: #ffffff;
      border-color: #d5dadf;
      border-width: 0 0 1px 0;
      cursor: pointer;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      font-size: 14px;
      height: 55px;
      line-height: 55px;
      outline: none;
      padding: 0 16px;
      -webkit-box-sizing: content-box;
              box-sizing: content-box; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i {
        text-shadow: 0 0 3px #000000;
        color: #ffffff;
        font-size: var(--playlist-item-icon-size, 16px); }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg {
        text-shadow: 0 0 3px #000000;
        color: #ffffff;
        fill: #ffffff;
        width: var(--playlist-item-icon-size, 16px);
        height: var(--playlist-item-icon-size, 16px); }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg path {
          fill: #ffffff; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover {
        background-color: #f1f3f5;
        border-color: #d5dadf;
        border-width: 0 0 1px 0; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active i, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover i {
          text-shadow: 0 0 3px #000000;
          color: #ffffff; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg {
          text-shadow: 0 0 3px #000000;
          color: #ffffff; }
          .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg path, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg path {
            fill: #ffffff; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active .e-tab-title-text, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover .e-tab-title-text {
          font-size: 14px; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-play,
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched {
        display: -webkit-inline-box;
        display: -ms-inline-flexbox;
        display: inline-flex; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail {
        background-color: #d5dadf;
        position: relative;
        margin: auto 0;
        -ms-flex-negative: 0;
            flex-shrink: 0;
        width: 75px;
        height: 42px; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail img {
          -o-object-fit: fill;
             object-fit: fill;
          width: 75px;
          height: 42px; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail i,
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail svg {
          position: absolute;
          bottom: 4px;
          right: 4px;
          font-weight: 900; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-title-text {
        font-size: 14px;
        margin: auto 8px;
        text-align: left;
        -o-text-overflow: ellipsis;
           text-overflow: ellipsis;
        white-space: nowrap;
        overflow: hidden;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i,
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg {
        margin: auto 0;
        vertical-align: middle; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-duration {
        font-size: 14px;
        margin: auto 0; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched {
        display: none; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-play {
        display: none; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-watched {
        display: block; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top {
      display: none;
      height: 98px;
      position: absolute;
      top: 0;
      width: 100%;
      pointer-events: none;
      background: -webkit-gradient(linear, left bottom, left top, from(transparent), to(#ffffff));
      background: -webkit-linear-gradient(bottom, transparent 0%, #ffffff 100%);
      background: -o-linear-gradient(bottom, transparent 0%, #ffffff 100%);
      background: linear-gradient(0deg, transparent 0%, #ffffff 100%); }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom {
      display: none;
      height: 98px;
      position: absolute;
      bottom: 0;
      width: 100%;
      background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(#ffffff));
      background: -webkit-linear-gradient(top, transparent 0%, #ffffff 100%);
      background: -o-linear-gradient(top, transparent 0%, #ffffff 100%);
      background: linear-gradient(180deg, transparent 0%, #ffffff 100%);
      pointer-events: none; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper.top-shadow .shadow-top {
      display: block; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper.bottom-shadow .shadow-bottom {
      display: block; }
  .elementor-widget-video-playlist .e-tabs-content-wrapper {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    height: 100%;
    position: relative; }
    .elementor-widget-video-playlist .e-tabs-content-wrapper .elementor-custom-embed-image-overlay {
      cursor: pointer;
      text-align: center;
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      -webkit-background-size: cover;
              background-size: cover;
      background-position: 50%; }
    .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-mobile-title {
      display: none; }
    .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content {
      background-color: #000000;
      display: none;
      height: 100%;
      outline: none; }
      .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content > div {
        height: 100%; }
      .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content iframe {
        height: 100%;
        max-height: 100% !important;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex; }
      .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content video {
        height: 100%;
        background-color: #000000; }
  .elementor-widget-video-playlist .e-tabs-inner-tabs .e-tab-content {
    display: none;
    outline: none; }

@media (max-width: 767px) {
  .elementor-widget-video-playlist .e-tabs-main-area {
    -webkit-box-orient: vertical;
    -webkit-box-direction: reverse;
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse;
    height: auto; }
    .elementor-widget-video-playlist .e-tabs-main-area .e-tabs-content-wrapper {
      border: none;
      height: 38%; }
  .elementor-widget-video-playlist .e-tabs-wrapper {
    width: auto;
    height: 62%; }
  .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items {
    max-height: 248px; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items .e-tab-title {
      border: none; }
  .elementor-widget-video-playlist .e-tabs-header {
    min-height: 48px; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button {
      display: -webkit-inline-box;
      display: -ms-inline-flexbox;
      display: inline-flex; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count {
      margin: 0 6px;
      padding: 14px 0 0; }
  .elementor-widget-video-playlist .e-tab-content {
    border: none;
    padding: 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; } }

.elementor-payment-button {
  border: none; }

.elementor-scrolling-tracker {
  --scrolling-track-default-progress-color: #61ce70;
  --scrolling-track-default-color: #eeeeee;
  --scrolling-track-precentage-default-color: $black; }

.elementor-scrolling-tracker-horizontal {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  width: 100%;
  height: var(--horizontal-height, 20px);
  padding: var(--tracker-padding);
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  border-top-width: var(--horizontal-border-top-width, 2px);
  border-right-width: var(--horizontal-border-right-width, 2px);
  border-bottom-width: var(--horizontal-border-bottom-width, 2px);
  border-left-width: var(--horizontal-border-left-width, 2px);
  border-style: var(--horizontal-border-style);
  border-color: var(--horizontal-border-color);
  border-radius: var(--border-radius);
  background-color: var(--scrolling-track-default-color);
  direction: var(--direction); }
  .elementor-scrolling-tracker-horizontal .current-progress {
    display: none;
    height: 100%;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    position: relative;
    border-radius: var(--progress-border-radius);
    border-top-width: var(--horizontal-progress-border-top-width, 2px);
    border-right-width: var(--horizontal-progress-border-right-width, 2px);
    border-bottom-width: var(--horizontal-progress-border-bottom-width, 2px);
    border-left-width: var(--horizontal-progress-border-left-width, 2px);
    border-style: var(--horizontal-progress-border);
    border-color: var(--horizontal-progress-border-color);
    background-color: var(--scrolling-track-default-progress-color); }
    .elementor-scrolling-tracker-horizontal .current-progress .current-progress-percentage {
      inset-inline-end: 0.5em;
      inset-inline-start: auto;
      position: absolute;
      direction: var(--text-direction);
      color: var(--percentage-color, var(--scrolling-track-precentage-default-color)); }

.elementor-scrolling-tracker-circular {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  width: var(--circular-width, 100px);
  height: var(--circular-height, 100px);
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  position: relative;
  -webkit-margin-start: 0;
          margin-inline-start: 0;
  -webkit-margin-end: auto;
          margin-inline-end: auto; }
  .elementor-scrolling-tracker-circular .current-progress-percentage {
    position: absolute;
    color: var(--percentage-color, var(--scrolling-track-precentage-default-color)); }
  .elementor-scrolling-tracker-circular svg {
    position: absolute; }
  .elementor-scrolling-tracker-circular .current-progress {
    display: none;
    -webkit-transform: rotate(-90deg);
        -ms-transform: rotate(-90deg);
            transform: rotate(-90deg);
    -webkit-transform-origin: 50% 50%;
        -ms-transform-origin: 50% 50%;
            transform-origin: 50% 50%;
    stroke: var(--circular-color, var(--scrolling-track-default-progress-color));
    fill: transparent;
    stroke-width: var(--circular-progress-width, 4px); }
  .elementor-scrolling-tracker-circular .circle {
    stroke: var(--circular-background-color, var(--scrolling-track-default-color));
    fill: transparent;
    stroke-width: var(--circular-background-width, 4px); }

.elementor-scrolling-tracker-alignment-left {
  margin-left: 0;
  margin-right: auto; }

.elementor-scrolling-tracker-alignment-center {
  margin-left: auto;
  margin-right: auto; }

.elementor-scrolling-tracker-alignment-right {
  margin-left: auto;
  margin-right: 0; }
/*# sourceMappingURL=frontend.css.map */assets/css/app-rtl.min.css000064400000023366150755004320011524 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
:root{--color-box-shadow-color:rgba(0,0,0,0.05)}.eps-theme-dark{--color-box-shadow-color:rgba(0,0,0,0.1)}:root{--eps-meta-icon-color:#c2cbd2}.eps-theme-dark{--eps-meta-icon-color:#b4b5b7}.e-site-template__meta-data{-webkit-margin-start:.625rem;margin-inline-start:.625rem;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;font-size:.6875rem}.e-site-template__meta-data:last-of-type{-webkit-margin-end:auto;margin-inline-end:auto}.e-site-template__meta-data:first-of-type{-webkit-margin-start:1rem;margin-inline-start:1rem}.e-site-template__meta-data .eps-icon{-webkit-margin-end:.3125rem;margin-inline-end:.3125rem;color:var(--eps-meta-icon-color);font-size:.8125rem}.e-site-template__placeholder .eps-card__image{-webkit-filter:var(--placeholder-filter,none);filter:var(--placeholder-filter,none)}.e-site-template__overlay-preview{padding-top:calc(var(--card-image-aspect-ratio, 95.6%) - 1.875rem);position:relative}.e-site-template__overlay-preview-button{font-weight:700;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;height:1.875rem;width:100%;background-color:var(--card-background-color-hover);-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-top:.625rem;line-height:1.25rem;--button-background-color:var(--card-headline-color)}.e-site-template__overlay-preview-button:before{content:"";position:absolute;display:block;width:100%;top:0;left:0;padding-top:calc(var(--card-image-aspect-ratio, 95.6%) - 1.875rem)}.e-site-template__overlay-preview-button>:not(:first-child){-webkit-margin-start:.3125rem;margin-inline-start:.3125rem}.e-site-template__edit-btn{-webkit-margin-end:1.25rem;margin-inline-end:1.25rem}.e-site-template__edit-btn .eps-icon,.e-site-template__instances .eps-icon{-webkit-margin-end:.3125rem;margin-inline-end:.3125rem}.e-site-template__instances .eps-icon{color:var(--eps-meta-icon-color);font-size:.8125rem}.e-site-template__instances-list{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.e-site-template__edit-conditions{-webkit-margin-start:1rem;margin-inline-start:1rem;color:#58d0f5;text-decoration:underline;font-style:italic}.e-site-template--extended .eps-card__figure{overflow:auto}.e-site-template--extended .eps-card__headline{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.e-site-template--wide{--card-image-aspect-ratio:calc(100% * 0.1235)}.eps-add-new__overlay{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;opacity:1;--card-image-overlay-background-color:transparent}.e-site-editor__templates .page-header{margin-bottom:.625rem}.e-site-editor__templates .eps-separator{margin-bottom:2.75rem}:root{--e-site-editor-conditions-row-controls-background:#fff;--e-site-editor-input-wrapper-border-color:#f1f3f5;--e-site-editor-input-wrapper-select-color:#556068;--e-site-editor-add-button-background-color:#a4afb7;--e-site-editor-add-button-color-hover-background-color:#6d7882;--e-site-editor-input-wrapper-condition-include-background-color:#a4afb7;--e-site-editor-input-wrapper-condition-exclude-background-color:#c2cbd2;--e-site-editor-input-select2-search-field-color:#495157}.eps-theme-dark{--select2-selection-background-color:tints(600);--e-site-editor-conditions-row-controls-background:#404349;--e-site-editor-input-wrapper-border-color:#404349;--e-site-editor-input-wrapper-select-color:#b4b5b7;--e-site-editor-add-button-background-color:#4c4f56;--e-site-editor-add-button-color-hover-background-color:#404349;--e-site-editor-input-wrapper-condition-include-background-color:#404349;--e-site-editor-input-wrapper-condition-exclude-background-color:#404349;--e-site-editor-input-select2-search-field-color:#fff}.e-site-editor-conditions__header{text-align:center}.e-site-editor-conditions__header-image{display:block;margin:0 auto 2.75rem;width:4.375rem}.e-site-editor-conditions__rows{margin:2.75rem auto;max-width:43.75rem}.e-site-editor-conditions__row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-top:.75rem}.e-site-editor-conditions__remove-condition{color:#c2cbd2;font-size:1.125rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.e-site-editor-conditions__row-controls{overflow:hidden;margin-left:.625rem;background-color:var(--e-site-editor-conditions-row-controls-background);display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-shadow:0 3px 6px var(--color-box-shadow-color);box-shadow:0 3px 6px var(--color-box-shadow-color);border-radius:.1875rem}.e-site-editor-conditions__row-controls--error{border:1px solid #b01b1b}.e-site-editor-conditions__conflict{text-align:center;margin-top:.3125rem;color:#b01b1b}.e-site-editor-conditions__row-controls-inner{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.e-site-editor-conditions__row-controls-inner div{-webkit-box-flex:1;-ms-flex:1;flex:1}.e-site-editor-conditions__add-button-container{text-align:center}.e-site-editor-conditions__add-button{margin-top:2.75rem;background-color:var(--e-site-editor-add-button-background-color);color:#fff;text-transform:uppercase}.e-site-editor-conditions__add-button:hover{background-color:var(--e-site-editor-add-button-color-hover-background-color);color:#fff}.e-site-editor-conditions__footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;position:absolute;bottom:0;right:0;left:0;padding:.5rem;border-top:1px solid var(--hr-color)}.e-site-editor-conditions__input-wrapper{position:relative;border-left-color:var(--e-site-editor-input-wrapper-border-color);border-bottom-color:var(--e-site-editor-input-wrapper-border-color);border-right:1px solid;border-right-color:var(--e-site-editor-input-wrapper-border-color);border-top-color:var(--e-site-editor-input-wrapper-border-color)}.e-site-editor-conditions__input-wrapper:first-child{border:none}.e-site-editor-conditions__input-wrapper select{-moz-appearance:none;appearance:none;-webkit-appearance:none;font-size:.75rem;height:2.5rem;border-width:0;padding:0 .625rem;width:100%;position:relative;color:var(--e-site-editor-input-wrapper-select-color);outline:none;background:transparent}.e-site-editor-conditions__input-wrapper:after{font-family:eicons;content:"\e8ad";font-size:.75rem;pointer-events:none;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);left:.625rem}.e-site-editor-conditions__input-wrapper .select2-container--default .select2-selection--single{border:none;line-height:2.5rem}.e-site-editor-conditions__input-wrapper .select2-container--default .select2-selection--single .select2-selection__rendered{line-height:2.5rem;font-size:.75rem}.e-site-editor-conditions__input-wrapper .select2-selection{outline:none;background:transparent;height:2.5rem}.e-site-editor-conditions__input-wrapper .select2-selection__arrow{display:none}.e-site-editor-conditions__input-wrapper--condition-type{position:relative}.e-site-editor-conditions__input-wrapper--condition-type:before{font-family:eicons;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:.75rem;font-size:.9375rem;color:#fff;pointer-events:none;z-index:1000}.e-site-editor-conditions__input-wrapper--condition-type:after{color:#fff}.e-site-editor-conditions__input-wrapper--condition-type select{text-transform:uppercase;padding-right:2.125rem;width:7.5rem;font-size:.75rem;color:#fff}.e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type=include]:before{content:"\e8cc"}.e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type=include] select{background-color:var(--e-site-editor-input-wrapper-condition-include-background-color)}.e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type=exclude]:before{content:"\e8cd"}.e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type=exclude] select{background-color:var(--e-site-editor-input-wrapper-condition-exclude-background-color)}.select2-search__field{background-color:transparent;color:var(--e-site-editor-input-select2-search-field-color)}.eps-back-button{font-size:14px;margin-bottom:1.5rem}.eps-back-button .eps-icon{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}:root{--indicator-bullet-border-color:#fff}.eps-theme-dark{--indicator-bullet-border-color:#4c4f56}.eps-indicator-bullet{display:block;-ms-flex-negative:0;flex-shrink:0;width:.75rem;height:.75rem;-webkit-box-shadow:0 2px 3px 1px var(--color-box-shadow-color);box-shadow:0 2px 3px 1px var(--color-box-shadow-color);background-color:#d5dadf;border:2px solid var(--indicator-bullet-border-color);border-radius:100%;-webkit-margin-end:.625rem;margin-inline-end:.625rem}.eps-indicator-bullet--active{background-color:#39b54a}.site-editor__preview-iframe{height:50vh;position:relative}.site-editor__preview-iframe__iframe{top:0;left:0;position:absolute;border:none;-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;height:100%}.site-editor__preview-iframe--footer,.site-editor__preview-iframe--header{height:15vh}.e-site-editor__content_container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100%;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.e-site-editor__content_container_main{-webkit-box-flex:1;-ms-flex:1;flex:1}.e-site-editor__content_container_secondary{margin:0 auto;padding-top:2.75rem}assets/css/widget-flip-box-rtl.min.css000064400000023211150755004320013732 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-flip-box{height:280px;position:relative;-webkit-perspective:1000px;perspective:1000px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}@media (max-device-width:1024px){.elementor-flip-box{cursor:pointer}}.elementor-flip-box__front{background-color:#1abc9c}.elementor-flip-box__back{background-color:#4054b2;display:block}.elementor-flip-box__layer{position:absolute;width:100%;height:100%;-webkit-transition:all .6s ease-in-out;-o-transition:all .6s ease-in-out;transition:all .6s ease-in-out}.elementor-flip-box__layer__overlay{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;text-align:center;padding:35px;color:#fff}.elementor-flip-box__layer__title{font-size:21px}.elementor-flip-box__layer__description{font-size:14px}.elementor-flip-box__layer__description:not(:last-child),.elementor-flip-box__layer__title:not(:last-child){margin:0 0 20px;padding:0}.elementor-flip-box__layer__title{line-height:1;font-weight:600}.elementor-flip-box,.elementor-flip-box .elementor-view-framed,.elementor-flip-box .elementor-view-stacked{--e-flip-box-view-framed-stacked-icon-color:#fff}.elementor-flip-box .elementor-icon,.elementor-flip-box .elementor-view-framed .elementor-icon,.elementor-flip-box .elementor-view-stacked .elementor-icon{color:var(--e-flip-box-view-framed-stacked-icon-color)}.elementor-flip-box .elementor-icon svg,.elementor-flip-box .elementor-view-framed .elementor-icon svg,.elementor-flip-box .elementor-view-stacked .elementor-icon svg{fill:var(--e-flip-box-view-framed-stacked-icon-color)}.elementor-flip-box .elementor-view-framed .elementor-icon{border-color:#fff}.elementor-flip-box .elementor-view-stacked .elementor-icon{background-color:rgba(0,0,0,.5)}.elementor-flip-box__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-flip-box__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-flip-box__image{margin:0 0 20px;display:inline-block;width:100%}.elementor-flip-box__image img{width:50%}.elementor-flip-box .elementor-icon-wrapper{margin-bottom:20px}.elementor-flip-box--3d .elementor-flip-box__layer__inner{-webkit-transform:translateZ(90px) scale(.91);transform:translateZ(90px) scale(.91)}.elementor-flip-box--3d .elementor-flip-box__layer__overlay{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(.1px);transform:translateZ(.1px)}.elementor-flip-box--effect-flip .elementor-flip-box{-webkit-perspective:1000px;perspective:1000px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.elementor-flip-box--effect-flip .elementor-flip-box__layer{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-flip-box--effect-flip .elementor-flip-box__front{-webkit-transform:none;-ms-transform:none;transform:none;z-index:1}.elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box__back{-webkit-transform:rotateX(0) rotateY(-180deg);transform:rotateX(0) rotateY(-180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box__back,.elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(0) rotateY(180deg);transform:rotateX(0) rotateY(180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(0) rotateY(-180deg);transform:rotateX(0) rotateY(-180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box__back{-webkit-transform:rotateX(-180deg) rotateY(0);transform:rotateX(-180deg) rotateY(0)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box__back,.elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(180deg) rotateY(0);transform:rotateX(180deg) rotateY(0)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(-180deg) rotateY(0);transform:rotateX(-180deg) rotateY(0)}.elementor-flip-box--effect-push .elementor-flip-box__front{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(100%) translateY(0);-ms-transform:translateX(100%) translateY(0);transform:translateX(100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(-100%) translateY(0);-ms-transform:translateX(-100%) translateY(0);transform:translateX(-100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(0) translateY(-100%);-ms-transform:translateX(0) translateY(-100%);transform:translateX(0) translateY(-100%)}.elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(0) translateY(100%);-ms-transform:translateX(0) translateY(100%);transform:translateX(0) translateY(100%)}.elementor-flip-box--effect-push .elementor-flip-box,.elementor-flip-box--effect-slide .elementor-flip-box{overflow:hidden}.elementor-flip-box--effect-push .elementor-flip-box:hover .elementor-flip-box__back,.elementor-flip-box--effect-slide .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-right .elementor-flip-box__back{-webkit-transform:translateX(-100%) translateY(0);-ms-transform:translateX(-100%) translateY(0);transform:translateX(-100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-left .elementor-flip-box__back{-webkit-transform:translateX(100%) translateY(0);-ms-transform:translateX(100%) translateY(0);transform:translateX(100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-up .elementor-flip-box__back{-webkit-transform:translateX(0) translateY(100%);-ms-transform:translateX(0) translateY(100%);transform:translateX(0) translateY(100%)}.elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-down .elementor-flip-box__back{-webkit-transform:translateX(0) translateY(-100%);-ms-transform:translateX(0) translateY(-100%);transform:translateX(0) translateY(-100%)}.elementor-flip-box--effect-zoom-out .elementor-flip-box .elementor-flip-box__front{-webkit-transition:opacity .35s,width .1ms,-webkit-transform .7s;transition:opacity .35s,width .1ms,-webkit-transform .7s;-o-transition:transform .7s,opacity .35s,width .1ms;transition:transform .7s,opacity .35s,width .1ms;transition:transform .7s,opacity .35s,width .1ms,-webkit-transform .7s;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);z-index:1;width:100%}.elementor-flip-box--effect-zoom-out .elementor-flip-box:hover .elementor-flip-box__front{width:0;opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7);-webkit-transition:opacity .7s .1s,width .1ms .7s,-webkit-transform .8s;transition:opacity .7s .1s,width .1ms .7s,-webkit-transform .8s;-o-transition:transform .8s,opacity .7s .1s,width .1ms .7s;transition:transform .8s,opacity .7s .1s,width .1ms .7s;transition:transform .8s,opacity .7s .1s,width .1ms .7s,-webkit-transform .8s}.elementor-flip-box--effect-zoom-in .elementor-flip-box .elementor-flip-box__back{-webkit-transition:opacity .5s .2s,-webkit-transform .7s;transition:opacity .5s .2s,-webkit-transform .7s;-o-transition:transform .7s,opacity .5s .2s;transition:transform .7s,opacity .5s .2s;transition:transform .7s,opacity .5s .2s,-webkit-transform .7s;opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}.elementor-flip-box--effect-zoom-in .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transition:opacity .5s,-webkit-transform .7s;transition:opacity .5s,-webkit-transform .7s;-o-transition:transform .7s,opacity .5s;transition:transform .7s,opacity .5s;transition:transform .7s,opacity .5s,-webkit-transform .7s;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-flip-box--effect-fade .elementor-flip-box .elementor-flip-box__back{opacity:0}.elementor-flip-box--effect-fade .elementor-flip-box:hover .elementor-flip-box__back{opacity:1}.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__front{display:none}.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}assets/css/widget-payments.min.css000064400000000121150755004320013246 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-payment-button{border:none}assets/css/widget-blockquote-rtl.min.css000064400000013264150755004320014371 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
@charset "UTF-8";.entry-content blockquote.elementor-blockquote:not(.alignright):not(.alignleft),.entry-summary blockquote.elementor-blockquote{margin-right:0;margin-left:0}.elementor-widget-blockquote blockquote{margin:0;padding:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;quotes:none;border:0;font-style:normal;color:#55595c}.elementor-widget-blockquote blockquote:after,.elementor-widget-blockquote blockquote:before,.elementor-widget-blockquote blockquote cite:after,.elementor-widget-blockquote blockquote cite:before,.elementor-widget-blockquote blockquote footer:after,.elementor-widget-blockquote blockquote footer:before{content:"";content:none}.elementor-blockquote{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-blockquote__author,.elementor-blockquote__content{margin-bottom:0;font-style:normal}.elementor-blockquote__author{font-weight:700}.elementor-blockquote footer{margin-top:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-blockquote__tweet-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;color:#1da1f2;-ms-flex-item-align:end;align-self:flex-end;line-height:1;position:relative;width:-webkit-max-content;width:-moz-max-content;width:max-content}.elementor-blockquote__tweet-button:hover{color:#0967a0}.elementor-blockquote__tweet-button span{font-weight:600}.elementor-blockquote__tweet-button i,.elementor-blockquote__tweet-button span{vertical-align:middle}.elementor-blockquote__tweet-button i+span,.elementor-blockquote__tweet-button svg+span{margin-right:.5em}.elementor-blockquote__tweet-button svg{fill:#1da1f2;height:1em;width:1em}.elementor-blockquote__tweet-label{white-space:pre-wrap}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button{padding:.7em 1.2em;border-radius:100em;background-color:#1da1f2;color:#fff;font-size:15px}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover{background-color:#0967a0;color:#fff}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover:before,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover:before{border-left-color:#0967a0}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button svg,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button svg{fill:#fff;height:1em;width:1em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button{padding:0;width:2em;height:2em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:before{content:"";border:.5em solid transparent;border-left-color:#1da1f2;position:absolute;right:-.8em;top:50%;-webkit-transform:translateY(-50%) scaleY(.65);-ms-transform:translateY(-50%) scaleY(.65);transform:translateY(-50%) scaleY(.65);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:before{right:auto;left:-.8em;border-right-color:#1da1f2;border-left-color:transparent}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:hover:before{border-right-color:#0967a0}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:before{left:auto;right:-.8em;border-right-color:transparent;border-left-color:#1da1f2}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:hover:before{border-left-color:#0967a0}.elementor-blockquote--skin-boxed .elementor-blockquote{background-color:#e6e9ec;padding:30px}.elementor-blockquote--skin-border .elementor-blockquote{border-color:#e6e9ec;border-right:7px #e6e9ec;border-style:solid;padding-right:20px}.elementor-blockquote--skin-quotation .elementor-blockquote:before{content:"“";font-size:100px;color:#e6e9ec;font-family:Times New Roman,Times,serif;font-weight:900;line-height:1;display:block;height:.6em}.elementor-blockquote--skin-quotation .elementor-blockquote__content{margin-top:15px}.elementor-blockquote--align-left .elementor-blockquote__content{text-align:left}.elementor-blockquote--align-left .elementor-blockquote footer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-blockquote--align-right .elementor-blockquote__content{text-align:right}.elementor-blockquote--align-right .elementor-blockquote footer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-blockquote--align-center .elementor-blockquote{text-align:center}.elementor-blockquote--align-center .elementor-blockquote__author,.elementor-blockquote--align-center .elementor-blockquote footer{display:block}.elementor-blockquote--align-center .elementor-blockquote__tweet-button{margin-right:auto;margin-left:auto}assets/css/widget-sticky.min.css000064400000000120150755004320012713 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-sticky--active{z-index:99}assets/css/widget-social-rtl.min.css000064400000000545150755004320013471 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-facebook-widget.fb_iframe_widget,.elementor-facebook-widget.fb_iframe_widget span{width:100%!important}.elementor-facebook-widget.fb_iframe_widget iframe{position:relative;width:100%!important}.elementor-facebook-widget.fb-like{height:1px}.elementor-widget-facebook-comments iframe{width:100%!important}assets/css/widget-countdown.min.css000064400000002750150755004320013440 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-widget-countdown .elementor-countdown-expire--message{display:none;padding:20px;text-align:center}.elementor-widget-countdown .elementor-countdown-wrapper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-widget-countdown .elementor-countdown-item{padding:20px 0;text-align:center;color:#fff}.elementor-widget-countdown .elementor-countdown-digits,.elementor-widget-countdown .elementor-countdown-label{line-height:1}.elementor-widget-countdown .elementor-countdown-digits{font-size:69px}.elementor-widget-countdown .elementor-countdown-label{font-size:19px}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:auto;margin-left:auto}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-digits,.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-label{display:block}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-widget-countdown.elementor-countdown--label-inline{text-align:center}.elementor-widget-countdown.elementor-countdown--label-inline .elementor-countdown-item{display:inline-block;padding-left:5px;padding-right:5px}assets/css/editor.min.css000064400000036661150755004320011435 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
#elementor-panel-get-pro-elements{display:none}.elementor-panel .elementor-control .e-control-error{color:#b01b1b}.elementor-panel .elementor-control.forms-field-shortcode .elementor-control-content{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row;flex-flow:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-panel .elementor-control.forms-field-shortcode .elementor-control-title{width:45%}.elementor-panel .elementor-control.forms-field-shortcode .elementor-control-raw-html{width:55%}#elementor-widget-template-empty-templates{margin-top:15px;text-align:center}.elementor-widget-template-empty-templates-title{padding:25px 0 30px}.elementor-widget-template-empty-templates-icon{font-size:96px;color:#d5dadf}.elementor-widget-template-empty-templates-footer{color:#a4afb7;font-size:13px;font-style:italic;margin-bottom:15px}.elementor-widget-template-empty-templates-footer a{color:#a4afb7}#elementor-panel-global-widget{height:100%}#elementor-panel-global-widget>*{background-color:#fff}#elementor-global-widget-locked-header{-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1)}#elementor-global-widget-locked-header.elementor-nerd-box{padding:40px 25px}#elementor-global-widget-locked-header.elementor-nerd-box .elementor-nerd-box-icon{margin-top:20px}#elementor-global-widget-locked-tools{margin-top:15px;padding:0 20px}.elementor-global-widget-locked-tool{display:-webkit-box;display:-ms-flexbox;display:flex;padding:20px 0;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-global-widget-locked-tool .elementor-button{text-transform:uppercase;color:#fff;padding:8px 0;width:70px;font-weight:600}.elementor-global-widget-locked-tool-description{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}#elementor-global-widget-locked-unlink{border-top:1px solid #e6e9ec}#elementor-global-templates .elementor-element{position:relative}#elementor-global-templates .elementor-element:before{position:absolute;font-family:eicons;content:"\e91f";top:5px;left:5px;color:#fcb92c;font-size:10px}#elementor-global-widget-loading{position:absolute;top:0;left:0;height:100%;width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}#elementor-global-widget-loading:not(.elementor-hidden){display:-webkit-box;display:-ms-flexbox;display:flex}#elementor-global-widget-loading i{color:#d5dadf;font-size:50px}.elementor-panel .elementor-control-type-fields_map .elementor-repeater-fields{margin:10px 0}.elementor-panel .elementor-control-type-fields_map .elementor-repeater-fields .elementor-control{padding:0}.elementor-panel .elementor-control-type-fields_map .elementor-repeater-fields:last-child{margin-bottom:0}.elementor-repeater-row--form-step .elementor-repeater-row-tools:hover{background-color:#c2cbd2}.elementor-repeater-row--form-step .elementor-repeater-row-tools div:not(.elementor-repeater-row-handle-sortable){background-color:#f1f3f5}.elementor-repeater-row--form-step .elementor-repeater-row-tools div:not(.elementor-repeater-row-handle-sortable):hover{background-color:#e6e9ec}.elementor-facebook-widget.fb_iframe_widget,.elementor-facebook-widget.fb_iframe_widget span{width:100%!important}.elementor-facebook-widget.fb_iframe_widget iframe{position:relative;width:100%!important}.elementor-facebook-widget.fb-like{height:1px}.elementor-widget-facebook-comments iframe{width:100%!important}#elementor-publish{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex}#elementor-publish__modal .dialog-message{padding:0}#elementor-publish__modal .dialog-buttons-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex}#elementor-publish__modal .dialog-publish{-webkit-transition-property:opacity,-webkit-box-shadow;transition-property:opacity,-webkit-box-shadow;-o-transition-property:box-shadow,opacity;transition-property:box-shadow,opacity;transition-property:box-shadow,opacity,-webkit-box-shadow}#elementor-publish__modal .dialog-publish:not(.elementor-button-success){text-decoration:underline;color:#a4afb7;font-weight:400;width:110px;background-color:transparent}#elementor-publish__modal .dialog-publish:not(.elementor-button-success):hover{color:#6d7882}#elementor-publish__tabs{padding-top:50px}@media (max-width:1439px){#elementor-publish__tabs{width:28%}}#elementor-publish__screen{overflow:auto;padding:50px}.elementor-publish__tab{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;height:110px;padding:20px 15px;cursor:pointer}.elementor-publish__tab.elementor-active{background-color:#fff;-webkit-box-shadow:0 6px 20px rgba(0,0,0,.07);box-shadow:0 6px 20px rgba(0,0,0,.07)}.elementor-publish__tab.elementor-active:after{content:"";position:absolute;top:0;left:0;height:100%;width:5px;background-color:#71d7f7}.elementor-publish__tab__image{width:50px;-ms-flex-negative:0;flex-shrink:0}.elementor-publish__tab__image img{width:100%}.elementor-publish__tab__content{text-align:left;padding-left:15px}.elementor-publish__tab__title{font-size:18px;color:#556068;font-weight:700}#elementor-theme-builder-conditions{margin:40px 0 60px}#elementor-theme-builder-conditions-view{overflow:hidden}#elementor-theme-builder-conditions .elementor-control{background-color:transparent;padding:0}#elementor-theme-builder-conditions .elementor-control:before{content:none}#elementor-theme-builder-conditions .elementor-control select{border-width:0;height:40px;padding:0 14px}#elementor-theme-builder-conditions .elementor-control-type-query{width:100px}#elementor-theme-builder-conditions .elementor-control-type-select .elementor-control-input-wrapper:after{right:10px;color:#495157}#elementor-theme-builder-conditions .elementor-control-type{width:120px}#elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type=include]{background-color:#a4afb7}#elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type=include] .elementor-control-input-wrapper:before{content:"\e8cc"}#elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type=exclude]{background-color:#c2cbd2}#elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type=exclude] .elementor-control-input-wrapper:before{content:"\e8cd"}#elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type=exclude] select,#elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type=include] select{color:#fff;text-transform:uppercase;padding-left:33px}#elementor-theme-builder-conditions .elementor-control-type .elementor-control-input-wrapper:before{font-family:eicons;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);left:13px;font-size:15px;color:#fff}#elementor-theme-builder-conditions .elementor-control-type .elementor-control-input-wrapper:after{color:#fff}#elementor-theme-builder-conditions .elementor-control-type-select{background-color:#fff}#elementor-theme-builder-conditions .elementor-control-type option{color:#495157}#elementor-theme-builder-conditions .elementor-theme-builder-conditions-repeater-row-controls{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-right:10px;width:70%;-webkit-box-shadow:0 2px 12px rgba(0,0,0,.08);box-shadow:0 2px 12px rgba(0,0,0,.08);overflow:hidden;border-radius:3px}#elementor-theme-builder-conditions .elementor-theme-builder-conditions-repeater-row-controls .elementor-control:not(:first-child){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-left:1px}#elementor-theme-builder-conditions .elementor-theme-builder-conditions-repeater-row-controls .elementor-control:not(:first-child) select{border-radius:0}#elementor-theme-builder-conditions .elementor-repeater-fields-wrapper{max-width:700px;width:100%;margin:auto}#elementor-theme-builder-conditions .elementor-repeater-fields{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-top:10px}#elementor-theme-builder-conditions .elementor-control-field{display:block}#elementor-theme-builder-conditions .elementor-control-spinner,#elementor-theme-builder-conditions .elementor-control-title{display:none}#elementor-theme-builder-conditions .elementor-control-input-wrapper{width:100%;max-width:none}#elementor-theme-builder-conditions .select2-selection{height:40px;border:none;border-radius:0}#elementor-theme-builder-conditions .select2-selection__rendered{line-height:40px;padding-left:15px;text-align:left}#elementor-theme-builder-conditions .select2-selection__arrow{height:30px}#elementor-theme-builder-conditions .select2-selection__arrow b{border-top-color:#495157;border-width:4px 4px 0;margin-top:2px;margin-left:-7px}#elementor-theme-builder-conditions .elementor-repeater-tool-remove{font-size:18px;cursor:pointer;color:#a4afb7}#elementor-theme-builder-conditions .elementor-button-wrapper{margin-top:50px}#elementor-theme-builder-conditions .elementor-repeater-add{font-size:14px;padding:12px 26px}.elementor-error .elementor-theme-builder-conditions-repeater-row-controls{border:1px solid rgba(176,27,27,.5)}.elementor-conditions-conflict-message{margin-top:10px;font-size:11px;color:#b01b1b;text-align:left;padding-left:90px}.elementor-conditions-conflict-message a{color:#b01b1b}.elementor-panel-footer-theme-builder-buttons-wrapper .elementor-panel-footer-sub-menu{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-panel-footer-theme-builder-buttons-wrapper .elementor-panel-footer-sub-menu-item{display:inline-block}.elementor-panel-footer-theme-builder-buttons-wrapper .elementor-panel-footer-sub-menu-item i{margin-right:5px}.elementor-panel-footer-theme-builder-buttons-wrapper .elementor-panel-footer-sub-menu-item>*{display:inline-block;line-height:40px}.elementor-conditions-select2-dropdown{border:none;border-radius:0}.elementor-conditions-select2-dropdown .select2-results__message{display:none}.elementor-conditions-select2-dropdown .select2-search--dropdown .select2-search__field{border-width:0 0 1px;border-radius:0}#elementor-toast.e-theme-builder-save-toaster .dialog-buttons-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#elementor-toast.e-theme-builder-save-toaster .dialog-buttons-message{text-align:center}#elementor-toast.e-theme-builder-save-toaster .dialog-button{border-radius:3px;text-align:center;font-size:12px;color:#fff;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:27px;background-color:#6d7882;margin:0}#elementor-toast.e-theme-builder-save-toaster .dialog-button:hover{background-color:#39b54a}#elementor-toast.e-theme-builder-save-toaster .dialog-button i{margin-right:5px}#elementor-toast.e-theme-builder-save-toaster .dialog-open_site_editor{margin-bottom:10px}.elementor-control.elementor-control-sitemap_items.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title span{text-transform:capitalize}.elementor-editor-popup .elementor-tab-control-settings a:before{content:"\e922"}#elementor-publish .elementor-popup__display-settings .elementor-control-type-slider .elementor-control-input-wrapper{width:150px}#elementor-publish .elementor-popup__display-settings .elementor-control-input-wrapper{width:80px;max-width:100%}.elementor-popup__display-settings{text-align:left}.elementor-popup__display-settings_controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:60px;background-color:#fff;margin-bottom:10px;padding-right:20px;-webkit-box-shadow:0 6px 20px rgba(0,0,0,.07);box-shadow:0 6px 20px rgba(0,0,0,.07);border-radius:3px}.elementor-popup__display-settings_controls_group:not(.elementor-active) .elementor-control:nth-child(2) h3{color:#a4afb7}.elementor-popup__display-settings_controls_group__icon{width:60px;height:60px;border-right:1px solid #e6e9ec;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-popup__display-settings_controls_group__icon img{width:35px}.elementor-popup__display-settings_controls_group .elementor-control{padding:0;margin:0}.elementor-popup__display-settings_controls_group .elementor-control:nth-child(2){width:230px}.elementor-popup__display-settings_controls_group .elementor-control:nth-child(2) h3{font-size:16px;font-weight:400}.elementor-popup__display-settings_controls_group .elementor-control:not(:nth-child(2)) .elementor-control-title:not(:empty){width:75px}.elementor-popup__display-settings_controls_group .elementor-control:not(:last-child){margin-left:25px}.elementor-popup__display-settings_controls_group .elementor-control-type-slider .elementor-control-input-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-popup__display-settings_controls_group .elementor-control-type-slider .elementor-slider-input{width:45%}.elementor-popup__display-settings_controls_group .elementor-control-type-switcher .elementor-control-field{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-popup__display-settings .elementor-control-type-section{display:none}.elementor-popup__display-settings__group-toggle{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}#elementor-popup-timing__controls .select2-selection{min-height:27px}#elementor-popup-timing__controls .select2-selection__rendered{line-height:1}#elementor-popup-timing__controls .select2-selection__choice{font-size:10px}#elementor-popup__timing-controls-group--url .elementor-control-url_url .elementor-control-input-wrapper{width:200px}#elementor-popup__timing-controls-group--sources .elementor-control-sources_sources .elementor-control-input-wrapper{width:300px}#elementor-popup__timing-controls-group--devices .elementor-control-devices_devices .elementor-control-input-wrapper{width:200px}#elementor-popup__timing-controls-group--logged_in .elementor-control-logged_in_roles .elementor-control-input-wrapper{width:195px}#elementor-popup__timing-controls-group--browsers .elementor-control-browsers_browsers .elementor-control-input-wrapper{width:100px}#elementor-popup__timing-controls-group--browsers .elementor-control-browsers_browsers_options .elementor-control-input-wrapper{width:200px}#elementor-popup-settings-introduction{position:absolute;z-index:1;background-color:#fff;color:#556068;-webkit-box-shadow:-4px -3px 20px 1px rgba(0,0,0,.07);box-shadow:-4px -3px 20px 1px rgba(0,0,0,.07);height:110px;width:260px;padding:20px 30px;border-radius:3px}#elementor-popup-settings-introduction:before{content:"";position:absolute;border:solid transparent;border-right:solid #fff;border-width:5px 7px;left:-14px;top:83%}#elementor-popup-settings-introduction .dialog-close-button{top:10px;right:10px;font-size:13px}#elementor-popup-settings-introduction .dialog-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;font-weight:500}#elementor-popup-settings-introduction .dialog-header i{color:#39b54a;font-size:23px;margin-right:10px}#elementor-popup-settings-introduction .dialog-message{margin-top:10px}assets/css/widget-forms-rtl.min.css000064400000015201150755004320013340 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-button.elementor-hidden,.elementor-hidden{display:none}.e-form__step{width:100%}.e-form__step:not(.elementor-hidden){display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.e-form__buttons{-ms-flex-wrap:wrap;flex-wrap:wrap}.e-form__buttons,.e-form__buttons__wrapper{display:-webkit-box;display:-ms-flexbox;display:flex}.e-form__indicators{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:nowrap;flex-wrap:nowrap;font-size:13px;margin-bottom:var(--e-form-steps-indicators-spacing)}.e-form__indicators,.e-form__indicators__indicator{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.e-form__indicators__indicator{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-preferred-size:0;flex-basis:0;padding:0 var(--e-form-steps-divider-gap)}.e-form__indicators__indicator__progress{width:100%;position:relative;background-color:var(--e-form-steps-indicator-progress-background-color);border-radius:var(--e-form-steps-indicator-progress-border-radius);overflow:hidden}.e-form__indicators__indicator__progress__meter{width:var(--e-form-steps-indicator-progress-meter-width,0);height:var(--e-form-steps-indicator-progress-height);line-height:var(--e-form-steps-indicator-progress-height);padding-right:15px;border-radius:var(--e-form-steps-indicator-progress-border-radius);background-color:var(--e-form-steps-indicator-progress-color);color:var(--e-form-steps-indicator-progress-meter-color);text-align:right;-webkit-transition:width .1s linear;-o-transition:width .1s linear;transition:width .1s linear}.e-form__indicators__indicator:first-child{padding-left:0}.e-form__indicators__indicator:last-child{padding-right:0}.e-form__indicators__indicator--state-inactive{color:var(--e-form-steps-indicator-inactive-primary-color,#c2cbd2)}.e-form__indicators__indicator--state-inactive [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-inactive-secondary-color,#fff)}.e-form__indicators__indicator--state-inactive object,.e-form__indicators__indicator--state-inactive svg{fill:var(--e-form-steps-indicator-inactive-primary-color,#c2cbd2)}.e-form__indicators__indicator--state-active{color:var(--e-form-steps-indicator-active-primary-color,#39b54a);border-color:var(--e-form-steps-indicator-active-secondary-color,#fff)}.e-form__indicators__indicator--state-active [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-active-secondary-color,#fff)}.e-form__indicators__indicator--state-active object,.e-form__indicators__indicator--state-active svg{fill:var(--e-form-steps-indicator-active-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed{color:var(--e-form-steps-indicator-completed-secondary-color,#fff)}.e-form__indicators__indicator--state-completed [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-completed-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed .e-form__indicators__indicator__label{color:var(--e-form-steps-indicator-completed-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed .e-form__indicators__indicator--shape-none{color:var(--e-form-steps-indicator-completed-primary-color,#39b54a);background-color:initial}.e-form__indicators__indicator--state-completed object,.e-form__indicators__indicator--state-completed svg{fill:var(--e-form-steps-indicator-completed-secondary-color,#fff)}.e-form__indicators__indicator__icon{width:var(--e-form-steps-indicator-padding,30px);height:var(--e-form-steps-indicator-padding,30px);font-size:var(--e-form-steps-indicator-icon-size);border-width:1px;border-style:solid;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden;margin-bottom:10px}.e-form__indicators__indicator__icon img,.e-form__indicators__indicator__icon object,.e-form__indicators__indicator__icon svg{width:var(--e-form-steps-indicator-icon-size);height:auto}.e-form__indicators__indicator__icon .e-font-icon-svg{height:1em}.e-form__indicators__indicator__number{width:var(--e-form-steps-indicator-padding,30px);height:var(--e-form-steps-indicator-padding,30px);border-width:1px;border-style:solid;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px}.e-form__indicators__indicator--shape-circle{border-radius:50%}.e-form__indicators__indicator--shape-square{border-radius:0}.e-form__indicators__indicator--shape-rounded{border-radius:5px}.e-form__indicators__indicator--shape-none{border:0}.e-form__indicators__indicator__label{text-align:center}.e-form__indicators__indicator__separator{width:100%;height:var(--e-form-steps-divider-width);background-color:#c2cbd2}.e-form__indicators--type-icon,.e-form__indicators--type-icon_text,.e-form__indicators--type-number,.e-form__indicators--type-number_text{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.e-form__indicators--type-icon .e-form__indicators__indicator__separator,.e-form__indicators--type-icon_text .e-form__indicators__indicator__separator,.e-form__indicators--type-number .e-form__indicators__indicator__separator,.e-form__indicators--type-number_text .e-form__indicators__indicator__separator{margin-top:calc(var(--e-form-steps-indicator-padding, 30px) / 2 - var(--e-form-steps-divider-width, 1px) / 2)}.elementor-field-type-hidden{display:none}.elementor-field-type-html{display:inline-block}.elementor-login .elementor-lost-password,.elementor-login .elementor-remember-me{font-size:.85em}.elementor-field-type-recaptcha_v3 .elementor-field-label{display:none}.elementor-field-type-recaptcha_v3 .grecaptcha-badge{z-index:1}.elementor-button .elementor-form-spinner{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.elementor-form .elementor-button>span{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-form .elementor-button .elementor-button-text{white-space:normal;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.elementor-form .elementor-button svg{height:auto}.elementor-form .elementor-button .e-font-icon-svg{height:1em}assets/css/widget-global-widget-rtl.min.css000064400000001641150755004320014736 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover{outline:1px solid #fec449}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings{background-image:-webkit-gradient(linear,left bottom,left top,from(#feb416),to(#fec449));background-image:-webkit-linear-gradient(bottom,#feb416,#fec449);background-image:-o-linear-gradient(bottom,#feb416,#fec449);background-image:linear-gradient(0deg,#feb416,#fec449)}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover{background-color:#feb416}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save{display:none}assets/css/widget-carousel.min.css000064400000054620150755004320013240 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-skin-carousel .elementor-main-swiper,.elementor-skin-coverflow .elementor-main-swiper{height:230px}.elementor-skin-slideshow .elementor-main-swiper{height:450px;position:relative}.elementor-skin-slideshow .elementor-thumbnails-swiper .elementor-custom-embed-play i{font-size:50px}.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide{cursor:pointer}.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide:not(.swiper-slide-active):after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.3)}.elementor-carousel-image{background:no-repeat 50%;-webkit-background-size:cover;background-size:cover;height:100%;position:relative}.elementor-carousel-image-overlay{position:absolute;top:0;left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;width:100%;height:100%;padding:20px;color:var(--e-carousel-image-overlay-color,#fff);background-color:rgba(129,138,145,.8);-webkit-transition:opacity .5s,-webkit-transform .5s;transition:opacity .5s,-webkit-transform .5s;-o-transition:transform .5s,opacity .5s;transition:transform .5s,opacity .5s;transition:transform .5s,opacity .5s,-webkit-transform .5s}.elementor-carousel-image-overlay i{font-size:var(--e-carousel-image-overlay-icon-size,21px)}.elementor-carousel-image-overlay svg{fill:var(--e-carousel-image-overlay-color,#fff);width:var(--e-carousel-image-overlay-icon-size,21px);height:var(--e-carousel-image-overlay-icon-size,21px)}.elementor-testimonial__image{-ms-flex-negative:0;flex-shrink:0}.elementor-testimonial__image img{border-radius:999px;-webkit-box-sizing:content-box;box-sizing:content-box;-o-object-fit:cover;object-fit:cover}.elementor-testimonial__footer,.elementor-testimonial__header{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-testimonial__footer cite,.elementor-testimonial__header cite{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;font-style:normal;font-size:14px;line-height:1.5}.elementor-testimonial__name{font-weight:700}.elementor-testimonial--layout-image_above .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline .elementor-testimonial__footer{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-testimonial--layout-image_above .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline .elementor-testimonial__image+cite{margin-left:20px}.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__footer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__image+cite{margin-right:20px;margin-left:0}.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__footer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__image+cite{margin-right:0;margin-left:20px}.elementor-testimonial--layout-image_inline .elementor-testimonial__footer{margin-top:25px}.elementor-testimonial--layout-image_above .elementor-testimonial{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.elementor-testimonial--layout-image_above .elementor-testimonial__footer{margin-bottom:25px}.elementor-testimonial--layout-image_stacked .elementor-testimonial__footer{margin-top:25px;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-testimonial--layout-image_stacked .elementor-testimonial__image,.elementor-testimonial--layout-image_stacked .elementor-testimonial cite{margin-top:15px;width:100%}.elementor-testimonial--layout-image_left .elementor-testimonial,.elementor-testimonial--layout-image_right .elementor-testimonial{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-testimonial--layout-image_left .elementor-testimonial__footer,.elementor-testimonial--layout-image_right .elementor-testimonial__footer{-ms-flex-negative:0;flex-shrink:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center}.elementor-testimonial--layout-image_left .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_right .elementor-testimonial__image+cite{margin-top:15px}.elementor-testimonial--layout-image_left.elementor-testimonial--align-center .elementor-testimonial__footer,.elementor-testimonial--layout-image_right.elementor-testimonial--align-center .elementor-testimonial__footer{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-testimonial--layout-image_left .elementor-testimonial{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-testimonial--layout-image_left .elementor-testimonial__footer{padding-right:20px}.elementor-testimonial--layout-image_right .elementor-testimonial{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-testimonial--layout-image_right .elementor-testimonial__footer{padding-left:20px}.elementor-testimonial--align-right .elementor-testimonial{text-align:right}.elementor-testimonial--align-left .elementor-testimonial{text-align:left}.elementor-testimonial--align-center .elementor-testimonial{text-align:center}.elementor-testimonial--align-center .elementor-testimonial__footer{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-testimonial--align-center.elementor-testimonial--layout-image_inline .elementor-testimonial__image+cite{text-align:left}.elementor-testimonial--skin-default.elementor-testimonial--layout-image_above .elementor-testimonial__cite,.elementor-testimonial--skin-default.elementor-testimonial--layout-image_left .elementor-testimonial__cite,.elementor-testimonial--skin-default.elementor-testimonial--layout-image_right .elementor-testimonial__cite{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-top:25px}.elementor-testimonial--skin-bubble .elementor-testimonial__content{background-color:#e6e9ec;padding:20px;position:relative}.elementor-testimonial--skin-bubble .elementor-testimonial__content:after{content:"";display:block;width:14px;height:14px;background-color:#e6e9ec;position:absolute;-webkit-transform:scaleX(.75) rotate(45deg);-ms-transform:scaleX(.75) rotate(45deg);transform:scaleX(.75) rotate(45deg);border-width:0;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above .elementor-testimonial__content:after{bottom:calc(100% - 7px);-webkit-transform:scaleX(.75) rotate(-135deg);-ms-transform:scaleX(.75) rotate(-135deg);transform:scaleX(.75) rotate(-135deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-center .elementor-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) scaleX(.75) rotate(-135deg);-ms-transform:translateX(-50%) scaleX(.75) rotate(-135deg);transform:translateX(-50%) scaleX(.75) rotate(-135deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked .elementor-testimonial__content:after{top:calc(100% - 7px)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-center .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-center .elementor-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) scaleX(.75) rotate(45deg);-ms-transform:translateX(-50%) scaleX(.75) rotate(45deg);transform:translateX(-50%) scaleX(.75) rotate(45deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-left .elementor-testimonial__content:after{left:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-right .elementor-testimonial__content:after{right:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after{-webkit-transform:scaleY(.75) rotate(135deg);-ms-transform:scaleY(.75) rotate(135deg);transform:scaleY(.75) rotate(135deg);left:-8px}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after{-webkit-transform:scaleY(.75) rotate(-45deg);-ms-transform:scaleY(.75) rotate(-45deg);transform:scaleY(.75) rotate(-45deg);right:-8px}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after{top:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__footer,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__footer{padding-top:20px}.elementor-widget-testimonial-carousel .swiper-slide{padding:20px}.elementor-widget-testimonial-carousel .elementor-testimonial__text{font-size:1.3em;font-style:italic;line-height:1.5}.elementor-widget-testimonial-carousel .elementor-testimonial__image img{width:50px;height:50px}.elementor-widget-reviews .swiper-slide{background-color:#fff;border:1px solid #e1e8ed;border-radius:5px;padding:0}.elementor-widget-reviews .elementor-testimonial__text{font-size:14px;line-height:20px}.elementor-widget-reviews .elementor-testimonial__name{color:#1c2022}.elementor-widget-reviews .elementor-testimonial__title{color:#697882;font-size:12.5px;font-weight:400;font-family:inherit}.elementor-widget-reviews .elementor-testimonial__image{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-reviews .elementor-testimonial__image img{width:36px;height:36px}.elementor-widget-reviews .elementor-testimonial__icon{margin-left:auto;font-size:17px}.elementor-widget-reviews .elementor-testimonial__icon .fa+.fa{margin-left:.15em}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon{color:var(--e-testimonial-icon-color)}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-android{--e-testimonial-icon-color:#a4c639}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-apple{--e-testimonial-icon-color:#999}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-behance{--e-testimonial-icon-color:#1769ff}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-bitbucket{--e-testimonial-icon-color:#205081}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-codepen{--e-testimonial-icon-color:#000}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-delicious{--e-testimonial-icon-color:#39f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-digg{--e-testimonial-icon-color:#005be2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-dribbble{--e-testimonial-icon-color:#ea4c89}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-envelope{--e-testimonial-icon-color:#ea4335}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-facebook{--e-testimonial-icon-color:#3b5998}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-flickr{--e-testimonial-icon-color:#0063dc}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-foursquare{--e-testimonial-icon-color:#2d5be3}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-github{--e-testimonial-icon-color:#333}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-google-plus{--e-testimonial-icon-color:#dd4b39}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-houzz{--e-testimonial-icon-color:#7ac142}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-instagram{--e-testimonial-icon-color:#262626}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-jsfiddle{--e-testimonial-icon-color:#487aa2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-linkedin{--e-testimonial-icon-color:#0077b5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-medium{--e-testimonial-icon-color:#00ab6b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-meetup{--e-testimonial-icon-color:#ec1c40}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-mixcloud{--e-testimonial-icon-color:#273a4b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-odnoklassniki{--e-testimonial-icon-color:#f4731c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-pinterest{--e-testimonial-icon-color:#bd081c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-product-hunt{--e-testimonial-icon-color:#da552f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-reddit{--e-testimonial-icon-color:#ff4500}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-rss{--e-testimonial-icon-color:#f26522}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-shopping-cart{--e-testimonial-icon-color:#4caf50}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-skype{--e-testimonial-icon-color:#00aff0}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-slideshare{--e-testimonial-icon-color:#0077b5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-snapchat{--e-testimonial-icon-color:#fffc00}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-soundcloud{--e-testimonial-icon-color:#f80}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-spotify{--e-testimonial-icon-color:#2ebd59}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stack-overflow{--e-testimonial-icon-color:#fe7a15}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-steam{--e-testimonial-icon-color:#00adee}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stumbleupon{--e-testimonial-icon-color:#eb4924}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-telegram{--e-testimonial-icon-color:#2ca5e0}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumb-tack,.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumbtack{--e-testimonial-icon-color:#1aa1d8}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tripadvisor{--e-testimonial-icon-color:#589442}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tumblr{--e-testimonial-icon-color:#35465c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitch{--e-testimonial-icon-color:#6441a5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitter{--e-testimonial-icon-color:#1da1f2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vimeo{--e-testimonial-icon-color:#1ab7ea}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vk{--e-testimonial-icon-color:#45668e}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weibo{--e-testimonial-icon-color:#dd2430}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weixin{--e-testimonial-icon-color:#31a918}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-whatsapp{--e-testimonial-icon-color:#25d366}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-wordpress{--e-testimonial-icon-color:#21759b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-xing{--e-testimonial-icon-color:#026466}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-yelp{--e-testimonial-icon-color:#af0606}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-youtube{--e-testimonial-icon-color:#cd201f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-500px{--e-testimonial-icon-color:#0099e5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon svg{fill:var(--e-testimonial-icon-color)}.elementor-widget-reviews .elementor-testimonial__rating{background-image:-webkit-gradient(linear,left top,right top,from(#ffc82c),to(#ccc));background-image:-webkit-linear-gradient(left,#ffc82c var(--rating),#ccc var(--rating));background-image:-o-linear-gradient(left,#ffc82c var(--rating),#ccc var(--rating));background-image:linear-gradient(90deg,#ffc82c var(--rating),#ccc var(--rating));font-family:eicons}.elementor-widget-reviews .elementor-testimonial__header{display:-webkit-box;display:-ms-flexbox;display:flex;padding-top:15px;padding-bottom:6px}.elementor-widget-reviews .elementor-testimonial__image+cite{margin-left:9px}.elementor-widget-reviews .elementor-testimonial__separator{margin:0 auto;border-top:0;border-bottom:1px solid #e1e8ed;height:0}.elementor-widget-reviews .elementor-testimonial__content{padding-top:6px;padding-bottom:15px}.elementor-widget-reviews .elementor-testimonial__content,.elementor-widget-reviews .elementor-testimonial__header{padding-left:15px;padding-right:15px}.elementor-widget-reviews.elementor-review--has-separator .elementor-testimonial__header{border-bottom:1px solid #e1e8ed}.swiper-pagination-bullets{color:#fff;cursor:default}.swiper-slide{will-change:transform;border-style:solid;border-width:0;-webkit-transition-duration:.5s;-o-transition-duration:.5s;transition-duration:.5s;-webkit-transition-property:border,background,-webkit-transform;transition-property:border,background,-webkit-transform;-o-transition-property:border,background,transform;transition-property:border,background,transform;transition-property:border,background,transform,-webkit-transform;overflow:hidden}.swiper-slide:not(:hover) .e-overlay-animation-fade{opacity:0}.swiper-slide:not(:hover) .e-overlay-animation-slide-up{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-down{-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-right{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-left{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.swiper-slide:not(:hover) .e-overlay-animation-zoom-in{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);opacity:0}.swiper-slide a{display:inline}.swiper-slide a.elementor-button{display:inline-block}.elementor-widget-reviews .elementor-arrows-yes .elementor-main-swiper,.elementor-widget-testimonial-carousel .elementor-arrows-yes .elementor-main-swiper{width:calc(95% - 40px)}.elementor-widget-reviews .elementor-main-swiper,.elementor-widget-testimonial-carousel .elementor-main-swiper{width:95%}.elementor-widget-reviews .swiper-wrapper,.elementor-widget-testimonial-carousel .swiper-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-widget-reviews .swiper-slide,.elementor-widget-testimonial-carousel .swiper-slide{height:auto}.elementor-widget-reviews.elementor-pagination-type-bullets .swiper-container,.elementor-widget-reviews.elementor-pagination-type-fraction .swiper-container,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .swiper-container,.elementor-widget-testimonial-carousel.elementor-pagination-type-fraction .swiper-container{padding-bottom:40px}.elementor-widget-reviews .elementor-swiper-button-prev,.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-next,.elementor-widget-testimonial-carousel .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-next{left:0;right:unset}.elementor-widget-reviews .elementor-swiper-button-next,.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel .elementor-swiper-button-next,.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-prev{right:0;left:unset}.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-next,.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-next,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-prev{top:calc(50% - (40px / 2))}.elementor-widget-media-carousel .elementor-swiper-button-prev,.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-next{left:10px;right:unset}.elementor-widget-media-carousel .elementor-swiper-button-next,.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-prev{right:10px;left:unset}assets/css/widget-share-buttons-rtl.min.css000064400000076316150755004320015026 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn{background-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text{color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn{color:var(--e-share-buttons-primary-color,#ea4335);border-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon{background-color:var(--e-share-buttons-primary-color,#ea4335);color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon{color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon svg{fill:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-official .elementor-share-btn:hover{-webkit-filter:saturate(1.5) brightness(1.2);filter:saturate(1.5) brightness(1.2)}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_digg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_digg{background-color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_email,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_email{background-color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_print,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_print{background-color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_facebook,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_facebook{background-color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_google,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_google{background-color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pocket,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pocket{background-color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_linkedin,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_linkedin{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_odnoklassniki,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_odnoklassniki{background-color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pinterest,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pinterest{background-color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_reddit,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_reddit{background-color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_skype,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_skype{background-color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_slideshare,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_slideshare{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_snapchat,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_snapchat{background-color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_stumbleupon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_stumbleupon{background-color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_mix,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_mix{background-color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_tumblr,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_tumblr{background-color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitch,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitch{background-color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_telegram,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_telegram{background-color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitter,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitter{background-color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vimeo,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vimeo{background-color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vk,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vk{background-color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_whatsapp,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_whatsapp{background-color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_wordpress,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_wordpress{background-color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_xing,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_xing{background-color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg{color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg svg{fill:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email{color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email svg{fill:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print{color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print svg{fill:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook{color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook svg{fill:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google{color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google svg{fill:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket{color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket svg{fill:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin{color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin svg{fill:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki{color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki svg{fill:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest{color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest svg{fill:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit{color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit svg{fill:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype{color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype svg{fill:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare{color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare svg{fill:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat{color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat svg{fill:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon{color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon svg{fill:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix{color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix svg{fill:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr{color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr svg{fill:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch{color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch svg{fill:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram{color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram svg{fill:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter{color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter svg{fill:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo{color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo svg{fill:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk{color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk svg{fill:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp{color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp svg{fill:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress{color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress svg{fill:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing{color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing svg{fill:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_digg .elementor-share-btn__icon{background-color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_email .elementor-share-btn__icon{background-color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_print .elementor-share-btn__icon{background-color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_facebook .elementor-share-btn__icon{background-color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_google .elementor-share-btn__icon{background-color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pocket .elementor-share-btn__icon{background-color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_linkedin .elementor-share-btn__icon{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_odnoklassniki .elementor-share-btn__icon{background-color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pinterest .elementor-share-btn__icon{background-color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_reddit .elementor-share-btn__icon{background-color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_skype .elementor-share-btn__icon{background-color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_slideshare .elementor-share-btn__icon{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_snapchat .elementor-share-btn__icon{background-color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_stumbleupon .elementor-share-btn__icon{background-color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_mix .elementor-share-btn__icon{background-color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_tumblr .elementor-share-btn__icon{background-color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitch .elementor-share-btn__icon{background-color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_telegram .elementor-share-btn__icon{background-color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitter .elementor-share-btn__icon{background-color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vimeo .elementor-share-btn__icon{background-color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vk .elementor-share-btn__icon{background-color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_whatsapp .elementor-share-btn__icon{background-color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_wordpress .elementor-share-btn__icon{background-color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_xing .elementor-share-btn__icon{background-color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon{color:var(--e-share-buttons-icon-color,#fff)}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon svg{fill:var(--e-share-buttons-icon-color,#fff)}.elementor-share-buttons--skin-boxed .elementor-share-btn__icon,.elementor-share-buttons--skin-framed .elementor-share-btn__icon{margin-right:-.2em}.elementor-share-buttons--skin-boxed .elementor-share-btn,.elementor-share-buttons--skin-framed .elementor-share-btn{border-style:solid}.elementor-share-buttons--skin-gradient .elementor-share-btn__text,.elementor-share-buttons--skin-gradient.elementor-share-buttons--view-icon .elementor-share-btn__icon{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.12)),to(transparent));background-image:-webkit-linear-gradient(right,rgba(0,0,0,.12),transparent);background-image:-o-linear-gradient(right,rgba(0,0,0,.12),transparent);background-image:linear-gradient(270deg,rgba(0,0,0,.12),transparent)}.elementor-share-buttons--skin-boxed .elementor-share-btn__text,.elementor-share-buttons--skin-gradient .elementor-share-btn__text,.elementor-share-buttons--skin-minimal .elementor-share-btn__text{padding-right:.9em}.elementor-share-buttons--skin-flat .elementor-share-btn,.elementor-share-buttons--skin-gradient .elementor-share-btn{background-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--skin-flat .elementor-share-btn__icon,.elementor-share-buttons--skin-flat .elementor-share-btn__text,.elementor-share-buttons--skin-gradient .elementor-share-btn__icon,.elementor-share-buttons--skin-gradient .elementor-share-btn__text{color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg,.elementor-share-buttons--skin-flat .elementor-share-btn__text svg,.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg,.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-rounded .elementor-share-btn__icon{border-radius:.5em}.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-circle .elementor-share-btn__icon{border-radius:99.9em}.elementor-share-buttons--view-text .elementor-share-btn__text{padding-right:1em}.elementor-share-buttons--view-icon .elementor-share-btn,.elementor-share-buttons--view-text .elementor-share-btn{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-share-buttons--view-icon .elementor-share-btn__icon,.elementor-share-buttons--view-icon .elementor-share-btn__text,.elementor-share-buttons--view-text .elementor-share-btn__icon,.elementor-share-buttons--view-text .elementor-share-btn__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-share-buttons--shape-rounded .elementor-share-btn{border-radius:.5em}.elementor-share-buttons--shape-circle .elementor-share-btn{border-radius:99.9em}.elementor-share-btn{overflow:hidden;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-transition-property:background-color,border-color,-webkit-filter;transition-property:background-color,border-color,-webkit-filter;-o-transition-property:filter,background-color,border-color;transition-property:filter,background-color,border-color;transition-property:filter,background-color,border-color,-webkit-filter;height:4.5em;cursor:pointer}.elementor-share-btn,.elementor-share-btn__icon,.elementor-share-btn__text{-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.elementor-share-btn__icon,.elementor-share-btn__text{-webkit-transition-property:color,background-color;-o-transition-property:color,background-color;transition-property:color,background-color}.elementor-share-btn__icon{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:4.5em;position:relative}.elementor-share-btn__icon i{font-size:var(--e-share-buttons-icon-size,1.7em)}.elementor-share-btn__icon svg{width:var(--e-share-buttons-icon-size,1.7em);height:var(--e-share-buttons-icon-size,1.7em)}.elementor-share-btn__text{font-size:1.5em;padding-left:1em;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:100}.elementor-share-btn__title{font-weight:700;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-share-buttons{text-align:var(--alignment,inherit);-moz-text-align-last:var(--alignment,inherit);text-align-last:var(--alignment,inherit)}.elementor-widget-share-buttons.elementor-grid-0 .elementor-widget-container{font-size:0}assets/css/widget-sticky-rtl.min.css000064400000000120150755004320013512 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-sticky--active{z-index:99}assets/css/widget-hotspot-rtl.min.css000064400000020431150755004320013713 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
@-webkit-keyframes e-hotspot-soft-beat{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.1);transform:scale(1.1)}}@keyframes e-hotspot-soft-beat{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.1);transform:scale(1.1)}}@-webkit-keyframes e-hotspot-expand{0%{-webkit-transform:scale(.5);transform:scale(.5);opacity:1}to{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}@keyframes e-hotspot-expand{0%{-webkit-transform:scale(.5);transform:scale(.5);opacity:1}to{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}.elementor-widget-hotspot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--background-align);-ms-flex-pack:var(--background-align);justify-content:var(--background-align)}.elementor-widget-hotspot .elementor-widget-container{position:relative;display:inline-block;width:var(--container-width);max-width:var(--container-max-width);height:var(--container-height)}.elementor-widget-hotspot .elementor-widget-container>img{display:block;width:var(--image-width,auto);height:var(--container-height);opacity:var(--opacity,1)}.e-hotspot{z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:absolute}.e-hotspot--position-left.e-hotspot--position-top{-webkit-transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)));-ms-transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)));transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)))}.e-hotspot--position-left.e-hotspot--position-bottom{-webkit-transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y));-ms-transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y));transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y))}.e-hotspot--position-right.e-hotspot--position-top{-webkit-transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)));-ms-transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)));transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)))}.e-hotspot--position-right.e-hotspot--position-bottom{-webkit-transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y));-ms-transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y));transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y))}.e-hotspot--active{z-index:2}.e-hotspot__inner-circle,.e-hotspot__outer-circle{content:"";display:inline-block;-webkit-box-sizing:content-box;box-sizing:content-box;border-radius:50%}.e-hotspot__inner-circle{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background-color:var(--hotspot-color);padding:calc(var(--hotspot-size, 18px) / 2)}.e-hotspot__outer-circle{background-color:var(--hotspot-color);padding:var(--hotspot-padding,4px)}.e-hotspot--icon .e-hotspot__button,.e-hotspot__outer-circle{width:var(--hotspot-size,18px);height:var(--hotspot-size,18px)}.e-hotspot--icon .e-hotspot__button{line-height:0;-webkit-box-sizing:content-box;box-sizing:content-box;font-size:var(--hotspot-size,18px)}.e-hotspot__icon,.e-hotspot__label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.e-hotspot__icon svg,.e-hotspot__label svg{width:var(--hotspot-size,18px);height:auto}.e-hotspot__button{cursor:pointer;position:relative;display:grid;grid-auto-flow:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--hotspot-color);font-size:var(--hotspot-size,18px);min-width:var(--hotspot-button-width);min-height:var(--hotspot-button-height)}.e-hotspot__button:before{z-index:-2;content:"";width:100%;height:100%;left:-5px;top:-5px;position:absolute;padding:5px;-webkit-box-sizing:content-box;box-sizing:content-box}.e-hotspot__button svg{fill:var(--hotspot-color)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot__button{min-width:var(--hotspot-min-width);min-height:var(--hotspot-min-height);background-color:var(--hotspot-box-color);padding:var(--hotspot-padding,4px);border-radius:var(--hotspot-border-radius,3px)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot__button:before{border-radius:var(--hotspot-border-radius,3px)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{background-color:var(--hotspot-box-color)}.e-hotspot--overlay{opacity:.7;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.e-hotspot--active .e-hotspot--overlay,.e-hotspot--overlay:hover{opacity:1}.e-hotspot--soft-beat{-webkit-animation:e-hotspot-soft-beat .7s infinite alternate;animation:e-hotspot-soft-beat .7s infinite alternate;-webkit-animation-timing-function:ease;animation-timing-function:ease}.e-hotspot--expand .e-hotspot__outer-circle,.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{-webkit-animation:e-hotspot-expand 2s infinite;animation:e-hotspot-expand 2s infinite}.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{content:"";width:100%;height:100%;position:absolute;z-index:-1;opacity:0}.e-hotspot--sequenced{-webkit-animation:fadeIn .3s;animation:fadeIn .3s;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-fill-mode:both;animation-fill-mode:both}.e-hotspot__direction-mask{overflow:hidden;position:absolute;pointer-events:none}.e-hotspot__tooltip{white-space:var(--white-space,nowrap);-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-duration:var(--tooltip-transition-duration,.5s);-o-transition-duration:var(--tooltip-transition-duration,.5s);transition-duration:var(--tooltip-transition-duration,.5s);-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;position:absolute;pointer-events:none;color:var(--tooltip-text-color,#fff);text-align:var(--tooltip-align);min-width:var(--tooltip-min-width);padding:var(--tooltip-padding,8px);border-radius:var(--tooltip-border-radius);background-color:var(--tooltip-color)}.e-hotspot__tooltip p:last-of-type{margin-bottom:0}.e-hotspot__direction-mask .e-hotspot__tooltip{-webkit-box-shadow:none!important;box-shadow:none!important;position:static}.e-hotspot--active .e-hotspot__tooltip{pointer-events:visible}.e-hotspot--fade-in-out{opacity:0}.e-hotspot--active .e-hotspot--fade-in-out{opacity:1}.e-hotspot--fade-grow{opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.e-hotspot--active .e-hotspot--fade-grow{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.e-hotspot--override-tooltip-animation-from-top,.e-hotspot--tooltip-animation-from-top{-webkit-transform:translateY(calc(-100% - 1px));-ms-transform:translateY(calc(-100% - 1px));transform:translateY(calc(-100% - 1px))}.e-hotspot--override-tooltip-animation-from-left,.e-hotspot--tooltip-animation-from-left{-webkit-transform:translate(calc(-100% - 1px));-ms-transform:translate(calc(-100% - 1px));transform:translate(calc(-100% - 1px))}.e-hotspot--override-tooltip-animation-from-right,.e-hotspot--tooltip-animation-from-right{-webkit-transform:translate(calc(100% + 1px));-ms-transform:translate(calc(100% + 1px));transform:translate(calc(100% + 1px))}.e-hotspot--override-tooltip-animation-from-bottom,.e-hotspot--tooltip-animation-from-bottom{-webkit-transform:translateY(calc(100% + 1px));-ms-transform:translateY(calc(100% + 1px));transform:translateY(calc(100% + 1px))}.e-hotspot--fade-direction{opacity:0}.e-hotspot--active .e-hotspot--fade-direction,.e-hotspot--active .e-hotspot--slide-direction{-webkit-transform:translate(0) scale(1);-ms-transform:translate(0) scale(1);transform:translate(0) scale(1);opacity:1}.e-hotspot--show-tooltip{-webkit-transition:none;-o-transition:none;transition:none;opacity:1;pointer-events:visible;-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}assets/css/widget-gallery-rtl.min.css000064400000016752150755004320013665 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-gallery__container{min-height:1px}.elementor-gallery-item{position:relative;overflow:hidden;display:block;text-decoration:none;border:solid var(--image-border-width) var(--image-border-color);border-radius:var(--image-border-radius)}.elementor-gallery-item__content,.elementor-gallery-item__overlay{height:100%;width:100%;position:absolute;top:0;left:0}.elementor-gallery-item__overlay{mix-blend-mode:var(--overlay-mix-blend-mode);-webkit-transition-duration:var(--overlay-transition-duration);-o-transition-duration:var(--overlay-transition-duration);transition-duration:var(--overlay-transition-duration);-webkit-transition-property:mix-blend-mode,opacity,background-color,-webkit-transform;transition-property:mix-blend-mode,opacity,background-color,-webkit-transform;-o-transition-property:mix-blend-mode,transform,opacity,background-color;transition-property:mix-blend-mode,transform,opacity,background-color;transition-property:mix-blend-mode,transform,opacity,background-color,-webkit-transform}.elementor-gallery-item__image.e-gallery-image{-webkit-transition-duration:var(--image-transition-duration);-o-transition-duration:var(--image-transition-duration);transition-duration:var(--image-transition-duration);-webkit-transition-property:-webkit-filter,-webkit-transform;transition-property:-webkit-filter,-webkit-transform;-o-transition-property:filter,transform;transition-property:filter,transform;transition-property:filter,transform,-webkit-filter,-webkit-transform}.elementor-gallery-item__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:var(--content-justify-content,center);-ms-flex-pack:var(--content-justify-content,center);justify-content:var(--content-justify-content,center);-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:var(--content-text-align);padding:var(--content-padding)}.elementor-gallery-item__content>div{-webkit-transition-duration:var(--content-transition-duration);-o-transition-duration:var(--content-transition-duration);transition-duration:var(--content-transition-duration)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(2){-webkit-transition-delay:calc((var(--content-transition-delay) / 3));-o-transition-delay:calc((var(--content-transition-delay) / 3));transition-delay:calc((var(--content-transition-delay) / 3))}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(3){-webkit-transition-delay:calc((var(--content-transition-delay) / 3) * 2);-o-transition-delay:calc((var(--content-transition-delay) / 3) * 2);transition-delay:calc((var(--content-transition-delay) / 3) * 2)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(4){-webkit-transition-delay:calc((var(--content-transition-delay) / 3) * 3);-o-transition-delay:calc((var(--content-transition-delay) / 3) * 3);transition-delay:calc((var(--content-transition-delay) / 3) * 3)}.elementor-gallery-item__description{color:var(--description-text-color,#fff);width:100%}.elementor-gallery-item__title{color:var(--title-text-color,#fff);font-weight:700;width:100%}.elementor-gallery__titles-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:var(--titles-container-justify-content,center);-ms-flex-pack:var(--titles-container-justify-content,center);justify-content:var(--titles-container-justify-content,center);margin-bottom:20px}.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:after,.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:before{background-color:var(--galleries-pointer-bg-color-hover)}.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:after,.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:before{background-color:var(--galleries-pointer-bg-color-active)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item:before{border-color:var(--galleries-pointer-bg-color-hover);border-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item:after{border-color:var(--galleries-pointer-bg-color-hover)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:after,.elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:before{border-color:var(--galleries-pointer-bg-color-active)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:before{border-left-width:var(--galleries-pointer-border-width);border-bottom-width:var(--galleries-pointer-border-width);border-right-width:0;border-top-width:0}.elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:after{border-left-width:0;border-bottom-width:0;border-right-width:var(--galleries-pointer-border-width);border-top-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:before{border-left-width:var(--galleries-pointer-border-width);border-bottom-width:0;border-right-width:0;border-top-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:after{border-left-width:0;border-bottom-width:var(--galleries-pointer-border-width);border-right-width:var(--galleries-pointer-border-width);border-top-width:0}.elementor-gallery__titles-container .e--pointer-double-line .elementor-item:after,.elementor-gallery__titles-container .e--pointer-double-line .elementor-item:before,.elementor-gallery__titles-container .e--pointer-overline .elementor-item:before,.elementor-gallery__titles-container .e--pointer-underline .elementor-item:after{height:var(--galleries-pointer-border-width)}.elementor-gallery-title{--space-between:10px;cursor:pointer;color:#6d7882;font-weight:500;position:relative;padding:7px 14px;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.elementor-gallery-title--active{color:#495157}.elementor-gallery-title:not(:last-child){margin-left:var(--space-between)}.elementor-gallery-item__title+.elementor-gallery-item__description{margin-top:var(--description-margin-top)}.e-gallery-item.elementor-gallery-item{-webkit-transition-property:all;-o-transition-property:all;transition-property:all}.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-bottom,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-left,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-right,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-top,.e-gallery-item:hover .elementor-gallery__item-overlay-bg,.e-gallery-item:hover .elementor-gallery__item-overlay-content,.e-gallery-item:hover .elementor-gallery__item-overlay-content__description,.e-gallery-item:hover .elementor-gallery__item-overlay-content__title{opacity:1}a.elementor-item.elementor-gallery-title{color:var(--galleries-title-color-normal)}a.elementor-item.elementor-gallery-title.elementor-item-active,a.elementor-item.elementor-gallery-title.highlighted,a.elementor-item.elementor-gallery-title:focus,a.elementor-item.elementor-gallery-title:hover{color:var(--galleries-title-color-hover)}a.elementor-item.elementor-gallery-title.elementor-item-active{color:var(--gallery-title-color-active)}assets/css/frontend-lite.min.css000064400000370453150755004320012721 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-bg-transform .elementor-bg{will-change:transform}.elementor-bg-transform-zoom-in:hover .elementor-bg,.elementor-bg-transform-zoom-out .elementor-bg{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.elementor-bg-transform-zoom-out:hover .elementor-bg{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-bg-transform-move-left .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-left:hover .elementor-bg,.elementor-bg-transform-move-right .elementor-bg{-webkit-transform:scale(1.2) translateX(-8%);-ms-transform:scale(1.2) translateX(-8%);transform:scale(1.2) translateX(-8%)}.elementor-bg-transform-move-right:hover .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-up .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-bg-transform-move-down .elementor-bg,.elementor-bg-transform-move-up:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(-8%);-ms-transform:scale(1.2) translateY(-8%);transform:scale(1.2) translateY(-8%)}.elementor-bg-transform-move-down:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-animated-content{--translate:0,0}.elementor-animated-content:hover .elementor-animated-item--grow{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.elementor-animated-content:hover .elementor-animated-item--shrink{-webkit-transform:scale(.85);-ms-transform:scale(.85);transform:scale(.85)}.elementor-animated-content:hover .elementor-animated-item--shrink-contained{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content:hover .elementor-animated-item--enter-zoom-in,.elementor-animated-content:hover .elementor-animated-item--enter-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-in{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in,.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-out{opacity:0}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content:hover .elementor-animated-item--enter-from-bottom,.elementor-animated-content:hover .elementor-animated-item--enter-from-left,.elementor-animated-content:hover .elementor-animated-item--enter-from-right,.elementor-animated-content:hover .elementor-animated-item--enter-from-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content:hover .elementor-animated-item--exit-to-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom{-webkit-transform:translateY(600px);-ms-transform:translateY(600px);transform:translateY(600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom,.elementor-animated-content:hover .elementor-animated-item--exit-to-left,.elementor-animated-content:hover .elementor-animated-item--exit-to-right,.elementor-animated-content:hover .elementor-animated-item--exit-to-top{opacity:0}.elementor-animated-content:hover .elementor-animated-item--move-right{-webkit-transform:translateX(30px);-ms-transform:translateX(30px);transform:translateX(30px)}.elementor-animated-content:hover .elementor-animated-item--move-left{-webkit-transform:translateX(-30px);-ms-transform:translateX(-30px);transform:translateX(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-up{-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-down{-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px)}.elementor-animated-content:hover .elementor-animated-item--move-contained-right{--translate:8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-left{--translate:-8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-top{--translate:0,-8%}.elementor-animated-content:hover .elementor-animated-item--move-contained-bottom{--translate:0,8%}.elementor-animated-content [class^=elementor-animated-item]{will-change:transform,opacity}.elementor-animated-content .elementor-animated-item--shrink-contained{-webkit-transform:scale(1.17);-ms-transform:scale(1.17);transform:scale(1.17)}.elementor-animated-content .elementor-animated-item--enter-zoom-in{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content .elementor-animated-item--enter-zoom-out{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content .elementor-animated-item--enter-zoom-in,.elementor-animated-content .elementor-animated-item--enter-zoom-out,.elementor-animated-content .elementor-animated-item--fade-in{opacity:0}.elementor-animated-content .elementor-animated-item--exit-zoom-in,.elementor-animated-content .elementor-animated-item--exit-zoom-out,.elementor-animated-content .elementor-animated-item--fade-out{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content .elementor-animated-item--enter-from-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content .elementor-animated-item--enter-from-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content .elementor-animated-item--enter-from-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom{-webkit-transform:translateY(500px);-ms-transform:translateY(500px);transform:translateY(500px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom,.elementor-animated-content .elementor-animated-item--enter-from-left,.elementor-animated-content .elementor-animated-item--enter-from-right,.elementor-animated-content .elementor-animated-item--enter-from-top{opacity:0}.elementor-animated-content .elementor-animated-item--exit-to-bottom,.elementor-animated-content .elementor-animated-item--exit-to-left,.elementor-animated-content .elementor-animated-item--exit-to-right,.elementor-animated-content .elementor-animated-item--exit-to-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content .elementor-animated-item--move-contained-bottom,.elementor-animated-content .elementor-animated-item--move-contained-left,.elementor-animated-content .elementor-animated-item--move-contained-right,.elementor-animated-content .elementor-animated-item--move-contained-top{-webkit-transform:scale(1.2) translate(var(--translate));-ms-transform:scale(1.2) translate(var(--translate));transform:scale(1.2) translate(var(--translate))}.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover{outline:1px solid #fec449}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings{background-image:-webkit-gradient(linear,left bottom,left top,from(#feb416),to(#fec449));background-image:-webkit-linear-gradient(bottom,#feb416,#fec449);background-image:-o-linear-gradient(bottom,#feb416,#fec449);background-image:linear-gradient(0deg,#feb416,#fec449)}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover{background-color:#feb416}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save{display:none}body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;width:100%;padding:0}body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;padding:0}.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form){margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .quantity .qty{vertical-align:top;margin-right:0}.woocommerce div.product.elementor .quantity+.button{margin-left:10px}.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input{height:100%}.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}@media (max-width:1024px){.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}@media (max-width:767px){.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button{background-color:#5bc0de}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button{background-color:#5cb85c}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button{background-color:#f0ad4e}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button{background-color:#d9534f}.elementor-widget-wc-add-to-cart .quantity{display:inline-block}.elementor-widget-wc-add-to-cart.elementor-align-center form.cart{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-wc-add-to-cart.elementor-align-left form.cart,.elementor-widget-wc-add-to-cart.elementor-align-right form.cart{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor ul.tabs:before{position:static;content:none;width:auto;bottom:auto;left:auto;border-bottom:0;z-index:auto}.woocommerce div.product.elementor ul.tabs{margin:0}.woocommerce div.product.elementor ul.tabs li{padding:0}.woocommerce div.product.elementor ul.tabs li a{padding:.8em 1.2em;line-height:1}.woocommerce div.product.elementor ul.tabs li:after,.woocommerce div.product.elementor ul.tabs li:before{border:0;position:static;bottom:auto;width:auto;height:auto;content:none;-webkit-box-sizing:border-box;box-sizing:border-box}.woocommerce div.product.elementor .woocommerce-tabs .panel{padding:20px;border-radius:0;border-width:0;border-top:1px solid #d3ced2;-webkit-box-shadow:none;box-shadow:none;margin:-1px 0 0}.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins{display:block}.elementor-widget-woocommerce-product-meta .detail-container{position:relative}.elementor-widget-woocommerce-product-meta .detail-container:after{position:absolute;bottom:0;left:0;width:100%}.elementor-widget-woocommerce-product-meta .detail-label{font-weight:700}.elementor-woo-meta--view-inline .product_meta{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-woo-meta--view-inline .product_meta .detail-container:after{width:auto;left:auto;right:auto;position:absolute;height:100%;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;right:-8px}.elementor-woo-meta--view-table .product_meta{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-woo-meta--view-table .product_meta,.elementor-woo-meta--view-table .product_meta .detail-container{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-woo-meta--view-table .product_meta .detail-label{min-width:108px}.elementor-woo-meta--view-stacked .product_meta .detail-container{display:block}.woocommerce div.product.elementor .woocommerce-product-rating{margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.woocommerce div.product.elementor .star-rating{margin-top:0}.elementor-product-rating--align-left .woocommerce-product-rating{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-product-rating--align-right .woocommerce-product-rating{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-product-rating--align-center .woocommerce-product-rating{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link{margin-left:auto}.elementor-products-grid ul.products.elementor-grid{display:grid;margin:0;grid-column-gap:20px;grid-row-gap:40px}.elementor-products-grid ul.products.elementor-grid:after,.elementor-products-grid ul.products.elementor-grid:before{content:none;display:none}.elementor-products-grid ul.products.elementor-grid li.product{width:auto;padding:0;margin:0;float:none}.elementor-products-grid ul.products.elementor-grid li.product .onsale{padding:0;display:none}.elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link{display:block;position:relative}.elementor-products-grid:not(.show-heading-yes) .products>h2{display:none}.elementor-products-grid nav.woocommerce-pagination{margin-top:40px}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul{border:0}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li{border-right:0;border-left:0}.elementor-product-loop-item--align-left ul.products li.product .star-rating{margin-right:auto}.elementor-product-loop-item--align-right ul.products li.product .star-rating{margin-left:auto}.elementor-product-loop-item--align-center ul.products li.product .star-rating{margin-right:auto;margin-left:auto}.woocommerce .elementor-element.elementor-products-grid ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product{width:auto}@media (min-width:1025px){.elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products{grid-template-columns:repeat(2,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products{grid-template-columns:repeat(3,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products{grid-template-columns:repeat(4,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products{grid-template-columns:repeat(5,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products{grid-template-columns:repeat(6,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products{grid-template-columns:repeat(7,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products{grid-template-columns:repeat(8,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products{grid-template-columns:repeat(9,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products{grid-template-columns:repeat(10,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products{grid-template-columns:repeat(11,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products{grid-template-columns:repeat(12,1fr)}}@media (max-width:1024px){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(3,1fr)}}@media (max-width:767px){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(2,1fr)}}.elementor.product .woocommerce-product-gallery__trigger+.woocommerce-product-gallery__wrapper{overflow:hidden}.woocommerce .elementor-widget-woocommerce-product-images span.onsale{padding:0}.elementor-menu-cart__wrapper{text-align:var(--main-alignment,left)}.elementor-menu-cart__toggle_wrapper{display:inline-block;position:relative}.elementor-menu-cart__toggle{display:inline-block}.elementor-menu-cart__toggle .elementor-button{background-color:var(--toggle-button-background-color,transparent);color:var(--toggle-button-text-color,#818a91);border:var(--toggle-button-border-width,1px) var(--toggle-button-border-type,solid) var(--toggle-button-border-color,#818a91);border-radius:var(--toggle-button-border-radius,0);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--toggle-icon-padding,12px 24px)}.elementor-menu-cart__toggle .elementor-button:hover{color:var(--toggle-button-hover-text-color,#818a91);background-color:var(--toggle-button-hover-background-color,transparent);border-color:var(--toggle-button-hover-border-color,#818a91)}.elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon{color:var(--toggle-button-icon-hover-color,#818a91)}.elementor-menu-cart__toggle .elementor-button-text{margin-right:.3em}.elementor-menu-cart__toggle .elementor-button-icon{position:relative;-webkit-transition:color .1s;-o-transition:color .1s;transition:color .1s;color:var(--toggle-button-icon-color,#818a91);font-size:var(--toggle-icon-size,inherit)}.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:block;position:absolute;min-width:1.6em;height:1.6em;line-height:1.5em;top:-.7em;right:-.7em;border-radius:100%;color:var(--items-indicator-text-color,#fff);background-color:var(--items-indicator-background-color,#d9534f);text-align:center;font-size:10px}.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:inline-block;font-weight:400}.elementor-menu-cart__container{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);overflow:hidden;position:fixed;z-index:9998;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,.25);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s;text-align:left}.elementor-menu-cart__main{position:fixed;left:var(--side-cart-alignment-left,auto);right:var(--side-cart-alignment-right,0);-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);top:0;bottom:0;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;font-size:14px;min-height:200px;width:350px;max-width:100%;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;padding:var(--cart-padding,20px 30px);background-color:var(--cart-background-color,#fff);-webkit-box-shadow:0 0 20px rgba(0,0,0,.2);box-shadow:0 0 20px rgba(0,0,0,.2);border-style:var(--cart-border-style,none);border-color:var(--cart-border-color,initial);border-radius:var(--cart-border-radius,0);margin-top:var(--mini-cart-spacing,0)}.elementor-menu-cart__main,.elementor-menu-cart__main .widget_shopping_cart_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-menu-cart__main .widget_shopping_cart_content{height:100%}.elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message{color:var(--empty-message-color,inherit);text-align:var(--empty-message-alignment,left)}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{background-color:transparent;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button{display:none}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{overflow:hidden;opacity:0;-webkit-transform:var(--side-cart-alignment-transform,translateX(100%));-ms-transform:var(--side-cart-alignment-transform,translateX(100%));transform:var(--side-cart-alignment-transform,translateX(100%))}.elementor-menu-cart__close-button{width:var(--cart-close-icon-size,25px);height:var(--cart-close-icon-size,25px);position:relative;margin:0 0 20px;-ms-flex-item-align:end;align-self:flex-end;cursor:pointer;display:inline-block;font-family:eicons;font-size:20px;line-height:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:after,.elementor-menu-cart__close-button:before{content:"";position:absolute;height:3px;width:100%;top:50%;left:0;margin-top:-1px;background:var(--cart-close-button-color,#818a91);border-radius:1px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:hover:after,.elementor-menu-cart__close-button:hover:before{background:var(--cart-close-button-hover-color,#818a91)}.elementor-menu-cart__close-button:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__close-button:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__products{max-height:calc(100vh - 250px);overflow:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.elementor-menu-cart__product{display:grid;grid-template-columns:28% auto;grid-template-rows:var(--price-quantity-position--grid-template-rows,auto auto);position:relative;border-width:0;border-bottom:var(--divider-width,1px) var(--divider-style,solid) var(--divider-color,#d4d4d4)}.elementor-menu-cart__product .variation{display:grid;grid-template-columns:-webkit-max-content auto;grid-template-columns:max-content auto;margin:10px 0}.elementor-menu-cart__product .variation dt{grid-column-start:1}.elementor-menu-cart__product .variation dd{grid-column-start:2;-webkit-margin-start:5px;margin-inline-start:5px}.elementor-menu-cart__product .variation dd p{margin-bottom:0}.elementor-menu-cart__product-image{grid-row-start:1;grid-row-end:3;width:100%}.elementor-menu-cart__product-image a,.elementor-menu-cart__product-image img{display:block}.elementor-menu-cart__product-name{grid-column-start:2;grid-column-end:3;margin:0}.elementor-menu-cart__product-name a{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-price{grid-column-start:2;grid-column-end:3;-ms-flex-item-align:var(--price-quantity-position--align-self,end);align-self:var(--price-quantity-position--align-self,end);font-weight:300;color:var(--product-price-color,#d4d4d4)}.elementor-menu-cart__product-name,.elementor-menu-cart__product-price{font-size:14px;padding-left:20px}.elementor-menu-cart__product-remove{color:#818a91;width:var(--remove-item-button-size,22px);height:var(--remove-item-button-size,22px);border-radius:var(--remove-item-button-size,22px);border:1px solid var(--remove-item-button-color,#d4d4d4);text-align:center;overflow:hidden;position:absolute;right:0;bottom:20px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:hover{border:1px solid var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:hover:after,.elementor-menu-cart__product-remove:hover:before{background:var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:after,.elementor-menu-cart__product-remove:before{content:"";position:absolute;height:1px;width:50%;top:50%;left:25%;margin-top:-1px;background:var(--remove-item-button-color,#d4d4d4);z-index:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__product-remove:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__product-remove>a{display:block;z-index:2;width:100%;height:100%;overflow:hidden;opacity:0;position:absolute}.elementor-menu-cart__product-remove>a.remove_from_cart_button{display:var(--remove-from-cart-button,block)}.elementor-menu-cart__product-remove>a.elementor_remove_from_cart_button{display:var(--elementor-remove-from-cart-button,none)}.elementor-menu-cart__product:last-child{border:none}.elementor-menu-cart__footer-buttons,.elementor-menu-cart__product:not(:first-of-type),.elementor-menu-cart__subtotal{padding-top:var(--product-divider-gap,20px)}.elementor-menu-cart__product{padding-right:30px}.elementor-menu-cart__product,.elementor-menu-cart__subtotal{padding-bottom:var(--product-divider-gap,20px)}.elementor-menu-cart__subtotal{font-size:20px;text-align:var(--menu-cart-subtotal-text-align,center);font-weight:600;color:var(--menu-cart-subtotal-color,inherit);border-left:var(--subtotal-divider-left-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-bottom:var(--subtotal-divider-bottom-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-right:var(--subtotal-divider-right-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-top:var(--subtotal-divider-top-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4)}.elementor-menu-cart__footer-buttons{font-size:20px;text-align:var(--cart-footer-buttons-alignment-text-align,center);display:var(--cart-footer-buttons-alignment-display,grid);grid-template-columns:var(--cart-footer-layout,1fr 1fr);margin-top:var(--cart-buttons-position-margin,0);grid-column-gap:var(--space-between-buttons,10px);grid-row-gap:var(--space-between-buttons,10px)}.elementor-menu-cart__footer-buttons .elementor-button{display:inline-block;border-radius:var(--cart-footer-buttons-border-radius,0);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.elementor-menu-cart__footer-buttons .elementor-button--view-cart{display:var(--view-cart-button-display,inline-block);color:var(--view-cart-button-text-color,#fff);padding:var(--view-cart-button-padding,15px);background-color:var(--view-cart-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover{color:var(--view-cart-button-hover-text-color,#fff);background-color:var(--view-cart-button-hover-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout{display:var(--checkout-button-display,inline-block);color:var(--checkout-button-text-color,#fff);padding:var(--checkout-button-padding,15px);background-color:var(--checkout-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:var(--checkout-button-hover-background-color,#818a91)}@media (max-width:767px){.elementor-menu-cart__footer-buttons .elementor-button{padding-left:10px;padding-right:10px}}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text{display:none}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before{content:none}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e3"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e4"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e5"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e6"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e7"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e8"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e9"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8ea"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8eb"}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product{padding-left:0;padding-right:0;grid-template-columns:25% auto}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove{display:none}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove{top:0;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove{top:20px;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove{-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);bottom:50%}.elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove{top:auto;bottom:20px}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{position:absolute;z-index:89;width:auto;height:auto;overflow:visible;top:100%;bottom:auto;background:none;min-width:330px;left:0;right:auto;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main{width:auto;height:auto;position:relative;top:auto;bottom:auto;right:auto;left:auto;overflow:visible;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}@media (max-width:767px){.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{min-width:300px}}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{opacity:0;-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px)}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown{opacity:1}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container{z-index:9998}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart{z-index:89}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container{display:none}.elementor-widget-woocommerce-checkout-page{background-color:transparent;font-family:Roboto,sans-serif;font-size:14px;line-height:21px;color:#818a91}.elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container{grid-template-columns:auto}.elementor-widget-woocommerce-checkout-page ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page table tbody tr:hover>td,.elementor-widget-woocommerce-checkout-page table tbody tr:hover>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .e-description{color:var(--sections-descriptions-color,#818a91);padding-bottom:var(--sections-descriptions-spacing,0);font-size:14px;font-weight:400}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section{margin-bottom:24px}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title{text-align:var(--login-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge{margin-top:var(--sections-secondary-title-spacing,24px);margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor{margin-top:var(--sections-secondary-title-spacing,24px)}.elementor-widget-woocommerce-checkout-page .e-coupon-box{margin-top:24px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .e-login-wrap-start{-webkit-box-flex:75%;-ms-flex:75%;flex:75%}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{-webkit-box-flex:20%;-ms-flex:20%;flex:20%;text-align:right}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:block}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{text-align:left;margin-top:15px}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label{display:none}}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{margin-bottom:0;font-size:12px}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{font-size:11px}}.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:90%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:auto}}.elementor-widget-woocommerce-checkout-page .e-checkout__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:56% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,24px);grid-row-gap:var(--sections-margin,24px)}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-checkout__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title{color:var(--sections-secondary-title-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge{text-align:var(--coupon-title-alignment,left)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address{margin-top:13px;padding-left:var(--shipping-heading-padding-start,30px)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address span{font-weight:400}.elementor-widget-woocommerce-checkout-page a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row{padding-left:var(--forms-columns-gap-padding,0);padding-right:var(--forms-columns-gap-padding,0);margin-left:var(--forms-columns-gap-margin,0);margin-right:var(--forms-columns-gap-margin,0)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);font-size:14px;border:none;font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-checkout-page .woocommerce .create-account,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row{margin-bottom:0!important}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input,.elementor-widget-woocommerce-checkout-page .woocommerce .input-radio{vertical-align:middle}.elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span{position:relative;top:2px;color:var(--sections-checkboxes-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label,.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{display:inline}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#6f6f6f);border-radius:var(--forms-buttons-border-radius,3px);padding:1rem;border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover{color:var(--forms-buttons-hover-text-color,#6f6f6f);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{margin-right:1%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{width:100%;margin-right:0;margin-bottom:15px}}.elementor-widget-woocommerce-checkout-page .woocommerce-info{border-top-color:transparent;background-color:transparent;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p{font-weight:400;font-size:12px}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info{font-weight:400;margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,.elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment{background:var(--sections-background-color,#fff);border-radius:var(--sections-border-radius,3px);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 24px 0);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{display:var(--additional-information-display,none)}@media (min-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text{color:var(--sections-messages-color,#818a91);font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p{margin-top:25px}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1{margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2{padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading{text-align:var(--order-review-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table{margin-bottom:0;border:0;font-size:14px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th{padding-top:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td{color:#000}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity{font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th{color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr{border:0;padding-left:0;padding-bottom:15px;padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr{padding-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td{font-weight:400;color:var(--order-summary-items-color,#000);border-bottom:var(--order-summary-items-divider-weight,0) solid var(--order-summary-items-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name{padding-right:40px;max-width:150px}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total{vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th{padding-top:var(--order-summary-rows-gap-top,15px);padding-bottom:var(--order-summary-rows-gap-bottom,15px)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th{color:var(--order-summary-totals-color,#818a91);vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th{border-top:var(--order-summary-totals-divider-weight,0) solid var(--order-summary-totals-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td{max-width:70px}.elementor-widget-woocommerce-checkout-page .woocommerce h3{font-size:14px;font-weight:700;margin-top:0;margin-bottom:var(--sections-title-spacing,30px);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row>span{font-weight:400;font-size:14px;margin-bottom:3px;color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:48%}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3{text-align:var(--billing-details-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row{margin-bottom:var(--forms-rows-gap,5px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child{margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login{margin-top:-8px;z-index:999;background:#fff;border-top-width:0;position:relative;margin-bottom:0;color:#818a91}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:100%}}.elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:85%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:35%}}.elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3{background:var(--additional-fields-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address{margin-bottom:var(--sections-margin,20px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment{margin-top:24px;padding:15px 25px 25px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods{border-bottom:none;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li{line-height:21px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{padding-left:15px;font-size:12px}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{float:none;font-size:11px;padding-left:10px}}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img{width:55px}}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0;margin-bottom:0;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order{background-color:#5bc0de;width:var(--purchase-button-width,auto);float:none;color:var(--purchase-button-normal-text-color,#fff);min-height:auto;padding:var(--purchase-button-padding,1em 1em);border-radius:var(--purchase-button-border-radius,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover{background-color:#5bc0de;color:var(--purchase-button-hover-text-color,#fff);border-color:var(--purchase-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--purchase-button-hover-transition-duration,.3s);-o-transition-duration:var(--purchase-button-hover-transition-duration,.3s);transition-duration:var(--purchase-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2{width:auto;float:none}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:grid;grid-template-columns:auto auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:right}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:left}}.elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field{margin-bottom:10px}.elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000);font-size:14px;font-style:normal;text-transform:none;letter-spacing:normal;text-decoration:none;line-height:21px}.e-woo-select2-wrapper .select2-results__option,.e-woo-select2-wrapper .select2-results__option:focus{color:#818a91}.elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart table tbody tr:hover>td,.elementor-widget-woocommerce-cart table tbody tr:hover>th{background-color:inherit}.elementor-widget-woocommerce-cart .e-clear{overflow:hidden;height:0;width:0}.elementor-widget-woocommerce-cart .e-cart-section{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 30px 0);border-radius:var(--sections-border-radius,3px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4)}@media (min-width:1024px){.elementor-widget-woocommerce-cart .e-cart-section:last-child{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-cart .e-cart-content{color:var(--sections-descriptions-color,#818a91);font-size:15px;font-weight:400;line-height:23px;letter-spacing:0}.elementor-widget-woocommerce-cart .e-cart__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:59% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,30px);grid-row-gap:var(--sections-margin,30px)}@media (max-width:1024px){.elementor-widget-woocommerce-cart .e-cart__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart .select2-container{margin-bottom:4px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-cart .woocommerce{font-family:Roboto,sans-serif}.elementor-widget-woocommerce-cart .woocommerce button.button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#818a91);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,.88rem 2rem);width:var(--forms-buttons-width,auto);border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button:hover{color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]{padding:var(--forms-buttons-padding,.88rem 2rem);color:var(--forms-buttons-normal-text-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover{background-color:var(--forms-buttons-hover-background-color,#fff);color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li input{vertical-align:middle}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form{margin-top:var(--sections-descriptions-spacing,15px)}.elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination{color:var(--sections-descriptions-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th{display:none}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td{text-align:left!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before{width:100%;margin-bottom:10px}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td{text-align:right!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td:before{content:attr(data-title);font-weight:700;float:left}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{text-align:var(--totals-title-alignment,left)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td{padding-top:var(--totals-rows-gap-top,12px);padding-bottom:var(--totals-rows-gap-bottom,9px)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before{color:var(--totals-color,#818a91);font-weight:700}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td{border-top-color:var(--totals-divider-color,#818a91);border-top-width:var(--totals-divider-weight,0)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row{margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-cart .woocommerce .product-name a{color:var(--product-link-normal-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .product-name a:hover{color:var(--product-link-hover-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .form-row{padding:3px 0;margin:0}.elementor-widget-woocommerce-cart .woocommerce .input-text,.elementor-widget-woocommerce-cart .woocommerce select{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,3px);border:none;padding:var(--forms-fields-padding,16px);font-size:14px}.elementor-widget-woocommerce-cart .woocommerce .input-text::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,.elementor-widget-woocommerce-cart .woocommerce select::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus,.elementor-widget-woocommerce-cart .woocommerce select:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,transparent);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-webkit-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-moz-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-ms-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text.qty{background-color:transparent;color:var(--order-summary-color,#000);border:var(--order-summary-quantity-border-weight,1px) solid var(--order-summary-quantity-border-color,#d4d4d4);border-radius:3px;padding:1px 2px;text-align:left;font-size:14px;min-height:28px;max-height:28px}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout{padding-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button{padding:var(--checkout-button-padding,15px 1em);width:var(--checkout-button-width,auto);font-size:15px;text-align:center;color:var(--checkout-button-normal-text-color,#fff);background-color:#5bc0de;border-radius:var(--checkout-button-border-radius,3px);min-height:auto;margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:#5bc0de;border-color:var(--checkout-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--checkout-button-hover-transition-duration,.3s);-o-transition-duration:var(--checkout-button-hover-transition-duration,.3s);transition-duration:var(--checkout-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .remove{background:transparent;color:var(--order-summary-remove-icon-normal-color,#000)!important;width:auto}.elementor-widget-woocommerce-cart .woocommerce .remove:hover{background:transparent;color:var(--order-summary-remove-icon-hover-color,#5bc0de)!important}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals{float:none;width:100%}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td{padding-left:0}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{float:right;width:100%}.elementor-widget-woocommerce-cart .woocommerce .coupon .form-row{padding:0}.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{-webkit-box-flex:2;-ms-flex:2;flex:2;padding-right:30px}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{padding-right:0}}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-end{-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:block}}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon{margin:var(--sections-margin,0)}.elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code{width:100%;margin-right:0;margin-bottom:15px}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:left;font-size:14px;font-weight:700}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:none;width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table th,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions{padding:16px 0 0}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a{display:inline-block}.elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child{display:var(--update-cart-automatically-display,table-row)}.elementor-widget-woocommerce-cart .woocommerce table.cart{margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce table.cart img{width:55px;height:auto;display:block}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-top:var(--order-summary-rows-gap-top,20px);padding-right:20px;padding-bottom:var(--order-summary-rows-gap-bottom,20px);padding-left:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td span{color:var(--order-summary-color,#000);font-size:14px;font-weight:400}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top:var(--order-summary-items-divider-weight,1px) solid var(--order-summary-items-divider-color,#d4d4d4)}@media (max-width:768px){.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top-width:0}}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove{padding-left:0;padding-right:0}@media (min-width:767px){.elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td{border-top:none}}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove{position:relative}.elementor-widget-woocommerce-cart .woocommerce table.cart.product-name{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{border-top-width:var(--order-summary-items-divider-weight,1px);border-top-color:var(--order-summary-items-divider-color,#d4d4d4)}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}}@media (max-width:768px){.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-left:0;padding-right:0}}@media (max-width:767px){.elementor-widget-woocommerce-cart .woocommerce table.cart{padding:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{padding:16px 28px}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-left:0;padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions{padding:0}}.elementor-widget-woocommerce-cart .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,.elementor-widget-woocommerce-cart .woocommerce .cart th{font-size:14px;font-weight:700;margin-top:0;padding:0 20px 8px 0}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{margin-bottom:var(--sections-title-spacing,1rem);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart th{padding-bottom:var(--order-summary-title-spacing,8px);color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart td:before{color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button:after{display:none}.elementor-widget-woocommerce-cart .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000)}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td{padding-left:0}}.e-woo-select2-wrapper .select2-results__option{font-family:Roboto,sans-serif;font-size:14px;color:var(--forms-fields-normal-color,#818a91)}.e-woo-select2-wrapper .select2-results__option:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account{font-family:Roboto,sans-serif;color:#818a91}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table{border:none;margin-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{background-color:var(--sections-background-color,#fff)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px 3px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,.elementor-widget-woocommerce-my-account .e-my-account-tab address{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content{border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper{padding:0;border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details{margin-bottom:40px}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px 3px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content>div>p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:var(--forms-fields-normal-background-color,#f7f7f7);border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:var(--forms-fields-focus-background-color,#f7f7f7);border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below{background-color:var(--forms-fields-normal-background-color,#f7f7f7)}.elementor-widget-woocommerce-my-account .woocommerce ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce-message{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce address{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover,.elementor-widget-woocommerce-my-account .woocommerce a.button:hover{background-color:initial}.elementor-widget-woocommerce-my-account .woocommerce em{font-size:12px;color:var(--login-messages-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .form-row{padding-left:var(--forms-columns-gap-padding-left,0);padding-right:var(--forms-columns-gap-padding-right,0);margin-left:var(--forms-columns-gap-margin-left,0);margin-right:var(--forms-columns-gap-margin-right,0);margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-my-account .woocommerce .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,0)}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,.elementor-widget-woocommerce-my-account .woocommerce .form-row select{color:var(--forms-fields-normal-color,#818a91);border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);background:#f7f7f7;border:none;font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,.elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text{margin-bottom:15px;color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword{font-size:12px;margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:50%}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first{width:100%}.elementor-widget-woocommerce-my-account .woocommerce .login,.elementor-widget-woocommerce-my-account .woocommerce .register,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px);font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .login .button,.elementor-widget-woocommerce-my-account .woocommerce .register .button,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3){margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){margin-top:10px;font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox{vertical-align:middle}.elementor-widget-woocommerce-my-account .woocommerce p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span{color:var(--checkboxes-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce td,.elementor-widget-woocommerce-my-account .woocommerce th,.elementor-widget-woocommerce-my-account .woocommerce tr{border:none}.elementor-widget-woocommerce-my-account .woocommerce h2,.elementor-widget-woocommerce-my-account .woocommerce h3{color:var(--typography-section-titles-color,#000);margin-top:0;margin-bottom:var(--section-title-spacing,45px);font-weight:400}.elementor-widget-woocommerce-my-account .woocommerce strong{color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta,.elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label{color:var(--variations-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .product-quantity{font-weight:400;color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{float:left;width:25%}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul{-webkit-padding-start:0;padding-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li{list-style-type:none;margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li:after{content:"";display:block;width:100%;background-color:var(--tabs-divider-color,#818a91);height:var(--tabs-divider-weight,0);position:relative;top:calc(var(--tabs-spacing, 2px) / 2)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a{color:var(--tabs-active-color,#5bc0de);background:#eceeef;border-color:var(--tabs-active-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{font-style:normal;font-weight:700;font-size:14px;color:var(--tabs-normal-color,#818a91);display:block;padding:var(--tabs-padding,12px 20px);text-align:var(--tabs-alignment,start);background:#f7f7f7;border-radius:var(--tabs-border-radius,0);border:0 var(--tabs-border-type,solid) var(--tabs-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover{color:var(--tabs-hover-color,#5bc0de);border-color:var(--tabs-hover-border-color,transparent)}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{padding:var(--tabs-padding,10px)}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard{margin-top:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout:after{display:none}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{float:right;width:75%;padding:0;padding-left:var(--tab-content-spacing,6%)}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{width:100%;padding:var(--tab-content-spacing,6%) 0 0 0}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type{margin-top:30px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark{background-color:transparent;font-weight:700;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child th,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child th{border-top:0}.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th{border-top:0;padding-left:0;padding-top:0;padding-bottom:var(--tables-titles-spacing,9px)}.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>th,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>th{background-color:transparent;padding-left:0;padding-top:var(--order-summary-rows-gap-top,9px);padding-bottom:var(--order-summary-rows-gap-bottom,9px);color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table td,.elementor-widget-woocommerce-my-account .woocommerce .shop_table th{border-top:var(--tables-divider-border-width,1px) var(--tables-divider-border-type,solid) var(--tables-divider-border-color,#d4d4d4)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th,.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span{color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td,.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th{padding-left:0;color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td{border-top:none;padding-top:0}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button{background:transparent;border:2px solid #5bc0de;border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);border-radius:var(--tables-button-border-radius,3px);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);margin-top:0;margin-bottom:0;padding:var(--tables-button-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-Address .title h3,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3{float:none}.elementor-widget-woocommerce-my-account .woocommerce-Address address,.elementor-widget-woocommerce-my-account .woocommerce-Addresses address{padding:var(--sections-padding,45px 30px 16px 30px)}.elementor-widget-woocommerce-my-account .woocommerce-Address .edit,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit{float:left;position:absolute;margin-left:var(--edit-link-margin-start,30px);margin-top:var(--edit-link-margin-top,10px)}.elementor-widget-woocommerce-my-account .woocommerce .u-columns{margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset{border:none;padding:0;-webkit-margin-start:0;margin-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend{font-weight:700;padding:20px 0;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px);margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-pagination{padding:16px 0}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below,.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below{padding-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td{vertical-align:top;line-height:unset}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{float:none;width:100%}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block}.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation,.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{list-style:none;padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--tabs-container-justify-content,space-between);-ms-flex-pack:var(--tabs-container-justify-content,space-between);justify-content:var(--tabs-container-justify-content,space-between)}@media (max-width:767px){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{display:block}}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block;width:var(--tab-width,100%);padding:0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);margin:0;border-right:var(--tabs-divider-weight,0) solid var(--tabs-divider-color,#818a91)}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:after{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type{padding-left:0}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type{padding-right:0;border-right-width:0}@media (max-width:767px){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}}.e-my-account-tabs-horizontal .woocommerce-MyAccount-content{float:none;width:100%;padding:var(--tab-content-spacing,50px) 0 0 0}.elementor-editor-active .elementor-widget-container,.elementor-editor-preview .elementor-widget-container{min-height:1px}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a{pointer-events:none}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button{pointer-events:none;opacity:.3}.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type){display:none}.product .count{background-color:inherit}.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2{display:none}.woocommerce div.product.elementor form.cart div.product-addon{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-negative:0;flex-shrink:0}.e-sticky-right-column--active{position:-webkit-sticky;position:sticky;top:0}.elementor-theme-builder-content-area{height:400px}.elementor-location-footer:before,.elementor-location-header:before{content:"";display:table;clear:both}.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post{display:block}.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid{color:#d4d4d4;border:1px solid;border-right:none;border-left:none;padding-top:10px;padding-bottom:10px}.elementor-post-navigation-borders-yes .elementor-post-navigation__separator{height:100%;width:1px;margin:0 auto;background-color:#d4d4d4}.elementor-post-navigation{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-post-navigation .post-navigation__arrow-wrapper{color:#d4d4d4}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev{font-size:30px;padding-right:15px}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next{font-size:30px;padding-left:15px}.elementor-post-navigation .post-navigation__arrow-wrapper i{-webkit-transform:translateY(-5%);-ms-transform:translateY(-5%);transform:translateY(-5%)}.elementor-post-navigation .elementor-post-navigation__link__next,.elementor-post-navigation .elementor-post-navigation__link__prev{overflow:hidden}.elementor-post-navigation .elementor-post-navigation__link a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__prev--label{text-transform:uppercase;font-size:.8em}.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--title{font-size:.7em}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--label,.elementor-post-navigation .post-navigation__prev--title{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation span.elementor-post-navigation__link__next{text-align:right}.elementor-post-navigation span.elementor-post-navigation__link__next,.elementor-post-navigation span.elementor-post-navigation__link__prev{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-post-navigation .elementor-grid{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-post-navigation .elementor-post-navigation__link{width:calc(50% - (1px / 2));white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation .elementor-post-navigation__separator-wrapper{text-align:center}.elementor-post-navigation .elementor-post-navigation__next{text-align:right}.elementor-post-navigation .elementor-post-navigation__next a{float:right}.elementor-search-form{display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s}.elementor-search-form .e-font-icon-svg-container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-search-form button,.elementor-search-form input[type=search]{margin:0;border:0;padding:0;display:inline-block;vertical-align:middle;white-space:normal;background:none;line-height:1;min-width:0;font-size:15px;-webkit-appearance:none;-moz-appearance:none}.elementor-search-form button:focus,.elementor-search-form input[type=search]:focus{outline:0;color:inherit}.elementor-search-form button{background-color:#818a91;font-size:var(--e-search-form-submit-icon-size,16px);color:#fff;border-radius:0}.elementor-search-form__container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;overflow:hidden;border:0 solid transparent;min-height:50px}.elementor-search-form__container:not(.elementor-search-form--full-screen){background:#eceeef}.elementor-search-form__input{-ms-flex-preferred-size:100%;flex-basis:100%;color:#55595c;-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s}.elementor-search-form__input::-webkit-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-moz-placeholder,.elementor-search-form__input::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__submit{-webkit-transition:color .2s,background .2s;-o-transition:color .2s,background .2s;transition:color .2s,background .2s;font-size:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form__submit svg{fill:var(--e-search-form-submit-text-color,#fff);width:var(--e-search-form-submit-icon-size,16px);height:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form .elementor-search-form__submit,.elementor-search-form .elementor-search-form__submit:hover{color:var(--e-search-form-submit-text-color,#fff);border:none;border-radius:0}.elementor-search-form--button-type-text .elementor-search-form__submit{-ms-flex-negative:0;flex-shrink:0}.elementor-search-form--skin-minimal .elementor-search-form__icon{opacity:.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;color:#55595c;fill:#55595c;font-size:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-minimal .elementor-search-form__icon svg{width:var(--e-search-form-icon-size-minimal,15px);height:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-full_screen .elementor-search-form input[type=search].elementor-search-form__input{font-size:50px;text-align:center;border:solid #fff;border-width:0 0 1px;line-height:1.5;color:#fff}.elementor-search-form--skin-full_screen .elementor-search-form__toggle{display:inline-block;cursor:pointer;vertical-align:middle;color:var(--e-search-form-toggle-color,#494c4f);font-size:var(--e-search-form-toggle-size,33px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i{position:relative;display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;width:var(--e-search-form-toggle-size,33px);height:var(--e-search-form-toggle-size,33px);background-color:var(--e-search-form-toggle-background-color,rgba(0,0,0,.05));border:var(--e-search-form-toggle-border-width,0) solid var(--e-search-form-toggle-color,#494c4f);border-radius:var(--e-search-form-toggle-border-radius,3px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before{font-size:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{fill:var(--e-search-form-toggle-color,#494c4f);width:var(--e-search-form-toggle-icon-size,.55em);height:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__container{-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;z-index:9998;top:0;left:0;right:0;bottom:0;height:100vh;padding:0 15%;background-color:rgba(0,0,0,.8)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen){overflow:hidden;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button{display:none}.elementor-author-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-author-box__avatar{-ms-flex-negative:0;flex-shrink:0;margin-right:25px}.elementor-author-box__avatar img{width:100px;border-radius:500px;-o-object-fit:cover;object-fit:cover}.elementor-author-box__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:17px}.elementor-author-box__name{font-size:24px;margin-bottom:5px}.elementor-author-box__bio,.elementor-author-box__bio p{margin-bottom:.8em}.elementor-author-box__bio p:last-of-type{margin-bottom:0}.elementor-author-box--layout-image-left .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-author-box--layout-image-left .elementor-author-box__avatar{margin-left:0;margin-right:25px}.elementor-author-box--layout-image-right .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-author-box--layout-image-right .elementor-author-box__avatar{margin-right:0;margin-left:25px}.elementor-author-box--layout-image-above .elementor-author-box{display:block}.elementor-author-box--layout-image-above .elementor-author-box__avatar{margin:0 auto 15px;display:inline-block}.elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar{margin-left:0}.elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar{margin-right:0}.elementor-author-box--align-left .elementor-author-box{text-align:left}.elementor-author-box--align-right .elementor-author-box{text-align:right}.elementor-author-box--align-center .elementor-author-box{text-align:center}.elementor-button.elementor-author-box__button{border:2px solid #55595c;font-size:15px;font-weight:100;padding:10px 18px}.elementor-button.elementor-author-box__button,.elementor-button.elementor-author-box__button:hover{background:transparent;color:#55595c}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar,.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar{-ms-flex-item-align:start;align-self:flex-start}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar{-ms-flex-item-align:center;align-self:center}.elementor-post-info__terms-list{display:inline-block}.elementor-post-info .elementor-icon-list-icon .elementor-avatar{border-radius:100%}.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after{margin:initial}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text{display:inline-block}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a,.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span{display:inline}.elementor-widget-breadcrumbs{font-size:.85em}.elementor-widget-breadcrumbs p{margin-bottom:0}.elementor-sitemap-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.elementor-sticky--active{z-index:99}[data-elementor-type=popup] .elementor-section-wrap:not(:empty)+#elementor-add-new-section,[data-elementor-type=popup]:not(.elementor-edit-area){display:none}.elementor-popup-modal{display:-webkit-box;display:-ms-flexbox;display:flex;pointer-events:none;background-color:transparent;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.elementor-popup-modal .dialog-buttons-wrapper,.elementor-popup-modal .dialog-header{display:none}.elementor-popup-modal .dialog-close-button{display:none;top:20px;margin-top:0;right:20px;opacity:1;z-index:9999;pointer-events:all}.elementor-popup-modal .dialog-close-button svg{fill:#373a3c;height:1em;width:1em}.elementor-popup-modal .dialog-widget-content{width:auto;overflow:visible;max-width:100%;max-height:100%;border-radius:0;-webkit-box-shadow:none;box-shadow:none;pointer-events:all}.elementor-popup-modal .dialog-message{width:640px;max-width:100vw;max-height:100vh;padding:0;overflow:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-popup-modal .elementor{width:100%}.elementor-motion-effects-element,.elementor-motion-effects-layer{-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(0,.33,.07,1.03);-o-transition-timing-function:cubic-bezier(0,.33,.07,1.03);transition-timing-function:cubic-bezier(0,.33,.07,1.03);-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s}.elementor-motion-effects-container{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;-webkit-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);-ms-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.elementor-motion-effects-layer{position:absolute;top:0;left:0;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover}.elementor-motion-effects-perspective{-webkit-perspective:1200px;perspective:1200px}assets/css/widget-slides-rtl.min.css000064400000005233150755004320013501 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-slides .swiper-slide-bg{-webkit-background-size:cover;background-size:cover;background-position:50%;background-repeat:no-repeat;min-width:100%;min-height:100%}.elementor-slides .swiper-slide-inner{background-repeat:no-repeat;background-position:50%;position:absolute;top:0;left:0;bottom:0;right:0;padding:50px;margin:auto}.elementor-slides .swiper-slide-inner,.elementor-slides .swiper-slide-inner:hover{color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-slides .swiper-slide-inner .elementor-background-overlay{position:absolute;z-index:0;top:0;bottom:0;left:0;right:0}.elementor-slides .swiper-slide-inner .elementor-slide-content{position:relative;z-index:1;width:100%}.elementor-slides .swiper-slide-inner .elementor-slide-heading{font-size:35px;font-weight:700;line-height:1}.elementor-slides .swiper-slide-inner .elementor-slide-description{font-size:17px;line-height:1.4}.elementor-slides .swiper-slide-inner .elementor-slide-description:not(:last-child),.elementor-slides .swiper-slide-inner .elementor-slide-heading:not(:last-child){margin-bottom:30px}.elementor-slides .swiper-slide-inner .elementor-slide-button{border:2px solid #fff;color:#fff;background:transparent;display:inline-block}.elementor-slides .swiper-slide-inner .elementor-slide-button,.elementor-slides .swiper-slide-inner .elementor-slide-button:hover{background:transparent;color:inherit;text-decoration:none}.elementor--v-position-top .swiper-slide-inner{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor--v-position-bottom .swiper-slide-inner{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor--v-position-middle .swiper-slide-inner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor--h-position-left .swiper-slide-inner{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor--h-position-right .swiper-slide-inner{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor--h-position-center .swiper-slide-inner{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}body.rtl .elementor-widget-slides .elementor-swiper-button-next{left:10px;right:auto}body.rtl .elementor-widget-slides .elementor-swiper-button-prev{right:10px;left:auto}.elementor-slides-wrapper div:not(.swiper-slide)>.swiper-slide-inner{display:none}@media (max-width:767px){.elementor-slides .swiper-slide-inner{padding:30px}.elementor-slides .swiper-slide-inner .elementor-slide-heading{font-size:23px;line-height:1;margin-bottom:15px}.elementor-slides .swiper-slide-inner .elementor-slide-description{font-size:13px;line-height:1.4;margin-bottom:15px}}assets/css/widget-call-to-action.min.css000064400000026241150755004320014227 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-cta,.elementor-widget-call-to-action .elementor-widget-container{overflow:hidden}.elementor-cta{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.5s;-o-transition:.5s;transition:.5s}.elementor-cta--skin-classic .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--skin-classic .elementor-cta__bg-wrapper{position:relative;min-height:200px;width:100%}.elementor-cta--skin-classic .elementor-cta__content{-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%;background-color:#f7f7f7}.elementor-cta--skin-classic .elementor-cta__content-item,.elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon{color:#55595c;border-color:#55595c;fill:#55595c}.elementor-cta--skin-classic .elementor-cta__button.elementor-button{color:#55595c;border-color:#55595c}.elementor-cta--skin-cover .elementor-cta{display:block}.elementor-cta--skin-cover .elementor-cta__bg-wrapper{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%}.elementor-cta--skin-cover .elementor-cta__content{min-height:280px}.elementor-cta--skin-cover .elementor-cta__button.elementor-button,.elementor-cta--skin-cover .elementor-cta__content-item,.elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon{color:#fff;border-color:#fff}.elementor-cta--layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--layout-image-left .elementor-cta,.elementor-cta--layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--layout-image-left .elementor-cta__content,.elementor-cta--layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta__bg,.elementor-cta__bg-overlay{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s}.elementor-cta__bg-wrapper{z-index:1;overflow:hidden}.elementor-cta__bg{-webkit-background-size:cover;background-size:cover;background-position:50%;z-index:1}.elementor-cta__bg-overlay{z-index:2}.elementor-cta__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-cta__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-cta__title{font-size:23px}.elementor-cta__content{z-index:1;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;padding:35px;width:100%}.elementor-cta__content,.elementor-cta__content-item{position:relative;-webkit-transition:.5s;-o-transition:.5s;transition:.5s;color:#fff}.elementor-cta__content-item{width:100%;margin:0}.elementor-cta__content-item:not(:last-child){margin-bottom:15px}.elementor-cta__content-item .elementor-icon{color:#fff}.elementor-cta--valign-top .elementor-cta__content{-ms-flex-line-pack:start;align-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-cta--valign-middle .elementor-cta__content{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-cta--valign-bottom .elementor-cta__content{-ms-flex-line-pack:end;align-content:flex-end;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor-cta:hover .elementor-cta__bg-overlay{background-color:rgba(0,0,0,.3)}@media (max-device-width:1024px){.elementor-cta{cursor:pointer}}@media (min-width:-1px){.elementor-cta--widescreen-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--widescreen-layout-image-left .elementor-cta,.elementor-cta--widescreen-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--widescreen-layout-image-left .elementor-cta__content,.elementor-cta--widescreen-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--widescreen-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--widescreen-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:-1px){.elementor-cta--laptop-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--laptop-layout-image-left .elementor-cta,.elementor-cta--laptop-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--laptop-layout-image-left .elementor-cta__content,.elementor-cta--laptop-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--laptop-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--laptop-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:-1px){.elementor-cta--tablet_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta,.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__content,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:1024px){.elementor-cta--tablet-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet-layout-image-left .elementor-cta,.elementor-cta--tablet-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet-layout-image-left .elementor-cta__content,.elementor-cta--tablet-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--tablet-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:-1px){.elementor-cta--mobile_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta,.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__content,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:767px){.elementor-cta--mobile-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile-layout-image-left .elementor-cta,.elementor-cta--mobile-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile-layout-image-left .elementor-cta__content,.elementor-cta--mobile-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--mobile-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}.elementor-ribbon{position:absolute;z-index:1;top:0;left:auto;right:0;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);width:150px;overflow:hidden;height:150px}.elementor-ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000;color:#fff}.elementor-ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}assets/css/frontend-lite.css000064400000457371150755004320012144 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-bg-transform .elementor-bg {
  will-change: transform; }

.elementor-bg-transform-zoom-in:hover .elementor-bg {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2); }

.elementor-bg-transform-zoom-out .elementor-bg {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2); }

.elementor-bg-transform-zoom-out:hover .elementor-bg {
  -webkit-transform: scale(1);
      -ms-transform: scale(1);
          transform: scale(1); }

.elementor-bg-transform-move-left .elementor-bg {
  -webkit-transform: scale(1.2) translateX(8%);
      -ms-transform: scale(1.2) translateX(8%);
          transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-left:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateX(-8%);
      -ms-transform: scale(1.2) translateX(-8%);
          transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right .elementor-bg {
  -webkit-transform: scale(1.2) translateX(-8%);
      -ms-transform: scale(1.2) translateX(-8%);
          transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateX(8%);
      -ms-transform: scale(1.2) translateX(8%);
          transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-up .elementor-bg {
  -webkit-transform: scale(1.2) translateY(8%);
      -ms-transform: scale(1.2) translateY(8%);
          transform: scale(1.2) translateY(8%); }

.elementor-bg-transform-move-up:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateY(-8%);
      -ms-transform: scale(1.2) translateY(-8%);
          transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down .elementor-bg {
  -webkit-transform: scale(1.2) translateY(-8%);
      -ms-transform: scale(1.2) translateY(-8%);
          transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateY(8%);
      -ms-transform: scale(1.2) translateY(8%);
          transform: scale(1.2) translateY(8%); }

/*---------------------------------------------------------------------------*/
.elementor-animated-content {
  --translate: 0, 0; }
  .elementor-animated-content:hover .elementor-animated-item--grow {
    -webkit-transform: scale(1.1);
        -ms-transform: scale(1.1);
            transform: scale(1.1); }
  .elementor-animated-content:hover .elementor-animated-item--shrink {
    -webkit-transform: scale(0.85);
        -ms-transform: scale(0.85);
            transform: scale(0.85); }
  .elementor-animated-content:hover .elementor-animated-item--shrink-contained {
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1); }
  .elementor-animated-content:hover .elementor-animated-item--enter-zoom-out, .elementor-animated-content:hover .elementor-animated-item--enter-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-in {
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1);
    opacity: 1; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out, .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-out {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out {
    -webkit-transform: scale(0.2);
        -ms-transform: scale(0.2);
            transform: scale(0.2); }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in {
    -webkit-transform: scale(2);
        -ms-transform: scale(2);
            transform: scale(2); }
  .elementor-animated-content:hover .elementor-animated-item--enter-from-right, .elementor-animated-content:hover .elementor-animated-item--enter-from-left, .elementor-animated-content:hover .elementor-animated-item--enter-from-top, .elementor-animated-content:hover .elementor-animated-item--enter-from-bottom {
    opacity: 1;
    -webkit-transform: translateY(0) translateX(0);
        -ms-transform: translateY(0) translateX(0);
            transform: translateY(0) translateX(0); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right {
    -webkit-transform: translateX(1000px);
        -ms-transform: translateX(1000px);
            transform: translateX(1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-left {
    -webkit-transform: translateX(-1000px);
        -ms-transform: translateX(-1000px);
            transform: translateX(-1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-top {
    -webkit-transform: translateY(-600px);
        -ms-transform: translateY(-600px);
            transform: translateY(-600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    -webkit-transform: translateY(600px);
        -ms-transform: translateY(600px);
            transform: translateY(600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right, .elementor-animated-content:hover .elementor-animated-item--exit-to-left, .elementor-animated-content:hover .elementor-animated-item--exit-to-top, .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-right {
    -webkit-transform: translateX(30px);
        -ms-transform: translateX(30px);
            transform: translateX(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-left {
    -webkit-transform: translateX(-30px);
        -ms-transform: translateX(-30px);
            transform: translateX(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-up {
    -webkit-transform: translateY(-30px);
        -ms-transform: translateY(-30px);
            transform: translateY(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-down {
    -webkit-transform: translateY(30px);
        -ms-transform: translateY(30px);
            transform: translateY(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-right {
    --translate: 8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-left {
    --translate: -8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-top {
    --translate: 0, -8%; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-bottom {
    --translate: 0, 8%; }
  .elementor-animated-content *[class^="elementor-animated-item"] {
    will-change: transform, opacity; }
  .elementor-animated-content .elementor-animated-item--shrink-contained {
    -webkit-transform: scale(1.17);
        -ms-transform: scale(1.17);
            transform: scale(1.17); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-in {
    -webkit-transform: scale(0.2);
        -ms-transform: scale(0.2);
            transform: scale(0.2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out {
    -webkit-transform: scale(2);
        -ms-transform: scale(2);
            transform: scale(2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out, .elementor-animated-content .elementor-animated-item--enter-zoom-in, .elementor-animated-content .elementor-animated-item--fade-in {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-zoom-out, .elementor-animated-content .elementor-animated-item--exit-zoom-in, .elementor-animated-content .elementor-animated-item--fade-out {
    opacity: 1;
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1); }
  .elementor-animated-content .elementor-animated-item--enter-from-right {
    -webkit-transform: translateX(1000px);
        -ms-transform: translateX(1000px);
            transform: translateX(1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-left {
    -webkit-transform: translateX(-1000px);
        -ms-transform: translateX(-1000px);
            transform: translateX(-1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-top {
    -webkit-transform: translateY(-600px);
        -ms-transform: translateY(-600px);
            transform: translateY(-600px); }
  .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    -webkit-transform: translateY(500px);
        -ms-transform: translateY(500px);
            transform: translateY(500px); }
  .elementor-animated-content .elementor-animated-item--enter-from-right, .elementor-animated-content .elementor-animated-item--enter-from-left, .elementor-animated-content .elementor-animated-item--enter-from-top, .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-to-right, .elementor-animated-content .elementor-animated-item--exit-to-left, .elementor-animated-content .elementor-animated-item--exit-to-top, .elementor-animated-content .elementor-animated-item--exit-to-bottom {
    opacity: 1;
    -webkit-transform: translateY(0) translateX(0);
        -ms-transform: translateY(0) translateX(0);
            transform: translateY(0) translateX(0); }
  .elementor-animated-content .elementor-animated-item--move-contained-right, .elementor-animated-content .elementor-animated-item--move-contained-left, .elementor-animated-content .elementor-animated-item--move-contained-top, .elementor-animated-content .elementor-animated-item--move-contained-bottom {
    -webkit-transform: scale(1.2) translate(var(--translate));
        -ms-transform: scale(1.2) translate(var(--translate));
            transform: scale(1.2) translate(var(--translate)); }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover {
  outline: 1px solid #fec449; }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings {
  background-image: -webkit-gradient(linear, left bottom, left top, from(#feb416), to(#fec449));
  background-image: -webkit-linear-gradient(bottom, #feb416, #fec449);
  background-image: -o-linear-gradient(bottom, #feb416, #fec449);
  background-image: linear-gradient(to top, #feb416, #fec449); }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover {
    background-color: #feb416; }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save {
    display: none; }

body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  width: 100%;
  padding: 0; }

body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  padding: 0; }

.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart {
  margin: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap; }

.woocommerce div.product.elementor .quantity .qty {
  vertical-align: top;
  margin-right: 0; }

.woocommerce div.product.elementor .quantity + .button {
  margin-left: 10px; }

.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input {
  height: 100%; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
  margin-right: initial; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
  -ms-flex-preferred-size: auto;
      flex-basis: auto; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-right: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%; }

@media (max-width: 1024px) {
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-right: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    -ms-flex-preferred-size: auto;
        flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-right: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      -ms-flex-preferred-size: 100%;
          flex-basis: 100%; } }

@media (max-width: 767px) {
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-right: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    -ms-flex-preferred-size: auto;
        flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-right: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      -ms-flex-preferred-size: 100%;
          flex-basis: 100%; } }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button {
  background-color: #5bc0de; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button {
  background-color: #5cb85c; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button {
  background-color: #f0ad4e; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button {
  background-color: #d9534f; }

.elementor-widget-wc-add-to-cart .quantity {
  display: inline-block; }

.elementor-widget-wc-add-to-cart.elementor-align-center form.cart {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-widget-wc-add-to-cart.elementor-align-right form.cart {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor-widget-wc-add-to-cart.elementor-align-left form.cart {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.woocommerce div.product.elementor {
  /*  Reset WC tabs style  */
  /*  End Reset WC tabs style  */ }
  .woocommerce div.product.elementor ul.tabs:before {
    position: static;
    content: none;
    width: auto;
    bottom: auto;
    left: auto;
    border-bottom: 0;
    z-index: auto; }
  .woocommerce div.product.elementor ul.tabs {
    margin: 0; }
    .woocommerce div.product.elementor ul.tabs li {
      padding: 0; }
      .woocommerce div.product.elementor ul.tabs li a {
        padding: .8em 1.2em;
        line-height: 1; }
    .woocommerce div.product.elementor ul.tabs li:after,
    .woocommerce div.product.elementor ul.tabs li:before {
      border: 0;
      position: static;
      bottom: auto;
      width: auto;
      height: auto;
      content: none;
      -webkit-box-sizing: border-box;
              box-sizing: border-box; }
  .woocommerce div.product.elementor .woocommerce-tabs .panel {
    margin: 0;
    padding: 20px;
    border-radius: 0;
    border-width: 0;
    border-top: 1px solid #d3ced2;
    -webkit-box-shadow: none;
            box-shadow: none;
    margin-top: -1px; }

.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,
.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins {
  display: block; }

.elementor-widget-woocommerce-product-meta .detail-container {
  position: relative; }
  .elementor-widget-woocommerce-product-meta .detail-container:after {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%; }

.elementor-widget-woocommerce-product-meta .detail-label {
  font-weight: bold; }

.elementor-woo-meta--view-inline .product_meta {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap; }
  .elementor-woo-meta--view-inline .product_meta .detail-container:after {
    width: auto;
    left: auto;
    right: auto;
    position: absolute;
    height: 100%;
    top: 50%;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%);
    border-top: 0;
    border-bottom: 0;
    border-right: 0;
    border-left-width: 1px;
    border-style: solid;
    right: -8px; }

.elementor-woo-meta--view-table .product_meta {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column; }
  .elementor-woo-meta--view-table .product_meta .detail-container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .elementor-woo-meta--view-table .product_meta .detail-label {
    min-width: 108px; }

.elementor-woo-meta--view-stacked .product_meta .detail-container {
  display: block; }

.woocommerce div.product.elementor .woocommerce-product-rating {
  margin-bottom: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.woocommerce div.product.elementor .star-rating {
  margin-top: 0; }

.elementor-product-rating--align-left .woocommerce-product-rating {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-product-rating--align-right .woocommerce-product-rating {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor-product-rating--align-center .woocommerce-product-rating {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link {
  margin-left: auto; }

.elementor-products-grid ul.products.elementor-grid {
  display: grid;
  margin: 0;
  grid-column-gap: 20px;
  grid-row-gap: 40px; }
  .elementor-products-grid ul.products.elementor-grid:before, .elementor-products-grid ul.products.elementor-grid:after {
    content: none;
    display: none; }
  .elementor-products-grid ul.products.elementor-grid li.product {
    width: auto;
    padding: 0;
    margin: 0;
    float: none; }
    .elementor-products-grid ul.products.elementor-grid li.product .onsale {
      padding: 0;
      display: none; }
    .elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link {
      display: block;
      position: relative; }

.elementor-products-grid:not(.show-heading-yes) .products > h2 {
  display: none; }

.elementor-products-grid nav.woocommerce-pagination {
  margin-top: 40px; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul {
  border: none 0; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li {
  border-right: none 0;
  border-left: none 0; }

.elementor-product-loop-item--align-left ul.products li.product .star-rating {
  margin-right: auto; }

.elementor-product-loop-item--align-right ul.products li.product .star-rating {
  margin-left: auto; }

.elementor-product-loop-item--align-center ul.products li.product .star-rating {
  margin-right: auto;
  margin-left: auto; }

.woocommerce .elementor-element.elementor-products-grid ul.products li.product {
  width: auto; }

.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,
.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product {
  width: auto; }

@media (min-width: 1025px) {
  .elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products {
    grid-template-columns: repeat(2, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products {
    grid-template-columns: repeat(3, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products {
    grid-template-columns: repeat(4, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products {
    grid-template-columns: repeat(5, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products {
    grid-template-columns: repeat(6, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products {
    grid-template-columns: repeat(7, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products {
    grid-template-columns: repeat(8, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products {
    grid-template-columns: repeat(9, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products {
    grid-template-columns: repeat(10, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products {
    grid-template-columns: repeat(11, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products {
    grid-template-columns: repeat(12, 1fr); } }

@media (max-width: 1024px) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(3, 1fr); } }

@media (max-width: 767px) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(2, 1fr); } }

.elementor.product .woocommerce-product-gallery__trigger + .woocommerce-product-gallery__wrapper {
  overflow: hidden; }

.woocommerce .elementor-widget-woocommerce-product-images span.onsale {
  padding: 0; }

.elementor-menu-cart__wrapper {
  text-align: var(--main-alignment, left); }

.elementor-menu-cart__toggle_wrapper {
  display: inline-block;
  position: relative; }

.elementor-menu-cart__toggle {
  display: inline-block; }
  .elementor-menu-cart__toggle .elementor-button {
    background-color: var(--toggle-button-background-color, transparent);
    color: var(--toggle-button-text-color, #818a91);
    border-style: var(--toggle-button-border-type, solid);
    border-width: var(--toggle-button-border-width, 1px);
    border-color: var(--toggle-button-border-color, #818a91);
    border-radius: var(--toggle-button-border-radius, 0px);
    display: -webkit-inline-box;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    padding: var(--toggle-icon-padding, 12px 24px); }
    .elementor-menu-cart__toggle .elementor-button:hover {
      color: var(--toggle-button-hover-text-color, #818a91);
      background-color: var(--toggle-button-hover-background-color, transparent);
      border-color: var(--toggle-button-hover-border-color, #818a91); }
      .elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon {
        color: var(--toggle-button-icon-hover-color, #818a91); }
  .elementor-menu-cart__toggle .elementor-button-text {
    margin-right: 0.3em; }
  .elementor-menu-cart__toggle .elementor-button-icon {
    position: relative;
    -webkit-transition: color 0.1s;
    -o-transition: color 0.1s;
    transition: color 0.1s;
    color: var(--toggle-button-icon-color, #818a91);
    font-size: var(--toggle-icon-size, inherit); }

.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: block;
  position: absolute;
  min-width: 1.6em;
  height: 1.6em;
  line-height: 1.5em;
  top: -0.7em;
  right: -0.7em;
  border-radius: 100%;
  color: var(--items-indicator-text-color, #fff);
  background-color: var(--items-indicator-background-color, #d9534f);
  text-align: center;
  font-size: 10px; }

.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: inline-block;
  font-weight: normal; }

.elementor-menu-cart__container {
  -webkit-transform: scale(1);
      -ms-transform: scale(1);
          transform: scale(1);
  overflow: hidden;
  position: fixed;
  z-index: 9998;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgba(0, 0, 0, 0.25);
  -webkit-transition: background-color 0.4s, -webkit-transform 0s;
  transition: background-color 0.4s, -webkit-transform 0s;
  -o-transition: background-color 0.4s, transform 0s;
  transition: background-color 0.4s, transform 0s;
  transition: background-color 0.4s, transform 0s, -webkit-transform 0s;
  text-align: left; }

.elementor-menu-cart__main {
  position: fixed;
  left: var(--side-cart-alignment-left, auto);
  right: var(--side-cart-alignment-right, 0);
  -webkit-transform: translateX(0);
      -ms-transform: translateX(0);
          transform: translateX(0);
  top: 0;
  bottom: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch;
  font-size: 14px;
  min-height: 200px;
  width: 350px;
  max-width: 100%;
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s;
  padding: var(--cart-padding, 20px 30px);
  background-color: var(--cart-background-color, #fff);
  -webkit-box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
          box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
  border-style: var(--cart-border-style, none);
  border-color: var(--cart-border-color, initial);
  border-radius: var(--cart-border-radius, 0px);
  margin-top: var(--mini-cart-spacing, 0px); }
  .elementor-menu-cart__main .widget_shopping_cart_content {
    height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }
    .elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message {
      color: var(--empty-message-color, inherit);
      text-align: var(--empty-message-alignment, left); }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
  background-color: transparent;
  -webkit-transform: scale(0);
      -ms-transform: scale(0);
          transform: scale(0);
  -webkit-transition: background-color 0.4s, -webkit-transform 0s 0.4s;
  transition: background-color 0.4s, -webkit-transform 0s 0.4s;
  -o-transition: background-color 0.4s, transform 0s 0.4s;
  transition: background-color 0.4s, transform 0s 0.4s;
  transition: background-color 0.4s, transform 0s 0.4s, -webkit-transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button {
    display: none; }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
  overflow: hidden;
  opacity: 0;
  -webkit-transform: var(--side-cart-alignment-transform, translateX(100%));
      -ms-transform: var(--side-cart-alignment-transform, translateX(100%));
          transform: var(--side-cart-alignment-transform, translateX(100%)); }

.elementor-menu-cart__close-button {
  width: var(--cart-close-icon-size, 25px);
  height: var(--cart-close-icon-size, 25px);
  position: relative;
  margin: 0 0 20px;
  -ms-flex-item-align: end;
      align-self: flex-end;
  cursor: pointer;
  display: inline-block;
  font-family: eicons;
  font-size: 20px;
  line-height: 1;
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s; }
  .elementor-menu-cart__close-button:before, .elementor-menu-cart__close-button:after {
    content: '';
    position: absolute;
    height: 3px;
    width: 100%;
    top: 50%;
    left: 0;
    margin-top: -1px;
    background: var(--cart-close-button-color, #818a91);
    border-radius: 1px;
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s; }
  .elementor-menu-cart__close-button:hover::before, .elementor-menu-cart__close-button:hover::after {
    background: var(--cart-close-button-hover-color, #818a91); }
  .elementor-menu-cart__close-button::before {
    -webkit-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
            transform: rotate(45deg); }
  .elementor-menu-cart__close-button::after {
    -webkit-transform: rotate(-45deg);
        -ms-transform: rotate(-45deg);
            transform: rotate(-45deg); }

.elementor-menu-cart__products {
  max-height: calc(100vh - 250px);
  overflow: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch; }

.elementor-menu-cart__product {
  display: grid;
  grid-template-columns: 28% auto;
  grid-template-rows: var(--price-quantity-position--grid-template-rows, auto auto);
  position: relative;
  border-width: 0 0 var(--divider-width, 1px);
  border-bottom-style: var(--divider-style, solid);
  border-bottom-color: var(--divider-color, #D4D4D4); }
  .elementor-menu-cart__product .variation {
    display: grid;
    grid-template-columns: -webkit-max-content auto;
    grid-template-columns: max-content auto;
    margin: 10px 0; }
    .elementor-menu-cart__product .variation dt {
      grid-column-start: 1; }
    .elementor-menu-cart__product .variation dd {
      grid-column-start: 2;
      -webkit-margin-start: 5px;
              margin-inline-start: 5px; }
      .elementor-menu-cart__product .variation dd p {
        margin-bottom: 0; }
  .elementor-menu-cart__product-image {
    grid-row-start: 1;
    grid-row-end: 3;
    width: 100%; }
    .elementor-menu-cart__product-image img, .elementor-menu-cart__product-image a {
      display: block; }
  .elementor-menu-cart__product-name {
    grid-column-start: 2;
    grid-column-end: 3;
    margin: 0; }
    .elementor-menu-cart__product-name a {
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
  .elementor-menu-cart__product-price {
    grid-column-start: 2;
    grid-column-end: 3;
    -ms-flex-item-align: var(--price-quantity-position--align-self, end);
        align-self: var(--price-quantity-position--align-self, end);
    font-weight: 300;
    color: var(--product-price-color, #D4D4D4); }
  .elementor-menu-cart__product-name, .elementor-menu-cart__product-price {
    font-size: 14px;
    padding-left: 20px; }
  .elementor-menu-cart__product-remove {
    color: #818a91;
    width: var(--remove-item-button-size, 22px);
    height: var(--remove-item-button-size, 22px);
    border-radius: var(--remove-item-button-size, 22px);
    border: 1px solid var(--remove-item-button-color, #D4D4D4);
    text-align: center;
    overflow: hidden;
    position: absolute;
    right: 0;
    bottom: 20px;
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s; }
    .elementor-menu-cart__product-remove:hover {
      border: 1px solid var(--remove-item-button-hover-color, #D4D4D4); }
      .elementor-menu-cart__product-remove:hover::before, .elementor-menu-cart__product-remove:hover::after {
        background: var(--remove-item-button-hover-color, #D4D4D4); }
    .elementor-menu-cart__product-remove:before, .elementor-menu-cart__product-remove:after {
      content: '';
      position: absolute;
      height: 1px;
      width: 50%;
      top: 50%;
      left: 25%;
      margin-top: -1px;
      background: var(--remove-item-button-color, #D4D4D4);
      z-index: 1;
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
    .elementor-menu-cart__product-remove::before {
      -webkit-transform: rotate(45deg);
          -ms-transform: rotate(45deg);
              transform: rotate(45deg); }
    .elementor-menu-cart__product-remove::after {
      -webkit-transform: rotate(-45deg);
          -ms-transform: rotate(-45deg);
              transform: rotate(-45deg); }
    .elementor-menu-cart__product-remove > a {
      display: block;
      z-index: 2;
      width: 100%;
      height: 100%;
      overflow: hidden;
      opacity: 0;
      position: absolute; }
      .elementor-menu-cart__product-remove > a.remove_from_cart_button {
        display: var(--remove-from-cart-button, block); }
      .elementor-menu-cart__product-remove > a.elementor_remove_from_cart_button {
        display: var(--elementor-remove-from-cart-button, none); }

.elementor-menu-cart__product:last-child {
  border: none; }

.elementor-menu-cart__product:not(:first-of-type), .elementor-menu-cart__subtotal, .elementor-menu-cart__footer-buttons {
  padding-top: var(--product-divider-gap, 20px); }

.elementor-menu-cart__product {
  padding-right: 30px; }

.elementor-menu-cart__product, .elementor-menu-cart__subtotal {
  padding-bottom: var(--product-divider-gap, 20px); }

.elementor-menu-cart__subtotal {
  font-size: 20px;
  text-align: var(--menu-cart-subtotal-text-align, center);
  font-weight: 600;
  color: var(--menu-cart-subtotal-color, inherit);
  border-style: var(--subtotal-divider-style, solid);
  border-width: var(--subtotal-divider-top-width, 1px) var(--subtotal-divider-right-width, 1px) var(--subtotal-divider-bottom-width, 1px) var(--subtotal-divider-left-width, 1px);
  border-color: var(--subtotal-divider-color, #D4D4D4); }

.elementor-menu-cart__footer-buttons {
  font-size: 20px;
  text-align: var(--cart-footer-buttons-alignment-text-align, center);
  display: var(--cart-footer-buttons-alignment-display, grid);
  grid-template-columns: var(--cart-footer-layout, 1fr 1fr);
  margin-top: var(--cart-buttons-position-margin, 0);
  grid-column-gap: var(--space-between-buttons, 10px);
  grid-row-gap: var(--space-between-buttons, 10px); }
  .elementor-menu-cart__footer-buttons .elementor-button {
    display: inline-block;
    border-radius: var(--cart-footer-buttons-border-radius, 0px);
    height: -webkit-fit-content;
    height: -moz-fit-content;
    height: fit-content; }
    .elementor-menu-cart__footer-buttons .elementor-button--view-cart {
      display: var(--view-cart-button-display, inline-block);
      color: var(--view-cart-button-text-color, #fff);
      padding: var(--view-cart-button-padding, 15px);
      background-color: var(--view-cart-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover {
        color: var(--view-cart-button-hover-text-color, #fff);
        background-color: var(--view-cart-button-hover-background-color, #818a91); }
    .elementor-menu-cart__footer-buttons .elementor-button--checkout {
      display: var(--checkout-button-display, inline-block);
      color: var(--checkout-button-text-color, #fff);
      padding: var(--checkout-button-padding, 15px);
      background-color: var(--checkout-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--checkout:hover {
        color: var(--checkout-button-hover-text-color, #fff);
        background-color: var(--checkout-button-hover-background-color, #818a91); }
    @media (max-width: 767px) {
      .elementor-menu-cart__footer-buttons .elementor-button {
        padding-left: 10px;
        padding-right: 10px; } }

/* The following is all to apply settings from the controls */
.elementor-widget-woocommerce-menu-cart {
  /* Fix to prevent the cart modal flash when using the typography controls */
  /* Fix for short-lived legacy cart type */ }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before {
    content: none; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e3'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e4'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e5'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e6'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e7'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e8'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e9'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8ea'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8eb'; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product {
    padding-left: 0;
    padding-right: 0;
    grid-template-columns: 25% auto; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove {
    top: 0;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove {
    top: 20px;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove {
    -webkit-transform: translateY(50%);
        -ms-transform: translateY(50%);
            transform: translateY(50%);
    bottom: 50%; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove {
    top: auto;
    bottom: 20px; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart {
    /* The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
			and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
      position: absolute;
      z-index: 89;
      width: auto;
      height: auto;
      overflow: visible;
      top: 100%;
      bottom: auto;
      background: none;
      min-width: 330px;
      left: 0;
      right: auto;
      -webkit-transform: scale(1);
          -ms-transform: scale(1);
              transform: scale(1);
      -webkit-transition: background-color 0.4s, -webkit-transform 0s;
      transition: background-color 0.4s, -webkit-transform 0s;
      -o-transition: background-color 0.4s, transform 0s;
      transition: background-color 0.4s, transform 0s;
      transition: background-color 0.4s, transform 0s, -webkit-transform 0s; }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main {
      width: auto;
      height: auto;
      position: relative;
      top: auto;
      bottom: auto;
      right: auto;
      left: auto;
      overflow: visible;
      -webkit-transform: translateY(0);
          -ms-transform: translateY(0);
              transform: translateY(0);
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
    @media (max-width: 767px) {
      .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
        min-width: 300px; } }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
    -webkit-transform: scale(0);
        -ms-transform: scale(0);
            transform: scale(0);
    -webkit-transition: background-color 0.4s, -webkit-transform 0s 0.4s;
    transition: background-color 0.4s, -webkit-transform 0s 0.4s;
    -o-transition: background-color 0.4s, transform 0s 0.4s;
    transition: background-color 0.4s, transform 0s 0.4s;
    transition: background-color 0.4s, transform 0s 0.4s, -webkit-transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
    opacity: 0;
    -webkit-transform: translateY(-10px);
        -ms-transform: translateY(-10px);
            transform: translateY(-10px); }
  .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown {
    opacity: 1;
    /* This keeps mini-cart panels above other widgets so there's no flash when using the typography controls.
		The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
		and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container {
      z-index: 9998; }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart {
      z-index: 89; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container {
    display: none; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-checkout-page {
  background-color: transparent;
  font-family: Roboto, sans-serif;
  font-size: 14px;
  line-height: 21px;
  color: #818a91;
  /* one column layout */
  /* override theme defaults for themes that have hover background colors on these elements. The hover background colors do not play well with the widget's initial design. */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-checkout-page ::-webkit-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page ::-moz-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page ::-ms-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > td,
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > th {
    background-color: transparent; }
  .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: #f7f7f7;
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: #f7f7f7;
      border-color: var(--forms-fields-focus-border-color, initial);
      -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
           -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
              transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below {
    background-color: #f7f7f7; }
  .elementor-widget-woocommerce-checkout-page .e-description {
    color: var(--sections-descriptions-color, #818a91);
    padding-bottom: var(--sections-descriptions-spacing, 0px);
    font-size: 14px;
    font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section {
    margin-bottom: 24px; }
    .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title {
      text-align: var(--login-title-alignment, left); }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge {
    margin-top: var(--sections-secondary-title-spacing, 24px);
    margin-bottom: 15px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor {
    margin-top: var(--sections-secondary-title-spacing, 24px); }
  .elementor-widget-woocommerce-checkout-page .e-coupon-box {
    margin-top: 24px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description {
    color: var(--forms-labels-color, #818a91);
    margin-bottom: var(--forms-label-spacing, 3px); }
  .elementor-widget-woocommerce-checkout-page .e-login-wrap {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-start {
      -webkit-box-flex: 75%;
          -ms-flex: 75%;
              flex: 75%; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
      -webkit-box-flex: 20%;
          -ms-flex: 20%;
              flex: 20%;
      text-align: right; }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .e-login-wrap {
        display: block; }
        .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
          text-align: left;
          margin-top: 15px; }
          .elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label {
            display: none; } }
  .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    margin-top: 6px; }
    .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
      margin-bottom: 0;
      font-size: 12px; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
          font-size: 11px; } }
  .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
    width: 90%;
    /* 90% to match the design */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
        width: auto; } }
  .elementor-widget-woocommerce-checkout-page .e-checkout__container {
    display: grid;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    grid-template-columns: 56% auto;
    /* column widths - to match the design */
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch;
    grid-column-gap: var(--sections-margin, 24px);
    grid-row-gap: var(--sections-margin, 24px); }
  @media (max-width: 1024px) {
    .elementor-widget-woocommerce-checkout-page .e-checkout__container {
      grid-template-columns: repeat(1, 1fr); } }
  .elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title {
    color: var(--sections-secondary-title-color, #818a91);
    margin-bottom: 0; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge {
    text-align: var(--coupon-title-alignment, left); }
  .elementor-widget-woocommerce-checkout-page #ship-to-different-address {
    margin-top: 13px;
    padding-left: var(--shipping-heading-padding-start, 30px); }
    .elementor-widget-woocommerce-checkout-page #ship-to-different-address span {
      font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-checkout-page a:hover {
      color: var(--links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-checkout-page .woocommerce {
    /* Need to use these specific selectors to override WooCommerce CSS */
    /* Need the <button> selector here so that we can target .woocommerce-button
		without being overwritten by WooCommerce's button.button selector.
		We are also targeting .woocommerce-button because none of this styling should
		apply to the Purchase button. Only The Login/Apply coupon button. */
    /* Main Sections styling start */
    /* Main Sections styling end */
    /* Styling for everything classified as 'Messages' start */
    /* Styling for everything classified as 'Messages' end */ }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      padding-left: var(--forms-columns-gap-padding, 0px);
      padding-right: var(--forms-columns-gap-padding, 0px);
      margin-left: var(--forms-columns-gap-margin, 0px);
      margin-right: var(--forms-columns-gap-margin, 0px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label {
        color: var(--forms-labels-color, #818a91);
        margin-bottom: var(--forms-label-spacing, 3px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea {
        color: var(--forms-fields-normal-color, #818a91);
        background-color: #f7f7f7;
        border-radius: var(--forms-fields-border-radius, 0px);
        padding: var(--forms-fields-padding, 16px);
        font-size: 14px;
        border: none;
        font-weight: 400; }
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus {
          color: var(--forms-fields-focus-color, #818a91);
          background-color: #f7f7f7;
          border-color: var(--forms-fields-focus-border-color, #818a91);
          -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
               -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                  transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field {
      margin-bottom: 5px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .create-account,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      /* need to use !important here to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 0 !important; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .input-radio,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span {
      position: relative;
      top: 2px;
      color: var(--sections-checkboxes-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label {
      display: inline; }
    .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #6F6F6F);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: 1rem;
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover {
        color: var(--forms-buttons-hover-text-color, #6F6F6F);
        -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
      margin-right: 1%; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
          width: 100%;
          margin-right: 0;
          margin-bottom: 15px; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-info {
      border-top-color: transparent;
      background-color: transparent;
      padding: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p {
      font-weight: 400;
      font-size: 12px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info {
      font-weight: 400;
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment,
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      background: var(--sections-background-color, #ffffff);
      border-radius: var(--sections-border-radius, 3px);
      padding: var(--sections-padding, 16px 30px);
      margin: var(--sections-margin, 0 0 24px 0);
      border-style: var(--sections-border-type, solid);
      border-color: var(--sections-border-color, #D4D4D4);
      border-width: 1px;
      display: block; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      display: var(--additional-information-display, none); }
    @media (min-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
        margin: var(--sections-margin, 0); } }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message {
      color: var(--sections-messages-color, #818a91);
      font-weight: 400; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p {
      margin-top: 25px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1 {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2 {
      padding-top: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading {
      text-align: var(--order-review-title-alignment, left); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table {
      margin-bottom: 0;
      border: 0;
      font-size: 14px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead {
        background-color: transparent; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th {
          padding-top: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td {
        color: #000000; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity {
          font-weight: normal; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td {
        color: #818a91; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th {
        border: 0;
        padding-left: 0;
        padding-bottom: 15px;
        padding-top: 15px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td {
        padding-bottom: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td {
      font-weight: 400;
      color: var(--order-summary-items-color, #000000);
      border-bottom-color: var(--order-summary-items-divider-color, #818a91);
      border-bottom-width: var(--order-summary-items-divider-weight, 0px);
      border-bottom-style: solid; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name {
        padding-right: 40px;
        max-width: 150px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total {
        vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th {
      padding-top: var(--order-summary-rows-gap-top, 15px);
      padding-bottom: var(--order-summary-rows-gap-bottom, 15px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th {
      color: var(--order-summary-totals-color, #818a91);
      vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th {
      border-top-color: var(--order-summary-totals-divider-color, #818a91);
      border-top-width: var(--order-summary-totals-divider-weight, 0px);
      border-top-style: solid; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td {
      max-width: 70px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce h3 {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      margin-bottom: var(--sections-title-spacing, 30px);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row > span {
      font-weight: 400;
      font-size: 14px;
      margin-bottom: 3px;
      color: #818a91; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
      /* use 48% to match the design. Default WC CSS uses 47% */
      width: 48%; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3 {
      text-align: var(--billing-details-title-alignment, left); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row {
      margin-bottom: var(--forms-rows-gap, 5px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child {
        margin-bottom: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login {
      margin-top: -8px;
      z-index: 999;
      background: #ffffff;
      border-top-width: 0;
      position: relative;
      margin-bottom: 0;
      color: #818a91; }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
        width: 100%; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle {
      display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
      width: 85%;
      /* 85% to match the design */ }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
          width: 35%;
          /* 35% to match the design */ } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3 {
      background: var(--additional-fields-title-alignment, left); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address {
      margin-bottom: var(--sections-margin, 20px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment {
      margin-top: 24px;
      padding: 15px 25px 25px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods {
        border-bottom: none;
        padding: 0; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box {
          background-color: #f7f7f7; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before {
            display: none; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li {
          line-height: 21px; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
            padding-left: 15px;
            font-size: 12px; }
            @media (max-width: 1024px) {
              .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
                float: none;
                font-size: 11px;
                padding-left: 10px; } }
          @media (max-width: 1024px) {
            .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img {
              width: 55px;
              /* 55px to match the design */ } }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        padding: 0;
        margin-bottom: 0;
        -webkit-box-align: var(--place-order-title-alignment, stretch);
            -ms-flex-align: var(--place-order-title-alignment, stretch);
                align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order {
        background-color: #5bc0de;
        width: var(--purchase-button-width, auto);
        float: none;
        color: var(--purchase-button-normal-text-color, #ffffff);
        min-height: auto;
        padding: var(--purchase-button-padding, 1em 1em);
        border-radius: var(--purchase-button-border-radius, 3px); }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover {
          background-color: #5bc0de;
          color: var(--purchase-button-hover-text-color, #ffffff);
          border-color: var(--purchase-button-hover-border-color, #5bc0de);
          -webkit-transition-duration: var(--purchase-button-hover-transition-duration, 0.3s);
               -o-transition-duration: var(--purchase-button-hover-transition-duration, 0.3s);
                  transition-duration: var(--purchase-button-hover-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before {
        display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2 {
      width: auto;
      float: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
      display: grid;
      grid-template-columns: auto auto;
      /*columns widths*/
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
        text-align: right; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
          display: block; }
          .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
            text-align: left; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field {
      /* need to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 10px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000);
      /* We need to specify these values so that the 'Items' Typography control does not affect
			the 'Variations' */
      font-size: 14px;
      font-style: normal;
      text-transform: none;
      letter-spacing: normal;
      text-decoration: none;
      line-height: 21px; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-cart {
  /* one column layout */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart table tbody tr:hover > td,
  .elementor-widget-woocommerce-cart table tbody tr:hover > th {
    background-color: inherit; }
  .elementor-widget-woocommerce-cart .e {
    /* .e-clear is a class that is added between the cart sections to fix collapsing margins,
		especially when custom margins are being set by the Style Controls, then the margins could
		start overriding the other margin, leaving one margin */ }
    .elementor-widget-woocommerce-cart .e-clear {
      overflow: hidden;
      height: 0;
      width: 0; }
    .elementor-widget-woocommerce-cart .e-cart {
      /* Main sections styling start */
      /* Main sections styling end */
      /* one column layout */ }
      .elementor-widget-woocommerce-cart .e-cart-section {
        background-color: var(--sections-background-color, #ffffff);
        padding: var(--sections-padding, 16px 30px);
        margin: var(--sections-margin, 0 0 30px 0);
        border-radius: var(--sections-border-radius, 3px);
        border-width: 1px;
        border-style: var(--sections-border-type, solid);
        border-color: var(--sections-border-color, #D4D4D4); }
      @media (min-width: 1024px) {
        .elementor-widget-woocommerce-cart .e-cart-section:last-child {
          margin: var(--sections-margin, 0); } }
      .elementor-widget-woocommerce-cart .e-cart-content {
        color: var(--sections-descriptions-color, #818a91);
        font-size: 15px;
        font-weight: 400;
        line-height: 23px;
        letter-spacing: 0; }
      .elementor-widget-woocommerce-cart .e-cart__container {
        display: grid;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        grid-template-columns: 59% auto;
        /* 59% to match the required design */
        -webkit-box-align: stretch;
            -ms-flex-align: stretch;
                align-items: stretch;
        grid-column-gap: var(--sections-margin, 30px);
        grid-row-gap: var(--sections-margin, 30px); }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-cart .e-cart__container {
          grid-template-columns: repeat(1, 1fr); } }
      .elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container {
        grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart .select2-container {
    margin-bottom: 4px; }
    .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 0px);
      border: none;
      height: 45px; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, initial);
        -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder {
        color: var(--forms-fields-normal-color, #818a91); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered {
        color: var(--forms-fields-normal-color, #818a91);
        line-height: 45px;
        padding-left: 1rem;
        padding-right: 1rem; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow {
        height: 45px; }
    .elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below {
      background-color: #f7f7f7; }
  .elementor-widget-woocommerce-cart .woocommerce {
    font-family: Roboto, sans-serif; }
    .elementor-widget-woocommerce-cart .woocommerce button.button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #818a91);
      border-radius: var(--forms-buttons-border-radius, 3px);
      /* 0.88rem is used here so that this button will match the design layout from Product. */
      padding: var(--forms-buttons-padding, 0.88rem 2rem);
      width: var(--forms-buttons-width, auto);
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-cart .woocommerce button.button:hover {
        color: var(--forms-buttons-hover-text-color, #818a91);
        -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
        border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce button.button.disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled] {
        /* 0.88rem is used here so that this button will match the design layout from Product. */
        padding: var(--forms-buttons-padding, 0.88rem 2rem);
        color: var(--forms-buttons-normal-text-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover {
          background-color: var(--forms-buttons-hover-background-color, #ffffff);
          color: var(--forms-buttons-hover-text-color, #818a91);
          -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
               -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                  transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
          border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form {
      margin-top: var(--sections-descriptions-spacing, 15px); }
    .elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination {
      color: var(--sections-descriptions-color, #818a91);
      margin-bottom: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td {
      text-align: left !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before {
        width: 100%;
        margin-bottom: 10px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td {
      text-align: right !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td::before {
        content: attr(data-title);
        font-weight: 700;
        float: left; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      text-align: var(--totals-title-alignment, left); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td {
      padding-top: var(--totals-rows-gap-top, 12px);
      padding-bottom: var(--totals-rows-gap-bottom, 9px); }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before,
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount {
        color: var(--totals-color, #818a91);
        font-weight: 700; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td {
      border-top-color: var(--totals-divider-color, #818a91);
      border-top-width: var(--totals-divider-weight, 0); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row {
      margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-cart .woocommerce .product-name a {
      color: var(--product-link-normal-color, #000000); }
      .elementor-widget-woocommerce-cart .woocommerce .product-name a:hover {
        color: var(--product-link-hover-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .form-row {
      padding: 3px 0;
      margin: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .input-text,
    .elementor-widget-woocommerce-cart .woocommerce select {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 3px);
      border: none;
      padding: var(--forms-fields-padding, 16px);
      font-size: 14px; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::-webkit-input-placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::-webkit-input-placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::-moz-placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::-moz-placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::-ms-input-placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::-ms-input-placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text:focus,
      .elementor-widget-woocommerce-cart .woocommerce select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, transparent);
        -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-webkit-input-placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::-webkit-input-placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-moz-placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::-moz-placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-ms-input-placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::-ms-input-placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce .input-text.qty {
      background-color: transparent;
      color: var(--order-summary-color, #000000);
      border-width: var(--order-summary-quantity-border-weight, 1px);
      border-style: solid;
      border-color: var(--order-summary-quantity-border-color, #D4D4D4);
      border-radius: 3px;
      padding: 1px 2px;
      text-align: left;
      font-size: 14px;
      min-height: 28px;
      max-height: 28px; }
    .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout {
      padding-bottom: 0;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-orient: vertical;
      -webkit-box-direction: normal;
          -ms-flex-direction: column;
              flex-direction: column;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
      -webkit-box-align: var(--place-order-title-alignment, stretch);
          -ms-flex-align: var(--place-order-title-alignment, stretch);
              align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button {
        padding: var(--checkout-button-padding, 15px 1em);
        width: var(--checkout-button-width, auto);
        font-size: 15px;
        text-align: center;
        color: var(--checkout-button-normal-text-color, #ffffff);
        background-color: #5bc0de;
        border-radius: var(--checkout-button-border-radius, 3px);
        min-height: auto;
        margin-bottom: 0; }
        .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover {
          color: var(--checkout-button-hover-text-color, #ffffff);
          background-color: #5bc0de;
          border-color: var(--checkout-button-hover-border-color, #5bc0de);
          -webkit-transition-duration: var(--checkout-button-hover-transition-duration, 0.3s);
               -o-transition-duration: var(--checkout-button-hover-transition-duration, 0.3s);
                  transition-duration: var(--checkout-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-cart .woocommerce .remove {
      background: transparent;
      color: var(--order-summary-remove-icon-normal-color, #000000) !important;
      /* need important here because Woo also has !important */
      width: auto; }
      .elementor-widget-woocommerce-cart .woocommerce .remove:hover {
        background: transparent;
        color: var(--order-summary-remove-icon-hover-color, #5bc0de) !important;
        /* need important here because Woo also has !important */ }
    .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals {
      float: none;
      width: 100%; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td {
        padding-left: 0; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td {
        padding-right: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
      float: right;
      width: 100%; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .form-row {
      padding: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex; }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
        -webkit-box-flex: 2;
            -ms-flex: 2;
                flex: 2;
        padding-right: 30px; }
        @media (max-width: 1024px) {
          .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
            padding-right: 0; } }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-end {
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
          display: block; } }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-cart .woocommerce .coupon {
        margin: var(--sections-margin, 0); }
        .elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code {
          width: 100%;
          margin-right: 0;
          margin-bottom: 15px; }
        .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
          width: 100%; } }
    .elementor-widget-woocommerce-cart .woocommerce table.shop_table {
      border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
        float: left;
        font-size: 14px;
        font-weight: 700; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
          float: none;
          width: 100%; } }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table th {
        border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions {
        padding: 16px 0 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a {
        display: inline-block; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child {
        display: var(--update-cart-automatically-display, table-row); }
    .elementor-widget-woocommerce-cart .woocommerce table.cart {
      margin-bottom: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart img {
        width: 55px;
        height: auto;
        display: block; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-top: var(--order-summary-rows-gap-top, 20px);
        padding-right: 20px;
        padding-bottom: var(--order-summary-rows-gap-bottom, 20px);
        padding-left: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td span {
          color: var(--order-summary-color, #000000);
          font-size: 14px;
          font-weight: 400; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
          border-top-width: var(--order-summary-items-divider-weight, 1px);
          border-top-style: solid;
          border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
          @media (max-width: 768px) {
            .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
              border-top-width: 0; } }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove {
          padding-left: 0;
          padding-right: 0; }
      @media (min-width: 767px) {
        .elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td {
          border-top: none; } }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove {
        position: relative; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-name {
        padding-right: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
        border-top-width: var(--order-summary-items-divider-weight, 1px);
        border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
          border-top: none; } }
    @media (max-width: 768px) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-left: 0;
        padding-right: 0; } }
    @media (max-width: 767px) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart {
        padding: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
          padding: 16px 28px; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
            border-top: none; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td {
          padding-left: 0;
          padding-right: 0; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
            padding: 0; } }
    .elementor-widget-woocommerce-cart .woocommerce a {
      color: var(--links-normal-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce a:hover {
        color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      padding-top: 0;
      padding-bottom: 8px;
      padding-left: 0;
      padding-right: 20px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      margin-bottom: var(--sections-title-spacing, 1rem);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      padding-bottom: var(--order-summary-title-spacing, 8px);
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart td::before {
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button::after {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000); }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td, .elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td {
        padding-left: 0; } }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: var(--forms-fields-normal-color, #818a91); }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: var(--forms-fields-focus-color, #818a91);
    border-color: var(--forms-fields-focus-border-color, #818a91);
    -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
         -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
            transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }

.elementor-widget-woocommerce-my-account {
  font-family: Roboto, sans-serif;
  color: #818a91;
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table {
    border: none;
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    background-color: var(--sections-background-color, #ffffff); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px 3px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,
  .elementor-widget-woocommerce-my-account .e-my-account-tab address {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content {
    border: 0; }
    .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
      padding: 0;
      border: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    margin-bottom: 40px; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads,
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px 3px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content > div > p {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: var(--forms-fields-normal-background-color, #f7f7f7);
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: var(--forms-fields-focus-background-color, #f7f7f7);
      border-color: var(--forms-fields-focus-border-color, initial);
      -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
           -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
              transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below {
    background-color: var(--forms-fields-normal-background-color, #f7f7f7); }
  .elementor-widget-woocommerce-my-account .woocommerce ::-webkit-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce ::-moz-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce ::-ms-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce-message {
    font-size: 14px; }
  .elementor-widget-woocommerce-my-account .woocommerce address {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a:hover {
      color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover {
      background-color: initial; }
    .elementor-widget-woocommerce-my-account .woocommerce a.button:hover {
      background-color: initial; }
  .elementor-widget-woocommerce-my-account .woocommerce em {
    font-size: 12px;
    color: var(--login-messages-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .form-row {
    padding-left: var(--forms-columns-gap-padding-left, 0px);
    padding-right: var(--forms-columns-gap-padding-right, 0px);
    margin-left: var(--forms-columns-gap-margin-left, 0px);
    margin-right: var(--forms-columns-gap-margin-right, 0px);
    margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row label {
      color: var(--forms-labels-color, #818a91);
      margin-bottom: var(--forms-label-spacing, 0px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,
    .elementor-widget-woocommerce-my-account .woocommerce .form-row select {
      color: var(--forms-fields-normal-color, #818a91);
      border-radius: var(--forms-fields-border-radius, 0px);
      padding: var(--forms-fields-padding, 16px);
      background: #f7f7f7;
      border: none;
      font-size: 14px; }
      .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,
      .elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        border-color: var(--forms-fields-focus-border-color, #818a91);
        -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field {
    margin-bottom: 5px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text {
    margin-bottom: 15px;
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword {
    font-size: 12px;
    margin-bottom: 0px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    width: 50%;
    /* 50% to match the design - it would normally be full width */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p {
      color: var(--general-text-color, #818a91); }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first {
      width: 100%; }
  .elementor-widget-woocommerce-my-account .woocommerce .login,
  .elementor-widget-woocommerce-my-account .woocommerce .register,
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px);
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .login .button,
    .elementor-widget-woocommerce-my-account .woocommerce .register .button,
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button {
      background: #5bc0de;
      border: none;
      color: var(--forms-buttons-normal-text-color, #ffffff);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: var(--forms-buttons-padding, 12px 32px); }
      .elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover {
        color: var(--forms-buttons-hover-text-color, #ffffff);
        -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3) {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    margin-top: 10px;
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox {
    vertical-align: middle; }
  .elementor-widget-woocommerce-my-account .woocommerce p:last-of-type {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span {
    color: var(--checkboxes-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tr,
  .elementor-widget-woocommerce-my-account .woocommerce td,
  .elementor-widget-woocommerce-my-account .woocommerce th {
    border: none; }
  .elementor-widget-woocommerce-my-account .woocommerce h2,
  .elementor-widget-woocommerce-my-account .woocommerce h3 {
    color: var(--typography-section-titles-color, #000000);
    margin-top: 0;
    margin-bottom: var(--section-title-spacing, 45px);
    font-weight: 400; }
  .elementor-widget-woocommerce-my-account .woocommerce strong {
    color: var(--general-text-color, #000000); }
    .elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label {
      color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta {
    color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .product-quantity {
    font-weight: 400;
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
    float: left;
    width: 25%;
    /* 25% to match the design */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul {
      -webkit-padding-start: 0;
              padding-inline-start: 0; }
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li {
        list-style-type: none;
        margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
        display: inline-block;
        width: 100%;
        /* add a Divider between the tabs that is outside of the margins */ }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li::after {
          content: "";
          display: block;
          width: 100%;
          background-color: var(--tabs-divider-color, #818a91);
          height: var(--tabs-divider-weight, 0px);
          position: relative;
          top: calc(var(--tabs-spacing, 2px) / 2); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a {
          color: var(--tabs-active-color, #5bc0de);
          background: #eceeef;
          border-color: var(--tabs-active-border-color, transparent); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
          font-style: normal;
          font-weight: bold;
          font-size: 14px;
          color: var(--tabs-normal-color, #818a91);
          display: block;
          padding: var(--tabs-padding, 12px 20px);
          text-align: var(--tabs-alignment, start);
          background: #f7f7f7;
          border-radius: var(--tabs-border-radius, 0px);
          border-style: var(--tabs-border-type, solid);
          border-color: var(--tabs-border-color, transparent);
          border-width: 0px; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover {
            color: var(--tabs-hover-color, #5bc0de);
            border-color: var(--tabs-hover-border-color, transparent); }
          @media (max-width: 1024px) {
            .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
              padding: var(--tabs-padding, 10px); } }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard {
          margin-top: 0; }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout {
          margin-bottom: 0; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout::after {
            display: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
    float: right;
    width: 75%;
    /* 75% to match the design */
    padding: 0;
    padding-left: var(--tab-content-spacing, 6%);
    /* 6% to match the design */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
        width: 100%;
        padding: var(--tab-content-spacing, 6%) 0 0 0; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper {
      font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type {
      margin-top: 30px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark {
      background-color: transparent;
      font-weight: bold;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child th,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child th {
    border-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th {
    border-top: 0;
    padding-left: 0;
    padding-top: 0;
    padding-bottom: var(--tables-titles-spacing, 9px); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > th,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > th {
    background-color: transparent;
    padding-left: 0;
    padding-top: var(--order-summary-rows-gap-top, 9px);
    padding-bottom: var(--order-summary-rows-gap-bottom, 9px);
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .shop_table {
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        -webkit-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
                transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table td, .elementor-widget-woocommerce-my-account .woocommerce .shop_table th {
      border-top-style: var(--tables-divider-border-type, solid);
      border-top-width: var(--tables-divider-border-width, 1px);
      border-top-color: var(--tables-divider-border-color, #D4D4D4); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th {
      color: var(--tables-title-color, #000000); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span {
        color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td {
    padding-left: 0;
    color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td {
    border-top: none;
    padding-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .order-again .button {
    background: transparent;
    border: 2px solid #5bc0de;
    border-style: var(--tables-buttons-border-type, solid);
    border-color: var(--tables-buttons-border-color, #5bc0de);
    border-width: 2px;
    border-radius: var(--tables-button-border-radius, 3px);
    vertical-align: middle;
    color: var(--tables-button-normal-text-color, #818a91);
    margin-top: 0;
    margin-bottom: 0;
    padding: var(--tables-button-padding, 12px 32px); }
    .elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover {
      color: var(--tables-button-hover-text-color, #818a91);
      -webkit-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
           -o-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
              transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .title h3, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3 {
    float: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-Address address, .elementor-widget-woocommerce-my-account .woocommerce-Addresses address {
    padding: var(--sections-padding, 45px 30px 16px 30px); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .edit, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit {
    float: left;
    position: absolute;
    margin-left: var(--edit-link-margin-start, 30px);
    margin-top: var(--edit-link-margin-top, 10px); }
  .elementor-widget-woocommerce-my-account .woocommerce .u-columns {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset {
    border: none;
    padding: 0;
    -webkit-margin-start: 0;
            margin-inline-start: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend {
      font-weight: 700;
      padding: 20px 0;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button {
    background: #5bc0de;
    border: none;
    color: var(--forms-buttons-normal-text-color, #ffffff);
    border-radius: var(--forms-buttons-border-radius, 3px);
    padding: var(--forms-buttons-padding, 12px 32px);
    margin-top: 20px; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover {
      color: var(--forms-buttons-hover-text-color, #ffffff);
      -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
           -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
              transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-pagination {
    padding: 16px 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-pagination .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        -webkit-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
                transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td {
    vertical-align: top;
    line-height: unset; }

.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  float: none;
  width: 100%; }
  .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
    display: inline-block; }

.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation {
  display: block; }

.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: block; }
  .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: var(--tabs-container-justify-content, space-between);
        -ms-flex-pack: var(--tabs-container-justify-content, space-between);
            justify-content: var(--tabs-container-justify-content, space-between); }
    @media (max-width: 767px) {
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
        display: block; } }
    .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
      display: inline-block;
      width: var(--tab-width, 100%);
      padding: 0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);
      margin: 0;
      border-right-color: var(--tabs-divider-color, #818a91);
      border-right-width: var(--tabs-divider-weight, 0px);
      border-right-style: solid; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li::after {
        display: none; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type {
        padding-left: 0; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type {
        padding-right: 0;
        border-right-width: 0; }
      @media (max-width: 767px) {
        .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
          margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
          display: inline-block;
          width: 100%; } }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-content {
  float: none;
  width: 100%;
  padding: var(--tab-content-spacing, 50px) 0 0 0; }

/**
 * Specific styling in the Editor.
 */
.elementor-editor-active,
.elementor-editor-preview {
  /**
	 * Prep for the js switching of tabs when in the editor.
	 */
  /**
	 * Disable all but the first 'View' order button as
	 * this is the only order loaded for preview purposes.
	 */ }
  .elementor-editor-active .elementor-widget-container,
  .elementor-editor-preview .elementor-widget-container {
    min-height: 1px; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a {
    pointer-events: none; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button {
    pointer-events: none;
    opacity: .3; }

/**
 * Hide all the other My Account pages' content in the Editor except the first one - dashboard page
 */
.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type) {
  display: none; }

.product .count {
  background-color: inherit; }

.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2 {
  display: none; }

.woocommerce div.product.elementor form.cart div.product-addon {
  -ms-flex-preferred-size: 100%;
      flex-basis: 100%;
  -ms-flex-negative: 0;
      flex-shrink: 0; }

.e-sticky-right-column--active {
  position: -webkit-sticky;
  position: sticky;
  top: 0; }

.elementor-theme-builder-content-area {
  height: 400px; }

.elementor-location-header:before,
.elementor-location-footer:before {
  content: '';
  display: table;
  clear: both; }

.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post {
  display: block; }

.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid {
  color: #D4D4D4;
  border: none;
  border-top: 1px solid;
  border-bottom: 1px solid;
  padding-top: 10px;
  padding-bottom: 10px; }

.elementor-post-navigation-borders-yes .elementor-post-navigation__separator {
  height: 100%;
  width: 1px;
  margin: 0 auto;
  background-color: #D4D4D4; }

.elementor-post-navigation {
  overflow: hidden;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-post-navigation .post-navigation__arrow-wrapper {
    color: #D4D4D4; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev {
      font-size: 30px;
      padding-right: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next {
      font-size: 30px;
      padding-left: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper i {
      -webkit-transform: translateY(-5%);
          -ms-transform: translateY(-5%);
              transform: translateY(-5%); }
  .elementor-post-navigation .elementor-post-navigation__link__prev, .elementor-post-navigation .elementor-post-navigation__link__next {
    overflow: hidden; }
  .elementor-post-navigation .elementor-post-navigation__link a {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    max-width: 100%; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__next--label {
    text-transform: uppercase;
    font-size: 0.8em; }
  .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--title {
    font-size: 0.7em; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--label, .elementor-post-navigation .post-navigation__next--title {
    overflow: hidden;
    -o-text-overflow: ellipsis;
       text-overflow: ellipsis; }
  .elementor-post-navigation span.elementor-post-navigation__link__next {
    text-align: right; }
  .elementor-post-navigation span.elementor-post-navigation__link__next, .elementor-post-navigation span.elementor-post-navigation__link__prev {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }

.elementor-post-navigation .elementor-grid {
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between; }

.elementor-post-navigation .elementor-post-navigation__link {
  width: calc( 50% - ( 1px / 2 ));
  white-space: nowrap;
  overflow: hidden;
  -o-text-overflow: ellipsis;
     text-overflow: ellipsis; }

.elementor-post-navigation .elementor-post-navigation__separator-wrapper {
  text-align: center; }

.elementor-post-navigation .elementor-post-navigation__next {
  text-align: right; }
  .elementor-post-navigation .elementor-post-navigation__next a {
    float: right; }

.elementor-search-form {
  display: block;
  -webkit-transition: 0.2s;
  -o-transition: 0.2s;
  transition: 0.2s;
  /*------ Reset ------*/ }
  .elementor-search-form .e-font-icon-svg-container {
    width: 100%;
    height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
  .elementor-search-form input[type="search"], .elementor-search-form button {
    margin: 0;
    border: 0;
    padding: 0;
    display: inline-block;
    vertical-align: middle;
    white-space: normal;
    background: none;
    line-height: 1;
    min-width: 0;
    font-size: 15px;
    -webkit-appearance: none;
    -moz-appearance: none; }
    .elementor-search-form input[type="search"]:focus, .elementor-search-form button:focus {
      outline: 0;
      color: inherit; }
  .elementor-search-form button {
    background-color: #818a91;
    font-size: var(--e-search-form-submit-icon-size, 16px);
    color: #fff;
    border-radius: 0; }
  .elementor-search-form__container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-transition: 0.2s;
    -o-transition: 0.2s;
    transition: 0.2s;
    overflow: hidden;
    border: 0 solid transparent;
    min-height: 50px; }
    .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      background: #eceeef; }
  .elementor-search-form__input {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
    color: #55595c;
    -webkit-transition: color 0.2s;
    -o-transition: color 0.2s;
    transition: color 0.2s; }
    .elementor-search-form__input::-webkit-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-ms-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::-ms-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
  .elementor-search-form__submit {
    -webkit-transition: color 0.2s, background 0.2s;
    -o-transition: color 0.2s, background 0.2s;
    transition: color 0.2s, background 0.2s;
    font-size: var(--e-search-form-submit-icon-size, 16px); }
    .elementor-search-form__submit svg {
      fill: var(--e-search-form-submit-text-color, #fff);
      width: var(--e-search-form-submit-icon-size, 16px);
      height: var(--e-search-form-submit-icon-size, 16px); }
  .elementor-search-form .elementor-search-form__submit, .elementor-search-form .elementor-search-form__submit:hover {
    color: var(--e-search-form-submit-text-color, #fff);
    border: none;
    border-radius: 0; }
  .elementor-search-form--button-type-text .elementor-search-form__submit {
    -ms-flex-negative: 0;
        flex-shrink: 0; }
  .elementor-search-form--skin-minimal .elementor-search-form__icon {
    opacity: 0.6;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end;
    color: #55595c;
    fill: #55595c;
    font-size: var(--e-search-form-icon-size-minimal, 15px); }
    .elementor-search-form--skin-minimal .elementor-search-form__icon svg {
      width: var(--e-search-form-icon-size-minimal, 15px);
      height: var(--e-search-form-icon-size-minimal, 15px); }
  .elementor-search-form--skin-full_screen .elementor-search-form input[type="search"].elementor-search-form__input {
    font-size: 50px;
    text-align: center;
    border-style: solid;
    border-width: 0 0 1px 0;
    border-color: #fff;
    line-height: 1.5;
    color: #fff; }
  .elementor-search-form--skin-full_screen .elementor-search-form__toggle {
    display: inline-block;
    cursor: pointer;
    vertical-align: middle;
    color: var(--e-search-form-toggle-color, #494c4f);
    font-size: var(--e-search-form-toggle-size, 33px); }
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle i,
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container {
      position: relative;
      display: block;
      -webkit-transition: 0.2s;
      -o-transition: 0.2s;
      transition: 0.2s;
      width: var(--e-search-form-toggle-size, 33px);
      height: var(--e-search-form-toggle-size, 33px);
      background-color: var(--e-search-form-toggle-background-color, rgba(0, 0, 0, 0.05));
      border-style: solid;
      border-color: var(--e-search-form-toggle-color, #494c4f);
      border-width: var(--e-search-form-toggle-border-width, 0);
      border-radius: var(--e-search-form-toggle-border-radius, 3px); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        position: absolute;
        left: 50%;
        top: 50%;
        -webkit-transform: translate(-50%, -50%);
            -ms-transform: translate(-50%, -50%);
                transform: translate(-50%, -50%); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before {
        font-size: var(--e-search-form-toggle-icon-size, 0.55em); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        fill: var(--e-search-form-toggle-color, #494c4f);
        width: var(--e-search-form-toggle-icon-size, 0.55em);
        height: var(--e-search-form-toggle-icon-size, 0.55em); }
  .elementor-search-form--skin-full_screen .elementor-search-form__container {
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    position: fixed;
    z-index: 9998;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    height: 100vh;
    padding: 0 15%;
    background-color: rgba(0, 0, 0, 0.8); }
    .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      overflow: hidden;
      opacity: 0;
      -webkit-transform: scale(0);
          -ms-transform: scale(0);
              transform: scale(0); }
      .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button {
        display: none; }

.elementor-author-box {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }
  .elementor-author-box__avatar {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-right: 25px; }
    .elementor-author-box__avatar img {
      width: 100px;
      border-radius: 500px;
      -o-object-fit: cover;
         object-fit: cover; }
  .elementor-author-box__text {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    font-size: 17px; }
  .elementor-author-box__name {
    font-size: 24px;
    margin-bottom: 5px; }
  .elementor-author-box__bio {
    margin-bottom: 0.8em; }
    .elementor-author-box__bio p {
      margin-bottom: 0.8em; }
      .elementor-author-box__bio p:last-of-type {
        margin-bottom: 0; }
  .elementor-author-box--layout-image-left .elementor-author-box {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
    .elementor-author-box--layout-image-left .elementor-author-box__avatar {
      margin-left: 0;
      margin-right: 25px; }
  .elementor-author-box--layout-image-right .elementor-author-box {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
    .elementor-author-box--layout-image-right .elementor-author-box__avatar {
      margin-right: 0;
      margin-left: 25px; }
  .elementor-author-box--layout-image-above .elementor-author-box {
    display: block; }
    .elementor-author-box--layout-image-above .elementor-author-box__avatar {
      margin: 0 auto 15px;
      display: inline-block; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar {
    margin-left: 0; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar {
    margin-right: 0; }
  .elementor-author-box--align-left .elementor-author-box {
    text-align: left; }
  .elementor-author-box--align-right .elementor-author-box {
    text-align: right; }
  .elementor-author-box--align-center .elementor-author-box {
    text-align: center; }

.elementor-button.elementor-author-box__button {
  border: solid 2px #55595c;
  font-size: 15px;
  font-weight: 100;
  padding: 10px 18px; }
  .elementor-button.elementor-author-box__button, .elementor-button.elementor-author-box__button:hover {
    background: transparent;
    color: #55595c; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar {
  -ms-flex-item-align: start;
      align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar {
  -ms-flex-item-align: start;
      align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar {
  -ms-flex-item-align: center;
      align-self: center; }

.elementor-post-info__terms-list {
  display: inline-block; }

.elementor-post-info .elementor-icon-list-icon .elementor-avatar {
  border-radius: 100%; }

.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after {
  margin: initial; }

.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text {
  display: inline-block; }
  .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a, .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span {
    display: inline; }

.elementor-widget-breadcrumbs {
  font-size: 0.85em; }
  .elementor-widget-breadcrumbs p {
    margin-bottom: 0; }

.elementor-sitemap-wrap {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-flow: row wrap;
          flex-flow: row wrap; }

.elementor-sticky--active {
  z-index: 99; }

[data-elementor-type="popup"]:not(.elementor-edit-area) {
  display: none; }

[data-elementor-type="popup"] .elementor-section-wrap:not(:empty) + #elementor-add-new-section {
  display: none; }

.elementor-popup-modal {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  pointer-events: none;
  background-color: transparent;
  -webkit-user-select: auto;
     -moz-user-select: auto;
      -ms-user-select: auto;
          user-select: auto; }
  .elementor-popup-modal .dialog-header, .elementor-popup-modal .dialog-buttons-wrapper {
    display: none; }
  .elementor-popup-modal .dialog-close-button {
    display: none;
    top: 20px;
    margin-top: 0;
    right: 20px;
    opacity: 1;
    z-index: 9999;
    pointer-events: all; }
    .elementor-popup-modal .dialog-close-button svg {
      fill: #373a3c;
      height: 1em;
      width: 1em; }
  .elementor-popup-modal .dialog-widget-content {
    width: initial;
    overflow: visible;
    max-width: 100%;
    max-height: 100%;
    border-radius: 0;
    -webkit-box-shadow: none;
            box-shadow: none;
    pointer-events: all; }
  .elementor-popup-modal .dialog-message {
    width: 640px;
    max-width: 100vw;
    max-height: 100vh;
    padding: 0;
    overflow: auto;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .elementor-popup-modal .elementor {
    width: 100%; }

.elementor-motion-effects-element, .elementor-motion-effects-layer {
  -webkit-transition-property: opacity, -webkit-transform;
  transition-property: opacity, -webkit-transform;
  -o-transition-property: transform, opacity;
  transition-property: transform, opacity;
  transition-property: transform, opacity, -webkit-transform;
  -webkit-transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
       -o-transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
          transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
  -webkit-transition-duration: 1s;
       -o-transition-duration: 1s;
          transition-duration: 1s; }

.elementor-motion-effects-container {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  -webkit-transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x);
      -ms-transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x);
          transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); }

.elementor-motion-effects-layer {
  position: absolute;
  top: 0;
  left: 0;
  background-repeat: no-repeat;
  -webkit-background-size: cover;
          background-size: cover; }

.elementor-motion-effects-perspective {
  -webkit-perspective: 1200px;
          perspective: 1200px; }
/*# sourceMappingURL=frontend-lite.css.map */assets/css/widget-nav-menu-rtl.min.css000064400000070763150755004320013756 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.site-main .menu-navigation-container{overflow:visible}.elementor-item:after,.elementor-item:before{display:block;position:absolute;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transition-timing-function:cubic-bezier(.58,.3,.005,1);-o-transition-timing-function:cubic-bezier(.58,.3,.005,1);transition-timing-function:cubic-bezier(.58,.3,.005,1)}.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{opacity:0}.elementor-item-active:after,.elementor-item-active:before,.elementor-item.highlighted:after,.elementor-item.highlighted:before,.elementor-item:focus:after,.elementor-item:focus:before,.elementor-item:hover:after,.elementor-item:hover:before{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.e--pointer-double-line .elementor-item:after,.e--pointer-double-line .elementor-item:before,.e--pointer-overline .elementor-item:after,.e--pointer-overline .elementor-item:before,.e--pointer-underline .elementor-item:after,.e--pointer-underline .elementor-item:before{height:3px;width:100%;left:0;background-color:#55595c;z-index:2}.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{height:0;width:0;left:50%}.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:10px}.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{bottom:10px}.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:-10px}.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{bottom:-10px}.e--pointer-double-line.e--animation-none,.e--pointer-double-line.e--animation-none .elementor-item,.e--pointer-double-line.e--animation-none .elementor-item:after,.e--pointer-double-line.e--animation-none .elementor-item:before,.e--pointer-double-line.e--animation-none .elementor-item:focus,.e--pointer-double-line.e--animation-none .elementor-item:hover,.e--pointer-double-line.e--animation-none:after,.e--pointer-double-line.e--animation-none:before,.e--pointer-double-line.e--animation-none:focus,.e--pointer-double-line.e--animation-none:hover,.e--pointer-overline.e--animation-none,.e--pointer-overline.e--animation-none .elementor-item,.e--pointer-overline.e--animation-none .elementor-item:after,.e--pointer-overline.e--animation-none .elementor-item:before,.e--pointer-overline.e--animation-none .elementor-item:focus,.e--pointer-overline.e--animation-none .elementor-item:hover,.e--pointer-overline.e--animation-none:after,.e--pointer-overline.e--animation-none:before,.e--pointer-overline.e--animation-none:focus,.e--pointer-overline.e--animation-none:hover,.e--pointer-underline.e--animation-none,.e--pointer-underline.e--animation-none .elementor-item,.e--pointer-underline.e--animation-none .elementor-item:after,.e--pointer-underline.e--animation-none .elementor-item:before,.e--pointer-underline.e--animation-none .elementor-item:focus,.e--pointer-underline.e--animation-none .elementor-item:hover,.e--pointer-underline.e--animation-none:after,.e--pointer-underline.e--animation-none:before,.e--pointer-underline.e--animation-none:focus,.e--pointer-underline.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-double-line .elementor-item:before,.e--pointer-overline .elementor-item:before{content:"";top:0}.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{width:10px;left:-20px}.e--pointer-double-line .elementor-item:after,.e--pointer-underline .elementor-item:after{content:"";bottom:0}.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{width:10px;inset-inline-start:100%}.e--pointer-framed .elementor-item:after,.e--pointer-framed .elementor-item:before{background:transparent;left:0;top:0;bottom:0;right:0;border:3px solid #55595c}.e--pointer-framed .elementor-item:before{content:""}.e--pointer-framed.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(.75);-ms-transform:scale(.75);transform:scale(.75)}.e--pointer-framed.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(1.25);-ms-transform:scale(1.25);transform:scale(1.25)}.e--pointer-framed.e--animation-grow .elementor-item:before,.e--pointer-framed.e--animation-shrink .elementor-item:before{-webkit-transition:opacity .2s,-webkit-transform .4s;transition:opacity .2s,-webkit-transform .4s;-o-transition:opacity .2s,transform .4s;transition:opacity .2s,transform .4s;transition:opacity .2s,transform .4s,-webkit-transform .4s}.e--pointer-framed.e--animation-draw .elementor-item:after,.e--pointer-framed.e--animation-draw .elementor-item:before{width:3px;height:3px}.e--pointer-framed.e--animation-draw .elementor-item:before{border-width:0 3px 3px 0;-webkit-transition:width .1s .2s,height .1s .3s,opacity .12s .22s;-o-transition:width .1s .2s,height .1s .3s,opacity .12s .22s;transition:width .1s .2s,height .1s .3s,opacity .12s .22s}.e--pointer-framed.e--animation-draw .elementor-item:after{content:"";top:auto;bottom:0;right:auto;left:0;border-width:3px 0 0 3px;-webkit-transition:width .1s,height .1s .1s,opacity .02s .18s;-o-transition:width .1s,height .1s .1s,opacity .02s .18s;transition:width .1s,height .1s .1s,opacity .02s .18s}.e--pointer-framed.e--animation-draw .elementor-item-active:after,.e--pointer-framed.e--animation-draw .elementor-item-active:before,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,.e--pointer-framed.e--animation-draw .elementor-item:focus:after,.e--pointer-framed.e--animation-draw .elementor-item:focus:before,.e--pointer-framed.e--animation-draw .elementor-item:hover:after,.e--pointer-framed.e--animation-draw .elementor-item:hover:before{width:100%;height:100%}.e--pointer-framed.e--animation-draw .elementor-item-active:before,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,.e--pointer-framed.e--animation-draw .elementor-item:focus:before,.e--pointer-framed.e--animation-draw .elementor-item:hover:before{-webkit-transition:opacity .02s,height .1s,width .1s .1s;-o-transition:opacity .02s,height .1s,width .1s .1s;transition:opacity .02s,height .1s,width .1s .1s}.e--pointer-framed.e--animation-draw .elementor-item-active:after,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,.e--pointer-framed.e--animation-draw .elementor-item:focus:after,.e--pointer-framed.e--animation-draw .elementor-item:hover:after{-webkit-transition:opacity .02s .2s,height .1s .2s,width .1s .3s;-o-transition:opacity .02s .2s,height .1s .2s,width .1s .3s;transition:opacity .02s .2s,height .1s .2s,width .1s .3s}.e--pointer-framed.e--animation-corners .elementor-item:after,.e--pointer-framed.e--animation-corners .elementor-item:before{width:3px;height:3px}.e--pointer-framed.e--animation-corners .elementor-item:before{border-width:3px 3px 0 0}.e--pointer-framed.e--animation-corners .elementor-item:after{content:"";top:auto;bottom:0;right:auto;left:0;border-width:0 0 3px 3px}.e--pointer-framed.e--animation-corners .elementor-item-active:after,.e--pointer-framed.e--animation-corners .elementor-item-active:before,.e--pointer-framed.e--animation-corners .elementor-item.highlighted:after,.e--pointer-framed.e--animation-corners .elementor-item.highlighted:before,.e--pointer-framed.e--animation-corners .elementor-item:focus:after,.e--pointer-framed.e--animation-corners .elementor-item:focus:before,.e--pointer-framed.e--animation-corners .elementor-item:hover:after,.e--pointer-framed.e--animation-corners .elementor-item:hover:before{width:100%;height:100%;-webkit-transition:opacity 2ms,width .4s,height .4s;-o-transition:opacity 2ms,width .4s,height .4s;transition:opacity 2ms,width .4s,height .4s}.e--pointer-framed.e--animation-none,.e--pointer-framed.e--animation-none .elementor-item,.e--pointer-framed.e--animation-none .elementor-item:after,.e--pointer-framed.e--animation-none .elementor-item:before,.e--pointer-framed.e--animation-none .elementor-item:focus,.e--pointer-framed.e--animation-none .elementor-item:hover,.e--pointer-framed.e--animation-none:after,.e--pointer-framed.e--animation-none:before,.e--pointer-framed.e--animation-none:focus,.e--pointer-framed.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-background .elementor-item:after,.e--pointer-background .elementor-item:before{content:"";-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.e--pointer-background .elementor-item:before{top:0;left:0;right:0;bottom:0;background:#55595c;z-index:-1}.e--pointer-background .elementor-item-active,.e--pointer-background .elementor-item.highlighted,.e--pointer-background .elementor-item:focus,.e--pointer-background .elementor-item:hover{color:#fff}.e--pointer-background.e--animation-grow .elementor-item:before{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}.e--pointer-background.e--animation-grow .elementor-item-active:before,.e--pointer-background.e--animation-grow .elementor-item.highlighted:before,.e--pointer-background.e--animation-grow .elementor-item:focus:before,.e--pointer-background.e--animation-grow .elementor-item:hover:before{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.e--pointer-background.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.e--pointer-background.e--animation-shrink .elementor-item-active:before,.e--pointer-background.e--animation-shrink .elementor-item.highlighted:before,.e--pointer-background.e--animation-shrink .elementor-item:focus:before,.e--pointer-background.e--animation-shrink .elementor-item:hover:before{-webkit-transition:opacity .15s,-webkit-transform .4s;transition:opacity .15s,-webkit-transform .4s;-o-transition:opacity .15s,transform .4s;transition:opacity .15s,transform .4s;transition:opacity .15s,transform .4s,-webkit-transform .4s}.e--pointer-background.e--animation-sweep-left .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{left:100%}.e--pointer-background.e--animation-sweep-right .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{right:100%}.e--pointer-background.e--animation-sweep-up .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:100%}.e--pointer-background.e--animation-sweep-down .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{bottom:100%}.e--pointer-background.e--animation-shutter-out-vertical .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{bottom:50%;top:50%}.e--pointer-background.e--animation-shutter-out-horizontal .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{right:50%;left:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after{top:0;left:0;right:0;bottom:0;background:#55595c;z-index:-1}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:before{top:0;bottom:100%}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after{top:100%;bottom:0}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:before{bottom:50%}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:after{top:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:before{right:0;left:100%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after{right:100%;left:0}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:before{left:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:after{right:50%}.e--pointer-background.e--animation-none,.e--pointer-background.e--animation-none .elementor-item,.e--pointer-background.e--animation-none .elementor-item:after,.e--pointer-background.e--animation-none .elementor-item:before,.e--pointer-background.e--animation-none .elementor-item:focus,.e--pointer-background.e--animation-none .elementor-item:hover,.e--pointer-background.e--animation-none:after,.e--pointer-background.e--animation-none:before,.e--pointer-background.e--animation-none:focus,.e--pointer-background.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-text.e--animation-skew .elementor-item:focus,.e--pointer-text.e--animation-skew .elementor-item:hover{-webkit-transform:skew(-8deg);-ms-transform:skew(-8deg);transform:skew(-8deg)}.e--pointer-text.e--animation-grow .elementor-item:focus,.e--pointer-text.e--animation-grow .elementor-item:hover{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.e--pointer-text.e--animation-shrink .elementor-item:focus,.e--pointer-text.e--animation-shrink .elementor-item:hover{-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}.e--pointer-text.e--animation-float .elementor-item:focus,.e--pointer-text.e--animation-float .elementor-item:hover{-webkit-transform:translateY(-8px);-ms-transform:translateY(-8px);transform:translateY(-8px)}.e--pointer-text.e--animation-sink .elementor-item:focus,.e--pointer-text.e--animation-sink .elementor-item:hover{-webkit-transform:translateY(8px);-ms-transform:translateY(8px);transform:translateY(8px)}.e--pointer-text.e--animation-rotate .elementor-item:focus,.e--pointer-text.e--animation-rotate .elementor-item:hover{-webkit-transform:rotate(6deg);-ms-transform:rotate(6deg);transform:rotate(6deg)}.e--pointer-text.e--animation-none,.e--pointer-text.e--animation-none .elementor-item,.e--pointer-text.e--animation-none .elementor-item:after,.e--pointer-text.e--animation-none .elementor-item:before,.e--pointer-text.e--animation-none .elementor-item:focus,.e--pointer-text.e--animation-none .elementor-item:hover,.e--pointer-text.e--animation-none:after,.e--pointer-text.e--animation-none:before,.e--pointer-text.e--animation-none:focus,.e--pointer-text.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.elementor-nav-menu--main .elementor-nav-menu a{-webkit-transition:.4s;-o-transition:.4s;transition:.4s}.elementor-nav-menu--main .elementor-nav-menu a,.elementor-nav-menu--main .elementor-nav-menu a.highlighted,.elementor-nav-menu--main .elementor-nav-menu a:focus,.elementor-nav-menu--main .elementor-nav-menu a:hover{padding:13px 20px}.elementor-nav-menu--main .elementor-nav-menu a.current{background:#373a3c;color:#fff}.elementor-nav-menu--main .elementor-nav-menu a.disabled{background:#55595c;color:#a1a6a9}.elementor-nav-menu--main .elementor-nav-menu ul{position:absolute;width:12em;border-width:0;border-style:solid;padding:0}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down,.elementor-nav-menu--main .elementor-nav-menu span.scroll-up{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:20px}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow,.elementor-nav-menu--main .elementor-nav-menu span.scroll-up-arrow{position:absolute;top:-2px;right:50%;margin-right:-8px;width:0;height:0;overflow:hidden;border:8px dashed transparent;border-bottom:8px solid #494c4f}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow{top:6px;border-style:solid dashed dashed;border-color:#494c4f transparent transparent}.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow i{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow .e-font-icon-svg{height:1em;width:1em}.elementor-nav-menu--layout-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-nav-menu--layout-horizontal .elementor-nav-menu{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-nav-menu--layout-horizontal .elementor-nav-menu a{white-space:nowrap;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li>.scroll-down,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li ul{top:100%!important}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>a{-webkit-margin-start:var(--e-nav-menu-horizontal-menu-item-margin);margin-inline-start:var(--e-nav-menu-horizontal-menu-item-margin)}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>.scroll-down,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>.scroll-up,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>ul{right:var(--e-nav-menu-horizontal-menu-item-margin)!important}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:last-child)>a{-webkit-margin-end:var(--e-nav-menu-horizontal-menu-item-margin);margin-inline-end:var(--e-nav-menu-horizontal-menu-item-margin)}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:last-child):after{content:var(--e-nav-menu-divider-content,none);height:var(--e-nav-menu-divider-height,35%);border-left:var(--e-nav-menu-divider-width,2px) var(--e-nav-menu-divider-style,solid) var(--e-nav-menu-divider-color,#000);border-bottom-color:var(--e-nav-menu-divider-color,#000);border-right-color:var(--e-nav-menu-divider-color,#000);border-top-color:var(--e-nav-menu-divider-color,#000);-ms-flex-item-align:center;align-self:center}.elementor-nav-menu__align-right .elementor-nav-menu{margin-left:auto}.elementor-nav-menu__align-right .elementor-nav-menu,.elementor-nav-menu__align-right .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-nav-menu__align-left .elementor-nav-menu{margin-right:auto}.elementor-nav-menu__align-left .elementor-nav-menu,.elementor-nav-menu__align-left .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-nav-menu__align-center .elementor-nav-menu{margin-left:auto;margin-right:auto}.elementor-nav-menu__align-center .elementor-nav-menu,.elementor-nav-menu__align-center .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu{width:100%}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu>li{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-nav-menu:not(.elementor-nav-menu--toggle) .elementor-menu-toggle{display:none}.elementor-widget-nav-menu .elementor-widget-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-nav-menu{position:relative;z-index:2}.elementor-nav-menu:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.elementor-nav-menu,.elementor-nav-menu li,.elementor-nav-menu ul{display:block;list-style:none;margin:0;padding:0;line-height:normal;-webkit-tap-highlight-color:rgba(0,0,0,0)}.elementor-nav-menu ul{display:none}.elementor-nav-menu ul ul a,.elementor-nav-menu ul ul a:active,.elementor-nav-menu ul ul a:focus,.elementor-nav-menu ul ul a:hover{border-left:16px solid transparent}.elementor-nav-menu ul ul ul a,.elementor-nav-menu ul ul ul a:active,.elementor-nav-menu ul ul ul a:focus,.elementor-nav-menu ul ul ul a:hover{border-left:24px solid transparent}.elementor-nav-menu ul ul ul ul a,.elementor-nav-menu ul ul ul ul a:active,.elementor-nav-menu ul ul ul ul a:focus,.elementor-nav-menu ul ul ul ul a:hover{border-left:32px solid transparent}.elementor-nav-menu ul ul ul ul ul a,.elementor-nav-menu ul ul ul ul ul a:active,.elementor-nav-menu ul ul ul ul ul a:focus,.elementor-nav-menu ul ul ul ul ul a:hover{border-left:40px solid transparent}.elementor-nav-menu a,.elementor-nav-menu li{position:relative}.elementor-nav-menu li{border-width:0}.elementor-nav-menu a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-nav-menu a,.elementor-nav-menu a:focus,.elementor-nav-menu a:hover{padding:10px 20px;line-height:20px}.elementor-nav-menu a.current{background:#373a3c;color:#fff}.elementor-nav-menu a.disabled{cursor:not-allowed;color:#a1a6a9}.elementor-nav-menu .e-plus-icon:before{content:"+"}.elementor-nav-menu .sub-arrow{line-height:1;padding:10px 10px 10px 0;margin-top:-10px;margin-bottom:-10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-nav-menu .sub-arrow i{pointer-events:none}.elementor-nav-menu .sub-arrow .fa.fa-chevron-down,.elementor-nav-menu .sub-arrow .fas.fa-chevron-down{font-size:.7em}.elementor-nav-menu .sub-arrow .e-font-icon-svg{height:1em;width:1em}.elementor-nav-menu .sub-arrow .e-font-icon-svg.fa-svg-chevron-down{height:.7em;width:.7em}.elementor-nav-menu--dropdown .elementor-item.elementor-item-active,.elementor-nav-menu--dropdown .elementor-item.highlighted,.elementor-nav-menu--dropdown .elementor-item:focus,.elementor-nav-menu--dropdown .elementor-item:hover,.elementor-sub-item.elementor-item-active,.elementor-sub-item.highlighted,.elementor-sub-item:focus,.elementor-sub-item:hover{background-color:#55595c;color:#fff}.elementor-menu-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:22px;padding:.25em;cursor:pointer;border:0 solid;border-radius:3px;background-color:rgba(0,0,0,.05);color:#494c4f}.elementor-menu-toggle.elementor-active .elementor-menu-toggle__icon--open,.elementor-menu-toggle:not(.elementor-active) .elementor-menu-toggle__icon--close{display:none}.elementor-menu-toggle .e-font-icon-svg{fill:#494c4f;height:1em;width:1em}.elementor-nav-menu--dropdown{background-color:#fff;font-size:13px}.elementor-nav-menu--dropdown-none .elementor-menu-toggle,.elementor-nav-menu--dropdown-none .elementor-nav-menu--dropdown{display:none}.elementor-nav-menu--dropdown.elementor-nav-menu__container{margin-top:10px;-webkit-transition:max-height .3s,-webkit-transform .3s;transition:max-height .3s,-webkit-transform .3s;-o-transition:max-height .3s,transform .3s;transition:max-height .3s,transform .3s;transition:max-height .3s,transform .3s,-webkit-transform .3s;-webkit-transform-origin:top;-ms-transform-origin:top;transform-origin:top;overflow:auto}.elementor-nav-menu--dropdown.elementor-nav-menu__container .elementor-sub-item{font-size:.85em}.elementor-nav-menu--dropdown a{color:#494c4f}.elementor-nav-menu--dropdown a.current{background:#373a3c;color:#fff}.elementor-nav-menu--dropdown a.disabled{color:#b3b3b3}ul.elementor-nav-menu--dropdown a,ul.elementor-nav-menu--dropdown a:focus,ul.elementor-nav-menu--dropdown a:hover{text-shadow:none;border-right:8px solid transparent}.elementor-nav-menu__text-align-center .elementor-nav-menu--dropdown .elementor-nav-menu a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-nav-menu--toggle .elementor-menu-toggle:not(.elementor-active)+.elementor-nav-menu__container{-webkit-transform:scaleY(0);-ms-transform:scaleY(0);transform:scaleY(0);max-height:0}.elementor-nav-menu--toggle .elementor-menu-toggle.elementor-active+.elementor-nav-menu__container{-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);max-height:100vh}.elementor-nav-menu--stretch .elementor-nav-menu__container.elementor-nav-menu--dropdown{position:absolute;z-index:9997}@media (max-width:767px){.elementor-nav-menu--dropdown-mobile .elementor-nav-menu--main{display:none}}@media (min-width:768px){.elementor-nav-menu--dropdown-mobile .elementor-menu-toggle,.elementor-nav-menu--dropdown-mobile .elementor-nav-menu--dropdown{display:none}}@media (max-width:-1px){.elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--main{display:none}}@media (min-width:-1px){.elementor-nav-menu--dropdown-mobile_extra .elementor-menu-toggle,.elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--dropdown{display:none}}@media (min-width:1025px){.elementor-nav-menu--dropdown-tablet .elementor-menu-toggle,.elementor-nav-menu--dropdown-tablet .elementor-nav-menu--dropdown{display:none}}@media (max-width:1024px){.elementor-nav-menu--dropdown-tablet .elementor-nav-menu--main{display:none}}@media (max-width:-1px){.elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--main{display:none}}@media (min-width:-1px){.elementor-nav-menu--dropdown-tablet_extra .elementor-menu-toggle,.elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--dropdown{display:none}}assets/css/app-rtl.css000064400000027156150755004320010743 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
:root {
  --color-box-shadow-color: rgba(0, 0, 0, 0.05); }

.eps-theme-dark {
  --color-box-shadow-color: rgba(0, 0, 0, 0.1); }

:root {
  --eps-meta-icon-color: #c2cbd2; }

.eps-theme-dark {
  --eps-meta-icon-color: #b4b5b7; }

.e-site-template__meta-data {
  -webkit-margin-start: 0.625rem;
          margin-inline-start: 0.625rem;
  overflow: hidden;
  -o-text-overflow: ellipsis;
     text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.6875rem; }
  .e-site-template__meta-data:last-of-type {
    -webkit-margin-end: auto;
            margin-inline-end: auto; }
  .e-site-template__meta-data:first-of-type {
    -webkit-margin-start: 1rem;
            margin-inline-start: 1rem; }
  .e-site-template__meta-data .eps-icon {
    -webkit-margin-end: 0.3125rem;
            margin-inline-end: 0.3125rem;
    color: var(--eps-meta-icon-color);
    font-size: 0.8125rem; }

.e-site-template__placeholder .eps-card__image {
  -webkit-filter: var(--placeholder-filter, none);
          filter: var(--placeholder-filter, none); }

.e-site-template__overlay-preview {
  padding-top: calc(var(--card-image-aspect-ratio, 95.6%) - 1.875rem);
  position: relative; }
  .e-site-template__overlay-preview-button {
    font-weight: bold;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    height: 1.875rem;
    width: 100%;
    background-color: var(--card-background-color-hover);
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    padding-top: 0.625rem;
    line-height: 1.25rem;
    --button-background-color: var(--card-headline-color); }
    .e-site-template__overlay-preview-button::before {
      content: '';
      position: absolute;
      display: block;
      width: 100%;
      top: 0;
      left: 0;
      padding-top: calc(var(--card-image-aspect-ratio, 95.6%) - 1.875rem); }
    .e-site-template__overlay-preview-button > :not(:first-child) {
      -webkit-margin-start: 0.3125rem;
              margin-inline-start: 0.3125rem; }

.e-site-template__edit-btn {
  -webkit-margin-end: 1.25rem;
          margin-inline-end: 1.25rem; }
  .e-site-template__edit-btn .eps-icon {
    -webkit-margin-end: 0.3125rem;
            margin-inline-end: 0.3125rem; }

.e-site-template__instances .eps-icon {
  -webkit-margin-end: 0.3125rem;
          margin-inline-end: 0.3125rem;
  color: var(--eps-meta-icon-color);
  font-size: 0.8125rem; }

.e-site-template__instances-list {
  overflow: hidden;
  -o-text-overflow: ellipsis;
     text-overflow: ellipsis;
  white-space: nowrap; }

.e-site-template__edit-conditions {
  -webkit-margin-start: 1rem;
          margin-inline-start: 1rem;
  color: #58d0f5;
  text-decoration: underline;
  font-style: italic; }

.e-site-template--extended .eps-card__figure {
  overflow: auto; }

.e-site-template--extended .eps-card__headline {
  -webkit-box-flex: 0;
      -ms-flex-positive: 0;
          flex-grow: 0; }

.e-site-template--wide {
  --card-image-aspect-ratio: calc(100% * 0.1235); }

.eps-add-new__overlay {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  opacity: 1;
  --card-image-overlay-background-color: transparent; }

.e-site-editor__templates .page-header {
  margin-bottom: 0.625rem; }

.e-site-editor__templates .eps-separator {
  margin-bottom: 2.75rem; }

:root {
  --e-site-editor-conditions-row-controls-background: #fff;
  --e-site-editor-input-wrapper-border-color: #f1f3f5;
  --e-site-editor-input-wrapper-select-color: #556068;
  --e-site-editor-add-button-background-color: #a4afb7;
  --e-site-editor-add-button-color-hover-background-color: #6d7882;
  --e-site-editor-input-wrapper-condition-include-background-color:
	#a4afb7;
  --e-site-editor-input-wrapper-condition-exclude-background-color:
	#c2cbd2;
  --e-site-editor-input-select2-search-field-color: #495157
; }

.eps-theme-dark {
  --select2-selection-background-color: tints(600);
  --e-site-editor-conditions-row-controls-background: #404349;
  --e-site-editor-input-wrapper-border-color: #404349;
  --e-site-editor-input-wrapper-select-color: #b4b5b7;
  --e-site-editor-add-button-background-color: #4c4f56;
  --e-site-editor-add-button-color-hover-background-color: #404349;
  --e-site-editor-input-wrapper-condition-include-background-color:
			#404349;
  --e-site-editor-input-wrapper-condition-exclude-background-color:
			#404349;
  --e-site-editor-input-select2-search-field-color: #fff

; }

.e-site-editor-conditions__header {
  text-align: center; }

.e-site-editor-conditions__header-image {
  display: block;
  margin: 0 auto 2.75rem;
  width: 4.375rem; }

.e-site-editor-conditions__rows {
  margin: 2.75rem auto;
  max-width: 43.75rem; }

.e-site-editor-conditions__row {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-flex: 1;
      -ms-flex-positive: 1;
          flex-grow: 1;
  margin-top: 0.75rem; }

.e-site-editor-conditions__remove-condition {
  color: #c2cbd2;
  font-size: 1.125rem;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.e-site-editor-conditions__row-controls {
  overflow: hidden;
  margin-left: 0.625rem;
  background-color: var(--e-site-editor-conditions-row-controls-background);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  width: 100%;
  -webkit-box-shadow: 0 3px 6px var(--color-box-shadow-color);
          box-shadow: 0 3px 6px var(--color-box-shadow-color);
  border-radius: 0.1875rem; }
  .e-site-editor-conditions__row-controls--error {
    border: 1px solid #b01b1b; }

.e-site-editor-conditions__conflict {
  text-align: center;
  margin-top: 0.3125rem;
  color: #b01b1b; }

.e-site-editor-conditions__row-controls-inner {
  width: 100%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .e-site-editor-conditions__row-controls-inner div {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1; }

.e-site-editor-conditions__add-button-container {
  text-align: center; }

.e-site-editor-conditions__add-button {
  margin-top: 2.75rem;
  background-color: var(--e-site-editor-add-button-background-color);
  color: #fff;
  text-transform: uppercase; }
  .e-site-editor-conditions__add-button:hover {
    background-color: var(--e-site-editor-add-button-color-hover-background-color);
    color: #fff; }

.e-site-editor-conditions__footer {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end;
  position: absolute;
  bottom: 0;
  right: 0;
  left: 0;
  padding: 0.5rem;
  border-top: 1px solid var(--hr-color); }

.e-site-editor-conditions__input-wrapper {
  position: relative;
  border-right: 1px solid;
  border-color: var(--e-site-editor-input-wrapper-border-color); }
  .e-site-editor-conditions__input-wrapper:first-child {
    border: none; }
  .e-site-editor-conditions__input-wrapper select {
    -moz-appearance: none;
         appearance: none;
    -webkit-appearance: none;
    font-size: 0.75rem;
    height: 2.5rem;
    border-width: 0;
    padding: 0 0.625rem;
    width: 100%;
    position: relative;
    color: var(--e-site-editor-input-wrapper-select-color);
    outline: none;
    background: transparent; }
  .e-site-editor-conditions__input-wrapper:after {
    font-family: eicons;
    content: '\e8ad';
    font-size: 0.75rem;
    pointer-events: none;
    position: absolute;
    top: 50%;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%);
    left: 0.625rem; }
  .e-site-editor-conditions__input-wrapper .select2-container--default .select2-selection--single {
    border: none;
    line-height: 2.5rem; }
  .e-site-editor-conditions__input-wrapper .select2-container--default .select2-selection--single .select2-selection__rendered {
    line-height: 2.5rem;
    font-size: 0.75rem; }
  .e-site-editor-conditions__input-wrapper .select2-selection {
    outline: none;
    background: transparent;
    height: 2.5rem; }
  .e-site-editor-conditions__input-wrapper .select2-selection__arrow {
    display: none; }

.e-site-editor-conditions__input-wrapper--condition-type {
  position: relative; }
  .e-site-editor-conditions__input-wrapper--condition-type:before {
    font-family: eicons;
    position: absolute;
    top: 50%;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%);
    right: 0.75rem;
    font-size: 0.9375rem;
    color: #fff;
    pointer-events: none;
    z-index: 1000; }
  .e-site-editor-conditions__input-wrapper--condition-type:after {
    color: #fff; }
  .e-site-editor-conditions__input-wrapper--condition-type select {
    text-transform: uppercase;
    padding-right: 2.125rem;
    width: 7.5rem;
    font-size: 0.75rem;
    color: #fff; }
  .e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type="include"]:before {
    content: '\e8cc'; }
  .e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type="include"] select {
    background-color: var(--e-site-editor-input-wrapper-condition-include-background-color); }
  .e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type="exclude"]:before {
    content: '\e8cd'; }
  .e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type="exclude"] select {
    background-color: var(--e-site-editor-input-wrapper-condition-exclude-background-color); }

.select2-search__field {
  background-color: transparent;
  color: var(--e-site-editor-input-select2-search-field-color); }

.eps-back-button {
  font-size: 14px;
  margin-bottom: 1.5rem; }
  .eps-back-button .eps-icon {
    -webkit-transform: rotate(180deg);
        -ms-transform: rotate(180deg);
            transform: rotate(180deg); }

:root {
  --indicator-bullet-border-color: #fff; }

.eps-theme-dark {
  --indicator-bullet-border-color: #4c4f56; }

.eps-indicator-bullet {
  display: block;
  -ms-flex-negative: 0;
      flex-shrink: 0;
  width: 0.75rem;
  height: 0.75rem;
  -webkit-box-shadow: 0 2px 3px 1px var(--color-box-shadow-color);
          box-shadow: 0 2px 3px 1px var(--color-box-shadow-color);
  background-color: #d5dadf;
  border: 2px solid var(--indicator-bullet-border-color);
  border-radius: 100%;
  -webkit-margin-end: 0.625rem;
          margin-inline-end: 0.625rem; }
  .eps-indicator-bullet--active {
    background-color: #39b54a; }

.site-editor__preview-iframe {
  height: 50vh;
  position: relative; }
  .site-editor__preview-iframe__iframe {
    top: 0;
    left: 0;
    position: absolute;
    border: none;
    -webkit-transform-origin: 0 0;
        -ms-transform-origin: 0 0;
            transform-origin: 0 0;
    height: 100%; }
  .site-editor__preview-iframe--header, .site-editor__preview-iframe--footer {
    height: 15vh; }

.e-site-editor__content_container {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  min-height: 100%;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap; }

.e-site-editor__content_container_main {
  -webkit-box-flex: 1;
      -ms-flex: 1;
          flex: 1; }

.e-site-editor__content_container_secondary {
  margin: 0 auto;
  padding-top: 2.75rem; }
/*# sourceMappingURL=app-rtl.css.map */assets/css/widget-progress-tracker-rtl.min.css000064400000006720150755004320015515 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-scrolling-tracker{--scrolling-track-default-progress-color:#61ce70;--scrolling-track-default-color:#eee;--scrolling-track-precentage-default-color:$black}.elementor-scrolling-tracker-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:var(--horizontal-height,20px);padding:var(--tracker-padding);-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-left:var(--horizontal-border-left-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-bottom:var(--horizontal-border-bottom-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-right:var(--horizontal-border-right-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-top:var(--horizontal-border-top-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-radius:var(--border-radius);background-color:var(--scrolling-track-default-color);direction:var(--direction)}.elementor-scrolling-tracker-horizontal .current-progress{display:none;height:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;border-radius:var(--progress-border-radius);border-left:var(--horizontal-progress-border-left-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-bottom:var(--horizontal-progress-border-bottom-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-right:var(--horizontal-progress-border-right-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-top:var(--horizontal-progress-border-top-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);background-color:var(--scrolling-track-default-progress-color)}.elementor-scrolling-tracker-horizontal .current-progress .current-progress-percentage{inset-inline-end:.5em;inset-inline-start:auto;position:absolute;direction:var(--text-direction);color:var(--percentage-color,var(--scrolling-track-precentage-default-color))}.elementor-scrolling-tracker-circular{display:-webkit-box;display:-ms-flexbox;display:flex;width:var(--circular-width,100px);height:var(--circular-height,100px);-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:auto;margin-inline-end:auto}.elementor-scrolling-tracker-circular .current-progress-percentage{position:absolute;color:var(--percentage-color,var(--scrolling-track-precentage-default-color))}.elementor-scrolling-tracker-circular svg{position:absolute}.elementor-scrolling-tracker-circular .current-progress{display:none;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;stroke:var(--circular-color,var(--scrolling-track-default-progress-color));fill:transparent;stroke-width:var(--circular-progress-width,4px)}.elementor-scrolling-tracker-circular .circle{stroke:var(--circular-background-color,var(--scrolling-track-default-color));fill:transparent;stroke-width:var(--circular-background-width,4px)}.elementor-scrolling-tracker-alignment-left{margin-left:0;margin-right:auto}.elementor-scrolling-tracker-alignment-center{margin-left:auto;margin-right:auto}.elementor-scrolling-tracker-alignment-right{margin-left:auto;margin-right:0}assets/css/frontend-lite-rtl.min.css000064400000370465150755004320013523 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-bg-transform .elementor-bg{will-change:transform}.elementor-bg-transform-zoom-in:hover .elementor-bg,.elementor-bg-transform-zoom-out .elementor-bg{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.elementor-bg-transform-zoom-out:hover .elementor-bg{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-bg-transform-move-left .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-left:hover .elementor-bg,.elementor-bg-transform-move-right .elementor-bg{-webkit-transform:scale(1.2) translateX(-8%);-ms-transform:scale(1.2) translateX(-8%);transform:scale(1.2) translateX(-8%)}.elementor-bg-transform-move-right:hover .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-up .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-bg-transform-move-down .elementor-bg,.elementor-bg-transform-move-up:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(-8%);-ms-transform:scale(1.2) translateY(-8%);transform:scale(1.2) translateY(-8%)}.elementor-bg-transform-move-down:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-animated-content{--translate:0,0}.elementor-animated-content:hover .elementor-animated-item--grow{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.elementor-animated-content:hover .elementor-animated-item--shrink{-webkit-transform:scale(.85);-ms-transform:scale(.85);transform:scale(.85)}.elementor-animated-content:hover .elementor-animated-item--shrink-contained{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content:hover .elementor-animated-item--enter-zoom-in,.elementor-animated-content:hover .elementor-animated-item--enter-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-in{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in,.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-out{opacity:0}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content:hover .elementor-animated-item--enter-from-bottom,.elementor-animated-content:hover .elementor-animated-item--enter-from-left,.elementor-animated-content:hover .elementor-animated-item--enter-from-right,.elementor-animated-content:hover .elementor-animated-item--enter-from-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content:hover .elementor-animated-item--exit-to-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom{-webkit-transform:translateY(600px);-ms-transform:translateY(600px);transform:translateY(600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom,.elementor-animated-content:hover .elementor-animated-item--exit-to-left,.elementor-animated-content:hover .elementor-animated-item--exit-to-right,.elementor-animated-content:hover .elementor-animated-item--exit-to-top{opacity:0}.elementor-animated-content:hover .elementor-animated-item--move-right{-webkit-transform:translateX(30px);-ms-transform:translateX(30px);transform:translateX(30px)}.elementor-animated-content:hover .elementor-animated-item--move-left{-webkit-transform:translateX(-30px);-ms-transform:translateX(-30px);transform:translateX(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-up{-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-down{-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px)}.elementor-animated-content:hover .elementor-animated-item--move-contained-right{--translate:8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-left{--translate:-8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-top{--translate:0,-8%}.elementor-animated-content:hover .elementor-animated-item--move-contained-bottom{--translate:0,8%}.elementor-animated-content [class^=elementor-animated-item]{will-change:transform,opacity}.elementor-animated-content .elementor-animated-item--shrink-contained{-webkit-transform:scale(1.17);-ms-transform:scale(1.17);transform:scale(1.17)}.elementor-animated-content .elementor-animated-item--enter-zoom-in{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content .elementor-animated-item--enter-zoom-out{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content .elementor-animated-item--enter-zoom-in,.elementor-animated-content .elementor-animated-item--enter-zoom-out,.elementor-animated-content .elementor-animated-item--fade-in{opacity:0}.elementor-animated-content .elementor-animated-item--exit-zoom-in,.elementor-animated-content .elementor-animated-item--exit-zoom-out,.elementor-animated-content .elementor-animated-item--fade-out{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content .elementor-animated-item--enter-from-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content .elementor-animated-item--enter-from-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content .elementor-animated-item--enter-from-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom{-webkit-transform:translateY(500px);-ms-transform:translateY(500px);transform:translateY(500px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom,.elementor-animated-content .elementor-animated-item--enter-from-left,.elementor-animated-content .elementor-animated-item--enter-from-right,.elementor-animated-content .elementor-animated-item--enter-from-top{opacity:0}.elementor-animated-content .elementor-animated-item--exit-to-bottom,.elementor-animated-content .elementor-animated-item--exit-to-left,.elementor-animated-content .elementor-animated-item--exit-to-right,.elementor-animated-content .elementor-animated-item--exit-to-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content .elementor-animated-item--move-contained-bottom,.elementor-animated-content .elementor-animated-item--move-contained-left,.elementor-animated-content .elementor-animated-item--move-contained-right,.elementor-animated-content .elementor-animated-item--move-contained-top{-webkit-transform:scale(1.2) translate(var(--translate));-ms-transform:scale(1.2) translate(var(--translate));transform:scale(1.2) translate(var(--translate))}.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover{outline:1px solid #fec449}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings{background-image:-webkit-gradient(linear,left bottom,left top,from(#feb416),to(#fec449));background-image:-webkit-linear-gradient(bottom,#feb416,#fec449);background-image:-o-linear-gradient(bottom,#feb416,#fec449);background-image:linear-gradient(0deg,#feb416,#fec449)}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover{background-color:#feb416}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save{display:none}body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;width:100%;padding:0}body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;padding:0}.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form){margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .quantity .qty{vertical-align:top;margin-left:0}.woocommerce div.product.elementor .quantity+.button{margin-right:10px}.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input{height:100%}.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:0}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}@media (max-width:1024px){.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:0}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}@media (max-width:767px){.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:0}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button{background-color:#5bc0de}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button{background-color:#5cb85c}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button{background-color:#f0ad4e}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button{background-color:#d9534f}.elementor-widget-wc-add-to-cart .quantity{display:inline-block}.elementor-widget-wc-add-to-cart.elementor-align-center form.cart{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-wc-add-to-cart.elementor-align-left form.cart,.elementor-widget-wc-add-to-cart.elementor-align-right form.cart{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor ul.tabs:before{position:static;content:none;width:auto;bottom:auto;left:auto;border-bottom:0;z-index:auto}.woocommerce div.product.elementor ul.tabs{margin:0}.woocommerce div.product.elementor ul.tabs li{padding:0}.woocommerce div.product.elementor ul.tabs li a{padding:.8em 1.2em;line-height:1}.woocommerce div.product.elementor ul.tabs li:after,.woocommerce div.product.elementor ul.tabs li:before{border:0;position:static;bottom:auto;width:auto;height:auto;content:none;-webkit-box-sizing:border-box;box-sizing:border-box}.woocommerce div.product.elementor .woocommerce-tabs .panel{padding:20px;border-radius:0;border-width:0;border-top:1px solid #d3ced2;-webkit-box-shadow:none;box-shadow:none;margin:-1px 0 0}.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins{display:block}.elementor-widget-woocommerce-product-meta .detail-container{position:relative}.elementor-widget-woocommerce-product-meta .detail-container:after{position:absolute;bottom:0;left:0;width:100%}.elementor-widget-woocommerce-product-meta .detail-label{font-weight:700}.elementor-woo-meta--view-inline .product_meta{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-woo-meta--view-inline .product_meta .detail-container:after{width:auto;left:auto;right:auto;position:absolute;height:100%;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;left:-8px}.elementor-woo-meta--view-table .product_meta{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-woo-meta--view-table .product_meta,.elementor-woo-meta--view-table .product_meta .detail-container{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-woo-meta--view-table .product_meta .detail-label{min-width:108px}.elementor-woo-meta--view-stacked .product_meta .detail-container{display:block}.woocommerce div.product.elementor .woocommerce-product-rating{margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.woocommerce div.product.elementor .star-rating{margin-top:0}.elementor-product-rating--align-left .woocommerce-product-rating{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-product-rating--align-right .woocommerce-product-rating{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-product-rating--align-center .woocommerce-product-rating{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link{margin-right:auto}.elementor-products-grid ul.products.elementor-grid{display:grid;margin:0;grid-column-gap:20px;grid-row-gap:40px}.elementor-products-grid ul.products.elementor-grid:after,.elementor-products-grid ul.products.elementor-grid:before{content:none;display:none}.elementor-products-grid ul.products.elementor-grid li.product{width:auto;padding:0;margin:0;float:none}.elementor-products-grid ul.products.elementor-grid li.product .onsale{padding:0;display:none}.elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link{display:block;position:relative}.elementor-products-grid:not(.show-heading-yes) .products>h2{display:none}.elementor-products-grid nav.woocommerce-pagination{margin-top:40px}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul{border:0}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li{border-right:0;border-left:0}.elementor-product-loop-item--align-left ul.products li.product .star-rating{margin-right:auto}.elementor-product-loop-item--align-right ul.products li.product .star-rating{margin-left:auto}.elementor-product-loop-item--align-center ul.products li.product .star-rating{margin-right:auto;margin-left:auto}.woocommerce .elementor-element.elementor-products-grid ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product{width:auto}@media (min-width:1025px){.elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products{grid-template-columns:repeat(2,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products{grid-template-columns:repeat(3,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products{grid-template-columns:repeat(4,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products{grid-template-columns:repeat(5,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products{grid-template-columns:repeat(6,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products{grid-template-columns:repeat(7,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products{grid-template-columns:repeat(8,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products{grid-template-columns:repeat(9,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products{grid-template-columns:repeat(10,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products{grid-template-columns:repeat(11,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products{grid-template-columns:repeat(12,1fr)}}@media (max-width:1024px){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(3,1fr)}}@media (max-width:767px){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(2,1fr)}}.elementor.product .woocommerce-product-gallery__trigger+.woocommerce-product-gallery__wrapper{overflow:hidden}.woocommerce .elementor-widget-woocommerce-product-images span.onsale{padding:0}.elementor-menu-cart__wrapper{text-align:var(--main-alignment,right)}.elementor-menu-cart__toggle_wrapper{display:inline-block;position:relative}.elementor-menu-cart__toggle{display:inline-block}.elementor-menu-cart__toggle .elementor-button{background-color:var(--toggle-button-background-color,transparent);color:var(--toggle-button-text-color,#818a91);border:var(--toggle-button-border-width,1px) var(--toggle-button-border-type,solid) var(--toggle-button-border-color,#818a91);border-radius:var(--toggle-button-border-radius,0);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--toggle-icon-padding,12px 24px)}.elementor-menu-cart__toggle .elementor-button:hover{color:var(--toggle-button-hover-text-color,#818a91);background-color:var(--toggle-button-hover-background-color,transparent);border-color:var(--toggle-button-hover-border-color,#818a91)}.elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon{color:var(--toggle-button-icon-hover-color,#818a91)}.elementor-menu-cart__toggle .elementor-button-text{margin-left:.3em}.elementor-menu-cart__toggle .elementor-button-icon{position:relative;-webkit-transition:color .1s;-o-transition:color .1s;transition:color .1s;color:var(--toggle-button-icon-color,#818a91);font-size:var(--toggle-icon-size,inherit)}.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:block;position:absolute;min-width:1.6em;height:1.6em;line-height:1.5em;top:-.7em;left:-.7em;border-radius:100%;color:var(--items-indicator-text-color,#fff);background-color:var(--items-indicator-background-color,#d9534f);text-align:center;font-size:10px}.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:inline-block;font-weight:400}.elementor-menu-cart__container{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);overflow:hidden;position:fixed;z-index:9998;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,.25);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s;text-align:right}.elementor-menu-cart__main{position:fixed;left:var(--side-cart-alignment-left,0);right:var(--side-cart-alignment-right,auto);-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);top:0;bottom:0;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;font-size:14px;min-height:200px;width:350px;max-width:100%;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;padding:var(--cart-padding,20px 30px);background-color:var(--cart-background-color,#fff);-webkit-box-shadow:0 0 20px rgba(0,0,0,.2);box-shadow:0 0 20px rgba(0,0,0,.2);border-style:var(--cart-border-style,none);border-color:var(--cart-border-color,initial);border-radius:var(--cart-border-radius,0);margin-top:var(--mini-cart-spacing,0)}.elementor-menu-cart__main,.elementor-menu-cart__main .widget_shopping_cart_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-menu-cart__main .widget_shopping_cart_content{height:100%}.elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message{color:var(--empty-message-color,inherit);text-align:var(--empty-message-alignment,right)}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{background-color:transparent;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button{display:none}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{overflow:hidden;opacity:0;-webkit-transform:var(--side-cart-alignment-transform,translateX(-100%));-ms-transform:var(--side-cart-alignment-transform,translateX(-100%));transform:var(--side-cart-alignment-transform,translateX(-100%))}.elementor-menu-cart__close-button{width:var(--cart-close-icon-size,25px);height:var(--cart-close-icon-size,25px);position:relative;margin:0 0 20px;-ms-flex-item-align:end;align-self:flex-end;cursor:pointer;display:inline-block;font-family:eicons;font-size:20px;line-height:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:after,.elementor-menu-cart__close-button:before{content:"";position:absolute;height:3px;width:100%;top:50%;left:0;margin-top:-1px;background:var(--cart-close-button-color,#818a91);border-radius:1px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:hover:after,.elementor-menu-cart__close-button:hover:before{background:var(--cart-close-button-hover-color,#818a91)}.elementor-menu-cart__close-button:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__close-button:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__products{max-height:calc(100vh - 250px);overflow:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.elementor-menu-cart__product{display:grid;grid-template-columns:28% auto;grid-template-rows:var(--price-quantity-position--grid-template-rows,auto auto);position:relative;border-width:0;border-bottom:var(--divider-width,1px) var(--divider-style,solid) var(--divider-color,#d4d4d4)}.elementor-menu-cart__product .variation{display:grid;grid-template-columns:-webkit-max-content auto;grid-template-columns:max-content auto;margin:10px 0}.elementor-menu-cart__product .variation dt{grid-column-start:1}.elementor-menu-cart__product .variation dd{grid-column-start:2;-webkit-margin-start:5px;margin-inline-start:5px}.elementor-menu-cart__product .variation dd p{margin-bottom:0}.elementor-menu-cart__product-image{grid-row-start:1;grid-row-end:3;width:100%}.elementor-menu-cart__product-image a,.elementor-menu-cart__product-image img{display:block}.elementor-menu-cart__product-name{grid-column-start:2;grid-column-end:3;margin:0}.elementor-menu-cart__product-name a{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-price{grid-column-start:2;grid-column-end:3;-ms-flex-item-align:var(--price-quantity-position--align-self,end);align-self:var(--price-quantity-position--align-self,end);font-weight:300;color:var(--product-price-color,#d4d4d4)}.elementor-menu-cart__product-name,.elementor-menu-cart__product-price{font-size:14px;padding-right:20px}.elementor-menu-cart__product-remove{color:#818a91;width:var(--remove-item-button-size,22px);height:var(--remove-item-button-size,22px);border-radius:var(--remove-item-button-size,22px);border:1px solid var(--remove-item-button-color,#d4d4d4);text-align:center;overflow:hidden;position:absolute;left:0;bottom:20px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:hover{border:1px solid var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:hover:after,.elementor-menu-cart__product-remove:hover:before{background:var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:after,.elementor-menu-cart__product-remove:before{content:"";position:absolute;height:1px;width:50%;top:50%;left:25%;margin-top:-1px;background:var(--remove-item-button-color,#d4d4d4);z-index:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__product-remove:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__product-remove>a{display:block;z-index:2;width:100%;height:100%;overflow:hidden;opacity:0;position:absolute}.elementor-menu-cart__product-remove>a.remove_from_cart_button{display:var(--remove-from-cart-button,block)}.elementor-menu-cart__product-remove>a.elementor_remove_from_cart_button{display:var(--elementor-remove-from-cart-button,none)}.elementor-menu-cart__product:last-child{border:none}.elementor-menu-cart__footer-buttons,.elementor-menu-cart__product:not(:first-of-type),.elementor-menu-cart__subtotal{padding-top:var(--product-divider-gap,20px)}.elementor-menu-cart__product{padding-left:30px}.elementor-menu-cart__product,.elementor-menu-cart__subtotal{padding-bottom:var(--product-divider-gap,20px)}.elementor-menu-cart__subtotal{font-size:20px;text-align:var(--menu-cart-subtotal-text-align,center);font-weight:600;color:var(--menu-cart-subtotal-color,inherit);border-left:var(--subtotal-divider-left-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-bottom:var(--subtotal-divider-bottom-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-right:var(--subtotal-divider-right-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-top:var(--subtotal-divider-top-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4)}.elementor-menu-cart__footer-buttons{font-size:20px;text-align:var(--cart-footer-buttons-alignment-text-align,center);display:var(--cart-footer-buttons-alignment-display,grid);grid-template-columns:var(--cart-footer-layout,1fr 1fr);margin-top:var(--cart-buttons-position-margin,0);grid-column-gap:var(--space-between-buttons,10px);grid-row-gap:var(--space-between-buttons,10px)}.elementor-menu-cart__footer-buttons .elementor-button{display:inline-block;border-radius:var(--cart-footer-buttons-border-radius,0);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.elementor-menu-cart__footer-buttons .elementor-button--view-cart{display:var(--view-cart-button-display,inline-block);color:var(--view-cart-button-text-color,#fff);padding:var(--view-cart-button-padding,15px);background-color:var(--view-cart-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover{color:var(--view-cart-button-hover-text-color,#fff);background-color:var(--view-cart-button-hover-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout{display:var(--checkout-button-display,inline-block);color:var(--checkout-button-text-color,#fff);padding:var(--checkout-button-padding,15px);background-color:var(--checkout-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:var(--checkout-button-hover-background-color,#818a91)}@media (max-width:767px){.elementor-menu-cart__footer-buttons .elementor-button{padding-left:10px;padding-right:10px}}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text{display:none}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before{content:none}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e3"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e4"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e5"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e6"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e7"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e8"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e9"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8ea"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8eb"}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product{padding-left:0;padding-right:0;grid-template-columns:25% auto}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove{display:none}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove{top:0;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove{top:20px;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove{-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);bottom:50%}.elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove{top:auto;bottom:20px}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{position:absolute;z-index:89;width:auto;height:auto;overflow:visible;top:100%;bottom:auto;background:none;min-width:330px;right:0;left:auto;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main{width:auto;height:auto;position:relative;top:auto;bottom:auto;right:auto;left:auto;overflow:visible;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}@media (max-width:767px){.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{min-width:300px}}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{opacity:0;-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px)}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown{opacity:1}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container{z-index:9998}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart{z-index:89}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container{display:none}.elementor-widget-woocommerce-checkout-page{background-color:transparent;font-family:Roboto,sans-serif;font-size:14px;line-height:21px;color:#818a91}.elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container{grid-template-columns:auto}.elementor-widget-woocommerce-checkout-page ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page table tbody tr:hover>td,.elementor-widget-woocommerce-checkout-page table tbody tr:hover>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .e-description{color:var(--sections-descriptions-color,#818a91);padding-bottom:var(--sections-descriptions-spacing,0);font-size:14px;font-weight:400}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section{margin-bottom:24px}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title{text-align:var(--login-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge{margin-top:var(--sections-secondary-title-spacing,24px);margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor{margin-top:var(--sections-secondary-title-spacing,24px)}.elementor-widget-woocommerce-checkout-page .e-coupon-box{margin-top:24px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .e-login-wrap-start{-webkit-box-flex:75%;-ms-flex:75%;flex:75%}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{-webkit-box-flex:20%;-ms-flex:20%;flex:20%;text-align:left}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:block}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{text-align:right;margin-top:15px}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label{display:none}}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{margin-bottom:0;font-size:12px}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{font-size:11px}}.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:90%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:auto}}.elementor-widget-woocommerce-checkout-page .e-checkout__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:56% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,24px);grid-row-gap:var(--sections-margin,24px)}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-checkout__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title{color:var(--sections-secondary-title-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge{text-align:var(--coupon-title-alignment,right)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address{margin-top:13px;padding-right:var(--shipping-heading-padding-start,30px)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address span{font-weight:400}.elementor-widget-woocommerce-checkout-page a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row{padding-left:var(--forms-columns-gap-padding,0);padding-right:var(--forms-columns-gap-padding,0);margin-left:var(--forms-columns-gap-margin,0);margin-right:var(--forms-columns-gap-margin,0)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);font-size:14px;border:none;font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-checkout-page .woocommerce .create-account,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row{margin-bottom:0!important}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input,.elementor-widget-woocommerce-checkout-page .woocommerce .input-radio{vertical-align:middle}.elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span{position:relative;top:2px;color:var(--sections-checkboxes-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label,.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{display:inline}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#6f6f6f);border-radius:var(--forms-buttons-border-radius,3px);padding:1rem;border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover{color:var(--forms-buttons-hover-text-color,#6f6f6f);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{margin-right:1%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{width:100%;margin-right:0;margin-bottom:15px}}.elementor-widget-woocommerce-checkout-page .woocommerce-info{border-top-color:transparent;background-color:transparent;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p{font-weight:400;font-size:12px}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info{font-weight:400;margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,.elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment{background:var(--sections-background-color,#fff);border-radius:var(--sections-border-radius,3px);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 24px 0);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{display:var(--additional-information-display,none)}@media (min-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text{color:var(--sections-messages-color,#818a91);font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p{margin-top:25px}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1{margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2{padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading{text-align:var(--order-review-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table{margin-bottom:0;border:0;font-size:14px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th{padding-top:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td{color:#000}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity{font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th{color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr{border:0;padding-left:0;padding-bottom:15px;padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr{padding-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td{font-weight:400;color:var(--order-summary-items-color,#000);border-bottom:var(--order-summary-items-divider-weight,0) solid var(--order-summary-items-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name{padding-left:40px;max-width:150px}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total{vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th{padding-top:var(--order-summary-rows-gap-top,15px);padding-bottom:var(--order-summary-rows-gap-bottom,15px)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th{color:var(--order-summary-totals-color,#818a91);vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th{border-top:var(--order-summary-totals-divider-weight,0) solid var(--order-summary-totals-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td{max-width:70px}.elementor-widget-woocommerce-checkout-page .woocommerce h3{font-size:14px;font-weight:700;margin-top:0;margin-bottom:var(--sections-title-spacing,30px);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row>span{font-weight:400;font-size:14px;margin-bottom:3px;color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:48%}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3{text-align:var(--billing-details-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row{margin-bottom:var(--forms-rows-gap,5px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child{margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login{margin-top:-8px;z-index:999;background:#fff;border-top-width:0;position:relative;margin-bottom:0;color:#818a91}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:100%}}.elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:85%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:35%}}.elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3{background:var(--additional-fields-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address{margin-bottom:var(--sections-margin,20px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment{margin-top:24px;padding:15px 25px 25px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods{border-bottom:none;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li{line-height:21px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{padding-right:15px;font-size:12px}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{float:none;font-size:11px;padding-left:10px}}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img{width:55px}}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0;margin-bottom:0;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order{background-color:#5bc0de;width:var(--purchase-button-width,auto);float:none;color:var(--purchase-button-normal-text-color,#fff);min-height:auto;padding:var(--purchase-button-padding,1em 1em);border-radius:var(--purchase-button-border-radius,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover{background-color:#5bc0de;color:var(--purchase-button-hover-text-color,#fff);border-color:var(--purchase-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--purchase-button-hover-transition-duration,.3s);-o-transition-duration:var(--purchase-button-hover-transition-duration,.3s);transition-duration:var(--purchase-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2{width:auto;float:none}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:grid;grid-template-columns:auto auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:left}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:right}}.elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field{margin-bottom:10px}.elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000);font-size:14px;font-style:normal;text-transform:none;letter-spacing:normal;text-decoration:none;line-height:21px}.e-woo-select2-wrapper .select2-results__option,.e-woo-select2-wrapper .select2-results__option:focus{color:#818a91}.elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart table tbody tr:hover>td,.elementor-widget-woocommerce-cart table tbody tr:hover>th{background-color:inherit}.elementor-widget-woocommerce-cart .e-clear{overflow:hidden;height:0;width:0}.elementor-widget-woocommerce-cart .e-cart-section{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 30px 0);border-radius:var(--sections-border-radius,3px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4)}@media (min-width:1024px){.elementor-widget-woocommerce-cart .e-cart-section:last-child{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-cart .e-cart-content{color:var(--sections-descriptions-color,#818a91);font-size:15px;font-weight:400;line-height:23px;letter-spacing:0}.elementor-widget-woocommerce-cart .e-cart__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:59% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,30px);grid-row-gap:var(--sections-margin,30px)}@media (max-width:1024px){.elementor-widget-woocommerce-cart .e-cart__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart .select2-container{margin-bottom:4px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-right:1rem;padding-left:1rem}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-cart .woocommerce{font-family:Roboto,sans-serif}.elementor-widget-woocommerce-cart .woocommerce button.button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#818a91);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,.88rem 2rem);width:var(--forms-buttons-width,auto);border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button:hover{color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]{padding:var(--forms-buttons-padding,.88rem 2rem);color:var(--forms-buttons-normal-text-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover{background-color:var(--forms-buttons-hover-background-color,#fff);color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li input{vertical-align:middle}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form{margin-top:var(--sections-descriptions-spacing,15px)}.elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination{color:var(--sections-descriptions-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th{display:none}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td{text-align:right!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before{width:100%;margin-bottom:10px}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td{text-align:left!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td:before{content:attr(data-title);font-weight:700;float:right}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{text-align:var(--totals-title-alignment,right)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td{padding-top:var(--totals-rows-gap-top,12px);padding-bottom:var(--totals-rows-gap-bottom,9px)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before{color:var(--totals-color,#818a91);font-weight:700}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td{border-top-color:var(--totals-divider-color,#818a91);border-top-width:var(--totals-divider-weight,0)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row{margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-cart .woocommerce .product-name a{color:var(--product-link-normal-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .product-name a:hover{color:var(--product-link-hover-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .form-row{padding:3px 0;margin:0}.elementor-widget-woocommerce-cart .woocommerce .input-text,.elementor-widget-woocommerce-cart .woocommerce select{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,3px);border:none;padding:var(--forms-fields-padding,16px);font-size:14px}.elementor-widget-woocommerce-cart .woocommerce .input-text::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,.elementor-widget-woocommerce-cart .woocommerce select::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus,.elementor-widget-woocommerce-cart .woocommerce select:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,transparent);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-webkit-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-moz-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-ms-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text.qty{background-color:transparent;color:var(--order-summary-color,#000);border:var(--order-summary-quantity-border-weight,1px) solid var(--order-summary-quantity-border-color,#d4d4d4);border-radius:3px;padding:1px 2px;text-align:right;font-size:14px;min-height:28px;max-height:28px}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout{padding-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button{padding:var(--checkout-button-padding,15px 1em);width:var(--checkout-button-width,auto);font-size:15px;text-align:center;color:var(--checkout-button-normal-text-color,#fff);background-color:#5bc0de;border-radius:var(--checkout-button-border-radius,3px);min-height:auto;margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:#5bc0de;border-color:var(--checkout-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--checkout-button-hover-transition-duration,.3s);-o-transition-duration:var(--checkout-button-hover-transition-duration,.3s);transition-duration:var(--checkout-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .remove{background:transparent;color:var(--order-summary-remove-icon-normal-color,#000)!important;width:auto}.elementor-widget-woocommerce-cart .woocommerce .remove:hover{background:transparent;color:var(--order-summary-remove-icon-hover-color,#5bc0de)!important}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals{float:none;width:100%}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td{padding-left:0}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{float:left;width:100%}.elementor-widget-woocommerce-cart .woocommerce .coupon .form-row{padding:0}.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{-webkit-box-flex:2;-ms-flex:2;flex:2;padding-left:30px}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{padding-left:0}}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-end{-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:block}}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon{margin:var(--sections-margin,0)}.elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code{width:100%;margin-left:0;margin-bottom:15px}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:right;font-size:14px;font-weight:700}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:none;width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table th,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions{padding:16px 0 0}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a{display:inline-block}.elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child{display:var(--update-cart-automatically-display,table-row)}.elementor-widget-woocommerce-cart .woocommerce table.cart{margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce table.cart img{width:55px;height:auto;display:block}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-top:var(--order-summary-rows-gap-top,20px);padding-left:20px;padding-bottom:var(--order-summary-rows-gap-bottom,20px);padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td span{color:var(--order-summary-color,#000);font-size:14px;font-weight:400}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top:var(--order-summary-items-divider-weight,1px) solid var(--order-summary-items-divider-color,#d4d4d4)}@media (max-width:768px){.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top-width:0}}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove{padding-right:0;padding-left:0}@media (min-width:767px){.elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td{border-top:none}}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove{position:relative}.elementor-widget-woocommerce-cart .woocommerce table.cart.product-name{padding-left:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{border-top-width:var(--order-summary-items-divider-weight,1px);border-top-color:var(--order-summary-items-divider-color,#d4d4d4)}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}}@media (max-width:768px){.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-right:0;padding-left:0}}@media (max-width:767px){.elementor-widget-woocommerce-cart .woocommerce table.cart{padding:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{padding:16px 28px}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-right:0;padding-left:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions{padding:0}}.elementor-widget-woocommerce-cart .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,.elementor-widget-woocommerce-cart .woocommerce .cart th{font-size:14px;font-weight:700;margin-top:0;padding:0 0 8px 20px}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{margin-bottom:var(--sections-title-spacing,1rem);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart th{padding-bottom:var(--order-summary-title-spacing,8px);color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart td:before{color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button:after{display:none}.elementor-widget-woocommerce-cart .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000)}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td{padding-right:0}}.e-woo-select2-wrapper .select2-results__option{font-family:Roboto,sans-serif;font-size:14px;color:var(--forms-fields-normal-color,#818a91)}.e-woo-select2-wrapper .select2-results__option:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account{font-family:Roboto,sans-serif;color:#818a91}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table{border:none;margin-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{background-color:var(--sections-background-color,#fff)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px 3px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,.elementor-widget-woocommerce-my-account .e-my-account-tab address{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content{border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper{padding:0;border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details{margin-bottom:40px}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px 3px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content>div>p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:var(--forms-fields-normal-background-color,#f7f7f7);border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:var(--forms-fields-focus-background-color,#f7f7f7);border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below{background-color:var(--forms-fields-normal-background-color,#f7f7f7)}.elementor-widget-woocommerce-my-account .woocommerce ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce-message{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce address{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover,.elementor-widget-woocommerce-my-account .woocommerce a.button:hover{background-color:initial}.elementor-widget-woocommerce-my-account .woocommerce em{font-size:12px;color:var(--login-messages-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .form-row{padding-left:var(--forms-columns-gap-padding-left,0);padding-right:var(--forms-columns-gap-padding-right,0);margin-left:var(--forms-columns-gap-margin-left,0);margin-right:var(--forms-columns-gap-margin-right,0);margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-my-account .woocommerce .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,0)}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,.elementor-widget-woocommerce-my-account .woocommerce .form-row select{color:var(--forms-fields-normal-color,#818a91);border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);background:#f7f7f7;border:none;font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,.elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text{margin-bottom:15px;color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword{font-size:12px;margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:50%}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first{width:100%}.elementor-widget-woocommerce-my-account .woocommerce .login,.elementor-widget-woocommerce-my-account .woocommerce .register,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px);font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .login .button,.elementor-widget-woocommerce-my-account .woocommerce .register .button,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3){margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){margin-top:10px;font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox{vertical-align:middle}.elementor-widget-woocommerce-my-account .woocommerce p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span{color:var(--checkboxes-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce td,.elementor-widget-woocommerce-my-account .woocommerce th,.elementor-widget-woocommerce-my-account .woocommerce tr{border:none}.elementor-widget-woocommerce-my-account .woocommerce h2,.elementor-widget-woocommerce-my-account .woocommerce h3{color:var(--typography-section-titles-color,#000);margin-top:0;margin-bottom:var(--section-title-spacing,45px);font-weight:400}.elementor-widget-woocommerce-my-account .woocommerce strong{color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta,.elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label{color:var(--variations-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .product-quantity{font-weight:400;color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{float:right;width:25%}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul{-webkit-padding-start:0;padding-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li{list-style-type:none;margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li:after{content:"";display:block;width:100%;background-color:var(--tabs-divider-color,#818a91);height:var(--tabs-divider-weight,0);position:relative;top:calc(var(--tabs-spacing, 2px) / 2)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a{color:var(--tabs-active-color,#5bc0de);background:#eceeef;border-color:var(--tabs-active-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{font-style:normal;font-weight:700;font-size:14px;color:var(--tabs-normal-color,#818a91);display:block;padding:var(--tabs-padding,12px 20px);text-align:var(--tabs-alignment,start);background:#f7f7f7;border-radius:var(--tabs-border-radius,0);border:0 var(--tabs-border-type,solid) var(--tabs-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover{color:var(--tabs-hover-color,#5bc0de);border-color:var(--tabs-hover-border-color,transparent)}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{padding:var(--tabs-padding,10px)}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard{margin-top:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout:after{display:none}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{float:left;width:75%;padding:0;padding-right:var(--tab-content-spacing,6%)}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{width:100%;padding:var(--tab-content-spacing,6%) 0 0 0}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type{margin-top:30px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark{background-color:transparent;font-weight:700;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child th,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child th{border-top:0}.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th{border-top:0;padding-right:0;padding-top:0;padding-bottom:var(--tables-titles-spacing,9px)}.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>th,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>th{background-color:transparent;padding-right:0;padding-top:var(--order-summary-rows-gap-top,9px);padding-bottom:var(--order-summary-rows-gap-bottom,9px);color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table td,.elementor-widget-woocommerce-my-account .woocommerce .shop_table th{border-top:var(--tables-divider-border-width,1px) var(--tables-divider-border-type,solid) var(--tables-divider-border-color,#d4d4d4)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th,.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span{color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td,.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th{padding-right:0;color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td{border-top:none;padding-top:0}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button{background:transparent;border:2px solid #5bc0de;border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);border-radius:var(--tables-button-border-radius,3px);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);margin-top:0;margin-bottom:0;padding:var(--tables-button-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-Address .title h3,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3{float:none}.elementor-widget-woocommerce-my-account .woocommerce-Address address,.elementor-widget-woocommerce-my-account .woocommerce-Addresses address{padding:var(--sections-padding,45px 30px 16px 30px)}.elementor-widget-woocommerce-my-account .woocommerce-Address .edit,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit{float:right;position:absolute;margin-right:var(--edit-link-margin-start,30px);margin-top:var(--edit-link-margin-top,10px)}.elementor-widget-woocommerce-my-account .woocommerce .u-columns{margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset{border:none;padding:0;-webkit-margin-start:0;margin-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend{font-weight:700;padding:20px 0;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px);margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-pagination{padding:16px 0}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below,.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below{padding-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td{vertical-align:top;line-height:unset}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{float:none;width:100%}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block}.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation,.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{list-style:none;padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--tabs-container-justify-content,space-between);-ms-flex-pack:var(--tabs-container-justify-content,space-between);justify-content:var(--tabs-container-justify-content,space-between)}@media (max-width:767px){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{display:block}}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block;width:var(--tab-width,100%);padding:0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);margin:0;border-right:var(--tabs-divider-weight,0) solid var(--tabs-divider-color,#818a91)}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:after{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type{padding-right:0}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type{padding-left:0;border-right-width:0}@media (max-width:767px){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}}.e-my-account-tabs-horizontal .woocommerce-MyAccount-content{float:none;width:100%;padding:var(--tab-content-spacing,50px) 0 0 0}.elementor-editor-active .elementor-widget-container,.elementor-editor-preview .elementor-widget-container{min-height:1px}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a{pointer-events:none}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button{pointer-events:none;opacity:.3}.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type){display:none}.product .count{background-color:inherit}.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2{display:none}.woocommerce div.product.elementor form.cart div.product-addon{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-negative:0;flex-shrink:0}.e-sticky-right-column--active{position:-webkit-sticky;position:sticky;top:0}.elementor-theme-builder-content-area{height:400px}.elementor-location-footer:before,.elementor-location-header:before{content:"";display:table;clear:both}.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post{display:block}.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid{color:#d4d4d4;border:1px solid;border-right:none;border-left:none;padding-top:10px;padding-bottom:10px}.elementor-post-navigation-borders-yes .elementor-post-navigation__separator{height:100%;width:1px;margin:0 auto;background-color:#d4d4d4}.elementor-post-navigation{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-post-navigation .post-navigation__arrow-wrapper{color:#d4d4d4}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev{font-size:30px;padding-left:15px}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next{font-size:30px;padding-right:15px}.elementor-post-navigation .post-navigation__arrow-wrapper i{-webkit-transform:translateY(-5%);-ms-transform:translateY(-5%);transform:translateY(-5%)}.elementor-post-navigation .elementor-post-navigation__link__next,.elementor-post-navigation .elementor-post-navigation__link__prev{overflow:hidden}.elementor-post-navigation .elementor-post-navigation__link a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__prev--label{text-transform:uppercase;font-size:.8em}.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--title{font-size:.7em}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--label,.elementor-post-navigation .post-navigation__prev--title{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation span.elementor-post-navigation__link__next{text-align:left}.elementor-post-navigation span.elementor-post-navigation__link__next,.elementor-post-navigation span.elementor-post-navigation__link__prev{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-post-navigation .elementor-grid{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-post-navigation .elementor-post-navigation__link{width:calc(50% - (1px / 2));white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation .elementor-post-navigation__separator-wrapper{text-align:center}.elementor-post-navigation .elementor-post-navigation__next{text-align:left}.elementor-post-navigation .elementor-post-navigation__next a{float:left}.elementor-search-form{display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s}.elementor-search-form .e-font-icon-svg-container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-search-form button,.elementor-search-form input[type=search]{margin:0;border:0;padding:0;display:inline-block;vertical-align:middle;white-space:normal;background:none;line-height:1;min-width:0;font-size:15px;-webkit-appearance:none;-moz-appearance:none}.elementor-search-form button:focus,.elementor-search-form input[type=search]:focus{outline:0;color:inherit}.elementor-search-form button{background-color:#818a91;font-size:var(--e-search-form-submit-icon-size,16px);color:#fff;border-radius:0}.elementor-search-form__container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;overflow:hidden;border:0 solid transparent;min-height:50px}.elementor-search-form__container:not(.elementor-search-form--full-screen){background:#eceeef}.elementor-search-form__input{-ms-flex-preferred-size:100%;flex-basis:100%;color:#55595c;-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s}.elementor-search-form__input::-webkit-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-moz-placeholder,.elementor-search-form__input::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__submit{-webkit-transition:color .2s,background .2s;-o-transition:color .2s,background .2s;transition:color .2s,background .2s;font-size:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form__submit svg{fill:var(--e-search-form-submit-text-color,#fff);width:var(--e-search-form-submit-icon-size,16px);height:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form .elementor-search-form__submit,.elementor-search-form .elementor-search-form__submit:hover{color:var(--e-search-form-submit-text-color,#fff);border:none;border-radius:0}.elementor-search-form--button-type-text .elementor-search-form__submit{-ms-flex-negative:0;flex-shrink:0}.elementor-search-form--skin-minimal .elementor-search-form__icon{opacity:.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;color:#55595c;fill:#55595c;font-size:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-minimal .elementor-search-form__icon svg{width:var(--e-search-form-icon-size-minimal,15px);height:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-full_screen .elementor-search-form input[type=search].elementor-search-form__input{font-size:50px;text-align:center;border:solid #fff;border-width:0 0 1px;line-height:1.5;color:#fff}.elementor-search-form--skin-full_screen .elementor-search-form__toggle{display:inline-block;cursor:pointer;vertical-align:middle;color:var(--e-search-form-toggle-color,#494c4f);font-size:var(--e-search-form-toggle-size,33px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i{position:relative;display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;width:var(--e-search-form-toggle-size,33px);height:var(--e-search-form-toggle-size,33px);background-color:var(--e-search-form-toggle-background-color,rgba(0,0,0,.05));border:var(--e-search-form-toggle-border-width,0) solid var(--e-search-form-toggle-color,#494c4f);border-radius:var(--e-search-form-toggle-border-radius,3px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before{font-size:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{fill:var(--e-search-form-toggle-color,#494c4f);width:var(--e-search-form-toggle-icon-size,.55em);height:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__container{-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;z-index:9998;top:0;left:0;right:0;bottom:0;height:100vh;padding:0 15%;background-color:rgba(0,0,0,.8)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen){overflow:hidden;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button{display:none}.elementor-author-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-author-box__avatar{-ms-flex-negative:0;flex-shrink:0;margin-left:25px}.elementor-author-box__avatar img{width:100px;border-radius:500px;-o-object-fit:cover;object-fit:cover}.elementor-author-box__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:17px}.elementor-author-box__name{font-size:24px;margin-bottom:5px}.elementor-author-box__bio,.elementor-author-box__bio p{margin-bottom:.8em}.elementor-author-box__bio p:last-of-type{margin-bottom:0}.elementor-author-box--layout-image-left .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-author-box--layout-image-left .elementor-author-box__avatar{margin-left:0;margin-right:25px}.elementor-author-box--layout-image-right .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-author-box--layout-image-right .elementor-author-box__avatar{margin-right:0;margin-left:25px}.elementor-author-box--layout-image-above .elementor-author-box{display:block}.elementor-author-box--layout-image-above .elementor-author-box__avatar{margin:0 auto 15px;display:inline-block}.elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar{margin-left:0}.elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar{margin-right:0}.elementor-author-box--align-left .elementor-author-box{text-align:left}.elementor-author-box--align-right .elementor-author-box{text-align:right}.elementor-author-box--align-center .elementor-author-box{text-align:center}.elementor-button.elementor-author-box__button{border:2px solid #55595c;font-size:15px;font-weight:100;padding:10px 18px}.elementor-button.elementor-author-box__button,.elementor-button.elementor-author-box__button:hover{background:transparent;color:#55595c}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar,.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar{-ms-flex-item-align:start;align-self:flex-start}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar{-ms-flex-item-align:center;align-self:center}.elementor-post-info__terms-list{display:inline-block}.elementor-post-info .elementor-icon-list-icon .elementor-avatar{border-radius:100%}.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after{margin:initial}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text{display:inline-block}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a,.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span{display:inline}.elementor-widget-breadcrumbs{font-size:.85em}.elementor-widget-breadcrumbs p{margin-bottom:0}.elementor-sitemap-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.elementor-sticky--active{z-index:99}[data-elementor-type=popup] .elementor-section-wrap:not(:empty)+#elementor-add-new-section,[data-elementor-type=popup]:not(.elementor-edit-area){display:none}.elementor-popup-modal{display:-webkit-box;display:-ms-flexbox;display:flex;pointer-events:none;background-color:transparent;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.elementor-popup-modal .dialog-buttons-wrapper,.elementor-popup-modal .dialog-header{display:none}.elementor-popup-modal .dialog-close-button{display:none;top:20px;margin-top:0;left:20px;opacity:1;z-index:9999;pointer-events:all}.elementor-popup-modal .dialog-close-button svg{fill:#373a3c;height:1em;width:1em}.elementor-popup-modal .dialog-widget-content{width:auto;overflow:visible;max-width:100%;max-height:100%;border-radius:0;-webkit-box-shadow:none;box-shadow:none;pointer-events:all}.elementor-popup-modal .dialog-message{width:640px;max-width:100vw;max-height:100vh;padding:0;overflow:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-popup-modal .elementor{width:100%}.elementor-motion-effects-element,.elementor-motion-effects-layer{-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(0,.33,.07,1.03);-o-transition-timing-function:cubic-bezier(0,.33,.07,1.03);transition-timing-function:cubic-bezier(0,.33,.07,1.03);-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s}.elementor-motion-effects-container{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;-webkit-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);-ms-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.elementor-motion-effects-layer{position:absolute;top:0;left:0;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover}.elementor-motion-effects-perspective{-webkit-perspective:1200px;perspective:1200px}assets/css/widget-posts-rtl.min.css000064400000037433150755004320013375 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
@charset "UTF-8";.elementor-widget-archive-posts:after,.elementor-widget-posts:after{display:none}.elementor-posts-container.elementor-posts-masonry{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-posts-container:not(.elementor-posts-masonry){-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-posts-container .elementor-post{padding:0;margin:0}.elementor-posts-container .elementor-post__thumbnail{overflow:hidden}.elementor-posts-container .elementor-post__thumbnail img{display:block;width:100%;max-height:none;max-width:none;-webkit-transition:-webkit-filter .3s;transition:-webkit-filter .3s;-o-transition:filter .3s;transition:filter .3s;transition:filter .3s,-webkit-filter .3s}.elementor-posts-container .elementor-post__thumbnail__link{position:relative;display:block;width:100%}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail{top:0;left:0;right:0;bottom:0}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail img{height:auto;position:absolute;top:calc(50% + 1px);left:calc(50% + 1px);-webkit-transform:scale(1.01) translate(-50%,-50%);-ms-transform:scale(1.01) translate(-50%,-50%);transform:scale(1.01) translate(-50%,-50%)}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail.elementor-fit-height img{height:100%;width:auto}.elementor-posts .elementor-post{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition-property:background,border,-webkit-box-shadow;transition-property:background,border,-webkit-box-shadow;-o-transition-property:background,border,box-shadow;transition-property:background,border,box-shadow;transition-property:background,border,box-shadow,-webkit-box-shadow;-webkit-transition-duration:.25s;-o-transition-duration:.25s;transition-duration:.25s}.elementor-posts .elementor-post__title{font-size:18px;margin:0}.elementor-posts .elementor-post__excerpt{margin-bottom:10px}.elementor-posts .elementor-post__excerpt p{margin:0;line-height:1.5em;font-size:14px;color:#777}.elementor-posts .elementor-post__meta-data{line-height:1.3em;font-size:12px;margin-bottom:13px;color:#adadad}.elementor-posts .elementor-post__read-more{font-size:12px;font-weight:700}.elementor-posts .elementor-post__thumbnail{position:relative}.elementor-posts--skin-classic{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-posts--skin-classic:not(.elementor-posts-masonry){-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-posts--skin-classic .elementor-post{overflow:hidden}.elementor-posts--skin-classic .elementor-post__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-posts--align-left .elementor-post{text-align:left}.elementor-posts--align-right .elementor-post{text-align:right}.elementor-posts--align-center .elementor-post{text-align:center}.elementor-posts--thumbnail-top .elementor-post{display:block}.elementor-posts--thumbnail-top .elementor-post__thumbnail__link{margin-bottom:20px}.elementor-posts--thumbnail-top .elementor-post__text{width:100%}.elementor-posts--thumbnail-top.elementor-posts--align-left .elementor-post__thumbnail__link{margin-right:auto}.elementor-posts--thumbnail-top.elementor-posts--align-right .elementor-post__thumbnail__link{margin-left:auto}.elementor-posts--thumbnail-top.elementor-posts--align-center .elementor-post__thumbnail__link{margin-right:auto;margin-left:auto}.elementor-posts--thumbnail-left .elementor-post__thumbnail__link,.elementor-posts--thumbnail-right .elementor-post__thumbnail__link{-ms-flex-negative:0;flex-shrink:0;width:25%}.elementor-posts--thumbnail-left .elementor-post__thumbnail__link{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5;margin-right:20px}.elementor-posts--thumbnail-right .elementor-post__thumbnail__link{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0;margin-left:20px}.elementor-posts--thumbnail-none .elementor-posts-container .elementor-post__thumbnail__link{display:none}.elementor-posts .elementor-post__card{overflow:hidden;position:relative;background-color:#fff;width:100%;min-height:100%;border-radius:3px;border:0 solid #818a91;-webkit-transition:all .25s;-o-transition:all .25s;transition:all .25s}.elementor-posts .elementor-post__card .elementor-post__thumbnail{position:relative;transform-style:preserve-3d;-webkit-transform-style:preserve-3d}.elementor-posts .elementor-post__card .elementor-post__thumbnail img{width:calc(100% + 1px)}.elementor-posts .elementor-post__card .elementor-post__text{padding:0 30px;margin-bottom:0;margin-top:20px}.elementor-posts .elementor-post__card .elementor-post__read-more{margin-bottom:20px;display:inline-block}.elementor-posts .elementor-post__card .elementor-post__meta-data{padding:15px 30px;margin-bottom:0;border-top:1px solid #eaeaea}.elementor-posts .elementor-post__card .elementor-post__meta-data span+span:before{margin:0 5px}.elementor-posts .elementor-post__card .elementor-post__title{font-size:21px}.elementor-posts .elementor-post__card .elementor-post__excerpt{line-height:1.7}.elementor-posts .elementor-post__card .elementor-post__excerpt,.elementor-posts .elementor-post__card .elementor-post__title{margin-bottom:25px}.elementor-posts .elementor-post__card .elementor-post__badge,.elementor-posts .elementor-post__card .elementor-post__read-more{text-transform:uppercase}.elementor-posts .elementor-post__badge{position:absolute;top:0;background:#818a91;color:#fff;font-size:12px;padding:.6em 1.2em;line-height:1;font-weight:400;margin:20px;border-radius:999px}.elementor-posts .elementor-post__avatar{position:relative;padding:0 30px;width:100%;top:-25px;height:0;pointer-events:none}.elementor-posts .elementor-post__avatar img{border-radius:50%;width:60px;pointer-events:all;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card,.elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data,.elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data{margin-top:auto}.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar{padding-top:0;position:static;height:auto}.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar img.avatar{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);vertical-align:bottom}.elementor-posts--show-avatar .elementor-post__thumbnail__link{margin-bottom:25px}.elementor-posts__hover-gradient .elementor-post__card .elementor-post__thumbnail__link:after{display:block;content:"";background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.35)),color-stop(75%,transparent));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.35),transparent 75%);background-image:-o-linear-gradient(bottom,rgba(0,0,0,.35) 0,transparent 75%);background-image:linear-gradient(0deg,rgba(0,0,0,.35),transparent 75%);background-repeat:no-repeat;height:100%;width:100%;position:absolute;bottom:0;opacity:1;-webkit-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.elementor-posts__hover-gradient .elementor-post__card:hover .elementor-post__thumbnail__link:after{opacity:.5}.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img{height:100%}.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img{width:calc(100% + 1px)}.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img{height:115%}.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img{width:115%}.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img{height:115%}.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img{width:115%}.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img{height:100%}.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img{width:calc(100% + 1px)}.elementor-posts__hover-zoom-in .elementor-post__thumbnail img,.elementor-posts__hover-zoom-out .elementor-post__thumbnail img{-webkit-transition:height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s;transition:height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s;-o-transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1);transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1);transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s}.elementor-card-shadow-yes .elementor-post__card{-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,.15);box-shadow:0 0 10px 0 rgba(0,0,0,.15)}.elementor-card-shadow-yes .elementor-post__card:hover{-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.15);box-shadow:0 0 30px 0 rgba(0,0,0,.15)}.elementor-posts--skin-full_content article{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.elementor-posts--skin-full_content article .elementor-post__thumbnail{padding-bottom:0}body.elementor-editor-active .elementor-posts--skin-archive_full_content,body.elementor-editor-active .elementor-posts--skin-full_content{pointer-events:none}body.elementor-editor-active .elementor-posts--skin-archive_full_content .elementor-post__thumbnail__link,body.elementor-editor-active .elementor-posts--skin-full_content .elementor-post__thumbnail__link{display:none}body.elementor-editor-active .elementor-posts--show-thumbnail .elementor-post__thumbnail__link{display:block}.elementor-portfolio__filters{list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0;margin:0}.elementor-portfolio__filter{margin:0;cursor:pointer;padding:8px}.elementor-portfolio-item{-ms-flex-item-align:start;align-self:flex-start;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:ease-in-out;-o-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;overflow:hidden;margin:0}.elementor-portfolio-item__title{margin:0;padding:0;line-height:1;font-size:18px;color:#fff}.elementor-portfolio-item__tags__separator:before{content:", "}.elementor-portfolio-item__overlay{opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;padding:15px;-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;overflow:hidden;background-color:rgba(129,138,145,.8)}.elementor-portfolio-item__overlay:hover{opacity:1;-webkit-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.elementor-portfolio-item__img img[src=""]{background-color:rgba(0,0,0,.1);height:100%}.elementor-portfolio.elementor-has-item-ratio{-webkit-transition:height .5s;-o-transition:height .5s;transition:height .5s}.elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail{position:absolute;background-color:rgba(0,0,0,.1)}.elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail__link{padding-bottom:56.25%}.elementor ul li.elementor-portfolio__filter{list-style-type:none}.elementor-widget-archive-posts.load-more-align-center .elementor-button-wrapper,.elementor-widget-posts.load-more-align-center .elementor-button-wrapper{text-align:center}.elementor-widget-archive-posts.load-more-align-start .elementor-button-wrapper,.elementor-widget-posts.load-more-align-start .elementor-button-wrapper{text-align:start}.elementor-widget-archive-posts.load-more-align-end .elementor-button-wrapper,.elementor-widget-posts.load-more-align-end .elementor-button-wrapper{text-align:end}.elementor-widget-archive-posts.load-more-align-justify .elementor-button,.elementor-widget-posts.load-more-align-justify .elementor-button{width:100%}.elementor-widget-archive-posts .e-load-more-spinner,.elementor-widget-posts .e-load-more-spinner{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-archive-posts .e-load-more-spinner i,.elementor-widget-archive-posts .e-load-more-spinner svg,.elementor-widget-posts .e-load-more-spinner i,.elementor-widget-posts .e-load-more-spinner svg{margin:0 auto;display:none}.elementor-widget-archive-posts .e-load-more-spinner i,.elementor-widget-posts .e-load-more-spinner i{color:var(--load-more-spinner-color)}.elementor-widget-archive-posts .e-load-more-spinner svg,.elementor-widget-posts .e-load-more-spinner svg{fill:var(--load-more-spinner-color);height:1em;width:1em}.elementor-widget-archive-posts .e-load-more-message,.elementor-widget-posts .e-load-more-message{color:var(--load-more-message-color);text-align:var(--load-more-message-alignment,center);display:none;margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts.e-load-more-pagination-loading,.elementor-widget-posts.e-load-more-pagination-loading{cursor:default}.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner{margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner i,.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner svg,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner i,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner svg{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-archive-posts.e-load-more-pagination-loading .elementor-button-content-wrapper,.elementor-widget-posts.e-load-more-pagination-loading .elementor-button-content-wrapper{visibility:hidden}.elementor-widget-archive-posts.e-load-more-pagination-end .elementor-button-wrapper,.elementor-widget-posts.e-load-more-pagination-end .elementor-button-wrapper{display:none}.elementor-widget-archive-posts.e-load-more-pagination-end .e-load-more-message,.elementor-widget-posts.e-load-more-pagination-end .e-load-more-message{display:block}.elementor-widget-archive-posts.e-load-more-no-spinner .elementor-button-content-wrapper,.elementor-widget-posts.e-load-more-no-spinner .elementor-button-content-wrapper{visibility:visible}.elementor-widget-archive-posts .elementor-button-wrapper,.elementor-widget-posts .elementor-button-wrapper{margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts .elementor-button-wrapper .e-load-more-spinner,.elementor-widget-posts .elementor-button-wrapper .e-load-more-spinner{position:absolute;right:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);margin:inherit}.elementor-widget-archive-posts .elementor-button-wrapper .elementor-button,.elementor-widget-posts .elementor-button-wrapper .elementor-button{cursor:pointer;position:relative}assets/css/modules/code-highlight.css000064400000052763150755004320013715 0ustar00/* PrismJS 1.23.0
https://prismjs.com/download.html#themes=prism-twilight&prism-tomorrow&prism-solarizedlightt&prism-okaidia&prism-dark&prism-solid&prism-copt-to-clipboard */
/* Replacing pre[class*=language-] { margin:.5em 0 } to: margin: 0 , word wrap */
/* Replacing .prismjs-twilight pre[data-line] {padding:1em 0 1em 3em;} to: {padding:1em;}*/
.prismjs-dark code[class*=language-], .prismjs-dark pre[class*=language-] {
  color: #fff;
  background: 0 0;
  text-shadow: 0 -.1em .2em #000;
  font-family: Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;
  font-size: 1em;
  text-align: left;
  white-space: pre;
  word-spacing: normal;
  word-break: normal;
  word-wrap: normal;
  line-height: 1.5;
  -moz-tab-size: 4;
  -o-tab-size: 4;
  tab-size: 4;
  -webkit-hyphens: none;
  -moz-hyphens: none;
  -ms-hyphens: none;
  hyphens: none; }

.prismjs-dark pre[class*=language-] {
  background: #4c3f33; }

.prismjs-dark pre[class*=language-] {
  padding: 1em;
  margin: 0;
  overflow: auto;
  border: .3em solid #7a6651;
  border-radius: .5em;
  box-shadow: 1px 1px .5em #000 inset; }

.prismjs-dark :not(pre) > code[class*=language-] {
  padding: .15em .2em .05em;
  border-radius: .3em;
  border: .13em solid #7a6651;
  box-shadow: 1px 1px .3em -.1em #000 inset;
  white-space: normal; }

.prismjs-dark .token.cdata, .prismjs-dark .token.doctype, .prismjs-dark .token.prolog, .token.comment {
  color: #997f66; }

.prismjs-dark .token.punctuation {
  opacity: .7; }

.prismjs-dark .token.namespace {
  opacity: .7; }

.prismjs-dark .token.boolean, .prismjs-dark .token.constant, .prismjs-dark .token.number, .prismjs-dark .token.property, .prismjs-dark .token.symbol, .prismjs-dark .token.tag {
  color: #d1939e; }

.prismjs-dark .token.attr-name, .prismjs-dark .token.builtin, .prismjs-dark .token.char, .prismjs-dark .token.inserted, .prismjs-dark .token.selector, .prismjs-dark .token.string {
  color: #bce051; }

.prismjs-dark .language-css .token.string, .prismjs-dark .style .token.string, .prismjs-dark .token.entity, .prismjs-dark .token.operator, .prismjs-dark .token.url, .token.variable {
  color: #f4b73d; }

.prismjs-dark .token.atrule, .prismjs-dark .token.attr-value, .prismjs-dark .token.keyword {
  color: #d1939e; }

.prismjs-dark .token.important, .prismjs-dark .token.regex {
  color: #e90; }

.prismjs-dark .token.bold, .prismjs-dark .token.important {
  font-weight: 700; }

.prismjs-dark .token.italic {
  font-style: italic; }

.prismjs-dark .token.entity {
  cursor: help; }

.prismjs-dark .token.deleted {
  color: red; }

.prismjs-default code[class*=language-], .prismjs-default pre[class*=language-] {
  color: #000;
  background: 0 0;
  text-shadow: 0 1px #fff;
  font-family: Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;
  font-size: 1em;
  text-align: left;
  white-space: pre;
  word-spacing: normal;
  word-break: normal;
  word-wrap: normal;
  line-height: 1.5;
  -moz-tab-size: 4;
  -o-tab-size: 4;
  tab-size: 4;
  -webkit-hyphens: none;
  -moz-hyphens: none;
  -ms-hyphens: none;
  hyphens: none; }

.prismjs-default code[class*=language-] ::-moz-selection, .prismjs-default code[class*=language-]::-moz-selection, .prismjs-default pre[class*=language-] ::-moz-selection, .prismjs-default pre[class*=language-]::-moz-selection {
  text-shadow: none;
  background: #b3d4fc; }

.prismjs-default code[class*=language-] ::selection, .prismjs-default code[class*=language-]::selection, .prismjs-default pre[class*=language-] ::selection, .prismjs-default pre[class*=language-]::selection {
  text-shadow: none;
  background: #b3d4fc; }

@media print {
  .prismjs-default code[class*=language-], .prismjs-default pre[class*=language-] {
    text-shadow: none; } }

.prismjs-default pre[class*=language-] {
  padding: 1em;
  margin: 0;
  overflow: auto; }

.prismjs-default :not(pre) > code[class*=language-], .prismjs-default pre[class*=language-] {
  background: #f5f2f0; }

.prismjs-default :not(pre) > code[class*=language-] {
  padding: .1em;
  border-radius: .3em;
  white-space: normal; }

.prismjs-default .token.cdata, .prismjs-default .token.comment, .prismjs-default .token.doctype, .prismjs-default .token.prolog {
  color: #708090; }

.prismjs-default .token.punctuation {
  color: #999; }

.prismjs-default .token.namespace {
  opacity: .7; }

.prismjs-default .token.boolean, .prismjs-default .token.constant, .prismjs-default .token.deleted, .prismjs-default .token.number, .prismjs-default .token.property, .prismjs-default .token.symbol, .prismjs-default .token.tag {
  color: #905; }

.prismjs-default .token.attr-name, .prismjs-default .token.builtin, .prismjs-default .token.char, .prismjs-default .token.inserted, .prismjs-default .token.selector, .prismjs-default .token.string {
  color: #690; }

.prismjs-default .language-css .token.string, .prismjs-default .style .token.string, .prismjs-default .token.entity, .prismjs-default .token.operator, .prismjs-default .token.url {
  color: #9a6e3a;
  background: rgba(255, 255, 255, 0.5); }

.prismjs-default .token.atrule, .prismjs-default .token.attr-value, .prismjs-default .token.keyword {
  color: #07a; }

.prismjs-default .token.class-name, .prismjs-default .token.function {
  color: #dd4a68; }

.prismjs-default .token.important, .prismjs-default .token.regex, .prismjs-default .token.variable {
  color: #e90; }

.prismjs-default .token.bold, .prismjs-default .token.important {
  font-weight: 700; }

.prismjs-default .token.italic {
  font-style: italic; }

.prismjs-default .token.entity {
  cursor: help; }

.prismjs-okaidia code[class*=language-], .prismjs-okaidia pre[class*=language-] {
  color: #f8f8f2;
  background: 0 0;
  text-shadow: 0 1px rgba(0, 0, 0, 0.3);
  font-family: Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;
  font-size: 1em;
  text-align: left;
  white-space: pre;
  word-spacing: normal;
  word-break: normal;
  word-wrap: normal;
  line-height: 1.5;
  -moz-tab-size: 4;
  -o-tab-size: 4;
  tab-size: 4;
  -webkit-hyphens: none;
  -moz-hyphens: none;
  -ms-hyphens: none;
  hyphens: none; }

.prismjs-okaidia pre[class*=language-] {
  padding: 1em;
  margin: 0;
  overflow: auto;
  border-radius: .3em; }

.prismjs-okaidia :not(pre) > code[class*=language-], .prismjs-okaidia pre[class*=language-] {
  background: #272822; }

.prismjs-okaidia :not(pre) > code[class*=language-] {
  padding: .1em;
  border-radius: .3em;
  white-space: normal; }

.prismjs-okaidia .token.cdata, .prismjs-okaidia .token.comment, .prismjs-okaidia .token.doctype, .prismjs-okaidia .token.prolog {
  color: #8292a2; }

.prismjs-okaidia .token.punctuation {
  color: #f8f8f2; }

.prismjs-okaidia .token.namespace {
  opacity: .7; }

.prismjs-okaidia .token.constant, .prismjs-okaidia .token.deleted, .prismjs-okaidia .token.property, .prismjs-okaidia .token.symbol, .prismjs-okaidia .token.tag {
  color: #f92672; }

.prismjs-okaidia .token.boolean, .prismjs-okaidia .token.number {
  color: #ae81ff; }

.prismjs-okaidia .token.attr-name, .prismjs-okaidia .token.builtin, .prismjs-okaidia .token.char, .prismjs-okaidia .token.inserted, .prismjs-okaidia .token.selector, .prismjs-okaidia .token.string {
  color: #a6e22e; }

.prismjs-okaidia .language-css .token.string, .prismjs-okaidia .style .token.string, .prismjs-okaidia .token.entity, .prismjs-okaidia .token.operator, .prismjs-okaidia .token.url, .prismjs-okaidia .token.variable {
  color: #f8f8f2; }

.prismjs-okaidia .token.atrule, .prismjs-okaidia .token.attr-value, .prismjs-okaidia .token.class-name, .prismjs-okaidia .token.function {
  color: #e6db74; }

.prismjs-okaidia .token.keyword {
  color: #66d9ef; }

.prismjs-okaidia .token.important, .prismjs-okaidia .token.regex {
  color: #fd971f; }

.prismjs-okaidia .token.bold, .prismjs-okaidia .token.important {
  font-weight: 700; }

.prismjs-okaidia .token.italic {
  font-style: italic; }

.prismjs-okaidia .token.entity {
  cursor: help; }

.prismjs-solarizedlight code[class*=language-], .prismjs-solarizedlight pre[class*=language-] {
  color: #657b83;
  font-family: Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;
  font-size: 1em;
  text-align: left;
  white-space: pre;
  word-spacing: normal;
  word-break: normal;
  word-wrap: normal;
  line-height: 1.5;
  -moz-tab-size: 4;
  -o-tab-size: 4;
  tab-size: 4;
  -webkit-hyphens: none;
  -moz-hyphens: none;
  -ms-hyphens: none;
  hyphens: none; }

.prismjs-solarizedlight code[class*=language-] ::-moz-selection, .prismjs-solarizedlight code[class*=language-]::-moz-selection, .prismjs-solarizedlight pre[class*=language-] ::-moz-selection, .prismjs-solarizedlight pre[class*=language-]::-moz-selection {
  background: #073642; }

.prismjs-solarizedlight code[class*=language-] ::selection, .prismjs-solarizedlight code[class*=language-]::selection, .prismjs-solarizedlight pre[class*=language-] ::selection, .prismjs-solarizedlight pre[class*=language-]::selection {
  background: #073642; }

.prismjs-solarizedlight pre[class*=language-] {
  padding: 1em;
  margin: 0;
  overflow: auto;
  border-radius: .3em; }

.prismjs-solarizedlight :not(pre) > code[class*=language-], .prismjs-solarizedlight pre[class*=language-] {
  background-color: #fdf6e3; }

.prismjs-solarizedlight :not(pre) > code[class*=language-] {
  padding: .1em;
  border-radius: .3em; }

.prismjs-solarizedlight .token.cdata, .prismjs-solarizedlight .token.comment, .prismjs-solarizedlight .token.doctype, .prismjs-solarizedlight .token.prolog {
  color: #93a1a1; }

.prismjs-solarizedlight .token.punctuation {
  color: #586e75; }

.prismjs-solarizedlight .token.namespace {
  opacity: .7; }

.prismjs-solarizedlight .token.boolean, .prismjs-solarizedlight .token.constant, .prismjs-solarizedlight .token.deleted, .prismjs-solarizedlight .token.number, .prismjs-solarizedlight .token.property, .prismjs-solarizedlight .token.symbol, .token.tag {
  color: #268bd2; }

.prismjs-solarizedlight .token.attr-name, .prismjs-solarizedlight .token.builtin, .prismjs-solarizedlight .token.char, .prismjs-solarizedlight .token.inserted, .prismjs-solarizedlight .token.selector, .prismjs-solarizedlight .token.string, .prismjs-solarizedlight .token.url {
  color: #2aa198; }

.prismjs-solarizedlight .token.entity {
  color: #657b83;
  background: #eee8d5; }

.prismjs-solarizedlight .token.atrule, .prismjs-solarizedlight .token.attr-value, .prismjs-solarizedlight .token.keyword {
  color: #859900; }

.prismjs-solarizedlight .token.class-name, .prismjs-solarizedlight .token.function {
  color: #b58900; }

.prismjs-solarizedlight .token.important, .prismjs-solarizedlight .token.regex, .prismjs-solarizedlight .token.variable {
  color: #cb4b16; }

.prismjs-solarizedlight .token.bold, .prismjs-solarizedlight .token.important {
  font-weight: 700; }

.prismjs-solarizedlight .token.italic {
  font-style: italic; }

.prismjs-solarizedlight .token.entity {
  cursor: help; }

.prismjs-tomorrow code[class*=language-], .prismjs-tomorrow pre[class*=language-] {
  color: #ccc;
  background: 0 0;
  font-family: Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;
  font-size: 1em;
  text-align: left;
  white-space: pre;
  word-spacing: normal;
  word-break: normal;
  word-wrap: normal;
  line-height: 1.5;
  -moz-tab-size: 4;
  -o-tab-size: 4;
  tab-size: 4;
  -webkit-hyphens: none;
  -moz-hyphens: none;
  -ms-hyphens: none;
  hyphens: none; }

.prismjs-tomorrow pre[class*=language-] {
  padding: 1em;
  margin: 0;
  overflow: auto; }

.prismjs-tomorrow :not(pre) > code[class*=language-], .prismjs-tomorrow pre[class*=language-] {
  background: #2d2d2d; }

.prismjs-tomorrow :not(pre) > code[class*=language-] {
  padding: .1em;
  border-radius: .3em;
  white-space: normal; }

.prismjs-tomorrow .token.block-comment, .prismjs-tomorrow .token.cdata, .prismjs-tomorrow .token.comment, .prismjs-tomorrow .token.doctype, .prismjs-tomorrow .token.prolog {
  color: #999; }

.prismjs-tomorrow .token.punctuation {
  color: #ccc; }

.prismjs-tomorrow .token.attr-name, .prismjs-tomorrow .token.deleted, .prismjs-tomorrow .token.namespace, .prismjs-tomorrow .token.tag {
  color: #e2777a; }

.prismjs-tomorrow .token.function-name {
  color: #6196cc; }

.prismjs-tomorrow .token.boolean, .prismjs-tomorrow .token.function, .prismjs-tomorrow .token.number {
  color: #f08d49; }

.prismjs-tomorrow .token.class-name, .prismjs-tomorrow .token.constant, .prismjs-tomorrow .token.property, .prismjs-tomorrow .token.symbol {
  color: #f8c555; }

.prismjs-tomorrow .token.atrule, .prismjs-tomorrow .token.builtin, .prismjs-tomorrow .token.important, .prismjs-tomorrow .token.keyword, .prismjs-tomorrow .token.selector {
  color: #cc99cd; }

.prismjs-tomorrow .token.attr-value, .prismjs-tomorrow .token.char, .prismjs-tomorrow .token.regex, .prismjs-tomorrow .token.string, .prismjs-tomorrow .token.variable {
  color: #7ec699; }

.prismjs-tomorrow .token.entity, .prismjs-tomorrow .token.operator, .prismjs-tomorrow .token.url {
  color: #67cdcc; }

.prismjs-tomorrow .token.bold, .prismjs-tomorrow .token.important {
  font-weight: 700; }

.prismjs-tomorrow .token.italic {
  font-style: italic; }

.prismjs-tomorrow .token.entity {
  cursor: help; }

.prismjs-tomorrow .token.inserted {
  color: green; }

.prismjs-twilight code[class*=language-], .prismjs-twilight pre[class*=language-] {
  color: #fff;
  background: 0 0;
  font-family: Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;
  font-size: 1em;
  text-align: left;
  text-shadow: 0 -.1em .2em #000;
  white-space: pre;
  word-spacing: normal;
  word-break: normal;
  word-wrap: normal;
  line-height: 1.5;
  -moz-tab-size: 4;
  -o-tab-size: 4;
  tab-size: 4;
  -webkit-hyphens: none;
  -moz-hyphens: none;
  -ms-hyphens: none;
  hyphens: none; }

.prismjs-twilight :not(pre) > code[class*=language-], .prismjs-twilight pre[class*=language-] {
  background: #141414; }

.prismjs-twilight pre[class*=language-] {
  border-radius: .5em;
  border: .3em solid #545454;
  box-shadow: 1px 1px .5em #000 inset;
  margin: 0;
  overflow: auto;
  padding: 1em; }

.prismjs-twilight pre[class*=language-]::-moz-selection {
  background: #27292a; }

.prismjs-twilight pre[class*=language-]::selection {
  background: #27292a; }

.prismjs-twilight code[class*=language-] ::-moz-selection, .prismjs-twilight code[class*=language-]::-moz-selection, .prismjs-twilight pre[class*=language-] ::-moz-selection, .prismjs-twilight pre[class*=language-]::-moz-selection {
  text-shadow: none;
  background: rgba(237, 237, 237, 0.15); }

.prismjs-twilight code[class*=language-] ::selection, .prismjs-twilight code[class*=language-]::selection, .prismjs-twilight pre[class*=language-] ::selection, .prismjs-twilight pre[class*=language-]::selection {
  text-shadow: none;
  background: rgba(237, 237, 237, 0.15); }

.prismjs-twilight :not(pre) > code[class*=language-] {
  border-radius: .3em;
  border: .13em solid #545454;
  box-shadow: 1px 1px .3em -.1em #000 inset;
  padding: .15em .2em .05em;
  white-space: normal; }

.prismjs-twilight .token.cdata, .prismjs-twilight .token.comment, .prismjs-twilight .token.doctype, .prismjs-twilight .token.prolog {
  color: #777; }

.prismjs-twilight .token.punctuation {
  opacity: .7; }

.prismjs-twilight .token.namespace {
  opacity: .7; }

.prismjs-twilight .token.boolean, .prismjs-twilight .token.deleted, .prismjs-twilight .token.number, .prismjs-twilight .token.tag {
  color: #ce6849; }

.prismjs-twilight .token.builtin, .prismjs-twilight .token.constant, .prismjs-twilight .token.keyword, .prismjs-twilight .token.property, .prismjs-twilight .token.selector, .prismjs-twilight .token.symbol {
  color: #f9ed99; }

.prismjs-twilight .language-css .token.string, .prismjs-twilight .style .token.string, .prismjs-twilight .token.attr-name, .prismjs-twilight .token.attr-value, .prismjs-twilight .token.char, .prismjs-twilight .token.entity, .prismjs-twilight .token.inserted, .prismjs-twilight .token.operator, .prismjs-twilight .token.string, .prismjs-twilight .token.url, .prismjs-twilight .token.variable {
  color: #909e6a; }

.prismjs-twilight .token.atrule {
  color: #7385a5; }

.prismjs-twilight .token.important, .prismjs-twilight .token.regex {
  color: #e8c062; }

.prismjs-twilight .token.bold, .prismjs-twilight .token.important {
  font-weight: 700; }

.prismjs-twilight .token.italic {
  font-style: italic; }

.prismjs-twilight .token.entity {
  cursor: help; }

.prismjs-twilight pre[data-line] {
  padding: 1em;
  position: relative; }

.prismjs-twilight .language-markup .token.attr-name, .prismjs-twilight .language-markup .token.punctuation, .prismjs-twilight .language-markup .token.tag {
  color: #ac885c; }

.prismjs-twilight .token {
  position: relative;
  z-index: 1; }

.prismjs-twilight .line-highlight {
  background: rgba(84, 84, 84, 0.25);
  background: linear-gradient(to right, rgba(84, 84, 84, 0.1) 70%, rgba(84, 84, 84, 0));
  border-bottom: 1px dashed #545454;
  border-top: 1px dashed #545454;
  left: 0;
  line-height: inherit;
  margin-top: .75em;
  padding: inherit 0;
  pointer-events: none;
  position: absolute;
  right: 0;
  white-space: pre;
  z-index: 0; }

.prismjs-twilight .line-highlight:before, .prismjs-twilight .line-highlight[data-end]:after {
  background-color: #8693a6;
  border-radius: 999px;
  box-shadow: 0 1px #fff;
  color: #f4f1ef;
  content: attr(data-start);
  font: bold 65%/1.5 sans-serif;
  left: .6em;
  min-width: 1em;
  padding: 0 .5em;
  position: absolute;
  text-align: center;
  text-shadow: none;
  top: .4em;
  vertical-align: .3em; }

.prismjs-twilight .line-highlight[data-end]:after {
  bottom: .4em;
  content: attr(data-end);
  top: auto; }

.copy-to-clipboard div.code-toolbar {
  position: relative; }

.copy-to-clipboard div.code-toolbar > .toolbar {
  position: absolute;
  top: .3em;
  right: .2em;
  transition: opacity .3s ease-in-out;
  opacity: 0; }

.copy-to-clipboard div.code-toolbar:hover > .toolbar {
  opacity: 1; }

.copy-to-clipboard div.code-toolbar:focus-within > .toolbar {
  opacity: 1; }

.copy-to-clipboard div.code-toolbar > .toolbar .toolbar-item {
  display: inline-block; }

.copy-to-clipboard div.code-toolbar > .toolbar a {
  cursor: pointer; }

.copy-to-clipboard div.code-toolbar > .toolbar button {
  background: 0 0;
  border: 0;
  color: inherit;
  font: inherit;
  line-height: normal;
  overflow: visible;
  padding: 0;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none; }

.copy-to-clipboard div.code-toolbar > .toolbar a, .copy-to-clipboard div.code-toolbar > .toolbar button, .copy-to-clipboard div.code-toolbar > .toolbar span {
  color: #bbb;
  font-size: .8em;
  padding: 0 .5em;
  background: #f5f2f0;
  background: rgba(224, 224, 224, 0.2);
  box-shadow: 0 2px 0 0 rgba(0, 0, 0, 0.2);
  border-radius: .5em; }

.copy-to-clipboard div.code-toolbar > .toolbar a:focus, div.code-toolbar > .toolbar a:hover, div.code-toolbar > .toolbar button:focus, div.code-toolbar > .toolbar button:hover, div.code-toolbar > .toolbar span:focus, div.code-toolbar > .toolbar span:hover {
  color: inherit;
  text-decoration: none; }

:not(.copy-to-clipboard) > div.code-toolbar > .toolbar {
  display: none; }

.word-wrap code[class*="language-"],
.word-wrap pre[class*="language-"] {
  white-space: pre-wrap !important; }

.elementor-widget-code-highlight pre {
  direction: ltr; }

/* Overriding padding for pre tag when line-numbers off and highlight-line on*/
.prismjs-twilight pre:not([data-line=""]):not(.line-numbers) {
  padding: 0.8em 0 1em 2em; }

.prismjs-tomorrow pre:not([data-line=""]):not(.line-numbers),
.prismjs-solarizedlight pre:not([data-line=""]):not(.line-numbers),
.prismjs-okaidia pre:not([data-line=""]):not(.line-numbers),
.prismjs-dark pre:not([data-line=""]):not(.line-numbers),
.prismjs-default pre:not([data-line=""]):not(.line-numbers) {
  padding: 1em 0 1em 2em; }

/* PrismJS 1.23.0 */
pre[data-line] {
  position: relative;
  padding: 1em 0 1em 3em; }

.line-highlight {
  position: absolute;
  left: 0;
  right: 0;
  padding: inherit 0;
  margin-top: 1em;
  background: rgba(153, 122, 102, 0.08);
  background: linear-gradient(to right, rgba(153, 122, 102, 0.1) 70%, rgba(153, 122, 102, 0));
  pointer-events: none;
  line-height: inherit;
  white-space: pre; }

@media print {
  .line-highlight {
    -webkit-print-color-adjust: exact;
    color-adjust: exact; } }

.line-highlight:before, .line-highlight[data-end]:after {
  content: attr(data-start);
  position: absolute;
  top: .4em;
  left: .6em;
  min-width: 1em;
  padding: 0 .5em;
  background-color: rgba(153, 122, 102, 0.4);
  color: #f4f1ef;
  font: bold 65%/1.5 sans-serif;
  text-align: center;
  vertical-align: .3em;
  border-radius: 999px;
  text-shadow: none;
  box-shadow: 0 1px #fff; }

.line-highlight[data-end]:after {
  content: attr(data-end);
  top: auto;
  bottom: .4em; }

.line-numbers .line-highlight:after, .line-numbers .line-highlight:before {
  content: none; }

pre[id].linkable-line-numbers span.line-numbers-rows {
  pointer-events: all; }

pre[id].linkable-line-numbers span.line-numbers-rows > span:before {
  cursor: pointer; }

pre[id].linkable-line-numbers span.line-numbers-rows > span:hover:before {
  background-color: rgba(128, 128, 128, 0.2); }

/* PrismJS 1.23.0 */
pre[class*=language-].line-numbers {
  position: relative;
  padding-left: 3.8em;
  counter-reset: linenumber; }

pre[class*=language-].line-numbers > code {
  position: relative;
  white-space: inherit; }

.line-numbers .line-numbers-rows {
  position: absolute;
  pointer-events: none;
  top: 0;
  font-size: 100%;
  left: -3.8em;
  width: 3em;
  letter-spacing: -1px;
  border-right: 1px solid #999;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none; }

.line-numbers-rows > span {
  display: block;
  counter-increment: linenumber; }

.line-numbers-rows > span:before {
  content: counter(linenumber);
  color: #999;
  display: block;
  padding-right: .8em;
  text-align: right; }

/*# sourceMappingURL=code-highlight.css.map */assets/css/modules/forms/submissions/admin-rtl.css000064400000010221150755004320016410 0ustar00@media screen and (max-width: 782px) {
  .e-form-submissions-list-table {
    /* Don't judge me... (need to override WordPress style). */ }
    .e-form-submissions-list-table.wp-list-table tr:not(.inline-edit-row):not(.no-items) > td.bulk-checkbox-column:not(.check-column) {
      width: 2.2em !important; } }

.e-form-submissions-list-table .bulk-checkbox-column {
  padding: 9px 0 0 3px;
  width: 2.2em; }

.e-form-submissions-list-table .column-actions {
  width: 11%; }
  .e-form-submissions-list-table .column-actions i {
    font-size: 15px; }

.e-form-submissions-list-table .column-id {
  width: 7%; }

.e-form-submissions-list-table .column-page {
  width: 17%;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden; }

.e-form-submissions-list-table .column-date {
  width: 17%; }

.e-form-submissions-list-table .column-form {
  width: 20%; }

.e-form-submissions-referer-icon {
  font-size: 18px; }

.e-form-submissions-main .postbox {
  border: none; }

.e-form-submissions-main .postbox-header {
  border: 1px solid #D4D4D4;
  border-bottom: none;
  padding: 8px; }

.e-form-submissions-main__header {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center; }

#e-form-submissions .eicon-success {
  color: #5cb85c; }

#e-form-submissions .eicon-error {
  color: #d9534f; }

#e-form-submissions .misc-pub-section {
  line-height: 1.3rem; }

#e-form-submissions .e-form-submissions-item-table {
  border: none;
  border-collapse: collapse; }
  #e-form-submissions .e-form-submissions-item-table td:first-child {
    width: 150px;
    background: #f7f7f7;
    font-weight: 700; }
    @media screen and (max-width: 782px) {
      #e-form-submissions .e-form-submissions-item-table td:first-child {
        /* Must set !important because wordpress set also !important. */
        width: 90px !important; } }
  #e-form-submissions .e-form-submissions-item-table td {
    border: 1px solid #D4D4D4;
    padding: 15px; }
  #e-form-submissions .e-form-submissions-item-table input:not([type=checkbox]):not([type=radio]), #e-form-submissions .e-form-submissions-item-table textarea, #e-form-submissions .e-form-submissions-item-table select {
    width: 100%;
    max-width: 400px; }

#e-form-submissions .e-export-button {
  margin-right: 15px; }
  @media screen and (max-width: 782px) {
    #e-form-submissions .e-export-button {
      display: none; } }

#e-form-submissions .tablenav .actions select {
  width: 10rem; }

#e-form-submissions .tablenav .actions .select2-container {
  float: left;
  margin-right: 6px; }
  #e-form-submissions .tablenav .actions .select2-container .select2-selection__arrow {
    height: 30px; }
  #e-form-submissions .tablenav .actions .select2-container .select2-selection--single {
    height: 30px;
    border: 1px solid #7e8993; }

input[type="search"].select2-search__field {
  line-height: 1; }

.e-form-submissions-search {
  position: relative; }
  .e-form-submissions-search__spinner {
    position: absolute;
    left: 12px;
    font-size: 11px;
    height: 100%;
    display: flex;
    align-items: center;
    color: var(--wp-admin-theme-color-darker-20, #005a87); }
  .e-form-submissions-search:focus-within .e-form-submissions-search__spinner, .e-form-submissions-search:hover .e-form-submissions-search__spinner {
    left: 30px; }

.e-form-submissions-action-log--success .e-form-submissions-action-log__message {
  background: #dff0d8;
  border-color: #5cb85c; }

.e-form-submissions-action-log--error .e-form-submissions-action-log__message {
  background: #f2dede;
  border-color: #d9534f; }

.e-form-submissions-action-log:not(:last-child) {
  border-bottom: 1px solid #D4D4D4; }

.e-form-submissions-action-log__label {
  display: inline-block;
  padding-left: 15px; }

.e-form-submissions-action-log__icon {
  display: inline-block;
  padding-left: 3px; }

.e-form-submissions-action-log__date {
  font-size: 12px;
  color: #818a91; }

.e-form-submissions-action-log__message {
  padding: 10px;
  font-size: 12px;
  color: #373a3c;
  background: #eceeef;
  border-right: 4px solid #818a91; }

.e-form-submissions-value-label:not(:last-child) {
  display: block;
  margin-bottom: 10px; }

/*# sourceMappingURL=admin-rtl.css.map */assets/css/modules/forms/submissions/admin-rtl.min.css000064400000007167150755004320017211 0ustar00@media screen and (max-width:782px){.e-form-submissions-list-table.wp-list-table tr:not(.inline-edit-row):not(.no-items)>td.bulk-checkbox-column:not(.check-column){width:2.2em!important}}.e-form-submissions-list-table .bulk-checkbox-column{padding:9px 0 0 3px;width:2.2em}.e-form-submissions-list-table .column-actions{width:11%}.e-form-submissions-list-table .column-actions i{font-size:15px}.e-form-submissions-list-table .column-id{width:7%}.e-form-submissions-list-table .column-page{width:17%;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}.e-form-submissions-list-table .column-date{width:17%}.e-form-submissions-list-table .column-form{width:20%}.e-form-submissions-referer-icon{font-size:18px}.e-form-submissions-main .postbox{border:none}.e-form-submissions-main .postbox-header{border:1px solid #d4d4d4;border-bottom:none;padding:8px}.e-form-submissions-main__header{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#e-form-submissions .eicon-success{color:#5cb85c}#e-form-submissions .eicon-error{color:#d9534f}#e-form-submissions .misc-pub-section{line-height:1.3rem}#e-form-submissions .e-form-submissions-item-table{border:none;border-collapse:collapse}#e-form-submissions .e-form-submissions-item-table td:first-child{width:150px;background:#f7f7f7;font-weight:700}@media screen and (max-width:782px){#e-form-submissions .e-form-submissions-item-table td:first-child{width:90px!important}}#e-form-submissions .e-form-submissions-item-table td{border:1px solid #d4d4d4;padding:15px}#e-form-submissions .e-form-submissions-item-table input:not([type=checkbox]):not([type=radio]),#e-form-submissions .e-form-submissions-item-table select,#e-form-submissions .e-form-submissions-item-table textarea{width:100%;max-width:400px}#e-form-submissions .e-export-button{margin-right:15px}@media screen and (max-width:782px){#e-form-submissions .e-export-button{display:none}}#e-form-submissions .tablenav .actions select{width:10rem}#e-form-submissions .tablenav .actions .select2-container{float:left;margin-right:6px}#e-form-submissions .tablenav .actions .select2-container .select2-selection__arrow{height:30px}#e-form-submissions .tablenav .actions .select2-container .select2-selection--single{height:30px;border:1px solid #7e8993}input[type=search].select2-search__field{line-height:1}.e-form-submissions-search{position:relative}.e-form-submissions-search__spinner{position:absolute;left:12px;font-size:11px;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--wp-admin-theme-color-darker-20,#005a87)}.e-form-submissions-search:focus-within .e-form-submissions-search__spinner,.e-form-submissions-search:hover .e-form-submissions-search__spinner{left:30px}.e-form-submissions-action-log--success .e-form-submissions-action-log__message{background:#dff0d8;border-color:#5cb85c}.e-form-submissions-action-log--error .e-form-submissions-action-log__message{background:#f2dede;border-color:#d9534f}.e-form-submissions-action-log:not(:last-child){border-bottom:1px solid #d4d4d4}.e-form-submissions-action-log__label{display:inline-block;padding-left:15px}.e-form-submissions-action-log__icon{display:inline-block;padding-left:3px}.e-form-submissions-action-log__date{font-size:12px;color:#818a91}.e-form-submissions-action-log__message{padding:10px;font-size:12px;color:#373a3c;background:#eceeef;border-right:4px solid #818a91}.e-form-submissions-value-label:not(:last-child){display:block;margin-bottom:10px}assets/css/modules/forms/submissions/admin.min.css000064400000007171150755004320016405 0ustar00@media screen and (max-width:782px){.e-form-submissions-list-table.wp-list-table tr:not(.inline-edit-row):not(.no-items)>td.bulk-checkbox-column:not(.check-column){width:2.2em!important}}.e-form-submissions-list-table .bulk-checkbox-column{padding:9px 0 0 3px;width:2.2em}.e-form-submissions-list-table .column-actions{width:11%}.e-form-submissions-list-table .column-actions i{font-size:15px}.e-form-submissions-list-table .column-id{width:7%}.e-form-submissions-list-table .column-page{width:17%;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}.e-form-submissions-list-table .column-date{width:17%}.e-form-submissions-list-table .column-form{width:20%}.e-form-submissions-referer-icon{font-size:18px}.e-form-submissions-main .postbox{border:none}.e-form-submissions-main .postbox-header{border:1px solid #d4d4d4;border-bottom:none;padding:8px}.e-form-submissions-main__header{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#e-form-submissions .eicon-success{color:#5cb85c}#e-form-submissions .eicon-error{color:#d9534f}#e-form-submissions .misc-pub-section{line-height:1.3rem}#e-form-submissions .e-form-submissions-item-table{border:none;border-collapse:collapse}#e-form-submissions .e-form-submissions-item-table td:first-child{width:150px;background:#f7f7f7;font-weight:700}@media screen and (max-width:782px){#e-form-submissions .e-form-submissions-item-table td:first-child{width:90px!important}}#e-form-submissions .e-form-submissions-item-table td{border:1px solid #d4d4d4;padding:15px}#e-form-submissions .e-form-submissions-item-table input:not([type=checkbox]):not([type=radio]),#e-form-submissions .e-form-submissions-item-table select,#e-form-submissions .e-form-submissions-item-table textarea{width:100%;max-width:400px}#e-form-submissions .e-export-button{margin-left:15px}@media screen and (max-width:782px){#e-form-submissions .e-export-button{display:none}}#e-form-submissions .tablenav .actions select{width:10rem}#e-form-submissions .tablenav .actions .select2-container{float:left;margin-right:6px}#e-form-submissions .tablenav .actions .select2-container .select2-selection__arrow{height:30px}#e-form-submissions .tablenav .actions .select2-container .select2-selection--single{height:30px;border:1px solid #7e8993}input[type=search].select2-search__field{line-height:1}.e-form-submissions-search{position:relative}.e-form-submissions-search__spinner{position:absolute;right:12px;font-size:11px;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--wp-admin-theme-color-darker-20,#005a87)}.e-form-submissions-search:focus-within .e-form-submissions-search__spinner,.e-form-submissions-search:hover .e-form-submissions-search__spinner{right:30px}.e-form-submissions-action-log--success .e-form-submissions-action-log__message{background:#dff0d8;border-color:#5cb85c}.e-form-submissions-action-log--error .e-form-submissions-action-log__message{background:#f2dede;border-color:#d9534f}.e-form-submissions-action-log:not(:last-child){border-bottom:1px solid #d4d4d4}.e-form-submissions-action-log__label{display:inline-block;padding-right:15px}.e-form-submissions-action-log__icon{display:inline-block;padding-right:3px}.e-form-submissions-action-log__date{font-size:12px;color:#818a91}.e-form-submissions-action-log__message{padding:10px;font-size:12px;color:#373a3c;background:#eceeef;border-left:4px solid #818a91}.e-form-submissions-value-label:not(:last-child){display:block;margin-bottom:10px}assets/css/modules/forms/submissions/admin.css000064400000010217150755004320015616 0ustar00@media screen and (max-width: 782px) {
  .e-form-submissions-list-table {
    /* Don't judge me... (need to override WordPress style). */ }
    .e-form-submissions-list-table.wp-list-table tr:not(.inline-edit-row):not(.no-items) > td.bulk-checkbox-column:not(.check-column) {
      width: 2.2em !important; } }

.e-form-submissions-list-table .bulk-checkbox-column {
  padding: 9px 0 0 3px;
  width: 2.2em; }

.e-form-submissions-list-table .column-actions {
  width: 11%; }
  .e-form-submissions-list-table .column-actions i {
    font-size: 15px; }

.e-form-submissions-list-table .column-id {
  width: 7%; }

.e-form-submissions-list-table .column-page {
  width: 17%;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden; }

.e-form-submissions-list-table .column-date {
  width: 17%; }

.e-form-submissions-list-table .column-form {
  width: 20%; }

.e-form-submissions-referer-icon {
  font-size: 18px; }

.e-form-submissions-main .postbox {
  border: none; }

.e-form-submissions-main .postbox-header {
  border: 1px solid #D4D4D4;
  border-bottom: none;
  padding: 8px; }

.e-form-submissions-main__header {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center; }

#e-form-submissions .eicon-success {
  color: #5cb85c; }

#e-form-submissions .eicon-error {
  color: #d9534f; }

#e-form-submissions .misc-pub-section {
  line-height: 1.3rem; }

#e-form-submissions .e-form-submissions-item-table {
  border: none;
  border-collapse: collapse; }
  #e-form-submissions .e-form-submissions-item-table td:first-child {
    width: 150px;
    background: #f7f7f7;
    font-weight: 700; }
    @media screen and (max-width: 782px) {
      #e-form-submissions .e-form-submissions-item-table td:first-child {
        /* Must set !important because wordpress set also !important. */
        width: 90px !important; } }
  #e-form-submissions .e-form-submissions-item-table td {
    border: 1px solid #D4D4D4;
    padding: 15px; }
  #e-form-submissions .e-form-submissions-item-table input:not([type=checkbox]):not([type=radio]), #e-form-submissions .e-form-submissions-item-table textarea, #e-form-submissions .e-form-submissions-item-table select {
    width: 100%;
    max-width: 400px; }

#e-form-submissions .e-export-button {
  margin-left: 15px; }
  @media screen and (max-width: 782px) {
    #e-form-submissions .e-export-button {
      display: none; } }

#e-form-submissions .tablenav .actions select {
  width: 10rem; }

#e-form-submissions .tablenav .actions .select2-container {
  float: left;
  margin-right: 6px; }
  #e-form-submissions .tablenav .actions .select2-container .select2-selection__arrow {
    height: 30px; }
  #e-form-submissions .tablenav .actions .select2-container .select2-selection--single {
    height: 30px;
    border: 1px solid #7e8993; }

input[type="search"].select2-search__field {
  line-height: 1; }

.e-form-submissions-search {
  position: relative; }
  .e-form-submissions-search__spinner {
    position: absolute;
    right: 12px;
    font-size: 11px;
    height: 100%;
    display: flex;
    align-items: center;
    color: var(--wp-admin-theme-color-darker-20, #005a87); }
  .e-form-submissions-search:focus-within .e-form-submissions-search__spinner, .e-form-submissions-search:hover .e-form-submissions-search__spinner {
    right: 30px; }

.e-form-submissions-action-log--success .e-form-submissions-action-log__message {
  background: #dff0d8;
  border-color: #5cb85c; }

.e-form-submissions-action-log--error .e-form-submissions-action-log__message {
  background: #f2dede;
  border-color: #d9534f; }

.e-form-submissions-action-log:not(:last-child) {
  border-bottom: 1px solid #D4D4D4; }

.e-form-submissions-action-log__label {
  display: inline-block;
  padding-right: 15px; }

.e-form-submissions-action-log__icon {
  display: inline-block;
  padding-right: 3px; }

.e-form-submissions-action-log__date {
  font-size: 12px;
  color: #818a91; }

.e-form-submissions-action-log__message {
  padding: 10px;
  font-size: 12px;
  color: #373a3c;
  background: #eceeef;
  border-left: 4px solid #818a91; }

.e-form-submissions-value-label:not(:last-child) {
  display: block;
  margin-bottom: 10px; }

/*# sourceMappingURL=admin.css.map */assets/css/modules/custom-code-rtl.min.css000064400000144004150755004320014627 0ustar00@-webkit-keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.wrap.elementor-admin-page-license form.elementor-license-box{max-width:600px;background:#fff;margin:20px 0;padding:20px}.wrap.elementor-admin-page-license form.elementor-license-box h3{border-bottom:1px solid #eee;padding:20px;margin:-20px -20px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wrap.elementor-admin-page-license form.elementor-license-box h3 span{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-right:5px}.wrap.elementor-admin-page-license form.elementor-license-box h3 small{float:left;font-size:13px;font-weight:400}.wrap.elementor-admin-page-license form.elementor-license-box label{display:block;font-size:1.3em;font-weight:600;margin:1em 0}.wrap.elementor-admin-page-license form.elementor-license-box .button{height:30px;margin-right:15px;margin-bottom:0}.wrap.elementor-admin-page-license form.elementor-license-box p.description{margin:10px 0}.wrap.elementor-admin-page-license form.elementor-license-box .e-row-stretch{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.wrap.elementor-admin-page-license form.elementor-license-box .e-row-divider-bottom{padding-bottom:15px;border-bottom:1px solid #eee}.wrap.elementor-admin-page-license .elementor-box-action{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;margin-top:30px}.wrap.elementor-admin-page-license .elementor-box-action .elementor-manually-link{color:#72777c;margin-left:15px}.wrap.elementor-admin-page-license .elementor-box-action .elementor-manually-link:hover{color:inherit}.fixed .column-elementor_library_type,.fixed .column-instances{width:10%}.fixed .elementor-shortcode-input{min-width:235px}@media (min-width:768px) and (max-width:1440px){.fixed .column-shortcode{width:25%}.fixed .elementor-shortcode-input{min-width:100%}}#available-widgets [class*=elementor-template] .widget-title:before{content:"\e801";font-family:eicon;font-size:17px}#elementor-widget-template-empty-templates{margin-top:15px;text-align:center}.elementor-widget-template-empty-templates-title{padding:25px 0 30px}.elementor-widget-template-empty-templates-icon{font-size:96px;color:#d5dadf}.elementor-widget-template-empty-templates-footer{color:#a4afb7;font-size:13px;font-style:italic;margin-bottom:15px}.elementor-widget-template-empty-templates-footer a{color:#a4afb7}.elementor-button-spinner.error:before{content:"\f335";color:red}span.font-variations-count{display:inline-block;vertical-align:top;margin:1px 0 0 5px;padding:0 5px;min-width:7px;height:17px;border-radius:11px;background-color:#d4dffb;color:#4278b2;font-size:9px;line-height:17px;text-align:center;z-index:26}.post-type-elementor_font div#elementor-font-custommetabox{background:none;border:0}.post-type-elementor_font div#elementor-font-custommetabox button.handlediv{display:none}.post-type-elementor_font div#elementor-font-custommetabox #poststuff .inside{margin:0;padding:0}.post-type-elementor_font div#elementor-font-custommetabox h2.hndle{padding:0}.post-type-elementor_font #minor-publishing-actions,.post-type-elementor_font #misc-publishing-actions,.post-type-elementor_font #tagsdiv-elementor_font_type,.post-type-elementor_font div#elementor-font-custommetabox .handle-actions{display:none}.elementor-metabox-content .repeater-block{background:#fff;color:#6d7882;padding:20px;margin-bottom:2px}.elementor-metabox-content .repeater-block span.elementor-repeater-tool-btn.close-repeater-row{display:none}.elementor-metabox-content .repeater-block.block-visible{padding-bottom:0;margin-bottom:0}.elementor-metabox-content .repeater-block.block-visible span.elementor-repeater-tool-btn.toggle-repeater-row{display:none}.elementor-metabox-content .repeater-block.block-visible span.elementor-repeater-tool-btn.close-repeater-row{display:inline-block}.elementor-metabox-content .repeater-block:not(.block-visible) .close-repeater-row{display:none}.elementor-metabox-content .repeater-block .repeater-title{cursor:pointer}.elementor-metabox-content .row-font-label{padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;text-transform:capitalize}.elementor-metabox-content .row-font-label li{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:100%;margin:0}.elementor-metabox-content .row-font-label li span.label{font-weight:500;padding-left:10px}.elementor-metabox-content .row-font-label li.row-font-style,.elementor-metabox-content .row-font-label li.row-font-weight{max-width:180px}.elementor-metabox-content .row-font-label li.row-font-actions{max-width:200px;text-align:left}.elementor-metabox-content .repeater-content{margin:0}.elementor-metabox-content .repeater-content .repeater-content-top{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px;line-height:28px}.elementor-metabox-content .repeater-content .repeater-content-top>div{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-metabox-content .repeater-content .repeater-content-top p{margin:0;display:inline-block}.elementor-metabox-content .repeater-content .repeater-content-top p label{font-weight:500;padding-left:10px}.elementor-metabox-content .repeater-content .repeater-content-top .elementor-field-select{max-width:180px}.elementor-metabox-content .repeater-content .repeater-content-top .elementor-field-toolbar{max-width:200px;text-align:left}.elementor-metabox-content .repeater-content .repeater-content-bottom{background-color:#f7f7f7;padding:20px 40px;margin:0 -20px}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fff;padding:10px 20px;margin-bottom:10px;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.05);box-shadow:0 3px 5px rgba(0,0,0,.05)}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field:last-child{margin-bottom:0}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field input,.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field p{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:100%;margin:0}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field p.elementor-field-label{font-weight:500;max-width:120px}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input{padding:5px 8px;margin:0 15px;border-radius:3px;font-size:12px;width:100%;background:none;-webkit-box-shadow:none;box-shadow:none;color:#495157;border:1px solid;outline:none}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input:not(:focus){border-color:#d5dadf}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input:focus{border-color:#a4afb7}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-btn,.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn{max-width:100px;font-size:11px}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn{background-color:#eceeef;color:#a4afb7}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn:hover{background-color:#b01b1b;color:#fff}.elementor-metabox-content .elementor-button{background-color:#a4afb7;color:#fff;line-height:1;text-transform:uppercase;height:auto;padding:10px 20px;outline:none;border:none;-webkit-transition-property:background,color,opacity,-webkit-box-shadow;transition-property:background,color,opacity,-webkit-box-shadow;-o-transition-property:background,color,box-shadow,opacity;transition-property:background,color,box-shadow,opacity;transition-property:background,color,box-shadow,opacity,-webkit-box-shadow;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s}.elementor-metabox-content .elementor-button:focus,.elementor-metabox-content .elementor-button:hover,.elementor-metabox-content .elementor-button:visited{color:#fff}.elementor-metabox-content .elementor-button:focus,.elementor-metabox-content .elementor-button:visited{background-color:#a4afb7}.elementor-metabox-content .elementor-button:hover{background-color:#6d7882;-webkit-box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);border:none}.elementor-metabox-content .elementor-button:active{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1);box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1)}.elementor-metabox-content .elementor-button:not([disabled]){cursor:pointer}.elementor-metabox-content .elementor-button.elementor-size-xs{font-size:11px;padding:10px 20px;border-radius:2px}.elementor-metabox-content .elementor-button.elementor-size-sm{font-size:13px;padding:12px 24px;border-radius:3px}.elementor-metabox-content .elementor-button.elementor-size-md{font-size:14px;padding:15px 30px;border-radius:4px}.elementor-metabox-content .elementor-button.elementor-size-lg{font-size:15px;padding:20px 40px;border-radius:5px}.elementor-metabox-content .elementor-button.elementor-size-xl{font-size:18px;padding:25px 50px;border-radius:6px}.elementor-metabox-content .elementor-button .elementor-align-icon-right{float:right;margin-left:5px}.elementor-metabox-content .elementor-button .elementor-align-icon-left{float:left;margin-right:5px}.elementor-metabox-content input.button.add-repeater-row{margin-top:18px;border:none;-webkit-box-shadow:none;box-shadow:none}.elementor-metabox-content .elementor-repeater-tool-btn{color:#a4afb7;cursor:pointer;padding:0 20px;font-size:12px;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.elementor-metabox-content .elementor-repeater-tool-btn i{padding-left:5px}.elementor-metabox-content .elementor-repeater-tool-btn:hover{color:#6d7882}.elementor-metabox-content .elementor-repeater-tool-btn.remove-repeater-row:hover{color:#b01b1b}.elementor-metabox-content .inline-preview,.elementor-metabox-content .row-font-preview{font-size:16px;text-transform:capitalize}.column-font_preview{width:65%}.widefat td.column-font_preview{font-size:16px}.post-type-elementor_icons .elementor-metabox-content .elementor-button:not([disabled]){margin-top:10px}.post-type-elementor_icons div#postbox-container-1{display:none}.post-type-elementor_icons div#elementor-custom-icons-metabox{display:none;border:1px solid #eceeef;border-radius:1px;background-color:#fff}.post-type-elementor_icons div#elementor-custom-icons-metabox .inside{margin-top:10px;margin-bottom:20px}.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-metabox-content{background-color:#fff}.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-custom-icons-metabox{padding:4px 10px 10px}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-custom-icons-metabox{padding:0}}.post-type-elementor_icons div#elementor-custom-icons-metabox h4{color:#556068;font-size:22px;font-weight:500;letter-spacing:.7px;line-height:28px;margin:0 0 4px}.post-type-elementor_icons div#elementor-custom-icons-metabox h5{color:#a4afb7;font-size:16px;font-weight:500;letter-spacing:.5px;line-height:21px;margin:0}.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor--dropzone--upload__icon i{font-size:64px;color:#39b54a}.post-type-elementor_icons div#elementor-custom-icons-metabox .box__error,.post-type-elementor_icons div#elementor-custom-icons-metabox .box__file,.post-type-elementor_icons div#elementor-custom-icons-metabox .box__success,.post-type-elementor_icons div#elementor-custom-icons-metabox .box__uploading{display:none}.post-type-elementor_icons div#elementor-custom-icons-metabox .is-dragover{background-color:grey}.post-type-elementor_icons div#elementor-custom-icons-metabox .box__input{padding:180px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-field-dropzone{outline:2px dashed #d5dadf;outline-offset:-3px;background-color:#fff;display:none}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons{background-color:#f7f7f7;border:1px solid #eceeef;border-radius:1px}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-metabox-content{background-color:#f7f7f7}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-metabox-content .elementor-custom-icons-metabox{padding:4px 10px 0}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header{height:50px;color:#6d7882;background-color:#fff;-webkit-box-shadow:0 2px 6px 0 rgba(0,0,0,.06);box-shadow:0 2px 6px 0 rgba(0,0,0,.06);padding:0 35px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header{padding:0 6px}}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div{-webkit-padding-end:10px;padding-inline-end:10px;-webkit-padding-start:10px;padding-inline-start:10px}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div{line-height:1}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div.remove{font-size:10px}}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div:nth-of-type(2){border:1px solid #a4afb7;border-top:0;border-bottom:0}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta{color:#556068;font-size:14px;line-height:1}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta{font-size:10px}}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-value{font-weight:700}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-value{font-size:10px}}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove{margin-right:auto;color:#556068;opacity:.6;cursor:pointer;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove i{color:#6d7882}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove:hover{opacity:1}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-footer{color:#c2cbd2;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;border-top:1px solid #eceeef;font-size:11px;font-weight:500;line-height:1;text-align:left;padding-top:10px;padding-bottom:10px;-webkit-padding-end:35px;padding-inline-end:35px}.post-type-elementor_icons div#elementor-custom-icons-metabox ul{display:grid;grid-template-columns:repeat(auto-fill,minmax(105px,1fr));grid-gap:20px;padding:15px 35px 0;overflow-y:auto;max-height:575px}.post-type-elementor_icons div#elementor-custom-icons-metabox ul li{position:relative;height:0;padding-bottom:100%;background-color:#fff;-webkit-box-shadow:0 1px 12px rgba(0,0,0,.05);box-shadow:0 1px 12px rgba(0,0,0,.05);border-radius:3px;overflow:hidden}.post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);padding:1px}.post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon-name{color:#c2cbd2;font-size:11px;padding:18px 20px 0;white-space:nowrap;max-width:100%;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}@media (max-width:479px){.post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon-name{display:none}}.post-type-elementor_icons div#elementor-custom-icons-metabox ul li i{font-size:32px}.post-type-elementor_icons #minor-publishing-actions,.post-type-elementor_icons #misc-publishing-actions,.post-type-elementor_icons #tagsdiv-elementor_icon_type{display:none}.column-icons_prefix{width:65%}:root{--color-box-shadow-color:rgba(0,0,0,0.05)}.eps-theme-dark{--color-box-shadow-color:rgba(0,0,0,0.1)}.eps-grid-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;width:100%}.eps-grid-container--no-wrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.eps-grid-container--wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.eps-grid-container--spacing{--grid-row-gutter:calc(-1 * calc(var(--grid-spacing-gutter) * 0.0625rem));width:var(--grid-spacing-width);margin:var(--grid-row-gutter)}.eps-grid-container--spacing>.eps-grid-item{padding:var(--grid-spacing-gutter)}.eps-grid--direction-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.eps-grid--direction-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.eps-grid--direction-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.eps-grid--direction-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.eps-grid--justify-stretch{-webkit-box-pack:stretch;-ms-flex-pack:stretch;justify-content:stretch}.eps-grid--justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.eps-grid--justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.eps-grid--justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.eps-grid--justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.eps-grid--justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.eps-grid--justify-space-evenly{-webkit-box-pack:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly}.eps-grid--align-content-stretch{-ms-flex-line-pack:stretch;align-content:stretch}.eps-grid--align-content-start{-ms-flex-line-pack:start;align-content:flex-start}.eps-grid--align-content-center{-ms-flex-line-pack:center;align-content:center}.eps-grid--align-content-end{-ms-flex-line-pack:end;align-content:flex-end}.eps-grid--align-content-space-between{-ms-flex-line-pack:justify;align-content:space-between}.eps-grid--align-items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.eps-grid--align-items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.eps-grid--align-items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.eps-grid--align-items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.eps-grid--align-items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.eps-grid-item--zero-min-width{min-width:0}@media screen and (min-width:480px){.eps-grid-item-sm{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;-ms-flex-preferred-size:0;flex-basis:0}}@media screen and (min-width:768px){.eps-grid-item-md{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;-ms-flex-preferred-size:0;flex-basis:0}}@media screen and (min-width:1025px){.eps-grid-item-lg{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;-ms-flex-preferred-size:0;flex-basis:0}}@media screen and (min-width:1440px){.eps-grid-item-xl{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;-ms-flex-preferred-size:0;flex-basis:0}}@media screen and (min-width:1600px){.eps-grid-item-xxl{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;-ms-flex-preferred-size:0;flex-basis:0}}.eps-grid-item-xs-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:8.33333%;-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%}.eps-grid-item-xs-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:16.66667%;-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%}.eps-grid-item-xs-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.eps-grid-item-xs-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:33.33333%;-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%}.eps-grid-item-xs-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:41.66667%;-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%}.eps-grid-item-xs-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.eps-grid-item-xs-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:58.33333%;-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%}.eps-grid-item-xs-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:66.66667%;-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%}.eps-grid-item-xs-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.eps-grid-item-xs-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:83.33333%;-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%}.eps-grid-item-xs-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:91.66667%;-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%}.eps-grid-item-xs-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}@media screen and (min-width:480px){.eps-grid-item-sm-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:8.33333%;-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%}.eps-grid-item-sm-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:16.66667%;-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%}.eps-grid-item-sm-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.eps-grid-item-sm-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:33.33333%;-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%}.eps-grid-item-sm-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:41.66667%;-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%}.eps-grid-item-sm-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.eps-grid-item-sm-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:58.33333%;-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%}.eps-grid-item-sm-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:66.66667%;-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%}.eps-grid-item-sm-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.eps-grid-item-sm-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:83.33333%;-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%}.eps-grid-item-sm-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:91.66667%;-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%}.eps-grid-item-sm-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}}@media screen and (min-width:768px){.eps-grid-item-md-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:8.33333%;-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%}.eps-grid-item-md-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:16.66667%;-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%}.eps-grid-item-md-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.eps-grid-item-md-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:33.33333%;-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%}.eps-grid-item-md-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:41.66667%;-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%}.eps-grid-item-md-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.eps-grid-item-md-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:58.33333%;-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%}.eps-grid-item-md-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:66.66667%;-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%}.eps-grid-item-md-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.eps-grid-item-md-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:83.33333%;-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%}.eps-grid-item-md-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:91.66667%;-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%}.eps-grid-item-md-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}}@media screen and (min-width:1025px){.eps-grid-item-lg-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:8.33333%;-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%}.eps-grid-item-lg-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:16.66667%;-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%}.eps-grid-item-lg-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.eps-grid-item-lg-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:33.33333%;-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%}.eps-grid-item-lg-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:41.66667%;-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%}.eps-grid-item-lg-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.eps-grid-item-lg-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:58.33333%;-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%}.eps-grid-item-lg-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:66.66667%;-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%}.eps-grid-item-lg-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.eps-grid-item-lg-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:83.33333%;-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%}.eps-grid-item-lg-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:91.66667%;-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%}.eps-grid-item-lg-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}}@media screen and (min-width:1440px){.eps-grid-item-xl-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:8.33333%;-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%}.eps-grid-item-xl-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:16.66667%;-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%}.eps-grid-item-xl-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.eps-grid-item-xl-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:33.33333%;-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%}.eps-grid-item-xl-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:41.66667%;-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%}.eps-grid-item-xl-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.eps-grid-item-xl-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:58.33333%;-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%}.eps-grid-item-xl-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:66.66667%;-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%}.eps-grid-item-xl-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.eps-grid-item-xl-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:83.33333%;-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%}.eps-grid-item-xl-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:91.66667%;-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%}.eps-grid-item-xl-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}}@media screen and (min-width:1600px){.eps-grid-item-xxl-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:8.33333%;-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%}.eps-grid-item-xxl-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:16.66667%;-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%}.eps-grid-item-xxl-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.eps-grid-item-xxl-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:33.33333%;-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%}.eps-grid-item-xxl-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:41.66667%;-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%}.eps-grid-item-xxl-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.eps-grid-item-xxl-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:58.33333%;-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%}.eps-grid-item-xxl-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:66.66667%;-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%}.eps-grid-item-xxl-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.eps-grid-item-xxl-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:83.33333%;-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%}.eps-grid-item-xxl-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:91.66667%;-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%}.eps-grid-item-xxl-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}}:root{--eps-modal-background-color:#fff;--eps-modal-header-background-color:#58d0f5}.eps-theme-dark{--eps-modal-background-color:#34383c;--eps-modal-header-background-color:#58d0f5}.eps-modal{max-width:43.75rem;background:var(--eps-modal-background-color);border-radius:.1875rem;-webkit-animation:fade-in .4s ease-in both;animation:fade-in .4s ease-in both}.eps-modal__overlay{background:rgba(0,0,0,.5);position:fixed;display:-webkit-box;display:-ms-flexbox;display:flex;top:0;left:0;width:100%;height:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1030}.eps-modal__header{font-size:.875rem;background:var(--eps-modal-header-background-color);height:2.75rem;padding:.625rem 1rem;border-radius:.1875rem}.eps-modal__header,.eps-modal__header .title{color:#fff}.eps-modal__icon{-webkit-margin-end:.625rem;margin-inline-end:.625rem}.eps-modal__body{padding:1.875rem}.eps-modal .eps-tip,.eps-modal__tip{-webkit-padding-start:.75rem;padding-inline-start:.75rem;-webkit-border-start:3px solid #58d0f5;border-inline-start:3px solid #58d0f5}.eps-modal .eps-tip:not(:last-child),.eps-modal__tip:not(:last-child){margin-bottom:1.875rem}.eps-modal .eps-tip:not(:first-child),.eps-modal__section:not(:first-child),.eps-modal__tip:not(:first-child){margin-top:1.875rem}.eps-modal__close-wrapper{-webkit-padding-start:1rem;padding-inline-start:1rem;-webkit-border-start:solid 1px #fff;border-inline-start:solid 1px #fff}.eps-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;--button-line-height:16px;--button-padding-y:0.5em;--button-padding-x:1.5em;--button-primary-background-color:#39b54a;--button-primary-hover-background-color:#33a242;--button-primary-active-background-color:#35a945;--button-primary-color:#fff;--button-secondary-background-color:#a4afb7;--button-secondary-hover-background-color:#96a2ac;--button-secondary-active-background-color:#9ba7b0;--button-secondary-color:#fff;--button-danger-background-color:#b01b1b;--button-danger-hover-background-color:#9a1818;--button-danger-active-background-color:#a31919;--button-danger-color:#fff;--button-cta-background-color:#93003f;--button-cta-hover-background-color:#7a0034;--button-cta-active-background-color:#840038;--button-cta-color:#fff;--button-link-background-color:#58d0f5;--button-link-hover-background-color:#40c9f4;--button-link-active-background-color:#4accf4;--button-link-color:#fff;--button-disabled-background-color:#c2cbd2;--button-disabled-hover-background-color:#b3bec7;--button-disabled-active-background-color:#b9c3cc;--button-disabled-color:#fff;color:var(--button-background-color,currentColor);font-size:var(--button-font-size,inherit);font-weight:500;line-height:var(--button-line-height);cursor:pointer}.eps-button:active{--button-background-color:var(--button-active-background-color,transparent)}.eps-button:hover{--button-background-color:var(--button-hover-background-color)}.eps-theme-dark .eps-button{--button-primary-background-color:#39b54a;--button-primary-color:#fff;--button-primary-hover-background-color:#33a242;--button-primary-active-background-color:#35a945;--button-secondary-background-color:#b4b5b7;--button-secondary-color:#fff;--button-secondary-hover-background-color:#a7a8ab;--button-secondary-active-background-color:#acadb0;--button-cta-background-color:#93003f;--button-cta-hover-background-color:#7a0034;--button-cta-active-background-color:#840038;--button-cta-color:#fff;--button-link-background-color:#58d0f5;--button-link-hover-background-color:#40c9f4;--button-link-active-background-color:#4accf4;--button-link-color:#fff;--button-disabled-background-color:#64666a;--button-disabled-hover-background-color:#58595d;--button-disabled-active-background-color:#5d5e62;--button-disabled-color:#fff}.eps-button--contained{padding:var(--button-padding-y) var(--button-padding-x);background-color:var(--button-background-color,transparent);border:1px solid var(--button-background-color)}.eps-button--contained,.eps-button--contained:hover{color:var(--button-color)}.eps-button--outlined{display:block;padding:var(--button-padding-y) var(--button-padding-x);border:1px solid var(--button-background-color)}.eps-button--contained,.eps-button--outlined{border-radius:.1875rem}.eps-button--underlined{text-decoration:underline}.eps-button--sm{--button-font-size:0.75rem;--button-line-height:14px}.eps-button--lg{--button-font-size:0.9375rem;--button-line-height:18px}.eps-button--primary{--button-color:var(--button-primary-color);--button-background-color:var(--button-primary-background-color);--button-hover-background-color:var(--button-primary-hover-background-color);--button-active-background-color:var(--button-primary-active-background-color)}.eps-button--secondary{--button-color:var(--buton-secondary-color);--button-background-color:var(--button-secondary-background-color);--button-hover-background-color:var(--button-secondary-hover-background-color);--button-active-background-color:var(--button-secondary-active-background-color)}.eps-button--danger{--button-color:var(--buton-danger-color);--button-background-color:var(--button-danger-background-color);--button-hover-background-color:var(--button-danger-hover-background-color);--button-active-background-color:var(--button-danger-active-background-color)}.eps-button--cta{--button-color:var(--button-cta-color);--button-background-color:var(--button-cta-background-color);--button-hover-background-color:var(--button-cta-hover-background-color);--button-active-background-color:var(--button-cta-active-background-color)}.eps-button--link{--button-color:var(--button-link-color);--button-background-color:var(--button-link-background-color);--button-hover-background-color:var(--button-link-hover-background-color);--button-active-background-color:var(--button-link-active-background-color)}.eps-button--disabled,.eps-button[disabled]{--button-color:var(--button-disabled-color);--button-background-color:var(--button-disabled-background-color);--button-hover-background-color:var(--button-disabled-hover-background-color);--button-active-background-color:var(--button-disabled-active-background-color);cursor:default}:root{--e-site-editor-conditions-row-controls-background:#fff;--e-site-editor-input-wrapper-border-color:#f1f3f5;--e-site-editor-input-wrapper-select-color:#556068;--e-site-editor-add-button-background-color:#a4afb7;--e-site-editor-add-button-color-hover-background-color:#6d7882;--e-site-editor-input-wrapper-condition-include-background-color:#a4afb7;--e-site-editor-input-wrapper-condition-exclude-background-color:#c2cbd2;--e-site-editor-input-select2-search-field-color:#495157}.eps-theme-dark{--select2-selection-background-color:tints(600);--e-site-editor-conditions-row-controls-background:#404349;--e-site-editor-input-wrapper-border-color:#404349;--e-site-editor-input-wrapper-select-color:#b4b5b7;--e-site-editor-add-button-background-color:#4c4f56;--e-site-editor-add-button-color-hover-background-color:#404349;--e-site-editor-input-wrapper-condition-include-background-color:#404349;--e-site-editor-input-wrapper-condition-exclude-background-color:#404349;--e-site-editor-input-select2-search-field-color:#fff}.e-site-editor-conditions__header{text-align:center}.e-site-editor-conditions__header-image{display:block;margin:0 auto 2.75rem;width:4.375rem}.e-site-editor-conditions__rows{margin:2.75rem auto;max-width:43.75rem}.e-site-editor-conditions__row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-top:.75rem}.e-site-editor-conditions__remove-condition{color:#c2cbd2;font-size:1.125rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.e-site-editor-conditions__row-controls{overflow:hidden;margin-left:.625rem;background-color:var(--e-site-editor-conditions-row-controls-background);display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-shadow:0 3px 6px var(--color-box-shadow-color);box-shadow:0 3px 6px var(--color-box-shadow-color);border-radius:.1875rem}.e-site-editor-conditions__row-controls--error{border:1px solid #b01b1b}.e-site-editor-conditions__conflict{text-align:center;margin-top:.3125rem;color:#b01b1b}.e-site-editor-conditions__row-controls-inner{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.e-site-editor-conditions__row-controls-inner div{-webkit-box-flex:1;-ms-flex:1;flex:1}.e-site-editor-conditions__add-button-container{text-align:center}.e-site-editor-conditions__add-button{margin-top:2.75rem;background-color:var(--e-site-editor-add-button-background-color);color:#fff;text-transform:uppercase}.e-site-editor-conditions__add-button:hover{background-color:var(--e-site-editor-add-button-color-hover-background-color);color:#fff}.e-site-editor-conditions__footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;position:absolute;bottom:0;right:0;left:0;padding:.5rem;border-top:1px solid var(--hr-color)}.e-site-editor-conditions__input-wrapper{position:relative;border-left-color:var(--e-site-editor-input-wrapper-border-color);border-bottom-color:var(--e-site-editor-input-wrapper-border-color);border-right:1px solid;border-right-color:var(--e-site-editor-input-wrapper-border-color);border-top-color:var(--e-site-editor-input-wrapper-border-color)}.e-site-editor-conditions__input-wrapper:first-child{border:none}.e-site-editor-conditions__input-wrapper select{-moz-appearance:none;appearance:none;-webkit-appearance:none;font-size:.75rem;height:2.5rem;border-width:0;padding:0 .625rem;width:100%;position:relative;color:var(--e-site-editor-input-wrapper-select-color);outline:none;background:transparent}.e-site-editor-conditions__input-wrapper:after{font-family:eicons;content:"\e8ad";font-size:.75rem;pointer-events:none;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);left:.625rem}.e-site-editor-conditions__input-wrapper .select2-container--default .select2-selection--single{border:none;line-height:2.5rem}.e-site-editor-conditions__input-wrapper .select2-container--default .select2-selection--single .select2-selection__rendered{line-height:2.5rem;font-size:.75rem}.e-site-editor-conditions__input-wrapper .select2-selection{outline:none;background:transparent;height:2.5rem}.e-site-editor-conditions__input-wrapper .select2-selection__arrow{display:none}.e-site-editor-conditions__input-wrapper--condition-type{position:relative}.e-site-editor-conditions__input-wrapper--condition-type:before{font-family:eicons;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:.75rem;font-size:.9375rem;color:#fff;pointer-events:none;z-index:1000}.e-site-editor-conditions__input-wrapper--condition-type:after{color:#fff}.e-site-editor-conditions__input-wrapper--condition-type select{text-transform:uppercase;padding-right:2.125rem;width:7.5rem;font-size:.75rem;color:#fff}.e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type=include]:before{content:"\e8cc"}.e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type=include] select{background-color:var(--e-site-editor-input-wrapper-condition-include-background-color)}.e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type=exclude]:before{content:"\e8cd"}.e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type=exclude] select{background-color:var(--e-site-editor-input-wrapper-condition-exclude-background-color)}.select2-search__field{background-color:transparent;color:var(--e-site-editor-input-select2-search-field-color)}.misc-pub-visibility{display:none}.eps-modal__overlay{background:rgba(0,0,0,.8);z-index:9999}.select2-container{z-index:9999}.post-conditions .spinner{margin:0 10px;float:none;visibility:visible}.post-conditions .eps-button--underlined{color:#0073aa}.post-conditions .eps-modal{position:relative;background:#f1f3f5;max-width:1200px;max-height:800px;width:90vw;height:90vh;margin:auto}.post-conditions .eps-modal .eps-modal__body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.post-conditions .eps-modal .eps-h1{font-size:30px;font-weight:300}.post-conditions .eps-modal .eps-text{font-size:18px;line-height:150%;margin:1em 0;color:#a4afb7}.post-conditions .eps-modal .eps-grid-container{width:auto}.post-conditions .eps-modal__header{background:#fff;color:#556068;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1);padding:2px 15px}.post-conditions .eps-modal__header .eps-app__logo{width:1.75rem;height:1.75rem;line-height:1.75rem;text-align:center;font-size:calc(.4 * 1.75rem);border-radius:50%;color:#fff;background-color:#93003f}.post-conditions .eps-modal__header .eps-text{position:relative;top:2px;font-size:.9375rem;font-weight:700;text-transform:uppercase;color:#6d7882}.post-conditions .eps-modal__header .eps-button{font-size:18px}.post-conditions .eps-modal .e-site-editor-conditions__header{padding-top:5vh}.post-conditions .eps-modal .e-site-editor-conditions__rows{overflow-y:auto;max-height:27vh;margin:0 auto}.post-conditions .eps-modal .e-site-editor-conditions__rows:empty{margin-bottom:30px}.post-conditions .eps-modal .e-site-editor-conditions__rows:not(:empty){margin-bottom:20px}.post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row{margin-top:15px;padding:0 14px}.post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls{border-radius:0}.post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls select{text-transform:none}.post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls select:focus{-webkit-box-shadow:none;box-shadow:none;border:none;color:inherit}.post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls select:hover{color:inherit}.post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls .e-site-editor-conditions__input-wrapper--condition-type select:focus,.post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls .e-site-editor-conditions__input-wrapper--condition-type select:hover{color:#fff}.post-conditions .eps-modal .e-site-editor-conditions__add-button{margin-top:0}.post-conditions .eps-modal .e-site-editor-conditions__footer{z-index:1000;border-top:1px solid #d5dadf}#elementor-custom-code.postbox{border:0}#elementor-custom-code .postbox-header{display:none}#elementor-custom-code .inside{padding:0}#elementor-custom-code .inside .elementor-custom-code-meta-box{margin:0}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel{border:1px solid #eceeef;border-bottom-color:#ccd0d4;background:#fff}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-custom-code-panel-placement{padding:5px 40px;margin:10px 0;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:10px}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-custom-code-options-placement{display:none}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-custom-code-options-placement.show,#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel div{display:-webkit-box;display:-ms-flexbox;display:flex}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field i{color:#c2cbd2;font-size:15px}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field select{height:20px;margin-top:7px}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field select#location{direction:ltr}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field.priority{margin-right:auto}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field.location{-webkit-margin-end:10px;margin-inline-end:10px}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-label{font-weight:500;font-size:14px;line-height:16px;color:#6d7882}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-label:nth-child(2n){margin-left:20px}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-label:nth-child(odd){margin-left:5px}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-checkboxes{padding-top:18px}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-checkboxes .label{position:relative;top:-5px}#elementor-custom-code .inside .elementor-custom-code-codemirror-holder{border:1px solid #eceeef;background:#f7f7f7;padding:40px}#elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-field-label{margin:0}#elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror{border:1px solid #ccd0d4;resize:vertical;overflow:auto;max-width:100%}#elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror .CodeMirror-scroll,#elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror .CodeMirror.CodeMirror-wrap,#elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror .elementor-field-textarea{height:100%}#elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror .CodeMirror-sizer{min-height:300px!important;border-right:0}.post-type-elementor_snippet #minor-publishing-actions,.post-type-elementor_snippet #save-action{display:none}.e--ua-safari #elementor-custom-code .elementor-custom-code-codemirror{background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.e--ua-safari #elementor-custom-code .elementor-custom-code-codemirror .elementor-field-textarea{width:calc(100% - 8px)}.e--ua-safari #elementor-custom-code .elementor-custom-code-codemirror .CodeMirror-sizer{-webkit-box-sizing:border-box;box-sizing:border-box}@media (max-height:825px),(max-width:850px){.post-conditions .eps-modal{width:100vw;height:90vh}.post-conditions .eps-modal .e-site-editor-conditions__header{padding-top:0}.post-conditions .eps-modal .e-site-editor-conditions__rows{max-height:14vh}.post-conditions .eps-modal .e-site-editor-conditions__header-image{margin:0 auto}}@media (max-height:666px),(max-width:590px){.post-conditions .eps-modal .eps-modal__body{overflow:auto;height:calc(100vh - 200px)}.post-conditions .eps-modal .eps-modal__body .e-site-editor-conditions__footer{background:#f1f3f5}}assets/css/modules/custom-code-rtl.css000064400000141011150755004320014040 0ustar00@keyframes fade-in {
  0% {
    opacity: 0; }
  100% {
    opacity: 1; } }

.wrap.elementor-admin-page-license form.elementor-license-box {
  max-width: 600px;
  background: white;
  margin: 20px 0;
  padding: 20px 20px; }
  .wrap.elementor-admin-page-license form.elementor-license-box h3 {
    border-bottom: 1px solid #eee;
    padding: 20px;
    margin: -20px -20px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center; }
    .wrap.elementor-admin-page-license form.elementor-license-box h3 span {
      flex-grow: 1;
      padding-right: 5px; }
    .wrap.elementor-admin-page-license form.elementor-license-box h3 small {
      float: left;
      font-size: 13px;
      font-weight: normal; }
  .wrap.elementor-admin-page-license form.elementor-license-box label {
    display: block;
    font-size: 1.3em;
    font-weight: 600;
    margin: 1em 0; }
  .wrap.elementor-admin-page-license form.elementor-license-box .button {
    height: 30px;
    margin-right: 15px;
    margin-bottom: 0; }
  .wrap.elementor-admin-page-license form.elementor-license-box p.description {
    margin: 10px 0; }
  .wrap.elementor-admin-page-license form.elementor-license-box .e-row-stretch {
    display: flex;
    align-items: center;
    justify-content: space-between; }
  .wrap.elementor-admin-page-license form.elementor-license-box .e-row-divider-bottom {
    padding-bottom: 15px;
    border-bottom: 1px solid #eeeeee; }

.wrap.elementor-admin-page-license .elementor-box-action {
  display: flex;
  justify-content: flex-end;
  align-items: flex-end;
  margin-top: 30px; }
  .wrap.elementor-admin-page-license .elementor-box-action .elementor-manually-link {
    color: #72777c;
    margin-left: 15px; }
    .wrap.elementor-admin-page-license .elementor-box-action .elementor-manually-link:hover {
      color: inherit; }

.fixed .column-elementor_library_type,
.fixed .column-instances {
  width: 10%; }

.fixed .elementor-shortcode-input {
  min-width: 235px; }

@media (min-width: 768px) and (max-width: 1440px) {
  .fixed .column-shortcode {
    width: 25%; }
  .fixed .elementor-shortcode-input {
    min-width: 100%; } }

#available-widgets [class*="elementor-template"] .widget-title:before {
  content: "\e801";
  font-family: eicon;
  font-size: 17px; }

#elementor-widget-template-empty-templates {
  margin-top: 15px;
  text-align: center; }

.elementor-widget-template-empty-templates-title {
  padding: 25px 0 30px; }

.elementor-widget-template-empty-templates-icon {
  font-size: 96px;
  color: #d5dadf; }

.elementor-widget-template-empty-templates-footer {
  color: #a4afb7;
  font-size: 13px;
  font-style: italic;
  margin-bottom: 15px; }
  .elementor-widget-template-empty-templates-footer a {
    color: #a4afb7; }

.elementor-button-spinner.error:before {
  content: "\f335";
  color: #ff0000; }

span.font-variations-count {
  display: inline-block;
  vertical-align: top;
  margin: 1px 0 0 5px;
  padding: 0 5px;
  min-width: 7px;
  height: 17px;
  border-radius: 11px;
  background-color: #d4dffb;
  color: #4278b2;
  font-size: 9px;
  line-height: 17px;
  text-align: center;
  z-index: 26; }

.post-type-elementor_font div#elementor-font-custommetabox {
  background: none;
  border: 0; }
  .post-type-elementor_font div#elementor-font-custommetabox button.handlediv {
    display: none; }
  .post-type-elementor_font div#elementor-font-custommetabox #poststuff .inside {
    margin: 0;
    padding: 0; }
  .post-type-elementor_font div#elementor-font-custommetabox h2.hndle {
    padding: 0; }
  .post-type-elementor_font div#elementor-font-custommetabox .handle-actions {
    display: none; }

.post-type-elementor_font #tagsdiv-elementor_font_type,
.post-type-elementor_font #minor-publishing-actions,
.post-type-elementor_font #misc-publishing-actions {
  display: none; }

.elementor-metabox-content .repeater-block {
  background: #ffffff;
  color: #6d7882;
  padding: 20px;
  margin-bottom: 2px; }
  .elementor-metabox-content .repeater-block span.elementor-repeater-tool-btn.close-repeater-row {
    display: none; }
  .elementor-metabox-content .repeater-block.block-visible {
    padding-bottom: 0;
    margin-bottom: 0; }
    .elementor-metabox-content .repeater-block.block-visible span.elementor-repeater-tool-btn.toggle-repeater-row {
      display: none; }
    .elementor-metabox-content .repeater-block.block-visible span.elementor-repeater-tool-btn.close-repeater-row {
      display: inline-block; }
  .elementor-metabox-content .repeater-block:not(.block-visible) .close-repeater-row {
    display: none; }
  .elementor-metabox-content .repeater-block .repeater-title {
    cursor: pointer; }

.elementor-metabox-content .row-font-label {
  padding: 0;
  margin: 0;
  display: flex;
  text-transform: capitalize; }
  .elementor-metabox-content .row-font-label li {
    box-sizing: border-box;
    flex-grow: 1;
    width: 100%;
    margin: 0; }
    .elementor-metabox-content .row-font-label li span.label {
      font-weight: 500;
      padding-left: 10px; }
    .elementor-metabox-content .row-font-label li.row-font-weight, .elementor-metabox-content .row-font-label li.row-font-style {
      max-width: 180px; }
    .elementor-metabox-content .row-font-label li.row-font-actions {
      max-width: 200px;
      text-align: left; }

.elementor-metabox-content .repeater-content {
  margin: 0; }
  .elementor-metabox-content .repeater-content .repeater-content-top {
    display: flex;
    margin-bottom: 20px;
    line-height: 28px; }
    .elementor-metabox-content .repeater-content .repeater-content-top > div {
      box-sizing: border-box;
      flex-grow: 1; }
    .elementor-metabox-content .repeater-content .repeater-content-top p {
      margin: 0;
      display: inline-block; }
      .elementor-metabox-content .repeater-content .repeater-content-top p label {
        font-weight: 500;
        padding-left: 10px; }
    .elementor-metabox-content .repeater-content .repeater-content-top .elementor-field-select {
      max-width: 180px; }
    .elementor-metabox-content .repeater-content .repeater-content-top .elementor-field-toolbar {
      max-width: 200px;
      text-align: left; }
  .elementor-metabox-content .repeater-content .repeater-content-bottom {
    background-color: #f7f7f7;
    padding: 20px 40px;
    margin: 0 -20px; }
    .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field {
      display: flex;
      align-items: center;
      background-color: #ffffff;
      padding: 10px 20px;
      margin-bottom: 10px;
      box-shadow: 0 3px 5px rgba(0, 0, 0, 0.05); }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field:last-child {
        margin-bottom: 0; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field p,
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field input {
        box-sizing: border-box;
        flex-grow: 1;
        width: 100%;
        margin: 0; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field p.elementor-field-label {
        font-weight: 500;
        max-width: 120px; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input {
        padding: 5px 8px;
        margin: 0 15px;
        border-radius: 3px;
        font-size: 12px;
        width: 100%;
        background: none;
        box-shadow: none;
        color: #495157;
        border: 1px solid;
        outline: none; }
        .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input:not(:focus) {
          border-color: #d5dadf; }
        .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input:focus {
          border-color: #a4afb7; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-btn,
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn {
        max-width: 100px;
        font-size: 11px; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn {
        background-color: #eceeef;
        color: #a4afb7; }
        .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn:hover {
          background-color: #b01b1b;
          color: white; }

.elementor-metabox-content .elementor-button {
  background-color: #a4afb7;
  color: #fff;
  line-height: 1;
  text-transform: uppercase;
  height: auto;
  padding: 10px 20px;
  outline: none;
  border: none;
  transition-property: background, color, box-shadow, opacity;
  transition-duration: .3s; }
  .elementor-metabox-content .elementor-button:hover, .elementor-metabox-content .elementor-button:focus, .elementor-metabox-content .elementor-button:visited {
    color: #fff; }
  .elementor-metabox-content .elementor-button:focus, .elementor-metabox-content .elementor-button:visited {
    background-color: #a4afb7; }
  .elementor-metabox-content .elementor-button:hover {
    background-color: #6d7882;
    box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
    border: none; }
  .elementor-metabox-content .elementor-button:active {
    box-shadow: 0 5px 10px rgba(0, 0, 0, 0.19), 0 3px 3px rgba(0, 0, 0, 0.1); }
  .elementor-metabox-content .elementor-button:not([disabled]) {
    cursor: pointer; }
  .elementor-metabox-content .elementor-button.elementor-size-xs {
    font-size: 11px;
    padding: 10px 20px;
    border-radius: 2px; }
  .elementor-metabox-content .elementor-button.elementor-size-sm {
    font-size: 13px;
    padding: 12px 24px;
    border-radius: 3px; }
  .elementor-metabox-content .elementor-button.elementor-size-md {
    font-size: 14px;
    padding: 15px 30px;
    border-radius: 4px; }
  .elementor-metabox-content .elementor-button.elementor-size-lg {
    font-size: 15px;
    padding: 20px 40px;
    border-radius: 5px; }
  .elementor-metabox-content .elementor-button.elementor-size-xl {
    font-size: 18px;
    padding: 25px 50px;
    border-radius: 6px; }
  .elementor-metabox-content .elementor-button .elementor-align-icon-right {
    float: right;
    margin-left: 5px; }
  .elementor-metabox-content .elementor-button .elementor-align-icon-left {
    float: left;
    margin-right: 5px; }

.elementor-metabox-content input.button.add-repeater-row {
  margin-top: 18px;
  border: none;
  box-shadow: none; }

.elementor-metabox-content .elementor-repeater-tool-btn {
  color: #a4afb7;
  cursor: pointer;
  padding: 0 20px;
  font-size: 12px;
  transition: all 0.3s; }
  .elementor-metabox-content .elementor-repeater-tool-btn i {
    padding-left: 5px; }
  .elementor-metabox-content .elementor-repeater-tool-btn:hover {
    color: #6d7882; }
  .elementor-metabox-content .elementor-repeater-tool-btn.remove-repeater-row:hover {
    color: #b01b1b; }

.elementor-metabox-content .row-font-preview,
.elementor-metabox-content .inline-preview {
  font-size: 16px;
  text-transform: capitalize; }

.column-font_preview {
  width: 65%; }

.widefat td.column-font_preview {
  font-size: 16px; }

.post-type-elementor_icons .elementor-metabox-content .elementor-button:not([disabled]) {
  margin-top: 10px; }

.post-type-elementor_icons div#postbox-container-1 {
  display: none; }

.post-type-elementor_icons div#elementor-custom-icons-metabox {
  display: none;
  border: 1px solid #eceeef;
  border-radius: 1px;
  background-color: #fff; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .inside {
    margin-top: 10px;
    margin-bottom: 20px; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-metabox-content {
    background-color: #fff; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-custom-icons-metabox {
    padding: 4px 10px 10px 10px; }
    @media (max-width: 1025px) {
      .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-custom-icons-metabox {
        padding: 0; } }
  .post-type-elementor_icons div#elementor-custom-icons-metabox h4 {
    color: #556068;
    font-size: 22px;
    font-weight: 500;
    letter-spacing: 0.7px;
    line-height: 28px;
    margin: 0 0 4px 0; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox h5 {
    color: #a4afb7;
    font-size: 16px;
    font-weight: 500;
    letter-spacing: 0.5px;
    line-height: 21px;
    margin: 0; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor--dropzone--upload__icon i {
    font-size: 64px;
    color: #39b54a; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__uploading,
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__success,
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__error,
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__file {
    display: none; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .is-dragover {
    background-color: grey; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__input {
    padding: 180px 0;
    display: flex;
    flex-direction: column;
    align-items: center; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-field-dropzone {
    outline: 2px dashed #d5dadf;
    outline-offset: -3px;
    background-color: #fff;
    display: none; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons {
    background-color: #f7f7f7;
    border: 1px solid #eceeef;
    border-radius: 1px; }
    .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-metabox-content {
      background-color: #f7f7f7; }
      .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-metabox-content .elementor-custom-icons-metabox {
        padding: 4px 10px 0 10px; }
    .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header {
      height: 50px;
      color: #6d7882;
      background-color: #fff;
      box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.06);
      padding: 0 35px;
      display: flex;
      align-items: center;
      justify-content: flex-start; }
      @media (max-width: 1025px) {
        .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header {
          padding: 0 6px; } }
      .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div {
        padding-inline-end: 10px;
        padding-inline-start: 10px; }
        @media (max-width: 1025px) {
          .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div {
            line-height: 1; }
            .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div.remove {
              font-size: 10px; } }
        .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div:nth-of-type(2) {
          border: 1px solid #a4afb7;
          border-top: 0;
          border-bottom: 0; }
      .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta {
        color: #556068;
        font-size: 14px;
        line-height: 1; }
        @media (max-width: 1025px) {
          .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta {
            font-size: 10px; } }
        .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-value {
          font-weight: bold; }
          @media (max-width: 1025px) {
            .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-value {
              font-size: 10px; } }
        .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove {
          margin-right: auto;
          color: #556068;
          opacity: .6;
          cursor: pointer;
          transition: all 0.3s; }
          .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove i {
            color: #6d7882; }
          .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove:hover {
            opacity: 1; }
    .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-footer {
      color: #c2cbd2;
      font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
      border-top: 1px solid #eceeef;
      font-size: 11px;
      font-weight: 500;
      line-height: 1;
      text-align: left;
      padding-top: 10px;
      padding-bottom: 10px;
      padding-inline-end: 35px; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox ul {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(105px, 1fr));
    grid-gap: 20px;
    padding: 15px 35px 0 35px;
    overflow-y: auto;
    max-height: 575px; }
    .post-type-elementor_icons div#elementor-custom-icons-metabox ul li {
      position: relative;
      height: 0;
      padding-bottom: 100%;
      background-color: #fff;
      box-shadow: 0 1px 12px rgba(0, 0, 0, 0.05);
      border-radius: 3px;
      overflow: hidden; }
      .post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 100%;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        padding: 1px; }
      .post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon-name {
        color: #c2cbd2;
        font-size: 11px;
        padding: 18px 20px 0;
        white-space: nowrap;
        max-width: 100%;
        overflow: hidden;
        text-overflow: ellipsis; }
        @media (max-width: 479px) {
          .post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon-name {
            display: none; } }
      .post-type-elementor_icons div#elementor-custom-icons-metabox ul li i {
        font-size: 32px; }

.post-type-elementor_icons #tagsdiv-elementor_icon_type,
.post-type-elementor_icons #minor-publishing-actions,
.post-type-elementor_icons #misc-publishing-actions {
  display: none; }

.column-icons_prefix {
  width: 65%; }

:root {
  --color-box-shadow-color: rgba(0, 0, 0, 0.05); }

.eps-theme-dark {
  --color-box-shadow-color: rgba(0, 0, 0, 0.1); }

.eps-grid-container {
  display: flex;
  flex-wrap: wrap;
  width: 100%; }
  .eps-grid-container--no-wrap {
    flex-wrap: nowrap; }
  .eps-grid-container--wrap-reverse {
    flex-wrap: wrap-reverse; }
  .eps-grid-container--spacing {
    --grid-row-gutter: calc(-1 * calc( var(--grid-spacing-gutter) * 0.0625rem));
    width: var(--grid-spacing-width);
    margin: var(--grid-row-gutter); }
    .eps-grid-container--spacing > .eps-grid-item {
      padding: var(--grid-spacing-gutter); }

.eps-grid--direction-row {
  flex-direction: row; }
  .eps-grid--direction-row-reverse {
    flex-direction: row-reverse; }

.eps-grid--direction-column {
  flex-direction: column; }
  .eps-grid--direction-column-reverse {
    flex-direction: column-reverse; }

.eps-grid--justify-stretch {
  justify-content: stretch; }

.eps-grid--justify-start {
  justify-content: flex-start; }

.eps-grid--justify-center {
  justify-content: center; }

.eps-grid--justify-end {
  justify-content: flex-end; }

.eps-grid--justify-space-between {
  justify-content: space-between; }

.eps-grid--justify-space-around {
  justify-content: space-around; }

.eps-grid--justify-space-evenly {
  justify-content: space-evenly; }

.eps-grid--align-content-stretch {
  align-content: stretch; }

.eps-grid--align-content-start {
  align-content: flex-start; }

.eps-grid--align-content-center {
  align-content: center; }

.eps-grid--align-content-end {
  align-content: flex-end; }

.eps-grid--align-content-space-between {
  align-content: space-between; }

.eps-grid--align-items-start {
  align-items: flex-start; }

.eps-grid--align-items-center {
  align-items: center; }

.eps-grid--align-items-end {
  align-items: flex-end; }

.eps-grid--align-items-baseline {
  align-items: baseline; }

.eps-grid--align-items-stretch {
  align-items: stretch; }

.eps-grid-item--zero-min-width {
  min-width: 0; }

@media screen and (min-width: 480px) {
  .eps-grid-item-sm {
    flex-grow: 1;
    max-width: 100%;
    flex-basis: 0; } }

@media screen and (min-width: 768px) {
  .eps-grid-item-md {
    flex-grow: 1;
    max-width: 100%;
    flex-basis: 0; } }

@media screen and (min-width: 1025px) {
  .eps-grid-item-lg {
    flex-grow: 1;
    max-width: 100%;
    flex-basis: 0; } }

@media screen and (min-width: 1440px) {
  .eps-grid-item-xl {
    flex-grow: 1;
    max-width: 100%;
    flex-basis: 0; } }

@media screen and (min-width: 1600px) {
  .eps-grid-item-xxl {
    flex-grow: 1;
    max-width: 100%;
    flex-basis: 0; } }

.eps-grid-item-xs-1 {
  flex-grow: 0;
  max-width: 8.33333%;
  flex-basis: 8.33333%; }

.eps-grid-item-xs-2 {
  flex-grow: 0;
  max-width: 16.66667%;
  flex-basis: 16.66667%; }

.eps-grid-item-xs-3 {
  flex-grow: 0;
  max-width: 25%;
  flex-basis: 25%; }

.eps-grid-item-xs-4 {
  flex-grow: 0;
  max-width: 33.33333%;
  flex-basis: 33.33333%; }

.eps-grid-item-xs-5 {
  flex-grow: 0;
  max-width: 41.66667%;
  flex-basis: 41.66667%; }

.eps-grid-item-xs-6 {
  flex-grow: 0;
  max-width: 50%;
  flex-basis: 50%; }

.eps-grid-item-xs-7 {
  flex-grow: 0;
  max-width: 58.33333%;
  flex-basis: 58.33333%; }

.eps-grid-item-xs-8 {
  flex-grow: 0;
  max-width: 66.66667%;
  flex-basis: 66.66667%; }

.eps-grid-item-xs-9 {
  flex-grow: 0;
  max-width: 75%;
  flex-basis: 75%; }

.eps-grid-item-xs-10 {
  flex-grow: 0;
  max-width: 83.33333%;
  flex-basis: 83.33333%; }

.eps-grid-item-xs-11 {
  flex-grow: 0;
  max-width: 91.66667%;
  flex-basis: 91.66667%; }

.eps-grid-item-xs-12 {
  flex-grow: 0;
  max-width: 100%;
  flex-basis: 100%; }

@media screen and (min-width: 480px) {
  .eps-grid-item-sm-1 {
    flex-grow: 0;
    max-width: 8.33333%;
    flex-basis: 8.33333%; }
  .eps-grid-item-sm-2 {
    flex-grow: 0;
    max-width: 16.66667%;
    flex-basis: 16.66667%; }
  .eps-grid-item-sm-3 {
    flex-grow: 0;
    max-width: 25%;
    flex-basis: 25%; }
  .eps-grid-item-sm-4 {
    flex-grow: 0;
    max-width: 33.33333%;
    flex-basis: 33.33333%; }
  .eps-grid-item-sm-5 {
    flex-grow: 0;
    max-width: 41.66667%;
    flex-basis: 41.66667%; }
  .eps-grid-item-sm-6 {
    flex-grow: 0;
    max-width: 50%;
    flex-basis: 50%; }
  .eps-grid-item-sm-7 {
    flex-grow: 0;
    max-width: 58.33333%;
    flex-basis: 58.33333%; }
  .eps-grid-item-sm-8 {
    flex-grow: 0;
    max-width: 66.66667%;
    flex-basis: 66.66667%; }
  .eps-grid-item-sm-9 {
    flex-grow: 0;
    max-width: 75%;
    flex-basis: 75%; }
  .eps-grid-item-sm-10 {
    flex-grow: 0;
    max-width: 83.33333%;
    flex-basis: 83.33333%; }
  .eps-grid-item-sm-11 {
    flex-grow: 0;
    max-width: 91.66667%;
    flex-basis: 91.66667%; }
  .eps-grid-item-sm-12 {
    flex-grow: 0;
    max-width: 100%;
    flex-basis: 100%; } }

@media screen and (min-width: 768px) {
  .eps-grid-item-md-1 {
    flex-grow: 0;
    max-width: 8.33333%;
    flex-basis: 8.33333%; }
  .eps-grid-item-md-2 {
    flex-grow: 0;
    max-width: 16.66667%;
    flex-basis: 16.66667%; }
  .eps-grid-item-md-3 {
    flex-grow: 0;
    max-width: 25%;
    flex-basis: 25%; }
  .eps-grid-item-md-4 {
    flex-grow: 0;
    max-width: 33.33333%;
    flex-basis: 33.33333%; }
  .eps-grid-item-md-5 {
    flex-grow: 0;
    max-width: 41.66667%;
    flex-basis: 41.66667%; }
  .eps-grid-item-md-6 {
    flex-grow: 0;
    max-width: 50%;
    flex-basis: 50%; }
  .eps-grid-item-md-7 {
    flex-grow: 0;
    max-width: 58.33333%;
    flex-basis: 58.33333%; }
  .eps-grid-item-md-8 {
    flex-grow: 0;
    max-width: 66.66667%;
    flex-basis: 66.66667%; }
  .eps-grid-item-md-9 {
    flex-grow: 0;
    max-width: 75%;
    flex-basis: 75%; }
  .eps-grid-item-md-10 {
    flex-grow: 0;
    max-width: 83.33333%;
    flex-basis: 83.33333%; }
  .eps-grid-item-md-11 {
    flex-grow: 0;
    max-width: 91.66667%;
    flex-basis: 91.66667%; }
  .eps-grid-item-md-12 {
    flex-grow: 0;
    max-width: 100%;
    flex-basis: 100%; } }

@media screen and (min-width: 1025px) {
  .eps-grid-item-lg-1 {
    flex-grow: 0;
    max-width: 8.33333%;
    flex-basis: 8.33333%; }
  .eps-grid-item-lg-2 {
    flex-grow: 0;
    max-width: 16.66667%;
    flex-basis: 16.66667%; }
  .eps-grid-item-lg-3 {
    flex-grow: 0;
    max-width: 25%;
    flex-basis: 25%; }
  .eps-grid-item-lg-4 {
    flex-grow: 0;
    max-width: 33.33333%;
    flex-basis: 33.33333%; }
  .eps-grid-item-lg-5 {
    flex-grow: 0;
    max-width: 41.66667%;
    flex-basis: 41.66667%; }
  .eps-grid-item-lg-6 {
    flex-grow: 0;
    max-width: 50%;
    flex-basis: 50%; }
  .eps-grid-item-lg-7 {
    flex-grow: 0;
    max-width: 58.33333%;
    flex-basis: 58.33333%; }
  .eps-grid-item-lg-8 {
    flex-grow: 0;
    max-width: 66.66667%;
    flex-basis: 66.66667%; }
  .eps-grid-item-lg-9 {
    flex-grow: 0;
    max-width: 75%;
    flex-basis: 75%; }
  .eps-grid-item-lg-10 {
    flex-grow: 0;
    max-width: 83.33333%;
    flex-basis: 83.33333%; }
  .eps-grid-item-lg-11 {
    flex-grow: 0;
    max-width: 91.66667%;
    flex-basis: 91.66667%; }
  .eps-grid-item-lg-12 {
    flex-grow: 0;
    max-width: 100%;
    flex-basis: 100%; } }

@media screen and (min-width: 1440px) {
  .eps-grid-item-xl-1 {
    flex-grow: 0;
    max-width: 8.33333%;
    flex-basis: 8.33333%; }
  .eps-grid-item-xl-2 {
    flex-grow: 0;
    max-width: 16.66667%;
    flex-basis: 16.66667%; }
  .eps-grid-item-xl-3 {
    flex-grow: 0;
    max-width: 25%;
    flex-basis: 25%; }
  .eps-grid-item-xl-4 {
    flex-grow: 0;
    max-width: 33.33333%;
    flex-basis: 33.33333%; }
  .eps-grid-item-xl-5 {
    flex-grow: 0;
    max-width: 41.66667%;
    flex-basis: 41.66667%; }
  .eps-grid-item-xl-6 {
    flex-grow: 0;
    max-width: 50%;
    flex-basis: 50%; }
  .eps-grid-item-xl-7 {
    flex-grow: 0;
    max-width: 58.33333%;
    flex-basis: 58.33333%; }
  .eps-grid-item-xl-8 {
    flex-grow: 0;
    max-width: 66.66667%;
    flex-basis: 66.66667%; }
  .eps-grid-item-xl-9 {
    flex-grow: 0;
    max-width: 75%;
    flex-basis: 75%; }
  .eps-grid-item-xl-10 {
    flex-grow: 0;
    max-width: 83.33333%;
    flex-basis: 83.33333%; }
  .eps-grid-item-xl-11 {
    flex-grow: 0;
    max-width: 91.66667%;
    flex-basis: 91.66667%; }
  .eps-grid-item-xl-12 {
    flex-grow: 0;
    max-width: 100%;
    flex-basis: 100%; } }

@media screen and (min-width: 1600px) {
  .eps-grid-item-xxl-1 {
    flex-grow: 0;
    max-width: 8.33333%;
    flex-basis: 8.33333%; }
  .eps-grid-item-xxl-2 {
    flex-grow: 0;
    max-width: 16.66667%;
    flex-basis: 16.66667%; }
  .eps-grid-item-xxl-3 {
    flex-grow: 0;
    max-width: 25%;
    flex-basis: 25%; }
  .eps-grid-item-xxl-4 {
    flex-grow: 0;
    max-width: 33.33333%;
    flex-basis: 33.33333%; }
  .eps-grid-item-xxl-5 {
    flex-grow: 0;
    max-width: 41.66667%;
    flex-basis: 41.66667%; }
  .eps-grid-item-xxl-6 {
    flex-grow: 0;
    max-width: 50%;
    flex-basis: 50%; }
  .eps-grid-item-xxl-7 {
    flex-grow: 0;
    max-width: 58.33333%;
    flex-basis: 58.33333%; }
  .eps-grid-item-xxl-8 {
    flex-grow: 0;
    max-width: 66.66667%;
    flex-basis: 66.66667%; }
  .eps-grid-item-xxl-9 {
    flex-grow: 0;
    max-width: 75%;
    flex-basis: 75%; }
  .eps-grid-item-xxl-10 {
    flex-grow: 0;
    max-width: 83.33333%;
    flex-basis: 83.33333%; }
  .eps-grid-item-xxl-11 {
    flex-grow: 0;
    max-width: 91.66667%;
    flex-basis: 91.66667%; }
  .eps-grid-item-xxl-12 {
    flex-grow: 0;
    max-width: 100%;
    flex-basis: 100%; } }

:root {
  --eps-modal-background-color: #fff;
  --eps-modal-header-background-color: #58d0f5; }

.eps-theme-dark {
  --eps-modal-background-color: #34383c;
  --eps-modal-header-background-color: #58d0f5; }

/** ----------------------------------------------------------------
	EPS Modal
---------------------------------------------------------------- */
.eps-modal {
  max-width: 43.75rem;
  background: var(--eps-modal-background-color);
  border-radius: 0.1875rem;
  animation: fade-in 0.4s ease-in both; }
  .eps-modal__overlay {
    background: rgba(0, 0, 0, 0.5);
    position: fixed;
    display: flex;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    align-items: center;
    justify-content: center;
    z-index: 1030; }
  .eps-modal__header {
    font-size: 0.875rem;
    background: var(--eps-modal-header-background-color);
    height: 2.75rem;
    padding: 0.625rem 1rem;
    border-radius: 0.1875rem; }
    .eps-modal__header,
    .eps-modal__header .title {
      color: #fff; }
  .eps-modal__icon {
    margin-inline-end: 0.625rem; }
  .eps-modal__body {
    padding: 1.875rem; }
  .eps-modal__tip, .eps-modal .eps-tip {
    padding-inline-start: 0.75rem;
    border-inline-start: 3px solid #58d0f5; }
    .eps-modal__tip:not(:last-child), .eps-modal .eps-tip:not(:last-child) {
      margin-bottom: 1.875rem; }
    .eps-modal__tip:not(:first-child), .eps-modal .eps-tip:not(:first-child) {
      margin-top: 1.875rem; }
  .eps-modal__section:not(:first-child) {
    margin-top: 1.875rem; }
  .eps-modal__close-wrapper {
    padding-inline-start: 1rem;
    border-inline-start: solid 1px #fff; }

.eps-button {
  display: inline-flex;
  --button-line-height: 16px;
  --button-padding-y: 0.5em;
  --button-padding-x: 1.5em;
  --button-primary-background-color: #39b54a;
  --button-primary-hover-background-color: #33a242;
  --button-primary-active-background-color: #35a945;
  --button-primary-color: #fff;
  --button-secondary-background-color: #a4afb7;
  --button-secondary-hover-background-color: #96a2ac;
  --button-secondary-active-background-color: #9ba7b0;
  --button-secondary-color: #fff;
  --button-danger-background-color: #b01b1b;
  --button-danger-hover-background-color: #9a1818;
  --button-danger-active-background-color: #a31919;
  --button-danger-color: #fff;
  --button-cta-background-color: #93003F;
  --button-cta-hover-background-color: #7a0034;
  --button-cta-active-background-color: #840038;
  --button-cta-color: #fff;
  --button-link-background-color: #58d0f5;
  --button-link-hover-background-color: #40c9f4;
  --button-link-active-background-color: #4accf4;
  --button-link-color: #fff;
  --button-disabled-background-color: #c2cbd2;
  --button-disabled-hover-background-color: #b3bec7;
  --button-disabled-active-background-color: #b9c3cc;
  --button-disabled-color: #fff;
  color: var(--button-background-color, currentColor);
  font-size: var(--button-font-size, inherit);
  font-weight: 500;
  line-height: var(--button-line-height);
  cursor: pointer; }
  .eps-button:active {
    --button-background-color: var(--button-active-background-color, transparent); }
  .eps-button:hover {
    --button-background-color: var(--button-hover-background-color); }
  .eps-theme-dark .eps-button {
    --button-primary-background-color: #39b54a;
    --button-primary-color: #fff;
    --button-primary-hover-background-color: #33a242;
    --button-primary-active-background-color: #35a945;
    --button-secondary-background-color: #b4b5b7;
    --button-secondary-color: #fff;
    --button-secondary-hover-background-color: #a7a8ab;
    --button-secondary-active-background-color: #acadb0;
    --button-cta-background-color: #93003F;
    --button-cta-hover-background-color: #7a0034;
    --button-cta-active-background-color: #840038;
    --button-cta-color: #fff;
    --button-link-background-color: #58d0f5;
    --button-link-hover-background-color: #40c9f4;
    --button-link-active-background-color: #4accf4;
    --button-link-color: #fff;
    --button-disabled-background-color: #64666a;
    --button-disabled-hover-background-color: #58595d;
    --button-disabled-active-background-color: #5d5e62;
    --button-disabled-color: #fff; }
  .eps-button--contained {
    color: var(--button-color);
    padding: var(--button-padding-y) var(--button-padding-x);
    background-color: var(--button-background-color, transparent);
    border: 1px solid var(--button-background-color); }
    .eps-button--contained:hover {
      color: var(--button-color); }
  .eps-button--outlined {
    display: block;
    padding: var(--button-padding-y) var(--button-padding-x);
    border: 1px solid var(--button-background-color); }
  .eps-button--contained, .eps-button--outlined {
    border-radius: 0.1875rem; }
  .eps-button--underlined {
    text-decoration: underline; }
  .eps-button--sm {
    --button-font-size: 0.75rem;
    --button-line-height: 14px; }
  .eps-button--lg {
    --button-font-size: 0.9375rem;
    --button-line-height: 18px; }
  .eps-button--primary {
    --button-color: var(--button-primary-color);
    --button-background-color: var(--button-primary-background-color);
    --button-hover-background-color: var(--button-primary-hover-background-color);
    --button-active-background-color: var(--button-primary-active-background-color); }
  .eps-button--secondary {
    --button-color: var(--buton-secondary-color);
    --button-background-color: var(--button-secondary-background-color);
    --button-hover-background-color: var(--button-secondary-hover-background-color);
    --button-active-background-color: var(--button-secondary-active-background-color); }
  .eps-button--danger {
    --button-color: var(--buton-danger-color);
    --button-background-color: var(--button-danger-background-color);
    --button-hover-background-color: var(--button-danger-hover-background-color);
    --button-active-background-color: var(--button-danger-active-background-color); }
  .eps-button--cta {
    --button-color: var(--button-cta-color);
    --button-background-color: var(--button-cta-background-color);
    --button-hover-background-color: var(--button-cta-hover-background-color);
    --button-active-background-color: var(--button-cta-active-background-color); }
  .eps-button--link {
    --button-color: var(--button-link-color);
    --button-background-color: var(--button-link-background-color);
    --button-hover-background-color: var(--button-link-hover-background-color);
    --button-active-background-color: var(--button-link-active-background-color); }
  .eps-button--disabled, .eps-button[disabled] {
    --button-color: var(--button-disabled-color);
    --button-background-color: var(--button-disabled-background-color);
    --button-hover-background-color: var(--button-disabled-hover-background-color);
    --button-active-background-color: var(--button-disabled-active-background-color);
    cursor: default; }

:root {
  --e-site-editor-conditions-row-controls-background: #fff;
  --e-site-editor-input-wrapper-border-color: #f1f3f5;
  --e-site-editor-input-wrapper-select-color: #556068;
  --e-site-editor-add-button-background-color: #a4afb7;
  --e-site-editor-add-button-color-hover-background-color: #6d7882;
  --e-site-editor-input-wrapper-condition-include-background-color:
	#a4afb7;
  --e-site-editor-input-wrapper-condition-exclude-background-color:
	#c2cbd2;
  --e-site-editor-input-select2-search-field-color: #495157
; }

.eps-theme-dark {
  --select2-selection-background-color: tints(600);
  --e-site-editor-conditions-row-controls-background: #404349;
  --e-site-editor-input-wrapper-border-color: #404349;
  --e-site-editor-input-wrapper-select-color: #b4b5b7;
  --e-site-editor-add-button-background-color: #4c4f56;
  --e-site-editor-add-button-color-hover-background-color: #404349;
  --e-site-editor-input-wrapper-condition-include-background-color:
			#404349;
  --e-site-editor-input-wrapper-condition-exclude-background-color:
			#404349;
  --e-site-editor-input-select2-search-field-color: #fff

; }

.e-site-editor-conditions__header {
  text-align: center; }

.e-site-editor-conditions__header-image {
  display: block;
  margin: 0 auto 2.75rem;
  width: 4.375rem; }

.e-site-editor-conditions__rows {
  margin: 2.75rem auto;
  max-width: 43.75rem; }

.e-site-editor-conditions__row {
  display: flex;
  flex-grow: 1;
  margin-top: 0.75rem; }

.e-site-editor-conditions__remove-condition {
  color: #c2cbd2;
  font-size: 1.125rem;
  display: flex;
  align-items: center;
  justify-content: center; }

.e-site-editor-conditions__row-controls {
  overflow: hidden;
  margin-left: 0.625rem;
  background-color: var(--e-site-editor-conditions-row-controls-background);
  display: flex;
  width: 100%;
  box-shadow: 0 3px 6px var(--color-box-shadow-color);
  border-radius: 0.1875rem; }
  .e-site-editor-conditions__row-controls--error {
    border: 1px solid #b01b1b; }

.e-site-editor-conditions__conflict {
  text-align: center;
  margin-top: 0.3125rem;
  color: #b01b1b; }

.e-site-editor-conditions__row-controls-inner {
  width: 100%;
  display: flex; }
  .e-site-editor-conditions__row-controls-inner div {
    flex: 1; }

.e-site-editor-conditions__add-button-container {
  text-align: center; }

.e-site-editor-conditions__add-button {
  margin-top: 2.75rem;
  background-color: var(--e-site-editor-add-button-background-color);
  color: #fff;
  text-transform: uppercase; }
  .e-site-editor-conditions__add-button:hover {
    background-color: var(--e-site-editor-add-button-color-hover-background-color);
    color: #fff; }

.e-site-editor-conditions__footer {
  display: flex;
  justify-content: flex-end;
  position: absolute;
  bottom: 0;
  right: 0;
  left: 0;
  padding: 0.5rem;
  border-top: 1px solid var(--hr-color); }

.e-site-editor-conditions__input-wrapper {
  position: relative;
  border-right: 1px solid;
  border-color: var(--e-site-editor-input-wrapper-border-color); }
  .e-site-editor-conditions__input-wrapper:first-child {
    border: none; }
  .e-site-editor-conditions__input-wrapper select {
    appearance: none;
    -webkit-appearance: none;
    font-size: 0.75rem;
    height: 2.5rem;
    border-width: 0;
    padding: 0 0.625rem;
    width: 100%;
    position: relative;
    color: var(--e-site-editor-input-wrapper-select-color);
    outline: none;
    background: transparent; }
  .e-site-editor-conditions__input-wrapper:after {
    font-family: eicons;
    content: '\e8ad';
    font-size: 0.75rem;
    pointer-events: none;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    left: 0.625rem; }
  .e-site-editor-conditions__input-wrapper .select2-container--default .select2-selection--single {
    border: none;
    line-height: 2.5rem; }
  .e-site-editor-conditions__input-wrapper .select2-container--default .select2-selection--single .select2-selection__rendered {
    line-height: 2.5rem;
    font-size: 0.75rem; }
  .e-site-editor-conditions__input-wrapper .select2-selection {
    outline: none;
    background: transparent;
    height: 2.5rem; }
  .e-site-editor-conditions__input-wrapper .select2-selection__arrow {
    display: none; }

.e-site-editor-conditions__input-wrapper--condition-type {
  position: relative; }
  .e-site-editor-conditions__input-wrapper--condition-type:before {
    font-family: eicons;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    right: 0.75rem;
    font-size: 0.9375rem;
    color: #fff;
    pointer-events: none;
    z-index: 1000; }
  .e-site-editor-conditions__input-wrapper--condition-type:after {
    color: #fff; }
  .e-site-editor-conditions__input-wrapper--condition-type select {
    text-transform: uppercase;
    padding-right: 2.125rem;
    width: 7.5rem;
    font-size: 0.75rem;
    color: #fff; }
  .e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type="include"]:before {
    content: '\e8cc'; }
  .e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type="include"] select {
    background-color: var(--e-site-editor-input-wrapper-condition-include-background-color); }
  .e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type="exclude"]:before {
    content: '\e8cd'; }
  .e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type="exclude"] select {
    background-color: var(--e-site-editor-input-wrapper-condition-exclude-background-color); }

.select2-search__field {
  background-color: transparent;
  color: var(--e-site-editor-input-select2-search-field-color); }

.misc-pub-visibility {
  display: none; }

.eps-modal__overlay {
  background: rgba(0, 0, 0, 0.8);
  z-index: 9999;
  /* After '#adminmenuwrap' */ }

.select2-container {
  z-index: 9999;
  /* After 'eps-modal__overlay'. */ }

.post-conditions .spinner {
  margin: 0 10px;
  float: none;
  visibility: visible; }

.post-conditions .eps-button--underlined {
  /* No variable was used since this color comes from wordpress */
  color: #0073aa; }

.post-conditions .eps-modal {
  position: relative;
  background: #f1f3f5;
  max-width: 1200px;
  max-height: 800px;
  width: 90vw;
  height: 90vh;
  margin: auto; }
  .post-conditions .eps-modal .eps-modal__body {
    display: flex;
    flex-direction: column;
    flex-grow: 1; }
  .post-conditions .eps-modal .eps-h1 {
    font-size: 30px;
    font-weight: 300; }
  .post-conditions .eps-modal .eps-text {
    font-size: 18px;
    line-height: 150%;
    margin: 1em 0;
    color: #a4afb7; }
  .post-conditions .eps-modal .eps-grid-container {
    width: auto; }
  .post-conditions .eps-modal__header {
    background: #ffffff;
    color: #556068;
    box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);
    padding: 2px 15px; }
    .post-conditions .eps-modal__header .eps-app__logo {
      width: 1.75rem;
      height: 1.75rem;
      line-height: 1.75rem;
      text-align: center;
      font-size: calc(0.4 * 1.75rem);
      border-radius: 50%;
      color: #ffffff;
      background-color: #93003F; }
    .post-conditions .eps-modal__header .eps-text {
      /* Didn't find better solution */
      position: relative;
      top: 2px;
      font-size: 0.9375rem;
      font-weight: 700;
      text-transform: uppercase;
      color: #6d7882; }
    .post-conditions .eps-modal__header .eps-button {
      font-size: 18px; }
  .post-conditions .eps-modal .e-site-editor-conditions__header {
    padding-top: 5vh; }
  .post-conditions .eps-modal .e-site-editor-conditions__rows {
    overflow-y: auto;
    max-height: 27vh;
    margin: 0 auto; }
    .post-conditions .eps-modal .e-site-editor-conditions__rows:empty {
      margin-bottom: 30px; }
    .post-conditions .eps-modal .e-site-editor-conditions__rows:not(:empty) {
      margin-bottom: 20px; }
    .post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row {
      margin-top: 15px;
      padding: 0 14px; }
      .post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls {
        border-radius: 0; }
        .post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls select {
          text-transform: none; }
          .post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls select:focus {
            box-shadow: none;
            border: none;
            color: inherit; }
          .post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls select:hover {
            color: inherit; }
        .post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls .e-site-editor-conditions__input-wrapper--condition-type select:hover, .post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls .e-site-editor-conditions__input-wrapper--condition-type select:focus {
          color: #ffffff; }
  .post-conditions .eps-modal .e-site-editor-conditions__add-button {
    margin-top: 0; }
  .post-conditions .eps-modal .e-site-editor-conditions__footer {
    z-index: 1000;
    border-top: 1px solid #d5dadf; }

#elementor-custom-code.postbox {
  border: 0; }

#elementor-custom-code .postbox-header {
  display: none; }

#elementor-custom-code .inside {
  padding: 0; }
  #elementor-custom-code .inside .elementor-custom-code-meta-box {
    margin: 0; }
    #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel {
      border: 1px solid #eceeef;
      border-bottom: 1px solid #ccd0d4;
      background: #ffffff; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-custom-code-panel-placement {
        padding: 5px 40px;
        margin: 10px 0;
        flex-wrap: wrap;
        gap: 10px; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-custom-code-options-placement {
        display: none; }
        #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-custom-code-options-placement.show {
          display: flex; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel div {
        display: flex; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field i {
        color: #c2cbd2;
        font-size: 15px; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field select {
        height: 20px;
        margin-top: 7px; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field select#location {
        direction: ltr; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field.priority {
        margin-right: auto; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field.location {
        margin-inline-end: 10px; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-label {
        font-weight: 500;
        font-size: 14px;
        line-height: 16px;
        color: #6d7882; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-label:nth-child(even) {
        margin-left: 20px; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-label:nth-child(odd) {
        margin-left: 5px; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-checkboxes {
        padding-top: 18px; }
        #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-checkboxes .label {
          position: relative;
          top: -5px; }
  #elementor-custom-code .inside .elementor-custom-code-codemirror-holder {
    border: 1px solid #eceeef;
    background: #f7f7f7;
    padding: 40px; }
    #elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-field-label {
      margin: 0; }
    #elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror {
      border: 1px solid #ccd0d4;
      resize: vertical;
      overflow: auto;
      max-width: 100%; }
      #elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror .elementor-field-textarea,
      #elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror .CodeMirror.CodeMirror-wrap,
      #elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror .CodeMirror-scroll {
        height: 100%; }
      #elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror .CodeMirror-sizer {
        min-height: 300px !important;
        border-right: 0; }

.post-type-elementor_snippet #minor-publishing-actions,
.post-type-elementor_snippet #save-action {
  display: none; }

.e--ua-safari #elementor-custom-code .elementor-custom-code-codemirror {
  background-color: #ffffff;
  display: flex; }
  .e--ua-safari #elementor-custom-code .elementor-custom-code-codemirror .elementor-field-textarea {
    width: calc(100% - 8px); }
  .e--ua-safari #elementor-custom-code .elementor-custom-code-codemirror .CodeMirror-sizer {
    box-sizing: border-box; }

@media (max-width: 850px), (max-height: 825px) {
  .post-conditions .eps-modal {
    width: 100vw;
    height: 90vh; }
    .post-conditions .eps-modal .e-site-editor-conditions__header {
      padding-top: 0; }
    .post-conditions .eps-modal .e-site-editor-conditions__rows {
      max-height: 14vh; }
    .post-conditions .eps-modal .e-site-editor-conditions__header-image {
      margin: 0 auto; } }

@media (max-width: 590px), (max-height: 666px) {
  .post-conditions .eps-modal .eps-modal__body {
    overflow: auto;
    height: calc(100vh - 200px); }
    .post-conditions .eps-modal .eps-modal__body .e-site-editor-conditions__footer {
      background: #f1f3f5; } }

/*# sourceMappingURL=custom-code-rtl.css.map */assets/css/modules/code-highlight.min.css000064400000046332150755004320014472 0ustar00.prismjs-dark code[class*=language-],.prismjs-dark pre[class*=language-]{color:#fff;background:0 0;text-shadow:0 -.1em .2em #000;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.prismjs-dark pre[class*=language-]{background:#4c3f33;padding:1em;margin:0;overflow:auto;border:.3em solid #7a6651;border-radius:.5em;-webkit-box-shadow:1px 1px .5em #000 inset;box-shadow:inset 1px 1px .5em #000}.prismjs-dark :not(pre)>code[class*=language-]{padding:.15em .2em .05em;border-radius:.3em;border:.13em solid #7a6651;-webkit-box-shadow:1px 1px .3em -.1em #000 inset;box-shadow:inset 1px 1px .3em -.1em #000;white-space:normal}.prismjs-dark .token.cdata,.prismjs-dark .token.doctype,.prismjs-dark .token.prolog,.token.comment{color:#997f66}.prismjs-dark .token.namespace,.prismjs-dark .token.punctuation{opacity:.7}.prismjs-dark .token.boolean,.prismjs-dark .token.constant,.prismjs-dark .token.number,.prismjs-dark .token.property,.prismjs-dark .token.symbol,.prismjs-dark .token.tag{color:#d1939e}.prismjs-dark .token.attr-name,.prismjs-dark .token.builtin,.prismjs-dark .token.char,.prismjs-dark .token.inserted,.prismjs-dark .token.selector,.prismjs-dark .token.string{color:#bce051}.prismjs-dark .language-css .token.string,.prismjs-dark .style .token.string,.prismjs-dark .token.entity,.prismjs-dark .token.operator,.prismjs-dark .token.url,.token.variable{color:#f4b73d}.prismjs-dark .token.atrule,.prismjs-dark .token.attr-value,.prismjs-dark .token.keyword{color:#d1939e}.prismjs-dark .token.important,.prismjs-dark .token.regex{color:#e90}.prismjs-dark .token.bold,.prismjs-dark .token.important{font-weight:700}.prismjs-dark .token.italic{font-style:italic}.prismjs-dark .token.entity{cursor:help}.prismjs-dark .token.deleted{color:red}.prismjs-default code[class*=language-],.prismjs-default pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.prismjs-default code[class*=language-]::-moz-selection,.prismjs-default code[class*=language-] ::-moz-selection,.prismjs-default pre[class*=language-]::-moz-selection,.prismjs-default pre[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}.prismjs-default code[class*=language-]::selection,.prismjs-default code[class*=language-] ::selection,.prismjs-default pre[class*=language-]::selection,.prismjs-default pre[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{.prismjs-default code[class*=language-],.prismjs-default pre[class*=language-]{text-shadow:none}}.prismjs-default pre[class*=language-]{padding:1em;margin:0;overflow:auto}.prismjs-default :not(pre)>code[class*=language-],.prismjs-default pre[class*=language-]{background:#f5f2f0}.prismjs-default :not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.prismjs-default .token.cdata,.prismjs-default .token.comment,.prismjs-default .token.doctype,.prismjs-default .token.prolog{color:#708090}.prismjs-default .token.punctuation{color:#999}.prismjs-default .token.namespace{opacity:.7}.prismjs-default .token.boolean,.prismjs-default .token.constant,.prismjs-default .token.deleted,.prismjs-default .token.number,.prismjs-default .token.property,.prismjs-default .token.symbol,.prismjs-default .token.tag{color:#905}.prismjs-default .token.attr-name,.prismjs-default .token.builtin,.prismjs-default .token.char,.prismjs-default .token.inserted,.prismjs-default .token.selector,.prismjs-default .token.string{color:#690}.prismjs-default .language-css .token.string,.prismjs-default .style .token.string,.prismjs-default .token.entity,.prismjs-default .token.operator,.prismjs-default .token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.prismjs-default .token.atrule,.prismjs-default .token.attr-value,.prismjs-default .token.keyword{color:#07a}.prismjs-default .token.class-name,.prismjs-default .token.function{color:#dd4a68}.prismjs-default .token.important,.prismjs-default .token.regex,.prismjs-default .token.variable{color:#e90}.prismjs-default .token.bold,.prismjs-default .token.important{font-weight:700}.prismjs-default .token.italic{font-style:italic}.prismjs-default .token.entity{cursor:help}.prismjs-okaidia code[class*=language-],.prismjs-okaidia pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.prismjs-okaidia pre[class*=language-]{padding:1em;margin:0;overflow:auto;border-radius:.3em}.prismjs-okaidia :not(pre)>code[class*=language-],.prismjs-okaidia pre[class*=language-]{background:#272822}.prismjs-okaidia :not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.prismjs-okaidia .token.cdata,.prismjs-okaidia .token.comment,.prismjs-okaidia .token.doctype,.prismjs-okaidia .token.prolog{color:#8292a2}.prismjs-okaidia .token.punctuation{color:#f8f8f2}.prismjs-okaidia .token.namespace{opacity:.7}.prismjs-okaidia .token.constant,.prismjs-okaidia .token.deleted,.prismjs-okaidia .token.property,.prismjs-okaidia .token.symbol,.prismjs-okaidia .token.tag{color:#f92672}.prismjs-okaidia .token.boolean,.prismjs-okaidia .token.number{color:#ae81ff}.prismjs-okaidia .token.attr-name,.prismjs-okaidia .token.builtin,.prismjs-okaidia .token.char,.prismjs-okaidia .token.inserted,.prismjs-okaidia .token.selector,.prismjs-okaidia .token.string{color:#a6e22e}.prismjs-okaidia .language-css .token.string,.prismjs-okaidia .style .token.string,.prismjs-okaidia .token.entity,.prismjs-okaidia .token.operator,.prismjs-okaidia .token.url,.prismjs-okaidia .token.variable{color:#f8f8f2}.prismjs-okaidia .token.atrule,.prismjs-okaidia .token.attr-value,.prismjs-okaidia .token.class-name,.prismjs-okaidia .token.function{color:#e6db74}.prismjs-okaidia .token.keyword{color:#66d9ef}.prismjs-okaidia .token.important,.prismjs-okaidia .token.regex{color:#fd971f}.prismjs-okaidia .token.bold,.prismjs-okaidia .token.important{font-weight:700}.prismjs-okaidia .token.italic{font-style:italic}.prismjs-okaidia .token.entity{cursor:help}.prismjs-solarizedlight code[class*=language-],.prismjs-solarizedlight pre[class*=language-]{color:#657b83;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.prismjs-solarizedlight code[class*=language-]::-moz-selection,.prismjs-solarizedlight code[class*=language-] ::-moz-selection,.prismjs-solarizedlight pre[class*=language-]::-moz-selection,.prismjs-solarizedlight pre[class*=language-] ::-moz-selection{background:#073642}.prismjs-solarizedlight code[class*=language-]::selection,.prismjs-solarizedlight code[class*=language-] ::selection,.prismjs-solarizedlight pre[class*=language-]::selection,.prismjs-solarizedlight pre[class*=language-] ::selection{background:#073642}.prismjs-solarizedlight pre[class*=language-]{padding:1em;margin:0;overflow:auto;border-radius:.3em}.prismjs-solarizedlight :not(pre)>code[class*=language-],.prismjs-solarizedlight pre[class*=language-]{background-color:#fdf6e3}.prismjs-solarizedlight :not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em}.prismjs-solarizedlight .token.cdata,.prismjs-solarizedlight .token.comment,.prismjs-solarizedlight .token.doctype,.prismjs-solarizedlight .token.prolog{color:#93a1a1}.prismjs-solarizedlight .token.punctuation{color:#586e75}.prismjs-solarizedlight .token.namespace{opacity:.7}.prismjs-solarizedlight .token.boolean,.prismjs-solarizedlight .token.constant,.prismjs-solarizedlight .token.deleted,.prismjs-solarizedlight .token.number,.prismjs-solarizedlight .token.property,.prismjs-solarizedlight .token.symbol,.token.tag{color:#268bd2}.prismjs-solarizedlight .token.attr-name,.prismjs-solarizedlight .token.builtin,.prismjs-solarizedlight .token.char,.prismjs-solarizedlight .token.inserted,.prismjs-solarizedlight .token.selector,.prismjs-solarizedlight .token.string,.prismjs-solarizedlight .token.url{color:#2aa198}.prismjs-solarizedlight .token.entity{color:#657b83;background:#eee8d5}.prismjs-solarizedlight .token.atrule,.prismjs-solarizedlight .token.attr-value,.prismjs-solarizedlight .token.keyword{color:#859900}.prismjs-solarizedlight .token.class-name,.prismjs-solarizedlight .token.function{color:#b58900}.prismjs-solarizedlight .token.important,.prismjs-solarizedlight .token.regex,.prismjs-solarizedlight .token.variable{color:#cb4b16}.prismjs-solarizedlight .token.bold,.prismjs-solarizedlight .token.important{font-weight:700}.prismjs-solarizedlight .token.italic{font-style:italic}.prismjs-solarizedlight .token.entity{cursor:help}.prismjs-tomorrow code[class*=language-],.prismjs-tomorrow pre[class*=language-]{color:#ccc;background:0 0;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.prismjs-tomorrow pre[class*=language-]{padding:1em;margin:0;overflow:auto}.prismjs-tomorrow :not(pre)>code[class*=language-],.prismjs-tomorrow pre[class*=language-]{background:#2d2d2d}.prismjs-tomorrow :not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.prismjs-tomorrow .token.block-comment,.prismjs-tomorrow .token.cdata,.prismjs-tomorrow .token.comment,.prismjs-tomorrow .token.doctype,.prismjs-tomorrow .token.prolog{color:#999}.prismjs-tomorrow .token.punctuation{color:#ccc}.prismjs-tomorrow .token.attr-name,.prismjs-tomorrow .token.deleted,.prismjs-tomorrow .token.namespace,.prismjs-tomorrow .token.tag{color:#e2777a}.prismjs-tomorrow .token.function-name{color:#6196cc}.prismjs-tomorrow .token.boolean,.prismjs-tomorrow .token.function,.prismjs-tomorrow .token.number{color:#f08d49}.prismjs-tomorrow .token.class-name,.prismjs-tomorrow .token.constant,.prismjs-tomorrow .token.property,.prismjs-tomorrow .token.symbol{color:#f8c555}.prismjs-tomorrow .token.atrule,.prismjs-tomorrow .token.builtin,.prismjs-tomorrow .token.important,.prismjs-tomorrow .token.keyword,.prismjs-tomorrow .token.selector{color:#cc99cd}.prismjs-tomorrow .token.attr-value,.prismjs-tomorrow .token.char,.prismjs-tomorrow .token.regex,.prismjs-tomorrow .token.string,.prismjs-tomorrow .token.variable{color:#7ec699}.prismjs-tomorrow .token.entity,.prismjs-tomorrow .token.operator,.prismjs-tomorrow .token.url{color:#67cdcc}.prismjs-tomorrow .token.bold,.prismjs-tomorrow .token.important{font-weight:700}.prismjs-tomorrow .token.italic{font-style:italic}.prismjs-tomorrow .token.entity{cursor:help}.prismjs-tomorrow .token.inserted{color:green}.prismjs-twilight code[class*=language-],.prismjs-twilight pre[class*=language-]{color:#fff;background:0 0;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;text-shadow:0 -.1em .2em #000;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.prismjs-twilight :not(pre)>code[class*=language-],.prismjs-twilight pre[class*=language-]{background:#141414}.prismjs-twilight pre[class*=language-]{border-radius:.5em;border:.3em solid #545454;-webkit-box-shadow:1px 1px .5em #000 inset;box-shadow:inset 1px 1px .5em #000;margin:0;overflow:auto;padding:1em}.prismjs-twilight pre[class*=language-]::-moz-selection{background:#27292a}.prismjs-twilight pre[class*=language-]::selection{background:#27292a}.prismjs-twilight code[class*=language-]::-moz-selection,.prismjs-twilight code[class*=language-] ::-moz-selection,.prismjs-twilight pre[class*=language-]::-moz-selection,.prismjs-twilight pre[class*=language-] ::-moz-selection{text-shadow:none;background:hsla(0,0%,92.9%,.15)}.prismjs-twilight code[class*=language-]::selection,.prismjs-twilight code[class*=language-] ::selection,.prismjs-twilight pre[class*=language-]::selection,.prismjs-twilight pre[class*=language-] ::selection{text-shadow:none;background:hsla(0,0%,92.9%,.15)}.prismjs-twilight :not(pre)>code[class*=language-]{border-radius:.3em;border:.13em solid #545454;-webkit-box-shadow:1px 1px .3em -.1em #000 inset;box-shadow:inset 1px 1px .3em -.1em #000;padding:.15em .2em .05em;white-space:normal}.prismjs-twilight .token.cdata,.prismjs-twilight .token.comment,.prismjs-twilight .token.doctype,.prismjs-twilight .token.prolog{color:#777}.prismjs-twilight .token.namespace,.prismjs-twilight .token.punctuation{opacity:.7}.prismjs-twilight .token.boolean,.prismjs-twilight .token.deleted,.prismjs-twilight .token.number,.prismjs-twilight .token.tag{color:#ce6849}.prismjs-twilight .token.builtin,.prismjs-twilight .token.constant,.prismjs-twilight .token.keyword,.prismjs-twilight .token.property,.prismjs-twilight .token.selector,.prismjs-twilight .token.symbol{color:#f9ed99}.prismjs-twilight .language-css .token.string,.prismjs-twilight .style .token.string,.prismjs-twilight .token.attr-name,.prismjs-twilight .token.attr-value,.prismjs-twilight .token.char,.prismjs-twilight .token.entity,.prismjs-twilight .token.inserted,.prismjs-twilight .token.operator,.prismjs-twilight .token.string,.prismjs-twilight .token.url,.prismjs-twilight .token.variable{color:#909e6a}.prismjs-twilight .token.atrule{color:#7385a5}.prismjs-twilight .token.important,.prismjs-twilight .token.regex{color:#e8c062}.prismjs-twilight .token.bold,.prismjs-twilight .token.important{font-weight:700}.prismjs-twilight .token.italic{font-style:italic}.prismjs-twilight .token.entity{cursor:help}.prismjs-twilight pre[data-line]{padding:1em;position:relative}.prismjs-twilight .language-markup .token.attr-name,.prismjs-twilight .language-markup .token.punctuation,.prismjs-twilight .language-markup .token.tag{color:#ac885c}.prismjs-twilight .token{position:relative;z-index:1}.prismjs-twilight .line-highlight{background:rgba(84,84,84,.25);background:-webkit-gradient(linear,left top,right top,color-stop(70%,rgba(84,84,84,.1)),to(rgba(84,84,84,0)));background:-webkit-linear-gradient(left,rgba(84,84,84,.1) 70%,rgba(84,84,84,0));background:-o-linear-gradient(left,rgba(84,84,84,.1) 70%,rgba(84,84,84,0));background:linear-gradient(90deg,rgba(84,84,84,.1) 70%,rgba(84,84,84,0));border-bottom:1px dashed #545454;border-top:1px dashed #545454;left:0;line-height:inherit;margin-top:.75em;padding:inherit 0;pointer-events:none;position:absolute;right:0;white-space:pre;z-index:0}.prismjs-twilight .line-highlight:before,.prismjs-twilight .line-highlight[data-end]:after{background-color:#8693a6;border-radius:999px;-webkit-box-shadow:0 1px #fff;box-shadow:0 1px #fff;color:#f4f1ef;content:attr(data-start);font:700 65%/1.5 sans-serif;left:.6em;min-width:1em;padding:0 .5em;position:absolute;text-align:center;text-shadow:none;top:.4em;vertical-align:.3em}.prismjs-twilight .line-highlight[data-end]:after{bottom:.4em;content:attr(data-end);top:auto}.copy-to-clipboard div.code-toolbar{position:relative}.copy-to-clipboard div.code-toolbar>.toolbar{position:absolute;top:.3em;right:.2em;-webkit-transition:opacity .3s ease-in-out;-o-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out;opacity:0}.copy-to-clipboard div.code-toolbar:hover>.toolbar{opacity:1}.copy-to-clipboard div.code-toolbar:focus-within>.toolbar{opacity:1}.copy-to-clipboard div.code-toolbar>.toolbar .toolbar-item{display:inline-block}.copy-to-clipboard div.code-toolbar>.toolbar a{cursor:pointer}.copy-to-clipboard div.code-toolbar>.toolbar button{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.copy-to-clipboard div.code-toolbar>.toolbar a,.copy-to-clipboard div.code-toolbar>.toolbar button,.copy-to-clipboard div.code-toolbar>.toolbar span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:hsla(0,0%,87.8%,.2);-webkit-box-shadow:0 2px 0 0 rgba(0,0,0,.2);box-shadow:0 2px 0 0 rgba(0,0,0,.2);border-radius:.5em}.copy-to-clipboard div.code-toolbar>.toolbar a:focus,div.code-toolbar>.toolbar a:hover,div.code-toolbar>.toolbar button:focus,div.code-toolbar>.toolbar button:hover,div.code-toolbar>.toolbar span:focus,div.code-toolbar>.toolbar span:hover{color:inherit;text-decoration:none}:not(.copy-to-clipboard)>div.code-toolbar>.toolbar{display:none}.word-wrap code[class*=language-],.word-wrap pre[class*=language-]{white-space:pre-wrap!important}.elementor-widget-code-highlight pre{direction:ltr}.prismjs-twilight pre:not([data-line=""]):not(.line-numbers){padding:.8em 0 1em 2em}.prismjs-dark pre:not([data-line=""]):not(.line-numbers),.prismjs-default pre:not([data-line=""]):not(.line-numbers),.prismjs-okaidia pre:not([data-line=""]):not(.line-numbers),.prismjs-solarizedlight pre:not([data-line=""]):not(.line-numbers),.prismjs-tomorrow pre:not([data-line=""]):not(.line-numbers){padding:1em 0 1em 2em}pre[data-line]{position:relative;padding:1em 0 1em 3em}.line-highlight{position:absolute;left:0;right:0;padding:inherit 0;margin-top:1em;background:rgba(153,122,102,.08);background:-webkit-gradient(linear,left top,right top,color-stop(70%,rgba(153,122,102,.1)),to(rgba(153,122,102,0)));background:-webkit-linear-gradient(left,rgba(153,122,102,.1) 70%,rgba(153,122,102,0));background:-o-linear-gradient(left,rgba(153,122,102,.1) 70%,rgba(153,122,102,0));background:linear-gradient(90deg,rgba(153,122,102,.1) 70%,rgba(153,122,102,0));pointer-events:none;line-height:inherit;white-space:pre}@media print{.line-highlight{-webkit-print-color-adjust:exact;color-adjust:exact}}.line-highlight:before,.line-highlight[data-end]:after{content:attr(data-start);position:absolute;top:.4em;left:.6em;min-width:1em;padding:0 .5em;background-color:rgba(153,122,102,.4);color:#f4f1ef;font:700 65%/1.5 sans-serif;text-align:center;vertical-align:.3em;border-radius:999px;text-shadow:none;-webkit-box-shadow:0 1px #fff;box-shadow:0 1px #fff}.line-highlight[data-end]:after{content:attr(data-end);top:auto;bottom:.4em}.line-numbers .line-highlight:after,.line-numbers .line-highlight:before{content:none}pre[id].linkable-line-numbers span.line-numbers-rows{pointer-events:all}pre[id].linkable-line-numbers span.line-numbers-rows>span:before{cursor:pointer}pre[id].linkable-line-numbers span.line-numbers-rows>span:hover:before{background-color:hsla(0,0%,50.2%,.2)}pre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}assets/css/modules/custom-code.css000064400000141012150755004320013242 0ustar00@keyframes fade-in {
  0% {
    opacity: 0; }
  100% {
    opacity: 1; } }

.wrap.elementor-admin-page-license form.elementor-license-box {
  max-width: 600px;
  background: white;
  margin: 20px 0;
  padding: 20px 20px; }
  .wrap.elementor-admin-page-license form.elementor-license-box h3 {
    border-bottom: 1px solid #eee;
    padding: 20px;
    margin: -20px -20px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center; }
    .wrap.elementor-admin-page-license form.elementor-license-box h3 span {
      flex-grow: 1;
      padding-left: 5px; }
    .wrap.elementor-admin-page-license form.elementor-license-box h3 small {
      float: right;
      font-size: 13px;
      font-weight: normal; }
  .wrap.elementor-admin-page-license form.elementor-license-box label {
    display: block;
    font-size: 1.3em;
    font-weight: 600;
    margin: 1em 0; }
  .wrap.elementor-admin-page-license form.elementor-license-box .button {
    height: 30px;
    margin-left: 15px;
    margin-bottom: 0; }
  .wrap.elementor-admin-page-license form.elementor-license-box p.description {
    margin: 10px 0; }
  .wrap.elementor-admin-page-license form.elementor-license-box .e-row-stretch {
    display: flex;
    align-items: center;
    justify-content: space-between; }
  .wrap.elementor-admin-page-license form.elementor-license-box .e-row-divider-bottom {
    padding-bottom: 15px;
    border-bottom: 1px solid #eeeeee; }

.wrap.elementor-admin-page-license .elementor-box-action {
  display: flex;
  justify-content: flex-end;
  align-items: flex-end;
  margin-top: 30px; }
  .wrap.elementor-admin-page-license .elementor-box-action .elementor-manually-link {
    color: #72777c;
    margin-right: 15px; }
    .wrap.elementor-admin-page-license .elementor-box-action .elementor-manually-link:hover {
      color: inherit; }

.fixed .column-elementor_library_type,
.fixed .column-instances {
  width: 10%; }

.fixed .elementor-shortcode-input {
  min-width: 235px; }

@media (min-width: 768px) and (max-width: 1440px) {
  .fixed .column-shortcode {
    width: 25%; }
  .fixed .elementor-shortcode-input {
    min-width: 100%; } }

#available-widgets [class*="elementor-template"] .widget-title:before {
  content: "\e801";
  font-family: eicon;
  font-size: 17px; }

#elementor-widget-template-empty-templates {
  margin-top: 15px;
  text-align: center; }

.elementor-widget-template-empty-templates-title {
  padding: 25px 0 30px; }

.elementor-widget-template-empty-templates-icon {
  font-size: 96px;
  color: #d5dadf; }

.elementor-widget-template-empty-templates-footer {
  color: #a4afb7;
  font-size: 13px;
  font-style: italic;
  margin-bottom: 15px; }
  .elementor-widget-template-empty-templates-footer a {
    color: #a4afb7; }

.elementor-button-spinner.error:before {
  content: "\f335";
  color: #ff0000; }

span.font-variations-count {
  display: inline-block;
  vertical-align: top;
  margin: 1px 0 0 5px;
  padding: 0 5px;
  min-width: 7px;
  height: 17px;
  border-radius: 11px;
  background-color: #d4dffb;
  color: #4278b2;
  font-size: 9px;
  line-height: 17px;
  text-align: center;
  z-index: 26; }

.post-type-elementor_font div#elementor-font-custommetabox {
  background: none;
  border: 0; }
  .post-type-elementor_font div#elementor-font-custommetabox button.handlediv {
    display: none; }
  .post-type-elementor_font div#elementor-font-custommetabox #poststuff .inside {
    margin: 0;
    padding: 0; }
  .post-type-elementor_font div#elementor-font-custommetabox h2.hndle {
    padding: 0; }
  .post-type-elementor_font div#elementor-font-custommetabox .handle-actions {
    display: none; }

.post-type-elementor_font #tagsdiv-elementor_font_type,
.post-type-elementor_font #minor-publishing-actions,
.post-type-elementor_font #misc-publishing-actions {
  display: none; }

.elementor-metabox-content .repeater-block {
  background: #ffffff;
  color: #6d7882;
  padding: 20px;
  margin-bottom: 2px; }
  .elementor-metabox-content .repeater-block span.elementor-repeater-tool-btn.close-repeater-row {
    display: none; }
  .elementor-metabox-content .repeater-block.block-visible {
    padding-bottom: 0;
    margin-bottom: 0; }
    .elementor-metabox-content .repeater-block.block-visible span.elementor-repeater-tool-btn.toggle-repeater-row {
      display: none; }
    .elementor-metabox-content .repeater-block.block-visible span.elementor-repeater-tool-btn.close-repeater-row {
      display: inline-block; }
  .elementor-metabox-content .repeater-block:not(.block-visible) .close-repeater-row {
    display: none; }
  .elementor-metabox-content .repeater-block .repeater-title {
    cursor: pointer; }

.elementor-metabox-content .row-font-label {
  padding: 0;
  margin: 0;
  display: flex;
  text-transform: capitalize; }
  .elementor-metabox-content .row-font-label li {
    box-sizing: border-box;
    flex-grow: 1;
    width: 100%;
    margin: 0; }
    .elementor-metabox-content .row-font-label li span.label {
      font-weight: 500;
      padding-right: 10px; }
    .elementor-metabox-content .row-font-label li.row-font-weight, .elementor-metabox-content .row-font-label li.row-font-style {
      max-width: 180px; }
    .elementor-metabox-content .row-font-label li.row-font-actions {
      max-width: 200px;
      text-align: right; }

.elementor-metabox-content .repeater-content {
  margin: 0; }
  .elementor-metabox-content .repeater-content .repeater-content-top {
    display: flex;
    margin-bottom: 20px;
    line-height: 28px; }
    .elementor-metabox-content .repeater-content .repeater-content-top > div {
      box-sizing: border-box;
      flex-grow: 1; }
    .elementor-metabox-content .repeater-content .repeater-content-top p {
      margin: 0;
      display: inline-block; }
      .elementor-metabox-content .repeater-content .repeater-content-top p label {
        font-weight: 500;
        padding-right: 10px; }
    .elementor-metabox-content .repeater-content .repeater-content-top .elementor-field-select {
      max-width: 180px; }
    .elementor-metabox-content .repeater-content .repeater-content-top .elementor-field-toolbar {
      max-width: 200px;
      text-align: right; }
  .elementor-metabox-content .repeater-content .repeater-content-bottom {
    background-color: #f7f7f7;
    padding: 20px 40px;
    margin: 0 -20px; }
    .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field {
      display: flex;
      align-items: center;
      background-color: #ffffff;
      padding: 10px 20px;
      margin-bottom: 10px;
      box-shadow: 0 3px 5px rgba(0, 0, 0, 0.05); }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field:last-child {
        margin-bottom: 0; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field p,
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field input {
        box-sizing: border-box;
        flex-grow: 1;
        width: 100%;
        margin: 0; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field p.elementor-field-label {
        font-weight: 500;
        max-width: 120px; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input {
        padding: 5px 8px;
        margin: 0 15px;
        border-radius: 3px;
        font-size: 12px;
        width: 100%;
        background: none;
        box-shadow: none;
        color: #495157;
        border: 1px solid;
        outline: none; }
        .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input:not(:focus) {
          border-color: #d5dadf; }
        .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input:focus {
          border-color: #a4afb7; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-btn,
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn {
        max-width: 100px;
        font-size: 11px; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn {
        background-color: #eceeef;
        color: #a4afb7; }
        .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn:hover {
          background-color: #b01b1b;
          color: white; }

.elementor-metabox-content .elementor-button {
  background-color: #a4afb7;
  color: #fff;
  line-height: 1;
  text-transform: uppercase;
  height: auto;
  padding: 10px 20px;
  outline: none;
  border: none;
  transition-property: background, color, box-shadow, opacity;
  transition-duration: .3s; }
  .elementor-metabox-content .elementor-button:hover, .elementor-metabox-content .elementor-button:focus, .elementor-metabox-content .elementor-button:visited {
    color: #fff; }
  .elementor-metabox-content .elementor-button:focus, .elementor-metabox-content .elementor-button:visited {
    background-color: #a4afb7; }
  .elementor-metabox-content .elementor-button:hover {
    background-color: #6d7882;
    box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
    border: none; }
  .elementor-metabox-content .elementor-button:active {
    box-shadow: 0 5px 10px rgba(0, 0, 0, 0.19), 0 3px 3px rgba(0, 0, 0, 0.1); }
  .elementor-metabox-content .elementor-button:not([disabled]) {
    cursor: pointer; }
  .elementor-metabox-content .elementor-button.elementor-size-xs {
    font-size: 11px;
    padding: 10px 20px;
    border-radius: 2px; }
  .elementor-metabox-content .elementor-button.elementor-size-sm {
    font-size: 13px;
    padding: 12px 24px;
    border-radius: 3px; }
  .elementor-metabox-content .elementor-button.elementor-size-md {
    font-size: 14px;
    padding: 15px 30px;
    border-radius: 4px; }
  .elementor-metabox-content .elementor-button.elementor-size-lg {
    font-size: 15px;
    padding: 20px 40px;
    border-radius: 5px; }
  .elementor-metabox-content .elementor-button.elementor-size-xl {
    font-size: 18px;
    padding: 25px 50px;
    border-radius: 6px; }
  .elementor-metabox-content .elementor-button .elementor-align-icon-right {
    float: right;
    margin-left: 5px; }
  .elementor-metabox-content .elementor-button .elementor-align-icon-left {
    float: left;
    margin-right: 5px; }

.elementor-metabox-content input.button.add-repeater-row {
  margin-top: 18px;
  border: none;
  box-shadow: none; }

.elementor-metabox-content .elementor-repeater-tool-btn {
  color: #a4afb7;
  cursor: pointer;
  padding: 0 20px;
  font-size: 12px;
  transition: all 0.3s; }
  .elementor-metabox-content .elementor-repeater-tool-btn i {
    padding-right: 5px; }
  .elementor-metabox-content .elementor-repeater-tool-btn:hover {
    color: #6d7882; }
  .elementor-metabox-content .elementor-repeater-tool-btn.remove-repeater-row:hover {
    color: #b01b1b; }

.elementor-metabox-content .row-font-preview,
.elementor-metabox-content .inline-preview {
  font-size: 16px;
  text-transform: capitalize; }

.column-font_preview {
  width: 65%; }

.widefat td.column-font_preview {
  font-size: 16px; }

.post-type-elementor_icons .elementor-metabox-content .elementor-button:not([disabled]) {
  margin-top: 10px; }

.post-type-elementor_icons div#postbox-container-1 {
  display: none; }

.post-type-elementor_icons div#elementor-custom-icons-metabox {
  display: none;
  border: 1px solid #eceeef;
  border-radius: 1px;
  background-color: #fff; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .inside {
    margin-top: 10px;
    margin-bottom: 20px; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-metabox-content {
    background-color: #fff; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-custom-icons-metabox {
    padding: 4px 10px 10px 10px; }
    @media (max-width: 1025px) {
      .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-custom-icons-metabox {
        padding: 0; } }
  .post-type-elementor_icons div#elementor-custom-icons-metabox h4 {
    color: #556068;
    font-size: 22px;
    font-weight: 500;
    letter-spacing: 0.7px;
    line-height: 28px;
    margin: 0 0 4px 0; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox h5 {
    color: #a4afb7;
    font-size: 16px;
    font-weight: 500;
    letter-spacing: 0.5px;
    line-height: 21px;
    margin: 0; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor--dropzone--upload__icon i {
    font-size: 64px;
    color: #39b54a; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__uploading,
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__success,
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__error,
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__file {
    display: none; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .is-dragover {
    background-color: grey; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__input {
    padding: 180px 0;
    display: flex;
    flex-direction: column;
    align-items: center; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-field-dropzone {
    outline: 2px dashed #d5dadf;
    outline-offset: -3px;
    background-color: #fff;
    display: none; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons {
    background-color: #f7f7f7;
    border: 1px solid #eceeef;
    border-radius: 1px; }
    .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-metabox-content {
      background-color: #f7f7f7; }
      .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-metabox-content .elementor-custom-icons-metabox {
        padding: 4px 10px 0 10px; }
    .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header {
      height: 50px;
      color: #6d7882;
      background-color: #fff;
      box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.06);
      padding: 0 35px;
      display: flex;
      align-items: center;
      justify-content: flex-start; }
      @media (max-width: 1025px) {
        .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header {
          padding: 0 6px; } }
      .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div {
        padding-inline-end: 10px;
        padding-inline-start: 10px; }
        @media (max-width: 1025px) {
          .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div {
            line-height: 1; }
            .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div.remove {
              font-size: 10px; } }
        .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div:nth-of-type(2) {
          border: 1px solid #a4afb7;
          border-top: 0;
          border-bottom: 0; }
      .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta {
        color: #556068;
        font-size: 14px;
        line-height: 1; }
        @media (max-width: 1025px) {
          .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta {
            font-size: 10px; } }
        .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-value {
          font-weight: bold; }
          @media (max-width: 1025px) {
            .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-value {
              font-size: 10px; } }
        .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove {
          margin-left: auto;
          color: #556068;
          opacity: .6;
          cursor: pointer;
          transition: all 0.3s; }
          .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove i {
            color: #6d7882; }
          .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove:hover {
            opacity: 1; }
    .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-footer {
      color: #c2cbd2;
      font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
      border-top: 1px solid #eceeef;
      font-size: 11px;
      font-weight: 500;
      line-height: 1;
      text-align: right;
      padding-top: 10px;
      padding-bottom: 10px;
      padding-inline-end: 35px; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox ul {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(105px, 1fr));
    grid-gap: 20px;
    padding: 15px 35px 0 35px;
    overflow-y: auto;
    max-height: 575px; }
    .post-type-elementor_icons div#elementor-custom-icons-metabox ul li {
      position: relative;
      height: 0;
      padding-bottom: 100%;
      background-color: #fff;
      box-shadow: 0 1px 12px rgba(0, 0, 0, 0.05);
      border-radius: 3px;
      overflow: hidden; }
      .post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 100%;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        padding: 1px; }
      .post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon-name {
        color: #c2cbd2;
        font-size: 11px;
        padding: 18px 20px 0;
        white-space: nowrap;
        max-width: 100%;
        overflow: hidden;
        text-overflow: ellipsis; }
        @media (max-width: 479px) {
          .post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon-name {
            display: none; } }
      .post-type-elementor_icons div#elementor-custom-icons-metabox ul li i {
        font-size: 32px; }

.post-type-elementor_icons #tagsdiv-elementor_icon_type,
.post-type-elementor_icons #minor-publishing-actions,
.post-type-elementor_icons #misc-publishing-actions {
  display: none; }

.column-icons_prefix {
  width: 65%; }

:root {
  --color-box-shadow-color: rgba(0, 0, 0, 0.05); }

.eps-theme-dark {
  --color-box-shadow-color: rgba(0, 0, 0, 0.1); }

.eps-grid-container {
  display: flex;
  flex-wrap: wrap;
  width: 100%; }
  .eps-grid-container--no-wrap {
    flex-wrap: nowrap; }
  .eps-grid-container--wrap-reverse {
    flex-wrap: wrap-reverse; }
  .eps-grid-container--spacing {
    --grid-row-gutter: calc(-1 * calc( var(--grid-spacing-gutter) * 0.0625rem));
    width: var(--grid-spacing-width);
    margin: var(--grid-row-gutter); }
    .eps-grid-container--spacing > .eps-grid-item {
      padding: var(--grid-spacing-gutter); }

.eps-grid--direction-row {
  flex-direction: row; }
  .eps-grid--direction-row-reverse {
    flex-direction: row-reverse; }

.eps-grid--direction-column {
  flex-direction: column; }
  .eps-grid--direction-column-reverse {
    flex-direction: column-reverse; }

.eps-grid--justify-stretch {
  justify-content: stretch; }

.eps-grid--justify-start {
  justify-content: flex-start; }

.eps-grid--justify-center {
  justify-content: center; }

.eps-grid--justify-end {
  justify-content: flex-end; }

.eps-grid--justify-space-between {
  justify-content: space-between; }

.eps-grid--justify-space-around {
  justify-content: space-around; }

.eps-grid--justify-space-evenly {
  justify-content: space-evenly; }

.eps-grid--align-content-stretch {
  align-content: stretch; }

.eps-grid--align-content-start {
  align-content: flex-start; }

.eps-grid--align-content-center {
  align-content: center; }

.eps-grid--align-content-end {
  align-content: flex-end; }

.eps-grid--align-content-space-between {
  align-content: space-between; }

.eps-grid--align-items-start {
  align-items: flex-start; }

.eps-grid--align-items-center {
  align-items: center; }

.eps-grid--align-items-end {
  align-items: flex-end; }

.eps-grid--align-items-baseline {
  align-items: baseline; }

.eps-grid--align-items-stretch {
  align-items: stretch; }

.eps-grid-item--zero-min-width {
  min-width: 0; }

@media screen and (min-width: 480px) {
  .eps-grid-item-sm {
    flex-grow: 1;
    max-width: 100%;
    flex-basis: 0; } }

@media screen and (min-width: 768px) {
  .eps-grid-item-md {
    flex-grow: 1;
    max-width: 100%;
    flex-basis: 0; } }

@media screen and (min-width: 1025px) {
  .eps-grid-item-lg {
    flex-grow: 1;
    max-width: 100%;
    flex-basis: 0; } }

@media screen and (min-width: 1440px) {
  .eps-grid-item-xl {
    flex-grow: 1;
    max-width: 100%;
    flex-basis: 0; } }

@media screen and (min-width: 1600px) {
  .eps-grid-item-xxl {
    flex-grow: 1;
    max-width: 100%;
    flex-basis: 0; } }

.eps-grid-item-xs-1 {
  flex-grow: 0;
  max-width: 8.33333%;
  flex-basis: 8.33333%; }

.eps-grid-item-xs-2 {
  flex-grow: 0;
  max-width: 16.66667%;
  flex-basis: 16.66667%; }

.eps-grid-item-xs-3 {
  flex-grow: 0;
  max-width: 25%;
  flex-basis: 25%; }

.eps-grid-item-xs-4 {
  flex-grow: 0;
  max-width: 33.33333%;
  flex-basis: 33.33333%; }

.eps-grid-item-xs-5 {
  flex-grow: 0;
  max-width: 41.66667%;
  flex-basis: 41.66667%; }

.eps-grid-item-xs-6 {
  flex-grow: 0;
  max-width: 50%;
  flex-basis: 50%; }

.eps-grid-item-xs-7 {
  flex-grow: 0;
  max-width: 58.33333%;
  flex-basis: 58.33333%; }

.eps-grid-item-xs-8 {
  flex-grow: 0;
  max-width: 66.66667%;
  flex-basis: 66.66667%; }

.eps-grid-item-xs-9 {
  flex-grow: 0;
  max-width: 75%;
  flex-basis: 75%; }

.eps-grid-item-xs-10 {
  flex-grow: 0;
  max-width: 83.33333%;
  flex-basis: 83.33333%; }

.eps-grid-item-xs-11 {
  flex-grow: 0;
  max-width: 91.66667%;
  flex-basis: 91.66667%; }

.eps-grid-item-xs-12 {
  flex-grow: 0;
  max-width: 100%;
  flex-basis: 100%; }

@media screen and (min-width: 480px) {
  .eps-grid-item-sm-1 {
    flex-grow: 0;
    max-width: 8.33333%;
    flex-basis: 8.33333%; }
  .eps-grid-item-sm-2 {
    flex-grow: 0;
    max-width: 16.66667%;
    flex-basis: 16.66667%; }
  .eps-grid-item-sm-3 {
    flex-grow: 0;
    max-width: 25%;
    flex-basis: 25%; }
  .eps-grid-item-sm-4 {
    flex-grow: 0;
    max-width: 33.33333%;
    flex-basis: 33.33333%; }
  .eps-grid-item-sm-5 {
    flex-grow: 0;
    max-width: 41.66667%;
    flex-basis: 41.66667%; }
  .eps-grid-item-sm-6 {
    flex-grow: 0;
    max-width: 50%;
    flex-basis: 50%; }
  .eps-grid-item-sm-7 {
    flex-grow: 0;
    max-width: 58.33333%;
    flex-basis: 58.33333%; }
  .eps-grid-item-sm-8 {
    flex-grow: 0;
    max-width: 66.66667%;
    flex-basis: 66.66667%; }
  .eps-grid-item-sm-9 {
    flex-grow: 0;
    max-width: 75%;
    flex-basis: 75%; }
  .eps-grid-item-sm-10 {
    flex-grow: 0;
    max-width: 83.33333%;
    flex-basis: 83.33333%; }
  .eps-grid-item-sm-11 {
    flex-grow: 0;
    max-width: 91.66667%;
    flex-basis: 91.66667%; }
  .eps-grid-item-sm-12 {
    flex-grow: 0;
    max-width: 100%;
    flex-basis: 100%; } }

@media screen and (min-width: 768px) {
  .eps-grid-item-md-1 {
    flex-grow: 0;
    max-width: 8.33333%;
    flex-basis: 8.33333%; }
  .eps-grid-item-md-2 {
    flex-grow: 0;
    max-width: 16.66667%;
    flex-basis: 16.66667%; }
  .eps-grid-item-md-3 {
    flex-grow: 0;
    max-width: 25%;
    flex-basis: 25%; }
  .eps-grid-item-md-4 {
    flex-grow: 0;
    max-width: 33.33333%;
    flex-basis: 33.33333%; }
  .eps-grid-item-md-5 {
    flex-grow: 0;
    max-width: 41.66667%;
    flex-basis: 41.66667%; }
  .eps-grid-item-md-6 {
    flex-grow: 0;
    max-width: 50%;
    flex-basis: 50%; }
  .eps-grid-item-md-7 {
    flex-grow: 0;
    max-width: 58.33333%;
    flex-basis: 58.33333%; }
  .eps-grid-item-md-8 {
    flex-grow: 0;
    max-width: 66.66667%;
    flex-basis: 66.66667%; }
  .eps-grid-item-md-9 {
    flex-grow: 0;
    max-width: 75%;
    flex-basis: 75%; }
  .eps-grid-item-md-10 {
    flex-grow: 0;
    max-width: 83.33333%;
    flex-basis: 83.33333%; }
  .eps-grid-item-md-11 {
    flex-grow: 0;
    max-width: 91.66667%;
    flex-basis: 91.66667%; }
  .eps-grid-item-md-12 {
    flex-grow: 0;
    max-width: 100%;
    flex-basis: 100%; } }

@media screen and (min-width: 1025px) {
  .eps-grid-item-lg-1 {
    flex-grow: 0;
    max-width: 8.33333%;
    flex-basis: 8.33333%; }
  .eps-grid-item-lg-2 {
    flex-grow: 0;
    max-width: 16.66667%;
    flex-basis: 16.66667%; }
  .eps-grid-item-lg-3 {
    flex-grow: 0;
    max-width: 25%;
    flex-basis: 25%; }
  .eps-grid-item-lg-4 {
    flex-grow: 0;
    max-width: 33.33333%;
    flex-basis: 33.33333%; }
  .eps-grid-item-lg-5 {
    flex-grow: 0;
    max-width: 41.66667%;
    flex-basis: 41.66667%; }
  .eps-grid-item-lg-6 {
    flex-grow: 0;
    max-width: 50%;
    flex-basis: 50%; }
  .eps-grid-item-lg-7 {
    flex-grow: 0;
    max-width: 58.33333%;
    flex-basis: 58.33333%; }
  .eps-grid-item-lg-8 {
    flex-grow: 0;
    max-width: 66.66667%;
    flex-basis: 66.66667%; }
  .eps-grid-item-lg-9 {
    flex-grow: 0;
    max-width: 75%;
    flex-basis: 75%; }
  .eps-grid-item-lg-10 {
    flex-grow: 0;
    max-width: 83.33333%;
    flex-basis: 83.33333%; }
  .eps-grid-item-lg-11 {
    flex-grow: 0;
    max-width: 91.66667%;
    flex-basis: 91.66667%; }
  .eps-grid-item-lg-12 {
    flex-grow: 0;
    max-width: 100%;
    flex-basis: 100%; } }

@media screen and (min-width: 1440px) {
  .eps-grid-item-xl-1 {
    flex-grow: 0;
    max-width: 8.33333%;
    flex-basis: 8.33333%; }
  .eps-grid-item-xl-2 {
    flex-grow: 0;
    max-width: 16.66667%;
    flex-basis: 16.66667%; }
  .eps-grid-item-xl-3 {
    flex-grow: 0;
    max-width: 25%;
    flex-basis: 25%; }
  .eps-grid-item-xl-4 {
    flex-grow: 0;
    max-width: 33.33333%;
    flex-basis: 33.33333%; }
  .eps-grid-item-xl-5 {
    flex-grow: 0;
    max-width: 41.66667%;
    flex-basis: 41.66667%; }
  .eps-grid-item-xl-6 {
    flex-grow: 0;
    max-width: 50%;
    flex-basis: 50%; }
  .eps-grid-item-xl-7 {
    flex-grow: 0;
    max-width: 58.33333%;
    flex-basis: 58.33333%; }
  .eps-grid-item-xl-8 {
    flex-grow: 0;
    max-width: 66.66667%;
    flex-basis: 66.66667%; }
  .eps-grid-item-xl-9 {
    flex-grow: 0;
    max-width: 75%;
    flex-basis: 75%; }
  .eps-grid-item-xl-10 {
    flex-grow: 0;
    max-width: 83.33333%;
    flex-basis: 83.33333%; }
  .eps-grid-item-xl-11 {
    flex-grow: 0;
    max-width: 91.66667%;
    flex-basis: 91.66667%; }
  .eps-grid-item-xl-12 {
    flex-grow: 0;
    max-width: 100%;
    flex-basis: 100%; } }

@media screen and (min-width: 1600px) {
  .eps-grid-item-xxl-1 {
    flex-grow: 0;
    max-width: 8.33333%;
    flex-basis: 8.33333%; }
  .eps-grid-item-xxl-2 {
    flex-grow: 0;
    max-width: 16.66667%;
    flex-basis: 16.66667%; }
  .eps-grid-item-xxl-3 {
    flex-grow: 0;
    max-width: 25%;
    flex-basis: 25%; }
  .eps-grid-item-xxl-4 {
    flex-grow: 0;
    max-width: 33.33333%;
    flex-basis: 33.33333%; }
  .eps-grid-item-xxl-5 {
    flex-grow: 0;
    max-width: 41.66667%;
    flex-basis: 41.66667%; }
  .eps-grid-item-xxl-6 {
    flex-grow: 0;
    max-width: 50%;
    flex-basis: 50%; }
  .eps-grid-item-xxl-7 {
    flex-grow: 0;
    max-width: 58.33333%;
    flex-basis: 58.33333%; }
  .eps-grid-item-xxl-8 {
    flex-grow: 0;
    max-width: 66.66667%;
    flex-basis: 66.66667%; }
  .eps-grid-item-xxl-9 {
    flex-grow: 0;
    max-width: 75%;
    flex-basis: 75%; }
  .eps-grid-item-xxl-10 {
    flex-grow: 0;
    max-width: 83.33333%;
    flex-basis: 83.33333%; }
  .eps-grid-item-xxl-11 {
    flex-grow: 0;
    max-width: 91.66667%;
    flex-basis: 91.66667%; }
  .eps-grid-item-xxl-12 {
    flex-grow: 0;
    max-width: 100%;
    flex-basis: 100%; } }

:root {
  --eps-modal-background-color: #fff;
  --eps-modal-header-background-color: #58d0f5; }

.eps-theme-dark {
  --eps-modal-background-color: #34383c;
  --eps-modal-header-background-color: #58d0f5; }

/** ----------------------------------------------------------------
	EPS Modal
---------------------------------------------------------------- */
.eps-modal {
  max-width: 43.75rem;
  background: var(--eps-modal-background-color);
  border-radius: 0.1875rem;
  animation: fade-in 0.4s ease-in both; }
  .eps-modal__overlay {
    background: rgba(0, 0, 0, 0.5);
    position: fixed;
    display: flex;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    align-items: center;
    justify-content: center;
    z-index: 1030; }
  .eps-modal__header {
    font-size: 0.875rem;
    background: var(--eps-modal-header-background-color);
    height: 2.75rem;
    padding: 0.625rem 1rem;
    border-radius: 0.1875rem; }
    .eps-modal__header,
    .eps-modal__header .title {
      color: #fff; }
  .eps-modal__icon {
    margin-inline-end: 0.625rem; }
  .eps-modal__body {
    padding: 1.875rem; }
  .eps-modal__tip, .eps-modal .eps-tip {
    padding-inline-start: 0.75rem;
    border-inline-start: 3px solid #58d0f5; }
    .eps-modal__tip:not(:last-child), .eps-modal .eps-tip:not(:last-child) {
      margin-bottom: 1.875rem; }
    .eps-modal__tip:not(:first-child), .eps-modal .eps-tip:not(:first-child) {
      margin-top: 1.875rem; }
  .eps-modal__section:not(:first-child) {
    margin-top: 1.875rem; }
  .eps-modal__close-wrapper {
    padding-inline-start: 1rem;
    border-inline-start: solid 1px #fff; }

.eps-button {
  display: inline-flex;
  --button-line-height: 16px;
  --button-padding-y: 0.5em;
  --button-padding-x: 1.5em;
  --button-primary-background-color: #39b54a;
  --button-primary-hover-background-color: #33a242;
  --button-primary-active-background-color: #35a945;
  --button-primary-color: #fff;
  --button-secondary-background-color: #a4afb7;
  --button-secondary-hover-background-color: #96a2ac;
  --button-secondary-active-background-color: #9ba7b0;
  --button-secondary-color: #fff;
  --button-danger-background-color: #b01b1b;
  --button-danger-hover-background-color: #9a1818;
  --button-danger-active-background-color: #a31919;
  --button-danger-color: #fff;
  --button-cta-background-color: #93003F;
  --button-cta-hover-background-color: #7a0034;
  --button-cta-active-background-color: #840038;
  --button-cta-color: #fff;
  --button-link-background-color: #58d0f5;
  --button-link-hover-background-color: #40c9f4;
  --button-link-active-background-color: #4accf4;
  --button-link-color: #fff;
  --button-disabled-background-color: #c2cbd2;
  --button-disabled-hover-background-color: #b3bec7;
  --button-disabled-active-background-color: #b9c3cc;
  --button-disabled-color: #fff;
  color: var(--button-background-color, currentColor);
  font-size: var(--button-font-size, inherit);
  font-weight: 500;
  line-height: var(--button-line-height);
  cursor: pointer; }
  .eps-button:active {
    --button-background-color: var(--button-active-background-color, transparent); }
  .eps-button:hover {
    --button-background-color: var(--button-hover-background-color); }
  .eps-theme-dark .eps-button {
    --button-primary-background-color: #39b54a;
    --button-primary-color: #fff;
    --button-primary-hover-background-color: #33a242;
    --button-primary-active-background-color: #35a945;
    --button-secondary-background-color: #b4b5b7;
    --button-secondary-color: #fff;
    --button-secondary-hover-background-color: #a7a8ab;
    --button-secondary-active-background-color: #acadb0;
    --button-cta-background-color: #93003F;
    --button-cta-hover-background-color: #7a0034;
    --button-cta-active-background-color: #840038;
    --button-cta-color: #fff;
    --button-link-background-color: #58d0f5;
    --button-link-hover-background-color: #40c9f4;
    --button-link-active-background-color: #4accf4;
    --button-link-color: #fff;
    --button-disabled-background-color: #64666a;
    --button-disabled-hover-background-color: #58595d;
    --button-disabled-active-background-color: #5d5e62;
    --button-disabled-color: #fff; }
  .eps-button--contained {
    color: var(--button-color);
    padding: var(--button-padding-y) var(--button-padding-x);
    background-color: var(--button-background-color, transparent);
    border: 1px solid var(--button-background-color); }
    .eps-button--contained:hover {
      color: var(--button-color); }
  .eps-button--outlined {
    display: block;
    padding: var(--button-padding-y) var(--button-padding-x);
    border: 1px solid var(--button-background-color); }
  .eps-button--contained, .eps-button--outlined {
    border-radius: 0.1875rem; }
  .eps-button--underlined {
    text-decoration: underline; }
  .eps-button--sm {
    --button-font-size: 0.75rem;
    --button-line-height: 14px; }
  .eps-button--lg {
    --button-font-size: 0.9375rem;
    --button-line-height: 18px; }
  .eps-button--primary {
    --button-color: var(--button-primary-color);
    --button-background-color: var(--button-primary-background-color);
    --button-hover-background-color: var(--button-primary-hover-background-color);
    --button-active-background-color: var(--button-primary-active-background-color); }
  .eps-button--secondary {
    --button-color: var(--buton-secondary-color);
    --button-background-color: var(--button-secondary-background-color);
    --button-hover-background-color: var(--button-secondary-hover-background-color);
    --button-active-background-color: var(--button-secondary-active-background-color); }
  .eps-button--danger {
    --button-color: var(--buton-danger-color);
    --button-background-color: var(--button-danger-background-color);
    --button-hover-background-color: var(--button-danger-hover-background-color);
    --button-active-background-color: var(--button-danger-active-background-color); }
  .eps-button--cta {
    --button-color: var(--button-cta-color);
    --button-background-color: var(--button-cta-background-color);
    --button-hover-background-color: var(--button-cta-hover-background-color);
    --button-active-background-color: var(--button-cta-active-background-color); }
  .eps-button--link {
    --button-color: var(--button-link-color);
    --button-background-color: var(--button-link-background-color);
    --button-hover-background-color: var(--button-link-hover-background-color);
    --button-active-background-color: var(--button-link-active-background-color); }
  .eps-button--disabled, .eps-button[disabled] {
    --button-color: var(--button-disabled-color);
    --button-background-color: var(--button-disabled-background-color);
    --button-hover-background-color: var(--button-disabled-hover-background-color);
    --button-active-background-color: var(--button-disabled-active-background-color);
    cursor: default; }

:root {
  --e-site-editor-conditions-row-controls-background: #fff;
  --e-site-editor-input-wrapper-border-color: #f1f3f5;
  --e-site-editor-input-wrapper-select-color: #556068;
  --e-site-editor-add-button-background-color: #a4afb7;
  --e-site-editor-add-button-color-hover-background-color: #6d7882;
  --e-site-editor-input-wrapper-condition-include-background-color:
	#a4afb7;
  --e-site-editor-input-wrapper-condition-exclude-background-color:
	#c2cbd2;
  --e-site-editor-input-select2-search-field-color: #495157
; }

.eps-theme-dark {
  --select2-selection-background-color: tints(600);
  --e-site-editor-conditions-row-controls-background: #404349;
  --e-site-editor-input-wrapper-border-color: #404349;
  --e-site-editor-input-wrapper-select-color: #b4b5b7;
  --e-site-editor-add-button-background-color: #4c4f56;
  --e-site-editor-add-button-color-hover-background-color: #404349;
  --e-site-editor-input-wrapper-condition-include-background-color:
			#404349;
  --e-site-editor-input-wrapper-condition-exclude-background-color:
			#404349;
  --e-site-editor-input-select2-search-field-color: #fff

; }

.e-site-editor-conditions__header {
  text-align: center; }

.e-site-editor-conditions__header-image {
  display: block;
  margin: 0 auto 2.75rem;
  width: 4.375rem; }

.e-site-editor-conditions__rows {
  margin: 2.75rem auto;
  max-width: 43.75rem; }

.e-site-editor-conditions__row {
  display: flex;
  flex-grow: 1;
  margin-top: 0.75rem; }

.e-site-editor-conditions__remove-condition {
  color: #c2cbd2;
  font-size: 1.125rem;
  display: flex;
  align-items: center;
  justify-content: center; }

.e-site-editor-conditions__row-controls {
  overflow: hidden;
  margin-right: 0.625rem;
  background-color: var(--e-site-editor-conditions-row-controls-background);
  display: flex;
  width: 100%;
  box-shadow: 0 3px 6px var(--color-box-shadow-color);
  border-radius: 0.1875rem; }
  .e-site-editor-conditions__row-controls--error {
    border: 1px solid #b01b1b; }

.e-site-editor-conditions__conflict {
  text-align: center;
  margin-top: 0.3125rem;
  color: #b01b1b; }

.e-site-editor-conditions__row-controls-inner {
  width: 100%;
  display: flex; }
  .e-site-editor-conditions__row-controls-inner div {
    flex: 1; }

.e-site-editor-conditions__add-button-container {
  text-align: center; }

.e-site-editor-conditions__add-button {
  margin-top: 2.75rem;
  background-color: var(--e-site-editor-add-button-background-color);
  color: #fff;
  text-transform: uppercase; }
  .e-site-editor-conditions__add-button:hover {
    background-color: var(--e-site-editor-add-button-color-hover-background-color);
    color: #fff; }

.e-site-editor-conditions__footer {
  display: flex;
  justify-content: flex-end;
  position: absolute;
  bottom: 0;
  right: 0;
  left: 0;
  padding: 0.5rem;
  border-top: 1px solid var(--hr-color); }

.e-site-editor-conditions__input-wrapper {
  position: relative;
  border-left: 1px solid;
  border-color: var(--e-site-editor-input-wrapper-border-color); }
  .e-site-editor-conditions__input-wrapper:first-child {
    border: none; }
  .e-site-editor-conditions__input-wrapper select {
    appearance: none;
    -webkit-appearance: none;
    font-size: 0.75rem;
    height: 2.5rem;
    border-width: 0;
    padding: 0 0.625rem;
    width: 100%;
    position: relative;
    color: var(--e-site-editor-input-wrapper-select-color);
    outline: none;
    background: transparent; }
  .e-site-editor-conditions__input-wrapper:after {
    font-family: eicons;
    content: '\e8ad';
    font-size: 0.75rem;
    pointer-events: none;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    right: 0.625rem; }
  .e-site-editor-conditions__input-wrapper .select2-container--default .select2-selection--single {
    border: none;
    line-height: 2.5rem; }
  .e-site-editor-conditions__input-wrapper .select2-container--default .select2-selection--single .select2-selection__rendered {
    line-height: 2.5rem;
    font-size: 0.75rem; }
  .e-site-editor-conditions__input-wrapper .select2-selection {
    outline: none;
    background: transparent;
    height: 2.5rem; }
  .e-site-editor-conditions__input-wrapper .select2-selection__arrow {
    display: none; }

.e-site-editor-conditions__input-wrapper--condition-type {
  position: relative; }
  .e-site-editor-conditions__input-wrapper--condition-type:before {
    font-family: eicons;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    left: 0.75rem;
    font-size: 0.9375rem;
    color: #fff;
    pointer-events: none;
    z-index: 1000; }
  .e-site-editor-conditions__input-wrapper--condition-type:after {
    color: #fff; }
  .e-site-editor-conditions__input-wrapper--condition-type select {
    text-transform: uppercase;
    padding-left: 2.125rem;
    width: 7.5rem;
    font-size: 0.75rem;
    color: #fff; }
  .e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type="include"]:before {
    content: '\e8cc'; }
  .e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type="include"] select {
    background-color: var(--e-site-editor-input-wrapper-condition-include-background-color); }
  .e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type="exclude"]:before {
    content: '\e8cd'; }
  .e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type="exclude"] select {
    background-color: var(--e-site-editor-input-wrapper-condition-exclude-background-color); }

.select2-search__field {
  background-color: transparent;
  color: var(--e-site-editor-input-select2-search-field-color); }

.misc-pub-visibility {
  display: none; }

.eps-modal__overlay {
  background: rgba(0, 0, 0, 0.8);
  z-index: 9999;
  /* After '#adminmenuwrap' */ }

.select2-container {
  z-index: 9999;
  /* After 'eps-modal__overlay'. */ }

.post-conditions .spinner {
  margin: 0 10px;
  float: none;
  visibility: visible; }

.post-conditions .eps-button--underlined {
  /* No variable was used since this color comes from wordpress */
  color: #0073aa; }

.post-conditions .eps-modal {
  position: relative;
  background: #f1f3f5;
  max-width: 1200px;
  max-height: 800px;
  width: 90vw;
  height: 90vh;
  margin: auto; }
  .post-conditions .eps-modal .eps-modal__body {
    display: flex;
    flex-direction: column;
    flex-grow: 1; }
  .post-conditions .eps-modal .eps-h1 {
    font-size: 30px;
    font-weight: 300; }
  .post-conditions .eps-modal .eps-text {
    font-size: 18px;
    line-height: 150%;
    margin: 1em 0;
    color: #a4afb7; }
  .post-conditions .eps-modal .eps-grid-container {
    width: auto; }
  .post-conditions .eps-modal__header {
    background: #ffffff;
    color: #556068;
    box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);
    padding: 2px 15px; }
    .post-conditions .eps-modal__header .eps-app__logo {
      width: 1.75rem;
      height: 1.75rem;
      line-height: 1.75rem;
      text-align: center;
      font-size: calc(0.4 * 1.75rem);
      border-radius: 50%;
      color: #ffffff;
      background-color: #93003F; }
    .post-conditions .eps-modal__header .eps-text {
      /* Didn't find better solution */
      position: relative;
      top: 2px;
      font-size: 0.9375rem;
      font-weight: 700;
      text-transform: uppercase;
      color: #6d7882; }
    .post-conditions .eps-modal__header .eps-button {
      font-size: 18px; }
  .post-conditions .eps-modal .e-site-editor-conditions__header {
    padding-top: 5vh; }
  .post-conditions .eps-modal .e-site-editor-conditions__rows {
    overflow-y: auto;
    max-height: 27vh;
    margin: 0 auto; }
    .post-conditions .eps-modal .e-site-editor-conditions__rows:empty {
      margin-bottom: 30px; }
    .post-conditions .eps-modal .e-site-editor-conditions__rows:not(:empty) {
      margin-bottom: 20px; }
    .post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row {
      margin-top: 15px;
      padding: 0 14px; }
      .post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls {
        border-radius: 0; }
        .post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls select {
          text-transform: none; }
          .post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls select:focus {
            box-shadow: none;
            border: none;
            color: inherit; }
          .post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls select:hover {
            color: inherit; }
        .post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls .e-site-editor-conditions__input-wrapper--condition-type select:hover, .post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls .e-site-editor-conditions__input-wrapper--condition-type select:focus {
          color: #ffffff; }
  .post-conditions .eps-modal .e-site-editor-conditions__add-button {
    margin-top: 0; }
  .post-conditions .eps-modal .e-site-editor-conditions__footer {
    z-index: 1000;
    border-top: 1px solid #d5dadf; }

#elementor-custom-code.postbox {
  border: 0; }

#elementor-custom-code .postbox-header {
  display: none; }

#elementor-custom-code .inside {
  padding: 0; }
  #elementor-custom-code .inside .elementor-custom-code-meta-box {
    margin: 0; }
    #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel {
      border: 1px solid #eceeef;
      border-bottom: 1px solid #ccd0d4;
      background: #ffffff; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-custom-code-panel-placement {
        padding: 5px 40px;
        margin: 10px 0;
        flex-wrap: wrap;
        gap: 10px; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-custom-code-options-placement {
        display: none; }
        #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-custom-code-options-placement.show {
          display: flex; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel div {
        display: flex; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field i {
        color: #c2cbd2;
        font-size: 15px; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field select {
        height: 20px;
        margin-top: 7px; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field select#location {
        direction: ltr; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field.priority {
        margin-left: auto; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field.location {
        margin-inline-end: 10px; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-label {
        font-weight: 500;
        font-size: 14px;
        line-height: 16px;
        color: #6d7882; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-label:nth-child(even) {
        margin-right: 20px; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-label:nth-child(odd) {
        margin-right: 5px; }
      #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-checkboxes {
        padding-top: 18px; }
        #elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-checkboxes .label {
          position: relative;
          top: -5px; }
  #elementor-custom-code .inside .elementor-custom-code-codemirror-holder {
    border: 1px solid #eceeef;
    background: #f7f7f7;
    padding: 40px; }
    #elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-field-label {
      margin: 0; }
    #elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror {
      border: 1px solid #ccd0d4;
      resize: vertical;
      overflow: auto;
      max-width: 100%; }
      #elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror .elementor-field-textarea,
      #elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror .CodeMirror.CodeMirror-wrap,
      #elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror .CodeMirror-scroll {
        height: 100%; }
      #elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror .CodeMirror-sizer {
        min-height: 300px !important;
        border-right: 0; }

.post-type-elementor_snippet #minor-publishing-actions,
.post-type-elementor_snippet #save-action {
  display: none; }

.e--ua-safari #elementor-custom-code .elementor-custom-code-codemirror {
  background-color: #ffffff;
  display: flex; }
  .e--ua-safari #elementor-custom-code .elementor-custom-code-codemirror .elementor-field-textarea {
    width: calc(100% - 8px); }
  .e--ua-safari #elementor-custom-code .elementor-custom-code-codemirror .CodeMirror-sizer {
    box-sizing: border-box; }

@media (max-width: 850px), (max-height: 825px) {
  .post-conditions .eps-modal {
    width: 100vw;
    height: 90vh; }
    .post-conditions .eps-modal .e-site-editor-conditions__header {
      padding-top: 0; }
    .post-conditions .eps-modal .e-site-editor-conditions__rows {
      max-height: 14vh; }
    .post-conditions .eps-modal .e-site-editor-conditions__header-image {
      margin: 0 auto; } }

@media (max-width: 590px), (max-height: 666px) {
  .post-conditions .eps-modal .eps-modal__body {
    overflow: auto;
    height: calc(100vh - 200px); }
    .post-conditions .eps-modal .eps-modal__body .e-site-editor-conditions__footer {
      background: #f1f3f5; } }

/*# sourceMappingURL=custom-code.css.map */assets/css/modules/custom-code.min.css000064400000144011150755004320014026 0ustar00@-webkit-keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.wrap.elementor-admin-page-license form.elementor-license-box{max-width:600px;background:#fff;margin:20px 0;padding:20px}.wrap.elementor-admin-page-license form.elementor-license-box h3{border-bottom:1px solid #eee;padding:20px;margin:-20px -20px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wrap.elementor-admin-page-license form.elementor-license-box h3 span{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-left:5px}.wrap.elementor-admin-page-license form.elementor-license-box h3 small{float:right;font-size:13px;font-weight:400}.wrap.elementor-admin-page-license form.elementor-license-box label{display:block;font-size:1.3em;font-weight:600;margin:1em 0}.wrap.elementor-admin-page-license form.elementor-license-box .button{height:30px;margin-left:15px;margin-bottom:0}.wrap.elementor-admin-page-license form.elementor-license-box p.description{margin:10px 0}.wrap.elementor-admin-page-license form.elementor-license-box .e-row-stretch{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.wrap.elementor-admin-page-license form.elementor-license-box .e-row-divider-bottom{padding-bottom:15px;border-bottom:1px solid #eee}.wrap.elementor-admin-page-license .elementor-box-action{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;margin-top:30px}.wrap.elementor-admin-page-license .elementor-box-action .elementor-manually-link{color:#72777c;margin-right:15px}.wrap.elementor-admin-page-license .elementor-box-action .elementor-manually-link:hover{color:inherit}.fixed .column-elementor_library_type,.fixed .column-instances{width:10%}.fixed .elementor-shortcode-input{min-width:235px}@media (min-width:768px) and (max-width:1440px){.fixed .column-shortcode{width:25%}.fixed .elementor-shortcode-input{min-width:100%}}#available-widgets [class*=elementor-template] .widget-title:before{content:"\e801";font-family:eicon;font-size:17px}#elementor-widget-template-empty-templates{margin-top:15px;text-align:center}.elementor-widget-template-empty-templates-title{padding:25px 0 30px}.elementor-widget-template-empty-templates-icon{font-size:96px;color:#d5dadf}.elementor-widget-template-empty-templates-footer{color:#a4afb7;font-size:13px;font-style:italic;margin-bottom:15px}.elementor-widget-template-empty-templates-footer a{color:#a4afb7}.elementor-button-spinner.error:before{content:"\f335";color:red}span.font-variations-count{display:inline-block;vertical-align:top;margin:1px 0 0 5px;padding:0 5px;min-width:7px;height:17px;border-radius:11px;background-color:#d4dffb;color:#4278b2;font-size:9px;line-height:17px;text-align:center;z-index:26}.post-type-elementor_font div#elementor-font-custommetabox{background:none;border:0}.post-type-elementor_font div#elementor-font-custommetabox button.handlediv{display:none}.post-type-elementor_font div#elementor-font-custommetabox #poststuff .inside{margin:0;padding:0}.post-type-elementor_font div#elementor-font-custommetabox h2.hndle{padding:0}.post-type-elementor_font #minor-publishing-actions,.post-type-elementor_font #misc-publishing-actions,.post-type-elementor_font #tagsdiv-elementor_font_type,.post-type-elementor_font div#elementor-font-custommetabox .handle-actions{display:none}.elementor-metabox-content .repeater-block{background:#fff;color:#6d7882;padding:20px;margin-bottom:2px}.elementor-metabox-content .repeater-block span.elementor-repeater-tool-btn.close-repeater-row{display:none}.elementor-metabox-content .repeater-block.block-visible{padding-bottom:0;margin-bottom:0}.elementor-metabox-content .repeater-block.block-visible span.elementor-repeater-tool-btn.toggle-repeater-row{display:none}.elementor-metabox-content .repeater-block.block-visible span.elementor-repeater-tool-btn.close-repeater-row{display:inline-block}.elementor-metabox-content .repeater-block:not(.block-visible) .close-repeater-row{display:none}.elementor-metabox-content .repeater-block .repeater-title{cursor:pointer}.elementor-metabox-content .row-font-label{padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;text-transform:capitalize}.elementor-metabox-content .row-font-label li{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:100%;margin:0}.elementor-metabox-content .row-font-label li span.label{font-weight:500;padding-right:10px}.elementor-metabox-content .row-font-label li.row-font-style,.elementor-metabox-content .row-font-label li.row-font-weight{max-width:180px}.elementor-metabox-content .row-font-label li.row-font-actions{max-width:200px;text-align:right}.elementor-metabox-content .repeater-content{margin:0}.elementor-metabox-content .repeater-content .repeater-content-top{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px;line-height:28px}.elementor-metabox-content .repeater-content .repeater-content-top>div{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-metabox-content .repeater-content .repeater-content-top p{margin:0;display:inline-block}.elementor-metabox-content .repeater-content .repeater-content-top p label{font-weight:500;padding-right:10px}.elementor-metabox-content .repeater-content .repeater-content-top .elementor-field-select{max-width:180px}.elementor-metabox-content .repeater-content .repeater-content-top .elementor-field-toolbar{max-width:200px;text-align:right}.elementor-metabox-content .repeater-content .repeater-content-bottom{background-color:#f7f7f7;padding:20px 40px;margin:0 -20px}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fff;padding:10px 20px;margin-bottom:10px;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.05);box-shadow:0 3px 5px rgba(0,0,0,.05)}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field:last-child{margin-bottom:0}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field input,.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field p{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:100%;margin:0}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field p.elementor-field-label{font-weight:500;max-width:120px}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input{padding:5px 8px;margin:0 15px;border-radius:3px;font-size:12px;width:100%;background:none;-webkit-box-shadow:none;box-shadow:none;color:#495157;border:1px solid;outline:none}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input:not(:focus){border-color:#d5dadf}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input:focus{border-color:#a4afb7}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-btn,.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn{max-width:100px;font-size:11px}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn{background-color:#eceeef;color:#a4afb7}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn:hover{background-color:#b01b1b;color:#fff}.elementor-metabox-content .elementor-button{background-color:#a4afb7;color:#fff;line-height:1;text-transform:uppercase;height:auto;padding:10px 20px;outline:none;border:none;-webkit-transition-property:background,color,opacity,-webkit-box-shadow;transition-property:background,color,opacity,-webkit-box-shadow;-o-transition-property:background,color,box-shadow,opacity;transition-property:background,color,box-shadow,opacity;transition-property:background,color,box-shadow,opacity,-webkit-box-shadow;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s}.elementor-metabox-content .elementor-button:focus,.elementor-metabox-content .elementor-button:hover,.elementor-metabox-content .elementor-button:visited{color:#fff}.elementor-metabox-content .elementor-button:focus,.elementor-metabox-content .elementor-button:visited{background-color:#a4afb7}.elementor-metabox-content .elementor-button:hover{background-color:#6d7882;-webkit-box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);border:none}.elementor-metabox-content .elementor-button:active{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1);box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1)}.elementor-metabox-content .elementor-button:not([disabled]){cursor:pointer}.elementor-metabox-content .elementor-button.elementor-size-xs{font-size:11px;padding:10px 20px;border-radius:2px}.elementor-metabox-content .elementor-button.elementor-size-sm{font-size:13px;padding:12px 24px;border-radius:3px}.elementor-metabox-content .elementor-button.elementor-size-md{font-size:14px;padding:15px 30px;border-radius:4px}.elementor-metabox-content .elementor-button.elementor-size-lg{font-size:15px;padding:20px 40px;border-radius:5px}.elementor-metabox-content .elementor-button.elementor-size-xl{font-size:18px;padding:25px 50px;border-radius:6px}.elementor-metabox-content .elementor-button .elementor-align-icon-right{float:right;margin-left:5px}.elementor-metabox-content .elementor-button .elementor-align-icon-left{float:left;margin-right:5px}.elementor-metabox-content input.button.add-repeater-row{margin-top:18px;border:none;-webkit-box-shadow:none;box-shadow:none}.elementor-metabox-content .elementor-repeater-tool-btn{color:#a4afb7;cursor:pointer;padding:0 20px;font-size:12px;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.elementor-metabox-content .elementor-repeater-tool-btn i{padding-right:5px}.elementor-metabox-content .elementor-repeater-tool-btn:hover{color:#6d7882}.elementor-metabox-content .elementor-repeater-tool-btn.remove-repeater-row:hover{color:#b01b1b}.elementor-metabox-content .inline-preview,.elementor-metabox-content .row-font-preview{font-size:16px;text-transform:capitalize}.column-font_preview{width:65%}.widefat td.column-font_preview{font-size:16px}.post-type-elementor_icons .elementor-metabox-content .elementor-button:not([disabled]){margin-top:10px}.post-type-elementor_icons div#postbox-container-1{display:none}.post-type-elementor_icons div#elementor-custom-icons-metabox{display:none;border:1px solid #eceeef;border-radius:1px;background-color:#fff}.post-type-elementor_icons div#elementor-custom-icons-metabox .inside{margin-top:10px;margin-bottom:20px}.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-metabox-content{background-color:#fff}.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-custom-icons-metabox{padding:4px 10px 10px}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-custom-icons-metabox{padding:0}}.post-type-elementor_icons div#elementor-custom-icons-metabox h4{color:#556068;font-size:22px;font-weight:500;letter-spacing:.7px;line-height:28px;margin:0 0 4px}.post-type-elementor_icons div#elementor-custom-icons-metabox h5{color:#a4afb7;font-size:16px;font-weight:500;letter-spacing:.5px;line-height:21px;margin:0}.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor--dropzone--upload__icon i{font-size:64px;color:#39b54a}.post-type-elementor_icons div#elementor-custom-icons-metabox .box__error,.post-type-elementor_icons div#elementor-custom-icons-metabox .box__file,.post-type-elementor_icons div#elementor-custom-icons-metabox .box__success,.post-type-elementor_icons div#elementor-custom-icons-metabox .box__uploading{display:none}.post-type-elementor_icons div#elementor-custom-icons-metabox .is-dragover{background-color:grey}.post-type-elementor_icons div#elementor-custom-icons-metabox .box__input{padding:180px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-field-dropzone{outline:2px dashed #d5dadf;outline-offset:-3px;background-color:#fff;display:none}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons{background-color:#f7f7f7;border:1px solid #eceeef;border-radius:1px}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-metabox-content{background-color:#f7f7f7}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-metabox-content .elementor-custom-icons-metabox{padding:4px 10px 0}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header{height:50px;color:#6d7882;background-color:#fff;-webkit-box-shadow:0 2px 6px 0 rgba(0,0,0,.06);box-shadow:0 2px 6px 0 rgba(0,0,0,.06);padding:0 35px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header{padding:0 6px}}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div{-webkit-padding-end:10px;padding-inline-end:10px;-webkit-padding-start:10px;padding-inline-start:10px}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div{line-height:1}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div.remove{font-size:10px}}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div:nth-of-type(2){border:1px solid #a4afb7;border-top:0;border-bottom:0}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta{color:#556068;font-size:14px;line-height:1}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta{font-size:10px}}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-value{font-weight:700}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-value{font-size:10px}}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove{margin-left:auto;color:#556068;opacity:.6;cursor:pointer;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove i{color:#6d7882}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove:hover{opacity:1}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-footer{color:#c2cbd2;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;border-top:1px solid #eceeef;font-size:11px;font-weight:500;line-height:1;text-align:right;padding-top:10px;padding-bottom:10px;-webkit-padding-end:35px;padding-inline-end:35px}.post-type-elementor_icons div#elementor-custom-icons-metabox ul{display:grid;grid-template-columns:repeat(auto-fill,minmax(105px,1fr));grid-gap:20px;padding:15px 35px 0;overflow-y:auto;max-height:575px}.post-type-elementor_icons div#elementor-custom-icons-metabox ul li{position:relative;height:0;padding-bottom:100%;background-color:#fff;-webkit-box-shadow:0 1px 12px rgba(0,0,0,.05);box-shadow:0 1px 12px rgba(0,0,0,.05);border-radius:3px;overflow:hidden}.post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);padding:1px}.post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon-name{color:#c2cbd2;font-size:11px;padding:18px 20px 0;white-space:nowrap;max-width:100%;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}@media (max-width:479px){.post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon-name{display:none}}.post-type-elementor_icons div#elementor-custom-icons-metabox ul li i{font-size:32px}.post-type-elementor_icons #minor-publishing-actions,.post-type-elementor_icons #misc-publishing-actions,.post-type-elementor_icons #tagsdiv-elementor_icon_type{display:none}.column-icons_prefix{width:65%}:root{--color-box-shadow-color:rgba(0,0,0,0.05)}.eps-theme-dark{--color-box-shadow-color:rgba(0,0,0,0.1)}.eps-grid-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;width:100%}.eps-grid-container--no-wrap{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.eps-grid-container--wrap-reverse{-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse}.eps-grid-container--spacing{--grid-row-gutter:calc(-1 * calc(var(--grid-spacing-gutter) * 0.0625rem));width:var(--grid-spacing-width);margin:var(--grid-row-gutter)}.eps-grid-container--spacing>.eps-grid-item{padding:var(--grid-spacing-gutter)}.eps-grid--direction-row{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.eps-grid--direction-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.eps-grid--direction-column{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.eps-grid--direction-column-reverse{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.eps-grid--justify-stretch{-webkit-box-pack:stretch;-ms-flex-pack:stretch;justify-content:stretch}.eps-grid--justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.eps-grid--justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.eps-grid--justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.eps-grid--justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.eps-grid--justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.eps-grid--justify-space-evenly{-webkit-box-pack:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly}.eps-grid--align-content-stretch{-ms-flex-line-pack:stretch;align-content:stretch}.eps-grid--align-content-start{-ms-flex-line-pack:start;align-content:flex-start}.eps-grid--align-content-center{-ms-flex-line-pack:center;align-content:center}.eps-grid--align-content-end{-ms-flex-line-pack:end;align-content:flex-end}.eps-grid--align-content-space-between{-ms-flex-line-pack:justify;align-content:space-between}.eps-grid--align-items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.eps-grid--align-items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.eps-grid--align-items-end{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.eps-grid--align-items-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.eps-grid--align-items-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.eps-grid-item--zero-min-width{min-width:0}@media screen and (min-width:480px){.eps-grid-item-sm{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;-ms-flex-preferred-size:0;flex-basis:0}}@media screen and (min-width:768px){.eps-grid-item-md{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;-ms-flex-preferred-size:0;flex-basis:0}}@media screen and (min-width:1025px){.eps-grid-item-lg{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;-ms-flex-preferred-size:0;flex-basis:0}}@media screen and (min-width:1440px){.eps-grid-item-xl{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;-ms-flex-preferred-size:0;flex-basis:0}}@media screen and (min-width:1600px){.eps-grid-item-xxl{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%;-ms-flex-preferred-size:0;flex-basis:0}}.eps-grid-item-xs-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:8.33333%;-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%}.eps-grid-item-xs-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:16.66667%;-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%}.eps-grid-item-xs-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.eps-grid-item-xs-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:33.33333%;-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%}.eps-grid-item-xs-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:41.66667%;-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%}.eps-grid-item-xs-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.eps-grid-item-xs-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:58.33333%;-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%}.eps-grid-item-xs-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:66.66667%;-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%}.eps-grid-item-xs-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.eps-grid-item-xs-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:83.33333%;-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%}.eps-grid-item-xs-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:91.66667%;-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%}.eps-grid-item-xs-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}@media screen and (min-width:480px){.eps-grid-item-sm-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:8.33333%;-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%}.eps-grid-item-sm-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:16.66667%;-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%}.eps-grid-item-sm-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.eps-grid-item-sm-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:33.33333%;-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%}.eps-grid-item-sm-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:41.66667%;-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%}.eps-grid-item-sm-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.eps-grid-item-sm-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:58.33333%;-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%}.eps-grid-item-sm-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:66.66667%;-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%}.eps-grid-item-sm-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.eps-grid-item-sm-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:83.33333%;-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%}.eps-grid-item-sm-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:91.66667%;-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%}.eps-grid-item-sm-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}}@media screen and (min-width:768px){.eps-grid-item-md-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:8.33333%;-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%}.eps-grid-item-md-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:16.66667%;-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%}.eps-grid-item-md-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.eps-grid-item-md-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:33.33333%;-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%}.eps-grid-item-md-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:41.66667%;-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%}.eps-grid-item-md-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.eps-grid-item-md-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:58.33333%;-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%}.eps-grid-item-md-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:66.66667%;-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%}.eps-grid-item-md-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.eps-grid-item-md-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:83.33333%;-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%}.eps-grid-item-md-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:91.66667%;-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%}.eps-grid-item-md-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}}@media screen and (min-width:1025px){.eps-grid-item-lg-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:8.33333%;-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%}.eps-grid-item-lg-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:16.66667%;-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%}.eps-grid-item-lg-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.eps-grid-item-lg-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:33.33333%;-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%}.eps-grid-item-lg-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:41.66667%;-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%}.eps-grid-item-lg-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.eps-grid-item-lg-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:58.33333%;-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%}.eps-grid-item-lg-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:66.66667%;-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%}.eps-grid-item-lg-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.eps-grid-item-lg-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:83.33333%;-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%}.eps-grid-item-lg-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:91.66667%;-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%}.eps-grid-item-lg-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}}@media screen and (min-width:1440px){.eps-grid-item-xl-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:8.33333%;-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%}.eps-grid-item-xl-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:16.66667%;-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%}.eps-grid-item-xl-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.eps-grid-item-xl-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:33.33333%;-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%}.eps-grid-item-xl-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:41.66667%;-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%}.eps-grid-item-xl-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.eps-grid-item-xl-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:58.33333%;-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%}.eps-grid-item-xl-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:66.66667%;-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%}.eps-grid-item-xl-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.eps-grid-item-xl-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:83.33333%;-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%}.eps-grid-item-xl-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:91.66667%;-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%}.eps-grid-item-xl-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}}@media screen and (min-width:1600px){.eps-grid-item-xxl-1{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:8.33333%;-ms-flex-preferred-size:8.33333%;flex-basis:8.33333%}.eps-grid-item-xxl-2{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:16.66667%;-ms-flex-preferred-size:16.66667%;flex-basis:16.66667%}.eps-grid-item-xxl-3{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:25%;-ms-flex-preferred-size:25%;flex-basis:25%}.eps-grid-item-xxl-4{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:33.33333%;-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%}.eps-grid-item-xxl-5{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:41.66667%;-ms-flex-preferred-size:41.66667%;flex-basis:41.66667%}.eps-grid-item-xxl-6{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:50%;-ms-flex-preferred-size:50%;flex-basis:50%}.eps-grid-item-xxl-7{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:58.33333%;-ms-flex-preferred-size:58.33333%;flex-basis:58.33333%}.eps-grid-item-xxl-8{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:66.66667%;-ms-flex-preferred-size:66.66667%;flex-basis:66.66667%}.eps-grid-item-xxl-9{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:75%;-ms-flex-preferred-size:75%;flex-basis:75%}.eps-grid-item-xxl-10{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:83.33333%;-ms-flex-preferred-size:83.33333%;flex-basis:83.33333%}.eps-grid-item-xxl-11{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:91.66667%;-ms-flex-preferred-size:91.66667%;flex-basis:91.66667%}.eps-grid-item-xxl-12{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;max-width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}}:root{--eps-modal-background-color:#fff;--eps-modal-header-background-color:#58d0f5}.eps-theme-dark{--eps-modal-background-color:#34383c;--eps-modal-header-background-color:#58d0f5}.eps-modal{max-width:43.75rem;background:var(--eps-modal-background-color);border-radius:.1875rem;-webkit-animation:fade-in .4s ease-in both;animation:fade-in .4s ease-in both}.eps-modal__overlay{background:rgba(0,0,0,.5);position:fixed;display:-webkit-box;display:-ms-flexbox;display:flex;top:0;left:0;width:100%;height:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1030}.eps-modal__header{font-size:.875rem;background:var(--eps-modal-header-background-color);height:2.75rem;padding:.625rem 1rem;border-radius:.1875rem}.eps-modal__header,.eps-modal__header .title{color:#fff}.eps-modal__icon{-webkit-margin-end:.625rem;margin-inline-end:.625rem}.eps-modal__body{padding:1.875rem}.eps-modal .eps-tip,.eps-modal__tip{-webkit-padding-start:.75rem;padding-inline-start:.75rem;-webkit-border-start:3px solid #58d0f5;border-inline-start:3px solid #58d0f5}.eps-modal .eps-tip:not(:last-child),.eps-modal__tip:not(:last-child){margin-bottom:1.875rem}.eps-modal .eps-tip:not(:first-child),.eps-modal__section:not(:first-child),.eps-modal__tip:not(:first-child){margin-top:1.875rem}.eps-modal__close-wrapper{-webkit-padding-start:1rem;padding-inline-start:1rem;-webkit-border-start:solid 1px #fff;border-inline-start:solid 1px #fff}.eps-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;--button-line-height:16px;--button-padding-y:0.5em;--button-padding-x:1.5em;--button-primary-background-color:#39b54a;--button-primary-hover-background-color:#33a242;--button-primary-active-background-color:#35a945;--button-primary-color:#fff;--button-secondary-background-color:#a4afb7;--button-secondary-hover-background-color:#96a2ac;--button-secondary-active-background-color:#9ba7b0;--button-secondary-color:#fff;--button-danger-background-color:#b01b1b;--button-danger-hover-background-color:#9a1818;--button-danger-active-background-color:#a31919;--button-danger-color:#fff;--button-cta-background-color:#93003f;--button-cta-hover-background-color:#7a0034;--button-cta-active-background-color:#840038;--button-cta-color:#fff;--button-link-background-color:#58d0f5;--button-link-hover-background-color:#40c9f4;--button-link-active-background-color:#4accf4;--button-link-color:#fff;--button-disabled-background-color:#c2cbd2;--button-disabled-hover-background-color:#b3bec7;--button-disabled-active-background-color:#b9c3cc;--button-disabled-color:#fff;color:var(--button-background-color,currentColor);font-size:var(--button-font-size,inherit);font-weight:500;line-height:var(--button-line-height);cursor:pointer}.eps-button:active{--button-background-color:var(--button-active-background-color,transparent)}.eps-button:hover{--button-background-color:var(--button-hover-background-color)}.eps-theme-dark .eps-button{--button-primary-background-color:#39b54a;--button-primary-color:#fff;--button-primary-hover-background-color:#33a242;--button-primary-active-background-color:#35a945;--button-secondary-background-color:#b4b5b7;--button-secondary-color:#fff;--button-secondary-hover-background-color:#a7a8ab;--button-secondary-active-background-color:#acadb0;--button-cta-background-color:#93003f;--button-cta-hover-background-color:#7a0034;--button-cta-active-background-color:#840038;--button-cta-color:#fff;--button-link-background-color:#58d0f5;--button-link-hover-background-color:#40c9f4;--button-link-active-background-color:#4accf4;--button-link-color:#fff;--button-disabled-background-color:#64666a;--button-disabled-hover-background-color:#58595d;--button-disabled-active-background-color:#5d5e62;--button-disabled-color:#fff}.eps-button--contained{padding:var(--button-padding-y) var(--button-padding-x);background-color:var(--button-background-color,transparent);border:1px solid var(--button-background-color)}.eps-button--contained,.eps-button--contained:hover{color:var(--button-color)}.eps-button--outlined{display:block;padding:var(--button-padding-y) var(--button-padding-x);border:1px solid var(--button-background-color)}.eps-button--contained,.eps-button--outlined{border-radius:.1875rem}.eps-button--underlined{text-decoration:underline}.eps-button--sm{--button-font-size:0.75rem;--button-line-height:14px}.eps-button--lg{--button-font-size:0.9375rem;--button-line-height:18px}.eps-button--primary{--button-color:var(--button-primary-color);--button-background-color:var(--button-primary-background-color);--button-hover-background-color:var(--button-primary-hover-background-color);--button-active-background-color:var(--button-primary-active-background-color)}.eps-button--secondary{--button-color:var(--buton-secondary-color);--button-background-color:var(--button-secondary-background-color);--button-hover-background-color:var(--button-secondary-hover-background-color);--button-active-background-color:var(--button-secondary-active-background-color)}.eps-button--danger{--button-color:var(--buton-danger-color);--button-background-color:var(--button-danger-background-color);--button-hover-background-color:var(--button-danger-hover-background-color);--button-active-background-color:var(--button-danger-active-background-color)}.eps-button--cta{--button-color:var(--button-cta-color);--button-background-color:var(--button-cta-background-color);--button-hover-background-color:var(--button-cta-hover-background-color);--button-active-background-color:var(--button-cta-active-background-color)}.eps-button--link{--button-color:var(--button-link-color);--button-background-color:var(--button-link-background-color);--button-hover-background-color:var(--button-link-hover-background-color);--button-active-background-color:var(--button-link-active-background-color)}.eps-button--disabled,.eps-button[disabled]{--button-color:var(--button-disabled-color);--button-background-color:var(--button-disabled-background-color);--button-hover-background-color:var(--button-disabled-hover-background-color);--button-active-background-color:var(--button-disabled-active-background-color);cursor:default}:root{--e-site-editor-conditions-row-controls-background:#fff;--e-site-editor-input-wrapper-border-color:#f1f3f5;--e-site-editor-input-wrapper-select-color:#556068;--e-site-editor-add-button-background-color:#a4afb7;--e-site-editor-add-button-color-hover-background-color:#6d7882;--e-site-editor-input-wrapper-condition-include-background-color:#a4afb7;--e-site-editor-input-wrapper-condition-exclude-background-color:#c2cbd2;--e-site-editor-input-select2-search-field-color:#495157}.eps-theme-dark{--select2-selection-background-color:tints(600);--e-site-editor-conditions-row-controls-background:#404349;--e-site-editor-input-wrapper-border-color:#404349;--e-site-editor-input-wrapper-select-color:#b4b5b7;--e-site-editor-add-button-background-color:#4c4f56;--e-site-editor-add-button-color-hover-background-color:#404349;--e-site-editor-input-wrapper-condition-include-background-color:#404349;--e-site-editor-input-wrapper-condition-exclude-background-color:#404349;--e-site-editor-input-select2-search-field-color:#fff}.e-site-editor-conditions__header{text-align:center}.e-site-editor-conditions__header-image{display:block;margin:0 auto 2.75rem;width:4.375rem}.e-site-editor-conditions__rows{margin:2.75rem auto;max-width:43.75rem}.e-site-editor-conditions__row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-top:.75rem}.e-site-editor-conditions__remove-condition{color:#c2cbd2;font-size:1.125rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.e-site-editor-conditions__row-controls{overflow:hidden;margin-right:.625rem;background-color:var(--e-site-editor-conditions-row-controls-background);display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-shadow:0 3px 6px var(--color-box-shadow-color);box-shadow:0 3px 6px var(--color-box-shadow-color);border-radius:.1875rem}.e-site-editor-conditions__row-controls--error{border:1px solid #b01b1b}.e-site-editor-conditions__conflict{text-align:center;margin-top:.3125rem;color:#b01b1b}.e-site-editor-conditions__row-controls-inner{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.e-site-editor-conditions__row-controls-inner div{-webkit-box-flex:1;-ms-flex:1;flex:1}.e-site-editor-conditions__add-button-container{text-align:center}.e-site-editor-conditions__add-button{margin-top:2.75rem;background-color:var(--e-site-editor-add-button-background-color);color:#fff;text-transform:uppercase}.e-site-editor-conditions__add-button:hover{background-color:var(--e-site-editor-add-button-color-hover-background-color);color:#fff}.e-site-editor-conditions__footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;position:absolute;bottom:0;right:0;left:0;padding:.5rem;border-top:1px solid var(--hr-color)}.e-site-editor-conditions__input-wrapper{position:relative;border-left:1px solid;border-left-color:var(--e-site-editor-input-wrapper-border-color);border-bottom-color:var(--e-site-editor-input-wrapper-border-color);border-right-color:var(--e-site-editor-input-wrapper-border-color);border-top-color:var(--e-site-editor-input-wrapper-border-color)}.e-site-editor-conditions__input-wrapper:first-child{border:none}.e-site-editor-conditions__input-wrapper select{-moz-appearance:none;appearance:none;-webkit-appearance:none;font-size:.75rem;height:2.5rem;border-width:0;padding:0 .625rem;width:100%;position:relative;color:var(--e-site-editor-input-wrapper-select-color);outline:none;background:transparent}.e-site-editor-conditions__input-wrapper:after{font-family:eicons;content:"\e8ad";font-size:.75rem;pointer-events:none;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:.625rem}.e-site-editor-conditions__input-wrapper .select2-container--default .select2-selection--single{border:none;line-height:2.5rem}.e-site-editor-conditions__input-wrapper .select2-container--default .select2-selection--single .select2-selection__rendered{line-height:2.5rem;font-size:.75rem}.e-site-editor-conditions__input-wrapper .select2-selection{outline:none;background:transparent;height:2.5rem}.e-site-editor-conditions__input-wrapper .select2-selection__arrow{display:none}.e-site-editor-conditions__input-wrapper--condition-type{position:relative}.e-site-editor-conditions__input-wrapper--condition-type:before{font-family:eicons;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);left:.75rem;font-size:.9375rem;color:#fff;pointer-events:none;z-index:1000}.e-site-editor-conditions__input-wrapper--condition-type:after{color:#fff}.e-site-editor-conditions__input-wrapper--condition-type select{text-transform:uppercase;padding-left:2.125rem;width:7.5rem;font-size:.75rem;color:#fff}.e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type=include]:before{content:"\e8cc"}.e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type=include] select{background-color:var(--e-site-editor-input-wrapper-condition-include-background-color)}.e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type=exclude]:before{content:"\e8cd"}.e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type=exclude] select{background-color:var(--e-site-editor-input-wrapper-condition-exclude-background-color)}.select2-search__field{background-color:transparent;color:var(--e-site-editor-input-select2-search-field-color)}.misc-pub-visibility{display:none}.eps-modal__overlay{background:rgba(0,0,0,.8);z-index:9999}.select2-container{z-index:9999}.post-conditions .spinner{margin:0 10px;float:none;visibility:visible}.post-conditions .eps-button--underlined{color:#0073aa}.post-conditions .eps-modal{position:relative;background:#f1f3f5;max-width:1200px;max-height:800px;width:90vw;height:90vh;margin:auto}.post-conditions .eps-modal .eps-modal__body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.post-conditions .eps-modal .eps-h1{font-size:30px;font-weight:300}.post-conditions .eps-modal .eps-text{font-size:18px;line-height:150%;margin:1em 0;color:#a4afb7}.post-conditions .eps-modal .eps-grid-container{width:auto}.post-conditions .eps-modal__header{background:#fff;color:#556068;-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1);padding:2px 15px}.post-conditions .eps-modal__header .eps-app__logo{width:1.75rem;height:1.75rem;line-height:1.75rem;text-align:center;font-size:calc(.4 * 1.75rem);border-radius:50%;color:#fff;background-color:#93003f}.post-conditions .eps-modal__header .eps-text{position:relative;top:2px;font-size:.9375rem;font-weight:700;text-transform:uppercase;color:#6d7882}.post-conditions .eps-modal__header .eps-button{font-size:18px}.post-conditions .eps-modal .e-site-editor-conditions__header{padding-top:5vh}.post-conditions .eps-modal .e-site-editor-conditions__rows{overflow-y:auto;max-height:27vh;margin:0 auto}.post-conditions .eps-modal .e-site-editor-conditions__rows:empty{margin-bottom:30px}.post-conditions .eps-modal .e-site-editor-conditions__rows:not(:empty){margin-bottom:20px}.post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row{margin-top:15px;padding:0 14px}.post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls{border-radius:0}.post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls select{text-transform:none}.post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls select:focus{-webkit-box-shadow:none;box-shadow:none;border:none;color:inherit}.post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls select:hover{color:inherit}.post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls .e-site-editor-conditions__input-wrapper--condition-type select:focus,.post-conditions .eps-modal .e-site-editor-conditions__rows .e-site-editor-conditions__row-controls .e-site-editor-conditions__input-wrapper--condition-type select:hover{color:#fff}.post-conditions .eps-modal .e-site-editor-conditions__add-button{margin-top:0}.post-conditions .eps-modal .e-site-editor-conditions__footer{z-index:1000;border-top:1px solid #d5dadf}#elementor-custom-code.postbox{border:0}#elementor-custom-code .postbox-header{display:none}#elementor-custom-code .inside{padding:0}#elementor-custom-code .inside .elementor-custom-code-meta-box{margin:0}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel{border:1px solid #eceeef;border-bottom-color:#ccd0d4;background:#fff}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-custom-code-panel-placement{padding:5px 40px;margin:10px 0;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:10px}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-custom-code-options-placement{display:none}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-custom-code-options-placement.show,#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel div{display:-webkit-box;display:-ms-flexbox;display:flex}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field i{color:#c2cbd2;font-size:15px}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field select{height:20px;margin-top:7px}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field select#location{direction:ltr}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field.priority{margin-left:auto}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field.location{-webkit-margin-end:10px;margin-inline-end:10px}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-label{font-weight:500;font-size:14px;line-height:16px;color:#6d7882}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-label:nth-child(2n){margin-right:20px}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-label:nth-child(odd){margin-right:5px}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-checkboxes{padding-top:18px}#elementor-custom-code .inside .elementor-custom-code-meta-box .elementor-custom-code-panel .elementor-field-checkboxes .label{position:relative;top:-5px}#elementor-custom-code .inside .elementor-custom-code-codemirror-holder{border:1px solid #eceeef;background:#f7f7f7;padding:40px}#elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-field-label{margin:0}#elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror{border:1px solid #ccd0d4;resize:vertical;overflow:auto;max-width:100%}#elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror .CodeMirror-scroll,#elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror .CodeMirror.CodeMirror-wrap,#elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror .elementor-field-textarea{height:100%}#elementor-custom-code .inside .elementor-custom-code-codemirror-holder .elementor-custom-code-codemirror .CodeMirror-sizer{min-height:300px!important;border-right:0}.post-type-elementor_snippet #minor-publishing-actions,.post-type-elementor_snippet #save-action{display:none}.e--ua-safari #elementor-custom-code .elementor-custom-code-codemirror{background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.e--ua-safari #elementor-custom-code .elementor-custom-code-codemirror .elementor-field-textarea{width:calc(100% - 8px)}.e--ua-safari #elementor-custom-code .elementor-custom-code-codemirror .CodeMirror-sizer{-webkit-box-sizing:border-box;box-sizing:border-box}@media (max-height:825px),(max-width:850px){.post-conditions .eps-modal{width:100vw;height:90vh}.post-conditions .eps-modal .e-site-editor-conditions__header{padding-top:0}.post-conditions .eps-modal .e-site-editor-conditions__rows{max-height:14vh}.post-conditions .eps-modal .e-site-editor-conditions__header-image{margin:0 auto}}@media (max-height:666px),(max-width:590px){.post-conditions .eps-modal .eps-modal__body{overflow:auto;height:calc(100vh - 200px)}.post-conditions .eps-modal .eps-modal__body .e-site-editor-conditions__footer{background:#f1f3f5}}assets/css/widget-forms.min.css000064400000015201150755004320012541 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-button.elementor-hidden,.elementor-hidden{display:none}.e-form__step{width:100%}.e-form__step:not(.elementor-hidden){display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.e-form__buttons{-ms-flex-wrap:wrap;flex-wrap:wrap}.e-form__buttons,.e-form__buttons__wrapper{display:-webkit-box;display:-ms-flexbox;display:flex}.e-form__indicators{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:nowrap;flex-wrap:nowrap;font-size:13px;margin-bottom:var(--e-form-steps-indicators-spacing)}.e-form__indicators,.e-form__indicators__indicator{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.e-form__indicators__indicator{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-preferred-size:0;flex-basis:0;padding:0 var(--e-form-steps-divider-gap)}.e-form__indicators__indicator__progress{width:100%;position:relative;background-color:var(--e-form-steps-indicator-progress-background-color);border-radius:var(--e-form-steps-indicator-progress-border-radius);overflow:hidden}.e-form__indicators__indicator__progress__meter{width:var(--e-form-steps-indicator-progress-meter-width,0);height:var(--e-form-steps-indicator-progress-height);line-height:var(--e-form-steps-indicator-progress-height);padding-right:15px;border-radius:var(--e-form-steps-indicator-progress-border-radius);background-color:var(--e-form-steps-indicator-progress-color);color:var(--e-form-steps-indicator-progress-meter-color);text-align:right;-webkit-transition:width .1s linear;-o-transition:width .1s linear;transition:width .1s linear}.e-form__indicators__indicator:first-child{padding-left:0}.e-form__indicators__indicator:last-child{padding-right:0}.e-form__indicators__indicator--state-inactive{color:var(--e-form-steps-indicator-inactive-primary-color,#c2cbd2)}.e-form__indicators__indicator--state-inactive [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-inactive-secondary-color,#fff)}.e-form__indicators__indicator--state-inactive object,.e-form__indicators__indicator--state-inactive svg{fill:var(--e-form-steps-indicator-inactive-primary-color,#c2cbd2)}.e-form__indicators__indicator--state-active{color:var(--e-form-steps-indicator-active-primary-color,#39b54a);border-color:var(--e-form-steps-indicator-active-secondary-color,#fff)}.e-form__indicators__indicator--state-active [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-active-secondary-color,#fff)}.e-form__indicators__indicator--state-active object,.e-form__indicators__indicator--state-active svg{fill:var(--e-form-steps-indicator-active-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed{color:var(--e-form-steps-indicator-completed-secondary-color,#fff)}.e-form__indicators__indicator--state-completed [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-completed-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed .e-form__indicators__indicator__label{color:var(--e-form-steps-indicator-completed-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed .e-form__indicators__indicator--shape-none{color:var(--e-form-steps-indicator-completed-primary-color,#39b54a);background-color:initial}.e-form__indicators__indicator--state-completed object,.e-form__indicators__indicator--state-completed svg{fill:var(--e-form-steps-indicator-completed-secondary-color,#fff)}.e-form__indicators__indicator__icon{width:var(--e-form-steps-indicator-padding,30px);height:var(--e-form-steps-indicator-padding,30px);font-size:var(--e-form-steps-indicator-icon-size);border-width:1px;border-style:solid;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden;margin-bottom:10px}.e-form__indicators__indicator__icon img,.e-form__indicators__indicator__icon object,.e-form__indicators__indicator__icon svg{width:var(--e-form-steps-indicator-icon-size);height:auto}.e-form__indicators__indicator__icon .e-font-icon-svg{height:1em}.e-form__indicators__indicator__number{width:var(--e-form-steps-indicator-padding,30px);height:var(--e-form-steps-indicator-padding,30px);border-width:1px;border-style:solid;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px}.e-form__indicators__indicator--shape-circle{border-radius:50%}.e-form__indicators__indicator--shape-square{border-radius:0}.e-form__indicators__indicator--shape-rounded{border-radius:5px}.e-form__indicators__indicator--shape-none{border:0}.e-form__indicators__indicator__label{text-align:center}.e-form__indicators__indicator__separator{width:100%;height:var(--e-form-steps-divider-width);background-color:#c2cbd2}.e-form__indicators--type-icon,.e-form__indicators--type-icon_text,.e-form__indicators--type-number,.e-form__indicators--type-number_text{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.e-form__indicators--type-icon .e-form__indicators__indicator__separator,.e-form__indicators--type-icon_text .e-form__indicators__indicator__separator,.e-form__indicators--type-number .e-form__indicators__indicator__separator,.e-form__indicators--type-number_text .e-form__indicators__indicator__separator{margin-top:calc(var(--e-form-steps-indicator-padding, 30px) / 2 - var(--e-form-steps-divider-width, 1px) / 2)}.elementor-field-type-hidden{display:none}.elementor-field-type-html{display:inline-block}.elementor-login .elementor-lost-password,.elementor-login .elementor-remember-me{font-size:.85em}.elementor-field-type-recaptcha_v3 .elementor-field-label{display:none}.elementor-field-type-recaptcha_v3 .grecaptcha-badge{z-index:1}.elementor-button .elementor-form-spinner{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.elementor-form .elementor-button>span{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-form .elementor-button .elementor-button-text{white-space:normal;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.elementor-form .elementor-button svg{height:auto}.elementor-form .elementor-button .e-font-icon-svg{height:1em}assets/css/frontend-rtl.css000064400001401407150755004320011776 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
@charset "UTF-8";
.elementor-bg-transform .elementor-bg {
  will-change: transform; }

.elementor-bg-transform-zoom-in:hover .elementor-bg {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2); }

.elementor-bg-transform-zoom-out .elementor-bg {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2); }

.elementor-bg-transform-zoom-out:hover .elementor-bg {
  -webkit-transform: scale(1);
      -ms-transform: scale(1);
          transform: scale(1); }

.elementor-bg-transform-move-left .elementor-bg {
  -webkit-transform: scale(1.2) translateX(8%);
      -ms-transform: scale(1.2) translateX(8%);
          transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-left:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateX(-8%);
      -ms-transform: scale(1.2) translateX(-8%);
          transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right .elementor-bg {
  -webkit-transform: scale(1.2) translateX(-8%);
      -ms-transform: scale(1.2) translateX(-8%);
          transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateX(8%);
      -ms-transform: scale(1.2) translateX(8%);
          transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-up .elementor-bg {
  -webkit-transform: scale(1.2) translateY(8%);
      -ms-transform: scale(1.2) translateY(8%);
          transform: scale(1.2) translateY(8%); }

.elementor-bg-transform-move-up:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateY(-8%);
      -ms-transform: scale(1.2) translateY(-8%);
          transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down .elementor-bg {
  -webkit-transform: scale(1.2) translateY(-8%);
      -ms-transform: scale(1.2) translateY(-8%);
          transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateY(8%);
      -ms-transform: scale(1.2) translateY(8%);
          transform: scale(1.2) translateY(8%); }

/*---------------------------------------------------------------------------*/
.elementor-animated-content {
  --translate: 0, 0; }
  .elementor-animated-content:hover .elementor-animated-item--grow {
    -webkit-transform: scale(1.1);
        -ms-transform: scale(1.1);
            transform: scale(1.1); }
  .elementor-animated-content:hover .elementor-animated-item--shrink {
    -webkit-transform: scale(0.85);
        -ms-transform: scale(0.85);
            transform: scale(0.85); }
  .elementor-animated-content:hover .elementor-animated-item--shrink-contained {
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1); }
  .elementor-animated-content:hover .elementor-animated-item--enter-zoom-out, .elementor-animated-content:hover .elementor-animated-item--enter-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-in {
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1);
    opacity: 1; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out, .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-out {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out {
    -webkit-transform: scale(0.2);
        -ms-transform: scale(0.2);
            transform: scale(0.2); }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in {
    -webkit-transform: scale(2);
        -ms-transform: scale(2);
            transform: scale(2); }
  .elementor-animated-content:hover .elementor-animated-item--enter-from-right, .elementor-animated-content:hover .elementor-animated-item--enter-from-left, .elementor-animated-content:hover .elementor-animated-item--enter-from-top, .elementor-animated-content:hover .elementor-animated-item--enter-from-bottom {
    opacity: 1;
    -webkit-transform: translateY(0) translateX(0);
        -ms-transform: translateY(0) translateX(0);
            transform: translateY(0) translateX(0); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right {
    -webkit-transform: translateX(1000px);
        -ms-transform: translateX(1000px);
            transform: translateX(1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-left {
    -webkit-transform: translateX(-1000px);
        -ms-transform: translateX(-1000px);
            transform: translateX(-1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-top {
    -webkit-transform: translateY(-600px);
        -ms-transform: translateY(-600px);
            transform: translateY(-600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    -webkit-transform: translateY(600px);
        -ms-transform: translateY(600px);
            transform: translateY(600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right, .elementor-animated-content:hover .elementor-animated-item--exit-to-left, .elementor-animated-content:hover .elementor-animated-item--exit-to-top, .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-right {
    -webkit-transform: translateX(30px);
        -ms-transform: translateX(30px);
            transform: translateX(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-left {
    -webkit-transform: translateX(-30px);
        -ms-transform: translateX(-30px);
            transform: translateX(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-up {
    -webkit-transform: translateY(-30px);
        -ms-transform: translateY(-30px);
            transform: translateY(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-down {
    -webkit-transform: translateY(30px);
        -ms-transform: translateY(30px);
            transform: translateY(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-right {
    --translate: 8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-left {
    --translate: -8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-top {
    --translate: 0, -8%; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-bottom {
    --translate: 0, 8%; }
  .elementor-animated-content *[class^="elementor-animated-item"] {
    will-change: transform, opacity; }
  .elementor-animated-content .elementor-animated-item--shrink-contained {
    -webkit-transform: scale(1.17);
        -ms-transform: scale(1.17);
            transform: scale(1.17); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-in {
    -webkit-transform: scale(0.2);
        -ms-transform: scale(0.2);
            transform: scale(0.2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out {
    -webkit-transform: scale(2);
        -ms-transform: scale(2);
            transform: scale(2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out, .elementor-animated-content .elementor-animated-item--enter-zoom-in, .elementor-animated-content .elementor-animated-item--fade-in {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-zoom-out, .elementor-animated-content .elementor-animated-item--exit-zoom-in, .elementor-animated-content .elementor-animated-item--fade-out {
    opacity: 1;
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1); }
  .elementor-animated-content .elementor-animated-item--enter-from-right {
    -webkit-transform: translateX(1000px);
        -ms-transform: translateX(1000px);
            transform: translateX(1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-left {
    -webkit-transform: translateX(-1000px);
        -ms-transform: translateX(-1000px);
            transform: translateX(-1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-top {
    -webkit-transform: translateY(-600px);
        -ms-transform: translateY(-600px);
            transform: translateY(-600px); }
  .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    -webkit-transform: translateY(500px);
        -ms-transform: translateY(500px);
            transform: translateY(500px); }
  .elementor-animated-content .elementor-animated-item--enter-from-right, .elementor-animated-content .elementor-animated-item--enter-from-left, .elementor-animated-content .elementor-animated-item--enter-from-top, .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-to-right, .elementor-animated-content .elementor-animated-item--exit-to-left, .elementor-animated-content .elementor-animated-item--exit-to-top, .elementor-animated-content .elementor-animated-item--exit-to-bottom {
    opacity: 1;
    -webkit-transform: translateY(0) translateX(0);
        -ms-transform: translateY(0) translateX(0);
            transform: translateY(0) translateX(0); }
  .elementor-animated-content .elementor-animated-item--move-contained-right, .elementor-animated-content .elementor-animated-item--move-contained-left, .elementor-animated-content .elementor-animated-item--move-contained-top, .elementor-animated-content .elementor-animated-item--move-contained-bottom {
    -webkit-transform: scale(1.2) translate(var(--translate));
        -ms-transform: scale(1.2) translate(var(--translate));
            transform: scale(1.2) translate(var(--translate)); }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover {
  outline: 1px solid #fec449; }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings {
  background-image: -webkit-gradient(linear, left bottom, left top, from(#feb416), to(#fec449));
  background-image: -webkit-linear-gradient(bottom, #feb416, #fec449);
  background-image: -o-linear-gradient(bottom, #feb416, #fec449);
  background-image: linear-gradient(to top, #feb416, #fec449); }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover {
    background-color: #feb416; }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save {
    display: none; }

body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  width: 100%;
  padding: 0; }

body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  padding: 0; }

.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart {
  margin: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap; }

.woocommerce div.product.elementor .quantity .qty {
  vertical-align: top;
  margin-left: 0; }

.woocommerce div.product.elementor .quantity + .button {
  margin-right: 10px; }

.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input {
  height: 100%; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
  margin-left: initial; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
  -ms-flex-preferred-size: auto;
      flex-basis: auto; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-left: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%; }

@media (max-width: 1024px) {
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-left: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    -ms-flex-preferred-size: auto;
        flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-left: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      -ms-flex-preferred-size: 100%;
          flex-basis: 100%; } }

@media (max-width: 767px) {
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-left: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    -ms-flex-preferred-size: auto;
        flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-left: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      -ms-flex-preferred-size: 100%;
          flex-basis: 100%; } }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button {
  background-color: #5bc0de; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button {
  background-color: #5cb85c; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button {
  background-color: #f0ad4e; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button {
  background-color: #d9534f; }

.elementor-widget-wc-add-to-cart .quantity {
  display: inline-block; }

.elementor-widget-wc-add-to-cart.elementor-align-center form.cart {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-widget-wc-add-to-cart.elementor-align-right form.cart {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-widget-wc-add-to-cart.elementor-align-left form.cart {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.woocommerce div.product.elementor {
  /*  Reset WC tabs style  */
  /*  End Reset WC tabs style  */ }
  .woocommerce div.product.elementor ul.tabs:before {
    position: static;
    content: none;
    width: auto;
    bottom: auto;
    left: auto;
    border-bottom: 0;
    z-index: auto; }
  .woocommerce div.product.elementor ul.tabs {
    margin: 0; }
    .woocommerce div.product.elementor ul.tabs li {
      padding: 0; }
      .woocommerce div.product.elementor ul.tabs li a {
        padding: .8em 1.2em;
        line-height: 1; }
    .woocommerce div.product.elementor ul.tabs li:after,
    .woocommerce div.product.elementor ul.tabs li:before {
      border: 0;
      position: static;
      bottom: auto;
      width: auto;
      height: auto;
      content: none;
      -webkit-box-sizing: border-box;
              box-sizing: border-box; }
  .woocommerce div.product.elementor .woocommerce-tabs .panel {
    margin: 0;
    padding: 20px;
    border-radius: 0;
    border-width: 0;
    border-top: 1px solid #d3ced2;
    -webkit-box-shadow: none;
            box-shadow: none;
    margin-top: -1px; }

.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,
.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins {
  display: block; }

.elementor-widget-woocommerce-product-meta .detail-container {
  position: relative; }
  .elementor-widget-woocommerce-product-meta .detail-container:after {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%; }

.elementor-widget-woocommerce-product-meta .detail-label {
  font-weight: bold; }

.elementor-woo-meta--view-inline .product_meta {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap; }
  .elementor-woo-meta--view-inline .product_meta .detail-container:after {
    width: auto;
    left: auto;
    right: auto;
    position: absolute;
    height: 100%;
    top: 50%;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%);
    border-top: 0;
    border-bottom: 0;
    border-right: 0;
    border-left-width: 1px;
    border-style: solid;
    left: -8px; }

.elementor-woo-meta--view-table .product_meta {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column; }
  .elementor-woo-meta--view-table .product_meta .detail-container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .elementor-woo-meta--view-table .product_meta .detail-label {
    min-width: 108px; }

.elementor-woo-meta--view-stacked .product_meta .detail-container {
  display: block; }

.woocommerce div.product.elementor .woocommerce-product-rating {
  margin-bottom: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.woocommerce div.product.elementor .star-rating {
  margin-top: 0; }

.elementor-product-rating--align-left .woocommerce-product-rating {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor-product-rating--align-right .woocommerce-product-rating {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-product-rating--align-center .woocommerce-product-rating {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link {
  margin-right: auto; }

.elementor-products-grid ul.products.elementor-grid {
  display: grid;
  margin: 0;
  grid-column-gap: 20px;
  grid-row-gap: 40px; }
  .elementor-products-grid ul.products.elementor-grid:before, .elementor-products-grid ul.products.elementor-grid:after {
    content: none;
    display: none; }
  .elementor-products-grid ul.products.elementor-grid li.product {
    width: auto;
    padding: 0;
    margin: 0;
    float: none; }
    .elementor-products-grid ul.products.elementor-grid li.product .onsale {
      padding: 0;
      display: none; }
    .elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link {
      display: block;
      position: relative; }

.elementor-products-grid:not(.show-heading-yes) .products > h2 {
  display: none; }

.elementor-products-grid nav.woocommerce-pagination {
  margin-top: 40px; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul {
  border: none 0; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li {
  border-right: none 0;
  border-left: none 0; }

.elementor-product-loop-item--align-left ul.products li.product .star-rating {
  margin-right: auto; }

.elementor-product-loop-item--align-right ul.products li.product .star-rating {
  margin-left: auto; }

.elementor-product-loop-item--align-center ul.products li.product .star-rating {
  margin-right: auto;
  margin-left: auto; }

.woocommerce .elementor-element.elementor-products-grid ul.products li.product {
  width: auto; }

.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,
.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product {
  width: auto; }

@media (min-width: 1025px) {
  .elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products {
    grid-template-columns: repeat(2, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products {
    grid-template-columns: repeat(3, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products {
    grid-template-columns: repeat(4, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products {
    grid-template-columns: repeat(5, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products {
    grid-template-columns: repeat(6, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products {
    grid-template-columns: repeat(7, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products {
    grid-template-columns: repeat(8, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products {
    grid-template-columns: repeat(9, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products {
    grid-template-columns: repeat(10, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products {
    grid-template-columns: repeat(11, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products {
    grid-template-columns: repeat(12, 1fr); } }

@media (max-width: 1024px) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(3, 1fr); } }

@media (max-width: 767px) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(2, 1fr); } }

.elementor.product .woocommerce-product-gallery__trigger + .woocommerce-product-gallery__wrapper {
  overflow: hidden; }

.woocommerce .elementor-widget-woocommerce-product-images span.onsale {
  padding: 0; }

.elementor-menu-cart__wrapper {
  text-align: var(--main-alignment, right); }

.elementor-menu-cart__toggle_wrapper {
  display: inline-block;
  position: relative; }

.elementor-menu-cart__toggle {
  display: inline-block; }
  .elementor-menu-cart__toggle .elementor-button {
    background-color: var(--toggle-button-background-color, transparent);
    color: var(--toggle-button-text-color, #818a91);
    border-style: var(--toggle-button-border-type, solid);
    border-width: var(--toggle-button-border-width, 1px);
    border-color: var(--toggle-button-border-color, #818a91);
    border-radius: var(--toggle-button-border-radius, 0px);
    display: -webkit-inline-box;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    padding: var(--toggle-icon-padding, 12px 24px); }
    .elementor-menu-cart__toggle .elementor-button:hover {
      color: var(--toggle-button-hover-text-color, #818a91);
      background-color: var(--toggle-button-hover-background-color, transparent);
      border-color: var(--toggle-button-hover-border-color, #818a91); }
      .elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon {
        color: var(--toggle-button-icon-hover-color, #818a91); }
  .elementor-menu-cart__toggle .elementor-button-text {
    margin-left: 0.3em; }
  .elementor-menu-cart__toggle .elementor-button-icon {
    position: relative;
    -webkit-transition: color 0.1s;
    -o-transition: color 0.1s;
    transition: color 0.1s;
    color: var(--toggle-button-icon-color, #818a91);
    font-size: var(--toggle-icon-size, inherit); }

.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: block;
  position: absolute;
  min-width: 1.6em;
  height: 1.6em;
  line-height: 1.5em;
  top: -0.7em;
  left: -0.7em;
  border-radius: 100%;
  color: var(--items-indicator-text-color, #fff);
  background-color: var(--items-indicator-background-color, #d9534f);
  text-align: center;
  font-size: 10px; }

.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: inline-block;
  font-weight: normal; }

.elementor-menu-cart__container {
  -webkit-transform: scale(1);
      -ms-transform: scale(1);
          transform: scale(1);
  overflow: hidden;
  position: fixed;
  z-index: 9998;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgba(0, 0, 0, 0.25);
  -webkit-transition: background-color 0.4s, -webkit-transform 0s;
  transition: background-color 0.4s, -webkit-transform 0s;
  -o-transition: background-color 0.4s, transform 0s;
  transition: background-color 0.4s, transform 0s;
  transition: background-color 0.4s, transform 0s, -webkit-transform 0s;
  text-align: right; }

.elementor-menu-cart__main {
  position: fixed;
  left: var(--side-cart-alignment-left, 0);
  right: var(--side-cart-alignment-right, auto);
  -webkit-transform: translateX(0);
      -ms-transform: translateX(0);
          transform: translateX(0);
  top: 0;
  bottom: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch;
  font-size: 14px;
  min-height: 200px;
  width: 350px;
  max-width: 100%;
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s;
  padding: var(--cart-padding, 20px 30px);
  background-color: var(--cart-background-color, #fff);
  -webkit-box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
          box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
  border-style: var(--cart-border-style, none);
  border-color: var(--cart-border-color, initial);
  border-radius: var(--cart-border-radius, 0px);
  margin-top: var(--mini-cart-spacing, 0px); }
  .elementor-menu-cart__main .widget_shopping_cart_content {
    height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }
    .elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message {
      color: var(--empty-message-color, inherit);
      text-align: var(--empty-message-alignment, right); }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
  background-color: transparent;
  -webkit-transform: scale(0);
      -ms-transform: scale(0);
          transform: scale(0);
  -webkit-transition: background-color 0.4s, -webkit-transform 0s 0.4s;
  transition: background-color 0.4s, -webkit-transform 0s 0.4s;
  -o-transition: background-color 0.4s, transform 0s 0.4s;
  transition: background-color 0.4s, transform 0s 0.4s;
  transition: background-color 0.4s, transform 0s 0.4s, -webkit-transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button {
    display: none; }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
  overflow: hidden;
  opacity: 0;
  -webkit-transform: var(--side-cart-alignment-transform, translateX(-100%));
      -ms-transform: var(--side-cart-alignment-transform, translateX(-100%));
          transform: var(--side-cart-alignment-transform, translateX(-100%)); }

.elementor-menu-cart__close-button {
  width: var(--cart-close-icon-size, 25px);
  height: var(--cart-close-icon-size, 25px);
  position: relative;
  margin: 0 0 20px;
  -ms-flex-item-align: end;
      align-self: flex-end;
  cursor: pointer;
  display: inline-block;
  font-family: eicons;
  font-size: 20px;
  line-height: 1;
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s; }
  .elementor-menu-cart__close-button:before, .elementor-menu-cart__close-button:after {
    content: '';
    position: absolute;
    height: 3px;
    width: 100%;
    top: 50%;
    left: 0;
    margin-top: -1px;
    background: var(--cart-close-button-color, #818a91);
    border-radius: 1px;
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s; }
  .elementor-menu-cart__close-button:hover::before, .elementor-menu-cart__close-button:hover::after {
    background: var(--cart-close-button-hover-color, #818a91); }
  .elementor-menu-cart__close-button::before {
    -webkit-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
            transform: rotate(45deg); }
  .elementor-menu-cart__close-button::after {
    -webkit-transform: rotate(-45deg);
        -ms-transform: rotate(-45deg);
            transform: rotate(-45deg); }

.elementor-menu-cart__products {
  max-height: calc(100vh - 250px);
  overflow: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch; }

.elementor-menu-cart__product {
  display: grid;
  grid-template-columns: 28% auto;
  grid-template-rows: var(--price-quantity-position--grid-template-rows, auto auto);
  position: relative;
  border-width: 0 0 var(--divider-width, 1px);
  border-bottom-style: var(--divider-style, solid);
  border-bottom-color: var(--divider-color, #D4D4D4); }
  .elementor-menu-cart__product .variation {
    display: grid;
    grid-template-columns: -webkit-max-content auto;
    grid-template-columns: max-content auto;
    margin: 10px 0; }
    .elementor-menu-cart__product .variation dt {
      grid-column-start: 1; }
    .elementor-menu-cart__product .variation dd {
      grid-column-start: 2;
      -webkit-margin-start: 5px;
              margin-inline-start: 5px; }
      .elementor-menu-cart__product .variation dd p {
        margin-bottom: 0; }
  .elementor-menu-cart__product-image {
    grid-row-start: 1;
    grid-row-end: 3;
    width: 100%; }
    .elementor-menu-cart__product-image img, .elementor-menu-cart__product-image a {
      display: block; }
  .elementor-menu-cart__product-name {
    grid-column-start: 2;
    grid-column-end: 3;
    margin: 0; }
    .elementor-menu-cart__product-name a {
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
  .elementor-menu-cart__product-price {
    grid-column-start: 2;
    grid-column-end: 3;
    -ms-flex-item-align: var(--price-quantity-position--align-self, end);
        align-self: var(--price-quantity-position--align-self, end);
    font-weight: 300;
    color: var(--product-price-color, #D4D4D4); }
  .elementor-menu-cart__product-name, .elementor-menu-cart__product-price {
    font-size: 14px;
    padding-right: 20px; }
  .elementor-menu-cart__product-remove {
    color: #818a91;
    width: var(--remove-item-button-size, 22px);
    height: var(--remove-item-button-size, 22px);
    border-radius: var(--remove-item-button-size, 22px);
    border: 1px solid var(--remove-item-button-color, #D4D4D4);
    text-align: center;
    overflow: hidden;
    position: absolute;
    left: 0;
    bottom: 20px;
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s; }
    .elementor-menu-cart__product-remove:hover {
      border: 1px solid var(--remove-item-button-hover-color, #D4D4D4); }
      .elementor-menu-cart__product-remove:hover::before, .elementor-menu-cart__product-remove:hover::after {
        background: var(--remove-item-button-hover-color, #D4D4D4); }
    .elementor-menu-cart__product-remove:before, .elementor-menu-cart__product-remove:after {
      content: '';
      position: absolute;
      height: 1px;
      width: 50%;
      top: 50%;
      left: 25%;
      margin-top: -1px;
      background: var(--remove-item-button-color, #D4D4D4);
      z-index: 1;
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
    .elementor-menu-cart__product-remove::before {
      -webkit-transform: rotate(45deg);
          -ms-transform: rotate(45deg);
              transform: rotate(45deg); }
    .elementor-menu-cart__product-remove::after {
      -webkit-transform: rotate(-45deg);
          -ms-transform: rotate(-45deg);
              transform: rotate(-45deg); }
    .elementor-menu-cart__product-remove > a {
      display: block;
      z-index: 2;
      width: 100%;
      height: 100%;
      overflow: hidden;
      opacity: 0;
      position: absolute; }
      .elementor-menu-cart__product-remove > a.remove_from_cart_button {
        display: var(--remove-from-cart-button, block); }
      .elementor-menu-cart__product-remove > a.elementor_remove_from_cart_button {
        display: var(--elementor-remove-from-cart-button, none); }

.elementor-menu-cart__product:last-child {
  border: none; }

.elementor-menu-cart__product:not(:first-of-type), .elementor-menu-cart__subtotal, .elementor-menu-cart__footer-buttons {
  padding-top: var(--product-divider-gap, 20px); }

.elementor-menu-cart__product {
  padding-left: 30px; }

.elementor-menu-cart__product, .elementor-menu-cart__subtotal {
  padding-bottom: var(--product-divider-gap, 20px); }

.elementor-menu-cart__subtotal {
  font-size: 20px;
  text-align: var(--menu-cart-subtotal-text-align, center);
  font-weight: 600;
  color: var(--menu-cart-subtotal-color, inherit);
  border-style: var(--subtotal-divider-style, solid);
  border-width: var(--subtotal-divider-top-width, 1px) var(--subtotal-divider-right-width, 1px) var(--subtotal-divider-bottom-width, 1px) var(--subtotal-divider-left-width, 1px);
  border-color: var(--subtotal-divider-color, #D4D4D4); }

.elementor-menu-cart__footer-buttons {
  font-size: 20px;
  text-align: var(--cart-footer-buttons-alignment-text-align, center);
  display: var(--cart-footer-buttons-alignment-display, grid);
  grid-template-columns: var(--cart-footer-layout, 1fr 1fr);
  margin-top: var(--cart-buttons-position-margin, 0);
  grid-column-gap: var(--space-between-buttons, 10px);
  grid-row-gap: var(--space-between-buttons, 10px); }
  .elementor-menu-cart__footer-buttons .elementor-button {
    display: inline-block;
    border-radius: var(--cart-footer-buttons-border-radius, 0px);
    height: -webkit-fit-content;
    height: -moz-fit-content;
    height: fit-content; }
    .elementor-menu-cart__footer-buttons .elementor-button--view-cart {
      display: var(--view-cart-button-display, inline-block);
      color: var(--view-cart-button-text-color, #fff);
      padding: var(--view-cart-button-padding, 15px);
      background-color: var(--view-cart-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover {
        color: var(--view-cart-button-hover-text-color, #fff);
        background-color: var(--view-cart-button-hover-background-color, #818a91); }
    .elementor-menu-cart__footer-buttons .elementor-button--checkout {
      display: var(--checkout-button-display, inline-block);
      color: var(--checkout-button-text-color, #fff);
      padding: var(--checkout-button-padding, 15px);
      background-color: var(--checkout-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--checkout:hover {
        color: var(--checkout-button-hover-text-color, #fff);
        background-color: var(--checkout-button-hover-background-color, #818a91); }
    @media (max-width: 767px) {
      .elementor-menu-cart__footer-buttons .elementor-button {
        padding-left: 10px;
        padding-right: 10px; } }

/* The following is all to apply settings from the controls */
.elementor-widget-woocommerce-menu-cart {
  /* Fix to prevent the cart modal flash when using the typography controls */
  /* Fix for short-lived legacy cart type */ }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before {
    content: none; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e3'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e4'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e5'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e6'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e7'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e8'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e9'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8ea'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8eb'; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product {
    padding-left: 0;
    padding-right: 0;
    grid-template-columns: 25% auto; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove {
    top: 0;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove {
    top: 20px;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove {
    -webkit-transform: translateY(50%);
        -ms-transform: translateY(50%);
            transform: translateY(50%);
    bottom: 50%; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove {
    top: auto;
    bottom: 20px; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart {
    /* The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
			and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
      position: absolute;
      z-index: 89;
      width: auto;
      height: auto;
      overflow: visible;
      top: 100%;
      bottom: auto;
      background: none;
      min-width: 330px;
      right: 0;
      left: auto;
      -webkit-transform: scale(1);
          -ms-transform: scale(1);
              transform: scale(1);
      -webkit-transition: background-color 0.4s, -webkit-transform 0s;
      transition: background-color 0.4s, -webkit-transform 0s;
      -o-transition: background-color 0.4s, transform 0s;
      transition: background-color 0.4s, transform 0s;
      transition: background-color 0.4s, transform 0s, -webkit-transform 0s; }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main {
      width: auto;
      height: auto;
      position: relative;
      top: auto;
      bottom: auto;
      right: auto;
      left: auto;
      overflow: visible;
      -webkit-transform: translateY(0);
          -ms-transform: translateY(0);
              transform: translateY(0);
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
    @media (max-width: 767px) {
      .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
        min-width: 300px; } }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
    -webkit-transform: scale(0);
        -ms-transform: scale(0);
            transform: scale(0);
    -webkit-transition: background-color 0.4s, -webkit-transform 0s 0.4s;
    transition: background-color 0.4s, -webkit-transform 0s 0.4s;
    -o-transition: background-color 0.4s, transform 0s 0.4s;
    transition: background-color 0.4s, transform 0s 0.4s;
    transition: background-color 0.4s, transform 0s 0.4s, -webkit-transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
    opacity: 0;
    -webkit-transform: translateY(-10px);
        -ms-transform: translateY(-10px);
            transform: translateY(-10px); }
  .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown {
    opacity: 1;
    /* This keeps mini-cart panels above other widgets so there's no flash when using the typography controls.
		The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
		and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container {
      z-index: 9998; }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart {
      z-index: 89; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container {
    display: none; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-checkout-page {
  background-color: transparent;
  font-family: Roboto, sans-serif;
  font-size: 14px;
  line-height: 21px;
  color: #818a91;
  /* one column layout */
  /* override theme defaults for themes that have hover background colors on these elements. The hover background colors do not play well with the widget's initial design. */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-checkout-page ::-webkit-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page ::-moz-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page ::-ms-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > td,
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > th {
    background-color: transparent; }
  .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: #f7f7f7;
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: #f7f7f7;
      border-color: var(--forms-fields-focus-border-color, initial);
      -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
           -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
              transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below {
    background-color: #f7f7f7; }
  .elementor-widget-woocommerce-checkout-page .e-description {
    color: var(--sections-descriptions-color, #818a91);
    padding-bottom: var(--sections-descriptions-spacing, 0px);
    font-size: 14px;
    font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section {
    margin-bottom: 24px; }
    .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title {
      text-align: var(--login-title-alignment, right); }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge {
    margin-top: var(--sections-secondary-title-spacing, 24px);
    margin-bottom: 15px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor {
    margin-top: var(--sections-secondary-title-spacing, 24px); }
  .elementor-widget-woocommerce-checkout-page .e-coupon-box {
    margin-top: 24px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description {
    color: var(--forms-labels-color, #818a91);
    margin-bottom: var(--forms-label-spacing, 3px); }
  .elementor-widget-woocommerce-checkout-page .e-login-wrap {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-start {
      -webkit-box-flex: 75%;
          -ms-flex: 75%;
              flex: 75%; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
      -webkit-box-flex: 20%;
          -ms-flex: 20%;
              flex: 20%;
      text-align: left; }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .e-login-wrap {
        display: block; }
        .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
          text-align: right;
          margin-top: 15px; }
          .elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label {
            display: none; } }
  .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    margin-top: 6px; }
    .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
      margin-bottom: 0;
      font-size: 12px; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
          font-size: 11px; } }
  .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
    width: 90%;
    /* 90% to match the design */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
        width: auto; } }
  .elementor-widget-woocommerce-checkout-page .e-checkout__container {
    display: grid;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    grid-template-columns: 56% auto;
    /* column widths - to match the design */
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch;
    grid-column-gap: var(--sections-margin, 24px);
    grid-row-gap: var(--sections-margin, 24px); }
  @media (max-width: 1024px) {
    .elementor-widget-woocommerce-checkout-page .e-checkout__container {
      grid-template-columns: repeat(1, 1fr); } }
  .elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title {
    color: var(--sections-secondary-title-color, #818a91);
    margin-bottom: 0; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge {
    text-align: var(--coupon-title-alignment, right); }
  .elementor-widget-woocommerce-checkout-page #ship-to-different-address {
    margin-top: 13px;
    padding-right: var(--shipping-heading-padding-start, 30px); }
    .elementor-widget-woocommerce-checkout-page #ship-to-different-address span {
      font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-checkout-page a:hover {
      color: var(--links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-checkout-page .woocommerce {
    /* Need to use these specific selectors to override WooCommerce CSS */
    /* Need the <button> selector here so that we can target .woocommerce-button
		without being overwritten by WooCommerce's button.button selector.
		We are also targeting .woocommerce-button because none of this styling should
		apply to the Purchase button. Only The Login/Apply coupon button. */
    /* Main Sections styling start */
    /* Main Sections styling end */
    /* Styling for everything classified as 'Messages' start */
    /* Styling for everything classified as 'Messages' end */ }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      padding-left: var(--forms-columns-gap-padding, 0px);
      padding-right: var(--forms-columns-gap-padding, 0px);
      margin-left: var(--forms-columns-gap-margin, 0px);
      margin-right: var(--forms-columns-gap-margin, 0px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label {
        color: var(--forms-labels-color, #818a91);
        margin-bottom: var(--forms-label-spacing, 3px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea {
        color: var(--forms-fields-normal-color, #818a91);
        background-color: #f7f7f7;
        border-radius: var(--forms-fields-border-radius, 0px);
        padding: var(--forms-fields-padding, 16px);
        font-size: 14px;
        border: none;
        font-weight: 400; }
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus {
          color: var(--forms-fields-focus-color, #818a91);
          background-color: #f7f7f7;
          border-color: var(--forms-fields-focus-border-color, #818a91);
          -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
               -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                  transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field {
      margin-bottom: 5px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .create-account,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      /* need to use !important here to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 0 !important; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .input-radio,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span {
      position: relative;
      top: 2px;
      color: var(--sections-checkboxes-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label {
      display: inline; }
    .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #6F6F6F);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: 1rem;
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover {
        color: var(--forms-buttons-hover-text-color, #6F6F6F);
        -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
      margin-right: 1%; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
          width: 100%;
          margin-right: 0;
          margin-bottom: 15px; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-info {
      border-top-color: transparent;
      background-color: transparent;
      padding: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p {
      font-weight: 400;
      font-size: 12px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info {
      font-weight: 400;
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment,
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      background: var(--sections-background-color, #ffffff);
      border-radius: var(--sections-border-radius, 3px);
      padding: var(--sections-padding, 16px 30px);
      margin: var(--sections-margin, 0 0 24px 0);
      border-style: var(--sections-border-type, solid);
      border-color: var(--sections-border-color, #D4D4D4);
      border-width: 1px;
      display: block; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      display: var(--additional-information-display, none); }
    @media (min-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
        margin: var(--sections-margin, 0); } }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message {
      color: var(--sections-messages-color, #818a91);
      font-weight: 400; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p {
      margin-top: 25px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1 {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2 {
      padding-top: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading {
      text-align: var(--order-review-title-alignment, right); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table {
      margin-bottom: 0;
      border: 0;
      font-size: 14px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead {
        background-color: transparent; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th {
          padding-top: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td {
        color: #000000; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity {
          font-weight: normal; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td {
        color: #818a91; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th {
        border: 0;
        padding-left: 0;
        padding-bottom: 15px;
        padding-top: 15px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td {
        padding-bottom: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td {
      font-weight: 400;
      color: var(--order-summary-items-color, #000000);
      border-bottom-color: var(--order-summary-items-divider-color, #818a91);
      border-bottom-width: var(--order-summary-items-divider-weight, 0px);
      border-bottom-style: solid; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name {
        padding-left: 40px;
        max-width: 150px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total {
        vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th {
      padding-top: var(--order-summary-rows-gap-top, 15px);
      padding-bottom: var(--order-summary-rows-gap-bottom, 15px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th {
      color: var(--order-summary-totals-color, #818a91);
      vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th {
      border-top-color: var(--order-summary-totals-divider-color, #818a91);
      border-top-width: var(--order-summary-totals-divider-weight, 0px);
      border-top-style: solid; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td {
      max-width: 70px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce h3 {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      margin-bottom: var(--sections-title-spacing, 30px);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row > span {
      font-weight: 400;
      font-size: 14px;
      margin-bottom: 3px;
      color: #818a91; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
      /* use 48% to match the design. Default WC CSS uses 47% */
      width: 48%; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3 {
      text-align: var(--billing-details-title-alignment, right); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row {
      margin-bottom: var(--forms-rows-gap, 5px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child {
        margin-bottom: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login {
      margin-top: -8px;
      z-index: 999;
      background: #ffffff;
      border-top-width: 0;
      position: relative;
      margin-bottom: 0;
      color: #818a91; }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
        width: 100%; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle {
      display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
      width: 85%;
      /* 85% to match the design */ }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
          width: 35%;
          /* 35% to match the design */ } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3 {
      background: var(--additional-fields-title-alignment, right); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address {
      margin-bottom: var(--sections-margin, 20px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment {
      margin-top: 24px;
      padding: 15px 25px 25px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods {
        border-bottom: none;
        padding: 0; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box {
          background-color: #f7f7f7; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before {
            display: none; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li {
          line-height: 21px; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
            padding-right: 15px;
            font-size: 12px; }
            @media (max-width: 1024px) {
              .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
                float: none;
                font-size: 11px;
                padding-left: 10px; } }
          @media (max-width: 1024px) {
            .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img {
              width: 55px;
              /* 55px to match the design */ } }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        padding: 0;
        margin-bottom: 0;
        -webkit-box-align: var(--place-order-title-alignment, stretch);
            -ms-flex-align: var(--place-order-title-alignment, stretch);
                align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order {
        background-color: #5bc0de;
        width: var(--purchase-button-width, auto);
        float: none;
        color: var(--purchase-button-normal-text-color, #ffffff);
        min-height: auto;
        padding: var(--purchase-button-padding, 1em 1em);
        border-radius: var(--purchase-button-border-radius, 3px); }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover {
          background-color: #5bc0de;
          color: var(--purchase-button-hover-text-color, #ffffff);
          border-color: var(--purchase-button-hover-border-color, #5bc0de);
          -webkit-transition-duration: var(--purchase-button-hover-transition-duration, 0.3s);
               -o-transition-duration: var(--purchase-button-hover-transition-duration, 0.3s);
                  transition-duration: var(--purchase-button-hover-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before {
        display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2 {
      width: auto;
      float: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
      display: grid;
      grid-template-columns: auto auto;
      /*columns widths*/
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
        text-align: left; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
          display: block; }
          .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
            text-align: right; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field {
      /* need to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 10px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000);
      /* We need to specify these values so that the 'Items' Typography control does not affect
			the 'Variations' */
      font-size: 14px;
      font-style: normal;
      text-transform: none;
      letter-spacing: normal;
      text-decoration: none;
      line-height: 21px; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-cart {
  /* one column layout */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart table tbody tr:hover > td,
  .elementor-widget-woocommerce-cart table tbody tr:hover > th {
    background-color: inherit; }
  .elementor-widget-woocommerce-cart .e {
    /* .e-clear is a class that is added between the cart sections to fix collapsing margins,
		especially when custom margins are being set by the Style Controls, then the margins could
		start overriding the other margin, leaving one margin */ }
    .elementor-widget-woocommerce-cart .e-clear {
      overflow: hidden;
      height: 0;
      width: 0; }
    .elementor-widget-woocommerce-cart .e-cart {
      /* Main sections styling start */
      /* Main sections styling end */
      /* one column layout */ }
      .elementor-widget-woocommerce-cart .e-cart-section {
        background-color: var(--sections-background-color, #ffffff);
        padding: var(--sections-padding, 16px 30px);
        margin: var(--sections-margin, 0 0 30px 0);
        border-radius: var(--sections-border-radius, 3px);
        border-width: 1px;
        border-style: var(--sections-border-type, solid);
        border-color: var(--sections-border-color, #D4D4D4); }
      @media (min-width: 1024px) {
        .elementor-widget-woocommerce-cart .e-cart-section:last-child {
          margin: var(--sections-margin, 0); } }
      .elementor-widget-woocommerce-cart .e-cart-content {
        color: var(--sections-descriptions-color, #818a91);
        font-size: 15px;
        font-weight: 400;
        line-height: 23px;
        letter-spacing: 0; }
      .elementor-widget-woocommerce-cart .e-cart__container {
        display: grid;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        grid-template-columns: 59% auto;
        /* 59% to match the required design */
        -webkit-box-align: stretch;
            -ms-flex-align: stretch;
                align-items: stretch;
        grid-column-gap: var(--sections-margin, 30px);
        grid-row-gap: var(--sections-margin, 30px); }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-cart .e-cart__container {
          grid-template-columns: repeat(1, 1fr); } }
      .elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container {
        grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart .select2-container {
    margin-bottom: 4px; }
    .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 0px);
      border: none;
      height: 45px; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, initial);
        -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder {
        color: var(--forms-fields-normal-color, #818a91); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered {
        color: var(--forms-fields-normal-color, #818a91);
        line-height: 45px;
        padding-right: 1rem;
        padding-left: 1rem; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow {
        height: 45px; }
    .elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below {
      background-color: #f7f7f7; }
  .elementor-widget-woocommerce-cart .woocommerce {
    font-family: Roboto, sans-serif; }
    .elementor-widget-woocommerce-cart .woocommerce button.button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #818a91);
      border-radius: var(--forms-buttons-border-radius, 3px);
      /* 0.88rem is used here so that this button will match the design layout from Product. */
      padding: var(--forms-buttons-padding, 0.88rem 2rem);
      width: var(--forms-buttons-width, auto);
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-cart .woocommerce button.button:hover {
        color: var(--forms-buttons-hover-text-color, #818a91);
        -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
        border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce button.button.disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled] {
        /* 0.88rem is used here so that this button will match the design layout from Product. */
        padding: var(--forms-buttons-padding, 0.88rem 2rem);
        color: var(--forms-buttons-normal-text-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover {
          background-color: var(--forms-buttons-hover-background-color, #ffffff);
          color: var(--forms-buttons-hover-text-color, #818a91);
          -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
               -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                  transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
          border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form {
      margin-top: var(--sections-descriptions-spacing, 15px); }
    .elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination {
      color: var(--sections-descriptions-color, #818a91);
      margin-bottom: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td {
      text-align: right !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before {
        width: 100%;
        margin-bottom: 10px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td {
      text-align: left !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td::before {
        content: attr(data-title);
        font-weight: 700;
        float: right; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      text-align: var(--totals-title-alignment, right); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td {
      padding-top: var(--totals-rows-gap-top, 12px);
      padding-bottom: var(--totals-rows-gap-bottom, 9px); }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before,
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount {
        color: var(--totals-color, #818a91);
        font-weight: 700; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td {
      border-top-color: var(--totals-divider-color, #818a91);
      border-top-width: var(--totals-divider-weight, 0); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row {
      margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-cart .woocommerce .product-name a {
      color: var(--product-link-normal-color, #000000); }
      .elementor-widget-woocommerce-cart .woocommerce .product-name a:hover {
        color: var(--product-link-hover-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .form-row {
      padding: 3px 0;
      margin: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .input-text,
    .elementor-widget-woocommerce-cart .woocommerce select {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 3px);
      border: none;
      padding: var(--forms-fields-padding, 16px);
      font-size: 14px; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::-webkit-input-placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::-webkit-input-placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::-moz-placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::-moz-placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::-ms-input-placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::-ms-input-placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text:focus,
      .elementor-widget-woocommerce-cart .woocommerce select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, transparent);
        -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-webkit-input-placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::-webkit-input-placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-moz-placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::-moz-placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-ms-input-placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::-ms-input-placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce .input-text.qty {
      background-color: transparent;
      color: var(--order-summary-color, #000000);
      border-width: var(--order-summary-quantity-border-weight, 1px);
      border-style: solid;
      border-color: var(--order-summary-quantity-border-color, #D4D4D4);
      border-radius: 3px;
      padding: 1px 2px;
      text-align: right;
      font-size: 14px;
      min-height: 28px;
      max-height: 28px; }
    .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout {
      padding-bottom: 0;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-orient: vertical;
      -webkit-box-direction: normal;
          -ms-flex-direction: column;
              flex-direction: column;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
      -webkit-box-align: var(--place-order-title-alignment, stretch);
          -ms-flex-align: var(--place-order-title-alignment, stretch);
              align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button {
        padding: var(--checkout-button-padding, 15px 1em);
        width: var(--checkout-button-width, auto);
        font-size: 15px;
        text-align: center;
        color: var(--checkout-button-normal-text-color, #ffffff);
        background-color: #5bc0de;
        border-radius: var(--checkout-button-border-radius, 3px);
        min-height: auto;
        margin-bottom: 0; }
        .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover {
          color: var(--checkout-button-hover-text-color, #ffffff);
          background-color: #5bc0de;
          border-color: var(--checkout-button-hover-border-color, #5bc0de);
          -webkit-transition-duration: var(--checkout-button-hover-transition-duration, 0.3s);
               -o-transition-duration: var(--checkout-button-hover-transition-duration, 0.3s);
                  transition-duration: var(--checkout-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-cart .woocommerce .remove {
      background: transparent;
      color: var(--order-summary-remove-icon-normal-color, #000000) !important;
      /* need important here because Woo also has !important */
      width: auto; }
      .elementor-widget-woocommerce-cart .woocommerce .remove:hover {
        background: transparent;
        color: var(--order-summary-remove-icon-hover-color, #5bc0de) !important;
        /* need important here because Woo also has !important */ }
    .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals {
      float: none;
      width: 100%; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td {
        padding-right: 0; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td {
        padding-left: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
      float: left;
      width: 100%; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .form-row {
      padding: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex; }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
        -webkit-box-flex: 2;
            -ms-flex: 2;
                flex: 2;
        padding-left: 30px; }
        @media (max-width: 1024px) {
          .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
            padding-left: 0; } }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-end {
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
          display: block; } }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-cart .woocommerce .coupon {
        margin: var(--sections-margin, 0); }
        .elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code {
          width: 100%;
          margin-left: 0;
          margin-bottom: 15px; }
        .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
          width: 100%; } }
    .elementor-widget-woocommerce-cart .woocommerce table.shop_table {
      border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
        float: right;
        font-size: 14px;
        font-weight: 700; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
          float: none;
          width: 100%; } }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table th {
        border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions {
        padding: 16px 0 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a {
        display: inline-block; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child {
        display: var(--update-cart-automatically-display, table-row); }
    .elementor-widget-woocommerce-cart .woocommerce table.cart {
      margin-bottom: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart img {
        width: 55px;
        height: auto;
        display: block; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-top: var(--order-summary-rows-gap-top, 20px);
        padding-left: 20px;
        padding-bottom: var(--order-summary-rows-gap-bottom, 20px);
        padding-right: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td span {
          color: var(--order-summary-color, #000000);
          font-size: 14px;
          font-weight: 400; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
          border-top-width: var(--order-summary-items-divider-weight, 1px);
          border-top-style: solid;
          border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
          @media (max-width: 768px) {
            .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
              border-top-width: 0; } }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove {
          padding-right: 0;
          padding-left: 0; }
      @media (min-width: 767px) {
        .elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td {
          border-top: none; } }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove {
        position: relative; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-name {
        padding-left: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
        border-top-width: var(--order-summary-items-divider-weight, 1px);
        border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
          border-top: none; } }
    @media (max-width: 768px) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-right: 0;
        padding-left: 0; } }
    @media (max-width: 767px) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart {
        padding: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
          padding: 16px 28px; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
            border-top: none; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td {
          padding-right: 0;
          padding-left: 0; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
            padding: 0; } }
    .elementor-widget-woocommerce-cart .woocommerce a {
      color: var(--links-normal-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce a:hover {
        color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      padding-top: 0;
      padding-bottom: 8px;
      padding-right: 0;
      padding-left: 20px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      margin-bottom: var(--sections-title-spacing, 1rem);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      padding-bottom: var(--order-summary-title-spacing, 8px);
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart td::before {
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button::after {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000); }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td, .elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td {
        padding-right: 0; } }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: var(--forms-fields-normal-color, #818a91); }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: var(--forms-fields-focus-color, #818a91);
    border-color: var(--forms-fields-focus-border-color, #818a91);
    -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
         -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
            transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }

.elementor-widget-woocommerce-my-account {
  font-family: Roboto, sans-serif;
  color: #818a91;
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table {
    border: none;
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    background-color: var(--sections-background-color, #ffffff); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px 3px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,
  .elementor-widget-woocommerce-my-account .e-my-account-tab address {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content {
    border: 0; }
    .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
      padding: 0;
      border: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    margin-bottom: 40px; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads,
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px 3px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content > div > p {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: var(--forms-fields-normal-background-color, #f7f7f7);
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: var(--forms-fields-focus-background-color, #f7f7f7);
      border-color: var(--forms-fields-focus-border-color, initial);
      -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
           -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
              transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below {
    background-color: var(--forms-fields-normal-background-color, #f7f7f7); }
  .elementor-widget-woocommerce-my-account .woocommerce ::-webkit-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce ::-moz-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce ::-ms-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce-message {
    font-size: 14px; }
  .elementor-widget-woocommerce-my-account .woocommerce address {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a:hover {
      color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover {
      background-color: initial; }
    .elementor-widget-woocommerce-my-account .woocommerce a.button:hover {
      background-color: initial; }
  .elementor-widget-woocommerce-my-account .woocommerce em {
    font-size: 12px;
    color: var(--login-messages-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .form-row {
    padding-left: var(--forms-columns-gap-padding-left, 0px);
    padding-right: var(--forms-columns-gap-padding-right, 0px);
    margin-left: var(--forms-columns-gap-margin-left, 0px);
    margin-right: var(--forms-columns-gap-margin-right, 0px);
    margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row label {
      color: var(--forms-labels-color, #818a91);
      margin-bottom: var(--forms-label-spacing, 0px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,
    .elementor-widget-woocommerce-my-account .woocommerce .form-row select {
      color: var(--forms-fields-normal-color, #818a91);
      border-radius: var(--forms-fields-border-radius, 0px);
      padding: var(--forms-fields-padding, 16px);
      background: #f7f7f7;
      border: none;
      font-size: 14px; }
      .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,
      .elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        border-color: var(--forms-fields-focus-border-color, #818a91);
        -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field {
    margin-bottom: 5px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text {
    margin-bottom: 15px;
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword {
    font-size: 12px;
    margin-bottom: 0px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    width: 50%;
    /* 50% to match the design - it would normally be full width */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p {
      color: var(--general-text-color, #818a91); }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first {
      width: 100%; }
  .elementor-widget-woocommerce-my-account .woocommerce .login,
  .elementor-widget-woocommerce-my-account .woocommerce .register,
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px);
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .login .button,
    .elementor-widget-woocommerce-my-account .woocommerce .register .button,
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button {
      background: #5bc0de;
      border: none;
      color: var(--forms-buttons-normal-text-color, #ffffff);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: var(--forms-buttons-padding, 12px 32px); }
      .elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover {
        color: var(--forms-buttons-hover-text-color, #ffffff);
        -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3) {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    margin-top: 10px;
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox {
    vertical-align: middle; }
  .elementor-widget-woocommerce-my-account .woocommerce p:last-of-type {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span {
    color: var(--checkboxes-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tr,
  .elementor-widget-woocommerce-my-account .woocommerce td,
  .elementor-widget-woocommerce-my-account .woocommerce th {
    border: none; }
  .elementor-widget-woocommerce-my-account .woocommerce h2,
  .elementor-widget-woocommerce-my-account .woocommerce h3 {
    color: var(--typography-section-titles-color, #000000);
    margin-top: 0;
    margin-bottom: var(--section-title-spacing, 45px);
    font-weight: 400; }
  .elementor-widget-woocommerce-my-account .woocommerce strong {
    color: var(--general-text-color, #000000); }
    .elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label {
      color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta {
    color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .product-quantity {
    font-weight: 400;
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
    float: right;
    width: 25%;
    /* 25% to match the design */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul {
      -webkit-padding-start: 0;
              padding-inline-start: 0; }
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li {
        list-style-type: none;
        margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
        display: inline-block;
        width: 100%;
        /* add a Divider between the tabs that is outside of the margins */ }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li::after {
          content: "";
          display: block;
          width: 100%;
          background-color: var(--tabs-divider-color, #818a91);
          height: var(--tabs-divider-weight, 0px);
          position: relative;
          top: calc(var(--tabs-spacing, 2px) / 2); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a {
          color: var(--tabs-active-color, #5bc0de);
          background: #eceeef;
          border-color: var(--tabs-active-border-color, transparent); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
          font-style: normal;
          font-weight: bold;
          font-size: 14px;
          color: var(--tabs-normal-color, #818a91);
          display: block;
          padding: var(--tabs-padding, 12px 20px);
          text-align: var(--tabs-alignment, start);
          background: #f7f7f7;
          border-radius: var(--tabs-border-radius, 0px);
          border-style: var(--tabs-border-type, solid);
          border-color: var(--tabs-border-color, transparent);
          border-width: 0px; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover {
            color: var(--tabs-hover-color, #5bc0de);
            border-color: var(--tabs-hover-border-color, transparent); }
          @media (max-width: 1024px) {
            .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
              padding: var(--tabs-padding, 10px); } }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard {
          margin-top: 0; }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout {
          margin-bottom: 0; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout::after {
            display: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
    float: left;
    width: 75%;
    /* 75% to match the design */
    padding: 0;
    padding-right: var(--tab-content-spacing, 6%);
    /* 6% to match the design */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
        width: 100%;
        padding: var(--tab-content-spacing, 6%) 0 0 0; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper {
      font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type {
      margin-top: 30px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark {
      background-color: transparent;
      font-weight: bold;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child th,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child th {
    border-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th {
    border-top: 0;
    padding-right: 0;
    padding-top: 0;
    padding-bottom: var(--tables-titles-spacing, 9px); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > th,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > th {
    background-color: transparent;
    padding-right: 0;
    padding-top: var(--order-summary-rows-gap-top, 9px);
    padding-bottom: var(--order-summary-rows-gap-bottom, 9px);
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .shop_table {
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        -webkit-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
                transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table td, .elementor-widget-woocommerce-my-account .woocommerce .shop_table th {
      border-top-style: var(--tables-divider-border-type, solid);
      border-top-width: var(--tables-divider-border-width, 1px);
      border-top-color: var(--tables-divider-border-color, #D4D4D4); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th {
      color: var(--tables-title-color, #000000); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span {
        color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td {
    padding-right: 0;
    color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td {
    border-top: none;
    padding-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .order-again .button {
    background: transparent;
    border: 2px solid #5bc0de;
    border-style: var(--tables-buttons-border-type, solid);
    border-color: var(--tables-buttons-border-color, #5bc0de);
    border-width: 2px;
    border-radius: var(--tables-button-border-radius, 3px);
    vertical-align: middle;
    color: var(--tables-button-normal-text-color, #818a91);
    margin-top: 0;
    margin-bottom: 0;
    padding: var(--tables-button-padding, 12px 32px); }
    .elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover {
      color: var(--tables-button-hover-text-color, #818a91);
      -webkit-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
           -o-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
              transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .title h3, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3 {
    float: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-Address address, .elementor-widget-woocommerce-my-account .woocommerce-Addresses address {
    padding: var(--sections-padding, 45px 30px 16px 30px); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .edit, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit {
    float: right;
    position: absolute;
    margin-right: var(--edit-link-margin-start, 30px);
    margin-top: var(--edit-link-margin-top, 10px); }
  .elementor-widget-woocommerce-my-account .woocommerce .u-columns {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset {
    border: none;
    padding: 0;
    -webkit-margin-start: 0;
            margin-inline-start: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend {
      font-weight: 700;
      padding: 20px 0;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button {
    background: #5bc0de;
    border: none;
    color: var(--forms-buttons-normal-text-color, #ffffff);
    border-radius: var(--forms-buttons-border-radius, 3px);
    padding: var(--forms-buttons-padding, 12px 32px);
    margin-top: 20px; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover {
      color: var(--forms-buttons-hover-text-color, #ffffff);
      -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
           -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
              transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-pagination {
    padding: 16px 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-pagination .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        -webkit-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
                transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td {
    vertical-align: top;
    line-height: unset; }

.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  float: none;
  width: 100%; }
  .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
    display: inline-block; }

.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation {
  display: block; }

.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: block; }
  .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: var(--tabs-container-justify-content, space-between);
        -ms-flex-pack: var(--tabs-container-justify-content, space-between);
            justify-content: var(--tabs-container-justify-content, space-between); }
    @media (max-width: 767px) {
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
        display: block; } }
    .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
      display: inline-block;
      width: var(--tab-width, 100%);
      padding: 0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);
      margin: 0;
      border-right-color: var(--tabs-divider-color, #818a91);
      border-right-width: var(--tabs-divider-weight, 0px);
      border-right-style: solid; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li::after {
        display: none; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type {
        padding-right: 0; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type {
        padding-left: 0;
        border-right-width: 0; }
      @media (max-width: 767px) {
        .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
          margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
          display: inline-block;
          width: 100%; } }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-content {
  float: none;
  width: 100%;
  padding: var(--tab-content-spacing, 50px) 0 0 0; }

/**
 * Specific styling in the Editor.
 */
.elementor-editor-active,
.elementor-editor-preview {
  /**
	 * Prep for the js switching of tabs when in the editor.
	 */
  /**
	 * Disable all but the first 'View' order button as
	 * this is the only order loaded for preview purposes.
	 */ }
  .elementor-editor-active .elementor-widget-container,
  .elementor-editor-preview .elementor-widget-container {
    min-height: 1px; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a {
    pointer-events: none; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button {
    pointer-events: none;
    opacity: .3; }

/**
 * Hide all the other My Account pages' content in the Editor except the first one - dashboard page
 */
.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type) {
  display: none; }

.product .count {
  background-color: inherit; }

.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2 {
  display: none; }

.woocommerce div.product.elementor form.cart div.product-addon {
  -ms-flex-preferred-size: 100%;
      flex-basis: 100%;
  -ms-flex-negative: 0;
      flex-shrink: 0; }

.e-sticky-right-column--active {
  position: -webkit-sticky;
  position: sticky;
  top: 0; }

.elementor-theme-builder-content-area {
  height: 400px; }

.elementor-location-header:before,
.elementor-location-footer:before {
  content: '';
  display: table;
  clear: both; }

.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post {
  display: block; }

.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid {
  color: #D4D4D4;
  border: none;
  border-top: 1px solid;
  border-bottom: 1px solid;
  padding-top: 10px;
  padding-bottom: 10px; }

.elementor-post-navigation-borders-yes .elementor-post-navigation__separator {
  height: 100%;
  width: 1px;
  margin: 0 auto;
  background-color: #D4D4D4; }

.elementor-post-navigation {
  overflow: hidden;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-post-navigation .post-navigation__arrow-wrapper {
    color: #D4D4D4; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev {
      font-size: 30px;
      padding-left: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next {
      font-size: 30px;
      padding-right: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper i {
      -webkit-transform: translateY(-5%);
          -ms-transform: translateY(-5%);
              transform: translateY(-5%); }
  .elementor-post-navigation .elementor-post-navigation__link__prev, .elementor-post-navigation .elementor-post-navigation__link__next {
    overflow: hidden; }
  .elementor-post-navigation .elementor-post-navigation__link a {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    max-width: 100%; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__next--label {
    text-transform: uppercase;
    font-size: 0.8em; }
  .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--title {
    font-size: 0.7em; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--label, .elementor-post-navigation .post-navigation__next--title {
    overflow: hidden;
    -o-text-overflow: ellipsis;
       text-overflow: ellipsis; }
  .elementor-post-navigation span.elementor-post-navigation__link__next {
    text-align: left; }
  .elementor-post-navigation span.elementor-post-navigation__link__next, .elementor-post-navigation span.elementor-post-navigation__link__prev {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }

.elementor-post-navigation .elementor-grid {
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between; }

.elementor-post-navigation .elementor-post-navigation__link {
  width: calc( 50% - ( 1px / 2 ));
  white-space: nowrap;
  overflow: hidden;
  -o-text-overflow: ellipsis;
     text-overflow: ellipsis; }

.elementor-post-navigation .elementor-post-navigation__separator-wrapper {
  text-align: center; }

.elementor-post-navigation .elementor-post-navigation__next {
  text-align: left; }
  .elementor-post-navigation .elementor-post-navigation__next a {
    float: left; }

.elementor-search-form {
  display: block;
  -webkit-transition: 0.2s;
  -o-transition: 0.2s;
  transition: 0.2s;
  /*------ Reset ------*/ }
  .elementor-search-form .e-font-icon-svg-container {
    width: 100%;
    height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
  .elementor-search-form input[type="search"], .elementor-search-form button {
    margin: 0;
    border: 0;
    padding: 0;
    display: inline-block;
    vertical-align: middle;
    white-space: normal;
    background: none;
    line-height: 1;
    min-width: 0;
    font-size: 15px;
    -webkit-appearance: none;
    -moz-appearance: none; }
    .elementor-search-form input[type="search"]:focus, .elementor-search-form button:focus {
      outline: 0;
      color: inherit; }
  .elementor-search-form button {
    background-color: #818a91;
    font-size: var(--e-search-form-submit-icon-size, 16px);
    color: #fff;
    border-radius: 0; }
  .elementor-search-form__container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-transition: 0.2s;
    -o-transition: 0.2s;
    transition: 0.2s;
    overflow: hidden;
    border: 0 solid transparent;
    min-height: 50px; }
    .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      background: #eceeef; }
  .elementor-search-form__input {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
    color: #55595c;
    -webkit-transition: color 0.2s;
    -o-transition: color 0.2s;
    transition: color 0.2s; }
    .elementor-search-form__input::-webkit-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-ms-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::-ms-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
  .elementor-search-form__submit {
    -webkit-transition: color 0.2s, background 0.2s;
    -o-transition: color 0.2s, background 0.2s;
    transition: color 0.2s, background 0.2s;
    font-size: var(--e-search-form-submit-icon-size, 16px); }
    .elementor-search-form__submit svg {
      fill: var(--e-search-form-submit-text-color, #fff);
      width: var(--e-search-form-submit-icon-size, 16px);
      height: var(--e-search-form-submit-icon-size, 16px); }
  .elementor-search-form .elementor-search-form__submit, .elementor-search-form .elementor-search-form__submit:hover {
    color: var(--e-search-form-submit-text-color, #fff);
    border: none;
    border-radius: 0; }
  .elementor-search-form--button-type-text .elementor-search-form__submit {
    -ms-flex-negative: 0;
        flex-shrink: 0; }
  .elementor-search-form--skin-minimal .elementor-search-form__icon {
    opacity: 0.6;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end;
    color: #55595c;
    fill: #55595c;
    font-size: var(--e-search-form-icon-size-minimal, 15px); }
    .elementor-search-form--skin-minimal .elementor-search-form__icon svg {
      width: var(--e-search-form-icon-size-minimal, 15px);
      height: var(--e-search-form-icon-size-minimal, 15px); }
  .elementor-search-form--skin-full_screen .elementor-search-form input[type="search"].elementor-search-form__input {
    font-size: 50px;
    text-align: center;
    border-style: solid;
    border-width: 0 0 1px 0;
    border-color: #fff;
    line-height: 1.5;
    color: #fff; }
  .elementor-search-form--skin-full_screen .elementor-search-form__toggle {
    display: inline-block;
    cursor: pointer;
    vertical-align: middle;
    color: var(--e-search-form-toggle-color, #494c4f);
    font-size: var(--e-search-form-toggle-size, 33px); }
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle i,
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container {
      position: relative;
      display: block;
      -webkit-transition: 0.2s;
      -o-transition: 0.2s;
      transition: 0.2s;
      width: var(--e-search-form-toggle-size, 33px);
      height: var(--e-search-form-toggle-size, 33px);
      background-color: var(--e-search-form-toggle-background-color, rgba(0, 0, 0, 0.05));
      border-style: solid;
      border-color: var(--e-search-form-toggle-color, #494c4f);
      border-width: var(--e-search-form-toggle-border-width, 0);
      border-radius: var(--e-search-form-toggle-border-radius, 3px); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        position: absolute;
        left: 50%;
        top: 50%;
        -webkit-transform: translate(-50%, -50%);
            -ms-transform: translate(-50%, -50%);
                transform: translate(-50%, -50%); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before {
        font-size: var(--e-search-form-toggle-icon-size, 0.55em); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        fill: var(--e-search-form-toggle-color, #494c4f);
        width: var(--e-search-form-toggle-icon-size, 0.55em);
        height: var(--e-search-form-toggle-icon-size, 0.55em); }
  .elementor-search-form--skin-full_screen .elementor-search-form__container {
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    position: fixed;
    z-index: 9998;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    height: 100vh;
    padding: 0 15%;
    background-color: rgba(0, 0, 0, 0.8); }
    .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      overflow: hidden;
      opacity: 0;
      -webkit-transform: scale(0);
          -ms-transform: scale(0);
              transform: scale(0); }
      .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button {
        display: none; }

.elementor-author-box {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }
  .elementor-author-box__avatar {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-left: 25px; }
    .elementor-author-box__avatar img {
      width: 100px;
      border-radius: 500px;
      -o-object-fit: cover;
         object-fit: cover; }
  .elementor-author-box__text {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    font-size: 17px; }
  .elementor-author-box__name {
    font-size: 24px;
    margin-bottom: 5px; }
  .elementor-author-box__bio {
    margin-bottom: 0.8em; }
    .elementor-author-box__bio p {
      margin-bottom: 0.8em; }
      .elementor-author-box__bio p:last-of-type {
        margin-bottom: 0; }
  .elementor-author-box--layout-image-left .elementor-author-box {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
    .elementor-author-box--layout-image-left .elementor-author-box__avatar {
      margin-left: 0;
      margin-right: 25px; }
  .elementor-author-box--layout-image-right .elementor-author-box {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
    .elementor-author-box--layout-image-right .elementor-author-box__avatar {
      margin-right: 0;
      margin-left: 25px; }
  .elementor-author-box--layout-image-above .elementor-author-box {
    display: block; }
    .elementor-author-box--layout-image-above .elementor-author-box__avatar {
      margin: 0 auto 15px;
      display: inline-block; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar {
    margin-left: 0; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar {
    margin-right: 0; }
  .elementor-author-box--align-left .elementor-author-box {
    text-align: left; }
  .elementor-author-box--align-right .elementor-author-box {
    text-align: right; }
  .elementor-author-box--align-center .elementor-author-box {
    text-align: center; }

.elementor-button.elementor-author-box__button {
  border: solid 2px #55595c;
  font-size: 15px;
  font-weight: 100;
  padding: 10px 18px; }
  .elementor-button.elementor-author-box__button, .elementor-button.elementor-author-box__button:hover {
    background: transparent;
    color: #55595c; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar {
  -ms-flex-item-align: start;
      align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar {
  -ms-flex-item-align: start;
      align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar {
  -ms-flex-item-align: center;
      align-self: center; }

.elementor-post-info__terms-list {
  display: inline-block; }

.elementor-post-info .elementor-icon-list-icon .elementor-avatar {
  border-radius: 100%; }

.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after {
  margin: initial; }

.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text {
  display: inline-block; }
  .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a, .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span {
    display: inline; }

.elementor-widget-breadcrumbs {
  font-size: 0.85em; }
  .elementor-widget-breadcrumbs p {
    margin-bottom: 0; }

.elementor-sitemap-wrap {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-flow: row wrap;
          flex-flow: row wrap; }

.elementor-sticky--active {
  z-index: 99; }

[data-elementor-type="popup"]:not(.elementor-edit-area) {
  display: none; }

[data-elementor-type="popup"] .elementor-section-wrap:not(:empty) + #elementor-add-new-section {
  display: none; }

.elementor-popup-modal {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  pointer-events: none;
  background-color: transparent;
  -webkit-user-select: auto;
     -moz-user-select: auto;
      -ms-user-select: auto;
          user-select: auto; }
  .elementor-popup-modal .dialog-header, .elementor-popup-modal .dialog-buttons-wrapper {
    display: none; }
  .elementor-popup-modal .dialog-close-button {
    display: none;
    top: 20px;
    margin-top: 0;
    left: 20px;
    opacity: 1;
    z-index: 9999;
    pointer-events: all; }
    .elementor-popup-modal .dialog-close-button svg {
      fill: #373a3c;
      height: 1em;
      width: 1em; }
  .elementor-popup-modal .dialog-widget-content {
    width: initial;
    overflow: visible;
    max-width: 100%;
    max-height: 100%;
    border-radius: 0;
    -webkit-box-shadow: none;
            box-shadow: none;
    pointer-events: all; }
  .elementor-popup-modal .dialog-message {
    width: 640px;
    max-width: 100vw;
    max-height: 100vh;
    padding: 0;
    overflow: auto;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .elementor-popup-modal .elementor {
    width: 100%; }

.elementor-motion-effects-element, .elementor-motion-effects-layer {
  -webkit-transition-property: opacity, -webkit-transform;
  transition-property: opacity, -webkit-transform;
  -o-transition-property: transform, opacity;
  transition-property: transform, opacity;
  transition-property: transform, opacity, -webkit-transform;
  -webkit-transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
       -o-transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
          transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
  -webkit-transition-duration: 1s;
       -o-transition-duration: 1s;
          transition-duration: 1s; }

.elementor-motion-effects-container {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  -webkit-transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x);
      -ms-transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x);
          transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); }

.elementor-motion-effects-layer {
  position: absolute;
  top: 0;
  left: 0;
  background-repeat: no-repeat;
  -webkit-background-size: cover;
          background-size: cover; }

.elementor-motion-effects-perspective {
  -webkit-perspective: 1200px;
          perspective: 1200px; }

.elementor-widget-posts:after, .elementor-widget-archive-posts:after {
  display: none; }

.elementor-posts-container.elementor-posts-masonry {
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start; }

.elementor-posts-container:not(.elementor-posts-masonry) {
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch; }

.elementor-posts-container .elementor-post {
  padding: 0;
  margin: 0; }
  .elementor-posts-container .elementor-post__thumbnail {
    overflow: hidden; }
    .elementor-posts-container .elementor-post__thumbnail img {
      display: block;
      width: 100%;
      max-height: none;
      max-width: none;
      -webkit-transition: -webkit-filter 0.3s;
      transition: -webkit-filter 0.3s;
      -o-transition: filter 0.3s;
      transition: filter 0.3s;
      transition: filter 0.3s, -webkit-filter 0.3s; }
    .elementor-posts-container .elementor-post__thumbnail__link {
      position: relative;
      display: block;
      width: 100%; }

.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0; }
  .elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail img {
    height: auto;
    position: absolute;
    top: calc( 50% + 1px);
    left: calc( 50% + 1px);
    -webkit-transform: scale(1.01) translate(-50%, -50%);
        -ms-transform: scale(1.01) translate(-50%, -50%);
            transform: scale(1.01) translate(-50%, -50%); }
  .elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail.elementor-fit-height img {
    height: 100%;
    width: auto; }

.elementor-posts .elementor-post {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-transition-property: background, border, -webkit-box-shadow;
  transition-property: background, border, -webkit-box-shadow;
  -o-transition-property: background, border, box-shadow;
  transition-property: background, border, box-shadow;
  transition-property: background, border, box-shadow, -webkit-box-shadow;
  -webkit-transition-duration: 0.25s;
       -o-transition-duration: 0.25s;
          transition-duration: 0.25s; }
  .elementor-posts .elementor-post__title {
    font-size: 18px;
    margin: 0; }
  .elementor-posts .elementor-post__excerpt {
    margin-bottom: 10px; }
    .elementor-posts .elementor-post__excerpt p {
      margin: 0;
      line-height: 1.5em;
      font-size: 14px;
      color: #777; }
  .elementor-posts .elementor-post__meta-data {
    line-height: 1.3em;
    font-size: 12px;
    margin-bottom: 13px;
    color: #adadad; }
  .elementor-posts .elementor-post__read-more {
    font-size: 12px;
    font-weight: bold; }
  .elementor-posts .elementor-post__thumbnail {
    position: relative; }

.elementor-posts--skin-classic {
  display: grid;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap; }
  .elementor-posts--skin-classic:not(.elementor-posts-masonry) {
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch; }
  .elementor-posts--skin-classic .elementor-post {
    overflow: hidden; }
    .elementor-posts--skin-classic .elementor-post__text {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }

.elementor-posts--align-left .elementor-post {
  text-align: left; }

.elementor-posts--align-right .elementor-post {
  text-align: right; }

.elementor-posts--align-center .elementor-post {
  text-align: center; }

.elementor-posts--thumbnail-top .elementor-post {
  display: block;
  /*

			 used to be
			 align-self: flex-start;
			 until v2.1

			*/ }
  .elementor-posts--thumbnail-top .elementor-post__thumbnail__link {
    margin-bottom: 20px; }
  .elementor-posts--thumbnail-top .elementor-post__text {
    width: 100%; }

.elementor-posts--thumbnail-top.elementor-posts--align-left .elementor-post__thumbnail__link {
  margin-right: auto; }

.elementor-posts--thumbnail-top.elementor-posts--align-right .elementor-post__thumbnail__link {
  margin-left: auto; }

.elementor-posts--thumbnail-top.elementor-posts--align-center .elementor-post__thumbnail__link {
  margin-right: auto;
  margin-left: auto; }

.elementor-posts--thumbnail-left .elementor-post__thumbnail__link, .elementor-posts--thumbnail-right .elementor-post__thumbnail__link {
  -ms-flex-negative: 0;
      flex-shrink: 0;
  width: 25%; }

.elementor-posts--thumbnail-left .elementor-post__thumbnail__link {
  -webkit-box-ordinal-group: 6;
      -ms-flex-order: 5;
          order: 5;
  margin-right: 20px; }

.elementor-posts--thumbnail-right .elementor-post__thumbnail__link {
  -webkit-box-ordinal-group: 1;
      -ms-flex-order: 0;
          order: 0;
  margin-left: 20px; }

.elementor-posts--thumbnail-none .elementor-posts-container .elementor-post__thumbnail__link {
  display: none; }

.elementor-posts .elementor-post__card {
  overflow: hidden;
  position: relative;
  background-color: #fff;
  width: 100%;
  min-height: 100%;
  border-radius: 3px;
  border: 0 solid #818a91;
  -webkit-transition: all 0.25s;
  -o-transition: all 0.25s;
  transition: all 0.25s; }
  .elementor-posts .elementor-post__card .elementor-post__thumbnail {
    position: relative;
    transform-style: preserve-3d;
    -webkit-transform-style: preserve-3d; }
    .elementor-posts .elementor-post__card .elementor-post__thumbnail img {
      width: calc( 100% + 1px); }
  .elementor-posts .elementor-post__card .elementor-post__text {
    padding: 0 30px;
    margin-bottom: 0;
    margin-top: 20px; }
  .elementor-posts .elementor-post__card .elementor-post__read-more {
    margin-bottom: 20px;
    display: inline-block; }
  .elementor-posts .elementor-post__card .elementor-post__meta-data {
    padding: 15px 30px;
    margin-bottom: 0;
    border-top: 1px solid #eaeaea; }
    .elementor-posts .elementor-post__card .elementor-post__meta-data span + span:before {
      margin: 0 5px; }
  .elementor-posts .elementor-post__card .elementor-post__title {
    font-size: 21px; }
  .elementor-posts .elementor-post__card .elementor-post__excerpt {
    line-height: 1.7; }
  .elementor-posts .elementor-post__card .elementor-post__excerpt, .elementor-posts .elementor-post__card .elementor-post__title {
    margin-bottom: 25px; }
  .elementor-posts .elementor-post__card .elementor-post__badge, .elementor-posts .elementor-post__card .elementor-post__read-more {
    text-transform: uppercase; }

.elementor-posts .elementor-post__badge {
  position: absolute;
  top: 0;
  background: #818a91;
  color: #fff;
  font-size: 12px;
  padding: 0.6em 1.2em;
  line-height: 1;
  font-weight: 400;
  margin: 20px;
  border-radius: 999px; }

.elementor-posts .elementor-post__avatar {
  position: relative;
  padding: 0 30px;
  width: 100%;
  top: -25px;
  height: 0;
  pointer-events: none; }
  .elementor-posts .elementor-post__avatar img {
    border-radius: 50%;
    width: 60px;
    pointer-events: all;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%); }

.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card, .elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data, .elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data {
  margin-top: auto; }

.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar {
  padding-top: 0;
  position: static;
  height: auto; }
  .elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar img.avatar {
    -webkit-transform: translateY(0);
        -ms-transform: translateY(0);
            transform: translateY(0);
    vertical-align: bottom; }

.elementor-posts--show-avatar .elementor-post__thumbnail__link {
  margin-bottom: 25px; }

.elementor-posts__hover-gradient .elementor-post__card .elementor-post__thumbnail__link:after {
  display: block;
  content: '';
  background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.35)), color-stop(75%, rgba(0, 0, 0, 0)));
  background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 75%);
  background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 75%);
  background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 75%);
  background-repeat: no-repeat;
  height: 100%;
  width: 100%;
  position: absolute;
  bottom: 0;
  opacity: 1;
  -webkit-transition: all 0.3s ease-out;
  -o-transition: all 0.3s ease-out;
  transition: all 0.3s ease-out; }

.elementor-posts__hover-gradient .elementor-post__card:hover .elementor-post__thumbnail__link:after {
  opacity: 0.5; }

.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img {
  height: 100%; }

.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: calc( 100% + 1px); }

.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img {
  height: 115%; }

.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: 115%; }

.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img {
  height: 115%; }

.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: 115%; }

.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img {
  height: 100%; }

.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: calc( 100% + 1px); }

.elementor-posts__hover-zoom-out .elementor-post__thumbnail img, .elementor-posts__hover-zoom-in .elementor-post__thumbnail img {
  -webkit-transition: height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1), -webkit-filter 0.3s;
  transition: height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1), -webkit-filter 0.3s;
  -o-transition: filter 0.3s, height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1);
  transition: filter 0.3s, height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1);
  transition: filter 0.3s, height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1), -webkit-filter 0.3s; }

.elementor-card-shadow-yes .elementor-post__card {
  -webkit-box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.15);
          box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.15); }
  .elementor-card-shadow-yes .elementor-post__card:hover {
    -webkit-box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.15);
            box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.15); }

.elementor-posts--skin-full_content article {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  overflow: hidden; }
  .elementor-posts--skin-full_content article .elementor-post__thumbnail {
    padding-bottom: 0; }

body.elementor-editor-active .elementor-posts--skin-full_content,
body.elementor-editor-active .elementor-posts--skin-archive_full_content {
  pointer-events: none; }
  body.elementor-editor-active .elementor-posts--skin-full_content .elementor-post__thumbnail__link,
  body.elementor-editor-active .elementor-posts--skin-archive_full_content .elementor-post__thumbnail__link {
    display: none; }

body.elementor-editor-active .elementor-posts--show-thumbnail .elementor-post__thumbnail__link {
  display: block; }

.elementor-portfolio__filters {
  list-style: none;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  padding: 0;
  margin: 0; }

.elementor-portfolio__filter {
  margin: 0;
  cursor: pointer;
  padding: 8px; }

.elementor-portfolio-item {
  -ms-flex-item-align: start;
      align-self: flex-start;
  -webkit-transition-property: opacity, -webkit-transform;
  transition-property: opacity, -webkit-transform;
  -o-transition-property: transform, opacity;
  transition-property: transform, opacity;
  transition-property: transform, opacity, -webkit-transform;
  -webkit-transition-timing-function: ease-in-out;
       -o-transition-timing-function: ease-in-out;
          transition-timing-function: ease-in-out;
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  overflow: hidden;
  margin: 0; }
  .elementor-portfolio-item__title {
    margin: 0;
    padding: 0;
    line-height: 1;
    font-size: 18px;
    color: #fff; }
  .elementor-portfolio-item__tags__separator:before {
    content: ', '; }
  .elementor-portfolio-item__overlay {
    opacity: 0;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 15px;
    -webkit-transition: opacity 1s;
    -o-transition: opacity 1s;
    transition: opacity 1s;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    text-align: center;
    overflow: hidden;
    background-color: rgba(129, 138, 145, 0.8); }
    .elementor-portfolio-item__overlay:hover {
      opacity: 1;
      -webkit-transition: opacity 0.5s;
      -o-transition: opacity 0.5s;
      transition: opacity 0.5s; }
  .elementor-portfolio-item__img img[src=""] {
    background-color: rgba(0, 0, 0, 0.1);
    height: 100%; }

.elementor-portfolio.elementor-has-item-ratio {
  -webkit-transition: height 0.5s;
  -o-transition: height 0.5s;
  transition: height 0.5s; }
  .elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail {
    position: absolute;
    background-color: rgba(0, 0, 0, 0.1); }
    .elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail__link {
      padding-bottom: 56.25%; }

.elementor ul li.elementor-portfolio__filter {
  list-style-type: none; }

.elementor-widget-posts.load-more-align-center .elementor-button-wrapper, .elementor-widget-archive-posts.load-more-align-center .elementor-button-wrapper {
  text-align: center; }

.elementor-widget-posts.load-more-align-start .elementor-button-wrapper, .elementor-widget-archive-posts.load-more-align-start .elementor-button-wrapper {
  text-align: start; }

.elementor-widget-posts.load-more-align-end .elementor-button-wrapper, .elementor-widget-archive-posts.load-more-align-end .elementor-button-wrapper {
  text-align: end; }

.elementor-widget-posts.load-more-align-justify .elementor-button, .elementor-widget-archive-posts.load-more-align-justify .elementor-button {
  width: 100%; }

.elementor-widget-posts .e-load-more-spinner, .elementor-widget-archive-posts .e-load-more-spinner {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-widget-posts .e-load-more-spinner i,
  .elementor-widget-posts .e-load-more-spinner svg, .elementor-widget-archive-posts .e-load-more-spinner i,
  .elementor-widget-archive-posts .e-load-more-spinner svg {
    margin: 0 auto;
    display: none; }
  .elementor-widget-posts .e-load-more-spinner i, .elementor-widget-archive-posts .e-load-more-spinner i {
    color: var(--load-more-spinner-color); }
  .elementor-widget-posts .e-load-more-spinner svg, .elementor-widget-archive-posts .e-load-more-spinner svg {
    fill: var(--load-more-spinner-color);
    height: 1em;
    width: 1em; }

.elementor-widget-posts .e-load-more-message, .elementor-widget-archive-posts .e-load-more-message {
  color: var(--load-more-message-color);
  text-align: var(--load-more-message-alignment, center);
  display: none;
  margin-top: var(--load-more—spacing, 30px); }

.elementor-widget-posts.e-load-more-pagination-loading, .elementor-widget-archive-posts.e-load-more-pagination-loading {
  cursor: default; }
  .elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner, .elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner {
    margin-top: var(--load-more—spacing, 30px); }
    .elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner i,
    .elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner svg, .elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner i,
    .elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner svg {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex; }
  .elementor-widget-posts.e-load-more-pagination-loading .elementor-button-content-wrapper, .elementor-widget-archive-posts.e-load-more-pagination-loading .elementor-button-content-wrapper {
    visibility: hidden; }

.elementor-widget-posts.e-load-more-pagination-end .elementor-button-wrapper, .elementor-widget-archive-posts.e-load-more-pagination-end .elementor-button-wrapper {
  display: none; }

.elementor-widget-posts.e-load-more-pagination-end .e-load-more-message, .elementor-widget-archive-posts.e-load-more-pagination-end .e-load-more-message {
  display: block; }

.elementor-widget-posts.e-load-more-no-spinner .elementor-button-content-wrapper, .elementor-widget-archive-posts.e-load-more-no-spinner .elementor-button-content-wrapper {
  visibility: visible; }

.elementor-widget-posts .elementor-button-wrapper, .elementor-widget-archive-posts .elementor-button-wrapper {
  margin-top: var(--load-more—spacing, 30px); }
  .elementor-widget-posts .elementor-button-wrapper .e-load-more-spinner, .elementor-widget-archive-posts .elementor-button-wrapper .e-load-more-spinner {
    position: absolute;
    right: 50%;
    top: 50%;
    -webkit-transform: translate(-50%, -50%);
        -ms-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
    margin: inherit; }
  .elementor-widget-posts .elementor-button-wrapper .elementor-button, .elementor-widget-archive-posts .elementor-button-wrapper .elementor-button {
    cursor: pointer;
    position: relative; }

/*
Multi Steps Form

Currently manually overwriting  - need to find a better solution,
the source property is coming from element/dev/scss...

*/
/* TODO: check why elementor-hidden class is not working */
.elementor-hidden,
.elementor-button.elementor-hidden {
  display: none; }

.e-form__step {
  width: 100%; }
  .e-form__step:not(.elementor-hidden) {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }

.e-form__buttons {
  -ms-flex-wrap: wrap;
      flex-wrap: wrap; }
  .e-form__buttons, .e-form__buttons__wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }

.e-form__indicators {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap;
  font-size: 13px;
  margin-bottom: var(--e-form-steps-indicators-spacing); }
  .e-form__indicators__indicator {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -ms-flex-preferred-size: 0;
        flex-basis: 0;
    padding: 0 var(--e-form-steps-divider-gap); }
    .e-form__indicators__indicator__progress {
      width: 100%;
      position: relative;
      background-color: var(--e-form-steps-indicator-progress-background-color);
      border-radius: var(--e-form-steps-indicator-progress-border-radius);
      overflow: hidden; }
      .e-form__indicators__indicator__progress__meter {
        width: var(--e-form-steps-indicator-progress-meter-width, 0);
        height: var(--e-form-steps-indicator-progress-height);
        line-height: var(--e-form-steps-indicator-progress-height);
        padding-right: 15px;
        border-radius: var(--e-form-steps-indicator-progress-border-radius);
        background-color: var(--e-form-steps-indicator-progress-color);
        color: var(--e-form-steps-indicator-progress-meter-color);
        text-align: right;
        -webkit-transition: width 0.1s linear;
        -o-transition: width 0.1s linear;
        transition: width 0.1s linear; }
    .e-form__indicators__indicator:first-child {
      padding-left: 0; }
    .e-form__indicators__indicator:last-child {
      padding-right: 0; }
    .e-form__indicators__indicator--state-inactive {
      color: var(--e-form-steps-indicator-inactive-primary-color, #C2CBD2); }
      .e-form__indicators__indicator--state-inactive [class*="indicator--shape-"]:not(.e-form__indicators__indicator--shape-none) {
        background-color: var(--e-form-steps-indicator-inactive-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-inactive svg,
      .e-form__indicators__indicator--state-inactive object {
        fill: var(--e-form-steps-indicator-inactive-primary-color, #C2CBD2); }
    .e-form__indicators__indicator--state-active {
      color: var(--e-form-steps-indicator-active-primary-color, #39B54A);
      border-color: var(--e-form-steps-indicator-active-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-active [class*="indicator--shape-"]:not(.e-form__indicators__indicator--shape-none) {
        background-color: var(--e-form-steps-indicator-active-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-active svg,
      .e-form__indicators__indicator--state-active object {
        fill: var(--e-form-steps-indicator-active-primary-color, #39B54A); }
    .e-form__indicators__indicator--state-completed {
      color: var(--e-form-steps-indicator-completed-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-completed [class*="indicator--shape-"]:not(.e-form__indicators__indicator--shape-none) {
        background-color: var(--e-form-steps-indicator-completed-primary-color, #39B54A); }
      .e-form__indicators__indicator--state-completed .e-form__indicators__indicator__label {
        color: var(--e-form-steps-indicator-completed-primary-color, #39B54A); }
      .e-form__indicators__indicator--state-completed .e-form__indicators__indicator--shape-none {
        color: var(--e-form-steps-indicator-completed-primary-color, #39B54A);
        background-color: initial; }
      .e-form__indicators__indicator--state-completed svg,
      .e-form__indicators__indicator--state-completed object {
        fill: var(--e-form-steps-indicator-completed-secondary-color, #FFF); }
    .e-form__indicators__indicator__icon {
      width: var(--e-form-steps-indicator-padding, 30px);
      height: var(--e-form-steps-indicator-padding, 30px);
      font-size: var(--e-form-steps-indicator-icon-size);
      border-width: 1px;
      border-style: solid;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-pack: center;
          -ms-flex-pack: center;
              justify-content: center;
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center;
      overflow: hidden;
      margin-bottom: 10px; }
      .e-form__indicators__indicator__icon img,
      .e-form__indicators__indicator__icon svg,
      .e-form__indicators__indicator__icon object {
        width: var(--e-form-steps-indicator-icon-size);
        height: auto; }
      .e-form__indicators__indicator__icon .e-font-icon-svg {
        height: 1em; }
    .e-form__indicators__indicator__number {
      width: var(--e-form-steps-indicator-padding, 30px);
      height: var(--e-form-steps-indicator-padding, 30px);
      border-width: 1px;
      border-style: solid;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-pack: center;
          -ms-flex-pack: center;
              justify-content: center;
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center;
      margin-bottom: 10px; }
    .e-form__indicators__indicator--shape-circle {
      border-radius: 50%; }
    .e-form__indicators__indicator--shape-square {
      border-radius: 0; }
    .e-form__indicators__indicator--shape-rounded {
      border-radius: 5px; }
    .e-form__indicators__indicator--shape-none {
      border: 0; }
    .e-form__indicators__indicator__label {
      text-align: center; }
    .e-form__indicators__indicator__separator {
      width: 100%;
      height: var(--e-form-steps-divider-width);
      background-color: #c2cbd2; }
  .e-form__indicators--type-number, .e-form__indicators--type-number_text, .e-form__indicators--type-icon, .e-form__indicators--type-icon_text {
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start; }
    .e-form__indicators--type-number .e-form__indicators__indicator__separator, .e-form__indicators--type-number_text .e-form__indicators__indicator__separator, .e-form__indicators--type-icon .e-form__indicators__indicator__separator, .e-form__indicators--type-icon_text .e-form__indicators__indicator__separator {
      margin-top: calc(var(--e-form-steps-indicator-padding, 30px) / 2 - var(--e-form-steps-divider-width, 1px) / 2); }

/* End OF Multi Steps Form */
.elementor-field-type-hidden {
  display: none; }

.elementor-field-type-html {
  display: inline-block; }

.elementor-login .elementor-remember-me,
.elementor-login .elementor-lost-password {
  font-size: 0.85em; }

.elementor-field-type-recaptcha_v3 .elementor-field-label {
  display: none; }

.elementor-field-type-recaptcha_v3 .grecaptcha-badge {
  z-index: 1; }

.elementor-button .elementor-form-spinner {
  -webkit-box-ordinal-group: 4;
      -ms-flex-order: 3;
          order: 3; }

.elementor-form .elementor-button > span {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.elementor-form .elementor-button .elementor-button-text {
  white-space: normal;
  -webkit-box-flex: 0;
      -ms-flex-positive: 0;
          flex-grow: 0; }

.elementor-form .elementor-button svg {
  height: auto; }

.elementor-form .elementor-button .e-font-icon-svg {
  height: 1em; }

.elementor-widget-price-list .elementor-price-list {
  list-style: none;
  padding: 0;
  margin: 0; }
  .elementor-widget-price-list .elementor-price-list li {
    margin: 0; }

.elementor-price-list li:not(:last-child) {
  margin-bottom: 20px; }

.elementor-price-list .elementor-price-list-image {
  max-width: 50%;
  -ms-flex-negative: 0;
      flex-shrink: 0;
  padding-left: 25px; }
  .elementor-price-list .elementor-price-list-image img {
    width: 100%; }

.elementor-price-list .elementor-price-list-text,
.elementor-price-list .elementor-price-list-item,
.elementor-price-list .elementor-price-list-header {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }

.elementor-price-list .elementor-price-list-item {
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-text {
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-header {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
    font-size: 19px;
    font-weight: 600;
    margin-bottom: 10px;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-title {
    max-width: 80%; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-price {
    font-weight: 600; }
  .elementor-price-list .elementor-price-list-item p.elementor-price-list-description {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
    font-size: 14px;
    margin: 0; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-separator {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    margin-left: 10px;
    margin-right: 10px;
    border-bottom-style: dotted;
    border-bottom-width: 2px;
    height: 0; }

.elementor-price-table {
  text-align: center; }
  .elementor-price-table .elementor-price-table__header {
    background: var(--e-price-table-header-background-color, #555);
    padding: 20px 0; }
  .elementor-price-table .elementor-price-table__heading {
    margin: 0;
    padding: 0;
    line-height: 1.2;
    font-size: 24px;
    font-weight: 600;
    color: #fff; }
  .elementor-price-table .elementor-price-table__subheading {
    font-size: 13px;
    font-weight: 400;
    color: #fff; }
  .elementor-price-table .elementor-price-table__original-price {
    margin-left: 15px;
    text-decoration: line-through;
    font-size: 0.5em;
    line-height: 1;
    font-weight: 400;
    -ms-flex-item-align: center;
        align-self: center; }
    .elementor-price-table .elementor-price-table__original-price .elementor-price-table__currency {
      font-size: 1em;
      margin: 0; }
  .elementor-price-table .elementor-price-table__price {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse;
    color: #555;
    font-weight: 800;
    font-size: 65px;
    padding: 40px 0; }
    .elementor-price-table .elementor-price-table__price .elementor-typo-excluded {
      line-height: initial;
      letter-spacing: initial;
      text-transform: initial;
      font-weight: initial;
      font-size: initial;
      font-style: initial; }
  .elementor-price-table .elementor-price-table__after-price {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    text-align: right;
    -ms-flex-item-align: stretch;
        align-self: stretch;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }
  .elementor-price-table .elementor-price-table__integer-part {
    line-height: 0.8; }
  .elementor-price-table .elementor-price-table__currency, .elementor-price-table .elementor-price-table__fractional-part {
    line-height: 1;
    font-size: 0.3em; }
  .elementor-price-table .elementor-price-table__currency {
    margin-left: 3px; }
  .elementor-price-table .elementor-price-table__period {
    width: 100%;
    font-size: 13px;
    font-weight: 400; }
  .elementor-price-table .elementor-price-table__features-list {
    list-style-type: none;
    margin: 0;
    padding: 0;
    line-height: 1;
    color: var(--e-price-table-features-list-color); }
    .elementor-price-table .elementor-price-table__features-list li {
      font-size: 14px;
      line-height: 1;
      margin: 0;
      padding: 0; }
      .elementor-price-table .elementor-price-table__features-list li .elementor-price-table__feature-inner {
        margin-left: 15px;
        margin-right: 15px; }
      .elementor-price-table .elementor-price-table__features-list li:not(:first-child):before {
        content: '';
        display: block;
        border: 0 solid rgba(122, 122, 122, 0.3);
        margin: 10px 12.5%; }
    .elementor-price-table .elementor-price-table__features-list i {
      margin-left: 10px;
      font-size: 1.3em; }
    .elementor-price-table .elementor-price-table__features-list svg {
      margin-left: 10px;
      fill: var(--e-price-table-features-list-color);
      height: 1.3em;
      width: 1.3em; }
    .elementor-price-table .elementor-price-table__features-list svg ~ * {
      vertical-align: text-top; }
  .elementor-price-table .elementor-price-table__footer {
    padding: 30px 0; }
  .elementor-price-table .elementor-price-table__additional_info {
    margin: 0;
    font-size: 13px;
    line-height: 1.4; }
  .elementor-price-table__ribbon {
    position: absolute;
    top: 0;
    left: 0;
    right: auto;
    -webkit-transform: rotate(0);
        -ms-transform: rotate(0);
            transform: rotate(0);
    width: 150px;
    overflow: hidden;
    height: 150px; }
    .elementor-price-table__ribbon-inner {
      text-align: center;
      left: 0;
      width: 200%;
      -webkit-transform: translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);
          -ms-transform: translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);
              transform: translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);
      margin-top: 35px;
      font-size: 13px;
      line-height: 2;
      font-weight: 800;
      text-transform: uppercase;
      background: #000; }
    .elementor-price-table__ribbon.elementor-ribbon-left {
      -webkit-transform: rotate(0);
          -ms-transform: rotate(0);
              transform: rotate(0);
      left: 0;
      right: auto; }
    .elementor-price-table__ribbon.elementor-ribbon-right {
      -webkit-transform: rotate(90deg);
          -ms-transform: rotate(90deg);
              transform: rotate(90deg);
      left: auto;
      right: 0; }

.elementor-widget-price-table .elementor-widget-container {
  overflow: hidden;
  background-color: #f7f7f7; }

.elementor-flip-box {
  height: 280px;
  position: relative;
  -webkit-perspective: 1000px;
          perspective: 1000px;
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d; }
  @media (max-device-width: 1024px) {
    .elementor-flip-box {
      cursor: pointer; } }
  .elementor-flip-box__front {
    background-color: #1abc9c; }
  .elementor-flip-box__back {
    background-color: #4054b2;
    display: block; }
  .elementor-flip-box__layer {
    position: absolute;
    width: 100%;
    height: 100%;
    -webkit-transition: all .6s ease-in-out;
    -o-transition: all .6s ease-in-out;
    transition: all .6s ease-in-out; }
    .elementor-flip-box__layer__overlay {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      width: 100%;
      height: 100%;
      -webkit-box-orient: vertical;
      -webkit-box-direction: normal;
          -ms-flex-direction: column;
              flex-direction: column;
      -webkit-box-pack: center;
          -ms-flex-pack: center;
              justify-content: center;
      -webkit-box-align: stretch;
          -ms-flex-align: stretch;
              align-items: stretch;
      text-align: center;
      padding: 35px;
      color: white; }
    .elementor-flip-box__layer__title {
      font-size: 21px; }
    .elementor-flip-box__layer__description {
      font-size: 14px; }
    .elementor-flip-box__layer__description:not(:last-child), .elementor-flip-box__layer__title:not(:last-child) {
      margin: 0 0 20px 0;
      padding: 0; }
    .elementor-flip-box__layer__title {
      line-height: 1;
      font-weight: 600; }
  .elementor-flip-box,
  .elementor-flip-box .elementor-view-framed,
  .elementor-flip-box .elementor-view-stacked {
    --e-flip-box-view-framed-stacked-icon-color: #fff; }
    .elementor-flip-box .elementor-icon,
    .elementor-flip-box .elementor-view-framed .elementor-icon,
    .elementor-flip-box .elementor-view-stacked .elementor-icon {
      color: var(--e-flip-box-view-framed-stacked-icon-color); }
      .elementor-flip-box .elementor-icon svg,
      .elementor-flip-box .elementor-view-framed .elementor-icon svg,
      .elementor-flip-box .elementor-view-stacked .elementor-icon svg {
        fill: var(--e-flip-box-view-framed-stacked-icon-color); }
  .elementor-flip-box .elementor-view-framed .elementor-icon {
    border-color: #fff; }
  .elementor-flip-box .elementor-view-stacked .elementor-icon {
    background-color: rgba(0, 0, 0, 0.5); }
  .elementor-flip-box__button.elementor-button {
    cursor: pointer;
    -ms-flex-item-align: center;
        align-self: center;
    margin-left: auto;
    margin-right: auto;
    border: solid 2px white;
    background: transparent; }
    .elementor-flip-box__button.elementor-button:hover {
      background: transparent;
      text-decoration: none; }
  .elementor-flip-box__image {
    margin: 0 0 20px 0;
    display: inline-block;
    width: 100%; }
    .elementor-flip-box__image img {
      width: 50%; }
  .elementor-flip-box .elementor-icon-wrapper {
    margin-bottom: 20px; }
  .elementor-flip-box--3d .elementor-flip-box__layer__inner {
    -webkit-transform: translateZ(90px) scale(0.91);
            transform: translateZ(90px) scale(0.91); }
  .elementor-flip-box--3d .elementor-flip-box__layer__overlay {
    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
    -webkit-transform: translateZ(0.1px);
            transform: translateZ(0.1px); }
  .elementor-flip-box--effect-flip .elementor-flip-box {
    -webkit-perspective: 1000px;
            perspective: 1000px;
    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d; }
    .elementor-flip-box--effect-flip .elementor-flip-box__layer {
      -webkit-transform-style: preserve-3d;
              transform-style: preserve-3d;
      -webkit-backface-visibility: hidden;
              backface-visibility: hidden; }
    .elementor-flip-box--effect-flip .elementor-flip-box__front {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none;
      z-index: 1; }
    .elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__back {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box__back {
    -webkit-transform: rotateX(0) rotateY(-180deg);
            transform: rotateX(0) rotateY(-180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: rotateX(0) rotateY(180deg);
            transform: rotateX(0) rotateY(180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box__back {
    -webkit-transform: rotateX(0) rotateY(180deg);
            transform: rotateX(0) rotateY(180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: rotateX(0) rotateY(-180deg);
            transform: rotateX(0) rotateY(-180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box__back {
    -webkit-transform: rotateX(-180deg) rotateY(0);
            transform: rotateX(-180deg) rotateY(0); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: rotateX(180deg) rotateY(0);
            transform: rotateX(180deg) rotateY(0); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box__back {
    -webkit-transform: rotateX(180deg) rotateY(0);
            transform: rotateX(180deg) rotateY(0); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: rotateX(-180deg) rotateY(0);
            transform: rotateX(-180deg) rotateY(0); }
  .elementor-flip-box--effect-push .elementor-flip-box__front {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none; }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: translateX(100%) translateY(0);
        -ms-transform: translateX(100%) translateY(0);
            transform: translateX(100%) translateY(0); }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: translateX(-100%) translateY(0);
        -ms-transform: translateX(-100%) translateY(0);
            transform: translateX(-100%) translateY(0); }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: translateX(0) translateY(-100%);
        -ms-transform: translateX(0) translateY(-100%);
            transform: translateX(0) translateY(-100%); }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: translateX(0) translateY(100%);
        -ms-transform: translateX(0) translateY(100%);
            transform: translateX(0) translateY(100%); }
  .elementor-flip-box--effect-slide .elementor-flip-box, .elementor-flip-box--effect-push .elementor-flip-box {
    overflow: hidden; }
    .elementor-flip-box--effect-slide .elementor-flip-box:hover .elementor-flip-box__back, .elementor-flip-box--effect-push .elementor-flip-box:hover .elementor-flip-box__back {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-right .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box__back {
    -webkit-transform: translateX(-100%) translateY(0);
        -ms-transform: translateX(-100%) translateY(0);
            transform: translateX(-100%) translateY(0); }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-left .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box__back {
    -webkit-transform: translateX(100%) translateY(0);
        -ms-transform: translateX(100%) translateY(0);
            transform: translateX(100%) translateY(0); }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-up .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box__back {
    -webkit-transform: translateX(0) translateY(100%);
        -ms-transform: translateX(0) translateY(100%);
            transform: translateX(0) translateY(100%); }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-down .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box__back {
    -webkit-transform: translateX(0) translateY(-100%);
        -ms-transform: translateX(0) translateY(-100%);
            transform: translateX(0) translateY(-100%); }
  .elementor-flip-box--effect-zoom-out .elementor-flip-box .elementor-flip-box__front {
    -webkit-transition: opacity 0.35s, width 0.1ms, -webkit-transform 0.7s;
    transition: opacity 0.35s, width 0.1ms, -webkit-transform 0.7s;
    -o-transition: transform 0.7s, opacity 0.35s, width 0.1ms;
    transition: transform 0.7s, opacity 0.35s, width 0.1ms;
    transition: transform 0.7s, opacity 0.35s, width 0.1ms, -webkit-transform 0.7s;
    opacity: 1;
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1);
    z-index: 1;
    width: 100%; }
  .elementor-flip-box--effect-zoom-out .elementor-flip-box:hover .elementor-flip-box__front {
    width: 0;
    opacity: 0;
    -webkit-transform: scale(0.7);
        -ms-transform: scale(0.7);
            transform: scale(0.7);
    -webkit-transition: opacity 0.7s 0.1s, width 0.1ms 0.7s, -webkit-transform 0.8s;
    transition: opacity 0.7s 0.1s, width 0.1ms 0.7s, -webkit-transform 0.8s;
    -o-transition: transform 0.8s, opacity 0.7s 0.1s, width 0.1ms 0.7s;
    transition: transform 0.8s, opacity 0.7s 0.1s, width 0.1ms 0.7s;
    transition: transform 0.8s, opacity 0.7s 0.1s, width 0.1ms 0.7s, -webkit-transform 0.8s; }
  .elementor-flip-box--effect-zoom-in .elementor-flip-box .elementor-flip-box__back {
    -webkit-transition: opacity 0.5s 0.2s, -webkit-transform 0.7s;
    transition: opacity 0.5s 0.2s, -webkit-transform 0.7s;
    -o-transition: transform 0.7s, opacity 0.5s 0.2s;
    transition: transform 0.7s, opacity 0.5s 0.2s;
    transition: transform 0.7s, opacity 0.5s 0.2s, -webkit-transform 0.7s;
    opacity: 0;
    -webkit-transform: scale(0.7);
        -ms-transform: scale(0.7);
            transform: scale(0.7); }
  .elementor-flip-box--effect-zoom-in .elementor-flip-box:hover .elementor-flip-box__back {
    -webkit-transition: opacity 0.5s, -webkit-transform 0.7s;
    transition: opacity 0.5s, -webkit-transform 0.7s;
    -o-transition: transform 0.7s, opacity 0.5s;
    transition: transform 0.7s, opacity 0.5s;
    transition: transform 0.7s, opacity 0.5s, -webkit-transform 0.7s;
    opacity: 1;
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1); }
  .elementor-flip-box--effect-fade .elementor-flip-box .elementor-flip-box__back {
    opacity: 0; }
  .elementor-flip-box--effect-fade .elementor-flip-box:hover .elementor-flip-box__back {
    opacity: 1; }

.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__front {
  display: none; }

.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__back {
  -webkit-transform: none;
      -ms-transform: none;
          transform: none;
  opacity: 1; }

.elementor-widget-call-to-action .elementor-widget-container {
  overflow: hidden; }

.elementor-cta {
  position: relative;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  overflow: hidden;
  -webkit-transition: 0.5s;
  -o-transition: 0.5s;
  transition: 0.5s; }
  .elementor-cta--skin-classic .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--skin-classic .elementor-cta__bg-wrapper {
      position: relative;
      min-height: 200px;
      width: 100%; }
    .elementor-cta--skin-classic .elementor-cta__content {
      -webkit-transition: all 0.4s;
      -o-transition: all 0.4s;
      transition: all 0.4s;
      width: 100%;
      background-color: #f7f7f7; }
    .elementor-cta--skin-classic .elementor-cta__content-item, .elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon {
      color: #55595c;
      border-color: #55595c;
      fill: #55595c; }
    .elementor-cta--skin-classic .elementor-cta__button.elementor-button {
      color: #55595c;
      border-color: #55595c; }
  .elementor-cta--skin-cover .elementor-cta {
    display: block; }
    .elementor-cta--skin-cover .elementor-cta__bg-wrapper {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      -webkit-transition: all 0.4s;
      -o-transition: all 0.4s;
      transition: all 0.4s;
      width: 100%; }
    .elementor-cta--skin-cover .elementor-cta__content {
      min-height: 280px; }
    .elementor-cta--skin-cover .elementor-cta__content-item, .elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon {
      color: #fff;
      border-color: #fff; }
    .elementor-cta--skin-cover .elementor-cta__button.elementor-button {
      color: white;
      border-color: white; }
  .elementor-cta--layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--layout-image-left .elementor-cta, .elementor-cta--layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--layout-image-left .elementor-cta__content, .elementor-cta--layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
  .elementor-cta--layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-cta__bg, .elementor-cta__bg-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    -webkit-transition: all 0.4s;
    -o-transition: all 0.4s;
    transition: all 0.4s; }
  .elementor-cta__bg-wrapper {
    z-index: 1;
    overflow: hidden; }
  .elementor-cta__bg {
    -webkit-background-size: cover;
            background-size: cover;
    background-position: center;
    z-index: 1; }
  .elementor-cta__bg-overlay {
    z-index: 2; }
  .elementor-cta__button.elementor-button {
    cursor: pointer;
    -ms-flex-item-align: center;
        align-self: center;
    margin-left: auto;
    margin-right: auto;
    border: solid 2px white;
    background: transparent; }
    .elementor-cta__button.elementor-button:hover {
      background: transparent;
      text-decoration: none; }
  .elementor-cta__title {
    font-size: 23px; }
  .elementor-cta__content {
    z-index: 1;
    overflow: hidden;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -ms-flex-line-pack: center;
        align-content: center;
    padding: 35px;
    width: 100%; }
    .elementor-cta__content, .elementor-cta__content-item {
      position: relative;
      -webkit-transition: 0.5s;
      -o-transition: 0.5s;
      transition: 0.5s;
      color: #fff; }
    .elementor-cta__content-item {
      width: 100%;
      margin: 0; }
      .elementor-cta__content-item:not(:last-child) {
        margin-bottom: 15px; }
      .elementor-cta__content-item .elementor-icon {
        color: #fff; }
  .elementor-cta--valign-top .elementor-cta__content {
    -ms-flex-line-pack: start;
        align-content: flex-start;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start; }
  .elementor-cta--valign-middle .elementor-cta__content {
    -ms-flex-line-pack: center;
        align-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
  .elementor-cta--valign-bottom .elementor-cta__content {
    -ms-flex-line-pack: end;
        align-content: flex-end;
    -webkit-box-align: end;
        -ms-flex-align: end;
            align-items: flex-end; }
  .elementor-cta:hover .elementor-cta__bg-overlay {
    background-color: rgba(0, 0, 0, 0.3); }

@media (max-device-width: 1024px) {
  .elementor-cta {
    cursor: pointer; } }

@media (min-width: -1px) {
  .elementor-cta--widescreen-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--widescreen-layout-image-left .elementor-cta, .elementor-cta--widescreen-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--widescreen-layout-image-left .elementor-cta__content, .elementor-cta--widescreen-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--widescreen-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
  .elementor-cta--widescreen-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; } }

@media (max-width: -1px) {
  .elementor-cta--laptop-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--laptop-layout-image-left .elementor-cta, .elementor-cta--laptop-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--laptop-layout-image-left .elementor-cta__content, .elementor-cta--laptop-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--laptop-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
  .elementor-cta--laptop-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; } }

@media (max-width: -1px) {
  .elementor-cta--tablet_extra-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--tablet_extra-layout-image-left .elementor-cta, .elementor-cta--tablet_extra-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--tablet_extra-layout-image-left .elementor-cta__content, .elementor-cta--tablet_extra-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--tablet_extra-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
  .elementor-cta--tablet_extra-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; } }

@media (max-width: 1024px) {
  .elementor-cta--tablet-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--tablet-layout-image-left .elementor-cta, .elementor-cta--tablet-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--tablet-layout-image-left .elementor-cta__content, .elementor-cta--tablet-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--tablet-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
  .elementor-cta--tablet-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; } }

@media (max-width: -1px) {
  .elementor-cta--mobile_extra-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--mobile_extra-layout-image-left .elementor-cta, .elementor-cta--mobile_extra-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--mobile_extra-layout-image-left .elementor-cta__content, .elementor-cta--mobile_extra-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--mobile_extra-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
  .elementor-cta--mobile_extra-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; } }

@media (max-width: 767px) {
  .elementor-cta--mobile-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--mobile-layout-image-left .elementor-cta, .elementor-cta--mobile-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--mobile-layout-image-left .elementor-cta__content, .elementor-cta--mobile-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--mobile-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
  .elementor-cta--mobile-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; } }

.elementor-ribbon {
  position: absolute;
  z-index: 1;
  top: 0;
  left: 0;
  right: auto;
  -webkit-transform: rotate(0);
      -ms-transform: rotate(0);
          transform: rotate(0);
  width: 150px;
  overflow: hidden;
  height: 150px; }
  .elementor-ribbon-inner {
    text-align: center;
    left: 0;
    width: 200%;
    -webkit-transform: translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);
        -ms-transform: translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);
            transform: translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);
    margin-top: 35px;
    font-size: 13px;
    line-height: 2;
    font-weight: 800;
    text-transform: uppercase;
    background: #000;
    color: #fff; }
  .elementor-ribbon.elementor-ribbon-left {
    -webkit-transform: rotate(0);
        -ms-transform: rotate(0);
            transform: rotate(0);
    left: 0;
    right: auto; }
  .elementor-ribbon.elementor-ribbon-right {
    -webkit-transform: rotate(90deg);
        -ms-transform: rotate(90deg);
            transform: rotate(90deg);
    left: auto;
    right: 0; }

.elementor-widget-countdown .elementor-countdown-expire--message {
  display: none;
  padding: 20px;
  text-align: center; }

.elementor-widget-countdown .elementor-countdown-wrapper {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: reverse;
      -ms-flex-direction: row-reverse;
          flex-direction: row-reverse; }

.elementor-widget-countdown .elementor-countdown-item {
  padding: 20px 0;
  text-align: center;
  color: #ffffff; }

.elementor-widget-countdown .elementor-countdown-digits,
.elementor-widget-countdown .elementor-countdown-label {
  line-height: 1; }

.elementor-widget-countdown .elementor-countdown-digits {
  font-size: 69px; }

.elementor-widget-countdown .elementor-countdown-label {
  font-size: 19px; }

.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-wrapper {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  margin-right: auto;
  margin-left: auto; }

.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-digits,
.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-label {
  display: block; }

.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-item {
  -ms-flex-preferred-size: 0;
      flex-basis: 0;
  -webkit-box-flex: 1;
      -ms-flex-positive: 1;
          flex-grow: 1; }

.elementor-widget-countdown.elementor-countdown--label-inline {
  text-align: center; }
  .elementor-widget-countdown.elementor-countdown--label-inline .elementor-countdown-item {
    display: inline-block;
    padding-left: 5px;
    padding-right: 5px; }

/* Slides Widget */
.elementor-slides .swiper-slide-bg {
  -webkit-background-size: cover;
          background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  min-width: 100%;
  min-height: 100%; }

.elementor-slides .swiper-slide-inner {
  background-repeat: no-repeat;
  background-position: center;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  padding: 50px;
  margin: auto; }
  .elementor-slides .swiper-slide-inner, .elementor-slides .swiper-slide-inner:hover {
    color: white;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .elementor-slides .swiper-slide-inner .elementor-background-overlay {
    position: absolute;
    z-index: 0;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0; }
  .elementor-slides .swiper-slide-inner .elementor-slide-content {
    position: relative;
    z-index: 1;
    width: 100%; }
  .elementor-slides .swiper-slide-inner .elementor-slide-heading {
    font-size: 35px;
    font-weight: bold;
    line-height: 1; }
  .elementor-slides .swiper-slide-inner .elementor-slide-description {
    font-size: 17px;
    line-height: 1.4; }
  .elementor-slides .swiper-slide-inner .elementor-slide-heading:not(:last-child), .elementor-slides .swiper-slide-inner .elementor-slide-description:not(:last-child) {
    margin-bottom: 30px; }
  .elementor-slides .swiper-slide-inner .elementor-slide-button {
    border: solid 2px white;
    color: white;
    background: transparent;
    display: inline-block; }
    .elementor-slides .swiper-slide-inner .elementor-slide-button, .elementor-slides .swiper-slide-inner .elementor-slide-button:hover {
      background: transparent;
      color: inherit;
      text-decoration: none; }

.elementor--v-position-top .swiper-slide-inner {
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start; }

.elementor--v-position-bottom .swiper-slide-inner {
  -webkit-box-align: end;
      -ms-flex-align: end;
          align-items: flex-end; }

.elementor--v-position-middle .swiper-slide-inner {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.elementor--h-position-left .swiper-slide-inner {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor--h-position-right .swiper-slide-inner {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor--h-position-center .swiper-slide-inner {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

body.rtl .elementor-widget-slides .elementor-swiper-button-next {
  left: 10px;
  right: auto; }

body.rtl .elementor-widget-slides .elementor-swiper-button-prev {
  right: 10px;
  left: auto; }

.elementor-slides-wrapper div:not(.swiper-slide) > .swiper-slide-inner {
  display: none; }

@media (max-width: 767px) {
  .elementor-slides .swiper-slide-inner {
    padding: 30px; }
    .elementor-slides .swiper-slide-inner .elementor-slide-heading {
      font-size: 23px;
      line-height: 1;
      margin-bottom: 15px; }
    .elementor-slides .swiper-slide-inner .elementor-slide-description {
      font-size: 13px;
      line-height: 1.4;
      margin-bottom: 15px; } }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn {
  background-color: var(--e-share-buttons-primary-color, #ea4335); }
  .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text {
    color: var(--e-share-buttons-secondary-color, #fff); }
    .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg {
      fill: var(--e-share-buttons-secondary-color, #fff); }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn {
  color: var(--e-share-buttons-primary-color, #ea4335);
  border-color: var(--e-share-buttons-primary-color, #ea4335); }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon {
  background-color: var(--e-share-buttons-primary-color, #ea4335);
  color: var(--e-share-buttons-secondary-color, #fff); }
  .elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon svg {
    fill: var(--e-share-buttons-secondary-color, #fff); }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon {
  color: var(--e-share-buttons-primary-color, #ea4335); }
  .elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon svg {
    fill: var(--e-share-buttons-primary-color, #ea4335); }

.elementor-share-buttons--color-official .elementor-share-btn:hover {
  -webkit-filter: saturate(1.5) brightness(1.2);
          filter: saturate(1.5) brightness(1.2); }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_digg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_digg {
  background-color: #005be2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_email, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_email {
  background-color: #ea4335; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_print, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_print {
  background-color: #aaaaaa; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_facebook, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_facebook {
  background-color: #3b5998; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_google, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_google {
  background-color: #dd4b39; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pocket, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pocket {
  background-color: #EF3F56; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_linkedin, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_linkedin {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_odnoklassniki, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_odnoklassniki {
  background-color: #F4731C; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pinterest, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pinterest {
  background-color: #bd081c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_reddit, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_reddit {
  background-color: #ff4500; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_skype, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_skype {
  background-color: #00AFF0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_slideshare, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_slideshare {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_snapchat, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_snapchat {
  background-color: #fffc00; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_stumbleupon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_stumbleupon {
  background-color: #EB4924; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_mix, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_mix {
  background-color: #f3782b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_tumblr, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_tumblr {
  background-color: #35465c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitch, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitch {
  background-color: #6441A5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_telegram, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_telegram {
  background-color: #2CA5E0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitter, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitter {
  background-color: #1DA1F2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vimeo, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vimeo {
  background-color: #1ab7ea; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vk, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vk {
  background-color: #45668e; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_whatsapp, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_whatsapp {
  background-color: #25d366; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_wordpress, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_wordpress {
  background-color: #21759b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_xing, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_xing {
  background-color: #026466; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg {
  color: #005be2; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg svg {
    fill: #005be2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email {
  color: #ea4335; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email svg {
    fill: #ea4335; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print {
  color: #aaaaaa; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print svg {
    fill: #aaaaaa; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook {
  color: #3b5998; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook svg {
    fill: #3b5998; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google {
  color: #dd4b39; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google svg {
    fill: #dd4b39; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket {
  color: #EF3F56; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket svg {
    fill: #EF3F56; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin {
  color: #0077b5; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin svg {
    fill: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki {
  color: #F4731C; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki svg {
    fill: #F4731C; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest {
  color: #bd081c; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest svg {
    fill: #bd081c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit {
  color: #ff4500; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit svg {
    fill: #ff4500; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype {
  color: #00AFF0; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype svg {
    fill: #00AFF0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare {
  color: #0077b5; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare svg {
    fill: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat {
  color: #fffc00; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat svg {
    fill: #fffc00; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon {
  color: #EB4924; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon svg {
    fill: #EB4924; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix {
  color: #f3782b; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix svg {
    fill: #f3782b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr {
  color: #35465c; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr svg {
    fill: #35465c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch {
  color: #6441A5; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch svg {
    fill: #6441A5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram {
  color: #2CA5E0; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram svg {
    fill: #2CA5E0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter {
  color: #1DA1F2; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter svg {
    fill: #1DA1F2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo {
  color: #1ab7ea; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo svg {
    fill: #1ab7ea; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk {
  color: #45668e; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk svg {
    fill: #45668e; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp {
  color: #25d366; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp svg {
    fill: #25d366; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress {
  color: #21759b; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress svg {
    fill: #21759b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing {
  color: #026466; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing svg {
    fill: #026466; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_digg .elementor-share-btn__icon {
  background-color: #005be2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_email .elementor-share-btn__icon {
  background-color: #ea4335; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_print .elementor-share-btn__icon {
  background-color: #aaaaaa; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_facebook .elementor-share-btn__icon {
  background-color: #3b5998; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_google .elementor-share-btn__icon {
  background-color: #dd4b39; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pocket .elementor-share-btn__icon {
  background-color: #EF3F56; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_linkedin .elementor-share-btn__icon {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_odnoklassniki .elementor-share-btn__icon {
  background-color: #F4731C; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pinterest .elementor-share-btn__icon {
  background-color: #bd081c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_reddit .elementor-share-btn__icon {
  background-color: #ff4500; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_skype .elementor-share-btn__icon {
  background-color: #00AFF0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_slideshare .elementor-share-btn__icon {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_snapchat .elementor-share-btn__icon {
  background-color: #fffc00; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_stumbleupon .elementor-share-btn__icon {
  background-color: #EB4924; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_mix .elementor-share-btn__icon {
  background-color: #f3782b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_tumblr .elementor-share-btn__icon {
  background-color: #35465c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitch .elementor-share-btn__icon {
  background-color: #6441A5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_telegram .elementor-share-btn__icon {
  background-color: #2CA5E0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitter .elementor-share-btn__icon {
  background-color: #1DA1F2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vimeo .elementor-share-btn__icon {
  background-color: #1ab7ea; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vk .elementor-share-btn__icon {
  background-color: #45668e; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_whatsapp .elementor-share-btn__icon {
  background-color: #25d366; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_wordpress .elementor-share-btn__icon {
  background-color: #21759b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_xing .elementor-share-btn__icon {
  background-color: #026466; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon {
  color: var(--e-share-buttons-icon-color, #fff); }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon svg {
    fill: var(--e-share-buttons-icon-color, #fff); }

.elementor-share-buttons--skin-framed .elementor-share-btn__icon, .elementor-share-buttons--skin-boxed .elementor-share-btn__icon {
  margin-right: -0.2em; }

.elementor-share-buttons--skin-framed .elementor-share-btn, .elementor-share-buttons--skin-boxed .elementor-share-btn {
  border-style: solid; }

.elementor-share-buttons--skin-gradient .elementor-share-btn__text {
  background-image: -webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.12)), to(rgba(0, 0, 0, 0)));
  background-image: -webkit-linear-gradient(right, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0));
  background-image: -o-linear-gradient(right, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0));
  background-image: linear-gradient(to left, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0)); }

.elementor-share-buttons--skin-gradient.elementor-share-buttons--view-icon .elementor-share-btn__icon {
  background-image: -webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.12)), to(rgba(0, 0, 0, 0)));
  background-image: -webkit-linear-gradient(right, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0));
  background-image: -o-linear-gradient(right, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0));
  background-image: linear-gradient(to left, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0)); }

.elementor-share-buttons--skin-boxed .elementor-share-btn__text, .elementor-share-buttons--skin-minimal .elementor-share-btn__text, .elementor-share-buttons--skin-gradient .elementor-share-btn__text {
  padding-right: 0.9em; }

.elementor-share-buttons--skin-flat .elementor-share-btn, .elementor-share-buttons--skin-gradient .elementor-share-btn {
  background-color: var(--e-share-buttons-primary-color, #ea4335); }
  .elementor-share-buttons--skin-flat .elementor-share-btn__icon, .elementor-share-buttons--skin-flat .elementor-share-btn__text, .elementor-share-buttons--skin-gradient .elementor-share-btn__icon, .elementor-share-buttons--skin-gradient .elementor-share-btn__text {
    color: var(--e-share-buttons-secondary-color, #fff); }
    .elementor-share-buttons--skin-flat .elementor-share-btn__icon svg, .elementor-share-buttons--skin-flat .elementor-share-btn__text svg, .elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg, .elementor-share-buttons--skin-gradient .elementor-share-btn__text svg {
      fill: var(--e-share-buttons-secondary-color, #fff); }

.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-rounded .elementor-share-btn__icon {
  border-radius: 0.5em; }

.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-circle .elementor-share-btn__icon {
  border-radius: 99.9em; }

.elementor-share-buttons--view-text .elementor-share-btn__text {
  padding-right: 1em; }

.elementor-share-buttons--view-text .elementor-share-btn, .elementor-share-buttons--view-icon .elementor-share-btn {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }
  .elementor-share-buttons--view-text .elementor-share-btn__icon, .elementor-share-buttons--view-text .elementor-share-btn__text, .elementor-share-buttons--view-icon .elementor-share-btn__icon, .elementor-share-buttons--view-icon .elementor-share-btn__text {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }

.elementor-share-buttons--shape-rounded .elementor-share-btn {
  border-radius: 0.5em; }

.elementor-share-buttons--shape-circle .elementor-share-btn {
  border-radius: 99.9em; }

.elementor-share-btn {
  overflow: hidden;
  font-size: 10px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start;
  -webkit-transition-duration: 0.2s;
       -o-transition-duration: 0.2s;
          transition-duration: 0.2s;
  -webkit-transition-property: background-color, border-color, -webkit-filter;
  transition-property: background-color, border-color, -webkit-filter;
  -o-transition-property: filter, background-color, border-color;
  transition-property: filter, background-color, border-color;
  transition-property: filter, background-color, border-color, -webkit-filter;
  height: 4.5em;
  cursor: pointer; }
  .elementor-share-btn__icon, .elementor-share-btn__text {
    -webkit-transition-property: color, background-color;
    -o-transition-property: color, background-color;
    transition-property: color, background-color;
    -webkit-transition-duration: 0.2s;
         -o-transition-duration: 0.2s;
            transition-duration: 0.2s; }
  .elementor-share-btn__icon {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-item-align: stretch;
        align-self: stretch;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    width: 4.5em;
    position: relative; }
    .elementor-share-btn__icon i {
      font-size: var(--e-share-buttons-icon-size, 1.7em); }
    .elementor-share-btn__icon svg {
      width: var(--e-share-buttons-icon-size, 1.7em);
      height: var(--e-share-buttons-icon-size, 1.7em); }
  .elementor-share-btn__text {
    font-size: 1.5em;
    padding-left: 1em;
    -ms-flex-item-align: stretch;
        align-self: stretch;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    font-weight: 100; }
  .elementor-share-btn__title {
    font-weight: bold;
    -ms-flex-negative: 0;
        flex-shrink: 0; }

.elementor-widget-share-buttons {
  text-align: var(--alignment, inherit);
  -moz-text-align-last: var(--alignment, inherit);
       text-align-last: var(--alignment, inherit); }
  .elementor-widget-share-buttons.elementor-grid-0 .elementor-widget-container {
    font-size: 0; }

.elementor-skin-carousel .elementor-main-swiper, .elementor-skin-coverflow .elementor-main-swiper {
  height: 230px; }

.elementor-skin-slideshow .elementor-main-swiper {
  height: 450px;
  position: relative; }

.elementor-skin-slideshow .elementor-thumbnails-swiper .elementor-custom-embed-play i {
  font-size: 50px; }

.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide {
  cursor: pointer; }
  .elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide:not(.swiper-slide-active):after {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: rgba(0, 0, 0, 0.3); }

.elementor-carousel-image {
  background: no-repeat center;
  -webkit-background-size: cover;
          background-size: cover;
  height: 100%;
  position: relative; }

.elementor-carousel-image-overlay {
  position: absolute;
  top: 0;
  left: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  text-align: center;
  width: 100%;
  height: 100%;
  padding: 20px;
  color: var(--e-carousel-image-overlay-color, #fff);
  background-color: rgba(129, 138, 145, 0.8);
  -webkit-transition: opacity .5s, -webkit-transform .5s;
  transition: opacity .5s, -webkit-transform .5s;
  -o-transition: transform .5s, opacity .5s;
  transition: transform .5s, opacity .5s;
  transition: transform .5s, opacity .5s, -webkit-transform .5s; }
  .elementor-carousel-image-overlay i {
    font-size: var(--e-carousel-image-overlay-icon-size, 21px); }
  .elementor-carousel-image-overlay svg {
    fill: var(--e-carousel-image-overlay-color, #fff);
    width: var(--e-carousel-image-overlay-icon-size, 21px);
    height: var(--e-carousel-image-overlay-icon-size, 21px); }

.elementor-testimonial__image {
  -ms-flex-negative: 0;
      flex-shrink: 0; }
  .elementor-testimonial__image img {
    border-radius: 999px;
    -webkit-box-sizing: content-box;
            box-sizing: content-box;
    -o-object-fit: cover;
       object-fit: cover; }

.elementor-testimonial__footer, .elementor-testimonial__header {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-testimonial__footer cite, .elementor-testimonial__header cite {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    font-style: normal;
    font-size: 14px;
    line-height: 1.5; }

.elementor-testimonial__name {
  font-weight: bold; }

.elementor-testimonial--layout-image_inline .elementor-testimonial__footer, .elementor-testimonial--layout-image_above .elementor-testimonial__footer {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.elementor-testimonial--layout-image_inline .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_above .elementor-testimonial__image + cite {
  margin-right: 20px; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__footer, .elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__footer {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-direction: row;
          flex-direction: row; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__image + cite {
  margin-left: 20px;
  margin-right: 0; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__footer, .elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__footer {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: reverse;
      -ms-flex-direction: row-reverse;
          flex-direction: row-reverse; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__image + cite {
  margin-left: 0;
  margin-right: 20px; }

.elementor-testimonial--layout-image_inline .elementor-testimonial__footer {
  margin-top: 25px; }

.elementor-testimonial--layout-image_above .elementor-testimonial {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: reverse;
      -ms-flex-direction: column-reverse;
          flex-direction: column-reverse; }
  .elementor-testimonial--layout-image_above .elementor-testimonial__footer {
    margin-bottom: 25px; }

.elementor-testimonial--layout-image_stacked .elementor-testimonial__footer {
  margin-top: 25px;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap; }

.elementor-testimonial--layout-image_stacked .elementor-testimonial__image, .elementor-testimonial--layout-image_stacked .elementor-testimonial cite {
  margin-top: 15px;
  width: 100%; }

.elementor-testimonial--layout-image_left .elementor-testimonial, .elementor-testimonial--layout-image_right .elementor-testimonial {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch; }
  .elementor-testimonial--layout-image_left .elementor-testimonial__footer, .elementor-testimonial--layout-image_right .elementor-testimonial__footer {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    text-align: center; }
  .elementor-testimonial--layout-image_left .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_right .elementor-testimonial__image + cite {
    margin-top: 15px; }

.elementor-testimonial--layout-image_left.elementor-testimonial--align-center .elementor-testimonial__footer, .elementor-testimonial--layout-image_right.elementor-testimonial--align-center .elementor-testimonial__footer {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-testimonial--layout-image_left .elementor-testimonial {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-direction: row;
          flex-direction: row; }
  .elementor-testimonial--layout-image_left .elementor-testimonial__footer {
    padding-left: 20px; }

.elementor-testimonial--layout-image_right .elementor-testimonial {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: reverse;
      -ms-flex-direction: row-reverse;
          flex-direction: row-reverse; }
  .elementor-testimonial--layout-image_right .elementor-testimonial__footer {
    padding-right: 20px; }

.elementor-testimonial--align-right .elementor-testimonial {
  text-align: right; }

.elementor-testimonial--align-left .elementor-testimonial {
  text-align: left; }

.elementor-testimonial--align-center .elementor-testimonial {
  text-align: center; }
  .elementor-testimonial--align-center .elementor-testimonial__footer {
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }

.elementor-testimonial--align-center.elementor-testimonial--layout-image_inline .elementor-testimonial__image + cite {
  text-align: right; }

.elementor-testimonial--skin-default.elementor-testimonial--layout-image_right .elementor-testimonial__cite, .elementor-testimonial--skin-default.elementor-testimonial--layout-image_left .elementor-testimonial__cite, .elementor-testimonial--skin-default.elementor-testimonial--layout-image_above .elementor-testimonial__cite {
  width: 100%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  margin-top: 25px; }

.elementor-testimonial--skin-bubble .elementor-testimonial__content {
  background-color: #e6e9ec;
  padding: 20px;
  position: relative; }
  .elementor-testimonial--skin-bubble .elementor-testimonial__content:after {
    content: '';
    display: block;
    width: 14px;
    height: 14px;
    background-color: #e6e9ec;
    position: absolute;
    -webkit-transform: scaleX(0.75) rotate(45deg);
        -ms-transform: scaleX(0.75) rotate(45deg);
            transform: scaleX(0.75) rotate(45deg);
    border-width: 0;
    -webkit-box-sizing: content-box;
            box-sizing: content-box; }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above .elementor-testimonial__content:after {
  bottom: calc( 100% - 7px);
  -webkit-transform: scaleX(0.75) rotate(-135deg);
      -ms-transform: scaleX(0.75) rotate(-135deg);
          transform: scaleX(0.75) rotate(-135deg); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-center .elementor-testimonial__content:after {
  left: 50%;
  -webkit-transform: translateX(-50%) scaleX(0.75) rotate(-135deg);
      -ms-transform: translateX(-50%) scaleX(0.75) rotate(-135deg);
          transform: translateX(-50%) scaleX(0.75) rotate(-135deg); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline .elementor-testimonial__content:after {
  top: calc( 100% - 7px); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-center .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-center .elementor-testimonial__content:after {
  left: 50%;
  -webkit-transform: translateX(-50%) scaleX(0.75) rotate(45deg);
      -ms-transform: translateX(-50%) scaleX(0.75) rotate(45deg);
          transform: translateX(-50%) scaleX(0.75) rotate(45deg); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-left .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__content:after {
  left: calc( 20px + ( 50px / 2 )); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-right .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__content:after {
  right: calc( 20px + ( 50px / 2 )); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after {
  -webkit-transform: scaleY(0.75) rotate(135deg);
      -ms-transform: scaleY(0.75) rotate(135deg);
          transform: scaleY(0.75) rotate(135deg);
  left: -8px; }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after {
  -webkit-transform: scaleY(0.75) rotate(-45deg);
      -ms-transform: scaleY(0.75) rotate(-45deg);
          transform: scaleY(0.75) rotate(-45deg);
  right: -8px; }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after {
  top: calc(20px + (50px / 2)); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__footer, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__footer {
  padding-top: 20px; }

.elementor-widget-testimonial-carousel .swiper-slide {
  padding: 20px; }

.elementor-widget-testimonial-carousel .elementor-testimonial__text {
  font-size: 1.3em;
  font-style: italic;
  line-height: 1.5; }

.elementor-widget-testimonial-carousel .elementor-testimonial__image img {
  width: 50px;
  height: 50px; }

.elementor-widget-reviews .swiper-slide {
  background-color: white;
  border: 1px solid #e1e8ed;
  border-radius: 5px;
  padding: 0; }

.elementor-widget-reviews .elementor-testimonial__text {
  font-size: 14px;
  line-height: 20px; }

.elementor-widget-reviews .elementor-testimonial__name {
  color: #1c2022; }

.elementor-widget-reviews .elementor-testimonial__title {
  color: #697882;
  font-size: 12.5px;
  font-weight: normal;
  font-family: inherit; }

.elementor-widget-reviews .elementor-testimonial__image {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-widget-reviews .elementor-testimonial__image img {
    width: 36px;
    height: 36px; }

.elementor-widget-reviews .elementor-testimonial__icon {
  margin-right: auto;
  font-size: 17px; }
  .elementor-widget-reviews .elementor-testimonial__icon .fa + .fa {
    margin-right: 0.15em; }
  .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon {
    color: var(--e-testimonial-icon-color); }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-android {
      --e-testimonial-icon-color: #A4C639; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-apple {
      --e-testimonial-icon-color: #999999; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-behance {
      --e-testimonial-icon-color: #1769ff; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-bitbucket {
      --e-testimonial-icon-color: #205081; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-codepen {
      --e-testimonial-icon-color: #000000; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-delicious {
      --e-testimonial-icon-color: #3399ff; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-digg {
      --e-testimonial-icon-color: #005be2; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-dribbble {
      --e-testimonial-icon-color: #ea4c89; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-envelope {
      --e-testimonial-icon-color: #ea4335; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-facebook {
      --e-testimonial-icon-color: #3b5998; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-flickr {
      --e-testimonial-icon-color: #0063dc; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-foursquare {
      --e-testimonial-icon-color: #2d5be3; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-github {
      --e-testimonial-icon-color: #333333; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-google-plus {
      --e-testimonial-icon-color: #dd4b39; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-houzz {
      --e-testimonial-icon-color: #7ac142; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-instagram {
      --e-testimonial-icon-color: #262626; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-jsfiddle {
      --e-testimonial-icon-color: #487AA2; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-linkedin {
      --e-testimonial-icon-color: #0077b5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-medium {
      --e-testimonial-icon-color: #00ab6b; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-meetup {
      --e-testimonial-icon-color: #ec1c40; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-mixcloud {
      --e-testimonial-icon-color: #273a4b; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-odnoklassniki {
      --e-testimonial-icon-color: #F4731C; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-pinterest {
      --e-testimonial-icon-color: #bd081c; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-product-hunt {
      --e-testimonial-icon-color: #da552f; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-reddit {
      --e-testimonial-icon-color: #ff4500; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-rss {
      --e-testimonial-icon-color: #f26522; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-shopping-cart {
      --e-testimonial-icon-color: #4CAF50; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-skype {
      --e-testimonial-icon-color: #00AFF0; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-slideshare {
      --e-testimonial-icon-color: #0077b5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-snapchat {
      --e-testimonial-icon-color: #fffc00; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-soundcloud {
      --e-testimonial-icon-color: #ff8800; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-spotify {
      --e-testimonial-icon-color: #2ebd59; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stack-overflow {
      --e-testimonial-icon-color: #fe7a15; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-steam {
      --e-testimonial-icon-color: #00adee; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stumbleupon {
      --e-testimonial-icon-color: #EB4924; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-telegram {
      --e-testimonial-icon-color: #2CA5E0; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumb-tack, .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumbtack {
      --e-testimonial-icon-color: #1aa1d8; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tripadvisor {
      --e-testimonial-icon-color: #589442; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tumblr {
      --e-testimonial-icon-color: #35465c; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitch {
      --e-testimonial-icon-color: #6441A5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitter {
      --e-testimonial-icon-color: #1DA1F2; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vimeo {
      --e-testimonial-icon-color: #1ab7ea; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vk {
      --e-testimonial-icon-color: #45668e; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weibo {
      --e-testimonial-icon-color: #DD2430; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weixin {
      --e-testimonial-icon-color: #31A918; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-whatsapp {
      --e-testimonial-icon-color: #25d366; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-wordpress {
      --e-testimonial-icon-color: #21759b; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-xing {
      --e-testimonial-icon-color: #026466; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-yelp {
      --e-testimonial-icon-color: #af0606; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-youtube {
      --e-testimonial-icon-color: #cd201f; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-500px {
      --e-testimonial-icon-color: #0099e5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon svg {
      fill: var(--e-testimonial-icon-color); }

.elementor-widget-reviews .elementor-testimonial__rating {
  background-image: -webkit-gradient(linear, left top, right top, from(#ffc82c), to(#cccccc));
  background-image: -webkit-linear-gradient(left, #ffc82c var(--rating), #cccccc var(--rating));
  background-image: -o-linear-gradient(left, #ffc82c var(--rating), #cccccc var(--rating));
  background-image: linear-gradient(to right, #ffc82c var(--rating), #cccccc var(--rating));
  font-family: eicons; }

.elementor-widget-reviews .elementor-testimonial__header {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  padding-top: 15px;
  padding-bottom: 6px; }

.elementor-widget-reviews .elementor-testimonial__image + cite {
  margin-right: 9px; }

.elementor-widget-reviews .elementor-testimonial__separator {
  margin: 0 auto;
  border-top: 0 none;
  border-bottom: 1px solid #e1e8ed;
  height: 0; }

.elementor-widget-reviews .elementor-testimonial__content {
  padding-top: 6px;
  padding-bottom: 15px; }

.elementor-widget-reviews .elementor-testimonial__content, .elementor-widget-reviews .elementor-testimonial__header {
  padding-left: 15px;
  padding-right: 15px; }

.elementor-widget-reviews.elementor-review--has-separator .elementor-testimonial__header {
  border-bottom: 1px solid #e1e8ed; }

.swiper-pagination-bullets {
  color: #fff;
  cursor: default; }

.swiper-slide {
  will-change: transform;
  border-style: solid;
  border-width: 0;
  -webkit-transition-duration: .5s;
       -o-transition-duration: .5s;
          transition-duration: .5s;
  -webkit-transition-property: border, background, -webkit-transform;
  transition-property: border, background, -webkit-transform;
  -o-transition-property: border, background, transform;
  transition-property: border, background, transform;
  transition-property: border, background, transform, -webkit-transform;
  overflow: hidden; }
  .swiper-slide:not(:hover) .e-overlay-animation-fade {
    opacity: 0; }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-up {
    -webkit-transform: translateY(100%);
        -ms-transform: translateY(100%);
            transform: translateY(100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-down {
    -webkit-transform: translateY(-100%);
        -ms-transform: translateY(-100%);
            transform: translateY(-100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-right {
    -webkit-transform: translateX(-100%);
        -ms-transform: translateX(-100%);
            transform: translateX(-100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-left {
    -webkit-transform: translateX(100%);
        -ms-transform: translateX(100%);
            transform: translateX(100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-zoom-in {
    -webkit-transform: scale(0.5);
        -ms-transform: scale(0.5);
            transform: scale(0.5);
    opacity: 0; }
  .swiper-slide a {
    display: inline; }
    .swiper-slide a.elementor-button {
      display: inline-block; }

.elementor-widget-testimonial-carousel .elementor-arrows-yes .elementor-main-swiper,
.elementor-widget-reviews .elementor-arrows-yes .elementor-main-swiper {
  width: calc( 95% - 40px); }

.elementor-widget-testimonial-carousel .elementor-main-swiper,
.elementor-widget-reviews .elementor-main-swiper {
  width: 95%; }

.elementor-widget-testimonial-carousel .swiper-wrapper,
.elementor-widget-reviews .swiper-wrapper {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch; }

.elementor-widget-testimonial-carousel .swiper-slide,
.elementor-widget-reviews .swiper-slide {
  height: auto; }

.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .swiper-container, .elementor-widget-testimonial-carousel.elementor-pagination-type-fraction .swiper-container,
.elementor-widget-reviews.elementor-pagination-type-bullets .swiper-container,
.elementor-widget-reviews.elementor-pagination-type-fraction .swiper-container {
  padding-bottom: 40px; }

.elementor-widget-testimonial-carousel .elementor-swiper-button-prev,
.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-next,
.elementor-widget-reviews .elementor-swiper-button-prev,
.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-next {
  left: 0;
  right: unset; }

.elementor-widget-testimonial-carousel .elementor-swiper-button-next,
.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-prev,
.elementor-widget-reviews .elementor-swiper-button-next,
.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-prev {
  right: 0;
  left: unset; }

.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-next, .elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-prev,
.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-next,
.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-prev {
  top: calc( 50% - ( 40px / 2 )); }

.elementor-widget-media-carousel .elementor-swiper-button-prev,
.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-next {
  left: 10px;
  right: unset; }

.elementor-widget-media-carousel .elementor-swiper-button-next,
.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-prev {
  right: 10px;
  left: unset; }

.entry-content blockquote.elementor-blockquote:not(.alignright):not(.alignleft),
.entry-summary blockquote.elementor-blockquote {
  margin-right: 0;
  margin-left: 0; }

.elementor-widget-blockquote blockquote {
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  font-size: 100%;
  vertical-align: baseline;
  background: transparent;
  quotes: none;
  border-left: 0 none;
  border-right: 0 none;
  border-top: 0 none;
  border-bottom: 0 none;
  font-style: normal;
  color: #55595c; }
  .elementor-widget-blockquote blockquote:before, .elementor-widget-blockquote blockquote:after,
  .elementor-widget-blockquote blockquote footer:before,
  .elementor-widget-blockquote blockquote footer:after,
  .elementor-widget-blockquote blockquote cite:before,
  .elementor-widget-blockquote blockquote cite:after {
    content: '';
    content: none; }

.elementor-blockquote {
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s; }
  .elementor-blockquote__author, .elementor-blockquote__content {
    margin-bottom: 0;
    font-style: normal; }
  .elementor-blockquote__author {
    font-weight: bold; }
  .elementor-blockquote footer {
    margin-top: 12px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between; }
  .elementor-blockquote__tweet-button {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s;
    color: #1DA1F2;
    -ms-flex-item-align: end;
        align-self: flex-end;
    line-height: 1;
    position: relative;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content; }
    .elementor-blockquote__tweet-button:hover {
      color: #0967a0; }
    .elementor-blockquote__tweet-button span {
      font-weight: 600; }
    .elementor-blockquote__tweet-button i, .elementor-blockquote__tweet-button span {
      vertical-align: middle; }
    .elementor-blockquote__tweet-button i + span,
    .elementor-blockquote__tweet-button svg + span {
      margin-right: 0.5em; }
    .elementor-blockquote__tweet-button svg {
      fill: #1DA1F2;
      height: 1em;
      width: 1em; }
  .elementor-blockquote__tweet-label {
    white-space: pre-wrap; }
  .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button {
    padding: 0.7em 1.2em;
    border-radius: 100em;
    background-color: #1DA1F2;
    color: #fff;
    font-size: 15px; }
    .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover {
      background-color: #0967a0;
      color: #fff; }
      .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover:before, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover:before {
        border-left-color: #0967a0; }
    .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button svg, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button svg {
      fill: #fff;
      height: 1em;
      width: 1em; }
  .elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button, .elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button {
    padding: 0;
    width: 2em;
    height: 2em; }
    .elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i, .elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i {
      position: absolute;
      left: 50%;
      top: 50%;
      -webkit-transform: translate(-50%, -50%);
          -ms-transform: translate(-50%, -50%);
              transform: translate(-50%, -50%); }
  .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:before {
    content: '';
    border: solid 0.5em transparent;
    border-left-color: #1DA1F2;
    position: absolute;
    right: -0.8em;
    top: 50%;
    -webkit-transform: translateY(-50%) scale(1, 0.65);
        -ms-transform: translateY(-50%) scale(1, 0.65);
            transform: translateY(-50%) scale(1, 0.65);
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:before {
    right: auto;
    left: -0.8em;
    border-right-color: #1DA1F2;
    border-left-color: transparent; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:hover:before {
    border-right-color: #0967a0; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:before {
    left: auto;
    right: -0.8em;
    border-right-color: transparent;
    border-left-color: #1DA1F2; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:hover:before {
    border-left-color: #0967a0; }
  .elementor-blockquote--skin-boxed .elementor-blockquote {
    background-color: #e6e9ec;
    padding: 30px; }
  .elementor-blockquote--skin-border .elementor-blockquote {
    border-color: #e6e9ec;
    border-style: solid;
    border-right-width: 7px;
    padding-right: 20px; }
  .elementor-blockquote--skin-quotation .elementor-blockquote:before {
    content: '“';
    font-size: 100px;
    color: #e6e9ec;
    font-family: "Times New Roman", Times, serif;
    font-weight: 900;
    line-height: 1;
    display: block;
    height: 0.6em; }
  .elementor-blockquote--skin-quotation .elementor-blockquote__content {
    margin-top: 15px; }
  .elementor-blockquote--align-left .elementor-blockquote__content {
    text-align: left; }
  .elementor-blockquote--align-left .elementor-blockquote footer {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
  .elementor-blockquote--align-right .elementor-blockquote__content {
    text-align: right; }
  .elementor-blockquote--align-right .elementor-blockquote footer {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-blockquote--align-center .elementor-blockquote {
    text-align: center; }
    .elementor-blockquote--align-center .elementor-blockquote footer {
      display: block; }
    .elementor-blockquote--align-center .elementor-blockquote__author {
      display: block; }
    .elementor-blockquote--align-center .elementor-blockquote__tweet-button {
      margin-right: auto;
      margin-left: auto; }

.elementor-headline {
  font-size: 43px;
  line-height: 1.2;
  display: block; }
  .elementor-headline-dynamic-text {
    color: var(--dynamic-text-color, #aebcb9); }
  .elementor-headline--style-rotate .elementor-headline-dynamic-wrapper {
    text-align: right; }
  .elementor-headline--style-highlight .elementor-headline-dynamic-wrapper {
    overflow: visible;
    text-align: inherit; }
  .elementor-headline--style-highlight .elementor-headline-dynamic-text {
    z-index: 1; }
  .elementor-headline--style-highlight .elementor-headline-plain-text {
    z-index: 1;
    position: relative; }
  .elementor-headline--style-highlight svg {
    position: absolute;
    top: 50%;
    left: 50%;
    width: calc( 100% + 20px);
    height: calc( 100% + 20px);
    -webkit-transform: translate(-50%, -50%);
        -ms-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
    overflow: visible; }
    .elementor-headline--style-highlight svg path {
      stroke: red;
      stroke-width: 9;
      fill: none;
      opacity: 0;
      stroke-dasharray: 0 1500;
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
  .elementor-headline.e-animated svg path {
    -webkit-animation: elementor-headline-dash forwards;
            animation: elementor-headline-dash forwards;
    -webkit-animation-duration: var(--animation-duration, 1.2s);
            animation-duration: var(--animation-duration, 1.2s);
    -webkit-animation-iteration-count: 1;
            animation-iteration-count: 1; }
    .elementor-headline.e-animated svg path:nth-of-type(2) {
      -webkit-animation-delay: calc(var(--animation-duration, 1.2s) / 2);
              animation-delay: calc(var(--animation-duration, 1.2s) / 2); }
  .elementor-headline.e-hide-highlight svg path {
    opacity: 1;
    stroke-dasharray: 1500 1500;
    -webkit-animation: hide-highlight 0.4s forwards;
            animation: hide-highlight 0.4s forwards;
    -webkit-animation-iteration-count: 1;
            animation-iteration-count: 1; }

@-webkit-keyframes elementor-headline-dash {
  from {
    stroke-dasharray: 0 1500;
    opacity: 1; }
  to {
    stroke-dasharray: 1500 1500;
    opacity: 1; } }

@keyframes elementor-headline-dash {
  from {
    stroke-dasharray: 0 1500;
    opacity: 1; }
  to {
    stroke-dasharray: 1500 1500;
    opacity: 1; } }

@-webkit-keyframes hide-highlight {
  from {
    opacity: 1;
    stroke-dasharray: 1500 1500; }
  to {
    opacity: 0;
    -webkit-filter: blur(10px);
            filter: blur(10px); } }

@keyframes hide-highlight {
  from {
    opacity: 1;
    stroke-dasharray: 1500 1500; }
  to {
    opacity: 0;
    -webkit-filter: blur(10px);
            filter: blur(10px); } }

.elementor-headline-text-wrapper {
  vertical-align: bottom; }

.elementor-headline-dynamic-wrapper {
  display: inline-block;
  position: relative; }
  .elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text {
    display: inline-block;
    position: absolute;
    top: 0;
    right: 0; }
    .elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text.elementor-headline-text-active {
      position: relative; }

.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper {
  -webkit-perspective: 300px;
          perspective: 300px; }

.elementor-headline-animation-type-flip .elementor-headline-dynamic-text {
  opacity: 0;
  -webkit-transform-origin: 50% 100%;
      -ms-transform-origin: 50% 100%;
          transform-origin: 50% 100%;
  -webkit-transform: rotateX(180deg);
          transform: rotateX(180deg); }
  .elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1;
    -webkit-transform: rotateX(0deg);
            transform: rotateX(0deg);
    -webkit-animation: elementor-headline-flip-in 1.2s;
            animation: elementor-headline-flip-in 1.2s; }
  .elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    -webkit-transform: rotateX(180deg);
            transform: rotateX(180deg);
    -webkit-animation: elementor-headline-flip-out 1.2s;
            animation: elementor-headline-flip-out 1.2s; }

@-webkit-keyframes elementor-headline-flip-in {
  0% {
    -webkit-transform: rotateX(180deg);
            transform: rotateX(180deg);
    opacity: 0; }
  35% {
    -webkit-transform: rotateX(120deg);
            transform: rotateX(120deg);
    opacity: 0; }
  65% {
    opacity: 0; }
  100% {
    -webkit-transform: rotateX(360deg);
            transform: rotateX(360deg);
    opacity: 1; } }

@keyframes elementor-headline-flip-in {
  0% {
    -webkit-transform: rotateX(180deg);
            transform: rotateX(180deg);
    opacity: 0; }
  35% {
    -webkit-transform: rotateX(120deg);
            transform: rotateX(120deg);
    opacity: 0; }
  65% {
    opacity: 0; }
  100% {
    -webkit-transform: rotateX(360deg);
            transform: rotateX(360deg);
    opacity: 1; } }

@-webkit-keyframes elementor-headline-flip-out {
  0% {
    -webkit-transform: rotateX(0deg);
            transform: rotateX(0deg);
    opacity: 1; }
  35% {
    -webkit-transform: rotateX(-40deg);
            transform: rotateX(-40deg);
    opacity: 1; }
  65% {
    opacity: 0; }
  100% {
    -webkit-transform: rotateX(180deg);
            transform: rotateX(180deg);
    opacity: 0; } }

@keyframes elementor-headline-flip-out {
  0% {
    -webkit-transform: rotateX(0deg);
            transform: rotateX(0deg);
    opacity: 1; }
  35% {
    -webkit-transform: rotateX(-40deg);
            transform: rotateX(-40deg);
    opacity: 1; }
  65% {
    opacity: 0; }
  100% {
    -webkit-transform: rotateX(180deg);
            transform: rotateX(180deg);
    opacity: 0; } }

.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper {
  vertical-align: top;
  overflow: hidden; }
  .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper::after {
    /* vertical bar */
    content: '';
    position: absolute;
    left: 0;
    right: auto;
    top: 50%;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%);
    height: 90%;
    width: 1px;
    background-color: #0d0d0d; }
  .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:not(.elementor-headline-typing-selected):after {
    -webkit-animation: elementor-headline-pulse 1s infinite;
            animation: elementor-headline-pulse 1s infinite; }
  .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected {
    background-color: var(--typing-selected-bg-color, #0d0d0d); }
    .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected::after {
      visibility: hidden; }
    .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected .elementor-headline-dynamic-text {
      color: var(--typing-selected-color, var(--dynamic-text-color), #aebcb9); }

.elementor-headline-animation-type-typing .elementor-headline-dynamic-text:not(.elementor-headline-text-active) {
  visibility: hidden; }

.elementor-headline-animation-type-typing .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
  position: absolute;
  visibility: hidden; }

@-webkit-keyframes elementor-headline-pulse {
  0% {
    -webkit-transform: translateY(-50%) scale(1);
            transform: translateY(-50%) scale(1);
    opacity: 1; }
  40% {
    -webkit-transform: translateY(-50%) scale(0.9);
            transform: translateY(-50%) scale(0.9);
    opacity: 0; }
  100% {
    -webkit-transform: translateY(-50%) scale(0);
            transform: translateY(-50%) scale(0);
    opacity: 0; } }

@keyframes elementor-headline-pulse {
  0% {
    -webkit-transform: translateY(-50%) scale(1);
            transform: translateY(-50%) scale(1);
    opacity: 1; }
  40% {
    -webkit-transform: translateY(-50%) scale(0.9);
            transform: translateY(-50%) scale(0.9);
    opacity: 0; }
  100% {
    -webkit-transform: translateY(-50%) scale(0);
            transform: translateY(-50%) scale(0);
    opacity: 0; } }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper {
  -webkit-perspective: 300px;
          perspective: 300px; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter {
  display: inline-block;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text {
  -webkit-transform: scaleX(1.0005);
      -ms-transform: scaleX(1.0005);
          transform: scaleX(1.0005);
  opacity: 0; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter {
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  -webkit-transform: translateZ(-20px) rotateX(90deg);
          transform: translateZ(-20px) rotateX(90deg);
  opacity: 0; }
  .elementor-headline-text-active .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter {
    opacity: 1; }
  .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter.elementor-headline-animation-in {
    -webkit-animation: elementor-headline-swirl-in .4s forwards;
            animation: elementor-headline-swirl-in .4s forwards; }
  .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
    -webkit-animation: elementor-headline-swirl-out .4s forwards;
            animation: elementor-headline-swirl-out .4s forwards; }

@-webkit-keyframes elementor-headline-swirl-in {
  0% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(90deg);
            transform: translateZ(-20px) rotateX(90deg); }
  60% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(-10deg);
            transform: translateZ(-20px) rotateX(-10deg); }
  100% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(0deg);
            transform: translateZ(-20px) rotateX(0deg); } }

@keyframes elementor-headline-swirl-in {
  0% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(90deg);
            transform: translateZ(-20px) rotateX(90deg); }
  60% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(-10deg);
            transform: translateZ(-20px) rotateX(-10deg); }
  100% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(0deg);
            transform: translateZ(-20px) rotateX(0deg); } }

@-webkit-keyframes elementor-headline-swirl-out {
  0% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(0);
            transform: translateZ(-20px) rotateX(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(-100deg);
            transform: translateZ(-20px) rotateX(-100deg); }
  100% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(-90deg);
            transform: translateZ(-20px) rotateX(-90deg); } }

@keyframes elementor-headline-swirl-out {
  0% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(0);
            transform: translateZ(-20px) rotateX(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(-100deg);
            transform: translateZ(-20px) rotateX(-100deg); }
  100% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(-90deg);
            transform: translateZ(-20px) rotateX(-90deg); } }

.elementor-headline-animation-type-slide-down .elementor-headline-text-wrapper {
  display: inline-block;
  padding: .2em 0; }

.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper {
  overflow: hidden;
  vertical-align: top; }

.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text {
  opacity: 0;
  top: .2em; }
  .elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-active {
    top: 0;
    opacity: 1;
    -webkit-animation: elementor-headline-slide-down-in .6s;
            animation: elementor-headline-slide-down-in .6s; }
  .elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    -webkit-animation: elementor-headline-slide-down-out .6s;
            animation: elementor-headline-slide-down-out .6s; }

@-webkit-keyframes elementor-headline-slide-down-in {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-100%);
            transform: translateY(-100%); }
  60% {
    opacity: 1;
    -webkit-transform: translateY(20%);
            transform: translateY(20%); }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
            transform: translateY(0); } }

@keyframes elementor-headline-slide-down-in {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-100%);
            transform: translateY(-100%); }
  60% {
    opacity: 1;
    -webkit-transform: translateY(20%);
            transform: translateY(20%); }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
            transform: translateY(0); } }

@-webkit-keyframes elementor-headline-slide-down-out {
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
            transform: translateY(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateY(120%);
            transform: translateY(120%); }
  100% {
    opacity: 0;
    -webkit-transform: translateY(100%);
            transform: translateY(100%); } }

@keyframes elementor-headline-slide-down-out {
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
            transform: translateY(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateY(120%);
            transform: translateY(120%); }
  100% {
    opacity: 0;
    -webkit-transform: translateY(100%);
            transform: translateY(100%); } }

.elementor-headline-animation-type-clip .elementor-headline-text-wrapper {
  display: inline-block;
  padding: .2em 0; }

.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper {
  overflow: hidden;
  vertical-align: top; }
  .elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper::after {
    /* line */
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: auto;
    width: 2px;
    height: 100%;
    background-color: #0d0d0d; }

.elementor-headline-animation-type-clip .elementor-headline-dynamic-text {
  opacity: 0; }
  .elementor-headline-animation-type-clip .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1; }

.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper {
  -webkit-perspective: 300px;
          perspective: 300px; }

.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text {
  opacity: 0; }
  .elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1;
    -webkit-animation: elementor-headline-drop-in-in .8s;
            animation: elementor-headline-drop-in-in .8s; }
  .elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    -webkit-animation: elementor-headline-drop-in-out .8s;
            animation: elementor-headline-drop-in-out .8s; }

@-webkit-keyframes elementor-headline-drop-in-in {
  0% {
    opacity: 0;
    -webkit-transform: translateZ(100px);
            transform: translateZ(100px); }
  100% {
    opacity: 1;
    -webkit-transform: translateZ(0);
            transform: translateZ(0); } }

@keyframes elementor-headline-drop-in-in {
  0% {
    opacity: 0;
    -webkit-transform: translateZ(100px);
            transform: translateZ(100px); }
  100% {
    opacity: 1;
    -webkit-transform: translateZ(0);
            transform: translateZ(0); } }

@-webkit-keyframes elementor-headline-drop-in-out {
  0% {
    opacity: 1;
    -webkit-transform: translateZ(0);
            transform: translateZ(0); }
  100% {
    opacity: 0;
    -webkit-transform: translateZ(-100px);
            transform: translateZ(-100px); } }

@keyframes elementor-headline-drop-in-out {
  0% {
    opacity: 1;
    -webkit-transform: translateZ(0);
            transform: translateZ(0); }
  100% {
    opacity: 0;
    -webkit-transform: translateZ(-100px);
            transform: translateZ(-100px); } }

.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper {
  -webkit-perspective: 300px;
          perspective: 300px; }

.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text {
  opacity: 0; }

.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter {
  display: inline-block;
  -webkit-transform: rotateY(180deg);
          transform: rotateY(180deg);
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden; }
  .elementor-headline-text-active .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter {
    -webkit-transform: rotateY(0deg);
            transform: rotateY(0deg); }
  .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter.elementor-headline-animation-in {
    -webkit-animation: elementor-headline-blinds-in .6s forwards;
            animation: elementor-headline-blinds-in .6s forwards; }
  .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
    -webkit-animation: elementor-headline-blinds-out .6s forwards;
            animation: elementor-headline-blinds-out .6s forwards; }

@-webkit-keyframes elementor-headline-blinds-in {
  0% {
    -webkit-transform: rotateY(180deg);
            transform: rotateY(180deg); }
  100% {
    -webkit-transform: rotateY(0deg);
            transform: rotateY(0deg); } }

@keyframes elementor-headline-blinds-in {
  0% {
    -webkit-transform: rotateY(180deg);
            transform: rotateY(180deg); }
  100% {
    -webkit-transform: rotateY(0deg);
            transform: rotateY(0deg); } }

@-webkit-keyframes elementor-headline-blinds-out {
  0% {
    -webkit-transform: rotateY(0);
            transform: rotateY(0); }
  100% {
    -webkit-transform: rotateY(-180deg);
            transform: rotateY(-180deg); } }

@keyframes elementor-headline-blinds-out {
  0% {
    -webkit-transform: rotateY(0);
            transform: rotateY(0); }
  100% {
    -webkit-transform: rotateY(-180deg);
            transform: rotateY(-180deg); } }

.elementor-headline-animation-type-wave .elementor-headline-dynamic-text {
  opacity: 0; }

.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter {
  display: inline-block;
  opacity: 0;
  -webkit-transform: scale(0);
      -ms-transform: scale(0);
          transform: scale(0); }
  .elementor-headline-text-active .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter {
    opacity: 1; }
  .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter.elementor-headline-animation-in {
    -webkit-animation: elementor-headline-wave-up .6s forwards;
            animation: elementor-headline-wave-up .6s forwards; }
  .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
    -webkit-animation: elementor-headline-wave-down .6s forwards;
            animation: elementor-headline-wave-down .6s forwards; }

@-webkit-keyframes elementor-headline-wave-up {
  0% {
    -webkit-transform: scale(0);
            transform: scale(0);
    opacity: 0; }
  60% {
    -webkit-transform: scale(1.2);
            transform: scale(1.2);
    opacity: 1; }
  100% {
    -webkit-transform: scale(1);
            transform: scale(1);
    opacity: 1; } }

@keyframes elementor-headline-wave-up {
  0% {
    -webkit-transform: scale(0);
            transform: scale(0);
    opacity: 0; }
  60% {
    -webkit-transform: scale(1.2);
            transform: scale(1.2);
    opacity: 1; }
  100% {
    -webkit-transform: scale(1);
            transform: scale(1);
    opacity: 1; } }

@-webkit-keyframes elementor-headline-wave-down {
  0% {
    -webkit-transform: scale(1);
            transform: scale(1);
    opacity: 1; }
  60% {
    -webkit-transform: scale(0);
            transform: scale(0);
    opacity: 0; } }

@keyframes elementor-headline-wave-down {
  0% {
    -webkit-transform: scale(1);
            transform: scale(1);
    opacity: 1; }
  60% {
    -webkit-transform: scale(0);
            transform: scale(0);
    opacity: 0; } }

.elementor-headline-animation-type-slide .elementor-headline-dynamic-text {
  opacity: 0; }
  .elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1;
    -webkit-animation: elementor-headline-slide-in .6s;
            animation: elementor-headline-slide-in .6s; }
  .elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    -webkit-animation: elementor-headline-slide-out .6s;
            animation: elementor-headline-slide-out .6s; }

@-webkit-keyframes elementor-headline-slide-in {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-100%);
            transform: translateX(-100%); }
  60% {
    opacity: 1;
    -webkit-transform: translateX(10%);
            transform: translateX(10%); }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
            transform: translateX(0); } }

@keyframes elementor-headline-slide-in {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-100%);
            transform: translateX(-100%); }
  60% {
    opacity: 1;
    -webkit-transform: translateX(10%);
            transform: translateX(10%); }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
            transform: translateX(0); } }

@-webkit-keyframes elementor-headline-slide-out {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
            transform: translateX(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateX(110%);
            transform: translateX(110%); }
  100% {
    opacity: 0;
    -webkit-transform: translateX(100%);
            transform: translateX(100%); } }

@keyframes elementor-headline-slide-out {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
            transform: translateX(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateX(110%);
            transform: translateX(110%); }
  100% {
    opacity: 0;
    -webkit-transform: translateX(100%);
            transform: translateX(100%); } }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-slide .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper {
  -webkit-transition: width 0.5s;
  -o-transition: width 0.5s;
  transition: width 0.5s; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper {
  overflow: hidden; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text, .elementor-headline-animation-type-blinds .elementor-headline-dynamic-text, .elementor-headline-animation-type-wave .elementor-headline-dynamic-text {
  white-space: nowrap; }

.elementor-msie .elementor-headline--style-highlight svg {
  top: auto;
  left: auto;
  -webkit-transform: translate(-100%);
      -ms-transform: translate(-100%);
          transform: translate(-100%); }

/* Animations */
@-webkit-keyframes e-hotspot-soft-beat {
  from {
    -webkit-transform: scale(1);
            transform: scale(1); }
  to {
    -webkit-transform: scale(1.1);
            transform: scale(1.1); } }
@keyframes e-hotspot-soft-beat {
  from {
    -webkit-transform: scale(1);
            transform: scale(1); }
  to {
    -webkit-transform: scale(1.1);
            transform: scale(1.1); } }

@-webkit-keyframes e-hotspot-expand {
  from {
    -webkit-transform: scale(0.5);
            transform: scale(0.5);
    opacity: 1; }
  to {
    -webkit-transform: scale(1.5);
            transform: scale(1.5);
    opacity: 0; } }

@keyframes e-hotspot-expand {
  from {
    -webkit-transform: scale(0.5);
            transform: scale(0.5);
    opacity: 1; }
  to {
    -webkit-transform: scale(1.5);
            transform: scale(1.5);
    opacity: 0; } }

/* Hotspot Wrapper */
.elementor-widget-hotspot {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: var(--background-align);
      -ms-flex-pack: var(--background-align);
          justify-content: var(--background-align); }
  .elementor-widget-hotspot .elementor-widget-container {
    position: relative;
    display: inline-block;
    width: var(--container-width);
    max-width: var(--container-max-width);
    height: var(--container-height); }
    .elementor-widget-hotspot .elementor-widget-container > img {
      display: block;
      width: var(--image-width, auto);
      height: var(--container-height);
      opacity: var(--opacity, 1); }

/* Each Hotspot */
.e-hotspot {
  z-index: 1;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  position: absolute;
  /* Hotspot Button Animations */
  /* End: Hotspot Button Animations */ }
  .e-hotspot--position-left.e-hotspot--position-top {
    -webkit-transform: translate(calc( -1 * var( --hotspot-translate-x )), calc( -1 * var( --hotspot-translate-y )));
        -ms-transform: translate(calc( -1 * var( --hotspot-translate-x )), calc( -1 * var( --hotspot-translate-y )));
            transform: translate(calc( -1 * var( --hotspot-translate-x )), calc( -1 * var( --hotspot-translate-y ))); }
  .e-hotspot--position-left.e-hotspot--position-bottom {
    -webkit-transform: translate(calc( -1 * var( --hotspot-translate-x )), var(--hotspot-translate-y));
        -ms-transform: translate(calc( -1 * var( --hotspot-translate-x )), var(--hotspot-translate-y));
            transform: translate(calc( -1 * var( --hotspot-translate-x )), var(--hotspot-translate-y)); }
  .e-hotspot--position-right.e-hotspot--position-top {
    -webkit-transform: translate(var(--hotspot-translate-x), calc( -1 * var( --hotspot-translate-y )));
        -ms-transform: translate(var(--hotspot-translate-x), calc( -1 * var( --hotspot-translate-y )));
            transform: translate(var(--hotspot-translate-x), calc( -1 * var( --hotspot-translate-y ))); }
  .e-hotspot--position-right.e-hotspot--position-bottom {
    -webkit-transform: translate(var(--hotspot-translate-x), var(--hotspot-translate-y));
        -ms-transform: translate(var(--hotspot-translate-x), var(--hotspot-translate-y));
            transform: translate(var(--hotspot-translate-x), var(--hotspot-translate-y)); }
  .e-hotspot--active {
    z-index: 2; }
  .e-hotspot__outer-circle, .e-hotspot__inner-circle {
    content: "";
    display: inline-block;
    -webkit-box-sizing: content-box;
            box-sizing: content-box;
    border-radius: 50%; }
  .e-hotspot__inner-circle {
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%);
        -ms-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
    background-color: var(--hotspot-color);
    padding: calc( var(--hotspot-size, 18px) / 2); }
  .e-hotspot__outer-circle {
    background-color: var(--hotspot-color);
    padding: var(--hotspot-padding, 4px);
    width: var(--hotspot-size, 18px);
    height: var(--hotspot-size, 18px); }
  .e-hotspot--icon .e-hotspot__button {
    line-height: 0;
    -webkit-box-sizing: content-box;
            box-sizing: content-box;
    font-size: var(--hotspot-size, 18px);
    width: var(--hotspot-size, 18px);
    height: var(--hotspot-size, 18px); }
  .e-hotspot__icon, .e-hotspot__label {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .e-hotspot__icon svg, .e-hotspot__label svg {
      width: var(--hotspot-size, 18px);
      height: auto; }
  .e-hotspot__button {
    cursor: pointer;
    position: relative;
    display: grid;
    grid-auto-flow: column;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    color: var(--hotspot-color);
    font-size: var(--hotspot-size, 18px);
    min-width: var(--hotspot-button-width);
    min-height: var(--hotspot-button-height); }
    .e-hotspot__button:before {
      z-index: -2;
      content: "";
      width: 100%;
      height: 100%;
      left: -5px;
      top: -5px;
      position: absolute;
      padding: 5px;
      -webkit-box-sizing: content-box;
              box-sizing: content-box; }
    .e-hotspot__button svg {
      fill: var(--hotspot-color); }
  .e-hotspot:not(.e-hotspot--circle) .e-hotspot__button {
    min-width: var(--hotspot-min-width);
    min-height: var(--hotspot-min-height);
    background-color: var(--hotspot-box-color);
    padding: var(--hotspot-padding, 4px);
    border-radius: var(--hotspot-border-radius, 3px); }
    .e-hotspot:not(.e-hotspot--circle) .e-hotspot__button:before {
      border-radius: var(--hotspot-border-radius, 3px); }
  .e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand::before {
    background-color: var(--hotspot-box-color); }
  .e-hotspot--overlay {
    opacity: 0.7;
    -webkit-transition: opacity 0.2s;
    -o-transition: opacity 0.2s;
    transition: opacity 0.2s; }
  .e-hotspot--overlay:hover,
  .e-hotspot--active .e-hotspot--overlay {
    opacity: 1; }
  .e-hotspot--soft-beat {
    -webkit-animation: e-hotspot-soft-beat 0.7s infinite alternate;
            animation: e-hotspot-soft-beat 0.7s infinite alternate;
    -webkit-animation-timing-function: ease;
            animation-timing-function: ease; }
  .e-hotspot--expand .e-hotspot__outer-circle {
    -webkit-animation: e-hotspot-expand 2s infinite;
            animation: e-hotspot-expand 2s infinite; }
  .e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand::before {
    content: "";
    width: 100%;
    height: 100%;
    position: absolute;
    z-index: -1;
    opacity: 0;
    -webkit-animation: e-hotspot-expand 2s infinite;
            animation: e-hotspot-expand 2s infinite; }
  .e-hotspot--sequenced {
    -webkit-animation: fadeIn 0.3s;
            animation: fadeIn 0.3s;
    -webkit-animation-iteration-count: 1;
            animation-iteration-count: 1;
    -webkit-animation-fill-mode: both;
            animation-fill-mode: both; }
  .e-hotspot__direction-mask {
    overflow: hidden;
    position: absolute;
    pointer-events: none; }
  .e-hotspot__tooltip {
    white-space: var(--white-space, nowrap);
    -webkit-transition-property: opacity, -webkit-transform;
    transition-property: opacity, -webkit-transform;
    -o-transition-property: transform, opacity;
    transition-property: transform, opacity;
    transition-property: transform, opacity, -webkit-transform;
    -webkit-transition-duration: var(--tooltip-transition-duration, 500ms);
         -o-transition-duration: var(--tooltip-transition-duration, 500ms);
            transition-duration: var(--tooltip-transition-duration, 500ms);
    -webkit-transform-origin: center center;
        -ms-transform-origin: center center;
            transform-origin: center center;
    position: absolute;
    pointer-events: none;
    color: var(--tooltip-text-color, #FFF);
    text-align: var(--tooltip-align);
    min-width: var(--tooltip-min-width);
    padding: var(--tooltip-padding, 8px);
    border-radius: var(--tooltip-border-radius);
    background-color: var(--tooltip-color); }
  .e-hotspot__tooltip p:last-of-type {
    margin-bottom: 0; }
  .e-hotspot__direction-mask .e-hotspot__tooltip {
    -webkit-box-shadow: none !important;
            box-shadow: none !important;
    position: static; }
  .e-hotspot--active .e-hotspot__tooltip {
    pointer-events: visible; }
  .e-hotspot--fade-in-out {
    opacity: 0; }
  .e-hotspot--active .e-hotspot--fade-in-out {
    opacity: 1; }
  .e-hotspot--fade-grow {
    opacity: 0;
    -webkit-transform: scale(0);
        -ms-transform: scale(0);
            transform: scale(0); }
  .e-hotspot--active .e-hotspot--fade-grow {
    opacity: 1;
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1); }
  .e-hotspot--tooltip-animation-from-top, .e-hotspot--override-tooltip-animation-from-top {
    -webkit-transform: translate(0, calc(-100% - 1px));
        -ms-transform: translate(0, calc(-100% - 1px));
            transform: translate(0, calc(-100% - 1px)); }
  .e-hotspot--tooltip-animation-from-left, .e-hotspot--override-tooltip-animation-from-left {
    -webkit-transform: translate(calc(-100% - 1px), 0);
        -ms-transform: translate(calc(-100% - 1px), 0);
            transform: translate(calc(-100% - 1px), 0); }
  .e-hotspot--tooltip-animation-from-right, .e-hotspot--override-tooltip-animation-from-right {
    -webkit-transform: translate(calc(100% + 1px), 0);
        -ms-transform: translate(calc(100% + 1px), 0);
            transform: translate(calc(100% + 1px), 0); }
  .e-hotspot--tooltip-animation-from-bottom, .e-hotspot--override-tooltip-animation-from-bottom {
    -webkit-transform: translate(0, calc(100% + 1px));
        -ms-transform: translate(0, calc(100% + 1px));
            transform: translate(0, calc(100% + 1px)); }
  .e-hotspot--fade-direction {
    opacity: 0; }
  .e-hotspot--active .e-hotspot--slide-direction,
  .e-hotspot--active .e-hotspot--fade-direction {
    -webkit-transform: translate(0, 0) scale(1);
        -ms-transform: translate(0, 0) scale(1);
            transform: translate(0, 0) scale(1);
    opacity: 1; }
  .e-hotspot--show-tooltip {
    -webkit-transition: none;
    -o-transition: none;
    transition: none;
    opacity: 1;
    pointer-events: visible;
    -webkit-transform: translate(0, 0);
        -ms-transform: translate(0, 0);
            transform: translate(0, 0); }

.elementor-facebook-widget.fb_iframe_widget {
  width: 100% !important; }
  .elementor-facebook-widget.fb_iframe_widget span {
    width: 100% !important; }
  .elementor-facebook-widget.fb_iframe_widget iframe {
    position: relative;
    width: 100% !important; }

.elementor-facebook-widget.fb-like {
  height: 1px; }

.elementor-widget-facebook-comments iframe {
  width: 100% !important; }

.site-main .menu-navigation-container {
  overflow: visible; }

.elementor-item:before, .elementor-item:after {
  display: block;
  position: absolute;
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s;
  -webkit-transition-timing-function: cubic-bezier(0.58, 0.3, 0.005, 1);
       -o-transition-timing-function: cubic-bezier(0.58, 0.3, 0.005, 1);
          transition-timing-function: cubic-bezier(0.58, 0.3, 0.005, 1); }

.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  opacity: 0; }


.elementor-item:hover:before,
.elementor-item:hover:after,
.elementor-item:focus:before,
.elementor-item:focus:after,
.elementor-item.highlighted:before,
.elementor-item.highlighted:after,
.elementor-item-active:before,
.elementor-item-active:after {
  -webkit-transform: scale(1);
      -ms-transform: scale(1);
          transform: scale(1); }

.e--pointer-double-line .elementor-item:before, .e--pointer-double-line .elementor-item:after, .e--pointer-underline .elementor-item:before, .e--pointer-underline .elementor-item:after, .e--pointer-overline .elementor-item:before, .e--pointer-overline .elementor-item:after {
  height: 3px;
  width: 100%;
  left: 0;
  background-color: #55595c;
  z-index: 2; }

.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  height: 0;
  width: 0;
  left: 50%; }

.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  top: 10px; }

.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  bottom: 10px; }

.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  top: -10px; }

.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  bottom: -10px; }

.e--pointer-double-line.e--animation-none,
.e--pointer-double-line.e--animation-none .elementor-item, .e--pointer-underline.e--animation-none,
.e--pointer-underline.e--animation-none .elementor-item, .e--pointer-overline.e--animation-none,
.e--pointer-overline.e--animation-none .elementor-item {
  -webkit-transition-duration: 0s;
       -o-transition-duration: 0s;
          transition-duration: 0s; }
  .e--pointer-double-line.e--animation-none:before, .e--pointer-double-line.e--animation-none:after, .e--pointer-double-line.e--animation-none:hover, .e--pointer-double-line.e--animation-none:focus,
  .e--pointer-double-line.e--animation-none .elementor-item:before,
  .e--pointer-double-line.e--animation-none .elementor-item:after,
  .e--pointer-double-line.e--animation-none .elementor-item:hover,
  .e--pointer-double-line.e--animation-none .elementor-item:focus, .e--pointer-underline.e--animation-none:before, .e--pointer-underline.e--animation-none:after, .e--pointer-underline.e--animation-none:hover, .e--pointer-underline.e--animation-none:focus,
  .e--pointer-underline.e--animation-none .elementor-item:before,
  .e--pointer-underline.e--animation-none .elementor-item:after,
  .e--pointer-underline.e--animation-none .elementor-item:hover,
  .e--pointer-underline.e--animation-none .elementor-item:focus, .e--pointer-overline.e--animation-none:before, .e--pointer-overline.e--animation-none:after, .e--pointer-overline.e--animation-none:hover, .e--pointer-overline.e--animation-none:focus,
  .e--pointer-overline.e--animation-none .elementor-item:before,
  .e--pointer-overline.e--animation-none .elementor-item:after,
  .e--pointer-overline.e--animation-none .elementor-item:hover,
  .e--pointer-overline.e--animation-none .elementor-item:focus {
    -webkit-transition-duration: 0s;
         -o-transition-duration: 0s;
            transition-duration: 0s; }

.e--pointer-double-line .elementor-item:before, .e--pointer-overline .elementor-item:before {
  content: '';
  top: 0; }

.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  width: 10px;
  left: -20px; }

.e--pointer-double-line .elementor-item:after, .e--pointer-underline .elementor-item:after {
  content: '';
  bottom: 0; }

.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  width: 10px;
  inset-inline-start: 100%; }

.e--pointer-framed .elementor-item:before, .e--pointer-framed .elementor-item:after {
  background: transparent;
  left: 0;
  top: 0;
  bottom: 0;
  right: 0;
  border: 3px solid #55595c; }

.e--pointer-framed .elementor-item:before {
  content: ''; }

.e--pointer-framed.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  -webkit-transform: scale(0.75);
      -ms-transform: scale(0.75);
          transform: scale(0.75); }

.e--pointer-framed.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  -webkit-transform: scale(1.25);
      -ms-transform: scale(1.25);
          transform: scale(1.25); }

.e--pointer-framed.e--animation-grow .elementor-item:before, .e--pointer-framed.e--animation-shrink .elementor-item:before {
  -webkit-transition: opacity 0.2s, -webkit-transform 0.4s;
  transition: opacity 0.2s, -webkit-transform 0.4s;
  -o-transition: opacity 0.2s, transform 0.4s;
  transition: opacity 0.2s, transform 0.4s;
  transition: opacity 0.2s, transform 0.4s, -webkit-transform 0.4s; }

.e--pointer-framed.e--animation-draw .elementor-item:before, .e--pointer-framed.e--animation-draw .elementor-item:after {
  width: 3px;
  height: 3px; }

.e--pointer-framed.e--animation-draw .elementor-item:before {
  border-width: 0 3px 3px 0;
  -webkit-transition: width 0.1s 0.2s, height 0.1s 0.3s, opacity 0.12s 0.22s;
  -o-transition: width 0.1s 0.2s, height 0.1s 0.3s, opacity 0.12s 0.22s;
  transition: width 0.1s 0.2s, height 0.1s 0.3s, opacity 0.12s 0.22s; }

.e--pointer-framed.e--animation-draw .elementor-item:after {
  content: '';
  top: initial;
  bottom: 0;
  right: initial;
  left: 0;
  border-width: 3px 0 0 3px;
  -webkit-transition: width 0.1s, height 0.1s 0.1s, opacity 0.02s 0.18s;
  -o-transition: width 0.1s, height 0.1s 0.1s, opacity 0.02s 0.18s;
  transition: width 0.1s, height 0.1s 0.1s, opacity 0.02s 0.18s; }


.e--pointer-framed.e--animation-draw .elementor-item:hover:before,
.e--pointer-framed.e--animation-draw .elementor-item:hover:after,
.e--pointer-framed.e--animation-draw .elementor-item:focus:before,
.e--pointer-framed.e--animation-draw .elementor-item:focus:after,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,
.e--pointer-framed.e--animation-draw .elementor-item-active:before,
.e--pointer-framed.e--animation-draw .elementor-item-active:after {
  width: 100%;
  height: 100%; }


.e--pointer-framed.e--animation-draw .elementor-item:hover:before,
.e--pointer-framed.e--animation-draw .elementor-item:focus:before,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,
.e--pointer-framed.e--animation-draw .elementor-item-active:before {
  -webkit-transition: opacity 0.02s, height 0.1s, width 0.1s 0.1s;
  -o-transition: opacity 0.02s, height 0.1s, width 0.1s 0.1s;
  transition: opacity 0.02s, height 0.1s, width 0.1s 0.1s; }


.e--pointer-framed.e--animation-draw .elementor-item:hover:after,
.e--pointer-framed.e--animation-draw .elementor-item:focus:after,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,
.e--pointer-framed.e--animation-draw .elementor-item-active:after {
  -webkit-transition: opacity 0.02s 0.2s, height 0.1s 0.2s, width 0.1s 0.3s;
  -o-transition: opacity 0.02s 0.2s, height 0.1s 0.2s, width 0.1s 0.3s;
  transition: opacity 0.02s 0.2s, height 0.1s 0.2s, width 0.1s 0.3s; }

.e--pointer-framed.e--animation-corners .elementor-item:before, .e--pointer-framed.e--animation-corners .elementor-item:after {
  width: 3px;
  height: 3px; }

.e--pointer-framed.e--animation-corners .elementor-item:before {
  border-width: 3px 3px 0 0; }

.e--pointer-framed.e--animation-corners .elementor-item:after {
  content: '';
  top: initial;
  bottom: 0;
  right: initial;
  left: 0;
  border-width: 0 0 3px 3px; }


.e--pointer-framed.e--animation-corners .elementor-item:hover:before,
.e--pointer-framed.e--animation-corners .elementor-item:hover:after,
.e--pointer-framed.e--animation-corners .elementor-item:focus:before,
.e--pointer-framed.e--animation-corners .elementor-item:focus:after,
.e--pointer-framed.e--animation-corners .elementor-item.highlighted:before,
.e--pointer-framed.e--animation-corners .elementor-item.highlighted:after,
.e--pointer-framed.e--animation-corners .elementor-item-active:before,
.e--pointer-framed.e--animation-corners .elementor-item-active:after {
  width: 100%;
  height: 100%;
  -webkit-transition: opacity 0.002s, width 0.4s, height 0.4s;
  -o-transition: opacity 0.002s, width 0.4s, height 0.4s;
  transition: opacity 0.002s, width 0.4s, height 0.4s; }

.e--pointer-framed.e--animation-none,
.e--pointer-framed.e--animation-none .elementor-item {
  -webkit-transition-duration: 0s;
       -o-transition-duration: 0s;
          transition-duration: 0s; }
  .e--pointer-framed.e--animation-none:before, .e--pointer-framed.e--animation-none:after, .e--pointer-framed.e--animation-none:hover, .e--pointer-framed.e--animation-none:focus,
  .e--pointer-framed.e--animation-none .elementor-item:before,
  .e--pointer-framed.e--animation-none .elementor-item:after,
  .e--pointer-framed.e--animation-none .elementor-item:hover,
  .e--pointer-framed.e--animation-none .elementor-item:focus {
    -webkit-transition-duration: 0s;
         -o-transition-duration: 0s;
            transition-duration: 0s; }

.e--pointer-background .elementor-item:before, .e--pointer-background .elementor-item:after {
  content: '';
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s; }

.e--pointer-background .elementor-item:before {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: #55595c;
  z-index: -1; }


.e--pointer-background .elementor-item:hover,
.e--pointer-background .elementor-item:focus,
.e--pointer-background .elementor-item.highlighted,
.e--pointer-background .elementor-item-active {
  color: #fff; }

.e--pointer-background.e--animation-grow .elementor-item:before {
  -webkit-transform: scale(0.5);
      -ms-transform: scale(0.5);
          transform: scale(0.5); }


.e--pointer-background.e--animation-grow .elementor-item:hover:before,
.e--pointer-background.e--animation-grow .elementor-item:focus:before,
.e--pointer-background.e--animation-grow .elementor-item.highlighted:before,
.e--pointer-background.e--animation-grow .elementor-item-active:before {
  -webkit-transform: scale(1);
      -ms-transform: scale(1);
          transform: scale(1);
  opacity: 1; }

.e--pointer-background.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2);
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s; }


.e--pointer-background.e--animation-shrink .elementor-item:hover:before,
.e--pointer-background.e--animation-shrink .elementor-item:focus:before,
.e--pointer-background.e--animation-shrink .elementor-item.highlighted:before,
.e--pointer-background.e--animation-shrink .elementor-item-active:before {
  -webkit-transition: opacity 0.15s, -webkit-transform 0.4s;
  transition: opacity 0.15s, -webkit-transform 0.4s;
  -o-transition: opacity 0.15s, transform 0.4s;
  transition: opacity 0.15s, transform 0.4s;
  transition: opacity 0.15s, transform 0.4s, -webkit-transform 0.4s; }

.e--pointer-background.e--animation-sweep-left .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  left: 100%; }

.e--pointer-background.e--animation-sweep-right .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  right: 100%; }

.e--pointer-background.e--animation-sweep-up .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  top: 100%; }

.e--pointer-background.e--animation-sweep-down .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  bottom: 100%; }

.e--pointer-background.e--animation-shutter-out-vertical .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  bottom: 50%;
  top: 50%; }

.e--pointer-background.e--animation-shutter-out-horizontal .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  right: 50%;
  left: 50%; }

.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after, .e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: #55595c;
  z-index: -1; }

.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:before {
  top: 0;
  bottom: 100%; }

.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after {
  top: 100%;
  bottom: 0; }


.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:before,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:before,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:before,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:before {
  bottom: 50%; }


.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:after,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:after,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:after,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:after {
  top: 50%; }

.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:before {
  right: 0;
  left: 100%; }

.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after {
  right: 100%;
  left: 0; }


.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:before,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:before,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:before,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:before {
  left: 50%; }


.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:after,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:after,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:after,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:after {
  right: 50%; }

.e--pointer-background.e--animation-none,
.e--pointer-background.e--animation-none .elementor-item {
  -webkit-transition-duration: 0s;
       -o-transition-duration: 0s;
          transition-duration: 0s; }
  .e--pointer-background.e--animation-none:before, .e--pointer-background.e--animation-none:after, .e--pointer-background.e--animation-none:hover, .e--pointer-background.e--animation-none:focus,
  .e--pointer-background.e--animation-none .elementor-item:before,
  .e--pointer-background.e--animation-none .elementor-item:after,
  .e--pointer-background.e--animation-none .elementor-item:hover,
  .e--pointer-background.e--animation-none .elementor-item:focus {
    -webkit-transition-duration: 0s;
         -o-transition-duration: 0s;
            transition-duration: 0s; }

.e--pointer-text.e--animation-skew .elementor-item:hover,
.e--pointer-text.e--animation-skew .elementor-item:focus {
  -webkit-transform: skew(-8deg);
      -ms-transform: skew(-8deg);
          transform: skew(-8deg); }

.e--pointer-text.e--animation-grow .elementor-item:hover,
.e--pointer-text.e--animation-grow .elementor-item:focus {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2); }

.e--pointer-text.e--animation-shrink .elementor-item:hover,
.e--pointer-text.e--animation-shrink .elementor-item:focus {
  -webkit-transform: scale(0.8);
      -ms-transform: scale(0.8);
          transform: scale(0.8); }

.e--pointer-text.e--animation-float .elementor-item:hover,
.e--pointer-text.e--animation-float .elementor-item:focus {
  -webkit-transform: translateY(-8px);
      -ms-transform: translateY(-8px);
          transform: translateY(-8px); }

.e--pointer-text.e--animation-sink .elementor-item:hover,
.e--pointer-text.e--animation-sink .elementor-item:focus {
  -webkit-transform: translateY(8px);
      -ms-transform: translateY(8px);
          transform: translateY(8px); }

.e--pointer-text.e--animation-rotate .elementor-item:hover,
.e--pointer-text.e--animation-rotate .elementor-item:focus {
  -webkit-transform: rotate(6deg);
      -ms-transform: rotate(6deg);
          transform: rotate(6deg); }

.e--pointer-text.e--animation-none,
.e--pointer-text.e--animation-none .elementor-item {
  -webkit-transition-duration: 0s;
       -o-transition-duration: 0s;
          transition-duration: 0s; }
  .e--pointer-text.e--animation-none:before, .e--pointer-text.e--animation-none:after, .e--pointer-text.e--animation-none:hover, .e--pointer-text.e--animation-none:focus,
  .e--pointer-text.e--animation-none .elementor-item:before,
  .e--pointer-text.e--animation-none .elementor-item:after,
  .e--pointer-text.e--animation-none .elementor-item:hover,
  .e--pointer-text.e--animation-none .elementor-item:focus {
    -webkit-transition-duration: 0s;
         -o-transition-duration: 0s;
            transition-duration: 0s; }

.elementor-nav-menu--main .elementor-nav-menu a {
  -webkit-transition: 0.4s;
  -o-transition: 0.4s;
  transition: 0.4s; }
  .elementor-nav-menu--main .elementor-nav-menu a, .elementor-nav-menu--main .elementor-nav-menu a:hover, .elementor-nav-menu--main .elementor-nav-menu a:focus, .elementor-nav-menu--main .elementor-nav-menu a.highlighted {
    padding: 13px 20px; }
  .elementor-nav-menu--main .elementor-nav-menu a.current {
    background: #373a3c;
    color: #fff; }
  .elementor-nav-menu--main .elementor-nav-menu a.disabled {
    background: #55595c;
    color: #a1a6a9; }

.elementor-nav-menu--main .elementor-nav-menu ul {
  position: absolute;
  width: 12em;
  border-width: 0;
  border-style: solid;
  padding: 0; }

.elementor-nav-menu--main .elementor-nav-menu span.scroll-up,
.elementor-nav-menu--main .elementor-nav-menu span.scroll-down {
  position: absolute;
  display: none;
  visibility: hidden;
  overflow: hidden;
  background: #fff;
  height: 20px; }

.elementor-nav-menu--main .elementor-nav-menu span.scroll-up-arrow, .elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow, .elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow {
  position: absolute;
  top: -2px;
  right: 50%;
  margin-right: -8px;
  width: 0;
  height: 0;
  overflow: hidden;
  border-width: 8px;
  border-style: dashed dashed solid dashed;
  border-color: transparent transparent #494c4f transparent; }

.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow {
  top: 6px;
  border-style: solid dashed dashed dashed;
  border-color: #494c4f transparent transparent transparent; }

.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow i {
  -webkit-transform: rotate(90deg);
      -ms-transform: rotate(90deg);
          transform: rotate(90deg); }

.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow .e-font-icon-svg {
  height: 1em;
  width: 1em; }

.elementor-nav-menu--layout-horizontal {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-nav-menu--layout-horizontal .elementor-nav-menu {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-nav-menu--layout-horizontal .elementor-nav-menu a {
      white-space: nowrap;
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
    .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex; }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li ul, .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li > .scroll-down {
        top: 100% !important; }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > a {
        -webkit-margin-start: var(--e-nav-menu-horizontal-menu-item-margin);
                margin-inline-start: var(--e-nav-menu-horizontal-menu-item-margin); }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > ul, .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > .scroll-down, .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > .scroll-up {
        right: var(--e-nav-menu-horizontal-menu-item-margin) !important; }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:last-child) > a {
        -webkit-margin-end: var(--e-nav-menu-horizontal-menu-item-margin);
                margin-inline-end: var(--e-nav-menu-horizontal-menu-item-margin); }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:last-child):after {
        content: var(--e-nav-menu-divider-content, none);
        border-left-width: var(--e-nav-menu-divider-width, 2px);
        border-left-style: var(--e-nav-menu-divider-style, solid);
        height: var(--e-nav-menu-divider-height, 35%);
        border-color: var(--e-nav-menu-divider-color, #000);
        -ms-flex-item-align: center;
            align-self: center; }

.elementor-nav-menu__align-right .elementor-nav-menu {
  margin-left: auto;
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-nav-menu__align-right .elementor-nav-menu--layout-vertical > ul > li > a {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-nav-menu__align-left .elementor-nav-menu {
  margin-right: auto;
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor-nav-menu__align-left .elementor-nav-menu--layout-vertical > ul > li > a {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor-nav-menu__align-center .elementor-nav-menu {
  margin-left: auto;
  margin-right: auto;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-nav-menu__align-center .elementor-nav-menu--layout-vertical > ul > li > a {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu {
  width: 100%; }
  .elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1; }
    .elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li > a {
      -webkit-box-pack: center;
          -ms-flex-pack: center;
              justify-content: center; }

.elementor-widget-nav-menu:not(.elementor-nav-menu--toggle) .elementor-menu-toggle {
  display: none; }

.elementor-widget-nav-menu .elementor-widget-container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column; }

.elementor-nav-menu {
  position: relative;
  z-index: 2; }
  .elementor-nav-menu:after {
    content: "\00a0";
    display: block;
    height: 0;
    font: 0px/0 serif;
    clear: both;
    visibility: hidden;
    overflow: hidden; }
  .elementor-nav-menu,
  .elementor-nav-menu ul,
  .elementor-nav-menu li {
    display: block;
    list-style: none;
    margin: 0;
    padding: 0;
    line-height: normal;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
  .elementor-nav-menu ul {
    display: none; }
    .elementor-nav-menu ul ul a,
    .elementor-nav-menu ul ul a:hover,
    .elementor-nav-menu ul ul a:focus,
    .elementor-nav-menu ul ul a:active {
      border-left: 16px solid transparent; }
    .elementor-nav-menu ul ul ul a,
    .elementor-nav-menu ul ul ul a:hover,
    .elementor-nav-menu ul ul ul a:focus,
    .elementor-nav-menu ul ul ul a:active {
      border-left: 24px solid transparent; }
    .elementor-nav-menu ul ul ul ul a,
    .elementor-nav-menu ul ul ul ul a:hover,
    .elementor-nav-menu ul ul ul ul a:focus,
    .elementor-nav-menu ul ul ul ul a:active {
      border-left: 32px solid transparent; }
    .elementor-nav-menu ul ul ul ul ul a,
    .elementor-nav-menu ul ul ul ul ul a:hover,
    .elementor-nav-menu ul ul ul ul ul a:focus,
    .elementor-nav-menu ul ul ul ul ul a:active {
      border-left: 40px solid transparent; }
  .elementor-nav-menu li,
  .elementor-nav-menu a {
    position: relative; }
  .elementor-nav-menu li {
    border-width: 0; }
  .elementor-nav-menu a {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .elementor-nav-menu a, .elementor-nav-menu a:hover, .elementor-nav-menu a:focus {
      padding: 10px 20px;
      line-height: 20px; }
    .elementor-nav-menu a.current {
      background: #373a3c;
      color: #fff; }
    .elementor-nav-menu a.disabled {
      cursor: not-allowed;
      color: #a1a6a9; }
  .elementor-nav-menu .e-plus-icon:before {
    content: '+'; }
  .elementor-nav-menu .sub-arrow {
    line-height: 1;
    padding: 10px 10px 10px 0;
    margin-top: -10px;
    margin-bottom: -10px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .elementor-nav-menu .sub-arrow i {
      pointer-events: none; }
    .elementor-nav-menu .sub-arrow .fa.fa-chevron-down, .elementor-nav-menu .sub-arrow .fas.fa-chevron-down {
      font-size: 0.7em; }
    .elementor-nav-menu .sub-arrow .e-font-icon-svg {
      height: 1em;
      width: 1em; }
      .elementor-nav-menu .sub-arrow .e-font-icon-svg.fa-svg-chevron-down {
        height: 0.7em;
        width: 0.7em; }

.elementor-nav-menu--dropdown .elementor-item:hover, .elementor-nav-menu--dropdown .elementor-item:focus, .elementor-nav-menu--dropdown .elementor-item.highlighted, .elementor-nav-menu--dropdown .elementor-item.elementor-item-active,
.elementor-sub-item:hover,
.elementor-sub-item:focus,
.elementor-sub-item.highlighted,
.elementor-sub-item.elementor-item-active {
  background-color: #55595c;
  color: #fff; }

.elementor-menu-toggle {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  font-size: 22px;
  padding: 0.25em;
  cursor: pointer;
  border: 0 solid;
  border-radius: 3px;
  background-color: rgba(0, 0, 0, 0.05);
  color: #494c4f; }
  .elementor-menu-toggle.elementor-active .elementor-menu-toggle__icon--open {
    display: none; }
  .elementor-menu-toggle:not(.elementor-active) .elementor-menu-toggle__icon--close {
    display: none; }
  .elementor-menu-toggle .e-font-icon-svg {
    fill: #494c4f;
    height: 1em;
    width: 1em; }

.elementor-nav-menu--dropdown {
  background-color: #fff;
  font-size: 13px; }
  .elementor-nav-menu--dropdown-none .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-none .elementor-menu-toggle {
    display: none; }
  .elementor-nav-menu--dropdown.elementor-nav-menu__container {
    margin-top: 10px;
    -webkit-transition: max-height 0.3s, -webkit-transform 0.3s;
    transition: max-height 0.3s, -webkit-transform 0.3s;
    -o-transition: max-height 0.3s, transform 0.3s;
    transition: max-height 0.3s, transform 0.3s;
    transition: max-height 0.3s, transform 0.3s, -webkit-transform 0.3s;
    -webkit-transform-origin: top;
        -ms-transform-origin: top;
            transform-origin: top;
    overflow: auto; }
    .elementor-nav-menu--dropdown.elementor-nav-menu__container .elementor-sub-item {
      font-size: 0.85em; }
  .elementor-nav-menu--dropdown a {
    color: #494c4f; }
    .elementor-nav-menu--dropdown a.current {
      background: #373a3c;
      color: #fff; }
    .elementor-nav-menu--dropdown a.disabled {
      color: #b3b3b3; }

ul.elementor-nav-menu--dropdown a, ul.elementor-nav-menu--dropdown a:hover, ul.elementor-nav-menu--dropdown a:focus {
  text-shadow: none;
  border-right: 8px solid transparent; }

.elementor-nav-menu__text-align-center .elementor-nav-menu--dropdown .elementor-nav-menu a {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-nav-menu--toggle .elementor-menu-toggle:not(.elementor-active) + .elementor-nav-menu__container {
  -webkit-transform: scaleY(0);
      -ms-transform: scaleY(0);
          transform: scaleY(0);
  max-height: 0; }

.elementor-nav-menu--toggle .elementor-menu-toggle.elementor-active + .elementor-nav-menu__container {
  -webkit-transform: scaleY(1);
      -ms-transform: scaleY(1);
          transform: scaleY(1);
  max-height: 100vh; }

.elementor-nav-menu--stretch .elementor-nav-menu__container.elementor-nav-menu--dropdown {
  position: absolute;
  z-index: 9997; }

/**
 * Mobile Hamburger Menu Breakpoint
 */
@media (max-width: 767px) {
  .elementor-nav-menu--dropdown-mobile .elementor-nav-menu--main {
    display: none; } }

@media (min-width: 768px) {
  .elementor-nav-menu--dropdown-mobile .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-mobile .elementor-menu-toggle {
    display: none; } }

/**
 * Mobile Extra Hamburger Menu Breakpoint
 */
@media (max-width: -1px) {
  .elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--main {
    display: none; } }

@media (min-width: -1px) {
  .elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-mobile_extra .elementor-menu-toggle {
    display: none; } }

/**
 * Tablet Hamburger Menu Breakpoint
 */
@media (min-width: 1025px) {
  .elementor-nav-menu--dropdown-tablet .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-tablet .elementor-menu-toggle {
    display: none; } }

@media (max-width: 1024px) {
  .elementor-nav-menu--dropdown-tablet .elementor-nav-menu--main {
    display: none; } }

/**
 * Tablet Extra Hamburger Menu Breakpoint
 */
@media (max-width: -1px) {
  .elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--main {
    display: none; } }

@media (min-width: -1px) {
  .elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-tablet_extra .elementor-menu-toggle {
    display: none; } }

.elementor-gallery__container {
  min-height: 1px; }

.elementor-gallery-item {
  position: relative;
  overflow: hidden;
  display: block;
  text-decoration: none;
  border: solid var(--image-border-width) var(--image-border-color);
  border-radius: var(--image-border-radius); }
  .elementor-gallery-item__overlay, .elementor-gallery-item__content {
    height: 100%;
    width: 100%;
    position: absolute;
    top: 0;
    left: 0; }
  .elementor-gallery-item__overlay {
    mix-blend-mode: var(--overlay-mix-blend-mode);
    -webkit-transition-duration: var(--overlay-transition-duration);
         -o-transition-duration: var(--overlay-transition-duration);
            transition-duration: var(--overlay-transition-duration);
    -webkit-transition-property: mix-blend-mode, opacity, background-color, -webkit-transform;
    transition-property: mix-blend-mode, opacity, background-color, -webkit-transform;
    -o-transition-property: mix-blend-mode, transform, opacity, background-color;
    transition-property: mix-blend-mode, transform, opacity, background-color;
    transition-property: mix-blend-mode, transform, opacity, background-color, -webkit-transform; }
  .elementor-gallery-item__image.e-gallery-image {
    -webkit-transition-duration: var(--image-transition-duration);
         -o-transition-duration: var(--image-transition-duration);
            transition-duration: var(--image-transition-duration);
    -webkit-transition-property: -webkit-filter, -webkit-transform;
    transition-property: -webkit-filter, -webkit-transform;
    -o-transition-property: filter, transform;
    transition-property: filter, transform;
    transition-property: filter, transform, -webkit-filter, -webkit-transform; }
  .elementor-gallery-item__content {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: var(--content-justify-content, center);
        -ms-flex-pack: var(--content-justify-content, center);
            justify-content: var(--content-justify-content, center);
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    text-align: var(--content-text-align);
    padding: var(--content-padding); }
    .elementor-gallery-item__content > div {
      -webkit-transition-duration: var(--content-transition-duration);
           -o-transition-duration: var(--content-transition-duration);
              transition-duration: var(--content-transition-duration); }
    .elementor-gallery-item__content.elementor-gallery--sequenced-animation > div:nth-child(2) {
      -webkit-transition-delay: calc( ( var(--content-transition-delay) / 3 ));
           -o-transition-delay: calc( ( var(--content-transition-delay) / 3 ));
              transition-delay: calc( ( var(--content-transition-delay) / 3 )); }
    .elementor-gallery-item__content.elementor-gallery--sequenced-animation > div:nth-child(3) {
      -webkit-transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 2);
           -o-transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 2);
              transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 2); }
    .elementor-gallery-item__content.elementor-gallery--sequenced-animation > div:nth-child(4) {
      -webkit-transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 3);
           -o-transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 3);
              transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 3); }
  .elementor-gallery-item__description {
    color: var(--description-text-color, #ffffff);
    width: 100%; }
  .elementor-gallery-item__title {
    color: var(--title-text-color, #ffffff);
    font-weight: bold;
    width: 100%; }

.elementor-gallery__titles-container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-pack: var(--titles-container-justify-content, center);
      -ms-flex-pack: var(--titles-container-justify-content, center);
          justify-content: var(--titles-container-justify-content, center);
  margin-bottom: 20px; }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:before {
    background-color: var(--galleries-pointer-bg-color-hover); }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:after {
    background-color: var(--galleries-pointer-bg-color-hover); }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:before {
    background-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:after {
    background-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item:before {
    border-color: var(--galleries-pointer-bg-color-hover);
    border-width: var(--galleries-pointer-border-width); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item:after {
    border-color: var(--galleries-pointer-bg-color-hover); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:before {
    border-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:after {
    border-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:before {
    border-width: 0 0 var(--galleries-pointer-border-width) var(--galleries-pointer-border-width); }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:after {
    border-width: var(--galleries-pointer-border-width) var(--galleries-pointer-border-width) 0 0; }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:before {
    border-width: var(--galleries-pointer-border-width) 0 0 var(--galleries-pointer-border-width); }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:after {
    border-width: 0 var(--galleries-pointer-border-width) var(--galleries-pointer-border-width) 0; }
  .elementor-gallery__titles-container .e--pointer-underline .elementor-item:after,
  .elementor-gallery__titles-container .e--pointer-overline .elementor-item:before,
  .elementor-gallery__titles-container .e--pointer-double-line .elementor-item:before,
  .elementor-gallery__titles-container .e--pointer-double-line .elementor-item:after {
    height: var(--galleries-pointer-border-width); }

.elementor-gallery-title {
  --space-between: 10px;
  cursor: pointer;
  color: #6D7882;
  font-weight: 500;
  position: relative;
  padding: 7px 14px;
  -webkit-transition: all 0.3s;
  -o-transition: all 0.3s;
  transition: all 0.3s; }
  .elementor-gallery-title--active {
    color: #495157; }
  .elementor-gallery-title:not(:last-child) {
    margin-left: var(--space-between); }

.elementor-gallery-item__title + .elementor-gallery-item__description {
  margin-top: var(--description-margin-top); }

.e-gallery-item.elementor-gallery-item {
  -webkit-transition-property: all;
  -o-transition-property: all;
  transition-property: all; }

.e-gallery-item:hover .elementor-gallery__item-overlay-bg {
  opacity: 1; }

.e-gallery-item:hover .elementor-gallery__item-overlay-content {
  opacity: 1; }
  .e-gallery-item:hover .elementor-gallery__item-overlay-content__title, .e-gallery-item:hover .elementor-gallery__item-overlay-content__description {
    opacity: 1; }

.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-right, .e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-left, .e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-top, .e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-bottom {
  opacity: 1; }

a.elementor-item.elementor-gallery-title {
  color: var(--galleries-title-color-normal); }
  a.elementor-item.elementor-gallery-title:hover, a.elementor-item.elementor-gallery-title.elementor-item-active, a.elementor-item.elementor-gallery-title.highlighted, a.elementor-item.elementor-gallery-title:focus {
    color: var(--galleries-title-color-hover); }
  a.elementor-item.elementor-gallery-title.elementor-item-active {
    color: var(--gallery-title-color-active); }

.elementor-widget-table-of-contents .elementor-toc__header-title {
  color: var(--header-color); }

.elementor-widget-table-of-contents.elementor-toc--collapsed .elementor-toc__toggle-button--collapse {
  display: none; }

.elementor-widget-table-of-contents:not(.elementor-toc--collapsed) .elementor-toc__toggle-button--expand {
  display: none; }

.elementor-widget-table-of-contents .elementor-widget-container {
  min-height: var(--box-min-height);
  border: var(--box-border-width, 1px) solid var(--box-border-color, #a4afb7);
  border-radius: var(--box-border-radius, 3px);
  background-color: var(--box-background-color);
  -webkit-transition: min-height 0.4s;
  -o-transition: min-height 0.4s;
  transition: min-height 0.4s;
  overflow: hidden; }

.elementor-toc__header {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  padding: var(--box-padding, 20px);
  background-color: var(--header-background-color);
  border-bottom: var(--separator-width, 1px) solid var(--box-border-color, #a4afb7); }
  .elementor-toc__header-title {
    font-size: 18px;
    margin: 0;
    color: var(--header-color); }

.elementor-toc__toggle-button {
  cursor: pointer;
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex; }
  .elementor-toc__toggle-button i {
    color: var(--toggle-button-color); }
  .elementor-toc__toggle-button svg {
    fill: var(--toggle-button-color);
    height: 1em;
    width: 1em;
    fill: var(--toggle-button-color); }

.elementor-toc__spinner-container {
  text-align: center; }

.elementor-toc__spinner {
  font-size: 2em; }
  .elementor-toc__spinner.e-font-icon-svg {
    height: 1em;
    width: 1em; }

.elementor-toc__body {
  padding: var(--box-padding, 20px);
  max-height: var(--toc-body-max-height);
  overflow-y: auto; }
  .elementor-toc__body::-webkit-scrollbar {
    width: 7px; }
  .elementor-toc__body::-webkit-scrollbar-thumb {
    background-color: #c2cbd2;
    border-radius: 10px; }

.elementor-toc__list-wrapper {
  list-style: none;
  padding: 0; }

.elementor-toc__list-item {
  margin-bottom: 0.5em; }
  .elementor-toc__list-item.elementor-item-active {
    font-weight: bold; }
  .elementor-toc__list-item .elementor-toc__list-wrapper {
    margin-top: 0.5em;
    margin-right: var(--nested-list-indent, 1em); }
  .elementor-toc__list-item-text:hover {
    color: var(--item-text-hover-color);
    -webkit-text-decoration: var(--item-text-hover-decoration);
            text-decoration: var(--item-text-hover-decoration); }
  .elementor-toc__list-item-text.elementor-item-active {
    color: var(--item-text-active-color);
    -webkit-text-decoration: var(--item-text-active-decoration);
            text-decoration: var(--item-text-active-decoration); }
  .elementor-toc__list-item-text-wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .elementor-toc__list-item-text-wrapper i, .elementor-toc__list-item-text-wrapper:before {
      margin-left: 8px;
      color: var(--marker-color); }
    .elementor-toc__list-item-text-wrapper svg {
      margin-left: 8px;
      fill: var(--marker-color);
      height: var(--marker-size, 0.5em);
      width: var(--marker-size, 0.5em); }
    .elementor-toc__list-item-text-wrapper i {
      font-size: var(--marker-size, 0.5em); }
    .elementor-toc__list-item-text-wrapper:before {
      font-size: var(--marker-size, 1em); }

.elementor-toc--content-ellipsis .elementor-toc__list-item-text {
  white-space: nowrap;
  overflow: hidden;
  -o-text-overflow: ellipsis;
     text-overflow: ellipsis; }

.elementor-toc__list-items--collapsible > .elementor-toc__list-wrapper > .elementor-toc__list-item > .elementor-toc__list-wrapper {
  display: none; }

.elementor-toc__heading-anchor {
  position: absolute; }

.elementor-toc__body .elementor-toc__list-item-text {
  color: var(--item-text-color);
  -webkit-text-decoration: var(--item-text-decoration);
          text-decoration: var(--item-text-decoration); }
  .elementor-toc__body .elementor-toc__list-item-text:hover {
    color: var(--item-text-hover-color);
    -webkit-text-decoration: var(--item-text-hover-decoration);
            text-decoration: var(--item-text-hover-decoration); }
  .elementor-toc__body .elementor-toc__list-item-text.elementor-item-active {
    color: var(--item-text-active-color);
    -webkit-text-decoration: var(--item-text-active-decoration);
            text-decoration: var(--item-text-active-decoration); }

ol.elementor-toc__list-wrapper {
  counter-reset: item; }
  ol.elementor-toc__list-wrapper .elementor-toc__list-item {
    counter-increment: item; }
    ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper:before {
      content: counters(item, ".") ". "; }

@media only screen and (max-width: -1px) {
  .elementor-toc--minimized-on-tablet_extra .elementor-toc__body {
    display: none; } }

@media only screen and (max-width: 1024px) {
  .elementor-toc--minimized-on-tablet .elementor-toc__body {
    display: none; } }

@media only screen and (max-width: -1px) {
  .elementor-toc--minimized-on-mobile_extra .elementor-toc__body {
    display: none; } }

@media only screen and (max-width: 767px) {
  .elementor-toc--minimized-on-mobile .elementor-toc__body {
    display: none; } }

.e-lottie__container {
  display: inline-block;
  max-width: var(--lottie-container-max-width);
  width: var(--lottie-container-width);
  opacity: var(--lottie-container-opacity); }
  .e-lottie__container:hover {
    opacity: var(--lottie-container-opacity-hover);
    -webkit-transition-duration: var(--lottie-container-transition-duration-hover);
         -o-transition-duration: var(--lottie-container-transition-duration-hover);
            transition-duration: var(--lottie-container-transition-duration-hover); }
  .e-lottie__container svg,
  .e-lottie__container svg * {
    -webkit-transition: none !important;
    -o-transition: none !important;
    transition: none !important; }

.e-lottie__caption {
  color: var(--caption-color);
  margin-top: var(--caption-margin-top);
  text-align: var(--caption-text-align); }

/* Video_Playlist Widget */
.e-tabs-inner-tabs {
  text-align: right;
  font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
  font-size: 16px; }
  .e-tabs-inner-tabs .e-tab-content {
    padding-top: 32px; }
  .e-tabs-inner-tabs .e-inner-tabs-wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    position: relative;
    overflow: hidden;
    z-index: 1; }
    .e-tabs-inner-tabs .e-inner-tabs-wrapper :after {
      content: '';
      width: 100%;
      height: var(--inner-tabs-border-height, 1px);
      background-color: var(--inner-tabs-border-color, #d5dadf);
      position: absolute;
      bottom: 0;
      z-index: -1; }
    .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title {
      font-weight: 700;
      min-width: 140px;
      line-height: 38px;
      height: 38px;
      -webkit-box-sizing: content-box;
              box-sizing: content-box; }
      .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title a {
        color: #6d7882;
        padding: 0 36px;
        display: block;
        text-align: center; }
      .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active {
        border-bottom: 0 solid transparent;
        border-color: #495157;
        border-width: 0 0 1px 0; }
        .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active a {
          color: #495157; }
  .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title {
    display: none; }
  .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content {
    display: none;
    padding: 20px; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-text {
      color: #556068; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.e-inner-tab-active {
      display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons {
      margin-top: 24px;
      display: none; }
      .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons button {
        display: none;
        font-weight: 500;
        line-height: 24px;
        text-decoration: underline;
        border: none;
        background: transparent;
        padding: 0; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible .e-inner-tab-text {
      overflow: hidden; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button {
      display: none; }
      .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button.show-button {
        display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible.show-inner-tab-buttons .e-inner-tab-buttons {
      display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.show-full-height div.e-inner-tab-text {
      height: auto; }

@media (max-width: 767px) {
  .e-tabs-inner-tabs > .e-tab-content:first-child {
    padding-top: 24px; }
  .e-tabs-inner-tabs .e-inner-tabs-wrapper {
    display: none; }
  .e-tabs-inner-tabs .e-inner-tabs-content-wrapper {
    border-width: 1px 1px 0;
    border-style: solid;
    border-color: #d5dadf; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title {
      border-width: 0 0 1px;
      border-style: solid;
      border-color: #d5dadf;
      font-size: 16px;
      font-weight: 700;
      text-align: center;
      height: 38px;
      line-height: 38px;
      -o-text-overflow: ellipsis;
         text-overflow: ellipsis;
      white-space: nowrap;
      overflow: hidden;
      padding: 0 10px;
      cursor: pointer;
      display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content {
      border-width: 0 0 1px;
      border-style: solid;
      border-color: #d5dadf;
      padding: 20px; } }

.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-direction: row;
          flex-direction: row; }

@media (max-width: 767px) {
  .elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area {
    -webkit-box-orient: vertical;
    -webkit-box-direction: reverse;
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse; } }

.elementor-widget-video-playlist {
  font-family: Roboto, Arial, Helvetica, Verdana, sans-serif; }
  .elementor-widget-video-playlist .e-tabs {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }
  .elementor-widget-video-playlist .e-tabs-main-area {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse;
    height: 434px; }
  .elementor-widget-video-playlist .e-tabs-wrapper {
    height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    width: 33%; }
  .elementor-widget-video-playlist .e-tabs-header {
    background-color: #ffffff;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    padding: 0 16px;
    min-height: 56px;
    border-bottom: 1px solid #d5dadf; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-header-right-side {
      display: -webkit-inline-box;
      display: -ms-inline-flexbox;
      display: inline-flex;
      -ms-flex-negative: 0;
          flex-shrink: 0; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-title {
      font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
      -o-text-overflow: ellipsis;
         text-overflow: ellipsis;
      font-weight: 700;
      font-size: 16px;
      padding: 10px 0;
      overflow-wrap: anywhere;
      -webkit-hyphens: auto;
          -ms-hyphens: auto;
              hyphens: auto;
      margin: auto 0; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count {
      font-size: 14px;
      -ms-flex-negative: 0;
          flex-shrink: 0;
      font-weight: 400;
      line-height: 20px;
      -ms-flex-item-align: start;
          align-self: flex-start;
      padding: 18px 0 0; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button {
      display: none;
      margin: auto 0 auto 8px;
      cursor: pointer;
      padding: 0 4px; }
      .elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button.e-font-icon-svg {
        height: 1em;
        width: 1em; }
    .elementor-widget-video-playlist .e-tabs-header .rotate-up {
      -webkit-transform: rotate(-180deg);
          -ms-transform: rotate(-180deg);
              transform: rotate(-180deg);
      -webkit-transition: .3s;
      -o-transition: .3s;
      transition: .3s; }
    .elementor-widget-video-playlist .e-tabs-header .rotate-down {
      -webkit-transform: rotate(0deg);
          -ms-transform: rotate(0deg);
              transform: rotate(0deg);
      -webkit-transition: .3s;
      -o-transition: .3s;
      transition: .3s; }
  .elementor-widget-video-playlist .e-tabs-items-wrapper {
    background-color: #ffffff;
    overflow: hidden;
    position: relative;
    height: 100%; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom {
      background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(#ffffff));
      background: -webkit-linear-gradient(top, transparent 0%, #ffffff 100%);
      background: -o-linear-gradient(top, transparent 0%, #ffffff 100%);
      background: linear-gradient(180deg, transparent 0%, #ffffff 100%); }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top {
      background: -webkit-gradient(linear, left bottom, left top, from(transparent), to(#ffffff));
      background: -webkit-linear-gradient(bottom, transparent 0%, #ffffff 100%);
      background: -o-linear-gradient(bottom, transparent 0%, #ffffff 100%);
      background: linear-gradient(0deg, transparent 0%, #ffffff 100%); }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items {
      overflow: auto;
      height: 100%; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-section-title {
      border-color: #d5dadf;
      border-width: 1px 0 0 0;
      font-size: 14px;
      height: 36px;
      padding: 0 16px;
      line-height: 36px;
      margin: 0;
      text-align: right;
      -o-text-overflow: ellipsis;
         text-overflow: ellipsis;
      white-space: nowrap;
      overflow: hidden;
      border-width: 0;
      -webkit-box-sizing: content-box;
              box-sizing: content-box; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title {
      background-color: #ffffff;
      border-color: #d5dadf;
      border-width: 0 0 1px 0;
      cursor: pointer;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      font-size: 14px;
      height: 55px;
      line-height: 55px;
      outline: none;
      padding: 0 16px;
      -webkit-box-sizing: content-box;
              box-sizing: content-box; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i {
        text-shadow: 0 0 3px #000000;
        color: #ffffff;
        font-size: var(--playlist-item-icon-size, 16px); }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg {
        text-shadow: 0 0 3px #000000;
        color: #ffffff;
        fill: #ffffff;
        width: var(--playlist-item-icon-size, 16px);
        height: var(--playlist-item-icon-size, 16px); }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg path {
          fill: #ffffff; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover {
        background-color: #f1f3f5;
        border-color: #d5dadf;
        border-width: 0 0 1px 0; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active i, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover i {
          text-shadow: 0 0 3px #000000;
          color: #ffffff; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg {
          text-shadow: 0 0 3px #000000;
          color: #ffffff; }
          .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg path, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg path {
            fill: #ffffff; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active .e-tab-title-text, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover .e-tab-title-text {
          font-size: 14px; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-play,
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched {
        display: -webkit-inline-box;
        display: -ms-inline-flexbox;
        display: inline-flex; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail {
        background-color: #d5dadf;
        position: relative;
        margin: auto 0;
        -ms-flex-negative: 0;
            flex-shrink: 0;
        width: 75px;
        height: 42px; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail img {
          -o-object-fit: fill;
             object-fit: fill;
          width: 75px;
          height: 42px; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail i,
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail svg {
          position: absolute;
          bottom: 4px;
          right: 4px;
          font-weight: 900; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-title-text {
        font-size: 14px;
        margin: auto 8px;
        text-align: right;
        -o-text-overflow: ellipsis;
           text-overflow: ellipsis;
        white-space: nowrap;
        overflow: hidden;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i,
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg {
        margin: auto 0;
        vertical-align: middle; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-duration {
        font-size: 14px;
        margin: auto 0; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched {
        display: none; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-play {
        display: none; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-watched {
        display: block; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top {
      display: none;
      height: 98px;
      position: absolute;
      top: 0;
      width: 100%;
      pointer-events: none;
      background: -webkit-gradient(linear, left bottom, left top, from(transparent), to(#ffffff));
      background: -webkit-linear-gradient(bottom, transparent 0%, #ffffff 100%);
      background: -o-linear-gradient(bottom, transparent 0%, #ffffff 100%);
      background: linear-gradient(0deg, transparent 0%, #ffffff 100%); }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom {
      display: none;
      height: 98px;
      position: absolute;
      bottom: 0;
      width: 100%;
      background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(#ffffff));
      background: -webkit-linear-gradient(top, transparent 0%, #ffffff 100%);
      background: -o-linear-gradient(top, transparent 0%, #ffffff 100%);
      background: linear-gradient(180deg, transparent 0%, #ffffff 100%);
      pointer-events: none; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper.top-shadow .shadow-top {
      display: block; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper.bottom-shadow .shadow-bottom {
      display: block; }
  .elementor-widget-video-playlist .e-tabs-content-wrapper {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    height: 100%;
    position: relative; }
    .elementor-widget-video-playlist .e-tabs-content-wrapper .elementor-custom-embed-image-overlay {
      cursor: pointer;
      text-align: center;
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      -webkit-background-size: cover;
              background-size: cover;
      background-position: 50%; }
    .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-mobile-title {
      display: none; }
    .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content {
      background-color: #000000;
      display: none;
      height: 100%;
      outline: none; }
      .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content > div {
        height: 100%; }
      .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content iframe {
        height: 100%;
        max-height: 100% !important;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex; }
      .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content video {
        height: 100%;
        background-color: #000000; }
  .elementor-widget-video-playlist .e-tabs-inner-tabs .e-tab-content {
    display: none;
    outline: none; }

@media (max-width: 767px) {
  .elementor-widget-video-playlist .e-tabs-main-area {
    -webkit-box-orient: vertical;
    -webkit-box-direction: reverse;
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse;
    height: auto; }
    .elementor-widget-video-playlist .e-tabs-main-area .e-tabs-content-wrapper {
      border: none;
      height: 38%; }
  .elementor-widget-video-playlist .e-tabs-wrapper {
    width: auto;
    height: 62%; }
  .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items {
    max-height: 248px; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items .e-tab-title {
      border: none; }
  .elementor-widget-video-playlist .e-tabs-header {
    min-height: 48px; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button {
      display: -webkit-inline-box;
      display: -ms-inline-flexbox;
      display: inline-flex; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count {
      margin: 0 6px;
      padding: 14px 0 0; }
  .elementor-widget-video-playlist .e-tab-content {
    border: none;
    padding: 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; } }

.elementor-payment-button {
  border: none; }

.elementor-scrolling-tracker {
  --scrolling-track-default-progress-color: #61ce70;
  --scrolling-track-default-color: #eeeeee;
  --scrolling-track-precentage-default-color: $black; }

.elementor-scrolling-tracker-horizontal {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  width: 100%;
  height: var(--horizontal-height, 20px);
  padding: var(--tracker-padding);
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  border-top-width: var(--horizontal-border-top-width, 2px);
  border-right-width: var(--horizontal-border-right-width, 2px);
  border-bottom-width: var(--horizontal-border-bottom-width, 2px);
  border-left-width: var(--horizontal-border-left-width, 2px);
  border-style: var(--horizontal-border-style);
  border-color: var(--horizontal-border-color);
  border-radius: var(--border-radius);
  background-color: var(--scrolling-track-default-color);
  direction: var(--direction); }
  .elementor-scrolling-tracker-horizontal .current-progress {
    display: none;
    height: 100%;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    position: relative;
    border-radius: var(--progress-border-radius);
    border-top-width: var(--horizontal-progress-border-top-width, 2px);
    border-right-width: var(--horizontal-progress-border-right-width, 2px);
    border-bottom-width: var(--horizontal-progress-border-bottom-width, 2px);
    border-left-width: var(--horizontal-progress-border-left-width, 2px);
    border-style: var(--horizontal-progress-border);
    border-color: var(--horizontal-progress-border-color);
    background-color: var(--scrolling-track-default-progress-color); }
    .elementor-scrolling-tracker-horizontal .current-progress .current-progress-percentage {
      inset-inline-end: 0.5em;
      inset-inline-start: auto;
      position: absolute;
      direction: var(--text-direction);
      color: var(--percentage-color, var(--scrolling-track-precentage-default-color)); }

.elementor-scrolling-tracker-circular {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  width: var(--circular-width, 100px);
  height: var(--circular-height, 100px);
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  position: relative;
  -webkit-margin-start: 0;
          margin-inline-start: 0;
  -webkit-margin-end: auto;
          margin-inline-end: auto; }
  .elementor-scrolling-tracker-circular .current-progress-percentage {
    position: absolute;
    color: var(--percentage-color, var(--scrolling-track-precentage-default-color)); }
  .elementor-scrolling-tracker-circular svg {
    position: absolute; }
  .elementor-scrolling-tracker-circular .current-progress {
    display: none;
    -webkit-transform: rotate(-90deg);
        -ms-transform: rotate(-90deg);
            transform: rotate(-90deg);
    -webkit-transform-origin: 50% 50%;
        -ms-transform-origin: 50% 50%;
            transform-origin: 50% 50%;
    stroke: var(--circular-color, var(--scrolling-track-default-progress-color));
    fill: transparent;
    stroke-width: var(--circular-progress-width, 4px); }
  .elementor-scrolling-tracker-circular .circle {
    stroke: var(--circular-background-color, var(--scrolling-track-default-color));
    fill: transparent;
    stroke-width: var(--circular-background-width, 4px); }

.elementor-scrolling-tracker-alignment-left {
  margin-left: 0;
  margin-right: auto; }

.elementor-scrolling-tracker-alignment-center {
  margin-left: auto;
  margin-right: auto; }

.elementor-scrolling-tracker-alignment-right {
  margin-left: auto;
  margin-right: 0; }
/*# sourceMappingURL=frontend-rtl.css.map */assets/css/widget-pricing.min.css000064400000013702150755004320013052 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-widget-price-list .elementor-price-list{list-style:none;padding:0;margin:0}.elementor-widget-price-list .elementor-price-list li{margin:0}.elementor-price-list li:not(:last-child){margin-bottom:20px}.elementor-price-list .elementor-price-list-image{max-width:50%;-ms-flex-negative:0;flex-shrink:0;padding-right:25px}.elementor-price-list .elementor-price-list-image img{width:100%}.elementor-price-list .elementor-price-list-header,.elementor-price-list .elementor-price-list-item,.elementor-price-list .elementor-price-list-text{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-price-list .elementor-price-list-item{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-price-list .elementor-price-list-item .elementor-price-list-text{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-price-list .elementor-price-list-item .elementor-price-list-header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-preferred-size:100%;flex-basis:100%;font-size:19px;font-weight:600;margin-bottom:10px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-price-list .elementor-price-list-item .elementor-price-list-title{max-width:80%}.elementor-price-list .elementor-price-list-item .elementor-price-list-price{font-weight:600}.elementor-price-list .elementor-price-list-item p.elementor-price-list-description{-ms-flex-preferred-size:100%;flex-basis:100%;font-size:14px;margin:0}.elementor-price-list .elementor-price-list-item .elementor-price-list-separator{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-left:10px;margin-right:10px;border-bottom-style:dotted;border-bottom-width:2px;height:0}.elementor-price-table{text-align:center}.elementor-price-table .elementor-price-table__header{background:var(--e-price-table-header-background-color,#555);padding:20px 0}.elementor-price-table .elementor-price-table__heading{margin:0;padding:0;line-height:1.2;font-size:24px;font-weight:600;color:#fff}.elementor-price-table .elementor-price-table__subheading{font-size:13px;font-weight:400;color:#fff}.elementor-price-table .elementor-price-table__original-price{margin-right:15px;text-decoration:line-through;font-size:.5em;line-height:1;font-weight:400;-ms-flex-item-align:center;align-self:center}.elementor-price-table .elementor-price-table__original-price .elementor-price-table__currency{font-size:1em;margin:0}.elementor-price-table .elementor-price-table__price{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;color:#555;font-weight:800;font-size:65px;padding:40px 0}.elementor-price-table .elementor-price-table__price .elementor-typo-excluded{line-height:normal;letter-spacing:normal;text-transform:none;font-weight:400;font-size:medium;font-style:normal}.elementor-price-table .elementor-price-table__after-price{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;text-align:left;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-price-table .elementor-price-table__integer-part{line-height:.8}.elementor-price-table .elementor-price-table__currency,.elementor-price-table .elementor-price-table__fractional-part{line-height:1;font-size:.3em}.elementor-price-table .elementor-price-table__currency{margin-right:3px}.elementor-price-table .elementor-price-table__period{width:100%;font-size:13px;font-weight:400}.elementor-price-table .elementor-price-table__features-list{list-style-type:none;margin:0;padding:0;line-height:1;color:var(--e-price-table-features-list-color)}.elementor-price-table .elementor-price-table__features-list li{font-size:14px;line-height:1;margin:0;padding:0}.elementor-price-table .elementor-price-table__features-list li .elementor-price-table__feature-inner{margin-left:15px;margin-right:15px}.elementor-price-table .elementor-price-table__features-list li:not(:first-child):before{content:"";display:block;border:0 solid hsla(0,0%,47.8%,.3);margin:10px 12.5%}.elementor-price-table .elementor-price-table__features-list i{margin-right:10px;font-size:1.3em}.elementor-price-table .elementor-price-table__features-list svg{margin-right:10px;fill:var(--e-price-table-features-list-color);height:1.3em;width:1.3em}.elementor-price-table .elementor-price-table__features-list svg~*{vertical-align:text-top}.elementor-price-table .elementor-price-table__footer{padding:30px 0}.elementor-price-table .elementor-price-table__additional_info{margin:0;font-size:13px;line-height:1.4}.elementor-price-table__ribbon{position:absolute;top:0;left:auto;right:0;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);width:150px;overflow:hidden;height:150px}.elementor-price-table__ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000}.elementor-price-table__ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-price-table__ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}.elementor-widget-price-table .elementor-widget-container{overflow:hidden;background-color:#f7f7f7}assets/css/widget-motion-fx.min.css000064400000002217150755004320013336 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-motion-effects-element,.elementor-motion-effects-layer{-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(0,.33,.07,1.03);-o-transition-timing-function:cubic-bezier(0,.33,.07,1.03);transition-timing-function:cubic-bezier(0,.33,.07,1.03);-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s}.elementor-motion-effects-container{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;-webkit-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);-ms-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.elementor-motion-effects-layer{position:absolute;top:0;left:0;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover}.elementor-motion-effects-perspective{-webkit-perspective:1200px;perspective:1200px}assets/css/widget-gallery.min.css000064400000016753150755004320013067 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-gallery__container{min-height:1px}.elementor-gallery-item{position:relative;overflow:hidden;display:block;text-decoration:none;border:solid var(--image-border-width) var(--image-border-color);border-radius:var(--image-border-radius)}.elementor-gallery-item__content,.elementor-gallery-item__overlay{height:100%;width:100%;position:absolute;top:0;left:0}.elementor-gallery-item__overlay{mix-blend-mode:var(--overlay-mix-blend-mode);-webkit-transition-duration:var(--overlay-transition-duration);-o-transition-duration:var(--overlay-transition-duration);transition-duration:var(--overlay-transition-duration);-webkit-transition-property:mix-blend-mode,opacity,background-color,-webkit-transform;transition-property:mix-blend-mode,opacity,background-color,-webkit-transform;-o-transition-property:mix-blend-mode,transform,opacity,background-color;transition-property:mix-blend-mode,transform,opacity,background-color;transition-property:mix-blend-mode,transform,opacity,background-color,-webkit-transform}.elementor-gallery-item__image.e-gallery-image{-webkit-transition-duration:var(--image-transition-duration);-o-transition-duration:var(--image-transition-duration);transition-duration:var(--image-transition-duration);-webkit-transition-property:-webkit-filter,-webkit-transform;transition-property:-webkit-filter,-webkit-transform;-o-transition-property:filter,transform;transition-property:filter,transform;transition-property:filter,transform,-webkit-filter,-webkit-transform}.elementor-gallery-item__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:var(--content-justify-content,center);-ms-flex-pack:var(--content-justify-content,center);justify-content:var(--content-justify-content,center);-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:var(--content-text-align);padding:var(--content-padding)}.elementor-gallery-item__content>div{-webkit-transition-duration:var(--content-transition-duration);-o-transition-duration:var(--content-transition-duration);transition-duration:var(--content-transition-duration)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(2){-webkit-transition-delay:calc((var(--content-transition-delay) / 3));-o-transition-delay:calc((var(--content-transition-delay) / 3));transition-delay:calc((var(--content-transition-delay) / 3))}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(3){-webkit-transition-delay:calc((var(--content-transition-delay) / 3) * 2);-o-transition-delay:calc((var(--content-transition-delay) / 3) * 2);transition-delay:calc((var(--content-transition-delay) / 3) * 2)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(4){-webkit-transition-delay:calc((var(--content-transition-delay) / 3) * 3);-o-transition-delay:calc((var(--content-transition-delay) / 3) * 3);transition-delay:calc((var(--content-transition-delay) / 3) * 3)}.elementor-gallery-item__description{color:var(--description-text-color,#fff);width:100%}.elementor-gallery-item__title{color:var(--title-text-color,#fff);font-weight:700;width:100%}.elementor-gallery__titles-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:var(--titles-container-justify-content,center);-ms-flex-pack:var(--titles-container-justify-content,center);justify-content:var(--titles-container-justify-content,center);margin-bottom:20px}.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:after,.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:before{background-color:var(--galleries-pointer-bg-color-hover)}.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:after,.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:before{background-color:var(--galleries-pointer-bg-color-active)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item:before{border-color:var(--galleries-pointer-bg-color-hover);border-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item:after{border-color:var(--galleries-pointer-bg-color-hover)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:after,.elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:before{border-color:var(--galleries-pointer-bg-color-active)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:before{border-left-width:var(--galleries-pointer-border-width);border-bottom-width:var(--galleries-pointer-border-width);border-right-width:0;border-top-width:0}.elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:after{border-left-width:0;border-bottom-width:0;border-right-width:var(--galleries-pointer-border-width);border-top-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:before{border-left-width:var(--galleries-pointer-border-width);border-bottom-width:0;border-right-width:0;border-top-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:after{border-left-width:0;border-bottom-width:var(--galleries-pointer-border-width);border-right-width:var(--galleries-pointer-border-width);border-top-width:0}.elementor-gallery__titles-container .e--pointer-double-line .elementor-item:after,.elementor-gallery__titles-container .e--pointer-double-line .elementor-item:before,.elementor-gallery__titles-container .e--pointer-overline .elementor-item:before,.elementor-gallery__titles-container .e--pointer-underline .elementor-item:after{height:var(--galleries-pointer-border-width)}.elementor-gallery-title{--space-between:10px;cursor:pointer;color:#6d7882;font-weight:500;position:relative;padding:7px 14px;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.elementor-gallery-title--active{color:#495157}.elementor-gallery-title:not(:last-child){margin-right:var(--space-between)}.elementor-gallery-item__title+.elementor-gallery-item__description{margin-top:var(--description-margin-top)}.e-gallery-item.elementor-gallery-item{-webkit-transition-property:all;-o-transition-property:all;transition-property:all}.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-bottom,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-left,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-right,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-top,.e-gallery-item:hover .elementor-gallery__item-overlay-bg,.e-gallery-item:hover .elementor-gallery__item-overlay-content,.e-gallery-item:hover .elementor-gallery__item-overlay-content__description,.e-gallery-item:hover .elementor-gallery__item-overlay-content__title{opacity:1}a.elementor-item.elementor-gallery-title{color:var(--galleries-title-color-normal)}a.elementor-item.elementor-gallery-title.elementor-item-active,a.elementor-item.elementor-gallery-title.highlighted,a.elementor-item.elementor-gallery-title:focus,a.elementor-item.elementor-gallery-title:hover{color:var(--galleries-title-color-hover)}a.elementor-item.elementor-gallery-title.elementor-item-active{color:var(--gallery-title-color-active)}assets/css/admin-rtl.min.css000064400000042556150755004320012036 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.wrap.elementor-admin-page-license form.elementor-license-box{max-width:600px;background:#fff;margin:20px 0;padding:20px}.wrap.elementor-admin-page-license form.elementor-license-box h3{border-bottom:1px solid #eee;padding:20px;margin:-20px -20px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.wrap.elementor-admin-page-license form.elementor-license-box h3 span{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding-right:5px}.wrap.elementor-admin-page-license form.elementor-license-box h3 small{float:left;font-size:13px;font-weight:400}.wrap.elementor-admin-page-license form.elementor-license-box label{display:block;font-size:1.3em;font-weight:600;margin:1em 0}.wrap.elementor-admin-page-license form.elementor-license-box .button{height:30px;margin-right:15px;margin-bottom:0}.wrap.elementor-admin-page-license form.elementor-license-box p.description{margin:10px 0}.wrap.elementor-admin-page-license form.elementor-license-box .e-row-stretch{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.wrap.elementor-admin-page-license form.elementor-license-box .e-row-divider-bottom{padding-bottom:15px;border-bottom:1px solid #eee}.wrap.elementor-admin-page-license .elementor-box-action{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;margin-top:30px}.wrap.elementor-admin-page-license .elementor-box-action .elementor-manually-link{color:#72777c;margin-left:15px}.wrap.elementor-admin-page-license .elementor-box-action .elementor-manually-link:hover{color:inherit}.fixed .column-elementor_library_type,.fixed .column-instances{width:10%}.fixed .elementor-shortcode-input{min-width:235px}@media (min-width:768px) and (max-width:1440px){.fixed .column-shortcode{width:25%}.fixed .elementor-shortcode-input{min-width:100%}}#available-widgets [class*=elementor-template] .widget-title:before{content:"\e801";font-family:eicon;font-size:17px}#elementor-widget-template-empty-templates{margin-top:15px;text-align:center}.elementor-widget-template-empty-templates-title{padding:25px 0 30px}.elementor-widget-template-empty-templates-icon{font-size:96px;color:#d5dadf}.elementor-widget-template-empty-templates-footer{color:#a4afb7;font-size:13px;font-style:italic;margin-bottom:15px}.elementor-widget-template-empty-templates-footer a{color:#a4afb7}.elementor-button-spinner.error:before{content:"\f335";color:red}span.font-variations-count{display:inline-block;vertical-align:top;margin:1px 0 0 5px;padding:0 5px;min-width:7px;height:17px;border-radius:11px;background-color:#d4dffb;color:#4278b2;font-size:9px;line-height:17px;text-align:center;z-index:26}.post-type-elementor_font div#elementor-font-custommetabox{background:none;border:0}.post-type-elementor_font div#elementor-font-custommetabox button.handlediv{display:none}.post-type-elementor_font div#elementor-font-custommetabox #poststuff .inside{margin:0;padding:0}.post-type-elementor_font div#elementor-font-custommetabox h2.hndle{padding:0}.post-type-elementor_font #minor-publishing-actions,.post-type-elementor_font #misc-publishing-actions,.post-type-elementor_font #tagsdiv-elementor_font_type,.post-type-elementor_font div#elementor-font-custommetabox .handle-actions{display:none}.elementor-metabox-content .repeater-block{background:#fff;color:#6d7882;padding:20px;margin-bottom:2px}.elementor-metabox-content .repeater-block span.elementor-repeater-tool-btn.close-repeater-row{display:none}.elementor-metabox-content .repeater-block.block-visible{padding-bottom:0;margin-bottom:0}.elementor-metabox-content .repeater-block.block-visible span.elementor-repeater-tool-btn.toggle-repeater-row{display:none}.elementor-metabox-content .repeater-block.block-visible span.elementor-repeater-tool-btn.close-repeater-row{display:inline-block}.elementor-metabox-content .repeater-block:not(.block-visible) .close-repeater-row{display:none}.elementor-metabox-content .repeater-block .repeater-title{cursor:pointer}.elementor-metabox-content .row-font-label{padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;text-transform:capitalize}.elementor-metabox-content .row-font-label li{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:100%;margin:0}.elementor-metabox-content .row-font-label li span.label{font-weight:500;padding-left:10px}.elementor-metabox-content .row-font-label li.row-font-style,.elementor-metabox-content .row-font-label li.row-font-weight{max-width:180px}.elementor-metabox-content .row-font-label li.row-font-actions{max-width:200px;text-align:left}.elementor-metabox-content .repeater-content{margin:0}.elementor-metabox-content .repeater-content .repeater-content-top{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:20px;line-height:28px}.elementor-metabox-content .repeater-content .repeater-content-top>div{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-metabox-content .repeater-content .repeater-content-top p{margin:0;display:inline-block}.elementor-metabox-content .repeater-content .repeater-content-top p label{font-weight:500;padding-left:10px}.elementor-metabox-content .repeater-content .repeater-content-top .elementor-field-select{max-width:180px}.elementor-metabox-content .repeater-content .repeater-content-top .elementor-field-toolbar{max-width:200px;text-align:left}.elementor-metabox-content .repeater-content .repeater-content-bottom{background-color:#f7f7f7;padding:20px 40px;margin:0 -20px}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fff;padding:10px 20px;margin-bottom:10px;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.05);box-shadow:0 3px 5px rgba(0,0,0,.05)}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field:last-child{margin-bottom:0}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field input,.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field p{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:100%;margin:0}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field p.elementor-field-label{font-weight:500;max-width:120px}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input{padding:5px 8px;margin:0 15px;border-radius:3px;font-size:12px;width:100%;background:none;-webkit-box-shadow:none;box-shadow:none;color:#495157;border:1px solid;outline:none}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input:not(:focus){border-color:#d5dadf}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input:focus{border-color:#a4afb7}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-btn,.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn{max-width:100px;font-size:11px}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn{background-color:#eceeef;color:#a4afb7}.elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn:hover{background-color:#b01b1b;color:#fff}.elementor-metabox-content .elementor-button{background-color:#a4afb7;color:#fff;line-height:1;text-transform:uppercase;height:auto;padding:10px 20px;outline:none;border:none;-webkit-transition-property:background,color,opacity,-webkit-box-shadow;transition-property:background,color,opacity,-webkit-box-shadow;-o-transition-property:background,color,box-shadow,opacity;transition-property:background,color,box-shadow,opacity;transition-property:background,color,box-shadow,opacity,-webkit-box-shadow;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s}.elementor-metabox-content .elementor-button:focus,.elementor-metabox-content .elementor-button:hover,.elementor-metabox-content .elementor-button:visited{color:#fff}.elementor-metabox-content .elementor-button:focus,.elementor-metabox-content .elementor-button:visited{background-color:#a4afb7}.elementor-metabox-content .elementor-button:hover{background-color:#6d7882;-webkit-box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);box-shadow:0 0 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2);border:none}.elementor-metabox-content .elementor-button:active{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1);box-shadow:0 5px 10px rgba(0,0,0,.19),0 3px 3px rgba(0,0,0,.1)}.elementor-metabox-content .elementor-button:not([disabled]){cursor:pointer}.elementor-metabox-content .elementor-button.elementor-size-xs{font-size:11px;padding:10px 20px;border-radius:2px}.elementor-metabox-content .elementor-button.elementor-size-sm{font-size:13px;padding:12px 24px;border-radius:3px}.elementor-metabox-content .elementor-button.elementor-size-md{font-size:14px;padding:15px 30px;border-radius:4px}.elementor-metabox-content .elementor-button.elementor-size-lg{font-size:15px;padding:20px 40px;border-radius:5px}.elementor-metabox-content .elementor-button.elementor-size-xl{font-size:18px;padding:25px 50px;border-radius:6px}.elementor-metabox-content .elementor-button .elementor-align-icon-right{float:right;margin-left:5px}.elementor-metabox-content .elementor-button .elementor-align-icon-left{float:left;margin-right:5px}.elementor-metabox-content input.button.add-repeater-row{margin-top:18px;border:none;-webkit-box-shadow:none;box-shadow:none}.elementor-metabox-content .elementor-repeater-tool-btn{color:#a4afb7;cursor:pointer;padding:0 20px;font-size:12px;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.elementor-metabox-content .elementor-repeater-tool-btn i{padding-left:5px}.elementor-metabox-content .elementor-repeater-tool-btn:hover{color:#6d7882}.elementor-metabox-content .elementor-repeater-tool-btn.remove-repeater-row:hover{color:#b01b1b}.elementor-metabox-content .inline-preview,.elementor-metabox-content .row-font-preview{font-size:16px;text-transform:capitalize}.column-font_preview{width:65%}.widefat td.column-font_preview{font-size:16px}.post-type-elementor_icons .elementor-metabox-content .elementor-button:not([disabled]){margin-top:10px}.post-type-elementor_icons div#postbox-container-1{display:none}.post-type-elementor_icons div#elementor-custom-icons-metabox{display:none;border:1px solid #eceeef;border-radius:1px;background-color:#fff}.post-type-elementor_icons div#elementor-custom-icons-metabox .inside{margin-top:10px;margin-bottom:20px}.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-metabox-content{background-color:#fff}.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-custom-icons-metabox{padding:4px 10px 10px}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-custom-icons-metabox{padding:0}}.post-type-elementor_icons div#elementor-custom-icons-metabox h4{color:#556068;font-size:22px;font-weight:500;letter-spacing:.7px;line-height:28px;margin:0 0 4px}.post-type-elementor_icons div#elementor-custom-icons-metabox h5{color:#a4afb7;font-size:16px;font-weight:500;letter-spacing:.5px;line-height:21px;margin:0}.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor--dropzone--upload__icon i{font-size:64px;color:#39b54a}.post-type-elementor_icons div#elementor-custom-icons-metabox .box__error,.post-type-elementor_icons div#elementor-custom-icons-metabox .box__file,.post-type-elementor_icons div#elementor-custom-icons-metabox .box__success,.post-type-elementor_icons div#elementor-custom-icons-metabox .box__uploading{display:none}.post-type-elementor_icons div#elementor-custom-icons-metabox .is-dragover{background-color:grey}.post-type-elementor_icons div#elementor-custom-icons-metabox .box__input{padding:180px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-field-dropzone{outline:2px dashed #d5dadf;outline-offset:-3px;background-color:#fff;display:none}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons{background-color:#f7f7f7;border:1px solid #eceeef;border-radius:1px}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-metabox-content{background-color:#f7f7f7}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-metabox-content .elementor-custom-icons-metabox{padding:4px 10px 0}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header{height:50px;color:#6d7882;background-color:#fff;-webkit-box-shadow:0 2px 6px 0 rgba(0,0,0,.06);box-shadow:0 2px 6px 0 rgba(0,0,0,.06);padding:0 35px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header{padding:0 6px}}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div{-webkit-padding-end:10px;padding-inline-end:10px;-webkit-padding-start:10px;padding-inline-start:10px}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div{line-height:1}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div.remove{font-size:10px}}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div:nth-of-type(2){border:1px solid #a4afb7;border-top:0;border-bottom:0}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta{color:#556068;font-size:14px;line-height:1}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta{font-size:10px}}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-value{font-weight:700}@media (max-width:1025px){.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-value{font-size:10px}}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove{margin-right:auto;color:#556068;opacity:.6;cursor:pointer;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove i{color:#6d7882}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove:hover{opacity:1}.post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-footer{color:#c2cbd2;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;border-top:1px solid #eceeef;font-size:11px;font-weight:500;line-height:1;text-align:left;padding-top:10px;padding-bottom:10px;-webkit-padding-end:35px;padding-inline-end:35px}.post-type-elementor_icons div#elementor-custom-icons-metabox ul{display:grid;grid-template-columns:repeat(auto-fill,minmax(105px,1fr));grid-gap:20px;padding:15px 35px 0;overflow-y:auto;max-height:575px}.post-type-elementor_icons div#elementor-custom-icons-metabox ul li{position:relative;height:0;padding-bottom:100%;background-color:#fff;-webkit-box-shadow:0 1px 12px rgba(0,0,0,.05);box-shadow:0 1px 12px rgba(0,0,0,.05);border-radius:3px;overflow:hidden}.post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);padding:1px}.post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon-name{color:#c2cbd2;font-size:11px;padding:18px 20px 0;white-space:nowrap;max-width:100%;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}@media (max-width:479px){.post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon-name{display:none}}.post-type-elementor_icons div#elementor-custom-icons-metabox ul li i{font-size:32px}.post-type-elementor_icons #minor-publishing-actions,.post-type-elementor_icons #misc-publishing-actions,.post-type-elementor_icons #tagsdiv-elementor_icon_type{display:none}.column-icons_prefix{width:65%}assets/css/widget-pricing-rtl.min.css000064400000013672150755004320013657 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-widget-price-list .elementor-price-list{list-style:none;padding:0;margin:0}.elementor-widget-price-list .elementor-price-list li{margin:0}.elementor-price-list li:not(:last-child){margin-bottom:20px}.elementor-price-list .elementor-price-list-image{max-width:50%;-ms-flex-negative:0;flex-shrink:0;padding-left:25px}.elementor-price-list .elementor-price-list-image img{width:100%}.elementor-price-list .elementor-price-list-header,.elementor-price-list .elementor-price-list-item,.elementor-price-list .elementor-price-list-text{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-price-list .elementor-price-list-item{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-price-list .elementor-price-list-item .elementor-price-list-text{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-price-list .elementor-price-list-item .elementor-price-list-header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-preferred-size:100%;flex-basis:100%;font-size:19px;font-weight:600;margin-bottom:10px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-price-list .elementor-price-list-item .elementor-price-list-title{max-width:80%}.elementor-price-list .elementor-price-list-item .elementor-price-list-price{font-weight:600}.elementor-price-list .elementor-price-list-item p.elementor-price-list-description{-ms-flex-preferred-size:100%;flex-basis:100%;font-size:14px;margin:0}.elementor-price-list .elementor-price-list-item .elementor-price-list-separator{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-left:10px;margin-right:10px;border-bottom-style:dotted;border-bottom-width:2px;height:0}.elementor-price-table{text-align:center}.elementor-price-table .elementor-price-table__header{background:var(--e-price-table-header-background-color,#555);padding:20px 0}.elementor-price-table .elementor-price-table__heading{margin:0;padding:0;line-height:1.2;font-size:24px;font-weight:600;color:#fff}.elementor-price-table .elementor-price-table__subheading{font-size:13px;font-weight:400;color:#fff}.elementor-price-table .elementor-price-table__original-price{margin-left:15px;text-decoration:line-through;font-size:.5em;line-height:1;font-weight:400;-ms-flex-item-align:center;align-self:center}.elementor-price-table .elementor-price-table__original-price .elementor-price-table__currency{font-size:1em;margin:0}.elementor-price-table .elementor-price-table__price{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;color:#555;font-weight:800;font-size:65px;padding:40px 0}.elementor-price-table .elementor-price-table__price .elementor-typo-excluded{line-height:normal;letter-spacing:normal;text-transform:none;font-weight:400;font-size:medium;font-style:normal}.elementor-price-table .elementor-price-table__after-price{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;text-align:right;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-price-table .elementor-price-table__integer-part{line-height:.8}.elementor-price-table .elementor-price-table__currency,.elementor-price-table .elementor-price-table__fractional-part{line-height:1;font-size:.3em}.elementor-price-table .elementor-price-table__currency{margin-left:3px}.elementor-price-table .elementor-price-table__period{width:100%;font-size:13px;font-weight:400}.elementor-price-table .elementor-price-table__features-list{list-style-type:none;margin:0;padding:0;line-height:1;color:var(--e-price-table-features-list-color)}.elementor-price-table .elementor-price-table__features-list li{font-size:14px;line-height:1;margin:0;padding:0}.elementor-price-table .elementor-price-table__features-list li .elementor-price-table__feature-inner{margin-left:15px;margin-right:15px}.elementor-price-table .elementor-price-table__features-list li:not(:first-child):before{content:"";display:block;border:0 solid hsla(0,0%,47.8%,.3);margin:10px 12.5%}.elementor-price-table .elementor-price-table__features-list i{margin-left:10px;font-size:1.3em}.elementor-price-table .elementor-price-table__features-list svg{margin-left:10px;fill:var(--e-price-table-features-list-color);height:1.3em;width:1.3em}.elementor-price-table .elementor-price-table__features-list svg~*{vertical-align:text-top}.elementor-price-table .elementor-price-table__footer{padding:30px 0}.elementor-price-table .elementor-price-table__additional_info{margin:0;font-size:13px;line-height:1.4}.elementor-price-table__ribbon{position:absolute;top:0;left:0;right:auto;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);width:150px;overflow:hidden;height:150px}.elementor-price-table__ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000}.elementor-price-table__ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-price-table__ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}.elementor-widget-price-table .elementor-widget-container{overflow:hidden;background-color:#f7f7f7}assets/css/widget-global-widget.min.css000064400000001641150755004320014137 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover{outline:1px solid #fec449}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings{background-image:-webkit-gradient(linear,left bottom,left top,from(#feb416),to(#fec449));background-image:-webkit-linear-gradient(bottom,#feb416,#fec449);background-image:-o-linear-gradient(bottom,#feb416,#fec449);background-image:linear-gradient(0deg,#feb416,#fec449)}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover{background-color:#feb416}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save{display:none}assets/css/editor-rtl.min.css000064400000036666150755004320012241 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
#elementor-panel-get-pro-elements{display:none}.elementor-panel .elementor-control .e-control-error{color:#b01b1b}.elementor-panel .elementor-control.forms-field-shortcode .elementor-control-content{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row;flex-flow:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-panel .elementor-control.forms-field-shortcode .elementor-control-title{width:45%}.elementor-panel .elementor-control.forms-field-shortcode .elementor-control-raw-html{width:55%}#elementor-widget-template-empty-templates{margin-top:15px;text-align:center}.elementor-widget-template-empty-templates-title{padding:25px 0 30px}.elementor-widget-template-empty-templates-icon{font-size:96px;color:#d5dadf}.elementor-widget-template-empty-templates-footer{color:#a4afb7;font-size:13px;font-style:italic;margin-bottom:15px}.elementor-widget-template-empty-templates-footer a{color:#a4afb7}#elementor-panel-global-widget{height:100%}#elementor-panel-global-widget>*{background-color:#fff}#elementor-global-widget-locked-header{-webkit-box-shadow:0 0 8px rgba(0,0,0,.1);box-shadow:0 0 8px rgba(0,0,0,.1)}#elementor-global-widget-locked-header.elementor-nerd-box{padding:40px 25px}#elementor-global-widget-locked-header.elementor-nerd-box .elementor-nerd-box-icon{margin-top:20px}#elementor-global-widget-locked-tools{margin-top:15px;padding:0 20px}.elementor-global-widget-locked-tool{display:-webkit-box;display:-ms-flexbox;display:flex;padding:20px 0;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-global-widget-locked-tool .elementor-button{text-transform:uppercase;color:#fff;padding:8px 0;width:70px;font-weight:600}.elementor-global-widget-locked-tool-description{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}#elementor-global-widget-locked-unlink{border-top:1px solid #e6e9ec}#elementor-global-templates .elementor-element{position:relative}#elementor-global-templates .elementor-element:before{position:absolute;font-family:eicons;content:"\e91f";top:5px;left:5px;color:#fcb92c;font-size:10px}#elementor-global-widget-loading{position:absolute;top:0;left:0;height:100%;width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}#elementor-global-widget-loading:not(.elementor-hidden){display:-webkit-box;display:-ms-flexbox;display:flex}#elementor-global-widget-loading i{color:#d5dadf;font-size:50px}.elementor-panel .elementor-control-type-fields_map .elementor-repeater-fields{margin:10px 0}.elementor-panel .elementor-control-type-fields_map .elementor-repeater-fields .elementor-control{padding:0}.elementor-panel .elementor-control-type-fields_map .elementor-repeater-fields:last-child{margin-bottom:0}.elementor-repeater-row--form-step .elementor-repeater-row-tools:hover{background-color:#c2cbd2}.elementor-repeater-row--form-step .elementor-repeater-row-tools div:not(.elementor-repeater-row-handle-sortable){background-color:#f1f3f5}.elementor-repeater-row--form-step .elementor-repeater-row-tools div:not(.elementor-repeater-row-handle-sortable):hover{background-color:#e6e9ec}.elementor-facebook-widget.fb_iframe_widget,.elementor-facebook-widget.fb_iframe_widget span{width:100%!important}.elementor-facebook-widget.fb_iframe_widget iframe{position:relative;width:100%!important}.elementor-facebook-widget.fb-like{height:1px}.elementor-widget-facebook-comments iframe{width:100%!important}#elementor-publish{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex}#elementor-publish__modal .dialog-message{padding:0}#elementor-publish__modal .dialog-buttons-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex}#elementor-publish__modal .dialog-publish{-webkit-transition-property:opacity,-webkit-box-shadow;transition-property:opacity,-webkit-box-shadow;-o-transition-property:box-shadow,opacity;transition-property:box-shadow,opacity;transition-property:box-shadow,opacity,-webkit-box-shadow}#elementor-publish__modal .dialog-publish:not(.elementor-button-success){text-decoration:underline;color:#a4afb7;font-weight:400;width:110px;background-color:transparent}#elementor-publish__modal .dialog-publish:not(.elementor-button-success):hover{color:#6d7882}#elementor-publish__tabs{padding-top:50px}@media (max-width:1439px){#elementor-publish__tabs{width:28%}}#elementor-publish__screen{overflow:auto;padding:50px}.elementor-publish__tab{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;height:110px;padding:20px 15px;cursor:pointer}.elementor-publish__tab.elementor-active{background-color:#fff;-webkit-box-shadow:0 6px 20px rgba(0,0,0,.07);box-shadow:0 6px 20px rgba(0,0,0,.07)}.elementor-publish__tab.elementor-active:after{content:"";position:absolute;top:0;right:0;height:100%;width:5px;background-color:#71d7f7}.elementor-publish__tab__image{width:50px;-ms-flex-negative:0;flex-shrink:0}.elementor-publish__tab__image img{width:100%}.elementor-publish__tab__content{text-align:right;padding-right:15px}.elementor-publish__tab__title{font-size:18px;color:#556068;font-weight:700}#elementor-theme-builder-conditions{margin:40px 0 60px}#elementor-theme-builder-conditions-view{overflow:hidden}#elementor-theme-builder-conditions .elementor-control{background-color:transparent;padding:0}#elementor-theme-builder-conditions .elementor-control:before{content:none}#elementor-theme-builder-conditions .elementor-control select{border-width:0;height:40px;padding:0 14px}#elementor-theme-builder-conditions .elementor-control-type-query{width:100px}#elementor-theme-builder-conditions .elementor-control-type-select .elementor-control-input-wrapper:after{left:10px;color:#495157}#elementor-theme-builder-conditions .elementor-control-type{width:120px}#elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type=include]{background-color:#a4afb7}#elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type=include] .elementor-control-input-wrapper:before{content:"\e8cc"}#elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type=exclude]{background-color:#c2cbd2}#elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type=exclude] .elementor-control-input-wrapper:before{content:"\e8cd"}#elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type=exclude] select,#elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type=include] select{color:#fff;text-transform:uppercase;padding-right:33px}#elementor-theme-builder-conditions .elementor-control-type .elementor-control-input-wrapper:before{font-family:eicons;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:13px;font-size:15px;color:#fff}#elementor-theme-builder-conditions .elementor-control-type .elementor-control-input-wrapper:after{color:#fff}#elementor-theme-builder-conditions .elementor-control-type-select{background-color:#fff}#elementor-theme-builder-conditions .elementor-control-type option{color:#495157}#elementor-theme-builder-conditions .elementor-theme-builder-conditions-repeater-row-controls{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-left:10px;width:70%;-webkit-box-shadow:0 2px 12px rgba(0,0,0,.08);box-shadow:0 2px 12px rgba(0,0,0,.08);overflow:hidden;border-radius:3px}#elementor-theme-builder-conditions .elementor-theme-builder-conditions-repeater-row-controls .elementor-control:not(:first-child){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-right:1px}#elementor-theme-builder-conditions .elementor-theme-builder-conditions-repeater-row-controls .elementor-control:not(:first-child) select{border-radius:0}#elementor-theme-builder-conditions .elementor-repeater-fields-wrapper{max-width:700px;width:100%;margin:auto}#elementor-theme-builder-conditions .elementor-repeater-fields{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-top:10px}#elementor-theme-builder-conditions .elementor-control-field{display:block}#elementor-theme-builder-conditions .elementor-control-spinner,#elementor-theme-builder-conditions .elementor-control-title{display:none}#elementor-theme-builder-conditions .elementor-control-input-wrapper{width:100%;max-width:none}#elementor-theme-builder-conditions .select2-selection{height:40px;border:none;border-radius:0}#elementor-theme-builder-conditions .select2-selection__rendered{line-height:40px;padding-right:15px;text-align:right}#elementor-theme-builder-conditions .select2-selection__arrow{height:30px}#elementor-theme-builder-conditions .select2-selection__arrow b{border-top-color:#495157;border-width:4px 4px 0;margin-top:2px;margin-right:-7px}#elementor-theme-builder-conditions .elementor-repeater-tool-remove{font-size:18px;cursor:pointer;color:#a4afb7}#elementor-theme-builder-conditions .elementor-button-wrapper{margin-top:50px}#elementor-theme-builder-conditions .elementor-repeater-add{font-size:14px;padding:12px 26px}.elementor-error .elementor-theme-builder-conditions-repeater-row-controls{border:1px solid rgba(176,27,27,.5)}.elementor-conditions-conflict-message{margin-top:10px;font-size:11px;color:#b01b1b;text-align:right;padding-right:90px}.elementor-conditions-conflict-message a{color:#b01b1b}.elementor-panel-footer-theme-builder-buttons-wrapper .elementor-panel-footer-sub-menu{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-panel-footer-theme-builder-buttons-wrapper .elementor-panel-footer-sub-menu-item{display:inline-block}.elementor-panel-footer-theme-builder-buttons-wrapper .elementor-panel-footer-sub-menu-item i{margin-left:5px}.elementor-panel-footer-theme-builder-buttons-wrapper .elementor-panel-footer-sub-menu-item>*{display:inline-block;line-height:40px}.elementor-conditions-select2-dropdown{border:none;border-radius:0}.elementor-conditions-select2-dropdown .select2-results__message{display:none}.elementor-conditions-select2-dropdown .select2-search--dropdown .select2-search__field{border-width:0 0 1px;border-radius:0}#elementor-toast.e-theme-builder-save-toaster .dialog-buttons-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}#elementor-toast.e-theme-builder-save-toaster .dialog-buttons-message{text-align:center}#elementor-toast.e-theme-builder-save-toaster .dialog-button{border-radius:3px;text-align:center;font-size:12px;color:#fff;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:27px;background-color:#6d7882;margin:0}#elementor-toast.e-theme-builder-save-toaster .dialog-button:hover{background-color:#39b54a}#elementor-toast.e-theme-builder-save-toaster .dialog-button i{margin-left:5px}#elementor-toast.e-theme-builder-save-toaster .dialog-open_site_editor{margin-bottom:10px}.elementor-control.elementor-control-sitemap_items.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title span{text-transform:capitalize}.elementor-editor-popup .elementor-tab-control-settings a:before{content:"\e922"}#elementor-publish .elementor-popup__display-settings .elementor-control-type-slider .elementor-control-input-wrapper{width:150px}#elementor-publish .elementor-popup__display-settings .elementor-control-input-wrapper{width:80px;max-width:100%}.elementor-popup__display-settings{text-align:right}.elementor-popup__display-settings_controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:60px;background-color:#fff;margin-bottom:10px;padding-left:20px;-webkit-box-shadow:0 6px 20px rgba(0,0,0,.07);box-shadow:0 6px 20px rgba(0,0,0,.07);border-radius:3px}.elementor-popup__display-settings_controls_group:not(.elementor-active) .elementor-control:nth-child(2) h3{color:#a4afb7}.elementor-popup__display-settings_controls_group__icon{width:60px;height:60px;border-left:1px solid #e6e9ec;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-popup__display-settings_controls_group__icon img{width:35px}.elementor-popup__display-settings_controls_group .elementor-control{padding:0;margin:0}.elementor-popup__display-settings_controls_group .elementor-control:nth-child(2){width:230px}.elementor-popup__display-settings_controls_group .elementor-control:nth-child(2) h3{font-size:16px;font-weight:400}.elementor-popup__display-settings_controls_group .elementor-control:not(:nth-child(2)) .elementor-control-title:not(:empty){width:75px}.elementor-popup__display-settings_controls_group .elementor-control:not(:last-child){margin-right:25px}.elementor-popup__display-settings_controls_group .elementor-control-type-slider .elementor-control-input-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-popup__display-settings_controls_group .elementor-control-type-slider .elementor-slider-input{width:45%}.elementor-popup__display-settings_controls_group .elementor-control-type-switcher .elementor-control-field{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-popup__display-settings .elementor-control-type-section{display:none}.elementor-popup__display-settings__group-toggle{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}#elementor-popup-timing__controls .select2-selection{min-height:27px}#elementor-popup-timing__controls .select2-selection__rendered{line-height:1}#elementor-popup-timing__controls .select2-selection__choice{font-size:10px}#elementor-popup__timing-controls-group--url .elementor-control-url_url .elementor-control-input-wrapper{width:200px}#elementor-popup__timing-controls-group--sources .elementor-control-sources_sources .elementor-control-input-wrapper{width:300px}#elementor-popup__timing-controls-group--devices .elementor-control-devices_devices .elementor-control-input-wrapper{width:200px}#elementor-popup__timing-controls-group--logged_in .elementor-control-logged_in_roles .elementor-control-input-wrapper{width:195px}#elementor-popup__timing-controls-group--browsers .elementor-control-browsers_browsers .elementor-control-input-wrapper{width:100px}#elementor-popup__timing-controls-group--browsers .elementor-control-browsers_browsers_options .elementor-control-input-wrapper{width:200px}#elementor-popup-settings-introduction{position:absolute;z-index:1;background-color:#fff;color:#556068;-webkit-box-shadow:-4px -3px 20px 1px rgba(0,0,0,.07);box-shadow:-4px -3px 20px 1px rgba(0,0,0,.07);height:110px;width:260px;padding:20px 30px;border-radius:3px}#elementor-popup-settings-introduction:before{content:"";position:absolute;border:solid transparent;border-left:solid #fff;border-width:5px 7px;right:-14px;top:83%}#elementor-popup-settings-introduction .dialog-close-button{top:10px;left:10px;font-size:13px}#elementor-popup-settings-introduction .dialog-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;font-weight:500}#elementor-popup-settings-introduction .dialog-header i{color:#39b54a;font-size:23px;margin-left:10px}#elementor-popup-settings-introduction .dialog-message{margin-top:10px}assets/css/admin-rtl.css000064400000052741150755004320011251 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.wrap.elementor-admin-page-license form.elementor-license-box {
  max-width: 600px;
  background: white;
  margin: 20px 0;
  padding: 20px 20px; }
  .wrap.elementor-admin-page-license form.elementor-license-box h3 {
    border-bottom: 1px solid #eee;
    padding: 20px;
    margin: -20px -20px 20px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .wrap.elementor-admin-page-license form.elementor-license-box h3 span {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1;
      padding-right: 5px; }
    .wrap.elementor-admin-page-license form.elementor-license-box h3 small {
      float: left;
      font-size: 13px;
      font-weight: normal; }
  .wrap.elementor-admin-page-license form.elementor-license-box label {
    display: block;
    font-size: 1.3em;
    font-weight: 600;
    margin: 1em 0; }
  .wrap.elementor-admin-page-license form.elementor-license-box .button {
    height: 30px;
    margin-right: 15px;
    margin-bottom: 0; }
  .wrap.elementor-admin-page-license form.elementor-license-box p.description {
    margin: 10px 0; }
  .wrap.elementor-admin-page-license form.elementor-license-box .e-row-stretch {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between; }
  .wrap.elementor-admin-page-license form.elementor-license-box .e-row-divider-bottom {
    padding-bottom: 15px;
    border-bottom: 1px solid #eeeeee; }

.wrap.elementor-admin-page-license .elementor-box-action {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end;
  -webkit-box-align: end;
      -ms-flex-align: end;
          align-items: flex-end;
  margin-top: 30px; }
  .wrap.elementor-admin-page-license .elementor-box-action .elementor-manually-link {
    color: #72777c;
    margin-left: 15px; }
    .wrap.elementor-admin-page-license .elementor-box-action .elementor-manually-link:hover {
      color: inherit; }

.fixed .column-elementor_library_type,
.fixed .column-instances {
  width: 10%; }

.fixed .elementor-shortcode-input {
  min-width: 235px; }

@media (min-width: 768px) and (max-width: 1440px) {
  .fixed .column-shortcode {
    width: 25%; }
  .fixed .elementor-shortcode-input {
    min-width: 100%; } }

#available-widgets [class*="elementor-template"] .widget-title:before {
  content: "\e801";
  font-family: eicon;
  font-size: 17px; }

#elementor-widget-template-empty-templates {
  margin-top: 15px;
  text-align: center; }

.elementor-widget-template-empty-templates-title {
  padding: 25px 0 30px; }

.elementor-widget-template-empty-templates-icon {
  font-size: 96px;
  color: #d5dadf; }

.elementor-widget-template-empty-templates-footer {
  color: #a4afb7;
  font-size: 13px;
  font-style: italic;
  margin-bottom: 15px; }
  .elementor-widget-template-empty-templates-footer a {
    color: #a4afb7; }

.elementor-button-spinner.error:before {
  content: "\f335";
  color: #ff0000; }

span.font-variations-count {
  display: inline-block;
  vertical-align: top;
  margin: 1px 0 0 5px;
  padding: 0 5px;
  min-width: 7px;
  height: 17px;
  border-radius: 11px;
  background-color: #d4dffb;
  color: #4278b2;
  font-size: 9px;
  line-height: 17px;
  text-align: center;
  z-index: 26; }

.post-type-elementor_font div#elementor-font-custommetabox {
  background: none;
  border: 0; }
  .post-type-elementor_font div#elementor-font-custommetabox button.handlediv {
    display: none; }
  .post-type-elementor_font div#elementor-font-custommetabox #poststuff .inside {
    margin: 0;
    padding: 0; }
  .post-type-elementor_font div#elementor-font-custommetabox h2.hndle {
    padding: 0; }
  .post-type-elementor_font div#elementor-font-custommetabox .handle-actions {
    display: none; }

.post-type-elementor_font #tagsdiv-elementor_font_type,
.post-type-elementor_font #minor-publishing-actions,
.post-type-elementor_font #misc-publishing-actions {
  display: none; }

.elementor-metabox-content .repeater-block {
  background: #ffffff;
  color: #6d7882;
  padding: 20px;
  margin-bottom: 2px; }
  .elementor-metabox-content .repeater-block span.elementor-repeater-tool-btn.close-repeater-row {
    display: none; }
  .elementor-metabox-content .repeater-block.block-visible {
    padding-bottom: 0;
    margin-bottom: 0; }
    .elementor-metabox-content .repeater-block.block-visible span.elementor-repeater-tool-btn.toggle-repeater-row {
      display: none; }
    .elementor-metabox-content .repeater-block.block-visible span.elementor-repeater-tool-btn.close-repeater-row {
      display: inline-block; }
  .elementor-metabox-content .repeater-block:not(.block-visible) .close-repeater-row {
    display: none; }
  .elementor-metabox-content .repeater-block .repeater-title {
    cursor: pointer; }

.elementor-metabox-content .row-font-label {
  padding: 0;
  margin: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  text-transform: capitalize; }
  .elementor-metabox-content .row-font-label li {
    -webkit-box-sizing: border-box;
            box-sizing: border-box;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    width: 100%;
    margin: 0; }
    .elementor-metabox-content .row-font-label li span.label {
      font-weight: 500;
      padding-left: 10px; }
    .elementor-metabox-content .row-font-label li.row-font-weight, .elementor-metabox-content .row-font-label li.row-font-style {
      max-width: 180px; }
    .elementor-metabox-content .row-font-label li.row-font-actions {
      max-width: 200px;
      text-align: left; }

.elementor-metabox-content .repeater-content {
  margin: 0; }
  .elementor-metabox-content .repeater-content .repeater-content-top {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    margin-bottom: 20px;
    line-height: 28px; }
    .elementor-metabox-content .repeater-content .repeater-content-top > div {
      -webkit-box-sizing: border-box;
              box-sizing: border-box;
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
    .elementor-metabox-content .repeater-content .repeater-content-top p {
      margin: 0;
      display: inline-block; }
      .elementor-metabox-content .repeater-content .repeater-content-top p label {
        font-weight: 500;
        padding-left: 10px; }
    .elementor-metabox-content .repeater-content .repeater-content-top .elementor-field-select {
      max-width: 180px; }
    .elementor-metabox-content .repeater-content .repeater-content-top .elementor-field-toolbar {
      max-width: 200px;
      text-align: left; }
  .elementor-metabox-content .repeater-content .repeater-content-bottom {
    background-color: #f7f7f7;
    padding: 20px 40px;
    margin: 0 -20px; }
    .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center;
      background-color: #ffffff;
      padding: 10px 20px;
      margin-bottom: 10px;
      -webkit-box-shadow: 0 3px 5px rgba(0, 0, 0, 0.05);
              box-shadow: 0 3px 5px rgba(0, 0, 0, 0.05); }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field:last-child {
        margin-bottom: 0; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field p,
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field input {
        -webkit-box-sizing: border-box;
                box-sizing: border-box;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1;
        width: 100%;
        margin: 0; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field p.elementor-field-label {
        font-weight: 500;
        max-width: 120px; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input {
        padding: 5px 8px;
        margin: 0 15px;
        border-radius: 3px;
        font-size: 12px;
        width: 100%;
        background: none;
        -webkit-box-shadow: none;
                box-shadow: none;
        color: #495157;
        border: 1px solid;
        outline: none; }
        .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input:not(:focus) {
          border-color: #d5dadf; }
        .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-field-input:focus {
          border-color: #a4afb7; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-btn,
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn {
        max-width: 100px;
        font-size: 11px; }
      .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn {
        background-color: #eceeef;
        color: #a4afb7; }
        .elementor-metabox-content .repeater-content .repeater-content-bottom .elementor-field .elementor-upload-clear-btn:hover {
          background-color: #b01b1b;
          color: white; }

.elementor-metabox-content .elementor-button {
  background-color: #a4afb7;
  color: #fff;
  line-height: 1;
  text-transform: uppercase;
  height: auto;
  padding: 10px 20px;
  outline: none;
  border: none;
  -webkit-transition-property: background, color, opacity, -webkit-box-shadow;
  transition-property: background, color, opacity, -webkit-box-shadow;
  -o-transition-property: background, color, box-shadow, opacity;
  transition-property: background, color, box-shadow, opacity;
  transition-property: background, color, box-shadow, opacity, -webkit-box-shadow;
  -webkit-transition-duration: .3s;
       -o-transition-duration: .3s;
          transition-duration: .3s; }
  .elementor-metabox-content .elementor-button:hover, .elementor-metabox-content .elementor-button:focus, .elementor-metabox-content .elementor-button:visited {
    color: #fff; }
  .elementor-metabox-content .elementor-button:focus, .elementor-metabox-content .elementor-button:visited {
    background-color: #a4afb7; }
  .elementor-metabox-content .elementor-button:hover {
    background-color: #6d7882;
    -webkit-box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
            box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
    border: none; }
  .elementor-metabox-content .elementor-button:active {
    -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.19), 0 3px 3px rgba(0, 0, 0, 0.1);
            box-shadow: 0 5px 10px rgba(0, 0, 0, 0.19), 0 3px 3px rgba(0, 0, 0, 0.1); }
  .elementor-metabox-content .elementor-button:not([disabled]) {
    cursor: pointer; }
  .elementor-metabox-content .elementor-button.elementor-size-xs {
    font-size: 11px;
    padding: 10px 20px;
    border-radius: 2px; }
  .elementor-metabox-content .elementor-button.elementor-size-sm {
    font-size: 13px;
    padding: 12px 24px;
    border-radius: 3px; }
  .elementor-metabox-content .elementor-button.elementor-size-md {
    font-size: 14px;
    padding: 15px 30px;
    border-radius: 4px; }
  .elementor-metabox-content .elementor-button.elementor-size-lg {
    font-size: 15px;
    padding: 20px 40px;
    border-radius: 5px; }
  .elementor-metabox-content .elementor-button.elementor-size-xl {
    font-size: 18px;
    padding: 25px 50px;
    border-radius: 6px; }
  .elementor-metabox-content .elementor-button .elementor-align-icon-right {
    float: right;
    margin-left: 5px; }
  .elementor-metabox-content .elementor-button .elementor-align-icon-left {
    float: left;
    margin-right: 5px; }

.elementor-metabox-content input.button.add-repeater-row {
  margin-top: 18px;
  border: none;
  -webkit-box-shadow: none;
          box-shadow: none; }

.elementor-metabox-content .elementor-repeater-tool-btn {
  color: #a4afb7;
  cursor: pointer;
  padding: 0 20px;
  font-size: 12px;
  -webkit-transition: all 0.3s;
  -o-transition: all 0.3s;
  transition: all 0.3s; }
  .elementor-metabox-content .elementor-repeater-tool-btn i {
    padding-left: 5px; }
  .elementor-metabox-content .elementor-repeater-tool-btn:hover {
    color: #6d7882; }
  .elementor-metabox-content .elementor-repeater-tool-btn.remove-repeater-row:hover {
    color: #b01b1b; }

.elementor-metabox-content .row-font-preview,
.elementor-metabox-content .inline-preview {
  font-size: 16px;
  text-transform: capitalize; }

.column-font_preview {
  width: 65%; }

.widefat td.column-font_preview {
  font-size: 16px; }

.post-type-elementor_icons .elementor-metabox-content .elementor-button:not([disabled]) {
  margin-top: 10px; }

.post-type-elementor_icons div#postbox-container-1 {
  display: none; }

.post-type-elementor_icons div#elementor-custom-icons-metabox {
  display: none;
  border: 1px solid #eceeef;
  border-radius: 1px;
  background-color: #fff; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .inside {
    margin-top: 10px;
    margin-bottom: 20px; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-metabox-content {
    background-color: #fff; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-custom-icons-metabox {
    padding: 4px 10px 10px 10px; }
    @media (max-width: 1025px) {
      .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-custom-icons-metabox {
        padding: 0; } }
  .post-type-elementor_icons div#elementor-custom-icons-metabox h4 {
    color: #556068;
    font-size: 22px;
    font-weight: 500;
    letter-spacing: 0.7px;
    line-height: 28px;
    margin: 0 0 4px 0; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox h5 {
    color: #a4afb7;
    font-size: 16px;
    font-weight: 500;
    letter-spacing: 0.5px;
    line-height: 21px;
    margin: 0; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor--dropzone--upload__icon i {
    font-size: 64px;
    color: #39b54a; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__uploading,
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__success,
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__error,
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__file {
    display: none; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .is-dragover {
    background-color: grey; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .box__input {
    padding: 180px 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox .elementor-field-dropzone {
    outline: 2px dashed #d5dadf;
    outline-offset: -3px;
    background-color: #fff;
    display: none; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons {
    background-color: #f7f7f7;
    border: 1px solid #eceeef;
    border-radius: 1px; }
    .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-metabox-content {
      background-color: #f7f7f7; }
      .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-metabox-content .elementor-custom-icons-metabox {
        padding: 4px 10px 0 10px; }
    .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header {
      height: 50px;
      color: #6d7882;
      background-color: #fff;
      -webkit-box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.06);
              box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.06);
      padding: 0 35px;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center;
      -webkit-box-pack: start;
          -ms-flex-pack: start;
              justify-content: flex-start; }
      @media (max-width: 1025px) {
        .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header {
          padding: 0 6px; } }
      .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div {
        -webkit-padding-end: 10px;
                padding-inline-end: 10px;
        -webkit-padding-start: 10px;
                padding-inline-start: 10px; }
        @media (max-width: 1025px) {
          .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div {
            line-height: 1; }
            .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div.remove {
              font-size: 10px; } }
        .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header div:nth-of-type(2) {
          border: 1px solid #a4afb7;
          border-top: 0;
          border-bottom: 0; }
      .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta {
        color: #556068;
        font-size: 14px;
        line-height: 1; }
        @media (max-width: 1025px) {
          .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta {
            font-size: 10px; } }
        .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-value {
          font-weight: bold; }
          @media (max-width: 1025px) {
            .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-value {
              font-size: 10px; } }
        .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove {
          margin-right: auto;
          color: #556068;
          opacity: .6;
          cursor: pointer;
          -webkit-transition: all 0.3s;
          -o-transition: all 0.3s;
          transition: all 0.3s; }
          .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove i {
            color: #6d7882; }
          .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-header-meta-remove:hover {
            opacity: 1; }
    .post-type-elementor_icons div#elementor-custom-icons-metabox.elementor--has-icons .elementor-icon-set-footer {
      color: #c2cbd2;
      font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
      border-top: 1px solid #eceeef;
      font-size: 11px;
      font-weight: 500;
      line-height: 1;
      text-align: left;
      padding-top: 10px;
      padding-bottom: 10px;
      -webkit-padding-end: 35px;
              padding-inline-end: 35px; }
  .post-type-elementor_icons div#elementor-custom-icons-metabox ul {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(105px, 1fr));
    grid-gap: 20px;
    padding: 15px 35px 0 35px;
    overflow-y: auto;
    max-height: 575px; }
    .post-type-elementor_icons div#elementor-custom-icons-metabox ul li {
      position: relative;
      height: 0;
      padding-bottom: 100%;
      background-color: #fff;
      -webkit-box-shadow: 0 1px 12px rgba(0, 0, 0, 0.05);
              box-shadow: 0 1px 12px rgba(0, 0, 0, 0.05);
      border-radius: 3px;
      overflow: hidden; }
      .post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -webkit-box-align: center;
            -ms-flex-align: center;
                align-items: center;
        width: 100%;
        position: absolute;
        top: 50%;
        left: 50%;
        -webkit-transform: translate(-50%, -50%);
            -ms-transform: translate(-50%, -50%);
                transform: translate(-50%, -50%);
        padding: 1px; }
      .post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon-name {
        color: #c2cbd2;
        font-size: 11px;
        padding: 18px 20px 0;
        white-space: nowrap;
        max-width: 100%;
        overflow: hidden;
        -o-text-overflow: ellipsis;
           text-overflow: ellipsis; }
        @media (max-width: 479px) {
          .post-type-elementor_icons div#elementor-custom-icons-metabox ul li div.icon-name {
            display: none; } }
      .post-type-elementor_icons div#elementor-custom-icons-metabox ul li i {
        font-size: 32px; }

.post-type-elementor_icons #tagsdiv-elementor_icon_type,
.post-type-elementor_icons #minor-publishing-actions,
.post-type-elementor_icons #misc-publishing-actions {
  display: none; }

.column-icons_prefix {
  width: 65%; }
/*# sourceMappingURL=admin-rtl.css.map */assets/css/widget-theme-builder-rtl.min.css000064400000000447150755004320014746 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-theme-builder-content-area{height:400px}.elementor-location-footer:before,.elementor-location-header:before{content:"";display:table;clear:both}.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post{display:block}assets/css/widget-animated-headline.min.css000064400000045522150755004320014755 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-headline{font-size:43px;line-height:1.2;display:block}.elementor-headline-dynamic-text{color:var(--dynamic-text-color,#aebcb9)}.elementor-headline--style-rotate .elementor-headline-dynamic-wrapper{text-align:left}.elementor-headline--style-highlight .elementor-headline-dynamic-wrapper{overflow:visible;text-align:inherit}.elementor-headline--style-highlight .elementor-headline-dynamic-text{z-index:1}.elementor-headline--style-highlight .elementor-headline-plain-text{z-index:1;position:relative}.elementor-headline--style-highlight svg{position:absolute;top:50%;left:50%;width:calc(100% + 20px);height:calc(100% + 20px);-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);overflow:visible}.elementor-headline--style-highlight svg path{stroke:red;stroke-width:9;fill:none;opacity:0;stroke-dasharray:0 1500;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-headline.e-animated svg path{-webkit-animation:elementor-headline-dash forwards;animation:elementor-headline-dash forwards;-webkit-animation-duration:var(--animation-duration,1.2s);animation-duration:var(--animation-duration,1.2s);-webkit-animation-iteration-count:1;animation-iteration-count:1}.elementor-headline.e-animated svg path:nth-of-type(2){-webkit-animation-delay:calc(var(--animation-duration, 1.2s) / 2);animation-delay:calc(var(--animation-duration, 1.2s) / 2)}.elementor-headline.e-hide-highlight svg path{opacity:1;stroke-dasharray:1500 1500;-webkit-animation:hide-highlight .4s forwards;animation:hide-highlight .4s forwards;-webkit-animation-iteration-count:1;animation-iteration-count:1}@-webkit-keyframes elementor-headline-dash{0%{stroke-dasharray:0 1500;opacity:1}to{stroke-dasharray:1500 1500;opacity:1}}@keyframes elementor-headline-dash{0%{stroke-dasharray:0 1500;opacity:1}to{stroke-dasharray:1500 1500;opacity:1}}@-webkit-keyframes hide-highlight{0%{opacity:1;stroke-dasharray:1500 1500}to{opacity:0;-webkit-filter:blur(10px);filter:blur(10px)}}@keyframes hide-highlight{0%{opacity:1;stroke-dasharray:1500 1500}to{opacity:0;-webkit-filter:blur(10px);filter:blur(10px)}}.elementor-headline-text-wrapper{vertical-align:bottom}.elementor-headline-dynamic-wrapper{display:inline-block;position:relative}.elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text{display:inline-block;position:absolute;top:0;left:0}.elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text.elementor-headline-text-active{position:relative}.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text{opacity:0;-webkit-transform-origin:50% 100%;-ms-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-transform:rotateX(0deg);transform:rotateX(0deg);-webkit-animation:elementor-headline-flip-in 1.2s;animation:elementor-headline-flip-in 1.2s}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);-webkit-animation:elementor-headline-flip-out 1.2s;animation:elementor-headline-flip-out 1.2s}@-webkit-keyframes elementor-headline-flip-in{0%{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}35%{-webkit-transform:rotateX(120deg);transform:rotateX(120deg);opacity:0}65%{opacity:0}to{-webkit-transform:rotateX(1turn);transform:rotateX(1turn);opacity:1}}@keyframes elementor-headline-flip-in{0%{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}35%{-webkit-transform:rotateX(120deg);transform:rotateX(120deg);opacity:0}65%{opacity:0}to{-webkit-transform:rotateX(1turn);transform:rotateX(1turn);opacity:1}}@-webkit-keyframes elementor-headline-flip-out{0%{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}35%{-webkit-transform:rotateX(-40deg);transform:rotateX(-40deg);opacity:1}65%{opacity:0}to{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}}@keyframes elementor-headline-flip-out{0%{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}35%{-webkit-transform:rotateX(-40deg);transform:rotateX(-40deg);opacity:1}65%{opacity:0}to{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper{vertical-align:top;overflow:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:after{content:"";position:absolute;left:auto;right:0;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);height:90%;width:1px;background-color:#0d0d0d}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:not(.elementor-headline-typing-selected):after{-webkit-animation:elementor-headline-pulse 1s infinite;animation:elementor-headline-pulse 1s infinite}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected{background-color:var(--typing-selected-bg-color,#0d0d0d)}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected:after{visibility:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected .elementor-headline-dynamic-text{color:var(--typing-selected-color,var(--dynamic-text-color),#aebcb9)}.elementor-headline-animation-type-typing .elementor-headline-dynamic-text:not(.elementor-headline-text-active){visibility:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){position:absolute;visibility:hidden}@-webkit-keyframes elementor-headline-pulse{0%{-webkit-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);transform:translateY(-50%) scale(.9);opacity:0}to{-webkit-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);opacity:0}}@keyframes elementor-headline-pulse{0%{-webkit-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);transform:translateY(-50%) scale(.9);opacity:0}to{-webkit-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);opacity:0}}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{display:inline-block;-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text{-webkit-transform:scaleX(1.0005);-ms-transform:scaleX(1.0005);transform:scaleX(1.0005);opacity:0}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg);opacity:0}.elementor-headline-text-active .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{opacity:1}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-swirl-in .4s forwards;animation:elementor-headline-swirl-in .4s forwards}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-swirl-out .4s forwards;animation:elementor-headline-swirl-out .4s forwards}@-webkit-keyframes elementor-headline-swirl-in{0%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(-10deg);transform:translateZ(-20px) rotateX(-10deg)}to{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0deg);transform:translateZ(-20px) rotateX(0deg)}}@keyframes elementor-headline-swirl-in{0%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(-10deg);transform:translateZ(-20px) rotateX(-10deg)}to{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0deg);transform:translateZ(-20px) rotateX(0deg)}}@-webkit-keyframes elementor-headline-swirl-out{0%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0);transform:translateZ(-20px) rotateX(0)}60%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-100deg);transform:translateZ(-20px) rotateX(-100deg)}to{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-90deg);transform:translateZ(-20px) rotateX(-90deg)}}@keyframes elementor-headline-swirl-out{0%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0);transform:translateZ(-20px) rotateX(0)}60%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-100deg);transform:translateZ(-20px) rotateX(-100deg)}to{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-90deg);transform:translateZ(-20px) rotateX(-90deg)}}.elementor-headline-animation-type-slide-down .elementor-headline-text-wrapper{display:inline-block;padding:.2em 0}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper{overflow:hidden;vertical-align:top}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text{opacity:0;top:.2em}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-active{top:0;opacity:1;-webkit-animation:elementor-headline-slide-down-in .6s;animation:elementor-headline-slide-down-in .6s}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-slide-down-out .6s;animation:elementor-headline-slide-down-out .6s}@-webkit-keyframes elementor-headline-slide-down-in{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}60%{opacity:1;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes elementor-headline-slide-down-in{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}60%{opacity:1;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes elementor-headline-slide-down-out{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}60%{opacity:0;-webkit-transform:translateY(120%);transform:translateY(120%)}to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes elementor-headline-slide-down-out{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}60%{opacity:0;-webkit-transform:translateY(120%);transform:translateY(120%)}to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}}.elementor-headline-animation-type-clip .elementor-headline-text-wrapper{display:inline-block;padding:.2em 0}.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper{overflow:hidden;vertical-align:top}.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper:after{content:"";position:absolute;top:0;left:auto;right:0;width:2px;height:100%;background-color:#0d0d0d}.elementor-headline-animation-type-clip .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-clip .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-animation:elementor-headline-drop-in-in .8s;animation:elementor-headline-drop-in-in .8s}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-drop-in-out .8s;animation:elementor-headline-drop-in-out .8s}@-webkit-keyframes elementor-headline-drop-in-in{0%{opacity:0;-webkit-transform:translateZ(100px);transform:translateZ(100px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes elementor-headline-drop-in-in{0%{opacity:0;-webkit-transform:translateZ(100px);transform:translateZ(100px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes elementor-headline-drop-in-out{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translateZ(-100px);transform:translateZ(-100px)}}@keyframes elementor-headline-drop-in-out{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translateZ(-100px);transform:translateZ(-100px)}}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter{display:inline-block;-webkit-transform:rotateY(180deg);transform:rotateY(180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-headline-text-active .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-blinds-in .6s forwards;animation:elementor-headline-blinds-in .6s forwards}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-blinds-out .6s forwards;animation:elementor-headline-blinds-out .6s forwards}@-webkit-keyframes elementor-headline-blinds-in{0%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}to{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}}@keyframes elementor-headline-blinds-in{0%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}to{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}}@-webkit-keyframes elementor-headline-blinds-out{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}to{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}}@keyframes elementor-headline-blinds-out{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}to{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}}.elementor-headline-animation-type-wave .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter{display:inline-block;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-headline-text-active .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter{opacity:1}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-wave-up .6s forwards;animation:elementor-headline-wave-up .6s forwards}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-wave-down .6s forwards;animation:elementor-headline-wave-down .6s forwards}@-webkit-keyframes elementor-headline-wave-up{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}60%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes elementor-headline-wave-up{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}60%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes elementor-headline-wave-down{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}60%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}@keyframes elementor-headline-wave-down{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}60%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-animation:elementor-headline-slide-in .6s;animation:elementor-headline-slide-in .6s}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-slide-out .6s;animation:elementor-headline-slide-out .6s}@-webkit-keyframes elementor-headline-slide-in{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}60%{opacity:1;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes elementor-headline-slide-in{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}60%{opacity:1;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes elementor-headline-slide-out{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}60%{opacity:0;-webkit-transform:translateX(110%);transform:translateX(110%)}to{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes elementor-headline-slide-out{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}60%{opacity:0;-webkit-transform:translateX(110%);transform:translateX(110%)}to{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-slide .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper{-webkit-transition:width .5s;-o-transition:width .5s;transition:width .5s}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper{overflow:hidden}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text,.elementor-headline-animation-type-wave .elementor-headline-dynamic-text{white-space:nowrap}.elementor-msie .elementor-headline--style-highlight svg{top:auto;left:auto;-webkit-transform:translate(-100%);-ms-transform:translate(-100%);transform:translate(-100%)}assets/css/widget-payments-rtl.min.css000064400000000121150755004320014045 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-payment-button{border:none}assets/css/widget-carousel-rtl.min.css000064400000054625150755004320014044 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-skin-carousel .elementor-main-swiper,.elementor-skin-coverflow .elementor-main-swiper{height:230px}.elementor-skin-slideshow .elementor-main-swiper{height:450px;position:relative}.elementor-skin-slideshow .elementor-thumbnails-swiper .elementor-custom-embed-play i{font-size:50px}.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide{cursor:pointer}.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide:not(.swiper-slide-active):after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.3)}.elementor-carousel-image{background:no-repeat 50%;-webkit-background-size:cover;background-size:cover;height:100%;position:relative}.elementor-carousel-image-overlay{position:absolute;top:0;left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;width:100%;height:100%;padding:20px;color:var(--e-carousel-image-overlay-color,#fff);background-color:rgba(129,138,145,.8);-webkit-transition:opacity .5s,-webkit-transform .5s;transition:opacity .5s,-webkit-transform .5s;-o-transition:transform .5s,opacity .5s;transition:transform .5s,opacity .5s;transition:transform .5s,opacity .5s,-webkit-transform .5s}.elementor-carousel-image-overlay i{font-size:var(--e-carousel-image-overlay-icon-size,21px)}.elementor-carousel-image-overlay svg{fill:var(--e-carousel-image-overlay-color,#fff);width:var(--e-carousel-image-overlay-icon-size,21px);height:var(--e-carousel-image-overlay-icon-size,21px)}.elementor-testimonial__image{-ms-flex-negative:0;flex-shrink:0}.elementor-testimonial__image img{border-radius:999px;-webkit-box-sizing:content-box;box-sizing:content-box;-o-object-fit:cover;object-fit:cover}.elementor-testimonial__footer,.elementor-testimonial__header{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-testimonial__footer cite,.elementor-testimonial__header cite{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;font-style:normal;font-size:14px;line-height:1.5}.elementor-testimonial__name{font-weight:700}.elementor-testimonial--layout-image_above .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline .elementor-testimonial__footer{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-testimonial--layout-image_above .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline .elementor-testimonial__image+cite{margin-right:20px}.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__footer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__image+cite{margin-left:20px;margin-right:0}.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__footer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__image+cite{margin-left:0;margin-right:20px}.elementor-testimonial--layout-image_inline .elementor-testimonial__footer{margin-top:25px}.elementor-testimonial--layout-image_above .elementor-testimonial{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.elementor-testimonial--layout-image_above .elementor-testimonial__footer{margin-bottom:25px}.elementor-testimonial--layout-image_stacked .elementor-testimonial__footer{margin-top:25px;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-testimonial--layout-image_stacked .elementor-testimonial__image,.elementor-testimonial--layout-image_stacked .elementor-testimonial cite{margin-top:15px;width:100%}.elementor-testimonial--layout-image_left .elementor-testimonial,.elementor-testimonial--layout-image_right .elementor-testimonial{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-testimonial--layout-image_left .elementor-testimonial__footer,.elementor-testimonial--layout-image_right .elementor-testimonial__footer{-ms-flex-negative:0;flex-shrink:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center}.elementor-testimonial--layout-image_left .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_right .elementor-testimonial__image+cite{margin-top:15px}.elementor-testimonial--layout-image_left.elementor-testimonial--align-center .elementor-testimonial__footer,.elementor-testimonial--layout-image_right.elementor-testimonial--align-center .elementor-testimonial__footer{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-testimonial--layout-image_left .elementor-testimonial{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-testimonial--layout-image_left .elementor-testimonial__footer{padding-left:20px}.elementor-testimonial--layout-image_right .elementor-testimonial{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-testimonial--layout-image_right .elementor-testimonial__footer{padding-right:20px}.elementor-testimonial--align-right .elementor-testimonial{text-align:right}.elementor-testimonial--align-left .elementor-testimonial{text-align:left}.elementor-testimonial--align-center .elementor-testimonial{text-align:center}.elementor-testimonial--align-center .elementor-testimonial__footer{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-testimonial--align-center.elementor-testimonial--layout-image_inline .elementor-testimonial__image+cite{text-align:right}.elementor-testimonial--skin-default.elementor-testimonial--layout-image_above .elementor-testimonial__cite,.elementor-testimonial--skin-default.elementor-testimonial--layout-image_left .elementor-testimonial__cite,.elementor-testimonial--skin-default.elementor-testimonial--layout-image_right .elementor-testimonial__cite{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-top:25px}.elementor-testimonial--skin-bubble .elementor-testimonial__content{background-color:#e6e9ec;padding:20px;position:relative}.elementor-testimonial--skin-bubble .elementor-testimonial__content:after{content:"";display:block;width:14px;height:14px;background-color:#e6e9ec;position:absolute;-webkit-transform:scaleX(.75) rotate(45deg);-ms-transform:scaleX(.75) rotate(45deg);transform:scaleX(.75) rotate(45deg);border-width:0;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above .elementor-testimonial__content:after{bottom:calc(100% - 7px);-webkit-transform:scaleX(.75) rotate(-135deg);-ms-transform:scaleX(.75) rotate(-135deg);transform:scaleX(.75) rotate(-135deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-center .elementor-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) scaleX(.75) rotate(-135deg);-ms-transform:translateX(-50%) scaleX(.75) rotate(-135deg);transform:translateX(-50%) scaleX(.75) rotate(-135deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked .elementor-testimonial__content:after{top:calc(100% - 7px)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-center .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-center .elementor-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) scaleX(.75) rotate(45deg);-ms-transform:translateX(-50%) scaleX(.75) rotate(45deg);transform:translateX(-50%) scaleX(.75) rotate(45deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-left .elementor-testimonial__content:after{left:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-right .elementor-testimonial__content:after{right:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after{-webkit-transform:scaleY(.75) rotate(135deg);-ms-transform:scaleY(.75) rotate(135deg);transform:scaleY(.75) rotate(135deg);left:-8px}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after{-webkit-transform:scaleY(.75) rotate(-45deg);-ms-transform:scaleY(.75) rotate(-45deg);transform:scaleY(.75) rotate(-45deg);right:-8px}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after{top:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__footer,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__footer{padding-top:20px}.elementor-widget-testimonial-carousel .swiper-slide{padding:20px}.elementor-widget-testimonial-carousel .elementor-testimonial__text{font-size:1.3em;font-style:italic;line-height:1.5}.elementor-widget-testimonial-carousel .elementor-testimonial__image img{width:50px;height:50px}.elementor-widget-reviews .swiper-slide{background-color:#fff;border:1px solid #e1e8ed;border-radius:5px;padding:0}.elementor-widget-reviews .elementor-testimonial__text{font-size:14px;line-height:20px}.elementor-widget-reviews .elementor-testimonial__name{color:#1c2022}.elementor-widget-reviews .elementor-testimonial__title{color:#697882;font-size:12.5px;font-weight:400;font-family:inherit}.elementor-widget-reviews .elementor-testimonial__image{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-reviews .elementor-testimonial__image img{width:36px;height:36px}.elementor-widget-reviews .elementor-testimonial__icon{margin-right:auto;font-size:17px}.elementor-widget-reviews .elementor-testimonial__icon .fa+.fa{margin-right:.15em}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon{color:var(--e-testimonial-icon-color)}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-android{--e-testimonial-icon-color:#a4c639}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-apple{--e-testimonial-icon-color:#999}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-behance{--e-testimonial-icon-color:#1769ff}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-bitbucket{--e-testimonial-icon-color:#205081}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-codepen{--e-testimonial-icon-color:#000}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-delicious{--e-testimonial-icon-color:#39f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-digg{--e-testimonial-icon-color:#005be2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-dribbble{--e-testimonial-icon-color:#ea4c89}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-envelope{--e-testimonial-icon-color:#ea4335}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-facebook{--e-testimonial-icon-color:#3b5998}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-flickr{--e-testimonial-icon-color:#0063dc}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-foursquare{--e-testimonial-icon-color:#2d5be3}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-github{--e-testimonial-icon-color:#333}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-google-plus{--e-testimonial-icon-color:#dd4b39}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-houzz{--e-testimonial-icon-color:#7ac142}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-instagram{--e-testimonial-icon-color:#262626}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-jsfiddle{--e-testimonial-icon-color:#487aa2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-linkedin{--e-testimonial-icon-color:#0077b5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-medium{--e-testimonial-icon-color:#00ab6b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-meetup{--e-testimonial-icon-color:#ec1c40}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-mixcloud{--e-testimonial-icon-color:#273a4b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-odnoklassniki{--e-testimonial-icon-color:#f4731c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-pinterest{--e-testimonial-icon-color:#bd081c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-product-hunt{--e-testimonial-icon-color:#da552f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-reddit{--e-testimonial-icon-color:#ff4500}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-rss{--e-testimonial-icon-color:#f26522}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-shopping-cart{--e-testimonial-icon-color:#4caf50}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-skype{--e-testimonial-icon-color:#00aff0}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-slideshare{--e-testimonial-icon-color:#0077b5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-snapchat{--e-testimonial-icon-color:#fffc00}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-soundcloud{--e-testimonial-icon-color:#f80}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-spotify{--e-testimonial-icon-color:#2ebd59}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stack-overflow{--e-testimonial-icon-color:#fe7a15}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-steam{--e-testimonial-icon-color:#00adee}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stumbleupon{--e-testimonial-icon-color:#eb4924}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-telegram{--e-testimonial-icon-color:#2ca5e0}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumb-tack,.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumbtack{--e-testimonial-icon-color:#1aa1d8}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tripadvisor{--e-testimonial-icon-color:#589442}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tumblr{--e-testimonial-icon-color:#35465c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitch{--e-testimonial-icon-color:#6441a5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitter{--e-testimonial-icon-color:#1da1f2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vimeo{--e-testimonial-icon-color:#1ab7ea}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vk{--e-testimonial-icon-color:#45668e}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weibo{--e-testimonial-icon-color:#dd2430}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weixin{--e-testimonial-icon-color:#31a918}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-whatsapp{--e-testimonial-icon-color:#25d366}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-wordpress{--e-testimonial-icon-color:#21759b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-xing{--e-testimonial-icon-color:#026466}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-yelp{--e-testimonial-icon-color:#af0606}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-youtube{--e-testimonial-icon-color:#cd201f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-500px{--e-testimonial-icon-color:#0099e5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon svg{fill:var(--e-testimonial-icon-color)}.elementor-widget-reviews .elementor-testimonial__rating{background-image:-webkit-gradient(linear,left top,right top,from(#ffc82c),to(#ccc));background-image:-webkit-linear-gradient(left,#ffc82c var(--rating),#ccc var(--rating));background-image:-o-linear-gradient(left,#ffc82c var(--rating),#ccc var(--rating));background-image:linear-gradient(90deg,#ffc82c var(--rating),#ccc var(--rating));font-family:eicons}.elementor-widget-reviews .elementor-testimonial__header{display:-webkit-box;display:-ms-flexbox;display:flex;padding-top:15px;padding-bottom:6px}.elementor-widget-reviews .elementor-testimonial__image+cite{margin-right:9px}.elementor-widget-reviews .elementor-testimonial__separator{margin:0 auto;border-top:0;border-bottom:1px solid #e1e8ed;height:0}.elementor-widget-reviews .elementor-testimonial__content{padding-top:6px;padding-bottom:15px}.elementor-widget-reviews .elementor-testimonial__content,.elementor-widget-reviews .elementor-testimonial__header{padding-left:15px;padding-right:15px}.elementor-widget-reviews.elementor-review--has-separator .elementor-testimonial__header{border-bottom:1px solid #e1e8ed}.swiper-pagination-bullets{color:#fff;cursor:default}.swiper-slide{will-change:transform;border-style:solid;border-width:0;-webkit-transition-duration:.5s;-o-transition-duration:.5s;transition-duration:.5s;-webkit-transition-property:border,background,-webkit-transform;transition-property:border,background,-webkit-transform;-o-transition-property:border,background,transform;transition-property:border,background,transform;transition-property:border,background,transform,-webkit-transform;overflow:hidden}.swiper-slide:not(:hover) .e-overlay-animation-fade{opacity:0}.swiper-slide:not(:hover) .e-overlay-animation-slide-up{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-down{-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-right{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-left{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.swiper-slide:not(:hover) .e-overlay-animation-zoom-in{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);opacity:0}.swiper-slide a{display:inline}.swiper-slide a.elementor-button{display:inline-block}.elementor-widget-reviews .elementor-arrows-yes .elementor-main-swiper,.elementor-widget-testimonial-carousel .elementor-arrows-yes .elementor-main-swiper{width:calc(95% - 40px)}.elementor-widget-reviews .elementor-main-swiper,.elementor-widget-testimonial-carousel .elementor-main-swiper{width:95%}.elementor-widget-reviews .swiper-wrapper,.elementor-widget-testimonial-carousel .swiper-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-widget-reviews .swiper-slide,.elementor-widget-testimonial-carousel .swiper-slide{height:auto}.elementor-widget-reviews.elementor-pagination-type-bullets .swiper-container,.elementor-widget-reviews.elementor-pagination-type-fraction .swiper-container,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .swiper-container,.elementor-widget-testimonial-carousel.elementor-pagination-type-fraction .swiper-container{padding-bottom:40px}.elementor-widget-reviews .elementor-swiper-button-prev,.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-next,.elementor-widget-testimonial-carousel .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-next{left:0;right:unset}.elementor-widget-reviews .elementor-swiper-button-next,.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel .elementor-swiper-button-next,.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-prev{right:0;left:unset}.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-next,.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-next,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-prev{top:calc(50% - (40px / 2))}.elementor-widget-media-carousel .elementor-swiper-button-prev,.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-next{left:10px;right:unset}.elementor-widget-media-carousel .elementor-swiper-button-next,.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-prev{right:10px;left:unset}assets/css/app.css000064400000027143150755004320010140 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
:root {
  --color-box-shadow-color: rgba(0, 0, 0, 0.05); }

.eps-theme-dark {
  --color-box-shadow-color: rgba(0, 0, 0, 0.1); }

:root {
  --eps-meta-icon-color: #c2cbd2; }

.eps-theme-dark {
  --eps-meta-icon-color: #b4b5b7; }

.e-site-template__meta-data {
  -webkit-margin-start: 0.625rem;
          margin-inline-start: 0.625rem;
  overflow: hidden;
  -o-text-overflow: ellipsis;
     text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.6875rem; }
  .e-site-template__meta-data:last-of-type {
    -webkit-margin-end: auto;
            margin-inline-end: auto; }
  .e-site-template__meta-data:first-of-type {
    -webkit-margin-start: 1rem;
            margin-inline-start: 1rem; }
  .e-site-template__meta-data .eps-icon {
    -webkit-margin-end: 0.3125rem;
            margin-inline-end: 0.3125rem;
    color: var(--eps-meta-icon-color);
    font-size: 0.8125rem; }

.e-site-template__placeholder .eps-card__image {
  -webkit-filter: var(--placeholder-filter, none);
          filter: var(--placeholder-filter, none); }

.e-site-template__overlay-preview {
  padding-top: calc(var(--card-image-aspect-ratio, 95.6%) - 1.875rem);
  position: relative; }
  .e-site-template__overlay-preview-button {
    font-weight: bold;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    height: 1.875rem;
    width: 100%;
    background-color: var(--card-background-color-hover);
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    padding-top: 0.625rem;
    line-height: 1.25rem;
    --button-background-color: var(--card-headline-color); }
    .e-site-template__overlay-preview-button::before {
      content: '';
      position: absolute;
      display: block;
      width: 100%;
      top: 0;
      left: 0;
      padding-top: calc(var(--card-image-aspect-ratio, 95.6%) - 1.875rem); }
    .e-site-template__overlay-preview-button > :not(:first-child) {
      -webkit-margin-start: 0.3125rem;
              margin-inline-start: 0.3125rem; }

.e-site-template__edit-btn {
  -webkit-margin-end: 1.25rem;
          margin-inline-end: 1.25rem; }
  .e-site-template__edit-btn .eps-icon {
    -webkit-margin-end: 0.3125rem;
            margin-inline-end: 0.3125rem; }

.e-site-template__instances .eps-icon {
  -webkit-margin-end: 0.3125rem;
          margin-inline-end: 0.3125rem;
  color: var(--eps-meta-icon-color);
  font-size: 0.8125rem; }

.e-site-template__instances-list {
  overflow: hidden;
  -o-text-overflow: ellipsis;
     text-overflow: ellipsis;
  white-space: nowrap; }

.e-site-template__edit-conditions {
  -webkit-margin-start: 1rem;
          margin-inline-start: 1rem;
  color: #58d0f5;
  text-decoration: underline;
  font-style: italic; }

.e-site-template--extended .eps-card__figure {
  overflow: auto; }

.e-site-template--extended .eps-card__headline {
  -webkit-box-flex: 0;
      -ms-flex-positive: 0;
          flex-grow: 0; }

.e-site-template--wide {
  --card-image-aspect-ratio: calc(100% * 0.1235); }

.eps-add-new__overlay {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  opacity: 1;
  --card-image-overlay-background-color: transparent; }

.e-site-editor__templates .page-header {
  margin-bottom: 0.625rem; }

.e-site-editor__templates .eps-separator {
  margin-bottom: 2.75rem; }

:root {
  --e-site-editor-conditions-row-controls-background: #fff;
  --e-site-editor-input-wrapper-border-color: #f1f3f5;
  --e-site-editor-input-wrapper-select-color: #556068;
  --e-site-editor-add-button-background-color: #a4afb7;
  --e-site-editor-add-button-color-hover-background-color: #6d7882;
  --e-site-editor-input-wrapper-condition-include-background-color:
	#a4afb7;
  --e-site-editor-input-wrapper-condition-exclude-background-color:
	#c2cbd2;
  --e-site-editor-input-select2-search-field-color: #495157
; }

.eps-theme-dark {
  --select2-selection-background-color: tints(600);
  --e-site-editor-conditions-row-controls-background: #404349;
  --e-site-editor-input-wrapper-border-color: #404349;
  --e-site-editor-input-wrapper-select-color: #b4b5b7;
  --e-site-editor-add-button-background-color: #4c4f56;
  --e-site-editor-add-button-color-hover-background-color: #404349;
  --e-site-editor-input-wrapper-condition-include-background-color:
			#404349;
  --e-site-editor-input-wrapper-condition-exclude-background-color:
			#404349;
  --e-site-editor-input-select2-search-field-color: #fff

; }

.e-site-editor-conditions__header {
  text-align: center; }

.e-site-editor-conditions__header-image {
  display: block;
  margin: 0 auto 2.75rem;
  width: 4.375rem; }

.e-site-editor-conditions__rows {
  margin: 2.75rem auto;
  max-width: 43.75rem; }

.e-site-editor-conditions__row {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-flex: 1;
      -ms-flex-positive: 1;
          flex-grow: 1;
  margin-top: 0.75rem; }

.e-site-editor-conditions__remove-condition {
  color: #c2cbd2;
  font-size: 1.125rem;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.e-site-editor-conditions__row-controls {
  overflow: hidden;
  margin-right: 0.625rem;
  background-color: var(--e-site-editor-conditions-row-controls-background);
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  width: 100%;
  -webkit-box-shadow: 0 3px 6px var(--color-box-shadow-color);
          box-shadow: 0 3px 6px var(--color-box-shadow-color);
  border-radius: 0.1875rem; }
  .e-site-editor-conditions__row-controls--error {
    border: 1px solid #b01b1b; }

.e-site-editor-conditions__conflict {
  text-align: center;
  margin-top: 0.3125rem;
  color: #b01b1b; }

.e-site-editor-conditions__row-controls-inner {
  width: 100%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .e-site-editor-conditions__row-controls-inner div {
    -webkit-box-flex: 1;
        -ms-flex: 1;
            flex: 1; }

.e-site-editor-conditions__add-button-container {
  text-align: center; }

.e-site-editor-conditions__add-button {
  margin-top: 2.75rem;
  background-color: var(--e-site-editor-add-button-background-color);
  color: #fff;
  text-transform: uppercase; }
  .e-site-editor-conditions__add-button:hover {
    background-color: var(--e-site-editor-add-button-color-hover-background-color);
    color: #fff; }

.e-site-editor-conditions__footer {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end;
  position: absolute;
  bottom: 0;
  right: 0;
  left: 0;
  padding: 0.5rem;
  border-top: 1px solid var(--hr-color); }

.e-site-editor-conditions__input-wrapper {
  position: relative;
  border-left: 1px solid;
  border-color: var(--e-site-editor-input-wrapper-border-color); }
  .e-site-editor-conditions__input-wrapper:first-child {
    border: none; }
  .e-site-editor-conditions__input-wrapper select {
    -moz-appearance: none;
         appearance: none;
    -webkit-appearance: none;
    font-size: 0.75rem;
    height: 2.5rem;
    border-width: 0;
    padding: 0 0.625rem;
    width: 100%;
    position: relative;
    color: var(--e-site-editor-input-wrapper-select-color);
    outline: none;
    background: transparent; }
  .e-site-editor-conditions__input-wrapper:after {
    font-family: eicons;
    content: '\e8ad';
    font-size: 0.75rem;
    pointer-events: none;
    position: absolute;
    top: 50%;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%);
    right: 0.625rem; }
  .e-site-editor-conditions__input-wrapper .select2-container--default .select2-selection--single {
    border: none;
    line-height: 2.5rem; }
  .e-site-editor-conditions__input-wrapper .select2-container--default .select2-selection--single .select2-selection__rendered {
    line-height: 2.5rem;
    font-size: 0.75rem; }
  .e-site-editor-conditions__input-wrapper .select2-selection {
    outline: none;
    background: transparent;
    height: 2.5rem; }
  .e-site-editor-conditions__input-wrapper .select2-selection__arrow {
    display: none; }

.e-site-editor-conditions__input-wrapper--condition-type {
  position: relative; }
  .e-site-editor-conditions__input-wrapper--condition-type:before {
    font-family: eicons;
    position: absolute;
    top: 50%;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%);
    left: 0.75rem;
    font-size: 0.9375rem;
    color: #fff;
    pointer-events: none;
    z-index: 1000; }
  .e-site-editor-conditions__input-wrapper--condition-type:after {
    color: #fff; }
  .e-site-editor-conditions__input-wrapper--condition-type select {
    text-transform: uppercase;
    padding-left: 2.125rem;
    width: 7.5rem;
    font-size: 0.75rem;
    color: #fff; }
  .e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type="include"]:before {
    content: '\e8cc'; }
  .e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type="include"] select {
    background-color: var(--e-site-editor-input-wrapper-condition-include-background-color); }
  .e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type="exclude"]:before {
    content: '\e8cd'; }
  .e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type="exclude"] select {
    background-color: var(--e-site-editor-input-wrapper-condition-exclude-background-color); }

.select2-search__field {
  background-color: transparent;
  color: var(--e-site-editor-input-select2-search-field-color); }

.eps-back-button {
  font-size: 14px;
  margin-bottom: 1.5rem; }
  .eps-back-button .eps-icon {
    -webkit-transform: rotate(0deg);
        -ms-transform: rotate(0deg);
            transform: rotate(0deg); }

:root {
  --indicator-bullet-border-color: #fff; }

.eps-theme-dark {
  --indicator-bullet-border-color: #4c4f56; }

.eps-indicator-bullet {
  display: block;
  -ms-flex-negative: 0;
      flex-shrink: 0;
  width: 0.75rem;
  height: 0.75rem;
  -webkit-box-shadow: 0 2px 3px 1px var(--color-box-shadow-color);
          box-shadow: 0 2px 3px 1px var(--color-box-shadow-color);
  background-color: #d5dadf;
  border: 2px solid var(--indicator-bullet-border-color);
  border-radius: 100%;
  -webkit-margin-end: 0.625rem;
          margin-inline-end: 0.625rem; }
  .eps-indicator-bullet--active {
    background-color: #39b54a; }

.site-editor__preview-iframe {
  height: 50vh;
  position: relative; }
  .site-editor__preview-iframe__iframe {
    top: 0;
    left: 0;
    position: absolute;
    border: none;
    -webkit-transform-origin: 0 0;
        -ms-transform-origin: 0 0;
            transform-origin: 0 0;
    height: 100%; }
  .site-editor__preview-iframe--header, .site-editor__preview-iframe--footer {
    height: 15vh; }

.e-site-editor__content_container {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  min-height: 100%;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap; }

.e-site-editor__content_container_main {
  -webkit-box-flex: 1;
      -ms-flex: 1;
          flex: 1; }

.e-site-editor__content_container_secondary {
  margin: 0 auto;
  padding-top: 2.75rem; }
/*# sourceMappingURL=app.css.map */assets/css/preview.css000064400000004410150755004320011031 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-document-handle {
  display: none;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  position: absolute;
  z-index: 100;
  top: 0;
  left: 50%;
  -webkit-transform: translateX(-50%);
      -ms-transform: translateX(-50%);
          transform: translateX(-50%);
  background-color: #fcb92c;
  padding: 5px 10px;
  font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
  font-size: 11px;
  color: #fff;
  border-radius: 0 0 3px 3px;
  cursor: pointer; }
  .elementor-document-handle:before, .elementor-document-handle:after {
    content: '';
    position: absolute;
    border: solid transparent; }
  .elementor-document-handle:before {
    right: calc(100% - 1px);
    border-right-color: #fcb92c;
    border-width: 0 14px 23px 0; }
  .elementor-document-handle:after {
    left: calc(100% - 1px);
    border-left-color: #fcb92c;
    border-width: 0 0 23px 14px; }
  .elementor-document-handle .eicon-edit {
    margin-right: 5px; }

.elementor-editor-active .elementor {
  position: relative; }
  .elementor-editor-active .elementor:not(.elementor-edit-mode):hover {
    -webkit-box-shadow: 0 0 0 1px #fcb92c;
            box-shadow: 0 0 0 1px #fcb92c; }
    .elementor-editor-active .elementor:not(.elementor-edit-mode):hover .elementor-document-handle {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      line-height: initial; }
  .elementor-editor-active .elementor.loading {
    opacity: 0.5; }
  .elementor-editor-active .elementor[data-elementor-type="single"] > .elementor-document-handle {
    -webkit-transform: translateX(-50%) translateY(-100%);
        -ms-transform: translateX(-50%) translateY(-100%);
            transform: translateX(-50%) translateY(-100%);
    border-radius: 3px 3px 0 0; }
    .elementor-editor-active .elementor[data-elementor-type="single"] > .elementor-document-handle:before {
      border-width: 23px 14px 0 0; }
    .elementor-editor-active .elementor[data-elementor-type="single"] > .elementor-document-handle:after {
      border-width: 23px 0 0 14px; }

.elementor-embedded-editor.elementor-location-header .elementor-section-wrap:not(:empty) + #elementor-add-new-section {
  display: none; }
/*# sourceMappingURL=preview.css.map */assets/css/widget-video-playlist.min.css000064400000031234150755004320014364 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.e-tabs-inner-tabs{text-align:left;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:16px}.e-tabs-inner-tabs .e-tab-content{padding-top:32px}.e-tabs-inner-tabs .e-inner-tabs-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;overflow:hidden;z-index:1}.e-tabs-inner-tabs .e-inner-tabs-wrapper :after{content:"";width:100%;height:var(--inner-tabs-border-height,1px);background-color:var(--inner-tabs-border-color,#d5dadf);position:absolute;bottom:0;z-index:-1}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title{font-weight:700;min-width:140px;line-height:38px;height:38px;-webkit-box-sizing:content-box;box-sizing:content-box}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title a{color:#6d7882;padding:0 36px;display:block;text-align:center}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active{border-color:#495157 #495157 transparent;border-left-width:0;border-bottom:1px solid #495157;border-right-width:0;border-top-width:0}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active a{color:#495157}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content{display:none;padding:20px}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-text{color:#556068}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.e-inner-tab-active{display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons{margin-top:24px;display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons button{display:none;font-weight:500;line-height:24px;text-decoration:underline;border:none;background:transparent;padding:0}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible .e-inner-tab-text{overflow:hidden}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible.show-inner-tab-buttons .e-inner-tab-buttons,.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button.show-button{display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.show-full-height div.e-inner-tab-text{height:auto}@media (max-width:767px){.e-tabs-inner-tabs>.e-tab-content:first-child{padding-top:24px}.e-tabs-inner-tabs .e-inner-tabs-wrapper{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper{border:solid #d5dadf;border-width:1px 1px 0}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title{border:solid #d5dadf;border-width:0 0 1px;font-size:16px;font-weight:700;text-align:center;height:38px;line-height:38px;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0 10px;cursor:pointer;display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content{border:solid #d5dadf;border-width:0 0 1px;padding:20px}}.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}@media (max-width:767px){.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.elementor-widget-video-playlist{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif}.elementor-widget-video-playlist .e-tabs{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-widget-video-playlist .e-tabs-main-area{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;height:434px}.elementor-widget-video-playlist .e-tabs-wrapper{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:33%}.elementor-widget-video-playlist .e-tabs-header{background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;min-height:56px;border-bottom:1px solid #d5dadf}.elementor-widget-video-playlist .e-tabs-header .e-tabs-header-right-side{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-title{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;-o-text-overflow:ellipsis;text-overflow:ellipsis;font-weight:700;font-size:16px;padding:10px 0;overflow-wrap:anywhere;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin:auto 0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count{font-size:14px;-ms-flex-negative:0;flex-shrink:0;font-weight:400;line-height:20px;-ms-flex-item-align:start;align-self:flex-start;padding:18px 0 0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button{display:none;margin:auto 0 auto 8px;cursor:pointer;padding:0 4px}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button.e-font-icon-svg{height:1em;width:1em}.elementor-widget-video-playlist .e-tabs-header .rotate-up{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-widget-video-playlist .e-tabs-header .rotate-down{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-widget-video-playlist .e-tabs-items-wrapper{background-color:#fff;overflow:hidden;position:relative;height:100%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items{overflow:auto;height:100%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-section-title{border-color:#d5dadf;font-size:14px;height:36px;padding:0 16px;line-height:36px;margin:0;text-align:left;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border-width:0;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title{background-color:#fff;border-color:#d5dadf;border-width:0 0 1px;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:14px;height:55px;line-height:55px;outline:none;padding:0 16px;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i{text-shadow:0 0 3px #000;color:#fff;font-size:var(--playlist-item-icon-size,16px)}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg{text-shadow:0 0 3px #000;color:#fff;fill:#fff;width:var(--playlist-item-icon-size,16px);height:var(--playlist-item-icon-size,16px)}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg path{fill:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover{background-color:#f1f3f5;border-color:#d5dadf;border-width:0 0 1px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg{text-shadow:0 0 3px #000;color:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg path,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg path{fill:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active .e-tab-title-text,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover .e-tab-title-text{font-size:14px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-play,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail{background-color:#d5dadf;position:relative;margin:auto 0;-ms-flex-negative:0;flex-shrink:0;width:75px;height:42px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail img{-o-object-fit:fill;object-fit:fill;width:75px;height:42px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail svg{position:absolute;bottom:4px;right:4px;font-weight:900}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-title-text{font-size:14px;margin:auto 8px;text-align:left;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg{margin:auto 0;vertical-align:middle}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-duration{font-size:14px;margin:auto 0}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-play{display:none}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-watched{display:block}.elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top{display:none;height:98px;position:absolute;top:0;width:100%;pointer-events:none;background:-webkit-gradient(linear,left bottom,left top,from(transparent),to(#fff));background:-webkit-linear-gradient(bottom,transparent,#fff);background:-o-linear-gradient(bottom,transparent 0,#fff 100%);background:linear-gradient(0deg,transparent,#fff)}.elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom{display:none;height:98px;position:absolute;bottom:0;width:100%;background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(#fff));background:-webkit-linear-gradient(top,transparent,#fff);background:-o-linear-gradient(top,transparent 0,#fff 100%);background:linear-gradient(180deg,transparent,#fff);pointer-events:none}.elementor-widget-video-playlist .e-tabs-items-wrapper.bottom-shadow .shadow-bottom,.elementor-widget-video-playlist .e-tabs-items-wrapper.top-shadow .shadow-top{display:block}.elementor-widget-video-playlist .e-tabs-content-wrapper{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;height:100%;position:relative}.elementor-widget-video-playlist .e-tabs-content-wrapper .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center;position:absolute;top:0;left:0;width:100%;height:100%;-webkit-background-size:cover;background-size:cover;background-position:50%}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-mobile-title{display:none}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content{background-color:#000;display:none;height:100%;outline:none}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content>div{height:100%}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content iframe{height:100%;max-height:100%!important;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content video{height:100%;background-color:#000}.elementor-widget-video-playlist .e-tabs-inner-tabs .e-tab-content{display:none;outline:none}@media (max-width:767px){.elementor-widget-video-playlist .e-tabs-main-area{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;height:auto}.elementor-widget-video-playlist .e-tabs-main-area .e-tabs-content-wrapper{border:none;height:38%}.elementor-widget-video-playlist .e-tabs-wrapper{width:auto;height:62%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items{max-height:248px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items .e-tab-title{border:none}.elementor-widget-video-playlist .e-tabs-header{min-height:48px}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count{margin:0 6px;padding:14px 0 0}.elementor-widget-video-playlist .e-tab-content{border:none;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex}}assets/css/widget-animated-headline-rtl.min.css000064400000045524150755004320015556 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-headline{font-size:43px;line-height:1.2;display:block}.elementor-headline-dynamic-text{color:var(--dynamic-text-color,#aebcb9)}.elementor-headline--style-rotate .elementor-headline-dynamic-wrapper{text-align:right}.elementor-headline--style-highlight .elementor-headline-dynamic-wrapper{overflow:visible;text-align:inherit}.elementor-headline--style-highlight .elementor-headline-dynamic-text{z-index:1}.elementor-headline--style-highlight .elementor-headline-plain-text{z-index:1;position:relative}.elementor-headline--style-highlight svg{position:absolute;top:50%;left:50%;width:calc(100% + 20px);height:calc(100% + 20px);-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);overflow:visible}.elementor-headline--style-highlight svg path{stroke:red;stroke-width:9;fill:none;opacity:0;stroke-dasharray:0 1500;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-headline.e-animated svg path{-webkit-animation:elementor-headline-dash forwards;animation:elementor-headline-dash forwards;-webkit-animation-duration:var(--animation-duration,1.2s);animation-duration:var(--animation-duration,1.2s);-webkit-animation-iteration-count:1;animation-iteration-count:1}.elementor-headline.e-animated svg path:nth-of-type(2){-webkit-animation-delay:calc(var(--animation-duration, 1.2s) / 2);animation-delay:calc(var(--animation-duration, 1.2s) / 2)}.elementor-headline.e-hide-highlight svg path{opacity:1;stroke-dasharray:1500 1500;-webkit-animation:hide-highlight .4s forwards;animation:hide-highlight .4s forwards;-webkit-animation-iteration-count:1;animation-iteration-count:1}@-webkit-keyframes elementor-headline-dash{0%{stroke-dasharray:0 1500;opacity:1}to{stroke-dasharray:1500 1500;opacity:1}}@keyframes elementor-headline-dash{0%{stroke-dasharray:0 1500;opacity:1}to{stroke-dasharray:1500 1500;opacity:1}}@-webkit-keyframes hide-highlight{0%{opacity:1;stroke-dasharray:1500 1500}to{opacity:0;-webkit-filter:blur(10px);filter:blur(10px)}}@keyframes hide-highlight{0%{opacity:1;stroke-dasharray:1500 1500}to{opacity:0;-webkit-filter:blur(10px);filter:blur(10px)}}.elementor-headline-text-wrapper{vertical-align:bottom}.elementor-headline-dynamic-wrapper{display:inline-block;position:relative}.elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text{display:inline-block;position:absolute;top:0;right:0}.elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text.elementor-headline-text-active{position:relative}.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text{opacity:0;-webkit-transform-origin:50% 100%;-ms-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-transform:rotateX(0deg);transform:rotateX(0deg);-webkit-animation:elementor-headline-flip-in 1.2s;animation:elementor-headline-flip-in 1.2s}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);-webkit-animation:elementor-headline-flip-out 1.2s;animation:elementor-headline-flip-out 1.2s}@-webkit-keyframes elementor-headline-flip-in{0%{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}35%{-webkit-transform:rotateX(120deg);transform:rotateX(120deg);opacity:0}65%{opacity:0}to{-webkit-transform:rotateX(1turn);transform:rotateX(1turn);opacity:1}}@keyframes elementor-headline-flip-in{0%{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}35%{-webkit-transform:rotateX(120deg);transform:rotateX(120deg);opacity:0}65%{opacity:0}to{-webkit-transform:rotateX(1turn);transform:rotateX(1turn);opacity:1}}@-webkit-keyframes elementor-headline-flip-out{0%{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}35%{-webkit-transform:rotateX(-40deg);transform:rotateX(-40deg);opacity:1}65%{opacity:0}to{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}}@keyframes elementor-headline-flip-out{0%{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}35%{-webkit-transform:rotateX(-40deg);transform:rotateX(-40deg);opacity:1}65%{opacity:0}to{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper{vertical-align:top;overflow:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:after{content:"";position:absolute;left:0;right:auto;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);height:90%;width:1px;background-color:#0d0d0d}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:not(.elementor-headline-typing-selected):after{-webkit-animation:elementor-headline-pulse 1s infinite;animation:elementor-headline-pulse 1s infinite}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected{background-color:var(--typing-selected-bg-color,#0d0d0d)}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected:after{visibility:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected .elementor-headline-dynamic-text{color:var(--typing-selected-color,var(--dynamic-text-color),#aebcb9)}.elementor-headline-animation-type-typing .elementor-headline-dynamic-text:not(.elementor-headline-text-active){visibility:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){position:absolute;visibility:hidden}@-webkit-keyframes elementor-headline-pulse{0%{-webkit-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);transform:translateY(-50%) scale(.9);opacity:0}to{-webkit-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);opacity:0}}@keyframes elementor-headline-pulse{0%{-webkit-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);transform:translateY(-50%) scale(.9);opacity:0}to{-webkit-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);opacity:0}}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{display:inline-block;-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text{-webkit-transform:scaleX(1.0005);-ms-transform:scaleX(1.0005);transform:scaleX(1.0005);opacity:0}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg);opacity:0}.elementor-headline-text-active .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{opacity:1}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-swirl-in .4s forwards;animation:elementor-headline-swirl-in .4s forwards}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-swirl-out .4s forwards;animation:elementor-headline-swirl-out .4s forwards}@-webkit-keyframes elementor-headline-swirl-in{0%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(-10deg);transform:translateZ(-20px) rotateX(-10deg)}to{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0deg);transform:translateZ(-20px) rotateX(0deg)}}@keyframes elementor-headline-swirl-in{0%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(-10deg);transform:translateZ(-20px) rotateX(-10deg)}to{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0deg);transform:translateZ(-20px) rotateX(0deg)}}@-webkit-keyframes elementor-headline-swirl-out{0%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0);transform:translateZ(-20px) rotateX(0)}60%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-100deg);transform:translateZ(-20px) rotateX(-100deg)}to{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-90deg);transform:translateZ(-20px) rotateX(-90deg)}}@keyframes elementor-headline-swirl-out{0%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0);transform:translateZ(-20px) rotateX(0)}60%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-100deg);transform:translateZ(-20px) rotateX(-100deg)}to{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-90deg);transform:translateZ(-20px) rotateX(-90deg)}}.elementor-headline-animation-type-slide-down .elementor-headline-text-wrapper{display:inline-block;padding:.2em 0}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper{overflow:hidden;vertical-align:top}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text{opacity:0;top:.2em}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-active{top:0;opacity:1;-webkit-animation:elementor-headline-slide-down-in .6s;animation:elementor-headline-slide-down-in .6s}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-slide-down-out .6s;animation:elementor-headline-slide-down-out .6s}@-webkit-keyframes elementor-headline-slide-down-in{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}60%{opacity:1;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes elementor-headline-slide-down-in{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}60%{opacity:1;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes elementor-headline-slide-down-out{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}60%{opacity:0;-webkit-transform:translateY(120%);transform:translateY(120%)}to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes elementor-headline-slide-down-out{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}60%{opacity:0;-webkit-transform:translateY(120%);transform:translateY(120%)}to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}}.elementor-headline-animation-type-clip .elementor-headline-text-wrapper{display:inline-block;padding:.2em 0}.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper{overflow:hidden;vertical-align:top}.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper:after{content:"";position:absolute;top:0;left:0;right:auto;width:2px;height:100%;background-color:#0d0d0d}.elementor-headline-animation-type-clip .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-clip .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-animation:elementor-headline-drop-in-in .8s;animation:elementor-headline-drop-in-in .8s}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-drop-in-out .8s;animation:elementor-headline-drop-in-out .8s}@-webkit-keyframes elementor-headline-drop-in-in{0%{opacity:0;-webkit-transform:translateZ(100px);transform:translateZ(100px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes elementor-headline-drop-in-in{0%{opacity:0;-webkit-transform:translateZ(100px);transform:translateZ(100px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes elementor-headline-drop-in-out{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translateZ(-100px);transform:translateZ(-100px)}}@keyframes elementor-headline-drop-in-out{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translateZ(-100px);transform:translateZ(-100px)}}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter{display:inline-block;-webkit-transform:rotateY(180deg);transform:rotateY(180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-headline-text-active .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-blinds-in .6s forwards;animation:elementor-headline-blinds-in .6s forwards}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-blinds-out .6s forwards;animation:elementor-headline-blinds-out .6s forwards}@-webkit-keyframes elementor-headline-blinds-in{0%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}to{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}}@keyframes elementor-headline-blinds-in{0%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}to{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}}@-webkit-keyframes elementor-headline-blinds-out{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}to{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}}@keyframes elementor-headline-blinds-out{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}to{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}}.elementor-headline-animation-type-wave .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter{display:inline-block;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-headline-text-active .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter{opacity:1}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-wave-up .6s forwards;animation:elementor-headline-wave-up .6s forwards}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-wave-down .6s forwards;animation:elementor-headline-wave-down .6s forwards}@-webkit-keyframes elementor-headline-wave-up{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}60%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes elementor-headline-wave-up{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}60%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes elementor-headline-wave-down{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}60%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}@keyframes elementor-headline-wave-down{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}60%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-animation:elementor-headline-slide-in .6s;animation:elementor-headline-slide-in .6s}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-slide-out .6s;animation:elementor-headline-slide-out .6s}@-webkit-keyframes elementor-headline-slide-in{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}60%{opacity:1;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes elementor-headline-slide-in{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}60%{opacity:1;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes elementor-headline-slide-out{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}60%{opacity:0;-webkit-transform:translateX(110%);transform:translateX(110%)}to{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes elementor-headline-slide-out{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}60%{opacity:0;-webkit-transform:translateX(110%);transform:translateX(110%)}to{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-slide .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper{-webkit-transition:width .5s;-o-transition:width .5s;transition:width .5s}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper{overflow:hidden}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text,.elementor-headline-animation-type-wave .elementor-headline-dynamic-text{white-space:nowrap}.elementor-msie .elementor-headline--style-highlight svg{top:auto;left:auto;-webkit-transform:translate(-100%);-ms-transform:translate(-100%);transform:translate(-100%)}assets/css/preview-rtl.css000064400000004413150755004320011633 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-document-handle {
  display: none;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  position: absolute;
  z-index: 100;
  top: 0;
  left: 50%;
  -webkit-transform: translateX(-50%);
      -ms-transform: translateX(-50%);
          transform: translateX(-50%);
  background-color: #fcb92c;
  padding: 5px 10px;
  font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
  font-size: 11px;
  color: #fff;
  border-radius: 0 0 3px 3px;
  cursor: pointer; }
  .elementor-document-handle:before, .elementor-document-handle:after {
    content: '';
    position: absolute;
    border: solid transparent; }
  .elementor-document-handle:before {
    right: calc(100% - 1px);
    border-right-color: #fcb92c;
    border-width: 0 14px 23px 0; }
  .elementor-document-handle:after {
    left: calc(100% - 1px);
    border-left-color: #fcb92c;
    border-width: 0 0 23px 14px; }
  .elementor-document-handle .eicon-edit {
    margin-left: 5px; }

.elementor-editor-active .elementor {
  position: relative; }
  .elementor-editor-active .elementor:not(.elementor-edit-mode):hover {
    -webkit-box-shadow: 0 0 0 1px #fcb92c;
            box-shadow: 0 0 0 1px #fcb92c; }
    .elementor-editor-active .elementor:not(.elementor-edit-mode):hover .elementor-document-handle {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      line-height: initial; }
  .elementor-editor-active .elementor.loading {
    opacity: 0.5; }
  .elementor-editor-active .elementor[data-elementor-type="single"] > .elementor-document-handle {
    -webkit-transform: translateX(-50%) translateY(-100%);
        -ms-transform: translateX(-50%) translateY(-100%);
            transform: translateX(-50%) translateY(-100%);
    border-radius: 3px 3px 0 0; }
    .elementor-editor-active .elementor[data-elementor-type="single"] > .elementor-document-handle:before {
      border-width: 23px 14px 0 0; }
    .elementor-editor-active .elementor[data-elementor-type="single"] > .elementor-document-handle:after {
      border-width: 23px 0 0 14px; }

.elementor-embedded-editor.elementor-location-header .elementor-section-wrap:not(:empty) + #elementor-add-new-section {
  display: none; }
/*# sourceMappingURL=preview-rtl.css.map */assets/css/frontend-msie.min.css000064400001214062150755004320012713 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
@charset "UTF-8";.elementor-bg-transform .elementor-bg{will-change:transform}.elementor-bg-transform-zoom-in:hover .elementor-bg,.elementor-bg-transform-zoom-out .elementor-bg{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.elementor-bg-transform-zoom-out:hover .elementor-bg{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-bg-transform-move-left .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-left:hover .elementor-bg,.elementor-bg-transform-move-right .elementor-bg{-webkit-transform:scale(1.2) translateX(-8%);-ms-transform:scale(1.2) translateX(-8%);transform:scale(1.2) translateX(-8%)}.elementor-bg-transform-move-right:hover .elementor-bg{-webkit-transform:scale(1.2) translateX(8%);-ms-transform:scale(1.2) translateX(8%);transform:scale(1.2) translateX(8%)}.elementor-bg-transform-move-up .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-bg-transform-move-down .elementor-bg,.elementor-bg-transform-move-up:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(-8%);-ms-transform:scale(1.2) translateY(-8%);transform:scale(1.2) translateY(-8%)}.elementor-bg-transform-move-down:hover .elementor-bg{-webkit-transform:scale(1.2) translateY(8%);-ms-transform:scale(1.2) translateY(8%);transform:scale(1.2) translateY(8%)}.elementor-animated-content{--translate:0,0}.elementor-animated-content:hover .elementor-animated-item--grow{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.elementor-animated-content:hover .elementor-animated-item--shrink{-webkit-transform:scale(.85);-ms-transform:scale(.85);transform:scale(.85)}.elementor-animated-content:hover .elementor-animated-item--shrink-contained{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content:hover .elementor-animated-item--enter-zoom-in,.elementor-animated-content:hover .elementor-animated-item--enter-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-in{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in,.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out,.elementor-animated-content:hover .elementor-animated-item--fade-out{opacity:0}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-out{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content:hover .elementor-animated-item--exit-zoom-in{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content:hover .elementor-animated-item--enter-from-bottom,.elementor-animated-content:hover .elementor-animated-item--enter-from-left,.elementor-animated-content:hover .elementor-animated-item--enter-from-right,.elementor-animated-content:hover .elementor-animated-item--enter-from-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content:hover .elementor-animated-item--exit-to-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom{-webkit-transform:translateY(600px);-ms-transform:translateY(600px);transform:translateY(600px)}.elementor-animated-content:hover .elementor-animated-item--exit-to-bottom,.elementor-animated-content:hover .elementor-animated-item--exit-to-left,.elementor-animated-content:hover .elementor-animated-item--exit-to-right,.elementor-animated-content:hover .elementor-animated-item--exit-to-top{opacity:0}.elementor-animated-content:hover .elementor-animated-item--move-right{-webkit-transform:translateX(30px);-ms-transform:translateX(30px);transform:translateX(30px)}.elementor-animated-content:hover .elementor-animated-item--move-left{-webkit-transform:translateX(-30px);-ms-transform:translateX(-30px);transform:translateX(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-up{-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}.elementor-animated-content:hover .elementor-animated-item--move-down{-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px)}.elementor-animated-content:hover .elementor-animated-item--move-contained-right{--translate:8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-left{--translate:-8%,0}.elementor-animated-content:hover .elementor-animated-item--move-contained-top{--translate:0,-8%}.elementor-animated-content:hover .elementor-animated-item--move-contained-bottom{--translate:0,8%}.elementor-animated-content [class^=elementor-animated-item]{will-change:transform,opacity}.elementor-animated-content .elementor-animated-item--shrink-contained{-webkit-transform:scale(1.17);-ms-transform:scale(1.17);transform:scale(1.17)}.elementor-animated-content .elementor-animated-item--enter-zoom-in{-webkit-transform:scale(.2);-ms-transform:scale(.2);transform:scale(.2)}.elementor-animated-content .elementor-animated-item--enter-zoom-out{-webkit-transform:scale(2);-ms-transform:scale(2);transform:scale(2)}.elementor-animated-content .elementor-animated-item--enter-zoom-in,.elementor-animated-content .elementor-animated-item--enter-zoom-out,.elementor-animated-content .elementor-animated-item--fade-in{opacity:0}.elementor-animated-content .elementor-animated-item--exit-zoom-in,.elementor-animated-content .elementor-animated-item--exit-zoom-out,.elementor-animated-content .elementor-animated-item--fade-out{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-animated-content .elementor-animated-item--enter-from-right{-webkit-transform:translateX(1000px);-ms-transform:translateX(1000px);transform:translateX(1000px)}.elementor-animated-content .elementor-animated-item--enter-from-left{-webkit-transform:translateX(-1000px);-ms-transform:translateX(-1000px);transform:translateX(-1000px)}.elementor-animated-content .elementor-animated-item--enter-from-top{-webkit-transform:translateY(-600px);-ms-transform:translateY(-600px);transform:translateY(-600px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom{-webkit-transform:translateY(500px);-ms-transform:translateY(500px);transform:translateY(500px)}.elementor-animated-content .elementor-animated-item--enter-from-bottom,.elementor-animated-content .elementor-animated-item--enter-from-left,.elementor-animated-content .elementor-animated-item--enter-from-right,.elementor-animated-content .elementor-animated-item--enter-from-top{opacity:0}.elementor-animated-content .elementor-animated-item--exit-to-bottom,.elementor-animated-content .elementor-animated-item--exit-to-left,.elementor-animated-content .elementor-animated-item--exit-to-right,.elementor-animated-content .elementor-animated-item--exit-to-top{opacity:1;-webkit-transform:translateY(0) translateX(0);-ms-transform:translateY(0) translateX(0);transform:translateY(0) translateX(0)}.elementor-animated-content .elementor-animated-item--move-contained-bottom,.elementor-animated-content .elementor-animated-item--move-contained-left,.elementor-animated-content .elementor-animated-item--move-contained-right,.elementor-animated-content .elementor-animated-item--move-contained-top{-webkit-transform:scale(1.2) translate(var(--translate));-ms-transform:scale(1.2) translate(var(--translate));transform:scale(1.2) translate(var(--translate))}.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover{outline:1px solid #fec449}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings{background-image:-webkit-gradient(linear,left bottom,left top,from(#feb416),to(#fec449));background-image:-webkit-linear-gradient(bottom,#feb416,#fec449);background-image:-o-linear-gradient(bottom,#feb416,#fec449);background-image:linear-gradient(0deg,#feb416,#fec449)}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover{background-color:#feb416}.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save{display:none}body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;width:100%;padding:0}body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;padding:0}.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form){margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .quantity .qty{vertical-align:top;margin-right:0}.woocommerce div.product.elementor .quantity+.button{margin-left:10px}.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input{height:100%}.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}@media (max-width:1024px){.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}@media (max-width:767px){.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:0}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-right:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button{background-color:#5bc0de}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button{background-color:#5cb85c}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button{background-color:#f0ad4e}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button{background-color:#d9534f}.elementor-widget-wc-add-to-cart .quantity{display:inline-block}.elementor-widget-wc-add-to-cart.elementor-align-center form.cart{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-wc-add-to-cart.elementor-align-left form.cart,.elementor-widget-wc-add-to-cart.elementor-align-right form.cart{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor ul.tabs:before{position:static;content:none;width:auto;bottom:auto;left:auto;border-bottom:0;z-index:auto}.woocommerce div.product.elementor ul.tabs{margin:0}.woocommerce div.product.elementor ul.tabs li{padding:0}.woocommerce div.product.elementor ul.tabs li a{padding:.8em 1.2em;line-height:1}.woocommerce div.product.elementor ul.tabs li:after,.woocommerce div.product.elementor ul.tabs li:before{border:0;position:static;bottom:auto;width:auto;height:auto;content:none;-webkit-box-sizing:border-box;box-sizing:border-box}.woocommerce div.product.elementor .woocommerce-tabs .panel{padding:20px;border-radius:0;border-width:0;border-top:1px solid #d3ced2;-webkit-box-shadow:none;box-shadow:none;margin:-1px 0 0}.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins{display:block}.elementor-widget-woocommerce-product-meta .detail-container{position:relative}.elementor-widget-woocommerce-product-meta .detail-container:after{position:absolute;bottom:0;left:0;width:100%}.elementor-widget-woocommerce-product-meta .detail-label{font-weight:700}.elementor-woo-meta--view-inline .product_meta{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-woo-meta--view-inline .product_meta .detail-container:after{width:auto;left:auto;right:auto;position:absolute;height:100%;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;right:-8px}.elementor-woo-meta--view-table .product_meta{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-woo-meta--view-table .product_meta,.elementor-woo-meta--view-table .product_meta .detail-container{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-woo-meta--view-table .product_meta .detail-label{min-width:108px}.elementor-woo-meta--view-stacked .product_meta .detail-container{display:block}.woocommerce div.product.elementor .woocommerce-product-rating{margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.woocommerce div.product.elementor .star-rating{margin-top:0}.elementor-product-rating--align-left .woocommerce-product-rating{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-product-rating--align-right .woocommerce-product-rating{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-product-rating--align-center .woocommerce-product-rating{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link{margin-left:auto}.elementor-products-grid ul.products.elementor-grid{display:grid;margin:0;grid-column-gap:20px;grid-row-gap:40px}.elementor-products-grid ul.products.elementor-grid:after,.elementor-products-grid ul.products.elementor-grid:before{content:none;display:none}.elementor-products-grid ul.products.elementor-grid li.product{width:auto;padding:0;margin:0;float:none}.elementor-products-grid ul.products.elementor-grid li.product .onsale{padding:0;display:none}.elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link{display:block;position:relative}.elementor-products-grid:not(.show-heading-yes) .products>h2{display:none}.elementor-products-grid nav.woocommerce-pagination{margin-top:40px}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul{border:0}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li{border-right:0;border-left:0}.elementor-product-loop-item--align-left ul.products li.product .star-rating{margin-right:auto}.elementor-product-loop-item--align-right ul.products li.product .star-rating{margin-left:auto}.elementor-product-loop-item--align-center ul.products li.product .star-rating{margin-right:auto;margin-left:auto}.woocommerce .elementor-element.elementor-products-grid ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product{width:auto}@media (min-width:1025px){.elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products{grid-template-columns:repeat(2,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products{grid-template-columns:repeat(3,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products{grid-template-columns:repeat(4,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products{grid-template-columns:repeat(5,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products{grid-template-columns:repeat(6,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products{grid-template-columns:repeat(7,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products{grid-template-columns:repeat(8,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products{grid-template-columns:repeat(9,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products{grid-template-columns:repeat(10,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products{grid-template-columns:repeat(11,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products{grid-template-columns:repeat(12,1fr)}}@media (max-width:1024px){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(3,1fr)}}@media (max-width:767px){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(2,1fr)}}.elementor.product .woocommerce-product-gallery__trigger+.woocommerce-product-gallery__wrapper{overflow:hidden}.woocommerce .elementor-widget-woocommerce-product-images span.onsale{padding:0}.elementor-menu-cart__wrapper{text-align:var(--main-alignment,left)}.elementor-menu-cart__toggle_wrapper{display:inline-block;position:relative}.elementor-menu-cart__toggle{display:inline-block}.elementor-menu-cart__toggle .elementor-button{background-color:var(--toggle-button-background-color,transparent);color:var(--toggle-button-text-color,#818a91);border:var(--toggle-button-border-width,1px) var(--toggle-button-border-type,solid) var(--toggle-button-border-color,#818a91);border-radius:var(--toggle-button-border-radius,0);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--toggle-icon-padding,12px 24px)}.elementor-menu-cart__toggle .elementor-button:hover{color:var(--toggle-button-hover-text-color,#818a91);background-color:var(--toggle-button-hover-background-color,transparent);border-color:var(--toggle-button-hover-border-color,#818a91)}.elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon{color:var(--toggle-button-icon-hover-color,#818a91)}.elementor-menu-cart__toggle .elementor-button-text{margin-right:.3em}.elementor-menu-cart__toggle .elementor-button-icon{position:relative;-webkit-transition:color .1s;-o-transition:color .1s;transition:color .1s;color:var(--toggle-button-icon-color,#818a91);font-size:var(--toggle-icon-size,inherit)}.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:block;position:absolute;min-width:1.6em;height:1.6em;line-height:1.5em;top:-.7em;right:-.7em;border-radius:100%;color:var(--items-indicator-text-color,#fff);background-color:var(--items-indicator-background-color,#d9534f);text-align:center;font-size:10px}.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:inline-block;font-weight:400}.elementor-menu-cart__container{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);overflow:hidden;position:fixed;z-index:9998;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,.25);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s;text-align:left}.elementor-menu-cart__main{position:fixed;left:var(--side-cart-alignment-left,auto);right:var(--side-cart-alignment-right,0);-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);top:0;bottom:0;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;font-size:14px;min-height:200px;width:350px;max-width:100%;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;padding:var(--cart-padding,20px 30px);background-color:var(--cart-background-color,#fff);-webkit-box-shadow:0 0 20px rgba(0,0,0,.2);box-shadow:0 0 20px rgba(0,0,0,.2);border-style:var(--cart-border-style,none);border-color:var(--cart-border-color,initial);border-radius:var(--cart-border-radius,0);margin-top:var(--mini-cart-spacing,0)}.elementor-menu-cart__main,.elementor-menu-cart__main .widget_shopping_cart_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-menu-cart__main .widget_shopping_cart_content{height:100%}.elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message{color:var(--empty-message-color,inherit);text-align:var(--empty-message-alignment,left)}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{background-color:transparent;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button{display:none}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{overflow:hidden;opacity:0;-webkit-transform:var(--side-cart-alignment-transform,translateX(100%));-ms-transform:var(--side-cart-alignment-transform,translateX(100%));transform:var(--side-cart-alignment-transform,translateX(100%))}.elementor-menu-cart__close-button{width:var(--cart-close-icon-size,25px);height:var(--cart-close-icon-size,25px);position:relative;margin:0 0 20px;-ms-flex-item-align:end;align-self:flex-end;cursor:pointer;display:inline-block;font-family:eicons;font-size:20px;line-height:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:after,.elementor-menu-cart__close-button:before{content:"";position:absolute;height:3px;width:100%;top:50%;left:0;margin-top:-1px;background:var(--cart-close-button-color,#818a91);border-radius:1px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:hover:after,.elementor-menu-cart__close-button:hover:before{background:var(--cart-close-button-hover-color,#818a91)}.elementor-menu-cart__close-button:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__close-button:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__products{max-height:calc(100vh - 250px);overflow:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.elementor-menu-cart__product{display:grid;grid-template-columns:28% auto;grid-template-rows:var(--price-quantity-position--grid-template-rows,auto auto);position:relative;border-width:0;border-bottom:var(--divider-width,1px) var(--divider-style,solid) var(--divider-color,#d4d4d4)}.elementor-menu-cart__product .variation{display:grid;grid-template-columns:-webkit-max-content auto;grid-template-columns:max-content auto;margin:10px 0}.elementor-menu-cart__product .variation dt{grid-column-start:1}.elementor-menu-cart__product .variation dd{grid-column-start:2;-webkit-margin-start:5px;margin-inline-start:5px}.elementor-menu-cart__product .variation dd p{margin-bottom:0}.elementor-menu-cart__product-image{grid-row-start:1;grid-row-end:3;width:100%}.elementor-menu-cart__product-image a,.elementor-menu-cart__product-image img{display:block}.elementor-menu-cart__product-name{grid-column-start:2;grid-column-end:3;margin:0}.elementor-menu-cart__product-name a{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-price{grid-column-start:2;grid-column-end:3;-ms-flex-item-align:var(--price-quantity-position--align-self,end);align-self:var(--price-quantity-position--align-self,end);font-weight:300;color:var(--product-price-color,#d4d4d4)}.elementor-menu-cart__product-name,.elementor-menu-cart__product-price{font-size:14px;padding-left:20px}.elementor-menu-cart__product-remove{color:#818a91;width:var(--remove-item-button-size,22px);height:var(--remove-item-button-size,22px);border-radius:var(--remove-item-button-size,22px);border:1px solid var(--remove-item-button-color,#d4d4d4);text-align:center;overflow:hidden;position:absolute;right:0;bottom:20px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:hover{border:1px solid var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:hover:after,.elementor-menu-cart__product-remove:hover:before{background:var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:after,.elementor-menu-cart__product-remove:before{content:"";position:absolute;height:1px;width:50%;top:50%;left:25%;margin-top:-1px;background:var(--remove-item-button-color,#d4d4d4);z-index:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__product-remove:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__product-remove>a{display:block;z-index:2;width:100%;height:100%;overflow:hidden;opacity:0;position:absolute}.elementor-menu-cart__product-remove>a.remove_from_cart_button{display:var(--remove-from-cart-button,block)}.elementor-menu-cart__product-remove>a.elementor_remove_from_cart_button{display:var(--elementor-remove-from-cart-button,none)}.elementor-menu-cart__product:last-child{border:none}.elementor-menu-cart__footer-buttons,.elementor-menu-cart__product:not(:first-of-type),.elementor-menu-cart__subtotal{padding-top:var(--product-divider-gap,20px)}.elementor-menu-cart__product{padding-right:30px}.elementor-menu-cart__product,.elementor-menu-cart__subtotal{padding-bottom:var(--product-divider-gap,20px)}.elementor-menu-cart__subtotal{font-size:20px;text-align:var(--menu-cart-subtotal-text-align,center);font-weight:600;color:var(--menu-cart-subtotal-color,inherit);border-left:var(--subtotal-divider-left-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-bottom:var(--subtotal-divider-bottom-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-right:var(--subtotal-divider-right-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-top:var(--subtotal-divider-top-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4)}.elementor-menu-cart__footer-buttons{font-size:20px;text-align:var(--cart-footer-buttons-alignment-text-align,center);display:var(--cart-footer-buttons-alignment-display,grid);grid-template-columns:var(--cart-footer-layout,1fr 1fr);margin-top:var(--cart-buttons-position-margin,0);grid-column-gap:var(--space-between-buttons,10px);grid-row-gap:var(--space-between-buttons,10px)}.elementor-menu-cart__footer-buttons .elementor-button{display:inline-block;border-radius:var(--cart-footer-buttons-border-radius,0);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.elementor-menu-cart__footer-buttons .elementor-button--view-cart{display:var(--view-cart-button-display,inline-block);color:var(--view-cart-button-text-color,#fff);padding:var(--view-cart-button-padding,15px);background-color:var(--view-cart-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover{color:var(--view-cart-button-hover-text-color,#fff);background-color:var(--view-cart-button-hover-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout{display:var(--checkout-button-display,inline-block);color:var(--checkout-button-text-color,#fff);padding:var(--checkout-button-padding,15px);background-color:var(--checkout-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:var(--checkout-button-hover-background-color,#818a91)}@media (max-width:767px){.elementor-menu-cart__footer-buttons .elementor-button{padding-left:10px;padding-right:10px}}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text{display:none}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before{content:none}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e3"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e4"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e5"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e6"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e7"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e8"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e9"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8ea"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8eb"}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product{padding-left:0;padding-right:0;grid-template-columns:25% auto}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove{display:none}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove{top:0;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove{top:20px;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove{-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);bottom:50%}.elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove{top:auto;bottom:20px}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{position:absolute;z-index:89;width:auto;height:auto;overflow:visible;top:100%;bottom:auto;background:none;min-width:330px;left:0;right:auto;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main{width:auto;height:auto;position:relative;top:auto;bottom:auto;right:auto;left:auto;overflow:visible;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}@media (max-width:767px){.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{min-width:300px}}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{opacity:0;-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px)}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown{opacity:1}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container{z-index:9998}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart{z-index:89}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container{display:none}.elementor-widget-woocommerce-checkout-page{background-color:transparent;font-family:Roboto,sans-serif;font-size:14px;line-height:21px;color:#818a91}.elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container{grid-template-columns:auto}.elementor-widget-woocommerce-checkout-page ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page table tbody tr:hover>td,.elementor-widget-woocommerce-checkout-page table tbody tr:hover>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .e-description{color:var(--sections-descriptions-color,#818a91);padding-bottom:var(--sections-descriptions-spacing,0);font-size:14px;font-weight:400}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section{margin-bottom:24px}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title{text-align:var(--login-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge{margin-top:var(--sections-secondary-title-spacing,24px);margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor{margin-top:var(--sections-secondary-title-spacing,24px)}.elementor-widget-woocommerce-checkout-page .e-coupon-box{margin-top:24px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .e-login-wrap-start{-webkit-box-flex:75%;-ms-flex:75%;flex:75%}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{-webkit-box-flex:20%;-ms-flex:20%;flex:20%;text-align:right}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:block}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{text-align:left;margin-top:15px}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label{display:none}}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{margin-bottom:0;font-size:12px}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{font-size:11px}}.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:90%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:auto}}.elementor-widget-woocommerce-checkout-page .e-checkout__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:56% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,24px);grid-row-gap:var(--sections-margin,24px)}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-checkout__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title{color:var(--sections-secondary-title-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge{text-align:var(--coupon-title-alignment,left)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address{margin-top:13px;padding-left:var(--shipping-heading-padding-start,30px)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address span{font-weight:400}.elementor-widget-woocommerce-checkout-page a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row{padding-left:var(--forms-columns-gap-padding,0);padding-right:var(--forms-columns-gap-padding,0);margin-left:var(--forms-columns-gap-margin,0);margin-right:var(--forms-columns-gap-margin,0)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);font-size:14px;border:none;font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-checkout-page .woocommerce .create-account,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row{margin-bottom:0!important}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input,.elementor-widget-woocommerce-checkout-page .woocommerce .input-radio{vertical-align:middle}.elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span{position:relative;top:2px;color:var(--sections-checkboxes-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label,.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{display:inline}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#6f6f6f);border-radius:var(--forms-buttons-border-radius,3px);padding:1rem;border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover{color:var(--forms-buttons-hover-text-color,#6f6f6f);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{margin-right:1%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{width:100%;margin-right:0;margin-bottom:15px}}.elementor-widget-woocommerce-checkout-page .woocommerce-info{border-top-color:transparent;background-color:transparent;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p{font-weight:400;font-size:12px}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info{font-weight:400;margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,.elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment{background:var(--sections-background-color,#fff);border-radius:var(--sections-border-radius,3px);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 24px 0);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{display:var(--additional-information-display,none)}@media (min-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text{color:var(--sections-messages-color,#818a91);font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p{margin-top:25px}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1{margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2{padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading{text-align:var(--order-review-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table{margin-bottom:0;border:0;font-size:14px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th{padding-top:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td{color:#000}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity{font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th{color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr{border:0;padding-left:0;padding-bottom:15px;padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr{padding-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td{font-weight:400;color:var(--order-summary-items-color,#000);border-bottom:var(--order-summary-items-divider-weight,0) solid var(--order-summary-items-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name{padding-right:40px;max-width:150px}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total{vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th{padding-top:var(--order-summary-rows-gap-top,15px);padding-bottom:var(--order-summary-rows-gap-bottom,15px)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th{color:var(--order-summary-totals-color,#818a91);vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th{border-top:var(--order-summary-totals-divider-weight,0) solid var(--order-summary-totals-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td{max-width:70px}.elementor-widget-woocommerce-checkout-page .woocommerce h3{font-size:14px;font-weight:700;margin-top:0;margin-bottom:var(--sections-title-spacing,30px);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row>span{font-weight:400;font-size:14px;margin-bottom:3px;color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:48%}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3{text-align:var(--billing-details-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row{margin-bottom:var(--forms-rows-gap,5px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child{margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login{margin-top:-8px;z-index:999;background:#fff;border-top-width:0;position:relative;margin-bottom:0;color:#818a91}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:100%}}.elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:85%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:35%}}.elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3{background:var(--additional-fields-title-alignment,left)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address{margin-bottom:var(--sections-margin,20px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment{margin-top:24px;padding:15px 25px 25px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods{border-bottom:none;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li{line-height:21px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{padding-left:15px;font-size:12px}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{float:none;font-size:11px;padding-left:10px}}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img{width:55px}}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0;margin-bottom:0;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order{background-color:#5bc0de;width:var(--purchase-button-width,auto);float:none;color:var(--purchase-button-normal-text-color,#fff);min-height:auto;padding:var(--purchase-button-padding,1em 1em);border-radius:var(--purchase-button-border-radius,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover{background-color:#5bc0de;color:var(--purchase-button-hover-text-color,#fff);border-color:var(--purchase-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--purchase-button-hover-transition-duration,.3s);-o-transition-duration:var(--purchase-button-hover-transition-duration,.3s);transition-duration:var(--purchase-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2{width:auto;float:none}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:grid;grid-template-columns:auto auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:right}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:left}}.elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field{margin-bottom:10px}.elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000);font-size:14px;font-style:normal;text-transform:none;letter-spacing:normal;text-decoration:none;line-height:21px}.e-woo-select2-wrapper .select2-results__option,.e-woo-select2-wrapper .select2-results__option:focus{color:#818a91}.elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart table tbody tr:hover>td,.elementor-widget-woocommerce-cart table tbody tr:hover>th{background-color:inherit}.elementor-widget-woocommerce-cart .e-clear{overflow:hidden;height:0;width:0}.elementor-widget-woocommerce-cart .e-cart-section{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 30px 0);border-radius:var(--sections-border-radius,3px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4)}@media (min-width:1024px){.elementor-widget-woocommerce-cart .e-cart-section:last-child{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-cart .e-cart-content{color:var(--sections-descriptions-color,#818a91);font-size:15px;font-weight:400;line-height:23px;letter-spacing:0}.elementor-widget-woocommerce-cart .e-cart__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:59% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,30px);grid-row-gap:var(--sections-margin,30px)}@media (max-width:1024px){.elementor-widget-woocommerce-cart .e-cart__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart .select2-container{margin-bottom:4px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-cart .woocommerce{font-family:Roboto,sans-serif}.elementor-widget-woocommerce-cart .woocommerce button.button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#818a91);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,.88rem 2rem);width:var(--forms-buttons-width,auto);border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button:hover{color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]{padding:var(--forms-buttons-padding,.88rem 2rem);color:var(--forms-buttons-normal-text-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover{background-color:var(--forms-buttons-hover-background-color,#fff);color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li input{vertical-align:middle}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form{margin-top:var(--sections-descriptions-spacing,15px)}.elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination{color:var(--sections-descriptions-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th{display:none}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td{text-align:left!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before{width:100%;margin-bottom:10px}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td{text-align:right!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td:before{content:attr(data-title);font-weight:700;float:left}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{text-align:var(--totals-title-alignment,left)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td{padding-top:var(--totals-rows-gap-top,12px);padding-bottom:var(--totals-rows-gap-bottom,9px)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before{color:var(--totals-color,#818a91);font-weight:700}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td{border-top-color:var(--totals-divider-color,#818a91);border-top-width:var(--totals-divider-weight,0)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row{margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-cart .woocommerce .product-name a{color:var(--product-link-normal-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .product-name a:hover{color:var(--product-link-hover-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .form-row{padding:3px 0;margin:0}.elementor-widget-woocommerce-cart .woocommerce .input-text,.elementor-widget-woocommerce-cart .woocommerce select{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,3px);border:none;padding:var(--forms-fields-padding,16px);font-size:14px}.elementor-widget-woocommerce-cart .woocommerce .input-text::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,.elementor-widget-woocommerce-cart .woocommerce select::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus,.elementor-widget-woocommerce-cart .woocommerce select:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,transparent);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-webkit-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-moz-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-ms-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text.qty{background-color:transparent;color:var(--order-summary-color,#000);border:var(--order-summary-quantity-border-weight,1px) solid var(--order-summary-quantity-border-color,#d4d4d4);border-radius:3px;padding:1px 2px;text-align:left;font-size:14px;min-height:28px;max-height:28px}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout{padding-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button{padding:var(--checkout-button-padding,15px 1em);width:var(--checkout-button-width,auto);font-size:15px;text-align:center;color:var(--checkout-button-normal-text-color,#fff);background-color:#5bc0de;border-radius:var(--checkout-button-border-radius,3px);min-height:auto;margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:#5bc0de;border-color:var(--checkout-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--checkout-button-hover-transition-duration,.3s);-o-transition-duration:var(--checkout-button-hover-transition-duration,.3s);transition-duration:var(--checkout-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .remove{background:transparent;color:var(--order-summary-remove-icon-normal-color,#000)!important;width:auto}.elementor-widget-woocommerce-cart .woocommerce .remove:hover{background:transparent;color:var(--order-summary-remove-icon-hover-color,#5bc0de)!important}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals{float:none;width:100%}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td{padding-left:0}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{float:right;width:100%}.elementor-widget-woocommerce-cart .woocommerce .coupon .form-row{padding:0}.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{-webkit-box-flex:2;-ms-flex:2;flex:2;padding-right:30px}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{padding-right:0}}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-end{-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:block}}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon{margin:var(--sections-margin,0)}.elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code{width:100%;margin-right:0;margin-bottom:15px}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:left;font-size:14px;font-weight:700}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:none;width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table th,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions{padding:16px 0 0}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a{display:inline-block}.elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child{display:var(--update-cart-automatically-display,table-row)}.elementor-widget-woocommerce-cart .woocommerce table.cart{margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce table.cart img{width:55px;height:auto;display:block}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-top:var(--order-summary-rows-gap-top,20px);padding-right:20px;padding-bottom:var(--order-summary-rows-gap-bottom,20px);padding-left:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td span{color:var(--order-summary-color,#000);font-size:14px;font-weight:400}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top:var(--order-summary-items-divider-weight,1px) solid var(--order-summary-items-divider-color,#d4d4d4)}@media (max-width:768px){.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top-width:0}}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove{padding-left:0;padding-right:0}@media (min-width:767px){.elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td{border-top:none}}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove{position:relative}.elementor-widget-woocommerce-cart .woocommerce table.cart.product-name{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{border-top-width:var(--order-summary-items-divider-weight,1px);border-top-color:var(--order-summary-items-divider-color,#d4d4d4)}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}}@media (max-width:768px){.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-left:0;padding-right:0}}@media (max-width:767px){.elementor-widget-woocommerce-cart .woocommerce table.cart{padding:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{padding:16px 28px}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-left:0;padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions{padding:0}}.elementor-widget-woocommerce-cart .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,.elementor-widget-woocommerce-cart .woocommerce .cart th{font-size:14px;font-weight:700;margin-top:0;padding:0 20px 8px 0}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{margin-bottom:var(--sections-title-spacing,1rem);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart th{padding-bottom:var(--order-summary-title-spacing,8px);color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart td:before{color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button:after{display:none}.elementor-widget-woocommerce-cart .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000)}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td{padding-left:0}}.e-woo-select2-wrapper .select2-results__option{font-family:Roboto,sans-serif;font-size:14px;color:var(--forms-fields-normal-color,#818a91)}.e-woo-select2-wrapper .select2-results__option:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account{font-family:Roboto,sans-serif;color:#818a91}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table{border:none;margin-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{background-color:var(--sections-background-color,#fff)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px 3px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,.elementor-widget-woocommerce-my-account .e-my-account-tab address{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content{border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper{padding:0;border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details{margin-bottom:40px}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px 3px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content>div>p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:var(--forms-fields-normal-background-color,#f7f7f7);border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:var(--forms-fields-focus-background-color,#f7f7f7);border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below{background-color:var(--forms-fields-normal-background-color,#f7f7f7)}.elementor-widget-woocommerce-my-account .woocommerce ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce-message{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce address{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover,.elementor-widget-woocommerce-my-account .woocommerce a.button:hover{background-color:initial}.elementor-widget-woocommerce-my-account .woocommerce em{font-size:12px;color:var(--login-messages-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .form-row{padding-left:var(--forms-columns-gap-padding-left,0);padding-right:var(--forms-columns-gap-padding-right,0);margin-left:var(--forms-columns-gap-margin-left,0);margin-right:var(--forms-columns-gap-margin-right,0);margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-my-account .woocommerce .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,0)}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,.elementor-widget-woocommerce-my-account .woocommerce .form-row select{color:var(--forms-fields-normal-color,#818a91);border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);background:#f7f7f7;border:none;font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,.elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text{margin-bottom:15px;color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword{font-size:12px;margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:50%}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first{width:100%}.elementor-widget-woocommerce-my-account .woocommerce .login,.elementor-widget-woocommerce-my-account .woocommerce .register,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px);font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .login .button,.elementor-widget-woocommerce-my-account .woocommerce .register .button,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3){margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){margin-top:10px;font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox{vertical-align:middle}.elementor-widget-woocommerce-my-account .woocommerce p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span{color:var(--checkboxes-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce td,.elementor-widget-woocommerce-my-account .woocommerce th,.elementor-widget-woocommerce-my-account .woocommerce tr{border:none}.elementor-widget-woocommerce-my-account .woocommerce h2,.elementor-widget-woocommerce-my-account .woocommerce h3{color:var(--typography-section-titles-color,#000);margin-top:0;margin-bottom:var(--section-title-spacing,45px);font-weight:400}.elementor-widget-woocommerce-my-account .woocommerce strong{color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta,.elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label{color:var(--variations-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .product-quantity{font-weight:400;color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{float:left;width:25%}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul{-webkit-padding-start:0;padding-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li{list-style-type:none;margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li:after{content:"";display:block;width:100%;background-color:var(--tabs-divider-color,#818a91);height:var(--tabs-divider-weight,0);position:relative;top:calc(var(--tabs-spacing, 2px) / 2)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a{color:var(--tabs-active-color,#5bc0de);background:#eceeef;border-color:var(--tabs-active-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{font-style:normal;font-weight:700;font-size:14px;color:var(--tabs-normal-color,#818a91);display:block;padding:var(--tabs-padding,12px 20px);text-align:var(--tabs-alignment,start);background:#f7f7f7;border-radius:var(--tabs-border-radius,0);border:0 var(--tabs-border-type,solid) var(--tabs-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover{color:var(--tabs-hover-color,#5bc0de);border-color:var(--tabs-hover-border-color,transparent)}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{padding:var(--tabs-padding,10px)}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard{margin-top:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout:after{display:none}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{float:right;width:75%;padding:0;padding-left:var(--tab-content-spacing,6%)}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{width:100%;padding:var(--tab-content-spacing,6%) 0 0 0}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type{margin-top:30px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark{background-color:transparent;font-weight:700;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child th,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child th{border-top:0}.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th{border-top:0;padding-left:0;padding-top:0;padding-bottom:var(--tables-titles-spacing,9px)}.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>th,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>th{background-color:transparent;padding-left:0;padding-top:var(--order-summary-rows-gap-top,9px);padding-bottom:var(--order-summary-rows-gap-bottom,9px);color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table td,.elementor-widget-woocommerce-my-account .woocommerce .shop_table th{border-top:var(--tables-divider-border-width,1px) var(--tables-divider-border-type,solid) var(--tables-divider-border-color,#d4d4d4)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th,.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span{color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td,.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th{padding-left:0;color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td{border-top:none;padding-top:0}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button{background:transparent;border:2px solid #5bc0de;border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);border-radius:var(--tables-button-border-radius,3px);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);margin-top:0;margin-bottom:0;padding:var(--tables-button-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-Address .title h3,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3{float:none}.elementor-widget-woocommerce-my-account .woocommerce-Address address,.elementor-widget-woocommerce-my-account .woocommerce-Addresses address{padding:var(--sections-padding,45px 30px 16px 30px)}.elementor-widget-woocommerce-my-account .woocommerce-Address .edit,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit{float:left;position:absolute;margin-left:var(--edit-link-margin-start,30px);margin-top:var(--edit-link-margin-top,10px)}.elementor-widget-woocommerce-my-account .woocommerce .u-columns{margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset{border:none;padding:0;-webkit-margin-start:0;margin-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend{font-weight:700;padding:20px 0;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px);margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-pagination{padding:16px 0}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below,.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below{padding-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td{vertical-align:top;line-height:unset}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{float:none;width:100%}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block}.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation,.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{list-style:none;padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--tabs-container-justify-content,space-between);-ms-flex-pack:var(--tabs-container-justify-content,space-between);justify-content:var(--tabs-container-justify-content,space-between)}@media (max-width:767px){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{display:block}}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block;width:var(--tab-width,100%);padding:0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);margin:0;border-right:var(--tabs-divider-weight,0) solid var(--tabs-divider-color,#818a91)}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:after{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type{padding-left:0}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type{padding-right:0;border-right-width:0}@media (max-width:767px){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}}.e-my-account-tabs-horizontal .woocommerce-MyAccount-content{float:none;width:100%;padding:var(--tab-content-spacing,50px) 0 0 0}.elementor-editor-active .elementor-widget-container,.elementor-editor-preview .elementor-widget-container{min-height:1px}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a{pointer-events:none}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button{pointer-events:none;opacity:.3}.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type){display:none}.product .count{background-color:inherit}.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2{display:none}.woocommerce div.product.elementor form.cart div.product-addon{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-negative:0;flex-shrink:0}.e-sticky-right-column--active{position:-webkit-sticky;position:sticky;top:0}.elementor-theme-builder-content-area{height:400px}.elementor-location-footer:before,.elementor-location-header:before{content:"";display:table;clear:both}.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post{display:block}.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid{color:#d4d4d4;border:1px solid;border-right:none;border-left:none;padding-top:10px;padding-bottom:10px}.elementor-post-navigation-borders-yes .elementor-post-navigation__separator{height:100%;width:1px;margin:0 auto;background-color:#d4d4d4}.elementor-post-navigation{overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-post-navigation .post-navigation__arrow-wrapper{color:#d4d4d4}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev{font-size:30px;padding-right:15px}.elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next{font-size:30px;padding-left:15px}.elementor-post-navigation .post-navigation__arrow-wrapper i{-webkit-transform:translateY(-5%);-ms-transform:translateY(-5%);transform:translateY(-5%)}.elementor-post-navigation .elementor-post-navigation__link__next,.elementor-post-navigation .elementor-post-navigation__link__prev{overflow:hidden}.elementor-post-navigation .elementor-post-navigation__link a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__prev--label{text-transform:uppercase;font-size:.8em}.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--title{font-size:.7em}.elementor-post-navigation .post-navigation__next--label,.elementor-post-navigation .post-navigation__next--title,.elementor-post-navigation .post-navigation__prev--label,.elementor-post-navigation .post-navigation__prev--title{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation span.elementor-post-navigation__link__next{text-align:right}.elementor-post-navigation span.elementor-post-navigation__link__next,.elementor-post-navigation span.elementor-post-navigation__link__prev{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-post-navigation .elementor-grid{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-post-navigation .elementor-post-navigation__link{width:calc(50% - (1px / 2));white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-post-navigation .elementor-post-navigation__separator-wrapper{text-align:center}.elementor-post-navigation .elementor-post-navigation__next{text-align:right}.elementor-post-navigation .elementor-post-navigation__next a{float:right}.elementor-search-form{display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s}.elementor-search-form .e-font-icon-svg-container{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-search-form button,.elementor-search-form input[type=search]{margin:0;border:0;padding:0;display:inline-block;vertical-align:middle;white-space:normal;background:none;line-height:1;min-width:0;font-size:15px;-webkit-appearance:none;-moz-appearance:none}.elementor-search-form button:focus,.elementor-search-form input[type=search]:focus{outline:0;color:inherit}.elementor-search-form button{background-color:#818a91;font-size:var(--e-search-form-submit-icon-size,16px);color:#fff;border-radius:0}.elementor-search-form__container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;overflow:hidden;border:0 solid transparent;min-height:50px}.elementor-search-form__container:not(.elementor-search-form--full-screen){background:#eceeef}.elementor-search-form__input{-ms-flex-preferred-size:100%;flex-basis:100%;color:#55595c;-webkit-transition:color .2s;-o-transition:color .2s;transition:color .2s}.elementor-search-form__input::-webkit-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input:-moz-placeholder,.elementor-search-form__input::-moz-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::-ms-input-placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__input::placeholder{color:inherit;font-family:inherit;opacity:.6}.elementor-search-form__submit{-webkit-transition:color .2s,background .2s;-o-transition:color .2s,background .2s;transition:color .2s,background .2s;font-size:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form__submit svg{fill:var(--e-search-form-submit-text-color,#fff);width:var(--e-search-form-submit-icon-size,16px);height:var(--e-search-form-submit-icon-size,16px)}.elementor-search-form .elementor-search-form__submit,.elementor-search-form .elementor-search-form__submit:hover{color:var(--e-search-form-submit-text-color,#fff);border:none;border-radius:0}.elementor-search-form--button-type-text .elementor-search-form__submit{-ms-flex-negative:0;flex-shrink:0}.elementor-search-form--skin-minimal .elementor-search-form__icon{opacity:.6;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;color:#55595c;fill:#55595c;font-size:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-minimal .elementor-search-form__icon svg{width:var(--e-search-form-icon-size-minimal,15px);height:var(--e-search-form-icon-size-minimal,15px)}.elementor-search-form--skin-full_screen .elementor-search-form input[type=search].elementor-search-form__input{font-size:50px;text-align:center;border:solid #fff;border-width:0 0 1px;line-height:1.5;color:#fff}.elementor-search-form--skin-full_screen .elementor-search-form__toggle{display:inline-block;cursor:pointer;vertical-align:middle;color:var(--e-search-form-toggle-color,#494c4f);font-size:var(--e-search-form-toggle-size,33px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i{position:relative;display:block;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;width:var(--e-search-form-toggle-size,33px);height:var(--e-search-form-toggle-size,33px);background-color:var(--e-search-form-toggle-background-color,rgba(0,0,0,.05));border:var(--e-search-form-toggle-border-width,0) solid var(--e-search-form-toggle-color,#494c4f);border-radius:var(--e-search-form-toggle-border-radius,3px)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before{font-size:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg,.elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg{fill:var(--e-search-form-toggle-color,#494c4f);width:var(--e-search-form-toggle-icon-size,.55em);height:var(--e-search-form-toggle-icon-size,.55em)}.elementor-search-form--skin-full_screen .elementor-search-form__container{-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:fixed;z-index:9998;top:0;left:0;right:0;bottom:0;height:100vh;padding:0 15%;background-color:rgba(0,0,0,.8)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen){overflow:hidden;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button{display:none}.elementor-author-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-author-box__avatar{-ms-flex-negative:0;flex-shrink:0;margin-right:25px}.elementor-author-box__avatar img{width:100px;border-radius:500px;-o-object-fit:cover;object-fit:cover}.elementor-author-box__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:17px}.elementor-author-box__name{font-size:24px;margin-bottom:5px}.elementor-author-box__bio,.elementor-author-box__bio p{margin-bottom:.8em}.elementor-author-box__bio p:last-of-type{margin-bottom:0}.elementor-author-box--layout-image-left .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-author-box--layout-image-left .elementor-author-box__avatar{margin-left:0;margin-right:25px}.elementor-author-box--layout-image-right .elementor-author-box{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-author-box--layout-image-right .elementor-author-box__avatar{margin-right:0;margin-left:25px}.elementor-author-box--layout-image-above .elementor-author-box{display:block}.elementor-author-box--layout-image-above .elementor-author-box__avatar{margin:0 auto 15px;display:inline-block}.elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar{margin-left:0}.elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar{margin-right:0}.elementor-author-box--align-left .elementor-author-box{text-align:left}.elementor-author-box--align-right .elementor-author-box{text-align:right}.elementor-author-box--align-center .elementor-author-box{text-align:center}.elementor-button.elementor-author-box__button{border:2px solid #55595c;font-size:15px;font-weight:100;padding:10px 18px}.elementor-button.elementor-author-box__button,.elementor-button.elementor-author-box__button:hover{background:transparent;color:#55595c}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar,.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar{-ms-flex-item-align:start;align-self:flex-start}.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar{-ms-flex-item-align:center;align-self:center}.elementor-post-info__terms-list{display:inline-block}.elementor-post-info .elementor-icon-list-icon .elementor-avatar{border-radius:100%}.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after{margin:initial}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text{display:inline-block}.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a,.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span{display:inline}.elementor-widget-breadcrumbs{font-size:.85em}.elementor-widget-breadcrumbs p{margin-bottom:0}.elementor-sitemap-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.elementor-sticky--active{z-index:99}[data-elementor-type=popup] .elementor-section-wrap:not(:empty)+#elementor-add-new-section,[data-elementor-type=popup]:not(.elementor-edit-area){display:none}.elementor-popup-modal{display:-webkit-box;display:-ms-flexbox;display:flex;pointer-events:none;background-color:transparent;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.elementor-popup-modal .dialog-buttons-wrapper,.elementor-popup-modal .dialog-header{display:none}.elementor-popup-modal .dialog-close-button{display:none;top:20px;margin-top:0;right:20px;opacity:1;z-index:9999;pointer-events:all}.elementor-popup-modal .dialog-close-button svg{fill:#373a3c;height:1em;width:1em}.elementor-popup-modal .dialog-widget-content{width:auto;overflow:visible;max-width:100%;max-height:100%;border-radius:0;-webkit-box-shadow:none;box-shadow:none;pointer-events:all}.elementor-popup-modal .dialog-message{width:640px;max-width:100vw;max-height:100vh;padding:0;overflow:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-popup-modal .elementor{width:100%}.elementor-motion-effects-element,.elementor-motion-effects-layer{-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(0,.33,.07,1.03);-o-transition-timing-function:cubic-bezier(0,.33,.07,1.03);transition-timing-function:cubic-bezier(0,.33,.07,1.03);-webkit-transition-duration:1s;-o-transition-duration:1s;transition-duration:1s}.elementor-motion-effects-container{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;-webkit-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);-ms-transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x);transform-origin:var(--e-transform-origin-y) var(--e-transform-origin-x)}.elementor-motion-effects-layer{position:absolute;top:0;left:0;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover}.elementor-motion-effects-perspective{-webkit-perspective:1200px;perspective:1200px}.elementor-widget-archive-posts:after,.elementor-widget-posts:after{display:none}.elementor-posts-container.elementor-posts-masonry{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-posts-container:not(.elementor-posts-masonry){-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-posts-container .elementor-post{padding:0;margin:0}.elementor-posts-container .elementor-post__thumbnail{overflow:hidden}.elementor-posts-container .elementor-post__thumbnail img{display:block;width:100%;max-height:none;max-width:none;-webkit-transition:-webkit-filter .3s;transition:-webkit-filter .3s;-o-transition:filter .3s;transition:filter .3s;transition:filter .3s,-webkit-filter .3s}.elementor-posts-container .elementor-post__thumbnail__link{position:relative;display:block;width:100%}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail{top:0;left:0;right:0;bottom:0}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail img{height:auto;position:absolute;top:calc(50% + 1px);left:calc(50% + 1px);-webkit-transform:scale(1.01) translate(-50%,-50%);-ms-transform:scale(1.01) translate(-50%,-50%);transform:scale(1.01) translate(-50%,-50%)}.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail.elementor-fit-height img{height:100%;width:auto}.elementor-posts .elementor-post{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition-property:background,border,-webkit-box-shadow;transition-property:background,border,-webkit-box-shadow;-o-transition-property:background,border,box-shadow;transition-property:background,border,box-shadow;transition-property:background,border,box-shadow,-webkit-box-shadow;-webkit-transition-duration:.25s;-o-transition-duration:.25s;transition-duration:.25s}.elementor-posts .elementor-post__title{font-size:18px;margin:0}.elementor-posts .elementor-post__excerpt{margin-bottom:10px}.elementor-posts .elementor-post__excerpt p{margin:0;line-height:1.5em;font-size:14px;color:#777}.elementor-posts .elementor-post__meta-data{line-height:1.3em;font-size:12px;margin-bottom:13px;color:#adadad}.elementor-posts .elementor-post__read-more{font-size:12px;font-weight:700}.elementor-posts .elementor-post__thumbnail{position:relative}.elementor-posts--skin-classic{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-posts--skin-classic:not(.elementor-posts-masonry){-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-posts--skin-classic .elementor-post{overflow:hidden}.elementor-posts--skin-classic .elementor-post__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-posts--align-left .elementor-post{text-align:left}.elementor-posts--align-right .elementor-post{text-align:right}.elementor-posts--align-center .elementor-post{text-align:center}.elementor-posts--thumbnail-top .elementor-post{display:block}.elementor-posts--thumbnail-top .elementor-post__thumbnail__link{margin-bottom:20px}.elementor-posts--thumbnail-top .elementor-post__text{width:100%}.elementor-posts--thumbnail-top.elementor-posts--align-left .elementor-post__thumbnail__link{margin-right:auto}.elementor-posts--thumbnail-top.elementor-posts--align-right .elementor-post__thumbnail__link{margin-left:auto}.elementor-posts--thumbnail-top.elementor-posts--align-center .elementor-post__thumbnail__link{margin-right:auto;margin-left:auto}.elementor-posts--thumbnail-left .elementor-post__thumbnail__link,.elementor-posts--thumbnail-right .elementor-post__thumbnail__link{-ms-flex-negative:0;flex-shrink:0;width:25%}.elementor-posts--thumbnail-left .elementor-post__thumbnail__link{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0;margin-right:20px}.elementor-posts--thumbnail-right .elementor-post__thumbnail__link{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5;margin-left:20px}.elementor-posts--thumbnail-none .elementor-posts-container .elementor-post__thumbnail__link{display:none}.elementor-posts .elementor-post__card{overflow:hidden;position:relative;background-color:#fff;width:100%;min-height:100%;border-radius:3px;border:0 solid #818a91;-webkit-transition:all .25s;-o-transition:all .25s;transition:all .25s}.elementor-posts .elementor-post__card .elementor-post__thumbnail{position:relative;transform-style:preserve-3d;-webkit-transform-style:preserve-3d}.elementor-posts .elementor-post__card .elementor-post__thumbnail img{width:calc(100% + 1px)}.elementor-posts .elementor-post__card .elementor-post__text{padding:0 30px;margin-bottom:0;margin-top:20px}.elementor-posts .elementor-post__card .elementor-post__read-more{margin-bottom:20px;display:inline-block}.elementor-posts .elementor-post__card .elementor-post__meta-data{padding:15px 30px;margin-bottom:0;border-top:1px solid #eaeaea}.elementor-posts .elementor-post__card .elementor-post__meta-data span+span:before{margin:0 5px}.elementor-posts .elementor-post__card .elementor-post__title{font-size:21px}.elementor-posts .elementor-post__card .elementor-post__excerpt{line-height:1.7}.elementor-posts .elementor-post__card .elementor-post__excerpt,.elementor-posts .elementor-post__card .elementor-post__title{margin-bottom:25px}.elementor-posts .elementor-post__card .elementor-post__badge,.elementor-posts .elementor-post__card .elementor-post__read-more{text-transform:uppercase}.elementor-posts .elementor-post__badge{position:absolute;top:0;background:#818a91;color:#fff;font-size:12px;padding:.6em 1.2em;line-height:1;font-weight:400;margin:20px;border-radius:999px}.elementor-posts .elementor-post__avatar{position:relative;padding:0 30px;width:100%;top:-25px;height:0;pointer-events:none}.elementor-posts .elementor-post__avatar img{border-radius:50%;width:60px;pointer-events:all;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card,.elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data,.elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data{margin-top:auto}.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar{padding-top:0;position:static;height:auto}.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar img.avatar{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);vertical-align:bottom}.elementor-posts--show-avatar .elementor-post__thumbnail__link{margin-bottom:25px}.elementor-posts__hover-gradient .elementor-post__card .elementor-post__thumbnail__link:after{display:block;content:"";background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.35)),color-stop(75%,transparent));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.35),transparent 75%);background-image:-o-linear-gradient(bottom,rgba(0,0,0,.35) 0,transparent 75%);background-image:linear-gradient(0deg,rgba(0,0,0,.35),transparent 75%);background-repeat:no-repeat;height:100%;width:100%;position:absolute;bottom:0;opacity:1;-webkit-transition:all .3s ease-out;-o-transition:all .3s ease-out;transition:all .3s ease-out}.elementor-posts__hover-gradient .elementor-post__card:hover .elementor-post__thumbnail__link:after{opacity:.5}.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img{height:100%}.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img{width:calc(100% + 1px)}.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img{height:115%}.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img{width:115%}.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img{height:115%}.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img{width:115%}.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img{height:100%}.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img{width:calc(100% + 1px)}.elementor-posts__hover-zoom-in .elementor-post__thumbnail img,.elementor-posts__hover-zoom-out .elementor-post__thumbnail img{-webkit-transition:height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s;transition:height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s;-o-transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1);transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1);transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1),-webkit-filter .3s}.elementor-card-shadow-yes .elementor-post__card{-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,.15);box-shadow:0 0 10px 0 rgba(0,0,0,.15)}.elementor-card-shadow-yes .elementor-post__card:hover{-webkit-box-shadow:0 0 30px 0 rgba(0,0,0,.15);box-shadow:0 0 30px 0 rgba(0,0,0,.15)}.elementor-posts--skin-full_content article{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.elementor-posts--skin-full_content article .elementor-post__thumbnail{padding-bottom:0}body.elementor-editor-active .elementor-posts--skin-archive_full_content,body.elementor-editor-active .elementor-posts--skin-full_content{pointer-events:none}body.elementor-editor-active .elementor-posts--skin-archive_full_content .elementor-post__thumbnail__link,body.elementor-editor-active .elementor-posts--skin-full_content .elementor-post__thumbnail__link{display:none}body.elementor-editor-active .elementor-posts--show-thumbnail .elementor-post__thumbnail__link{display:block}.elementor-portfolio__filters{list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0;margin:0}.elementor-portfolio__filter{margin:0;cursor:pointer;padding:8px}.elementor-portfolio-item{-ms-flex-item-align:start;align-self:flex-start;-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-timing-function:ease-in-out;-o-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;overflow:hidden;margin:0}.elementor-portfolio-item__title{margin:0;padding:0;line-height:1;font-size:18px;color:#fff}.elementor-portfolio-item__tags__separator:before{content:", "}.elementor-portfolio-item__overlay{opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;padding:15px;-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;overflow:hidden;background-color:rgba(129,138,145,.8)}.elementor-portfolio-item__overlay:hover{opacity:1;-webkit-transition:opacity .5s;-o-transition:opacity .5s;transition:opacity .5s}.elementor-portfolio-item__img img[src=""]{background-color:rgba(0,0,0,.1);height:100%}.elementor-portfolio.elementor-has-item-ratio{-webkit-transition:height .5s;-o-transition:height .5s;transition:height .5s}.elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail{position:absolute;background-color:rgba(0,0,0,.1)}.elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail__link{padding-bottom:56.25%}.elementor ul li.elementor-portfolio__filter{list-style-type:none}.elementor-widget-archive-posts.load-more-align-center .elementor-button-wrapper,.elementor-widget-posts.load-more-align-center .elementor-button-wrapper{text-align:center}.elementor-widget-archive-posts.load-more-align-start .elementor-button-wrapper,.elementor-widget-posts.load-more-align-start .elementor-button-wrapper{text-align:start}.elementor-widget-archive-posts.load-more-align-end .elementor-button-wrapper,.elementor-widget-posts.load-more-align-end .elementor-button-wrapper{text-align:end}.elementor-widget-archive-posts.load-more-align-justify .elementor-button,.elementor-widget-posts.load-more-align-justify .elementor-button{width:100%}.elementor-widget-archive-posts .e-load-more-spinner,.elementor-widget-posts .e-load-more-spinner{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-archive-posts .e-load-more-spinner i,.elementor-widget-archive-posts .e-load-more-spinner svg,.elementor-widget-posts .e-load-more-spinner i,.elementor-widget-posts .e-load-more-spinner svg{margin:0 auto;display:none}.elementor-widget-archive-posts .e-load-more-spinner i,.elementor-widget-posts .e-load-more-spinner i{color:var(--load-more-spinner-color)}.elementor-widget-archive-posts .e-load-more-spinner svg,.elementor-widget-posts .e-load-more-spinner svg{fill:var(--load-more-spinner-color);height:1em;width:1em}.elementor-widget-archive-posts .e-load-more-message,.elementor-widget-posts .e-load-more-message{color:var(--load-more-message-color);text-align:var(--load-more-message-alignment,center);display:none;margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts.e-load-more-pagination-loading,.elementor-widget-posts.e-load-more-pagination-loading{cursor:default}.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner{margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner i,.elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner svg,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner i,.elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner svg{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-archive-posts.e-load-more-pagination-loading .elementor-button-content-wrapper,.elementor-widget-posts.e-load-more-pagination-loading .elementor-button-content-wrapper{visibility:hidden}.elementor-widget-archive-posts.e-load-more-pagination-end .elementor-button-wrapper,.elementor-widget-posts.e-load-more-pagination-end .elementor-button-wrapper{display:none}.elementor-widget-archive-posts.e-load-more-pagination-end .e-load-more-message,.elementor-widget-posts.e-load-more-pagination-end .e-load-more-message{display:block}.elementor-widget-archive-posts.e-load-more-no-spinner .elementor-button-content-wrapper,.elementor-widget-posts.e-load-more-no-spinner .elementor-button-content-wrapper{visibility:visible}.elementor-widget-archive-posts .elementor-button-wrapper,.elementor-widget-posts .elementor-button-wrapper{margin-top:var(--load-more—spacing,30px)}.elementor-widget-archive-posts .elementor-button-wrapper .e-load-more-spinner,.elementor-widget-posts .elementor-button-wrapper .e-load-more-spinner{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);margin:inherit}.elementor-widget-archive-posts .elementor-button-wrapper .elementor-button,.elementor-widget-posts .elementor-button-wrapper .elementor-button{cursor:pointer;position:relative}.elementor-button.elementor-hidden,.elementor-hidden{display:none}.e-form__step{width:100%}.e-form__step:not(.elementor-hidden){display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.e-form__buttons{-ms-flex-wrap:wrap;flex-wrap:wrap}.e-form__buttons,.e-form__buttons__wrapper{display:-webkit-box;display:-ms-flexbox;display:flex}.e-form__indicators{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:nowrap;flex-wrap:nowrap;font-size:13px;margin-bottom:var(--e-form-steps-indicators-spacing)}.e-form__indicators,.e-form__indicators__indicator{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.e-form__indicators__indicator{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-preferred-size:0;flex-basis:0;padding:0 var(--e-form-steps-divider-gap)}.e-form__indicators__indicator__progress{width:100%;position:relative;background-color:var(--e-form-steps-indicator-progress-background-color);border-radius:var(--e-form-steps-indicator-progress-border-radius);overflow:hidden}.e-form__indicators__indicator__progress__meter{width:var(--e-form-steps-indicator-progress-meter-width,0);height:var(--e-form-steps-indicator-progress-height);line-height:var(--e-form-steps-indicator-progress-height);padding-right:15px;border-radius:var(--e-form-steps-indicator-progress-border-radius);background-color:var(--e-form-steps-indicator-progress-color);color:var(--e-form-steps-indicator-progress-meter-color);text-align:right;-webkit-transition:width .1s linear;-o-transition:width .1s linear;transition:width .1s linear}.e-form__indicators__indicator:first-child{padding-left:0}.e-form__indicators__indicator:last-child{padding-right:0}.e-form__indicators__indicator--state-inactive{color:var(--e-form-steps-indicator-inactive-primary-color,#c2cbd2)}.e-form__indicators__indicator--state-inactive [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-inactive-secondary-color,#fff)}.e-form__indicators__indicator--state-inactive object,.e-form__indicators__indicator--state-inactive svg{fill:var(--e-form-steps-indicator-inactive-primary-color,#c2cbd2)}.e-form__indicators__indicator--state-active{color:var(--e-form-steps-indicator-active-primary-color,#39b54a);border-color:var(--e-form-steps-indicator-active-secondary-color,#fff)}.e-form__indicators__indicator--state-active [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-active-secondary-color,#fff)}.e-form__indicators__indicator--state-active object,.e-form__indicators__indicator--state-active svg{fill:var(--e-form-steps-indicator-active-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed{color:var(--e-form-steps-indicator-completed-secondary-color,#fff)}.e-form__indicators__indicator--state-completed [class*=indicator--shape-]:not(.e-form__indicators__indicator--shape-none){background-color:var(--e-form-steps-indicator-completed-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed .e-form__indicators__indicator__label{color:var(--e-form-steps-indicator-completed-primary-color,#39b54a)}.e-form__indicators__indicator--state-completed .e-form__indicators__indicator--shape-none{color:var(--e-form-steps-indicator-completed-primary-color,#39b54a);background-color:initial}.e-form__indicators__indicator--state-completed object,.e-form__indicators__indicator--state-completed svg{fill:var(--e-form-steps-indicator-completed-secondary-color,#fff)}.e-form__indicators__indicator__icon{width:var(--e-form-steps-indicator-padding,30px);height:var(--e-form-steps-indicator-padding,30px);font-size:var(--e-form-steps-indicator-icon-size);border-width:1px;border-style:solid;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden;margin-bottom:10px}.e-form__indicators__indicator__icon img,.e-form__indicators__indicator__icon object,.e-form__indicators__indicator__icon svg{width:var(--e-form-steps-indicator-icon-size);height:auto}.e-form__indicators__indicator__icon .e-font-icon-svg{height:1em}.e-form__indicators__indicator__number{width:var(--e-form-steps-indicator-padding,30px);height:var(--e-form-steps-indicator-padding,30px);border-width:1px;border-style:solid;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:10px}.e-form__indicators__indicator--shape-circle{border-radius:50%}.e-form__indicators__indicator--shape-square{border-radius:0}.e-form__indicators__indicator--shape-rounded{border-radius:5px}.e-form__indicators__indicator--shape-none{border:0}.e-form__indicators__indicator__label{text-align:center}.e-form__indicators__indicator__separator{width:100%;height:var(--e-form-steps-divider-width);background-color:#c2cbd2}.e-form__indicators--type-icon,.e-form__indicators--type-icon_text,.e-form__indicators--type-number,.e-form__indicators--type-number_text{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.e-form__indicators--type-icon .e-form__indicators__indicator__separator,.e-form__indicators--type-icon_text .e-form__indicators__indicator__separator,.e-form__indicators--type-number .e-form__indicators__indicator__separator,.e-form__indicators--type-number_text .e-form__indicators__indicator__separator{margin-top:calc(var(--e-form-steps-indicator-padding, 30px) / 2 - var(--e-form-steps-divider-width, 1px) / 2)}.elementor-field-type-hidden{display:none}.elementor-field-type-html{display:inline-block}.elementor-login .elementor-lost-password,.elementor-login .elementor-remember-me{font-size:.85em}.elementor-field-type-recaptcha_v3 .elementor-field-label{display:none}.elementor-field-type-recaptcha_v3 .grecaptcha-badge{z-index:1}.elementor-button .elementor-form-spinner{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.elementor-form .elementor-button>span{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-form .elementor-button .elementor-button-text{white-space:normal;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.elementor-form .elementor-button svg{height:auto}.elementor-form .elementor-button .e-font-icon-svg{height:1em}.elementor-widget-price-list .elementor-price-list{list-style:none;padding:0;margin:0}.elementor-widget-price-list .elementor-price-list li{margin:0}.elementor-price-list li:not(:last-child){margin-bottom:20px}.elementor-price-list .elementor-price-list-image{max-width:50%;-ms-flex-negative:0;flex-shrink:0;padding-right:25px}.elementor-price-list .elementor-price-list-image img{width:100%}.elementor-price-list .elementor-price-list-header,.elementor-price-list .elementor-price-list-item,.elementor-price-list .elementor-price-list-text{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-price-list .elementor-price-list-item{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-price-list .elementor-price-list-item .elementor-price-list-text{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-price-list .elementor-price-list-item .elementor-price-list-header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-preferred-size:100%;flex-basis:100%;font-size:19px;font-weight:600;margin-bottom:10px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-price-list .elementor-price-list-item .elementor-price-list-title{max-width:80%}.elementor-price-list .elementor-price-list-item .elementor-price-list-price{font-weight:600}.elementor-price-list .elementor-price-list-item p.elementor-price-list-description{-ms-flex-preferred-size:100%;flex-basis:100%;font-size:14px;margin:0}.elementor-price-list .elementor-price-list-item .elementor-price-list-separator{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-left:10px;margin-right:10px;border-bottom-style:dotted;border-bottom-width:2px;height:0}.elementor-price-table{text-align:center}.elementor-price-table .elementor-price-table__header{background:var(--e-price-table-header-background-color,#555);padding:20px 0}.elementor-price-table .elementor-price-table__heading{margin:0;padding:0;line-height:1.2;font-size:24px;font-weight:600;color:#fff}.elementor-price-table .elementor-price-table__subheading{font-size:13px;font-weight:400;color:#fff}.elementor-price-table .elementor-price-table__original-price{margin-right:15px;text-decoration:line-through;font-size:.5em;line-height:1;font-weight:400;-ms-flex-item-align:center;align-self:center}.elementor-price-table .elementor-price-table__original-price .elementor-price-table__currency{font-size:1em;margin:0}.elementor-price-table .elementor-price-table__price{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;color:#555;font-weight:800;font-size:65px;padding:40px 0}.elementor-price-table .elementor-price-table__price .elementor-typo-excluded{line-height:normal;letter-spacing:normal;text-transform:none;font-weight:400;font-size:medium;font-style:normal}.elementor-price-table .elementor-price-table__after-price{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;text-align:left;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-price-table .elementor-price-table__integer-part{line-height:.8}.elementor-price-table .elementor-price-table__currency,.elementor-price-table .elementor-price-table__fractional-part{line-height:1;font-size:.3em}.elementor-price-table .elementor-price-table__currency{margin-right:3px}.elementor-price-table .elementor-price-table__period{width:100%;font-size:13px;font-weight:400}.elementor-price-table .elementor-price-table__features-list{list-style-type:none;margin:0;padding:0;line-height:1;color:var(--e-price-table-features-list-color)}.elementor-price-table .elementor-price-table__features-list li{font-size:14px;line-height:1;margin:0;padding:0}.elementor-price-table .elementor-price-table__features-list li .elementor-price-table__feature-inner{margin-left:15px;margin-right:15px}.elementor-price-table .elementor-price-table__features-list li:not(:first-child):before{content:"";display:block;border:0 solid hsla(0,0%,47.8%,.3);margin:10px 12.5%}.elementor-price-table .elementor-price-table__features-list i{margin-right:10px;font-size:1.3em}.elementor-price-table .elementor-price-table__features-list svg{margin-right:10px;fill:var(--e-price-table-features-list-color);height:1.3em;width:1.3em}.elementor-price-table .elementor-price-table__features-list svg~*{vertical-align:text-top}.elementor-price-table .elementor-price-table__footer{padding:30px 0}.elementor-price-table .elementor-price-table__additional_info{margin:0;font-size:13px;line-height:1.4}.elementor-price-table__ribbon{position:absolute;top:0;left:auto;right:0;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);width:150px;overflow:hidden;height:150px}.elementor-price-table__ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000}.elementor-price-table__ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-price-table__ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}.elementor-widget-price-table .elementor-widget-container{overflow:hidden;background-color:#f7f7f7}.elementor-flip-box{height:280px;position:relative;-webkit-perspective:1000px;perspective:1000px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}@media (max-device-width:1024px){.elementor-flip-box{cursor:pointer}}.elementor-flip-box__front{background-color:#1abc9c}.elementor-flip-box__back{background-color:#4054b2;display:block}.elementor-flip-box__layer{position:absolute;width:100%;height:100%;-webkit-transition:all .6s ease-in-out;-o-transition:all .6s ease-in-out;transition:all .6s ease-in-out}.elementor-flip-box__layer__overlay{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;text-align:center;padding:35px;color:#fff}.elementor-flip-box__layer__title{font-size:21px}.elementor-flip-box__layer__description{font-size:14px}.elementor-flip-box__layer__description:not(:last-child),.elementor-flip-box__layer__title:not(:last-child){margin:0 0 20px;padding:0}.elementor-flip-box__layer__title{line-height:1;font-weight:600}.elementor-flip-box,.elementor-flip-box .elementor-view-framed,.elementor-flip-box .elementor-view-stacked{--e-flip-box-view-framed-stacked-icon-color:#fff}.elementor-flip-box .elementor-icon,.elementor-flip-box .elementor-view-framed .elementor-icon,.elementor-flip-box .elementor-view-stacked .elementor-icon{color:var(--e-flip-box-view-framed-stacked-icon-color)}.elementor-flip-box .elementor-icon svg,.elementor-flip-box .elementor-view-framed .elementor-icon svg,.elementor-flip-box .elementor-view-stacked .elementor-icon svg{fill:var(--e-flip-box-view-framed-stacked-icon-color)}.elementor-flip-box .elementor-view-framed .elementor-icon{border-color:#fff}.elementor-flip-box .elementor-view-stacked .elementor-icon{background-color:rgba(0,0,0,.5)}.elementor-flip-box__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-flip-box__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-flip-box__image{margin:0 0 20px;display:inline-block;width:100%}.elementor-flip-box__image img{width:50%}.elementor-flip-box .elementor-icon-wrapper{margin-bottom:20px}.elementor-flip-box--3d .elementor-flip-box__layer__inner{-webkit-transform:translateZ(90px) scale(.91);transform:translateZ(90px) scale(.91)}.elementor-flip-box--3d .elementor-flip-box__layer__overlay{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(.1px);transform:translateZ(.1px)}.elementor-flip-box--effect-flip .elementor-flip-box{-webkit-perspective:1000px;perspective:1000px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.elementor-flip-box--effect-flip .elementor-flip-box__layer{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-flip-box--effect-flip .elementor-flip-box__front{-webkit-transform:none;-ms-transform:none;transform:none;z-index:1}.elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box__back{-webkit-transform:rotateX(0) rotateY(-180deg);transform:rotateX(0) rotateY(-180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box__back,.elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(0) rotateY(180deg);transform:rotateX(0) rotateY(180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(0) rotateY(-180deg);transform:rotateX(0) rotateY(-180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box__back{-webkit-transform:rotateX(-180deg) rotateY(0);transform:rotateX(-180deg) rotateY(0)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box__back,.elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(180deg) rotateY(0);transform:rotateX(180deg) rotateY(0)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(-180deg) rotateY(0);transform:rotateX(-180deg) rotateY(0)}.elementor-flip-box--effect-push .elementor-flip-box__front{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(100%) translateY(0);-ms-transform:translateX(100%) translateY(0);transform:translateX(100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(-100%) translateY(0);-ms-transform:translateX(-100%) translateY(0);transform:translateX(-100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(0) translateY(-100%);-ms-transform:translateX(0) translateY(-100%);transform:translateX(0) translateY(-100%)}.elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(0) translateY(100%);-ms-transform:translateX(0) translateY(100%);transform:translateX(0) translateY(100%)}.elementor-flip-box--effect-push .elementor-flip-box,.elementor-flip-box--effect-slide .elementor-flip-box{overflow:hidden}.elementor-flip-box--effect-push .elementor-flip-box:hover .elementor-flip-box__back,.elementor-flip-box--effect-slide .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-right .elementor-flip-box__back{-webkit-transform:translateX(-100%) translateY(0);-ms-transform:translateX(-100%) translateY(0);transform:translateX(-100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-left .elementor-flip-box__back{-webkit-transform:translateX(100%) translateY(0);-ms-transform:translateX(100%) translateY(0);transform:translateX(100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-up .elementor-flip-box__back{-webkit-transform:translateX(0) translateY(100%);-ms-transform:translateX(0) translateY(100%);transform:translateX(0) translateY(100%)}.elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-down .elementor-flip-box__back{-webkit-transform:translateX(0) translateY(-100%);-ms-transform:translateX(0) translateY(-100%);transform:translateX(0) translateY(-100%)}.elementor-flip-box--effect-zoom-out .elementor-flip-box .elementor-flip-box__front{-webkit-transition:opacity .35s,width .1ms,-webkit-transform .7s;transition:opacity .35s,width .1ms,-webkit-transform .7s;-o-transition:transform .7s,opacity .35s,width .1ms;transition:transform .7s,opacity .35s,width .1ms;transition:transform .7s,opacity .35s,width .1ms,-webkit-transform .7s;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);z-index:1;width:100%}.elementor-flip-box--effect-zoom-out .elementor-flip-box:hover .elementor-flip-box__front{width:0;opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7);-webkit-transition:opacity .7s .1s,width .1ms .7s,-webkit-transform .8s;transition:opacity .7s .1s,width .1ms .7s,-webkit-transform .8s;-o-transition:transform .8s,opacity .7s .1s,width .1ms .7s;transition:transform .8s,opacity .7s .1s,width .1ms .7s;transition:transform .8s,opacity .7s .1s,width .1ms .7s,-webkit-transform .8s}.elementor-flip-box--effect-zoom-in .elementor-flip-box .elementor-flip-box__back{-webkit-transition:opacity .5s .2s,-webkit-transform .7s;transition:opacity .5s .2s,-webkit-transform .7s;-o-transition:transform .7s,opacity .5s .2s;transition:transform .7s,opacity .5s .2s;transition:transform .7s,opacity .5s .2s,-webkit-transform .7s;opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}.elementor-flip-box--effect-zoom-in .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transition:opacity .5s,-webkit-transform .7s;transition:opacity .5s,-webkit-transform .7s;-o-transition:transform .7s,opacity .5s;transition:transform .7s,opacity .5s;transition:transform .7s,opacity .5s,-webkit-transform .7s;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-flip-box--effect-fade .elementor-flip-box .elementor-flip-box__back{opacity:0}.elementor-flip-box--effect-fade .elementor-flip-box:hover .elementor-flip-box__back{opacity:1}.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__front{display:none}.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}.elementor-cta,.elementor-widget-call-to-action .elementor-widget-container{overflow:hidden}.elementor-cta{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.5s;-o-transition:.5s;transition:.5s}.elementor-cta--skin-classic .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--skin-classic .elementor-cta__bg-wrapper{position:relative;min-height:200px;width:100%}.elementor-cta--skin-classic .elementor-cta__content{-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%;background-color:#f7f7f7}.elementor-cta--skin-classic .elementor-cta__content-item,.elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon{color:#55595c;border-color:#55595c;fill:#55595c}.elementor-cta--skin-classic .elementor-cta__button.elementor-button{color:#55595c;border-color:#55595c}.elementor-cta--skin-cover .elementor-cta{display:block}.elementor-cta--skin-cover .elementor-cta__bg-wrapper{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%}.elementor-cta--skin-cover .elementor-cta__content{min-height:280px}.elementor-cta--skin-cover .elementor-cta__button.elementor-button,.elementor-cta--skin-cover .elementor-cta__content-item,.elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon{color:#fff;border-color:#fff}.elementor-cta--layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--layout-image-left .elementor-cta,.elementor-cta--layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--layout-image-left .elementor-cta__content,.elementor-cta--layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta__bg,.elementor-cta__bg-overlay{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s}.elementor-cta__bg-wrapper{z-index:1;overflow:hidden}.elementor-cta__bg{-webkit-background-size:cover;background-size:cover;background-position:50%;z-index:1}.elementor-cta__bg-overlay{z-index:2}.elementor-cta__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-cta__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-cta__title{font-size:23px}.elementor-cta__content{z-index:1;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;padding:35px;width:100%}.elementor-cta__content,.elementor-cta__content-item{position:relative;-webkit-transition:.5s;-o-transition:.5s;transition:.5s;color:#fff}.elementor-cta__content-item{width:100%;margin:0}.elementor-cta__content-item:not(:last-child){margin-bottom:15px}.elementor-cta__content-item .elementor-icon{color:#fff}.elementor-cta--valign-top .elementor-cta__content{-ms-flex-line-pack:start;align-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-cta--valign-middle .elementor-cta__content{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-cta--valign-bottom .elementor-cta__content{-ms-flex-line-pack:end;align-content:flex-end;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor-cta:hover .elementor-cta__bg-overlay{background-color:rgba(0,0,0,.3)}@media (max-device-width:1024px){.elementor-cta{cursor:pointer}}@media (min-width:-1px){.elementor-cta--widescreen-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--widescreen-layout-image-left .elementor-cta,.elementor-cta--widescreen-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--widescreen-layout-image-left .elementor-cta__content,.elementor-cta--widescreen-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--widescreen-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--widescreen-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:-1px){.elementor-cta--laptop-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--laptop-layout-image-left .elementor-cta,.elementor-cta--laptop-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--laptop-layout-image-left .elementor-cta__content,.elementor-cta--laptop-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--laptop-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--laptop-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:-1px){.elementor-cta--tablet_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta,.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__content,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:1024px){.elementor-cta--tablet-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet-layout-image-left .elementor-cta,.elementor-cta--tablet-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet-layout-image-left .elementor-cta__content,.elementor-cta--tablet-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--tablet-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:-1px){.elementor-cta--mobile_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta,.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__content,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}@media (max-width:767px){.elementor-cta--mobile-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile-layout-image-left .elementor-cta,.elementor-cta--mobile-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile-layout-image-left .elementor-cta__content,.elementor-cta--mobile-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta--mobile-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}}.elementor-ribbon{position:absolute;z-index:1;top:0;left:auto;right:0;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);width:150px;overflow:hidden;height:150px}.elementor-ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000;color:#fff}.elementor-ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}.elementor-widget-countdown .elementor-countdown-expire--message{display:none;padding:20px;text-align:center}.elementor-widget-countdown .elementor-countdown-wrapper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-widget-countdown .elementor-countdown-item{padding:20px 0;text-align:center;color:#fff}.elementor-widget-countdown .elementor-countdown-digits,.elementor-widget-countdown .elementor-countdown-label{line-height:1}.elementor-widget-countdown .elementor-countdown-digits{font-size:69px}.elementor-widget-countdown .elementor-countdown-label{font-size:19px}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:auto;margin-left:auto}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-digits,.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-label{display:block}.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-widget-countdown.elementor-countdown--label-inline{text-align:center}.elementor-widget-countdown.elementor-countdown--label-inline .elementor-countdown-item{display:inline-block;padding-left:5px;padding-right:5px}.elementor-slides .swiper-slide-bg{-webkit-background-size:cover;background-size:cover;background-position:50%;background-repeat:no-repeat;min-width:100%;min-height:100%}.elementor-slides .swiper-slide-inner{background-repeat:no-repeat;background-position:50%;position:absolute;top:0;left:0;bottom:0;right:0;padding:50px;margin:auto}.elementor-slides .swiper-slide-inner,.elementor-slides .swiper-slide-inner:hover{color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-slides .swiper-slide-inner .elementor-background-overlay{position:absolute;z-index:0;top:0;bottom:0;left:0;right:0}.elementor-slides .swiper-slide-inner .elementor-slide-content{position:relative;z-index:1;width:100%}.elementor-slides .swiper-slide-inner .elementor-slide-heading{font-size:35px;font-weight:700;line-height:1}.elementor-slides .swiper-slide-inner .elementor-slide-description{font-size:17px;line-height:1.4}.elementor-slides .swiper-slide-inner .elementor-slide-description:not(:last-child),.elementor-slides .swiper-slide-inner .elementor-slide-heading:not(:last-child){margin-bottom:30px}.elementor-slides .swiper-slide-inner .elementor-slide-button{border:2px solid #fff;color:#fff;background:transparent;display:inline-block}.elementor-slides .swiper-slide-inner .elementor-slide-button,.elementor-slides .swiper-slide-inner .elementor-slide-button:hover{background:transparent;color:inherit;text-decoration:none}.elementor--v-position-top .swiper-slide-inner{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor--v-position-bottom .swiper-slide-inner{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor--v-position-middle .swiper-slide-inner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor--h-position-left .swiper-slide-inner{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor--h-position-right .swiper-slide-inner{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor--h-position-center .swiper-slide-inner{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}body.rtl .elementor-widget-slides .elementor-swiper-button-next{left:10px;right:auto}body.rtl .elementor-widget-slides .elementor-swiper-button-prev{right:10px;left:auto}.elementor-slides-wrapper div:not(.swiper-slide)>.swiper-slide-inner{display:none}@media (max-width:767px){.elementor-slides .swiper-slide-inner{padding:30px}.elementor-slides .swiper-slide-inner .elementor-slide-heading{font-size:23px;line-height:1;margin-bottom:15px}.elementor-slides .swiper-slide-inner .elementor-slide-description{font-size:13px;line-height:1.4;margin-bottom:15px}}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn{background-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text{color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn{color:var(--e-share-buttons-primary-color,#ea4335);border-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon{background-color:var(--e-share-buttons-primary-color,#ea4335);color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon svg,.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon{color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon svg{fill:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--color-official .elementor-share-btn:hover{-webkit-filter:saturate(1.5) brightness(1.2);filter:saturate(1.5) brightness(1.2)}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_digg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_digg{background-color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_email,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_email{background-color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_print,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_print{background-color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_facebook,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_facebook{background-color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_google,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_google{background-color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pocket,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pocket{background-color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_linkedin,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_linkedin{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_odnoklassniki,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_odnoklassniki{background-color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pinterest,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pinterest{background-color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_reddit,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_reddit{background-color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_skype,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_skype{background-color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_slideshare,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_slideshare{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_snapchat,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_snapchat{background-color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_stumbleupon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_stumbleupon{background-color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_mix,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_mix{background-color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_tumblr,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_tumblr{background-color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitch,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitch{background-color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_telegram,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_telegram{background-color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitter,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitter{background-color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vimeo,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vimeo{background-color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vk,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vk{background-color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_whatsapp,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_whatsapp{background-color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_wordpress,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_wordpress{background-color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_xing,.elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_xing{background-color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg{color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg svg{fill:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email{color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email svg{fill:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print{color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print svg{fill:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook{color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook svg{fill:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google{color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google svg{fill:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket{color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket svg{fill:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin{color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin svg{fill:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki{color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki svg{fill:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest{color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest svg{fill:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit{color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit svg{fill:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype{color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype svg{fill:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare{color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare svg{fill:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat{color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat svg{fill:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon{color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon svg{fill:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix{color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix svg{fill:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr{color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr svg{fill:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch{color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch svg{fill:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram{color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram svg{fill:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter{color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter svg{fill:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo{color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo svg{fill:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk{color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk svg{fill:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp{color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp svg{fill:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress{color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress svg{fill:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing{color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing svg{fill:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_digg .elementor-share-btn__icon{background-color:#005be2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_email .elementor-share-btn__icon{background-color:#ea4335}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_print .elementor-share-btn__icon{background-color:#aaa}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_facebook .elementor-share-btn__icon{background-color:#3b5998}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_google .elementor-share-btn__icon{background-color:#dd4b39}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pocket .elementor-share-btn__icon{background-color:#ef3f56}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_linkedin .elementor-share-btn__icon{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_odnoklassniki .elementor-share-btn__icon{background-color:#f4731c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pinterest .elementor-share-btn__icon{background-color:#bd081c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_reddit .elementor-share-btn__icon{background-color:#ff4500}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_skype .elementor-share-btn__icon{background-color:#00aff0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_slideshare .elementor-share-btn__icon{background-color:#0077b5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_snapchat .elementor-share-btn__icon{background-color:#fffc00}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_stumbleupon .elementor-share-btn__icon{background-color:#eb4924}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_mix .elementor-share-btn__icon{background-color:#f3782b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_tumblr .elementor-share-btn__icon{background-color:#35465c}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitch .elementor-share-btn__icon{background-color:#6441a5}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_telegram .elementor-share-btn__icon{background-color:#2ca5e0}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitter .elementor-share-btn__icon{background-color:#1da1f2}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vimeo .elementor-share-btn__icon{background-color:#1ab7ea}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vk .elementor-share-btn__icon{background-color:#45668e}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_whatsapp .elementor-share-btn__icon{background-color:#25d366}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_wordpress .elementor-share-btn__icon{background-color:#21759b}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_xing .elementor-share-btn__icon{background-color:#026466}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon{color:var(--e-share-buttons-icon-color,#fff)}.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon svg,.elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon svg{fill:var(--e-share-buttons-icon-color,#fff)}.elementor-share-buttons--skin-boxed .elementor-share-btn__icon,.elementor-share-buttons--skin-framed .elementor-share-btn__icon{margin-left:-.2em}.elementor-share-buttons--skin-boxed .elementor-share-btn,.elementor-share-buttons--skin-framed .elementor-share-btn{border-style:solid}.elementor-share-buttons--skin-gradient .elementor-share-btn__text,.elementor-share-buttons--skin-gradient.elementor-share-buttons--view-icon .elementor-share-btn__icon{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.12)),to(transparent));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.12),transparent);background-image:-o-linear-gradient(left,rgba(0,0,0,.12),transparent);background-image:linear-gradient(90deg,rgba(0,0,0,.12),transparent)}.elementor-share-buttons--skin-boxed .elementor-share-btn__text,.elementor-share-buttons--skin-gradient .elementor-share-btn__text,.elementor-share-buttons--skin-minimal .elementor-share-btn__text{padding-left:.9em}.elementor-share-buttons--skin-flat .elementor-share-btn,.elementor-share-buttons--skin-gradient .elementor-share-btn{background-color:var(--e-share-buttons-primary-color,#ea4335)}.elementor-share-buttons--skin-flat .elementor-share-btn__icon,.elementor-share-buttons--skin-flat .elementor-share-btn__text,.elementor-share-buttons--skin-gradient .elementor-share-btn__icon,.elementor-share-buttons--skin-gradient .elementor-share-btn__text{color:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg,.elementor-share-buttons--skin-flat .elementor-share-btn__text svg,.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg,.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg{fill:var(--e-share-buttons-secondary-color,#fff)}.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-rounded .elementor-share-btn__icon{border-radius:.5em}.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-circle .elementor-share-btn__icon{border-radius:99.9em}.elementor-share-buttons--view-text .elementor-share-btn__text{padding-left:1em}.elementor-share-buttons--view-icon .elementor-share-btn,.elementor-share-buttons--view-text .elementor-share-btn{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-share-buttons--view-icon .elementor-share-btn__icon,.elementor-share-buttons--view-icon .elementor-share-btn__text,.elementor-share-buttons--view-text .elementor-share-btn__icon,.elementor-share-buttons--view-text .elementor-share-btn__text{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-share-buttons--shape-rounded .elementor-share-btn{border-radius:.5em}.elementor-share-buttons--shape-circle .elementor-share-btn{border-radius:99.9em}.elementor-share-btn{overflow:hidden;font-size:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-transition-property:background-color,border-color,-webkit-filter;transition-property:background-color,border-color,-webkit-filter;-o-transition-property:filter,background-color,border-color;transition-property:filter,background-color,border-color;transition-property:filter,background-color,border-color,-webkit-filter;height:4.5em;cursor:pointer}.elementor-share-btn,.elementor-share-btn__icon,.elementor-share-btn__text{-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.elementor-share-btn__icon,.elementor-share-btn__text{-webkit-transition-property:color,background-color;-o-transition-property:color,background-color;transition-property:color,background-color}.elementor-share-btn__icon{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:4.5em;position:relative}.elementor-share-btn__icon i{font-size:var(--e-share-buttons-icon-size,1.7em)}.elementor-share-btn__icon svg{width:var(--e-share-buttons-icon-size,1.7em);height:var(--e-share-buttons-icon-size,1.7em)}.elementor-share-btn__text{font-size:1.5em;padding-right:1em;-ms-flex-item-align:stretch;align-self:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:100}.elementor-share-btn__title{font-weight:700;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-share-buttons{text-align:var(--alignment,inherit);-moz-text-align-last:var(--alignment,inherit);text-align-last:var(--alignment,inherit)}.elementor-widget-share-buttons.elementor-grid-0 .elementor-widget-container{font-size:0}.elementor-skin-carousel .elementor-main-swiper,.elementor-skin-coverflow .elementor-main-swiper{height:230px}.elementor-skin-slideshow .elementor-main-swiper{height:450px;position:relative}.elementor-skin-slideshow .elementor-thumbnails-swiper .elementor-custom-embed-play i{font-size:50px}.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide{cursor:pointer}.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide:not(.swiper-slide-active):after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.3)}.elementor-carousel-image{background:no-repeat 50%;-webkit-background-size:cover;background-size:cover;height:100%;position:relative}.elementor-carousel-image-overlay{position:absolute;top:0;left:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;width:100%;height:100%;padding:20px;color:var(--e-carousel-image-overlay-color,#fff);background-color:rgba(129,138,145,.8);-webkit-transition:opacity .5s,-webkit-transform .5s;transition:opacity .5s,-webkit-transform .5s;-o-transition:transform .5s,opacity .5s;transition:transform .5s,opacity .5s;transition:transform .5s,opacity .5s,-webkit-transform .5s}.elementor-carousel-image-overlay i{font-size:var(--e-carousel-image-overlay-icon-size,21px)}.elementor-carousel-image-overlay svg{fill:var(--e-carousel-image-overlay-color,#fff);width:var(--e-carousel-image-overlay-icon-size,21px);height:var(--e-carousel-image-overlay-icon-size,21px)}.elementor-testimonial__image{-ms-flex-negative:0;flex-shrink:0}.elementor-testimonial__image img{border-radius:999px;-webkit-box-sizing:content-box;box-sizing:content-box;-o-object-fit:cover;object-fit:cover}.elementor-testimonial__footer,.elementor-testimonial__header{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-testimonial__footer cite,.elementor-testimonial__header cite{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;font-style:normal;font-size:14px;line-height:1.5}.elementor-testimonial__name{font-weight:700}.elementor-testimonial--layout-image_above .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline .elementor-testimonial__footer{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-testimonial--layout-image_above .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline .elementor-testimonial__image+cite{margin-left:20px}.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__footer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__image+cite{margin-right:20px;margin-left:0}.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__footer,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__footer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__image+cite{margin-right:0;margin-left:20px}.elementor-testimonial--layout-image_inline .elementor-testimonial__footer{margin-top:25px}.elementor-testimonial--layout-image_above .elementor-testimonial{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.elementor-testimonial--layout-image_above .elementor-testimonial__footer{margin-bottom:25px}.elementor-testimonial--layout-image_stacked .elementor-testimonial__footer{margin-top:25px;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-testimonial--layout-image_stacked .elementor-testimonial__image,.elementor-testimonial--layout-image_stacked .elementor-testimonial cite{margin-top:15px;width:100%}.elementor-testimonial--layout-image_left .elementor-testimonial,.elementor-testimonial--layout-image_right .elementor-testimonial{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-testimonial--layout-image_left .elementor-testimonial__footer,.elementor-testimonial--layout-image_right .elementor-testimonial__footer{-ms-flex-negative:0;flex-shrink:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center}.elementor-testimonial--layout-image_left .elementor-testimonial__image+cite,.elementor-testimonial--layout-image_right .elementor-testimonial__image+cite{margin-top:15px}.elementor-testimonial--layout-image_left.elementor-testimonial--align-center .elementor-testimonial__footer,.elementor-testimonial--layout-image_right.elementor-testimonial--align-center .elementor-testimonial__footer{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-testimonial--layout-image_left .elementor-testimonial{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-testimonial--layout-image_left .elementor-testimonial__footer{padding-right:20px}.elementor-testimonial--layout-image_right .elementor-testimonial{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-testimonial--layout-image_right .elementor-testimonial__footer{padding-left:20px}.elementor-testimonial--align-right .elementor-testimonial{text-align:right}.elementor-testimonial--align-left .elementor-testimonial{text-align:left}.elementor-testimonial--align-center .elementor-testimonial{text-align:center}.elementor-testimonial--align-center .elementor-testimonial__footer{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-testimonial--align-center.elementor-testimonial--layout-image_inline .elementor-testimonial__image+cite{text-align:left}.elementor-testimonial--skin-default.elementor-testimonial--layout-image_above .elementor-testimonial__cite,.elementor-testimonial--skin-default.elementor-testimonial--layout-image_left .elementor-testimonial__cite,.elementor-testimonial--skin-default.elementor-testimonial--layout-image_right .elementor-testimonial__cite{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-top:25px}.elementor-testimonial--skin-bubble .elementor-testimonial__content{background-color:#e6e9ec;padding:20px;position:relative}.elementor-testimonial--skin-bubble .elementor-testimonial__content:after{content:"";display:block;width:14px;height:14px;background-color:#e6e9ec;position:absolute;-webkit-transform:scaleX(.75) rotate(45deg);-ms-transform:scaleX(.75) rotate(45deg);transform:scaleX(.75) rotate(45deg);border-width:0;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above .elementor-testimonial__content:after{bottom:calc(100% - 7px);-webkit-transform:scaleX(.75) rotate(-135deg);-ms-transform:scaleX(.75) rotate(-135deg);transform:scaleX(.75) rotate(-135deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-center .elementor-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) scaleX(.75) rotate(-135deg);-ms-transform:translateX(-50%) scaleX(.75) rotate(-135deg);transform:translateX(-50%) scaleX(.75) rotate(-135deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked .elementor-testimonial__content:after{top:calc(100% - 7px)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-center .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-center .elementor-testimonial__content:after{left:50%;-webkit-transform:translateX(-50%) scaleX(.75) rotate(45deg);-ms-transform:translateX(-50%) scaleX(.75) rotate(45deg);transform:translateX(-50%) scaleX(.75) rotate(45deg)}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-left .elementor-testimonial__content:after{left:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-right .elementor-testimonial__content:after{right:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after{-webkit-transform:scaleY(.75) rotate(135deg);-ms-transform:scaleY(.75) rotate(135deg);transform:scaleY(.75) rotate(135deg);left:-8px}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after{-webkit-transform:scaleY(.75) rotate(-45deg);-ms-transform:scaleY(.75) rotate(-45deg);transform:scaleY(.75) rotate(-45deg);right:-8px}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after{top:calc(20px + (50px / 2))}.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__footer,.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__footer{padding-top:20px}.elementor-widget-testimonial-carousel .swiper-slide{padding:20px}.elementor-widget-testimonial-carousel .elementor-testimonial__text{font-size:1.3em;font-style:italic;line-height:1.5}.elementor-widget-testimonial-carousel .elementor-testimonial__image img{width:50px;height:50px}.elementor-widget-reviews .swiper-slide{background-color:#fff;border:1px solid #e1e8ed;border-radius:5px;padding:0}.elementor-widget-reviews .elementor-testimonial__text{font-size:14px;line-height:20px}.elementor-widget-reviews .elementor-testimonial__name{color:#1c2022}.elementor-widget-reviews .elementor-testimonial__title{color:#697882;font-size:12.5px;font-weight:400;font-family:inherit}.elementor-widget-reviews .elementor-testimonial__image{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-reviews .elementor-testimonial__image img{width:36px;height:36px}.elementor-widget-reviews .elementor-testimonial__icon{margin-left:auto;font-size:17px}.elementor-widget-reviews .elementor-testimonial__icon .fa+.fa{margin-left:.15em}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon{color:var(--e-testimonial-icon-color)}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-android{--e-testimonial-icon-color:#a4c639}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-apple{--e-testimonial-icon-color:#999}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-behance{--e-testimonial-icon-color:#1769ff}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-bitbucket{--e-testimonial-icon-color:#205081}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-codepen{--e-testimonial-icon-color:#000}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-delicious{--e-testimonial-icon-color:#39f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-digg{--e-testimonial-icon-color:#005be2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-dribbble{--e-testimonial-icon-color:#ea4c89}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-envelope{--e-testimonial-icon-color:#ea4335}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-facebook{--e-testimonial-icon-color:#3b5998}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-flickr{--e-testimonial-icon-color:#0063dc}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-foursquare{--e-testimonial-icon-color:#2d5be3}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-github{--e-testimonial-icon-color:#333}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-google-plus{--e-testimonial-icon-color:#dd4b39}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-houzz{--e-testimonial-icon-color:#7ac142}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-instagram{--e-testimonial-icon-color:#262626}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-jsfiddle{--e-testimonial-icon-color:#487aa2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-linkedin{--e-testimonial-icon-color:#0077b5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-medium{--e-testimonial-icon-color:#00ab6b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-meetup{--e-testimonial-icon-color:#ec1c40}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-mixcloud{--e-testimonial-icon-color:#273a4b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-odnoklassniki{--e-testimonial-icon-color:#f4731c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-pinterest{--e-testimonial-icon-color:#bd081c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-product-hunt{--e-testimonial-icon-color:#da552f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-reddit{--e-testimonial-icon-color:#ff4500}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-rss{--e-testimonial-icon-color:#f26522}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-shopping-cart{--e-testimonial-icon-color:#4caf50}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-skype{--e-testimonial-icon-color:#00aff0}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-slideshare{--e-testimonial-icon-color:#0077b5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-snapchat{--e-testimonial-icon-color:#fffc00}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-soundcloud{--e-testimonial-icon-color:#f80}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-spotify{--e-testimonial-icon-color:#2ebd59}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stack-overflow{--e-testimonial-icon-color:#fe7a15}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-steam{--e-testimonial-icon-color:#00adee}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stumbleupon{--e-testimonial-icon-color:#eb4924}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-telegram{--e-testimonial-icon-color:#2ca5e0}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumb-tack,.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumbtack{--e-testimonial-icon-color:#1aa1d8}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tripadvisor{--e-testimonial-icon-color:#589442}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tumblr{--e-testimonial-icon-color:#35465c}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitch{--e-testimonial-icon-color:#6441a5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitter{--e-testimonial-icon-color:#1da1f2}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vimeo{--e-testimonial-icon-color:#1ab7ea}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vk{--e-testimonial-icon-color:#45668e}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weibo{--e-testimonial-icon-color:#dd2430}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weixin{--e-testimonial-icon-color:#31a918}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-whatsapp{--e-testimonial-icon-color:#25d366}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-wordpress{--e-testimonial-icon-color:#21759b}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-xing{--e-testimonial-icon-color:#026466}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-yelp{--e-testimonial-icon-color:#af0606}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-youtube{--e-testimonial-icon-color:#cd201f}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-500px{--e-testimonial-icon-color:#0099e5}.elementor-widget-reviews .elementor-testimonial__icon.elementor-icon svg{fill:var(--e-testimonial-icon-color)}.elementor-widget-reviews .elementor-testimonial__rating{background-image:-webkit-gradient(linear,left top,right top,from(#ffc82c),to(#ccc));background-image:-webkit-linear-gradient(left,#ffc82c var(--rating),#ccc var(--rating));background-image:-o-linear-gradient(left,#ffc82c var(--rating),#ccc var(--rating));background-image:linear-gradient(90deg,#ffc82c var(--rating),#ccc var(--rating));font-family:eicons}.elementor-widget-reviews .elementor-testimonial__header{display:-webkit-box;display:-ms-flexbox;display:flex;padding-top:15px;padding-bottom:6px}.elementor-widget-reviews .elementor-testimonial__image+cite{margin-left:9px}.elementor-widget-reviews .elementor-testimonial__separator{margin:0 auto;border-top:0;border-bottom:1px solid #e1e8ed;height:0}.elementor-widget-reviews .elementor-testimonial__content{padding-top:6px;padding-bottom:15px}.elementor-widget-reviews .elementor-testimonial__content,.elementor-widget-reviews .elementor-testimonial__header{padding-left:15px;padding-right:15px}.elementor-widget-reviews.elementor-review--has-separator .elementor-testimonial__header{border-bottom:1px solid #e1e8ed}.swiper-pagination-bullets{color:#fff;cursor:default}.swiper-slide{will-change:transform;border-style:solid;border-width:0;-webkit-transition-duration:.5s;-o-transition-duration:.5s;transition-duration:.5s;-webkit-transition-property:border,background,-webkit-transform;transition-property:border,background,-webkit-transform;-o-transition-property:border,background,transform;transition-property:border,background,transform;transition-property:border,background,transform,-webkit-transform;overflow:hidden}.swiper-slide:not(:hover) .e-overlay-animation-fade{opacity:0}.swiper-slide:not(:hover) .e-overlay-animation-slide-up{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-down{-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-right{-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.swiper-slide:not(:hover) .e-overlay-animation-slide-left{-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.swiper-slide:not(:hover) .e-overlay-animation-zoom-in{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);opacity:0}.swiper-slide a{display:inline}.swiper-slide a.elementor-button{display:inline-block}.elementor-widget-reviews .elementor-arrows-yes .elementor-main-swiper,.elementor-widget-testimonial-carousel .elementor-arrows-yes .elementor-main-swiper{width:calc(95% - 40px)}.elementor-widget-reviews .elementor-main-swiper,.elementor-widget-testimonial-carousel .elementor-main-swiper{width:95%}.elementor-widget-reviews .swiper-wrapper,.elementor-widget-testimonial-carousel .swiper-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.elementor-widget-reviews .swiper-slide,.elementor-widget-testimonial-carousel .swiper-slide{height:auto}.elementor-widget-reviews.elementor-pagination-type-bullets .swiper-container,.elementor-widget-reviews.elementor-pagination-type-fraction .swiper-container,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .swiper-container,.elementor-widget-testimonial-carousel.elementor-pagination-type-fraction .swiper-container{padding-bottom:40px}.elementor-widget-reviews .elementor-swiper-button-prev,.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-next,.elementor-widget-testimonial-carousel .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-next{left:0;right:unset}.elementor-widget-reviews .elementor-swiper-button-next,.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel .elementor-swiper-button-next,.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-prev{right:0;left:unset}.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-next,.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-prev,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-next,.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-prev{top:calc(50% - (40px / 2))}.elementor-widget-media-carousel .elementor-swiper-button-prev,.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-next{left:10px;right:unset}.elementor-widget-media-carousel .elementor-swiper-button-next,.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-prev{right:10px;left:unset}.entry-content blockquote.elementor-blockquote:not(.alignright):not(.alignleft),.entry-summary blockquote.elementor-blockquote{margin-right:0;margin-left:0}.elementor-widget-blockquote blockquote{margin:0;padding:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;quotes:none;border:0;font-style:normal;color:#55595c}.elementor-widget-blockquote blockquote:after,.elementor-widget-blockquote blockquote:before,.elementor-widget-blockquote blockquote cite:after,.elementor-widget-blockquote blockquote cite:before,.elementor-widget-blockquote blockquote footer:after,.elementor-widget-blockquote blockquote footer:before{content:"";content:none}.elementor-blockquote{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-blockquote__author,.elementor-blockquote__content{margin-bottom:0;font-style:normal}.elementor-blockquote__author{font-weight:700}.elementor-blockquote footer{margin-top:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.elementor-blockquote__tweet-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;color:#1da1f2;-ms-flex-item-align:end;align-self:flex-end;line-height:1;position:relative;width:-webkit-max-content;width:-moz-max-content;width:max-content}.elementor-blockquote__tweet-button:hover{color:#0967a0}.elementor-blockquote__tweet-button span{font-weight:600}.elementor-blockquote__tweet-button i,.elementor-blockquote__tweet-button span{vertical-align:middle}.elementor-blockquote__tweet-button i+span,.elementor-blockquote__tweet-button svg+span{margin-left:.5em}.elementor-blockquote__tweet-button svg{fill:#1da1f2;height:1em;width:1em}.elementor-blockquote__tweet-label{white-space:pre-wrap}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button{padding:.7em 1.2em;border-radius:100em;background-color:#1da1f2;color:#fff;font-size:15px}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover{background-color:#0967a0;color:#fff}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover:before,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover:before{border-right-color:#0967a0}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button svg,.elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button svg{fill:#fff;height:1em;width:1em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button{padding:0;width:2em;height:2em}.elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i,.elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:before{content:"";border:.5em solid transparent;border-right-color:#1da1f2;position:absolute;left:-.8em;top:50%;-webkit-transform:translateY(-50%) scaleY(.65);-ms-transform:translateY(-50%) scaleY(.65);transform:translateY(-50%) scaleY(.65);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:before{right:auto;left:-.8em;border-right-color:#1da1f2;border-left-color:transparent}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:hover:before{border-right-color:#0967a0}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:before{left:auto;right:-.8em;border-right-color:transparent;border-left-color:#1da1f2}.elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:hover:before{border-left-color:#0967a0}.elementor-blockquote--skin-boxed .elementor-blockquote{background-color:#e6e9ec;padding:30px}.elementor-blockquote--skin-border .elementor-blockquote{border-color:#e6e9ec;border-left:7px #e6e9ec;border-style:solid;padding-left:20px}.elementor-blockquote--skin-quotation .elementor-blockquote:before{content:"“";font-size:100px;color:#e6e9ec;font-family:Times New Roman,Times,serif;font-weight:900;line-height:1;display:block;height:.6em}.elementor-blockquote--skin-quotation .elementor-blockquote__content{margin-top:15px}.elementor-blockquote--align-left .elementor-blockquote__content{text-align:left}.elementor-blockquote--align-left .elementor-blockquote footer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-blockquote--align-right .elementor-blockquote__content{text-align:right}.elementor-blockquote--align-right .elementor-blockquote footer{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-blockquote--align-center .elementor-blockquote{text-align:center}.elementor-blockquote--align-center .elementor-blockquote__author,.elementor-blockquote--align-center .elementor-blockquote footer{display:block}.elementor-blockquote--align-center .elementor-blockquote__tweet-button{margin-right:auto;margin-left:auto}.elementor-headline{font-size:43px;line-height:1.2;display:block}.elementor-headline-dynamic-text{color:var(--dynamic-text-color,#aebcb9)}.elementor-headline--style-rotate .elementor-headline-dynamic-wrapper{text-align:left}.elementor-headline--style-highlight .elementor-headline-dynamic-wrapper{overflow:visible;text-align:inherit}.elementor-headline--style-highlight .elementor-headline-dynamic-text{z-index:1}.elementor-headline--style-highlight .elementor-headline-plain-text{z-index:1;position:relative}.elementor-headline--style-highlight svg{position:absolute;top:50%;left:50%;width:calc(100% + 20px);height:calc(100% + 20px);-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);overflow:visible}.elementor-headline--style-highlight svg path{stroke:red;stroke-width:9;fill:none;opacity:0;stroke-dasharray:0 1500;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-headline.e-animated svg path{-webkit-animation:elementor-headline-dash forwards;animation:elementor-headline-dash forwards;-webkit-animation-duration:var(--animation-duration,1.2s);animation-duration:var(--animation-duration,1.2s);-webkit-animation-iteration-count:1;animation-iteration-count:1}.elementor-headline.e-animated svg path:nth-of-type(2){-webkit-animation-delay:calc(var(--animation-duration, 1.2s) / 2);animation-delay:calc(var(--animation-duration, 1.2s) / 2)}.elementor-headline.e-hide-highlight svg path{opacity:1;stroke-dasharray:1500 1500;-webkit-animation:hide-highlight .4s forwards;animation:hide-highlight .4s forwards;-webkit-animation-iteration-count:1;animation-iteration-count:1}@-webkit-keyframes elementor-headline-dash{0%{stroke-dasharray:0 1500;opacity:1}to{stroke-dasharray:1500 1500;opacity:1}}@keyframes elementor-headline-dash{0%{stroke-dasharray:0 1500;opacity:1}to{stroke-dasharray:1500 1500;opacity:1}}@-webkit-keyframes hide-highlight{0%{opacity:1;stroke-dasharray:1500 1500}to{opacity:0;-webkit-filter:blur(10px);filter:blur(10px)}}@keyframes hide-highlight{0%{opacity:1;stroke-dasharray:1500 1500}to{opacity:0;-webkit-filter:blur(10px);filter:blur(10px)}}.elementor-headline-text-wrapper{vertical-align:bottom}.elementor-headline-dynamic-wrapper{display:inline-block;position:relative}.elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text{display:inline-block;position:absolute;top:0;left:0}.elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text.elementor-headline-text-active{position:relative}.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text{opacity:0;-webkit-transform-origin:50% 100%;-ms-transform-origin:50% 100%;transform-origin:50% 100%;-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-transform:rotateX(0deg);transform:rotateX(0deg);-webkit-animation:elementor-headline-flip-in 1.2s;animation:elementor-headline-flip-in 1.2s}.elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);-webkit-animation:elementor-headline-flip-out 1.2s;animation:elementor-headline-flip-out 1.2s}@-webkit-keyframes elementor-headline-flip-in{0%{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}35%{-webkit-transform:rotateX(120deg);transform:rotateX(120deg);opacity:0}65%{opacity:0}to{-webkit-transform:rotateX(1turn);transform:rotateX(1turn);opacity:1}}@keyframes elementor-headline-flip-in{0%{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}35%{-webkit-transform:rotateX(120deg);transform:rotateX(120deg);opacity:0}65%{opacity:0}to{-webkit-transform:rotateX(1turn);transform:rotateX(1turn);opacity:1}}@-webkit-keyframes elementor-headline-flip-out{0%{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}35%{-webkit-transform:rotateX(-40deg);transform:rotateX(-40deg);opacity:1}65%{opacity:0}to{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}}@keyframes elementor-headline-flip-out{0%{-webkit-transform:rotateX(0deg);transform:rotateX(0deg);opacity:1}35%{-webkit-transform:rotateX(-40deg);transform:rotateX(-40deg);opacity:1}65%{opacity:0}to{-webkit-transform:rotateX(180deg);transform:rotateX(180deg);opacity:0}}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper{vertical-align:top;overflow:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:after{content:"";position:absolute;left:auto;right:0;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);height:90%;width:1px;background-color:#0d0d0d}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:not(.elementor-headline-typing-selected):after{-webkit-animation:elementor-headline-pulse 1s infinite;animation:elementor-headline-pulse 1s infinite}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected{background-color:var(--typing-selected-bg-color,#0d0d0d)}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected:after{visibility:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected .elementor-headline-dynamic-text{color:var(--typing-selected-color,var(--dynamic-text-color),#aebcb9)}.elementor-headline-animation-type-typing .elementor-headline-dynamic-text:not(.elementor-headline-text-active){visibility:hidden}.elementor-headline-animation-type-typing .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){position:absolute;visibility:hidden}@-webkit-keyframes elementor-headline-pulse{0%{-webkit-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);transform:translateY(-50%) scale(.9);opacity:0}to{-webkit-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);opacity:0}}@keyframes elementor-headline-pulse{0%{-webkit-transform:translateY(-50%) scale(1);transform:translateY(-50%) scale(1);opacity:1}40%{-webkit-transform:translateY(-50%) scale(.9);transform:translateY(-50%) scale(.9);opacity:0}to{-webkit-transform:translateY(-50%) scale(0);transform:translateY(-50%) scale(0);opacity:0}}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{display:inline-block;-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text{-webkit-transform:scaleX(1.0005);-ms-transform:scaleX(1.0005);transform:scaleX(1.0005);opacity:0}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg);opacity:0}.elementor-headline-text-active .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter{opacity:1}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-swirl-in .4s forwards;animation:elementor-headline-swirl-in .4s forwards}.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-swirl-out .4s forwards;animation:elementor-headline-swirl-out .4s forwards}@-webkit-keyframes elementor-headline-swirl-in{0%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(-10deg);transform:translateZ(-20px) rotateX(-10deg)}to{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0deg);transform:translateZ(-20px) rotateX(0deg)}}@keyframes elementor-headline-swirl-in{0%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(90deg);transform:translateZ(-20px) rotateX(90deg)}60%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(-10deg);transform:translateZ(-20px) rotateX(-10deg)}to{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0deg);transform:translateZ(-20px) rotateX(0deg)}}@-webkit-keyframes elementor-headline-swirl-out{0%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0);transform:translateZ(-20px) rotateX(0)}60%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-100deg);transform:translateZ(-20px) rotateX(-100deg)}to{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-90deg);transform:translateZ(-20px) rotateX(-90deg)}}@keyframes elementor-headline-swirl-out{0%{opacity:1;-webkit-transform:translateZ(-20px) rotateX(0);transform:translateZ(-20px) rotateX(0)}60%{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-100deg);transform:translateZ(-20px) rotateX(-100deg)}to{opacity:0;-webkit-transform:translateZ(-20px) rotateX(-90deg);transform:translateZ(-20px) rotateX(-90deg)}}.elementor-headline-animation-type-slide-down .elementor-headline-text-wrapper{display:inline-block;padding:.2em 0}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper{overflow:hidden;vertical-align:top}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text{opacity:0;top:.2em}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-active{top:0;opacity:1;-webkit-animation:elementor-headline-slide-down-in .6s;animation:elementor-headline-slide-down-in .6s}.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-slide-down-out .6s;animation:elementor-headline-slide-down-out .6s}@-webkit-keyframes elementor-headline-slide-down-in{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}60%{opacity:1;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes elementor-headline-slide-down-in{0%{opacity:0;-webkit-transform:translateY(-100%);transform:translateY(-100%)}60%{opacity:1;-webkit-transform:translateY(20%);transform:translateY(20%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes elementor-headline-slide-down-out{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}60%{opacity:0;-webkit-transform:translateY(120%);transform:translateY(120%)}to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes elementor-headline-slide-down-out{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}60%{opacity:0;-webkit-transform:translateY(120%);transform:translateY(120%)}to{opacity:0;-webkit-transform:translateY(100%);transform:translateY(100%)}}.elementor-headline-animation-type-clip .elementor-headline-text-wrapper{display:inline-block;padding:.2em 0}.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper{overflow:hidden;vertical-align:top}.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper:after{content:"";position:absolute;top:0;left:auto;right:0;width:2px;height:100%;background-color:#0d0d0d}.elementor-headline-animation-type-clip .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-clip .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-animation:elementor-headline-drop-in-in .8s;animation:elementor-headline-drop-in-in .8s}.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-drop-in-out .8s;animation:elementor-headline-drop-in-out .8s}@-webkit-keyframes elementor-headline-drop-in-in{0%{opacity:0;-webkit-transform:translateZ(100px);transform:translateZ(100px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes elementor-headline-drop-in-in{0%{opacity:0;-webkit-transform:translateZ(100px);transform:translateZ(100px)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@-webkit-keyframes elementor-headline-drop-in-out{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translateZ(-100px);transform:translateZ(-100px)}}@keyframes elementor-headline-drop-in-out{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translateZ(-100px);transform:translateZ(-100px)}}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper{-webkit-perspective:300px;perspective:300px}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter{display:inline-block;-webkit-transform:rotateY(180deg);transform:rotateY(180deg);-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-headline-text-active .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-blinds-in .6s forwards;animation:elementor-headline-blinds-in .6s forwards}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-blinds-out .6s forwards;animation:elementor-headline-blinds-out .6s forwards}@-webkit-keyframes elementor-headline-blinds-in{0%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}to{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}}@keyframes elementor-headline-blinds-in{0%{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}to{-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}}@-webkit-keyframes elementor-headline-blinds-out{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}to{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}}@keyframes elementor-headline-blinds-out{0%{-webkit-transform:rotateY(0);transform:rotateY(0)}to{-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}}.elementor-headline-animation-type-wave .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter{display:inline-block;opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.elementor-headline-text-active .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter{opacity:1}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter.elementor-headline-animation-in{-webkit-animation:elementor-headline-wave-up .6s forwards;animation:elementor-headline-wave-up .6s forwards}.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in){-webkit-animation:elementor-headline-wave-down .6s forwards;animation:elementor-headline-wave-down .6s forwards}@-webkit-keyframes elementor-headline-wave-up{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}60%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes elementor-headline-wave-up{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}60%{-webkit-transform:scale(1.2);transform:scale(1.2);opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes elementor-headline-wave-down{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}60%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}@keyframes elementor-headline-wave-down{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}60%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text{opacity:0}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-active{opacity:1;-webkit-animation:elementor-headline-slide-in .6s;animation:elementor-headline-slide-in .6s}.elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-inactive{-webkit-animation:elementor-headline-slide-out .6s;animation:elementor-headline-slide-out .6s}@-webkit-keyframes elementor-headline-slide-in{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}60%{opacity:1;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes elementor-headline-slide-in{0%{opacity:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}60%{opacity:1;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes elementor-headline-slide-out{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}60%{opacity:0;-webkit-transform:translateX(110%);transform:translateX(110%)}to{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes elementor-headline-slide-out{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}60%{opacity:0;-webkit-transform:translateX(110%);transform:translateX(110%)}to{opacity:0;-webkit-transform:translateX(100%);transform:translateX(100%)}}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-slide .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper{-webkit-transition:width .5s;-o-transition:width .5s;transition:width .5s}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper,.elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper{overflow:hidden}.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text,.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text,.elementor-headline-animation-type-wave .elementor-headline-dynamic-text{white-space:nowrap}.elementor-msie .elementor-headline--style-highlight svg{top:auto;left:auto;-webkit-transform:translate(-100%);-ms-transform:translate(-100%);transform:translate(-100%)}@-webkit-keyframes e-hotspot-soft-beat{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.1);transform:scale(1.1)}}@keyframes e-hotspot-soft-beat{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.1);transform:scale(1.1)}}@-webkit-keyframes e-hotspot-expand{0%{-webkit-transform:scale(.5);transform:scale(.5);opacity:1}to{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}@keyframes e-hotspot-expand{0%{-webkit-transform:scale(.5);transform:scale(.5);opacity:1}to{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}.elementor-widget-hotspot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--background-align);-ms-flex-pack:var(--background-align);justify-content:var(--background-align)}.elementor-widget-hotspot .elementor-widget-container{position:relative;display:inline-block;width:var(--container-width);max-width:var(--container-max-width);height:var(--container-height)}.elementor-widget-hotspot .elementor-widget-container>img{display:block;width:var(--image-width,auto);height:var(--container-height);opacity:var(--opacity,1)}.e-hotspot{z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:absolute}.e-hotspot--position-left.e-hotspot--position-top{-webkit-transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)));-ms-transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)));transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)))}.e-hotspot--position-left.e-hotspot--position-bottom{-webkit-transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y));-ms-transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y));transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y))}.e-hotspot--position-right.e-hotspot--position-top{-webkit-transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)));-ms-transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)));transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)))}.e-hotspot--position-right.e-hotspot--position-bottom{-webkit-transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y));-ms-transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y));transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y))}.e-hotspot--active{z-index:2}.e-hotspot__inner-circle,.e-hotspot__outer-circle{content:"";display:inline-block;-webkit-box-sizing:content-box;box-sizing:content-box;border-radius:50%}.e-hotspot__inner-circle{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background-color:var(--hotspot-color);padding:calc(var(--hotspot-size, 18px) / 2)}.e-hotspot__outer-circle{background-color:var(--hotspot-color);padding:var(--hotspot-padding,4px)}.e-hotspot--icon .e-hotspot__button,.e-hotspot__outer-circle{width:var(--hotspot-size,18px);height:var(--hotspot-size,18px)}.e-hotspot--icon .e-hotspot__button{line-height:0;-webkit-box-sizing:content-box;box-sizing:content-box;font-size:var(--hotspot-size,18px)}.e-hotspot__icon,.e-hotspot__label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.e-hotspot__icon svg,.e-hotspot__label svg{width:var(--hotspot-size,18px);height:auto}.e-hotspot__button{cursor:pointer;position:relative;display:grid;grid-auto-flow:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--hotspot-color);font-size:var(--hotspot-size,18px);min-width:var(--hotspot-button-width);min-height:var(--hotspot-button-height)}.e-hotspot__button:before{z-index:-2;content:"";width:100%;height:100%;left:-5px;top:-5px;position:absolute;padding:5px;-webkit-box-sizing:content-box;box-sizing:content-box}.e-hotspot__button svg{fill:var(--hotspot-color)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot__button{min-width:var(--hotspot-min-width);min-height:var(--hotspot-min-height);background-color:var(--hotspot-box-color);padding:var(--hotspot-padding,4px);border-radius:var(--hotspot-border-radius,3px)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot__button:before{border-radius:var(--hotspot-border-radius,3px)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{background-color:var(--hotspot-box-color)}.e-hotspot--overlay{opacity:.7;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.e-hotspot--active .e-hotspot--overlay,.e-hotspot--overlay:hover{opacity:1}.e-hotspot--soft-beat{-webkit-animation:e-hotspot-soft-beat .7s infinite alternate;animation:e-hotspot-soft-beat .7s infinite alternate;-webkit-animation-timing-function:ease;animation-timing-function:ease}.e-hotspot--expand .e-hotspot__outer-circle,.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{-webkit-animation:e-hotspot-expand 2s infinite;animation:e-hotspot-expand 2s infinite}.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{content:"";width:100%;height:100%;position:absolute;z-index:-1;opacity:0}.e-hotspot--sequenced{-webkit-animation:fadeIn .3s;animation:fadeIn .3s;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-fill-mode:both;animation-fill-mode:both}.e-hotspot__direction-mask{overflow:hidden;position:absolute;pointer-events:none}.e-hotspot__tooltip{white-space:var(--white-space,nowrap);-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-duration:var(--tooltip-transition-duration,.5s);-o-transition-duration:var(--tooltip-transition-duration,.5s);transition-duration:var(--tooltip-transition-duration,.5s);-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;position:absolute;pointer-events:none;color:var(--tooltip-text-color,#fff);text-align:var(--tooltip-align);min-width:var(--tooltip-min-width);padding:var(--tooltip-padding,8px);border-radius:var(--tooltip-border-radius);background-color:var(--tooltip-color)}.e-hotspot__tooltip p:last-of-type{margin-bottom:0}.e-hotspot__direction-mask .e-hotspot__tooltip{-webkit-box-shadow:none!important;box-shadow:none!important;position:static}.e-hotspot--active .e-hotspot__tooltip{pointer-events:visible}.e-hotspot--fade-in-out{opacity:0}.e-hotspot--active .e-hotspot--fade-in-out{opacity:1}.e-hotspot--fade-grow{opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.e-hotspot--active .e-hotspot--fade-grow{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.e-hotspot--override-tooltip-animation-from-top,.e-hotspot--tooltip-animation-from-top{-webkit-transform:translateY(calc(-100% - 1px));-ms-transform:translateY(calc(-100% - 1px));transform:translateY(calc(-100% - 1px))}.e-hotspot--override-tooltip-animation-from-left,.e-hotspot--tooltip-animation-from-left{-webkit-transform:translate(calc(-100% - 1px));-ms-transform:translate(calc(-100% - 1px));transform:translate(calc(-100% - 1px))}.e-hotspot--override-tooltip-animation-from-right,.e-hotspot--tooltip-animation-from-right{-webkit-transform:translate(calc(100% + 1px));-ms-transform:translate(calc(100% + 1px));transform:translate(calc(100% + 1px))}.e-hotspot--override-tooltip-animation-from-bottom,.e-hotspot--tooltip-animation-from-bottom{-webkit-transform:translateY(calc(100% + 1px));-ms-transform:translateY(calc(100% + 1px));transform:translateY(calc(100% + 1px))}.e-hotspot--fade-direction{opacity:0}.e-hotspot--active .e-hotspot--fade-direction,.e-hotspot--active .e-hotspot--slide-direction{-webkit-transform:translate(0) scale(1);-ms-transform:translate(0) scale(1);transform:translate(0) scale(1);opacity:1}.e-hotspot--show-tooltip{-webkit-transition:none;-o-transition:none;transition:none;opacity:1;pointer-events:visible;-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}.elementor-facebook-widget.fb_iframe_widget,.elementor-facebook-widget.fb_iframe_widget span{width:100%!important}.elementor-facebook-widget.fb_iframe_widget iframe{position:relative;width:100%!important}.elementor-facebook-widget.fb-like{height:1px}.elementor-widget-facebook-comments iframe{width:100%!important}.site-main .menu-navigation-container{overflow:visible}.elementor-item:after,.elementor-item:before{display:block;position:absolute;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transition-timing-function:cubic-bezier(.58,.3,.005,1);-o-transition-timing-function:cubic-bezier(.58,.3,.005,1);transition-timing-function:cubic-bezier(.58,.3,.005,1)}.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{opacity:0}.elementor-item-active:after,.elementor-item-active:before,.elementor-item.highlighted:after,.elementor-item.highlighted:before,.elementor-item:focus:after,.elementor-item:focus:before,.elementor-item:hover:after,.elementor-item:hover:before{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.e--pointer-double-line .elementor-item:after,.e--pointer-double-line .elementor-item:before,.e--pointer-overline .elementor-item:after,.e--pointer-overline .elementor-item:before,.e--pointer-underline .elementor-item:after,.e--pointer-underline .elementor-item:before{height:3px;width:100%;left:0;background-color:#55595c;z-index:2}.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{height:0;width:0;left:50%}.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:10px}.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{bottom:10px}.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:-10px}.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{bottom:-10px}.e--pointer-double-line.e--animation-none,.e--pointer-double-line.e--animation-none .elementor-item,.e--pointer-double-line.e--animation-none .elementor-item:after,.e--pointer-double-line.e--animation-none .elementor-item:before,.e--pointer-double-line.e--animation-none .elementor-item:focus,.e--pointer-double-line.e--animation-none .elementor-item:hover,.e--pointer-double-line.e--animation-none:after,.e--pointer-double-line.e--animation-none:before,.e--pointer-double-line.e--animation-none:focus,.e--pointer-double-line.e--animation-none:hover,.e--pointer-overline.e--animation-none,.e--pointer-overline.e--animation-none .elementor-item,.e--pointer-overline.e--animation-none .elementor-item:after,.e--pointer-overline.e--animation-none .elementor-item:before,.e--pointer-overline.e--animation-none .elementor-item:focus,.e--pointer-overline.e--animation-none .elementor-item:hover,.e--pointer-overline.e--animation-none:after,.e--pointer-overline.e--animation-none:before,.e--pointer-overline.e--animation-none:focus,.e--pointer-overline.e--animation-none:hover,.e--pointer-underline.e--animation-none,.e--pointer-underline.e--animation-none .elementor-item,.e--pointer-underline.e--animation-none .elementor-item:after,.e--pointer-underline.e--animation-none .elementor-item:before,.e--pointer-underline.e--animation-none .elementor-item:focus,.e--pointer-underline.e--animation-none .elementor-item:hover,.e--pointer-underline.e--animation-none:after,.e--pointer-underline.e--animation-none:before,.e--pointer-underline.e--animation-none:focus,.e--pointer-underline.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-double-line .elementor-item:before,.e--pointer-overline .elementor-item:before{content:"";top:0}.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{width:10px;left:-20px}.e--pointer-double-line .elementor-item:after,.e--pointer-underline .elementor-item:after{content:"";bottom:0}.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{width:10px;inset-inline-start:100%}.e--pointer-framed .elementor-item:after,.e--pointer-framed .elementor-item:before{background:transparent;left:0;top:0;bottom:0;right:0;border:3px solid #55595c}.e--pointer-framed .elementor-item:before{content:""}.e--pointer-framed.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(.75);-ms-transform:scale(.75);transform:scale(.75)}.e--pointer-framed.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(1.25);-ms-transform:scale(1.25);transform:scale(1.25)}.e--pointer-framed.e--animation-grow .elementor-item:before,.e--pointer-framed.e--animation-shrink .elementor-item:before{-webkit-transition:opacity .2s,-webkit-transform .4s;transition:opacity .2s,-webkit-transform .4s;-o-transition:opacity .2s,transform .4s;transition:opacity .2s,transform .4s;transition:opacity .2s,transform .4s,-webkit-transform .4s}.e--pointer-framed.e--animation-draw .elementor-item:after,.e--pointer-framed.e--animation-draw .elementor-item:before{width:3px;height:3px}.e--pointer-framed.e--animation-draw .elementor-item:before{border-width:0 0 3px 3px;-webkit-transition:width .1s .2s,height .1s .3s,opacity .12s .22s;-o-transition:width .1s .2s,height .1s .3s,opacity .12s .22s;transition:width .1s .2s,height .1s .3s,opacity .12s .22s}.e--pointer-framed.e--animation-draw .elementor-item:after{content:"";top:auto;bottom:0;left:auto;right:0;border-width:3px 3px 0 0;-webkit-transition:width .1s,height .1s .1s,opacity .02s .18s;-o-transition:width .1s,height .1s .1s,opacity .02s .18s;transition:width .1s,height .1s .1s,opacity .02s .18s}.e--pointer-framed.e--animation-draw .elementor-item-active:after,.e--pointer-framed.e--animation-draw .elementor-item-active:before,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,.e--pointer-framed.e--animation-draw .elementor-item:focus:after,.e--pointer-framed.e--animation-draw .elementor-item:focus:before,.e--pointer-framed.e--animation-draw .elementor-item:hover:after,.e--pointer-framed.e--animation-draw .elementor-item:hover:before{width:100%;height:100%}.e--pointer-framed.e--animation-draw .elementor-item-active:before,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,.e--pointer-framed.e--animation-draw .elementor-item:focus:before,.e--pointer-framed.e--animation-draw .elementor-item:hover:before{-webkit-transition:opacity .02s,height .1s,width .1s .1s;-o-transition:opacity .02s,height .1s,width .1s .1s;transition:opacity .02s,height .1s,width .1s .1s}.e--pointer-framed.e--animation-draw .elementor-item-active:after,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,.e--pointer-framed.e--animation-draw .elementor-item:focus:after,.e--pointer-framed.e--animation-draw .elementor-item:hover:after{-webkit-transition:opacity .02s .2s,height .1s .2s,width .1s .3s;-o-transition:opacity .02s .2s,height .1s .2s,width .1s .3s;transition:opacity .02s .2s,height .1s .2s,width .1s .3s}.e--pointer-framed.e--animation-corners .elementor-item:after,.e--pointer-framed.e--animation-corners .elementor-item:before{width:3px;height:3px}.e--pointer-framed.e--animation-corners .elementor-item:before{border-width:3px 0 0 3px}.e--pointer-framed.e--animation-corners .elementor-item:after{content:"";top:auto;bottom:0;left:auto;right:0;border-width:0 3px 3px 0}.e--pointer-framed.e--animation-corners .elementor-item-active:after,.e--pointer-framed.e--animation-corners .elementor-item-active:before,.e--pointer-framed.e--animation-corners .elementor-item.highlighted:after,.e--pointer-framed.e--animation-corners .elementor-item.highlighted:before,.e--pointer-framed.e--animation-corners .elementor-item:focus:after,.e--pointer-framed.e--animation-corners .elementor-item:focus:before,.e--pointer-framed.e--animation-corners .elementor-item:hover:after,.e--pointer-framed.e--animation-corners .elementor-item:hover:before{width:100%;height:100%;-webkit-transition:opacity 2ms,width .4s,height .4s;-o-transition:opacity 2ms,width .4s,height .4s;transition:opacity 2ms,width .4s,height .4s}.e--pointer-framed.e--animation-none,.e--pointer-framed.e--animation-none .elementor-item,.e--pointer-framed.e--animation-none .elementor-item:after,.e--pointer-framed.e--animation-none .elementor-item:before,.e--pointer-framed.e--animation-none .elementor-item:focus,.e--pointer-framed.e--animation-none .elementor-item:hover,.e--pointer-framed.e--animation-none:after,.e--pointer-framed.e--animation-none:before,.e--pointer-framed.e--animation-none:focus,.e--pointer-framed.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-background .elementor-item:after,.e--pointer-background .elementor-item:before{content:"";-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.e--pointer-background .elementor-item:before{top:0;left:0;right:0;bottom:0;background:#55595c;z-index:-1}.e--pointer-background .elementor-item-active,.e--pointer-background .elementor-item.highlighted,.e--pointer-background .elementor-item:focus,.e--pointer-background .elementor-item:hover{color:#fff}.e--pointer-background.e--animation-grow .elementor-item:before{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}.e--pointer-background.e--animation-grow .elementor-item-active:before,.e--pointer-background.e--animation-grow .elementor-item.highlighted:before,.e--pointer-background.e--animation-grow .elementor-item:focus:before,.e--pointer-background.e--animation-grow .elementor-item:hover:before{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.e--pointer-background.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.e--pointer-background.e--animation-shrink .elementor-item-active:before,.e--pointer-background.e--animation-shrink .elementor-item.highlighted:before,.e--pointer-background.e--animation-shrink .elementor-item:focus:before,.e--pointer-background.e--animation-shrink .elementor-item:hover:before{-webkit-transition:opacity .15s,-webkit-transform .4s;transition:opacity .15s,-webkit-transform .4s;-o-transition:opacity .15s,transform .4s;transition:opacity .15s,transform .4s;transition:opacity .15s,transform .4s,-webkit-transform .4s}.e--pointer-background.e--animation-sweep-left .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{left:100%}.e--pointer-background.e--animation-sweep-right .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{right:100%}.e--pointer-background.e--animation-sweep-up .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:100%}.e--pointer-background.e--animation-sweep-down .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{bottom:100%}.e--pointer-background.e--animation-shutter-out-vertical .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{bottom:50%;top:50%}.e--pointer-background.e--animation-shutter-out-horizontal .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{right:50%;left:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after{top:0;left:0;right:0;bottom:0;background:#55595c;z-index:-1}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:before{top:0;bottom:100%}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after{top:100%;bottom:0}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:before{bottom:50%}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:after{top:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:before{right:0;left:100%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after{right:100%;left:0}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:before{left:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:after{right:50%}.e--pointer-background.e--animation-none,.e--pointer-background.e--animation-none .elementor-item,.e--pointer-background.e--animation-none .elementor-item:after,.e--pointer-background.e--animation-none .elementor-item:before,.e--pointer-background.e--animation-none .elementor-item:focus,.e--pointer-background.e--animation-none .elementor-item:hover,.e--pointer-background.e--animation-none:after,.e--pointer-background.e--animation-none:before,.e--pointer-background.e--animation-none:focus,.e--pointer-background.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-text.e--animation-skew .elementor-item:focus,.e--pointer-text.e--animation-skew .elementor-item:hover{-webkit-transform:skew(-8deg);-ms-transform:skew(-8deg);transform:skew(-8deg)}.e--pointer-text.e--animation-grow .elementor-item:focus,.e--pointer-text.e--animation-grow .elementor-item:hover{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.e--pointer-text.e--animation-shrink .elementor-item:focus,.e--pointer-text.e--animation-shrink .elementor-item:hover{-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}.e--pointer-text.e--animation-float .elementor-item:focus,.e--pointer-text.e--animation-float .elementor-item:hover{-webkit-transform:translateY(-8px);-ms-transform:translateY(-8px);transform:translateY(-8px)}.e--pointer-text.e--animation-sink .elementor-item:focus,.e--pointer-text.e--animation-sink .elementor-item:hover{-webkit-transform:translateY(8px);-ms-transform:translateY(8px);transform:translateY(8px)}.e--pointer-text.e--animation-rotate .elementor-item:focus,.e--pointer-text.e--animation-rotate .elementor-item:hover{-webkit-transform:rotate(6deg);-ms-transform:rotate(6deg);transform:rotate(6deg)}.e--pointer-text.e--animation-none,.e--pointer-text.e--animation-none .elementor-item,.e--pointer-text.e--animation-none .elementor-item:after,.e--pointer-text.e--animation-none .elementor-item:before,.e--pointer-text.e--animation-none .elementor-item:focus,.e--pointer-text.e--animation-none .elementor-item:hover,.e--pointer-text.e--animation-none:after,.e--pointer-text.e--animation-none:before,.e--pointer-text.e--animation-none:focus,.e--pointer-text.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.elementor-nav-menu--main .elementor-nav-menu a{-webkit-transition:.4s;-o-transition:.4s;transition:.4s}.elementor-nav-menu--main .elementor-nav-menu a,.elementor-nav-menu--main .elementor-nav-menu a.highlighted,.elementor-nav-menu--main .elementor-nav-menu a:focus,.elementor-nav-menu--main .elementor-nav-menu a:hover{padding:13px 20px}.elementor-nav-menu--main .elementor-nav-menu a.current{background:#373a3c;color:#fff}.elementor-nav-menu--main .elementor-nav-menu a.disabled{background:#55595c;color:#a1a6a9}.elementor-nav-menu--main .elementor-nav-menu ul{position:absolute;width:12em;border-width:0;border-style:solid;padding:0}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down,.elementor-nav-menu--main .elementor-nav-menu span.scroll-up{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:20px}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow,.elementor-nav-menu--main .elementor-nav-menu span.scroll-up-arrow{position:absolute;top:-2px;left:50%;margin-left:-8px;width:0;height:0;overflow:hidden;border:8px dashed transparent;border-bottom:8px solid #494c4f}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow{top:6px;border-style:solid dashed dashed;border-color:#494c4f transparent transparent}.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow i{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow .e-font-icon-svg{height:1em;width:1em}.elementor-nav-menu--layout-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-nav-menu--layout-horizontal .elementor-nav-menu{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-nav-menu--layout-horizontal .elementor-nav-menu a{white-space:nowrap;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li>.scroll-down,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li ul{top:100%!important}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>a{-webkit-margin-start:var(--e-nav-menu-horizontal-menu-item-margin);margin-inline-start:var(--e-nav-menu-horizontal-menu-item-margin)}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>.scroll-down,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>.scroll-up,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>ul{left:var(--e-nav-menu-horizontal-menu-item-margin)!important}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:last-child)>a{-webkit-margin-end:var(--e-nav-menu-horizontal-menu-item-margin);margin-inline-end:var(--e-nav-menu-horizontal-menu-item-margin)}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:last-child):after{content:var(--e-nav-menu-divider-content,none);height:var(--e-nav-menu-divider-height,35%);border-left:var(--e-nav-menu-divider-width,2px) var(--e-nav-menu-divider-style,solid) var(--e-nav-menu-divider-color,#000);border-bottom-color:var(--e-nav-menu-divider-color,#000);border-right-color:var(--e-nav-menu-divider-color,#000);border-top-color:var(--e-nav-menu-divider-color,#000);-ms-flex-item-align:center;align-self:center}.elementor-nav-menu__align-right .elementor-nav-menu{margin-left:auto}.elementor-nav-menu__align-right .elementor-nav-menu,.elementor-nav-menu__align-right .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-nav-menu__align-left .elementor-nav-menu{margin-right:auto}.elementor-nav-menu__align-left .elementor-nav-menu,.elementor-nav-menu__align-left .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-nav-menu__align-center .elementor-nav-menu{margin-left:auto;margin-right:auto}.elementor-nav-menu__align-center .elementor-nav-menu,.elementor-nav-menu__align-center .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu{width:100%}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu>li{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-nav-menu:not(.elementor-nav-menu--toggle) .elementor-menu-toggle{display:none}.elementor-widget-nav-menu .elementor-widget-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-nav-menu{position:relative;z-index:2}.elementor-nav-menu:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.elementor-nav-menu,.elementor-nav-menu li,.elementor-nav-menu ul{display:block;list-style:none;margin:0;padding:0;line-height:normal;-webkit-tap-highlight-color:rgba(0,0,0,0)}.elementor-nav-menu ul{display:none}.elementor-nav-menu ul ul a,.elementor-nav-menu ul ul a:active,.elementor-nav-menu ul ul a:focus,.elementor-nav-menu ul ul a:hover{border-left:16px solid transparent}.elementor-nav-menu ul ul ul a,.elementor-nav-menu ul ul ul a:active,.elementor-nav-menu ul ul ul a:focus,.elementor-nav-menu ul ul ul a:hover{border-left:24px solid transparent}.elementor-nav-menu ul ul ul ul a,.elementor-nav-menu ul ul ul ul a:active,.elementor-nav-menu ul ul ul ul a:focus,.elementor-nav-menu ul ul ul ul a:hover{border-left:32px solid transparent}.elementor-nav-menu ul ul ul ul ul a,.elementor-nav-menu ul ul ul ul ul a:active,.elementor-nav-menu ul ul ul ul ul a:focus,.elementor-nav-menu ul ul ul ul ul a:hover{border-left:40px solid transparent}.elementor-nav-menu a,.elementor-nav-menu li{position:relative}.elementor-nav-menu li{border-width:0}.elementor-nav-menu a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-nav-menu a,.elementor-nav-menu a:focus,.elementor-nav-menu a:hover{padding:10px 20px;line-height:20px}.elementor-nav-menu a.current{background:#373a3c;color:#fff}.elementor-nav-menu a.disabled{cursor:not-allowed;color:#a1a6a9}.elementor-nav-menu .e-plus-icon:before{content:"+"}.elementor-nav-menu .sub-arrow{line-height:1;padding:10px 0 10px 10px;margin-top:-10px;margin-bottom:-10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-nav-menu .sub-arrow i{pointer-events:none}.elementor-nav-menu .sub-arrow .fa.fa-chevron-down,.elementor-nav-menu .sub-arrow .fas.fa-chevron-down{font-size:.7em}.elementor-nav-menu .sub-arrow .e-font-icon-svg{height:1em;width:1em}.elementor-nav-menu .sub-arrow .e-font-icon-svg.fa-svg-chevron-down{height:.7em;width:.7em}.elementor-nav-menu--dropdown .elementor-item.elementor-item-active,.elementor-nav-menu--dropdown .elementor-item.highlighted,.elementor-nav-menu--dropdown .elementor-item:focus,.elementor-nav-menu--dropdown .elementor-item:hover,.elementor-sub-item.elementor-item-active,.elementor-sub-item.highlighted,.elementor-sub-item:focus,.elementor-sub-item:hover{background-color:#55595c;color:#fff}.elementor-menu-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:22px;padding:.25em;cursor:pointer;border:0 solid;border-radius:3px;background-color:rgba(0,0,0,.05);color:#494c4f}.elementor-menu-toggle.elementor-active .elementor-menu-toggle__icon--open,.elementor-menu-toggle:not(.elementor-active) .elementor-menu-toggle__icon--close{display:none}.elementor-menu-toggle .e-font-icon-svg{fill:#494c4f;height:1em;width:1em}.elementor-nav-menu--dropdown{background-color:#fff;font-size:13px}.elementor-nav-menu--dropdown-none .elementor-menu-toggle,.elementor-nav-menu--dropdown-none .elementor-nav-menu--dropdown{display:none}.elementor-nav-menu--dropdown.elementor-nav-menu__container{margin-top:10px;-webkit-transition:max-height .3s,-webkit-transform .3s;transition:max-height .3s,-webkit-transform .3s;-o-transition:max-height .3s,transform .3s;transition:max-height .3s,transform .3s;transition:max-height .3s,transform .3s,-webkit-transform .3s;-webkit-transform-origin:top;-ms-transform-origin:top;transform-origin:top;overflow:auto}.elementor-nav-menu--dropdown.elementor-nav-menu__container .elementor-sub-item{font-size:.85em}.elementor-nav-menu--dropdown a{color:#494c4f}.elementor-nav-menu--dropdown a.current{background:#373a3c;color:#fff}.elementor-nav-menu--dropdown a.disabled{color:#b3b3b3}ul.elementor-nav-menu--dropdown a,ul.elementor-nav-menu--dropdown a:focus,ul.elementor-nav-menu--dropdown a:hover{text-shadow:none;border-left:8px solid transparent}.elementor-nav-menu__text-align-center .elementor-nav-menu--dropdown .elementor-nav-menu a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-nav-menu--toggle .elementor-menu-toggle:not(.elementor-active)+.elementor-nav-menu__container{-webkit-transform:scaleY(0);-ms-transform:scaleY(0);transform:scaleY(0);max-height:0}.elementor-nav-menu--toggle .elementor-menu-toggle.elementor-active+.elementor-nav-menu__container{-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);max-height:100vh}.elementor-nav-menu--stretch .elementor-nav-menu__container.elementor-nav-menu--dropdown{position:absolute;z-index:9997}@media (max-width:767px){.elementor-nav-menu--dropdown-mobile .elementor-nav-menu--main{display:none}}@media (min-width:768px){.elementor-nav-menu--dropdown-mobile .elementor-menu-toggle,.elementor-nav-menu--dropdown-mobile .elementor-nav-menu--dropdown{display:none}}@media (max-width:-1px){.elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--main{display:none}}@media (min-width:-1px){.elementor-nav-menu--dropdown-mobile_extra .elementor-menu-toggle,.elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--dropdown{display:none}}@media (min-width:1025px){.elementor-nav-menu--dropdown-tablet .elementor-menu-toggle,.elementor-nav-menu--dropdown-tablet .elementor-nav-menu--dropdown{display:none}}@media (max-width:1024px){.elementor-nav-menu--dropdown-tablet .elementor-nav-menu--main{display:none}}@media (max-width:-1px){.elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--main{display:none}}@media (min-width:-1px){.elementor-nav-menu--dropdown-tablet_extra .elementor-menu-toggle,.elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--dropdown{display:none}}.elementor-gallery__container{min-height:1px}.elementor-gallery-item{position:relative;overflow:hidden;display:block;text-decoration:none;border:solid var(--image-border-width) var(--image-border-color);border-radius:var(--image-border-radius)}.elementor-gallery-item__content,.elementor-gallery-item__overlay{height:100%;width:100%;position:absolute;top:0;left:0}.elementor-gallery-item__overlay{mix-blend-mode:var(--overlay-mix-blend-mode);-webkit-transition-duration:var(--overlay-transition-duration);-o-transition-duration:var(--overlay-transition-duration);transition-duration:var(--overlay-transition-duration);-webkit-transition-property:mix-blend-mode,opacity,background-color,-webkit-transform;transition-property:mix-blend-mode,opacity,background-color,-webkit-transform;-o-transition-property:mix-blend-mode,transform,opacity,background-color;transition-property:mix-blend-mode,transform,opacity,background-color;transition-property:mix-blend-mode,transform,opacity,background-color,-webkit-transform}.elementor-gallery-item__image.e-gallery-image{-webkit-transition-duration:var(--image-transition-duration);-o-transition-duration:var(--image-transition-duration);transition-duration:var(--image-transition-duration);-webkit-transition-property:-webkit-filter,-webkit-transform;transition-property:-webkit-filter,-webkit-transform;-o-transition-property:filter,transform;transition-property:filter,transform;transition-property:filter,transform,-webkit-filter,-webkit-transform}.elementor-gallery-item__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:var(--content-justify-content,center);-ms-flex-pack:var(--content-justify-content,center);justify-content:var(--content-justify-content,center);-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:var(--content-text-align);padding:var(--content-padding)}.elementor-gallery-item__content>div{-webkit-transition-duration:var(--content-transition-duration);-o-transition-duration:var(--content-transition-duration);transition-duration:var(--content-transition-duration)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(2){-webkit-transition-delay:calc((var(--content-transition-delay) / 3));-o-transition-delay:calc((var(--content-transition-delay) / 3));transition-delay:calc((var(--content-transition-delay) / 3))}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(3){-webkit-transition-delay:calc((var(--content-transition-delay) / 3) * 2);-o-transition-delay:calc((var(--content-transition-delay) / 3) * 2);transition-delay:calc((var(--content-transition-delay) / 3) * 2)}.elementor-gallery-item__content.elementor-gallery--sequenced-animation>div:nth-child(4){-webkit-transition-delay:calc((var(--content-transition-delay) / 3) * 3);-o-transition-delay:calc((var(--content-transition-delay) / 3) * 3);transition-delay:calc((var(--content-transition-delay) / 3) * 3)}.elementor-gallery-item__description{color:var(--description-text-color,#fff);width:100%}.elementor-gallery-item__title{color:var(--title-text-color,#fff);font-weight:700;width:100%}.elementor-gallery__titles-container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:var(--titles-container-justify-content,center);-ms-flex-pack:var(--titles-container-justify-content,center);justify-content:var(--titles-container-justify-content,center);margin-bottom:20px}.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:after,.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:before{background-color:var(--galleries-pointer-bg-color-hover)}.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:after,.elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:before{background-color:var(--galleries-pointer-bg-color-active)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item:before{border-color:var(--galleries-pointer-bg-color-hover);border-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item:after{border-color:var(--galleries-pointer-bg-color-hover)}.elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:after,.elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:before{border-color:var(--galleries-pointer-bg-color-active)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:before{border-left-width:var(--galleries-pointer-border-width);border-bottom-width:var(--galleries-pointer-border-width);border-right-width:0;border-top-width:0}.elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:after{border-left-width:0;border-bottom-width:0;border-right-width:var(--galleries-pointer-border-width);border-top-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:before{border-left-width:var(--galleries-pointer-border-width);border-bottom-width:0;border-right-width:0;border-top-width:var(--galleries-pointer-border-width)}.elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:after{border-left-width:0;border-bottom-width:var(--galleries-pointer-border-width);border-right-width:var(--galleries-pointer-border-width);border-top-width:0}.elementor-gallery__titles-container .e--pointer-double-line .elementor-item:after,.elementor-gallery__titles-container .e--pointer-double-line .elementor-item:before,.elementor-gallery__titles-container .e--pointer-overline .elementor-item:before,.elementor-gallery__titles-container .e--pointer-underline .elementor-item:after{height:var(--galleries-pointer-border-width)}.elementor-gallery-title{--space-between:10px;cursor:pointer;color:#6d7882;font-weight:500;position:relative;padding:7px 14px;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.elementor-gallery-title--active{color:#495157}.elementor-gallery-title:not(:last-child){margin-right:var(--space-between)}.elementor-gallery-item__title+.elementor-gallery-item__description{margin-top:var(--description-margin-top)}.e-gallery-item.elementor-gallery-item{-webkit-transition-property:all;-o-transition-property:all;transition-property:all}.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-bottom,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-left,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-right,.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-top,.e-gallery-item:hover .elementor-gallery__item-overlay-bg,.e-gallery-item:hover .elementor-gallery__item-overlay-content,.e-gallery-item:hover .elementor-gallery__item-overlay-content__description,.e-gallery-item:hover .elementor-gallery__item-overlay-content__title{opacity:1}a.elementor-item.elementor-gallery-title{color:var(--galleries-title-color-normal)}a.elementor-item.elementor-gallery-title.elementor-item-active,a.elementor-item.elementor-gallery-title.highlighted,a.elementor-item.elementor-gallery-title:focus,a.elementor-item.elementor-gallery-title:hover{color:var(--galleries-title-color-hover)}a.elementor-item.elementor-gallery-title.elementor-item-active{color:var(--gallery-title-color-active)}.elementor-widget-table-of-contents .elementor-toc__header-title{color:var(--header-color)}.elementor-widget-table-of-contents.elementor-toc--collapsed .elementor-toc__toggle-button--collapse,.elementor-widget-table-of-contents:not(.elementor-toc--collapsed) .elementor-toc__toggle-button--expand{display:none}.elementor-widget-table-of-contents .elementor-widget-container{min-height:var(--box-min-height);border:var(--box-border-width,1px) solid var(--box-border-color,#a4afb7);border-radius:var(--box-border-radius,3px);background-color:var(--box-background-color);-webkit-transition:min-height .4s;-o-transition:min-height .4s;transition:min-height .4s;overflow:hidden}.elementor-toc__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:var(--box-padding,20px);background-color:var(--header-background-color);border-bottom:var(--separator-width,1px) solid var(--box-border-color,#a4afb7)}.elementor-toc__header-title{font-size:18px;margin:0;color:var(--header-color)}.elementor-toc__toggle-button{cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-toc__toggle-button i{color:var(--toggle-button-color)}.elementor-toc__toggle-button svg{height:1em;width:1em;fill:var(--toggle-button-color)}.elementor-toc__spinner-container{text-align:center}.elementor-toc__spinner{font-size:2em}.elementor-toc__spinner.e-font-icon-svg{height:1em;width:1em}.elementor-toc__body{padding:var(--box-padding,20px);max-height:var(--toc-body-max-height);overflow-y:auto}.elementor-toc__body::-webkit-scrollbar{width:7px}.elementor-toc__body::-webkit-scrollbar-thumb{background-color:#c2cbd2;border-radius:10px}.elementor-toc__list-wrapper{list-style:none;padding:0}.elementor-toc__list-item{margin-bottom:.5em}.elementor-toc__list-item.elementor-item-active{font-weight:700}.elementor-toc__list-item .elementor-toc__list-wrapper{margin-top:.5em;margin-left:var(--nested-list-indent,1em)}.elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}.elementor-toc__list-item-text-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-toc__list-item-text-wrapper:before,.elementor-toc__list-item-text-wrapper i{margin-right:8px;color:var(--marker-color)}.elementor-toc__list-item-text-wrapper svg{margin-right:8px;fill:var(--marker-color);height:var(--marker-size,.5em);width:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper i{font-size:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper:before{font-size:var(--marker-size,1em)}.elementor-toc--content-ellipsis .elementor-toc__list-item-text{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-toc__list-items--collapsible>.elementor-toc__list-wrapper>.elementor-toc__list-item>.elementor-toc__list-wrapper{display:none}.elementor-toc__heading-anchor{position:absolute}.elementor-toc__body .elementor-toc__list-item-text{color:var(--item-text-color);-webkit-text-decoration:var(--item-text-decoration);text-decoration:var(--item-text-decoration)}.elementor-toc__body .elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__body .elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}ol.elementor-toc__list-wrapper{counter-reset:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item{counter-increment:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper:before{content:counters(item,".") ". "}@media only screen and (max-width:-1px){.elementor-toc--minimized-on-tablet_extra .elementor-toc__body{display:none}}@media only screen and (max-width:1024px){.elementor-toc--minimized-on-tablet .elementor-toc__body{display:none}}@media only screen and (max-width:-1px){.elementor-toc--minimized-on-mobile_extra .elementor-toc__body{display:none}}@media only screen and (max-width:767px){.elementor-toc--minimized-on-mobile .elementor-toc__body{display:none}}.e-lottie__container{display:inline-block;max-width:var(--lottie-container-max-width);width:var(--lottie-container-width);opacity:var(--lottie-container-opacity)}.e-lottie__container:hover{opacity:var(--lottie-container-opacity-hover);-webkit-transition-duration:var(--lottie-container-transition-duration-hover);-o-transition-duration:var(--lottie-container-transition-duration-hover);transition-duration:var(--lottie-container-transition-duration-hover)}.e-lottie__container svg,.e-lottie__container svg *{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}.e-lottie__caption{color:var(--caption-color);margin-top:var(--caption-margin-top);text-align:var(--caption-text-align)}.e-tabs-inner-tabs{text-align:left;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:16px}.e-tabs-inner-tabs .e-tab-content{padding-top:32px}.e-tabs-inner-tabs .e-inner-tabs-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;overflow:hidden;z-index:1}.e-tabs-inner-tabs .e-inner-tabs-wrapper :after{content:"";width:100%;height:var(--inner-tabs-border-height,1px);background-color:var(--inner-tabs-border-color,#d5dadf);position:absolute;bottom:0;z-index:-1}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title{font-weight:700;min-width:140px;line-height:38px;height:38px;-webkit-box-sizing:content-box;box-sizing:content-box}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title a{color:#6d7882;padding:0 36px;display:block;text-align:center}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active{border-color:#495157 #495157 transparent;border-left-width:0;border-bottom:1px solid #495157;border-right-width:0;border-top-width:0}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active a{color:#495157}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content{display:none;padding:20px}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-text{color:#556068}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.e-inner-tab-active{display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons{margin-top:24px;display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons button{display:none;font-weight:500;line-height:24px;text-decoration:underline;border:none;background:transparent;padding:0}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible .e-inner-tab-text{overflow:hidden}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible.show-inner-tab-buttons .e-inner-tab-buttons,.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button.show-button{display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.show-full-height div.e-inner-tab-text{height:auto}@media (max-width:767px){.e-tabs-inner-tabs>.e-tab-content:first-child{padding-top:24px}.e-tabs-inner-tabs .e-inner-tabs-wrapper{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper{border:solid #d5dadf;border-width:1px 1px 0}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title{border:solid #d5dadf;border-width:0 0 1px;font-size:16px;font-weight:700;text-align:center;height:38px;line-height:38px;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0 10px;cursor:pointer;display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content{border:solid #d5dadf;border-width:0 0 1px;padding:20px}}.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}@media (max-width:767px){.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.elementor-widget-video-playlist{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif}.elementor-widget-video-playlist .e-tabs{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-widget-video-playlist .e-tabs-main-area{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;height:434px}.elementor-widget-video-playlist .e-tabs-wrapper{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:33%}.elementor-widget-video-playlist .e-tabs-header{background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;min-height:56px;border-bottom:1px solid #d5dadf}.elementor-widget-video-playlist .e-tabs-header .e-tabs-header-right-side{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-title{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;-o-text-overflow:ellipsis;text-overflow:ellipsis;font-weight:700;font-size:16px;padding:10px 0;overflow-wrap:anywhere;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin:auto 0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count{font-size:14px;-ms-flex-negative:0;flex-shrink:0;font-weight:400;line-height:20px;-ms-flex-item-align:start;align-self:flex-start;padding:18px 0 0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button{display:none;margin:auto 0 auto 8px;cursor:pointer;padding:0 4px}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button.e-font-icon-svg{height:1em;width:1em}.elementor-widget-video-playlist .e-tabs-header .rotate-up{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-widget-video-playlist .e-tabs-header .rotate-down{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-widget-video-playlist .e-tabs-items-wrapper{background-color:#fff;overflow:hidden;position:relative;height:100%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items{overflow:auto;height:100%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-section-title{border-color:#d5dadf;font-size:14px;height:36px;padding:0 16px;line-height:36px;margin:0;text-align:left;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border-width:0;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title{background-color:#fff;border-color:#d5dadf;border-width:0 0 1px;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:14px;height:55px;line-height:55px;outline:none;padding:0 16px;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i{text-shadow:0 0 3px #000;color:#fff;font-size:var(--playlist-item-icon-size,16px)}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg{text-shadow:0 0 3px #000;color:#fff;fill:#fff;width:var(--playlist-item-icon-size,16px);height:var(--playlist-item-icon-size,16px)}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg path{fill:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover{background-color:#f1f3f5;border-color:#d5dadf;border-width:0 0 1px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg{text-shadow:0 0 3px #000;color:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg path,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg path{fill:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active .e-tab-title-text,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover .e-tab-title-text{font-size:14px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-play,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail{background-color:#d5dadf;position:relative;margin:auto 0;-ms-flex-negative:0;flex-shrink:0;width:75px;height:42px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail img{-o-object-fit:fill;object-fit:fill;width:75px;height:42px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail svg{position:absolute;bottom:4px;right:4px;font-weight:900}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-title-text{font-size:14px;margin:auto 8px;text-align:left;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg{margin:auto 0;vertical-align:middle}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-duration{font-size:14px;margin:auto 0}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-play{display:none}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-watched{display:block}.elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top{display:none;height:98px;position:absolute;top:0;width:100%;pointer-events:none;background:-webkit-gradient(linear,left bottom,left top,from(transparent),to(#fff));background:-webkit-linear-gradient(bottom,transparent,#fff);background:-o-linear-gradient(bottom,transparent 0,#fff 100%);background:linear-gradient(0deg,transparent,#fff)}.elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom{display:none;height:98px;position:absolute;bottom:0;width:100%;background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(#fff));background:-webkit-linear-gradient(top,transparent,#fff);background:-o-linear-gradient(top,transparent 0,#fff 100%);background:linear-gradient(180deg,transparent,#fff);pointer-events:none}.elementor-widget-video-playlist .e-tabs-items-wrapper.bottom-shadow .shadow-bottom,.elementor-widget-video-playlist .e-tabs-items-wrapper.top-shadow .shadow-top{display:block}.elementor-widget-video-playlist .e-tabs-content-wrapper{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;height:100%;position:relative}.elementor-widget-video-playlist .e-tabs-content-wrapper .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center;position:absolute;top:0;left:0;width:100%;height:100%;-webkit-background-size:cover;background-size:cover;background-position:50%}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-mobile-title{display:none}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content{background-color:#000;display:none;height:100%;outline:none}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content>div{height:100%}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content iframe{height:100%;max-height:100%!important;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content video{height:100%;background-color:#000}.elementor-widget-video-playlist .e-tabs-inner-tabs .e-tab-content{display:none;outline:none}@media (max-width:767px){.elementor-widget-video-playlist .e-tabs-main-area{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;height:auto}.elementor-widget-video-playlist .e-tabs-main-area .e-tabs-content-wrapper{border:none;height:38%}.elementor-widget-video-playlist .e-tabs-wrapper{width:auto;height:62%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items{max-height:248px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items .e-tab-title{border:none}.elementor-widget-video-playlist .e-tabs-header{min-height:48px}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count{margin:0 6px;padding:14px 0 0}.elementor-widget-video-playlist .e-tab-content{border:none;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex}}.elementor-payment-button{border:none}.elementor-scrolling-tracker{--scrolling-track-default-progress-color:#61ce70;--scrolling-track-default-color:#eee;--scrolling-track-precentage-default-color:$black}.elementor-scrolling-tracker-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:var(--horizontal-height,20px);padding:var(--tracker-padding);-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-left:var(--horizontal-border-left-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-bottom:var(--horizontal-border-bottom-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-right:var(--horizontal-border-right-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-top:var(--horizontal-border-top-width,2px) var(--horizontal-border-style) var(--horizontal-border-color);border-radius:var(--border-radius);background-color:var(--scrolling-track-default-color);direction:var(--direction)}.elementor-scrolling-tracker-horizontal .current-progress{display:none;height:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;border-radius:var(--progress-border-radius);border-left:var(--horizontal-progress-border-left-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-bottom:var(--horizontal-progress-border-bottom-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-right:var(--horizontal-progress-border-right-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);border-top:var(--horizontal-progress-border-top-width,2px) var(--horizontal-progress-border) var(--horizontal-progress-border-color);background-color:var(--scrolling-track-default-progress-color)}.elementor-scrolling-tracker-horizontal .current-progress .current-progress-percentage{inset-inline-end:.5em;inset-inline-start:auto;position:absolute;direction:var(--text-direction);color:var(--percentage-color,var(--scrolling-track-precentage-default-color))}.elementor-scrolling-tracker-circular{display:-webkit-box;display:-ms-flexbox;display:flex;width:var(--circular-width,100px);height:var(--circular-height,100px);-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:relative;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:auto;margin-inline-end:auto}.elementor-scrolling-tracker-circular .current-progress-percentage{position:absolute;color:var(--percentage-color,var(--scrolling-track-precentage-default-color))}.elementor-scrolling-tracker-circular svg{position:absolute}.elementor-scrolling-tracker-circular .current-progress{display:none;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;stroke:var(--circular-color,var(--scrolling-track-default-progress-color));fill:transparent;stroke-width:var(--circular-progress-width,4px)}.elementor-scrolling-tracker-circular .circle{stroke:var(--circular-background-color,var(--scrolling-track-default-color));fill:transparent;stroke-width:var(--circular-background-width,4px)}.elementor-scrolling-tracker-alignment-left{margin-left:0;margin-right:auto}.elementor-scrolling-tracker-alignment-center{margin-left:auto;margin-right:auto}.elementor-scrolling-tracker-alignment-right{margin-left:auto;margin-right:0}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-1 ul.products li.product{width:100%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-2 ul.products li.product{width:50%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-3 ul.products li.product{width:33.33333%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-4 ul.products li.product{width:25%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-5 ul.products li.product{width:20%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-6 ul.products li.product{width:16.66667%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-7 ul.products li.product{width:14.28571%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-8 ul.products li.product{width:12.5%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-9 ul.products li.product{width:11.11111%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-10 ul.products li.product{width:10%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-11 ul.products li.product{width:9.09091%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-12 ul.products li.product{width:8.33333%}@media (max-width:1024px){.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-1 ul.products li.product{width:100%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-2 ul.products li.product{width:50%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-3 ul.products li.product{width:33.33333%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-4 ul.products li.product{width:25%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-5 ul.products li.product{width:20%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-6 ul.products li.product{width:16.66667%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-7 ul.products li.product{width:14.28571%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-8 ul.products li.product{width:12.5%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-9 ul.products li.product{width:11.11111%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-10 ul.products li.product{width:10%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-11 ul.products li.product{width:9.09091%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-12 ul.products li.product{width:8.33333%}}@media (max-width:767px){.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-1 ul.products li.product{width:100%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-2 ul.products li.product{width:50%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-3 ul.products li.product{width:33.33333%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-4 ul.products li.product{width:25%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-5 ul.products li.product{width:20%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-6 ul.products li.product{width:16.66667%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-7 ul.products li.product{width:14.28571%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-8 ul.products li.product{width:12.5%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-9 ul.products li.product{width:11.11111%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-10 ul.products li.product{width:10%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-11 ul.products li.product{width:9.09091%}.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-12 ul.products li.product{width:8.33333%}}.elementor-msie .elementor-element.elementor-wc-products ul.products,.elementor-msie .elementor-posts{margin-right:-10px;margin-left:-10px}.elementor-msie .elementor-element.elementor-wc-products ul.products .elementor-post,.elementor-msie .elementor-element.elementor-wc-products ul.products li.product,.elementor-msie .elementor-posts .elementor-post,.elementor-msie .elementor-posts li.product{padding-right:10px;padding-left:10px;margin-bottom:20px}.elementor-msie .elementor-element.elementor-wc-products ul.products .elementor-post,.elementor-msie .elementor-posts .elementor-post{display:-webkit-box;display:-ms-flexbox;display:flex}assets/css/app.min.css000064400000023357150755004320010725 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
:root{--color-box-shadow-color:rgba(0,0,0,0.05)}.eps-theme-dark{--color-box-shadow-color:rgba(0,0,0,0.1)}:root{--eps-meta-icon-color:#c2cbd2}.eps-theme-dark{--eps-meta-icon-color:#b4b5b7}.e-site-template__meta-data{-webkit-margin-start:.625rem;margin-inline-start:.625rem;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;font-size:.6875rem}.e-site-template__meta-data:last-of-type{-webkit-margin-end:auto;margin-inline-end:auto}.e-site-template__meta-data:first-of-type{-webkit-margin-start:1rem;margin-inline-start:1rem}.e-site-template__meta-data .eps-icon{-webkit-margin-end:.3125rem;margin-inline-end:.3125rem;color:var(--eps-meta-icon-color);font-size:.8125rem}.e-site-template__placeholder .eps-card__image{-webkit-filter:var(--placeholder-filter,none);filter:var(--placeholder-filter,none)}.e-site-template__overlay-preview{padding-top:calc(var(--card-image-aspect-ratio, 95.6%) - 1.875rem);position:relative}.e-site-template__overlay-preview-button{font-weight:700;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;height:1.875rem;width:100%;background-color:var(--card-background-color-hover);-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-top:.625rem;line-height:1.25rem;--button-background-color:var(--card-headline-color)}.e-site-template__overlay-preview-button:before{content:"";position:absolute;display:block;width:100%;top:0;left:0;padding-top:calc(var(--card-image-aspect-ratio, 95.6%) - 1.875rem)}.e-site-template__overlay-preview-button>:not(:first-child){-webkit-margin-start:.3125rem;margin-inline-start:.3125rem}.e-site-template__edit-btn{-webkit-margin-end:1.25rem;margin-inline-end:1.25rem}.e-site-template__edit-btn .eps-icon,.e-site-template__instances .eps-icon{-webkit-margin-end:.3125rem;margin-inline-end:.3125rem}.e-site-template__instances .eps-icon{color:var(--eps-meta-icon-color);font-size:.8125rem}.e-site-template__instances-list{overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.e-site-template__edit-conditions{-webkit-margin-start:1rem;margin-inline-start:1rem;color:#58d0f5;text-decoration:underline;font-style:italic}.e-site-template--extended .eps-card__figure{overflow:auto}.e-site-template--extended .eps-card__headline{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.e-site-template--wide{--card-image-aspect-ratio:calc(100% * 0.1235)}.eps-add-new__overlay{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;opacity:1;--card-image-overlay-background-color:transparent}.e-site-editor__templates .page-header{margin-bottom:.625rem}.e-site-editor__templates .eps-separator{margin-bottom:2.75rem}:root{--e-site-editor-conditions-row-controls-background:#fff;--e-site-editor-input-wrapper-border-color:#f1f3f5;--e-site-editor-input-wrapper-select-color:#556068;--e-site-editor-add-button-background-color:#a4afb7;--e-site-editor-add-button-color-hover-background-color:#6d7882;--e-site-editor-input-wrapper-condition-include-background-color:#a4afb7;--e-site-editor-input-wrapper-condition-exclude-background-color:#c2cbd2;--e-site-editor-input-select2-search-field-color:#495157}.eps-theme-dark{--select2-selection-background-color:tints(600);--e-site-editor-conditions-row-controls-background:#404349;--e-site-editor-input-wrapper-border-color:#404349;--e-site-editor-input-wrapper-select-color:#b4b5b7;--e-site-editor-add-button-background-color:#4c4f56;--e-site-editor-add-button-color-hover-background-color:#404349;--e-site-editor-input-wrapper-condition-include-background-color:#404349;--e-site-editor-input-wrapper-condition-exclude-background-color:#404349;--e-site-editor-input-select2-search-field-color:#fff}.e-site-editor-conditions__header{text-align:center}.e-site-editor-conditions__header-image{display:block;margin:0 auto 2.75rem;width:4.375rem}.e-site-editor-conditions__rows{margin:2.75rem auto;max-width:43.75rem}.e-site-editor-conditions__row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-top:.75rem}.e-site-editor-conditions__remove-condition{color:#c2cbd2;font-size:1.125rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.e-site-editor-conditions__row-controls{overflow:hidden;margin-right:.625rem;background-color:var(--e-site-editor-conditions-row-controls-background);display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-webkit-box-shadow:0 3px 6px var(--color-box-shadow-color);box-shadow:0 3px 6px var(--color-box-shadow-color);border-radius:.1875rem}.e-site-editor-conditions__row-controls--error{border:1px solid #b01b1b}.e-site-editor-conditions__conflict{text-align:center;margin-top:.3125rem;color:#b01b1b}.e-site-editor-conditions__row-controls-inner{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.e-site-editor-conditions__row-controls-inner div{-webkit-box-flex:1;-ms-flex:1;flex:1}.e-site-editor-conditions__add-button-container{text-align:center}.e-site-editor-conditions__add-button{margin-top:2.75rem;background-color:var(--e-site-editor-add-button-background-color);color:#fff;text-transform:uppercase}.e-site-editor-conditions__add-button:hover{background-color:var(--e-site-editor-add-button-color-hover-background-color);color:#fff}.e-site-editor-conditions__footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;position:absolute;bottom:0;right:0;left:0;padding:.5rem;border-top:1px solid var(--hr-color)}.e-site-editor-conditions__input-wrapper{position:relative;border-left:1px solid;border-left-color:var(--e-site-editor-input-wrapper-border-color);border-bottom-color:var(--e-site-editor-input-wrapper-border-color);border-right-color:var(--e-site-editor-input-wrapper-border-color);border-top-color:var(--e-site-editor-input-wrapper-border-color)}.e-site-editor-conditions__input-wrapper:first-child{border:none}.e-site-editor-conditions__input-wrapper select{-moz-appearance:none;appearance:none;-webkit-appearance:none;font-size:.75rem;height:2.5rem;border-width:0;padding:0 .625rem;width:100%;position:relative;color:var(--e-site-editor-input-wrapper-select-color);outline:none;background:transparent}.e-site-editor-conditions__input-wrapper:after{font-family:eicons;content:"\e8ad";font-size:.75rem;pointer-events:none;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:.625rem}.e-site-editor-conditions__input-wrapper .select2-container--default .select2-selection--single{border:none;line-height:2.5rem}.e-site-editor-conditions__input-wrapper .select2-container--default .select2-selection--single .select2-selection__rendered{line-height:2.5rem;font-size:.75rem}.e-site-editor-conditions__input-wrapper .select2-selection{outline:none;background:transparent;height:2.5rem}.e-site-editor-conditions__input-wrapper .select2-selection__arrow{display:none}.e-site-editor-conditions__input-wrapper--condition-type{position:relative}.e-site-editor-conditions__input-wrapper--condition-type:before{font-family:eicons;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);left:.75rem;font-size:.9375rem;color:#fff;pointer-events:none;z-index:1000}.e-site-editor-conditions__input-wrapper--condition-type:after{color:#fff}.e-site-editor-conditions__input-wrapper--condition-type select{text-transform:uppercase;padding-left:2.125rem;width:7.5rem;font-size:.75rem;color:#fff}.e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type=include]:before{content:"\e8cc"}.e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type=include] select{background-color:var(--e-site-editor-input-wrapper-condition-include-background-color)}.e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type=exclude]:before{content:"\e8cd"}.e-site-editor-conditions__input-wrapper--condition-type[data-elementor-condition-type=exclude] select{background-color:var(--e-site-editor-input-wrapper-condition-exclude-background-color)}.select2-search__field{background-color:transparent;color:var(--e-site-editor-input-select2-search-field-color)}.eps-back-button{font-size:14px;margin-bottom:1.5rem}.eps-back-button .eps-icon{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}:root{--indicator-bullet-border-color:#fff}.eps-theme-dark{--indicator-bullet-border-color:#4c4f56}.eps-indicator-bullet{display:block;-ms-flex-negative:0;flex-shrink:0;width:.75rem;height:.75rem;-webkit-box-shadow:0 2px 3px 1px var(--color-box-shadow-color);box-shadow:0 2px 3px 1px var(--color-box-shadow-color);background-color:#d5dadf;border:2px solid var(--indicator-bullet-border-color);border-radius:100%;-webkit-margin-end:.625rem;margin-inline-end:.625rem}.eps-indicator-bullet--active{background-color:#39b54a}.site-editor__preview-iframe{height:50vh;position:relative}.site-editor__preview-iframe__iframe{top:0;left:0;position:absolute;border:none;-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;height:100%}.site-editor__preview-iframe--footer,.site-editor__preview-iframe--header{height:15vh}.e-site-editor__content_container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100%;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.e-site-editor__content_container_main{-webkit-box-flex:1;-ms-flex:1;flex:1}.e-site-editor__content_container_secondary{margin:0 auto;padding-top:2.75rem}assets/css/widget-table-of-contents.min.css000064400000011154150755004320014742 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-widget-table-of-contents .elementor-toc__header-title{color:var(--header-color)}.elementor-widget-table-of-contents.elementor-toc--collapsed .elementor-toc__toggle-button--collapse,.elementor-widget-table-of-contents:not(.elementor-toc--collapsed) .elementor-toc__toggle-button--expand{display:none}.elementor-widget-table-of-contents .elementor-widget-container{min-height:var(--box-min-height);border:var(--box-border-width,1px) solid var(--box-border-color,#a4afb7);border-radius:var(--box-border-radius,3px);background-color:var(--box-background-color);-webkit-transition:min-height .4s;-o-transition:min-height .4s;transition:min-height .4s;overflow:hidden}.elementor-toc__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:var(--box-padding,20px);background-color:var(--header-background-color);border-bottom:var(--separator-width,1px) solid var(--box-border-color,#a4afb7)}.elementor-toc__header-title{font-size:18px;margin:0;color:var(--header-color)}.elementor-toc__toggle-button{cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-toc__toggle-button i{color:var(--toggle-button-color)}.elementor-toc__toggle-button svg{height:1em;width:1em;fill:var(--toggle-button-color)}.elementor-toc__spinner-container{text-align:center}.elementor-toc__spinner{font-size:2em}.elementor-toc__spinner.e-font-icon-svg{height:1em;width:1em}.elementor-toc__body{padding:var(--box-padding,20px);max-height:var(--toc-body-max-height);overflow-y:auto}.elementor-toc__body::-webkit-scrollbar{width:7px}.elementor-toc__body::-webkit-scrollbar-thumb{background-color:#c2cbd2;border-radius:10px}.elementor-toc__list-wrapper{list-style:none;padding:0}.elementor-toc__list-item{margin-bottom:.5em}.elementor-toc__list-item.elementor-item-active{font-weight:700}.elementor-toc__list-item .elementor-toc__list-wrapper{margin-top:.5em;margin-left:var(--nested-list-indent,1em)}.elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}.elementor-toc__list-item-text-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-toc__list-item-text-wrapper:before,.elementor-toc__list-item-text-wrapper i{margin-right:8px;color:var(--marker-color)}.elementor-toc__list-item-text-wrapper svg{margin-right:8px;fill:var(--marker-color);height:var(--marker-size,.5em);width:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper i{font-size:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper:before{font-size:var(--marker-size,1em)}.elementor-toc--content-ellipsis .elementor-toc__list-item-text{white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.elementor-toc__list-items--collapsible>.elementor-toc__list-wrapper>.elementor-toc__list-item>.elementor-toc__list-wrapper{display:none}.elementor-toc__heading-anchor{position:absolute}.elementor-toc__body .elementor-toc__list-item-text{color:var(--item-text-color);-webkit-text-decoration:var(--item-text-decoration);text-decoration:var(--item-text-decoration)}.elementor-toc__body .elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__body .elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}ol.elementor-toc__list-wrapper{counter-reset:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item{counter-increment:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper:before{content:counters(item,".") ". "}@media only screen and (max-width:-1px){.elementor-toc--minimized-on-tablet_extra .elementor-toc__body{display:none}}@media only screen and (max-width:1024px){.elementor-toc--minimized-on-tablet .elementor-toc__body{display:none}}@media only screen and (max-width:-1px){.elementor-toc--minimized-on-mobile_extra .elementor-toc__body{display:none}}@media only screen and (max-width:767px){.elementor-toc--minimized-on-mobile .elementor-toc__body{display:none}}assets/css/widget-hotspot.min.css000064400000020431150755004320013114 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
@-webkit-keyframes e-hotspot-soft-beat{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.1);transform:scale(1.1)}}@keyframes e-hotspot-soft-beat{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(1.1);transform:scale(1.1)}}@-webkit-keyframes e-hotspot-expand{0%{-webkit-transform:scale(.5);transform:scale(.5);opacity:1}to{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}@keyframes e-hotspot-expand{0%{-webkit-transform:scale(.5);transform:scale(.5);opacity:1}to{-webkit-transform:scale(1.5);transform:scale(1.5);opacity:0}}.elementor-widget-hotspot{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--background-align);-ms-flex-pack:var(--background-align);justify-content:var(--background-align)}.elementor-widget-hotspot .elementor-widget-container{position:relative;display:inline-block;width:var(--container-width);max-width:var(--container-max-width);height:var(--container-height)}.elementor-widget-hotspot .elementor-widget-container>img{display:block;width:var(--image-width,auto);height:var(--container-height);opacity:var(--opacity,1)}.e-hotspot{z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:absolute}.e-hotspot--position-left.e-hotspot--position-top{-webkit-transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)));-ms-transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)));transform:translate(calc(-1 * var(--hotspot-translate-x)),calc(-1 * var(--hotspot-translate-y)))}.e-hotspot--position-left.e-hotspot--position-bottom{-webkit-transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y));-ms-transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y));transform:translate(calc(-1 * var(--hotspot-translate-x)),var(--hotspot-translate-y))}.e-hotspot--position-right.e-hotspot--position-top{-webkit-transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)));-ms-transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)));transform:translate(var(--hotspot-translate-x),calc(-1 * var(--hotspot-translate-y)))}.e-hotspot--position-right.e-hotspot--position-bottom{-webkit-transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y));-ms-transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y));transform:translate(var(--hotspot-translate-x),var(--hotspot-translate-y))}.e-hotspot--active{z-index:2}.e-hotspot__inner-circle,.e-hotspot__outer-circle{content:"";display:inline-block;-webkit-box-sizing:content-box;box-sizing:content-box;border-radius:50%}.e-hotspot__inner-circle{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background-color:var(--hotspot-color);padding:calc(var(--hotspot-size, 18px) / 2)}.e-hotspot__outer-circle{background-color:var(--hotspot-color);padding:var(--hotspot-padding,4px)}.e-hotspot--icon .e-hotspot__button,.e-hotspot__outer-circle{width:var(--hotspot-size,18px);height:var(--hotspot-size,18px)}.e-hotspot--icon .e-hotspot__button{line-height:0;-webkit-box-sizing:content-box;box-sizing:content-box;font-size:var(--hotspot-size,18px)}.e-hotspot__icon,.e-hotspot__label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.e-hotspot__icon svg,.e-hotspot__label svg{width:var(--hotspot-size,18px);height:auto}.e-hotspot__button{cursor:pointer;position:relative;display:grid;grid-auto-flow:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--hotspot-color);font-size:var(--hotspot-size,18px);min-width:var(--hotspot-button-width);min-height:var(--hotspot-button-height)}.e-hotspot__button:before{z-index:-2;content:"";width:100%;height:100%;left:-5px;top:-5px;position:absolute;padding:5px;-webkit-box-sizing:content-box;box-sizing:content-box}.e-hotspot__button svg{fill:var(--hotspot-color)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot__button{min-width:var(--hotspot-min-width);min-height:var(--hotspot-min-height);background-color:var(--hotspot-box-color);padding:var(--hotspot-padding,4px);border-radius:var(--hotspot-border-radius,3px)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot__button:before{border-radius:var(--hotspot-border-radius,3px)}.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{background-color:var(--hotspot-box-color)}.e-hotspot--overlay{opacity:.7;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.e-hotspot--active .e-hotspot--overlay,.e-hotspot--overlay:hover{opacity:1}.e-hotspot--soft-beat{-webkit-animation:e-hotspot-soft-beat .7s infinite alternate;animation:e-hotspot-soft-beat .7s infinite alternate;-webkit-animation-timing-function:ease;animation-timing-function:ease}.e-hotspot--expand .e-hotspot__outer-circle,.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{-webkit-animation:e-hotspot-expand 2s infinite;animation:e-hotspot-expand 2s infinite}.e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand:before{content:"";width:100%;height:100%;position:absolute;z-index:-1;opacity:0}.e-hotspot--sequenced{-webkit-animation:fadeIn .3s;animation:fadeIn .3s;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-fill-mode:both;animation-fill-mode:both}.e-hotspot__direction-mask{overflow:hidden;position:absolute;pointer-events:none}.e-hotspot__tooltip{white-space:var(--white-space,nowrap);-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,-webkit-transform;-o-transition-property:transform,opacity;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transition-duration:var(--tooltip-transition-duration,.5s);-o-transition-duration:var(--tooltip-transition-duration,.5s);transition-duration:var(--tooltip-transition-duration,.5s);-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;position:absolute;pointer-events:none;color:var(--tooltip-text-color,#fff);text-align:var(--tooltip-align);min-width:var(--tooltip-min-width);padding:var(--tooltip-padding,8px);border-radius:var(--tooltip-border-radius);background-color:var(--tooltip-color)}.e-hotspot__tooltip p:last-of-type{margin-bottom:0}.e-hotspot__direction-mask .e-hotspot__tooltip{-webkit-box-shadow:none!important;box-shadow:none!important;position:static}.e-hotspot--active .e-hotspot__tooltip{pointer-events:visible}.e-hotspot--fade-in-out{opacity:0}.e-hotspot--active .e-hotspot--fade-in-out{opacity:1}.e-hotspot--fade-grow{opacity:0;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0)}.e-hotspot--active .e-hotspot--fade-grow{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.e-hotspot--override-tooltip-animation-from-top,.e-hotspot--tooltip-animation-from-top{-webkit-transform:translateY(calc(-100% - 1px));-ms-transform:translateY(calc(-100% - 1px));transform:translateY(calc(-100% - 1px))}.e-hotspot--override-tooltip-animation-from-left,.e-hotspot--tooltip-animation-from-left{-webkit-transform:translate(calc(-100% - 1px));-ms-transform:translate(calc(-100% - 1px));transform:translate(calc(-100% - 1px))}.e-hotspot--override-tooltip-animation-from-right,.e-hotspot--tooltip-animation-from-right{-webkit-transform:translate(calc(100% + 1px));-ms-transform:translate(calc(100% + 1px));transform:translate(calc(100% + 1px))}.e-hotspot--override-tooltip-animation-from-bottom,.e-hotspot--tooltip-animation-from-bottom{-webkit-transform:translateY(calc(100% + 1px));-ms-transform:translateY(calc(100% + 1px));transform:translateY(calc(100% + 1px))}.e-hotspot--fade-direction{opacity:0}.e-hotspot--active .e-hotspot--fade-direction,.e-hotspot--active .e-hotspot--slide-direction{-webkit-transform:translate(0) scale(1);-ms-transform:translate(0) scale(1);transform:translate(0) scale(1);opacity:1}.e-hotspot--show-tooltip{-webkit-transition:none;-o-transition:none;transition:none;opacity:1;pointer-events:visible;-webkit-transform:translate(0);-ms-transform:translate(0);transform:translate(0)}assets/css/widget-nav-menu.min.css000064400000070762150755004320013156 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.site-main .menu-navigation-container{overflow:visible}.elementor-item:after,.elementor-item:before{display:block;position:absolute;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;-webkit-transition-timing-function:cubic-bezier(.58,.3,.005,1);-o-transition-timing-function:cubic-bezier(.58,.3,.005,1);transition-timing-function:cubic-bezier(.58,.3,.005,1)}.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{opacity:0}.elementor-item-active:after,.elementor-item-active:before,.elementor-item.highlighted:after,.elementor-item.highlighted:before,.elementor-item:focus:after,.elementor-item:focus:before,.elementor-item:hover:after,.elementor-item:hover:before{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.e--pointer-double-line .elementor-item:after,.e--pointer-double-line .elementor-item:before,.e--pointer-overline .elementor-item:after,.e--pointer-overline .elementor-item:before,.e--pointer-underline .elementor-item:after,.e--pointer-underline .elementor-item:before{height:3px;width:100%;left:0;background-color:#55595c;z-index:2}.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{height:0;width:0;left:50%}.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:10px}.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{bottom:10px}.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:-10px}.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{bottom:-10px}.e--pointer-double-line.e--animation-none,.e--pointer-double-line.e--animation-none .elementor-item,.e--pointer-double-line.e--animation-none .elementor-item:after,.e--pointer-double-line.e--animation-none .elementor-item:before,.e--pointer-double-line.e--animation-none .elementor-item:focus,.e--pointer-double-line.e--animation-none .elementor-item:hover,.e--pointer-double-line.e--animation-none:after,.e--pointer-double-line.e--animation-none:before,.e--pointer-double-line.e--animation-none:focus,.e--pointer-double-line.e--animation-none:hover,.e--pointer-overline.e--animation-none,.e--pointer-overline.e--animation-none .elementor-item,.e--pointer-overline.e--animation-none .elementor-item:after,.e--pointer-overline.e--animation-none .elementor-item:before,.e--pointer-overline.e--animation-none .elementor-item:focus,.e--pointer-overline.e--animation-none .elementor-item:hover,.e--pointer-overline.e--animation-none:after,.e--pointer-overline.e--animation-none:before,.e--pointer-overline.e--animation-none:focus,.e--pointer-overline.e--animation-none:hover,.e--pointer-underline.e--animation-none,.e--pointer-underline.e--animation-none .elementor-item,.e--pointer-underline.e--animation-none .elementor-item:after,.e--pointer-underline.e--animation-none .elementor-item:before,.e--pointer-underline.e--animation-none .elementor-item:focus,.e--pointer-underline.e--animation-none .elementor-item:hover,.e--pointer-underline.e--animation-none:after,.e--pointer-underline.e--animation-none:before,.e--pointer-underline.e--animation-none:focus,.e--pointer-underline.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-double-line .elementor-item:before,.e--pointer-overline .elementor-item:before{content:"";top:0}.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before,.e--pointer-overline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{width:10px;left:-20px}.e--pointer-double-line .elementor-item:after,.e--pointer-underline .elementor-item:after{content:"";bottom:0}.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after,.e--pointer-underline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after{width:10px;inset-inline-start:100%}.e--pointer-framed .elementor-item:after,.e--pointer-framed .elementor-item:before{background:transparent;left:0;top:0;bottom:0;right:0;border:3px solid #55595c}.e--pointer-framed .elementor-item:before{content:""}.e--pointer-framed.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(.75);-ms-transform:scale(.75);transform:scale(.75)}.e--pointer-framed.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(1.25);-ms-transform:scale(1.25);transform:scale(1.25)}.e--pointer-framed.e--animation-grow .elementor-item:before,.e--pointer-framed.e--animation-shrink .elementor-item:before{-webkit-transition:opacity .2s,-webkit-transform .4s;transition:opacity .2s,-webkit-transform .4s;-o-transition:opacity .2s,transform .4s;transition:opacity .2s,transform .4s;transition:opacity .2s,transform .4s,-webkit-transform .4s}.e--pointer-framed.e--animation-draw .elementor-item:after,.e--pointer-framed.e--animation-draw .elementor-item:before{width:3px;height:3px}.e--pointer-framed.e--animation-draw .elementor-item:before{border-width:0 0 3px 3px;-webkit-transition:width .1s .2s,height .1s .3s,opacity .12s .22s;-o-transition:width .1s .2s,height .1s .3s,opacity .12s .22s;transition:width .1s .2s,height .1s .3s,opacity .12s .22s}.e--pointer-framed.e--animation-draw .elementor-item:after{content:"";top:auto;bottom:0;left:auto;right:0;border-width:3px 3px 0 0;-webkit-transition:width .1s,height .1s .1s,opacity .02s .18s;-o-transition:width .1s,height .1s .1s,opacity .02s .18s;transition:width .1s,height .1s .1s,opacity .02s .18s}.e--pointer-framed.e--animation-draw .elementor-item-active:after,.e--pointer-framed.e--animation-draw .elementor-item-active:before,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,.e--pointer-framed.e--animation-draw .elementor-item:focus:after,.e--pointer-framed.e--animation-draw .elementor-item:focus:before,.e--pointer-framed.e--animation-draw .elementor-item:hover:after,.e--pointer-framed.e--animation-draw .elementor-item:hover:before{width:100%;height:100%}.e--pointer-framed.e--animation-draw .elementor-item-active:before,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,.e--pointer-framed.e--animation-draw .elementor-item:focus:before,.e--pointer-framed.e--animation-draw .elementor-item:hover:before{-webkit-transition:opacity .02s,height .1s,width .1s .1s;-o-transition:opacity .02s,height .1s,width .1s .1s;transition:opacity .02s,height .1s,width .1s .1s}.e--pointer-framed.e--animation-draw .elementor-item-active:after,.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,.e--pointer-framed.e--animation-draw .elementor-item:focus:after,.e--pointer-framed.e--animation-draw .elementor-item:hover:after{-webkit-transition:opacity .02s .2s,height .1s .2s,width .1s .3s;-o-transition:opacity .02s .2s,height .1s .2s,width .1s .3s;transition:opacity .02s .2s,height .1s .2s,width .1s .3s}.e--pointer-framed.e--animation-corners .elementor-item:after,.e--pointer-framed.e--animation-corners .elementor-item:before{width:3px;height:3px}.e--pointer-framed.e--animation-corners .elementor-item:before{border-width:3px 0 0 3px}.e--pointer-framed.e--animation-corners .elementor-item:after{content:"";top:auto;bottom:0;left:auto;right:0;border-width:0 3px 3px 0}.e--pointer-framed.e--animation-corners .elementor-item-active:after,.e--pointer-framed.e--animation-corners .elementor-item-active:before,.e--pointer-framed.e--animation-corners .elementor-item.highlighted:after,.e--pointer-framed.e--animation-corners .elementor-item.highlighted:before,.e--pointer-framed.e--animation-corners .elementor-item:focus:after,.e--pointer-framed.e--animation-corners .elementor-item:focus:before,.e--pointer-framed.e--animation-corners .elementor-item:hover:after,.e--pointer-framed.e--animation-corners .elementor-item:hover:before{width:100%;height:100%;-webkit-transition:opacity 2ms,width .4s,height .4s;-o-transition:opacity 2ms,width .4s,height .4s;transition:opacity 2ms,width .4s,height .4s}.e--pointer-framed.e--animation-none,.e--pointer-framed.e--animation-none .elementor-item,.e--pointer-framed.e--animation-none .elementor-item:after,.e--pointer-framed.e--animation-none .elementor-item:before,.e--pointer-framed.e--animation-none .elementor-item:focus,.e--pointer-framed.e--animation-none .elementor-item:hover,.e--pointer-framed.e--animation-none:after,.e--pointer-framed.e--animation-none:before,.e--pointer-framed.e--animation-none:focus,.e--pointer-framed.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-background .elementor-item:after,.e--pointer-background .elementor-item:before{content:"";-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.e--pointer-background .elementor-item:before{top:0;left:0;right:0;bottom:0;background:#55595c;z-index:-1}.e--pointer-background .elementor-item-active,.e--pointer-background .elementor-item.highlighted,.e--pointer-background .elementor-item:focus,.e--pointer-background .elementor-item:hover{color:#fff}.e--pointer-background.e--animation-grow .elementor-item:before{-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}.e--pointer-background.e--animation-grow .elementor-item-active:before,.e--pointer-background.e--animation-grow .elementor-item.highlighted:before,.e--pointer-background.e--animation-grow .elementor-item:focus:before,.e--pointer-background.e--animation-grow .elementor-item:hover:before{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);opacity:1}.e--pointer-background.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.e--pointer-background.e--animation-shrink .elementor-item-active:before,.e--pointer-background.e--animation-shrink .elementor-item.highlighted:before,.e--pointer-background.e--animation-shrink .elementor-item:focus:before,.e--pointer-background.e--animation-shrink .elementor-item:hover:before{-webkit-transition:opacity .15s,-webkit-transform .4s;transition:opacity .15s,-webkit-transform .4s;-o-transition:opacity .15s,transform .4s;transition:opacity .15s,transform .4s;transition:opacity .15s,transform .4s,-webkit-transform .4s}.e--pointer-background.e--animation-sweep-left .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{left:100%}.e--pointer-background.e--animation-sweep-right .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{right:100%}.e--pointer-background.e--animation-sweep-up .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{top:100%}.e--pointer-background.e--animation-sweep-down .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{bottom:100%}.e--pointer-background.e--animation-shutter-out-vertical .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{bottom:50%;top:50%}.e--pointer-background.e--animation-shutter-out-horizontal .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before{right:50%;left:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after{top:0;left:0;right:0;bottom:0;background:#55595c;z-index:-1}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:before{top:0;bottom:100%}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after{top:100%;bottom:0}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:before,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:before{bottom:50%}.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:after,.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:after{top:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:before{right:0;left:100%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after{right:100%;left:0}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:before,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:before{left:50%}.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:after,.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:after{right:50%}.e--pointer-background.e--animation-none,.e--pointer-background.e--animation-none .elementor-item,.e--pointer-background.e--animation-none .elementor-item:after,.e--pointer-background.e--animation-none .elementor-item:before,.e--pointer-background.e--animation-none .elementor-item:focus,.e--pointer-background.e--animation-none .elementor-item:hover,.e--pointer-background.e--animation-none:after,.e--pointer-background.e--animation-none:before,.e--pointer-background.e--animation-none:focus,.e--pointer-background.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.e--pointer-text.e--animation-skew .elementor-item:focus,.e--pointer-text.e--animation-skew .elementor-item:hover{-webkit-transform:skew(-8deg);-ms-transform:skew(-8deg);transform:skew(-8deg)}.e--pointer-text.e--animation-grow .elementor-item:focus,.e--pointer-text.e--animation-grow .elementor-item:hover{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.e--pointer-text.e--animation-shrink .elementor-item:focus,.e--pointer-text.e--animation-shrink .elementor-item:hover{-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}.e--pointer-text.e--animation-float .elementor-item:focus,.e--pointer-text.e--animation-float .elementor-item:hover{-webkit-transform:translateY(-8px);-ms-transform:translateY(-8px);transform:translateY(-8px)}.e--pointer-text.e--animation-sink .elementor-item:focus,.e--pointer-text.e--animation-sink .elementor-item:hover{-webkit-transform:translateY(8px);-ms-transform:translateY(8px);transform:translateY(8px)}.e--pointer-text.e--animation-rotate .elementor-item:focus,.e--pointer-text.e--animation-rotate .elementor-item:hover{-webkit-transform:rotate(6deg);-ms-transform:rotate(6deg);transform:rotate(6deg)}.e--pointer-text.e--animation-none,.e--pointer-text.e--animation-none .elementor-item,.e--pointer-text.e--animation-none .elementor-item:after,.e--pointer-text.e--animation-none .elementor-item:before,.e--pointer-text.e--animation-none .elementor-item:focus,.e--pointer-text.e--animation-none .elementor-item:hover,.e--pointer-text.e--animation-none:after,.e--pointer-text.e--animation-none:before,.e--pointer-text.e--animation-none:focus,.e--pointer-text.e--animation-none:hover{-webkit-transition-duration:0s;-o-transition-duration:0s;transition-duration:0s}.elementor-nav-menu--main .elementor-nav-menu a{-webkit-transition:.4s;-o-transition:.4s;transition:.4s}.elementor-nav-menu--main .elementor-nav-menu a,.elementor-nav-menu--main .elementor-nav-menu a.highlighted,.elementor-nav-menu--main .elementor-nav-menu a:focus,.elementor-nav-menu--main .elementor-nav-menu a:hover{padding:13px 20px}.elementor-nav-menu--main .elementor-nav-menu a.current{background:#373a3c;color:#fff}.elementor-nav-menu--main .elementor-nav-menu a.disabled{background:#55595c;color:#a1a6a9}.elementor-nav-menu--main .elementor-nav-menu ul{position:absolute;width:12em;border-width:0;border-style:solid;padding:0}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down,.elementor-nav-menu--main .elementor-nav-menu span.scroll-up{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:20px}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow,.elementor-nav-menu--main .elementor-nav-menu span.scroll-up-arrow{position:absolute;top:-2px;left:50%;margin-left:-8px;width:0;height:0;overflow:hidden;border:8px dashed transparent;border-bottom:8px solid #494c4f}.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow{top:6px;border-style:solid dashed dashed;border-color:#494c4f transparent transparent}.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow i{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow .e-font-icon-svg{height:1em;width:1em}.elementor-nav-menu--layout-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-nav-menu--layout-horizontal .elementor-nav-menu{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-nav-menu--layout-horizontal .elementor-nav-menu a{white-space:nowrap;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li>.scroll-down,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li ul{top:100%!important}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>a{-webkit-margin-start:var(--e-nav-menu-horizontal-menu-item-margin);margin-inline-start:var(--e-nav-menu-horizontal-menu-item-margin)}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>.scroll-down,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>.scroll-up,.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:first-child)>ul{left:var(--e-nav-menu-horizontal-menu-item-margin)!important}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:last-child)>a{-webkit-margin-end:var(--e-nav-menu-horizontal-menu-item-margin);margin-inline-end:var(--e-nav-menu-horizontal-menu-item-margin)}.elementor-nav-menu--layout-horizontal .elementor-nav-menu>li:not(:last-child):after{content:var(--e-nav-menu-divider-content,none);height:var(--e-nav-menu-divider-height,35%);border-left:var(--e-nav-menu-divider-width,2px) var(--e-nav-menu-divider-style,solid) var(--e-nav-menu-divider-color,#000);border-bottom-color:var(--e-nav-menu-divider-color,#000);border-right-color:var(--e-nav-menu-divider-color,#000);border-top-color:var(--e-nav-menu-divider-color,#000);-ms-flex-item-align:center;align-self:center}.elementor-nav-menu__align-right .elementor-nav-menu{margin-left:auto}.elementor-nav-menu__align-right .elementor-nav-menu,.elementor-nav-menu__align-right .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-nav-menu__align-left .elementor-nav-menu{margin-right:auto}.elementor-nav-menu__align-left .elementor-nav-menu,.elementor-nav-menu__align-left .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-nav-menu__align-center .elementor-nav-menu{margin-left:auto;margin-right:auto}.elementor-nav-menu__align-center .elementor-nav-menu,.elementor-nav-menu__align-center .elementor-nav-menu--layout-vertical>ul>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu{width:100%}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu>li{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu>li>a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-nav-menu:not(.elementor-nav-menu--toggle) .elementor-menu-toggle{display:none}.elementor-widget-nav-menu .elementor-widget-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-nav-menu{position:relative;z-index:2}.elementor-nav-menu:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.elementor-nav-menu,.elementor-nav-menu li,.elementor-nav-menu ul{display:block;list-style:none;margin:0;padding:0;line-height:normal;-webkit-tap-highlight-color:rgba(0,0,0,0)}.elementor-nav-menu ul{display:none}.elementor-nav-menu ul ul a,.elementor-nav-menu ul ul a:active,.elementor-nav-menu ul ul a:focus,.elementor-nav-menu ul ul a:hover{border-left:16px solid transparent}.elementor-nav-menu ul ul ul a,.elementor-nav-menu ul ul ul a:active,.elementor-nav-menu ul ul ul a:focus,.elementor-nav-menu ul ul ul a:hover{border-left:24px solid transparent}.elementor-nav-menu ul ul ul ul a,.elementor-nav-menu ul ul ul ul a:active,.elementor-nav-menu ul ul ul ul a:focus,.elementor-nav-menu ul ul ul ul a:hover{border-left:32px solid transparent}.elementor-nav-menu ul ul ul ul ul a,.elementor-nav-menu ul ul ul ul ul a:active,.elementor-nav-menu ul ul ul ul ul a:focus,.elementor-nav-menu ul ul ul ul ul a:hover{border-left:40px solid transparent}.elementor-nav-menu a,.elementor-nav-menu li{position:relative}.elementor-nav-menu li{border-width:0}.elementor-nav-menu a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-nav-menu a,.elementor-nav-menu a:focus,.elementor-nav-menu a:hover{padding:10px 20px;line-height:20px}.elementor-nav-menu a.current{background:#373a3c;color:#fff}.elementor-nav-menu a.disabled{cursor:not-allowed;color:#a1a6a9}.elementor-nav-menu .e-plus-icon:before{content:"+"}.elementor-nav-menu .sub-arrow{line-height:1;padding:10px 0 10px 10px;margin-top:-10px;margin-bottom:-10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-nav-menu .sub-arrow i{pointer-events:none}.elementor-nav-menu .sub-arrow .fa.fa-chevron-down,.elementor-nav-menu .sub-arrow .fas.fa-chevron-down{font-size:.7em}.elementor-nav-menu .sub-arrow .e-font-icon-svg{height:1em;width:1em}.elementor-nav-menu .sub-arrow .e-font-icon-svg.fa-svg-chevron-down{height:.7em;width:.7em}.elementor-nav-menu--dropdown .elementor-item.elementor-item-active,.elementor-nav-menu--dropdown .elementor-item.highlighted,.elementor-nav-menu--dropdown .elementor-item:focus,.elementor-nav-menu--dropdown .elementor-item:hover,.elementor-sub-item.elementor-item-active,.elementor-sub-item.highlighted,.elementor-sub-item:focus,.elementor-sub-item:hover{background-color:#55595c;color:#fff}.elementor-menu-toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:22px;padding:.25em;cursor:pointer;border:0 solid;border-radius:3px;background-color:rgba(0,0,0,.05);color:#494c4f}.elementor-menu-toggle.elementor-active .elementor-menu-toggle__icon--open,.elementor-menu-toggle:not(.elementor-active) .elementor-menu-toggle__icon--close{display:none}.elementor-menu-toggle .e-font-icon-svg{fill:#494c4f;height:1em;width:1em}.elementor-nav-menu--dropdown{background-color:#fff;font-size:13px}.elementor-nav-menu--dropdown-none .elementor-menu-toggle,.elementor-nav-menu--dropdown-none .elementor-nav-menu--dropdown{display:none}.elementor-nav-menu--dropdown.elementor-nav-menu__container{margin-top:10px;-webkit-transition:max-height .3s,-webkit-transform .3s;transition:max-height .3s,-webkit-transform .3s;-o-transition:max-height .3s,transform .3s;transition:max-height .3s,transform .3s;transition:max-height .3s,transform .3s,-webkit-transform .3s;-webkit-transform-origin:top;-ms-transform-origin:top;transform-origin:top;overflow:auto}.elementor-nav-menu--dropdown.elementor-nav-menu__container .elementor-sub-item{font-size:.85em}.elementor-nav-menu--dropdown a{color:#494c4f}.elementor-nav-menu--dropdown a.current{background:#373a3c;color:#fff}.elementor-nav-menu--dropdown a.disabled{color:#b3b3b3}ul.elementor-nav-menu--dropdown a,ul.elementor-nav-menu--dropdown a:focus,ul.elementor-nav-menu--dropdown a:hover{text-shadow:none;border-left:8px solid transparent}.elementor-nav-menu__text-align-center .elementor-nav-menu--dropdown .elementor-nav-menu a{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-nav-menu--toggle .elementor-menu-toggle:not(.elementor-active)+.elementor-nav-menu__container{-webkit-transform:scaleY(0);-ms-transform:scaleY(0);transform:scaleY(0);max-height:0}.elementor-nav-menu--toggle .elementor-menu-toggle.elementor-active+.elementor-nav-menu__container{-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);max-height:100vh}.elementor-nav-menu--stretch .elementor-nav-menu__container.elementor-nav-menu--dropdown{position:absolute;z-index:9997}@media (max-width:767px){.elementor-nav-menu--dropdown-mobile .elementor-nav-menu--main{display:none}}@media (min-width:768px){.elementor-nav-menu--dropdown-mobile .elementor-menu-toggle,.elementor-nav-menu--dropdown-mobile .elementor-nav-menu--dropdown{display:none}}@media (max-width:-1px){.elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--main{display:none}}@media (min-width:-1px){.elementor-nav-menu--dropdown-mobile_extra .elementor-menu-toggle,.elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--dropdown{display:none}}@media (min-width:1025px){.elementor-nav-menu--dropdown-tablet .elementor-menu-toggle,.elementor-nav-menu--dropdown-tablet .elementor-nav-menu--dropdown{display:none}}@media (max-width:1024px){.elementor-nav-menu--dropdown-tablet .elementor-nav-menu--main{display:none}}@media (max-width:-1px){.elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--main{display:none}}@media (min-width:-1px){.elementor-nav-menu--dropdown-tablet_extra .elementor-menu-toggle,.elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--dropdown{display:none}}assets/css/widget-flip-box.min.css000064400000023211150755004320013133 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-flip-box{height:280px;position:relative;-webkit-perspective:1000px;perspective:1000px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}@media (max-device-width:1024px){.elementor-flip-box{cursor:pointer}}.elementor-flip-box__front{background-color:#1abc9c}.elementor-flip-box__back{background-color:#4054b2;display:block}.elementor-flip-box__layer{position:absolute;width:100%;height:100%;-webkit-transition:all .6s ease-in-out;-o-transition:all .6s ease-in-out;transition:all .6s ease-in-out}.elementor-flip-box__layer__overlay{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;text-align:center;padding:35px;color:#fff}.elementor-flip-box__layer__title{font-size:21px}.elementor-flip-box__layer__description{font-size:14px}.elementor-flip-box__layer__description:not(:last-child),.elementor-flip-box__layer__title:not(:last-child){margin:0 0 20px;padding:0}.elementor-flip-box__layer__title{line-height:1;font-weight:600}.elementor-flip-box,.elementor-flip-box .elementor-view-framed,.elementor-flip-box .elementor-view-stacked{--e-flip-box-view-framed-stacked-icon-color:#fff}.elementor-flip-box .elementor-icon,.elementor-flip-box .elementor-view-framed .elementor-icon,.elementor-flip-box .elementor-view-stacked .elementor-icon{color:var(--e-flip-box-view-framed-stacked-icon-color)}.elementor-flip-box .elementor-icon svg,.elementor-flip-box .elementor-view-framed .elementor-icon svg,.elementor-flip-box .elementor-view-stacked .elementor-icon svg{fill:var(--e-flip-box-view-framed-stacked-icon-color)}.elementor-flip-box .elementor-view-framed .elementor-icon{border-color:#fff}.elementor-flip-box .elementor-view-stacked .elementor-icon{background-color:rgba(0,0,0,.5)}.elementor-flip-box__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-flip-box__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-flip-box__image{margin:0 0 20px;display:inline-block;width:100%}.elementor-flip-box__image img{width:50%}.elementor-flip-box .elementor-icon-wrapper{margin-bottom:20px}.elementor-flip-box--3d .elementor-flip-box__layer__inner{-webkit-transform:translateZ(90px) scale(.91);transform:translateZ(90px) scale(.91)}.elementor-flip-box--3d .elementor-flip-box__layer__overlay{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:translateZ(.1px);transform:translateZ(.1px)}.elementor-flip-box--effect-flip .elementor-flip-box{-webkit-perspective:1000px;perspective:1000px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.elementor-flip-box--effect-flip .elementor-flip-box__layer{-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-backface-visibility:hidden;backface-visibility:hidden}.elementor-flip-box--effect-flip .elementor-flip-box__front{-webkit-transform:none;-ms-transform:none;transform:none;z-index:1}.elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box__back{-webkit-transform:rotateX(0) rotateY(-180deg);transform:rotateX(0) rotateY(-180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box__back,.elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(0) rotateY(180deg);transform:rotateX(0) rotateY(180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(0) rotateY(-180deg);transform:rotateX(0) rotateY(-180deg)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box__back{-webkit-transform:rotateX(-180deg) rotateY(0);transform:rotateX(-180deg) rotateY(0)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box__back,.elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(180deg) rotateY(0);transform:rotateX(180deg) rotateY(0)}.elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:rotateX(-180deg) rotateY(0);transform:rotateX(-180deg) rotateY(0)}.elementor-flip-box--effect-push .elementor-flip-box__front{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(100%) translateY(0);-ms-transform:translateX(100%) translateY(0);transform:translateX(100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(-100%) translateY(0);-ms-transform:translateX(-100%) translateY(0);transform:translateX(-100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(0) translateY(-100%);-ms-transform:translateX(0) translateY(-100%);transform:translateX(0) translateY(-100%)}.elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front{-webkit-transform:translateX(0) translateY(100%);-ms-transform:translateX(0) translateY(100%);transform:translateX(0) translateY(100%)}.elementor-flip-box--effect-push .elementor-flip-box,.elementor-flip-box--effect-slide .elementor-flip-box{overflow:hidden}.elementor-flip-box--effect-push .elementor-flip-box:hover .elementor-flip-box__back,.elementor-flip-box--effect-slide .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none}.elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-right .elementor-flip-box__back{-webkit-transform:translateX(-100%) translateY(0);-ms-transform:translateX(-100%) translateY(0);transform:translateX(-100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-left .elementor-flip-box__back{-webkit-transform:translateX(100%) translateY(0);-ms-transform:translateX(100%) translateY(0);transform:translateX(100%) translateY(0)}.elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-up .elementor-flip-box__back{-webkit-transform:translateX(0) translateY(100%);-ms-transform:translateX(0) translateY(100%);transform:translateX(0) translateY(100%)}.elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box__back,.elementor-flip-box--effect-slide.elementor-flip-box--direction-down .elementor-flip-box__back{-webkit-transform:translateX(0) translateY(-100%);-ms-transform:translateX(0) translateY(-100%);transform:translateX(0) translateY(-100%)}.elementor-flip-box--effect-zoom-out .elementor-flip-box .elementor-flip-box__front{-webkit-transition:opacity .35s,width .1ms,-webkit-transform .7s;transition:opacity .35s,width .1ms,-webkit-transform .7s;-o-transition:transform .7s,opacity .35s,width .1ms;transition:transform .7s,opacity .35s,width .1ms;transition:transform .7s,opacity .35s,width .1ms,-webkit-transform .7s;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);z-index:1;width:100%}.elementor-flip-box--effect-zoom-out .elementor-flip-box:hover .elementor-flip-box__front{width:0;opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7);-webkit-transition:opacity .7s .1s,width .1ms .7s,-webkit-transform .8s;transition:opacity .7s .1s,width .1ms .7s,-webkit-transform .8s;-o-transition:transform .8s,opacity .7s .1s,width .1ms .7s;transition:transform .8s,opacity .7s .1s,width .1ms .7s;transition:transform .8s,opacity .7s .1s,width .1ms .7s,-webkit-transform .8s}.elementor-flip-box--effect-zoom-in .elementor-flip-box .elementor-flip-box__back{-webkit-transition:opacity .5s .2s,-webkit-transform .7s;transition:opacity .5s .2s,-webkit-transform .7s;-o-transition:transform .7s,opacity .5s .2s;transition:transform .7s,opacity .5s .2s;transition:transform .7s,opacity .5s .2s,-webkit-transform .7s;opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}.elementor-flip-box--effect-zoom-in .elementor-flip-box:hover .elementor-flip-box__back{-webkit-transition:opacity .5s,-webkit-transform .7s;transition:opacity .5s,-webkit-transform .7s;-o-transition:transform .7s,opacity .5s;transition:transform .7s,opacity .5s;transition:transform .7s,opacity .5s,-webkit-transform .7s;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.elementor-flip-box--effect-fade .elementor-flip-box .elementor-flip-box__back{opacity:0}.elementor-flip-box--effect-fade .elementor-flip-box:hover .elementor-flip-box__back{opacity:1}.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__front{display:none}.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__back{-webkit-transform:none;-ms-transform:none;transform:none;opacity:1}assets/css/frontend-lite-rtl.css000064400000457415150755004320012742 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-bg-transform .elementor-bg {
  will-change: transform; }

.elementor-bg-transform-zoom-in:hover .elementor-bg {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2); }

.elementor-bg-transform-zoom-out .elementor-bg {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2); }

.elementor-bg-transform-zoom-out:hover .elementor-bg {
  -webkit-transform: scale(1);
      -ms-transform: scale(1);
          transform: scale(1); }

.elementor-bg-transform-move-left .elementor-bg {
  -webkit-transform: scale(1.2) translateX(8%);
      -ms-transform: scale(1.2) translateX(8%);
          transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-left:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateX(-8%);
      -ms-transform: scale(1.2) translateX(-8%);
          transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right .elementor-bg {
  -webkit-transform: scale(1.2) translateX(-8%);
      -ms-transform: scale(1.2) translateX(-8%);
          transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateX(8%);
      -ms-transform: scale(1.2) translateX(8%);
          transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-up .elementor-bg {
  -webkit-transform: scale(1.2) translateY(8%);
      -ms-transform: scale(1.2) translateY(8%);
          transform: scale(1.2) translateY(8%); }

.elementor-bg-transform-move-up:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateY(-8%);
      -ms-transform: scale(1.2) translateY(-8%);
          transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down .elementor-bg {
  -webkit-transform: scale(1.2) translateY(-8%);
      -ms-transform: scale(1.2) translateY(-8%);
          transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateY(8%);
      -ms-transform: scale(1.2) translateY(8%);
          transform: scale(1.2) translateY(8%); }

/*---------------------------------------------------------------------------*/
.elementor-animated-content {
  --translate: 0, 0; }
  .elementor-animated-content:hover .elementor-animated-item--grow {
    -webkit-transform: scale(1.1);
        -ms-transform: scale(1.1);
            transform: scale(1.1); }
  .elementor-animated-content:hover .elementor-animated-item--shrink {
    -webkit-transform: scale(0.85);
        -ms-transform: scale(0.85);
            transform: scale(0.85); }
  .elementor-animated-content:hover .elementor-animated-item--shrink-contained {
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1); }
  .elementor-animated-content:hover .elementor-animated-item--enter-zoom-out, .elementor-animated-content:hover .elementor-animated-item--enter-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-in {
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1);
    opacity: 1; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out, .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-out {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out {
    -webkit-transform: scale(0.2);
        -ms-transform: scale(0.2);
            transform: scale(0.2); }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in {
    -webkit-transform: scale(2);
        -ms-transform: scale(2);
            transform: scale(2); }
  .elementor-animated-content:hover .elementor-animated-item--enter-from-right, .elementor-animated-content:hover .elementor-animated-item--enter-from-left, .elementor-animated-content:hover .elementor-animated-item--enter-from-top, .elementor-animated-content:hover .elementor-animated-item--enter-from-bottom {
    opacity: 1;
    -webkit-transform: translateY(0) translateX(0);
        -ms-transform: translateY(0) translateX(0);
            transform: translateY(0) translateX(0); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right {
    -webkit-transform: translateX(1000px);
        -ms-transform: translateX(1000px);
            transform: translateX(1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-left {
    -webkit-transform: translateX(-1000px);
        -ms-transform: translateX(-1000px);
            transform: translateX(-1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-top {
    -webkit-transform: translateY(-600px);
        -ms-transform: translateY(-600px);
            transform: translateY(-600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    -webkit-transform: translateY(600px);
        -ms-transform: translateY(600px);
            transform: translateY(600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right, .elementor-animated-content:hover .elementor-animated-item--exit-to-left, .elementor-animated-content:hover .elementor-animated-item--exit-to-top, .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-right {
    -webkit-transform: translateX(30px);
        -ms-transform: translateX(30px);
            transform: translateX(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-left {
    -webkit-transform: translateX(-30px);
        -ms-transform: translateX(-30px);
            transform: translateX(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-up {
    -webkit-transform: translateY(-30px);
        -ms-transform: translateY(-30px);
            transform: translateY(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-down {
    -webkit-transform: translateY(30px);
        -ms-transform: translateY(30px);
            transform: translateY(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-right {
    --translate: 8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-left {
    --translate: -8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-top {
    --translate: 0, -8%; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-bottom {
    --translate: 0, 8%; }
  .elementor-animated-content *[class^="elementor-animated-item"] {
    will-change: transform, opacity; }
  .elementor-animated-content .elementor-animated-item--shrink-contained {
    -webkit-transform: scale(1.17);
        -ms-transform: scale(1.17);
            transform: scale(1.17); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-in {
    -webkit-transform: scale(0.2);
        -ms-transform: scale(0.2);
            transform: scale(0.2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out {
    -webkit-transform: scale(2);
        -ms-transform: scale(2);
            transform: scale(2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out, .elementor-animated-content .elementor-animated-item--enter-zoom-in, .elementor-animated-content .elementor-animated-item--fade-in {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-zoom-out, .elementor-animated-content .elementor-animated-item--exit-zoom-in, .elementor-animated-content .elementor-animated-item--fade-out {
    opacity: 1;
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1); }
  .elementor-animated-content .elementor-animated-item--enter-from-right {
    -webkit-transform: translateX(1000px);
        -ms-transform: translateX(1000px);
            transform: translateX(1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-left {
    -webkit-transform: translateX(-1000px);
        -ms-transform: translateX(-1000px);
            transform: translateX(-1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-top {
    -webkit-transform: translateY(-600px);
        -ms-transform: translateY(-600px);
            transform: translateY(-600px); }
  .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    -webkit-transform: translateY(500px);
        -ms-transform: translateY(500px);
            transform: translateY(500px); }
  .elementor-animated-content .elementor-animated-item--enter-from-right, .elementor-animated-content .elementor-animated-item--enter-from-left, .elementor-animated-content .elementor-animated-item--enter-from-top, .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-to-right, .elementor-animated-content .elementor-animated-item--exit-to-left, .elementor-animated-content .elementor-animated-item--exit-to-top, .elementor-animated-content .elementor-animated-item--exit-to-bottom {
    opacity: 1;
    -webkit-transform: translateY(0) translateX(0);
        -ms-transform: translateY(0) translateX(0);
            transform: translateY(0) translateX(0); }
  .elementor-animated-content .elementor-animated-item--move-contained-right, .elementor-animated-content .elementor-animated-item--move-contained-left, .elementor-animated-content .elementor-animated-item--move-contained-top, .elementor-animated-content .elementor-animated-item--move-contained-bottom {
    -webkit-transform: scale(1.2) translate(var(--translate));
        -ms-transform: scale(1.2) translate(var(--translate));
            transform: scale(1.2) translate(var(--translate)); }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover {
  outline: 1px solid #fec449; }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings {
  background-image: -webkit-gradient(linear, left bottom, left top, from(#feb416), to(#fec449));
  background-image: -webkit-linear-gradient(bottom, #feb416, #fec449);
  background-image: -o-linear-gradient(bottom, #feb416, #fec449);
  background-image: linear-gradient(to top, #feb416, #fec449); }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover {
    background-color: #feb416; }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save {
    display: none; }

body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  width: 100%;
  padding: 0; }

body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  padding: 0; }

.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart {
  margin: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap; }

.woocommerce div.product.elementor .quantity .qty {
  vertical-align: top;
  margin-left: 0; }

.woocommerce div.product.elementor .quantity + .button {
  margin-right: 10px; }

.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input {
  height: 100%; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
  margin-left: initial; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
  -ms-flex-preferred-size: auto;
      flex-basis: auto; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-left: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%; }

@media (max-width: 1024px) {
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-left: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    -ms-flex-preferred-size: auto;
        flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-left: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      -ms-flex-preferred-size: 100%;
          flex-basis: 100%; } }

@media (max-width: 767px) {
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-left: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    -ms-flex-preferred-size: auto;
        flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-left: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      -ms-flex-preferred-size: 100%;
          flex-basis: 100%; } }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button {
  background-color: #5bc0de; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button {
  background-color: #5cb85c; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button {
  background-color: #f0ad4e; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button {
  background-color: #d9534f; }

.elementor-widget-wc-add-to-cart .quantity {
  display: inline-block; }

.elementor-widget-wc-add-to-cart.elementor-align-center form.cart {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-widget-wc-add-to-cart.elementor-align-right form.cart {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-widget-wc-add-to-cart.elementor-align-left form.cart {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.woocommerce div.product.elementor {
  /*  Reset WC tabs style  */
  /*  End Reset WC tabs style  */ }
  .woocommerce div.product.elementor ul.tabs:before {
    position: static;
    content: none;
    width: auto;
    bottom: auto;
    left: auto;
    border-bottom: 0;
    z-index: auto; }
  .woocommerce div.product.elementor ul.tabs {
    margin: 0; }
    .woocommerce div.product.elementor ul.tabs li {
      padding: 0; }
      .woocommerce div.product.elementor ul.tabs li a {
        padding: .8em 1.2em;
        line-height: 1; }
    .woocommerce div.product.elementor ul.tabs li:after,
    .woocommerce div.product.elementor ul.tabs li:before {
      border: 0;
      position: static;
      bottom: auto;
      width: auto;
      height: auto;
      content: none;
      -webkit-box-sizing: border-box;
              box-sizing: border-box; }
  .woocommerce div.product.elementor .woocommerce-tabs .panel {
    margin: 0;
    padding: 20px;
    border-radius: 0;
    border-width: 0;
    border-top: 1px solid #d3ced2;
    -webkit-box-shadow: none;
            box-shadow: none;
    margin-top: -1px; }

.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,
.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins {
  display: block; }

.elementor-widget-woocommerce-product-meta .detail-container {
  position: relative; }
  .elementor-widget-woocommerce-product-meta .detail-container:after {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%; }

.elementor-widget-woocommerce-product-meta .detail-label {
  font-weight: bold; }

.elementor-woo-meta--view-inline .product_meta {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap; }
  .elementor-woo-meta--view-inline .product_meta .detail-container:after {
    width: auto;
    left: auto;
    right: auto;
    position: absolute;
    height: 100%;
    top: 50%;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%);
    border-top: 0;
    border-bottom: 0;
    border-right: 0;
    border-left-width: 1px;
    border-style: solid;
    left: -8px; }

.elementor-woo-meta--view-table .product_meta {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column; }
  .elementor-woo-meta--view-table .product_meta .detail-container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .elementor-woo-meta--view-table .product_meta .detail-label {
    min-width: 108px; }

.elementor-woo-meta--view-stacked .product_meta .detail-container {
  display: block; }

.woocommerce div.product.elementor .woocommerce-product-rating {
  margin-bottom: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.woocommerce div.product.elementor .star-rating {
  margin-top: 0; }

.elementor-product-rating--align-left .woocommerce-product-rating {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor-product-rating--align-right .woocommerce-product-rating {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-product-rating--align-center .woocommerce-product-rating {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link {
  margin-right: auto; }

.elementor-products-grid ul.products.elementor-grid {
  display: grid;
  margin: 0;
  grid-column-gap: 20px;
  grid-row-gap: 40px; }
  .elementor-products-grid ul.products.elementor-grid:before, .elementor-products-grid ul.products.elementor-grid:after {
    content: none;
    display: none; }
  .elementor-products-grid ul.products.elementor-grid li.product {
    width: auto;
    padding: 0;
    margin: 0;
    float: none; }
    .elementor-products-grid ul.products.elementor-grid li.product .onsale {
      padding: 0;
      display: none; }
    .elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link {
      display: block;
      position: relative; }

.elementor-products-grid:not(.show-heading-yes) .products > h2 {
  display: none; }

.elementor-products-grid nav.woocommerce-pagination {
  margin-top: 40px; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul {
  border: none 0; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li {
  border-right: none 0;
  border-left: none 0; }

.elementor-product-loop-item--align-left ul.products li.product .star-rating {
  margin-right: auto; }

.elementor-product-loop-item--align-right ul.products li.product .star-rating {
  margin-left: auto; }

.elementor-product-loop-item--align-center ul.products li.product .star-rating {
  margin-right: auto;
  margin-left: auto; }

.woocommerce .elementor-element.elementor-products-grid ul.products li.product {
  width: auto; }

.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,
.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product {
  width: auto; }

@media (min-width: 1025px) {
  .elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products {
    grid-template-columns: repeat(2, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products {
    grid-template-columns: repeat(3, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products {
    grid-template-columns: repeat(4, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products {
    grid-template-columns: repeat(5, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products {
    grid-template-columns: repeat(6, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products {
    grid-template-columns: repeat(7, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products {
    grid-template-columns: repeat(8, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products {
    grid-template-columns: repeat(9, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products {
    grid-template-columns: repeat(10, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products {
    grid-template-columns: repeat(11, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products {
    grid-template-columns: repeat(12, 1fr); } }

@media (max-width: 1024px) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(3, 1fr); } }

@media (max-width: 767px) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(2, 1fr); } }

.elementor.product .woocommerce-product-gallery__trigger + .woocommerce-product-gallery__wrapper {
  overflow: hidden; }

.woocommerce .elementor-widget-woocommerce-product-images span.onsale {
  padding: 0; }

.elementor-menu-cart__wrapper {
  text-align: var(--main-alignment, right); }

.elementor-menu-cart__toggle_wrapper {
  display: inline-block;
  position: relative; }

.elementor-menu-cart__toggle {
  display: inline-block; }
  .elementor-menu-cart__toggle .elementor-button {
    background-color: var(--toggle-button-background-color, transparent);
    color: var(--toggle-button-text-color, #818a91);
    border-style: var(--toggle-button-border-type, solid);
    border-width: var(--toggle-button-border-width, 1px);
    border-color: var(--toggle-button-border-color, #818a91);
    border-radius: var(--toggle-button-border-radius, 0px);
    display: -webkit-inline-box;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    padding: var(--toggle-icon-padding, 12px 24px); }
    .elementor-menu-cart__toggle .elementor-button:hover {
      color: var(--toggle-button-hover-text-color, #818a91);
      background-color: var(--toggle-button-hover-background-color, transparent);
      border-color: var(--toggle-button-hover-border-color, #818a91); }
      .elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon {
        color: var(--toggle-button-icon-hover-color, #818a91); }
  .elementor-menu-cart__toggle .elementor-button-text {
    margin-left: 0.3em; }
  .elementor-menu-cart__toggle .elementor-button-icon {
    position: relative;
    -webkit-transition: color 0.1s;
    -o-transition: color 0.1s;
    transition: color 0.1s;
    color: var(--toggle-button-icon-color, #818a91);
    font-size: var(--toggle-icon-size, inherit); }

.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: block;
  position: absolute;
  min-width: 1.6em;
  height: 1.6em;
  line-height: 1.5em;
  top: -0.7em;
  left: -0.7em;
  border-radius: 100%;
  color: var(--items-indicator-text-color, #fff);
  background-color: var(--items-indicator-background-color, #d9534f);
  text-align: center;
  font-size: 10px; }

.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: inline-block;
  font-weight: normal; }

.elementor-menu-cart__container {
  -webkit-transform: scale(1);
      -ms-transform: scale(1);
          transform: scale(1);
  overflow: hidden;
  position: fixed;
  z-index: 9998;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgba(0, 0, 0, 0.25);
  -webkit-transition: background-color 0.4s, -webkit-transform 0s;
  transition: background-color 0.4s, -webkit-transform 0s;
  -o-transition: background-color 0.4s, transform 0s;
  transition: background-color 0.4s, transform 0s;
  transition: background-color 0.4s, transform 0s, -webkit-transform 0s;
  text-align: right; }

.elementor-menu-cart__main {
  position: fixed;
  left: var(--side-cart-alignment-left, 0);
  right: var(--side-cart-alignment-right, auto);
  -webkit-transform: translateX(0);
      -ms-transform: translateX(0);
          transform: translateX(0);
  top: 0;
  bottom: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch;
  font-size: 14px;
  min-height: 200px;
  width: 350px;
  max-width: 100%;
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s;
  padding: var(--cart-padding, 20px 30px);
  background-color: var(--cart-background-color, #fff);
  -webkit-box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
          box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
  border-style: var(--cart-border-style, none);
  border-color: var(--cart-border-color, initial);
  border-radius: var(--cart-border-radius, 0px);
  margin-top: var(--mini-cart-spacing, 0px); }
  .elementor-menu-cart__main .widget_shopping_cart_content {
    height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }
    .elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message {
      color: var(--empty-message-color, inherit);
      text-align: var(--empty-message-alignment, right); }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
  background-color: transparent;
  -webkit-transform: scale(0);
      -ms-transform: scale(0);
          transform: scale(0);
  -webkit-transition: background-color 0.4s, -webkit-transform 0s 0.4s;
  transition: background-color 0.4s, -webkit-transform 0s 0.4s;
  -o-transition: background-color 0.4s, transform 0s 0.4s;
  transition: background-color 0.4s, transform 0s 0.4s;
  transition: background-color 0.4s, transform 0s 0.4s, -webkit-transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button {
    display: none; }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
  overflow: hidden;
  opacity: 0;
  -webkit-transform: var(--side-cart-alignment-transform, translateX(-100%));
      -ms-transform: var(--side-cart-alignment-transform, translateX(-100%));
          transform: var(--side-cart-alignment-transform, translateX(-100%)); }

.elementor-menu-cart__close-button {
  width: var(--cart-close-icon-size, 25px);
  height: var(--cart-close-icon-size, 25px);
  position: relative;
  margin: 0 0 20px;
  -ms-flex-item-align: end;
      align-self: flex-end;
  cursor: pointer;
  display: inline-block;
  font-family: eicons;
  font-size: 20px;
  line-height: 1;
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s; }
  .elementor-menu-cart__close-button:before, .elementor-menu-cart__close-button:after {
    content: '';
    position: absolute;
    height: 3px;
    width: 100%;
    top: 50%;
    left: 0;
    margin-top: -1px;
    background: var(--cart-close-button-color, #818a91);
    border-radius: 1px;
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s; }
  .elementor-menu-cart__close-button:hover::before, .elementor-menu-cart__close-button:hover::after {
    background: var(--cart-close-button-hover-color, #818a91); }
  .elementor-menu-cart__close-button::before {
    -webkit-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
            transform: rotate(45deg); }
  .elementor-menu-cart__close-button::after {
    -webkit-transform: rotate(-45deg);
        -ms-transform: rotate(-45deg);
            transform: rotate(-45deg); }

.elementor-menu-cart__products {
  max-height: calc(100vh - 250px);
  overflow: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch; }

.elementor-menu-cart__product {
  display: grid;
  grid-template-columns: 28% auto;
  grid-template-rows: var(--price-quantity-position--grid-template-rows, auto auto);
  position: relative;
  border-width: 0 0 var(--divider-width, 1px);
  border-bottom-style: var(--divider-style, solid);
  border-bottom-color: var(--divider-color, #D4D4D4); }
  .elementor-menu-cart__product .variation {
    display: grid;
    grid-template-columns: -webkit-max-content auto;
    grid-template-columns: max-content auto;
    margin: 10px 0; }
    .elementor-menu-cart__product .variation dt {
      grid-column-start: 1; }
    .elementor-menu-cart__product .variation dd {
      grid-column-start: 2;
      -webkit-margin-start: 5px;
              margin-inline-start: 5px; }
      .elementor-menu-cart__product .variation dd p {
        margin-bottom: 0; }
  .elementor-menu-cart__product-image {
    grid-row-start: 1;
    grid-row-end: 3;
    width: 100%; }
    .elementor-menu-cart__product-image img, .elementor-menu-cart__product-image a {
      display: block; }
  .elementor-menu-cart__product-name {
    grid-column-start: 2;
    grid-column-end: 3;
    margin: 0; }
    .elementor-menu-cart__product-name a {
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
  .elementor-menu-cart__product-price {
    grid-column-start: 2;
    grid-column-end: 3;
    -ms-flex-item-align: var(--price-quantity-position--align-self, end);
        align-self: var(--price-quantity-position--align-self, end);
    font-weight: 300;
    color: var(--product-price-color, #D4D4D4); }
  .elementor-menu-cart__product-name, .elementor-menu-cart__product-price {
    font-size: 14px;
    padding-right: 20px; }
  .elementor-menu-cart__product-remove {
    color: #818a91;
    width: var(--remove-item-button-size, 22px);
    height: var(--remove-item-button-size, 22px);
    border-radius: var(--remove-item-button-size, 22px);
    border: 1px solid var(--remove-item-button-color, #D4D4D4);
    text-align: center;
    overflow: hidden;
    position: absolute;
    left: 0;
    bottom: 20px;
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s; }
    .elementor-menu-cart__product-remove:hover {
      border: 1px solid var(--remove-item-button-hover-color, #D4D4D4); }
      .elementor-menu-cart__product-remove:hover::before, .elementor-menu-cart__product-remove:hover::after {
        background: var(--remove-item-button-hover-color, #D4D4D4); }
    .elementor-menu-cart__product-remove:before, .elementor-menu-cart__product-remove:after {
      content: '';
      position: absolute;
      height: 1px;
      width: 50%;
      top: 50%;
      left: 25%;
      margin-top: -1px;
      background: var(--remove-item-button-color, #D4D4D4);
      z-index: 1;
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
    .elementor-menu-cart__product-remove::before {
      -webkit-transform: rotate(45deg);
          -ms-transform: rotate(45deg);
              transform: rotate(45deg); }
    .elementor-menu-cart__product-remove::after {
      -webkit-transform: rotate(-45deg);
          -ms-transform: rotate(-45deg);
              transform: rotate(-45deg); }
    .elementor-menu-cart__product-remove > a {
      display: block;
      z-index: 2;
      width: 100%;
      height: 100%;
      overflow: hidden;
      opacity: 0;
      position: absolute; }
      .elementor-menu-cart__product-remove > a.remove_from_cart_button {
        display: var(--remove-from-cart-button, block); }
      .elementor-menu-cart__product-remove > a.elementor_remove_from_cart_button {
        display: var(--elementor-remove-from-cart-button, none); }

.elementor-menu-cart__product:last-child {
  border: none; }

.elementor-menu-cart__product:not(:first-of-type), .elementor-menu-cart__subtotal, .elementor-menu-cart__footer-buttons {
  padding-top: var(--product-divider-gap, 20px); }

.elementor-menu-cart__product {
  padding-left: 30px; }

.elementor-menu-cart__product, .elementor-menu-cart__subtotal {
  padding-bottom: var(--product-divider-gap, 20px); }

.elementor-menu-cart__subtotal {
  font-size: 20px;
  text-align: var(--menu-cart-subtotal-text-align, center);
  font-weight: 600;
  color: var(--menu-cart-subtotal-color, inherit);
  border-style: var(--subtotal-divider-style, solid);
  border-width: var(--subtotal-divider-top-width, 1px) var(--subtotal-divider-right-width, 1px) var(--subtotal-divider-bottom-width, 1px) var(--subtotal-divider-left-width, 1px);
  border-color: var(--subtotal-divider-color, #D4D4D4); }

.elementor-menu-cart__footer-buttons {
  font-size: 20px;
  text-align: var(--cart-footer-buttons-alignment-text-align, center);
  display: var(--cart-footer-buttons-alignment-display, grid);
  grid-template-columns: var(--cart-footer-layout, 1fr 1fr);
  margin-top: var(--cart-buttons-position-margin, 0);
  grid-column-gap: var(--space-between-buttons, 10px);
  grid-row-gap: var(--space-between-buttons, 10px); }
  .elementor-menu-cart__footer-buttons .elementor-button {
    display: inline-block;
    border-radius: var(--cart-footer-buttons-border-radius, 0px);
    height: -webkit-fit-content;
    height: -moz-fit-content;
    height: fit-content; }
    .elementor-menu-cart__footer-buttons .elementor-button--view-cart {
      display: var(--view-cart-button-display, inline-block);
      color: var(--view-cart-button-text-color, #fff);
      padding: var(--view-cart-button-padding, 15px);
      background-color: var(--view-cart-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover {
        color: var(--view-cart-button-hover-text-color, #fff);
        background-color: var(--view-cart-button-hover-background-color, #818a91); }
    .elementor-menu-cart__footer-buttons .elementor-button--checkout {
      display: var(--checkout-button-display, inline-block);
      color: var(--checkout-button-text-color, #fff);
      padding: var(--checkout-button-padding, 15px);
      background-color: var(--checkout-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--checkout:hover {
        color: var(--checkout-button-hover-text-color, #fff);
        background-color: var(--checkout-button-hover-background-color, #818a91); }
    @media (max-width: 767px) {
      .elementor-menu-cart__footer-buttons .elementor-button {
        padding-left: 10px;
        padding-right: 10px; } }

/* The following is all to apply settings from the controls */
.elementor-widget-woocommerce-menu-cart {
  /* Fix to prevent the cart modal flash when using the typography controls */
  /* Fix for short-lived legacy cart type */ }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before {
    content: none; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e3'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e4'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e5'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e6'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e7'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e8'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e9'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8ea'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8eb'; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product {
    padding-left: 0;
    padding-right: 0;
    grid-template-columns: 25% auto; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove {
    top: 0;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove {
    top: 20px;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove {
    -webkit-transform: translateY(50%);
        -ms-transform: translateY(50%);
            transform: translateY(50%);
    bottom: 50%; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove {
    top: auto;
    bottom: 20px; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart {
    /* The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
			and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
      position: absolute;
      z-index: 89;
      width: auto;
      height: auto;
      overflow: visible;
      top: 100%;
      bottom: auto;
      background: none;
      min-width: 330px;
      right: 0;
      left: auto;
      -webkit-transform: scale(1);
          -ms-transform: scale(1);
              transform: scale(1);
      -webkit-transition: background-color 0.4s, -webkit-transform 0s;
      transition: background-color 0.4s, -webkit-transform 0s;
      -o-transition: background-color 0.4s, transform 0s;
      transition: background-color 0.4s, transform 0s;
      transition: background-color 0.4s, transform 0s, -webkit-transform 0s; }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main {
      width: auto;
      height: auto;
      position: relative;
      top: auto;
      bottom: auto;
      right: auto;
      left: auto;
      overflow: visible;
      -webkit-transform: translateY(0);
          -ms-transform: translateY(0);
              transform: translateY(0);
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
    @media (max-width: 767px) {
      .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
        min-width: 300px; } }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
    -webkit-transform: scale(0);
        -ms-transform: scale(0);
            transform: scale(0);
    -webkit-transition: background-color 0.4s, -webkit-transform 0s 0.4s;
    transition: background-color 0.4s, -webkit-transform 0s 0.4s;
    -o-transition: background-color 0.4s, transform 0s 0.4s;
    transition: background-color 0.4s, transform 0s 0.4s;
    transition: background-color 0.4s, transform 0s 0.4s, -webkit-transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
    opacity: 0;
    -webkit-transform: translateY(-10px);
        -ms-transform: translateY(-10px);
            transform: translateY(-10px); }
  .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown {
    opacity: 1;
    /* This keeps mini-cart panels above other widgets so there's no flash when using the typography controls.
		The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
		and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container {
      z-index: 9998; }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart {
      z-index: 89; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container {
    display: none; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-checkout-page {
  background-color: transparent;
  font-family: Roboto, sans-serif;
  font-size: 14px;
  line-height: 21px;
  color: #818a91;
  /* one column layout */
  /* override theme defaults for themes that have hover background colors on these elements. The hover background colors do not play well with the widget's initial design. */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-checkout-page ::-webkit-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page ::-moz-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page ::-ms-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > td,
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > th {
    background-color: transparent; }
  .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: #f7f7f7;
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: #f7f7f7;
      border-color: var(--forms-fields-focus-border-color, initial);
      -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
           -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
              transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below {
    background-color: #f7f7f7; }
  .elementor-widget-woocommerce-checkout-page .e-description {
    color: var(--sections-descriptions-color, #818a91);
    padding-bottom: var(--sections-descriptions-spacing, 0px);
    font-size: 14px;
    font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section {
    margin-bottom: 24px; }
    .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title {
      text-align: var(--login-title-alignment, right); }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge {
    margin-top: var(--sections-secondary-title-spacing, 24px);
    margin-bottom: 15px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor {
    margin-top: var(--sections-secondary-title-spacing, 24px); }
  .elementor-widget-woocommerce-checkout-page .e-coupon-box {
    margin-top: 24px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description {
    color: var(--forms-labels-color, #818a91);
    margin-bottom: var(--forms-label-spacing, 3px); }
  .elementor-widget-woocommerce-checkout-page .e-login-wrap {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-start {
      -webkit-box-flex: 75%;
          -ms-flex: 75%;
              flex: 75%; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
      -webkit-box-flex: 20%;
          -ms-flex: 20%;
              flex: 20%;
      text-align: left; }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .e-login-wrap {
        display: block; }
        .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
          text-align: right;
          margin-top: 15px; }
          .elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label {
            display: none; } }
  .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    margin-top: 6px; }
    .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
      margin-bottom: 0;
      font-size: 12px; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
          font-size: 11px; } }
  .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
    width: 90%;
    /* 90% to match the design */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
        width: auto; } }
  .elementor-widget-woocommerce-checkout-page .e-checkout__container {
    display: grid;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    grid-template-columns: 56% auto;
    /* column widths - to match the design */
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch;
    grid-column-gap: var(--sections-margin, 24px);
    grid-row-gap: var(--sections-margin, 24px); }
  @media (max-width: 1024px) {
    .elementor-widget-woocommerce-checkout-page .e-checkout__container {
      grid-template-columns: repeat(1, 1fr); } }
  .elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title {
    color: var(--sections-secondary-title-color, #818a91);
    margin-bottom: 0; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge {
    text-align: var(--coupon-title-alignment, right); }
  .elementor-widget-woocommerce-checkout-page #ship-to-different-address {
    margin-top: 13px;
    padding-right: var(--shipping-heading-padding-start, 30px); }
    .elementor-widget-woocommerce-checkout-page #ship-to-different-address span {
      font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-checkout-page a:hover {
      color: var(--links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-checkout-page .woocommerce {
    /* Need to use these specific selectors to override WooCommerce CSS */
    /* Need the <button> selector here so that we can target .woocommerce-button
		without being overwritten by WooCommerce's button.button selector.
		We are also targeting .woocommerce-button because none of this styling should
		apply to the Purchase button. Only The Login/Apply coupon button. */
    /* Main Sections styling start */
    /* Main Sections styling end */
    /* Styling for everything classified as 'Messages' start */
    /* Styling for everything classified as 'Messages' end */ }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      padding-left: var(--forms-columns-gap-padding, 0px);
      padding-right: var(--forms-columns-gap-padding, 0px);
      margin-left: var(--forms-columns-gap-margin, 0px);
      margin-right: var(--forms-columns-gap-margin, 0px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label {
        color: var(--forms-labels-color, #818a91);
        margin-bottom: var(--forms-label-spacing, 3px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea {
        color: var(--forms-fields-normal-color, #818a91);
        background-color: #f7f7f7;
        border-radius: var(--forms-fields-border-radius, 0px);
        padding: var(--forms-fields-padding, 16px);
        font-size: 14px;
        border: none;
        font-weight: 400; }
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus {
          color: var(--forms-fields-focus-color, #818a91);
          background-color: #f7f7f7;
          border-color: var(--forms-fields-focus-border-color, #818a91);
          -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
               -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                  transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field {
      margin-bottom: 5px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .create-account,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      /* need to use !important here to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 0 !important; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .input-radio,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span {
      position: relative;
      top: 2px;
      color: var(--sections-checkboxes-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label {
      display: inline; }
    .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #6F6F6F);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: 1rem;
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover {
        color: var(--forms-buttons-hover-text-color, #6F6F6F);
        -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
      margin-right: 1%; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
          width: 100%;
          margin-right: 0;
          margin-bottom: 15px; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-info {
      border-top-color: transparent;
      background-color: transparent;
      padding: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p {
      font-weight: 400;
      font-size: 12px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info {
      font-weight: 400;
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment,
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      background: var(--sections-background-color, #ffffff);
      border-radius: var(--sections-border-radius, 3px);
      padding: var(--sections-padding, 16px 30px);
      margin: var(--sections-margin, 0 0 24px 0);
      border-style: var(--sections-border-type, solid);
      border-color: var(--sections-border-color, #D4D4D4);
      border-width: 1px;
      display: block; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      display: var(--additional-information-display, none); }
    @media (min-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
        margin: var(--sections-margin, 0); } }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message {
      color: var(--sections-messages-color, #818a91);
      font-weight: 400; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p {
      margin-top: 25px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1 {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2 {
      padding-top: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading {
      text-align: var(--order-review-title-alignment, right); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table {
      margin-bottom: 0;
      border: 0;
      font-size: 14px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead {
        background-color: transparent; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th {
          padding-top: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td {
        color: #000000; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity {
          font-weight: normal; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td {
        color: #818a91; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th {
        border: 0;
        padding-left: 0;
        padding-bottom: 15px;
        padding-top: 15px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td {
        padding-bottom: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td {
      font-weight: 400;
      color: var(--order-summary-items-color, #000000);
      border-bottom-color: var(--order-summary-items-divider-color, #818a91);
      border-bottom-width: var(--order-summary-items-divider-weight, 0px);
      border-bottom-style: solid; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name {
        padding-left: 40px;
        max-width: 150px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total {
        vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th {
      padding-top: var(--order-summary-rows-gap-top, 15px);
      padding-bottom: var(--order-summary-rows-gap-bottom, 15px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th {
      color: var(--order-summary-totals-color, #818a91);
      vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th {
      border-top-color: var(--order-summary-totals-divider-color, #818a91);
      border-top-width: var(--order-summary-totals-divider-weight, 0px);
      border-top-style: solid; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td {
      max-width: 70px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce h3 {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      margin-bottom: var(--sections-title-spacing, 30px);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row > span {
      font-weight: 400;
      font-size: 14px;
      margin-bottom: 3px;
      color: #818a91; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
      /* use 48% to match the design. Default WC CSS uses 47% */
      width: 48%; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3 {
      text-align: var(--billing-details-title-alignment, right); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row {
      margin-bottom: var(--forms-rows-gap, 5px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child {
        margin-bottom: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login {
      margin-top: -8px;
      z-index: 999;
      background: #ffffff;
      border-top-width: 0;
      position: relative;
      margin-bottom: 0;
      color: #818a91; }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
        width: 100%; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle {
      display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
      width: 85%;
      /* 85% to match the design */ }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
          width: 35%;
          /* 35% to match the design */ } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3 {
      background: var(--additional-fields-title-alignment, right); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address {
      margin-bottom: var(--sections-margin, 20px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment {
      margin-top: 24px;
      padding: 15px 25px 25px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods {
        border-bottom: none;
        padding: 0; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box {
          background-color: #f7f7f7; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before {
            display: none; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li {
          line-height: 21px; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
            padding-right: 15px;
            font-size: 12px; }
            @media (max-width: 1024px) {
              .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
                float: none;
                font-size: 11px;
                padding-left: 10px; } }
          @media (max-width: 1024px) {
            .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img {
              width: 55px;
              /* 55px to match the design */ } }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        padding: 0;
        margin-bottom: 0;
        -webkit-box-align: var(--place-order-title-alignment, stretch);
            -ms-flex-align: var(--place-order-title-alignment, stretch);
                align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order {
        background-color: #5bc0de;
        width: var(--purchase-button-width, auto);
        float: none;
        color: var(--purchase-button-normal-text-color, #ffffff);
        min-height: auto;
        padding: var(--purchase-button-padding, 1em 1em);
        border-radius: var(--purchase-button-border-radius, 3px); }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover {
          background-color: #5bc0de;
          color: var(--purchase-button-hover-text-color, #ffffff);
          border-color: var(--purchase-button-hover-border-color, #5bc0de);
          -webkit-transition-duration: var(--purchase-button-hover-transition-duration, 0.3s);
               -o-transition-duration: var(--purchase-button-hover-transition-duration, 0.3s);
                  transition-duration: var(--purchase-button-hover-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before {
        display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2 {
      width: auto;
      float: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
      display: grid;
      grid-template-columns: auto auto;
      /*columns widths*/
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
        text-align: left; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
          display: block; }
          .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
            text-align: right; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field {
      /* need to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 10px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000);
      /* We need to specify these values so that the 'Items' Typography control does not affect
			the 'Variations' */
      font-size: 14px;
      font-style: normal;
      text-transform: none;
      letter-spacing: normal;
      text-decoration: none;
      line-height: 21px; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-cart {
  /* one column layout */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart table tbody tr:hover > td,
  .elementor-widget-woocommerce-cart table tbody tr:hover > th {
    background-color: inherit; }
  .elementor-widget-woocommerce-cart .e {
    /* .e-clear is a class that is added between the cart sections to fix collapsing margins,
		especially when custom margins are being set by the Style Controls, then the margins could
		start overriding the other margin, leaving one margin */ }
    .elementor-widget-woocommerce-cart .e-clear {
      overflow: hidden;
      height: 0;
      width: 0; }
    .elementor-widget-woocommerce-cart .e-cart {
      /* Main sections styling start */
      /* Main sections styling end */
      /* one column layout */ }
      .elementor-widget-woocommerce-cart .e-cart-section {
        background-color: var(--sections-background-color, #ffffff);
        padding: var(--sections-padding, 16px 30px);
        margin: var(--sections-margin, 0 0 30px 0);
        border-radius: var(--sections-border-radius, 3px);
        border-width: 1px;
        border-style: var(--sections-border-type, solid);
        border-color: var(--sections-border-color, #D4D4D4); }
      @media (min-width: 1024px) {
        .elementor-widget-woocommerce-cart .e-cart-section:last-child {
          margin: var(--sections-margin, 0); } }
      .elementor-widget-woocommerce-cart .e-cart-content {
        color: var(--sections-descriptions-color, #818a91);
        font-size: 15px;
        font-weight: 400;
        line-height: 23px;
        letter-spacing: 0; }
      .elementor-widget-woocommerce-cart .e-cart__container {
        display: grid;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        grid-template-columns: 59% auto;
        /* 59% to match the required design */
        -webkit-box-align: stretch;
            -ms-flex-align: stretch;
                align-items: stretch;
        grid-column-gap: var(--sections-margin, 30px);
        grid-row-gap: var(--sections-margin, 30px); }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-cart .e-cart__container {
          grid-template-columns: repeat(1, 1fr); } }
      .elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container {
        grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart .select2-container {
    margin-bottom: 4px; }
    .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 0px);
      border: none;
      height: 45px; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, initial);
        -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder {
        color: var(--forms-fields-normal-color, #818a91); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered {
        color: var(--forms-fields-normal-color, #818a91);
        line-height: 45px;
        padding-right: 1rem;
        padding-left: 1rem; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow {
        height: 45px; }
    .elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below {
      background-color: #f7f7f7; }
  .elementor-widget-woocommerce-cart .woocommerce {
    font-family: Roboto, sans-serif; }
    .elementor-widget-woocommerce-cart .woocommerce button.button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #818a91);
      border-radius: var(--forms-buttons-border-radius, 3px);
      /* 0.88rem is used here so that this button will match the design layout from Product. */
      padding: var(--forms-buttons-padding, 0.88rem 2rem);
      width: var(--forms-buttons-width, auto);
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-cart .woocommerce button.button:hover {
        color: var(--forms-buttons-hover-text-color, #818a91);
        -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
        border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce button.button.disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled] {
        /* 0.88rem is used here so that this button will match the design layout from Product. */
        padding: var(--forms-buttons-padding, 0.88rem 2rem);
        color: var(--forms-buttons-normal-text-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover {
          background-color: var(--forms-buttons-hover-background-color, #ffffff);
          color: var(--forms-buttons-hover-text-color, #818a91);
          -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
               -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                  transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
          border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form {
      margin-top: var(--sections-descriptions-spacing, 15px); }
    .elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination {
      color: var(--sections-descriptions-color, #818a91);
      margin-bottom: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td {
      text-align: right !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before {
        width: 100%;
        margin-bottom: 10px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td {
      text-align: left !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td::before {
        content: attr(data-title);
        font-weight: 700;
        float: right; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      text-align: var(--totals-title-alignment, right); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td {
      padding-top: var(--totals-rows-gap-top, 12px);
      padding-bottom: var(--totals-rows-gap-bottom, 9px); }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before,
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount {
        color: var(--totals-color, #818a91);
        font-weight: 700; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td {
      border-top-color: var(--totals-divider-color, #818a91);
      border-top-width: var(--totals-divider-weight, 0); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row {
      margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-cart .woocommerce .product-name a {
      color: var(--product-link-normal-color, #000000); }
      .elementor-widget-woocommerce-cart .woocommerce .product-name a:hover {
        color: var(--product-link-hover-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .form-row {
      padding: 3px 0;
      margin: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .input-text,
    .elementor-widget-woocommerce-cart .woocommerce select {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 3px);
      border: none;
      padding: var(--forms-fields-padding, 16px);
      font-size: 14px; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::-webkit-input-placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::-webkit-input-placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::-moz-placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::-moz-placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::-ms-input-placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::-ms-input-placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text:focus,
      .elementor-widget-woocommerce-cart .woocommerce select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, transparent);
        -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-webkit-input-placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::-webkit-input-placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-moz-placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::-moz-placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-ms-input-placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::-ms-input-placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce .input-text.qty {
      background-color: transparent;
      color: var(--order-summary-color, #000000);
      border-width: var(--order-summary-quantity-border-weight, 1px);
      border-style: solid;
      border-color: var(--order-summary-quantity-border-color, #D4D4D4);
      border-radius: 3px;
      padding: 1px 2px;
      text-align: right;
      font-size: 14px;
      min-height: 28px;
      max-height: 28px; }
    .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout {
      padding-bottom: 0;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-orient: vertical;
      -webkit-box-direction: normal;
          -ms-flex-direction: column;
              flex-direction: column;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
      -webkit-box-align: var(--place-order-title-alignment, stretch);
          -ms-flex-align: var(--place-order-title-alignment, stretch);
              align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button {
        padding: var(--checkout-button-padding, 15px 1em);
        width: var(--checkout-button-width, auto);
        font-size: 15px;
        text-align: center;
        color: var(--checkout-button-normal-text-color, #ffffff);
        background-color: #5bc0de;
        border-radius: var(--checkout-button-border-radius, 3px);
        min-height: auto;
        margin-bottom: 0; }
        .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover {
          color: var(--checkout-button-hover-text-color, #ffffff);
          background-color: #5bc0de;
          border-color: var(--checkout-button-hover-border-color, #5bc0de);
          -webkit-transition-duration: var(--checkout-button-hover-transition-duration, 0.3s);
               -o-transition-duration: var(--checkout-button-hover-transition-duration, 0.3s);
                  transition-duration: var(--checkout-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-cart .woocommerce .remove {
      background: transparent;
      color: var(--order-summary-remove-icon-normal-color, #000000) !important;
      /* need important here because Woo also has !important */
      width: auto; }
      .elementor-widget-woocommerce-cart .woocommerce .remove:hover {
        background: transparent;
        color: var(--order-summary-remove-icon-hover-color, #5bc0de) !important;
        /* need important here because Woo also has !important */ }
    .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals {
      float: none;
      width: 100%; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td {
        padding-right: 0; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td {
        padding-left: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
      float: left;
      width: 100%; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .form-row {
      padding: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex; }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
        -webkit-box-flex: 2;
            -ms-flex: 2;
                flex: 2;
        padding-left: 30px; }
        @media (max-width: 1024px) {
          .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
            padding-left: 0; } }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-end {
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
          display: block; } }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-cart .woocommerce .coupon {
        margin: var(--sections-margin, 0); }
        .elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code {
          width: 100%;
          margin-left: 0;
          margin-bottom: 15px; }
        .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
          width: 100%; } }
    .elementor-widget-woocommerce-cart .woocommerce table.shop_table {
      border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
        float: right;
        font-size: 14px;
        font-weight: 700; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
          float: none;
          width: 100%; } }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table th {
        border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions {
        padding: 16px 0 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a {
        display: inline-block; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child {
        display: var(--update-cart-automatically-display, table-row); }
    .elementor-widget-woocommerce-cart .woocommerce table.cart {
      margin-bottom: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart img {
        width: 55px;
        height: auto;
        display: block; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-top: var(--order-summary-rows-gap-top, 20px);
        padding-left: 20px;
        padding-bottom: var(--order-summary-rows-gap-bottom, 20px);
        padding-right: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td span {
          color: var(--order-summary-color, #000000);
          font-size: 14px;
          font-weight: 400; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
          border-top-width: var(--order-summary-items-divider-weight, 1px);
          border-top-style: solid;
          border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
          @media (max-width: 768px) {
            .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
              border-top-width: 0; } }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove {
          padding-right: 0;
          padding-left: 0; }
      @media (min-width: 767px) {
        .elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td {
          border-top: none; } }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove {
        position: relative; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-name {
        padding-left: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
        border-top-width: var(--order-summary-items-divider-weight, 1px);
        border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
          border-top: none; } }
    @media (max-width: 768px) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-right: 0;
        padding-left: 0; } }
    @media (max-width: 767px) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart {
        padding: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
          padding: 16px 28px; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
            border-top: none; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td {
          padding-right: 0;
          padding-left: 0; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
            padding: 0; } }
    .elementor-widget-woocommerce-cart .woocommerce a {
      color: var(--links-normal-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce a:hover {
        color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      padding-top: 0;
      padding-bottom: 8px;
      padding-right: 0;
      padding-left: 20px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      margin-bottom: var(--sections-title-spacing, 1rem);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      padding-bottom: var(--order-summary-title-spacing, 8px);
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart td::before {
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button::after {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000); }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td, .elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td {
        padding-right: 0; } }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: var(--forms-fields-normal-color, #818a91); }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: var(--forms-fields-focus-color, #818a91);
    border-color: var(--forms-fields-focus-border-color, #818a91);
    -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
         -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
            transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }

.elementor-widget-woocommerce-my-account {
  font-family: Roboto, sans-serif;
  color: #818a91;
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table {
    border: none;
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    background-color: var(--sections-background-color, #ffffff); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px 3px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,
  .elementor-widget-woocommerce-my-account .e-my-account-tab address {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content {
    border: 0; }
    .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
      padding: 0;
      border: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    margin-bottom: 40px; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads,
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px 3px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content > div > p {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: var(--forms-fields-normal-background-color, #f7f7f7);
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: var(--forms-fields-focus-background-color, #f7f7f7);
      border-color: var(--forms-fields-focus-border-color, initial);
      -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
           -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
              transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below {
    background-color: var(--forms-fields-normal-background-color, #f7f7f7); }
  .elementor-widget-woocommerce-my-account .woocommerce ::-webkit-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce ::-moz-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce ::-ms-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce-message {
    font-size: 14px; }
  .elementor-widget-woocommerce-my-account .woocommerce address {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a:hover {
      color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover {
      background-color: initial; }
    .elementor-widget-woocommerce-my-account .woocommerce a.button:hover {
      background-color: initial; }
  .elementor-widget-woocommerce-my-account .woocommerce em {
    font-size: 12px;
    color: var(--login-messages-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .form-row {
    padding-left: var(--forms-columns-gap-padding-left, 0px);
    padding-right: var(--forms-columns-gap-padding-right, 0px);
    margin-left: var(--forms-columns-gap-margin-left, 0px);
    margin-right: var(--forms-columns-gap-margin-right, 0px);
    margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row label {
      color: var(--forms-labels-color, #818a91);
      margin-bottom: var(--forms-label-spacing, 0px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,
    .elementor-widget-woocommerce-my-account .woocommerce .form-row select {
      color: var(--forms-fields-normal-color, #818a91);
      border-radius: var(--forms-fields-border-radius, 0px);
      padding: var(--forms-fields-padding, 16px);
      background: #f7f7f7;
      border: none;
      font-size: 14px; }
      .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,
      .elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        border-color: var(--forms-fields-focus-border-color, #818a91);
        -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field {
    margin-bottom: 5px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text {
    margin-bottom: 15px;
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword {
    font-size: 12px;
    margin-bottom: 0px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    width: 50%;
    /* 50% to match the design - it would normally be full width */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p {
      color: var(--general-text-color, #818a91); }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first {
      width: 100%; }
  .elementor-widget-woocommerce-my-account .woocommerce .login,
  .elementor-widget-woocommerce-my-account .woocommerce .register,
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px);
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .login .button,
    .elementor-widget-woocommerce-my-account .woocommerce .register .button,
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button {
      background: #5bc0de;
      border: none;
      color: var(--forms-buttons-normal-text-color, #ffffff);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: var(--forms-buttons-padding, 12px 32px); }
      .elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover {
        color: var(--forms-buttons-hover-text-color, #ffffff);
        -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3) {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    margin-top: 10px;
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox {
    vertical-align: middle; }
  .elementor-widget-woocommerce-my-account .woocommerce p:last-of-type {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span {
    color: var(--checkboxes-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tr,
  .elementor-widget-woocommerce-my-account .woocommerce td,
  .elementor-widget-woocommerce-my-account .woocommerce th {
    border: none; }
  .elementor-widget-woocommerce-my-account .woocommerce h2,
  .elementor-widget-woocommerce-my-account .woocommerce h3 {
    color: var(--typography-section-titles-color, #000000);
    margin-top: 0;
    margin-bottom: var(--section-title-spacing, 45px);
    font-weight: 400; }
  .elementor-widget-woocommerce-my-account .woocommerce strong {
    color: var(--general-text-color, #000000); }
    .elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label {
      color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta {
    color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .product-quantity {
    font-weight: 400;
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
    float: right;
    width: 25%;
    /* 25% to match the design */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul {
      -webkit-padding-start: 0;
              padding-inline-start: 0; }
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li {
        list-style-type: none;
        margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
        display: inline-block;
        width: 100%;
        /* add a Divider between the tabs that is outside of the margins */ }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li::after {
          content: "";
          display: block;
          width: 100%;
          background-color: var(--tabs-divider-color, #818a91);
          height: var(--tabs-divider-weight, 0px);
          position: relative;
          top: calc(var(--tabs-spacing, 2px) / 2); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a {
          color: var(--tabs-active-color, #5bc0de);
          background: #eceeef;
          border-color: var(--tabs-active-border-color, transparent); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
          font-style: normal;
          font-weight: bold;
          font-size: 14px;
          color: var(--tabs-normal-color, #818a91);
          display: block;
          padding: var(--tabs-padding, 12px 20px);
          text-align: var(--tabs-alignment, start);
          background: #f7f7f7;
          border-radius: var(--tabs-border-radius, 0px);
          border-style: var(--tabs-border-type, solid);
          border-color: var(--tabs-border-color, transparent);
          border-width: 0px; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover {
            color: var(--tabs-hover-color, #5bc0de);
            border-color: var(--tabs-hover-border-color, transparent); }
          @media (max-width: 1024px) {
            .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
              padding: var(--tabs-padding, 10px); } }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard {
          margin-top: 0; }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout {
          margin-bottom: 0; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout::after {
            display: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
    float: left;
    width: 75%;
    /* 75% to match the design */
    padding: 0;
    padding-right: var(--tab-content-spacing, 6%);
    /* 6% to match the design */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
        width: 100%;
        padding: var(--tab-content-spacing, 6%) 0 0 0; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper {
      font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type {
      margin-top: 30px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark {
      background-color: transparent;
      font-weight: bold;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child th,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child th {
    border-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th {
    border-top: 0;
    padding-right: 0;
    padding-top: 0;
    padding-bottom: var(--tables-titles-spacing, 9px); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > th,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > th {
    background-color: transparent;
    padding-right: 0;
    padding-top: var(--order-summary-rows-gap-top, 9px);
    padding-bottom: var(--order-summary-rows-gap-bottom, 9px);
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .shop_table {
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        -webkit-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
                transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table td, .elementor-widget-woocommerce-my-account .woocommerce .shop_table th {
      border-top-style: var(--tables-divider-border-type, solid);
      border-top-width: var(--tables-divider-border-width, 1px);
      border-top-color: var(--tables-divider-border-color, #D4D4D4); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th {
      color: var(--tables-title-color, #000000); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span {
        color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td {
    padding-right: 0;
    color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td {
    border-top: none;
    padding-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .order-again .button {
    background: transparent;
    border: 2px solid #5bc0de;
    border-style: var(--tables-buttons-border-type, solid);
    border-color: var(--tables-buttons-border-color, #5bc0de);
    border-width: 2px;
    border-radius: var(--tables-button-border-radius, 3px);
    vertical-align: middle;
    color: var(--tables-button-normal-text-color, #818a91);
    margin-top: 0;
    margin-bottom: 0;
    padding: var(--tables-button-padding, 12px 32px); }
    .elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover {
      color: var(--tables-button-hover-text-color, #818a91);
      -webkit-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
           -o-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
              transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .title h3, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3 {
    float: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-Address address, .elementor-widget-woocommerce-my-account .woocommerce-Addresses address {
    padding: var(--sections-padding, 45px 30px 16px 30px); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .edit, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit {
    float: right;
    position: absolute;
    margin-right: var(--edit-link-margin-start, 30px);
    margin-top: var(--edit-link-margin-top, 10px); }
  .elementor-widget-woocommerce-my-account .woocommerce .u-columns {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset {
    border: none;
    padding: 0;
    -webkit-margin-start: 0;
            margin-inline-start: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend {
      font-weight: 700;
      padding: 20px 0;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button {
    background: #5bc0de;
    border: none;
    color: var(--forms-buttons-normal-text-color, #ffffff);
    border-radius: var(--forms-buttons-border-radius, 3px);
    padding: var(--forms-buttons-padding, 12px 32px);
    margin-top: 20px; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover {
      color: var(--forms-buttons-hover-text-color, #ffffff);
      -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
           -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
              transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-pagination {
    padding: 16px 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-pagination .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        -webkit-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
                transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td {
    vertical-align: top;
    line-height: unset; }

.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  float: none;
  width: 100%; }
  .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
    display: inline-block; }

.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation {
  display: block; }

.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: block; }
  .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: var(--tabs-container-justify-content, space-between);
        -ms-flex-pack: var(--tabs-container-justify-content, space-between);
            justify-content: var(--tabs-container-justify-content, space-between); }
    @media (max-width: 767px) {
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
        display: block; } }
    .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
      display: inline-block;
      width: var(--tab-width, 100%);
      padding: 0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);
      margin: 0;
      border-right-color: var(--tabs-divider-color, #818a91);
      border-right-width: var(--tabs-divider-weight, 0px);
      border-right-style: solid; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li::after {
        display: none; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type {
        padding-right: 0; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type {
        padding-left: 0;
        border-right-width: 0; }
      @media (max-width: 767px) {
        .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
          margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
          display: inline-block;
          width: 100%; } }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-content {
  float: none;
  width: 100%;
  padding: var(--tab-content-spacing, 50px) 0 0 0; }

/**
 * Specific styling in the Editor.
 */
.elementor-editor-active,
.elementor-editor-preview {
  /**
	 * Prep for the js switching of tabs when in the editor.
	 */
  /**
	 * Disable all but the first 'View' order button as
	 * this is the only order loaded for preview purposes.
	 */ }
  .elementor-editor-active .elementor-widget-container,
  .elementor-editor-preview .elementor-widget-container {
    min-height: 1px; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a {
    pointer-events: none; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button {
    pointer-events: none;
    opacity: .3; }

/**
 * Hide all the other My Account pages' content in the Editor except the first one - dashboard page
 */
.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type) {
  display: none; }

.product .count {
  background-color: inherit; }

.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2 {
  display: none; }

.woocommerce div.product.elementor form.cart div.product-addon {
  -ms-flex-preferred-size: 100%;
      flex-basis: 100%;
  -ms-flex-negative: 0;
      flex-shrink: 0; }

.e-sticky-right-column--active {
  position: -webkit-sticky;
  position: sticky;
  top: 0; }

.elementor-theme-builder-content-area {
  height: 400px; }

.elementor-location-header:before,
.elementor-location-footer:before {
  content: '';
  display: table;
  clear: both; }

.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post {
  display: block; }

.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid {
  color: #D4D4D4;
  border: none;
  border-top: 1px solid;
  border-bottom: 1px solid;
  padding-top: 10px;
  padding-bottom: 10px; }

.elementor-post-navigation-borders-yes .elementor-post-navigation__separator {
  height: 100%;
  width: 1px;
  margin: 0 auto;
  background-color: #D4D4D4; }

.elementor-post-navigation {
  overflow: hidden;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-post-navigation .post-navigation__arrow-wrapper {
    color: #D4D4D4; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev {
      font-size: 30px;
      padding-left: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next {
      font-size: 30px;
      padding-right: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper i {
      -webkit-transform: translateY(-5%);
          -ms-transform: translateY(-5%);
              transform: translateY(-5%); }
  .elementor-post-navigation .elementor-post-navigation__link__prev, .elementor-post-navigation .elementor-post-navigation__link__next {
    overflow: hidden; }
  .elementor-post-navigation .elementor-post-navigation__link a {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    max-width: 100%; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__next--label {
    text-transform: uppercase;
    font-size: 0.8em; }
  .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--title {
    font-size: 0.7em; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--label, .elementor-post-navigation .post-navigation__next--title {
    overflow: hidden;
    -o-text-overflow: ellipsis;
       text-overflow: ellipsis; }
  .elementor-post-navigation span.elementor-post-navigation__link__next {
    text-align: left; }
  .elementor-post-navigation span.elementor-post-navigation__link__next, .elementor-post-navigation span.elementor-post-navigation__link__prev {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }

.elementor-post-navigation .elementor-grid {
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between; }

.elementor-post-navigation .elementor-post-navigation__link {
  width: calc( 50% - ( 1px / 2 ));
  white-space: nowrap;
  overflow: hidden;
  -o-text-overflow: ellipsis;
     text-overflow: ellipsis; }

.elementor-post-navigation .elementor-post-navigation__separator-wrapper {
  text-align: center; }

.elementor-post-navigation .elementor-post-navigation__next {
  text-align: left; }
  .elementor-post-navigation .elementor-post-navigation__next a {
    float: left; }

.elementor-search-form {
  display: block;
  -webkit-transition: 0.2s;
  -o-transition: 0.2s;
  transition: 0.2s;
  /*------ Reset ------*/ }
  .elementor-search-form .e-font-icon-svg-container {
    width: 100%;
    height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
  .elementor-search-form input[type="search"], .elementor-search-form button {
    margin: 0;
    border: 0;
    padding: 0;
    display: inline-block;
    vertical-align: middle;
    white-space: normal;
    background: none;
    line-height: 1;
    min-width: 0;
    font-size: 15px;
    -webkit-appearance: none;
    -moz-appearance: none; }
    .elementor-search-form input[type="search"]:focus, .elementor-search-form button:focus {
      outline: 0;
      color: inherit; }
  .elementor-search-form button {
    background-color: #818a91;
    font-size: var(--e-search-form-submit-icon-size, 16px);
    color: #fff;
    border-radius: 0; }
  .elementor-search-form__container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-transition: 0.2s;
    -o-transition: 0.2s;
    transition: 0.2s;
    overflow: hidden;
    border: 0 solid transparent;
    min-height: 50px; }
    .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      background: #eceeef; }
  .elementor-search-form__input {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
    color: #55595c;
    -webkit-transition: color 0.2s;
    -o-transition: color 0.2s;
    transition: color 0.2s; }
    .elementor-search-form__input::-webkit-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-ms-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::-ms-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
  .elementor-search-form__submit {
    -webkit-transition: color 0.2s, background 0.2s;
    -o-transition: color 0.2s, background 0.2s;
    transition: color 0.2s, background 0.2s;
    font-size: var(--e-search-form-submit-icon-size, 16px); }
    .elementor-search-form__submit svg {
      fill: var(--e-search-form-submit-text-color, #fff);
      width: var(--e-search-form-submit-icon-size, 16px);
      height: var(--e-search-form-submit-icon-size, 16px); }
  .elementor-search-form .elementor-search-form__submit, .elementor-search-form .elementor-search-form__submit:hover {
    color: var(--e-search-form-submit-text-color, #fff);
    border: none;
    border-radius: 0; }
  .elementor-search-form--button-type-text .elementor-search-form__submit {
    -ms-flex-negative: 0;
        flex-shrink: 0; }
  .elementor-search-form--skin-minimal .elementor-search-form__icon {
    opacity: 0.6;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end;
    color: #55595c;
    fill: #55595c;
    font-size: var(--e-search-form-icon-size-minimal, 15px); }
    .elementor-search-form--skin-minimal .elementor-search-form__icon svg {
      width: var(--e-search-form-icon-size-minimal, 15px);
      height: var(--e-search-form-icon-size-minimal, 15px); }
  .elementor-search-form--skin-full_screen .elementor-search-form input[type="search"].elementor-search-form__input {
    font-size: 50px;
    text-align: center;
    border-style: solid;
    border-width: 0 0 1px 0;
    border-color: #fff;
    line-height: 1.5;
    color: #fff; }
  .elementor-search-form--skin-full_screen .elementor-search-form__toggle {
    display: inline-block;
    cursor: pointer;
    vertical-align: middle;
    color: var(--e-search-form-toggle-color, #494c4f);
    font-size: var(--e-search-form-toggle-size, 33px); }
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle i,
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container {
      position: relative;
      display: block;
      -webkit-transition: 0.2s;
      -o-transition: 0.2s;
      transition: 0.2s;
      width: var(--e-search-form-toggle-size, 33px);
      height: var(--e-search-form-toggle-size, 33px);
      background-color: var(--e-search-form-toggle-background-color, rgba(0, 0, 0, 0.05));
      border-style: solid;
      border-color: var(--e-search-form-toggle-color, #494c4f);
      border-width: var(--e-search-form-toggle-border-width, 0);
      border-radius: var(--e-search-form-toggle-border-radius, 3px); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        position: absolute;
        left: 50%;
        top: 50%;
        -webkit-transform: translate(-50%, -50%);
            -ms-transform: translate(-50%, -50%);
                transform: translate(-50%, -50%); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before {
        font-size: var(--e-search-form-toggle-icon-size, 0.55em); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        fill: var(--e-search-form-toggle-color, #494c4f);
        width: var(--e-search-form-toggle-icon-size, 0.55em);
        height: var(--e-search-form-toggle-icon-size, 0.55em); }
  .elementor-search-form--skin-full_screen .elementor-search-form__container {
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    position: fixed;
    z-index: 9998;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    height: 100vh;
    padding: 0 15%;
    background-color: rgba(0, 0, 0, 0.8); }
    .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      overflow: hidden;
      opacity: 0;
      -webkit-transform: scale(0);
          -ms-transform: scale(0);
              transform: scale(0); }
      .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button {
        display: none; }

.elementor-author-box {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }
  .elementor-author-box__avatar {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-left: 25px; }
    .elementor-author-box__avatar img {
      width: 100px;
      border-radius: 500px;
      -o-object-fit: cover;
         object-fit: cover; }
  .elementor-author-box__text {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    font-size: 17px; }
  .elementor-author-box__name {
    font-size: 24px;
    margin-bottom: 5px; }
  .elementor-author-box__bio {
    margin-bottom: 0.8em; }
    .elementor-author-box__bio p {
      margin-bottom: 0.8em; }
      .elementor-author-box__bio p:last-of-type {
        margin-bottom: 0; }
  .elementor-author-box--layout-image-left .elementor-author-box {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
    .elementor-author-box--layout-image-left .elementor-author-box__avatar {
      margin-left: 0;
      margin-right: 25px; }
  .elementor-author-box--layout-image-right .elementor-author-box {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
    .elementor-author-box--layout-image-right .elementor-author-box__avatar {
      margin-right: 0;
      margin-left: 25px; }
  .elementor-author-box--layout-image-above .elementor-author-box {
    display: block; }
    .elementor-author-box--layout-image-above .elementor-author-box__avatar {
      margin: 0 auto 15px;
      display: inline-block; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar {
    margin-left: 0; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar {
    margin-right: 0; }
  .elementor-author-box--align-left .elementor-author-box {
    text-align: left; }
  .elementor-author-box--align-right .elementor-author-box {
    text-align: right; }
  .elementor-author-box--align-center .elementor-author-box {
    text-align: center; }

.elementor-button.elementor-author-box__button {
  border: solid 2px #55595c;
  font-size: 15px;
  font-weight: 100;
  padding: 10px 18px; }
  .elementor-button.elementor-author-box__button, .elementor-button.elementor-author-box__button:hover {
    background: transparent;
    color: #55595c; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar {
  -ms-flex-item-align: start;
      align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar {
  -ms-flex-item-align: start;
      align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar {
  -ms-flex-item-align: center;
      align-self: center; }

.elementor-post-info__terms-list {
  display: inline-block; }

.elementor-post-info .elementor-icon-list-icon .elementor-avatar {
  border-radius: 100%; }

.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after {
  margin: initial; }

.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text {
  display: inline-block; }
  .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a, .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span {
    display: inline; }

.elementor-widget-breadcrumbs {
  font-size: 0.85em; }
  .elementor-widget-breadcrumbs p {
    margin-bottom: 0; }

.elementor-sitemap-wrap {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-flow: row wrap;
          flex-flow: row wrap; }

.elementor-sticky--active {
  z-index: 99; }

[data-elementor-type="popup"]:not(.elementor-edit-area) {
  display: none; }

[data-elementor-type="popup"] .elementor-section-wrap:not(:empty) + #elementor-add-new-section {
  display: none; }

.elementor-popup-modal {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  pointer-events: none;
  background-color: transparent;
  -webkit-user-select: auto;
     -moz-user-select: auto;
      -ms-user-select: auto;
          user-select: auto; }
  .elementor-popup-modal .dialog-header, .elementor-popup-modal .dialog-buttons-wrapper {
    display: none; }
  .elementor-popup-modal .dialog-close-button {
    display: none;
    top: 20px;
    margin-top: 0;
    left: 20px;
    opacity: 1;
    z-index: 9999;
    pointer-events: all; }
    .elementor-popup-modal .dialog-close-button svg {
      fill: #373a3c;
      height: 1em;
      width: 1em; }
  .elementor-popup-modal .dialog-widget-content {
    width: initial;
    overflow: visible;
    max-width: 100%;
    max-height: 100%;
    border-radius: 0;
    -webkit-box-shadow: none;
            box-shadow: none;
    pointer-events: all; }
  .elementor-popup-modal .dialog-message {
    width: 640px;
    max-width: 100vw;
    max-height: 100vh;
    padding: 0;
    overflow: auto;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .elementor-popup-modal .elementor {
    width: 100%; }

.elementor-motion-effects-element, .elementor-motion-effects-layer {
  -webkit-transition-property: opacity, -webkit-transform;
  transition-property: opacity, -webkit-transform;
  -o-transition-property: transform, opacity;
  transition-property: transform, opacity;
  transition-property: transform, opacity, -webkit-transform;
  -webkit-transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
       -o-transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
          transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
  -webkit-transition-duration: 1s;
       -o-transition-duration: 1s;
          transition-duration: 1s; }

.elementor-motion-effects-container {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  -webkit-transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x);
      -ms-transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x);
          transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); }

.elementor-motion-effects-layer {
  position: absolute;
  top: 0;
  left: 0;
  background-repeat: no-repeat;
  -webkit-background-size: cover;
          background-size: cover; }

.elementor-motion-effects-perspective {
  -webkit-perspective: 1200px;
          perspective: 1200px; }
/*# sourceMappingURL=frontend-lite-rtl.css.map */assets/css/preview-rtl.min.css000064400000003551150755004320012417 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-document-handle{display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:absolute;z-index:100;top:0;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);background-color:#fcb92c;padding:5px 10px;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:11px;color:#fff;border-radius:0 0 3px 3px;cursor:pointer}.elementor-document-handle:after,.elementor-document-handle:before{content:"";position:absolute;border:solid transparent}.elementor-document-handle:before{right:calc(100% - 1px);border-right-color:#fcb92c;border-width:0 14px 23px 0}.elementor-document-handle:after{left:calc(100% - 1px);border-left-color:#fcb92c;border-width:0 0 23px 14px}.elementor-document-handle .eicon-edit{margin-left:5px}.elementor-editor-active .elementor{position:relative}.elementor-editor-active .elementor:not(.elementor-edit-mode):hover{-webkit-box-shadow:0 0 0 1px #fcb92c;box-shadow:0 0 0 1px #fcb92c}.elementor-editor-active .elementor:not(.elementor-edit-mode):hover .elementor-document-handle{display:-webkit-box;display:-ms-flexbox;display:flex;line-height:normal}.elementor-editor-active .elementor.loading{opacity:.5}.elementor-editor-active .elementor[data-elementor-type=single]>.elementor-document-handle{-webkit-transform:translateX(-50%) translateY(-100%);-ms-transform:translateX(-50%) translateY(-100%);transform:translateX(-50%) translateY(-100%);border-radius:3px 3px 0 0}.elementor-editor-active .elementor[data-elementor-type=single]>.elementor-document-handle:before{border-width:23px 14px 0 0}.elementor-editor-active .elementor[data-elementor-type=single]>.elementor-document-handle:after{border-width:23px 0 0 14px}.elementor-embedded-editor.elementor-location-header .elementor-section-wrap:not(:empty)+#elementor-add-new-section{display:none}assets/css/widget-woocommerce-rtl.min.css000064400000312771150755004320014545 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;width:100%;padding:0}body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images,body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images{float:none;padding:0}.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form){margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .quantity .qty{vertical-align:top;margin-left:0}.woocommerce div.product.elementor .quantity+.button{margin-right:10px}.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input{height:100%}.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:0}.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:auto}.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}@media (max-width:1024px){.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:0}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:auto}.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}@media (max-width:767px){.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form){-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:0}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:auto;flex-basis:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form){-ms-flex-wrap:nowrap;flex-wrap:nowrap}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity{margin-left:auto}.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button,.woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button{-ms-flex-preferred-size:100%;flex-basis:100%}}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button{background-color:#5bc0de}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button{background-color:#5cb85c}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button{background-color:#f0ad4e}.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button{background-color:#d9534f}.elementor-widget-wc-add-to-cart .quantity{display:inline-block}.elementor-widget-wc-add-to-cart.elementor-align-center form.cart{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-widget-wc-add-to-cart.elementor-align-left form.cart,.elementor-widget-wc-add-to-cart.elementor-align-right form.cart{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.woocommerce div.product.elementor ul.tabs:before{position:static;content:none;width:auto;bottom:auto;left:auto;border-bottom:0;z-index:auto}.woocommerce div.product.elementor ul.tabs{margin:0}.woocommerce div.product.elementor ul.tabs li{padding:0}.woocommerce div.product.elementor ul.tabs li a{padding:.8em 1.2em;line-height:1}.woocommerce div.product.elementor ul.tabs li:after,.woocommerce div.product.elementor ul.tabs li:before{border:0;position:static;bottom:auto;width:auto;height:auto;content:none;-webkit-box-sizing:border-box;box-sizing:border-box}.woocommerce div.product.elementor .woocommerce-tabs .panel{padding:20px;border-radius:0;border-width:0;border-top:1px solid #d3ced2;-webkit-box-shadow:none;box-shadow:none;margin:-1px 0 0}.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins{display:block}.elementor-widget-woocommerce-product-meta .detail-container{position:relative}.elementor-widget-woocommerce-product-meta .detail-container:after{position:absolute;bottom:0;left:0;width:100%}.elementor-widget-woocommerce-product-meta .detail-label{font-weight:700}.elementor-woo-meta--view-inline .product_meta{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-woo-meta--view-inline .product_meta .detail-container:after{width:auto;left:auto;right:auto;position:absolute;height:100%;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);border-top:0;border-bottom:0;border-right:0;border-left-width:1px;border-style:solid;left:-8px}.elementor-woo-meta--view-table .product_meta{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-woo-meta--view-table .product_meta,.elementor-woo-meta--view-table .product_meta .detail-container{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-woo-meta--view-table .product_meta .detail-label{min-width:108px}.elementor-woo-meta--view-stacked .product_meta .detail-container{display:block}.woocommerce div.product.elementor .woocommerce-product-rating{margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.woocommerce div.product.elementor .star-rating{margin-top:0}.elementor-product-rating--align-left .woocommerce-product-rating{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor-product-rating--align-right .woocommerce-product-rating{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor-product-rating--align-center .woocommerce-product-rating{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link{margin-right:auto}.elementor-products-grid ul.products.elementor-grid{display:grid;margin:0;grid-column-gap:20px;grid-row-gap:40px}.elementor-products-grid ul.products.elementor-grid:after,.elementor-products-grid ul.products.elementor-grid:before{content:none;display:none}.elementor-products-grid ul.products.elementor-grid li.product{width:auto;padding:0;margin:0;float:none}.elementor-products-grid ul.products.elementor-grid li.product .onsale{padding:0;display:none}.elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link{display:block;position:relative}.elementor-products-grid:not(.show-heading-yes) .products>h2{display:none}.elementor-products-grid nav.woocommerce-pagination{margin-top:40px}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul{border:0}.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li{border-right:0;border-left:0}.elementor-product-loop-item--align-left ul.products li.product .star-rating{margin-right:auto}.elementor-product-loop-item--align-right ul.products li.product .star-rating{margin-left:auto}.elementor-product-loop-item--align-center ul.products li.product .star-rating{margin-right:auto;margin-left:auto}.woocommerce .elementor-element.elementor-products-grid ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product{width:auto}@media (min-width:1025px){.elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products{grid-template-columns:repeat(2,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products{grid-template-columns:repeat(3,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products{grid-template-columns:repeat(4,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products{grid-template-columns:repeat(5,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products{grid-template-columns:repeat(6,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products{grid-template-columns:repeat(7,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products{grid-template-columns:repeat(8,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products{grid-template-columns:repeat(9,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products{grid-template-columns:repeat(10,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products{grid-template-columns:repeat(11,1fr)}.elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products{grid-template-columns:repeat(12,1fr)}}@media (max-width:1024px){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(3,1fr)}}@media (max-width:767px){.elementor-widget-wc-archive-products .products{grid-template-columns:repeat(2,1fr)}}.elementor.product .woocommerce-product-gallery__trigger+.woocommerce-product-gallery__wrapper{overflow:hidden}.woocommerce .elementor-widget-woocommerce-product-images span.onsale{padding:0}.elementor-menu-cart__wrapper{text-align:var(--main-alignment,right)}.elementor-menu-cart__toggle_wrapper{display:inline-block;position:relative}.elementor-menu-cart__toggle{display:inline-block}.elementor-menu-cart__toggle .elementor-button{background-color:var(--toggle-button-background-color,transparent);color:var(--toggle-button-text-color,#818a91);border:var(--toggle-button-border-width,1px) var(--toggle-button-border-type,solid) var(--toggle-button-border-color,#818a91);border-radius:var(--toggle-button-border-radius,0);display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--toggle-icon-padding,12px 24px)}.elementor-menu-cart__toggle .elementor-button:hover{color:var(--toggle-button-hover-text-color,#818a91);background-color:var(--toggle-button-hover-background-color,transparent);border-color:var(--toggle-button-hover-border-color,#818a91)}.elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon{color:var(--toggle-button-icon-hover-color,#818a91)}.elementor-menu-cart__toggle .elementor-button-text{margin-left:.3em}.elementor-menu-cart__toggle .elementor-button-icon{position:relative;-webkit-transition:color .1s;-o-transition:color .1s;transition:color .1s;color:var(--toggle-button-icon-color,#818a91);font-size:var(--toggle-icon-size,inherit)}.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:block;position:absolute;min-width:1.6em;height:1.6em;line-height:1.5em;top:-.7em;left:-.7em;border-radius:100%;color:var(--items-indicator-text-color,#fff);background-color:var(--items-indicator-background-color,#d9534f);text-align:center;font-size:10px}.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before{content:attr(data-counter);display:inline-block;font-weight:400}.elementor-menu-cart__container{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);overflow:hidden;position:fixed;z-index:9998;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,.25);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s;text-align:right}.elementor-menu-cart__main{position:fixed;left:var(--side-cart-alignment-left,0);right:var(--side-cart-alignment-right,auto);-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);top:0;bottom:0;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;font-size:14px;min-height:200px;width:350px;max-width:100%;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;padding:var(--cart-padding,20px 30px);background-color:var(--cart-background-color,#fff);-webkit-box-shadow:0 0 20px rgba(0,0,0,.2);box-shadow:0 0 20px rgba(0,0,0,.2);border-style:var(--cart-border-style,none);border-color:var(--cart-border-color,initial);border-radius:var(--cart-border-radius,0);margin-top:var(--mini-cart-spacing,0)}.elementor-menu-cart__main,.elementor-menu-cart__main .widget_shopping_cart_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-menu-cart__main .widget_shopping_cart_content{height:100%}.elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message{color:var(--empty-message-color,inherit);text-align:var(--empty-message-alignment,right)}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{background-color:transparent;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button{display:none}body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{overflow:hidden;opacity:0;-webkit-transform:var(--side-cart-alignment-transform,translateX(-100%));-ms-transform:var(--side-cart-alignment-transform,translateX(-100%));transform:var(--side-cart-alignment-transform,translateX(-100%))}.elementor-menu-cart__close-button{width:var(--cart-close-icon-size,25px);height:var(--cart-close-icon-size,25px);position:relative;margin:0 0 20px;-ms-flex-item-align:end;align-self:flex-end;cursor:pointer;display:inline-block;font-family:eicons;font-size:20px;line-height:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:after,.elementor-menu-cart__close-button:before{content:"";position:absolute;height:3px;width:100%;top:50%;left:0;margin-top:-1px;background:var(--cart-close-button-color,#818a91);border-radius:1px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__close-button:hover:after,.elementor-menu-cart__close-button:hover:before{background:var(--cart-close-button-hover-color,#818a91)}.elementor-menu-cart__close-button:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__close-button:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__products{max-height:calc(100vh - 250px);overflow:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.elementor-menu-cart__product{display:grid;grid-template-columns:28% auto;grid-template-rows:var(--price-quantity-position--grid-template-rows,auto auto);position:relative;border-width:0;border-bottom:var(--divider-width,1px) var(--divider-style,solid) var(--divider-color,#d4d4d4)}.elementor-menu-cart__product .variation{display:grid;grid-template-columns:-webkit-max-content auto;grid-template-columns:max-content auto;margin:10px 0}.elementor-menu-cart__product .variation dt{grid-column-start:1}.elementor-menu-cart__product .variation dd{grid-column-start:2;-webkit-margin-start:5px;margin-inline-start:5px}.elementor-menu-cart__product .variation dd p{margin-bottom:0}.elementor-menu-cart__product-image{grid-row-start:1;grid-row-end:3;width:100%}.elementor-menu-cart__product-image a,.elementor-menu-cart__product-image img{display:block}.elementor-menu-cart__product-name{grid-column-start:2;grid-column-end:3;margin:0}.elementor-menu-cart__product-name a{-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-price{grid-column-start:2;grid-column-end:3;-ms-flex-item-align:var(--price-quantity-position--align-self,end);align-self:var(--price-quantity-position--align-self,end);font-weight:300;color:var(--product-price-color,#d4d4d4)}.elementor-menu-cart__product-name,.elementor-menu-cart__product-price{font-size:14px;padding-right:20px}.elementor-menu-cart__product-remove{color:#818a91;width:var(--remove-item-button-size,22px);height:var(--remove-item-button-size,22px);border-radius:var(--remove-item-button-size,22px);border:1px solid var(--remove-item-button-color,#d4d4d4);text-align:center;overflow:hidden;position:absolute;left:0;bottom:20px;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:hover{border:1px solid var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:hover:after,.elementor-menu-cart__product-remove:hover:before{background:var(--remove-item-button-hover-color,#d4d4d4)}.elementor-menu-cart__product-remove:after,.elementor-menu-cart__product-remove:before{content:"";position:absolute;height:1px;width:50%;top:50%;left:25%;margin-top:-1px;background:var(--remove-item-button-color,#d4d4d4);z-index:1;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-menu-cart__product-remove:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.elementor-menu-cart__product-remove:after{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.elementor-menu-cart__product-remove>a{display:block;z-index:2;width:100%;height:100%;overflow:hidden;opacity:0;position:absolute}.elementor-menu-cart__product-remove>a.remove_from_cart_button{display:var(--remove-from-cart-button,block)}.elementor-menu-cart__product-remove>a.elementor_remove_from_cart_button{display:var(--elementor-remove-from-cart-button,none)}.elementor-menu-cart__product:last-child{border:none}.elementor-menu-cart__footer-buttons,.elementor-menu-cart__product:not(:first-of-type),.elementor-menu-cart__subtotal{padding-top:var(--product-divider-gap,20px)}.elementor-menu-cart__product{padding-left:30px}.elementor-menu-cart__product,.elementor-menu-cart__subtotal{padding-bottom:var(--product-divider-gap,20px)}.elementor-menu-cart__subtotal{font-size:20px;text-align:var(--menu-cart-subtotal-text-align,center);font-weight:600;color:var(--menu-cart-subtotal-color,inherit);border-left:var(--subtotal-divider-left-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-bottom:var(--subtotal-divider-bottom-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-right:var(--subtotal-divider-right-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4);border-top:var(--subtotal-divider-top-width,1px) var(--subtotal-divider-style,solid) var(--subtotal-divider-color,#d4d4d4)}.elementor-menu-cart__footer-buttons{font-size:20px;text-align:var(--cart-footer-buttons-alignment-text-align,center);display:var(--cart-footer-buttons-alignment-display,grid);grid-template-columns:var(--cart-footer-layout,1fr 1fr);margin-top:var(--cart-buttons-position-margin,0);grid-column-gap:var(--space-between-buttons,10px);grid-row-gap:var(--space-between-buttons,10px)}.elementor-menu-cart__footer-buttons .elementor-button{display:inline-block;border-radius:var(--cart-footer-buttons-border-radius,0);height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.elementor-menu-cart__footer-buttons .elementor-button--view-cart{display:var(--view-cart-button-display,inline-block);color:var(--view-cart-button-text-color,#fff);padding:var(--view-cart-button-padding,15px);background-color:var(--view-cart-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover{color:var(--view-cart-button-hover-text-color,#fff);background-color:var(--view-cart-button-hover-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout{display:var(--checkout-button-display,inline-block);color:var(--checkout-button-text-color,#fff);padding:var(--checkout-button-padding,15px);background-color:var(--checkout-button-background-color,#818a91)}.elementor-menu-cart__footer-buttons .elementor-button--checkout:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:var(--checkout-button-hover-background-color,#818a91)}@media (max-width:767px){.elementor-menu-cart__footer-buttons .elementor-button{padding-left:10px;padding-right:10px}}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text{display:none}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before{content:none}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e3"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e4"}.elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e5"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e6"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e7"}.elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e8"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8e9"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8ea"}.elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before{content:"\e8eb"}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product{padding-left:0;padding-right:0;grid-template-columns:25% auto}.elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove{display:none}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove{top:0;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove{top:20px;bottom:auto}.elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove{-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);bottom:50%}.elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove{top:auto;bottom:20px}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{position:absolute;z-index:89;width:auto;height:auto;overflow:visible;top:100%;bottom:auto;background:none;min-width:330px;right:0;left:auto;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-transition:background-color .4s,-webkit-transform 0s;transition:background-color .4s,-webkit-transform 0s;-o-transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s;transition:background-color .4s,transform 0s,-webkit-transform 0s}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main{width:auto;height:auto;position:relative;top:auto;bottom:auto;right:auto;left:auto;overflow:visible;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}@media (max-width:767px){.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container{min-width:300px}}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container{-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transition:background-color .4s,-webkit-transform 0s .4s;transition:background-color .4s,-webkit-transform 0s .4s;-o-transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s;transition:background-color .4s,transform 0s .4s,-webkit-transform 0s .4s}body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main{opacity:0;-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px)}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown{opacity:1}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container{z-index:9998}.elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart{z-index:89}.elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container{display:none}.elementor-widget-woocommerce-checkout-page{background-color:transparent;font-family:Roboto,sans-serif;font-size:14px;line-height:21px;color:#818a91}.elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container{grid-template-columns:auto}.elementor-widget-woocommerce-checkout-page ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-checkout-page table tbody tr:hover>td,.elementor-widget-woocommerce-checkout-page table tbody tr:hover>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .e-description{color:var(--sections-descriptions-color,#818a91);padding-bottom:var(--sections-descriptions-spacing,0);font-size:14px;font-weight:400}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section{margin-bottom:24px}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title{text-align:var(--login-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge{margin-top:var(--sections-secondary-title-spacing,24px);margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor{margin-top:var(--sections-secondary-title-spacing,24px)}.elementor-widget-woocommerce-checkout-page .e-coupon-box{margin-top:24px}.elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .e-login-wrap-start{-webkit-box-flex:75%;-ms-flex:75%;flex:75%}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{-webkit-box-flex:20%;-ms-flex:20%;flex:20%;text-align:left}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-login-wrap{display:block}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end{text-align:right;margin-top:15px}.elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label{display:none}}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:6px}.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{margin-bottom:0;font-size:12px}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password{font-size:11px}}.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:90%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-apply-coupon{width:auto}}.elementor-widget-woocommerce-checkout-page .e-checkout__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:56% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,24px);grid-row-gap:var(--sections-margin,24px)}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .e-checkout__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title{color:var(--sections-secondary-title-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge{text-align:var(--coupon-title-alignment,right)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address{margin-top:13px;padding-right:var(--shipping-heading-padding-start,30px)}.elementor-widget-woocommerce-checkout-page #ship-to-different-address span{font-weight:400}.elementor-widget-woocommerce-checkout-page a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row{padding-left:var(--forms-columns-gap-padding,0);padding-right:var(--forms-columns-gap-padding,0);margin-left:var(--forms-columns-gap-margin,0);margin-right:var(--forms-columns-gap-margin,0)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);font-size:14px;border:none;font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-checkout-page .woocommerce .create-account,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row{margin-bottom:0!important}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input,.elementor-widget-woocommerce-checkout-page .woocommerce .input-radio{vertical-align:middle}.elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span{position:relative;top:2px;color:var(--sections-checkboxes-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label,.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label{display:inline}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#6f6f6f);border-radius:var(--forms-buttons-border-radius,3px);padding:1rem;border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover{color:var(--forms-buttons-hover-text-color,#6f6f6f);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{margin-right:1%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code{width:100%;margin-right:0;margin-bottom:15px}}.elementor-widget-woocommerce-checkout-page .woocommerce-info{border-top-color:transparent;background-color:transparent;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p{font-weight:400;font-size:12px}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info{font-weight:400;margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,.elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,.elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,.elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment{background:var(--sections-background-color,#fff);border-radius:var(--sections-border-radius,3px);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 24px 0);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{display:var(--additional-information-display,none)}@media (min-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text{color:var(--sections-messages-color,#818a91);font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p{margin-top:25px}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1{margin-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2{padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading{text-align:var(--order-review-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table{margin-bottom:0;border:0;font-size:14px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th{padding-top:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td{color:#000}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity{font-weight:400}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th{color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr{border:0;padding-left:0;padding-bottom:15px;padding-top:15px}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr{padding-bottom:0}.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td{font-weight:400;color:var(--order-summary-items-color,#000);border-bottom:var(--order-summary-items-divider-weight,0) solid var(--order-summary-items-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name{padding-left:40px;max-width:150px}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total{vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th{padding-top:var(--order-summary-rows-gap-top,15px);padding-bottom:var(--order-summary-rows-gap-bottom,15px)}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th{color:var(--order-summary-totals-color,#818a91);vertical-align:top}.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,.elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th{border-top:var(--order-summary-totals-divider-weight,0) solid var(--order-summary-totals-divider-color,#818a91)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td{max-width:70px}.elementor-widget-woocommerce-checkout-page .woocommerce h3{font-size:14px;font-weight:700;margin-top:0;margin-bottom:var(--sections-title-spacing,30px);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row>span{font-weight:400;font-size:14px;margin-bottom:3px;color:#818a91}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:48%}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox{vertical-align:middle;margin:0 5px 0 0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3{text-align:var(--billing-details-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row{margin-bottom:var(--forms-rows-gap,5px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child{margin-bottom:15px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login{margin-top:-8px;z-index:999;background:#fff;border-top-width:0;position:relative;margin-bottom:0;color:#818a91}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last{width:100%}}.elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:85%}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit{width:35%}}.elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3{background:var(--additional-fields-title-alignment,right)}.elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address{margin-bottom:var(--sections-margin,20px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment{margin-top:24px;padding:15px 25px 25px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods{border-bottom:none;padding:0}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box{background-color:#f7f7f7}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li{line-height:21px}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{padding-right:15px;font-size:12px}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a{float:none;font-size:11px;padding-left:10px}}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img{width:55px}}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0;margin-bottom:0;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order{background-color:#5bc0de;width:var(--purchase-button-width,auto);float:none;color:var(--purchase-button-normal-text-color,#fff);min-height:auto;padding:var(--purchase-button-padding,1em 1em);border-radius:var(--purchase-button-border-radius,3px)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover{background-color:#5bc0de;color:var(--purchase-button-hover-text-color,#fff);border-color:var(--purchase-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--purchase-button-hover-transition-duration,.3s);-o-transition-duration:var(--purchase-button-hover-transition-duration,.3s);transition-duration:var(--purchase-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before{display:none}.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,.elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2{width:auto;float:none}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:grid;grid-template-columns:auto auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:left}@media (max-width:1024px){.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid{display:block}.elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2{text-align:right}}.elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field{margin-bottom:10px}.elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000);font-size:14px;font-style:normal;text-transform:none;letter-spacing:normal;text-decoration:none;line-height:21px}.e-woo-select2-wrapper .select2-results__option,.e-woo-select2-wrapper .select2-results__option:focus{color:#818a91}.elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart table tbody tr:hover>td,.elementor-widget-woocommerce-cart table tbody tr:hover>th{background-color:inherit}.elementor-widget-woocommerce-cart .e-clear{overflow:hidden;height:0;width:0}.elementor-widget-woocommerce-cart .e-cart-section{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);margin:var(--sections-margin,0 0 30px 0);border-radius:var(--sections-border-radius,3px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4)}@media (min-width:1024px){.elementor-widget-woocommerce-cart .e-cart-section:last-child{margin:var(--sections-margin,0)}}.elementor-widget-woocommerce-cart .e-cart-content{color:var(--sections-descriptions-color,#818a91);font-size:15px;font-weight:400;line-height:23px;letter-spacing:0}.elementor-widget-woocommerce-cart .e-cart__container{display:grid;-ms-flex-wrap:wrap;flex-wrap:wrap;grid-template-columns:59% auto;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;grid-column-gap:var(--sections-margin,30px);grid-row-gap:var(--sections-margin,30px)}@media (max-width:1024px){.elementor-widget-woocommerce-cart .e-cart__container{grid-template-columns:repeat(1,1fr)}}.elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container{grid-template-columns:auto}.elementor-widget-woocommerce-cart .select2-container{margin-bottom:4px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-right:1rem;padding-left:1rem}.elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below{background-color:#f7f7f7}.elementor-widget-woocommerce-cart .woocommerce{font-family:Roboto,sans-serif}.elementor-widget-woocommerce-cart .woocommerce button.button{background-color:#fff;color:var(--forms-buttons-normal-text-color,#818a91);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,.88rem 2rem);width:var(--forms-buttons-width,auto);border:2px var(--forms-buttons-border-type,solid) var(--forms-buttons-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button:hover{color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]{padding:var(--forms-buttons-padding,.88rem 2rem);color:var(--forms-buttons-normal-text-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover,.elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover{background-color:var(--forms-buttons-hover-background-color,#fff);color:var(--forms-buttons-hover-text-color,#818a91);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s);border-color:var(--forms-buttons-hover-border-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li label{color:var(--sections-radio-buttons-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce #shipping_method li input{vertical-align:middle}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form{margin-top:var(--sections-descriptions-spacing,15px)}.elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination{color:var(--sections-descriptions-color,#818a91);margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th{display:none}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td{text-align:right!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td:before{width:100%;margin-bottom:10px}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td{text-align:left!important}.elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td:before,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td:before{content:attr(data-title);font-weight:700;float:right}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{text-align:var(--totals-title-alignment,right)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td{padding-top:var(--totals-rows-gap-top,12px);padding-bottom:var(--totals-rows-gap-bottom,9px)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount,.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before{color:var(--totals-color,#818a91);font-weight:700}.elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td{border-top-color:var(--totals-divider-color,#818a91);border-top-width:var(--totals-divider-weight,0)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row{margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-cart .woocommerce .product-name a{color:var(--product-link-normal-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .product-name a:hover{color:var(--product-link-hover-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .form-row{padding:3px 0;margin:0}.elementor-widget-woocommerce-cart .woocommerce .input-text,.elementor-widget-woocommerce-cart .woocommerce select{color:var(--forms-fields-normal-color,#818a91);background-color:#f7f7f7;border-radius:var(--forms-fields-border-radius,3px);border:none;padding:var(--forms-fields-padding,16px);font-size:14px}.elementor-widget-woocommerce-cart .woocommerce .input-text::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,.elementor-widget-woocommerce-cart .woocommerce select::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus,.elementor-widget-woocommerce-cart .woocommerce select:focus{color:var(--forms-fields-focus-color,#818a91);background-color:#f7f7f7;border-color:var(--forms-fields-focus-border-color,transparent);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-webkit-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-webkit-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-moz-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-moz-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-ms-input-placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::-ms-input-placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,.elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder{color:var(--forms-fields-focus-color,#818a91)}.elementor-widget-woocommerce-cart .woocommerce .input-text.qty{background-color:transparent;color:var(--order-summary-color,#000);border:var(--order-summary-quantity-border-weight,1px) solid var(--order-summary-quantity-border-color,#d4d4d4);border-radius:3px;padding:1px 2px;text-align:right;font-size:14px;min-height:28px;max-height:28px}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout{padding-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:var(--place-order-title-alignment,stretch);-ms-flex-align:var(--place-order-title-alignment,stretch);align-items:var(--place-order-title-alignment,stretch)}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button{padding:var(--checkout-button-padding,15px 1em);width:var(--checkout-button-width,auto);font-size:15px;text-align:center;color:var(--checkout-button-normal-text-color,#fff);background-color:#5bc0de;border-radius:var(--checkout-button-border-radius,3px);min-height:auto;margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover{color:var(--checkout-button-hover-text-color,#fff);background-color:#5bc0de;border-color:var(--checkout-button-hover-border-color,#5bc0de);-webkit-transition-duration:var(--checkout-button-hover-transition-duration,.3s);-o-transition-duration:var(--checkout-button-hover-transition-duration,.3s);transition-duration:var(--checkout-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-cart .woocommerce .remove{background:transparent;color:var(--order-summary-remove-icon-normal-color,#000)!important;width:auto}.elementor-widget-woocommerce-cart .woocommerce .remove:hover{background:transparent;color:var(--order-summary-remove-icon-hover-color,#5bc0de)!important}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals{float:none;width:100%}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td{padding-right:0}.elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td{padding-left:0}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{float:left;width:100%}.elementor-widget-woocommerce-cart .woocommerce .coupon .form-row{padding:0}.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{-webkit-box-flex:2;-ms-flex:2;flex:2;padding-left:30px}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon-col-start{padding-left:0}}.elementor-widget-woocommerce-cart .woocommerce .coupon-col-end{-webkit-box-flex:1;-ms-flex:1;flex:1}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon-col{display:block}}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce .coupon{margin:var(--sections-margin,0)}.elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code{width:100%;margin-left:0;margin-bottom:15px}.elementor-widget-woocommerce-cart .woocommerce .coupon .button{width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:right;font-size:14px;font-weight:700}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce table.shop_table .button{float:none;width:100%}}.elementor-widget-woocommerce-cart .woocommerce table.shop_table td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table th,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr{border:0 solid}.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd)>th{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions{padding:16px 0 0}.elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a{display:inline-block}.elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child{display:var(--update-cart-automatically-display,table-row)}.elementor-widget-woocommerce-cart .woocommerce table.cart{margin-bottom:0}.elementor-widget-woocommerce-cart .woocommerce table.cart img{width:55px;height:auto;display:block}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-top:var(--order-summary-rows-gap-top,20px);padding-left:20px;padding-bottom:var(--order-summary-rows-gap-bottom,20px);padding-right:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td span{color:var(--order-summary-color,#000);font-size:14px;font-weight:400}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top:var(--order-summary-items-divider-weight,1px) solid var(--order-summary-items-divider-color,#d4d4d4)}@media (max-width:768px){.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal,.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail{border-top-width:0}}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove{padding-right:0;padding-left:0}@media (min-width:767px){.elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td{border-top:none}}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove{position:relative}.elementor-widget-woocommerce-cart .woocommerce table.cart.product-name{padding-left:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{border-top-width:var(--order-summary-items-divider-weight,1px);border-top-color:var(--order-summary-items-divider-color,#d4d4d4)}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}}@media (max-width:768px){.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-right:0;padding-left:0}}@media (max-width:767px){.elementor-widget-woocommerce-cart .woocommerce table.cart{padding:0}.elementor-widget-woocommerce-cart .woocommerce table.cart tr{padding:16px 28px}.elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td{padding-right:0;padding-left:0}.elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name,.elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child{border-top:none}.elementor-widget-woocommerce-cart .woocommerce table.cart td.actions{padding:0}}.elementor-widget-woocommerce-cart .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,.elementor-widget-woocommerce-cart .woocommerce .cart th{font-size:14px;font-weight:700;margin-top:0;padding:0 0 8px 20px}.elementor-widget-woocommerce-cart .woocommerce .cart_totals h2{margin-bottom:var(--sections-title-spacing,1rem);color:var(--sections-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart th{padding-bottom:var(--order-summary-title-spacing,8px);color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .cart td:before{color:var(--order-summary-title-color,#000)}.elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button:after{display:none}.elementor-widget-woocommerce-cart .woocommerce .product-name .variation{color:var(--order-summary-variations-color,#000)}@media (max-width:1024px){.elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td,.elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td{background-color:transparent}.elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td{padding-right:0}}.e-woo-select2-wrapper .select2-results__option{font-family:Roboto,sans-serif;font-size:14px;color:var(--forms-fields-normal-color,#818a91)}.e-woo-select2-wrapper .select2-results__option:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account{font-family:Roboto,sans-serif;color:#818a91}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table{border:none;margin-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{background-color:var(--sections-background-color,#fff)}.elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper{padding:var(--sections-padding,16px 30px 3px 30px)}.elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,.elementor-widget-woocommerce-my-account .e-my-account-tab address{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content{border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper{padding:0;border:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details{margin-bottom:40px}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details,.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px 3px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content>div>p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single{color:var(--forms-fields-normal-color,#818a91);background-color:var(--forms-fields-normal-background-color,#f7f7f7);border-radius:var(--forms-fields-border-radius,0);border:none;height:45px}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus{color:var(--forms-fields-focus-color,#818a91);background-color:var(--forms-fields-focus-background-color,#f7f7f7);border-color:var(--forms-fields-focus-border-color,initial);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder{color:var(--forms-fields-normal-color,#818a91)}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered{color:var(--forms-fields-normal-color,#818a91);line-height:45px;padding-left:1rem;padding-right:1rem}.elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow{height:45px}.elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below{background-color:var(--forms-fields-normal-background-color,#f7f7f7)}.elementor-widget-woocommerce-my-account .woocommerce ::-webkit-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-moz-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::-ms-input-placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce ::placeholder{color:var(--forms-fields-normal-color,inherit);font-family:inherit;opacity:.6}.elementor-widget-woocommerce-my-account .woocommerce-message{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce address{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce a{color:var(--links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a:hover{color:var(--links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover,.elementor-widget-woocommerce-my-account .woocommerce a.button:hover{background-color:initial}.elementor-widget-woocommerce-my-account .woocommerce em{font-size:12px;color:var(--login-messages-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .form-row{padding-left:var(--forms-columns-gap-padding-left,0);padding-right:var(--forms-columns-gap-padding-right,0);margin-left:var(--forms-columns-gap-margin-left,0);margin-right:var(--forms-columns-gap-margin-right,0);margin-bottom:var(--forms-rows-gap,6px)}.elementor-widget-woocommerce-my-account .woocommerce .form-row label{color:var(--forms-labels-color,#818a91);margin-bottom:var(--forms-label-spacing,0)}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,.elementor-widget-woocommerce-my-account .woocommerce .form-row select{color:var(--forms-fields-normal-color,#818a91);border-radius:var(--forms-fields-border-radius,0);padding:var(--forms-fields-padding,16px);background:#f7f7f7;border:none;font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,.elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus{color:var(--forms-fields-focus-color,#818a91);border-color:var(--forms-fields-focus-border-color,#818a91);-webkit-transition-duration:var(--forms-fields-focus-transition-duration,.3s);-o-transition-duration:var(--forms-fields-focus-transition-duration,.3s);transition-duration:var(--forms-fields-focus-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field{margin-bottom:5px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text{margin-bottom:15px;color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){color:var(--login-messages-color,#818a91);font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,.elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword{font-size:12px;margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:50%}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first{width:100%}.elementor-widget-woocommerce-my-account .woocommerce .login,.elementor-widget-woocommerce-my-account .woocommerce .register,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword{background-color:var(--sections-background-color,#fff);padding:var(--sections-padding,16px 30px);border:1px var(--sections-border-type,solid) var(--sections-border-color,#d4d4d4);border-radius:var(--sections-border-radius,3px);font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .login .button,.elementor-widget-woocommerce-my-account .woocommerce .register .button,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3){margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2){margin-top:10px;font-size:12px}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox{vertical-align:middle}.elementor-widget-woocommerce-my-account .woocommerce p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span{color:var(--checkboxes-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce td,.elementor-widget-woocommerce-my-account .woocommerce th,.elementor-widget-woocommerce-my-account .woocommerce tr{border:none}.elementor-widget-woocommerce-my-account .woocommerce h2,.elementor-widget-woocommerce-my-account .woocommerce h3{color:var(--typography-section-titles-color,#000);margin-top:0;margin-bottom:var(--section-title-spacing,45px);font-weight:400}.elementor-widget-woocommerce-my-account .woocommerce strong{color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta,.elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label{color:var(--variations-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .product-quantity{font-weight:400;color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{float:right;width:25%}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation{width:100%}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul{-webkit-padding-start:0;padding-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li{list-style-type:none;margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li:after{content:"";display:block;width:100%;background-color:var(--tabs-divider-color,#818a91);height:var(--tabs-divider-weight,0);position:relative;top:calc(var(--tabs-spacing, 2px) / 2)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a{color:var(--tabs-active-color,#5bc0de);background:#eceeef;border-color:var(--tabs-active-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{font-style:normal;font-weight:700;font-size:14px;color:var(--tabs-normal-color,#818a91);display:block;padding:var(--tabs-padding,12px 20px);text-align:var(--tabs-alignment,start);background:#f7f7f7;border-radius:var(--tabs-border-radius,0);border:0 var(--tabs-border-type,solid) var(--tabs-border-color,transparent)}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover{color:var(--tabs-hover-color,#5bc0de);border-color:var(--tabs-hover-border-color,transparent)}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a{padding:var(--tabs-padding,10px)}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard{margin-top:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout:after{display:none}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{float:left;width:75%;padding:0;padding-right:var(--tab-content-spacing,6%)}@media (max-width:1024px){.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content{width:100%;padding:var(--tab-content-spacing,6%) 0 0 0}}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type{margin-bottom:0}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type{margin-top:30px}.elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark{background-color:transparent;font-weight:700;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce caption+thead tr:first-child th,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce colgroup+thead tr:first-child th{border-top:0}.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,.elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th{border-top:0;padding-right:0;padding-top:0;padding-bottom:var(--tables-titles-spacing,9px)}.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(2n)>th,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>td,.elementor-widget-woocommerce-my-account .woocommerce tbody>tr:nth-child(odd)>th{background-color:transparent;padding-right:0;padding-top:var(--order-summary-rows-gap-top,9px);padding-bottom:var(--order-summary-rows-gap-bottom,9px);color:var(--tables-items-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number>a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table{font-size:14px}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table td,.elementor-widget-woocommerce-my-account .woocommerce .shop_table th{border-top:var(--tables-divider-border-width,1px) var(--tables-divider-border-type,solid) var(--tables-divider-border-color,#d4d4d4)}.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th,.elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span{color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td,.elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th{padding-right:0;color:var(--tables-title-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a{color:var(--tables-links-normal-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover{color:var(--tables-links-hover-color,#5bc0de)}.elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td{border-top:none;padding-top:0}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button{background:transparent;border:2px solid #5bc0de;border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);border-radius:var(--tables-button-border-radius,3px);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);margin-top:0;margin-bottom:0;padding:var(--tables-button-padding,12px 32px)}.elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-Address .title h3,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3{float:none}.elementor-widget-woocommerce-my-account .woocommerce-Address address,.elementor-widget-woocommerce-my-account .woocommerce-Addresses address{padding:var(--sections-padding,45px 30px 16px 30px)}.elementor-widget-woocommerce-my-account .woocommerce-Address .edit,.elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit{float:right;position:absolute;margin-right:var(--edit-link-margin-start,30px);margin-top:var(--edit-link-margin-top,10px)}.elementor-widget-woocommerce-my-account .woocommerce .u-columns{margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset{border:none;padding:0;-webkit-margin-start:0;margin-inline-start:0}.elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend{font-weight:700;padding:20px 0;color:var(--general-text-color,#000)}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button{background:#5bc0de;border:none;color:var(--forms-buttons-normal-text-color,#fff);border-radius:var(--forms-buttons-border-radius,3px);padding:var(--forms-buttons-padding,12px 32px);margin-top:20px}.elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover,.elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover{color:var(--forms-buttons-hover-text-color,#fff);-webkit-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);-o-transition-duration:var(--forms-buttons-hover-transition-duration,.3s);transition-duration:var(--forms-buttons-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-pagination{padding:16px 0}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button{background:transparent;border-radius:var(--tables-button-border-radius,3px);border:2px var(--tables-buttons-border-type,solid) var(--tables-buttons-border-color,#5bc0de);vertical-align:middle;color:var(--tables-button-normal-text-color,#818a91);padding:var(--tables-button-padding,5px 10px)}.elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover{color:var(--tables-button-hover-text-color,#818a91);-webkit-transition-duration:var(--tables-button-hover-transition-duration,.3s);-o-transition-duration:var(--tables-button-hover-transition-duration,.3s);transition-duration:var(--tables-button-hover-transition-duration,.3s)}.elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates{color:var(--general-text-color,#818a91)}.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below,.elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below{padding-bottom:0}.elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td{vertical-align:top;line-height:unset}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{float:none;width:100%}.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block}.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation,.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation{display:block}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{list-style:none;padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:var(--tabs-container-justify-content,space-between);-ms-flex-pack:var(--tabs-container-justify-content,space-between);justify-content:var(--tabs-container-justify-content,space-between)}@media (max-width:767px){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul{display:block}}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{display:inline-block;width:var(--tab-width,100%);padding:0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);margin:0;border-right:var(--tabs-divider-weight,0) solid var(--tabs-divider-color,#818a91)}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:after{display:none}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type{padding-right:0}.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type{padding-left:0;border-right-width:0}@media (max-width:767px){.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li{margin:calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;display:inline-block;width:100%}}.e-my-account-tabs-horizontal .woocommerce-MyAccount-content{float:none;width:100%;padding:var(--tab-content-spacing,50px) 0 0 0}.elementor-editor-active .elementor-widget-container,.elementor-editor-preview .elementor-widget-container{min-height:1px}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a{pointer-events:none}.elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,.elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button{pointer-events:none;opacity:.3}.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type){display:none}.product .count{background-color:inherit}.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2{display:none}.woocommerce div.product.elementor form.cart div.product-addon{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-negative:0;flex-shrink:0}.e-sticky-right-column--active{position:-webkit-sticky;position:sticky;top:0}assets/css/widget-video-playlist-rtl.min.css000064400000031237150755004320015166 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.e-tabs-inner-tabs{text-align:right;font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;font-size:16px}.e-tabs-inner-tabs .e-tab-content{padding-top:32px}.e-tabs-inner-tabs .e-inner-tabs-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;overflow:hidden;z-index:1}.e-tabs-inner-tabs .e-inner-tabs-wrapper :after{content:"";width:100%;height:var(--inner-tabs-border-height,1px);background-color:var(--inner-tabs-border-color,#d5dadf);position:absolute;bottom:0;z-index:-1}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title{font-weight:700;min-width:140px;line-height:38px;height:38px;-webkit-box-sizing:content-box;box-sizing:content-box}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title a{color:#6d7882;padding:0 36px;display:block;text-align:center}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active{border-color:#495157 #495157 transparent;border-left-width:0;border-bottom:1px solid #495157;border-right-width:0;border-top-width:0}.e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active a{color:#495157}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content{display:none;padding:20px}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-text{color:#556068}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.e-inner-tab-active{display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons{margin-top:24px;display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons button{display:none;font-weight:500;line-height:24px;text-decoration:underline;border:none;background:transparent;padding:0}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible .e-inner-tab-text{overflow:hidden}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible.show-inner-tab-buttons .e-inner-tab-buttons,.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button.show-button{display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.show-full-height div.e-inner-tab-text{height:auto}@media (max-width:767px){.e-tabs-inner-tabs>.e-tab-content:first-child{padding-top:24px}.e-tabs-inner-tabs .e-inner-tabs-wrapper{display:none}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper{border:solid #d5dadf;border-width:1px 1px 0}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title{border:solid #d5dadf;border-width:0 0 1px;font-size:16px;font-weight:700;text-align:center;height:38px;line-height:38px;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0 10px;cursor:pointer;display:block}.e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content{border:solid #d5dadf;border-width:0 0 1px;padding:20px}}.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}@media (max-width:767px){.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}}.elementor-widget-video-playlist{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif}.elementor-widget-video-playlist .e-tabs{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.elementor-widget-video-playlist .e-tabs-main-area{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;height:434px}.elementor-widget-video-playlist .e-tabs-wrapper{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:33%}.elementor-widget-video-playlist .e-tabs-header{background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:0 16px;min-height:56px;border-bottom:1px solid #d5dadf}.elementor-widget-video-playlist .e-tabs-header .e-tabs-header-right-side{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-negative:0;flex-shrink:0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-title{font-family:Roboto,Arial,Helvetica,Verdana,sans-serif;-o-text-overflow:ellipsis;text-overflow:ellipsis;font-weight:700;font-size:16px;padding:10px 0;overflow-wrap:anywhere;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;margin:auto 0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count{font-size:14px;-ms-flex-negative:0;flex-shrink:0;font-weight:400;line-height:20px;-ms-flex-item-align:start;align-self:flex-start;padding:18px 0 0}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button{display:none;margin:auto 0 auto 8px;cursor:pointer;padding:0 4px}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button.e-font-icon-svg{height:1em;width:1em}.elementor-widget-video-playlist .e-tabs-header .rotate-up{-webkit-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-widget-video-playlist .e-tabs-header .rotate-down{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.elementor-widget-video-playlist .e-tabs-items-wrapper{background-color:#fff;overflow:hidden;position:relative;height:100%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items{overflow:auto;height:100%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-section-title{border-color:#d5dadf;font-size:14px;height:36px;padding:0 16px;line-height:36px;margin:0;text-align:right;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;border-width:0;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title{background-color:#fff;border-color:#d5dadf;border-width:0 0 1px;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:14px;height:55px;line-height:55px;outline:none;padding:0 16px;-webkit-box-sizing:content-box;box-sizing:content-box}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i{text-shadow:0 0 3px #000;color:#fff;font-size:var(--playlist-item-icon-size,16px)}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg{text-shadow:0 0 3px #000;color:#fff;fill:#fff;width:var(--playlist-item-icon-size,16px);height:var(--playlist-item-icon-size,16px)}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg path{fill:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover{background-color:#f1f3f5;border-color:#d5dadf;border-width:0 0 1px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg{text-shadow:0 0 3px #000;color:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg path,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg path{fill:#fff}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active .e-tab-title-text,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover .e-tab-title-text{font-size:14px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-play,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail{background-color:#d5dadf;position:relative;margin:auto 0;-ms-flex-negative:0;flex-shrink:0;width:75px;height:42px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail img{-o-object-fit:fill;object-fit:fill;width:75px;height:42px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail svg{position:absolute;bottom:4px;right:4px;font-weight:900}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-title-text{font-size:14px;margin:auto 8px;text-align:right;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg{margin:auto 0;vertical-align:middle}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-duration{font-size:14px;margin:auto 0}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched,.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-play{display:none}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-watched{display:block}.elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top{display:none;height:98px;position:absolute;top:0;width:100%;pointer-events:none;background:-webkit-gradient(linear,left bottom,left top,from(transparent),to(#fff));background:-webkit-linear-gradient(bottom,transparent,#fff);background:-o-linear-gradient(bottom,transparent 0,#fff 100%);background:linear-gradient(0deg,transparent,#fff)}.elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom{display:none;height:98px;position:absolute;bottom:0;width:100%;background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(#fff));background:-webkit-linear-gradient(top,transparent,#fff);background:-o-linear-gradient(top,transparent 0,#fff 100%);background:linear-gradient(180deg,transparent,#fff);pointer-events:none}.elementor-widget-video-playlist .e-tabs-items-wrapper.bottom-shadow .shadow-bottom,.elementor-widget-video-playlist .e-tabs-items-wrapper.top-shadow .shadow-top{display:block}.elementor-widget-video-playlist .e-tabs-content-wrapper{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;height:100%;position:relative}.elementor-widget-video-playlist .e-tabs-content-wrapper .elementor-custom-embed-image-overlay{cursor:pointer;text-align:center;position:absolute;top:0;left:0;width:100%;height:100%;-webkit-background-size:cover;background-size:cover;background-position:50%}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-mobile-title{display:none}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content{background-color:#000;display:none;height:100%;outline:none}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content>div{height:100%}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content iframe{height:100%;max-height:100%!important;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content video{height:100%;background-color:#000}.elementor-widget-video-playlist .e-tabs-inner-tabs .e-tab-content{display:none;outline:none}@media (max-width:767px){.elementor-widget-video-playlist .e-tabs-main-area{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;height:auto}.elementor-widget-video-playlist .e-tabs-main-area .e-tabs-content-wrapper{border:none;height:38%}.elementor-widget-video-playlist .e-tabs-wrapper{width:auto;height:62%}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items{max-height:248px}.elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items .e-tab-title{border:none}.elementor-widget-video-playlist .e-tabs-header{min-height:48px}.elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count{margin:0 6px;padding:14px 0 0}.elementor-widget-video-playlist .e-tab-content{border:none;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex}}assets/css/widget-popup.min.css000064400000002125150755004320012557 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
[data-elementor-type=popup] .elementor-section-wrap:not(:empty)+#elementor-add-new-section,[data-elementor-type=popup]:not(.elementor-edit-area){display:none}.elementor-popup-modal{display:-webkit-box;display:-ms-flexbox;display:flex;pointer-events:none;background-color:transparent;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.elementor-popup-modal .dialog-buttons-wrapper,.elementor-popup-modal .dialog-header{display:none}.elementor-popup-modal .dialog-close-button{display:none;top:20px;margin-top:0;right:20px;opacity:1;z-index:9999;pointer-events:all}.elementor-popup-modal .dialog-close-button svg{fill:#373a3c;height:1em;width:1em}.elementor-popup-modal .dialog-widget-content{width:auto;overflow:visible;max-width:100%;max-height:100%;border-radius:0;-webkit-box-shadow:none;box-shadow:none;pointer-events:all}.elementor-popup-modal .dialog-message{width:640px;max-width:100vw;max-height:100vh;padding:0;overflow:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-popup-modal .elementor{width:100%}assets/css/widget-lottie-rtl.min.css000064400000001370150755004320013514 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.e-lottie__container{display:inline-block;max-width:var(--lottie-container-max-width);width:var(--lottie-container-width);opacity:var(--lottie-container-opacity)}.e-lottie__container:hover{opacity:var(--lottie-container-opacity-hover);-webkit-transition-duration:var(--lottie-container-transition-duration-hover);-o-transition-duration:var(--lottie-container-transition-duration-hover);transition-duration:var(--lottie-container-transition-duration-hover)}.e-lottie__container svg,.e-lottie__container svg *{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}.e-lottie__caption{color:var(--caption-color);margin-top:var(--caption-margin-top);text-align:var(--caption-text-align)}assets/css/widget-slides.min.css000064400000005233150755004320012702 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-slides .swiper-slide-bg{-webkit-background-size:cover;background-size:cover;background-position:50%;background-repeat:no-repeat;min-width:100%;min-height:100%}.elementor-slides .swiper-slide-inner{background-repeat:no-repeat;background-position:50%;position:absolute;top:0;left:0;bottom:0;right:0;padding:50px;margin:auto}.elementor-slides .swiper-slide-inner,.elementor-slides .swiper-slide-inner:hover{color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-slides .swiper-slide-inner .elementor-background-overlay{position:absolute;z-index:0;top:0;bottom:0;left:0;right:0}.elementor-slides .swiper-slide-inner .elementor-slide-content{position:relative;z-index:1;width:100%}.elementor-slides .swiper-slide-inner .elementor-slide-heading{font-size:35px;font-weight:700;line-height:1}.elementor-slides .swiper-slide-inner .elementor-slide-description{font-size:17px;line-height:1.4}.elementor-slides .swiper-slide-inner .elementor-slide-description:not(:last-child),.elementor-slides .swiper-slide-inner .elementor-slide-heading:not(:last-child){margin-bottom:30px}.elementor-slides .swiper-slide-inner .elementor-slide-button{border:2px solid #fff;color:#fff;background:transparent;display:inline-block}.elementor-slides .swiper-slide-inner .elementor-slide-button,.elementor-slides .swiper-slide-inner .elementor-slide-button:hover{background:transparent;color:inherit;text-decoration:none}.elementor--v-position-top .swiper-slide-inner{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor--v-position-bottom .swiper-slide-inner{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor--v-position-middle .swiper-slide-inner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor--h-position-left .swiper-slide-inner{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.elementor--h-position-right .swiper-slide-inner{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.elementor--h-position-center .swiper-slide-inner{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}body.rtl .elementor-widget-slides .elementor-swiper-button-next{left:10px;right:auto}body.rtl .elementor-widget-slides .elementor-swiper-button-prev{right:10px;left:auto}.elementor-slides-wrapper div:not(.swiper-slide)>.swiper-slide-inner{display:none}@media (max-width:767px){.elementor-slides .swiper-slide-inner{padding:30px}.elementor-slides .swiper-slide-inner .elementor-slide-heading{font-size:23px;line-height:1;margin-bottom:15px}.elementor-slides .swiper-slide-inner .elementor-slide-description{font-size:13px;line-height:1.4;margin-bottom:15px}}assets/css/widget-social.min.css000064400000000545150755004320012672 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-facebook-widget.fb_iframe_widget,.elementor-facebook-widget.fb_iframe_widget span{width:100%!important}.elementor-facebook-widget.fb_iframe_widget iframe{position:relative;width:100%!important}.elementor-facebook-widget.fb-like{height:1px}.elementor-widget-facebook-comments iframe{width:100%!important}assets/css/widget-theme-builder.min.css000064400000000447150755004320014147 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
.elementor-theme-builder-content-area{height:400px}.elementor-location-footer:before,.elementor-location-header:before{content:"";display:table;clear:both}.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post{display:block}assets/css/editor-rtl.css000064400000045447150755004320011454 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
#elementor-panel-get-pro-elements {
  display: none; }

.elementor-panel .elementor-control .e-control-error {
  color: #b01b1b; }

.elementor-panel .elementor-control.forms-field-shortcode .elementor-control-content {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-flow: row;
          flex-flow: row;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.elementor-panel .elementor-control.forms-field-shortcode .elementor-control-title {
  width: 45%; }

.elementor-panel .elementor-control.forms-field-shortcode .elementor-control-raw-html {
  width: 55%; }

#elementor-widget-template-empty-templates {
  margin-top: 15px;
  text-align: center; }

.elementor-widget-template-empty-templates-title {
  padding: 25px 0 30px; }

.elementor-widget-template-empty-templates-icon {
  font-size: 96px;
  color: #d5dadf; }

.elementor-widget-template-empty-templates-footer {
  color: #a4afb7;
  font-size: 13px;
  font-style: italic;
  margin-bottom: 15px; }
  .elementor-widget-template-empty-templates-footer a {
    color: #a4afb7; }

#elementor-panel-global-widget {
  height: 100%; }
  #elementor-panel-global-widget > * {
    background-color: #fff; }

#elementor-global-widget-locked-header {
  -webkit-box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);
          box-shadow: 0 0 8px rgba(0, 0, 0, 0.1); }
  #elementor-global-widget-locked-header.elementor-nerd-box {
    padding: 40px 25px; }
    #elementor-global-widget-locked-header.elementor-nerd-box .elementor-nerd-box-icon {
      margin-top: 20px; }

#elementor-global-widget-locked-tools {
  margin-top: 15px;
  padding: 0 20px; }

.elementor-global-widget-locked-tool {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  padding: 20px 0;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }
  .elementor-global-widget-locked-tool .elementor-button {
    text-transform: uppercase;
    color: #fff;
    padding: 8px 0;
    width: 70px;
    font-weight: 600; }

.elementor-global-widget-locked-tool-description {
  -webkit-box-flex: 1;
      -ms-flex-positive: 1;
          flex-grow: 1; }

#elementor-global-widget-locked-unlink {
  border-top: 1px solid #e6e9ec; }

#elementor-global-templates .elementor-element {
  position: relative; }
  #elementor-global-templates .elementor-element:before {
    position: absolute;
    font-family: eicons;
    content: '\e91f';
    top: 5px;
    left: 5px;
    color: #fcb92c;
    font-size: 10px; }

#elementor-global-widget-loading {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }
  #elementor-global-widget-loading:not(.elementor-hidden) {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  #elementor-global-widget-loading i {
    color: #d5dadf;
    font-size: 50px; }

.elementor-panel .elementor-control-type-fields_map .elementor-repeater-fields {
  margin: 10px 0; }
  .elementor-panel .elementor-control-type-fields_map .elementor-repeater-fields .elementor-control {
    padding: 0; }
  .elementor-panel .elementor-control-type-fields_map .elementor-repeater-fields:last-child {
    margin-bottom: 0; }

.elementor-repeater-row--form-step .elementor-repeater-row-tools:hover {
  background-color: #c2cbd2; }

.elementor-repeater-row--form-step .elementor-repeater-row-tools div:not(.elementor-repeater-row-handle-sortable) {
  background-color: #f1f3f5; }
  .elementor-repeater-row--form-step .elementor-repeater-row-tools div:not(.elementor-repeater-row-handle-sortable):hover {
    background-color: #e6e9ec; }

.elementor-facebook-widget.fb_iframe_widget {
  width: 100% !important; }
  .elementor-facebook-widget.fb_iframe_widget span {
    width: 100% !important; }
  .elementor-facebook-widget.fb_iframe_widget iframe {
    position: relative;
    width: 100% !important; }

.elementor-facebook-widget.fb-like {
  height: 1px; }

.elementor-widget-facebook-comments iframe {
  width: 100% !important; }

#elementor-publish {
  height: 100%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  #elementor-publish__modal .dialog-message {
    padding: 0; }
  #elementor-publish__modal .dialog-buttons-wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  #elementor-publish__modal .dialog-publish {
    -webkit-transition-property: opacity, -webkit-box-shadow;
    transition-property: opacity, -webkit-box-shadow;
    -o-transition-property: box-shadow, opacity;
    transition-property: box-shadow, opacity;
    transition-property: box-shadow, opacity, -webkit-box-shadow; }
    #elementor-publish__modal .dialog-publish:not(.elementor-button-success) {
      text-decoration: underline;
      color: #a4afb7;
      font-weight: normal;
      width: 110px;
      background-color: transparent; }
      #elementor-publish__modal .dialog-publish:not(.elementor-button-success):hover {
        color: #6d7882; }
  #elementor-publish__tabs {
    padding-top: 50px; }
    @media (max-width: 1439px) {
      #elementor-publish__tabs {
        width: 28%; } }
  #elementor-publish__screen {
    overflow: auto;
    padding: 50px; }

.elementor-publish__tab {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  position: relative;
  height: 110px;
  padding: 20px 15px;
  cursor: pointer; }
  .elementor-publish__tab.elementor-active {
    background-color: #fff;
    -webkit-box-shadow: 0 6px 20px rgba(0, 0, 0, 0.07);
            box-shadow: 0 6px 20px rgba(0, 0, 0, 0.07); }
    .elementor-publish__tab.elementor-active:after {
      content: '';
      position: absolute;
      top: 0;
      right: 0;
      height: 100%;
      width: 5px;
      background-color: #71d7f7; }
  .elementor-publish__tab__image {
    width: 50px;
    -ms-flex-negative: 0;
        flex-shrink: 0; }
    .elementor-publish__tab__image img {
      width: 100%; }
  .elementor-publish__tab__content {
    text-align: right;
    padding-right: 15px; }
  .elementor-publish__tab__title {
    font-size: 18px;
    color: #556068;
    font-weight: bold; }

#elementor-theme-builder-conditions {
  margin: 40px 0 60px; }
  #elementor-theme-builder-conditions-view {
    overflow: hidden; }
  #elementor-theme-builder-conditions .elementor-control {
    background-color: transparent;
    padding: 0; }
    #elementor-theme-builder-conditions .elementor-control:before {
      content: none; }
    #elementor-theme-builder-conditions .elementor-control select {
      border-width: 0;
      height: 40px;
      padding: 0 14px; }
    #elementor-theme-builder-conditions .elementor-control-type-query {
      width: 100px; }
    #elementor-theme-builder-conditions .elementor-control-type-select .elementor-control-input-wrapper:after {
      left: 10px;
      color: #495157; }
    #elementor-theme-builder-conditions .elementor-control-type {
      width: 120px; }
      #elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type="include"] {
        background-color: #a4afb7; }
        #elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type="include"] .elementor-control-input-wrapper:before {
          content: '\e8cc'; }
      #elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type="exclude"] {
        background-color: #c2cbd2; }
        #elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type="exclude"] .elementor-control-input-wrapper:before {
          content: '\e8cd'; }
      #elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type="exclude"] select, #elementor-theme-builder-conditions .elementor-control-type[data-elementor-condition-type="include"] select {
        color: #fff;
        text-transform: uppercase;
        padding-right: 33px; }
      #elementor-theme-builder-conditions .elementor-control-type .elementor-control-input-wrapper:before {
        font-family: eicons;
        position: absolute;
        top: 50%;
        -webkit-transform: translateY(-50%);
            -ms-transform: translateY(-50%);
                transform: translateY(-50%);
        right: 13px;
        font-size: 15px;
        color: #fff; }
      #elementor-theme-builder-conditions .elementor-control-type .elementor-control-input-wrapper:after {
        color: #fff; }
      #elementor-theme-builder-conditions .elementor-control-type-select {
        background-color: #ffffff; }
      #elementor-theme-builder-conditions .elementor-control-type option {
        color: #495157; }
  #elementor-theme-builder-conditions .elementor-theme-builder-conditions-repeater-row-controls {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    margin-left: 10px;
    width: 70%;
    -webkit-box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
            box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
    overflow: hidden;
    border-radius: 3px; }
    #elementor-theme-builder-conditions .elementor-theme-builder-conditions-repeater-row-controls .elementor-control:not(:first-child) {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1;
      margin-right: 1px; }
      #elementor-theme-builder-conditions .elementor-theme-builder-conditions-repeater-row-controls .elementor-control:not(:first-child) select {
        border-radius: 0; }
  #elementor-theme-builder-conditions .elementor-repeater-fields-wrapper {
    max-width: 700px;
    width: 100%;
    margin: auto; }
  #elementor-theme-builder-conditions .elementor-repeater-fields {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    margin-top: 10px; }
  #elementor-theme-builder-conditions .elementor-control-field {
    display: block; }
  #elementor-theme-builder-conditions .elementor-control-title,
  #elementor-theme-builder-conditions .elementor-control-spinner {
    display: none; }
  #elementor-theme-builder-conditions .elementor-control-input-wrapper {
    width: 100%;
    max-width: initial; }
  #elementor-theme-builder-conditions .select2-selection {
    height: 40px;
    border: none;
    border-radius: 0; }
    #elementor-theme-builder-conditions .select2-selection__rendered {
      line-height: 40px;
      padding-right: 15px;
      text-align: right; }
    #elementor-theme-builder-conditions .select2-selection__arrow {
      height: 30px; }
      #elementor-theme-builder-conditions .select2-selection__arrow b {
        border-top-color: #495157;
        border-width: 4px 4px 0 4px;
        margin-top: 2px;
        margin-right: -7px; }
  #elementor-theme-builder-conditions .elementor-repeater-tool-remove {
    font-size: 18px;
    cursor: pointer;
    color: #a4afb7; }
  #elementor-theme-builder-conditions .elementor-button-wrapper {
    margin-top: 50px; }
  #elementor-theme-builder-conditions .elementor-repeater-add {
    font-size: 14px;
    padding: 12px 26px; }

.elementor-error .elementor-theme-builder-conditions-repeater-row-controls {
  border: 1px solid rgba(176, 27, 27, 0.5); }

.elementor-conditions-conflict-message {
  margin-top: 10px;
  font-size: 11px;
  color: #b01b1b;
  text-align: right;
  padding-right: 90px; }
  .elementor-conditions-conflict-message a {
    color: #b01b1b; }

.elementor-panel-footer-theme-builder-buttons-wrapper .elementor-panel-footer-sub-menu {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }

.elementor-panel-footer-theme-builder-buttons-wrapper .elementor-panel-footer-sub-menu-item {
  display: inline-block; }
  .elementor-panel-footer-theme-builder-buttons-wrapper .elementor-panel-footer-sub-menu-item i {
    margin-left: 5px; }
  .elementor-panel-footer-theme-builder-buttons-wrapper .elementor-panel-footer-sub-menu-item > * {
    display: inline-block;
    line-height: 40px; }

.elementor-conditions-select2-dropdown {
  border: none;
  border-radius: 0; }
  .elementor-conditions-select2-dropdown .select2-results__message {
    display: none; }
  .elementor-conditions-select2-dropdown .select2-search--dropdown .select2-search__field {
    border-width: 0 0 1px;
    border-radius: 0; }

#elementor-toast.e-theme-builder-save-toaster .dialog-buttons-wrapper {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column; }

#elementor-toast.e-theme-builder-save-toaster .dialog-buttons-message {
  text-align: center; }

#elementor-toast.e-theme-builder-save-toaster .dialog-button {
  border-radius: 3px;
  text-align: center;
  font-size: 12px;
  color: #ffffff;
  cursor: pointer;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  height: 27px;
  background-color: #6d7882;
  margin: 0; }
  #elementor-toast.e-theme-builder-save-toaster .dialog-button:hover {
    background-color: #39b54a; }
  #elementor-toast.e-theme-builder-save-toaster .dialog-button i {
    margin-left: 5px; }

#elementor-toast.e-theme-builder-save-toaster .dialog-open_site_editor {
  margin-bottom: 10px; }

.elementor-control.elementor-control-sitemap_items.elementor-control-type-repeater .elementor-repeater-row-tools .elementor-repeater-row-item-title span {
  text-transform: capitalize; }

.elementor-editor-popup .elementor-tab-control-settings a:before {
  content: '\e922'; }

#elementor-publish .elementor-popup__display-settings .elementor-control-type-slider .elementor-control-input-wrapper {
  width: 150px; }

#elementor-publish .elementor-popup__display-settings .elementor-control-input-wrapper {
  width: 80px;
  max-width: 100%; }

.elementor-popup__display-settings {
  text-align: right; }
  .elementor-popup__display-settings_controls_group {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    height: 60px;
    background-color: #fff;
    margin-bottom: 10px;
    padding-left: 20px;
    -webkit-box-shadow: 0 6px 20px rgba(0, 0, 0, 0.07);
            box-shadow: 0 6px 20px rgba(0, 0, 0, 0.07);
    border-radius: 3px; }
    .elementor-popup__display-settings_controls_group:not(.elementor-active) .elementor-control:nth-child(2) h3 {
      color: #a4afb7; }
    .elementor-popup__display-settings_controls_group__icon {
      width: 60px;
      height: 60px;
      border-left: 1px solid #e6e9ec;
      display: -webkit-inline-box;
      display: -ms-inline-flexbox;
      display: inline-flex;
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center;
      -webkit-box-pack: center;
          -ms-flex-pack: center;
              justify-content: center; }
      .elementor-popup__display-settings_controls_group__icon img {
        width: 35px; }
    .elementor-popup__display-settings_controls_group .elementor-control {
      padding: 0;
      margin: 0; }
      .elementor-popup__display-settings_controls_group .elementor-control:nth-child(2) {
        width: 230px; }
        .elementor-popup__display-settings_controls_group .elementor-control:nth-child(2) h3 {
          font-size: 16px;
          font-weight: 400; }
      .elementor-popup__display-settings_controls_group .elementor-control:not(:nth-child(2)) .elementor-control-title:not(:empty) {
        width: 75px; }
      .elementor-popup__display-settings_controls_group .elementor-control:not(:last-child) {
        margin-right: 25px; }
      .elementor-popup__display-settings_controls_group .elementor-control-type-slider .elementor-control-input-wrapper {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex; }
      .elementor-popup__display-settings_controls_group .elementor-control-type-slider .elementor-slider-input {
        width: 45%; }
      .elementor-popup__display-settings_controls_group .elementor-control-type-switcher .elementor-control-field {
        -webkit-box-pack: end;
            -ms-flex-pack: end;
                justify-content: flex-end; }
  .elementor-popup__display-settings .elementor-control-type-section {
    display: none; }
  .elementor-popup__display-settings__group-toggle {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1; }

#elementor-popup-timing__controls .select2-selection {
  min-height: 27px; }

#elementor-popup-timing__controls .select2-selection__rendered {
  line-height: 1; }

#elementor-popup-timing__controls .select2-selection__choice {
  font-size: 10px; }

#elementor-popup__timing-controls-group--url .elementor-control-url_url .elementor-control-input-wrapper {
  width: 200px; }

#elementor-popup__timing-controls-group--sources .elementor-control-sources_sources .elementor-control-input-wrapper {
  width: 300px; }

#elementor-popup__timing-controls-group--devices .elementor-control-devices_devices .elementor-control-input-wrapper {
  width: 200px; }

#elementor-popup__timing-controls-group--logged_in .elementor-control-logged_in_roles .elementor-control-input-wrapper {
  width: 195px; }

#elementor-popup__timing-controls-group--browsers .elementor-control-browsers_browsers .elementor-control-input-wrapper {
  width: 100px; }

#elementor-popup__timing-controls-group--browsers .elementor-control-browsers_browsers_options .elementor-control-input-wrapper {
  width: 200px; }

#elementor-popup-settings-introduction {
  position: absolute;
  z-index: 1;
  background-color: #fff;
  color: #556068;
  -webkit-box-shadow: -4px -3px 20px 1px rgba(0, 0, 0, 0.07);
          box-shadow: -4px -3px 20px 1px rgba(0, 0, 0, 0.07);
  height: 110px;
  width: 260px;
  padding: 20px 30px;
  border-radius: 3px; }
  #elementor-popup-settings-introduction:before {
    content: '';
    position: absolute;
    border: solid transparent;
    border-width: 5px 7px;
    border-left-color: #fff;
    right: -14px;
    top: 83%; }
  #elementor-popup-settings-introduction .dialog-close-button {
    top: 10px;
    left: 10px;
    font-size: 13px; }
  #elementor-popup-settings-introduction .dialog-header {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    font-size: 14px;
    font-weight: 500; }
    #elementor-popup-settings-introduction .dialog-header i {
      color: #39b54a;
      font-size: 23px;
      margin-left: 10px; }
  #elementor-popup-settings-introduction .dialog-message {
    margin-top: 10px; }
/*# sourceMappingURL=editor-rtl.css.map */assets/css/frontend-msie.css000064400001414535150755004320012140 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
@charset "UTF-8";
.elementor-bg-transform .elementor-bg {
  will-change: transform; }

.elementor-bg-transform-zoom-in:hover .elementor-bg {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2); }

.elementor-bg-transform-zoom-out .elementor-bg {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2); }

.elementor-bg-transform-zoom-out:hover .elementor-bg {
  -webkit-transform: scale(1);
      -ms-transform: scale(1);
          transform: scale(1); }

.elementor-bg-transform-move-left .elementor-bg {
  -webkit-transform: scale(1.2) translateX(8%);
      -ms-transform: scale(1.2) translateX(8%);
          transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-left:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateX(-8%);
      -ms-transform: scale(1.2) translateX(-8%);
          transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right .elementor-bg {
  -webkit-transform: scale(1.2) translateX(-8%);
      -ms-transform: scale(1.2) translateX(-8%);
          transform: scale(1.2) translateX(-8%); }

.elementor-bg-transform-move-right:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateX(8%);
      -ms-transform: scale(1.2) translateX(8%);
          transform: scale(1.2) translateX(8%); }

.elementor-bg-transform-move-up .elementor-bg {
  -webkit-transform: scale(1.2) translateY(8%);
      -ms-transform: scale(1.2) translateY(8%);
          transform: scale(1.2) translateY(8%); }

.elementor-bg-transform-move-up:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateY(-8%);
      -ms-transform: scale(1.2) translateY(-8%);
          transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down .elementor-bg {
  -webkit-transform: scale(1.2) translateY(-8%);
      -ms-transform: scale(1.2) translateY(-8%);
          transform: scale(1.2) translateY(-8%); }

.elementor-bg-transform-move-down:hover .elementor-bg {
  -webkit-transform: scale(1.2) translateY(8%);
      -ms-transform: scale(1.2) translateY(8%);
          transform: scale(1.2) translateY(8%); }

/*---------------------------------------------------------------------------*/
.elementor-animated-content {
  --translate: 0, 0; }
  .elementor-animated-content:hover .elementor-animated-item--grow {
    -webkit-transform: scale(1.1);
        -ms-transform: scale(1.1);
            transform: scale(1.1); }
  .elementor-animated-content:hover .elementor-animated-item--shrink {
    -webkit-transform: scale(0.85);
        -ms-transform: scale(0.85);
            transform: scale(0.85); }
  .elementor-animated-content:hover .elementor-animated-item--shrink-contained {
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1); }
  .elementor-animated-content:hover .elementor-animated-item--enter-zoom-out, .elementor-animated-content:hover .elementor-animated-item--enter-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-in {
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1);
    opacity: 1; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out, .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in, .elementor-animated-content:hover .elementor-animated-item--fade-out {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-out {
    -webkit-transform: scale(0.2);
        -ms-transform: scale(0.2);
            transform: scale(0.2); }
  .elementor-animated-content:hover .elementor-animated-item--exit-zoom-in {
    -webkit-transform: scale(2);
        -ms-transform: scale(2);
            transform: scale(2); }
  .elementor-animated-content:hover .elementor-animated-item--enter-from-right, .elementor-animated-content:hover .elementor-animated-item--enter-from-left, .elementor-animated-content:hover .elementor-animated-item--enter-from-top, .elementor-animated-content:hover .elementor-animated-item--enter-from-bottom {
    opacity: 1;
    -webkit-transform: translateY(0) translateX(0);
        -ms-transform: translateY(0) translateX(0);
            transform: translateY(0) translateX(0); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right {
    -webkit-transform: translateX(1000px);
        -ms-transform: translateX(1000px);
            transform: translateX(1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-left {
    -webkit-transform: translateX(-1000px);
        -ms-transform: translateX(-1000px);
            transform: translateX(-1000px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-top {
    -webkit-transform: translateY(-600px);
        -ms-transform: translateY(-600px);
            transform: translateY(-600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    -webkit-transform: translateY(600px);
        -ms-transform: translateY(600px);
            transform: translateY(600px); }
  .elementor-animated-content:hover .elementor-animated-item--exit-to-right, .elementor-animated-content:hover .elementor-animated-item--exit-to-left, .elementor-animated-content:hover .elementor-animated-item--exit-to-top, .elementor-animated-content:hover .elementor-animated-item--exit-to-bottom {
    opacity: 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-right {
    -webkit-transform: translateX(30px);
        -ms-transform: translateX(30px);
            transform: translateX(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-left {
    -webkit-transform: translateX(-30px);
        -ms-transform: translateX(-30px);
            transform: translateX(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-up {
    -webkit-transform: translateY(-30px);
        -ms-transform: translateY(-30px);
            transform: translateY(-30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-down {
    -webkit-transform: translateY(30px);
        -ms-transform: translateY(30px);
            transform: translateY(30px); }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-right {
    --translate: 8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-left {
    --translate: -8%, 0; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-top {
    --translate: 0, -8%; }
  .elementor-animated-content:hover .elementor-animated-item--move-contained-bottom {
    --translate: 0, 8%; }
  .elementor-animated-content *[class^="elementor-animated-item"] {
    will-change: transform, opacity; }
  .elementor-animated-content .elementor-animated-item--shrink-contained {
    -webkit-transform: scale(1.17);
        -ms-transform: scale(1.17);
            transform: scale(1.17); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-in {
    -webkit-transform: scale(0.2);
        -ms-transform: scale(0.2);
            transform: scale(0.2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out {
    -webkit-transform: scale(2);
        -ms-transform: scale(2);
            transform: scale(2); }
  .elementor-animated-content .elementor-animated-item--enter-zoom-out, .elementor-animated-content .elementor-animated-item--enter-zoom-in, .elementor-animated-content .elementor-animated-item--fade-in {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-zoom-out, .elementor-animated-content .elementor-animated-item--exit-zoom-in, .elementor-animated-content .elementor-animated-item--fade-out {
    opacity: 1;
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1); }
  .elementor-animated-content .elementor-animated-item--enter-from-right {
    -webkit-transform: translateX(1000px);
        -ms-transform: translateX(1000px);
            transform: translateX(1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-left {
    -webkit-transform: translateX(-1000px);
        -ms-transform: translateX(-1000px);
            transform: translateX(-1000px); }
  .elementor-animated-content .elementor-animated-item--enter-from-top {
    -webkit-transform: translateY(-600px);
        -ms-transform: translateY(-600px);
            transform: translateY(-600px); }
  .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    -webkit-transform: translateY(500px);
        -ms-transform: translateY(500px);
            transform: translateY(500px); }
  .elementor-animated-content .elementor-animated-item--enter-from-right, .elementor-animated-content .elementor-animated-item--enter-from-left, .elementor-animated-content .elementor-animated-item--enter-from-top, .elementor-animated-content .elementor-animated-item--enter-from-bottom {
    opacity: 0; }
  .elementor-animated-content .elementor-animated-item--exit-to-right, .elementor-animated-content .elementor-animated-item--exit-to-left, .elementor-animated-content .elementor-animated-item--exit-to-top, .elementor-animated-content .elementor-animated-item--exit-to-bottom {
    opacity: 1;
    -webkit-transform: translateY(0) translateX(0);
        -ms-transform: translateY(0) translateX(0);
            transform: translateY(0) translateX(0); }
  .elementor-animated-content .elementor-animated-item--move-contained-right, .elementor-animated-content .elementor-animated-item--move-contained-left, .elementor-animated-content .elementor-animated-item--move-contained-top, .elementor-animated-content .elementor-animated-item--move-contained-bottom {
    -webkit-transform: scale(1.2) translate(var(--translate));
        -ms-transform: scale(1.2) translate(var(--translate));
            transform: scale(1.2) translate(var(--translate)); }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-widget.elementor-global-widget:hover {
  outline: 1px solid #fec449; }

.elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings {
  background-image: -webkit-gradient(linear, left bottom, left top, from(#feb416), to(#fec449));
  background-image: -webkit-linear-gradient(bottom, #feb416, #fec449);
  background-image: -o-linear-gradient(bottom, #feb416, #fec449);
  background-image: linear-gradient(to top, #feb416, #fec449); }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting:hover {
    background-color: #feb416; }
  .elementor-editor-active .elementor.elementor-edit-mode .elementor-global-widget .elementor-editor-widget-settings .elementor-editor-element-setting.elementor-editor-element-save {
    display: none; }

body.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  width: 100%;
  padding: 0; }

body.rtl.woocommerce #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce div.product .elementor-widget-woocommerce-product-images div.images, body.rtl.woocommerce-page #content div.product .elementor-widget-woocommerce-product-images div.images,
body.rtl.woocommerce-page div.product .elementor-widget-woocommerce-product-images div.images {
  float: none;
  padding: 0; }

.woocommerce div.product.elementor form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor form.cart.variations_form .woocommerce-variation-add-to-cart {
  margin: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap; }

.woocommerce div.product.elementor .quantity .qty {
  vertical-align: top;
  margin-right: 0; }

.woocommerce div.product.elementor .quantity + .button {
  margin-left: 10px; }

.woocommerce div.product.elementor .woocommerce-variation-add-to-cart .quantity input {
  height: 100%; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
  margin-right: initial; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart:not(.grouped_form):not(.variations_form) button,
.woocommerce div.product.elementor .elementor-add-to-cart--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
  -ms-flex-preferred-size: auto;
      flex-basis: auto; }

.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form),
.woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-right: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%; }

@media (max-width: 1024px) {
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-right: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    -ms-flex-preferred-size: auto;
        flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-right: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-tablet--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      -ms-flex-preferred-size: 100%;
          flex-basis: 100%; } }

@media (max-width: 767px) {
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: start;
        -ms-flex-pack: start;
            justify-content: flex-start; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart {
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) div.quantity,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
    margin-right: initial; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-left form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-right form.cart.variations_form .woocommerce-variation-add-to-cart button, .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart:not(.grouped_form):not(.variations_form) button,
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-center form.cart.variations_form .woocommerce-variation-add-to-cart button {
    -ms-flex-preferred-size: auto;
        flex-basis: auto; }
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form),
  .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) div.quantity,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart div.quantity {
      margin-right: auto; }
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart:not(.grouped_form):not(.variations_form) button,
    .woocommerce div.product.elementor .elementor-add-to-cart-mobile--align-justify form.cart.variations_form .woocommerce-variation-add-to-cart button {
      -ms-flex-preferred-size: 100%;
          flex-basis: 100%; } }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-info button.button.alt.elementor-button {
  background-color: #5bc0de; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-success button.button.alt.elementor-button {
  background-color: #5cb85c; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-warning button.button.alt.elementor-button {
  background-color: #f0ad4e; }

.woocommerce div.product.elementor .elementor-widget-wc-add-to-cart.elementor-button-danger button.button.alt.elementor-button {
  background-color: #d9534f; }

.elementor-widget-wc-add-to-cart .quantity {
  display: inline-block; }

.elementor-widget-wc-add-to-cart.elementor-align-center form.cart {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-widget-wc-add-to-cart.elementor-align-right form.cart {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor-widget-wc-add-to-cart.elementor-align-left form.cart {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.woocommerce div.product.elementor {
  /*  Reset WC tabs style  */
  /*  End Reset WC tabs style  */ }
  .woocommerce div.product.elementor ul.tabs:before {
    position: static;
    content: none;
    width: auto;
    bottom: auto;
    left: auto;
    border-bottom: 0;
    z-index: auto; }
  .woocommerce div.product.elementor ul.tabs {
    margin: 0; }
    .woocommerce div.product.elementor ul.tabs li {
      padding: 0; }
      .woocommerce div.product.elementor ul.tabs li a {
        padding: .8em 1.2em;
        line-height: 1; }
    .woocommerce div.product.elementor ul.tabs li:after,
    .woocommerce div.product.elementor ul.tabs li:before {
      border: 0;
      position: static;
      bottom: auto;
      width: auto;
      height: auto;
      content: none;
      -webkit-box-sizing: border-box;
              box-sizing: border-box; }
  .woocommerce div.product.elementor .woocommerce-tabs .panel {
    margin: 0;
    padding: 20px;
    border-radius: 0;
    border-width: 0;
    border-top: 1px solid #d3ced2;
    -webkit-box-shadow: none;
            box-shadow: none;
    margin-top: -1px; }

.woocommerce div.product.elementor .elementor-product-price-block-yes .price del,
.woocommerce div.product.elementor .elementor-product-price-block-yes .price ins {
  display: block; }

.elementor-widget-woocommerce-product-meta .detail-container {
  position: relative; }
  .elementor-widget-woocommerce-product-meta .detail-container:after {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%; }

.elementor-widget-woocommerce-product-meta .detail-label {
  font-weight: bold; }

.elementor-woo-meta--view-inline .product_meta {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap; }
  .elementor-woo-meta--view-inline .product_meta .detail-container:after {
    width: auto;
    left: auto;
    right: auto;
    position: absolute;
    height: 100%;
    top: 50%;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%);
    border-top: 0;
    border-bottom: 0;
    border-right: 0;
    border-left-width: 1px;
    border-style: solid;
    right: -8px; }

.elementor-woo-meta--view-table .product_meta {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column; }
  .elementor-woo-meta--view-table .product_meta .detail-container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .elementor-woo-meta--view-table .product_meta .detail-label {
    min-width: 108px; }

.elementor-woo-meta--view-stacked .product_meta .detail-container {
  display: block; }

.woocommerce div.product.elementor .woocommerce-product-rating {
  margin-bottom: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.woocommerce div.product.elementor .star-rating {
  margin-top: 0; }

.elementor-product-rating--align-left .woocommerce-product-rating {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-product-rating--align-right .woocommerce-product-rating {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor-product-rating--align-center .woocommerce-product-rating {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-product-rating--align-justify .woocommerce-product-rating .woocommerce-review-link {
  margin-left: auto; }

.elementor-products-grid ul.products.elementor-grid {
  display: grid;
  margin: 0;
  grid-column-gap: 20px;
  grid-row-gap: 40px; }
  .elementor-products-grid ul.products.elementor-grid:before, .elementor-products-grid ul.products.elementor-grid:after {
    content: none;
    display: none; }
  .elementor-products-grid ul.products.elementor-grid li.product {
    width: auto;
    padding: 0;
    margin: 0;
    float: none; }
    .elementor-products-grid ul.products.elementor-grid li.product .onsale {
      padding: 0;
      display: none; }
    .elementor-products-grid ul.products.elementor-grid li.product a.woocommerce-loop-product__link {
      display: block;
      position: relative; }

.elementor-products-grid:not(.show-heading-yes) .products > h2 {
  display: none; }

.elementor-products-grid nav.woocommerce-pagination {
  margin-top: 40px; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul {
  border: none 0; }

.elementor-products-grid:not(.elementor-show-pagination-border-yes) nav.woocommerce-pagination ul li {
  border-right: none 0;
  border-left: none 0; }

.elementor-product-loop-item--align-left ul.products li.product .star-rating {
  margin-right: auto; }

.elementor-product-loop-item--align-right ul.products li.product .star-rating {
  margin-left: auto; }

.elementor-product-loop-item--align-center ul.products li.product .star-rating {
  margin-right: auto;
  margin-left: auto; }

.woocommerce .elementor-element.elementor-products-grid ul.products li.product {
  width: auto; }

.woocommerce div.product .elementor-element.elementor-products-grid .related.products ul.products li.product,
.woocommerce div.product .elementor-element.elementor-products-grid .upsells.products ul.products li.product {
  width: auto; }

@media (min-width: 1025px) {
  .elementor-widget-wc-archive-products .woocommerce.columns-2 ul.products {
    grid-template-columns: repeat(2, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-3 ul.products {
    grid-template-columns: repeat(3, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-4 ul.products {
    grid-template-columns: repeat(4, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-5 ul.products {
    grid-template-columns: repeat(5, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-6 ul.products {
    grid-template-columns: repeat(6, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-7 ul.products {
    grid-template-columns: repeat(7, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-8 ul.products {
    grid-template-columns: repeat(8, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-9 ul.products {
    grid-template-columns: repeat(9, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-10 ul.products {
    grid-template-columns: repeat(10, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-11 ul.products {
    grid-template-columns: repeat(11, 1fr); }
  .elementor-widget-wc-archive-products .woocommerce.columns-12 ul.products {
    grid-template-columns: repeat(12, 1fr); } }

@media (max-width: 1024px) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(3, 1fr); } }

@media (max-width: 767px) {
  .elementor-widget-wc-archive-products .products {
    grid-template-columns: repeat(2, 1fr); } }

.elementor.product .woocommerce-product-gallery__trigger + .woocommerce-product-gallery__wrapper {
  overflow: hidden; }

.woocommerce .elementor-widget-woocommerce-product-images span.onsale {
  padding: 0; }

.elementor-menu-cart__wrapper {
  text-align: var(--main-alignment, left); }

.elementor-menu-cart__toggle_wrapper {
  display: inline-block;
  position: relative; }

.elementor-menu-cart__toggle {
  display: inline-block; }
  .elementor-menu-cart__toggle .elementor-button {
    background-color: var(--toggle-button-background-color, transparent);
    color: var(--toggle-button-text-color, #818a91);
    border-style: var(--toggle-button-border-type, solid);
    border-width: var(--toggle-button-border-width, 1px);
    border-color: var(--toggle-button-border-color, #818a91);
    border-radius: var(--toggle-button-border-radius, 0px);
    display: -webkit-inline-box;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    padding: var(--toggle-icon-padding, 12px 24px); }
    .elementor-menu-cart__toggle .elementor-button:hover {
      color: var(--toggle-button-hover-text-color, #818a91);
      background-color: var(--toggle-button-hover-background-color, transparent);
      border-color: var(--toggle-button-hover-border-color, #818a91); }
      .elementor-menu-cart__toggle .elementor-button:hover .elementor-button-icon {
        color: var(--toggle-button-icon-hover-color, #818a91); }
  .elementor-menu-cart__toggle .elementor-button-text {
    margin-right: 0.3em; }
  .elementor-menu-cart__toggle .elementor-button-icon {
    position: relative;
    -webkit-transition: color 0.1s;
    -o-transition: color 0.1s;
    transition: color 0.1s;
    color: var(--toggle-button-icon-color, #818a91);
    font-size: var(--toggle-icon-size, inherit); }

.elementor-menu-cart--items-indicator-bubble .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: block;
  position: absolute;
  min-width: 1.6em;
  height: 1.6em;
  line-height: 1.5em;
  top: -0.7em;
  right: -0.7em;
  border-radius: 100%;
  color: var(--items-indicator-text-color, #fff);
  background-color: var(--items-indicator-background-color, #d9534f);
  text-align: center;
  font-size: 10px; }

.elementor-menu-cart--items-indicator-plain .elementor-menu-cart__toggle .elementor-button-icon[data-counter]:before {
  content: attr(data-counter);
  display: inline-block;
  font-weight: normal; }

.elementor-menu-cart__container {
  -webkit-transform: scale(1);
      -ms-transform: scale(1);
          transform: scale(1);
  overflow: hidden;
  position: fixed;
  z-index: 9998;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgba(0, 0, 0, 0.25);
  -webkit-transition: background-color 0.4s, -webkit-transform 0s;
  transition: background-color 0.4s, -webkit-transform 0s;
  -o-transition: background-color 0.4s, transform 0s;
  transition: background-color 0.4s, transform 0s;
  transition: background-color 0.4s, transform 0s, -webkit-transform 0s;
  text-align: left; }

.elementor-menu-cart__main {
  position: fixed;
  left: var(--side-cart-alignment-left, auto);
  right: var(--side-cart-alignment-right, 0);
  -webkit-transform: translateX(0);
      -ms-transform: translateX(0);
          transform: translateX(0);
  top: 0;
  bottom: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch;
  font-size: 14px;
  min-height: 200px;
  width: 350px;
  max-width: 100%;
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s;
  padding: var(--cart-padding, 20px 30px);
  background-color: var(--cart-background-color, #fff);
  -webkit-box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
          box-shadow: 0 0 20px rgba(0, 0, 0, 0.2);
  border-style: var(--cart-border-style, none);
  border-color: var(--cart-border-color, initial);
  border-radius: var(--cart-border-radius, 0px);
  margin-top: var(--mini-cart-spacing, 0px); }
  .elementor-menu-cart__main .widget_shopping_cart_content {
    height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }
    .elementor-menu-cart__main .widget_shopping_cart_content .woocommerce-mini-cart__empty-message {
      color: var(--empty-message-color, inherit);
      text-align: var(--empty-message-alignment, left); }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
  background-color: transparent;
  -webkit-transform: scale(0);
      -ms-transform: scale(0);
          transform: scale(0);
  -webkit-transition: background-color 0.4s, -webkit-transform 0s 0.4s;
  transition: background-color 0.4s, -webkit-transform 0s 0.4s;
  -o-transition: background-color 0.4s, transform 0s 0.4s;
  transition: background-color 0.4s, transform 0s 0.4s;
  transition: background-color 0.4s, transform 0s 0.4s, -webkit-transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container .dialog-lightbox-close-button {
    display: none; }

body.elementor-default .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
  overflow: hidden;
  opacity: 0;
  -webkit-transform: var(--side-cart-alignment-transform, translateX(100%));
      -ms-transform: var(--side-cart-alignment-transform, translateX(100%));
          transform: var(--side-cart-alignment-transform, translateX(100%)); }

.elementor-menu-cart__close-button {
  width: var(--cart-close-icon-size, 25px);
  height: var(--cart-close-icon-size, 25px);
  position: relative;
  margin: 0 0 20px;
  -ms-flex-item-align: end;
      align-self: flex-end;
  cursor: pointer;
  display: inline-block;
  font-family: eicons;
  font-size: 20px;
  line-height: 1;
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s; }
  .elementor-menu-cart__close-button:before, .elementor-menu-cart__close-button:after {
    content: '';
    position: absolute;
    height: 3px;
    width: 100%;
    top: 50%;
    left: 0;
    margin-top: -1px;
    background: var(--cart-close-button-color, #818a91);
    border-radius: 1px;
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s; }
  .elementor-menu-cart__close-button:hover::before, .elementor-menu-cart__close-button:hover::after {
    background: var(--cart-close-button-hover-color, #818a91); }
  .elementor-menu-cart__close-button::before {
    -webkit-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
            transform: rotate(45deg); }
  .elementor-menu-cart__close-button::after {
    -webkit-transform: rotate(-45deg);
        -ms-transform: rotate(-45deg);
            transform: rotate(-45deg); }

.elementor-menu-cart__products {
  max-height: calc(100vh - 250px);
  overflow: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch; }

.elementor-menu-cart__product {
  display: grid;
  grid-template-columns: 28% auto;
  grid-template-rows: var(--price-quantity-position--grid-template-rows, auto auto);
  position: relative;
  border-width: 0 0 var(--divider-width, 1px);
  border-bottom-style: var(--divider-style, solid);
  border-bottom-color: var(--divider-color, #D4D4D4); }
  .elementor-menu-cart__product .variation {
    display: grid;
    grid-template-columns: -webkit-max-content auto;
    grid-template-columns: max-content auto;
    margin: 10px 0; }
    .elementor-menu-cart__product .variation dt {
      grid-column-start: 1; }
    .elementor-menu-cart__product .variation dd {
      grid-column-start: 2;
      -webkit-margin-start: 5px;
              margin-inline-start: 5px; }
      .elementor-menu-cart__product .variation dd p {
        margin-bottom: 0; }
  .elementor-menu-cart__product-image {
    grid-row-start: 1;
    grid-row-end: 3;
    width: 100%; }
    .elementor-menu-cart__product-image img, .elementor-menu-cart__product-image a {
      display: block; }
  .elementor-menu-cart__product-name {
    grid-column-start: 2;
    grid-column-end: 3;
    margin: 0; }
    .elementor-menu-cart__product-name a {
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
  .elementor-menu-cart__product-price {
    grid-column-start: 2;
    grid-column-end: 3;
    -ms-flex-item-align: var(--price-quantity-position--align-self, end);
        align-self: var(--price-quantity-position--align-self, end);
    font-weight: 300;
    color: var(--product-price-color, #D4D4D4); }
  .elementor-menu-cart__product-name, .elementor-menu-cart__product-price {
    font-size: 14px;
    padding-left: 20px; }
  .elementor-menu-cart__product-remove {
    color: #818a91;
    width: var(--remove-item-button-size, 22px);
    height: var(--remove-item-button-size, 22px);
    border-radius: var(--remove-item-button-size, 22px);
    border: 1px solid var(--remove-item-button-color, #D4D4D4);
    text-align: center;
    overflow: hidden;
    position: absolute;
    right: 0;
    bottom: 20px;
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s; }
    .elementor-menu-cart__product-remove:hover {
      border: 1px solid var(--remove-item-button-hover-color, #D4D4D4); }
      .elementor-menu-cart__product-remove:hover::before, .elementor-menu-cart__product-remove:hover::after {
        background: var(--remove-item-button-hover-color, #D4D4D4); }
    .elementor-menu-cart__product-remove:before, .elementor-menu-cart__product-remove:after {
      content: '';
      position: absolute;
      height: 1px;
      width: 50%;
      top: 50%;
      left: 25%;
      margin-top: -1px;
      background: var(--remove-item-button-color, #D4D4D4);
      z-index: 1;
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
    .elementor-menu-cart__product-remove::before {
      -webkit-transform: rotate(45deg);
          -ms-transform: rotate(45deg);
              transform: rotate(45deg); }
    .elementor-menu-cart__product-remove::after {
      -webkit-transform: rotate(-45deg);
          -ms-transform: rotate(-45deg);
              transform: rotate(-45deg); }
    .elementor-menu-cart__product-remove > a {
      display: block;
      z-index: 2;
      width: 100%;
      height: 100%;
      overflow: hidden;
      opacity: 0;
      position: absolute; }
      .elementor-menu-cart__product-remove > a.remove_from_cart_button {
        display: var(--remove-from-cart-button, block); }
      .elementor-menu-cart__product-remove > a.elementor_remove_from_cart_button {
        display: var(--elementor-remove-from-cart-button, none); }

.elementor-menu-cart__product:last-child {
  border: none; }

.elementor-menu-cart__product:not(:first-of-type), .elementor-menu-cart__subtotal, .elementor-menu-cart__footer-buttons {
  padding-top: var(--product-divider-gap, 20px); }

.elementor-menu-cart__product {
  padding-right: 30px; }

.elementor-menu-cart__product, .elementor-menu-cart__subtotal {
  padding-bottom: var(--product-divider-gap, 20px); }

.elementor-menu-cart__subtotal {
  font-size: 20px;
  text-align: var(--menu-cart-subtotal-text-align, center);
  font-weight: 600;
  color: var(--menu-cart-subtotal-color, inherit);
  border-style: var(--subtotal-divider-style, solid);
  border-width: var(--subtotal-divider-top-width, 1px) var(--subtotal-divider-right-width, 1px) var(--subtotal-divider-bottom-width, 1px) var(--subtotal-divider-left-width, 1px);
  border-color: var(--subtotal-divider-color, #D4D4D4); }

.elementor-menu-cart__footer-buttons {
  font-size: 20px;
  text-align: var(--cart-footer-buttons-alignment-text-align, center);
  display: var(--cart-footer-buttons-alignment-display, grid);
  grid-template-columns: var(--cart-footer-layout, 1fr 1fr);
  margin-top: var(--cart-buttons-position-margin, 0);
  grid-column-gap: var(--space-between-buttons, 10px);
  grid-row-gap: var(--space-between-buttons, 10px); }
  .elementor-menu-cart__footer-buttons .elementor-button {
    display: inline-block;
    border-radius: var(--cart-footer-buttons-border-radius, 0px);
    height: -webkit-fit-content;
    height: -moz-fit-content;
    height: fit-content; }
    .elementor-menu-cart__footer-buttons .elementor-button--view-cart {
      display: var(--view-cart-button-display, inline-block);
      color: var(--view-cart-button-text-color, #fff);
      padding: var(--view-cart-button-padding, 15px);
      background-color: var(--view-cart-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--view-cart:hover {
        color: var(--view-cart-button-hover-text-color, #fff);
        background-color: var(--view-cart-button-hover-background-color, #818a91); }
    .elementor-menu-cart__footer-buttons .elementor-button--checkout {
      display: var(--checkout-button-display, inline-block);
      color: var(--checkout-button-text-color, #fff);
      padding: var(--checkout-button-padding, 15px);
      background-color: var(--checkout-button-background-color, #818a91); }
      .elementor-menu-cart__footer-buttons .elementor-button--checkout:hover {
        color: var(--checkout-button-hover-text-color, #fff);
        background-color: var(--checkout-button-hover-background-color, #818a91); }
    @media (max-width: 767px) {
      .elementor-menu-cart__footer-buttons .elementor-button {
        padding-left: 10px;
        padding-right: 10px; } }

/* The following is all to apply settings from the controls */
.elementor-widget-woocommerce-menu-cart {
  /* Fix to prevent the cart modal flash when using the typography controls */
  /* Fix for short-lived legacy cart type */ }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-subtotal-yes) .elementor-menu-cart__toggle .elementor-button-text {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--empty-indicator-hide .elementor-menu-cart__toggle .elementor-button-icon[data-counter="0"]:before {
    content: none; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e3'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e4'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--bag-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e5'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e6'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e7'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--basket-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e8'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-light .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8e9'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-medium .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8ea'; }
  .elementor-widget-woocommerce-menu-cart.toggle-icon--cart-solid .elementor-menu-cart__toggle .elementor-button-icon i:before {
    content: '\e8eb'; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product {
    padding-left: 0;
    padding-right: 0;
    grid-template-columns: 25% auto; }
  .elementor-widget-woocommerce-menu-cart:not(.elementor-menu-cart--show-remove-button-yes) .elementor-menu-cart__product-remove {
    display: none; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__product-remove {
    top: 0;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--top .elementor-menu-cart__products .cart_item:not(:first-of-type) .elementor-menu-cart__product-remove {
    top: 20px;
    bottom: auto; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--middle .elementor-menu-cart__product-remove {
    -webkit-transform: translateY(50%);
        -ms-transform: translateY(50%);
            transform: translateY(50%);
    bottom: 50%; }
  .elementor-widget-woocommerce-menu-cart.remove-item-position--bottom .elementor-menu-cart__product-remove {
    top: auto;
    bottom: 20px; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart {
    /* The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
			and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
      position: absolute;
      z-index: 89;
      width: auto;
      height: auto;
      overflow: visible;
      top: 100%;
      bottom: auto;
      background: none;
      min-width: 330px;
      left: 0;
      right: auto;
      -webkit-transform: scale(1);
          -ms-transform: scale(1);
              transform: scale(1);
      -webkit-transition: background-color 0.4s, -webkit-transform 0s;
      transition: background-color 0.4s, -webkit-transform 0s;
      -o-transition: background-color 0.4s, transform 0s;
      transition: background-color 0.4s, transform 0s;
      transition: background-color 0.4s, transform 0s, -webkit-transform 0s; }
    .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__main {
      width: auto;
      height: auto;
      position: relative;
      top: auto;
      bottom: auto;
      right: auto;
      left: auto;
      overflow: visible;
      -webkit-transform: translateY(0);
          -ms-transform: translateY(0);
              transform: translateY(0);
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
    @media (max-width: 767px) {
      .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart .elementor-menu-cart__container {
        min-width: 300px; } }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__container {
    -webkit-transform: scale(0);
        -ms-transform: scale(0);
            transform: scale(0);
    -webkit-transition: background-color 0.4s, -webkit-transform 0s 0.4s;
    transition: background-color 0.4s, -webkit-transform 0s 0.4s;
    -o-transition: background-color 0.4s, transform 0s 0.4s;
    transition: background-color 0.4s, transform 0s 0.4s;
    transition: background-color 0.4s, transform 0s 0.4s, -webkit-transform 0s 0.4s; }
  body.elementor-default .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-mini-cart:not(.elementor-menu-cart--shown) .elementor-menu-cart__main {
    opacity: 0;
    -webkit-transform: translateY(-10px);
        -ms-transform: translateY(-10px);
            transform: translateY(-10px); }
  .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown {
    opacity: 1;
    /* This keeps mini-cart panels above other widgets so there's no flash when using the typography controls.
		The sticky setting in Elementor uses z-index 99 so we use 89 to keep it below sticky headers but above all other content
		and still allow 10 layers if 3rd party want to insert content between ours. */ }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown .elementor-menu-cart__container {
      z-index: 9998; }
    .elementor-edit-area-active .elementor-widget-woocommerce-menu-cart.elementor-widget.elementor-loading.elementor-menu-cart--shown.elementor-menu-cart--cart-type-mini-cart {
      z-index: 89; }
  .elementor-widget-woocommerce-menu-cart.elementor-menu-cart--cart-type-dropdown .elementor-menu-cart__container {
    display: none; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-checkout-page {
  background-color: transparent;
  font-family: Roboto, sans-serif;
  font-size: 14px;
  line-height: 21px;
  color: #818a91;
  /* one column layout */
  /* override theme defaults for themes that have hover background colors on these elements. The hover background colors do not play well with the widget's initial design. */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-checkout-page.e-checkout-layout-one-column .e-checkout__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-checkout-page ::-webkit-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page ::-moz-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page ::-ms-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > td,
  .elementor-widget-woocommerce-checkout-page table tbody tr:hover > th {
    background-color: transparent; }
  .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: #f7f7f7;
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: #f7f7f7;
      border-color: var(--forms-fields-focus-border-color, initial);
      -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
           -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
              transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-checkout-page .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-checkout-page .select2-container--open .select2-dropdown--below {
    background-color: #f7f7f7; }
  .elementor-widget-woocommerce-checkout-page .e-description {
    color: var(--sections-descriptions-color, #818a91);
    padding-bottom: var(--sections-descriptions-spacing, 0px);
    font-size: 14px;
    font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section {
    margin-bottom: 24px; }
    .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-section .e-checkout-secondary-title {
      text-align: var(--login-title-alignment, left); }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-login-nudge {
    margin-top: var(--sections-secondary-title-spacing, 24px);
    margin-bottom: 15px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor {
    margin-top: var(--sections-secondary-title-spacing, 24px); }
  .elementor-widget-woocommerce-checkout-page .e-coupon-box {
    margin-top: 24px; }
  .elementor-widget-woocommerce-checkout-page .e-coupon-anchor-description {
    color: var(--forms-labels-color, #818a91);
    margin-bottom: var(--forms-label-spacing, 3px); }
  .elementor-widget-woocommerce-checkout-page .e-login-wrap {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-start {
      -webkit-box-flex: 75%;
          -ms-flex: 75%;
              flex: 75%; }
    .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
      -webkit-box-flex: 20%;
          -ms-flex: 20%;
              flex: 20%;
      text-align: right; }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .e-login-wrap {
        display: block; }
        .elementor-widget-woocommerce-checkout-page .e-login-wrap-end {
          text-align: left;
          margin-top: 15px; }
          .elementor-widget-woocommerce-checkout-page .e-login-wrap-end label.e-login-label {
            display: none; } }
  .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    margin-top: 6px; }
    .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
      margin-bottom: 0;
      font-size: 12px; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .e-login-actions-wrap-end .lost_password {
          font-size: 11px; } }
  .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
    width: 90%;
    /* 90% to match the design */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .e-apply-coupon {
        width: auto; } }
  .elementor-widget-woocommerce-checkout-page .e-checkout__container {
    display: grid;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    grid-template-columns: 56% auto;
    /* column widths - to match the design */
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch;
    grid-column-gap: var(--sections-margin, 24px);
    grid-row-gap: var(--sections-margin, 24px); }
  @media (max-width: 1024px) {
    .elementor-widget-woocommerce-checkout-page .e-checkout__container {
      grid-template-columns: repeat(1, 1fr); } }
  .elementor-widget-woocommerce-checkout-page .e-checkout-secondary-title {
    color: var(--sections-secondary-title-color, #818a91);
    margin-bottom: 0; }
  .elementor-widget-woocommerce-checkout-page .e-woocommerce-coupon-nudge {
    text-align: var(--coupon-title-alignment, left); }
  .elementor-widget-woocommerce-checkout-page #ship-to-different-address {
    margin-top: 13px;
    padding-left: var(--shipping-heading-padding-start, 30px); }
    .elementor-widget-woocommerce-checkout-page #ship-to-different-address span {
      font-weight: 400; }
  .elementor-widget-woocommerce-checkout-page a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-checkout-page a:hover {
      color: var(--links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-checkout-page .woocommerce {
    /* Need to use these specific selectors to override WooCommerce CSS */
    /* Need the <button> selector here so that we can target .woocommerce-button
		without being overwritten by WooCommerce's button.button selector.
		We are also targeting .woocommerce-button because none of this styling should
		apply to the Purchase button. Only The Login/Apply coupon button. */
    /* Main Sections styling start */
    /* Main Sections styling end */
    /* Styling for everything classified as 'Messages' start */
    /* Styling for everything classified as 'Messages' end */ }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      padding-left: var(--forms-columns-gap-padding, 0px);
      padding-right: var(--forms-columns-gap-padding, 0px);
      margin-left: var(--forms-columns-gap-margin, 0px);
      margin-right: var(--forms-columns-gap-margin, 0px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row label,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row label {
        color: var(--forms-labels-color, #818a91);
        margin-bottom: var(--forms-label-spacing, 3px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select,
      .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea {
        color: var(--forms-fields-normal-color, #818a91);
        background-color: #f7f7f7;
        border-radius: var(--forms-fields-border-radius, 0px);
        padding: var(--forms-fields-padding, 16px);
        font-size: 14px;
        border: none;
        font-weight: 400; }
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor .form-row textarea:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row .input-text:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row select:focus,
        .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row textarea:focus {
          color: var(--forms-fields-focus-color, #818a91);
          background-color: #f7f7f7;
          border-color: var(--forms-fields-focus-border-color, #818a91);
          -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
               -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                  transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-anchor #billing_address_1_field,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box #billing_address_1_field {
      margin-bottom: 5px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .create-account,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box .form-row {
      /* need to use !important here to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 0 !important; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .input-radio,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form__label-for-checkbox span {
      position: relative;
      top: 2px;
      color: var(--sections-checkboxes-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label,
    .elementor-widget-woocommerce-checkout-page .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .wc_payment_method label {
      display: inline; }
    .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #6F6F6F);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: 1rem;
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce button.woocommerce-button:hover {
        color: var(--forms-buttons-hover-text-color, #6F6F6F);
        -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
      margin-right: 1%; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .woocommerce #coupon_code {
          width: 100%;
          margin-right: 0;
          margin-bottom: 15px; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-info {
      border-top-color: transparent;
      background-color: transparent;
      padding: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-privacy-policy-text p {
      font-weight: 400;
      font-size: 12px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login-toggle .woocommerce-info {
      font-weight: 400;
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-woocommerce-login-section,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout__order_review,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-coupon-box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment,
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce .shipping_address,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      background: var(--sections-background-color, #ffffff);
      border-radius: var(--sections-border-radius, 3px);
      padding: var(--sections-padding, 16px 30px);
      margin: var(--sections-margin, 0 0 24px 0);
      border-style: var(--sections-border-type, solid);
      border-color: var(--sections-border-color, #D4D4D4);
      border-width: 1px;
      display: block; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
      display: var(--additional-information-display, none); }
    @media (min-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-additional-fields {
        margin: var(--sections-margin, 0); } }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout #payment .payment_box,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text,
    .elementor-widget-woocommerce-checkout-page .woocommerce .e-checkout-message {
      color: var(--sections-messages-color, #818a91);
      font-weight: 400; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-privacy-policy-text p {
      margin-top: 25px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-1 {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #customer_details .col2-set .col-2 {
      padding-top: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce #order_review_heading {
      text-align: var(--order-review-title-alignment, left); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table {
      margin-bottom: 0;
      border: 0;
      font-size: 14px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead {
        background-color: transparent; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table thead tr th {
          padding-top: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td {
        color: #000000; }
        .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tbody td .product-quantity {
          font-weight: normal; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tfoot td {
        color: #818a91; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table th {
        border: 0;
        padding-left: 0;
        padding-bottom: 15px;
        padding-top: 15px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total th,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total tr,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table .order-total td {
        padding-bottom: 0; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-checkout-page .woocommerce .shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td {
      font-weight: 400;
      color: var(--order-summary-items-color, #000000);
      border-bottom-color: var(--order-summary-items-divider-color, #818a91);
      border-bottom-width: var(--order-summary-items-divider-weight, 0px);
      border-bottom-style: solid; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-name {
        padding-right: 40px;
        max-width: 150px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .cart_item td.product-total {
        vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table th {
      padding-top: var(--order-summary-rows-gap-top, 15px);
      padding-bottom: var(--order-summary-rows-gap-bottom, 15px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table thead th,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table tfoot th {
      color: var(--order-summary-totals-color, #818a91);
      vertical-align: top; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total td,
    .elementor-widget-woocommerce-checkout-page .woocommerce .woocommerce-checkout-review-order-table .order-total th {
      border-top-color: var(--order-summary-totals-divider-color, #818a91);
      border-top-width: var(--order-summary-totals-divider-weight, 0px);
      border-top-style: solid; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-totals td {
      max-width: 70px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce h3 {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      margin-bottom: var(--sections-title-spacing, 30px);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row > span {
      font-weight: 400;
      font-size: 14px;
      margin-bottom: 3px;
      color: #818a91; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
      /* use 48% to match the design. Default WC CSS uses 47% */
      width: 48%; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row .input-checkbox {
      vertical-align: middle;
      margin: 0 5px 0 0; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields h3 {
      text-align: var(--billing-details-title-alignment, left); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row {
      margin-bottom: var(--forms-rows-gap, 5px); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-billing-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-shipping-fields .form-row:last-child, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .woocommerce-account-fields .form-row:last-child {
        margin-bottom: 15px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout.login {
      margin-top: -8px;
      z-index: 999;
      background: #ffffff;
      border-top-width: 0;
      position: relative;
      margin-bottom: 0;
      color: #818a91; }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-first, .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .form-row-last {
        width: 100%; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-coupon-toggle {
      display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
      width: 85%;
      /* 85% to match the design */ }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .woocommerce-form-login__submit {
          width: 35%;
          /* 35% to match the design */ } }
    .elementor-widget-woocommerce-checkout-page .woocommerce-additional-fields h3 {
      background: var(--additional-fields-title-alignment, left); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-shipping-fields .shipping_address {
      margin-bottom: var(--sections-margin, 20px); }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment {
      margin-top: 24px;
      padding: 15px 25px 25px; }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods {
        border-bottom: none;
        padding: 0; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box {
          background-color: #f7f7f7; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods .payment_box:before {
            display: none; }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li {
          line-height: 21px; }
          .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
            padding-left: 15px;
            font-size: 12px; }
            @media (max-width: 1024px) {
              .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label a {
                float: none;
                font-size: 11px;
                padding-left: 10px; } }
          @media (max-width: 1024px) {
            .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .payment_methods li label img {
              width: 55px;
              /* 55px to match the design */ } }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .place-order {
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        -webkit-box-orient: vertical;
        -webkit-box-direction: normal;
            -ms-flex-direction: column;
                flex-direction: column;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        padding: 0;
        margin-bottom: 0;
        -webkit-box-align: var(--place-order-title-alignment, stretch);
            -ms-flex-align: var(--place-order-title-alignment, stretch);
                align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order {
        background-color: #5bc0de;
        width: var(--purchase-button-width, auto);
        float: none;
        color: var(--purchase-button-normal-text-color, #ffffff);
        min-height: auto;
        padding: var(--purchase-button-padding, 1em 1em);
        border-radius: var(--purchase-button-border-radius, 3px); }
        .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment #place_order:hover {
          background-color: #5bc0de;
          color: var(--purchase-button-hover-text-color, #ffffff);
          border-color: var(--purchase-button-hover-border-color, #5bc0de);
          -webkit-transition-duration: var(--purchase-button-hover-transition-duration, 0.3s);
               -o-transition-duration: var(--purchase-button-hover-transition-duration, 0.3s);
                  transition-duration: var(--purchase-button-hover-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-checkout-page .woocommerce-checkout #payment .woocommerce-info:before {
        display: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-1,
    .elementor-widget-woocommerce-checkout-page .woocommerce-checkout .col2-set .col-2 {
      width: auto;
      float: none; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
      display: grid;
      grid-template-columns: auto auto;
      /*columns widths*/
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center; }
      .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
        text-align: right; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid {
          display: block; }
          .elementor-widget-woocommerce-checkout-page .woocommerce .coupon-container-grid .coupon-col-2 {
            text-align: left; } }
    .elementor-widget-woocommerce-checkout-page .woocommerce #account_password_field {
      /* need to override the style controls,
			these items must not be affected by the controls */
      margin-bottom: 10px; }
    .elementor-widget-woocommerce-checkout-page .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000);
      /* We need to specify these values so that the 'Items' Typography control does not affect
			the 'Variations' */
      font-size: 14px;
      font-style: normal;
      text-transform: none;
      letter-spacing: normal;
      text-decoration: none;
      line-height: 21px; }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: #818a91; }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: #818a91; }

.elementor-widget-woocommerce-cart {
  /* one column layout */
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-cart.e-cart-layout-one-column .e-cart__container {
    grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart table tbody tr:hover > td,
  .elementor-widget-woocommerce-cart table tbody tr:hover > th {
    background-color: inherit; }
  .elementor-widget-woocommerce-cart .e {
    /* .e-clear is a class that is added between the cart sections to fix collapsing margins,
		especially when custom margins are being set by the Style Controls, then the margins could
		start overriding the other margin, leaving one margin */ }
    .elementor-widget-woocommerce-cart .e-clear {
      overflow: hidden;
      height: 0;
      width: 0; }
    .elementor-widget-woocommerce-cart .e-cart {
      /* Main sections styling start */
      /* Main sections styling end */
      /* one column layout */ }
      .elementor-widget-woocommerce-cart .e-cart-section {
        background-color: var(--sections-background-color, #ffffff);
        padding: var(--sections-padding, 16px 30px);
        margin: var(--sections-margin, 0 0 30px 0);
        border-radius: var(--sections-border-radius, 3px);
        border-width: 1px;
        border-style: var(--sections-border-type, solid);
        border-color: var(--sections-border-color, #D4D4D4); }
      @media (min-width: 1024px) {
        .elementor-widget-woocommerce-cart .e-cart-section:last-child {
          margin: var(--sections-margin, 0); } }
      .elementor-widget-woocommerce-cart .e-cart-content {
        color: var(--sections-descriptions-color, #818a91);
        font-size: 15px;
        font-weight: 400;
        line-height: 23px;
        letter-spacing: 0; }
      .elementor-widget-woocommerce-cart .e-cart__container {
        display: grid;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        grid-template-columns: 59% auto;
        /* 59% to match the required design */
        -webkit-box-align: stretch;
            -ms-flex-align: stretch;
                align-items: stretch;
        grid-column-gap: var(--sections-margin, 30px);
        grid-row-gap: var(--sections-margin, 30px); }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-cart .e-cart__container {
          grid-template-columns: repeat(1, 1fr); } }
      .elementor-widget-woocommerce-cart .e-cart-layout-one-column .e-cart__container {
        grid-template-columns: auto; }
  .elementor-widget-woocommerce-cart .select2-container {
    margin-bottom: 4px; }
    .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 0px);
      border: none;
      height: 45px; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, initial);
        -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__placeholder {
        color: var(--forms-fields-normal-color, #818a91); }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__rendered {
        color: var(--forms-fields-normal-color, #818a91);
        line-height: 45px;
        padding-left: 1rem;
        padding-right: 1rem; }
      .elementor-widget-woocommerce-cart .select2-container--default .select2-selection--single .select2-selection__arrow {
        height: 45px; }
    .elementor-widget-woocommerce-cart .select2-container--open .select2-dropdown--below {
      background-color: #f7f7f7; }
  .elementor-widget-woocommerce-cart .woocommerce {
    font-family: Roboto, sans-serif; }
    .elementor-widget-woocommerce-cart .woocommerce button.button {
      background-color: #ffffff;
      color: var(--forms-buttons-normal-text-color, #818a91);
      border-radius: var(--forms-buttons-border-radius, 3px);
      /* 0.88rem is used here so that this button will match the design layout from Product. */
      padding: var(--forms-buttons-padding, 0.88rem 2rem);
      width: var(--forms-buttons-width, auto);
      border-style: var(--forms-buttons-border-type, solid);
      border-color: var(--forms-buttons-border-color, #5bc0de);
      border-width: 2px; }
      .elementor-widget-woocommerce-cart .woocommerce button.button:hover {
        color: var(--forms-buttons-hover-text-color, #818a91);
        -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
        border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce button.button.disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled] {
        /* 0.88rem is used here so that this button will match the design layout from Product. */
        padding: var(--forms-buttons-padding, 0.88rem 2rem);
        color: var(--forms-buttons-normal-text-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce button.button.disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled:hover, .elementor-widget-woocommerce-cart .woocommerce button.button:disabled[disabled]:hover {
          background-color: var(--forms-buttons-hover-background-color, #ffffff);
          color: var(--forms-buttons-hover-text-color, #818a91);
          -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
               -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                  transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
          border-color: var(--forms-buttons-hover-border-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li label {
      color: var(--sections-radio-buttons-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce #shipping_method li input {
      vertical-align: middle; }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-form {
      margin-top: var(--sections-descriptions-spacing, 15px); }
    .elementor-widget-woocommerce-cart .woocommerce .woocommerce-shipping-destination {
      color: var(--sections-descriptions-color, #818a91);
      margin-bottom: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tbody th, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tbody th {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td {
      text-align: left !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr.woocommerce-shipping-totals td::before {
        width: 100%;
        margin-bottom: 10px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td {
      text-align: right !important;
      /* need important here because Woo also has !important */ }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table_responsive tr td::before, .elementor-widget-woocommerce-cart .woocommerce-page .cart_totals table.shop_table_responsive tr td::before {
        content: attr(data-title);
        font-weight: 700;
        float: left; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      text-align: var(--totals-title-alignment, left); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td {
      padding-top: var(--totals-rows-gap-top, 12px);
      padding-bottom: var(--totals-rows-gap-bottom, 9px); }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td:before,
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table td .woocommerce-Price-amount {
        color: var(--totals-color, #818a91);
        font-weight: 700; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals table.shop_table tr.order-total td {
      border-top-color: var(--totals-divider-color, #818a91);
      border-top-width: var(--totals-divider-weight, 0); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals .form-row {
      margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-cart .woocommerce .product-name a {
      color: var(--product-link-normal-color, #000000); }
      .elementor-widget-woocommerce-cart .woocommerce .product-name a:hover {
        color: var(--product-link-hover-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .form-row {
      padding: 3px 0;
      margin: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .input-text,
    .elementor-widget-woocommerce-cart .woocommerce select {
      color: var(--forms-fields-normal-color, #818a91);
      background-color: #f7f7f7;
      border-radius: var(--forms-fields-border-radius, 3px);
      border: none;
      padding: var(--forms-fields-padding, 16px);
      font-size: 14px; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::-webkit-input-placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::-webkit-input-placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::-moz-placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::-moz-placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::-ms-input-placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::-ms-input-placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text::placeholder,
      .elementor-widget-woocommerce-cart .woocommerce select::placeholder {
        color: var(--forms-fields-normal-color, inherit);
        font-family: inherit;
        opacity: .6; }
      .elementor-widget-woocommerce-cart .woocommerce .input-text:focus,
      .elementor-widget-woocommerce-cart .woocommerce select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        background-color: #f7f7f7;
        border-color: var(--forms-fields-focus-border-color, transparent);
        -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-webkit-input-placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::-webkit-input-placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-moz-placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::-moz-placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::-ms-input-placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::-ms-input-placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
        .elementor-widget-woocommerce-cart .woocommerce .input-text:focus::placeholder,
        .elementor-widget-woocommerce-cart .woocommerce select:focus::placeholder {
          color: var(--forms-fields-focus-color, #818a91); }
    .elementor-widget-woocommerce-cart .woocommerce .input-text.qty {
      background-color: transparent;
      color: var(--order-summary-color, #000000);
      border-width: var(--order-summary-quantity-border-weight, 1px);
      border-style: solid;
      border-color: var(--order-summary-quantity-border-color, #D4D4D4);
      border-radius: 3px;
      padding: 1px 2px;
      text-align: left;
      font-size: 14px;
      min-height: 28px;
      max-height: 28px; }
    .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout {
      padding-bottom: 0;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-orient: vertical;
      -webkit-box-direction: normal;
          -ms-flex-direction: column;
              flex-direction: column;
      -ms-flex-wrap: wrap;
          flex-wrap: wrap;
      -webkit-box-align: var(--place-order-title-alignment, stretch);
          -ms-flex-align: var(--place-order-title-alignment, stretch);
              align-items: var(--place-order-title-alignment, stretch); }
      .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button {
        padding: var(--checkout-button-padding, 15px 1em);
        width: var(--checkout-button-width, auto);
        font-size: 15px;
        text-align: center;
        color: var(--checkout-button-normal-text-color, #ffffff);
        background-color: #5bc0de;
        border-radius: var(--checkout-button-border-radius, 3px);
        min-height: auto;
        margin-bottom: 0; }
        .elementor-widget-woocommerce-cart .woocommerce .wc-proceed-to-checkout .checkout-button:hover {
          color: var(--checkout-button-hover-text-color, #ffffff);
          background-color: #5bc0de;
          border-color: var(--checkout-button-hover-border-color, #5bc0de);
          -webkit-transition-duration: var(--checkout-button-hover-transition-duration, 0.3s);
               -o-transition-duration: var(--checkout-button-hover-transition-duration, 0.3s);
                  transition-duration: var(--checkout-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-cart .woocommerce .remove {
      background: transparent;
      color: var(--order-summary-remove-icon-normal-color, #000000) !important;
      /* need important here because Woo also has !important */
      width: auto; }
      .elementor-widget-woocommerce-cart .woocommerce .remove:hover {
        background: transparent;
        color: var(--order-summary-remove-icon-hover-color, #5bc0de) !important;
        /* need important here because Woo also has !important */ }
    .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals {
      float: none;
      width: 100%; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals td {
        padding-left: 0; }
      .elementor-widget-woocommerce-cart .woocommerce .cart-collaterals .cart_totals .woocommerce-shipping-totals td {
        padding-right: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
      float: right;
      width: 100%; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon .form-row {
      padding: 0; }
    .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex; }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
        -webkit-box-flex: 2;
            -ms-flex: 2;
                flex: 2;
        padding-right: 30px; }
        @media (max-width: 1024px) {
          .elementor-widget-woocommerce-cart .woocommerce .coupon-col-start {
            padding-right: 0; } }
      .elementor-widget-woocommerce-cart .woocommerce .coupon-col-end {
        -webkit-box-flex: 1;
            -ms-flex: 1;
                flex: 1; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-cart .woocommerce .coupon-col {
          display: block; } }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-cart .woocommerce .coupon {
        margin: var(--sections-margin, 0); }
        .elementor-widget-woocommerce-cart .woocommerce .coupon #coupon_code {
          width: 100%;
          margin-right: 0;
          margin-bottom: 15px; }
        .elementor-widget-woocommerce-cart .woocommerce .coupon .button {
          width: 100%; } }
    .elementor-widget-woocommerce-cart .woocommerce table.shop_table {
      border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
        float: left;
        font-size: 14px;
        font-weight: 700; }
      @media (max-width: 1024px) {
        .elementor-widget-woocommerce-cart .woocommerce table.shop_table .button {
          float: none;
          width: 100%; } }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table th {
        border: 0 solid; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > td,
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table tr:nth-child(odd) > th {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .actions {
        padding: 16px 0 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table .product-remove a {
        display: inline-block; }
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table.cart tbody tr:last-child {
        display: var(--update-cart-automatically-display, table-row); }
    .elementor-widget-woocommerce-cart .woocommerce table.cart {
      margin-bottom: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart img {
        width: 55px;
        height: auto;
        display: block; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-top: var(--order-summary-rows-gap-top, 20px);
        padding-right: 20px;
        padding-bottom: var(--order-summary-rows-gap-bottom, 20px);
        padding-left: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td span {
          color: var(--order-summary-color, #000000);
          font-size: 14px;
          font-weight: 400; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
          border-top-width: var(--order-summary-items-divider-weight, 1px);
          border-top-style: solid;
          border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
          @media (max-width: 768px) {
            .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-thumbnail, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-price, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-quantity, .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-subtotal, .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
              border-top-width: 0; } }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-remove {
          padding-left: 0;
          padding-right: 0; }
      @media (min-width: 767px) {
        .elementor-widget-woocommerce-cart .woocommerce table.cart tbody tr:first-child td {
          border-top: none; } }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-remove {
        position: relative; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart.product-name {
        padding-right: 0; }
      .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
        border-top-width: var(--order-summary-items-divider-weight, 1px);
        border-top-color: var(--order-summary-items-divider-color, #D4D4D4); }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
          border-top: none; } }
    @media (max-width: 768px) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart td {
        padding-left: 0;
        padding-right: 0; } }
    @media (max-width: 767px) {
      .elementor-widget-woocommerce-cart .woocommerce table.cart {
        padding: 0; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart tr {
          padding: 16px 28px; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart tr:first-child {
            border-top: none; }
        .elementor-widget-woocommerce-cart .woocommerce table.cart td {
          padding-left: 0;
          padding-right: 0; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td:first-child {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.product-name {
            border-top: none; }
          .elementor-widget-woocommerce-cart .woocommerce table.cart td.actions {
            padding: 0; } }
    .elementor-widget-woocommerce-cart .woocommerce a {
      color: var(--links-normal-color, #5bc0de); }
      .elementor-widget-woocommerce-cart .woocommerce a:hover {
        color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2,
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      font-size: 14px;
      font-weight: 700;
      margin-top: 0;
      padding-top: 0;
      padding-bottom: 8px;
      padding-left: 0;
      padding-right: 20px; }
    .elementor-widget-woocommerce-cart .woocommerce .cart_totals h2 {
      margin-bottom: var(--sections-title-spacing, 1rem);
      color: var(--sections-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart th {
      padding-bottom: var(--order-summary-title-spacing, 8px);
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .cart td::before {
      color: var(--order-summary-title-color, #000000); }
    .elementor-widget-woocommerce-cart .woocommerce .shipping-calculator-button::after {
      display: none; }
    .elementor-widget-woocommerce-cart .woocommerce .product-name .variation {
      color: var(--order-summary-variations-color, #000000); }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-cart .woocommerce table.shop_table_responsive tr:nth-child(2n) td, .elementor-widget-woocommerce-cart .woocommerce-page table.shop_table_responsive tr:nth-child(2n) td {
        background-color: transparent; }
      .elementor-widget-woocommerce-cart .woocommerce .cart_totals .shop_table_responsive td {
        padding-left: 0; } }

/* Select2 dropdown options are outside of the widget container */
.e-woo-select2-wrapper .select2-results__option {
  font-family: Roboto, sans-serif;
  font-size: 14px;
  color: var(--forms-fields-normal-color, #818a91); }
  .e-woo-select2-wrapper .select2-results__option:focus {
    color: var(--forms-fields-focus-color, #818a91);
    border-color: var(--forms-fields-focus-border-color, #818a91);
    -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
         -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
            transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }

.elementor-widget-woocommerce-my-account {
  font-family: Roboto, sans-serif;
  color: #818a91;
  /* Make select2 appear like other inputs start */
  /* Make select2 appear like other inputs end */ }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .shop_table, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .shop_table {
    border: none;
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    background-color: var(--sections-background-color, #ffffff); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__dashboard .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-account .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__orders .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__downloads .woocommerce-MyAccount-content-wrapper {
    padding: var(--sections-padding, 16px 30px 3px 30px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab .woocommerce-address-fields,
  .elementor-widget-woocommerce-my-account .e-my-account-tab address {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content {
    border: 0; }
    .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-MyAccount-content-wrapper, .elementor-widget-woocommerce-my-account .e-my-account-tab__edit-address .woocommerce-MyAccount-content-wrapper {
      padding: 0;
      border: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    margin-bottom: 40px; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .woocommerce-table--order-downloads,
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .order_details {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px 3px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px); }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content > div > p {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single {
    color: var(--forms-fields-normal-color, #818a91);
    background-color: var(--forms-fields-normal-background-color, #f7f7f7);
    border-radius: var(--forms-fields-border-radius, 0px);
    border: none;
    height: 45px; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single:focus {
      color: var(--forms-fields-focus-color, #818a91);
      background-color: var(--forms-fields-focus-background-color, #f7f7f7);
      border-color: var(--forms-fields-focus-border-color, initial);
      -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
           -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
              transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__placeholder {
      color: var(--forms-fields-normal-color, #818a91); }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__rendered {
      color: var(--forms-fields-normal-color, #818a91);
      line-height: 45px;
      padding-left: 1rem;
      padding-right: 1rem; }
    .elementor-widget-woocommerce-my-account .select2-container--default .select2-selection--single .select2-selection__arrow {
      height: 45px; }
  .elementor-widget-woocommerce-my-account .select2-container--open .select2-dropdown--below {
    background-color: var(--forms-fields-normal-background-color, #f7f7f7); }
  .elementor-widget-woocommerce-my-account .woocommerce ::-webkit-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce ::-moz-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce ::-ms-input-placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce ::placeholder {
    color: var(--forms-fields-normal-color, inherit);
    font-family: inherit;
    opacity: .6; }
  .elementor-widget-woocommerce-my-account .woocommerce-message {
    font-size: 14px; }
  .elementor-widget-woocommerce-my-account .woocommerce address {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce a {
    color: var(--links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a:hover {
      color: var(--links-hover-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce a.button.alt:hover {
      background-color: initial; }
    .elementor-widget-woocommerce-my-account .woocommerce a.button:hover {
      background-color: initial; }
  .elementor-widget-woocommerce-my-account .woocommerce em {
    font-size: 12px;
    color: var(--login-messages-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .form-row {
    padding-left: var(--forms-columns-gap-padding-left, 0px);
    padding-right: var(--forms-columns-gap-padding-right, 0px);
    margin-left: var(--forms-columns-gap-margin-left, 0px);
    margin-right: var(--forms-columns-gap-margin-right, 0px);
    margin-bottom: var(--forms-rows-gap, 6px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row label {
      color: var(--forms-labels-color, #818a91);
      margin-bottom: var(--forms-label-spacing, 0px); }
    .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text,
    .elementor-widget-woocommerce-my-account .woocommerce .form-row select {
      color: var(--forms-fields-normal-color, #818a91);
      border-radius: var(--forms-fields-border-radius, 0px);
      padding: var(--forms-fields-padding, 16px);
      background: #f7f7f7;
      border: none;
      font-size: 14px; }
      .elementor-widget-woocommerce-my-account .woocommerce .form-row .input-text:focus,
      .elementor-widget-woocommerce-my-account .woocommerce .form-row select:focus {
        color: var(--forms-fields-focus-color, #818a91);
        border-color: var(--forms-fields-focus-border-color, #818a91);
        -webkit-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-fields-focus-transition-duration, 0.3s);
                transition-duration: var(--forms-fields-focus-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce #billing_address_1_field {
    margin-bottom: 5px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-privacy-policy-text,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-privacy-policy-text {
    margin-bottom: 15px;
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(2),
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    color: var(--login-messages-color, #818a91);
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .login .woocommerce-LostPassword,
  .elementor-widget-woocommerce-my-account .woocommerce .register .woocommerce-LostPassword {
    font-size: 12px;
    margin-bottom: 0px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    width: 50%;
    /* 50% to match the design - it would normally be full width */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword p {
      color: var(--general-text-color, #818a91); }
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .form-row-first {
      width: 100%; }
  .elementor-widget-woocommerce-my-account .woocommerce .login,
  .elementor-widget-woocommerce-my-account .woocommerce .register,
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword {
    background-color: var(--sections-background-color, #ffffff);
    padding: var(--sections-padding, 16px 30px);
    border-style: var(--sections-border-type, solid);
    border-color: var(--sections-border-color, #D4D4D4);
    border-width: 1px;
    border-radius: var(--sections-border-radius, 3px);
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .login .button,
    .elementor-widget-woocommerce-my-account .woocommerce .register .button,
    .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button {
      background: #5bc0de;
      border: none;
      color: var(--forms-buttons-normal-text-color, #ffffff);
      border-radius: var(--forms-buttons-border-radius, 3px);
      padding: var(--forms-buttons-padding, 12px 32px); }
      .elementor-widget-woocommerce-my-account .woocommerce .login .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .register .button:hover,
      .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-ResetPassword .button:hover {
        color: var(--forms-buttons-hover-text-color, #ffffff);
        -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
                transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce .login p:nth-child(3) {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce .register p:nth-child(2) {
    margin-top: 10px;
    font-size: 12px; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__input-checkbox {
    vertical-align: middle; }
  .elementor-widget-woocommerce-my-account .woocommerce p:last-of-type {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-form__label-for-checkbox span {
    color: var(--checkboxes-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tr,
  .elementor-widget-woocommerce-my-account .woocommerce td,
  .elementor-widget-woocommerce-my-account .woocommerce th {
    border: none; }
  .elementor-widget-woocommerce-my-account .woocommerce h2,
  .elementor-widget-woocommerce-my-account .woocommerce h3 {
    color: var(--typography-section-titles-color, #000000);
    margin-top: 0;
    margin-bottom: var(--section-title-spacing, 45px);
    font-weight: 400; }
  .elementor-widget-woocommerce-my-account .woocommerce strong {
    color: var(--general-text-color, #000000); }
    .elementor-widget-woocommerce-my-account .woocommerce strong.wc-item-meta-label {
      color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .wc-item-meta {
    color: var(--variations-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .product-quantity {
    font-weight: 400;
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce .woocommerce-order-downloads {
    margin-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
    float: left;
    width: 25%;
    /* 25% to match the design */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation {
        width: 100%; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul {
      -webkit-padding-start: 0;
              padding-inline-start: 0; }
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li {
        list-style-type: none;
        margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
        display: inline-block;
        width: 100%;
        /* add a Divider between the tabs that is outside of the margins */ }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li::after {
          content: "";
          display: block;
          width: 100%;
          background-color: var(--tabs-divider-color, #818a91);
          height: var(--tabs-divider-weight, 0px);
          position: relative;
          top: calc(var(--tabs-spacing, 2px) / 2); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.is-active a {
          color: var(--tabs-active-color, #5bc0de);
          background: #eceeef;
          border-color: var(--tabs-active-border-color, transparent); }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
          font-style: normal;
          font-weight: bold;
          font-size: 14px;
          color: var(--tabs-normal-color, #818a91);
          display: block;
          padding: var(--tabs-padding, 12px 20px);
          text-align: var(--tabs-alignment, start);
          background: #f7f7f7;
          border-radius: var(--tabs-border-radius, 0px);
          border-style: var(--tabs-border-type, solid);
          border-color: var(--tabs-border-color, transparent);
          border-width: 0px; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a:hover {
            color: var(--tabs-hover-color, #5bc0de);
            border-color: var(--tabs-hover-border-color, transparent); }
          @media (max-width: 1024px) {
            .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li a {
              padding: var(--tabs-padding, 10px); } }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--dashboard {
          margin-top: 0; }
        .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout {
          margin-bottom: 0; }
          .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout::after {
            display: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
    float: right;
    width: 75%;
    /* 75% to match the design */
    padding: 0;
    padding-left: var(--tab-content-spacing, 6%);
    /* 6% to match the design */ }
    @media (max-width: 1024px) {
      .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content {
        width: 100%;
        padding: var(--tab-content-spacing, 6%) 0 0 0; } }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content-wrapper {
      font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content p:last-of-type {
      margin-bottom: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content h2:first-of-type {
      margin-top: 30px; }
    .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content mark {
      background-color: transparent;
      font-weight: bold;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce caption + thead tr:first-child th,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce colgroup + thead tr:first-child th {
    border-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child td,
  .elementor-widget-woocommerce-my-account .woocommerce thead:first-child tr:first-child th {
    border-top: 0;
    padding-left: 0;
    padding-top: 0;
    padding-bottom: var(--tables-titles-spacing, 9px); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(odd) > th,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > td,
  .elementor-widget-woocommerce-my-account .woocommerce tbody > tr:nth-child(even) > th {
    background-color: transparent;
    padding-left: 0;
    padding-top: var(--order-summary-rows-gap-top, 9px);
    padding-bottom: var(--order-summary-rows-gap-bottom, 9px);
    color: var(--tables-items-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce tbody .woocommerce-orders-table__cell.woocommerce-orders-table__cell-order-number > a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .shop_table {
    font-size: 14px; }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        -webkit-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
                transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table td, .elementor-widget-woocommerce-my-account .woocommerce .shop_table th {
      border-top-style: var(--tables-divider-border-type, solid);
      border-top-width: var(--tables-divider-border-width, 1px);
      border-top-color: var(--tables-divider-border-color, #D4D4D4); }
    .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th {
      color: var(--tables-title-color, #000000); }
      .elementor-widget-woocommerce-my-account .woocommerce .shop_table thead tr th span {
        color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot th,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details tfoot td {
    padding-left: 0;
    color: var(--tables-title-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a,
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a {
    color: var(--tables-links-normal-color, #5bc0de); }
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .download-product a:hover,
    .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-name a:hover {
      color: var(--tables-links-hover-color, #5bc0de); }
  .elementor-widget-woocommerce-my-account .woocommerce .order_details .product-purchase-note td {
    border-top: none;
    padding-top: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce .order-again .button {
    background: transparent;
    border: 2px solid #5bc0de;
    border-style: var(--tables-buttons-border-type, solid);
    border-color: var(--tables-buttons-border-color, #5bc0de);
    border-width: 2px;
    border-radius: var(--tables-button-border-radius, 3px);
    vertical-align: middle;
    color: var(--tables-button-normal-text-color, #818a91);
    margin-top: 0;
    margin-bottom: 0;
    padding: var(--tables-button-padding, 12px 32px); }
    .elementor-widget-woocommerce-my-account .woocommerce .order-again .button:hover {
      color: var(--tables-button-hover-text-color, #818a91);
      -webkit-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
           -o-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
              transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .title h3, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .title h3 {
    float: none; }
  .elementor-widget-woocommerce-my-account .woocommerce-Address address, .elementor-widget-woocommerce-my-account .woocommerce-Addresses address {
    padding: var(--sections-padding, 45px 30px 16px 30px); }
  .elementor-widget-woocommerce-my-account .woocommerce-Address .edit, .elementor-widget-woocommerce-my-account .woocommerce-Addresses .edit {
    float: left;
    position: absolute;
    margin-left: var(--edit-link-margin-start, 30px);
    margin-top: var(--edit-link-margin-top, 10px); }
  .elementor-widget-woocommerce-my-account .woocommerce .u-columns {
    margin-top: 20px; }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset {
    border: none;
    padding: 0;
    -webkit-margin-start: 0;
            margin-inline-start: 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm fieldset legend, .elementor-widget-woocommerce-my-account .woocommerce-address-fields fieldset legend {
      font-weight: 700;
      padding: 20px 0;
      color: var(--general-text-color, #000000); }
  .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button {
    background: #5bc0de;
    border: none;
    color: var(--forms-buttons-normal-text-color, #ffffff);
    border-radius: var(--forms-buttons-border-radius, 3px);
    padding: var(--forms-buttons-padding, 12px 32px);
    margin-top: 20px; }
    .elementor-widget-woocommerce-my-account .woocommerce-EditAccountForm .button:hover, .elementor-widget-woocommerce-my-account .woocommerce-address-fields .button:hover {
      color: var(--forms-buttons-hover-text-color, #ffffff);
      -webkit-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
           -o-transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s);
              transition-duration: var(--forms-buttons-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-pagination {
    padding: 16px 0; }
    .elementor-widget-woocommerce-my-account .woocommerce-pagination .button {
      background: transparent;
      border-style: var(--tables-buttons-border-type, solid);
      border-color: var(--tables-buttons-border-color, #5bc0de);
      border-radius: var(--tables-button-border-radius, 3px);
      border-width: 2px;
      vertical-align: middle;
      color: var(--tables-button-normal-text-color, #818a91);
      padding: var(--tables-button-padding, 5px 10px); }
      .elementor-widget-woocommerce-my-account .woocommerce-pagination .button:hover {
        color: var(--tables-button-hover-text-color, #818a91);
        -webkit-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
             -o-transition-duration: var(--tables-button-hover-transition-duration, 0.3s);
                transition-duration: var(--tables-button-hover-transition-duration, 0.3s); }
  .elementor-widget-woocommerce-my-account .woocommerce-OrderUpdates {
    color: var(--general-text-color, #818a91); }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-name.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .woocommerce-table__line-item.order_item .woocommerce-table__product-total.product-total.product-purchase-note-is-below {
    padding-bottom: 0; }
  .elementor-widget-woocommerce-my-account .e-my-account-tab__view-order .shop_table td {
    vertical-align: top;
    line-height: unset; }

.e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  float: none;
  width: 100%; }
  .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
    display: inline-block; }

.e-my-account-tabs-vertical .woocommerce-MyAccount-navigation {
  display: block; }

.e-my-account-tabs-vertical .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-navigation {
  display: none; }

.e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation {
  display: block; }
  .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: var(--tabs-container-justify-content, space-between);
        -ms-flex-pack: var(--tabs-container-justify-content, space-between);
            justify-content: var(--tabs-container-justify-content, space-between); }
    @media (max-width: 767px) {
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul {
        display: block; } }
    .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
      display: inline-block;
      width: var(--tab-width, 100%);
      padding: 0 calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2);
      margin: 0;
      border-right-color: var(--tabs-divider-color, #818a91);
      border-right-width: var(--tabs-divider-weight, 0px);
      border-right-style: solid; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li::after {
        display: none; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:first-of-type {
        padding-left: 0; }
      .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li:last-of-type {
        padding-right: 0;
        border-right-width: 0; }
      @media (max-width: 767px) {
        .e-my-account-tabs-horizontal .e-wc-account-tabs-nav .woocommerce-MyAccount-navigation ul li {
          margin: calc(var(--tabs-spacing, 2px) / 2) 0 calc(var(--tabs-spacing, 2px) / 2) 0;
          display: inline-block;
          width: 100%; } }

.e-my-account-tabs-horizontal .woocommerce-MyAccount-content {
  float: none;
  width: 100%;
  padding: var(--tab-content-spacing, 50px) 0 0 0; }

/**
 * Specific styling in the Editor.
 */
.elementor-editor-active,
.elementor-editor-preview {
  /**
	 * Prep for the js switching of tabs when in the editor.
	 */
  /**
	 * Disable all but the first 'View' order button as
	 * this is the only order loaded for preview purposes.
	 */ }
  .elementor-editor-active .elementor-widget-container,
  .elementor-editor-preview .elementor-widget-container {
    min-height: 1px; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-number a,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-number a {
    pointer-events: none; }
  .elementor-editor-active tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button,
  .elementor-editor-preview tr:not(:first-child) .woocommerce-orders-table__cell-order-actions .button {
    pointer-events: none;
    opacity: .3; }

/**
 * Hide all the other My Account pages' content in the Editor except the first one - dashboard page
 */
.elementor-editor-active .elementor-widget-woocommerce-my-account .woocommerce-MyAccount-content:not(:first-of-type) {
  display: none; }

.product .count {
  background-color: inherit; }

.elementor-widget-woocommerce-product-additional-information:not(.elementor-show-heading-yes) h2 {
  display: none; }

.woocommerce div.product.elementor form.cart div.product-addon {
  -ms-flex-preferred-size: 100%;
      flex-basis: 100%;
  -ms-flex-negative: 0;
      flex-shrink: 0; }

.e-sticky-right-column--active {
  position: -webkit-sticky;
  position: sticky;
  top: 0; }

.elementor-theme-builder-content-area {
  height: 400px; }

.elementor-location-header:before,
.elementor-location-footer:before {
  content: '';
  display: table;
  clear: both; }

.elementor-posts.elementor-posts--skin-archive_full_content article.elementor-post {
  display: block; }

.elementor-post-navigation-borders-yes .elementor-post-navigation.elementor-grid {
  color: #D4D4D4;
  border: none;
  border-top: 1px solid;
  border-bottom: 1px solid;
  padding-top: 10px;
  padding-bottom: 10px; }

.elementor-post-navigation-borders-yes .elementor-post-navigation__separator {
  height: 100%;
  width: 1px;
  margin: 0 auto;
  background-color: #D4D4D4; }

.elementor-post-navigation {
  overflow: hidden;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-post-navigation .post-navigation__arrow-wrapper {
    color: #D4D4D4; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-prev {
      font-size: 30px;
      padding-right: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper.post-navigation__arrow-next {
      font-size: 30px;
      padding-left: 15px; }
    .elementor-post-navigation .post-navigation__arrow-wrapper i {
      -webkit-transform: translateY(-5%);
          -ms-transform: translateY(-5%);
              transform: translateY(-5%); }
  .elementor-post-navigation .elementor-post-navigation__link__prev, .elementor-post-navigation .elementor-post-navigation__link__next {
    overflow: hidden; }
  .elementor-post-navigation .elementor-post-navigation__link a {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    max-width: 100%; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__next--label {
    text-transform: uppercase;
    font-size: 0.8em; }
  .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--title {
    font-size: 0.7em; }
  .elementor-post-navigation .post-navigation__prev--label, .elementor-post-navigation .post-navigation__prev--title, .elementor-post-navigation .post-navigation__next--label, .elementor-post-navigation .post-navigation__next--title {
    overflow: hidden;
    -o-text-overflow: ellipsis;
       text-overflow: ellipsis; }
  .elementor-post-navigation span.elementor-post-navigation__link__next {
    text-align: right; }
  .elementor-post-navigation span.elementor-post-navigation__link__next, .elementor-post-navigation span.elementor-post-navigation__link__prev {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }

.elementor-post-navigation .elementor-grid {
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between; }

.elementor-post-navigation .elementor-post-navigation__link {
  width: calc( 50% - ( 1px / 2 ));
  white-space: nowrap;
  overflow: hidden;
  -o-text-overflow: ellipsis;
     text-overflow: ellipsis; }

.elementor-post-navigation .elementor-post-navigation__separator-wrapper {
  text-align: center; }

.elementor-post-navigation .elementor-post-navigation__next {
  text-align: right; }
  .elementor-post-navigation .elementor-post-navigation__next a {
    float: right; }

.elementor-search-form {
  display: block;
  -webkit-transition: 0.2s;
  -o-transition: 0.2s;
  transition: 0.2s;
  /*------ Reset ------*/ }
  .elementor-search-form .e-font-icon-svg-container {
    width: 100%;
    height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }
  .elementor-search-form input[type="search"], .elementor-search-form button {
    margin: 0;
    border: 0;
    padding: 0;
    display: inline-block;
    vertical-align: middle;
    white-space: normal;
    background: none;
    line-height: 1;
    min-width: 0;
    font-size: 15px;
    -webkit-appearance: none;
    -moz-appearance: none; }
    .elementor-search-form input[type="search"]:focus, .elementor-search-form button:focus {
      outline: 0;
      color: inherit; }
  .elementor-search-form button {
    background-color: #818a91;
    font-size: var(--e-search-form-submit-icon-size, 16px);
    color: #fff;
    border-radius: 0; }
  .elementor-search-form__container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-transition: 0.2s;
    -o-transition: 0.2s;
    transition: 0.2s;
    overflow: hidden;
    border: 0 solid transparent;
    min-height: 50px; }
    .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      background: #eceeef; }
  .elementor-search-form__input {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
    color: #55595c;
    -webkit-transition: color 0.2s;
    -o-transition: color 0.2s;
    transition: color 0.2s; }
    .elementor-search-form__input::-webkit-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-ms-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input:-moz-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::-ms-input-placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
    .elementor-search-form__input::placeholder {
      color: inherit;
      font-family: inherit;
      opacity: 0.6; }
  .elementor-search-form__submit {
    -webkit-transition: color 0.2s, background 0.2s;
    -o-transition: color 0.2s, background 0.2s;
    transition: color 0.2s, background 0.2s;
    font-size: var(--e-search-form-submit-icon-size, 16px); }
    .elementor-search-form__submit svg {
      fill: var(--e-search-form-submit-text-color, #fff);
      width: var(--e-search-form-submit-icon-size, 16px);
      height: var(--e-search-form-submit-icon-size, 16px); }
  .elementor-search-form .elementor-search-form__submit, .elementor-search-form .elementor-search-form__submit:hover {
    color: var(--e-search-form-submit-text-color, #fff);
    border: none;
    border-radius: 0; }
  .elementor-search-form--button-type-text .elementor-search-form__submit {
    -ms-flex-negative: 0;
        flex-shrink: 0; }
  .elementor-search-form--skin-minimal .elementor-search-form__icon {
    opacity: 0.6;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: end;
        -ms-flex-pack: end;
            justify-content: flex-end;
    color: #55595c;
    fill: #55595c;
    font-size: var(--e-search-form-icon-size-minimal, 15px); }
    .elementor-search-form--skin-minimal .elementor-search-form__icon svg {
      width: var(--e-search-form-icon-size-minimal, 15px);
      height: var(--e-search-form-icon-size-minimal, 15px); }
  .elementor-search-form--skin-full_screen .elementor-search-form input[type="search"].elementor-search-form__input {
    font-size: 50px;
    text-align: center;
    border-style: solid;
    border-width: 0 0 1px 0;
    border-color: #fff;
    line-height: 1.5;
    color: #fff; }
  .elementor-search-form--skin-full_screen .elementor-search-form__toggle {
    display: inline-block;
    cursor: pointer;
    vertical-align: middle;
    color: var(--e-search-form-toggle-color, #494c4f);
    font-size: var(--e-search-form-toggle-size, 33px); }
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle i,
    .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container {
      position: relative;
      display: block;
      -webkit-transition: 0.2s;
      -o-transition: 0.2s;
      transition: 0.2s;
      width: var(--e-search-form-toggle-size, 33px);
      height: var(--e-search-form-toggle-size, 33px);
      background-color: var(--e-search-form-toggle-background-color, rgba(0, 0, 0, 0.05));
      border-style: solid;
      border-color: var(--e-search-form-toggle-color, #494c4f);
      border-width: var(--e-search-form-toggle-border-width, 0);
      border-radius: var(--e-search-form-toggle-border-radius, 3px); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        position: absolute;
        left: 50%;
        top: 50%;
        -webkit-transform: translate(-50%, -50%);
            -ms-transform: translate(-50%, -50%);
                transform: translate(-50%, -50%); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i:before,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container:before {
        font-size: var(--e-search-form-toggle-icon-size, 0.55em); }
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle i svg,
      .elementor-search-form--skin-full_screen .elementor-search-form__toggle .e-font-icon-svg-container svg {
        fill: var(--e-search-form-toggle-color, #494c4f);
        width: var(--e-search-form-toggle-icon-size, 0.55em);
        height: var(--e-search-form-toggle-icon-size, 0.55em); }
  .elementor-search-form--skin-full_screen .elementor-search-form__container {
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    position: fixed;
    z-index: 9998;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    height: 100vh;
    padding: 0 15%;
    background-color: rgba(0, 0, 0, 0.8); }
    .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) {
      overflow: hidden;
      opacity: 0;
      -webkit-transform: scale(0);
          -ms-transform: scale(0);
              transform: scale(0); }
      .elementor-search-form--skin-full_screen .elementor-search-form__container:not(.elementor-search-form--full-screen) .dialog-lightbox-close-button {
        display: none; }

.elementor-author-box {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }
  .elementor-author-box__avatar {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-right: 25px; }
    .elementor-author-box__avatar img {
      width: 100px;
      border-radius: 500px;
      -o-object-fit: cover;
         object-fit: cover; }
  .elementor-author-box__text {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    font-size: 17px; }
  .elementor-author-box__name {
    font-size: 24px;
    margin-bottom: 5px; }
  .elementor-author-box__bio {
    margin-bottom: 0.8em; }
    .elementor-author-box__bio p {
      margin-bottom: 0.8em; }
      .elementor-author-box__bio p:last-of-type {
        margin-bottom: 0; }
  .elementor-author-box--layout-image-left .elementor-author-box {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
    .elementor-author-box--layout-image-left .elementor-author-box__avatar {
      margin-left: 0;
      margin-right: 25px; }
  .elementor-author-box--layout-image-right .elementor-author-box {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
    .elementor-author-box--layout-image-right .elementor-author-box__avatar {
      margin-right: 0;
      margin-left: 25px; }
  .elementor-author-box--layout-image-above .elementor-author-box {
    display: block; }
    .elementor-author-box--layout-image-above .elementor-author-box__avatar {
      margin: 0 auto 15px;
      display: inline-block; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-left .elementor-author-box__avatar {
    margin-left: 0; }
  .elementor-author-box--layout-image-above.elementor-author-box--align-right .elementor-author-box__avatar {
    margin-right: 0; }
  .elementor-author-box--align-left .elementor-author-box {
    text-align: left; }
  .elementor-author-box--align-right .elementor-author-box {
    text-align: right; }
  .elementor-author-box--align-center .elementor-author-box {
    text-align: center; }

.elementor-button.elementor-author-box__button {
  border: solid 2px #55595c;
  font-size: 15px;
  font-weight: 100;
  padding: 10px 18px; }
  .elementor-button.elementor-author-box__button, .elementor-button.elementor-author-box__button:hover {
    background: transparent;
    color: #55595c; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above) .elementor-author-box__avatar {
  -ms-flex-item-align: start;
      align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-top .elementor-author-box__avatar {
  -ms-flex-item-align: start;
      align-self: flex-start; }

.elementor-widget-author-box:not(.elementor-author-box--layout-image-above).elementor-author-box--image-valign-middle .elementor-author-box__avatar {
  -ms-flex-item-align: center;
      align-self: center; }

.elementor-post-info__terms-list {
  display: inline-block; }

.elementor-post-info .elementor-icon-list-icon .elementor-avatar {
  border-radius: 100%; }

.elementor-widget-post-info.elementor-align-center .elementor-icon-list-item:after {
  margin: initial; }

.elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text {
  display: inline-block; }
  .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text a, .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-text span {
    display: inline; }

.elementor-widget-breadcrumbs {
  font-size: 0.85em; }
  .elementor-widget-breadcrumbs p {
    margin-bottom: 0; }

.elementor-sitemap-wrap {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-flow: row wrap;
          flex-flow: row wrap; }

.elementor-sticky--active {
  z-index: 99; }

[data-elementor-type="popup"]:not(.elementor-edit-area) {
  display: none; }

[data-elementor-type="popup"] .elementor-section-wrap:not(:empty) + #elementor-add-new-section {
  display: none; }

.elementor-popup-modal {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  pointer-events: none;
  background-color: transparent;
  -webkit-user-select: auto;
     -moz-user-select: auto;
      -ms-user-select: auto;
          user-select: auto; }
  .elementor-popup-modal .dialog-header, .elementor-popup-modal .dialog-buttons-wrapper {
    display: none; }
  .elementor-popup-modal .dialog-close-button {
    display: none;
    top: 20px;
    margin-top: 0;
    right: 20px;
    opacity: 1;
    z-index: 9999;
    pointer-events: all; }
    .elementor-popup-modal .dialog-close-button svg {
      fill: #373a3c;
      height: 1em;
      width: 1em; }
  .elementor-popup-modal .dialog-widget-content {
    width: initial;
    overflow: visible;
    max-width: 100%;
    max-height: 100%;
    border-radius: 0;
    -webkit-box-shadow: none;
            box-shadow: none;
    pointer-events: all; }
  .elementor-popup-modal .dialog-message {
    width: 640px;
    max-width: 100vw;
    max-height: 100vh;
    padding: 0;
    overflow: auto;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .elementor-popup-modal .elementor {
    width: 100%; }

.elementor-motion-effects-element, .elementor-motion-effects-layer {
  -webkit-transition-property: opacity, -webkit-transform;
  transition-property: opacity, -webkit-transform;
  -o-transition-property: transform, opacity;
  transition-property: transform, opacity;
  transition-property: transform, opacity, -webkit-transform;
  -webkit-transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
       -o-transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
          transition-timing-function: cubic-bezier(0, 0.33, 0.07, 1.03);
  -webkit-transition-duration: 1s;
       -o-transition-duration: 1s;
          transition-duration: 1s; }

.elementor-motion-effects-container {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  -webkit-transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x);
      -ms-transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x);
          transform-origin: var(--e-transform-origin-y) var(--e-transform-origin-x); }

.elementor-motion-effects-layer {
  position: absolute;
  top: 0;
  left: 0;
  background-repeat: no-repeat;
  -webkit-background-size: cover;
          background-size: cover; }

.elementor-motion-effects-perspective {
  -webkit-perspective: 1200px;
          perspective: 1200px; }

.elementor-widget-posts:after, .elementor-widget-archive-posts:after {
  display: none; }

.elementor-posts-container.elementor-posts-masonry {
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start; }

.elementor-posts-container:not(.elementor-posts-masonry) {
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch; }

.elementor-posts-container .elementor-post {
  padding: 0;
  margin: 0; }
  .elementor-posts-container .elementor-post__thumbnail {
    overflow: hidden; }
    .elementor-posts-container .elementor-post__thumbnail img {
      display: block;
      width: 100%;
      max-height: none;
      max-width: none;
      -webkit-transition: -webkit-filter 0.3s;
      transition: -webkit-filter 0.3s;
      -o-transition: filter 0.3s;
      transition: filter 0.3s;
      transition: filter 0.3s, -webkit-filter 0.3s; }
    .elementor-posts-container .elementor-post__thumbnail__link {
      position: relative;
      display: block;
      width: 100%; }

.elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0; }
  .elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail img {
    height: auto;
    position: absolute;
    top: calc( 50% + 1px);
    left: calc( 50% + 1px);
    -webkit-transform: scale(1.01) translate(-50%, -50%);
        -ms-transform: scale(1.01) translate(-50%, -50%);
            transform: scale(1.01) translate(-50%, -50%); }
  .elementor-posts-container.elementor-has-item-ratio .elementor-post__thumbnail.elementor-fit-height img {
    height: 100%;
    width: auto; }

.elementor-posts .elementor-post {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-transition-property: background, border, -webkit-box-shadow;
  transition-property: background, border, -webkit-box-shadow;
  -o-transition-property: background, border, box-shadow;
  transition-property: background, border, box-shadow;
  transition-property: background, border, box-shadow, -webkit-box-shadow;
  -webkit-transition-duration: 0.25s;
       -o-transition-duration: 0.25s;
          transition-duration: 0.25s; }
  .elementor-posts .elementor-post__title {
    font-size: 18px;
    margin: 0; }
  .elementor-posts .elementor-post__excerpt {
    margin-bottom: 10px; }
    .elementor-posts .elementor-post__excerpt p {
      margin: 0;
      line-height: 1.5em;
      font-size: 14px;
      color: #777; }
  .elementor-posts .elementor-post__meta-data {
    line-height: 1.3em;
    font-size: 12px;
    margin-bottom: 13px;
    color: #adadad; }
  .elementor-posts .elementor-post__read-more {
    font-size: 12px;
    font-weight: bold; }
  .elementor-posts .elementor-post__thumbnail {
    position: relative; }

.elementor-posts--skin-classic {
  display: grid;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap; }
  .elementor-posts--skin-classic:not(.elementor-posts-masonry) {
    -webkit-box-align: stretch;
        -ms-flex-align: stretch;
            align-items: stretch; }
  .elementor-posts--skin-classic .elementor-post {
    overflow: hidden; }
    .elementor-posts--skin-classic .elementor-post__text {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }

.elementor-posts--align-left .elementor-post {
  text-align: left; }

.elementor-posts--align-right .elementor-post {
  text-align: right; }

.elementor-posts--align-center .elementor-post {
  text-align: center; }

.elementor-posts--thumbnail-top .elementor-post {
  display: block;
  /*

			 used to be
			 align-self: flex-start;
			 until v2.1

			*/ }
  .elementor-posts--thumbnail-top .elementor-post__thumbnail__link {
    margin-bottom: 20px; }
  .elementor-posts--thumbnail-top .elementor-post__text {
    width: 100%; }

.elementor-posts--thumbnail-top.elementor-posts--align-left .elementor-post__thumbnail__link {
  margin-right: auto; }

.elementor-posts--thumbnail-top.elementor-posts--align-right .elementor-post__thumbnail__link {
  margin-left: auto; }

.elementor-posts--thumbnail-top.elementor-posts--align-center .elementor-post__thumbnail__link {
  margin-right: auto;
  margin-left: auto; }

.elementor-posts--thumbnail-left .elementor-post__thumbnail__link, .elementor-posts--thumbnail-right .elementor-post__thumbnail__link {
  -ms-flex-negative: 0;
      flex-shrink: 0;
  width: 25%; }

.elementor-posts--thumbnail-left .elementor-post__thumbnail__link {
  -webkit-box-ordinal-group: 1;
      -ms-flex-order: 0;
          order: 0;
  margin-right: 20px; }

.elementor-posts--thumbnail-right .elementor-post__thumbnail__link {
  -webkit-box-ordinal-group: 6;
      -ms-flex-order: 5;
          order: 5;
  margin-left: 20px; }

.elementor-posts--thumbnail-none .elementor-posts-container .elementor-post__thumbnail__link {
  display: none; }

.elementor-posts .elementor-post__card {
  overflow: hidden;
  position: relative;
  background-color: #fff;
  width: 100%;
  min-height: 100%;
  border-radius: 3px;
  border: 0 solid #818a91;
  -webkit-transition: all 0.25s;
  -o-transition: all 0.25s;
  transition: all 0.25s; }
  .elementor-posts .elementor-post__card .elementor-post__thumbnail {
    position: relative;
    transform-style: preserve-3d;
    -webkit-transform-style: preserve-3d; }
    .elementor-posts .elementor-post__card .elementor-post__thumbnail img {
      width: calc( 100% + 1px); }
  .elementor-posts .elementor-post__card .elementor-post__text {
    padding: 0 30px;
    margin-bottom: 0;
    margin-top: 20px; }
  .elementor-posts .elementor-post__card .elementor-post__read-more {
    margin-bottom: 20px;
    display: inline-block; }
  .elementor-posts .elementor-post__card .elementor-post__meta-data {
    padding: 15px 30px;
    margin-bottom: 0;
    border-top: 1px solid #eaeaea; }
    .elementor-posts .elementor-post__card .elementor-post__meta-data span + span:before {
      margin: 0 5px; }
  .elementor-posts .elementor-post__card .elementor-post__title {
    font-size: 21px; }
  .elementor-posts .elementor-post__card .elementor-post__excerpt {
    line-height: 1.7; }
  .elementor-posts .elementor-post__card .elementor-post__excerpt, .elementor-posts .elementor-post__card .elementor-post__title {
    margin-bottom: 25px; }
  .elementor-posts .elementor-post__card .elementor-post__badge, .elementor-posts .elementor-post__card .elementor-post__read-more {
    text-transform: uppercase; }

.elementor-posts .elementor-post__badge {
  position: absolute;
  top: 0;
  background: #818a91;
  color: #fff;
  font-size: 12px;
  padding: 0.6em 1.2em;
  line-height: 1;
  font-weight: 400;
  margin: 20px;
  border-radius: 999px; }

.elementor-posts .elementor-post__avatar {
  position: relative;
  padding: 0 30px;
  width: 100%;
  top: -25px;
  height: 0;
  pointer-events: none; }
  .elementor-posts .elementor-post__avatar img {
    border-radius: 50%;
    width: 60px;
    pointer-events: all;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%); }

.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card, .elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__card {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-posts--thumbnail-top .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data, .elementor-posts .elementor-posts--skin-cards:not(.elementor-posts-masonry) .elementor-post__meta-data {
  margin-top: auto; }

.elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar {
  padding-top: 0;
  position: static;
  height: auto; }
  .elementor-posts--thumbnail-none .elementor-post__card .elementor-post__avatar img.avatar {
    -webkit-transform: translateY(0);
        -ms-transform: translateY(0);
            transform: translateY(0);
    vertical-align: bottom; }

.elementor-posts--show-avatar .elementor-post__thumbnail__link {
  margin-bottom: 25px; }

.elementor-posts__hover-gradient .elementor-post__card .elementor-post__thumbnail__link:after {
  display: block;
  content: '';
  background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.35)), color-stop(75%, rgba(0, 0, 0, 0)));
  background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 75%);
  background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 75%);
  background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 75%);
  background-repeat: no-repeat;
  height: 100%;
  width: 100%;
  position: absolute;
  bottom: 0;
  opacity: 1;
  -webkit-transition: all 0.3s ease-out;
  -o-transition: all 0.3s ease-out;
  transition: all 0.3s ease-out; }

.elementor-posts__hover-gradient .elementor-post__card:hover .elementor-post__thumbnail__link:after {
  opacity: 0.5; }

.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img {
  height: 100%; }

.elementor-posts__hover-zoom-in .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: calc( 100% + 1px); }

.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img {
  height: 115%; }

.elementor-posts__hover-zoom-in .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: 115%; }

.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail.elementor-fit-height img {
  height: 115%; }

.elementor-posts__hover-zoom-out .elementor-post__card .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: 115%; }

.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail.elementor-fit-height img {
  height: 100%; }

.elementor-posts__hover-zoom-out .elementor-post__card:hover .elementor-post__thumbnail:not(.elementor-fit-height) img {
  width: calc( 100% + 1px); }

.elementor-posts__hover-zoom-out .elementor-post__thumbnail img, .elementor-posts__hover-zoom-in .elementor-post__thumbnail img {
  -webkit-transition: height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1), -webkit-filter 0.3s;
  transition: height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1), -webkit-filter 0.3s;
  -o-transition: filter 0.3s, height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1);
  transition: filter 0.3s, height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1);
  transition: filter 0.3s, height 1s cubic-bezier(0, 0.25, 0.07, 1), width 1s cubic-bezier(0, 0.25, 0.07, 1), -webkit-filter 0.3s; }

.elementor-card-shadow-yes .elementor-post__card {
  -webkit-box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.15);
          box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.15); }
  .elementor-card-shadow-yes .elementor-post__card:hover {
    -webkit-box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.15);
            box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.15); }

.elementor-posts--skin-full_content article {
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  overflow: hidden; }
  .elementor-posts--skin-full_content article .elementor-post__thumbnail {
    padding-bottom: 0; }

body.elementor-editor-active .elementor-posts--skin-full_content,
body.elementor-editor-active .elementor-posts--skin-archive_full_content {
  pointer-events: none; }
  body.elementor-editor-active .elementor-posts--skin-full_content .elementor-post__thumbnail__link,
  body.elementor-editor-active .elementor-posts--skin-archive_full_content .elementor-post__thumbnail__link {
    display: none; }

body.elementor-editor-active .elementor-posts--show-thumbnail .elementor-post__thumbnail__link {
  display: block; }

.elementor-portfolio__filters {
  list-style: none;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  padding: 0;
  margin: 0; }

.elementor-portfolio__filter {
  margin: 0;
  cursor: pointer;
  padding: 8px; }

.elementor-portfolio-item {
  -ms-flex-item-align: start;
      align-self: flex-start;
  -webkit-transition-property: opacity, -webkit-transform;
  transition-property: opacity, -webkit-transform;
  -o-transition-property: transform, opacity;
  transition-property: transform, opacity;
  transition-property: transform, opacity, -webkit-transform;
  -webkit-transition-timing-function: ease-in-out;
       -o-transition-timing-function: ease-in-out;
          transition-timing-function: ease-in-out;
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  overflow: hidden;
  margin: 0; }
  .elementor-portfolio-item__title {
    margin: 0;
    padding: 0;
    line-height: 1;
    font-size: 18px;
    color: #fff; }
  .elementor-portfolio-item__tags__separator:before {
    content: ', '; }
  .elementor-portfolio-item__overlay {
    opacity: 0;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 15px;
    -webkit-transition: opacity 1s;
    -o-transition: opacity 1s;
    transition: opacity 1s;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    text-align: center;
    overflow: hidden;
    background-color: rgba(129, 138, 145, 0.8); }
    .elementor-portfolio-item__overlay:hover {
      opacity: 1;
      -webkit-transition: opacity 0.5s;
      -o-transition: opacity 0.5s;
      transition: opacity 0.5s; }
  .elementor-portfolio-item__img img[src=""] {
    background-color: rgba(0, 0, 0, 0.1);
    height: 100%; }

.elementor-portfolio.elementor-has-item-ratio {
  -webkit-transition: height 0.5s;
  -o-transition: height 0.5s;
  transition: height 0.5s; }
  .elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail {
    position: absolute;
    background-color: rgba(0, 0, 0, 0.1); }
    .elementor-portfolio.elementor-has-item-ratio .elementor-post__thumbnail__link {
      padding-bottom: 56.25%; }

.elementor ul li.elementor-portfolio__filter {
  list-style-type: none; }

.elementor-widget-posts.load-more-align-center .elementor-button-wrapper, .elementor-widget-archive-posts.load-more-align-center .elementor-button-wrapper {
  text-align: center; }

.elementor-widget-posts.load-more-align-start .elementor-button-wrapper, .elementor-widget-archive-posts.load-more-align-start .elementor-button-wrapper {
  text-align: start; }

.elementor-widget-posts.load-more-align-end .elementor-button-wrapper, .elementor-widget-archive-posts.load-more-align-end .elementor-button-wrapper {
  text-align: end; }

.elementor-widget-posts.load-more-align-justify .elementor-button, .elementor-widget-archive-posts.load-more-align-justify .elementor-button {
  width: 100%; }

.elementor-widget-posts .e-load-more-spinner, .elementor-widget-archive-posts .e-load-more-spinner {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-widget-posts .e-load-more-spinner i,
  .elementor-widget-posts .e-load-more-spinner svg, .elementor-widget-archive-posts .e-load-more-spinner i,
  .elementor-widget-archive-posts .e-load-more-spinner svg {
    margin: 0 auto;
    display: none; }
  .elementor-widget-posts .e-load-more-spinner i, .elementor-widget-archive-posts .e-load-more-spinner i {
    color: var(--load-more-spinner-color); }
  .elementor-widget-posts .e-load-more-spinner svg, .elementor-widget-archive-posts .e-load-more-spinner svg {
    fill: var(--load-more-spinner-color);
    height: 1em;
    width: 1em; }

.elementor-widget-posts .e-load-more-message, .elementor-widget-archive-posts .e-load-more-message {
  color: var(--load-more-message-color);
  text-align: var(--load-more-message-alignment, center);
  display: none;
  margin-top: var(--load-more—spacing, 30px); }

.elementor-widget-posts.e-load-more-pagination-loading, .elementor-widget-archive-posts.e-load-more-pagination-loading {
  cursor: default; }
  .elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner, .elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner {
    margin-top: var(--load-more—spacing, 30px); }
    .elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner i,
    .elementor-widget-posts.e-load-more-pagination-loading .e-load-more-spinner svg, .elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner i,
    .elementor-widget-archive-posts.e-load-more-pagination-loading .e-load-more-spinner svg {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex; }
  .elementor-widget-posts.e-load-more-pagination-loading .elementor-button-content-wrapper, .elementor-widget-archive-posts.e-load-more-pagination-loading .elementor-button-content-wrapper {
    visibility: hidden; }

.elementor-widget-posts.e-load-more-pagination-end .elementor-button-wrapper, .elementor-widget-archive-posts.e-load-more-pagination-end .elementor-button-wrapper {
  display: none; }

.elementor-widget-posts.e-load-more-pagination-end .e-load-more-message, .elementor-widget-archive-posts.e-load-more-pagination-end .e-load-more-message {
  display: block; }

.elementor-widget-posts.e-load-more-no-spinner .elementor-button-content-wrapper, .elementor-widget-archive-posts.e-load-more-no-spinner .elementor-button-content-wrapper {
  visibility: visible; }

.elementor-widget-posts .elementor-button-wrapper, .elementor-widget-archive-posts .elementor-button-wrapper {
  margin-top: var(--load-more—spacing, 30px); }
  .elementor-widget-posts .elementor-button-wrapper .e-load-more-spinner, .elementor-widget-archive-posts .elementor-button-wrapper .e-load-more-spinner {
    position: absolute;
    left: 50%;
    top: 50%;
    -webkit-transform: translate(-50%, -50%);
        -ms-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
    margin: inherit; }
  .elementor-widget-posts .elementor-button-wrapper .elementor-button, .elementor-widget-archive-posts .elementor-button-wrapper .elementor-button {
    cursor: pointer;
    position: relative; }

/*
Multi Steps Form

Currently manually overwriting  - need to find a better solution,
the source property is coming from element/dev/scss...

*/
/* TODO: check why elementor-hidden class is not working */
.elementor-hidden,
.elementor-button.elementor-hidden {
  display: none; }

.e-form__step {
  width: 100%; }
  .e-form__step:not(.elementor-hidden) {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }

.e-form__buttons {
  -ms-flex-wrap: wrap;
      flex-wrap: wrap; }
  .e-form__buttons, .e-form__buttons__wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }

.e-form__indicators {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -ms-flex-wrap: nowrap;
      flex-wrap: nowrap;
  font-size: 13px;
  margin-bottom: var(--e-form-steps-indicators-spacing); }
  .e-form__indicators__indicator {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -ms-flex-preferred-size: 0;
        flex-basis: 0;
    padding: 0 var(--e-form-steps-divider-gap); }
    .e-form__indicators__indicator__progress {
      width: 100%;
      position: relative;
      background-color: var(--e-form-steps-indicator-progress-background-color);
      border-radius: var(--e-form-steps-indicator-progress-border-radius);
      overflow: hidden; }
      .e-form__indicators__indicator__progress__meter {
        width: var(--e-form-steps-indicator-progress-meter-width, 0);
        height: var(--e-form-steps-indicator-progress-height);
        line-height: var(--e-form-steps-indicator-progress-height);
        padding-right: 15px;
        border-radius: var(--e-form-steps-indicator-progress-border-radius);
        background-color: var(--e-form-steps-indicator-progress-color);
        color: var(--e-form-steps-indicator-progress-meter-color);
        text-align: right;
        -webkit-transition: width 0.1s linear;
        -o-transition: width 0.1s linear;
        transition: width 0.1s linear; }
    .e-form__indicators__indicator:first-child {
      padding-left: 0; }
    .e-form__indicators__indicator:last-child {
      padding-right: 0; }
    .e-form__indicators__indicator--state-inactive {
      color: var(--e-form-steps-indicator-inactive-primary-color, #C2CBD2); }
      .e-form__indicators__indicator--state-inactive [class*="indicator--shape-"]:not(.e-form__indicators__indicator--shape-none) {
        background-color: var(--e-form-steps-indicator-inactive-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-inactive svg,
      .e-form__indicators__indicator--state-inactive object {
        fill: var(--e-form-steps-indicator-inactive-primary-color, #C2CBD2); }
    .e-form__indicators__indicator--state-active {
      color: var(--e-form-steps-indicator-active-primary-color, #39B54A);
      border-color: var(--e-form-steps-indicator-active-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-active [class*="indicator--shape-"]:not(.e-form__indicators__indicator--shape-none) {
        background-color: var(--e-form-steps-indicator-active-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-active svg,
      .e-form__indicators__indicator--state-active object {
        fill: var(--e-form-steps-indicator-active-primary-color, #39B54A); }
    .e-form__indicators__indicator--state-completed {
      color: var(--e-form-steps-indicator-completed-secondary-color, #FFF); }
      .e-form__indicators__indicator--state-completed [class*="indicator--shape-"]:not(.e-form__indicators__indicator--shape-none) {
        background-color: var(--e-form-steps-indicator-completed-primary-color, #39B54A); }
      .e-form__indicators__indicator--state-completed .e-form__indicators__indicator__label {
        color: var(--e-form-steps-indicator-completed-primary-color, #39B54A); }
      .e-form__indicators__indicator--state-completed .e-form__indicators__indicator--shape-none {
        color: var(--e-form-steps-indicator-completed-primary-color, #39B54A);
        background-color: initial; }
      .e-form__indicators__indicator--state-completed svg,
      .e-form__indicators__indicator--state-completed object {
        fill: var(--e-form-steps-indicator-completed-secondary-color, #FFF); }
    .e-form__indicators__indicator__icon {
      width: var(--e-form-steps-indicator-padding, 30px);
      height: var(--e-form-steps-indicator-padding, 30px);
      font-size: var(--e-form-steps-indicator-icon-size);
      border-width: 1px;
      border-style: solid;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-pack: center;
          -ms-flex-pack: center;
              justify-content: center;
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center;
      overflow: hidden;
      margin-bottom: 10px; }
      .e-form__indicators__indicator__icon img,
      .e-form__indicators__indicator__icon svg,
      .e-form__indicators__indicator__icon object {
        width: var(--e-form-steps-indicator-icon-size);
        height: auto; }
      .e-form__indicators__indicator__icon .e-font-icon-svg {
        height: 1em; }
    .e-form__indicators__indicator__number {
      width: var(--e-form-steps-indicator-padding, 30px);
      height: var(--e-form-steps-indicator-padding, 30px);
      border-width: 1px;
      border-style: solid;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-pack: center;
          -ms-flex-pack: center;
              justify-content: center;
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center;
      margin-bottom: 10px; }
    .e-form__indicators__indicator--shape-circle {
      border-radius: 50%; }
    .e-form__indicators__indicator--shape-square {
      border-radius: 0; }
    .e-form__indicators__indicator--shape-rounded {
      border-radius: 5px; }
    .e-form__indicators__indicator--shape-none {
      border: 0; }
    .e-form__indicators__indicator__label {
      text-align: center; }
    .e-form__indicators__indicator__separator {
      width: 100%;
      height: var(--e-form-steps-divider-width);
      background-color: #c2cbd2; }
  .e-form__indicators--type-number, .e-form__indicators--type-number_text, .e-form__indicators--type-icon, .e-form__indicators--type-icon_text {
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start; }
    .e-form__indicators--type-number .e-form__indicators__indicator__separator, .e-form__indicators--type-number_text .e-form__indicators__indicator__separator, .e-form__indicators--type-icon .e-form__indicators__indicator__separator, .e-form__indicators--type-icon_text .e-form__indicators__indicator__separator {
      margin-top: calc(var(--e-form-steps-indicator-padding, 30px) / 2 - var(--e-form-steps-divider-width, 1px) / 2); }

/* End OF Multi Steps Form */
.elementor-field-type-hidden {
  display: none; }

.elementor-field-type-html {
  display: inline-block; }

.elementor-login .elementor-remember-me,
.elementor-login .elementor-lost-password {
  font-size: 0.85em; }

.elementor-field-type-recaptcha_v3 .elementor-field-label {
  display: none; }

.elementor-field-type-recaptcha_v3 .grecaptcha-badge {
  z-index: 1; }

.elementor-button .elementor-form-spinner {
  -webkit-box-ordinal-group: 4;
      -ms-flex-order: 3;
          order: 3; }

.elementor-form .elementor-button > span {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.elementor-form .elementor-button .elementor-button-text {
  white-space: normal;
  -webkit-box-flex: 0;
      -ms-flex-positive: 0;
          flex-grow: 0; }

.elementor-form .elementor-button svg {
  height: auto; }

.elementor-form .elementor-button .e-font-icon-svg {
  height: 1em; }

.elementor-widget-price-list .elementor-price-list {
  list-style: none;
  padding: 0;
  margin: 0; }
  .elementor-widget-price-list .elementor-price-list li {
    margin: 0; }

.elementor-price-list li:not(:last-child) {
  margin-bottom: 20px; }

.elementor-price-list .elementor-price-list-image {
  max-width: 50%;
  -ms-flex-negative: 0;
      flex-shrink: 0;
  padding-right: 25px; }
  .elementor-price-list .elementor-price-list-image img {
    width: 100%; }

.elementor-price-list .elementor-price-list-text,
.elementor-price-list .elementor-price-list-item,
.elementor-price-list .elementor-price-list-header {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }

.elementor-price-list .elementor-price-list-item {
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-text {
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-header {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
    font-size: 19px;
    font-weight: 600;
    margin-bottom: 10px;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-title {
    max-width: 80%; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-price {
    font-weight: 600; }
  .elementor-price-list .elementor-price-list-item p.elementor-price-list-description {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
    font-size: 14px;
    margin: 0; }
  .elementor-price-list .elementor-price-list-item .elementor-price-list-separator {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    margin-left: 10px;
    margin-right: 10px;
    border-bottom-style: dotted;
    border-bottom-width: 2px;
    height: 0; }

.elementor-price-table {
  text-align: center; }
  .elementor-price-table .elementor-price-table__header {
    background: var(--e-price-table-header-background-color, #555);
    padding: 20px 0; }
  .elementor-price-table .elementor-price-table__heading {
    margin: 0;
    padding: 0;
    line-height: 1.2;
    font-size: 24px;
    font-weight: 600;
    color: #fff; }
  .elementor-price-table .elementor-price-table__subheading {
    font-size: 13px;
    font-weight: 400;
    color: #fff; }
  .elementor-price-table .elementor-price-table__original-price {
    margin-right: 15px;
    text-decoration: line-through;
    font-size: 0.5em;
    line-height: 1;
    font-weight: 400;
    -ms-flex-item-align: center;
        align-self: center; }
    .elementor-price-table .elementor-price-table__original-price .elementor-price-table__currency {
      font-size: 1em;
      margin: 0; }
  .elementor-price-table .elementor-price-table__price {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row;
    color: #555;
    font-weight: 800;
    font-size: 65px;
    padding: 40px 0; }
    .elementor-price-table .elementor-price-table__price .elementor-typo-excluded {
      line-height: initial;
      letter-spacing: initial;
      text-transform: initial;
      font-weight: initial;
      font-size: initial;
      font-style: initial; }
  .elementor-price-table .elementor-price-table__after-price {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    text-align: left;
    -ms-flex-item-align: stretch;
        align-self: stretch;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }
  .elementor-price-table .elementor-price-table__integer-part {
    line-height: 0.8; }
  .elementor-price-table .elementor-price-table__currency, .elementor-price-table .elementor-price-table__fractional-part {
    line-height: 1;
    font-size: 0.3em; }
  .elementor-price-table .elementor-price-table__currency {
    margin-right: 3px; }
  .elementor-price-table .elementor-price-table__period {
    width: 100%;
    font-size: 13px;
    font-weight: 400; }
  .elementor-price-table .elementor-price-table__features-list {
    list-style-type: none;
    margin: 0;
    padding: 0;
    line-height: 1;
    color: var(--e-price-table-features-list-color); }
    .elementor-price-table .elementor-price-table__features-list li {
      font-size: 14px;
      line-height: 1;
      margin: 0;
      padding: 0; }
      .elementor-price-table .elementor-price-table__features-list li .elementor-price-table__feature-inner {
        margin-left: 15px;
        margin-right: 15px; }
      .elementor-price-table .elementor-price-table__features-list li:not(:first-child):before {
        content: '';
        display: block;
        border: 0 solid rgba(122, 122, 122, 0.3);
        margin: 10px 12.5%; }
    .elementor-price-table .elementor-price-table__features-list i {
      margin-right: 10px;
      font-size: 1.3em; }
    .elementor-price-table .elementor-price-table__features-list svg {
      margin-right: 10px;
      fill: var(--e-price-table-features-list-color);
      height: 1.3em;
      width: 1.3em; }
    .elementor-price-table .elementor-price-table__features-list svg ~ * {
      vertical-align: text-top; }
  .elementor-price-table .elementor-price-table__footer {
    padding: 30px 0; }
  .elementor-price-table .elementor-price-table__additional_info {
    margin: 0;
    font-size: 13px;
    line-height: 1.4; }
  .elementor-price-table__ribbon {
    position: absolute;
    top: 0;
    left: auto;
    right: 0;
    -webkit-transform: rotate(90deg);
        -ms-transform: rotate(90deg);
            transform: rotate(90deg);
    width: 150px;
    overflow: hidden;
    height: 150px; }
    .elementor-price-table__ribbon-inner {
      text-align: center;
      left: 0;
      width: 200%;
      -webkit-transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
          -ms-transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
              transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
      margin-top: 35px;
      font-size: 13px;
      line-height: 2;
      font-weight: 800;
      text-transform: uppercase;
      background: #000; }
    .elementor-price-table__ribbon.elementor-ribbon-left {
      -webkit-transform: rotate(0);
          -ms-transform: rotate(0);
              transform: rotate(0);
      left: 0;
      right: auto; }
    .elementor-price-table__ribbon.elementor-ribbon-right {
      -webkit-transform: rotate(90deg);
          -ms-transform: rotate(90deg);
              transform: rotate(90deg);
      left: auto;
      right: 0; }

.elementor-widget-price-table .elementor-widget-container {
  overflow: hidden;
  background-color: #f7f7f7; }

.elementor-flip-box {
  height: 280px;
  position: relative;
  -webkit-perspective: 1000px;
          perspective: 1000px;
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d; }
  @media (max-device-width: 1024px) {
    .elementor-flip-box {
      cursor: pointer; } }
  .elementor-flip-box__front {
    background-color: #1abc9c; }
  .elementor-flip-box__back {
    background-color: #4054b2;
    display: block; }
  .elementor-flip-box__layer {
    position: absolute;
    width: 100%;
    height: 100%;
    -webkit-transition: all .6s ease-in-out;
    -o-transition: all .6s ease-in-out;
    transition: all .6s ease-in-out; }
    .elementor-flip-box__layer__overlay {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      width: 100%;
      height: 100%;
      -webkit-box-orient: vertical;
      -webkit-box-direction: normal;
          -ms-flex-direction: column;
              flex-direction: column;
      -webkit-box-pack: center;
          -ms-flex-pack: center;
              justify-content: center;
      -webkit-box-align: stretch;
          -ms-flex-align: stretch;
              align-items: stretch;
      text-align: center;
      padding: 35px;
      color: white; }
    .elementor-flip-box__layer__title {
      font-size: 21px; }
    .elementor-flip-box__layer__description {
      font-size: 14px; }
    .elementor-flip-box__layer__description:not(:last-child), .elementor-flip-box__layer__title:not(:last-child) {
      margin: 0 0 20px 0;
      padding: 0; }
    .elementor-flip-box__layer__title {
      line-height: 1;
      font-weight: 600; }
  .elementor-flip-box,
  .elementor-flip-box .elementor-view-framed,
  .elementor-flip-box .elementor-view-stacked {
    --e-flip-box-view-framed-stacked-icon-color: #fff; }
    .elementor-flip-box .elementor-icon,
    .elementor-flip-box .elementor-view-framed .elementor-icon,
    .elementor-flip-box .elementor-view-stacked .elementor-icon {
      color: var(--e-flip-box-view-framed-stacked-icon-color); }
      .elementor-flip-box .elementor-icon svg,
      .elementor-flip-box .elementor-view-framed .elementor-icon svg,
      .elementor-flip-box .elementor-view-stacked .elementor-icon svg {
        fill: var(--e-flip-box-view-framed-stacked-icon-color); }
  .elementor-flip-box .elementor-view-framed .elementor-icon {
    border-color: #fff; }
  .elementor-flip-box .elementor-view-stacked .elementor-icon {
    background-color: rgba(0, 0, 0, 0.5); }
  .elementor-flip-box__button.elementor-button {
    cursor: pointer;
    -ms-flex-item-align: center;
        align-self: center;
    margin-left: auto;
    margin-right: auto;
    border: solid 2px white;
    background: transparent; }
    .elementor-flip-box__button.elementor-button:hover {
      background: transparent;
      text-decoration: none; }
  .elementor-flip-box__image {
    margin: 0 0 20px 0;
    display: inline-block;
    width: 100%; }
    .elementor-flip-box__image img {
      width: 50%; }
  .elementor-flip-box .elementor-icon-wrapper {
    margin-bottom: 20px; }
  .elementor-flip-box--3d .elementor-flip-box__layer__inner {
    -webkit-transform: translateZ(90px) scale(0.91);
            transform: translateZ(90px) scale(0.91); }
  .elementor-flip-box--3d .elementor-flip-box__layer__overlay {
    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
    -webkit-transform: translateZ(0.1px);
            transform: translateZ(0.1px); }
  .elementor-flip-box--effect-flip .elementor-flip-box {
    -webkit-perspective: 1000px;
            perspective: 1000px;
    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d; }
    .elementor-flip-box--effect-flip .elementor-flip-box__layer {
      -webkit-transform-style: preserve-3d;
              transform-style: preserve-3d;
      -webkit-backface-visibility: hidden;
              backface-visibility: hidden; }
    .elementor-flip-box--effect-flip .elementor-flip-box__front {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none;
      z-index: 1; }
    .elementor-flip-box--effect-flip .elementor-flip-box:hover .elementor-flip-box__back {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box__back {
    -webkit-transform: rotateX(0) rotateY(-180deg);
            transform: rotateX(0) rotateY(-180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: rotateX(0) rotateY(180deg);
            transform: rotateX(0) rotateY(180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box__back {
    -webkit-transform: rotateX(0) rotateY(180deg);
            transform: rotateX(0) rotateY(180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: rotateX(0) rotateY(-180deg);
            transform: rotateX(0) rotateY(-180deg); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box__back {
    -webkit-transform: rotateX(-180deg) rotateY(0);
            transform: rotateX(-180deg) rotateY(0); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: rotateX(180deg) rotateY(0);
            transform: rotateX(180deg) rotateY(0); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box__back {
    -webkit-transform: rotateX(180deg) rotateY(0);
            transform: rotateX(180deg) rotateY(0); }
  .elementor-flip-box--effect-flip.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: rotateX(-180deg) rotateY(0);
            transform: rotateX(-180deg) rotateY(0); }
  .elementor-flip-box--effect-push .elementor-flip-box__front {
    -webkit-transform: none;
        -ms-transform: none;
            transform: none; }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: translateX(100%) translateY(0);
        -ms-transform: translateX(100%) translateY(0);
            transform: translateX(100%) translateY(0); }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: translateX(-100%) translateY(0);
        -ms-transform: translateX(-100%) translateY(0);
            transform: translateX(-100%) translateY(0); }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: translateX(0) translateY(-100%);
        -ms-transform: translateX(0) translateY(-100%);
            transform: translateX(0) translateY(-100%); }
  .elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box:hover .elementor-flip-box__front {
    -webkit-transform: translateX(0) translateY(100%);
        -ms-transform: translateX(0) translateY(100%);
            transform: translateX(0) translateY(100%); }
  .elementor-flip-box--effect-slide .elementor-flip-box, .elementor-flip-box--effect-push .elementor-flip-box {
    overflow: hidden; }
    .elementor-flip-box--effect-slide .elementor-flip-box:hover .elementor-flip-box__back, .elementor-flip-box--effect-push .elementor-flip-box:hover .elementor-flip-box__back {
      -webkit-transform: none;
          -ms-transform: none;
              transform: none; }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-right .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-right .elementor-flip-box__back {
    -webkit-transform: translateX(-100%) translateY(0);
        -ms-transform: translateX(-100%) translateY(0);
            transform: translateX(-100%) translateY(0); }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-left .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-left .elementor-flip-box__back {
    -webkit-transform: translateX(100%) translateY(0);
        -ms-transform: translateX(100%) translateY(0);
            transform: translateX(100%) translateY(0); }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-up .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-up .elementor-flip-box__back {
    -webkit-transform: translateX(0) translateY(100%);
        -ms-transform: translateX(0) translateY(100%);
            transform: translateX(0) translateY(100%); }
  .elementor-flip-box--effect-slide.elementor-flip-box--direction-down .elementor-flip-box__back, .elementor-flip-box--effect-push.elementor-flip-box--direction-down .elementor-flip-box__back {
    -webkit-transform: translateX(0) translateY(-100%);
        -ms-transform: translateX(0) translateY(-100%);
            transform: translateX(0) translateY(-100%); }
  .elementor-flip-box--effect-zoom-out .elementor-flip-box .elementor-flip-box__front {
    -webkit-transition: opacity 0.35s, width 0.1ms, -webkit-transform 0.7s;
    transition: opacity 0.35s, width 0.1ms, -webkit-transform 0.7s;
    -o-transition: transform 0.7s, opacity 0.35s, width 0.1ms;
    transition: transform 0.7s, opacity 0.35s, width 0.1ms;
    transition: transform 0.7s, opacity 0.35s, width 0.1ms, -webkit-transform 0.7s;
    opacity: 1;
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1);
    z-index: 1;
    width: 100%; }
  .elementor-flip-box--effect-zoom-out .elementor-flip-box:hover .elementor-flip-box__front {
    width: 0;
    opacity: 0;
    -webkit-transform: scale(0.7);
        -ms-transform: scale(0.7);
            transform: scale(0.7);
    -webkit-transition: opacity 0.7s 0.1s, width 0.1ms 0.7s, -webkit-transform 0.8s;
    transition: opacity 0.7s 0.1s, width 0.1ms 0.7s, -webkit-transform 0.8s;
    -o-transition: transform 0.8s, opacity 0.7s 0.1s, width 0.1ms 0.7s;
    transition: transform 0.8s, opacity 0.7s 0.1s, width 0.1ms 0.7s;
    transition: transform 0.8s, opacity 0.7s 0.1s, width 0.1ms 0.7s, -webkit-transform 0.8s; }
  .elementor-flip-box--effect-zoom-in .elementor-flip-box .elementor-flip-box__back {
    -webkit-transition: opacity 0.5s 0.2s, -webkit-transform 0.7s;
    transition: opacity 0.5s 0.2s, -webkit-transform 0.7s;
    -o-transition: transform 0.7s, opacity 0.5s 0.2s;
    transition: transform 0.7s, opacity 0.5s 0.2s;
    transition: transform 0.7s, opacity 0.5s 0.2s, -webkit-transform 0.7s;
    opacity: 0;
    -webkit-transform: scale(0.7);
        -ms-transform: scale(0.7);
            transform: scale(0.7); }
  .elementor-flip-box--effect-zoom-in .elementor-flip-box:hover .elementor-flip-box__back {
    -webkit-transition: opacity 0.5s, -webkit-transform 0.7s;
    transition: opacity 0.5s, -webkit-transform 0.7s;
    -o-transition: transform 0.7s, opacity 0.5s;
    transition: transform 0.7s, opacity 0.5s;
    transition: transform 0.7s, opacity 0.5s, -webkit-transform 0.7s;
    opacity: 1;
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1); }
  .elementor-flip-box--effect-fade .elementor-flip-box .elementor-flip-box__back {
    opacity: 0; }
  .elementor-flip-box--effect-fade .elementor-flip-box:hover .elementor-flip-box__back {
    opacity: 1; }

.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__front {
  display: none; }

.elementor-widget-flip-box.elementor-flip-box--flipped .elementor-widget-container .elementor-flip-box__back {
  -webkit-transform: none;
      -ms-transform: none;
          transform: none;
  opacity: 1; }

.elementor-widget-call-to-action .elementor-widget-container {
  overflow: hidden; }

.elementor-cta {
  position: relative;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  overflow: hidden;
  -webkit-transition: 0.5s;
  -o-transition: 0.5s;
  transition: 0.5s; }
  .elementor-cta--skin-classic .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--skin-classic .elementor-cta__bg-wrapper {
      position: relative;
      min-height: 200px;
      width: 100%; }
    .elementor-cta--skin-classic .elementor-cta__content {
      -webkit-transition: all 0.4s;
      -o-transition: all 0.4s;
      transition: all 0.4s;
      width: 100%;
      background-color: #f7f7f7; }
    .elementor-cta--skin-classic .elementor-cta__content-item, .elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon {
      color: #55595c;
      border-color: #55595c;
      fill: #55595c; }
    .elementor-cta--skin-classic .elementor-cta__button.elementor-button {
      color: #55595c;
      border-color: #55595c; }
  .elementor-cta--skin-cover .elementor-cta {
    display: block; }
    .elementor-cta--skin-cover .elementor-cta__bg-wrapper {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      -webkit-transition: all 0.4s;
      -o-transition: all 0.4s;
      transition: all 0.4s;
      width: 100%; }
    .elementor-cta--skin-cover .elementor-cta__content {
      min-height: 280px; }
    .elementor-cta--skin-cover .elementor-cta__content-item, .elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon {
      color: #fff;
      border-color: #fff; }
    .elementor-cta--skin-cover .elementor-cta__button.elementor-button {
      color: white;
      border-color: white; }
  .elementor-cta--layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--layout-image-left .elementor-cta, .elementor-cta--layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--layout-image-left .elementor-cta__content, .elementor-cta--layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-cta--layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
  .elementor-cta__bg, .elementor-cta__bg-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    -webkit-transition: all 0.4s;
    -o-transition: all 0.4s;
    transition: all 0.4s; }
  .elementor-cta__bg-wrapper {
    z-index: 1;
    overflow: hidden; }
  .elementor-cta__bg {
    -webkit-background-size: cover;
            background-size: cover;
    background-position: center;
    z-index: 1; }
  .elementor-cta__bg-overlay {
    z-index: 2; }
  .elementor-cta__button.elementor-button {
    cursor: pointer;
    -ms-flex-item-align: center;
        align-self: center;
    margin-left: auto;
    margin-right: auto;
    border: solid 2px white;
    background: transparent; }
    .elementor-cta__button.elementor-button:hover {
      background: transparent;
      text-decoration: none; }
  .elementor-cta__title {
    font-size: 23px; }
  .elementor-cta__content {
    z-index: 1;
    overflow: hidden;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    -ms-flex-line-pack: center;
        align-content: center;
    padding: 35px;
    width: 100%; }
    .elementor-cta__content, .elementor-cta__content-item {
      position: relative;
      -webkit-transition: 0.5s;
      -o-transition: 0.5s;
      transition: 0.5s;
      color: #fff; }
    .elementor-cta__content-item {
      width: 100%;
      margin: 0; }
      .elementor-cta__content-item:not(:last-child) {
        margin-bottom: 15px; }
      .elementor-cta__content-item .elementor-icon {
        color: #fff; }
  .elementor-cta--valign-top .elementor-cta__content {
    -ms-flex-line-pack: start;
        align-content: flex-start;
    -webkit-box-align: start;
        -ms-flex-align: start;
            align-items: flex-start; }
  .elementor-cta--valign-middle .elementor-cta__content {
    -ms-flex-line-pack: center;
        align-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
  .elementor-cta--valign-bottom .elementor-cta__content {
    -ms-flex-line-pack: end;
        align-content: flex-end;
    -webkit-box-align: end;
        -ms-flex-align: end;
            align-items: flex-end; }
  .elementor-cta:hover .elementor-cta__bg-overlay {
    background-color: rgba(0, 0, 0, 0.3); }

@media (max-device-width: 1024px) {
  .elementor-cta {
    cursor: pointer; } }

@media (min-width: -1px) {
  .elementor-cta--widescreen-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--widescreen-layout-image-left .elementor-cta, .elementor-cta--widescreen-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--widescreen-layout-image-left .elementor-cta__content, .elementor-cta--widescreen-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--widescreen-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-cta--widescreen-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; } }

@media (max-width: -1px) {
  .elementor-cta--laptop-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--laptop-layout-image-left .elementor-cta, .elementor-cta--laptop-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--laptop-layout-image-left .elementor-cta__content, .elementor-cta--laptop-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--laptop-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-cta--laptop-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; } }

@media (max-width: -1px) {
  .elementor-cta--tablet_extra-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--tablet_extra-layout-image-left .elementor-cta, .elementor-cta--tablet_extra-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--tablet_extra-layout-image-left .elementor-cta__content, .elementor-cta--tablet_extra-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--tablet_extra-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-cta--tablet_extra-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; } }

@media (max-width: 1024px) {
  .elementor-cta--tablet-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--tablet-layout-image-left .elementor-cta, .elementor-cta--tablet-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--tablet-layout-image-left .elementor-cta__content, .elementor-cta--tablet-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--tablet-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-cta--tablet-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; } }

@media (max-width: -1px) {
  .elementor-cta--mobile_extra-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--mobile_extra-layout-image-left .elementor-cta, .elementor-cta--mobile_extra-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--mobile_extra-layout-image-left .elementor-cta__content, .elementor-cta--mobile_extra-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--mobile_extra-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-cta--mobile_extra-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; } }

@media (max-width: 767px) {
  .elementor-cta--mobile-layout-image-above .elementor-cta {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper {
      width: 100%; }
  .elementor-cta--mobile-layout-image-left .elementor-cta, .elementor-cta--mobile-layout-image-right .elementor-cta {
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap; }
    .elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper, .elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper {
      width: auto;
      min-width: 50%; }
    .elementor-cta--mobile-layout-image-left .elementor-cta__content, .elementor-cta--mobile-layout-image-right .elementor-cta__content {
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
  .elementor-cta--mobile-layout-image-left .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-cta--mobile-layout-image-right .elementor-cta {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; } }

.elementor-ribbon {
  position: absolute;
  z-index: 1;
  top: 0;
  left: auto;
  right: 0;
  -webkit-transform: rotate(90deg);
      -ms-transform: rotate(90deg);
          transform: rotate(90deg);
  width: 150px;
  overflow: hidden;
  height: 150px; }
  .elementor-ribbon-inner {
    text-align: center;
    left: 0;
    width: 200%;
    -webkit-transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
        -ms-transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
            transform: translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);
    margin-top: 35px;
    font-size: 13px;
    line-height: 2;
    font-weight: 800;
    text-transform: uppercase;
    background: #000;
    color: #fff; }
  .elementor-ribbon.elementor-ribbon-left {
    -webkit-transform: rotate(0);
        -ms-transform: rotate(0);
            transform: rotate(0);
    left: 0;
    right: auto; }
  .elementor-ribbon.elementor-ribbon-right {
    -webkit-transform: rotate(90deg);
        -ms-transform: rotate(90deg);
            transform: rotate(90deg);
    left: auto;
    right: 0; }

.elementor-widget-countdown .elementor-countdown-expire--message {
  display: none;
  padding: 20px;
  text-align: center; }

.elementor-widget-countdown .elementor-countdown-wrapper {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-direction: row;
          flex-direction: row; }

.elementor-widget-countdown .elementor-countdown-item {
  padding: 20px 0;
  text-align: center;
  color: #ffffff; }

.elementor-widget-countdown .elementor-countdown-digits,
.elementor-widget-countdown .elementor-countdown-label {
  line-height: 1; }

.elementor-widget-countdown .elementor-countdown-digits {
  font-size: 69px; }

.elementor-widget-countdown .elementor-countdown-label {
  font-size: 19px; }

.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-wrapper {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  margin-right: auto;
  margin-left: auto; }

.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-digits,
.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-label {
  display: block; }

.elementor-widget-countdown.elementor-countdown--label-block .elementor-countdown-item {
  -ms-flex-preferred-size: 0;
      flex-basis: 0;
  -webkit-box-flex: 1;
      -ms-flex-positive: 1;
          flex-grow: 1; }

.elementor-widget-countdown.elementor-countdown--label-inline {
  text-align: center; }
  .elementor-widget-countdown.elementor-countdown--label-inline .elementor-countdown-item {
    display: inline-block;
    padding-left: 5px;
    padding-right: 5px; }

/* Slides Widget */
.elementor-slides .swiper-slide-bg {
  -webkit-background-size: cover;
          background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  min-width: 100%;
  min-height: 100%; }

.elementor-slides .swiper-slide-inner {
  background-repeat: no-repeat;
  background-position: center;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  padding: 50px;
  margin: auto; }
  .elementor-slides .swiper-slide-inner, .elementor-slides .swiper-slide-inner:hover {
    color: white;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
  .elementor-slides .swiper-slide-inner .elementor-background-overlay {
    position: absolute;
    z-index: 0;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0; }
  .elementor-slides .swiper-slide-inner .elementor-slide-content {
    position: relative;
    z-index: 1;
    width: 100%; }
  .elementor-slides .swiper-slide-inner .elementor-slide-heading {
    font-size: 35px;
    font-weight: bold;
    line-height: 1; }
  .elementor-slides .swiper-slide-inner .elementor-slide-description {
    font-size: 17px;
    line-height: 1.4; }
  .elementor-slides .swiper-slide-inner .elementor-slide-heading:not(:last-child), .elementor-slides .swiper-slide-inner .elementor-slide-description:not(:last-child) {
    margin-bottom: 30px; }
  .elementor-slides .swiper-slide-inner .elementor-slide-button {
    border: solid 2px white;
    color: white;
    background: transparent;
    display: inline-block; }
    .elementor-slides .swiper-slide-inner .elementor-slide-button, .elementor-slides .swiper-slide-inner .elementor-slide-button:hover {
      background: transparent;
      color: inherit;
      text-decoration: none; }

.elementor--v-position-top .swiper-slide-inner {
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start; }

.elementor--v-position-bottom .swiper-slide-inner {
  -webkit-box-align: end;
      -ms-flex-align: end;
          align-items: flex-end; }

.elementor--v-position-middle .swiper-slide-inner {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.elementor--h-position-left .swiper-slide-inner {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor--h-position-right .swiper-slide-inner {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor--h-position-center .swiper-slide-inner {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

body.rtl .elementor-widget-slides .elementor-swiper-button-next {
  left: 10px;
  right: auto; }

body.rtl .elementor-widget-slides .elementor-swiper-button-prev {
  right: 10px;
  left: auto; }

.elementor-slides-wrapper div:not(.swiper-slide) > .swiper-slide-inner {
  display: none; }

@media (max-width: 767px) {
  .elementor-slides .swiper-slide-inner {
    padding: 30px; }
    .elementor-slides .swiper-slide-inner .elementor-slide-heading {
      font-size: 23px;
      line-height: 1;
      margin-bottom: 15px; }
    .elementor-slides .swiper-slide-inner .elementor-slide-description {
      font-size: 13px;
      line-height: 1.4;
      margin-bottom: 15px; } }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn {
  background-color: var(--e-share-buttons-primary-color, #ea4335); }
  .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text {
    color: var(--e-share-buttons-secondary-color, #fff); }
    .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__icon svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-flat .elementor-share-btn__text svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-gradient .elementor-share-btn__text svg {
      fill: var(--e-share-buttons-secondary-color, #fff); }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn {
  color: var(--e-share-buttons-primary-color, #ea4335);
  border-color: var(--e-share-buttons-primary-color, #ea4335); }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon {
  background-color: var(--e-share-buttons-primary-color, #ea4335);
  color: var(--e-share-buttons-secondary-color, #fff); }
  .elementor-share-buttons--color-custom.elementor-share-buttons--skin-minimal .elementor-share-btn__icon svg, .elementor-share-buttons--color-custom.elementor-share-buttons--skin-boxed .elementor-share-btn__icon svg {
    fill: var(--e-share-buttons-secondary-color, #fff); }

.elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon {
  color: var(--e-share-buttons-primary-color, #ea4335); }
  .elementor-share-buttons--color-custom.elementor-share-buttons--skin-framed .elementor-share-btn__icon svg {
    fill: var(--e-share-buttons-primary-color, #ea4335); }

.elementor-share-buttons--color-official .elementor-share-btn:hover {
  -webkit-filter: saturate(1.5) brightness(1.2);
          filter: saturate(1.5) brightness(1.2); }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_digg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_digg {
  background-color: #005be2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_email, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_email {
  background-color: #ea4335; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_print, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_print {
  background-color: #aaaaaa; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_facebook, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_facebook {
  background-color: #3b5998; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_google, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_google {
  background-color: #dd4b39; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pocket, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pocket {
  background-color: #EF3F56; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_linkedin, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_linkedin {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_odnoklassniki, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_odnoklassniki {
  background-color: #F4731C; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_pinterest, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_pinterest {
  background-color: #bd081c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_reddit, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_reddit {
  background-color: #ff4500; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_skype, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_skype {
  background-color: #00AFF0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_slideshare, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_slideshare {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_snapchat, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_snapchat {
  background-color: #fffc00; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_stumbleupon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_stumbleupon {
  background-color: #EB4924; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_mix, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_mix {
  background-color: #f3782b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_tumblr, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_tumblr {
  background-color: #35465c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitch, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitch {
  background-color: #6441A5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_telegram, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_telegram {
  background-color: #2CA5E0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_twitter, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_twitter {
  background-color: #1DA1F2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vimeo, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vimeo {
  background-color: #1ab7ea; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_vk, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_vk {
  background-color: #45668e; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_whatsapp, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_whatsapp {
  background-color: #25d366; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_wordpress, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_wordpress {
  background-color: #21759b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-flat .elementor-share-btn_xing, .elementor-share-buttons--color-official.elementor-share-buttons--skin-gradient .elementor-share-btn_xing {
  background-color: #026466; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg {
  color: #005be2; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_digg svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg svg {
    fill: #005be2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email {
  color: #ea4335; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_email svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email svg {
    fill: #ea4335; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print {
  color: #aaaaaa; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_print svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print svg {
    fill: #aaaaaa; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook {
  color: #3b5998; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_facebook svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook svg {
    fill: #3b5998; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google {
  color: #dd4b39; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_google svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google svg {
    fill: #dd4b39; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket {
  color: #EF3F56; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pocket svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket svg {
    fill: #EF3F56; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin {
  color: #0077b5; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_linkedin svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin svg {
    fill: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki {
  color: #F4731C; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_odnoklassniki svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki svg {
    fill: #F4731C; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest {
  color: #bd081c; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_pinterest svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest svg {
    fill: #bd081c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit {
  color: #ff4500; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_reddit svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit svg {
    fill: #ff4500; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype {
  color: #00AFF0; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_skype svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype svg {
    fill: #00AFF0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare {
  color: #0077b5; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_slideshare svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare svg {
    fill: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat {
  color: #fffc00; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_snapchat svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat svg {
    fill: #fffc00; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon {
  color: #EB4924; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_stumbleupon svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon svg {
    fill: #EB4924; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix {
  color: #f3782b; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_mix svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix svg {
    fill: #f3782b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr {
  color: #35465c; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_tumblr svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr svg {
    fill: #35465c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch {
  color: #6441A5; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitch svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch svg {
    fill: #6441A5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram {
  color: #2CA5E0; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_telegram svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram svg {
    fill: #2CA5E0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter {
  color: #1DA1F2; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_twitter svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter svg {
    fill: #1DA1F2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo {
  color: #1ab7ea; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vimeo svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo svg {
    fill: #1ab7ea; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk {
  color: #45668e; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_vk svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk svg {
    fill: #45668e; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp {
  color: #25d366; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_whatsapp svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp svg {
    fill: #25d366; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress {
  color: #21759b; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_wordpress svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress svg {
    fill: #21759b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing {
  color: #026466; }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-framed .elementor-share-btn_xing svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing svg {
    fill: #026466; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_digg .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_digg .elementor-share-btn__icon {
  background-color: #005be2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_email .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_email .elementor-share-btn__icon {
  background-color: #ea4335; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_print .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_print .elementor-share-btn__icon {
  background-color: #aaaaaa; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_facebook .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_facebook .elementor-share-btn__icon {
  background-color: #3b5998; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_google .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_google .elementor-share-btn__icon {
  background-color: #dd4b39; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pocket .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pocket .elementor-share-btn__icon {
  background-color: #EF3F56; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_linkedin .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_linkedin .elementor-share-btn__icon {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_odnoklassniki .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_odnoklassniki .elementor-share-btn__icon {
  background-color: #F4731C; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_pinterest .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_pinterest .elementor-share-btn__icon {
  background-color: #bd081c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_reddit .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_reddit .elementor-share-btn__icon {
  background-color: #ff4500; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_skype .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_skype .elementor-share-btn__icon {
  background-color: #00AFF0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_slideshare .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_slideshare .elementor-share-btn__icon {
  background-color: #0077b5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_snapchat .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_snapchat .elementor-share-btn__icon {
  background-color: #fffc00; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_stumbleupon .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_stumbleupon .elementor-share-btn__icon {
  background-color: #EB4924; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_mix .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_mix .elementor-share-btn__icon {
  background-color: #f3782b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_tumblr .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_tumblr .elementor-share-btn__icon {
  background-color: #35465c; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitch .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitch .elementor-share-btn__icon {
  background-color: #6441A5; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_telegram .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_telegram .elementor-share-btn__icon {
  background-color: #2CA5E0; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_twitter .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_twitter .elementor-share-btn__icon {
  background-color: #1DA1F2; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vimeo .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vimeo .elementor-share-btn__icon {
  background-color: #1ab7ea; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_vk .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_vk .elementor-share-btn__icon {
  background-color: #45668e; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_whatsapp .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_whatsapp .elementor-share-btn__icon {
  background-color: #25d366; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_wordpress .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_wordpress .elementor-share-btn__icon {
  background-color: #21759b; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn_xing .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn_xing .elementor-share-btn__icon {
  background-color: #026466; }

.elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon {
  color: var(--e-share-buttons-icon-color, #fff); }
  .elementor-share-buttons--color-official.elementor-share-buttons--skin-boxed .elementor-share-btn .elementor-share-btn__icon svg, .elementor-share-buttons--color-official.elementor-share-buttons--skin-minimal .elementor-share-btn .elementor-share-btn__icon svg {
    fill: var(--e-share-buttons-icon-color, #fff); }

.elementor-share-buttons--skin-framed .elementor-share-btn__icon, .elementor-share-buttons--skin-boxed .elementor-share-btn__icon {
  margin-left: -0.2em; }

.elementor-share-buttons--skin-framed .elementor-share-btn, .elementor-share-buttons--skin-boxed .elementor-share-btn {
  border-style: solid; }

.elementor-share-buttons--skin-gradient .elementor-share-btn__text {
  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.12)), to(rgba(0, 0, 0, 0)));
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0));
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0));
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0)); }

.elementor-share-buttons--skin-gradient.elementor-share-buttons--view-icon .elementor-share-btn__icon {
  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.12)), to(rgba(0, 0, 0, 0)));
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0));
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0));
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0)); }

.elementor-share-buttons--skin-boxed .elementor-share-btn__text, .elementor-share-buttons--skin-minimal .elementor-share-btn__text, .elementor-share-buttons--skin-gradient .elementor-share-btn__text {
  padding-left: 0.9em; }

.elementor-share-buttons--skin-flat .elementor-share-btn, .elementor-share-buttons--skin-gradient .elementor-share-btn {
  background-color: var(--e-share-buttons-primary-color, #ea4335); }
  .elementor-share-buttons--skin-flat .elementor-share-btn__icon, .elementor-share-buttons--skin-flat .elementor-share-btn__text, .elementor-share-buttons--skin-gradient .elementor-share-btn__icon, .elementor-share-buttons--skin-gradient .elementor-share-btn__text {
    color: var(--e-share-buttons-secondary-color, #fff); }
    .elementor-share-buttons--skin-flat .elementor-share-btn__icon svg, .elementor-share-buttons--skin-flat .elementor-share-btn__text svg, .elementor-share-buttons--skin-gradient .elementor-share-btn__icon svg, .elementor-share-buttons--skin-gradient .elementor-share-btn__text svg {
      fill: var(--e-share-buttons-secondary-color, #fff); }

.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-rounded .elementor-share-btn__icon {
  border-radius: 0.5em; }

.elementor-share-buttons--skin-minimal.elementor-share-buttons--shape-circle .elementor-share-btn__icon {
  border-radius: 99.9em; }

.elementor-share-buttons--view-text .elementor-share-btn__text {
  padding-left: 1em; }

.elementor-share-buttons--view-text .elementor-share-btn, .elementor-share-buttons--view-icon .elementor-share-btn {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }
  .elementor-share-buttons--view-text .elementor-share-btn__icon, .elementor-share-buttons--view-text .elementor-share-btn__text, .elementor-share-buttons--view-icon .elementor-share-btn__icon, .elementor-share-buttons--view-icon .elementor-share-btn__text {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }

.elementor-share-buttons--shape-rounded .elementor-share-btn {
  border-radius: 0.5em; }

.elementor-share-buttons--shape-circle .elementor-share-btn {
  border-radius: 99.9em; }

.elementor-share-btn {
  overflow: hidden;
  font-size: 10px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start;
  -webkit-transition-duration: 0.2s;
       -o-transition-duration: 0.2s;
          transition-duration: 0.2s;
  -webkit-transition-property: background-color, border-color, -webkit-filter;
  transition-property: background-color, border-color, -webkit-filter;
  -o-transition-property: filter, background-color, border-color;
  transition-property: filter, background-color, border-color;
  transition-property: filter, background-color, border-color, -webkit-filter;
  height: 4.5em;
  cursor: pointer; }
  .elementor-share-btn__icon, .elementor-share-btn__text {
    -webkit-transition-property: color, background-color;
    -o-transition-property: color, background-color;
    transition-property: color, background-color;
    -webkit-transition-duration: 0.2s;
         -o-transition-duration: 0.2s;
            transition-duration: 0.2s; }
  .elementor-share-btn__icon {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-item-align: stretch;
        align-self: stretch;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    width: 4.5em;
    position: relative; }
    .elementor-share-btn__icon i {
      font-size: var(--e-share-buttons-icon-size, 1.7em); }
    .elementor-share-btn__icon svg {
      width: var(--e-share-buttons-icon-size, 1.7em);
      height: var(--e-share-buttons-icon-size, 1.7em); }
  .elementor-share-btn__text {
    font-size: 1.5em;
    padding-right: 1em;
    -ms-flex-item-align: stretch;
        align-self: stretch;
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    font-weight: 100; }
  .elementor-share-btn__title {
    font-weight: bold;
    -ms-flex-negative: 0;
        flex-shrink: 0; }

.elementor-widget-share-buttons {
  text-align: var(--alignment, inherit);
  -moz-text-align-last: var(--alignment, inherit);
       text-align-last: var(--alignment, inherit); }
  .elementor-widget-share-buttons.elementor-grid-0 .elementor-widget-container {
    font-size: 0; }

.elementor-skin-carousel .elementor-main-swiper, .elementor-skin-coverflow .elementor-main-swiper {
  height: 230px; }

.elementor-skin-slideshow .elementor-main-swiper {
  height: 450px;
  position: relative; }

.elementor-skin-slideshow .elementor-thumbnails-swiper .elementor-custom-embed-play i {
  font-size: 50px; }

.elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide {
  cursor: pointer; }
  .elementor-skin-slideshow .elementor-thumbnails-swiper .swiper-slide:not(.swiper-slide-active):after {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: rgba(0, 0, 0, 0.3); }

.elementor-carousel-image {
  background: no-repeat center;
  -webkit-background-size: cover;
          background-size: cover;
  height: 100%;
  position: relative; }

.elementor-carousel-image-overlay {
  position: absolute;
  top: 0;
  left: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  text-align: center;
  width: 100%;
  height: 100%;
  padding: 20px;
  color: var(--e-carousel-image-overlay-color, #fff);
  background-color: rgba(129, 138, 145, 0.8);
  -webkit-transition: opacity .5s, -webkit-transform .5s;
  transition: opacity .5s, -webkit-transform .5s;
  -o-transition: transform .5s, opacity .5s;
  transition: transform .5s, opacity .5s;
  transition: transform .5s, opacity .5s, -webkit-transform .5s; }
  .elementor-carousel-image-overlay i {
    font-size: var(--e-carousel-image-overlay-icon-size, 21px); }
  .elementor-carousel-image-overlay svg {
    fill: var(--e-carousel-image-overlay-color, #fff);
    width: var(--e-carousel-image-overlay-icon-size, 21px);
    height: var(--e-carousel-image-overlay-icon-size, 21px); }

.elementor-testimonial__image {
  -ms-flex-negative: 0;
      flex-shrink: 0; }
  .elementor-testimonial__image img {
    border-radius: 999px;
    -webkit-box-sizing: content-box;
            box-sizing: content-box;
    -o-object-fit: cover;
       object-fit: cover; }

.elementor-testimonial__footer, .elementor-testimonial__header {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-testimonial__footer cite, .elementor-testimonial__header cite {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    font-style: normal;
    font-size: 14px;
    line-height: 1.5; }

.elementor-testimonial__name {
  font-weight: bold; }

.elementor-testimonial--layout-image_inline .elementor-testimonial__footer, .elementor-testimonial--layout-image_above .elementor-testimonial__footer {
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center; }

.elementor-testimonial--layout-image_inline .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_above .elementor-testimonial__image + cite {
  margin-left: 20px; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__footer, .elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__footer {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: reverse;
      -ms-flex-direction: row-reverse;
          flex-direction: row-reverse; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__image + cite {
  margin-right: 20px;
  margin-left: 0; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__footer, .elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__footer {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-direction: row;
          flex-direction: row; }

.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__image + cite {
  margin-right: 0;
  margin-left: 20px; }

.elementor-testimonial--layout-image_inline .elementor-testimonial__footer {
  margin-top: 25px; }

.elementor-testimonial--layout-image_above .elementor-testimonial {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: reverse;
      -ms-flex-direction: column-reverse;
          flex-direction: column-reverse; }
  .elementor-testimonial--layout-image_above .elementor-testimonial__footer {
    margin-bottom: 25px; }

.elementor-testimonial--layout-image_stacked .elementor-testimonial__footer {
  margin-top: 25px;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap; }

.elementor-testimonial--layout-image_stacked .elementor-testimonial__image, .elementor-testimonial--layout-image_stacked .elementor-testimonial cite {
  margin-top: 15px;
  width: 100%; }

.elementor-testimonial--layout-image_left .elementor-testimonial, .elementor-testimonial--layout-image_right .elementor-testimonial {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch; }
  .elementor-testimonial--layout-image_left .elementor-testimonial__footer, .elementor-testimonial--layout-image_right .elementor-testimonial__footer {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    text-align: center; }
  .elementor-testimonial--layout-image_left .elementor-testimonial__image + cite, .elementor-testimonial--layout-image_right .elementor-testimonial__image + cite {
    margin-top: 15px; }

.elementor-testimonial--layout-image_left.elementor-testimonial--align-center .elementor-testimonial__footer, .elementor-testimonial--layout-image_right.elementor-testimonial--align-center .elementor-testimonial__footer {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-testimonial--layout-image_left .elementor-testimonial {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: reverse;
      -ms-flex-direction: row-reverse;
          flex-direction: row-reverse; }
  .elementor-testimonial--layout-image_left .elementor-testimonial__footer {
    padding-right: 20px; }

.elementor-testimonial--layout-image_right .elementor-testimonial {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-direction: row;
          flex-direction: row; }
  .elementor-testimonial--layout-image_right .elementor-testimonial__footer {
    padding-left: 20px; }

.elementor-testimonial--align-right .elementor-testimonial {
  text-align: right; }

.elementor-testimonial--align-left .elementor-testimonial {
  text-align: left; }

.elementor-testimonial--align-center .elementor-testimonial {
  text-align: center; }
  .elementor-testimonial--align-center .elementor-testimonial__footer {
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center; }

.elementor-testimonial--align-center.elementor-testimonial--layout-image_inline .elementor-testimonial__image + cite {
  text-align: left; }

.elementor-testimonial--skin-default.elementor-testimonial--layout-image_right .elementor-testimonial__cite, .elementor-testimonial--skin-default.elementor-testimonial--layout-image_left .elementor-testimonial__cite, .elementor-testimonial--skin-default.elementor-testimonial--layout-image_above .elementor-testimonial__cite {
  width: 100%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  margin-top: 25px; }

.elementor-testimonial--skin-bubble .elementor-testimonial__content {
  background-color: #e6e9ec;
  padding: 20px;
  position: relative; }
  .elementor-testimonial--skin-bubble .elementor-testimonial__content:after {
    content: '';
    display: block;
    width: 14px;
    height: 14px;
    background-color: #e6e9ec;
    position: absolute;
    -webkit-transform: scaleX(0.75) rotate(45deg);
        -ms-transform: scaleX(0.75) rotate(45deg);
            transform: scaleX(0.75) rotate(45deg);
    border-width: 0;
    -webkit-box-sizing: content-box;
            box-sizing: content-box; }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above .elementor-testimonial__content:after {
  bottom: calc( 100% - 7px);
  -webkit-transform: scaleX(0.75) rotate(-135deg);
      -ms-transform: scaleX(0.75) rotate(-135deg);
          transform: scaleX(0.75) rotate(-135deg); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-center .elementor-testimonial__content:after {
  left: 50%;
  -webkit-transform: translateX(-50%) scaleX(0.75) rotate(-135deg);
      -ms-transform: translateX(-50%) scaleX(0.75) rotate(-135deg);
          transform: translateX(-50%) scaleX(0.75) rotate(-135deg); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline .elementor-testimonial__content:after {
  top: calc( 100% - 7px); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-center .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-center .elementor-testimonial__content:after {
  left: 50%;
  -webkit-transform: translateX(-50%) scaleX(0.75) rotate(45deg);
      -ms-transform: translateX(-50%) scaleX(0.75) rotate(45deg);
          transform: translateX(-50%) scaleX(0.75) rotate(45deg); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-left .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-left .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-left .elementor-testimonial__content:after {
  left: calc( 20px + ( 50px / 2 )); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_above.elementor-testimonial--align-right .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_stacked.elementor-testimonial--align-right .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_inline.elementor-testimonial--align-right .elementor-testimonial__content:after {
  right: calc( 20px + ( 50px / 2 )); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after {
  -webkit-transform: scaleY(0.75) rotate(135deg);
      -ms-transform: scaleY(0.75) rotate(135deg);
          transform: scaleY(0.75) rotate(135deg);
  left: -8px; }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after {
  -webkit-transform: scaleY(0.75) rotate(-45deg);
      -ms-transform: scaleY(0.75) rotate(-45deg);
          transform: scaleY(0.75) rotate(-45deg);
  right: -8px; }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__content:after, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__content:after {
  top: calc(20px + (50px / 2)); }

.elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_left .elementor-testimonial__footer, .elementor-testimonial--skin-bubble.elementor-testimonial--layout-image_right .elementor-testimonial__footer {
  padding-top: 20px; }

.elementor-widget-testimonial-carousel .swiper-slide {
  padding: 20px; }

.elementor-widget-testimonial-carousel .elementor-testimonial__text {
  font-size: 1.3em;
  font-style: italic;
  line-height: 1.5; }

.elementor-widget-testimonial-carousel .elementor-testimonial__image img {
  width: 50px;
  height: 50px; }

.elementor-widget-reviews .swiper-slide {
  background-color: white;
  border: 1px solid #e1e8ed;
  border-radius: 5px;
  padding: 0; }

.elementor-widget-reviews .elementor-testimonial__text {
  font-size: 14px;
  line-height: 20px; }

.elementor-widget-reviews .elementor-testimonial__name {
  color: #1c2022; }

.elementor-widget-reviews .elementor-testimonial__title {
  color: #697882;
  font-size: 12.5px;
  font-weight: normal;
  font-family: inherit; }

.elementor-widget-reviews .elementor-testimonial__image {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-widget-reviews .elementor-testimonial__image img {
    width: 36px;
    height: 36px; }

.elementor-widget-reviews .elementor-testimonial__icon {
  margin-left: auto;
  font-size: 17px; }
  .elementor-widget-reviews .elementor-testimonial__icon .fa + .fa {
    margin-left: 0.15em; }
  .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon {
    color: var(--e-testimonial-icon-color); }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-android {
      --e-testimonial-icon-color: #A4C639; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-apple {
      --e-testimonial-icon-color: #999999; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-behance {
      --e-testimonial-icon-color: #1769ff; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-bitbucket {
      --e-testimonial-icon-color: #205081; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-codepen {
      --e-testimonial-icon-color: #000000; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-delicious {
      --e-testimonial-icon-color: #3399ff; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-digg {
      --e-testimonial-icon-color: #005be2; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-dribbble {
      --e-testimonial-icon-color: #ea4c89; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-envelope {
      --e-testimonial-icon-color: #ea4335; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-facebook {
      --e-testimonial-icon-color: #3b5998; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-flickr {
      --e-testimonial-icon-color: #0063dc; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-foursquare {
      --e-testimonial-icon-color: #2d5be3; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-github {
      --e-testimonial-icon-color: #333333; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-google-plus {
      --e-testimonial-icon-color: #dd4b39; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-houzz {
      --e-testimonial-icon-color: #7ac142; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-instagram {
      --e-testimonial-icon-color: #262626; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-jsfiddle {
      --e-testimonial-icon-color: #487AA2; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-linkedin {
      --e-testimonial-icon-color: #0077b5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-medium {
      --e-testimonial-icon-color: #00ab6b; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-meetup {
      --e-testimonial-icon-color: #ec1c40; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-mixcloud {
      --e-testimonial-icon-color: #273a4b; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-odnoklassniki {
      --e-testimonial-icon-color: #F4731C; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-pinterest {
      --e-testimonial-icon-color: #bd081c; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-product-hunt {
      --e-testimonial-icon-color: #da552f; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-reddit {
      --e-testimonial-icon-color: #ff4500; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-rss {
      --e-testimonial-icon-color: #f26522; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-shopping-cart {
      --e-testimonial-icon-color: #4CAF50; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-skype {
      --e-testimonial-icon-color: #00AFF0; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-slideshare {
      --e-testimonial-icon-color: #0077b5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-snapchat {
      --e-testimonial-icon-color: #fffc00; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-soundcloud {
      --e-testimonial-icon-color: #ff8800; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-spotify {
      --e-testimonial-icon-color: #2ebd59; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stack-overflow {
      --e-testimonial-icon-color: #fe7a15; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-steam {
      --e-testimonial-icon-color: #00adee; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-stumbleupon {
      --e-testimonial-icon-color: #EB4924; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-telegram {
      --e-testimonial-icon-color: #2CA5E0; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumb-tack, .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-thumbtack {
      --e-testimonial-icon-color: #1aa1d8; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tripadvisor {
      --e-testimonial-icon-color: #589442; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-tumblr {
      --e-testimonial-icon-color: #35465c; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitch {
      --e-testimonial-icon-color: #6441A5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-twitter {
      --e-testimonial-icon-color: #1DA1F2; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vimeo {
      --e-testimonial-icon-color: #1ab7ea; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-vk {
      --e-testimonial-icon-color: #45668e; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weibo {
      --e-testimonial-icon-color: #DD2430; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-weixin {
      --e-testimonial-icon-color: #31A918; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-whatsapp {
      --e-testimonial-icon-color: #25d366; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-wordpress {
      --e-testimonial-icon-color: #21759b; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-xing {
      --e-testimonial-icon-color: #026466; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-yelp {
      --e-testimonial-icon-color: #af0606; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-youtube {
      --e-testimonial-icon-color: #cd201f; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon-500px {
      --e-testimonial-icon-color: #0099e5; }
    .elementor-widget-reviews .elementor-testimonial__icon.elementor-icon svg {
      fill: var(--e-testimonial-icon-color); }

.elementor-widget-reviews .elementor-testimonial__rating {
  background-image: -webkit-gradient(linear, left top, right top, from(#ffc82c), to(#cccccc));
  background-image: -webkit-linear-gradient(left, #ffc82c var(--rating), #cccccc var(--rating));
  background-image: -o-linear-gradient(left, #ffc82c var(--rating), #cccccc var(--rating));
  background-image: linear-gradient(to right, #ffc82c var(--rating), #cccccc var(--rating));
  font-family: eicons; }

.elementor-widget-reviews .elementor-testimonial__header {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  padding-top: 15px;
  padding-bottom: 6px; }

.elementor-widget-reviews .elementor-testimonial__image + cite {
  margin-left: 9px; }

.elementor-widget-reviews .elementor-testimonial__separator {
  margin: 0 auto;
  border-top: 0 none;
  border-bottom: 1px solid #e1e8ed;
  height: 0; }

.elementor-widget-reviews .elementor-testimonial__content {
  padding-top: 6px;
  padding-bottom: 15px; }

.elementor-widget-reviews .elementor-testimonial__content, .elementor-widget-reviews .elementor-testimonial__header {
  padding-left: 15px;
  padding-right: 15px; }

.elementor-widget-reviews.elementor-review--has-separator .elementor-testimonial__header {
  border-bottom: 1px solid #e1e8ed; }

.swiper-pagination-bullets {
  color: #fff;
  cursor: default; }

.swiper-slide {
  will-change: transform;
  border-style: solid;
  border-width: 0;
  -webkit-transition-duration: .5s;
       -o-transition-duration: .5s;
          transition-duration: .5s;
  -webkit-transition-property: border, background, -webkit-transform;
  transition-property: border, background, -webkit-transform;
  -o-transition-property: border, background, transform;
  transition-property: border, background, transform;
  transition-property: border, background, transform, -webkit-transform;
  overflow: hidden; }
  .swiper-slide:not(:hover) .e-overlay-animation-fade {
    opacity: 0; }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-up {
    -webkit-transform: translateY(100%);
        -ms-transform: translateY(100%);
            transform: translateY(100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-down {
    -webkit-transform: translateY(-100%);
        -ms-transform: translateY(-100%);
            transform: translateY(-100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-right {
    -webkit-transform: translateX(-100%);
        -ms-transform: translateX(-100%);
            transform: translateX(-100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-slide-left {
    -webkit-transform: translateX(100%);
        -ms-transform: translateX(100%);
            transform: translateX(100%); }
  .swiper-slide:not(:hover) .e-overlay-animation-zoom-in {
    -webkit-transform: scale(0.5);
        -ms-transform: scale(0.5);
            transform: scale(0.5);
    opacity: 0; }
  .swiper-slide a {
    display: inline; }
    .swiper-slide a.elementor-button {
      display: inline-block; }

.elementor-widget-testimonial-carousel .elementor-arrows-yes .elementor-main-swiper,
.elementor-widget-reviews .elementor-arrows-yes .elementor-main-swiper {
  width: calc( 95% - 40px); }

.elementor-widget-testimonial-carousel .elementor-main-swiper,
.elementor-widget-reviews .elementor-main-swiper {
  width: 95%; }

.elementor-widget-testimonial-carousel .swiper-wrapper,
.elementor-widget-reviews .swiper-wrapper {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: stretch;
      -ms-flex-align: stretch;
          align-items: stretch; }

.elementor-widget-testimonial-carousel .swiper-slide,
.elementor-widget-reviews .swiper-slide {
  height: auto; }

.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .swiper-container, .elementor-widget-testimonial-carousel.elementor-pagination-type-fraction .swiper-container,
.elementor-widget-reviews.elementor-pagination-type-bullets .swiper-container,
.elementor-widget-reviews.elementor-pagination-type-fraction .swiper-container {
  padding-bottom: 40px; }

.elementor-widget-testimonial-carousel .elementor-swiper-button-prev,
.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-next,
.elementor-widget-reviews .elementor-swiper-button-prev,
.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-next {
  left: 0;
  right: unset; }

.elementor-widget-testimonial-carousel .elementor-swiper-button-next,
.elementor-widget-testimonial-carousel .swiper-container-rtl .elementor-swiper-button-prev,
.elementor-widget-reviews .elementor-swiper-button-next,
.elementor-widget-reviews .swiper-container-rtl .elementor-swiper-button-prev {
  right: 0;
  left: unset; }

.elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-next, .elementor-widget-testimonial-carousel.elementor-pagination-type-bullets .elementor-swiper-button-prev,
.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-next,
.elementor-widget-reviews.elementor-pagination-type-bullets .elementor-swiper-button-prev {
  top: calc( 50% - ( 40px / 2 )); }

.elementor-widget-media-carousel .elementor-swiper-button-prev,
.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-next {
  left: 10px;
  right: unset; }

.elementor-widget-media-carousel .elementor-swiper-button-next,
.elementor-widget-media-carousel .swiper-container-rtl .elementor-swiper-button-prev {
  right: 10px;
  left: unset; }

.entry-content blockquote.elementor-blockquote:not(.alignright):not(.alignleft),
.entry-summary blockquote.elementor-blockquote {
  margin-right: 0;
  margin-left: 0; }

.elementor-widget-blockquote blockquote {
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  font-size: 100%;
  vertical-align: baseline;
  background: transparent;
  quotes: none;
  border-left: 0 none;
  border-right: 0 none;
  border-top: 0 none;
  border-bottom: 0 none;
  font-style: normal;
  color: #55595c; }
  .elementor-widget-blockquote blockquote:before, .elementor-widget-blockquote blockquote:after,
  .elementor-widget-blockquote blockquote footer:before,
  .elementor-widget-blockquote blockquote footer:after,
  .elementor-widget-blockquote blockquote cite:before,
  .elementor-widget-blockquote blockquote cite:after {
    content: '';
    content: none; }

.elementor-blockquote {
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s; }
  .elementor-blockquote__author, .elementor-blockquote__content {
    margin-bottom: 0;
    font-style: normal; }
  .elementor-blockquote__author {
    font-weight: bold; }
  .elementor-blockquote footer {
    margin-top: 12px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between; }
  .elementor-blockquote__tweet-button {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s;
    color: #1DA1F2;
    -ms-flex-item-align: end;
        align-self: flex-end;
    line-height: 1;
    position: relative;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content; }
    .elementor-blockquote__tweet-button:hover {
      color: #0967a0; }
    .elementor-blockquote__tweet-button span {
      font-weight: 600; }
    .elementor-blockquote__tweet-button i, .elementor-blockquote__tweet-button span {
      vertical-align: middle; }
    .elementor-blockquote__tweet-button i + span,
    .elementor-blockquote__tweet-button svg + span {
      margin-left: 0.5em; }
    .elementor-blockquote__tweet-button svg {
      fill: #1DA1F2;
      height: 1em;
      width: 1em; }
  .elementor-blockquote__tweet-label {
    white-space: pre-wrap; }
  .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button {
    padding: 0.7em 1.2em;
    border-radius: 100em;
    background-color: #1DA1F2;
    color: #fff;
    font-size: 15px; }
    .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover {
      background-color: #0967a0;
      color: #fff; }
      .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button:hover:before, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:hover:before {
        border-right-color: #0967a0; }
    .elementor-blockquote--button-skin-classic .elementor-blockquote__tweet-button svg, .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button svg {
      fill: #fff;
      height: 1em;
      width: 1em; }
  .elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button, .elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button {
    padding: 0;
    width: 2em;
    height: 2em; }
    .elementor-blockquote--button-skin-classic.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i, .elementor-blockquote--button-skin-bubble.elementor-blockquote--button-view-icon .elementor-blockquote__tweet-button i {
      position: absolute;
      left: 50%;
      top: 50%;
      -webkit-transform: translate(-50%, -50%);
          -ms-transform: translate(-50%, -50%);
              transform: translate(-50%, -50%); }
  .elementor-blockquote--button-skin-bubble .elementor-blockquote__tweet-button:before {
    content: '';
    border: solid 0.5em transparent;
    border-right-color: #1DA1F2;
    position: absolute;
    left: -0.8em;
    top: 50%;
    -webkit-transform: translateY(-50%) scale(1, 0.65);
        -ms-transform: translateY(-50%) scale(1, 0.65);
            transform: translateY(-50%) scale(1, 0.65);
    -webkit-transition: 0.3s;
    -o-transition: 0.3s;
    transition: 0.3s; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:before {
    right: auto;
    left: -0.8em;
    border-right-color: #1DA1F2;
    border-left-color: transparent; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-left .elementor-blockquote__tweet-button:hover:before {
    border-right-color: #0967a0; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:before {
    left: auto;
    right: -0.8em;
    border-right-color: transparent;
    border-left-color: #1DA1F2; }
  .elementor-blockquote--button-skin-bubble.elementor-blockquote--align-right .elementor-blockquote__tweet-button:hover:before {
    border-left-color: #0967a0; }
  .elementor-blockquote--skin-boxed .elementor-blockquote {
    background-color: #e6e9ec;
    padding: 30px; }
  .elementor-blockquote--skin-border .elementor-blockquote {
    border-color: #e6e9ec;
    border-style: solid;
    border-left-width: 7px;
    padding-left: 20px; }
  .elementor-blockquote--skin-quotation .elementor-blockquote:before {
    content: '“';
    font-size: 100px;
    color: #e6e9ec;
    font-family: "Times New Roman", Times, serif;
    font-weight: 900;
    line-height: 1;
    display: block;
    height: 0.6em; }
  .elementor-blockquote--skin-quotation .elementor-blockquote__content {
    margin-top: 15px; }
  .elementor-blockquote--align-left .elementor-blockquote__content {
    text-align: left; }
  .elementor-blockquote--align-left .elementor-blockquote footer {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-direction: row;
            flex-direction: row; }
  .elementor-blockquote--align-right .elementor-blockquote__content {
    text-align: right; }
  .elementor-blockquote--align-right .elementor-blockquote footer {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse; }
  .elementor-blockquote--align-center .elementor-blockquote {
    text-align: center; }
    .elementor-blockquote--align-center .elementor-blockquote footer {
      display: block; }
    .elementor-blockquote--align-center .elementor-blockquote__author {
      display: block; }
    .elementor-blockquote--align-center .elementor-blockquote__tweet-button {
      margin-right: auto;
      margin-left: auto; }

.elementor-headline {
  font-size: 43px;
  line-height: 1.2;
  display: block; }
  .elementor-headline-dynamic-text {
    color: var(--dynamic-text-color, #aebcb9); }
  .elementor-headline--style-rotate .elementor-headline-dynamic-wrapper {
    text-align: left; }
  .elementor-headline--style-highlight .elementor-headline-dynamic-wrapper {
    overflow: visible;
    text-align: inherit; }
  .elementor-headline--style-highlight .elementor-headline-dynamic-text {
    z-index: 1; }
  .elementor-headline--style-highlight .elementor-headline-plain-text {
    z-index: 1;
    position: relative; }
  .elementor-headline--style-highlight svg {
    position: absolute;
    top: 50%;
    left: 50%;
    width: calc( 100% + 20px);
    height: calc( 100% + 20px);
    -webkit-transform: translate(-50%, -50%);
        -ms-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
    overflow: visible; }
    .elementor-headline--style-highlight svg path {
      stroke: red;
      stroke-width: 9;
      fill: none;
      opacity: 0;
      stroke-dasharray: 0 1500;
      -webkit-transition: 0.3s;
      -o-transition: 0.3s;
      transition: 0.3s; }
  .elementor-headline.e-animated svg path {
    -webkit-animation: elementor-headline-dash forwards;
            animation: elementor-headline-dash forwards;
    -webkit-animation-duration: var(--animation-duration, 1.2s);
            animation-duration: var(--animation-duration, 1.2s);
    -webkit-animation-iteration-count: 1;
            animation-iteration-count: 1; }
    .elementor-headline.e-animated svg path:nth-of-type(2) {
      -webkit-animation-delay: calc(var(--animation-duration, 1.2s) / 2);
              animation-delay: calc(var(--animation-duration, 1.2s) / 2); }
  .elementor-headline.e-hide-highlight svg path {
    opacity: 1;
    stroke-dasharray: 1500 1500;
    -webkit-animation: hide-highlight 0.4s forwards;
            animation: hide-highlight 0.4s forwards;
    -webkit-animation-iteration-count: 1;
            animation-iteration-count: 1; }

@-webkit-keyframes elementor-headline-dash {
  from {
    stroke-dasharray: 0 1500;
    opacity: 1; }
  to {
    stroke-dasharray: 1500 1500;
    opacity: 1; } }

@keyframes elementor-headline-dash {
  from {
    stroke-dasharray: 0 1500;
    opacity: 1; }
  to {
    stroke-dasharray: 1500 1500;
    opacity: 1; } }

@-webkit-keyframes hide-highlight {
  from {
    opacity: 1;
    stroke-dasharray: 1500 1500; }
  to {
    opacity: 0;
    -webkit-filter: blur(10px);
            filter: blur(10px); } }

@keyframes hide-highlight {
  from {
    opacity: 1;
    stroke-dasharray: 1500 1500; }
  to {
    opacity: 0;
    -webkit-filter: blur(10px);
            filter: blur(10px); } }

.elementor-headline-text-wrapper {
  vertical-align: bottom; }

.elementor-headline-dynamic-wrapper {
  display: inline-block;
  position: relative; }
  .elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text {
    display: inline-block;
    position: absolute;
    top: 0;
    left: 0; }
    .elementor-headline-dynamic-wrapper .elementor-headline-dynamic-text.elementor-headline-text-active {
      position: relative; }

.elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper {
  -webkit-perspective: 300px;
          perspective: 300px; }

.elementor-headline-animation-type-flip .elementor-headline-dynamic-text {
  opacity: 0;
  -webkit-transform-origin: 50% 100%;
      -ms-transform-origin: 50% 100%;
          transform-origin: 50% 100%;
  -webkit-transform: rotateX(180deg);
          transform: rotateX(180deg); }
  .elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1;
    -webkit-transform: rotateX(0deg);
            transform: rotateX(0deg);
    -webkit-animation: elementor-headline-flip-in 1.2s;
            animation: elementor-headline-flip-in 1.2s; }
  .elementor-headline-animation-type-flip .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    -webkit-transform: rotateX(180deg);
            transform: rotateX(180deg);
    -webkit-animation: elementor-headline-flip-out 1.2s;
            animation: elementor-headline-flip-out 1.2s; }

@-webkit-keyframes elementor-headline-flip-in {
  0% {
    -webkit-transform: rotateX(180deg);
            transform: rotateX(180deg);
    opacity: 0; }
  35% {
    -webkit-transform: rotateX(120deg);
            transform: rotateX(120deg);
    opacity: 0; }
  65% {
    opacity: 0; }
  100% {
    -webkit-transform: rotateX(360deg);
            transform: rotateX(360deg);
    opacity: 1; } }

@keyframes elementor-headline-flip-in {
  0% {
    -webkit-transform: rotateX(180deg);
            transform: rotateX(180deg);
    opacity: 0; }
  35% {
    -webkit-transform: rotateX(120deg);
            transform: rotateX(120deg);
    opacity: 0; }
  65% {
    opacity: 0; }
  100% {
    -webkit-transform: rotateX(360deg);
            transform: rotateX(360deg);
    opacity: 1; } }

@-webkit-keyframes elementor-headline-flip-out {
  0% {
    -webkit-transform: rotateX(0deg);
            transform: rotateX(0deg);
    opacity: 1; }
  35% {
    -webkit-transform: rotateX(-40deg);
            transform: rotateX(-40deg);
    opacity: 1; }
  65% {
    opacity: 0; }
  100% {
    -webkit-transform: rotateX(180deg);
            transform: rotateX(180deg);
    opacity: 0; } }

@keyframes elementor-headline-flip-out {
  0% {
    -webkit-transform: rotateX(0deg);
            transform: rotateX(0deg);
    opacity: 1; }
  35% {
    -webkit-transform: rotateX(-40deg);
            transform: rotateX(-40deg);
    opacity: 1; }
  65% {
    opacity: 0; }
  100% {
    -webkit-transform: rotateX(180deg);
            transform: rotateX(180deg);
    opacity: 0; } }

.elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper {
  vertical-align: top;
  overflow: hidden; }
  .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper::after {
    /* vertical bar */
    content: '';
    position: absolute;
    left: auto;
    right: 0;
    top: 50%;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%);
    height: 90%;
    width: 1px;
    background-color: #0d0d0d; }
  .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper:not(.elementor-headline-typing-selected):after {
    -webkit-animation: elementor-headline-pulse 1s infinite;
            animation: elementor-headline-pulse 1s infinite; }
  .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected {
    background-color: var(--typing-selected-bg-color, #0d0d0d); }
    .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected::after {
      visibility: hidden; }
    .elementor-headline-animation-type-typing .elementor-headline-dynamic-wrapper.elementor-headline-typing-selected .elementor-headline-dynamic-text {
      color: var(--typing-selected-color, var(--dynamic-text-color), #aebcb9); }

.elementor-headline-animation-type-typing .elementor-headline-dynamic-text:not(.elementor-headline-text-active) {
  visibility: hidden; }

.elementor-headline-animation-type-typing .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
  position: absolute;
  visibility: hidden; }

@-webkit-keyframes elementor-headline-pulse {
  0% {
    -webkit-transform: translateY(-50%) scale(1);
            transform: translateY(-50%) scale(1);
    opacity: 1; }
  40% {
    -webkit-transform: translateY(-50%) scale(0.9);
            transform: translateY(-50%) scale(0.9);
    opacity: 0; }
  100% {
    -webkit-transform: translateY(-50%) scale(0);
            transform: translateY(-50%) scale(0);
    opacity: 0; } }

@keyframes elementor-headline-pulse {
  0% {
    -webkit-transform: translateY(-50%) scale(1);
            transform: translateY(-50%) scale(1);
    opacity: 1; }
  40% {
    -webkit-transform: translateY(-50%) scale(0.9);
            transform: translateY(-50%) scale(0.9);
    opacity: 0; }
  100% {
    -webkit-transform: translateY(-50%) scale(0);
            transform: translateY(-50%) scale(0);
    opacity: 0; } }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper {
  -webkit-perspective: 300px;
          perspective: 300px; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter {
  display: inline-block;
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text {
  -webkit-transform: scaleX(1.0005);
      -ms-transform: scaleX(1.0005);
          transform: scaleX(1.0005);
  opacity: 0; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter {
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
  -webkit-transform: translateZ(-20px) rotateX(90deg);
          transform: translateZ(-20px) rotateX(90deg);
  opacity: 0; }
  .elementor-headline-text-active .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter {
    opacity: 1; }
  .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter.elementor-headline-animation-in {
    -webkit-animation: elementor-headline-swirl-in .4s forwards;
            animation: elementor-headline-swirl-in .4s forwards; }
  .elementor-headline-animation-type-swirl .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
    -webkit-animation: elementor-headline-swirl-out .4s forwards;
            animation: elementor-headline-swirl-out .4s forwards; }

@-webkit-keyframes elementor-headline-swirl-in {
  0% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(90deg);
            transform: translateZ(-20px) rotateX(90deg); }
  60% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(-10deg);
            transform: translateZ(-20px) rotateX(-10deg); }
  100% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(0deg);
            transform: translateZ(-20px) rotateX(0deg); } }

@keyframes elementor-headline-swirl-in {
  0% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(90deg);
            transform: translateZ(-20px) rotateX(90deg); }
  60% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(-10deg);
            transform: translateZ(-20px) rotateX(-10deg); }
  100% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(0deg);
            transform: translateZ(-20px) rotateX(0deg); } }

@-webkit-keyframes elementor-headline-swirl-out {
  0% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(0);
            transform: translateZ(-20px) rotateX(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(-100deg);
            transform: translateZ(-20px) rotateX(-100deg); }
  100% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(-90deg);
            transform: translateZ(-20px) rotateX(-90deg); } }

@keyframes elementor-headline-swirl-out {
  0% {
    opacity: 1;
    -webkit-transform: translateZ(-20px) rotateX(0);
            transform: translateZ(-20px) rotateX(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(-100deg);
            transform: translateZ(-20px) rotateX(-100deg); }
  100% {
    opacity: 0;
    -webkit-transform: translateZ(-20px) rotateX(-90deg);
            transform: translateZ(-20px) rotateX(-90deg); } }

.elementor-headline-animation-type-slide-down .elementor-headline-text-wrapper {
  display: inline-block;
  padding: .2em 0; }

.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper {
  overflow: hidden;
  vertical-align: top; }

.elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text {
  opacity: 0;
  top: .2em; }
  .elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-active {
    top: 0;
    opacity: 1;
    -webkit-animation: elementor-headline-slide-down-in .6s;
            animation: elementor-headline-slide-down-in .6s; }
  .elementor-headline-animation-type-slide-down .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    -webkit-animation: elementor-headline-slide-down-out .6s;
            animation: elementor-headline-slide-down-out .6s; }

@-webkit-keyframes elementor-headline-slide-down-in {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-100%);
            transform: translateY(-100%); }
  60% {
    opacity: 1;
    -webkit-transform: translateY(20%);
            transform: translateY(20%); }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
            transform: translateY(0); } }

@keyframes elementor-headline-slide-down-in {
  0% {
    opacity: 0;
    -webkit-transform: translateY(-100%);
            transform: translateY(-100%); }
  60% {
    opacity: 1;
    -webkit-transform: translateY(20%);
            transform: translateY(20%); }
  100% {
    opacity: 1;
    -webkit-transform: translateY(0);
            transform: translateY(0); } }

@-webkit-keyframes elementor-headline-slide-down-out {
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
            transform: translateY(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateY(120%);
            transform: translateY(120%); }
  100% {
    opacity: 0;
    -webkit-transform: translateY(100%);
            transform: translateY(100%); } }

@keyframes elementor-headline-slide-down-out {
  0% {
    opacity: 1;
    -webkit-transform: translateY(0);
            transform: translateY(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateY(120%);
            transform: translateY(120%); }
  100% {
    opacity: 0;
    -webkit-transform: translateY(100%);
            transform: translateY(100%); } }

.elementor-headline-animation-type-clip .elementor-headline-text-wrapper {
  display: inline-block;
  padding: .2em 0; }

.elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper {
  overflow: hidden;
  vertical-align: top; }
  .elementor-headline-animation-type-clip .elementor-headline-dynamic-wrapper::after {
    /* line */
    content: '';
    position: absolute;
    top: 0;
    left: auto;
    right: 0;
    width: 2px;
    height: 100%;
    background-color: #0d0d0d; }

.elementor-headline-animation-type-clip .elementor-headline-dynamic-text {
  opacity: 0; }
  .elementor-headline-animation-type-clip .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1; }

.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper {
  -webkit-perspective: 300px;
          perspective: 300px; }

.elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text {
  opacity: 0; }
  .elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1;
    -webkit-animation: elementor-headline-drop-in-in .8s;
            animation: elementor-headline-drop-in-in .8s; }
  .elementor-headline-animation-type-drop-in .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    -webkit-animation: elementor-headline-drop-in-out .8s;
            animation: elementor-headline-drop-in-out .8s; }

@-webkit-keyframes elementor-headline-drop-in-in {
  0% {
    opacity: 0;
    -webkit-transform: translateZ(100px);
            transform: translateZ(100px); }
  100% {
    opacity: 1;
    -webkit-transform: translateZ(0);
            transform: translateZ(0); } }

@keyframes elementor-headline-drop-in-in {
  0% {
    opacity: 0;
    -webkit-transform: translateZ(100px);
            transform: translateZ(100px); }
  100% {
    opacity: 1;
    -webkit-transform: translateZ(0);
            transform: translateZ(0); } }

@-webkit-keyframes elementor-headline-drop-in-out {
  0% {
    opacity: 1;
    -webkit-transform: translateZ(0);
            transform: translateZ(0); }
  100% {
    opacity: 0;
    -webkit-transform: translateZ(-100px);
            transform: translateZ(-100px); } }

@keyframes elementor-headline-drop-in-out {
  0% {
    opacity: 1;
    -webkit-transform: translateZ(0);
            transform: translateZ(0); }
  100% {
    opacity: 0;
    -webkit-transform: translateZ(-100px);
            transform: translateZ(-100px); } }

.elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper {
  -webkit-perspective: 300px;
          perspective: 300px; }

.elementor-headline-animation-type-blinds .elementor-headline-dynamic-text {
  opacity: 0; }

.elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter {
  display: inline-block;
  -webkit-transform: rotateY(180deg);
          transform: rotateY(180deg);
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden; }
  .elementor-headline-text-active .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter {
    -webkit-transform: rotateY(0deg);
            transform: rotateY(0deg); }
  .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter.elementor-headline-animation-in {
    -webkit-animation: elementor-headline-blinds-in .6s forwards;
            animation: elementor-headline-blinds-in .6s forwards; }
  .elementor-headline-animation-type-blinds .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
    -webkit-animation: elementor-headline-blinds-out .6s forwards;
            animation: elementor-headline-blinds-out .6s forwards; }

@-webkit-keyframes elementor-headline-blinds-in {
  0% {
    -webkit-transform: rotateY(180deg);
            transform: rotateY(180deg); }
  100% {
    -webkit-transform: rotateY(0deg);
            transform: rotateY(0deg); } }

@keyframes elementor-headline-blinds-in {
  0% {
    -webkit-transform: rotateY(180deg);
            transform: rotateY(180deg); }
  100% {
    -webkit-transform: rotateY(0deg);
            transform: rotateY(0deg); } }

@-webkit-keyframes elementor-headline-blinds-out {
  0% {
    -webkit-transform: rotateY(0);
            transform: rotateY(0); }
  100% {
    -webkit-transform: rotateY(-180deg);
            transform: rotateY(-180deg); } }

@keyframes elementor-headline-blinds-out {
  0% {
    -webkit-transform: rotateY(0);
            transform: rotateY(0); }
  100% {
    -webkit-transform: rotateY(-180deg);
            transform: rotateY(-180deg); } }

.elementor-headline-animation-type-wave .elementor-headline-dynamic-text {
  opacity: 0; }

.elementor-headline-animation-type-wave .elementor-headline-dynamic-letter {
  display: inline-block;
  opacity: 0;
  -webkit-transform: scale(0);
      -ms-transform: scale(0);
          transform: scale(0); }
  .elementor-headline-text-active .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter {
    opacity: 1; }
  .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter.elementor-headline-animation-in {
    -webkit-animation: elementor-headline-wave-up .6s forwards;
            animation: elementor-headline-wave-up .6s forwards; }
  .elementor-headline-animation-type-wave .elementor-headline-dynamic-letter:not(.elementor-headline-animation-in) {
    -webkit-animation: elementor-headline-wave-down .6s forwards;
            animation: elementor-headline-wave-down .6s forwards; }

@-webkit-keyframes elementor-headline-wave-up {
  0% {
    -webkit-transform: scale(0);
            transform: scale(0);
    opacity: 0; }
  60% {
    -webkit-transform: scale(1.2);
            transform: scale(1.2);
    opacity: 1; }
  100% {
    -webkit-transform: scale(1);
            transform: scale(1);
    opacity: 1; } }

@keyframes elementor-headline-wave-up {
  0% {
    -webkit-transform: scale(0);
            transform: scale(0);
    opacity: 0; }
  60% {
    -webkit-transform: scale(1.2);
            transform: scale(1.2);
    opacity: 1; }
  100% {
    -webkit-transform: scale(1);
            transform: scale(1);
    opacity: 1; } }

@-webkit-keyframes elementor-headline-wave-down {
  0% {
    -webkit-transform: scale(1);
            transform: scale(1);
    opacity: 1; }
  60% {
    -webkit-transform: scale(0);
            transform: scale(0);
    opacity: 0; } }

@keyframes elementor-headline-wave-down {
  0% {
    -webkit-transform: scale(1);
            transform: scale(1);
    opacity: 1; }
  60% {
    -webkit-transform: scale(0);
            transform: scale(0);
    opacity: 0; } }

.elementor-headline-animation-type-slide .elementor-headline-dynamic-text {
  opacity: 0; }
  .elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-active {
    opacity: 1;
    -webkit-animation: elementor-headline-slide-in .6s;
            animation: elementor-headline-slide-in .6s; }
  .elementor-headline-animation-type-slide .elementor-headline-dynamic-text.elementor-headline-text-inactive {
    -webkit-animation: elementor-headline-slide-out .6s;
            animation: elementor-headline-slide-out .6s; }

@-webkit-keyframes elementor-headline-slide-in {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-100%);
            transform: translateX(-100%); }
  60% {
    opacity: 1;
    -webkit-transform: translateX(10%);
            transform: translateX(10%); }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
            transform: translateX(0); } }

@keyframes elementor-headline-slide-in {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-100%);
            transform: translateX(-100%); }
  60% {
    opacity: 1;
    -webkit-transform: translateX(10%);
            transform: translateX(10%); }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
            transform: translateX(0); } }

@-webkit-keyframes elementor-headline-slide-out {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
            transform: translateX(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateX(110%);
            transform: translateX(110%); }
  100% {
    opacity: 0;
    -webkit-transform: translateX(100%);
            transform: translateX(100%); } }

@keyframes elementor-headline-slide-out {
  0% {
    opacity: 1;
    -webkit-transform: translateX(0);
            transform: translateX(0); }
  60% {
    opacity: 0;
    -webkit-transform: translateX(110%);
            transform: translateX(110%); }
  100% {
    opacity: 0;
    -webkit-transform: translateX(100%);
            transform: translateX(100%); } }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-slide .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-drop-in .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-slide-down .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-flip .elementor-headline-dynamic-wrapper {
  -webkit-transition: width 0.5s;
  -o-transition: width 0.5s;
  transition: width 0.5s; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-blinds .elementor-headline-dynamic-wrapper, .elementor-headline-animation-type-wave .elementor-headline-dynamic-wrapper {
  overflow: hidden; }

.elementor-headline-animation-type-swirl .elementor-headline-dynamic-text, .elementor-headline-animation-type-blinds .elementor-headline-dynamic-text, .elementor-headline-animation-type-wave .elementor-headline-dynamic-text {
  white-space: nowrap; }

.elementor-msie .elementor-headline--style-highlight svg {
  top: auto;
  left: auto;
  -webkit-transform: translate(-100%);
      -ms-transform: translate(-100%);
          transform: translate(-100%); }

/* Animations */
@-webkit-keyframes e-hotspot-soft-beat {
  from {
    -webkit-transform: scale(1);
            transform: scale(1); }
  to {
    -webkit-transform: scale(1.1);
            transform: scale(1.1); } }
@keyframes e-hotspot-soft-beat {
  from {
    -webkit-transform: scale(1);
            transform: scale(1); }
  to {
    -webkit-transform: scale(1.1);
            transform: scale(1.1); } }

@-webkit-keyframes e-hotspot-expand {
  from {
    -webkit-transform: scale(0.5);
            transform: scale(0.5);
    opacity: 1; }
  to {
    -webkit-transform: scale(1.5);
            transform: scale(1.5);
    opacity: 0; } }

@keyframes e-hotspot-expand {
  from {
    -webkit-transform: scale(0.5);
            transform: scale(0.5);
    opacity: 1; }
  to {
    -webkit-transform: scale(1.5);
            transform: scale(1.5);
    opacity: 0; } }

/* Hotspot Wrapper */
.elementor-widget-hotspot {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: var(--background-align);
      -ms-flex-pack: var(--background-align);
          justify-content: var(--background-align); }
  .elementor-widget-hotspot .elementor-widget-container {
    position: relative;
    display: inline-block;
    width: var(--container-width);
    max-width: var(--container-max-width);
    height: var(--container-height); }
    .elementor-widget-hotspot .elementor-widget-container > img {
      display: block;
      width: var(--image-width, auto);
      height: var(--container-height);
      opacity: var(--opacity, 1); }

/* Each Hotspot */
.e-hotspot {
  z-index: 1;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  position: absolute;
  /* Hotspot Button Animations */
  /* End: Hotspot Button Animations */ }
  .e-hotspot--position-left.e-hotspot--position-top {
    -webkit-transform: translate(calc( -1 * var( --hotspot-translate-x )), calc( -1 * var( --hotspot-translate-y )));
        -ms-transform: translate(calc( -1 * var( --hotspot-translate-x )), calc( -1 * var( --hotspot-translate-y )));
            transform: translate(calc( -1 * var( --hotspot-translate-x )), calc( -1 * var( --hotspot-translate-y ))); }
  .e-hotspot--position-left.e-hotspot--position-bottom {
    -webkit-transform: translate(calc( -1 * var( --hotspot-translate-x )), var(--hotspot-translate-y));
        -ms-transform: translate(calc( -1 * var( --hotspot-translate-x )), var(--hotspot-translate-y));
            transform: translate(calc( -1 * var( --hotspot-translate-x )), var(--hotspot-translate-y)); }
  .e-hotspot--position-right.e-hotspot--position-top {
    -webkit-transform: translate(var(--hotspot-translate-x), calc( -1 * var( --hotspot-translate-y )));
        -ms-transform: translate(var(--hotspot-translate-x), calc( -1 * var( --hotspot-translate-y )));
            transform: translate(var(--hotspot-translate-x), calc( -1 * var( --hotspot-translate-y ))); }
  .e-hotspot--position-right.e-hotspot--position-bottom {
    -webkit-transform: translate(var(--hotspot-translate-x), var(--hotspot-translate-y));
        -ms-transform: translate(var(--hotspot-translate-x), var(--hotspot-translate-y));
            transform: translate(var(--hotspot-translate-x), var(--hotspot-translate-y)); }
  .e-hotspot--active {
    z-index: 2; }
  .e-hotspot__outer-circle, .e-hotspot__inner-circle {
    content: "";
    display: inline-block;
    -webkit-box-sizing: content-box;
            box-sizing: content-box;
    border-radius: 50%; }
  .e-hotspot__inner-circle {
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%);
        -ms-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
    background-color: var(--hotspot-color);
    padding: calc( var(--hotspot-size, 18px) / 2); }
  .e-hotspot__outer-circle {
    background-color: var(--hotspot-color);
    padding: var(--hotspot-padding, 4px);
    width: var(--hotspot-size, 18px);
    height: var(--hotspot-size, 18px); }
  .e-hotspot--icon .e-hotspot__button {
    line-height: 0;
    -webkit-box-sizing: content-box;
            box-sizing: content-box;
    font-size: var(--hotspot-size, 18px);
    width: var(--hotspot-size, 18px);
    height: var(--hotspot-size, 18px); }
  .e-hotspot__icon, .e-hotspot__label {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .e-hotspot__icon svg, .e-hotspot__label svg {
      width: var(--hotspot-size, 18px);
      height: auto; }
  .e-hotspot__button {
    cursor: pointer;
    position: relative;
    display: grid;
    grid-auto-flow: column;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    color: var(--hotspot-color);
    font-size: var(--hotspot-size, 18px);
    min-width: var(--hotspot-button-width);
    min-height: var(--hotspot-button-height); }
    .e-hotspot__button:before {
      z-index: -2;
      content: "";
      width: 100%;
      height: 100%;
      left: -5px;
      top: -5px;
      position: absolute;
      padding: 5px;
      -webkit-box-sizing: content-box;
              box-sizing: content-box; }
    .e-hotspot__button svg {
      fill: var(--hotspot-color); }
  .e-hotspot:not(.e-hotspot--circle) .e-hotspot__button {
    min-width: var(--hotspot-min-width);
    min-height: var(--hotspot-min-height);
    background-color: var(--hotspot-box-color);
    padding: var(--hotspot-padding, 4px);
    border-radius: var(--hotspot-border-radius, 3px); }
    .e-hotspot:not(.e-hotspot--circle) .e-hotspot__button:before {
      border-radius: var(--hotspot-border-radius, 3px); }
  .e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand::before {
    background-color: var(--hotspot-box-color); }
  .e-hotspot--overlay {
    opacity: 0.7;
    -webkit-transition: opacity 0.2s;
    -o-transition: opacity 0.2s;
    transition: opacity 0.2s; }
  .e-hotspot--overlay:hover,
  .e-hotspot--active .e-hotspot--overlay {
    opacity: 1; }
  .e-hotspot--soft-beat {
    -webkit-animation: e-hotspot-soft-beat 0.7s infinite alternate;
            animation: e-hotspot-soft-beat 0.7s infinite alternate;
    -webkit-animation-timing-function: ease;
            animation-timing-function: ease; }
  .e-hotspot--expand .e-hotspot__outer-circle {
    -webkit-animation: e-hotspot-expand 2s infinite;
            animation: e-hotspot-expand 2s infinite; }
  .e-hotspot:not(.e-hotspot--circle) .e-hotspot--expand::before {
    content: "";
    width: 100%;
    height: 100%;
    position: absolute;
    z-index: -1;
    opacity: 0;
    -webkit-animation: e-hotspot-expand 2s infinite;
            animation: e-hotspot-expand 2s infinite; }
  .e-hotspot--sequenced {
    -webkit-animation: fadeIn 0.3s;
            animation: fadeIn 0.3s;
    -webkit-animation-iteration-count: 1;
            animation-iteration-count: 1;
    -webkit-animation-fill-mode: both;
            animation-fill-mode: both; }
  .e-hotspot__direction-mask {
    overflow: hidden;
    position: absolute;
    pointer-events: none; }
  .e-hotspot__tooltip {
    white-space: var(--white-space, nowrap);
    -webkit-transition-property: opacity, -webkit-transform;
    transition-property: opacity, -webkit-transform;
    -o-transition-property: transform, opacity;
    transition-property: transform, opacity;
    transition-property: transform, opacity, -webkit-transform;
    -webkit-transition-duration: var(--tooltip-transition-duration, 500ms);
         -o-transition-duration: var(--tooltip-transition-duration, 500ms);
            transition-duration: var(--tooltip-transition-duration, 500ms);
    -webkit-transform-origin: center center;
        -ms-transform-origin: center center;
            transform-origin: center center;
    position: absolute;
    pointer-events: none;
    color: var(--tooltip-text-color, #FFF);
    text-align: var(--tooltip-align);
    min-width: var(--tooltip-min-width);
    padding: var(--tooltip-padding, 8px);
    border-radius: var(--tooltip-border-radius);
    background-color: var(--tooltip-color); }
  .e-hotspot__tooltip p:last-of-type {
    margin-bottom: 0; }
  .e-hotspot__direction-mask .e-hotspot__tooltip {
    -webkit-box-shadow: none !important;
            box-shadow: none !important;
    position: static; }
  .e-hotspot--active .e-hotspot__tooltip {
    pointer-events: visible; }
  .e-hotspot--fade-in-out {
    opacity: 0; }
  .e-hotspot--active .e-hotspot--fade-in-out {
    opacity: 1; }
  .e-hotspot--fade-grow {
    opacity: 0;
    -webkit-transform: scale(0);
        -ms-transform: scale(0);
            transform: scale(0); }
  .e-hotspot--active .e-hotspot--fade-grow {
    opacity: 1;
    -webkit-transform: scale(1);
        -ms-transform: scale(1);
            transform: scale(1); }
  .e-hotspot--tooltip-animation-from-top, .e-hotspot--override-tooltip-animation-from-top {
    -webkit-transform: translate(0, calc(-100% - 1px));
        -ms-transform: translate(0, calc(-100% - 1px));
            transform: translate(0, calc(-100% - 1px)); }
  .e-hotspot--tooltip-animation-from-left, .e-hotspot--override-tooltip-animation-from-left {
    -webkit-transform: translate(calc(-100% - 1px), 0);
        -ms-transform: translate(calc(-100% - 1px), 0);
            transform: translate(calc(-100% - 1px), 0); }
  .e-hotspot--tooltip-animation-from-right, .e-hotspot--override-tooltip-animation-from-right {
    -webkit-transform: translate(calc(100% + 1px), 0);
        -ms-transform: translate(calc(100% + 1px), 0);
            transform: translate(calc(100% + 1px), 0); }
  .e-hotspot--tooltip-animation-from-bottom, .e-hotspot--override-tooltip-animation-from-bottom {
    -webkit-transform: translate(0, calc(100% + 1px));
        -ms-transform: translate(0, calc(100% + 1px));
            transform: translate(0, calc(100% + 1px)); }
  .e-hotspot--fade-direction {
    opacity: 0; }
  .e-hotspot--active .e-hotspot--slide-direction,
  .e-hotspot--active .e-hotspot--fade-direction {
    -webkit-transform: translate(0, 0) scale(1);
        -ms-transform: translate(0, 0) scale(1);
            transform: translate(0, 0) scale(1);
    opacity: 1; }
  .e-hotspot--show-tooltip {
    -webkit-transition: none;
    -o-transition: none;
    transition: none;
    opacity: 1;
    pointer-events: visible;
    -webkit-transform: translate(0, 0);
        -ms-transform: translate(0, 0);
            transform: translate(0, 0); }

.elementor-facebook-widget.fb_iframe_widget {
  width: 100% !important; }
  .elementor-facebook-widget.fb_iframe_widget span {
    width: 100% !important; }
  .elementor-facebook-widget.fb_iframe_widget iframe {
    position: relative;
    width: 100% !important; }

.elementor-facebook-widget.fb-like {
  height: 1px; }

.elementor-widget-facebook-comments iframe {
  width: 100% !important; }

.site-main .menu-navigation-container {
  overflow: visible; }

.elementor-item:before, .elementor-item:after {
  display: block;
  position: absolute;
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s;
  -webkit-transition-timing-function: cubic-bezier(0.58, 0.3, 0.005, 1);
       -o-transition-timing-function: cubic-bezier(0.58, 0.3, 0.005, 1);
          transition-timing-function: cubic-bezier(0.58, 0.3, 0.005, 1); }

.elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  opacity: 0; }


.elementor-item:hover:before,
.elementor-item:hover:after,
.elementor-item:focus:before,
.elementor-item:focus:after,
.elementor-item.highlighted:before,
.elementor-item.highlighted:after,
.elementor-item-active:before,
.elementor-item-active:after {
  -webkit-transform: scale(1);
      -ms-transform: scale(1);
          transform: scale(1); }

.e--pointer-double-line .elementor-item:before, .e--pointer-double-line .elementor-item:after, .e--pointer-underline .elementor-item:before, .e--pointer-underline .elementor-item:after, .e--pointer-overline .elementor-item:before, .e--pointer-overline .elementor-item:after {
  height: 3px;
  width: 100%;
  left: 0;
  background-color: #55595c;
  z-index: 2; }

.e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-double-line.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-underline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  height: 0;
  width: 0;
  left: 50%; }

.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  top: 10px; }

.e--pointer-double-line.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-overline.e--animation-drop-out .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  bottom: 10px; }

.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  top: -10px; }

.e--pointer-double-line.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-overline.e--animation-drop-in .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  bottom: -10px; }

.e--pointer-double-line.e--animation-none,
.e--pointer-double-line.e--animation-none .elementor-item, .e--pointer-underline.e--animation-none,
.e--pointer-underline.e--animation-none .elementor-item, .e--pointer-overline.e--animation-none,
.e--pointer-overline.e--animation-none .elementor-item {
  -webkit-transition-duration: 0s;
       -o-transition-duration: 0s;
          transition-duration: 0s; }
  .e--pointer-double-line.e--animation-none:before, .e--pointer-double-line.e--animation-none:after, .e--pointer-double-line.e--animation-none:hover, .e--pointer-double-line.e--animation-none:focus,
  .e--pointer-double-line.e--animation-none .elementor-item:before,
  .e--pointer-double-line.e--animation-none .elementor-item:after,
  .e--pointer-double-line.e--animation-none .elementor-item:hover,
  .e--pointer-double-line.e--animation-none .elementor-item:focus, .e--pointer-underline.e--animation-none:before, .e--pointer-underline.e--animation-none:after, .e--pointer-underline.e--animation-none:hover, .e--pointer-underline.e--animation-none:focus,
  .e--pointer-underline.e--animation-none .elementor-item:before,
  .e--pointer-underline.e--animation-none .elementor-item:after,
  .e--pointer-underline.e--animation-none .elementor-item:hover,
  .e--pointer-underline.e--animation-none .elementor-item:focus, .e--pointer-overline.e--animation-none:before, .e--pointer-overline.e--animation-none:after, .e--pointer-overline.e--animation-none:hover, .e--pointer-overline.e--animation-none:focus,
  .e--pointer-overline.e--animation-none .elementor-item:before,
  .e--pointer-overline.e--animation-none .elementor-item:after,
  .e--pointer-overline.e--animation-none .elementor-item:hover,
  .e--pointer-overline.e--animation-none .elementor-item:focus {
    -webkit-transition-duration: 0s;
         -o-transition-duration: 0s;
            transition-duration: 0s; }

.e--pointer-double-line .elementor-item:before, .e--pointer-overline .elementor-item:before {
  content: '';
  top: 0; }

.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before, .e--pointer-overline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  width: 10px;
  left: -20px; }

.e--pointer-double-line .elementor-item:after, .e--pointer-underline .elementor-item:after {
  content: '';
  bottom: 0; }

.e--pointer-double-line.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after, .e--pointer-underline.e--animation-slide .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):after {
  width: 10px;
  inset-inline-start: 100%; }

.e--pointer-framed .elementor-item:before, .e--pointer-framed .elementor-item:after {
  background: transparent;
  left: 0;
  top: 0;
  bottom: 0;
  right: 0;
  border: 3px solid #55595c; }

.e--pointer-framed .elementor-item:before {
  content: ''; }

.e--pointer-framed.e--animation-grow .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  -webkit-transform: scale(0.75);
      -ms-transform: scale(0.75);
          transform: scale(0.75); }

.e--pointer-framed.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  -webkit-transform: scale(1.25);
      -ms-transform: scale(1.25);
          transform: scale(1.25); }

.e--pointer-framed.e--animation-grow .elementor-item:before, .e--pointer-framed.e--animation-shrink .elementor-item:before {
  -webkit-transition: opacity 0.2s, -webkit-transform 0.4s;
  transition: opacity 0.2s, -webkit-transform 0.4s;
  -o-transition: opacity 0.2s, transform 0.4s;
  transition: opacity 0.2s, transform 0.4s;
  transition: opacity 0.2s, transform 0.4s, -webkit-transform 0.4s; }

.e--pointer-framed.e--animation-draw .elementor-item:before, .e--pointer-framed.e--animation-draw .elementor-item:after {
  width: 3px;
  height: 3px; }

.e--pointer-framed.e--animation-draw .elementor-item:before {
  border-width: 0 0 3px 3px;
  -webkit-transition: width 0.1s 0.2s, height 0.1s 0.3s, opacity 0.12s 0.22s;
  -o-transition: width 0.1s 0.2s, height 0.1s 0.3s, opacity 0.12s 0.22s;
  transition: width 0.1s 0.2s, height 0.1s 0.3s, opacity 0.12s 0.22s; }

.e--pointer-framed.e--animation-draw .elementor-item:after {
  content: '';
  top: initial;
  bottom: 0;
  left: initial;
  right: 0;
  border-width: 3px 3px 0 0;
  -webkit-transition: width 0.1s, height 0.1s 0.1s, opacity 0.02s 0.18s;
  -o-transition: width 0.1s, height 0.1s 0.1s, opacity 0.02s 0.18s;
  transition: width 0.1s, height 0.1s 0.1s, opacity 0.02s 0.18s; }


.e--pointer-framed.e--animation-draw .elementor-item:hover:before,
.e--pointer-framed.e--animation-draw .elementor-item:hover:after,
.e--pointer-framed.e--animation-draw .elementor-item:focus:before,
.e--pointer-framed.e--animation-draw .elementor-item:focus:after,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,
.e--pointer-framed.e--animation-draw .elementor-item-active:before,
.e--pointer-framed.e--animation-draw .elementor-item-active:after {
  width: 100%;
  height: 100%; }


.e--pointer-framed.e--animation-draw .elementor-item:hover:before,
.e--pointer-framed.e--animation-draw .elementor-item:focus:before,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:before,
.e--pointer-framed.e--animation-draw .elementor-item-active:before {
  -webkit-transition: opacity 0.02s, height 0.1s, width 0.1s 0.1s;
  -o-transition: opacity 0.02s, height 0.1s, width 0.1s 0.1s;
  transition: opacity 0.02s, height 0.1s, width 0.1s 0.1s; }


.e--pointer-framed.e--animation-draw .elementor-item:hover:after,
.e--pointer-framed.e--animation-draw .elementor-item:focus:after,
.e--pointer-framed.e--animation-draw .elementor-item.highlighted:after,
.e--pointer-framed.e--animation-draw .elementor-item-active:after {
  -webkit-transition: opacity 0.02s 0.2s, height 0.1s 0.2s, width 0.1s 0.3s;
  -o-transition: opacity 0.02s 0.2s, height 0.1s 0.2s, width 0.1s 0.3s;
  transition: opacity 0.02s 0.2s, height 0.1s 0.2s, width 0.1s 0.3s; }

.e--pointer-framed.e--animation-corners .elementor-item:before, .e--pointer-framed.e--animation-corners .elementor-item:after {
  width: 3px;
  height: 3px; }

.e--pointer-framed.e--animation-corners .elementor-item:before {
  border-width: 3px 0 0 3px; }

.e--pointer-framed.e--animation-corners .elementor-item:after {
  content: '';
  top: initial;
  bottom: 0;
  left: initial;
  right: 0;
  border-width: 0 3px 3px 0; }


.e--pointer-framed.e--animation-corners .elementor-item:hover:before,
.e--pointer-framed.e--animation-corners .elementor-item:hover:after,
.e--pointer-framed.e--animation-corners .elementor-item:focus:before,
.e--pointer-framed.e--animation-corners .elementor-item:focus:after,
.e--pointer-framed.e--animation-corners .elementor-item.highlighted:before,
.e--pointer-framed.e--animation-corners .elementor-item.highlighted:after,
.e--pointer-framed.e--animation-corners .elementor-item-active:before,
.e--pointer-framed.e--animation-corners .elementor-item-active:after {
  width: 100%;
  height: 100%;
  -webkit-transition: opacity 0.002s, width 0.4s, height 0.4s;
  -o-transition: opacity 0.002s, width 0.4s, height 0.4s;
  transition: opacity 0.002s, width 0.4s, height 0.4s; }

.e--pointer-framed.e--animation-none,
.e--pointer-framed.e--animation-none .elementor-item {
  -webkit-transition-duration: 0s;
       -o-transition-duration: 0s;
          transition-duration: 0s; }
  .e--pointer-framed.e--animation-none:before, .e--pointer-framed.e--animation-none:after, .e--pointer-framed.e--animation-none:hover, .e--pointer-framed.e--animation-none:focus,
  .e--pointer-framed.e--animation-none .elementor-item:before,
  .e--pointer-framed.e--animation-none .elementor-item:after,
  .e--pointer-framed.e--animation-none .elementor-item:hover,
  .e--pointer-framed.e--animation-none .elementor-item:focus {
    -webkit-transition-duration: 0s;
         -o-transition-duration: 0s;
            transition-duration: 0s; }

.e--pointer-background .elementor-item:before, .e--pointer-background .elementor-item:after {
  content: '';
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s; }

.e--pointer-background .elementor-item:before {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: #55595c;
  z-index: -1; }


.e--pointer-background .elementor-item:hover,
.e--pointer-background .elementor-item:focus,
.e--pointer-background .elementor-item.highlighted,
.e--pointer-background .elementor-item-active {
  color: #fff; }

.e--pointer-background.e--animation-grow .elementor-item:before {
  -webkit-transform: scale(0.5);
      -ms-transform: scale(0.5);
          transform: scale(0.5); }


.e--pointer-background.e--animation-grow .elementor-item:hover:before,
.e--pointer-background.e--animation-grow .elementor-item:focus:before,
.e--pointer-background.e--animation-grow .elementor-item.highlighted:before,
.e--pointer-background.e--animation-grow .elementor-item-active:before {
  -webkit-transform: scale(1);
      -ms-transform: scale(1);
          transform: scale(1);
  opacity: 1; }

.e--pointer-background.e--animation-shrink .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2);
  -webkit-transition: 0.3s;
  -o-transition: 0.3s;
  transition: 0.3s; }


.e--pointer-background.e--animation-shrink .elementor-item:hover:before,
.e--pointer-background.e--animation-shrink .elementor-item:focus:before,
.e--pointer-background.e--animation-shrink .elementor-item.highlighted:before,
.e--pointer-background.e--animation-shrink .elementor-item-active:before {
  -webkit-transition: opacity 0.15s, -webkit-transform 0.4s;
  transition: opacity 0.15s, -webkit-transform 0.4s;
  -o-transition: opacity 0.15s, transform 0.4s;
  transition: opacity 0.15s, transform 0.4s;
  transition: opacity 0.15s, transform 0.4s, -webkit-transform 0.4s; }

.e--pointer-background.e--animation-sweep-left .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  left: 100%; }

.e--pointer-background.e--animation-sweep-right .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  right: 100%; }

.e--pointer-background.e--animation-sweep-up .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  top: 100%; }

.e--pointer-background.e--animation-sweep-down .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  bottom: 100%; }

.e--pointer-background.e--animation-shutter-out-vertical .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  bottom: 50%;
  top: 50%; }

.e--pointer-background.e--animation-shutter-out-horizontal .elementor-item:not(:hover):not(:focus):not(.elementor-item-active):not(.highlighted):before {
  right: 50%;
  left: 50%; }

.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after, .e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: #55595c;
  z-index: -1; }

.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:before {
  top: 0;
  bottom: 100%; }

.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:after {
  top: 100%;
  bottom: 0; }


.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:before,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:before,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:before,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:before {
  bottom: 50%; }


.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:hover:after,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item:focus:after,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item.highlighted:after,
.e--pointer-background.e--animation-shutter-in-vertical .elementor-item-active:after {
  top: 50%; }

.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:before {
  right: 0;
  left: 100%; }

.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:after {
  right: 100%;
  left: 0; }


.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:before,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:before,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:before,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:before {
  left: 50%; }


.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:hover:after,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item:focus:after,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item.highlighted:after,
.e--pointer-background.e--animation-shutter-in-horizontal .elementor-item-active:after {
  right: 50%; }

.e--pointer-background.e--animation-none,
.e--pointer-background.e--animation-none .elementor-item {
  -webkit-transition-duration: 0s;
       -o-transition-duration: 0s;
          transition-duration: 0s; }
  .e--pointer-background.e--animation-none:before, .e--pointer-background.e--animation-none:after, .e--pointer-background.e--animation-none:hover, .e--pointer-background.e--animation-none:focus,
  .e--pointer-background.e--animation-none .elementor-item:before,
  .e--pointer-background.e--animation-none .elementor-item:after,
  .e--pointer-background.e--animation-none .elementor-item:hover,
  .e--pointer-background.e--animation-none .elementor-item:focus {
    -webkit-transition-duration: 0s;
         -o-transition-duration: 0s;
            transition-duration: 0s; }

.e--pointer-text.e--animation-skew .elementor-item:hover,
.e--pointer-text.e--animation-skew .elementor-item:focus {
  -webkit-transform: skew(-8deg);
      -ms-transform: skew(-8deg);
          transform: skew(-8deg); }

.e--pointer-text.e--animation-grow .elementor-item:hover,
.e--pointer-text.e--animation-grow .elementor-item:focus {
  -webkit-transform: scale(1.2);
      -ms-transform: scale(1.2);
          transform: scale(1.2); }

.e--pointer-text.e--animation-shrink .elementor-item:hover,
.e--pointer-text.e--animation-shrink .elementor-item:focus {
  -webkit-transform: scale(0.8);
      -ms-transform: scale(0.8);
          transform: scale(0.8); }

.e--pointer-text.e--animation-float .elementor-item:hover,
.e--pointer-text.e--animation-float .elementor-item:focus {
  -webkit-transform: translateY(-8px);
      -ms-transform: translateY(-8px);
          transform: translateY(-8px); }

.e--pointer-text.e--animation-sink .elementor-item:hover,
.e--pointer-text.e--animation-sink .elementor-item:focus {
  -webkit-transform: translateY(8px);
      -ms-transform: translateY(8px);
          transform: translateY(8px); }

.e--pointer-text.e--animation-rotate .elementor-item:hover,
.e--pointer-text.e--animation-rotate .elementor-item:focus {
  -webkit-transform: rotate(6deg);
      -ms-transform: rotate(6deg);
          transform: rotate(6deg); }

.e--pointer-text.e--animation-none,
.e--pointer-text.e--animation-none .elementor-item {
  -webkit-transition-duration: 0s;
       -o-transition-duration: 0s;
          transition-duration: 0s; }
  .e--pointer-text.e--animation-none:before, .e--pointer-text.e--animation-none:after, .e--pointer-text.e--animation-none:hover, .e--pointer-text.e--animation-none:focus,
  .e--pointer-text.e--animation-none .elementor-item:before,
  .e--pointer-text.e--animation-none .elementor-item:after,
  .e--pointer-text.e--animation-none .elementor-item:hover,
  .e--pointer-text.e--animation-none .elementor-item:focus {
    -webkit-transition-duration: 0s;
         -o-transition-duration: 0s;
            transition-duration: 0s; }

.elementor-nav-menu--main .elementor-nav-menu a {
  -webkit-transition: 0.4s;
  -o-transition: 0.4s;
  transition: 0.4s; }
  .elementor-nav-menu--main .elementor-nav-menu a, .elementor-nav-menu--main .elementor-nav-menu a:hover, .elementor-nav-menu--main .elementor-nav-menu a:focus, .elementor-nav-menu--main .elementor-nav-menu a.highlighted {
    padding: 13px 20px; }
  .elementor-nav-menu--main .elementor-nav-menu a.current {
    background: #373a3c;
    color: #fff; }
  .elementor-nav-menu--main .elementor-nav-menu a.disabled {
    background: #55595c;
    color: #a1a6a9; }

.elementor-nav-menu--main .elementor-nav-menu ul {
  position: absolute;
  width: 12em;
  border-width: 0;
  border-style: solid;
  padding: 0; }

.elementor-nav-menu--main .elementor-nav-menu span.scroll-up,
.elementor-nav-menu--main .elementor-nav-menu span.scroll-down {
  position: absolute;
  display: none;
  visibility: hidden;
  overflow: hidden;
  background: #fff;
  height: 20px; }

.elementor-nav-menu--main .elementor-nav-menu span.scroll-up-arrow, .elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow, .elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow {
  position: absolute;
  top: -2px;
  left: 50%;
  margin-left: -8px;
  width: 0;
  height: 0;
  overflow: hidden;
  border-width: 8px;
  border-style: dashed dashed solid dashed;
  border-color: transparent transparent #494c4f transparent; }

.elementor-nav-menu--main .elementor-nav-menu span.scroll-down-arrow {
  top: 6px;
  border-style: solid dashed dashed dashed;
  border-color: #494c4f transparent transparent transparent; }

.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow i {
  -webkit-transform: rotate(-90deg);
      -ms-transform: rotate(-90deg);
          transform: rotate(-90deg); }

.elementor-nav-menu--main .elementor-nav-menu--dropdown .sub-arrow .e-font-icon-svg {
  height: 1em;
  width: 1em; }

.elementor-nav-menu--layout-horizontal {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }
  .elementor-nav-menu--layout-horizontal .elementor-nav-menu {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap; }
    .elementor-nav-menu--layout-horizontal .elementor-nav-menu a {
      white-space: nowrap;
      -webkit-box-flex: 1;
          -ms-flex-positive: 1;
              flex-grow: 1; }
    .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li {
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex; }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li ul, .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li > .scroll-down {
        top: 100% !important; }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > a {
        -webkit-margin-start: var(--e-nav-menu-horizontal-menu-item-margin);
                margin-inline-start: var(--e-nav-menu-horizontal-menu-item-margin); }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > ul, .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > .scroll-down, .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:first-child) > .scroll-up {
        left: var(--e-nav-menu-horizontal-menu-item-margin) !important; }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:last-child) > a {
        -webkit-margin-end: var(--e-nav-menu-horizontal-menu-item-margin);
                margin-inline-end: var(--e-nav-menu-horizontal-menu-item-margin); }
      .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li:not(:last-child):after {
        content: var(--e-nav-menu-divider-content, none);
        border-left-width: var(--e-nav-menu-divider-width, 2px);
        border-left-style: var(--e-nav-menu-divider-style, solid);
        height: var(--e-nav-menu-divider-height, 35%);
        border-color: var(--e-nav-menu-divider-color, #000);
        -ms-flex-item-align: center;
            align-self: center; }

.elementor-nav-menu__align-right .elementor-nav-menu {
  margin-left: auto;
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor-nav-menu__align-right .elementor-nav-menu--layout-vertical > ul > li > a {
  -webkit-box-pack: end;
      -ms-flex-pack: end;
          justify-content: flex-end; }

.elementor-nav-menu__align-left .elementor-nav-menu {
  margin-right: auto;
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-nav-menu__align-left .elementor-nav-menu--layout-vertical > ul > li > a {
  -webkit-box-pack: start;
      -ms-flex-pack: start;
          justify-content: flex-start; }

.elementor-nav-menu__align-center .elementor-nav-menu {
  margin-left: auto;
  margin-right: auto;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-nav-menu__align-center .elementor-nav-menu--layout-vertical > ul > li > a {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu {
  width: 100%; }
  .elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1; }
    .elementor-nav-menu__align-justify .elementor-nav-menu--layout-horizontal .elementor-nav-menu > li > a {
      -webkit-box-pack: center;
          -ms-flex-pack: center;
              justify-content: center; }

.elementor-widget-nav-menu:not(.elementor-nav-menu--toggle) .elementor-menu-toggle {
  display: none; }

.elementor-widget-nav-menu .elementor-widget-container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column; }

.elementor-nav-menu {
  position: relative;
  z-index: 2; }
  .elementor-nav-menu:after {
    content: "\00a0";
    display: block;
    height: 0;
    font: 0px/0 serif;
    clear: both;
    visibility: hidden;
    overflow: hidden; }
  .elementor-nav-menu,
  .elementor-nav-menu ul,
  .elementor-nav-menu li {
    display: block;
    list-style: none;
    margin: 0;
    padding: 0;
    line-height: normal;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
  .elementor-nav-menu ul {
    display: none; }
    .elementor-nav-menu ul ul a,
    .elementor-nav-menu ul ul a:hover,
    .elementor-nav-menu ul ul a:focus,
    .elementor-nav-menu ul ul a:active {
      border-left: 16px solid transparent; }
    .elementor-nav-menu ul ul ul a,
    .elementor-nav-menu ul ul ul a:hover,
    .elementor-nav-menu ul ul ul a:focus,
    .elementor-nav-menu ul ul ul a:active {
      border-left: 24px solid transparent; }
    .elementor-nav-menu ul ul ul ul a,
    .elementor-nav-menu ul ul ul ul a:hover,
    .elementor-nav-menu ul ul ul ul a:focus,
    .elementor-nav-menu ul ul ul ul a:active {
      border-left: 32px solid transparent; }
    .elementor-nav-menu ul ul ul ul ul a,
    .elementor-nav-menu ul ul ul ul ul a:hover,
    .elementor-nav-menu ul ul ul ul ul a:focus,
    .elementor-nav-menu ul ul ul ul ul a:active {
      border-left: 40px solid transparent; }
  .elementor-nav-menu li,
  .elementor-nav-menu a {
    position: relative; }
  .elementor-nav-menu li {
    border-width: 0; }
  .elementor-nav-menu a {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .elementor-nav-menu a, .elementor-nav-menu a:hover, .elementor-nav-menu a:focus {
      padding: 10px 20px;
      line-height: 20px; }
    .elementor-nav-menu a.current {
      background: #373a3c;
      color: #fff; }
    .elementor-nav-menu a.disabled {
      cursor: not-allowed;
      color: #a1a6a9; }
  .elementor-nav-menu .e-plus-icon:before {
    content: '+'; }
  .elementor-nav-menu .sub-arrow {
    line-height: 1;
    padding: 10px 0 10px 10px;
    margin-top: -10px;
    margin-bottom: -10px;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .elementor-nav-menu .sub-arrow i {
      pointer-events: none; }
    .elementor-nav-menu .sub-arrow .fa.fa-chevron-down, .elementor-nav-menu .sub-arrow .fas.fa-chevron-down {
      font-size: 0.7em; }
    .elementor-nav-menu .sub-arrow .e-font-icon-svg {
      height: 1em;
      width: 1em; }
      .elementor-nav-menu .sub-arrow .e-font-icon-svg.fa-svg-chevron-down {
        height: 0.7em;
        width: 0.7em; }

.elementor-nav-menu--dropdown .elementor-item:hover, .elementor-nav-menu--dropdown .elementor-item:focus, .elementor-nav-menu--dropdown .elementor-item.highlighted, .elementor-nav-menu--dropdown .elementor-item.elementor-item-active,
.elementor-sub-item:hover,
.elementor-sub-item:focus,
.elementor-sub-item.highlighted,
.elementor-sub-item.elementor-item-active {
  background-color: #55595c;
  color: #fff; }

.elementor-menu-toggle {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  font-size: 22px;
  padding: 0.25em;
  cursor: pointer;
  border: 0 solid;
  border-radius: 3px;
  background-color: rgba(0, 0, 0, 0.05);
  color: #494c4f; }
  .elementor-menu-toggle.elementor-active .elementor-menu-toggle__icon--open {
    display: none; }
  .elementor-menu-toggle:not(.elementor-active) .elementor-menu-toggle__icon--close {
    display: none; }
  .elementor-menu-toggle .e-font-icon-svg {
    fill: #494c4f;
    height: 1em;
    width: 1em; }

.elementor-nav-menu--dropdown {
  background-color: #fff;
  font-size: 13px; }
  .elementor-nav-menu--dropdown-none .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-none .elementor-menu-toggle {
    display: none; }
  .elementor-nav-menu--dropdown.elementor-nav-menu__container {
    margin-top: 10px;
    -webkit-transition: max-height 0.3s, -webkit-transform 0.3s;
    transition: max-height 0.3s, -webkit-transform 0.3s;
    -o-transition: max-height 0.3s, transform 0.3s;
    transition: max-height 0.3s, transform 0.3s;
    transition: max-height 0.3s, transform 0.3s, -webkit-transform 0.3s;
    -webkit-transform-origin: top;
        -ms-transform-origin: top;
            transform-origin: top;
    overflow: auto; }
    .elementor-nav-menu--dropdown.elementor-nav-menu__container .elementor-sub-item {
      font-size: 0.85em; }
  .elementor-nav-menu--dropdown a {
    color: #494c4f; }
    .elementor-nav-menu--dropdown a.current {
      background: #373a3c;
      color: #fff; }
    .elementor-nav-menu--dropdown a.disabled {
      color: #b3b3b3; }

ul.elementor-nav-menu--dropdown a, ul.elementor-nav-menu--dropdown a:hover, ul.elementor-nav-menu--dropdown a:focus {
  text-shadow: none;
  border-left: 8px solid transparent; }

.elementor-nav-menu__text-align-center .elementor-nav-menu--dropdown .elementor-nav-menu a {
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center; }

.elementor-nav-menu--toggle .elementor-menu-toggle:not(.elementor-active) + .elementor-nav-menu__container {
  -webkit-transform: scaleY(0);
      -ms-transform: scaleY(0);
          transform: scaleY(0);
  max-height: 0; }

.elementor-nav-menu--toggle .elementor-menu-toggle.elementor-active + .elementor-nav-menu__container {
  -webkit-transform: scaleY(1);
      -ms-transform: scaleY(1);
          transform: scaleY(1);
  max-height: 100vh; }

.elementor-nav-menu--stretch .elementor-nav-menu__container.elementor-nav-menu--dropdown {
  position: absolute;
  z-index: 9997; }

/**
 * Mobile Hamburger Menu Breakpoint
 */
@media (max-width: 767px) {
  .elementor-nav-menu--dropdown-mobile .elementor-nav-menu--main {
    display: none; } }

@media (min-width: 768px) {
  .elementor-nav-menu--dropdown-mobile .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-mobile .elementor-menu-toggle {
    display: none; } }

/**
 * Mobile Extra Hamburger Menu Breakpoint
 */
@media (max-width: -1px) {
  .elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--main {
    display: none; } }

@media (min-width: -1px) {
  .elementor-nav-menu--dropdown-mobile_extra .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-mobile_extra .elementor-menu-toggle {
    display: none; } }

/**
 * Tablet Hamburger Menu Breakpoint
 */
@media (min-width: 1025px) {
  .elementor-nav-menu--dropdown-tablet .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-tablet .elementor-menu-toggle {
    display: none; } }

@media (max-width: 1024px) {
  .elementor-nav-menu--dropdown-tablet .elementor-nav-menu--main {
    display: none; } }

/**
 * Tablet Extra Hamburger Menu Breakpoint
 */
@media (max-width: -1px) {
  .elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--main {
    display: none; } }

@media (min-width: -1px) {
  .elementor-nav-menu--dropdown-tablet_extra .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown-tablet_extra .elementor-menu-toggle {
    display: none; } }

.elementor-gallery__container {
  min-height: 1px; }

.elementor-gallery-item {
  position: relative;
  overflow: hidden;
  display: block;
  text-decoration: none;
  border: solid var(--image-border-width) var(--image-border-color);
  border-radius: var(--image-border-radius); }
  .elementor-gallery-item__overlay, .elementor-gallery-item__content {
    height: 100%;
    width: 100%;
    position: absolute;
    top: 0;
    left: 0; }
  .elementor-gallery-item__overlay {
    mix-blend-mode: var(--overlay-mix-blend-mode);
    -webkit-transition-duration: var(--overlay-transition-duration);
         -o-transition-duration: var(--overlay-transition-duration);
            transition-duration: var(--overlay-transition-duration);
    -webkit-transition-property: mix-blend-mode, opacity, background-color, -webkit-transform;
    transition-property: mix-blend-mode, opacity, background-color, -webkit-transform;
    -o-transition-property: mix-blend-mode, transform, opacity, background-color;
    transition-property: mix-blend-mode, transform, opacity, background-color;
    transition-property: mix-blend-mode, transform, opacity, background-color, -webkit-transform; }
  .elementor-gallery-item__image.e-gallery-image {
    -webkit-transition-duration: var(--image-transition-duration);
         -o-transition-duration: var(--image-transition-duration);
            transition-duration: var(--image-transition-duration);
    -webkit-transition-property: -webkit-filter, -webkit-transform;
    transition-property: -webkit-filter, -webkit-transform;
    -o-transition-property: filter, transform;
    transition-property: filter, transform;
    transition-property: filter, transform, -webkit-filter, -webkit-transform; }
  .elementor-gallery-item__content {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    -webkit-box-pack: var(--content-justify-content, center);
        -ms-flex-pack: var(--content-justify-content, center);
            justify-content: var(--content-justify-content, center);
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    text-align: var(--content-text-align);
    padding: var(--content-padding); }
    .elementor-gallery-item__content > div {
      -webkit-transition-duration: var(--content-transition-duration);
           -o-transition-duration: var(--content-transition-duration);
              transition-duration: var(--content-transition-duration); }
    .elementor-gallery-item__content.elementor-gallery--sequenced-animation > div:nth-child(2) {
      -webkit-transition-delay: calc( ( var(--content-transition-delay) / 3 ));
           -o-transition-delay: calc( ( var(--content-transition-delay) / 3 ));
              transition-delay: calc( ( var(--content-transition-delay) / 3 )); }
    .elementor-gallery-item__content.elementor-gallery--sequenced-animation > div:nth-child(3) {
      -webkit-transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 2);
           -o-transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 2);
              transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 2); }
    .elementor-gallery-item__content.elementor-gallery--sequenced-animation > div:nth-child(4) {
      -webkit-transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 3);
           -o-transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 3);
              transition-delay: calc( ( var(--content-transition-delay) / 3 ) * 3); }
  .elementor-gallery-item__description {
    color: var(--description-text-color, #ffffff);
    width: 100%; }
  .elementor-gallery-item__title {
    color: var(--title-text-color, #ffffff);
    font-weight: bold;
    width: 100%; }

.elementor-gallery__titles-container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-pack: var(--titles-container-justify-content, center);
      -ms-flex-pack: var(--titles-container-justify-content, center);
          justify-content: var(--titles-container-justify-content, center);
  margin-bottom: 20px; }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:before {
    background-color: var(--galleries-pointer-bg-color-hover); }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item:after {
    background-color: var(--galleries-pointer-bg-color-hover); }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:before {
    background-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container:not(.e--pointer-framed) .elementor-item.elementor-item-active:after {
    background-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item:before {
    border-color: var(--galleries-pointer-bg-color-hover);
    border-width: var(--galleries-pointer-border-width); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item:after {
    border-color: var(--galleries-pointer-bg-color-hover); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:before {
    border-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container.e--pointer-framed .elementor-item.elementor-item-active:after {
    border-color: var(--galleries-pointer-bg-color-active); }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:before {
    border-width: 0 0 var(--galleries-pointer-border-width) var(--galleries-pointer-border-width); }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-draw .elementor-item:after {
    border-width: var(--galleries-pointer-border-width) var(--galleries-pointer-border-width) 0 0; }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:before {
    border-width: var(--galleries-pointer-border-width) 0 0 var(--galleries-pointer-border-width); }
  .elementor-gallery__titles-container.e--pointer-framed.e--animation-corners .elementor-item:after {
    border-width: 0 var(--galleries-pointer-border-width) var(--galleries-pointer-border-width) 0; }
  .elementor-gallery__titles-container .e--pointer-underline .elementor-item:after,
  .elementor-gallery__titles-container .e--pointer-overline .elementor-item:before,
  .elementor-gallery__titles-container .e--pointer-double-line .elementor-item:before,
  .elementor-gallery__titles-container .e--pointer-double-line .elementor-item:after {
    height: var(--galleries-pointer-border-width); }

.elementor-gallery-title {
  --space-between: 10px;
  cursor: pointer;
  color: #6D7882;
  font-weight: 500;
  position: relative;
  padding: 7px 14px;
  -webkit-transition: all 0.3s;
  -o-transition: all 0.3s;
  transition: all 0.3s; }
  .elementor-gallery-title--active {
    color: #495157; }
  .elementor-gallery-title:not(:last-child) {
    margin-right: var(--space-between); }

.elementor-gallery-item__title + .elementor-gallery-item__description {
  margin-top: var(--description-margin-top); }

.e-gallery-item.elementor-gallery-item {
  -webkit-transition-property: all;
  -o-transition-property: all;
  transition-property: all; }

.e-gallery-item:hover .elementor-gallery__item-overlay-bg {
  opacity: 1; }

.e-gallery-item:hover .elementor-gallery__item-overlay-content {
  opacity: 1; }
  .e-gallery-item:hover .elementor-gallery__item-overlay-content__title, .e-gallery-item:hover .elementor-gallery__item-overlay-content__description {
    opacity: 1; }

.e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-right, .e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-left, .e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-top, .e-gallery-item.elementor-animated-content .elementor-animated-item--enter-from-bottom {
  opacity: 1; }

a.elementor-item.elementor-gallery-title {
  color: var(--galleries-title-color-normal); }
  a.elementor-item.elementor-gallery-title:hover, a.elementor-item.elementor-gallery-title.elementor-item-active, a.elementor-item.elementor-gallery-title.highlighted, a.elementor-item.elementor-gallery-title:focus {
    color: var(--galleries-title-color-hover); }
  a.elementor-item.elementor-gallery-title.elementor-item-active {
    color: var(--gallery-title-color-active); }

.elementor-widget-table-of-contents .elementor-toc__header-title {
  color: var(--header-color); }

.elementor-widget-table-of-contents.elementor-toc--collapsed .elementor-toc__toggle-button--collapse {
  display: none; }

.elementor-widget-table-of-contents:not(.elementor-toc--collapsed) .elementor-toc__toggle-button--expand {
  display: none; }

.elementor-widget-table-of-contents .elementor-widget-container {
  min-height: var(--box-min-height);
  border: var(--box-border-width, 1px) solid var(--box-border-color, #a4afb7);
  border-radius: var(--box-border-radius, 3px);
  background-color: var(--box-background-color);
  -webkit-transition: min-height 0.4s;
  -o-transition: min-height 0.4s;
  transition: min-height 0.4s;
  overflow: hidden; }

.elementor-toc__header {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  padding: var(--box-padding, 20px);
  background-color: var(--header-background-color);
  border-bottom: var(--separator-width, 1px) solid var(--box-border-color, #a4afb7); }
  .elementor-toc__header-title {
    font-size: 18px;
    margin: 0;
    color: var(--header-color); }

.elementor-toc__toggle-button {
  cursor: pointer;
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex; }
  .elementor-toc__toggle-button i {
    color: var(--toggle-button-color); }
  .elementor-toc__toggle-button svg {
    fill: var(--toggle-button-color);
    height: 1em;
    width: 1em;
    fill: var(--toggle-button-color); }

.elementor-toc__spinner-container {
  text-align: center; }

.elementor-toc__spinner {
  font-size: 2em; }
  .elementor-toc__spinner.e-font-icon-svg {
    height: 1em;
    width: 1em; }

.elementor-toc__body {
  padding: var(--box-padding, 20px);
  max-height: var(--toc-body-max-height);
  overflow-y: auto; }
  .elementor-toc__body::-webkit-scrollbar {
    width: 7px; }
  .elementor-toc__body::-webkit-scrollbar-thumb {
    background-color: #c2cbd2;
    border-radius: 10px; }

.elementor-toc__list-wrapper {
  list-style: none;
  padding: 0; }

.elementor-toc__list-item {
  margin-bottom: 0.5em; }
  .elementor-toc__list-item.elementor-item-active {
    font-weight: bold; }
  .elementor-toc__list-item .elementor-toc__list-wrapper {
    margin-top: 0.5em;
    margin-left: var(--nested-list-indent, 1em); }
  .elementor-toc__list-item-text:hover {
    color: var(--item-text-hover-color);
    -webkit-text-decoration: var(--item-text-hover-decoration);
            text-decoration: var(--item-text-hover-decoration); }
  .elementor-toc__list-item-text.elementor-item-active {
    color: var(--item-text-active-color);
    -webkit-text-decoration: var(--item-text-active-decoration);
            text-decoration: var(--item-text-active-decoration); }
  .elementor-toc__list-item-text-wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center; }
    .elementor-toc__list-item-text-wrapper i, .elementor-toc__list-item-text-wrapper:before {
      margin-right: 8px;
      color: var(--marker-color); }
    .elementor-toc__list-item-text-wrapper svg {
      margin-right: 8px;
      fill: var(--marker-color);
      height: var(--marker-size, 0.5em);
      width: var(--marker-size, 0.5em); }
    .elementor-toc__list-item-text-wrapper i {
      font-size: var(--marker-size, 0.5em); }
    .elementor-toc__list-item-text-wrapper:before {
      font-size: var(--marker-size, 1em); }

.elementor-toc--content-ellipsis .elementor-toc__list-item-text {
  white-space: nowrap;
  overflow: hidden;
  -o-text-overflow: ellipsis;
     text-overflow: ellipsis; }

.elementor-toc__list-items--collapsible > .elementor-toc__list-wrapper > .elementor-toc__list-item > .elementor-toc__list-wrapper {
  display: none; }

.elementor-toc__heading-anchor {
  position: absolute; }

.elementor-toc__body .elementor-toc__list-item-text {
  color: var(--item-text-color);
  -webkit-text-decoration: var(--item-text-decoration);
          text-decoration: var(--item-text-decoration); }
  .elementor-toc__body .elementor-toc__list-item-text:hover {
    color: var(--item-text-hover-color);
    -webkit-text-decoration: var(--item-text-hover-decoration);
            text-decoration: var(--item-text-hover-decoration); }
  .elementor-toc__body .elementor-toc__list-item-text.elementor-item-active {
    color: var(--item-text-active-color);
    -webkit-text-decoration: var(--item-text-active-decoration);
            text-decoration: var(--item-text-active-decoration); }

ol.elementor-toc__list-wrapper {
  counter-reset: item; }
  ol.elementor-toc__list-wrapper .elementor-toc__list-item {
    counter-increment: item; }
    ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper:before {
      content: counters(item, ".") ". "; }

@media only screen and (max-width: -1px) {
  .elementor-toc--minimized-on-tablet_extra .elementor-toc__body {
    display: none; } }

@media only screen and (max-width: 1024px) {
  .elementor-toc--minimized-on-tablet .elementor-toc__body {
    display: none; } }

@media only screen and (max-width: -1px) {
  .elementor-toc--minimized-on-mobile_extra .elementor-toc__body {
    display: none; } }

@media only screen and (max-width: 767px) {
  .elementor-toc--minimized-on-mobile .elementor-toc__body {
    display: none; } }

.e-lottie__container {
  display: inline-block;
  max-width: var(--lottie-container-max-width);
  width: var(--lottie-container-width);
  opacity: var(--lottie-container-opacity); }
  .e-lottie__container:hover {
    opacity: var(--lottie-container-opacity-hover);
    -webkit-transition-duration: var(--lottie-container-transition-duration-hover);
         -o-transition-duration: var(--lottie-container-transition-duration-hover);
            transition-duration: var(--lottie-container-transition-duration-hover); }
  .e-lottie__container svg,
  .e-lottie__container svg * {
    -webkit-transition: none !important;
    -o-transition: none !important;
    transition: none !important; }

.e-lottie__caption {
  color: var(--caption-color);
  margin-top: var(--caption-margin-top);
  text-align: var(--caption-text-align); }

/* Video_Playlist Widget */
.e-tabs-inner-tabs {
  text-align: left;
  font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
  font-size: 16px; }
  .e-tabs-inner-tabs .e-tab-content {
    padding-top: 32px; }
  .e-tabs-inner-tabs .e-inner-tabs-wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    position: relative;
    overflow: hidden;
    z-index: 1; }
    .e-tabs-inner-tabs .e-inner-tabs-wrapper :after {
      content: '';
      width: 100%;
      height: var(--inner-tabs-border-height, 1px);
      background-color: var(--inner-tabs-border-color, #d5dadf);
      position: absolute;
      bottom: 0;
      z-index: -1; }
    .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title {
      font-weight: 700;
      min-width: 140px;
      line-height: 38px;
      height: 38px;
      -webkit-box-sizing: content-box;
              box-sizing: content-box; }
      .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title a {
        color: #6d7882;
        padding: 0 36px;
        display: block;
        text-align: center; }
      .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active {
        border-bottom: 0 solid transparent;
        border-color: #495157;
        border-width: 0 0 1px 0; }
        .e-tabs-inner-tabs .e-inner-tabs-wrapper .e-inner-tab-title.e-inner-tab-active a {
          color: #495157; }
  .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title {
    display: none; }
  .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content {
    display: none;
    padding: 20px; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-text {
      color: #556068; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.e-inner-tab-active {
      display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons {
      margin-top: 24px;
      display: none; }
      .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content .e-inner-tab-buttons button {
        display: none;
        font-weight: 500;
        line-height: 24px;
        text-decoration: underline;
        border: none;
        background: transparent;
        padding: 0; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible .e-inner-tab-text {
      overflow: hidden; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button {
      display: none; }
      .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible button.show-button {
        display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.collapsible.show-inner-tab-buttons .e-inner-tab-buttons {
      display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content.show-full-height div.e-inner-tab-text {
      height: auto; }

@media (max-width: 767px) {
  .e-tabs-inner-tabs > .e-tab-content:first-child {
    padding-top: 24px; }
  .e-tabs-inner-tabs .e-inner-tabs-wrapper {
    display: none; }
  .e-tabs-inner-tabs .e-inner-tabs-content-wrapper {
    border-width: 1px 1px 0;
    border-style: solid;
    border-color: #d5dadf; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-tab-mobile-title {
      border-width: 0 0 1px;
      border-style: solid;
      border-color: #d5dadf;
      font-size: 16px;
      font-weight: 700;
      text-align: center;
      height: 38px;
      line-height: 38px;
      -o-text-overflow: ellipsis;
         text-overflow: ellipsis;
      white-space: nowrap;
      overflow: hidden;
      padding: 0 10px;
      cursor: pointer;
      display: block; }
    .e-tabs-inner-tabs .e-inner-tabs-content-wrapper .e-inner-tab-content {
      border-width: 0 0 1px;
      border-style: solid;
      border-color: #d5dadf;
      padding: 20px; } }

.elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area {
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
      -ms-flex-direction: row;
          flex-direction: row; }

@media (max-width: 767px) {
  .elementor-widget-video-playlist.elementor-layout-end .e-tabs-main-area {
    -webkit-box-orient: vertical;
    -webkit-box-direction: reverse;
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse; } }

.elementor-widget-video-playlist {
  font-family: Roboto, Arial, Helvetica, Verdana, sans-serif; }
  .elementor-widget-video-playlist .e-tabs {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column; }
  .elementor-widget-video-playlist .e-tabs-main-area {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse;
    height: 434px; }
  .elementor-widget-video-playlist .e-tabs-wrapper {
    height: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    width: 33%; }
  .elementor-widget-video-playlist .e-tabs-header {
    background-color: #ffffff;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-flex: 0;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    padding: 0 16px;
    min-height: 56px;
    border-bottom: 1px solid #d5dadf; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-header-right-side {
      display: -webkit-inline-box;
      display: -ms-inline-flexbox;
      display: inline-flex;
      -ms-flex-negative: 0;
          flex-shrink: 0; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-title {
      font-family: Roboto, Arial, Helvetica, Verdana, sans-serif;
      -o-text-overflow: ellipsis;
         text-overflow: ellipsis;
      font-weight: 700;
      font-size: 16px;
      padding: 10px 0;
      overflow-wrap: anywhere;
      -webkit-hyphens: auto;
          -ms-hyphens: auto;
              hyphens: auto;
      margin: auto 0; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count {
      font-size: 14px;
      -ms-flex-negative: 0;
          flex-shrink: 0;
      font-weight: 400;
      line-height: 20px;
      -ms-flex-item-align: start;
          align-self: flex-start;
      padding: 18px 0 0; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button {
      display: none;
      margin: auto 0 auto 8px;
      cursor: pointer;
      padding: 0 4px; }
      .elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button.e-font-icon-svg {
        height: 1em;
        width: 1em; }
    .elementor-widget-video-playlist .e-tabs-header .rotate-up {
      -webkit-transform: rotate(-180deg);
          -ms-transform: rotate(-180deg);
              transform: rotate(-180deg);
      -webkit-transition: .3s;
      -o-transition: .3s;
      transition: .3s; }
    .elementor-widget-video-playlist .e-tabs-header .rotate-down {
      -webkit-transform: rotate(0deg);
          -ms-transform: rotate(0deg);
              transform: rotate(0deg);
      -webkit-transition: .3s;
      -o-transition: .3s;
      transition: .3s; }
  .elementor-widget-video-playlist .e-tabs-items-wrapper {
    background-color: #ffffff;
    overflow: hidden;
    position: relative;
    height: 100%; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom {
      background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(#ffffff));
      background: -webkit-linear-gradient(top, transparent 0%, #ffffff 100%);
      background: -o-linear-gradient(top, transparent 0%, #ffffff 100%);
      background: linear-gradient(180deg, transparent 0%, #ffffff 100%); }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top {
      background: -webkit-gradient(linear, left bottom, left top, from(transparent), to(#ffffff));
      background: -webkit-linear-gradient(bottom, transparent 0%, #ffffff 100%);
      background: -o-linear-gradient(bottom, transparent 0%, #ffffff 100%);
      background: linear-gradient(0deg, transparent 0%, #ffffff 100%); }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items {
      overflow: auto;
      height: 100%; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-section-title {
      border-color: #d5dadf;
      border-width: 1px 0 0 0;
      font-size: 14px;
      height: 36px;
      padding: 0 16px;
      line-height: 36px;
      margin: 0;
      text-align: left;
      -o-text-overflow: ellipsis;
         text-overflow: ellipsis;
      white-space: nowrap;
      overflow: hidden;
      border-width: 0;
      -webkit-box-sizing: content-box;
              box-sizing: content-box; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title {
      background-color: #ffffff;
      border-color: #d5dadf;
      border-width: 0 0 1px 0;
      cursor: pointer;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      font-size: 14px;
      height: 55px;
      line-height: 55px;
      outline: none;
      padding: 0 16px;
      -webkit-box-sizing: content-box;
              box-sizing: content-box; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i {
        text-shadow: 0 0 3px #000000;
        color: #ffffff;
        font-size: var(--playlist-item-icon-size, 16px); }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg {
        text-shadow: 0 0 3px #000000;
        color: #ffffff;
        fill: #ffffff;
        width: var(--playlist-item-icon-size, 16px);
        height: var(--playlist-item-icon-size, 16px); }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg path {
          fill: #ffffff; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover {
        background-color: #f1f3f5;
        border-color: #d5dadf;
        border-width: 0 0 1px 0; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active i, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover i {
          text-shadow: 0 0 3px #000000;
          color: #ffffff; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg {
          text-shadow: 0 0 3px #000000;
          color: #ffffff; }
          .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active svg path, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover svg path {
            fill: #ffffff; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.e-active .e-tab-title-text, .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title:hover .e-tab-title-text {
          font-size: 14px; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-play,
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched {
        display: -webkit-inline-box;
        display: -ms-inline-flexbox;
        display: inline-flex; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail {
        background-color: #d5dadf;
        position: relative;
        margin: auto 0;
        -ms-flex-negative: 0;
            flex-shrink: 0;
        width: 75px;
        height: 42px; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail img {
          -o-object-fit: fill;
             object-fit: fill;
          width: 75px;
          height: 42px; }
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail i,
        .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-thumbnail svg {
          position: absolute;
          bottom: 4px;
          right: 4px;
          font-weight: 900; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-title-text {
        font-size: 14px;
        margin: auto 8px;
        text-align: left;
        -o-text-overflow: ellipsis;
           text-overflow: ellipsis;
        white-space: nowrap;
        overflow: hidden;
        -webkit-box-flex: 1;
            -ms-flex-positive: 1;
                flex-grow: 1; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title i,
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title svg {
        margin: auto 0;
        vertical-align: middle; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .e-tab-duration {
        font-size: 14px;
        margin: auto 0; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title .icon-watched {
        display: none; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-play {
        display: none; }
      .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tab-title.watched-video .icon-watched {
        display: block; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-top {
      display: none;
      height: 98px;
      position: absolute;
      top: 0;
      width: 100%;
      pointer-events: none;
      background: -webkit-gradient(linear, left bottom, left top, from(transparent), to(#ffffff));
      background: -webkit-linear-gradient(bottom, transparent 0%, #ffffff 100%);
      background: -o-linear-gradient(bottom, transparent 0%, #ffffff 100%);
      background: linear-gradient(0deg, transparent 0%, #ffffff 100%); }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .shadow-bottom {
      display: none;
      height: 98px;
      position: absolute;
      bottom: 0;
      width: 100%;
      background: -webkit-gradient(linear, left top, left bottom, from(transparent), to(#ffffff));
      background: -webkit-linear-gradient(top, transparent 0%, #ffffff 100%);
      background: -o-linear-gradient(top, transparent 0%, #ffffff 100%);
      background: linear-gradient(180deg, transparent 0%, #ffffff 100%);
      pointer-events: none; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper.top-shadow .shadow-top {
      display: block; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper.bottom-shadow .shadow-bottom {
      display: block; }
  .elementor-widget-video-playlist .e-tabs-content-wrapper {
    -webkit-box-flex: 1;
        -ms-flex-positive: 1;
            flex-grow: 1;
    height: 100%;
    position: relative; }
    .elementor-widget-video-playlist .e-tabs-content-wrapper .elementor-custom-embed-image-overlay {
      cursor: pointer;
      text-align: center;
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      -webkit-background-size: cover;
              background-size: cover;
      background-position: 50%; }
    .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-mobile-title {
      display: none; }
    .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content {
      background-color: #000000;
      display: none;
      height: 100%;
      outline: none; }
      .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content > div {
        height: 100%; }
      .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content iframe {
        height: 100%;
        max-height: 100% !important;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex; }
      .elementor-widget-video-playlist .e-tabs-content-wrapper .e-tab-content video {
        height: 100%;
        background-color: #000000; }
  .elementor-widget-video-playlist .e-tabs-inner-tabs .e-tab-content {
    display: none;
    outline: none; }

@media (max-width: 767px) {
  .elementor-widget-video-playlist .e-tabs-main-area {
    -webkit-box-orient: vertical;
    -webkit-box-direction: reverse;
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse;
    height: auto; }
    .elementor-widget-video-playlist .e-tabs-main-area .e-tabs-content-wrapper {
      border: none;
      height: 38%; }
  .elementor-widget-video-playlist .e-tabs-wrapper {
    width: auto;
    height: 62%; }
  .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items {
    max-height: 248px; }
    .elementor-widget-video-playlist .e-tabs-items-wrapper .e-tabs-items .e-tab-title {
      border: none; }
  .elementor-widget-video-playlist .e-tabs-header {
    min-height: 48px; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-toggle-videos-display-button {
      display: -webkit-inline-box;
      display: -ms-inline-flexbox;
      display: inline-flex; }
    .elementor-widget-video-playlist .e-tabs-header .e-tabs-videos-count {
      margin: 0 6px;
      padding: 14px 0 0; }
  .elementor-widget-video-playlist .e-tab-content {
    border: none;
    padding: 0;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; } }

.elementor-payment-button {
  border: none; }

.elementor-scrolling-tracker {
  --scrolling-track-default-progress-color: #61ce70;
  --scrolling-track-default-color: #eeeeee;
  --scrolling-track-precentage-default-color: $black; }

.elementor-scrolling-tracker-horizontal {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  width: 100%;
  height: var(--horizontal-height, 20px);
  padding: var(--tracker-padding);
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  border-top-width: var(--horizontal-border-top-width, 2px);
  border-right-width: var(--horizontal-border-right-width, 2px);
  border-bottom-width: var(--horizontal-border-bottom-width, 2px);
  border-left-width: var(--horizontal-border-left-width, 2px);
  border-style: var(--horizontal-border-style);
  border-color: var(--horizontal-border-color);
  border-radius: var(--border-radius);
  background-color: var(--scrolling-track-default-color);
  direction: var(--direction); }
  .elementor-scrolling-tracker-horizontal .current-progress {
    display: none;
    height: 100%;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    position: relative;
    border-radius: var(--progress-border-radius);
    border-top-width: var(--horizontal-progress-border-top-width, 2px);
    border-right-width: var(--horizontal-progress-border-right-width, 2px);
    border-bottom-width: var(--horizontal-progress-border-bottom-width, 2px);
    border-left-width: var(--horizontal-progress-border-left-width, 2px);
    border-style: var(--horizontal-progress-border);
    border-color: var(--horizontal-progress-border-color);
    background-color: var(--scrolling-track-default-progress-color); }
    .elementor-scrolling-tracker-horizontal .current-progress .current-progress-percentage {
      inset-inline-end: 0.5em;
      inset-inline-start: auto;
      position: absolute;
      direction: var(--text-direction);
      color: var(--percentage-color, var(--scrolling-track-precentage-default-color)); }

.elementor-scrolling-tracker-circular {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  width: var(--circular-width, 100px);
  height: var(--circular-height, 100px);
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  position: relative;
  -webkit-margin-start: 0;
          margin-inline-start: 0;
  -webkit-margin-end: auto;
          margin-inline-end: auto; }
  .elementor-scrolling-tracker-circular .current-progress-percentage {
    position: absolute;
    color: var(--percentage-color, var(--scrolling-track-precentage-default-color)); }
  .elementor-scrolling-tracker-circular svg {
    position: absolute; }
  .elementor-scrolling-tracker-circular .current-progress {
    display: none;
    -webkit-transform: rotate(-90deg);
        -ms-transform: rotate(-90deg);
            transform: rotate(-90deg);
    -webkit-transform-origin: 50% 50%;
        -ms-transform-origin: 50% 50%;
            transform-origin: 50% 50%;
    stroke: var(--circular-color, var(--scrolling-track-default-progress-color));
    fill: transparent;
    stroke-width: var(--circular-progress-width, 4px); }
  .elementor-scrolling-tracker-circular .circle {
    stroke: var(--circular-background-color, var(--scrolling-track-default-color));
    fill: transparent;
    stroke-width: var(--circular-background-width, 4px); }

.elementor-scrolling-tracker-alignment-left {
  margin-left: 0;
  margin-right: auto; }

.elementor-scrolling-tracker-alignment-center {
  margin-left: auto;
  margin-right: auto; }

.elementor-scrolling-tracker-alignment-right {
  margin-left: auto;
  margin-right: 0; }

.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-1 ul.products li.product {
  width: 100%; }

.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-2 ul.products li.product {
  width: 50%; }

.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-3 ul.products li.product {
  width: 33.33333%; }

.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-4 ul.products li.product {
  width: 25%; }

.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-5 ul.products li.product {
  width: 20%; }

.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-6 ul.products li.product {
  width: 16.66667%; }

.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-7 ul.products li.product {
  width: 14.28571%; }

.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-8 ul.products li.product {
  width: 12.5%; }

.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-9 ul.products li.product {
  width: 11.11111%; }

.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-10 ul.products li.product {
  width: 10%; }

.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-11 ul.products li.product {
  width: 9.09091%; }

.elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-12 ul.products li.product {
  width: 8.33333%; }

@media (max-width: 1024px) {
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-1 ul.products li.product {
    width: 100%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-2 ul.products li.product {
    width: 50%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-3 ul.products li.product {
    width: 33.33333%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-4 ul.products li.product {
    width: 25%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-5 ul.products li.product {
    width: 20%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-6 ul.products li.product {
    width: 16.66667%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-7 ul.products li.product {
    width: 14.28571%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-8 ul.products li.product {
    width: 12.5%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-9 ul.products li.product {
    width: 11.11111%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-10 ul.products li.product {
    width: 10%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-11 ul.products li.product {
    width: 9.09091%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-tablet-12 ul.products li.product {
    width: 8.33333%; } }

@media (max-width: 767px) {
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-1 ul.products li.product {
    width: 100%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-2 ul.products li.product {
    width: 50%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-3 ul.products li.product {
    width: 33.33333%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-4 ul.products li.product {
    width: 25%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-5 ul.products li.product {
    width: 20%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-6 ul.products li.product {
    width: 16.66667%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-7 ul.products li.product {
    width: 14.28571%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-8 ul.products li.product {
    width: 12.5%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-9 ul.products li.product {
    width: 11.11111%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-10 ul.products li.product {
    width: 10%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-11 ul.products li.product {
    width: 9.09091%; }
  .elementor-msie .elementor-element.elementor-wc-products.elementor-products-columns-mobile-12 ul.products li.product {
    width: 8.33333%; } }

.elementor-msie .elementor-element.elementor-wc-products ul.products, .elementor-msie .elementor-posts {
  margin-right: -10px;
  margin-left: -10px; }
  .elementor-msie .elementor-element.elementor-wc-products ul.products li.product, .elementor-msie .elementor-element.elementor-wc-products ul.products .elementor-post, .elementor-msie .elementor-posts li.product, .elementor-msie .elementor-posts .elementor-post {
    padding-right: 10px;
    padding-left: 10px;
    margin-bottom: 20px; }
  .elementor-msie .elementor-element.elementor-wc-products ul.products .elementor-post, .elementor-msie .elementor-posts .elementor-post {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex; }
/*# sourceMappingURL=frontend-msie.css.map */assets/css/widget-popup-rtl.min.css000064400000002124150755004320013355 0ustar00/*! elementor-pro - v3.5.2 - 28-11-2021 */
[data-elementor-type=popup] .elementor-section-wrap:not(:empty)+#elementor-add-new-section,[data-elementor-type=popup]:not(.elementor-edit-area){display:none}.elementor-popup-modal{display:-webkit-box;display:-ms-flexbox;display:flex;pointer-events:none;background-color:transparent;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.elementor-popup-modal .dialog-buttons-wrapper,.elementor-popup-modal .dialog-header{display:none}.elementor-popup-modal .dialog-close-button{display:none;top:20px;margin-top:0;left:20px;opacity:1;z-index:9999;pointer-events:all}.elementor-popup-modal .dialog-close-button svg{fill:#373a3c;height:1em;width:1em}.elementor-popup-modal .dialog-widget-content{width:auto;overflow:visible;max-width:100%;max-height:100%;border-radius:0;-webkit-box-shadow:none;box-shadow:none;pointer-events:all}.elementor-popup-modal .dialog-message{width:640px;max-width:100vw;max-height:100vh;padding:0;overflow:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.elementor-popup-modal .elementor{width:100%}core/admin/canary-deployment.php000064400000001164150755004320012733 0ustar00<?php
namespace ElementorPro\Core\Admin;

use ElementorPro\License\API;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Canary_Deployment extends \Elementor\Core\Admin\Canary_Deployment {

	const CURRENT_VERSION = ELEMENTOR_PRO_VERSION;
	const PLUGIN_BASE = ELEMENTOR_PRO_PLUGIN_BASE;

	protected function get_canary_deployment_remote_info( $force ) {
		$version_info = API::get_version( false );
		$canary_info = [];

		if ( ! is_wp_error( $version_info ) && ! empty( $version_info['canary_deployment'] ) ) {
			$canary_info = $version_info['canary_deployment'];
		}

		return $canary_info;
	}
}
core/admin/admin.php000064400000017266150755004320010402 0ustar00<?php
namespace ElementorPro\Core\Admin;

use Elementor\Core\Base\App;
use Elementor\Rollback;
use Elementor\Settings;
use Elementor\Tools;
use Elementor\Utils;
use ElementorPro\License\API;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Admin extends App {

	/**
	 * Get module name.
	 *
	 * Retrieve the module name.
	 *
	 * @since 2.3.0
	 * @access public
	 *
	 * @return string Module name.
	 */
	public function get_name() {
		return 'admin';
	}

	/**
	 * Enqueue admin styles.
	 *
	 * @since 1.0.0
	 * @return void
	 */
	public function enqueue_styles() {
		$suffix = Utils::is_script_debug() ? '' : '.min';

		$direction_suffix = is_rtl() ? '-rtl' : '';

		wp_register_style(
			'elementor-pro-admin',
			ELEMENTOR_PRO_ASSETS_URL . 'css/admin' . $direction_suffix . $suffix . '.css',
			[],
			ELEMENTOR_PRO_VERSION
		);

		wp_enqueue_style( 'elementor-pro-admin' );
	}

	public function enqueue_scripts() {
		$suffix = Utils::is_script_debug() ? '' : '.min';

		wp_enqueue_script(
			'elementor-pro-admin',
			ELEMENTOR_PRO_URL . 'assets/js/admin' . $suffix . '.js',
			[
				'elementor-common',
			],
			ELEMENTOR_PRO_VERSION,
			true
		);

		$locale_settings = [];

		/**
		 * Localize admin settings.
		 *
		 * Filters the admin localized settings.
		 *
		 * @since 1.0.0
		 *
		 * @param array $locale_settings Localized settings.
		 */
		$locale_settings = apply_filters( 'elementor_pro/admin/localize_settings', $locale_settings );

		Utils::print_js_config(
			'elementor-pro-admin',
			'ElementorProConfig',
			$locale_settings
		);
	}

	public function remove_go_pro_menu() {
		remove_action( 'admin_menu', [ Plugin::elementor()->settings, 'register_pro_menu' ], Settings::MENU_PRIORITY_GO_PRO );
	}

	private function get_rollback_versions() {
		$rollback_versions = get_transient( 'elementor_pro_rollback_versions_' . ELEMENTOR_PRO_VERSION );
		if ( false === $rollback_versions ) {
			$max_versions = 30;

			$versions = API::get_previous_versions();

			if ( is_wp_error( $versions ) ) {
				return [];
			}

			$rollback_versions = [];

			$current_index = 0;
			foreach ( $versions as $version ) {
				if ( $max_versions <= $current_index ) {
					break;
				}

				$lowercase_version = strtolower( $version );
				$is_valid_rollback_version = ! preg_match( '/(trunk|beta|rc|dev)/i', $lowercase_version );

				$is_valid_rollback_version = apply_filters(
					'elementor-pro/settings/tools/rollback/is_valid_rollback_version',
					$is_valid_rollback_version,
					$lowercase_version
				);

				if ( ! $is_valid_rollback_version ) {
					continue;
				}

				if ( version_compare( $version, ELEMENTOR_VERSION, '>=' ) ) {
					continue;
				}

				$current_index++;
				$rollback_versions[] = $version;
			}

			set_transient( 'elementor_pro_rollback_versions_' . ELEMENTOR_PRO_VERSION, $rollback_versions, WEEK_IN_SECONDS );
		}

		return $rollback_versions;
	}

	public function register_admin_tools_fields( Tools $tools ) {
		$rollback_html = '<select class="elementor-rollback-select">';

		foreach ( $this->get_rollback_versions() as $version ) {
			$rollback_html .= "<option value='{$version}'>$version</option>";
		}
		$rollback_html .= '</select>';

		// Rollback
		$tools->add_fields( 'versions', 'rollback', [
			'rollback_pro_separator' => [
				'field_args' => [
					'type' => 'raw_html',
					'html' => '<hr>',
				],
			],
			'rollback_pro' => [
				'label' => esc_html__( 'Rollback Pro Version', 'elementor-pro' ),
				'field_args' => [
					'type' => 'raw_html',
					'html' => sprintf(
						$rollback_html . '<a data-placeholder-text="' . esc_html__( 'Reinstall', 'elementor-pro' ) . ' v{VERSION}" href="#" data-placeholder-url="%s" class="button elementor-button-spinner elementor-rollback-button">%s</a>',
						wp_nonce_url( admin_url( 'admin-post.php?action=elementor_pro_rollback&version=VERSION' ), 'elementor_pro_rollback' ),
						__( 'Reinstall', 'elementor-pro' )
					),
					'desc' => '<span style="color: red;">' . esc_html__( 'Warning: Please backup your database before making the rollback.', 'elementor-pro' ) . '</span>',
				],
			],
		] );
	}

	public function post_elementor_pro_rollback() {
		check_admin_referer( 'elementor_pro_rollback' );

		$rollback_versions = $this->get_rollback_versions();
		if ( empty( $_GET['version'] ) || ! in_array( $_GET['version'], $rollback_versions, true ) ) {
			wp_die( esc_html__( 'Error occurred, The version selected is invalid. Try selecting different version.', 'elementor-pro' ) );
		}

		$package_url = API::get_plugin_package_url( $_GET['version'] );
		if ( is_wp_error( $package_url ) ) {
			wp_die( $package_url ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		}

		$plugin_slug = basename( ELEMENTOR_PRO__FILE__, '.php' );

		$rollback = new Rollback( [
			'version' => $_GET['version'],
			'plugin_name' => ELEMENTOR_PRO_PLUGIN_BASE,
			'plugin_slug' => $plugin_slug,
			'package_url' => $package_url,
		] );

		$rollback->run();

		wp_die( '', esc_html__( 'Rollback to Previous Version', 'elementor-pro' ), [ 'response' => 200 ] );
	}

	public function plugin_action_links( $links ) {
		unset( $links['go_pro'] );

		return $links;
	}

	public function plugin_row_meta( $plugin_meta, $plugin_file ) {
		if ( ELEMENTOR_PRO_PLUGIN_BASE === $plugin_file ) {
			$plugin_slug = basename( ELEMENTOR_PRO__FILE__, '.php' );
			$plugin_name = esc_html__( 'Elementor Pro', 'elementor-pro' );

			$row_meta = [
				'view-details' => sprintf( '<a href="%s" class="thickbox open-plugin-details-modal" aria-label="%s" data-title="%s">%s</a>',
					esc_url( network_admin_url( 'plugin-install.php?tab=plugin-information&plugin=' . $plugin_slug . '&TB_iframe=true&width=600&height=550' ) ),
					/* translators: %s: Plugin name - Elementor Pro. */
					esc_attr( sprintf( esc_html__( 'More information about %s', 'elementor-pro' ), $plugin_name ) ),
					esc_attr( $plugin_name ),
					__( 'View details', 'elementor-pro' )
				),
				'changelog' => '<a href="https://go.elementor.com/pro-changelog/" title="' . esc_attr( esc_html__( 'View Elementor Pro Changelog', 'elementor-pro' ) ) . '" target="_blank">' . esc_html__( 'Changelog', 'elementor-pro' ) . '</a>',
			];

			$plugin_meta = array_merge( $plugin_meta, $row_meta );
		}

		return $plugin_meta;
	}

	public function change_tracker_params( $params ) {
		unset( $params['is_first_time'] );

		return $params;
	}

	public function add_finder_items( array $categories ) {
		$settings_url = Settings::get_url();

		$categories['settings']['items']['integrations'] = [
			'title' => esc_html__( 'Integrations', 'elementor-pro' ),
			'icon' => 'integration',
			'url' => $settings_url . '#tab-integrations',
			'keywords' => [ 'integrations', 'settings', 'typekit', 'facebook', 'recaptcha', 'mailchimp', 'drip', 'activecampaign', 'getresponse', 'convertkit', 'elementor' ],
		];

		return $categories;
	}

	/**
	 * Admin constructor.
	 */
	public function __construct() {
		$this->add_component( 'canary-deployment', new Canary_Deployment() );

		add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_styles' ] );
		add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] );
		add_action( 'admin_menu', [ $this, 'remove_go_pro_menu' ], 0 );

		add_action( 'elementor/admin/after_create_settings/' . Tools::PAGE_ID, [ $this, 'register_admin_tools_fields' ], 50 );

		add_filter( 'plugin_action_links_' . ELEMENTOR_PLUGIN_BASE, [ $this, 'plugin_action_links' ], 50 );
		add_filter( 'plugin_row_meta', [ $this, 'plugin_row_meta' ], 10, 2 );

		add_filter( 'elementor/finder/categories', [ $this, 'add_finder_items' ] );

		add_filter( 'elementor/tracker/send_tracking_data_params', [ $this, 'change_tracker_params' ], 200 );
		add_action( 'admin_post_elementor_pro_rollback', [ $this, 'post_elementor_pro_rollback' ] );
	}
}
core/utils/registrar.php000064400000002217150755004320011352 0ustar00<?php

namespace ElementorPro\Core\Utils;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/**
 * Basic items registrar.
 *
 * TODO: Move to Core.
 */
class Registrar {

	/**
	 * @var array
	 */
	private $items;

	/**
	 * Registrar constructor.
	 *
	 * @return void
	 */
	public function __construct() {
		$this->items = [];
	}

	/**
	 * Register a new item.
	 *
	 * @param           $instance - Item instance.
	 * @param string    $id - Optional - For BC - Deprecated.
	 *
	 * @return boolean - Whether the item was registered.
	 */
	public function register( $instance, $id = null ) {
		// TODO: For BC. Remove in the future.
		if ( ! $id ) {
			// Get the ID or default to the class name.
			$id = ( method_exists( $instance, 'get_id' ) ) ? $instance->get_id() : get_class( $instance );
		}

		if ( $this->get( $id ) ) {
			return false;
		}

		$this->items[ $id ] = $instance;

		return true;
	}

	/**
	 * Get an item by ID.
	 *
	 * @param string $id
	 *
	 * @return array|null
	 */
	public function get( $id = null ) {
		if ( ! $id ) {
			return $this->items;
		}

		return isset( $this->items[ $id ] ) ? $this->items[ $id ] : null;
	}
}
core/editor/editor.php000064400000005353150755004320010770 0ustar00<?php
namespace ElementorPro\Core\Editor;

use Elementor\Core\Base\App;
use ElementorPro\License\Admin as License_Admin;
use ElementorPro\License\API as License_API;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Editor extends App {

	/**
	 * Get app name.
	 *
	 * Retrieve the app name.
	 *
	 * @return string app name.
	 * @since  2.6.0
	 * @access public
	 *
	 */
	public function get_name() {
		return 'pro-editor';
	}

	public function __construct() {
		add_action( 'elementor/init', [ $this, 'on_elementor_init' ] );
		add_action( 'elementor/editor/init', [ $this, 'on_elementor_editor_init' ] );
		add_action( 'elementor/editor/after_enqueue_styles', [ $this, 'enqueue_editor_styles' ] );
		add_action( 'elementor/editor/before_enqueue_scripts', [ $this, 'enqueue_editor_scripts' ] );

		add_filter( 'elementor/editor/localize_settings', [ $this, 'localize_settings' ] );
	}

	public function get_init_settings() {
		$settings = [
			'i18n' => [
				// 'edit_element' is here for Backwards Compatibility for Elementor Pro versions <3.1.0
				'edit_element' => esc_html__( 'Edit %s', 'elementor-pro' ),
			],
			'isActive' => License_API::is_license_active(),
			'urls' => [
				'modules' => ELEMENTOR_PRO_MODULES_URL,
				'connect' => License_Admin::get_url(),
			],
		];

		/**
		 * Editor settings.
		 *
		 * Filters the editor settings.
		 *
		 * @since 1.0.0
		 *
		 * @param array $settings settings.
		 */
		$settings = apply_filters( 'elementor_pro/editor/localize_settings', $settings );

		return $settings;
	}

	public function enqueue_editor_styles() {
		wp_enqueue_style(
			'elementor-pro',
			$this->get_css_assets_url( 'editor', null, 'default', true ),
			[
				'elementor-editor',
			],
			ELEMENTOR_PRO_VERSION
		);
	}

	public function enqueue_editor_scripts() {
		wp_enqueue_script(
			'elementor-pro',
			$this->get_js_assets_url( 'editor' ),
			[
				'backbone-marionette',
				'elementor-common',
				'elementor-editor-modules',
				'elementor-editor-document',
			],
			ELEMENTOR_PRO_VERSION,
			true
		);

		$this->print_config( 'elementor-pro' );
	}

	public function localize_settings( array $settings ) {
		$connect_url = Plugin::instance()->license_admin->get_connect_url();

		$settings['elementPromotionURL'] = $connect_url;
		$settings['dynamicPromotionURL'] = $connect_url;
		$settings['i18n']['see_it_in_action'] = esc_html__( 'Activate License', 'elementor-pro' );

		return $settings;
	}

	public function on_elementor_init() {
		Plugin::elementor()->editor->notice_bar = new Notice_Bar();
	}

	public function on_elementor_editor_init() {
		Plugin::elementor()->common->add_template( __DIR__ . '/template.php' );
	}

	protected function get_assets_base_url() {
		return ELEMENTOR_PRO_URL;
	}
}
core/editor/notice-bar.php000064400000010334150755004320011520 0ustar00<?php
namespace ElementorPro\Core\Editor;

use Elementor\Core\Editor\Notice_Bar as Base_Notice_Bar;
use ElementorPro\License\API as License_API;
use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Notice_Bar extends Base_Notice_Bar {

	const ELEMENTOR_PRO_EDITOR_GO_PRO_TRIAL_ABOUT_TO_EXPIRE_LICENSE_NOTICE_DISMISSED = '_elementor_pro_editor_go_pro_trial_about_to_expire_license_notice_dismissed';
	const ELEMENTOR_PRO_EDITOR_GO_PRO_TRIAL_EXPIRED_LICENSE_NOTICE_DISMISSED = '_elementor_pro_editor_go_pro_trial_expired_license_notice_dismissed';
	const ELEMENTOR_PRO_EDITOR_RENEW_LICENSE_NOTICE_DISMISSED = '_elementor_pro_editor_renew_license_notice_dismissed';
	const ELEMENTOR_PRO_EDITOR_ACTIVATE_LICENSE_NOTICE_DISMISSED = '_elementor_pro_editor_activate_license_notice_dismissed';
	const ELEMENTOR_PRO_EDITOR_RENEW_ABOUT_TO_EXPIRE_LICENSE_NOTICE_DISMISSED = '_elementor_pro_editor_renew_about_to_expire_license_notice_dismissed';

	protected function get_init_settings() {
		$license_data = License_API::get_license_data();
		$license_admin = Plugin::instance()->license_admin;

		if ( License_API::is_license_active() && License_API::is_licence_pro_trial() ) {
			return [
				'option_key' => self::ELEMENTOR_PRO_EDITOR_GO_PRO_TRIAL_ABOUT_TO_EXPIRE_LICENSE_NOTICE_DISMISSED,
				'message' =>
					esc_html__( 'Heads up! You are using a free trial. Want to enjoy Pro widgets & templates for a whole year?', 'elementor-pro' )
						. sprintf( ' <a href="https://my.elementor.com/upgrade-subscription/?utm_source=editor-notice-bar&utm_medium=wp-dash&utm_campaign=pro-trial&utm_content=trial-period" target="_blank">%s</a>', esc_html__( 'Go Pro now', 'elementor-pro' ) ),
				'action_title' => '',
				'action_url' => '',
				'muted_period' => 0,
			];
		}

		if ( License_API::is_license_expired() && License_API::is_licence_pro_trial() ) {
			return [
				'option_key' => self::ELEMENTOR_PRO_EDITOR_GO_PRO_TRIAL_EXPIRED_LICENSE_NOTICE_DISMISSED,
				'message' => esc_html__( 'Your trial has expired. Miss your favorite Elementor Pro features?', 'elementor-pro' )
					. sprintf( ' <a href="https://my.elementor.com/upgrade-subscription/?utm_source=editor-notice-bar&utm_medium=wp-dash&utm_campaign=pro-trial&utm_content=trial-expired" target="_blank">%s</a>', esc_html__( 'Upgrade now', 'elementor-pro' ) ),
				'action_title' => '',
				'action_url' => '',
				'muted_period' => 0,
			];
		}

		if ( License_API::is_license_expired() ) {
			return [
				'option_key' => self::ELEMENTOR_PRO_EDITOR_RENEW_LICENSE_NOTICE_DISMISSED,
				'message' => esc_html__( 'Renew Elementor Pro and enjoy updates, support and Pro templates for another year.', 'elementor-pro' ),
				'action_title' => esc_html__( 'Renew Now', 'elementor-pro' ),
				'action_url' => 'https://go.elementor.com/editor-notice-bar-renew/',
				'muted_period' => 30,
			];
		}

		if ( ! License_API::is_license_active() ) {
			return [
				'option_key' => self::ELEMENTOR_PRO_EDITOR_ACTIVATE_LICENSE_NOTICE_DISMISSED,
				'message' => esc_html__( 'Activate Your License and Get Access to Premium Elementor Templates, Support & Plugin Updates.', 'elementor-pro' ),
				'action_title' => esc_html__( 'Connect & Activate', 'elementor-pro' ),
				'action_url' => $license_admin->get_connect_url( [
					'mode' => 'popup',
					'callback_id' => 'editor-pro-activate',
				] ),
				'muted_period' => 0,
			];
		}

		if ( ! License_API::is_license_about_to_expire() ) {
			return [];
		}

		if ( isset( $license_data['renewal_discount'] ) && 0 < $license_data['renewal_discount'] ) {
			$message = sprintf( esc_html__( 'Oh-oh... Looks like your Elementor Pro license is about to expire. Renew now and get an exclusive, time-limited %s discount.', 'elementor-pro' ), $license_data['renewal_discount'] . '&#37;' );
		} else {
			$message = esc_html__( 'Oh-oh! Your Elementor Pro license is about to expire. Renew now and enjoy updates, support and Pro templates for another year.', 'elementor-pro' );
		}

		return [
			'option_key' => self::ELEMENTOR_PRO_EDITOR_RENEW_ABOUT_TO_EXPIRE_LICENSE_NOTICE_DISMISSED,
			'message' => $message,
			'action_title' => esc_html__( 'Renew Now', 'elementor-pro' ),
			'action_url' => 'https://go.elementor.com/editor-notice-bar-renew/',
			'muted_period' => 10,
		];
	}
}
core/editor/template.php000064400000001240150755004320011304 0ustar00<?php

use ElementorPro\License\Admin as LicenseAdmin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}
?>
<script type="text/template" id="tmpl-elementor-pro-template-library-activate-license-button">
	<a class="elementor-template-library-template-action elementor-button elementor-go-pro" href="<?php
	// PHPCS - the function LicenseAdmin::get_url() is safe.
	echo LicenseAdmin::get_url(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>" target="_blank">
		<i class="eicon-external-link-square"></i>
		<span class="elementor-button-title"><?php echo esc_html__( 'Activate License', 'elementor-pro' ); ?></span>
	</a>
</script>
core/app/assets/js/index.js000064400000000125150755004320011636 0ustar00import Module from '../../modules/site-editor/assets/js/site-editor';

new Module();
core/app/assets/styles/app-imports.scss000064400000001104150755004320014246 0ustar00@import "../../modules/site-editor/assets/js/molecules/site-template.scss";
@import "../../modules/site-editor/assets/js/pages/add-new.scss";
@import "../../modules/site-editor/assets/js/pages/template-type.scss";
@import "../../modules/site-editor/assets/js/pages/conditions/conditions.scss";
@import "../../modules/site-editor/assets/js/molecules/back-button.scss";
@import "../../modules/site-editor/assets/js/atoms/indicator-bullet.scss";
@import "../../modules/site-editor/assets/js/atoms/preview-iframe.scss";
@import "../../modules/site-editor/assets/js/site-editor.scss";
core/app/modules/site-editor/render-mode-template-preview.php000064400000002077150755004320020365 0ustar00<?php
namespace ElementorPro\Core\App\Modules\SiteEditor;

use Elementor\Core\Frontend\RenderModes\Render_Mode_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Render_Mode_Template_Preview extends Render_Mode_Base {
	/**
	 * @return string
	 */
	public static function get_name() {
		return 'template-preview';
	}

	public function filter_template() {
		return ELEMENTOR_PATH . 'modules/page-templates/templates/canvas.php';
	}

	public function prepare_render() {
		parent::prepare_render();

		show_admin_bar( false );

		remove_filter(
			'the_content',
			[ \ElementorPro\Modules\ThemeBuilder\Module::instance()->get_locations_manager(), 'builder_wrapper' ],
			9999999
		);

		add_filter( 'template_include', [ $this, 'filter_template' ] );

		add_action( 'wp_head', [ $this, 'render_pointer_event_style' ] );
	}

	/**
	 * disable all the interactions in the preview render mode.
	 */
	public function render_pointer_event_style() {
		echo '<style> html { pointer-events: none; } </style>';
	}

	public function is_static() {
		return true;
	}
}
core/app/modules/site-editor/module.php000064400000011147150755004320014157 0ustar00<?php
namespace ElementorPro\Core\App\Modules\SiteEditor;

use Elementor\Core\Experiments\Manager;
use Elementor\TemplateLibrary\Source_Local;
use Elementor\Core\Frontend\Render_Mode_Manager;
use ElementorPro\Core\App\Modules\SiteEditor\Data\Controller;
use Elementor\Core\Base\Module as BaseModule;
use Elementor\Core\Common\Modules\Ajax\Module as Ajax;
use ElementorPro\Plugin;
use ElementorPro\Modules\ThemeBuilder\Module as ThemeBuilderModule;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

/**
 * Site Editor Module
 *
 * Responsible for initializing Elementor Pro App functionality
 */
class Module extends BaseModule {
	/**
	 * Get name.
	 *
	 * @access public
	 *
	 * @return string
	 */
	public function get_name() {
		return 'site-editor';
	}

	public function get_template_types() {
		$document_types = Plugin::elementor()->documents->get_document_types( [
			'support_site_editor' => true,
		] );

		// Keep 404 at end of array.
		$error_404 = $document_types['error-404'];
		unset( $document_types['error-404'] );
		$document_types['error-404'] = $error_404;

		// Currently the `single` itself is not supported in site editor.
		// Don't use `support_site_editor=false` in order to support documents that extend it.
		unset( $document_types['single'] );

		$types = [];

		foreach ( $document_types as $type => $class ) {
			$types[] = $class::get_site_editor_config();
		}

		return $types;
	}

	/**
	 * Register ajax actions.
	 *
	 * @access public
	 *
	 * @param Ajax $ajax
	 */
	public function register_ajax_actions( Ajax $ajax ) {
		$ajax->register_ajax_action( 'app_site_editor_template_types', [ $this, 'get_template_types' ] );
	}

	/**
	 * @param Render_Mode_Manager $manager
	 *
	 * @throws \Exception
	 */
	public function register_render_mode( Render_Mode_Manager $manager ) {
		$manager->register_render_mode( Render_Mode_Template_Preview::class );
	}

	protected function get_init_settings() {
		return [
			'urls' => [
				'legacy_view' => add_query_arg( 'tabs_group', ThemeBuilderModule::ADMIN_LIBRARY_TAB_GROUP, admin_url( Source_Local::ADMIN_MENU_SLUG ) ),
			],
		];
	}

	private function add_default_new_site_editor_experiments( Manager $manager ) {
		$manager->add_feature( [
			'name' => 'theme_builder_v2',
			'title' => __( 'Default to New Theme Builder', 'elementor-pro' ),
			'description' => __( 'Entering the Theme Builder through WP Dashboard > Templates > Theme Builder opens the New theme builder by default. But don’t worry, you can always view the WP styled version of the screen with a simple click of a button.', 'elementor-pro' ),
			'release_status' => Manager::RELEASE_STATUS_BETA,
			'default' => Manager::STATE_ACTIVE,
		] );
	}

	private function register_site_editor_menu() {
		if ( ! Plugin::elementor()->experiments->is_feature_active( 'theme_builder_v2' ) ) {
			return;
		}

		// Remove the old theme builder link and add the new one.
		remove_submenu_page(
			Source_Local::ADMIN_MENU_SLUG,
			add_query_arg( 'tabs_group', ThemeBuilderModule::ADMIN_LIBRARY_TAB_GROUP, Source_Local::ADMIN_MENU_SLUG )
		);

		add_submenu_page(
			Source_Local::ADMIN_MENU_SLUG,
			'',
			__( 'Theme Builder', 'elementor-pro' ),
			'publish_posts',
			Plugin::elementor()->app->get_base_url() . '#/site-editor'
		);
	}

	private function add_finder_item( array $categories ) {
		if ( ! Plugin::elementor()->experiments->is_feature_active( 'theme_builder_v2' ) ) {
			return $categories;
		}

		// Replace the old theme builder "create-new" link with the new site-editor.
		$categories['create']['items']['theme-template'] = [
			'title' => __( 'Add New Theme Template', 'elementor-pro' ),
			'icon' => 'plus-circle-o',
			'url' => Plugin::elementor()->app->get_base_url() . '#/site-editor/add-new',
			'keywords' => [ 'template', 'theme', 'new', 'create' ],
		];

		return $categories;
	}

	/**
	 * Module constructor.
	 *
	 * @access public
	 */
	public function __construct() {
		Plugin::elementor()->data_manager->register_controller( Controller::class );

		add_action( 'elementor/ajax/register_actions', [ $this, 'register_ajax_actions' ], 11 /* Override core actions */ );
		add_action( 'elementor/frontend/render_mode/register', [ $this, 'register_render_mode' ] );

		add_action( 'elementor/experiments/default-features-registered', function ( Manager $manager ) {
			$this->add_default_new_site_editor_experiments( $manager );
		} );

		add_action( 'admin_menu', function () {
			$this->register_site_editor_menu();
		}, 23 /* After old theme builder */ );

		add_filter( 'elementor/finder/categories', function ( array $categories ) {
			return $this->add_finder_item( $categories );
		}, 11 /* After old theme builder */ );

	}
}
core/app/modules/site-editor/assets/js/part-actions/dialog-rename.js000064400000002636150755004320021550 0ustar00import { useEffect } from 'react';
import { Dialog } from '@elementor/app-ui';
import { Context as TemplatesContext } from '../context/templates';

export default function DialogRename( props ) {
	const { findTemplateItemInState, updateTemplate } = React.useContext( TemplatesContext ),
		template = findTemplateItemInState( props.id );

	const [ title, setTitle ] = React.useState( '' );

	useEffect( () => {
		// The "title" state should be updated if the template title changed.
		if ( template ) {
			setTitle( template.title );
		}
	}, [ template ] );

	const closeDialog = ( shouldUpdate ) => {
		props.setId( null );

		if ( shouldUpdate ) {
			updateTemplate( props.id, { post_title: title } );
		}
	};

	if ( ! props.id ) {
		return '';
	}

	return (
		<Dialog
			title={ __( 'Rename Site Part', 'elementor-pro' ) }
			approveButtonText={ __( 'Change', 'elementor-pro' ) }
			onSubmit={ () => closeDialog( true ) }
			approveButtonOnClick={ () => closeDialog( true ) }
			approveButtonColor="primary"
			dismissButtonText={ __( 'Cancel', 'elementor-pro' ) }
			dismissButtonOnClick={ () => closeDialog() }
			onClose={ () => closeDialog() }
		>
			<input
				type="text"
				className="eps-input eps-input-text eps-input--block"
				autoFocus
				value={ title }
				onChange={ ( e ) => setTitle( e.target.value ) }
			/>
		</Dialog>
	);
}

DialogRename.propTypes = {
	id: PropTypes.number,
	setId: PropTypes.func.isRequired,
};
core/app/modules/site-editor/assets/js/part-actions/dialog-delete.js000064400000002106150755004320021533 0ustar00import { Dialog } from '@elementor/app-ui';
import { Context as TemplatesContext } from '../context/templates';

export default function DialogDelete( props ) {
	const { deleteTemplate, findTemplateItemInState } = React.useContext( TemplatesContext ),
		template = findTemplateItemInState( props.id );

	const closeDialog = ( shouldUpdate ) => {
		props.setId( null );

		if ( shouldUpdate ) {
			deleteTemplate( props.id );
		}
	};

	if ( ! props.id ) {
		return '';
	}

	return (
		<Dialog
			title={ __( 'Move Item To Trash', 'elementor-pro' ) }
			text={ __( 'Are you sure you want to move this item to trash:', 'elementor-pro' ) + ` "${ template.title }"` }
			onSubmit={ () => closeDialog( true ) }
			approveButtonText={ __( 'Move to Trash', 'elementor-pro' ) }
			approveButtonOnClick={ () => closeDialog( true ) }
			approveButtonColor="danger"
			dismissButtonText={ __( 'Cancel', 'elementor-pro' ) }
			dismissButtonOnClick={ () => closeDialog() }
			onClose={ () => closeDialog() }
		/>
	);
}

DialogDelete.propTypes = {
	id: PropTypes.number,
	setId: PropTypes.func.isRequired,
};
core/app/modules/site-editor/assets/js/part-actions/dialogs-and-buttons.js000064400000003671150755004320022722 0ustar00import DialogRename from './dialog-rename';
import DialogDelete from './dialog-delete';
import { Button, Popover } from '@elementor/app-ui';

export const handlers = {
	rename: null,
	delete: null,
};

// TODO: Think about refactor to portals: https://reactjs.org/docs/portals.html
export function PartActionsDialogs() {
	const [ DialogRenameId, setDialogRenameId ] = React.useState( null );
	const [ DialogDeleteId, setDialogDeleteId ] = React.useState( null );

	handlers.rename = setDialogRenameId;
	handlers.delete = setDialogDeleteId;

	return (
		<>
			<DialogRename id={ DialogRenameId } setId={ setDialogRenameId } />
			<DialogDelete id={ DialogDeleteId } setId={ setDialogDeleteId } />
		</>
	);
}

export default function PartActionsButtons( props ) {
	const [ showMenu, setShowMenu ] = React.useState( false );

	let SiteTemplatePopover = '';

	if ( showMenu ) {
		SiteTemplatePopover = (
			<Popover closeFunction={ () => setShowMenu( ! showMenu ) }>
				<li>
					<Button
						className="eps-popover__item"
						icon="eicon-sign-out"
						text={ __( 'Export', 'elementor-pro' ) }
						url={ props.exportLink }
					/>
				</li>
				<li>
					<Button
						className="eps-popover__item eps-popover__item--danger"
						icon="eicon-trash-o"
						text={ __( 'Trash', 'elementor-pro' ) }
						onClick={ () => handlers.delete( props.id ) }
					/>
				</li>
				<li>
					<Button
						className="eps-popover__item"
						icon="eicon-edit"
						text={ __( 'Rename', 'elementor-pro' ) }
						onClick={ () => handlers.rename( props.id ) }
					/>
				</li>
			</Popover>
		);
	}

	return (
		<div className="eps-popover__container">
			<Button
				text={ __( 'Toggle', 'elementor-pro' ) }
				hideText={ true }
				icon="eicon-ellipsis-h"
				size="lg"
				onClick={ () => setShowMenu( ! showMenu ) }
			/>
			{ SiteTemplatePopover }
		</div>
	);
}

PartActionsButtons.propTypes = {
	id: PropTypes.number.isRequired,
	exportLink: PropTypes.string.isRequired,
};
core/app/modules/site-editor/assets/js/data/commands/conditions-config.js000064400000000351150755004320022556 0ustar00export class ConditionsConfig extends $e.modules.CommandData {
	static signature = 'site-editor/conditions-config';

	static getEndpointFormat() {
		return 'site-editor/conditions-config/{id}';
	}
}

export default ConditionsConfig;
core/app/modules/site-editor/assets/js/data/commands/templates-conditions-conflicts.js000064400000000434150755004320025273 0ustar00export class TemplatesConditionsConflicts extends $e.modules.CommandData {
	static signature = 'site-editor/templates-conditions-conflicts';

	static getEndpointFormat() {
		return `${ TemplatesConditionsConflicts.signature }/{id}`;
	}
}

export default TemplatesConditionsConflicts;
core/app/modules/site-editor/assets/js/data/commands/templates-conditions.js000064400000000365150755004320023314 0ustar00export class TemplatesConditions extends $e.modules.CommandData {
	static signature = 'site-editor/templates-conditions';

	static getEndpointFormat() {
		return 'site-editor/templates-conditions/{id}';
	}
}

export default TemplatesConditions;
core/app/modules/site-editor/assets/js/data/commands/templates.js000064400000000313150755004320021136 0ustar00export class Templates extends $e.modules.CommandData {
	static signature = 'site-editor/templates';

	static getEndpointFormat() {
		return 'site-editor/templates/{id}';
	}
}

export default Templates;
core/app/modules/site-editor/assets/js/data/commands/index.js000064400000000360150755004320020251 0ustar00export { Templates } from './templates';
export { ConditionsConfig } from './conditions-config';
export { TemplatesConditions } from './templates-conditions';
export { TemplatesConditionsConflicts } from './templates-conditions-conflicts';
core/app/modules/site-editor/assets/js/data/component.js000064400000000422150755004320017342 0ustar00import * as dataCommands from './commands';

export default class Component extends $e.modules.ComponentBase {
	static namespace = 'site-editor';

	getNamespace() {
		return this.constructor.namespace;
	}

	defaultData() {
		return this.importCommands( dataCommands );
	}
}
core/app/modules/site-editor/assets/js/hooks/use-templates-screenshot.js000064400000003575150755004320022531 0ustar00import { Context as TemplatesContext } from '../context/templates';
import useScreenshot, { SCREENSHOT_STATUS_SUCCEED, SCREENSHOT_STATUS_FAILED } from 'modules/screenshots/app/assets/js/hooks/use-screenshot';

/**
 * Wrapper function that was made to take screenshots specific for template.
 * it will capture a screenshot and update the templates context with the new screenshot.
 *
 * @param {any} templateType
 */
export default function useTemplatesScreenshot( templateType = null ) {
	const { updateTemplateItemState, templates } = React.useContext( TemplatesContext );

	const templatesForScreenshot = Object.values( templates ).filter(
		( template ) => shouldScreenshotTemplate( template, templateType ),
	);

	// Start to capture screenshots.
	const screenshot = useScreenshot( templatesForScreenshot );

	// Update the thumbnail url when screenshot created.
	React.useEffect( () => {
		screenshot.posts
			.filter( ( post ) => post.status === SCREENSHOT_STATUS_SUCCEED )
			.forEach( ( post ) => updateTemplateItemState( post.id, { thumbnail: post.imageUrl } ) );
	}, [ screenshot.succeed ] );

	// Update the screenshot url that was failed.
	// When the user will hit the route on the second time it will avoid trying to take another screenshot.
	React.useEffect( () => {
		screenshot.posts
			.filter( ( post ) => post.status === SCREENSHOT_STATUS_FAILED )
			.forEach( ( post ) => updateTemplateItemState( post.id, { screenshot_url: null } ) );
	}, [ screenshot.failed ] );

	return screenshot;
}

/**
 * Filter handler.
 * will remove all the drafts and private and also will filter by template type if exists.
 *
 * @param {any} template
 * @param {any} templateType
 * @return {boolean} -
 */
function shouldScreenshotTemplate( template, templateType = null ) {
	if ( templateType ) {
		return false;
	}

	return 'publish' === template.status &&
		! template.thumbnail &&
		template.screenshot_url;
}
core/app/modules/site-editor/assets/js/context/conditions.js000064400000017636150755004320020303 0ustar00import Condition from './models/condition';
import ConditionsConfig from './services/conditions-config';
import BaseContext from './base-context';
import { TemplatesConditions, TemplatesConditionsConflicts } from '../data/commands';

export const Context = React.createContext();

export class ConditionsProvider extends BaseContext {
	static propTypes = {
		children: PropTypes.any.isRequired,
		currentTemplate: PropTypes.object.isRequired,
		onConditionsSaved: PropTypes.func.isRequired,
		validateConflicts: PropTypes.bool,
	};

	static defaultProps = {
		validateConflicts: true,
	};

	static actions = {
		FETCH_CONFIG: 'fetch-config',
		SAVE: 'save',
		CHECK_CONFLICTS: 'check-conflicts',
	};

	/**
	 * Holds the conditions config object.
	 *
	 * @type {ConditionsConfig}
	 */
	conditionsConfig = null;

	/**
	 * ConditionsProvider constructor.
	 *
	 * @param {any} props
	 */
	constructor( props ) {
		super( props );

		this.state = {
			...this.state,

			conditions: {},

			updateConditionItemState: this.updateConditionItemState.bind( this ),
			removeConditionItemInState: this.removeConditionItemInState.bind( this ),
			createConditionItemInState: this.createConditionItemInState.bind( this ),
			findConditionItemInState: this.findConditionItemInState.bind( this ),

			saveConditions: this.saveConditions.bind( this ),
		};
	}

	/**
	 * Fetch the conditions config, then normalize the conditions and then setup titles for
	 * the subIds.
	 */
	componentDidMount() {
		this.executeAction( ConditionsProvider.actions.FETCH_CONFIG, () => ConditionsConfig.create() )
			.then( ( conditionsConfig ) => this.conditionsConfig = conditionsConfig )
			.then( this.normalizeConditionsState.bind( this ) )
			.then( this.setSubIdTitles.bind( this ) );
	}

	/**
	 * Execute a request to save the template conditions.
	 *
	 * @return {any} -
	 */
	saveConditions() {
		const conditions = Object.values( this.state.conditions )
			.map( ( condition ) => condition.forDb() );

		return this.executeAction(
			ConditionsProvider.actions.SAVE,
			() => $e.data.update( TemplatesConditions.signature, { conditions }, { id: this.props.currentTemplate.id } ),
		).then( () => {
			const contextConditions = Object.values( this.state.conditions )
				.map( ( condition ) => condition.forContext() );

			this.props.onConditionsSaved( this.props.currentTemplate.id, {
				conditions: contextConditions,
				instances: this.conditionsConfig.calculateInstances( Object.values( this.state.conditions ) ),
				isActive: !! ( Object.keys( this.state.conditions ).length && 'publish' === this.props.currentTemplate.status ),
			} );
		} );
	}

	/**
	 * Check for conflicts in the server and mark the condition if there
	 * is a conflict.
	 *
	 * @param {any} condition
	 */
	checkConflicts( condition ) {
		return this.executeAction(
			ConditionsProvider.actions.CHECK_CONFLICTS,
			() => $e.data.get( TemplatesConditionsConflicts.signature, {
				post_id: this.props.currentTemplate.id,
				condition: condition.clone().toString(),
			} ),
		).then( ( response ) =>
			this.updateConditionItemState( condition.id, { conflictErrors: Object.values( response.data ) }, false ),
		);
	}

	/**
	 * Fetching subId titles.
	 *
	 * @param {any} condition
	 * @return {Promise<unknown>} -
	 */
	fetchSubIdsTitles( condition ) {
		return new Promise( ( resolve ) => {
			return elementorCommon.ajax.loadObjects( {
				action: 'query_control_value_titles',
				ids: _.isArray( condition.subId ) ? condition.subId : [ condition.subId ],
				data: {
					get_titles: condition.subIdAutocomplete,
					unique_id: elementorCommon.helpers.getUniqueId(),
				},
				success( response ) {
					resolve( response );
				},
			} );
		} );
	}

	/**
	 * Get the conditions from the template and normalize it to data structure
	 * that the components can work with.
	 */
	normalizeConditionsState() {
		this.updateConditionsState( () => {
			return this.props.currentTemplate.conditions.reduce( ( current, condition ) => {
				const conditionObj = new Condition( {
					...condition,
					default: this.props.currentTemplate.defaultCondition,
					options: this.conditionsConfig.getOptions(),
					subOptions: this.conditionsConfig.getSubOptions( condition.name ),
					subIdAutocomplete: this.conditionsConfig.getSubIdAutocomplete( condition.sub ),
					supIdOptions: condition.subId ? [ { value: condition.subId, label: condition.subId } ] : [],
				} );

				return {
					...current,
					[ conditionObj.id ]: conditionObj,
				};
			}, {} );
		} ).then( () => {
			Object.values( this.state.conditions ).forEach( ( condition ) => this.checkConflicts( condition ) );
		} );
	}

	/**
	 * Set titles to the subIds,
	 * for the first render of the component.
	 */
	setSubIdTitles() {
		return Object.values( this.state.conditions ).forEach( ( condition ) => {
			if ( ! condition.subId ) {
				return;
			}

			return this.fetchSubIdsTitles( condition )
				.then( ( response ) =>
					this.updateConditionItemState( condition.id, {
						subIdOptions: [ {
							label: Object.values( response )[ 0 ],
							value: condition.subId,
						} ],
					}, false ),
				);
		} );
	}

	/**
	 * Update state of specific condition item.
	 *
	 * @param {any} id
	 * @param {any} args
	 * @param {boolean} shouldCheckConflicts
	 */
	updateConditionItemState( id, args, shouldCheckConflicts = true ) {
		if ( args.name ) {
			args.subOptions = this.conditionsConfig.getSubOptions( args.name );
		}

		if ( args.sub || args.name ) {
			args.subIdAutocomplete = this.conditionsConfig.getSubIdAutocomplete( args.sub );

			// In case that the condition has been changed, it will set the options of the subId
			// to empty array to let select2 autocomplete handle the options.
			args.subIdOptions = [];
		}

		this.updateConditionsState( ( prev ) => {
			const condition = prev[ id ];

			return {
				...prev,
				[ id ]: condition.clone().set( args ),
			};
		} ).then( () => {
			if ( shouldCheckConflicts ) {
				this.checkConflicts( this.findConditionItemInState( id ) );
			}
		} );
	}

	/**
	 * Remove a condition item from the state.
	 *
	 * @param {any} id
	 */
	removeConditionItemInState( id ) {
		this.updateConditionsState( ( prev ) => {
			const newConditions = { ...prev };

			delete newConditions[ id ];

			return newConditions;
		} );
	}

	/**
	 * Add a new condition item into the state.
	 *
	 * @param {boolean} shouldCheckConflicts
	 */
	createConditionItemInState( shouldCheckConflicts = true ) {
		const defaultCondition = this.props.currentTemplate.defaultCondition,
			newCondition = new Condition( {
				name: defaultCondition,
				default: defaultCondition,
				options: this.conditionsConfig.getOptions(),
				subOptions: this.conditionsConfig.getSubOptions( defaultCondition ),
				subIdAutocomplete: this.conditionsConfig.getSubIdAutocomplete( '' ),
			} );

		this.updateConditionsState( ( prev ) => ( { ...prev, [ newCondition.id ]: newCondition } ) )
			.then( () => {
				if ( shouldCheckConflicts ) {
					this.checkConflicts( newCondition );
				}
			} );
	}

	/**
	 * Find a condition item from the conditions state.
	 *
	 * @param {any} id
	 * @return {Condition|null} -
	 */
	findConditionItemInState( id ) {
		return Object.values( this.state.conditions ).find( ( c ) => c.id === id );
	}

	/**
	 * Update the whole conditions state.
	 *
	 * @param {Function} callback
	 * @return {Promise<any>} -
	 */
	updateConditionsState( callback ) {
		return new Promise( ( resolve ) =>
			this.setState( ( prev ) => ( { conditions: callback( prev.conditions ) } ), resolve ),
		);
	}

	/**
	 * Renders the provider.
	 *
	 * @return {any} -
	 */
	render() {
		if ( this.state.action.current === ConditionsProvider.actions.FETCH_CONFIG ) {
			if ( this.state.error ) {
				return <h3>{ __( 'Error:', 'elementor-pro' ) } { this.state.error }</h3>;
			}

			if ( this.state.loading ) {
				return <h3>{ __( 'Loading', 'elementor-pro' ) }...</h3>;
			}
		}

		return (
			<Context.Provider value={ this.state }>
				{ this.props.children }
			</Context.Provider>
		);
	}
}

export default ConditionsProvider;
core/app/modules/site-editor/assets/js/context/templates.js000064400000006735150755004320020126 0ustar00import BaseContext from './base-context';
import { Templates } from '../data/commands';
import Component from '../data/component';

export const Context = React.createContext();

export class TemplatesProvider extends BaseContext {
	static propTypes = {
		children: PropTypes.object.isRequired,
	};

	static actions = {
		FETCH: 'fetch',
		DELETE: 'delete',
		UPDATE: 'update',
		IMPORT: 'import',
	};

	constructor( props ) {
		super( props );

		this.state = {
			...this.state,
			action: {
				...this.state.action,
				current: TemplatesProvider.actions.FETCH,
				loading: true,
			},

			templates: {},

			updateTemplateItemState: this.updateTemplateItemState.bind( this ),
			findTemplateItemInState: this.findTemplateItemInState.bind( this ),

			fetchTemplates: this.fetchTemplates.bind( this ),
			deleteTemplate: this.deleteTemplate.bind( this ),
			updateTemplate: this.updateTemplate.bind( this ),
			importTemplates: this.importTemplates.bind( this ),
		};
	}

	componentDidMount() {
		this.fetchTemplates();
	}

	importTemplates( { fileName, fileData } ) {
		return this.executeAction(
			TemplatesProvider.actions.IMPORT,
			() => $e.data.create( Templates.signature, { fileName, fileData } ),
		).then( ( response ) => {
			this.updateTemplatesState( ( prev ) => (
					{
						...prev,
						...Object.values( response.data ).reduce(
							( current, template ) => {
								if ( ! template.supportsSiteEditor ) {
									return current;
								}

								return { ...current, [ template.id ]: template };
							}, {},
						),
					}
				),
			);

			return response;
		} );
	}

	deleteTemplate( id ) {
		return this.executeAction(
			TemplatesProvider.actions.DELETE,
			() => $e.data.delete( Templates.signature, { id } ),
		).then( () => {
			this.updateTemplatesState( ( prev ) => {
				const newTemplates = { ...prev };

				delete newTemplates[ id ];

				return newTemplates;
			} );
		} );
	}

	updateTemplate( id, args ) {
		return this.executeAction(
			TemplatesProvider.actions.UPDATE,
			() => $e.data.update( Templates.signature, args, { id } ),
		).then( ( response ) => {
			this.updateTemplateItemState( id, response.data );
		} );
	}

	fetchTemplates() {
		return this.executeAction(
			TemplatesProvider.actions.FETCH,
			() => $e.data.get( Templates.signature ),
		).then( ( response ) => {
			this.updateTemplatesState( () => Object.values( response.data ).reduce(
				( current, template ) => ( { ...current, [ template.id ]: template } ), {},
			), false );
		} );
	}

	updateTemplateItemState( id, args ) {
		return this.updateTemplatesState( ( prev ) => {
			const template = {
				...prev[ id ],
				...args,
			};

			return {
				...prev,
				[ id ]: template,
			};
		} );
	}

	updateTemplatesState( callback, clearCache = true ) {
		if ( clearCache ) {
			$e.data.deleteCache( $e.components.get( Component.namespace ), Templates.signature );
		}

		return this.setState( ( prev ) => {
			return { templates: callback( prev.templates ) };
		} );
	}

	findTemplateItemInState( id ) {
		return this.state.templates[ id ];
	}

	render() {
		if ( this.state.action.current === TemplatesProvider.actions.FETCH ) {
			if ( this.state.action.error ) {
				return <h3>{ __( 'Error:', 'elementor-pro' ) } { this.state.action.error }</h3>;
			}

			if ( this.state.action.loading ) {
				return <h3>{ __( 'Loading', 'elementor-pro' ) }...</h3>;
			}
		}

		return (
			<Context.Provider value={ this.state }>
				{ this.props.children }
			</Context.Provider>
		);
	}
}

export default TemplatesProvider;
core/app/modules/site-editor/assets/js/context/services/conditions-config.js000064400000005115150755004320023356 0ustar00import { ConditionsConfig as ConditionsConfigCommand } from '../../data/commands';

export class ConditionsConfig {
	static instance;

	config = null;

	constructor( config ) {
		this.config = config;
	}

	/**
	 * @return {Promise<ConditionsConfig>} -
	 */
	static create() {
		if ( ConditionsConfig.instance ) {
			return Promise.resolve( ConditionsConfig.instance );
		}

		return $e.data.get( ConditionsConfigCommand.signature )
			.then( ( response ) => {
				ConditionsConfig.instance = new ConditionsConfig( response.data );

				return ConditionsConfig.instance;
			} );
	}

	/**
	 * Get main options for condition name.
	 *
	 * @return {Array} -
	 */
	getOptions() {
		return this.getSubOptions( 'general', true )
			.map( ( { label, value } ) => {
				return {
					label,
					value,
				};
			} );
	}

	/**
	 * Get the sub options for the select.
	 *
	 * @param {string} itemName
	 * @param {boolean} isSubItem
	 * @return {Array} -
	 */
	getSubOptions( itemName, isSubItem = false ) {
		const config = this.config[ itemName ];

		if ( ! config ) {
			return [];
		}

		return [
			{ label: config.all_label, value: isSubItem ? itemName : '' },
			...config.sub_conditions.map( ( subName ) => {
				const subConfig = this.config[ subName ];

				return {
					label: subConfig.label,
					value: subName,
					children: subConfig.sub_conditions.length ? this.getSubOptions( subName, true ) : null,
				};
			} ),
		];
	}

	/**
	 * Get the autocomplete property from the conditions config
	 *
	 * @param {string} sub
	 * @return {{}|any} -
	 */
	getSubIdAutocomplete( sub ) {
		const config = this.config[ sub ];

		if ( ! config || ! ( 'object' === typeof ( config.controls ) ) ) {
			return {};
		}

		const controls = Object.values( config.controls );

		if ( ! controls?.[ 0 ]?.autocomplete ) {
			return {};
		}

		return controls[ 0 ].autocomplete;
	}

	/**
	 * Calculate instances from the conditions.
	 *
	 * @param {Array} conditions
	 * @return {Object} -
	 */
	calculateInstances( conditions ) {
		let instances = conditions.reduce( ( current, condition ) => {
			if ( 'exclude' === condition.type ) {
				return current;
			}

			const key = condition.sub || condition.name,
				config = this.config[ key ];

			if ( ! config ) {
				return current;
			}

			const instanceLabel = condition.subId
				? `${ config.label } #${ condition.subId }`
				: config.all_label;

			return {
				...current,
				[ key ]: instanceLabel,
			};
		}, {} );

		if ( 0 === Object.keys( instances ).length ) {
			instances = [ __( 'No instances', 'elementor-pro' ) ];
		}

		return instances;
	}
}

export default ConditionsConfig;
core/app/modules/site-editor/assets/js/context/base-context.js000064400000002021150755004320020504 0ustar00export class BaseContext extends React.Component {
	constructor( props ) {
		super( props );

		this.state = {
			action: {
				current: null,
				loading: false,
				error: null,
				errorMeta: {},
			},

			updateActionState: this.updateActionState.bind( this ),
			resetActionState: this.resetActionState.bind( this ),
		};
	}

	executeAction( name, handler ) {
		this.updateActionState( { current: name, loading: true, error: null, errorMeta: {} } );

		return handler()
			.then( ( response ) => {
				this.resetActionState();

				return Promise.resolve( response );
			} )
			.catch( ( error ) => {
				this.updateActionState( { current: name, loading: false, error: error.message, errorMeta: error } );

				return Promise.reject( error );
			} );
	}

	updateActionState( data ) {
		return this.setState( ( prev ) => ( {
			action: {
				...prev.action,
				...data,
			},
		} ) );
	}

	resetActionState() {
		this.updateActionState( { current: null, loading: false, error: null, errorMeta: {} } );
	}
}

export default BaseContext;
core/app/modules/site-editor/assets/js/context/models/condition.js000064400000002162150755004320021367 0ustar00export default class Condition {
	id = elementorCommon.helpers.getUniqueId();
	default = '';
	type = 'include';
	name = '';
	sub = '';
	subId = '';
	options = [];
	subOptions = [];
	subIdAutocomplete = [];
	subIdOptions = [];
	conflictErrors = [];

	constructor( args ) {
		this.set( args );
	}

	set( args ) {
		Object.assign( this, args );
		return this;
	}

	clone() {
		return Object.assign( new Condition(), this );
	}

	remove( keys ) {
		if ( ! Array.isArray( keys ) ) {
			keys = [ keys ];
		}

		keys.forEach( ( key ) => {
			delete this[ key ];
		} );

		return this;
	}

	only( keys ) {
		if ( ! Array.isArray( keys ) ) {
			keys = [ keys ];
		}

		const keysToRemove = Object.keys( this )
			.filter( ( conditionKey ) => ! keys.includes( conditionKey ) );

		this.remove( keysToRemove );

		return this;
	}

	toJson() {
		return JSON.stringify( this );
	}

	toString() {
		return this.forDb().filter( ( item ) => item ).join( '/' );
	}

	forDb() {
		return [ this.type, this.name, this.sub, this.subId ];
	}

	forContext() {
		return {
			type: this.type,
			name: this.name,
			sub: this.sub,
			subId: this.subId,
		};
	}
}
core/app/modules/site-editor/assets/js/organisms/site-templates.js000064400000005452150755004320021401 0ustar00import { CssGrid, Dialog } from '@elementor/app-ui';
import SiteTemplate from '../molecules/site-template';
import { PartActionsDialogs } from '../part-actions/dialogs-and-buttons';
import { Context as TemplatesContext } from '../context/templates';
import useTemplatesScreenshot from '../hooks/use-templates-screenshot';

export default function SiteTemplates( props ) {
	const { templates: contextTemplates, action, resetActionState } = React.useContext( TemplatesContext );
	let gridColumns, templates;

	// Make the templates object a memorize value, will re run again only if
	// templates has been changed, also sort the templates by `isActive`.
	templates = React.useMemo( () => {
		return Object.values( contextTemplates )
			.sort( ( a, b ) => {
				// This sort make sure to show first the active templates, second the
				// inactive templates that are not draft, and then the drafts,
				// in each category it sorts it inside by date.

				if ( ! b.isActive && ! a.isActive ) {
					if (
						( 'draft' === b.status && 'draft' === a.status ) ||
						( 'draft' !== b.status && 'draft' !== a.status )
					) {
						return b.date < a.date ? 1 : -1;
					}

					return 'draft' === a.status ? 1 : -1;
				}

				if ( b.isActive && a.isActive ) {
					return b.date < a.date ? 1 : -1;
				}

				return b.isActive ? 1 : -1;
			} );
	}, [ contextTemplates ] );

	// Start to capture screenshots.
	useTemplatesScreenshot( props.type );

	const siteTemplateConfig = {};

	if ( props.type ) {
		templates = templates.filter( ( item ) => item.type === props.type );
		siteTemplateConfig.extended = true;
		siteTemplateConfig.type = props.type;

		switch ( props.type ) {
			case 'header':
			case 'footer':
				gridColumns = 1;
				siteTemplateConfig.aspectRatio = 'wide';
				break;
			default:
				gridColumns = 2;
		}
	}

	if ( ! templates || ! templates.length ) {
		return <h3>{ __( 'No Templates found. Want to create one?', 'elementor-pro' ) }...</h3>;
	}

	return (
		<section className="e-site-editor__site-templates">
			<PartActionsDialogs/>
			{
				action.error &&
					<Dialog
						text={ action.error }
						dismissButtonText={ __( 'Go Back', 'elementor-pro' ) }
						dismissButtonOnClick={ resetActionState }
						approveButtonText={ __( 'Learn More', 'elementor-pro' ) }
						approveButtonColor="link"
						approveButtonUrl="https://go.elementor.com/app-theme-builder-template-load-issue"
						approveButtonTarget="_target"
					/>
			}
			<CssGrid columns={ gridColumns } spacing={ 24 } colMinWidth={ 200 }>
				{
					templates.map( ( item ) =>
						<SiteTemplate
							key={ item.id }
							{ ... item }
							{ ... siteTemplateConfig }
							isSelected={ parseInt( props.id ) === item.id }/>,
					)
				}
			</CssGrid>
		</section>
	);
}

SiteTemplates.propTypes = {
	type: PropTypes.string,
	id: PropTypes.string,
};
core/app/modules/site-editor/assets/js/pages/conditions/condition-sub.js000064400000001330150755004320022453 0ustar00import { Select } from '@elementor/app-ui';

export default function ConditionSub( props ) {
	if ( 'general' === props.name || ! props.subOptions.length ) {
		return '';
	}

	const onChange = ( e ) => props.updateConditions( props.id, { sub: e.target.value, subId: '' } );

	return (
		<div className="e-site-editor-conditions__input-wrapper">
			<Select options={ props.subOptions } value={ props.sub } onChange={ onChange } />
		</div>
	);
}

ConditionSub.propTypes = {
	updateConditions: PropTypes.func.isRequired,
	id: PropTypes.string.isRequired,
	name: PropTypes.string.isRequired,
	sub: PropTypes.string.isRequired,
	subOptions: PropTypes.array.isRequired,
};

ConditionSub.defaultProps = {
	sub: '',
	subOptions: {},
};
core/app/modules/site-editor/assets/js/pages/conditions/condition-name.js000064400000001407150755004320022607 0ustar00import { Select } from '@elementor/app-ui';

export default function ConditionName( props ) {
	// Hide for template types that has another default, like single & archive.
	if ( 'general' !== props.default ) {
		return '';
	}

	const onChange = ( e ) => props.updateConditions( props.id, { name: e.target.value, sub: '', subId: '' } );

	return (
		<div className="e-site-editor-conditions__input-wrapper">
			<Select options={ props.options } value={ props.name } onChange={ onChange } />
		</div>
	);
}

ConditionName.propTypes = {
	updateConditions: PropTypes.func.isRequired,
	id: PropTypes.string.isRequired,
	name: PropTypes.string.isRequired,
	options: PropTypes.array.isRequired,
	default: PropTypes.string.isRequired,
};

ConditionName.defaultProps = {
	name: '',
};
core/app/modules/site-editor/assets/js/pages/conditions/condition-sub-id.js000064400000003327150755004320023055 0ustar00import { Select2 } from '@elementor/app-ui';

/**
 * Main component.
 *
 * @param {any} props
 * @return {any} -
 * @class
 */
export default function ConditionSubId( props ) {
	if ( ! props.sub || ! Object.keys( props.subIdAutocomplete ).length ) {
		return '';
	}

	const settings = React.useMemo( () => getSettings( props.subIdAutocomplete ), [ props.subIdAutocomplete ] );

	const onChange = ( e ) => props.updateConditions( props.id, { subId: e.target.value } );

	return (
		<div className="e-site-editor-conditions__input-wrapper">
			<Select2
				onChange={ onChange }
				value={ props.subId }
				settings={ settings }
				options={ props.subIdOptions }
			/>
		</div>
	);
}

/**
 * Get settings for the select2 base on the autocomplete settings,
 * that passes as a prop
 *
 * @param {any} autocomplete
 * @return {Object} -
 */
function getSettings( autocomplete ) {
	return {
		allowClear: false,
		placeholder: __( 'All', 'elementor-pro' ),
		dir: elementorCommon.config.isRTL ? 'rtl' : 'ltr',
		ajax: {
			transport( params, success, failure ) {
				return elementorCommon.ajax.addRequest( 'pro_panel_posts_control_filter_autocomplete', {
					data: {
						q: params.data.q,
						autocomplete,
					},
					success,
					error: failure,
				} );
			},
			data( params ) {
				return {
					q: params.term,
					page: params.page,
				};
			},
			cache: true,
		},
		escapeMarkup( markup ) {
			return markup;
		},
		minimumInputLength: 1,
	};
}

ConditionSubId.propTypes = {
	subIdAutocomplete: PropTypes.object,
	id: PropTypes.string.isRequired,
	sub: PropTypes.string,
	subId: PropTypes.string,
	updateConditions: PropTypes.func,
	subIdOptions: PropTypes.array,
};

ConditionSubId.defaultProps = {
	subId: '',
	subIdOptions: [],
};
core/app/modules/site-editor/assets/js/pages/conditions/conditions.scss000064400000011732150755004320022415 0ustar00@import "conditions-api";

.e-site-editor-conditions {
	&__header {
		text-align: center;
	}

	&__header-image {
		display: block;
		margin: 0 auto $e-site-editor-conditions-header-image-button-spacing;
		width: $e-site-editor-conditions-header-image-width;
	}

	&__rows {
		margin: $e-site-editor-conditions-rows-y-spacing auto;
		max-width: $e-site-editor-conditions-rows-max-width;
	}

	&__row {
		display: flex;
		flex-grow: 1;
		margin-top: $e-site-editor-conditions-row-top-spacing;
	}

	&__remove-condition {
		color: $e-site-editor-conditions-remove-condition-color;
		font-size: $e-site-editor-conditions-remove-condition-font-size;
		display: flex;
		align-items: center;
		justify-content: center;
	}

	&__row-controls {
		overflow: hidden;
		@include margin-end($e-site-editor-conditions-row-controls-spacing-end);
		background-color: var(--e-site-editor-conditions-row-controls-background);
		display: flex;
		width: 100%;
		box-shadow: $e-site-editor-conditions-row-controls-shadow;
		border-radius: $e-site-editor-conditions-row-controls-radius;

		&--error {
			border: $e-site-editor-conditions-row-controls-error-border;
		}
	}

	&__conflict {
		text-align: center;
		margin-top: $e-site-editor-conditions-conflict-top-spacing;
		color: $e-site-editor-conditions-conflict-color;
	}

	&__row-controls-inner {
		width: 100%;
		display: flex;

		div {
			flex: 1;
		}
	}

	&__add-button-container {
		text-align: center;
	}

	&__add-button {
		margin-top: $e-site-editor-add-button-margin-top;
		background-color: var(--e-site-editor-add-button-background-color);
		color: $e-site-editor-add-button-color;
		text-transform: uppercase;

		&:hover {
			background-color: var(--e-site-editor-add-button-color-hover-background-color);
			color: $e-site-editor-add-button-color-hover-color;
		}
	}

	&__footer {
		display: flex;
		justify-content: flex-end;
		position: absolute;
		bottom: 0;
		right: 0;
		left: 0;
		padding: $e-site-editor-save-button-container-spacing;
		border-top: 1px solid var(--hr-color);
	}

	&__input-wrapper {
		position: relative;
		@include border-start($e-site-editor-input-wrapper-border-width $e-site-editor-input-wrapper-border-style);
		border-color: var(--e-site-editor-input-wrapper-border-color);

		&:first-child {
			border: none;
		}

		select {
			appearance: none;
			-webkit-appearance: none;
			font-size: $e-site-editor-input-wrapper-select-font-size;
			height: $e-site-editor-input-wrapper-select-height;
			border-width: 0;
			padding: 0 $e-site-editor-input-wrapper-select-y-padding;
			width: 100%;
			position: relative;
			color: var(--e-site-editor-input-wrapper-select-color);
			outline: none;
			background: transparent;
		}

		&:after {
			font-family: eicons;
			content: '\e8ad';
			font-size: $e-site-editor-input-wrapper-select-arrow-font-size;
			pointer-events: none;
			position: absolute;
			top: 50%;
			transform: translateY(-50%);
			@include end($e-site-editor-input-wrapper-select-arrow-margin-end);
		}

		.select2-container--default .select2-selection--single {
			border: none;
			line-height: $e-site-editor-input-wrapper-select-height;
		}

		.select2-container--default .select2-selection--single .select2-selection__rendered {
			line-height:  $e-site-editor-input-wrapper-select-height;
			font-size: $e-site-editor-input-wrapper-select-font-size;
		}

		.select2-selection {
			outline: none;
			background: transparent;
			height: $e-site-editor-input-wrapper-select-height;
		}

		.select2-selection__arrow {
			display: none;
		}
	}

	&__input-wrapper--condition-type {
		position: relative;

		&:before {
			font-family: eicons;
			position: absolute;
			top: 50%;
			transform: translateY(-50%);
			@include start($e-site-editor-input-wrapper-condition-type-icon-start-spacing);
			font-size: $e-site-editor-input-wrapper-condition-type-icon-font-size;
			color: $e-site-editor-input-wrapper-condition-type-icon-color;
			pointer-events: none;
			z-index: $e-site-editor-input-wrapper-condition-type-icon-z-index;
		}

		&:after {
			color: $e-site-editor-input-wrapper-condition-type-arrow-color;
		}

		select {
			text-transform: uppercase;
			@include padding-start($e-site-editor-input-wrapper-condition-type-start-padding);
			width: $e-site-editor-input-wrapper-condition-type-width;
			font-size: $e-site-editor-input-wrapper-condition-type-font-size;
			color: $e-site-editor-input-wrapper-condition-type-color;
		}

		&[data-elementor-condition-type="include"] {
			&:before {
				content: '\e8cc';
			}

			select {
				background-color: var(--e-site-editor-input-wrapper-condition-include-background-color);
			}
		}

		&[data-elementor-condition-type="exclude"] {
			&:before {
				content: '\e8cd';
			}

			select {
				background-color: var(--e-site-editor-input-wrapper-condition-exclude-background-color);
			}
		}
	}
}

// This is a temporary fix that handles dark mode in select2.
// TODO: Remove it if already handled by the Select2 component.
.select2-search__field {
	background-color: transparent;
	color: var(--e-site-editor-input-select2-search-field-color);
}
core/app/modules/site-editor/assets/js/pages/conditions/condition-type.js000064400000001666150755004320022657 0ustar00import { Select } from '@elementor/app-ui';

export default function ConditionType( props ) {
	const wrapperRef = React.createRef();

	const options = [
		{
			label: __( 'Include', 'elementor-pro' ),
			value: 'include',
		},
		{
			label: __( 'Exclude', 'elementor-pro' ),
			value: 'exclude',
		},
	];

	const onChange = ( e ) => {
		props.updateConditions( props.id, { type: e.target.value } );
	};

	React.useEffect( () => {
		wrapperRef.current.setAttribute( 'data-elementor-condition-type', props.type );
	} );

	return (
		<div className="e-site-editor-conditions__input-wrapper e-site-editor-conditions__input-wrapper--condition-type" ref={ wrapperRef }>
			<Select options={ options } value={ props.type } onChange={ onChange } />
		</div>
	);
}

ConditionType.propTypes = {
	updateConditions: PropTypes.func.isRequired,
	id: PropTypes.string.isRequired,
	type: PropTypes.string.isRequired,
};

ConditionType.defaultProps = {
	type: '',
};
core/app/modules/site-editor/assets/js/pages/conditions/conditions-api.scss000064400000012157150755004320023166 0ustar00$e-site-editor-conditions-header-image-button-spacing: spacing(44);
$e-site-editor-conditions-header-image-width: px-to-rem(70);

$e-site-editor-conditions-rows-max-width: px-to-rem(700);
$e-site-editor-conditions-rows-y-spacing: spacing(44);

$e-site-editor-conditions-row-top-spacing: spacing(12);

$e-site-editor-conditions-remove-condition-color: tints(400);
$e-site-editor-conditions-remove-condition-font-size: type(size, '18');

$e-site-editor-conditions-row-controls-spacing-end: spacing(10);
$e-site-editor-conditions-row-controls-background: theme-colors(light);
$e-site-editor-conditions-row-controls-dark-background: dark-tints(600);
$e-site-editor-conditions-row-controls-shadow: shadow('1');
$e-site-editor-conditions-row-controls-radius: $eps-radius;

$e-site-editor-conditions-row-controls-error-border: $eps-border-width $eps-border-style theme-colors(danger);

$e-site-editor-conditions-conflict-top-spacing: spacing(5);
$e-site-editor-conditions-conflict-color: theme-colors(danger);

$e-site-editor-add-button-margin-top: spacing(44);
$e-site-editor-add-button-background-color: tints(500);
$e-site-editor-add-button-background-dark-color: dark-tints(500);
$e-site-editor-add-button-color: theme-colors(light);
$e-site-editor-add-button-color-hover-background-color: tints(600);
$e-site-editor-add-button-color-hover-dark-background-color: dark-tints(600);
$e-site-editor-add-button-color-hover-color: theme-colors(light);

$e-site-editor-save-button-container-spacing: spacing(8);

$e-site-editor-input-wrapper-border-width: $eps-border-width;
$e-site-editor-input-wrapper-border-style: $eps-border-style;
$e-site-editor-input-wrapper-border-color: tints(200);
$e-site-editor-input-wrapper-border-dark-color: dark-tints(600);
$e-site-editor-input-wrapper-select-font-size: type(size, "12");
$e-site-editor-input-wrapper-select-height: px-to-rem(40);
$e-site-editor-input-wrapper-select-y-padding: spacing(10);
$e-site-editor-input-wrapper-select-color: tints(700);
$e-site-editor-input-wrapper-select-dark-color: dark-tints(200);
$e-site-editor-input-wrapper-select-arrow-font-size: type(size, "12");
$e-site-editor-input-wrapper-select-arrow-margin-end: spacing(10);

$e-site-editor-input-wrapper-condition-type-icon-start-spacing: spacing(12);
$e-site-editor-input-wrapper-condition-type-icon-font-size: type(size, "15");
$e-site-editor-input-wrapper-condition-type-icon-color: theme-colors(light);
$e-site-editor-input-wrapper-condition-type-icon-z-index: z-index(dropdown);
$e-site-editor-input-wrapper-condition-type-arrow-color: theme-colors(light);
$e-site-editor-input-wrapper-condition-type-start-padding: px-to-rem(34);
$e-site-editor-input-wrapper-condition-type-width: px-to-rem(120);
$e-site-editor-input-wrapper-condition-type-font-size: type(size, '12');
$e-site-editor-input-wrapper-condition-type-color: theme-colors(light);
$e-site-editor-input-wrapper-condition-include-background-color: tints(500);
$e-site-editor-input-wrapper-condition-include-background-dark-color: dark-tints(600);
$e-site-editor-input-wrapper-condition-exclude-background-color: tints(400);
$e-site-editor-input-wrapper-condition-exclude-background-dark-color: dark-tints(600);

$e-site-editor-input-select2-search-field-color: theme-elements-colors(text-base-color);
$e-site-editor-input-select2-search-field-dark-color: theme-colors(light);

:root {
	--e-site-editor-conditions-row-controls-background: #{$e-site-editor-conditions-row-controls-background};
	--e-site-editor-input-wrapper-border-color: #{$e-site-editor-input-wrapper-border-color};
	--e-site-editor-input-wrapper-select-color: #{$e-site-editor-input-wrapper-select-color};
	--e-site-editor-add-button-background-color: #{$e-site-editor-add-button-background-color};
	--e-site-editor-add-button-color-hover-background-color: #{$e-site-editor-add-button-color-hover-background-color};
	--e-site-editor-input-wrapper-condition-include-background-color:
	#{$e-site-editor-input-wrapper-condition-include-background-color};
	--e-site-editor-input-wrapper-condition-exclude-background-color:
	#{$e-site-editor-input-wrapper-condition-exclude-background-color};

	--e-site-editor-input-select2-search-field-color: #{$e-site-editor-input-select2-search-field-color}
}

.eps-theme-dark {
	--select2-selection-background-color: tints(600);
	--e-site-editor-conditions-row-controls-background: #{$e-site-editor-conditions-row-controls-dark-background};
	--e-site-editor-input-wrapper-border-color: #{$e-site-editor-input-wrapper-border-dark-color};
	--e-site-editor-input-wrapper-select-color: #{$e-site-editor-input-wrapper-select-dark-color};
	--e-site-editor-add-button-background-color: #{$e-site-editor-add-button-background-dark-color};
	--e-site-editor-add-button-color-hover-background-color: #{$e-site-editor-add-button-color-hover-dark-background-color};
	--e-site-editor-input-wrapper-condition-include-background-color:
			#{$e-site-editor-input-wrapper-condition-include-background-dark-color};
	--e-site-editor-input-wrapper-condition-exclude-background-color:
			#{$e-site-editor-input-wrapper-condition-exclude-background-dark-color};
	--e-site-editor-input-select2-search-field-color: #{$e-site-editor-input-select2-search-field-dark-color}

}
core/app/modules/site-editor/assets/js/pages/conditions/conditions-rows.js000064400000005537150755004320023054 0ustar00import { Context as ConditionsContext, ConditionsProvider } from '../../context/conditions';
import { Button, Dialog } from '@elementor/app-ui';
import ConditionType from './condition-type';
import ConditionName from './condition-name';
import ConditionSub from './condition-sub';
import ConditionSubId from './condition-sub-id';
import ConditionConflicts from './condition-conflicts';

export default function ConditionsRows( props ) {
	const {
		conditions,
		createConditionItemInState: create,
		updateConditionItemState: update,
		removeConditionItemInState: remove,
		saveConditions: save,
		action,
		resetActionState,
	} = React.useContext( ConditionsContext );

	const rows = Object.values( conditions ).map( ( condition ) =>
		<div key={ condition.id }>
			<div className="e-site-editor-conditions__row">
				<div
					className={ `e-site-editor-conditions__row-controls ${ condition.conflictErrors.length && 'e-site-editor-conditions__row-controls--error' }` }>
					<ConditionType { ...condition } updateConditions={ update }/>
					<div className="e-site-editor-conditions__row-controls-inner">
						<ConditionName { ...condition } updateConditions={ update }/>
						<ConditionSub { ...condition } updateConditions={ update }/>
						<ConditionSubId { ...condition } updateConditions={ update }/>
					</div>
				</div>
				<Button
					className="e-site-editor-conditions__remove-condition"
					text={ __( 'Delete', 'elementor-pro' ) }
					icon="eicon-close"
					hideText={ true }
					onClick={ () => remove( condition.id ) }
				/>
			</div>
			<ConditionConflicts conflicts={ condition.conflictErrors }/>
		</div>,
	);

	const isSaving = action.current === ConditionsProvider.actions.SAVE && action.loading;

	return (
		<>
			{
				action.error &&
				<Dialog
					text={ action.error }
					dismissButtonText={ __( 'Go Back', 'elementor-pro' ) }
					dismissButtonOnClick={ resetActionState }
					approveButtonText={ __( 'Learn More', 'elementor-pro' ) }
					approveButtonColor="link"
					approveButtonUrl="https://go.elementor.com/app-theme-builder-conditions-load-issue"
					approveButtonTarget="_target"
				/>
			}
			<div className="e-site-editor-conditions__rows">
				{ rows }
			</div>
			<div className="e-site-editor-conditions__add-button-container">
				<Button
					className="e-site-editor-conditions__add-button"
					variant="contained"
					size="lg"
					text={ __( 'Add Condition', 'elementor-pro' ) }
					onClick={ create }
				/>
			</div>
			<div className="e-site-editor-conditions__footer">
				<Button
					variant="contained"
					color="primary"
					size="lg"
					hideText={ isSaving }
					icon={ isSaving ? 'eicon-loading eicon-animation-spin' : '' }
					text={ __( 'Save & Close', 'elementor-pro' ) }
					onClick={ () => save().then( props.onAfterSave ) }
				/>
			</div>
		</>
	);
}

ConditionsRows.propTypes = {
	onAfterSave: PropTypes.func,
};
core/app/modules/site-editor/assets/js/pages/conditions/conditions.js000064400000003144150755004320022054 0ustar00import { Heading, Text } from '@elementor/app-ui';
import ConditionsProvider from '../../context/conditions';
import { Context as TemplatesContext } from '../../context/templates';
import ConditionsRows from './conditions-rows';

import './conditions.scss';
import BackButton from '../../molecules/back-button';

export default function Conditions( props ) {
	const { findTemplateItemInState, updateTemplateItemState } = React.useContext( TemplatesContext ),
		template = findTemplateItemInState( parseInt( props.id ) );

	if ( ! template ) {
		return <div>{ __( 'Not Found', 'elementor-pro' ) }</div>;
	}

	return (
		<section className="e-site-editor-conditions">
			<BackButton/>
			<div className="e-site-editor-conditions__header">
				<img
					className="e-site-editor-conditions__header-image"
					src={ `${ elementorAppProConfig.baseUrl }/modules/theme-builder/assets/images/conditions-tab.svg` }
					alt={ __( 'Import template', 'elementor-pro' ) }
				/>
				<Heading variant="h1" tag="h1">
					{ __( 'Where Do You Want to Display Your Template?', 'elementor-pro' ) }
				</Heading>
				<Text variant="p">
					{ __( 'Set the conditions that determine where your template is used throughout your site.', 'elementor-pro' ) }
					<br/>
					{ __( 'For example, choose \'Entire Site\' to display the template across your site.', 'elementor-pro' ) }
				</Text>
			</div>
			<ConditionsProvider currentTemplate={ template } onConditionsSaved={ updateTemplateItemState }>
				<ConditionsRows onAfterSave={() => history.back()} />
			</ConditionsProvider>
		</section>
	);
}

Conditions.propTypes = {
	id: PropTypes.string,
};
core/app/modules/site-editor/assets/js/pages/conditions/condition-conflicts.js000064400000001244150755004320023652 0ustar00import { Button, Text } from '@elementor/app-ui';

export default function ConditionConflicts( props ) {
	if ( ! props.conflicts.length ) {
		return '';
	}

	const conflictLinks = props.conflicts.map( ( conflict ) => {
		return (
			<Button
				key={ conflict.template_id }
				target="_blank"
				url={ conflict.edit_url }
				text={ conflict.template_title }
			/>
		);
	} );

	return (
		<Text className="e-site-editor-conditions__conflict" variant="sm">
			{ __( 'Elementor recognized that you have set this location for other templates: ', 'elementor-pro' ) } { conflictLinks }
		</Text>
	);
}

ConditionConflicts.propTypes = {
	conflicts: PropTypes.array.isRequired,
};
core/app/modules/site-editor/assets/js/pages/import.js000064400000005202150755004320017041 0ustar00import { DropZone, Dialog } from '@elementor/app-ui';
import { Context as TemplatesContext, TemplatesProvider } from '../context/templates';
import BackButton from '../molecules/back-button';

export default function Import() {
	const { importTemplates, action, resetActionState } = React.useContext( TemplatesContext ),
		[ importedTemplate, setImportedTemplate ] = React.useState( null ),
		isImport = React.useMemo( () => action.current === TemplatesProvider.actions.IMPORT, [ action ] ),
		isUploading = React.useMemo( () => isImport && action.loading, [ action ] ),
		hasError = React.useMemo( () => isImport && action.error, [ action ] );

	const upload = React.useCallback( ( file ) => {
		if ( isUploading ) {
			return;
		}

		readFile( file )
			.then( ( fileData ) => importTemplates( { fileName: file.name, fileData } ) )
			.then( ( response ) => {
				// For now it show a dialog for the first template ONLY!
				setImportedTemplate( response.data[ 0 ] );
			} );
	}, [] );

	return (
		<section className="site-editor__import">
			{
				importedTemplate &&
					<Dialog
						title={ __( 'Your template was imported', 'elementor-pro' ) }
						approveButtonText={ __( 'Preview', 'elementor-pro' ) }
						approveButtonUrl={ importedTemplate.url }
						approveButtonTarget="_blank"
						dismissButtonText={ __( 'Edit', 'elementor-pro' ) }
						dismissButtonUrl={ importedTemplate.editURL }
						dismissButtonTarget="_top"
						onClose={ () => setImportedTemplate( null ) }
					/>
			}
			{
				hasError &&
					<Dialog
						title={ action.error }
						approveButtonText={ __( 'Learn More', 'elementor-pro' ) }
						approveButtonUrl="https://go.elementor.com/app-theme-builder-import-issue"
						approveButtonTarget="_blank"
						approveButtonColor="link"
						dismissButtonText={ __( 'Go Back', 'elementor-pro' ) }
						dismissButtonOnClick={ resetActionState }
						onClose={ resetActionState }
					/>
			}
			<BackButton/>
			<DropZone
				heading={ __( 'Import Template To Your Library', 'elementor-pro' ) }
				text={ __( 'Drag & Drop your .JSON or .zip template file', 'elementor-pro' ) }
				secondaryText={ __( 'or', 'elementor-pro' ) }
				onFileSelect={ upload }
				isLoading={ isUploading }
				filetypes={ [ 'zip', 'json' ] }
			/>
		</section>
	);
}

function readFile( file ) {
	return new Promise( ( ( resolve ) => {
		const fileReader = new FileReader();

		fileReader.readAsDataURL( file );

		fileReader.onload = ( event ) => {
			// Replace the mime type that prepended to the base64 with empty string and return a
			// resolved promise only with the base64 string.
			resolve( event.target.result.replace( /^[^,]+,/, '' ) );
		};
	} ) );
}
core/app/modules/site-editor/assets/js/pages/add-new.scss000064400000000234150755004320017405 0ustar00.eps-add-new__overlay {
	display: flex;
	align-items: center;
	justify-content: center;
	opacity: 1;
	--card-image-overlay-background-color: transparent;
}
core/app/modules/site-editor/assets/js/pages/add-new.js000064400000002062150755004320017047 0ustar00import { AddNewButton, Heading } from '@elementor/app-ui';
import { SiteParts } from '@elementor/site-editor';
import './add-new.scss';
import { Context as TemplatesContext } from '../context/templates';
import BackButton from '../molecules/back-button';

export default function AddNew() {
	const { templates } = React.useContext( TemplatesContext ),
		hasTemplates = 1 <= Object.keys( templates ).length;

	/**
	 * An hover element for each site part.
	 *
	 * @param {any} props
	 */
	const HoverElement = ( props ) => {
		return (
			<a href={ props.urls.create } className="eps-card__image-overlay eps-add-new__overlay">
				<AddNewButton hideText={true}/>
			</a>
		);
	};

	HoverElement.propTypes = {
		urls: PropTypes.object.isRequired,
	};

	return (
		<section className="e-site-editor__add-new">
			<header className="e-site-editor__header">
				{ hasTemplates && <BackButton/> }
				<Heading variant="h1">{__( 'Start customizing every part of your site', 'elementor-pro' )}</Heading>
			</header>
			<SiteParts hoverElement={ HoverElement } />
		</section>
	);
}
core/app/modules/site-editor/assets/js/pages/template-type.scss000064400000000202150755004320020653 0ustar00.e-site-editor__templates {
	.page-header {
		margin-bottom: spacing(10)
	}

	.eps-separator {
		margin-bottom: spacing(44);
	}
}
core/app/modules/site-editor/assets/js/pages/templates.js000064400000000745150755004320017534 0ustar00import SiteTemplates from '../organisms/site-templates';
import { AddNewButton, Grid } from '@elementor/app-ui';

export default function Templates() {
	return (
		<section className="e-site-editor__site-templates">
			<Grid container justify="space-between" className="page-header">
				<h1>{ __( 'Your Site\'s Global Parts', 'elementor-pro' ) }</h1>
				<AddNewButton url="/site-editor/add-new"/>
			</Grid>
			<hr className="eps-separator"/>
			<SiteTemplates />
		</section>
	);
}
core/app/modules/site-editor/assets/js/pages/template-type.js000064400000002023150755004320020317 0ustar00import { TemplateTypesContext } from '@elementor/site-editor';
import { AddNewButton, Grid, Heading, NotFound } from '@elementor/app-ui';
import SiteTemplates from '../organisms/site-templates';

import './template-type.scss';

export default function TemplateType( props ) {
	const { templateTypes } = React.useContext( TemplateTypesContext ),
		currentType = templateTypes.find( ( item ) => item.type === props.type );

	if ( ! currentType ) {
		return <NotFound />;
	}

	return (
		<section className={`e-site-editor__templates e-site-editor__templates--type-${ props.type }`}>
			<Grid className="page-header" container justify="space-between">
				<Heading variant="h1">{ currentType.page_title }</Heading>
				<AddNewButton url={ currentType.urls.create } text={ __( 'Add New', 'elementor-pro' ) } />
			</Grid>
			<hr className="eps-separator"/>
			<SiteTemplates type={ currentType.type } id={props.id} />
		</section>
	);
}

TemplateType.propTypes = {
	type: PropTypes.string,
	page_title: PropTypes.string,
	id: PropTypes.string,
};
core/app/modules/site-editor/assets/js/site-editor.js000064400000005337150755004320016671 0ustar00import { Router, LocationProvider, Redirect } from '@reach/router';
import Templates from './pages/templates';
import TemplateType from './pages/template-type';
import AddNew from './pages/add-new';
import Conditions from './pages/conditions/conditions';
import Import from './pages/import';
import TemplatesProvider, { Context as TemplatesContext } from './context/templates';
import { Layout, AllPartsButton, NotFound } from '@elementor/site-editor';
import { ErrorBoundary, Grid, Button } from '@elementor/app-ui';
import router from '@elementor/router';
import Component from './data/component';

import './site-editor.scss';

function SiteEditor() {
	const headerButtons = [
		{
			id: 'import',
			text: __( 'import', 'elementor-pro' ),
			hideText: true,
			icon: 'eicon-download-circle-o',
			onClick: () => router.appHistory.navigate( 'site-editor/import' ),
		},
	];

	// Remove Core cache.
	elementorCommon.ajax.invalidateCache( {
		unique_id: 'app_site_editor_template_types',
	} );

	const SiteEditorDefault = () => {
		const { templates } = React.useContext( TemplatesContext );

		if ( Object.keys( templates ).length ) {
			return <Redirect from={'/'} to={'/site-editor/templates'} noThrow={ true }/>;
		}

		return <Redirect from={'/'} to={'/site-editor/add-new'} noThrow={ true } />;
	};

	return (
		<ErrorBoundary
			title={__( 'Theme Builder could not be loaded', 'elementor-pro' )}
			learnMoreUrl="https://go.elementor.com/app-theme-builder-load-issue"
		>
			<Layout allPartsButton={ <AllPartsButton url="/site-editor" /> } headerButtons={ headerButtons }>
				<Grid container className="e-site-editor__content_container">
					<Grid item className="e-site-editor__content_container_main">
						<TemplatesProvider>
							<LocationProvider history={ router.appHistory }>
								<Router>
									<SiteEditorDefault path="/site-editor" />
									<Templates path="site-editor/templates" />
									<TemplateType path="site-editor/templates/:type/*id" />
									<AddNew path="site-editor/add-new" />
									<Conditions path="site-editor/conditions/:id" />
									<Import path="site-editor/import" />
									<NotFound default />
								</Router>
							</LocationProvider>
						</TemplatesProvider>
					</Grid>
					<Grid item className="e-site-editor__content_container_secondary">
						<Button
							text={ __( 'Switch to table view', 'elementor-pro' )}
							url={elementorAppProConfig[ 'site-editor' ]?.urls?.legacy_view}
						/>
					</Grid>
				</Grid>
			</Layout>
		</ErrorBoundary>
	);
}

export default class Module {
	constructor() {
		elementorCommon.debug.addURLToWatch( 'elementor-pro/assets' );

		$e.components.register( new Component() );

		router.addRoute( {
			path: '/site-editor/*',
			component: SiteEditor,
		} );
	}
}
core/app/modules/site-editor/assets/js/molecules/site-template.js000064400000002631150755004320021200 0ustar00import { Card } from '@elementor/app-ui';
import { SiteTemplateHeader } from './site-template-header';
import { SiteTemplateBody } from './site-template-body';
import { SiteTemplateFooter } from './site-template-footer';

import './site-template.scss';

export default function SiteTemplate( props ) {
	const baseClassName = 'e-site-template',
		classes = [ baseClassName ],
		ref = React.useRef( null );

	React.useEffect( () => {
		if ( ! props.isSelected ) {
			return;
		}

		ref.current.scrollIntoView( {
			behavior: 'smooth',
			block: 'start',
		} );
	}, [ props.isSelected ] );

	if ( props.extended ) {
		classes.push( `${ baseClassName }--extended` );
	}

	if ( props.aspectRatio ) {
		classes.push( `${ baseClassName }--${ props.aspectRatio }` );
	}

	const CardFooter = props.extended ? <SiteTemplateFooter { ...props }/> : '';

	return (
		<Card className={ classes.join( ' ' ) } ref={ ref }>
			<SiteTemplateHeader { ... props }/>
			<SiteTemplateBody { ... props }/>
			{ CardFooter }
		</Card>
	);
}

SiteTemplate.propTypes = {
	aspectRatio: PropTypes.string,
	className: PropTypes.string,
	extended: PropTypes.bool,
	id: PropTypes.number.isRequired,
	isActive: PropTypes.bool.isRequired,
	status: PropTypes.string,
	thumbnail: PropTypes.string.isRequired,
	title: PropTypes.string.isRequired,
	isSelected: PropTypes.bool,
	type: PropTypes.string.isRequired,
};

SiteTemplate.defaultProps = {
	isSelected: false,
};
core/app/modules/site-editor/assets/js/molecules/site-template-thumbnail.js000064400000001436150755004320023163 0ustar00import { Button, CardImage, CardOverlay } from '@elementor/app-ui';

export default function SiteTemplateThumbnail( props ) {
	return (
		<CardImage
			alt={ props.title }
			src={ props.thumbnail || props.placeholder }
			className={ ! props.thumbnail ? 'e-site-template__placeholder' : '' }
		>
			<CardOverlay className="e-site-template__overlay-preview">
				<Button
					className="e-site-template__overlay-preview-button"
					text={ __( 'Preview', 'elementor-pro' ) }
					icon="eicon-preview-medium"
					url={ `/site-editor/templates/${ props.type }/${ props.id }` }
				/>
			</CardOverlay>
		</CardImage>
	);
}

SiteTemplateThumbnail.propTypes = {
	id: PropTypes.number,
	title: PropTypes.string,
	type: PropTypes.string,
	thumbnail: PropTypes.string,
	placeholder: PropTypes.string,
};
core/app/modules/site-editor/assets/js/molecules/back-button.scss000064400000000251150755004320021167 0ustar00.#{$eps-prefix}back-button {
	font-size: 14px;
	margin-bottom: spacing(24);

	.#{$eps-prefix}icon {
		transform: getValueByDirection(rotate(0deg), rotate(180deg));
	}
}
core/app/modules/site-editor/assets/js/molecules/site-template-footer.js000064400000001417150755004320022475 0ustar00import { Button, CardFooter, Icon, Text } from '@elementor/app-ui';

export const SiteTemplateFooter = ( props ) => {
	const instances = Object.values( props.instances ).join( ', ' );

	return (
		<CardFooter>
			<div className="e-site-template__instances">
				<Icon className="eicon-flow"/>
				<Text tag="span" variant="sm"><b>{ __( 'Instances', 'elementor-pro' ) }:</b></Text>
				<Text className="e-site-template__instances-list" tag="span" variant="xxs"> { instances }</Text>
				<Button text={ __( 'Edit Conditions', 'elementor-pro' ) }
						className="e-site-template__edit-conditions"
						url={ `/site-editor/conditions/${ props.id }` } />
			</div>
		</CardFooter>
	);
};

SiteTemplateFooter.propTypes = {
	id: PropTypes.number.isRequired,
	instances: PropTypes.any,
};
core/app/modules/site-editor/assets/js/molecules/site-template.scss000064400000004355150755004320021544 0ustar00$eps-meta-icon-color: tints(400);
$eps-meta-icon-dark-color: dark-tints(200);
$preview-button-height: spacing(30);
$image-aspect-ratio: var(--card-image-aspect-ratio, #{$ratio-portrait});
$overlay-preview-padding-top: calc(#{$image-aspect-ratio} - #{$preview-button-height});
$aspect-ratio-wide: calc(100% * 0.1235);

:root {
	--eps-meta-icon-color: #{$eps-meta-icon-color};
}

.eps-theme-dark {
	--eps-meta-icon-color: #{$eps-meta-icon-dark-color};
}

.e-site-template {
	&__meta-data {
		margin-inline-start: spacing(10);
		@include text-truncate();
		font-size: type(text, xxs);

		&:last-of-type {
			margin-inline-end: auto;
		}

		&:first-of-type {
			margin-inline-start: spacing(16);
		}

		.#{$eps-prefix}icon {
			margin-inline-end: spacing(5);
			color: var(--eps-meta-icon-color);
			font-size: type(text, sm);
		}
	}

	&__placeholder {
		.#{$eps-prefix}card__image {
			filter: var(--placeholder-filter, none);
		}
	}

	&__overlay-preview {
		padding-top: $overlay-preview-padding-top;
		position: relative;

		&-button {
			font-weight: bold;
			display: flex;
			flex-wrap: wrap;
			height: $preview-button-height;
			width: 100%;
			background-color: var(--card-background-color-hover);
			justify-content: center;
			align-items: center;
			padding-top: spacing(10);
			line-height: spacing(20);
			--button-background-color: var(--card-headline-color);

			&::before {
				content: '';
				position: absolute;
				display: block;
				width: 100%;
				top: 0;
				left: 0;
				padding-top: $overlay-preview-padding-top;
			}

			& > :not(:first-child) {
				margin-inline-start: spacing(5);
			}
		}
	}

	&__edit-btn {
		margin-inline-end: spacing(20);

		.#{$eps-prefix}icon {
			margin-inline-end: spacing(5);
		}
	}

	&__instances {
		.#{$eps-prefix}icon {
			margin-inline-end: spacing(5);
			color: var(--eps-meta-icon-color);
			font-size: type(text, sm)
		}

		&-list {
			@include text-truncate();
		}
	}

	&__edit-conditions {
		margin-inline-start: spacing(16);
		color: theme-elements-colors(link-color);
		text-decoration: underline;
		font-style: italic;
	}

	&--extended {
		.#{$eps-prefix}card {
			&__figure {
				overflow: auto;
			}

			&__headline {
				flex-grow: 0;
			}
		}
	}

	&--wide {
		--card-image-aspect-ratio: #{$aspect-ratio-wide};
	}
}
core/app/modules/site-editor/assets/js/molecules/site-template-body.js000064400000001407150755004320022133 0ustar00import { CardBody } from '@elementor/app-ui';
import SiteTemplateThumbnail from './site-template-thumbnail';
import PreviewIFrame from '../atoms/preview-iframe';

export const SiteTemplateBody = ( props ) => {
	return (
		<CardBody>
			{
				props.extended
					? <PreviewIFrame src={ props.previewUrl } templateType={ props.type }/>
					: <SiteTemplateThumbnail
						id={props.id}
						title={props.title}
						type={props.type}
						thumbnail={props.thumbnail}
						placeholder={props.placeholderUrl}
					/>
			}
		</CardBody>
	);
};

SiteTemplateBody.propTypes = {
	extended: PropTypes.bool,
	id: PropTypes.number,
	title: PropTypes.string,
	thumbnail: PropTypes.string,
	placeholderUrl: PropTypes.string,
	type: PropTypes.string,
	previewUrl: PropTypes.string,
};
core/app/modules/site-editor/assets/js/molecules/back-button.js000064400000000711150755004320020631 0ustar00import { Button } from '@elementor/app-ui';

import './back-button.scss';

export default function BackButton( props ) {
	return (
		<div className="back-button-wrapper">
			<Button
				className="eps-back-button"
				text={ __( 'Back', 'elementor-pro' ) }
				icon="eicon-chevron-left"
				onClick={ props.onClick }
			/>
		</div>
	);
}

BackButton.propTypes = {
	onClick: PropTypes.func,
};

BackButton.defaultProps = {
	onClick: () => history.back(),
};
core/app/modules/site-editor/assets/js/molecules/site-template-header.js000064400000002703150755004320022426 0ustar00import { Button, CardHeader, Heading, Icon, Text } from '@elementor/app-ui';
import PartActionsButtons from '../part-actions/dialogs-and-buttons';
import { Indicator } from '../atoms/indicator-bullet';

export const SiteTemplateHeader = ( props ) => {
	const status = props.status && 'publish' !== props.status ? ` (${ props.status })` : '',
		title = props.title + status,
		ActionButtons = () => (
			<>
				<Button text={__( 'Edit', 'elementor-pro' )} icon="eicon-edit" className="e-site-template__edit-btn" size="sm" url={ props.editURL } />
				<PartActionsButtons { ... props } />
			</>
		),
		MetaDataIcon = ( innerProps ) => (
			<Text tag="span" className="e-site-template__meta-data">
				<Icon className={ innerProps.icon } />
				{ innerProps.content }
			</Text>
		),
		MetaData = () => (
			<>
				<MetaDataIcon icon="eicon-user-circle-o" content={ props.author } />
				<MetaDataIcon icon="eicon-clock-o" content={ props.modifiedDate } />
			</>
		);

	return (
		<CardHeader>
			<Indicator active={ props.isActive }/>
			<Heading tag="h1" title={ title } variant="text-sm" className="eps-card__headline">{ title }</Heading>
			{ props.extended && <MetaData/> }
			{ props.extended && <ActionButtons/> }
		</CardHeader>
	);
};

SiteTemplateHeader.propTypes = {
	isActive: PropTypes.bool,
	author: PropTypes.string,
	editURL: PropTypes.string,
	extended: PropTypes.bool,
	modifiedDate: PropTypes.string,
	status: PropTypes.string,
	title: PropTypes.string,
};
core/app/modules/site-editor/assets/js/atoms/preview-iframe.js000064400000002165150755004320020502 0ustar00import './preview-iframe.scss';

export default function PreviewIFrame( props ) {
	const ref = React.useRef( null ),
		previewBreakpoint = 1200,
		[ scale, setScale ] = React.useState( 1 ),
		[ height, setHeight ] = React.useState( 0 );

	// In order to make sure that the iframe itself show the content in specific viewport,
	// and it should fit to the size of the card, there is a use of css props `scale` and `height`,
	// and another element that wraps the iframe to be the guidelines of the iframe sizes.
	React.useEffect( () => {
		const currentScale = ref.current.clientWidth / previewBreakpoint;

		setScale( currentScale );
		setHeight( ref.current.clientHeight / currentScale );
	}, [] );

	return (
		<div
			ref={ ref }
			className={ `site-editor__preview-iframe site-editor__preview-iframe--${ props.templateType }` }
		>
			<iframe
				src={ props.src }
				className={ `site-editor__preview-iframe__iframe` }
				style={ { transform: `scale(${ scale })`, height, width: previewBreakpoint } }
			/>
		</div>
	);
}

PreviewIFrame.propTypes = {
	src: PropTypes.string.isRequired,
	templateType: PropTypes.string.isRequired,
};
core/app/modules/site-editor/assets/js/atoms/indicator-bullet.scss000064400000002110150755004320021346 0ustar00$eps-indicator-bullet-border-color: theme-colors(light);
$eps-indicator-bullet-dark-border-color: dark-tints(500);

:root {
	--indicator-bullet-border-color: #{$eps-indicator-bullet-border-color};
}

.eps-theme-dark {
	--indicator-bullet-border-color: #{$eps-indicator-bullet-dark-border-color};
}

$eps-indicator-bullet-size: spacing(16) * 0.75;
$eps-indicator-bullet-color: tints(300);
$eps-indicator-bullet-color-active: theme-colors(success);
$eps-indicator-bullet-box-shadow: $eps-box-shadow-1;
$eps-indicator-bullet-radius: 100%;
$eps-indicator-bullet-border: 2px solid var(--indicator-bullet-border-color);
$eps-indicator-bullet-spacing: spacing(10);

.eps-indicator-bullet {
	display: block;
	flex-shrink: 0;
	width: $eps-indicator-bullet-size;
	height: $eps-indicator-bullet-size;
	box-shadow: $eps-indicator-bullet-box-shadow;
	background-color: $eps-indicator-bullet-color;
	border: $eps-indicator-bullet-border;
	border-radius: $eps-indicator-bullet-radius;
	margin-inline-end: $eps-indicator-bullet-spacing;

	&--active {
		background-color: $eps-indicator-bullet-color-active;
	}
}
core/app/modules/site-editor/assets/js/atoms/preview-iframe.scss000064400000000345150755004320021037 0ustar00.site-editor__preview-iframe {
	height: 50vh;
	position: relative;

	&__iframe {
		top: 0;
		left: 0;
		position: absolute;
		border: none;
		transform-origin: 0 0;
		height: 100%;
	}

	&--header, &--footer{
		height: 15vh;
	}
}
core/app/modules/site-editor/assets/js/atoms/indicator-bullet.js000064400000000430150755004320021012 0ustar00import './indicator-bullet.scss';

export const Indicator = ( props ) => {
	let className = 'eps-indicator-bullet';

	if ( props.active ) {
		className += ` ${ className }--active`;
	}

	return <i className={ className }/>;
};

Indicator.propTypes = {
	active: PropTypes.bool,
};
core/app/modules/site-editor/assets/js/site-editor.scss000064400000000371150755004320017221 0ustar00.e-site-editor__content_container {
	flex-direction: column;
	min-height: 100%;
	flex-wrap: nowrap;
}

.e-site-editor__content_container_main {
	flex: 1;
}

.e-site-editor__content_container_secondary {
	margin: 0 auto;
	padding-top: spacing(44);
}
core/app/modules/site-editor/assets/js/editor.js000064400000000652150755004320015722 0ustar00import Component from './data/component';
import { Templates } from './data/commands';

export default class Module extends elementorModules.editor.utils.Module {
	onElementorInit() {
		const config = elementor.documents.getCurrent().config;

		if ( config.support_site_editor ) {
			$e.components.register( new Component() );

			$e.data.deleteCache( $e.components.get( Component.namespace ), Templates.signature );
		}
	}
}
core/app/modules/site-editor/data/responses/lock-error-response.php000064400000001102150755004320021525 0ustar00<?php
namespace ElementorPro\Core\App\Modules\SiteEditor\Data\Responses;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Lock_Error_Response extends \WP_Error {
	public function __construct( $user_id ) {
		$user = get_user_by( 'ID', $user_id );

		parent::__construct(
			'post_lock',
			sprintf(
				__( '%s is currently editing this template, please try again later', 'elementor-pro' ),
				$user->display_name
			),
			[
				'status' => 403,
				'locked_by_user_id' => $user_id,
				'locked_by_user_name' => $user->display_name,
			]
		);
	}
}
core/app/modules/site-editor/data/endpoints/conditions-config.php000064400000001034150755004320021214 0ustar00<?php
namespace ElementorPro\Core\App\Modules\SiteEditor\Data\Endpoints;

use ElementorPro\Modules\ThemeBuilder\Module as ThemeBuilderModule;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Conditions_Config extends Base_Endpoint {
	/**
	 * @return string
	 */
	public function get_name() {
		return 'conditions-config';
	}

	public function get_items( $request ) {
		$conditions_manager = ThemeBuilderModule::instance()->get_conditions_manager();

		return $conditions_manager->get_conditions_config();
	}
}
core/app/modules/site-editor/data/endpoints/template-types.php000064400000001105150755004320020554 0ustar00<?php
namespace ElementorPro\Core\App\Modules\SiteEditor\Data\Endpoints;

use ElementorPro\Plugin;
use ElementorPro\Core\App\Modules\SiteEditor\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Template_Types extends Base_Endpoint {
	/**
	 * @return string
	 */
	public function get_name() {
		return 'template-types';
	}

	public function get_items( $request ) {
		/** @var Module $site_editor_module */
		$site_editor_module = Plugin::instance()->app->get_component( 'site-editor' );

		return $site_editor_module->get_template_types();
	}
}
core/app/modules/site-editor/data/endpoints/base-endpoint.php000064400000000726150755004320020337 0ustar00<?php
namespace ElementorPro\Core\App\Modules\SiteEditor\Data\Endpoints;

use Elementor\Data\Base\Endpoint;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

abstract class Base_Endpoint extends Endpoint {
	/**
	 * Check if post is lock.
	 *
	 * @param $post_id
	 *
	 * @return bool|false|int
	 */
	protected function is_post_lock( $post_id ) {
		require_once ABSPATH . 'wp-admin/includes/post.php';

		return wp_check_post_lock( $post_id );
	}
}
core/app/modules/site-editor/data/endpoints/templates.php000064400000014355150755004320017610 0ustar00<?php
namespace ElementorPro\Core\App\Modules\SiteEditor\Data\Endpoints;

use ElementorPro\Plugin;
use Elementor\Core\Utils\Exceptions;
use Elementor\TemplateLibrary\Manager as TemplateManager;
use ElementorPro\Modules\ThemeBuilder\Documents\Theme_Document;
use ElementorPro\Modules\ThemeBuilder\Classes\Conditions_Manager;
use ElementorPro\Modules\ThemeBuilder\Module as ThemeBuilderModule;
use ElementorPro\Modules\ThemeBuilder\Classes\Templates_Types_Manager;
use ElementorPro\Core\App\Modules\SiteEditor\Render_Mode_Template_Preview;
use ElementorPro\Core\App\Modules\SiteEditor\Data\Responses\Lock_Error_Response;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Templates extends Base_Endpoint {

	/**
	 * @var TemplateManager
	 */
	private $templates_manager;

	/**
	 * @var array
	 */
	private $document_types;

	public function __construct( $controller ) {
		parent::__construct( $controller );

		$this->templates_manager = Plugin::elementor()->templates_manager;
	}

	/**
	 * @return string
	 */
	public function get_name() {
		return 'templates';
	}

	protected function register() {
		parent::register();

		$this->register_item_route( \WP_REST_Server::DELETABLE );
		$this->register_item_route( \WP_REST_Server::EDITABLE );
		$this->register_items_route( \WP_REST_Server::CREATABLE );
	}

	public function get_items( $request ) {
		$templates = $this->templates_manager->get_source( 'local' )->get_items( [
			'type' => array_keys( $this->get_documents_types() ),
			'post_status' => 'any',
			'orderby' => 'post_date',
			'order' => 'DESC',
		] );

		return $this->normalize_templates_json( $templates );
	}

	public function create_items( $request ) {
		$response = $this->templates_manager->import_template( $request->get_body_params() );

		if ( is_wp_error( $response ) ) {
			return new \WP_Error( 'file', $response->get_error_message(), [ 'status' => Exceptions::BAD_REQUEST ] );
		}

		return $this->normalize_templates_json( $response );
	}

	public function update_item( $id, $request ) {
		$lock_by_user_id = $this->is_post_lock( $id );

		if ( $lock_by_user_id ) {
			return new Lock_Error_Response( $lock_by_user_id );
		}

		wp_update_post( array_merge( [
			'ID' => $id,
		], $request->get_body_params() ) );

		return $this->normalize_template_json_item(
			$this->templates_manager->get_source( 'local' )->get_item( $id )
		);
	}

	public function delete_item( $id, $request ) {
		$lock_by_user_id = $this->is_post_lock( $id );

		if ( $lock_by_user_id ) {
			return new Lock_Error_Response( $lock_by_user_id );
		}

		return ! ! wp_trash_post( $id );
	}

	/**
	 * @return array
	 */
	private function get_documents_types() {
		if ( ! $this->document_types ) {
			/** @var Templates_Types_Manager $types_manager */
			$types_manager = ThemeBuilderModule::instance()->get_types_manager();

			$this->document_types = $types_manager->get_types_config( [
				'support_site_editor' => true,
			] );
		}

		return $this->document_types;
	}

	/**
	 * @param $templates
	 *
	 * @return array
	 */
	private function normalize_templates_json( $templates ) {
		return array_map( [ $this, 'normalize_template_json_item' ], $templates );
	}

	/**
	 * @param $template
	 *
	 * @return array
	 */
	private function normalize_template_json_item( $template ) {
		/** @var Conditions_Manager $conditions_manager */
		$conditions_manager = Plugin::instance()->modules_manager->get_modules( 'theme-builder' )->get_conditions_manager();

		/** @var Theme_Document $document */
		$document = Plugin::elementor()->documents->get( $template['template_id'] );

		$supports_site_editor = $document::get_property( 'support_site_editor' );

		// Supports also a non site editor parts.
		if ( ! $supports_site_editor ) {
			return [
				'id' => $template['template_id'],
				'url' => $template['url'],
				'editURL' => $document->get_edit_url(),
				'supportsSiteEditor' => false,
			];
		}

		$types = $this->get_documents_types();

		$template['instances'] = $conditions_manager->get_document_instances( $template['template_id'] );
		$template['defaultCondition'] = $types[ $template['type'] ]['condition_type'];

		$has_instances = ! empty( $template['instances'] );
		$is_active = false;

		if ( ! $has_instances ) {
			$template['instances'] = [ 'no_instances' => esc_html__( 'No instances', 'elementor-pro' ) ];
		} else {
			$is_active = 'publish' === $template['status'];
		}

		if ( ! $template['thumbnail'] ) {
			$template['thumbnail'] = '';
		}

		$site_editor_config = $document->get_site_editor_config();

		$data = array_merge( $template, [
			'id' => $template['template_id'],
			'exportLink' => $template['export_link'],
			'modifiedDate' => $template['human_modified_date'],
			'editURL' => $document->get_edit_url(),
			'conditions' => array_map( function ( $condition ) {
				return array_merge( $condition, [
					'sub' => $condition['sub_name'],
					'subId' => $condition['sub_id'],
				] );
			}, $conditions_manager->get_document_conditions( $document ) ),
			'isActive' => $is_active,
			'type' => $this->calculate_template_type( $template['type'], $template['instances'] ),
			'previewUrl' => $this->get_preview_url( $template['template_id'] ),
			'placeholderUrl' => $site_editor_config['urls']['thumbnail'],
			'pageLayout' => $site_editor_config['page_layout'],
			'supportsSiteEditor' => true,
		] );

		return apply_filters( 'elementor-pro/site-editor/data/template', $data );
	}

	/**
	 * @param $type
	 * @param $instances
	 *
	 * @return string
	 */
	private function calculate_template_type( $type, $instances ) {
		$condition_to_type_map = [
			'front_page' => 'single-page',
			'child_of' => 'single-page',
			'page' => 'single-page',
			'not_found404' => 'error-404',
			'search' => 'search-results',
		];

		// "single" type was split into "single-page", "single-post" and "404".
		// this section supports all the old templates that was created as "single".
		if ( 'single' === $type ) {
			// By default show it under single-post.
			$type = 'single-post';

			foreach ( $instances as $condition_name => $condition_label ) {
				if ( isset( $condition_to_type_map[ $condition_name ] ) ) {
					$type = $condition_to_type_map[ $condition_name ];
					break;
				}
			}
		}

		return $type;
	}

	private function get_preview_url( $post_id ) {
		return Render_Mode_Template_Preview::get_url( $post_id );
	}
}
core/app/modules/site-editor/data/endpoints/templates-conditions.php000064400000004207150755004320021752 0ustar00<?php
namespace ElementorPro\Core\App\Modules\SiteEditor\Data\Endpoints;

use ElementorPro\Plugin;
use Elementor\Core\Utils\Exceptions;
use ElementorPro\Modules\ThemeBuilder\Module;
use ElementorPro\Core\App\Modules\SiteEditor\Data\Responses\Lock_Error_Response;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Templates_Conditions extends Base_Endpoint {
	/**
	 * @return string
	 */
	public function get_name() {
		return 'templates-conditions';
	}

	protected function register() {
		$this->register_item_route();
		$this->register_item_route( \WP_REST_Server::EDITABLE );
	}

	public function get_item( $template_id, $request ) {
		return $this->get_conditions( $template_id );
	}

	public function update_item( $template_id, $request ) {
		$lock_by_user_id = $this->is_post_lock( $template_id );

		if ( $lock_by_user_id ) {
			return new Lock_Error_Response( $lock_by_user_id );
		}

		$data = $request->get_body_params();

		if ( ! isset( $data['conditions'] ) ) {
			$data['conditions'] = [];
		}

		$is_saved = $this->save_conditions( $template_id, $data['conditions'] );

		if ( ! $is_saved ) {
			return new \WP_Error(
				'conditions',
				__( 'Error while saving conditions.', 'elementor-pro' ),
				[ 'status' => Exceptions::INTERNAL_SERVER_ERROR ]
			);
		}

		return true;
	}

	protected function get_conditions( $post_id ) {
		$document = \Elementor\Plugin::$instance->documents->get( $post_id );

		/** @var Module $theme_builder */
		$theme_builder = Plugin::instance()->modules_manager->get_modules( 'theme-builder' );

		return $theme_builder
			->get_conditions_manager()
			->get_document_conditions( $document );
	}

	protected function save_conditions( $post_id, $conditions ) {
		/** @var Module $theme_builder */
		$theme_builder = Plugin::instance()->modules_manager->get_modules( 'theme-builder' );

		$is_saved = $theme_builder
			->get_conditions_manager()
			->save_conditions( $post_id, $conditions );

		if ( ! $is_saved ) {
			return new \WP_Error(
				'conditions_save',
				__( 'Cannot save those conditions.', 'elementor-pro' ),
				[ 'status' => Exceptions::INTERNAL_SERVER_ERROR ]
			);
		}

		return true;
	}
}
core/app/modules/site-editor/data/endpoints/templates-conditions-conflicts.php000064400000001271150755004320023732 0ustar00<?php
namespace ElementorPro\Core\App\Modules\SiteEditor\Data\Endpoints;

use ElementorPro\Plugin;
use ElementorPro\Modules\ThemeBuilder\Module;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Templates_Conditions_Conflicts extends Base_Endpoint {
	/**
	 * @return string
	 */
	public function get_name() {
		return 'templates-conditions-conflicts';
	}

	public function get_items( $request ) {
		/** @var Module $theme_builder */
		$theme_builder = Plugin::instance()->modules_manager->get_modules( 'theme-builder' );

		return $theme_builder
			->get_conditions_manager()
			->get_conditions_conflicts( intval( $request['post_id'] ), $request['condition'] );
	}
}
core/app/modules/site-editor/data/controller.php000064400000001423150755004320015762 0ustar00<?php
namespace ElementorPro\Core\App\Modules\SiteEditor\Data;

use ElementorPro\Plugin;
use Elementor\Data\Base\Controller as Controller_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Controller extends Controller_Base {
	public function get_name() {
		return 'site-editor';
	}

	public function register_endpoints() {
		$this->register_endpoint( Endpoints\Templates::class );
		$this->register_endpoint( Endpoints\Conditions_Config::class );
		$this->register_endpoint( Endpoints\Templates_Conditions::class );
		$this->register_endpoint( Endpoints\Templates_Conditions_Conflicts::class );
	}

	public function get_permission_callback( $request ) {
		return Plugin::elementor()->kits_manager->get_active_kit()->is_editable_by_current_user();
	}
}
core/app/modules/kit-library/module.php000064400000004335150755004320014161 0ustar00<?php
namespace ElementorPro\Core\App\Modules\KitLibrary;

use ElementorPro\Plugin;
use ElementorPro\License\API;
use ElementorPro\License\Admin;
use Elementor\Core\Base\Module as BaseModule;
use ElementorPro\Core\Connect\Apps\Activate;
use Elementor\Core\App\Modules\KitLibrary\Connect\Kit_Library;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Module extends BaseModule {
	/**
	 * Get name.
	 *
	 * @access public
	 *
	 * @return string
	 */
	public function get_name() {
		return 'kit-library';
	}

	private function set_kit_library_settings() {
		$common = Plugin::elementor()->common;
		$app = Plugin::elementor()->app;

		$prev_settings = $app->get_settings( 'kit-library' );

		// BC Support.
		if ( ! $prev_settings || ! $common ) {
			return;
		}

		/** @var Activate $activate */
		$activate = $common->get_component( 'connect' )->get_app( 'activate' );

		/** @var Kit_Library $kit_library */
		$kit_library = $common->get_component( 'connect' )->get_app( 'kit-library' );

		$app->set_settings( 'kit-library', array_merge( $prev_settings, [
			'is_pro' => true,
			'is_library_connected' => API::is_license_active() && $kit_library && $kit_library->is_connected(),
			'library_connect_url' => $activate->get_admin_url( 'authorize' ),
			'access_level' => API::get_library_access_level( 'kit' ),
		] ) );
	}

	/**
	 * @param array $connect_info
	 * @param       $app
	 *
	 * @return array
	 */
	private function add_license_to_connect_info( array $connect_info, $app ) {
		$license_key = Admin::get_license_key();

		// In elementor 3.3.0-beta it does not send the $app parameter and it should add the license.
		$bc_support = ! $app;
		$is_kit_library_request = $app && Kit_Library::class === get_class( $app );

		if ( ! empty( $license_key ) && ( $bc_support || $is_kit_library_request ) ) {
			$connect_info['license'] = $license_key;
		}

		return $connect_info;
	}


	public function __construct() {
		add_action( 'elementor/init', function () {
			$this->set_kit_library_settings();
		}, 13 /** after elementor core */ );

		add_filter( 'elementor/connect/additional-connect-info', function ( array $connect_info, $app = null ) {
			return $this->add_license_to_connect_info( $connect_info, $app );
		}, 10, 2 );
	}
}
core/app/app.php000064400000004170150755004320007550 0ustar00<?php
namespace ElementorPro\Core\App;

use Elementor\Core\Base\App as BaseApp;
use ElementorPro\Plugin;
use ElementorPro\Core\App\Modules\SiteEditor\Module as SiteEditor;
use ElementorPro\Core\App\Modules\KitLibrary\Module as KitLibrary;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class App extends BaseApp {
	/**
	 * Get module name.
	 *
	 * Retrieve the module name.
	 *
	 * @since 3.0.0
	 * @access public
	 *
	 * @return string Module name.
	 */
	public function get_name() {
		return 'app-pro';
	}

	public function init() {
		$this->enqueue_assets();
	}

	public function set_menu_url() {
		Plugin::elementor()->app->set_settings( 'menu_url', Plugin::elementor()->app->get_base_url() . '#/site-editor' );
	}

	protected function get_init_settings() {
		return [
			'baseUrl' => $this->get_assets_base_url(),
		];
	}

	protected function get_assets_base_url() {
		return ELEMENTOR_PRO_URL;
	}

	private function enqueue_assets() {
		wp_enqueue_style(
			'elementor-pro-app',
			$this->get_css_assets_url( 'app', null, 'default', true ),
			[
				'elementor-app',
				'select2',
			],
			ELEMENTOR_VERSION
		);

		wp_enqueue_script(
			'elementor-pro-app',
			$this->get_js_assets_url( 'app' ),
			[
				'wp-i18n',
				'elementor-app-packages',
				'elementor-common',
				'select2',
			],
			ELEMENTOR_PRO_VERSION,
			true
		);

		wp_set_script_translations( 'elementor-pro-app', 'elementor-pro' );
	}

	private function enqueue_config() {
		// If script didn't loaded, config is still relevant, enqueue without a file.
		if ( ! wp_script_is( 'elementor-pro-app' ) ) {
			wp_register_script( 'elementor-pro-app', false, [], ELEMENTOR_PRO_VERSION );
			wp_enqueue_script( 'elementor-pro-app' );
		}

		$this->print_config( 'elementor-pro-app' );
	}

	public function __construct() {
		$this->add_component( 'site-editor', new SiteEditor() );
		$this->add_component( 'kit-library', new KitLibrary() );

		add_action( 'elementor/app/init', [ $this, 'init' ] );

		add_action( 'elementor/common/after_register_scripts', function () {
			$this->enqueue_config();
		} );

		add_action( 'elementor/init', [ $this, 'set_menu_url' ] );
	}
}
core/connect/apps/activate.php000064400000007371150755004320012412 0ustar00<?php
namespace ElementorPro\Core\Connect\Apps;

use Elementor\Core\Common\Modules\Connect\Apps\Common_App;
use ElementorPro\License;
use ElementorPro\License\API;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Activate extends Common_App {
	public function get_title() {
		return esc_html__( 'Activate', 'elementor-pro' );
	}

	public function get_slug() {
		return 'activate';
	}

	protected function after_connect() {
		$this->action_activate_license();
	}

	/**
	 * @since 2.3.0
	 * @access public
	 */
	public function action_authorize() {
		// In case the first connect was not from Activate App - require a new authorization.
		if ( $this->is_connected() && ! License\Admin::get_license_key() ) {
			$this->disconnect();
		}

		parent::action_authorize();
	}

	public function action_activate_pro() {
		$this->action_activate_license();
	}

	public function action_switch_license() {
		$this->disconnect();
		$this->action_authorize();
	}

	public function action_deactivate() {
		License\Admin::deactivate();
		$this->disconnect();
		wp_safe_redirect( License\Admin::get_url() );
		die;
	}

	public function action_activate_license() {
		if ( ! $this->is_connected() ) {
			$this->add_notice( esc_html__( 'Please connect to Elementor in order to activate license.', 'elementor-pro' ), 'error' );

			$this->redirect_to_admin_page();
		}

		$license = $this->request( 'get_connected_license' );

		if ( empty( $license ) ) {
			// TODO: add suggestions how to check/resolve.
			wp_die( 'License not found for user ' . esc_attr( $this->get( 'user' )->email ), esc_html__( 'Elementor Pro', 'elementor-pro' ), [
				'back_link' => true,
			] );
		}

		if ( is_wp_error( $license ) ) {
			wp_die( $license, esc_html__( 'Elementor Pro', 'elementor-pro' ), [ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				'back_link' => true,
			] );
		}

		$license_key = trim( $license->key );

		if ( empty( $license_key ) ) {
			wp_die( esc_html__( 'License key is missing.', 'elementor-pro' ), esc_html__( 'Elementor Pro', 'elementor-pro' ), [
				'back_link' => true,
			] );
		}

		$data = License\API::activate_license( $license_key );

		if ( is_wp_error( $data ) ) {
			wp_die( sprintf( '%s (%s) ', $data->get_error_message(), $data->get_error_code() ), esc_html__( 'Elementor Pro', 'elementor-pro' ), [ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				'back_link' => true,
			] );
		}

		if ( License\API::STATUS_VALID !== $data['license'] ) {
			$error_msg = License\API::get_error_message( $data['error'] ); // get_error_message() escapes html

			wp_die( $error_msg, esc_html__( 'Elementor Pro', 'elementor-pro' ), [ // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				'back_link' => true,
			] );
		}

		License\Admin::set_license_key( $license_key );

		License\API::set_license_data( $data );

		$this->request( 'set_site_owner' );

		$this->add_notice( esc_html__( 'License has been activated successfully.', 'elementor-pro' ) );

		$this->redirect_to_admin_page( License\Admin::get_url() );
		die;
	}

	public function action_reset() {
		if ( current_user_can( 'manage_options' ) ) {
			delete_option( 'elementor_pro_license_key' );
			delete_transient( 'elementor_pro_license_data' );
		}

		$this->redirect_to_admin_page();
	}

	protected function get_popup_success_event_data() {
		return [
			'templates_access_level' => API::get_library_access_level( 'template' ),
			'kits_access_level' => API::get_library_access_level( 'kit' ),
		];
	}

	protected function get_app_info() {
		return [
			'license_data' => [
				'label' => 'License Data',
				'value' => get_option( '_elementor_pro_license_data' ),
			],
			'license_key' => [
				'label' => 'License Key',
				'value' => get_option( 'elementor_pro_license_key' ),
			],
		];
	}
}
core/connect/manager.php000064400000001113150755004320011245 0ustar00<?php
namespace ElementorPro\Core\Connect;

use ElementorPro\Core\Connect\Apps\Activate;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Manager {

	/**
	 * @param \Elementor\Core\Common\Modules\Connect\Module $apps_manager
	 */
	public function register_apps( $apps_manager ) {
		$apps = [
			'activate' => Activate::get_class_name(),
		];

		foreach ( $apps as $slug => $class ) {
			$apps_manager->register_app( $slug, $class );
		}
	}

	public function __construct() {
		add_action( 'elementor/connect/apps/register', [ $this, 'register_apps' ] );
	}
}
core/upgrade/manager.php000064400000001453150755004320011252 0ustar00<?php
namespace ElementorPro\Core\Upgrade;

use Elementor\Core\Upgrade\Manager as Upgrades_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Manager extends Upgrades_Manager {

	public function get_action() {
		return 'elementor_pro_updater';
	}

	public function get_plugin_name() {
		return 'elementor-pro';
	}

	public function get_plugin_label() {
		return esc_html__( 'Elementor Pro', 'elementor-pro' );
	}

	public function get_updater_label() {
		return esc_html__( 'Elementor Pro Data Updater', 'elementor-pro' );
	}

	public function get_new_version() {
		return ELEMENTOR_PRO_VERSION;
	}

	public function get_version_option_name() {
		return 'elementor_pro_version';
	}

	public function get_upgrades_class() {
		return 'ElementorPro\Core\Upgrade\Upgrades';
	}
}
core/upgrade/upgrades.php000064400000075014150755004320011456 0ustar00<?php
namespace ElementorPro\Core\Upgrade;

use Elementor\Core\Base\Document;
use Elementor\Core\Upgrade\Updater;
use Elementor\Icons_Manager;
use Elementor\Core\Upgrade\Upgrades as Core_Upgrades;
use ElementorPro\License\API;
use ElementorPro\Plugin;
use Elementor\Modules\History\Revisions_Manager;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

class Upgrades {

	public static $typography_control_names = [
		'typography', // The popover toggle ('starter_name').
		'font_family',
		'font_size',
		'font_weight',
		'text_transform',
		'font_style',
		'text_decoration',
		'line_height',
		'letter_spacing',
	];

	public static function _on_each_version( $updater ) {
		self::_remove_remote_info_api_data();
	}

	public static function _v_1_3_0() {
		global $wpdb;

		// Fix Button widget to new sizes options
		$post_ids = $wpdb->get_col(
			'SELECT `post_id` FROM `' . $wpdb->postmeta . '` WHERE `meta_key` = "_elementor_data" AND `meta_value` LIKE \'%"widgetType":"form"%\';'
		);

		if ( empty( $post_ids ) ) {
			return;
		}

		foreach ( $post_ids as $post_id ) {
			$document = Plugin::elementor()->documents->get( $post_id );

			if ( $document ) {
				$data = $document->get_elements_data();
			}

			if ( empty( $data ) ) {
				continue;
			}

			$data = Plugin::elementor()->db->iterate_data( $data, function( $element ) {
				if ( empty( $element['widgetType'] ) || 'form' !== $element['widgetType'] ) {
					return $element;
				}

				if ( ! isset( $element['settings']['submit_actions'] ) ) {
					$element['settings']['submit_actions'] = [ 'email' ];
				}

				if ( ! empty( $element['settings']['redirect_to'] ) ) {
					if ( ! in_array( 'redirect', $element['settings']['submit_actions'] ) ) {
						$element['settings']['submit_actions'][] = 'redirect';
					}
				}

				if ( ! empty( $element['settings']['webhooks'] ) ) {
					if ( ! in_array( 'webhook', $element['settings']['submit_actions'] ) ) {
						$element['settings']['submit_actions'][] = 'webhook';
					}
				}

				return $element;
			} );

			self::save_editor( $post_id, $data );
		}
	}

	public static function _v_1_4_0() {
		global $wpdb;

		// Move all posts columns to classic skin (Just add prefix)
		$post_ids = $wpdb->get_col(
			'SELECT `post_id` FROM `' . $wpdb->postmeta . '` WHERE `meta_key` = "_elementor_data" AND `meta_value` LIKE \'%"widgetType":"posts"%\';'
		);

		if ( empty( $post_ids ) ) {
			return;
		}

		foreach ( $post_ids as $post_id ) {
			$document = Plugin::elementor()->documents->get( $post_id );

			if ( $document ) {
				$data = $document->get_elements_data();
			}

			if ( empty( $data ) ) {
				continue;
			}

			$data = Plugin::elementor()->db->iterate_data( $data, function( $element ) {
				if ( empty( $element['widgetType'] ) || 'posts' !== $element['widgetType'] ) {
					return $element;
				}

				$fields_to_change = [
					'columns',
					'columns_mobile',
					'columns_tablet',
				];

				foreach ( $fields_to_change as $field ) {
					// TODO: Remove old value later
					$new_field_key = 'classic_' . $field;
					if ( isset( $element['settings'][ $field ] ) && ! isset( $element['settings'][ $new_field_key ] ) ) {
						$element['settings'][ $new_field_key ] = $element['settings'][ $field ];
					}
				}

				return $element;
			} );

			$document = Plugin::elementor()->documents->get( $post_id );

			$document->save( [
				'elements' => $data,
			] );
		}
	}

	public static function _v_1_12_0() {
		global $wpdb;

		// Set `mailchimp_api_key_source` to `custom`.
		$post_ids = $wpdb->get_col(
			'SELECT `post_id` FROM `' . $wpdb->postmeta . '` WHERE `meta_key` = "_elementor_data" AND `meta_value` LIKE \'%"widgetType":"form"%\';'
		);

		if ( empty( $post_ids ) ) {
			return;
		}

		foreach ( $post_ids as $post_id ) {
			$do_update = false;
			$document = Plugin::elementor()->documents->get( $post_id );

			if ( $document ) {
				$data = $document->get_elements_data();
			}

			if ( empty( $data ) ) {
				continue;
			}

			$data = Plugin::elementor()->db->iterate_data( $data, function( $element ) use ( &$do_update ) {
				if ( empty( $element['widgetType'] ) || 'form' !== $element['widgetType'] ) {
					return $element;
				}

				if ( ! empty( $element['settings']['mailchimp_api_key'] ) && ! isset( $element['settings']['mailchimp_api_key_source'] ) ) {
					$element['settings']['mailchimp_api_key_source'] = 'custom';
					$do_update = true;
				}

				return $element;
			} );

			// Only update if form has mailchimp
			if ( ! $do_update ) {
				continue;
			}
			// We need the `wp_slash` in order to avoid the unslashing during the `update_post_meta`
			$json_value = wp_slash( wp_json_encode( $data ) );

			update_metadata( 'post', $post_id, '_elementor_data', $json_value );
		}
	}

	/**
	 * Replace 'sticky' => 'yes' with 'sticky' => 'top' in sections.
	 */
	public static function _v_2_0_3() {
		global $wpdb;

		$post_ids = $wpdb->get_col(
			'SELECT `post_id` FROM `' . $wpdb->postmeta . '` WHERE `meta_key` = "_elementor_data" AND `meta_value` LIKE \'%"sticky":"yes"%\';'
		);

		if ( empty( $post_ids ) ) {
			return;
		}

		foreach ( $post_ids as $post_id ) {
			$do_update = false;

			$document = Plugin::elementor()->documents->get( $post_id );

			if ( ! $document ) {
				continue;
			}

			$data = $document->get_elements_data();

			if ( empty( $data ) ) {
				continue;
			}

			$data = Plugin::elementor()->db->iterate_data( $data, function( $element ) use ( &$do_update ) {
				if ( empty( $element['elType'] ) || 'section' !== $element['elType'] ) {
					return $element;
				}

				if ( ! empty( $element['settings']['sticky'] ) && 'yes' === $element['settings']['sticky'] ) {
					$element['settings']['sticky'] = 'top';
					$do_update = true;
				}

				return $element;
			} );

			if ( ! $do_update ) {
				continue;
			}
			// We need the `wp_slash` in order to avoid the unslashing during the `update_metadata`
			$json_value = wp_slash( wp_json_encode( $data ) );

			update_metadata( 'post', $post_id, '_elementor_data', $json_value );
		} // End foreach().
	}

	private static function save_editor( $post_id, $posted ) {
		// Change the global post to current library post, so widgets can use `get_the_ID` and other post data
		if ( isset( $GLOBALS['post'] ) ) {
			$global_post = $GLOBALS['post'];
		}
		$GLOBALS['post'] = get_post( $post_id ); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited

		$editor_data = self::get_editor_data( $posted );

		// We need the `wp_slash` in order to avoid the unslashing during the `update_post_meta`
		$json_value = wp_slash( wp_json_encode( $editor_data ) );

		$is_meta_updated = update_metadata( 'post', $post_id, '_elementor_data', $json_value );

		if ( $is_meta_updated ) {
			Revisions_Manager::handle_revision();
		}

		// Restore global post
		if ( isset( $global_post ) ) {
			$GLOBALS['post'] = $global_post; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
		} else {
			unset( $GLOBALS['post'] );
		}

		/**
		 * After editor saves data.
		 *
		 * Fires after Elementor editor data was saved.
		 *
		 * @since 1.0.0
		 *
		 * @param int   $post_id     The ID of the post.
		 * @param array $editor_data The editor data.
		 */
		do_action( 'elementor/editor/after_save', $post_id, $editor_data );
	}

	private static function get_editor_data( $data, $with_html_content = false ) {
		$editor_data = [];

		foreach ( $data as $element_data ) {
			$element = Plugin::elementor()->elements_manager->create_element_instance( $element_data );

			if ( ! $element ) {
				continue;
			}

			$editor_data[] = $element->get_raw_data( $with_html_content );
		} // End Section

		return $editor_data;
	}

	public static function _v_2_5_0_form( $updater ) {
		$changes = [
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_rename_repeater_settings' ],
				'control_ids' => [
					'form_fields' => [
						'_id' => 'custom_id',
					],
				],
			],
		];

		return self::_update_widget_settings( 'form', $updater, $changes );
	}

	public static function _v_2_5_0_woocommerce_menu_cart( $updater ) {
		$changes = [
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_rename_widget_settings' ],
				'control_ids' => [
					'checkout_button_border_color' => 'checkout_border_color',
					'view_cart_button_border_color' => 'view_cart_border_color',
				],
			],
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_slider_to_border_settings' ],
				'control_ids' => [
					'checkout_button_border_width' => [
						'new' => 'checkout_border_width',
						'add' => 'checkout_border_border',
					],
					'view_cart_button_border_width' => [
						'new' => 'view_cart_border_width',
						'add' => 'view_cart_border_border',
					],
				],
			],
		];

		return self::_update_widget_settings( 'woocommerce-menu-cart', $updater, $changes );
	}

	public static function _slider_to_border_settings( $element, $args ) {
		$widget_id = $args['widget_id'];
		$changes = $args['control_ids'];

		if ( empty( $element['widgetType'] ) || $widget_id !== $element['widgetType'] ) {
			return $element;
		}

		foreach ( $changes as $old => $new ) {
			if ( ! empty( $element['settings'][ $old ] ) && ! isset( $element['settings'][ $new['new'] ] ) ) {
				$new_border_width = [
					'unit' => $element['settings'][ $old ]['unit'],
					'top' => $element['settings'][ $old ]['size'],
					'bottom' => $element['settings'][ $old ]['size'],
					'left' => $element['settings'][ $old ]['size'],
					'right' => $element['settings'][ $old ]['size'],
					'isLinked' => true,
				];
				$element['settings'][ $new ['new'] ] = $new_border_width;
				$element['settings'][ $new ['add'] ] = 'solid';
				$args['do_update'] = true;
			}
		}
		return $element;
	}

	/**
	 * @param $element
	 * @param $args
	 *
	 * @return mixed
	 */
	public static function _rename_repeater_settings( $element, $args ) {
		$widget_id = $args['widget_id'];
		$changes = $args['control_ids'];

		if ( empty( $element['widgetType'] ) || $widget_id !== $element['widgetType'] ) {
			return $element;
		}

		foreach ( $changes as $change_key => $change ) {
			foreach ( $change as $old => $new ) {
				foreach ( $element['settings'][ $change_key ] as &$repeater ) {
					if ( ! empty( $repeater[ $old ] ) && ! isset( $repeater[ $new ] ) ) {
						$repeater[ $new ] = $repeater[ $old ];
						$args['do_update'] = true;
					}
				}
			}
		}

		return $element;
	}

	private static function taxonomies_mapping( $prefix, $map_to ) {
		$taxonomy_filter_args = [
			'show_in_nav_menus' => true,
		];

		$taxonomies = get_taxonomies( $taxonomy_filter_args );

		$mapping = [];

		foreach ( $taxonomies as $taxonomy ) {
			$mapping[ $prefix . $taxonomy . '_ids' ] = $map_to;
		}

		return $mapping;
	}

	public static function _v_2_5_0_posts( $updater ) {
		$add_taxonomies = self::taxonomies_mapping( 'posts_', [ 'posts_include' => 'terms' ] );
		$merge_taxonomies = self::taxonomies_mapping( 'posts_', 'posts_include_term_ids' );

		$changes = [
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_rename_widget_settings' ],
				'control_ids' => [
					'orderby' => 'posts_orderby',
					'order' => 'posts_order',
					'offset' => 'posts_offset',
					'exclude' => 'posts_exclude',
					'exclude_ids' => 'posts_exclude_ids',
					'posts_query_id' => 'posts_posts_query_id',
					'avoid_duplicates' => 'posts_avoid_duplicates',
					'posts_authors' => 'posts_include_authors',
				],
			],
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_add_widget_settings_to_array' ],
				'control_ids' => array_merge( $add_taxonomies, [
					'posts_authors' => [ 'posts_include' => 'authors' ],
				] ),
			],
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_merge_widget_settings' ],
				'control_ids' => $merge_taxonomies,
			],
		];

		return self::_update_widget_settings( 'posts', $updater, $changes );
	}

	public static function _v_2_5_0_portfolio( $updater ) {
		$add_taxonomies = self::taxonomies_mapping( 'posts_', [ 'posts_include' => 'terms' ] );
		$merge_taxonomies = self::taxonomies_mapping( 'posts_', 'posts_include_term_ids' );

		$changes = [
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_rename_widget_settings' ],
				'control_ids' => [
					'orderby' => 'posts_orderby',
					'order' => 'posts_order',
					'offset' => 'posts_offset',
					'exclude' => 'posts_exclude',
					'exclude_ids' => 'posts_exclude_ids',
					'posts_query_id' => 'posts_posts_query_id',
					'avoid_duplicates' => 'posts_avoid_duplicates',
					'posts_authors' => 'posts_include_authors',
				],
			],
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_add_widget_settings_to_array' ],
				'control_ids' => array_merge( $add_taxonomies, [
					'posts_authors' => [ 'posts_include' => 'authors' ],
				] ),
			],
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_merge_widget_settings' ],
				'control_ids' => $merge_taxonomies,
			],
		];

		return self::_update_widget_settings( 'portfolio', $updater, $changes );
	}

	public static function _v_2_5_0_products( $updater ) {
		$add_taxonomies = self::taxonomies_mapping( 'query_', [ 'query_include' => 'terms' ] );
		$merge_taxonomies = self::taxonomies_mapping( 'query_', 'query_include_term_ids' );
		$changes = [
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_rename_widget_settings' ],
				'control_ids' => [
					'orderby' => 'query_orderby',
					'order' => 'query_order',
					'exclude' => 'query_exclude',
					'exclude_ids' => 'query_exclude_ids',
					'query_authors' => 'query_include_authors',
					'query_product_tag_ids' => 'query_include_term_ids',
					'query_product_cat_ids' => 'query_include_term_ids',
				],
			],
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_add_widget_settings_to_array' ],
				'control_ids' => array_merge( $add_taxonomies, [
					'query_authors' => [ 'query_include' => 'authors' ],
				] ),
			],
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_merge_widget_settings' ],
				'control_ids' => $merge_taxonomies,
			],
		];

		return self::_update_widget_settings( 'woocommerce-products', $updater, $changes );
	}

	/**
	 * @param $updater
	 *
	 * @return bool Should run again.
	 */
	public static function _v_2_5_0_sitemap( $updater ) {
		$changes = [
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_rename_widget_settings' ],
				'control_ids' => [
					'exclude' => 'sitemap_exclude',
					'exclude_ids' => 'sitemap_exclude_ids',
				],
			],
		];

		return self::_update_widget_settings( 'sitemap', $updater, $changes );
	}

	/**
	 * @param Updater $updater
	 *
	 * @return bool
	 */
	public static function _v_2_5_0_popup_border_radius( $updater ) {
		global $wpdb;

		$post_ids = $updater->query_col(
			"SELECT pm1.post_id
					FROM {$wpdb->postmeta} AS pm1
					LEFT JOIN {$wpdb->postmeta} AS pm2 ON (pm1.post_id = pm2.post_id)
					WHERE pm1.meta_key = '_elementor_template_type'
					AND pm1.meta_value = 'popup'
					AND pm2.`meta_key` = '" . Document::PAGE_META_KEY . "'
					AND pm2.`meta_value` LIKE '%border_radius%';"
		);

		if ( empty( $post_ids ) ) {
			return false;
		}

		foreach ( $post_ids as $post_id ) {
			// Clear WP cache for next step.
			$document = Plugin::elementor()->documents->get( $post_id );

			if ( ! $document ) {
				continue;
			}

			$page_settings = $document->get_settings();

			// Check if there isn't 'border_radius' setting or if it has already been upgraded
			if ( empty( $page_settings['border_radius']['size'] ) ) {
				continue;
			}

			$border_radius = $page_settings['border_radius'];

			$new_border_radius = [
				'unit' => $border_radius['unit'],
				'top' => $border_radius['size'],
				'bottom' => $border_radius['size'],
				'left' => $border_radius['size'],
				'right' => $border_radius['size'],
				'isLinked' => true,
			];

			$page_settings['border_radius'] = $new_border_radius;

			// TODO: `$document->update_settings`.
			$document->update_meta( Document::PAGE_META_KEY, $page_settings );

			wp_cache_flush();
		} // End foreach().

		return $updater->should_run_again( $post_ids );
	}

	public static function _v_2_5_4_posts( $updater ) {
		$merge_taxonomies = self::taxonomies_mapping( 'posts_', 'posts_include_term_ids' );

		$changes = [
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_convert_term_id_to_term_taxonomy_id' ],
				'control_ids' => $merge_taxonomies,
				'prefix' => 'posts_',
				'new_id' => 'include_term_ids',
			],
		];

		return self::_update_widget_settings( 'posts', $updater, $changes );
	}

	public static function _v_2_5_4_portfolio( $updater ) {
		$merge_taxonomies = self::taxonomies_mapping( 'posts_', 'posts_include_term_ids' );

		$changes = [
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_convert_term_id_to_term_taxonomy_id' ],
				'control_ids' => $merge_taxonomies,
				'prefix' => 'posts_',
				'new_id' => 'include_term_ids',
			],
		];

		return self::_update_widget_settings( 'portfolio', $updater, $changes );
	}

	public static function _v_2_5_4_products( $updater ) {
		$merge_taxonomies = self::taxonomies_mapping( 'query_', 'query_include_term_ids' );
		$changes = [
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_convert_term_id_to_term_taxonomy_id' ],
				'control_ids' => $merge_taxonomies,
				'prefix' => 'query_',
				'new_id' => 'include_term_ids',
			],
		];

		return self::_update_widget_settings( 'woocommerce-products', $updater, $changes );
	}

	public static function _v_2_5_4_form( $updater ) {
		$changes = [
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_missing_form_custom_id_settings' ],
				'control_ids' => [],
			],
		];

		return self::_update_widget_settings( 'form', $updater, $changes );
	}

	public static function _v_3_1_0_media_carousel( $updater ) {
		$changes = [
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_convert_progress_to_progressbar' ],
				'control_ids' => [],
			],
		];

		return self::_update_widget_settings( 'media-carousel', $updater, $changes );
	}

	public static function _v_3_1_0_reviews( $updater ) {
		$changes = [
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_convert_progress_to_progressbar' ],
				'control_ids' => [],
			],
		];

		return self::_update_widget_settings( 'reviews', $updater, $changes );
	}

	public static function _v_3_1_0_testimonial_carousel( $updater ) {
		$changes = [
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_convert_progress_to_progressbar' ],
				'control_ids' => [],
			],
		];

		return self::_update_widget_settings( 'testimonial-carousel', $updater, $changes );
	}

	public static function _v_3_1_0_slides( $updater ) {
		$changes = [
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_migrate_slides_button_color_settings' ],
				'control_ids' => [],
			],
		];

		return self::_update_widget_settings( 'slides', $updater, $changes );
	}

	public static function _v_3_3_0_nav_menu_icon( $updater ) {
		$changes = [
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_migrate_indicator_control_to_submenu_icon' ],
				'control_ids' => [],
			],
		];

		return self::_update_widget_settings( 'nav-menu', $updater, $changes );
	}

	public static function _v_3_3_0_recalc_usage_data( $updater ) {
		return Core_Upgrades::recalc_usage_data( $updater );
	}

	public static function _v_3_5_0_price_list( $updater ) {
		$changes = [
			[
				'callback' => [ 'ElementorPro\Core\Upgrade\Upgrades', '_copy_title_styles_to_new_price_controls' ],
				'control_ids' => [],
			],
		];

		return self::_update_widget_settings( 'price-list', $updater, $changes );
	}

	/**
	 * $changes is an array of arrays in the following format:
	 * [
	 *   'control_ids' => array of control ids
	 *   'callback' => user callback to manipulate the control_ids
	 * ]
	 *
	 * @param       $widget_id
	 * @param       $updater
	 * @param array $changes
	 *
	 * @return bool
	 */
	public static function _update_widget_settings( $widget_id, $updater, $changes ) {
		global $wpdb;

		$post_ids = $updater->query_col(
			'SELECT `post_id`
					FROM `' . $wpdb->postmeta . '`
					WHERE `meta_key` = "_elementor_data"
					AND `meta_value` LIKE \'%"widgetType":"' . $widget_id . '"%\';'
		);

		if ( empty( $post_ids ) ) {
			return false;
		}

		foreach ( $post_ids as $post_id ) {
			$do_update = false;

			$document = Plugin::elementor()->documents->get( $post_id );

			if ( ! $document ) {
				continue;
			}

			$data = $document->get_elements_data();

			if ( empty( $data ) ) {
				continue;
			}

			// loop thru callbacks & array
			foreach ( $changes as $change ) {
				$args = [
					'do_update' => &$do_update,
					'widget_id' => $widget_id,
					'control_ids' => $change['control_ids'],
				];
				if ( isset( $change['prefix'] ) ) {
					$args['prefix'] = $change['prefix'];
					$args['new_id'] = $change['new_id'];
				}
				$data = Plugin::elementor()->db->iterate_data( $data, $change['callback'], $args );
				if ( ! $do_update ) {
					continue;
				}

				// We need the `wp_slash` in order to avoid the unslashing during the `update_metadata`
				$json_value = wp_slash( wp_json_encode( $data ) );

				update_metadata( 'post', $post_id, '_elementor_data', $json_value );
			}
		} // End foreach().

		return $updater->should_run_again( $post_ids );
	}

	/**
	 * @param $element
	 * @param $args
	 *
	 * @return mixed
	 */
	public static function _rename_widget_settings( $element, $args ) {
		$widget_id = $args['widget_id'];
		$changes = $args['control_ids'];

		if ( empty( $element['widgetType'] ) || $widget_id !== $element['widgetType'] ) {
			return $element;
		}

		foreach ( $changes as $old => $new ) {
			if ( ! empty( $element['settings'][ $old ] ) && ! isset( $element['settings'][ $new ] ) ) {
				$element['settings'][ $new ] = $element['settings'][ $old ];
				$args['do_update'] = true;
			}
		}

		return $element;
	}

	/**
	 * @param $element
	 * @param $args
	 *
	 * @return mixed
	 */
	public static function _add_widget_settings_to_array( $element, $args ) {
		$widget_id = $args['widget_id'];
		$changes = $args['control_ids'];

		if ( empty( $element['widgetType'] ) || $widget_id !== $element['widgetType'] ) {
			return $element;
		}

		foreach ( $changes as $old_key => $added_key ) {
			if ( ! empty( $element['settings'][ $old_key ] ) ) {
				foreach ( $added_key as $control_id => $val ) {
					if ( ! in_array( $val, $element['settings'][ $control_id ], true ) ) {
						$element['settings'][ $control_id ][] = $val;
						$args['do_update'] = true;
					}
				}
			}
		}

		return $element;
	}

	/**
	 * @param $element
	 * @param $args
	 *
	 * @return mixed
	 */
	public static function _merge_widget_settings( $element, $args ) {
		$widget_id = $args['widget_id'];
		$changes = $args['control_ids'];

		if ( empty( $element['widgetType'] ) || $widget_id !== $element['widgetType'] ) {
			return $element;
		}

		foreach ( $changes as $old => $new ) {
			if ( ! empty( $element['settings'][ $old ] ) ) {
				if ( ! isset( $element['settings'][ $new ] ) ) {
					$element['settings'][ $new ] = $element['settings'][ $old ];
				} else {
					$element['settings'][ $new ] = array_unique( array_merge( $element['settings'][ $old ], $element['settings'][ $new ] ) );
				}
				$args['do_update'] = true;
			}
		}

		return $element;
	}

	/**
	 * Possible scenarios:
	 * 1) custom_id is not empty --> do nothing
	 * 2) Existing _id: Empty or Missing custom_id --> create custom_id and set the value to the value of _id
	 * 3) Missing _id: Empty or Missing custom_id --> generate a unique key and set it as custom_id value
	 * @param $element
	 * @param $args
	 *
	 * @return mixed
	 */
	public static function _missing_form_custom_id_settings( $element, $args ) {
		$widget_id = $args['widget_id'];

		if ( empty( $element['widgetType'] ) || $widget_id !== $element['widgetType'] ) {
			return $element;
		}

		$random_id = (int) substr( time(), -5 );
		//form_fields loop:
		foreach ( $element['settings']['form_fields'] as &$repeater_item ) {
			if ( ! empty( $repeater_item['custom_id'] ) ) { // Scenario 1
				continue;
			}

			if ( ! empty( $repeater_item['_id'] ) ) { // Scenario 2
				$repeater_item['custom_id'] = $repeater_item['_id'];
			} else { // Scenario 3
				$repeater_item['custom_id'] = 'field_' . $random_id;
				$random_id++;
			}

			$args['do_update'] = true;
		}

		return $element;
	}

	/**
	 * Migrates the value saved for the 'indicator' SELECT control in the Nav Menu Widget to the new replacement
	 * 'submenu_icon' ICONS control.
	 *
	 * @param $element
	 * @param $args
	 *
	 * @return mixed;
	 */
	public static function _migrate_indicator_control_to_submenu_icon( $element, $args ) {
		$widget_id = $args['widget_id'];

		// If the current element is not a Nav Menu widget, go to the next one.
		if ( empty( $element['widgetType'] ) || $widget_id !== $element['widgetType'] ) {
			return $element;
		}

		// If this Nav Menu widget's 'indicator' control value is the default one (there is no value in the DB),
		// there is nothing to migrate, since the default icon is identical in the new control. Go to the next element.
		if ( ! isset( $element['settings']['indicator'] ) ) {
			return $element;
		}

		$new_value = '';
		$new_library = 'fa-solid';

		switch ( $element['settings']['indicator'] ) {
			case 'none':
				$new_library = '';
				break;
			case 'classic':
				$new_value = 'fa-caret-down';
				break;
			case 'chevron':
				$new_value = 'fa-chevron-down';
				break;
			case 'angle':
				$new_value = 'fa-angle-down';
				break;
			case 'plus':
				$new_value = 'e-plus-icon';
				$new_library = '';
				break;
		}

		// This is done in order to make sure that the menu will not look any different for users who upgrade.
		// The 'None' option should be completely empty.
		if ( $new_value ) {
			if ( Icons_Manager::is_migration_allowed() ) {
				// If the site has been migrated to FA5, add the new FA Solid class.
				$new_value = 'fas ' . $new_value;
			} else {
				// If the site has not been migrated, add the old generic 'fa' class.
				$new_value = 'fa ' . $new_value;
			}
		}

		// Set the migrated value for the new control.
		$element['settings']['submenu_icon'] = [
			'value' => $new_value,
			'library' => $new_library,
		];

		$args['do_update'] = true;

		return $element;
	}

	/**
	 * @param $element
	 * @param $args
	 *
	 * @return mixed
	 */
	public static function _convert_term_id_to_term_taxonomy_id( $element, $args ) {
		$widget_id = $args['widget_id'];
		$changes = $args['control_ids'];
		$prefix = $args['prefix'];
		$new_id = $prefix . $args['new_id'];

		if ( empty( $element['widgetType'] ) || $widget_id !== $element['widgetType'] ) {
			return $element;
		}

		// Exit if new is empty (should not happen)
		if ( empty( $element['settings'][ $new_id ] ) ) {
			return $element;
		}

		// 1) Convert each term-id to the equivalent term_taxonomy_id
		$term_taxonomy_ids = [];
		$old_term_ids = [];
		foreach ( $changes as $old => $new ) {
			if ( ! empty( $element['settings'][ $old ] ) ) {
				$start = strlen( $prefix );
				$end = -strlen( '_ids' );
				$taxonomy = substr( $old, $start, $end );
				foreach ( $element['settings'][ $old ] as $term_id ) {
					$old_term_ids[] = $term_id;
					$term_obj = get_term( $term_id, $taxonomy, OBJECT );
					if ( $term_obj && ! is_wp_error( $term_obj ) ) {
						$term_taxonomy_ids[] = $term_obj->term_taxonomy_id;
					}
				}
			}
		}

		// 2) Check if the widget's settings were changed after the u/g to 2.5.0
		$diff = array_diff( $element['settings'][ $new_id ], array_unique( $old_term_ids ) );
		if ( empty( $diff ) ) { // Nothing was changed
			$element['settings'][ $new_id . '_backup' ] = $element['settings'][ $new_id ];
			$element['settings'][ $new_id ] = $term_taxonomy_ids;
			$args['do_update'] = true;
		}

		return $element;
	}

	/**
	 * Convert 'progress' to 'progressbar'
	 *
	 * Before Elementor 2.2.0, the progress bar option key was 'progress'. In Elementor 2.2.0,
	 * it was changed to 'progressbar'. This upgrade script migrated the DB data for old websites using 'progress'.
	 *
	 * @param $element
	 * @param $args
	 * @return mixed
	 */
	public static function _convert_progress_to_progressbar( $element, $args ) {
		$widget_id = $args['widget_id'];

		if ( empty( $element['widgetType'] ) || $widget_id !== $element['widgetType'] ) {
			return $element;
		}

		if ( 'progress' === $element['settings']['pagination'] ) {
			$element['settings']['pagination'] = 'progressbar';
			$args['do_update'] = true;
		}

		return $element;
	}

	/**
	 * Migrate Slides Button Color Settings
	 *
	 * Move Slides Widget's 'button_color' settings to 'button_text_color' and 'button_border_color' as necessary,
	 * to allow for removing the redundant control.
	 *
	 * @param $element
	 * @param $args
	 * @return mixed
	 */
	public static function _migrate_slides_button_color_settings( $element, $args ) {
		if ( empty( $element['widgetType'] ) || $args['widget_id'] !== $element['widgetType'] ) {
			return $element;
		}

		// If the element doesn't use the 'button_color' control, no need to do anything.
		if ( ! isset( $element['settings']['button_color'] ) ) {
			return $element;
		}

		// Check if button_text_color is set. If it is not set, transfer the value from button_color to button_text_color.
		if ( ! isset( $element['settings']['button_text_color'] ) ) {
			$element['settings']['button_text_color'] = $element['settings']['button_color'];
			$args['do_update'] = true;
		}

		// Check if button_border_color is set. If it is not set, transfer the value from button_color to button_border_color.
		if ( ! isset( $element['settings']['button_border_color'] ) ) {
			$element['settings']['button_border_color'] = $element['settings']['button_color'];
			$args['do_update'] = true;
		}

		return $element;
	}

	/**
	 * Copy Title Styles to New Price Controls
	 *
	 * Copy the values from the  Price List widget's Title Style controls to new Price Style controls.
	 *
	 * @since 3.4.0
	 *
	 * @param $element
	 * @param $args
	 * @return mixed
	 */
	public static function _copy_title_styles_to_new_price_controls( $element, $args ) {
		if ( empty( $element['widgetType'] ) || $args['widget_id'] !== $element['widgetType'] ) {
			return $element;
		}

		if ( ! empty( $element['settings']['heading_color'] ) ) {
			$element['settings']['price_color'] = $element['settings']['heading_color'];

			$args['do_update'] = true;
		}

		$old_control_prefix = 'heading_typography_';
		$new_control_prefix = 'price_typography_';

		foreach ( self::$typography_control_names as $control_name ) {
			if ( ! empty( $element['settings'][ $old_control_prefix . $control_name ] ) ) {
				$element['settings'][ $new_control_prefix . $control_name ] = $element['settings'][ $old_control_prefix . $control_name ];

				$args['do_update'] = true;
			}
		}

		return $element;
	}

	public static function _remove_remote_info_api_data() {
		global $wpdb;

		$key = API::TRANSIENT_KEY_PREFIX;

		return $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '{$key}%';" ); // phpcs:ignore
	}
}
core/modules-manager.php000064400000004062150755004320011270 0ustar00<?php
namespace ElementorPro\Core;

use ElementorPro\Plugin;
use ElementorPro\Base\Module_Base;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

final class Modules_Manager {
	/**
	 * @var Module_Base[]
	 */
	private $modules = [];

	public function __construct() {
		$modules = [
			'query-control',
			'custom-attributes',
			'custom-css',
			// role-manager Must be before Global Widget
			'role-manager',
			'global-widget',
			'assets-manager',
			'popup',
			'motion-fx',
			'usage',
			'screenshots',
			'compatibility-tag',
			'admin-top-bar',

			// Modules with Widgets.
			'theme-builder',
			'posts',
			'gallery',
			'forms',
			'slides',
			'nav-menu',
			'animated-headline',
			'hotspot',
			'pricing',
			'flip-box',
			'call-to-action',
			'carousel',
			'table-of-contents',
			'countdown',
			'share-buttons',
			'theme-elements',
			'blockquote',
			'woocommerce',
			'social',
			'library',
			'dynamic-tags',
			'scroll-snap',
			'sticky',
			'wp-cli',
			'lottie',
			'code-highlight',
			'custom-code',
			'video-playlist',
			'payments',
			'progress-tracker',
		];

		foreach ( $modules as $module_name ) {
			$class_name = str_replace( '-', ' ', $module_name );
			$class_name = str_replace( ' ', '', ucwords( $class_name ) );
			$class_name = '\ElementorPro\Modules\\' . $class_name . '\Module';

			/** @var Module_Base $class_name */
			$experimental_data = $class_name::get_experimental_data();

			if ( $experimental_data ) {
				Plugin::elementor()->experiments->add_feature( $experimental_data );

				if ( ! Plugin::elementor()->experiments->is_feature_active( $experimental_data['name'] ) ) {
					continue;
				}
			}

			if ( $class_name::is_active() ) {
				$this->modules[ $module_name ] = $class_name::instance();
			}
		}
	}

	/**
	 * @param string $module_name
	 *
	 * @return Module_Base|Module_Base[]
	 */
	public function get_modules( $module_name ) {
		if ( $module_name ) {
			if ( isset( $this->modules[ $module_name ] ) ) {
				return $this->modules[ $module_name ];
			}

			return null;
		}

		return $this->modules;
	}
}
core/utils.php000064400000022101150755004320007342 0ustar00<?php
namespace ElementorPro\Core;

use ElementorPro\Plugin;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Utils {
	public static function get_public_post_types( $args = [] ) {
		$post_type_args = [
			// Default is the value $public.
			'show_in_nav_menus' => true,
		];

		// Keep for backwards compatibility
		if ( ! empty( $args['post_type'] ) ) {
			$post_type_args['name'] = $args['post_type'];
			unset( $args['post_type'] );
		}

		$post_type_args = wp_parse_args( $post_type_args, $args );

		$_post_types = get_post_types( $post_type_args, 'objects' );

		$post_types = [];

		foreach ( $_post_types as $post_type => $object ) {
			$post_types[ $post_type ] = $object->label;
		}

		/**
		 * Public Post types
		 *
		 * Allow 3rd party plugins to filters the public post types elementor should work on
		 *
		 * @since 2.3.0
		 *
		 * @param array $post_types Elementor supported public post types.
		 */
		return apply_filters( 'elementor_pro/utils/get_public_post_types', $post_types );
	}

	public static function get_client_ip() {
		$server_ip_keys = [
			'HTTP_CLIENT_IP',
			'HTTP_X_FORWARDED_FOR',
			'HTTP_X_FORWARDED',
			'HTTP_X_CLUSTER_CLIENT_IP',
			'HTTP_FORWARDED_FOR',
			'HTTP_FORWARDED',
			'REMOTE_ADDR',
		];

		foreach ( $server_ip_keys as $key ) {
			if ( isset( $_SERVER[ $key ] ) && filter_var( $_SERVER[ $key ], FILTER_VALIDATE_IP ) ) {
				return $_SERVER[ $key ];
			}
		}

		// Fallback local ip.
		return '127.0.0.1';
	}

	public static function get_site_domain() {
		return str_ireplace( 'www.', '', parse_url( home_url(), PHP_URL_HOST ) );
	}

	public static function get_current_post_id() {
		if ( isset( Plugin::elementor()->documents ) ) {
			return Plugin::elementor()->documents->get_current()->get_main_id();
		}

		return get_the_ID();
	}

	public static function get_the_archive_url() {
		$url = '';
		if ( is_category() || is_tag() || is_tax() ) {
			$url = get_term_link( get_queried_object() );
		} elseif ( is_author() ) {
			$url = get_author_posts_url( get_queried_object_id() );
		} elseif ( is_year() ) {
			$url = get_year_link( get_query_var( 'year' ) );
		} elseif ( is_month() ) {
			$url = get_month_link( get_query_var( 'year' ), get_query_var( 'monthnum' ) );
		} elseif ( is_day() ) {
			$url = get_day_link( get_query_var( 'year' ), get_query_var( 'monthnum' ), get_query_var( 'day' ) );
		} elseif ( is_post_type_archive() ) {
			$url = get_post_type_archive_link( get_post_type() );
		}

		return $url;
	}

	public static function get_page_title( $include_context = true ) {
		$title = '';

		if ( is_singular() ) {
			/* translators: %s: Search term. */
			$title = get_the_title();

			if ( $include_context ) {
				$post_type_obj = get_post_type_object( get_post_type() );
				$title = sprintf( '%s: %s', $post_type_obj->labels->singular_name, $title );
			}
		} elseif ( is_search() ) {
			/* translators: %s: Search term. */
			$title = sprintf( esc_html__( 'Search Results for: %s', 'elementor-pro' ), get_search_query() );

			if ( get_query_var( 'paged' ) ) {
				/* translators: %s is the page number. */
				$title .= sprintf( esc_html__( '&nbsp;&ndash; Page %s', 'elementor-pro' ), get_query_var( 'paged' ) );
			}
		} elseif ( is_category() ) {
			$title = single_cat_title( '', false );

			if ( $include_context ) {
				/* translators: Category archive title. 1: Category name */
				$title = sprintf( esc_html__( 'Category: %s', 'elementor-pro' ), $title );
			}
		} elseif ( is_tag() ) {
			$title = single_tag_title( '', false );
			if ( $include_context ) {
				/* translators: Tag archive title. 1: Tag name */
				$title = sprintf( esc_html__( 'Tag: %s', 'elementor-pro' ), $title );
			}
		} elseif ( is_author() ) {
			$title = '<span class="vcard">' . get_the_author() . '</span>';

			if ( $include_context ) {
				/* translators: Author archive title. 1: Author name */
				$title = sprintf( esc_html__( 'Author: %s', 'elementor-pro' ), $title );
			}
		} elseif ( is_year() ) {
			$title = get_the_date( _x( 'Y', 'yearly archives date format', 'elementor-pro' ) );

			if ( $include_context ) {
				/* translators: Yearly archive title. 1: Year */
				$title = sprintf( esc_html__( 'Year: %s', 'elementor-pro' ), $title );
			}
		} elseif ( is_month() ) {
			$title = get_the_date( _x( 'F Y', 'monthly archives date format', 'elementor-pro' ) );

			if ( $include_context ) {
				/* translators: Monthly archive title. 1: Month name and year */
				$title = sprintf( esc_html__( 'Month: %s', 'elementor-pro' ), $title );
			}
		} elseif ( is_day() ) {
			$title = get_the_date( _x( 'F j, Y', 'daily archives date format', 'elementor-pro' ) );

			if ( $include_context ) {
				/* translators: Daily archive title. 1: Date */
				$title = sprintf( esc_html__( 'Day: %s', 'elementor-pro' ), $title );
			}
		} elseif ( is_tax( 'post_format' ) ) {
			if ( is_tax( 'post_format', 'post-format-aside' ) ) {
				$title = _x( 'Asides', 'post format archive title', 'elementor-pro' );
			} elseif ( is_tax( 'post_format', 'post-format-gallery' ) ) {
				$title = _x( 'Galleries', 'post format archive title', 'elementor-pro' );
			} elseif ( is_tax( 'post_format', 'post-format-image' ) ) {
				$title = _x( 'Images', 'post format archive title', 'elementor-pro' );
			} elseif ( is_tax( 'post_format', 'post-format-video' ) ) {
				$title = _x( 'Videos', 'post format archive title', 'elementor-pro' );
			} elseif ( is_tax( 'post_format', 'post-format-quote' ) ) {
				$title = _x( 'Quotes', 'post format archive title', 'elementor-pro' );
			} elseif ( is_tax( 'post_format', 'post-format-link' ) ) {
				$title = _x( 'Links', 'post format archive title', 'elementor-pro' );
			} elseif ( is_tax( 'post_format', 'post-format-status' ) ) {
				$title = _x( 'Statuses', 'post format archive title', 'elementor-pro' );
			} elseif ( is_tax( 'post_format', 'post-format-audio' ) ) {
				$title = _x( 'Audio', 'post format archive title', 'elementor-pro' );
			} elseif ( is_tax( 'post_format', 'post-format-chat' ) ) {
				$title = _x( 'Chats', 'post format archive title', 'elementor-pro' );
			}
		} elseif ( is_post_type_archive() ) {
			$title = post_type_archive_title( '', false );

			if ( $include_context ) {
				/* translators: Post type archive title. 1: Post type name */
				$title = sprintf( esc_html__( 'Archives: %s', 'elementor-pro' ), $title );
			}
		} elseif ( is_tax() ) {
			$title = single_term_title( '', false );

			if ( $include_context ) {
				$tax = get_taxonomy( get_queried_object()->taxonomy );
				/* translators: Taxonomy term archive title. 1: Taxonomy singular name, 2: Current taxonomy term */
				$title = sprintf( esc_html__( '%1$s: %2$s', 'elementor-pro' ), $tax->labels->singular_name, $title );
			}
		} elseif ( is_archive() ) {
			$title = esc_html__( 'Archives', 'elementor-pro' );
		} elseif ( is_404() ) {
			$title = esc_html__( 'Page Not Found', 'elementor-pro' );
		} // End if().

		/**
		 * The archive title.
		 *
		 * Filters the archive title.
		 *
		 * @since 1.0.0
		 *
		 * @param string $title Archive title to be displayed.
		 */
		$title = apply_filters( 'elementor/utils/get_the_archive_title', $title );

		return $title;
	}

	public static function set_global_authordata() {
		global $authordata;
		if ( ! isset( $authordata->ID ) ) {
			$post = get_post();
			$authordata = get_userdata( $post->post_author ); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
		}
	}

	/**
	 * Used to overcome core bug when taxonomy is in more then one post type
	 *
	 * @see https://core.trac.wordpress.org/ticket/27918
	 *
	 * @global array $wp_taxonomies The registered taxonomies.
	 *
	 *
	 * @param array  $args
	 * @param string $output
	 * @param string $operator
	 *
	 * @return array
	 */
	public static function get_taxonomies( $args = [], $output = 'names', $operator = 'and' ) {
		global $wp_taxonomies;

		$field = ( 'names' === $output ) ? 'name' : false;

		// Handle 'object_type' separately.
		if ( isset( $args['object_type'] ) ) {
			$object_type = (array) $args['object_type'];
			unset( $args['object_type'] );
		}

		$taxonomies = wp_filter_object_list( $wp_taxonomies, $args, $operator );

		if ( isset( $object_type ) ) {
			foreach ( $taxonomies as $tax => $tax_data ) {
				if ( ! array_intersect( $object_type, $tax_data->object_type ) ) {
					unset( $taxonomies[ $tax ] );
				}
			}
		}

		if ( $field ) {
			$taxonomies = wp_list_pluck( $taxonomies, $field );
		}

		return $taxonomies;
	}

	public static function get_ensure_upload_dir( $path ) {
		if ( file_exists( $path . '/index.php' ) ) {
			return $path;
		}

		wp_mkdir_p( $path );

		$files = [
			[
				'file' => 'index.php',
				'content' => [
					'<?php',
					'// Silence is golden.',
				],
			],
			[
				'file' => '.htaccess',
				'content' => [
					'Options -Indexes',
					'<ifModule mod_headers.c>',
					'	<Files *.*>',
					'       Header set Content-Disposition attachment',
					'	</Files>',
					'</IfModule>',
				],
			],
		];

		foreach ( $files as $file ) {
			if ( ! file_exists( trailingslashit( $path ) . $file['file'] ) ) {
				$content = implode( PHP_EOL, $file['content'] );
				@ file_put_contents( trailingslashit( $path ) . $file['file'], $content );
			}
		}

		return $path;
	}
}
core/preview/preview.php000064400000001147150755004320011353 0ustar00<?php
namespace ElementorPro\Core\Preview;

use Elementor\Core\Base\App;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

class Preview extends App {

	public function __construct() {
		add_action( 'elementor/preview/enqueue_styles', [ $this, 'enqueue_styles' ] );
	}

	public function get_name() {
		return 'pro-preview';
	}

	public function enqueue_styles() {
		wp_enqueue_style(
			'pro-editor-preview',
			$this->get_css_assets_url( 'preview', null, 'default', true ),
			[],
			ELEMENTOR_PRO_VERSION
		);
	}

	protected function get_assets_base_url() {
		return ELEMENTOR_PRO_URL;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit